From f2755315429157e21f5678d455254497f942fe75 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 2 Feb 2024 10:57:15 +0100 Subject: [PATCH 001/731] Add support for TS 5.4-beta --- .../lib/typescript/package-lock.json | 10 +- .../extractor/lib/typescript/package.json | 4 +- .../TypeScript/Types/printAst.expected | 151 ++++++++++++++---- .../TypeScript/Types/tests.expected | 20 +++ .../library-tests/TypeScript/Types/tst.ts | 8 + 5 files changed, 155 insertions(+), 38 deletions(-) diff --git a/javascript/extractor/lib/typescript/package-lock.json b/javascript/extractor/lib/typescript/package-lock.json index 2d448ae04488..fd672bf43c08 100644 --- a/javascript/extractor/lib/typescript/package-lock.json +++ b/javascript/extractor/lib/typescript/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "typescript-parser-wrapper", "dependencies": { - "typescript": "5.3.2" + "typescript": "5.4.0-beta" }, "devDependencies": { "@types/node": "18.15.3" @@ -20,9 +20,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.4.0-beta", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.0-beta.tgz", + "integrity": "sha512-KgekV5JS7TQ7Bb8eO64QGxdM7MSBUUXOXq28OWX23d2MA8SiVtNYoo4s33tCTEGV8+6AGBRD2+KiXNNnexRRYw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -32,4 +32,4 @@ } } } -} +} \ No newline at end of file diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json index 602379bc36a3..2a636c3cdf32 100644 --- a/javascript/extractor/lib/typescript/package.json +++ b/javascript/extractor/lib/typescript/package.json @@ -2,7 +2,7 @@ "name": "typescript-parser-wrapper", "private": true, "dependencies": { - "typescript": "5.3.2" + "typescript": "5.4.0-beta" }, "scripts": { "build": "tsc --project tsconfig.json", @@ -14,4 +14,4 @@ "devDependencies": { "@types/node": "18.15.3" } -} +} \ No newline at end of file diff --git a/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected b/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected index 5f29995b8548..90fa2b8dcda2 100644 --- a/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected +++ b/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected @@ -124,6 +124,8 @@ nodes | file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | | file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | | file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | +| file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | +| file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | | file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | | file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | | file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | @@ -183,6 +185,7 @@ nodes | file://:0:0:0:0 | (TypeParameters) | semmle.label | (TypeParameters) | | file://:0:0:0:0 | (TypeParameters) | semmle.label | (TypeParameters) | | file://:0:0:0:0 | (TypeParameters) | semmle.label | (TypeParameters) | +| file://:0:0:0:0 | (TypeParameters) | semmle.label | (TypeParameters) | | middle-rest.ts:1:1:1:40 | [DeclStmt] let foo = ... | semmle.label | [DeclStmt] let foo = ... | | middle-rest.ts:1:1:1:40 | [DeclStmt] let foo = ... | semmle.order | 16 | | middle-rest.ts:1:5:1:7 | [VarDecl] foo | semmle.label | [VarDecl] foo | @@ -1757,8 +1760,36 @@ nodes | tst.ts:483:46:483:50 | [LocalTypeAccess] Pair3 | semmle.label | [LocalTypeAccess] Pair3 | | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3 | semmle.label | [GenericTypeExpr] Pair3 | | tst.ts:483:52:483:57 | [KeywordTypeExpr] string | semmle.label | [KeywordTypeExpr] string | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | semmle.label | [NamespaceDeclaration] module ... ow"); } | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | semmle.order | 90 | +| tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.label | [VarDecl] TS54 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.label | [FunctionDeclStmt] functio ... 0]; } | +| tst.ts:487:12:487:28 | [VarDecl] createStreetLight | semmle.label | [VarDecl] createStreetLight | +| tst.ts:487:30:487:30 | [Identifier] C | semmle.label | [Identifier] C | +| tst.ts:487:30:487:45 | [TypeParameter] C extends string | semmle.label | [TypeParameter] C extends string | +| tst.ts:487:40:487:45 | [KeywordTypeExpr] string | semmle.label | [KeywordTypeExpr] string | +| tst.ts:487:48:487:53 | [SimpleParameter] colors | semmle.label | [SimpleParameter] colors | +| tst.ts:487:56:487:56 | [LocalTypeAccess] C | semmle.label | [LocalTypeAccess] C | +| tst.ts:487:56:487:58 | [ArrayTypeExpr] C[] | semmle.label | [ArrayTypeExpr] C[] | +| tst.ts:487:61:487:72 | [SimpleParameter] defaultColor | semmle.label | [SimpleParameter] defaultColor | +| tst.ts:487:76:487:82 | [LocalTypeAccess] NoInfer | semmle.label | [LocalTypeAccess] NoInfer | +| tst.ts:487:76:487:85 | [GenericTypeExpr] NoInfer | semmle.label | [GenericTypeExpr] NoInfer | +| tst.ts:487:84:487:84 | [LocalTypeAccess] C | semmle.label | [LocalTypeAccess] C | +| tst.ts:487:88:489:3 | [BlockStmt] { r ... 0]; } | semmle.label | [BlockStmt] { r ... 0]; } | +| tst.ts:488:5:488:21 | [ReturnStmt] return colors[0]; | semmle.label | [ReturnStmt] return colors[0]; | +| tst.ts:488:12:488:17 | [VarRef] colors | semmle.label | [VarRef] colors | +| tst.ts:488:12:488:20 | [IndexExpr] colors[0] | semmle.label | [IndexExpr] colors[0] | +| tst.ts:488:19:488:19 | [Literal] 0 | semmle.label | [Literal] 0 | +| tst.ts:491:3:491:19 | [VarRef] createStreetLight | semmle.label | [VarRef] createStreetLight | +| tst.ts:491:3:491:57 | [CallExpr] createS ... ellow") | semmle.label | [CallExpr] createS ... ellow") | +| tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | semmle.label | [ExprStmt] createS ... llow"); | +| tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | semmle.label | [ArrayExpr] ["red", ... green"] | +| tst.ts:491:22:491:26 | [Literal] "red" | semmle.label | [Literal] "red" | +| tst.ts:491:29:491:36 | [Literal] "yellow" | semmle.label | [Literal] "yellow" | +| tst.ts:491:39:491:45 | [Literal] "green" | semmle.label | [Literal] "green" | +| tst.ts:491:49:491:56 | [Literal] "yellow" | semmle.label | [Literal] "yellow" | | tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.label | [ExportDeclaration] export ... 'b'; } | -| tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.order | 90 | +| tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.order | 91 | | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | semmle.label | [FunctionDeclStmt] functio ... 'b'; } | | tstModuleCJS.cts:1:17:1:28 | [VarDecl] tstModuleCJS | semmle.label | [VarDecl] tstModuleCJS | | tstModuleCJS.cts:1:33:1:35 | [LiteralTypeExpr] 'a' | semmle.label | [LiteralTypeExpr] 'a' | @@ -1776,7 +1807,7 @@ nodes | tstModuleCJS.cts:2:34:2:36 | [Literal] 'a' | semmle.label | [Literal] 'a' | | tstModuleCJS.cts:2:40:2:42 | [Literal] 'b' | semmle.label | [Literal] 'b' | | tstModuleES.mts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.label | [ExportDeclaration] export ... 'b'; } | -| tstModuleES.mts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.order | 91 | +| tstModuleES.mts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.order | 92 | | tstModuleES.mts:1:16:3:1 | [FunctionDeclStmt] functio ... 'b'; } | semmle.label | [FunctionDeclStmt] functio ... 'b'; } | | tstModuleES.mts:1:25:1:35 | [VarDecl] tstModuleES | semmle.label | [VarDecl] tstModuleES | | tstModuleES.mts:1:40:1:42 | [LiteralTypeExpr] 'a' | semmle.label | [LiteralTypeExpr] 'a' | @@ -1794,7 +1825,7 @@ nodes | tstModuleES.mts:2:34:2:36 | [Literal] 'a' | semmle.label | [Literal] 'a' | | tstModuleES.mts:2:40:2:42 | [Literal] 'b' | semmle.label | [Literal] 'b' | | tstSuffixA.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.label | [ExportDeclaration] export ... .ts'; } | -| tstSuffixA.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.order | 92 | +| tstSuffixA.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.order | 93 | | tstSuffixA.ts:1:8:3:1 | [FunctionDeclStmt] functio ... .ts'; } | semmle.label | [FunctionDeclStmt] functio ... .ts'; } | | tstSuffixA.ts:1:17:1:28 | [VarDecl] resolvedFile | semmle.label | [VarDecl] resolvedFile | | tstSuffixA.ts:1:33:1:47 | [LiteralTypeExpr] 'tstSuffixA.ts' | semmle.label | [LiteralTypeExpr] 'tstSuffixA.ts' | @@ -1802,7 +1833,7 @@ nodes | tstSuffixA.ts:2:5:2:27 | [ReturnStmt] return ... xA.ts'; | semmle.label | [ReturnStmt] return ... xA.ts'; | | tstSuffixA.ts:2:12:2:26 | [Literal] 'tstSuffixA.ts' | semmle.label | [Literal] 'tstSuffixA.ts' | | tstSuffixB.ios.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.label | [ExportDeclaration] export ... .ts'; } | -| tstSuffixB.ios.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.order | 93 | +| tstSuffixB.ios.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.order | 94 | | tstSuffixB.ios.ts:1:8:3:1 | [FunctionDeclStmt] functio ... .ts'; } | semmle.label | [FunctionDeclStmt] functio ... .ts'; } | | tstSuffixB.ios.ts:1:17:1:28 | [VarDecl] resolvedFile | semmle.label | [VarDecl] resolvedFile | | tstSuffixB.ios.ts:1:33:1:51 | [LiteralTypeExpr] 'tstSuffixB.ios.ts' | semmle.label | [LiteralTypeExpr] 'tstSuffixB.ios.ts' | @@ -1810,7 +1841,7 @@ nodes | tstSuffixB.ios.ts:2:5:2:31 | [ReturnStmt] return ... os.ts'; | semmle.label | [ReturnStmt] return ... os.ts'; | | tstSuffixB.ios.ts:2:12:2:30 | [Literal] 'tstSuffixB.ios.ts' | semmle.label | [Literal] 'tstSuffixB.ios.ts' | | tstSuffixB.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.label | [ExportDeclaration] export ... .ts'; } | -| tstSuffixB.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.order | 94 | +| tstSuffixB.ts:1:1:3:1 | [ExportDeclaration] export ... .ts'; } | semmle.order | 95 | | tstSuffixB.ts:1:8:3:1 | [FunctionDeclStmt] functio ... .ts'; } | semmle.label | [FunctionDeclStmt] functio ... .ts'; } | | tstSuffixB.ts:1:17:1:28 | [VarDecl] resolvedFile | semmle.label | [VarDecl] resolvedFile | | tstSuffixB.ts:1:33:1:47 | [LiteralTypeExpr] 'tstSuffixB.ts' | semmle.label | [LiteralTypeExpr] 'tstSuffixB.ts' | @@ -1818,16 +1849,16 @@ nodes | tstSuffixB.ts:2:5:2:27 | [ReturnStmt] return ... xB.ts'; | semmle.label | [ReturnStmt] return ... xB.ts'; | | tstSuffixB.ts:2:12:2:26 | [Literal] 'tstSuffixB.ts' | semmle.label | [Literal] 'tstSuffixB.ts' | | type_alias.ts:1:1:1:17 | [TypeAliasDeclaration,TypeDefinition] type B = boolean; | semmle.label | [TypeAliasDeclaration,TypeDefinition] type B = boolean; | -| type_alias.ts:1:1:1:17 | [TypeAliasDeclaration,TypeDefinition] type B = boolean; | semmle.order | 95 | +| type_alias.ts:1:1:1:17 | [TypeAliasDeclaration,TypeDefinition] type B = boolean; | semmle.order | 96 | | type_alias.ts:1:6:1:6 | [Identifier] B | semmle.label | [Identifier] B | | type_alias.ts:1:10:1:16 | [KeywordTypeExpr] boolean | semmle.label | [KeywordTypeExpr] boolean | | type_alias.ts:3:1:3:9 | [DeclStmt] var b = ... | semmle.label | [DeclStmt] var b = ... | -| type_alias.ts:3:1:3:9 | [DeclStmt] var b = ... | semmle.order | 96 | +| type_alias.ts:3:1:3:9 | [DeclStmt] var b = ... | semmle.order | 97 | | type_alias.ts:3:5:3:5 | [VarDecl] b | semmle.label | [VarDecl] b | | type_alias.ts:3:5:3:8 | [VariableDeclarator] b: B | semmle.label | [VariableDeclarator] b: B | | type_alias.ts:3:8:3:8 | [LocalTypeAccess] B | semmle.label | [LocalTypeAccess] B | | type_alias.ts:5:1:5:50 | [TypeAliasDeclaration,TypeDefinition] type Va ... ay>; | semmle.label | [TypeAliasDeclaration,TypeDefinition] type Va ... ay>; | -| type_alias.ts:5:1:5:50 | [TypeAliasDeclaration,TypeDefinition] type Va ... ay>; | semmle.order | 97 | +| type_alias.ts:5:1:5:50 | [TypeAliasDeclaration,TypeDefinition] type Va ... ay>; | semmle.order | 98 | | type_alias.ts:5:6:5:17 | [Identifier] ValueOrArray | semmle.label | [Identifier] ValueOrArray | | type_alias.ts:5:19:5:19 | [Identifier] T | semmle.label | [Identifier] T | | type_alias.ts:5:19:5:19 | [TypeParameter] T | semmle.label | [TypeParameter] T | @@ -1839,14 +1870,14 @@ nodes | type_alias.ts:5:34:5:48 | [GenericTypeExpr] ValueOrArray | semmle.label | [GenericTypeExpr] ValueOrArray | | type_alias.ts:5:47:5:47 | [LocalTypeAccess] T | semmle.label | [LocalTypeAccess] T | | type_alias.ts:7:1:7:28 | [DeclStmt] var c = ... | semmle.label | [DeclStmt] var c = ... | -| type_alias.ts:7:1:7:28 | [DeclStmt] var c = ... | semmle.order | 98 | +| type_alias.ts:7:1:7:28 | [DeclStmt] var c = ... | semmle.order | 99 | | type_alias.ts:7:5:7:5 | [VarDecl] c | semmle.label | [VarDecl] c | | type_alias.ts:7:5:7:27 | [VariableDeclarator] c: Valu ... number> | semmle.label | [VariableDeclarator] c: Valu ... number> | | type_alias.ts:7:8:7:19 | [LocalTypeAccess] ValueOrArray | semmle.label | [LocalTypeAccess] ValueOrArray | | type_alias.ts:7:8:7:27 | [GenericTypeExpr] ValueOrArray | semmle.label | [GenericTypeExpr] ValueOrArray | | type_alias.ts:7:21:7:26 | [KeywordTypeExpr] number | semmle.label | [KeywordTypeExpr] number | | type_alias.ts:9:1:15:13 | [TypeAliasDeclaration,TypeDefinition] type Js ... Json[]; | semmle.label | [TypeAliasDeclaration,TypeDefinition] type Js ... Json[]; | -| type_alias.ts:9:1:15:13 | [TypeAliasDeclaration,TypeDefinition] type Js ... Json[]; | semmle.order | 99 | +| type_alias.ts:9:1:15:13 | [TypeAliasDeclaration,TypeDefinition] type Js ... Json[]; | semmle.order | 100 | | type_alias.ts:9:6:9:9 | [Identifier] Json | semmle.label | [Identifier] Json | | type_alias.ts:10:5:15:12 | [UnionTypeExpr] \| strin ... Json[] | semmle.label | [UnionTypeExpr] \| strin ... Json[] | | type_alias.ts:10:7:10:12 | [KeywordTypeExpr] string | semmle.label | [KeywordTypeExpr] string | @@ -1862,12 +1893,12 @@ nodes | type_alias.ts:15:7:15:10 | [LocalTypeAccess] Json | semmle.label | [LocalTypeAccess] Json | | type_alias.ts:15:7:15:12 | [ArrayTypeExpr] Json[] | semmle.label | [ArrayTypeExpr] Json[] | | type_alias.ts:17:1:17:15 | [DeclStmt] var json = ... | semmle.label | [DeclStmt] var json = ... | -| type_alias.ts:17:1:17:15 | [DeclStmt] var json = ... | semmle.order | 100 | +| type_alias.ts:17:1:17:15 | [DeclStmt] var json = ... | semmle.order | 101 | | type_alias.ts:17:5:17:8 | [VarDecl] json | semmle.label | [VarDecl] json | | type_alias.ts:17:5:17:14 | [VariableDeclarator] json: Json | semmle.label | [VariableDeclarator] json: Json | | type_alias.ts:17:11:17:14 | [LocalTypeAccess] Json | semmle.label | [LocalTypeAccess] Json | | type_alias.ts:19:1:21:57 | [TypeAliasDeclaration,TypeDefinition] type Vi ... ode[]]; | semmle.label | [TypeAliasDeclaration,TypeDefinition] type Vi ... ode[]]; | -| type_alias.ts:19:1:21:57 | [TypeAliasDeclaration,TypeDefinition] type Vi ... ode[]]; | semmle.order | 101 | +| type_alias.ts:19:1:21:57 | [TypeAliasDeclaration,TypeDefinition] type Vi ... ode[]]; | semmle.order | 102 | | type_alias.ts:19:6:19:16 | [Identifier] VirtualNode | semmle.label | [Identifier] VirtualNode | | type_alias.ts:20:5:21:56 | [UnionTypeExpr] \| strin ... Node[]] | semmle.label | [UnionTypeExpr] \| strin ... Node[]] | | type_alias.ts:20:7:20:12 | [KeywordTypeExpr] string | semmle.label | [KeywordTypeExpr] string | @@ -1883,7 +1914,7 @@ nodes | type_alias.ts:21:43:21:53 | [LocalTypeAccess] VirtualNode | semmle.label | [LocalTypeAccess] VirtualNode | | type_alias.ts:21:43:21:55 | [ArrayTypeExpr] VirtualNode[] | semmle.label | [ArrayTypeExpr] VirtualNode[] | | type_alias.ts:23:1:27:6 | [DeclStmt] const myNode = ... | semmle.label | [DeclStmt] const myNode = ... | -| type_alias.ts:23:1:27:6 | [DeclStmt] const myNode = ... | semmle.order | 102 | +| type_alias.ts:23:1:27:6 | [DeclStmt] const myNode = ... | semmle.order | 103 | | type_alias.ts:23:7:23:12 | [VarDecl] myNode | semmle.label | [VarDecl] myNode | | type_alias.ts:23:7:27:5 | [VariableDeclarator] myNode: ... ] ] | semmle.label | [VariableDeclarator] myNode: ... ] ] | | type_alias.ts:23:15:23:25 | [LocalTypeAccess] VirtualNode | semmle.label | [LocalTypeAccess] VirtualNode | @@ -1908,12 +1939,12 @@ nodes | type_alias.ts:26:23:26:36 | [Literal] "second-child" | semmle.label | [Literal] "second-child" | | type_alias.ts:26:41:26:62 | [Literal] "I'm the second child" | semmle.label | [Literal] "I'm the second child" | | type_definition_objects.ts:1:1:1:33 | [ImportDeclaration] import ... dummy"; | semmle.label | [ImportDeclaration] import ... dummy"; | -| type_definition_objects.ts:1:1:1:33 | [ImportDeclaration] import ... dummy"; | semmle.order | 103 | +| type_definition_objects.ts:1:1:1:33 | [ImportDeclaration] import ... dummy"; | semmle.order | 104 | | type_definition_objects.ts:1:8:1:17 | [ImportSpecifier] * as dummy | semmle.label | [ImportSpecifier] * as dummy | | type_definition_objects.ts:1:13:1:17 | [VarDecl] dummy | semmle.label | [VarDecl] dummy | | type_definition_objects.ts:1:24:1:32 | [Literal] "./dummy" | semmle.label | [Literal] "./dummy" | | type_definition_objects.ts:3:1:3:17 | [ExportDeclaration] export class C {} | semmle.label | [ExportDeclaration] export class C {} | -| type_definition_objects.ts:3:1:3:17 | [ExportDeclaration] export class C {} | semmle.order | 104 | +| type_definition_objects.ts:3:1:3:17 | [ExportDeclaration] export class C {} | semmle.order | 105 | | type_definition_objects.ts:3:8:3:17 | [ClassDefinition,TypeDefinition] class C {} | semmle.label | [ClassDefinition,TypeDefinition] class C {} | | type_definition_objects.ts:3:14:3:14 | [VarDecl] C | semmle.label | [VarDecl] C | | type_definition_objects.ts:3:16:3:15 | [BlockStmt] {} | semmle.label | [BlockStmt] {} | @@ -1921,36 +1952,36 @@ nodes | type_definition_objects.ts:3:16:3:15 | [FunctionExpr] () {} | semmle.label | [FunctionExpr] () {} | | type_definition_objects.ts:3:16:3:15 | [Label] constructor | semmle.label | [Label] constructor | | type_definition_objects.ts:4:1:4:17 | [DeclStmt] let classObj = ... | semmle.label | [DeclStmt] let classObj = ... | -| type_definition_objects.ts:4:1:4:17 | [DeclStmt] let classObj = ... | semmle.order | 105 | +| type_definition_objects.ts:4:1:4:17 | [DeclStmt] let classObj = ... | semmle.order | 106 | | type_definition_objects.ts:4:5:4:12 | [VarDecl] classObj | semmle.label | [VarDecl] classObj | | type_definition_objects.ts:4:5:4:16 | [VariableDeclarator] classObj = C | semmle.label | [VariableDeclarator] classObj = C | | type_definition_objects.ts:4:16:4:16 | [VarRef] C | semmle.label | [VarRef] C | | type_definition_objects.ts:6:1:6:16 | [ExportDeclaration] export enum E {} | semmle.label | [ExportDeclaration] export enum E {} | -| type_definition_objects.ts:6:1:6:16 | [ExportDeclaration] export enum E {} | semmle.order | 106 | +| type_definition_objects.ts:6:1:6:16 | [ExportDeclaration] export enum E {} | semmle.order | 107 | | type_definition_objects.ts:6:8:6:16 | [EnumDeclaration,TypeDefinition] enum E {} | semmle.label | [EnumDeclaration,TypeDefinition] enum E {} | | type_definition_objects.ts:6:13:6:13 | [VarDecl] E | semmle.label | [VarDecl] E | | type_definition_objects.ts:7:1:7:16 | [DeclStmt] let enumObj = ... | semmle.label | [DeclStmt] let enumObj = ... | -| type_definition_objects.ts:7:1:7:16 | [DeclStmt] let enumObj = ... | semmle.order | 107 | +| type_definition_objects.ts:7:1:7:16 | [DeclStmt] let enumObj = ... | semmle.order | 108 | | type_definition_objects.ts:7:5:7:11 | [VarDecl] enumObj | semmle.label | [VarDecl] enumObj | | type_definition_objects.ts:7:5:7:15 | [VariableDeclarator] enumObj = E | semmle.label | [VariableDeclarator] enumObj = E | | type_definition_objects.ts:7:15:7:15 | [VarRef] E | semmle.label | [VarRef] E | | type_definition_objects.ts:9:1:9:22 | [ExportDeclaration] export ... e N {;} | semmle.label | [ExportDeclaration] export ... e N {;} | -| type_definition_objects.ts:9:1:9:22 | [ExportDeclaration] export ... e N {;} | semmle.order | 108 | +| type_definition_objects.ts:9:1:9:22 | [ExportDeclaration] export ... e N {;} | semmle.order | 109 | | type_definition_objects.ts:9:8:9:22 | [NamespaceDeclaration] namespace N {;} | semmle.label | [NamespaceDeclaration] namespace N {;} | | type_definition_objects.ts:9:18:9:18 | [VarDecl] N | semmle.label | [VarDecl] N | | type_definition_objects.ts:9:21:9:21 | [EmptyStmt] ; | semmle.label | [EmptyStmt] ; | | type_definition_objects.ts:10:1:10:21 | [DeclStmt] let namespaceObj = ... | semmle.label | [DeclStmt] let namespaceObj = ... | -| type_definition_objects.ts:10:1:10:21 | [DeclStmt] let namespaceObj = ... | semmle.order | 109 | +| type_definition_objects.ts:10:1:10:21 | [DeclStmt] let namespaceObj = ... | semmle.order | 110 | | type_definition_objects.ts:10:5:10:16 | [VarDecl] namespaceObj | semmle.label | [VarDecl] namespaceObj | | type_definition_objects.ts:10:5:10:20 | [VariableDeclarator] namespaceObj = N | semmle.label | [VariableDeclarator] namespaceObj = N | | type_definition_objects.ts:10:20:10:20 | [VarRef] N | semmle.label | [VarRef] N | | type_definitions.ts:1:1:1:33 | [ImportDeclaration] import ... dummy"; | semmle.label | [ImportDeclaration] import ... dummy"; | -| type_definitions.ts:1:1:1:33 | [ImportDeclaration] import ... dummy"; | semmle.order | 110 | +| type_definitions.ts:1:1:1:33 | [ImportDeclaration] import ... dummy"; | semmle.order | 111 | | type_definitions.ts:1:8:1:17 | [ImportSpecifier] * as dummy | semmle.label | [ImportSpecifier] * as dummy | | type_definitions.ts:1:13:1:17 | [VarDecl] dummy | semmle.label | [VarDecl] dummy | | type_definitions.ts:1:24:1:32 | [Literal] "./dummy" | semmle.label | [Literal] "./dummy" | | type_definitions.ts:3:1:5:1 | [InterfaceDeclaration,TypeDefinition] interfa ... x: S; } | semmle.label | [InterfaceDeclaration,TypeDefinition] interfa ... x: S; } | -| type_definitions.ts:3:1:5:1 | [InterfaceDeclaration,TypeDefinition] interfa ... x: S; } | semmle.order | 111 | +| type_definitions.ts:3:1:5:1 | [InterfaceDeclaration,TypeDefinition] interfa ... x: S; } | semmle.order | 112 | | type_definitions.ts:3:11:3:11 | [Identifier] I | semmle.label | [Identifier] I | | type_definitions.ts:3:13:3:13 | [Identifier] S | semmle.label | [Identifier] S | | type_definitions.ts:3:13:3:13 | [TypeParameter] S | semmle.label | [TypeParameter] S | @@ -1958,14 +1989,14 @@ nodes | type_definitions.ts:4:3:4:7 | [FieldDeclaration] x: S; | semmle.label | [FieldDeclaration] x: S; | | type_definitions.ts:4:6:4:6 | [LocalTypeAccess] S | semmle.label | [LocalTypeAccess] S | | type_definitions.ts:6:1:6:16 | [DeclStmt] let i = ... | semmle.label | [DeclStmt] let i = ... | -| type_definitions.ts:6:1:6:16 | [DeclStmt] let i = ... | semmle.order | 112 | +| type_definitions.ts:6:1:6:16 | [DeclStmt] let i = ... | semmle.order | 113 | | type_definitions.ts:6:5:6:5 | [VarDecl] i | semmle.label | [VarDecl] i | | type_definitions.ts:6:5:6:16 | [VariableDeclarator] i: I | semmle.label | [VariableDeclarator] i: I | | type_definitions.ts:6:8:6:8 | [LocalTypeAccess] I | semmle.label | [LocalTypeAccess] I | | type_definitions.ts:6:8:6:16 | [GenericTypeExpr] I | semmle.label | [GenericTypeExpr] I | | type_definitions.ts:6:10:6:15 | [KeywordTypeExpr] number | semmle.label | [KeywordTypeExpr] number | | type_definitions.ts:8:1:10:1 | [ClassDefinition,TypeDefinition] class C ... x: T } | semmle.label | [ClassDefinition,TypeDefinition] class C ... x: T } | -| type_definitions.ts:8:1:10:1 | [ClassDefinition,TypeDefinition] class C ... x: T } | semmle.order | 113 | +| type_definitions.ts:8:1:10:1 | [ClassDefinition,TypeDefinition] class C ... x: T } | semmle.order | 114 | | type_definitions.ts:8:7:8:7 | [VarDecl] C | semmle.label | [VarDecl] C | | type_definitions.ts:8:8:8:7 | [BlockStmt] {} | semmle.label | [BlockStmt] {} | | type_definitions.ts:8:8:8:7 | [ClassInitializedMember,ConstructorDefinition] constructor() {} | semmle.label | [ClassInitializedMember,ConstructorDefinition] constructor() {} | @@ -1977,14 +2008,14 @@ nodes | type_definitions.ts:9:3:9:6 | [FieldDeclaration] x: T | semmle.label | [FieldDeclaration] x: T | | type_definitions.ts:9:6:9:6 | [LocalTypeAccess] T | semmle.label | [LocalTypeAccess] T | | type_definitions.ts:11:1:11:17 | [DeclStmt] let c = ... | semmle.label | [DeclStmt] let c = ... | -| type_definitions.ts:11:1:11:17 | [DeclStmt] let c = ... | semmle.order | 114 | +| type_definitions.ts:11:1:11:17 | [DeclStmt] let c = ... | semmle.order | 115 | | type_definitions.ts:11:5:11:5 | [VarDecl] c | semmle.label | [VarDecl] c | | type_definitions.ts:11:5:11:16 | [VariableDeclarator] c: C | semmle.label | [VariableDeclarator] c: C | | type_definitions.ts:11:8:11:8 | [LocalTypeAccess] C | semmle.label | [LocalTypeAccess] C | | type_definitions.ts:11:8:11:16 | [GenericTypeExpr] C | semmle.label | [GenericTypeExpr] C | | type_definitions.ts:11:10:11:15 | [KeywordTypeExpr] number | semmle.label | [KeywordTypeExpr] number | | type_definitions.ts:13:1:15:1 | [EnumDeclaration,TypeDefinition] enum Co ... blue } | semmle.label | [EnumDeclaration,TypeDefinition] enum Co ... blue } | -| type_definitions.ts:13:1:15:1 | [EnumDeclaration,TypeDefinition] enum Co ... blue } | semmle.order | 115 | +| type_definitions.ts:13:1:15:1 | [EnumDeclaration,TypeDefinition] enum Co ... blue } | semmle.order | 116 | | type_definitions.ts:13:6:13:10 | [VarDecl] Color | semmle.label | [VarDecl] Color | | type_definitions.ts:14:3:14:5 | [EnumMember,TypeDefinition] red | semmle.label | [EnumMember,TypeDefinition] red | | type_definitions.ts:14:3:14:5 | [VarDecl] red | semmle.label | [VarDecl] red | @@ -1993,29 +2024,29 @@ nodes | type_definitions.ts:14:15:14:18 | [EnumMember,TypeDefinition] blue | semmle.label | [EnumMember,TypeDefinition] blue | | type_definitions.ts:14:15:14:18 | [VarDecl] blue | semmle.label | [VarDecl] blue | | type_definitions.ts:16:1:16:17 | [DeclStmt] let color = ... | semmle.label | [DeclStmt] let color = ... | -| type_definitions.ts:16:1:16:17 | [DeclStmt] let color = ... | semmle.order | 116 | +| type_definitions.ts:16:1:16:17 | [DeclStmt] let color = ... | semmle.order | 117 | | type_definitions.ts:16:5:16:9 | [VarDecl] color | semmle.label | [VarDecl] color | | type_definitions.ts:16:5:16:16 | [VariableDeclarator] color: Color | semmle.label | [VariableDeclarator] color: Color | | type_definitions.ts:16:12:16:16 | [LocalTypeAccess] Color | semmle.label | [LocalTypeAccess] Color | | type_definitions.ts:18:1:18:33 | [EnumDeclaration,TypeDefinition] enum En ... ember } | semmle.label | [EnumDeclaration,TypeDefinition] enum En ... ember } | -| type_definitions.ts:18:1:18:33 | [EnumDeclaration,TypeDefinition] enum En ... ember } | semmle.order | 117 | +| type_definitions.ts:18:1:18:33 | [EnumDeclaration,TypeDefinition] enum En ... ember } | semmle.order | 118 | | type_definitions.ts:18:6:18:22 | [VarDecl] EnumWithOneMember | semmle.label | [VarDecl] EnumWithOneMember | | type_definitions.ts:18:26:18:31 | [EnumMember,TypeDefinition] member | semmle.label | [EnumMember,TypeDefinition] member | | type_definitions.ts:18:26:18:31 | [VarDecl] member | semmle.label | [VarDecl] member | | type_definitions.ts:19:1:19:25 | [DeclStmt] let e = ... | semmle.label | [DeclStmt] let e = ... | -| type_definitions.ts:19:1:19:25 | [DeclStmt] let e = ... | semmle.order | 118 | +| type_definitions.ts:19:1:19:25 | [DeclStmt] let e = ... | semmle.order | 119 | | type_definitions.ts:19:5:19:5 | [VarDecl] e | semmle.label | [VarDecl] e | | type_definitions.ts:19:5:19:24 | [VariableDeclarator] e: EnumWithOneMember | semmle.label | [VariableDeclarator] e: EnumWithOneMember | | type_definitions.ts:19:8:19:24 | [LocalTypeAccess] EnumWithOneMember | semmle.label | [LocalTypeAccess] EnumWithOneMember | | type_definitions.ts:21:1:21:20 | [TypeAliasDeclaration,TypeDefinition] type Alias = T[]; | semmle.label | [TypeAliasDeclaration,TypeDefinition] type Alias = T[]; | -| type_definitions.ts:21:1:21:20 | [TypeAliasDeclaration,TypeDefinition] type Alias = T[]; | semmle.order | 119 | +| type_definitions.ts:21:1:21:20 | [TypeAliasDeclaration,TypeDefinition] type Alias = T[]; | semmle.order | 120 | | type_definitions.ts:21:6:21:10 | [Identifier] Alias | semmle.label | [Identifier] Alias | | type_definitions.ts:21:12:21:12 | [Identifier] T | semmle.label | [Identifier] T | | type_definitions.ts:21:12:21:12 | [TypeParameter] T | semmle.label | [TypeParameter] T | | type_definitions.ts:21:17:21:17 | [LocalTypeAccess] T | semmle.label | [LocalTypeAccess] T | | type_definitions.ts:21:17:21:19 | [ArrayTypeExpr] T[] | semmle.label | [ArrayTypeExpr] T[] | | type_definitions.ts:22:1:22:39 | [DeclStmt] let aliasForNumberArray = ... | semmle.label | [DeclStmt] let aliasForNumberArray = ... | -| type_definitions.ts:22:1:22:39 | [DeclStmt] let aliasForNumberArray = ... | semmle.order | 120 | +| type_definitions.ts:22:1:22:39 | [DeclStmt] let aliasForNumberArray = ... | semmle.order | 121 | | type_definitions.ts:22:5:22:23 | [VarDecl] aliasForNumberArray | semmle.label | [VarDecl] aliasForNumberArray | | type_definitions.ts:22:5:22:38 | [VariableDeclarator] aliasFo ... number> | semmle.label | [VariableDeclarator] aliasFo ... number> | | type_definitions.ts:22:26:22:30 | [LocalTypeAccess] Alias | semmle.label | [LocalTypeAccess] Alias | @@ -2216,6 +2247,10 @@ edges | file://:0:0:0:0 | (Arguments) | tst.ts:478:17:478:42 | [IndexExpr] SomeCla ... tadata] | semmle.order | 0 | | file://:0:0:0:0 | (Arguments) | tst.ts:483:17:483:58 | [SatisfiesExpr] ["hello ... string> | semmle.label | 0 | | file://:0:0:0:0 | (Arguments) | tst.ts:483:17:483:58 | [SatisfiesExpr] ["hello ... string> | semmle.order | 0 | +| file://:0:0:0:0 | (Arguments) | tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | semmle.label | 0 | +| file://:0:0:0:0 | (Arguments) | tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | semmle.order | 0 | +| file://:0:0:0:0 | (Arguments) | tst.ts:491:49:491:56 | [Literal] "yellow" | semmle.label | 1 | +| file://:0:0:0:0 | (Arguments) | tst.ts:491:49:491:56 | [Literal] "yellow" | semmle.order | 1 | | file://:0:0:0:0 | (Parameters) | tst.ts:14:17:14:17 | [SimpleParameter] x | semmle.label | 0 | | file://:0:0:0:0 | (Parameters) | tst.ts:14:17:14:17 | [SimpleParameter] x | semmle.order | 0 | | file://:0:0:0:0 | (Parameters) | tst.ts:14:28:14:28 | [SimpleParameter] y | semmle.label | 1 | @@ -2314,6 +2349,10 @@ edges | file://:0:0:0:0 | (Parameters) | tst.ts:474:12:474:18 | [SimpleParameter] _target | semmle.order | 0 | | file://:0:0:0:0 | (Parameters) | tst.ts:474:21:474:28 | [SimpleParameter] _context | semmle.label | 1 | | file://:0:0:0:0 | (Parameters) | tst.ts:474:21:474:28 | [SimpleParameter] _context | semmle.order | 1 | +| file://:0:0:0:0 | (Parameters) | tst.ts:487:48:487:53 | [SimpleParameter] colors | semmle.label | 0 | +| file://:0:0:0:0 | (Parameters) | tst.ts:487:48:487:53 | [SimpleParameter] colors | semmle.order | 0 | +| file://:0:0:0:0 | (Parameters) | tst.ts:487:61:487:72 | [SimpleParameter] defaultColor | semmle.label | 1 | +| file://:0:0:0:0 | (Parameters) | tst.ts:487:61:487:72 | [SimpleParameter] defaultColor | semmle.order | 1 | | file://:0:0:0:0 | (Parameters) | type_alias.ts:14:10:14:17 | [SimpleParameter] property | semmle.label | 0 | | file://:0:0:0:0 | (Parameters) | type_alias.ts:14:10:14:17 | [SimpleParameter] property | semmle.order | 0 | | file://:0:0:0:0 | (Parameters) | type_alias.ts:21:19:21:21 | [SimpleParameter] key | semmle.label | 0 | @@ -2346,6 +2385,8 @@ edges | file://:0:0:0:0 | (TypeParameters) | tst.ts:462:40:462:72 | [TypeParameter] const T ... tring[] | semmle.order | 0 | | file://:0:0:0:0 | (TypeParameters) | tst.ts:481:16:481:16 | [TypeParameter] T | semmle.label | 0 | | file://:0:0:0:0 | (TypeParameters) | tst.ts:481:16:481:16 | [TypeParameter] T | semmle.order | 0 | +| file://:0:0:0:0 | (TypeParameters) | tst.ts:487:30:487:45 | [TypeParameter] C extends string | semmle.label | 0 | +| file://:0:0:0:0 | (TypeParameters) | tst.ts:487:30:487:45 | [TypeParameter] C extends string | semmle.order | 0 | | file://:0:0:0:0 | (TypeParameters) | type_alias.ts:5:19:5:19 | [TypeParameter] T | semmle.label | 0 | | file://:0:0:0:0 | (TypeParameters) | type_alias.ts:5:19:5:19 | [TypeParameter] T | semmle.order | 0 | | file://:0:0:0:0 | (TypeParameters) | type_definitions.ts:3:13:3:13 | [TypeParameter] S | semmle.label | 0 | @@ -5182,6 +5223,54 @@ edges | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3 | tst.ts:483:46:483:50 | [LocalTypeAccess] Pair3 | semmle.order | 1 | | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3 | tst.ts:483:52:483:57 | [KeywordTypeExpr] string | semmle.label | 2 | | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3 | tst.ts:483:52:483:57 | [KeywordTypeExpr] string | semmle.order | 2 | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.label | 1 | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.order | 1 | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.label | 2 | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.order | 2 | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | semmle.label | 3 | +| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | semmle.order | 3 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | file://:0:0:0:0 | (Parameters) | semmle.label | 1 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | file://:0:0:0:0 | (Parameters) | semmle.order | 1 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | file://:0:0:0:0 | (TypeParameters) | semmle.label | 2 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | file://:0:0:0:0 | (TypeParameters) | semmle.order | 2 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | tst.ts:487:12:487:28 | [VarDecl] createStreetLight | semmle.label | 0 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | tst.ts:487:12:487:28 | [VarDecl] createStreetLight | semmle.order | 0 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | tst.ts:487:88:489:3 | [BlockStmt] { r ... 0]; } | semmle.label | 5 | +| tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | tst.ts:487:88:489:3 | [BlockStmt] { r ... 0]; } | semmle.order | 5 | +| tst.ts:487:30:487:45 | [TypeParameter] C extends string | tst.ts:487:30:487:30 | [Identifier] C | semmle.label | 1 | +| tst.ts:487:30:487:45 | [TypeParameter] C extends string | tst.ts:487:30:487:30 | [Identifier] C | semmle.order | 1 | +| tst.ts:487:30:487:45 | [TypeParameter] C extends string | tst.ts:487:40:487:45 | [KeywordTypeExpr] string | semmle.label | 2 | +| tst.ts:487:30:487:45 | [TypeParameter] C extends string | tst.ts:487:40:487:45 | [KeywordTypeExpr] string | semmle.order | 2 | +| tst.ts:487:48:487:53 | [SimpleParameter] colors | tst.ts:487:56:487:58 | [ArrayTypeExpr] C[] | semmle.label | -2 | +| tst.ts:487:48:487:53 | [SimpleParameter] colors | tst.ts:487:56:487:58 | [ArrayTypeExpr] C[] | semmle.order | -2 | +| tst.ts:487:56:487:58 | [ArrayTypeExpr] C[] | tst.ts:487:56:487:56 | [LocalTypeAccess] C | semmle.label | 1 | +| tst.ts:487:56:487:58 | [ArrayTypeExpr] C[] | tst.ts:487:56:487:56 | [LocalTypeAccess] C | semmle.order | 1 | +| tst.ts:487:61:487:72 | [SimpleParameter] defaultColor | tst.ts:487:76:487:85 | [GenericTypeExpr] NoInfer | semmle.label | -2 | +| tst.ts:487:61:487:72 | [SimpleParameter] defaultColor | tst.ts:487:76:487:85 | [GenericTypeExpr] NoInfer | semmle.order | -2 | +| tst.ts:487:76:487:85 | [GenericTypeExpr] NoInfer | tst.ts:487:76:487:82 | [LocalTypeAccess] NoInfer | semmle.label | 1 | +| tst.ts:487:76:487:85 | [GenericTypeExpr] NoInfer | tst.ts:487:76:487:82 | [LocalTypeAccess] NoInfer | semmle.order | 1 | +| tst.ts:487:76:487:85 | [GenericTypeExpr] NoInfer | tst.ts:487:84:487:84 | [LocalTypeAccess] C | semmle.label | 2 | +| tst.ts:487:76:487:85 | [GenericTypeExpr] NoInfer | tst.ts:487:84:487:84 | [LocalTypeAccess] C | semmle.order | 2 | +| tst.ts:487:88:489:3 | [BlockStmt] { r ... 0]; } | tst.ts:488:5:488:21 | [ReturnStmt] return colors[0]; | semmle.label | 1 | +| tst.ts:487:88:489:3 | [BlockStmt] { r ... 0]; } | tst.ts:488:5:488:21 | [ReturnStmt] return colors[0]; | semmle.order | 1 | +| tst.ts:488:5:488:21 | [ReturnStmt] return colors[0]; | tst.ts:488:12:488:20 | [IndexExpr] colors[0] | semmle.label | 1 | +| tst.ts:488:5:488:21 | [ReturnStmt] return colors[0]; | tst.ts:488:12:488:20 | [IndexExpr] colors[0] | semmle.order | 1 | +| tst.ts:488:12:488:20 | [IndexExpr] colors[0] | tst.ts:488:12:488:17 | [VarRef] colors | semmle.label | 1 | +| tst.ts:488:12:488:20 | [IndexExpr] colors[0] | tst.ts:488:12:488:17 | [VarRef] colors | semmle.order | 1 | +| tst.ts:488:12:488:20 | [IndexExpr] colors[0] | tst.ts:488:19:488:19 | [Literal] 0 | semmle.label | 2 | +| tst.ts:488:12:488:20 | [IndexExpr] colors[0] | tst.ts:488:19:488:19 | [Literal] 0 | semmle.order | 2 | +| tst.ts:491:3:491:57 | [CallExpr] createS ... ellow") | file://:0:0:0:0 | (Arguments) | semmle.label | 1 | +| tst.ts:491:3:491:57 | [CallExpr] createS ... ellow") | file://:0:0:0:0 | (Arguments) | semmle.order | 1 | +| tst.ts:491:3:491:57 | [CallExpr] createS ... ellow") | tst.ts:491:3:491:19 | [VarRef] createStreetLight | semmle.label | 0 | +| tst.ts:491:3:491:57 | [CallExpr] createS ... ellow") | tst.ts:491:3:491:19 | [VarRef] createStreetLight | semmle.order | 0 | +| tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | tst.ts:491:3:491:57 | [CallExpr] createS ... ellow") | semmle.label | 1 | +| tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | tst.ts:491:3:491:57 | [CallExpr] createS ... ellow") | semmle.order | 1 | +| tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:22:491:26 | [Literal] "red" | semmle.label | 1 | +| tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:22:491:26 | [Literal] "red" | semmle.order | 1 | +| tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:29:491:36 | [Literal] "yellow" | semmle.label | 2 | +| tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:29:491:36 | [Literal] "yellow" | semmle.order | 2 | +| tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:39:491:45 | [Literal] "green" | semmle.label | 3 | +| tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:39:491:45 | [Literal] "green" | semmle.order | 3 | | tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | semmle.label | 1 | | tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | semmle.order | 1 | | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | tstModuleCJS.cts:1:17:1:28 | [VarDecl] tstModuleCJS | semmle.label | 0 | diff --git a/javascript/ql/test/library-tests/TypeScript/Types/tests.expected b/javascript/ql/test/library-tests/TypeScript/Types/tests.expected index 986ae56a6646..49a1f1e000f3 100644 --- a/javascript/ql/test/library-tests/TypeScript/Types/tests.expected +++ b/javascript/ql/test/library-tests/TypeScript/Types/tests.expected @@ -658,6 +658,17 @@ getExprType | tst.ts:483:17:483:58 | ["hello ... string> | [first: string, string] | | tst.ts:483:18:483:24 | "hello" | "hello" | | tst.ts:483:27:483:33 | "world" | "world" | +| tst.ts:486:8:486:11 | TS54 | typeof TS54 in library-tests/TypeScript/Types/tst.ts | +| tst.ts:487:48:487:53 | colors | C[] | +| tst.ts:488:12:488:17 | colors | C[] | +| tst.ts:488:12:488:20 | colors[0] | C | +| tst.ts:488:19:488:19 | 0 | 0 | +| tst.ts:491:3:491:57 | createS ... ellow") | "red" \| "green" \| "yellow" | +| tst.ts:491:21:491:46 | ["red", ... green"] | ("red" \| "green" \| "yellow")[] | +| tst.ts:491:22:491:26 | "red" | "red" | +| tst.ts:491:29:491:36 | "yellow" | "yellow" | +| tst.ts:491:39:491:45 | "green" | "green" | +| tst.ts:491:49:491:56 | "yellow" | "yellow" | | tstModuleCJS.cts:1:17:1:28 | tstModuleCJS | () => "a" \| "b" | | tstModuleCJS.cts:2:12:2:15 | Math | Math | | tstModuleCJS.cts:2:12:2:22 | Math.random | () => number | @@ -1138,6 +1149,12 @@ getTypeExprType | tst.ts:483:46:483:50 | Pair3 | Pair3 | | tst.ts:483:46:483:58 | Pair3 | Pair3 | | tst.ts:483:52:483:57 | string | string | +| tst.ts:487:30:487:30 | C | C | +| tst.ts:487:40:487:45 | string | string | +| tst.ts:487:56:487:56 | C | C | +| tst.ts:487:56:487:58 | C[] | C[] | +| tst.ts:487:76:487:82 | NoInfer | any | +| tst.ts:487:84:487:84 | C | C | | tstModuleCJS.cts:1:33:1:35 | 'a' | "a" | | tstModuleCJS.cts:1:33:1:41 | 'a' \| 'b' | "a" \| "b" | | tstModuleCJS.cts:1:39:1:41 | 'b' | "b" | @@ -1359,16 +1376,19 @@ unionIndex | "circle" | 0 | "circle" \| "square" | | "function" | 7 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "green" | 1 | "red" \| "green" \| "blue" | +| "green" | 1 | "red" \| "green" \| "yellow" | | "hello" | 0 | "hello" \| 42 | | "number" | 1 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "number" | 1 | keyof TypeMap | | "object" | 6 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "red" | 0 | "red" \| "green" \| "blue" | +| "red" | 0 | "red" \| "green" \| "yellow" | | "square" | 1 | "circle" \| "square" | | "string" | 0 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "string" | 0 | keyof TypeMap | | "symbol" | 4 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "undefined" | 5 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | +| "yellow" | 2 | "red" \| "green" \| "yellow" | | () => number | 0 | (() => number) \| (ClassMethodDecoratorContext number | 1 | void \| (() => number) | | ClassMethodDecoratorContext numbe... | 1 | (() => number) \| (ClassMethodDecoratorContext = [first: T, T]; console.log(["hello", "world"] satisfies Pair3); +} + +module TS54 { + function createStreetLight(colors: C[], defaultColor?: NoInfer) { + return colors[0]; + } + + createStreetLight(["red", "yellow", "green"], "yellow"); } \ No newline at end of file From f433039a2514cc03e6129f6496dc43a4bfad0ce8 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 2 Feb 2024 11:23:35 +0100 Subject: [PATCH 002/731] Add change note --- javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md diff --git a/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md b/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md new file mode 100644 index 000000000000..836719b5d6bf --- /dev/null +++ b/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Added support for TypeScript 5.4. \ No newline at end of file From 3b1751dc8a6716d9a8bb9eecda2475c1f4b2408e Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 2 Feb 2024 11:45:21 +0100 Subject: [PATCH 003/731] Update supported versions --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index cb9ee322a04d..525fe7730a88 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -25,7 +25,7 @@ Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Swift [11]_,"Swift 5.4-5.9.1","Swift compiler","``.swift``" - TypeScript [12]_,"2.6-5.3",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" + TypeScript [12]_,"2.6-5.4",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group From 45bb4a0ee5344ec101618301bec112bbecfa242c Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Thu, 8 Feb 2024 12:48:15 +0100 Subject: [PATCH 004/731] python: remove `TaintStepFromSummary` as it should be covered by `SummarizedCallableFromModel` Also move things around, to look more like the Ruby code. --- .../python/dataflow/new/FlowSummary.qll | 31 +------------- .../python/frameworks/data/ModelsAsData.qll | 41 ++++++++++++------- 2 files changed, 27 insertions(+), 45 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll index 800c9592dcc2..9c3033e61267 100644 --- a/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll +++ b/python/ql/lib/semmle/python/dataflow/new/FlowSummary.qll @@ -2,7 +2,6 @@ private import python private import semmle.python.dataflow.new.DataFlow -private import semmle.python.frameworks.data.ModelsAsData private import semmle.python.ApiGraphs private import internal.FlowSummaryImpl as Impl private import internal.DataFlowUtil @@ -11,6 +10,7 @@ private import internal.DataFlowPrivate // import all instances below private module Summaries { private import semmle.python.Frameworks + private import semmle.python.frameworks.data.ModelsAsData } deprecated class SummaryComponent = Impl::Private::SummaryComponent; @@ -36,32 +36,3 @@ abstract class SummarizedCallable extends LibraryCallable, Impl::Public::Summari } deprecated class RequiredSummaryComponentStack = Impl::Private::RequiredSummaryComponentStack; - -private class SummarizedCallableFromModel extends SummarizedCallable { - string type; - string path; - - SummarizedCallableFromModel() { - ModelOutput::relevantSummaryModel(type, path, _, _, _) and - this = type + ";" + path - } - - override CallCfgNode getACall() { ModelOutput::resolvedSummaryBase(type, path, result) } - - override ArgumentNode getACallback() { - exists(API::Node base | - ModelOutput::resolvedSummaryRefBase(type, path, base) and - result = base.getAValueReachableFromSource() - ) - } - - override predicate propagatesFlow(string input, string output, boolean preservesValue) { - exists(string kind | ModelOutput::relevantSummaryModel(type, path, input, output, kind) | - kind = "value" and - preservesValue = true - or - kind = "taint" and - preservesValue = false - ) - } -} diff --git a/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll b/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll index f8d7ae75ad02..34e484392716 100644 --- a/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll +++ b/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll @@ -17,7 +17,7 @@ import Shared::ModelOutput as ModelOutput private import semmle.python.dataflow.new.RemoteFlowSources private import semmle.python.dataflow.new.DataFlow private import semmle.python.ApiGraphs -private import semmle.python.dataflow.new.TaintTracking +private import semmle.python.dataflow.new.FlowSummary /** * A remote flow source originating from a CSV source row. @@ -28,20 +28,31 @@ private class RemoteFlowSourceFromCsv extends RemoteFlowSource { override string getSourceType() { result = "Remote flow (from model)" } } -/** - * Like `ModelOutput::summaryStep` but with API nodes mapped to data-flow nodes. - */ -private predicate summaryStepNodes(DataFlow::Node pred, DataFlow::Node succ, string kind) { - exists(API::Node predNode, API::Node succNode | - Specific::summaryStep(predNode, succNode, kind) and - pred = predNode.asSink() and - succ = succNode.asSource() - ) -} +private class SummarizedCallableFromModel extends SummarizedCallable { + string type; + string path; + + SummarizedCallableFromModel() { + ModelOutput::relevantSummaryModel(type, path, _, _, _) and + this = type + ";" + path + } + + override DataFlow::CallCfgNode getACall() { ModelOutput::resolvedSummaryBase(type, path, result) } + + override DataFlow::ArgumentNode getACallback() { + exists(API::Node base | + ModelOutput::resolvedSummaryRefBase(type, path, base) and + result = base.getAValueReachableFromSource() + ) + } -/** Taint steps induced by summary models of kind `taint`. */ -private class TaintStepFromSummary extends TaintTracking::AdditionalTaintStep { - override predicate step(DataFlow::Node pred, DataFlow::Node succ) { - summaryStepNodes(pred, succ, "taint") + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + exists(string kind | ModelOutput::relevantSummaryModel(type, path, input, output, kind) | + kind = "value" and + preservesValue = true + or + kind = "taint" and + preservesValue = false + ) } } From 580e68d5de4740a2d7ce7d1af38dfe814a853a7a Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 9 Feb 2024 13:51:16 +0100 Subject: [PATCH 005/731] python: add support for lower bound position --- .../dataflow/new/internal/DataFlowDispatch.qll | 16 ++++++++++++++++ .../dataflow/new/internal/FlowSummaryImpl.qll | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index 87a278e0f6bc..9bf0ec960845 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -57,6 +57,9 @@ newtype TParameterPosition = // parameter positions available. FlowSummaryImpl::ParsePositions::isParsedPositionalArgumentPosition(_, index) } or + TPositionalParameterLowerBoundPosition(int pos) { + FlowSummaryImpl::ParsePositions::isParsedArgumentLowerBoundPosition(_, pos) + } or TKeywordParameterPosition(string name) { name = any(Parameter p).getName() or @@ -91,6 +94,9 @@ class ParameterPosition extends TParameterPosition { /** Holds if this position represents a positional parameter at (0-based) `index`. */ predicate isPositional(int index) { this = TPositionalParameterPosition(index) } + /** Holds if this position represents any positional parameter starting from position `pos`. */ + predicate isPositionalLowerBound(int pos) { this = TPositionalParameterLowerBoundPosition(pos) } + /** Holds if this position represents a keyword parameter named `name`. */ predicate isKeyword(string name) { this = TKeywordParameterPosition(name) } @@ -123,6 +129,8 @@ class ParameterPosition extends TParameterPosition { or exists(int index | this.isPositional(index) and result = "position " + index) or + exists(int pos | this.isPositionalLowerBound(pos) and result = "position " + pos + "..") + or exists(string name | this.isKeyword(name) and result = "keyword " + name) or exists(int index | this.isStarArgs(index) and result = "*args at " + index) @@ -211,6 +219,10 @@ predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { or exists(int index | ppos.isPositional(index) and apos.isPositional(index)) or + exists(int index1, int index2 | + ppos.isPositionalLowerBound(index1) and apos.isPositional(index2) and index2 >= index1 + ) + or exists(string name | ppos.isKeyword(name) and apos.isKeyword(name)) or exists(int index | ppos.isStarArgs(index) and apos.isStarArgs(index)) @@ -360,6 +372,10 @@ abstract class DataFlowFunction extends DataFlowCallable, TFunction { result.getParameter() = func.getArg(index + this.positionalOffset()) ) or + exists(int index1, int index2 | ppos.isPositionalLowerBound(index1) and index2 >= index1 | + result.getParameter() = func.getArg(index2 + this.positionalOffset()) + ) + or exists(string name | ppos.isKeyword(name) | result.getParameter() = func.getArgByName(name)) or // `*args` diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index 4a55d38edb6c..a673a1881334 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -195,6 +195,11 @@ module ParsePositions { i = AccessPath::parseInt(c) } + predicate isParsedArgumentLowerBoundPosition(string c, int i) { + isArgBody(c) and + i = AccessPath::parseLowerBound(c) + } + predicate isParsedKeywordArgumentPosition(string c, string argName) { isArgBody(c) and c = argName + ":" From 5125973f9b257f37ff49f1f236b89badddf563ce Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 22 Feb 2024 13:01:03 +0000 Subject: [PATCH 006/731] Python: Add test case for `.copy()` as a copy step --- .../ModificationOfParameterWithDefault.expected | 10 ++++++++++ .../ModificationOfParameterWithDefault/test.py | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected index 2bed4495c438..82bc41d780c9 100644 --- a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected +++ b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected @@ -40,6 +40,10 @@ edges | test.py:195:28:195:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | provenance | | | test.py:197:18:197:18 | ControlFlowNode for x | test.py:198:28:198:28 | ControlFlowNode for x | provenance | | | test.py:198:28:198:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | provenance | | +| test.py:222:26:222:26 | ControlFlowNode for x | test.py:223:9:223:9 | ControlFlowNode for x | provenance | | +| test.py:223:5:223:5 | ControlFlowNode for y | test.py:224:5:224:5 | ControlFlowNode for y | provenance | | +| test.py:223:9:223:9 | ControlFlowNode for x | test.py:223:9:223:16 | ControlFlowNode for Attribute() | provenance | | +| test.py:223:9:223:16 | ControlFlowNode for Attribute() | test.py:223:5:223:5 | ControlFlowNode for y | provenance | | nodes | test.py:2:12:2:12 | ControlFlowNode for l | semmle.label | ControlFlowNode for l | | test.py:3:5:3:5 | ControlFlowNode for l | semmle.label | ControlFlowNode for l | @@ -107,6 +111,11 @@ nodes | test.py:195:28:195:28 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | | test.py:197:18:197:18 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | | test.py:198:28:198:28 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | +| test.py:222:26:222:26 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | +| test.py:223:5:223:5 | ControlFlowNode for y | semmle.label | ControlFlowNode for y | +| test.py:223:9:223:9 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | +| test.py:223:9:223:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| test.py:224:5:224:5 | ControlFlowNode for y | semmle.label | ControlFlowNode for y | subpaths #select | test.py:3:5:3:5 | ControlFlowNode for l | test.py:2:12:2:12 | ControlFlowNode for l | test.py:3:5:3:5 | ControlFlowNode for l | This expression mutates a $@. | test.py:2:12:2:12 | ControlFlowNode for l | default value | @@ -138,3 +147,4 @@ subpaths | test.py:185:9:185:9 | ControlFlowNode for x | test.py:197:18:197:18 | ControlFlowNode for x | test.py:185:9:185:9 | ControlFlowNode for x | This expression mutates a $@. | test.py:197:18:197:18 | ControlFlowNode for x | default value | | test.py:187:9:187:9 | ControlFlowNode for x | test.py:194:18:194:18 | ControlFlowNode for x | test.py:187:9:187:9 | ControlFlowNode for x | This expression mutates a $@. | test.py:194:18:194:18 | ControlFlowNode for x | default value | | test.py:187:9:187:9 | ControlFlowNode for x | test.py:197:18:197:18 | ControlFlowNode for x | test.py:187:9:187:9 | ControlFlowNode for x | This expression mutates a $@. | test.py:197:18:197:18 | ControlFlowNode for x | default value | +| test.py:224:5:224:5 | ControlFlowNode for y | test.py:222:26:222:26 | ControlFlowNode for x | test.py:224:5:224:5 | ControlFlowNode for y | This expression mutates a $@. | test.py:222:26:222:26 | ControlFlowNode for x | default value | diff --git a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py index b67fa985f513..a79ca3d78878 100644 --- a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py +++ b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py @@ -216,3 +216,9 @@ def flow_from_within_deepcopy_fp(): def flow_through_deepcopy_fp(x=[]): y = deepcopy(x) y.append(1) + +# Use of copy method: + +def flow_through_copy_fp(x=[]): + y = x.copy() + y.append(1) #$ SPURIOUS: modification=y From f1392712ee9ae31d69facdd2c00b990208afdc1f Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 22 Feb 2024 13:09:27 +0000 Subject: [PATCH 007/731] Python: Add `.copy()` as a copy step --- .../dataflow/new/internal/TaintTrackingPrivate.qll | 2 ++ .../ModificationOfParameterWithDefault.expected | 10 ---------- .../ModificationOfParameterWithDefault/test.py | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll index 1841001c2f81..6eab2f48885c 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingPrivate.qll @@ -195,6 +195,8 @@ predicate copyStep(DataFlow::CfgNode nodeFrom, DataFlow::CfgNode nodeTo) { call = API::moduleImport("copy").getMember(["copy", "deepcopy"]).getACall() and call.getArg(0) = nodeFrom ) + or + nodeTo.(DataFlow::MethodCallNode).calls(nodeFrom, "copy") } /** diff --git a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected index 82bc41d780c9..2bed4495c438 100644 --- a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected +++ b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/ModificationOfParameterWithDefault.expected @@ -40,10 +40,6 @@ edges | test.py:195:28:195:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | provenance | | | test.py:197:18:197:18 | ControlFlowNode for x | test.py:198:28:198:28 | ControlFlowNode for x | provenance | | | test.py:198:28:198:28 | ControlFlowNode for x | test.py:181:28:181:28 | ControlFlowNode for x | provenance | | -| test.py:222:26:222:26 | ControlFlowNode for x | test.py:223:9:223:9 | ControlFlowNode for x | provenance | | -| test.py:223:5:223:5 | ControlFlowNode for y | test.py:224:5:224:5 | ControlFlowNode for y | provenance | | -| test.py:223:9:223:9 | ControlFlowNode for x | test.py:223:9:223:16 | ControlFlowNode for Attribute() | provenance | | -| test.py:223:9:223:16 | ControlFlowNode for Attribute() | test.py:223:5:223:5 | ControlFlowNode for y | provenance | | nodes | test.py:2:12:2:12 | ControlFlowNode for l | semmle.label | ControlFlowNode for l | | test.py:3:5:3:5 | ControlFlowNode for l | semmle.label | ControlFlowNode for l | @@ -111,11 +107,6 @@ nodes | test.py:195:28:195:28 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | | test.py:197:18:197:18 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | | test.py:198:28:198:28 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | -| test.py:222:26:222:26 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | -| test.py:223:5:223:5 | ControlFlowNode for y | semmle.label | ControlFlowNode for y | -| test.py:223:9:223:9 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | -| test.py:223:9:223:16 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | -| test.py:224:5:224:5 | ControlFlowNode for y | semmle.label | ControlFlowNode for y | subpaths #select | test.py:3:5:3:5 | ControlFlowNode for l | test.py:2:12:2:12 | ControlFlowNode for l | test.py:3:5:3:5 | ControlFlowNode for l | This expression mutates a $@. | test.py:2:12:2:12 | ControlFlowNode for l | default value | @@ -147,4 +138,3 @@ subpaths | test.py:185:9:185:9 | ControlFlowNode for x | test.py:197:18:197:18 | ControlFlowNode for x | test.py:185:9:185:9 | ControlFlowNode for x | This expression mutates a $@. | test.py:197:18:197:18 | ControlFlowNode for x | default value | | test.py:187:9:187:9 | ControlFlowNode for x | test.py:194:18:194:18 | ControlFlowNode for x | test.py:187:9:187:9 | ControlFlowNode for x | This expression mutates a $@. | test.py:194:18:194:18 | ControlFlowNode for x | default value | | test.py:187:9:187:9 | ControlFlowNode for x | test.py:197:18:197:18 | ControlFlowNode for x | test.py:187:9:187:9 | ControlFlowNode for x | This expression mutates a $@. | test.py:197:18:197:18 | ControlFlowNode for x | default value | -| test.py:224:5:224:5 | ControlFlowNode for y | test.py:222:26:222:26 | ControlFlowNode for x | test.py:224:5:224:5 | ControlFlowNode for y | This expression mutates a $@. | test.py:222:26:222:26 | ControlFlowNode for x | default value | diff --git a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py index a79ca3d78878..ca7bb71d760e 100644 --- a/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py +++ b/python/ql/test/query-tests/Functions/ModificationOfParameterWithDefault/test.py @@ -221,4 +221,4 @@ def flow_through_deepcopy_fp(x=[]): def flow_through_copy_fp(x=[]): y = x.copy() - y.append(1) #$ SPURIOUS: modification=y + y.append(1) From 49d826f6674d9ce8dea47af920888028dd6e715c Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 25 Sep 2023 11:48:27 +0100 Subject: [PATCH 008/731] Ruby: Add a query for CSRF protection not enabled Specifically in Rails apps, we look for root ActionController classes without a call to `protect_from_forgery`. --- .../ruby/frameworks/ActionController.qll | 80 +++++++++++-------- .../cwe-352/CSRFProtectionNotEnabled.qhelp | 65 +++++++++++++++ .../cwe-352/CSRFProtectionNotEnabled.ql | 23 ++++++ .../examples/ProtectFromForgeryGood.rb | 4 + .../cwe-352/CSRFProtectionNotEnabled.expected | 1 + .../cwe-352/CSRFProtectionNotEnabled.qlref | 1 + .../alternative_root_controller.rb | 3 + 7 files changed, 144 insertions(+), 33 deletions(-) create mode 100644 ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp create mode 100644 ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql create mode 100644 ruby/ql/src/queries/security/cwe-352/examples/ProtectFromForgeryGood.rb create mode 100644 ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected create mode 100644 ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.qlref create mode 100644 ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/alternative_root_controller.rb diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index be1df5066e1d..5500eca06079 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -21,6 +21,35 @@ private import codeql.ruby.dataflow.internal.DataFlowDispatch module ActionController { // TODO: move the rest of this file inside this module. import codeql.ruby.frameworks.actioncontroller.Filters + + /** + * An ActionController class which sits at the top of the class hierarchy. + * In other words, it does not subclass any other class in source code. + */ + class RootController extends ActionControllerClass { + RootController() { + not exists(ActionControllerClass parent | this != parent and this = parent.getADescendent()) + } + } + + /** + * A call to `protect_from_forgery`. + */ + class ProtectFromForgeryCall extends CsrfProtectionSetting::Range, DataFlow::CallNode { + ProtectFromForgeryCall() { + this = actionControllerInstance().getAMethodCall("protect_from_forgery") + } + + private string getWithValueText() { + result = this.getKeywordArgument("with").getConstantValue().getSymbol() + } + + // Calls without `with: :exception` can allow for bypassing CSRF protection + // in some scenarios. + override boolean getVerificationSetting() { + if this.getWithValueText() = "exception" then result = true else result = false + } + } } /** @@ -38,18 +67,10 @@ module ActionController { */ class ActionControllerClass extends DataFlow::ClassNode { ActionControllerClass() { - this = - [ - DataFlow::getConstant("ActionController").getConstant("Base"), - // In Rails applications `ApplicationController` typically extends `ActionController::Base`, but we - // treat it separately in case the `ApplicationController` definition is not in the database. - DataFlow::getConstant("ApplicationController"), - // ActionController::Metal technically doesn't contain all of the - // methods available in Base, such as those for rendering views. - // However we prefer to be over-sensitive in this case in order to find - // more results. - DataFlow::getConstant("ActionController").getConstant("Metal") - ].getADescendentModule() + this = DataFlow::getConstant("ApplicationController").getADescendentModule() + or + this = actionControllerBaseClass().getADescendentModule() and + not exists(DataFlow::ModuleNode m | m = actionControllerBaseClass().asModule() | this = m) } /** @@ -73,6 +94,20 @@ class ActionControllerClass extends DataFlow::ClassNode { } } +private DataFlow::ConstRef actionControllerBaseClass() { + result = + [ + // In Rails applications `ApplicationController` typically extends `ActionController::Base`, but we + // treat it separately in case the `ApplicationController` definition is not in the database. + DataFlow::getConstant("ActionController").getConstant("Base"), + // ActionController::Metal technically doesn't contain all of the + // methods available in Base, such as those for rendering views. + // However we prefer to be over-sensitive in this case in order to find + // more results. + DataFlow::getConstant("ActionController").getConstant("Metal") + ] +} + private API::Node actionControllerInstance() { result = any(ActionControllerClass cls).getSelf().track() } @@ -406,27 +441,6 @@ class ActionControllerSkipForgeryProtectionCall extends CsrfProtectionSetting::R override boolean getVerificationSetting() { result = false } } -/** - * A call to `protect_from_forgery`. - */ -private class ActionControllerProtectFromForgeryCall extends CsrfProtectionSetting::Range, - DataFlow::CallNode -{ - ActionControllerProtectFromForgeryCall() { - this = actionControllerInstance().getAMethodCall("protect_from_forgery") - } - - private string getWithValueText() { - result = this.getKeywordArgument("with").getConstantValue().getSymbol() - } - - // Calls without `with: :exception` can allow for bypassing CSRF protection - // in some scenarios. - override boolean getVerificationSetting() { - if this.getWithValueText() = "exception" then result = true else result = false - } -} - /** * A call to `send_file`, which sends the file at the given path to the client. */ diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp new file mode 100644 index 000000000000..9b8944b1d65c --- /dev/null +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.qhelp @@ -0,0 +1,65 @@ + + + + +

+ Cross-site request forgery (CSRF) is a type of vulnerability in which an + attacker is able to force a user to carry out an action that the user did + not intend. +

+ +

+ The attacker tricks an authenticated user into submitting a request to the + web application. Typically this request will result in a state change on + the server, such as changing the user's password. The request can be + initiated when the user visits a site controlled by the attacker. If the + web application relies only on cookies for authentication, or on other + credentials that are automatically included in the request, then this + request will appear as legitimate to the server. +

+ +

+ A common countermeasure for CSRF is to generate a unique token to be + included in the HTML sent from the server to a user. This token can be + used as a hidden field to be sent back with requests to the server, where + the server can then check that the token is valid and associated with the + relevant user session. +

+
+ + +

+ In the Rails web framework, CSRF protection is enabled by the adding a call to + the protect_from_forgery method inside an + ActionController class. Typically this is done in the + ApplicationController class, or an equivalent class from which + other controller classes are subclassed. + + The default behaviour of this method is to null the session when an invalid + CSRF token is provided. This may not be sufficient to avoid a CSRF + vulnerability - for example if parts of the session are memoized. Calling + protect_from_forgery with: :exception can help to avoid this + by raising an exception on an invalid CSRF token instead. +

+
+ + +

+ The following example shows a case where CSRF protection is enabled with + a secure request handling strategy of :exception. +

+ + + +
+ + +
  • Wikipedia: Cross-site request forgery
  • +
  • OWASP: Cross-site request forgery
  • +
  • Securing Rails Applications: Cross-Site Request Forgery (CSRF)
  • +
  • Veracode: When Rails' protect_from_forgery Fails.
  • +
    + +
    diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql new file mode 100644 index 000000000000..4210d798863a --- /dev/null +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql @@ -0,0 +1,23 @@ +/** + * @name CSRF protection not enabled + * @description Not enabling CSRF protection may make the application + * vulnerable to a Cross-Site Request Forgery (CSRF) attack. + * @kind problem + * @problem.severity warning + * @security-severity 8.8 + * @precision high + * @id rb/csrf-protection-not-enabled + * @tags security + * external/cwe/cwe-352 + */ + +import codeql.ruby.AST +import codeql.ruby.Concepts +import codeql.ruby.frameworks.ActionController + +from ActionController::RootController c +where + not exists(ActionController::ProtectFromForgeryCall call | + c.getSelf().flowsTo(call.getReceiver()) + ) +select c, "Potential CSRF vulnerability due to forgery protection not being enabled" diff --git a/ruby/ql/src/queries/security/cwe-352/examples/ProtectFromForgeryGood.rb b/ruby/ql/src/queries/security/cwe-352/examples/ProtectFromForgeryGood.rb new file mode 100644 index 000000000000..ecab2c8ea45a --- /dev/null +++ b/ruby/ql/src/queries/security/cwe-352/examples/ProtectFromForgeryGood.rb @@ -0,0 +1,4 @@ +class ApplicationController < ActionController::Base + protect_from_forgery with: :exception +end + \ No newline at end of file diff --git a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected new file mode 100644 index 000000000000..7fe8b3490a95 --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected @@ -0,0 +1 @@ +| railsapp/app/controllers/alternative_root_controller.rb:1:1:3:3 | AlternativeRootController | Potential CSRF vulnerability due to forgery protection not being enabled | diff --git a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.qlref b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.qlref new file mode 100644 index 000000000000..8e9e894fe518 --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.qlref @@ -0,0 +1 @@ +queries/security/cwe-352/CSRFProtectionNotEnabled.ql \ No newline at end of file diff --git a/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/alternative_root_controller.rb b/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/alternative_root_controller.rb new file mode 100644 index 000000000000..8cbf31529c15 --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/alternative_root_controller.rb @@ -0,0 +1,3 @@ +class AlternativeRootController < ActionController::Base + # BAD: no protect_from_forgery call +end \ No newline at end of file From 6d6f8ba512b4bdba57a09b6815aed8228a9425c4 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 25 Sep 2023 13:46:50 +0100 Subject: [PATCH 009/731] Ruby: Make CSRF query more sensitive Generate an alert for every controller class that doesn't have or inherity a `protect_from_forgery` setting. --- .../cwe-352/CSRFProtectionNotEnabled.ql | 20 +++++++++++++------ .../cwe-352/CSRFProtectionNotEnabled.expected | 3 ++- .../controllers/subscriptions_controller.rb | 3 +++ .../app/controllers/tags_controller.rb | 2 ++ 4 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/subscriptions_controller.rb create mode 100644 ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/tags_controller.rb diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql index 4210d798863a..235798e66d4e 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql @@ -15,9 +15,17 @@ import codeql.ruby.AST import codeql.ruby.Concepts import codeql.ruby.frameworks.ActionController -from ActionController::RootController c -where - not exists(ActionController::ProtectFromForgeryCall call | - c.getSelf().flowsTo(call.getReceiver()) - ) -select c, "Potential CSRF vulnerability due to forgery protection not being enabled" +/** + * Holds if a call to `protect_from_forgery` is made in the controller class `definedIn`, + * which is inherited by the controller class `child`. + */ +private predicate protectFromForgeryCall( + ActionControllerClass definedIn, ActionControllerClass child, + ActionController::ProtectFromForgeryCall call +) { + definedIn.getSelf().flowsTo(call.getReceiver()) and child = definedIn.getADescendent() +} + +from ActionControllerClass c +where not protectFromForgeryCall(_, c, _) +select c, "Potential CSRF vulnerability due to forgery protection not being enabled." diff --git a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected index 7fe8b3490a95..52e2b1aaa4b8 100644 --- a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected +++ b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected @@ -1 +1,2 @@ -| railsapp/app/controllers/alternative_root_controller.rb:1:1:3:3 | AlternativeRootController | Potential CSRF vulnerability due to forgery protection not being enabled | +| railsapp/app/controllers/alternative_root_controller.rb:1:1:3:3 | AlternativeRootController | Potential CSRF vulnerability due to forgery protection not being enabled. | +| railsapp/app/controllers/tags_controller.rb:1:1:2:3 | TagsController | Potential CSRF vulnerability due to forgery protection not being enabled. | diff --git a/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/subscriptions_controller.rb b/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/subscriptions_controller.rb new file mode 100644 index 000000000000..9e1cfcf9a1e5 --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/subscriptions_controller.rb @@ -0,0 +1,3 @@ +class SubscriptionsController < AlternativeRootController + protect_from_forgery with: :exception +end \ No newline at end of file diff --git a/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/tags_controller.rb b/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/tags_controller.rb new file mode 100644 index 000000000000..4c3f586b9fe6 --- /dev/null +++ b/ruby/ql/test/query-tests/security/cwe-352/railsapp/app/controllers/tags_controller.rb @@ -0,0 +1,2 @@ +class TagsController < AlternativeRootController +end \ No newline at end of file From 581072721cac3d8e4e2ff42cbf0005af58b2f06d Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 25 Sep 2023 13:57:30 +0100 Subject: [PATCH 010/731] Ruby: Add change note --- .../change-notes/2023-09-25-csrf-protection-not-enabled.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md diff --git a/ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md b/ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md new file mode 100644 index 000000000000..e8e7ac54e381 --- /dev/null +++ b/ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new experimental query, `rb/csrf-protection-not-enabled`, to detect cases where Cross-Site Request Forgery protection is not enabled in Ruby on Rails controllers. From 3c69ab10f25d91107f78f5c6fa31c741fd1b70c8 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Fri, 29 Sep 2023 15:35:16 +0100 Subject: [PATCH 011/731] Ruby: Restrict rb/csrf-protection-not-enabled This query only applies to codebases using Ruby on Rails < 5.2, or where there is no call to `csrf_meta_tags` in the base ERb template. --- .../ql/lib/codeql/ruby/frameworks/Gemfile.qll | 243 ++++++++++++++++++ .../cwe-352/CSRFProtectionNotEnabled.ql | 20 +- 2 files changed, 262 insertions(+), 1 deletion(-) create mode 100644 ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll diff --git a/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll b/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll new file mode 100644 index 000000000000..526e8cea7365 --- /dev/null +++ b/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll @@ -0,0 +1,243 @@ +private import codeql.ruby.AST + +/** + * Provides classes and predicates for Gemfiles, including version constraint logic. + */ +module Gemfile { + private File getGemfile() { result.getBaseName() = "Gemfile" } + + /** + * A call to `gem` inside a gemfile. This defines a dependency. For example: + * + * ```rb + * gem "actionpack", "~> 7.0.0" + * ``` + * + * This call defines a dependency on the `actionpack` gem, with version constraint `~> 7.0.0`. + * For detail on version constraints, see the `VersionConstraint` class. + */ + class Gem extends MethodCall { + Gem() { this.getMethodName() = "gem" and this.getFile() = getGemfile() } + + string getName() { result = this.getArgument(0).getConstantValue().getStringlikeValue() } + + /** + * Gets the `i`th version string for this gem. A single `gem` call may have multiple version constraints, for example: + * + * ```rb + * gem "json", "3.4.0", ">= 3.0" + * ``` + */ + string getVersionString(int i) { + result = this.getArgument(i + 1).getConstantValue().getStringlikeValue() + } + + /** + * Gets a version constraint defined by this call. + */ + VersionConstraint getAVersionConstraint() { result = this.getVersionString(_) } + } + + private newtype TComparator = + TEq() or + TNeq() or + TGt() or + TLt() or + TGeq() or + TLeq() or + TPGeq() + + /** + * A comparison operator in a version constraint. + */ + private class Comparator extends TComparator { + string toString() { result = this.toSourceString() } + + /** + * The representation of the comparator in source code. + * This is defined separately so that we can change the `toString` implementation without breaking `parseConstraint`. + */ + string toSourceString() { + this = TEq() and result = "=" + or + this = TNeq() and result = "!=" + or + this = TGt() and result = ">" + or + this = TLt() and result = "<" + or + this = TGeq() and result = ">=" + or + this = TLeq() and result = "<=" + or + this = TPGeq() and result = "~>" + } + } + + bindingset[s] + private predicate parseExactVersion(string s, string version) { + version = s.regexpCapture("\\s*(\\d+\\.\\d+\\.\\d+)\\s*", 1) + } + + bindingset[s] + private predicate parseConstraint(string s, Comparator c, string version) { + exists(string pattern | pattern = "(=|!=|>=?|<=?|~>)\\s+(.+)" | + c.toSourceString() = s.regexpCapture(pattern, 1) and version = s.regexpCapture(pattern, 2) + ) + } + + class VersionConstraint extends string { + Comparator comp; + string versionString; + + VersionConstraint() { + this = any(Gem g).getVersionString(_) and + ( + parseConstraint(this, comp, versionString) + or + parseExactVersion(this, versionString) and comp = TEq() + ) + } + + /** + * Gets the string defining the version number used in this constraint. + */ + string getVersionString() { result = versionString } + + /** + * Gets the `Version` used in this constraint. + */ + Version getVersion() { result = this.getVersionString() } + + /** + * Holds if `other` is a version which is strictly greater than the range described by this version constraint. + */ + bindingset[other] + predicate before(string other) { + comp = TEq() and this.getVersion().before(other) + or + comp = TLt() and + (this.getVersion().before(other) or this.getVersion().equal(other)) + or + comp = TLeq() and this.getVersion().before(other) + or + // ~> x.y.z <=> >= x.y.z && < x.(y+1).0 + // ~> x.y <=> >= x.y && < (x+1).0 + comp = TPGeq() and + exists(int thisMajor, int thisMinor, int otherMajor, int otherMinor | + thisMajor = this.getVersion().getMajor() and + thisMinor = this.getVersion().getMinor() and + exists(string maj, string mi | normalizeSemver(other, _, maj, mi, _) | + otherMajor = maj.toInt() and otherMinor = mi.toInt() + ) + | + exists(this.getVersion().getPatch()) and + ( + thisMajor < otherMajor + or + thisMajor = otherMajor and + thisMinor < otherMinor + ) + or + not exists(this.getVersion().getPatch()) and + thisMajor < otherMajor + ) + // if the comparator is > or >=, it has no upper bound and therefore isn't guaranteed to be before any other version. + } + } + + /** + * A version number in a version constraint. For example, in the following code + * + * ```rb + * gem "json", ">= 3.4.5" + * ``` + * + * The version is `3.4.5`. + */ + private class Version extends string { + string normalized; + + Version() { + this = any(Gem c).getAVersionConstraint().getVersionString() and + normalized = normalizeSemver(this) + } + + /** + * Holds if this version is strictly before the version defined by `other`. + */ + bindingset[other] + predicate before(string other) { normalized < normalizeSemver(other) } + + /** + * Holds if this versino is equal to the version defined by `other`. + */ + bindingset[other] + predicate equal(string other) { normalized = normalizeSemver(other) } + + /** + * Holds if this version is strictly after the version defined by `other`. + */ + bindingset[other] + predicate after(string other) { normalized > normalizeSemver(other) } + + /** + * Holds if this version defines a patch number. + */ + predicate hasPatch() { exists(getPatch(this)) } + + /** + * Gets the major number of this version. + */ + int getMajor() { result = getMajor(normalized).toInt() } + + /** + * Gets the minor number of this version, if it exists. + */ + int getMinor() { result = getMinor(normalized).toInt() } + + /** + * Gets the patch number of this version, if it exists. + */ + int getPatch() { result = getPatch(normalized).toInt() } + } + + /** + * Normalizes a SemVer string such that the lexicographical ordering + * of two normalized strings is consistent with the SemVer ordering. + * + * Pre-release information and build metadata is not supported. + */ + bindingset[orig] + private predicate normalizeSemver( + string orig, string normalized, string major, string minor, string patch + ) { + major = getMajor(orig) and + ( + minor = getMinor(orig) + or + not exists(getMinor(orig)) and minor = "0" + ) and + ( + patch = getPatch(orig) + or + not exists(getPatch(orig)) and patch = "0" + ) and + normalized = leftPad(major) + "." + leftPad(minor) + "." + leftPad(patch) + } + + bindingset[orig] + private string normalizeSemver(string orig) { normalizeSemver(orig, result, _, _, _) } + + bindingset[s] + private string getMajor(string s) { result = s.regexpCapture("(\\d+).*", 1) } + + bindingset[s] + private string getMinor(string s) { result = s.regexpCapture("(\\d+)\\.(\\d+).*", 2) } + + bindingset[s] + private string getPatch(string s) { result = s.regexpCapture("(\\d+)\\.(\\d+)\\.(\\d+).*", 3) } + + bindingset[str] + private string leftPad(string str) { result = ("000" + str).suffix(str.length()) } +} diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql index 235798e66d4e..8bbb8d79116b 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql @@ -14,6 +14,7 @@ import codeql.ruby.AST import codeql.ruby.Concepts import codeql.ruby.frameworks.ActionController +import codeql.ruby.frameworks.Gemfile /** * Holds if a call to `protect_from_forgery` is made in the controller class `definedIn`, @@ -26,6 +27,23 @@ private predicate protectFromForgeryCall( definedIn.getSelf().flowsTo(call.getReceiver()) and child = definedIn.getADescendent() } +/** + * Holds if the Gemfile for this application specifies a version of "rails" < 3.0.0. + * Rails versions from 3.0.0 onwards enable CSRF protection by default. + */ +private predicate railsPreVersion3() { + exists(Gemfile::Gem g | g.getName() = "rails" and g.getAVersionConstraint().before("5.2")) +} + from ActionControllerClass c -where not protectFromForgeryCall(_, c, _) +where + not protectFromForgeryCall(_, c, _) and + // Rails versions prior to 3.0.0 require CSRF protection to be explicitly enabled. + // For later versions, there must exist a call to `csrf_meta_tags` in every HTML response. + // We currently just check for a call to this method anywhere in the codebase. + ( + railsPreVersion3() + or + not any(MethodCall m).getMethodName() = "csrf_meta_tags" + ) select c, "Potential CSRF vulnerability due to forgery protection not being enabled." From f19a5a9837a87085be8b26680541fe6dddddd9ad Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 10 Oct 2023 12:06:51 +0100 Subject: [PATCH 012/731] Ruby: Add tests for Gemfile modeling --- .../library-tests/frameworks/gemfile/Gemfile | 9 +++++++++ .../frameworks/gemfile/Gemfile.expected | 8 ++++++++ .../library-tests/frameworks/gemfile/Gemfile.ql | 17 +++++++++++++++++ .../frameworks/gemfile/not_gemfile.rb | 1 + 4 files changed, 35 insertions(+) create mode 100644 ruby/ql/test/library-tests/frameworks/gemfile/Gemfile create mode 100644 ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.expected create mode 100644 ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.ql create mode 100644 ruby/ql/test/library-tests/frameworks/gemfile/not_gemfile.rb diff --git a/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile b/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile new file mode 100644 index 000000000000..2e3f2313bfb5 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile @@ -0,0 +1,9 @@ +source "https://rubygems.org" + +gem "rails", "7.0.0" +gem "json", "~> 2.6.0" +gem "jwt" + +gem "loofah", ">= 2" + +gem "invalid-version", "abc" diff --git a/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.expected b/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.expected new file mode 100644 index 000000000000..9d87e77087e4 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.expected @@ -0,0 +1,8 @@ +gemCalls +| Gemfile:3:1:3:20 | call to gem | rails | 7.0.0 | 7.0.0 | +| Gemfile:4:1:4:22 | call to gem | json | ~> 2.6.0 | 2.6.0 | +| Gemfile:7:1:7:20 | call to gem | loofah | >= 2 | 2 | +versionBefore +| 2 | 2.6.0 | +| 2 | 7.0.0 | +| 2.6.0 | 7.0.0 | diff --git a/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.ql b/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.ql new file mode 100644 index 000000000000..487d224777b9 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/gemfile/Gemfile.ql @@ -0,0 +1,17 @@ +import codeql.ruby.frameworks.Gemfile + +query predicate gemCalls( + Gemfile::Gem gem, string name, Gemfile::VersionConstraint constraint, string version +) { + name = gem.getName() and + constraint = gem.getAVersionConstraint() and + version = constraint.getVersion() +} + +query predicate versionBefore(string before, string after) { + exists(Gemfile::VersionConstraint c1, Gemfile::VersionConstraint c2 | + c1.getVersion() = before and c2.getVersion() = after + | + c1.getVersion().before(after) + ) +} diff --git a/ruby/ql/test/library-tests/frameworks/gemfile/not_gemfile.rb b/ruby/ql/test/library-tests/frameworks/gemfile/not_gemfile.rb new file mode 100644 index 000000000000..a526277026c3 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/gemfile/not_gemfile.rb @@ -0,0 +1 @@ +gem "this-gem-not-in-gemfile", "1.2" From 0597b2ed1b3b77bcb266a957d074bdcfce82e24b Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 10 Oct 2023 12:13:59 +0100 Subject: [PATCH 013/731] Ruby: recognise csrf_meta_tag csrf_meta_tag is an alias for csrf_meta_tags, retained for backwards compatibility. --- .../ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql index 8bbb8d79116b..cd7961d2f9a0 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql @@ -44,6 +44,6 @@ where ( railsPreVersion3() or - not any(MethodCall m).getMethodName() = "csrf_meta_tags" + not any(MethodCall m).getMethodName() = ["csrf_meta_tags", "csrf_meta_tag"] ) select c, "Potential CSRF vulnerability due to forgery protection not being enabled." From 3499d169f9173223fa3be5f7e7227baa423e0473 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 10 Oct 2023 12:20:23 +0100 Subject: [PATCH 014/731] Ruby: Add missing QLDoc --- ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll b/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll index 526e8cea7365..c71a783387f7 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll @@ -1,3 +1,7 @@ +/** + * Provides classes and predicates for Gemfiles, including version constraint logic. + */ + private import codeql.ruby.AST /** @@ -19,6 +23,9 @@ module Gemfile { class Gem extends MethodCall { Gem() { this.getMethodName() = "gem" and this.getFile() = getGemfile() } + /** + * Gets the name of the gem in this version constraint. + */ string getName() { result = this.getArgument(0).getConstantValue().getStringlikeValue() } /** @@ -86,6 +93,10 @@ module Gemfile { ) } + /** + * A version constraint in a `gem` call. This consists of a version number and an optional comparator, for example + * `>= 1.2.3`. + */ class VersionConstraint extends string { Comparator comp; string versionString; From 1fbf177b546a1bb73178be73757e2eb352566c08 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 10 Oct 2023 12:21:34 +0100 Subject: [PATCH 015/731] Ruby: QLDoc fix --- ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll b/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll index c71a783387f7..83ebc27100a8 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/Gemfile.qll @@ -61,7 +61,7 @@ module Gemfile { string toString() { result = this.toSourceString() } /** - * The representation of the comparator in source code. + * Gets the representation of the comparator in source code. * This is defined separately so that we can change the `toString` implementation without breaking `parseConstraint`. */ string toSourceString() { From 32b775fdc36c2cf39daf3737fe5fadc74f3cf5eb Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 10 Oct 2023 15:37:32 +0100 Subject: [PATCH 016/731] Ruby: reduce duplicate alerts for csrf query Only generate an alert on the top-most vulnerable Rails controller in the controller tree. --- .../queries/security/cwe-352/CSRFProtectionNotEnabled.ql | 6 ++++-- .../security/cwe-352/CSRFProtectionNotEnabled.expected | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql index cd7961d2f9a0..f3631eb45560 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql @@ -18,7 +18,7 @@ import codeql.ruby.frameworks.Gemfile /** * Holds if a call to `protect_from_forgery` is made in the controller class `definedIn`, - * which is inherited by the controller class `child`. + * which is inherited by the controller class `child`. These classes may be the same. */ private predicate protectFromForgeryCall( ActionControllerClass definedIn, ActionControllerClass child, @@ -45,5 +45,7 @@ where railsPreVersion3() or not any(MethodCall m).getMethodName() = ["csrf_meta_tags", "csrf_meta_tag"] - ) + ) and + // Only generate alerts for the topmost controller in the tree. + not exists(ActionControllerClass parent | c = parent.getAnImmediateDescendent()) select c, "Potential CSRF vulnerability due to forgery protection not being enabled." diff --git a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected index 52e2b1aaa4b8..50da7dc07668 100644 --- a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected +++ b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionNotEnabled.expected @@ -1,2 +1 @@ | railsapp/app/controllers/alternative_root_controller.rb:1:1:3:3 | AlternativeRootController | Potential CSRF vulnerability due to forgery protection not being enabled. | -| railsapp/app/controllers/tags_controller.rb:1:1:2:3 | TagsController | Potential CSRF vulnerability due to forgery protection not being enabled. | From 3ee425cc477d70382634dd6aedab98dd0dee3351 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Fri, 13 Oct 2023 11:52:39 +0100 Subject: [PATCH 017/731] Ruby: Identify ActionController::API `ActionController::API < ActionController::Base` is a base controller class, so we should recognise it as such. --- ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index 5500eca06079..adeaf79fe17f 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -100,11 +100,11 @@ private DataFlow::ConstRef actionControllerBaseClass() { // In Rails applications `ApplicationController` typically extends `ActionController::Base`, but we // treat it separately in case the `ApplicationController` definition is not in the database. DataFlow::getConstant("ActionController").getConstant("Base"), - // ActionController::Metal technically doesn't contain all of the + // ActionController::Metal and ActionController::API technically don't contain all of the // methods available in Base, such as those for rendering views. - // However we prefer to be over-sensitive in this case in order to find - // more results. - DataFlow::getConstant("ActionController").getConstant("Metal") + // However we prefer to be over-sensitive in this case in order to find more results. + DataFlow::getConstant("ActionController").getConstant("Metal"), + DataFlow::getConstant("ActionController").getConstant("API") ] } From 081c1201edd177cbfa7d049e99db823210fc8784 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 17 Oct 2023 12:36:28 +0100 Subject: [PATCH 018/731] Ruby: Make csrf query more specific CSRF protection only needs to be explicitly enabled on Rails applications < 5.2 _or_ those that don't include a `load_defaults` call with a version >= 5.2. --- .../cwe-352/CSRFProtectionNotEnabled.ql | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql index f3631eb45560..bef764a61046 100644 --- a/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql +++ b/ruby/ql/src/queries/security/cwe-352/CSRFProtectionNotEnabled.ql @@ -15,6 +15,7 @@ import codeql.ruby.AST import codeql.ruby.Concepts import codeql.ruby.frameworks.ActionController import codeql.ruby.frameworks.Gemfile +import codeql.ruby.DataFlow /** * Holds if a call to `protect_from_forgery` is made in the controller class `definedIn`, @@ -28,23 +29,39 @@ private predicate protectFromForgeryCall( } /** - * Holds if the Gemfile for this application specifies a version of "rails" < 3.0.0. - * Rails versions from 3.0.0 onwards enable CSRF protection by default. + * Holds if the Gemfile for this application specifies a version of "rails" or "actionpack" < 5.2. + * Rails versions prior to 5.2 do not enable CSRF protection by default. */ -private predicate railsPreVersion3() { - exists(Gemfile::Gem g | g.getName() = "rails" and g.getAVersionConstraint().before("5.2")) +private predicate railsPreVersion5_2() { + exists(Gemfile::Gem g | + g.getName() = ["rails", "actionpack"] and g.getAVersionConstraint().before("5.2") + ) +} + +private float getRailsConfigDefaultVersion() { + exists(DataFlow::CallNode config, DataFlow::CallNode loadDefaultsCall | + DataFlow::getConstant("Rails") + .getConstant("Application") + .getADescendentModule() + .getAnImmediateReference() + .flowsTo(config.getReceiver()) and + config.getMethodName() = "config" and + loadDefaultsCall.getReceiver() = config and + loadDefaultsCall.getMethodName() = "load_defaults" and + result = loadDefaultsCall.getArgument(0).getConstantValue().getFloat() + ) } from ActionControllerClass c where not protectFromForgeryCall(_, c, _) and - // Rails versions prior to 3.0.0 require CSRF protection to be explicitly enabled. - // For later versions, there must exist a call to `csrf_meta_tags` in every HTML response. - // We currently just check for a call to this method anywhere in the codebase. ( - railsPreVersion3() + // Rails versions prior to 5.2 require CSRF protection to be explicitly enabled. + railsPreVersion5_2() or - not any(MethodCall m).getMethodName() = ["csrf_meta_tags", "csrf_meta_tag"] + // For Rails >= 5.2, CSRF protection is enabled by default if there is a `load_defaults` call in the root application class + // which specifies a version >= 5.2. + not getRailsConfigDefaultVersion() >= 5.2 ) and // Only generate alerts for the topmost controller in the tree. not exists(ActionControllerClass parent | c = parent.getAnImmediateDescendent()) From 7b3f1a098204388cc7915f7ed35d13fbecbbf804 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Fri, 23 Feb 2024 11:14:52 +0000 Subject: [PATCH 019/731] Ruby: fix comment --- ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index adeaf79fe17f..6fde1705018a 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -67,6 +67,8 @@ module ActionController { */ class ActionControllerClass extends DataFlow::ClassNode { ActionControllerClass() { + // In Rails applications `ApplicationController` typically extends `ActionController::Base`, but we + // treat it separately in case the `ApplicationController` definition is not in the database. this = DataFlow::getConstant("ApplicationController").getADescendentModule() or this = actionControllerBaseClass().getADescendentModule() and @@ -97,8 +99,6 @@ class ActionControllerClass extends DataFlow::ClassNode { private DataFlow::ConstRef actionControllerBaseClass() { result = [ - // In Rails applications `ApplicationController` typically extends `ActionController::Base`, but we - // treat it separately in case the `ApplicationController` definition is not in the database. DataFlow::getConstant("ActionController").getConstant("Base"), // ActionController::Metal and ActionController::API technically don't contain all of the // methods available in Base, such as those for rendering views. From f5be4079896f13f3b370734ed41cf1a91ce76564 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Fri, 23 Feb 2024 11:26:53 +0000 Subject: [PATCH 020/731] Ruby: deprecate old ProtectFromForgeryCall class --- ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index 6fde1705018a..c8667b2b2f23 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -441,6 +441,11 @@ class ActionControllerSkipForgeryProtectionCall extends CsrfProtectionSetting::R override boolean getVerificationSetting() { result = false } } +/** + * DEPRECATED: Use `ActionController::ProtectFromForgeryCall` instead. + */ +deprecated class ActionControllerProtectFromForgeryCall = ActionController::ProtectFromForgeryCall; + /** * A call to `send_file`, which sends the file at the given path to the client. */ From 083f56921c8c4adced9e7e8ce2c945b1848dcd50 Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Sun, 25 Feb 2024 21:20:41 +0100 Subject: [PATCH 021/731] update to 5.4.1-rc --- javascript/extractor/lib/typescript/package-lock.json | 8 ++++---- javascript/extractor/lib/typescript/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/extractor/lib/typescript/package-lock.json b/javascript/extractor/lib/typescript/package-lock.json index fd672bf43c08..af309c3b4511 100644 --- a/javascript/extractor/lib/typescript/package-lock.json +++ b/javascript/extractor/lib/typescript/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "typescript-parser-wrapper", "dependencies": { - "typescript": "5.4.0-beta" + "typescript": "5.4.1-rc" }, "devDependencies": { "@types/node": "18.15.3" @@ -20,9 +20,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.4.0-beta", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.0-beta.tgz", - "integrity": "sha512-KgekV5JS7TQ7Bb8eO64QGxdM7MSBUUXOXq28OWX23d2MA8SiVtNYoo4s33tCTEGV8+6AGBRD2+KiXNNnexRRYw==", + "version": "5.4.1-rc", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.1-rc.tgz", + "integrity": "sha512-gInURzaO0bbfzfQAc3mfcHxh8qev+No4QOFUZHajo9vBgOLaljELJ3wuzyoGo/zHIzMSezdhtrsRdqL6E9SvNA==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json index 2a636c3cdf32..6a315fed2927 100644 --- a/javascript/extractor/lib/typescript/package.json +++ b/javascript/extractor/lib/typescript/package.json @@ -2,7 +2,7 @@ "name": "typescript-parser-wrapper", "private": true, "dependencies": { - "typescript": "5.4.0-beta" + "typescript": "5.4.1-rc" }, "scripts": { "build": "tsc --project tsconfig.json", From dd092fd18f2778645896b5c2a557ccfbdd884601 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 26 Feb 2024 10:02:56 +0000 Subject: [PATCH 022/731] Ruby: Fix CSRF test --- .../security/cwe-352/CSRFProtectionDisabled.expected | 2 +- .../security/cwe-352/railsapp/config/application.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionDisabled.expected b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionDisabled.expected index d80c52afc669..be0df7c9da7a 100644 --- a/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionDisabled.expected +++ b/ruby/ql/test/query-tests/security/cwe-352/CSRFProtectionDisabled.expected @@ -1,5 +1,5 @@ | railsapp/app/controllers/application_controller.rb:5:3:5:22 | call to protect_from_forgery | Potential CSRF vulnerability due to forgery protection being disabled or weakened. | | railsapp/app/controllers/users_controller.rb:4:3:4:47 | call to skip_before_action | Potential CSRF vulnerability due to forgery protection being disabled or weakened. | -| railsapp/config/application.rb:15:5:15:53 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. | +| railsapp/config/application.rb:16:5:16:53 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. | | railsapp/config/environments/development.rb:5:3:5:51 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. | | railsapp/config/environments/production.rb:5:3:5:51 | call to allow_forgery_protection= | Potential CSRF vulnerability due to forgery protection being disabled or weakened. | diff --git a/ruby/ql/test/query-tests/security/cwe-352/railsapp/config/application.rb b/ruby/ql/test/query-tests/security/cwe-352/railsapp/config/application.rb index 49ccf578c5eb..02b349a16304 100644 --- a/ruby/ql/test/query-tests/security/cwe-352/railsapp/config/application.rb +++ b/ruby/ql/test/query-tests/security/cwe-352/railsapp/config/application.rb @@ -9,7 +9,8 @@ module Railsapp class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. - config.load_defaults 6.0 + # This defaults version does NOT enable CSRF protection by default. + config.load_defaults 5.1 # BAD: Disabling forgery protection may open the application to CSRF attacks config.action_controller.allow_forgery_protection = false From a03c06802e7f08baadf6796dc19a968cd72fdc67 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 6 Feb 2024 09:34:20 +0000 Subject: [PATCH 023/731] Ruby: Add some more command injection sinks --- ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll | 10 ++++++++-- ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll | 8 +++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll index 96568e74902a..2aa46ab550ab 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll @@ -130,13 +130,19 @@ module Kernel { * `Kernel.spawn` takes the same argument forms as `Kernel.system`. * See `KernelSystemCall` for details. * Ruby documentation: https://docs.ruby-lang.org/en/3.0.0/Kernel.html#method-i-spawn + * Methods with the same effect exist in the `Process` and `PTY` classes, so they are also modeled here. * TODO: document and handle the env and option arguments. * ``` * spawn([env,] command... [,options]) -> pid * ``` */ - class KernelSpawnCall extends SystemCommandExecution::Range instanceof KernelMethodCall { - KernelSpawnCall() { this.getMethodName() = "spawn" } + class KernelSpawnCall extends SystemCommandExecution::Range instanceof DataFlow::CallNode { + KernelSpawnCall() { + this.getMethodName() = "spawn" and + this instanceof KernelMethodCall + or + this = DataFlow::getConstant(["Process", "PTY"]).getAMethodCall("spawn") + } override DataFlow::Node getAnArgument() { result = super.getArgument(_) } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll index e65f30055038..5f349c451f33 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll @@ -7,7 +7,7 @@ private import codeql.ruby.ApiGraphs private import codeql.ruby.Concepts /** - * Provides modeling for the `Open3` library. + * Provides modeling for the `Open3` and `Open4` libraries. */ module Open3 { /** @@ -18,8 +18,10 @@ module Open3 { class Open3Call extends SystemCommandExecution::Range instanceof DataFlow::CallNode { Open3Call() { this = - API::getTopLevelMember("Open3") - .getAMethodCall(["popen3", "popen2", "popen2e", "capture3", "capture2", "capture2e"]) + API::getTopLevelMember(["Open3", "Open4"]) + .getAMethodCall([ + "popen3", "popen2", "popen2e", "capture3", "capture2", "capture2e", "popen4" + ]) } override DataFlow::Node getAnArgument() { result = super.getArgument(_) } From beef9965cc48174538cc8346fa056ca5fdec5c22 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 26 Feb 2024 10:35:08 +0000 Subject: [PATCH 024/731] Ruby: Model Open4 library Also remove duplicate modeling of Process.spawn. --- .../codeql/ruby/frameworks/core/Kernel.qll | 3 --- .../codeql/ruby/frameworks/stdlib/Open3.qll | 19 +++++++++++++++---- .../frameworks/stdlib/Open3.expected | 4 ++++ .../library-tests/frameworks/stdlib/Open3.ql | 2 ++ .../library-tests/frameworks/stdlib/Open3.rb | 6 +++++- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll index 2aa46ab550ab..cc3ce9feb973 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll @@ -130,7 +130,6 @@ module Kernel { * `Kernel.spawn` takes the same argument forms as `Kernel.system`. * See `KernelSystemCall` for details. * Ruby documentation: https://docs.ruby-lang.org/en/3.0.0/Kernel.html#method-i-spawn - * Methods with the same effect exist in the `Process` and `PTY` classes, so they are also modeled here. * TODO: document and handle the env and option arguments. * ``` * spawn([env,] command... [,options]) -> pid @@ -140,8 +139,6 @@ module Kernel { KernelSpawnCall() { this.getMethodName() = "spawn" and this instanceof KernelMethodCall - or - this = DataFlow::getConstant(["Process", "PTY"]).getAMethodCall("spawn") } override DataFlow::Node getAnArgument() { result = super.getArgument(_) } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll index 5f349c451f33..f2eb16d2aa89 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll @@ -18,10 +18,8 @@ module Open3 { class Open3Call extends SystemCommandExecution::Range instanceof DataFlow::CallNode { Open3Call() { this = - API::getTopLevelMember(["Open3", "Open4"]) - .getAMethodCall([ - "popen3", "popen2", "popen2e", "capture3", "capture2", "capture2e", "popen4" - ]) + API::getTopLevelMember("Open3") + .getAMethodCall(["popen3", "popen2", "popen2e", "capture3", "capture2", "capture2e"]) } override DataFlow::Node getAnArgument() { result = super.getArgument(_) } @@ -33,6 +31,19 @@ module Open3 { } } + class Open4Call extends SystemCommandExecution::Range instanceof DataFlow::CallNode { + Open4Call() { + this = API::getTopLevelMember("Open4").getAMethodCall(["open4", "popen4", "spawn"]) + } + + override DataFlow::Node getAnArgument() { result = super.getArgument(_) } + + override predicate isShellInterpreted(DataFlow::Node arg) { + super.getNumberOfArguments() = 1 and + arg = this.getAnArgument() + } + } + /** * A pipeline of system commands constructed via one of the `Open3` methods. * These methods accept a variable argument list of commands. diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected index a601d199ff6b..48bc6fc27f68 100644 --- a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected +++ b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected @@ -11,3 +11,7 @@ open3PipelineCallExecutions | Open3.rb:9:1:9:40 | call to pipeline_w | | Open3.rb:10:1:10:44 | call to pipeline_start | | Open3.rb:11:1:11:38 | call to pipeline | +open4CallExecutions +| Open3.rb:13:1:13:24 | call to open4 | +| Open3.rb:14:1:14:25 | call to popen4 | +| Open3.rb:15:1:15:23 | call to spawn | diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.ql b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.ql index 8d98734832d8..014573d7010c 100644 --- a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.ql +++ b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.ql @@ -4,3 +4,5 @@ import codeql.ruby.DataFlow query predicate open3CallExecutions(Open3Call c) { any() } query predicate open3PipelineCallExecutions(Open3PipelineCall c) { any() } + +query predicate open4CallExecutions(Open4Call c) { any() } diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb index b1a3d491be11..4a112335ffb7 100644 --- a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb +++ b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb @@ -8,4 +8,8 @@ Open3.pipeline_r("echo foo", "grep bar") Open3.pipeline_w("echo foo", "grep bar") Open3.pipeline_start("echo foo", "grep bar") -Open3.pipeline("echo foo", "grep bar") \ No newline at end of file +Open3.pipeline("echo foo", "grep bar") + +Open4::open4("echo foo") +Open4::popen4("echo foo") +Open4.spawn("echo bar") From d1847566b6b5988254f826a6fd42727308bbddcb Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 26 Feb 2024 10:41:30 +0000 Subject: [PATCH 025/731] Ruby: Ql4QL fix --- ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll | 7 ++----- ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll | 5 +++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll index cc3ce9feb973..96568e74902a 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Kernel.qll @@ -135,11 +135,8 @@ module Kernel { * spawn([env,] command... [,options]) -> pid * ``` */ - class KernelSpawnCall extends SystemCommandExecution::Range instanceof DataFlow::CallNode { - KernelSpawnCall() { - this.getMethodName() = "spawn" and - this instanceof KernelMethodCall - } + class KernelSpawnCall extends SystemCommandExecution::Range instanceof KernelMethodCall { + KernelSpawnCall() { this.getMethodName() = "spawn" } override DataFlow::Node getAnArgument() { result = super.getArgument(_) } diff --git a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll index f2eb16d2aa89..16b9ecc37978 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll @@ -31,6 +31,11 @@ module Open3 { } } + /** + * A system command executed via one of the `Open4` methods. + * These methods take the same argument forms as `Kernel.system`. + * See `KernelSystemCall` for details. + */ class Open4Call extends SystemCommandExecution::Range instanceof DataFlow::CallNode { Open4Call() { this = API::getTopLevelMember("Open4").getAMethodCall(["open4", "popen4", "spawn"]) From 9d13a1ff515b86bd84e3897335734736ad7354e3 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 26 Feb 2024 10:43:48 +0000 Subject: [PATCH 026/731] Ruby: Add model for Process.spawn --- .../codeql/ruby/frameworks/stdlib/Process.qll | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll diff --git a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll new file mode 100644 index 000000000000..1ffc15d691b8 --- /dev/null +++ b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll @@ -0,0 +1,35 @@ +/** + * Provides modeling for the `Process` library. + */ + +private import codeql.ruby.Concepts +private import codeql.ruby.DataFlow +private import codeql.ruby.controlflow.CfgNodes +private import codeql.ruby.frameworks.core.Kernel + +/** + * Provides modeling for the `Process` library. + */ +module Process { + /** + * A call to `Process.spawn`. + * ```rb + * Process.spawn("tar xf ruby-2.0.0-p195.tar.bz2") + * Process.spawn({"ENV" => "VAR"}, "echo", "hi") + * ``` + */ + class SpawnCall extends SystemCommandExecution::Range instanceof DataFlow::CallNode { + SpawnCall() { this = DataFlow::getConstant(["Process", "PTY"]).getAMethodCall("spawn") } + + // The command can be argument 0 or 1 + // Options can be specified after the command, and we want to exclude those. + override DataFlow::Node getAnArgument() { + result = super.getArgument([0, 1]) and not result.asExpr() instanceof ExprNodes::PairCfgNode + } + + override predicate isShellInterpreted(DataFlow::Node arg) { + // Process.spawn invokes a subshell if you provide a single string as argument + super.getNumberOfArguments() = 1 and arg = this.getAnArgument() + } + } +} From 8bed3fbed442ecdfee770b494d6a188f71025aa1 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Mon, 26 Feb 2024 10:57:17 +0000 Subject: [PATCH 027/731] Ruby: Add basic model for Terrapin library --- .../codeql/ruby/frameworks/terrapin/model.yml | 41 +++++++++++++++++++ .../CommandInjection.expected | 10 +++++ .../CommandInjection/CommandInjection.rb | 11 ++++- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 ruby/ql/lib/codeql/ruby/frameworks/terrapin/model.yml diff --git a/ruby/ql/lib/codeql/ruby/frameworks/terrapin/model.yml b/ruby/ql/lib/codeql/ruby/frameworks/terrapin/model.yml new file mode 100644 index 000000000000..c111ca5efbc5 --- /dev/null +++ b/ruby/ql/lib/codeql/ruby/frameworks/terrapin/model.yml @@ -0,0 +1,41 @@ +extensions: + - addsTo: + pack: codeql/ruby-all + extensible: sourceModel + data: [] + + - addsTo: + pack: codeql/ruby-all + extensible: sinkModel + data: + - ["Terrapin::CommandLine!","Method[new].Argument[0]","command-injection"] + - ["Terrapin::CommandLine!","Method[new].Argument[1]","command-injection"] + + - addsTo: + pack: codeql/ruby-all + extensible: summaryModel + data: + - ["Terrapin::CommandLine::Output!","Method[new]","Argument[1]","ReturnValue","value"] + - ["Terrapin::CommandLine!","Method[path=]","Argument[0]","ReturnValue","taint"] + - ["Terrapin::CommandLine!","Method[new]","Argument[2]","ReturnValue","taint"] + + - addsTo: + pack: codeql/ruby-all + extensible: neutralModel + data: [] + + - addsTo: + pack: codeql/ruby-all + extensible: typeModel + data: + - ["Terrapin::CommandLine::Output","Terrapin::CommandLine::MultiPipe","Method[output].ReturnValue"] + - ["Terrapin::CommandLine::Output","Terrapin::CommandLine::FakeRunner","Method[call].ReturnValue"] + - ["Terrapin::CommandLine::Output","Terrapin::CommandLine::ProcessRunner","Method[call].ReturnValue"] + - ["Terrapin::CommandLine::Output","Terrapin::CommandLine!","Method[runner].ReturnValue.ReturnValue"] + - ["Terrapin::CommandLine::FakeRunner","Terrapin::CommandLine!","Method[runner].ReturnValue"] + - ["Terrapin::CommandLine::Output","Terrapin::CommandLine!","Method[fake!].ReturnValue.ReturnValue"] + - ["Terrapin::CommandLine::FakeRunner","Terrapin::CommandLine!","Method[fake!].ReturnValue"] + - ["Terrapin::CommandLine::Output","Terrapin::CommandLine","Method[output].ReturnValue"] + - ["Terrapin::CommandLineError","Terrapin::CommandNotFoundError",""] + - ["Terrapin::CommandLineError","Terrapin::ExitStatusError",""] + - ["Terrapin::CommandLineError","Terrapin::InterpolationError",""] diff --git a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected index be4473409b78..0ca6e123e7b9 100644 --- a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.expected @@ -21,6 +21,9 @@ edges | CommandInjection.rb:103:9:103:12 | file | CommandInjection.rb:104:16:104:28 | "cat #{...}" | provenance | | | CommandInjection.rb:103:16:103:21 | call to params | CommandInjection.rb:103:16:103:28 | ...[...] | provenance | | | CommandInjection.rb:103:16:103:28 | ...[...] | CommandInjection.rb:103:9:103:12 | file | provenance | | +| CommandInjection.rb:111:33:111:38 | call to params | CommandInjection.rb:111:33:111:44 | ...[...] | provenance | | +| CommandInjection.rb:113:44:113:49 | call to params | CommandInjection.rb:113:44:113:54 | ...[...] | provenance | | +| CommandInjection.rb:113:44:113:54 | ...[...] | CommandInjection.rb:113:41:113:56 | "#{...}" | provenance | | nodes | CommandInjection.rb:6:9:6:11 | cmd | semmle.label | cmd | | CommandInjection.rb:6:15:6:20 | call to params | semmle.label | call to params | @@ -51,6 +54,11 @@ nodes | CommandInjection.rb:103:16:103:21 | call to params | semmle.label | call to params | | CommandInjection.rb:103:16:103:28 | ...[...] | semmle.label | ...[...] | | CommandInjection.rb:104:16:104:28 | "cat #{...}" | semmle.label | "cat #{...}" | +| CommandInjection.rb:111:33:111:38 | call to params | semmle.label | call to params | +| CommandInjection.rb:111:33:111:44 | ...[...] | semmle.label | ...[...] | +| CommandInjection.rb:113:41:113:56 | "#{...}" | semmle.label | "#{...}" | +| CommandInjection.rb:113:44:113:49 | call to params | semmle.label | call to params | +| CommandInjection.rb:113:44:113:54 | ...[...] | semmle.label | ...[...] | subpaths #select | CommandInjection.rb:7:10:7:15 | #{...} | CommandInjection.rb:6:15:6:20 | call to params | CommandInjection.rb:7:10:7:15 | #{...} | This command depends on a $@. | CommandInjection.rb:6:15:6:20 | call to params | user-provided value | @@ -67,3 +75,5 @@ subpaths | CommandInjection.rb:82:14:82:34 | "echo #{...}" | CommandInjection.rb:81:23:81:33 | blah_number | CommandInjection.rb:82:14:82:34 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:81:23:81:33 | blah_number | user-provided value | | CommandInjection.rb:91:14:91:39 | "echo #{...}" | CommandInjection.rb:91:22:91:37 | ...[...] | CommandInjection.rb:91:14:91:39 | "echo #{...}" | This command depends on a $@. | CommandInjection.rb:91:22:91:37 | ...[...] | user-provided value | | CommandInjection.rb:104:16:104:28 | "cat #{...}" | CommandInjection.rb:103:16:103:21 | call to params | CommandInjection.rb:104:16:104:28 | "cat #{...}" | This command depends on a $@. | CommandInjection.rb:103:16:103:21 | call to params | user-provided value | +| CommandInjection.rb:111:33:111:44 | ...[...] | CommandInjection.rb:111:33:111:38 | call to params | CommandInjection.rb:111:33:111:44 | ...[...] | This command depends on a $@. | CommandInjection.rb:111:33:111:38 | call to params | user-provided value | +| CommandInjection.rb:113:41:113:56 | "#{...}" | CommandInjection.rb:113:44:113:49 | call to params | CommandInjection.rb:113:41:113:56 | "#{...}" | This command depends on a $@. | CommandInjection.rb:113:44:113:49 | call to params | user-provided value | diff --git a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb index 4be9c95924a0..12c15a30b158 100644 --- a/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb +++ b/ruby/ql/test/query-tests/security/cwe-078/CommandInjection/CommandInjection.rb @@ -106,4 +106,13 @@ def create system("cat #{file.shellescape}") # OK, because file is shell escaped end -end \ No newline at end of file + + def index + Terrapin::CommandLine.new(params[:foo], "bar") # BAD + + Terrapin::CommandLine.new("echo", "#{params[foo]}") # BAD + + cmd = Terrapin::CommandLine.new("echo", ":msg") + cmd.run(msg: params[:foo]) # GOOD + end +end From 3eb9491cb4e44659ddcbeed635bf6961eb49fef0 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Mon, 26 Feb 2024 17:18:40 +0100 Subject: [PATCH 028/731] python: rewrite `HardcodedCredentials` away from `PointsTo` - `ModuleValue.attr` and `ClassValue.lookup` are approximated by `Function.getName` - `ClassValue.getName` is apprximated by `Class.getName` - `Module::named` is approximated by `Module.getName` - `Value::named` is approximated by `Builtins::likelyBuiltin` - `FunctionValue.getNamedArgumentForCall` is approximated by `ArgumentNode.argumentOf` --- .../src/Security/CWE-798/HardcodedCredentials.ql | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/python/ql/src/Security/CWE-798/HardcodedCredentials.ql b/python/ql/src/Security/CWE-798/HardcodedCredentials.ql index 0a92427ec230..04197b136103 100644 --- a/python/ql/src/Security/CWE-798/HardcodedCredentials.ql +++ b/python/ql/src/Security/CWE-798/HardcodedCredentials.ql @@ -16,6 +16,8 @@ import python import semmle.python.dataflow.new.DataFlow import semmle.python.dataflow.new.TaintTracking import semmle.python.filters.Tests +private import semmle.python.dataflow.new.internal.DataFlowDispatch as DataFlowDispatch +private import semmle.python.dataflow.new.internal.Builtins::Builtins as Builtins bindingset[char, fraction] predicate fewer_characters_than(StrConst str, string char, float fraction) { @@ -30,15 +32,13 @@ predicate fewer_characters_than(StrConst str, string char, float fraction) { } predicate possible_reflective_name(string name) { - exists(any(ModuleValue m).attr(name)) + any(Function f).getName() = name or - exists(any(ClassValue c).lookup(name)) + any(Class c).getName() = name or - any(ClassValue c).getName() = name + any(Module m).getName() = name or - exists(Module::named(name)) - or - exists(Value::named(name)) + exists(Builtins::likelyBuiltin(name)) } int char_count(StrConst str) { result = count(string c | c = str.getText().charAt(_)) } @@ -84,7 +84,9 @@ class CredentialSink extends DataFlow::Node { name.regexpMatch(getACredentialRegex()) and not name.matches("%file") | - any(FunctionValue func).getNamedArgumentForCall(_, name) = this.asCfgNode() + exists(DataFlowDispatch::ArgumentPosition pos | pos.isKeyword(name) | + this.(DataFlow::ArgumentNode).argumentOf(_, pos) + ) or exists(Keyword k | k.getArg() = name and k.getValue().getAFlowNode() = this.asCfgNode()) or From 9ec17e6338c23a8189334c9082a6f9882f7c7027 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 26 Feb 2024 12:40:40 +0000 Subject: [PATCH 029/731] Shared: Pull out the shared parts of Java's type flow library into a shared module. --- shared/typeflow/codeql/typeflow/TypeFlow.qll | 118 +++++ .../codeql/typeflow/internal/TypeFlowImpl.qll | 445 ++++++++++++++++++ shared/typeflow/qlpack.yml | 7 + 3 files changed, 570 insertions(+) create mode 100644 shared/typeflow/codeql/typeflow/TypeFlow.qll create mode 100644 shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll create mode 100644 shared/typeflow/qlpack.yml diff --git a/shared/typeflow/codeql/typeflow/TypeFlow.qll b/shared/typeflow/codeql/typeflow/TypeFlow.qll new file mode 100644 index 000000000000..5df8e53a914b --- /dev/null +++ b/shared/typeflow/codeql/typeflow/TypeFlow.qll @@ -0,0 +1,118 @@ +/** + * Provides predicates for giving improved type bounds on expressions. + * + * An inferred bound on the runtime type of an expression can be either exact + * or merely an upper bound. Bounds are only reported if they are likely to be + * better than the static bound, which can happen either if an inferred exact + * type has a subtype or if an inferred upper bound passed through at least one + * explicit or implicit cast that lost type information. + */ + +/** Provides the input specification. */ +signature module TypeFlowInput { + /** + * A node for which type information is available. For example, expressions + * and method declarations. + */ + class TypeFlowNode { + /** Gets a textual representation of this node. */ + string toString(); + + /** Gets the type of this node. */ + Type getType(); + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ); + } + + /** + * Holds if data can flow from `n1` to `n2` in one step, and `n1` is not + * necessarily functionally determined by `n2`. + */ + predicate joinStep0(TypeFlowNode n1, TypeFlowNode n2); + + /** + * Holds if data can flow from `n1` to `n2` in one step, and `n1` is + * functionally determined by `n2`. + */ + predicate step(TypeFlowNode n1, TypeFlowNode n2); + + /** + * Holds if `null` is the only value that flows to `n`. + */ + predicate isNull(TypeFlowNode n); + + /** A type. */ + class Type { + /** Gets a textual representation of this type. */ + string toString(); + + /** Gets a direct super type of this type. */ + Type getASupertype(); + } + + /** + * Gets the source declaration of this type, or `t` if `t` is already a + * source declaration. + */ + default Type getSourceDeclaration(Type t) { result = t } + + /** + * Gets the erased version of this type. The erasure of a erasure of a + * parameterized type is its generic counterpart, or `t` if `t` is already + * fully erased. + */ + default Type getErasure(Type t) { result = t } + + /** Gets a direct or indirect supertype of this type, including itself. */ + default Type getAnAncestor(Type sub) { + result = sub + or + exists(Type mid | result = mid.getASupertype() and sub = getAnAncestor(mid)) + } + + /** + * Holds if `t` is the most precise type of `n`, if any. + */ + predicate exactTypeBase(TypeFlowNode n, Type t); + + /** + * Holds if `n` has type `t` and this information is discarded, such that `t` + * might be a better type bound for nodes where `n` flows to. This might include + * multiple bounds for a single node. + */ + predicate typeFlowBaseCand(TypeFlowNode n, Type t); + + /** + * Holds if `n` is a value that is guarded by a disjunction of a dynamic type + * check that checks if `n` is an instance of type `t_i` where `t` is one of + * those `t_i`. + */ + default predicate instanceofDisjunctionGuarded(TypeFlowNode n, Type t) { none() } + + /** + * Holds if `t` is a raw type or parameterised type with unrestricted type + * arguments. + * + * By default, no types are unbound. + */ + default predicate unbound(Type t) { none() } +} + +private import internal.TypeFlowImpl as Impl + +/** + * Provides an implementation of type-flow using input `I`. + */ +cached +module Make { + import Impl::TypeFlow +} diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll new file mode 100644 index 000000000000..121bc605dbc6 --- /dev/null +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -0,0 +1,445 @@ +private import codeql.typeflow.TypeFlow +private import codeql.util.Unit + +module TypeFlow { + private import I + + /** + * Holds if data can flow from `n1` to `n2` in one step, `n1` is not necessarily + * functionally determined by `n2`, and `n1` might take a non-null value. + */ + predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep0(n1, n2) and not isNull(n1) } + + private predicate anyStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep(n1, n2) or step(n1, n2) } + + private predicate sccEdge(TypeFlowNode n1, TypeFlowNode n2) { + anyStep(n1, n2) and anyStep+(n2, n1) + } + + private module Scc = QlBuiltins::EquivalenceRelation; + + private class TypeFlowScc = Scc::EquivalenceClass; + + /** Holds if `n` is part of an SCC of size 2 or more represented by `scc`. */ + private predicate sccRepr(TypeFlowNode n, TypeFlowScc scc) { scc = Scc::getEquivalenceClass(n) } + + private predicate sccJoinStep(TypeFlowNode n, TypeFlowScc scc) { + exists(TypeFlowNode mid | + joinStep(n, mid) and + sccRepr(mid, scc) and + not sccRepr(n, scc) + ) + } + + private signature class NodeSig; + + private signature module Edge { + class Node; + + predicate edge(TypeFlowNode n1, Node n2); + } + + private signature module RankedEdge { + predicate edgeRank(int r, TypeFlowNode n1, Node n2); + + int lastRank(Node n); + } + + private module RankEdge implements RankedEdge { + private import E + + /** + * Holds if `r` is a ranking of the incoming edges `(n1,n2)` to `n2`. The used + * ordering is not necessarily total, so the ranking may have gaps. + */ + private predicate edgeRank1(int r, TypeFlowNode n1, Node n2) { + n1 = + rank[r](TypeFlowNode n, int startline, int startcolumn | + edge(n, n2) and + n.hasLocationInfo(_, startline, startcolumn, _, _) + | + n order by startline, startcolumn + ) + } + + /** + * Holds if `r2` is a ranking of the ranks from `edgeRank1`. This removes the + * gaps from the ranking. + */ + private predicate edgeRank2(int r2, int r1, Node n) { + r1 = rank[r2](int r | edgeRank1(r, _, n) | r) + } + + /** Holds if `r` is a ranking of the incoming edges `(n1,n2)` to `n2`. */ + predicate edgeRank(int r, TypeFlowNode n1, Node n2) { + exists(int r1 | + edgeRank1(r1, n1, n2) and + edgeRank2(r, r1, n2) + ) + } + + int lastRank(Node n) { result = max(int r | edgeRank(r, _, n)) } + } + + private signature module TypePropagation { + class Typ; + + predicate candType(TypeFlowNode n, Typ t); + + bindingset[t] + predicate supportsType(TypeFlowNode n, Typ t); + } + + /** Implements recursion through `forall` by way of edge ranking. */ + private module ForAll E, TypePropagation T> { + /** + * Holds if `t` is a bound that holds on one of the incoming edges to `n` and + * thus is a candidate bound for `n`. + */ + pragma[nomagic] + private predicate candJoinType(Node n, T::Typ t) { + exists(TypeFlowNode mid | + T::candType(mid, t) and + E::edgeRank(_, mid, n) + ) + } + + /** + * Holds if `t` is a candidate bound for `n` that is also valid for data coming + * through the edges into `n` ranked from `1` to `r`. + */ + private predicate flowJoin(int r, Node n, T::Typ t) { + ( + r = 1 and candJoinType(n, t) + or + flowJoin(r - 1, n, t) and E::edgeRank(r, _, n) + ) and + forall(TypeFlowNode mid | E::edgeRank(r, mid, n) | T::supportsType(mid, t)) + } + + /** + * Holds if `t` is a candidate bound for `n` that is also valid for data + * coming through all the incoming edges, and therefore is a valid bound for + * `n`. + */ + predicate flowJoin(Node n, T::Typ t) { flowJoin(E::lastRank(n), n, t) } + } + + private module JoinStep implements Edge { + class Node = TypeFlowNode; + + predicate edge = joinStep/2; + } + + private module SccJoinStep implements Edge { + class Node = TypeFlowScc; + + predicate edge = sccJoinStep/2; + } + + private module RankedJoinStep = RankEdge; + + private module RankedSccJoinStep = RankEdge; + + private module ExactTypePropagation implements TypePropagation { + class Typ = Type; + + predicate candType = exactType/2; + + predicate supportsType = exactType/2; + } + + /** + * Holds if the runtime type of `n` is exactly `t` and if this bound is a + * non-trivial lower bound, that is, `t` has a subtype. + */ + private predicate exactType(TypeFlowNode n, Type t) { + exactTypeBase(n, t) + or + exists(TypeFlowNode mid | exactType(mid, t) and step(mid, n)) + or + // The following is an optimized version of + // `forex(TypeFlowNode mid | joinStep(mid, n) | exactType(mid, t))` + ForAll::flowJoin(n, t) + or + exists(TypeFlowScc scc | + sccRepr(n, scc) and + // Optimized version of + // `forex(TypeFlowNode mid | sccJoinStep(mid, scc) | exactType(mid, t))` + ForAll::flowJoin(scc, t) + ) + } + + /** + * Gets the source declaration of a direct supertype of this type, excluding itself. + */ + private Type getASourceSupertype(Type t) { + result = getSourceDeclaration(t.getASupertype()) and + result != t + } + + /** + * Holds if `n` has type `t` and this information is discarded, such that `t` + * might be a better type bound for nodes where `n` flows to. This only includes + * the best such bound for each node. + */ + private predicate typeFlowBase(TypeFlowNode n, Type t) { + exists(Type te | + typeFlowBaseCand(n, t) and + te = getErasure(t) and + not exists(Type better | + typeFlowBaseCand(n, better) and + better != t and + not t.getASupertype+() = better + | + better.getASupertype+() = t or + getASourceSupertype+(getErasure(better)) = te + ) + ) + } + + private module TypeFlowPropagation implements TypePropagation { + class Typ = Type; + + predicate candType = typeFlow/2; + + bindingset[t] + predicate supportsType(TypeFlowNode mid, Type t) { + exists(Type midtyp | exactType(mid, midtyp) or typeFlow(mid, midtyp) | + getAnAncestor(pragma[only_bind_out](midtyp)) = t + ) + } + } + + /** + * Holds if the runtime type of `n` is bounded by `t` and if this bound is + * likely to be better than the static type of `n`. + */ + private predicate typeFlow(TypeFlowNode n, Type t) { + typeFlowBase(n, t) + or + exists(TypeFlowNode mid | typeFlow(mid, t) and step(mid, n)) + or + ForAll::flowJoin(n, t) + or + exists(TypeFlowScc scc | + sccRepr(n, scc) and + ForAll::flowJoin(scc, t) + ) + } + + pragma[nomagic] + private predicate erasedTypeBound(Type t) { + exists(Type t0 | typeFlow(_, t0) and t = getErasure(t0)) + } + + pragma[nomagic] + private predicate typeBound(Type t) { typeFlow(_, t) } + + /** + * Gets a direct or indirect supertype of this type. + * This does not include itself, unless this type is part of a cycle + * in the type hierarchy. + */ + Type getAStrictAncestor(Type sub) { result = getAnAncestor(sub.getASupertype()) } + + /** + * Holds if we have a bound for `n` that is better than `t`. + */ + pragma[nomagic] + private predicate irrelevantBound(TypeFlowNode n, Type t) { + exists(Type bound | + typeFlow(n, bound) and + t = getAStrictAncestor(bound) and + typeBound(t) and + typeFlow(n, pragma[only_bind_into](t)) and + not getAnAncestor(t) = bound + or + n.getType() = pragma[only_bind_into](bound) and + typeFlow(n, t) and + t = getAnAncestor(bound) + ) + } + + /** + * Holds if we have a bound for `n` that is better than `t`, taking only erased + * types into account. + */ + pragma[nomagic] + private predicate irrelevantErasedBound(TypeFlowNode n, Type t) { + exists(Type bound | + typeFlow(n, bound) + or + n.getType() = bound and typeFlow(n, _) + | + t = getASourceSupertype+(getErasure(bound)) and + erasedTypeBound(t) + ) + } + + /** + * Holds if the runtime type of `n` is bounded by `t`, if this bound is likely + * to be better than the static type of `n`, and if this the best such bound. + */ + private predicate bestTypeFlow(TypeFlowNode n, Type t) { + typeFlow(n, t) and + not irrelevantErasedBound(n, getErasure(t)) and + not irrelevantBound(n, t) + } + + predicate bestTypeFlow(TypeFlowNode n, Type t, boolean exact) { + exactType(n, t) and exact = true + or + not exactType(n, _) and bestTypeFlow(n, t) and exact = false + } + + private predicate bestTypeFlowOrTypeFlowBase(TypeFlowNode n, Type t, boolean exact) { + bestTypeFlow(n, t, exact) + or + typeFlowBase(n, t) and + exact = false and + not bestTypeFlow(n, _, _) + } + + /** + * Holds if `n` has type `t` and this information is not propagated as a + * universal bound to a subsequent node, such that `t` might form the basis for + * a union type bound for that node. + */ + private predicate unionTypeFlowBaseCand(TypeFlowNode n, Type t, boolean exact) { + exists(TypeFlowNode next | + joinStep(n, next) and + bestTypeFlowOrTypeFlowBase(n, t, exact) and + not bestTypeFlowOrTypeFlowBase(next, t, exact) and + not exactType(next, _) + ) + } + + private module HasUnionTypePropagation implements TypePropagation { + class Typ = Unit; + + predicate candType(TypeFlowNode mid, Unit unit) { + exists(unit) and + (unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid)) + } + + predicate supportsType = candType/2; + } + + /** + * Holds if all incoming type flow can be traced back to a + * `unionTypeFlowBaseCand`, such that we can compute a union type bound for `n`. + * Disregards nodes for which we have an exact bound. + */ + private predicate hasUnionTypeFlow(TypeFlowNode n) { + not exactType(n, _) and + ( + // Optimized version of + // `forex(TypeFlowNode mid | joinStep(mid, n) | unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid))` + ForAll::flowJoin(n, _) + or + exists(TypeFlowScc scc | + sccRepr(n, scc) and + // Optimized version of + // `forex(TypeFlowNode mid | sccJoinStep(mid, scc) | unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid))` + ForAll::flowJoin(scc, _) + ) + or + exists(TypeFlowNode mid | step(mid, n) and hasUnionTypeFlow(mid)) + or + instanceofDisjunctionGuarded(n, _) + ) + } + + pragma[nomagic] + private Type getTypeBound(TypeFlowNode n) { + bestTypeFlow(n, result) + or + not bestTypeFlow(n, _) and result = n.getType() + } + + pragma[nomagic] + private predicate unionTypeFlow0(TypeFlowNode n, Type t, boolean exact) { + hasUnionTypeFlow(n) and + ( + exists(TypeFlowNode mid | anyStep(mid, n) | + unionTypeFlowBaseCand(mid, t, exact) or unionTypeFlow(mid, t, exact) + ) + or + instanceofDisjunctionGuarded(n, t) and exact = false + ) + } + + /** + * Holds if there is a common (reflexive, transitive) subtype of the erased + * types `t1` and `t2`. + */ + private predicate erasedHaveIntersection(Type t1, Type t2) { + exists(Type commonSub | commonSub = getSourceDeclaration(commonSub) | + getASourceSupertype*(commonSub) = t1 and + getASourceSupertype*(commonSub) = t2 + ) and + t1 = getErasure(_) and + t2 = getErasure(_) + } + + /** Holds if we have a union type bound for `n` and `t` is one of its parts. */ + private predicate unionTypeFlow(TypeFlowNode n, Type t, boolean exact) { + unionTypeFlow0(n, t, exact) and + // filter impossible union parts: + exists(Type tErased, Type boundErased | + pragma[only_bind_into](tErased) = getErasure(t) and + pragma[only_bind_into](boundErased) = getErasure(getTypeBound(n)) + | + if exact = true + then getASourceSupertype*(tErased) = boundErased + else erasedHaveIntersection(tErased, boundErased) + ) + } + + /** + * Holds if the inferred union type bound for `n` contains the best universal + * bound and thus is irrelevant. + */ + private predicate irrelevantUnionType(TypeFlowNode n) { + exists(Type t, Type nt, Type te, Type nte | + unionTypeFlow(n, t, false) and + nt = getTypeBound(n) and + te = getErasure(t) and + nte = getErasure(nt) + | + nt.getASupertype*() = t + or + getASourceSupertype+(nte) = te + or + nte = te and unbound(t) + ) + } + + /** + * Holds if `t` is an irrelevant part of the union type bound for `n` due to + * being contained in another part of the union type bound. + */ + private predicate irrelevantUnionTypePart(TypeFlowNode n, Type t, boolean exact) { + unionTypeFlow(n, t, exact) and + not irrelevantUnionType(n) and + exists(Type weaker | + unionTypeFlow(n, weaker, false) and + t.getASupertype*() = weaker + | + exact = true or not weaker.getASupertype*() = t + ) + } + + /** + * Holds if the runtime type of `n` is bounded by a union type and if this + * bound is likely to be better than the static type of `n`. The union type is + * made up of the types `t` related to `n` by this predicate, and the flag + * `exact` indicates whether `t` is an exact bound or merely an upper bound. + */ + predicate bestUnionType(TypeFlowNode n, Type t, boolean exact) { + unionTypeFlow(n, t, exact) and + not irrelevantUnionType(n) and + not irrelevantUnionTypePart(n, t, exact) + } +} diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml new file mode 100644 index 000000000000..6bc23bcd4fc4 --- /dev/null +++ b/shared/typeflow/qlpack.yml @@ -0,0 +1,7 @@ +name: codeql/typeflow +version: 0.0.1-dev +groups: shared +library: true +dependencies: + codeql/util: ${workspace} +warnOnImplicitThis: true \ No newline at end of file From 1d4c889ab87d4a1094b1c912e4e865d6805e089d Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 26 Feb 2024 12:40:56 +0000 Subject: [PATCH 030/731] Java: Use the shared type-flow library. --- java/ql/lib/qlpack.yml | 1 + .../semmle/code/java/dataflow/TypeFlow.qll | 979 ++++++------------ 2 files changed, 295 insertions(+), 685 deletions(-) diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 15b4982d41eb..82701ce60668 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -13,6 +13,7 @@ dependencies: codeql/threat-models: ${workspace} codeql/tutorial: ${workspace} codeql/typetracking: ${workspace} + codeql/typeflow: ${workspace} codeql/util: ${workspace} dataExtensions: - ext/*.model.yml diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index ea0df55d60fb..9a29809f15cc 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -8,747 +8,356 @@ * explicit or implicit cast that lost type information. */ -import java +import java as J private import semmle.code.java.dispatch.VirtualDispatch private import semmle.code.java.dataflow.internal.BaseSSA private import semmle.code.java.controlflow.Guards - -private newtype TTypeFlowNode = - TField(Field f) { not f.getType() instanceof PrimitiveType } or - TSsa(BaseSsaVariable ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or - TExpr(Expr e) or - TMethod(Method m) { not m.getReturnType() instanceof PrimitiveType } - -/** - * A `Field`, `BaseSsaVariable`, `Expr`, or `Method`. - */ -private class TypeFlowNode extends TTypeFlowNode { - string toString() { - result = this.asField().toString() or - result = this.asSsa().toString() or - result = this.asExpr().toString() or - result = this.asMethod().toString() +private import codeql.typeflow.TypeFlow + +private module Input implements TypeFlowInput { + private newtype TTypeFlowNode = + TField(Field f) { not f.getType() instanceof PrimitiveType } or + TSsa(BaseSsaVariable ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or + TExpr(Expr e) or + TMethod(Method m) { not m.getReturnType() instanceof PrimitiveType } + + /** Gets `t` if it is a `RefType` or the boxed type if `t` is a primitive type. */ + private RefType boxIfNeeded(J::Type t) { + t.(J::PrimitiveType).getBoxedType() = result or + result = t } - Location getLocation() { - result = this.asField().getLocation() or - result = this.asSsa().getLocation() or - result = this.asExpr().getLocation() or - result = this.asMethod().getLocation() + /** + * A `Field`, `BaseSsaVariable`, `Expr`, or `Method`. + */ + class TypeFlowNode extends TTypeFlowNode { + string toString() { + result = this.asField().toString() or + result = this.asSsa().toString() or + result = this.asExpr().toString() or + result = this.asMethod().toString() + } + + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + Location getLocation() { + result = this.asField().getLocation() or + result = this.asSsa().getLocation() or + result = this.asExpr().getLocation() or + result = this.asMethod().getLocation() + } + + Field asField() { this = TField(result) } + + BaseSsaVariable asSsa() { this = TSsa(result) } + + Expr asExpr() { this = TExpr(result) } + + Method asMethod() { this = TMethod(result) } + + RefType getType() { + result = this.asField().getType() or + result = this.asSsa().getSourceVariable().getType() or + result = boxIfNeeded(this.asExpr().getType()) or + result = this.asMethod().getReturnType() + } } - Field asField() { this = TField(result) } - - BaseSsaVariable asSsa() { this = TSsa(result) } - - Expr asExpr() { this = TExpr(result) } + class Type = J::RefType; - Method asMethod() { this = TMethod(result) } - - RefType getType() { - result = this.asField().getType() or - result = this.asSsa().getSourceVariable().getType() or - result = boxIfNeeded(this.asExpr().getType()) or - result = this.asMethod().getReturnType() + /** + * Holds if `arg` is an argument for the parameter `p` in a private callable. + */ + private predicate privateParamArg(Parameter p, Argument arg) { + p.getAnArgument() = arg and + p.getCallable().isPrivate() } -} - -/** Gets `t` if it is a `RefType` or the boxed type if `t` is a primitive type. */ -private RefType boxIfNeeded(Type t) { - t.(PrimitiveType).getBoxedType() = result or - result = t -} - -/** - * Holds if `arg` is an argument for the parameter `p` in a private callable. - */ -private predicate privateParamArg(Parameter p, Argument arg) { - p.getAnArgument() = arg and - p.getCallable().isPrivate() -} - -/** - * Holds if data can flow from `n1` to `n2` in one step, and `n1` is not - * necessarily functionally determined by `n2`. - */ -private predicate joinStep0(TypeFlowNode n1, TypeFlowNode n2) { - n2.asExpr().(ChooseExpr).getAResultExpr() = n1.asExpr() - or - exists(Field f, Expr e | - f = n2.asField() and - f.getAnAssignedValue() = e and - e = n1.asExpr() and - not e.(FieldAccess).getField() = f - ) - or - n2.asSsa().(BaseSsaPhiNode).getAnUltimateLocalDefinition() = n1.asSsa() - or - exists(ReturnStmt ret | - n2.asMethod() = ret.getEnclosingCallable() and ret.getResult() = n1.asExpr() - ) - or - viableImpl_v1(n2.asExpr()) = n1.asMethod() - or - exists(Argument arg, Parameter p | - privateParamArg(p, arg) and - n1.asExpr() = arg and - n2.asSsa().(BaseSsaImplicitInit).isParameterDefinition(p) and - // skip trivial recursion - not arg = n2.asSsa().getAUse() - ) -} - -/** - * Holds if data can flow from `n1` to `n2` in one step, and `n1` is - * functionally determined by `n2`. - */ -private predicate step(TypeFlowNode n1, TypeFlowNode n2) { - n2.asExpr() = n1.asField().getAnAccess() - or - n2.asExpr() = n1.asSsa().getAUse() - or - n2.asExpr().(CastingExpr).getExpr() = n1.asExpr() and - not n2.asExpr().getType() instanceof PrimitiveType - or - n2.asExpr().(AssignExpr).getSource() = n1.asExpr() and - not n2.asExpr().getType() instanceof PrimitiveType - or - n2.asSsa().(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() - or - n2.asSsa().(BaseSsaImplicitInit).captures(n1.asSsa()) -} - -/** - * Holds if `null` is the only value that flows to `n`. - */ -private predicate isNull(TypeFlowNode n) { - n.asExpr() instanceof NullLiteral - or - exists(LocalVariableDeclExpr decl | - n.asSsa().(BaseSsaUpdate).getDefiningExpr() = decl and - not decl.hasImplicitInit() and - not exists(decl.getInit()) - ) - or - exists(TypeFlowNode mid | isNull(mid) and step(mid, n)) - or - forex(TypeFlowNode mid | joinStep0(mid, n) | isNull(mid)) and - // Fields that are never assigned a non-null value are probably set by - // reflection and are thus not always null. - not exists(n.asField()) -} - -/** - * Holds if data can flow from `n1` to `n2` in one step, `n1` is not necessarily - * functionally determined by `n2`, and `n1` might take a non-null value. - */ -private predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { - joinStep0(n1, n2) and not isNull(n1) -} - -private predicate anyStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep(n1, n2) or step(n1, n2) } - -private predicate sccEdge(TypeFlowNode n1, TypeFlowNode n2) { anyStep(n1, n2) and anyStep+(n2, n1) } - -private module Scc = QlBuiltins::EquivalenceRelation; - -private class TypeFlowScc = Scc::EquivalenceClass; - -/** Holds if `n` is part of an SCC of size 2 or more represented by `scc`. */ -private predicate sccRepr(TypeFlowNode n, TypeFlowScc scc) { scc = Scc::getEquivalenceClass(n) } - -private predicate sccJoinStep(TypeFlowNode n, TypeFlowScc scc) { - exists(TypeFlowNode mid | - joinStep(n, mid) and - sccRepr(mid, scc) and - not sccRepr(n, scc) - ) -} - -private signature class NodeSig; - -private signature module Edge { - class Node; - - predicate edge(TypeFlowNode n1, Node n2); -} - -private signature module RankedEdge { - predicate edgeRank(int r, TypeFlowNode n1, Node n2); - - int lastRank(Node n); -} - -private module RankEdge implements RankedEdge { - private import E /** - * Holds if `r` is a ranking of the incoming edges `(n1,n2)` to `n2`. The used - * ordering is not necessarily total, so the ranking may have gaps. + * Holds if data can flow from `n1` to `n2` in one step, and `n1` is not + * necessarily functionally determined by `n2`. */ - private predicate edgeRank1(int r, TypeFlowNode n1, Node n2) { - n1 = - rank[r](TypeFlowNode n | - edge(n, n2) - | - n order by n.getLocation().getStartLine(), n.getLocation().getStartColumn() - ) + predicate joinStep0(TypeFlowNode n1, TypeFlowNode n2) { + n2.asExpr().(ChooseExpr).getAResultExpr() = n1.asExpr() + or + exists(Field f, Expr e | + f = n2.asField() and + f.getAnAssignedValue() = e and + e = n1.asExpr() and + not e.(FieldAccess).getField() = f + ) + or + n2.asSsa().(BaseSsaPhiNode).getAnUltimateLocalDefinition() = n1.asSsa() + or + exists(ReturnStmt ret | + n2.asMethod() = ret.getEnclosingCallable() and ret.getResult() = n1.asExpr() + ) + or + viableImpl_v1(n2.asExpr()) = n1.asMethod() + or + exists(Argument arg, Parameter p | + privateParamArg(p, arg) and + n1.asExpr() = arg and + n2.asSsa().(BaseSsaImplicitInit).isParameterDefinition(p) and + // skip trivial recursion + not arg = n2.asSsa().getAUse() + ) } /** - * Holds if `r2` is a ranking of the ranks from `edgeRank1`. This removes the - * gaps from the ranking. + * Holds if data can flow from `n1` to `n2` in one step, and `n1` is + * functionally determined by `n2`. */ - private predicate edgeRank2(int r2, int r1, Node n) { - r1 = rank[r2](int r | edgeRank1(r, _, n) | r) + predicate step(TypeFlowNode n1, TypeFlowNode n2) { + n2.asExpr() = n1.asField().getAnAccess() + or + n2.asExpr() = n1.asSsa().getAUse() + or + n2.asExpr().(CastingExpr).getExpr() = n1.asExpr() and + not n2.asExpr().getType() instanceof PrimitiveType + or + n2.asExpr().(AssignExpr).getSource() = n1.asExpr() and + not n2.asExpr().getType() instanceof PrimitiveType + or + n2.asSsa().(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr() + or + n2.asSsa().(BaseSsaImplicitInit).captures(n1.asSsa()) } - /** Holds if `r` is a ranking of the incoming edges `(n1,n2)` to `n2`. */ - predicate edgeRank(int r, TypeFlowNode n1, Node n2) { - exists(int r1 | - edgeRank1(r1, n1, n2) and - edgeRank2(r, r1, n2) + /** + * Holds if `null` is the only value that flows to `n`. + */ + predicate isNull(TypeFlowNode n) { + n.asExpr() instanceof NullLiteral + or + exists(LocalVariableDeclExpr decl | + n.asSsa().(BaseSsaUpdate).getDefiningExpr() = decl and + not decl.hasImplicitInit() and + not exists(decl.getInit()) ) + or + exists(TypeFlowNode mid | isNull(mid) and step(mid, n)) + or + forex(TypeFlowNode mid | joinStep0(mid, n) | isNull(mid)) and + // Fields that are never assigned a non-null value are probably set by + // reflection and are thus not always null. + not exists(n.asField()) } - int lastRank(Node n) { result = max(int r | edgeRank(r, _, n)) } -} - -private signature module TypePropagation { - class Typ; - - predicate candType(TypeFlowNode n, Typ t); - - bindingset[t] - predicate supportsType(TypeFlowNode n, Typ t); -} + predicate exactTypeBase(TypeFlowNode n, RefType t) { + exists(J::ClassInstanceExpr e | + n.asExpr() = e and + e.getType() = t and + not e instanceof FunctionalExpr and + exists(SrcRefType sub | sub.getASourceSupertype() = t.getSourceDeclaration()) + ) + } -/** Implements recursion through `forall` by way of edge ranking. */ -private module ForAll E, TypePropagation T> { /** - * Holds if `t` is a bound that holds on one of the incoming edges to `n` and - * thus is a candidate bound for `n`. + * Holds if `n` occurs in a position where type information might be discarded; + * `t1` is the type of `n`, `t1e` is the erasure of `t1`, `t2` is the type of + * the implicit or explicit cast, and `t2e` is the erasure of `t2`. */ pragma[nomagic] - private predicate candJoinType(Node n, T::Typ t) { - exists(TypeFlowNode mid | - T::candType(mid, t) and - E::edgeRank(_, mid, n) + private predicate upcastCand(TypeFlowNode n, RefType t1, RefType t1e, RefType t2, RefType t2e) { + exists(TypeFlowNode next | step(n, next) or Make::joinStep(n, next) | + n.getType() = t1 and + next.getType() = t2 and + t1.getErasure() = t1e and + t2.getErasure() = t2e and + t1 != t2 ) } - /** - * Holds if `t` is a candidate bound for `n` that is also valid for data coming - * through the edges into `n` ranked from `1` to `r`. - */ - private predicate flowJoin(int r, Node n, T::Typ t) { - ( - r = 1 and candJoinType(n, t) + /** Holds if `n` occurs in a position where type information is discarded. */ + private predicate upcast(TypeFlowNode n, RefType t1) { + exists(RefType t1e, RefType t2, RefType t2e | upcastCand(n, t1, t1e, t2, t2e) | + t1e.getASourceSupertype+() = t2e or - flowJoin(r - 1, n, t) and E::edgeRank(r, _, n) - ) and - forall(TypeFlowNode mid | E::edgeRank(r, mid, n) | T::supportsType(mid, t)) + t1e = t2e and + unbound(t2) and + not unbound(t1) + ) } - /** - * Holds if `t` is a candidate bound for `n` that is also valid for data - * coming through all the incoming edges, and therefore is a valid bound for - * `n`. - */ - predicate flowJoin(Node n, T::Typ t) { flowJoin(E::lastRank(n), n, t) } -} - -private module JoinStep implements Edge { - class Node = TypeFlowNode; - - predicate edge = joinStep/2; -} - -private module SccJoinStep implements Edge { - class Node = TypeFlowScc; - - predicate edge = sccJoinStep/2; -} - -private module RankedJoinStep = RankEdge; - -private module RankedSccJoinStep = RankEdge; - -private predicate exactTypeBase(TypeFlowNode n, RefType t) { - exists(ClassInstanceExpr e | - n.asExpr() = e and - e.getType() = t and - not e instanceof FunctionalExpr and - exists(SrcRefType sub | sub.getASourceSupertype() = t.getSourceDeclaration()) - ) -} - -private module ExactTypePropagation implements TypePropagation { - class Typ = RefType; - - predicate candType = exactType/2; - - predicate supportsType = exactType/2; -} - -/** - * Holds if the runtime type of `n` is exactly `t` and if this bound is a - * non-trivial lower bound, that is, `t` has a subtype. - */ -private predicate exactType(TypeFlowNode n, RefType t) { - exactTypeBase(n, t) - or - exists(TypeFlowNode mid | exactType(mid, t) and step(mid, n)) - or - // The following is an optimized version of - // `forex(TypeFlowNode mid | joinStep(mid, n) | exactType(mid, t))` - ForAll::flowJoin(n, t) - or - exists(TypeFlowScc scc | - sccRepr(n, scc) and - // Optimized version of - // `forex(TypeFlowNode mid | sccJoinStep(mid, scc) | exactType(mid, t))` - ForAll::flowJoin(scc, t) - ) -} - -/** - * Holds if `n` occurs in a position where type information might be discarded; - * `t1` is the type of `n`, `t1e` is the erasure of `t1`, `t2` is the type of - * the implicit or explicit cast, and `t2e` is the erasure of `t2`. - */ -pragma[nomagic] -private predicate upcastCand(TypeFlowNode n, RefType t1, RefType t1e, RefType t2, RefType t2e) { - exists(TypeFlowNode next | step(n, next) or joinStep(n, next) | - n.getType() = t1 and - next.getType() = t2 and - t1.getErasure() = t1e and - t2.getErasure() = t2e and - t1 != t2 - ) -} - -private predicate unconstrained(BoundedType t) { - t.(Wildcard).isUnconstrained() - or - t.getUpperBoundType() instanceof TypeObject and - not t.(Wildcard).hasLowerBound() - or - unconstrained(t.getUpperBoundType()) - or - unconstrained(t.(Wildcard).getLowerBoundType()) -} - -/** Holds if `t` is a raw type or parameterised type with unrestricted type arguments. */ -private predicate unbound(RefType t) { - t instanceof RawType - or - exists(ParameterizedType pt | pt = t | - forex(RefType arg | arg = pt.getATypeArgument() | unconstrained(arg)) - ) -} - -/** Holds if `n` occurs in a position where type information is discarded. */ -private predicate upcast(TypeFlowNode n, RefType t1) { - exists(RefType t1e, RefType t2, RefType t2e | upcastCand(n, t1, t1e, t2, t2e) | - t1e.getASourceSupertype+() = t2e + /** Gets the element type of an array or subtype of `Iterable`. */ + private J::Type elementType(RefType t) { + result = t.(Array).getComponentType() or - t1e = t2e and - unbound(t2) and - not unbound(t1) - ) -} - -/** Gets the element type of an array or subtype of `Iterable`. */ -private Type elementType(RefType t) { - result = t.(Array).getComponentType() - or - exists(ParameterizedType it | - it.getSourceDeclaration().hasQualifiedName("java.lang", "Iterable") and - result = it.getATypeArgument() and - t.extendsOrImplements*(it) - ) -} - -private predicate upcastEnhancedForStmtAux(BaseSsaUpdate v, RefType t, RefType t1, RefType t2) { - exists(EnhancedForStmt for | - for.getVariable() = v.getDefiningExpr() and - v.getSourceVariable().getType().getErasure() = t2 and - t = boxIfNeeded(elementType(for.getExpr().getType())) and - t.getErasure() = t1 - ) -} + exists(ParameterizedType it | + it.getSourceDeclaration().hasQualifiedName("java.lang", "Iterable") and + result = it.getATypeArgument() and + t.extendsOrImplements*(it) + ) + } -/** - * Holds if `v` is the iteration variable of an enhanced for statement, `t` is - * the type of the elements being iterated over, and this type is more precise - * than the type of `v`. - */ -private predicate upcastEnhancedForStmt(BaseSsaUpdate v, RefType t) { - exists(RefType t1, RefType t2 | - upcastEnhancedForStmtAux(v, t, t1, t2) and - t1.getASourceSupertype+() = t2 - ) -} + private predicate upcastEnhancedForStmtAux(BaseSsaUpdate v, RefType t, RefType t1, RefType t2) { + exists(EnhancedForStmt for | + for.getVariable() = v.getDefiningExpr() and + v.getSourceVariable().getType().getErasure() = t2 and + t = boxIfNeeded(elementType(for.getExpr().getType())) and + t.getErasure() = t1 + ) + } -private predicate downcastSuccessorAux( - CastingExpr cast, BaseSsaVariable v, RefType t, RefType t1, RefType t2 -) { - cast.getExpr() = v.getAUse() and - t = cast.getType() and - t1 = t.getErasure() and - t2 = v.getSourceVariable().getType().getErasure() -} + /** + * Holds if `v` is the iteration variable of an enhanced for statement, `t` is + * the type of the elements being iterated over, and this type is more precise + * than the type of `v`. + */ + private predicate upcastEnhancedForStmt(BaseSsaUpdate v, RefType t) { + exists(RefType t1, RefType t2 | + upcastEnhancedForStmtAux(v, t, t1, t2) and + t1.getASourceSupertype+() = t2 + ) + } -/** - * Holds if `va` is an access to a value that has previously been downcast to `t`. - */ -private predicate downcastSuccessor(VarAccess va, RefType t) { - exists(CastingExpr cast, BaseSsaVariable v, RefType t1, RefType t2 | - downcastSuccessorAux(pragma[only_bind_into](cast), v, t, t1, t2) and - t1.getASourceSupertype+() = t2 and - va = v.getAUse() and - dominates(cast, va) and - dominates(cast.(ControlFlowNode).getANormalSuccessor(), va) - ) -} + private predicate downcastSuccessorAux( + CastingExpr cast, BaseSsaVariable v, RefType t, RefType t1, RefType t2 + ) { + cast.getExpr() = v.getAUse() and + t = cast.getType() and + t1 = t.getErasure() and + t2 = v.getSourceVariable().getType().getErasure() + } -/** - * Holds if `va` is an access to a value that is guarded by `instanceof t` or `case e t`. - */ -private predicate typeTestGuarded(VarAccess va, RefType t) { - exists(Guard typeTest, BaseSsaVariable v | - typeTest.appliesTypeTest(v.getAUse(), t, _) and - va = v.getAUse() and - guardControls_v1(typeTest, va.getBasicBlock(), true) - ) -} + /** + * Holds if `va` is an access to a value that has previously been downcast to `t`. + */ + private predicate downcastSuccessor(VarAccess va, RefType t) { + exists(CastingExpr cast, BaseSsaVariable v, RefType t1, RefType t2 | + downcastSuccessorAux(pragma[only_bind_into](cast), v, t, t1, t2) and + t1.getASourceSupertype+() = t2 and + va = v.getAUse() and + dominates(cast, va) and + dominates(cast.(ControlFlowNode).getANormalSuccessor(), va) + ) + } -/** - * Holds if `aa` is an access to a value that is guarded by `instanceof t` or `case e t`. - */ -predicate arrayTypeTestGuarded(ArrayAccess aa, RefType t) { - exists(Guard typeTest, BaseSsaVariable v1, BaseSsaVariable v2, ArrayAccess aa1 | - typeTest.appliesTypeTest(aa1, t, _) and - aa1.getArray() = v1.getAUse() and - aa1.getIndexExpr() = v2.getAUse() and - aa.getArray() = v1.getAUse() and - aa.getIndexExpr() = v2.getAUse() and - guardControls_v1(typeTest, aa.getBasicBlock(), true) - ) -} + /** + * Holds if `va` is an access to a value that is guarded by `instanceof t` or `case e t`. + */ + private predicate typeTestGuarded(VarAccess va, RefType t) { + exists(Guard typeTest, BaseSsaVariable v | + typeTest.appliesTypeTest(v.getAUse(), t, _) and + va = v.getAUse() and + guardControls_v1(typeTest, va.getBasicBlock(), true) + ) + } -/** - * Holds if `t` is the type of the `this` value corresponding to the the - * `SuperAccess`. As the `SuperAccess` expression has the type of the supertype, - * the type `t` is a stronger type bound. - */ -private predicate superAccess(SuperAccess sup, RefType t) { - sup.isEnclosingInstanceAccess(t) - or - sup.isOwnInstanceAccess() and - t = sup.getEnclosingCallable().getDeclaringType() -} + /** + * Holds if `aa` is an access to a value that is guarded by `instanceof t` or `case e t`. + */ + private predicate arrayTypeTestGuarded(ArrayAccess aa, RefType t) { + exists(Guard typeTest, BaseSsaVariable v1, BaseSsaVariable v2, ArrayAccess aa1 | + typeTest.appliesTypeTest(aa1, t, _) and + aa1.getArray() = v1.getAUse() and + aa1.getIndexExpr() = v2.getAUse() and + aa.getArray() = v1.getAUse() and + aa.getIndexExpr() = v2.getAUse() and + guardControls_v1(typeTest, aa.getBasicBlock(), true) + ) + } -/** - * Holds if `n` has type `t` and this information is discarded, such that `t` - * might be a better type bound for nodes where `n` flows to. This might include - * multiple bounds for a single node. - */ -private predicate typeFlowBaseCand(TypeFlowNode n, RefType t) { - exists(RefType srctype | - upcast(n, srctype) or - upcastEnhancedForStmt(n.asSsa(), srctype) or - downcastSuccessor(n.asExpr(), srctype) or - typeTestGuarded(n.asExpr(), srctype) or - arrayTypeTestGuarded(n.asExpr(), srctype) or - n.asExpr().(FunctionalExpr).getConstructedType() = srctype or - superAccess(n.asExpr(), srctype) - | - t = srctype.(BoundedType).getAnUltimateUpperBoundType() + /** + * Holds if `t` is the type of the `this` value corresponding to the the + * `SuperAccess`. As the `SuperAccess` expression has the type of the supertype, + * the type `t` is a stronger type bound. + */ + private predicate superAccess(SuperAccess sup, RefType t) { + sup.isEnclosingInstanceAccess(t) or - t = srctype and not srctype instanceof BoundedType - ) -} + sup.isOwnInstanceAccess() and + t = sup.getEnclosingCallable().getDeclaringType() + } -/** - * Holds if `n` has type `t` and this information is discarded, such that `t` - * might be a better type bound for nodes where `n` flows to. This only includes - * the best such bound for each node. - */ -private predicate typeFlowBase(TypeFlowNode n, RefType t) { - exists(RefType te | - typeFlowBaseCand(n, t) and - te = t.getErasure() and - not exists(RefType better | - typeFlowBaseCand(n, better) and - better != t and - not t.getASupertype+() = better + /** + * Holds if `n` has type `t` and this information is discarded, such that `t` + * might be a better type bound for nodes where `n` flows to. This might include + * multiple bounds for a single node. + */ + predicate typeFlowBaseCand(TypeFlowNode n, RefType t) { + exists(RefType srctype | + upcast(n, srctype) or + upcastEnhancedForStmt(n.asSsa(), srctype) or + downcastSuccessor(n.asExpr(), srctype) or + typeTestGuarded(n.asExpr(), srctype) or + arrayTypeTestGuarded(n.asExpr(), srctype) or + n.asExpr().(FunctionalExpr).getConstructedType() = srctype or + superAccess(n.asExpr(), srctype) | - better.getASupertype+() = t or - better.getErasure().(RefType).getASourceSupertype+() = te + t = srctype.(BoundedType).getAnUltimateUpperBoundType() + or + t = srctype and not srctype instanceof BoundedType ) - ) -} + } -private module TypeFlowPropagation implements TypePropagation { - class Typ = RefType; + /** + * Holds if `ioe` checks `v`, its true-successor is `bb`, and `bb` has multiple + * predecessors. + */ + private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, BaseSsaVariable v) { + ioe.getExpr() = v.getAUse() and + strictcount(bb.getABBPredecessor()) > 1 and + exists(ConditionBlock cb | cb.getCondition() = ioe and cb.getTestSuccessor(true) = bb) + } - predicate candType = typeFlow/2; + /** Holds if `bb` is disjunctively guarded by multiple `instanceof` tests on `v`. */ + private predicate instanceofDisjunction(BasicBlock bb, BaseSsaVariable v) { + strictcount(InstanceOfExpr ioe | instanceofDisjunct(ioe, bb, v)) = + strictcount(bb.getABBPredecessor()) + } - bindingset[t] - predicate supportsType(TypeFlowNode mid, RefType t) { - exists(RefType midtyp | exactType(mid, midtyp) or typeFlow(mid, midtyp) | - pragma[only_bind_out](midtyp).getAnAncestor() = t + /** + * Holds if `n` is a value that is guarded by a disjunction of + * `instanceof t_i` where `t` is one of those `t_i`. + */ + predicate instanceofDisjunctionGuarded(TypeFlowNode n, RefType t) { + exists(BasicBlock bb, InstanceOfExpr ioe, BaseSsaVariable v, VarAccess va | + instanceofDisjunction(bb, v) and + bb.bbDominates(va.getBasicBlock()) and + va = v.getAUse() and + instanceofDisjunct(ioe, bb, v) and + t = ioe.getSyntacticCheckedType() and + n.asExpr() = va ) } -} - -/** - * Holds if the runtime type of `n` is bounded by `t` and if this bound is - * likely to be better than the static type of `n`. - */ -private predicate typeFlow(TypeFlowNode n, RefType t) { - typeFlowBase(n, t) - or - exists(TypeFlowNode mid | typeFlow(mid, t) and step(mid, n)) - or - ForAll::flowJoin(n, t) - or - exists(TypeFlowScc scc | - sccRepr(n, scc) and - ForAll::flowJoin(scc, t) - ) -} - -pragma[nomagic] -private predicate erasedTypeBound(RefType t) { - exists(RefType t0 | typeFlow(_, t0) and t = t0.getErasure()) -} - -pragma[nomagic] -private predicate typeBound(RefType t) { typeFlow(_, t) } -/** - * Holds if we have a bound for `n` that is better than `t`, taking only erased - * types into account. - */ -pragma[nomagic] -private predicate irrelevantErasedBound(TypeFlowNode n, RefType t) { - exists(RefType bound | - typeFlow(n, bound) + private predicate unconstrained(BoundedType t) { + t.(Wildcard).isUnconstrained() or - n.getType() = bound and typeFlow(n, _) - | - t = bound.getErasure().(RefType).getASourceSupertype+() and - erasedTypeBound(t) - ) -} - -/** - * Holds if we have a bound for `n` that is better than `t`. - */ -pragma[nomagic] -private predicate irrelevantBound(TypeFlowNode n, RefType t) { - exists(RefType bound | - typeFlow(n, bound) and - t = bound.getAStrictAncestor() and - typeBound(t) and - typeFlow(n, pragma[only_bind_into](t)) and - not t.getAnAncestor() = bound + t.getUpperBoundType() instanceof TypeObject and + not t.(Wildcard).hasLowerBound() or - n.getType() = pragma[only_bind_into](bound) and - typeFlow(n, t) and - t = bound.getAnAncestor() - ) -} - -/** - * Holds if the runtime type of `n` is bounded by `t`, if this bound is likely - * to be better than the static type of `n`, and if this the best such bound. - */ -private predicate bestTypeFlow(TypeFlowNode n, RefType t) { - typeFlow(n, t) and - not irrelevantErasedBound(n, t.getErasure()) and - not irrelevantBound(n, t) -} - -private predicate bestTypeFlow(TypeFlowNode n, RefType t, boolean exact) { - exactType(n, t) and exact = true - or - not exactType(n, _) and bestTypeFlow(n, t) and exact = false -} - -private predicate bestTypeFlowOrTypeFlowBase(TypeFlowNode n, RefType t, boolean exact) { - bestTypeFlow(n, t, exact) - or - typeFlowBase(n, t) and - exact = false and - not bestTypeFlow(n, _, _) -} - -/** - * Holds if `n` has type `t` and this information is not propagated as a - * universal bound to a subsequent node, such that `t` might form the basis for - * a union type bound for that node. - */ -private predicate unionTypeFlowBaseCand(TypeFlowNode n, RefType t, boolean exact) { - exists(TypeFlowNode next | - joinStep(n, next) and - bestTypeFlowOrTypeFlowBase(n, t, exact) and - not bestTypeFlowOrTypeFlowBase(next, t, exact) and - not exactType(next, _) - ) -} - -/** - * Holds if `ioe` checks `v`, its true-successor is `bb`, and `bb` has multiple - * predecessors. - */ -private predicate instanceofDisjunct(InstanceOfExpr ioe, BasicBlock bb, BaseSsaVariable v) { - ioe.getExpr() = v.getAUse() and - strictcount(bb.getABBPredecessor()) > 1 and - exists(ConditionBlock cb | cb.getCondition() = ioe and cb.getTestSuccessor(true) = bb) -} - -/** Holds if `bb` is disjunctively guarded by multiple `instanceof` tests on `v`. */ -private predicate instanceofDisjunction(BasicBlock bb, BaseSsaVariable v) { - strictcount(InstanceOfExpr ioe | instanceofDisjunct(ioe, bb, v)) = - strictcount(bb.getABBPredecessor()) -} - -/** - * Holds if `n` is a value that is guarded by a disjunction of - * `instanceof t_i` where `t` is one of those `t_i`. - */ -private predicate instanceofDisjunctionGuarded(TypeFlowNode n, RefType t) { - exists(BasicBlock bb, InstanceOfExpr ioe, BaseSsaVariable v, VarAccess va | - instanceofDisjunction(bb, v) and - bb.bbDominates(va.getBasicBlock()) and - va = v.getAUse() and - instanceofDisjunct(ioe, bb, v) and - t = ioe.getSyntacticCheckedType() and - n.asExpr() = va - ) -} - -private module HasUnionTypePropagation implements TypePropagation { - class Typ = Unit; - - predicate candType(TypeFlowNode mid, Unit unit) { - exists(unit) and - (unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid)) + unconstrained(t.getUpperBoundType()) + or + unconstrained(t.(Wildcard).getLowerBoundType()) } - predicate supportsType = candType/2; -} - -/** - * Holds if all incoming type flow can be traced back to a - * `unionTypeFlowBaseCand`, such that we can compute a union type bound for `n`. - * Disregards nodes for which we have an exact bound. - */ -private predicate hasUnionTypeFlow(TypeFlowNode n) { - not exactType(n, _) and - ( - // Optimized version of - // `forex(TypeFlowNode mid | joinStep(mid, n) | unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid))` - ForAll::flowJoin(n, _) + /** Holds if `t` is a raw type or parameterised type with unrestricted type arguments. */ + predicate unbound(RefType t) { + t instanceof RawType or - exists(TypeFlowScc scc | - sccRepr(n, scc) and - // Optimized version of - // `forex(TypeFlowNode mid | sccJoinStep(mid, scc) | unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid))` - ForAll::flowJoin(scc, _) + exists(ParameterizedType pt | pt = t | + forex(RefType arg | arg = pt.getATypeArgument() | unconstrained(arg)) ) - or - exists(TypeFlowNode mid | step(mid, n) and hasUnionTypeFlow(mid)) - or - instanceofDisjunctionGuarded(n, _) - ) -} - -pragma[nomagic] -private RefType getTypeBound(TypeFlowNode n) { - bestTypeFlow(n, result) - or - not bestTypeFlow(n, _) and result = n.getType() -} - -pragma[nomagic] -private predicate unionTypeFlow0(TypeFlowNode n, RefType t, boolean exact) { - hasUnionTypeFlow(n) and - ( - exists(TypeFlowNode mid | anyStep(mid, n) | - unionTypeFlowBaseCand(mid, t, exact) or unionTypeFlow(mid, t, exact) - ) - or - instanceofDisjunctionGuarded(n, t) and exact = false - ) -} - -/** Holds if we have a union type bound for `n` and `t` is one of its parts. */ -private predicate unionTypeFlow(TypeFlowNode n, RefType t, boolean exact) { - unionTypeFlow0(n, t, exact) and - // filter impossible union parts: - exists(RefType tErased, RefType boundErased | - pragma[only_bind_into](tErased) = t.getErasure() and - pragma[only_bind_into](boundErased) = getTypeBound(n).getErasure() - | - if exact = true - then tErased.getASourceSupertype*() = boundErased - else erasedHaveIntersection(tErased, boundErased) - ) -} + } -/** - * Holds if the inferred union type bound for `n` contains the best universal - * bound and thus is irrelevant. - */ -private predicate irrelevantUnionType(TypeFlowNode n) { - exists(RefType t, RefType nt, RefType te, RefType nte | - unionTypeFlow(n, t, false) and - nt = getTypeBound(n) and - te = t.getErasure() and - nte = nt.getErasure() - | - nt.getASupertype*() = t - or - nte.getASourceSupertype+() = te - or - nte = te and unbound(t) - ) -} + Type getErasure(Type t) { result = t.getErasure() } -/** - * Holds if `t` is an irrelevant part of the union type bound for `n` due to - * being contained in another part of the union type bound. - */ -private predicate irrelevantUnionTypePart(TypeFlowNode n, RefType t, boolean exact) { - unionTypeFlow(n, t, exact) and - not irrelevantUnionType(n) and - exists(RefType weaker | - unionTypeFlow(n, weaker, false) and - t.getASupertype*() = weaker - | - exact = true or not weaker.getASupertype*() = t - ) -} + Type getAnAncestor(Type sub) { result = sub.getAnAncestor() } -/** - * Holds if the runtime type of `n` is bounded by a union type and if this - * bound is likely to be better than the static type of `n`. The union type is - * made up of the types `t` related to `n` by this predicate, and the flag - * `exact` indicates whether `t` is an exact bound or merely an upper bound. - */ -private predicate bestUnionType(TypeFlowNode n, RefType t, boolean exact) { - unionTypeFlow(n, t, exact) and - not irrelevantUnionType(n) and - not irrelevantUnionTypePart(n, t, exact) + RefType getSourceDeclaration(Type t) { result = t.getSourceDeclaration() } } cached private module TypeFlowBounds { + private module TypeFlow = Make; + /** * Holds if the runtime type of `f` is bounded by `t` and if this bound is * likely to be better than the static type of `f`. The flag `exact` indicates @@ -756,9 +365,9 @@ private module TypeFlowBounds { */ cached predicate fieldTypeFlow(Field f, RefType t, boolean exact) { - exists(TypeFlowNode n | + exists(Input::TypeFlowNode n | n.asField() = f and - bestTypeFlow(n, t, exact) + TypeFlow::bestTypeFlow(n, t, exact) ) } @@ -769,9 +378,9 @@ private module TypeFlowBounds { */ cached predicate exprTypeFlow(Expr e, RefType t, boolean exact) { - exists(TypeFlowNode n | + exists(Input::TypeFlowNode n | n.asExpr() = e and - bestTypeFlow(n, t, exact) + TypeFlow::bestTypeFlow(n, t, exact) ) } @@ -783,9 +392,9 @@ private module TypeFlowBounds { */ cached predicate exprUnionTypeFlow(Expr e, RefType t, boolean exact) { - exists(TypeFlowNode n | + exists(Input::TypeFlowNode n | n.asExpr() = e and - bestUnionType(n, t, exact) + TypeFlow::bestUnionType(n, t, exact) ) } } From 690fdc076d2e65b9e238589dbc15f05ad57be3cf Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 26 Feb 2024 16:21:35 +0000 Subject: [PATCH 031/731] Shared: Add change note. --- shared/typeflow/change-notes/2024-02-26-initial-version.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 shared/typeflow/change-notes/2024-02-26-initial-version.md diff --git a/shared/typeflow/change-notes/2024-02-26-initial-version.md b/shared/typeflow/change-notes/2024-02-26-initial-version.md new file mode 100644 index 000000000000..6b3dc3449387 --- /dev/null +++ b/shared/typeflow/change-notes/2024-02-26-initial-version.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Initial release. Adds a library to implement type-flow analysis. From b4b5ae2a2c53503538b1cab99c7499ca97f536a1 Mon Sep 17 00:00:00 2001 From: erik-krogh Date: Tue, 27 Feb 2024 10:05:26 +0100 Subject: [PATCH 032/731] add some request-forgery sanitizers, inspired from C# --- .../code/java/security/RequestForgery.qll | 77 +++++++++++++++++++ .../CWE-601/semmle/tests/UrlRedirect.expected | 2 + .../CWE-601/semmle/tests/UrlRedirect2.java | 52 +++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect2.java diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index 7a72faeb5e4d..e083977c74f9 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -8,6 +8,7 @@ import semmle.code.java.frameworks.JaxWS import semmle.code.java.frameworks.javase.Http import semmle.code.java.dataflow.DataFlow import semmle.code.java.frameworks.Properties +private import semmle.code.java.controlflow.Guards private import semmle.code.java.dataflow.StringPrefixes private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.security.Sanitizers @@ -83,3 +84,79 @@ private class HostnameSanitizingPrefix extends InterestingPrefix { private class HostnameSantizer extends RequestForgerySanitizer { HostnameSantizer() { this.asExpr() = any(HostnameSanitizingPrefix hsp).getAnAppendedExpression() } } + +/** + * An argument to a call to `List.contains()` that is a sanitizer for URL redirects. + */ +private predicate isContainsUrlSanitizer(Guard guard, Expr e, boolean branch) { + guard = + any(MethodCall method | + method.getMethod().getName() = "contains" and + e = method.getArgument(0) and + branch = true + ) +} + +/** + * An URL argument to a call to `.contains()` that is a sanitizer for URL redirects. + * + * This `contains` method is usually called on a list, but the sanitizer matches any call to a method + * called `contains`, so other methods with the same name will also be considered sanitizers. + */ +class ContainsUrlSanitizer extends RequestForgerySanitizer { + ContainsUrlSanitizer() { + this = DataFlow::BarrierGuard::getABarrierNode() + } +} + +/** + * A check that the URL is relative, and therefore safe for URL redirects. + */ +private predicate isRelativeUrlSanitizer(Guard guard, Expr e, boolean branch) { + guard = + any(MethodCall call | + exists(Method method | + call.getMethod() = method and + method.getName() = "isAbsolute" and + method.getDeclaringType().hasQualifiedName("java.net", "URI") + ) and + e = call.getQualifier() and + branch = false + ) +} + +/** + * A check that the URL is relative, and therefore safe for URL redirects. + */ +class RelativeUrlSanitizer extends RequestForgerySanitizer { + RelativeUrlSanitizer() { + this = DataFlow::BarrierGuard::getABarrierNode() + } +} + +/** + * A comparison on the host of a url, that is a sanitizer for URL redirects. + * E.g. `"example.org".equals(url.getHost())"` + */ +private predicate isHostComparisonSanitizer(Guard guard, Expr e, boolean branch) { + guard = + any(MethodCall equalsCall | + equalsCall.getMethod().getName() = "equals" and + branch = true and + exists(MethodCall hostCall | + hostCall = [equalsCall.getQualifier(), equalsCall.getArgument(0)] and + hostCall.getMethod().getName() = "getHost" and + hostCall.getMethod().getDeclaringType().hasQualifiedName("java.net", "URI") and + e = hostCall.getQualifier() + ) + ) +} + +/** + * A comparison on the `Host` property of a url, that is a sanitizer for URL redirects. + */ +class HostComparisonSanitizer extends RequestForgerySanitizer { + HostComparisonSanitizer() { + this = DataFlow::BarrierGuard::getABarrierNode() + } +} diff --git a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected index 3757e51134b6..cf5af88efd85 100644 --- a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected +++ b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect.expected @@ -6,6 +6,7 @@ edges | mad/Test.java:9:16:9:41 | getParameter(...) : String | mad/Test.java:14:31:14:38 | source(...) : String | provenance | | | mad/Test.java:14:31:14:38 | source(...) : String | mad/Test.java:14:22:14:38 | (...)... | provenance | | nodes +| UrlRedirect2.java:27:25:27:54 | getParameter(...) | semmle.label | getParameter(...) | | UrlRedirect.java:23:25:23:54 | getParameter(...) | semmle.label | getParameter(...) | | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | semmle.label | weakCleanup(...) | | UrlRedirect.java:32:37:32:66 | getParameter(...) : String | semmle.label | getParameter(...) : String | @@ -20,6 +21,7 @@ nodes subpaths | UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:45:28:45:39 | input : String | UrlRedirect.java:46:10:46:40 | replaceAll(...) : String | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | #select +| UrlRedirect2.java:27:25:27:54 | getParameter(...) | UrlRedirect2.java:27:25:27:54 | getParameter(...) | UrlRedirect2.java:27:25:27:54 | getParameter(...) | Untrusted URL redirection depends on a $@. | UrlRedirect2.java:27:25:27:54 | getParameter(...) | user-provided value | | UrlRedirect.java:23:25:23:54 | getParameter(...) | UrlRedirect.java:23:25:23:54 | getParameter(...) | UrlRedirect.java:23:25:23:54 | getParameter(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:23:25:23:54 | getParameter(...) | user-provided value | | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | UrlRedirect.java:32:37:32:66 | getParameter(...) : String | UrlRedirect.java:32:25:32:67 | weakCleanup(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:32:37:32:66 | getParameter(...) | user-provided value | | UrlRedirect.java:39:34:39:63 | getParameter(...) | UrlRedirect.java:39:34:39:63 | getParameter(...) | UrlRedirect.java:39:34:39:63 | getParameter(...) | Untrusted URL redirection depends on a $@. | UrlRedirect.java:39:34:39:63 | getParameter(...) | user-provided value | diff --git a/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect2.java b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect2.java new file mode 100644 index 000000000000..9014dcae7f29 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-601/semmle/tests/UrlRedirect2.java @@ -0,0 +1,52 @@ +// Test case for +// CWE-601: URL Redirection to Untrusted Site ('Open Redirect') +// http://cwe.mitre.org/data/definitions/601.html + +package test.cwe601.cwe.examples; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.net.URI; +import java.net.URISyntaxException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class UrlRedirect2 extends HttpServlet { + private static final List VALID_REDIRECTS = Arrays.asList( + "http://cwe.mitre.org/data/definitions/601.html", + "http://cwe.mitre.org/data/definitions/79.html" + ); + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // BAD: a request parameter is incorporated without validation into a URL redirect + response.sendRedirect(request.getParameter("target")); + + // GOOD: the request parameter is validated against a known list of strings + String target = request.getParameter("target"); + if (VALID_REDIRECTS.contains(target)) { + response.sendRedirect(target); + } + + try { + String urlString = request.getParameter("page"); + URI url = new URI(urlString); + + if (!url.isAbsolute()) { + // GOOD: The redirect is to a relative URL + response.sendRedirect(url.toString()); + } + + if ("example.org".equals(url.getHost())) { + // GOOD: The redirect is to a known host + response.sendRedirect(url.toString()); + } + } catch (URISyntaxException e) { + // handle exception + } + } +} From d0e7fbc871de377f6ab2693ce624e325902ea754 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 27 Feb 2024 09:47:51 +0000 Subject: [PATCH 033/731] Ruby: Add changenote --- ruby/ql/lib/change-notes/2024-02-27-process-spawn.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 ruby/ql/lib/change-notes/2024-02-27-process-spawn.md diff --git a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md new file mode 100644 index 000000000000..30feedcbd209 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* New command injection sinks have been added, including `Process.spawn`, `Terrapin::CommandLine` and the `open4` gem. \ No newline at end of file From 2fd57f6ee771e760d54749e649ceea8f3a8716af Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 28 Feb 2024 16:24:21 +0000 Subject: [PATCH 034/731] Shared: Remove cached annotation. --- shared/typeflow/codeql/typeflow/TypeFlow.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/shared/typeflow/codeql/typeflow/TypeFlow.qll b/shared/typeflow/codeql/typeflow/TypeFlow.qll index 5df8e53a914b..bdf90dab7cf7 100644 --- a/shared/typeflow/codeql/typeflow/TypeFlow.qll +++ b/shared/typeflow/codeql/typeflow/TypeFlow.qll @@ -112,7 +112,6 @@ private import internal.TypeFlowImpl as Impl /** * Provides an implementation of type-flow using input `I`. */ -cached module Make { import Impl::TypeFlow } From 052a8e7f8187026396db06545647afc47f2dbde4 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 28 Feb 2024 14:58:04 +0100 Subject: [PATCH 035/731] JS: Avoid spurious recursion in AMD --- javascript/ql/lib/semmle/javascript/AMD.qll | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/AMD.qll b/javascript/ql/lib/semmle/javascript/AMD.qll index 20b1c26275a7..7214005b5937 100644 --- a/javascript/ql/lib/semmle/javascript/AMD.qll +++ b/javascript/ql/lib/semmle/javascript/AMD.qll @@ -102,9 +102,10 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range /** * Holds if `p` is the parameter corresponding to dependency `dep`. */ - predicate dependencyParameter(PathExpr dep, Parameter p) { + predicate dependencyParameter(Expr dep, Parameter p) { exists(int i | - dep = this.getDependency(i) and + // Note: to avoid spurious recursion, do not depend on PathExpr here + dep = this.getDependencies().getElement(i) and p = this.getFactoryParameter(i) ) } @@ -122,9 +123,9 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range * `dep1` and `dep2`. */ Parameter getDependencyParameter(string name) { - exists(PathExpr dep | + exists(Expr dep | this.dependencyParameter(dep, result) and - dep.getValue() = name + name = dep.getStringValue() ) } From 853397361fceb4395df26e52d1a5b46b259d2915 Mon Sep 17 00:00:00 2001 From: Asger F Date: Wed, 28 Feb 2024 13:51:28 +0100 Subject: [PATCH 036/731] JS: Do not treat AMD pseudo-dependencies as file paths --- javascript/ql/lib/semmle/javascript/AMD.qll | 14 ++++++++++++-- .../ql/test/library-tests/AMD/tests.expected | 1 - 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/AMD.qll b/javascript/ql/lib/semmle/javascript/AMD.qll index 7214005b5937..b28dd5b9b72d 100644 --- a/javascript/ql/lib/semmle/javascript/AMD.qll +++ b/javascript/ql/lib/semmle/javascript/AMD.qll @@ -61,7 +61,13 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range } /** Gets the `i`th dependency of this module definition. */ - PathExpr getDependency(int i) { result = this.getDependencies().getElement(i) } + PathExpr getDependency(int i) { + exists(Expr expr | + expr = this.getDependencies().getElement(i) and + not isPseudoDependency(expr.getStringValue()) and + result = expr + ) + } /** Gets a dependency of this module definition. */ PathExpr getADependency() { @@ -203,11 +209,15 @@ class AmdModuleDefinition extends CallExpr instanceof AmdModuleDefinition::Range } } +private predicate isPseudoDependency(string s) { s = ["exports", "require", "module"] } + /** An AMD dependency, considered as a path expression. */ private class AmdDependencyPath extends PathExprCandidate { AmdDependencyPath() { exists(AmdModuleDefinition amd | - this = amd.getDependencies().getAnElement() or + this = amd.getDependencies().getAnElement() and + not isPseudoDependency(this.getStringValue()) + or this = amd.getARequireCall().getAnArgument() ) } diff --git a/javascript/ql/test/library-tests/AMD/tests.expected b/javascript/ql/test/library-tests/AMD/tests.expected index 265a7f291dfe..ce9d6f60f5dd 100644 --- a/javascript/ql/test/library-tests/AMD/tests.expected +++ b/javascript/ql/test/library-tests/AMD/tests.expected @@ -61,7 +61,6 @@ amdModuleDefinition | umd.js:4:9:4:43 | define( ... actory) | umd.js:1:18:1:24 | factory | | umd.js:4:9:4:43 | define( ... actory) | umd.js:9:9:14:1 | functio ... };\\n} | amdModuleDependencies -| tst2.js:1:1:3:2 | define( ... 42;\\n}) | tst2.js:1:9:1:17 | 'exports' | | tst3.js:1:1:3:2 | define( ... 42;\\n}) | tst3.js:2:21:2:25 | './a' | | tst4.js:1:1:11:2 | define( ... };\\n}) | tst4.js:2:9:2:14 | 'a.js' | | tst4.js:1:1:11:2 | define( ... };\\n}) | tst4.js:3:9:3:13 | 'foo' | From 9f01ea68f7d3ce004d54cf3d4132c2a2b89b0bea Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 10:19:49 +0100 Subject: [PATCH 037/731] Python: Add type-tracking consistency query For now I'm only ignoring stdlib nodes, so it's easy for reviewer to see why we need to have more excludes :) --- .../TypeTrackingConsistency.ql | 12 +++++ .../TypeTrackingConsistency.expected | 50 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 python/ql/consistency-queries/TypeTrackingConsistency.ql create mode 100644 python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql new file mode 100644 index 000000000000..f338c4dcb1d6 --- /dev/null +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -0,0 +1,12 @@ +private import python +private import semmle.python.dataflow.new.DataFlow +private import semmle.python.dataflow.new.internal.DataFlowPrivate as DataFlowPrivate +private import semmle.python.dataflow.new.internal.TypeTrackingImpl + +private module ConsistencyChecksInput implements ConsistencyChecksInputSig { + predicate unreachableNodeExclude(DataFlow::Node n) { + not exists(n.getLocation().getFile().getRelativePath()) + } +} + +import ConsistencyChecks diff --git a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected new file mode 100644 index 000000000000..8f036153e537 --- /dev/null +++ b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected @@ -0,0 +1,50 @@ +unreachableNode +| attribute_tests.py:6:5:6:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:12:9:12:9 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:13:5:13:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:28:5:28:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:29:17:29:17 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:30:5:30:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:39:13:39:13 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:45:5:45:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:77:10:77:16 | [post] ControlFlowNode for MyClass | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:89:13:89:13 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:95:5:95:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:102:13:102:13 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:109:5:109:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:117:5:117:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:123:5:123:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:130:5:130:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:137:5:137:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:150:18:150:21 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:153:19:153:22 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:156:34:156:37 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:159:12:159:21 | [pre] ControlFlowNode for MyClass2() | Unreachable node in step of kind call. | +| attribute_tests.py:160:7:160:14 | [post] ControlFlowNode for instance | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:167:20:167:23 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:170:19:170:22 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:173:34:173:37 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:177:1:177:8 | [post] ControlFlowNode for instance | Unreachable node in step of kind simpleLocalSmallStep. | +| attribute_tests.py:178:1:178:8 | [post] ControlFlowNode for instance | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:54:5:54:12 | [post] ControlFlowNode for mymodule | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:55:9:55:16 | [post] ControlFlowNode for mymodule | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:72:15:72:15 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:74:13:74:17 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:92:9:92:13 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:98:2:98:13 | [post] ControlFlowNode for my_decorator | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:130:15:130:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:133:15:133:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:136:15:136:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:142:15:142:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:145:15:145:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:148:15:148:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:151:20:151:23 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:152:9:152:12 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:153:9:153:13 | [post] ControlFlowNode for super | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:162:5:162:7 | [post] ControlFlowNode for foo | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:163:9:163:11 | [post] ControlFlowNode for foo | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:179:14:179:24 | [post] ControlFlowNode for get_tracked | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:181:1:181:5 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:188:9:188:13 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:192:9:192:13 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:208:14:208:30 | [post] ControlFlowNode for yielding_function | Unreachable node in step of kind simpleLocalSmallStep. | From bbe8c6dcaa3f0702741b83d9706f01ca5d713be2 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 10:23:50 +0100 Subject: [PATCH 038/731] Python: Remove synth postupdate nodes from tt-consistency --- .../TypeTrackingConsistency.ql | 2 + .../TypeTrackingConsistency.expected | 48 ------------------- 2 files changed, 2 insertions(+), 48 deletions(-) diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index f338c4dcb1d6..772960b08a8a 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -6,6 +6,8 @@ private import semmle.python.dataflow.new.internal.TypeTrackingImpl private module ConsistencyChecksInput implements ConsistencyChecksInputSig { predicate unreachableNodeExclude(DataFlow::Node n) { not exists(n.getLocation().getFile().getRelativePath()) + or + n instanceof DataFlowPrivate::SyntheticPostUpdateNode } } diff --git a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected index 8f036153e537..8cba9c02c17c 100644 --- a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected +++ b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected @@ -1,50 +1,2 @@ unreachableNode -| attribute_tests.py:6:5:6:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:12:9:12:9 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:13:5:13:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:28:5:28:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:29:17:29:17 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:30:5:30:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:39:13:39:13 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:45:5:45:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:77:10:77:16 | [post] ControlFlowNode for MyClass | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:89:13:89:13 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:95:5:95:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:102:13:102:13 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:109:5:109:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:117:5:117:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:123:5:123:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:130:5:130:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:137:5:137:5 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:150:18:150:21 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:153:19:153:22 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:156:34:156:37 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | | attribute_tests.py:159:12:159:21 | [pre] ControlFlowNode for MyClass2() | Unreachable node in step of kind call. | -| attribute_tests.py:160:7:160:14 | [post] ControlFlowNode for instance | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:167:20:167:23 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:170:19:170:22 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:173:34:173:37 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:177:1:177:8 | [post] ControlFlowNode for instance | Unreachable node in step of kind simpleLocalSmallStep. | -| attribute_tests.py:178:1:178:8 | [post] ControlFlowNode for instance | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:54:5:54:12 | [post] ControlFlowNode for mymodule | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:55:9:55:16 | [post] ControlFlowNode for mymodule | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:72:15:72:15 | [post] ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:74:13:74:17 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:92:9:92:13 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:98:2:98:13 | [post] ControlFlowNode for my_decorator | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:130:15:130:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:133:15:133:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:136:15:136:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:142:15:142:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:145:15:145:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:148:15:148:18 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:151:20:151:23 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:152:9:152:12 | [post] ControlFlowNode for self | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:153:9:153:13 | [post] ControlFlowNode for super | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:162:5:162:7 | [post] ControlFlowNode for foo | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:163:9:163:11 | [post] ControlFlowNode for foo | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:179:14:179:24 | [post] ControlFlowNode for get_tracked | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:181:1:181:5 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:188:9:188:13 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:192:9:192:13 | [post] ControlFlowNode for print | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:208:14:208:30 | [post] ControlFlowNode for yielding_function | Unreachable node in step of kind simpleLocalSmallStep. | From ff5f79475099580c8652062988352f37143206bb Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 10:27:29 +0100 Subject: [PATCH 039/731] Python: Exclude synth preupdate nodes from tt-consistency ... and that should be it :+1: (so that's why I'm allowing the tests to run on all data-flow nodes again) --- python/ql/consistency-queries/TypeTrackingConsistency.ql | 4 ++-- .../typetracking/CONSISTENCY/TypeTrackingConsistency.expected | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index 772960b08a8a..3083f2b5f1a3 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -5,9 +5,9 @@ private import semmle.python.dataflow.new.internal.TypeTrackingImpl private module ConsistencyChecksInput implements ConsistencyChecksInputSig { predicate unreachableNodeExclude(DataFlow::Node n) { - not exists(n.getLocation().getFile().getRelativePath()) - or n instanceof DataFlowPrivate::SyntheticPostUpdateNode + or + n instanceof DataFlowPrivate::SyntheticPreUpdateNode } } diff --git a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected deleted file mode 100644 index 8cba9c02c17c..000000000000 --- a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -unreachableNode -| attribute_tests.py:159:12:159:21 | [pre] ControlFlowNode for MyClass2() | Unreachable node in step of kind call. | From bff95c4c1b5ed5fca74215dccd3190758b9679e9 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 13:58:33 +0100 Subject: [PATCH 040/731] Python: Add example of consistency failure --- .../Arguments/CONSISTENCY/TypeTrackingConsistency.expected | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected new file mode 100644 index 000000000000..c48725c1ebf0 --- /dev/null +++ b/python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected @@ -0,0 +1,7 @@ +unreachableNode +| wrong_arguments.py:65:1:65:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | +| wrong_arguments.py:66:1:66:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | +| wrong_arguments.py:67:1:67:12 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | +| wrong_arguments.py:71:1:71:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | +| wrong_arguments.py:72:1:72:12 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | +| wrong_arguments.py:73:1:73:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | From 1658a1cb801e140d185e6064a190c2bc0f613126 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 13:59:00 +0100 Subject: [PATCH 041/731] Python: Ignore SynthDictSplatArgumentNode failures --- python/ql/consistency-queries/TypeTrackingConsistency.ql | 3 +++ .../Arguments/CONSISTENCY/TypeTrackingConsistency.expected | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index 3083f2b5f1a3..68f9e9e5fa7f 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -8,6 +8,9 @@ private module ConsistencyChecksInput implements ConsistencyChecksInputSig { n instanceof DataFlowPrivate::SyntheticPostUpdateNode or n instanceof DataFlowPrivate::SyntheticPreUpdateNode + or + // TODO: when adding support for proper content, handle **kwargs passing better! + n instanceof DataFlowPrivate::SynthDictSplatArgumentNode } } diff --git a/python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected deleted file mode 100644 index c48725c1ebf0..000000000000 --- a/python/ql/test/query-tests/Classes/Arguments/CONSISTENCY/TypeTrackingConsistency.expected +++ /dev/null @@ -1,7 +0,0 @@ -unreachableNode -| wrong_arguments.py:65:1:65:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | -| wrong_arguments.py:66:1:66:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | -| wrong_arguments.py:67:1:67:12 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | -| wrong_arguments.py:71:1:71:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | -| wrong_arguments.py:72:1:72:12 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | -| wrong_arguments.py:73:1:73:7 | SynthDictSplatArgumentNode | Unreachable node in step of kind call. | From 5d212514c63ae288371b3878d64f6ed01d7e543b Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 14:07:08 +0100 Subject: [PATCH 042/731] Python: Add example of consistency failure --- .../TypeTrackingConsistency.expected | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected new file mode 100644 index 000000000000..52cd572e19fa --- /dev/null +++ b/python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected @@ -0,0 +1,51 @@ +unreachableNode +| test.py:72:15:72:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:72:15:72:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:72:18:72:18 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:72:18:72:18 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:73:20:73:20 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:74:18:74:18 | ControlFlowNode for y | Unreachable node in step of kind call. | +| test.py:79:15:79:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:79:15:79:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:79:18:79:18 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:79:18:79:18 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:80:20:80:20 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:81:18:81:18 | ControlFlowNode for y | Unreachable node in step of kind call. | +| test.py:89:15:89:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:89:15:89:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:89:19:89:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:89:19:89:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:90:20:90:20 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:96:15:96:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:96:15:96:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:96:19:96:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:96:19:96:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:97:18:97:18 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:103:15:103:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:103:15:103:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:103:19:103:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:103:19:103:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:104:20:104:20 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:110:15:110:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:110:15:110:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:110:19:110:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:110:19:110:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:111:18:111:18 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:117:20:117:20 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:117:20:117:20 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:117:28:117:28 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:117:28:117:28 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:118:20:118:20 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:119:18:119:18 | ControlFlowNode for y | Unreachable node in step of kind call. | +| test.py:125:20:125:20 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:125:20:125:20 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:126:20:126:20 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:132:20:132:20 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:132:20:132:20 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:133:18:133:18 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:151:27:151:27 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:151:27:151:27 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:152:18:152:18 | ControlFlowNode for x | Unreachable node in step of kind call. | +| test.py:155:27:155:27 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:155:27:155:27 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:156:20:156:20 | ControlFlowNode for x | Unreachable node in step of kind call. | From bcd5c08ebd2693690e5bdba177c023668cf45e5b Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 14:15:32 +0100 Subject: [PATCH 043/731] Python: Ignore match-related inconsistencies --- .../TypeTrackingConsistency.ql | 9 ++++ .../TypeTrackingConsistency.expected | 51 ------------------- 2 files changed, 9 insertions(+), 51 deletions(-) delete mode 100644 python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index 68f9e9e5fa7f..b2349fc0f1c3 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -11,6 +11,15 @@ private module ConsistencyChecksInput implements ConsistencyChecksInputSig { or // TODO: when adding support for proper content, handle **kwargs passing better! n instanceof DataFlowPrivate::SynthDictSplatArgumentNode + or + // TODO: when adding support for proper content, handle unpacking tuples in match + // cases better, such as + // + // match (NONSOURCE, SOURCE): + // case (x, y): ... + exists(DataFlow::Node m | m.asCfgNode().getNode() instanceof MatchCapturePattern | + TypeTrackingInput::simpleLocalSmallStep*(m, n) + ) } } diff --git a/python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected deleted file mode 100644 index 52cd572e19fa..000000000000 --- a/python/ql/test/experimental/dataflow/match/CONSISTENCY/TypeTrackingConsistency.expected +++ /dev/null @@ -1,51 +0,0 @@ -unreachableNode -| test.py:72:15:72:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:72:15:72:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:72:18:72:18 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:72:18:72:18 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:73:20:73:20 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:74:18:74:18 | ControlFlowNode for y | Unreachable node in step of kind call. | -| test.py:79:15:79:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:79:15:79:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:79:18:79:18 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:79:18:79:18 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:80:20:80:20 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:81:18:81:18 | ControlFlowNode for y | Unreachable node in step of kind call. | -| test.py:89:15:89:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:89:15:89:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:89:19:89:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:89:19:89:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:90:20:90:20 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:96:15:96:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:96:15:96:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:96:19:96:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:96:19:96:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:97:18:97:18 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:103:15:103:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:103:15:103:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:103:19:103:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:103:19:103:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:104:20:104:20 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:110:15:110:15 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:110:15:110:15 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:110:19:110:19 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:110:19:110:19 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:111:18:111:18 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:117:20:117:20 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:117:20:117:20 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:117:28:117:28 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:117:28:117:28 | ControlFlowNode for y | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:118:20:118:20 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:119:18:119:18 | ControlFlowNode for y | Unreachable node in step of kind call. | -| test.py:125:20:125:20 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:125:20:125:20 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:126:20:126:20 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:132:20:132:20 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:132:20:132:20 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:133:18:133:18 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:151:27:151:27 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:151:27:151:27 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:152:18:152:18 | ControlFlowNode for x | Unreachable node in step of kind call. | -| test.py:155:27:155:27 | ControlFlowNode for MatchCapturePattern | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:155:27:155:27 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:156:20:156:20 | ControlFlowNode for x | Unreachable node in step of kind call. | From 7e3e5db3dbde7aa9304c758bd21141deff2225e6 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 14:21:16 +0100 Subject: [PATCH 044/731] Python: Add example of consistency failure --- .../TypeTrackingConsistency.expected | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected new file mode 100644 index 000000000000..30f0348dc6d0 --- /dev/null +++ b/python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected @@ -0,0 +1,18 @@ +unreachableNode +| test.py:215:16:215:19 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:226:17:226:20 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:231:20:231:24 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:580:9:580:12 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:589:5:589:11 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:589:6:589:10 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:589:7:589:9 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:618:7:618:16 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:626:7:626:16 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:634:6:634:17 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:646:6:646:14 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:655:7:655:13 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:664:7:664:13 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:673:6:673:14 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:693:9:693:11 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:701:9:701:12 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | +| test.py:710:9:710:14 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | From 7c60562132247d13ee75a9e466caa73f8e1ebba6 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 1 Mar 2024 14:22:18 +0100 Subject: [PATCH 045/731] Python: Ignore IterableSequenceNode inconsistencies --- .../TypeTrackingConsistency.ql | 4 ++++ .../TypeTrackingConsistency.expected | 18 ------------------ 2 files changed, 4 insertions(+), 18 deletions(-) delete mode 100644 python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index b2349fc0f1c3..b8f1e3a1b48c 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -20,6 +20,10 @@ private module ConsistencyChecksInput implements ConsistencyChecksInputSig { exists(DataFlow::Node m | m.asCfgNode().getNode() instanceof MatchCapturePattern | TypeTrackingInput::simpleLocalSmallStep*(m, n) ) + or + // TODO: when adding support for proper content, handle iterable unpacking better + // such as `for k,v in items:`, or `a, (b,c) = ...` + n instanceof DataFlow::IterableSequenceNode } } diff --git a/python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected deleted file mode 100644 index 30f0348dc6d0..000000000000 --- a/python/ql/test/experimental/dataflow/coverage/CONSISTENCY/TypeTrackingConsistency.expected +++ /dev/null @@ -1,18 +0,0 @@ -unreachableNode -| test.py:215:16:215:19 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:226:17:226:20 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:231:20:231:24 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:580:9:580:12 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:589:5:589:11 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:589:6:589:10 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:589:7:589:9 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:618:7:618:16 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:626:7:626:16 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:634:6:634:17 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:646:6:646:14 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:655:7:655:13 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:664:7:664:13 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:673:6:673:14 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:693:9:693:11 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:701:9:701:12 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | -| test.py:710:9:710:14 | IterableSequence | Unreachable node in step of kind simpleLocalSmallStep. | From c95abd47ce4e0b24f87fd7b544a8b5e3cd1f47a2 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Thu, 15 Feb 2024 17:31:46 -0500 Subject: [PATCH 046/731] Remove stored variants of queries --- .../CWE-078/StoredCommandInjection.qhelp | 6 --- .../CWE-078/StoredCommandInjection.ql | 34 ---------------- .../Security Features/CWE-079/StoredXSS.qhelp | 6 --- .../Security Features/CWE-079/StoredXSS.ql | 39 ------------------- .../CWE-090/StoredLDAPInjection.qhelp | 6 --- .../CWE-090/StoredLDAPInjection.ql | 32 --------------- .../CWE-643/StoredXPathInjection.qhelp | 6 --- .../CWE-643/StoredXPathInjection.ql | 32 --------------- 8 files changed, 161 deletions(-) delete mode 100644 csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.qhelp delete mode 100644 csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.ql delete mode 100644 csharp/ql/src/Security Features/CWE-079/StoredXSS.qhelp delete mode 100644 csharp/ql/src/Security Features/CWE-079/StoredXSS.ql delete mode 100644 csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.qhelp delete mode 100644 csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.ql delete mode 100644 csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.qhelp delete mode 100644 csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.ql diff --git a/csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.qhelp b/csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.qhelp deleted file mode 100644 index c9b2874372b6..000000000000 --- a/csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.qhelp +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.ql b/csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.ql deleted file mode 100644 index 5f728db84735..000000000000 --- a/csharp/ql/src/Security Features/CWE-078/StoredCommandInjection.ql +++ /dev/null @@ -1,34 +0,0 @@ -/** - * @name Uncontrolled command line from stored user input - * @description Using externally controlled strings in a command line may allow a malicious - * user to change the meaning of the command. - * @kind path-problem - * @problem.severity error - * @security-severity 9.8 - * @precision medium - * @id cs/stored-command-line-injection - * @tags correctness - * security - * external/cwe/cwe-078 - * external/cwe/cwe-088 - */ - -import csharp -import semmle.code.csharp.security.dataflow.flowsources.Stored -import semmle.code.csharp.security.dataflow.CommandInjectionQuery -import StoredCommandInjection::PathGraph - -module StoredCommandInjectionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof StoredFlowSource } - - predicate isSink = CommandInjectionConfig::isSink/1; - - predicate isBarrier = CommandInjectionConfig::isBarrier/1; -} - -module StoredCommandInjection = TaintTracking::Global; - -from StoredCommandInjection::PathNode source, StoredCommandInjection::PathNode sink -where StoredCommandInjection::flowPath(source, sink) -select sink.getNode(), source, sink, "This command line depends on a $@.", source.getNode(), - "stored (potentially user-provided) value" diff --git a/csharp/ql/src/Security Features/CWE-079/StoredXSS.qhelp b/csharp/ql/src/Security Features/CWE-079/StoredXSS.qhelp deleted file mode 100644 index 8bd2e14ef084..000000000000 --- a/csharp/ql/src/Security Features/CWE-079/StoredXSS.qhelp +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/csharp/ql/src/Security Features/CWE-079/StoredXSS.ql b/csharp/ql/src/Security Features/CWE-079/StoredXSS.ql deleted file mode 100644 index 140dedfec51d..000000000000 --- a/csharp/ql/src/Security Features/CWE-079/StoredXSS.ql +++ /dev/null @@ -1,39 +0,0 @@ -/** - * @name Stored cross-site scripting - * @description Writing input from the database directly to a web page indicates a cross-site - * scripting vulnerability if the data was originally user-provided. - * @kind path-problem - * @problem.severity error - * @security-severity 6.1 - * @precision medium - * @id cs/web/stored-xss - * @tags security - * external/cwe/cwe-079 - * external/cwe/cwe-116 - */ - -import csharp -import semmle.code.csharp.security.dataflow.flowsources.Stored -import semmle.code.csharp.security.dataflow.XSSQuery -import semmle.code.csharp.security.dataflow.XSSSinks -import StoredXss::PathGraph - -module StoredXssTrackingConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof StoredFlowSource } - - predicate isSink = XssTrackingConfig::isSink/1; - - predicate isBarrier = XssTrackingConfig::isBarrier/1; -} - -module StoredXss = TaintTracking::Global; - -from StoredXss::PathNode source, StoredXss::PathNode sink, string explanation -where - StoredXss::flowPath(source, sink) and - if exists(sink.getNode().(Sink).explanation()) - then explanation = " (" + sink.getNode().(Sink).explanation() + ")" - else explanation = "" -select sink.getNode(), source, sink, - "This HTML or JavaScript write" + explanation + " depends on a $@.", source.getNode(), - "stored (potentially user-provided) value" diff --git a/csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.qhelp b/csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.qhelp deleted file mode 100644 index f547d512fbcd..000000000000 --- a/csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.qhelp +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.ql b/csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.ql deleted file mode 100644 index e5015892fc4e..000000000000 --- a/csharp/ql/src/Security Features/CWE-090/StoredLDAPInjection.ql +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @name LDAP query built from stored user-controlled sources - * @description Building an LDAP query from stored user-controlled sources is vulnerable to - * insertion of malicious LDAP code by the user. - * @kind path-problem - * @problem.severity error - * @security-severity 9.8 - * @precision medium - * @id cs/stored-ldap-injection - * @tags security - * external/cwe/cwe-090 - */ - -import csharp -import semmle.code.csharp.security.dataflow.LDAPInjectionQuery -import semmle.code.csharp.security.dataflow.flowsources.Stored -import StoredLdapInjection::PathGraph - -module StoredLdapInjectionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof StoredFlowSource } - - predicate isSink = LdapInjectionConfig::isSink/1; - - predicate isBarrier = LdapInjectionConfig::isBarrier/1; -} - -module StoredLdapInjection = TaintTracking::Global; - -from StoredLdapInjection::PathNode source, StoredLdapInjection::PathNode sink -where StoredLdapInjection::flowPath(source, sink) -select sink.getNode(), source, sink, "This LDAP query depends on a $@.", source.getNode(), - "stored (potentially user-provided) value" diff --git a/csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.qhelp b/csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.qhelp deleted file mode 100644 index f705e0bbde9f..000000000000 --- a/csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.qhelp +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.ql b/csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.ql deleted file mode 100644 index 3042997ec7ac..000000000000 --- a/csharp/ql/src/Security Features/CWE-643/StoredXPathInjection.ql +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @name Stored XPath injection - * @description Building an XPath expression from stored data which may have been provided by the - * user is vulnerable to insertion of malicious code by the user. - * @kind path-problem - * @problem.severity error - * @security-severity 9.8 - * @precision medium - * @id cs/xml/stored-xpath-injection - * @tags security - * external/cwe/cwe-643 - */ - -import csharp -import semmle.code.csharp.security.dataflow.flowsources.Stored -import semmle.code.csharp.security.dataflow.XPathInjectionQuery -import StoredXpathInjection::PathGraph - -module StoredXpathInjectionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof StoredFlowSource } - - predicate isSink = XpathInjectionConfig::isSink/1; - - predicate isBarrier = XpathInjectionConfig::isBarrier/1; -} - -module StoredXpathInjection = TaintTracking::Global; - -from StoredXpathInjection::PathNode source, StoredXpathInjection::PathNode sink -where StoredXpathInjection::flowPath(source, sink) -select sink.getNode(), source, sink, "This XPath expression depends on a $@.", source.getNode(), - "stored (potentially user-provided) value" From be3c1ed0be057c2323337f3fd2df66a4a01cc544 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Thu, 15 Feb 2024 17:36:55 -0500 Subject: [PATCH 047/731] Change note --- .../change-notes/2024-03-11-remove-stored-query-variants.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md new file mode 100644 index 000000000000..48c1e409d030 --- /dev/null +++ b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md @@ -0,0 +1,5 @@ +--- +category: majorAnalysis +--- +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `stored` threat model in your threat model settings. + From c3671c7625d195dd907931e1e700c897b311146d Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Thu, 15 Feb 2024 17:41:14 -0500 Subject: [PATCH 048/731] Fix change note --- .../src/change-notes/2024-03-11-remove-stored-query-variants.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md index 48c1e409d030..f62d293dc046 100644 --- a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md +++ b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md @@ -1,5 +1,5 @@ --- category: majorAnalysis --- -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `stored` threat model in your threat model settings. +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `local` threat model in your threat model settings. From e84a50997615d598f095759208e02d8d67c06a21 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Tue, 20 Feb 2024 13:56:34 -0500 Subject: [PATCH 049/731] Modify test cases --- .../CWE-078/CommandInjection.cs | 19 +++++ .../CWE-078/CommandInjection.expected | 70 ++++++++++++--- .../CWE-078/CommandInjection.ext.yml | 7 ++ .../CWE-078/StoredCommandInjection.cs | 28 ------ .../CWE-078/StoredCommandInjection.expected | 8 -- .../CWE-078/StoredCommandInjection.qlref | 1 - .../CWE-079/StoredXSS/StoredXSS.ext.yml | 7 ++ .../CWE-079/StoredXSS/StoredXSS.qlref | 2 +- .../CWE-090/LDAPInjection.cs | 15 ++++ .../CWE-090/LDAPInjection.expected | 41 +++++++-- .../CWE-090/LDAPInjection.ext.yml | 7 ++ .../CWE-090/StoredLDAPInjection.cs | 28 ------ .../CWE-090/StoredLDAPInjection.expected | 8 -- .../CWE-090/StoredLDAPInjection.qlref | 1 - .../CWE-643/StoredXPathInjection.cs | 37 -------- .../CWE-643/StoredXPathInjection.expected | 20 ----- .../CWE-643/StoredXPathInjection.qlref | 1 - .../CWE-643/XPathInjection.cs | 27 ++++++ .../CWE-643/XPathInjection.expected | 85 ++++++++++++++++--- .../CWE-643/XPathInjection.ext.yml | 7 ++ 20 files changed, 254 insertions(+), 165 deletions(-) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.ext.yml delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.cs delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.ext.yml create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.ext.yml delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.cs delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.qlref delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.cs delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.ext.yml diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.cs index 85a95df55e4f..df3db94b4335 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.cs @@ -1,4 +1,6 @@ using System; +using System.Data.SqlClient; +using System.Diagnostics; namespace System.Web.UI.WebControls { @@ -34,5 +36,22 @@ public void WebCommandInjection() startInfoProps.WorkingDirectory = userInput; Process.Start(startInfoProps); } + + public void StoredCommandInjection() + { + using (SqlConnection connection = new SqlConnection("")) + { + connection.Open(); + SqlCommand customerCommand = new SqlCommand("SELECT * FROM customers", connection); + SqlDataReader customerReader = customerCommand.ExecuteReader(); + + while (customerReader.Read()) + { + // BAD: Read from database, and use it to directly execute a command + Process.Start("foo.exe", "/c " + customerReader.GetString(1)); + } + customerReader.Close(); + } + } } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected index 11b83a0ae20c..1e8317bac241 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected @@ -1,4 +1,5 @@ edges +<<<<<<< HEAD | CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:26:27:26:47 | ... + ... | provenance | | | CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:26:50:26:66 | ... + ... | provenance | | | CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput | provenance | | @@ -42,18 +43,63 @@ nodes | CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:33:40:33:48 | access to local variable userInput | semmle.label | access to local variable userInput | | CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +======= +| CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:27:32:27:51 | access to property Text : String | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:28:27:28:47 | ... + ... | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:28:50:28:66 | ... + ... | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:63:30:71 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:31:27:31:35 | access to local variable startInfo | provenance | | +| CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | +| CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | +| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | provenance | | +| CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | +| CommandInjection.cs:35:13:35:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | provenance | | +| CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | CommandInjection.cs:35:13:35:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | +| CommandInjection.cs:36:13:36:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | provenance | | +| CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | CommandInjection.cs:36:13:36:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | +| CommandInjection.cs:51:54:51:80 | call to method GetString : String | CommandInjection.cs:51:46:51:80 | ... + ... | provenance | | +nodes +| CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | semmle.label | access to property Text : String | +| CommandInjection.cs:28:27:28:47 | ... + ... | semmle.label | ... + ... | +| CommandInjection.cs:28:50:28:66 | ... + ... | semmle.label | ... + ... | +| CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | semmle.label | object creation of type ProcessStartInfo : ProcessStartInfo | +| CommandInjection.cs:30:63:30:71 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:30:74:30:82 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:31:27:31:35 | access to local variable startInfo | semmle.label | access to local variable startInfo | +>>>>>>> 4fc83a3267 (Modify test cases) | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | -| CommandInjection.cs:34:47:34:55 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | semmle.label | access to local variable startInfoProps | +| CommandInjection.cs:34:39:34:47 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:35:13:35:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | +| CommandInjection.cs:35:40:35:48 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:36:13:36:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | +| CommandInjection.cs:36:47:36:55 | access to local variable userInput | semmle.label | access to local variable userInput | +| CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | +| CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | semmle.label | access to local variable startInfoProps | +| CommandInjection.cs:51:46:51:80 | ... + ... | semmle.label | ... + ... | +| CommandInjection.cs:51:54:51:80 | call to method GetString : String | semmle.label | call to method GetString : String | subpaths #select -| CommandInjection.cs:26:27:26:47 | ... + ... | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:26:27:26:47 | ... + ... | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:26:50:26:66 | ... + ... | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:26:50:26:66 | ... + ... | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:28:63:28:71 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:28:63:28:71 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:28:74:28:82 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:28:74:28:82 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:29:27:29:35 | access to local variable startInfo | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:29:27:29:35 | access to local variable startInfo | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:32:39:32:47 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:32:39:32:47 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:33:40:33:48 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:33:40:33:48 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:34:47:34:55 | access to local variable userInput | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:34:47:34:55 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | This command line depends on a $@. | CommandInjection.cs:25:32:25:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:28:27:28:47 | ... + ... | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:28:27:28:47 | ... + ... | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:28:50:28:66 | ... + ... | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:28:50:28:66 | ... + ... | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:30:63:30:71 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:30:63:30:71 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:30:74:30:82 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:30:74:30:82 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:31:27:31:35 | access to local variable startInfo | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:31:27:31:35 | access to local variable startInfo | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:34:39:34:47 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:34:39:34:47 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:35:40:35:48 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:35:40:35:48 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:36:47:36:55 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:36:47:36:55 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | +| CommandInjection.cs:51:46:51:80 | ... + ... | CommandInjection.cs:51:54:51:80 | call to method GetString : String | CommandInjection.cs:51:46:51:80 | ... + ... | This command line depends on a $@. | CommandInjection.cs:51:54:51:80 | call to method GetString | user-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.ext.yml b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.ext.yml new file mode 100644 index 000000000000..82f107ae1d71 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["local", true, 0] \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.cs deleted file mode 100644 index b9f4ca1de9de..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Data.SqlClient; -using System.Diagnostics; - -namespace Test -{ - - class StoredCommandInjection - { - - public void Test() - { - using (SqlConnection connection = new SqlConnection("")) - { - connection.Open(); - SqlCommand customerCommand = new SqlCommand("SELECT * FROM customers", connection); - SqlDataReader customerReader = customerCommand.ExecuteReader(); - - while (customerReader.Read()) - { - // BAD: Read from database, and use it to directly execute a command - Process.Start("foo.exe", "/c " + customerReader.GetString(1)); - } - customerReader.Close(); - } - } - } -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected deleted file mode 100644 index 46c85f7abbe6..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.expected +++ /dev/null @@ -1,8 +0,0 @@ -edges -| StoredCommandInjection.cs:22:54:22:80 | call to method GetString : String | StoredCommandInjection.cs:22:46:22:80 | ... + ... | provenance | | -nodes -| StoredCommandInjection.cs:22:46:22:80 | ... + ... | semmle.label | ... + ... | -| StoredCommandInjection.cs:22:54:22:80 | call to method GetString : String | semmle.label | call to method GetString : String | -subpaths -#select -| StoredCommandInjection.cs:22:46:22:80 | ... + ... | StoredCommandInjection.cs:22:54:22:80 | call to method GetString : String | StoredCommandInjection.cs:22:46:22:80 | ... + ... | This command line depends on a $@. | StoredCommandInjection.cs:22:54:22:80 | call to method GetString | stored (potentially user-provided) value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.qlref b/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.qlref deleted file mode 100644 index c2df5055b37b..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/StoredCommandInjection.qlref +++ /dev/null @@ -1 +0,0 @@ -Security Features/CWE-078/StoredCommandInjection.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.ext.yml b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.ext.yml new file mode 100644 index 000000000000..82f107ae1d71 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["local", true, 0] \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.qlref b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.qlref index 196efd7f0e42..faad1d6403c1 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.qlref +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.qlref @@ -1 +1 @@ -Security Features/CWE-079/StoredXSS.ql +Security Features/CWE-079/XSS.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.cs index 2f43a4d4c125..ddd24e19729f 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.cs @@ -1,4 +1,5 @@ using System; +using System.Data.SqlClient; using System.DirectoryServices; using System.DirectoryServices.Protocols; using System.Web; @@ -27,6 +28,20 @@ public void ProcessRequest(HttpContext ctx) DirectoryEntry de = new DirectoryEntry("LDAP://Cn=" + userName); DirectoryEntry de2 = new DirectoryEntry(); de2.Path = "LDAP://Cn=" + userName; + + using (SqlConnection connection = new SqlConnection("")) + { + connection.Open(); + SqlCommand customerCommand = new SqlCommand("SELECT * FROM customers", connection); + SqlDataReader customerReader = customerCommand.ExecuteReader(); + + while (customerReader.Read()) + { + // BAD: Read from database, write it straight to a response + DirectorySearcher ds4 = new DirectorySearcher("accountname=" + customerReader.GetString(1)); + } + customerReader.Close(); + } } public string LDAPEncode(string value) diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected index 59be23198dc3..87b4ba8da1e9 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected @@ -1,4 +1,5 @@ edges +<<<<<<< HEAD | LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:14:54:14:78 | ... + ... | provenance | | | LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:16:21:16:45 | ... + ... | provenance | | | LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:23:21:23:45 | ... + ... | provenance | | @@ -18,11 +19,39 @@ nodes | LDAPInjection.cs:24:53:24:77 | ... + ... | semmle.label | ... + ... | | LDAPInjection.cs:27:48:27:70 | ... + ... | semmle.label | ... + ... | | LDAPInjection.cs:29:20:29:42 | ... + ... | semmle.label | ... + ... | +======= +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:12:27:12:61 | access to indexer : String | provenance | | +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:15:54:15:78 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:17:21:17:45 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:24:21:24:45 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:25:53:25:77 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:28:48:28:70 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:30:20:30:42 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:15:54:15:78 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:17:21:17:45 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:24:21:24:45 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:25:53:25:77 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:28:48:28:70 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:30:20:30:42 | ... + ... | provenance | | +| LDAPInjection.cs:41:80:41:106 | call to method GetString : String | LDAPInjection.cs:41:63:41:106 | ... + ... | provenance | | +nodes +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | semmle.label | access to indexer : String | +| LDAPInjection.cs:15:54:15:78 | ... + ... | semmle.label | ... + ... | +| LDAPInjection.cs:17:21:17:45 | ... + ... | semmle.label | ... + ... | +| LDAPInjection.cs:24:21:24:45 | ... + ... | semmle.label | ... + ... | +| LDAPInjection.cs:25:53:25:77 | ... + ... | semmle.label | ... + ... | +| LDAPInjection.cs:28:48:28:70 | ... + ... | semmle.label | ... + ... | +| LDAPInjection.cs:30:20:30:42 | ... + ... | semmle.label | ... + ... | +| LDAPInjection.cs:41:63:41:106 | ... + ... | semmle.label | ... + ... | +| LDAPInjection.cs:41:80:41:106 | call to method GetString : String | semmle.label | call to method GetString : String | +>>>>>>> 4fc83a3267 (Modify test cases) subpaths #select -| LDAPInjection.cs:14:54:14:78 | ... + ... | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:14:54:14:78 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| LDAPInjection.cs:16:21:16:45 | ... + ... | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:16:21:16:45 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| LDAPInjection.cs:23:21:23:45 | ... + ... | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:23:21:23:45 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| LDAPInjection.cs:24:53:24:77 | ... + ... | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:24:53:24:77 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| LDAPInjection.cs:27:48:27:70 | ... + ... | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:27:48:27:70 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| LDAPInjection.cs:29:20:29:42 | ... + ... | LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:29:20:29:42 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| LDAPInjection.cs:15:54:15:78 | ... + ... | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:15:54:15:78 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| LDAPInjection.cs:17:21:17:45 | ... + ... | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:17:21:17:45 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| LDAPInjection.cs:24:21:24:45 | ... + ... | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:24:21:24:45 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| LDAPInjection.cs:25:53:25:77 | ... + ... | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:25:53:25:77 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| LDAPInjection.cs:28:48:28:70 | ... + ... | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:28:48:28:70 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| LDAPInjection.cs:30:20:30:42 | ... + ... | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:30:20:30:42 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| LDAPInjection.cs:41:63:41:106 | ... + ... | LDAPInjection.cs:41:80:41:106 | call to method GetString : String | LDAPInjection.cs:41:63:41:106 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:41:80:41:106 | call to method GetString | user-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.ext.yml b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.ext.yml new file mode 100644 index 000000000000..82f107ae1d71 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["local", true, 0] \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.cs deleted file mode 100644 index 975d1cb86f25..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Data.SqlClient; -using System.DirectoryServices; - -namespace Test -{ - - class StoredLDAPInjection - { - - public void processRequest() - { - using (SqlConnection connection = new SqlConnection("")) - { - connection.Open(); - SqlCommand customerCommand = new SqlCommand("SELECT * FROM customers", connection); - SqlDataReader customerReader = customerCommand.ExecuteReader(); - - while (customerReader.Read()) - { - // BAD: Read from database, write it straight to a response - DirectorySearcher ds = new DirectorySearcher("accountname=" + customerReader.GetString(1)); - } - customerReader.Close(); - } - } - } -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected deleted file mode 100644 index d66714c82cc5..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.expected +++ /dev/null @@ -1,8 +0,0 @@ -edges -| StoredLDAPInjection.cs:22:83:22:109 | call to method GetString : String | StoredLDAPInjection.cs:22:66:22:109 | ... + ... | provenance | | -nodes -| StoredLDAPInjection.cs:22:66:22:109 | ... + ... | semmle.label | ... + ... | -| StoredLDAPInjection.cs:22:83:22:109 | call to method GetString : String | semmle.label | call to method GetString : String | -subpaths -#select -| StoredLDAPInjection.cs:22:66:22:109 | ... + ... | StoredLDAPInjection.cs:22:83:22:109 | call to method GetString : String | StoredLDAPInjection.cs:22:66:22:109 | ... + ... | This LDAP query depends on a $@. | StoredLDAPInjection.cs:22:83:22:109 | call to method GetString | stored (potentially user-provided) value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.qlref b/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.qlref deleted file mode 100644 index 0f41e1b15c90..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/StoredLDAPInjection.qlref +++ /dev/null @@ -1 +0,0 @@ -Security Features/CWE-090/StoredLDAPInjection.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.cs deleted file mode 100644 index 91b8291b5cf3..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Data.SqlClient; -using System.Xml; -using System.Xml.XPath; - -namespace Test -{ - - class StoredXPathInjection - { - - public void processRequest() - { - using (SqlConnection connection = new SqlConnection("")) - { - connection.Open(); - SqlCommand customerCommand = new SqlCommand("SELECT * FROM customers", connection); - SqlDataReader customerReader = customerCommand.ExecuteReader(); - - while (customerReader.Read()) - { - string userName = customerReader.GetString(1); - string password = customerReader.GetString(2); - // BAD: User input used directly in an XPath expression - XPathExpression.Compile("//users/user[login/text()='" + userName + "' and password/text() = '" + password + "']/home_dir/text()"); - XmlNode xmlNode = null; - // BAD: User input used directly in an XPath expression to SelectNodes - xmlNode.SelectNodes("//users/user[login/text()='" + userName + "' and password/text() = '" + password + "']/home_dir/text()"); - - // GOOD: Uses parameters to avoid including user input directly in XPath expression - XPathExpression.Compile("//users/user[login/text()=$username]/home_dir/text()"); - } - customerReader.Close(); - } - } - } -} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected deleted file mode 100644 index 0b963f38d7b5..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.expected +++ /dev/null @@ -1,20 +0,0 @@ -edges -| StoredXPathInjection.cs:22:28:22:35 | access to local variable userName : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | provenance | | -| StoredXPathInjection.cs:22:28:22:35 | access to local variable userName : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | provenance | | -| StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | StoredXPathInjection.cs:22:28:22:35 | access to local variable userName : String | provenance | | -| StoredXPathInjection.cs:23:28:23:35 | access to local variable password : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | provenance | | -| StoredXPathInjection.cs:23:28:23:35 | access to local variable password : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | provenance | | -| StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | StoredXPathInjection.cs:23:28:23:35 | access to local variable password : String | provenance | | -nodes -| StoredXPathInjection.cs:22:28:22:35 | access to local variable userName : String | semmle.label | access to local variable userName : String | -| StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | semmle.label | call to method GetString : String | -| StoredXPathInjection.cs:23:28:23:35 | access to local variable password : String | semmle.label | access to local variable password : String | -| StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | semmle.label | call to method GetString : String | -| StoredXPathInjection.cs:25:45:25:148 | ... + ... | semmle.label | ... + ... | -| StoredXPathInjection.cs:28:41:28:144 | ... + ... | semmle.label | ... + ... | -subpaths -#select -| StoredXPathInjection.cs:25:45:25:148 | ... + ... | StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | This XPath expression depends on a $@. | StoredXPathInjection.cs:22:39:22:65 | call to method GetString | stored (potentially user-provided) value | -| StoredXPathInjection.cs:25:45:25:148 | ... + ... | StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | StoredXPathInjection.cs:25:45:25:148 | ... + ... | This XPath expression depends on a $@. | StoredXPathInjection.cs:23:39:23:65 | call to method GetString | stored (potentially user-provided) value | -| StoredXPathInjection.cs:28:41:28:144 | ... + ... | StoredXPathInjection.cs:22:39:22:65 | call to method GetString : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | This XPath expression depends on a $@. | StoredXPathInjection.cs:22:39:22:65 | call to method GetString | stored (potentially user-provided) value | -| StoredXPathInjection.cs:28:41:28:144 | ... + ... | StoredXPathInjection.cs:23:39:23:65 | call to method GetString : String | StoredXPathInjection.cs:28:41:28:144 | ... + ... | This XPath expression depends on a $@. | StoredXPathInjection.cs:23:39:23:65 | call to method GetString | stored (potentially user-provided) value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.qlref b/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.qlref deleted file mode 100644 index 91ffd2d2074d..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/StoredXPathInjection.qlref +++ /dev/null @@ -1 +0,0 @@ -Security Features/CWE-643/StoredXPathInjection.ql \ No newline at end of file diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.cs index 53cdbb73cc13..a42a629cc7ec 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.cs @@ -1,4 +1,5 @@ using System; +using System.Data.SqlClient; using System.Web; using System.Xml; using System.Xml.XPath; @@ -62,4 +63,30 @@ public bool IsReusable return true; } } + + public void ProcessStoredRequest() + { + + using (SqlConnection connection = new SqlConnection("")) + { + connection.Open(); + SqlCommand customerCommand = new SqlCommand("SELECT * FROM customers", connection); + SqlDataReader customerReader = customerCommand.ExecuteReader(); + + while (customerReader.Read()) + { + string userName = customerReader.GetString(1); + string password = customerReader.GetString(2); + // BAD: User input used directly in an XPath expression + XPathExpression.Compile("//users/user[login/text()='" + userName + "' and password/text() = '" + password + "']/home_dir/text()"); + XmlNode xmlNode = null; + // BAD: User input used directly in an XPath expression to SelectNodes + xmlNode.SelectNodes("//users/user[login/text()='" + userName + "' and password/text() = '" + password + "']/home_dir/text()"); + + // GOOD: Uses parameters to avoid including user input directly in XPath expression + XPathExpression.Compile("//users/user[login/text()=$username]/home_dir/text()"); + } + customerReader.Close(); + } + } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected index f722ab15f6b3..9229f3a62869 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected @@ -1,4 +1,5 @@ edges +<<<<<<< HEAD | XPathInjection.cs:10:16:10:23 | access to local variable userName : String | XPathInjection.cs:13:13:13:13 | access to local variable s : String | provenance | | | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:10:16:10:23 | access to local variable userName : String | provenance | | | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:10:27:10:61 | access to indexer : String | provenance | | @@ -29,19 +30,75 @@ nodes | XPathInjection.cs:40:21:40:21 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:46:22:46:22 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:52:21:52:21 | access to local variable s | semmle.label | access to local variable s | +======= +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:27:11:61 | access to indexer : String | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:12:27:12:61 | access to indexer : String | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | +| XPathInjection.cs:78:35:78:61 | call to method GetString : String | XPathInjection.cs:81:41:81:144 | ... + ... | provenance | | +| XPathInjection.cs:78:35:78:61 | call to method GetString : String | XPathInjection.cs:84:37:84:140 | ... + ... | provenance | | +| XPathInjection.cs:79:35:79:61 | call to method GetString : String | XPathInjection.cs:81:41:81:144 | ... + ... | provenance | | +| XPathInjection.cs:79:35:79:61 | call to method GetString : String | XPathInjection.cs:84:37:84:140 | ... + ... | provenance | | +nodes +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | semmle.label | access to indexer : String | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | semmle.label | access to indexer : String | +| XPathInjection.cs:17:33:17:33 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:20:29:20:29 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:29:20:29:20 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:35:30:35:30 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:41:21:41:21 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:47:22:47:22 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:53:21:53:21 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:78:35:78:61 | call to method GetString : String | semmle.label | call to method GetString : String | +| XPathInjection.cs:79:35:79:61 | call to method GetString : String | semmle.label | call to method GetString : String | +| XPathInjection.cs:81:41:81:144 | ... + ... | semmle.label | ... + ... | +| XPathInjection.cs:84:37:84:140 | ... + ... | semmle.label | ... + ... | +>>>>>>> 4fc83a3267 (Modify test cases) subpaths #select -| XPathInjection.cs:16:33:16:33 | access to local variable s | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:10:27:10:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:16:33:16:33 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:16:33:16:33 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:19:29:19:29 | access to local variable s | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:10:27:10:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:19:29:19:29 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:19:29:19:29 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:28:20:28:20 | access to local variable s | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:10:27:10:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:28:20:28:20 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:28:20:28:20 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:34:30:34:30 | access to local variable s | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:34:30:34:30 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:10:27:10:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:34:30:34:30 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:34:30:34:30 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:40:21:40:21 | access to local variable s | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:10:27:10:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:40:21:40:21 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:40:21:40:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:46:22:46:22 | access to local variable s | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:10:27:10:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:46:22:46:22 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:46:22:46:22 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:52:21:52:21 | access to local variable s | XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:10:27:10:49 | access to property QueryString | user-provided value | -| XPathInjection.cs:52:21:52:21 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:52:21:52:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:17:33:17:33 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:17:33:17:33 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:17:33:17:33 | access to local variable s | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:17:33:17:33 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:20:29:20:29 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:20:29:20:29 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:20:29:20:29 | access to local variable s | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:20:29:20:29 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:29:20:29:20 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:29:20:29:20 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:29:20:29:20 | access to local variable s | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:29:20:29:20 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:35:30:35:30 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:35:30:35:30 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:35:30:35:30 | access to local variable s | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:35:30:35:30 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:41:21:41:21 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:41:21:41:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:41:21:41:21 | access to local variable s | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:41:21:41:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:47:22:47:22 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:47:22:47:22 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:47:22:47:22 | access to local variable s | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:47:22:47:22 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:53:21:53:21 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:53:21:53:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:53:21:53:21 | access to local variable s | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:53:21:53:21 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | +| XPathInjection.cs:81:41:81:144 | ... + ... | XPathInjection.cs:78:35:78:61 | call to method GetString : String | XPathInjection.cs:81:41:81:144 | ... + ... | This XPath expression depends on a $@. | XPathInjection.cs:78:35:78:61 | call to method GetString | user-provided value | +| XPathInjection.cs:81:41:81:144 | ... + ... | XPathInjection.cs:79:35:79:61 | call to method GetString : String | XPathInjection.cs:81:41:81:144 | ... + ... | This XPath expression depends on a $@. | XPathInjection.cs:79:35:79:61 | call to method GetString | user-provided value | +| XPathInjection.cs:84:37:84:140 | ... + ... | XPathInjection.cs:78:35:78:61 | call to method GetString : String | XPathInjection.cs:84:37:84:140 | ... + ... | This XPath expression depends on a $@. | XPathInjection.cs:78:35:78:61 | call to method GetString | user-provided value | +| XPathInjection.cs:84:37:84:140 | ... + ... | XPathInjection.cs:79:35:79:61 | call to method GetString : String | XPathInjection.cs:84:37:84:140 | ... + ... | This XPath expression depends on a $@. | XPathInjection.cs:79:35:79:61 | call to method GetString | user-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.ext.yml b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.ext.yml new file mode 100644 index 000000000000..82f107ae1d71 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["local", true, 0] \ No newline at end of file From 1ba3efb111040c0837289bd4fc963a5b1f68a019 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Tue, 20 Feb 2024 21:51:44 -0500 Subject: [PATCH 050/731] Change note updates --- .../src/change-notes/2024-03-11-remove-stored-query-variants.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md index f62d293dc046..6b580be7e65c 100644 --- a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md +++ b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md @@ -1,5 +1,5 @@ --- category: majorAnalysis --- -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `local` threat model in your threat model settings. +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. From 4dc605354cb59a4ab8e9b1de331d6a3e6590a3d3 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Tue, 20 Feb 2024 22:19:38 -0500 Subject: [PATCH 051/731] Second-order SQL injection --- .../CWE-089/SecondOrderSqlInjection.qhelp | 6 -- .../CWE-089/SecondOrderSqlInjection.ql | 32 ----------- ...2024-03-11-remove-stored-query-variants.md | 2 +- .../CWE-089/SecondOrderSqlInjection.expected | 56 ------------------- .../CWE-089/SecondOrderSqlInjection.qlref | 1 - .../CWE-089/SqlInjection.ext.yml | 7 +++ 6 files changed, 8 insertions(+), 96 deletions(-) delete mode 100644 csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.qhelp delete mode 100644 csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.ql delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected delete mode 100644 csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.qlref create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.ext.yml diff --git a/csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.qhelp b/csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.qhelp deleted file mode 100644 index 83ec163ed784..000000000000 --- a/csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.qhelp +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.ql b/csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.ql deleted file mode 100644 index 33c2479147d8..000000000000 --- a/csharp/ql/src/Security Features/CWE-089/SecondOrderSqlInjection.ql +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @name SQL query built from stored user-controlled sources - * @description Building a SQL query from stored user-controlled sources is vulnerable to insertion - * of malicious SQL code by the user. - * @kind path-problem - * @problem.severity error - * @security-severity 8.8 - * @precision medium - * @id cs/second-order-sql-injection - * @tags security - * external/cwe/cwe-089 - */ - -import csharp -import semmle.code.csharp.security.dataflow.SqlInjectionQuery -import semmle.code.csharp.security.dataflow.flowsources.Stored -import StoredSqlInjection::PathGraph - -module StoredSqlInjectionConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof StoredFlowSource } - - predicate isSink = SqlInjectionConfig::isSink/1; - - predicate isBarrier = SqlInjectionConfig::isBarrier/1; -} - -module StoredSqlInjection = TaintTracking::Global; - -from StoredSqlInjection::PathNode source, StoredSqlInjection::PathNode sink -where StoredSqlInjection::flowPath(source, sink) -select sink.getNode(), source, sink, "This SQL query depends on a $@.", source.getNode(), - "stored user-provided value" diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md index 6b580be7e65c..f86836b1219f 100644 --- a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md +++ b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md @@ -1,5 +1,5 @@ --- category: majorAnalysis --- -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`. `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected deleted file mode 100644 index fccccdb3c738..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.expected +++ /dev/null @@ -1,56 +0,0 @@ -edges -| SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | provenance | | -| SecondOrderSqlInjection.cs:33:31:33:32 | access to local variable fs : FileStream | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | provenance | | -| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:33:31:33:32 | access to local variable fs : FileStream | provenance | | -| SecondOrderSqlInjection.cs:35:37:35:38 | access to local variable sr : StreamReader | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | provenance | | -| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | SecondOrderSqlInjection.cs:35:37:35:38 | access to local variable sr : StreamReader | provenance | | -| SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | provenance | | -| SecondOrderSqlInjection.cs:38:29:38:31 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | provenance | | -| SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | provenance | | -| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | SecondOrderSqlInjection.cs:38:29:38:31 | access to local variable sql : String | provenance | | -| SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | provenance | | -| SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | provenance | | -| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | provenance | | -| SqlInjectionSqlite.cs:49:31:49:32 | access to local variable fs : FileStream | SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | provenance | | -| SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | SqlInjectionSqlite.cs:49:31:49:32 | access to local variable fs : FileStream | provenance | | -| SqlInjectionSqlite.cs:51:37:51:38 | access to local variable sr : StreamReader | SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | provenance | | -| SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | SqlInjectionSqlite.cs:51:37:51:38 | access to local variable sr : StreamReader | provenance | | -| SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | provenance | | -| SqlInjectionSqlite.cs:54:29:54:31 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | provenance | | -| SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | provenance | | -| SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | SqlInjectionSqlite.cs:54:29:54:31 | access to local variable sql : String | provenance | | -| SqlInjectionSqlite.cs:56:25:56:27 | access to local variable sql : String | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | provenance | | -| SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | provenance | | -| SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | SqlInjectionSqlite.cs:56:25:56:27 | access to local variable sql : String | provenance | | -nodes -| SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | semmle.label | ... + ... | -| SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | semmle.label | call to method GetString : String | -| SecondOrderSqlInjection.cs:33:31:33:32 | access to local variable fs : FileStream | semmle.label | access to local variable fs : FileStream | -| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | semmle.label | object creation of type FileStream : FileStream | -| SecondOrderSqlInjection.cs:35:37:35:38 | access to local variable sr : StreamReader | semmle.label | access to local variable sr : StreamReader | -| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | semmle.label | object creation of type StreamReader : StreamReader | -| SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | semmle.label | access to local variable fs : FileStream | -| SecondOrderSqlInjection.cs:38:29:38:31 | access to local variable sql : String | semmle.label | access to local variable sql : String | -| SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | semmle.label | access to local variable sr : StreamReader | -| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | -| SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | semmle.label | access to local variable sql : String | -| SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | semmle.label | access to local variable sql : String | -| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | semmle.label | call to method Trim : String | -| SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | semmle.label | access to local variable sql | -| SqlInjectionSqlite.cs:49:31:49:32 | access to local variable fs : FileStream | semmle.label | access to local variable fs : FileStream | -| SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | semmle.label | object creation of type FileStream : FileStream | -| SqlInjectionSqlite.cs:51:37:51:38 | access to local variable sr : StreamReader | semmle.label | access to local variable sr : StreamReader | -| SqlInjectionSqlite.cs:51:42:51:76 | object creation of type StreamReader : StreamReader | semmle.label | object creation of type StreamReader : StreamReader | -| SqlInjectionSqlite.cs:51:59:51:60 | access to local variable fs : FileStream | semmle.label | access to local variable fs : FileStream | -| SqlInjectionSqlite.cs:54:29:54:31 | access to local variable sql : String | semmle.label | access to local variable sql : String | -| SqlInjectionSqlite.cs:54:35:54:36 | access to local variable sr : StreamReader | semmle.label | access to local variable sr : StreamReader | -| SqlInjectionSqlite.cs:54:35:54:47 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | -| SqlInjectionSqlite.cs:56:25:56:27 | access to local variable sql : String | semmle.label | access to local variable sql : String | -| SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | semmle.label | access to local variable sql : String | -| SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | semmle.label | call to method Trim : String | -| SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | semmle.label | access to local variable sql | -subpaths -#select -| SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | This SQL query depends on a $@. | SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString | stored user-provided value | -| SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | This SQL query depends on a $@. | SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream | stored user-provided value | -| SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | This SQL query depends on a $@. | SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream | stored user-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.qlref b/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.qlref deleted file mode 100644 index 265e69959850..000000000000 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SecondOrderSqlInjection.qlref +++ /dev/null @@ -1 +0,0 @@ -Security Features/CWE-089/SecondOrderSqlInjection.ql diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.ext.yml b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.ext.yml new file mode 100644 index 000000000000..82f107ae1d71 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["local", true, 0] \ No newline at end of file From 45e1be875c187cdd72a4a9a9050b1708a8e2e467 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Wed, 21 Feb 2024 13:19:43 -0500 Subject: [PATCH 052/731] Fix test expectations --- .../CWE-079/StoredXSS/StoredXSS.expected | 2 +- .../CWE-089/SqlInjection.expected | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected index 488df85e1c4f..cad4dc8f7419 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-079/StoredXSS/StoredXSS.expected @@ -5,4 +5,4 @@ nodes | StoredXSS.cs:22:60:22:86 | call to method GetString : String | semmle.label | call to method GetString : String | subpaths #select -| StoredXSS.cs:22:44:22:86 | ... + ... | StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | This HTML or JavaScript write depends on a $@. | StoredXSS.cs:22:60:22:86 | call to method GetString | stored (potentially user-provided) value | +| StoredXSS.cs:22:44:22:86 | ... + ... | StoredXSS.cs:22:60:22:86 | call to method GetString : String | StoredXSS.cs:22:44:22:86 | ... + ... | $@ flows to here and is written to HTML or JavaScript. | StoredXSS.cs:22:60:22:86 | call to method GetString : String | User-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected index 4b4da20c97a5..abc86ce1fc1c 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected @@ -1,5 +1,16 @@ edges +<<<<<<< HEAD | SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | SqlInjection.cs:34:50:34:55 | access to local variable query1 | provenance | | +======= +| SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | provenance | | +| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | provenance | | +| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | provenance | | +| SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | provenance | | +| SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | provenance | | +| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | provenance | | +| SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | provenance | | +| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | provenance | | +>>>>>>> 1ebb89f785 (Fix test expectations) | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:33:21:33:40 | access to property Text : String | provenance | | | SqlInjection.cs:33:21:33:40 | access to property Text : String | SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | provenance | | | SqlInjection.cs:67:25:67:30 | access to local variable query1 : String | SqlInjection.cs:69:56:69:61 | access to local variable query1 | provenance | | @@ -50,7 +61,20 @@ edges | SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | provenance | | | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | SqlInjectionSqlite.cs:56:25:56:27 | access to local variable sql : String | provenance | | nodes +<<<<<<< HEAD | SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | +======= +| SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | semmle.label | ... + ... | +| SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | semmle.label | call to method GetString : String | +| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | semmle.label | object creation of type FileStream : FileStream | +| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | semmle.label | object creation of type StreamReader : StreamReader | +| SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | semmle.label | access to local variable fs : FileStream | +| SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | semmle.label | access to local variable sr : StreamReader | +| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | +| SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | semmle.label | access to local variable sql : String | +| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | semmle.label | call to method Trim : String | +| SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | semmle.label | access to local variable sql | +>>>>>>> 1ebb89f785 (Fix test expectations) | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | | SqlInjection.cs:33:21:33:40 | access to property Text : String | semmle.label | access to property Text : String | | SqlInjection.cs:34:50:34:55 | access to local variable query1 | semmle.label | access to local variable query1 | @@ -118,6 +142,8 @@ nodes | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | semmle.label | access to local variable sql | subpaths #select +| SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | This query depends on $@. | SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | this database input | +| SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | This query depends on $@. | SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | this file stream | | SqlInjection.cs:34:50:34:55 | access to local variable query1 | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:34:50:34:55 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | this ASP.NET user input | | SqlInjection.cs:69:56:69:61 | access to local variable query1 | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:69:56:69:61 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | this ASP.NET user input | | SqlInjection.cs:70:55:70:60 | access to local variable query1 | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:70:55:70:60 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | this ASP.NET user input | @@ -136,4 +162,5 @@ subpaths | SqlInjectionSqlite.cs:33:49:33:66 | access to property Text | SqlInjectionSqlite.cs:33:49:33:61 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:33:49:33:66 | access to property Text | This query depends on $@. | SqlInjectionSqlite.cs:33:49:33:61 | access to field untrustedData : TextBox | this ASP.NET user input | | SqlInjectionSqlite.cs:39:45:39:62 | access to property Text | SqlInjectionSqlite.cs:39:45:39:57 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:39:45:39:62 | access to property Text | This query depends on $@. | SqlInjectionSqlite.cs:39:45:39:57 | access to field untrustedData : TextBox | this ASP.NET user input | | SqlInjectionSqlite.cs:44:45:44:47 | access to local variable cmd | SqlInjectionSqlite.cs:24:41:24:53 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:44:45:44:47 | access to local variable cmd | This query depends on $@. | SqlInjectionSqlite.cs:24:41:24:53 | access to field untrustedData : TextBox | this ASP.NET user input | +| SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | This query depends on $@. | SqlInjectionSqlite.cs:49:36:49:84 | object creation of type FileStream : FileStream | this file stream | | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | SqlInjectionSqlite.cs:49:51:49:63 | access to field untrustedData : TextBox | SqlInjectionSqlite.cs:61:53:61:55 | access to local variable sql | This query depends on $@. | SqlInjectionSqlite.cs:49:51:49:63 | access to field untrustedData : TextBox | this ASP.NET user input | From 59b14f6a69ead708bc20e06200f939f2a0217ab5 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Mon, 26 Feb 2024 13:14:32 -0500 Subject: [PATCH 053/731] Fix test expectations (merge conflict) --- .../CWE-078/CommandInjection.expected | 76 ++++------------ .../CWE-089/SqlInjection.expected | 26 +++--- .../CWE-090/LDAPInjection.expected | 43 ++------- .../CWE-643/XPathInjection.expected | 89 +++++-------------- 4 files changed, 64 insertions(+), 170 deletions(-) diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected index 1e8317bac241..fe27701d59d0 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected @@ -1,63 +1,20 @@ edges -<<<<<<< HEAD -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:26:27:26:47 | ... + ... | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:26:50:26:66 | ... + ... | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput | provenance | | -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:25:32:25:51 | access to property Text : String | provenance | | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:28:30:28:38 | access to local variable startInfo : ProcessStartInfo | CommandInjection.cs:29:27:29:35 | access to local variable startInfo | provenance | | -| CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:28:30:28:38 | access to local variable startInfo : ProcessStartInfo | provenance | | -| CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | -| CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | -| CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | provenance | | -| CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | -| CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | provenance | | -| CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | -| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:35:27:35:40 | access to local variable startInfoProps | provenance | | -| CommandInjection.cs:34:47:34:55 | access to local variable userInput : String | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | -nodes -| CommandInjection.cs:25:20:25:28 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:25:32:25:46 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | -| CommandInjection.cs:25:32:25:51 | access to property Text : String | semmle.label | access to property Text : String | -| CommandInjection.cs:26:27:26:47 | ... + ... | semmle.label | ... + ... | -| CommandInjection.cs:26:50:26:66 | ... + ... | semmle.label | ... + ... | -| CommandInjection.cs:28:30:28:38 | access to local variable startInfo : ProcessStartInfo | semmle.label | access to local variable startInfo : ProcessStartInfo | -| CommandInjection.cs:28:42:28:83 | object creation of type ProcessStartInfo : ProcessStartInfo | semmle.label | object creation of type ProcessStartInfo : ProcessStartInfo | -| CommandInjection.cs:28:63:28:71 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:28:63:28:71 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:28:74:28:82 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:28:74:28:82 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:29:27:29:35 | access to local variable startInfo | semmle.label | access to local variable startInfo | -| CommandInjection.cs:32:13:32:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | -| CommandInjection.cs:32:39:32:47 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:32:39:32:47 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:33:13:33:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | -| CommandInjection.cs:33:40:33:48 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:33:40:33:48 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -======= +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:28:27:28:47 | ... + ... | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:28:50:28:66 | ... + ... | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:30:63:30:71 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput | provenance | | +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | provenance | | | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:27:32:27:51 | access to property Text : String | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:28:27:28:47 | ... + ... | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:28:50:28:66 | ... + ... | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:63:30:71 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | provenance | | -| CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:31:27:31:35 | access to local variable startInfo | provenance | | +| CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | provenance | | +| CommandInjection.cs:30:30:30:38 | access to local variable startInfo : ProcessStartInfo | CommandInjection.cs:31:27:31:35 | access to local variable startInfo | provenance | | +| CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:30:30:30:38 | access to local variable startInfo : ProcessStartInfo | provenance | | | CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | provenance | | @@ -68,17 +25,18 @@ nodes | CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | CommandInjection.cs:36:13:36:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | | CommandInjection.cs:51:54:51:80 | call to method GetString : String | CommandInjection.cs:51:46:51:80 | ... + ... | provenance | | nodes +| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | | CommandInjection.cs:27:32:27:51 | access to property Text : String | semmle.label | access to property Text : String | | CommandInjection.cs:28:27:28:47 | ... + ... | semmle.label | ... + ... | | CommandInjection.cs:28:50:28:66 | ... + ... | semmle.label | ... + ... | +| CommandInjection.cs:30:30:30:38 | access to local variable startInfo : ProcessStartInfo | semmle.label | access to local variable startInfo : ProcessStartInfo | | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | semmle.label | object creation of type ProcessStartInfo : ProcessStartInfo | | CommandInjection.cs:30:63:30:71 | access to local variable userInput | semmle.label | access to local variable userInput | | CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | | CommandInjection.cs:30:74:30:82 | access to local variable userInput | semmle.label | access to local variable userInput | | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | | CommandInjection.cs:31:27:31:35 | access to local variable startInfo | semmle.label | access to local variable startInfo | ->>>>>>> 4fc83a3267 (Modify test cases) | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:34:39:34:47 | access to local variable userInput | semmle.label | access to local variable userInput | | CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected index abc86ce1fc1c..c156c3def8bb 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected @@ -1,16 +1,17 @@ edges -<<<<<<< HEAD -| SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | SqlInjection.cs:34:50:34:55 | access to local variable query1 | provenance | | -======= | SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | provenance | | -| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | provenance | | -| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | provenance | | +| SecondOrderSqlInjection.cs:33:31:33:32 | access to local variable fs : FileStream | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | provenance | | +| SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:33:31:33:32 | access to local variable fs : FileStream | provenance | | +| SecondOrderSqlInjection.cs:35:37:35:38 | access to local variable sr : StreamReader | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | provenance | | +| SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | SecondOrderSqlInjection.cs:35:37:35:38 | access to local variable sr : StreamReader | provenance | | | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | provenance | | +| SecondOrderSqlInjection.cs:38:29:38:31 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | provenance | | | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | provenance | | -| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | provenance | | +| SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | SecondOrderSqlInjection.cs:38:29:38:31 | access to local variable sql : String | provenance | | +| SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | provenance | | | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | provenance | | -| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | provenance | | ->>>>>>> 1ebb89f785 (Fix test expectations) +| SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | provenance | | +| SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | SqlInjection.cs:34:50:34:55 | access to local variable query1 | provenance | | | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:33:21:33:40 | access to property Text : String | provenance | | | SqlInjection.cs:33:21:33:40 | access to property Text : String | SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | provenance | | | SqlInjection.cs:67:25:67:30 | access to local variable query1 : String | SqlInjection.cs:69:56:69:61 | access to local variable query1 | provenance | | @@ -61,20 +62,21 @@ edges | SqlInjectionSqlite.cs:56:31:56:33 | access to local variable sql : String | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | provenance | | | SqlInjectionSqlite.cs:56:31:56:40 | call to method Trim : String | SqlInjectionSqlite.cs:56:25:56:27 | access to local variable sql : String | provenance | | nodes -<<<<<<< HEAD -| SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | -======= | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | semmle.label | ... + ... | | SecondOrderSqlInjection.cs:25:119:25:145 | call to method GetString : String | semmle.label | call to method GetString : String | +| SecondOrderSqlInjection.cs:33:31:33:32 | access to local variable fs : FileStream | semmle.label | access to local variable fs : FileStream | | SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | semmle.label | object creation of type FileStream : FileStream | +| SecondOrderSqlInjection.cs:35:37:35:38 | access to local variable sr : StreamReader | semmle.label | access to local variable sr : StreamReader | | SecondOrderSqlInjection.cs:35:42:35:76 | object creation of type StreamReader : StreamReader | semmle.label | object creation of type StreamReader : StreamReader | | SecondOrderSqlInjection.cs:35:59:35:60 | access to local variable fs : FileStream | semmle.label | access to local variable fs : FileStream | +| SecondOrderSqlInjection.cs:38:29:38:31 | access to local variable sql : String | semmle.label | access to local variable sql : String | | SecondOrderSqlInjection.cs:38:35:38:36 | access to local variable sr : StreamReader | semmle.label | access to local variable sr : StreamReader | | SecondOrderSqlInjection.cs:38:35:38:47 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | +| SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | semmle.label | access to local variable sql : String | | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | semmle.label | access to local variable sql : String | | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | semmle.label | call to method Trim : String | | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | semmle.label | access to local variable sql | ->>>>>>> 1ebb89f785 (Fix test expectations) +| SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | | SqlInjection.cs:33:21:33:40 | access to property Text : String | semmle.label | access to property Text : String | | SqlInjection.cs:34:50:34:55 | access to local variable query1 | semmle.label | access to local variable query1 | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected index 87b4ba8da1e9..a04278ad9942 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-090/LDAPInjection.expected @@ -1,40 +1,16 @@ edges -<<<<<<< HEAD -| LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:14:54:14:78 | ... + ... | provenance | | -| LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:16:21:16:45 | ... + ... | provenance | | -| LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:23:21:23:45 | ... + ... | provenance | | -| LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:24:53:24:77 | ... + ... | provenance | | -| LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:27:48:27:70 | ... + ... | provenance | | -| LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | LDAPInjection.cs:29:20:29:42 | ... + ... | provenance | | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | provenance | | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:11:27:11:61 | access to indexer : String | provenance | | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | provenance | | -nodes -| LDAPInjection.cs:11:16:11:23 | access to local variable userName : String | semmle.label | access to local variable userName : String | -| LDAPInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | -| LDAPInjection.cs:11:27:11:61 | access to indexer : String | semmle.label | access to indexer : String | -| LDAPInjection.cs:14:54:14:78 | ... + ... | semmle.label | ... + ... | -| LDAPInjection.cs:16:21:16:45 | ... + ... | semmle.label | ... + ... | -| LDAPInjection.cs:23:21:23:45 | ... + ... | semmle.label | ... + ... | -| LDAPInjection.cs:24:53:24:77 | ... + ... | semmle.label | ... + ... | -| LDAPInjection.cs:27:48:27:70 | ... + ... | semmle.label | ... + ... | -| LDAPInjection.cs:29:20:29:42 | ... + ... | semmle.label | ... + ... | -======= +| LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | LDAPInjection.cs:15:54:15:78 | ... + ... | provenance | | +| LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | LDAPInjection.cs:17:21:17:45 | ... + ... | provenance | | +| LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | LDAPInjection.cs:24:21:24:45 | ... + ... | provenance | | +| LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | LDAPInjection.cs:25:53:25:77 | ... + ... | provenance | | +| LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | LDAPInjection.cs:28:48:28:70 | ... + ... | provenance | | +| LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | LDAPInjection.cs:30:20:30:42 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | provenance | | | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:12:27:12:61 | access to indexer : String | provenance | | -| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:15:54:15:78 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:17:21:17:45 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:24:21:24:45 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:25:53:25:77 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:28:48:28:70 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:30:20:30:42 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:15:54:15:78 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:17:21:17:45 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:24:21:24:45 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:25:53:25:77 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:28:48:28:70 | ... + ... | provenance | | -| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:30:20:30:42 | ... + ... | provenance | | +| LDAPInjection.cs:12:27:12:61 | access to indexer : String | LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | provenance | | | LDAPInjection.cs:41:80:41:106 | call to method GetString : String | LDAPInjection.cs:41:63:41:106 | ... + ... | provenance | | nodes +| LDAPInjection.cs:12:16:12:23 | access to local variable userName : String | semmle.label | access to local variable userName : String | | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | LDAPInjection.cs:12:27:12:61 | access to indexer : String | semmle.label | access to indexer : String | | LDAPInjection.cs:15:54:15:78 | ... + ... | semmle.label | ... + ... | @@ -45,7 +21,6 @@ nodes | LDAPInjection.cs:30:20:30:42 | ... + ... | semmle.label | ... + ... | | LDAPInjection.cs:41:63:41:106 | ... + ... | semmle.label | ... + ... | | LDAPInjection.cs:41:80:41:106 | call to method GetString : String | semmle.label | call to method GetString : String | ->>>>>>> 4fc83a3267 (Modify test cases) subpaths #select | LDAPInjection.cs:15:54:15:78 | ... + ... | LDAPInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | LDAPInjection.cs:15:54:15:78 | ... + ... | This LDAP query depends on a $@. | LDAPInjection.cs:12:27:12:49 | access to property QueryString | user-provided value | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected index 9229f3a62869..f957dc1e6a07 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-643/XPathInjection.expected @@ -1,75 +1,33 @@ edges -<<<<<<< HEAD -| XPathInjection.cs:10:16:10:23 | access to local variable userName : String | XPathInjection.cs:13:13:13:13 | access to local variable s : String | provenance | | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:10:16:10:23 | access to local variable userName : String | provenance | | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:10:27:10:61 | access to indexer : String | provenance | | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | XPathInjection.cs:10:16:10:23 | access to local variable userName : String | provenance | | -| XPathInjection.cs:11:16:11:23 | access to local variable password : String | XPathInjection.cs:13:13:13:13 | access to local variable s : String | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:16:11:23 | access to local variable password : String | provenance | | +| XPathInjection.cs:11:16:11:23 | access to local variable userName : String | XPathInjection.cs:14:13:14:13 | access to local variable s : String | provenance | | +| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:16:11:23 | access to local variable userName : String | provenance | | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:27:11:61 | access to indexer : String | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:11:16:11:23 | access to local variable password : String | provenance | | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | XPathInjection.cs:16:33:16:33 | access to local variable s | provenance | | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | XPathInjection.cs:19:29:19:29 | access to local variable s | provenance | | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | XPathInjection.cs:28:20:28:20 | access to local variable s | provenance | | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | XPathInjection.cs:34:30:34:30 | access to local variable s | provenance | | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | XPathInjection.cs:40:21:40:21 | access to local variable s | provenance | | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | XPathInjection.cs:46:22:46:22 | access to local variable s | provenance | | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | XPathInjection.cs:52:21:52:21 | access to local variable s | provenance | | -nodes -| XPathInjection.cs:10:16:10:23 | access to local variable userName : String | semmle.label | access to local variable userName : String | -| XPathInjection.cs:10:27:10:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | -| XPathInjection.cs:10:27:10:61 | access to indexer : String | semmle.label | access to indexer : String | -| XPathInjection.cs:11:16:11:23 | access to local variable password : String | semmle.label | access to local variable password : String | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | semmle.label | access to indexer : String | -| XPathInjection.cs:13:13:13:13 | access to local variable s : String | semmle.label | access to local variable s : String | -| XPathInjection.cs:16:33:16:33 | access to local variable s | semmle.label | access to local variable s | -| XPathInjection.cs:19:29:19:29 | access to local variable s | semmle.label | access to local variable s | -| XPathInjection.cs:28:20:28:20 | access to local variable s | semmle.label | access to local variable s | -| XPathInjection.cs:34:30:34:30 | access to local variable s | semmle.label | access to local variable s | -| XPathInjection.cs:40:21:40:21 | access to local variable s | semmle.label | access to local variable s | -| XPathInjection.cs:46:22:46:22 | access to local variable s | semmle.label | access to local variable s | -| XPathInjection.cs:52:21:52:21 | access to local variable s | semmle.label | access to local variable s | -======= -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:11:27:11:61 | access to indexer : String | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | -| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | +| XPathInjection.cs:11:27:11:61 | access to indexer : String | XPathInjection.cs:11:16:11:23 | access to local variable userName : String | provenance | | +| XPathInjection.cs:12:16:12:23 | access to local variable password : String | XPathInjection.cs:14:13:14:13 | access to local variable s : String | provenance | | +| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:12:16:12:23 | access to local variable password : String | provenance | | | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:12:27:12:61 | access to indexer : String | provenance | | -| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | -| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | -| XPathInjection.cs:78:35:78:61 | call to method GetString : String | XPathInjection.cs:81:41:81:144 | ... + ... | provenance | | -| XPathInjection.cs:78:35:78:61 | call to method GetString : String | XPathInjection.cs:84:37:84:140 | ... + ... | provenance | | -| XPathInjection.cs:79:35:79:61 | call to method GetString : String | XPathInjection.cs:81:41:81:144 | ... + ... | provenance | | -| XPathInjection.cs:79:35:79:61 | call to method GetString : String | XPathInjection.cs:84:37:84:140 | ... + ... | provenance | | +| XPathInjection.cs:12:27:12:61 | access to indexer : String | XPathInjection.cs:12:16:12:23 | access to local variable password : String | provenance | | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | XPathInjection.cs:17:33:17:33 | access to local variable s | provenance | | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | XPathInjection.cs:20:29:20:29 | access to local variable s | provenance | | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | XPathInjection.cs:29:20:29:20 | access to local variable s | provenance | | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | XPathInjection.cs:35:30:35:30 | access to local variable s | provenance | | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | XPathInjection.cs:41:21:41:21 | access to local variable s | provenance | | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | XPathInjection.cs:47:22:47:22 | access to local variable s | provenance | | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | XPathInjection.cs:53:21:53:21 | access to local variable s | provenance | | +| XPathInjection.cs:78:24:78:31 | access to local variable userName : String | XPathInjection.cs:81:41:81:144 | ... + ... | provenance | | +| XPathInjection.cs:78:24:78:31 | access to local variable userName : String | XPathInjection.cs:84:37:84:140 | ... + ... | provenance | | +| XPathInjection.cs:78:35:78:61 | call to method GetString : String | XPathInjection.cs:78:24:78:31 | access to local variable userName : String | provenance | | +| XPathInjection.cs:79:24:79:31 | access to local variable password : String | XPathInjection.cs:81:41:81:144 | ... + ... | provenance | | +| XPathInjection.cs:79:24:79:31 | access to local variable password : String | XPathInjection.cs:84:37:84:140 | ... + ... | provenance | | +| XPathInjection.cs:79:35:79:61 | call to method GetString : String | XPathInjection.cs:79:24:79:31 | access to local variable password : String | provenance | | nodes +| XPathInjection.cs:11:16:11:23 | access to local variable userName : String | semmle.label | access to local variable userName : String | | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | XPathInjection.cs:11:27:11:61 | access to indexer : String | semmle.label | access to indexer : String | +| XPathInjection.cs:12:16:12:23 | access to local variable password : String | semmle.label | access to local variable password : String | | XPathInjection.cs:12:27:12:49 | access to property QueryString : NameValueCollection | semmle.label | access to property QueryString : NameValueCollection | | XPathInjection.cs:12:27:12:61 | access to indexer : String | semmle.label | access to indexer : String | +| XPathInjection.cs:14:13:14:13 | access to local variable s : String | semmle.label | access to local variable s : String | | XPathInjection.cs:17:33:17:33 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:20:29:20:29 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:29:20:29:20 | access to local variable s | semmle.label | access to local variable s | @@ -77,11 +35,12 @@ nodes | XPathInjection.cs:41:21:41:21 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:47:22:47:22 | access to local variable s | semmle.label | access to local variable s | | XPathInjection.cs:53:21:53:21 | access to local variable s | semmle.label | access to local variable s | +| XPathInjection.cs:78:24:78:31 | access to local variable userName : String | semmle.label | access to local variable userName : String | | XPathInjection.cs:78:35:78:61 | call to method GetString : String | semmle.label | call to method GetString : String | +| XPathInjection.cs:79:24:79:31 | access to local variable password : String | semmle.label | access to local variable password : String | | XPathInjection.cs:79:35:79:61 | call to method GetString : String | semmle.label | call to method GetString : String | | XPathInjection.cs:81:41:81:144 | ... + ... | semmle.label | ... + ... | | XPathInjection.cs:84:37:84:140 | ... + ... | semmle.label | ... + ... | ->>>>>>> 4fc83a3267 (Modify test cases) subpaths #select | XPathInjection.cs:17:33:17:33 | access to local variable s | XPathInjection.cs:11:27:11:49 | access to property QueryString : NameValueCollection | XPathInjection.cs:17:33:17:33 | access to local variable s | This XPath expression depends on a $@. | XPathInjection.cs:11:27:11:49 | access to property QueryString | user-provided value | From 2b2ea597ce384aa1488de9c98ec7bb229ee0aa2c Mon Sep 17 00:00:00 2001 From: Angela P Wen Date: Mon, 4 Mar 2024 16:42:38 +0000 Subject: [PATCH 054/731] Fix formatting on changenotes --- ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md | 2 +- ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md index 56d2dcf5c73c..6f3a90768bab 100644 --- a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md +++ b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md index f08bd54efa20..350e049b5bfc 100644 --- a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md +++ b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file From a67218a0277be5516730cf3bdb0fb1932c14b2c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 4 Mar 2024 17:42:08 +0000 Subject: [PATCH 055/731] Release preparation for version 2.16.4 --- cpp/ql/lib/CHANGELOG.md | 6 ++++++ .../0.12.7.md} | 9 +++++---- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 7 +++++++ .../2024-02-29-non-constant-format-path-query.md | 4 ---- .../0.9.6.md} | 8 +++++--- cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../Solorigate/lib/change-notes/released/1.7.10.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../Solorigate/src/change-notes/released/1.7.10.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 14 ++++++++++++++ .../change-notes/2024-02-21-getonly-properties.md | 4 ---- .../ql/lib/change-notes/2024-02-22-no-db-stats.md | 4 ---- .../change-notes/2024-02-23-compiler-generated.md | 4 ---- .../2024-02-26-variable-capture-flow.md | 4 ---- .../2024-02-28-experimental-attribute.md | 4 ---- .../2024-02-28-refreadonly-parameter.md | 4 ---- csharp/ql/lib/change-notes/released/0.8.10.md | 13 +++++++++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../0.8.10.md} | 9 +++++---- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.9.md | 3 +++ go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 11 +++++++++++ .../lib/change-notes/2024-02-14-range-map-read.md | 4 ---- .../0.7.10.md} | 11 ++++++++--- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ++++ go/ql/src/change-notes/released/0.7.10.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ .../automodel/src/change-notes/released/0.0.17.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 11 +++++++++++ .../change-notes/2024-02-23-widget-flowsteps.md | 4 ---- java/ql/lib/change-notes/2024-02-27-error-types.md | 4 ---- .../lib/change-notes/2024-02-27-mvnw-versions.md | 4 ---- java/ql/lib/change-notes/released/0.8.10.md | 10 ++++++++++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 10 ++++++++++ .../2024-02-12-android-insecure-keys.md | 4 ---- .../0.8.10.md} | 11 ++++++++--- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ javascript/ql/lib/change-notes/released/0.8.10.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ javascript/ql/src/change-notes/released/0.8.10.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ misc/suite-helpers/change-notes/released/0.7.10.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 7 +++++++ .../2024-02-28-iterable-unpacking-module-scope.md | 4 ---- .../0.11.10.md} | 8 +++++--- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ++++++ .../0.9.10.md} | 7 ++++--- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 9 +++++++++ ...2024-02-15-activerecord_connection_sql_sinks.md | 4 ---- .../2024-02-20-activerecord-sql-sink-arguments.md | 4 ---- .../lib/change-notes/2024-02-26-arel-sqlliteral.md | 4 ---- .../lib/change-notes/2024-02-29-i18n-translate.md | 4 ---- ruby/ql/lib/change-notes/released/0.8.10.md | 8 ++++++++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 7 +++++++ .../2024-02-13-rails-more-request-sources.md | 4 ---- .../0.8.10.md} | 10 ++++++---- ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ shared/controlflow/change-notes/released/0.1.10.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ shared/dataflow/change-notes/released/0.2.1.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.10.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../rangeanalysis/change-notes/released/0.0.9.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.10.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.10.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../threat-models/change-notes/released/0.0.9.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ shared/tutorial/change-notes/released/0.2.10.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../typetracking/change-notes/released/0.2.10.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.10.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.10.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.10.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 6 ++++++ .../0.3.10.md} | 7 ++++--- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.10.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 150 files changed, 394 insertions(+), 168 deletions(-) rename cpp/ql/lib/change-notes/{2024-02-26-ir-named-destructors.md => released/0.12.7.md} (54%) delete mode 100644 cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md rename cpp/ql/src/change-notes/{2024-02-16-modelled-functions-block-flow.md => released/0.9.6.md} (77%) create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md create mode 100644 csharp/ql/lib/change-notes/released/0.8.10.md rename csharp/ql/src/change-notes/{2024-02-06-threat-models.md => released/0.8.10.md} (88%) create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.9.md delete mode 100644 go/ql/lib/change-notes/2024-02-14-range-map-read.md rename go/ql/lib/change-notes/{2024-03-04-autobuilder-changes.md => released/0.7.10.md} (68%) create mode 100644 go/ql/src/change-notes/released/0.7.10.md create mode 100644 java/ql/automodel/src/change-notes/released/0.0.17.md delete mode 100644 java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md delete mode 100644 java/ql/lib/change-notes/2024-02-27-error-types.md delete mode 100644 java/ql/lib/change-notes/2024-02-27-mvnw-versions.md create mode 100644 java/ql/lib/change-notes/released/0.8.10.md delete mode 100644 java/ql/src/change-notes/2024-02-12-android-insecure-keys.md rename java/ql/src/change-notes/{2024-03-04-sensitive-log-remove-null-from-sources.md => released/0.8.10.md} (54%) create mode 100644 javascript/ql/lib/change-notes/released/0.8.10.md create mode 100644 javascript/ql/src/change-notes/released/0.8.10.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.10.md delete mode 100644 python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md rename python/ql/lib/change-notes/{2024-03-01-dict-update-content.md => released/0.11.10.md} (52%) rename python/ql/src/change-notes/{2024-03-04-nosql-injection.md => released/0.9.10.md} (81%) delete mode 100644 ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md create mode 100644 ruby/ql/lib/change-notes/released/0.8.10.md delete mode 100644 ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md rename ruby/ql/src/change-notes/{2024-03-01-method-code-injection-sinks.md => released/0.8.10.md} (51%) create mode 100644 shared/controlflow/change-notes/released/0.1.10.md create mode 100644 shared/dataflow/change-notes/released/0.2.1.md create mode 100644 shared/mad/change-notes/released/0.2.10.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.9.md create mode 100644 shared/regex/change-notes/released/0.2.10.md create mode 100644 shared/ssa/change-notes/released/0.2.10.md create mode 100644 shared/threat-models/change-notes/released/0.0.9.md create mode 100644 shared/tutorial/change-notes/released/0.2.10.md create mode 100644 shared/typetracking/change-notes/released/0.2.10.md create mode 100644 shared/typos/change-notes/released/0.2.10.md create mode 100644 shared/util/change-notes/released/0.2.10.md create mode 100644 shared/yaml/change-notes/released/0.2.10.md rename swift/ql/lib/change-notes/{2024-02-22-extension-patch.md => released/0.3.10.md} (83%) create mode 100644 swift/ql/src/change-notes/released/0.3.10.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index b3091ec37d8f..e1c0dfbecd9a 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.12.7 + +### Minor Analysis Improvements + +* Added destructors for named objects to the intermediate representation. + ## 0.12.6 ### New Features diff --git a/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md b/cpp/ql/lib/change-notes/released/0.12.7.md similarity index 54% rename from cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md rename to cpp/ql/lib/change-notes/released/0.12.7.md index 4e35decaf8ed..856a8b665c74 100644 --- a/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md +++ b/cpp/ql/lib/change-notes/released/0.12.7.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Added destructors for named objects to the intermediate representation. \ No newline at end of file +## 0.12.7 + +### Minor Analysis Improvements + +* Added destructors for named objects to the intermediate representation. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 170a312c1047..20419e9c6100 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.6 +lastReleaseVersion: 0.12.7 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8e201fff5943..3bb9229bf94d 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.7-dev +version: 0.12.7 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index ffcd73ff5d72..f6acd424bb05 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.9.6 + +### Minor Analysis Improvements + +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. +* The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. + ## 0.9.5 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md b/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md deleted file mode 100644 index 2e5933a61e86..000000000000 --- a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md b/cpp/ql/src/change-notes/released/0.9.6.md similarity index 77% rename from cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md rename to cpp/ql/src/change-notes/released/0.9.6.md index d6ef3c3e0569..0c85f3f9f0f0 100644 --- a/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md +++ b/cpp/ql/src/change-notes/released/0.9.6.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.9.6 + +### Minor Analysis Improvements + +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. * The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 460240feafff..19139c132b2d 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.5 +lastReleaseVersion: 0.9.6 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 31bd20166b2b..4052647bb97f 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.6-dev +version: 0.9.6 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 190b83b0f25a..82eacfc84f70 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.10 + +No user-facing changes. + ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md new file mode 100644 index 000000000000..8e8007d8475f --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md @@ -0,0 +1,3 @@ +## 1.7.10 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 678da6bc37e9..31c7fe07020b 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.9 +lastReleaseVersion: 1.7.10 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 7e643b0fac33..ee993bed0c91 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.10-dev +version: 1.7.10 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 190b83b0f25a..82eacfc84f70 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.10 + +No user-facing changes. + ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md new file mode 100644 index 000000000000..8e8007d8475f --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md @@ -0,0 +1,3 @@ +## 1.7.10 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 678da6bc37e9..31c7fe07020b 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.9 +lastReleaseVersion: 1.7.10 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 8654bbfd0312..1f421754fc82 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.10-dev +version: 1.7.10 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 95fd64c52704..16cc14259e19 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,17 @@ +## 0.8.10 + +### Major Analysis Improvements + +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. + +### Minor Analysis Improvements + +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. +* C# 12: Add extractor and QL library support for `ref readonly` parameters. +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md b/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md deleted file mode 100644 index 6bb8e99c71ef..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md b/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md deleted file mode 100644 index d6ffbd523ac6..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. diff --git a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md b/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md deleted file mode 100644 index 9b1739b9b6da..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. diff --git a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md b/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md deleted file mode 100644 index 66ab65083dc3..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md b/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md deleted file mode 100644 index 8749c790954e..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. diff --git a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md b/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md deleted file mode 100644 index 586b5341d293..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Add extractor and QL library support for `ref readonly` parameters. diff --git a/csharp/ql/lib/change-notes/released/0.8.10.md b/csharp/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..f591ddc5b21a --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,13 @@ +## 0.8.10 + +### Major Analysis Improvements + +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. + +### Minor Analysis Improvements + +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. +* C# 12: Add extractor and QL library support for `ref readonly` parameters. +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index d75ea3c63207..93c5c1120a24 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.10-dev +version: 0.8.10 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 9fe1609363fc..46c939e5cee1 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/2024-02-06-threat-models.md b/csharp/ql/src/change-notes/released/0.8.10.md similarity index 88% rename from csharp/ql/src/change-notes/2024-02-06-threat-models.md rename to csharp/ql/src/change-notes/released/0.8.10.md index 69ac4e4dc17a..702161c3d28f 100644 --- a/csharp/ql/src/change-notes/2024-02-06-threat-models.md +++ b/csharp/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. \ No newline at end of file +## 0.8.10 + +### Minor Analysis Improvements + +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 9ee23cc73078..46384094b19e 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.10-dev +version: 0.8.10 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index fba2a8703562..a59e560c4155 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.9.md b/go/ql/consistency-queries/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index b574796b9954..d5a2fbee5f19 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.9-dev +version: 0.0.9 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 65a2376217b1..fee5fd37a267 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.7.10 + +### Major Analysis Improvements + +* We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. +* Go 1.22 has been included in the range of supported Go versions. + +### Bug Fixes + +* Fixed dataflow out of a `map` using a `range` statement. + ## 0.7.9 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-02-14-range-map-read.md b/go/ql/lib/change-notes/2024-02-14-range-map-read.md deleted file mode 100644 index ea45737a72ea..000000000000 --- a/go/ql/lib/change-notes/2024-02-14-range-map-read.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md b/go/ql/lib/change-notes/released/0.7.10.md similarity index 68% rename from go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md rename to go/ql/lib/change-notes/released/0.7.10.md index 0442a571029f..55954f8a3945 100644 --- a/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md +++ b/go/ql/lib/change-notes/released/0.7.10.md @@ -1,5 +1,10 @@ ---- -category: majorAnalysis ---- +## 0.7.10 + +### Major Analysis Improvements + * We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. * Go 1.22 has been included in the range of supported Go versions. + +### Bug Fixes + +* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index f21e478efa68..8cc190fa880a 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.10-dev +version: 0.7.10 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index d95165a3a34e..24e38b9890e1 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.10 + +No user-facing changes. + ## 0.7.9 ### New Queries diff --git a/go/ql/src/change-notes/released/0.7.10.md b/go/ql/src/change-notes/released/0.7.10.md new file mode 100644 index 000000000000..989c5b8f6823 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.10.md @@ -0,0 +1,3 @@ +## 0.7.10 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index d91cab596127..4ded3a52f63e 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.10-dev +version: 0.7.10 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 4a3c54adb385..c3282c773a9d 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.17 + +No user-facing changes. + ## 0.0.16 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.17.md b/java/ql/automodel/src/change-notes/released/0.0.17.md new file mode 100644 index 000000000000..62cc89030a62 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.17.md @@ -0,0 +1,3 @@ +## 0.0.17 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index a49f7be4cff3..cbc3d3cd4934 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.16 +lastReleaseVersion: 0.0.17 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 898239be0989..59fab0cdcc53 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.17-dev +version: 0.0.17 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index d369cbdc9318..2a02ccee6abb 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. + +### Bug Fixes + +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. + ## 0.8.9 ### Deprecated APIs diff --git a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md b/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md deleted file mode 100644 index eb560fba07da..000000000000 --- a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/change-notes/2024-02-27-error-types.md b/java/ql/lib/change-notes/2024-02-27-error-types.md deleted file mode 100644 index cdc6d7620aa8..000000000000 --- a/java/ql/lib/change-notes/2024-02-27-error-types.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. diff --git a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md b/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md deleted file mode 100644 index a0227088ae97..000000000000 --- a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. diff --git a/java/ql/lib/change-notes/released/0.8.10.md b/java/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..b45f14bf347a --- /dev/null +++ b/java/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,10 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. + +### Bug Fixes + +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 15b4982d41eb..428eedc75e3d 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.10-dev +version: 0.8.10 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 5d8353514538..c61275f5ed84 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.10 + +### New Queries + +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. + +### Minor Analysis Improvements + +* To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. + ## 0.8.9 ### New Queries diff --git a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md b/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md deleted file mode 100644 index 1de077277962..000000000000 --- a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md b/java/ql/src/change-notes/released/0.8.10.md similarity index 54% rename from java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md rename to java/ql/src/change-notes/released/0.8.10.md index 0bb4f18f2bd9..c5d18ae33794 100644 --- a/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md +++ b/java/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,9 @@ ---- -category: minorAnalysis ---- +## 0.8.10 + +### New Queries + +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. + +### Minor Analysis Improvements + * To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 8f4de528e213..ebbdbeee3b2c 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.10-dev +version: 0.8.10 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 5b97ebbb22b3..d5edcc005131 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.10 + +No user-facing changes. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.10.md b/javascript/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..777bbd2fdede --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,3 @@ +## 0.8.10 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index ef3ca7521aca..da16493a21c9 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.10-dev +version: 0.8.10 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 85516e3625d1..b9627cac5eee 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.10 + +No user-facing changes. + ## 0.8.9 ### Bug Fixes diff --git a/javascript/ql/src/change-notes/released/0.8.10.md b/javascript/ql/src/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..777bbd2fdede --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.10.md @@ -0,0 +1,3 @@ +## 0.8.10 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index b6181aa30e99..d224952c5641 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.10-dev +version: 0.8.10 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 3c06dd69b0f5..1c4455b66c43 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.10 + +No user-facing changes. + ## 0.7.9 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.10.md b/misc/suite-helpers/change-notes/released/0.7.10.md new file mode 100644 index 000000000000..989c5b8f6823 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.10.md @@ -0,0 +1,3 @@ +## 0.7.10 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 49b7a6bda4c2..54d978d5efe7 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.10-dev +version: 0.7.10 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index e6f318c51ea8..f095607ca1bf 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.11.10 + +### Minor Analysis Improvements + +* Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. + ## 0.11.9 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md b/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md deleted file mode 100644 index 3c47c6ba866a..000000000000 --- a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/change-notes/2024-03-01-dict-update-content.md b/python/ql/lib/change-notes/released/0.11.10.md similarity index 52% rename from python/ql/lib/change-notes/2024-03-01-dict-update-content.md rename to python/ql/lib/change-notes/released/0.11.10.md index dfb8d247fffa..ed873724e4f2 100644 --- a/python/ql/lib/change-notes/2024-03-01-dict-update-content.md +++ b/python/ql/lib/change-notes/released/0.11.10.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.11.10 + +### Minor Analysis Improvements + * Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index b064d1778a10..ddddcbe9193d 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.9 +lastReleaseVersion: 0.11.10 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index e9f66e205f24..59a8b4c96d17 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.10-dev +version: 0.11.10 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 50762bcbf34e..d4245aba7a62 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.9.10 + +### New Queries + +* The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. + ## 0.9.9 No user-facing changes. diff --git a/python/ql/src/change-notes/2024-03-04-nosql-injection.md b/python/ql/src/change-notes/released/0.9.10.md similarity index 81% rename from python/ql/src/change-notes/2024-03-04-nosql-injection.md rename to python/ql/src/change-notes/released/0.9.10.md index 6e98540c757c..4cbb221b789f 100644 --- a/python/ql/src/change-notes/2024-03-04-nosql-injection.md +++ b/python/ql/src/change-notes/released/0.9.10.md @@ -1,4 +1,5 @@ ---- -category: newQuery ---- +## 0.9.10 + +### New Queries + * The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index aabed7c396b7..d086ed69541d 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.9 +lastReleaseVersion: 0.9.10 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index aa18f2d87074..c920f667836b 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.10-dev +version: 0.9.10 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a623a151e891..c61a12e0f4ad 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,12 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md b/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md deleted file mode 100644 index c2276f284a84..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md b/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md deleted file mode 100644 index 1486c7a472d1..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md deleted file mode 100644 index 6f3a90768bab..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md deleted file mode 100644 index 350e049b5bfc..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/released/0.8.10.md b/ruby/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..666e28f840e7 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,8 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 7d409b83adbd..de5b41999fe1 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.10-dev +version: 0.8.10 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 4149c728effa..f875b6d16ad4 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. +* Added additional request sources for Ruby on Rails. + ## 0.8.9 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md b/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md deleted file mode 100644 index 84ea696dfef4..000000000000 --- a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added additional request sources for Ruby on Rails. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md b/ruby/ql/src/change-notes/released/0.8.10.md similarity index 51% rename from ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md rename to ruby/ql/src/change-notes/released/0.8.10.md index 43e40d3fd536..985cdf8d22e0 100644 --- a/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md +++ b/ruby/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- -* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. \ No newline at end of file +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. +* Added additional request sources for Ruby on Rails. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 8af7f9fd7976..5e3792682346 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.10-dev +version: 0.8.10 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index dbfa6ef4512d..75f2ca53f987 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.10 + +No user-facing changes. + ## 0.1.9 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.10.md b/shared/controlflow/change-notes/released/0.1.10.md new file mode 100644 index 000000000000..47358eeee934 --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.10.md @@ -0,0 +1,3 @@ +## 0.1.10 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 1425c0edf7f8..30f5ca88be0e 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.9 +lastReleaseVersion: 0.1.10 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 9d35a6782761..1d43802be421 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.10-dev +version: 0.1.10 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 67a5bf589f4f..ef80788bded6 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1 + +No user-facing changes. + ## 0.2.0 ### Breaking Changes diff --git a/shared/dataflow/change-notes/released/0.2.1.md b/shared/dataflow/change-notes/released/0.2.1.md new file mode 100644 index 000000000000..3dbfc85fe11d --- /dev/null +++ b/shared/dataflow/change-notes/released/0.2.1.md @@ -0,0 +1,3 @@ +## 0.2.1 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 5274e27ed522..df29a726bccc 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.0 +lastReleaseVersion: 0.2.1 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 1e7becf71c4f..ee422e02ea9a 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.1-dev +version: 0.2.1 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 4d09057118ce..4730366775ea 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.10.md b/shared/mad/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/mad/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 22c8f271ccc6..6d7269ef3da8 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 5b8dbcfab22c..9943dcb79727 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.9.md b/shared/rangeanalysis/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 836fe51ee344..01db5d5734d0 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.9-dev +version: 0.0.9 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index cd5f91f71ec1..c05869c153d3 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.10.md b/shared/regex/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/regex/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index ea3f7f9b2389..0d4f485312f7 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 01acfae01489..a9161ff578b0 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.10.md b/shared/ssa/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 19304ad107f1..2ad254711a50 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index fba2a8703562..a59e560c4155 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.9.md b/shared/threat-models/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index d0ed9a913b21..60cbbc56fcb3 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.9-dev +version: 0.0.9 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 1db3a01af0b1..560ad058d5b3 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.10.md b/shared/tutorial/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index b595ae9ee70a..69116705c1bf 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index afc857bc6bce..350f9ecbeae0 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.10.md b/shared/typetracking/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index b55927f59bb7..fbbdcf5162a1 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 66c5871d9821..54b1eaa4d589 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.10.md b/shared/typos/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/typos/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 644bfe11bff7..4d59d9b3c342 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 63832e927fa5..1ca1f71bcbc2 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.10.md b/shared/util/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/util/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index ca1a866a53d4..28ed738a93dd 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index e5495abcd503..9fd5ebc26ab2 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.10.md b/shared/yaml/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index de5b47e120ae..9643ffcec66b 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index e88cd0259ccf..8f14bfcedc9c 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.3.10 + +### Bug Fixes + +* Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. + ## 0.3.9 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/2024-02-22-extension-patch.md b/swift/ql/lib/change-notes/released/0.3.10.md similarity index 83% rename from swift/ql/lib/change-notes/2024-02-22-extension-patch.md rename to swift/ql/lib/change-notes/released/0.3.10.md index 7bd78f3b785c..9d6286ff58a7 100644 --- a/swift/ql/lib/change-notes/2024-02-22-extension-patch.md +++ b/swift/ql/lib/change-notes/released/0.3.10.md @@ -1,4 +1,5 @@ ---- -category: fix ---- +## 0.3.10 + +### Bug Fixes + * Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 3fa5180bcb49..76ca0ac8ba76 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.9 +lastReleaseVersion: 0.3.10 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index a37a4cb3d580..70ec4798ea85 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.10-dev +version: 0.3.10 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 96615d069729..bda9834c9bca 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.10 + +No user-facing changes. + ## 0.3.9 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.10.md b/swift/ql/src/change-notes/released/0.3.10.md new file mode 100644 index 000000000000..925a48fc52e0 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.10.md @@ -0,0 +1,3 @@ +## 0.3.10 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 3fa5180bcb49..76ca0ac8ba76 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.9 +lastReleaseVersion: 0.3.10 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index e3ead42c98bf..ba66b065529b 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.10-dev +version: 0.3.10 groups: - swift - queries From 87f3b43576864cc32cd9b677bf62273c506388f1 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 5 Mar 2024 08:28:16 +0000 Subject: [PATCH 056/731] Ruby: remove deprecated private class --- ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index c8667b2b2f23..6fde1705018a 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -441,11 +441,6 @@ class ActionControllerSkipForgeryProtectionCall extends CsrfProtectionSetting::R override boolean getVerificationSetting() { result = false } } -/** - * DEPRECATED: Use `ActionController::ProtectFromForgeryCall` instead. - */ -deprecated class ActionControllerProtectFromForgeryCall = ActionController::ProtectFromForgeryCall; - /** * A call to `send_file`, which sends the file at the given path to the client. */ From 179aaa134201089df6374ff5ba2132df749d3e12 Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 5 Mar 2024 09:35:18 +0000 Subject: [PATCH 057/731] Ruby: model Open4.popen4ext --- .../lib/codeql/ruby/frameworks/stdlib/Open3.qll | 16 ++++++++++++++-- .../frameworks/stdlib/Open3.expected | 4 ++++ .../library-tests/frameworks/stdlib/Open3.rb | 4 ++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll index 16b9ecc37978..0e9b6245880e 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Open3.qll @@ -38,14 +38,26 @@ module Open3 { */ class Open4Call extends SystemCommandExecution::Range instanceof DataFlow::CallNode { Open4Call() { - this = API::getTopLevelMember("Open4").getAMethodCall(["open4", "popen4", "spawn"]) + this = + API::getTopLevelMember("Open4").getAMethodCall(["open4", "popen4", "spawn", "popen4ext"]) } - override DataFlow::Node getAnArgument() { result = super.getArgument(_) } + override DataFlow::Node getAnArgument() { + // `popen4ext` takes an optional boolean as its first argument, but it is unlikely that we will be + // tracking flow into a boolean value so it doesn't seem worth modeling that special case here. + result = super.getArgument(_) + } override predicate isShellInterpreted(DataFlow::Node arg) { super.getNumberOfArguments() = 1 and arg = this.getAnArgument() + or + // ```rb + // Open4.popen4ext(true, "some cmd") + // ``` + super.getNumberOfArguments() = 2 and + super.getArgument(0).getConstantValue().isBoolean(_) and + arg = super.getArgument(1) } } diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected index 48bc6fc27f68..9589d721a296 100644 --- a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected +++ b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.expected @@ -15,3 +15,7 @@ open4CallExecutions | Open3.rb:13:1:13:24 | call to open4 | | Open3.rb:14:1:14:25 | call to popen4 | | Open3.rb:15:1:15:23 | call to spawn | +| Open3.rb:16:1:16:27 | call to popen4ext | +| Open3.rb:17:1:17:30 | call to popen4ext | +| Open3.rb:18:1:18:33 | call to popen4ext | +| Open3.rb:19:1:19:36 | call to popen4ext | diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb index 4a112335ffb7..9cc7ea7fd5c4 100644 --- a/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb +++ b/ruby/ql/test/library-tests/frameworks/stdlib/Open3.rb @@ -13,3 +13,7 @@ Open4::open4("echo foo") Open4::popen4("echo foo") Open4.spawn("echo bar") +Open4.popen4ext("echo foo") +Open4.popen4ext("echo", "foo") +Open4.popen4ext(true, "echo foo") +Open4.popen4ext(true, "echo", "foo") From 91cb2a37fd4ec3d8d9a2effa4f1e51761792d9db Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 5 Mar 2024 10:19:22 +0000 Subject: [PATCH 058/731] Ruby: Model Process.exec --- ruby/ql/lib/codeql/ruby/frameworks/Stdlib.qll | 1 + .../codeql/ruby/frameworks/stdlib/Process.qll | 14 ++++++++ .../stdlib/CommandExecution.expected | 32 +++++++++++++++++++ .../frameworks/stdlib/CommandExecution.ql | 12 +++++++ .../frameworks/stdlib/process.rb | 5 +++ 5 files changed, 64 insertions(+) create mode 100644 ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.expected create mode 100644 ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.ql create mode 100644 ruby/ql/test/library-tests/frameworks/stdlib/process.rb diff --git a/ruby/ql/lib/codeql/ruby/frameworks/Stdlib.qll b/ruby/ql/lib/codeql/ruby/frameworks/Stdlib.qll index f735f9daf8b5..139f1d619d6a 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/Stdlib.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/Stdlib.qll @@ -5,3 +5,4 @@ import stdlib.Open3 import stdlib.Logger import stdlib.Pathname +import stdlib.Process diff --git a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll index 1ffc15d691b8..e4516f220388 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/stdlib/Process.qll @@ -32,4 +32,18 @@ module Process { super.getNumberOfArguments() = 1 and arg = this.getAnArgument() } } + + /** + * A system command executed via the `Process.exec` method. + */ + class ExecCall extends SystemCommandExecution::Range instanceof DataFlow::CallNode { + ExecCall() { this = DataFlow::getConstant("Process").getAMethodCall("exec") } + + override DataFlow::Node getAnArgument() { result = super.getArgument(_) } + + override predicate isShellInterpreted(DataFlow::Node arg) { + // Process.exec invokes a subshell if you provide a single string as argument + super.getNumberOfArguments() = 1 and arg = this.getAnArgument() + } + } } diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.expected b/ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.expected new file mode 100644 index 000000000000..e29aaf35baca --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.expected @@ -0,0 +1,32 @@ +| Open3.rb:1:1:1:24 | call to popen3 | Open3.rb:1:14:1:23 | "echo foo" | true | +| Open3.rb:2:1:2:24 | call to popen2 | Open3.rb:2:14:2:23 | "echo foo" | true | +| Open3.rb:3:1:3:25 | call to popen2e | Open3.rb:3:15:3:24 | "echo foo" | true | +| Open3.rb:4:1:4:26 | call to capture3 | Open3.rb:4:16:4:25 | "echo foo" | true | +| Open3.rb:5:1:5:26 | call to capture2 | Open3.rb:5:16:5:25 | "echo foo" | true | +| Open3.rb:6:1:6:27 | call to capture2e | Open3.rb:6:17:6:26 | "echo foo" | true | +| Open3.rb:7:1:7:41 | call to pipeline_rw | Open3.rb:7:19:7:28 | "echo foo" | true | +| Open3.rb:7:1:7:41 | call to pipeline_rw | Open3.rb:7:31:7:40 | "grep bar" | true | +| Open3.rb:8:1:8:40 | call to pipeline_r | Open3.rb:8:18:8:27 | "echo foo" | true | +| Open3.rb:8:1:8:40 | call to pipeline_r | Open3.rb:8:30:8:39 | "grep bar" | true | +| Open3.rb:9:1:9:40 | call to pipeline_w | Open3.rb:9:18:9:27 | "echo foo" | true | +| Open3.rb:9:1:9:40 | call to pipeline_w | Open3.rb:9:30:9:39 | "grep bar" | true | +| Open3.rb:10:1:10:44 | call to pipeline_start | Open3.rb:10:22:10:31 | "echo foo" | true | +| Open3.rb:10:1:10:44 | call to pipeline_start | Open3.rb:10:34:10:43 | "grep bar" | true | +| Open3.rb:11:1:11:38 | call to pipeline | Open3.rb:11:16:11:25 | "echo foo" | true | +| Open3.rb:11:1:11:38 | call to pipeline | Open3.rb:11:28:11:37 | "grep bar" | true | +| Open3.rb:13:1:13:24 | call to open4 | Open3.rb:13:14:13:23 | "echo foo" | true | +| Open3.rb:14:1:14:25 | call to popen4 | Open3.rb:14:15:14:24 | "echo foo" | true | +| Open3.rb:15:1:15:23 | call to spawn | Open3.rb:15:13:15:22 | "echo bar" | true | +| Open3.rb:16:1:16:27 | call to popen4ext | Open3.rb:16:17:16:26 | "echo foo" | true | +| Open3.rb:17:1:17:30 | call to popen4ext | Open3.rb:17:17:17:22 | "echo" | false | +| Open3.rb:17:1:17:30 | call to popen4ext | Open3.rb:17:25:17:29 | "foo" | false | +| Open3.rb:18:1:18:33 | call to popen4ext | Open3.rb:18:17:18:20 | true | false | +| Open3.rb:18:1:18:33 | call to popen4ext | Open3.rb:18:23:18:32 | "echo foo" | true | +| Open3.rb:19:1:19:36 | call to popen4ext | Open3.rb:19:17:19:20 | true | false | +| Open3.rb:19:1:19:36 | call to popen4ext | Open3.rb:19:23:19:28 | "echo" | false | +| Open3.rb:19:1:19:36 | call to popen4ext | Open3.rb:19:31:19:35 | "foo" | false | +| process.rb:1:1:1:25 | call to spawn | process.rb:1:15:1:24 | "echo foo" | true | +| process.rb:2:1:2:30 | call to spawn | process.rb:2:15:2:29 | call to [] | true | +| process.rb:3:1:3:24 | call to exec | process.rb:3:14:3:23 | "echo foo" | true | +| process.rb:4:1:4:29 | call to exec | process.rb:4:14:4:28 | call to [] | true | +| process.rb:5:1:5:21 | call to spawn | process.rb:5:11:5:20 | "echo foo" | true | diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.ql b/ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.ql new file mode 100644 index 000000000000..4de7304272b6 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/stdlib/CommandExecution.ql @@ -0,0 +1,12 @@ +import codeql.ruby.Frameworks +import codeql.ruby.Concepts +import codeql.ruby.DataFlow + +query predicate commandExecutions( + SystemCommandExecution execution, DataFlow::Node arg, boolean isShellInterpreted +) { + arg = execution.getAnArgument() and + if execution.isShellInterpreted(arg) + then isShellInterpreted = true + else isShellInterpreted = false +} diff --git a/ruby/ql/test/library-tests/frameworks/stdlib/process.rb b/ruby/ql/test/library-tests/frameworks/stdlib/process.rb new file mode 100644 index 000000000000..2a40e7fa94e0 --- /dev/null +++ b/ruby/ql/test/library-tests/frameworks/stdlib/process.rb @@ -0,0 +1,5 @@ +Process.spawn("echo foo") +Process.spawn(["echo", "foo"]) +Process.exec("echo foo") +Process.exec(["echo", "foo"]) +PTY.spawn("echo foo") From 148241183a3a52d15f145fdb97218180d37ba50b Mon Sep 17 00:00:00 2001 From: Harry Maclean Date: Tue, 5 Mar 2024 10:20:22 +0000 Subject: [PATCH 059/731] Ruby: update changenote --- ruby/ql/lib/change-notes/2024-02-27-process-spawn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md index 30feedcbd209..9c20f05d8659 100644 --- a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md +++ b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* New command injection sinks have been added, including `Process.spawn`, `Terrapin::CommandLine` and the `open4` gem. \ No newline at end of file +* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. \ No newline at end of file From 2aa093c95cde5faed2aef27e119f8266e660863b Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Tue, 5 Mar 2024 11:25:02 +0000 Subject: [PATCH 060/731] Go: Move `getImportPath` to shared `util` package --- .../cli/go-autobuilder/go-autobuilder.go | 60 +------------------ go/extractor/util/util.go | 59 ++++++++++++++++++ .../util_test.go} | 2 +- 3 files changed, 61 insertions(+), 60 deletions(-) rename go/extractor/{cli/go-autobuilder/go-autobuilder_test.go => util/util_test.go} (98%) diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index 91291c771448..b2e2a78666f6 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -3,7 +3,6 @@ package main import ( "fmt" "log" - "net/url" "os" "os/exec" "path/filepath" @@ -56,63 +55,6 @@ Build behavior: fmt.Fprintf(os.Stderr, "Usage:\n\n %s\n", os.Args[0]) } -// Returns the import path of the package being built, or "" if it cannot be determined. -func getImportPath() (importpath string) { - importpath = os.Getenv("LGTM_INDEX_IMPORT_PATH") - if importpath == "" { - repourl := os.Getenv("SEMMLE_REPO_URL") - if repourl == "" { - githubrepo := os.Getenv("GITHUB_REPOSITORY") - if githubrepo == "" { - log.Printf("Unable to determine import path, as neither LGTM_INDEX_IMPORT_PATH nor GITHUB_REPOSITORY is set\n") - return "" - } else { - importpath = "github.com/" + githubrepo - } - } else { - importpath = getImportPathFromRepoURL(repourl) - if importpath == "" { - log.Printf("Failed to determine import path from SEMMLE_REPO_URL '%s'\n", repourl) - return - } - } - } - log.Printf("Import path is '%s'\n", importpath) - return -} - -// Returns the import path of the package being built from `repourl`, or "" if it cannot be -// determined. -func getImportPathFromRepoURL(repourl string) string { - // check for scp-like URL as in "git@github.com:github/codeql-go.git" - shorturl := regexp.MustCompile(`^([^@]+@)?([^:]+):([^/].*?)(\.git)?$`) - m := shorturl.FindStringSubmatch(repourl) - if m != nil { - return m[2] + "/" + m[3] - } - - // otherwise parse as proper URL - u, err := url.Parse(repourl) - if err != nil { - log.Fatalf("Malformed repository URL '%s'\n", repourl) - } - - if u.Scheme == "file" { - // we can't determine import paths from file paths - return "" - } - - if u.Hostname() == "" || u.Path == "" { - return "" - } - - host := u.Hostname() - path := u.Path - // strip off leading slashes and trailing `.git` if present - path = regexp.MustCompile(`^/+|\.git$`).ReplaceAllString(path, "") - return host + "/" + path -} - func restoreRepoLayout(fromDir string, dirEntries []string, scratchDirName string, toDir string) { for _, dirEntry := range dirEntries { if dirEntry != scratchDirName { @@ -568,7 +510,7 @@ func installDependenciesAndBuild() { if len(workspaces) == 1 { workspace := workspaces[0] - importpath := getImportPath() + importpath := util.GetImportPath() needGopath := getNeedGopath(workspace, importpath) inLGTM := os.Getenv("LGTM_SRC") != "" || os.Getenv("LGTM_INDEX_NEED_GOPATH") != "" diff --git a/go/extractor/util/util.go b/go/extractor/util/util.go index b5b28089e789..2ae6a2b0cd2b 100644 --- a/go/extractor/util/util.go +++ b/go/extractor/util/util.go @@ -6,9 +6,11 @@ import ( "io" "io/fs" "log" + "net/url" "os" "os/exec" "path/filepath" + "regexp" "runtime" "slices" "strings" @@ -350,3 +352,60 @@ func GetParentDirs(paths []string) []string { } return dirs } + +// Returns the import path of the package being built, or "" if it cannot be determined. +func GetImportPath() (importpath string) { + importpath = os.Getenv("LGTM_INDEX_IMPORT_PATH") + if importpath == "" { + repourl := os.Getenv("SEMMLE_REPO_URL") + if repourl == "" { + githubrepo := os.Getenv("GITHUB_REPOSITORY") + if githubrepo == "" { + log.Printf("Unable to determine import path, as neither LGTM_INDEX_IMPORT_PATH nor GITHUB_REPOSITORY is set\n") + return "" + } else { + importpath = "github.com/" + githubrepo + } + } else { + importpath = getImportPathFromRepoURL(repourl) + if importpath == "" { + log.Printf("Failed to determine import path from SEMMLE_REPO_URL '%s'\n", repourl) + return + } + } + } + log.Printf("Import path is '%s'\n", importpath) + return +} + +// Returns the import path of the package being built from `repourl`, or "" if it cannot be +// determined. +func getImportPathFromRepoURL(repourl string) string { + // check for scp-like URL as in "git@github.com:github/codeql-go.git" + shorturl := regexp.MustCompile(`^([^@]+@)?([^:]+):([^/].*?)(\.git)?$`) + m := shorturl.FindStringSubmatch(repourl) + if m != nil { + return m[2] + "/" + m[3] + } + + // otherwise parse as proper URL + u, err := url.Parse(repourl) + if err != nil { + log.Fatalf("Malformed repository URL '%s'\n", repourl) + } + + if u.Scheme == "file" { + // we can't determine import paths from file paths + return "" + } + + if u.Hostname() == "" || u.Path == "" { + return "" + } + + host := u.Hostname() + path := u.Path + // strip off leading slashes and trailing `.git` if present + path = regexp.MustCompile(`^/+|\.git$`).ReplaceAllString(path, "") + return host + "/" + path +} diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder_test.go b/go/extractor/util/util_test.go similarity index 98% rename from go/extractor/cli/go-autobuilder/go-autobuilder_test.go rename to go/extractor/util/util_test.go index f4e8405fe365..45d32bda3e1b 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder_test.go +++ b/go/extractor/util/util_test.go @@ -1,4 +1,4 @@ -package main +package util import "testing" From 367ecf75d5889bb20da8e8a2123804d6cb76d79b Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Tue, 5 Mar 2024 11:37:51 +0000 Subject: [PATCH 061/731] Go: Use import path for auto-generated Go module names --- go/extractor/toolchain/toolchain.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/go/extractor/toolchain/toolchain.go b/go/extractor/toolchain/toolchain.go index 38abfd43874c..104894c59757 100644 --- a/go/extractor/toolchain/toolchain.go +++ b/go/extractor/toolchain/toolchain.go @@ -5,8 +5,10 @@ import ( "log" "os" "os/exec" + "path/filepath" "strings" + "github.com/github/codeql-go/extractor/util" "golang.org/x/mod/semver" ) @@ -81,7 +83,20 @@ func TidyModule(path string) *exec.Cmd { // Run `go mod init` in the directory given by `path`. func InitModule(path string) *exec.Cmd { - modInit := exec.Command("go", "mod", "init", "codeql/auto-project") + moduleName := "codeql/auto-project" + + if importpath := util.GetImportPath(); importpath != "" { + // This should be something like `github.com/user/repo` + moduleName = importpath + + // If we are not initialising the new module in the root directory of the workspace, + // append the relative path to the module name. + if relPath, err := filepath.Rel(".", path); err != nil && relPath != "." { + moduleName = moduleName + "/" + relPath + } + } + + modInit := exec.Command("go", "mod", "init", moduleName) modInit.Dir = path return modInit } From b1e0bc03ab34a271563ac8a5ba66577b0f59b954 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Tue, 5 Mar 2024 11:55:10 +0000 Subject: [PATCH 062/731] Go: Fix check for whether it is safe to initialise a `go.mod` file in a given directory --- go/extractor/project/project.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/go/extractor/project/project.go b/go/extractor/project/project.go index 187389ecd553..9315a33f04cf 100644 --- a/go/extractor/project/project.go +++ b/go/extractor/project/project.go @@ -439,8 +439,9 @@ func getBuildRoots(emitDiagnostics bool) (goWorkspaces []GoWorkspace, totalModul for _, component := range components { path = filepath.Join(path, component) - // Try to initialize a `go.mod` file automatically for the stray source files. - if !slices.Contains(goModDirs, path) { + // Try to initialize a `go.mod` file automatically for the stray source files if + // doing so would not place it in a parent directory of an existing `go.mod` file. + if !startsWithAnyOf(path, goModDirs) { goWorkspaces = append(goWorkspaces, GoWorkspace{ BaseDir: path, DepMode: GoGetNoModules, @@ -477,6 +478,16 @@ func getBuildRoots(emitDiagnostics bool) (goWorkspaces []GoWorkspace, totalModul return } +// Determines whether `str` starts with any of `prefixes`. +func startsWithAnyOf(str string, prefixes []string) bool { + for _, prefix := range prefixes { + if strings.HasPrefix(str, prefix) { + return true + } + } + return false +} + // Finds Go workspaces in the current working directory. func GetWorkspaceInfo(emitDiagnostics bool) []GoWorkspace { bazelPaths := slices.Concat( From ac394dc80ce6e3488285fd5abc01f2c5543ba0fb Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Tue, 5 Mar 2024 13:46:33 +0000 Subject: [PATCH 063/731] Go: Better check for path prefixes --- go/extractor/project/project.go | 2 +- go/extractor/project/project_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 go/extractor/project/project_test.go diff --git a/go/extractor/project/project.go b/go/extractor/project/project.go index 9315a33f04cf..22c0f856c798 100644 --- a/go/extractor/project/project.go +++ b/go/extractor/project/project.go @@ -481,7 +481,7 @@ func getBuildRoots(emitDiagnostics bool) (goWorkspaces []GoWorkspace, totalModul // Determines whether `str` starts with any of `prefixes`. func startsWithAnyOf(str string, prefixes []string) bool { for _, prefix := range prefixes { - if strings.HasPrefix(str, prefix) { + if relPath, err := filepath.Rel(str, prefix); err == nil && !strings.HasPrefix(relPath, "..") { return true } } diff --git a/go/extractor/project/project_test.go b/go/extractor/project/project_test.go new file mode 100644 index 000000000000..f2de420773f9 --- /dev/null +++ b/go/extractor/project/project_test.go @@ -0,0 +1,27 @@ +package project + +import ( + "path/filepath" + "testing" +) + +func testStartsWithAnyOf(t *testing.T, path string, prefix string, expectation bool) { + result := startsWithAnyOf(path, []string{prefix}) + if result != expectation { + t.Errorf("Expected startsWithAnyOf(%s, %s) to be %t, but it is %t.", path, prefix, expectation, result) + } +} + +func TestStartsWithAnyOf(t *testing.T) { + testStartsWithAnyOf(t, ".", ".", true) + testStartsWithAnyOf(t, ".", "dir", true) + testStartsWithAnyOf(t, ".", filepath.Join("foo", "bar"), true) + testStartsWithAnyOf(t, "dir", "dir", true) + testStartsWithAnyOf(t, "foo", filepath.Join("foo", "bar"), true) + testStartsWithAnyOf(t, filepath.Join("foo", "bar"), filepath.Join("foo", "bar"), true) + testStartsWithAnyOf(t, filepath.Join("foo", "bar"), filepath.Join("foo", "bar", "baz"), true) + + testStartsWithAnyOf(t, filepath.Join("foo", "bar"), "foo", false) + testStartsWithAnyOf(t, filepath.Join("foo", "bar"), "bar", false) + testStartsWithAnyOf(t, filepath.Join("foo", "bar"), filepath.Join("foo", "baz"), false) +} From a8d240dd7278a4d0e73b92daff10bfd1e7d17d98 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Tue, 5 Mar 2024 14:08:16 +0000 Subject: [PATCH 064/731] Go: Add integration test for mixed layout project --- .../go/mixed-layout/diagnostics.expected | 28 +++++++++++++++++++ .../force_sequential_test_execution | 2 ++ .../go/mixed-layout/src/module/go.mod | 5 ++++ .../go/mixed-layout/src/module/go.sum | 7 +++++ .../go/mixed-layout/src/module/test.go | 13 +++++++++ .../go/mixed-layout/src/stray-files/test.go | 13 +++++++++ .../go/mixed-layout/src/workspace/go.work | 3 ++ .../mixed-layout/src/workspace/subdir/go.mod | 5 ++++ .../mixed-layout/src/workspace/subdir/go.sum | 7 +++++ .../mixed-layout/src/workspace/subdir/test.go | 13 +++++++++ .../go/mixed-layout/test.expected | 8 ++++++ .../all-platforms/go/mixed-layout/test.py | 18 ++++++++++++ .../all-platforms/go/mixed-layout/test.ql | 8 ++++++ 13 files changed, 130 insertions(+) create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/diagnostics.expected create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/force_sequential_test_execution create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.mod create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.sum create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/test.go create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/stray-files/test.go create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/go.work create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/test.go create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/test.expected create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/test.py create mode 100644 go/ql/integration-tests/all-platforms/go/mixed-layout/test.ql diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/diagnostics.expected b/go/ql/integration-tests/all-platforms/go/mixed-layout/diagnostics.expected new file mode 100644 index 000000000000..bbbdd515d68b --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/diagnostics.expected @@ -0,0 +1,28 @@ +{ + "markdownMessage": "1 `go.work` file was found:\n\n`workspace/go.work`", + "severity": "note", + "source": { + "extractorName": "go", + "id": "go/autobuilder/go-work-found", + "name": "`go.work` file found" + }, + "visibility": { + "cliSummaryTable": false, + "statusPage": false, + "telemetry": true + } +} +{ + "markdownMessage": "Go files were found outside of the Go modules corresponding to these `go.mod` files.\n\n`workspace/subdir/go.mod`, `module/go.mod`", + "severity": "note", + "source": { + "extractorName": "go", + "id": "go/autobuilder/go-files-outside-go-modules", + "name": "Go files were found outside Go modules" + }, + "visibility": { + "cliSummaryTable": false, + "statusPage": false, + "telemetry": true + } +} diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/force_sequential_test_execution b/go/ql/integration-tests/all-platforms/go/mixed-layout/force_sequential_test_execution new file mode 100644 index 000000000000..47ca99290999 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/force_sequential_test_execution @@ -0,0 +1,2 @@ +# go get has been observed to sometimes fail when multiple tests try to simultaneously fetch the same package. +goget diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.mod b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.mod new file mode 100644 index 000000000000..0b8f33b9069d --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.mod @@ -0,0 +1,5 @@ +go 1.14 + +require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c + +module module diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.sum b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.sum new file mode 100644 index 000000000000..6c5ffa613d0a --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/go.sum @@ -0,0 +1,7 @@ +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= +golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/test.go b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/test.go new file mode 100644 index 000000000000..afc86ac3a126 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/module/test.go @@ -0,0 +1,13 @@ +package subdir + +import ( + "fmt" + + "golang.org/x/net/ipv4" +) + +func test() { + + header := ipv4.Header{} + fmt.Print(header.String()) +} diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/stray-files/test.go b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/stray-files/test.go new file mode 100644 index 000000000000..afc86ac3a126 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/stray-files/test.go @@ -0,0 +1,13 @@ +package subdir + +import ( + "fmt" + + "golang.org/x/net/ipv4" +) + +func test() { + + header := ipv4.Header{} + fmt.Print(header.String()) +} diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/go.work b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/go.work new file mode 100644 index 000000000000..e7e866fbe27d --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/go.work @@ -0,0 +1,3 @@ +go 1.22.0 + +use ./subdir diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod new file mode 100644 index 000000000000..40a3b330c385 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod @@ -0,0 +1,5 @@ +go 1.22.0 + +require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c + +module subdir diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum new file mode 100644 index 000000000000..6c5ffa613d0a --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum @@ -0,0 +1,7 @@ +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= +golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/test.go b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/test.go new file mode 100644 index 000000000000..afc86ac3a126 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/test.go @@ -0,0 +1,13 @@ +package subdir + +import ( + "fmt" + + "golang.org/x/net/ipv4" +) + +func test() { + + header := ipv4.Header{} + fmt.Print(header.String()) +} diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/test.expected b/go/ql/integration-tests/all-platforms/go/mixed-layout/test.expected new file mode 100644 index 000000000000..ddd1888562f2 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/test.expected @@ -0,0 +1,8 @@ +extractedFiles +| src/module/go.mod:0:0:0:0 | src/module/go.mod | +| src/module/test.go:0:0:0:0 | src/module/test.go | +| src/stray-files/go.mod:0:0:0:0 | src/stray-files/go.mod | +| src/stray-files/test.go:0:0:0:0 | src/stray-files/test.go | +| src/workspace/subdir/go.mod:0:0:0:0 | src/workspace/subdir/go.mod | +| src/workspace/subdir/test.go:0:0:0:0 | src/workspace/subdir/test.go | +#select diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/test.py b/go/ql/integration-tests/all-platforms/go/mixed-layout/test.py new file mode 100644 index 000000000000..43c7d1b38e88 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/test.py @@ -0,0 +1,18 @@ +import os +import subprocess + +from create_database_utils import * +from diagnostics_test_utils import * + +# Set up a GOPATH relative to this test's root directory; +# we set os.environ instead of using extra_env because we +# need it to be set for the call to "go clean -modcache" later +goPath = os.path.join(os.path.abspath(os.getcwd()), ".go") +os.environ['GOPATH'] = goPath +run_codeql_database_create([], lang="go", source="src") + +check_diagnostics() + +# Clean up the temporary GOPATH to prevent Bazel failures next +# time the tests are run; see https://github.com/golang/go/issues/27161 +subprocess.call(["go", "clean", "-modcache"]) diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/test.ql b/go/ql/integration-tests/all-platforms/go/mixed-layout/test.ql new file mode 100644 index 000000000000..459a43015602 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/test.ql @@ -0,0 +1,8 @@ +import go +import semmle.go.DiagnosticsReporting + +query predicate extractedFiles(File f) { any() } + +from string msg, int sev +where reportableDiagnostics(_, msg, sev) +select msg, sev From 40ff75db07a66f4663ba00b7d76ea8d7ff870aa6 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Tue, 5 Mar 2024 14:56:51 +0000 Subject: [PATCH 065/731] Go: Update list of expected files for `single-go-mod-and-go-files-not-under-it` test --- .../go/single-go-mod-and-go-files-not-under-it/test.expected | 2 -- 1 file changed, 2 deletions(-) diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.expected b/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.expected index 957d2f845a41..66ba3ef588fd 100644 --- a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.expected +++ b/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/test.expected @@ -1,6 +1,4 @@ extractedFiles -| src/go.mod:0:0:0:0 | src/go.mod | -| src/main.go:0:0:0:0 | src/main.go | | src/subdir/go.mod:0:0:0:0 | src/subdir/go.mod | | src/subdir/subsubdir/add.go:0:0:0:0 | src/subdir/subsubdir/add.go | | src/subdir/test.go:0:0:0:0 | src/subdir/test.go | From 967963a6534b1fcdda3d4f5b6960c29346516303 Mon Sep 17 00:00:00 2001 From: Angela P Wen Date: Tue, 5 Mar 2024 08:53:33 -0800 Subject: [PATCH 066/731] Revert "Release preparation for version 2.16.4" --- cpp/ql/lib/CHANGELOG.md | 6 ------ ....12.7.md => 2024-02-26-ir-named-destructors.md} | 9 ++++----- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 7 ------- ...=> 2024-02-16-modelled-functions-block-flow.md} | 8 +++----- .../2024-02-29-non-constant-format-path-query.md | 4 ++++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ---- .../Solorigate/lib/change-notes/released/1.7.10.md | 3 --- .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ---- .../Solorigate/src/change-notes/released/1.7.10.md | 3 --- .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 14 -------------- .../change-notes/2024-02-21-getonly-properties.md | 4 ++++ .../ql/lib/change-notes/2024-02-22-no-db-stats.md | 4 ++++ .../change-notes/2024-02-23-compiler-generated.md | 4 ++++ .../2024-02-26-variable-capture-flow.md | 4 ++++ .../2024-02-28-experimental-attribute.md | 4 ++++ .../2024-02-28-refreadonly-parameter.md | 4 ++++ csharp/ql/lib/change-notes/released/0.8.10.md | 13 ------------- csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ------ .../0.8.10.md => 2024-02-06-threat-models.md} | 9 ++++----- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ---- .../change-notes/released/0.0.9.md | 3 --- go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 11 ----------- .../lib/change-notes/2024-02-14-range-map-read.md | 4 ++++ ...0.7.10.md => 2024-03-04-autobuilder-changes.md} | 11 +++-------- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ---- go/ql/src/change-notes/released/0.7.10.md | 3 --- go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ---- .../automodel/src/change-notes/released/0.0.17.md | 3 --- java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 11 ----------- .../change-notes/2024-02-23-widget-flowsteps.md | 4 ++++ java/ql/lib/change-notes/2024-02-27-error-types.md | 4 ++++ .../lib/change-notes/2024-02-27-mvnw-versions.md | 4 ++++ java/ql/lib/change-notes/released/0.8.10.md | 10 ---------- java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 10 ---------- .../2024-02-12-android-insecure-keys.md | 4 ++++ ...3-04-sensitive-log-remove-null-from-sources.md} | 11 +++-------- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ---- javascript/ql/lib/change-notes/released/0.8.10.md | 3 --- javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ---- javascript/ql/src/change-notes/released/0.8.10.md | 3 --- javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ---- misc/suite-helpers/change-notes/released/0.7.10.md | 3 --- misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 7 ------- .../2024-02-28-iterable-unpacking-module-scope.md | 4 ++++ ....11.10.md => 2024-03-01-dict-update-content.md} | 8 +++----- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ------ .../0.9.10.md => 2024-03-04-nosql-injection.md} | 7 +++---- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 9 --------- ...2024-02-15-activerecord_connection_sql_sinks.md | 4 ++++ .../2024-02-20-activerecord-sql-sink-arguments.md | 4 ++++ .../lib/change-notes/2024-02-26-arel-sqlliteral.md | 4 ++++ .../lib/change-notes/2024-02-29-i18n-translate.md | 4 ++++ ruby/ql/lib/change-notes/released/0.8.10.md | 8 -------- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 7 ------- .../2024-02-13-rails-more-request-sources.md | 4 ++++ ...d => 2024-03-01-method-code-injection-sinks.md} | 10 ++++------ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ---- shared/controlflow/change-notes/released/0.1.10.md | 3 --- shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ---- shared/dataflow/change-notes/released/0.2.1.md | 3 --- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ---- shared/mad/change-notes/released/0.2.10.md | 3 --- shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ---- .../rangeanalysis/change-notes/released/0.0.9.md | 3 --- shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ---- shared/regex/change-notes/released/0.2.10.md | 3 --- shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ---- shared/ssa/change-notes/released/0.2.10.md | 3 --- shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ---- .../threat-models/change-notes/released/0.0.9.md | 3 --- shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ---- shared/tutorial/change-notes/released/0.2.10.md | 3 --- shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ---- .../typetracking/change-notes/released/0.2.10.md | 3 --- shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ---- shared/typos/change-notes/released/0.2.10.md | 3 --- shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ---- shared/util/change-notes/released/0.2.10.md | 3 --- shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ---- shared/yaml/change-notes/released/0.2.10.md | 3 --- shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 6 ------ .../0.3.10.md => 2024-02-22-extension-patch.md} | 7 +++---- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ---- swift/ql/src/change-notes/released/0.3.10.md | 3 --- swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 150 files changed, 168 insertions(+), 394 deletions(-) rename cpp/ql/lib/change-notes/{released/0.12.7.md => 2024-02-26-ir-named-destructors.md} (54%) rename cpp/ql/src/change-notes/{released/0.9.6.md => 2024-02-16-modelled-functions-block-flow.md} (77%) create mode 100644 cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md delete mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md delete mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md create mode 100644 csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md create mode 100644 csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md create mode 100644 csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md create mode 100644 csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md create mode 100644 csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md create mode 100644 csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md delete mode 100644 csharp/ql/lib/change-notes/released/0.8.10.md rename csharp/ql/src/change-notes/{released/0.8.10.md => 2024-02-06-threat-models.md} (88%) delete mode 100644 go/ql/consistency-queries/change-notes/released/0.0.9.md create mode 100644 go/ql/lib/change-notes/2024-02-14-range-map-read.md rename go/ql/lib/change-notes/{released/0.7.10.md => 2024-03-04-autobuilder-changes.md} (68%) delete mode 100644 go/ql/src/change-notes/released/0.7.10.md delete mode 100644 java/ql/automodel/src/change-notes/released/0.0.17.md create mode 100644 java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md create mode 100644 java/ql/lib/change-notes/2024-02-27-error-types.md create mode 100644 java/ql/lib/change-notes/2024-02-27-mvnw-versions.md delete mode 100644 java/ql/lib/change-notes/released/0.8.10.md create mode 100644 java/ql/src/change-notes/2024-02-12-android-insecure-keys.md rename java/ql/src/change-notes/{released/0.8.10.md => 2024-03-04-sensitive-log-remove-null-from-sources.md} (54%) delete mode 100644 javascript/ql/lib/change-notes/released/0.8.10.md delete mode 100644 javascript/ql/src/change-notes/released/0.8.10.md delete mode 100644 misc/suite-helpers/change-notes/released/0.7.10.md create mode 100644 python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md rename python/ql/lib/change-notes/{released/0.11.10.md => 2024-03-01-dict-update-content.md} (52%) rename python/ql/src/change-notes/{released/0.9.10.md => 2024-03-04-nosql-injection.md} (81%) create mode 100644 ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md create mode 100644 ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md create mode 100644 ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md create mode 100644 ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md delete mode 100644 ruby/ql/lib/change-notes/released/0.8.10.md create mode 100644 ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md rename ruby/ql/src/change-notes/{released/0.8.10.md => 2024-03-01-method-code-injection-sinks.md} (51%) delete mode 100644 shared/controlflow/change-notes/released/0.1.10.md delete mode 100644 shared/dataflow/change-notes/released/0.2.1.md delete mode 100644 shared/mad/change-notes/released/0.2.10.md delete mode 100644 shared/rangeanalysis/change-notes/released/0.0.9.md delete mode 100644 shared/regex/change-notes/released/0.2.10.md delete mode 100644 shared/ssa/change-notes/released/0.2.10.md delete mode 100644 shared/threat-models/change-notes/released/0.0.9.md delete mode 100644 shared/tutorial/change-notes/released/0.2.10.md delete mode 100644 shared/typetracking/change-notes/released/0.2.10.md delete mode 100644 shared/typos/change-notes/released/0.2.10.md delete mode 100644 shared/util/change-notes/released/0.2.10.md delete mode 100644 shared/yaml/change-notes/released/0.2.10.md rename swift/ql/lib/change-notes/{released/0.3.10.md => 2024-02-22-extension-patch.md} (83%) delete mode 100644 swift/ql/src/change-notes/released/0.3.10.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index e1c0dfbecd9a..b3091ec37d8f 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.12.7 - -### Minor Analysis Improvements - -* Added destructors for named objects to the intermediate representation. - ## 0.12.6 ### New Features diff --git a/cpp/ql/lib/change-notes/released/0.12.7.md b/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md similarity index 54% rename from cpp/ql/lib/change-notes/released/0.12.7.md rename to cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md index 856a8b665c74..4e35decaf8ed 100644 --- a/cpp/ql/lib/change-notes/released/0.12.7.md +++ b/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md @@ -1,5 +1,4 @@ -## 0.12.7 - -### Minor Analysis Improvements - -* Added destructors for named objects to the intermediate representation. +--- +category: minorAnalysis +--- +* Added destructors for named objects to the intermediate representation. \ No newline at end of file diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 20419e9c6100..170a312c1047 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.7 +lastReleaseVersion: 0.12.6 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 3bb9229bf94d..8e201fff5943 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.7 +version: 0.12.7-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index f6acd424bb05..ffcd73ff5d72 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.9.6 - -### Minor Analysis Improvements - -* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. -* The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. - ## 0.9.5 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/released/0.9.6.md b/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md similarity index 77% rename from cpp/ql/src/change-notes/released/0.9.6.md rename to cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md index 0c85f3f9f0f0..d6ef3c3e0569 100644 --- a/cpp/ql/src/change-notes/released/0.9.6.md +++ b/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md @@ -1,6 +1,4 @@ -## 0.9.6 - -### Minor Analysis Improvements - -* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. +--- +category: minorAnalysis +--- * The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. diff --git a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md b/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md new file mode 100644 index 000000000000..2e5933a61e86 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 19139c132b2d..460240feafff 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.6 +lastReleaseVersion: 0.9.5 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 4052647bb97f..31bd20166b2b 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.6 +version: 0.9.6-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 82eacfc84f70..190b83b0f25a 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.10 - -No user-facing changes. - ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md deleted file mode 100644 index 8e8007d8475f..000000000000 --- a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.10 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 31c7fe07020b..678da6bc37e9 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.10 +lastReleaseVersion: 1.7.9 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index ee993bed0c91..7e643b0fac33 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.10 +version: 1.7.10-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 82eacfc84f70..190b83b0f25a 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.10 - -No user-facing changes. - ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md deleted file mode 100644 index 8e8007d8475f..000000000000 --- a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.10 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 31c7fe07020b..678da6bc37e9 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.10 +lastReleaseVersion: 1.7.9 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 1f421754fc82..8654bbfd0312 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.10 +version: 1.7.10-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 16cc14259e19..95fd64c52704 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,17 +1,3 @@ -## 0.8.10 - -### Major Analysis Improvements - -* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. -* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. - -### Minor Analysis Improvements - -* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. -* C# 12: Add extractor and QL library support for `ref readonly` parameters. -* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. -* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md b/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md new file mode 100644 index 000000000000..6bb8e99c71ef --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md b/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md new file mode 100644 index 000000000000..d6ffbd523ac6 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. diff --git a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md b/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md new file mode 100644 index 000000000000..9b1739b9b6da --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. diff --git a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md b/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md new file mode 100644 index 000000000000..66ab65083dc3 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md b/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md new file mode 100644 index 000000000000..8749c790954e --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. diff --git a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md b/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md new file mode 100644 index 000000000000..586b5341d293 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C# 12: Add extractor and QL library support for `ref readonly` parameters. diff --git a/csharp/ql/lib/change-notes/released/0.8.10.md b/csharp/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index f591ddc5b21a..000000000000 --- a/csharp/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,13 +0,0 @@ -## 0.8.10 - -### Major Analysis Improvements - -* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. -* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. - -### Minor Analysis Improvements - -* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. -* C# 12: Add extractor and QL library support for `ref readonly` parameters. -* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. -* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 93c5c1120a24..d75ea3c63207 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.10 +version: 0.8.10-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 46c939e5cee1..9fe1609363fc 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/released/0.8.10.md b/csharp/ql/src/change-notes/2024-02-06-threat-models.md similarity index 88% rename from csharp/ql/src/change-notes/released/0.8.10.md rename to csharp/ql/src/change-notes/2024-02-06-threat-models.md index 702161c3d28f..69ac4e4dc17a 100644 --- a/csharp/ql/src/change-notes/released/0.8.10.md +++ b/csharp/ql/src/change-notes/2024-02-06-threat-models.md @@ -1,5 +1,4 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. +--- +category: minorAnalysis +--- +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. \ No newline at end of file diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 46384094b19e..9ee23cc73078 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.10 +version: 0.8.10-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index a59e560c4155..fba2a8703562 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.9 - -No user-facing changes. - ## 0.0.8 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.9.md b/go/ql/consistency-queries/change-notes/released/0.0.9.md deleted file mode 100644 index c9e17c6d6cf2..000000000000 --- a/go/ql/consistency-queries/change-notes/released/0.0.9.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.9 - -No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index ecdd64fbab86..58fdc6b45deb 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.8 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index d5a2fbee5f19..b574796b9954 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.9 +version: 0.0.9-dev groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index fee5fd37a267..65a2376217b1 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.7.10 - -### Major Analysis Improvements - -* We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. -* Go 1.22 has been included in the range of supported Go versions. - -### Bug Fixes - -* Fixed dataflow out of a `map` using a `range` statement. - ## 0.7.9 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-02-14-range-map-read.md b/go/ql/lib/change-notes/2024-02-14-range-map-read.md new file mode 100644 index 000000000000..ea45737a72ea --- /dev/null +++ b/go/ql/lib/change-notes/2024-02-14-range-map-read.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/change-notes/released/0.7.10.md b/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md similarity index 68% rename from go/ql/lib/change-notes/released/0.7.10.md rename to go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md index 55954f8a3945..0442a571029f 100644 --- a/go/ql/lib/change-notes/released/0.7.10.md +++ b/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md @@ -1,10 +1,5 @@ -## 0.7.10 - -### Major Analysis Improvements - +--- +category: majorAnalysis +--- * We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. * Go 1.22 has been included in the range of supported Go versions. - -### Bug Fixes - -* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 675185672974..576395f3405e 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.9 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 8cc190fa880a..f21e478efa68 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.10 +version: 0.7.10-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 24e38b9890e1..d95165a3a34e 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.10 - -No user-facing changes. - ## 0.7.9 ### New Queries diff --git a/go/ql/src/change-notes/released/0.7.10.md b/go/ql/src/change-notes/released/0.7.10.md deleted file mode 100644 index 989c5b8f6823..000000000000 --- a/go/ql/src/change-notes/released/0.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.10 - -No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 675185672974..576395f3405e 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.9 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4ded3a52f63e..d91cab596127 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.10 +version: 0.7.10-dev groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index c3282c773a9d..4a3c54adb385 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.17 - -No user-facing changes. - ## 0.0.16 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.17.md b/java/ql/automodel/src/change-notes/released/0.0.17.md deleted file mode 100644 index 62cc89030a62..000000000000 --- a/java/ql/automodel/src/change-notes/released/0.0.17.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.17 - -No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index cbc3d3cd4934..a49f7be4cff3 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.17 +lastReleaseVersion: 0.0.16 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 59fab0cdcc53..898239be0989 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.17 +version: 0.0.17-dev groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 2a02ccee6abb..d369cbdc9318 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. - -### Bug Fixes - -* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. -* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. - ## 0.8.9 ### Deprecated APIs diff --git a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md b/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md new file mode 100644 index 000000000000..eb560fba07da --- /dev/null +++ b/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/change-notes/2024-02-27-error-types.md b/java/ql/lib/change-notes/2024-02-27-error-types.md new file mode 100644 index 000000000000..cdc6d7620aa8 --- /dev/null +++ b/java/ql/lib/change-notes/2024-02-27-error-types.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. diff --git a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md b/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md new file mode 100644 index 000000000000..a0227088ae97 --- /dev/null +++ b/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. diff --git a/java/ql/lib/change-notes/released/0.8.10.md b/java/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index b45f14bf347a..000000000000 --- a/java/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,10 +0,0 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. - -### Bug Fixes - -* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. -* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 428eedc75e3d..15b4982d41eb 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.10 +version: 0.8.10-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index c61275f5ed84..5d8353514538 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,13 +1,3 @@ -## 0.8.10 - -### New Queries - -* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. - -### Minor Analysis Improvements - -* To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. - ## 0.8.9 ### New Queries diff --git a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md b/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md new file mode 100644 index 000000000000..1de077277962 --- /dev/null +++ b/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/0.8.10.md b/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md similarity index 54% rename from java/ql/src/change-notes/released/0.8.10.md rename to java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md index c5d18ae33794..0bb4f18f2bd9 100644 --- a/java/ql/src/change-notes/released/0.8.10.md +++ b/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md @@ -1,9 +1,4 @@ -## 0.8.10 - -### New Queries - -* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index ebbdbeee3b2c..8f4de528e213 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.10 +version: 0.8.10-dev groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index d5edcc005131..5b97ebbb22b3 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.8.10 - -No user-facing changes. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.10.md b/javascript/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index 777bbd2fdede..000000000000 --- a/javascript/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.8.10 - -No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index da16493a21c9..ef3ca7521aca 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.10 +version: 0.8.10-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index b9627cac5eee..85516e3625d1 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.8.10 - -No user-facing changes. - ## 0.8.9 ### Bug Fixes diff --git a/javascript/ql/src/change-notes/released/0.8.10.md b/javascript/ql/src/change-notes/released/0.8.10.md deleted file mode 100644 index 777bbd2fdede..000000000000 --- a/javascript/ql/src/change-notes/released/0.8.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.8.10 - -No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index d224952c5641..b6181aa30e99 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.10 +version: 0.8.10-dev groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 1c4455b66c43..3c06dd69b0f5 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.10 - -No user-facing changes. - ## 0.7.9 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.10.md b/misc/suite-helpers/change-notes/released/0.7.10.md deleted file mode 100644 index 989c5b8f6823..000000000000 --- a/misc/suite-helpers/change-notes/released/0.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.10 - -No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 675185672974..576395f3405e 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.9 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 54d978d5efe7..49b7a6bda4c2 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.10 +version: 0.7.10-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index f095607ca1bf..e6f318c51ea8 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.11.10 - -### Minor Analysis Improvements - -* Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. -* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. - ## 0.11.9 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md b/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md new file mode 100644 index 000000000000..3c47c6ba866a --- /dev/null +++ b/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/change-notes/released/0.11.10.md b/python/ql/lib/change-notes/2024-03-01-dict-update-content.md similarity index 52% rename from python/ql/lib/change-notes/released/0.11.10.md rename to python/ql/lib/change-notes/2024-03-01-dict-update-content.md index ed873724e4f2..dfb8d247fffa 100644 --- a/python/ql/lib/change-notes/released/0.11.10.md +++ b/python/ql/lib/change-notes/2024-03-01-dict-update-content.md @@ -1,6 +1,4 @@ -## 0.11.10 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. -* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index ddddcbe9193d..b064d1778a10 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.10 +lastReleaseVersion: 0.11.9 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 59a8b4c96d17..e9f66e205f24 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.10 +version: 0.11.10-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index d4245aba7a62..50762bcbf34e 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.9.10 - -### New Queries - -* The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. - ## 0.9.9 No user-facing changes. diff --git a/python/ql/src/change-notes/released/0.9.10.md b/python/ql/src/change-notes/2024-03-04-nosql-injection.md similarity index 81% rename from python/ql/src/change-notes/released/0.9.10.md rename to python/ql/src/change-notes/2024-03-04-nosql-injection.md index 4cbb221b789f..6e98540c757c 100644 --- a/python/ql/src/change-notes/released/0.9.10.md +++ b/python/ql/src/change-notes/2024-03-04-nosql-injection.md @@ -1,5 +1,4 @@ -## 0.9.10 - -### New Queries - +--- +category: newQuery +--- * The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index d086ed69541d..aabed7c396b7 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.10 +lastReleaseVersion: 0.9.9 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index c920f667836b..aa18f2d87074 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.10 +version: 0.9.10-dev groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index c61a12e0f4ad..a623a151e891 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,12 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. -* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. -* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. -* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md b/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md new file mode 100644 index 000000000000..c2276f284a84 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md b/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md new file mode 100644 index 000000000000..1486c7a472d1 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md new file mode 100644 index 000000000000..6f3a90768bab --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md new file mode 100644 index 000000000000..350e049b5bfc --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/released/0.8.10.md b/ruby/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index 666e28f840e7..000000000000 --- a/ruby/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,8 +0,0 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. -* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. -* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. -* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index de5b41999fe1..7d409b83adbd 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.10 +version: 0.8.10-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index f875b6d16ad4..4149c728effa 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. -* Added additional request sources for Ruby on Rails. - ## 0.8.9 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md b/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md new file mode 100644 index 000000000000..84ea696dfef4 --- /dev/null +++ b/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added additional request sources for Ruby on Rails. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/released/0.8.10.md b/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md similarity index 51% rename from ruby/ql/src/change-notes/released/0.8.10.md rename to ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md index 985cdf8d22e0..43e40d3fd536 100644 --- a/ruby/ql/src/change-notes/released/0.8.10.md +++ b/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md @@ -1,6 +1,4 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. -* Added additional request sources for Ruby on Rails. +--- +category: minorAnalysis +--- +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. \ No newline at end of file diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 5e3792682346..8af7f9fd7976 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.10 +version: 0.8.10-dev groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 75f2ca53f987..dbfa6ef4512d 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.1.10 - -No user-facing changes. - ## 0.1.9 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.10.md b/shared/controlflow/change-notes/released/0.1.10.md deleted file mode 100644 index 47358eeee934..000000000000 --- a/shared/controlflow/change-notes/released/0.1.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.1.10 - -No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 30f5ca88be0e..1425c0edf7f8 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.10 +lastReleaseVersion: 0.1.9 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 1d43802be421..9d35a6782761 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.10 +version: 0.1.10-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index ef80788bded6..67a5bf589f4f 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.1 - -No user-facing changes. - ## 0.2.0 ### Breaking Changes diff --git a/shared/dataflow/change-notes/released/0.2.1.md b/shared/dataflow/change-notes/released/0.2.1.md deleted file mode 100644 index 3dbfc85fe11d..000000000000 --- a/shared/dataflow/change-notes/released/0.2.1.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.1 - -No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index df29a726bccc..5274e27ed522 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.1 +lastReleaseVersion: 0.2.0 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index ee422e02ea9a..1e7becf71c4f 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.1 +version: 0.2.1-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 4730366775ea..4d09057118ce 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.10.md b/shared/mad/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/mad/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 6d7269ef3da8..22c8f271ccc6 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 9943dcb79727..5b8dbcfab22c 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.9 - -No user-facing changes. - ## 0.0.8 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.9.md b/shared/rangeanalysis/change-notes/released/0.0.9.md deleted file mode 100644 index c9e17c6d6cf2..000000000000 --- a/shared/rangeanalysis/change-notes/released/0.0.9.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.9 - -No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index ecdd64fbab86..58fdc6b45deb 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.8 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 01db5d5734d0..836fe51ee344 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.9 +version: 0.0.9-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index c05869c153d3..cd5f91f71ec1 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.10.md b/shared/regex/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/regex/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 0d4f485312f7..ea3f7f9b2389 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index a9161ff578b0..01acfae01489 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.10.md b/shared/ssa/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/ssa/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 2ad254711a50..19304ad107f1 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index a59e560c4155..fba2a8703562 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.9 - -No user-facing changes. - ## 0.0.8 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.9.md b/shared/threat-models/change-notes/released/0.0.9.md deleted file mode 100644 index c9e17c6d6cf2..000000000000 --- a/shared/threat-models/change-notes/released/0.0.9.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.9 - -No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index ecdd64fbab86..58fdc6b45deb 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.8 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 60cbbc56fcb3..d0ed9a913b21 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.9 +version: 0.0.9-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 560ad058d5b3..1db3a01af0b1 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.10.md b/shared/tutorial/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/tutorial/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 69116705c1bf..b595ae9ee70a 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 350f9ecbeae0..afc857bc6bce 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.10.md b/shared/typetracking/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/typetracking/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index fbbdcf5162a1..b55927f59bb7 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 54b1eaa4d589..66c5871d9821 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.10.md b/shared/typos/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/typos/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 4d59d9b3c342..644bfe11bff7 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 1ca1f71bcbc2..63832e927fa5 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.10.md b/shared/util/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/util/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 28ed738a93dd..ca1a866a53d4 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 9fd5ebc26ab2..e5495abcd503 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.10.md b/shared/yaml/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/yaml/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 9643ffcec66b..de5b47e120ae 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 8f14bfcedc9c..e88cd0259ccf 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.3.10 - -### Bug Fixes - -* Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. - ## 0.3.9 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/0.3.10.md b/swift/ql/lib/change-notes/2024-02-22-extension-patch.md similarity index 83% rename from swift/ql/lib/change-notes/released/0.3.10.md rename to swift/ql/lib/change-notes/2024-02-22-extension-patch.md index 9d6286ff58a7..7bd78f3b785c 100644 --- a/swift/ql/lib/change-notes/released/0.3.10.md +++ b/swift/ql/lib/change-notes/2024-02-22-extension-patch.md @@ -1,5 +1,4 @@ -## 0.3.10 - -### Bug Fixes - +--- +category: fix +--- * Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 76ca0ac8ba76..3fa5180bcb49 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.10 +lastReleaseVersion: 0.3.9 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 70ec4798ea85..a37a4cb3d580 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.10 +version: 0.3.10-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index bda9834c9bca..96615d069729 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.3.10 - -No user-facing changes. - ## 0.3.9 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.10.md b/swift/ql/src/change-notes/released/0.3.10.md deleted file mode 100644 index 925a48fc52e0..000000000000 --- a/swift/ql/src/change-notes/released/0.3.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.3.10 - -No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 76ca0ac8ba76..3fa5180bcb49 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.10 +lastReleaseVersion: 0.3.9 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index ba66b065529b..e3ead42c98bf 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.10 +version: 0.3.10-dev groups: - swift - queries From 661e68dab5ee8d71edcec82139314a481dd983d5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 5 Mar 2024 18:13:58 +0000 Subject: [PATCH 067/731] Release preparation for version 2.16.4 --- cpp/ql/lib/CHANGELOG.md | 6 ++++++ .../0.12.7.md} | 9 +++++---- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 7 +++++++ .../2024-02-29-non-constant-format-path-query.md | 4 ---- .../0.9.6.md} | 8 +++++--- cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../Solorigate/lib/change-notes/released/1.7.10.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../Solorigate/src/change-notes/released/1.7.10.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 14 ++++++++++++++ .../change-notes/2024-02-21-getonly-properties.md | 4 ---- .../ql/lib/change-notes/2024-02-22-no-db-stats.md | 4 ---- .../change-notes/2024-02-23-compiler-generated.md | 4 ---- .../2024-02-26-variable-capture-flow.md | 4 ---- .../2024-02-28-experimental-attribute.md | 4 ---- .../2024-02-28-refreadonly-parameter.md | 4 ---- csharp/ql/lib/change-notes/released/0.8.10.md | 13 +++++++++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../0.8.10.md} | 9 +++++---- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.9.md | 3 +++ go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 11 +++++++++++ .../lib/change-notes/2024-02-14-range-map-read.md | 4 ---- .../0.7.10.md} | 11 ++++++++--- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ++++ go/ql/src/change-notes/released/0.7.10.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ .../automodel/src/change-notes/released/0.0.17.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 11 +++++++++++ .../change-notes/2024-02-23-widget-flowsteps.md | 4 ---- java/ql/lib/change-notes/2024-02-27-error-types.md | 4 ---- .../lib/change-notes/2024-02-27-mvnw-versions.md | 4 ---- java/ql/lib/change-notes/released/0.8.10.md | 10 ++++++++++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 10 ++++++++++ .../2024-02-12-android-insecure-keys.md | 4 ---- .../0.8.10.md} | 11 ++++++++--- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ javascript/ql/lib/change-notes/released/0.8.10.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ javascript/ql/src/change-notes/released/0.8.10.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ misc/suite-helpers/change-notes/released/0.7.10.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 7 +++++++ .../2024-02-28-iterable-unpacking-module-scope.md | 4 ---- .../0.11.10.md} | 8 +++++--- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ++++++ .../0.9.10.md} | 7 ++++--- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 9 +++++++++ ...2024-02-15-activerecord_connection_sql_sinks.md | 4 ---- .../2024-02-20-activerecord-sql-sink-arguments.md | 4 ---- .../lib/change-notes/2024-02-26-arel-sqlliteral.md | 4 ---- .../lib/change-notes/2024-02-29-i18n-translate.md | 4 ---- ruby/ql/lib/change-notes/released/0.8.10.md | 8 ++++++++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 7 +++++++ .../2024-02-13-rails-more-request-sources.md | 4 ---- .../0.8.10.md} | 10 ++++++---- ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ shared/controlflow/change-notes/released/0.1.10.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ shared/dataflow/change-notes/released/0.2.1.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.10.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../rangeanalysis/change-notes/released/0.0.9.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.10.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.10.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../threat-models/change-notes/released/0.0.9.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ shared/tutorial/change-notes/released/0.2.10.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../typetracking/change-notes/released/0.2.10.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.10.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.10.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.10.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 6 ++++++ .../0.3.10.md} | 7 ++++--- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.10.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 150 files changed, 394 insertions(+), 168 deletions(-) rename cpp/ql/lib/change-notes/{2024-02-26-ir-named-destructors.md => released/0.12.7.md} (54%) delete mode 100644 cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md rename cpp/ql/src/change-notes/{2024-02-16-modelled-functions-block-flow.md => released/0.9.6.md} (77%) create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md create mode 100644 csharp/ql/lib/change-notes/released/0.8.10.md rename csharp/ql/src/change-notes/{2024-02-06-threat-models.md => released/0.8.10.md} (88%) create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.9.md delete mode 100644 go/ql/lib/change-notes/2024-02-14-range-map-read.md rename go/ql/lib/change-notes/{2024-03-04-autobuilder-changes.md => released/0.7.10.md} (68%) create mode 100644 go/ql/src/change-notes/released/0.7.10.md create mode 100644 java/ql/automodel/src/change-notes/released/0.0.17.md delete mode 100644 java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md delete mode 100644 java/ql/lib/change-notes/2024-02-27-error-types.md delete mode 100644 java/ql/lib/change-notes/2024-02-27-mvnw-versions.md create mode 100644 java/ql/lib/change-notes/released/0.8.10.md delete mode 100644 java/ql/src/change-notes/2024-02-12-android-insecure-keys.md rename java/ql/src/change-notes/{2024-03-04-sensitive-log-remove-null-from-sources.md => released/0.8.10.md} (54%) create mode 100644 javascript/ql/lib/change-notes/released/0.8.10.md create mode 100644 javascript/ql/src/change-notes/released/0.8.10.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.10.md delete mode 100644 python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md rename python/ql/lib/change-notes/{2024-03-01-dict-update-content.md => released/0.11.10.md} (52%) rename python/ql/src/change-notes/{2024-03-04-nosql-injection.md => released/0.9.10.md} (81%) delete mode 100644 ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md create mode 100644 ruby/ql/lib/change-notes/released/0.8.10.md delete mode 100644 ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md rename ruby/ql/src/change-notes/{2024-03-01-method-code-injection-sinks.md => released/0.8.10.md} (51%) create mode 100644 shared/controlflow/change-notes/released/0.1.10.md create mode 100644 shared/dataflow/change-notes/released/0.2.1.md create mode 100644 shared/mad/change-notes/released/0.2.10.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.9.md create mode 100644 shared/regex/change-notes/released/0.2.10.md create mode 100644 shared/ssa/change-notes/released/0.2.10.md create mode 100644 shared/threat-models/change-notes/released/0.0.9.md create mode 100644 shared/tutorial/change-notes/released/0.2.10.md create mode 100644 shared/typetracking/change-notes/released/0.2.10.md create mode 100644 shared/typos/change-notes/released/0.2.10.md create mode 100644 shared/util/change-notes/released/0.2.10.md create mode 100644 shared/yaml/change-notes/released/0.2.10.md rename swift/ql/lib/change-notes/{2024-02-22-extension-patch.md => released/0.3.10.md} (83%) create mode 100644 swift/ql/src/change-notes/released/0.3.10.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index b3091ec37d8f..e1c0dfbecd9a 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.12.7 + +### Minor Analysis Improvements + +* Added destructors for named objects to the intermediate representation. + ## 0.12.6 ### New Features diff --git a/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md b/cpp/ql/lib/change-notes/released/0.12.7.md similarity index 54% rename from cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md rename to cpp/ql/lib/change-notes/released/0.12.7.md index 4e35decaf8ed..856a8b665c74 100644 --- a/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md +++ b/cpp/ql/lib/change-notes/released/0.12.7.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Added destructors for named objects to the intermediate representation. \ No newline at end of file +## 0.12.7 + +### Minor Analysis Improvements + +* Added destructors for named objects to the intermediate representation. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 170a312c1047..20419e9c6100 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.6 +lastReleaseVersion: 0.12.7 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8e201fff5943..3bb9229bf94d 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.7-dev +version: 0.12.7 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index ffcd73ff5d72..f6acd424bb05 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.9.6 + +### Minor Analysis Improvements + +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. +* The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. + ## 0.9.5 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md b/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md deleted file mode 100644 index 2e5933a61e86..000000000000 --- a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md b/cpp/ql/src/change-notes/released/0.9.6.md similarity index 77% rename from cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md rename to cpp/ql/src/change-notes/released/0.9.6.md index d6ef3c3e0569..0c85f3f9f0f0 100644 --- a/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md +++ b/cpp/ql/src/change-notes/released/0.9.6.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.9.6 + +### Minor Analysis Improvements + +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. * The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 460240feafff..19139c132b2d 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.5 +lastReleaseVersion: 0.9.6 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 31bd20166b2b..4052647bb97f 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.6-dev +version: 0.9.6 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 190b83b0f25a..82eacfc84f70 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.10 + +No user-facing changes. + ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md new file mode 100644 index 000000000000..8e8007d8475f --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md @@ -0,0 +1,3 @@ +## 1.7.10 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 678da6bc37e9..31c7fe07020b 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.9 +lastReleaseVersion: 1.7.10 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 7e643b0fac33..ee993bed0c91 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.10-dev +version: 1.7.10 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 190b83b0f25a..82eacfc84f70 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.10 + +No user-facing changes. + ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md new file mode 100644 index 000000000000..8e8007d8475f --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md @@ -0,0 +1,3 @@ +## 1.7.10 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 678da6bc37e9..31c7fe07020b 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.9 +lastReleaseVersion: 1.7.10 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 8654bbfd0312..1f421754fc82 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.10-dev +version: 1.7.10 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 95fd64c52704..16cc14259e19 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,17 @@ +## 0.8.10 + +### Major Analysis Improvements + +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. + +### Minor Analysis Improvements + +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. +* C# 12: Add extractor and QL library support for `ref readonly` parameters. +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md b/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md deleted file mode 100644 index 6bb8e99c71ef..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md b/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md deleted file mode 100644 index d6ffbd523ac6..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. diff --git a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md b/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md deleted file mode 100644 index 9b1739b9b6da..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. diff --git a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md b/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md deleted file mode 100644 index 66ab65083dc3..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md b/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md deleted file mode 100644 index 8749c790954e..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. diff --git a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md b/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md deleted file mode 100644 index 586b5341d293..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Add extractor and QL library support for `ref readonly` parameters. diff --git a/csharp/ql/lib/change-notes/released/0.8.10.md b/csharp/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..f591ddc5b21a --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,13 @@ +## 0.8.10 + +### Major Analysis Improvements + +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. + +### Minor Analysis Improvements + +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. +* C# 12: Add extractor and QL library support for `ref readonly` parameters. +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index d75ea3c63207..93c5c1120a24 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.10-dev +version: 0.8.10 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 9fe1609363fc..46c939e5cee1 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/2024-02-06-threat-models.md b/csharp/ql/src/change-notes/released/0.8.10.md similarity index 88% rename from csharp/ql/src/change-notes/2024-02-06-threat-models.md rename to csharp/ql/src/change-notes/released/0.8.10.md index 69ac4e4dc17a..702161c3d28f 100644 --- a/csharp/ql/src/change-notes/2024-02-06-threat-models.md +++ b/csharp/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. \ No newline at end of file +## 0.8.10 + +### Minor Analysis Improvements + +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 9ee23cc73078..46384094b19e 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.10-dev +version: 0.8.10 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index fba2a8703562..a59e560c4155 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.9.md b/go/ql/consistency-queries/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index b574796b9954..d5a2fbee5f19 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.9-dev +version: 0.0.9 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 65a2376217b1..fee5fd37a267 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.7.10 + +### Major Analysis Improvements + +* We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. +* Go 1.22 has been included in the range of supported Go versions. + +### Bug Fixes + +* Fixed dataflow out of a `map` using a `range` statement. + ## 0.7.9 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-02-14-range-map-read.md b/go/ql/lib/change-notes/2024-02-14-range-map-read.md deleted file mode 100644 index ea45737a72ea..000000000000 --- a/go/ql/lib/change-notes/2024-02-14-range-map-read.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md b/go/ql/lib/change-notes/released/0.7.10.md similarity index 68% rename from go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md rename to go/ql/lib/change-notes/released/0.7.10.md index 0442a571029f..55954f8a3945 100644 --- a/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md +++ b/go/ql/lib/change-notes/released/0.7.10.md @@ -1,5 +1,10 @@ ---- -category: majorAnalysis ---- +## 0.7.10 + +### Major Analysis Improvements + * We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. * Go 1.22 has been included in the range of supported Go versions. + +### Bug Fixes + +* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index f21e478efa68..8cc190fa880a 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.10-dev +version: 0.7.10 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index d95165a3a34e..24e38b9890e1 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.10 + +No user-facing changes. + ## 0.7.9 ### New Queries diff --git a/go/ql/src/change-notes/released/0.7.10.md b/go/ql/src/change-notes/released/0.7.10.md new file mode 100644 index 000000000000..989c5b8f6823 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.10.md @@ -0,0 +1,3 @@ +## 0.7.10 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index d91cab596127..4ded3a52f63e 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.10-dev +version: 0.7.10 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 4a3c54adb385..c3282c773a9d 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.17 + +No user-facing changes. + ## 0.0.16 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.17.md b/java/ql/automodel/src/change-notes/released/0.0.17.md new file mode 100644 index 000000000000..62cc89030a62 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.17.md @@ -0,0 +1,3 @@ +## 0.0.17 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index a49f7be4cff3..cbc3d3cd4934 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.16 +lastReleaseVersion: 0.0.17 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 898239be0989..59fab0cdcc53 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.17-dev +version: 0.0.17 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index d369cbdc9318..2a02ccee6abb 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. + +### Bug Fixes + +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. + ## 0.8.9 ### Deprecated APIs diff --git a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md b/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md deleted file mode 100644 index eb560fba07da..000000000000 --- a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/change-notes/2024-02-27-error-types.md b/java/ql/lib/change-notes/2024-02-27-error-types.md deleted file mode 100644 index cdc6d7620aa8..000000000000 --- a/java/ql/lib/change-notes/2024-02-27-error-types.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. diff --git a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md b/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md deleted file mode 100644 index a0227088ae97..000000000000 --- a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. diff --git a/java/ql/lib/change-notes/released/0.8.10.md b/java/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..b45f14bf347a --- /dev/null +++ b/java/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,10 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. + +### Bug Fixes + +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 15b4982d41eb..428eedc75e3d 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.10-dev +version: 0.8.10 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 5d8353514538..c61275f5ed84 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.10 + +### New Queries + +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. + +### Minor Analysis Improvements + +* To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. + ## 0.8.9 ### New Queries diff --git a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md b/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md deleted file mode 100644 index 1de077277962..000000000000 --- a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md b/java/ql/src/change-notes/released/0.8.10.md similarity index 54% rename from java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md rename to java/ql/src/change-notes/released/0.8.10.md index 0bb4f18f2bd9..c5d18ae33794 100644 --- a/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md +++ b/java/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,9 @@ ---- -category: minorAnalysis ---- +## 0.8.10 + +### New Queries + +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. + +### Minor Analysis Improvements + * To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 8f4de528e213..ebbdbeee3b2c 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.10-dev +version: 0.8.10 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 5b97ebbb22b3..d5edcc005131 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.10 + +No user-facing changes. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.10.md b/javascript/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..777bbd2fdede --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,3 @@ +## 0.8.10 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index ef3ca7521aca..da16493a21c9 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.10-dev +version: 0.8.10 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 85516e3625d1..b9627cac5eee 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.10 + +No user-facing changes. + ## 0.8.9 ### Bug Fixes diff --git a/javascript/ql/src/change-notes/released/0.8.10.md b/javascript/ql/src/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..777bbd2fdede --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.10.md @@ -0,0 +1,3 @@ +## 0.8.10 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index b6181aa30e99..d224952c5641 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.10-dev +version: 0.8.10 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 3c06dd69b0f5..1c4455b66c43 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.10 + +No user-facing changes. + ## 0.7.9 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.10.md b/misc/suite-helpers/change-notes/released/0.7.10.md new file mode 100644 index 000000000000..989c5b8f6823 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.10.md @@ -0,0 +1,3 @@ +## 0.7.10 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 49b7a6bda4c2..54d978d5efe7 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.10-dev +version: 0.7.10 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index e6f318c51ea8..f095607ca1bf 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.11.10 + +### Minor Analysis Improvements + +* Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. + ## 0.11.9 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md b/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md deleted file mode 100644 index 3c47c6ba866a..000000000000 --- a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/change-notes/2024-03-01-dict-update-content.md b/python/ql/lib/change-notes/released/0.11.10.md similarity index 52% rename from python/ql/lib/change-notes/2024-03-01-dict-update-content.md rename to python/ql/lib/change-notes/released/0.11.10.md index dfb8d247fffa..ed873724e4f2 100644 --- a/python/ql/lib/change-notes/2024-03-01-dict-update-content.md +++ b/python/ql/lib/change-notes/released/0.11.10.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.11.10 + +### Minor Analysis Improvements + * Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index b064d1778a10..ddddcbe9193d 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.9 +lastReleaseVersion: 0.11.10 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index e9f66e205f24..59a8b4c96d17 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.10-dev +version: 0.11.10 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 50762bcbf34e..d4245aba7a62 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.9.10 + +### New Queries + +* The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. + ## 0.9.9 No user-facing changes. diff --git a/python/ql/src/change-notes/2024-03-04-nosql-injection.md b/python/ql/src/change-notes/released/0.9.10.md similarity index 81% rename from python/ql/src/change-notes/2024-03-04-nosql-injection.md rename to python/ql/src/change-notes/released/0.9.10.md index 6e98540c757c..4cbb221b789f 100644 --- a/python/ql/src/change-notes/2024-03-04-nosql-injection.md +++ b/python/ql/src/change-notes/released/0.9.10.md @@ -1,4 +1,5 @@ ---- -category: newQuery ---- +## 0.9.10 + +### New Queries + * The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index aabed7c396b7..d086ed69541d 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.9 +lastReleaseVersion: 0.9.10 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index aa18f2d87074..c920f667836b 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.10-dev +version: 0.9.10 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a623a151e891..c61a12e0f4ad 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,12 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md b/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md deleted file mode 100644 index c2276f284a84..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md b/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md deleted file mode 100644 index 1486c7a472d1..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md deleted file mode 100644 index 6f3a90768bab..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md deleted file mode 100644 index 350e049b5bfc..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/released/0.8.10.md b/ruby/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..666e28f840e7 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,8 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 7d409b83adbd..de5b41999fe1 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.10-dev +version: 0.8.10 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 4149c728effa..f875b6d16ad4 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. +* Added additional request sources for Ruby on Rails. + ## 0.8.9 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md b/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md deleted file mode 100644 index 84ea696dfef4..000000000000 --- a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added additional request sources for Ruby on Rails. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md b/ruby/ql/src/change-notes/released/0.8.10.md similarity index 51% rename from ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md rename to ruby/ql/src/change-notes/released/0.8.10.md index 43e40d3fd536..985cdf8d22e0 100644 --- a/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md +++ b/ruby/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- -* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. \ No newline at end of file +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. +* Added additional request sources for Ruby on Rails. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 8af7f9fd7976..5e3792682346 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.10-dev +version: 0.8.10 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index dbfa6ef4512d..75f2ca53f987 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.10 + +No user-facing changes. + ## 0.1.9 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.10.md b/shared/controlflow/change-notes/released/0.1.10.md new file mode 100644 index 000000000000..47358eeee934 --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.10.md @@ -0,0 +1,3 @@ +## 0.1.10 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 1425c0edf7f8..30f5ca88be0e 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.9 +lastReleaseVersion: 0.1.10 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 9d35a6782761..1d43802be421 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.10-dev +version: 0.1.10 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 67a5bf589f4f..ef80788bded6 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1 + +No user-facing changes. + ## 0.2.0 ### Breaking Changes diff --git a/shared/dataflow/change-notes/released/0.2.1.md b/shared/dataflow/change-notes/released/0.2.1.md new file mode 100644 index 000000000000..3dbfc85fe11d --- /dev/null +++ b/shared/dataflow/change-notes/released/0.2.1.md @@ -0,0 +1,3 @@ +## 0.2.1 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 5274e27ed522..df29a726bccc 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.0 +lastReleaseVersion: 0.2.1 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 1e7becf71c4f..ee422e02ea9a 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.1-dev +version: 0.2.1 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 4d09057118ce..4730366775ea 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.10.md b/shared/mad/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/mad/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 22c8f271ccc6..6d7269ef3da8 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 5b8dbcfab22c..9943dcb79727 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.9.md b/shared/rangeanalysis/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 836fe51ee344..01db5d5734d0 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.9-dev +version: 0.0.9 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index cd5f91f71ec1..c05869c153d3 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.10.md b/shared/regex/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/regex/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index ea3f7f9b2389..0d4f485312f7 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 01acfae01489..a9161ff578b0 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.10.md b/shared/ssa/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 19304ad107f1..2ad254711a50 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index fba2a8703562..a59e560c4155 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.9.md b/shared/threat-models/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index d0ed9a913b21..60cbbc56fcb3 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.9-dev +version: 0.0.9 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 1db3a01af0b1..560ad058d5b3 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.10.md b/shared/tutorial/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index b595ae9ee70a..69116705c1bf 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index afc857bc6bce..350f9ecbeae0 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.10.md b/shared/typetracking/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index b55927f59bb7..fbbdcf5162a1 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 66c5871d9821..54b1eaa4d589 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.10.md b/shared/typos/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/typos/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 644bfe11bff7..4d59d9b3c342 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 63832e927fa5..1ca1f71bcbc2 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.10.md b/shared/util/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/util/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index ca1a866a53d4..28ed738a93dd 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index e5495abcd503..9fd5ebc26ab2 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.10.md b/shared/yaml/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index de5b47e120ae..9643ffcec66b 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index e88cd0259ccf..8f14bfcedc9c 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.3.10 + +### Bug Fixes + +* Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. + ## 0.3.9 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/2024-02-22-extension-patch.md b/swift/ql/lib/change-notes/released/0.3.10.md similarity index 83% rename from swift/ql/lib/change-notes/2024-02-22-extension-patch.md rename to swift/ql/lib/change-notes/released/0.3.10.md index 7bd78f3b785c..9d6286ff58a7 100644 --- a/swift/ql/lib/change-notes/2024-02-22-extension-patch.md +++ b/swift/ql/lib/change-notes/released/0.3.10.md @@ -1,4 +1,5 @@ ---- -category: fix ---- +## 0.3.10 + +### Bug Fixes + * Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 3fa5180bcb49..76ca0ac8ba76 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.9 +lastReleaseVersion: 0.3.10 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index a37a4cb3d580..70ec4798ea85 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.10-dev +version: 0.3.10 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 96615d069729..bda9834c9bca 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.10 + +No user-facing changes. + ## 0.3.9 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.10.md b/swift/ql/src/change-notes/released/0.3.10.md new file mode 100644 index 000000000000..925a48fc52e0 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.10.md @@ -0,0 +1,3 @@ +## 0.3.10 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 3fa5180bcb49..76ca0ac8ba76 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.9 +lastReleaseVersion: 0.3.10 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index e3ead42c98bf..ba66b065529b 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.10-dev +version: 0.3.10 groups: - swift - queries From ce31f8641a4c4f83c8665bdf48de524862aa15c7 Mon Sep 17 00:00:00 2001 From: Angela P Wen Date: Wed, 6 Mar 2024 12:07:33 -0800 Subject: [PATCH 068/731] Revert "Release preparation for version 2.16.4" --- cpp/ql/lib/CHANGELOG.md | 6 ------ ....12.7.md => 2024-02-26-ir-named-destructors.md} | 9 ++++----- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 7 ------- ...=> 2024-02-16-modelled-functions-block-flow.md} | 8 +++----- .../2024-02-29-non-constant-format-path-query.md | 4 ++++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ---- .../Solorigate/lib/change-notes/released/1.7.10.md | 3 --- .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ---- .../Solorigate/src/change-notes/released/1.7.10.md | 3 --- .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 14 -------------- .../change-notes/2024-02-21-getonly-properties.md | 4 ++++ .../ql/lib/change-notes/2024-02-22-no-db-stats.md | 4 ++++ .../change-notes/2024-02-23-compiler-generated.md | 4 ++++ .../2024-02-26-variable-capture-flow.md | 4 ++++ .../2024-02-28-experimental-attribute.md | 4 ++++ .../2024-02-28-refreadonly-parameter.md | 4 ++++ csharp/ql/lib/change-notes/released/0.8.10.md | 13 ------------- csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ------ .../0.8.10.md => 2024-02-06-threat-models.md} | 9 ++++----- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ---- .../change-notes/released/0.0.9.md | 3 --- go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 11 ----------- .../lib/change-notes/2024-02-14-range-map-read.md | 4 ++++ ...0.7.10.md => 2024-03-04-autobuilder-changes.md} | 11 +++-------- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ---- go/ql/src/change-notes/released/0.7.10.md | 3 --- go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ---- .../automodel/src/change-notes/released/0.0.17.md | 3 --- java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 11 ----------- .../change-notes/2024-02-23-widget-flowsteps.md | 4 ++++ java/ql/lib/change-notes/2024-02-27-error-types.md | 4 ++++ .../lib/change-notes/2024-02-27-mvnw-versions.md | 4 ++++ java/ql/lib/change-notes/released/0.8.10.md | 10 ---------- java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 10 ---------- .../2024-02-12-android-insecure-keys.md | 4 ++++ ...3-04-sensitive-log-remove-null-from-sources.md} | 11 +++-------- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ---- javascript/ql/lib/change-notes/released/0.8.10.md | 3 --- javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ---- javascript/ql/src/change-notes/released/0.8.10.md | 3 --- javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ---- misc/suite-helpers/change-notes/released/0.7.10.md | 3 --- misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 7 ------- .../2024-02-28-iterable-unpacking-module-scope.md | 4 ++++ ....11.10.md => 2024-03-01-dict-update-content.md} | 8 +++----- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ------ .../0.9.10.md => 2024-03-04-nosql-injection.md} | 7 +++---- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 9 --------- ...2024-02-15-activerecord_connection_sql_sinks.md | 4 ++++ .../2024-02-20-activerecord-sql-sink-arguments.md | 4 ++++ .../lib/change-notes/2024-02-26-arel-sqlliteral.md | 4 ++++ .../lib/change-notes/2024-02-29-i18n-translate.md | 4 ++++ ruby/ql/lib/change-notes/released/0.8.10.md | 8 -------- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 7 ------- .../2024-02-13-rails-more-request-sources.md | 4 ++++ ...d => 2024-03-01-method-code-injection-sinks.md} | 10 ++++------ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ---- shared/controlflow/change-notes/released/0.1.10.md | 3 --- shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ---- shared/dataflow/change-notes/released/0.2.1.md | 3 --- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ---- shared/mad/change-notes/released/0.2.10.md | 3 --- shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ---- .../rangeanalysis/change-notes/released/0.0.9.md | 3 --- shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ---- shared/regex/change-notes/released/0.2.10.md | 3 --- shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ---- shared/ssa/change-notes/released/0.2.10.md | 3 --- shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ---- .../threat-models/change-notes/released/0.0.9.md | 3 --- shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ---- shared/tutorial/change-notes/released/0.2.10.md | 3 --- shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ---- .../typetracking/change-notes/released/0.2.10.md | 3 --- shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ---- shared/typos/change-notes/released/0.2.10.md | 3 --- shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ---- shared/util/change-notes/released/0.2.10.md | 3 --- shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ---- shared/yaml/change-notes/released/0.2.10.md | 3 --- shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 6 ------ .../0.3.10.md => 2024-02-22-extension-patch.md} | 7 +++---- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ---- swift/ql/src/change-notes/released/0.3.10.md | 3 --- swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 150 files changed, 168 insertions(+), 394 deletions(-) rename cpp/ql/lib/change-notes/{released/0.12.7.md => 2024-02-26-ir-named-destructors.md} (54%) rename cpp/ql/src/change-notes/{released/0.9.6.md => 2024-02-16-modelled-functions-block-flow.md} (77%) create mode 100644 cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md delete mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md delete mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md create mode 100644 csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md create mode 100644 csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md create mode 100644 csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md create mode 100644 csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md create mode 100644 csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md create mode 100644 csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md delete mode 100644 csharp/ql/lib/change-notes/released/0.8.10.md rename csharp/ql/src/change-notes/{released/0.8.10.md => 2024-02-06-threat-models.md} (88%) delete mode 100644 go/ql/consistency-queries/change-notes/released/0.0.9.md create mode 100644 go/ql/lib/change-notes/2024-02-14-range-map-read.md rename go/ql/lib/change-notes/{released/0.7.10.md => 2024-03-04-autobuilder-changes.md} (68%) delete mode 100644 go/ql/src/change-notes/released/0.7.10.md delete mode 100644 java/ql/automodel/src/change-notes/released/0.0.17.md create mode 100644 java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md create mode 100644 java/ql/lib/change-notes/2024-02-27-error-types.md create mode 100644 java/ql/lib/change-notes/2024-02-27-mvnw-versions.md delete mode 100644 java/ql/lib/change-notes/released/0.8.10.md create mode 100644 java/ql/src/change-notes/2024-02-12-android-insecure-keys.md rename java/ql/src/change-notes/{released/0.8.10.md => 2024-03-04-sensitive-log-remove-null-from-sources.md} (54%) delete mode 100644 javascript/ql/lib/change-notes/released/0.8.10.md delete mode 100644 javascript/ql/src/change-notes/released/0.8.10.md delete mode 100644 misc/suite-helpers/change-notes/released/0.7.10.md create mode 100644 python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md rename python/ql/lib/change-notes/{released/0.11.10.md => 2024-03-01-dict-update-content.md} (52%) rename python/ql/src/change-notes/{released/0.9.10.md => 2024-03-04-nosql-injection.md} (81%) create mode 100644 ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md create mode 100644 ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md create mode 100644 ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md create mode 100644 ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md delete mode 100644 ruby/ql/lib/change-notes/released/0.8.10.md create mode 100644 ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md rename ruby/ql/src/change-notes/{released/0.8.10.md => 2024-03-01-method-code-injection-sinks.md} (51%) delete mode 100644 shared/controlflow/change-notes/released/0.1.10.md delete mode 100644 shared/dataflow/change-notes/released/0.2.1.md delete mode 100644 shared/mad/change-notes/released/0.2.10.md delete mode 100644 shared/rangeanalysis/change-notes/released/0.0.9.md delete mode 100644 shared/regex/change-notes/released/0.2.10.md delete mode 100644 shared/ssa/change-notes/released/0.2.10.md delete mode 100644 shared/threat-models/change-notes/released/0.0.9.md delete mode 100644 shared/tutorial/change-notes/released/0.2.10.md delete mode 100644 shared/typetracking/change-notes/released/0.2.10.md delete mode 100644 shared/typos/change-notes/released/0.2.10.md delete mode 100644 shared/util/change-notes/released/0.2.10.md delete mode 100644 shared/yaml/change-notes/released/0.2.10.md rename swift/ql/lib/change-notes/{released/0.3.10.md => 2024-02-22-extension-patch.md} (83%) delete mode 100644 swift/ql/src/change-notes/released/0.3.10.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index e1c0dfbecd9a..b3091ec37d8f 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.12.7 - -### Minor Analysis Improvements - -* Added destructors for named objects to the intermediate representation. - ## 0.12.6 ### New Features diff --git a/cpp/ql/lib/change-notes/released/0.12.7.md b/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md similarity index 54% rename from cpp/ql/lib/change-notes/released/0.12.7.md rename to cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md index 856a8b665c74..4e35decaf8ed 100644 --- a/cpp/ql/lib/change-notes/released/0.12.7.md +++ b/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md @@ -1,5 +1,4 @@ -## 0.12.7 - -### Minor Analysis Improvements - -* Added destructors for named objects to the intermediate representation. +--- +category: minorAnalysis +--- +* Added destructors for named objects to the intermediate representation. \ No newline at end of file diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 20419e9c6100..170a312c1047 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.7 +lastReleaseVersion: 0.12.6 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 3bb9229bf94d..8e201fff5943 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.7 +version: 0.12.7-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index f6acd424bb05..ffcd73ff5d72 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.9.6 - -### Minor Analysis Improvements - -* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. -* The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. - ## 0.9.5 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/released/0.9.6.md b/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md similarity index 77% rename from cpp/ql/src/change-notes/released/0.9.6.md rename to cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md index 0c85f3f9f0f0..d6ef3c3e0569 100644 --- a/cpp/ql/src/change-notes/released/0.9.6.md +++ b/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md @@ -1,6 +1,4 @@ -## 0.9.6 - -### Minor Analysis Improvements - -* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. +--- +category: minorAnalysis +--- * The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. diff --git a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md b/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md new file mode 100644 index 000000000000..2e5933a61e86 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 19139c132b2d..460240feafff 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.6 +lastReleaseVersion: 0.9.5 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 4052647bb97f..31bd20166b2b 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.6 +version: 0.9.6-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 82eacfc84f70..190b83b0f25a 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.10 - -No user-facing changes. - ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md deleted file mode 100644 index 8e8007d8475f..000000000000 --- a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.10 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 31c7fe07020b..678da6bc37e9 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.10 +lastReleaseVersion: 1.7.9 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index ee993bed0c91..7e643b0fac33 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.10 +version: 1.7.10-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 82eacfc84f70..190b83b0f25a 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.10 - -No user-facing changes. - ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md deleted file mode 100644 index 8e8007d8475f..000000000000 --- a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.10 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 31c7fe07020b..678da6bc37e9 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.10 +lastReleaseVersion: 1.7.9 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 1f421754fc82..8654bbfd0312 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.10 +version: 1.7.10-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 16cc14259e19..95fd64c52704 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,17 +1,3 @@ -## 0.8.10 - -### Major Analysis Improvements - -* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. -* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. - -### Minor Analysis Improvements - -* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. -* C# 12: Add extractor and QL library support for `ref readonly` parameters. -* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. -* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md b/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md new file mode 100644 index 000000000000..6bb8e99c71ef --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md b/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md new file mode 100644 index 000000000000..d6ffbd523ac6 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. diff --git a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md b/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md new file mode 100644 index 000000000000..9b1739b9b6da --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. diff --git a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md b/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md new file mode 100644 index 000000000000..66ab65083dc3 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md b/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md new file mode 100644 index 000000000000..8749c790954e --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. diff --git a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md b/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md new file mode 100644 index 000000000000..586b5341d293 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* C# 12: Add extractor and QL library support for `ref readonly` parameters. diff --git a/csharp/ql/lib/change-notes/released/0.8.10.md b/csharp/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index f591ddc5b21a..000000000000 --- a/csharp/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,13 +0,0 @@ -## 0.8.10 - -### Major Analysis Improvements - -* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. -* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. - -### Minor Analysis Improvements - -* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. -* C# 12: Add extractor and QL library support for `ref readonly` parameters. -* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. -* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 93c5c1120a24..d75ea3c63207 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.10 +version: 0.8.10-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 46c939e5cee1..9fe1609363fc 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/released/0.8.10.md b/csharp/ql/src/change-notes/2024-02-06-threat-models.md similarity index 88% rename from csharp/ql/src/change-notes/released/0.8.10.md rename to csharp/ql/src/change-notes/2024-02-06-threat-models.md index 702161c3d28f..69ac4e4dc17a 100644 --- a/csharp/ql/src/change-notes/released/0.8.10.md +++ b/csharp/ql/src/change-notes/2024-02-06-threat-models.md @@ -1,5 +1,4 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. +--- +category: minorAnalysis +--- +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. \ No newline at end of file diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 46384094b19e..9ee23cc73078 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.10 +version: 0.8.10-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index a59e560c4155..fba2a8703562 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.9 - -No user-facing changes. - ## 0.0.8 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.9.md b/go/ql/consistency-queries/change-notes/released/0.0.9.md deleted file mode 100644 index c9e17c6d6cf2..000000000000 --- a/go/ql/consistency-queries/change-notes/released/0.0.9.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.9 - -No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index ecdd64fbab86..58fdc6b45deb 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.8 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index d5a2fbee5f19..b574796b9954 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.9 +version: 0.0.9-dev groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index fee5fd37a267..65a2376217b1 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.7.10 - -### Major Analysis Improvements - -* We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. -* Go 1.22 has been included in the range of supported Go versions. - -### Bug Fixes - -* Fixed dataflow out of a `map` using a `range` statement. - ## 0.7.9 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-02-14-range-map-read.md b/go/ql/lib/change-notes/2024-02-14-range-map-read.md new file mode 100644 index 000000000000..ea45737a72ea --- /dev/null +++ b/go/ql/lib/change-notes/2024-02-14-range-map-read.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/change-notes/released/0.7.10.md b/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md similarity index 68% rename from go/ql/lib/change-notes/released/0.7.10.md rename to go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md index 55954f8a3945..0442a571029f 100644 --- a/go/ql/lib/change-notes/released/0.7.10.md +++ b/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md @@ -1,10 +1,5 @@ -## 0.7.10 - -### Major Analysis Improvements - +--- +category: majorAnalysis +--- * We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. * Go 1.22 has been included in the range of supported Go versions. - -### Bug Fixes - -* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 675185672974..576395f3405e 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.9 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 8cc190fa880a..f21e478efa68 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.10 +version: 0.7.10-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 24e38b9890e1..d95165a3a34e 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.10 - -No user-facing changes. - ## 0.7.9 ### New Queries diff --git a/go/ql/src/change-notes/released/0.7.10.md b/go/ql/src/change-notes/released/0.7.10.md deleted file mode 100644 index 989c5b8f6823..000000000000 --- a/go/ql/src/change-notes/released/0.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.10 - -No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 675185672974..576395f3405e 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.9 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4ded3a52f63e..d91cab596127 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.10 +version: 0.7.10-dev groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index c3282c773a9d..4a3c54adb385 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.17 - -No user-facing changes. - ## 0.0.16 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.17.md b/java/ql/automodel/src/change-notes/released/0.0.17.md deleted file mode 100644 index 62cc89030a62..000000000000 --- a/java/ql/automodel/src/change-notes/released/0.0.17.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.17 - -No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index cbc3d3cd4934..a49f7be4cff3 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.17 +lastReleaseVersion: 0.0.16 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 59fab0cdcc53..898239be0989 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.17 +version: 0.0.17-dev groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 2a02ccee6abb..d369cbdc9318 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. - -### Bug Fixes - -* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. -* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. - ## 0.8.9 ### Deprecated APIs diff --git a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md b/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md new file mode 100644 index 000000000000..eb560fba07da --- /dev/null +++ b/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/change-notes/2024-02-27-error-types.md b/java/ql/lib/change-notes/2024-02-27-error-types.md new file mode 100644 index 000000000000..cdc6d7620aa8 --- /dev/null +++ b/java/ql/lib/change-notes/2024-02-27-error-types.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. diff --git a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md b/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md new file mode 100644 index 000000000000..a0227088ae97 --- /dev/null +++ b/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md @@ -0,0 +1,4 @@ +--- +category: fix +--- +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. diff --git a/java/ql/lib/change-notes/released/0.8.10.md b/java/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index b45f14bf347a..000000000000 --- a/java/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,10 +0,0 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. - -### Bug Fixes - -* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. -* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 428eedc75e3d..15b4982d41eb 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.10 +version: 0.8.10-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index c61275f5ed84..5d8353514538 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,13 +1,3 @@ -## 0.8.10 - -### New Queries - -* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. - -### Minor Analysis Improvements - -* To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. - ## 0.8.9 ### New Queries diff --git a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md b/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md new file mode 100644 index 000000000000..1de077277962 --- /dev/null +++ b/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. \ No newline at end of file diff --git a/java/ql/src/change-notes/released/0.8.10.md b/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md similarity index 54% rename from java/ql/src/change-notes/released/0.8.10.md rename to java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md index c5d18ae33794..0bb4f18f2bd9 100644 --- a/java/ql/src/change-notes/released/0.8.10.md +++ b/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md @@ -1,9 +1,4 @@ -## 0.8.10 - -### New Queries - -* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index ebbdbeee3b2c..8f4de528e213 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.10 +version: 0.8.10-dev groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index d5edcc005131..5b97ebbb22b3 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.8.10 - -No user-facing changes. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.10.md b/javascript/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index 777bbd2fdede..000000000000 --- a/javascript/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.8.10 - -No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index da16493a21c9..ef3ca7521aca 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.10 +version: 0.8.10-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index b9627cac5eee..85516e3625d1 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.8.10 - -No user-facing changes. - ## 0.8.9 ### Bug Fixes diff --git a/javascript/ql/src/change-notes/released/0.8.10.md b/javascript/ql/src/change-notes/released/0.8.10.md deleted file mode 100644 index 777bbd2fdede..000000000000 --- a/javascript/ql/src/change-notes/released/0.8.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.8.10 - -No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index d224952c5641..b6181aa30e99 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.10 +version: 0.8.10-dev groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 1c4455b66c43..3c06dd69b0f5 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.10 - -No user-facing changes. - ## 0.7.9 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.10.md b/misc/suite-helpers/change-notes/released/0.7.10.md deleted file mode 100644 index 989c5b8f6823..000000000000 --- a/misc/suite-helpers/change-notes/released/0.7.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.10 - -No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 675185672974..576395f3405e 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.9 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 54d978d5efe7..49b7a6bda4c2 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.10 +version: 0.7.10-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index f095607ca1bf..e6f318c51ea8 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.11.10 - -### Minor Analysis Improvements - -* Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. -* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. - ## 0.11.9 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md b/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md new file mode 100644 index 000000000000..3c47c6ba866a --- /dev/null +++ b/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/change-notes/released/0.11.10.md b/python/ql/lib/change-notes/2024-03-01-dict-update-content.md similarity index 52% rename from python/ql/lib/change-notes/released/0.11.10.md rename to python/ql/lib/change-notes/2024-03-01-dict-update-content.md index ed873724e4f2..dfb8d247fffa 100644 --- a/python/ql/lib/change-notes/released/0.11.10.md +++ b/python/ql/lib/change-notes/2024-03-01-dict-update-content.md @@ -1,6 +1,4 @@ -## 0.11.10 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. -* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index ddddcbe9193d..b064d1778a10 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.10 +lastReleaseVersion: 0.11.9 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 59a8b4c96d17..e9f66e205f24 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.10 +version: 0.11.10-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index d4245aba7a62..50762bcbf34e 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.9.10 - -### New Queries - -* The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. - ## 0.9.9 No user-facing changes. diff --git a/python/ql/src/change-notes/released/0.9.10.md b/python/ql/src/change-notes/2024-03-04-nosql-injection.md similarity index 81% rename from python/ql/src/change-notes/released/0.9.10.md rename to python/ql/src/change-notes/2024-03-04-nosql-injection.md index 4cbb221b789f..6e98540c757c 100644 --- a/python/ql/src/change-notes/released/0.9.10.md +++ b/python/ql/src/change-notes/2024-03-04-nosql-injection.md @@ -1,5 +1,4 @@ -## 0.9.10 - -### New Queries - +--- +category: newQuery +--- * The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index d086ed69541d..aabed7c396b7 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.10 +lastReleaseVersion: 0.9.9 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index c920f667836b..aa18f2d87074 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.10 +version: 0.9.10-dev groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index c61a12e0f4ad..a623a151e891 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,12 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. -* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. -* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. -* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. - ## 0.8.9 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md b/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md new file mode 100644 index 000000000000..c2276f284a84 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md b/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md new file mode 100644 index 000000000000..1486c7a472d1 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md new file mode 100644 index 000000000000..6f3a90768bab --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md new file mode 100644 index 000000000000..350e049b5bfc --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/released/0.8.10.md b/ruby/ql/lib/change-notes/released/0.8.10.md deleted file mode 100644 index 666e28f840e7..000000000000 --- a/ruby/ql/lib/change-notes/released/0.8.10.md +++ /dev/null @@ -1,8 +0,0 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. -* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. -* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. -* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index de5b41999fe1..7d409b83adbd 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.10 +version: 0.8.10-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index f875b6d16ad4..4149c728effa 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. -* Added additional request sources for Ruby on Rails. - ## 0.8.9 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md b/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md new file mode 100644 index 000000000000..84ea696dfef4 --- /dev/null +++ b/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added additional request sources for Ruby on Rails. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/released/0.8.10.md b/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md similarity index 51% rename from ruby/ql/src/change-notes/released/0.8.10.md rename to ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md index 985cdf8d22e0..43e40d3fd536 100644 --- a/ruby/ql/src/change-notes/released/0.8.10.md +++ b/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md @@ -1,6 +1,4 @@ -## 0.8.10 - -### Minor Analysis Improvements - -* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. -* Added additional request sources for Ruby on Rails. +--- +category: minorAnalysis +--- +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. \ No newline at end of file diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 0521f0f75fad..5290c29b7fe7 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.9 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 5e3792682346..8af7f9fd7976 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.10 +version: 0.8.10-dev groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 75f2ca53f987..dbfa6ef4512d 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.1.10 - -No user-facing changes. - ## 0.1.9 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.10.md b/shared/controlflow/change-notes/released/0.1.10.md deleted file mode 100644 index 47358eeee934..000000000000 --- a/shared/controlflow/change-notes/released/0.1.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.1.10 - -No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 30f5ca88be0e..1425c0edf7f8 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.10 +lastReleaseVersion: 0.1.9 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 1d43802be421..9d35a6782761 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.10 +version: 0.1.10-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index ef80788bded6..67a5bf589f4f 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.1 - -No user-facing changes. - ## 0.2.0 ### Breaking Changes diff --git a/shared/dataflow/change-notes/released/0.2.1.md b/shared/dataflow/change-notes/released/0.2.1.md deleted file mode 100644 index 3dbfc85fe11d..000000000000 --- a/shared/dataflow/change-notes/released/0.2.1.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.1 - -No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index df29a726bccc..5274e27ed522 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.1 +lastReleaseVersion: 0.2.0 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index ee422e02ea9a..1e7becf71c4f 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.1 +version: 0.2.1-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 4730366775ea..4d09057118ce 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.10.md b/shared/mad/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/mad/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 6d7269ef3da8..22c8f271ccc6 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 9943dcb79727..5b8dbcfab22c 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.9 - -No user-facing changes. - ## 0.0.8 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.9.md b/shared/rangeanalysis/change-notes/released/0.0.9.md deleted file mode 100644 index c9e17c6d6cf2..000000000000 --- a/shared/rangeanalysis/change-notes/released/0.0.9.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.9 - -No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index ecdd64fbab86..58fdc6b45deb 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.8 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 01db5d5734d0..836fe51ee344 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.9 +version: 0.0.9-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index c05869c153d3..cd5f91f71ec1 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.10.md b/shared/regex/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/regex/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 0d4f485312f7..ea3f7f9b2389 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index a9161ff578b0..01acfae01489 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.10.md b/shared/ssa/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/ssa/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 2ad254711a50..19304ad107f1 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index a59e560c4155..fba2a8703562 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.9 - -No user-facing changes. - ## 0.0.8 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.9.md b/shared/threat-models/change-notes/released/0.0.9.md deleted file mode 100644 index c9e17c6d6cf2..000000000000 --- a/shared/threat-models/change-notes/released/0.0.9.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.9 - -No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index ecdd64fbab86..58fdc6b45deb 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.8 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 60cbbc56fcb3..d0ed9a913b21 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.9 +version: 0.0.9-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 560ad058d5b3..1db3a01af0b1 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.10.md b/shared/tutorial/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/tutorial/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 69116705c1bf..b595ae9ee70a 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 350f9ecbeae0..afc857bc6bce 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.10.md b/shared/typetracking/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/typetracking/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index fbbdcf5162a1..b55927f59bb7 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 54b1eaa4d589..66c5871d9821 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.10.md b/shared/typos/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/typos/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 4d59d9b3c342..644bfe11bff7 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 1ca1f71bcbc2..63832e927fa5 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.10.md b/shared/util/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/util/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 28ed738a93dd..ca1a866a53d4 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 9fd5ebc26ab2..e5495abcd503 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.10 - -No user-facing changes. - ## 0.2.9 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.10.md b/shared/yaml/change-notes/released/0.2.10.md deleted file mode 100644 index 81c9722b19fe..000000000000 --- a/shared/yaml/change-notes/released/0.2.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.10 - -No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index a71167814cb7..d021cf0a6bed 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.9 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 9643ffcec66b..de5b47e120ae 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.10 +version: 0.2.10-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 8f14bfcedc9c..e88cd0259ccf 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.3.10 - -### Bug Fixes - -* Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. - ## 0.3.9 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/released/0.3.10.md b/swift/ql/lib/change-notes/2024-02-22-extension-patch.md similarity index 83% rename from swift/ql/lib/change-notes/released/0.3.10.md rename to swift/ql/lib/change-notes/2024-02-22-extension-patch.md index 9d6286ff58a7..7bd78f3b785c 100644 --- a/swift/ql/lib/change-notes/released/0.3.10.md +++ b/swift/ql/lib/change-notes/2024-02-22-extension-patch.md @@ -1,5 +1,4 @@ -## 0.3.10 - -### Bug Fixes - +--- +category: fix +--- * Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 76ca0ac8ba76..3fa5180bcb49 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.10 +lastReleaseVersion: 0.3.9 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 70ec4798ea85..a37a4cb3d580 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.10 +version: 0.3.10-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index bda9834c9bca..96615d069729 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.3.10 - -No user-facing changes. - ## 0.3.9 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.10.md b/swift/ql/src/change-notes/released/0.3.10.md deleted file mode 100644 index 925a48fc52e0..000000000000 --- a/swift/ql/src/change-notes/released/0.3.10.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.3.10 - -No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 76ca0ac8ba76..3fa5180bcb49 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.10 +lastReleaseVersion: 0.3.9 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index ba66b065529b..e3ead42c98bf 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.10 +version: 0.3.10-dev groups: - swift - queries From 2f058ffb4d0bc7486717a95744c240b9eef87fe6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 6 Mar 2024 20:56:51 +0000 Subject: [PATCH 069/731] Release preparation for version 2.16.4 --- cpp/ql/lib/CHANGELOG.md | 6 ++++++ .../0.12.7.md} | 9 +++++---- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 7 +++++++ .../2024-02-29-non-constant-format-path-query.md | 4 ---- .../0.9.6.md} | 8 +++++--- cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../Solorigate/lib/change-notes/released/1.7.10.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../Solorigate/src/change-notes/released/1.7.10.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 14 ++++++++++++++ .../change-notes/2024-02-21-getonly-properties.md | 4 ---- .../ql/lib/change-notes/2024-02-22-no-db-stats.md | 4 ---- .../change-notes/2024-02-23-compiler-generated.md | 4 ---- .../2024-02-26-variable-capture-flow.md | 4 ---- .../2024-02-28-experimental-attribute.md | 4 ---- .../2024-02-28-refreadonly-parameter.md | 4 ---- csharp/ql/lib/change-notes/released/0.8.10.md | 13 +++++++++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 6 ++++++ .../0.8.10.md} | 9 +++++---- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.9.md | 3 +++ go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 11 +++++++++++ .../lib/change-notes/2024-02-14-range-map-read.md | 4 ---- .../0.7.10.md} | 11 ++++++++--- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ++++ go/ql/src/change-notes/released/0.7.10.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ .../automodel/src/change-notes/released/0.0.17.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 11 +++++++++++ .../change-notes/2024-02-23-widget-flowsteps.md | 4 ---- java/ql/lib/change-notes/2024-02-27-error-types.md | 4 ---- .../lib/change-notes/2024-02-27-mvnw-versions.md | 4 ---- java/ql/lib/change-notes/released/0.8.10.md | 10 ++++++++++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 10 ++++++++++ .../2024-02-12-android-insecure-keys.md | 4 ---- .../0.8.10.md} | 11 ++++++++--- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ javascript/ql/lib/change-notes/released/0.8.10.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ javascript/ql/src/change-notes/released/0.8.10.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ misc/suite-helpers/change-notes/released/0.7.10.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 7 +++++++ .../2024-02-28-iterable-unpacking-module-scope.md | 4 ---- .../0.11.10.md} | 8 +++++--- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 6 ++++++ .../0.9.10.md} | 7 ++++--- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 9 +++++++++ ...2024-02-15-activerecord_connection_sql_sinks.md | 4 ---- .../2024-02-20-activerecord-sql-sink-arguments.md | 4 ---- .../lib/change-notes/2024-02-26-arel-sqlliteral.md | 4 ---- .../lib/change-notes/2024-02-29-i18n-translate.md | 4 ---- ruby/ql/lib/change-notes/released/0.8.10.md | 8 ++++++++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 7 +++++++ .../2024-02-13-rails-more-request-sources.md | 4 ---- .../0.8.10.md} | 10 ++++++---- ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ shared/controlflow/change-notes/released/0.1.10.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ shared/dataflow/change-notes/released/0.2.1.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.10.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../rangeanalysis/change-notes/released/0.0.9.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.10.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.10.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../threat-models/change-notes/released/0.0.9.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ shared/tutorial/change-notes/released/0.2.10.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../typetracking/change-notes/released/0.2.10.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.10.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.10.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.10.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 6 ++++++ .../0.3.10.md} | 7 ++++--- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.10.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 150 files changed, 394 insertions(+), 168 deletions(-) rename cpp/ql/lib/change-notes/{2024-02-26-ir-named-destructors.md => released/0.12.7.md} (54%) delete mode 100644 cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md rename cpp/ql/src/change-notes/{2024-02-16-modelled-functions-block-flow.md => released/0.9.6.md} (77%) create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md delete mode 100644 csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md create mode 100644 csharp/ql/lib/change-notes/released/0.8.10.md rename csharp/ql/src/change-notes/{2024-02-06-threat-models.md => released/0.8.10.md} (88%) create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.9.md delete mode 100644 go/ql/lib/change-notes/2024-02-14-range-map-read.md rename go/ql/lib/change-notes/{2024-03-04-autobuilder-changes.md => released/0.7.10.md} (68%) create mode 100644 go/ql/src/change-notes/released/0.7.10.md create mode 100644 java/ql/automodel/src/change-notes/released/0.0.17.md delete mode 100644 java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md delete mode 100644 java/ql/lib/change-notes/2024-02-27-error-types.md delete mode 100644 java/ql/lib/change-notes/2024-02-27-mvnw-versions.md create mode 100644 java/ql/lib/change-notes/released/0.8.10.md delete mode 100644 java/ql/src/change-notes/2024-02-12-android-insecure-keys.md rename java/ql/src/change-notes/{2024-03-04-sensitive-log-remove-null-from-sources.md => released/0.8.10.md} (54%) create mode 100644 javascript/ql/lib/change-notes/released/0.8.10.md create mode 100644 javascript/ql/src/change-notes/released/0.8.10.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.10.md delete mode 100644 python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md rename python/ql/lib/change-notes/{2024-03-01-dict-update-content.md => released/0.11.10.md} (52%) rename python/ql/src/change-notes/{2024-03-04-nosql-injection.md => released/0.9.10.md} (81%) delete mode 100644 ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md create mode 100644 ruby/ql/lib/change-notes/released/0.8.10.md delete mode 100644 ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md rename ruby/ql/src/change-notes/{2024-03-01-method-code-injection-sinks.md => released/0.8.10.md} (51%) create mode 100644 shared/controlflow/change-notes/released/0.1.10.md create mode 100644 shared/dataflow/change-notes/released/0.2.1.md create mode 100644 shared/mad/change-notes/released/0.2.10.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.9.md create mode 100644 shared/regex/change-notes/released/0.2.10.md create mode 100644 shared/ssa/change-notes/released/0.2.10.md create mode 100644 shared/threat-models/change-notes/released/0.0.9.md create mode 100644 shared/tutorial/change-notes/released/0.2.10.md create mode 100644 shared/typetracking/change-notes/released/0.2.10.md create mode 100644 shared/typos/change-notes/released/0.2.10.md create mode 100644 shared/util/change-notes/released/0.2.10.md create mode 100644 shared/yaml/change-notes/released/0.2.10.md rename swift/ql/lib/change-notes/{2024-02-22-extension-patch.md => released/0.3.10.md} (83%) create mode 100644 swift/ql/src/change-notes/released/0.3.10.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index b3091ec37d8f..e1c0dfbecd9a 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.12.7 + +### Minor Analysis Improvements + +* Added destructors for named objects to the intermediate representation. + ## 0.12.6 ### New Features diff --git a/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md b/cpp/ql/lib/change-notes/released/0.12.7.md similarity index 54% rename from cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md rename to cpp/ql/lib/change-notes/released/0.12.7.md index 4e35decaf8ed..856a8b665c74 100644 --- a/cpp/ql/lib/change-notes/2024-02-26-ir-named-destructors.md +++ b/cpp/ql/lib/change-notes/released/0.12.7.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Added destructors for named objects to the intermediate representation. \ No newline at end of file +## 0.12.7 + +### Minor Analysis Improvements + +* Added destructors for named objects to the intermediate representation. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 170a312c1047..20419e9c6100 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.6 +lastReleaseVersion: 0.12.7 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8e201fff5943..3bb9229bf94d 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.7-dev +version: 0.12.7 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index ffcd73ff5d72..f6acd424bb05 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.9.6 + +### Minor Analysis Improvements + +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. +* The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. + ## 0.9.5 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md b/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md deleted file mode 100644 index 2e5933a61e86..000000000000 --- a/cpp/ql/src/change-notes/2024-02-29-non-constant-format-path-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md b/cpp/ql/src/change-notes/released/0.9.6.md similarity index 77% rename from cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md rename to cpp/ql/src/change-notes/released/0.9.6.md index d6ef3c3e0569..0c85f3f9f0f0 100644 --- a/cpp/ql/src/change-notes/2024-02-16-modelled-functions-block-flow.md +++ b/cpp/ql/src/change-notes/released/0.9.6.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.9.6 + +### Minor Analysis Improvements + +* The "non-constant format string" query (`cpp/non-constant-format`) has been converted to a `path-problem` query. * The new C/C++ dataflow and taint-tracking libraries (`semmle.code.cpp.dataflow.new.DataFlow` and `semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via `DataFlowFunction` and `TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new `isPartialWrite` predicate. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 460240feafff..19139c132b2d 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.5 +lastReleaseVersion: 0.9.6 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 31bd20166b2b..4052647bb97f 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.6-dev +version: 0.9.6 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 190b83b0f25a..82eacfc84f70 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.10 + +No user-facing changes. + ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md new file mode 100644 index 000000000000..8e8007d8475f --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.10.md @@ -0,0 +1,3 @@ +## 1.7.10 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 678da6bc37e9..31c7fe07020b 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.9 +lastReleaseVersion: 1.7.10 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 7e643b0fac33..ee993bed0c91 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.10-dev +version: 1.7.10 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 190b83b0f25a..82eacfc84f70 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.10 + +No user-facing changes. + ## 1.7.9 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md new file mode 100644 index 000000000000..8e8007d8475f --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.10.md @@ -0,0 +1,3 @@ +## 1.7.10 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 678da6bc37e9..31c7fe07020b 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.9 +lastReleaseVersion: 1.7.10 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 8654bbfd0312..1f421754fc82 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.10-dev +version: 1.7.10 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 95fd64c52704..16cc14259e19 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,17 @@ +## 0.8.10 + +### Major Analysis Improvements + +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. + +### Minor Analysis Improvements + +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. +* C# 12: Add extractor and QL library support for `ref readonly` parameters. +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md b/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md deleted file mode 100644 index 6bb8e99c71ef..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-21-getonly-properties.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md b/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md deleted file mode 100644 index d6ffbd523ac6..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-22-no-db-stats.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. diff --git a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md b/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md deleted file mode 100644 index 9b1739b9b6da..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-23-compiler-generated.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. diff --git a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md b/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md deleted file mode 100644 index 66ab65083dc3..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-26-variable-capture-flow.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md b/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md deleted file mode 100644 index 8749c790954e..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-28-experimental-attribute.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. diff --git a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md b/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md deleted file mode 100644 index 586b5341d293..000000000000 --- a/csharp/ql/lib/change-notes/2024-02-28-refreadonly-parameter.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* C# 12: Add extractor and QL library support for `ref readonly` parameters. diff --git a/csharp/ql/lib/change-notes/released/0.8.10.md b/csharp/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..f591ddc5b21a --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,13 @@ +## 0.8.10 + +### Major Analysis Improvements + +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. + +### Minor Analysis Improvements + +* C# 12: Add QL library support (`ExperimentalAttribute`) for the experimental attribute. +* C# 12: Add extractor and QL library support for `ref readonly` parameters. +* C#: The table `expr_compiler_generated` has been deleted and its content has been added to `compiler_generated`. +* Data flow via get only properties like `public object Obj { get; }` is now captured by the data flow library. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index d75ea3c63207..93c5c1120a24 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.10-dev +version: 0.8.10 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 9fe1609363fc..46c939e5cee1 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/2024-02-06-threat-models.md b/csharp/ql/src/change-notes/released/0.8.10.md similarity index 88% rename from csharp/ql/src/change-notes/2024-02-06-threat-models.md rename to csharp/ql/src/change-notes/released/0.8.10.md index 69ac4e4dc17a..702161c3d28f 100644 --- a/csharp/ql/src/change-notes/2024-02-06-threat-models.md +++ b/csharp/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- -* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. \ No newline at end of file +## 0.8.10 + +### Minor Analysis Improvements + +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are `cs/code-injection`, `cs/command-line-injection`, `cs/user-controlled-bypass`, `cs/count-untrusted-data-external-api`, `cs/untrusted-data-to-external-api`, `cs/ldap-injection`, `cs/log-forging`, `cs/xml/missing-validation`, `cs/redos`, `cs/regex-injection`, `cs/resource-injection`, `cs/sql-injection`, `cs/path-injection`, `cs/unsafe-deserialization-untrusted-input`, `cs/web/unvalidated-url-redirection`, `cs/xml/insecure-dtd-handling`, `cs/xml/xpath-injection`, `cs/web/xss`, and `cs/uncontrolled-format-string`. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 9ee23cc73078..46384094b19e 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.10-dev +version: 0.8.10 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index fba2a8703562..a59e560c4155 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.9.md b/go/ql/consistency-queries/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index b574796b9954..d5a2fbee5f19 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.9-dev +version: 0.0.9 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 65a2376217b1..fee5fd37a267 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.7.10 + +### Major Analysis Improvements + +* We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. +* Go 1.22 has been included in the range of supported Go versions. + +### Bug Fixes + +* Fixed dataflow out of a `map` using a `range` statement. + ## 0.7.9 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-02-14-range-map-read.md b/go/ql/lib/change-notes/2024-02-14-range-map-read.md deleted file mode 100644 index ea45737a72ea..000000000000 --- a/go/ql/lib/change-notes/2024-02-14-range-map-read.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md b/go/ql/lib/change-notes/released/0.7.10.md similarity index 68% rename from go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md rename to go/ql/lib/change-notes/released/0.7.10.md index 0442a571029f..55954f8a3945 100644 --- a/go/ql/lib/change-notes/2024-03-04-autobuilder-changes.md +++ b/go/ql/lib/change-notes/released/0.7.10.md @@ -1,5 +1,10 @@ ---- -category: majorAnalysis ---- +## 0.7.10 + +### Major Analysis Improvements + * We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. * Go 1.22 has been included in the range of supported Go versions. + +### Bug Fixes + +* Fixed dataflow out of a `map` using a `range` statement. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index f21e478efa68..8cc190fa880a 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.10-dev +version: 0.7.10 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index d95165a3a34e..24e38b9890e1 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.10 + +No user-facing changes. + ## 0.7.9 ### New Queries diff --git a/go/ql/src/change-notes/released/0.7.10.md b/go/ql/src/change-notes/released/0.7.10.md new file mode 100644 index 000000000000..989c5b8f6823 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.10.md @@ -0,0 +1,3 @@ +## 0.7.10 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index d91cab596127..4ded3a52f63e 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.10-dev +version: 0.7.10 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 4a3c54adb385..c3282c773a9d 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.17 + +No user-facing changes. + ## 0.0.16 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.17.md b/java/ql/automodel/src/change-notes/released/0.0.17.md new file mode 100644 index 000000000000..62cc89030a62 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.17.md @@ -0,0 +1,3 @@ +## 0.0.17 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index a49f7be4cff3..cbc3d3cd4934 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.16 +lastReleaseVersion: 0.0.17 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 898239be0989..59fab0cdcc53 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.17-dev +version: 0.0.17 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index d369cbdc9318..2a02ccee6abb 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. + +### Bug Fixes + +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. + ## 0.8.9 ### Deprecated APIs diff --git a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md b/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md deleted file mode 100644 index eb560fba07da..000000000000 --- a/java/ql/lib/change-notes/2024-02-23-widget-flowsteps.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/change-notes/2024-02-27-error-types.md b/java/ql/lib/change-notes/2024-02-27-error-types.md deleted file mode 100644 index cdc6d7620aa8..000000000000 --- a/java/ql/lib/change-notes/2024-02-27-error-types.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. diff --git a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md b/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md deleted file mode 100644 index a0227088ae97..000000000000 --- a/java/ql/lib/change-notes/2024-02-27-mvnw-versions.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: fix ---- -* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. diff --git a/java/ql/lib/change-notes/released/0.8.10.md b/java/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..b45f14bf347a --- /dev/null +++ b/java/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,10 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL `ErrorType` more often. + +### Bug Fixes + +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper `mvnw` is in use and the `maven-wrapper.jar` file is not present in the repository. +* Some flow steps related to `android.text.Editable.toString` that were accidentally disabled have been re-enabled. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 15b4982d41eb..428eedc75e3d 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.10-dev +version: 0.8.10 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 5d8353514538..c61275f5ed84 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.10 + +### New Queries + +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. + +### Minor Analysis Improvements + +* To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. + ## 0.8.9 ### New Queries diff --git a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md b/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md deleted file mode 100644 index 1de077277962..000000000000 --- a/java/ql/src/change-notes/2024-02-12-android-insecure-keys.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md b/java/ql/src/change-notes/released/0.8.10.md similarity index 54% rename from java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md rename to java/ql/src/change-notes/released/0.8.10.md index 0bb4f18f2bd9..c5d18ae33794 100644 --- a/java/ql/src/change-notes/2024-03-04-sensitive-log-remove-null-from-sources.md +++ b/java/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,9 @@ ---- -category: minorAnalysis ---- +## 0.8.10 + +### New Queries + +* Added a new query `java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. + +### Minor Analysis Improvements + * To reduce the number of false positives in the query "Insertion of sensitive information into log files" (`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 8f4de528e213..ebbdbeee3b2c 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.10-dev +version: 0.8.10 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 5b97ebbb22b3..d5edcc005131 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.10 + +No user-facing changes. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/javascript/ql/lib/change-notes/released/0.8.10.md b/javascript/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..777bbd2fdede --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,3 @@ +## 0.8.10 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index ef3ca7521aca..da16493a21c9 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.10-dev +version: 0.8.10 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 85516e3625d1..b9627cac5eee 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.10 + +No user-facing changes. + ## 0.8.9 ### Bug Fixes diff --git a/javascript/ql/src/change-notes/released/0.8.10.md b/javascript/ql/src/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..777bbd2fdede --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.10.md @@ -0,0 +1,3 @@ +## 0.8.10 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index b6181aa30e99..d224952c5641 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.10-dev +version: 0.8.10 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 3c06dd69b0f5..1c4455b66c43 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.10 + +No user-facing changes. + ## 0.7.9 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.10.md b/misc/suite-helpers/change-notes/released/0.7.10.md new file mode 100644 index 000000000000..989c5b8f6823 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.10.md @@ -0,0 +1,3 @@ +## 0.7.10 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 576395f3405e..675185672974 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.9 +lastReleaseVersion: 0.7.10 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 49b7a6bda4c2..54d978d5efe7 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.10-dev +version: 0.7.10 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index e6f318c51ea8..f095607ca1bf 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.11.10 + +### Minor Analysis Improvements + +* Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. + ## 0.11.9 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md b/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md deleted file mode 100644 index 3c47c6ba866a..000000000000 --- a/python/ql/lib/change-notes/2024-02-28-iterable-unpacking-module-scope.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/change-notes/2024-03-01-dict-update-content.md b/python/ql/lib/change-notes/released/0.11.10.md similarity index 52% rename from python/ql/lib/change-notes/2024-03-01-dict-update-content.md rename to python/ql/lib/change-notes/released/0.11.10.md index dfb8d247fffa..ed873724e4f2 100644 --- a/python/ql/lib/change-notes/2024-03-01-dict-update-content.md +++ b/python/ql/lib/change-notes/released/0.11.10.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.11.10 + +### Minor Analysis Improvements + * Fixed missing flow for dictionary updates (`d[] = ...`) when `` is a string constant not used in dictionary literals or as name of keyword-argument. +* Fixed flow for iterable unpacking (`a,b = my_tuple`) when it occurs on top-level (module) scope. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index b064d1778a10..ddddcbe9193d 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.9 +lastReleaseVersion: 0.11.10 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index e9f66e205f24..59a8b4c96d17 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.10-dev +version: 0.11.10 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 50762bcbf34e..d4245aba7a62 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.9.10 + +### New Queries + +* The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. + ## 0.9.9 No user-facing changes. diff --git a/python/ql/src/change-notes/2024-03-04-nosql-injection.md b/python/ql/src/change-notes/released/0.9.10.md similarity index 81% rename from python/ql/src/change-notes/2024-03-04-nosql-injection.md rename to python/ql/src/change-notes/released/0.9.10.md index 6e98540c757c..4cbb221b789f 100644 --- a/python/ql/src/change-notes/2024-03-04-nosql-injection.md +++ b/python/ql/src/change-notes/released/0.9.10.md @@ -1,4 +1,5 @@ ---- -category: newQuery ---- +## 0.9.10 + +### New Queries + * The query `py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index aabed7c396b7..d086ed69541d 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.9 +lastReleaseVersion: 0.9.10 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index aa18f2d87074..c920f667836b 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.10-dev +version: 0.9.10 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a623a151e891..c61a12e0f4ad 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,12 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. + ## 0.8.9 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md b/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md deleted file mode 100644 index c2276f284a84..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-15-activerecord_connection_sql_sinks.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md b/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md deleted file mode 100644 index 1486c7a472d1..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-20-activerecord-sql-sink-arguments.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md deleted file mode 100644 index 6f3a90768bab..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md deleted file mode 100644 index 350e049b5bfc..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/released/0.8.10.md b/ruby/ql/lib/change-notes/released/0.8.10.md new file mode 100644 index 000000000000..666e28f840e7 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.10.md @@ -0,0 +1,8 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. +* Additional arguments beyond the first of calls to the `ActiveRecord` methods `select`, `reselect`, `order`, `reorder`, `joins`, `group`, and `pluck` are now recognized as sql injection sinks. +* Calls to several methods of `ActiveRecord::Connection`, such as `ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 7d409b83adbd..de5b41999fe1 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.10-dev +version: 0.8.10 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 4149c728effa..f875b6d16ad4 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. +* Added additional request sources for Ruby on Rails. + ## 0.8.9 No user-facing changes. diff --git a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md b/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md deleted file mode 100644 index 84ea696dfef4..000000000000 --- a/ruby/ql/src/change-notes/2024-02-13-rails-more-request-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added additional request sources for Ruby on Rails. \ No newline at end of file diff --git a/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md b/ruby/ql/src/change-notes/released/0.8.10.md similarity index 51% rename from ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md rename to ruby/ql/src/change-notes/released/0.8.10.md index 43e40d3fd536..985cdf8d22e0 100644 --- a/ruby/ql/src/change-notes/2024-03-01-method-code-injection-sinks.md +++ b/ruby/ql/src/change-notes/released/0.8.10.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- -* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. \ No newline at end of file +## 0.8.10 + +### Minor Analysis Improvements + +* Calls to `Object#method`, `Object#public_method` and `Object#singleton_method` with untrusted data are now recognised as sinks for code injection. +* Added additional request sources for Ruby on Rails. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 5290c29b7fe7..0521f0f75fad 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.9 +lastReleaseVersion: 0.8.10 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 8af7f9fd7976..5e3792682346 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.10-dev +version: 0.8.10 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index dbfa6ef4512d..75f2ca53f987 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.10 + +No user-facing changes. + ## 0.1.9 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.10.md b/shared/controlflow/change-notes/released/0.1.10.md new file mode 100644 index 000000000000..47358eeee934 --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.10.md @@ -0,0 +1,3 @@ +## 0.1.10 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 1425c0edf7f8..30f5ca88be0e 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.9 +lastReleaseVersion: 0.1.10 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 9d35a6782761..1d43802be421 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.10-dev +version: 0.1.10 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 67a5bf589f4f..ef80788bded6 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1 + +No user-facing changes. + ## 0.2.0 ### Breaking Changes diff --git a/shared/dataflow/change-notes/released/0.2.1.md b/shared/dataflow/change-notes/released/0.2.1.md new file mode 100644 index 000000000000..3dbfc85fe11d --- /dev/null +++ b/shared/dataflow/change-notes/released/0.2.1.md @@ -0,0 +1,3 @@ +## 0.2.1 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 5274e27ed522..df29a726bccc 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.0 +lastReleaseVersion: 0.2.1 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 1e7becf71c4f..ee422e02ea9a 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.1-dev +version: 0.2.1 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 4d09057118ce..4730366775ea 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.10.md b/shared/mad/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/mad/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 22c8f271ccc6..6d7269ef3da8 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 5b8dbcfab22c..9943dcb79727 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.9.md b/shared/rangeanalysis/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 836fe51ee344..01db5d5734d0 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.9-dev +version: 0.0.9 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index cd5f91f71ec1..c05869c153d3 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.10.md b/shared/regex/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/regex/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index ea3f7f9b2389..0d4f485312f7 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 01acfae01489..a9161ff578b0 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.10.md b/shared/ssa/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 19304ad107f1..2ad254711a50 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index fba2a8703562..a59e560c4155 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.9 + +No user-facing changes. + ## 0.0.8 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.9.md b/shared/threat-models/change-notes/released/0.0.9.md new file mode 100644 index 000000000000..c9e17c6d6cf2 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.9.md @@ -0,0 +1,3 @@ +## 0.0.9 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 58fdc6b45deb..ecdd64fbab86 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.8 +lastReleaseVersion: 0.0.9 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index d0ed9a913b21..60cbbc56fcb3 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.9-dev +version: 0.0.9 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 1db3a01af0b1..560ad058d5b3 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.10.md b/shared/tutorial/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index b595ae9ee70a..69116705c1bf 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index afc857bc6bce..350f9ecbeae0 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.10.md b/shared/typetracking/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index b55927f59bb7..fbbdcf5162a1 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 66c5871d9821..54b1eaa4d589 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.10.md b/shared/typos/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/typos/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 644bfe11bff7..4d59d9b3c342 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 63832e927fa5..1ca1f71bcbc2 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.10.md b/shared/util/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/util/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index ca1a866a53d4..28ed738a93dd 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index e5495abcd503..9fd5ebc26ab2 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.10 + +No user-facing changes. + ## 0.2.9 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.10.md b/shared/yaml/change-notes/released/0.2.10.md new file mode 100644 index 000000000000..81c9722b19fe --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.10.md @@ -0,0 +1,3 @@ +## 0.2.10 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index d021cf0a6bed..a71167814cb7 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.9 +lastReleaseVersion: 0.2.10 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index de5b47e120ae..9643ffcec66b 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.10-dev +version: 0.2.10 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index e88cd0259ccf..8f14bfcedc9c 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.3.10 + +### Bug Fixes + +* Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. + ## 0.3.9 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/2024-02-22-extension-patch.md b/swift/ql/lib/change-notes/released/0.3.10.md similarity index 83% rename from swift/ql/lib/change-notes/2024-02-22-extension-patch.md rename to swift/ql/lib/change-notes/released/0.3.10.md index 7bd78f3b785c..9d6286ff58a7 100644 --- a/swift/ql/lib/change-notes/2024-02-22-extension-patch.md +++ b/swift/ql/lib/change-notes/released/0.3.10.md @@ -1,4 +1,5 @@ ---- -category: fix ---- +## 0.3.10 + +### Bug Fixes + * Fixed an issue where `TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 3fa5180bcb49..76ca0ac8ba76 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.9 +lastReleaseVersion: 0.3.10 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index a37a4cb3d580..70ec4798ea85 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.10-dev +version: 0.3.10 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 96615d069729..bda9834c9bca 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.10 + +No user-facing changes. + ## 0.3.9 ### New Queries diff --git a/swift/ql/src/change-notes/released/0.3.10.md b/swift/ql/src/change-notes/released/0.3.10.md new file mode 100644 index 000000000000..925a48fc52e0 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.10.md @@ -0,0 +1,3 @@ +## 0.3.10 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 3fa5180bcb49..76ca0ac8ba76 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.9 +lastReleaseVersion: 0.3.10 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index e3ead42c98bf..ba66b065529b 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.10-dev +version: 0.3.10 groups: - swift - queries From dc9092c9ec2cdda8188e9e44d8d51d2a0c6b6cc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 6 Mar 2024 22:19:33 +0000 Subject: [PATCH 070/731] Post-release preparation for codeql-cli-2.16.4 --- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 3bb9229bf94d..8b17a050d82a 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.7 +version: 0.12.8-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 4052647bb97f..49eb255cc8f7 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.6 +version: 0.9.7-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index ee993bed0c91..3e8792bce0ec 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.10 +version: 1.7.11-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 1f421754fc82..c67ab9130a0e 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.10 +version: 1.7.11-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 93c5c1120a24..a67b40f744f1 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.10 +version: 0.8.11-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 46384094b19e..a2148a361570 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.10 +version: 0.8.11-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index d5a2fbee5f19..e82c98f52cb3 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.9 +version: 0.0.10-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 8cc190fa880a..54b284e7ee58 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.10 +version: 0.7.11-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4ded3a52f63e..c89aacb8aa22 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.10 +version: 0.7.11-dev groups: - go - queries diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 59fab0cdcc53..8064163f5ccc 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.17 +version: 0.0.18-dev groups: - java - automodel diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 428eedc75e3d..ed83a620d20a 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.10 +version: 0.8.11-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index ebbdbeee3b2c..d7612d9da676 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.10 +version: 0.8.11-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index da16493a21c9..30fa7de41986 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.10 +version: 0.8.11-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index d224952c5641..01a3e8a0841d 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.10 +version: 0.8.11-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 54d978d5efe7..5d8225b2e0b6 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.10 +version: 0.7.11-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 59a8b4c96d17..daab6a412065 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.10 +version: 0.11.11-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index c920f667836b..5b641a329cb2 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.10 +version: 0.9.11-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index de5b41999fe1..81695d545ec2 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.10 +version: 0.8.11-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 5e3792682346..65e81bf2ba28 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.10 +version: 0.8.11-dev groups: - ruby - queries diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 1d43802be421..19c95747294b 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.10 +version: 0.1.11-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index ee422e02ea9a..4e896e9ae020 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.1 +version: 0.2.2-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 6d7269ef3da8..e3d2ccaf7483 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 01db5d5734d0..6a528c17637e 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.9 +version: 0.0.10-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 0d4f485312f7..8717c5b8a730 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 2ad254711a50..656662e9061e 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 60cbbc56fcb3..ece8f74f701c 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.9 +version: 0.0.10-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 69116705c1bf..b1f2b729a851 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index fbbdcf5162a1..efca17020697 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 4d59d9b3c342..76434dcb21cd 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 28ed738a93dd..f4d51c896ce6 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 9643ffcec66b..41f2bc851fd8 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.10 +version: 0.2.11-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 70ec4798ea85..673004b5172b 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.10 +version: 0.3.11-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index ba66b065529b..11192f11d8b8 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.10 +version: 0.3.11-dev groups: - swift - queries From a60afef9233bb7e993be3915b2e2c7823036e689 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 16:37:04 -0800 Subject: [PATCH 071/731] C++: Add a local flow test file for IR dataflow. --- .../dataflow-tests/localFlow-ir.expected | 160 ++++++++++++++++++ .../dataflow/dataflow-tests/localFlow-ir.ql | 8 + 2 files changed, 168 insertions(+) create mode 100644 cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected create mode 100644 cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.ql diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected new file mode 100644 index 000000000000..1fa924a11ce2 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected @@ -0,0 +1,160 @@ +| example.c:15:37:15:37 | **b | example.c:15:37:15:37 | **b | +| example.c:15:37:15:37 | **b | example.c:15:37:15:37 | **b | +| example.c:15:37:15:37 | **b | example.c:15:37:15:37 | *b | +| example.c:15:37:15:37 | **b | example.c:19:6:19:6 | *b | +| example.c:15:37:15:37 | *b | example.c:15:37:15:37 | **b | +| example.c:15:37:15:37 | *b | example.c:15:37:15:37 | *b | +| example.c:15:37:15:37 | *b | example.c:15:37:15:37 | *b | +| example.c:15:37:15:37 | *b | example.c:15:37:15:37 | b | +| example.c:15:37:15:37 | *b | example.c:19:6:19:6 | b | +| example.c:15:37:15:37 | b | example.c:15:37:15:37 | *b | +| example.c:15:37:15:37 | b | example.c:15:37:15:37 | b | +| example.c:15:37:15:37 | b | example.c:15:37:15:37 | b | +| example.c:15:44:15:46 | pos | example.c:24:24:24:26 | pos | +| example.c:17:11:17:16 | *definition of coords | example.c:17:11:17:16 | *definition of coords | +| example.c:17:11:17:16 | *definition of coords | example.c:17:11:17:16 | *definition of coords | +| example.c:17:11:17:16 | *definition of coords | example.c:17:11:17:16 | *definition of coords | +| example.c:17:11:17:16 | *definition of coords | example.c:17:11:17:16 | *definition of coords | +| example.c:17:11:17:16 | *definition of coords | example.c:24:13:24:18 | *coords | +| example.c:17:11:17:16 | *definition of coords [post update] | example.c:17:11:17:16 | *definition of coords | +| example.c:17:11:17:16 | *definition of coords [post update] | example.c:24:13:24:18 | *coords | +| example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | *definition of coords | +| example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | definition of coords | +| example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | definition of coords | +| example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | definition of coords | +| example.c:17:19:17:22 | {...} | example.c:17:19:17:22 | {...} | +| example.c:17:21:17:21 | 0 | example.c:17:21:17:21 | 0 | +| example.c:19:6:19:6 | *b | example.c:15:37:15:37 | *b | +| example.c:19:6:19:6 | *b [post update] | example.c:15:37:15:37 | *b | +| example.c:19:6:19:6 | *b [post update] | example.c:19:6:19:6 | *b | +| example.c:19:6:19:6 | b [post update] | example.c:19:6:19:6 | b | +| example.c:24:2:24:7 | *coords | example.c:26:18:26:24 | *& ... | +| example.c:24:2:24:7 | *coords [post update] | example.c:26:18:26:24 | *& ... | +| example.c:24:13:24:18 | *coords | example.c:24:2:24:7 | *coords | +| example.c:24:13:24:18 | *coords [post update] | example.c:24:2:24:7 | *coords | +| example.c:24:13:24:30 | ... = ... | example.c:24:2:24:30 | ... = ... | +| example.c:24:20:24:20 | *y | example.c:24:20:24:20 | *y | +| example.c:24:20:24:20 | y | example.c:24:20:24:20 | y | +| example.c:24:20:24:20 | y | example.c:24:20:24:20 | y | +| example.c:24:24:24:26 | pos | example.c:28:14:28:25 | *& ... | +| example.c:24:24:24:30 | ... + ... | example.c:24:13:24:30 | ... = ... | +| example.c:26:13:26:16 | call to getX | example.c:26:2:26:25 | ... = ... | +| example.c:26:18:26:24 | *& ... | example.c:26:2:26:7 | *coords | +| example.c:26:18:26:24 | getX output argument | example.c:26:2:26:7 | *coords | +| example.c:26:19:26:24 | *coords | example.c:26:18:26:24 | *& ... | +| example.c:26:19:26:24 | coords | example.c:26:18:26:24 | & ... | +| example.c:28:22:28:25 | & ... | example.c:28:14:28:25 | & ... | +| example.c:28:22:28:25 | *& ... | example.c:28:14:28:25 | *& ... | +| example.c:28:23:28:25 | *pos | example.c:28:22:28:25 | *& ... | +| example.c:28:23:28:25 | pos | example.c:28:22:28:25 | & ... | +| test.cpp:6:12:6:17 | call to source | test.cpp:6:12:6:17 | call to source | +| test.cpp:6:12:6:17 | call to source | test.cpp:7:8:7:9 | t1 | +| test.cpp:7:8:7:9 | t1 | test.cpp:8:8:8:9 | t1 | +| test.cpp:8:3:8:9 | ... = ... | test.cpp:10:8:10:9 | t2 | +| test.cpp:8:8:8:9 | t1 | test.cpp:8:3:8:9 | ... = ... | +| test.cpp:8:8:8:9 | t1 | test.cpp:9:8:9:9 | t1 | +| test.cpp:9:8:9:9 | t1 | test.cpp:11:7:11:8 | t1 | +| test.cpp:10:8:10:9 | t2 | test.cpp:15:3:15:6 | Phi | +| test.cpp:12:5:12:10 | ... = ... | test.cpp:13:10:13:11 | t2 | +| test.cpp:12:10:12:10 | 0 | test.cpp:12:5:12:10 | ... = ... | +| test.cpp:13:10:13:11 | t2 | test.cpp:15:3:15:6 | Phi | +| test.cpp:15:3:15:6 | Phi | test.cpp:15:8:15:9 | t2 | +| test.cpp:15:3:15:6 | Phi | test.cpp:15:8:15:9 | t2 | +| test.cpp:15:8:15:9 | t2 | test.cpp:23:19:23:19 | Phi | +| test.cpp:15:8:15:9 | t2 | test.cpp:23:19:23:19 | Phi | +| test.cpp:17:3:17:8 | ... = ... | test.cpp:21:8:21:9 | t1 | +| test.cpp:17:8:17:8 | 0 | test.cpp:17:3:17:8 | ... = ... | +| test.cpp:21:8:21:9 | t1 | test.cpp:23:19:23:19 | Phi | +| test.cpp:23:15:23:16 | 0 | test.cpp:23:15:23:16 | 0 | +| test.cpp:23:15:23:16 | 0 | test.cpp:23:19:23:19 | Phi | +| test.cpp:23:19:23:19 | Phi | test.cpp:23:19:23:19 | i | +| test.cpp:23:19:23:19 | Phi | test.cpp:23:19:23:19 | i | +| test.cpp:23:19:23:19 | Phi | test.cpp:23:23:23:24 | t1 | +| test.cpp:23:19:23:19 | Phi | test.cpp:23:23:23:24 | t1 | +| test.cpp:23:19:23:19 | Phi | test.cpp:24:10:24:11 | t2 | +| test.cpp:23:19:23:19 | Phi | test.cpp:24:10:24:11 | t2 | +| test.cpp:23:19:23:19 | i | test.cpp:23:27:23:27 | i | +| test.cpp:23:19:23:19 | i | test.cpp:23:27:23:27 | i | +| test.cpp:23:23:23:24 | t1 | test.cpp:23:19:23:19 | Phi | +| test.cpp:23:23:23:24 | t1 | test.cpp:26:8:26:9 | t1 | +| test.cpp:23:23:23:24 | t1 | test.cpp:26:8:26:9 | t1 | +| test.cpp:23:27:23:27 | *i | test.cpp:23:27:23:27 | *i | +| test.cpp:23:27:23:27 | *i | test.cpp:23:27:23:27 | i | +| test.cpp:23:27:23:27 | i | test.cpp:23:19:23:19 | Phi | +| test.cpp:23:27:23:27 | i | test.cpp:23:27:23:27 | i | +| test.cpp:23:27:23:27 | i | test.cpp:23:27:23:27 | i | +| test.cpp:23:27:23:29 | ... ++ | test.cpp:23:19:23:19 | Phi | +| test.cpp:23:27:23:29 | ... ++ | test.cpp:23:27:23:29 | ... ++ | +| test.cpp:24:5:24:11 | ... = ... | test.cpp:23:19:23:19 | Phi | +| test.cpp:24:10:24:11 | t2 | test.cpp:23:19:23:19 | Phi | +| test.cpp:24:10:24:11 | t2 | test.cpp:23:19:23:19 | Phi | +| test.cpp:24:10:24:11 | t2 | test.cpp:24:5:24:11 | ... = ... | +| test.cpp:382:48:382:54 | source1 | test.cpp:384:16:384:23 | *& ... | +| test.cpp:383:12:383:13 | 0 | test.cpp:383:12:383:13 | 0 | +| test.cpp:383:12:383:13 | 0 | test.cpp:384:10:384:13 | *& ... | +| test.cpp:384:10:384:13 | & ... | test.cpp:384:3:384:8 | call to memcpy | +| test.cpp:384:10:384:13 | & ... | test.cpp:384:10:384:13 | & ... | +| test.cpp:384:10:384:13 | *& ... | test.cpp:384:10:384:13 | *& ... | +| test.cpp:384:10:384:13 | memcpy output argument | test.cpp:385:8:385:10 | tmp | +| test.cpp:384:11:384:13 | *tmp | test.cpp:384:10:384:13 | *& ... | +| test.cpp:384:11:384:13 | tmp | test.cpp:384:10:384:13 | & ... | +| test.cpp:384:16:384:23 | & ... | test.cpp:384:16:384:23 | & ... | +| test.cpp:384:16:384:23 | *& ... | test.cpp:384:3:384:8 | **call to memcpy | +| test.cpp:384:16:384:23 | *& ... | test.cpp:384:3:384:8 | *call to memcpy | +| test.cpp:384:16:384:23 | *& ... | test.cpp:384:10:384:13 | memcpy output argument | +| test.cpp:384:16:384:23 | *& ... | test.cpp:384:16:384:23 | *& ... | +| test.cpp:384:16:384:23 | **(const void *)... | test.cpp:384:3:384:8 | **call to memcpy | +| test.cpp:384:16:384:23 | **(const void *)... | test.cpp:384:10:384:13 | memcpy output argument | +| test.cpp:384:17:384:23 | *source1 | test.cpp:384:16:384:23 | *& ... | +| test.cpp:384:17:384:23 | source1 | test.cpp:384:16:384:23 | & ... | +| test.cpp:388:53:388:59 | source1 | test.cpp:391:16:391:23 | *& ... | +| test.cpp:388:66:388:66 | b | test.cpp:393:7:393:7 | b | +| test.cpp:389:12:389:13 | 0 | test.cpp:389:12:389:13 | 0 | +| test.cpp:389:12:389:13 | 0 | test.cpp:390:18:390:21 | *& ... | +| test.cpp:390:18:390:21 | & ... | test.cpp:390:18:390:21 | & ... | +| test.cpp:390:18:390:21 | *& ... | test.cpp:390:18:390:21 | *& ... | +| test.cpp:390:18:390:21 | *& ... | test.cpp:391:10:391:13 | *& ... | +| test.cpp:390:19:390:21 | *tmp | test.cpp:390:18:390:21 | *& ... | +| test.cpp:390:19:390:21 | tmp | test.cpp:390:18:390:21 | & ... | +| test.cpp:391:10:391:13 | & ... | test.cpp:391:3:391:8 | call to memcpy | +| test.cpp:391:10:391:13 | & ... | test.cpp:391:10:391:13 | & ... | +| test.cpp:391:10:391:13 | *& ... | test.cpp:391:10:391:13 | *& ... | +| test.cpp:391:10:391:13 | memcpy output argument | test.cpp:392:8:392:10 | tmp | +| test.cpp:391:11:391:13 | *tmp | test.cpp:391:10:391:13 | *& ... | +| test.cpp:391:11:391:13 | tmp | test.cpp:391:10:391:13 | & ... | +| test.cpp:391:16:391:23 | & ... | test.cpp:391:16:391:23 | & ... | +| test.cpp:391:16:391:23 | *& ... | test.cpp:391:3:391:8 | **call to memcpy | +| test.cpp:391:16:391:23 | *& ... | test.cpp:391:3:391:8 | *call to memcpy | +| test.cpp:391:16:391:23 | *& ... | test.cpp:391:10:391:13 | memcpy output argument | +| test.cpp:391:16:391:23 | *& ... | test.cpp:391:16:391:23 | *& ... | +| test.cpp:391:16:391:23 | **(const void *)... | test.cpp:391:3:391:8 | **call to memcpy | +| test.cpp:391:16:391:23 | **(const void *)... | test.cpp:391:10:391:13 | memcpy output argument | +| test.cpp:391:17:391:23 | *source1 | test.cpp:391:16:391:23 | *& ... | +| test.cpp:391:17:391:23 | source1 | test.cpp:391:16:391:23 | & ... | +| test.cpp:392:8:392:10 | tmp | test.cpp:394:10:394:12 | tmp | +| test.cpp:487:67:487:67 | **s | test.cpp:487:67:487:67 | **s | +| test.cpp:487:67:487:67 | **s | test.cpp:487:67:487:67 | **s | +| test.cpp:487:67:487:67 | **s | test.cpp:487:67:487:67 | *s | +| test.cpp:487:67:487:67 | **s | test.cpp:488:21:488:21 | *s | +| test.cpp:487:67:487:67 | *s | test.cpp:487:67:487:67 | **s | +| test.cpp:487:67:487:67 | *s | test.cpp:487:67:487:67 | *s | +| test.cpp:487:67:487:67 | *s | test.cpp:487:67:487:67 | *s | +| test.cpp:487:67:487:67 | *s | test.cpp:487:67:487:67 | s | +| test.cpp:487:67:487:67 | *s | test.cpp:488:21:488:21 | s | +| test.cpp:487:67:487:67 | s | test.cpp:487:67:487:67 | *s | +| test.cpp:487:67:487:67 | s | test.cpp:487:67:487:67 | s | +| test.cpp:487:67:487:67 | s | test.cpp:487:67:487:67 | s | +| test.cpp:488:21:488:21 | *s | test.cpp:489:20:489:20 | *s | +| test.cpp:488:21:488:21 | *s [post update] | test.cpp:489:20:489:20 | *s | +| test.cpp:488:21:488:21 | s | test.cpp:489:20:489:20 | s | +| test.cpp:488:21:488:21 | s [post update] | test.cpp:489:20:489:20 | s | +| test.cpp:488:24:488:30 | *content | test.cpp:488:21:488:30 | *content | +| test.cpp:488:24:488:30 | content | test.cpp:488:21:488:30 | content | +| test.cpp:489:20:489:20 | *s | test.cpp:487:67:487:67 | *s | +| test.cpp:489:20:489:20 | *s [post update] | test.cpp:487:67:487:67 | *s | +| test.cpp:489:20:489:20 | *s [post update] | test.cpp:489:20:489:20 | *s | +| test.cpp:489:20:489:20 | s [post update] | test.cpp:489:20:489:20 | s | +| test.cpp:489:23:489:29 | *content | test.cpp:489:23:489:29 | *content | +| test.cpp:489:23:489:29 | *content | test.cpp:490:8:490:17 | * ... | +| test.cpp:489:23:489:29 | content | test.cpp:489:23:489:29 | content | +| test.cpp:489:23:489:29 | content | test.cpp:490:9:490:17 | p_content | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.ql b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.ql new file mode 100644 index 000000000000..7a908a6e3f23 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.ql @@ -0,0 +1,8 @@ +import cpp +import semmle.code.cpp.dataflow.new.DataFlow + +from DataFlow::Node nodeFrom, DataFlow::Node nodeTo +where + DataFlow::localFlowStep(nodeFrom, nodeTo) and + nodeFrom.getFunction().getName().matches("%\\_with\\_local\\_flow") +select nodeFrom, nodeTo From cc754858c6f8a4420cd31715d19563b6d4bdf5da Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 18:12:58 -0800 Subject: [PATCH 072/731] C++: Add a testcase with missing flow out of the address of 'a' and to the argument of 'sink'. --- .../dataflow/dataflow-tests/dataflow-consistency.expected | 2 ++ .../dataflow/dataflow-tests/localFlow-ir.expected | 7 +++++++ .../dataflow/dataflow-tests/localFlow.expected | 7 +++++++ .../dataflow/dataflow-tests/test-source-sink.expected | 1 + cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp | 6 ++++++ .../dataflow/dataflow-tests/uninitialized.expected | 2 ++ 6 files changed, 25 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected index 8b2b371a4e26..fa6958d92ea3 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected @@ -166,6 +166,8 @@ postWithInFlow | test.cpp:932:5:932:19 | * ... [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:932:6:932:19 | global_pointer [inner post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:1045:9:1045:11 | ref arg buf | PostUpdateNode should not be the target of local flow. | +| test.cpp:1051:5:1051:11 | content [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1052:9:1052:9 | a [inner post update] | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected index 1fa924a11ce2..c8377f43d593 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected @@ -158,3 +158,10 @@ | test.cpp:489:23:489:29 | *content | test.cpp:490:8:490:17 | * ... | | test.cpp:489:23:489:29 | content | test.cpp:489:23:489:29 | content | | test.cpp:489:23:489:29 | content | test.cpp:490:9:490:17 | p_content | +| test.cpp:1050:12:1050:12 | definition of a | test.cpp:1051:3:1051:3 | *a | +| test.cpp:1051:3:1051:3 | *a | test.cpp:1052:8:1052:9 | *& ... | +| test.cpp:1051:3:1051:3 | *a [post update] | test.cpp:1052:8:1052:9 | *& ... | +| test.cpp:1051:15:1051:21 | 0 | test.cpp:1051:3:1051:21 | ... = ... | +| test.cpp:1051:15:1051:21 | *0 | test.cpp:1051:3:1051:21 | *... = ... | +| test.cpp:1052:9:1052:9 | *a | test.cpp:1052:8:1052:9 | *& ... | +| test.cpp:1052:9:1052:9 | a | test.cpp:1052:8:1052:9 | & ... | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected index 525e6b22da54..2f4c618a1308 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow.expected @@ -81,3 +81,10 @@ WARNING: Module DataFlow has been deprecated and may be removed in future (local | test.cpp:488:21:488:21 | s [post update] | test.cpp:489:20:489:20 | s | | test.cpp:488:24:488:30 | ref arg content | test.cpp:489:23:489:29 | content | | test.cpp:489:23:489:29 | content | test.cpp:490:9:490:17 | p_content | +| test.cpp:1050:12:1050:12 | a | test.cpp:1051:3:1051:3 | a | +| test.cpp:1050:12:1050:12 | a | test.cpp:1052:9:1052:9 | a | +| test.cpp:1051:3:1051:3 | a [post update] | test.cpp:1052:9:1052:9 | a | +| test.cpp:1051:3:1051:21 | ... = ... | test.cpp:1051:5:1051:11 | content [post update] | +| test.cpp:1051:15:1051:21 | 0 | test.cpp:1051:3:1051:21 | ... = ... | +| test.cpp:1052:8:1052:9 | ref arg & ... | test.cpp:1052:9:1052:9 | a [inner post update] | +| test.cpp:1052:9:1052:9 | a | test.cpp:1052:8:1052:9 | & ... | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected index c9f90a60b6e4..e03ee68b8a35 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected @@ -123,6 +123,7 @@ astFlow | test.cpp:842:11:842:16 | call to source | test.cpp:844:8:844:8 | y | | test.cpp:846:13:846:27 | call to indirect_source | test.cpp:848:23:848:25 | rpx | | test.cpp:860:54:860:59 | call to source | test.cpp:861:10:861:37 | static_local_pointer_dynamic | +| test.cpp:1050:12:1050:12 | a | test.cpp:1052:8:1052:9 | & ... | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | | true_upon_entry.cpp:33:11:33:16 | call to source | true_upon_entry.cpp:39:8:39:8 | x | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp index b36c289aaf1d..b2bff6327c56 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -1044,4 +1044,10 @@ void* memset(void*, int, size_t); void memset_test(char* buf) { // $ ast-def=buf ir-def=*buf memset(buf, source(), 10); sink(*buf); // $ ir MISSING: ast +} + +void flow_out_of_address_with_local_flow() { + MyStruct a; + a.content = nullptr; + sink(&a); // $ SPURIOUS: ast } \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected index 39fb882940d6..fc230b0ed20d 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/uninitialized.expected @@ -54,3 +54,5 @@ | test.cpp:796:12:796:12 | a | test.cpp:797:20:797:20 | a | | test.cpp:796:12:796:12 | a | test.cpp:797:31:797:31 | a | | test.cpp:796:12:796:12 | a | test.cpp:798:17:798:17 | a | +| test.cpp:1050:12:1050:12 | a | test.cpp:1051:3:1051:3 | a | +| test.cpp:1050:12:1050:12 | a | test.cpp:1052:9:1052:9 | a | From 84797b90918d82f21c8011ea88aa35781fa63918 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 16:25:36 -0800 Subject: [PATCH 073/731] C++: Refactor the address out of 'DefImpl' and into a new abstract class 'OperandBasedDef'. --- .../cpp/ir/dataflow/internal/SsaInternals.qll | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 5f254ee12b76..7304a70dcf2d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -256,23 +256,29 @@ private predicate sourceVariableHasBaseAndIndex(SourceVariable v, BaseSourceVari } abstract class DefImpl extends DefOrUseImpl { - Operand address; int ind; bindingset[ind] DefImpl() { any() } - abstract int getIndirection(); + override int getIndirectionIndex() { result = ind } - abstract Node0Impl getValue(); + override string toString() { result = "Def of " + this.getSourceVariable() } + + abstract int getIndirection(); abstract predicate isCertain(); - Operand getAddressOperand() { result = address } + abstract Node0Impl getValue(); +} - override int getIndirectionIndex() { result = ind } +abstract class OperandBasedDef extends DefImpl { + Operand address; - override string toString() { result = "Def of " + this.getSourceVariable() } + bindingset[ind] + OperandBasedDef() { any() } + + Operand getAddressOperand() { result = address } override Cpp::Location getLocation() { result = this.getAddressOperand().getUse().getLocation() } @@ -281,7 +287,7 @@ abstract class DefImpl extends DefOrUseImpl { } } -private class DirectDef extends DefImpl, TDefImpl { +private class DirectDef extends OperandBasedDef, TDefImpl { BaseSourceVariableInstruction base; DirectDef() { this = TDefImpl(base, address, ind) } @@ -295,7 +301,7 @@ private class DirectDef extends DefImpl, TDefImpl { override predicate isCertain() { isDef(true, _, address, base, _, ind) } } -private class IteratorDef extends DefImpl, TIteratorDef { +private class IteratorDef extends OperandBasedDef, TIteratorDef { BaseSourceVariableInstruction container; IteratorDef() { this = TIteratorDef(address, container, ind) } @@ -1178,7 +1184,7 @@ class UseOrPhi extends SsaDefOrUse { class Def extends DefOrUse { override DefImpl defOrUse; - Operand getAddressOperand() { result = defOrUse.getAddressOperand() } + Operand getAddressOperand() { result = defOrUse.(OperandBasedDef).getAddressOperand() } Instruction getAddress() { result = this.getAddressOperand().getDef() } From cf162aa41240ccb9bd7ae39c2c6c068a4b3644eb Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 16:26:11 -0800 Subject: [PATCH 074/731] C++: Add an explicit definition of the address of an IRVariable. --- .../cpp/ir/dataflow/internal/SsaInternals.qll | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll index 7304a70dcf2d..c036343544c4 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternals.qll @@ -103,6 +103,7 @@ predicate hasRawIndirectInstruction(Instruction instr, int indirectionIndex) { cached private newtype TDefOrUseImpl = + TDefAddressImpl(BaseIRVariable v) or TDefImpl(BaseSourceVariableInstruction base, Operand address, int indirectionIndex) { isDef(_, _, address, base, _, indirectionIndex) } or @@ -272,7 +273,41 @@ abstract class DefImpl extends DefOrUseImpl { abstract Node0Impl getValue(); } -abstract class OperandBasedDef extends DefImpl { +/** An initial definition of an `IRVariable`'s address. */ +private class DefAddressImpl extends DefImpl, TDefAddressImpl { + BaseIRVariable v; + + DefAddressImpl() { + this = TDefAddressImpl(v) and + ind = 0 + } + + final override int getIndirection() { result = 0 } + + final override predicate isCertain() { any() } + + final override Node0Impl getValue() { none() } + + final override predicate hasIndexInBlock(IRBlock block, int index) { + block = v.getIRVariable().getEnclosingIRFunction().getEntryBlock() and + index = 0 + } + + override Cpp::Location getLocation() { result = v.getIRVariable().getLocation() } + + final override SourceVariable getSourceVariable() { + result.getBaseVariable() = v and + result.getIndirection() = 0 + } + + final override BaseSourceVariableInstruction getBase() { none() } +} + +/** + * An SSA definition that has an associated `Operand` representing the address + * that is being written to. + */ +abstract private class OperandBasedDef extends DefImpl { Operand address; bindingset[ind] From 4c9876b008015f682ad3a94b93c244b46950fc3f Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 18:15:04 -0800 Subject: [PATCH 075/731] C++: Accept test changes. --- .../dataflow-tests/localFlow-ir.expected | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected index c8377f43d593..0e33430cde79 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected @@ -10,6 +10,7 @@ | example.c:15:37:15:37 | b | example.c:15:37:15:37 | *b | | example.c:15:37:15:37 | b | example.c:15:37:15:37 | b | | example.c:15:37:15:37 | b | example.c:15:37:15:37 | b | +| example.c:15:37:15:37 | b | example.c:19:6:19:6 | b | | example.c:15:44:15:46 | pos | example.c:24:24:24:26 | pos | | example.c:17:11:17:16 | *definition of coords | example.c:17:11:17:16 | *definition of coords | | example.c:17:11:17:16 | *definition of coords | example.c:17:11:17:16 | *definition of coords | @@ -22,6 +23,10 @@ | example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | definition of coords | | example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | definition of coords | | example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | definition of coords | +| example.c:17:11:17:16 | definition of coords | example.c:17:11:17:16 | definition of coords | +| example.c:17:11:17:16 | definition of coords | example.c:24:13:24:18 | coords | +| example.c:17:11:17:16 | definition of coords [post update] | example.c:17:11:17:16 | definition of coords | +| example.c:17:11:17:16 | definition of coords [post update] | example.c:24:13:24:18 | coords | | example.c:17:19:17:22 | {...} | example.c:17:19:17:22 | {...} | | example.c:17:21:17:21 | 0 | example.c:17:21:17:21 | 0 | | example.c:19:6:19:6 | *b | example.c:15:37:15:37 | *b | @@ -30,17 +35,24 @@ | example.c:19:6:19:6 | b [post update] | example.c:19:6:19:6 | b | | example.c:24:2:24:7 | *coords | example.c:26:18:26:24 | *& ... | | example.c:24:2:24:7 | *coords [post update] | example.c:26:18:26:24 | *& ... | +| example.c:24:2:24:7 | coords | example.c:26:18:26:24 | & ... | +| example.c:24:2:24:7 | coords [post update] | example.c:26:18:26:24 | & ... | | example.c:24:13:24:18 | *coords | example.c:24:2:24:7 | *coords | | example.c:24:13:24:18 | *coords [post update] | example.c:24:2:24:7 | *coords | +| example.c:24:13:24:18 | coords | example.c:24:2:24:7 | coords | +| example.c:24:13:24:18 | coords [post update] | example.c:24:2:24:7 | coords | | example.c:24:13:24:30 | ... = ... | example.c:24:2:24:30 | ... = ... | | example.c:24:20:24:20 | *y | example.c:24:20:24:20 | *y | | example.c:24:20:24:20 | y | example.c:24:20:24:20 | y | | example.c:24:20:24:20 | y | example.c:24:20:24:20 | y | +| example.c:24:24:24:26 | pos | example.c:28:14:28:25 | & ... | | example.c:24:24:24:26 | pos | example.c:28:14:28:25 | *& ... | | example.c:24:24:24:30 | ... + ... | example.c:24:13:24:30 | ... = ... | | example.c:26:13:26:16 | call to getX | example.c:26:2:26:25 | ... = ... | +| example.c:26:18:26:24 | & ... | example.c:26:2:26:7 | coords | | example.c:26:18:26:24 | *& ... | example.c:26:2:26:7 | *coords | | example.c:26:18:26:24 | getX output argument | example.c:26:2:26:7 | *coords | +| example.c:26:18:26:24 | pointer to getX output argument | example.c:26:2:26:7 | coords | | example.c:26:19:26:24 | *coords | example.c:26:18:26:24 | *& ... | | example.c:26:19:26:24 | coords | example.c:26:18:26:24 | & ... | | example.c:28:22:28:25 | & ... | example.c:28:14:28:25 | & ... | @@ -50,14 +62,21 @@ | test.cpp:6:12:6:17 | call to source | test.cpp:6:12:6:17 | call to source | | test.cpp:6:12:6:17 | call to source | test.cpp:7:8:7:9 | t1 | | test.cpp:7:8:7:9 | t1 | test.cpp:8:8:8:9 | t1 | +| test.cpp:7:8:7:9 | t1 | test.cpp:8:8:8:9 | t1 | | test.cpp:8:3:8:9 | ... = ... | test.cpp:10:8:10:9 | t2 | | test.cpp:8:8:8:9 | t1 | test.cpp:8:3:8:9 | ... = ... | | test.cpp:8:8:8:9 | t1 | test.cpp:9:8:9:9 | t1 | +| test.cpp:8:8:8:9 | t1 | test.cpp:9:8:9:9 | t1 | | test.cpp:9:8:9:9 | t1 | test.cpp:11:7:11:8 | t1 | +| test.cpp:9:8:9:9 | t1 | test.cpp:11:7:11:8 | t1 | +| test.cpp:10:8:10:9 | t2 | test.cpp:13:10:13:11 | t2 | +| test.cpp:10:8:10:9 | t2 | test.cpp:15:3:15:6 | Phi | | test.cpp:10:8:10:9 | t2 | test.cpp:15:3:15:6 | Phi | +| test.cpp:11:7:11:8 | t1 | test.cpp:21:8:21:9 | t1 | | test.cpp:12:5:12:10 | ... = ... | test.cpp:13:10:13:11 | t2 | | test.cpp:12:10:12:10 | 0 | test.cpp:12:5:12:10 | ... = ... | | test.cpp:13:10:13:11 | t2 | test.cpp:15:3:15:6 | Phi | +| test.cpp:13:10:13:11 | t2 | test.cpp:15:3:15:6 | Phi | | test.cpp:15:3:15:6 | Phi | test.cpp:15:8:15:9 | t2 | | test.cpp:15:3:15:6 | Phi | test.cpp:15:8:15:9 | t2 | | test.cpp:15:8:15:9 | t2 | test.cpp:23:19:23:19 | Phi | @@ -65,6 +84,7 @@ | test.cpp:17:3:17:8 | ... = ... | test.cpp:21:8:21:9 | t1 | | test.cpp:17:8:17:8 | 0 | test.cpp:17:3:17:8 | ... = ... | | test.cpp:21:8:21:9 | t1 | test.cpp:23:19:23:19 | Phi | +| test.cpp:21:8:21:9 | t1 | test.cpp:23:19:23:19 | Phi | | test.cpp:23:15:23:16 | 0 | test.cpp:23:15:23:16 | 0 | | test.cpp:23:15:23:16 | 0 | test.cpp:23:19:23:19 | Phi | | test.cpp:23:19:23:19 | Phi | test.cpp:23:19:23:19 | i | @@ -94,8 +114,10 @@ | test.cpp:383:12:383:13 | 0 | test.cpp:384:10:384:13 | *& ... | | test.cpp:384:10:384:13 | & ... | test.cpp:384:3:384:8 | call to memcpy | | test.cpp:384:10:384:13 | & ... | test.cpp:384:10:384:13 | & ... | +| test.cpp:384:10:384:13 | & ... | test.cpp:385:8:385:10 | tmp | | test.cpp:384:10:384:13 | *& ... | test.cpp:384:10:384:13 | *& ... | | test.cpp:384:10:384:13 | memcpy output argument | test.cpp:385:8:385:10 | tmp | +| test.cpp:384:10:384:13 | pointer to memcpy output argument | test.cpp:385:8:385:10 | tmp | | test.cpp:384:11:384:13 | *tmp | test.cpp:384:10:384:13 | *& ... | | test.cpp:384:11:384:13 | tmp | test.cpp:384:10:384:13 | & ... | | test.cpp:384:16:384:23 | & ... | test.cpp:384:16:384:23 | & ... | @@ -112,14 +134,17 @@ | test.cpp:389:12:389:13 | 0 | test.cpp:389:12:389:13 | 0 | | test.cpp:389:12:389:13 | 0 | test.cpp:390:18:390:21 | *& ... | | test.cpp:390:18:390:21 | & ... | test.cpp:390:18:390:21 | & ... | +| test.cpp:390:18:390:21 | & ... | test.cpp:391:10:391:13 | & ... | | test.cpp:390:18:390:21 | *& ... | test.cpp:390:18:390:21 | *& ... | | test.cpp:390:18:390:21 | *& ... | test.cpp:391:10:391:13 | *& ... | | test.cpp:390:19:390:21 | *tmp | test.cpp:390:18:390:21 | *& ... | | test.cpp:390:19:390:21 | tmp | test.cpp:390:18:390:21 | & ... | | test.cpp:391:10:391:13 | & ... | test.cpp:391:3:391:8 | call to memcpy | | test.cpp:391:10:391:13 | & ... | test.cpp:391:10:391:13 | & ... | +| test.cpp:391:10:391:13 | & ... | test.cpp:392:8:392:10 | tmp | | test.cpp:391:10:391:13 | *& ... | test.cpp:391:10:391:13 | *& ... | | test.cpp:391:10:391:13 | memcpy output argument | test.cpp:392:8:392:10 | tmp | +| test.cpp:391:10:391:13 | pointer to memcpy output argument | test.cpp:392:8:392:10 | tmp | | test.cpp:391:11:391:13 | *tmp | test.cpp:391:10:391:13 | *& ... | | test.cpp:391:11:391:13 | tmp | test.cpp:391:10:391:13 | & ... | | test.cpp:391:16:391:23 | & ... | test.cpp:391:16:391:23 | & ... | @@ -132,6 +157,7 @@ | test.cpp:391:17:391:23 | *source1 | test.cpp:391:16:391:23 | *& ... | | test.cpp:391:17:391:23 | source1 | test.cpp:391:16:391:23 | & ... | | test.cpp:392:8:392:10 | tmp | test.cpp:394:10:394:12 | tmp | +| test.cpp:392:8:392:10 | tmp | test.cpp:394:10:394:12 | tmp | | test.cpp:487:67:487:67 | **s | test.cpp:487:67:487:67 | **s | | test.cpp:487:67:487:67 | **s | test.cpp:487:67:487:67 | **s | | test.cpp:487:67:487:67 | **s | test.cpp:487:67:487:67 | *s | @@ -144,9 +170,11 @@ | test.cpp:487:67:487:67 | s | test.cpp:487:67:487:67 | *s | | test.cpp:487:67:487:67 | s | test.cpp:487:67:487:67 | s | | test.cpp:487:67:487:67 | s | test.cpp:487:67:487:67 | s | +| test.cpp:487:67:487:67 | s | test.cpp:488:21:488:21 | s | | test.cpp:488:21:488:21 | *s | test.cpp:489:20:489:20 | *s | | test.cpp:488:21:488:21 | *s [post update] | test.cpp:489:20:489:20 | *s | | test.cpp:488:21:488:21 | s | test.cpp:489:20:489:20 | s | +| test.cpp:488:21:488:21 | s | test.cpp:489:20:489:20 | s | | test.cpp:488:21:488:21 | s [post update] | test.cpp:489:20:489:20 | s | | test.cpp:488:24:488:30 | *content | test.cpp:488:21:488:30 | *content | | test.cpp:488:24:488:30 | content | test.cpp:488:21:488:30 | content | @@ -161,6 +189,8 @@ | test.cpp:1050:12:1050:12 | definition of a | test.cpp:1051:3:1051:3 | *a | | test.cpp:1051:3:1051:3 | *a | test.cpp:1052:8:1052:9 | *& ... | | test.cpp:1051:3:1051:3 | *a [post update] | test.cpp:1052:8:1052:9 | *& ... | +| test.cpp:1051:3:1051:3 | a | test.cpp:1052:8:1052:9 | & ... | +| test.cpp:1051:3:1051:3 | a [post update] | test.cpp:1052:8:1052:9 | & ... | | test.cpp:1051:15:1051:21 | 0 | test.cpp:1051:3:1051:21 | ... = ... | | test.cpp:1051:15:1051:21 | *0 | test.cpp:1051:3:1051:21 | *... = ... | | test.cpp:1052:9:1052:9 | *a | test.cpp:1052:8:1052:9 | *& ... | From f0a5183a3f1901cd5027e05be847232721c3d97b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 03:59:07 +0000 Subject: [PATCH 076/731] Bump chrono from 0.4.34 to 0.4.35 in /ql Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.34 to 0.4.35. - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](https://github.com/chronotope/chrono/compare/v0.4.34...v0.4.35) --- updated-dependencies: - dependency-name: chrono dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- ql/Cargo.lock | 4 ++-- ql/buramu/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ql/Cargo.lock b/ql/Cargo.lock index 3b8e78046888..557cf673d595 100644 --- a/ql/Cargo.lock +++ b/ql/Cargo.lock @@ -133,9 +133,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/ql/buramu/Cargo.toml b/ql/buramu/Cargo.toml index 328501a05faf..c072903b82a8 100644 --- a/ql/buramu/Cargo.toml +++ b/ql/buramu/Cargo.toml @@ -7,6 +7,6 @@ edition = "2018" [dependencies] lazy_static = "1.4.0" -chrono = "0.4.34" +chrono = "0.4.35" rayon = "1.9.0" regex = "1.10.3" From 8ae6fa5366839cd1cde7a4eadfb25b30ad128fd8 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 5 Mar 2024 16:23:58 -0800 Subject: [PATCH 077/731] C++: Add a new query 'cpp/type-confusion' for detecting type confusion vulnerabilities. --- .../Security/CWE/CWE-843/TypeConfusion.qhelp | 47 ++++ .../src/Security/CWE/CWE-843/TypeConfusion.ql | 251 ++++++++++++++++++ .../Security/CWE/CWE-843/TypeConfusionBad.cpp | 7 + .../CWE/CWE-843/TypeConfusionCommon.cpp | 25 ++ .../CWE/CWE-843/TypeConfusionGood.cpp | 11 + .../CWE/CWE-843/TypeConfusion.expected | 27 ++ .../Security/CWE/CWE-843/TypeConfusion.qlref | 1 + .../query-tests/Security/CWE/CWE-843/test.cpp | 146 ++++++++++ 8 files changed, 515 insertions(+) create mode 100644 cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp create mode 100644 cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql create mode 100644 cpp/ql/src/Security/CWE/CWE-843/TypeConfusionBad.cpp create mode 100644 cpp/ql/src/Security/CWE/CWE-843/TypeConfusionCommon.cpp create mode 100644 cpp/ql/src/Security/CWE/CWE-843/TypeConfusionGood.cpp create mode 100644 cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected create mode 100644 cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.qlref create mode 100644 cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp new file mode 100644 index 000000000000..b1ad3a7d6ce0 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp @@ -0,0 +1,47 @@ + + + + +

    +Certain casts in C and C++ places no restrictions on the target type. For +example, C style casts such as (MyClass*)p allows the programmer +to cast any pointer p to an expression of type MyClass*. +If the runtime type of p turns out to be a type that's incompatible +with MyClass, this results in undefined behavior. +

    +
    + + +

    +If possible, use dynamic_cast to safely cast between polymorphic types. +If dynamic_cast is not an option, use static_cast to restrict +the kinds of conversions that the compiler is allowed to perform. If C++ style casts is +not an option, carefully check that all casts are safe. +

    +
    + + +

    +Consider the following class hierachy where we define a base class Shape and two +derived classes Circle and Square that are mutually incompatible: +

    + + +

    +The following code demonstrates a type confusion vulnerability where the programmer +assumes that the runtime type of p is always a Square. +However, if p is a Circle, the cast will result in undefined behavior. +

    + + +

    +The following code fixes the vulnerability by using dynamic_cast to +safely cast between polymorphic types. If the cast fails, dynamic_cast +returns a null pointer, which can be checked for and handled appropriately. +

    + +
    + + + +
    diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql new file mode 100644 index 000000000000..99f89106fb68 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql @@ -0,0 +1,251 @@ +/** + * @name Type confusion + * @description Casting a value to an incompatible type can lead to undefined behavior. + * @kind path-problem + * @problem.severity warning + * @security-severity 9.3 + * @precision medium + * @id cpp/type-confusion + * @tags security + * external/cwe/cwe-843 + */ + +import cpp +import semmle.code.cpp.dataflow.new.DataFlow +import BadFlow::PathGraph + +/** + * Holds if `f` is a field located at byte offset `offset` in `c`. + * + * Note that predicate is recursive, so that given the following: + * ```cpp + * struct S1 { + * int a; + * void* b; + * }; + * + * struct S2 { + * S1 s1; + * char c; + * }; + * ``` + * both `hasAFieldWithOffset(S2, s1, 0)` and `hasAFieldWithOffset(S2, a, 0)` + * holds. + */ +predicate hasAFieldWithOffset(Class c, Field f, int offset) { + // Base case: `f` is a field in `c`. + f = c.getAField() and + offset = f.getByteOffset() and + not f.getUnspecifiedType().(Class).hasDefinition() + or + // Otherwise, we find the struct that is a field of `c` which then has + // the field `f` as a member. + exists(Field g | + g = c.getAField() and + // Find the field with the largest offset that's less than or equal to + // offset. That's the struct we need to search recursively. + g = + max(Field cand, int candOffset | + cand = c.getAField() and + candOffset = cand.getByteOffset() and + offset >= candOffset + | + cand order by candOffset + ) and + hasAFieldWithOffset(g.getUnspecifiedType(), f, offset - g.getByteOffset()) + ) +} + +/** Holds if `f` is the last field of its declaring class. */ +predicate lastField(Field f) { + exists(Class c | c = f.getDeclaringType() | + f = + max(Field cand, int byteOffset | + cand.getDeclaringType() = c and byteOffset = f.getByteOffset() + | + cand order by byteOffset + ) + ) +} + +/** + * Holds if there exists a field in `c2` at offset `offset` that's compatible + * with `f1`. + */ +bindingset[f1, offset, c2] +pragma[inline_late] +predicate hasCompatibleFieldAtOffset(Field f1, int offset, Class c2) { + exists(Field f2 | hasAFieldWithOffset(c2, f2, offset) | + // Let's not deal with bit-fields for now. + f2 instanceof BitField + or + f1.getUnspecifiedType().getSize() = f2.getUnspecifiedType().getSize() + or + lastField(f1) and + f1.getUnspecifiedType().getSize() <= f2.getUnspecifiedType().getSize() + ) +} + +/** + * Holds if `c1` is a prefix of `c2`. + */ +bindingset[c1, c2] +pragma[inline_late] +predicate prefix(Class c1, Class c2) { + not c1.isPolymorphic() and + not c2.isPolymorphic() and + if c1 instanceof Union + then + // If it's a union we just verify that one of it's variants is compatible with the other class + exists(Field f1, int offset | + // Let's not deal with bit-fields for now. + not f1 instanceof BitField and + hasAFieldWithOffset(c1, f1, offset) + | + hasCompatibleFieldAtOffset(f1, offset, c2) + ) + else + forall(Field f1, int offset | + // Let's not deal with bit-fields for now. + not f1 instanceof BitField and + hasAFieldWithOffset(c1, f1, offset) + | + hasCompatibleFieldAtOffset(f1, offset, c2) + ) +} + +/** + * An unsafe cast is any explicit cast that is not + * a `dynamic_cast`. + */ +class UnsafeCast extends Cast { + private Class toType; + + UnsafeCast() { + ( + this instanceof CStyleCast + or + this instanceof StaticCast + or + this instanceof ReinterpretCast + ) and + toType = this.getExplicitlyConverted().getUnspecifiedType().stripType() and + not this.isImplicit() and + exists(TypeDeclarationEntry tde | + tde = toType.getDefinition() and + not tde.isFromUninstantiatedTemplate(_) + ) + } + + Class getConvertedType() { result = toType } + + bindingset[this, t] + pragma[inline_late] + predicate compatibleWith(Type t) { + t.stripType() = this.getConvertedType() + or + prefix(this.getConvertedType(), t.stripType()) + or + t.stripType().(Class).getABaseClass+() = this.getConvertedType() + or + t.stripType() = this.getConvertedType().getABaseClass+() + } +} + +/** + * Holds if `source` is an allocation that allocates a value of type `state`. + */ +predicate isSourceImpl(DataFlow::Node source, Class state) { + state = source.asExpr().(AllocationExpr).getAllocatedElementType().stripType() and + exists(TypeDeclarationEntry tde | + tde = state.getDefinition() and + not tde.isFromUninstantiatedTemplate(_) + ) +} + +module RelevantStateConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { isSourceImpl(source, _) } + + predicate isBarrier(DataFlow::Node node) { + // We disable flow through global variables to reduce FPs from infeasible paths + node instanceof DataFlow::VariableNode + or + exists(Class c | c = node.getType().stripType() | + not c.hasDefinition() + or + exists(TypeDeclarationEntry tde | + tde = c.getDefinition() and + tde.isFromUninstantiatedTemplate(_) + ) + ) + } + + predicate isSink(DataFlow::Node sink) { + exists(UnsafeCast cast | sink.asExpr() = cast.getUnconverted()) + } +} + +module RelevantStateFlow = DataFlow::Global; + +predicate relevantState(DataFlow::Node sink, Class state) { + exists(DataFlow::Node source | + RelevantStateFlow::flow(source, sink) and + isSourceImpl(source, state) + ) +} + +predicate isSinkImpl(DataFlow::Node sink, Class state, Type convertedType, boolean compatible) { + exists(UnsafeCast cast | + relevantState(sink, state) and + sink.asExpr() = cast.getUnconverted() and + convertedType = cast.getConvertedType() + | + if cast.compatibleWith(state) then compatible = true else compatible = false + ) +} + +module BadConfig implements DataFlow::StateConfigSig { + class FlowState extends Class { + FlowState() { isSourceImpl(_, this) } + } + + predicate isSource(DataFlow::Node source, FlowState state) { isSourceImpl(source, state) } + + predicate isBarrier(DataFlow::Node node) { RelevantStateConfig::isBarrier(node) } + + predicate isSink(DataFlow::Node sink, FlowState state) { isSinkImpl(sink, state, _, false) } + + predicate isBarrierOut(DataFlow::Node sink, FlowState state) { isSink(sink, state) } +} + +module BadFlow = DataFlow::GlobalWithState; + +module GoodConfig implements DataFlow::StateConfigSig { + class FlowState = BadConfig::FlowState; + + predicate isSource(DataFlow::Node source, FlowState state) { BadConfig::isSource(source, state) } + + predicate isBarrier(DataFlow::Node node) { BadConfig::isBarrier(node) } + + predicate isSink(DataFlow::Node sink, FlowState state) { + isSinkImpl(sink, state, _, true) and + BadFlow::flowTo(sink) + } +} + +module GoodFlow = DataFlow::GlobalWithState; + +from + BadFlow::PathNode source, BadFlow::PathNode sink, Type sourceType, Type sinkType, + DataFlow::Node sinkNode +where + BadFlow::flowPath(source, sink) and + sinkNode = sink.getNode() and + // If there is any flow that would result in a valid cast then we don't + // report an alert here. This reduces the number of FPs from infeasible paths + // significantly. + not GoodFlow::flowTo(sinkNode) and + isSourceImpl(source.getNode(), sourceType) and + isSinkImpl(sinkNode, _, sinkType, false) +select sinkNode, source, sink, "Conversion from $@ to $@ is invalid.", sourceType, + sourceType.toString(), sinkType, sinkType.toString() diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionBad.cpp b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionBad.cpp new file mode 100644 index 000000000000..1ef9bfd3e318 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionBad.cpp @@ -0,0 +1,7 @@ +void allocate_and_draw_bad() { + Shape* shape = new Circle; + // ... + // BAD: Assumes that shape is always a Square + Square* square = static_cast(shape); + int length = square->getLength(); +} \ No newline at end of file diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionCommon.cpp b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionCommon.cpp new file mode 100644 index 000000000000..7bdee0195886 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionCommon.cpp @@ -0,0 +1,25 @@ +struct Shape { + virtual ~Shape(); + + virtual void draw() = 0; +}; + +struct Circle : public Shape { + Circle(); + + void draw() override { + /* ... */ + } + + int getRadius(); +}; + +struct Square : public Shape { + Square(); + + void draw() override { + /* ... */ + } + + int getLength(); +}; diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionGood.cpp b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionGood.cpp new file mode 100644 index 000000000000..f56a00a5e108 --- /dev/null +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusionGood.cpp @@ -0,0 +1,11 @@ +void allocate_and_draw_good() { + Shape* shape = new Circle; + // ... + // GOOD: Dynamically checks if shape is a Square + Square* square = dynamic_cast(shape); + if(square) { + int length = square->getLength(); + } else { + // handle error + } +} \ No newline at end of file diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected new file mode 100644 index 000000000000..2bf82dec9847 --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected @@ -0,0 +1,27 @@ +edges +| test.cpp:27:13:27:18 | new | test.cpp:28:25:28:55 | p | provenance | | +| test.cpp:32:13:32:30 | new | test.cpp:33:12:33:30 | p | provenance | | +| test.cpp:66:15:66:21 | new | test.cpp:67:12:67:31 | a | provenance | | +| test.cpp:85:9:85:15 | new | test.cpp:88:14:88:33 | a | provenance | | +| test.cpp:127:12:127:17 | new | test.cpp:128:24:128:59 | s2 | provenance | | +| test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | provenance | | +nodes +| test.cpp:27:13:27:18 | new | semmle.label | new | +| test.cpp:28:25:28:55 | p | semmle.label | p | +| test.cpp:32:13:32:30 | new | semmle.label | new | +| test.cpp:33:12:33:30 | p | semmle.label | p | +| test.cpp:66:15:66:21 | new | semmle.label | new | +| test.cpp:67:12:67:31 | a | semmle.label | a | +| test.cpp:85:9:85:15 | new | semmle.label | new | +| test.cpp:88:14:88:33 | a | semmle.label | a | +| test.cpp:127:12:127:17 | new | semmle.label | new | +| test.cpp:128:24:128:59 | s2 | semmle.label | s2 | +| test.cpp:143:14:143:19 | new | semmle.label | new | +| test.cpp:145:28:145:68 | s1_2 | semmle.label | s1_2 | +subpaths +#select +| test.cpp:28:25:28:55 | p | test.cpp:27:13:27:18 | new | test.cpp:28:25:28:55 | p | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:11:8:11:21 | Not_S1_wrapper | Not_S1_wrapper | +| test.cpp:33:12:33:30 | p | test.cpp:32:13:32:30 | new | test.cpp:33:12:33:30 | p | Conversion from $@ to $@ is invalid. | test.cpp:11:8:11:21 | Not_S1_wrapper | Not_S1_wrapper | test.cpp:1:8:1:9 | S1 | S1 | +| test.cpp:67:12:67:31 | a | test.cpp:66:15:66:21 | new | test.cpp:67:12:67:31 | a | Conversion from $@ to $@ is invalid. | test.cpp:55:8:55:10 | Cat | Cat | test.cpp:60:8:60:10 | Dog | Dog | +| test.cpp:128:24:128:59 | s2 | test.cpp:127:12:127:17 | new | test.cpp:128:24:128:59 | s2 | Conversion from $@ to $@ is invalid. | test.cpp:102:8:102:9 | S2 | S2 | test.cpp:119:8:119:20 | Not_S2_prefix | Not_S2_prefix | +| test.cpp:145:28:145:68 | s1_2 | test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:131:8:131:23 | HasSomeBitFields | HasSomeBitFields | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.qlref b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.qlref new file mode 100644 index 000000000000..53b17f1e1fda --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.qlref @@ -0,0 +1 @@ +Security/CWE/CWE-843/TypeConfusion.ql \ No newline at end of file diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp new file mode 100644 index 000000000000..90d8b47c8200 --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp @@ -0,0 +1,146 @@ +struct S1 { + int a; + void* b; + unsigned char c; +}; + +struct S1_wrapper { + S1 s1; +}; + +struct Not_S1_wrapper { + unsigned char x; + S1 s1; +}; + +void test1() { + void* p = new S1; + S1_wrapper* s1w = static_cast(p); // GOOD +} + +void test2() { + void* p = new S1_wrapper; + S1* s1 = static_cast(p); // GOOD +} + +void test3() { + void* p = new S1; + Not_S1_wrapper* s1w = static_cast(p); // BAD +} + +void test4() { + void* p = new Not_S1_wrapper; + S1* s1 = static_cast(p); // BAD +} + +struct HasBitFields { + int x : 16; + int y : 16; + int z : 32; +}; + +struct BufferStruct { + unsigned char buffer[sizeof(HasBitFields)]; +}; + +void test5() { + HasBitFields* p = new HasBitFields; + BufferStruct* bs = reinterpret_cast(p); // GOOD +} + +struct Animal { + virtual ~Animal(); +}; + +struct Cat : public Animal { + Cat(); + ~Cat(); +}; + +struct Dog : public Animal { + Dog(); + ~Dog(); +}; + +void test6() { + Animal* a = new Cat; + Dog* d = static_cast(a); // BAD +} + +void test7() { + Animal* a = new Cat; + Dog* d = dynamic_cast(a); // GOOD +} + +void test8() { + Animal* a = new Cat; + Cat* d = static_cast(a); // GOOD +} + +void test9(bool b) { + Animal* a; + if(b) { + a = new Cat; + } else { + a = new Dog; + } + if(b) { + Cat* d = static_cast(a); // GOOD + } +} + +/** + * The layout of S2 is: + * 0: int + * 8: void* + * 16: unsigned char + * 16 + pad: unsigned char + * 32 + pad: int + * 40 + pad: void* + * 48 + pad: unsigned char +*/ +struct S2 { + S1 s1; + unsigned char buffer[16]; + S1 s1_2; +}; + +struct S2_prefix { + int a; + void* p; + unsigned char c; +}; + +void test10() { + S2* s2 = new S2; + S2_prefix* s2p = reinterpret_cast(s2); // GOOD +} + +struct Not_S2_prefix { + int a; + void* p; + void* p2; + unsigned char c; +}; + +void test11() { + S2* s2 = new S2; + Not_S2_prefix* s2p = reinterpret_cast(s2); // BAD +} + +struct HasSomeBitFields { + int x : 16; + int y; + int z : 32; +}; + +void test12() { + // This has doesn't have any non-bitfield member, so we don't detect + // the problem here since the query currently ignores bitfields. + S1* s1 = new S1; + HasBitFields* hbf = reinterpret_cast(s1); // BAD [NOT DETECTED] + + S1* s1_2 = new S1; + // This one has a non-bitfield members. So we detect the problem + HasSomeBitFields* hbf2 = reinterpret_cast(s1_2); // BAD +} From 6dc0fa515d03d48de8bf572edf97bb6d14c3f162 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 5 Mar 2024 16:29:37 -0800 Subject: [PATCH 078/731] C++: Add change note. --- cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md diff --git a/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md b/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md new file mode 100644 index 000000000000..f96a4684b769 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. \ No newline at end of file From cf4c8eb517982d81f4194bbdde7828af980f3a9f Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 13:56:27 -0800 Subject: [PATCH 079/731] C++: Add more tests. --- cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp index 90d8b47c8200..879df4e23e6b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp @@ -144,3 +144,4 @@ void test12() { // This one has a non-bitfield members. So we detect the problem HasSomeBitFields* hbf2 = reinterpret_cast(s1_2); // BAD } + From cd57cd0d8ac83218ec4bc388a98298fe70872661 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 13:56:37 -0800 Subject: [PATCH 080/731] C++: Add qhelp reference. --- cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp index b1ad3a7d6ce0..0f72a9922056 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp @@ -43,5 +43,8 @@ returns a null pointer, which can be checked for and handled appropriately. +
  • +Microsoft Learn: Type conversions and type safety. +
  • From c2db5f490e750b0e371f943376f59b8bbbae1355 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 14:02:45 -0800 Subject: [PATCH 081/731] C++: Add more FNs and FPs to show examples of where the 'successor typing' strategy fails. --- .../CWE/CWE-843/TypeConfusion.expected | 7 +++++ .../query-tests/Security/CWE/CWE-843/test.cpp | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected index 2bf82dec9847..07c37663db9c 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected @@ -5,6 +5,8 @@ edges | test.cpp:85:9:85:15 | new | test.cpp:88:14:88:33 | a | provenance | | | test.cpp:127:12:127:17 | new | test.cpp:128:24:128:59 | s2 | provenance | | | test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | provenance | | +| test.cpp:153:9:153:15 | new | test.cpp:159:14:159:33 | a | provenance | | +| test.cpp:168:9:168:15 | new | test.cpp:171:14:171:33 | a | provenance | | nodes | test.cpp:27:13:27:18 | new | semmle.label | new | | test.cpp:28:25:28:55 | p | semmle.label | p | @@ -18,6 +20,10 @@ nodes | test.cpp:128:24:128:59 | s2 | semmle.label | s2 | | test.cpp:143:14:143:19 | new | semmle.label | new | | test.cpp:145:28:145:68 | s1_2 | semmle.label | s1_2 | +| test.cpp:153:9:153:15 | new | semmle.label | new | +| test.cpp:159:14:159:33 | a | semmle.label | a | +| test.cpp:168:9:168:15 | new | semmle.label | new | +| test.cpp:171:14:171:33 | a | semmle.label | a | subpaths #select | test.cpp:28:25:28:55 | p | test.cpp:27:13:27:18 | new | test.cpp:28:25:28:55 | p | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:11:8:11:21 | Not_S1_wrapper | Not_S1_wrapper | @@ -25,3 +31,4 @@ subpaths | test.cpp:67:12:67:31 | a | test.cpp:66:15:66:21 | new | test.cpp:67:12:67:31 | a | Conversion from $@ to $@ is invalid. | test.cpp:55:8:55:10 | Cat | Cat | test.cpp:60:8:60:10 | Dog | Dog | | test.cpp:128:24:128:59 | s2 | test.cpp:127:12:127:17 | new | test.cpp:128:24:128:59 | s2 | Conversion from $@ to $@ is invalid. | test.cpp:102:8:102:9 | S2 | S2 | test.cpp:119:8:119:20 | Not_S2_prefix | Not_S2_prefix | | test.cpp:145:28:145:68 | s1_2 | test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:131:8:131:23 | HasSomeBitFields | HasSomeBitFields | +| test.cpp:159:14:159:33 | a | test.cpp:153:9:153:15 | new | test.cpp:159:14:159:33 | a | Conversion from $@ to $@ is invalid. | test.cpp:60:8:60:10 | Dog | Dog | test.cpp:55:8:55:10 | Cat | Cat | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp index 879df4e23e6b..1ba1aa2062cf 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp @@ -145,3 +145,29 @@ void test12() { HasSomeBitFields* hbf2 = reinterpret_cast(s1_2); // BAD } +void test13(bool b, Cat* c) { + Animal* a; + if(b) { + a = c; + } else { + a = new Dog; + } + // This FP happens despite the `not GoodFlow::flowTo(sinkNode)` condition in the query + // because we don't find a flow path from `a = c` to `static_cast(a)` because + // the "source" (i.e., `a = c`) doesn't have an allocation. + if(b) { + Cat* d = static_cast(a); // GOOD [FALSE POSITIVE] + } +} + +void test14(bool b) { + Animal* a; + if(b) { + a = new Cat; + } else { + a = new Dog; + } + if(!b) { + Cat* d = static_cast(a); // BAD [NOT DETECTED] + } +} From fc9919a5b61f824f62f993ab0d30e3bb45bf7449 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 14:20:15 -0800 Subject: [PATCH 082/731] C++: Add a test that exercise the 'last field' check. --- .../CWE/CWE-843/TypeConfusion.expected | 4 ++++ .../query-tests/Security/CWE/CWE-843/test.cpp | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected index 07c37663db9c..04e5462bf010 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected @@ -7,6 +7,7 @@ edges | test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | provenance | | | test.cpp:153:9:153:15 | new | test.cpp:159:14:159:33 | a | provenance | | | test.cpp:168:9:168:15 | new | test.cpp:171:14:171:33 | a | provenance | | +| test.cpp:187:15:187:24 | new | test.cpp:189:25:189:45 | u64 | provenance | | nodes | test.cpp:27:13:27:18 | new | semmle.label | new | | test.cpp:28:25:28:55 | p | semmle.label | p | @@ -24,6 +25,8 @@ nodes | test.cpp:159:14:159:33 | a | semmle.label | a | | test.cpp:168:9:168:15 | new | semmle.label | new | | test.cpp:171:14:171:33 | a | semmle.label | a | +| test.cpp:187:15:187:24 | new | semmle.label | new | +| test.cpp:189:25:189:45 | u64 | semmle.label | u64 | subpaths #select | test.cpp:28:25:28:55 | p | test.cpp:27:13:27:18 | new | test.cpp:28:25:28:55 | p | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:11:8:11:21 | Not_S1_wrapper | Not_S1_wrapper | @@ -32,3 +35,4 @@ subpaths | test.cpp:128:24:128:59 | s2 | test.cpp:127:12:127:17 | new | test.cpp:128:24:128:59 | s2 | Conversion from $@ to $@ is invalid. | test.cpp:102:8:102:9 | S2 | S2 | test.cpp:119:8:119:20 | Not_S2_prefix | Not_S2_prefix | | test.cpp:145:28:145:68 | s1_2 | test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:131:8:131:23 | HasSomeBitFields | HasSomeBitFields | | test.cpp:159:14:159:33 | a | test.cpp:153:9:153:15 | new | test.cpp:159:14:159:33 | a | Conversion from $@ to $@ is invalid. | test.cpp:60:8:60:10 | Dog | Dog | test.cpp:55:8:55:10 | Cat | Cat | +| test.cpp:189:25:189:45 | u64 | test.cpp:187:15:187:24 | new | test.cpp:189:25:189:45 | u64 | Conversion from $@ to $@ is invalid. | test.cpp:175:8:175:13 | UInt64 | UInt64 | test.cpp:184:8:184:22 | UInt8_with_more | UInt8_with_more | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp index 1ba1aa2062cf..6b5b5ccde375 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp @@ -171,3 +171,22 @@ void test14(bool b) { Cat* d = static_cast(a); // BAD [NOT DETECTED] } } + +struct UInt64 { unsigned long u64; }; +struct UInt8 { unsigned char u8; }; + +void test14() { + void* u64 = new UInt64; + // ... + UInt8* u8 = (UInt8*)u64; // GOOD +} + +struct UInt8_with_more { UInt8 u8; void* p; }; + +void test15() { + void* u64 = new UInt64; + // ... + UInt8_with_more* u8 = (UInt8_with_more*)u64; // BAD +} + +// semmle-extractor-options: --gcc -std=c++11 From 3295d5cb9f03911a99831cf51fb70ce039559b1e Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 14:36:18 -0800 Subject: [PATCH 083/731] C++: Add more QLDoc. --- .../src/Security/CWE/CWE-843/TypeConfusion.ql | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql index 99f89106fb68..6bfe9164a393 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql @@ -163,6 +163,12 @@ predicate isSourceImpl(DataFlow::Node source, Class state) { ) } +/** + * The `RelevantStateConfig` configuration is used to find the set of + * states for the `BadConfig` and `GoodConfig`. The flow computed by + * `RelevantStateConfig` is used to implement the `relevantState` predicate + * which is used to avoid a cartesian product in `isSinkImpl`. + */ module RelevantStateConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isSourceImpl(source, _) } @@ -204,9 +210,16 @@ predicate isSinkImpl(DataFlow::Node sink, Class state, Type convertedType, boole ) } +/** + * The `BadConfig` configuration tracks flow from an allocation to an + * incompatible cast. + * + * We use `FlowState` to track the type of the source, and compare the + * flow state to the target of the cast in the `isSink` definition. + */ module BadConfig implements DataFlow::StateConfigSig { class FlowState extends Class { - FlowState() { isSourceImpl(_, this) } + FlowState() { relevantState(_, this) } } predicate isSource(DataFlow::Node source, FlowState state) { isSourceImpl(source, state) } @@ -220,6 +233,45 @@ module BadConfig implements DataFlow::StateConfigSig { module BadFlow = DataFlow::GlobalWithState; +/** + * The `GoodConfig` configuration tracks flow from an allocation to a + * compatible cast. + * + * We use `GoodConfig` to reduce the number of FPs from infeasible paths. + * For example, consider the following example: + * ```cpp + * struct Animal { virtual ~Animal(); }; + * + * struct Cat : public Animal { + * Cat(); + * ~Cat(); + * }; + * + * struct Dog : public Animal { + * Dog(); + * ~Dog(); + * }; + * + * void test9(bool b) { + * Animal* a; + * if(b) { + * a = new Cat; + * } else { + * a = new Dog; + * } + * if(b) { + * Cat* d = static_cast(a); + * } + * } + * ``` + * Here, `BadConfig` finds a flow from `a = new Dog` to `static_cast(a)`. + * However, that path is never realized in an actual execution path. So in + * order to remove this result we exclude results where there exists an + * allocation of a type that's compatible with `static_cast(a)`. + * + * We use `FlowState` to track the type of the source, and compare the + * flow state to the target of the cast in the `isSink` definition. + */ module GoodConfig implements DataFlow::StateConfigSig { class FlowState = BadConfig::FlowState; From bf84f3a936c07ca822a8394984cb84ebbba7ece7 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 15:53:16 -0800 Subject: [PATCH 084/731] C++: Add FN. --- .../query-tests/Security/CWE/CWE-843/test.cpp | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp index 6b5b5ccde375..3fdafd9d02f2 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp @@ -189,4 +189,24 @@ void test15() { UInt8_with_more* u8 = (UInt8_with_more*)u64; // BAD } -// semmle-extractor-options: --gcc -std=c++11 +struct SingleInt { + int i; +} __attribute__((packed));; + +struct PairInts { + int x, y; +} __attribute__((packed));; + +union MyUnion +{ + PairInts p; + unsigned long long foo; +} __attribute__((packed)); + +void test16() { + void* si = new SingleInt; + // ... + MyUnion* mu = (MyUnion*)si; // BAD [NOT DETECTED] +} + +// semmle-extractor-options: --gcc -std=c++11 \ No newline at end of file From 01fc7432cb79bc30857988401f8a4776c7b211e3 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 22:17:33 -0800 Subject: [PATCH 085/731] C++: Add more tests. --- .../CWE/CWE-843/TypeConfusion.expected | 8 ++++++++ .../query-tests/Security/CWE/CWE-843/test.cpp | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected index 04e5462bf010..45355a86a48b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected @@ -8,6 +8,8 @@ edges | test.cpp:153:9:153:15 | new | test.cpp:159:14:159:33 | a | provenance | | | test.cpp:168:9:168:15 | new | test.cpp:171:14:171:33 | a | provenance | | | test.cpp:187:15:187:24 | new | test.cpp:189:25:189:45 | u64 | provenance | | +| test.cpp:217:13:217:18 | new | test.cpp:218:30:218:65 | p | provenance | | +| test.cpp:226:13:226:18 | new | test.cpp:227:29:227:63 | p | provenance | | nodes | test.cpp:27:13:27:18 | new | semmle.label | new | | test.cpp:28:25:28:55 | p | semmle.label | p | @@ -27,6 +29,10 @@ nodes | test.cpp:171:14:171:33 | a | semmle.label | a | | test.cpp:187:15:187:24 | new | semmle.label | new | | test.cpp:189:25:189:45 | u64 | semmle.label | u64 | +| test.cpp:217:13:217:18 | new | semmle.label | new | +| test.cpp:218:30:218:65 | p | semmle.label | p | +| test.cpp:226:13:226:18 | new | semmle.label | new | +| test.cpp:227:29:227:63 | p | semmle.label | p | subpaths #select | test.cpp:28:25:28:55 | p | test.cpp:27:13:27:18 | new | test.cpp:28:25:28:55 | p | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:11:8:11:21 | Not_S1_wrapper | Not_S1_wrapper | @@ -36,3 +42,5 @@ subpaths | test.cpp:145:28:145:68 | s1_2 | test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:131:8:131:23 | HasSomeBitFields | HasSomeBitFields | | test.cpp:159:14:159:33 | a | test.cpp:153:9:153:15 | new | test.cpp:159:14:159:33 | a | Conversion from $@ to $@ is invalid. | test.cpp:60:8:60:10 | Dog | Dog | test.cpp:55:8:55:10 | Cat | Cat | | test.cpp:189:25:189:45 | u64 | test.cpp:187:15:187:24 | new | test.cpp:189:25:189:45 | u64 | Conversion from $@ to $@ is invalid. | test.cpp:175:8:175:13 | UInt64 | UInt64 | test.cpp:184:8:184:22 | UInt8_with_more | UInt8_with_more | +| test.cpp:218:30:218:65 | p | test.cpp:217:13:217:18 | new | test.cpp:218:30:218:65 | p | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:212:8:212:26 | UnrelatedStructSize | UnrelatedStructSize | +| test.cpp:227:29:227:63 | p | test.cpp:226:13:226:18 | new | test.cpp:227:29:227:63 | p | Conversion from $@ to $@ is invalid. | test.cpp:1:8:1:9 | S1 | S1 | test.cpp:221:8:221:25 | TooLargeBufferSize | TooLargeBufferSize | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp index 3fdafd9d02f2..982496218ffa 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/test.cpp @@ -209,4 +209,22 @@ void test16() { MyUnion* mu = (MyUnion*)si; // BAD [NOT DETECTED] } +struct UnrelatedStructSize { + unsigned char buffer[1024]; +}; + +void test17() { + void* p = new S1; + UnrelatedStructSize* uss = static_cast(p); // BAD +} + +struct TooLargeBufferSize { + unsigned char buffer[sizeof(S1) + 1]; +}; + +void test18() { + void* p = new S1; + TooLargeBufferSize* uss = static_cast(p); // BAD +} + // semmle-extractor-options: --gcc -std=c++11 \ No newline at end of file From b876117eccf7b1e7c9db393ce0d6e2d1277a382a Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Wed, 6 Mar 2024 22:25:04 -0800 Subject: [PATCH 086/731] C++: Add more QLDoc. --- cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql index 6bfe9164a393..d43e0145c99d 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql @@ -139,6 +139,20 @@ class UnsafeCast extends Cast { Class getConvertedType() { result = toType } + /** + * Holds if the result of this cast can safely be interpreted as a value of + * type `t`. + * + * The compatibility rules are as follows: + * + * 1. the result of `(T)x` is compatible with the type `T` for any `T` + * 2. the result of `(T)x` is compatible with the type `U` for any `U` such + * that `U` is a subtype of `T`, or `T` is a subtype of `U`. + * 3. the result of `(T)x` is compatible with the type `U` if `U` the list + * of fields of `U` is a prefix of the list of fields of `T`. + * For example, if `T` is `struct { unsigned char x; int y; };` + * and `U` is `struct { unsigned char uc; };`. + */ bindingset[this, t] pragma[inline_late] predicate compatibleWith(Type t) { From 4dd8f6e618e40d8f4181006e780992277e72fd69 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Thu, 7 Mar 2024 14:25:55 +0100 Subject: [PATCH 087/731] Python: Add example of missing use-use flow (see PR for more detailed description) --- .../library-tests/essa/ssa-compute/test2.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 python/ql/test/library-tests/essa/ssa-compute/test2.py diff --git a/python/ql/test/library-tests/essa/ssa-compute/test2.py b/python/ql/test/library-tests/essa/ssa-compute/test2.py new file mode 100644 index 000000000000..d117a6b53e66 --- /dev/null +++ b/python/ql/test/library-tests/essa/ssa-compute/test2.py @@ -0,0 +1,29 @@ +def func(x): # $ def=x + try: + with Thing() as y: # $ def=y + y.foo(x, 0) # $ def-use=x:1 def-use=y:3 + while not x.attribute: # $ use-use=x:4 use-use=x:7 + y.bar() # $ use-use=y:4 use-use=y:6 + print(x) # $ use-use=x:5 + finally: + pass + +def func(x): # $ def=x + try: + with Thing() as y: # $ def=y + y.foo(x, some_var) # $ def-use=x:11 def-use=y:13 + while not x.attribute: # $ use-use=x:14 use-use=x:17 + y.bar() # $ use-use=y:16 MISSING: use-use=y:14 + print(x) # $ use-use=x:15 + finally: + pass + +def func(x): # $ def=x + try: + with Thing() as y: # $ def=y + y.foo(x, some_var.some_attr) # $ def-use=x:21 def-use=y:23 + while not x.attribute: # $ use-use=x:27 MISSING: use-use=x:24 + y.bar() # $ use-use=y:26 MISSING: use-use=y:24 + print(x) # $ use-use=x:25 + finally: + pass From 7d74125508aaf237af675369655dbce2a0ae1b3d Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Thu, 7 Mar 2024 15:17:49 +0100 Subject: [PATCH 088/731] Go: Promote go/uncontrolled-allocation-size --- .../security/UncontrolledAllocationSize.qll | 34 +++++++++++ ...controlledAllocationSizeCustomizations.qll | 33 +++++++++++ .../CWE-770/UncontrolledAllocationSize.qhelp | 36 +++++++++++ .../CWE-770/UncontrolledAllocationSize.ql | 22 +++++++ .../CWE-770/UncontrolledAllocationSizeBad.go} | 0 .../UncontrolledAllocationSizeGood.go} | 0 ...2024-03-07-uncontrolled-allocation-size.md | 4 ++ .../CWE-770/DenialOfService.qhelp | 32 ---------- .../experimental/CWE-770/DenialOfService.ql | 59 ------------------- .../CWE-770/DenialOfService.expected | 18 ------ .../CWE-770/DenialOfService.qlref | 1 - .../UncontrolledAllocationSize.expected | 0 .../CWE-770/UncontrolledAllocationSize.ql | 4 ++ .../CWE-770/UncontrolledAllocationSizeBad.go} | 2 +- .../UncontrolledAllocationSizeGood.go} | 0 15 files changed, 134 insertions(+), 111 deletions(-) create mode 100644 go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll create mode 100644 go/ql/lib/semmle/go/security/UncontrolledAllocationSizeCustomizations.qll create mode 100644 go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp create mode 100644 go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql rename go/ql/src/{experimental/CWE-770/DenialOfServiceBad.go => Security/CWE-770/UncontrolledAllocationSizeBad.go} (100%) rename go/ql/src/{experimental/CWE-770/DenialOfServiceGood.go => Security/CWE-770/UncontrolledAllocationSizeGood.go} (100%) create mode 100644 go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md delete mode 100644 go/ql/src/experimental/CWE-770/DenialOfService.qhelp delete mode 100644 go/ql/src/experimental/CWE-770/DenialOfService.ql delete mode 100644 go/ql/test/experimental/CWE-770/DenialOfService.expected delete mode 100644 go/ql/test/experimental/CWE-770/DenialOfService.qlref create mode 100644 go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected create mode 100644 go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.ql rename go/ql/test/{experimental/CWE-770/DenialOfServiceBad.go => query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go} (89%) rename go/ql/test/{experimental/CWE-770/DenialOfServiceGood.go => query-tests/Security/CWE-770/UncontrolledAllocationSizeGood.go} (100%) diff --git a/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll b/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll new file mode 100644 index 000000000000..885aa7a7053c --- /dev/null +++ b/go/ql/lib/semmle/go/security/UncontrolledAllocationSize.qll @@ -0,0 +1,34 @@ +/** + * Provides a taint-tracking configuration for reasoning about uncontrolled allocation size issues. + */ + +import go + +/** + * Provides a taint-tracking flow for reasoning about uncontrolled allocation size issues. + */ +module UncontrolledAllocationSize { + private import UncontrolledAllocationSizeCustomizations::UncontrolledAllocationSize + + /** + * Module for defining predicates and tracking taint flow related to uncontrolled allocation size issues. + */ + module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof Source } + + predicate isSink(DataFlow::Node sink) { sink instanceof Sink } + + predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(Function f, DataFlow::CallNode cn | cn = f.getACall() | + f.hasQualifiedName("strconv", ["Atoi", "ParseInt", "ParseUint", "ParseFloat"]) and + node1 = cn.getArgument(0) and + node2 = cn.getResult(0) + ) + } + } + + /** Tracks taint flow for reasoning about uncontrolled allocation size issues. */ + module Flow = TaintTracking::Global; +} diff --git a/go/ql/lib/semmle/go/security/UncontrolledAllocationSizeCustomizations.qll b/go/ql/lib/semmle/go/security/UncontrolledAllocationSizeCustomizations.qll new file mode 100644 index 000000000000..1237971dde17 --- /dev/null +++ b/go/ql/lib/semmle/go/security/UncontrolledAllocationSizeCustomizations.qll @@ -0,0 +1,33 @@ +/** + * Provides default sources, sinks, and sanitizers for reasoning about uncontrolled allocation size issues, + * as well as extension points for adding your own. + */ + +import go +private import semmle.go.security.AllocationSizeOverflow + +/** + * Provides extension points for customizing the taint-tracking configuration for reasoning + * about uncontrolled allocation size issues. + */ +module UncontrolledAllocationSize { + /** A data flow source for uncontrolled allocation size vulnerabilities. */ + abstract class Source extends DataFlow::Node { } + + /** A data flow sink for uncontrolled allocation size vulnerabilities. */ + abstract class Sink extends DataFlow::Node { } + + /** A sanitizer for uncontrolled allocation size vulnerabilities. */ + abstract class Sanitizer extends DataFlow::Node { } + + /** A source of untrusted data, considered as a taint source for uncontrolled size allocation vulnerabilities. */ + private class UntrustedFlowAsSource extends Source instanceof UntrustedFlowSource { } + + /** The size argument of a memory allocation function. */ + private class AllocationSizeAsSink extends Sink instanceof AllocationSizeOverflow::AllocationSize { + } + + /** A check that a value is below some upper limit. */ + private class SizeCheckSanitizer extends Sanitizer instanceof AllocationSizeOverflow::AllocationSizeCheckBarrier + { } +} diff --git a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp new file mode 100644 index 000000000000..b4029e93e1ee --- /dev/null +++ b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp @@ -0,0 +1,36 @@ + + + + +

    Using untrusted input to allocate slices with the built-in make function could + lead to excessive memory allocation and potentially cause the program to crash due to running + out of memory. This vulnerability could be exploited to perform a denial-of-service attack by + consuming all available server resources.

    +
    + + +

    Implement a maximum allowed value for size allocations with the built-in make + function to prevent excessively large allocations.

    +
    + + +

    In the following example snippet, the n parameter is user-controlled.

    +

    If the external user provides an excessively large value, the application allocates a slice + of size n without further verification, potentially exhausting all the available + memory.

    + + + +

    One way to prevent this vulnerability is by implementing a maximum allowed value for the + user-controlled input, as seen in the following example:

    + + +
    + + +
  • OWASP: Denial + of Service Cheat Sheet +
  • +
    +
    \ No newline at end of file diff --git a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql new file mode 100644 index 000000000000..2be09c6901b3 --- /dev/null +++ b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql @@ -0,0 +1,22 @@ +/** + * @name Slice memory allocation with excessive size value + * @description Allocating memory for slices with the built-in make function from user-controlled sources + * can lead to a denial of service. + * @kind path-problem + * @problem.severity warning + * @security-severity 6.0 + * @precision high + * @id go/uncontrolled-allocation-size + * @tags security + * external/cwe/cwe-770 + */ + +import go +import semmle.go.security.UncontrolledAllocationSize +import UncontrolledAllocationSize::Flow::PathGraph + +from + UncontrolledAllocationSize::Flow::PathNode source, UncontrolledAllocationSize::Flow::PathNode sink +where UncontrolledAllocationSize::Flow::flowPath(source, sink) +select sink, source, sink, "This memory allocation depends on a $@.", source.getNode(), + "user-provided value" diff --git a/go/ql/src/experimental/CWE-770/DenialOfServiceBad.go b/go/ql/src/Security/CWE-770/UncontrolledAllocationSizeBad.go similarity index 100% rename from go/ql/src/experimental/CWE-770/DenialOfServiceBad.go rename to go/ql/src/Security/CWE-770/UncontrolledAllocationSizeBad.go diff --git a/go/ql/src/experimental/CWE-770/DenialOfServiceGood.go b/go/ql/src/Security/CWE-770/UncontrolledAllocationSizeGood.go similarity index 100% rename from go/ql/src/experimental/CWE-770/DenialOfServiceGood.go rename to go/ql/src/Security/CWE-770/UncontrolledAllocationSizeGood.go diff --git a/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md b/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md new file mode 100644 index 000000000000..663932005eb1 --- /dev/null +++ b/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* The query "Slice memory allocation with excessive size value" (`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally [submitted as an experimental query by @Malayke](https://github.com/github/codeql/pull/15130). diff --git a/go/ql/src/experimental/CWE-770/DenialOfService.qhelp b/go/ql/src/experimental/CWE-770/DenialOfService.qhelp deleted file mode 100644 index b91f1f7e3b06..000000000000 --- a/go/ql/src/experimental/CWE-770/DenialOfService.qhelp +++ /dev/null @@ -1,32 +0,0 @@ - - - - -

    Using untrusted input to created with the built-in make function - could lead to excessive memory allocation and potentially cause the program to crash due - to running out of memory. This vulnerability could be exploited to perform a DoS attack by consuming all available server resources.

    -
    - - -

    Implement a maximum allowed value for creates a slice with the built-in make function to prevent excessively large allocations. - For instance, you could restrict it to a reasonable upper limit.

    -
    - - -

    In the following example snippet, the n field is user-controlled.

    -

    The server trusts that n has an acceptable value, however when using a maliciously large value, - it allocates a slice of n of strings before filling the slice with data.

    - - - -

    One way to prevent this vulnerability is by implementing a maximum allowed value for the user-controlled input:

    - - -
    - - -
  • - OWASP: Denial of Service Cheat Sheet -
  • -
    -
    \ No newline at end of file diff --git a/go/ql/src/experimental/CWE-770/DenialOfService.ql b/go/ql/src/experimental/CWE-770/DenialOfService.ql deleted file mode 100644 index 199cd0df5520..000000000000 --- a/go/ql/src/experimental/CWE-770/DenialOfService.ql +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @name Denial Of Service - * @description slices created with the built-in make function from user-controlled sources using a - * maliciously large value possibly leading to a denial of service. - * @kind path-problem - * @problem.severity error - * @security-severity 9 - * @precision high - * @id go/denial-of-service - * @tags security - * experimental - * external/cwe/cwe-770 - */ - -import go - -/** - * Holds if the guard `g` on its branch `branch` checks that `e` is not constant and is less than some other value. - */ -predicate denialOfServiceSanitizerGuard(DataFlow::Node g, Expr e, boolean branch) { - exists(DataFlow::Node lesser | - e = lesser.asExpr() and - g.(DataFlow::RelationalComparisonNode).leq(branch, lesser, _, _) and - not e.isConst() - ) -} - -/** - * Module for defining predicates and tracking taint flow related to denial of service issues. - */ -module Config implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof UntrustedFlowSource } - - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - exists(Function f, DataFlow::CallNode cn | cn = f.getACall() | - f.hasQualifiedName("strconv", ["Atoi", "ParseInt", "ParseUint", "ParseFloat"]) and - node1 = cn.getArgument(0) and - node2 = cn.getResult(0) - ) - } - - predicate isBarrier(DataFlow::Node node) { - node = DataFlow::BarrierGuard::getABarrierNode() - } - - predicate isSink(DataFlow::Node sink) { sink = Builtin::make().getACall().getArgument(0) } -} - -/** - * Tracks taint flow for reasoning about denial of service, where source is - * user-controlled and unchecked. - */ -module Flow = TaintTracking::Global; - -import Flow::PathGraph - -from Flow::PathNode source, Flow::PathNode sink -where Flow::flowPath(source, sink) -select sink, source, sink, "This variable might be leading to denial of service." diff --git a/go/ql/test/experimental/CWE-770/DenialOfService.expected b/go/ql/test/experimental/CWE-770/DenialOfService.expected deleted file mode 100644 index 4a2ae9d6646c..000000000000 --- a/go/ql/test/experimental/CWE-770/DenialOfService.expected +++ /dev/null @@ -1,18 +0,0 @@ -edges -| DenialOfServiceBad.go:11:12:11:16 | selection of URL | DenialOfServiceBad.go:11:12:11:24 | call to Query | provenance | | -| DenialOfServiceBad.go:11:12:11:24 | call to Query | DenialOfServiceBad.go:13:15:13:20 | source | provenance | | -| DenialOfServiceBad.go:13:15:13:20 | source | DenialOfServiceBad.go:13:15:13:29 | call to Get | provenance | | -| DenialOfServiceBad.go:13:15:13:29 | call to Get | DenialOfServiceBad.go:14:28:14:36 | sourceStr | provenance | | -| DenialOfServiceBad.go:14:2:14:37 | ... := ...[0] | DenialOfServiceBad.go:20:27:20:30 | sink | provenance | | -| DenialOfServiceBad.go:14:28:14:36 | sourceStr | DenialOfServiceBad.go:14:2:14:37 | ... := ...[0] | provenance | | -nodes -| DenialOfServiceBad.go:11:12:11:16 | selection of URL | semmle.label | selection of URL | -| DenialOfServiceBad.go:11:12:11:24 | call to Query | semmle.label | call to Query | -| DenialOfServiceBad.go:13:15:13:20 | source | semmle.label | source | -| DenialOfServiceBad.go:13:15:13:29 | call to Get | semmle.label | call to Get | -| DenialOfServiceBad.go:14:2:14:37 | ... := ...[0] | semmle.label | ... := ...[0] | -| DenialOfServiceBad.go:14:28:14:36 | sourceStr | semmle.label | sourceStr | -| DenialOfServiceBad.go:20:27:20:30 | sink | semmle.label | sink | -subpaths -#select -| DenialOfServiceBad.go:20:27:20:30 | sink | DenialOfServiceBad.go:11:12:11:16 | selection of URL | DenialOfServiceBad.go:20:27:20:30 | sink | This variable might be leading to denial of service. | diff --git a/go/ql/test/experimental/CWE-770/DenialOfService.qlref b/go/ql/test/experimental/CWE-770/DenialOfService.qlref deleted file mode 100644 index e5896bb61dfb..000000000000 --- a/go/ql/test/experimental/CWE-770/DenialOfService.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/CWE-770/DenialOfService.ql \ No newline at end of file diff --git a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.ql b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.ql new file mode 100644 index 000000000000..18add3a48812 --- /dev/null +++ b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSize.ql @@ -0,0 +1,4 @@ +import go +import semmle.go.security.UncontrolledAllocationSize +import TestUtilities.InlineFlowTest +import FlowTest diff --git a/go/ql/test/experimental/CWE-770/DenialOfServiceBad.go b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go similarity index 89% rename from go/ql/test/experimental/CWE-770/DenialOfServiceBad.go rename to go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go index 2d61cdbdafc2..0ae70436bdec 100644 --- a/go/ql/test/experimental/CWE-770/DenialOfServiceBad.go +++ b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeBad.go @@ -17,7 +17,7 @@ func OutOfMemoryBad(w http.ResponseWriter, r *http.Request) { return } - result := make([]string, sink) + result := make([]string, sink) // $hasTaintFlow="sink" for i := 0; i < sink; i++ { result[i] = fmt.Sprintf("Item %d", i+1) } diff --git a/go/ql/test/experimental/CWE-770/DenialOfServiceGood.go b/go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeGood.go similarity index 100% rename from go/ql/test/experimental/CWE-770/DenialOfServiceGood.go rename to go/ql/test/query-tests/Security/CWE-770/UncontrolledAllocationSizeGood.go From 138ce42cf6f4f65c04e829448831bef548eeaec4 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Thu, 7 Mar 2024 15:22:46 +0100 Subject: [PATCH 089/731] Fix qhelp --- go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp index b4029e93e1ee..14930944bb62 100644 --- a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp +++ b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.qhelp @@ -19,12 +19,12 @@ of size n without further verification, potentially exhausting all the available memory.

    - +

    One way to prevent this vulnerability is by implementing a maximum allowed value for the user-controlled input, as seen in the following example:

    - + From 9e77b898856dec5ce1a139ed051eac019a9bd11c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 7 Mar 2024 08:33:49 -0800 Subject: [PATCH 090/731] Update TypeConfusion.qhelp Co-authored-by: hubwriter --- cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp index 0f72a9922056..205a1ae7ff83 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.qhelp @@ -3,7 +3,7 @@

    -Certain casts in C and C++ places no restrictions on the target type. For +Certain casts in C and C++ place no restrictions on the target type. For example, C style casts such as (MyClass*)p allows the programmer to cast any pointer p to an expression of type MyClass*. If the runtime type of p turns out to be a type that's incompatible From cedbfbe7ea4841583f2c7ed1ca9c5ef235109151 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 7 Mar 2024 10:50:20 -0800 Subject: [PATCH 091/731] C++: Use a more generous definition of compatible types. --- .../src/Security/CWE/CWE-843/TypeConfusion.ql | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql index d43e0145c99d..c2a6f89d33f1 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql @@ -148,20 +148,32 @@ class UnsafeCast extends Cast { * 1. the result of `(T)x` is compatible with the type `T` for any `T` * 2. the result of `(T)x` is compatible with the type `U` for any `U` such * that `U` is a subtype of `T`, or `T` is a subtype of `U`. - * 3. the result of `(T)x` is compatible with the type `U` if `U` the list + * 3. the result of `(T)x` is compatible with the type `U` if the list + * of fields of `T` is a prefix of the list of fields of `U`. + * For example, if `U` is `struct { unsigned char x; int y; };` + * and `T` is `struct { unsigned char uc; };`. + * 4. the result of `(T)x` is compatible with the type `U` if the list * of fields of `U` is a prefix of the list of fields of `T`. - * For example, if `T` is `struct { unsigned char x; int y; };` - * and `U` is `struct { unsigned char uc; };`. + * + * Condition 4 is a bit controversial, since it assumes that the additional + * fields in `T` won't be accessed. This may result in some FNs. */ bindingset[this, t] pragma[inline_late] predicate compatibleWith(Type t) { + // Conition 1 t.stripType() = this.getConvertedType() or + // Condition 3 prefix(this.getConvertedType(), t.stripType()) or + // Condition 4 + prefix(t.stripType(), this.getConvertedType()) + or + // Condition 2 (a) t.stripType().(Class).getABaseClass+() = this.getConvertedType() or + // Condition 2 (b) t.stripType() = this.getConvertedType().getABaseClass+() } } From 4f9bdca4f083b3921d6dc22c95c9785c7d81896e Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 7 Mar 2024 13:08:26 -0800 Subject: [PATCH 092/731] C++: Optimize. --- cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql index c2a6f89d33f1..f7ac0465d877 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql @@ -219,16 +219,14 @@ module RelevantStateConfig implements DataFlow::ConfigSig { module RelevantStateFlow = DataFlow::Global; -predicate relevantState(DataFlow::Node sink, Class state) { - exists(DataFlow::Node source | - RelevantStateFlow::flow(source, sink) and - isSourceImpl(source, state) - ) +predicate relevantState(DataFlow::Node source, DataFlow::Node sink, Class state) { + RelevantStateFlow::flow(source, sink) and + isSourceImpl(source, state) } predicate isSinkImpl(DataFlow::Node sink, Class state, Type convertedType, boolean compatible) { exists(UnsafeCast cast | - relevantState(sink, state) and + relevantState(_, sink, state) and sink.asExpr() = cast.getUnconverted() and convertedType = cast.getConvertedType() | @@ -245,10 +243,10 @@ predicate isSinkImpl(DataFlow::Node sink, Class state, Type convertedType, boole */ module BadConfig implements DataFlow::StateConfigSig { class FlowState extends Class { - FlowState() { relevantState(_, this) } + FlowState() { relevantState(_, _, this) } } - predicate isSource(DataFlow::Node source, FlowState state) { isSourceImpl(source, state) } + predicate isSource(DataFlow::Node source, FlowState state) { relevantState(source, _, state) } predicate isBarrier(DataFlow::Node node) { RelevantStateConfig::isBarrier(node) } From a548316747c7c04a952585bae74497567a24322d Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 7 Mar 2024 13:55:31 -0800 Subject: [PATCH 093/731] C++: Accept test changes. --- .../TlsSettingsMisconfiguration.expected | 18 +----------------- .../query-tests/Likely Bugs/Protocols/test.cpp | 4 ++-- .../Likely Bugs/Protocols/test2.cpp | 2 +- .../Likely Bugs/Protocols/test3.cpp | 2 +- 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected b/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected index 021bf2094b83..f889cb12a684 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected @@ -1,9 +1,4 @@ -| test2.cpp:7:32:7:33 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:6:40:6:72 | sslv23 | sslv23 | test2.cpp:7:32:7:33 | call to context | no_sslv3 has not been set | -| test2.cpp:7:32:7:33 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:6:40:6:72 | sslv23 | sslv23 | test2.cpp:7:32:7:33 | call to context | no_tlsv1 has not been set | -| test2.cpp:7:32:7:33 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:6:40:6:72 | sslv23 | sslv23 | test2.cpp:7:32:7:33 | call to context | no_tlsv1_1 has not been set | | test2.cpp:15:32:15:33 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:14:40:14:72 | sslv23 | sslv23 | test2.cpp:15:32:15:33 | call to context | no_sslv3 has not been set | -| test2.cpp:15:32:15:33 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:14:40:14:72 | sslv23 | sslv23 | test2.cpp:15:32:15:33 | call to context | no_tlsv1 has not been set | -| test2.cpp:15:32:15:33 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:14:40:14:72 | sslv23 | sslv23 | test2.cpp:15:32:15:33 | call to context | no_tlsv1_1 has not been set | | test2.cpp:23:32:23:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:23:32:23:64 | sslv23 | sslv23 | test2.cpp:23:32:23:65 | call to context | no_sslv3 has not been set | | test2.cpp:23:32:23:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:23:32:23:64 | sslv23 | sslv23 | test2.cpp:23:32:23:65 | call to context | no_tlsv1 has not been set | | test2.cpp:23:32:23:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:23:32:23:64 | sslv23 | sslv23 | test2.cpp:23:32:23:65 | call to context | no_tlsv1_1 has not been set | @@ -19,22 +14,11 @@ | test2.cpp:52:32:52:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:52:32:52:64 | sslv23 | sslv23 | test2.cpp:52:32:52:65 | call to context | no_sslv3 has not been set | | test2.cpp:52:32:52:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:52:32:52:64 | sslv23 | sslv23 | test2.cpp:52:32:52:65 | call to context | no_tlsv1 has not been set | | test2.cpp:52:32:52:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:52:32:52:64 | sslv23 | sslv23 | test2.cpp:52:32:52:65 | call to context | no_tlsv1_1 has not been set | -| test3.cpp:7:32:7:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test3.cpp:7:32:7:61 | tls | tls | test3.cpp:7:32:7:62 | call to context | no_tlsv1 has not been set | | test3.cpp:7:32:7:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test3.cpp:7:32:7:61 | tls | tls | test3.cpp:7:32:7:62 | call to context | no_tlsv1_1 has not been set | -| test3.cpp:15:32:15:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test3.cpp:15:32:15:61 | tls | tls | test3.cpp:15:32:15:62 | call to context | no_tlsv1 has not been set | -| test3.cpp:15:32:15:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test3.cpp:15:32:15:61 | tls | tls | test3.cpp:15:32:15:62 | call to context | no_tlsv1_1 has not been set | -| test.cpp:11:32:11:69 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:11:32:11:68 | tls_client | tls_client | test.cpp:11:32:11:69 | call to context | no_tlsv1 has not been set | -| test.cpp:11:32:11:69 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:11:32:11:68 | tls_client | tls_client | test.cpp:11:32:11:69 | call to context | no_tlsv1_1 has not been set | -| test.cpp:17:32:17:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:17:32:17:64 | sslv23 | sslv23 | test.cpp:17:32:17:65 | call to context | no_sslv3 has not been set | -| test.cpp:17:32:17:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:17:32:17:64 | sslv23 | sslv23 | test.cpp:17:32:17:65 | call to context | no_tlsv1 has not been set | -| test.cpp:17:32:17:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:17:32:17:64 | sslv23 | sslv23 | test.cpp:17:32:17:65 | call to context | no_tlsv1_1 has not been set | | test.cpp:25:32:25:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:25:32:25:64 | sslv23 | sslv23 | test.cpp:25:32:25:65 | call to context | no_sslv3 has not been set | -| test.cpp:25:32:25:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:25:32:25:64 | sslv23 | sslv23 | test.cpp:25:32:25:65 | call to context | no_tlsv1 has not been set | -| test.cpp:25:32:25:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:25:32:25:64 | sslv23 | sslv23 | test.cpp:25:32:25:65 | call to context | no_tlsv1_1 has not been set | | test.cpp:31:32:31:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:31:32:31:64 | sslv23 | sslv23 | test.cpp:31:32:31:65 | call to context | no_sslv3 has not been set | | test.cpp:31:32:31:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:31:32:31:64 | sslv23 | sslv23 | test.cpp:31:32:31:65 | call to context | no_tlsv1 has not been set | | test.cpp:31:32:31:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:31:32:31:64 | sslv23 | sslv23 | test.cpp:31:32:31:65 | call to context | no_tlsv1_1 has not been set | | test.cpp:36:32:36:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:36:32:36:61 | tls | tls | test.cpp:36:32:36:62 | call to context | no_tlsv1 has not been set | | test.cpp:36:32:36:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:36:32:36:61 | tls | tls | test.cpp:36:32:36:62 | call to context | no_tlsv1_1 has not been set | -| test.cpp:41:32:41:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:41:32:41:61 | tls | tls | test.cpp:41:32:41:62 | call to context | no_tlsv1 has not been set | -| test.cpp:41:32:41:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:41:32:41:61 | tls | tls | test.cpp:41:32:41:62 | call to context | no_tlsv1_1 has not been set | +| test.cpp:41:32:41:62 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test.cpp:41:32:41:61 | tls | tls | test.cpp:43:6:43:16 | call to set_options | no_tlsv1_2 was set | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test.cpp b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test.cpp index 3e04e15fc89e..5c2c2d6e3574 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test.cpp @@ -8,13 +8,13 @@ void SetOptionsNoOldTls(boost::asio::ssl::context& ctx) void TestProperConfiguration_inter_CorrectUsage01() { - boost::asio::ssl::context ctx(boost::asio::ssl::context::tls_client); // GOOD [FALSE POSITIVE] + boost::asio::ssl::context ctx(boost::asio::ssl::context::tls_client); // GOOD SetOptionsNoOldTls(ctx); } void TestProperConfiguration_inter_CorrectUsage02() { - boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23); // GOOD [FALSE POSITIVE] + boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23); // GOOD ctx.set_options(boost::asio::ssl::context::no_tlsv1 | boost::asio::ssl::context::no_tlsv1_1 | boost::asio::ssl::context::no_sslv3); diff --git a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp index 40f8acf17ea4..e8c802d69020 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp @@ -2,7 +2,7 @@ void good1() { - // GOOD [FALSE POSITIVE] + // GOOD boost::asio::ssl::context::method m = boost::asio::ssl::context::sslv23; boost::asio::ssl::context ctx(m); ctx.set_options(boost::asio::ssl::context::no_tlsv1 | boost::asio::ssl::context::no_tlsv1_1 | boost::asio::ssl::context::no_sslv3); diff --git a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test3.cpp b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test3.cpp index ebbd0417f3ee..c9932b31618d 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test3.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test3.cpp @@ -13,7 +13,7 @@ void useTLS_bad() void useTLS_good() { boost::asio::ssl::context ctx(boost::asio::ssl::context::tls); - ctx.set_options(boost::asio::ssl::context::no_tlsv1 | boost::asio::ssl::context::no_tlsv1_1); // GOOD [FALSE POSITIVE] + ctx.set_options(boost::asio::ssl::context::no_tlsv1 | boost::asio::ssl::context::no_tlsv1_1); // GOOD // ... } From 761f6d3a7eda185f17bd26a3360a5cfeb69cfcab Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Thu, 7 Mar 2024 13:44:41 -0800 Subject: [PATCH 094/731] C++: Disable field flow from the 'cpp/type-confusion' query to fix performance on ChakraCore. --- cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql index f7ac0465d877..530d8804ebdf 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql @@ -215,6 +215,8 @@ module RelevantStateConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { exists(UnsafeCast cast | sink.asExpr() = cast.getUnconverted()) } + + int fieldFlowBranchLimit() { result = 0 } } module RelevantStateFlow = DataFlow::Global; @@ -253,6 +255,8 @@ module BadConfig implements DataFlow::StateConfigSig { predicate isSink(DataFlow::Node sink, FlowState state) { isSinkImpl(sink, state, _, false) } predicate isBarrierOut(DataFlow::Node sink, FlowState state) { isSink(sink, state) } + + int fieldFlowBranchLimit() { result = 0 } } module BadFlow = DataFlow::GlobalWithState; @@ -307,6 +311,8 @@ module GoodConfig implements DataFlow::StateConfigSig { isSinkImpl(sink, state, _, true) and BadFlow::flowTo(sink) } + + int fieldFlowBranchLimit() { result = 0 } } module GoodFlow = DataFlow::GlobalWithState; From e793a1e9fe78df48abc2069aff8767b822fd46f7 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 5 Mar 2024 09:38:09 +0100 Subject: [PATCH 095/731] Ruby: Add variable capture spurious flow test --- .../library-tests/dataflow/global/Flow.expected | 11 +++++++++++ .../dataflow/global/captured_variables.rb | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/ruby/ql/test/library-tests/dataflow/global/Flow.expected b/ruby/ql/test/library-tests/dataflow/global/Flow.expected index 7ae00a80dce4..9e01d45a07c6 100644 --- a/ruby/ql/test/library-tests/dataflow/global/Flow.expected +++ b/ruby/ql/test/library-tests/dataflow/global/Flow.expected @@ -1,4 +1,5 @@ testFailures +| captured_variables.rb:236:14:236:14 | x | Unexpected result: hasValueFlow=19 | edges | blocks.rb:14:12:14:20 | call to source | blocks.rb:8:10:8:14 | yield ... | provenance | | | captured_variables.rb:9:24:9:24 | x | captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | provenance | | @@ -122,6 +123,10 @@ edges | captured_variables.rb:222:11:224:5 | -> { ... } [captured x] | captured_variables.rb:222:5:222:7 | fn1 [captured x] | provenance | | | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | captured_variables.rb:227:10:227:10 | y | provenance | | | captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | provenance | | +| captured_variables.rb:233:9:233:17 | call to taint | captured_variables.rb:235:11:237:5 | -> { ... } [captured x] | provenance | | +| captured_variables.rb:235:5:235:7 | fn1 [captured x] | captured_variables.rb:241:5:241:7 | fn1 [captured x] | provenance | | +| captured_variables.rb:235:11:237:5 | -> { ... } [captured x] | captured_variables.rb:235:5:235:7 | fn1 [captured x] | provenance | | +| captured_variables.rb:241:5:241:7 | fn1 [captured x] | captured_variables.rb:236:14:236:14 | x | provenance | | | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:11:18:11:18 | x | provenance | | | instance_variables.rb:11:18:11:18 | x | instance_variables.rb:11:9:11:14 | [post] self [@field] | provenance | | | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:16:14:21 | self [@field] | provenance | | @@ -385,6 +390,11 @@ nodes | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | semmle.label | [post] fn1 [captured y] | | captured_variables.rb:226:5:226:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | | captured_variables.rb:227:10:227:10 | y | semmle.label | y | +| captured_variables.rb:233:9:233:17 | call to taint | semmle.label | call to taint | +| captured_variables.rb:235:5:235:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | +| captured_variables.rb:235:11:237:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | +| captured_variables.rb:236:14:236:14 | x | semmle.label | x | +| captured_variables.rb:241:5:241:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | | instance_variables.rb:10:19:10:19 | x | semmle.label | x | | instance_variables.rb:11:9:11:14 | [post] self [@field] | semmle.label | [post] self [@field] | | instance_variables.rb:11:18:11:18 | x | semmle.label | x | @@ -595,6 +605,7 @@ subpaths | captured_variables.rb:199:10:199:10 | x | captured_variables.rb:197:9:197:17 | call to taint | captured_variables.rb:199:10:199:10 | x | $@ | captured_variables.rb:197:9:197:17 | call to taint | call to taint | | captured_variables.rb:208:14:208:14 | x | captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:208:14:208:14 | x | $@ | captured_variables.rb:206:13:206:21 | call to taint | call to taint | | captured_variables.rb:227:10:227:10 | y | captured_variables.rb:219:9:219:17 | call to taint | captured_variables.rb:227:10:227:10 | y | $@ | captured_variables.rb:219:9:219:17 | call to taint | call to taint | +| captured_variables.rb:236:14:236:14 | x | captured_variables.rb:233:9:233:17 | call to taint | captured_variables.rb:236:14:236:14 | x | $@ | captured_variables.rb:233:9:233:17 | call to taint | call to taint | | instance_variables.rb:20:10:20:13 | @foo | instance_variables.rb:19:12:19:21 | call to taint | instance_variables.rb:20:10:20:13 | @foo | $@ | instance_variables.rb:19:12:19:21 | call to taint | call to taint | | instance_variables.rb:36:10:36:33 | call to get_field | instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:36:10:36:33 | call to get_field | $@ | instance_variables.rb:36:14:36:22 | call to taint | call to taint | | instance_variables.rb:39:6:39:33 | call to get_field | instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:39:6:39:33 | call to get_field | $@ | instance_variables.rb:39:14:39:22 | call to taint | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb b/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb index 79d1fc83b766..8c7c5049b2d0 100644 --- a/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb +++ b/ruby/ql/test/library-tests/dataflow/global/captured_variables.rb @@ -228,3 +228,17 @@ def multi_capture end multi_capture + +def m1 + x = taint(19) + + fn1 = -> { + sink x + } + + x = nil + + fn1.call() +end + +m1 \ No newline at end of file From 63bb772ef9a67b4c2993cb370de4775b44c5f8b3 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 4 Mar 2024 13:25:15 +0100 Subject: [PATCH 096/731] Variable capture: Avoid overlapping and false-positive data flow paths --- .../codeql/dataflow/VariableCapture.qll | 80 +++++++++++++++++-- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/VariableCapture.qll b/shared/dataflow/codeql/dataflow/VariableCapture.qll index e90bf4814423..9fd385d44587 100644 --- a/shared/dataflow/codeql/dataflow/VariableCapture.qll +++ b/shared/dataflow/codeql/dataflow/VariableCapture.qll @@ -601,16 +601,22 @@ module Flow Input> implements OutputSig * observed in a similarly synthesized post-update node for this read of `v`. */ private predicate synthRead( - CapturedVariable v, BasicBlock bb, int i, boolean topScope, Expr closure + CapturedVariable v, BasicBlock bb, int i, boolean topScope, Expr closure, boolean alias ) { exists(ClosureExpr ce | closureCaptures(ce, v) | - ce.hasCfgNode(bb, i) and ce = closure + ce.hasCfgNode(bb, i) and ce = closure and alias = false or - localOrNestedClosureAccess(ce, closure, bb, i) + localOrNestedClosureAccess(ce, closure, bb, i) and alias = true ) and if v.getCallable() != bb.getEnclosingCallable() then topScope = false else topScope = true } + private predicate synthRead( + CapturedVariable v, BasicBlock bb, int i, boolean topScope, Expr closure + ) { + synthRead(v, bb, i, topScope, closure, _) + } + /** * Holds if there is an access of a captured variable inside a closure in the * `i`th node of `bb`, such that we need to synthesize a `this.` qualifier. @@ -919,16 +925,22 @@ module Flow Input> implements OutputSig ) } - predicate storeStep(ClosureNode node1, CapturedVariable v, ClosureNode node2) { - // store v in the closure or in the malloc in case of a relevant constructor call + private predicate storeStepClosure( + ClosureNode node1, CapturedVariable v, ClosureNode node2, boolean alias + ) { exists(BasicBlock bb, int i, Expr closure | - synthRead(v, bb, i, _, closure) and + synthRead(v, bb, i, _, closure, alias) and node1 = TSynthRead(v, bb, i, false) | node2 = TExprNode(closure, false) or node2 = TMallocNode(closure) and hasConstructorCapture(closure, v) ) + } + + predicate storeStep(ClosureNode node1, CapturedVariable v, ClosureNode node2) { + // store v in the closure or in the malloc in case of a relevant constructor call + storeStepClosure(node1, v, node2, _) or // write to v inside the closure body exists(BasicBlock bb, int i, VariableWrite vw | @@ -964,6 +976,62 @@ module Flow Input> implements OutputSig } predicate clearsContent(ClosureNode node, CapturedVariable v) { + /* + * Stores into closure aliases block flow from previous stores, both to + * avoid overlapping data flow paths, but also to avoid false positive + * flow. + * + * Example 1 (overlapping paths): + * + * ```rb + * def m + * x = taint + * + * fn = -> { # (1) + * sink x + * } + * + * fn.call # (2) + * ``` + * + * If we don't clear `x` at `fn` (2), we will have two overlapping paths: + * + * ``` + * taint -> fn (2) [captured x] + * taint -> fn (1) [captured x] -> fn (2) [captured x] + * ``` + * + * where the step `fn (1) [captured x] -> fn [captured x]` arises from normal + * use-use flow for `fn`. Clearing `x` at `fn` (2) removes the second path above. + * + * Example 2 (false positive flow): + * + * ```rb + * def m + * x = taint + * + * fn = -> { # (1) + * sink x + * } + * + * x = nil # (2) + * + * fn.call # (3) + * end + * ``` + * + * If we don't clear `x` at `fn` (3), we will have the following false positive + * flow path: + * + * ``` + * taint -> fn (1) [captured x] -> fn (3) [captured x] + * ``` + * + * since normal use-use flow for `fn` does not take the overwrite at (2) into account. + */ + + storeStepClosure(_, v, node, true) + or exists(BasicBlock bb, int i | captureWrite(v, bb, i, false, _) and node = TSynthThisQualifier(bb, i, false) From 24e35f6f3d0126b81b72f896aa9bd1d8fa369af4 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 4 Mar 2024 13:31:53 +0100 Subject: [PATCH 097/731] Update expected test output --- .../dataflow/global/DataFlowPath.expected | 86 ------------------- .../global/TaintTrackingPath.expected | 86 ------------------- .../dataflow/variable-capture/by_value.py | 2 +- .../dataflow/global/Flow.expected | 46 ---------- 4 files changed, 1 insertion(+), 219 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index c994ff441b40..7ebc91938293 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -1,27 +1,17 @@ edges -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | -| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | Capture.cs:12:19:12:24 | access to local variable sink27 | provenance | | | Capture.cs:11:26:11:32 | access to parameter tainted : String | Capture.cs:11:17:11:22 | access to local variable sink27 : String | provenance | | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:11:26:11:32 | access to parameter tainted : String | provenance | | -| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | -| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | Capture.cs:21:23:21:28 | access to local variable sink28 | provenance | | | Capture.cs:20:30:20:36 | access to parameter tainted : String | Capture.cs:20:21:20:26 | access to local variable sink28 : String | provenance | | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:20:30:20:36 | access to parameter tainted : String | provenance | | -| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | provenance | | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | -| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | -| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | Capture.cs:30:19:30:24 | access to local variable sink29 | provenance | | | Capture.cs:29:26:29:32 | access to parameter tainted : String | Capture.cs:29:17:29:22 | access to local variable sink29 : String | provenance | | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | | Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | provenance | | @@ -37,28 +27,18 @@ edges | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | | Capture.cs:116:26:116:39 | "taint source" : String | Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | provenance | | | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:124:15:124:20 | access to local variable sink40 | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | -| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:135:15:135:20 | access to local variable sink33 | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | -| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:147:15:147:20 | access to local variable sink34 | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | -| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | -| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:156:15:156:20 | access to local variable sink35 | provenance | | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | -| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | Capture.cs:163:15:163:20 | access to local variable sink36 | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | Capture.cs:162:13:162:18 | access to local variable sink36 : String | provenance | | @@ -66,19 +46,13 @@ edges | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | Capture.cs:171:15:171:20 | access to local variable sink37 | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | -| Capture.cs:190:26:190:26 | s : String | Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | provenance | | | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | -| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | Capture.cs:197:15:197:20 | access to local variable sink38 | provenance | | | Capture.cs:196:22:196:32 | call to local function Id : String | Capture.cs:196:13:196:18 | access to local variable sink38 : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:196:22:196:32 | call to local function Id : String | provenance | | -| Capture.cs:202:20:202:20 | s : String | Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | | Capture.cs:202:20:202:20 | s : String | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | provenance | | -| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | provenance | | -| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | provenance | | -| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | | Capture.cs:211:21:211:34 | "taint source" : String | Capture.cs:202:20:202:20 | s : String | provenance | | | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | @@ -93,17 +67,13 @@ edges | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | | | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | Capture.cs:234:15:234:15 | access to local variable x | provenance | | | Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | provenance | | -| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | -| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | Capture.cs:246:19:246:25 | access to field Field | provenance | | | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | -| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:21 | access to field Field | provenance | | | Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | @@ -112,52 +82,30 @@ edges | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | Capture.cs:268:15:268:21 | access to field Field | provenance | | | Capture.cs:273:19:273:19 | x : String | Capture.cs:273:30:273:30 | access to parameter x | provenance | | | Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:355:45:355:45 | x : String | provenance | | -| Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | -| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | | Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | -| Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | provenance | | -| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | -| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | Capture.cs:301:19:301:28 | access to field Field | provenance | | | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | provenance | | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | -| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | Capture.cs:306:15:306:24 | access to field Field | provenance | | | Capture.cs:311:17:311:30 | "taint source" : String | Capture.cs:312:15:312:15 | access to local variable x | provenance | | | Capture.cs:318:17:318:30 | "taint source" : String | Capture.cs:319:19:319:19 | access to local variable x | provenance | | -| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | provenance | | -| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | | Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | -| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | -| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | -| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | | Capture.cs:339:17:339:30 | "taint source" : String | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | provenance | | -| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | -| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:341:45:341:45 | access to local variable x | provenance | | -| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | | @@ -519,24 +467,18 @@ edges | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:48:13:48:13 | access to local variable s : String | provenance | | nodes | Capture.cs:7:20:7:26 | tainted : String | semmle.label | tainted : String | -| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | semmle.label | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | semmle.label | access to local variable sink27 : String | | Capture.cs:11:26:11:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:12:19:12:24 | access to local variable sink27 | semmle.label | access to local variable sink27 | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | semmle.label | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | -| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | semmle.label | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | -| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | semmle.label | M(...) : M [captured tainted] : String | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | semmle.label | access to local variable sink28 : String | | Capture.cs:20:30:20:36 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:21:23:21:28 | access to local variable sink28 | semmle.label | access to local variable sink28 | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | semmle.label | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | -| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | -| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | semmle.label | access to local variable sink29 : String | | Capture.cs:29:26:29:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:30:19:30:24 | access to local variable sink29 | semmle.label | access to local variable sink29 | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | semmle.label | access to local variable captureIn3 : Func [captured tainted] : String | | Capture.cs:50:50:50:55 | sink39 : String | semmle.label | sink39 : String | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | semmle.label | (...) => ... : (...) => ... [captured sink39] : String | @@ -558,21 +500,15 @@ nodes | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | | Capture.cs:124:15:124:20 | access to local variable sink40 | semmle.label | access to local variable sink40 | | Capture.cs:127:25:127:31 | tainted : String | semmle.label | tainted : String | -| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | semmle.label | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | | Capture.cs:135:15:135:20 | access to local variable sink33 | semmle.label | access to local variable sink33 | -| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | semmle.label | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:147:15:147:20 | access to local variable sink34 | semmle.label | access to local variable sink34 | -| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | -| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | semmle.label | access to local variable captureThrough3 : Func [captured tainted] : String | | Capture.cs:156:15:156:20 | access to local variable sink35 | semmle.label | access to local variable sink35 | -| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | semmle.label | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | semmle.label | access to local variable sink36 : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | semmle.label | call to local function CaptureThrough4 : String | @@ -583,7 +519,6 @@ nodes | Capture.cs:170:25:170:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:171:15:171:20 | access to local variable sink37 | semmle.label | access to local variable sink37 | | Capture.cs:190:26:190:26 | s : String | semmle.label | s : String | -| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | semmle.label | M(...) : M [captured s] : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | semmle.label | access to local function M : M [captured s] : String | | Capture.cs:193:20:193:22 | call to local function M : String | semmle.label | call to local function M : String | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | semmle.label | access to local variable sink38 : String | @@ -591,10 +526,7 @@ nodes | Capture.cs:196:25:196:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:197:15:197:20 | access to local variable sink38 | semmle.label | access to local variable sink38 | | Capture.cs:202:20:202:20 | s : String | semmle.label | s : String | -| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | -| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | semmle.label | (...) => ... : (...) => ... [captured s] : String | | Capture.cs:206:19:206:19 | access to parameter s | semmle.label | access to parameter s | -| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | semmle.label | access to local variable a : Action [captured s] : String | | Capture.cs:211:21:211:34 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:213:22:213:22 | s : String | semmle.label | s : String | @@ -612,14 +544,11 @@ nodes | Capture.cs:234:15:234:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:242:19:242:32 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | -| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured c, field Field] : String | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:246:19:246:25 | access to field Field | semmle.label | access to field Field | | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:247:23:247:36 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured c, field Field] : String | -| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | semmle.label | access to local variable a : Action [captured c, field Field] : String | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:251:15:251:21 | access to field Field | semmle.label | access to field Field | @@ -632,29 +561,20 @@ nodes | Capture.cs:273:30:273:30 | access to parameter x | semmle.label | access to parameter x | | Capture.cs:273:34:273:47 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:278:17:278:30 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | -| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | -| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | -| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:284:23:284:23 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:285:21:285:34 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | -| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | semmle.label | access to local variable inner : Action [captured x] : String | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | semmle.label | [post] access to local variable middle : (...) => ... [captured x] : String | -| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | semmle.label | access to local variable middle : Action [captured x] : String | | Capture.cs:292:15:292:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:297:22:297:35 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | -| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:301:19:301:28 | access to field Field | semmle.label | access to field Field | | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:302:26:302:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | -| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | semmle.label | access to local variable a : Action [captured this in M10, field Field] : String | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:306:15:306:24 | access to field Field | semmle.label | access to field Field | @@ -663,19 +583,13 @@ nodes | Capture.cs:318:17:318:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:319:19:319:19 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:328:17:328:30 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | semmle.label | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | | Capture.cs:330:47:330:47 | access to local variable x | semmle.label | access to local variable x | -| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | semmle.label | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | -| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | semmle.label | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | | Capture.cs:339:17:339:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:341:45:341:45 | access to local variable x | semmle.label | access to local variable x | -| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | -| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | access to local variable capturedLambda : (...) => ... [captured x] : String | -| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | semmle.label | a : (...) => ... [captured s] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 2bd30574649d..a5ceb692695b 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -1,27 +1,17 @@ edges -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | -| Capture.cs:7:20:7:26 | tainted : String | Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | provenance | | | Capture.cs:7:20:7:26 | tainted : String | Capture.cs:61:36:61:42 | access to parameter tainted : String | provenance | | -| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | provenance | | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | Capture.cs:12:19:12:24 | access to local variable sink27 | provenance | | | Capture.cs:11:26:11:32 | access to parameter tainted : String | Capture.cs:11:17:11:22 | access to local variable sink27 : String | provenance | | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | Capture.cs:11:26:11:32 | access to parameter tainted : String | provenance | | -| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | provenance | | -| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | Capture.cs:21:23:21:28 | access to local variable sink28 | provenance | | | Capture.cs:20:30:20:36 | access to parameter tainted : String | Capture.cs:20:21:20:26 | access to local variable sink28 : String | provenance | | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | Capture.cs:20:30:20:36 | access to parameter tainted : String | provenance | | -| Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | provenance | | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | provenance | | -| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | -| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | Capture.cs:30:19:30:24 | access to local variable sink29 | provenance | | | Capture.cs:29:26:29:32 | access to parameter tainted : String | Capture.cs:29:17:29:22 | access to local variable sink29 : String | provenance | | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | Capture.cs:29:26:29:32 | access to parameter tainted : String | provenance | | | Capture.cs:50:50:50:55 | sink39 : String | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | provenance | | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | provenance | | @@ -37,28 +27,18 @@ edges | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | provenance | | | Capture.cs:116:26:116:39 | "taint source" : String | Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | provenance | | | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | Capture.cs:124:15:124:20 | access to local variable sink40 | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | provenance | | -| Capture.cs:127:25:127:31 | tainted : String | Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | -| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | provenance | | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:135:15:135:20 | access to local variable sink33 | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | -| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:147:15:147:20 | access to local variable sink34 | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | -| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | -| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | provenance | | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:156:15:156:20 | access to local variable sink35 | provenance | | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | -| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | provenance | | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | Capture.cs:163:15:163:20 | access to local variable sink36 | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | Capture.cs:162:13:162:18 | access to local variable sink36 : String | provenance | | @@ -66,19 +46,13 @@ edges | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | Capture.cs:171:15:171:20 | access to local variable sink37 | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | -| Capture.cs:190:26:190:26 | s : String | Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | provenance | | | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | -| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | Capture.cs:197:15:197:20 | access to local variable sink38 | provenance | | | Capture.cs:196:22:196:32 | call to local function Id : String | Capture.cs:196:13:196:18 | access to local variable sink38 : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | provenance | | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:196:22:196:32 | call to local function Id : String | provenance | | -| Capture.cs:202:20:202:20 | s : String | Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | | Capture.cs:202:20:202:20 | s : String | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | provenance | | -| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | provenance | | -| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | provenance | | -| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | Capture.cs:206:19:206:19 | access to parameter s | provenance | | | Capture.cs:211:21:211:34 | "taint source" : String | Capture.cs:202:20:202:20 | s : String | provenance | | | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | provenance | | @@ -93,17 +67,13 @@ edges | Capture.cs:229:20:233:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:231:19:231:19 | access to local variable x | provenance | | | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | Capture.cs:234:15:234:15 | access to local variable x | provenance | | | Capture.cs:232:17:232:30 | "taint source" : String | Capture.cs:229:20:233:9 | [post] (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | provenance | | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:242:19:242:32 | "taint source" : String | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | provenance | | -| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | -| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | Capture.cs:246:19:246:25 | access to field Field | provenance | | | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | | Capture.cs:247:23:247:36 | "taint source" : String | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | provenance | | -| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | provenance | | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | Capture.cs:251:15:251:21 | access to field Field | provenance | | | Capture.cs:264:13:264:13 | [post] access to local variable c : Capture [field Field] : String | Capture.cs:266:9:266:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | provenance | | @@ -112,52 +82,30 @@ edges | Capture.cs:268:15:268:15 | access to local variable c : Capture [field Field] : String | Capture.cs:268:15:268:21 | access to field Field | provenance | | | Capture.cs:273:19:273:19 | x : String | Capture.cs:273:30:273:30 | access to parameter x | provenance | | | Capture.cs:273:34:273:47 | "taint source" : String | Capture.cs:355:45:355:45 | x : String | provenance | | -| Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | provenance | | | Capture.cs:278:17:278:30 | "taint source" : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | provenance | | -| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | provenance | | | Capture.cs:285:21:285:34 | "taint source" : String | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | provenance | | | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | provenance | | -| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | Capture.cs:284:23:284:23 | access to local variable x | provenance | | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | Capture.cs:292:15:292:15 | access to local variable x | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | -| Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | provenance | | | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | provenance | | -| Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | provenance | | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | | Capture.cs:297:22:297:35 | "taint source" : String | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | provenance | | -| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | -| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | Capture.cs:301:19:301:28 | access to field Field | provenance | | | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | provenance | | | Capture.cs:302:26:302:39 | "taint source" : String | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | provenance | | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | provenance | | -| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | provenance | | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | Capture.cs:306:15:306:24 | access to field Field | provenance | | | Capture.cs:311:17:311:30 | "taint source" : String | Capture.cs:312:15:312:15 | access to local variable x | provenance | | | Capture.cs:318:17:318:30 | "taint source" : String | Capture.cs:319:19:319:19 | access to local variable x | provenance | | -| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | provenance | | -| Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | provenance | | | Capture.cs:328:17:328:30 | "taint source" : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | -| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | -| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | provenance | | -| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | Capture.cs:330:47:330:47 | access to local variable x | provenance | | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | provenance | | | Capture.cs:339:17:339:30 | "taint source" : String | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | provenance | | -| Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | provenance | | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | provenance | | -| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | -| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | provenance | | | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | Capture.cs:341:45:341:45 | access to local variable x | provenance | | -| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | provenance | | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | | @@ -569,24 +517,18 @@ edges | Splitting.cs:48:36:48:49 | "taint source" : String | Splitting.cs:48:13:48:13 | access to local variable s : String | provenance | | nodes | Capture.cs:7:20:7:26 | tainted : String | semmle.label | tainted : String | -| Capture.cs:9:9:13:9 | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | semmle.label | CaptureIn1(...) : CaptureIn1 [captured tainted] : String | | Capture.cs:11:17:11:22 | access to local variable sink27 : String | semmle.label | access to local variable sink27 : String | | Capture.cs:11:26:11:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:12:19:12:24 | access to local variable sink27 | semmle.label | access to local variable sink27 | | Capture.cs:14:9:14:18 | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | semmle.label | access to local function CaptureIn1 : CaptureIn1 [captured tainted] : String | -| Capture.cs:16:9:24:9 | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | semmle.label | CaptureIn2(...) : CaptureIn2 [captured tainted] : String | -| Capture.cs:18:13:22:13 | M(...) : M [captured tainted] : String | semmle.label | M(...) : M [captured tainted] : String | | Capture.cs:20:21:20:26 | access to local variable sink28 : String | semmle.label | access to local variable sink28 : String | | Capture.cs:20:30:20:36 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:21:23:21:28 | access to local variable sink28 | semmle.label | access to local variable sink28 | | Capture.cs:23:13:23:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | | Capture.cs:25:9:25:18 | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | semmle.label | access to local function CaptureIn2 : CaptureIn2 [captured tainted] : String | -| Capture.cs:27:30:27:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | -| Capture.cs:27:43:32:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | | Capture.cs:29:17:29:22 | access to local variable sink29 : String | semmle.label | access to local variable sink29 : String | | Capture.cs:29:26:29:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:30:19:30:24 | access to local variable sink29 | semmle.label | access to local variable sink29 | -| Capture.cs:33:30:33:39 | access to local variable captureIn3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureIn3 : (...) => ... [captured tainted] : String | | Capture.cs:33:30:33:39 | access to local variable captureIn3 : Func [captured tainted] : String | semmle.label | access to local variable captureIn3 : Func [captured tainted] : String | | Capture.cs:50:50:50:55 | sink39 : String | semmle.label | sink39 : String | | Capture.cs:52:23:59:13 | (...) => ... : (...) => ... [captured sink39] : String | semmle.label | (...) => ... : (...) => ... [captured sink39] : String | @@ -608,21 +550,15 @@ nodes | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | | Capture.cs:124:15:124:20 | access to local variable sink40 | semmle.label | access to local variable sink40 | | Capture.cs:127:25:127:31 | tainted : String | semmle.label | tainted : String | -| Capture.cs:130:9:133:9 | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | semmle.label | CaptureThrough1(...) : CaptureThrough1 [captured tainted] : String | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | | Capture.cs:135:15:135:20 | access to local variable sink33 | semmle.label | access to local variable sink33 | -| Capture.cs:138:9:145:9 | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | semmle.label | CaptureThrough2(...) : CaptureThrough2 [captured tainted] : String | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:147:15:147:20 | access to local variable sink34 | semmle.label | access to local variable sink34 | -| Capture.cs:150:30:150:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | -| Capture.cs:150:48:154:9 | (...) => ... : (...) => ... [captured tainted] : String | semmle.label | (...) => ... : (...) => ... [captured tainted] : String | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | -| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | semmle.label | access to local variable captureThrough3 : (...) => ... [captured tainted] : String | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func [captured tainted] : String | semmle.label | access to local variable captureThrough3 : Func [captured tainted] : String | | Capture.cs:156:15:156:20 | access to local variable sink35 | semmle.label | access to local variable sink35 | -| Capture.cs:158:9:161:9 | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | semmle.label | CaptureThrough4(...) : CaptureThrough4 [captured tainted] : String | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | semmle.label | access to local variable sink36 : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | semmle.label | call to local function CaptureThrough4 : String | @@ -633,7 +569,6 @@ nodes | Capture.cs:170:25:170:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:171:15:171:20 | access to local variable sink37 | semmle.label | access to local variable sink37 | | Capture.cs:190:26:190:26 | s : String | semmle.label | s : String | -| Capture.cs:192:13:192:28 | M(...) : M [captured s] : String | semmle.label | M(...) : M [captured s] : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | semmle.label | access to local function M : M [captured s] : String | | Capture.cs:193:20:193:22 | call to local function M : String | semmle.label | call to local function M : String | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | semmle.label | access to local variable sink38 : String | @@ -641,10 +576,7 @@ nodes | Capture.cs:196:25:196:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:197:15:197:20 | access to local variable sink38 | semmle.label | access to local variable sink38 | | Capture.cs:202:20:202:20 | s : String | semmle.label | s : String | -| Capture.cs:204:16:204:16 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | -| Capture.cs:204:20:207:9 | (...) => ... : (...) => ... [captured s] : String | semmle.label | (...) => ... : (...) => ... [captured s] : String | | Capture.cs:206:19:206:19 | access to parameter s | semmle.label | access to parameter s | -| Capture.cs:208:9:208:9 | access to local variable a : (...) => ... [captured s] : String | semmle.label | access to local variable a : (...) => ... [captured s] : String | | Capture.cs:208:9:208:9 | access to local variable a : Action [captured s] : String | semmle.label | access to local variable a : Action [captured s] : String | | Capture.cs:211:21:211:34 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:213:22:213:22 | s : String | semmle.label | s : String | @@ -662,14 +594,11 @@ nodes | Capture.cs:234:15:234:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:242:9:242:9 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:242:19:242:32 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:244:16:244:16 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | -| Capture.cs:244:20:248:9 | (...) => ... : (...) => ... [captured c, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured c, field Field] : String | | Capture.cs:246:19:246:19 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:246:19:246:25 | access to field Field | semmle.label | access to field Field | | Capture.cs:247:13:247:13 | [post] access to local variable c : Capture [field Field] : String | semmle.label | [post] access to local variable c : Capture [field Field] : String | | Capture.cs:247:23:247:36 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:249:9:249:9 | [post] access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured c, field Field] : String | -| Capture.cs:249:9:249:9 | access to local variable a : (...) => ... [captured c, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured c, field Field] : String | | Capture.cs:249:9:249:9 | access to local variable a : Action [captured c, field Field] : String | semmle.label | access to local variable a : Action [captured c, field Field] : String | | Capture.cs:251:15:251:15 | access to local variable c : Capture [field Field] : String | semmle.label | access to local variable c : Capture [field Field] : String | | Capture.cs:251:15:251:21 | access to field Field | semmle.label | access to field Field | @@ -682,29 +611,20 @@ nodes | Capture.cs:273:30:273:30 | access to parameter x | semmle.label | access to parameter x | | Capture.cs:273:34:273:47 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:278:17:278:30 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:280:16:280:21 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | -| Capture.cs:280:25:288:9 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | -| Capture.cs:282:20:282:24 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | -| Capture.cs:282:28:286:13 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:284:23:284:23 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:285:21:285:34 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:287:13:287:17 | [post] access to local variable inner : (...) => ... [captured x] : String | semmle.label | [post] access to local variable inner : (...) => ... [captured x] : String | -| Capture.cs:287:13:287:17 | access to local variable inner : (...) => ... [captured x] : String | semmle.label | access to local variable inner : (...) => ... [captured x] : String | | Capture.cs:287:13:287:17 | access to local variable inner : Action [captured x] : String | semmle.label | access to local variable inner : Action [captured x] : String | | Capture.cs:290:9:290:14 | [post] access to local variable middle : (...) => ... [captured x] : String | semmle.label | [post] access to local variable middle : (...) => ... [captured x] : String | -| Capture.cs:290:9:290:14 | access to local variable middle : (...) => ... [captured x] : String | semmle.label | access to local variable middle : (...) => ... [captured x] : String | | Capture.cs:290:9:290:14 | access to local variable middle : Action [captured x] : String | semmle.label | access to local variable middle : Action [captured x] : String | | Capture.cs:292:15:292:15 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:297:9:297:12 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:297:22:297:35 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:299:16:299:16 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | -| Capture.cs:299:20:303:9 | (...) => ... : (...) => ... [captured this in M10, field Field] : String | semmle.label | (...) => ... : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:301:19:301:22 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:301:19:301:28 | access to field Field | semmle.label | access to field Field | | Capture.cs:302:13:302:16 | [post] this access : Capture [field Field] : String | semmle.label | [post] this access : Capture [field Field] : String | | Capture.cs:302:26:302:39 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:304:9:304:9 | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | [post] access to local variable a : (...) => ... [captured this in M10, field Field] : String | -| Capture.cs:304:9:304:9 | access to local variable a : (...) => ... [captured this in M10, field Field] : String | semmle.label | access to local variable a : (...) => ... [captured this in M10, field Field] : String | | Capture.cs:304:9:304:9 | access to local variable a : Action [captured this in M10, field Field] : String | semmle.label | access to local variable a : Action [captured this in M10, field Field] : String | | Capture.cs:306:15:306:18 | this access : Capture [field Field] : String | semmle.label | this access : Capture [field Field] : String | | Capture.cs:306:15:306:24 | access to field Field | semmle.label | access to field Field | @@ -713,19 +633,13 @@ nodes | Capture.cs:318:17:318:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:319:19:319:19 | access to local variable x | semmle.label | access to local variable x | | Capture.cs:328:17:328:30 | "taint source" : String | semmle.label | "taint source" : String | -| Capture.cs:330:9:330:49 | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | semmle.label | CapturedLocalFunction(...) : CapturedLocalFunction [captured x] : String | | Capture.cs:330:47:330:47 | access to local variable x | semmle.label | access to local variable x | -| Capture.cs:332:9:332:65 | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | semmle.label | CapturingLocalFunction(...) : CapturingLocalFunction [captured x] : String | -| Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | | Capture.cs:332:42:332:62 | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | semmle.label | access to local function CapturedLocalFunction : CapturedLocalFunction [captured x] : String | | Capture.cs:334:9:334:30 | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | semmle.label | access to local function CapturingLocalFunction : CapturingLocalFunction [captured x] : String | | Capture.cs:339:17:339:30 | "taint source" : String | semmle.label | "taint source" : String | | Capture.cs:341:33:341:46 | (...) => ... : (...) => ... [captured x] : String | semmle.label | (...) => ... : (...) => ... [captured x] : String | | Capture.cs:341:45:341:45 | access to local variable x | semmle.label | access to local variable x | -| Capture.cs:343:16:343:30 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | -| Capture.cs:343:34:343:55 | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | (...) => ... : (...) => ... [captured capturedLambda, captured x] : String | | Capture.cs:343:40:343:53 | access to local variable capturedLambda : (...) => ... [captured x] : String | semmle.label | access to local variable capturedLambda : (...) => ... [captured x] : String | -| Capture.cs:345:9:345:23 | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : (...) => ... [captured capturedLambda, captured x] : String | | Capture.cs:345:9:345:23 | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | semmle.label | access to local variable capturingLambda : Action [captured capturedLambda, captured x] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | semmle.label | a : (...) => ... [captured s] : String | | Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String | diff --git a/python/ql/test/experimental/dataflow/variable-capture/by_value.py b/python/ql/test/experimental/dataflow/variable-capture/by_value.py index fa7546b8f2b6..01b2ed83a46d 100644 --- a/python/ql/test/experimental/dataflow/variable-capture/by_value.py +++ b/python/ql/test/experimental/dataflow/variable-capture/by_value.py @@ -34,7 +34,7 @@ def by_value1(): a = SOURCE def inner(a_val=a): SINK(a_val) #$ captured - SINK_F(a) #$ SPURIOUS: captured + SINK_F(a) a = NONSOURCE inner() diff --git a/ruby/ql/test/library-tests/dataflow/global/Flow.expected b/ruby/ql/test/library-tests/dataflow/global/Flow.expected index 9e01d45a07c6..94589e1aafba 100644 --- a/ruby/ql/test/library-tests/dataflow/global/Flow.expected +++ b/ruby/ql/test/library-tests/dataflow/global/Flow.expected @@ -1,11 +1,7 @@ testFailures -| captured_variables.rb:236:14:236:14 | x | Unexpected result: hasValueFlow=19 | edges | blocks.rb:14:12:14:20 | call to source | blocks.rb:8:10:8:14 | yield ... | provenance | | -| captured_variables.rb:9:24:9:24 | x | captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | provenance | | | captured_variables.rb:9:24:9:24 | x | captured_variables.rb:11:5:11:6 | fn [captured x] | provenance | | -| captured_variables.rb:10:5:10:6 | fn [captured x] | captured_variables.rb:11:5:11:6 | fn [captured x] | provenance | | -| captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | captured_variables.rb:10:5:10:6 | fn [captured x] | provenance | | | captured_variables.rb:11:5:11:6 | fn [captured x] | captured_variables.rb:10:20:10:20 | x | provenance | | | captured_variables.rb:13:20:13:29 | call to taint | captured_variables.rb:9:24:9:24 | x | provenance | | | captured_variables.rb:15:28:15:28 | x | captured_variables.rb:16:5:18:5 | -> { ... } [captured x] | provenance | | @@ -17,18 +13,12 @@ edges | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | captured_variables.rb:24:14:24:14 | x | provenance | | | captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:22:28:22:28 | x | provenance | | | captured_variables.rb:27:48:27:57 | call to taint | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | provenance | | -| captured_variables.rb:29:33:29:33 | x | captured_variables.rb:30:10:32:5 | -> { ... } [captured x] | provenance | | | captured_variables.rb:29:33:29:33 | x | captured_variables.rb:33:29:33:30 | fn [captured x] | provenance | | -| captured_variables.rb:30:5:30:6 | fn [captured x] | captured_variables.rb:33:29:33:30 | fn [captured x] | provenance | | -| captured_variables.rb:30:10:32:5 | -> { ... } [captured x] | captured_variables.rb:30:5:30:6 | fn [captured x] | provenance | | | captured_variables.rb:33:29:33:30 | fn [captured x] | captured_variables.rb:31:14:31:14 | x | provenance | | | captured_variables.rb:35:29:35:38 | call to taint | captured_variables.rb:29:33:29:33 | x | provenance | | | captured_variables.rb:37:13:37:14 | fn [captured x] | captured_variables.rb:38:5:38:6 | fn [captured x] | provenance | | | captured_variables.rb:38:5:38:6 | fn [captured x] | captured_variables.rb:42:14:42:14 | x | provenance | | -| captured_variables.rb:40:31:40:31 | x | captured_variables.rb:41:10:43:5 | -> { ... } [captured x] | provenance | | | captured_variables.rb:40:31:40:31 | x | captured_variables.rb:44:13:44:14 | fn [captured x] | provenance | | -| captured_variables.rb:41:5:41:6 | fn [captured x] | captured_variables.rb:44:13:44:14 | fn [captured x] | provenance | | -| captured_variables.rb:41:10:43:5 | -> { ... } [captured x] | captured_variables.rb:41:5:41:6 | fn [captured x] | provenance | | | captured_variables.rb:44:13:44:14 | fn [captured x] | captured_variables.rb:37:13:37:14 | fn [captured x] | provenance | | | captured_variables.rb:46:27:46:36 | call to taint | captured_variables.rb:40:31:40:31 | x | provenance | | | captured_variables.rb:48:5:48:12 | call to taint | captured_variables.rb:49:16:52:3 | do ... end [captured x] | provenance | | @@ -66,11 +56,8 @@ edges | captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | provenance | | | captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:83:6:83:18 | call to get_field | provenance | | | captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | provenance | | -| captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:86:6:89:1 | -> { ... } [captured y] | provenance | | | captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:90:1:90:2 | fn [captured y] | provenance | | | captured_variables.rb:85:5:85:12 | call to taint | captured_variables.rb:91:6:91:6 | y | provenance | | -| captured_variables.rb:86:1:86:2 | fn [captured y] | captured_variables.rb:90:1:90:2 | fn [captured y] | provenance | | -| captured_variables.rb:86:6:89:1 | -> { ... } [captured y] | captured_variables.rb:86:1:86:2 | fn [captured y] | provenance | | | captured_variables.rb:88:9:88:16 | call to taint | captured_variables.rb:90:1:90:2 | [post] fn [captured y] | provenance | | | captured_variables.rb:90:1:90:2 | [post] fn [captured y] | captured_variables.rb:91:6:91:6 | y | provenance | | | captured_variables.rb:90:1:90:2 | fn [captured y] | captured_variables.rb:87:10:87:10 | y | provenance | | @@ -82,18 +69,12 @@ edges | captured_variables.rb:101:11:101:11 | x | captured_variables.rb:104:31:104:31 | x | provenance | | | captured_variables.rb:104:17:104:24 | call to taint | captured_variables.rb:100:21:100:21 | x | provenance | | | captured_variables.rb:104:31:104:31 | x | captured_variables.rb:105:10:105:10 | x | provenance | | -| captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:110:14:116:5 | -> { ... } [captured x] | provenance | | | captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:117:5:117:10 | middle [captured x] | provenance | | | captured_variables.rb:109:9:109:17 | call to taint | captured_variables.rb:118:10:118:10 | x | provenance | | -| captured_variables.rb:110:5:110:10 | middle [captured x] | captured_variables.rb:117:5:117:10 | middle [captured x] | provenance | | -| captured_variables.rb:110:14:116:5 | -> { ... } [captured x] | captured_variables.rb:110:5:110:10 | middle [captured x] | provenance | | -| captured_variables.rb:111:9:111:13 | inner [captured x] | captured_variables.rb:115:9:115:13 | inner [captured x] | provenance | | -| captured_variables.rb:111:17:114:9 | -> { ... } [captured x] | captured_variables.rb:111:9:111:13 | inner [captured x] | provenance | | | captured_variables.rb:113:17:113:25 | call to taint | captured_variables.rb:115:9:115:13 | [post] inner [captured x] | provenance | | | captured_variables.rb:115:9:115:13 | [post] inner [captured x] | captured_variables.rb:117:5:117:10 | [post] middle [captured x] | provenance | | | captured_variables.rb:115:9:115:13 | inner [captured x] | captured_variables.rb:112:18:112:18 | x | provenance | | | captured_variables.rb:117:5:117:10 | [post] middle [captured x] | captured_variables.rb:118:10:118:10 | x | provenance | | -| captured_variables.rb:117:5:117:10 | middle [captured x] | captured_variables.rb:111:17:114:9 | -> { ... } [captured x] | provenance | | | captured_variables.rb:117:5:117:10 | middle [captured x] | captured_variables.rb:115:9:115:13 | inner [captured x] | provenance | | | captured_variables.rb:147:5:147:6 | [post] self [@x] | captured_variables.rb:153:14:155:7 | do ... end [captured self, @x] | provenance | | | captured_variables.rb:147:10:147:18 | call to taint | captured_variables.rb:147:5:147:6 | [post] self [@x] | provenance | | @@ -117,16 +98,9 @@ edges | captured_variables.rb:194:1:194:1 | c [@x] | captured_variables.rb:185:5:189:7 | self in baz [@x] | provenance | | | captured_variables.rb:197:9:197:17 | call to taint | captured_variables.rb:199:10:199:10 | x | provenance | | | captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:208:14:208:14 | x | provenance | | -| captured_variables.rb:219:9:219:17 | call to taint | captured_variables.rb:222:11:224:5 | -> { ... } [captured x] | provenance | | | captured_variables.rb:219:9:219:17 | call to taint | captured_variables.rb:226:5:226:7 | fn1 [captured x] | provenance | | -| captured_variables.rb:222:5:222:7 | fn1 [captured x] | captured_variables.rb:226:5:226:7 | fn1 [captured x] | provenance | | -| captured_variables.rb:222:11:224:5 | -> { ... } [captured x] | captured_variables.rb:222:5:222:7 | fn1 [captured x] | provenance | | | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | captured_variables.rb:227:10:227:10 | y | provenance | | | captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | provenance | | -| captured_variables.rb:233:9:233:17 | call to taint | captured_variables.rb:235:11:237:5 | -> { ... } [captured x] | provenance | | -| captured_variables.rb:235:5:235:7 | fn1 [captured x] | captured_variables.rb:241:5:241:7 | fn1 [captured x] | provenance | | -| captured_variables.rb:235:11:237:5 | -> { ... } [captured x] | captured_variables.rb:235:5:235:7 | fn1 [captured x] | provenance | | -| captured_variables.rb:241:5:241:7 | fn1 [captured x] | captured_variables.rb:236:14:236:14 | x | provenance | | | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:11:18:11:18 | x | provenance | | | instance_variables.rb:11:18:11:18 | x | instance_variables.rb:11:9:11:14 | [post] self [@field] | provenance | | | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:16:14:21 | self [@field] | provenance | | @@ -269,8 +243,6 @@ nodes | blocks.rb:8:10:8:14 | yield ... | semmle.label | yield ... | | blocks.rb:14:12:14:20 | call to source | semmle.label | call to source | | captured_variables.rb:9:24:9:24 | x | semmle.label | x | -| captured_variables.rb:10:5:10:6 | fn [captured x] | semmle.label | fn [captured x] | -| captured_variables.rb:10:10:10:23 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | | captured_variables.rb:10:20:10:20 | x | semmle.label | x | | captured_variables.rb:11:5:11:6 | fn [captured x] | semmle.label | fn [captured x] | | captured_variables.rb:13:20:13:29 | call to taint | semmle.label | call to taint | @@ -286,16 +258,12 @@ nodes | captured_variables.rb:27:25:27:57 | call to capture_escape_return2 [captured x] | semmle.label | call to capture_escape_return2 [captured x] | | captured_variables.rb:27:48:27:57 | call to taint | semmle.label | call to taint | | captured_variables.rb:29:33:29:33 | x | semmle.label | x | -| captured_variables.rb:30:5:30:6 | fn [captured x] | semmle.label | fn [captured x] | -| captured_variables.rb:30:10:32:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | | captured_variables.rb:31:14:31:14 | x | semmle.label | x | | captured_variables.rb:33:29:33:30 | fn [captured x] | semmle.label | fn [captured x] | | captured_variables.rb:35:29:35:38 | call to taint | semmle.label | call to taint | | captured_variables.rb:37:13:37:14 | fn [captured x] | semmle.label | fn [captured x] | | captured_variables.rb:38:5:38:6 | fn [captured x] | semmle.label | fn [captured x] | | captured_variables.rb:40:31:40:31 | x | semmle.label | x | -| captured_variables.rb:41:5:41:6 | fn [captured x] | semmle.label | fn [captured x] | -| captured_variables.rb:41:10:43:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | | captured_variables.rb:42:14:42:14 | x | semmle.label | x | | captured_variables.rb:44:13:44:14 | fn [captured x] | semmle.label | fn [captured x] | | captured_variables.rb:46:27:46:36 | call to taint | semmle.label | call to taint | @@ -328,8 +296,6 @@ nodes | captured_variables.rb:83:6:83:8 | foo [@field] | semmle.label | foo [@field] | | captured_variables.rb:83:6:83:18 | call to get_field | semmle.label | call to get_field | | captured_variables.rb:85:5:85:12 | call to taint | semmle.label | call to taint | -| captured_variables.rb:86:1:86:2 | fn [captured y] | semmle.label | fn [captured y] | -| captured_variables.rb:86:6:89:1 | -> { ... } [captured y] | semmle.label | -> { ... } [captured y] | | captured_variables.rb:87:10:87:10 | y | semmle.label | y | | captured_variables.rb:88:9:88:16 | call to taint | semmle.label | call to taint | | captured_variables.rb:90:1:90:2 | [post] fn [captured y] | semmle.label | [post] fn [captured y] | @@ -346,10 +312,6 @@ nodes | captured_variables.rb:104:31:104:31 | x | semmle.label | x | | captured_variables.rb:105:10:105:10 | x | semmle.label | x | | captured_variables.rb:109:9:109:17 | call to taint | semmle.label | call to taint | -| captured_variables.rb:110:5:110:10 | middle [captured x] | semmle.label | middle [captured x] | -| captured_variables.rb:110:14:116:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | -| captured_variables.rb:111:9:111:13 | inner [captured x] | semmle.label | inner [captured x] | -| captured_variables.rb:111:17:114:9 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | | captured_variables.rb:112:18:112:18 | x | semmle.label | x | | captured_variables.rb:113:17:113:25 | call to taint | semmle.label | call to taint | | captured_variables.rb:115:9:115:13 | [post] inner [captured x] | semmle.label | [post] inner [captured x] | @@ -385,16 +347,9 @@ nodes | captured_variables.rb:206:13:206:21 | call to taint | semmle.label | call to taint | | captured_variables.rb:208:14:208:14 | x | semmle.label | x | | captured_variables.rb:219:9:219:17 | call to taint | semmle.label | call to taint | -| captured_variables.rb:222:5:222:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | -| captured_variables.rb:222:11:224:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | semmle.label | [post] fn1 [captured y] | | captured_variables.rb:226:5:226:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | | captured_variables.rb:227:10:227:10 | y | semmle.label | y | -| captured_variables.rb:233:9:233:17 | call to taint | semmle.label | call to taint | -| captured_variables.rb:235:5:235:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | -| captured_variables.rb:235:11:237:5 | -> { ... } [captured x] | semmle.label | -> { ... } [captured x] | -| captured_variables.rb:236:14:236:14 | x | semmle.label | x | -| captured_variables.rb:241:5:241:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | | instance_variables.rb:10:19:10:19 | x | semmle.label | x | | instance_variables.rb:11:9:11:14 | [post] self [@field] | semmle.label | [post] self [@field] | | instance_variables.rb:11:18:11:18 | x | semmle.label | x | @@ -605,7 +560,6 @@ subpaths | captured_variables.rb:199:10:199:10 | x | captured_variables.rb:197:9:197:17 | call to taint | captured_variables.rb:199:10:199:10 | x | $@ | captured_variables.rb:197:9:197:17 | call to taint | call to taint | | captured_variables.rb:208:14:208:14 | x | captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:208:14:208:14 | x | $@ | captured_variables.rb:206:13:206:21 | call to taint | call to taint | | captured_variables.rb:227:10:227:10 | y | captured_variables.rb:219:9:219:17 | call to taint | captured_variables.rb:227:10:227:10 | y | $@ | captured_variables.rb:219:9:219:17 | call to taint | call to taint | -| captured_variables.rb:236:14:236:14 | x | captured_variables.rb:233:9:233:17 | call to taint | captured_variables.rb:236:14:236:14 | x | $@ | captured_variables.rb:233:9:233:17 | call to taint | call to taint | | instance_variables.rb:20:10:20:13 | @foo | instance_variables.rb:19:12:19:21 | call to taint | instance_variables.rb:20:10:20:13 | @foo | $@ | instance_variables.rb:19:12:19:21 | call to taint | call to taint | | instance_variables.rb:36:10:36:33 | call to get_field | instance_variables.rb:36:14:36:22 | call to taint | instance_variables.rb:36:10:36:33 | call to get_field | $@ | instance_variables.rb:36:14:36:22 | call to taint | call to taint | | instance_variables.rb:39:6:39:33 | call to get_field | instance_variables.rb:39:14:39:22 | call to taint | instance_variables.rb:39:6:39:33 | call to get_field | $@ | instance_variables.rb:39:14:39:22 | call to taint | call to taint | From 6d8d106d91f78e1c33552c7f65e81ac3cf0aae8d Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 8 Mar 2024 11:18:51 +0100 Subject: [PATCH 098/731] Python: add test for `ReturnValue.TupleElement[n]` --- .../dataflow/model-summaries/InlineTaintTest.ext.yml | 2 ++ .../dataflow/model-summaries/NormalDataflowTest.ext.yml | 2 ++ .../dataflow/model-summaries/model_summaries.py | 9 ++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml b/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml index 3e14c56d7351..e3a7e059401e 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml +++ b/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml @@ -15,4 +15,6 @@ extensions: - ["foo", "Member[MS_append_to_list]", "Argument[1]", "ReturnValue.ListElement", "value"] - ["foo", "Member[MS_append_to_list]", "Argument[0]", "ReturnValue", "taint"] - ["foo", "Member[MS_append_to_list]", "Argument[1]", "ReturnValue", "taint"] + - ["foo", "Member[MS_spread]", "Argument[0]", "ReturnValue.TupleElement[0]", "value"] + - ["foo", "Member[MS_spread]", "Argument[1]", "ReturnValue.TupleElement[1]", "value"] - ["json", "Member[MS_loads]", "Argument[0]", "ReturnValue", "taint"] diff --git a/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml b/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml index 3e14c56d7351..e3a7e059401e 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml +++ b/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml @@ -15,4 +15,6 @@ extensions: - ["foo", "Member[MS_append_to_list]", "Argument[1]", "ReturnValue.ListElement", "value"] - ["foo", "Member[MS_append_to_list]", "Argument[0]", "ReturnValue", "taint"] - ["foo", "Member[MS_append_to_list]", "Argument[1]", "ReturnValue", "taint"] + - ["foo", "Member[MS_spread]", "Argument[0]", "ReturnValue.TupleElement[0]", "value"] + - ["foo", "Member[MS_spread]", "Argument[1]", "ReturnValue.TupleElement[1]", "value"] - ["json", "Member[MS_loads]", "Argument[0]", "ReturnValue", "taint"] diff --git a/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py b/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py index ee02918b0798..c8c5ac0a8882 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py +++ b/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py @@ -30,7 +30,7 @@ def SINK_F(x): ensure_tainted = ensure_not_tainted = print TAINTED_STRING = "TAINTED_STRING" -from foo import MS_identity, MS_apply_lambda, MS_reversed, MS_list_map, MS_append_to_list +from foo import MS_identity, MS_apply_lambda, MS_reversed, MS_list_map, MS_append_to_list, MS_spread # Simple summary via_identity = MS_identity(SOURCE) @@ -107,6 +107,13 @@ def explicit_identity(x): tainted_list[0], # $ tainted ) +a, b = MS_spread(SOURCE, NONSOURCE) +SINK(a) # $ flow="SOURCE, l:-1 -> a" +SINK_F(b) +x, y = MS_spread(NONSOURCE, SOURCE) +SINK_F(x) +SINK(y) # $ flow="SOURCE, l:-2 -> y" + # Modeled flow-summary is not value preserving from json import MS_loads as json_loads From 33eb69164c8bd92e16a66ab9dd83dd6e321ee602 Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Fri, 8 Mar 2024 11:20:04 +0100 Subject: [PATCH 099/731] C#: Change ID of buildless output assembly --- .../Entities/Assembly.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs index a997b7129df5..cf814c6087bd 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs @@ -9,19 +9,20 @@ internal class Assembly : Extraction.Entities.Location private readonly string assemblyPath; private readonly IAssemblySymbol assembly; + private readonly bool isOutputAssembly; private Assembly(Context cx, Microsoft.CodeAnalysis.Location? init) : base(cx, init) { - if (init is null) + isOutputAssembly = init is null; + if (isOutputAssembly) { - // This is the output assembly assemblyPath = cx.Extractor.OutputPath; assembly = cx.Compilation.Assembly; } else { - assembly = init.MetadataModule!.ContainingAssembly; + assembly = init!.MetadataModule!.ContainingAssembly; var identity = assembly.Identity; var idString = identity.Name + " " + identity.Version; assemblyPath = cx.Extractor.GetAssemblyFile(idString); @@ -68,8 +69,16 @@ public static Assembly CreateOutputAssembly(Context cx) public override void WriteId(EscapingTextWriter trapFile) { - trapFile.Write(assembly.ToString()); - if (!(assemblyPath is null)) + if (isOutputAssembly && Context.Extractor.Mode.HasFlag(ExtractorMode.Standalone)) + { + trapFile.Write("buildlessOutputAssembly"); + } + else + { + trapFile.Write(assembly.ToString()); + } + + if (assemblyPath is not null) { trapFile.Write("#file:///"); trapFile.Write(assemblyPath.Replace("\\", "/")); From 8fe483d9d802dad7ded644d34abe26f062e9081b Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Thu, 7 Mar 2024 14:25:55 +0100 Subject: [PATCH 100/731] Python: Add example of missing use-use flow (see PR for more detailed description) --- .../library-tests/essa/ssa-compute/test2.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 python/ql/test/library-tests/essa/ssa-compute/test2.py diff --git a/python/ql/test/library-tests/essa/ssa-compute/test2.py b/python/ql/test/library-tests/essa/ssa-compute/test2.py new file mode 100644 index 000000000000..d117a6b53e66 --- /dev/null +++ b/python/ql/test/library-tests/essa/ssa-compute/test2.py @@ -0,0 +1,29 @@ +def func(x): # $ def=x + try: + with Thing() as y: # $ def=y + y.foo(x, 0) # $ def-use=x:1 def-use=y:3 + while not x.attribute: # $ use-use=x:4 use-use=x:7 + y.bar() # $ use-use=y:4 use-use=y:6 + print(x) # $ use-use=x:5 + finally: + pass + +def func(x): # $ def=x + try: + with Thing() as y: # $ def=y + y.foo(x, some_var) # $ def-use=x:11 def-use=y:13 + while not x.attribute: # $ use-use=x:14 use-use=x:17 + y.bar() # $ use-use=y:16 MISSING: use-use=y:14 + print(x) # $ use-use=x:15 + finally: + pass + +def func(x): # $ def=x + try: + with Thing() as y: # $ def=y + y.foo(x, some_var.some_attr) # $ def-use=x:21 def-use=y:23 + while not x.attribute: # $ use-use=x:27 MISSING: use-use=x:24 + y.bar() # $ use-use=y:26 MISSING: use-use=y:24 + print(x) # $ use-use=x:25 + finally: + pass From 87b6592dbc99b5ec861b7c6d835868980d58cc6f Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 8 Mar 2024 13:34:26 +0100 Subject: [PATCH 101/731] Python: Accept inconsistency for missing use-use flow At least until we have a proper fix --- python/ql/consistency-queries/TypeTrackingConsistency.ql | 6 ++++++ .../CONSISTENCY/TypeTrackingConsistency.expected | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index b8f1e3a1b48c..b937b0c61632 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -24,6 +24,12 @@ private module ConsistencyChecksInput implements ConsistencyChecksInputSig { // TODO: when adding support for proper content, handle iterable unpacking better // such as `for k,v in items:`, or `a, (b,c) = ...` n instanceof DataFlow::IterableSequenceNode + or + // We have missing use-use flow in + // https://github.com/python/cpython/blob/0fb18b02c8ad56299d6a2910be0bab8ad601ef24/Lib/socketserver.py#L276-L303 + // which I couldn't just fix. We ignore the problems here, and instead rely on the + // test-case added in https://github.com/github/codeql/pull/15841 + n.getLocation().getFile().getAbsolutePath().matches("%/socketserver.py") } } diff --git a/python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected new file mode 100644 index 000000000000..81d19f3f20d7 --- /dev/null +++ b/python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected @@ -0,0 +1,6 @@ +unreachableNode +| test2.py:16:17:16:17 | ControlFlowNode for y | Unreachable node in step of kind load bar. | +| test2.py:25:23:25:23 | ControlFlowNode for x | Unreachable node in step of kind load attribute. | +| test2.py:25:23:25:23 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | +| test2.py:26:17:26:17 | ControlFlowNode for y | Unreachable node in step of kind load bar. | +| test2.py:27:23:27:23 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | From adf5a4b1e445b4f041625f49d1095c2f0be08bb1 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen Date: Fri, 8 Mar 2024 14:13:47 +0100 Subject: [PATCH 102/731] Python: Fix internal consistency failures --- python/ql/consistency-queries/TypeTrackingConsistency.ql | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index b937b0c61632..150832290020 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -17,7 +17,13 @@ private module ConsistencyChecksInput implements ConsistencyChecksInputSig { // // match (NONSOURCE, SOURCE): // case (x, y): ... - exists(DataFlow::Node m | m.asCfgNode().getNode() instanceof MatchCapturePattern | + exists(DataFlow::Node m | + m.asCfgNode().getNode() instanceof MatchCapturePattern + or + m.asCfgNode().getNode() instanceof MatchAsPattern + or + m.asCfgNode().getNode() instanceof MatchOrPattern + | TypeTrackingInput::simpleLocalSmallStep*(m, n) ) or From 3601773856c09fe559c45b5227329ce992a38869 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Fri, 8 Mar 2024 14:59:28 +0100 Subject: [PATCH 103/731] python: support encoding lower bound --- .../semmle/python/dataflow/new/internal/FlowSummaryImpl.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index a673a1881334..6a7463ccb9ba 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -27,6 +27,11 @@ module Input implements InputSig { result = i.toString() ) or + exists(int i | + pos.isPositionalLowerBound(i) and + result = i + ".." + ) + or exists(string name | pos.isKeyword(name) and result = name + ":" From 9b5cfc9026515537ba4140a0399c5f483256986a Mon Sep 17 00:00:00 2001 From: Tamas Vajk Date: Fri, 8 Mar 2024 15:02:30 +0100 Subject: [PATCH 104/731] Change assembly population in buildless --- .../Semmle.Extraction.CSharp/Entities/Assembly.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs index cf814c6087bd..a826aa5e02c5 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Assembly.cs @@ -33,8 +33,13 @@ public override void Populate(TextWriter trapFile) { if (assemblyPath is not null) { - trapFile.assemblies(this, File.Create(Context, assemblyPath), assembly.ToString() ?? "", - assembly.Identity.Name, assembly.Identity.Version.ToString()); + var isBuildlessOutputAssembly = isOutputAssembly && Context.Extractor.Mode.HasFlag(ExtractorMode.Standalone); + var identifier = isBuildlessOutputAssembly + ? "" + : assembly.ToString() ?? ""; + var name = isBuildlessOutputAssembly ? "" : assembly.Identity.Name; + var version = isBuildlessOutputAssembly ? "" : assembly.Identity.Version.ToString(); + trapFile.assemblies(this, File.Create(Context, assemblyPath), identifier, name, version); } } From dbd33d1cf0d8211779a90bfb7fdc4f7eb4aa9ba7 Mon Sep 17 00:00:00 2001 From: Joe Farebrother Date: Fri, 8 Mar 2024 14:04:01 +0000 Subject: [PATCH 105/731] Model Argument[1] of ActiveRecord from --- .../2024-03-08-activerecord-from.md | 4 + .../codeql/ruby/frameworks/ActiveRecord.qll | 6 +- .../security/cwe-089/ActiveRecordInjection.rb | 6 + .../security/cwe-089/SqlInjection.expected | 138 +++++++++--------- 4 files changed, 86 insertions(+), 68 deletions(-) create mode 100644 ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md diff --git a/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md b/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md new file mode 100644 index 000000000000..704a4f27a619 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. \ No newline at end of file diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll index f0917100058d..7573e099c199 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll @@ -175,14 +175,14 @@ private predicate sqlFragmentArgumentInner(DataFlow::CallNode call, DataFlow::No call = activeRecordQueryBuilderCall([ "delete_all", "delete_by", "destroy_all", "destroy_by", "exists?", "find_by", "find_by!", - "find_or_create_by", "find_or_create_by!", "find_or_initialize_by", "find_by_sql", "from", - "having", "lock", "not", "where", "rewhere" + "find_or_create_by", "find_or_create_by!", "find_or_initialize_by", "find_by_sql", "having", + "lock", "not", "where", "rewhere" ]) and sink = call.getArgument(0) or call = activeRecordQueryBuilderCall([ - "group", "joins", "order", "reorder", "pluck", "select", "reselect" + "from", "group", "joins", "order", "reorder", "pluck", "select", "reselect" ]) and sink = call.getArgument(_) or diff --git a/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb b/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb index 9a94e48708d4..ad074de5e980 100644 --- a/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb +++ b/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb @@ -114,6 +114,12 @@ def some_request_handler User.joins(:a, params[:column]) User.count_by_sql(params[:custom_sql_query]) + + # BAD: executes `SELECT users.* FROM #{params[:tab]}` + # where `params[:tab]` is unsanitized + User.all.from(params[:tab]) + # BAD: executes `SELECT "users".* FROM (SELECT "users".* FROM "users") #{params[:sq]} + User.all.from(User.all, params[:sq]) end end diff --git a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected index 9bf4513af074..8b6c5bf4d16f 100644 --- a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected @@ -46,34 +46,36 @@ edges | ActiveRecordInjection.rb:113:21:113:26 | call to params | ActiveRecordInjection.rb:113:21:113:35 | ...[...] | provenance | | | ActiveRecordInjection.rb:114:20:114:25 | call to params | ActiveRecordInjection.rb:114:20:114:34 | ...[...] | provenance | | | ActiveRecordInjection.rb:116:23:116:28 | call to params | ActiveRecordInjection.rb:116:23:116:47 | ...[...] | provenance | | -| ActiveRecordInjection.rb:122:5:122:6 | ps | ActiveRecordInjection.rb:123:11:123:12 | ps | provenance | | -| ActiveRecordInjection.rb:122:10:122:15 | call to params | ActiveRecordInjection.rb:122:5:122:6 | ps | provenance | | -| ActiveRecordInjection.rb:123:5:123:7 | uid | ActiveRecordInjection.rb:124:5:124:9 | uidEq | provenance | | -| ActiveRecordInjection.rb:123:11:123:12 | ps | ActiveRecordInjection.rb:123:11:123:17 | ...[...] | provenance | | -| ActiveRecordInjection.rb:123:11:123:17 | ...[...] | ActiveRecordInjection.rb:123:5:123:7 | uid | provenance | | -| ActiveRecordInjection.rb:124:5:124:9 | uidEq | ActiveRecordInjection.rb:128:20:128:32 | ... + ... | provenance | | -| ActiveRecordInjection.rb:124:5:124:9 | uidEq | ActiveRecordInjection.rb:128:28:128:32 | uidEq | provenance | | -| ActiveRecordInjection.rb:128:20:128:32 | ... + ... [element] | ActiveRecordInjection.rb:128:20:128:32 | ... + ... | provenance | | -| ActiveRecordInjection.rb:128:28:128:32 | uidEq | ActiveRecordInjection.rb:128:20:128:32 | ... + ... [element] | provenance | | -| ActiveRecordInjection.rb:161:21:161:26 | call to params | ActiveRecordInjection.rb:161:21:161:44 | ...[...] | provenance | | -| ActiveRecordInjection.rb:161:21:161:26 | call to params | ActiveRecordInjection.rb:161:21:161:44 | ...[...] | provenance | | -| ActiveRecordInjection.rb:161:21:161:44 | ...[...] | ActiveRecordInjection.rb:20:22:20:30 | condition | provenance | | -| ActiveRecordInjection.rb:175:59:175:64 | call to params | ActiveRecordInjection.rb:175:59:175:74 | ...[...] | provenance | | -| ActiveRecordInjection.rb:175:59:175:74 | ...[...] | ActiveRecordInjection.rb:175:27:175:76 | "this is an unsafe annotation:..." | provenance | | -| ActiveRecordInjection.rb:186:5:186:13 | my_params | ActiveRecordInjection.rb:187:47:187:55 | my_params | provenance | | -| ActiveRecordInjection.rb:186:17:186:32 | call to permitted_params | ActiveRecordInjection.rb:186:5:186:13 | my_params | provenance | | -| ActiveRecordInjection.rb:187:5:187:9 | query | ActiveRecordInjection.rb:188:37:188:41 | query | provenance | | -| ActiveRecordInjection.rb:187:47:187:55 | my_params | ActiveRecordInjection.rb:187:47:187:65 | ...[...] | provenance | | -| ActiveRecordInjection.rb:187:47:187:65 | ...[...] | ActiveRecordInjection.rb:187:5:187:9 | query | provenance | | -| ActiveRecordInjection.rb:193:5:193:10 | call to params | ActiveRecordInjection.rb:193:5:193:27 | call to require | provenance | | -| ActiveRecordInjection.rb:193:5:193:27 | call to require | ActiveRecordInjection.rb:193:5:193:59 | call to permit | provenance | | -| ActiveRecordInjection.rb:193:5:193:59 | call to permit | ActiveRecordInjection.rb:186:17:186:32 | call to permitted_params | provenance | | -| ActiveRecordInjection.rb:193:5:193:59 | call to permit | ActiveRecordInjection.rb:197:77:197:92 | call to permitted_params | provenance | | -| ActiveRecordInjection.rb:193:5:193:59 | call to permit | ActiveRecordInjection.rb:198:69:198:84 | call to permitted_params | provenance | | -| ActiveRecordInjection.rb:197:77:197:92 | call to permitted_params | ActiveRecordInjection.rb:197:77:197:102 | ...[...] | provenance | | -| ActiveRecordInjection.rb:197:77:197:102 | ...[...] | ActiveRecordInjection.rb:197:43:197:104 | "SELECT * FROM users WHERE id ..." | provenance | | -| ActiveRecordInjection.rb:198:69:198:84 | call to permitted_params | ActiveRecordInjection.rb:198:69:198:94 | ...[...] | provenance | | -| ActiveRecordInjection.rb:198:69:198:94 | ...[...] | ActiveRecordInjection.rb:198:35:198:96 | "SELECT * FROM users WHERE id ..." | provenance | | +| ActiveRecordInjection.rb:120:19:120:24 | call to params | ActiveRecordInjection.rb:120:19:120:30 | ...[...] | provenance | | +| ActiveRecordInjection.rb:122:29:122:34 | call to params | ActiveRecordInjection.rb:122:29:122:39 | ...[...] | provenance | | +| ActiveRecordInjection.rb:128:5:128:6 | ps | ActiveRecordInjection.rb:129:11:129:12 | ps | provenance | | +| ActiveRecordInjection.rb:128:10:128:15 | call to params | ActiveRecordInjection.rb:128:5:128:6 | ps | provenance | | +| ActiveRecordInjection.rb:129:5:129:7 | uid | ActiveRecordInjection.rb:130:5:130:9 | uidEq | provenance | | +| ActiveRecordInjection.rb:129:11:129:12 | ps | ActiveRecordInjection.rb:129:11:129:17 | ...[...] | provenance | | +| ActiveRecordInjection.rb:129:11:129:17 | ...[...] | ActiveRecordInjection.rb:129:5:129:7 | uid | provenance | | +| ActiveRecordInjection.rb:130:5:130:9 | uidEq | ActiveRecordInjection.rb:134:20:134:32 | ... + ... | provenance | | +| ActiveRecordInjection.rb:130:5:130:9 | uidEq | ActiveRecordInjection.rb:134:28:134:32 | uidEq | provenance | | +| ActiveRecordInjection.rb:134:20:134:32 | ... + ... [element] | ActiveRecordInjection.rb:134:20:134:32 | ... + ... | provenance | | +| ActiveRecordInjection.rb:134:28:134:32 | uidEq | ActiveRecordInjection.rb:134:20:134:32 | ... + ... [element] | provenance | | +| ActiveRecordInjection.rb:167:21:167:26 | call to params | ActiveRecordInjection.rb:167:21:167:44 | ...[...] | provenance | | +| ActiveRecordInjection.rb:167:21:167:26 | call to params | ActiveRecordInjection.rb:167:21:167:44 | ...[...] | provenance | | +| ActiveRecordInjection.rb:167:21:167:44 | ...[...] | ActiveRecordInjection.rb:20:22:20:30 | condition | provenance | | +| ActiveRecordInjection.rb:181:59:181:64 | call to params | ActiveRecordInjection.rb:181:59:181:74 | ...[...] | provenance | | +| ActiveRecordInjection.rb:181:59:181:74 | ...[...] | ActiveRecordInjection.rb:181:27:181:76 | "this is an unsafe annotation:..." | provenance | | +| ActiveRecordInjection.rb:192:5:192:13 | my_params | ActiveRecordInjection.rb:193:47:193:55 | my_params | provenance | | +| ActiveRecordInjection.rb:192:17:192:32 | call to permitted_params | ActiveRecordInjection.rb:192:5:192:13 | my_params | provenance | | +| ActiveRecordInjection.rb:193:5:193:9 | query | ActiveRecordInjection.rb:194:37:194:41 | query | provenance | | +| ActiveRecordInjection.rb:193:47:193:55 | my_params | ActiveRecordInjection.rb:193:47:193:65 | ...[...] | provenance | | +| ActiveRecordInjection.rb:193:47:193:65 | ...[...] | ActiveRecordInjection.rb:193:5:193:9 | query | provenance | | +| ActiveRecordInjection.rb:199:5:199:10 | call to params | ActiveRecordInjection.rb:199:5:199:27 | call to require | provenance | | +| ActiveRecordInjection.rb:199:5:199:27 | call to require | ActiveRecordInjection.rb:199:5:199:59 | call to permit | provenance | | +| ActiveRecordInjection.rb:199:5:199:59 | call to permit | ActiveRecordInjection.rb:192:17:192:32 | call to permitted_params | provenance | | +| ActiveRecordInjection.rb:199:5:199:59 | call to permit | ActiveRecordInjection.rb:203:77:203:92 | call to permitted_params | provenance | | +| ActiveRecordInjection.rb:199:5:199:59 | call to permit | ActiveRecordInjection.rb:204:69:204:84 | call to permitted_params | provenance | | +| ActiveRecordInjection.rb:203:77:203:92 | call to permitted_params | ActiveRecordInjection.rb:203:77:203:102 | ...[...] | provenance | | +| ActiveRecordInjection.rb:203:77:203:102 | ...[...] | ActiveRecordInjection.rb:203:43:203:104 | "SELECT * FROM users WHERE id ..." | provenance | | +| ActiveRecordInjection.rb:204:69:204:84 | call to permitted_params | ActiveRecordInjection.rb:204:69:204:94 | ...[...] | provenance | | +| ActiveRecordInjection.rb:204:69:204:94 | ...[...] | ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | provenance | | | ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | provenance | | | ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | provenance | | | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:4:12:4:29 | ...[...] | provenance | | @@ -165,36 +167,40 @@ nodes | ActiveRecordInjection.rb:114:20:114:34 | ...[...] | semmle.label | ...[...] | | ActiveRecordInjection.rb:116:23:116:28 | call to params | semmle.label | call to params | | ActiveRecordInjection.rb:116:23:116:47 | ...[...] | semmle.label | ...[...] | -| ActiveRecordInjection.rb:122:5:122:6 | ps | semmle.label | ps | -| ActiveRecordInjection.rb:122:10:122:15 | call to params | semmle.label | call to params | -| ActiveRecordInjection.rb:123:5:123:7 | uid | semmle.label | uid | -| ActiveRecordInjection.rb:123:11:123:12 | ps | semmle.label | ps | -| ActiveRecordInjection.rb:123:11:123:17 | ...[...] | semmle.label | ...[...] | -| ActiveRecordInjection.rb:124:5:124:9 | uidEq | semmle.label | uidEq | -| ActiveRecordInjection.rb:128:20:128:32 | ... + ... | semmle.label | ... + ... | -| ActiveRecordInjection.rb:128:20:128:32 | ... + ... [element] | semmle.label | ... + ... [element] | -| ActiveRecordInjection.rb:128:28:128:32 | uidEq | semmle.label | uidEq | -| ActiveRecordInjection.rb:161:21:161:26 | call to params | semmle.label | call to params | -| ActiveRecordInjection.rb:161:21:161:44 | ...[...] | semmle.label | ...[...] | -| ActiveRecordInjection.rb:161:21:161:44 | ...[...] | semmle.label | ...[...] | -| ActiveRecordInjection.rb:175:27:175:76 | "this is an unsafe annotation:..." | semmle.label | "this is an unsafe annotation:..." | -| ActiveRecordInjection.rb:175:59:175:64 | call to params | semmle.label | call to params | -| ActiveRecordInjection.rb:175:59:175:74 | ...[...] | semmle.label | ...[...] | -| ActiveRecordInjection.rb:186:5:186:13 | my_params | semmle.label | my_params | -| ActiveRecordInjection.rb:186:17:186:32 | call to permitted_params | semmle.label | call to permitted_params | -| ActiveRecordInjection.rb:187:5:187:9 | query | semmle.label | query | -| ActiveRecordInjection.rb:187:47:187:55 | my_params | semmle.label | my_params | -| ActiveRecordInjection.rb:187:47:187:65 | ...[...] | semmle.label | ...[...] | -| ActiveRecordInjection.rb:188:37:188:41 | query | semmle.label | query | -| ActiveRecordInjection.rb:193:5:193:10 | call to params | semmle.label | call to params | -| ActiveRecordInjection.rb:193:5:193:27 | call to require | semmle.label | call to require | -| ActiveRecordInjection.rb:193:5:193:59 | call to permit | semmle.label | call to permit | -| ActiveRecordInjection.rb:197:43:197:104 | "SELECT * FROM users WHERE id ..." | semmle.label | "SELECT * FROM users WHERE id ..." | -| ActiveRecordInjection.rb:197:77:197:92 | call to permitted_params | semmle.label | call to permitted_params | -| ActiveRecordInjection.rb:197:77:197:102 | ...[...] | semmle.label | ...[...] | -| ActiveRecordInjection.rb:198:35:198:96 | "SELECT * FROM users WHERE id ..." | semmle.label | "SELECT * FROM users WHERE id ..." | -| ActiveRecordInjection.rb:198:69:198:84 | call to permitted_params | semmle.label | call to permitted_params | -| ActiveRecordInjection.rb:198:69:198:94 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:120:19:120:24 | call to params | semmle.label | call to params | +| ActiveRecordInjection.rb:120:19:120:30 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:122:29:122:34 | call to params | semmle.label | call to params | +| ActiveRecordInjection.rb:122:29:122:39 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:128:5:128:6 | ps | semmle.label | ps | +| ActiveRecordInjection.rb:128:10:128:15 | call to params | semmle.label | call to params | +| ActiveRecordInjection.rb:129:5:129:7 | uid | semmle.label | uid | +| ActiveRecordInjection.rb:129:11:129:12 | ps | semmle.label | ps | +| ActiveRecordInjection.rb:129:11:129:17 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:130:5:130:9 | uidEq | semmle.label | uidEq | +| ActiveRecordInjection.rb:134:20:134:32 | ... + ... | semmle.label | ... + ... | +| ActiveRecordInjection.rb:134:20:134:32 | ... + ... [element] | semmle.label | ... + ... [element] | +| ActiveRecordInjection.rb:134:28:134:32 | uidEq | semmle.label | uidEq | +| ActiveRecordInjection.rb:167:21:167:26 | call to params | semmle.label | call to params | +| ActiveRecordInjection.rb:167:21:167:44 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:167:21:167:44 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:181:27:181:76 | "this is an unsafe annotation:..." | semmle.label | "this is an unsafe annotation:..." | +| ActiveRecordInjection.rb:181:59:181:64 | call to params | semmle.label | call to params | +| ActiveRecordInjection.rb:181:59:181:74 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:192:5:192:13 | my_params | semmle.label | my_params | +| ActiveRecordInjection.rb:192:17:192:32 | call to permitted_params | semmle.label | call to permitted_params | +| ActiveRecordInjection.rb:193:5:193:9 | query | semmle.label | query | +| ActiveRecordInjection.rb:193:47:193:55 | my_params | semmle.label | my_params | +| ActiveRecordInjection.rb:193:47:193:65 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:194:37:194:41 | query | semmle.label | query | +| ActiveRecordInjection.rb:199:5:199:10 | call to params | semmle.label | call to params | +| ActiveRecordInjection.rb:199:5:199:27 | call to require | semmle.label | call to require | +| ActiveRecordInjection.rb:199:5:199:59 | call to permit | semmle.label | call to permit | +| ActiveRecordInjection.rb:203:43:203:104 | "SELECT * FROM users WHERE id ..." | semmle.label | "SELECT * FROM users WHERE id ..." | +| ActiveRecordInjection.rb:203:77:203:92 | call to permitted_params | semmle.label | call to permitted_params | +| ActiveRecordInjection.rb:203:77:203:102 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | semmle.label | "SELECT * FROM users WHERE id ..." | +| ActiveRecordInjection.rb:204:69:204:84 | call to permitted_params | semmle.label | call to permitted_params | +| ActiveRecordInjection.rb:204:69:204:94 | ...[...] | semmle.label | ...[...] | | ArelInjection.rb:4:5:4:8 | name | semmle.label | name | | ArelInjection.rb:4:12:4:17 | call to params | semmle.label | call to params | | ArelInjection.rb:4:12:4:29 | ...[...] | semmle.label | ...[...] | @@ -217,7 +223,7 @@ subpaths #select | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | ActiveRecordInjection.rb:70:23:70:28 | call to params | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | This SQL query depends on a $@. | ActiveRecordInjection.rb:70:23:70:28 | call to params | user-provided value | | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | ActiveRecordInjection.rb:70:38:70:43 | call to params | ActiveRecordInjection.rb:10:33:10:67 | "name='#{...}' and pass='#{...}'" | This SQL query depends on a $@. | ActiveRecordInjection.rb:70:38:70:43 | call to params | user-provided value | -| ActiveRecordInjection.rb:23:16:23:24 | condition | ActiveRecordInjection.rb:161:21:161:26 | call to params | ActiveRecordInjection.rb:23:16:23:24 | condition | This SQL query depends on a $@. | ActiveRecordInjection.rb:161:21:161:26 | call to params | user-provided value | +| ActiveRecordInjection.rb:23:16:23:24 | condition | ActiveRecordInjection.rb:167:21:167:26 | call to params | ActiveRecordInjection.rb:23:16:23:24 | condition | This SQL query depends on a $@. | ActiveRecordInjection.rb:167:21:167:26 | call to params | user-provided value | | ActiveRecordInjection.rb:35:30:35:44 | ...[...] | ActiveRecordInjection.rb:35:30:35:35 | call to params | ActiveRecordInjection.rb:35:30:35:44 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:35:30:35:35 | call to params | user-provided value | | ActiveRecordInjection.rb:39:18:39:32 | ...[...] | ActiveRecordInjection.rb:39:18:39:23 | call to params | ActiveRecordInjection.rb:39:18:39:32 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:39:18:39:23 | call to params | user-provided value | | ActiveRecordInjection.rb:43:20:43:42 | "id = '#{...}'" | ActiveRecordInjection.rb:43:29:43:34 | call to params | ActiveRecordInjection.rb:43:20:43:42 | "id = '#{...}'" | This SQL query depends on a $@. | ActiveRecordInjection.rb:43:29:43:34 | call to params | user-provided value | @@ -243,12 +249,14 @@ subpaths | ActiveRecordInjection.rb:113:21:113:35 | ...[...] | ActiveRecordInjection.rb:113:21:113:26 | call to params | ActiveRecordInjection.rb:113:21:113:35 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:113:21:113:26 | call to params | user-provided value | | ActiveRecordInjection.rb:114:20:114:34 | ...[...] | ActiveRecordInjection.rb:114:20:114:25 | call to params | ActiveRecordInjection.rb:114:20:114:34 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:114:20:114:25 | call to params | user-provided value | | ActiveRecordInjection.rb:116:23:116:47 | ...[...] | ActiveRecordInjection.rb:116:23:116:28 | call to params | ActiveRecordInjection.rb:116:23:116:47 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:116:23:116:28 | call to params | user-provided value | -| ActiveRecordInjection.rb:128:20:128:32 | ... + ... | ActiveRecordInjection.rb:122:10:122:15 | call to params | ActiveRecordInjection.rb:128:20:128:32 | ... + ... | This SQL query depends on a $@. | ActiveRecordInjection.rb:122:10:122:15 | call to params | user-provided value | -| ActiveRecordInjection.rb:161:21:161:44 | ...[...] | ActiveRecordInjection.rb:161:21:161:26 | call to params | ActiveRecordInjection.rb:161:21:161:44 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:161:21:161:26 | call to params | user-provided value | -| ActiveRecordInjection.rb:175:27:175:76 | "this is an unsafe annotation:..." | ActiveRecordInjection.rb:175:59:175:64 | call to params | ActiveRecordInjection.rb:175:27:175:76 | "this is an unsafe annotation:..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:175:59:175:64 | call to params | user-provided value | -| ActiveRecordInjection.rb:188:37:188:41 | query | ActiveRecordInjection.rb:193:5:193:10 | call to params | ActiveRecordInjection.rb:188:37:188:41 | query | This SQL query depends on a $@. | ActiveRecordInjection.rb:193:5:193:10 | call to params | user-provided value | -| ActiveRecordInjection.rb:197:43:197:104 | "SELECT * FROM users WHERE id ..." | ActiveRecordInjection.rb:193:5:193:10 | call to params | ActiveRecordInjection.rb:197:43:197:104 | "SELECT * FROM users WHERE id ..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:193:5:193:10 | call to params | user-provided value | -| ActiveRecordInjection.rb:198:35:198:96 | "SELECT * FROM users WHERE id ..." | ActiveRecordInjection.rb:193:5:193:10 | call to params | ActiveRecordInjection.rb:198:35:198:96 | "SELECT * FROM users WHERE id ..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:193:5:193:10 | call to params | user-provided value | +| ActiveRecordInjection.rb:120:19:120:30 | ...[...] | ActiveRecordInjection.rb:120:19:120:24 | call to params | ActiveRecordInjection.rb:120:19:120:30 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:120:19:120:24 | call to params | user-provided value | +| ActiveRecordInjection.rb:122:29:122:39 | ...[...] | ActiveRecordInjection.rb:122:29:122:34 | call to params | ActiveRecordInjection.rb:122:29:122:39 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:122:29:122:34 | call to params | user-provided value | +| ActiveRecordInjection.rb:134:20:134:32 | ... + ... | ActiveRecordInjection.rb:128:10:128:15 | call to params | ActiveRecordInjection.rb:134:20:134:32 | ... + ... | This SQL query depends on a $@. | ActiveRecordInjection.rb:128:10:128:15 | call to params | user-provided value | +| ActiveRecordInjection.rb:167:21:167:44 | ...[...] | ActiveRecordInjection.rb:167:21:167:26 | call to params | ActiveRecordInjection.rb:167:21:167:44 | ...[...] | This SQL query depends on a $@. | ActiveRecordInjection.rb:167:21:167:26 | call to params | user-provided value | +| ActiveRecordInjection.rb:181:27:181:76 | "this is an unsafe annotation:..." | ActiveRecordInjection.rb:181:59:181:64 | call to params | ActiveRecordInjection.rb:181:27:181:76 | "this is an unsafe annotation:..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:181:59:181:64 | call to params | user-provided value | +| ActiveRecordInjection.rb:194:37:194:41 | query | ActiveRecordInjection.rb:199:5:199:10 | call to params | ActiveRecordInjection.rb:194:37:194:41 | query | This SQL query depends on a $@. | ActiveRecordInjection.rb:199:5:199:10 | call to params | user-provided value | +| ActiveRecordInjection.rb:203:43:203:104 | "SELECT * FROM users WHERE id ..." | ActiveRecordInjection.rb:199:5:199:10 | call to params | ActiveRecordInjection.rb:203:43:203:104 | "SELECT * FROM users WHERE id ..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:199:5:199:10 | call to params | user-provided value | +| ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | ActiveRecordInjection.rb:199:5:199:10 | call to params | ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:199:5:199:10 | call to params | user-provided value | | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | This SQL query depends on a $@. | ArelInjection.rb:4:12:4:17 | call to params | user-provided value | | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | This SQL query depends on a $@. | ArelInjection.rb:4:12:4:17 | call to params | user-provided value | | PgInjection.rb:14:15:14:18 | qry1 | PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:14:15:14:18 | qry1 | This SQL query depends on a $@. | PgInjection.rb:6:12:6:17 | call to params | user-provided value | From 589a34241c528aaae5a7c940947a2f7b72360046 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 00:16:32 +0000 Subject: [PATCH 106/731] Add changed framework coverage reports --- .../library-coverage/coverage.csv | 88 +++++++++---------- .../library-coverage/coverage.rst | 6 +- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index 43681e0a264c..8bb3b01441ab 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -1,44 +1,44 @@ -package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:file,source:file-write,source:local,source:remote,summary:taint,summary:value -Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,6,, -Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,, -Dapper,55,,,,,,,,,,,,55,,,,,, -ILCompiler,,,81,,,,,,,,,,,,,,,81, -ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,63, -ILLink.Shared,,,32,,,,,,,,,,,,,,,29,3 -ILLink.Tasks,,,5,,,,,,,,,,,,,,,5, -Internal.IL,,,69,,,,,,,,,,,,,,,67,2 -Internal.Pgo,,,9,,,,,,,,,,,,,,,8,1 -Internal.TypeSystem,,,367,,,,,,,,,,,,,,,331,36 -JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,7, -Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,14, -Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,7, -Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,, -Microsoft.CSharp,,,24,,,,,,,,,,,,,,,24, -Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,13, -Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,12 -Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,15, -Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,37,1 -Microsoft.Extensions.Configuration,,,83,,,,,,,,,,,,,,,80,3 -Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,120, -Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,12, -Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,13, -Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,15, -Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,14,2 -Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,22,1 -Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,10, -Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,59,1 -Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,8, -Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,64, -Microsoft.Interop,,,78,,,,,,,,,,,,,,,78, -Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,1, -Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,7, -Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,5,5 -Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,3, -Microsoft.Win32.SafeHandles,,,4,,,,,,,,,,,,,,,4, -Mono.Linker,,,163,,,,,,,,,,,,,,,163, -MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,, -Newtonsoft.Json,,,91,,,,,,,,,,,,,,,73,18 -ServiceStack,194,,7,27,,,,,75,,,,92,,,,,7, -SourceGenerators,,,4,,,,,,,,,,,,,,,4, -System,67,25,11862,,8,8,9,,,4,5,,33,1,17,3,4,9896,1966 -Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,, +package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:commandargs,source:environment,source:file,source:file-write,source:local,source:remote,summary:taint,summary:value +Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,,,6,, +Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,,,, +Dapper,55,,,,,,,,,,,,55,,,,,,,, +ILCompiler,,,81,,,,,,,,,,,,,,,,,81, +ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,,,63, +ILLink.Shared,,,32,,,,,,,,,,,,,,,,,29,3 +ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,5, +Internal.IL,,,69,,,,,,,,,,,,,,,,,67,2 +Internal.Pgo,,,9,,,,,,,,,,,,,,,,,8,1 +Internal.TypeSystem,,,367,,,,,,,,,,,,,,,,,331,36 +JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,,,7, +Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,,,14, +Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,7, +Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,, +Microsoft.CSharp,,,24,,,,,,,,,,,,,,,,,24, +Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,,,13, +Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,12 +Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,,,15, +Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,,,37,1 +Microsoft.Extensions.Configuration,,2,89,,,,,,,,,,,,2,,,,,86,3 +Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,,,120, +Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,,,12, +Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,,,13, +Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,,,15, +Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,,,14,2 +Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,,,22,1 +Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,,,10, +Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,,,59,1 +Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,,,8, +Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,,,64, +Microsoft.Interop,,,78,,,,,,,,,,,,,,,,,78, +Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,,,1, +Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,,,7, +Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,,,5,5 +Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,,,3, +Microsoft.Win32.SafeHandles,,,4,,,,,,,,,,,,,,,,,4, +Mono.Linker,,,163,,,,,,,,,,,,,,,,,163, +MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,, +Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,73,18 +ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,7, +SourceGenerators,,,4,,,,,,,,,,,,,,,,,4, +System,67,30,11864,,8,8,9,,,4,5,,33,2,3,1,17,3,4,9898,1966 +Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,, diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index 9219a2a663f1..bdee069e89a9 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -8,7 +8,7 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack `_,"``ServiceStack.*``, ``ServiceStack``",,7,194, - System,"``System.*``, ``System``",25,11862,67,9 - Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32.SafeHandles``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",6,1541,148, - Totals,,31,13410,409,9 + System,"``System.*``, ``System``",30,11864,67,9 + Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32.SafeHandles``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",8,1547,148, + Totals,,38,13418,409,9 From d300736c7ee28adecb8df656c7661248fdb70b98 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Wed, 28 Feb 2024 13:14:16 -0500 Subject: [PATCH 107/731] Remove `AddLocalSource` classes --- .../semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll | 2 -- .../code/csharp/security/dataflow/ResourceInjectionQuery.qll | 2 -- .../semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll | 2 -- 3 files changed, 6 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll index fdfd422c47b8..1256ae5a7ee4 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll @@ -68,8 +68,6 @@ deprecated class RemoteSource extends DataFlow::Node instanceof RemoteFlowSource */ deprecated class LocalSource extends DataFlow::Node instanceof LocalFlowSource { } -private class AddLocalSource extends Source instanceof LocalFlowSource { } - /** A source supported by the current threat model. */ class ThreatModelSource extends Source instanceof ThreatModelFlowSource { } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll index 56cb59001cd4..a66283de02a7 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll @@ -67,8 +67,6 @@ deprecated class RemoteSource extends DataFlow::Node instanceof RemoteFlowSource */ deprecated class LocalSource extends DataFlow::Node instanceof LocalFlowSource { } -private class AddLocalSource extends Source instanceof LocalFlowSource { } - /** A source supported by the current threat model. */ class ThreatModelSource extends Source instanceof ThreatModelFlowSource { } diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll index 12c580381b9f..b7b198bbca0e 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll @@ -78,8 +78,6 @@ deprecated class RemoteSource extends DataFlow::Node instanceof RemoteFlowSource */ deprecated class LocalSource extends DataFlow::Node instanceof LocalFlowSource { } -private class AddLocalSource extends Source instanceof LocalFlowSource { } - /** A source supported by the current threat model. */ class ThreatModelSource extends Source instanceof ThreatModelFlowSource { } From 8187b00562b82deda0746cd5632d540f9db2253b Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Fri, 1 Mar 2024 12:56:56 -0500 Subject: [PATCH 108/731] Change note --- .../change-notes/2024-03-06-remove-default-local-sources.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md diff --git a/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md b/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md new file mode 100644 index 000000000000..19494571ad15 --- /dev/null +++ b/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. + From 3fdc7e95df97282794ca4682a0864f523bb65a1e Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Fri, 1 Mar 2024 13:29:03 -0500 Subject: [PATCH 109/731] Add local models to CodeInjection tests --- .../Security Features/CWE-094/CodeInjection.ext.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.ext.yml diff --git a/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.ext.yml b/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.ext.yml new file mode 100644 index 000000000000..82f107ae1d71 --- /dev/null +++ b/csharp/ql/test/query-tests/Security Features/CWE-094/CodeInjection.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["local", true, 0] \ No newline at end of file From a09eb9f4c570184a8d899529bb558c5ef89cb888 Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Mon, 11 Mar 2024 08:58:59 +0100 Subject: [PATCH 110/731] Update go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql index 2be09c6901b3..c6d2091cc536 100644 --- a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql +++ b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql @@ -1,7 +1,6 @@ /** * @name Slice memory allocation with excessive size value - * @description Allocating memory for slices with the built-in make function from user-controlled sources - * can lead to a denial of service. + * @description Allocating memory for slices with the built-in make function from user-controlled sources can lead to a denial of service. * @kind path-problem * @problem.severity warning * @security-severity 6.0 From 7a39f077d9531d48e121659e2cade47488896d50 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 11 Mar 2024 11:58:20 +0100 Subject: [PATCH 111/731] Data flow: Add `ConfigSig::accessPathLimit` --- .../dataflow/internal/ContentDataFlow.qll | 2 ++ .../modelgenerator/internal/CaptureModels.qll | 6 +++--- .../modelgenerator/internal/CaptureModels.qll | 6 +++--- .../ruby/dataflow/internal/DataFlowImpl1.qll | 2 ++ shared/dataflow/codeql/dataflow/DataFlow.qll | 10 ++++++++++ .../codeql/dataflow/internal/DataFlowImpl.qll | 19 ++++++++++++++++--- 6 files changed, 36 insertions(+), 9 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll index e9cd7373975a..76936549051a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll @@ -109,6 +109,8 @@ module Global { DataFlow::FlowFeature getAFeature() { result = ContentConfig::getAFeature() } + predicate accessPathLimit = ContentConfig::accessPathLimit/0; + // needed to record reads/stores inside summarized callables predicate includeHiddenNodes() { any() } } diff --git a/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 9c19e5b9cbbc..0a22178d108e 100644 --- a/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/csharp/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -72,11 +72,11 @@ string captureQualifierFlow(TargetApiSpecific api) { result = ModelPrinting::asValueModel(api, qualifierString(), "ReturnValue") } -private int accessPathLimit() { result = 2 } +private int accessPathLimit0() { result = 2 } private newtype TTaintState = - TTaintRead(int n) { n in [0 .. accessPathLimit()] } or - TTaintStore(int n) { n in [1 .. accessPathLimit()] } + TTaintRead(int n) { n in [0 .. accessPathLimit0()] } or + TTaintStore(int n) { n in [1 .. accessPathLimit0()] } abstract private class TaintState extends TTaintState { abstract string toString(); diff --git a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll index 9c19e5b9cbbc..0a22178d108e 100644 --- a/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll +++ b/java/ql/src/utils/modelgenerator/internal/CaptureModels.qll @@ -72,11 +72,11 @@ string captureQualifierFlow(TargetApiSpecific api) { result = ModelPrinting::asValueModel(api, qualifierString(), "ReturnValue") } -private int accessPathLimit() { result = 2 } +private int accessPathLimit0() { result = 2 } private newtype TTaintState = - TTaintRead(int n) { n in [0 .. accessPathLimit()] } or - TTaintStore(int n) { n in [1 .. accessPathLimit()] } + TTaintRead(int n) { n in [0 .. accessPathLimit0()] } or + TTaintStore(int n) { n in [1 .. accessPathLimit0()] } abstract private class TaintState extends TTaintState { abstract string toString(); diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 6a18c1666134..6b14d3d2e06a 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -376,6 +376,9 @@ module Configs { */ default int fieldFlowBranchLimit() { result = 2 } + /** Gets the access path limit. */ + default int accessPathLimit() { result = Lang::accessPathLimit() } + /** * Gets a data flow configuration feature to add restrictions to the set of * valid flow paths. @@ -495,6 +498,9 @@ module Configs { */ default int fieldFlowBranchLimit() { result = 2 } + /** Gets the access path limit. */ + default int accessPathLimit() { result = Lang::accessPathLimit() } + /** * Gets a data flow configuration feature to add restrictions to the set of * valid flow paths. @@ -583,6 +589,8 @@ module DataFlowMake { private module C implements FullStateConfigSig { import DefaultState import Config + + predicate accessPathLimit = Config::accessPathLimit/0; } import Impl @@ -599,6 +607,8 @@ module DataFlowMake { module GlobalWithState implements GlobalFlowSig { private module C implements FullStateConfigSig { import Config + + predicate accessPathLimit = Config::accessPathLimit/0; } import Impl diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index d555b281710c..2b43cbdd4745 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -93,6 +93,9 @@ module MakeImpl { */ int fieldFlowBranchLimit(); + /** Gets the access path limit. */ + int accessPathLimit(); + /** * Gets a data flow configuration feature to add restrictions to the set of * valid flow paths. @@ -1328,6 +1331,13 @@ module MakeImpl { fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } + bindingset[c, t, tail] + additional Ap apCons(Content c, Typ t, Ap tail) { + result = Param::apCons(c, t, tail) and + Config::accessPathLimit() > 0 and + if tail instanceof ApNil then any() else Config::accessPathLimit() > 1 + } + pragma[nomagic] private predicate fwdFlow0( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, @@ -3026,11 +3036,11 @@ module MakeImpl { } or TConsCons(Content c1, DataFlowType t, Content c2, int len) { Stage4::consCand(c1, t, TFrontHead(c2)) and - len in [2 .. accessPathLimit()] and + len in [2 .. Config::accessPathLimit()] and not expensiveLen2unfolding(c1) } or TCons1(Content c, int len) { - len in [1 .. accessPathLimit()] and + len in [1 .. Config::accessPathLimit()] and expensiveLen2unfolding(c) } @@ -3189,7 +3199,10 @@ module MakeImpl { Typ getTyp(DataFlowType t) { result = t } bindingset[c, t, tail] - Ap apCons(Content c, Typ t, Ap tail) { result.isCons(c, t, tail) } + Ap apCons(Content c, Typ t, Ap tail) { + result.isCons(c, t, tail) and + Config::accessPathLimit() > tail.len() + } class ApHeadContent = Content; From da66281fef261b93c2ca667d5c4a66effc53cbaf Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 11 Mar 2024 11:59:15 +0100 Subject: [PATCH 112/731] Sync files --- cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll | 2 ++ cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll | 2 ++ cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll | 2 ++ cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll | 2 ++ .../lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll | 2 ++ .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll | 2 ++ .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll | 2 ++ .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll | 2 ++ .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll | 2 ++ .../lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll | 2 ++ .../lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll | 2 ++ .../lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll | 2 ++ .../lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll | 2 ++ .../lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll | 2 ++ go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll | 2 ++ go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll | 2 ++ .../ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll | 2 ++ .../ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll | 2 ++ .../ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll | 2 ++ .../ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll | 2 ++ .../ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll | 2 ++ .../ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll | 2 ++ .../lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll | 2 ++ .../lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll | 2 ++ .../lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll | 2 ++ .../lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll | 2 ++ ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll | 2 ++ swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll | 2 ++ 28 files changed, 56 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl2.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl3.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl4.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplLocal.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl2.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl3.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl4.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl2.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl3.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl4.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl5.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl2.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl2.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl3.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl4.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl5.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl6.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl2.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl3.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl4.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl2.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll index 2bbc565daa6b..9b92f961e6f1 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll @@ -285,6 +285,8 @@ deprecated private module Config implements FullStateConfigSig { int fieldFlowBranchLimit() { result = min(any(Configuration config).fieldFlowBranchLimit()) } + int accessPathLimit() { result = 5 } + FlowFeature getAFeature() { result = any(Configuration config).getAFeature() } predicate sourceGrouping(Node source, string sourceGroup) { From f571ebdaf4dcef776d521a30dd13f34b422f0135 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 11 Mar 2024 14:43:14 +0100 Subject: [PATCH 113/731] C#: Overall change note for C# 12 / .NET 8 support. --- csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md diff --git a/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md b/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md new file mode 100644 index 000000000000..7111e8966d68 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Support for C# 12 / .NET8. From 7b0df57d7a485d71cdb5f060dccc2388590674bf Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 11 Mar 2024 13:56:22 +0000 Subject: [PATCH 114/731] C++: Remove the two configurations that depend on flow state to speed up performance on ChakraCore. --- .../src/Security/CWE/CWE-843/TypeConfusion.ql | 150 +++++------------- .../CWE/CWE-843/TypeConfusion.expected | 28 ++++ 2 files changed, 68 insertions(+), 110 deletions(-) diff --git a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql index 530d8804ebdf..18a331f9c321 100644 --- a/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql +++ b/cpp/ql/src/Security/CWE/CWE-843/TypeConfusion.ql @@ -12,7 +12,7 @@ import cpp import semmle.code.cpp.dataflow.new.DataFlow -import BadFlow::PathGraph +import Flow::PathGraph /** * Holds if `f` is a field located at byte offset `offset` in `c`. @@ -179,23 +179,28 @@ class UnsafeCast extends Cast { } /** - * Holds if `source` is an allocation that allocates a value of type `state`. + * Holds if `source` is an allocation that allocates a value of type `type`. */ -predicate isSourceImpl(DataFlow::Node source, Class state) { - state = source.asExpr().(AllocationExpr).getAllocatedElementType().stripType() and +predicate isSourceImpl(DataFlow::Node source, Class type) { + exists(AllocationExpr alloc | + alloc = source.asExpr() and + type = alloc.getAllocatedElementType().stripType() and + not exists( + alloc + .(NewOrNewArrayExpr) + .getAllocator() + .(OperatorNewAllocationFunction) + .getPlacementArgument() + ) + ) and exists(TypeDeclarationEntry tde | - tde = state.getDefinition() and + tde = type.getDefinition() and not tde.isFromUninstantiatedTemplate(_) ) } -/** - * The `RelevantStateConfig` configuration is used to find the set of - * states for the `BadConfig` and `GoodConfig`. The flow computed by - * `RelevantStateConfig` is used to implement the `relevantState` predicate - * which is used to avoid a cartesian product in `isSinkImpl`. - */ -module RelevantStateConfig implements DataFlow::ConfigSig { +/** A configuration describing flow from an allocation to a potentially unsafe cast. */ +module Config implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { isSourceImpl(source, _) } predicate isBarrier(DataFlow::Node node) { @@ -212,122 +217,47 @@ module RelevantStateConfig implements DataFlow::ConfigSig { ) } - predicate isSink(DataFlow::Node sink) { - exists(UnsafeCast cast | sink.asExpr() = cast.getUnconverted()) - } + predicate isSink(DataFlow::Node sink) { sink.asExpr() = any(UnsafeCast cast).getUnconverted() } int fieldFlowBranchLimit() { result = 0 } } -module RelevantStateFlow = DataFlow::Global; +module Flow = DataFlow::Global; -predicate relevantState(DataFlow::Node source, DataFlow::Node sink, Class state) { - RelevantStateFlow::flow(source, sink) and - isSourceImpl(source, state) +predicate relevantType(DataFlow::Node sink, Class allocatedType) { + exists(DataFlow::Node source | + Flow::flow(source, sink) and + isSourceImpl(source, allocatedType) + ) } -predicate isSinkImpl(DataFlow::Node sink, Class state, Type convertedType, boolean compatible) { +predicate isSinkImpl( + DataFlow::Node sink, Class allocatedType, Type convertedType, boolean compatible +) { exists(UnsafeCast cast | - relevantState(_, sink, state) and + relevantType(sink, allocatedType) and sink.asExpr() = cast.getUnconverted() and convertedType = cast.getConvertedType() | - if cast.compatibleWith(state) then compatible = true else compatible = false + if cast.compatibleWith(allocatedType) then compatible = true else compatible = false ) } -/** - * The `BadConfig` configuration tracks flow from an allocation to an - * incompatible cast. - * - * We use `FlowState` to track the type of the source, and compare the - * flow state to the target of the cast in the `isSink` definition. - */ -module BadConfig implements DataFlow::StateConfigSig { - class FlowState extends Class { - FlowState() { relevantState(_, _, this) } - } - - predicate isSource(DataFlow::Node source, FlowState state) { relevantState(source, _, state) } - - predicate isBarrier(DataFlow::Node node) { RelevantStateConfig::isBarrier(node) } - - predicate isSink(DataFlow::Node sink, FlowState state) { isSinkImpl(sink, state, _, false) } - - predicate isBarrierOut(DataFlow::Node sink, FlowState state) { isSink(sink, state) } - - int fieldFlowBranchLimit() { result = 0 } -} - -module BadFlow = DataFlow::GlobalWithState; - -/** - * The `GoodConfig` configuration tracks flow from an allocation to a - * compatible cast. - * - * We use `GoodConfig` to reduce the number of FPs from infeasible paths. - * For example, consider the following example: - * ```cpp - * struct Animal { virtual ~Animal(); }; - * - * struct Cat : public Animal { - * Cat(); - * ~Cat(); - * }; - * - * struct Dog : public Animal { - * Dog(); - * ~Dog(); - * }; - * - * void test9(bool b) { - * Animal* a; - * if(b) { - * a = new Cat; - * } else { - * a = new Dog; - * } - * if(b) { - * Cat* d = static_cast(a); - * } - * } - * ``` - * Here, `BadConfig` finds a flow from `a = new Dog` to `static_cast(a)`. - * However, that path is never realized in an actual execution path. So in - * order to remove this result we exclude results where there exists an - * allocation of a type that's compatible with `static_cast(a)`. - * - * We use `FlowState` to track the type of the source, and compare the - * flow state to the target of the cast in the `isSink` definition. - */ -module GoodConfig implements DataFlow::StateConfigSig { - class FlowState = BadConfig::FlowState; - - predicate isSource(DataFlow::Node source, FlowState state) { BadConfig::isSource(source, state) } - - predicate isBarrier(DataFlow::Node node) { BadConfig::isBarrier(node) } - - predicate isSink(DataFlow::Node sink, FlowState state) { - isSinkImpl(sink, state, _, true) and - BadFlow::flowTo(sink) - } - - int fieldFlowBranchLimit() { result = 0 } -} - -module GoodFlow = DataFlow::GlobalWithState; - from - BadFlow::PathNode source, BadFlow::PathNode sink, Type sourceType, Type sinkType, + Flow::PathNode source, Flow::PathNode sink, Type badSourceType, Type sinkType, DataFlow::Node sinkNode where - BadFlow::flowPath(source, sink) and + Flow::flowPath(source, sink) and sinkNode = sink.getNode() and + isSourceImpl(source.getNode(), badSourceType) and + isSinkImpl(sinkNode, badSourceType, sinkType, false) and // If there is any flow that would result in a valid cast then we don't // report an alert here. This reduces the number of FPs from infeasible paths // significantly. - not GoodFlow::flowTo(sinkNode) and - isSourceImpl(source.getNode(), sourceType) and - isSinkImpl(sinkNode, _, sinkType, false) -select sinkNode, source, sink, "Conversion from $@ to $@ is invalid.", sourceType, - sourceType.toString(), sinkType, sinkType.toString() + not exists(DataFlow::Node goodSource, Type goodSourceType | + isSourceImpl(goodSource, goodSourceType) and + isSinkImpl(sinkNode, goodSourceType, sinkType, true) and + Flow::flow(goodSource, sinkNode) + ) +select sinkNode, source, sink, "Conversion from $@ to $@ is invalid.", badSourceType, + badSourceType.toString(), sinkType, sinkType.toString() diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected index 45355a86a48b..4cd377e9f5e8 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected @@ -1,34 +1,62 @@ edges +| test.cpp:17:13:17:18 | new | test.cpp:18:21:18:47 | p | provenance | | +| test.cpp:22:13:22:26 | new | test.cpp:23:12:23:30 | p | provenance | | | test.cpp:27:13:27:18 | new | test.cpp:28:25:28:55 | p | provenance | | | test.cpp:32:13:32:30 | new | test.cpp:33:12:33:30 | p | provenance | | +| test.cpp:47:21:47:36 | new | test.cpp:48:22:48:55 | p | provenance | | | test.cpp:66:15:66:21 | new | test.cpp:67:12:67:31 | a | provenance | | +| test.cpp:76:15:76:21 | new | test.cpp:77:12:77:31 | a | provenance | | +| test.cpp:83:9:83:15 | new | test.cpp:88:14:88:33 | a | provenance | | | test.cpp:85:9:85:15 | new | test.cpp:88:14:88:33 | a | provenance | | +| test.cpp:115:12:115:17 | new | test.cpp:116:20:116:51 | s2 | provenance | | | test.cpp:127:12:127:17 | new | test.cpp:128:24:128:59 | s2 | provenance | | +| test.cpp:140:12:140:17 | new | test.cpp:141:23:141:57 | s1 | provenance | | | test.cpp:143:14:143:19 | new | test.cpp:145:28:145:68 | s1_2 | provenance | | | test.cpp:153:9:153:15 | new | test.cpp:159:14:159:33 | a | provenance | | +| test.cpp:166:9:166:15 | new | test.cpp:171:14:171:33 | a | provenance | | | test.cpp:168:9:168:15 | new | test.cpp:171:14:171:33 | a | provenance | | +| test.cpp:179:15:179:24 | new | test.cpp:181:15:181:25 | u64 | provenance | | | test.cpp:187:15:187:24 | new | test.cpp:189:25:189:45 | u64 | provenance | | +| test.cpp:207:14:207:26 | new | test.cpp:209:17:209:28 | si | provenance | | | test.cpp:217:13:217:18 | new | test.cpp:218:30:218:65 | p | provenance | | | test.cpp:226:13:226:18 | new | test.cpp:227:29:227:63 | p | provenance | | nodes +| test.cpp:17:13:17:18 | new | semmle.label | new | +| test.cpp:18:21:18:47 | p | semmle.label | p | +| test.cpp:22:13:22:26 | new | semmle.label | new | +| test.cpp:23:12:23:30 | p | semmle.label | p | | test.cpp:27:13:27:18 | new | semmle.label | new | | test.cpp:28:25:28:55 | p | semmle.label | p | | test.cpp:32:13:32:30 | new | semmle.label | new | | test.cpp:33:12:33:30 | p | semmle.label | p | +| test.cpp:47:21:47:36 | new | semmle.label | new | +| test.cpp:48:22:48:55 | p | semmle.label | p | | test.cpp:66:15:66:21 | new | semmle.label | new | | test.cpp:67:12:67:31 | a | semmle.label | a | +| test.cpp:76:15:76:21 | new | semmle.label | new | +| test.cpp:77:12:77:31 | a | semmle.label | a | +| test.cpp:83:9:83:15 | new | semmle.label | new | | test.cpp:85:9:85:15 | new | semmle.label | new | | test.cpp:88:14:88:33 | a | semmle.label | a | +| test.cpp:115:12:115:17 | new | semmle.label | new | +| test.cpp:116:20:116:51 | s2 | semmle.label | s2 | | test.cpp:127:12:127:17 | new | semmle.label | new | | test.cpp:128:24:128:59 | s2 | semmle.label | s2 | +| test.cpp:140:12:140:17 | new | semmle.label | new | +| test.cpp:141:23:141:57 | s1 | semmle.label | s1 | | test.cpp:143:14:143:19 | new | semmle.label | new | | test.cpp:145:28:145:68 | s1_2 | semmle.label | s1_2 | | test.cpp:153:9:153:15 | new | semmle.label | new | | test.cpp:159:14:159:33 | a | semmle.label | a | +| test.cpp:166:9:166:15 | new | semmle.label | new | | test.cpp:168:9:168:15 | new | semmle.label | new | | test.cpp:171:14:171:33 | a | semmle.label | a | +| test.cpp:179:15:179:24 | new | semmle.label | new | +| test.cpp:181:15:181:25 | u64 | semmle.label | u64 | | test.cpp:187:15:187:24 | new | semmle.label | new | | test.cpp:189:25:189:45 | u64 | semmle.label | u64 | +| test.cpp:207:14:207:26 | new | semmle.label | new | +| test.cpp:209:17:209:28 | si | semmle.label | si | | test.cpp:217:13:217:18 | new | semmle.label | new | | test.cpp:218:30:218:65 | p | semmle.label | p | | test.cpp:226:13:226:18 | new | semmle.label | new | From 61dbe2685867984fb009bf89c211ecbea5b7c4bc Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Mon, 11 Mar 2024 10:31:51 -0400 Subject: [PATCH 115/731] Add sinks for `android.os.ParcelFileDescriptor` --- java/ql/lib/ext/android.os.model.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java/ql/lib/ext/android.os.model.yml b/java/ql/lib/ext/android.os.model.yml index fc4822dd59f9..80271eac954f 100644 --- a/java/ql/lib/ext/android.os.model.yml +++ b/java/ql/lib/ext/android.os.model.yml @@ -132,3 +132,8 @@ extensions: - ["android.os", "Parcel", False, "readTypedList", "", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["android.os", "Parcel", False, "readTypedObject", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["android.os", "Parcel", False, "readValue", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["android.os", "ParcelFileDescriptor", False, "open", "", "", "Argument[0]", "path-injection", "manual"] \ No newline at end of file From 76aeee2820fc625d1ba45ddf70f03ac548986338 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Mon, 11 Mar 2024 10:34:15 -0400 Subject: [PATCH 116/731] Change note --- .../2024-03-11-add-parcelfiledescriptor-open-model.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md diff --git a/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md b/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md new file mode 100644 index 000000000000..31f76712828e --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. From ff2d78d2c8bc15bd36bf24ae204b444ba9feb30d Mon Sep 17 00:00:00 2001 From: Tony Torralba Date: Mon, 11 Mar 2024 15:53:40 +0100 Subject: [PATCH 117/731] Update go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql --- go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql index c6d2091cc536..eabfa3333ec6 100644 --- a/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql +++ b/go/ql/src/Security/CWE-770/UncontrolledAllocationSize.ql @@ -2,8 +2,8 @@ * @name Slice memory allocation with excessive size value * @description Allocating memory for slices with the built-in make function from user-controlled sources can lead to a denial of service. * @kind path-problem - * @problem.severity warning - * @security-severity 6.0 + * @problem.severity error + * @security-severity 7.5 * @precision high * @id go/uncontrolled-allocation-size * @tags security From d73f43477fec68116e8401ae54c1b1648a4562e3 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen Date: Mon, 11 Mar 2024 16:32:19 +0100 Subject: [PATCH 118/731] update ts to released version 54 --- javascript/extractor/lib/typescript/package-lock.json | 10 +++++----- javascript/extractor/lib/typescript/package.json | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/javascript/extractor/lib/typescript/package-lock.json b/javascript/extractor/lib/typescript/package-lock.json index af309c3b4511..604db5f3e37c 100644 --- a/javascript/extractor/lib/typescript/package-lock.json +++ b/javascript/extractor/lib/typescript/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "typescript-parser-wrapper", "dependencies": { - "typescript": "5.4.1-rc" + "typescript": "5.4" }, "devDependencies": { "@types/node": "18.15.3" @@ -20,9 +20,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.4.1-rc", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.1-rc.tgz", - "integrity": "sha512-gInURzaO0bbfzfQAc3mfcHxh8qev+No4QOFUZHajo9vBgOLaljELJ3wuzyoGo/zHIzMSezdhtrsRdqL6E9SvNA==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", + "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json index 6a315fed2927..8f6a1549a601 100644 --- a/javascript/extractor/lib/typescript/package.json +++ b/javascript/extractor/lib/typescript/package.json @@ -2,7 +2,7 @@ "name": "typescript-parser-wrapper", "private": true, "dependencies": { - "typescript": "5.4.1-rc" + "typescript": "5.4" }, "scripts": { "build": "tsc --project tsconfig.json", @@ -14,4 +14,4 @@ "devDependencies": { "@types/node": "18.15.3" } -} \ No newline at end of file +} From c325ff8a237d6c5fa860a1eed288ee508b5c46bf Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Mon, 11 Mar 2024 16:38:33 +0000 Subject: [PATCH 119/731] Mark lines of code queries as telemetry queries The new file coverage metrics are available in all supported GHES versions. This PR tags lines of code queries as telemetry queries. Lines of code information will still be available in the SARIF file, but it will no longer be displayed in the logging output of the CLI. The one exception is the metric queries for Java/Kotlin that provides separate lines of code information for Java and Kotlin. I've kept these since separate file coverage information for languages like Java and Kotlin is only available for GHES 3.12 and later. --- cpp/ql/src/Summary/LinesOfUserCode.ql | 1 + csharp/ql/src/Metrics/Summaries/LinesOfCode.ql | 1 + go/ql/src/Summary/LinesOfCode.ql | 1 + java/ql/src/Metrics/Summaries/LinesOfCode.ql | 1 + javascript/ql/src/Summary/LinesOfUserCode.ql | 1 + python/ql/src/Summary/LinesOfUserCode.ql | 1 + ql/ql/src/queries/summary/LinesOfCode.ql | 1 + ql/ql/src/queries/summary/LinesOfUserCode.ql | 1 + ruby/ql/src/queries/summary/LinesOfCode.ql | 1 + ruby/ql/src/queries/summary/LinesOfUserCode.ql | 1 + swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql | 1 + 11 files changed, 11 insertions(+) diff --git a/cpp/ql/src/Summary/LinesOfUserCode.ql b/cpp/ql/src/Summary/LinesOfUserCode.ql index 67d3aa6a8e05..2c198a1488dd 100644 --- a/cpp/ql/src/Summary/LinesOfUserCode.ql +++ b/cpp/ql/src/Summary/LinesOfUserCode.ql @@ -4,6 +4,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry * @id cpp/summary/lines-of-user-code */ diff --git a/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql b/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql index 2115cd60d2be..4c6eb55e5abd 100644 --- a/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql +++ b/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql @@ -5,6 +5,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry */ import csharp diff --git a/go/ql/src/Summary/LinesOfCode.ql b/go/ql/src/Summary/LinesOfCode.ql index 383d7c5021ee..04864e5c4a01 100644 --- a/go/ql/src/Summary/LinesOfCode.ql +++ b/go/ql/src/Summary/LinesOfCode.ql @@ -5,6 +5,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry */ import go diff --git a/java/ql/src/Metrics/Summaries/LinesOfCode.ql b/java/ql/src/Metrics/Summaries/LinesOfCode.ql index 769a3476ed21..1ead46f1b200 100644 --- a/java/ql/src/Metrics/Summaries/LinesOfCode.ql +++ b/java/ql/src/Metrics/Summaries/LinesOfCode.ql @@ -7,6 +7,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry */ import java diff --git a/javascript/ql/src/Summary/LinesOfUserCode.ql b/javascript/ql/src/Summary/LinesOfUserCode.ql index 61ad13519cb7..83fbb9b32da7 100644 --- a/javascript/ql/src/Summary/LinesOfUserCode.ql +++ b/javascript/ql/src/Summary/LinesOfUserCode.ql @@ -6,6 +6,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry * @id js/summary/lines-of-user-code */ diff --git a/python/ql/src/Summary/LinesOfUserCode.ql b/python/ql/src/Summary/LinesOfUserCode.ql index 528ae948cd79..a30ba7afd199 100644 --- a/python/ql/src/Summary/LinesOfUserCode.ql +++ b/python/ql/src/Summary/LinesOfUserCode.ql @@ -8,6 +8,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry * @id py/summary/lines-of-user-code */ diff --git a/ql/ql/src/queries/summary/LinesOfCode.ql b/ql/ql/src/queries/summary/LinesOfCode.ql index cb5ef6174769..c0dbe8319670 100644 --- a/ql/ql/src/queries/summary/LinesOfCode.ql +++ b/ql/ql/src/queries/summary/LinesOfCode.ql @@ -8,6 +8,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry */ import ql diff --git a/ql/ql/src/queries/summary/LinesOfUserCode.ql b/ql/ql/src/queries/summary/LinesOfUserCode.ql index 1701af1a5c9c..8f49ce27d2fc 100644 --- a/ql/ql/src/queries/summary/LinesOfUserCode.ql +++ b/ql/ql/src/queries/summary/LinesOfUserCode.ql @@ -6,6 +6,7 @@ * query counts the lines of code, excluding whitespace or comments. * @kind metric * @tags summary + * telemetry */ import ql diff --git a/ruby/ql/src/queries/summary/LinesOfCode.ql b/ruby/ql/src/queries/summary/LinesOfCode.ql index 74994d773470..34e7438bab1e 100644 --- a/ruby/ql/src/queries/summary/LinesOfCode.ql +++ b/ruby/ql/src/queries/summary/LinesOfCode.ql @@ -8,6 +8,7 @@ * @kind metric * @tags summary * lines-of-code + * telemetry */ import codeql.ruby.AST diff --git a/ruby/ql/src/queries/summary/LinesOfUserCode.ql b/ruby/ql/src/queries/summary/LinesOfUserCode.ql index d8025088ceb9..121124862a1f 100644 --- a/ruby/ql/src/queries/summary/LinesOfUserCode.ql +++ b/ruby/ql/src/queries/summary/LinesOfUserCode.ql @@ -6,6 +6,7 @@ * query counts the lines of code, excluding whitespace or comments. * @kind metric * @tags summary + * telemetry */ import codeql.ruby.AST diff --git a/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql b/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql index 373b6c4bd0f3..9fc406808528 100644 --- a/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql +++ b/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql @@ -4,6 +4,7 @@ * @kind metric * @id swift/diagnostics/successfully-extracted-lines * @tags summary + * telemetry */ import swift From bc745dfd5eea4e87a3d29bc745bea7cb815ba6b2 Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Mon, 11 Mar 2024 13:55:34 -0400 Subject: [PATCH 120/731] Windows registry sources --- csharp/ql/lib/ext/Microsoft.Win32.model.yml | 9 +++ .../security/dataflow/flowsources/Local.qll | 13 +++++ .../local/registry/Registry.expected | 8 +++ .../local/registry/Registry.ext.yml | 7 +++ .../flowsources/local/registry/Registry.ql | 6 ++ .../flowsources/local/registry/UseRegistry.cs | 55 +++++++++++++++++++ .../flowsources/local/registry/options | 3 + shared/mad/codeql/mad/ModelValidation.qll | 2 +- .../ext/threat-model-grouping.model.yml | 1 + 9 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 csharp/ql/lib/ext/Microsoft.Win32.model.yml create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.expected create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ext.yml create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ql create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/local/registry/UseRegistry.cs create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/local/registry/options diff --git a/csharp/ql/lib/ext/Microsoft.Win32.model.yml b/csharp/ql/lib/ext/Microsoft.Win32.model.yml new file mode 100644 index 000000000000..c7e439f2910a --- /dev/null +++ b/csharp/ql/lib/ext/Microsoft.Win32.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/csharp-all + extensible: sourceModel + data: + - ["Microsoft.Win32", "Registry", False, "GetValue", "(System.String,System.String,System.Object)", "", "ReturnValue", "windows-registry", "manual"] + - ["Microsoft.Win32", "RegistryKey", False, "GetSubKeyNames", "()", "", "ReturnValue", "windows-registry", "manual"] + - ["Microsoft.Win32", "RegistryKey", False, "GetValue", "", "", "ReturnValue", "windows-registry", "manual"] + - ["Microsoft.Win32", "RegistryKey", False, "GetValueNames", "()", "", "ReturnValue", "windows-registry", "manual"] \ No newline at end of file diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll index 9f3f398e5b1a..7ad656e11d33 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll @@ -55,3 +55,16 @@ abstract class CommandLineArgumentSource extends LocalFlowSource { private class MainMethodArgumentSource extends CommandLineArgumentSource { MainMethodArgumentSource() { this.asParameter() = any(MainMethod mainMethod).getAParameter() } } + +/** + * A data flow source that represents the access of a value from the Windows registry. + */ +abstract class WindowsRegistrySource extends LocalFlowSource { + override string getThreatModel() { result = "windows-registry" } + + override string getSourceType() { result = "a value from the Windows registry" } +} + +private class ExternalWindowsRegistrySource extends WindowsRegistrySource { + ExternalWindowsRegistrySource() { sourceNode(this, "windows-registry") } +} diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.expected b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.expected new file mode 100644 index 000000000000..9a5b8ef2c0ed --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.expected @@ -0,0 +1,8 @@ +| UseRegistry.cs:10:36:10:58 | call to method GetValue | windows-registry | +| UseRegistry.cs:16:36:16:58 | call to method GetValue | windows-registry | +| UseRegistry.cs:22:36:22:58 | call to method GetValue | windows-registry | +| UseRegistry.cs:28:36:28:58 | call to method GetValue | windows-registry | +| UseRegistry.cs:34:36:34:58 | call to method GetValue | windows-registry | +| UseRegistry.cs:40:36:40:58 | call to method GetValue | windows-registry | +| UseRegistry.cs:46:35:46:53 | call to method GetValueNames | windows-registry | +| UseRegistry.cs:52:36:52:55 | call to method GetSubKeyNames | windows-registry | diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ext.yml b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ext.yml new file mode 100644 index 000000000000..71007f3394c6 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["windows-registry", true, 0] \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ql b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ql new file mode 100644 index 000000000000..9e2934e9e19a --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/Registry.ql @@ -0,0 +1,6 @@ +import csharp +import semmle.code.csharp.security.dataflow.flowsources.FlowSources + +from DataFlow::Node source +where source instanceof ThreatModelFlowSource +select source, source.(SourceNode).getThreatModel() diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/UseRegistry.cs b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/UseRegistry.cs new file mode 100644 index 000000000000..e5698127be41 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/UseRegistry.cs @@ -0,0 +1,55 @@ +using Microsoft.Win32; + +namespace Test +{ + class UseRegistry + { + public static void GetRegistryValue(string keyName, string valueName) + { + RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName); + string value = (string)key.GetValue(valueName); + } + + public static void GetRegistryValue2(string keyName, string valueName) + { + RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName); + string value = (string)key.GetValue(valueName); + } + + public static void GetRegistryValue3(string keyName, string valueName) + { + RegistryKey key = Registry.ClassesRoot.OpenSubKey(keyName); + string value = (string)key.GetValue(valueName); + } + + public static void GetRegistryValue4(string keyName, string valueName) + { + RegistryKey key = Registry.Users.OpenSubKey(keyName); + string value = (string)key.GetValue(valueName); + } + + public static void GetRegistryValue5(string keyName, string valueName) + { + RegistryKey key = Registry.CurrentConfig.OpenSubKey(keyName); + string value = (string)key.GetValue(valueName); + } + + public static void GetRegistryValue6(string keyName, string valueName) + { + RegistryKey key = Registry.PerformanceData.OpenSubKey(keyName); + string value = (string)key.GetValue(valueName); + } + + public static void GetRegistryValueNames(string keyName, string valueName) + { + RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName); + string[] valueNames = key.GetValueNames(); + } + + public static void GetRegistrySubKeyNames(string keyName, string valueName) + { + RegistryKey key = Registry.LocalMachine.OpenSubKey(keyName); + string[] subKeyNames = key.GetSubKeyNames(); + } + } +} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/options b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/options new file mode 100644 index 000000000000..f28b8af0ae44 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/local/registry/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs diff --git a/shared/mad/codeql/mad/ModelValidation.qll b/shared/mad/codeql/mad/ModelValidation.qll index 2f990af4e0ff..bb3b8c174b97 100644 --- a/shared/mad/codeql/mad/ModelValidation.qll +++ b/shared/mad/codeql/mad/ModelValidation.qll @@ -120,7 +120,7 @@ module KindValidation { // Java "android-external-storage-dir", "contentprovider", // C# - "file-write", + "file-write", "windows-registry", // JavaScript "database-access-result" ] diff --git a/shared/threat-models/ext/threat-model-grouping.model.yml b/shared/threat-models/ext/threat-model-grouping.model.yml index 53107c1e32bc..7cc650d33415 100644 --- a/shared/threat-models/ext/threat-model-grouping.model.yml +++ b/shared/threat-models/ext/threat-model-grouping.model.yml @@ -16,6 +16,7 @@ extensions: - ["commandargs", "local"] - ["environment", "local"] - ["file", "local"] + - ["windows-registry", "local"] # Android threat models - ["android-external-storage-dir", "android"] From 32e532ff3c6ed015996f760084b87023d19d4402 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 11 Mar 2024 18:42:42 +0000 Subject: [PATCH 121/731] C++: Some cleanup to avoid conflating the case of a function returning something as a return value, and a function updating one of its arguments. --- .../Likely Bugs/Format/NonConstantFormat.ql | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index 0d1cc7bcf396..72ce35906777 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -37,6 +37,11 @@ class UncalledFunction extends Function { } } +predicate dataFlowOrTaintFlowFunction(Function func, FunctionOutput output) { + func.(DataFlowFunction).hasDataFlow(_, output) or + func.(TaintFunction).hasTaintFlow(_, output) +} + /** * Holds if `node` is a non-constant source of data flow for non-const format string detection. * This is defined as either: @@ -81,24 +86,30 @@ predicate isNonConst(DataFlow::Node node) { // i.e., functions that with unknown bodies and are not known to define the output through its input // are considered as possible non-const sources // The function's output must also not be const to be considered a non-const source - exists(Function func, CallInstruction call | - // NOTE: could use `Call` getAnArgument() instead of `CallInstruction` but requires two - // variables representing the same call in ordoer to use `callOutput` below. - exists(Expr arg | - call.getPositionalArgumentOperand(_).getDef().getUnconvertedResultExpression() = arg and - arg = node.asDefiningArgument() + ( + // Case 1: It's a known dataflow or taintflow function with flow to the return value + exists(Function func, CallInstruction call | + // NOTE: could use `Call` getAnArgument() instead of `CallInstruction` but requires two + // variables representing the same call in ordoer to use `callOutput` below. + call.getUnconvertedResultExpression() = node.asIndirectExpr() and + func = call.getStaticCallTarget() and + not exists(FunctionOutput output | + dataFlowOrTaintFlowFunction(func, output) and + output.isReturnValueDeref() and + node = callOutput(call, output) + ) ) or - call.getUnconvertedResultExpression() = node.asIndirectExpr() - | - func = call.getStaticCallTarget() and - not exists(FunctionOutput output | - // NOTE: we must include dataflow and taintflow. e.g., including only dataflow we will find sprintf - // variant function's output are now possible non-const sources - pragma[only_bind_out](func).(DataFlowFunction).hasDataFlow(_, output) or - pragma[only_bind_out](func).(TaintFunction).hasTaintFlow(_, output) - | - node = callOutput(call, output) + // Case 1: It's a known dataflow or taintflow function with flow to an output parameter + exists(Function func, int i, CallInstruction call | + call.getPositionalArgumentOperand(i).getDef().getUnconvertedResultExpression() = + node.asDefiningArgument() and + func = call.getStaticCallTarget() and + not exists(FunctionOutput output | + dataFlowOrTaintFlowFunction(func, output) and + output.isParameterDeref(i) and + node = callOutput(call, output) + ) ) ) and not exists(Call c | From f97b6e2848a1af385534d341e56c770c8453cfde Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 11 Mar 2024 18:44:34 +0000 Subject: [PATCH 122/731] C++: Stop conflating pointers and indirections in the query. --- .../Likely Bugs/Format/NonConstantFormat.ql | 10 +++--- .../NonConstantFormat.expected | 33 +++++-------------- .../Format/NonConstantFormat/test.cpp | 4 +-- .../semmle/consts/NonConstantFormat.expected | 8 ----- 4 files changed, 17 insertions(+), 38 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index 72ce35906777..b02986e0b68d 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -74,7 +74,9 @@ predicate isNonConst(DataFlow::Node node) { // Parameters of uncalled functions that aren't const exists(UncalledFunction f, Parameter p | f.getAParameter() = p and - p = node.asParameter() and + // We pick the indirection of the parameter since this query is focused + // on strings. + p = node.asParameter(1) and // Ignore main's argv parameter as it is already considered a `FlowSource` // not ignoring it will result in path redundancies (f.getName() = "main" implies p != f.getParameter(1)) @@ -116,7 +118,7 @@ predicate isNonConst(DataFlow::Node node) { c.getTarget().hasDefinition() and if node instanceof DataFlow::DefinitionByReferenceNode then c.getAnArgument() = node.asDefiningArgument() - else c = [node.asExpr(), node.asIndirectExpr()] + else c = node.asIndirectExpr() ) } @@ -125,7 +127,7 @@ predicate isNonConst(DataFlow::Node node) { * `FormattingFunctionCall`. */ predicate isSinkImpl(DataFlow::Node sink, Expr formatString) { - [sink.asExpr(), sink.asIndirectExpr()] = formatString and + sink.asIndirectExpr() = formatString and exists(FormattingFunctionCall fc | formatString = fc.getArgument(fc.getFormatParameterIndex())) } @@ -136,7 +138,7 @@ module NonConstFlowConfig implements DataFlow::ConfigSig { predicate isBarrier(DataFlow::Node node) { // Ignore tracing non-const through array indices - exists(ArrayExpr a | a.getArrayOffset() = node.asExpr()) + exists(ArrayExpr a | a.getArrayOffset() = node.asIndirectExpr()) } } diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected index 2539c728d878..c3c94158da8a 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected @@ -8,15 +8,10 @@ edges | nested.cpp:35:19:35:21 | *fmt | nested.cpp:27:32:27:34 | *fmt | provenance | | | nested.cpp:42:24:42:34 | *call to ext_fmt_str | nested.cpp:34:37:34:39 | *fmt | provenance | | | nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | provenance | | -| test.cpp:27:39:27:39 | n | test.cpp:27:13:27:24 | **make_message | provenance | | -| test.cpp:46:14:46:17 | argc | test.cpp:51:23:51:30 | ... - ... | provenance | | | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | provenance | | -| test.cpp:51:23:51:30 | ... - ... | test.cpp:27:39:27:39 | n | provenance | | -| test.cpp:51:23:51:30 | ... - ... | test.cpp:51:10:51:21 | *call to make_message | provenance | | -| test.cpp:155:27:155:30 | data | test.cpp:157:12:157:15 | data | provenance | | -| test.cpp:167:31:167:34 | data | test.cpp:170:12:170:14 | *res | provenance | | -| test.cpp:193:32:193:34 | str | test.cpp:195:31:195:33 | str | provenance | | -| test.cpp:193:32:193:34 | str | test.cpp:197:11:197:14 | *wstr | provenance | | +| test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | provenance | | +| test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | +| test.cpp:193:32:193:34 | *str | test.cpp:197:11:197:14 | *wstr | provenance | | | test.cpp:204:25:204:36 | *call to get_string | test.cpp:205:12:205:20 | *... + ... | provenance | | | test.cpp:204:25:204:36 | *call to get_string | test.cpp:206:12:206:16 | *hello | provenance | | | test.cpp:209:25:209:36 | *call to get_string | test.cpp:211:12:211:16 | *hello | provenance | | @@ -42,19 +37,12 @@ nodes | nested.cpp:79:32:79:38 | *call to get_fmt | semmle.label | *call to get_fmt | | nested.cpp:86:19:86:46 | *call to __builtin_alloca | semmle.label | *call to __builtin_alloca | | nested.cpp:87:18:87:20 | *fmt | semmle.label | *fmt | -| test.cpp:27:13:27:24 | **make_message | semmle.label | **make_message | -| test.cpp:27:39:27:39 | n | semmle.label | n | -| test.cpp:46:14:46:17 | argc | semmle.label | argc | | test.cpp:46:27:46:30 | **argv | semmle.label | **argv | -| test.cpp:51:10:51:21 | *call to make_message | semmle.label | *call to make_message | -| test.cpp:51:23:51:30 | ... - ... | semmle.label | ... - ... | | test.cpp:130:20:130:26 | *access to array | semmle.label | *access to array | -| test.cpp:155:27:155:30 | data | semmle.label | data | -| test.cpp:157:12:157:15 | data | semmle.label | data | -| test.cpp:167:31:167:34 | data | semmle.label | data | +| test.cpp:167:31:167:34 | *data | semmle.label | *data | | test.cpp:170:12:170:14 | *res | semmle.label | *res | -| test.cpp:193:32:193:34 | str | semmle.label | str | -| test.cpp:195:31:195:33 | str | semmle.label | str | +| test.cpp:193:32:193:34 | *str | semmle.label | *str | +| test.cpp:195:31:195:33 | *str | semmle.label | *str | | test.cpp:197:11:197:14 | *wstr | semmle.label | *wstr | | test.cpp:204:25:204:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:205:12:205:20 | *... + ... | semmle.label | *... + ... | @@ -74,7 +62,6 @@ nodes | test.cpp:245:25:245:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:247:12:247:16 | *hello | semmle.label | *hello | subpaths -| test.cpp:51:23:51:30 | ... - ... | test.cpp:27:39:27:39 | n | test.cpp:27:13:27:24 | **make_message | test.cpp:51:10:51:21 | *call to make_message | #select | NonConstantFormat.c:30:10:30:16 | *access to array | NonConstantFormat.c:28:27:28:30 | **argv | NonConstantFormat.c:30:10:30:16 | *access to array | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:30:3:30:8 | call to printf | printf | | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:41:2:41:7 | call to printf | printf | @@ -82,12 +69,10 @@ subpaths | nested.cpp:21:23:21:26 | *fmt0 | nested.cpp:42:24:42:34 | *call to ext_fmt_str | nested.cpp:21:23:21:26 | *fmt0 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:21:5:21:12 | call to snprintf | snprintf | | nested.cpp:79:32:79:38 | *call to get_fmt | nested.cpp:79:32:79:38 | *call to get_fmt | nested.cpp:79:32:79:38 | *call to get_fmt | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:79:5:79:14 | call to diagnostic | diagnostic | | nested.cpp:87:18:87:20 | *fmt | nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:87:7:87:16 | call to diagnostic | diagnostic | -| test.cpp:51:10:51:21 | *call to make_message | test.cpp:46:14:46:17 | argc | test.cpp:51:10:51:21 | *call to make_message | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:51:3:51:8 | call to printf | printf | | test.cpp:130:20:130:26 | *access to array | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:130:2:130:10 | call to sprintf | sprintf | -| test.cpp:157:12:157:15 | data | test.cpp:155:27:155:30 | data | test.cpp:157:12:157:15 | data | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:157:5:157:10 | call to printf | printf | -| test.cpp:170:12:170:14 | *res | test.cpp:167:31:167:34 | data | test.cpp:170:12:170:14 | *res | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:170:5:170:10 | call to printf | printf | -| test.cpp:195:31:195:33 | str | test.cpp:193:32:193:34 | str | test.cpp:195:31:195:33 | str | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:195:3:195:18 | call to StringCchPrintfW | StringCchPrintfW | -| test.cpp:197:11:197:14 | *wstr | test.cpp:193:32:193:34 | str | test.cpp:197:11:197:14 | *wstr | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:197:3:197:9 | call to wprintf | wprintf | +| test.cpp:170:12:170:14 | *res | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:170:5:170:10 | call to printf | printf | +| test.cpp:195:31:195:33 | *str | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:195:3:195:18 | call to StringCchPrintfW | StringCchPrintfW | +| test.cpp:197:11:197:14 | *wstr | test.cpp:193:32:193:34 | *str | test.cpp:197:11:197:14 | *wstr | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:197:3:197:9 | call to wprintf | wprintf | | test.cpp:205:12:205:20 | *... + ... | test.cpp:204:25:204:36 | *call to get_string | test.cpp:205:12:205:20 | *... + ... | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:205:5:205:10 | call to printf | printf | | test.cpp:206:12:206:16 | *hello | test.cpp:204:25:204:36 | *call to get_string | test.cpp:206:12:206:16 | *hello | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:206:5:206:10 | call to printf | printf | | test.cpp:211:12:211:16 | *hello | test.cpp:209:25:209:36 | *call to get_string | test.cpp:211:12:211:16 | *hello | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:211:5:211:10 | call to printf | printf | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/test.cpp b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/test.cpp index bc8d0c26bbb9..e60db94f9b1c 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/test.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/test.cpp @@ -48,7 +48,7 @@ int main(int argc, char **argv) { printf(choose_message(argc - 1), argc - 1); // GOOD printf(messages[1]); // GOOD printf(message); // GOOD - printf(make_message(argc - 1)); // BAD + printf(make_message(argc - 1)); // BAD [NOT DETECTED] printf("Hello, World\n"); // GOOD printf(_("Hello, World\n")); // GOOD { @@ -154,7 +154,7 @@ void print_ith_message() { void fmt_via_strcpy(char *data) { strcpy(data, "some string"); - printf(data); // GOOD [FALSE POSITIVE: Due to inaccurate dataflow killers] + printf(data); // GOOD } void fmt_with_assignment() { diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected index 91f3d367db63..7889b8803746 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected @@ -23,9 +23,7 @@ edges | consts.cpp:106:13:106:19 | *call to varFunc | consts.cpp:107:9:107:10 | *v5 | provenance | | | consts.cpp:111:7:111:13 | *call to varFunc | consts.cpp:112:9:112:10 | *v6 | provenance | | | consts.cpp:139:13:139:16 | readString output argument | consts.cpp:140:9:140:11 | *v11 | provenance | | -| consts.cpp:139:13:139:16 | readString output argument | consts.cpp:140:9:140:11 | v11 | provenance | | | consts.cpp:144:16:144:18 | readStringRef output argument | consts.cpp:145:9:145:11 | *v12 | provenance | | -| consts.cpp:144:16:144:18 | readStringRef output argument | consts.cpp:145:9:145:11 | v12 | provenance | | nodes | consts.cpp:24:7:24:9 | **gv1 | semmle.label | **gv1 | | consts.cpp:29:7:29:25 | **nonConstFuncToArray | semmle.label | **nonConstFuncToArray | @@ -47,13 +45,9 @@ nodes | consts.cpp:130:9:130:10 | *v9 | semmle.label | *v9 | | consts.cpp:135:9:135:11 | *v10 | semmle.label | *v10 | | consts.cpp:139:13:139:16 | readString output argument | semmle.label | readString output argument | -| consts.cpp:139:13:139:16 | readString output argument | semmle.label | readString output argument | | consts.cpp:140:9:140:11 | *v11 | semmle.label | *v11 | -| consts.cpp:140:9:140:11 | v11 | semmle.label | v11 | -| consts.cpp:144:16:144:18 | readStringRef output argument | semmle.label | readStringRef output argument | | consts.cpp:144:16:144:18 | readStringRef output argument | semmle.label | readStringRef output argument | | consts.cpp:145:9:145:11 | *v12 | semmle.label | *v12 | -| consts.cpp:145:9:145:11 | v12 | semmle.label | v12 | subpaths #select | consts.cpp:86:9:86:10 | *v1 | consts.cpp:85:7:85:8 | gets output argument | consts.cpp:86:9:86:10 | *v1 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | consts.cpp:86:2:86:7 | call to printf | printf | @@ -78,6 +72,4 @@ subpaths | consts.cpp:135:9:135:11 | *v10 | consts.cpp:85:7:85:8 | gets output argument | consts.cpp:135:9:135:11 | *v10 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | consts.cpp:135:2:135:7 | call to printf | printf | | consts.cpp:135:9:135:11 | *v10 | consts.cpp:90:12:90:13 | gets output argument | consts.cpp:135:9:135:11 | *v10 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | consts.cpp:135:2:135:7 | call to printf | printf | | consts.cpp:140:9:140:11 | *v11 | consts.cpp:139:13:139:16 | readString output argument | consts.cpp:140:9:140:11 | *v11 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | consts.cpp:140:2:140:7 | call to printf | printf | -| consts.cpp:140:9:140:11 | v11 | consts.cpp:139:13:139:16 | readString output argument | consts.cpp:140:9:140:11 | v11 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | consts.cpp:140:2:140:7 | call to printf | printf | | consts.cpp:145:9:145:11 | *v12 | consts.cpp:144:16:144:18 | readStringRef output argument | consts.cpp:145:9:145:11 | *v12 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | consts.cpp:145:2:145:7 | call to printf | printf | -| consts.cpp:145:9:145:11 | v12 | consts.cpp:144:16:144:18 | readStringRef output argument | consts.cpp:145:9:145:11 | v12 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | consts.cpp:145:2:145:7 | call to printf | printf | From 2345907a52b1f690f2647394bf6d12ef0123dbfe Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 11 Mar 2024 18:49:03 +0000 Subject: [PATCH 123/731] C++: Reintroduce the 'cannotContainString' optimization that was removed in #15516. --- .../Likely Bugs/Format/NonConstantFormat.ql | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index b02986e0b68d..ee3139f3682d 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -37,6 +37,25 @@ class UncalledFunction extends Function { } } +/** + * Holds if `t` cannot refer to a string. That is, it's a built-in + * or arithmetic type that is not a "`char` like" type. + */ +predicate cannotContainString(Type t) { + exists(Type unspecified | + unspecified = t.getUnspecifiedType() and + not unspecified instanceof UnknownType and + not unspecified instanceof CharType and + not unspecified instanceof WideCharType and + not unspecified instanceof Char8Type and + not unspecified instanceof Char16Type and + not unspecified instanceof Char32Type + | + unspecified instanceof ArithmeticType or + unspecified instanceof BuiltInType + ) +} + predicate dataFlowOrTaintFlowFunction(Function func, FunctionOutput output) { func.(DataFlowFunction).hasDataFlow(_, output) or func.(TaintFunction).hasTaintFlow(_, output) @@ -132,13 +151,24 @@ predicate isSinkImpl(DataFlow::Node sink, Expr formatString) { } module NonConstFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { isNonConst(source) } + predicate isSource(DataFlow::Node source) { + exists(Type t | + isNonConst(source) and + t = source.getType() and + not cannotContainString(t) + ) + } predicate isSink(DataFlow::Node sink) { isSinkImpl(sink, _) } predicate isBarrier(DataFlow::Node node) { // Ignore tracing non-const through array indices exists(ArrayExpr a | a.getArrayOffset() = node.asIndirectExpr()) + or + exists(Type t | + t = node.getType() and + cannotContainString(t) + ) } } From 9854ed4b89f4f0194085504f776a87eb5d3ce57e Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Mon, 11 Mar 2024 18:54:53 +0000 Subject: [PATCH 124/731] C++: Delete comment. --- cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql | 2 -- 1 file changed, 2 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index ee3139f3682d..461df854c758 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -110,8 +110,6 @@ predicate isNonConst(DataFlow::Node node) { ( // Case 1: It's a known dataflow or taintflow function with flow to the return value exists(Function func, CallInstruction call | - // NOTE: could use `Call` getAnArgument() instead of `CallInstruction` but requires two - // variables representing the same call in ordoer to use `callOutput` below. call.getUnconvertedResultExpression() = node.asIndirectExpr() and func = call.getStaticCallTarget() and not exists(FunctionOutput output | From e82e3180f0ea444915438b3195e2402c60284bf9 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 8 Mar 2024 08:47:46 +0100 Subject: [PATCH 125/731] Data flow: Replace `hasLocationInfo` with `getLocation` --- shared/dataflow/codeql/dataflow/DataFlow.qll | 65 ++++++++----------- .../codeql/dataflow/TaintTracking.qll | 12 ++-- .../codeql/dataflow/internal/DataFlowImpl.qll | 61 ++++++----------- .../dataflow/internal/DataFlowImplCommon.qll | 45 +++---------- .../internal/DataFlowImplConsistency.qll | 14 ++-- .../dataflow/internal/FlowSummaryImpl.qll | 13 ++-- .../codeql/dataflow/test/InlineFlowTest.qll | 14 ++-- 7 files changed, 86 insertions(+), 138 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 6a18c1666134..ebb9f7c8c252 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -4,8 +4,10 @@ * modules. */ +private import codeql.util.Location + /** Provides language-specific data flow parameters. */ -signature module InputSig { +signature module InputSig { /** * A node in the data flow graph. */ @@ -13,16 +15,8 @@ signature module InputSig { /** Gets a textual representation of this element. */ string toString(); - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ); + /** Gets the location of this node. */ + Location getLocation(); } class ParameterNode extends Node; @@ -321,9 +315,9 @@ signature module InputSig { default predicate ignoreFieldFlowBranchLimit(DataFlowCallable c) { none() } } -module Configs { +module Configs Lang> { private import Lang - private import internal.DataFlowImplCommon::MakeImplCommon + private import internal.DataFlowImplCommon::MakeImplCommon import DataFlowImplCommonPublic /** An input configuration for data flow. */ @@ -531,10 +525,10 @@ module Configs { } } -module DataFlowMake { +module DataFlowMake Lang> { private import Lang - private import internal.DataFlowImpl::MakeImpl - import Configs + private import internal.DataFlowImpl::MakeImpl + import Configs /** * Gets the exploration limit for `partialFlow` and `partialFlowRev` @@ -613,19 +607,11 @@ module DataFlowMake { /** Gets a textual representation of this element. */ string toString(); - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ); - /** Gets the underlying `Node`. */ Node getNode(); + + /** Gets the location of this node. */ + Location getLocation(); } signature module PathGraphSig { @@ -668,6 +654,15 @@ module DataFlowMake { result = this.asPathNode2().toString() } + /** Gets the underlying `Node`. */ + Node getNode() { + result = this.asPathNode1().getNode() or + result = this.asPathNode2().getNode() + } + + /** Gets the location of this node. */ + Location getLocation() { result = this.getNode().getLocation() } + /** * Holds if this element is at the specified location. * The location spans column `startcolumn` of line `startline` to @@ -675,17 +670,10 @@ module DataFlowMake { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.asPathNode1().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) or - this.asPathNode2().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } - - /** Gets the underlying `Node`. */ - Node getNode() { - result = this.asPathNode1().getNode() or - result = this.asPathNode2().getNode() + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) } } @@ -750,7 +738,7 @@ module DataFlowMake { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) @@ -758,6 +746,9 @@ module DataFlowMake { /** Gets the underlying `Node`. */ Node getNode() { result = super.getNode() } + + /** Gets the location of this node. */ + Location getLocation() { result = super.getLocation() } } /** diff --git a/shared/dataflow/codeql/dataflow/TaintTracking.qll b/shared/dataflow/codeql/dataflow/TaintTracking.qll index 73960fbca1db..c7d4f6bf505a 100644 --- a/shared/dataflow/codeql/dataflow/TaintTracking.qll +++ b/shared/dataflow/codeql/dataflow/TaintTracking.qll @@ -5,11 +5,12 @@ private import DataFlow as DF private import internal.DataFlowImpl +private import codeql.util.Location /** * Provides language-specific taint-tracking parameters. */ -signature module InputSig { +signature module InputSig Lang> { /** * Holds if `node` should be a sanitizer in all global taint flow configurations * but not in local taint. @@ -33,10 +34,13 @@ signature module InputSig { /** * Construct the modules for taint-tracking analyses. */ -module TaintFlowMake TaintTrackingLang> { +module TaintFlowMake< + LocationSig Location, DF::InputSig DataFlowLang, + InputSig TaintTrackingLang> +{ private import TaintTrackingLang - private import DF::DataFlowMake as DataFlow - private import MakeImpl as DataFlowInternal + private import DF::DataFlowMake as DataFlow + private import MakeImpl as DataFlowInternal private module AddTaintDefaults implements DataFlowInternal::FullStateConfigSig diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index d555b281710c..1db7a2581815 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -7,12 +7,13 @@ private import codeql.util.Unit private import codeql.util.Option private import codeql.util.Boolean +private import codeql.util.Location private import codeql.dataflow.DataFlow -module MakeImpl { +module MakeImpl Lang> { private import Lang - private import DataFlowMake - private import DataFlowImplCommon::MakeImplCommon + private import DataFlowMake + private import DataFlowImplCommon::MakeImplCommon private import DataFlowImplCommonPublic /** @@ -192,11 +193,7 @@ module MakeImpl { pragma[only_bind_out](this).getDataFlowType0() = pragma[only_bind_into](result) } - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.projectToNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + Location getLocation() { result = this.projectToNode().getLocation() } } private class ArgNodeEx extends NodeEx { @@ -3305,11 +3302,7 @@ module MakeImpl { override string toString() { result = p + concat(" : " + ppReprType(t)) + " " + ap } - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - p.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + Location getLocation() { result = p.getLocation() } } /** @@ -3727,18 +3720,8 @@ module MakeImpl { this.ppSummaryCtx() } - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + /** Gets the location of this node. */ + Location getLocation() { result = this.getNodeEx().getLocation() } } /** Holds if `n` can reach a sink. */ @@ -3774,6 +3757,9 @@ module MakeImpl { */ final string toStringWithContext() { result = super.toStringWithContext() } + /** Gets the location of this node. */ + Location getLocation() { result = super.getLocation() } + /** * Holds if this element is at the specified location. * The location spans column `startcolumn` of line `startline` to @@ -3781,10 +3767,11 @@ module MakeImpl { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - final predicate hasLocationInfo( + pragma[inline] + deprecated final predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) } /** Gets the underlying `Node`. */ @@ -3945,12 +3932,6 @@ module MakeImpl { override predicate isSource() { none() } override string toString() { result = sourceGroup } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - filepath = "" and startline = 0 and startcolumn = 0 and endline = 0 and endcolumn = 0 - } } private class PathNodeSinkGroup extends PathNodeImpl, TPathNodeSinkGroup { @@ -3967,12 +3948,6 @@ module MakeImpl { override predicate isSource() { none() } override string toString() { result = sinkGroup } - - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - filepath = "" and startline = 0 and startcolumn = 0 and endline = 0 and endcolumn = 0 - } } private predicate pathNode( @@ -4801,6 +4776,9 @@ module MakeImpl { result = this.getNodeEx().toString() + this.ppType() + this.ppAp() + this.ppCtx() } + /** Gets the location of this node. */ + Location getLocation() { result = this.getNodeEx().getLocation() } + /** * Holds if this element is at the specified location. * The location spans column `startcolumn` of line `startline` to @@ -4808,10 +4786,11 @@ module MakeImpl { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + pragma[inline] + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - this.getNodeEx().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) } /** Gets the underlying `Node`. */ diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index 679be2cb5c6d..1caf76de7bc1 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -1,8 +1,9 @@ private import codeql.dataflow.DataFlow private import codeql.typetracking.TypeTracking as Tt +private import codeql.util.Location private import codeql.util.Unit -module MakeImplCommon { +module MakeImplCommon Lang> { private import Lang import Cached @@ -1642,19 +1643,15 @@ module MakeImplCommon { } } + final private class NodeFinal = Node; + /** * A `Node` at which a cast can occur such that the type should be checked. */ - class CastingNode instanceof Node { + class CastingNode extends NodeFinal { CastingNode() { castingNode(this) } string toString() { result = super.toString() } - - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } } private predicate readStepWithTypes( @@ -1800,17 +1797,11 @@ module MakeImplCommon { * The value of a parameter at function entry, viewed as a node in a data * flow graph. */ - class ParamNode instanceof Node { + class ParamNode extends NodeFinal { ParamNode() { parameterNode(this, _, _) } string toString() { result = super.toString() } - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } - /** * Holds if this node is the parameter of callable `c` at the specified * position. @@ -1821,17 +1812,11 @@ module MakeImplCommon { } /** A data-flow node that represents a call argument. */ - class ArgNode instanceof Node { + class ArgNode extends NodeFinal { ArgNode() { argumentNode(this, _, _) } string toString() { result = super.toString() } - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } - /** Holds if this argument occurs at the given position in the given call. */ final predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { argumentNode(this, call, pos) @@ -1842,17 +1827,11 @@ module MakeImplCommon { * A node from which flow can return to the caller. This is either a regular * `ReturnNode` or a `PostUpdateNode` corresponding to the value of a parameter. */ - class ReturnNodeExt instanceof Node { + class ReturnNodeExt extends NodeFinal { ReturnNodeExt() { returnNodeExt(this, _) } string toString() { result = super.toString() } - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } - /** Gets the kind of this returned value. */ ReturnKindExt getKind() { returnNodeExt(this, result) } } @@ -1861,16 +1840,10 @@ module MakeImplCommon { * A node to which data can flow from a call. Either an ordinary out node * or a post-update node associated with a call argument. */ - class OutNodeExt instanceof Node { + class OutNodeExt extends NodeFinal { OutNodeExt() { outNodeExt(this) } string toString() { result = super.toString() } - - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } } /** diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll index 374d42e9ad59..1d0f8d1969d5 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplConsistency.qll @@ -5,8 +5,9 @@ private import codeql.dataflow.DataFlow as DF private import codeql.dataflow.TaintTracking as TT +private import codeql.util.Location -signature module InputSig { +signature module InputSig DataFlowLang> { /** Holds if `n` should be excluded from the consistency test `uniqueEnclosingCallable`. */ default predicate uniqueEnclosingCallableExclude(DataFlowLang::Node n) { none() } @@ -71,8 +72,8 @@ signature module InputSig { } module MakeConsistency< - DF::InputSig DataFlowLang, TT::InputSig TaintTrackingLang, - InputSig Input> + LocationSig Location, DF::InputSig DataFlowLang, + TT::InputSig TaintTrackingLang, InputSig Input> { private import DataFlowLang private import TaintTrackingLang @@ -128,10 +129,7 @@ module MakeConsistency< query predicate uniqueNodeLocation(Node n, string msg) { exists(int c | - c = - count(string filepath, int startline, int startcolumn, int endline, int endcolumn | - n.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - ) and + c = count(n.getLocation()) and c != 1 and not Input::uniqueNodeLocationExclude(n) and msg = "Node should have one location but has " + c + "." @@ -142,7 +140,7 @@ module MakeConsistency< exists(int c | c = strictcount(Node n | - not n.hasLocationInfo(_, _, _, _, _) and + not exists(n.getLocation()) and not Input::missingLocationExclude(n) ) and msg = "Nodes without location: " + c diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index f3e840720ab9..4d6df2945213 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -10,7 +10,7 @@ private import AccessPathSyntax as AccessPathSyntax /** * Provides language-specific parameters. */ -signature module InputSig { +signature module InputSig Lang> { /** * A base class of callables that are candidates for flow summary modeling. */ @@ -139,10 +139,12 @@ signature module InputSig { } } -module Make Input> { +module Make< + LocationSig Location, DF::InputSig DataFlowLang, InputSig Input> +{ private import DataFlowLang private import Input - private import codeql.dataflow.internal.DataFlowImplCommon::MakeImplCommon + private import codeql.dataflow.internal.DataFlowImplCommon::MakeImplCommon private import codeql.util.Unit final private class SummarizedCallableBaseFinal = SummarizedCallableBase; @@ -1457,7 +1459,7 @@ module Make Input> { AccessPathSyntax::parseInt(part.getArgumentList()) < 0 } - signature module SourceSinkInterpretationInputSig { + signature module SourceSinkInterpretationInputSig { class Element { string toString(); @@ -1523,8 +1525,7 @@ module Make Input> { * Should eventually be replaced with API graphs like in dynamic languages. */ module SourceSinkInterpretation< - LocationSig Location, - SourceSinkInterpretationInputSig SourceSinkInterpretationInput> + SourceSinkInterpretationInputSig SourceSinkInterpretationInput> { private import SourceSinkInterpretationInput diff --git a/shared/dataflow/codeql/dataflow/test/InlineFlowTest.qll b/shared/dataflow/codeql/dataflow/test/InlineFlowTest.qll index 22a55f5aa073..e35d1332bca9 100644 --- a/shared/dataflow/codeql/dataflow/test/InlineFlowTest.qll +++ b/shared/dataflow/codeql/dataflow/test/InlineFlowTest.qll @@ -29,8 +29,9 @@ private import codeql.dataflow.DataFlow as DF private import codeql.dataflow.TaintTracking as TT private import codeql.util.test.InlineExpectationsTest as IET +private import codeql.util.Location -signature module InputSig { +signature module InputSig DataFlowLang> { predicate defaultSource(DataFlowLang::Node source); predicate defaultSink(DataFlowLang::Node source); @@ -40,12 +41,13 @@ signature module InputSig { } module InlineFlowTestMake< - DF::InputSig DataFlowLang, TT::InputSig TaintTrackingLang, - IET::InlineExpectationsTestSig Test, InputSig Impl> + LocationSig Location, DF::InputSig DataFlowLang, + TT::InputSig TaintTrackingLang, IET::InlineExpectationsTestSig Test, + InputSig Impl> { - private module DataFlow = DF::DataFlowMake; + private module DataFlow = DF::DataFlowMake; - private module TaintTracking = TT::TaintFlowMake; + private module TaintTracking = TT::TaintFlowMake; private module InlineExpectationsTest = IET::Make; @@ -76,7 +78,7 @@ module InlineFlowTestMake< private predicate hasLocationInfo(DataFlowLang::Node node, Test::Location location) { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | - node.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + node.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and location.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) ) } From 4291290277e7e1618e4902fd17ababe22c146cd6 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 8 Mar 2024 09:04:29 +0100 Subject: [PATCH 126/731] Ruby: Implement new data flow interface --- ruby/ql/consistency-queries/DataFlowConsistency.ql | 4 ++-- ruby/ql/lib/codeql/ruby/DataFlow.qll | 2 +- ruby/ql/lib/codeql/ruby/TaintTracking.qll | 3 ++- ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll | 3 ++- .../lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll | 3 ++- .../codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll | 3 ++- ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll | 2 +- .../ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll | 4 ++-- .../ruby/dataflow/internal/TaintTrackingImplSpecific.qll | 3 ++- ruby/ql/test/TestUtilities/InlineFlowTest.qll | 5 +++-- 10 files changed, 19 insertions(+), 13 deletions(-) diff --git a/ruby/ql/consistency-queries/DataFlowConsistency.ql b/ruby/ql/consistency-queries/DataFlowConsistency.ql index d064eeb3701d..76155d5d1c11 100644 --- a/ruby/ql/consistency-queries/DataFlowConsistency.ql +++ b/ruby/ql/consistency-queries/DataFlowConsistency.ql @@ -5,7 +5,7 @@ private import codeql.ruby.dataflow.internal.DataFlowImplSpecific private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency -private module Input implements InputSig { +private module Input implements InputSig { private import RubyDataFlow predicate postWithInFlowExclude(Node n) { n instanceof FlowSummaryNode } @@ -46,4 +46,4 @@ private module Input implements InputSig { } } -import MakeConsistency +import MakeConsistency diff --git a/ruby/ql/lib/codeql/ruby/DataFlow.qll b/ruby/ql/lib/codeql/ruby/DataFlow.qll index aa6e7e0cd59a..f17c85143f5d 100644 --- a/ruby/ql/lib/codeql/ruby/DataFlow.qll +++ b/ruby/ql/lib/codeql/ruby/DataFlow.qll @@ -12,6 +12,6 @@ import codeql.Locations module DataFlow { private import codeql.ruby.dataflow.internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake + import DataFlowMake import codeql.ruby.dataflow.internal.DataFlowImpl1 } diff --git a/ruby/ql/lib/codeql/ruby/TaintTracking.qll b/ruby/ql/lib/codeql/ruby/TaintTracking.qll index 461a423e1f1d..7534b28079ae 100644 --- a/ruby/ql/lib/codeql/ruby/TaintTracking.qll +++ b/ruby/ql/lib/codeql/ruby/TaintTracking.qll @@ -7,6 +7,7 @@ module TaintTracking { private import codeql.ruby.dataflow.internal.DataFlowImplSpecific private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake + private import codeql.Locations + import TaintFlowMake import codeql.ruby.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll index 277b639d0ab3..21ceca9e3b51 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImpl.qll @@ -1,3 +1,4 @@ +private import codeql.Locations private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl +import MakeImpl diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll index 05e0bc67b306..0b0e883803e1 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,4 @@ +private import codeql.Locations private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon +import MakeImplCommon diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll index 7a8e6dad9f83..b342537b053d 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowImplSpecific.qll @@ -2,6 +2,7 @@ * Provides Ruby-specific definitions for use in the data flow library. */ +private import codeql.Locations private import codeql.dataflow.DataFlow module Private { @@ -13,7 +14,7 @@ module Public { import DataFlowPublic } -module RubyDataFlow implements InputSig { +module RubyDataFlow implements InputSig { import Private import Public diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll index 8d0c565a7376..c1c625a23167 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll @@ -35,7 +35,7 @@ class Node extends TNode { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll index 59f8e541b3d9..d0beb44ac7b4 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/FlowSummaryImpl.qll @@ -9,7 +9,7 @@ private import codeql.ruby.dataflow.internal.DataFlowImplSpecific as DataFlowImp private import DataFlowImplSpecific::Private private import DataFlowImplSpecific::Public -module Input implements InputSig { +module Input implements InputSig { class SummarizedCallableBase = string; ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() } @@ -146,7 +146,7 @@ module Input implements InputSig { } } -private import Make as Impl +private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingImplSpecific.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingImplSpecific.qll index fe733ee5d95a..987aefdda72d 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/TaintTrackingImplSpecific.qll @@ -2,9 +2,10 @@ * Provides Ruby-specific definitions for use in the taint tracking library. */ +private import codeql.Locations private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific -module RubyTaintTracking implements InputSig { +module RubyTaintTracking implements InputSig { import TaintTrackingPrivate } diff --git a/ruby/ql/test/TestUtilities/InlineFlowTest.qll b/ruby/ql/test/TestUtilities/InlineFlowTest.qll index c9ceda9dff5f..7d8a4cb03b88 100644 --- a/ruby/ql/test/TestUtilities/InlineFlowTest.qll +++ b/ruby/ql/test/TestUtilities/InlineFlowTest.qll @@ -4,12 +4,13 @@ */ import ruby +private import codeql.Locations private import codeql.dataflow.test.InlineFlowTest private import codeql.ruby.dataflow.internal.DataFlowImplSpecific private import codeql.ruby.dataflow.internal.TaintTrackingImplSpecific private import internal.InlineExpectationsTestImpl -private module FlowTestImpl implements InputSig { +private module FlowTestImpl implements InputSig { import TestUtilities.InlineFlowTestUtil bindingset[src, sink] @@ -19,4 +20,4 @@ private module FlowTestImpl implements InputSig { } } -import InlineFlowTestMake +import InlineFlowTestMake From 257686eb9a3554d8d602c98be2baaaa67fe8effc Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 8 Mar 2024 09:14:09 +0100 Subject: [PATCH 127/731] C#: Implement new data flow interface --- csharp/ql/consistency-queries/DataFlowConsistency.ql | 4 ++-- csharp/ql/lib/semmle/code/csharp/dataflow/DataFlow.qll | 2 +- .../ql/lib/semmle/code/csharp/dataflow/TaintTracking.qll | 2 +- .../semmle/code/csharp/dataflow/internal/DataFlowImpl.qll | 3 ++- .../code/csharp/dataflow/internal/DataFlowImplCommon.qll | 3 ++- .../csharp/dataflow/internal/DataFlowImplSpecific.qll | 3 ++- .../code/csharp/dataflow/internal/DataFlowPublic.qll | 2 +- .../code/csharp/dataflow/internal/FlowSummaryImpl.qll | 8 ++++---- .../dataflow/internal/TaintTrackingImplSpecific.qll | 3 ++- csharp/ql/test/TestUtilities/InlineFlowTest.qll | 4 ++-- 10 files changed, 19 insertions(+), 15 deletions(-) diff --git a/csharp/ql/consistency-queries/DataFlowConsistency.ql b/csharp/ql/consistency-queries/DataFlowConsistency.ql index 1ee888329c77..2f34368b669b 100644 --- a/csharp/ql/consistency-queries/DataFlowConsistency.ql +++ b/csharp/ql/consistency-queries/DataFlowConsistency.ql @@ -4,7 +4,7 @@ private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency -private module Input implements InputSig { +private module Input implements InputSig { private import CsharpDataFlow private predicate isStaticAssignable(Assignable a) { a.(Modifiable).isStatic() } @@ -99,4 +99,4 @@ private module Input implements InputSig { } } -import MakeConsistency +import MakeConsistency diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/DataFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/DataFlow.qll index 17e698dce2d3..0fc12debaa8d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/DataFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/DataFlow.qll @@ -8,6 +8,6 @@ import csharp module DataFlow { private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake + import DataFlowMake import semmle.code.csharp.dataflow.internal.DataFlowImpl1 } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/TaintTracking.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/TaintTracking.qll index 7243d36b05d3..fb39294ed23e 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/TaintTracking.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/TaintTracking.qll @@ -10,6 +10,6 @@ module TaintTracking { private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake + import TaintFlowMake import semmle.code.csharp.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll index 4cf39afc8123..09e47bdd831e 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImpl.qll @@ -1,3 +1,4 @@ +private import semmle.code.csharp.Location private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl +import MakeImpl diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll index 55829d7d059d..72ccd3152da0 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,4 @@ +private import semmle.code.csharp.Location private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon +import MakeImplCommon diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll index 774dc6bd86aa..af104d777b87 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll @@ -2,6 +2,7 @@ * Provides C#-specific definitions for use in the data flow library. */ +private import semmle.code.csharp.Location private import codeql.dataflow.DataFlow module Private { @@ -13,7 +14,7 @@ module Public { import DataFlowPublic } -module CsharpDataFlow implements InputSig { +module CsharpDataFlow implements InputSig { import Private import Public diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index bf30fe5112de..20e3dd8eb7d0 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -58,7 +58,7 @@ class Node extends TNode { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index 19972a86ab6e..8c76fc3d1a7a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -12,7 +12,7 @@ private import DataFlowImplSpecific::Public private import semmle.code.csharp.Unification private import semmle.code.csharp.dataflow.internal.ExternalFlow -module Input implements InputSig { +module Input implements InputSig { class SummarizedCallableBase = UnboundCallable; ArgumentPosition callbackSelfParameterPosition() { result.isDelegateSelf() } @@ -80,7 +80,7 @@ module Input implements InputSig { } } -private import Make as Impl +private import Make as Impl private module TypesInput implements Impl::Private::TypesInputSig { DataFlowType getSyntheticGlobalType(Impl::Private::SyntheticGlobal sg) { @@ -154,7 +154,7 @@ private module StepsInput implements Impl::Private::StepsInputSig { } module SourceSinkInterpretationInput implements - Impl::Private::External::SourceSinkInterpretationInputSig + Impl::Private::External::SourceSinkInterpretationInputSig { private import csharp as Cs @@ -252,7 +252,7 @@ module Private { module External { import Impl::Private::External - import Impl::Private::External::SourceSinkInterpretation + import Impl::Private::External::SourceSinkInterpretation } private module SummaryComponentInternal = Impl::Private::SummaryComponent; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingImplSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingImplSpecific.qll index 17a0d2c3c1a4..b33d582021f0 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingImplSpecific.qll @@ -2,9 +2,10 @@ * Provides C#-specific definitions for use in the taint tracking library. */ +private import semmle.code.csharp.Location private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific -module CsharpTaintTracking implements InputSig { +module CsharpTaintTracking implements InputSig { import TaintTrackingPrivate } diff --git a/csharp/ql/test/TestUtilities/InlineFlowTest.qll b/csharp/ql/test/TestUtilities/InlineFlowTest.qll index b7d7226e8126..bf7463535e19 100644 --- a/csharp/ql/test/TestUtilities/InlineFlowTest.qll +++ b/csharp/ql/test/TestUtilities/InlineFlowTest.qll @@ -9,7 +9,7 @@ private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific private import internal.InlineExpectationsTestImpl -private module FlowTestImpl implements InputSig { +private module FlowTestImpl implements InputSig { predicate defaultSource(DataFlow::Node source) { source.asExpr().(MethodCall).getTarget().getUndecoratedName() = ["Source", "Taint"] } @@ -35,4 +35,4 @@ private module FlowTestImpl implements InputSig { } } -import InlineFlowTestMake +import InlineFlowTestMake From 1c57e996860357f0bc73987256ff6de496139b02 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 8 Mar 2024 09:48:37 +0100 Subject: [PATCH 128/731] C++: Implement new data flow interface --- cpp/ql/lib/semmle/code/cpp/dataflow/DataFlow.qll | 2 +- cpp/ql/lib/semmle/code/cpp/dataflow/TaintTracking.qll | 2 +- cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll | 3 ++- .../semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll | 3 ++- .../code/cpp/dataflow/internal/DataFlowImplConsistency.qll | 4 ++-- .../code/cpp/dataflow/internal/DataFlowImplSpecific.qll | 3 ++- cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll | 2 +- .../code/cpp/dataflow/internal/TaintTrackingImplSpecific.qll | 3 ++- cpp/ql/lib/semmle/code/cpp/dataflow/new/DataFlow.qll | 2 +- cpp/ql/lib/semmle/code/cpp/dataflow/new/TaintTracking.qll | 3 ++- cpp/ql/lib/semmle/code/cpp/ir/dataflow/DataFlow.qll | 2 +- cpp/ql/lib/semmle/code/cpp/ir/dataflow/TaintTracking.qll | 2 +- .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll | 3 ++- .../code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll | 3 ++- .../code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll | 4 ++-- .../code/cpp/ir/dataflow/internal/DataFlowImplSpecific.qll | 3 ++- .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 2 +- .../cpp/ir/dataflow/internal/TaintTrackingImplSpecific.qll | 3 ++- 18 files changed, 29 insertions(+), 20 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/DataFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/DataFlow.qll index 43bf134ea794..505b2e190e54 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/DataFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/DataFlow.qll @@ -28,6 +28,6 @@ import cpp deprecated module DataFlow { private import semmle.code.cpp.dataflow.internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake + import DataFlowMake import semmle.code.cpp.dataflow.internal.DataFlowImpl1 } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/TaintTracking.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/TaintTracking.qll index 8a8db1bdcce4..1f93e2a74dff 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/TaintTracking.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/TaintTracking.qll @@ -29,6 +29,6 @@ deprecated module TaintTracking { private import semmle.code.cpp.dataflow.internal.DataFlowImplSpecific private import semmle.code.cpp.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake + import TaintFlowMake import semmle.code.cpp.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll index 115e145bec0d..2038b14880aa 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImpl.qll @@ -2,6 +2,7 @@ * DEPRECATED: Use `semmle.code.cpp.dataflow.new.DataFlow` instead. */ +private import semmle.code.cpp.Location private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl +import MakeImpl diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll index 5d61aac1561b..b6e72884fa8d 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplCommon.qll @@ -2,6 +2,7 @@ * DEPRECATED: Use `semmle.code.cpp.dataflow.new.DataFlow` instead. */ +private import semmle.code.cpp.Location private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon +import MakeImplCommon diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll index 8abc7a8760a5..558bb80f3681 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplConsistency.qll @@ -10,7 +10,7 @@ private import DataFlowImplSpecific private import TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency -private module Input implements InputSig { +private module Input implements InputSig { predicate argHasPostUpdateExclude(Private::ArgumentNode n) { // Is the null pointer (or something that's not really a pointer) exists(n.asExpr().getValue()) @@ -26,4 +26,4 @@ private module Input implements InputSig { } } -module Consistency = MakeConsistency; +module Consistency = MakeConsistency; diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplSpecific.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplSpecific.qll index e8686419aac1..f2e9ffc69883 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowImplSpecific.qll @@ -4,6 +4,7 @@ * Provides C++-specific definitions for use in the data flow library. */ +private import semmle.code.cpp.Location private import codeql.dataflow.DataFlow module Private { @@ -15,7 +16,7 @@ module Public { import DataFlowUtil } -module CppOldDataFlow implements InputSig { +module CppOldDataFlow implements InputSig { import Private import Public diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll index 83efaf1511f6..0b932e7f05f6 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowUtil.qll @@ -105,7 +105,7 @@ class Node extends TNode { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingImplSpecific.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingImplSpecific.qll index e1549ea57a36..694d344c2f90 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/TaintTrackingImplSpecific.qll @@ -4,9 +4,10 @@ * Provides C++-specific definitions for use in the taint tracking library. */ +private import semmle.code.cpp.Location private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific -module CppOldTaintTracking implements InputSig { +module CppOldTaintTracking implements InputSig { import TaintTrackingUtil } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/new/DataFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/new/DataFlow.qll index ea4218da7344..bcbebd0de1ed 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/new/DataFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/new/DataFlow.qll @@ -28,6 +28,6 @@ import cpp module DataFlow { private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake + import DataFlowMake import semmle.code.cpp.ir.dataflow.internal.DataFlowImpl1 } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/new/TaintTracking.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/new/TaintTracking.qll index 87e037aad9b6..d28a389203fa 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/new/TaintTracking.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/new/TaintTracking.qll @@ -27,6 +27,7 @@ module TaintTracking { private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific private import semmle.code.cpp.ir.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake + private import semmle.code.cpp.Location + import TaintFlowMake import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/DataFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/DataFlow.qll index a2dd75d635cd..671d82c74efd 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/DataFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/DataFlow.qll @@ -24,6 +24,6 @@ import cpp module DataFlow { private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake + import DataFlowMake import semmle.code.cpp.ir.dataflow.internal.DataFlowImpl1 } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/TaintTracking.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/TaintTracking.qll index 6f2bfcdd6aa0..9ca1315ec3e5 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/TaintTracking.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/TaintTracking.qll @@ -23,6 +23,6 @@ module TaintTracking { private import semmle.code.cpp.ir.dataflow.internal.DataFlowImplSpecific private import semmle.code.cpp.ir.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake + import TaintFlowMake import semmle.code.cpp.ir.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll index f3e52187647b..edac7f5f62a1 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImpl.qll @@ -1,3 +1,4 @@ +private import semmle.code.cpp.Location private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl +import MakeImpl diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll index 266693f45f6c..e620cc5de787 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,4 @@ +private import semmle.code.cpp.Location private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon +import MakeImplCommon diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll index c32f63a619d5..6b0de326d114 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplConsistency.qll @@ -8,7 +8,7 @@ private import DataFlowImplSpecific private import TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency -private module Input implements InputSig { +private module Input implements InputSig { predicate argHasPostUpdateExclude(Private::ArgumentNode n) { // The rules for whether an IR argument gets a post-update node are too // complex to model here. @@ -16,4 +16,4 @@ private module Input implements InputSig { } } -module Consistency = MakeConsistency; +module Consistency = MakeConsistency; diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplSpecific.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplSpecific.qll index a8b9f99f3547..aeb136c761e2 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowImplSpecific.qll @@ -3,6 +3,7 @@ */ private import codeql.dataflow.DataFlow +private import semmle.code.cpp.Location module Private { import DataFlowPrivate @@ -13,7 +14,7 @@ module Public { import DataFlowUtil } -module CppDataFlow implements InputSig { +module CppDataFlow implements InputSig { import Private import Public diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index b411790596ec..ab52e91429f5 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -448,7 +448,7 @@ class Node extends TIRDataFlowNode { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingImplSpecific.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingImplSpecific.qll index f62468087b9e..3364eff6e355 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingImplSpecific.qll @@ -4,7 +4,8 @@ private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific +private import semmle.code.cpp.Location -module CppTaintTracking implements InputSig { +module CppTaintTracking implements InputSig { import TaintTrackingUtil } From 8d767862dc7138ad0d5b38569f197752de1b5777 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 8 Mar 2024 10:08:03 +0100 Subject: [PATCH 129/731] Swift: Implement new data flow interface --- swift/ql/lib/codeql/swift/dataflow/DataFlow.qll | 3 ++- swift/ql/lib/codeql/swift/dataflow/TaintTracking.qll | 3 ++- .../lib/codeql/swift/dataflow/internal/DataFlowImpl.qll | 3 ++- .../codeql/swift/dataflow/internal/DataFlowImplCommon.qll | 3 ++- .../swift/dataflow/internal/DataFlowImplConsistency.qll | 4 ++-- .../swift/dataflow/internal/DataFlowImplSpecific.qll | 2 +- .../lib/codeql/swift/dataflow/internal/DataFlowPublic.qll | 2 +- .../codeql/swift/dataflow/internal/FlowSummaryImpl.qll | 8 ++++---- .../swift/dataflow/internal/TaintTrackingImplSpecific.qll | 3 ++- 9 files changed, 18 insertions(+), 13 deletions(-) diff --git a/swift/ql/lib/codeql/swift/dataflow/DataFlow.qll b/swift/ql/lib/codeql/swift/dataflow/DataFlow.qll index b267b74d3281..670a94babd9d 100644 --- a/swift/ql/lib/codeql/swift/dataflow/DataFlow.qll +++ b/swift/ql/lib/codeql/swift/dataflow/DataFlow.qll @@ -5,6 +5,7 @@ module DataFlow { private import internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake + private import codeql.swift.elements.Location + import DataFlowMake import internal.DataFlowImpl1 } diff --git a/swift/ql/lib/codeql/swift/dataflow/TaintTracking.qll b/swift/ql/lib/codeql/swift/dataflow/TaintTracking.qll index 2dcb4e239c60..e46cd18abb4c 100644 --- a/swift/ql/lib/codeql/swift/dataflow/TaintTracking.qll +++ b/swift/ql/lib/codeql/swift/dataflow/TaintTracking.qll @@ -7,6 +7,7 @@ module TaintTracking { private import codeql.swift.dataflow.internal.DataFlowImplSpecific private import codeql.swift.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake + private import codeql.swift.elements.Location + import TaintFlowMake import codeql.swift.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll index 532f0def1168..f02fe9635aea 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl +private import codeql.swift.elements.Location +import MakeImpl diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplCommon.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplCommon.qll index 969275ffa076..eae4f58a86bf 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplCommon.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon +import codeql.swift.elements.Location +import MakeImplCommon diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll index e9de11852a62..3e17bc878035 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplConsistency.qll @@ -8,6 +8,6 @@ private import DataFlowImplSpecific private import TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency -private module Input implements InputSig { } +private module Input implements InputSig { } -module Consistency = MakeConsistency; +module Consistency = MakeConsistency; diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplSpecific.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplSpecific.qll index e6941afd9d92..4273414c7249 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplSpecific.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImplSpecific.qll @@ -15,7 +15,7 @@ module Public { import DataFlowPublic } -module SwiftDataFlow implements InputSig { +module SwiftDataFlow implements InputSig { import Private import Public diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPublic.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPublic.qll index abbb400904a6..16a5a2c19ca9 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPublic.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowPublic.qll @@ -26,7 +26,7 @@ class Node extends TNode { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll index 1151a7aeec8c..53f51433dac1 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll @@ -11,7 +11,7 @@ private import DataFlowImplSpecific::Public private import DataFlowImplCommon private import codeql.swift.dataflow.ExternalFlow -module Input implements InputSig { +module Input implements InputSig { class SummarizedCallableBase = Function; ArgumentPosition callbackSelfParameterPosition() { result instanceof ThisArgumentPosition } @@ -102,14 +102,14 @@ module Input implements InputSig { } } -private import Make as Impl +private import Make as Impl private module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { result.asCall().getStaticTarget() = sc } } module SourceSinkInterpretationInput implements - Impl::Private::External::SourceSinkInterpretationInputSig + Impl::Private::External::SourceSinkInterpretationInputSig { class Element = AstNode; @@ -222,7 +222,7 @@ module Private { module External { import Impl::Private::External - import Impl::Private::External::SourceSinkInterpretation + import Impl::Private::External::SourceSinkInterpretation } /** diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingImplSpecific.qll b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingImplSpecific.qll index fd00fa5e8f16..d2a9f6ae5f1e 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/TaintTrackingImplSpecific.qll @@ -4,8 +4,9 @@ private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific +private import codeql.swift.elements.Location -module SwiftTaintTracking implements InputSig { +module SwiftTaintTracking implements InputSig { import TaintTrackingPrivate import TaintTrackingPublic } From 7745c2c2b76cd207a59907a106c32ca55e0b7a7f Mon Sep 17 00:00:00 2001 From: Ed Minnix Date: Mon, 11 Mar 2024 17:00:12 -0400 Subject: [PATCH 130/731] Change note --- csharp/ql/lib/change-notes/2024-03-11-registry-sources.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2024-03-11-registry-sources.md diff --git a/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md b/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md new file mode 100644 index 000000000000..1d1050491855 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. From d1f8336be6a44017cbfc7f3749ea18764409c1db Mon Sep 17 00:00:00 2001 From: Pierre Date: Mon, 11 Mar 2024 22:21:25 +0100 Subject: [PATCH 131/731] Add changelog for 2.16.4 --- .../codeql-changelog/codeql-cli-2.16.1.rst | 2 +- .../codeql-changelog/codeql-cli-2.16.3.rst | 13 +- .../codeql-changelog/codeql-cli-2.16.4.rst | 156 ++++++++++++++++++ .../codeql-changelog/index.rst | 1 + 4 files changed, 165 insertions(+), 7 deletions(-) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst index e9f1dd20f344..7a1e6b6230b0 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.1.rst @@ -171,7 +171,7 @@ Python Ruby """" -* Deleted many deprecated predicates and classes with uppercase :code:`HTTP`, :code:`CSRF`, :code:`,` etc. in their names. Use the PascalCased versions instead. +* Deleted many deprecated predicates and classes with uppercase :code:`HTTP`, :code:`CSRF` etc. in their names. Use the PascalCased versions instead. * Deleted the deprecated :code:`getAUse` and :code:`getARhs` predicates from :code:`API::Node`, use :code:`getASource` and :code:`getASink` instead. * Deleted the deprecated :code:`disablesCertificateValidation` predicate from the :code:`Http` module. * Deleted the deprecated :code:`ParamsCall`, :code:`CookiesCall`, and :code:`ActionControllerControllerClass` classes from :code:`ActionController.qll`, use the simarly named classes from :code:`codeql.ruby.frameworks.Rails::Rails` instead. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst index af699a301c43..af7c4ce84b07 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.3.rst @@ -27,14 +27,15 @@ Bug Fixes New Features ~~~~~~~~~~~~ -* A new extractor option has been added to the Python extractor: :code:`python_executable_name`. - You can use this option to override the default process the extractor uses to find and select a Python executable. - Pass one of :code:`--extractor-option python_executable_name=py` or :code:`--extractor-option python_executable_name=python` or :code:`--extractor-option python_executable_name=python3` to commands that run the extractor, for example: :code:`codeql database create`. +* A new extractor option has been added to the Python extractor: + :code:`python_executable_name`. You can use this option to override the default process the extractor uses to find and select a Python executable. Pass one of + :code:`--extractor-option python_executable_name=py` or :code:`--extractor-option python_executable_name=python` or :code:`--extractor-option python_executable_name=python3` to commands that run the extractor, for example: :code:`codeql database create`. - On Windows machines, the Python extractor will expect to find :code:`py.exe` on the system :code:`PATH` by default. - If the Python executable has a different name, you can set the new extractor option to override this value and look for :code:`python.exe` or :code:`python3.exe`. + On Windows machines, the Python extractor will expect to find :code:`py.exe` on the system :code:`PATH` by default. If the Python executable has a different name, you can set the new extractor option to override this value and look for + :code:`python.exe` or :code:`python3.exe`. - For more information about using the extractor option with the CodeQL CLI, see `Extractor options `__. + For more information about using the extractor option with the CodeQL CLI, see + \ `Extractor options `__. Security Updates ~~~~~~~~~~~~~~~~ diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst new file mode 100644 index 000000000000..dccf2ce47963 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.4.rst @@ -0,0 +1,156 @@ +.. _codeql-cli-2.16.4: + +========================== +CodeQL 2.16.4 (2024-03-11) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.16.4 runs a total of 409 security queries when configured with the Default suite (covering 160 CWE). The Extended suite enables an additional 132 queries (covering 34 more CWE). 2 security queries have been added with this release. + +CodeQL CLI +---------- + +Potentially Breaking Changes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* A number of internal command line options (:code:`--builtin_functions_file`, :code:`--clang_builtin_functions`, + :code:`--disable-objc-default-synthesize-properties`, :code:`--list_builtin_functions`, :code:`--memory-limit-bytes`, + :code:`--mimic_config`, and :code:`--objc`) has been removed from the C/C++ extractor. It has never been possible to pass these options through the CLI itself, but some customers with advanced setups may have been passing them through internal undocumented interfaces. All of the removed options were already no-ops, and will now generate errors. + + The :code:`--verbosity` command line option has also been removed. The option was an alias for + :code:`--codeql-verbosity`, which should be used instead. + +Bug Fixes +~~~~~~~~~ + +* When parsing user-authored YAML files such as :code:`codeql-pack.yml`, + :code:`qlpack.yml`, :code:`codeql-workspace.yml`, and any YAML file defining a data extension, unquoted string values starting with a :code:`*` character are now correctly interpreted as YAML aliases. Previously, they were interpreted as strings, but with the first character skipped. + + If you see a parse error similar to :code:`while scanning an alias... unexpected` :code:`character found *(42)`,it likely means that you need to add quotes around the indicated string value. The most common cause is unquoted glob patterns that start with :code:`*`, such as :code:`include: **/*.yml`, which will need to be quoted as :code:`include: "**/*.yml"`. + +Improvements +~~~~~~~~~~~~ + +* The frontend of the C/C++ extractor has been updated, improving the extractor's reliability and increasing its ability to extract source code. + +Query Packs +----------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The "non-constant format string" query (:code:`cpp/non-constant-format`) has been converted to a :code:`path-problem` query. +* The new C/C++ dataflow and taint-tracking libraries (:code:`semmle.code.cpp.dataflow.new.DataFlow` and :code:`semmle.code.cpp.dataflow.new.TaintTracking`) now implicitly assume that dataflow and taint modelled via :code:`DataFlowFunction` and :code:`TaintFunction` always fully overwrite their buffers and thus act as flow barriers. As a result, many dataflow and taint-tracking queries now produce fewer false positives. To remove this assumption and go back to the previous behavior for a given model, one can override the new :code:`isPartialWrite` predicate. + +C# +"" + +* Most data flow queries that track flow from *remote* flow sources now use the current *threat model* configuration instead. This doesn't lead to any changes in the produced alerts (as the default configuration is *remote* flow sources) unless the threat model configuration is changed. The changed queries are :code:`cs/code-injection`, :code:`cs/command-line-injection`, :code:`cs/user-controlled-bypass`, :code:`cs/count-untrusted-data-external-api`, :code:`cs/untrusted-data-to-external-api`, :code:`cs/ldap-injection`, :code:`cs/log-forging`, :code:`cs/xml/missing-validation`, :code:`cs/redos`, :code:`cs/regex-injection`, :code:`cs/resource-injection`, :code:`cs/sql-injection`, :code:`cs/path-injection`, :code:`cs/unsafe-deserialization-untrusted-input`, :code:`cs/web/unvalidated-url-redirection`, :code:`cs/xml/insecure-dtd-handling`, :code:`cs/xml/xpath-injection`, :code:`cs/web/xss`, and :code:`cs/uncontrolled-format-string`. + +Java +"""" + +* To reduce the number of false positives in the query "Insertion of sensitive information into log files" (:code:`java/sensitive-log`), variables with names that contain "null" (case-insensitively) are no longer considered sources of sensitive information. + +Ruby +"""" + +* Calls to :code:`Object#method`, :code:`Object#public_method` and :code:`Object#singleton_method` with untrusted data are now recognised as sinks for code injection. +* Added additional request sources for Ruby on Rails. + +New Queries +~~~~~~~~~~~ + +Java +"""" + +* Added a new query :code:`java/android/insecure-local-key-gen` for finding instances of keys generated for biometric authentication in an insecure way. + +Python +"""""" + +* The query :code:`py/nosql-injection` for finding NoSQL injection vulnerabilities is now part of the default security suite. + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +Golang +"""""" + +* Fixed dataflow out of a :code:`map` using a :code:`range` statement. + +Java +"""" + +* Fixed the Java autobuilder overriding the version of Maven used by a project when the Maven wrapper :code:`mvnw` is in use and the :code:`maven-wrapper.jar` file is not present in the repository. +* Some flow steps related to :code:`android.text.Editable.toString` that were accidentally disabled have been re-enabled. + +Swift +""""" + +* Fixed an issue where :code:`TypeDecl.getFullName` would get stuck in an loop and fail when minor database inconsistencies are present. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* Improved support for flow through captured variables that properly adheres to inter-procedural control flow. +* We no longer make use of CodeQL database stats, which may affect join-orders in custom queries. It is therefore recommended to test performance of custom queries after upgrading to this version. + +Golang +"""""" + +* We have significantly improved the Go autobuilder to understand a greater range of project layouts, which allows Go source files to be analysed that could previously not be processed. +* Go 1.22 has been included in the range of supported Go versions. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added destructors for named objects to the intermediate representation. + +C# +"" + +* C# 12: Add QL library support (:code:`ExperimentalAttribute`) for the experimental attribute. +* C# 12: Add extractor and QL library support for :code:`ref readonly` parameters. +* C#: The table :code:`expr_compiler_generated` has been deleted and its content has been added to :code:`compiler_generated`. +* Data flow via get only properties like :code:`public object Obj { get; }` is now captured by the data flow library. + +Java +"""" + +* Java expressions with erroneous types (e.g. the result of a call whose callee couldn't be resolved during extraction) are now given a CodeQL :code:`ErrorType` more often. + +Python +"""""" + +* Fixed missing flow for dictionary updates (:code:`d[] = ...`) when :code:`` is a string constant not used in dictionary literals or as name of keyword-argument. +* Fixed flow for iterable unpacking (:code:`a,b = my_tuple`) when it occurs on top-level (module) scope. + +Ruby +"""" + +* Calls to :code:`I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. +* Calls to :code:`Arel::Nodes::SqlLiteral.new` are now modeled as instances of the :code:`SqlConstruction` concept, as well as propagating taint from their argument. +* Additional arguments beyond the first of calls to the :code:`ActiveRecord` methods :code:`select`, :code:`reselect`, :code:`order`, :code:`reorder`, :code:`joins`, :code:`group`, and :code:`pluck` are now recognized as sql injection sinks. +* Calls to several methods of :code:`ActiveRecord::Connection`, such as :code:`ActiveRecord::Connection#exec_query`, are now recognized as SQL executions, including those via subclasses. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index a04f37ad9e41..edec857c7407 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here Date: Tue, 12 Mar 2024 09:22:38 +0100 Subject: [PATCH 132/731] C#: Deduplicate not yet restored package names --- .../DependencyManager.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 724ae8f69fda..143ed49f4407 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -924,6 +924,17 @@ private void DownloadMissingPackages(List allFiles, ISet dllPa return; } + var multipleVersions = notYetDownloadedPackages + .GroupBy(p => p.Name) + .Where(g => g.Count() > 1) + .Select(g => g.Key); + + foreach (var package in multipleVersions) + { + logger.LogWarning($"Found multiple not yet restored packages with name '{package}'."); + notYetDownloadedPackages.Remove(new(package, PackageReferenceSource.PackagesConfig)); + } + logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored"); var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray(); From bf27f203d5d62776e369db0becfd51f936ccd7ca Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 4 Mar 2024 13:58:31 +0100 Subject: [PATCH 133/731] C#: Remove CIL extractor projects. --- .../ExtractorOptions.cs | 250 --------- .../InvalidAssemblyException.cs | 7 - .../Semmle.Extraction.CIL.Driver/Program.cs | 64 --- .../Properties/AssemblyInfo.cs | 35 -- .../Semmle.Extraction.CIL.Driver.csproj | 23 - .../Semmle.Extraction.CIL/Analyser.cs | 52 -- .../Semmle.Extraction.CIL/CachedFunction.cs | 68 --- .../Context.Factories.cs | 253 --------- .../Semmle.Extraction.CIL/Context.cs | 115 ---- .../Semmle.Extraction.CIL/EmptyContext.cs | 22 - .../Entities/ArrayType.cs | 74 --- .../Entities/Assembly.cs | 101 ---- .../Entities/Attribute.cs | 90 ---- .../Entities/Base/IExtractedEntity.cs | 16 - .../Entities/Base/IExtractionProduct.cs | 24 - .../Entities/Base/IGenericContext.cs | 24 - .../Entities/Base/LabelledEntity.cs | 36 -- .../Entities/Base/Tuple.cs | 22 - .../Entities/Base/UnlabelledEntity.cs | 29 - .../Entities/ByRefType.cs | 42 -- .../Entities/CilTypeKind.cs | 14 - .../Entities/ConstructedType.cs | 118 ---- .../Entities/CustomAttributeDecoder.cs | 63 --- .../Entities/DefinitionField.cs | 66 --- .../Entities/DefinitionMethod.cs | 299 ----------- .../Entities/ErrorType.cs | 31 -- .../Semmle.Extraction.CIL/Entities/Event.cs | 73 --- .../Entities/ExceptionRegion.cs | 56 -- .../Semmle.Extraction.CIL/Entities/Field.cs | 51 -- .../Semmle.Extraction.CIL/Entities/File.cs | 43 -- .../Semmle.Extraction.CIL/Entities/Folder.cs | 41 -- .../Entities/FunctionPointerType.cs | 114 ---- .../Entities/GenericsHelper.cs | 59 -- .../Entities/IFileOrFolder.cs | 6 - .../Entities/ILocation.cs | 6 - .../Semmle.Extraction.CIL/Entities/IMember.cs | 10 - .../Entities/IParameterizable.cs | 7 - .../Entities/ITypeSignature.cs | 7 - .../Entities/Instruction.cs | 508 ------------------ .../Entities/LocalVariable.cs | 35 -- .../Entities/MemberReferenceField.cs | 42 -- .../Entities/MemberReferenceMethod.cs | 95 ---- .../Semmle.Extraction.CIL/Entities/Method.cs | 131 ----- .../Entities/MethodImplementation.cs | 26 - .../Entities/MethodSpecificationMethod.cs | 104 ---- .../Entities/MethodTypeParameter.cs | 52 -- .../Entities/ModifiedType.cs | 49 -- .../Entities/NamedTypeIdWriter.cs | 61 --- .../Entities/Namespace.cs | 83 --- ...dataHandleType.FullyQualifiedNameParser.cs | 162 ------ .../Entities/NoMetadataHandleType.cs | 161 ------ .../Entities/Parameter.cs | 47 -- .../Entities/PdbSourceFile.cs | 32 -- .../Entities/PointerType.cs | 64 --- .../Entities/PrimitiveType.cs | 44 -- .../Entities/Property.cs | 91 ---- .../Entities/SignatureDecoder.cs | 289 ---------- .../Entities/SourceLocation.cs | 47 -- .../Semmle.Extraction.CIL/Entities/Type.cs | 209 ------- .../Entities/TypeAnnotation.cs | 11 - .../Entities/TypeContainer.cs | 17 - .../Entities/TypeDefinitionType.cs | 263 --------- .../Entities/TypeParameter.cs | 57 -- .../Entities/TypeReferenceType.cs | 104 ---- .../Entities/TypeSignatureDecoder.cs | 60 --- .../Entities/TypeTypeParameter.cs | 48 -- .../ICustomModifierReceiver.cs | 6 - csharp/extractor/Semmle.Extraction.CIL/Id.cs | 33 -- .../Semmle.Extraction.CIL/PDB/IPdb.cs | 26 - .../Semmle.Extraction.CIL/PDB/ISourceFile.cs | 20 - .../Semmle.Extraction.CIL/PDB/Location.cs | 63 --- .../Semmle.Extraction.CIL/PDB/MdProvider.cs | 37 -- .../PDB/MetadataPdbReader.cs | 99 ---- .../Semmle.Extraction.CIL/PDB/Method.cs | 17 - .../PDB/NativePdbReader.cs | 116 ---- .../Semmle.Extraction.CIL/PDB/PdbReader.cs | 19 - .../PDB/SequencePoint.cs | 30 -- .../Properties/AssemblyInfo.cs | 35 -- .../Semmle.Extraction.CIL.csproj | 34 -- .../extractor/Semmle.Extraction.CIL/Tuples.cs | 227 -------- 80 files changed, 6065 deletions(-) delete mode 100644 csharp/extractor/Semmle.Extraction.CIL.Driver/ExtractorOptions.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL.Driver/InvalidAssemblyException.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL.Driver/Program.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL.Driver/Properties/AssemblyInfo.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL.Driver/Semmle.Extraction.CIL.Driver.csproj delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Analyser.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/CachedFunction.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Context.Factories.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Context.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/EmptyContext.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ArrayType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Assembly.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Attribute.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractedEntity.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractionProduct.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IGenericContext.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Base/LabelledEntity.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Base/Tuple.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Base/UnlabelledEntity.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ByRefType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/CilTypeKind.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ConstructedType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/CustomAttributeDecoder.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionField.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionMethod.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ErrorType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Event.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ExceptionRegion.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Field.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/File.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Folder.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/FunctionPointerType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/GenericsHelper.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/IFileOrFolder.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ILocation.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/IMember.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/IParameterizable.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ITypeSignature.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Instruction.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/LocalVariable.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceField.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceMethod.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Method.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/MethodImplementation.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/MethodSpecificationMethod.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/MethodTypeParameter.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/ModifiedType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/NamedTypeIdWriter.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Namespace.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.FullyQualifiedNameParser.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Parameter.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/PdbSourceFile.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/PointerType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/PrimitiveType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Property.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/SignatureDecoder.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/SourceLocation.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/Type.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/TypeAnnotation.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/TypeContainer.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/TypeDefinitionType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/TypeParameter.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/TypeReferenceType.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/TypeSignatureDecoder.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Entities/TypeTypeParameter.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/ICustomModifierReceiver.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Id.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/IPdb.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/ISourceFile.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/Location.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/MdProvider.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/MetadataPdbReader.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/Method.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/NativePdbReader.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/PdbReader.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/PDB/SequencePoint.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Properties/AssemblyInfo.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Semmle.Extraction.CIL.csproj delete mode 100644 csharp/extractor/Semmle.Extraction.CIL/Tuples.cs diff --git a/csharp/extractor/Semmle.Extraction.CIL.Driver/ExtractorOptions.cs b/csharp/extractor/Semmle.Extraction.CIL.Driver/ExtractorOptions.cs deleted file mode 100644 index e371bf595177..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL.Driver/ExtractorOptions.cs +++ /dev/null @@ -1,250 +0,0 @@ -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Reflection.Metadata; -using System.Reflection.PortableExecutable; -using System.Runtime.InteropServices; -using Semmle.Util; - -namespace Semmle.Extraction.CIL.Driver -{ - ///

    - /// Information about a single assembly. - /// In particular, provides references between assemblies. - /// - internal class AssemblyInfo - { - public override string ToString() => Filename; - - private static AssemblyName CreateAssemblyName(MetadataReader mdReader, StringHandle name, System.Version version, StringHandle culture) - { - var cultureString = mdReader.GetString(culture); - - var assemblyName = new AssemblyName() - { - Name = mdReader.GetString(name), - Version = version - }; - - if (cultureString != "neutral") - assemblyName.CultureInfo = CultureInfo.GetCultureInfo(cultureString); - - return assemblyName; - } - - private static AssemblyName CreateAssemblyName(MetadataReader mdReader, AssemblyReference ar) - { - var an = CreateAssemblyName(mdReader, ar.Name, ar.Version, ar.Culture); - if (!ar.PublicKeyOrToken.IsNil) - an.SetPublicKeyToken(mdReader.GetBlobBytes(ar.PublicKeyOrToken)); - return an; - } - - private static AssemblyName CreateAssemblyName(MetadataReader mdReader, AssemblyDefinition ad) - { - var an = CreateAssemblyName(mdReader, ad.Name, ad.Version, ad.Culture); - if (!ad.PublicKey.IsNil) - an.SetPublicKey(mdReader.GetBlobBytes(ad.PublicKey)); - return an; - } - - /// - /// Initializes a new instance of the class. - /// - /// Path of the assembly. - /// - /// Thrown when the input file is not a valid assembly. - /// - public AssemblyInfo(string path) - { - Filename = path; - - // Attempt to open the file and see if it's a valid assembly. - using var stream = File.OpenRead(path); - using var peReader = new PEReader(stream); - try - { - if (!peReader.HasMetadata) - throw new InvalidAssemblyException(); - - var mdReader = peReader.GetMetadataReader(); - - if (!mdReader.IsAssembly) - throw new InvalidAssemblyException(); - - // Get our own assembly name - Name = CreateAssemblyName(mdReader, mdReader.GetAssemblyDefinition()); - - References = mdReader.AssemblyReferences - .Select(r => mdReader.GetAssemblyReference(r)) - .Select(ar => CreateAssemblyName(mdReader, ar)) - .ToArray(); - } - catch (System.BadImageFormatException) - { - // This failed on one of the Roslyn tests that includes - // a deliberately malformed assembly. - // In this case, we just skip the extraction of this assembly. - throw new InvalidAssemblyException(); - } - } - - public AssemblyName Name { get; } - public string Filename { get; } - public bool Extract { get; set; } - public AssemblyName[] References { get; } - } - - /// - /// Helper to manage a collection of assemblies. - /// Resolves references between assemblies and determines which - /// additional assemblies need to be extracted. - /// - internal class AssemblyList - { - private class AssemblyNameComparer : IEqualityComparer - { - bool IEqualityComparer.Equals(AssemblyName? x, AssemblyName? y) => - object.ReferenceEquals(x, y) || - x?.Name == y?.Name && x?.Version == y?.Version; - - int IEqualityComparer.GetHashCode(AssemblyName obj) => - (obj.Name, obj.Version).GetHashCode(); - } - - private readonly Dictionary assembliesRead = new Dictionary(new AssemblyNameComparer()); - - public void AddFile(string assemblyPath, bool extractAll) - { - if (!filesAnalyzed.Contains(assemblyPath)) - { - filesAnalyzed.Add(assemblyPath); - try - { - var info = new AssemblyInfo(assemblyPath) - { - Extract = extractAll - }; - if (!assembliesRead.ContainsKey(info.Name)) - assembliesRead.Add(info.Name, info); - } - catch (InvalidAssemblyException) - { } - } - } - - public IEnumerable AssembliesToExtract => assembliesRead.Values.Where(info => info.Extract); - - private IEnumerable AssembliesToReference => AssembliesToExtract.SelectMany(info => info.References); - - public void ResolveReferences() - { - var assembliesToReference = new Stack(AssembliesToReference); - - while (assembliesToReference.Any()) - { - var item = assembliesToReference.Pop(); - if (assembliesRead.TryGetValue(item, out var info)) - { - if (!info.Extract) - { - info.Extract = true; - foreach (var reference in info.References) - assembliesToReference.Push(reference); - } - } - else - { - MissingReferences.Add(item); - } - } - } - - private readonly HashSet filesAnalyzed = new HashSet(); - public HashSet MissingReferences { get; } = new HashSet(); - } - - /// - /// Parses the command line and collates a list of DLLs/EXEs to extract. - /// - internal class ExtractorOptions : CommonOptions - { - private readonly AssemblyList assemblyList = new AssemblyList(); - - public ExtractorOptions(string[] args) - { - this.ParseArguments(args.Append("--pdb").ToArray()); - - AddFrameworkDirectories(false); - - assemblyList.ResolveReferences(); - AssembliesToExtract = assemblyList.AssembliesToExtract.ToArray(); - } - - public void AddDirectory(string directory, bool extractAll) - { - foreach (var file in - Directory.EnumerateFiles(directory, "*.dll", SearchOption.AllDirectories). - Concat(Directory.EnumerateFiles(directory, "*.exe", SearchOption.AllDirectories))) - { - assemblyList.AddFile(file, extractAll); - } - } - - private void AddFrameworkDirectories(bool extractAll) - { - AddDirectory(RuntimeEnvironment.GetRuntimeDirectory(), extractAll); - } - - private void AddFileOrDirectory(string path) - { - path = Path.GetFullPath(path); - if (File.Exists(path)) - { - assemblyList.AddFile(path, true); - var directory = Path.GetDirectoryName(path); - if (directory is null) - { - throw new InternalError($"Directory of path '{path}' is null"); - } - AddDirectory(directory, false); - } - else if (Directory.Exists(path)) - { - AddDirectory(path, true); - } - } - - public IEnumerable AssembliesToExtract { get; } - - /// - /// Gets the assemblies that were referenced but were not available to be - /// extracted. This is not an error, it just means that the database is not - /// as complete as it could be. - /// - public IEnumerable MissingReferences => assemblyList.MissingReferences; - - public override bool HandleFlag(string flag, bool value) - { - switch (flag) - { - case "dotnet": - if (value) - AddFrameworkDirectories(true); - return true; - default: - return base.HandleFlag(flag, value); - } - } - - public override bool HandleArgument(string argument) - { - AddFileOrDirectory(argument); - return true; - } - - public override void InvalidArgument(string argument) { } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL.Driver/InvalidAssemblyException.cs b/csharp/extractor/Semmle.Extraction.CIL.Driver/InvalidAssemblyException.cs deleted file mode 100644 index 2686442a08d5..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL.Driver/InvalidAssemblyException.cs +++ /dev/null @@ -1,7 +0,0 @@ -using System; - -namespace Semmle.Extraction.CIL.Driver -{ - public class InvalidAssemblyException : Exception - { } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL.Driver/Program.cs b/csharp/extractor/Semmle.Extraction.CIL.Driver/Program.cs deleted file mode 100644 index 2009fe1c94f6..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL.Driver/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Diagnostics; -using System.Linq; -using System.Threading.Tasks; -using Semmle.Util.Logging; - -namespace Semmle.Extraction.CIL.Driver -{ - public static class Program - { - private static void DisplayHelp() - { - Console.WriteLine("CIL command line extractor"); - Console.WriteLine(); - Console.WriteLine("Usage: Semmle.Extraction.CIL.Driver.exe [options] path ..."); - Console.WriteLine(" --verbose Turn on verbose output"); - Console.WriteLine(" --dotnet Extract the .Net Framework"); - Console.WriteLine(" --nocache Overwrite existing trap files"); - Console.WriteLine(" --no-pdb Do not extract PDB files"); - Console.WriteLine(" path A directory/dll/exe to analyze"); - } - - private static void ExtractAssembly(string assemblyPath, ILogger logger, CommonOptions options) - { - var sw = new Stopwatch(); - sw.Start(); - Analyser.ExtractCIL(assemblyPath, logger, options, out _, out _); - sw.Stop(); - logger.Log(Severity.Info, " {0} ({1})", assemblyPath, sw.Elapsed); - } - - public static void Main(string[] args) - { - if (args.Length == 0) - { - DisplayHelp(); - return; - } - - var options = new ExtractorOptions(args); - using ILogger logger = new ConsoleLogger(options.Verbosity, logThreadId: false); - - var actions = options.AssembliesToExtract - .Select(asm => asm.Filename) - .Select(filename => () => ExtractAssembly(filename, logger, options)) - .ToArray(); - - foreach (var missingRef in options.MissingReferences) - logger.LogInfo(" Missing assembly " + missingRef); - - var sw = new Stopwatch(); - sw.Start(); - var piOptions = new ParallelOptions - { - MaxDegreeOfParallelism = options.Threads - }; - - Parallel.Invoke(piOptions, actions); - - sw.Stop(); - logger.Log(Severity.Info, "Extraction completed in {0}", sw.Elapsed); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL.Driver/Properties/AssemblyInfo.cs b/csharp/extractor/Semmle.Extraction.CIL.Driver/Properties/AssemblyInfo.cs deleted file mode 100644 index 56f7f94c1437..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL.Driver/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Semmle.Extraction.CIL.Driver")] -[assembly: AssemblyDescription("Semmle CIL extractor")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Semmle Ltd")] -[assembly: AssemblyProduct("Semmle.Extraction.CIL.Driver")] -[assembly: AssemblyCopyright("Copyright © Semmle 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("5642ae68-9c26-43c9-bd3c-49923dddf02d")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/csharp/extractor/Semmle.Extraction.CIL.Driver/Semmle.Extraction.CIL.Driver.csproj b/csharp/extractor/Semmle.Extraction.CIL.Driver/Semmle.Extraction.CIL.Driver.csproj deleted file mode 100644 index b0a27245ac25..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL.Driver/Semmle.Extraction.CIL.Driver.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - Exe - net8.0 - Semmle.Extraction.CIL.Driver - Semmle.Extraction.CIL.Driver - false - win-x64;linux-x64;osx-x64 - enable - - - - - - - - - - - - - diff --git a/csharp/extractor/Semmle.Extraction.CIL/Analyser.cs b/csharp/extractor/Semmle.Extraction.CIL/Analyser.cs deleted file mode 100644 index 50288aadd948..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Analyser.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using Semmle.Util; -using Semmle.Util.Logging; -using Semmle.Extraction.CIL.Entities; - -namespace Semmle.Extraction.CIL -{ - public static class Analyser - { - private static void ExtractCIL(TracingExtractor extractor, TrapWriter trapWriter, bool extractPdbs) - { - using var cilContext = new Context(extractor, trapWriter, extractor.OutputPath, extractPdbs); - cilContext.Populate(new Assembly(cilContext)); - cilContext.PopulateAll(); - } - - /// - /// Main entry point to the CIL extractor. - /// Call this to extract a given assembly. - /// - /// The trap layout. - /// The full path of the assembly to extract. - /// The logger. - /// True to overwrite existing trap file. - /// Whether to extract PDBs. - /// The path of the trap file. - /// Whether the file was extracted (false=cached). - public static void ExtractCIL(string assemblyPath, ILogger logger, CommonOptions options, out string trapFile, out bool extracted) - { - trapFile = ""; - extracted = false; - try - { - var canonicalPathCache = CanonicalPathCache.Create(logger, 1000); - var pathTransformer = new PathTransformer(canonicalPathCache); - var extractor = new TracingExtractor(assemblyPath, logger, pathTransformer, options); - var transformedAssemblyPath = pathTransformer.Transform(assemblyPath); - using var trapWriter = transformedAssemblyPath.WithSuffix(".cil").CreateTrapWriter(logger, options.TrapCompression, discardDuplicates: true); - trapFile = trapWriter.TrapFile; - if (!options.Cache || !System.IO.File.Exists(trapFile)) - { - ExtractCIL(extractor, trapWriter, options.PDB); - extracted = true; - } - } - catch (Exception ex) // lgtm[cs/catch-of-all-exceptions] - { - logger.LogError(string.Format("Exception extracting {0}: {1}", assemblyPath, ex)); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/CachedFunction.cs b/csharp/extractor/Semmle.Extraction.CIL/CachedFunction.cs deleted file mode 100644 index 4f7ce5a7ef18..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/CachedFunction.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL -{ - /// - /// A factory and a cache for mapping source entities to target entities. - /// Could be considered as a memoizer. - /// - /// The type of the source. - /// The type of the generated object. - public class CachedFunction where TSrc : notnull - { - private readonly Func generator; - private readonly Dictionary cache; - - /// - /// Initializes the factory with a given mapping. - /// - /// The mapping. - public CachedFunction(Func g) - { - generator = g; - cache = new Dictionary(); - } - - /// - /// Gets the target for a given source. - /// Create it if it does not exist. - /// - /// The source object. - /// The created object. - public TTarget this[TSrc src] - { - get - { - if (!cache.TryGetValue(src, out var result)) - { - result = generator(src); - cache[src] = result; - } - return result; - } - } - } - - /// - /// A factory for mapping a pair of source entities to a target entity. - /// - /// Source entity type 1. - /// Source entity type 2. - /// The target type. - public class CachedFunction - { - private readonly CachedFunction<(TSrcEntity1, TSrcEntity2), TTarget> factory; - - /// - /// Initializes the factory with a given mapping. - /// - /// The mapping. - public CachedFunction(Func g) - { - factory = new CachedFunction<(TSrcEntity1, TSrcEntity2), TTarget>(p => g(p.Item1, p.Item2)); - } - - public TTarget this[TSrcEntity1 s1, TSrcEntity2 s2] => factory[(s1, s2)]; - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Context.Factories.cs b/csharp/extractor/Semmle.Extraction.CIL/Context.Factories.cs deleted file mode 100644 index 1c90e693a5f3..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Context.Factories.cs +++ /dev/null @@ -1,253 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection.Metadata; -using Semmle.Extraction.CIL.Entities; - -namespace Semmle.Extraction.CIL -{ - /// - /// Provides methods for creating and caching various entities. - /// - internal sealed partial class Context - { - private readonly Dictionary ids = new Dictionary(); - - internal T Populate(T e) where T : IExtractedEntity - { - if (e.Label.Valid) - { - return e; // Already populated - } - - if (ids.TryGetValue(e, out var existing)) - { - // It exists already - e.Label = existing; - } - else - { - e.Label = GetNewLabel(); - DefineLabel(e); - ids.Add(e, e.Label); - PopulateLater(() => - { - foreach (var c in e.Contents) - c.Extract(this); - }); -#if DEBUG_LABELS - using var writer = new EscapingTextWriter(); - e.WriteId(writer); - var id = writer.ToString(); - - if (debugLabels.TryGetValue(id, out var previousEntity)) - { - Extractor.Message(new Message("Duplicate trap ID", id, null, severity: Util.Logging.Severity.Warning)); - } - else - { - debugLabels.Add(id, e); - } -#endif - } - return e; - } - -#if DEBUG_LABELS - private readonly Dictionary debugLabels = new Dictionary(); -#endif - - public IExtractedEntity Create(Handle h) - { - var entity = CreateGeneric(defaultGenericContext, h); - return entity; - } - - // Lazily cache primitive types. - private readonly PrimitiveType[] primitiveTypes = new PrimitiveType[(int)PrimitiveTypeCode.Object + 1]; - - public PrimitiveType Create(PrimitiveTypeCode code) - { - var e = primitiveTypes[(int)code]; - - if (e is null) - { - e = new PrimitiveType(this, code) - { - Label = GetNewLabel() - }; - DefineLabel(e); - primitiveTypes[(int)code] = e; - } - - return e; - } - - /// - /// Creates an entity from a Handle in a GenericContext. - /// The type of the returned entity depends on the type of the handle. - /// The GenericContext is needed because some handles are generics which - /// need to be expanded in terms of the current instantiation. If this sounds - /// complex, you are right. - /// - /// The pair (h,genericContext) is cached in case it is needed again. - /// - /// The handle of the entity. - /// The generic context. - /// - public IExtractedEntity CreateGeneric(IGenericContext genericContext, Handle h) => genericHandleFactory[genericContext, h]; - - private readonly IGenericContext defaultGenericContext; - - private IExtractedEntity CreateGenericHandle(IGenericContext gc, Handle handle) - { - IExtractedEntity entity; - switch (handle.Kind) - { - case HandleKind.MethodDefinition: - entity = new DefinitionMethod(gc, (MethodDefinitionHandle)handle); - break; - case HandleKind.MemberReference: - entity = Create(gc, (MemberReferenceHandle)handle); - break; - case HandleKind.MethodSpecification: - entity = new MethodSpecificationMethod(gc, (MethodSpecificationHandle)handle); - break; - case HandleKind.FieldDefinition: - entity = new DefinitionField(gc.Context, (FieldDefinitionHandle)handle); - break; - case HandleKind.TypeReference: - var tr = new TypeReferenceType(this, (TypeReferenceHandle)handle); - if (tr.TryGetPrimitiveType(out var pt)) - // Map special names like `System.Int32` to `int` - return pt; - entity = tr; - break; - case HandleKind.TypeSpecification: - return Entities.Type.DecodeType(gc, (TypeSpecificationHandle)handle); - case HandleKind.TypeDefinition: - entity = new TypeDefinitionType(this, (TypeDefinitionHandle)handle); - break; - case HandleKind.StandaloneSignature: - var signature = MdReader.GetStandaloneSignature((StandaloneSignatureHandle)handle); - var method = signature.DecodeMethodSignature(gc.Context.TypeSignatureDecoder, gc); - entity = new FunctionPointerType(this, method); - break; - default: - throw new InternalError("Unhandled handle kind " + handle.Kind); - } - - Populate(entity); - return entity; - } - - private IExtractedEntity Create(IGenericContext gc, MemberReferenceHandle handle) - { - var mr = MdReader.GetMemberReference(handle); - switch (mr.GetKind()) - { - case MemberReferenceKind.Method: - return new MemberReferenceMethod(gc, handle); - case MemberReferenceKind.Field: - return new MemberReferenceField(gc, handle); - default: - throw new InternalError("Unhandled member reference handle"); - } - } - - /// - /// Gets the string for a string handle. - /// - /// The string handle. - /// The string. - public string GetString(StringHandle h) => MdReader.GetString(h); - - #region Namespaces - - private readonly CachedFunction namespaceFactory; - - public Namespace CreateNamespace(StringHandle fqn) => namespaceFactory[fqn]; - - private readonly Lazy globalNamespace, systemNamespace; - - /// - /// The entity representing the global namespace. - /// - public Namespace GlobalNamespace => globalNamespace.Value; - - /// - /// The entity representing the System namespace. - /// - public Namespace SystemNamespace => systemNamespace.Value; - - /// - /// Creates a namespace from a fully-qualified name. - /// - /// The fully-qualified namespace name. - /// The namespace entity. - private Namespace CreateNamespace(string fqn) => Populate(new Namespace(this, fqn)); - - private readonly CachedFunction namespaceDefinitionFactory; - - /// - /// Creates a namespace from a namespace handle. - /// - /// The handle of the namespace. - /// The namespace entity. - public Namespace Create(NamespaceDefinitionHandle handle) => namespaceDefinitionFactory[handle]; - - private Namespace CreateNamespace(NamespaceDefinitionHandle handle) - { - if (handle.IsNil) - return GlobalNamespace; - var nd = MdReader.GetNamespaceDefinition(handle); - return Populate(new Namespace(this, GetString(nd.Name), Create(nd.Parent))); - } - #endregion - - #region Locations - private readonly CachedFunction sourceFiles; - private readonly CachedFunction folders; - private readonly CachedFunction sourceLocations; - - /// - /// Creates a source file entity from a PDB source file. - /// - /// The PDB source file. - /// A source file entity. - public PdbSourceFile CreateSourceFile(PDB.ISourceFile file) => sourceFiles[file]; - - /// - /// Creates a folder entity with the given path. - /// - /// The path of the folder. - /// A folder entity. - public Folder CreateFolder(PathTransformer.ITransformedPath path) => folders[path]; - - /// - /// Creates a source location. - /// - /// The source location from PDB. - /// A source location entity. - public PdbSourceLocation CreateSourceLocation(PDB.Location loc) => sourceLocations[loc]; - - #endregion - - private readonly CachedFunction genericHandleFactory; - - /// - /// Gets the short name of a member, without the preceding interface qualifier. - /// - /// The handle of the name. - /// The short name. - public string ShortName(StringHandle handle) - { - var str = MdReader.GetString(handle); - if (str.EndsWith(".ctor")) - return ".ctor"; - if (str.EndsWith(".cctor")) - return ".cctor"; - var dot = str.LastIndexOf('.'); - return dot == -1 ? str : str.Substring(dot + 1); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Context.cs b/csharp/extractor/Semmle.Extraction.CIL/Context.cs deleted file mode 100644 index 9aa1917dd3e4..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Context.cs +++ /dev/null @@ -1,115 +0,0 @@ -using System; -using System.IO; -using System.Reflection.Metadata; -using System.Reflection.PortableExecutable; - -namespace Semmle.Extraction.CIL -{ - /// - /// Extraction context for CIL extraction. - /// Adds additional context that is specific for CIL extraction. - /// One context = one DLL/EXE. - /// - internal sealed partial class Context : Extraction.Context, IDisposable - { - private readonly FileStream stream; - private Entities.Assembly? assemblyNull; - public MetadataReader MdReader { get; } - public PEReader PeReader { get; } - public string AssemblyPath { get; } - public Entities.Assembly Assembly - { - get { return assemblyNull!; } - set { assemblyNull = value; } - } - public PDB.IPdb? Pdb { get; } - - public Context(Extractor extractor, TrapWriter trapWriter, string assemblyPath, bool extractPdbs) - : base(extractor, trapWriter) - { - this.AssemblyPath = assemblyPath; - stream = File.OpenRead(assemblyPath); - PeReader = new PEReader(stream, PEStreamOptions.PrefetchEntireImage); - MdReader = PeReader.GetMetadataReader(); - TypeSignatureDecoder = new Entities.TypeSignatureDecoder(this); - - globalNamespace = new Lazy(() => Populate(new Entities.Namespace(this, "", null))); - systemNamespace = new Lazy(() => Populate(new Entities.Namespace(this, "System"))); - genericHandleFactory = new CachedFunction(CreateGenericHandle); - namespaceFactory = new CachedFunction(n => CreateNamespace(MdReader.GetString(n))); - namespaceDefinitionFactory = new CachedFunction(CreateNamespace); - sourceFiles = new CachedFunction(path => new Entities.PdbSourceFile(this, path)); - folders = new CachedFunction(path => new Entities.Folder(this, path)); - sourceLocations = new CachedFunction(location => new Entities.PdbSourceLocation(this, location)); - - defaultGenericContext = new EmptyContext(this); - - if (extractPdbs) - { - Pdb = PDB.PdbReader.Create(assemblyPath, PeReader); - if (Pdb is not null) - { - Extractor.Logger.Log(Util.Logging.Severity.Info, string.Format("Found PDB information for {0}", assemblyPath)); - } - } - } - - public void Dispose() - { - if (Pdb is not null) - Pdb.Dispose(); - PeReader.Dispose(); - stream.Dispose(); - } - - /// - /// Extract the contents of a given entity. - /// - /// The entity to extract. - public void Extract(IExtractedEntity entity) - { - foreach (var content in entity.Contents) - { - content.Extract(this); - } - } - - public void WriteAssemblyPrefix(TextWriter trapFile) - { - var def = MdReader.GetAssemblyDefinition(); - trapFile.Write(GetString(def.Name)); - trapFile.Write('_'); - trapFile.Write(def.Version.ToString()); - trapFile.Write(Entities.Type.AssemblyTypeNameSeparator); - } - - public Entities.TypeSignatureDecoder TypeSignatureDecoder { get; } - - /// - /// A type used to signify something we can't handle yet. - /// Specifically, function pointers (used in C++). - /// - public Entities.Type ErrorType - { - get - { - var errorType = new Entities.ErrorType(this); - Populate(errorType); - return errorType; - } - } - - /// - /// Attempt to locate debugging information for a particular method. - /// - /// Returns null on failure, for example if there was no PDB information found for the - /// DLL, or if the particular method is compiler generated or doesn't come from source code. - /// - /// The handle of the method. - /// The debugging information, or null if the information could not be located. - public PDB.Method? GetMethodDebugInformation(MethodDefinitionHandle handle) - { - return Pdb?.GetMethod(handle.ToDebugInformationHandle()); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/EmptyContext.cs b/csharp/extractor/Semmle.Extraction.CIL/EmptyContext.cs deleted file mode 100644 index 8404bc265450..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/EmptyContext.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL -{ - /// - /// A generic context which does not contain any type parameters. - /// - internal class EmptyContext : IGenericContext - { - public EmptyContext(Context cx) - { - Context = cx; - } - - public Context Context { get; } - - public IEnumerable TypeParameters { get { yield break; } } - - public IEnumerable MethodParameters { get { yield break; } } - - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ArrayType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ArrayType.cs deleted file mode 100644 index 0f4138e20c51..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ArrayType.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// An array type. - /// - internal sealed class ArrayType : Type - { - private readonly Type elementType; - private readonly int rank; - - public ArrayType(Context cx, Type elementType, int rank) : base(cx) - { - this.rank = rank; - this.elementType = elementType; - } - - public ArrayType(Context cx, Type elementType) : this(cx, elementType, 1) - { - } - - public override bool Equals(object? obj) - { - return obj is ArrayType array && elementType.Equals(array.elementType) && rank == array.rank; - } - - public override int GetHashCode() => HashCode.Combine(elementType, rank); - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - elementType.WriteId(trapFile, inContext); - trapFile.Write('['); - for (var i = 1; i < rank; ++i) - { - trapFile.Write(','); - } - trapFile.Write(']'); - } - - public override string Name => elementType.Name + "[]"; - - public override Namespace ContainingNamespace => Context.SystemNamespace; - - public override Type? ContainingType => null; - - public override int ThisTypeParameterCount => elementType.ThisTypeParameterCount; - - public override CilTypeKind Kind => CilTypeKind.Array; - - public override Type Construct(IEnumerable typeArguments) => Context.Populate(new ArrayType(Context, elementType.Construct(typeArguments))); - - public override Type SourceDeclaration => Context.Populate(new ArrayType(Context, elementType.SourceDeclaration)); - - public override IEnumerable Contents - { - get - { - foreach (var c in base.Contents) - yield return c; - - yield return Tuples.cil_array_type(this, elementType, rank); - } - } - - public override void WriteAssemblyPrefix(TextWriter trapFile) => elementType.WriteAssemblyPrefix(trapFile); - - public override IEnumerable GenericArguments => elementType.GenericArguments; - - public override IEnumerable TypeParameters => elementType.TypeParameters; - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Assembly.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Assembly.cs deleted file mode 100644 index 5350f010311a..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Assembly.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System.Collections.Generic; -using System.Globalization; -using System.Reflection; -using Semmle.Extraction.Entities; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// An assembly to extract. - /// - internal class Assembly : LabelledEntity, ILocation - { - private readonly File file; - private readonly AssemblyName assemblyName; - - public Assembly(Context cx) : base(cx) - { - cx.Assembly = this; - var def = cx.MdReader.GetAssemblyDefinition(); - - assemblyName = new AssemblyName - { - Name = cx.MdReader.GetString(def.Name), - Version = def.Version, - CultureInfo = new CultureInfo(cx.MdReader.GetString(def.Culture)) - }; - - if (!def.PublicKey.IsNil) - assemblyName.SetPublicKey(cx.MdReader.GetBlobBytes(def.PublicKey)); - - file = new File(cx, cx.AssemblyPath); - } - - public override void WriteId(EscapingTextWriter trapFile) - { - trapFile.Write(FullName); - trapFile.Write("#file:///"); - trapFile.Write(Context.AssemblyPath.Replace("\\", "/")); - trapFile.Write(";assembly"); - } - - public override bool Equals(object? obj) - { - return GetType() == obj?.GetType() && Equals(file, ((Assembly)obj).file); - } - - public override int GetHashCode() => 7 * file.GetHashCode(); - - private string FullName => assemblyName.GetPublicKey() is null ? assemblyName.FullName + ", PublicKeyToken=null" : assemblyName.FullName; - - public override IEnumerable Contents - { - get - { - yield return file; - yield return Tuples.assemblies(this, file, FullName, assemblyName.Name ?? string.Empty, assemblyName.Version?.ToString() ?? string.Empty); - - if (Context.Pdb is not null) - { - foreach (var f in Context.Pdb.SourceFiles) - { - yield return Context.CreateSourceFile(f); - } - } - - foreach (var handle in Context.MdReader.TypeDefinitions) - { - IExtractionProduct? product = null; - try - { - product = Context.Create(handle); - } - catch (InternalError e) - { - Context.ExtractionError("Error processing type definition", e.Message, GeneratedLocation.Create(Context), e.StackTrace); - } - - // Limitation of C#: Cannot yield return inside a try-catch. - if (product is not null) - yield return product; - } - - foreach (var handle in Context.MdReader.MethodDefinitions) - { - IExtractionProduct? product = null; - try - { - product = Context.Create(handle); - } - catch (InternalError e) - { - Context.ExtractionError("Error processing bytecode", e.Message, GeneratedLocation.Create(Context), e.StackTrace); - } - - if (product is not null) - yield return product; - } - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Attribute.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Attribute.cs deleted file mode 100644 index a42594d35aac..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Attribute.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// Entity representing a CIL attribute. - /// - internal sealed class Attribute : UnlabelledEntity - { - private readonly CustomAttributeHandle handle; - private readonly CustomAttribute attrib; - private readonly IExtractedEntity @object; - - public Attribute(Context cx, IExtractedEntity @object, CustomAttributeHandle handle) : base(cx) - { - attrib = cx.MdReader.GetCustomAttribute(handle); - this.handle = handle; - this.@object = @object; - } - - public override bool Equals(object? obj) - { - return obj is Attribute attribute && handle.Equals(attribute.handle); - } - - public override int GetHashCode() => handle.GetHashCode(); - - public override IEnumerable Contents - { - get - { - var constructor = (Method)Context.Create(attrib.Constructor); - yield return constructor; - - yield return Tuples.cil_attribute(this, @object, constructor); - - CustomAttributeValue decoded; - - try - { - decoded = attrib.DecodeValue(new CustomAttributeDecoder(Context)); - } - catch - { - Context.Extractor.Logger.Log(Util.Logging.Severity.Info, - $"Attribute decoding is partial. Decoding attribute {constructor.DeclaringType.GetQualifiedName()} failed on {@object}."); - yield break; - } - - for (var index = 0; index < decoded.FixedArguments.Length; ++index) - { - var stringValue = GetStringValue(decoded.FixedArguments[index].Type, decoded.FixedArguments[index].Value); - yield return Tuples.cil_attribute_positional_argument(this, index, stringValue); - } - - foreach (var p in decoded.NamedArguments) - { - var stringValue = GetStringValue(p.Type, p.Value); - yield return Tuples.cil_attribute_named_argument(this, p.Name!, stringValue); - } - } - } - - private static string GetStringValue(Type type, object? value) - { - if (value is System.Collections.Immutable.ImmutableArray> values) - { - return "[" + string.Join(",", values.Select(v => GetStringValue(v.Type, v.Value))) + "]"; - } - - if (type.GetQualifiedName() == "System.Type" && - value is Type t) - { - return t.GetQualifiedName(); - } - - return value?.ToString() ?? "null"; - } - - public static IEnumerable Populate(Context cx, IExtractedEntity @object, CustomAttributeHandleCollection attributes) - { - foreach (var attrib in attributes) - { - yield return new Attribute(cx, @object, attrib); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractedEntity.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractedEntity.cs deleted file mode 100644 index d94b94df8a80..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractedEntity.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL -{ - /// - /// A CIL entity which has been extracted. - /// - internal interface IExtractedEntity : IExtractionProduct, IEntity - { - /// - /// The contents of the entity. - /// - - IEnumerable Contents { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractionProduct.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractionProduct.cs deleted file mode 100644 index 231a311a78cb..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IExtractionProduct.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace Semmle.Extraction.CIL -{ - /// - /// Something that is extracted from an entity. - /// - /// - /// - /// The extraction algorithm proceeds as follows: - /// - Construct entity - /// - Call Extract() - /// - IExtractedEntity check if already extracted - /// - Enumerate Contents to produce more extraction products - /// - Extract these until there is nothing left to extract - /// - internal interface IExtractionProduct - { - /// - /// Perform further extraction/population of this item as necessary. - /// - /// - /// The extraction context. - void Extract(Context cx); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IGenericContext.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IGenericContext.cs deleted file mode 100644 index babe0bdfd652..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/IGenericContext.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL -{ - /// - /// When we decode a type/method signature, we need access to - /// generic parameters. - /// - internal interface IGenericContext - { - Context Context { get; } - - /// - /// The list of generic type parameters/arguments, including type parameters/arguments of - /// containing types. - /// - IEnumerable TypeParameters { get; } - - /// - /// The list of generic method parameters/arguments. - /// - IEnumerable MethodParameters { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/LabelledEntity.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/LabelledEntity.cs deleted file mode 100644 index 4c872f332408..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/LabelledEntity.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL -{ - /// - /// An entity that needs to be populated during extraction. - /// This assigns a key and optionally extracts its contents. - /// - internal abstract class LabelledEntity : Extraction.LabelledEntity, IExtractedEntity - { - public override Context Context => (Context)base.Context; - - protected LabelledEntity(Context cx) : base(cx) - { - } - - public override Microsoft.CodeAnalysis.Location ReportingLocation => throw new NotImplementedException(); - - public void Extract(Context cx2) - { - cx2.Populate(this); - } - - public override string ToString() - { - using var writer = new EscapingTextWriter(); - WriteQuotedId(writer); - return writer.ToString(); - } - - public override TrapStackBehaviour TrapStackBehaviour => TrapStackBehaviour.NoLabel; - - public abstract IEnumerable Contents { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/Tuple.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/Tuple.cs deleted file mode 100644 index 58c15dd21f61..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/Tuple.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Semmle.Extraction.CIL -{ - /// - /// A tuple that is an extraction product. - /// - internal class Tuple : IExtractionProduct - { - private readonly Extraction.Tuple tuple; - - public Tuple(string name, params object[] args) - { - tuple = new Extraction.Tuple(name, args); - } - - public void Extract(Context cx) - { - cx.TrapWriter.Emit(tuple); - } - - public override string ToString() => tuple.ToString(); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/UnlabelledEntity.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/UnlabelledEntity.cs deleted file mode 100644 index de563080d4b8..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Base/UnlabelledEntity.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL -{ - /// - /// An entity that has contents to extract. There is no need to populate - /// a key as it's done in the constructor. - /// - internal abstract class UnlabelledEntity : Extraction.UnlabelledEntity, IExtractedEntity - { - public override Context Context => (Context)base.Context; - - protected UnlabelledEntity(Context cx) : base(cx) - { - } - - public override Microsoft.CodeAnalysis.Location ReportingLocation => throw new NotImplementedException(); - - public void Extract(Context cx2) - { - cx2.Extract(this); - } - - public override TrapStackBehaviour TrapStackBehaviour => TrapStackBehaviour.NoLabel; - - public abstract IEnumerable Contents { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ByRefType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ByRefType.cs deleted file mode 100644 index 5b9ae9fd1aae..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ByRefType.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// Types that are passed by reference are not written directly to trap files. Instead, the annotation is stored on - /// the entity. - /// - internal sealed class ByRefType : Type - { - public ByRefType(Context cx, Type elementType) : base(cx) - { - ElementType = elementType; - } - - public override CilTypeKind Kind => throw new NotImplementedException(); - - public override Namespace? ContainingNamespace => throw new NotImplementedException(); - - public override Type? ContainingType => throw new NotImplementedException(); - - public override int ThisTypeParameterCount => throw new NotImplementedException(); - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override Type Construct(IEnumerable typeArguments) => throw new NotImplementedException(); - - public override string Name => $"{ElementType.Name}&"; - - public Type ElementType { get; } - - public override void WriteAssemblyPrefix(TextWriter trapFile) => throw new NotImplementedException(); - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - ElementType.WriteId(trapFile, inContext); - trapFile.Write('&'); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/CilTypeKind.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/CilTypeKind.cs deleted file mode 100644 index e95fe0e28c05..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/CilTypeKind.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// The CIL database type-kind. - /// - public enum CilTypeKind - { - ValueOrRefType, - TypeParameter, - Array, - Pointer, - FunctionPointer - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ConstructedType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ConstructedType.cs deleted file mode 100644 index 089d7855dfc5..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ConstructedType.cs +++ /dev/null @@ -1,118 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using Semmle.Util; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A constructed type. - /// - internal sealed class ConstructedType : Type - { - private readonly Type unboundGenericType; - - // Either null or notEmpty - private readonly Type[]? thisTypeArguments; - - private readonly Type? containingType; - private readonly NamedTypeIdWriter idWriter; - - public ConstructedType(Context cx, Type unboundType, IEnumerable typeArguments) : base(cx) - { - idWriter = new NamedTypeIdWriter(this); - var suppliedArgs = typeArguments.Count(); - if (suppliedArgs != unboundType.TotalTypeParametersCount) - throw new InternalError("Unexpected number of type arguments in ConstructedType"); - - unboundGenericType = unboundType; - var thisParams = unboundType.ThisTypeParameterCount; - - if (typeArguments.Count() == thisParams) - { - containingType = unboundType.ContainingType; - thisTypeArguments = typeArguments.ToArray(); - } - else if (thisParams == 0) - { - // all type arguments belong to containing type - containingType = unboundType.ContainingType!.Construct(typeArguments); - } - else - { - // some type arguments belong to containing type - var parentParams = suppliedArgs - thisParams; - containingType = unboundType.ContainingType!.Construct(typeArguments.Take(parentParams)); - thisTypeArguments = typeArguments.Skip(parentParams).ToArray(); - } - } - - public override bool Equals(object? obj) - { - if (obj is ConstructedType t && Equals(unboundGenericType, t.unboundGenericType) && Equals(containingType, t.containingType)) - { - if (thisTypeArguments is null) - return t.thisTypeArguments is null; - if (!(t.thisTypeArguments is null)) - return thisTypeArguments.SequenceEqual(t.thisTypeArguments); - } - return false; - } - - public override int GetHashCode() - { - var h = unboundGenericType.GetHashCode(); - h = 13 * h + (containingType is null ? 0 : containingType.GetHashCode()); - if (!(thisTypeArguments is null)) - h = h * 13 + thisTypeArguments.SequenceHash(); - return h; - } - - public override IEnumerable Contents - { - get - { - foreach (var c in base.Contents) - yield return c; - - var i = 0; - foreach (var type in ThisTypeArguments) - { - yield return type; - yield return Tuples.cil_type_argument(this, i++, type); - } - } - } - - public override Type SourceDeclaration => unboundGenericType; - - public override Type? ContainingType => containingType; - - public override string Name => unboundGenericType.Name; - - public override Namespace ContainingNamespace => unboundGenericType.ContainingNamespace!; - - public override CilTypeKind Kind => unboundGenericType.Kind; - - public override Type Construct(IEnumerable typeArguments) - { - throw new NotImplementedException(); - } - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - idWriter.WriteId(trapFile, inContext); - } - - public override void WriteAssemblyPrefix(TextWriter trapFile) => unboundGenericType.WriteAssemblyPrefix(trapFile); - - public override int ThisTypeParameterCount => thisTypeArguments?.Length ?? 0; - - public override IEnumerable TypeParameters => GenericArguments; - - public override IEnumerable ThisTypeArguments => thisTypeArguments.EnumerateNull(); - - public override IEnumerable ThisGenericArguments => thisTypeArguments.EnumerateNull(); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/CustomAttributeDecoder.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/CustomAttributeDecoder.cs deleted file mode 100644 index 184e37a1adfd..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/CustomAttributeDecoder.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// Helper class to decode the attribute structure. - /// Note that there are some unhandled cases that should be fixed in due course. - /// - internal class CustomAttributeDecoder : ICustomAttributeTypeProvider - { - private readonly Context cx; - public CustomAttributeDecoder(Context cx) { this.cx = cx; } - - public Type GetPrimitiveType(PrimitiveTypeCode typeCode) => cx.Create(typeCode); - - public Type GetSystemType() => new NoMetadataHandleType(cx, "System.Type"); - - public Type GetSZArrayType(Type elementType) => - cx.Populate(new ArrayType(cx, elementType)); - - public Type GetTypeFromDefinition(MetadataReader reader, TypeDefinitionHandle handle, byte rawTypeKind) => - (Type)cx.Create(handle); - - public Type GetTypeFromReference(MetadataReader reader, TypeReferenceHandle handle, byte rawTypeKind) => - (Type)cx.Create(handle); - - public Type GetTypeFromSerializedName(string name) => new NoMetadataHandleType(cx, name); - - public PrimitiveTypeCode GetUnderlyingEnumType(Type type) - { - if (type is TypeDefinitionType tdt && - tdt.GetUnderlyingEnumType() is PrimitiveTypeCode underlying) - { - return underlying; - } - - var name = type.GetQualifiedName(); - - if (wellKnownEnums.TryGetValue(name, out var code)) - { - cx.Extractor.Logger.Log(Util.Logging.Severity.Debug, $"Using hard coded underlying enum type for {name}"); - return code; - } - - cx.Extractor.Logger.Log(Util.Logging.Severity.Info, $"Couldn't get underlying enum type for {name}"); - - // We can't fall back to Int32, because the type returned here defines how many bytes are read from the - // stream and how those bytes are interpreted. - throw new NotImplementedException(); - } - - public bool IsSystemType(Type type) => type.GetQualifiedName() == "System.Type"; - - private static readonly Dictionary wellKnownEnums = new Dictionary - { - { "System.AttributeTargets", PrimitiveTypeCode.Int32 }, - { "System.ComponentModel.EditorBrowsableState", PrimitiveTypeCode.Int32 }, - { "System.Diagnostics.DebuggerBrowsableState", PrimitiveTypeCode.Int32 } - }; - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionField.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionField.cs deleted file mode 100644 index c299ac19d574..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionField.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Reflection.Metadata; -using System.Reflection.Metadata.Ecma335; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class DefinitionField : Field - { - private readonly Handle handle; - private readonly FieldDefinition fd; - - public DefinitionField(Context cx, FieldDefinitionHandle handle) : base(cx) - { - this.handle = handle; - fd = Context.MdReader.GetFieldDefinition(handle); - } - - public override bool Equals(object? obj) - { - return obj is DefinitionField field && handle.Equals(field.handle); - } - - public override int GetHashCode() => handle.GetHashCode(); - - public override IEnumerable Contents - { - get - { - yield return Tuples.metadata_handle(this, Context.Assembly, MetadataTokens.GetToken(handle)); - - foreach (var c in base.Contents) - yield return c; - - if (fd.Attributes.HasFlag(FieldAttributes.Private)) - yield return Tuples.cil_private(this); - - if (fd.Attributes.HasFlag(FieldAttributes.Public)) - yield return Tuples.cil_public(this); - - if (fd.Attributes.HasFlag(FieldAttributes.Family)) - yield return Tuples.cil_protected(this); - - if (fd.Attributes.HasFlag(FieldAttributes.Static)) - yield return Tuples.cil_static(this); - - if (fd.Attributes.HasFlag(FieldAttributes.Assembly)) - yield return Tuples.cil_internal(this); - - foreach (var c in Attribute.Populate(Context, this, fd.GetCustomAttributes())) - yield return c; - } - } - - public override string Name => Context.GetString(fd.Name); - - public override Type DeclaringType => (Type)Context.Create(fd.GetDeclaringType()); - - public override Type Type => fd.DecodeSignature(Context.TypeSignatureDecoder, DeclaringType); - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override IEnumerable MethodParameters => throw new NotImplementedException(); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionMethod.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionMethod.cs deleted file mode 100644 index f75a6ee5e7b4..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/DefinitionMethod.cs +++ /dev/null @@ -1,299 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Metadata; -using System.Reflection.Metadata.Ecma335; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A definition method - a method defined in the current assembly. - /// - internal sealed class DefinitionMethod : Method - { - private readonly Handle handle; - private readonly MethodDefinition md; - private readonly PDB.Method? methodDebugInformation; - private readonly Type declaringType; - - private readonly string name; - private LocalVariable[]? locals; - - public MethodImplementation? Implementation { get; private set; } - - public override IList? LocalVariables => locals; - - public DefinitionMethod(IGenericContext gc, MethodDefinitionHandle handle) : base(gc) - { - md = Context.MdReader.GetMethodDefinition(handle); - this.gc = gc; - this.handle = handle; - name = Context.GetString(md.Name); - - declaringType = (Type)Context.CreateGeneric(this, md.GetDeclaringType()); - - signature = md.DecodeSignature(new SignatureDecoder(), this); - - methodDebugInformation = Context.GetMethodDebugInformation(handle); - } - - public override bool Equals(object? obj) - { - return obj is DefinitionMethod method && handle.Equals(method.handle); - } - - public override int GetHashCode() => handle.GetHashCode(); - - public override bool IsStatic => !signature.Header.IsInstance; - - public override Type DeclaringType => declaringType; - - public override string Name => Context.ShortName(md.Name); - - public override string NameLabel => name; - - /// - /// Holds if this method has bytecode. - /// - public bool HasBytecode => md.ImplAttributes == MethodImplAttributes.IL && md.RelativeVirtualAddress != 0; - - public override IEnumerable Contents - { - get - { - if (md.GetGenericParameters().Any()) - { - // We need to perform a 2-phase population because some type parameters can - // depend on other type parameters (as a constraint). - genericParams = new MethodTypeParameter[md.GetGenericParameters().Count]; - for (var i = 0; i < genericParams.Length; ++i) - genericParams[i] = Context.Populate(new MethodTypeParameter(this, this, i)); - for (var i = 0; i < genericParams.Length; ++i) - genericParams[i].PopulateHandle(md.GetGenericParameters()[i]); - foreach (var p in genericParams) - yield return p; - } - - var typeSignature = md.DecodeSignature(Context.TypeSignatureDecoder, this); - - var parameters = GetParameterExtractionProducts(typeSignature.ParameterTypes).ToArray(); - Parameters = parameters.OfType().ToArray(); - - foreach (var c in parameters) - yield return c; - - foreach (var c in PopulateFlags) - yield return c; - - foreach (var p in md.GetParameters().Select(h => Context.MdReader.GetParameter(h)).Where(p => p.SequenceNumber > 0)) - { - var pe = Parameters[IsStatic ? p.SequenceNumber - 1 : p.SequenceNumber]; - if (p.Attributes.HasFlag(ParameterAttributes.Out)) - yield return Tuples.cil_parameter_out(pe); - if (p.Attributes.HasFlag(ParameterAttributes.In)) - yield return Tuples.cil_parameter_in(pe); - foreach (var c in Attribute.Populate(Context, pe, p.GetCustomAttributes())) - yield return c; - } - - yield return Tuples.metadata_handle(this, Context.Assembly, MetadataTokens.GetToken(handle)); - - foreach (var m in GetMethodExtractionProducts(Name, declaringType, typeSignature.ReturnType)) - { - yield return m; - } - - yield return Tuples.cil_method_source_declaration(this, this); - yield return Tuples.cil_method_location(this, Context.Assembly); - - if (HasBytecode) - { - Implementation = new MethodImplementation(this); - yield return Implementation; - - var body = Context.PeReader.GetMethodBody(md.RelativeVirtualAddress); - - if (!body.LocalSignature.IsNil) - { - var localVariableTypes = System.Collections.Immutable.ImmutableArray.Empty; - var hasError = false; - try - { - var locals = Context.MdReader.GetStandaloneSignature(body.LocalSignature); - localVariableTypes = locals.DecodeLocalSignature(Context.TypeSignatureDecoder, this); - } - catch (System.BadImageFormatException exc) - { - Context.Extractor.Logger.Log(Util.Logging.Severity.Info, - $"Could not decode locals in method {declaringType.GetQualifiedName()}.{name}. {exc}"); - hasError = true; - } - - if (!hasError) - { - this.locals = new LocalVariable[localVariableTypes.Length]; - - for (var l = 0; l < this.locals.Length; ++l) - { - var t = localVariableTypes[l]; - if (t is ByRefType brt) - { - t = brt.ElementType; - this.locals[l] = Context.Populate(new LocalVariable(Context, Implementation, l, t)); - yield return this.locals[l]; - yield return Tuples.cil_type_annotation(this.locals[l], TypeAnnotation.Ref); - } - else - { - this.locals[l] = Context.Populate(new LocalVariable(Context, Implementation, l, t)); - yield return this.locals[l]; - } - } - } - } - - var jump_table = new Dictionary(); - - foreach (var c in Decode(body.GetILBytes(), jump_table)) - yield return c; - - var filter_index = 0; - foreach (var region in body.ExceptionRegions) - { - yield return new ExceptionRegion(this, Implementation, filter_index++, region, jump_table); - } - - yield return Tuples.cil_method_stack_size(Implementation, body.MaxStack); - - if (methodDebugInformation is not null) - { - var sourceLocation = Context.CreateSourceLocation(methodDebugInformation.Location); - yield return sourceLocation; - yield return Tuples.cil_method_location(this, sourceLocation); - } - } - - // Flags - - if (md.Attributes.HasFlag(MethodAttributes.Private)) - yield return Tuples.cil_private(this); - - if (md.Attributes.HasFlag(MethodAttributes.Public)) - yield return Tuples.cil_public(this); - - if (md.Attributes.HasFlag(MethodAttributes.Family)) - yield return Tuples.cil_protected(this); - - if (md.Attributes.HasFlag(MethodAttributes.Final)) - yield return Tuples.cil_sealed(this); - - if (md.Attributes.HasFlag(MethodAttributes.Virtual)) - yield return Tuples.cil_virtual(this); - - if (md.Attributes.HasFlag(MethodAttributes.Abstract)) - yield return Tuples.cil_abstract(this); - - if (md.Attributes.HasFlag(MethodAttributes.HasSecurity)) - yield return Tuples.cil_security(this); - - if (md.Attributes.HasFlag(MethodAttributes.RequireSecObject)) - yield return Tuples.cil_requiresecobject(this); - - if (md.Attributes.HasFlag(MethodAttributes.SpecialName)) - yield return Tuples.cil_specialname(this); - - if (md.Attributes.HasFlag(MethodAttributes.NewSlot)) - yield return Tuples.cil_newslot(this); - - // Populate attributes - foreach (var c in Attribute.Populate(Context, this, md.GetCustomAttributes())) - yield return c; - } - } - - private IEnumerable Decode(byte[]? ilbytes, Dictionary jump_table) - { - // Sequence points are stored in order of offset. - // We use an enumerator to locate the correct sequence point for each instruction. - // The sequence point gives the location of each instruction. - // The location of an instruction is given by the sequence point *after* the - // instruction. - IEnumerator? nextSequencePoint = null; - PdbSourceLocation? instructionLocation = null; - - if (methodDebugInformation is not null) - { - nextSequencePoint = methodDebugInformation.SequencePoints.GetEnumerator(); - if (nextSequencePoint.MoveNext()) - { - instructionLocation = Context.CreateSourceLocation(nextSequencePoint.Current.Location); - yield return instructionLocation; - } - else - { - nextSequencePoint = null; - } - } - - var child = 0; - for (var offset = 0; offset < (ilbytes?.Length ?? 0);) - { - var instruction = new Instruction(Context, this, ilbytes!, offset, child++); - yield return instruction; - - if (nextSequencePoint is not null && offset >= nextSequencePoint.Current.Offset) - { - instructionLocation = Context.CreateSourceLocation(nextSequencePoint.Current.Location); - yield return instructionLocation; - if (!nextSequencePoint.MoveNext()) - nextSequencePoint = null; - } - - if (instructionLocation is not null) - yield return Tuples.cil_instruction_location(instruction, instructionLocation); - - jump_table.Add(instruction.Offset, instruction); - offset += instruction.Width; - } - - foreach (var i in jump_table) - { - foreach (var t in i.Value.JumpContents(jump_table)) - yield return t; - } - } - - /// - /// Display the instructions in the method in the debugger. - /// This is only used for debugging, not in the code itself. - /// - public IEnumerable DebugInstructions - { - get - { - if (md.ImplAttributes == MethodImplAttributes.IL && md.RelativeVirtualAddress != 0) - { - var body = Context.PeReader.GetMethodBody(md.RelativeVirtualAddress); - - var ilbytes = body.GetILBytes(); - - var child = 0; - for (var offset = 0; offset < (ilbytes?.Length ?? 0);) - { - Instruction decoded; - try - { - decoded = new Instruction(Context, this, ilbytes!, offset, child++); - offset += decoded.Width; - } - catch // lgtm[cs/catch-of-all-exceptions] - { - yield break; - } - yield return decoded; - } - } - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ErrorType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ErrorType.cs deleted file mode 100644 index 41b5810ba270..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ErrorType.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class ErrorType : Type - { - public ErrorType(Context cx) : base(cx) - { - } - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) => trapFile.Write(""); - - public override CilTypeKind Kind => CilTypeKind.ValueOrRefType; - - public override string Name => "!error"; - - public override Namespace ContainingNamespace => Context.GlobalNamespace; - - public override Type? ContainingType => null; - - public override int ThisTypeParameterCount => 0; - - public override void WriteAssemblyPrefix(TextWriter trapFile) => throw new NotImplementedException(); - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override Type Construct(IEnumerable typeArguments) => throw new NotImplementedException(); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Event.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Event.cs deleted file mode 100644 index 0ff273789c10..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Event.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System.Collections.Generic; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// An event entity. - /// - internal sealed class Event : LabelledEntity - { - private readonly EventDefinitionHandle handle; - private readonly Type parent; - private readonly EventDefinition ed; - - public Event(Context cx, Type parent, EventDefinitionHandle handle) : base(cx) - { - this.handle = handle; - this.parent = parent; - ed = cx.MdReader.GetEventDefinition(handle); - } - - public override void WriteId(EscapingTextWriter trapFile) - { - parent.WriteId(trapFile); - trapFile.Write('.'); - trapFile.Write(Context.ShortName(ed.Name)); - trapFile.Write(";cil-event"); - } - - public override bool Equals(object? obj) - { - return obj is Event e && handle.Equals(e.handle); - } - - public override int GetHashCode() => handle.GetHashCode(); - - public override IEnumerable Contents - { - get - { - var signature = (Type)Context.CreateGeneric(parent, ed.Type); - yield return signature; - - yield return Tuples.cil_event(this, parent, Context.ShortName(ed.Name), signature); - - var accessors = ed.GetAccessors(); - if (!accessors.Adder.IsNil) - { - var adder = (Method)Context.CreateGeneric(parent, accessors.Adder); - yield return adder; - yield return Tuples.cil_adder(this, adder); - } - - if (!accessors.Remover.IsNil) - { - var remover = (Method)Context.CreateGeneric(parent, accessors.Remover); - yield return remover; - yield return Tuples.cil_remover(this, remover); - } - - if (!accessors.Raiser.IsNil) - { - var raiser = (Method)Context.CreateGeneric(parent, accessors.Raiser); - yield return raiser; - yield return Tuples.cil_raiser(this, raiser); - } - - foreach (var c in Attribute.Populate(Context, this, ed.GetCustomAttributes())) - yield return c; - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ExceptionRegion.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ExceptionRegion.cs deleted file mode 100644 index 5e49c10f5337..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ExceptionRegion.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// An exception region entity. - /// - internal class ExceptionRegion : UnlabelledEntity - { - private readonly IGenericContext gc; - private readonly MethodImplementation method; - private readonly int index; - private readonly System.Reflection.Metadata.ExceptionRegion r; - private readonly Dictionary jump_table; - - public ExceptionRegion(IGenericContext gc, MethodImplementation method, int index, System.Reflection.Metadata.ExceptionRegion r, Dictionary jump_table) : base(gc.Context) - { - this.gc = gc; - this.method = method; - this.index = index; - this.r = r; - this.jump_table = jump_table; - } - - public override IEnumerable Contents - { - get - { - - if (!jump_table.TryGetValue(r.TryOffset, out var try_start)) - throw new InternalError("Failed to retrieve handler"); - if (!jump_table.TryGetValue(r.TryOffset + r.TryLength, out var try_end)) - throw new InternalError("Failed to retrieve handler"); - if (!jump_table.TryGetValue(r.HandlerOffset, out var handler_start)) - throw new InternalError("Failed to retrieve handler"); - - yield return Tuples.cil_handler(this, method, index, (int)r.Kind, try_start, try_end, handler_start); - - if (r.FilterOffset != -1) - { - if (!jump_table.TryGetValue(r.FilterOffset, out var filter_start)) - throw new InternalError("ExceptionRegion filter clause"); - - yield return Tuples.cil_handler_filter(this, filter_start); - } - - if (!r.CatchType.IsNil) - { - var catchType = (Type)Context.CreateGeneric(gc, r.CatchType); - yield return catchType; - yield return Tuples.cil_handler_type(this, catchType); - } - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Field.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Field.cs deleted file mode 100644 index a42fdab0b1ff..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Field.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// An entity representing a field. - /// - internal abstract class Field : LabelledEntity, IGenericContext, IMember, ICustomModifierReceiver - { - protected Field(Context cx) : base(cx) - { - } - - public override void WriteId(EscapingTextWriter trapFile) - { - trapFile.WriteSubId(DeclaringType); - trapFile.Write('.'); - trapFile.Write(Name); - trapFile.Write(";cil-field"); - } - - public abstract string Name { get; } - - public abstract Type DeclaringType { get; } - - public abstract Type Type { get; } - - public override IEnumerable Contents - { - get - { - var t = Type; - if (t is ModifiedType mt) - { - t = mt.Unmodified; - yield return Tuples.cil_custom_modifiers(this, mt.Modifier, mt.IsRequired); - } - if (t is ByRefType brt) - { - t = brt.ElementType; - yield return Tuples.cil_type_annotation(this, TypeAnnotation.Ref); - } - yield return Tuples.cil_field(this, DeclaringType, Name, t); - } - } - - public abstract IEnumerable TypeParameters { get; } - - public abstract IEnumerable MethodParameters { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/File.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/File.cs deleted file mode 100644 index f7ae53af56a2..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/File.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - internal class File : LabelledEntity, IFileOrFolder - { - protected string OriginalPath { get; } - protected PathTransformer.ITransformedPath TransformedPath { get; } - - public File(Context cx, string path) : base(cx) - { - this.OriginalPath = path; - TransformedPath = Context.Extractor.PathTransformer.Transform(OriginalPath); - } - - public override void WriteId(EscapingTextWriter trapFile) - { - trapFile.Write(TransformedPath.DatabaseId); - trapFile.Write(";sourcefile"); - } - - public override bool Equals(object? obj) - { - return GetType() == obj?.GetType() && OriginalPath == ((File)obj).OriginalPath; - } - - public override int GetHashCode() => 11 * OriginalPath.GetHashCode(); - - public override IEnumerable Contents - { - get - { - if (TransformedPath.ParentDirectory is PathTransformer.ITransformedPath dir) - { - var parent = Context.CreateFolder(dir); - yield return parent; - yield return Tuples.containerparent(parent, this); - } - yield return Tuples.files(this, TransformedPath.Value); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Folder.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Folder.cs deleted file mode 100644 index 3023ea6db915..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Folder.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class Folder : LabelledEntity, IFileOrFolder - { - private readonly PathTransformer.ITransformedPath transformedPath; - - public Folder(Context cx, PathTransformer.ITransformedPath path) : base(cx) - { - this.transformedPath = path; - } - - public override void WriteId(EscapingTextWriter trapFile) - { - trapFile.Write(transformedPath.DatabaseId); - trapFile.Write(";folder"); - } - - public override IEnumerable Contents - { - get - { - if (transformedPath.ParentDirectory is PathTransformer.ITransformedPath parent) - { - var parentFolder = Context.CreateFolder(parent); - yield return parentFolder; - yield return Tuples.containerparent(parentFolder, this); - } - yield return Tuples.folders(this, transformedPath.Value); - } - } - - public override bool Equals(object? obj) - { - return obj is Folder folder && transformedPath == folder.transformedPath; - } - - public override int GetHashCode() => transformedPath.GetHashCode(); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/FunctionPointerType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/FunctionPointerType.cs deleted file mode 100644 index 511826e003c2..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/FunctionPointerType.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class FunctionPointerType : Type, IParameterizable, ICustomModifierReceiver - { - private readonly MethodSignature signature; - - public FunctionPointerType(Context cx, MethodSignature signature) : base(cx) - { - this.signature = signature; - } - - public override CilTypeKind Kind => CilTypeKind.FunctionPointer; - - public override string Name - { - get - { - using var id = new StringWriter(); - WriteName( - id.Write, - t => id.Write(t.Name), - signature - ); - return id.ToString(); - } - } - - public override Namespace? ContainingNamespace => Context.GlobalNamespace; - - public override Type? ContainingType => null; - - public override int ThisTypeParameterCount => throw new System.NotImplementedException(); - - public override IEnumerable TypeParameters => throw new System.NotImplementedException(); - - public override Type Construct(IEnumerable typeArguments) => throw new System.NotImplementedException(); - - public override void WriteAssemblyPrefix(TextWriter trapFile) { } - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - WriteName( - trapFile.Write, - t => t.WriteId(trapFile, inContext), - signature - ); - } - - internal static void WriteName(Action write, Action writeType, MethodSignature signature) - { - write("delegate* "); - write(GetCallingConvention(signature.Header.CallingConvention)); - write("<"); - foreach (var pt in signature.ParameterTypes) - { - writeType(pt); - write(","); - } - writeType(signature.ReturnType); - write(">"); - } - - internal static string GetCallingConvention(SignatureCallingConvention callingConvention) - { - if (callingConvention == SignatureCallingConvention.Default) - { - return "managed"; - } - - if (callingConvention == SignatureCallingConvention.Unmanaged) - { - return "unmanaged"; - } - - return $"unmanaged[{callingConvention}]"; - } - - public override IEnumerable Contents - { - get - { - foreach (var c in base.Contents) - { - yield return c; - } - - var retType = signature.ReturnType; - if (retType is ModifiedType mt) - { - retType = mt.Unmodified; - yield return Tuples.cil_custom_modifiers(this, mt.Modifier, mt.IsRequired); - } - if (retType is ByRefType byRefType) - { - retType = byRefType.ElementType; - yield return Tuples.cil_type_annotation(this, TypeAnnotation.Ref); - } - yield return Tuples.cil_function_pointer_return_type(this, retType); - - yield return Tuples.cil_function_pointer_calling_conventions(this, signature.Header.CallingConvention); - - foreach (var p in Method.GetParameterExtractionProducts(signature.ParameterTypes, this, this, Context, 0)) - { - yield return p; - } - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/GenericsHelper.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/GenericsHelper.cs deleted file mode 100644 index dd3657c0e0d6..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/GenericsHelper.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Collections.Generic; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - internal static class GenericsHelper - { - public static TypeTypeParameter[] MakeTypeParameters(Type container, int count) - { - var newTypeParams = new TypeTypeParameter[count]; - for (var i = 0; i < newTypeParams.Length; ++i) - { - newTypeParams[i] = new TypeTypeParameter(container, i); - } - return newTypeParams; - } - - public static string GetNonGenericName(StringHandle name, MetadataReader reader) - { - var n = reader.GetString(name); - return GetNonGenericName(n); - } - - public static string GetNonGenericName(string name) - { - var tick = name.LastIndexOf('`'); - return tick == -1 - ? name - : name.Substring(0, tick); - } - - public static int GetGenericTypeParameterCount(StringHandle name, MetadataReader reader) - { - var n = reader.GetString(name); - return GetGenericTypeParameterCount(n); - } - - public static int GetGenericTypeParameterCount(string name) - { - var tick = name.LastIndexOf('`'); - return tick == -1 - ? 0 - : int.Parse(name.Substring(tick + 1)); - } - - public static IEnumerable GetAllTypeParameters(Type? container, IEnumerable thisTypeParameters) - { - if (container is not null) - { - foreach (var t in container.TypeParameters) - yield return t; - } - - foreach (var t in thisTypeParameters) - yield return t; - - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/IFileOrFolder.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/IFileOrFolder.cs deleted file mode 100644 index 321bb842ccc9..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/IFileOrFolder.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Semmle.Extraction.CIL.Entities -{ - internal interface IFileOrFolder : IEntity - { - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ILocation.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ILocation.cs deleted file mode 100644 index 69498223625d..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ILocation.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Semmle.Extraction.CIL.Entities -{ - public interface ILocation : IEntity - { - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/IMember.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/IMember.cs deleted file mode 100644 index 37c0af7702ba..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/IMember.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// An entity representing a member. - /// Used to type tuples correctly. - /// - internal interface IMember : IExtractedEntity - { - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/IParameterizable.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/IParameterizable.cs deleted file mode 100644 index ad9347848e4e..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/IParameterizable.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Semmle.Extraction.CIL.Entities -{ - internal interface IParameterizable : IEntity - { - - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ITypeSignature.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ITypeSignature.cs deleted file mode 100644 index 377035c7e704..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ITypeSignature.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Semmle.Extraction.CIL.Entities -{ - internal interface ITypeSignature - { - void WriteId(EscapingTextWriter trapFile, IGenericContext gc); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Instruction.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Instruction.cs deleted file mode 100644 index cf7e8fee0b58..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Instruction.cs +++ /dev/null @@ -1,508 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection.Metadata; -using System.Reflection.Metadata.Ecma335; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A CIL instruction. - /// - internal class Instruction : UnlabelledEntity - { - /// - /// The additional data following the opcode, if any. - /// - public enum Payload - { - None, TypeTok, Field, Target8, Class, - Method, Arg8, Local8, Target32, Int8, - Int16, Int32, Int64, Float32, Float64, - CallSiteDesc, Switch, String, Constructor, ValueType, - Type, Arg16, Ignore8, Token, Local16, MethodRef - } - - /// - /// For each Payload, how many additional bytes in the bytestream need to be read. - /// - private static readonly int[] payloadSizes = { - 0, 4, 4, 1, 4, - 4, 1, 1, 4, 1, - 2, 4, 8, 4, 8, - 4, -1, 4, 4, 4, - 4, 2, 1, 4, 2, 4 }; - - // Maps opcodes to payloads for each instruction. - private static readonly Dictionary opPayload = new Dictionary() - { - { ILOpCode.Nop, Payload.None }, - { ILOpCode.Break, Payload.None }, - { ILOpCode.Ldarg_0, Payload.None }, - { ILOpCode.Ldarg_1, Payload.None }, - { ILOpCode.Ldarg_2, Payload.None }, - { ILOpCode.Ldarg_3, Payload.None }, - { ILOpCode.Ldloc_0, Payload.None }, - { ILOpCode.Ldloc_1, Payload.None }, - { ILOpCode.Ldloc_2, Payload.None }, - { ILOpCode.Ldloc_3, Payload.None }, - { ILOpCode.Stloc_0, Payload.None }, - { ILOpCode.Stloc_1, Payload.None }, - { ILOpCode.Stloc_2, Payload.None }, - { ILOpCode.Stloc_3, Payload.None }, - { ILOpCode.Ldarg_s, Payload.Arg8 }, - { ILOpCode.Ldarga_s, Payload.Arg8 }, - { ILOpCode.Starg_s, Payload.Arg8 }, - { ILOpCode.Ldloc_s, Payload.Local8 }, - { ILOpCode.Ldloca_s, Payload.Local8 }, - { ILOpCode.Stloc_s, Payload.Local8 }, - { ILOpCode.Ldnull, Payload.None }, - { ILOpCode.Ldc_i4_m1, Payload.None }, - { ILOpCode.Ldc_i4_0, Payload.None }, - { ILOpCode.Ldc_i4_1, Payload.None }, - { ILOpCode.Ldc_i4_2, Payload.None }, - { ILOpCode.Ldc_i4_3, Payload.None }, - { ILOpCode.Ldc_i4_4, Payload.None }, - { ILOpCode.Ldc_i4_5, Payload.None }, - { ILOpCode.Ldc_i4_6, Payload.None }, - { ILOpCode.Ldc_i4_7, Payload.None }, - { ILOpCode.Ldc_i4_8, Payload.None }, - { ILOpCode.Ldc_i4_s, Payload.Int8 }, - { ILOpCode.Ldc_i4, Payload.Int32 }, - { ILOpCode.Ldc_i8, Payload.Int64 }, - { ILOpCode.Ldc_r4, Payload.Float32 }, - { ILOpCode.Ldc_r8, Payload.Float64 }, - { ILOpCode.Dup, Payload.None }, - { ILOpCode.Pop, Payload.None }, - { ILOpCode.Jmp, Payload.Method }, - { ILOpCode.Call, Payload.Method }, - { ILOpCode.Calli, Payload.CallSiteDesc }, - { ILOpCode.Ret, Payload.None }, - { ILOpCode.Br_s, Payload.Target8 }, - { ILOpCode.Brfalse_s, Payload.Target8 }, - { ILOpCode.Brtrue_s, Payload.Target8 }, - { ILOpCode.Beq_s, Payload.Target8 }, - { ILOpCode.Bge_s, Payload.Target8 }, - { ILOpCode.Bgt_s, Payload.Target8 }, - { ILOpCode.Ble_s, Payload.Target8 }, - { ILOpCode.Blt_s, Payload.Target8 }, - { ILOpCode.Bne_un_s, Payload.Target8 }, - { ILOpCode.Bge_un_s, Payload.Target8 }, - { ILOpCode.Bgt_un_s, Payload.Target8 }, - { ILOpCode.Ble_un_s, Payload.Target8 }, - { ILOpCode.Blt_un_s, Payload.Target8 }, - { ILOpCode.Br, Payload.Target32 }, - { ILOpCode.Brfalse, Payload.Target32 }, - { ILOpCode.Brtrue, Payload.Target32 }, - { ILOpCode.Beq, Payload.Target32 }, - { ILOpCode.Bge, Payload.Target32 }, - { ILOpCode.Bgt, Payload.Target32 }, - { ILOpCode.Ble, Payload.Target32 }, - { ILOpCode.Blt, Payload.Target32 }, - { ILOpCode.Bne_un, Payload.Target32 }, - { ILOpCode.Bge_un, Payload.Target32 }, - { ILOpCode.Bgt_un, Payload.Target32 }, - { ILOpCode.Ble_un, Payload.Target32 }, - { ILOpCode.Blt_un, Payload.Target32 }, - { ILOpCode.Switch, Payload.Switch }, - { ILOpCode.Ldind_i1, Payload.None }, - { ILOpCode.Ldind_u1, Payload.None }, - { ILOpCode.Ldind_i2, Payload.None }, - { ILOpCode.Ldind_u2, Payload.None }, - { ILOpCode.Ldind_i4, Payload.None }, - { ILOpCode.Ldind_u4, Payload.None }, - { ILOpCode.Ldind_i8, Payload.None }, - { ILOpCode.Ldind_i, Payload.None }, - { ILOpCode.Ldind_r4, Payload.None }, - { ILOpCode.Ldind_r8, Payload.None }, - { ILOpCode.Ldind_ref, Payload.None }, - { ILOpCode.Stind_ref, Payload.None }, - { ILOpCode.Stind_i1, Payload.None }, - { ILOpCode.Stind_i2, Payload.None }, - { ILOpCode.Stind_i4, Payload.None }, - { ILOpCode.Stind_i8, Payload.None }, - { ILOpCode.Stind_r4, Payload.None }, - { ILOpCode.Stind_r8, Payload.None }, - { ILOpCode.Add, Payload.None }, - { ILOpCode.Sub, Payload.None }, - { ILOpCode.Mul, Payload.None }, - { ILOpCode.Div, Payload.None }, - { ILOpCode.Div_un, Payload.None }, - { ILOpCode.Rem, Payload.None }, - { ILOpCode.Rem_un, Payload.None }, - { ILOpCode.And, Payload.None }, - { ILOpCode.Or, Payload.None }, - { ILOpCode.Xor, Payload.None }, - { ILOpCode.Shl, Payload.None }, - { ILOpCode.Shr, Payload.None }, - { ILOpCode.Shr_un, Payload.None }, - { ILOpCode.Neg, Payload.None }, - { ILOpCode.Not, Payload.None }, - { ILOpCode.Conv_i1, Payload.None }, - { ILOpCode.Conv_i2, Payload.None }, - { ILOpCode.Conv_i4, Payload.None }, - { ILOpCode.Conv_i8, Payload.None }, - { ILOpCode.Conv_r4, Payload.None }, - { ILOpCode.Conv_r8, Payload.None }, - { ILOpCode.Conv_u4, Payload.None }, - { ILOpCode.Conv_u8, Payload.None }, - { ILOpCode.Callvirt, Payload.MethodRef }, - { ILOpCode.Cpobj, Payload.TypeTok }, - { ILOpCode.Ldobj, Payload.TypeTok }, - { ILOpCode.Ldstr, Payload.String }, - { ILOpCode.Newobj, Payload.Constructor }, - { ILOpCode.Castclass, Payload.Class }, - { ILOpCode.Isinst, Payload.Class }, - { ILOpCode.Conv_r_un, Payload.None }, - { ILOpCode.Unbox, Payload.ValueType }, - { ILOpCode.Throw, Payload.None }, - { ILOpCode.Ldfld, Payload.Field }, - { ILOpCode.Ldflda, Payload.Field }, - { ILOpCode.Stfld, Payload.Field }, - { ILOpCode.Ldsfld, Payload.Field }, - { ILOpCode.Ldsflda, Payload.Field }, - { ILOpCode.Stsfld, Payload.Field }, - { ILOpCode.Stobj, Payload.Field }, - { ILOpCode.Conv_ovf_i1_un, Payload.None }, - { ILOpCode.Conv_ovf_i2_un, Payload.None }, - { ILOpCode.Conv_ovf_i4_un, Payload.None }, - { ILOpCode.Conv_ovf_i8_un, Payload.None }, - { ILOpCode.Conv_ovf_u1_un, Payload.None }, - { ILOpCode.Conv_ovf_u2_un, Payload.None }, - { ILOpCode.Conv_ovf_u4_un, Payload.None }, - { ILOpCode.Conv_ovf_u8_un, Payload.None }, - { ILOpCode.Conv_ovf_i_un, Payload.None }, - { ILOpCode.Conv_ovf_u_un, Payload.None }, - { ILOpCode.Box, Payload.TypeTok }, - { ILOpCode.Newarr, Payload.TypeTok }, - { ILOpCode.Ldlen, Payload.None }, - { ILOpCode.Ldelema, Payload.Class }, - { ILOpCode.Ldelem_i1, Payload.None }, - { ILOpCode.Ldelem_u1, Payload.None }, - { ILOpCode.Ldelem_i2, Payload.None }, - { ILOpCode.Ldelem_u2, Payload.None }, - { ILOpCode.Ldelem_i4, Payload.None }, - { ILOpCode.Ldelem_u4, Payload.None }, - { ILOpCode.Ldelem_i8, Payload.None }, - { ILOpCode.Ldelem_i, Payload.None }, - { ILOpCode.Ldelem_r4, Payload.None }, - { ILOpCode.Ldelem_r8, Payload.None }, - { ILOpCode.Ldelem_ref, Payload.None }, - { ILOpCode.Stelem_i, Payload.None }, - { ILOpCode.Stelem_i1, Payload.None }, - { ILOpCode.Stelem_i2, Payload.None }, - { ILOpCode.Stelem_i4, Payload.None }, - { ILOpCode.Stelem_i8, Payload.None }, - { ILOpCode.Stelem_r4, Payload.None }, - { ILOpCode.Stelem_r8, Payload.None }, - { ILOpCode.Stelem_ref, Payload.None }, - { ILOpCode.Ldelem, Payload.TypeTok }, - { ILOpCode.Stelem, Payload.TypeTok }, - { ILOpCode.Unbox_any, Payload.TypeTok }, - { ILOpCode.Conv_ovf_i1, Payload.None }, - { ILOpCode.Conv_ovf_u1, Payload.None }, - { ILOpCode.Conv_ovf_i2, Payload.None }, - { ILOpCode.Conv_ovf_u2, Payload.None }, - { ILOpCode.Conv_ovf_i4, Payload.None }, - { ILOpCode.Conv_ovf_u4, Payload.None }, - { ILOpCode.Conv_ovf_i8, Payload.None }, - { ILOpCode.Conv_ovf_u8, Payload.None }, - { ILOpCode.Refanyval, Payload.Type }, - { ILOpCode.Ckfinite, Payload.None }, - { ILOpCode.Mkrefany, Payload.Class }, - { ILOpCode.Ldtoken, Payload.Token }, - { ILOpCode.Conv_u2, Payload.None }, - { ILOpCode.Conv_u1, Payload.None }, - { ILOpCode.Conv_i, Payload.None }, - { ILOpCode.Conv_ovf_i, Payload.None }, - { ILOpCode.Conv_ovf_u, Payload.None }, - { ILOpCode.Add_ovf, Payload.None }, - { ILOpCode.Add_ovf_un, Payload.None }, - { ILOpCode.Mul_ovf, Payload.None }, - { ILOpCode.Mul_ovf_un, Payload.None }, - { ILOpCode.Sub_ovf, Payload.None }, - { ILOpCode.Sub_ovf_un, Payload.None }, - { ILOpCode.Endfinally, Payload.None }, - { ILOpCode.Leave, Payload.Target32 }, - { ILOpCode.Leave_s, Payload.Target8 }, - { ILOpCode.Stind_i, Payload.None }, - { ILOpCode.Conv_u, Payload.None }, - { ILOpCode.Arglist, Payload.None }, - { ILOpCode.Ceq, Payload.None }, - { ILOpCode.Cgt, Payload.None }, - { ILOpCode.Cgt_un, Payload.None }, - { ILOpCode.Clt, Payload.None }, - { ILOpCode.Clt_un, Payload.None }, - { ILOpCode.Ldftn, Payload.Method }, - { ILOpCode.Ldvirtftn, Payload.Method }, - { ILOpCode.Ldarg, Payload.Arg16 }, - { ILOpCode.Ldarga, Payload.Arg16 }, - { ILOpCode.Starg, Payload.Arg16 }, - { ILOpCode.Ldloc, Payload.Local16 }, - { ILOpCode.Ldloca, Payload.Local16 }, - { ILOpCode.Stloc, Payload.Local16 }, - { ILOpCode.Localloc, Payload.None }, - { ILOpCode.Endfilter, Payload.None }, - { ILOpCode.Unaligned, Payload.Ignore8 }, - { ILOpCode.Volatile, Payload.None }, - { ILOpCode.Tail, Payload.None }, - { ILOpCode.Initobj, Payload.TypeTok }, - { ILOpCode.Constrained, Payload.Type }, - { ILOpCode.Cpblk, Payload.None }, - { ILOpCode.Initblk, Payload.None }, - { ILOpCode.Rethrow, Payload.None }, - { ILOpCode.Sizeof, Payload.TypeTok }, - { ILOpCode.Refanytype, Payload.None }, - { ILOpCode.Readonly, Payload.None } - }; - - public DefinitionMethod Method { get; } - public ILOpCode OpCode { get; } - public int Offset { get; } - public int Index { get; } - private readonly int payloadValue; - private readonly uint unsignedPayloadValue; - - public Payload PayloadType - { - get - { - if (!opPayload.TryGetValue(OpCode, out var result)) - throw new InternalError("Unknown op code " + OpCode); - return result; - } - } - - public override string ToString() => Index + ": " + OpCode; - - /// - /// The number of bytes of this instruction, - /// including the payload (if any). - /// - public int Width - { - get - { - if (OpCode == ILOpCode.Switch) - return 5 + 4 * payloadValue; - - return ((int)OpCode > 255 ? 2 : 1) + PayloadSize; - } - } - - private readonly byte[] data; - - private int PayloadSize => payloadSizes[(int)PayloadType]; - - /// - /// Reads the instruction from a byte stream. - /// - /// The byte stream. - /// The offset of the instruction. - /// The index of this instruction in the callable. - public Instruction(Context cx, DefinitionMethod method, byte[] data, int offset, int index) : base(cx) - { - Method = method; - Offset = offset; - Index = index; - this.data = data; - int opcode = data[offset]; - ++offset; - - /* - * An opcode is either 1 or 2 bytes, followed by an optional payload depending on the instruction. - * Instructions where the first byte is 0xfe are 2-byte instructions. - */ - if (opcode == 0xfe) - opcode = opcode << 8 | data[offset++]; - OpCode = (ILOpCode)opcode; - - switch (PayloadSize) - { - case 0: - payloadValue = 0; - break; - case 1: - payloadValue = (sbyte)data[offset]; - unsignedPayloadValue = data[offset]; - break; - case 2: - payloadValue = BitConverter.ToInt16(data, offset); - unsignedPayloadValue = BitConverter.ToUInt16(data, offset); - break; - case -1: // Switch - case 4: - payloadValue = BitConverter.ToInt32(data, offset); - break; - case 8: // Not handled here. - break; - default: - throw new InternalError("Unhandled CIL instruction Payload"); - } - } - - public override IEnumerable Contents - { - get - { - var offset = Offset; - - if (Method.Implementation is null) - { - yield break; - } - - yield return Tuples.cil_instruction(this, (int)OpCode, Index, Method.Implementation); - - switch (PayloadType) - { - case Payload.String: - yield return Tuples.cil_value(this, Context.MdReader.GetUserString(MetadataTokens.UserStringHandle(payloadValue))); - break; - case Payload.Float32: - yield return Tuples.cil_value(this, BitConverter.ToSingle(data, offset).ToString()); - break; - case Payload.Float64: - yield return Tuples.cil_value(this, BitConverter.ToDouble(data, offset).ToString()); - break; - case Payload.Int8: - yield return Tuples.cil_value(this, data[offset].ToString()); - break; - case Payload.Int16: - yield return Tuples.cil_value(this, BitConverter.ToInt16(data, offset).ToString()); - break; - case Payload.Int32: - yield return Tuples.cil_value(this, BitConverter.ToInt32(data, offset).ToString()); - break; - case Payload.Int64: - yield return Tuples.cil_value(this, BitConverter.ToInt64(data, offset).ToString()); - break; - case Payload.Constructor: - case Payload.Method: - case Payload.MethodRef: - case Payload.Class: - case Payload.TypeTok: - case Payload.Token: - case Payload.Type: - case Payload.Field: - case Payload.ValueType: - { - // A generic EntityHandle. - var handle = MetadataTokens.EntityHandle(payloadValue); - var target = Context.CreateGeneric(Method, handle); - yield return target; - if (target is not null) - { - yield return Tuples.cil_access(this, target); - } - else - { - throw new InternalError($"Unable to create payload type {PayloadType} for opcode {OpCode}"); - } - break; - } - case Payload.Arg8: - case Payload.Arg16: - if (Method.Parameters is not null) - { - yield return Tuples.cil_access(this, Method.Parameters[(int)unsignedPayloadValue]); - } - break; - case Payload.Local8: - case Payload.Local16: - if (Method.LocalVariables is not null) - { - yield return Tuples.cil_access(this, Method.LocalVariables[(int)unsignedPayloadValue]); - } - break; - case Payload.None: - case Payload.Target8: - case Payload.Target32: - case Payload.Switch: - case Payload.Ignore8: - // These are not handled here. - // Some of these are handled by JumpContents(). - break; - case Payload.CallSiteDesc: - { - var handle = MetadataTokens.EntityHandle(payloadValue); - IExtractedEntity? target = null; - try - { - target = Context.CreateGeneric(Method, handle); - } - catch (Exception exc) - { - Context.Extractor.Logger.Log(Util.Logging.Severity.Warning, $"Couldn't interpret payload of payload type {PayloadType} as a function pointer type. {exc.Message} {exc.StackTrace}"); - } - - if (target is not null) - { - yield return target; - yield return Tuples.cil_access(this, target); - } - else - { - throw new InternalError($"Unable to create payload type {PayloadType} for opcode {OpCode}"); - } - break; - } - default: - throw new InternalError($"Unhandled payload type {PayloadType}"); - } - } - } - - // Called to populate the jumps in each instruction. - public IEnumerable JumpContents(Dictionary jump_table) - { - int target; - Instruction? inst; - - switch (PayloadType) - { - case Payload.Target8: - target = Offset + payloadValue + 2; - break; - case Payload.Target32: - target = Offset + payloadValue + 5; - break; - case Payload.Switch: - var end = Offset + Width; - - var offset = Offset + 5; - - for (var b = 0; b < payloadValue; ++b, offset += 4) - { - target = BitConverter.ToInt32(data, offset) + end; - if (jump_table.TryGetValue(target, out inst)) - { - yield return Tuples.cil_switch(this, b, inst); - } - else - { - throw new InternalError("Invalid jump target"); - } - } - - yield break; - default: - // Not a jump - yield break; - } - - - if (jump_table.TryGetValue(target, out inst)) - { - yield return Tuples.cil_jump(this, inst); - } - else - { - // Sometimes instructions can jump outside the current method. - // TODO: Find a solution to this. - - // For now, just log the error - Context.ExtractionError("A CIL instruction jumps outside the current method", null, Extraction.Entities.GeneratedLocation.Create(Context), "", Util.Logging.Severity.Warning); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/LocalVariable.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/LocalVariable.cs deleted file mode 100644 index ec14e364f879..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/LocalVariable.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - internal class LocalVariable : LabelledEntity - { - private readonly MethodImplementation method; - private readonly int index; - private readonly Type type; - - public LocalVariable(Context cx, MethodImplementation m, int i, Type t) : base(cx) - { - method = m; - index = i; - type = t; - } - - public override void WriteId(EscapingTextWriter trapFile) - { - trapFile.WriteSubId(method); - trapFile.Write('_'); - trapFile.Write(index); - trapFile.Write(";cil-local"); - } - - public override IEnumerable Contents - { - get - { - yield return type; - yield return Tuples.cil_local_variable(this, method, index, type); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceField.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceField.cs deleted file mode 100644 index 6a1980520186..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceField.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class MemberReferenceField : Field - { - private readonly MemberReferenceHandle handle; - private readonly MemberReference mr; - private readonly IGenericContext gc; - private readonly Type declType; - - public MemberReferenceField(IGenericContext gc, MemberReferenceHandle handle) : base(gc.Context) - { - this.handle = handle; - this.gc = gc; - mr = Context.MdReader.GetMemberReference(handle); - declType = (Type)Context.CreateGeneric(gc, mr.Parent); - } - - public override bool Equals(object? obj) - { - return obj is MemberReferenceField field && handle.Equals(field.handle); - } - - public override int GetHashCode() - { - return handle.GetHashCode(); - } - - public override string Name => Context.GetString(mr.Name); - - public override Type DeclaringType => declType; - - public override Type Type => mr.DecodeFieldSignature(Context.TypeSignatureDecoder, this); - - public override IEnumerable TypeParameters => gc.TypeParameters.Concat(declType.TypeParameters); - - public override IEnumerable MethodParameters => gc.MethodParameters.Concat(declType.MethodParameters); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceMethod.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceMethod.cs deleted file mode 100644 index 1a7942936d6d..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/MemberReferenceMethod.cs +++ /dev/null @@ -1,95 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// This is a late-bound reference to a method. - /// - internal sealed class MemberReferenceMethod : Method - { - private readonly MemberReferenceHandle handle; - private readonly MemberReference mr; - private readonly Type declaringType; - private readonly IGenericContext parent; - private readonly Method? sourceDeclaration; - - public MemberReferenceMethod(IGenericContext gc, MemberReferenceHandle handle) : base(gc) - { - this.handle = handle; - this.gc = gc; - mr = Context.MdReader.GetMemberReference(handle); - - signature = mr.DecodeMethodSignature(new SignatureDecoder(), gc); - - parent = (IGenericContext)Context.CreateGeneric(gc, mr.Parent); - - var declType = parent is Method parentMethod - ? parentMethod.DeclaringType - : parent as Type; - - if (declType is null) - throw new InternalError("Parent context of method is not a type"); - - declaringType = declType; - nameLabel = Context.GetString(mr.Name); - - var typeSourceDeclaration = declaringType.SourceDeclaration; - sourceDeclaration = typeSourceDeclaration == declaringType ? (Method)this : typeSourceDeclaration.LookupMethod(mr.Name, mr.Signature); - } - - private readonly string nameLabel; - - public override string NameLabel => nameLabel; - - public override bool Equals(object? obj) - { - return obj is MemberReferenceMethod method && handle.Equals(method.handle); - } - - public override int GetHashCode() - { - return handle.GetHashCode(); - } - - public override Method? SourceDeclaration => sourceDeclaration; - - public override bool IsStatic => !signature.Header.IsInstance; - - public override Type DeclaringType => declaringType; - - public override string Name => Context.ShortName(mr.Name); - - public override IEnumerable TypeParameters => parent.TypeParameters.Concat(gc.TypeParameters); - - public override IEnumerable Contents - { - get - { - genericParams = new MethodTypeParameter[signature.GenericParameterCount]; - for (var p = 0; p < genericParams.Length; ++p) - genericParams[p] = Context.Populate(new MethodTypeParameter(this, this, p)); - - foreach (var p in genericParams) - yield return p; - - var typeSignature = mr.DecodeMethodSignature(Context.TypeSignatureDecoder, this); - - var parameters = GetParameterExtractionProducts(typeSignature.ParameterTypes).ToArray(); - Parameters = parameters.OfType().ToArray(); - foreach (var p in parameters) yield return p; - - foreach (var f in PopulateFlags) yield return f; - - foreach (var m in GetMethodExtractionProducts(Name, DeclaringType, typeSignature.ReturnType)) - { - yield return m; - } - - if (SourceDeclaration is not null) - yield return Tuples.cil_method_source_declaration(this, SourceDeclaration); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Method.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Method.cs deleted file mode 100644 index b5d58affd6ef..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Method.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A method entity. - /// - internal abstract class Method : TypeContainer, IMember, ICustomModifierReceiver, IParameterizable - { - protected MethodTypeParameter[]? genericParams; - protected IGenericContext gc; - protected MethodSignature signature; - - protected Method(IGenericContext gc) : base(gc.Context) - { - this.gc = gc; - } - - public ITypeSignature ReturnType => signature.ReturnType; - - public override IEnumerable TypeParameters => gc.TypeParameters.Concat(DeclaringType.TypeParameters); - - public override IEnumerable MethodParameters => - genericParams is null ? gc.MethodParameters : gc.MethodParameters.Concat(genericParams); - - public int GenericParameterCount => signature.GenericParameterCount; - - public virtual Method? SourceDeclaration => this; - - public abstract Type DeclaringType { get; } - public abstract string Name { get; } - - public virtual IList? LocalVariables => throw new NotImplementedException(); - public IList? Parameters { get; protected set; } - - public abstract string NameLabel { get; } - - public override void WriteId(EscapingTextWriter trapFile) - { - signature.ReturnType.WriteId(trapFile, this); - trapFile.Write(' '); - DeclaringType.WriteId(trapFile); - trapFile.Write('.'); - trapFile.Write(NameLabel); - - if (signature.GenericParameterCount > 0) - { - trapFile.Write('`'); - trapFile.Write(signature.GenericParameterCount); - } - trapFile.Write('('); - var index = 0; - foreach (var param in signature.ParameterTypes) - { - trapFile.WriteSeparator(",", ref index); - param.WriteId(trapFile, this); - } - trapFile.Write(");cil-method"); - } - - protected IEnumerable PopulateFlags - { - get - { - if (IsStatic) - yield return Tuples.cil_static(this); - } - } - - public abstract bool IsStatic { get; } - - protected IEnumerable GetParameterExtractionProducts(IEnumerable parameterTypes) - { - var i = 0; - - if (!IsStatic) - { - yield return Context.Populate(new Parameter(Context, this, i++, DeclaringType)); - } - - foreach (var p in GetParameterExtractionProducts(parameterTypes, this, this, Context, i)) - { - yield return p; - } - } - - internal static IEnumerable GetParameterExtractionProducts(IEnumerable parameterTypes, IParameterizable parameterizable, ICustomModifierReceiver receiver, Context cx, int firstChildIndex) - { - var i = firstChildIndex; - foreach (var p in parameterTypes) - { - var t = p; - if (t is ModifiedType mt) - { - t = mt.Unmodified; - yield return Tuples.cil_custom_modifiers(receiver, mt.Modifier, mt.IsRequired); - } - if (t is ByRefType brt) - { - t = brt.ElementType; - var parameter = cx.Populate(new Parameter(cx, parameterizable, i++, t)); - yield return parameter; - yield return Tuples.cil_type_annotation(parameter, TypeAnnotation.Ref); - } - else - { - yield return cx.Populate(new Parameter(cx, parameterizable, i++, t)); - } - } - } - - protected IEnumerable GetMethodExtractionProducts(string name, Type declaringType, Type returnType) - { - var t = returnType; - if (t is ModifiedType mt) - { - t = mt.Unmodified; - yield return Tuples.cil_custom_modifiers(this, mt.Modifier, mt.IsRequired); - } - if (t is ByRefType brt) - { - t = brt.ElementType; - yield return Tuples.cil_type_annotation(this, TypeAnnotation.Ref); - } - yield return Tuples.cil_method(this, name, declaringType, t); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodImplementation.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodImplementation.cs deleted file mode 100644 index eb31e2813ee8..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodImplementation.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A method implementation entity. - /// In the database, the same method could in principle have multiple implementations. - /// - internal class MethodImplementation : UnlabelledEntity - { - private readonly Method m; - - public MethodImplementation(Method m) : base(m.Context) - { - this.m = m; - } - - public override IEnumerable Contents - { - get - { - yield return Tuples.cil_method_implementation(this, m, Context.Assembly); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodSpecificationMethod.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodSpecificationMethod.cs deleted file mode 100644 index 9d149d9dc58c..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodSpecificationMethod.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Linq; -using System.Reflection.Metadata; -using Semmle.Util; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A constructed method. - /// - internal sealed class MethodSpecificationMethod : Method - { - private readonly MethodSpecificationHandle handle; - private readonly MethodSpecification ms; - private readonly Method unboundMethod; - private readonly ImmutableArray typeParams; - - public MethodSpecificationMethod(IGenericContext gc, MethodSpecificationHandle handle) : base(gc) - { - this.handle = handle; - ms = Context.MdReader.GetMethodSpecification(handle); - typeParams = ms.DecodeSignature(Context.TypeSignatureDecoder, gc); - unboundMethod = (Method)Context.CreateGeneric(gc, ms.Method); - } - - public override void WriteId(EscapingTextWriter trapFile) - { - unboundMethod.WriteId(trapFile); - trapFile.Write('<'); - var index = 0; - foreach (var param in typeParams) - { - trapFile.WriteSeparator(",", ref index); - trapFile.WriteSubId(param); - } - trapFile.Write('>'); - } - - public override string NameLabel => throw new NotImplementedException(); - - public override bool Equals(object? obj) - { - return obj is MethodSpecificationMethod method && handle.Equals(method.handle) && typeParams.SequenceEqual(method.typeParams); - } - - public override int GetHashCode() => handle.GetHashCode() * 11 + typeParams.SequenceHash(); - - public override Method SourceDeclaration => unboundMethod; - - public override Type DeclaringType => unboundMethod.DeclaringType; - - public override string Name => unboundMethod.Name; - - public override bool IsStatic => unboundMethod.IsStatic; - - public override IEnumerable MethodParameters => typeParams; - - public override IEnumerable Contents - { - get - { - MethodSignature constructedTypeSignature; - switch (ms.Method.Kind) - { - case HandleKind.MemberReference: - var mr = Context.MdReader.GetMemberReference((MemberReferenceHandle)ms.Method); - constructedTypeSignature = mr.DecodeMethodSignature(Context.TypeSignatureDecoder, this); - break; - case HandleKind.MethodDefinition: - var md = Context.MdReader.GetMethodDefinition((MethodDefinitionHandle)ms.Method); - constructedTypeSignature = md.DecodeSignature(Context.TypeSignatureDecoder, this); - break; - default: - throw new InternalError($"Unexpected constructed method handle kind {ms.Method.Kind}"); - } - - var parameters = GetParameterExtractionProducts(constructedTypeSignature.ParameterTypes).ToArray(); - Parameters = parameters.OfType().ToArray(); - foreach (var p in parameters) - yield return p; - - foreach (var f in PopulateFlags) - yield return f; - - foreach (var m in GetMethodExtractionProducts(Name, DeclaringType, constructedTypeSignature.ReturnType)) - { - yield return m; - } - - yield return Tuples.cil_method_source_declaration(this, SourceDeclaration); - - if (typeParams.Length != unboundMethod.GenericParameterCount) - throw new InternalError("Method type parameter mismatch"); - - for (var p = 0; p < typeParams.Length; ++p) - { - yield return Tuples.cil_type_argument(this, p, typeParams[p]); - } - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodTypeParameter.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodTypeParameter.cs deleted file mode 100644 index 947526233131..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/MethodTypeParameter.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class MethodTypeParameter : TypeParameter - { - private readonly Method method; - private readonly int index; - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - if (!(inContext && method == gc)) - { - trapFile.WriteSubId(method); - } - trapFile.Write("!"); - trapFile.Write(index); - } - - public override string Name => "!" + index; - - public MethodTypeParameter(IGenericContext gc, Method m, int index) : base(gc) - { - method = m; - this.index = index; - } - - public override bool Equals(object? obj) - { - return obj is MethodTypeParameter tp && method.Equals(tp.method) && index == tp.index; - } - - public override int GetHashCode() - { - return method.GetHashCode() * 29 + index; - } - - public override TypeContainer Parent => method; - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override IEnumerable Contents - { - get - { - yield return Tuples.cil_type(this, Name, Kind, method, SourceDeclaration); - yield return Tuples.cil_type_parameter(method, index, this); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/ModifiedType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/ModifiedType.cs deleted file mode 100644 index 36e08a2e594f..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/ModifiedType.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// Modified types are not written directly to trap files. Instead, the modifiers are stored - /// on the modifiable entity (field type, property/method/function pointer parameter or return types). - /// - internal sealed class ModifiedType : Type - { - public ModifiedType(Context cx, Type unmodified, Type modifier, bool isRequired) : base(cx) - { - Unmodified = unmodified; - Modifier = modifier; - IsRequired = isRequired; - } - - public Type Unmodified { get; } - public Type Modifier { get; } - public bool IsRequired { get; } - - public override CilTypeKind Kind => throw new NotImplementedException(); - - public override Namespace? ContainingNamespace => throw new NotImplementedException(); - - public override Type? ContainingType => throw new NotImplementedException(); - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override int ThisTypeParameterCount => throw new NotImplementedException(); - - public override Type Construct(IEnumerable typeArguments) => throw new NotImplementedException(); - - public override string Name => $"{Unmodified.Name} {(IsRequired ? "modreq" : "modopt")}({Modifier.Name})"; - - public override void WriteAssemblyPrefix(TextWriter trapFile) => throw new NotImplementedException(); - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - Unmodified.WriteId(trapFile, inContext); - trapFile.Write(IsRequired ? " modreq" : " modopt"); - trapFile.Write("("); - Modifier.WriteId(trapFile, inContext); - trapFile.Write(")"); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/NamedTypeIdWriter.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/NamedTypeIdWriter.cs deleted file mode 100644 index f78aba27a12b..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/NamedTypeIdWriter.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Linq; - -namespace Semmle.Extraction.CIL.Entities -{ - internal class NamedTypeIdWriter - { - private readonly Type type; - - public NamedTypeIdWriter(Type type) - { - this.type = type; - } - - public void WriteId(EscapingTextWriter trapFile, bool inContext) - { - if (type.IsPrimitiveType) - { - Type.WritePrimitiveTypeId(trapFile, type.Name); - return; - } - - var ct = type.ContainingType; - if (ct is not null) - { - ct.WriteId(trapFile, inContext); - trapFile.Write('.'); - } - else - { - type.WriteAssemblyPrefix(trapFile); - - var ns = type.ContainingNamespace!; - if (!ns.IsGlobalNamespace) - { - ns.WriteId(trapFile); - trapFile.Write('.'); - } - } - - trapFile.Write(type.Name); - - var thisTypeArguments = type.ThisTypeArguments; - if (thisTypeArguments is not null && thisTypeArguments.Any()) - { - trapFile.Write('<'); - var index = 0; - foreach (var t in thisTypeArguments) - { - trapFile.WriteSeparator(",", ref index); - t.WriteId(trapFile); - } - trapFile.Write('>'); - } - else if (type.ThisTypeParameterCount > 0) - { - trapFile.Write('`'); - trapFile.Write(type.ThisTypeParameterCount); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Namespace.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Namespace.cs deleted file mode 100644 index 2ab143b37331..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Namespace.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A namespace. - /// - internal sealed class Namespace : TypeContainer - { - public Namespace? ParentNamespace { get; } - public string Name { get; } - - public bool IsGlobalNamespace => ParentNamespace is null; - - public override void WriteId(EscapingTextWriter trapFile) - { - if (ParentNamespace is not null && !ParentNamespace.IsGlobalNamespace) - { - ParentNamespace.WriteId(trapFile); - trapFile.Write('.'); - } - trapFile.Write(Name); - trapFile.Write(";namespace"); - } - - public override bool Equals(object? obj) - { - if (obj is Namespace ns && Name == ns.Name) - { - if (ParentNamespace is null) - return ns.ParentNamespace is null; - if (!(ns.ParentNamespace is null)) - return ParentNamespace.Equals(ns.ParentNamespace); - } - return false; - } - - public override int GetHashCode() - { - var h = ParentNamespace is null ? 19 : ParentNamespace.GetHashCode(); - return 13 * h + Name.GetHashCode(); - } - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override IEnumerable MethodParameters => throw new NotImplementedException(); - - private static string parseNamespaceName(string fqn) - { - var i = fqn.LastIndexOf('.'); - return i == -1 ? fqn : fqn.Substring(i + 1); - } - - private static Namespace? createParentNamespace(Context cx, string fqn) - { - if (fqn.Length == 0) - return null; - var i = fqn.LastIndexOf('.'); - return i == -1 ? cx.GlobalNamespace : cx.Populate(new Namespace(cx, fqn.Substring(0, i))); - } - - public Namespace(Context cx, string fqn) : this(cx, parseNamespaceName(fqn), createParentNamespace(cx, fqn)) - { - } - - public Namespace(Context cx, string name, Namespace? parent) : base(cx) - { - Name = name; - ParentNamespace = parent; - } - - public override IEnumerable Contents - { - get - { - yield return Tuples.namespaces(this, Name); - if (ParentNamespace is not null) - yield return Tuples.parent_namespace(this, ParentNamespace); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.FullyQualifiedNameParser.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.FullyQualifiedNameParser.cs deleted file mode 100644 index ab1aedab3c36..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.FullyQualifiedNameParser.cs +++ /dev/null @@ -1,162 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Semmle.Util; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed partial class NoMetadataHandleType - { - /// - /// Parser to split a fully qualified name into short name, namespace or declaring type name, assembly name, and - /// type argument names. Names are in the following format: - /// N1.N2.T1`2+T2`2[T3,[T4, A1, Version=...],T5,T6], A2, Version=... - /// - /// - /// typeof(System.Collections.Generic.List.Enumerator) - /// -> System.Collections.Generic.List`1+Enumerator[[System.Int32, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e - /// typeof(System.Collections.Generic.List<>.Enumerator) - /// -> System.Collections.Generic.List`1+Enumerator, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e - /// - /// - private class FullyQualifiedNameParser - { - public string ShortName { get; internal set; } - public string? AssemblyName { get; private set; } - public IEnumerable? TypeArguments { get; internal set; } - public string? UnboundGenericTypeName { get; internal set; } - public string ContainerName { get; internal set; } - public bool IsContainerNamespace { get; internal set; } - - private string AssemblySuffix => string.IsNullOrWhiteSpace(AssemblyName) ? "" : $", {AssemblyName}"; - - public FullyQualifiedNameParser(string name) - { - ExtractAssemblyName(ref name, out var lastBracketIndex); - ExtractTypeArguments(ref name, lastBracketIndex, out var containerTypeArguments); - ContainerName = ExtractContainer(ref name, containerTypeArguments); - - ShortName = name; - } - - private void ExtractTypeArguments(ref string name, int lastBracketIndex, out string containerTypeArguments) - { - var firstBracketIndex = name.IndexOf('['); - if (firstBracketIndex < 0) - { - // not generic or non-constructed generic - TypeArguments = null; - containerTypeArguments = ""; - UnboundGenericTypeName = null; - return; - } - - // "T3,[T4, Assembly1, Version=...],T5,T6" - string typeArgs; - (name, _, typeArgs, _) = name.Split(firstBracketIndex, firstBracketIndex + 1, lastBracketIndex); - - var thisTypeArgCount = GenericsHelper.GetGenericTypeParameterCount(name); - if (thisTypeArgCount == 0) - { - // not generic or non-constructed generic; container is constructed - TypeArguments = null; - containerTypeArguments = $"[{typeArgs}]"; - UnboundGenericTypeName = null; - return; - } - - // constructed generic - // "T3,[T4, Assembly1, Version=...]", ["T5", "T6"] - var (containerTypeArgs, thisTypeArgs) = ParseTypeArgumentStrings(typeArgs, thisTypeArgCount); - - TypeArguments = thisTypeArgs; - - containerTypeArguments = string.IsNullOrWhiteSpace(containerTypeArgs) - ? "" // containing type is not constructed generics - : $"[{containerTypeArgs}]"; // "T3,[T4, Assembly1, Version=...],,]" - - UnboundGenericTypeName = $"{name}{AssemblySuffix}"; - } - - private string ExtractContainer(ref string name, string containerTypeArguments) - { - var lastPlusIndex = name.LastIndexOf('+'); - IsContainerNamespace = lastPlusIndex < 0; - if (IsContainerNamespace) - { - return ExtractContainerNamespace(ref name); - } - - return ExtractContainerType(ref name, containerTypeArguments, lastPlusIndex); - } - - private static string ExtractContainerNamespace(ref string name) - { - var lastDotIndex = name.LastIndexOf('.'); - if (lastDotIndex >= 0) - { - string containerName; - (containerName, _, name) = name.Split(lastDotIndex, lastDotIndex + 1); - return containerName; - } - - return ""; // global namespace name - } - - private string ExtractContainerType(ref string name, string containerTypeArguments, int lastPlusIndex) - { - string containerName; - (containerName, _, name) = name.Split(lastPlusIndex, lastPlusIndex + 1); - return $"{containerName}{containerTypeArguments}{AssemblySuffix}"; - } - - private void ExtractAssemblyName(ref string name, out int lastBracketIndex) - { - lastBracketIndex = name.LastIndexOf(']'); - var assemblyCommaIndex = name.IndexOf(',', lastBracketIndex < 0 ? 0 : lastBracketIndex); - if (assemblyCommaIndex >= 0) - { - // "Assembly2, Version=..." - (name, _, AssemblyName) = name.Split(assemblyCommaIndex, assemblyCommaIndex + 2); - } - } - - private static (string, IEnumerable) ParseTypeArgumentStrings(string typeArgs, int thisTypeArgCount) - { - var thisTypeArgs = new Stack(thisTypeArgCount); - while (typeArgs.Length > 0 && thisTypeArgCount > 0) - { - int startCurrentType; - if (typeArgs[^1] != ']') - { - startCurrentType = typeArgs.LastIndexOf(',') + 1; - thisTypeArgs.Push(typeArgs.Substring(startCurrentType)); - } - else - { - var bracketCount = 1; - for (startCurrentType = typeArgs.Length - 2; startCurrentType >= 0 && bracketCount > 0; startCurrentType--) - { - if (typeArgs[startCurrentType] == ']') - { - bracketCount++; - } - else if (typeArgs[startCurrentType] == '[') - { - bracketCount--; - } - } - startCurrentType++; - thisTypeArgs.Push(typeArgs[(startCurrentType + 1)..^1]); - } - - typeArgs = startCurrentType != 0 - ? typeArgs.Substring(0, startCurrentType - 1) - : ""; - - thisTypeArgCount--; - } - return (typeArgs, thisTypeArgs.ToList()); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.cs deleted file mode 100644 index 41a28e32bf1c..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/NoMetadataHandleType.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed partial class NoMetadataHandleType : Type - { - private readonly string originalName; - private readonly string name; - private readonly string? assemblyName; - private readonly string containerName; - private readonly bool isContainerNamespace; - - private readonly Lazy? typeParams; - - // Either null or notEmpty - private readonly Type[]? thisTypeArguments; - private readonly Type unboundGenericType; - private readonly Type? containingType; - private readonly Namespace? containingNamespace; - - private readonly NamedTypeIdWriter idWriter; - - public NoMetadataHandleType(Context cx, string originalName) : base(cx) - { - this.originalName = originalName; - this.idWriter = new NamedTypeIdWriter(this); - - var nameParser = new FullyQualifiedNameParser(originalName); - - name = nameParser.ShortName; - assemblyName = nameParser.AssemblyName; - isContainerNamespace = nameParser.IsContainerNamespace; - containerName = nameParser.ContainerName; - - unboundGenericType = nameParser.UnboundGenericTypeName is null - ? this - : new NoMetadataHandleType(Context, nameParser.UnboundGenericTypeName); - - if (nameParser.TypeArguments is not null) - { - thisTypeArguments = nameParser.TypeArguments.Select(t => new NoMetadataHandleType(Context, t)).ToArray(); - } - else - { - typeParams = new Lazy(GenericsHelper.MakeTypeParameters(this, ThisTypeParameterCount)); - } - - containingType = isContainerNamespace - ? null - : new NoMetadataHandleType(Context, containerName); - - containingNamespace = isContainerNamespace - ? containerName == Context.GlobalNamespace.Name - ? Context.GlobalNamespace - : containerName == Context.SystemNamespace.Name - ? Context.SystemNamespace - : new Namespace(Context, containerName) - : null; - - Populate(); - } - - private void Populate() - { - if (ContainingNamespace is not null) - { - Context.Populate(ContainingNamespace); - } - - Context.Populate(this); - } - - public override bool Equals(object? obj) - { - return obj is NoMetadataHandleType t && originalName.Equals(t.originalName, StringComparison.Ordinal); - } - - public override int GetHashCode() - { - return originalName.GetHashCode(StringComparison.Ordinal); - } - - public override IEnumerable Contents - { - get - { - foreach (var tp in typeParams?.Value ?? Array.Empty()) - yield return tp; - - foreach (var c in base.Contents) - yield return c; - - var i = 0; - foreach (var type in ThisTypeArguments) - { - yield return type; - yield return Tuples.cil_type_argument(this, i++, type); - } - } - } - - public override CilTypeKind Kind => CilTypeKind.ValueOrRefType; - - public override string Name => GenericsHelper.GetNonGenericName(name); - - public override Namespace? ContainingNamespace => containingNamespace; - - public override Type? ContainingType => containingType; - - public override Type SourceDeclaration => unboundGenericType; - - public override Type Construct(IEnumerable typeArguments) - { - if (TotalTypeParametersCount != typeArguments.Count()) - throw new InternalError("Mismatched type arguments"); - - return Context.Populate(new ConstructedType(Context, this, typeArguments)); - } - - public override void WriteAssemblyPrefix(TextWriter trapFile) - { - if (!string.IsNullOrWhiteSpace(assemblyName)) - { - var an = new AssemblyName(assemblyName); - trapFile.Write(an.Name); - trapFile.Write('_'); - trapFile.Write((an.Version ?? new Version(0, 0, 0, 0)).ToString()); - trapFile.Write(Type.AssemblyTypeNameSeparator); - } - else - { - Context.WriteAssemblyPrefix(trapFile); - } - } - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - idWriter.WriteId(trapFile, inContext); - } - - public override int ThisTypeParameterCount => unboundGenericType == this - ? GenericsHelper.GetGenericTypeParameterCount(name) - : thisTypeArguments!.Length; - - public override IEnumerable TypeParameters => unboundGenericType == this - ? GenericsHelper.GetAllTypeParameters(containingType, typeParams!.Value) - : GenericArguments; - - public override IEnumerable ThisTypeArguments => unboundGenericType == this - ? base.ThisTypeArguments - : thisTypeArguments!; - - public override IEnumerable ThisGenericArguments => unboundGenericType == this - ? typeParams!.Value - : thisTypeArguments!; - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Parameter.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Parameter.cs deleted file mode 100644 index cc26c2f40235..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Parameter.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A parameter entity. - /// - internal sealed class Parameter : LabelledEntity - { - private readonly IParameterizable parameterizable; - private readonly int index; - private readonly Type type; - - public Parameter(Context cx, IParameterizable p, int i, Type t) : base(cx) - { - parameterizable = p; - index = i; - type = t; - } - - public override void WriteId(EscapingTextWriter trapFile) - { - trapFile.WriteSubId(parameterizable); - trapFile.Write('_'); - trapFile.Write(index); - trapFile.Write(";cil-parameter"); - } - - public override bool Equals(object? obj) - { - return obj is Parameter param && parameterizable.Equals(param.parameterizable) && index == param.index; - } - - public override int GetHashCode() - { - return 23 * parameterizable.GetHashCode() + index; - } - - public override IEnumerable Contents - { - get - { - yield return Tuples.cil_parameter(this, parameterizable, index, type); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/PdbSourceFile.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/PdbSourceFile.cs deleted file mode 100644 index 29eb7d118ff3..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/PdbSourceFile.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - internal class PdbSourceFile : File - { - private readonly PDB.ISourceFile file; - - public PdbSourceFile(Context cx, PDB.ISourceFile file) : base(cx, file.Path) - { - this.file = file; - } - - public override IEnumerable Contents - { - get - { - foreach (var c in base.Contents) - yield return c; - - var text = file.Contents; - - if (text is null) - Context.Extractor.Logger.Log(Util.Logging.Severity.Warning, string.Format("PDB source file {0} could not be found", OriginalPath)); - else - Context.TrapWriter.Archive(TransformedPath, text); - - yield return Tuples.file_extraction_mode(this, Context.Extractor.Mode | ExtractorMode.Pdb); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/PointerType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/PointerType.cs deleted file mode 100644 index 9ce05b4a0547..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/PointerType.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class PointerType : Type - { - private readonly Type pointee; - - public PointerType(Context cx, Type pointee) : base(cx) - { - this.pointee = pointee; - - if (pointee is ModifiedType mt) - { - cx.Extractor.Logger.Log( - Util.Logging.Severity.Info, - $"Pointer to modified type {pointee.GetQualifiedName()} is changed to {mt.Unmodified.GetQualifiedName()}"); - this.pointee = mt.Unmodified; - } - } - - public override bool Equals(object? obj) - { - return obj is PointerType pt && pointee.Equals(pt.pointee); - } - - public override int GetHashCode() => HashCode.Combine(pointee, nameof(PointerType)); - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - pointee.WriteId(trapFile, inContext); - trapFile.Write('*'); - } - - public override string Name => pointee.Name + "*"; - - public override Namespace? ContainingNamespace => pointee.ContainingNamespace; - - public override Type? ContainingType => pointee.ContainingType; - - public override TypeContainer Parent => pointee.Parent; - - public override int ThisTypeParameterCount => 0; - - public override CilTypeKind Kind => CilTypeKind.Pointer; - - public override void WriteAssemblyPrefix(TextWriter trapFile) => pointee.WriteAssemblyPrefix(trapFile); - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override Type Construct(IEnumerable typeArguments) => throw new NotImplementedException(); - - public override IEnumerable Contents - { - get - { - foreach (var c in base.Contents) yield return c; - yield return Tuples.cil_pointer_type(this, pointee); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/PrimitiveType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/PrimitiveType.cs deleted file mode 100644 index 4d95e4ca9e23..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/PrimitiveType.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class PrimitiveType : Type - { - private readonly PrimitiveTypeCode typeCode; - public PrimitiveType(Context cx, PrimitiveTypeCode tc) : base(cx) - { - typeCode = tc; - } - - public override bool Equals(object? obj) - { - return obj is PrimitiveType pt && typeCode == pt.typeCode; - } - - public override int GetHashCode() => typeCode.GetHashCode(); - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - Type.WritePrimitiveTypeId(trapFile, Name); - } - - public override string Name => typeCode.Id(); - - public override Namespace ContainingNamespace => Context.SystemNamespace; - - public override Type? ContainingType => null; - - public override int ThisTypeParameterCount => 0; - - public override CilTypeKind Kind => CilTypeKind.ValueOrRefType; - - public override void WriteAssemblyPrefix(TextWriter trapFile) { } - - public override IEnumerable TypeParameters => throw new NotImplementedException(); - - public override Type Construct(IEnumerable typeArguments) => throw new NotImplementedException(); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Property.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Property.cs deleted file mode 100644 index 3e7db7b36d67..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Property.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System.Collections.Generic; -using System.Reflection.Metadata; -using System.Reflection.Metadata.Ecma335; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A property. - /// - internal sealed class Property : LabelledEntity, ICustomModifierReceiver - { - private readonly Handle handle; - private readonly Type type; - private readonly PropertyDefinition pd; - private readonly IGenericContext gc; - - public Property(IGenericContext gc, Type type, PropertyDefinitionHandle handle) : base(gc.Context) - { - this.gc = gc; - this.handle = handle; - pd = Context.MdReader.GetPropertyDefinition(handle); - this.type = type; - } - - public override void WriteId(EscapingTextWriter trapFile) - { - trapFile.WriteSubId(type); - trapFile.Write('.'); - trapFile.Write(Context.GetString(pd.Name)); - trapFile.Write("("); - var index = 0; - var signature = pd.DecodeSignature(new SignatureDecoder(), gc); - foreach (var param in signature.ParameterTypes) - { - trapFile.WriteSeparator(",", ref index); - param.WriteId(trapFile, gc); - } - trapFile.Write(")"); - trapFile.Write(";cil-property"); - } - - public override bool Equals(object? obj) - { - return obj is Property property && Equals(handle, property.handle); - } - - public override int GetHashCode() => handle.GetHashCode(); - - public override IEnumerable Contents - { - get - { - yield return Tuples.metadata_handle(this, Context.Assembly, MetadataTokens.GetToken(handle)); - var sig = pd.DecodeSignature(Context.TypeSignatureDecoder, type); - - var name = Context.ShortName(pd.Name); - - var t = sig.ReturnType; - if (t is ModifiedType mt) - { - t = mt.Unmodified; - yield return Tuples.cil_custom_modifiers(this, mt.Modifier, mt.IsRequired); - } - if (t is ByRefType brt) - { - t = brt.ElementType; - yield return Tuples.cil_type_annotation(this, TypeAnnotation.Ref); - } - yield return Tuples.cil_property(this, type, name, t); - - var accessors = pd.GetAccessors(); - if (!accessors.Getter.IsNil) - { - var getter = (Method)Context.CreateGeneric(type, accessors.Getter); - yield return getter; - yield return Tuples.cil_getter(this, getter); - } - - if (!accessors.Setter.IsNil) - { - var setter = (Method)Context.CreateGeneric(type, accessors.Setter); - yield return setter; - yield return Tuples.cil_setter(this, setter); - } - - foreach (var c in Attribute.Populate(Context, this, pd.GetCustomAttributes())) - yield return c; - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/SignatureDecoder.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/SignatureDecoder.cs deleted file mode 100644 index 5a767b7575c1..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/SignatureDecoder.cs +++ /dev/null @@ -1,289 +0,0 @@ -using System.Collections.Immutable; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - public class SignatureDecoder : ISignatureTypeProvider - { - private struct Array : ITypeSignature - { - private readonly ITypeSignature elementType; - private readonly ArrayShape shape; - - public Array(ITypeSignature elementType, ArrayShape shape) : this() - { - this.elementType = elementType; - this.shape = shape; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - elementType.WriteId(trapFile, gc); - trapFile.Write('['); - for (var i = 1; i < shape.Rank; ++i) - { - trapFile.Write(','); - } - trapFile.Write(']'); - } - } - - private struct ByRef : ITypeSignature - { - private readonly ITypeSignature elementType; - - public ByRef(ITypeSignature elementType) - { - this.elementType = elementType; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - elementType.WriteId(trapFile, gc); - trapFile.Write('&'); - } - } - - private struct FnPtr : ITypeSignature - { - private readonly MethodSignature signature; - - public FnPtr(MethodSignature signature) - { - this.signature = signature; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - FunctionPointerType.WriteName( - trapFile.Write, - t => t.WriteId(trapFile, gc), - signature - ); - } - } - - ITypeSignature IConstructedTypeProvider.GetArrayType(ITypeSignature elementType, ArrayShape shape) => - new Array(elementType, shape); - - ITypeSignature IConstructedTypeProvider.GetByReferenceType(ITypeSignature elementType) => - new ByRef(elementType); - - ITypeSignature ISignatureTypeProvider.GetFunctionPointerType(MethodSignature signature) => - new FnPtr(signature); - - private class Instantiation : ITypeSignature - { - private readonly ITypeSignature genericType; - private readonly ImmutableArray typeArguments; - - public Instantiation(ITypeSignature genericType, ImmutableArray typeArguments) - { - this.genericType = genericType; - this.typeArguments = typeArguments; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - genericType.WriteId(trapFile, gc); - trapFile.Write('<'); - var index = 0; - foreach (var arg in typeArguments) - { - trapFile.WriteSeparator(",", ref index); - arg.WriteId(trapFile, gc); - } - trapFile.Write('>'); - } - } - - ITypeSignature IConstructedTypeProvider.GetGenericInstantiation(ITypeSignature genericType, ImmutableArray typeArguments) => - new Instantiation(genericType, typeArguments); - - private class GenericMethodParameter : ITypeSignature - { - private readonly object innerGc; - private readonly int index; - - public GenericMethodParameter(object innerGc, int index) - { - this.innerGc = innerGc; - this.index = index; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext outerGc) - { - if (!ReferenceEquals(innerGc, outerGc) && innerGc is Method method) - { - trapFile.WriteSubId(method); - } - trapFile.Write("M!"); - trapFile.Write(index); - } - } - - private class GenericTypeParameter : ITypeSignature - { - private readonly int index; - - public GenericTypeParameter(int index) - { - this.index = index; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - trapFile.Write("T!"); - trapFile.Write(index); - } - } - - ITypeSignature ISignatureTypeProvider.GetGenericMethodParameter(object genericContext, int index) => - new GenericMethodParameter(genericContext, index); - - ITypeSignature ISignatureTypeProvider.GetGenericTypeParameter(object genericContext, int index) => - new GenericTypeParameter(index); - - private class Modified : ITypeSignature - { - private readonly ITypeSignature unmodifiedType; - private readonly ITypeSignature modifier; - private readonly bool isRequired; - - public Modified(ITypeSignature unmodifiedType, ITypeSignature modifier, bool isRequired) - { - this.unmodifiedType = unmodifiedType; - this.modifier = modifier; - this.isRequired = isRequired; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - unmodifiedType.WriteId(trapFile, gc); - trapFile.Write(isRequired ? " modreq(" : " modopt("); - modifier.WriteId(trapFile, gc); - trapFile.Write(")"); - } - } - - ITypeSignature ISignatureTypeProvider.GetModifiedType(ITypeSignature modifier, ITypeSignature unmodifiedType, bool isRequired) - { - return new Modified(unmodifiedType, modifier, isRequired); - } - - ITypeSignature ISignatureTypeProvider.GetPinnedType(ITypeSignature elementType) - { - return elementType; - } - - private class PointerType : ITypeSignature - { - private readonly ITypeSignature elementType; - - public PointerType(ITypeSignature elementType) - { - this.elementType = elementType; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - elementType.WriteId(trapFile, gc); - trapFile.Write('*'); - } - } - - ITypeSignature IConstructedTypeProvider.GetPointerType(ITypeSignature elementType) - { - return new PointerType(elementType); - } - - private class Primitive : ITypeSignature - { - private readonly PrimitiveTypeCode typeCode; - - public Primitive(PrimitiveTypeCode typeCode) - { - this.typeCode = typeCode; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - trapFile.Write(typeCode.Id()); - } - } - - ITypeSignature ISimpleTypeProvider.GetPrimitiveType(PrimitiveTypeCode typeCode) - { - return new Primitive(typeCode); - } - - private class SzArrayType : ITypeSignature - { - private readonly ITypeSignature elementType; - - public SzArrayType(ITypeSignature elementType) - { - this.elementType = elementType; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - elementType.WriteId(trapFile, gc); - trapFile.Write("[]"); - } - } - - ITypeSignature ISZArrayTypeProvider.GetSZArrayType(ITypeSignature elementType) - { - return new SzArrayType(elementType); - } - - private class TypeDefinition : ITypeSignature - { - private readonly TypeDefinitionHandle handle; - - public TypeDefinition(TypeDefinitionHandle handle) - { - this.handle = handle; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - var type = (Type)gc.Context.Create(handle); - type.WriteId(trapFile); - } - } - - ITypeSignature ISimpleTypeProvider.GetTypeFromDefinition(MetadataReader reader, TypeDefinitionHandle handle, byte rawTypeKind) - { - return new TypeDefinition(handle); - } - - private class TypeReference : ITypeSignature - { - private readonly TypeReferenceHandle handle; - - public TypeReference(TypeReferenceHandle handle) - { - this.handle = handle; - } - - public void WriteId(EscapingTextWriter trapFile, IGenericContext gc) - { - var type = (Type)gc.Context.Create(handle); - type.WriteId(trapFile); - } - } - - ITypeSignature ISimpleTypeProvider.GetTypeFromReference(MetadataReader reader, TypeReferenceHandle handle, byte rawTypeKind) - { - return new TypeReference(handle); - } - - ITypeSignature ISignatureTypeProvider.GetTypeFromSpecification(MetadataReader reader, object genericContext, TypeSpecificationHandle handle, byte rawTypeKind) - { - var ts = reader.GetTypeSpecification(handle); - return ts.DecodeSignature(this, genericContext); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/SourceLocation.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/SourceLocation.cs deleted file mode 100644 index 9b7b4d583a12..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/SourceLocation.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Collections.Generic; -using Semmle.Extraction.PDB; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class PdbSourceLocation : LabelledEntity, ILocation - { - private readonly Location location; - private readonly PdbSourceFile file; - - public PdbSourceLocation(Context cx, PDB.Location location) : base(cx) - { - this.location = location; - file = cx.CreateSourceFile(location.File); - } - - public override void WriteId(EscapingTextWriter trapFile) - { - file.WriteId(trapFile); - trapFile.Write(','); - trapFile.Write(location.StartLine); - trapFile.Write(','); - trapFile.Write(location.StartColumn); - trapFile.Write(','); - trapFile.Write(location.EndLine); - trapFile.Write(','); - trapFile.Write(location.EndColumn); - trapFile.Write(";sourcelocation"); - } - - public override bool Equals(object? obj) - { - return obj is PdbSourceLocation l && location.Equals(l.location); - } - - public override int GetHashCode() => location.GetHashCode(); - - public override IEnumerable Contents - { - get - { - yield return file; - yield return Tuples.locations_default(this, file, location.StartLine, location.StartColumn, location.EndLine, location.EndColumn); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/Type.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/Type.cs deleted file mode 100644 index 335a6c89c30a..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/Type.cs +++ /dev/null @@ -1,209 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.IO; -using System.Linq; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A type. - /// - internal abstract class Type : TypeContainer, IMember - { - internal const string AssemblyTypeNameSeparator = "::"; - internal const string PrimitiveTypePrefix = "builtin" + AssemblyTypeNameSeparator + "System."; - - protected Type(Context cx) : base(cx) { } - - /// - /// Find the method in this type matching the name and signature. - /// - /// The handle to the name. - /// - /// The handle to the signature. Note that comparing handles is a valid - /// shortcut to comparing the signature bytes since handles are unique. - /// - /// The method, or 'null' if not found or not supported. - internal virtual Method? LookupMethod(StringHandle methodName, BlobHandle signature) - { - return null; - } - - /// - /// Writes the assembly identifier of this type. - /// - public abstract void WriteAssemblyPrefix(TextWriter trapFile); - - /// - /// Writes the ID part to be used in a method ID. - /// - /// - /// Whether we should output the context prefix of type parameters. - /// (This is to avoid infinite recursion generating a method ID that returns a - /// type parameter.) - /// - public abstract void WriteId(EscapingTextWriter trapFile, bool inContext); - - public sealed override void WriteId(EscapingTextWriter trapFile) - { - WriteId(trapFile, false); - trapFile.Write(";cil-type"); - } - - /// - /// Returns the friendly qualified name of types, such as - /// ``"System.Collection.Generic.List`1"`` or - /// ``"System.Collection.Generic.List"``. - /// - /// Note that method/type generic type parameters never show up in the returned name. - /// - public string GetQualifiedName() - { - using var writer = new EscapingTextWriter(); - WriteId(writer, false); - var name = writer.ToString(); - return name.Substring(name.IndexOf(AssemblyTypeNameSeparator) + 2). - Replace(";namespace", ""). - Replace(";cil-type", ""); - } - - public abstract CilTypeKind Kind { get; } - - public override IEnumerable Contents - { - get - { - yield return Tuples.cil_type(this, Name, Kind, Parent, SourceDeclaration); - } - } - - public abstract string Name { get; } - - public abstract Namespace? ContainingNamespace { get; } - - public abstract Type? ContainingType { get; } - - public virtual TypeContainer Parent => (TypeContainer?)ContainingType ?? ContainingNamespace!; - - public abstract Type Construct(IEnumerable typeArguments); - - /// - /// Returns the type arguments of constructed types. For non-constructed types it returns an - /// empty collection. - /// - public virtual IEnumerable ThisTypeArguments - { - get - { - yield break; - } - } - - /// - /// The number of type parameters for non-constructed generic types, the number of type arguments - /// for constructed types, or 0. - /// - public abstract int ThisTypeParameterCount { get; } - - /// - /// The total number of type parameters/type arguments (including parent types). - /// This is used for internal consistency checking only. - /// - public int TotalTypeParametersCount => - ThisTypeParameterCount + (ContainingType?.TotalTypeParametersCount ?? 0); - - /// - /// Returns all bound/unbound generic arguments of a constructed/unbound generic type. - /// - public virtual IEnumerable ThisGenericArguments - { - get - { - yield break; - } - } - - public virtual IEnumerable GenericArguments - { - get - { - if (ContainingType is not null) - { - foreach (var t in ContainingType.GenericArguments) - yield return t; - } - - foreach (var t in ThisGenericArguments) - yield return t; - } - } - - public virtual Type SourceDeclaration => this; - - public static void WritePrimitiveTypeId(TextWriter trapFile, string name) - { - trapFile.Write(PrimitiveTypePrefix); - trapFile.Write(name); - } - - private static readonly Dictionary primitiveTypeCodeMapping = new Dictionary - { - {"Boolean", PrimitiveTypeCode.Boolean}, - {"Object", PrimitiveTypeCode.Object}, - {"Byte", PrimitiveTypeCode.Byte}, - {"SByte", PrimitiveTypeCode.SByte}, - {"Int16", PrimitiveTypeCode.Int16}, - {"UInt16", PrimitiveTypeCode.UInt16}, - {"Int32", PrimitiveTypeCode.Int32}, - {"UInt32", PrimitiveTypeCode.UInt32}, - {"Int64", PrimitiveTypeCode.Int64}, - {"UInt64", PrimitiveTypeCode.UInt64}, - {"Single", PrimitiveTypeCode.Single}, - {"Double", PrimitiveTypeCode.Double}, - {"String", PrimitiveTypeCode.String}, - {"Void", PrimitiveTypeCode.Void}, - {"IntPtr", PrimitiveTypeCode.IntPtr}, - {"UIntPtr", PrimitiveTypeCode.UIntPtr}, - {"Char", PrimitiveTypeCode.Char}, - {"TypedReference", PrimitiveTypeCode.TypedReference} - }; - - /// - /// Gets the primitive type corresponding to this type, if possible. - /// - /// The resulting primitive type, or null. - /// True if this type is a primitive type. - public bool TryGetPrimitiveType([NotNullWhen(true)] out PrimitiveType? t) - { - if (TryGetPrimitiveTypeCode(out var code)) - { - t = Context.Create(code); - return true; - } - - t = null; - return false; - } - - private bool TryGetPrimitiveTypeCode(out PrimitiveTypeCode code) - { - if (ContainingType is null && - ContainingNamespace?.Name == Context.SystemNamespace.Name && - primitiveTypeCodeMapping.TryGetValue(Name, out code)) - { - return true; - } - - code = default; - return false; - } - - protected internal bool IsPrimitiveType => TryGetPrimitiveTypeCode(out _); - - public sealed override IEnumerable MethodParameters => Enumerable.Empty(); - - public static Type DecodeType(IGenericContext gc, TypeSpecificationHandle handle) => - gc.Context.MdReader.GetTypeSpecification(handle).DecodeSignature(gc.Context.TypeSignatureDecoder, gc); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeAnnotation.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeAnnotation.cs deleted file mode 100644 index fe005326b955..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeAnnotation.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace Semmle.Extraction.CIL.Entities -{ - [Flags] - public enum TypeAnnotation - { - None = 0, - Ref = 32 - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeContainer.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeContainer.cs deleted file mode 100644 index 463f2c963a3b..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeContainer.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// Base class for all type containers (namespaces, types, methods). - /// - internal abstract class TypeContainer : LabelledEntity, IGenericContext - { - protected TypeContainer(Context cx) : base(cx) - { - } - - public abstract IEnumerable MethodParameters { get; } - public abstract IEnumerable TypeParameters { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeDefinitionType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeDefinitionType.cs deleted file mode 100644 index f9cec6a41334..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeDefinitionType.cs +++ /dev/null @@ -1,263 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Reflection.Metadata; -using System.Reflection.Metadata.Ecma335; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A type defined in the current assembly. - /// - internal sealed class TypeDefinitionType : Type - { - private readonly TypeDefinitionHandle handle; - private readonly TypeDefinition td; - private readonly Lazy> typeParams; - private readonly Type? declType; - private readonly NamedTypeIdWriter idWriter; - - public TypeDefinitionType(Context cx, TypeDefinitionHandle handle) : base(cx) - { - idWriter = new NamedTypeIdWriter(this); - td = cx.MdReader.GetTypeDefinition(handle); - this.handle = handle; - - declType = - td.GetDeclaringType().IsNil ? null : - (Type)cx.Create(td.GetDeclaringType()); - - // Lazy because should happen during population. - typeParams = new Lazy>(MakeTypeParameters); - } - - public override bool Equals(object? obj) - { - return obj is TypeDefinitionType t && handle.Equals(t.handle); - } - - public override int GetHashCode() => handle.GetHashCode(); - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - idWriter.WriteId(trapFile, inContext); - } - - public override string Name => GenericsHelper.GetNonGenericName(td.Name, Context.MdReader); - - public override Namespace ContainingNamespace => Context.Create(td.NamespaceDefinition); - - public override Type? ContainingType => declType; - - public override CilTypeKind Kind => CilTypeKind.ValueOrRefType; - - public override Type Construct(IEnumerable typeArguments) - { - if (TotalTypeParametersCount != typeArguments.Count()) - throw new InternalError("Mismatched type arguments"); - - return Context.Populate(new ConstructedType(Context, this, typeArguments)); - } - - public override void WriteAssemblyPrefix(TextWriter trapFile) - { - var ct = ContainingType; - if (ct is null) - Context.WriteAssemblyPrefix(trapFile); - else if (IsPrimitiveType) - trapFile.Write(Type.PrimitiveTypePrefix); - else - ct.WriteAssemblyPrefix(trapFile); - } - - private IEnumerable MakeTypeParameters() - { - if (ThisTypeParameterCount == 0) - return Enumerable.Empty(); - - var newTypeParams = new TypeTypeParameter[ThisTypeParameterCount]; - var genericParams = td.GetGenericParameters(); - var toSkip = genericParams.Count - newTypeParams.Length; - - // Two-phase population because type parameters can be mutually dependent - for (var i = 0; i < newTypeParams.Length; ++i) - newTypeParams[i] = Context.Populate(new TypeTypeParameter(this, i)); - for (var i = 0; i < newTypeParams.Length; ++i) - newTypeParams[i].PopulateHandle(genericParams[i + toSkip]); - return newTypeParams; - } - - public override int ThisTypeParameterCount - { - get - { - var containingType = td.GetDeclaringType(); - var parentTypeParameters = containingType.IsNil - ? 0 - : Context.MdReader.GetTypeDefinition(containingType).GetGenericParameters().Count; - - return td.GetGenericParameters().Count - parentTypeParameters; - } - } - - public override IEnumerable TypeParameters => GenericsHelper.GetAllTypeParameters(declType, typeParams!.Value); - - public override IEnumerable ThisGenericArguments => typeParams.Value; - - public override IEnumerable Contents - { - get - { - yield return Tuples.metadata_handle(this, Context.Assembly, MetadataTokens.GetToken(handle)); - - foreach (var c in base.Contents) yield return c; - - MakeTypeParameters(); - - foreach (var f in td.GetFields()) - { - // Populate field if needed - yield return Context.CreateGeneric(this, f); - } - - foreach (var prop in td.GetProperties()) - { - yield return new Property(this, this, prop); - } - - foreach (var @event in td.GetEvents()) - { - yield return new Event(Context, this, @event); - } - - foreach (var a in Attribute.Populate(Context, this, td.GetCustomAttributes())) - yield return a; - - foreach (var impl in td.GetMethodImplementations().Select(i => Context.MdReader.GetMethodImplementation(i))) - { - var m = (Method)Context.CreateGeneric(this, impl.MethodBody); - var decl = (Method)Context.CreateGeneric(this, impl.MethodDeclaration); - - yield return m; - yield return decl; - yield return Tuples.cil_implements(m, decl); - } - - if (td.Attributes.HasFlag(TypeAttributes.Abstract)) - yield return Tuples.cil_abstract(this); - - if (td.Attributes.HasFlag(TypeAttributes.Interface)) - yield return Tuples.cil_interface(this); - else - yield return Tuples.cil_class(this); - - if (td.Attributes.HasFlag(TypeAttributes.Public)) - yield return Tuples.cil_public(this); - - if (td.Attributes.HasFlag(TypeAttributes.Sealed)) - yield return Tuples.cil_sealed(this); - - if (td.Attributes.HasFlag(TypeAttributes.HasSecurity)) - yield return Tuples.cil_security(this); - - // Base types - - if (!td.BaseType.IsNil) - { - var @base = (Type)Context.CreateGeneric(this, td.BaseType); - yield return @base; - yield return Tuples.cil_base_class(this, @base); - - if (IsSystemEnum(td.BaseType) && - GetUnderlyingEnumType() is var underlying && - underlying.HasValue) - { - var underlyingType = Context.Create(underlying.Value); - yield return underlyingType; - yield return Tuples.cil_enum_underlying_type(this, underlyingType); - } - } - - foreach (var @interface in td.GetInterfaceImplementations().Select(i => Context.MdReader.GetInterfaceImplementation(i))) - { - var t = (Type)Context.CreateGeneric(this, @interface.Interface); - yield return t; - yield return Tuples.cil_base_interface(this, t); - } - - // Only type definitions have locations. - yield return Tuples.cil_type_location(this, Context.Assembly); - } - } - - private bool IsSystemEnum(EntityHandle baseType) - { - return baseType.Kind switch - { - HandleKind.TypeReference => IsSystemEnum((TypeReferenceHandle)baseType), - HandleKind.TypeDefinition => IsSystemEnum((TypeDefinitionHandle)baseType), - _ => false, - }; - } - - private bool IsSystemEnum(TypeReferenceHandle baseType) - { - var baseTypeReference = Context.MdReader.GetTypeReference(baseType); - - return IsSystemEnum(baseTypeReference.Name, baseTypeReference.Namespace); - } - - private bool IsSystemEnum(TypeDefinitionHandle baseType) - { - var baseTypeDefinition = Context.MdReader.GetTypeDefinition(baseType); - - return IsSystemEnum(baseTypeDefinition.Name, baseTypeDefinition.Namespace); - } - - private bool IsSystemEnum(StringHandle typeName, StringHandle namespaceName) - { - return Context.MdReader.StringComparer.Equals(typeName, "Enum") && - !namespaceName.IsNil && - Context.MdReader.StringComparer.Equals(namespaceName, "System"); - } - - internal PrimitiveTypeCode? GetUnderlyingEnumType() - { - foreach (var handle in td.GetFields()) - { - var field = Context.MdReader.GetFieldDefinition(handle); - if (field.Attributes.HasFlag(FieldAttributes.Static)) - { - continue; - } - - var blob = Context.MdReader.GetBlobReader(field.Signature); - if (blob.ReadSignatureHeader().Kind != SignatureKind.Field) - { - break; - } - - return (PrimitiveTypeCode)blob.ReadByte(); - } - - return null; - } - - internal override Method LookupMethod(StringHandle name, BlobHandle signature) - { - foreach (var h in td.GetMethods()) - { - var md = Context.MdReader.GetMethodDefinition(h); - - if (md.Name == name && md.Signature == signature) - { - return (Method)Context.Create(h); - } - } - - throw new InternalError("Couldn't locate method in type"); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeParameter.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeParameter.cs deleted file mode 100644 index 5db8b7fb6a35..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeParameter.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - internal abstract class TypeParameter : Type - { - protected readonly IGenericContext gc; - - protected TypeParameter(IGenericContext gc) : base(gc.Context) - { - this.gc = gc; - } - - public override Namespace? ContainingNamespace => null; - - public override Type? ContainingType => null; - - public override int ThisTypeParameterCount => 0; - - public override CilTypeKind Kind => CilTypeKind.TypeParameter; - - public override void WriteAssemblyPrefix(TextWriter trapFile) => throw new NotImplementedException(); - - public override Type Construct(IEnumerable typeArguments) => throw new InternalError("Attempt to construct a type parameter"); - - public IEnumerable PopulateHandle(GenericParameterHandle parameterHandle) - { - if (!parameterHandle.IsNil) - { - var tp = Context.MdReader.GetGenericParameter(parameterHandle); - - if (tp.Attributes.HasFlag(GenericParameterAttributes.Contravariant)) - yield return Tuples.cil_typeparam_contravariant(this); - if (tp.Attributes.HasFlag(GenericParameterAttributes.Covariant)) - yield return Tuples.cil_typeparam_covariant(this); - if (tp.Attributes.HasFlag(GenericParameterAttributes.DefaultConstructorConstraint)) - yield return Tuples.cil_typeparam_new(this); - if (tp.Attributes.HasFlag(GenericParameterAttributes.ReferenceTypeConstraint)) - yield return Tuples.cil_typeparam_class(this); - if (tp.Attributes.HasFlag(GenericParameterAttributes.NotNullableValueTypeConstraint)) - yield return Tuples.cil_typeparam_struct(this); - - foreach (var constraint in tp.GetConstraints().Select(h => Context.MdReader.GetGenericParameterConstraint(h))) - { - var t = (Type)Context.CreateGeneric(this.gc, constraint.Type); - yield return t; - yield return Tuples.cil_typeparam_constraint(this, t); - } - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeReferenceType.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeReferenceType.cs deleted file mode 100644 index f1c10fe836e7..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeReferenceType.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// A type reference, to a type in a referenced assembly. - /// - internal sealed class TypeReferenceType : Type - { - private readonly TypeReferenceHandle handle; - private readonly TypeReference tr; - private readonly Lazy typeParams; - private readonly NamedTypeIdWriter idWriter; - - public TypeReferenceType(Context cx, TypeReferenceHandle handle) : base(cx) - { - this.idWriter = new NamedTypeIdWriter(this); - this.handle = handle; - this.tr = cx.MdReader.GetTypeReference(handle); - this.typeParams = new Lazy(GenericsHelper.MakeTypeParameters(this, ThisTypeParameterCount)); - } - - public override bool Equals(object? obj) - { - return obj is TypeReferenceType t && handle.Equals(t.handle); - } - - public override int GetHashCode() - { - return handle.GetHashCode(); - } - - public override IEnumerable Contents - { - get - { - foreach (var tp in typeParams.Value) - yield return tp; - - foreach (var c in base.Contents) - yield return c; - } - } - - public override string Name => GenericsHelper.GetNonGenericName(tr.Name, Context.MdReader); - - public override Namespace ContainingNamespace => Context.CreateNamespace(tr.Namespace); - - public override Type? ContainingType - { - get - { - return tr.ResolutionScope.Kind == HandleKind.TypeReference - ? (Type)Context.Create((TypeReferenceHandle)tr.ResolutionScope) - : null; - } - } - - public override CilTypeKind Kind => CilTypeKind.ValueOrRefType; - - public override void WriteAssemblyPrefix(TextWriter trapFile) - { - switch (tr.ResolutionScope.Kind) - { - case HandleKind.TypeReference: - ContainingType!.WriteAssemblyPrefix(trapFile); - break; - case HandleKind.AssemblyReference: - var assemblyDef = Context.MdReader.GetAssemblyReference((AssemblyReferenceHandle)tr.ResolutionScope); - trapFile.Write(Context.GetString(assemblyDef.Name)); - trapFile.Write('_'); - trapFile.Write(assemblyDef.Version.ToString()); - trapFile.Write(Entities.Type.AssemblyTypeNameSeparator); - break; - default: - Context.WriteAssemblyPrefix(trapFile); - break; - } - } - - public override int ThisTypeParameterCount => GenericsHelper.GetGenericTypeParameterCount(tr.Name, Context.MdReader); - - public override IEnumerable TypeParameters => GenericsHelper.GetAllTypeParameters(ContainingType, typeParams!.Value); - - public override IEnumerable ThisGenericArguments => typeParams.Value; - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - idWriter.WriteId(trapFile, inContext); - } - - public override Type Construct(IEnumerable typeArguments) - { - if (TotalTypeParametersCount != typeArguments.Count()) - throw new InternalError("Mismatched type arguments"); - - return Context.Populate(new ConstructedType(Context, this, typeArguments)); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeSignatureDecoder.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeSignatureDecoder.cs deleted file mode 100644 index bcd34c76e410..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeSignatureDecoder.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Immutable; -using System.Linq; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL.Entities -{ - /// - /// Decodes a type signature and produces a Type, for use by DecodeSignature() and friends. - /// - internal class TypeSignatureDecoder : ISignatureTypeProvider - { - private readonly Context cx; - - public TypeSignatureDecoder(Context cx) - { - this.cx = cx; - } - - Type IConstructedTypeProvider.GetArrayType(Type elementType, ArrayShape shape) => - cx.Populate(new ArrayType(cx, elementType, shape.Rank)); - - Type IConstructedTypeProvider.GetByReferenceType(Type elementType) => - new ByRefType(cx, elementType); - - Type ISignatureTypeProvider.GetFunctionPointerType(MethodSignature signature) => - cx.Populate(new FunctionPointerType(cx, signature)); - - Type IConstructedTypeProvider.GetGenericInstantiation(Type genericType, ImmutableArray typeArguments) => - genericType.Construct(typeArguments); - - Type ISignatureTypeProvider.GetGenericMethodParameter(IGenericContext genericContext, int index) => - genericContext.MethodParameters.ElementAt(index); - - Type ISignatureTypeProvider.GetGenericTypeParameter(IGenericContext genericContext, int index) => - genericContext.TypeParameters.ElementAt(index); - - Type ISignatureTypeProvider.GetModifiedType(Type modifier, Type unmodifiedType, bool isRequired) => - new ModifiedType(cx, unmodifiedType, modifier, isRequired); - - Type ISignatureTypeProvider.GetPinnedType(Type elementType) => elementType; - - Type IConstructedTypeProvider.GetPointerType(Type elementType) => - cx.Populate(new PointerType(cx, elementType)); - - Type ISimpleTypeProvider.GetPrimitiveType(PrimitiveTypeCode typeCode) => cx.Create(typeCode); - - Type ISZArrayTypeProvider.GetSZArrayType(Type elementType) => - cx.Populate(new ArrayType(cx, elementType)); - - Type ISimpleTypeProvider.GetTypeFromDefinition(MetadataReader reader, TypeDefinitionHandle handle, byte rawTypeKind) => - (Type)cx.Create(handle); - - Type ISimpleTypeProvider.GetTypeFromReference(MetadataReader reader, TypeReferenceHandle handle, byte rawTypeKind) => - (Type)cx.Create(handle); - - Type ISignatureTypeProvider.GetTypeFromSpecification(MetadataReader reader, IGenericContext genericContext, TypeSpecificationHandle handle, byte rawTypeKind) => - throw new NotImplementedException(); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeTypeParameter.cs b/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeTypeParameter.cs deleted file mode 100644 index ba4ec79fb78a..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Entities/TypeTypeParameter.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace Semmle.Extraction.CIL.Entities -{ - internal sealed class TypeTypeParameter : TypeParameter - { - private readonly Type type; - private readonly int index; - - public TypeTypeParameter(Type t, int i) : base(t) - { - index = i; - type = t; - } - - public override bool Equals(object? obj) - { - return obj is TypeTypeParameter tp && type.Equals(tp.type) && index == tp.index; - } - - public override int GetHashCode() - { - return type.GetHashCode() * 13 + index; - } - - public override void WriteId(EscapingTextWriter trapFile, bool inContext) - { - type.WriteId(trapFile, inContext); - trapFile.Write('!'); - trapFile.Write(index); - } - - public override TypeContainer Parent => type; - public override string Name => "!" + index; - - public override IEnumerable TypeParameters => Enumerable.Empty(); - - public override IEnumerable Contents - { - get - { - yield return Tuples.cil_type(this, Name, Kind, type, SourceDeclaration); - yield return Tuples.cil_type_parameter(type, index, this); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/ICustomModifierReceiver.cs b/csharp/extractor/Semmle.Extraction.CIL/ICustomModifierReceiver.cs deleted file mode 100644 index 24d2c057b2e9..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/ICustomModifierReceiver.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Semmle.Extraction.CIL -{ - internal interface ICustomModifierReceiver - { - } -} \ No newline at end of file diff --git a/csharp/extractor/Semmle.Extraction.CIL/Id.cs b/csharp/extractor/Semmle.Extraction.CIL/Id.cs deleted file mode 100644 index 8d9a78f76d3f..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Id.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection.Metadata; - -namespace Semmle.Extraction.CIL -{ - public static class IdUtils - { - public static string Id(this PrimitiveTypeCode typeCode) - { - switch (typeCode) - { - case PrimitiveTypeCode.Boolean: return "Boolean"; - case PrimitiveTypeCode.Byte: return "Byte"; - case PrimitiveTypeCode.Char: return "Char"; - case PrimitiveTypeCode.Double: return "Double"; - case PrimitiveTypeCode.Int16: return "Int16"; - case PrimitiveTypeCode.Int32: return "Int32"; - case PrimitiveTypeCode.Int64: return "Int64"; - case PrimitiveTypeCode.IntPtr: return "IntPtr"; - case PrimitiveTypeCode.Object: return "Object"; - case PrimitiveTypeCode.SByte: return "SByte"; - case PrimitiveTypeCode.Single: return "Single"; - case PrimitiveTypeCode.String: return "String"; - case PrimitiveTypeCode.UInt16: return "UInt16"; - case PrimitiveTypeCode.UInt32: return "UInt32"; - case PrimitiveTypeCode.UInt64: return "UInt64"; - case PrimitiveTypeCode.UIntPtr: return "UIntPtr"; - case PrimitiveTypeCode.Void: return "Void"; - case PrimitiveTypeCode.TypedReference: return "TypedReference"; - default: throw new InternalError($"Unhandled type code {typeCode}"); - } - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/IPdb.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/IPdb.cs deleted file mode 100644 index 46c11440dc58..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/IPdb.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection.Metadata; - -namespace Semmle.Extraction.PDB -{ - /// - /// Wrapper for reading PDB files. - /// This is needed because there are different libraries for dealing with - /// different types of PDB file, even though they share the same file extension. - /// - public interface IPdb : IDisposable - { - /// - /// Gets all source files in this PDB. - /// - IEnumerable SourceFiles { get; } - - /// - /// Look up a method from a given handle. - /// - /// The handle to query. - /// The method information, or null if the method does not have debug information. - Method? GetMethod(MethodDebugInformationHandle methodHandle); - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/ISourceFile.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/ISourceFile.cs deleted file mode 100644 index 48e1de708f21..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/ISourceFile.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Semmle.Extraction.PDB -{ - /// - /// A source file reference in a PDB file. - /// - public interface ISourceFile - { - string Path { get; } - - /// - /// The contents of the file. - /// This property is needed in case the contents - /// of the file are embedded in the PDB instead of being on the filesystem. - /// - /// null if the contents are unavailable. - /// E.g. if the PDB file exists but the corresponding source files are missing. - /// - string? Contents { get; } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/Location.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/Location.cs deleted file mode 100644 index ccf95f8e7d9e..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/Location.cs +++ /dev/null @@ -1,63 +0,0 @@ -namespace Semmle.Extraction.PDB -{ - /// - /// A location in source code. - /// - public sealed class Location - { - /// - /// The file containing the code. - /// - public ISourceFile File { get; } - - /// - /// The start line of text within the source file. - /// - public int StartLine { get; } - - /// - /// The start column of text within the source file. - /// - public int StartColumn { get; } - - /// - /// The end line of text within the source file. - /// - public int EndLine { get; } - - /// - /// The end column of text within the source file. - /// - public int EndColumn { get; } - - public override string ToString() - { - return string.Format("({0},{1})-({2},{3})", StartLine, StartColumn, EndLine, EndColumn); - } - - public override bool Equals(object? obj) - { - return obj is Location otherLocation && - File.Equals(otherLocation.File) && - StartLine == otherLocation.StartLine && - StartColumn == otherLocation.StartColumn && - EndLine == otherLocation.EndLine && - EndColumn == otherLocation.EndColumn; - } - - public override int GetHashCode() - { - var h1 = StartLine + 37 * (StartColumn + 51 * (EndLine + 97 * EndColumn)); - return File.GetHashCode() + 17 * h1; - } - - public Location(ISourceFile file, int startLine, int startCol, int endLine, int endCol) - { - File = file; - StartLine = startLine; - StartColumn = startCol; - EndLine = endLine; - EndColumn = endCol; - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/MdProvider.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/MdProvider.cs deleted file mode 100644 index 90b953ac0e79..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/MdProvider.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Reflection; -using Microsoft.DiaSymReader; - -#pragma warning disable IDE0060, CA1822 - -namespace Semmle.Extraction.PDB -{ - /// - /// This is not used but is seemingly needed in order to use DiaSymReader. - /// - internal class MdProvider : ISymReaderMetadataProvider - { - public MdProvider() - { - } - - public object? GetMetadataImport() => null; - - public unsafe bool TryGetStandaloneSignature(int standaloneSignatureToken, out byte* signature, out int length) => - throw new NotImplementedException(); - - public bool TryGetTypeDefinitionInfo(int typeDefinitionToken, out string namespaceName, out string typeName, out TypeAttributes attributes, out int baseTypeToken) => - throw new NotImplementedException(); - - public bool TryGetTypeDefinitionInfo(int typeDefinitionToken, out string namespaceName, out string typeName, out TypeAttributes attributes) => - throw new NotImplementedException(); - - public bool TryGetTypeReferenceInfo(int typeReferenceToken, out string namespaceName, out string typeName, out int resolutionScopeToken) => - throw new NotImplementedException(); - - public bool TryGetTypeReferenceInfo(int typeReferenceToken, out string namespaceName, out string typeName) => - throw new NotImplementedException(); - } -} - -#pragma warning restore diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/MetadataPdbReader.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/MetadataPdbReader.cs deleted file mode 100644 index fa7a1d0e8ca5..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/MetadataPdbReader.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection.Metadata; -using System.Reflection.PortableExecutable; - -namespace Semmle.Extraction.PDB -{ - /// - /// A reader of PDB information using System.Reflection.Metadata. - /// This is cross platform, and the future of PDB. - /// - /// PDB information can be in a separate PDB file, or embedded in the DLL. - /// - internal sealed class MetadataPdbReader : IPdb - { - private class SourceFile : ISourceFile - { - public SourceFile(MetadataReader reader, DocumentHandle handle) - { - var doc = reader.GetDocument(handle); - Path = reader.GetString(doc.Name); - } - - public string Path { get; private set; } - - public string? Contents => File.Exists(Path) ? File.ReadAllText(Path, System.Text.Encoding.Default) : null; - } - - // Turns out to be very important to keep the MetadataReaderProvider live - // or the reader will crash. - private readonly MetadataReaderProvider provider; - private readonly MetadataReader reader; - - public MetadataPdbReader(MetadataReaderProvider provider) - { - this.provider = provider; - reader = provider.GetMetadataReader(); - } - - public IEnumerable SourceFiles => reader.Documents.Select(handle => new SourceFile(reader, handle)); - - public Method? GetMethod(MethodDebugInformationHandle handle) - { - var debugInfo = reader.GetMethodDebugInformation(handle); - - var sequencePoints = debugInfo.GetSequencePoints() - .Where(p => !p.Document.IsNil && !p.IsHidden) - .Select(p => new SequencePoint(p.Offset, new Location( - new SourceFile(reader, p.Document), p.StartLine, p.StartColumn, p.EndLine, p.EndColumn))) - .Where(p => p.Location.File.Path is not null) - .ToArray(); - - return sequencePoints.Any() ? new Method(sequencePoints) : null; - } - - public static MetadataPdbReader? CreateFromAssembly(string assemblyPath, PEReader peReader) - { - var provider = peReader - .ReadDebugDirectory() - .Where(d => d.Type == DebugDirectoryEntryType.EmbeddedPortablePdb) - .Select(dirEntry => peReader.ReadEmbeddedPortablePdbDebugDirectoryData(dirEntry)) - .FirstOrDefault(); - - if (provider is not null) - { - return new MetadataPdbReader(provider); - } - - try - { - if (peReader.TryOpenAssociatedPortablePdb( - assemblyPath, - s => new FileStream(s, FileMode.Open, FileAccess.Read, FileShare.Read), - out provider, - out _)) - { - return new MetadataPdbReader(provider!); - } - } - - catch (BadImageFormatException) - { - // Something is wrong with the file. - } - catch (FileNotFoundException) - { - // The PDB file was not found. - } - return null; - } - - public void Dispose() - { - provider.Dispose(); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/Method.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/Method.cs deleted file mode 100644 index 6a534a4dd20f..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/Method.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace Semmle.Extraction.PDB -{ - public class Method - { - public IEnumerable SequencePoints { get; } - - public Method(IEnumerable sequencePoints) - { - SequencePoints = sequencePoints; - } - - public Location Location => SequencePoints.First().Location; - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/NativePdbReader.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/NativePdbReader.cs deleted file mode 100644 index c6db472411e1..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/NativePdbReader.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection.Metadata; -using System.Reflection.Metadata.Ecma335; -using System.Reflection.PortableExecutable; -using Microsoft.DiaSymReader; - -namespace Semmle.Extraction.PDB -{ - /// - /// A PDB reader using Microsoft.DiaSymReader.Native. - /// This is an unmanaged Windows DLL, which therefore only works on Windows. - /// - internal sealed class NativePdbReader : IPdb - { - private sealed class Document : ISourceFile - { - private readonly ISymUnmanagedDocument document; - - public Document(ISymUnmanagedDocument doc) - { - document = doc; - contents = new Lazy(() => - { - if (document.HasEmbeddedSource(out var isEmbedded) == 0 && isEmbedded) - { - var rawContents = document.GetEmbeddedSource().ToArray(); - return System.Text.Encoding.Default.GetString(rawContents); - } - - return File.Exists(Path) - ? File.ReadAllText(Path) - : null; - - }); - } - - public override bool Equals(object? obj) - { - return obj is Document otherDoc && Path.Equals(otherDoc.Path); - } - - public override int GetHashCode() => Path.GetHashCode(); - - public string Path => document.GetName(); - - public override string ToString() => Path; - - private readonly Lazy contents; - - public string? Contents => contents.Value; - } - - public IEnumerable SourceFiles => reader.GetDocuments().Select(d => new Document(d)); - - public Method? GetMethod(MethodDebugInformationHandle h) - { - var methodToken = MetadataTokens.GetToken(h.ToDefinitionHandle()); - var method = reader.GetMethod(methodToken); - if (method is not null) - { - if (method.GetSequencePointCount(out var count) != 0 || count == 0) - return null; - - var s = method.GetSequencePoints() - .Where(sp => !sp.IsHidden) - .Select(sp => new SequencePoint(sp.Offset, new Location( - new Document(sp.Document), sp.StartLine, sp.StartColumn, sp.EndLine, sp.EndColumn))) - .ToArray(); - - return s.Any() ? new Method(s) : null; - } - return null; - } - - private NativePdbReader(string path) - { - pdbStream = new FileStream(path, FileMode.Open); - var metadataProvider = new MdProvider(); - reader = SymUnmanagedReaderFactory.CreateReader(pdbStream, metadataProvider); - } - - private readonly ISymUnmanagedReader5 reader; - private readonly FileStream pdbStream; - - public static NativePdbReader? CreateFromAssembly(PEReader peReader) - { - // The Native PDB reader uses an unmanaged Windows DLL - // so only works on Windows. - if (!Semmle.Util.Win32.IsWindows()) - return null; - - var debugDirectory = peReader.ReadDebugDirectory(); - - var path = debugDirectory - .Where(d => d.Type == DebugDirectoryEntryType.CodeView) - .Select(peReader.ReadCodeViewDebugDirectoryData) - .Select(cv => cv.Path) - .FirstOrDefault(File.Exists); - - if (path is not null) - { - return new NativePdbReader(path); - } - - return null; - } - - public void Dispose() - { - pdbStream.Dispose(); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/PdbReader.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/PdbReader.cs deleted file mode 100644 index 1f0f1b455dcd..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/PdbReader.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Reflection.PortableExecutable; - -namespace Semmle.Extraction.PDB -{ - internal static class PdbReader - { - /// - /// Returns the PDB information associated with an assembly. - /// - /// The path to the assembly. - /// The PE reader for the assembly. - /// A PdbReader, or null if no PDB information is available. - public static IPdb? Create(string assemblyPath, PEReader peReader) - { - return (IPdb?)MetadataPdbReader.CreateFromAssembly(assemblyPath, peReader) ?? - NativePdbReader.CreateFromAssembly(peReader); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/PDB/SequencePoint.cs b/csharp/extractor/Semmle.Extraction.CIL/PDB/SequencePoint.cs deleted file mode 100644 index 2cea6e54768f..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/PDB/SequencePoint.cs +++ /dev/null @@ -1,30 +0,0 @@ -namespace Semmle.Extraction.PDB -{ - /// - /// A sequencepoint is a marker in the source code where you can put a breakpoint, and - /// maps instructions to source code. - /// - public struct SequencePoint - { - /// - /// The byte-offset of the instruction. - /// - public int Offset { get; } - - /// - /// The source location of the instruction. - /// - public Location Location { get; } - - public override string ToString() - { - return string.Format("{0} = {1}", Offset, Location); - } - - public SequencePoint(int offset, Location location) - { - Offset = offset; - Location = location; - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CIL/Properties/AssemblyInfo.cs b/csharp/extractor/Semmle.Extraction.CIL/Properties/AssemblyInfo.cs deleted file mode 100644 index 110feb8de0d7..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Semmle.Extraction.CIL")] -[assembly: AssemblyDescription("Semme CIL extractor.")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Semmle.Extraction.CIL")] -[assembly: AssemblyCopyright("Copyright © Semmle 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("a23d9ec2-8aae-43da-97cb-579f640b89cd")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/csharp/extractor/Semmle.Extraction.CIL/Semmle.Extraction.CIL.csproj b/csharp/extractor/Semmle.Extraction.CIL/Semmle.Extraction.CIL.csproj deleted file mode 100644 index a952ea2d3dd5..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Semmle.Extraction.CIL.csproj +++ /dev/null @@ -1,34 +0,0 @@ - - - - net8.0 - Semmle.Extraction.CIL - Semmle.Extraction.CIL - false - true - win-x64;linux-x64;osx-x64 - enable - - - - DEBUG;DEBUG_LABELS - - - - - - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive -all - - - - diff --git a/csharp/extractor/Semmle.Extraction.CIL/Tuples.cs b/csharp/extractor/Semmle.Extraction.CIL/Tuples.cs deleted file mode 100644 index 44519f45468c..000000000000 --- a/csharp/extractor/Semmle.Extraction.CIL/Tuples.cs +++ /dev/null @@ -1,227 +0,0 @@ -using Semmle.Extraction.CIL.Entities; - -namespace Semmle.Extraction.CIL -{ - - internal static class Tuples - { - internal static Tuple assemblies(Assembly assembly, File file, string identifier, string name, string version) => - new Tuple("assemblies", assembly, file, identifier, name, version); - - internal static Tuple cil_abstract(IMember method) => - new Tuple("cil_abstract", method); - - internal static Tuple cil_adder(Event member, Method method) => - new Tuple("cil_adder", member, method); - - internal static Tuple cil_access(Instruction i, IExtractedEntity m) => - new Tuple("cil_access", i, m); - - internal static Tuple cil_attribute(Attribute attribute, IExtractedEntity @object, Method constructor) => - new Tuple("cil_attribute", attribute, @object, constructor); - - internal static Tuple cil_attribute_named_argument(Attribute attribute, string name, string value) => - new Tuple("cil_attribute_named_argument", attribute, name, value); - - internal static Tuple cil_attribute_positional_argument(Attribute attribute, int index, string value) => - new Tuple("cil_attribute_positional_argument", attribute, index, value); - - internal static Tuple cil_array_type(ArrayType array, Type element, int rank) => - new Tuple("cil_array_type", array, element, rank); - - internal static Tuple cil_base_class(Type t, Type @base) => - new Tuple("cil_base_class", t, @base); - - internal static Tuple cil_enum_underlying_type(Type t, PrimitiveType underlying) => - new Tuple("cil_enum_underlying_type", t, underlying); - - internal static Tuple cil_base_interface(Type t, Type @base) => - new Tuple("cil_base_interface", t, @base); - - internal static Tuple cil_class(TypeDefinitionType type) => - new Tuple("cil_class", type); - - internal static Tuple cil_event(Event e, Type parent, string name, Type type) => - new Tuple("cil_event", e, parent, name, type); - - internal static Tuple cil_field(Field field, Type parent, string name, Type fieldType) => - new Tuple("cil_field", field, parent, name, fieldType); - - internal static Tuple cil_getter(Property member, Method method) => - new Tuple("cil_getter", member, method); - - internal static Tuple cil_handler(ExceptionRegion region, MethodImplementation method, int index, int kind, - Instruction region_start, - Instruction region_end, - Instruction handler_start) => - new Tuple("cil_handler", region, method, index, kind, region_start, region_end, handler_start); - - internal static Tuple cil_handler_filter(ExceptionRegion region, Instruction filter_start) => - new Tuple("cil_handler_filter", region, filter_start); - - internal static Tuple cil_handler_type(ExceptionRegion region, Type t) => - new Tuple("cil_handler_type", region, t); - - internal static Tuple cil_implements(Method derived, Method declaration) => - new Tuple("cil_implements", derived, declaration); - - internal static Tuple cil_instruction(Instruction instruction, int opcode, int index, MethodImplementation parent) => - new Tuple("cil_instruction", instruction, opcode, index, parent); - - internal static Tuple cil_instruction_location(Instruction i, PdbSourceLocation loc) => - new Tuple("cil_instruction_location", i, loc); - - internal static Tuple cil_interface(TypeDefinitionType type) => - new Tuple("cil_interface", type); - - internal static Tuple cil_internal(DefinitionField field) => - new Tuple("cil_internal", field); - - internal static Tuple cil_jump(Instruction from, Instruction to) => - new Tuple("cil_jump", from, to); - - internal static Tuple cil_local_variable(LocalVariable l, MethodImplementation m, int i, Type t) => - new Tuple("cil_local_variable", l, m, i, t); - - internal static Tuple cil_method(Method method, string name, Type declType, Type returnType) => - new Tuple("cil_method", method, name, declType, returnType); - - internal static Tuple cil_function_pointer_return_type(FunctionPointerType fnptr, Type returnType) => - new Tuple("cil_function_pointer_return_type", fnptr, returnType); - - internal static Tuple cil_function_pointer_calling_conventions(FunctionPointerType fnptr, System.Reflection.Metadata.SignatureCallingConvention callingConvention) => - new Tuple("cil_function_pointer_calling_conventions", fnptr, (int)callingConvention); - - internal static Tuple cil_method_implementation(MethodImplementation impl, Method method, Assembly assembly) => - new Tuple("cil_method_implementation", impl, method, assembly); - - internal static Tuple cil_method_location(Method m, ILocation a) => - new Tuple("cil_method_location", m, a); - - internal static Tuple cil_method_source_declaration(Method method, Method sourceDecl) => - new Tuple("cil_method_source_declaration", method, sourceDecl); - - internal static Tuple cil_method_stack_size(MethodImplementation method, int stackSize) => - new Tuple("cil_method_stack_size", method, stackSize); - - internal static Tuple cil_newslot(Method method) => - new Tuple("cil_newslot", method); - - internal static Tuple cil_parameter(Parameter p, IParameterizable m, int i, Type t) => - new Tuple("cil_parameter", p, m, i, t); - - internal static Tuple cil_parameter_in(Parameter p) => - new Tuple("cil_parameter_in", p); - - internal static Tuple cil_parameter_out(Parameter p) => - new Tuple("cil_parameter_out", p); - - internal static Tuple cil_pointer_type(PointerType t, Type pointee) => - new Tuple("cil_pointer_type", t, pointee); - - internal static Tuple cil_private(IMember modifiable) => - new Tuple("cil_private", modifiable); - - internal static Tuple cil_protected(IMember modifiable) => - new Tuple("cil_protected", modifiable); - - internal static Tuple cil_property(Property p, Type parent, string name, Type propType) => - new Tuple("cil_property", p, parent, name, propType); - - internal static Tuple cil_public(IMember modifiable) => - new Tuple("cil_public", modifiable); - - internal static Tuple cil_raiser(Event member, Method method) => - new Tuple("cil_raiser", member, method); - - internal static Tuple cil_requiresecobject(Method method) => - new Tuple("cil_requiresecobject", method); - - internal static Tuple cil_remover(Event member, Method method) => - new Tuple("cil_remover", member, method); - - internal static Tuple cil_sealed(IMember modifiable) => - new Tuple("cil_sealed", modifiable); - - internal static Tuple cil_security(IMember method) => - new Tuple("cil_security", method); - - internal static Tuple cil_setter(Property member, Method method) => - new Tuple("cil_setter", member, method); - - internal static Tuple cil_specialname(Method method) => - new Tuple("cil_specialname", method); - - internal static Tuple cil_static(IMember modifiable) => - new Tuple("cil_static", modifiable); - - internal static Tuple cil_switch(Instruction from, int index, Instruction to) => - new Tuple("cil_switch", from, index, to); - - internal static Tuple cil_type(Type t, string name, CilTypeKind kind, TypeContainer parent, Type sourceDecl) => - new Tuple("cil_type", t, name, (int)kind, parent, sourceDecl); - - internal static Tuple cil_type_argument(TypeContainer constructedTypeOrMethod, int index, Type argument) => - new Tuple("cil_type_argument", constructedTypeOrMethod, index, argument); - - internal static Tuple cil_type_location(Type t, Assembly a) => - new Tuple("cil_type_location", t, a); - - internal static Tuple cil_type_parameter(TypeContainer unboundTypeOrMethod, int index, TypeParameter parameter) => - new Tuple("cil_type_parameter", unboundTypeOrMethod, index, parameter); - - internal static Tuple cil_typeparam_covariant(TypeParameter p) => - new Tuple("cil_typeparam_covariant", p); - - internal static Tuple cil_typeparam_contravariant(TypeParameter p) => - new Tuple("cil_typeparam_contravariant", p); - - internal static Tuple cil_typeparam_class(TypeParameter p) => - new Tuple("cil_typeparam_class", p); - - internal static Tuple cil_typeparam_constraint(TypeParameter p, Type constraint) => - new Tuple("cil_typeparam_constraint", p, constraint); - - internal static Tuple cil_typeparam_new(TypeParameter p) => - new Tuple("cil_typeparam_new", p); - - internal static Tuple cil_typeparam_struct(TypeParameter p) => - new Tuple("cil_typeparam_struct", p); - - internal static Tuple cil_value(Instruction i, string value) => - new Tuple("cil_value", i, value); - - internal static Tuple cil_virtual(Method method) => - new Tuple("cil_virtual", method); - - internal static Tuple cil_custom_modifiers(ICustomModifierReceiver receiver, Type modifier, bool isRequired) => - new Tuple("cil_custom_modifiers", receiver, modifier, isRequired ? 1 : 0); - - internal static Tuple cil_type_annotation(IExtractedEntity receiver, TypeAnnotation annotation) => - new Tuple("cil_type_annotation", receiver, (int)annotation); - - internal static Tuple containerparent(Folder parent, IFileOrFolder child) => - new Tuple("containerparent", parent, child); - - internal static Tuple files(File file, string fullName) => - new Tuple("files", file, fullName); - - internal static Tuple file_extraction_mode(File file, ExtractorMode mode) => - new Tuple("file_extraction_mode", file, mode); - - internal static Tuple folders(Folder folder, string path) => - new Tuple("folders", folder, path); - - internal static Tuple locations_default(PdbSourceLocation label, File file, int startLine, int startCol, int endLine, int endCol) => - new Tuple("locations_default", label, file, startLine, startCol, endLine, endCol); - - internal static Tuple metadata_handle(IExtractedEntity entity, Assembly assembly, int handleValue) => - new Tuple("metadata_handle", entity, assembly, handleValue); - - internal static Tuple namespaces(Namespace ns, string name) => - new Tuple("namespaces", ns, name); - - internal static Tuple parent_namespace(TypeContainer child, Namespace parent) => - new Tuple("parent_namespace", child, parent); - } -} From af06202241d9ddd6752f0f15a129f057399ec582 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 4 Mar 2024 14:16:58 +0100 Subject: [PATCH 134/731] C#: Cleanup implementation. --- csharp/.editorconfig | 5 ++-- csharp/CSharp.sln | 4 --- csharp/codeql-extractor.yml | 7 ----- .../Options.cs | 1 - .../Extractor/Analyser.cs | 14 ---------- .../Semmle.Extraction.CSharp.csproj | 1 - .../Semmle.Extraction.Tests/Options.cs | 28 ------------------- csharp/extractor/Semmle.Extraction/Options.cs | 18 ------------ 8 files changed, 2 insertions(+), 76 deletions(-) diff --git a/csharp/.editorconfig b/csharp/.editorconfig index 3705b7144e33..2602206b037e 100644 --- a/csharp/.editorconfig +++ b/csharp/.editorconfig @@ -268,6 +268,5 @@ csharp_style_var_elsewhere = true:suggestion # [extractor/Semmle.Extraction/Tuples.cs, - extractor/Semmle.Extraction.CSharp/Tuples.cs, - extractor/Semmle.Extraction.CIL/Tuples.cs] -dotnet_naming_rule.members_should_be_pascal_case.severity = none \ No newline at end of file + extractor/Semmle.Extraction.CSharp/Tuples.cs] +dotnet_naming_rule.members_should_be_pascal_case.severity = none diff --git a/csharp/CSharp.sln b/csharp/CSharp.sln index 0ba39b813bb0..0578b5b88108 100644 --- a/csharp/CSharp.sln +++ b/csharp/CSharp.sln @@ -8,8 +8,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction", "extrac EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp", "extractor\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj", "{C4D62DA0-B64B-440B-86DC-AB52318CB8BF}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CIL", "extractor\Semmle.Extraction.CIL\Semmle.Extraction.CIL.csproj", "{399A1579-68F0-40F4-9A23-F241BA697F9C}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp.DependencyFetching", "extractor\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj", "{541D1AC5-E42C-4AB2-A1A4-C2355CE2A2EF}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp.Standalone", "extractor\Semmle.Extraction.CSharp.Standalone\Semmle.Extraction.CSharp.Standalone.csproj", "{D00E7D25-0FA0-48EC-B048-CD60CE1B30D8}" @@ -18,8 +16,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp.St EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp.Util", "extractor\Semmle.Extraction.CSharp.Util\Semmle.Extraction.CSharp.Util.csproj", "{998A0D4C-8BFC-4513-A28D-4816AFB89882}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CIL.Driver", "extractor\Semmle.Extraction.CIL.Driver\Semmle.Extraction.CIL.Driver.csproj", "{EFA400B3-C1CE-446F-A4E2-8B44E61EF47C}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.CSharp.Driver", "extractor\Semmle.Extraction.CSharp.Driver\Semmle.Extraction.CSharp.Driver.csproj", "{C36453BF-0C82-448A-B15D-26947503A2D3}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Semmle.Extraction.Tests", "extractor\Semmle.Extraction.Tests\Semmle.Extraction.Tests.csproj", "{CD8D3F90-AD2E-4BB5-8E82-B94AA293864A}" diff --git a/csharp/codeql-extractor.yml b/csharp/codeql-extractor.yml index 13019e7b0a3e..6c3285c412b9 100644 --- a/csharp/codeql-extractor.yml +++ b/csharp/codeql-extractor.yml @@ -47,13 +47,6 @@ options: the code (for example if it uses inaccessible dependencies). type: string pattern: "^(false|true)$" - cil: - title: Whether to enable CIL extraction. - description: > - A value indicating, whether CIL extraction should be enabled. - The default is 'true'. - type: string - pattern: "^(false|true)$" logging: title: Options pertaining to logging. type: object diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Options.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Options.cs index 2efe77047752..39c363a77531 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Options.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Options.cs @@ -58,7 +58,6 @@ public static void ShowHelp(TextWriter output) output.WriteLine("Additional options:\n"); output.WriteLine(" --threads:nnn Specify number of threads (default=CPU cores)"); output.WriteLine(" --verbose Produce more output"); - output.WriteLine(" --pdb Cross-reference information from PDBs where available"); } private Options() diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs index 59359b2715a7..57ce2f7827c7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs @@ -66,9 +66,6 @@ public void AnalyseReferences() { foreach (var assembly in compilation.References.OfType()) { - // CIL first - it takes longer. - if (options.CIL) - extractionTasks.Add(() => DoExtractCIL(assembly)); extractionTasks.Add(() => DoAnalyseReferenceAssembly(assembly)); } } @@ -177,17 +174,6 @@ private void DoAnalyseReferenceAssembly(PortableExecutableReference r) } } - private void DoExtractCIL(PortableExecutableReference r) - { - var currentTaskId = IncrementTaskCount(); - ReportProgressTaskStarted(currentTaskId, r.FilePath); - var stopwatch = new Stopwatch(); - stopwatch.Start(); - CIL.Analyser.ExtractCIL(r.FilePath!, Logger, options, out var trapFile, out var extracted); - stopwatch.Stop(); - ReportProgressTaskDone(currentTaskId, r.FilePath, trapFile, stopwatch.Elapsed, extracted ? AnalysisAction.Extracted : AnalysisAction.UpToDate); - } - private void DoExtractTree(SyntaxTree tree) { try diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Semmle.Extraction.CSharp.csproj b/csharp/extractor/Semmle.Extraction.CSharp/Semmle.Extraction.CSharp.csproj index 17943c6e21bb..2a59f3716ceb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Semmle.Extraction.CSharp.csproj +++ b/csharp/extractor/Semmle.Extraction.CSharp/Semmle.Extraction.CSharp.csproj @@ -9,7 +9,6 @@ enable - diff --git a/csharp/extractor/Semmle.Extraction.Tests/Options.cs b/csharp/extractor/Semmle.Extraction.Tests/Options.cs index 492d5ce5f5e8..a20788cd244b 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/Options.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/Options.cs @@ -22,14 +22,12 @@ public void DefaultOptions() { options = CSharp.Options.CreateWithEnvironment(Array.Empty()); Assert.True(options.Cache); - Assert.False(options.CIL); Assert.Null(options.Framework); Assert.Null(options.CompilerName); Assert.Empty(options.CompilerArguments); Assert.True(options.Threads >= 1); Assert.Equal(Verbosity.Info, options.LegacyVerbosity); Assert.False(options.Console); - Assert.False(options.PDB); Assert.False(options.Fast); Assert.Equal(TrapWriter.CompressionMode.Brotli, options.TrapCompression); } @@ -48,25 +46,6 @@ public void Cache() Assert.False(options.Cache); } - [Fact] - public void CIL() - { - options = CSharp.Options.CreateWithEnvironment(Array.Empty()); - Assert.False(options.CIL); - - Environment.SetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_CIL", "false"); - options = CSharp.Options.CreateWithEnvironment(Array.Empty()); - Assert.False(options.CIL); - - Environment.SetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_CIL", "true"); - options = CSharp.Options.CreateWithEnvironment(Array.Empty()); - Assert.True(options.CIL); - - Environment.SetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_CIL", null); - options = CSharp.Options.CreateWithEnvironment(Array.Empty()); - Assert.False(options.CIL); - } - [Fact] public void CompilerArguments() { @@ -141,13 +120,6 @@ public void Console() Assert.True(options.Console); } - [Fact] - public void PDB() - { - options = CSharp.Options.CreateWithEnvironment(new string[] { "--pdb" }); - Assert.True(options.PDB); - } - [Fact] public void Compiler() { diff --git a/csharp/extractor/Semmle.Extraction/Options.cs b/csharp/extractor/Semmle.Extraction/Options.cs index 576d7a4762e5..3aa704e60c54 100644 --- a/csharp/extractor/Semmle.Extraction/Options.cs +++ b/csharp/extractor/Semmle.Extraction/Options.cs @@ -55,21 +55,11 @@ public Verbosity Verbosity /// public bool Console { get; private set; } = false; - /// - /// Holds if CIL should be extracted. - /// - public bool CIL { get; private set; } = false; - /// /// Holds if assemblies shouldn't be extracted twice. /// public bool Cache { get; private set; } = true; - /// - /// Whether to extract PDB information. - /// - public bool PDB { get; private set; } = false; - /// /// Whether "fast extraction mode" has been enabled. /// @@ -102,9 +92,6 @@ public virtual bool HandleOption(string key, string value) return true; } return false; - case "cil": - CIL = Boolean.Parse(value); - return true; default: return false; } @@ -128,12 +115,7 @@ public virtual bool HandleFlag(string flag, bool value) case "cache": Cache = value; return true; - case "pdb": - PDB = value; - CIL = true; - return true; case "fast": - CIL = !value; Fast = value; return true; case "qltest": From 2e5155d1f8dbc9fd28fef0d411e7d9d68f54e163 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 4 Mar 2024 16:22:39 +0100 Subject: [PATCH 135/731] C#: Remove all CIL related tests. --- .../test/library-tests/cil/attributes/Test.cs | 5 - .../cil/attributes/attribute.expected | 14750 ---------------- .../library-tests/cil/attributes/attribute.ql | 47 - .../test/library-tests/cil/attributes/options | 1 - .../cil/consistency/Handles.expected | 14 - .../library-tests/cil/consistency/Handles.ql | 68 - .../library-tests/cil/consistency/Program.cs | 8 - .../cil/consistency/consistency.expected | 17 - .../cil/consistency/consistency.ql | 6 - .../library-tests/cil/consistency/options | 1 - .../test/library-tests/cil/enums/Program.cs | 8 - .../library-tests/cil/enums/enums.expected | 290 - .../ql/test/library-tests/cil/enums/enums.ql | 19 - .../ql/test/library-tests/cil/enums/options | 1 - .../cil/functionPointers/Class1.cs_ | 52 - .../cil/functionPointers/Test.cs | 5 - .../cil/functionPointers/fnptr.dll | Bin 5632 -> 0 bytes .../functionPointers.expected | 73 - .../cil/functionPointers/functionPointers.ql | 42 - .../cil/functionPointers/options | 1 - .../cil/init-only-prop/Program.cs | 8 - .../library-tests/cil/init-only-prop/Test.cs_ | 13 - .../cil/init-only-prop/cil-init-prop.dll | Bin 4608 -> 0 bytes .../init-only-prop/customModifiers.expected | 104 - .../cil/init-only-prop/customModifiers.ql | 17 - .../library-tests/cil/init-only-prop/options | 1 - .../cil/init-only-prop/setters.expected | 2 - .../cil/init-only-prop/setters.ql | 11 - .../library-tests/cil/pdbs/EmbeddedPdb.dll | Bin 4608 -> 0 bytes .../test/library-tests/cil/pdbs/FullPdb.dll | Bin 4096 -> 0 bytes .../test/library-tests/cil/pdbs/FullPdb.pdb | Bin 11776 -> 0 bytes .../cil/pdbs/InstructionLocations.expected | 41 - .../cil/pdbs/InstructionLocations.ql | 17 - .../cil/pdbs/MethodLocations.expected | 4 - .../library-tests/cil/pdbs/MethodLocations.ql | 19 - .../test/library-tests/cil/pdbs/PdbOnly.dll | Bin 4096 -> 0 bytes .../test/library-tests/cil/pdbs/PdbOnly.pdb | Bin 11776 -> 0 bytes csharp/ql/test/library-tests/cil/pdbs/Pdbs.cs | 1 - .../library-tests/cil/pdbs/PortablePdb.dll | Bin 4096 -> 0 bytes .../library-tests/cil/pdbs/PortablePdb.pdb | Bin 524 -> 0 bytes .../library-tests/cil/pdbs/Stubs.expected | 2 - .../ql/test/library-tests/cil/pdbs/Stubs.ql | 3 - csharp/ql/test/library-tests/cil/pdbs/options | 1 - .../regressions/ConstructedMethods.expected | 2 - .../cil/regressions/ConstructedMethods.ql | 9 - .../library-tests/cil/regressions/Methods.cs | 17 - .../library-tests/cil/regressions/Methods.dll | Bin 4096 -> 0 bytes .../library-tests/cil/regressions/options | 1 - .../cil/typeAnnotations/Program.cs | 8 - .../library-tests/cil/typeAnnotations/options | 1 - .../typeAnnotations/typeAnnotations.expected | 3942 ----- .../cil/typeAnnotations/typeAnnotations.ql | 94 - .../library-tests/controlflow/guards/options | 1 - .../library-tests/csharp11/PrintAst.expected | 9 - .../library-tests/csharp11/cil/Assembly.cs_ | 16 - .../library-tests/csharp11/cil/Struct.cs_ | 14 - .../library-tests/csharp11/cil/assembly.dll | Bin 5120 -> 0 bytes .../test/library-tests/csharp11/cil/class1.cs | 7 - .../csharp11/cil/genericAttribute.expected | 2 - .../csharp11/cil/genericAttribute.ql | 14 - .../test/library-tests/csharp11/cil/options | 1 - .../csharp11/cil/refField.expected | 6 - .../library-tests/csharp11/cil/refField.ql | 5 - .../csharp11/cil/structassembly.dll | Bin 5120 -> 0 bytes 64 files changed, 19801 deletions(-) delete mode 100644 csharp/ql/test/library-tests/cil/attributes/Test.cs delete mode 100644 csharp/ql/test/library-tests/cil/attributes/attribute.expected delete mode 100644 csharp/ql/test/library-tests/cil/attributes/attribute.ql delete mode 100644 csharp/ql/test/library-tests/cil/attributes/options delete mode 100644 csharp/ql/test/library-tests/cil/consistency/Handles.expected delete mode 100644 csharp/ql/test/library-tests/cil/consistency/Handles.ql delete mode 100644 csharp/ql/test/library-tests/cil/consistency/Program.cs delete mode 100644 csharp/ql/test/library-tests/cil/consistency/consistency.expected delete mode 100644 csharp/ql/test/library-tests/cil/consistency/consistency.ql delete mode 100644 csharp/ql/test/library-tests/cil/consistency/options delete mode 100644 csharp/ql/test/library-tests/cil/enums/Program.cs delete mode 100644 csharp/ql/test/library-tests/cil/enums/enums.expected delete mode 100644 csharp/ql/test/library-tests/cil/enums/enums.ql delete mode 100644 csharp/ql/test/library-tests/cil/enums/options delete mode 100644 csharp/ql/test/library-tests/cil/functionPointers/Class1.cs_ delete mode 100644 csharp/ql/test/library-tests/cil/functionPointers/Test.cs delete mode 100644 csharp/ql/test/library-tests/cil/functionPointers/fnptr.dll delete mode 100644 csharp/ql/test/library-tests/cil/functionPointers/functionPointers.expected delete mode 100644 csharp/ql/test/library-tests/cil/functionPointers/functionPointers.ql delete mode 100644 csharp/ql/test/library-tests/cil/functionPointers/options delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/Program.cs delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/Test.cs_ delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/cil-init-prop.dll delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.expected delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.ql delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/options delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/setters.expected delete mode 100644 csharp/ql/test/library-tests/cil/init-only-prop/setters.ql delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/EmbeddedPdb.dll delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/FullPdb.dll delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/FullPdb.pdb delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.expected delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.ql delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/MethodLocations.expected delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/MethodLocations.ql delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/PdbOnly.dll delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/PdbOnly.pdb delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/Pdbs.cs delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/PortablePdb.dll delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/PortablePdb.pdb delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/Stubs.expected delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/Stubs.ql delete mode 100644 csharp/ql/test/library-tests/cil/pdbs/options delete mode 100644 csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.expected delete mode 100644 csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.ql delete mode 100644 csharp/ql/test/library-tests/cil/regressions/Methods.cs delete mode 100644 csharp/ql/test/library-tests/cil/regressions/Methods.dll delete mode 100644 csharp/ql/test/library-tests/cil/regressions/options delete mode 100644 csharp/ql/test/library-tests/cil/typeAnnotations/Program.cs delete mode 100644 csharp/ql/test/library-tests/cil/typeAnnotations/options delete mode 100644 csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.expected delete mode 100644 csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.ql delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/Assembly.cs_ delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/Struct.cs_ delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/assembly.dll delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/class1.cs delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/genericAttribute.expected delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/genericAttribute.ql delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/options delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/refField.expected delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/refField.ql delete mode 100644 csharp/ql/test/library-tests/csharp11/cil/structassembly.dll diff --git a/csharp/ql/test/library-tests/cil/attributes/Test.cs b/csharp/ql/test/library-tests/cil/attributes/Test.cs deleted file mode 100644 index 2dfba6976825..000000000000 --- a/csharp/ql/test/library-tests/cil/attributes/Test.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System; - -class Test -{ -} diff --git a/csharp/ql/test/library-tests/cil/attributes/attribute.expected b/csharp/ql/test/library-tests/cil/attributes/attribute.expected deleted file mode 100644 index 0be9130404ad..000000000000 --- a/csharp/ql/test/library-tests/cil/attributes/attribute.expected +++ /dev/null @@ -1,14750 +0,0 @@ -attrNoArg -| !0 | [AllowNullAttribute(...)] | -| !0 | [DisallowNullAttribute(...)] | -| !0 | [IsReadOnlyAttribute(...)] | -| !0 | [NotNullAttribute(...)] | -| !0 | [RequiresLocationAttribute(...)] | -| !0 | [ScopedRefAttribute(...)] | -| !0 System.Activator.CreateInstance`1() | [IntrinsicAttribute(...)] | -| !0 System.Collections.Concurrent.ConcurrentQueue`1.d__26.get_Current() | [DebuggerHiddenAttribute(...)] | -| !0 System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.d__15.get_Current() | [DebuggerHiddenAttribute(...)] | -| !0 System.Nullable`1.GetValueOrDefault(!0) | [IsReadOnlyAttribute(...)] | -| !0 System.Nullable`1.GetValueOrDefault(!0) | [NonVersionableAttribute(...)] | -| !0 System.Nullable`1.GetValueOrDefault() | [IsReadOnlyAttribute(...)] | -| !0 System.Nullable`1.GetValueOrDefault() | [NonVersionableAttribute(...)] | -| !0 System.Nullable`1.get_Value() | [IsReadOnlyAttribute(...)] | -| !0 System.Nullable`1.op_Explicit(System.Nullable) | [NonVersionableAttribute(...)] | -| !0 System.Numerics.Vector.Dot`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| !0 System.Numerics.Vector.GetElementUnsafe`1(System.Numerics.Vector,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Numerics.Vector.GetElement`1(System.Numerics.Vector,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Numerics.Vector.GetElement`1(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Numerics.Vector.Sum`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| !0 System.Numerics.Vector.ToScalar`1(System.Numerics.Vector) | [ExtensionAttribute(...)] | -| !0 System.Numerics.Vector.ToScalar`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| !0 System.Numerics.Vector`1.get_Item(System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.ReadOnlySpan`1.Enumerator.Current | [IsReadOnlyAttribute(...)] | -| !0 System.ReadOnlySpan`1.Item | [IsReadOnlyAttribute(...)] | -| !0 System.ReadOnlySpan`1.get_Item(System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.ReadOnlySpan`1.get_Item(System.Int32) | [NonVersionableAttribute(...)] | -| !0 System.Reflection.CustomAttributeExtensions.GetCustomAttribute`1(System.Reflection.Assembly) | [ExtensionAttribute(...)] | -| !0 System.Reflection.CustomAttributeExtensions.GetCustomAttribute`1(System.Reflection.MemberInfo) | [ExtensionAttribute(...)] | -| !0 System.Reflection.CustomAttributeExtensions.GetCustomAttribute`1(System.Reflection.MemberInfo,System.Boolean) | [ExtensionAttribute(...)] | -| !0 System.Reflection.CustomAttributeExtensions.GetCustomAttribute`1(System.Reflection.Module) | [ExtensionAttribute(...)] | -| !0 System.Reflection.CustomAttributeExtensions.GetCustomAttribute`1(System.Reflection.ParameterInfo) | [ExtensionAttribute(...)] | -| !0 System.Reflection.CustomAttributeExtensions.GetCustomAttribute`1(System.Reflection.ParameterInfo,System.Boolean) | [ExtensionAttribute(...)] | -| !0 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() | [StackTraceHiddenAttribute(...)] | -| !0 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() | [StackTraceHiddenAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AddByteOffset`1(!0,System.IntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AddByteOffset`1(!0,System.IntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AddByteOffset`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AddByteOffset`1(!0,System.UIntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Add`1(!0,System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Add`1(!0,System.Int32) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Add`1(!0,System.IntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Add`1(!0,System.IntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Add`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Add`1(!0,System.UIntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AsRef`1(!0) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AsRef`1(!0) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AsRef`1(System.Void*) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.AsRef`1(System.Void*) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.As`1(System.Object) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.As`1(System.Object) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.NullRef`1() | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.NullRef`1() | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.ReadUnaligned`1(System.Byte) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.ReadUnaligned`1(System.Byte) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.ReadUnaligned`1(System.Void*) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.ReadUnaligned`1(System.Void*) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Read`1(System.Void*) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Read`1(System.Void*) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.SubtractByteOffset`1(!0,System.IntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.SubtractByteOffset`1(!0,System.IntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.SubtractByteOffset`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.SubtractByteOffset`1(!0,System.UIntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Subtract`1(!0,System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Subtract`1(!0,System.Int32) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Subtract`1(!0,System.IntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Subtract`1(!0,System.IntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Subtract`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Subtract`1(!0,System.UIntPtr) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Unbox`1(System.Object) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.CompilerServices.Unsafe.Unbox`1(System.Object) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.InteropServices.MemoryMarshal.<g__FromArray\|18_2>d`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| !0 System.Runtime.InteropServices.MemoryMarshal.<g__FromMemoryManager\|18_1>d`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| !0 System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference`1(!0[]) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference`1(!0[]) | [NonVersionableAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector64.Dot`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector64.GetElementUnsafe`1(System.Runtime.Intrinsics.Vector64,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector64.GetElement`1(System.Runtime.Intrinsics.Vector64,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector64.GetElement`1(System.Runtime.Intrinsics.Vector64,System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector64.Sum`1(System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector64.ToScalar`1(System.Runtime.Intrinsics.Vector64) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector64.ToScalar`1(System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector128.Dot`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector128.GetElementUnsafe`1(System.Runtime.Intrinsics.Vector128,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector128.GetElement`1(System.Runtime.Intrinsics.Vector128,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector128.GetElement`1(System.Runtime.Intrinsics.Vector128,System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector128.Sum`1(System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector128.ToScalar`1(System.Runtime.Intrinsics.Vector128) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector128.ToScalar`1(System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector256.Dot`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector256.GetElementUnsafe`1(System.Runtime.Intrinsics.Vector256,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector256.GetElement`1(System.Runtime.Intrinsics.Vector256,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector256.GetElement`1(System.Runtime.Intrinsics.Vector256,System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector256.Sum`1(System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector256.ToScalar`1(System.Runtime.Intrinsics.Vector256) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector256.ToScalar`1(System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector512.Dot`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector512.GetElementUnsafe`1(System.Runtime.Intrinsics.Vector512,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector512.GetElement`1(System.Runtime.Intrinsics.Vector512,System.Int32) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector512.GetElement`1(System.Runtime.Intrinsics.Vector512,System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector512.Sum`1(System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector512.ToScalar`1(System.Runtime.Intrinsics.Vector512) | [ExtensionAttribute(...)] | -| !0 System.Runtime.Intrinsics.Vector512.ToScalar`1(System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| !0 System.Span`1.get_Item(System.Int32) | [IntrinsicAttribute(...)] | -| !0 System.Span`1.get_Item(System.Int32) | [NonVersionableAttribute(...)] | -| !0 System.Threading.AsyncLocalValueChangedArgs`1.get_CurrentValue() | [CompilerGeneratedAttribute(...)] | -| !0 System.Threading.AsyncLocalValueChangedArgs`1.get_PreviousValue() | [CompilerGeneratedAttribute(...)] | -| !0 System.Threading.Interlocked.CompareExchange`1(!0,!0,!0) | [IntrinsicAttribute(...)] | -| !0 System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult(System.Int16) | [StackTraceHiddenAttribute(...)] | -| !0 System.Threading.Tasks.TaskAsyncEnumerableExtensions.d__3`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| !0 System.Threading.Volatile.Read`1(!0) | [IntrinsicAttribute(...)] | -| !0 System.Threading.Volatile.Read`1(!0) | [NonVersionableAttribute(...)] | -| !0* | [ScopedRefAttribute(...)] | -| !0[] | [NotNullAttribute(...)] | -| !1 System.Collections.Generic.CollectionExtensions.GetValueOrDefault`2(System.Collections.Generic.IReadOnlyDictionary,!0) | [ExtensionAttribute(...)] | -| !1 System.Collections.Generic.CollectionExtensions.GetValueOrDefault`2(System.Collections.Generic.IReadOnlyDictionary,!0,!1) | [ExtensionAttribute(...)] | -| !1 System.Runtime.CompilerServices.Unsafe.As`2(!0) | [IntrinsicAttribute(...)] | -| !1 System.Runtime.CompilerServices.Unsafe.As`2(!0) | [NonVersionableAttribute(...)] | -| !1 System.Runtime.CompilerServices.Unsafe.BitCast`2(!0) | [IntrinsicAttribute(...)] | -| !1 System.Runtime.CompilerServices.Unsafe.BitCast`2(!0) | [NonVersionableAttribute(...)] | -| | [CompilerGeneratedAttribute(...)] | -| Internal.PaddingFor32 | [IsReadOnlyAttribute(...)] | -| Internal.Runtime.InteropServices.ComponentActivator.<>c__DisplayClass15_0 | [CompilerGeneratedAttribute(...)] | -| Internal.Runtime.InteropServices.ComponentActivator.k__BackingField | [CompilerGeneratedAttribute(...)] | -| Interop.ErrorInfo InteropErrorExtensions.Info(Interop.Error) | [ExtensionAttribute(...)] | -| Interop.Globalization.ResultCode Interop.Globalization.g____PInvoke\|1_0(System.UInt16*,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| Interop.Globalization.ResultCode Interop.Globalization.g____PInvoke\|10_0(System.Byte*,System.IntPtr*) | [CompilerGeneratedAttribute(...)] | -| Interop.Globalization.ResultCode Interop.Globalization.g____PInvoke\|41_0(System.UInt16*,System.UInt16*,Interop.Globalization.TimeZoneDisplayNameType,System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| Interop.Globalization.ResultCode Interop.Globalization.GetCalendarInfo(System.String,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| Interop.Globalization.ResultCode Interop.Globalization.GetSortHandle(System.String,System.IntPtr) | [LibraryImportAttribute(...)] | -| Interop.Globalization.ResultCode Interop.Globalization.GetTimeZoneDisplayName(System.String,System.String,Interop.Globalization.TimeZoneDisplayNameType,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| Interop.PollEvents | [FlagsAttribute(...)] | -| Interop.Sys.WinSize | [IsReadOnlyAttribute(...)] | -| InteropErrorExtensions | [ExtensionAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeFileHandle.k__BackingField | [CompilerGeneratedAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeFileHandle.k__BackingField | [CompilerGeneratedAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeFileHandle.ThreadPoolValueTaskSource.<>c | [CompilerGeneratedAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeFileHandle.t_lastCloseErrorInfo | [ThreadStaticAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeWaitHandle | [AllowNullAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateEventEx(System.IntPtr,System.String,System.UInt32,System.UInt32) | [LibraryImportAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateMutexEx(System.IntPtr,System.String,System.UInt32,System.UInt32) | [LibraryImportAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateSemaphoreEx(System.IntPtr,System.Int32,System.Int32,System.String,System.UInt32,System.UInt32) | [LibraryImportAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.OpenMutex(System.UInt32,System.Boolean,System.String) | [LibraryImportAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeWaitHandle System.Threading.RegisteredWaitHandle.get_UserUnregisterWaitHandle() | [CompilerGeneratedAttribute(...)] | -| Microsoft.Win32.SafeHandles.SafeWaitHandle System.Threading.WaitHandleExtensions.GetSafeWaitHandle(System.Threading.WaitHandle) | [ExtensionAttribute(...)] | -| System.Action System.Runtime.InteropServices.PosixSignalRegistration.Token.get_Handler() | [CompilerGeneratedAttribute(...)] | -| System.AppContext.FirstChanceException | [CompilerGeneratedAttribute(...)] | -| System.AppContext.ProcessExit | [CompilerGeneratedAttribute(...)] | -| System.AppContext.UnhandledException | [CompilerGeneratedAttribute(...)] | -| System.AppDomain.DomainUnload | [CompilerGeneratedAttribute(...)] | -| System.AppDomain.ReflectionOnlyAssemblyResolve | [CompilerGeneratedAttribute(...)] | -| System.ApplicationId.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ApplicationId.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ApplicationId.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ApplicationId.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ArgIterator | [IsByRefLikeAttribute(...)] | -| System.Array.SorterGenericArray | [IsReadOnlyAttribute(...)] | -| System.Array.SorterObjectArray | [IsReadOnlyAttribute(...)] | -| System.ArraySegment System.ArraySegment`1.get_Empty() | [CompilerGeneratedAttribute(...)] | -| System.ArraySegment`1 | [IsReadOnlyAttribute(...)] | -| System.ArraySegment`1.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.AssemblyLoadEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Attribute System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.Assembly,System.Type) | [ExtensionAttribute(...)] | -| System.Attribute System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.MemberInfo,System.Type) | [ExtensionAttribute(...)] | -| System.Attribute System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.MemberInfo,System.Type,System.Boolean) | [ExtensionAttribute(...)] | -| System.Attribute System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.Module,System.Type) | [ExtensionAttribute(...)] | -| System.Attribute System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.ParameterInfo,System.Type) | [ExtensionAttribute(...)] | -| System.Attribute System.Reflection.CustomAttributeExtensions.GetCustomAttribute(System.Reflection.ParameterInfo,System.Type,System.Boolean) | [ExtensionAttribute(...)] | -| System.AttributeTargets | [FlagsAttribute(...)] | -| System.Base64FormattingOptions | [FlagsAttribute(...)] | -| System.BitConverter.IsLittleEndian | [IntrinsicAttribute(...)] | -| System.Boolean Internal.Runtime.InteropServices.ComponentActivator.get_IsSupported() | [CompilerGeneratedAttribute(...)] | -| System.Boolean Interop.g__ParentDirectoryExists\|11_0(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Boolean Interop.g__ParentDirectoryExists\|19_0(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Boolean Interop.Globalization.EndsWith(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.EnumCalendarInfo(System.IntPtr,System.String,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.IntPtr) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.GetDefaultLocaleName(System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.GetLocaleInfoGroupingSizes(System.String,System.UInt32,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.GetLocaleInfoInt(System.String,System.UInt32,System.Int32) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.GetLocaleInfoString(System.String,System.UInt32,System.Char*,System.Int32,System.String) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.GetLocaleName(System.String,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.GetLocaleTimeFormat(System.String,System.Boolean,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.IsPredefinedLocale(System.String) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Globalization.StartsWith(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [LibraryImportAttribute(...)] | -| System.Boolean Interop.Kernel32.SetEnvironmentVariable(System.String,System.String) | [LibraryImportAttribute(...)] | -| System.Boolean Microsoft.Win32.SafeHandles.SafeFileHandle.get_DisableFileLocking() | [CompilerGeneratedAttribute(...)] | -| System.Boolean Microsoft.Win32.SafeHandles.SafeFileHandle.get_IsAsync() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Boolean.g__TryParseUncommon\|20_0(System.ReadOnlySpan,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Boolean.Equals(System.Boolean) | [NonVersionableAttribute(...)] | -| System.Boolean System.Buffers.BitVector256.Contains128(System.Char) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Buffers.BitVector256.Contains256(System.Char) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Buffers.BitVector256.Contains(System.Byte) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Buffers.BitVector256.ContainsUnchecked(System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Buffers.Text.ParserHelpers.TryParseThrowFormatException`1(System.ReadOnlySpan,!0,System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Boolean System.Buffers.Text.ParserHelpers.TryParseThrowFormatException`1(System.ReadOnlySpan,!0,System.Int32) | [StackTraceHiddenAttribute(...)] | -| System.Boolean System.Byte.Equals(System.Byte) | [NonVersionableAttribute(...)] | -| System.Boolean System.Char.Equals(System.Char) | [NonVersionableAttribute(...)] | -| System.Boolean System.Collections.Generic.CollectionExtensions.Remove`2(System.Collections.Generic.IDictionary,!0,!1) | [ExtensionAttribute(...)] | -| System.Boolean System.Collections.Generic.CollectionExtensions.TryAdd`2(System.Collections.Generic.IDictionary,!0,!1) | [ExtensionAttribute(...)] | -| System.Boolean System.ComponentModel.DefaultValueAttribute.ctor>g__TryConvertFromInvariantString\|2_0(System.Type,System.String,System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.ConsoleCancelEventArgs.get_Cancel() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.ConsolePal.g__AppendToStdInReaderUntil\|82_2(System.Byte,System.IO.StdInReader,System.Span,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.ConsolePal.g__BufferUntil\|82_1(System.Byte,System.Span,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Convert.IsSpace(System.Char) | [ExtensionAttribute(...)] | -| System.Boolean System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.get_ParameterValue() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.get_ReturnValue() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.get_ReturnValue() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.get_ReturnValue() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Diagnostics.StackFrameExtensions.HasILOffset(System.Diagnostics.StackFrame) | [ExtensionAttribute(...)] | -| System.Boolean System.Diagnostics.StackFrameExtensions.HasMethod(System.Diagnostics.StackFrame) | [ExtensionAttribute(...)] | -| System.Boolean System.Diagnostics.StackFrameExtensions.HasNativeImage(System.Diagnostics.StackFrame) | [ExtensionAttribute(...)] | -| System.Boolean System.Diagnostics.StackFrameExtensions.HasSource(System.Diagnostics.StackFrame) | [ExtensionAttribute(...)] | -| System.Boolean System.Diagnostics.Tracing.EventChannelAttribute.get_Enabled() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Diagnostics.Tracing.EventSource.get_IsSupported() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Double.IsFinite(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.IsInfinity(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.IsNaN(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.IsNegative(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.IsNegativeInfinity(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.IsNormal(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.IsPositiveInfinity(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.IsSubnormal(System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.op_Equality(System.Double,System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.op_GreaterThan(System.Double,System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.op_GreaterThanOrEqual(System.Double,System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.op_Inequality(System.Double,System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.op_LessThan(System.Double,System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Double.op_LessThanOrEqual(System.Double,System.Double) | [NonVersionableAttribute(...)] | -| System.Boolean System.Enum.g__TryParseRareTypes\|41_0(System.RuntimeType,System.ReadOnlySpan,System.Boolean,System.Boolean,System.Int64) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Enum.HasFlag(System.Enum) | [IntrinsicAttribute(...)] | -| System.Boolean System.Globalization.CalendarData.g__AreEraNamesEmpty\|24_0() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Globalization.GlobalizationMode.Settings.get_Invariant() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Globalization.GlobalizationMode.Settings.get_PredefinedCulturesOnly() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Guid.g__TryCompatParsing\|33_0(System.ReadOnlySpan,System.Guid.GuidResult) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.Enumeration.FileSystemEnumerator`1.g__ShouldSkip\|36_0(System.IO.FileAttributes) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.EnumerationOptions.get_IgnoreInaccessible() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.EnumerationOptions.get_RecurseSubdirectories() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.EnumerationOptions.get_ReturnSpecialDirectories() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.File.d__110.GetResult(System.Int16) | [DebuggerHiddenAttribute(...)] | -| System.Boolean System.IO.KeyParser.g__IsRxvtModifier\|7_5(System.Char) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.KeyParser.g__IsSequenceEndTag\|7_4(System.Char) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.Strategies.FileStreamStrategy.get_IsDerived() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.IO.Stream.HasOverriddenBeginEndRead() | [IntrinsicAttribute(...)] | -| System.Boolean System.IO.Stream.HasOverriddenBeginEndWrite() | [IntrinsicAttribute(...)] | -| System.Boolean System.IO.StreamReader.g__IsPreambleWorker\|57_0() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Int16.Equals(System.Int16) | [NonVersionableAttribute(...)] | -| System.Boolean System.Int32.Equals(System.Int32) | [NonVersionableAttribute(...)] | -| System.Boolean System.Int64.Equals(System.Int64) | [NonVersionableAttribute(...)] | -| System.Boolean System.IntPtr.Equals(System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Boolean System.IntPtr.op_Equality(System.IntPtr,System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Boolean System.IntPtr.op_Inequality(System.IntPtr,System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Boolean System.MemoryExtensions.Contains(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExceptInRange`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExceptInRange`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.ReadOnlySpan,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.ReadOnlySpan,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.Span,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.Span,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.Span,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyInRange`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAnyInRange`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.ReadOnlySpan,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.ReadOnlySpan,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.Span,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.Span,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Contains`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Contains`1(System.Span,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.EndsWith(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.EndsWithOrdinalIgnoreCase(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.EndsWith`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.EndsWith`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Equals(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Equals(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [IntrinsicAttribute(...)] | -| System.Boolean System.MemoryExtensions.EqualsOrdinal(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.EqualsOrdinalIgnoreCase(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.EqualsOrdinalIgnoreCaseUtf8(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.IsWhiteSpace(System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.ReadOnlySpan,System.ReadOnlySpan,System.Int32) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.Span,System.ReadOnlySpan,System.Int32) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.ReadOnlySpan,System.ReadOnlySpan) | [IntrinsicAttribute(...)] | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.ReadOnlySpan,System.ReadOnlySpan,System.Collections.Generic.IEqualityComparer) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.Span,System.ReadOnlySpan) | [IntrinsicAttribute(...)] | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.Span,System.ReadOnlySpan,System.Collections.Generic.IEqualityComparer) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWith(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWith(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [IntrinsicAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWithOrdinalIgnoreCase(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWithOrdinalIgnoreCaseUtf8(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWithUtf8(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWith`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWith`1(System.ReadOnlySpan,System.ReadOnlySpan) | [IntrinsicAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWith`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.StartsWith`1(System.Span,System.ReadOnlySpan) | [IntrinsicAttribute(...)] | -| System.Boolean System.MemoryExtensions.TryWrite(System.Span,System.IFormatProvider,System.MemoryExtensions.TryWriteInterpolatedStringHandler,System.Int32) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.TryWrite(System.Span,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,System.Object[]) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.TryWrite(System.Span,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.TryWrite(System.Span,System.MemoryExtensions.TryWriteInterpolatedStringHandler,System.Int32) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.TryWrite`1(System.Span,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.TryWrite`2(System.Span,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,!0,!1) | [ExtensionAttribute(...)] | -| System.Boolean System.MemoryExtensions.TryWrite`3(System.Span,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,!0,!1,!2) | [ExtensionAttribute(...)] | -| System.Boolean System.Nullable`1.get_HasValue() | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Nullable`1.get_HasValue() | [NonVersionableAttribute(...)] | -| System.Boolean System.Number.g__ShouldRoundUp\|121_0(System.Byte*,System.Int32,System.Number.NumberBufferKind,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Number.g__TryFormatInt32Slow\|42_0`1(System.Int32,System.Int32,System.ReadOnlySpan,System.IFormatProvider,System.Span,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Number.g__TryFormatInt64Slow\|46_0`1(System.Int64,System.ReadOnlySpan,System.IFormatProvider,System.Span,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Number.g__TryFormatInt128Slow\|50_0`1(System.Int128,System.ReadOnlySpan,System.IFormatProvider,System.Span,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Number.g__TryFormatUInt32Slow\|44_0`1(System.UInt32,System.ReadOnlySpan,System.IFormatProvider,System.Span,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Number.g__TryFormatUInt64Slow\|48_0`1(System.UInt64,System.ReadOnlySpan,System.IFormatProvider,System.Span,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Number.g__TryFormatUInt128Slow\|52_0`1(System.UInt128,System.ReadOnlySpan,System.IFormatProvider,System.Span,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Matrix3x2.Equals(System.Numerics.Matrix3x2) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix3x2.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix3x2.Impl.Equals(System.Numerics.Matrix3x2.Impl) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix3x2.Impl.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix3x2.Impl.get_IsIdentity() | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix3x2.get_IsIdentity() | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.Equals(System.Numerics.Matrix4x4) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.Impl.g__SoftwareFallback\|64_2(System.Numerics.Matrix4x4.Impl,System.Numerics.Matrix4x4.Impl) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.Impl.g__SseImpl\|64_0(System.Numerics.Matrix4x4.Impl,System.Numerics.Matrix4x4.Impl) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.Impl.Equals(System.Numerics.Matrix4x4.Impl) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.Impl.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.Impl.get_IsIdentity() | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Matrix4x4.get_IsIdentity() | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Plane.g__SoftwareFallback\|16_0(System.Numerics.Plane,System.Numerics.Plane) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Plane.Equals(System.Numerics.Plane) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Plane.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Plane.op_Equality(System.Numerics.Plane,System.Numerics.Plane) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Plane.op_Inequality(System.Numerics.Plane,System.Numerics.Plane) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Quaternion.g__SoftwareFallback\|44_0(System.Numerics.Quaternion,System.Numerics.Quaternion) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Quaternion.Equals(System.Numerics.Quaternion) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Quaternion.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Quaternion.get_IsIdentity() | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Quaternion.op_Equality(System.Numerics.Quaternion,System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Quaternion.op_Inequality(System.Numerics.Quaternion,System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector2.g__SoftwareFallback\|59_0(System.Numerics.Vector2,System.Numerics.Vector2) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Vector2.Equals(System.Numerics.Vector2) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector2.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector2.TryCopyTo(System.Span) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector2.op_Equality(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector2.op_Inequality(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector3.g__SoftwareFallback\|60_0(System.Numerics.Vector3,System.Numerics.Vector3) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Vector3.Equals(System.Numerics.Vector3) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector3.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector3.TryCopyTo(System.Span) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector3.op_Equality(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector3.op_Inequality(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector4.g__SoftwareFallback\|66_0(System.Numerics.Vector4,System.Numerics.Vector4) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Vector4.Equals(System.Numerics.Vector4) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector4.Equals(System.Object) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector4.TryCopyTo(System.Span) | [IsReadOnlyAttribute(...)] | -| System.Boolean System.Numerics.Vector4.op_Equality(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector4.op_Inequality(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.EqualsAll`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.EqualsAny`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.GreaterThanAll`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.GreaterThanAny`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.GreaterThanOrEqualAll`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.GreaterThanOrEqualAny`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.LessThanAll`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.LessThanAny`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.LessThanOrEqualAll`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.LessThanOrEqualAny`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector.get_IsHardwareAccelerated() | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector`1.g__SoftwareFallback\|57_0(System.Numerics.Vector,System.Numerics.Vector) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Numerics.Vector`1.op_Equality(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Numerics.Vector`1.op_Inequality(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Boolean System.Object.ReferenceEquals(System.Object,System.Object) | [NonVersionableAttribute(...)] | -| System.Boolean System.ObsoleteAttribute.get_IsError() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.OperatingSystem.IsAndroid() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsBrowser() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsFreeBSD() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsIOS() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsIOSVersionAtLeast(System.Int32,System.Int32,System.Int32) | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsLinux() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsMacCatalyst() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsMacOS() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsTvOS() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsWasi() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsWatchOS() | [NonVersionableAttribute(...)] | -| System.Boolean System.OperatingSystem.IsWindows() | [NonVersionableAttribute(...)] | -| System.Boolean System.ReadOnlySpan`1.get_IsEmpty() | [NonVersionableAttribute(...)] | -| System.Boolean System.Reflection.AssemblyDelaySignAttribute.get_DelaySign() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.CustomAttributeExtensions.IsDefined(System.Reflection.Assembly,System.Type) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.CustomAttributeExtensions.IsDefined(System.Reflection.MemberInfo,System.Type) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.CustomAttributeExtensions.IsDefined(System.Reflection.MemberInfo,System.Type,System.Boolean) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.CustomAttributeExtensions.IsDefined(System.Reflection.Module,System.Type) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.CustomAttributeExtensions.IsDefined(System.Reflection.ParameterInfo,System.Type) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.CustomAttributeExtensions.IsDefined(System.Reflection.ParameterInfo,System.Type,System.Boolean) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.Metadata.AssemblyExtensions.TryGetRawMetadata(System.Reflection.Assembly,System.Byte*,System.Int32) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.Metadata.MetadataUpdater.get_IsSupported() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.NullabilityInfoContext.get_IsSupported() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.ObfuscateAssemblyAttribute.get_AssemblyIsPrivate() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.ObfuscateAssemblyAttribute.get_StripAfterObfuscation() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.ObfuscationAttribute.get_ApplyToMembers() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.ObfuscationAttribute.get_Exclude() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.ObfuscationAttribute.get_StripAfterObfuscation() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.RuntimeMethodInfo.g__IsDisallowedByRefType\|97_0(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Reflection.SignatureTypeExtensions.MatchesExactly(System.Reflection.SignatureType,System.Type) | [ExtensionAttribute(...)] | -| System.Boolean System.Reflection.SignatureTypeExtensions.MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo) | [ExtensionAttribute(...)] | -| System.Boolean System.Resources.ResourceReader.g__InitializeBinaryFormatterLocal\|5_0() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Resources.ResourceReader.get_AllowCustomResourceTypes() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.get_IsOptional() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.InternalsVisibleToAttribute.get_AllInternalsVisible() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeCompatibilityAttribute.get_WrapNonExceptionThrows() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeFeature.get_IsDynamicCodeSupported() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.EnumEquals`1(!0,!0) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.IsBitwiseEquatable`1() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.IsKnownConstant(System.Char) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.IsKnownConstant(System.Int32) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.IsKnownConstant(System.Type) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.IsPrimitiveType(System.Reflection.CorElementType) | [ExtensionAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.IsReferenceOrContainsReferences`1() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.AreSame`1(!0,!0) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.AreSame`1(!0,!0) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan`1(!0,!0) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan`1(!0,!0) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.IsAddressLessThan`1(!0,!0) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.IsAddressLessThan`1(!0,!0) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.IsNullRef`1(!0) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.CompilerServices.Unsafe.IsNullRef`1(!0) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.BestFitMappingAttribute.get_BestFitMapping() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.ComVisibleAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.DynamicInterfaceCastableHelpers.IsInterfaceImplemented(System.Runtime.InteropServices.IDynamicInterfaceCastable,System.RuntimeType,System.Boolean) | [StackTraceHiddenAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.LibraryImportAttribute.get_SetLastError() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsFinite(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsInfinity(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsNaN(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsNegative(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsNegativeInfinity(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsNormal(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsPositiveInfinity(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.IsSubnormal(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.op_Equality(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.op_GreaterThan(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.op_GreaterThanOrEqual(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.op_Inequality(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.op_LessThan(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.NFloat.op_LessThanOrEqual(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Boolean System.Runtime.InteropServices.PosixSignalContext.get_Cancel() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.AdvSimd.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Aes.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Aes.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.ArmBase.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.ArmBase.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Crc32.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Crc32.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Dp.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Dp.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Rdm.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Rdm.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Sha1.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Sha1.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Sha256.Arm64.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Arm.Sha256.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.EqualsAll`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.EqualsAny`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanAll`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanAny`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanAll`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanAny`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.TryCopyTo`1(System.Runtime.Intrinsics.Vector64,System.Span) | [ExtensionAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64.get_IsHardwareAccelerated() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64`1.g__SoftwareFallback\|34_0(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64`1.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64`1.op_Equality(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector64`1.op_Inequality(System.Runtime.Intrinsics.Vector64,System.Runtime.Intrinsics.Vector64) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.EqualsAll`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.EqualsAny`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanAll`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanAny`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanAll`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanAny`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.TryCopyTo`1(System.Runtime.Intrinsics.Vector128,System.Span) | [ExtensionAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128.get_IsHardwareAccelerated() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128`1.EqualsFloatingPoint(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128`1.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128`1.op_Equality(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector128`1.op_Inequality(System.Runtime.Intrinsics.Vector128,System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.EqualsAll`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.EqualsAny`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanAll`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanAny`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanAll`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanAny`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.TryCopyTo`1(System.Runtime.Intrinsics.Vector256,System.Span) | [ExtensionAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256.get_IsHardwareAccelerated() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256`1.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256`1.op_Equality(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector256`1.op_Inequality(System.Runtime.Intrinsics.Vector256,System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.EqualsAll`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.EqualsAny`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanAll`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanAny`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanAll`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanAny`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.TryCopyTo`1(System.Runtime.Intrinsics.Vector512,System.Span) | [ExtensionAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512.get_IsHardwareAccelerated() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512`1.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512`1.op_Equality(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Vector512`1.op_Inequality(System.Runtime.Intrinsics.Vector512,System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Intrinsics.Wasm.PackedSimd.get_IsSupported() | [IntrinsicAttribute(...)] | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyLoadFromResolveHandlerInvoked(System.String,System.Boolean,System.String,System.String) | [LibraryImportAttribute(...)] | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyResolveHandlerInvoked(System.String,System.String,System.String,System.String) | [LibraryImportAttribute(...)] | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked(System.String,System.String,System.String,System.String,System.String) | [LibraryImportAttribute(...)] | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceSatelliteSubdirectoryPathProbed(System.String,System.Int32) | [LibraryImportAttribute(...)] | -| System.Boolean System.Runtime.Serialization.DeserializationTracker.get_DeserializationInProgress() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.Serialization.SerializationInfo.get_IsAssemblyNameSetExplicit() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Runtime.Serialization.SerializationInfo.get_IsFullTypeNameSetExplicit() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.RuntimeType.get_IsActualEnum() | [IntrinsicAttribute(...)] | -| System.Boolean System.SByte.Equals(System.SByte) | [NonVersionableAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityAttribute.get_Unrestricted() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_Assertion() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_BindingRedirects() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_ControlAppDomain() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_ControlDomainPolicy() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_ControlEvidence() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_ControlPolicy() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_ControlPrincipal() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_ControlThread() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_Execution() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_Infrastructure() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_RemotingConfiguration() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_SerializationFormatter() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_SkipVerification() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.Permissions.SecurityPermissionAttribute.get_UnmanagedCode() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Security.SecurityRulesAttribute.get_SkipVerificationInFullTrust() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Single.IsFinite(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.IsInfinity(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.IsNaN(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.IsNegative(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.IsNegativeInfinity(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.IsNormal(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.IsPositiveInfinity(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.IsSubnormal(System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.op_Equality(System.Single,System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.op_GreaterThan(System.Single,System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.op_GreaterThanOrEqual(System.Single,System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.op_Inequality(System.Single,System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.op_LessThan(System.Single,System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.Single.op_LessThanOrEqual(System.Single,System.Single) | [NonVersionableAttribute(...)] | -| System.Boolean System.SpanHelpers.SequenceEqual(System.Byte,System.Byte,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Boolean System.Span`1.get_IsEmpty() | [NonVersionableAttribute(...)] | -| System.Boolean System.String.Equals(System.String) | [IntrinsicAttribute(...)] | -| System.Boolean System.String.Equals(System.String,System.String) | [IntrinsicAttribute(...)] | -| System.Boolean System.String.Equals(System.String,System.String,System.StringComparison) | [IntrinsicAttribute(...)] | -| System.Boolean System.String.Equals(System.String,System.StringComparison) | [IntrinsicAttribute(...)] | -| System.Boolean System.String.StartsWith(System.String,System.StringComparison) | [IntrinsicAttribute(...)] | -| System.Boolean System.StringNormalizationExtensions.IsNormalized(System.String) | [ExtensionAttribute(...)] | -| System.Boolean System.StringNormalizationExtensions.IsNormalized(System.String,System.Text.NormalizationForm) | [ExtensionAttribute(...)] | -| System.Boolean System.Text.CompositeFormat.g__TryMoveNext\|12_0(System.ReadOnlySpan,System.Int32,System.Char) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.g__GrowAndAppendFormatted\|21_0`1(System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler,!0,System.Int32,System.Int32,System.String) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.g__GrowAndAppendFormatted\|20_0`1(System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler,!0,System.Int32,System.Int32,System.String) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Threading.AsyncLocalValueChangedArgs`1.get_ThreadContextChanged() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Threading.Tasks.TaskToAsyncResult.TaskAsyncResult.get_CompletedSynchronously() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Threading.Volatile.Read(System.Boolean) | [IntrinsicAttribute(...)] | -| System.Boolean System.Threading.Volatile.Read(System.Boolean) | [NonVersionableAttribute(...)] | -| System.Boolean System.TimeZoneInfo.get_HasIanaId() | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.Type.IsAssignableFrom(System.Type) | [IntrinsicAttribute(...)] | -| System.Boolean System.Type.IsAssignableTo(System.Type) | [IntrinsicAttribute(...)] | -| System.Boolean System.Type.get_IsByRefLike() | [IntrinsicAttribute(...)] | -| System.Boolean System.Type.get_IsEnum() | [IntrinsicAttribute(...)] | -| System.Boolean System.Type.get_IsValueType() | [IntrinsicAttribute(...)] | -| System.Boolean System.Type.op_Equality(System.Type,System.Type) | [IntrinsicAttribute(...)] | -| System.Boolean System.Type.op_Inequality(System.Type,System.Type) | [IntrinsicAttribute(...)] | -| System.Boolean System.UInt16.Equals(System.UInt16) | [NonVersionableAttribute(...)] | -| System.Boolean System.UInt32.Equals(System.UInt32) | [NonVersionableAttribute(...)] | -| System.Boolean System.UInt64.Equals(System.UInt64) | [NonVersionableAttribute(...)] | -| System.Boolean System.UInt128.g__DivideGuessTooBig\|110_1(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32) | [CompilerGeneratedAttribute(...)] | -| System.Boolean System.UIntPtr.Equals(System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.Boolean System.UIntPtr.op_Equality(System.UIntPtr,System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.Boolean System.UIntPtr.op_Inequality(System.UIntPtr,System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.Buffers.Binary.BinaryPrimitives.Int16EndiannessReverser | [IsReadOnlyAttribute(...)] | -| System.Buffers.Binary.BinaryPrimitives.Int32EndiannessReverser | [IsReadOnlyAttribute(...)] | -| System.Buffers.Binary.BinaryPrimitives.Int64EndiannessReverser | [IsReadOnlyAttribute(...)] | -| System.Buffers.BitVector256.<_values>e__FixedBuffer | [CompilerGeneratedAttribute(...)] | -| System.Buffers.BitVector256.<_values>e__FixedBuffer | [UnsafeValueTypeAttribute(...)] | -| System.Buffers.IndexOfAnyAsciiSearcher.Default | [IsReadOnlyAttribute(...)] | -| System.Buffers.IndexOfAnyAsciiSearcher.DontNegate | [IsReadOnlyAttribute(...)] | -| System.Buffers.IndexOfAnyAsciiSearcher.Negate | [IsReadOnlyAttribute(...)] | -| System.Buffers.IndexOfAnyAsciiSearcher.Ssse3AndWasmHandleZeroInNeedle | [IsReadOnlyAttribute(...)] | -| System.Buffers.OperationStatus System.Buffers.Text.Base64.g__InvalidDataFallback\|15_0(System.ReadOnlySpan,System.Span,System.Int32,System.Int32,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Buffers.ProbabilisticMap | [IsReadOnlyAttribute(...)] | -| System.Buffers.SearchValues.FalseConst | [IsReadOnlyAttribute(...)] | -| System.Buffers.SearchValues.TrueConst | [IsReadOnlyAttribute(...)] | -| System.Buffers.SharedArrayPool`1.<>c | [CompilerGeneratedAttribute(...)] | -| System.Buffers.SharedArrayPool`1.t_tlsBuckets | [ThreadStaticAttribute(...)] | -| System.Buffers.StandardFormat | [IsReadOnlyAttribute(...)] | -| System.Buffers.Text.Base64.Base64ByteValidatable | [IsReadOnlyAttribute(...)] | -| System.Buffers.Text.Base64.Base64CharValidatable | [IsReadOnlyAttribute(...)] | -| System.Buffers.Text.Utf8Parser.ParseNumberOptions | [FlagsAttribute(...)] | -| System.ByReference | [IsByRefLikeAttribute(...)] | -| System.ByReference | [IsReadOnlyAttribute(...)] | -| System.ByReference | [NonVersionableAttribute(...)] | -| System.Byte System.Diagnostics.Tracing.EventAttribute.get_Version() | [CompilerGeneratedAttribute(...)] | -| System.Byte System.Math.Max(System.Byte,System.Byte) | [NonVersionableAttribute(...)] | -| System.Byte System.Math.Min(System.Byte,System.Byte) | [NonVersionableAttribute(...)] | -| System.Byte System.Runtime.CompilerServices.CastHelpers.Unbox(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Byte System.Runtime.CompilerServices.CastHelpers.Unbox(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Byte System.Runtime.CompilerServices.CastHelpers.Unbox(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Byte System.Runtime.CompilerServices.RuntimeHelpers.GetRawData(System.Object) | [ExtensionAttribute(...)] | -| System.Byte System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference(System.Array) | [IntrinsicAttribute(...)] | -| System.Byte System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Byte System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Byte System.Threading.Volatile.Read(System.Byte) | [IntrinsicAttribute(...)] | -| System.Byte System.Threading.Volatile.Read(System.Byte) | [NonVersionableAttribute(...)] | -| System.Byte* System.Reflection.RuntimeAssembly.g____PInvoke\|37_0(System.Runtime.CompilerServices.QCallAssembly,System.UInt16*,System.UInt32*) | [CompilerGeneratedAttribute(...)] | -| System.Byte* System.Reflection.RuntimeAssembly.GetResource(System.Runtime.CompilerServices.QCallAssembly,System.String,System.UInt32) | [LibraryImportAttribute(...)] | -| System.Byte[] System.Buffers.BitVector256.GetByteValues() | [IsReadOnlyAttribute(...)] | -| System.Byte[] System.Security.PermissionSet.ConvertPermissionSet(System.String,System.Byte[],System.String) | [ObsoleteAttribute(...)] | -| System.Char System.Runtime.InteropServices.MemoryMarshal.<g__FromString\|18_0>d`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Char System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Char System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Char System.String.GetPinnableReference() | [NonVersionableAttribute(...)] | -| System.Char System.String.get_Chars(System.Int32) | [IntrinsicAttribute(...)] | -| System.Char System.Text.StringBuilder.g__MoveNext\|116_0(System.String,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Char System.Text.ValueStringBuilder.g__MoveNext\|0_0(System.String,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Char[] System.Buffers.BitVector256.GetCharValues() | [IsReadOnlyAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__23 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__37 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__38 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__39 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__40 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__41 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__59 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__60 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__61 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__62 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__63 | [CompilerGeneratedAttribute(...)] | -| System.CodeDom.Compiler.IndentedTextWriter.d__64 | [CompilerGeneratedAttribute(...)] | -| System.Collections.Concurrent.ConcurrentQueue`1.d__26 | [CompilerGeneratedAttribute(...)] | -| System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.d__15 | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.BitHelper | [IsByRefLikeAttribute(...)] | -| System.Collections.Generic.CollectionExtensions | [ExtensionAttribute(...)] | -| System.Collections.Generic.Comparer System.Collections.Generic.Comparer`1.get_Default() | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.Comparer System.Collections.Generic.Comparer`1.get_Default() | [IntrinsicAttribute(...)] | -| System.Collections.Generic.Comparer`1.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.EqualityComparer System.Collections.Generic.EqualityComparer`1.get_Default() | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.EqualityComparer System.Collections.Generic.EqualityComparer`1.get_Default() | [IntrinsicAttribute(...)] | -| System.Collections.Generic.EqualityComparer`1.<>c | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.EqualityComparer`1.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.IAsyncEnumerator System.IO.File.d__110.GetAsyncEnumerator(System.Threading.CancellationToken) | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IDictionary System.Diagnostics.Tracing.EventCommandEventArgs.get_Arguments() | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes`1(System.Reflection.Assembly) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes`1(System.Reflection.MemberInfo) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes`1(System.Reflection.MemberInfo,System.Boolean) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes`1(System.Reflection.Module) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes`1(System.Reflection.ParameterInfo) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes`1(System.Reflection.ParameterInfo,System.Boolean) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Runtime.InteropServices.MemoryMarshal.g__FromArray\|18_2`1(!0[],System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Runtime.InteropServices.MemoryMarshal.g__FromMemoryManager\|18_1`1(System.ReadOnlyMemory) | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Threading.Tasks.TaskAsyncEnumerableExtensions.ToBlockingEnumerable`1(System.Collections.Generic.IAsyncEnumerable,System.Threading.CancellationToken) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.Assembly) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.Assembly,System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Boolean) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.MemberInfo,System.Type,System.Boolean) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.Module) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.Module,System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.ParameterInfo) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.ParameterInfo,System.Boolean) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.ParameterInfo,System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.ParameterInfo,System.Type,System.Boolean) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Runtime.InteropServices.MemoryMarshal.g__FromString\|18_0`1(System.String,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.RuntimeReflectionExtensions.GetRuntimeEvents(System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.RuntimeReflectionExtensions.GetRuntimeFields(System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.RuntimeReflectionExtensions.GetRuntimeMethods(System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerable System.Reflection.RuntimeReflectionExtensions.GetRuntimeProperties(System.Type) | [ExtensionAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Runtime.InteropServices.MemoryMarshal.<g__FromArray\|18_2>d`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Runtime.InteropServices.MemoryMarshal.<g__FromMemoryManager\|18_1>d`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Threading.Tasks.TaskAsyncEnumerableExtensions.d__3`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Runtime.InteropServices.MemoryMarshal.<g__FromString\|18_0>d`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator> System.Diagnostics.Tracing.CounterPayload.d__51.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator> System.Diagnostics.Tracing.IncrementingCounterPayload.d__39.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Threading.ThreadPool.d__26.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Runtime.Loader.AssemblyLoadContext.d__55.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Reflection.TypeInfo.d__10.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Reflection.TypeInfo.d__22.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Runtime.Loader.AssemblyLoadContext.d__85.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Runtime.Loader.LibraryNameVariation.d__5.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Threading.Tasks.ThreadPoolTaskScheduler.d__6.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.IEnumerator System.Threading.TimerQueue.d__7.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.KeyValuePair System.Diagnostics.Tracing.CounterPayload.d__51.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.KeyValuePair System.Diagnostics.Tracing.EventPayload.d__17.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.KeyValuePair System.Diagnostics.Tracing.IncrementingCounterPayload.d__39.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Collections.Generic.KeyValuePair`2 | [IsReadOnlyAttribute(...)] | -| System.Collections.Generic.ReferenceEqualityComparer System.Collections.Generic.ReferenceEqualityComparer.get_Instance() | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.ReferenceEqualityComparer.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Collections.Generic.ValueListBuilder`1 | [IsByRefLikeAttribute(...)] | -| System.Collections.IEnumerator System.Diagnostics.Tracing.CounterPayload.d__51.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Diagnostics.Tracing.IncrementingCounterPayload.d__39.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Reflection.TypeInfo.d__10.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Reflection.TypeInfo.d__22.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Runtime.InteropServices.MemoryMarshal.<g__FromArray\|18_2>d`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Runtime.InteropServices.MemoryMarshal.<g__FromMemoryManager\|18_1>d`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Runtime.InteropServices.MemoryMarshal.<g__FromString\|18_0>d`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Runtime.Loader.AssemblyLoadContext.d__85.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Runtime.Loader.AssemblyLoadContext.d__55.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Runtime.Loader.LibraryNameVariation.d__5.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Threading.Tasks.TaskAsyncEnumerableExtensions.d__3`1.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Threading.Tasks.ThreadPoolTaskScheduler.d__6.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Threading.ThreadPool.d__26.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.IEnumerator System.Threading.TimerQueue.d__7.GetEnumerator() | [DebuggerHiddenAttribute(...)] | -| System.Collections.ObjectModel.ReadOnlyCollection System.Collections.Generic.CollectionExtensions.AsReadOnly`1(System.Collections.Generic.IList) | [ExtensionAttribute(...)] | -| System.Collections.ObjectModel.ReadOnlyCollection System.Collections.ObjectModel.ReadOnlyCollection`1.get_Empty() | [CompilerGeneratedAttribute(...)] | -| System.Collections.ObjectModel.ReadOnlyCollection System.Diagnostics.Tracing.EventWrittenEventArgs.get_Payload() | [CompilerGeneratedAttribute(...)] | -| System.Collections.ObjectModel.ReadOnlyCollection`1.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Collections.ObjectModel.ReadOnlyDictionary System.Collections.Generic.CollectionExtensions.AsReadOnly`2(System.Collections.Generic.IDictionary) | [ExtensionAttribute(...)] | -| System.Collections.ObjectModel.ReadOnlyDictionary System.Collections.ObjectModel.ReadOnlyDictionary`2.get_Empty() | [CompilerGeneratedAttribute(...)] | -| System.Collections.ObjectModel.ReadOnlyDictionary`2.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ComponentModel.EditorBrowsableAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ComponentModel.EditorBrowsableState System.ComponentModel.EditorBrowsableAttribute.get_State() | [CompilerGeneratedAttribute(...)] | -| System.ComponentModel.Win32Exception.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Console.<>O | [CompilerGeneratedAttribute(...)] | -| System.ConsoleCancelEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ConsoleKey System.IO.KeyParser.g__ControlAndDigitPressed\|8_2(System.Char,System.Char,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.ConsoleKey System.IO.KeyParser.g__ControlAndLetterPressed\|8_1(System.Char,System.Boolean,System.Char,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.ConsoleKey System.IO.KeyParser.g__UppercaseCharacter\|8_0(System.Char,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.ConsoleKey System.IO.KeyParser.g__MapEscapeSequenceNumber\|7_2(System.Byte) | [CompilerGeneratedAttribute(...)] | -| System.ConsoleKeyInfo | [IsReadOnlyAttribute(...)] | -| System.ConsoleKeyInfo System.IO.KeyParser.g__Create\|7_7(System.Char,System.ConsoleKey,System.ConsoleModifiers) | [CompilerGeneratedAttribute(...)] | -| System.ConsoleModifiers | [FlagsAttribute(...)] | -| System.ConsoleModifiers System.IO.KeyParser.g__MapRxvtModifiers\|7_6(System.Char) | [CompilerGeneratedAttribute(...)] | -| System.ConsoleModifiers System.IO.KeyParser.g__MapXtermModifiers\|7_3(System.Char) | [CompilerGeneratedAttribute(...)] | -| System.ConsolePal.<>c | [CompilerGeneratedAttribute(...)] | -| System.Convert | [ExtensionAttribute(...)] | -| System.DTSubString | [IsByRefLikeAttribute(...)] | -| System.DateOnly | [IsReadOnlyAttribute(...)] | -| System.DateOnly.<>c | [CompilerGeneratedAttribute(...)] | -| System.DateTime | [IsReadOnlyAttribute(...)] | -| System.DateTime System.Diagnostics.Tracing.EventWrittenEventArgs.get_TimeStamp() | [CompilerGeneratedAttribute(...)] | -| System.DateTimeOffset | [IsReadOnlyAttribute(...)] | -| System.DateTimeParse.TM | [ScopedRefAttribute(...)] | -| System.DateTimeRawInfo | [ScopedRefAttribute(...)] | -| System.DateTimeResult | [IsByRefLikeAttribute(...)] | -| System.DateTimeResult | [ScopedRefAttribute(...)] | -| System.DateTimeToken | [ScopedRefAttribute(...)] | -| System.Decimal System.Runtime.InteropServices.CurrencyWrapper.get_WrappedObject() | [CompilerGeneratedAttribute(...)] | -| System.Decimal System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Decimal.DecCalc.PowerOvfl | [IsReadOnlyAttribute(...)] | -| System.DefaultBinder.Primitives | [FlagsAttribute(...)] | -| System.Delegate[] | [ParamArrayAttribute(...)] | -| System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes | [FlagsAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.get_MemberTypes() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute.get_MemberTypes() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.ExperimentalAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.ExperimentalAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.ConditionalAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Debug.AssertInterpolatedStringHandler | [InterpolatedStringHandlerAttribute(...)] | -| System.Diagnostics.Debug.WriteIfInterpolatedStringHandler | [InterpolatedStringHandlerAttribute(...)] | -| System.Diagnostics.Debug.t_indentLevel | [ThreadStaticAttribute(...)] | -| System.Diagnostics.DebuggableAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggableAttribute.DebuggingModes | [FlagsAttribute(...)] | -| System.Diagnostics.DebuggableAttribute.DebuggingModes System.Diagnostics.DebuggableAttribute.get_DebuggingFlags() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerBrowsableAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerBrowsableState System.Diagnostics.DebuggerBrowsableAttribute.get_State() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerDisplayAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerDisplayAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerDisplayAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerDisplayAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerTypeProxyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerTypeProxyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerVisualizerAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerVisualizerAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerVisualizerAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.DebuggerVisualizerAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.StackFrameExtensions | [ExtensionAttribute(...)] | -| System.Diagnostics.StackFrameHelper.t_reentrancy | [ThreadStaticAttribute(...)] | -| System.Diagnostics.Tracing.CounterGroup.<>O | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload | [EventDataAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload System.Diagnostics.Tracing.CounterPayloadType.get_Payload() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload System.Diagnostics.Tracing.PollingPayloadType.get_Payload() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayload.d__51 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayloadType | [EventDataAttribute(...)] | -| System.Diagnostics.Tracing.CounterPayloadType.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.DataCollector.ThreadInstance | [ThreadStaticAttribute(...)] | -| System.Diagnostics.Tracing.DiagnosticCounter.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.DiagnosticCounter.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EmptyStruct | [IsReadOnlyAttribute(...)] | -| System.Diagnostics.Tracing.EventActivityOptions | [FlagsAttribute(...)] | -| System.Diagnostics.Tracing.EventActivityOptions System.Diagnostics.Tracing.EventAttribute.get_ActivityOptions() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventChannel System.Diagnostics.Tracing.EventAttribute.get_Channel() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventChannelAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventChannelAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventChannelType System.Diagnostics.Tracing.EventChannelAttribute.get_EventChannelType() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventCommand System.Diagnostics.Tracing.EventCommandEventArgs.get_Command() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventCommandEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventCommandEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventDataAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventDataAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventDataAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventDescriptor | [IsReadOnlyAttribute(...)] | -| System.Diagnostics.Tracing.EventFieldAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventFieldAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventFieldAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventFieldFormat System.Diagnostics.Tracing.EventFieldAttribute.get_Format() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventFieldTags | [FlagsAttribute(...)] | -| System.Diagnostics.Tracing.EventFieldTags System.Diagnostics.Tracing.EventFieldAttribute.get_Tags() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventFieldTags System.Diagnostics.Tracing.TraceLoggingMetadataCollector.get_Tags() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventKeywords | [FlagsAttribute(...)] | -| System.Diagnostics.Tracing.EventKeywords System.Diagnostics.Tracing.EventAttribute.get_Keywords() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventKeywords System.Diagnostics.Tracing.EventDataAttribute.get_Keywords() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventKeywords System.Diagnostics.Tracing.EventPipeEventDispatcher.EventListenerSubscription.get_MatchAnyKeywords() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventLevel System.Diagnostics.Tracing.EventAttribute.get_Level() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventLevel System.Diagnostics.Tracing.EventPipeEventDispatcher.EventListenerSubscription.get_Level() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventListener.<>c | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventListener.EventWritten | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventListener._EventSourceCreated | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventManifestOptions | [FlagsAttribute(...)] | -| System.Diagnostics.Tracing.EventPayload.d__17 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventPipeEventDispatcher.<>c__DisplayClass12_0 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventPipeEventDispatcher.EventListenerSubscription.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventPipeEventDispatcher.EventListenerSubscription.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventProvider.s_returnCode | [ThreadStaticAttribute(...)] | -| System.Diagnostics.Tracing.EventSource System.Diagnostics.Tracing.DiagnosticCounter.get_EventSource() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSource System.Diagnostics.Tracing.EventSourceCreatedEventArgs.get_EventSource() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSource System.Diagnostics.Tracing.EventWrittenEventArgs.get_EventSource() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSource.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSource.EventMetadata[] | [NotNullAttribute(...)] | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive | [IsReadOnlyAttribute(...)] | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive[] | [ParamArrayAttribute(...)] | -| System.Diagnostics.Tracing.EventSource.m_EventSourceExceptionRecurenceCount | [ThreadStaticAttribute(...)] | -| System.Diagnostics.Tracing.EventSourceAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSourceAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSourceAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSourceCreatedEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventSourceSettings | [FlagsAttribute(...)] | -| System.Diagnostics.Tracing.EventTags | [FlagsAttribute(...)] | -| System.Diagnostics.Tracing.EventTags System.Diagnostics.Tracing.EventAttribute.get_Tags() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventTags System.Diagnostics.Tracing.EventDataAttribute.get_Tags() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventTask System.Diagnostics.Tracing.EventAttribute.get_Task() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventWrittenEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventWrittenEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventWrittenEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.EventWrittenEventArgs.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload | [EventDataAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload System.Diagnostics.Tracing.IncrementingEventCounterPayloadType.get_Payload() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload System.Diagnostics.Tracing.IncrementingPollingCounterPayloadType.get_Payload() | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingCounterPayload.d__39 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingEventCounter.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingEventCounterPayloadType | [EventDataAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingEventCounterPayloadType.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingPollingCounter.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingPollingCounterPayloadType | [EventDataAttribute(...)] | -| System.Diagnostics.Tracing.IncrementingPollingCounterPayloadType.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.ManifestBuilder.<>c | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PollingPayloadType | [EventDataAttribute(...)] | -| System.Diagnostics.Tracing.PollingPayloadType.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue | [IsReadOnlyAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.<>c | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.<>c__DisplayClass33_0 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_0 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_1 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_2 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_3 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_4 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_5 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_6 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_7 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_8 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_9 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_10 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_11 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_12 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_13 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_14 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_15 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_16 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_17 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_18 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_19 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.PropertyValue.ReferenceTypeHelper`1.<>c__DisplayClass1_20 | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.RuntimeEventSource.<>O | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.RuntimeEventSource.<>c | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.Statics.<>O | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.TraceLoggingMetadataCollector.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Diagnostics.Tracing.TraceLoggingTypeInfo.threadCache | [ThreadStaticAttribute(...)] | -| System.Diagnostics.Tracing.TraceLoggingTypeInfo[] | [ParamArrayAttribute(...)] | -| System.Double System.BitConverter.Int64BitsToDouble(System.Int64) | [IntrinsicAttribute(...)] | -| System.Double System.BitConverter.UInt64BitsToDouble(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Double System.Diagnostics.Tracing.CounterPayload.get_Max() | [CompilerGeneratedAttribute(...)] | -| System.Double System.Diagnostics.Tracing.CounterPayload.get_Mean() | [CompilerGeneratedAttribute(...)] | -| System.Double System.Diagnostics.Tracing.CounterPayload.get_Min() | [CompilerGeneratedAttribute(...)] | -| System.Double System.Diagnostics.Tracing.CounterPayload.get_StandardDeviation() | [CompilerGeneratedAttribute(...)] | -| System.Double System.Diagnostics.Tracing.IncrementingCounterPayload.get_Increment() | [CompilerGeneratedAttribute(...)] | -| System.Double System.Double.g__NegativeN\|219_1(System.Double,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Double System.Double.g__PositiveN\|219_0(System.Double,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Double System.Double.Abs(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Acos(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Acosh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Asin(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Asinh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Atan2(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Atan(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Atanh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Cbrt(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Ceiling(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Cos(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Cosh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Exp(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Floor(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.FusedMultiplyAdd(System.Double,System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Log2(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Log10(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Log(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Max(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.MaxMagnitude(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.MaxMagnitudeNumber(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.MaxNumber(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Min(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.MinMagnitude(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.MinMagnitudeNumber(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.MinNumber(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Pow(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Round(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Sin(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Sinh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Sqrt(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Tan(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Tanh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Double.Truncate(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.g__SoftwareFallback\|53_0(System.Double,System.Double) | [CompilerGeneratedAttribute(...)] | -| System.Double System.Math.Abs(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Acos(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Acosh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Asin(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Asinh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Atan2(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Atan(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Atanh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Cbrt(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Ceiling(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Cos(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Cosh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Exp(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Floor(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.FusedMultiplyAdd(System.Double,System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Log2(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Log10(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Log(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Max(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.MaxMagnitude(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Min(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.MinMagnitude(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Pow(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Round(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Sin(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Sinh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Sqrt(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Tan(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Tanh(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Math.Truncate(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Runtime.InteropServices.NFloat.get_Value() | [NonVersionableAttribute(...)] | -| System.Double System.Threading.PortableThreadPool.HillClimbing.Complex.get_Imaginary() | [CompilerGeneratedAttribute(...)] | -| System.Double System.Threading.PortableThreadPool.HillClimbing.Complex.get_Real() | [CompilerGeneratedAttribute(...)] | -| System.Double System.Threading.Volatile.Read(System.Double) | [IntrinsicAttribute(...)] | -| System.Double System.Threading.Volatile.Read(System.Double) | [NonVersionableAttribute(...)] | -| System.Enum.<>c__63`1 | [CompilerGeneratedAttribute(...)] | -| System.Enum.EnumInfo System.Enum.g__InitializeEnumInfo\|7_0`1(System.RuntimeType,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Environment.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Exception System.Runtime.ExceptionServices.ExceptionDispatchInfo.SetCurrentStackTrace(System.Exception) | [StackTraceHiddenAttribute(...)] | -| System.Exception System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs.get_Exception() | [CompilerGeneratedAttribute(...)] | -| System.Exception.DispatchState | [IsReadOnlyAttribute(...)] | -| System.Exception[] | [ParamArrayAttribute(...)] | -| System.Exception[] System.Reflection.ReflectionTypeLoadException.get_LoaderExceptions() | [CompilerGeneratedAttribute(...)] | -| System.GCGenerationInfo | [IsReadOnlyAttribute(...)] | -| System.GCGenerationInfo.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.GCGenerationInfo.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.GCGenerationInfo.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.GCGenerationInfo.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.GCMemoryInfo | [IsReadOnlyAttribute(...)] | -| System.Globalization.Calendar | [ScopedRefAttribute(...)] | -| System.Globalization.CalendarData.<>c | [CompilerGeneratedAttribute(...)] | -| System.Globalization.CalendricalCalculationsHelper.EphemerisCorrectionAlgorithmMap | [IsReadOnlyAttribute(...)] | -| System.Globalization.CompareOptions | [FlagsAttribute(...)] | -| System.Globalization.CultureInfo System.Resources.ResourceFallbackManager.d__5.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Globalization.CultureInfo.<>O | [CompilerGeneratedAttribute(...)] | -| System.Globalization.CultureInfo.s_currentThreadCulture | [ThreadStaticAttribute(...)] | -| System.Globalization.CultureInfo.s_currentThreadUICulture | [ThreadStaticAttribute(...)] | -| System.Globalization.CultureTypes | [FlagsAttribute(...)] | -| System.Globalization.DateTimeFormatFlags | [FlagsAttribute(...)] | -| System.Globalization.DateTimeFormatInfo | [ScopedRefAttribute(...)] | -| System.Globalization.DateTimeStyles | [FlagsAttribute(...)] | -| System.Globalization.DateTimeStyles | [ScopedRefAttribute(...)] | -| System.Globalization.DaylightTimeStruct | [IsReadOnlyAttribute(...)] | -| System.Globalization.GlobalizationExtensions | [ExtensionAttribute(...)] | -| System.Globalization.GlobalizationMode.Settings.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Globalization.GlobalizationMode.Settings.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Globalization.HebrewNumber.HebrewValue | [IsReadOnlyAttribute(...)] | -| System.Globalization.MonthNameStyles | [FlagsAttribute(...)] | -| System.Globalization.NumberFormatInfo System.Globalization.NumberFormatInfo.g__GetProviderNonNull\|58_0(System.IFormatProvider) | [CompilerGeneratedAttribute(...)] | -| System.Globalization.NumberStyles | [FlagsAttribute(...)] | -| System.Globalization.OrdinalCasing | [ExtensionAttribute(...)] | -| System.Globalization.TextInfo.ToLowerConversion | [IsReadOnlyAttribute(...)] | -| System.Globalization.TextInfo.ToUpperConversion | [IsReadOnlyAttribute(...)] | -| System.Globalization.TimeSpanParse.StringParser | [IsByRefLikeAttribute(...)] | -| System.Globalization.TimeSpanParse.TimeSpanRawInfo | [IsByRefLikeAttribute(...)] | -| System.Globalization.TimeSpanParse.TimeSpanResult | [IsByRefLikeAttribute(...)] | -| System.Globalization.TimeSpanParse.TimeSpanStandardStyles | [FlagsAttribute(...)] | -| System.Globalization.TimeSpanParse.TimeSpanToken | [IsByRefLikeAttribute(...)] | -| System.Globalization.TimeSpanParse.TimeSpanTokenizer | [IsByRefLikeAttribute(...)] | -| System.Globalization.TimeSpanStyles | [FlagsAttribute(...)] | -| System.Globalization.UmAlQuraCalendar.DateMapping | [IsReadOnlyAttribute(...)] | -| System.Guid | [IsReadOnlyAttribute(...)] | -| System.Guid | [NonVersionableAttribute(...)] | -| System.Guid | [RequiresLocationAttribute(...)] | -| System.Guid System.Guid.GuidResult.ToGuid() | [IsReadOnlyAttribute(...)] | -| System.Half | [IsReadOnlyAttribute(...)] | -| System.Half System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.HexConverter.<>c | [CompilerGeneratedAttribute(...)] | -| System.IO.BufferedStream.d__68 | [CompilerGeneratedAttribute(...)] | -| System.IO.BufferedStream.d__33 | [CompilerGeneratedAttribute(...)] | -| System.IO.BufferedStream.d__36 | [CompilerGeneratedAttribute(...)] | -| System.IO.BufferedStream.d__40 | [CompilerGeneratedAttribute(...)] | -| System.IO.BufferedStream.d__48 | [CompilerGeneratedAttribute(...)] | -| System.IO.BufferedStream.d__59 | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEntry | [IsByRefLikeAttribute(...)] | -| System.IO.Enumeration.FileSystemEntry.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEntry.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEntry.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEntry.FileNameBuffer.<_buffer>e__FixedBuffer | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEntry.FileNameBuffer.<_buffer>e__FixedBuffer | [UnsafeValueTypeAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerable.FindPredicate System.IO.Enumeration.FileSystemEnumerable`1.get_ShouldIncludePredicate() | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerable.FindPredicate System.IO.Enumeration.FileSystemEnumerable`1.get_ShouldRecursePredicate() | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerableFactory.<>c | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass2_0 | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass3_0 | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass4_0 | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass5_0 | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass6_0 | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass7_0 | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerable`1.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.Enumeration.FileSystemEnumerable`1.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions System.IO.EnumerationOptions.get_Compatible() | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions System.IO.EnumerationOptions.get_CompatibleRecursive() | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions System.IO.EnumerationOptions.get_Default() | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.EnumerationOptions.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.File.<g__Core\|92_0>d | [CompilerGeneratedAttribute(...)] | -| System.IO.File.d__90 | [CompilerGeneratedAttribute(...)] | -| System.IO.File.d__91 | [CompilerGeneratedAttribute(...)] | -| System.IO.File.d__95 | [CompilerGeneratedAttribute(...)] | -| System.IO.File.d__86 | [CompilerGeneratedAttribute(...)] | -| System.IO.File.d__98 | [CompilerGeneratedAttribute(...)] | -| System.IO.File.d__110 | [CompilerGeneratedAttribute(...)] | -| System.IO.File.d__108 | [CompilerGeneratedAttribute(...)] | -| System.IO.FileAccess | [FlagsAttribute(...)] | -| System.IO.FileAttributes | [FlagsAttribute(...)] | -| System.IO.FileAttributes System.IO.EnumerationOptions.get_AttributesToSkip() | [CompilerGeneratedAttribute(...)] | -| System.IO.FileLoadException.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.FileLoadException.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.FileNotFoundException.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.FileNotFoundException.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.FileOptions | [FlagsAttribute(...)] | -| System.IO.FileShare | [FlagsAttribute(...)] | -| System.IO.FileStream.d__57 | [CompilerGeneratedAttribute(...)] | -| System.IO.FileSystem.<>O | [CompilerGeneratedAttribute(...)] | -| System.IO.FileSystem.<>c | [CompilerGeneratedAttribute(...)] | -| System.IO.MatchCasing System.IO.EnumerationOptions.get_MatchCasing() | [CompilerGeneratedAttribute(...)] | -| System.IO.MatchType System.IO.EnumerationOptions.get_MatchType() | [CompilerGeneratedAttribute(...)] | -| System.IO.Path.<>c | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.BufferedFileStreamStrategy.d__57 | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.BufferedFileStreamStrategy.d__27 | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.BufferedFileStreamStrategy.d__55 | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.BufferedFileStreamStrategy.d__37 | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.BufferedFileStreamStrategy.d__36 | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.BufferedFileStreamStrategy.d__48 | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.BufferedFileStreamStrategy.d__47 | [CompilerGeneratedAttribute(...)] | -| System.IO.Strategies.FileStreamStrategy.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.IO.Stream.<g__Core\|27_0>d | [CompilerGeneratedAttribute(...)] | -| System.IO.Stream.<g__FinishReadAsync\|42_0>d | [CompilerGeneratedAttribute(...)] | -| System.IO.Stream.<>c | [CompilerGeneratedAttribute(...)] | -| System.IO.Stream.d__61 | [CompilerGeneratedAttribute(...)] | -| System.IO.Stream.d__46 | [CompilerGeneratedAttribute(...)] | -| System.IO.Stream.ReadWriteTask.<>O | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamReader.d__69 | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamReader.d__72 | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamReader.d__63 | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamReader.d__66 | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamWriter.<g__Core\|76_0>d | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamWriter.d__36 | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamWriter.d__64 | [CompilerGeneratedAttribute(...)] | -| System.IO.StreamWriter.d__68 | [CompilerGeneratedAttribute(...)] | -| System.IO.SyncTextReader System.ConsolePal.g__EnsureInitialized\|19_0() | [CompilerGeneratedAttribute(...)] | -| System.IO.TextReader System.Console.g__EnsureInitialized\|14_0() | [CompilerGeneratedAttribute(...)] | -| System.IO.TextReader.<>c | [CompilerGeneratedAttribute(...)] | -| System.IO.TextReader.d__23 | [CompilerGeneratedAttribute(...)] | -| System.IO.TextReader.d__17 | [CompilerGeneratedAttribute(...)] | -| System.IO.TextWriter System.Console.g__EnsureInitialized\|28_0() | [CompilerGeneratedAttribute(...)] | -| System.IO.TextWriter System.Console.g__EnsureInitialized\|26_0() | [CompilerGeneratedAttribute(...)] | -| System.IO.TextWriter.<g__WriteAsyncCore\|60_0>d | [CompilerGeneratedAttribute(...)] | -| System.IO.TextWriter.<g__WriteLineAsyncCore\|66_0>d | [CompilerGeneratedAttribute(...)] | -| System.IO.TextWriter.<>c | [CompilerGeneratedAttribute(...)] | -| System.IO.UnixFileMode | [FlagsAttribute(...)] | -| System.Index | [IsReadOnlyAttribute(...)] | -| System.Index System.Range.get_End() | [CompilerGeneratedAttribute(...)] | -| System.Index System.Range.get_Start() | [CompilerGeneratedAttribute(...)] | -| System.Int16 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.Int16) | [IntrinsicAttribute(...)] | -| System.Int16 System.Math.Max(System.Int16,System.Int16) | [NonVersionableAttribute(...)] | -| System.Int16 System.Math.Min(System.Int16,System.Int16) | [NonVersionableAttribute(...)] | -| System.Int16 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Int16 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Int16 System.Threading.Volatile.Read(System.Int16) | [IntrinsicAttribute(...)] | -| System.Int16 System.Threading.Volatile.Read(System.Int16) | [NonVersionableAttribute(...)] | -| System.Int32 Internal.Runtime.InteropServices.ComActivator.GetClassFactoryForTypeInternal(Internal.Runtime.InteropServices.ComActivationContextInternal*) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 Internal.Runtime.InteropServices.ComActivator.RegisterClassForTypeInternal(Internal.Runtime.InteropServices.ComActivationContextInternal*) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 Internal.Runtime.InteropServices.ComActivator.UnregisterClassForTypeInternal(Internal.Runtime.InteropServices.ComActivationContextInternal*) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.GetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssembly(System.IntPtr,System.IntPtr,System.IntPtr) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyBytes(System.Byte*,System.IntPtr,System.Byte*,System.IntPtr,System.IntPtr,System.IntPtr) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|16_0(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|3_0(System.IntPtr,System.UInt16*,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|0_0(System.UInt16*,System.Globalization.CalendarId*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|31_0(System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|5_0(System.Int32,System.Int32*,System.Int32*,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|35_0(System.UInt16*,System.UInt32,System.Int32*,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|34_0(System.UInt16*,System.UInt32,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|30_0(System.UInt16*,System.UInt32,System.Char*,System.Int32,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|29_0(System.UInt16*,System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|33_0(System.UInt16*,System.Int32,System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|36_0(System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|43_0(System.UInt16*,System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|32_0(System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|15_0(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.g____PInvoke\|42_0(System.UInt16*,System.IntPtr,System.Char*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Globalization.CompareString(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.GetCalendars(System.String,System.Globalization.CalendarId[],System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.GetLocales(System.Char[],System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.GetSortKey(System.IntPtr,System.Char*,System.Int32,System.Byte*,System.Int32,System.Globalization.CompareOptions) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.IanaIdToWindowsId(System.String,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.IndexOf(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.IsNormalized(System.Text.NormalizationForm,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.LastIndexOf(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.NormalizeString(System.Text.NormalizationForm,System.Char*,System.Int32,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.ToAscii(System.UInt32,System.Char*,System.Int32,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.ToUnicode(System.UInt32,System.Char*,System.Int32,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Globalization.WindowsIdToIanaId(System.String,System.IntPtr,System.Char*,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.HostPolicy.g____PInvoke\|2_0(System.Byte*,System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.HostPolicy.corehost_resolve_component_dependencies(System.String,Interop.HostPolicy.corehost_resolve_component_dependencies_result_fn) | [LibraryImportAttribute(...)] | -| System.Int32 Interop.Kernel32.g____PInvoke\|46_0(System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Kernel32.g____PInvoke\|70_0(System.Int32,System.IntPtr,System.UInt32,System.Int32,System.Void*,System.Int32,System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Kernel32.g____PInvoke\|77_0(System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Kernel32.g____PInvoke\|80_0(System.IntPtr,System.Int32,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Kernel32.g____PInvoke\|58_0(System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Kernel32.g____PInvoke\|81_0(System.UInt16*,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 Interop.Kernel32.g____PInvoke\|57_0(System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Array.g__GenericBinarySearch\|85_0`1(System.Array,System.Int32,System.Int32,System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Array.g__GenericIndexOf\|110_0`1(System.Array,System.Object,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Array.g__GenericLastIndexOf\|116_0`1(System.Array,System.Object,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Array.GetLength(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Array.GetLowerBound(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Array.GetUpperBound(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.BitConverter.SingleToInt32Bits(System.Single) | [IntrinsicAttribute(...)] | -| System.Int32 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.ComponentModel.Win32Exception.get_NativeErrorCode() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Debugger.g____PInvoke\|6_0() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.CounterPayload.get_Count() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.EventAttribute.get_EventId() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.g____PInvoke\|6_0(System.UInt32,System.Guid*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.g____PInvoke\|9_0(System.UInt64,System.Diagnostics.Tracing.EventPipeEventInstanceData*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.g____PInvoke\|8_0(System.UInt64,System.Diagnostics.Tracing.EventPipeSessionInfo*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.g____PInvoke\|10_0(System.UInt64) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.g____PInvoke\|11_0(System.UInt64,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Diagnostics.Tracing.EventWrittenEventArgs.get_EventId() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Environment.get_ProcessorCount() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.GC.<_StartNoGCRegion>g____PInvoke\|3_0(System.Int64,System.Int32,System.Int64,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Globalization.ISOWeek.g__P\|8_0(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Globalization.IcuLocaleData.g__ResolveDigitListSeparator\|25_1(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Globalization.IcuLocaleData.g__ResolveIndex\|25_0(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.IO.EnumerationOptions.get_BufferSize() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Int32.LeadingZeroCount(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Int32.Log2(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Int32.PopCount(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Int32.RotateLeft(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Int32.RotateRight(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Int32.TrailingZeroCount(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.IntPtr.ToInt32() | [NonVersionableAttribute(...)] | -| System.Int32 System.IntPtr.get_Size() | [NonVersionableAttribute(...)] | -| System.Int32 System.IntPtr.op_Explicit(System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Int32 System.Math.Max(System.Int32,System.Int32) | [NonVersionableAttribute(...)] | -| System.Int32 System.Math.Min(System.Int32,System.Int32) | [NonVersionableAttribute(...)] | -| System.Int32 System.MdUtf8String.g____PInvoke\|0_0(System.Void*,System.Void*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.MemoryExtensions.BinarySearch`1(System.ReadOnlySpan,System.IComparable) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.BinarySearch`1(System.Span,System.IComparable) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.ReadOnlySpan,!0,!1) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.ReadOnlySpan,!1) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.Span,!0,!1) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.Span,!1) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.ReadOnlySpan,System.ReadOnlySpan,System.Collections.Generic.IEqualityComparer) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.Span,System.ReadOnlySpan,System.Collections.Generic.IEqualityComparer) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.CompareTo(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.Count`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.Count`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.Count`1(System.Span,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.Count`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOf(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExceptInRange`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExceptInRange`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan,!0,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.Span,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.Span,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.Span,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyInRange`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAnyInRange`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.ReadOnlySpan,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.ReadOnlySpan,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.Span,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.Span,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOf`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOf`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOf`1(System.Span,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.IndexOf`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOf(System.ReadOnlySpan,System.ReadOnlySpan,System.StringComparison) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExceptInRange`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExceptInRange`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan,!0,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.Span,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.Span,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.Span,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyInRange`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyInRange`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.ReadOnlySpan,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.ReadOnlySpan,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.ReadOnlySpan,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.Span,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.Span,!0,!0,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.Span,System.Buffers.SearchValues) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOf`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOf`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOf`1(System.Span,!0) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.LastIndexOf`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.SequenceCompareTo`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.SequenceCompareTo`1(System.Span,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.Split(System.ReadOnlySpan,System.Span,System.Char,System.StringSplitOptions) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.Split(System.ReadOnlySpan,System.Span,System.ReadOnlySpan,System.StringSplitOptions) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.SplitAny(System.ReadOnlySpan,System.Span,System.ReadOnlySpan,System.StringSplitOptions) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.SplitAny(System.ReadOnlySpan,System.Span,System.ReadOnlySpan,System.StringSplitOptions) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.ToLower(System.ReadOnlySpan,System.Span,System.Globalization.CultureInfo) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.ToLowerInvariant(System.ReadOnlySpan,System.Span) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.ToUpper(System.ReadOnlySpan,System.Span,System.Globalization.CultureInfo) | [ExtensionAttribute(...)] | -| System.Int32 System.MemoryExtensions.ToUpperInvariant(System.ReadOnlySpan,System.Span) | [ExtensionAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.g__SoftwareFallback\|24_0(System.UInt32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.g__SoftwareFallback\|25_0(System.UInt64) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.LeadingZeroCount(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.LeadingZeroCount(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.LeadingZeroCount(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.Log2(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.Log2(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.Log2(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.PopCount(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.PopCount(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.PopCount(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.Int64) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Int32 System.Numerics.Matrix3x2.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Matrix3x2.Impl.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Matrix4x4.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Matrix4x4.Impl.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Plane.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Quaternion.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.TotalOrderIeee754Comparer`1.g__CompareGeneric\|0_1(!0,!0) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Numerics.TotalOrderIeee754Comparer`1.g__CompareIntegerSemantic\|0_0`1(!0,!0) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Numerics.TotalOrderIeee754Comparer`1.g__CompareSignificand\|0_2(!0,!0) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Numerics.Vector2.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Vector3.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Vector4.GetHashCode() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Numerics.Vector`1.get_Count() | [IntrinsicAttribute(...)] | -| System.Int32 System.ReadOnlySpan`1.get_Length() | [IntrinsicAttribute(...)] | -| System.Int32 System.ReadOnlySpan`1.get_Length() | [NonVersionableAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.g____PInvoke\|25_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.UInt16*,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.g____PInvoke\|16_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.UInt16*,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.g____PInvoke\|26_0(System.Runtime.CompilerServices.QCallModule,System.UInt16*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.g____PInvoke\|23_0(System.Runtime.CompilerServices.QCallModule,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.g____PInvoke\|13_0(System.Runtime.CompilerServices.QCallModule,System.UInt16*,System.Runtime.CompilerServices.QCallModule,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetArrayMethodToken(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefFromSignature(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetStringConstant(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetTypeRef(System.Runtime.CompilerServices.QCallModule,System.String,System.Runtime.CompilerServices.QCallModule,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|11_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.UInt16*,System.Reflection.EventAttributes,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|6_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.UInt16*,System.Byte*,System.Int32,System.Reflection.FieldAttributes) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|56_0(System.Runtime.CompilerServices.QCallModule,System.UInt16*,System.Int32,System.Reflection.GenericParameterAttributes,System.Int32,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|4_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.UInt16*,System.Byte*,System.Int32,System.Reflection.MethodAttributes) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|5_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|10_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.UInt16*,System.Reflection.PropertyAttributes,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|55_0(System.Runtime.CompilerServices.QCallModule,System.UInt16*,System.Int32,System.Reflection.TypeAttributes,System.Int32,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|16_0(System.Runtime.CompilerServices.QCallModule,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.g____PInvoke\|15_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Reflection.ParameterAttributes,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineEvent(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Reflection.EventAttributes,System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineField(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32,System.Reflection.FieldAttributes) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineGenericParam(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32,System.Reflection.GenericParameterAttributes,System.Int32,System.Int32[]) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineMethod(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32,System.Reflection.MethodAttributes) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineProperty(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Reflection.PropertyAttributes,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineType(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32,System.Reflection.TypeAttributes,System.Int32,System.Int32[]) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.SetParamInfo(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Reflection.ParameterAttributes,System.String) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.LoaderAllocatorScout.g____PInvoke\|1_0(System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Metadata.AssemblyExtensions.g____PInvoke\|0_0(System.Runtime.CompilerServices.QCallAssembly,System.Byte**,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.Metadata.MetadataUpdater.g____PInvoke\|1_0() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.NullabilityInfoContext.g__CountNullabilityStates\|28_0(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.RuntimeAssembly.g____PInvoke\|14_0(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.RuntimeAssembly.g____PInvoke\|60_0(System.Runtime.CompilerServices.QCallAssembly,System.UInt16*,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StringHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Reflection.RuntimeAssembly.GetManifestResourceInfo(System.Runtime.CompilerServices.QCallAssembly,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | -| System.Int32 System.Reflection.RuntimeParameterInfo.g__GetConstructorArgument\|32_0(System.Collections.Generic.IList,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Resources.ResourceLocator.get_DataPosition() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.CompilationRelaxationsAttribute.get_CompilationRelaxations() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.FixedBufferAttribute.get_Length() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.InlineArrayAttribute.get_Length() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.RefSafetyRulesAttribute.get_Version() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.RuntimeHelpers.g____PInvoke\|34_0(System.Runtime.CompilerServices.MethodTable*,System.Runtime.CompilerServices.MethodTable*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.RuntimeHelpers.EnumCompareTo`1(!0,!0) | [IntrinsicAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.RuntimeHelpers.get_OffsetToStringData() | [NonVersionableAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.Unsafe.SizeOf`1() | [IntrinsicAttribute(...)] | -| System.Int32 System.Runtime.CompilerServices.Unsafe.SizeOf`1() | [NonVersionableAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.ComWrappers.g____PInvoke\|1_0(System.Runtime.CompilerServices.ObjectHandleOnStack,System.IntPtr*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.ComWrappers.g____PInvoke\|3_0(System.IntPtr,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.ComWrappers.g____PInvoke\|11_0(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.InteropServices.CreateComInterfaceFlags,System.IntPtr*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.ComWrappers.g____PInvoke\|18_0(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.IntPtr,System.IntPtr,System.Runtime.InteropServices.CreateObjectFlags,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.DispIdAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.ErrorWrapper.get_ErrorCode() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.FieldOffsetAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.LCIDConversionAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn.get_BufferSize() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.get_ConstantElementCount() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.get_ElementIndirectionDepth() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn.get_BufferSize() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn.get_BufferSize() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.NFloat.get_Size() | [NonVersionableAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.PosixSignalRegistration.OnPosixSignal(System.Int32,System.Runtime.InteropServices.PosixSignal) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Int32 System.Runtime.InteropServices.PosixSignalRegistration.Token.get_SigNo() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.Intrinsics.Vector64`1.get_Count() | [IntrinsicAttribute(...)] | -| System.Int32 System.Runtime.Intrinsics.Vector128`1.get_Count() | [IntrinsicAttribute(...)] | -| System.Int32 System.Runtime.Intrinsics.Vector256`1.get_Count() | [IntrinsicAttribute(...)] | -| System.Int32 System.Runtime.Intrinsics.Vector512`1.get_Count() | [IntrinsicAttribute(...)] | -| System.Int32 System.Runtime.Loader.AssemblyLoadContext.g____PInvoke\|10_0(System.UInt16*,System.Int32,System.UInt16*,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.Loader.AssemblyLoadContext.g____PInvoke\|9_0(System.UInt16*,System.UInt16*,System.UInt16*,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.Loader.AssemblyLoadContext.g____PInvoke\|8_0(System.UInt16*,System.UInt16*,System.UInt16*,System.UInt16*,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Runtime.Loader.AssemblyLoadContext.g____PInvoke\|11_0(System.UInt16*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.RuntimeTypeHandle.<_IsVisible>g____PInvoke\|66_0(System.Runtime.CompilerServices.QCallTypeHandle) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.SpanHelpers.BinarySearch`2(System.ReadOnlySpan,!1) | [ExtensionAttribute(...)] | -| System.Int32 System.Span`1.get_Length() | [IntrinsicAttribute(...)] | -| System.Int32 System.Span`1.get_Length() | [NonVersionableAttribute(...)] | -| System.Int32 System.String.g__GetNonRandomizedHashCodeOrdinalIgnoreCaseSlow\|47_0(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.String.get_Length() | [IntrinsicAttribute(...)] | -| System.Int32 System.Text.CodePageDataItem.get_UIFamilyCodePage() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Text.EncodingInfo.get_CodePage() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Text.UTF8Encoding.UTF8EncodingSealed.ReadUtf8(System.Char,System.Int32,System.Byte,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Text.Unicode.TextSegmentationUtility.Processor`1.get_CurrentCodeUnitOffset() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Text.Unicode.TextSegmentationUtility.Processor`1.get_CurrentCodeUnitOffset() | [IsReadOnlyAttribute(...)] | -| System.Int32 System.Threading.Interlocked.And(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Threading.Interlocked.CompareExchange(System.Int32,System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Threading.Interlocked.Exchange(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Threading.Interlocked.ExchangeAdd(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Threading.Interlocked.Or(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Threading.LowLevelLifoSemaphore.g____PInvoke\|3_0(System.IntPtr,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Threading.RegisteredWaitHandle.get_TimeoutTimeMs() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Threading.Thread.get_ManagedThreadId() | [IntrinsicAttribute(...)] | -| System.Int32 System.Threading.Thread.get_OptimalMaxSpinWaitsPerSpinIteration() | [CompilerGeneratedAttribute(...)] | -| System.Int32 System.Threading.Volatile.Read(System.Int32) | [IntrinsicAttribute(...)] | -| System.Int32 System.Threading.Volatile.Read(System.Int32) | [NonVersionableAttribute(...)] | -| System.Int32 System.UIntPtr.get_Size() | [NonVersionableAttribute(...)] | -| System.Int64 System.BitConverter.DoubleToInt64Bits(System.Double) | [IntrinsicAttribute(...)] | -| System.Int64 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.GCGenerationInfo.get_FragmentationAfterBytes() | [CompilerGeneratedAttribute(...)] | -| System.Int64 System.GCGenerationInfo.get_FragmentationBeforeBytes() | [CompilerGeneratedAttribute(...)] | -| System.Int64 System.GCGenerationInfo.get_SizeAfterBytes() | [CompilerGeneratedAttribute(...)] | -| System.Int64 System.GCGenerationInfo.get_SizeBeforeBytes() | [CompilerGeneratedAttribute(...)] | -| System.Int64 System.Int64.LeadingZeroCount(System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Int64.Log2(System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Int64.PopCount(System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Int64.RotateLeft(System.Int64,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int64 System.Int64.RotateRight(System.Int64,System.Int32) | [IntrinsicAttribute(...)] | -| System.Int64 System.Int64.TrailingZeroCount(System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.IntPtr.ToInt64() | [NonVersionableAttribute(...)] | -| System.Int64 System.IntPtr.op_Explicit(System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Int64 System.Math.Max(System.Int64,System.Int64) | [NonVersionableAttribute(...)] | -| System.Int64 System.Math.Min(System.Int64,System.Int64) | [NonVersionableAttribute(...)] | -| System.Int64 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Int64 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Int64 System.Threading.Interlocked.And(System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Threading.Interlocked.CompareExchange(System.Int64,System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Threading.Interlocked.Exchange(System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Threading.Interlocked.ExchangeAdd(System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Threading.Interlocked.Or(System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Threading.TimerQueue.get_ActiveCount() | [CompilerGeneratedAttribute(...)] | -| System.Int64 System.Threading.Volatile.Read(System.Int64) | [IntrinsicAttribute(...)] | -| System.Int64 System.Threading.Volatile.Read(System.Int64) | [NonVersionableAttribute(...)] | -| System.Int128 | [IntrinsicAttribute(...)] | -| System.Int128 | [IsReadOnlyAttribute(...)] | -| System.Int128 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Int128 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.IntPtr | [IsReadOnlyAttribute(...)] | -| System.IntPtr | [RequiresLocationAttribute(...)] | -| System.IntPtr Interop.Kernel32.g____PInvoke\|59_0(System.IntPtr,System.UInt16*,System.UInt32,System.UInt32) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr Interop.Kernel32.g____PInvoke\|76_0(System.IntPtr,System.UInt16*,System.UInt32,System.UInt32) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr Interop.Kernel32.g____PInvoke\|79_0(System.IntPtr,System.Int32,System.Int32,System.UInt16*,System.UInt32,System.UInt32) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr Interop.Kernel32.g____PInvoke\|75_0(System.UInt32,System.Int32,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.ComAwareWeakReference.g____PInvoke\|4_0(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64*) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.Diagnostics.StackFrameExtensions.GetNativeIP(System.Diagnostics.StackFrame) | [ExtensionAttribute(...)] | -| System.IntPtr System.Diagnostics.StackFrameExtensions.GetNativeImageBase(System.Diagnostics.StackFrame) | [ExtensionAttribute(...)] | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.g____PInvoke\|2_0(System.UInt16*,delegate* unmanaged,System.Void*) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.g____PInvoke\|4_0(System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.CreateProvider(System.String,delegate* unmanaged,System.Void*) | [LibraryImportAttribute(...)] | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.GetProvider(System.String) | [LibraryImportAttribute(...)] | -| System.IntPtr System.IntPtr.Add(System.IntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.LeadingZeroCount(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.IntPtr System.IntPtr.Log2(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.IntPtr System.IntPtr.PopCount(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.IntPtr System.IntPtr.RotateLeft(System.IntPtr,System.Int32) | [IntrinsicAttribute(...)] | -| System.IntPtr System.IntPtr.RotateRight(System.IntPtr,System.Int32) | [IntrinsicAttribute(...)] | -| System.IntPtr System.IntPtr.Subtract(System.IntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.TrailingZeroCount(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.IntPtr System.IntPtr.get_MaxValue() | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.get_MinValue() | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.op_Addition(System.IntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.op_Explicit(System.Int32) | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.op_Explicit(System.Int64) | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.op_Explicit(System.Void*) | [NonVersionableAttribute(...)] | -| System.IntPtr System.IntPtr.op_Subtraction(System.IntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.IntPtr System.Math.Max(System.IntPtr,System.IntPtr) | [NonVersionableAttribute(...)] | -| System.IntPtr System.Math.Min(System.IntPtr,System.IntPtr) | [NonVersionableAttribute(...)] | -| System.IntPtr System.Runtime.CompilerServices.Unsafe.ByteOffset`1(!0,!0) | [IntrinsicAttribute(...)] | -| System.IntPtr System.Runtime.CompilerServices.Unsafe.ByteOffset`1(!0,!0) | [NonVersionableAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.g____PInvoke\|4_0(System.IntPtr,System.UInt16*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.g____PInvoke\|2_0(System.UInt16*,System.Runtime.CompilerServices.QCallAssembly,System.Int32,System.UInt32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.g____PInvoke\|1_0(System.UInt16*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.GetSymbol(System.IntPtr,System.String,System.Boolean) | [LibraryImportAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.LoadByName(System.String,System.Runtime.CompilerServices.QCallAssembly,System.Boolean,System.UInt32,System.Boolean) | [LibraryImportAttribute(...)] | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.LoadFromPath(System.String,System.Boolean) | [LibraryImportAttribute(...)] | -| System.IntPtr System.Runtime.Loader.AssemblyLoadContext.g____PInvoke\|0_0(System.IntPtr,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.RuntimeTypeHandle.ToIntPtr(System.RuntimeTypeHandle) | [IntrinsicAttribute(...)] | -| System.IntPtr System.StubHelpers.StubHelpers.GetStubContext() | [IntrinsicAttribute(...)] | -| System.IntPtr System.StubHelpers.StubHelpers.NextCallReturnAddress() | [IntrinsicAttribute(...)] | -| System.IntPtr System.Threading.RegisteredWaitHandle.get_UserUnregisterWaitHandleValue() | [CompilerGeneratedAttribute(...)] | -| System.IntPtr System.Threading.Volatile.Read(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.IntPtr System.Threading.Volatile.Read(System.IntPtr) | [NonVersionableAttribute(...)] | -| System.IntPtr.Zero | [IntrinsicAttribute(...)] | -| System.LazyHelper.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.LazyState System.LazyHelper.get_State() | [CompilerGeneratedAttribute(...)] | -| System.LocalDataStoreSlot.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Marvin.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.MdUtf8String | [IsReadOnlyAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(!0[]) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(!0[],System.Index) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(!0[],System.Int32) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(!0[],System.Int32,System.Int32) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(!0[],System.Range) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(System.ArraySegment) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(System.ArraySegment,System.Int32) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.AsMemory`1(System.ArraySegment,System.Int32,System.Int32) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.TrimEnd`1(System.Memory,!0) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.TrimEnd`1(System.Memory,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.TrimStart`1(System.Memory,!0) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.TrimStart`1(System.Memory,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.Trim`1(System.Memory,!0) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.Trim`1(System.Memory,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.Trim(System.Memory) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.TrimEnd(System.Memory) | [ExtensionAttribute(...)] | -| System.Memory System.MemoryExtensions.TrimStart(System.Memory) | [ExtensionAttribute(...)] | -| System.MemoryExtensions | [ExtensionAttribute(...)] | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [InterpolatedStringHandlerAttribute(...)] | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [IsByRefLikeAttribute(...)] | -| System.Memory`1 | [IsReadOnlyAttribute(...)] | -| System.Nullable | [RequiresLocationAttribute(...)] | -| System.Nullable System.Nullable`1.op_Implicit(!0) | [NonVersionableAttribute(...)] | -| System.Nullable`1 | [NonVersionableAttribute(...)] | -| System.Number.BigInteger | [IsByRefLikeAttribute(...)] | -| System.Number.BigInteger | [ScopedRefAttribute(...)] | -| System.Number.BigInteger.<_blocks>e__FixedBuffer | [CompilerGeneratedAttribute(...)] | -| System.Number.BigInteger.<_blocks>e__FixedBuffer | [UnsafeValueTypeAttribute(...)] | -| System.Number.BinaryParser`1 | [IsReadOnlyAttribute(...)] | -| System.Number.DiyFp | [IsByRefLikeAttribute(...)] | -| System.Number.DiyFp | [IsReadOnlyAttribute(...)] | -| System.Number.HexParser`1 | [IsReadOnlyAttribute(...)] | -| System.Number.NumberBuffer | [IsByRefLikeAttribute(...)] | -| System.Number.NumberBuffer | [ScopedRefAttribute(...)] | -| System.Numerics.Matrix3x2 | [IntrinsicAttribute(...)] | -| System.Numerics.Matrix3x2 System.Numerics.Matrix3x2.Impl.AsM3x2() | [UnscopedRefAttribute(...)] | -| System.Numerics.Matrix3x2.Impl | [IsReadOnlyAttribute(...)] | -| System.Numerics.Matrix3x2.Impl System.Numerics.Matrix3x2.AsImpl() | [UnscopedRefAttribute(...)] | -| System.Numerics.Matrix3x2.Impl System.Numerics.Matrix3x2.AsROImpl() | [IsReadOnlyAttribute(...)] | -| System.Numerics.Matrix3x2.Impl System.Numerics.Matrix3x2.AsROImpl() | [UnscopedRefAttribute(...)] | -| System.Numerics.Matrix4x4 | [IntrinsicAttribute(...)] | -| System.Numerics.Matrix4x4 System.Numerics.Matrix4x4.Impl.AsM4x4() | [UnscopedRefAttribute(...)] | -| System.Numerics.Matrix4x4.Impl | [IsReadOnlyAttribute(...)] | -| System.Numerics.Matrix4x4.Impl System.Numerics.Matrix4x4.AsImpl() | [UnscopedRefAttribute(...)] | -| System.Numerics.Matrix4x4.Impl System.Numerics.Matrix4x4.AsROImpl() | [IsReadOnlyAttribute(...)] | -| System.Numerics.Matrix4x4.Impl System.Numerics.Matrix4x4.AsROImpl() | [UnscopedRefAttribute(...)] | -| System.Numerics.Plane | [IntrinsicAttribute(...)] | -| System.Numerics.Plane | [IsReadOnlyAttribute(...)] | -| System.Numerics.Quaternion | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion | [IsReadOnlyAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Add(System.Numerics.Quaternion,System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Conjugate(System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Divide(System.Numerics.Quaternion,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Inverse(System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Multiply(System.Numerics.Quaternion,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Multiply(System.Numerics.Quaternion,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Negate(System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Normalize(System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.Subtract(System.Numerics.Quaternion,System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.get_Identity() | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.get_Zero() | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.op_Addition(System.Numerics.Quaternion,System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.op_Multiply(System.Numerics.Quaternion,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.op_Subtraction(System.Numerics.Quaternion,System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Quaternion.op_UnaryNegation(System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Vector.WithElement(System.Numerics.Quaternion,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Numerics.Quaternion System.Numerics.Vector.WithElement(System.Numerics.Quaternion,System.Int32,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.TotalOrderIeee754Comparer`1 | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector | [ExtensionAttribute(...)] | -| System.Numerics.Vector | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Matrix3x2.Impl.get_Translation() | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Matrix3x2.get_Translation() | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Abs(System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Add(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Clamp(System.Numerics.Vector2,System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Divide(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Divide(System.Numerics.Vector2,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Lerp(System.Numerics.Vector2,System.Numerics.Vector2,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Max(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Min(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Multiply(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Multiply(System.Numerics.Vector2,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Multiply(System.Single,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Negate(System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Normalize(System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.SquareRoot(System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.Subtract(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.get_One() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.get_UnitX() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.get_UnitY() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.get_Zero() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_Addition(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_Division(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_Division(System.Numerics.Vector2,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_Multiply(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_Multiply(System.Numerics.Vector2,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_Multiply(System.Single,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_Subtraction(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector2.op_UnaryNegation(System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector.WithElement(System.Numerics.Vector2,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Numerics.Vector2 System.Numerics.Vector.WithElement(System.Numerics.Vector2,System.Int32,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector2 System.Runtime.Intrinsics.Vector128.AsVector2(System.Runtime.Intrinsics.Vector128) | [ExtensionAttribute(...)] | -| System.Numerics.Vector2 System.Runtime.Intrinsics.Vector128.AsVector2(System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Matrix4x4.Impl.get_Translation() | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Matrix4x4.get_Translation() | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Abs(System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Add(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Clamp(System.Numerics.Vector3,System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Divide(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Divide(System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Lerp(System.Numerics.Vector3,System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Max(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Min(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Multiply(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Multiply(System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Multiply(System.Single,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Negate(System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Normalize(System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.SquareRoot(System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.Subtract(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.get_One() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.get_UnitX() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.get_UnitY() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.get_UnitZ() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.get_Zero() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_Addition(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_Division(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_Division(System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_Multiply(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_Multiply(System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_Multiply(System.Single,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_Subtraction(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector3.op_UnaryNegation(System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector.WithElement(System.Numerics.Vector3,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Numerics.Vector3 System.Numerics.Vector.WithElement(System.Numerics.Vector3,System.Int32,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector3 System.Runtime.Intrinsics.Vector128.AsVector3(System.Runtime.Intrinsics.Vector128) | [ExtensionAttribute(...)] | -| System.Numerics.Vector3 System.Runtime.Intrinsics.Vector128.AsVector3(System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Abs(System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Add(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Clamp(System.Numerics.Vector4,System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Divide(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Divide(System.Numerics.Vector4,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Lerp(System.Numerics.Vector4,System.Numerics.Vector4,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Max(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Min(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Multiply(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Multiply(System.Numerics.Vector4,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Multiply(System.Single,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Negate(System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Normalize(System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.SquareRoot(System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.Subtract(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.get_One() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.get_UnitW() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.get_UnitX() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.get_UnitY() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.get_UnitZ() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.get_Zero() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_Addition(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_Division(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_Division(System.Numerics.Vector4,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_Multiply(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_Multiply(System.Numerics.Vector4,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_Multiply(System.Single,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_Subtraction(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector4.op_UnaryNegation(System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector.WithElement(System.Numerics.Vector4,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Numerics.Vector4 System.Numerics.Vector.WithElement(System.Numerics.Vector4,System.Int32,System.Single) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector4 System.Runtime.Intrinsics.Vector128.AsVector4(System.Runtime.Intrinsics.Vector128) | [ExtensionAttribute(...)] | -| System.Numerics.Vector4 System.Runtime.Intrinsics.Vector128.AsVector4(System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Abs`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Add`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AndNot`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.BitwiseAnd`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.BitwiseOr`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConditionalSelect`1(System.Numerics.Vector,System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Divide`1(System.Numerics.Vector,!0) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Divide`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Equals`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThanOrEqual`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThan`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThanOrEqual`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThan`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LoadAlignedNonTemporal`1(!0*) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LoadAligned`1(!0*) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LoadUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LoadUnsafe`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Load`1(!0*) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Max`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Min`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Multiply`1(!0,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Multiply`1(System.Numerics.Vector,!0) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Multiply`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Negate`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.OnesComplement`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.SquareRoot`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Subtract`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WithElement`1(System.Numerics.Vector,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Xor`1(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.get_AllBitsSet() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.get_One() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.get_Zero() | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Addition(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_BitwiseAnd(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_BitwiseOr(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Division(System.Numerics.Vector,!0) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Division(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_ExclusiveOr(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_LeftShift(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Multiply(!0,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Multiply(System.Numerics.Vector,!0) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Multiply(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_OnesComplement(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_RightShift(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Subtraction(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_UnaryNegation(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_UnaryPlus(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_UnsignedRightShift(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Runtime.Intrinsics.Vector128.AsVector`1(System.Runtime.Intrinsics.Vector128) | [ExtensionAttribute(...)] | -| System.Numerics.Vector System.Runtime.Intrinsics.Vector128.AsVector`1(System.Runtime.Intrinsics.Vector128) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Runtime.Intrinsics.Vector256.AsVector`1(System.Runtime.Intrinsics.Vector256) | [ExtensionAttribute(...)] | -| System.Numerics.Vector System.Runtime.Intrinsics.Vector256.AsVector`1(System.Runtime.Intrinsics.Vector256) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Runtime.Intrinsics.Vector512.AsVector`1(System.Runtime.Intrinsics.Vector512) | [ExtensionAttribute(...)] | -| System.Numerics.Vector System.Runtime.Intrinsics.Vector512.AsVector`1(System.Runtime.Intrinsics.Vector512) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.As`2(System.Numerics.Vector) | [ExtensionAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.As`2(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorByte`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Narrow(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorDouble`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Ceiling(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConditionalSelect(System.Numerics.Vector,System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToDouble(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToDouble(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Floor(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenLower(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenUpper(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorInt16`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Narrow(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightArithmetic(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenLower(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenUpper(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorInt32`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToInt32(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Equals(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Equals(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThan(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThan(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThan(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThan(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Narrow(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightArithmetic(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenLower(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenUpper(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorInt64`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToInt64(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Equals(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Equals(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThan(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.GreaterThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThan(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThan(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.LessThanOrEqual(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightArithmetic(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenLower(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenUpper(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorNInt`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightArithmetic(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorSByte`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Narrow(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightArithmetic(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorSingle`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Ceiling(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConditionalSelect(System.Numerics.Vector,System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToSingle(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToSingle(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Floor(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Narrow(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorUInt16`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Narrow(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenLower(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenUpper(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorUInt32`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToUInt32(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.Narrow(System.Numerics.Vector,System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenLower(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenUpper(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorUInt64`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ConvertToUInt64(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenLower(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.WidenUpper(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.AsVectorNUInt`1(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftLeft(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector,System.Int32) | [IntrinsicAttribute(...)] | -| System.Numerics.Vector System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector) | [IntrinsicAttribute(...)] | -| System.Numerics.VectorDebugView`1 | [IsReadOnlyAttribute(...)] | -| System.Numerics.Vector`1 | [IntrinsicAttribute(...)] | -| System.Numerics.Vector`1 | [IsReadOnlyAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type,System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type,System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type,System.Object[],System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type,System.Object[],System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Activator.CreateInstance(System.Type,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Array.Clone() | [IntrinsicAttribute(...)] | -| System.Object System.Collections.Concurrent.ConcurrentQueue`1.d__26.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.d__15.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.get_Max() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.get_Min() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Diagnostics.Tracing.CounterPayload.d__51.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Diagnostics.Tracing.EventPayload.d__17.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Diagnostics.Tracing.IncrementingCounterPayload.d__39.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Object.MemberwiseClone() | [IntrinsicAttribute(...)] | -| System.Object System.Reflection.ConstructorInfo.Invoke(System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.ConstructorInfo.Invoke(System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.MdFieldInfo.GetValue(System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.MdFieldInfo.GetValue(System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.MdFieldInfo.GetValueDirect(System.TypedReference) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.MdFieldInfo.GetValueDirect(System.TypedReference) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.MethodBase.Invoke(System.Object,System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.MethodBase.Invoke(System.Object,System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.PropertyInfo.GetValue(System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.PropertyInfo.GetValue(System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.PropertyInfo.GetValue(System.Object,System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.PropertyInfo.GetValue(System.Object,System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.RtFieldInfo.GetValue(System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.RtFieldInfo.GetValue(System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.RtFieldInfo.GetValueDirect(System.TypedReference) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.RtFieldInfo.GetValueDirect(System.TypedReference) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.RuntimeConstructorInfo.Invoke(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.RuntimeConstructorInfo.Invoke(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.RuntimeConstructorInfo.Invoke(System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.RuntimeConstructorInfo.Invoke(System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.RuntimeMethodInfo.Invoke(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.RuntimeMethodInfo.Invoke(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.RuntimePropertyInfo.GetValue(System.Object,System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.RuntimePropertyInfo.GetValue(System.Object,System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.RuntimePropertyInfo.GetValue(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.RuntimePropertyInfo.GetValue(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Reflection.TypeInfo.d__10.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Reflection.TypeInfo.d__22.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Resources.ResourceFallbackManager.d__5.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Resources.ResourceLocator.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastAny(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastAny(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastAny(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastClass(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastClass(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastClass(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastClassSpecial(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastClassSpecial(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastClassSpecial(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCastInterface(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCast_Helper(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCast_Helper(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ChkCast_Helper(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfAny(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfClass(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstanceOfInterface(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstance_Helper(System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstance_Helper(System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.IsInstance_Helper(System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.LdelemaRef(System.Array,System.IntPtr,System.Void*) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.LdelemaRef(System.Array,System.IntPtr,System.Void*) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.LdelemaRef(System.Array,System.IntPtr,System.Void*) | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ThrowArrayMismatchException() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ThrowArrayMismatchException() | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Runtime.CompilerServices.CastHelpers.ThrowArrayMismatchException() | [StackTraceHiddenAttribute(...)] | -| System.Object System.Runtime.CompilerServices.SwitchExpressionException.get_UnmatchedValue() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Runtime.InteropServices.DefaultParameterValueAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Runtime.InteropServices.DispatchWrapper.get_WrappedObject() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Runtime.InteropServices.MemoryMarshal.<g__FromArray\|18_2>d`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.InteropServices.MemoryMarshal.<g__FromMemoryManager\|18_1>d`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.InteropServices.MemoryMarshal.<g__FromString\|18_0>d`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.InteropServices.UnknownWrapper.get_WrappedObject() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Runtime.InteropServices.VariantWrapper.get_WrappedObject() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Runtime.Loader.AssemblyLoadContext.d__85.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.Loader.AssemblyLoadContext.d__55.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Runtime.Loader.LibraryNameVariation.d__5.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.RuntimeMethodHandle.InvokeMethod(System.Object,System.Void**,System.Signature,System.Boolean) | [DebuggerHiddenAttribute(...)] | -| System.Object System.RuntimeMethodHandle.InvokeMethod(System.Object,System.Void**,System.Signature,System.Boolean) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.RuntimeType.g__CreateInstanceLocal\|145_0(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Object System.RuntimeType.ActivatorCache.ctor>g__ReturnNull\|4_0(System.Void*) | [CompilerGeneratedAttribute(...)] | -| System.Object System.RuntimeType.CreateInstanceDefaultCtor(System.Boolean,System.Boolean) | [DebuggerHiddenAttribute(...)] | -| System.Object System.RuntimeType.CreateInstanceDefaultCtor(System.Boolean,System.Boolean) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.RuntimeType.CreateInstanceOfT() | [DebuggerHiddenAttribute(...)] | -| System.Object System.RuntimeType.CreateInstanceOfT() | [DebuggerStepThroughAttribute(...)] | -| System.Object System.RuntimeType.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.RuntimeType.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Security.SecurityException.get_Demanded() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Security.SecurityException.get_DenySetInstance() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Security.SecurityException.get_PermitOnlySetInstance() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Threading.Interlocked.CompareExchange(System.Object,System.Object,System.Object) | [IntrinsicAttribute(...)] | -| System.Object System.Threading.Interlocked.Exchange(System.Object,System.Object) | [IntrinsicAttribute(...)] | -| System.Object System.Threading.Tasks.TaskAsyncEnumerableExtensions.d__3`1.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Threading.Tasks.TaskToAsyncResult.TaskAsyncResult.get_AsyncState() | [CompilerGeneratedAttribute(...)] | -| System.Object System.Threading.Tasks.ThreadPoolTaskScheduler.d__6.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Threading.ThreadPool.d__26.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Threading.TimerQueue.d__7.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Object[] System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.get_Arguments() | [CompilerGeneratedAttribute(...)] | -| System.ObsoleteAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ObsoleteAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ObsoleteAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ObsoleteAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ParseFlags | [FlagsAttribute(...)] | -| System.ParsingInfo | [ScopedRefAttribute(...)] | -| System.Progress`1.ProgressChanged | [CompilerGeneratedAttribute(...)] | -| System.Random System.Random.get_Shared() | [CompilerGeneratedAttribute(...)] | -| System.Random.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Random.ThreadSafeRandom.t_random | [ThreadStaticAttribute(...)] | -| System.Range | [IsReadOnlyAttribute(...)] | -| System.Range.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Range.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.TrimEnd`1(System.ReadOnlyMemory,!0) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.TrimEnd`1(System.ReadOnlyMemory,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.TrimStart`1(System.ReadOnlyMemory,!0) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.TrimStart`1(System.ReadOnlyMemory,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.Trim`1(System.ReadOnlyMemory,!0) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.Trim`1(System.ReadOnlyMemory,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.AsMemory(System.String) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.AsMemory(System.String,System.Index) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.AsMemory(System.String,System.Int32) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.AsMemory(System.String,System.Int32,System.Int32) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.AsMemory(System.String,System.Range) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.Trim(System.ReadOnlyMemory) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.TrimEnd(System.ReadOnlyMemory) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory System.MemoryExtensions.TrimStart(System.ReadOnlyMemory) | [ExtensionAttribute(...)] | -| System.ReadOnlyMemory`1 | [IsReadOnlyAttribute(...)] | -| System.ReadOnlySpan | [ScopedRefAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimEnd`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimEnd`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimStart`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimStart`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.Trim`1(System.ReadOnlySpan,!0) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.Trim`1(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.Runtime.CompilerServices.RuntimeHelpers.CreateSpan`1(System.RuntimeFieldHandle) | [IntrinsicAttribute(...)] | -| System.ReadOnlySpan | [ScopedRefAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.g__TrimFallback\|233_0(System.ReadOnlySpan) | [CompilerGeneratedAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimUtf8(System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.Runtime.Loader.AssemblyLoadContext.g__ReadAllBytes\|92_0(System.IO.Stream) | [CompilerGeneratedAttribute(...)] | -| System.ReadOnlySpan | [ScopedRefAttribute(...)] | -| System.ReadOnlySpan System.IO.Enumeration.FileSystemEntry.get_Directory() | [CompilerGeneratedAttribute(...)] | -| System.ReadOnlySpan System.IO.Enumeration.FileSystemEntry.get_Directory() | [IsReadOnlyAttribute(...)] | -| System.ReadOnlySpan System.IO.Enumeration.FileSystemEntry.get_OriginalRootDirectory() | [CompilerGeneratedAttribute(...)] | -| System.ReadOnlySpan System.IO.Enumeration.FileSystemEntry.get_OriginalRootDirectory() | [IsReadOnlyAttribute(...)] | -| System.ReadOnlySpan System.IO.Enumeration.FileSystemEntry.get_RootDirectory() | [CompilerGeneratedAttribute(...)] | -| System.ReadOnlySpan System.IO.Enumeration.FileSystemEntry.get_RootDirectory() | [IsReadOnlyAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.g__TrimFallback\|219_0(System.ReadOnlySpan) | [CompilerGeneratedAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.AsSpan(System.String) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.AsSpan(System.String) | [IntrinsicAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.AsSpan(System.String,System.Index) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.AsSpan(System.String,System.Int32) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.AsSpan(System.String,System.Int32,System.Int32) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.AsSpan(System.String,System.Range) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.Trim(System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.Trim(System.ReadOnlySpan,System.Char) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.Trim(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimEnd(System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimEnd(System.ReadOnlySpan,System.Char) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimEnd(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimStart(System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimStart(System.ReadOnlySpan,System.Char) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.MemoryExtensions.TrimStart(System.ReadOnlySpan,System.ReadOnlySpan) | [ExtensionAttribute(...)] | -| System.ReadOnlySpan System.String.op_Implicit(System.String) | [IntrinsicAttribute(...)] | -| System.ReadOnlySpan`1 | [IsByRefLikeAttribute(...)] | -| System.ReadOnlySpan`1 | [IsReadOnlyAttribute(...)] | -| System.ReadOnlySpan`1 | [NonVersionableAttribute(...)] | -| System.ReadOnlySpan`1.Enumerator | [IsByRefLikeAttribute(...)] | -| System.Reflection.Assembly System.AssemblyLoadEventArgs.get_LoadedAssembly() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.Assembly System.Reflection.ManifestResourceInfo.get_ReferencedAssembly() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.Assembly System.ResolveEventArgs.get_RequestingAssembly() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.d__55.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Reflection.Assembly.<>O | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyAlgorithmIdAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyCompanyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyConfigurationAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyCopyrightAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyCultureAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyDefaultAliasAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyDelaySignAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyDescriptionAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyFileVersionAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyInformationalVersionAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyKeyFileAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyKeyNameAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyMetadataAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyMetadataAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyName System.Security.SecurityException.get_FailedAssemblyInfo() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyNameFlags | [FlagsAttribute(...)] | -| System.Reflection.AssemblyNameFormatter | [ExtensionAttribute(...)] | -| System.Reflection.AssemblyNameParser | [IsByRefLikeAttribute(...)] | -| System.Reflection.AssemblyNameParser.AssemblyNameParts | [IsReadOnlyAttribute(...)] | -| System.Reflection.AssemblyNameParser.AttributeKind | [ScopedRefAttribute(...)] | -| System.Reflection.AssemblyProductAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblySignatureKeyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblySignatureKeyAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyTitleAttribute.k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyTrademarkAttribute.<Trademark>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.AssemblyVersionAttribute.<Version>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.Associates.Attributes | [FlagsAttribute(...)] | -| System.Reflection.BindingFlags | [FlagsAttribute(...)] | -| System.Reflection.CallingConventions | [FlagsAttribute(...)] | -| System.Reflection.ConstArray | [IsReadOnlyAttribute(...)] | -| System.Reflection.CustomAttributeCtorParameter | [IsReadOnlyAttribute(...)] | -| System.Reflection.CustomAttributeEncodedArgument | [IsReadOnlyAttribute(...)] | -| System.Reflection.CustomAttributeExtensions | [ExtensionAttribute(...)] | -| System.Reflection.CustomAttributeNamedArgument | [IsReadOnlyAttribute(...)] | -| System.Reflection.CustomAttributeNamedParameter | [IsReadOnlyAttribute(...)] | -| System.Reflection.CustomAttributeType | [IsReadOnlyAttribute(...)] | -| System.Reflection.CustomAttributeTypedArgument | [IsReadOnlyAttribute(...)] | -| System.Reflection.DefaultMemberAttribute.<MemberName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.Emit.AssemblyBuilder.t_allowDynamicCode | [ThreadStaticAttribute(...)] | -| System.Reflection.Emit.AssemblyBuilderAccess | [FlagsAttribute(...)] | -| System.Reflection.Emit.DynamicResolver.SecurityControlFlags | [FlagsAttribute(...)] | -| System.Reflection.Emit.ExceptionHandler | [IsReadOnlyAttribute(...)] | -| System.Reflection.Emit.Label | [IsReadOnlyAttribute(...)] | -| System.Reflection.Emit.OpCode | [IsReadOnlyAttribute(...)] | -| System.Reflection.EventAttributes | [FlagsAttribute(...)] | -| System.Reflection.EventInfo System.Reflection.RuntimeReflectionExtensions.GetRuntimeEvent(System.Type,System.String) | [ExtensionAttribute(...)] | -| System.Reflection.ExceptionHandlingClauseOptions | [FlagsAttribute(...)] | -| System.Reflection.FieldAttributes | [FlagsAttribute(...)] | -| System.Reflection.FieldInfo System.Reflection.RuntimeReflectionExtensions.GetRuntimeField(System.Type,System.String) | [ExtensionAttribute(...)] | -| System.Reflection.FieldInfo[] System.Diagnostics.Tracing.ManifestBuilder.<CreateManifestString>g__GetEnumFields\|19_0(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.Reflection.GenericParameterAttributes | [FlagsAttribute(...)] | -| System.Reflection.InterfaceMapping System.Reflection.RuntimeReflectionExtensions.GetRuntimeInterfaceMap(System.Reflection.TypeInfo,System.Type) | [ExtensionAttribute(...)] | -| System.Reflection.IntrospectionExtensions | [ExtensionAttribute(...)] | -| System.Reflection.InvocationFlags | [FlagsAttribute(...)] | -| System.Reflection.ManifestResourceInfo.<FileName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ManifestResourceInfo.<ReferencedAssembly>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ManifestResourceInfo.<ResourceLocation>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.MdSigCallingConvention | [FlagsAttribute(...)] | -| System.Reflection.MemberTypes | [FlagsAttribute(...)] | -| System.Reflection.Metadata.AssemblyExtensions | [ExtensionAttribute(...)] | -| System.Reflection.Metadata.MetadataUpdateHandlerAttribute.<HandlerType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.Metadata.MetadataUpdater.<IsSupported>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.MetadataEnumResult.<smallResult>e__FixedBuffer | [CompilerGeneratedAttribute(...)] | -| System.Reflection.MetadataEnumResult.<smallResult>e__FixedBuffer | [UnsafeValueTypeAttribute(...)] | -| System.Reflection.MetadataImport | [IsReadOnlyAttribute(...)] | -| System.Reflection.MethodAttributes | [FlagsAttribute(...)] | -| System.Reflection.MethodBase.InvokerArgFlags | [FlagsAttribute(...)] | -| System.Reflection.MethodBase.InvokerStrategy | [FlagsAttribute(...)] | -| System.Reflection.MethodBase.StackAllocatedArguments | [IsByRefLikeAttribute(...)] | -| System.Reflection.MethodBase.StackAllocatedArgumentsWithCopyBack | [IsByRefLikeAttribute(...)] | -| System.Reflection.MethodBase.StackAllocatedByRefs | [IsByRefLikeAttribute(...)] | -| System.Reflection.MethodInfo System.Reflection.RuntimeReflectionExtensions.GetMethodInfo(System.Delegate) | [ExtensionAttribute(...)] | -| System.Reflection.MethodInfo System.Reflection.RuntimeReflectionExtensions.GetRuntimeBaseDefinition(System.Reflection.MethodInfo) | [ExtensionAttribute(...)] | -| System.Reflection.MethodInfo System.Reflection.RuntimeReflectionExtensions.GetRuntimeMethod(System.Type,System.String,System.Type[]) | [ExtensionAttribute(...)] | -| System.Reflection.MethodInfo System.Reflection.TypeInfo.<GetDeclaredMethods>d__10.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Reflection.MethodInfo System.Security.SecurityException.get_Method() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.MethodInfo[] System.Diagnostics.StackTrace.<TryResolveStateMachineMethod>g__GetDeclaredMethods\|28_0(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.Reflection.MethodInfo[] System.Reflection.TypeInfo.<GetDeclaredMethods>g__GetDeclaredOnlyMethods\|10_0(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.Reflection.MethodSemanticsAttributes | [FlagsAttribute(...)] | -| System.Reflection.Module.<>c | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfo System.Reflection.NullabilityInfo.get_ElementType() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfo.<ElementType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfo.<GenericTypeArguments>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfo.<ReadState>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfo.<Type>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfo.<WriteState>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfoContext.<IsSupported>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityInfoContext.NotAnnotatedStatus | [FlagsAttribute(...)] | -| System.Reflection.NullabilityInfoContext.NullableAttributeStateParser | [IsReadOnlyAttribute(...)] | -| System.Reflection.NullabilityInfo[] System.Reflection.NullabilityInfo.get_GenericTypeArguments() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityState System.Reflection.NullabilityInfo.get_ReadState() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.NullabilityState System.Reflection.NullabilityInfo.get_WriteState() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ObfuscateAssemblyAttribute.<AssemblyIsPrivate>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ObfuscateAssemblyAttribute.<StripAfterObfuscation>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ObfuscationAttribute.<ApplyToMembers>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ObfuscationAttribute.<Exclude>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ObfuscationAttribute.<Feature>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ObfuscationAttribute.<StripAfterObfuscation>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.PInvokeAttributes | [FlagsAttribute(...)] | -| System.Reflection.ParameterAttributes | [FlagsAttribute(...)] | -| System.Reflection.ParameterModifier | [IsReadOnlyAttribute(...)] | -| System.Reflection.PortableExecutableKinds | [FlagsAttribute(...)] | -| System.Reflection.PropertyAttributes | [FlagsAttribute(...)] | -| System.Reflection.PropertyInfo System.Reflection.RuntimeReflectionExtensions.GetRuntimeProperty(System.Type,System.String) | [ExtensionAttribute(...)] | -| System.Reflection.ReflectionTypeLoadException.<LoaderExceptions>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ReflectionTypeLoadException.<Types>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Reflection.ResourceAttributes | [FlagsAttribute(...)] | -| System.Reflection.ResourceLocation | [FlagsAttribute(...)] | -| System.Reflection.ResourceLocation System.Reflection.ManifestResourceInfo.get_ResourceLocation() | [CompilerGeneratedAttribute(...)] | -| System.Reflection.RuntimeAssembly._ModuleResolve | [CompilerGeneratedAttribute(...)] | -| System.Reflection.RuntimeMethodInfo System.Reflection.RuntimePropertyInfo.GetGetMethod(System.Boolean) | [PreserveBaseOverridesAttribute(...)] | -| System.Reflection.RuntimeMethodInfo System.Reflection.RuntimePropertyInfo.GetSetMethod(System.Boolean) | [PreserveBaseOverridesAttribute(...)] | -| System.Reflection.RuntimeReflectionExtensions | [ExtensionAttribute(...)] | -| System.Reflection.SignatureTypeExtensions | [ExtensionAttribute(...)] | -| System.Reflection.TypeAttributes | [FlagsAttribute(...)] | -| System.Reflection.TypeInfo System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type) | [ExtensionAttribute(...)] | -| System.Reflection.TypeInfo System.Reflection.TypeInfo.<get_DeclaredNestedTypes>d__22.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Reflection.TypeInfo.<GetDeclaredMethods>d__10 | [CompilerGeneratedAttribute(...)] | -| System.Reflection.TypeInfo.<get_DeclaredNestedTypes>d__22 | [CompilerGeneratedAttribute(...)] | -| System.Reflection.TypeNameParser | [IsByRefLikeAttribute(...)] | -| System.ResolveEventArgs.<Name>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.ResolveEventArgs.<RequestingAssembly>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Resources.NeutralResourcesLanguageAttribute.<CultureName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Resources.NeutralResourcesLanguageAttribute.<Location>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Resources.ResourceFallbackManager.<GetEnumerator>d__5 | [CompilerGeneratedAttribute(...)] | -| System.Resources.ResourceLocator | [IsReadOnlyAttribute(...)] | -| System.Resources.ResourceLocator.<DataPosition>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Resources.ResourceLocator.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Resources.ResourceReader.<>c__DisplayClass7_0`1 | [CompilerGeneratedAttribute(...)] | -| System.Resources.ResourceReader.<AllowCustomResourceTypes>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Resources.SatelliteContractVersionAttribute.<Version>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Resources.UltimateResourceFallbackLocation System.Resources.NeutralResourcesLanguageAttribute.get_Location() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.AssemblyTargetedPatchBandAttribute.<TargetedPatchBand>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.AccessedThroughPropertyAttribute.<PropertyName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.<BuilderType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.CallerArgumentExpressionAttribute.<ParameterName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.CollectionBuilderAttribute.<BuilderType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.CollectionBuilderAttribute.<MethodName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.CompExactlyDependsOnAttribute.<IntrinsicsTypeUsedInHelperFunction>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.CompilationRelaxations | [FlagsAttribute(...)] | -| System.Runtime.CompilerServices.CompilationRelaxationsAttribute.<CompilationRelaxations>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.<FeatureName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.<IsOptional>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.ConditionalWeakTable`2.<>c | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredAsyncDisposable | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredAsyncDisposable System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait(System.IAsyncDisposable,System.Boolean) | [ExtensionAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable<!0> System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait`1(System.Collections.Generic.IAsyncEnumerable<!0>,System.Boolean) | [ExtensionAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable<!0> System.Threading.Tasks.TaskAsyncEnumerableExtensions.WithCancellation`1(System.Collections.Generic.IAsyncEnumerable<!0>,System.Threading.CancellationToken) | [ExtensionAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredTaskAwaitable | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable.ConfiguredValueTaskAwaiter | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ContractHelper.InternalContractFailed | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.DefaultDependencyAttribute.<LoadHint>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [InterpolatedStringHandlerAttribute(...)] | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [IsByRefLikeAttribute(...)] | -| System.Runtime.CompilerServices.DependencyAttribute.<DependentAssembly>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.DependencyAttribute.<LoadHint>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.FixedBufferAttribute.<ElementType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.FixedBufferAttribute.<Length>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.InlineArrayAttribute.<Length>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.InternalsVisibleToAttribute.<AllInternalsVisible>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.InternalsVisibleToAttribute.<AssemblyName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute.<Arguments>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.LoadHint System.Runtime.CompilerServices.DefaultDependencyAttribute.get_LoadHint() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.LoadHint System.Runtime.CompilerServices.DependencyAttribute.get_LoadHint() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.MetadataUpdateOriginalTypeAttribute.<OriginalType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.MethodImplAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.MethodImplOptions | [FlagsAttribute(...)] | -| System.Runtime.CompilerServices.MethodImplOptions System.Runtime.CompilerServices.MethodImplAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.MethodTable* System.Runtime.CompilerServices.RuntimeHelpers.GetMethodTable(System.Object) | [IntrinsicAttribute(...)] | -| System.Runtime.CompilerServices.ObjectHandleOnStack | [IsByRefLikeAttribute(...)] | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<!0>.StateMachineBox | [NotNullAttribute(...)] | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.t_tlsCache | [ThreadStaticAttribute(...)] | -| System.Runtime.CompilerServices.QCallAssembly | [IsByRefLikeAttribute(...)] | -| System.Runtime.CompilerServices.QCallModule | [IsByRefLikeAttribute(...)] | -| System.Runtime.CompilerServices.QCallTypeHandle | [IsByRefLikeAttribute(...)] | -| System.Runtime.CompilerServices.RawArrayData | [NonVersionableAttribute(...)] | -| System.Runtime.CompilerServices.RawData | [NonVersionableAttribute(...)] | -| System.Runtime.CompilerServices.RefSafetyRulesAttribute.<Version>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.ReferenceAssemblyAttribute.<Description>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.RuntimeCompatibilityAttribute.<WrapNonExceptionThrows>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.RuntimeFeature.<IsDynamicCodeSupported>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.RuntimeHelpers | [ExtensionAttribute(...)] | -| System.Runtime.CompilerServices.StackCrawlMarkHandle | [IsByRefLikeAttribute(...)] | -| System.Runtime.CompilerServices.StateMachineAttribute.<StateMachineType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.StringHandleOnStack | [IsByRefLikeAttribute(...)] | -| System.Runtime.CompilerServices.StrongBox<System.Boolean> System.Console.<get_IsErrorRedirected>g__EnsureInitialized\|38_0() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.StrongBox<System.Boolean> System.Console.<get_IsInputRedirected>g__EnsureInitialized\|34_0() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.StrongBox<System.Boolean> System.Console.<get_IsOutputRedirected>g__EnsureInitialized\|36_0() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.StrongBox`1.Value | [MaybeNullAttribute(...)] | -| System.Runtime.CompilerServices.SwitchExpressionException.<UnmatchedValue>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.TaskAwaiter | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.TaskAwaiter.<>c | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.TaskAwaiter`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.TypeForwardedFromAttribute.<AssemblyFullName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.TypeForwardedToAttribute.<Destination>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.UnsafeAccessorAttribute.<Kind>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.UnsafeAccessorAttribute.<Name>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.UnsafeAccessorKind System.Runtime.CompilerServices.UnsafeAccessorAttribute.get_Kind() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.ValueTaskAwaiter | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.ValueTaskAwaiter.<>c | [CompilerGeneratedAttribute(...)] | -| System.Runtime.CompilerServices.ValueTaskAwaiter`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.YieldAwaitable | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.YieldAwaitable.YieldAwaiter | [IsReadOnlyAttribute(...)] | -| System.Runtime.CompilerServices.YieldAwaitable.YieldAwaiter.<>c | [CompilerGeneratedAttribute(...)] | -| System.Runtime.ConstrainedExecution.Cer System.Runtime.ConstrainedExecution.ReliabilityContractAttribute.get_Cer() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.ConstrainedExecution.Consistency System.Runtime.ConstrainedExecution.ReliabilityContractAttribute.get_ConsistencyGuarantee() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.ConstrainedExecution.ReliabilityContractAttribute.<Cer>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.ConstrainedExecution.ReliabilityContractAttribute.<ConsistencyGuarantee>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.ControlledExecution.<>c | [CompilerGeneratedAttribute(...)] | -| System.Runtime.ControlledExecution.t_executing | [ThreadStaticAttribute(...)] | -| System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs.<Exception>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ArrayWithOffset | [IsReadOnlyAttribute(...)] | -| System.Runtime.InteropServices.BStrWrapper.<WrappedObject>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.BestFitMappingAttribute.<BestFitMapping>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.CLong | [IntrinsicAttribute(...)] | -| System.Runtime.InteropServices.CLong | [IsReadOnlyAttribute(...)] | -| System.Runtime.InteropServices.CULong | [IntrinsicAttribute(...)] | -| System.Runtime.InteropServices.CULong | [IsReadOnlyAttribute(...)] | -| System.Runtime.InteropServices.CallingConvention System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute.get_CallingConvention() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.CharSet System.Runtime.InteropServices.DefaultCharSetAttribute.get_CharSet() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ClassInterfaceAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ClassInterfaceType System.Runtime.InteropServices.ClassInterfaceAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.CoClassAttribute.<CoClass>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ComDefaultInterfaceAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ComEventInterfaceAttribute.<EventProvider>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ComEventInterfaceAttribute.<SourceInterface>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ComInterfaceType System.Runtime.InteropServices.InterfaceTypeAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ComSourceInterfacesAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.FUNCFLAGS | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.IDLFLAG | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.INVOKEKIND | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.LIBFLAGS | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.PARAMFLAG | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.TYPEFLAGS | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComTypes.VARFLAGS | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.ComVisibleAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.CreateComInterfaceFlags | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.CreateObjectFlags | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.CurrencyWrapper.<WrappedObject>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.DefaultCharSetAttribute.<CharSet>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute.<Paths>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.DefaultParameterValueAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.DispIdAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.DispatchWrapper.<WrappedObject>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.DllImportAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.DllImportSearchPath | [FlagsAttribute(...)] | -| System.Runtime.InteropServices.DllImportSearchPath System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute.get_Paths() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ErrorWrapper.<ErrorCode>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.FieldOffsetAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.GuidAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.HandleRef | [IsReadOnlyAttribute(...)] | -| System.Runtime.InteropServices.InterfaceTypeAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.LCIDConversionAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.LayoutKind System.Runtime.InteropServices.StructLayoutAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.LibraryImportAttribute.<EntryPoint>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.LibraryImportAttribute.<LibraryName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.LibraryImportAttribute.<SetLastError>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.LibraryImportAttribute.<StringMarshalling>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.LibraryImportAttribute.<StringMarshallingCustomType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshal.<>O | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.MarshalAsAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller.ManagedToUnmanagedIn | [IsByRefLikeAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | [ContiguousCollectionMarshallerAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn | [IsByRefLikeAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn.<BufferSize>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller.ManagedToUnmanagedIn | [IsByRefLikeAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.<ManagedType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.<MarshalMode>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.<MarshallerType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.MarshalMode System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.get_MarshalMode() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.<ConstantElementCount>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.<CountElementName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.<ElementIndirectionDepth>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.<NativeType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute.<NativeType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | [ContiguousCollectionMarshallerAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2.ManagedToUnmanagedIn | [IsByRefLikeAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | [ContiguousCollectionMarshallerAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn | [IsByRefLikeAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn.<BufferSize>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | [ContiguousCollectionMarshallerAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn | [IsByRefLikeAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn.<BufferSize>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller.ManagedToUnmanagedIn | [IsByRefLikeAttribute(...)] | -| System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromArray\|18_2>d`1 | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromMemoryManager\|18_1>d`1 | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromString\|18_0>d`1 | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.NFloat | [IntrinsicAttribute(...)] | -| System.Runtime.InteropServices.NFloat | [IsReadOnlyAttribute(...)] | -| System.Runtime.InteropServices.NFloat | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.get_AllBitsSet() | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.get_Epsilon() | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.get_MaxValue() | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.get_MinValue() | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.get_NaN() | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.get_NegativeInfinity() | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.get_PositiveInfinity() | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Addition(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Decrement(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Division(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Explicit(System.Decimal) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Explicit(System.Double) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Explicit(System.Int128) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Explicit(System.UInt128) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.Byte) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.Char) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.Half) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.Int16) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.Int32) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.Int64) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.SByte) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.Single) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UInt16) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UInt32) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UInt64) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Increment(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Modulus(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Multiply(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Subtraction(System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_UnaryNegation(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_UnaryPlus(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform | [IsReadOnlyAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform System.Runtime.InteropServices.OSPlatform.get_FreeBSD() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform System.Runtime.InteropServices.OSPlatform.get_Linux() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform System.Runtime.InteropServices.OSPlatform.get_OSX() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform System.Runtime.InteropServices.OSPlatform.get_Windows() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform.<FreeBSD>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform.<Linux>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform.<Name>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform.<OSX>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.OSPlatform.<Windows>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignal System.Runtime.InteropServices.PosixSignalContext.get_Signal() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignal System.Runtime.InteropServices.PosixSignalRegistration.Token.get_Signal() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignalContext.<Cancel>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignalContext.<Signal>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignalRegistration.<>O | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignalRegistration.Token.<Handler>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignalRegistration.Token.<SigNo>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.PosixSignalRegistration.Token.<Signal>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.ProgIdAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.StringMarshalling System.Runtime.InteropServices.LibraryImportAttribute.get_StringMarshalling() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.StructLayoutAttribute.<Value>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.TypeIdentifierAttribute.<Identifier>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.TypeIdentifierAttribute.<Scope>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.UnknownWrapper.<WrappedObject>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute.<CallingConvention>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.UnmanagedType System.Runtime.InteropServices.MarshalAsAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.InteropServices.VariantWrapper.<WrappedObject>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Intrinsics.Vector64 | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Abs`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Add`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.AndNot`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.BitwiseAnd`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.BitwiseOr`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.ConditionalSelect`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.CreateScalar`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Create`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Divide`1(System.Runtime.Intrinsics.Vector64<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Divide`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Equals`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.GreaterThan`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LessThan`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadAlignedNonTemporal`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadAligned`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadUnsafe`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Load`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Max`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Min`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Multiply`1(!0,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Multiply`1(System.Runtime.Intrinsics.Vector64<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Multiply`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Negate`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.OnesComplement`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Sqrt`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Subtract`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.WithElement`1(System.Runtime.Intrinsics.Vector64<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.WithElement`1(System.Runtime.Intrinsics.Vector64<!0>,System.Int32,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Xor`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.get_AllBitsSet() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.get_One() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.get_Zero() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_Addition(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_BitwiseAnd(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_BitwiseOr(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_Division(System.Runtime.Intrinsics.Vector64<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_Division(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_ExclusiveOr(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_LeftShift(System.Runtime.Intrinsics.Vector64<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_Multiply(!0,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_Multiply(System.Runtime.Intrinsics.Vector64<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_Multiply(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_OnesComplement(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_RightShift(System.Runtime.Intrinsics.Vector64<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_Subtraction(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_UnaryNegation(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_UnaryPlus(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.op_UnsignedRightShift(System.Runtime.Intrinsics.Vector64<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector128.GetLower`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector128.GetLower`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector128.GetUpper`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector128.GetUpper`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!1> System.Runtime.Intrinsics.Vector64.As`2(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<!1> System.Runtime.Intrinsics.Vector64.As`2(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.AsByte`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.AsByte`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.Create(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.Create(System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.CreateScalar(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Runtime.Intrinsics.Vector64<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.Byte>,System.Runtime.Intrinsics.Vector64<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.AsDouble`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.AsDouble`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.Ceiling(System.Runtime.Intrinsics.Vector64<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.ConvertToDouble(System.Runtime.Intrinsics.Vector64<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.ConvertToDouble(System.Runtime.Intrinsics.Vector64<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.Create(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.CreateScalar(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.Floor(System.Runtime.Intrinsics.Vector64<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.AsInt16`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.AsInt16`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.Create(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.Create(System.Int16,System.Int16,System.Int16,System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.CreateScalar(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.Int32>,System.Runtime.Intrinsics.Vector64<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.Int16>,System.Runtime.Intrinsics.Vector64<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.AsInt32`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.AsInt32`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.ConvertToInt32(System.Runtime.Intrinsics.Vector64<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.Create(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.Create(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.CreateScalar(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.Int64>,System.Runtime.Intrinsics.Vector64<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.Int32>,System.Runtime.Intrinsics.Vector64<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int32> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.AsInt64`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.AsInt64`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.ConvertToInt64(System.Runtime.Intrinsics.Vector64<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.Create(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.CreateScalar(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Int64> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.AsNInt`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.AsNInt`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.Create(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.CreateScalar(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.IntPtr> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.AsSByte`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.AsSByte`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Create(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.CreateScalar(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.Int16>,System.Runtime.Intrinsics.Vector64<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Runtime.Intrinsics.Vector64<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.AsSingle`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.AsSingle`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.Ceiling(System.Runtime.Intrinsics.Vector64<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.ConvertToSingle(System.Runtime.Intrinsics.Vector64<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.ConvertToSingle(System.Runtime.Intrinsics.Vector64<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.Create(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.Create(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.CreateScalar(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.Floor(System.Runtime.Intrinsics.Vector64<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.Double>,System.Runtime.Intrinsics.Vector64<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.Single>,System.Runtime.Intrinsics.Vector64<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.AsUInt16`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.AsUInt16`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Create(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Runtime.Intrinsics.Vector64<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Runtime.Intrinsics.Vector64<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.AsUInt32`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.AsUInt32`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.ConvertToUInt32(System.Runtime.Intrinsics.Vector64<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Create(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Create(System.UInt32,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Runtime.Intrinsics.Vector64<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Runtime.Intrinsics.Vector64<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.AsUInt64`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.AsUInt64`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.ConvertToUInt64(System.Runtime.Intrinsics.Vector64<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.Create(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.AsNUInt`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.AsNUInt`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.Create(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64DebugView`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector64`1 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector64`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector128 | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector64.ToVector128Unsafe`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector64.ToVector128Unsafe`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector64.ToVector128`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector64.ToVector128`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Abs`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Add`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.AndNot`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.AsVector128`1(System.Numerics.Vector<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.AsVector128`1(System.Numerics.Vector<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.BitwiseAnd`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.BitwiseOr`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.ConditionalSelect`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.CreateScalar`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Create`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Divide`1(System.Runtime.Intrinsics.Vector128<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Divide`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Equals`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.GreaterThan`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LessThan`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadAlignedNonTemporal`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadAligned`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadUnsafe`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Load`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Max`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Min`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Multiply`1(!0,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Multiply`1(System.Runtime.Intrinsics.Vector128<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Multiply`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Negate`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.OnesComplement`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Sqrt`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Subtract`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithElement`1(System.Runtime.Intrinsics.Vector128<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithElement`1(System.Runtime.Intrinsics.Vector128<!0>,System.Int32,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithLower`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithLower`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithUpper`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithUpper`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Xor`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.get_AllBitsSet() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.get_One() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.get_Zero() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_Addition(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_BitwiseAnd(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_BitwiseOr(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_Division(System.Runtime.Intrinsics.Vector128<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_Division(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_ExclusiveOr(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_LeftShift(System.Runtime.Intrinsics.Vector128<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_Multiply(!0,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_Multiply(System.Runtime.Intrinsics.Vector128<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_Multiply(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_OnesComplement(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_RightShift(System.Runtime.Intrinsics.Vector128<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_Subtraction(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_UnaryNegation(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_UnaryPlus(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.op_UnsignedRightShift(System.Runtime.Intrinsics.Vector128<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector256.GetLower`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector256.GetLower`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector256.GetUpper`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector256.GetUpper`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!1> System.Runtime.Intrinsics.Vector128.As`2(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<!1> System.Runtime.Intrinsics.Vector128.As`2(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.AsByte`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.AsByte`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.Create(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.Create(System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.CreateScalar(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.AsDouble`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.AsDouble`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.Ceiling(System.Runtime.Intrinsics.Vector128<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.ConvertToDouble(System.Runtime.Intrinsics.Vector128<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.ConvertToDouble(System.Runtime.Intrinsics.Vector128<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.Create(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.Create(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.CreateScalar(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.Floor(System.Runtime.Intrinsics.Vector128<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.Double>,System.Runtime.Intrinsics.Vector128<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.AsInt16`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.AsInt16`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.Create(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.Create(System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.CreateScalar(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.Int32>,System.Runtime.Intrinsics.Vector128<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.AsInt32`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.AsInt32`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.ConvertToInt32(System.Runtime.Intrinsics.Vector128<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.Create(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.Create(System.Int32,System.Int32,System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.CreateScalar(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.Int64>,System.Runtime.Intrinsics.Vector128<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.Int32>,System.Runtime.Intrinsics.Vector128<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int32> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.AsInt64`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.AsInt64`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.ConvertToInt64(System.Runtime.Intrinsics.Vector128<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.Create(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.Create(System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.CreateScalar(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.Int64>,System.Runtime.Intrinsics.Vector128<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Int64> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.AsNInt`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.AsNInt`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.Create(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.CreateScalar(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.IntPtr> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.AsSByte`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.AsSByte`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Create(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.CreateScalar(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Runtime.Intrinsics.Vector128<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Numerics.Matrix4x4.Impl.<Invert>g__Permute\|64_1(System.Runtime.Intrinsics.Vector128<System.Single>,System.Byte) | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.<ConvertToSingle>g__SoftwareFallback\|40_0(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsSingle`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsSingle`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Plane) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Plane) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Quaternion) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Vector2) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Vector3) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Vector4) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.AsVector128(System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.Ceiling(System.Runtime.Intrinsics.Vector128<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.ConvertToSingle(System.Runtime.Intrinsics.Vector128<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.ConvertToSingle(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.Create(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.Create(System.Single,System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.CreateScalar(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.Floor(System.Runtime.Intrinsics.Vector128<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.Double>,System.Runtime.Intrinsics.Vector128<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.Single>,System.Runtime.Intrinsics.Vector128<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.AsUInt16`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.AsUInt16`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Create(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Runtime.Intrinsics.Vector128<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.AsUInt32`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.AsUInt32`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.ConvertToUInt32(System.Runtime.Intrinsics.Vector128<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Create(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Create(System.UInt32,System.UInt32,System.UInt32,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Runtime.Intrinsics.Vector128<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Runtime.Intrinsics.Vector128<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.AsUInt64`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.AsUInt64`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.ConvertToUInt64(System.Runtime.Intrinsics.Vector128<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.Create(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.Create(System.UInt64,System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Runtime.Intrinsics.Vector128<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.AsNUInt`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.AsNUInt`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.Create(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128DebugView`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector128`1 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector128`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector256 | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector128.ToVector256Unsafe`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector128.ToVector256Unsafe`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector128.ToVector256`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector128.ToVector256`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Abs`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Add`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.AndNot`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.AsVector256`1(System.Numerics.Vector<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.AsVector256`1(System.Numerics.Vector<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.BitwiseAnd`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.BitwiseOr`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.ConditionalSelect`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.CreateScalar`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Create`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Divide`1(System.Runtime.Intrinsics.Vector256<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Divide`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Equals`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.GreaterThan`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LessThan`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadAlignedNonTemporal`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadAligned`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadUnsafe`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Load`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Max`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Min`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Multiply`1(!0,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Multiply`1(System.Runtime.Intrinsics.Vector256<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Multiply`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Negate`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.OnesComplement`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Sqrt`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Subtract`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithElement`1(System.Runtime.Intrinsics.Vector256<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithElement`1(System.Runtime.Intrinsics.Vector256<!0>,System.Int32,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithLower`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithLower`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithUpper`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithUpper`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Xor`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.get_AllBitsSet() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.get_One() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.get_Zero() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_Addition(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_BitwiseAnd(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_BitwiseOr(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_Division(System.Runtime.Intrinsics.Vector256<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_Division(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_ExclusiveOr(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_LeftShift(System.Runtime.Intrinsics.Vector256<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_Multiply(!0,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_Multiply(System.Runtime.Intrinsics.Vector256<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_Multiply(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_OnesComplement(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_RightShift(System.Runtime.Intrinsics.Vector256<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_Subtraction(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_UnaryNegation(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_UnaryPlus(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.op_UnsignedRightShift(System.Runtime.Intrinsics.Vector256<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector512.GetLower`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector512.GetLower`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector512.GetUpper`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector512.GetUpper`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!1> System.Runtime.Intrinsics.Vector256.As`2(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<!1> System.Runtime.Intrinsics.Vector256.As`2(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.AsByte`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.AsByte`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.Create(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.Create(System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.CreateScalar(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.Byte>,System.Runtime.Intrinsics.Vector256<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.AsDouble`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.AsDouble`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.Ceiling(System.Runtime.Intrinsics.Vector256<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.ConvertToDouble(System.Runtime.Intrinsics.Vector256<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.ConvertToDouble(System.Runtime.Intrinsics.Vector256<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.Create(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.Create(System.Double,System.Double,System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.CreateScalar(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.Floor(System.Runtime.Intrinsics.Vector256<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.Double>,System.Runtime.Intrinsics.Vector256<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.AsInt16`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.AsInt16`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.Create(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.Create(System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.CreateScalar(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.Int32>,System.Runtime.Intrinsics.Vector256<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Runtime.Intrinsics.Vector256<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.AsInt32`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.AsInt32`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.ConvertToInt32(System.Runtime.Intrinsics.Vector256<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.Create(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.Create(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.CreateScalar(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.Int64>,System.Runtime.Intrinsics.Vector256<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector256<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.Int32>,System.Runtime.Intrinsics.Vector256<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int32> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.AsInt64`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.AsInt64`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.ConvertToInt64(System.Runtime.Intrinsics.Vector256<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.Create(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.Create(System.Int64,System.Int64,System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.CreateScalar(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector256<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.Int64>,System.Runtime.Intrinsics.Vector256<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Int64> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.AsNInt`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.AsNInt`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.Create(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.CreateScalar(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector256<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.IntPtr> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.AsSByte`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.AsSByte`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Create(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.CreateScalar(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Runtime.Intrinsics.Vector256<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Runtime.Intrinsics.Vector256<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.AsSingle`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.AsSingle`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.Ceiling(System.Runtime.Intrinsics.Vector256<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.ConvertToSingle(System.Runtime.Intrinsics.Vector256<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.ConvertToSingle(System.Runtime.Intrinsics.Vector256<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.Create(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.Create(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.CreateScalar(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.Floor(System.Runtime.Intrinsics.Vector256<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.Double>,System.Runtime.Intrinsics.Vector256<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.Single>,System.Runtime.Intrinsics.Vector256<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.AsUInt16`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.AsUInt16`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Create(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Runtime.Intrinsics.Vector256<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.AsUInt32`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.AsUInt32`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.ConvertToUInt32(System.Runtime.Intrinsics.Vector256<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Create(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Create(System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Runtime.Intrinsics.Vector256<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Runtime.Intrinsics.Vector256<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.AsUInt64`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.AsUInt64`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.ConvertToUInt64(System.Runtime.Intrinsics.Vector256<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.Create(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.Create(System.UInt64,System.UInt64,System.UInt64,System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Runtime.Intrinsics.Vector256<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.AsNUInt`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.AsNUInt`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.Create(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256DebugView`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector256`1 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector256`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector512 | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector256.ToVector512Unsafe`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector256.ToVector512Unsafe`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector256.ToVector512`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector256.ToVector512`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Abs`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Add`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.AndNot`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.AsVector512`1(System.Numerics.Vector<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.AsVector512`1(System.Numerics.Vector<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.BitwiseAnd`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.BitwiseOr`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.ConditionalSelect`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Create`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Divide`1(System.Runtime.Intrinsics.Vector512<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Divide`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Equals`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.GreaterThan`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LessThan`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadAlignedNonTemporal`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadAligned`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadUnsafe`1(!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadUnsafe`1(!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Load`1(!0*) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Max`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Min`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Multiply`1(!0,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Multiply`1(System.Runtime.Intrinsics.Vector512<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Multiply`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Negate`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.OnesComplement`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Sqrt`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Subtract`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithElement`1(System.Runtime.Intrinsics.Vector512<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithElement`1(System.Runtime.Intrinsics.Vector512<!0>,System.Int32,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithLower`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithLower`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithUpper`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithUpper`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Xor`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.get_AllBitsSet() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.get_One() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.get_Zero() | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_Addition(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_BitwiseAnd(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_BitwiseOr(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_Division(System.Runtime.Intrinsics.Vector512<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_Division(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_ExclusiveOr(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_LeftShift(System.Runtime.Intrinsics.Vector512<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_Multiply(!0,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_Multiply(System.Runtime.Intrinsics.Vector512<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_Multiply(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_OnesComplement(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_RightShift(System.Runtime.Intrinsics.Vector512<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_Subtraction(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_UnaryNegation(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_UnaryPlus(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.op_UnsignedRightShift(System.Runtime.Intrinsics.Vector512<!0>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!1> System.Runtime.Intrinsics.Vector512.As`2(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<!1> System.Runtime.Intrinsics.Vector512.As`2(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.AsByte`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.AsByte`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.Create(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.Create(System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.Byte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Runtime.Intrinsics.Vector512<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.Byte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.Byte>,System.Runtime.Intrinsics.Vector512<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.AsDouble`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.AsDouble`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.Ceiling(System.Runtime.Intrinsics.Vector512<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.ConvertToDouble(System.Runtime.Intrinsics.Vector512<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.ConvertToDouble(System.Runtime.Intrinsics.Vector512<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.Create(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.Create(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.Double) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.Floor(System.Runtime.Intrinsics.Vector512<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.Double>,System.Runtime.Intrinsics.Vector512<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.AsInt16`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.AsInt16`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.Create(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.Create(System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16,System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.Int16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.Int32>,System.Runtime.Intrinsics.Vector512<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector512<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.Int16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.Int16>,System.Runtime.Intrinsics.Vector512<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.AsInt32`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.AsInt32`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.ConvertToInt32(System.Runtime.Intrinsics.Vector512<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.Create(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.Create(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.Int64>,System.Runtime.Intrinsics.Vector512<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector512<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.Int32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.Int32>,System.Runtime.Intrinsics.Vector512<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int32> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.AsInt64`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.AsInt64`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.ConvertToInt64(System.Runtime.Intrinsics.Vector512<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.Create(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.Create(System.Int64,System.Int64,System.Int64,System.Int64,System.Int64,System.Int64,System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.Int64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector512<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.Int64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.Int64>,System.Runtime.Intrinsics.Vector512<System.Int64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Int64> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.IntPtr> System.Runtime.Intrinsics.Vector512.AsNInt`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.IntPtr> System.Runtime.Intrinsics.Vector512.AsNInt`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.IntPtr> System.Runtime.Intrinsics.Vector512.Create(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.IntPtr> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.IntPtr> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.IntPtr> System.Runtime.Intrinsics.Vector512.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector512<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.IntPtr> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.IntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.AsSByte`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.AsSByte`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Create(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.SByte) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.Int16>,System.Runtime.Intrinsics.Vector512<System.Int16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Runtime.Intrinsics.Vector512<System.SByte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.AsSingle`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.AsSingle`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.Ceiling(System.Runtime.Intrinsics.Vector512<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.ConvertToSingle(System.Runtime.Intrinsics.Vector512<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.ConvertToSingle(System.Runtime.Intrinsics.Vector512<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.Create(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.Create(System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.Single) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.Floor(System.Runtime.Intrinsics.Vector512<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.Double>,System.Runtime.Intrinsics.Vector512<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.Single>,System.Runtime.Intrinsics.Vector512<System.Int32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.AsUInt16`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.AsUInt16`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Create(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UInt16) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Runtime.Intrinsics.Vector512<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Runtime.Intrinsics.Vector512<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.Byte>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.AsUInt32`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.AsUInt32`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.ConvertToUInt32(System.Runtime.Intrinsics.Vector512<System.Single>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Create(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Create(System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Runtime.Intrinsics.Vector512<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Runtime.Intrinsics.Vector512<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.UInt16>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.AsUInt64`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.AsUInt64`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.ConvertToUInt64(System.Runtime.Intrinsics.Vector512<System.Double>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.Create(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.Create(System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UInt64) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Runtime.Intrinsics.Vector512<System.UInt64>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.UInt32>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.AsNUInt`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.AsNUInt`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.Create(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UIntPtr>,System.Int32) | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512DebugView`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.Vector512`1 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.Vector512`1 | [IsReadOnlyAttribute(...)] | -| System.Runtime.Intrinsics.X86.Aes | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Aes.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx2 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx2.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512BW | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512BW.VL | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512BW.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512CD | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512CD.VL | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512CD.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512DQ | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512DQ.VL | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512DQ.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512F | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512F.VL | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512F.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512Vbmi | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512Vbmi.VL | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx512Vbmi.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Avx.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.AvxVnni | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.AvxVnni.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Bmi1 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Bmi1.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Bmi2 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Bmi2.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.FloatComparisonMode | [ConstantExpectedAttribute(...)] | -| System.Runtime.Intrinsics.X86.Fma | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Fma.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Lzcnt | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Lzcnt.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Pclmulqdq | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Pclmulqdq.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Popcnt | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Popcnt.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse2 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse2.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse3 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse3.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse41 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse41.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse42 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse42.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Sse.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Ssse3 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.Ssse3.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.X86Base | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.X86Base.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.X86Serialize | [IntrinsicAttribute(...)] | -| System.Runtime.Intrinsics.X86.X86Serialize.X64 | [IntrinsicAttribute(...)] | -| System.Runtime.Loader.AssemblyDependencyResolver.<>c__DisplayClass6_0 | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext System.Runtime.Loader.AssemblyLoadContext.<get_All>d__85.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext.<get_All>d__85 | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext.<get_Assemblies>d__55 | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext.AssemblyLoad | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext.AssemblyResolve | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext.ResourceResolve | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext.TypeResolve | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext._resolving | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext._resolvingUnmanagedDll | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.AssemblyLoadContext._unloading | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Loader.LibraryNameVariation System.Runtime.Loader.LibraryNameVariation.<DetermineLibraryNameVariations>d__5.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Runtime.Loader.LibraryNameVariation.<DetermineLibraryNameVariations>d__5 | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Serialization.DeserializationToken | [IsReadOnlyAttribute(...)] | -| System.Runtime.Serialization.DeserializationTracker.<DeserializationInProgress>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Serialization.SafeSerializationEventArgs.<StreamingContext>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Serialization.SerializationEntry | [IsReadOnlyAttribute(...)] | -| System.Runtime.Serialization.SerializationInfo.<AsyncDeserializationInProgress>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Serialization.SerializationInfo.<IsAssemblyNameSetExplicit>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Serialization.SerializationInfo.<IsFullTypeNameSetExplicit>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Serialization.SerializationInfo.t_deserializationTracker | [ThreadStaticAttribute(...)] | -| System.Runtime.Serialization.StreamingContext | [IsReadOnlyAttribute(...)] | -| System.Runtime.Serialization.StreamingContext System.Runtime.Serialization.SafeSerializationEventArgs.get_StreamingContext() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Serialization.StreamingContextStates | [FlagsAttribute(...)] | -| System.Runtime.TargetedPatchingOptOutAttribute.<Reason>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ComponentGuaranteesAttribute.<Guarantees>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ComponentGuaranteesOptions | [FlagsAttribute(...)] | -| System.Runtime.Versioning.ComponentGuaranteesOptions System.Runtime.Versioning.ComponentGuaranteesAttribute.get_Guarantees() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.OSPlatformAttribute.<PlatformName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ObsoletedOSPlatformAttribute.<Message>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ObsoletedOSPlatformAttribute.<Url>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.<Message>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.<Url>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ResourceConsumptionAttribute.<ConsumptionScope>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ResourceConsumptionAttribute.<ResourceScope>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ResourceExposureAttribute.<ResourceExposureLevel>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ResourceScope | [FlagsAttribute(...)] | -| System.Runtime.Versioning.ResourceScope System.Runtime.Versioning.ResourceConsumptionAttribute.get_ConsumptionScope() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ResourceScope System.Runtime.Versioning.ResourceConsumptionAttribute.get_ResourceScope() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.ResourceScope System.Runtime.Versioning.ResourceExposureAttribute.get_ResourceExposureLevel() | [CompilerGeneratedAttribute(...)] | -| System.Runtime.Versioning.SxSRequirements | [FlagsAttribute(...)] | -| System.Runtime.Versioning.UnsupportedOSPlatformAttribute.<Message>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.RuntimeArgumentHandle | [IsByRefLikeAttribute(...)] | -| System.RuntimeFieldHandle | [NonVersionableAttribute(...)] | -| System.RuntimeMethodHandle | [NonVersionableAttribute(...)] | -| System.RuntimeType System.Runtime.InteropServices.DynamicInterfaceCastableHelpers.GetInterfaceImplementation(System.Runtime.InteropServices.IDynamicInterfaceCastable,System.RuntimeType) | [StackTraceHiddenAttribute(...)] | -| System.RuntimeType System.RuntimeType.RuntimeTypeCache.<GetGenericTypeDefinition>g__CacheGenericDefinition\|50_0() | [CompilerGeneratedAttribute(...)] | -| System.RuntimeType.RuntimeTypeCache.Filter | [IsReadOnlyAttribute(...)] | -| System.RuntimeTypeHandle | [NonVersionableAttribute(...)] | -| System.RuntimeTypeHandle System.RuntimeType.get_TypeHandle() | [IntrinsicAttribute(...)] | -| System.RuntimeTypeHandle System.Type.get_TypeHandle() | [IntrinsicAttribute(...)] | -| System.SByte System.Math.Max(System.SByte,System.SByte) | [NonVersionableAttribute(...)] | -| System.SByte System.Math.Min(System.SByte,System.SByte) | [NonVersionableAttribute(...)] | -| System.SByte System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.SByte System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.SByte System.Threading.Volatile.Read(System.SByte) | [IntrinsicAttribute(...)] | -| System.SByte System.Threading.Volatile.Read(System.SByte) | [NonVersionableAttribute(...)] | -| System.Security.AllowPartiallyTrustedCallersAttribute.<PartialTrustVisibilityLevel>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.PartialTrustVisibilityLevel System.Security.AllowPartiallyTrustedCallersAttribute.get_PartialTrustVisibilityLevel() | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityAction System.Security.Permissions.SecurityAttribute.get_Action() | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityAttribute.<Action>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityAttribute.<Unrestricted>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<Assertion>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<BindingRedirects>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<ControlAppDomain>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<ControlDomainPolicy>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<ControlEvidence>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<ControlPolicy>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<ControlPrincipal>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<ControlThread>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<Execution>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<Flags>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<Infrastructure>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<RemotingConfiguration>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<SerializationFormatter>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<SkipVerification>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionAttribute.<UnmanagedCode>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.Permissions.SecurityPermissionFlag | [FlagsAttribute(...)] | -| System.Security.Permissions.SecurityPermissionFlag System.Security.Permissions.SecurityPermissionAttribute.get_Flags() | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityCriticalAttribute.<Scope>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityCriticalScope System.Security.SecurityCriticalAttribute.get_Scope() | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityElement.<>c | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<Demanded>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<DenySetInstance>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<FailedAssemblyInfo>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<GrantedSet>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<Method>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<PermissionState>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<PermissionType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<PermitOnlySetInstance>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<RefusedSet>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityException.<Url>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityRuleSet System.Security.SecurityRulesAttribute.get_RuleSet() | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityRulesAttribute.<RuleSet>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Security.SecurityRulesAttribute.<SkipVerificationInFullTrust>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Signature System.Reflection.Emit.DynamicMethod.<get_Signature>g__LazyCreateSignature\|23_0() | [CompilerGeneratedAttribute(...)] | -| System.Signature System.Reflection.RuntimeConstructorInfo.<get_Signature>g__LazyCreateSignature\|21_0() | [CompilerGeneratedAttribute(...)] | -| System.Signature System.Reflection.RuntimeMethodInfo.<get_Signature>g__LazyCreateSignature\|25_0() | [CompilerGeneratedAttribute(...)] | -| System.Single System.BitConverter.Int32BitsToSingle(System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.BitConverter.UInt32BitsToSingle(System.UInt32) | [IntrinsicAttribute(...)] | -| System.Single System.Diagnostics.Tracing.CounterPayload.get_IntervalSec() | [CompilerGeneratedAttribute(...)] | -| System.Single System.Diagnostics.Tracing.IncrementingCounterPayload.get_IntervalSec() | [CompilerGeneratedAttribute(...)] | -| System.Single System.Math.Abs(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Math.Max(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Math.Min(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.<CopySign>g__SoftwareFallback\|42_0(System.Single,System.Single) | [CompilerGeneratedAttribute(...)] | -| System.Single System.MathF.Abs(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Acos(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Acosh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Asin(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Asinh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Atan2(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Atan(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Atanh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Cbrt(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Ceiling(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Cos(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Cosh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Exp(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Floor(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.FusedMultiplyAdd(System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Log2(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Log10(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Log(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Max(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.MaxMagnitude(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Min(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.MinMagnitude(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Pow(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Round(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Sin(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Sinh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Sqrt(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Tan(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Tanh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.MathF.Truncate(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Matrix3x2.GetDeterminant() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Matrix3x2.Impl.GetDeterminant() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Matrix3x2.Impl.get_Item(System.Int32,System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Matrix3x2.get_Item(System.Int32,System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Matrix4x4.GetDeterminant() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Matrix4x4.Impl.GetDeterminant() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Matrix4x4.Impl.get_Item(System.Int32,System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Matrix4x4.get_Item(System.Int32,System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Plane.Dot(System.Numerics.Plane,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Quaternion.Dot(System.Numerics.Quaternion,System.Numerics.Quaternion) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Quaternion.Length() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Quaternion.Length() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Quaternion.LengthSquared() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Quaternion.LengthSquared() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Quaternion.get_Item(System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Quaternion.get_Item(System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector2.Distance(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector2.DistanceSquared(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector2.Dot(System.Numerics.Vector2,System.Numerics.Vector2) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector2.Length() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector2.Length() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector2.LengthSquared() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector2.LengthSquared() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector2.get_Item(System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector2.get_Item(System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector3.Distance(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector3.DistanceSquared(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector3.Dot(System.Numerics.Vector3,System.Numerics.Vector3) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector3.Length() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector3.Length() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector3.LengthSquared() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector3.LengthSquared() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector3.get_Item(System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector3.get_Item(System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector4.Distance(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector4.DistanceSquared(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector4.Dot(System.Numerics.Vector4,System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector4.Length() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector4.Length() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector4.LengthSquared() | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector4.LengthSquared() | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector4.get_Item(System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector4.get_Item(System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Quaternion,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Quaternion,System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Vector2,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Vector2,System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Vector3,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Vector3,System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Vector4,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Numerics.Vector.GetElement(System.Numerics.Vector4,System.Int32) | [IntrinsicAttribute(...)] | -| System.Single System.Numerics.Vector.GetElementUnsafe(System.Numerics.Quaternion,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Numerics.Vector.GetElementUnsafe(System.Numerics.Vector2,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Numerics.Vector.GetElementUnsafe(System.Numerics.Vector3,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Numerics.Vector.GetElementUnsafe(System.Numerics.Vector4,System.Int32) | [ExtensionAttribute(...)] | -| System.Single System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.Single System.Single.<RootN>g__NegativeN\|219_1(System.Single,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Single System.Single.<RootN>g__PositiveN\|219_0(System.Single,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Single System.Single.Abs(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Acos(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Acosh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Asin(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Asinh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Atan2(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Atan(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Atanh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Cbrt(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Ceiling(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Cos(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Cosh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Exp(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Floor(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.FusedMultiplyAdd(System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Log2(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Log10(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Log(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Max(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.MaxMagnitude(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.MaxMagnitudeNumber(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.MaxNumber(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Min(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.MinMagnitude(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.MinMagnitudeNumber(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.MinNumber(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Pow(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Round(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Sin(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Sinh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Sqrt(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Tan(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Tanh(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Single.Truncate(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Threading.Volatile.Read(System.Single) | [IntrinsicAttribute(...)] | -| System.Single System.Threading.Volatile.Read(System.Single) | [NonVersionableAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[]) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Index) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Int32) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Int32,System.Int32) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Range) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Index) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Int32) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Int32,System.Int32) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Range) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.TrimEnd`1(System.Span<!0>,!0) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.TrimEnd`1(System.Span<!0>,System.ReadOnlySpan<!0>) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.TrimStart`1(System.Span<!0>,!0) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.TrimStart`1(System.Span<!0>,System.ReadOnlySpan<!0>) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.Trim`1(System.Span<!0>,!0) | [ExtensionAttribute(...)] | -| System.Span<!0> System.MemoryExtensions.Trim`1(System.Span<!0>,System.ReadOnlySpan<!0>) | [ExtensionAttribute(...)] | -| System.Span<!0> System.Reflection.MethodBase.ArgumentData`1.AsSpan(System.Int32) | [UnscopedRefAttribute(...)] | -| System.Span<System.Char> System.MemoryExtensions.<Trim>g__TrimFallback\|228_0(System.Span<System.Char>) | [CompilerGeneratedAttribute(...)] | -| System.Span<System.Char> System.MemoryExtensions.Trim(System.Span<System.Char>) | [ExtensionAttribute(...)] | -| System.Span<System.Char> System.MemoryExtensions.TrimEnd(System.Span<System.Char>) | [ExtensionAttribute(...)] | -| System.Span<System.Char> System.MemoryExtensions.TrimStart(System.Span<System.Char>) | [ExtensionAttribute(...)] | -| System.SpanHelpers | [ExtensionAttribute(...)] | -| System.SpanHelpers.ComparerComparable`2 | [IsReadOnlyAttribute(...)] | -| System.SpanHelpers.DontNegate`1 | [IsReadOnlyAttribute(...)] | -| System.SpanHelpers.Negate`1 | [IsReadOnlyAttribute(...)] | -| System.Span`1 | [IsByRefLikeAttribute(...)] | -| System.Span`1 | [IsReadOnlyAttribute(...)] | -| System.Span`1 | [NonVersionableAttribute(...)] | -| System.Span`1.Enumerator | [IsByRefLikeAttribute(...)] | -| System.String System.ApplicationId.get_Culture() | [CompilerGeneratedAttribute(...)] | -| System.String System.ApplicationId.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.ApplicationId.get_ProcessorArchitecture() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.get_AssemblyName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.get_Condition() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.get_MemberSignature() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.get_TypeName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute.get_Justification() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_DiagnosticId() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.get_ParameterName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute.get_Url() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_Url() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_Url() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.get_Syntax() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_Category() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_CheckId() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_Justification() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_MessageId() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_Scope() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_Target() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Category() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_CheckId() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Justification() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_MessageId() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Scope() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Target() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.ConditionalAttribute.get_ConditionString() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerDisplayAttribute.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerDisplayAttribute.get_TargetTypeName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerDisplayAttribute.get_Type() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerDisplayAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerTypeProxyAttribute.get_ProxyTypeName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerTypeProxyAttribute.get_TargetTypeName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerVisualizerAttribute.get_Description() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerVisualizerAttribute.get_TargetTypeName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerVisualizerAttribute.get_VisualizerObjectSourceTypeName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.DebuggerVisualizerAttribute.get_VisualizerTypeName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.CounterPayload.get_CounterType() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.CounterPayload.get_DisplayName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.CounterPayload.get_DisplayUnits() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.CounterPayload.get_Metadata() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.CounterPayload.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.CounterPayload.get_Series() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.DiagnosticCounter.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.EventAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.EventDataAttribute.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.EventFieldAttribute.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.EventSourceAttribute.get_Guid() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.EventSourceAttribute.get_LocalizationResources() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.EventSourceAttribute.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.IncrementingCounterPayload.get_CounterType() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.IncrementingCounterPayload.get_DisplayName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.IncrementingCounterPayload.get_DisplayRateTimeScale() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.IncrementingCounterPayload.get_DisplayUnits() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.IncrementingCounterPayload.get_Metadata() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.IncrementingCounterPayload.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Diagnostics.Tracing.IncrementingCounterPayload.get_Series() | [CompilerGeneratedAttribute(...)] | -| System.String System.Enum.<ToString>g__HandleRareTypes\|55_0(System.RuntimeType,System.Byte) | [CompilerGeneratedAttribute(...)] | -| System.String System.Enum.<ToString>g__HandleRareTypes\|56_0(System.RuntimeType,System.Char,System.Byte) | [CompilerGeneratedAttribute(...)] | -| System.String System.IO.File.<IterateFileLinesAsync>d__110.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.String System.IO.FileLoadException.get_FileName() | [CompilerGeneratedAttribute(...)] | -| System.String System.IO.FileLoadException.get_FusionLog() | [CompilerGeneratedAttribute(...)] | -| System.String System.IO.FileNotFoundException.get_FileName() | [CompilerGeneratedAttribute(...)] | -| System.String System.IO.FileNotFoundException.get_FusionLog() | [CompilerGeneratedAttribute(...)] | -| System.String System.IO.Win32Marshal.<GetExceptionForWin32Error>g__GetPInvokeErrorMessage\|1_0(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.String System.Number.<FormatInt32>g__FormatInt32Slow\|41_0(System.Int32,System.Int32,System.String,System.IFormatProvider) | [CompilerGeneratedAttribute(...)] | -| System.String System.Number.<FormatInt64>g__FormatInt64Slow\|45_0(System.Int64,System.String,System.IFormatProvider) | [CompilerGeneratedAttribute(...)] | -| System.String System.Number.<FormatInt128>g__FormatInt128Slow\|49_0(System.Int128,System.String,System.IFormatProvider) | [CompilerGeneratedAttribute(...)] | -| System.String System.Number.<FormatUInt32>g__FormatUInt32Slow\|43_0(System.UInt32,System.String,System.IFormatProvider) | [CompilerGeneratedAttribute(...)] | -| System.String System.Number.<FormatUInt64>g__FormatUInt64Slow\|47_0(System.UInt64,System.String,System.IFormatProvider) | [CompilerGeneratedAttribute(...)] | -| System.String System.Number.<FormatUInt128>g__FormatUInt128Slow\|51_0(System.UInt128,System.String,System.IFormatProvider) | [CompilerGeneratedAttribute(...)] | -| System.String System.Number.<UInt32ToDecStrForKnownSmallNumber>g__CreateAndCacheString\|70_0(System.UInt32) | [CompilerGeneratedAttribute(...)] | -| System.String System.Numerics.Matrix3x2.ToString() | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Matrix4x4.ToString() | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Plane.ToString() | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Quaternion.ToString() | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector2.ToString() | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector2.ToString(System.String) | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector2.ToString(System.String,System.IFormatProvider) | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector3.ToString() | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector3.ToString(System.String) | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector3.ToString(System.String,System.IFormatProvider) | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector4.ToString() | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector4.ToString(System.String) | [IsReadOnlyAttribute(...)] | -| System.String System.Numerics.Vector4.ToString(System.String,System.IFormatProvider) | [IsReadOnlyAttribute(...)] | -| System.String System.ObsoleteAttribute.get_DiagnosticId() | [CompilerGeneratedAttribute(...)] | -| System.String System.ObsoleteAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.ObsoleteAttribute.get_UrlFormat() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyCompanyAttribute.get_Company() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyConfigurationAttribute.get_Configuration() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyCopyrightAttribute.get_Copyright() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyCultureAttribute.get_Culture() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyDefaultAliasAttribute.get_DefaultAlias() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyDescriptionAttribute.get_Description() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyFileVersionAttribute.get_Version() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyInformationalVersionAttribute.get_InformationalVersion() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyKeyFileAttribute.get_KeyFile() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyKeyNameAttribute.get_KeyName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyMetadataAttribute.get_Key() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyMetadataAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyProductAttribute.get_Product() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblySignatureKeyAttribute.get_Countersignature() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblySignatureKeyAttribute.get_PublicKey() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyTitleAttribute.get_Title() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyTrademarkAttribute.get_Trademark() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.AssemblyVersionAttribute.get_Version() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.DefaultMemberAttribute.get_MemberName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.ManifestResourceInfo.get_FileName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.ObfuscationAttribute.get_Feature() | [CompilerGeneratedAttribute(...)] | -| System.String System.Reflection.TypeNameParser.<ParseNamedTypeName>g__ApplyLeadingDotCompatQuirk\|25_0(System.String) | [CompilerGeneratedAttribute(...)] | -| System.String System.ResolveEventArgs.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Resources.NeutralResourcesLanguageAttribute.get_CultureName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Resources.SatelliteContractVersionAttribute.get_Version() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.AssemblyTargetedPatchBandAttribute.get_TargetedPatchBand() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.AccessedThroughPropertyAttribute.get_PropertyName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.CallerArgumentExpressionAttribute.get_ParameterName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.CollectionBuilderAttribute.get_MethodName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.get_FeatureName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.ContractHelper.RaiseContractFailedEvent(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception) | [DebuggerNonUserCodeAttribute(...)] | -| System.String System.Runtime.CompilerServices.DependencyAttribute.get_DependentAssembly() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.InternalsVisibleToAttribute.get_AssemblyName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.ReferenceAssemblyAttribute.get_Description() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.TypeForwardedFromAttribute.get_AssemblyFullName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.CompilerServices.UnsafeAccessorAttribute.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.BStrWrapper.get_WrappedObject() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.ComSourceInterfacesAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.DllImportAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.GuidAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.LibraryImportAttribute.get_EntryPoint() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.LibraryImportAttribute.get_LibraryName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.get_CountElementName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.OSPlatform.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.ProgIdAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.TypeIdentifierAttribute.get_Identifier() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.InteropServices.TypeIdentifierAttribute.get_Scope() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.TargetedPatchingOptOutAttribute.get_Reason() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.Versioning.OSPlatformAttribute.get_PlatformName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.Versioning.ObsoletedOSPlatformAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.Versioning.ObsoletedOSPlatformAttribute.get_Url() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.get_Url() | [CompilerGeneratedAttribute(...)] | -| System.String System.Runtime.Versioning.UnsupportedOSPlatformAttribute.get_Message() | [CompilerGeneratedAttribute(...)] | -| System.String System.Security.SecurityException.get_GrantedSet() | [CompilerGeneratedAttribute(...)] | -| System.String System.Security.SecurityException.get_PermissionState() | [CompilerGeneratedAttribute(...)] | -| System.String System.Security.SecurityException.get_RefusedSet() | [CompilerGeneratedAttribute(...)] | -| System.String System.Security.SecurityException.get_Url() | [CompilerGeneratedAttribute(...)] | -| System.String System.StringNormalizationExtensions.Normalize(System.String) | [ExtensionAttribute(...)] | -| System.String System.StringNormalizationExtensions.Normalize(System.String,System.Text.NormalizationForm) | [ExtensionAttribute(...)] | -| System.String System.Text.CodePageDataItem.get_BodyName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Text.CodePageDataItem.get_DisplayName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Text.CodePageDataItem.get_HeaderName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Text.CodePageDataItem.get_WebName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Text.CompositeFormat.get_Format() | [CompilerGeneratedAttribute(...)] | -| System.String System.Text.EncodingInfo.get_DisplayName() | [CompilerGeneratedAttribute(...)] | -| System.String System.Text.EncodingInfo.get_Name() | [CompilerGeneratedAttribute(...)] | -| System.StringComparer System.Globalization.GlobalizationExtensions.GetStringComparer(System.Globalization.CompareInfo,System.Globalization.CompareOptions) | [ExtensionAttribute(...)] | -| System.StringNormalizationExtensions | [ExtensionAttribute(...)] | -| System.StringSplitOptions | [FlagsAttribute(...)] | -| System.String[] System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.get_Members() | [CompilerGeneratedAttribute(...)] | -| System.String[] System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.get_Members() | [CompilerGeneratedAttribute(...)] | -| System.String[] System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute.get_Arguments() | [CompilerGeneratedAttribute(...)] | -| System.StubHelpers.StubHelpers.s_pendingExceptionObject | [ThreadStaticAttribute(...)] | -| System.TermInfo.ParameterizedStrings.FormatParam | [IsReadOnlyAttribute(...)] | -| System.TermInfo.ParameterizedStrings.FormatParam[] | [ParamArrayAttribute(...)] | -| System.TermInfo.ParameterizedStrings.t_cachedOneElementArgsArray | [ThreadStaticAttribute(...)] | -| System.TermInfo.ParameterizedStrings.t_cachedStack | [ThreadStaticAttribute(...)] | -| System.TermInfo.ParameterizedStrings.t_cachedTwoElementArgsArray | [ThreadStaticAttribute(...)] | -| System.Text.Ascii.PlainLoader`1 | [IsReadOnlyAttribute(...)] | -| System.Text.Ascii.WideningLoader | [IsReadOnlyAttribute(...)] | -| System.Text.CodePageDataItem.<BodyName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.CodePageDataItem.<DisplayName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.CodePageDataItem.<Flags>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.CodePageDataItem.<HeaderName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.CodePageDataItem.<UIFamilyCodePage>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.CodePageDataItem.<WebName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.CompositeFormat.<Format>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.Encoding System.Text.EncodingExtensions.RemovePreamble(System.Text.Encoding) | [ExtensionAttribute(...)] | -| System.Text.EncodingExtensions | [ExtensionAttribute(...)] | -| System.Text.EncodingInfo.<CodePage>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.EncodingInfo.<DisplayName>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.EncodingInfo.<Name>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.EncodingInfo.<Provider>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.EncodingProvider System.Text.EncodingInfo.get_Provider() | [CompilerGeneratedAttribute(...)] | -| System.Text.Rune | [IsReadOnlyAttribute(...)] | -| System.Text.SpanLineEnumerator | [IsByRefLikeAttribute(...)] | -| System.Text.SpanLineEnumerator System.MemoryExtensions.EnumerateLines(System.ReadOnlySpan<System.Char>) | [ExtensionAttribute(...)] | -| System.Text.SpanLineEnumerator System.MemoryExtensions.EnumerateLines(System.Span<System.Char>) | [ExtensionAttribute(...)] | -| System.Text.SpanRuneEnumerator | [IsByRefLikeAttribute(...)] | -| System.Text.SpanRuneEnumerator System.MemoryExtensions.EnumerateRunes(System.ReadOnlySpan<System.Char>) | [ExtensionAttribute(...)] | -| System.Text.SpanRuneEnumerator System.MemoryExtensions.EnumerateRunes(System.Span<System.Char>) | [ExtensionAttribute(...)] | -| System.Text.StringBuilder | [NotNullAttribute(...)] | -| System.Text.StringBuilder.AppendInterpolatedStringHandler | [InterpolatedStringHandlerAttribute(...)] | -| System.Text.StringBuilderCache.t_cachedInstance | [ThreadStaticAttribute(...)] | -| System.Text.TranscodingStream.<<DisposeAsync>g__DisposeAsyncCore\|30_0>d | [CompilerGeneratedAttribute(...)] | -| System.Text.TranscodingStream.<<ReadAsync>g__ReadAsyncCore\|41_0>d | [CompilerGeneratedAttribute(...)] | -| System.Text.TranscodingStream.<<WriteAsync>g__WriteAsyncCore\|50_0>d | [CompilerGeneratedAttribute(...)] | -| System.Text.TrimType | [FlagsAttribute(...)] | -| System.Text.Unicode.GraphemeClusterBreakType System.Text.Unicode.TextSegmentationUtility.Processor`1.get_CurrentType() | [CompilerGeneratedAttribute(...)] | -| System.Text.Unicode.GraphemeClusterBreakType System.Text.Unicode.TextSegmentationUtility.Processor`1.get_CurrentType() | [IsReadOnlyAttribute(...)] | -| System.Text.Unicode.TextSegmentationUtility.Processor`1 | [IsByRefLikeAttribute(...)] | -| System.Text.Unicode.TextSegmentationUtility.Processor`1.<CurrentCodeUnitOffset>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.Unicode.TextSegmentationUtility.Processor`1.<CurrentType>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [InterpolatedStringHandlerAttribute(...)] | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [IsByRefLikeAttribute(...)] | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [ScopedRefAttribute(...)] | -| System.Text.ValueStringBuilder | [IsByRefLikeAttribute(...)] | -| System.Text.ValueUtf8Converter | [IsByRefLikeAttribute(...)] | -| System.Threading.AsyncLocal<System.Boolean> System.Runtime.Serialization.SerializationInfo.get_AsyncDeserializationInProgress() | [CompilerGeneratedAttribute(...)] | -| System.Threading.AsyncLocalValueChangedArgs`1 | [IsReadOnlyAttribute(...)] | -| System.Threading.AsyncLocalValueChangedArgs`1.<CurrentValue>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.AsyncLocalValueChangedArgs`1.<PreviousValue>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.AsyncLocalValueChangedArgs`1.<ThreadContextChanged>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.AsyncLocalValueMap.<Empty>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.CancellationToken | [EnumeratorCancellationAttribute(...)] | -| System.Threading.CancellationToken | [IsReadOnlyAttribute(...)] | -| System.Threading.CancellationToken.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.CancellationTokenRegistration | [IsReadOnlyAttribute(...)] | -| System.Threading.CancellationTokenSource.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.CancellationTokenSource.CallbackNode.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.CancellationTokenSource.LinkedNCancellationTokenSource.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.CancellationTokenSource.Registrations.<WaitForCallbackToCompleteAsync>d__12 | [CompilerGeneratedAttribute(...)] | -| System.Threading.CancellationToken[] | [ParamArrayAttribute(...)] | -| System.Threading.EventWaitHandle | [NotNullAttribute(...)] | -| System.Threading.IAsyncLocalValueMap System.Threading.AsyncLocalValueMap.get_Empty() | [CompilerGeneratedAttribute(...)] | -| System.Threading.PeriodicTimer.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.PeriodicTimer.State.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.GateThread.<>O | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.HillClimbing.Complex | [IsReadOnlyAttribute(...)] | -| System.Threading.PortableThreadPool.HillClimbing.Complex.<Imaginary>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.HillClimbing.Complex.<Real>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.WaitThread System.Threading.PortableThreadPool.WaitThreadNode.get_Thread() | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.WaitThread System.Threading.RegisteredWaitHandle.get_WaitThread() | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.WaitThreadNode System.Threading.PortableThreadPool.WaitThreadNode.get_Next() | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.WaitThreadNode.<Next>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.WaitThreadNode.<Thread>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.WorkerThread.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.PortableThreadPool.t_completionCountObject | [ThreadStaticAttribute(...)] | -| System.Threading.ProcessorIdCache.t_currentProcessorIdCache | [ThreadStaticAttribute(...)] | -| System.Threading.QueueUserWorkItemCallback.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.ReaderWriterLockSlim.WaiterStates | [FlagsAttribute(...)] | -| System.Threading.ReaderWriterLockSlim.t_rwc | [ThreadStaticAttribute(...)] | -| System.Threading.RegisteredWaitHandle.<TimeoutTimeMs>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.RegisteredWaitHandle.<UserUnregisterWaitHandle>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.RegisteredWaitHandle.<UserUnregisterWaitHandleValue>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.RegisteredWaitHandle.<WaitThread>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.SemaphoreSlim.<WaitUntilCountOrTimeoutAsync>d__31 | [CompilerGeneratedAttribute(...)] | -| System.Threading.SynchronizationContext.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.AwaitTaskContinuation.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.CompletionState System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.<EnsureCompletionStateInitialized>g__InitializeCompletionState\|23_0() | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ConcurrentExclusiveTaskScheduler.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ProcessingMode | [FlagsAttribute(...)] | -| System.Threading.Tasks.ConfigureAwaitOptions | [FlagsAttribute(...)] | -| System.Threading.Tasks.InternalTaskOptions | [FlagsAttribute(...)] | -| System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags | [FlagsAttribute(...)] | -| System.Threading.Tasks.Sources.ValueTaskSourceStatus System.IO.File.<IterateFileLinesAsync>d__110.GetStatus(System.Int16) | [DebuggerHiddenAttribute(...)] | -| System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.<>O | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.<>c__DisplayClass6_0 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.SynchronizationContextTaskScheduler.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task System.IO.File.<WriteAllBytesAsync>g__Core\|92_0(System.String,System.Byte[],System.Threading.CancellationToken) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task System.IO.Stream.<CopyToAsync>g__Core\|27_0(System.IO.Stream,System.IO.Stream,System.Int32,System.Threading.CancellationToken) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task System.IO.StreamWriter.<FlushAsyncInternal>g__Core\|76_0(System.Boolean,System.Boolean,System.Threading.CancellationToken) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task System.IO.TextWriter.<WriteAsync>g__WriteAsyncCore\|60_0(System.Text.StringBuilder,System.Threading.CancellationToken) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task System.IO.TextWriter.<WriteLineAsync>g__WriteLineAsyncCore\|66_0(System.Text.StringBuilder,System.Threading.CancellationToken) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task System.Threading.Tasks.TaskExtensions.Unwrap(System.Threading.Tasks.Task<System.Threading.Tasks.Task>) | [ExtensionAttribute(...)] | -| System.Threading.Tasks.Task System.Threading.Tasks.ThreadPoolTaskScheduler.<FilterTasksFromWorkItems>d__6.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Threading.Tasks.Task.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task.<Factory>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task.CancellationPromise`1.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task.ContingentProperties System.Threading.Tasks.Task.<EnsureContingentPropertiesInitialized>g__InitializeContingentProperties\|81_0() | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task.DelayPromiseWithCancellation.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task.TaskStateFlags | [FlagsAttribute(...)] | -| System.Threading.Tasks.Task.WhenAllPromise.<>c__DisplayClass3_0 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task.t_currentTask | [ThreadStaticAttribute(...)] | -| System.Threading.Tasks.Task<!0> | [NotNullAttribute(...)] | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.TaskExtensions.Unwrap`1(System.Threading.Tasks.Task<System.Threading.Tasks.Task<!0>>) | [ExtensionAttribute(...)] | -| System.Threading.Tasks.Task<!0>[] | [ParamArrayAttribute(...)] | -| System.Threading.Tasks.TaskAsyncEnumerableExtensions | [ExtensionAttribute(...)] | -| System.Threading.Tasks.TaskAsyncEnumerableExtensions.<ToBlockingEnumerable>d__3`1 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskContinuationOptions | [FlagsAttribute(...)] | -| System.Threading.Tasks.TaskCreationOptions | [FlagsAttribute(...)] | -| System.Threading.Tasks.TaskExtensions | [ExtensionAttribute(...)] | -| System.Threading.Tasks.TaskFactory System.Threading.Tasks.Task.get_Factory() | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c__56`1 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c__67`1 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c__DisplayClass32_0 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c__DisplayClass35_0 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c__DisplayClass38_0`1 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c__DisplayClass41_0`2 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskFactory`1.<>c__DisplayClass44_0`3 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskScheduler.UnobservedTaskException | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskSchedulerAwaitTaskContinuation.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskToAsyncResult.TaskAsyncResult.<AsyncState>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.TaskToAsyncResult.TaskAsyncResult.<CompletedSynchronously>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.Task[] | [ParamArrayAttribute(...)] | -| System.Threading.Tasks.ThreadPoolTaskScheduler.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ThreadPoolTaskScheduler.<FilterTasksFromWorkItems>d__6 | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.UnwrapPromise`1.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ValueTask | [IsReadOnlyAttribute(...)] | -| System.Threading.Tasks.ValueTask System.IO.File.<IterateFileLinesAsync>d__110.DisposeAsync() | [DebuggerHiddenAttribute(...)] | -| System.Threading.Tasks.ValueTask System.Text.TranscodingStream.<DisposeAsync>g__DisposeAsyncCore\|30_0(System.ArraySegment<System.Byte>) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ValueTask System.Text.TranscodingStream.<WriteAsync>g__WriteAsyncCore\|50_0(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ValueTask System.Threading.CancellationTokenRegistration.<DisposeAsync>g__WaitForCallbackIfNecessaryAsync\|4_0(System.Int64,System.Threading.CancellationTokenSource.CallbackNode) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ValueTask<!0> | [IsReadOnlyAttribute(...)] | -| System.Threading.Tasks.ValueTask<System.Boolean> System.IO.File.<IterateFileLinesAsync>d__110.MoveNextAsync() | [DebuggerHiddenAttribute(...)] | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Stream.<ReadAsync>g__FinishReadAsync\|42_0(System.Threading.Tasks.Task<System.Int32>,System.Byte[],System.Memory<System.Byte>) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ValueTask<System.Int32> System.Text.TranscodingStream.<ReadAsync>g__ReadAsyncCore\|41_0(System.Memory<System.Byte>,System.Threading.CancellationToken) | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.ValueTask`1 | [IsReadOnlyAttribute(...)] | -| System.Threading.Tasks.ValueTask`1.ValueTaskSourceAsTask.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.Tasks.VoidTaskResult | [IsReadOnlyAttribute(...)] | -| System.Threading.Thread System.Threading.Thread.get_CurrentThread() | [IntrinsicAttribute(...)] | -| System.Threading.Thread.<OptimalMaxSpinWaitsPerSpinIteration>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.Thread.t_currentThread | [ThreadStaticAttribute(...)] | -| System.Threading.ThreadHandle | [IsReadOnlyAttribute(...)] | -| System.Threading.ThreadInt64PersistentCounter.t_nodeFinalizationHelpers | [ThreadStaticAttribute(...)] | -| System.Threading.ThreadLocal<System.Object> System.LocalDataStoreSlot.get_Data() | [CompilerGeneratedAttribute(...)] | -| System.Threading.ThreadLocal`1.ts_finalizationHelper | [ThreadStaticAttribute(...)] | -| System.Threading.ThreadLocal`1.ts_slotArray | [ThreadStaticAttribute(...)] | -| System.Threading.ThreadPool.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.ThreadPool.<GetQueuedWorkItems>d__26 | [CompilerGeneratedAttribute(...)] | -| System.Threading.ThreadPoolWorkQueueThreadLocals.threadLocals | [ThreadStaticAttribute(...)] | -| System.Threading.ThreadState | [FlagsAttribute(...)] | -| System.Threading.Timer.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.TimerQueue.<>O | [CompilerGeneratedAttribute(...)] | -| System.Threading.TimerQueue.<ActiveCount>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.TimerQueue.<GetTimersForDebugger>d__7 | [CompilerGeneratedAttribute(...)] | -| System.Threading.TimerQueue.<Instances>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.Threading.TimerQueueTimer System.Threading.TimerQueue.<GetTimersForDebugger>d__7.get_Current() | [DebuggerHiddenAttribute(...)] | -| System.Threading.TimerQueueTimer.<>c | [CompilerGeneratedAttribute(...)] | -| System.Threading.TimerQueue[] System.Threading.TimerQueue.get_Instances() | [CompilerGeneratedAttribute(...)] | -| System.Threading.WaitHandle.t_safeWaitHandlesForRent | [ThreadStaticAttribute(...)] | -| System.Threading.WaitHandleExtensions | [ExtensionAttribute(...)] | -| System.ThrowHelper | [StackTraceHiddenAttribute(...)] | -| System.TimeOnly | [IsReadOnlyAttribute(...)] | -| System.TimeOnly.<>c | [CompilerGeneratedAttribute(...)] | -| System.TimeProvider System.TimeProvider.get_System() | [CompilerGeneratedAttribute(...)] | -| System.TimeProvider.<System>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.TimeSpan | [IsReadOnlyAttribute(...)] | -| System.TimeSpan | [ScopedRefAttribute(...)] | -| System.TimeSpan System.Diagnostics.Tracing.IncrementingEventCounter.get_DisplayRateTimeScale() | [CompilerGeneratedAttribute(...)] | -| System.TimeSpan System.Diagnostics.Tracing.IncrementingPollingCounter.get_DisplayRateTimeScale() | [CompilerGeneratedAttribute(...)] | -| System.TimeZoneInfo.<>c | [CompilerGeneratedAttribute(...)] | -| System.TimeZoneInfo.<>c__DisplayClass187_0 | [CompilerGeneratedAttribute(...)] | -| System.TimeZoneInfo.<HasIanaId>k__BackingField | [CompilerGeneratedAttribute(...)] | -| System.TimeZoneInfo.AdjustmentRule | [NotNullAttribute(...)] | -| System.TimeZoneInfo.TZifHead | [IsReadOnlyAttribute(...)] | -| System.TimeZoneInfo.TZifType | [IsReadOnlyAttribute(...)] | -| System.TimeZoneInfo.TransitionTime | [IsReadOnlyAttribute(...)] | -| System.TimeZoneInfoOptions | [FlagsAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8,!9>> System.TupleExtensions.ToTuple`10(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8>> System.TupleExtensions.ToTuple`9(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7,!8>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7>> System.TupleExtensions.ToTuple`8(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!7,!8,!9>> System.TupleExtensions.ToTuple`11(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!7,!8,!9>> System.TupleExtensions.ToTuple`12(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!7,!8,!9>> System.TupleExtensions.ToTuple`13(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19,!20>>> System.TupleExtensions.ToTuple`21(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18,!19,!20>>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19>>> System.TupleExtensions.ToTuple`20(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18,!19>>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18>>> System.TupleExtensions.ToTuple`19(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18>>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17>>> System.TupleExtensions.ToTuple`18(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17>>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16>>> System.TupleExtensions.ToTuple`17(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16>>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15>>> System.TupleExtensions.ToTuple`16(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15>>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14>>> System.TupleExtensions.ToTuple`15(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14>>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9>> System.TupleExtensions.ToTuple`14(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6> System.TupleExtensions.ToTuple`7(System.ValueTuple<!0,!1,!2,!3,!4,!5,!6>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4,!5> System.TupleExtensions.ToTuple`6(System.ValueTuple<!0,!1,!2,!3,!4,!5>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3,!4> System.TupleExtensions.ToTuple`5(System.ValueTuple<!0,!1,!2,!3,!4>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2,!3> System.TupleExtensions.ToTuple`4(System.ValueTuple<!0,!1,!2,!3>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1,!2> System.TupleExtensions.ToTuple`3(System.ValueTuple<!0,!1,!2>) | [ExtensionAttribute(...)] | -| System.Tuple<!0,!1> System.TupleExtensions.ToTuple`2(System.ValueTuple<!0,!1>) | [ExtensionAttribute(...)] | -| System.Tuple<!0> System.TupleExtensions.ToTuple`1(System.ValueTuple<!0>) | [ExtensionAttribute(...)] | -| System.TupleExtensions | [ExtensionAttribute(...)] | -| System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.get_Type() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Object.GetType() | [IntrinsicAttribute(...)] | -| System.Type System.Reflection.Metadata.MetadataUpdateHandlerAttribute.get_HandlerType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Reflection.ModifiedFunctionPointerType.<GetFunctionPointerReturnType>g__Initialize\|4_0() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Reflection.ModifiedHasElementType.<GetElementType>g__Initialize\|2_0() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Reflection.NullabilityInfo.get_Type() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type) | [ExtensionAttribute(...)] | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type,System.Int32) | [ExtensionAttribute(...)] | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeByRefType(System.Type) | [ExtensionAttribute(...)] | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeGenericType(System.Type,System.Type[]) | [ExtensionAttribute(...)] | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakePointerType(System.Type) | [ExtensionAttribute(...)] | -| System.Type System.Reflection.SignatureTypeExtensions.TryResolve(System.Reflection.SignatureType,System.Type[]) | [ExtensionAttribute(...)] | -| System.Type System.Reflection.SignatureTypeExtensions.TryResolveAgainstGenericMethod(System.Reflection.SignatureType,System.Reflection.MethodInfo) | [ExtensionAttribute(...)] | -| System.Type System.Resources.ResourceReader.<FindType>g__UseReflectionToGetTypeLocal\|52_0(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.get_BuilderType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.CompilerServices.CollectionBuilderAttribute.get_BuilderType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.CompilerServices.FixedBufferAttribute.get_ElementType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.CompilerServices.MetadataUpdateOriginalTypeAttribute.get_OriginalType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.CompilerServices.StateMachineAttribute.get_StateMachineType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.CompilerServices.TypeForwardedToAttribute.get_Destination() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.CoClassAttribute.get_CoClass() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.ComDefaultInterfaceAttribute.get_Value() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.ComEventInterfaceAttribute.get_EventProvider() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.ComEventInterfaceAttribute.get_SourceInterface() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.LibraryImportAttribute.get_StringMarshallingCustomType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.get_ManagedType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.get_MarshallerType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.get_NativeType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute.get_NativeType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Security.SecurityException.get_PermissionType() | [CompilerGeneratedAttribute(...)] | -| System.Type System.Type.GetEnumUnderlyingType() | [IntrinsicAttribute(...)] | -| System.Type System.Type.GetTypeFromHandle(System.RuntimeTypeHandle) | [IntrinsicAttribute(...)] | -| System.Type.<>c | [CompilerGeneratedAttribute(...)] | -| System.Type[] | [ParamArrayAttribute(...)] | -| System.Type[] System.Diagnostics.Tracing.EventSource.EventMetadata.<get_ParameterTypes>g__GetParameterTypes\|22_0(System.Reflection.ParameterInfo[]) | [CompilerGeneratedAttribute(...)] | -| System.Type[] System.Reflection.ModifiedFunctionPointerType.<GetFunctionPointerParameterTypes>g__Initialize\|5_0() | [CompilerGeneratedAttribute(...)] | -| System.Type[] System.Reflection.ModifiedGenericType.<GetGenericArguments>g__Initialize\|2_0() | [CompilerGeneratedAttribute(...)] | -| System.Type[] System.Reflection.ReflectionTypeLoadException.get_Types() | [CompilerGeneratedAttribute(...)] | -| System.Type[] System.Reflection.TypeInfo.<get_DeclaredNestedTypes>g__GetDeclaredOnlyNestedTypes\|22_0(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.TypedReference | [IsByRefLikeAttribute(...)] | -| System.TypedReference | [NonVersionableAttribute(...)] | -| System.UInt16 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UInt16) | [IntrinsicAttribute(...)] | -| System.UInt16 System.Math.Max(System.UInt16,System.UInt16) | [NonVersionableAttribute(...)] | -| System.UInt16 System.Math.Min(System.UInt16,System.UInt16) | [NonVersionableAttribute(...)] | -| System.UInt16 System.Runtime.CompilerServices.RuntimeHelpers.GetElementSize(System.Array) | [ExtensionAttribute(...)] | -| System.UInt16 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt16 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt16 System.Threading.Volatile.Read(System.UInt16) | [IntrinsicAttribute(...)] | -| System.UInt16 System.Threading.Volatile.Read(System.UInt16) | [NonVersionableAttribute(...)] | -| System.UInt32 Interop.Kernel32.<GetEnvironmentVariable>g____PInvoke\|61_0(System.UInt16*,System.Char*,System.UInt32) | [CompilerGeneratedAttribute(...)] | -| System.UInt32 Interop.Kernel32.GetEnvironmentVariable(System.String,System.Char,System.UInt32) | [LibraryImportAttribute(...)] | -| System.UInt32 System.BitConverter.SingleToUInt32Bits(System.Single) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UInt32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Math.Max(System.UInt32,System.UInt32) | [NonVersionableAttribute(...)] | -| System.UInt32 System.Math.Min(System.UInt32,System.UInt32) | [NonVersionableAttribute(...)] | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.Byte) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.UInt16) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.UInt32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.UInt64) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Numerics.BitOperations.RotateLeft(System.UInt32,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Numerics.BitOperations.RotateRight(System.UInt32,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Reflection.Assembly.GetAssemblyCount() | [SuppressGCTransitionAttribute(...)] | -| System.UInt32 System.Reflection.AssemblyAlgorithmIdAttribute.get_AlgorithmId() | [CompilerGeneratedAttribute(...)] | -| System.UInt32 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt32 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt32 System.Runtime.Intrinsics.Vector64.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.UInt32 System.Runtime.Intrinsics.Vector64.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector64<!0>) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Runtime.Intrinsics.Vector128.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.UInt32 System.Runtime.Intrinsics.Vector128.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector128<!0>) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Runtime.Intrinsics.Vector256.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.UInt32 System.Runtime.Intrinsics.Vector256.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector256<!0>) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Text.CodePageDataItem.get_Flags() | [CompilerGeneratedAttribute(...)] | -| System.UInt32 System.Threading.Volatile.Read(System.UInt32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.Threading.Volatile.Read(System.UInt32) | [NonVersionableAttribute(...)] | -| System.UInt32 System.UInt32.LeadingZeroCount(System.UInt32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.UInt32.Log2(System.UInt32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.UInt32.PopCount(System.UInt32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.UInt32.RotateLeft(System.UInt32,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.UInt32.RotateRight(System.UInt32,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.UInt32.TrailingZeroCount(System.UInt32) | [IntrinsicAttribute(...)] | -| System.UInt32 System.UInt128.<op_Division>g__AddDivisor\|110_0(System.Span<System.UInt32>,System.ReadOnlySpan<System.UInt32>) | [CompilerGeneratedAttribute(...)] | -| System.UInt32 System.UInt128.<op_Division>g__SubtractDivisor\|110_3(System.Span<System.UInt32>,System.ReadOnlySpan<System.UInt32>,System.UInt64) | [CompilerGeneratedAttribute(...)] | -| System.UInt32 System.UIntPtr.ToUInt32() | [NonVersionableAttribute(...)] | -| System.UInt32 System.UIntPtr.op_Explicit(System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.UInt64 System.BitConverter.DoubleToUInt64Bits(System.Double) | [IntrinsicAttribute(...)] | -| System.UInt64 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UInt64) | [IntrinsicAttribute(...)] | -| System.UInt64 System.Marvin.get_DefaultSeed() | [CompilerGeneratedAttribute(...)] | -| System.UInt64 System.Math.<BigMul>g__SoftwareFallback\|49_0(System.UInt64,System.UInt64,System.UInt64) | [CompilerGeneratedAttribute(...)] | -| System.UInt64 System.Math.Max(System.UInt64,System.UInt64) | [NonVersionableAttribute(...)] | -| System.UInt64 System.Math.Min(System.UInt64,System.UInt64) | [NonVersionableAttribute(...)] | -| System.UInt64 System.Numerics.BitOperations.RotateLeft(System.UInt64,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt64 System.Numerics.BitOperations.RotateRight(System.UInt64,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt64 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt64 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt64 System.Runtime.Intrinsics.Vector512.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector512<!0>) | [ExtensionAttribute(...)] | -| System.UInt64 System.Runtime.Intrinsics.Vector512.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector512<!0>) | [IntrinsicAttribute(...)] | -| System.UInt64 System.Threading.Volatile.Read(System.UInt64) | [IntrinsicAttribute(...)] | -| System.UInt64 System.Threading.Volatile.Read(System.UInt64) | [NonVersionableAttribute(...)] | -| System.UInt64 System.UInt64.LeadingZeroCount(System.UInt64) | [IntrinsicAttribute(...)] | -| System.UInt64 System.UInt64.Log2(System.UInt64) | [IntrinsicAttribute(...)] | -| System.UInt64 System.UInt64.PopCount(System.UInt64) | [IntrinsicAttribute(...)] | -| System.UInt64 System.UInt64.RotateLeft(System.UInt64,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt64 System.UInt64.RotateRight(System.UInt64,System.Int32) | [IntrinsicAttribute(...)] | -| System.UInt64 System.UInt64.TrailingZeroCount(System.UInt64) | [IntrinsicAttribute(...)] | -| System.UInt64 System.UIntPtr.ToUInt64() | [NonVersionableAttribute(...)] | -| System.UInt64 System.UIntPtr.op_Explicit(System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.UInt128 | [IntrinsicAttribute(...)] | -| System.UInt128 | [IsReadOnlyAttribute(...)] | -| System.UInt128 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt128 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UInt128 System.UInt128.<op_Division>g__DivideSlow\|110_2(System.UInt128,System.UInt128) | [CompilerGeneratedAttribute(...)] | -| System.UIntPtr | [IsReadOnlyAttribute(...)] | -| System.UIntPtr | [RequiresLocationAttribute(...)] | -| System.UIntPtr System.Math.Max(System.UIntPtr,System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.Math.Min(System.UIntPtr,System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.Numerics.BitOperations.RotateLeft(System.UIntPtr,System.Int32) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.Numerics.BitOperations.RotateRight(System.UIntPtr,System.Int32) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.Threading.Volatile.Read(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.Threading.Volatile.Read(System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.Add(System.UIntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.LeadingZeroCount(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.UIntPtr.Log2(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.UIntPtr.PopCount(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.UIntPtr.RotateLeft(System.UIntPtr,System.Int32) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.UIntPtr.RotateRight(System.UIntPtr,System.Int32) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.UIntPtr.Subtract(System.UIntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.TrailingZeroCount(System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.UIntPtr System.UIntPtr.get_AllBitsSet() | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.get_MaxValue() | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.get_MinValue() | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.op_Addition(System.UIntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.op_Explicit(System.UInt32) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.op_Explicit(System.UInt64) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.op_Explicit(System.Void*) | [NonVersionableAttribute(...)] | -| System.UIntPtr System.UIntPtr.op_Subtraction(System.UIntPtr,System.Int32) | [NonVersionableAttribute(...)] | -| System.UIntPtr.Zero | [IntrinsicAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7,!8,!9>> System.TupleExtensions.ToValueTuple`10(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7,!8>> System.TupleExtensions.ToValueTuple`9(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7>> System.TupleExtensions.ToValueTuple`8(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!7,!8,!9>> System.TupleExtensions.ToValueTuple`11(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!7,!8,!9>> System.TupleExtensions.ToValueTuple`12(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!7,!8,!9>> System.TupleExtensions.ToValueTuple`13(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18,!19,!20>>> System.TupleExtensions.ToValueTuple`21(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19,!20>>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18,!19>>> System.TupleExtensions.ToValueTuple`20(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19>>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18>>> System.TupleExtensions.ToValueTuple`19(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18>>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17>>> System.TupleExtensions.ToValueTuple`18(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17>>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16>>> System.TupleExtensions.ToValueTuple`17(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16>>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15>>> System.TupleExtensions.ToValueTuple`16(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15>>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14>>> System.TupleExtensions.ToValueTuple`15(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14>>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9>> System.TupleExtensions.ToValueTuple`14(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9>>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6> System.TupleExtensions.ToValueTuple`7(System.Tuple<!0,!1,!2,!3,!4,!5,!6>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5> System.TupleExtensions.ToValueTuple`6(System.Tuple<!0,!1,!2,!3,!4,!5>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3,!4> System.TupleExtensions.ToValueTuple`5(System.Tuple<!0,!1,!2,!3,!4>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2,!3> System.TupleExtensions.ToValueTuple`4(System.Tuple<!0,!1,!2,!3>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1,!2> System.TupleExtensions.ToValueTuple`3(System.Tuple<!0,!1,!2>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0,!1> System.TupleExtensions.ToValueTuple`2(System.Tuple<!0,!1>) | [ExtensionAttribute(...)] | -| System.ValueTuple<!0> System.TupleExtensions.ToValueTuple`1(System.Tuple<!0>) | [ExtensionAttribute(...)] | -| System.ValueTuple<System.Byte,System.Byte> System.Math.DivRem(System.Byte,System.Byte) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.ConsoleKey,System.ConsoleModifiers> System.IO.KeyParser.<TryParseTerminalInputSequence>g__MapKeyIdOXterm\|7_0(System.Char,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.ValueTuple<System.ConsoleKey,System.ConsoleModifiers> System.IO.KeyParser.<TryParseTerminalInputSequence>g__MapSCO\|7_1(System.Char) | [CompilerGeneratedAttribute(...)] | -| System.ValueTuple<System.Int16,System.Int16> System.Math.DivRem(System.Int16,System.Int16) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.Int32,System.Int32> System.Math.DivRem(System.Int32,System.Int32) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.Int64,System.Int64> System.Math.DivRem(System.Int64,System.Int64) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.IntPtr,System.IntPtr> System.Math.DivRem(System.IntPtr,System.IntPtr) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.SByte,System.SByte> System.Math.DivRem(System.SByte,System.SByte) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.UInt16,System.UInt16> System.Math.DivRem(System.UInt16,System.UInt16) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.UInt32,System.UInt32> System.Math.DivRem(System.UInt32,System.UInt32) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.UInt64,System.UInt64> System.Math.DivRem(System.UInt64,System.UInt64) | [NonVersionableAttribute(...)] | -| System.ValueTuple<System.UIntPtr,System.UIntPtr> System.Math.DivRem(System.UIntPtr,System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.Version System.ApplicationId.get_Version() | [CompilerGeneratedAttribute(...)] | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssembly>g__LoadAssemblyLocal\|14_0(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssemblyBytes>g__LoadAssemblyBytesLocal\|16_0(System.ReadOnlySpan<System.Byte>,System.ReadOnlySpan<System.Byte>) | [CompilerGeneratedAttribute(...)] | -| System.Void Interop.Globalization.<ChangeCase>g____PInvoke\|6_0(System.Char*,System.Int32,System.Char*,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void Interop.Globalization.<ChangeCaseInvariant>g____PInvoke\|7_0(System.Char*,System.Int32,System.Char*,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void Interop.Globalization.<ChangeCaseTurkish>g____PInvoke\|8_0(System.Char*,System.Int32,System.Char*,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void Interop.Globalization.<InitICUFunctions>g____PInvoke\|23_0(System.IntPtr,System.IntPtr,System.Byte*,System.Byte*) | [CompilerGeneratedAttribute(...)] | -| System.Void Interop.Globalization.ChangeCase(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [LibraryImportAttribute(...)] | -| System.Void Interop.Globalization.ChangeCaseInvariant(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [LibraryImportAttribute(...)] | -| System.Void Interop.Globalization.ChangeCaseTurkish(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [LibraryImportAttribute(...)] | -| System.Void Interop.Globalization.InitICUFunctions(System.IntPtr,System.IntPtr,System.String,System.String) | [LibraryImportAttribute(...)] | -| System.Void Interop.Globalization.InitOrdinalCasingPage(System.Int32,System.Char*) | [LibraryImportAttribute(...)] | -| System.Void Microsoft.Win32.SafeHandles.SafeFileHandle.set_IsAsync(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppContext.<LogSwitchValues>g__LogDataStore\|23_0(System.Diagnostics.Tracing.RuntimeEventSource,System.Collections.Generic.Dictionary<System.Boolean,System.String>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppContext.add_FirstChanceException(System.EventHandler<System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppContext.add_ProcessExit(System.EventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppContext.add_UnhandledException(System.UnhandledExceptionEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppContext.remove_FirstChanceException(System.EventHandler<System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppContext.remove_ProcessExit(System.EventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppContext.remove_UnhandledException(System.UnhandledExceptionEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppDomain.add_DomainUnload(System.EventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppDomain.add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppDomain.remove_DomainUnload(System.EventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.AppDomain.remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.ArgumentException.ThrowNullOrEmptyException(System.String,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentException.ThrowNullOrWhiteSpaceException(System.String,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentNullException.Throw(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowEqual`1(!0,!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowGreaterEqual`1(!0,!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowGreater`1(!0,!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowLessEqual`1(!0,!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowLess`1(!0,!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowNegativeOrZero`1(!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowNegative`1(!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowNotEqual`1(!0,!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ArgumentOutOfRangeException.ThrowZero`1(!0,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.Array.<Sort>g__GenericSort\|131_0`1(System.Array,System.Array,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Buffer.Memmove(System.Byte,System.Byte,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Buffer.Memmove`1(!0,!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Buffers.ArrayPoolEventSource.BufferAllocated(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferAllocatedReason) | [EventAttribute(...)] | -| System.Void System.Buffers.ArrayPoolEventSource.BufferDropped(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferDroppedReason) | [EventAttribute(...)] | -| System.Void System.Buffers.ArrayPoolEventSource.BufferRented(System.Int32,System.Int32,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Buffers.ArrayPoolEventSource.BufferReturned(System.Int32,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Buffers.ArrayPoolEventSource.BufferTrimPoll(System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Buffers.ArrayPoolEventSource.BufferTrimmed(System.Int32,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Buffers.Binary.BinaryPrimitives.ThrowDestinationTooSmall() | [DoesNotReturnAttribute(...)] | -| System.Void System.Char.ConvertToUtf32_ThrowInvalidArgs(System.UInt32) | [StackTraceHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<OutputTabsAsync>d__23.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__37.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__38.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__39.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__40.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__41.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__59.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__60.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__61.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__62.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__63.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__64.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Collections.Concurrent.ConcurrentQueue`1.<Enumerate>d__26..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Collections.Concurrent.ConcurrentQueue`1.<Enumerate>d__26.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Collections.Concurrent.ConcurrentQueue`1.<Enumerate>d__26.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.<GetEnumerator>d__15..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.<GetEnumerator>d__15.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.<GetEnumerator>d__15.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Collections.Generic.CollectionExtensions.AddRange`1(System.Collections.Generic.List<!0>,System.ReadOnlySpan<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Collections.Generic.CollectionExtensions.CopyTo`1(System.Collections.Generic.List<!0>,System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Collections.Generic.CollectionExtensions.InsertRange`1(System.Collections.Generic.List<!0>,System.Int32,System.ReadOnlySpan<!0>) | [ExtensionAttribute(...)] | -| System.Void System.ConsoleCancelEventArgs.set_Cancel(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.ConsolePal.<TryGetCursorPosition>g__ReadRowOrCol\|82_3(System.Int32,System.Int32,System.IO.StdInReader,System.ReadOnlySpan<System.Byte>,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.ConsolePal.<TryGetCursorPosition>g__TransferBytes\|82_0(System.ReadOnlySpan<System.Byte>,System.IO.StdInReader) | [CompilerGeneratedAttribute(...)] | -| System.Void System.ConsolePal.InvalidateTerminalSettings() | [UnmanagedCallersOnlyAttribute(...)] | -| System.Void System.Convert.ThrowByteOverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowCharOverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowInt16OverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowInt32OverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowInt64OverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowSByteOverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowUInt16OverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowUInt32OverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Convert.ThrowUInt64OverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.DateOnly.<AddDays>g__ThrowOutOfRange\|25_0() | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Max(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute.set_Min(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute.set_Condition(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute.set_Justification(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute.set_Url(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_Url(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_Url(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.set_Justification(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.set_MessageId(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.set_Scope(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.set_Target(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.set_Justification(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.set_MessageId(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.set_Scope(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.set_Target(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Contracts.Contract.ReportFailure(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.Diagnostics.Debug.Fail(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.Diagnostics.Debug.Fail(System.String,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.Diagnostics.DebugProvider.Fail(System.String,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.Diagnostics.Debugger.<LogInternal>g____PInvoke\|11_0(System.Int32,System.UInt16*,System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Debugger.LogInternal(System.Int32,System.String,System.String) | [LibraryImportAttribute(...)] | -| System.Void System.Diagnostics.DebuggerDisplayAttribute.set_Name(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.DebuggerDisplayAttribute.set_TargetTypeName(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.DebuggerDisplayAttribute.set_Type(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.DebuggerTypeProxyAttribute.set_TargetTypeName(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute.set_Description(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute.set_TargetTypeName(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.<get_ForEnumeration>d__51..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.<get_ForEnumeration>d__51.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.<get_ForEnumeration>d__51.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_Count(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_CounterType(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_DisplayName(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_DisplayUnits(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_IntervalSec(System.Single) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_Max(System.Double) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_Mean(System.Double) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_Metadata(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_Min(System.Double) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_Name(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_Series(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayload.set_StandardDeviation(System.Double) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.CounterPayloadType.set_Payload(System.Diagnostics.Tracing.CounterPayload) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_ActivityOptions(System.Diagnostics.Tracing.EventActivityOptions) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_Channel(System.Diagnostics.Tracing.EventChannel) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_EventId(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_Keywords(System.Diagnostics.Tracing.EventKeywords) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_Level(System.Diagnostics.Tracing.EventLevel) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_Message(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_Tags(System.Diagnostics.Tracing.EventTags) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_Task(System.Diagnostics.Tracing.EventTask) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventAttribute.set_Version(System.Byte) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventChannelAttribute.set_Enabled(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventChannelAttribute.set_EventChannelType(System.Diagnostics.Tracing.EventChannelType) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventCommandEventArgs.set_Arguments(System.Collections.Generic.IDictionary<System.String,System.String>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventCommandEventArgs.set_Command(System.Diagnostics.Tracing.EventCommand) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventDataAttribute.set_Name(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventFieldAttribute.set_Format(System.Diagnostics.Tracing.EventFieldFormat) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventFieldAttribute.set_Tags(System.Diagnostics.Tracing.EventFieldTags) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventListener.add_EventWritten(System.EventHandler<System.Diagnostics.Tracing.EventWrittenEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventListener.remove_EventWritten(System.EventHandler<System.Diagnostics.Tracing.EventWrittenEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventPayload.<GetEnumerator>d__17..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventPayload.<GetEnumerator>d__17.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventPayload.<GetEnumerator>d__17.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventPipeEventDispatcher.EventListenerSubscription.set_Level(System.Diagnostics.Tracing.EventLevel) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventPipeEventDispatcher.EventListenerSubscription.set_MatchAnyKeywords(System.Diagnostics.Tracing.EventKeywords) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventPipeEventProvider.Callback(System.Byte*,System.Int32,System.Byte,System.Int64,System.Int64,Interop.Advapi32.EVENT_FILTER_DESCRIPTOR*,System.Void*) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventSource.WriteCleanup(System.Runtime.InteropServices.GCHandle*,System.Int32) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventSourceAttribute.set_Guid(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventSourceAttribute.set_LocalizationResources(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventSourceAttribute.set_Name(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventSourceCreatedEventArgs.set_EventSource(System.Diagnostics.Tracing.EventSource) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventWrittenEventArgs.set_Payload(System.Collections.ObjectModel.ReadOnlyCollection<System.Object>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.EventWrittenEventArgs.set_TimeStamp(System.DateTime) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadPoolDequeueWork(System.Int64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadPoolDequeueWorkObject(System.Object) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadPoolEnqueueWork(System.Int64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadPoolEnqueueWorkObject(System.Object) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadTransferReceive(System.Int64,System.Int32,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadTransferReceiveObj(System.Object,System.Int32,System.String) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadTransferSend(System.Int64,System.Int32,System.String,System.Boolean,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.ThreadTransferSendObj(System.Object,System.Int32,System.String,System.Boolean,System.Int32,System.Int32) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String,System.Boolean,System.Int32,System.Int32) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.<get_ForEnumeration>d__39..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.<get_ForEnumeration>d__39.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.<get_ForEnumeration>d__39.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_CounterType(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_DisplayName(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_DisplayRateTimeScale(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_DisplayUnits(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_Increment(System.Double) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_IntervalSec(System.Single) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_Metadata(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_Name(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingCounterPayload.set_Series(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingEventCounter.set_DisplayRateTimeScale(System.TimeSpan) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingEventCounterPayloadType.set_Payload(System.Diagnostics.Tracing.IncrementingCounterPayload) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingPollingCounter.set_DisplayRateTimeScale(System.TimeSpan) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.IncrementingPollingCounterPayloadType.set_Payload(System.Diagnostics.Tracing.IncrementingCounterPayload) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.<LogThreadPoolIOEnqueue>g____PInvoke\|10_0(System.IntPtr,System.IntPtr,System.Int32,System.UInt16) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AppDomainAssemblyResolveHandlerInvoked(System.UInt16,System.String,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AppDomainLoad_V1(System.UInt64,System.UInt32,System.String,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AppDomainMemAllocated(System.UInt64,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AppDomainMemSurvived(System.UInt64,System.UInt64,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AppDomainUnload_V1(System.UInt64,System.UInt32,System.String,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AssemblyLoadContextResolvingHandlerInvoked(System.UInt16,System.String,System.String,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AssemblyLoadFromResolveHandlerInvoked(System.UInt16,System.String,System.Boolean,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AssemblyLoadStart(System.UInt16,System.String,System.String,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AssemblyLoadStop(System.UInt16,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.String,System.String,System.Boolean) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AssemblyLoad_V1(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AssemblyUnload_V1(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AuthenticodeVerificationStart_V1(System.UInt32,System.UInt32,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.AuthenticodeVerificationStop_V1(System.UInt32,System.UInt32,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.BulkType(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.CLRStackWalk(System.UInt16,System.Byte,System.Byte,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.CodeSymbols(System.UInt64,System.UInt16,System.UInt16,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionLockCreated(System.IntPtr,System.IntPtr,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionStart(System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionFlagsMap,System.UInt16,System.IntPtr,System.IntPtr,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionStop(System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionFlagsMap,System.UInt16,System.Double) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionStop(System.Double) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DCEndCompleteV2() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DCStartCompleteV2() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DebugExceptionProcessingEnd() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DebugExceptionProcessingStart() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DebugIPCEventEnd() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DebugIPCEventStart() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DecreaseMemoryPressure(System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DestroyGCHandle(System.IntPtr,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.DomainModuleLoad_V1(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.String,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.EventSource(System.Int32,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionCatchStart(System.UInt64,System.UInt64,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionCatchStop() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionFilterStart(System.UInt64,System.UInt64,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionFilterStop() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionFinallyStart(System.UInt64,System.UInt64,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionFinallyStop() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionThrownStop() | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExceptionThrown_V1(System.String,System.String,System.IntPtr,System.UInt32,System.UInt16,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ExecutionCheckpoint(System.UInt16,System.String,System.Int64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.FinalizeObject(System.IntPtr,System.IntPtr,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCAllocationTick_V4(System.UInt32,System.UInt32,System.UInt16,System.UInt64,System.IntPtr,System.String,System.UInt32,System.IntPtr,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkEdge(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkMovedObjectRanges(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkNode(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkRCW(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkRootCCW(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkRootConditionalWeakTableElementEdge(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkRootEdge(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkRootStaticVar(System.UInt32,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCBulkSurvivingObjectRanges(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCCreateConcurrentThread_V1(System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCCreateSegment_V1(System.UInt64,System.UInt64,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCDynamicEvent(System.String,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCEnd_V1(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCFinalizersBegin_V1(System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCFinalizersEnd_V1(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCFitBucketInfo(System.UInt16,System.UInt16,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCFreeSegment_V1(System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCGenerationRange(System.Byte,System.IntPtr,System.UInt64,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCGlobalHeapHistory_V4(System.UInt64,System.Int32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt16,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCHeapStats_V2(System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.UInt16,System.UInt64,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCJoin_V2(System.UInt32,System.UInt32,System.UInt32,System.UInt16,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCLOHCompact(System.UInt16,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCMarkFinalizeQueueRoots(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCMarkHandles(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCMarkOlderGenerationRoots(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCMarkStackRoots(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCMarkWithType(System.UInt32,System.UInt16,System.UInt32,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCPerHeapHistory_V3(System.UInt16,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.IntPtr,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCRestartEEBegin_V1(System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCRestartEEEnd_V1(System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCSampledObjectAllocationHigh(System.IntPtr,System.IntPtr,System.UInt32,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCSampledObjectAllocationLow(System.IntPtr,System.IntPtr,System.UInt32,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCStart_V2(System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt16,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCSuspendEEBegin_V1(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCSuspendEEEnd_V1(System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCTerminateConcurrentThread_V1(System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GCTriggered(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GenAwareBegin(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.GenAwareEnd(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ILStubCacheHit(System.UInt16,System.UInt64,System.UInt64,System.UInt32,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ILStubGenerated(System.UInt16,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.String,System.String,System.String,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.IOThreadCreate_V1(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.IOThreadRetire_V1(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.IOThreadTerminate_V1(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.IOThreadUnretire_V1(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.IncreaseMemoryPressure(System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.JitInstrumentationData(System.UInt16,System.UInt32,System.UInt32,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.JitInstrumentationDataVerbose(System.UInt16,System.UInt32,System.UInt32,System.UInt64,System.UInt64,System.UInt32,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.KnownPathProbed(System.UInt16,System.String,System.UInt16,System.Int32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogContentionLockCreated(System.IntPtr,System.IntPtr,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogContentionStart(System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionFlagsMap,System.UInt16,System.IntPtr,System.IntPtr,System.UInt64) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogContentionStop(System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionFlagsMap,System.UInt16,System.Double) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIODequeue(System.IntPtr,System.IntPtr,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIOEnqueue(System.IntPtr,System.IntPtr,System.Boolean,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIOPack(System.IntPtr,System.IntPtr,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolMinMaxThreads(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadAdjustmentAdjustment(System.Double,System.UInt32,System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadAdjustmentReasonMap,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadAdjustmentSample(System.Double,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadAdjustmentStats(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.UInt16,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadStart(System.UInt32,System.UInt32,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadStop(System.UInt32,System.UInt32,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadWait(System.UInt32,System.UInt32,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkingThreadCount(System.UInt32,System.UInt16) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodDCEndV2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodDCEndVerboseV2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodDCStartV2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodDCStartVerboseV2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodDetails(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodILToNativeMap_V1(System.UInt64,System.UInt64,System.Byte,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJitInliningFailed(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJitInliningFailedAnsi(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJitInliningSucceeded(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJitMemoryAllocatedForCode(System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJitTailCallFailed(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJitTailCallFailedAnsi(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJitTailCallSucceeded(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Boolean,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodJittingStarted_V1(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.String,System.String,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodLoadVerbose_V2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.String,System.String,System.String,System.UInt16,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodLoad_V2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.UInt16,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodUnloadVerbose_V2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.String,System.String,System.String,System.UInt16,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.MethodUnload_V2(System.UInt64,System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.UInt16,System.UInt64) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ModuleDCEndV2(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ModuleDCStartV2(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ModuleLoad_V2(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.String,System.String,System.UInt16,System.Guid,System.UInt32,System.String,System.Guid,System.UInt32,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ModuleRangeLoad(System.UInt16,System.UInt64,System.UInt32,System.UInt32,System.Byte) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ModuleUnload_V2(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.String,System.String,System.UInt16,System.Guid,System.UInt32,System.String,System.Guid,System.UInt32,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.PinObjectAtGCTime(System.IntPtr,System.IntPtr,System.UInt64,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ProcessEvent(System.UInt32,System.UInt32,System.DateTime,System.Guid,System.Guid,System.ReadOnlySpan<System.Byte>) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ProfilerMessage(System.UInt16,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.R2RGetEntryPoint(System.UInt64,System.String,System.String,System.String,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.R2RGetEntryPointStart(System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ResolutionAttempted(System.UInt16,System.String,System.UInt16,System.String,System.UInt16,System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.RuntimeInformationStart(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt32,System.Byte,System.String,System.Guid,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.SetGCHandle(System.IntPtr,System.IntPtr,System.UInt32,System.UInt32,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.StrongNameVerificationStart_V1(System.UInt32,System.UInt32,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.StrongNameVerificationStop_V1(System.UInt32,System.UInt32,System.String,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadCreated(System.UInt64,System.UInt64,System.UInt32,System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadCreating(System.IntPtr,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadDomainEnter(System.UInt64,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIODequeue(System.IntPtr,System.IntPtr,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIODequeue(System.Threading.NativeOverlapped*) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIODequeue(System.Threading.RegisteredWaitHandle) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIOEnqueue(System.IntPtr,System.IntPtr,System.Boolean,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIOEnqueue(System.Threading.NativeOverlapped*) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIOEnqueue(System.Threading.RegisteredWaitHandle) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIOPack(System.IntPtr,System.IntPtr,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolIOPack(System.Threading.NativeOverlapped*) | [NonEventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolMinMaxThreads(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolWorkerThreadAdjustmentAdjustment(System.Double,System.UInt32,System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadAdjustmentReasonMap,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolWorkerThreadAdjustmentSample(System.Double,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolWorkerThreadAdjustmentStats(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.UInt16,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolWorkerThreadStart(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolWorkerThreadStop(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolWorkerThreadWait(System.UInt32,System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadPoolWorkingThreadCount(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadRunning(System.IntPtr,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadTerminated(System.UInt64,System.UInt64,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadpoolSuspensionResumeThread(System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadpoolSuspensionSuspendThread(System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.TieredCompilationBackgroundJitStart(System.UInt16,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.TieredCompilationBackgroundJitStop(System.UInt16,System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.TieredCompilationPause(System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.TieredCompilationResume(System.UInt16,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.TieredCompilationSettings(System.UInt16,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.TypeLoadStart(System.UInt32,System.UInt16) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.TypeLoadStop(System.UInt32,System.UInt16,System.UInt16,System.UInt64,System.String) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.WorkerThreadCreate(System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.WorkerThreadRetire(System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.WorkerThreadTerminate(System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.WorkerThreadUnretire(System.UInt32,System.UInt32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.YieldProcessorMeasurement(System.UInt16,System.Double,System.Double) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.PollingPayloadType.set_Payload(System.Diagnostics.Tracing.CounterPayload) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Diagnostics.Tracing.RuntimeEventSource.LogAppContextSwitch(System.String,System.Int32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.RuntimeEventSource.ProcessorCount(System.Int32) | [EventAttribute(...)] | -| System.Void System.Diagnostics.Tracing.TraceLoggingMetadataCollector.set_Tags(System.Diagnostics.Tracing.EventFieldTags) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Enum.ThrowInvalidRuntimeType(System.Type) | [DoesNotReturnAttribute(...)] | -| System.Void System.Environment.Exit(System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.Environment.FailFast(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.Environment.FailFast(System.String,System.Exception) | [DoesNotReturnAttribute(...)] | -| System.Void System.Environment.FailFast(System.String,System.Exception,System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.Environment._Exit(System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.Exception.<ToString>g__Write\|60_0(System.String,System.Span<System.Char>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Exception.OnDeserialized(System.Runtime.Serialization.StreamingContext) | [OnDeserializedAttribute(...)] | -| System.Void System.Exception.SetCurrentStackTrace() | [StackTraceHiddenAttribute(...)] | -| System.Void System.GC.<RegisterNoGCRegionCallback>g__Callback\|67_0(System.GC.NoGCRegionCallbackFinalizerWorkItem*) | [CompilerGeneratedAttribute(...)] | -| System.Void System.GC.<RegisterNoGCRegionCallback>g__Callback\|67_0(System.GC.NoGCRegionCallbackFinalizerWorkItem*) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Void System.GC.<RegisterNoGCRegionCallback>g__Free\|67_1(System.GC.NoGCRegionCallbackFinalizerWorkItem*) | [CompilerGeneratedAttribute(...)] | -| System.Void System.GC.ConfigCallback(System.Void*,System.Void*,System.Void*,System.GC.GCConfigurationType,System.Int64) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Void System.GC.KeepAlive(System.Object) | [IntrinsicAttribute(...)] | -| System.Void System.Globalization.CalendarData.EnumCalendarInfoCallback(System.Char*,System.IntPtr) | [UnmanagedCallersOnlyAttribute(...)] | -| System.Void System.Globalization.CompareInfo.CheckCompareOptionsForCompare(System.Globalization.CompareOptions) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Globalization.CompareInfo.OnDeserialized(System.Runtime.Serialization.StreamingContext) | [OnDeserializedAttribute(...)] | -| System.Void System.Globalization.CompareInfo.OnDeserializing(System.Runtime.Serialization.StreamingContext) | [OnDeserializingAttribute(...)] | -| System.Void System.Globalization.CompareInfo.OnSerializing(System.Runtime.Serialization.StreamingContext) | [OnSerializingAttribute(...)] | -| System.Void System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions) | [DoesNotReturnAttribute(...)] | -| System.Void System.Globalization.CompareInfo.ThrowCompareOptionsCheckFailed(System.Globalization.CompareOptions) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Globalization.DateTimeFormatInfo.<ValidateStyles>g__ThrowInvalid\|229_0(System.Globalization.DateTimeStyles,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Globalization.NumberFormatInfo.<ValidateParseStyleFloatingPoint>g__ThrowInvalid\|166_0(System.Globalization.NumberStyles) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Globalization.NumberFormatInfo.<ValidateParseStyleInteger>g__ThrowInvalid\|165_0(System.Globalization.NumberStyles) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Guid.GuidResult.SetFailure(System.Guid.ParseFailure) | [IsReadOnlyAttribute(...)] | -| System.Void System.Guid.ThrowBadGuidFormatSpecification() | [DoesNotReturnAttribute(...)] | -| System.Void System.Guid.ThrowGuidArrayCtorArgumentException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Guid.ThrowGuidArrayCtorArgumentException() | [StackTraceHiddenAttribute(...)] | -| System.Void System.IO.BinaryWriter.<WriteCharsCommonWithoutLengthPrefix>g__WriteToOutStream\|39_0(System.Byte[],System.Int32,System.Int32,System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.BufferedStream.<CopyToAsyncCore>d__68.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.BufferedStream.<DisposeAsync>d__33.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.BufferedStream.<FlushAsyncInternal>d__36.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.BufferedStream.<FlushWriteAsync>d__40.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.BufferedStream.<ReadFromUnderlyingStreamAsync>d__48.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.BufferedStream.<WriteToUnderlyingStreamAsync>d__59.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Enumeration.FileSystemEntry.set_Directory(System.ReadOnlySpan<System.Char>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.Enumeration.FileSystemEntry.set_OriginalRootDirectory(System.ReadOnlySpan<System.Char>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.Enumeration.FileSystemEntry.set_RootDirectory(System.ReadOnlySpan<System.Char>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.Enumeration.FileSystemEnumerable`1.set_ShouldIncludePredicate(System.IO.Enumeration.FileSystemEnumerable<!0>.FindPredicate) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.Enumeration.FileSystemEnumerable`1.set_ShouldRecursePredicate(System.IO.Enumeration.FileSystemEnumerable<!0>.FindPredicate) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.EnumerationOptions.set_AttributesToSkip(System.IO.FileAttributes) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.EnumerationOptions.set_BufferSize(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.EnumerationOptions.set_IgnoreInaccessible(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.EnumerationOptions.set_MatchCasing(System.IO.MatchCasing) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.EnumerationOptions.set_MatchType(System.IO.MatchType) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.EnumerationOptions.set_RecurseSubdirectories(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.EnumerationOptions.set_ReturnSpecialDirectories(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.File.<<WriteAllBytesAsync>g__Core\|92_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<InternalReadAllBytesAsync>d__90.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<InternalReadAllBytesUnknownLengthAsync>d__91.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<InternalReadAllLinesAsync>d__95.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<InternalReadAllTextAsync>d__86.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<InternalWriteAllLinesAsync>d__98.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<IterateFileLinesAsync>d__110..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<IterateFileLinesAsync>d__110.GetResult(System.Int16) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<IterateFileLinesAsync>d__110.OnCompleted(System.Action<System.Object>,System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<IterateFileLinesAsync>d__110.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.File.<WriteToFileAsync>d__108.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.FileStream.<DisposeAsync>d__57.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.FileSystem.<ResolveLinkTarget>g__GetLinkTargetFullPath\|46_0(System.Text.ValueStringBuilder,System.ReadOnlySpan<System.Char>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.<CopyToAsyncCore>d__57.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.<DisposeAsync>d__27.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.<FlushAsyncInternal>d__55.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.<ReadAsyncSlowPath>d__37.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.<ReadFromNonSeekableAsync>d__36.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.<WriteAsyncSlowPath>d__48.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.<WriteToNonSeekableAsync>d__47.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Strategies.FileStreamStrategy.set_IsDerived(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.Stream.<<CopyToAsync>g__Core\|27_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Stream.<<ReadAsync>g__FinishReadAsync\|42_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Stream.<FinishWriteAsync>d__61.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.Stream.<ReadAtLeastAsyncCore>d__46.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamReader.<ReadAsyncInternal>d__69.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamReader.<ReadBufferAsync>d__72.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamReader.<ReadLineAsyncInternal>d__63.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamReader.<ReadToEndAsyncInternal>d__66.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamReader.<ThrowIfDisposed>g__ThrowObjectDisposedException\|73_0() | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.StreamReader.ThrowAsyncIOInProgress() | [DoesNotReturnAttribute(...)] | -| System.Void System.IO.StreamWriter.<<FlushAsyncInternal>g__Core\|76_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamWriter.<DisposeAsyncCore>d__36.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamWriter.<ThrowIfDisposed>g__ThrowObjectDisposedException\|77_0() | [CompilerGeneratedAttribute(...)] | -| System.Void System.IO.StreamWriter.<WriteAsyncInternal>d__64.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamWriter.<WriteAsyncInternal>d__68.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.StreamWriter.ThrowAsyncIOInProgress() | [DoesNotReturnAttribute(...)] | -| System.Void System.IO.StringReader.ThrowObjectDisposedException_ReaderClosed() | [DoesNotReturnAttribute(...)] | -| System.Void System.IO.TextReader.<ReadBlockAsyncInternal>d__23.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.TextReader.<ReadToEndAsync>d__17.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.TextWriter.<<WriteAsync>g__WriteAsyncCore\|60_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IO.TextWriter.<<WriteLineAsync>g__WriteLineAsyncCore\|66_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.IntPtr..ctor(System.Int32) | [NonVersionableAttribute(...)] | -| System.Void System.IntPtr..ctor(System.Int64) | [NonVersionableAttribute(...)] | -| System.Void System.IntPtr..ctor(System.Void*) | [NonVersionableAttribute(...)] | -| System.Void System.LazyHelper.ThrowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.LocalDataStoreSlot.set_Data(System.Threading.ThreadLocal<System.Object>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Math.ThrowMinMaxException`1(!0,!0) | [DoesNotReturnAttribute(...)] | -| System.Void System.Math.ThrowNegateTwosCompOverflow() | [DoesNotReturnAttribute(...)] | -| System.Void System.Math.ThrowNegateTwosCompOverflow() | [StackTraceHiddenAttribute(...)] | -| System.Void System.MemoryExtensions.CopyTo`1(!0[],System.Memory<!0>) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.CopyTo`1(!0[],System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Replace`1(System.ReadOnlySpan<!0>,System.Span<!0>,!0,!0) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Replace`1(System.Span<!0>,!0,!0) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Reverse`1(System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Sort`1(System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Sort`1(System.Span<!0>,System.Comparison<!0>) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Sort`2(System.Span<!0>,!1) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Sort`2(System.Span<!0>,System.Span<!1>) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Sort`2(System.Span<!0>,System.Span<!1>,System.Comparison<!0>) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.Sort`3(System.Span<!0>,System.Span<!1>,!2) | [ExtensionAttribute(...)] | -| System.Void System.MemoryExtensions.ThrowNullLowHighInclusive`1(!0,!0) | [DoesNotReturnAttribute(...)] | -| System.Void System.ModuleHandle.<ValidateModulePointer>g__ThrowInvalidOperationException\|11_0() | [CompilerGeneratedAttribute(...)] | -| System.Void System.ModuleHandle.<ValidateModulePointer>g__ThrowInvalidOperationException\|11_0() | [DoesNotReturnAttribute(...)] | -| System.Void System.ModuleHandle.<ValidateModulePointer>g__ThrowInvalidOperationException\|11_0() | [StackTraceHiddenAttribute(...)] | -| System.Void System.MulticastDelegate.CtorClosed(System.Object,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorClosed(System.Object,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.CtorClosedStatic(System.Object,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorClosedStatic(System.Object,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.CtorCollectibleClosedStatic(System.Object,System.IntPtr,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorCollectibleClosedStatic(System.Object,System.IntPtr,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.CtorCollectibleOpened(System.Object,System.IntPtr,System.IntPtr,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorCollectibleOpened(System.Object,System.IntPtr,System.IntPtr,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.CtorCollectibleVirtualDispatch(System.Object,System.IntPtr,System.IntPtr,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorCollectibleVirtualDispatch(System.Object,System.IntPtr,System.IntPtr,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.CtorOpened(System.Object,System.IntPtr,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorOpened(System.Object,System.IntPtr,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.CtorRTClosed(System.Object,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorRTClosed(System.Object,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.CtorVirtualDispatch(System.Object,System.IntPtr,System.IntPtr) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.CtorVirtualDispatch(System.Object,System.IntPtr,System.IntPtr) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.MulticastDelegate.ThrowNullThisInDelegateToInstance() | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.MulticastDelegate.ThrowNullThisInDelegateToInstance() | [DoesNotReturnAttribute(...)] | -| System.Void System.Nullable`1..ctor(!0) | [NonVersionableAttribute(...)] | -| System.Void System.Number.<AppendUnknownChar>g__AppendNonAsciiBytes\|115_0`1(System.Collections.Generic.ValueListBuilder<!0>,System.Char) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Number.ThrowFormatException`1(System.ReadOnlySpan<!0>) | [DoesNotReturnAttribute(...)] | -| System.Void System.Number.ThrowOverflowException(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.Number.ThrowOverflowException`1() | [DoesNotReturnAttribute(...)] | -| System.Void System.Number.ThrowOverflowOrFormatException`2(System.Number.ParsingStatus,System.ReadOnlySpan<!0>) | [DoesNotReturnAttribute(...)] | -| System.Void System.Numerics.Plane..ctor(System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Plane..ctor(System.Numerics.Vector4) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Plane..ctor(System.Single,System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Quaternion..ctor(System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Quaternion..ctor(System.Single,System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector2..ctor(System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector2..ctor(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector2.CopyTo(System.Single[]) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector2.CopyTo(System.Single[],System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector2.CopyTo(System.Span<System.Single>) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector3..ctor(System.Numerics.Vector2,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector3..ctor(System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector3..ctor(System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector3.CopyTo(System.Single[]) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector3.CopyTo(System.Single[],System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector3.CopyTo(System.Span<System.Single>) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector4..ctor(System.Numerics.Vector2,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector4..ctor(System.Numerics.Vector3,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector4..ctor(System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector4..ctor(System.Single,System.Single,System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector4.CopyTo(System.Single[]) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector4.CopyTo(System.Single[],System.Int32) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector4.CopyTo(System.Span<System.Single>) | [IsReadOnlyAttribute(...)] | -| System.Void System.Numerics.Vector.SetElementUnsafe(System.Numerics.Quaternion,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.SetElementUnsafe(System.Numerics.Vector2,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.SetElementUnsafe(System.Numerics.Vector3,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.SetElementUnsafe(System.Numerics.Vector4,System.Int32,System.Single) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.SetElementUnsafe`1(System.Numerics.Vector<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.StoreAlignedNonTemporal`1(System.Numerics.Vector<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.StoreAlignedNonTemporal`1(System.Numerics.Vector<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector.StoreAligned`1(System.Numerics.Vector<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.StoreAligned`1(System.Numerics.Vector<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector.StoreUnsafe`1(System.Numerics.Vector<!0>,!0) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.StoreUnsafe`1(System.Numerics.Vector<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector.StoreUnsafe`1(System.Numerics.Vector<!0>,!0,System.UIntPtr) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.StoreUnsafe`1(System.Numerics.Vector<!0>,!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector.Store`1(System.Numerics.Vector<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Numerics.Vector.Store`1(System.Numerics.Vector<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Numerics.Vector`1..ctor(!0) | [IntrinsicAttribute(...)] | -| System.Void System.Object..ctor() | [NonVersionableAttribute(...)] | -| System.Void System.Object.Finalize() | [NonVersionableAttribute(...)] | -| System.Void System.ObjectDisposedException.ThrowIf(System.Boolean,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Void System.ObjectDisposedException.ThrowIf(System.Boolean,System.Type) | [StackTraceHiddenAttribute(...)] | -| System.Void System.ObsoleteAttribute.set_DiagnosticId(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.ObsoleteAttribute.set_UrlFormat(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Progress`1.add_ProgressChanged(System.EventHandler<!0>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Progress`1.remove_ProgressChanged(System.EventHandler<!0>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.AssemblyNameFormatter.AppendQuoted(System.Text.ValueStringBuilder,System.String) | [ExtensionAttribute(...)] | -| System.Void System.Reflection.AssemblyNameParser.ThrowInvalidAssemblyName() | [DoesNotReturnAttribute(...)] | -| System.Void System.Reflection.Emit.RuntimeModuleBuilder.<SetFieldRVAContent>g____PInvoke\|27_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.<DefineCustomAttribute>g____PInvoke\|8_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Byte*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.<SetMethodIL>g____PInvoke\|7_0(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Byte*,System.Int32,System.Byte*,System.Int32,System.Int32,System.Reflection.Emit.ExceptionHandler*,System.Int32,System.Int32*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.<SetPInvokeData>g____PInvoke\|20_0(System.Runtime.CompilerServices.QCallModule,System.UInt16*,System.UInt16*,System.Int32,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetPInvokeData(System.Runtime.CompilerServices.QCallModule,System.String,System.String,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | -| System.Void System.Reflection.EventInfo.AddEventHandler(System.Object,System.Delegate) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.EventInfo.AddEventHandler(System.Object,System.Delegate) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.EventInfo.RemoveEventHandler(System.Object,System.Delegate) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.EventInfo.RemoveEventHandler(System.Object,System.Delegate) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.FieldInfo.SetValue(System.Object,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.FieldInfo.SetValue(System.Object,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.MdFieldInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.MdFieldInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.MdFieldInfo.SetValueDirect(System.TypedReference,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.MdFieldInfo.SetValueDirect(System.TypedReference,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.MethodBaseInvoker.ThrowTargetParameterCountException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Reflection.NullabilityInfo.set_ReadState(System.Reflection.NullabilityState) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.NullabilityInfo.set_WriteState(System.Reflection.NullabilityState) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.ObfuscateAssemblyAttribute.set_StripAfterObfuscation(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.ObfuscationAttribute.set_ApplyToMembers(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.ObfuscationAttribute.set_Exclude(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.ObfuscationAttribute.set_Feature(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.ObfuscationAttribute.set_StripAfterObfuscation(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.PropertyInfo.SetValue(System.Object,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.PropertyInfo.SetValue(System.Object,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.PropertyInfo.SetValue(System.Object,System.Object,System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.PropertyInfo.SetValue(System.Object,System.Object,System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.RtFieldInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.RtFieldInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.RtFieldInfo.SetValueDirect(System.TypedReference,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.RtFieldInfo.SetValueDirect(System.TypedReference,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.<GetModule>g____PInvoke\|52_0(System.Runtime.CompilerServices.QCallAssembly,System.UInt16*,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.<GetModules>g____PInvoke\|90_0(System.Runtime.CompilerServices.QCallAssembly,System.Int32,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.<GetTypeCore>g____PInvoke\|26_0(System.Runtime.CompilerServices.QCallAssembly,System.Byte*,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.<GetTypeCoreIgnoreCase>g____PInvoke\|27_0(System.Runtime.CompilerServices.QCallAssembly,System.UInt16*,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.<GetVersion>g____PInvoke\|72_0(System.Runtime.CompilerServices.QCallAssembly,System.Int32*,System.Int32*,System.Int32*,System.Int32*) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.<InternalLoad>g____PInvoke\|49_0(System.Reflection.NativeAssemblyNameParts*,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StackCrawlMarkHandle,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.GetModule(System.Runtime.CompilerServices.QCallAssembly,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.GetTypeCore(System.Runtime.CompilerServices.QCallAssembly,System.String,System.ReadOnlySpan<System.String>,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.GetTypeCoreIgnoreCase(System.Runtime.CompilerServices.QCallAssembly,System.String,System.ReadOnlySpan<System.String>,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.add__ModuleResolve(System.Reflection.ModuleResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeAssembly.remove__ModuleResolve(System.Reflection.ModuleResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Reflection.RuntimeConstructorInfo.ThrowNoInvokeException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Reflection.RuntimeMethodInfo.InvokePropertySetter(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.RuntimeMethodInfo.InvokePropertySetter(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Reflection.RuntimePropertyInfo.SetValue(System.Object,System.Object,System.Object[]) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.RuntimePropertyInfo.SetValue(System.Object,System.Object,System.Object[]) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.RuntimePropertyInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.RuntimePropertyInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Reflection.TypeInfo.<GetDeclaredMethods>d__10..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.TypeInfo.<GetDeclaredMethods>d__10.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.TypeInfo.<GetDeclaredMethods>d__10.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.TypeInfo.<get_DeclaredNestedTypes>d__22..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.TypeInfo.<get_DeclaredNestedTypes>d__22.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Reflection.TypeInfo.<get_DeclaredNestedTypes>d__22.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Resources.ResourceFallbackManager.<GetEnumerator>d__5..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Resources.ResourceFallbackManager.<GetEnumerator>d__5.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Resources.ResourceFallbackManager.<GetEnumerator>d__5.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start`1(!0) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start`1(!0) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start`1(!0) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start`1(!0) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef(System.Array,System.IntPtr,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef(System.Array,System.IntPtr,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef(System.Array,System.IntPtr,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper(System.Object,System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper(System.Object,System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper(System.Object,System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper_NoCacheLookup(System.Object,System.Void*,System.Object) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper_NoCacheLookup(System.Object,System.Void*,System.Object) | [DebuggerStepThroughAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper_NoCacheLookup(System.Object,System.Void*,System.Object) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute.set_IsOptional(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.ContractHelper.TriggerFailure(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.String,System.Exception) | [DebuggerNonUserCodeAttribute(...)] | -| System.Void System.Runtime.CompilerServices.ContractHelper.add_InternalContractFailed(System.EventHandler<System.Diagnostics.Contracts.ContractFailedEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.CompilerServices.ContractHelper.remove_InternalContractFailed(System.EventHandler<System.Diagnostics.Contracts.ContractFailedEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.CompilerServices.InternalsVisibleToAttribute.set_AllInternalsVisible(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.CompilerServices.RuntimeCompatibilityAttribute.set_WrapNonExceptionThrows(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.DispatchTailCalls(System.IntPtr,delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void>,System.Byte) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.InitializeArray(System.Array,System.RuntimeFieldHandle) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.TaskAwaiter.GetResult() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,System.Threading.Tasks.ConfigureAwaitOptions) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task,System.Threading.Tasks.ConfigureAwaitOptions) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte,System.Byte,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte,System.Byte,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte,System.Byte,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte,System.Byte,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(!0,System.Void*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(!0,System.Void*) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(System.Void*,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(System.Void*,!0) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte,System.Byte,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte,System.Byte,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte,System.Byte,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte,System.Byte,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.SkipInit`1(!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.SkipInit`1(!0) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned`1(System.Byte,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned`1(System.Byte,!0) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned`1(System.Void*,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned`1(System.Void*,!0) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.Write`1(System.Void*,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.CompilerServices.Unsafe.Write`1(System.Void*,!0) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.CompilerServices.UnsafeAccessorAttribute.set_Name(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.ControlledExecution.ResetAbortThread() | [SuppressGCTransitionAttribute(...)] | -| System.Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() | [DoesNotReturnAttribute(...)] | -| System.Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(System.Exception) | [DoesNotReturnAttribute(...)] | -| System.Void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(System.Exception) | [StackTraceHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.ComWrappers.<GetIUnknownImplInternal>g____PInvoke\|25_0(System.IntPtr*,System.IntPtr*,System.IntPtr*) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.ComWrappers.SetGlobalInstanceRegisteredForMarshalling(System.Int64) | [SuppressGCTransitionAttribute(...)] | -| System.Void System.Runtime.InteropServices.ComWrappers.SetGlobalInstanceRegisteredForTrackerSupport(System.Int64) | [SuppressGCTransitionAttribute(...)] | -| System.Void System.Runtime.InteropServices.LibraryImportAttribute.set_EntryPoint(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.LibraryImportAttribute.set_SetLastError(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.LibraryImportAttribute.set_StringMarshalling(System.Runtime.InteropServices.StringMarshalling) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.LibraryImportAttribute.set_StringMarshallingCustomType(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.set_ConstantElementCount(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.set_CountElementName(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.set_ElementIndirectionDepth(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromArray\|18_2>d`1..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromArray\|18_2>d`1.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromArray\|18_2>d`1.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromMemoryManager\|18_1>d`1..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromMemoryManager\|18_1>d`1.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromMemoryManager\|18_1>d`1.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromString\|18_0>d`1..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromString\|18_0>d`1.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromString\|18_0>d`1.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.InteropServices.NFloat..ctor(System.Double) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.InteropServices.NFloat..ctor(System.Single) | [NonVersionableAttribute(...)] | -| System.Void System.Runtime.InteropServices.PosixSignalContext.set_Cancel(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.PosixSignalContext.set_Signal(System.Runtime.InteropServices.PosixSignal) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.InteropServices.PosixSignalRegistration.<OnPosixSignal>g__HandleSignal\|10_0(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.CopyTo`1(System.Runtime.Intrinsics.Vector64<!0>,!0[]) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.CopyTo`1(System.Runtime.Intrinsics.Vector64<!0>,!0[],System.Int32) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.CopyTo`1(System.Runtime.Intrinsics.Vector64<!0>,System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.SetElementUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAligned`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAligned`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,!0,System.UIntPtr) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.StoreUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.Store`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector64.Store`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.CopyTo`1(System.Runtime.Intrinsics.Vector128<!0>,!0[]) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.CopyTo`1(System.Runtime.Intrinsics.Vector128<!0>,!0[],System.Int32) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.CopyTo`1(System.Runtime.Intrinsics.Vector128<!0>,System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.SetElementUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.SetLowerUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.SetUpperUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAligned`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAligned`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreLowerUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0,System.UIntPtr) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0,System.UIntPtr) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.StoreUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.Store`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector128.Store`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.CopyTo`1(System.Runtime.Intrinsics.Vector256<!0>,!0[]) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.CopyTo`1(System.Runtime.Intrinsics.Vector256<!0>,!0[],System.Int32) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.CopyTo`1(System.Runtime.Intrinsics.Vector256<!0>,System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.SetElementUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.SetLowerUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.SetUpperUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAligned`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAligned`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,!0,System.UIntPtr) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.StoreUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.Store`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector256.Store`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.CopyTo`1(System.Runtime.Intrinsics.Vector512<!0>,!0[]) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.CopyTo`1(System.Runtime.Intrinsics.Vector512<!0>,!0[],System.Int32) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.CopyTo`1(System.Runtime.Intrinsics.Vector512<!0>,System.Span<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.SetElementUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,System.Int32,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.SetLowerUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.SetUpperUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAligned`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAligned`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,!0) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,!0,System.UIntPtr) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.StoreUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,!0,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.Store`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [ExtensionAttribute(...)] | -| System.Void System.Runtime.Intrinsics.Vector512.Store`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [IntrinsicAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<InternalSetProfileRoot>g____PInvoke\|3_0(System.UInt16*) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<InternalStartProfile>g____PInvoke\|4_0(System.UInt16*,System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<LoadFromPath>g____PInvoke\|5_0(System.IntPtr,System.UInt16*,System.UInt16*,System.Runtime.CompilerServices.ObjectHandleOnStack) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<get_All>d__85..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<get_All>d__85.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<get_All>d__85.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<get_Assemblies>d__55..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<get_Assemblies>d__55.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.<get_Assemblies>d__55.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.InternalSetProfileRoot(System.String) | [LibraryImportAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.InternalStartProfile(System.String,System.IntPtr) | [LibraryImportAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(System.IntPtr,System.String,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.add_AssemblyLoad(System.AssemblyLoadEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.add_AssemblyResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.add_ResourceResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.add_TypeResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.add__resolving(System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName,System.Runtime.Loader.AssemblyLoadContext>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.add__resolvingUnmanagedDll(System.Func<System.IntPtr,System.Reflection.Assembly,System.String>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.add__unloading(System.Action<System.Runtime.Loader.AssemblyLoadContext>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.remove_AssemblyLoad(System.AssemblyLoadEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.remove_AssemblyResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.remove_ResourceResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.remove_TypeResolve(System.ResolveEventHandler) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.remove__resolving(System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName,System.Runtime.Loader.AssemblyLoadContext>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.remove__resolvingUnmanagedDll(System.Func<System.IntPtr,System.Reflection.Assembly,System.String>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.AssemblyLoadContext.remove__unloading(System.Action<System.Runtime.Loader.AssemblyLoadContext>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Loader.LibraryNameVariation.<DetermineLibraryNameVariations>d__5..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.LibraryNameVariation.<DetermineLibraryNameVariations>d__5.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Loader.LibraryNameVariation.<DetermineLibraryNameVariations>d__5.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Runtime.Serialization.DeserializationTracker.set_DeserializationInProgress(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Serialization.SerializationInfo.set_IsAssemblyNameSetExplicit(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Serialization.SerializationInfo.set_IsFullTypeNameSetExplicit(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Versioning.ObsoletedOSPlatformAttribute.set_Url(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Runtime.Versioning.RequiresPreviewFeaturesAttribute.set_Url(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.RuntimeType.ActivatorCache.ctor>g__CtorNoopStub\|4_1(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.AllowPartiallyTrustedCallersAttribute.set_PartialTrustVisibilityLevel(System.Security.PartialTrustVisibilityLevel) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.PermissionSet.Deny() | [ObsoleteAttribute(...)] | -| System.Void System.Security.Permissions.SecurityAttribute.set_Action(System.Security.Permissions.SecurityAction) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityAttribute.set_Unrestricted(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_Assertion(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_BindingRedirects(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_ControlAppDomain(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_ControlDomainPolicy(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_ControlEvidence(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_ControlPolicy(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_ControlPrincipal(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_ControlThread(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_Execution(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_Flags(System.Security.Permissions.SecurityPermissionFlag) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_Infrastructure(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_RemotingConfiguration(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_SerializationFormatter(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_SkipVerification(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.Permissions.SecurityPermissionAttribute.set_UnmanagedCode(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_Demanded(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_DenySetInstance(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_FailedAssemblyInfo(System.Reflection.AssemblyName) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_GrantedSet(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_Method(System.Reflection.MethodInfo) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_PermissionState(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_PermissionType(System.Type) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_PermitOnlySetInstance(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_RefusedSet(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityException.set_Url(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Security.SecurityRulesAttribute.set_SkipVerificationInFullTrust(System.Boolean) | [CompilerGeneratedAttribute(...)] | -| System.Void System.SpanHelpers.ThrowMustBeNullTerminatedString() | [DoesNotReturnAttribute(...)] | -| System.Void System.String.ThrowSubstringArgumentOutOfRange(System.Int32,System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.DecoderExceptionFallbackBuffer.Throw(System.Byte[],System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.DecoderFallbackBuffer.ThrowLastBytesRecursive(System.Byte[]) | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.EncoderFallbackBuffer.ThrowLastCharRecursive(System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.Encoding.ThrowBytesOverflow() | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.Encoding.ThrowCharsOverflow() | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.Encoding.ThrowCharsOverflow() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Text.Encoding.ThrowConversionOverflow() | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.Encoding.ThrowConversionOverflow() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Text.TranscodingStream.<<DisposeAsync>g__DisposeAsyncCore\|30_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Text.TranscodingStream.<<ReadAsync>g__ReadAsyncCore\|41_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Text.TranscodingStream.<<WriteAsync>g__WriteAsyncCore\|50_0>d.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Text.TranscodingStream.<EnsurePreReadConditions>g__InitializeReadDataStructures\|33_0() | [CompilerGeneratedAttribute(...)] | -| System.Void System.Text.TranscodingStream.<EnsurePreWriteConditions>g__InitializeReadDataStructures\|34_0() | [CompilerGeneratedAttribute(...)] | -| System.Void System.Text.TranscodingStream.ThrowIfDisposed() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Text.TranscodingStream.ThrowObjectDisposedException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Text.TranscodingStream.ThrowObjectDisposedException() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Text.UTF8Encoding.UTF8EncodingSealed.<GetMaxByteCount>g__ThrowArgumentException\|7_0(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Text.UTF8Encoding.UTF8EncodingSealed.<GetMaxCharCount>g__ThrowArgumentException\|8_0(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Text.Unicode.TextSegmentationUtility.Processor`1.set_CurrentCodeUnitOffset(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Text.Unicode.TextSegmentationUtility.Processor`1.set_CurrentType(System.Text.Unicode.GraphemeClusterBreakType) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.CancellationToken.ThrowOperationCanceledException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Threading.CancellationTokenRegistration.<Dispose>g__WaitForCallbackIfNecessary\|3_0(System.Int64,System.Threading.CancellationTokenSource.CallbackNode) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.CancellationTokenSource.Registrations.<EnterLock>g__Contention\|13_0(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.CancellationTokenSource.Registrations.<WaitForCallbackToCompleteAsync>d__12.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.ExecutionContext.ThrowNullContext() | [DoesNotReturnAttribute(...)] | -| System.Void System.Threading.ExecutionContext.ThrowNullContext() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Threading.Interlocked.MemoryBarrier() | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Interlocked.ReadMemoryBarrier() | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Monitor.ThrowLockTakenException() | [DoesNotReturnAttribute(...)] | -| System.Void System.Threading.PortableThreadPool.WaitThreadNode.set_Next(System.Threading.PortableThreadPool.WaitThreadNode) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.RegisteredWaitHandle.set_TimeoutTimeMs(System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.RegisteredWaitHandle.set_UserUnregisterWaitHandle(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.RegisteredWaitHandle.set_UserUnregisterWaitHandleValue(System.IntPtr) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.RegisteredWaitHandle.set_WaitThread(System.Threading.PortableThreadPool.WaitThread) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.SemaphoreSlim.<WaitUntilCountOrTimeoutAsync>d__31.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.Sources.ManualResetValueTaskSourceCoreShared.<ScheduleCapturedContext>g__ScheduleSynchronizationContext\|2_0(System.Threading.SynchronizationContext,System.Action<System.Object>,System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.Sources.ManualResetValueTaskSourceCoreShared.<ScheduleCapturedContext>g__ScheduleTaskScheduler\|2_1(System.Threading.Tasks.TaskScheduler,System.Action<System.Object>,System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.ThrowForFailedGetResult() | [StackTraceHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.Task.WhenAllPromise.<Invoke>g__HandleTask\|3_0(System.Threading.Tasks.Task,System.Threading.Tasks.Task.WhenAllPromise.<>c__DisplayClass3_0) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.TaskAsyncEnumerableExtensions.<ToBlockingEnumerable>d__3`1..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.TaskAsyncEnumerableExtensions.<ToBlockingEnumerable>d__3`1.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.TaskAsyncEnumerableExtensions.<ToBlockingEnumerable>d__3`1.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.TaskScheduler.add_UnobservedTaskException(System.EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.TaskScheduler.remove_UnobservedTaskException(System.EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs>) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.TaskToAsyncResult.TaskAsyncResult.ctor>b__2_0() | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.Task`1.<ConfigureAwait>g__ThrowForInvalidOptions\|36_0(System.Threading.Tasks.ConfigureAwaitOptions) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.ThreadPoolTaskScheduler.<FilterTasksFromWorkItems>d__6..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.ThreadPoolTaskScheduler.<FilterTasksFromWorkItems>d__6.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.ThreadPoolTaskScheduler.<FilterTasksFromWorkItems>d__6.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.AwaitTaskContinuationScheduled(System.Int32,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.DebugFacilityMessage1(System.String,System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.DebugFacilityMessage(System.String,System.String) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.IncompleteAsyncMethod(System.Runtime.CompilerServices.IAsyncStateMachineBox) | [NonEventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.IncompleteAsyncMethod(System.String) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.NewID(System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.RunningContinuation(System.Int32,System.Int64) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.RunningContinuation(System.Int32,System.Object) | [NonEventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.RunningContinuationList(System.Int32,System.Int32,System.Int64) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.RunningContinuationList(System.Int32,System.Int32,System.Object) | [NonEventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.SetActivityId(System.Guid) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TaskCompleted(System.Int32,System.Int32,System.Int32,System.Boolean) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TaskScheduled(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TaskStarted(System.Int32,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TaskWaitBegin(System.Int32,System.Int32,System.Int32,System.Threading.Tasks.TplEventSource.TaskWaitBehavior,System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TaskWaitContinuationComplete(System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TaskWaitContinuationStarted(System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TaskWaitEnd(System.Int32,System.Int32,System.Int32) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TraceOperationBegin(System.Int32,System.String,System.Int64) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TraceOperationEnd(System.Int32,System.Threading.Tasks.AsyncCausalityStatus) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TraceOperationRelation(System.Int32,System.Threading.Tasks.CausalityRelation) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TraceSynchronousWorkBegin(System.Int32,System.Threading.Tasks.CausalitySynchronousWork) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.TplEventSource.TraceSynchronousWorkEnd(System.Threading.Tasks.CausalitySynchronousWork) | [EventAttribute(...)] | -| System.Void System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.cctor>g__ThrowUnexpectedStateForKnownCallback\|4_1(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Tasks.ValueTask`1.ValueTaskSourceAsTask.cctor>g__ThrowUnexpectedStateForKnownCallback\|4_1(System.Object) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Thread.<InformThreadNameChange>g____PInvoke\|26_0(System.Threading.ThreadHandle,System.UInt16*,System.Int32) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Thread.InformThreadNameChange(System.Threading.ThreadHandle,System.String,System.Int32) | [LibraryImportAttribute(...)] | -| System.Void System.Threading.ThreadPool.<GetQueuedWorkItems>d__26..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.ThreadPool.<GetQueuedWorkItems>d__26.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.ThreadPool.<GetQueuedWorkItems>d__26.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.TimerQueue.<GetTimersForDebugger>d__7..ctor(System.Int32) | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.TimerQueue.<GetTimersForDebugger>d__7.Dispose() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.TimerQueue.<GetTimersForDebugger>d__7.Reset() | [DebuggerHiddenAttribute(...)] | -| System.Void System.Threading.TimerQueue.set_ActiveCount(System.Int64) | [CompilerGeneratedAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Boolean,System.Boolean) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Boolean,System.Boolean) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Byte,System.Byte) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Byte,System.Byte) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Double,System.Double) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Double,System.Double) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Int16,System.Int16) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Int16,System.Int16) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Int32,System.Int32) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Int32,System.Int32) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Int64,System.Int64) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Int64,System.Int64) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.IntPtr,System.IntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.IntPtr,System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.SByte,System.SByte) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.SByte,System.SByte) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Single,System.Single) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.Single,System.Single) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UInt16,System.UInt16) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UInt16,System.UInt16) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UInt32,System.UInt32) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UInt32,System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UInt64,System.UInt64) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UInt64,System.UInt64) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UIntPtr,System.UIntPtr) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write(System.UIntPtr,System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.Volatile.Write`1(!0,!0) | [IntrinsicAttribute(...)] | -| System.Void System.Threading.Volatile.Write`1(!0,!0) | [NonVersionableAttribute(...)] | -| System.Void System.Threading.WaitHandleExtensions.SetSafeWaitHandle(System.Threading.WaitHandle,Microsoft.Win32.SafeHandles.SafeWaitHandle) | [ExtensionAttribute(...)] | -| System.Void System.ThrowHelper.ArgumentOutOfRangeException_Enum_Value() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowAccessViolationException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException`1(!0) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowAggregateException(System.Collections.Generic.List<System.Exception>) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException(System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException(System.ExceptionResource,System.ExceptionArgument) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_Arg_CannotBeNaN() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_ArgumentNull_TypedRefType() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_Argument_IncompatibleArrayType() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_BadComparer(System.Object) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_CannotExtractScalar(System.ExceptionArgument) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_DestinationTooShort() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_HandleNotAsync(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_HandleNotSync(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_InvalidHandle(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_OverlapAlignmentMismatch() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentException_TupleIncorrectType(System.Object) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument,System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument,System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument,System.Int32,System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException_NeedNonNegNum(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException_PrecisionTooLarge() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRangeException_SymbolDoesNotFit() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_BadHourMinuteSecond() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_BadYearMonthDay() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_DayNumber(System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_IndexMustBeLessException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_IndexMustBeLessOrEqualException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_Month(System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_Range`1(System.String,!0,!0,!0) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_TimeSpanTooLong() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArgumentOutOfRange_Year() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArraySegmentCtorValidationFailedExceptions(System.Array,System.Int32,System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowArrayTypeMismatchException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowEndOfFileException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowFormatException_BadBoolean(System.ReadOnlySpan<System.Char>) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowFormatException_BadFormatSpecifier() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowFormatException_NeedSingleChar() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowFormatIndexOutOfRange() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowFormatInvalidString() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowFormatInvalidString(System.Int32,System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowIndexOutOfRangeException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException(System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException(System.ExceptionResource,System.Exception) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_EnumCurrent(System.Int32) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_HandleIsNotInitialized() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_HandleIsNotPinned() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumEnded() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumNotStarted() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_NoValue() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidOperationException_InvalidUtf8() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowInvalidTypeWithPointersNotSupported(System.Type) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowKeyNotFoundException`1(!0) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowLengthArgumentOutOfRange_ArgumentOutOfRange_NeedNonNegNum() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowNotSupportedException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowNotSupportedException(System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowNotSupportedException_UnreadableStream() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowNotSupportedException_UnseekableStream() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowNotSupportedException_UnwritableStream() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowObjectDisposedException(System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowObjectDisposedException(System.Object) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowObjectDisposedException(System.Type) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowObjectDisposedException_FileClosed() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowObjectDisposedException_StreamClosed(System.String) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowOutOfMemoryException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowOutOfMemoryException_StringTooLong() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowOverflowException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowOverflowException_TimeSpanTooLong() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowRankException(System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowSerializationException(System.ExceptionResource) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLess() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLessOrEqual() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowUnexpectedStateForKnownCallback(System.Object) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowValueArgumentOutOfRange_NeedNonNegNumException() | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowWrongKeyTypeArgumentException`1(!0,System.Type) | [DoesNotReturnAttribute(...)] | -| System.Void System.ThrowHelper.ThrowWrongValueTypeArgumentException`1(!0,System.Type) | [DoesNotReturnAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`1(System.Tuple<!0>,!0) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`2(System.Tuple<!0,!1>,!0,!1) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`3(System.Tuple<!0,!1,!2>,!0,!1,!2) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`4(System.Tuple<!0,!1,!2,!3>,!0,!1,!2,!3) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`5(System.Tuple<!0,!1,!2,!3,!4>,!0,!1,!2,!3,!4) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`6(System.Tuple<!0,!1,!2,!3,!4,!5>,!0,!1,!2,!3,!4,!5) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`7(System.Tuple<!0,!1,!2,!3,!4,!5,!6>,!0,!1,!2,!3,!4,!5,!6) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`8(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7>>,!0,!1,!2,!3,!4,!5,!6,!7) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`9(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8>>,!0,!1,!2,!3,!4,!5,!6,!7,!8) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`10(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`11(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`12(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`13(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`14(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`15(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`16(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`17(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`18(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`19(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`20(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18,!19) | [ExtensionAttribute(...)] | -| System.Void System.TupleExtensions.Deconstruct`21(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19,!20>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18,!19,!20) | [ExtensionAttribute(...)] | -| System.Void System.UIntPtr..ctor(System.UInt32) | [NonVersionableAttribute(...)] | -| System.Void System.UIntPtr..ctor(System.UInt64) | [NonVersionableAttribute(...)] | -| System.Void System.UIntPtr..ctor(System.Void*) | [NonVersionableAttribute(...)] | -| System.Void System.Version.<TryFormatCore>g__ThrowArgumentException\|35_0`1(System.String) | [CompilerGeneratedAttribute(...)] | -| System.Void* System.IntPtr.ToPointer() | [NonVersionableAttribute(...)] | -| System.Void* System.IntPtr.op_Explicit(System.IntPtr) | [NonVersionableAttribute(...)] | -| System.Void* System.Runtime.CompilerServices.Unsafe.Add`1(System.Void*,System.Int32) | [IntrinsicAttribute(...)] | -| System.Void* System.Runtime.CompilerServices.Unsafe.Add`1(System.Void*,System.Int32) | [NonVersionableAttribute(...)] | -| System.Void* System.Runtime.CompilerServices.Unsafe.AsPointer`1(!0) | [IntrinsicAttribute(...)] | -| System.Void* System.Runtime.CompilerServices.Unsafe.AsPointer`1(!0) | [NonVersionableAttribute(...)] | -| System.Void* System.Runtime.CompilerServices.Unsafe.Subtract`1(System.Void*,System.Int32) | [IntrinsicAttribute(...)] | -| System.Void* System.Runtime.CompilerServices.Unsafe.Subtract`1(System.Void*,System.Int32) | [NonVersionableAttribute(...)] | -| System.Void* System.UIntPtr.ToPointer() | [NonVersionableAttribute(...)] | -| System.Void* System.UIntPtr.op_Explicit(System.UIntPtr) | [NonVersionableAttribute(...)] | -| System.__DTString | [IsByRefLikeAttribute(...)] | -| bool | [IsReadOnlyAttribute(...)] | -| bool | [RequiresLocationAttribute(...)] | -| bool | [ScopedRefAttribute(...)] | -| byte | [ConstantExpectedAttribute(...)] | -| byte | [IsReadOnlyAttribute(...)] | -| byte | [RequiresLocationAttribute(...)] | -| char | [IsReadOnlyAttribute(...)] | -| char[] | [ParamArrayAttribute(...)] | -| decimal | [IsReadOnlyAttribute(...)] | -| decimal | [NonVersionableAttribute(...)] | -| decimal | [ScopedRefAttribute(...)] | -| double | [IsReadOnlyAttribute(...)] | -| double | [RequiresLocationAttribute(...)] | -| double | [ScopedRefAttribute(...)] | -| float | [IsReadOnlyAttribute(...)] | -| float | [RequiresLocationAttribute(...)] | -| int | [IsReadOnlyAttribute(...)] | -| int | [RequiresLocationAttribute(...)] | -| int | [ScopedRefAttribute(...)] | -| int[] | [ParamArrayAttribute(...)] | -| long | [IsReadOnlyAttribute(...)] | -| long | [RequiresLocationAttribute(...)] | -| long[] | [ParamArrayAttribute(...)] | -| object | [NotNullAttribute(...)] | -| object[] | [ParamArrayAttribute(...)] | -| sbyte | [IsReadOnlyAttribute(...)] | -| sbyte | [RequiresLocationAttribute(...)] | -| short | [IsReadOnlyAttribute(...)] | -| short | [RequiresLocationAttribute(...)] | -| string | [AllowNullAttribute(...)] | -| string | [ConstantExpectedAttribute(...)] | -| string | [DisallowNullAttribute(...)] | -| string | [NonVersionableAttribute(...)] | -| string | [NotNullAttribute(...)] | -| string.Empty | [IntrinsicAttribute(...)] | -| string[] | [ParamArrayAttribute(...)] | -| uint | [IsReadOnlyAttribute(...)] | -| uint | [RequiresLocationAttribute(...)] | -| ulong | [IsReadOnlyAttribute(...)] | -| ulong | [RequiresLocationAttribute(...)] | -| ushort | [IsReadOnlyAttribute(...)] | -| ushort | [RequiresLocationAttribute(...)] | -| void* | [NotNullAttribute(...)] | -attrArgNamed -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext Internal.Runtime.InteropServices.ComponentActivator.GetIsolatedComponentLoadContext(System.String) | [RequiresUnreferencedCodeAttribute(...)] | Url | https://aka.ms/dotnet-illink/nativehost | -| Interop.BOOL System.Reflection.RuntimeAssembly.GetIsCollectible(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetIsCollectible | -| Interop.BOOL System.RuntimeMethodHandle.GetIsCollectible(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_GetIsCollectible | -| Interop.BOOL System.RuntimeMethodHandle.IsCAVisibleFromDecoratedType(System.Runtime.CompilerServices.QCallTypeHandle,System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallModule) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_IsCAVisibleFromDecoratedType | -| Interop.BOOL System.RuntimeTypeHandle.IsCollectible(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_IsCollectible | -| Interop.BOOL System.Threading.Thread.YieldInternal() | [LibraryImportAttribute(...)] | EntryPoint | ThreadNative_YieldThread | -| System.AppDomain System.AppDomain.CreateDomain(System.String) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0024 | -| System.AppDomain System.AppDomain.CreateDomain(System.String) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Array System.Array.CreateInstance(System.Type,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | MDArrays of Rank != 1 can be created because they don't implement generic interfaces. | -| System.Array System.Array.CreateInstance(System.Type,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | MDArrays of Rank != 1 can be created because they don't implement generic interfaces. | -| System.Attribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Attribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Attribute System.Diagnostics.Tracing.EventSource.GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which has dynamically accessed members requirements, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.AttributeUsageAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.AttributeUsageAttribute System.Reflection.CustomAttribute.GetAttributeUsage(System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Module.ResolveType is marked as RequiresUnreferencedCode because it relies on tokenswhich are not guaranteed to be stable across trimming. So if somebody hardcodes a token it could break.The usage here is not like that as all these tokens come from existing metadata loaded from some ILand so trimming has no effect (the tokens are read AFTER trimming occurred). | -| System.Boolean Interop.Globalization.GetJapaneseEraStartDate(System.Int32,System.Int32,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | GlobalizationNative_GetJapaneseEraStartDate | -| System.Boolean Interop.Kernel32.CloseHandle(System.IntPtr) | [LibraryImportAttribute(...)] | SetLastError | True | -| System.Boolean Interop.Kernel32.ReleaseMutex(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [LibraryImportAttribute(...)] | SetLastError | True | -| System.Boolean Interop.Kernel32.ReleaseSemaphore(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | SetLastError | True | -| System.Boolean Interop.Kernel32.ResetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [LibraryImportAttribute(...)] | SetLastError | True | -| System.Boolean Interop.Kernel32.SetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [LibraryImportAttribute(...)] | SetLastError | True | -| System.Boolean System.Attribute.Equals(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Unused fields don't make a difference for equality | -| System.Boolean System.Diagnostics.Debugger.LaunchInternal() | [LibraryImportAttribute(...)] | EntryPoint | DebugDebugger_Launch | -| System.Boolean System.Diagnostics.StackFrameExtensions.HasMethod(System.Diagnostics.StackFrame) | [UnconditionalSuppressMessageAttribute(...)] | Justification | StackFrame.GetMethod is used to establish if method is available. | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetNextEvent(System.UInt64,System.Diagnostics.Tracing.EventPipeEventInstanceData*) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_GetNextEvent | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetSessionInfo(System.UInt64,System.Diagnostics.Tracing.EventPipeSessionInfo*) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_GetSessionInfo | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.SignalSession(System.UInt64) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_SignalSession | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.WaitForSessionSignal(System.UInt64,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_WaitForSessionSignal | -| System.Boolean System.MdUtf8String.EqualsCaseInsensitive(System.Void*,System.Void*,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | MdUtf8String_EqualsCaseInsensitive | -| System.Boolean System.Reflection.CustomAttribute.FilterCustomAttributeRecord(System.Reflection.MetadataToken,System.Reflection.MetadataImport,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,System.Boolean,System.RuntimeType.ListBuilder<System.Object>,System.RuntimeType,System.IRuntimeMethodInfo,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Module.ResolveMethod and Module.ResolveType are marked as RequiresUnreferencedCode because they rely on tokenswhich are not guaranteed to be stable across trimming. So if somebody hardcodes a token it could break.The usage here is not like that as all these tokens come from existing metadata loaded from some ILand so trimming has no effect (the tokens are read AFTER trimming occurred). | -| System.Boolean System.Reflection.Emit.RuntimeTypeBuilder.IsAssignableFrom(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The GetInterfaces technically requires all interfaces to be preservedBut in this case it acts only on TypeBuilder which is never trimmed (as it's runtime created). | -| System.Boolean System.Reflection.LoaderAllocatorScout.Destroy(System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | LoaderAllocator_Destroy | -| System.Boolean System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata(System.Runtime.CompilerServices.QCallAssembly,System.Byte*,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_InternalTryGetRawMetadata | -| System.Boolean System.Reflection.Metadata.MetadataUpdater.IsApplyUpdateSupported() | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_IsApplyUpdateSupported | -| System.Boolean System.Reflection.RuntimeAssembly.GetCodeBase(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetCodeBase | -| System.Boolean System.Resources.ResourceReader.<DeserializeObject>g__InitializeBinaryFormatterLocal\|5_0() | [UnconditionalSuppressMessageAttribute(...)] | Justification | InitializeBinaryFormatter will get trimmed out when AllowCustomResourceTypes is set to false. When set to true, we will already throw a warning for this feature switch, so we suppress this one in order forthe user to only get one error. | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.AreTypesEquivalent(System.Runtime.CompilerServices.MethodTable*,System.Runtime.CompilerServices.MethodTable*) | [LibraryImportAttribute(...)] | EntryPoint | MethodTable_AreTypesEquivalent | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | ComWrappers_TryGetComInstance | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetObjectInternal(System.IntPtr,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ComWrappers_TryGetObject | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateComInterfaceForObjectInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.InteropServices.CreateComInterfaceFlags,System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | ComWrappers_TryGetOrCreateComInterfaceForObject | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateObjectForComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.IntPtr,System.IntPtr,System.Runtime.InteropServices.CreateObjectFlags,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ComWrappers_TryGetOrCreateObjectForComInstance | -| System.Boolean System.RuntimeTypeHandle._IsVisible(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_IsVisible | -| System.Boolean System.Type.ImplementInterface(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The GetInterfaces technically requires all interfaces to be preservedBut this method only compares the result against the passed in ifaceType.So if ifaceType exists, then trimming should have kept it implemented on any type. | -| System.Boolean System.ValueType.Equals(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Trimmed fields don't make a difference for equality | -| System.Buffers.ArrayPoolEventSource | [EventSourceAttribute(...)] | Guid | 0866B2B8-5CEF-5DB9-2612-0C0FFD814A44 | -| System.Buffers.ArrayPoolEventSource | [EventSourceAttribute(...)] | Name | System.Buffers.ArrayPoolEventSource | -| System.Byte[] System.Diagnostics.Tracing.EventSource.CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which has dynamically accessed members requirements, but its use of this method satisfies these requirements because it passes in the result of GetType with the same annotations. | -| System.CLSCompliantAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.CLSCompliantAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.CodeDom.Compiler.GeneratedCodeAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.CodeDom.Compiler.GeneratedCodeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Collections.KeyValuePairs | [DebuggerDisplayAttribute(...)] | Name | [{_key}] | -| System.Configuration.Assemblies.AssemblyHashAlgorithm System.Reflection.AssemblyName.HashAlgorithm | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0037 | -| System.Configuration.Assemblies.AssemblyHashAlgorithm System.Reflection.AssemblyName.HashAlgorithm | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Configuration.Assemblies.AssemblyHashAlgorithm System.Reflection.RuntimeAssembly.GetHashAlgorithm(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetHashAlgorithm | -| System.Configuration.Assemblies.AssemblyVersionCompatibility System.Reflection.AssemblyName.VersionCompatibility | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0037 | -| System.Configuration.Assemblies.AssemblyVersionCompatibility System.Reflection.AssemblyName.VersionCompatibility | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.ContextStaticAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Delegate System.Diagnostics.Tracing.PropertyValue.TypeHelper.GetGetMethod(System.Reflection.PropertyInfo,System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Instantiation over a reference type. See comments above. | -| System.Diagnostics.CodeAnalysis.AllowNullAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.DisallowNullAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.ExperimentalAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.MaybeNullAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.MemberNotNullAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.CodeAnalysis.MemberNotNullAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.NotNullAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.NotNullWhenAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.StringSyntaxAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.CodeAnalysis.StringSyntaxAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.CodeAnalysis.UnscopedRefAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.CodeAnalysis.UnscopedRefAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.ConditionalAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.Contracts.ContractAbbreviatorAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.Contracts.ContractArgumentValidatorAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.Contracts.ContractClassAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.Contracts.ContractClassAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.Contracts.ContractClassForAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.Contracts.ContractClassForAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.Contracts.ContractInvariantMethodAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.Contracts.ContractInvariantMethodAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.Contracts.ContractOptionAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.Contracts.ContractOptionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Diagnostics.Contracts.PureAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.Contracts.PureAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Diagnostics.DebuggableAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.DebuggerBrowsableAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Diagnostics.DebuggerDisplayAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.DebuggerHiddenAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.DebuggerNonUserCodeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.DebuggerStepThroughAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.DebuggerStepperBoundaryAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.DebuggerTypeProxyAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.DebuggerVisualizerAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Diagnostics.StackTraceHiddenAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.Tracing.EventDataAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Diagnostics.Tracing.FrameworkEventSource | [EventSourceAttribute(...)] | Guid | 8E9F5090-2D75-4d03-8A81-E5AFBF85DAF1 | -| System.Diagnostics.Tracing.FrameworkEventSource | [EventSourceAttribute(...)] | Name | System.Diagnostics.Eventing.FrameworkEventSource | -| System.Diagnostics.Tracing.NativeRuntimeEventSource | [EventSourceAttribute(...)] | Guid | E13C0D23-CCBC-4E12-931B-D9CC2EEE27E4 | -| System.Diagnostics.Tracing.NativeRuntimeEventSource | [EventSourceAttribute(...)] | Name | Microsoft-Windows-DotNETRuntime | -| System.Diagnostics.Tracing.RuntimeEventSource | [EventSourceAttribute(...)] | Guid | 49592C0F-5A05-516D-AA4B-A64E02026C89 | -| System.Diagnostics.Tracing.RuntimeEventSource | [EventSourceAttribute(...)] | Name | System.Runtime | -| System.Diagnostics.Tracing.TraceLoggingEventTypes System.Diagnostics.Tracing.EventSource.EventMetadata.get_TraceLoggingEventTypes() | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Exception.SerializeObjectState | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0011 | -| System.Exception.SerializeObjectState | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.FlagsAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Func<System.Diagnostics.Tracing.PropertyValue,System.Diagnostics.Tracing.PropertyValue> System.Diagnostics.Tracing.PropertyValue.GetReferenceTypePropertyGetter(System.Reflection.PropertyInfo) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Instantiation over a reference type. See comments above. | -| System.GC.EnableNoGCRegionCallbackStatus System.GC._EnableNoGCRegionCallback(System.GC.NoGCRegionCallbackFinalizerWorkItem*,System.Int64) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_EnableNoGCRegionCallback | -| System.Globalization.CompareInfo.m_SortVersion | [OptionalFieldAttribute(...)] | VersionAdded | 3 | -| System.Globalization.CompareInfo.m_name | [OptionalFieldAttribute(...)] | VersionAdded | 2 | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [RequiresUnreferencedCodeAttribute(...)] | Url | https://aka.ms/dotnet-illink/nativehost | -| System.Int32 Interop.Globalization.GetICUVersion() | [LibraryImportAttribute(...)] | EntryPoint | GlobalizationNative_GetICUVersion | -| System.Int32 Interop.Globalization.GetLatestJapaneseEra() | [LibraryImportAttribute(...)] | EntryPoint | GlobalizationNative_GetLatestJapaneseEra | -| System.Int32 Interop.Globalization.GetSortVersion(System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | GlobalizationNative_GetSortVersion | -| System.Int32 Interop.Globalization.LoadICU() | [LibraryImportAttribute(...)] | EntryPoint | GlobalizationNative_LoadICU | -| System.Int32 Interop.HostPolicy.<corehost_resolve_component_dependencies>g____PInvoke\|2_0(System.Byte*,System.IntPtr) | [UnmanagedCallConvAttribute(...)] | CallConvs | [System.Runtime.CompilerServices.CallConvCdecl] | -| System.Int32 Interop.HostPolicy.corehost_resolve_component_dependencies(System.String,Interop.HostPolicy.corehost_resolve_component_dependencies_result_fn) | [UnmanagedCallConvAttribute(...)] | CallConvs | [System.Runtime.CompilerServices.CallConvCdecl] | -| System.Int32 Interop.Kernel32.FormatMessage(System.Int32,System.IntPtr,System.UInt32,System.Int32,System.Void*,System.Int32,System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | FormatMessageW | -| System.Int32 Interop.Kernel32.FormatMessage(System.Int32,System.IntPtr,System.UInt32,System.Int32,System.Void*,System.Int32,System.IntPtr) | [LibraryImportAttribute(...)] | SetLastError | True | -| System.Int32 System.AppDomain.ExecuteAssembly(System.String,System.String[],System.Byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Int32 System.AppDomain.ExecuteAssembly(System.String,System.String[],System.Byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Int32 System.Attribute.GetHashCode() | [UnconditionalSuppressMessageAttribute(...)] | Justification | Unused fields don't make a difference for hashcode quality | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.EventActivityIdControl(System.UInt32,System.Guid) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_EventActivityIdControl | -| System.Int32 System.Diagnostics.Tracing.EventSource.GetHelperCallFirstArg(System.Reflection.MethodInfo) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The method calls MethodBase.GetMethodBody. Trimming application can change IL of various methodswhich can lead to change of behavior. This method only uses this to validate usage of event source APIs.In the worst case it will not be able to determine the value it's looking for and will not performany validation. | -| System.Int32 System.Environment.GetProcessorCount() | [LibraryImportAttribute(...)] | EntryPoint | Environment_GetProcessorCount | -| System.Int32 System.GC._EndNoGCRegion() | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_EndNoGCRegion | -| System.Int32 System.GC._RefreshMemoryLimit(System.GC.GCHeapHardLimitInfo) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_RefreshMemoryLimit | -| System.Int32 System.GC._StartNoGCRegion(System.Int64,System.Boolean,System.Int64,System.Boolean) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_StartNoGCRegion | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRef(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | ModuleBuilder_GetMemberRef | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefOfFieldInfo(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Runtime.CompilerServices.QCallTypeHandle,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | ModuleBuilder_GetMemberRefOfFieldInfo | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefOfMethodInfo(System.Runtime.CompilerServices.QCallModule,System.Int32,System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | EntryPoint | ModuleBuilder_GetMemberRefOfMethodInfo | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetTokenFromTypeSpec(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | ModuleBuilder_GetTokenFromTypeSpec | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodSpec(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_DefineMethodSpec | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.GetTokenFromSig(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_GetTokenFromSig | -| System.Int32 System.Threading.LowLevelLifoSemaphore.WaitNative(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | WaitHandle_CorWaitOnePrioritizedNative | -| System.Int64 System.GC.GetTotalMemory() | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_GetTotalMemory | -| System.Int64 System.GC._GetGenerationBudget(System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_GetGenerationBudget | -| System.Int64 System.Threading.Monitor.GetLockContentionCount() | [LibraryImportAttribute(...)] | EntryPoint | ObjectNative_GetMonitorLockContentionCount | -| System.IntPtr Internal.Runtime.InteropServices.ComponentActivator.InternalGetFunctionPointer(System.Runtime.Loader.AssemblyLoadContext,System.String,System.String,System.IntPtr) | [RequiresUnreferencedCodeAttribute(...)] | Url | https://aka.ms/dotnet-illink/nativehost | -| System.IntPtr Interop.HostPolicy.corehost_set_error_writer(System.IntPtr) | [UnmanagedCallConvAttribute(...)] | CallConvs | [System.Runtime.CompilerServices.CallConvCdecl] | -| System.IntPtr System.ComAwareWeakReference.ObjectToComWeakRef(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64) | [LibraryImportAttribute(...)] | EntryPoint | ObjectToComWeakRef | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.DefineEvent(System.IntPtr,System.UInt32,System.Int64,System.UInt32,System.UInt32,System.Void*,System.UInt32) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_DefineEvent | -| System.IntPtr System.GC._RegisterFrozenSegment(System.IntPtr,System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_RegisterFrozenSegment | -| System.IntPtr System.Runtime.CompilerServices.RuntimeHelpers.AllocateTypeAssociatedMemory(System.Runtime.CompilerServices.QCallTypeHandle,System.UInt32) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_AllocateTypeAssociatedMemory | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate`1(!0) | [UnconditionalSuppressMessageAttribute(...)] | Justification | AOT compilers can see the T. | -| System.IntPtr System.Runtime.InteropServices.Marshal.OffsetOf(System.Type,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Trimming doesn't affect types eligible for marshalling. Different exception for invalid inputs doesn't matter. | -| System.IntPtr System.Runtime.Loader.AssemblyLoadContext.GetLoadContextForAssembly(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetLoadContextForAssembly | -| System.IntPtr System.Runtime.Loader.AssemblyLoadContext.InitializeAssemblyLoadContext(System.IntPtr,System.Boolean,System.Boolean) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_InitializeAssemblyLoadContext | -| System.IntPtr System.RuntimeMethodHandle.GetFunctionPointer(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_GetFunctionPointer | -| System.IntPtr System.RuntimeTypeHandle.FreeGCHandle(System.Runtime.CompilerServices.QCallTypeHandle,System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | QCall_FreeGCHandleForTypeHandle | -| System.IntPtr System.RuntimeTypeHandle.GetGCHandle(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.InteropServices.GCHandleType) | [LibraryImportAttribute(...)] | EntryPoint | QCall_GetGCHandleForTypeHandle | -| System.NonSerializedAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Object System.MarshalByRefObject.GetLifetimeService() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0010 | -| System.Object System.MarshalByRefObject.GetLifetimeService() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Object System.MarshalByRefObject.InitializeLifetimeService() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0010 | -| System.Object System.MarshalByRefObject.InitializeLifetimeService() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Object System.Reflection.ParameterInfo.GetRealObject(System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Object System.Reflection.ParameterInfo.GetRealObject(System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Object System.Runtime.InteropServices.Marshal.BindToMoniker(System.String) | [RequiresUnreferencedCodeAttribute(...)] | Url | https://aka.ms/dotnet-illink/com | -| System.Object System.RuntimeType.<CreateInstanceImpl>g__CreateInstanceLocal\|145_0(System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Implementation detail of Activator that linker intrinsically recognizes | -| System.Object System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The parameter 'type' is passed by ref to QCallTypeHandle which only instantiatesthe type using the public parameterless constructor and doesn't modify it | -| System.Object System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The parameter 'type' is passed by ref to QCallTypeHandle which only instantiatesthe type using the public parameterless constructor and doesn't modify it | -| System.Object[] System.Diagnostics.Tracing.EventSource.SerializeEventArgs(System.Int32,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.ObsoleteAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.ParamArrayAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.ParamArrayAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Reflection.Assembly Internal.Runtime.InteropServices.IsolatedComponentLoadContext.Load(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The trimmer warning is added to the constructor of this class since this method is a virtual one. | -| System.Reflection.Assembly System.Reflection.Assembly.LoadFromResolveHandler(System.Object,System.ResolveEventArgs) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The assembly is loaded by specifying a path outside of the single-file bundle, the location of the path will not be empty if the path exist, otherwise it will be handled as null | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.Byte[]) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0018 | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.Byte[]) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.String) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0018 | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.String) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoadFrom(System.String) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0018 | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoadFrom(System.String) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The code handles the Assembly.Location equals null | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.ResolveSatelliteAssembly(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Satellite assemblies have no code in them and loading is not a problem | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.ResolveSatelliteAssembly(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | Justification | This call is fine because native call runs before this and checks BindSatelliteResourceFromBundle | -| System.Reflection.AssemblyAlgorithmIdAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyCompanyAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyConfigurationAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyCopyrightAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyCultureAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyDefaultAliasAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyDelaySignAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyDescriptionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyFileVersionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyFlagsAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyInformationalVersionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyKeyFileAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyKeyNameAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyMetadataAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Reflection.AssemblyMetadataAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyNameFlags System.Reflection.RuntimeAssembly.GetFlags(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetFlags | -| System.Reflection.AssemblyProductAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblySignatureKeyAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Reflection.AssemblySignatureKeyAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyTitleAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyTrademarkAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.AssemblyVersionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.ConstructorInfo System.Reflection.Emit.TypeBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) | [UnconditionalSuppressMessageAttribute(...)] | Justification | MakeGenericType is only called on a TypeBuilder which is not subject to trimming | -| System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineConstructorNoLock(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Reflection.Emit is not subject to trimming | -| System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineTypeInitializerCore() | [UnconditionalSuppressMessageAttribute(...)] | Justification | Reflection.Emit is not subject to trimming | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodCore(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Reflection.Emit is not subject to trimming | -| System.Reflection.Emit.RuntimeConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineDefaultConstructorNoLock(System.Reflection.MethodAttributes) | [UnconditionalSuppressMessageAttribute(...)] | Justification | GetConstructor is only called on a TypeBuilderInstantiation which is not subject to trimming | -| System.Reflection.Emit.RuntimeConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineDefaultConstructorNoLock(System.Reflection.MethodAttributes) | [UnconditionalSuppressMessageAttribute(...)] | Justification | MakeGenericType is only called on a TypeBuilderInstantiation which is not subject to trimming | -| System.Reflection.EventInfo System.Attribute.GetParentDefinition(System.Reflection.EventInfo) | [UnconditionalSuppressMessageAttribute(...)] | Justification | rtAdd.DeclaringType is guaranteed to have the specified event because rtAdd.GetParentDefinition() returned a non-null MethodInfo. | -| System.Reflection.FieldAttributes.NotSerialized | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Reflection.FieldAttributes.NotSerialized | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.FieldInfo System.Reflection.Emit.TypeBuilder.GetField(System.Type,System.Reflection.FieldInfo) | [UnconditionalSuppressMessageAttribute(...)] | Justification | MakeGenericType is only called on a TypeBuilder which is not subject to trimming | -| System.Reflection.FieldInfo[] System.Diagnostics.Tracing.ManifestBuilder.<CreateManifestString>g__GetEnumFields\|19_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Trimmer does not trim enums | -| System.Reflection.MemberInfo System.Type.GetMemberWithSameMetadataDefinitionAs(System.Reflection.MemberInfo) | [UnconditionalSuppressMessageAttribute(...)] | Justification | This is finding the MemberInfo with the same MetadataToken as specified MemberInfo. If the specified MemberInfo exists and wasn't trimmed, then the current Type's MemberInfo couldn't have been trimmed. | -| System.Reflection.Metadata.MetadataUpdateHandlerAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Reflection.MethodBase System.DefaultBinder.BindToMethod(System.Reflection.BindingFlags,System.Reflection.MethodBase[],System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],System.Object) | [UnconditionalSuppressMessageAttribute(...)] | Justification | AOT compiler ensures params arrays are created for reflection-invokable methods | -| System.Reflection.MethodBase System.Reflection.Emit.RuntimeModuleBuilder.GetGenericMethodBaseDefinition(System.Reflection.MethodBase) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Module.ResolveMethod is marked as RequiresUnreferencedCode because it relies on tokens which are not guaranteed to be stable across trimming. So if somebody hardcodes a token it could break. The usage here is not like that as all these tokens come from existing metadata loaded from some IL and so trimming has no effect (the tokens are read AFTER trimming occurred). | -| System.Reflection.MethodBase System.RuntimeType.GetMethodBase(System.RuntimeType,System.RuntimeMethodHandleInternal) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The code in this method looks up the method by name, but it always starts with a method handle.To get here something somewhere had to get the method handle and thus the method must exist. | -| System.Reflection.MethodInfo System.Reflection.Emit.TypeBuilder.GetMethod(System.Type,System.Reflection.MethodInfo) | [UnconditionalSuppressMessageAttribute(...)] | Justification | MakeGenericType is only called on a TypeBuilder which is not subject to trimming | -| System.Reflection.MethodInfo[] System.Diagnostics.StackTrace.<TryResolveStateMachineMethod>g__GetDeclaredMethods\|28_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Using Reflection to find the state machine's corresponding method is safe because the corresponding method is the only caller of the state machine. If the state machine is present, the corresponding method will be, too. | -| System.Reflection.MethodInfo[] System.Reflection.TypeInfo.<GetDeclaredMethods>g__GetDeclaredOnlyMethods\|10_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The yield return state machine doesn't propagate annotations | -| System.Reflection.ObfuscateAssemblyAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Reflection.ObfuscateAssemblyAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.ObfuscationAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Reflection.ObfuscationAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Reflection.ProcessorArchitecture System.Reflection.AssemblyName.ProcessorArchitecture | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0037 | -| System.Reflection.ProcessorArchitecture System.Reflection.AssemblyName.ProcessorArchitecture | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.PropertyInfo System.Attribute.GetParentDefinition(System.Reflection.PropertyInfo,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | rtPropAccessor.DeclaringType is guaranteed to have the specified property because rtPropAccessor.GetParentDefinition() returned a non-null MethodInfo. | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Linker doesn't recognize GetPropertyImpl(BindingFlags.Public) but this is what the body is doing | -| System.Reflection.RuntimeAssembly System.Runtime.Loader.AssemblyLoadContext.InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The code handles the Assembly.Location equals null | -| System.Reflection.RuntimeFieldInfo[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateFields(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Calls to GetInterfaces technically require all interfaces on ReflectedTypeBut this is not a public API to enumerate reflection items, all the public APIs which do thatshould be annotated accordingly. | -| System.Reflection.RuntimeMethodInfo System.Reflection.Associates.AssignAssociates(System.Int32,System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Module.ResolveMethod is marked as RequiresUnreferencedCode because it relies on tokenswhich are not guaranteed to be stable across trimming. So if somebody hardcodes a token it could break.The usage here is not like that as all these tokens come from existing metadata loaded from some ILand so trimming has no effect (the tokens are read AFTER trimming occurred). | -| System.Reflection.StrongNameKeyPair | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0017 | -| System.Reflection.StrongNameKeyPair | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.StrongNameKeyPair System.Reflection.AssemblyName.KeyPair | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0017 | -| System.Reflection.StrongNameKeyPair System.Reflection.AssemblyName.KeyPair | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.TypeAttributes.Serializable | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Reflection.TypeAttributes.Serializable | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Reflection.TypeInfo System.Reflection.Emit.RuntimeTypeBuilder.CreateTypeNoLock() | [UnconditionalSuppressMessageAttribute(...)] | Justification | Reflection.Emit is not subject to trimming | -| System.Resources.NeutralResourcesLanguageAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Resources.SatelliteContractVersionAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.AssemblyTargetedPatchBandAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.AsyncMethodBuilderAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.AsyncMethodBuilderAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.AsyncStateMachineAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.AsyncStateMachineAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CallerArgumentExpressionAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.CallerArgumentExpressionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CallerFilePathAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CallerLineNumberAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CallerMemberNameAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CollectionBuilderAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CompExactlyDependsOnAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.CompilerServices.CompExactlyDependsOnAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.CompilerGeneratedAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Runtime.CompilerServices.CreateNewOnMetadataUpdateAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.CustomConstantAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.DateTimeConstantAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.DecimalConstantAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.DependencyAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.CompilerServices.DisablePrivateReflectionAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.DisablePrivateReflectionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.DisablePrivateReflectionAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0015 | -| System.Runtime.CompilerServices.DisablePrivateReflectionAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.CompilerServices.DisableRuntimeMarshallingAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.DisableRuntimeMarshallingAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.EnumeratorCancellationAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.FixedBufferAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.IndexerNameAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Runtime.CompilerServices.InlineArrayAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.InternalsVisibleToAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.CompilerServices.InternalsVisibleToAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.IntrinsicAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.IsReadOnlyAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.IteratorStateMachineAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.IteratorStateMachineAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.MetadataUpdateOriginalTypeAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.MetadataUpdateOriginalTypeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.MethodImplAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.ModuleInitializerAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.NullableAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.NullableContextAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.NullablePublicOnlyAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.PreserveBaseOverridesAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.PreserveBaseOverridesAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.RefSafetyRulesAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.ReferenceAssemblyAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.RequiredMemberAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.RequiredMemberAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.RequiresLocationAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.RuntimeCompatibilityAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.RuntimeCompatibilityAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.ScopedRefAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.SkipLocalsInitAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.StateMachineAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.StateMachineAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.StringFreezingAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.SuppressIldasmAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0025 | -| System.Runtime.CompilerServices.SuppressIldasmAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.CompilerServices.TypeForwardedFromAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.TypeForwardedFromAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.TypeForwardedToAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.CompilerServices.TypeForwardedToAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.CompilerServices.UnsafeAccessorAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.CompilerServices.UnsafeAccessorAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.ConstrainedExecution.Cer | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Runtime.ConstrainedExecution.Cer | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.ConstrainedExecution.Consistency | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Runtime.ConstrainedExecution.Consistency | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.ConstrainedExecution.ReliabilityContractAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.ConstrainedExecution.ReliabilityContractAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Runtime.ConstrainedExecution.ReliabilityContractAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0032 | -| System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.InteropServices.BestFitMappingAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.ClassInterfaceAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.CoClassAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.ComDefaultInterfaceAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.ComEventInterfaceAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.ComImportAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.ComSourceInterfacesAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Runtime.InteropServices.ComVisibleAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.DefaultCharSetAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.DispIdAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.DllImportAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.DynamicInterfaceCastableImplementationAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.DynamicInterfaceCastableImplementationAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.FieldOffsetAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.GuidAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.InAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.InterfaceTypeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.LCIDConversionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.LibraryImportAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.LibraryImportAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.MarshalAsAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.InteropServices.ObjectiveC.ObjectiveCTrackedTypeAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.ObjectiveC.ObjectiveCTrackedTypeAttribute | [AttributeUsageAttribute(...)] | Inherited | True | -| System.Runtime.InteropServices.OptionalAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.OutAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.PreserveSigAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.ProgIdAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.StructLayoutAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.SuppressGCTransitionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.TypeIdentifierAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.TypeIdentifierAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.UnmanagedCallConvAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.UnmanagedCallConvAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceInternal(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[],System.Threading.StackCrawlMark) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Implementation detail of Activator that linker intrinsically recognizes | -| System.Runtime.Serialization.IFormatterConverter | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Runtime.Serialization.IFormatterConverter | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.Serialization.IObjectReference | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Runtime.Serialization.IObjectReference | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.Serialization.ISafeSerializationData | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Runtime.Serialization.ISafeSerializationData | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.Serialization.OnDeserializedAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Serialization.OnDeserializingAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Serialization.OnSerializedAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Serialization.OnSerializingAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Serialization.OptionalFieldAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Serialization.SafeSerializationEventArgs | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Runtime.Serialization.SafeSerializationEventArgs | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.Serialization.StreamingContext._state | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Runtime.Serialization.StreamingContext._state | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.Serialization.StreamingContextStates | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Runtime.Serialization.StreamingContextStates | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.Serialization.StreamingContextStates System.Runtime.Serialization.StreamingContext.State | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Runtime.Serialization.StreamingContextStates System.Runtime.Serialization.StreamingContext.State | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Runtime.TargetedPatchingOptOutAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.TargetedPatchingOptOutAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.ComponentGuaranteesAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.Versioning.ComponentGuaranteesAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.NonVersionableAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.Versioning.NonVersionableAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.ObsoletedOSPlatformAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.Versioning.ObsoletedOSPlatformAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.RequiresPreviewFeaturesAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.ResourceConsumptionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.ResourceExposureAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.SupportedOSPlatformAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.Versioning.SupportedOSPlatformAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.SupportedOSPlatformGuardAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.Versioning.SupportedOSPlatformGuardAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.TargetFrameworkAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.Versioning.TargetFrameworkAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.TargetPlatformAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Runtime.Versioning.TargetPlatformAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.UnsupportedOSPlatformAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.Versioning.UnsupportedOSPlatformAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.RuntimeMethodHandleInternal System.Diagnostics.StackFrame.GetMethodDescFromNativeIP(System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | StackFrame_GetMethodDescFromNativeIP | -| System.RuntimeMethodHandleInternal System.ModuleHandle.ResolveMethod(System.Runtime.CompilerServices.QCallModule,System.Int32,System.IntPtr*,System.Int32,System.IntPtr*,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | ModuleHandle_ResolveMethod | -| System.RuntimeMethodHandleInternal System.RuntimeTypeHandle.GetInterfaceMethodImplementation(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallTypeHandle,System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_GetInterfaceMethodImplementation | -| System.RuntimeType[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateInterfaces(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Calls to GetInterfaces technically require all interfaces on ReflectedTypeBut this is not a public API to enumerate reflection items, all the public APIs which do thatshould be annotated accordingly. | -| System.RuntimeType[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateNestedClasses(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Calls to ResolveTypeHandle technically require all types to be kept But this is not a public API to enumerate reflection items, all the public APIs which do that should be annotated accordingly. | -| System.Security.AllowPartiallyTrustedCallersAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Security.AllowPartiallyTrustedCallersAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.IPermission | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.IPermission | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.IStackWalk | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.IStackWalk | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.PermissionSet | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.PermissionSet | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.PermissionSet System.AppDomain.PermissionSet | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.PermissionSet System.AppDomain.PermissionSet | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.Permissions.CodeAccessSecurityAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Security.Permissions.CodeAccessSecurityAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.Permissions.CodeAccessSecurityAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.Permissions.CodeAccessSecurityAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.Permissions.PermissionState | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.Permissions.PermissionState | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.Permissions.SecurityAction | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.Permissions.SecurityAction | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.Permissions.SecurityAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Security.Permissions.SecurityAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.Permissions.SecurityAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.Permissions.SecurityAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.Permissions.SecurityPermissionAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Security.Permissions.SecurityPermissionAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.Permissions.SecurityPermissionAttribute | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.Permissions.SecurityPermissionAttribute | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.Permissions.SecurityPermissionFlag | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Security.Permissions.SecurityPermissionFlag | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Security.SecurityCriticalAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Security.SecurityCriticalAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.SecurityRulesAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Security.SecuritySafeCriticalAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Security.SecuritySafeCriticalAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.SecurityTransparentAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Security.SecurityTransparentAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.SecurityTreatAsSafeAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | False | -| System.Security.SecurityTreatAsSafeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.SuppressUnmanagedCodeSecurityAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Security.SuppressUnmanagedCodeSecurityAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Security.UnverifiableCodeAttribute | [AttributeUsageAttribute(...)] | AllowMultiple | True | -| System.Security.UnverifiableCodeAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.SerializableAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.String System.AppContext.GetBaseDirectoryCore() | [UnconditionalSuppressMessageAttribute(...)] | Justification | Single File apps should always set APP_CONTEXT_BASE_DIRECTORY therefore code handles Assembly.Location equals null | -| System.String System.Diagnostics.Tracing.EventSource.GenerateManifest(System.Type,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which has dynamically accessed members requirements, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.String System.Diagnostics.Tracing.EventSource.GenerateManifest(System.Type,System.String,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which has dynamically accessed members requirements, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.String System.Exception.get_Source() | [UnconditionalSuppressMessageAttribute(...)] | Justification | The API will return <unknown> if the metadata for current method cannot be established. | -| System.String System.Runtime.CompilerServices.AsyncMethodBuilderCore.GetAsyncStateMachineDescription(System.Runtime.CompilerServices.IAsyncStateMachine) | [UnconditionalSuppressMessageAttribute(...)] | Justification | It's okay if unused fields disappear from debug views | -| System.Text.Encoding System.Text.Encoding.UTF7 | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0001 | -| System.Text.Encoding System.Text.Encoding.UTF7 | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Text.Encoding._isReadOnly | [OptionalFieldAttribute(...)] | VersionAdded | 2 | -| System.ThreadStaticAttribute | [AttributeUsageAttribute(...)] | Inherited | False | -| System.Threading.CompressedStack System.Threading.Thread.GetCompressedStack() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Threading.CompressedStack System.Threading.Thread.GetCompressedStack() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Threading.Tasks.TplEventSource | [EventSourceAttribute(...)] | Guid | 2e5dba47-a3d2-4d16-8ee0-6671ffdcd7b5 | -| System.Threading.Tasks.TplEventSource | [EventSourceAttribute(...)] | Name | System.Threading.Tasks.TplEventSource | -| System.Type System.Reflection.Emit.TypeBuilderInstantiation.Substitute(System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The entire TypeBuilderInstantiation is serving the MakeGenericType implementation. Currently this is not supported by linker. Once it is supported the outercall (Type.MakeGenericType)will validate that the types fulfill the necessary requirements of annotations on type parameters.As such the actual internals of the implementation are not interesting. | -| System.Type System.Reflection.RuntimeExceptionHandlingClause.get_CatchType() | [UnconditionalSuppressMessageAttribute(...)] | Justification | Module.ResolveType is marked as RequiresUnreferencedCode because it relies on tokenswhich are not guaranteed to be stable across trimming. So if somebody hardcodes a token it could break.The usage here is not like that as all these tokens come from existing metadata loaded from some ILand so trimming has no effect (the tokens are read AFTER trimming occurred). | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Used to find matching method overloads. Only used for assignability checks. | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Used to find matching method overloads. Only used for assignability checks. | -| System.Type System.Reflection.SignatureTypeExtensions.TryResolve(System.Reflection.SignatureType,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Used to find matching method overloads. Only used for assignability checks. | -| System.Type System.Reflection.TypeNameParser.GenericTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Used to implement resolving types from strings. | -| System.Type System.Reflection.TypeNameParser.GetType(System.String,System.ReadOnlySpan<System.String>,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | TypeNameParser.GetType is marked as RequiresUnreferencedCode. | -| System.Type System.Reflection.TypeNameParser.ModifierTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Used to implement resolving types from strings. | -| System.Type System.Resources.ResourceReader.<FindType>g__UseReflectionToGetTypeLocal\|52_0(System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | UseReflectionToGetType will get trimmed out when AllowCustomResourceTypes is set to false. When set to true, we will already throw a warning for this feature switch, so we suppress this one in order forthe user to only get one error. | -| System.Type System.RuntimeType.GetInterface(System.String,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Trimming makes sure that interfaces are fully preserved, so the Interfaces annotation is transitive.The cache doesn't carry the necessary annotation since it returns an array type,so the analysis complains that the returned value doesn't have the necessary annotation. | -| System.Type System.Type.GetEnumUnderlyingType() | [UnconditionalSuppressMessageAttribute(...)] | Justification | The single instance field on enum types is never trimmed | -| System.Type System.Type.ReflectionOnlyGetType(System.String,System.Boolean,System.Boolean) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0018 | -| System.Type System.Type.ReflectionOnlyGetType(System.String,System.Boolean,System.Boolean) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Type[] System.Reflection.TypeInfo.<get_DeclaredNestedTypes>g__GetDeclaredOnlyNestedTypes\|22_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The yield return state machine doesn't propagate annotations | -| System.UInt32 System.Reflection.Assembly.GetAssemblyCount() | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetAssemblyCount | -| System.UInt64 System.Diagnostics.Tracing.EventPipeInternal.Enable(System.Char*,System.Diagnostics.Tracing.EventPipeSerializationFormat,System.UInt32,System.Diagnostics.Tracing.EventPipeInternal.EventPipeProviderConfigurationNative*,System.UInt32) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_Enable | -| System.UInt64 System.Threading.Thread.GetCurrentOSThreadId() | [LibraryImportAttribute(...)] | EntryPoint | ThreadNative_GetCurrentOSThreadId | -| System.UnitySerializationHolder | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.UnitySerializationHolder | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssembly>g__LoadAssemblyLocal\|14_0(System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The same feature switch applies to GetFunctionPointer and this function. We rely on the warning from GetFunctionPointer. | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssemblyBytes>g__LoadAssemblyBytesLocal\|16_0(System.ReadOnlySpan<System.Byte>,System.ReadOnlySpan<System.Byte>) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The same feature switch applies to GetFunctionPointer and this function. We rely on the warning from GetFunctionPointer. | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyImpl(System.String) | [RequiresUnreferencedCodeAttribute(...)] | Url | https://aka.ms/dotnet-illink/nativehost | -| System.Void Internal.Runtime.InteropServices.IsolatedComponentLoadContext..ctor(System.String) | [RequiresUnreferencedCodeAttribute(...)] | Url | https://aka.ms/dotnet-illink/nativehost | -| System.Void Interop.Globalization.CloseSortHandle(System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | GlobalizationNative_CloseSortHandle | -| System.Void System.AccessViolationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.AccessViolationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.AggregateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.AggregateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.AggregateException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.AggregateException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.AppDomain.Unload(System.AppDomain) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0024 | -| System.Void System.AppDomain.Unload(System.AppDomain) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.AppDomainUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.AppDomainUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ApplicationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ApplicationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ArgumentException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ArgumentException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ArgumentException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ArgumentException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ArgumentNullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ArgumentNullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ArgumentOutOfRangeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ArgumentOutOfRangeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ArgumentOutOfRangeException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ArgumentOutOfRangeException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ArithmeticException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ArithmeticException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.BadImageFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.BadImageFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.BadImageFormatException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.BadImageFormatException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Buffer.__Memmove(System.Byte*,System.Byte*,System.UIntPtr) | [LibraryImportAttribute(...)] | EntryPoint | Buffer_MemMove | -| System.Void System.Buffer.__ZeroMemory(System.Void*,System.UIntPtr) | [LibraryImportAttribute(...)] | EntryPoint | Buffer_Clear | -| System.Void System.Buffers.ArrayPoolEventSource.BufferAllocated(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferAllocatedReason) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Buffers.ArrayPoolEventSource.BufferDropped(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferDroppedReason) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Buffers.ArrayPoolEventSource.BufferRented(System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.CannotUnloadAppDomainException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.CannotUnloadAppDomainException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Comparer.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Comparer.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Generic.Dictionary`2..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Generic.Dictionary`2..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Generic.Dictionary`2.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Generic.Dictionary`2.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Generic.HashSet`1..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Generic.HashSet`1..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Generic.HashSet`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Generic.HashSet`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Generic.KeyNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Generic.KeyNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Generic.NonRandomizedStringEqualityComparer..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Generic.NonRandomizedStringEqualityComparer..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Hashtable..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Hashtable..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Hashtable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Hashtable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Collections.Hashtable.SyncHashtable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Collections.Hashtable.SyncHashtable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ComAwareWeakReference.ComWeakRefToObject(System.IntPtr,System.Int64,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ComWeakRefToObject | -| System.Void System.ComponentModel.Win32Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ComponentModel.Win32Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ComponentModel.Win32Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ComponentModel.Win32Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ContextMarshalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ContextMarshalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.DBNull.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.DBNull.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.DataMisalignedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.DataMisalignedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Delegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Delegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Diagnostics.Contracts.Contract.AssertMustUseRewriter(System.Diagnostics.Contracts.ContractFailureKind,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | StackFrame.GetMethod is only used to help diagnosing incorrect use of contracts. It handles missing or incomplete metadata. | -| System.Void System.Diagnostics.Contracts.ContractException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Diagnostics.Contracts.ContractException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Diagnostics.Contracts.ContractException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Diagnostics.Contracts.ContractException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Diagnostics.StackTrace.ToString(System.Diagnostics.StackTrace.TraceFormat,System.Text.StringBuilder) | [UnconditionalSuppressMessageAttribute(...)] | Justification | ToString is best effort when it comes to available information. | -| System.Void System.Diagnostics.Tracing.EventCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The DynamicDependency will preserve the properties of CounterPayload | -| System.Void System.Diagnostics.Tracing.EventPipeInternal.DeleteProvider(System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_DeleteProvider | -| System.Void System.Diagnostics.Tracing.EventPipeInternal.Disable(System.UInt64) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_Disable | -| System.Void System.Diagnostics.Tracing.EventPipeInternal.WriteEventData(System.IntPtr,System.Diagnostics.Tracing.EventProvider.EventData*,System.UInt32,System.Guid*,System.Guid*) | [LibraryImportAttribute(...)] | EntryPoint | EventPipeInternal_WriteEventData | -| System.Void System.Diagnostics.Tracing.EventSource.Write(System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.Write(System.String,System.Diagnostics.Tracing.EventSourceOptions) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Byte[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Diagnostics.Tracing.EventSource.EventSourcePrimitive[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Byte[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Int64,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.String,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventCore(System.Int32,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventVarargs(System.Int32,System.Guid*,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityId(System.Int32,System.Guid,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(System.Int32,System.Guid*,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,!0) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,!0) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,System.Guid,System.Guid,!0) | [UnconditionalSuppressMessageAttribute(...)] | Justification | EnsureDescriptorsInitialized's use of GetType preserves this method which requires unreferenced code, but EnsureDescriptorsInitialized does not access this member and is safe to call. | -| System.Void System.Diagnostics.Tracing.EventSourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Diagnostics.Tracing.EventSourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String,System.Boolean,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Diagnostics.Tracing.IncrementingEventCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The DynamicDependency will preserve the properties of IncrementingCounterPayload | -| System.Void System.Diagnostics.Tracing.IncrementingPollingCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The DynamicDependency will preserve the properties of IncrementingCounterPayload | -| System.Void System.Diagnostics.Tracing.NullableTypeInfo.WriteData(System.Diagnostics.Tracing.PropertyValue) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The underlying type of Nullable<T> must be defaultable | -| System.Void System.Diagnostics.Tracing.PollingCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The DynamicDependency will preserve the properties of CounterPayload | -| System.Void System.DivideByZeroException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.DivideByZeroException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.DllNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.DllNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.DuplicateWaitObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.DuplicateWaitObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.EntryPointNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.EntryPointNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Enum.GetEnumValuesAndNames(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack,Interop.BOOL) | [LibraryImportAttribute(...)] | EntryPoint | Enum_GetValuesAndNames | -| System.Void System.Environment._Exit(System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | Environment_Exit | -| System.Void System.Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Exception.GetMessageFromNativeResources(System.Exception.ExceptionMessageKind,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ExceptionNative_GetMessageFromNativeResources | -| System.Void System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.FieldAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.FieldAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.FormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.FormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.GC._AddMemoryPressure(System.UInt64) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_AddMemoryPressure | -| System.Void System.GC._Collect(System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_Collect | -| System.Void System.GC._EnumerateConfigurationValues(System.Void*,delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void>) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_EnumerateConfigurationValues | -| System.Void System.GC._RemoveMemoryPressure(System.UInt64) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_RemoveMemoryPressure | -| System.Void System.GC._UnregisterFrozenSegment(System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_UnregisterFrozenSegment | -| System.Void System.GC._WaitForPendingFinalizers() | [LibraryImportAttribute(...)] | EntryPoint | GCInterface_WaitForPendingFinalizers | -| System.Void System.Globalization.CultureNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Globalization.CultureNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Globalization.CultureNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Globalization.CultureNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.DirectoryNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.DirectoryNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.EndOfStreamException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.EndOfStreamException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.FileLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.FileLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.FileLoadException.GetMessageForHR(System.Int32,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | FileLoadException_GetMessageForHR | -| System.Void System.IO.FileLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.FileLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.FileNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.FileNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.FileNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.FileNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.FileSystemInfo..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.FileSystemInfo..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.FileSystemInfo.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.FileSystemInfo.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.IOException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.IOException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.InvalidDataException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.InvalidDataException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IO.PathTooLongException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IO.PathTooLongException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.IndexOutOfRangeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.IndexOutOfRangeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.InsufficientExecutionStackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.InsufficientExecutionStackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.InsufficientMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.InsufficientMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.InvalidCastException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.InvalidCastException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.InvalidOperationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.InvalidOperationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.InvalidProgramException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.InvalidProgramException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.InvalidTimeZoneException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.InvalidTimeZoneException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.MemberAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MemberAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.MethodAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MethodAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.MissingFieldException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MissingFieldException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.MissingMemberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MissingMemberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.MissingMemberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MissingMemberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.MissingMethodException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MissingMethodException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ModuleHandle.GetModuleType(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ModuleHandle_GetModuleType | -| System.Void System.ModuleHandle.GetPEKind(System.Runtime.CompilerServices.QCallModule,System.Int32*,System.Int32*) | [LibraryImportAttribute(...)] | EntryPoint | ModuleHandle_GetPEKind | -| System.Void System.ModuleHandle.ResolveField(System.Runtime.CompilerServices.QCallModule,System.Int32,System.IntPtr*,System.Int32,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ModuleHandle_ResolveField | -| System.Void System.ModuleHandle.ResolveType(System.Runtime.CompilerServices.QCallModule,System.Int32,System.IntPtr*,System.Int32,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ModuleHandle_ResolveType | -| System.Void System.MulticastDelegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MulticastDelegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.MulticastNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.MulticastNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.NotFiniteNumberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.NotFiniteNumberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.NotFiniteNumberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.NotFiniteNumberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.NotImplementedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.NotImplementedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.NotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.NotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.NullReferenceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.NullReferenceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ObjectDisposedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ObjectDisposedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.ObjectDisposedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.ObjectDisposedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.OperatingSystem.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.OperatingSystem.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.OperationCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.OperationCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.OutOfMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.OutOfMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.OverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.OverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.PlatformNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.PlatformNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.RankException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.RankException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.AmbiguousMatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.AmbiguousMatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.Assembly.GetEntryAssemblyNative(System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetEntryAssembly | -| System.Void System.Reflection.Assembly.GetExecutingAssemblyNative(System.Runtime.CompilerServices.StackCrawlMarkHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetExecutingAssembly | -| System.Void System.Reflection.Assembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.Assembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.AssemblyName.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.AssemblyName.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.AssemblyName.InitializeAssemblySpec(System.Reflection.NativeAssemblyNameParts*,System.Void*) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyName_InitializeAssemblySpec | -| System.Void System.Reflection.CustomAttribute.AddCustomAttributes(System.RuntimeType.ListBuilder<System.Object>,System.Reflection.RuntimeModule,System.Int32,System.RuntimeType,System.Boolean,System.RuntimeType.ListBuilder<System.Object>) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Linker guarantees presence of all the constructor parameters, property setters and fields which are accessed by any attribute instantiation which is present in the code linker has analyzed.As such the reflection usage in this method will never fail as those methods/fields will be present. | -| System.Void System.Reflection.CustomAttributeFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.CustomAttributeFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.Emit.RuntimeAssemblyBuilder.CreateDynamicAssembly(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Reflection.NativeAssemblyNameParts*,System.Configuration.Assemblies.AssemblyHashAlgorithm,System.Reflection.Emit.AssemblyBuilderAccess,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AppDomain_CreateDynamicAssembly | -| System.Void System.Reflection.Emit.RuntimeEnumBuilder..ctor(System.String,System.Type,System.Reflection.TypeAttributes,System.Reflection.Emit.RuntimeModuleBuilder) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Reflection.Emit is not subject to trimming | -| System.Void System.Reflection.Emit.RuntimeModuleBuilder.SetFieldRVAContent(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | ModuleBuilder_SetFieldRVAContent | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.AddInterfaceImpl(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_AddInterfaceImpl | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineCustomAttribute(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.ReadOnlySpan<System.Byte>,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_DefineCustomAttribute | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodImpl(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_DefineMethodImpl | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodSemantics(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Reflection.MethodSemanticsAttributes,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_DefineMethodSemantics | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetClassLayout(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Reflection.Emit.PackingSize,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_SetClassLayout | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetConstantValue(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Void*) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_SetConstantValue | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetFieldLayoutOffset(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_SetFieldLayoutOffset | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Boolean,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32,System.Reflection.Emit.ExceptionHandler[],System.Int32,System.Int32[],System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_SetMethodIL | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetMethodImpl(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Reflection.MethodImplAttributes) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_SetMethodImpl | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetParentType(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_SetParentType | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.TermCreateClass(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | TypeBuilder_TermCreateClass | -| System.Void System.Reflection.InvalidFilterCriteriaException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.InvalidFilterCriteriaException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.Metadata.MetadataUpdater.ApplyUpdate(System.Runtime.CompilerServices.QCallAssembly,System.Byte*,System.Int32,System.Byte*,System.Int32,System.Byte*,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_ApplyUpdate | -| System.Void System.Reflection.Metadata.RuntimeTypeMetadataUpdateHandler.ClearCache(System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Clearing the caches on a Type isn't affected if a Type is trimmed, or has any of its members trimmed. | -| System.Void System.Reflection.Module.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.Module.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.ReflectionTypeLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.ReflectionTypeLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.ReflectionTypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.ReflectionTypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.RuntimeAssembly.GetEntryPoint(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetEntryPoint | -| System.Void System.Reflection.RuntimeAssembly.GetExportedTypes(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetExportedTypes | -| System.Void System.Reflection.RuntimeAssembly.GetForwardedType(System.Runtime.CompilerServices.QCallAssembly,System.Reflection.MetadataToken,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetForwardedType | -| System.Void System.Reflection.RuntimeAssembly.GetFullName(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetFullName | -| System.Void System.Reflection.RuntimeAssembly.GetImageRuntimeVersion(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetImageRuntimeVersion | -| System.Void System.Reflection.RuntimeAssembly.GetLocale(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetLocale | -| System.Void System.Reflection.RuntimeAssembly.GetLocation(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetLocation | -| System.Void System.Reflection.RuntimeAssembly.GetModules(System.Runtime.CompilerServices.QCallAssembly,System.Boolean,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetModules | -| System.Void System.Reflection.RuntimeAssembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.RuntimeAssembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.RuntimeAssembly.GetPublicKey(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetPublicKey | -| System.Void System.Reflection.RuntimeAssembly.GetSimpleName(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetSimpleName | -| System.Void System.Reflection.RuntimeAssembly.GetVersion(System.Runtime.CompilerServices.QCallAssembly,System.Int32,System.Int32,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_GetVersion | -| System.Void System.Reflection.RuntimeAssembly.InternalLoad(System.Reflection.NativeAssemblyNameParts*,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StackCrawlMarkHandle,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_InternalLoad | -| System.Void System.Reflection.RuntimeConstructorInfo.InvokeClassConstructor() | [UnconditionalSuppressMessageAttribute(...)] | Justification | This ConstructorInfo instance represents the static constructor itself, so if this object was created, the static constructor exists. | -| System.Void System.Reflection.RuntimeCustomAttributeData..ctor(System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.Reflection.ConstArray) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Property setters and fields which are accessed by any attribute instantiation which is present in the code linker has analyzed.As such enumerating all fields and properties may return different results after trimmingbut all those which are needed to actually have data will be there. | -| System.Void System.Reflection.RuntimeCustomAttributeData..ctor(System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.Reflection.ConstArray) | [UnconditionalSuppressMessageAttribute(...)] | Justification | We're getting a MethodBase of a constructor that we found in the metadata. The attribute constructor won't be trimmed. | -| System.Void System.Reflection.RuntimeCustomAttributeData.Init(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | Justification | The pca object had to be created by the single ctor on the Type. So the ctor couldn't have been trimmed. | -| System.Void System.Reflection.RuntimeModule.GetFullyQualifiedName(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeModule_GetFullyQualifiedName | -| System.Void System.Reflection.RuntimeModule.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.RuntimeModule.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.RuntimeModule.GetScopeName(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeModule_GetScopeName | -| System.Void System.Reflection.StrongNameKeyPair..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.StrongNameKeyPair..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.TargetException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.TargetException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.TargetInvocationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.TargetInvocationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Reflection.TargetParameterCountException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Reflection.TargetParameterCountException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Resources.MissingManifestResourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Resources.MissingManifestResourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Resources.MissingSatelliteAssemblyException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Resources.MissingSatelliteAssemblyException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.AmbiguousImplementationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.AmbiguousImplementationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.CompileMethod(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | EntryPoint | ReflectionInvocation_CompileMethod | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(System.Runtime.CompilerServices.RuntimeHelpers.TryCode,System.Runtime.CompilerServices.RuntimeHelpers.CleanupCode,System.Object) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(System.Runtime.CompilerServices.RuntimeHelpers.TryCode,System.Runtime.CompilerServices.RuntimeHelpers.CleanupCode,System.Object) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.GetUninitializedObject(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | ReflectionSerialization_GetUninitializedObject | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegions() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegions() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegionsNoOP() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegionsNoOP() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareContractedDelegate(System.Delegate) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareContractedDelegate(System.Delegate) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(System.RuntimeMethodHandleInternal,System.IntPtr*,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | ReflectionInvocation_PrepareMethod | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.ProbeForSufficientStack() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0004 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.ProbeForSufficientStack() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | EntryPoint | ReflectionInvocation_RunClassConstructor | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.RunModuleConstructor(System.Runtime.CompilerServices.QCallModule) | [LibraryImportAttribute(...)] | EntryPoint | ReflectionInvocation_RunModuleConstructor | -| System.Void System.Runtime.CompilerServices.RuntimeWrappedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.CompilerServices.RuntimeWrappedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.RuntimeWrappedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.CompilerServices.RuntimeWrappedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.ControlledExecution.AbortThread(System.Threading.ThreadHandle) | [LibraryImportAttribute(...)] | EntryPoint | ThreadNative_Abort | -| System.Void System.Runtime.ControlledExecution.ResetAbortThread() | [LibraryImportAttribute(...)] | EntryPoint | ThreadNative_ResetAbort | -| System.Void System.Runtime.ControlledExecution.Run(System.Action,System.Threading.CancellationToken) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0046 | -| System.Void System.Runtime.ControlledExecution.Run(System.Action,System.Threading.CancellationToken) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.COMException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.COMException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal(System.IntPtr,System.IntPtr,System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | ComWrappers_GetIUnknownImpl | -| System.Void System.Runtime.InteropServices.ComWrappers.SetGlobalInstanceRegisteredForMarshalling(System.Int64) | [LibraryImportAttribute(...)] | EntryPoint | ComWrappers_SetGlobalInstanceRegisteredForMarshalling | -| System.Void System.Runtime.InteropServices.ComWrappers.SetGlobalInstanceRegisteredForTrackerSupport(System.Int64) | [LibraryImportAttribute(...)] | EntryPoint | ComWrappers_SetGlobalInstanceRegisteredForTrackerSupport | -| System.Void System.Runtime.InteropServices.ExternalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.ExternalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.InvalidComObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.InvalidComObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.InvalidOleVariantTypeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.InvalidOleVariantTypeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.Marshal.DestroyStructure`1(System.IntPtr) | [UnconditionalSuppressMessageAttribute(...)] | Justification | AOT compilers can see the T. | -| System.Void System.Runtime.InteropServices.Marshal.InternalPrelink(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | EntryPoint | MarshalNative_Prelink | -| System.Void System.Runtime.InteropServices.Marshal.PrelinkAll(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | Justification | This only needs to prelink methods that are actually used | -| System.Void System.Runtime.InteropServices.Marshal.StructureToPtr`1(!0,System.IntPtr,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | Justification | AOT compilers can see the T. | -| System.Void System.Runtime.InteropServices.MarshalDirectiveException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.MarshalDirectiveException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.NativeLibrary.FreeLib(System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | NativeLibrary_FreeLib | -| System.Void System.Runtime.InteropServices.SEHException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.SEHException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.SafeArrayRankMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.SafeArrayRankMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.InteropServices.SafeArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.InteropServices.SafeArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.Intrinsics.X86.X86Base.__cpuidex(System.Int32*,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | EntryPoint | X86BaseCpuId | -| System.Void System.Runtime.Loader.AssemblyLoadContext.LoadFromStream(System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_LoadFromStream | -| System.Void System.Runtime.Loader.AssemblyLoadContext.PrepareForAssemblyLoadContextRelease(System.IntPtr,System.IntPtr) | [LibraryImportAttribute(...)] | EntryPoint | AssemblyNative_PrepareForAssemblyLoadContextRelease | -| System.Void System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Void System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.Serialization.SerializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Runtime.Serialization.SerializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter,System.Boolean) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter,System.Boolean) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.Serialization.StreamingContext..ctor(System.Runtime.Serialization.StreamingContextStates) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Void System.Runtime.Serialization.StreamingContext..ctor(System.Runtime.Serialization.StreamingContextStates) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Runtime.Serialization.StreamingContext..ctor(System.Runtime.Serialization.StreamingContextStates,System.Object) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| System.Void System.Runtime.Serialization.StreamingContext..ctor(System.Runtime.Serialization.StreamingContextStates,System.Object) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.RuntimeFieldHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.RuntimeFieldHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.RuntimeMethodHandle.ConstructInstantiation(System.RuntimeMethodHandleInternal,System.TypeNameFormatFlags,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_ConstructInstantiation | -| System.Void System.RuntimeMethodHandle.Destroy(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_Destroy | -| System.Void System.RuntimeMethodHandle.GetMethodInstantiation(System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.ObjectHandleOnStack,Interop.BOOL) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_GetMethodInstantiation | -| System.Void System.RuntimeMethodHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.RuntimeMethodHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.RuntimeMethodHandle.GetTypicalMethodDefinition(System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_GetTypicalMethodDefinition | -| System.Void System.RuntimeMethodHandle.StripMethodInstantiation(System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeMethodHandle_StripMethodInstantiation | -| System.Void System.RuntimeTypeHandle.ConstructName(System.Runtime.CompilerServices.QCallTypeHandle,System.TypeNameFormatFlags,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_ConstructName | -| System.Void System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.Runtime.CompilerServices.QCallTypeHandle,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_CreateInstanceForAnotherGenericParameter | -| System.Void System.RuntimeTypeHandle.GetActivationInfo(System.Runtime.CompilerServices.ObjectHandleOnStack,delegate* managed<Void*,Object>*,System.Void**,delegate* managed<Object,Void>*,Interop.BOOL*) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_GetActivationInfo | -| System.Void System.RuntimeTypeHandle.GetConstraints(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_GetConstraints | -| System.Void System.RuntimeTypeHandle.GetGenericTypeDefinition(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_GetGenericTypeDefinition | -| System.Void System.RuntimeTypeHandle.GetInstantiation(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack,Interop.BOOL) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_GetInstantiation | -| System.Void System.RuntimeTypeHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.RuntimeTypeHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.RuntimeTypeHandle.Instantiate(System.Runtime.CompilerServices.QCallTypeHandle,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_Instantiate | -| System.Void System.RuntimeTypeHandle.MakeArray(System.Runtime.CompilerServices.QCallTypeHandle,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_MakeArray | -| System.Void System.RuntimeTypeHandle.MakeByRef(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_MakeByRef | -| System.Void System.RuntimeTypeHandle.MakePointer(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_MakePointer | -| System.Void System.RuntimeTypeHandle.MakeSZArray(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_MakeSZArray | -| System.Void System.RuntimeTypeHandle.RegisterCollectibleTypeDependency(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_RegisterCollectibleTypeDependency | -| System.Void System.RuntimeTypeHandle.VerifyInterfaceIsImplemented(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | EntryPoint | RuntimeTypeHandle_VerifyInterfaceIsImplemented | -| System.Void System.Security.Cryptography.CryptographicException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Security.Cryptography.CryptographicException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Security.SecurityException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Security.SecurityException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Security.SecurityException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Security.SecurityException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Security.VerificationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Security.VerificationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.StackOverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.StackOverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.StartupHookProvider.CallStartupHook(System.Char*) | [UnconditionalSuppressMessageAttribute(...)] | Justification | An ILLink warning when trimming an app with System.StartupHookProvider.IsSupported=true already exists for ProcessStartupHooks. | -| System.Void System.SystemException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.SystemException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Text.DecoderFallbackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Text.DecoderFallbackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Text.EncoderFallbackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Text.EncoderFallbackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Text.UTF7Encoding..ctor() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0001 | -| System.Void System.Text.UTF7Encoding..ctor() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Text.UTF7Encoding..ctor(System.Boolean) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0001 | -| System.Void System.Text.UTF7Encoding..ctor(System.Boolean) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.AbandonedMutexException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.AbandonedMutexException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.CompressedStack.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.CompressedStack.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.ExecutionContext.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.ExecutionContext.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Interlocked._MemoryBarrierProcessWide() | [LibraryImportAttribute(...)] | EntryPoint | Interlocked_MemoryBarrierProcessWide | -| System.Void System.Threading.LockRecursionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.LockRecursionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.SemaphoreFullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.SemaphoreFullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.SynchronizationLockException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.SynchronizationLockException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Tasks.TaskCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.Tasks.TaskCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Tasks.TaskSchedulerException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.Tasks.TaskSchedulerException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Tasks.TplEventSource.AwaitTaskContinuationScheduled(System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Threading.Tasks.TplEventSource.TaskCompleted(System.Int32,System.Int32,System.Int32,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Threading.Tasks.TplEventSource.TaskScheduled(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Threading.Tasks.TplEventSource.TaskWaitBegin(System.Int32,System.Int32,System.Int32,System.Threading.Tasks.TplEventSource.TaskWaitBehavior,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Threading.Tasks.TplEventSource.TraceOperationBegin(System.Int32,System.String,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Threading.Tasks.TplEventSource.TraceSynchronousWorkEnd(System.Threading.Tasks.CausalitySynchronousWork) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Parameters to this method are primitive and are trimmer safe | -| System.Void System.Threading.Thread.Abort() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0006 | -| System.Void System.Threading.Thread.Abort() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Thread.Abort(System.Object) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0006 | -| System.Void System.Threading.Thread.Abort(System.Object) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Thread.ResetAbort() | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0006 | -| System.Void System.Threading.Thread.ResetAbort() | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Thread.SetCompressedStack(System.Threading.CompressedStack) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0003 | -| System.Void System.Threading.Thread.SetCompressedStack(System.Threading.CompressedStack) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.Thread.StartInternal(System.Threading.ThreadHandle,System.Int32,System.Int32,System.Char*) | [LibraryImportAttribute(...)] | EntryPoint | ThreadNative_Start | -| System.Void System.Threading.ThreadAbortException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.ThreadAbortException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.ThreadInterruptedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.ThreadInterruptedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.ThreadStartException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.ThreadStartException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.ThreadStateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.ThreadStateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Threading.WaitHandleCannotBeOpenedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.Threading.WaitHandleCannotBeOpenedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.TimeZoneNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TimeZoneNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.TimeoutException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TimeoutException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.Type.GetEnumData(System.String[],System.Array) | [UnconditionalSuppressMessageAttribute(...)] | Justification | Literal fields on enums can never be trimmed | -| System.Void System.TypeAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TypeAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.TypeInitializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TypeInitializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.TypeInitializationException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TypeInitializationException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.TypeLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TypeLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.TypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.TypeUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.TypeUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.UnauthorizedAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.UnauthorizedAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.WeakReference..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.WeakReference..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.WeakReference.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.WeakReference.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| System.Void System.WeakReference`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0051 | -| System.Void System.WeakReference`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| bool System.Reflection.Assembly.GlobalAssemblyCache | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0005 | -| bool System.Reflection.Assembly.GlobalAssemblyCache | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| bool System.Reflection.FieldInfo.IsNotSerialized | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| bool System.Reflection.FieldInfo.IsNotSerialized | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| bool System.Reflection.RuntimeAssembly.GlobalAssemblyCache | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0005 | -| bool System.Reflection.RuntimeAssembly.GlobalAssemblyCache | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| bool System.Reflection.SignatureType.IsSerializable | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| bool System.Reflection.SignatureType.IsSerializable | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| bool System.Type.IsSerializable | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0050 | -| bool System.Type.IsSerializable | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| byte | [ConstantExpectedAttribute(...)] | Max | 1 | -| byte | [ConstantExpectedAttribute(...)] | Max | 3 | -| byte | [ConstantExpectedAttribute(...)] | Max | 7 | -| byte | [ConstantExpectedAttribute(...)] | Max | 8 | -| byte | [ConstantExpectedAttribute(...)] | Max | 15 | -| byte | [ConstantExpectedAttribute(...)] | Max | 16 | -| byte | [ConstantExpectedAttribute(...)] | Max | 31 | -| byte | [ConstantExpectedAttribute(...)] | Max | 32 | -| byte | [ConstantExpectedAttribute(...)] | Max | 63 | -| byte | [ConstantExpectedAttribute(...)] | Max | 64 | -| byte | [ConstantExpectedAttribute(...)] | Max | 127 | -| byte | [ConstantExpectedAttribute(...)] | Max | 128 | -| byte | [ConstantExpectedAttribute(...)] | Min | 1 | -| delegate* managed<Byte&,Void> System.Array.ArrayInitializeCache.GetElementConstructorEntrypoint(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | EntryPoint | Array_GetElementConstructorEntrypoint | -| string System.Reflection.Assembly.CodeBase | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0012 | -| string System.Reflection.Assembly.CodeBase | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| string System.Reflection.Assembly.EscapedCodeBase | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0012 | -| string System.Reflection.Assembly.EscapedCodeBase | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| string System.Reflection.AssemblyName.CodeBase | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0044 | -| string System.Reflection.AssemblyName.CodeBase | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| string System.Reflection.AssemblyName.EscapedCodeBase | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0044 | -| string System.Reflection.AssemblyName.EscapedCodeBase | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| string System.Reflection.Emit.AssemblyBuilder.CodeBase | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0012 | -| string System.Reflection.Emit.AssemblyBuilder.CodeBase | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -| string System.Reflection.RuntimeAssembly.CodeBase | [ObsoleteAttribute(...)] | DiagnosticId | SYSLIB0012 | -| string System.Reflection.RuntimeAssembly.CodeBase | [ObsoleteAttribute(...)] | UrlFormat | https://aka.ms/dotnet-warnings/{0} | -attrArgPositional -| !0 | [NotNullIfNotNullAttribute(...)] | 0 | location | -| !0 | [NotNullIfNotNullAttribute(...)] | 0 | value | -| !0 | [NullableAttribute(...)] | 0 | 1 | -| !0 | [NullableAttribute(...)] | 0 | 2 | -| !0 System.ArraySegment`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.ArraySegment`1.Enumerator.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.HashSet`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.HashSet`1.Enumerator.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.IAsyncEnumerator`1.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.IAsyncEnumerator`1.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.IEnumerator`1.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.IEnumerator`1.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.List`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.List`1.Enumerator.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.Queue`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Collections.Generic.Queue`1.Enumerator.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Enum.Parse`1(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Enum.Parse`1(System.ReadOnlySpan<System.Char>,System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Enum.Parse`1(System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Enum.Parse`1(System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Func`1.Invoke() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.IO.Enumeration.FileSystemEnumerable`1.FindTransform.Invoke(System.IO.Enumeration.FileSystemEntry) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.IO.Enumeration.FileSystemEnumerator`1.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.IO.Enumeration.FileSystemEnumerator`1.TransformEntry(System.IO.Enumeration.FileSystemEntry) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.IO.Enumeration.FileSystemEnumerator`1.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.IParsable`1.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Lazy`1.Value | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| !0 System.Lazy`1.ValueForDebugDisplay | [NullableAttribute(...)] | 0 | 2 | -| !0 System.Numerics.IBinaryInteger`1.ReadBigEndian(System.ReadOnlySpan<System.Byte>,System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Numerics.IBinaryInteger`1.ReadLittleEndian(System.ReadOnlySpan<System.Byte>,System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Numerics.IBinaryNumber`1.AllBitsSet | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Numerics.IBinaryNumber`1.Log2(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.IBinaryNumber`1.get_AllBitsSet() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.INumberBase`1.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Numerics.INumberBase`1.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Numerics.INumberBase`1.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Numerics.INumberBase`1.Parse(System.ReadOnlySpan<System.Byte>,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Numerics.INumberBase`1.Parse(System.ReadOnlySpan<System.Char>,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Numerics.IPowerFunctions`1.Pow(!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.IRootFunctions`1.Cbrt(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.IRootFunctions`1.Hypot(!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.IRootFunctions`1.RootN(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.IRootFunctions`1.Sqrt(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.ISignedNumber`1.NegativeOne | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Numerics.ISignedNumber`1.get_NegativeOne() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.Vector.Dot`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.Vector.GetElement`1(System.Numerics.Vector<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.Vector.Sum`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.Vector.ToScalar`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Numerics.Vector`1.Item | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Numerics.Vector`1.get_Item(System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.ReadOnlySpan`1.GetPinnableReference() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| !0 System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.CompilerServices.Unsafe.AddByteOffset`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.CompilerServices.Unsafe.Add`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.CompilerServices.Unsafe.AsRef`1(System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.CompilerServices.Unsafe.AsRef`1(System.Void*) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Runtime.CompilerServices.Unsafe.As`1(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| !0 System.Runtime.CompilerServices.Unsafe.ReadUnaligned`1(System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.CompilerServices.Unsafe.ReadUnaligned`1(System.Void*) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Runtime.CompilerServices.Unsafe.Read`1(System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.CompilerServices.Unsafe.Read`1(System.Void*) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Runtime.CompilerServices.Unsafe.SubtractByteOffset`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.CompilerServices.Unsafe.Subtract`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.CompilerServices.Unsafe.Unbox`1(System.Object) | [NullableContextAttribute(...)] | 0 | 0 | -| !0 System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.ComWrappers.ComInterfaceDispatch.GetInstance`1(System.Runtime.InteropServices.ComWrappers.ComInterfaceDispatch*) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.Marshal.GetObjectForNativeVariant`1(System.IntPtr) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.Marshal.GetObjectForNativeVariant`1(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| !0 System.Runtime.InteropServices.Marshal.GetObjectForNativeVariant`1(System.IntPtr) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| !0 System.Runtime.InteropServices.Marshal.PtrToStructure`1(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| !0 System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn.GetPinnableReference(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn.GetPinnableReference(System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1.ManagedToUnmanagedOut.ToManaged() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn.GetPinnableReference(System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference`1(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.MemoryMarshal.GetReference`1(System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.MemoryMarshal.GetReference`1(System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.InteropServices.SafeBuffer.Read`1(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| !0 System.Runtime.Intrinsics.Vector64.Dot`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector64.GetElement`1(System.Runtime.Intrinsics.Vector64<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector64.Sum`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector64.ToScalar`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector128.Dot`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector128.GetElement`1(System.Runtime.Intrinsics.Vector128<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector128.Sum`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector128.ToScalar`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector256.Dot`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector256.GetElement`1(System.Runtime.Intrinsics.Vector256<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector256.Sum`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector256.ToScalar`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector512.Dot`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector512.GetElement`1(System.Runtime.Intrinsics.Vector512<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector512.Sum`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Runtime.Intrinsics.Vector512.ToScalar`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Span`1.GetPinnableReference() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| !0 System.Threading.Tasks.Sources.IValueTaskSource`1.GetResult(System.Int16) | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Threading.Tasks.Task`1.Result | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| !0 System.Threading.Tasks.ValueTask`1.Result | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| !0 System.Threading.ThreadLocal`1.Value | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| !0 System.Threading.ThreadLocal`1.ValueForDebugDisplay | [NullableAttribute(...)] | 0 | 2 | -| !0 System.Tuple`1.Item1 | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Tuple`1.get_Item1() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.Tuple`2.Item1 | [NullableAttribute(...)] | 0 | 1 | -| !0 System.Tuple`2.get_Item1() | [NullableContextAttribute(...)] | 0 | 1 | -| !0 System.WeakReference`1.Target | [NullableAttribute(...)] | 0 | 2 | -| !0* | [NullableAttribute(...)] | 0 | [0,1] | -| !0*[] | [NullableAttribute(...)] | 0 | [2,0,0] | -| !0[] | [NullableAttribute(...)] | 0 | 1 | -| !0[] | [NullableAttribute(...)] | 0 | [1,0] | -| !0[] | [NullableAttribute(...)] | 0 | [2,1] | -| !0[] System.ArraySegment`1.Array | [NullableAttribute(...)] | 0 | [2,1] | -| !0[] System.Buffers.SearchValuesDebugView`1.Values | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !0[] System.Collections.Concurrent.IProducerConsumerCollectionDebugView`1.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !0[] System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.SingleProducerSingleConsumerQueue_DebugView.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !0[] System.Collections.Generic.DictionaryKeyCollectionDebugView`2.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !0[] System.Collections.Generic.ICollectionDebugView`1.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !0[] System.Collections.Generic.QueueDebugView`1.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !0[] System.Enum.GetValues`1() | [NullableContextAttribute(...)] | 0 | 0 | -| !0[] System.MemoryDebugView`1.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !0[] System.Runtime.InteropServices.Marshal.GetObjectsForNativeVariants`1(System.IntPtr,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| !0[] System.Runtime.InteropServices.Marshal.GetObjectsForNativeVariants`1(System.IntPtr,System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| !0[] System.SpanDebugView`1.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !1 | [NullableAttribute(...)] | 0 | 1 | -| !1 System.Collections.Generic.CollectionExtensions.GetValueOrDefault`2(System.Collections.Generic.IReadOnlyDictionary<!0,!1>,!0) | [NullableContextAttribute(...)] | 0 | 2 | -| !1 System.Collections.Generic.Dictionary`2.ValueCollection.Enumerator.Current | [NullableAttribute(...)] | 0 | 1 | -| !1 System.Collections.Generic.Dictionary`2.ValueCollection.Enumerator.get_Current() | [NullableContextAttribute(...)] | 0 | 1 | -| !1 System.Converter`2.Invoke(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !1 System.Func`2.Invoke(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !1 System.Numerics.IUnaryPlusOperators`2.op_UnaryPlus(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !1 System.Runtime.CompilerServices.ConditionalWeakTable`2.CreateValueCallback.Invoke(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| !1 System.Runtime.CompilerServices.Unsafe.BitCast`2(!0) | [NullableContextAttribute(...)] | 0 | 0 | -| !1 System.Runtime.InteropServices.Marshal.CreateWrapperOfType`2(!0) | [NullableContextAttribute(...)] | 0 | 2 | -| !1 System.Runtime.InteropServices.Marshal.CreateWrapperOfType`2(!0) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| !1 System.Tuple`2.Item2 | [NullableAttribute(...)] | 0 | 1 | -| !1 System.Tuple`2.get_Item2() | [NullableContextAttribute(...)] | 0 | 1 | -| !1[] | [NullableAttribute(...)] | 0 | [2,1] | -| !1[] System.Collections.Generic.DictionaryValueCollectionDebugView`2.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| !2 | [NullableAttribute(...)] | 0 | 1 | -| !2 System.Func`3.Invoke(!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| !2 System.Numerics.IModulusOperators`3.op_Modulus(!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| !3 System.Func`4.Invoke(!0,!1,!2) | [NullableContextAttribute(...)] | 0 | 1 | -| !4 System.Func`5.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !4 System.Func`5.Invoke(!0,!1,!2,!3) | [NullableContextAttribute(...)] | 0 | 1 | -| !5 System.Func`6.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !5 System.Func`6.Invoke(!0,!1,!2,!3,!4) | [NullableContextAttribute(...)] | 0 | 1 | -| !6 System.Func`7.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !6 System.Func`7.Invoke(!0,!1,!2,!3,!4,!5) | [NullableContextAttribute(...)] | 0 | 1 | -| !7 | [NullableAttribute(...)] | 0 | 0 | -| !7 System.Func`8.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !7 System.Func`8.Invoke(!0,!1,!2,!3,!4,!5,!6) | [NullableContextAttribute(...)] | 0 | 1 | -| !8 System.Func`9.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !8 System.Func`9.Invoke(!0,!1,!2,!3,!4,!5,!6,!7) | [NullableContextAttribute(...)] | 0 | 1 | -| !9 System.Func`10.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !9 System.Func`10.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8) | [NullableContextAttribute(...)] | 0 | 1 | -| !10 System.Func`11.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !10 System.Func`11.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9) | [NullableContextAttribute(...)] | 0 | 1 | -| !11 System.Func`12.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !11 System.Func`12.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10) | [NullableContextAttribute(...)] | 0 | 1 | -| !12 System.Func`13.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !12 System.Func`13.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11) | [NullableContextAttribute(...)] | 0 | 1 | -| !13 System.Func`14.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !13 System.Func`14.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12) | [NullableContextAttribute(...)] | 0 | 1 | -| !14 System.Func`15.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !14 System.Func`15.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13) | [NullableContextAttribute(...)] | 0 | 1 | -| !15 System.Func`16.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !15 System.Func`16.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14) | [NullableContextAttribute(...)] | 0 | 1 | -| !16 System.Func`17.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| !16 System.Func`17.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15) | [NullableContextAttribute(...)] | 0 | 1 | -| Internal.Runtime.InteropServices.ComponentActivator.s_assemblyLoadContexts | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| Internal.Runtime.InteropServices.ComponentActivator.s_assemblyLoadContexts | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| Internal.Runtime.InteropServices.ComponentActivator.s_assemblyLoadContexts | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| Internal.Runtime.InteropServices.ComponentActivator.s_assemblyLoadContexts | [UnsupportedOSPlatformAttribute(...)] | 0 | maccatalyst | -| Internal.Runtime.InteropServices.ComponentActivator.s_assemblyLoadContexts | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext | [UnsupportedOSPlatformAttribute(...)] | 0 | maccatalyst | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext Internal.Runtime.InteropServices.ComponentActivator.GetIsolatedComponentLoadContext(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Native hosting is not trim compatible and this warning will be seen if trimming is enabled. | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext Internal.Runtime.InteropServices.ComponentActivator.GetIsolatedComponentLoadContext(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext Internal.Runtime.InteropServices.ComponentActivator.GetIsolatedComponentLoadContext(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext Internal.Runtime.InteropServices.ComponentActivator.GetIsolatedComponentLoadContext(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| Internal.Runtime.InteropServices.IsolatedComponentLoadContext Internal.Runtime.InteropServices.ComponentActivator.GetIsolatedComponentLoadContext(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| Interop.BOOL Interop.Kernel32.FreeEnvironmentStringsW(System.Char*) | [LibraryImportAttribute(...)] | 0 | QCall | -| Interop.BOOL System.Reflection.RuntimeAssembly.GetIsCollectible(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | 0 | QCall | -| Interop.BOOL System.RuntimeMethodHandle.GetIsCollectible(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | 0 | QCall | -| Interop.BOOL System.RuntimeMethodHandle.IsCAVisibleFromDecoratedType(System.Runtime.CompilerServices.QCallTypeHandle,System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallModule) | [LibraryImportAttribute(...)] | 0 | QCall | -| Interop.BOOL System.RuntimeTypeHandle.IsCollectible(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| Interop.BOOL System.Threading.Thread.YieldInternal() | [LibraryImportAttribute(...)] | 0 | QCall | -| Interop.Globalization.ResultCode Interop.Globalization.GetCalendarInfo(System.String,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| Interop.Globalization.ResultCode Interop.Globalization.GetCalendarInfo(System.String,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| Interop.Globalization.ResultCode Interop.Globalization.GetSortHandle(System.String,System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| Interop.Globalization.ResultCode Interop.Globalization.GetSortHandle(System.String,System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| Interop.Globalization.ResultCode Interop.Globalization.GetTimeZoneDisplayName(System.String,System.String,Interop.Globalization.TimeZoneDisplayNameType,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| Interop.Globalization.ResultCode Interop.Globalization.GetTimeZoneDisplayName(System.String,System.String,Interop.Globalization.TimeZoneDisplayNameType,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| Interop.HostPolicy.corehost_error_writer_fn | [UnmanagedFunctionPointerAttribute(...)] | 0 | 2 | -| Interop.HostPolicy.corehost_resolve_component_dependencies_result_fn | [UnmanagedFunctionPointerAttribute(...)] | 0 | 2 | -| Microsoft.Win32.SafeHandles.SafeFileHandle | [NullableAttribute(...)] | 0 | 0 | -| Microsoft.Win32.SafeHandles.SafeFileHandle | [NullableAttribute(...)] | 0 | 1 | -| Microsoft.Win32.SafeHandles.SafeFileHandle | [NullableContextAttribute(...)] | 0 | 2 | -| Microsoft.Win32.SafeHandles.SafeWaitHandle | [NullableAttribute(...)] | 0 | 2 | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateEventEx(System.IntPtr,System.String,System.UInt32,System.UInt32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateEventEx(System.IntPtr,System.String,System.UInt32,System.UInt32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateMutexEx(System.IntPtr,System.String,System.UInt32,System.UInt32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateMutexEx(System.IntPtr,System.String,System.UInt32,System.UInt32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateSemaphoreEx(System.IntPtr,System.Int32,System.Int32,System.String,System.UInt32,System.UInt32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.CreateSemaphoreEx(System.IntPtr,System.Int32,System.Int32,System.String,System.UInt32,System.UInt32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.OpenMutex(System.UInt32,System.Boolean,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| Microsoft.Win32.SafeHandles.SafeWaitHandle Interop.Kernel32.OpenMutex(System.UInt32,System.Boolean,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| Microsoft.Win32.SafeHandles.SafeWaitHandle System.Threading.RegisteredWaitHandle.Handle | [NullableAttribute(...)] | 0 | 1 | -| System.AccessViolationException | [NullableAttribute(...)] | 0 | 0 | -| System.AccessViolationException | [NullableContextAttribute(...)] | 0 | 2 | -| System.AccessViolationException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Action<System.Object,System.Threading.CancellationToken> | [NullableAttribute(...)] | 0 | [1,2] | -| System.Action<System.Object,System.Threading.Tasks.Task<!0>> | [NullableAttribute(...)] | 0 | [1,1,1,2] | -| System.Action<System.Object,System.Threading.Tasks.Task> | [NullableAttribute(...)] | 0 | [1,1,2] | -| System.Action<System.Object> | [NullableAttribute(...)] | 0 | [1,2] | -| System.Action<System.Runtime.Loader.AssemblyLoadContext> | [NullableAttribute(...)] | 0 | [2,1] | -| System.Action<System.Threading.AsyncLocalValueChangedArgs<!0>> | [NullableAttribute(...)] | 0 | [2,0,1] | -| System.Action`4 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`4 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`5 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`5 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`6 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`6 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`7 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`7 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`8 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`8 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`9 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`9 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`10 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`10 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`11 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`11 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`12 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`12 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`13 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`13 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`14 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`14 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`15 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`15 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Action`16 | [NullableAttribute(...)] | 0 | 0 | -| System.Action`16 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Activator | [NullableAttribute(...)] | 0 | 0 | -| System.Activator | [NullableContextAttribute(...)] | 0 | 1 | -| System.AggregateException | [DebuggerDisplayAttribute(...)] | 0 | Count = {InnerExceptionCount} | -| System.AggregateException | [NullableAttribute(...)] | 0 | 0 | -| System.AggregateException | [NullableContextAttribute(...)] | 0 | 1 | -| System.AggregateException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.AggregateException System.Threading.Tasks.Task.Exception | [NullableAttribute(...)] | 0 | 2 | -| System.AggregateException System.Threading.Tasks.Task.get_Exception() | [NullableContextAttribute(...)] | 0 | 2 | -| System.AppContext | [NullableAttribute(...)] | 0 | 0 | -| System.AppContext | [NullableContextAttribute(...)] | 0 | 1 | -| System.AppContext.FirstChanceException | [NullableAttribute(...)] | 0 | [2,1] | -| System.AppContext.ProcessExit | [NullableAttribute(...)] | 0 | 2 | -| System.AppContext.UnhandledException | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain | [NullableAttribute(...)] | 0 | 0 | -| System.AppDomain | [NullableContextAttribute(...)] | 0 | 1 | -| System.AppDomain System.AppDomain.CreateDomain(System.String) | [ObsoleteAttribute(...)] | 0 | Creating and unloading AppDomains is not supported and throws an exception. | -| System.AppDomain.AssemblyLoad | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain.AssemblyResolve | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain.DomainUnload | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain.FirstChanceException | [NullableAttribute(...)] | 0 | [2,1] | -| System.AppDomain.ProcessExit | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain.ReflectionOnlyAssemblyResolve | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain.ResourceResolve | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain.TypeResolve | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomain.UnhandledException | [NullableAttribute(...)] | 0 | 2 | -| System.AppDomainSetup | [NullableAttribute(...)] | 0 | 0 | -| System.AppDomainSetup | [NullableContextAttribute(...)] | 0 | 2 | -| System.AppDomainUnloadedException | [NullableAttribute(...)] | 0 | 0 | -| System.AppDomainUnloadedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.AppDomainUnloadedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ApplicationException | [NullableAttribute(...)] | 0 | 0 | -| System.ApplicationException | [NullableContextAttribute(...)] | 0 | 2 | -| System.ApplicationException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ApplicationId | [NullableAttribute(...)] | 0 | 0 | -| System.ApplicationId | [NullableContextAttribute(...)] | 0 | 1 | -| System.ArgumentException | [NullableAttribute(...)] | 0 | 0 | -| System.ArgumentException | [NullableContextAttribute(...)] | 0 | 2 | -| System.ArgumentException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ArgumentNullException | [NullableAttribute(...)] | 0 | 0 | -| System.ArgumentNullException | [NullableContextAttribute(...)] | 0 | 2 | -| System.ArgumentNullException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ArgumentOutOfRangeException | [NullableAttribute(...)] | 0 | 0 | -| System.ArgumentOutOfRangeException | [NullableContextAttribute(...)] | 0 | 1 | -| System.ArgumentOutOfRangeException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ArithmeticException | [NullableAttribute(...)] | 0 | 0 | -| System.ArithmeticException | [NullableContextAttribute(...)] | 0 | 2 | -| System.ArithmeticException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Array | [NullableAttribute(...)] | 0 | 0 | -| System.Array | [NullableAttribute(...)] | 0 | 1 | -| System.Array | [NullableAttribute(...)] | 0 | 2 | -| System.Array | [NullableContextAttribute(...)] | 0 | 1 | -| System.Array | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Array System.Array.CreateInstance(System.Type,System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Array.CreateInstance(System.Type,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Array System.Array.CreateInstance(System.Type,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:RequiresDynamicCode | -| System.Array System.Array.CreateInstance(System.Type,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Array System.Array.CreateInstance(System.Type,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:RequiresDynamicCode | -| System.Array System.Array.CreateInstance(System.Type,System.Int32[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Array.CreateInstance(System.Type,System.Int32[],System.Int32[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Array.CreateInstance(System.Type,System.Int64[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Collections.ArrayList.FixedSizeArrayList.ToArray(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Collections.ArrayList.IListWrapper.ToArray(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Collections.ArrayList.Range.ToArray(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Collections.ArrayList.ReadOnlyArrayList.ToArray(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Collections.ArrayList.SyncArrayList.ToArray(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Collections.ArrayList.ToArray(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Array System.Enum.GetValues(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | It might not be possible to create an array of the enum type at runtime. Use the GetValues<TEnum> overload or the GetValuesAsUnderlyingType method instead. | -| System.Array System.Reflection.SignatureType.GetEnumValues() | [RequiresDynamicCodeAttribute(...)] | 0 | It might not be possible to create an array of the enum type at runtime. Use Enum.GetValues<T> or the GetEnumValuesAsUnderlyingType method instead. | -| System.Array System.RuntimeType.GetEnumValues() | [RequiresDynamicCodeAttribute(...)] | 0 | It might not be possible to create an array of the enum type at runtime. Use Enum.GetValues<T> or the GetEnumValuesAsUnderlyingType method instead. | -| System.Array System.Type.GetEnumValues() | [RequiresDynamicCodeAttribute(...)] | 0 | It might not be possible to create an array of the enum type at runtime. Use Enum.GetValues<T> or the GetEnumValuesAsUnderlyingType method instead. | -| System.ArraySegment<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.ArraySegment<!0> System.ArraySegment`1.Empty | [NullableAttribute(...)] | 0 | [0,1] | -| System.ArraySegment<!0>.Enumerator System.ArraySegment`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 0 | -| System.ArraySegment`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.ArraySegment`1 | [NullableAttribute(...)] | 0 | 0 | -| System.ArraySegment`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.ArraySegment`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ArraySegment`1.Enumerator | [NullableContextAttribute(...)] | 0 | 0 | -| System.ArrayTypeMismatchException | [NullableAttribute(...)] | 0 | 0 | -| System.ArrayTypeMismatchException | [NullableContextAttribute(...)] | 0 | 2 | -| System.ArrayTypeMismatchException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.AssemblyLoadEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.AssemblyLoadEventArgs | [NullableAttribute(...)] | 0 | 1 | -| System.AssemblyLoadEventArgs | [NullableContextAttribute(...)] | 0 | 1 | -| System.AsyncCallback | [NullableAttribute(...)] | 0 | 0 | -| System.AsyncCallback | [NullableAttribute(...)] | 0 | 2 | -| System.Attribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Attribute | [NullableAttribute(...)] | 0 | 0 | -| System.Attribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Attribute | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Attribute System.Diagnostics.Tracing.EventSource.GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Attribute System.Diagnostics.Tracing.EventSource.GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2114:ReflectionToDynamicallyAccessedMembers | -| System.AttributeUsageAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.AttributeUsageAttribute System.Reflection.CustomAttribute.GetAttributeUsage(System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.AttributeUsageAttribute System.Reflection.CustomAttribute.GetAttributeUsage(System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.BadImageFormatException | [NullableAttribute(...)] | 0 | 0 | -| System.BadImageFormatException | [NullableContextAttribute(...)] | 0 | 2 | -| System.BadImageFormatException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.BitConverter | [NullableAttribute(...)] | 0 | 0 | -| System.BitConverter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean Interop.Globalization.EndsWith(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.EndsWith(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.EnumCalendarInfo(System.IntPtr,System.String,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.EnumCalendarInfo(System.IntPtr,System.String,System.Globalization.CalendarId,System.Globalization.CalendarDataType,System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.GetDefaultLocaleName(System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.GetDefaultLocaleName(System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.GetJapaneseEraStartDate(System.Int32,System.Int32,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.GetJapaneseEraStartDate(System.Int32,System.Int32,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.GetJapaneseEraStartDate(System.Int32,System.Int32,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | libSystem.Globalization.Native | -| System.Boolean Interop.Globalization.GetLocaleInfoGroupingSizes(System.String,System.UInt32,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.GetLocaleInfoGroupingSizes(System.String,System.UInt32,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.GetLocaleInfoInt(System.String,System.UInt32,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.GetLocaleInfoInt(System.String,System.UInt32,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.GetLocaleInfoString(System.String,System.UInt32,System.Char*,System.Int32,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.GetLocaleInfoString(System.String,System.UInt32,System.Char*,System.Int32,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.GetLocaleName(System.String,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.GetLocaleName(System.String,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.GetLocaleTimeFormat(System.String,System.Boolean,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.GetLocaleTimeFormat(System.String,System.Boolean,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.IsPredefinedLocale(System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.IsPredefinedLocale(System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Globalization.StartsWith(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Globalization.StartsWith(System.IntPtr,System.Char*,System.Int32,System.Char*,System.Int32,System.Globalization.CompareOptions,System.Int32*) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Kernel32.CloseHandle(System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Kernel32.CloseHandle(System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Kernel32.CloseHandle(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean Interop.Kernel32.ReleaseMutex(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Kernel32.ReleaseMutex(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Kernel32.ReleaseMutex(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean Interop.Kernel32.ReleaseSemaphore(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Kernel32.ReleaseSemaphore(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Kernel32.ReleaseSemaphore(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean Interop.Kernel32.ResetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Kernel32.ResetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Kernel32.ResetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean Interop.Kernel32.SetEnvironmentVariable(System.String,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Kernel32.SetEnvironmentVariable(System.String,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Kernel32.SetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean Interop.Kernel32.SetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean Interop.Kernel32.SetEvent(Microsoft.Win32.SafeHandles.SafeWaitHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.ApplicationId.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ArgIterator.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ArraySegment`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Attribute.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Attribute.Equals(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Boolean System.Attribute.Equals(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Boolean System.Attribute.Match(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.BitConverter.ToBoolean(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Char) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Double) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Half) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Int16) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Int64) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.Single) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.UInt16) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.UInt32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.BitConverter.TryWriteBytes(System.Span<System.Byte>,System.UInt64) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Boolean.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Boolean.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Boolean.TryParse(System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt16BigEndian(System.ReadOnlySpan<System.Byte>,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt16LittleEndian(System.ReadOnlySpan<System.Byte>,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt32BigEndian(System.ReadOnlySpan<System.Byte>,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt32LittleEndian(System.ReadOnlySpan<System.Byte>,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt64BigEndian(System.ReadOnlySpan<System.Byte>,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt64LittleEndian(System.ReadOnlySpan<System.Byte>,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt128BigEndian(System.ReadOnlySpan<System.Byte>,System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUInt128LittleEndian(System.ReadOnlySpan<System.Byte>,System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUIntPtrBigEndian(System.ReadOnlySpan<System.Byte>,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryReadUIntPtrLittleEndian(System.ReadOnlySpan<System.Byte>,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt16BigEndian(System.Span<System.Byte>,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt16LittleEndian(System.Span<System.Byte>,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt32BigEndian(System.Span<System.Byte>,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt32LittleEndian(System.Span<System.Byte>,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt64BigEndian(System.Span<System.Byte>,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt64LittleEndian(System.Span<System.Byte>,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt128BigEndian(System.Span<System.Byte>,System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUInt128LittleEndian(System.Span<System.Byte>,System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUIntPtrBigEndian(System.Span<System.Byte>,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Binary.BinaryPrimitives.TryWriteUIntPtrLittleEndian(System.Span<System.Byte>,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.SearchValues`1.Contains(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Buffers.StandardFormat.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Buffers.Text.Utf8Formatter.TryFormat(System.SByte,System.Span<System.Byte>,System.Int32,System.Buffers.StandardFormat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Text.Utf8Formatter.TryFormat(System.UInt16,System.Span<System.Byte>,System.Int32,System.Buffers.StandardFormat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Text.Utf8Formatter.TryFormat(System.UInt32,System.Span<System.Byte>,System.Int32,System.Buffers.StandardFormat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Text.Utf8Formatter.TryFormat(System.UInt64,System.Span<System.Byte>,System.Int32,System.Buffers.StandardFormat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan<System.Byte>,System.SByte,System.Int32,System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan<System.Byte>,System.UInt16,System.Int32,System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan<System.Byte>,System.UInt32,System.Int32,System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Buffers.Text.Utf8Parser.TryParse(System.ReadOnlySpan<System.Byte>,System.UInt64,System.Int32,System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Byte.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Byte.TryParse(System.String,System.Byte) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Byte.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Byte) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Byte.TryParse(System.String,System.IFormatProvider,System.Byte) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Char.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Char.IsControl(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsDigit(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsHighSurrogate(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsLetter(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsLetterOrDigit(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsLowSurrogate(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsLower(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsNumber(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsPunctuation(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsSeparator(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsSurrogate(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsSurrogatePair(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsSymbol(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsUpper(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.IsWhiteSpace(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Char.TryParse(System.String,System.Char) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.ArrayList.Contains(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Generic.ByteEqualityComparer.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Generic.Dictionary`2.KeyCollection.Contains(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Collections.Generic.EnumEqualityComparer`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Generic.EqualityComparer`1.Equals(!0,!0) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Generic.NonRandomizedStringEqualityComparer.Equals(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Generic.NullableComparer`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Generic.NullableEqualityComparer`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Generic.ReferenceEqualityComparer.Equals(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.Hashtable.ContainsValue(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Collections.IEqualityComparer.Equals(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ComponentModel.DefaultValueAttribute.ctor>g__TryConvertFromInvariantString\|2_0(System.Type,System.String,System.Object) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Generic TypeConverters may require the generic types to be annotated. For example, NullableConverter requires the underlying type to be DynamicallyAccessedMembers All. | -| System.Boolean System.ComponentModel.EditorBrowsableAttribute.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Console.get_CursorVisible() | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Boolean System.ConsoleKeyInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Convert.ToBoolean(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Convert.ToBoolean(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Convert.ToBoolean(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Convert.ToBoolean(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Convert.TryFromBase64Chars(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Convert.TryFromBase64String(System.String,System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Convert.TryToBase64Chars(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>,System.Int32,System.Base64FormattingOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.DateOnly.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParse(System.String,System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParse(System.String,System.IFormatProvider,System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParseExact(System.ReadOnlySpan<System.Char>,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParseExact(System.String,System.String,System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParseExact(System.String,System.String[],System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateOnly.TryParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTime.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTime.TryParse(System.String,System.DateTime) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTime.TryParse(System.String,System.IFormatProvider,System.DateTime) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTime.TryParse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTime) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTime.TryParseExact(System.ReadOnlySpan<System.Char>,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTime) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTime.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTime) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTime.TryParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTime) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTimeOffset.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTimeOffset.TryParse(System.String,System.DateTimeOffset) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTimeOffset.TryParse(System.String,System.IFormatProvider,System.DateTimeOffset) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTimeOffset.TryParse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTimeOffset) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTimeOffset.TryParseExact(System.ReadOnlySpan<System.Char>,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTimeOffset) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTimeOffset.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTimeOffset) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.DateTimeOffset.TryParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTimeOffset) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Decimal.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Decimal.TryParse(System.String,System.Decimal) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Decimal.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Decimal) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Decimal.TryParse(System.String,System.IFormatProvider,System.Decimal) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Delegate.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Delegate.op_Equality(System.Delegate,System.Delegate) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Delegate.op_Inequality(System.Delegate,System.Delegate) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Diagnostics.Debugger.LaunchInternal() | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Diagnostics.Debugger.LaunchInternal() | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Diagnostics.Debugger.LaunchInternal() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Diagnostics.StackFrameExtensions.HasMethod(System.Diagnostics.StackFrame) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Boolean System.Diagnostics.StackFrameExtensions.HasMethod(System.Diagnostics.StackFrame) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetNextEvent(System.UInt64,System.Diagnostics.Tracing.EventPipeEventInstanceData*) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetNextEvent(System.UInt64,System.Diagnostics.Tracing.EventPipeEventInstanceData*) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetNextEvent(System.UInt64,System.Diagnostics.Tracing.EventPipeEventInstanceData*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetSessionInfo(System.UInt64,System.Diagnostics.Tracing.EventPipeSessionInfo*) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetSessionInfo(System.UInt64,System.Diagnostics.Tracing.EventPipeSessionInfo*) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.GetSessionInfo(System.UInt64,System.Diagnostics.Tracing.EventPipeSessionInfo*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.SignalSession(System.UInt64) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.SignalSession(System.UInt64) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.SignalSession(System.UInt64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.WaitForSessionSignal(System.UInt64,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.WaitForSessionSignal(System.UInt64,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Diagnostics.Tracing.EventPipeInternal.WaitForSessionSignal(System.UInt64,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Double.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Double.TryParse(System.String,System.Double) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Double.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Double) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Double.TryParse(System.String,System.IFormatProvider,System.Double) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Enum.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Enum.IsDefined`1(!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Enum.TryFormat`1(!0,System.Span<System.Char>,System.Int32,System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Enum.TryParse(System.Type,System.ReadOnlySpan<System.Char>,System.Boolean,System.Object) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Enum.TryParse(System.Type,System.ReadOnlySpan<System.Char>,System.Object) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Enum.TryParse(System.Type,System.String,System.Boolean,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Enum.TryParse(System.Type,System.String,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Enum.TryParse`1(System.ReadOnlySpan<System.Char>,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Enum.TryParse`1(System.ReadOnlySpan<System.Char>,System.Boolean,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Enum.TryParse`1(System.String,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Enum.TryParse`1(System.String,System.Boolean,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Globalization.CompareInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Globalization.CompareInfo.IsPrefix(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Globalization.CompareInfo.IsPrefix(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Globalization.CompareInfo.IsSortable(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Globalization.CompareInfo.IsSuffix(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Globalization.CompareInfo.IsSuffix(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Globalization.CultureInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Globalization.IdnMapping.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Globalization.RegionInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Globalization.SortKey.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Globalization.StringInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Globalization.TextInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Guid.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Guid.TryParse(System.String,System.Guid) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Guid.TryParse(System.String,System.IFormatProvider,System.Guid) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Guid.TryParseExact(System.String,System.String,System.Guid) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Half.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Half.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Half) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Half.TryParse(System.String,System.Half) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Half.TryParse(System.String,System.IFormatProvider,System.Half) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.HashCode.Equals(System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Boolean System.HashCode.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.HashCode.Equals(System.Object) | [ObsoleteAttribute(...)] | 0 | HashCode is a mutable struct and should not be compared with other HashCodes. | -| System.Boolean System.HashCode.Equals(System.Object) | [ObsoleteAttribute(...)] | 1 | True | -| System.Boolean System.HexConverter.TryDecodeFromUtf16_Vector128(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Boolean System.HexConverter.TryDecodeFromUtf16_Vector128(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Boolean System.IO.Directory.Exists(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IO.File.Exists(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IO.MemoryStream.TryGetBuffer(System.ArraySegment<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.IO.Path.EndsInDirectorySeparator(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IO.Path.Exists(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IO.Path.HasExtension(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IO.Path.IsPathFullyQualified(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.IO.Path.IsPathRooted(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IParsable`1.TryParse(System.String,System.IFormatProvider,!0) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Index.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int16.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int16.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int16) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int16.TryParse(System.String,System.IFormatProvider,System.Int16) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int16.TryParse(System.String,System.Int16) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int32.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int32.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int32.TryParse(System.String,System.IFormatProvider,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int32.TryParse(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int64.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int64.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int64.TryParse(System.String,System.IFormatProvider,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int64.TryParse(System.String,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int128.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int128.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Int128) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int128.TryParse(System.String,System.IFormatProvider,System.Int128) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Int128.TryParse(System.String,System.Int128) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IntPtr.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IntPtr.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IntPtr.TryParse(System.String,System.IFormatProvider,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.IntPtr.TryParse(System.String,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MdUtf8String.EqualsCaseInsensitive(System.Void*,System.Void*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.MdUtf8String.EqualsCaseInsensitive(System.Void*,System.Void*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.MdUtf8String.EqualsCaseInsensitive(System.Void*,System.Void*,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.MemoryExtensions.ContainsAnyExceptInRange`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAnyExceptInRange`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.ReadOnlySpan<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAnyExcept`1(System.Span<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAnyInRange`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAnyInRange`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.ReadOnlySpan<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.ContainsAny`1(System.Span<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.ReadOnlySpan<!0>,System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.ReadOnlySpan<!0>,System.ReadOnlySpan<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.Span<!0>,System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.Overlaps`1(System.Span<!0>,System.ReadOnlySpan<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.ReadOnlySpan<!0>,System.ReadOnlySpan<!0>,System.Collections.Generic.IEqualityComparer<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.SequenceEqual`1(System.Span<!0>,System.ReadOnlySpan<!0>,System.Collections.Generic.IEqualityComparer<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendFormatted(System.Object,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendFormatted(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendFormatted(System.String,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MemoryExtensions.TryWriteInterpolatedStringHandler.AppendLiteral(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.TryWrite`1(System.Span<System.Char>,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.TryWrite`2(System.Span<System.Char>,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.MemoryExtensions.TryWrite`3(System.Span<System.Char>,System.IFormatProvider,System.Text.CompositeFormat,System.Int32,!0,!1,!2) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Memory`1.Equals(System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Boolean System.Memory`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MulticastDelegate.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MulticastDelegate.op_Equality(System.MulticastDelegate,System.MulticastDelegate) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.MulticastDelegate.op_Inequality(System.MulticastDelegate,System.MulticastDelegate) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Nullable`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.BitOperations.IsPow2(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Numerics.BitOperations.IsPow2(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Numerics.BitOperations.IsPow2(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Numerics.IBinaryInteger`1.TryReadBigEndian(System.ReadOnlySpan<System.Byte>,System.Boolean,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.IBinaryInteger`1.TryReadLittleEndian(System.ReadOnlySpan<System.Byte>,System.Boolean,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.IBinaryInteger`1.TryWriteBigEndian(System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.IBinaryInteger`1.TryWriteLittleEndian(System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.IBinaryNumber`1.IsPow2(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Numerics.IFloatingPoint`1.TryWriteExponentBigEndian(System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.IFloatingPoint`1.TryWriteExponentLittleEndian(System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.IFloatingPoint`1.TryWriteSignificandBigEndian(System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.IFloatingPoint`1.TryWriteSignificandLittleEndian(System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryConvertFromChecked`1(!0,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryConvertFromSaturating`1(!0,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryConvertFromTruncating`1(!0,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryConvertToChecked`1(!0,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryConvertToSaturating`1(!0,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryConvertToTruncating`1(!0,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryParse(System.ReadOnlySpan<System.Byte>,System.Globalization.NumberStyles,System.IFormatProvider,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryParse(System.ReadOnlySpan<System.Char>,System.Globalization.NumberStyles,System.IFormatProvider,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Numerics.INumberBase`1.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,!0) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Matrix3x2.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Matrix4x4.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Matrix4x4.Impl.<Invert>g__SseImpl\|64_0(System.Numerics.Matrix4x4.Impl,System.Numerics.Matrix4x4.Impl) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse | -| System.Boolean System.Numerics.Plane.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Quaternion.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector2.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector3.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector4.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.EqualsAll`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.EqualsAny`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.GreaterThanAll`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.GreaterThanAny`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.GreaterThanOrEqualAll`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.GreaterThanOrEqualAny`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.LessThanAll`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.LessThanAny`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.LessThanOrEqualAll`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector.LessThanOrEqualAny`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Numerics.Vector`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.OperatingSystem.IsIOS() | [SupportedOSPlatformGuardAttribute(...)] | 0 | maccatalyst | -| System.Boolean System.OperatingSystem.IsIOSVersionAtLeast(System.Int32,System.Int32,System.Int32) | [SupportedOSPlatformGuardAttribute(...)] | 0 | maccatalyst | -| System.Boolean System.PackedSpanHelpers.Contains(System.Int16,System.Int16,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Boolean System.Predicate`1.Invoke(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Range.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ReadOnlyMemory`1.Equals(System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Boolean System.ReadOnlyMemory`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ReadOnlySpan`1.Equals(System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Boolean System.ReadOnlySpan`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ReadOnlySpan`1.Equals(System.Object) | [ObsoleteAttribute(...)] | 0 | Equals() on ReadOnlySpan will always throw an exception. Use the equality operator instead. | -| System.Boolean System.Reflection.Assembly.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Assembly.op_Equality(System.Reflection.Assembly,System.Reflection.Assembly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Assembly.op_Inequality(System.Reflection.Assembly,System.Reflection.Assembly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.CustomAttribute.FilterCustomAttributeRecord(System.Reflection.MetadataToken,System.Reflection.MetadataImport,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,System.Boolean,System.RuntimeType.ListBuilder<System.Object>,System.RuntimeType,System.IRuntimeMethodInfo,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Boolean System.Reflection.CustomAttribute.FilterCustomAttributeRecord(System.Reflection.MetadataToken,System.Reflection.MetadataImport,System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.RuntimeType,System.Boolean,System.RuntimeType.ListBuilder<System.Object>,System.RuntimeType,System.IRuntimeMethodInfo,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Boolean System.Reflection.CustomAttributeData.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.CustomAttributeNamedArgument.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.CustomAttributeTypedArgument.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Emit.Label.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Emit.RuntimeTypeBuilder.IsAssignableFrom(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Boolean System.Reflection.Emit.RuntimeTypeBuilder.IsAssignableFrom(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.Boolean System.Reflection.Emit.SignatureHelper.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.FieldInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.FieldInfo.op_Equality(System.Reflection.FieldInfo,System.Reflection.FieldInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.FieldInfo.op_Inequality(System.Reflection.FieldInfo,System.Reflection.FieldInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.LoaderAllocatorScout.Destroy(System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Reflection.LoaderAllocatorScout.Destroy(System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Reflection.LoaderAllocatorScout.Destroy(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Reflection.MemberFilter.Invoke(System.Reflection.MemberInfo,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Reflection.MemberInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.MemberInfo.op_Equality(System.Reflection.MemberInfo,System.Reflection.MemberInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.MemberInfo.op_Inequality(System.Reflection.MemberInfo,System.Reflection.MemberInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata(System.Runtime.CompilerServices.QCallAssembly,System.Byte*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata(System.Runtime.CompilerServices.QCallAssembly,System.Byte*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata(System.Runtime.CompilerServices.QCallAssembly,System.Byte*,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Reflection.Metadata.AssemblyExtensions.TryGetRawMetadata(System.Reflection.Assembly,System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Reflection.Metadata.MetadataUpdater.IsApplyUpdateSupported() | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Reflection.Metadata.MetadataUpdater.IsApplyUpdateSupported() | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Reflection.Metadata.MetadataUpdater.IsApplyUpdateSupported() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Reflection.MethodInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.MethodInfo.op_Equality(System.Reflection.MethodInfo,System.Reflection.MethodInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.MethodInfo.op_Inequality(System.Reflection.MethodInfo,System.Reflection.MethodInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Module.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Module.op_Equality(System.Reflection.Module,System.Reflection.Module) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Module.op_Inequality(System.Reflection.Module,System.Reflection.Module) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.Pointer.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.RuntimeAssembly.GetCodeBase(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Reflection.RuntimeAssembly.GetCodeBase(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Reflection.RuntimeAssembly.GetCodeBase(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Reflection.TypeDelegator.IsAssignableFrom(System.Reflection.TypeInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Reflection.TypeFilter.Invoke(System.Type,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Reflection.TypeInfo.IsAssignableFrom(System.Reflection.TypeInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Resources.ResourceReader.<DeserializeObject>g__InitializeBinaryFormatterLocal\|5_0() | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Boolean System.Resources.ResourceReader.<DeserializeObject>g__InitializeBinaryFormatterLocal\|5_0() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Boolean System.Resources.ResourceReader.<DeserializeObject>g__InitializeBinaryFormatterLocal\|5_0() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Boolean System.Resources.ResourceReader.<DeserializeObject>g__InitializeBinaryFormatterLocal\|5_0() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:RequiresDynamicCode | -| System.Boolean System.Resources.ResourceReader.InitializeBinaryFormatter() | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for this instantiation might not be available at runtime. | -| System.Boolean System.Resources.ResourceReader.InitializeBinaryFormatter() | [RequiresUnreferencedCodeAttribute(...)] | 0 | The CustomResourceTypesSupport feature switch has been enabled for this app which is being trimmed. Custom readers as well as custom objects on the resources file are not observable by the trimmer and so required assemblies, types and members may be removed. | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.AreTypesEquivalent(System.Runtime.CompilerServices.MethodTable*,System.Runtime.CompilerServices.MethodTable*) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.AreTypesEquivalent(System.Runtime.CompilerServices.MethodTable*,System.Runtime.CompilerServices.MethodTable*) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.AreTypesEquivalent(System.Runtime.CompilerServices.MethodTable*,System.Runtime.CompilerServices.MethodTable*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.Equals(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.CompilerServices.RuntimeHelpers.IsReferenceOrContainsReferences`1() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.CLong.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.CULong.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetObject(System.IntPtr,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetObjectInternal(System.IntPtr,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetObjectInternal(System.IntPtr,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetObjectInternal(System.IntPtr,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateComInterfaceForObjectInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.InteropServices.CreateComInterfaceFlags,System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateComInterfaceForObjectInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.InteropServices.CreateComInterfaceFlags,System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateComInterfaceForObjectInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.InteropServices.CreateComInterfaceFlags,System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateObjectForComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.IntPtr,System.IntPtr,System.Runtime.InteropServices.CreateObjectFlags,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateObjectForComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.IntPtr,System.IntPtr,System.Runtime.InteropServices.CreateObjectFlags,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.InteropServices.ComWrappers.TryGetOrCreateObjectForComInstanceInternal(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64,System.IntPtr,System.IntPtr,System.Runtime.InteropServices.CreateObjectFlags,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.Runtime.InteropServices.Marshal.SetComObjectData(System.Object,System.Object,System.Object) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Boolean System.Runtime.InteropServices.MemoryMarshal.TryGetArray`1(System.ReadOnlyMemory<!0>,System.ArraySegment<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.MemoryMarshal.TryGetMemoryManager`2(System.ReadOnlyMemory<!0>,!1) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.MemoryMarshal.TryGetMemoryManager`2(System.ReadOnlyMemory<!0>,!1,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.NFloat.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.NFloat.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Runtime.InteropServices.NFloat) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.NFloat.TryParse(System.String,System.IFormatProvider,System.Runtime.InteropServices.NFloat) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.NFloat.TryParse(System.String,System.Runtime.InteropServices.NFloat) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.InteropServices.OSPlatform.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.EqualsAll`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.EqualsAny`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanAll`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanAny`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanAll`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanAny`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64.TryCopyTo`1(System.Runtime.Intrinsics.Vector64<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector64`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.EqualsAll`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.EqualsAny`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanAll`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanAny`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanAll`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanAny`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128.TryCopyTo`1(System.Runtime.Intrinsics.Vector128<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector128`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.EqualsAll`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.EqualsAny`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanAll`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanAny`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanAll`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanAny`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256.TryCopyTo`1(System.Runtime.Intrinsics.Vector256<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector256`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.EqualsAll`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.EqualsAny`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanAll`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanAny`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanOrEqualAll`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.GreaterThanOrEqualAny`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanAll`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanAny`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanOrEqualAll`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.LessThanOrEqualAny`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512.TryCopyTo`1(System.Runtime.Intrinsics.Vector512<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Intrinsics.Vector512`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyLoadFromResolveHandlerInvoked(System.String,System.Boolean,System.String,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyLoadFromResolveHandlerInvoked(System.String,System.Boolean,System.String,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyResolveHandlerInvoked(System.String,System.String,System.String,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyResolveHandlerInvoked(System.String,System.String,System.String,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked(System.String,System.String,System.String,System.String,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked(System.String,System.String,System.String,System.String,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceSatelliteSubdirectoryPathProbed(System.String,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.Runtime.Loader.AssemblyLoadContext.TraceSatelliteSubdirectoryPathProbed(System.String,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.Runtime.Versioning.FrameworkName.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Versioning.FrameworkName.Equals(System.Runtime.Versioning.FrameworkName) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Versioning.FrameworkName.op_Equality(System.Runtime.Versioning.FrameworkName,System.Runtime.Versioning.FrameworkName) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Runtime.Versioning.FrameworkName.op_Inequality(System.Runtime.Versioning.FrameworkName,System.Runtime.Versioning.FrameworkName) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.RuntimeFieldHandle.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.RuntimeMethodHandle.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.RuntimeTypeHandle._IsVisible(System.Runtime.CompilerServices.QCallTypeHandle) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Boolean System.RuntimeTypeHandle._IsVisible(System.Runtime.CompilerServices.QCallTypeHandle) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Boolean System.RuntimeTypeHandle._IsVisible(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Boolean System.SByte.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.SByte.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.SByte) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.SByte.TryParse(System.String,System.IFormatProvider,System.SByte) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.SByte.TryParse(System.String,System.SByte) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Security.Principal.IPrincipal.IsInRole(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Single.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Single.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.Single) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Single.TryParse(System.String,System.IFormatProvider,System.Single) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Single.TryParse(System.String,System.Single) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Span`1.Equals(System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Boolean System.Span`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Span`1.Equals(System.Object) | [ObsoleteAttribute(...)] | 0 | Equals() on Span will always throw an exception. Use the equality operator instead. | -| System.Boolean System.String.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.Equals(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.Equals(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.Equals(System.String,System.String,System.StringComparison) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.Equals(System.String,System.StringComparison) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.IsNullOrEmpty(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.IsNullOrWhiteSpace(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.TryCopyTo(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.String.op_Equality(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.String.op_Inequality(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.StringComparer.Equals(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.StringComparer.Equals(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.StringComparer.IsWellKnownCultureAwareComparer(System.Collections.Generic.IEqualityComparer<System.String>,System.Globalization.CompareInfo,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.StringComparer.IsWellKnownOrdinalComparer(System.Collections.Generic.IEqualityComparer<System.String>,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Ascii.AllCharsInVectorAreAscii`1(System.Runtime.Intrinsics.Vector256<!0>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx | -| System.Boolean System.Text.Ascii.PlainLoader`1.EqualAndAscii256(!0,!0) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx | -| System.Boolean System.Text.Ascii.WideningLoader.EqualAndAscii256(System.Byte,System.UInt16) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx | -| System.Boolean System.Text.DecoderExceptionFallback.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.DecoderExceptionFallbackBuffer.Fallback(System.Byte[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Text.DecoderFallbackBuffer.Fallback(System.Byte[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Text.DecoderReplacementFallback.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.EncoderExceptionFallback.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.EncoderReplacementFallback.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Encoding.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Encoding.TryGetBytes(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Text.Encoding.TryGetChars(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Text.EncodingInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Rune.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Rune.IsValid(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Text.Rune.TryCreate(System.UInt32,System.Text.Rune) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Text.Rune.TryGetRuneAt(System.String,System.Int32,System.Text.Rune) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Text.StringBuilder.Equals(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Text.StringBuilder.Equals(System.Text.StringBuilder) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.UTF7Encoding.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.UTF8Encoding.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.UTF32Encoding.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendFormatted(System.Object,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendFormatted(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendFormatted(System.String,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendFormatted`1(!0,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.AppendLiteral(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Text.UnicodeEncoding.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Threading.AsyncFlowControl.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Threading.CancellationTokenRegistration.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Threading.EventWaitHandle.TryOpenExisting(System.String,System.Threading.EventWaitHandle) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Boolean System.Threading.ManualResetEventSlim.Wait(System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.ManualResetEventSlim.Wait(System.Int32,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.ManualResetEventSlim.Wait(System.TimeSpan) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.ManualResetEventSlim.Wait(System.TimeSpan,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Monitor.Wait(System.Object) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Monitor.Wait(System.Object,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Monitor.Wait(System.Object,System.Int32,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Monitor.Wait(System.Object,System.TimeSpan) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Monitor.Wait(System.Object,System.TimeSpan,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.RegisteredWaitHandle.Unregister(System.Threading.WaitHandle) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Boolean System.Threading.Semaphore.TryOpenExisting(System.String,System.Threading.Semaphore) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Boolean System.Threading.SemaphoreSlim.Wait(System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.SemaphoreSlim.Wait(System.Int32,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.SemaphoreSlim.Wait(System.TimeSpan) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.SemaphoreSlim.Wait(System.TimeSpan,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.SemaphoreSlim.WaitUntilCountOrTimeout(System.Int32,System.UInt32,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Int32,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.TimeSpan) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Tasks.Task.WaitAllBlockingCore(System.Collections.Generic.List<System.Threading.Tasks.Task>,System.Int32,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Tasks.Task.WaitAllCore(System.Threading.Tasks.Task[],System.Int32,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Boolean System.Threading.Tasks.Task.get_IsFaulted() | [MemberNotNullWhenAttribute(...)] | 0 | True | -| System.Boolean System.Threading.Tasks.Task.get_IsFaulted() | [MemberNotNullWhenAttribute(...)] | 1 | Exception | -| System.Boolean System.Threading.Tasks.ValueTask.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Threading.Tasks.ValueTask`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Threading.ThreadPool.BindHandle(System.IntPtr) | [ObsoleteAttribute(...)] | 0 | ThreadPool.BindHandle(IntPtr) has been deprecated. Use ThreadPool.BindHandle(SafeHandle) instead. | -| System.Boolean System.Threading.ThreadPool.BindHandle(System.IntPtr) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Boolean System.Threading.ThreadPool.BindHandle(System.Runtime.InteropServices.SafeHandle) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Boolean System.Threading.ThreadPool.UnsafeQueueNativeOverlapped(System.Threading.NativeOverlapped*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.Threading.ThreadPool.UnsafeQueueNativeOverlapped(System.Threading.NativeOverlapped*) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Boolean System.Threading.ThreadPool.UnsafeQueueNativeOverlapped(System.Threading.NativeOverlapped*) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Boolean System.Threading.Timer.Change(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Boolean System.TimeOnly.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParse(System.String,System.IFormatProvider,System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParse(System.String,System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParseExact(System.ReadOnlySpan<System.Char>,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParseExact(System.String,System.String,System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeOnly.TryParseExact(System.String,System.String[],System.TimeOnly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParse(System.String,System.IFormatProvider,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParse(System.String,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParseExact(System.ReadOnlySpan<System.Char>,System.String[],System.IFormatProvider,System.Globalization.TimeSpanStyles,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParseExact(System.ReadOnlySpan<System.Char>,System.String[],System.IFormatProvider,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.TimeSpanStyles,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParseExact(System.String,System.String,System.IFormatProvider,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.TimeSpanStyles,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeSpan.TryParseExact(System.String,System.String[],System.IFormatProvider,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeZoneInfo.AdjustmentRule.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeZoneInfo.AdjustmentRule.Equals(System.TimeZoneInfo.AdjustmentRule) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeZoneInfo.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeZoneInfo.Equals(System.TimeZoneInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeZoneInfo.TransitionTime.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.TimeZoneInfo.TryConvertWindowsIdToIanaId(System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`2.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`3.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`4.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`5.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`6.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`7.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Tuple`8.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.Equals(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.ImplementInterface(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Boolean System.Type.ImplementInterface(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2085:UnrecognizedReflectionPattern | -| System.Boolean System.Type.IsAssignableFrom(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.IsAssignableTo(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.IsEquivalentTo(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.IsInstanceOfType(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.op_Equality(System.Type,System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Type.op_Inequality(System.Type,System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt16.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt16.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.UInt16) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt16.TryParse(System.String,System.IFormatProvider,System.UInt16) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt16.TryParse(System.String,System.UInt16) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt32.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt32.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.UInt32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt32.TryParse(System.String,System.IFormatProvider,System.UInt32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt32.TryParse(System.String,System.UInt32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt64.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt64.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.UInt64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt64.TryParse(System.String,System.IFormatProvider,System.UInt64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt64.TryParse(System.String,System.UInt64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt128.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt128.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.UInt128) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt128.TryParse(System.String,System.IFormatProvider,System.UInt128) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UInt128.TryParse(System.String,System.UInt128) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UIntPtr.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UIntPtr.TryParse(System.String,System.Globalization.NumberStyles,System.IFormatProvider,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UIntPtr.TryParse(System.String,System.IFormatProvider,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.UIntPtr.TryParse(System.String,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`1.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`2.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`3.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`4.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`5.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`6.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`7.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueTuple`8.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.ValueType.Equals(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Boolean System.ValueType.Equals(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Boolean System.Version.Equals(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.Equals(System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.TryParse(System.String,System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.op_Equality(System.Version,System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.op_GreaterThan(System.Version,System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.op_GreaterThanOrEqual(System.Version,System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.op_Inequality(System.Version,System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.op_LessThan(System.Version,System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Boolean System.Version.op_LessThanOrEqual(System.Version,System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Buffer | [NullableAttribute(...)] | 0 | 0 | -| System.Buffer | [NullableContextAttribute(...)] | 0 | 1 | -| System.Buffers.ArrayPoolEventSource | [GeneratedCodeAttribute(...)] | 0 | System.Private.CoreLib.Generators | -| System.Buffers.ArrayPoolEventSource | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Buffers.ArrayPool`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Buffers.ArrayPool`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Buffers.BitVector256._values | [FixedBufferAttribute(...)] | 0 | System.UInt32 | -| System.Buffers.BitVector256._values | [FixedBufferAttribute(...)] | 1 | 8 | -| System.Buffers.IPinnable | [NullableAttribute(...)] | 0 | 2 | -| System.Buffers.SearchValues<!0> | [NullableAttribute(...)] | 0 | 1 | -| System.Buffers.SearchValues`1 | [DebuggerDisplayAttribute(...)] | 0 | {DebuggerDisplay,nq} | -| System.Buffers.SearchValues`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Buffers.SearchValuesDebugView`1 | -| System.Buffers.StandardFormat System.Buffers.StandardFormat.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.ByReference | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.ByReference | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.ByReference | [ObsoleteAttribute(...)] | 1 | True | -| System.Byte System.Byte.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte System.Byte.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte System.Byte.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte System.Byte.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte System.Byte.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte System.Byte.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte System.Byte.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte System.Convert.ToByte(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Byte System.Convert.ToByte(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Byte System.Convert.ToByte(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Byte System.Convert.ToByte(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Byte System.Runtime.InteropServices.Marshal.ReadByte(System.Object,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Byte System.Runtime.InteropServices.Marshal.ReadByte(System.Object,System.Int32) | [ObsoleteAttribute(...)] | 0 | ReadByte(Object, Int32) may be unavailable in future releases. | -| System.Byte System.Runtime.InteropServices.Marshal.ReadByte(System.Object,System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Byte System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference(System.Array) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte* System.Reflection.RuntimeAssembly.GetResource(System.Runtime.CompilerServices.QCallAssembly,System.String,System.UInt32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Byte* System.Reflection.RuntimeAssembly.GetResource(System.Runtime.CompilerServices.QCallAssembly,System.String,System.UInt32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Byte[] System.BitConverter.GetBytes(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Byte[] System.BitConverter.GetBytes(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Byte[] System.BitConverter.GetBytes(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Byte[] System.Convert.FromBase64CharArray(System.Char[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte[] System.Convert.FromBase64String(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte[] System.Convert.FromHexString(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Byte[] System.Convert.FromHexString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte[] System.Diagnostics.Tracing.EventSource.CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Byte[] System.Diagnostics.Tracing.EventSource.CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2114:ReflectionToDynamicallyAccessedMembers | -| System.Byte[] System.Guid.ToByteArray() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte[] System.Guid.ToByteArray(System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte[] System.Reflection.Emit.RuntimeModuleBuilder.ResolveSignature(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Byte[] System.Reflection.MethodBody.GetILAsByteArray() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Byte[] System.Reflection.Module.ResolveSignature(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Byte[] System.Reflection.RuntimeModule.ResolveSignature(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Byte[] System.Security.PermissionSet.ConvertPermissionSet(System.String,System.Byte[],System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Byte[] System.Text.UTF8Encoding.GetPreamble() | [NullableContextAttribute(...)] | 0 | 1 | -| System.CLSCompliantAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.CannotUnloadAppDomainException | [NullableAttribute(...)] | 0 | 0 | -| System.CannotUnloadAppDomainException | [NullableContextAttribute(...)] | 0 | 2 | -| System.CannotUnloadAppDomainException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Char System.BitConverter.ToChar(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Char System.Char.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Char System.Char.ToLower(System.Char,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Char System.Char.ToUpper(System.Char,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Char System.Convert.ToChar(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Char System.Convert.ToChar(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Char System.Convert.ToChar(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Char System.Convert.ToChar(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Char System.Convert.ToChar(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Char System.Convert.ToChar(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Char System.Runtime.InteropServices.Marshalling.Utf16StringMarshaller.GetPinnableReference(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Char System.String.GetPinnableReference() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Char* Interop.Kernel32.GetEnvironmentStringsW() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Char[] System.IO.Path.GetInvalidFileNameChars() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Char[] System.IO.Path.GetInvalidPathChars() | [NullableContextAttribute(...)] | 0 | 1 | -| System.CodeDom.Compiler.GeneratedCodeAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.CodeDom.Compiler.GeneratedCodeAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.CodeDom.Compiler.GeneratedCodeAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.CodeDom.Compiler.IndentedTextWriter | [NullableAttribute(...)] | 0 | 0 | -| System.CodeDom.Compiler.IndentedTextWriter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.ArrayList | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.ArrayList | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.ArrayList.ArrayListDebugView | -| System.Collections.ArrayList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.ArrayList | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.ArrayList | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.ArrayList.FixedSizeArrayList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList.FixedSizeList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList.IListWrapper | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList.Range | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList.ReadOnlyArrayList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList.ReadOnlyList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList.SyncArrayList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ArrayList.SyncIList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Comparer | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Comparer | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Comparer | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Concurrent.ConcurrentQueueSegment`1 | [DebuggerDisplayAttribute(...)] | 0 | Capacity = {Capacity} | -| System.Collections.Concurrent.ConcurrentQueueSegment`1.Slot | [DebuggerDisplayAttribute(...)] | 0 | Item = {Item}, SequenceNumber = {SequenceNumber} | -| System.Collections.Concurrent.ConcurrentQueue`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Concurrent.ConcurrentQueue`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Concurrent.IProducerConsumerCollectionDebugView`1 | -| System.Collections.Concurrent.ConcurrentQueue`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Concurrent.ConcurrentQueue`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Concurrent.IProducerConsumerCollection`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Concurrent.MultiProducerMultiConsumerQueue`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Concurrent.PaddedHeadAndTail | [DebuggerDisplayAttribute(...)] | 0 | Head = {Head}, Tail = {Tail} | -| System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.SingleProducerSingleConsumerQueue_DebugView | -| System.Collections.DictionaryEntry | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.DictionaryEntry | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.DictionaryEntry | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.EmptyReadOnlyDictionaryInternal | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.ArrayBuilder`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.BitHelper | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Collections.Generic.BitHelper | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Collections.Generic.BitHelper | [ObsoleteAttribute(...)] | 1 | True | -| System.Collections.Generic.ByteEqualityComparer | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.CollectionExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.CollectionExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.Comparer`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.Comparer`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.Comparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.Dictionary<!0,!1>.Enumerator System.Collections.Generic.Dictionary`2.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.Dictionary<!0,!1>.KeyCollection System.Collections.Generic.Dictionary`2.Keys | [NullableAttribute(...)] | 0 | [1,0,0] | -| System.Collections.Generic.Dictionary<!0,!1>.ValueCollection System.Collections.Generic.Dictionary`2.Values | [NullableAttribute(...)] | 0 | [1,0,0] | -| System.Collections.Generic.Dictionary<System.Int64,System.WeakReference<System.Runtime.Loader.AssemblyLoadContext>> System.Runtime.Loader.AssemblyLoadContext.AllContexts | [MemberNotNullAttribute(...)] | 0 | s_allContexts | -| System.Collections.Generic.Dictionary<System.Int64,System.WeakReference<System.Runtime.Loader.AssemblyLoadContext>> System.Runtime.Loader.AssemblyLoadContext.get_AllContexts() | [MemberNotNullAttribute(...)] | 0 | s_allContexts | -| System.Collections.Generic.Dictionary`2 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Generic.Dictionary`2 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.IDictionaryDebugView`2 | -| System.Collections.Generic.Dictionary`2 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.Dictionary`2 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.Dictionary`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.Dictionary`2 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.Dictionary`2.Enumerator | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.Dictionary`2.KeyCollection | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Generic.Dictionary`2.KeyCollection | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.DictionaryKeyCollectionDebugView`2 | -| System.Collections.Generic.Dictionary`2.KeyCollection | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.Dictionary`2.ValueCollection | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Generic.Dictionary`2.ValueCollection | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.DictionaryValueCollectionDebugView`2 | -| System.Collections.Generic.Dictionary`2.ValueCollection | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.EnumEqualityComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.EqualityComparer`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.EqualityComparer`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.EqualityComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.GenericComparer`1 | [NullableAttribute(...)] | 0 | [0,1] | -| System.Collections.Generic.GenericComparer`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.Generic.GenericComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.GenericEqualityComparer`1 | [NullableAttribute(...)] | 0 | [0,1] | -| System.Collections.Generic.GenericEqualityComparer`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.Generic.GenericEqualityComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.HashSet<!0>.Enumerator System.Collections.Generic.HashSet`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.HashSet`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Generic.HashSet`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.ICollectionDebugView`1 | -| System.Collections.Generic.HashSet`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.HashSet`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.HashSet`1 | [TypeForwardedFromAttribute(...)] | 0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.HashSet`1.Enumerator | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.IAsyncEnumerable<System.String> System.IO.File.IterateFileLinesAsync(System.IO.StreamReader,System.String,System.Text.Encoding,System.Threading.CancellationToken,System.Threading.CancellationToken) | [AsyncIteratorStateMachineAttribute(...)] | 0 | System.IO.File.<IterateFileLinesAsync>d__110 | -| System.Collections.Generic.IAsyncEnumerable`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.ICollection`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IComparer<!0> | [NullableAttribute(...)] | 0 | [2,1] | -| System.Collections.Generic.IComparer`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.Generic.IDictionary<System.String,System.String> | [NullableAttribute(...)] | 0 | [2,1,2] | -| System.Collections.Generic.IDictionary<System.String,System.String> System.Diagnostics.Tracing.EventCommandEventArgs.Arguments | [NullableAttribute(...)] | 0 | [2,1,2] | -| System.Collections.Generic.IDictionary`2 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.IDictionary`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IEnumerable<!0> System.Runtime.InteropServices.MemoryMarshal.<ToEnumerable>g__FromArray\|18_2`1(!0[],System.Int32,System.Int32) | [IteratorStateMachineAttribute(...)] | 0 | System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromArray\|18_2>d`1 | -| System.Collections.Generic.IEnumerable<!0> System.Runtime.InteropServices.MemoryMarshal.<ToEnumerable>g__FromMemoryManager\|18_1`1(System.ReadOnlyMemory<!0>) | [IteratorStateMachineAttribute(...)] | 0 | System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromMemoryManager\|18_1>d`1 | -| System.Collections.Generic.IEnumerable<!0> System.Runtime.InteropServices.MemoryMarshal.ToEnumerable`1(System.ReadOnlyMemory<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IEnumerable<!0> System.Threading.Tasks.TaskAsyncEnumerableExtensions.ToBlockingEnumerable`1(System.Collections.Generic.IAsyncEnumerable<!0>,System.Threading.CancellationToken) | [IteratorStateMachineAttribute(...)] | 0 | System.Threading.Tasks.TaskAsyncEnumerableExtensions.<ToBlockingEnumerable>d__3`1 | -| System.Collections.Generic.IEnumerable<!0> System.Threading.Tasks.TaskAsyncEnumerableExtensions.ToBlockingEnumerable`1(System.Collections.Generic.IAsyncEnumerable<!0>,System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Collections.Generic.IEnumerable<System.Char> System.Runtime.InteropServices.MemoryMarshal.<ToEnumerable>g__FromString\|18_0`1(System.String,System.Int32,System.Int32) | [IteratorStateMachineAttribute(...)] | 0 | System.Runtime.InteropServices.MemoryMarshal.<<ToEnumerable>g__FromString\|18_0>d`1 | -| System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<!0,!1>> | [NullableAttribute(...)] | 0 | [1,0,1,1] | -| System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.Object,System.String>> System.Diagnostics.Tracing.CounterPayload.get_ForEnumeration() | [IteratorStateMachineAttribute(...)] | 0 | System.Diagnostics.Tracing.CounterPayload.<get_ForEnumeration>d__51 | -| System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.Object,System.String>> System.Diagnostics.Tracing.IncrementingCounterPayload.get_ForEnumeration() | [IteratorStateMachineAttribute(...)] | 0 | System.Diagnostics.Tracing.IncrementingCounterPayload.<get_ForEnumeration>d__39 | -| System.Collections.Generic.IEnumerable<System.Diagnostics.Tracing.EventSource> System.Diagnostics.Tracing.EventSource.GetSources() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IEnumerable<System.Object> System.Threading.ThreadPool.GetQueuedWorkItems() | [IteratorStateMachineAttribute(...)] | 0 | System.Threading.ThreadPool.<GetQueuedWorkItems>d__26 | -| System.Collections.Generic.IEnumerable<System.Reflection.Assembly> System.Runtime.Loader.AssemblyLoadContext.get_Assemblies() | [IteratorStateMachineAttribute(...)] | 0 | System.Runtime.Loader.AssemblyLoadContext.<get_Assemblies>d__55 | -| System.Collections.Generic.IEnumerable<System.Reflection.ConstructorInfo> System.Reflection.TypeInfo.get_DeclaredConstructors() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> | [NullableAttribute(...)] | 0 | [2,1] | -| System.Collections.Generic.IEnumerable<System.Reflection.EventInfo> System.Reflection.TypeInfo.get_DeclaredEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Collections.Generic.IEnumerable<System.Reflection.FieldInfo> System.Reflection.TypeInfo.get_DeclaredFields() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> System.Reflection.TypeInfo.get_DeclaredMembers() | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Collections.Generic.IEnumerable<System.Reflection.MethodInfo> System.Reflection.TypeInfo.GetDeclaredMethods(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Collections.Generic.IEnumerable<System.Reflection.MethodInfo> System.Reflection.TypeInfo.GetDeclaredMethods(System.String) | [IteratorStateMachineAttribute(...)] | 0 | System.Reflection.TypeInfo.<GetDeclaredMethods>d__10 | -| System.Collections.Generic.IEnumerable<System.Reflection.MethodInfo> System.Reflection.TypeInfo.get_DeclaredMethods() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Collections.Generic.IEnumerable<System.Reflection.PropertyInfo> System.Reflection.TypeInfo.get_DeclaredProperties() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Collections.Generic.IEnumerable<System.Reflection.TypeInfo> System.Reflection.Assembly.get_DefinedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Collections.Generic.IEnumerable<System.Reflection.TypeInfo> System.Reflection.RuntimeAssembly.get_DefinedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Collections.Generic.IEnumerable<System.Reflection.TypeInfo> System.Reflection.TypeInfo.get_DeclaredNestedTypes() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Collections.Generic.IEnumerable<System.Reflection.TypeInfo> System.Reflection.TypeInfo.get_DeclaredNestedTypes() | [IteratorStateMachineAttribute(...)] | 0 | System.Reflection.TypeInfo.<get_DeclaredNestedTypes>d__22 | -| System.Collections.Generic.IEnumerable<System.Runtime.Loader.AssemblyLoadContext> System.Runtime.Loader.AssemblyLoadContext.get_All() | [IteratorStateMachineAttribute(...)] | 0 | System.Runtime.Loader.AssemblyLoadContext.<get_All>d__85 | -| System.Collections.Generic.IEnumerable<System.Runtime.Loader.LibraryNameVariation> System.Runtime.Loader.LibraryNameVariation.DetermineLibraryNameVariations(System.String,System.Boolean) | [IteratorStateMachineAttribute(...)] | 0 | System.Runtime.Loader.LibraryNameVariation.<DetermineLibraryNameVariations>d__5 | -| System.Collections.Generic.IEnumerable<System.String> | [NullableAttribute(...)] | 0 | [1,2] | -| System.Collections.Generic.IEnumerable<System.Threading.Tasks.Task> System.Threading.Tasks.ThreadPoolTaskScheduler.FilterTasksFromWorkItems(System.Collections.Generic.IEnumerable<System.Object>) | [IteratorStateMachineAttribute(...)] | 0 | System.Threading.Tasks.ThreadPoolTaskScheduler.<FilterTasksFromWorkItems>d__6 | -| System.Collections.Generic.IEnumerable<System.Threading.TimerQueueTimer> System.Threading.TimerQueue.GetTimersForDebugger() | [IteratorStateMachineAttribute(...)] | 0 | System.Threading.TimerQueue.<GetTimersForDebugger>d__7 | -| System.Collections.Generic.IEnumerable<System.Type> System.Reflection.Assembly.get_ExportedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Collections.Generic.IEnumerable<System.Type> System.Reflection.TypeInfo.get_ImplementedInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Collections.Generic.IEnumerator<!0> System.Collections.Concurrent.ConcurrentQueue`1.Enumerate(System.Collections.Concurrent.ConcurrentQueueSegment<!0>,System.Int32,System.Collections.Concurrent.ConcurrentQueueSegment<!0>,System.Int32) | [IteratorStateMachineAttribute(...)] | 0 | System.Collections.Concurrent.ConcurrentQueue`1.<Enumerate>d__26 | -| System.Collections.Generic.IEnumerator<!0> System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.GetEnumerator() | [IteratorStateMachineAttribute(...)] | 0 | System.Collections.Concurrent.SingleProducerSingleConsumerQueue`1.<GetEnumerator>d__15 | -| System.Collections.Generic.IEnumerator<!0> System.Collections.Generic.IEnumerable`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IEnumerator<!0> System.IO.Enumeration.FileSystemEnumerable`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IEnumerator<!1> System.Collections.ObjectModel.ReadOnlyDictionary`2.ValueCollection.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<System.Object,System.String>> System.Diagnostics.Tracing.EventPayload.GetEnumerator() | [IteratorStateMachineAttribute(...)] | 0 | System.Diagnostics.Tracing.EventPayload.<GetEnumerator>d__17 | -| System.Collections.Generic.IEnumerator<System.Globalization.CultureInfo> System.Resources.ResourceFallbackManager.GetEnumerator() | [IteratorStateMachineAttribute(...)] | 0 | System.Resources.ResourceFallbackManager.<GetEnumerator>d__5 | -| System.Collections.Generic.IEqualityComparer<!0> | [NullableAttribute(...)] | 0 | [2,1] | -| System.Collections.Generic.IEqualityComparer<System.String> System.Collections.Generic.NonRandomizedStringEqualityComparer.GetStringComparer(System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IEqualityComparer`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.Generic.IList<System.String> System.Runtime.CompilerServices.TupleElementNamesAttribute.TransformNames | [NullableAttribute(...)] | 0 | [1,2] | -| System.Collections.Generic.IList`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.IList`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IReadOnlyDictionary<!0,!1> | [NullableAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IReadOnlyDictionary`2 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.IReadOnlyDictionary`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IReadOnlyList<System.Memory<System.Byte>> | [NullableAttribute(...)] | 0 | [1,0] | -| System.Collections.Generic.IReadOnlyList<System.ReadOnlyMemory<System.Byte>> | [NullableAttribute(...)] | 0 | [1,0] | -| System.Collections.Generic.IReadOnlyList`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.IReadOnlyList`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.IReadOnlySet`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.ISet`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.KeyNotFoundException | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.KeyNotFoundException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.Generic.KeyNotFoundException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.KeyValuePair<!0,!1> System.Collections.Generic.Dictionary`2.Enumerator.Current | [NullableAttribute(...)] | 0 | [0,1,1] | -| System.Collections.Generic.KeyValuePair<!0,!1> System.Collections.Generic.KeyValuePair.Create`2(!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.KeyValuePair<!0,!1>[] System.Collections.Generic.IDictionaryDebugView`2.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| System.Collections.Generic.KeyValuePair`2 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.KeyValuePair`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.KeyValuePair`2 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.KeyValuePair`2.key | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.KeyValuePair`2.value | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.List<!0> | [NullableAttribute(...)] | 0 | [2,1] | -| System.Collections.Generic.List<!0> System.Threading.ThreadLocal`1.ValuesForDebugDisplay | [NullableAttribute(...)] | 0 | [2,1] | -| System.Collections.Generic.List<!0>.Enumerator System.Collections.Generic.List`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.List<System.ValueTuple<System.Int32,System.Int32,System.String,System.String>> | [TupleElementNamesAttribute(...)] | 0 | [Literal,ArgIndex,Alignment,Format] | -| System.Collections.Generic.List`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Generic.List`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.ICollectionDebugView`1 | -| System.Collections.Generic.List`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.List`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.List`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.List`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.List`1.Enumerator | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.NullableComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.NullableEqualityComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.ObjectComparer`1 | [NullableAttribute(...)] | 0 | [0,1] | -| System.Collections.Generic.ObjectComparer`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.Generic.ObjectComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.ObjectEqualityComparer`1 | [NullableAttribute(...)] | 0 | [0,1] | -| System.Collections.Generic.ObjectEqualityComparer`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.Generic.ObjectEqualityComparer`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.Queue<!0>.Enumerator System.Collections.Generic.Queue`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.Queue`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Generic.Queue`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.QueueDebugView`1 | -| System.Collections.Generic.Queue`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Generic.Queue`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.Queue`1 | [TypeForwardedFromAttribute(...)] | 0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Generic.Queue`1.Enumerator | [NullableContextAttribute(...)] | 0 | 0 | -| System.Collections.Generic.ReferenceEqualityComparer System.Collections.Generic.ReferenceEqualityComparer.Instance | [NullableAttribute(...)] | 0 | 1 | -| System.Collections.Generic.ReferenceEqualityComparer System.Collections.Generic.ReferenceEqualityComparer.get_Instance() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Generic.ValueListBuilder`1 | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Collections.Generic.ValueListBuilder`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Generic.ValueListBuilder`1 | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Collections.Generic.ValueListBuilder`1 | [ObsoleteAttribute(...)] | 1 | True | -| System.Collections.Hashtable | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.Hashtable | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Hashtable.HashtableDebugView | -| System.Collections.Hashtable | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.Hashtable | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.Hashtable | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.Hashtable | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.Hashtable.SyncHashtable | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ICollection | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IComparer | [NullableAttribute(...)] | 0 | 2 | -| System.Collections.IComparer | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.IComparer System.Collections.Hashtable.comparer | [NullableAttribute(...)] | 0 | 2 | -| System.Collections.IComparer System.Collections.Hashtable.comparer | [ObsoleteAttribute(...)] | 0 | Hashtable.comparer has been deprecated. Use the KeyComparer properties instead. | -| System.Collections.IComparer System.Collections.Hashtable.get_comparer() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.IDictionary | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.IDictionary | [NullableAttribute(...)] | 0 | 1 | -| System.Collections.IDictionary | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IDictionary System.Exception.Data | [NullableAttribute(...)] | 0 | 1 | -| System.Collections.IDictionary System.Exception.get_Data() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IDictionaryEnumerator | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IDictionaryEnumerator System.Resources.IResourceReader.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IDictionaryEnumerator System.Resources.ResourceReader.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IEnumerable | [ComVisibleAttribute(...)] | 0 | True | -| System.Collections.IEnumerable | [GuidAttribute(...)] | 0 | 496B0ABE-CDEE-11d3-88E8-00902754C43A | -| System.Collections.IEnumerable | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IEnumerator System.Runtime.InteropServices.ComTypes.IEnumerable.GetEnumerator() | [DispIdAttribute(...)] | 0 | -4 | -| System.Collections.IEnumerator System.Security.PermissionSet.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IEnumerator System.Security.PermissionSet.GetEnumeratorImpl() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IEqualityComparer | [NullableAttribute(...)] | 0 | 2 | -| System.Collections.IEqualityComparer | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IEqualityComparer System.Collections.Hashtable.EqualityComparer | [NullableAttribute(...)] | 0 | 2 | -| System.Collections.IEqualityComparer System.Collections.Hashtable.get_EqualityComparer() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.IHashCodeProvider | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IHashCodeProvider | [ObsoleteAttribute(...)] | 0 | IHashCodeProvider has been deprecated. Use IEqualityComparer instead. | -| System.Collections.IHashCodeProvider | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.IHashCodeProvider System.Collections.Hashtable.get_hcp() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.IHashCodeProvider System.Collections.Hashtable.hcp | [NullableAttribute(...)] | 0 | 2 | -| System.Collections.IHashCodeProvider System.Collections.Hashtable.hcp | [ObsoleteAttribute(...)] | 0 | Hashtable.hcp has been deprecated. Use the EqualityComparer property instead. | -| System.Collections.IList | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.IList | [NullableContextAttribute(...)] | 0 | 2 | -| System.Collections.IStructuralComparable | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.IStructuralEquatable | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.KeyValuePairs | [DebuggerDisplayAttribute(...)] | 0 | {_value} | -| System.Collections.KeyValuePairs._key | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| System.Collections.KeyValuePairs._value | [DebuggerBrowsableAttribute(...)] | 0 | 0 | -| System.Collections.KeyValuePairs[] System.Collections.Hashtable.HashtableDebugView.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| System.Collections.ListDictionaryInternal | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ListDictionaryInternal | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.ListDictionaryInternal | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.ListDictionaryInternal | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.ObjectModel.Collection`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.ObjectModel.Collection`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.ICollectionDebugView`1 | -| System.Collections.ObjectModel.Collection`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ObjectModel.Collection`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.ObjectModel.Collection`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.ObjectModel.Collection`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.ObjectModel.ReadOnlyCollection<System.String> System.Diagnostics.Tracing.EventWrittenEventArgs.PayloadNames | [NullableAttribute(...)] | 0 | [2,1] | -| System.Collections.ObjectModel.ReadOnlyCollection`1 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.ObjectModel.ReadOnlyCollection`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.ICollectionDebugView`1 | -| System.Collections.ObjectModel.ReadOnlyCollection`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ObjectModel.ReadOnlyCollection`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.ObjectModel.ReadOnlyCollection`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.ObjectModel.ReadOnlyCollection`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.ObjectModel.ReadOnlyDictionary<!0,!1>.KeyCollection System.Collections.ObjectModel.ReadOnlyDictionary`2.Keys | [NullableAttribute(...)] | 0 | [1,0,0] | -| System.Collections.ObjectModel.ReadOnlyDictionary<!0,!1>.ValueCollection System.Collections.ObjectModel.ReadOnlyDictionary`2.Values | [NullableAttribute(...)] | 0 | [1,0,0] | -| System.Collections.ObjectModel.ReadOnlyDictionary`2 | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.ObjectModel.ReadOnlyDictionary`2 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.IDictionaryDebugView`2 | -| System.Collections.ObjectModel.ReadOnlyDictionary`2 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Collections.ObjectModel.ReadOnlyDictionary`2 | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.ObjectModel.ReadOnlyDictionary`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Collections.ObjectModel.ReadOnlyDictionary`2 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Collections.ObjectModel.ReadOnlyDictionary`2.KeyCollection | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.ObjectModel.ReadOnlyDictionary`2.KeyCollection | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.ICollectionDebugView`1 | -| System.Collections.ObjectModel.ReadOnlyDictionary`2.KeyCollection | [NullableAttribute(...)] | 0 | 0 | -| System.Collections.ObjectModel.ReadOnlyDictionary`2.ValueCollection | [DebuggerDisplayAttribute(...)] | 0 | Count = {Count} | -| System.Collections.ObjectModel.ReadOnlyDictionary`2.ValueCollection | [DebuggerTypeProxyAttribute(...)] | 0 | System.Collections.Generic.ICollectionDebugView`1 | -| System.Collections.ObjectModel.ReadOnlyDictionary`2.ValueCollection | [NullableContextAttribute(...)] | 0 | 0 | -| System.Comparison<!0> | [NullableAttribute(...)] | 0 | 1 | -| System.ComponentModel.DefaultValueAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.ComponentModel.DefaultValueAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.ComponentModel.DefaultValueAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.ComponentModel.EditorBrowsableAttribute | [AttributeUsageAttribute(...)] | 0 | 6140 | -| System.ComponentModel.Win32Exception | [NullableAttribute(...)] | 0 | 0 | -| System.ComponentModel.Win32Exception | [NullableContextAttribute(...)] | 0 | 1 | -| System.ComponentModel.Win32Exception | [TypeForwardedFromAttribute(...)] | 0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Configuration.Assemblies.AssemblyHashAlgorithm System.Reflection.AssemblyName.HashAlgorithm | [ObsoleteAttribute(...)] | 0 | AssemblyName members HashAlgorithm, ProcessorArchitecture, and VersionCompatibility are obsolete and not supported. | -| System.Configuration.Assemblies.AssemblyHashAlgorithm System.Reflection.RuntimeAssembly.GetHashAlgorithm(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Configuration.Assemblies.AssemblyVersionCompatibility System.Reflection.AssemblyName.VersionCompatibility | [ObsoleteAttribute(...)] | 0 | AssemblyName members HashAlgorithm, ProcessorArchitecture, and VersionCompatibility are obsolete and not supported. | -| System.Console | [NullableAttribute(...)] | 0 | 0 | -| System.Console | [NullableContextAttribute(...)] | 0 | 1 | -| System.Console.CancelKeyPress | [NullableAttribute(...)] | 0 | 2 | -| System.Console.CancelKeyPress | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Console.CancelKeyPress | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Console.CancelKeyPress | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Console.CancelKeyPress | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.ConsoleCancelEventArgs | [NullableAttribute(...)] | 0 | 1 | -| System.ConsoleColor System.Console.BackgroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.ConsoleColor System.Console.BackgroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.ConsoleColor System.Console.BackgroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.ConsoleColor System.Console.BackgroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.ConsoleColor System.Console.ForegroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.ConsoleColor System.Console.ForegroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.ConsoleColor System.Console.ForegroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.ConsoleColor System.Console.ForegroundColor | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.ConsoleKeyInfo System.Console.ReadKey() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.ConsoleKeyInfo System.Console.ReadKey() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.ConsoleKeyInfo System.Console.ReadKey() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.ConsoleKeyInfo System.Console.ReadKey() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.ConsoleKeyInfo System.Console.ReadKey(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.ConsoleKeyInfo System.Console.ReadKey(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.ConsoleKeyInfo System.Console.ReadKey(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.ConsoleKeyInfo System.Console.ReadKey(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.ContextMarshalException | [NullableAttribute(...)] | 0 | 0 | -| System.ContextMarshalException | [NullableContextAttribute(...)] | 0 | 2 | -| System.ContextMarshalException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ContextStaticAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Convert | [NullableAttribute(...)] | 0 | 0 | -| System.Convert | [NullableContextAttribute(...)] | 0 | 2 | -| System.Convert.DBNull | [NullableAttribute(...)] | 0 | 1 | -| System.CultureAwareComparer | [NullableAttribute(...)] | 0 | 0 | -| System.CultureAwareComparer | [NullableContextAttribute(...)] | 0 | 2 | -| System.CultureAwareComparer | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.CurrentSystemTimeZone | [ObsoleteAttribute(...)] | 0 | System.CurrentSystemTimeZone has been deprecated. Investigate the use of System.TimeZoneInfo.Local instead. | -| System.DBNull | [NullableAttribute(...)] | 0 | 0 | -| System.DBNull | [NullableContextAttribute(...)] | 0 | 1 | -| System.DTSubString | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.DTSubString | [DefaultMemberAttribute(...)] | 0 | Item | -| System.DTSubString | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.DTSubString | [ObsoleteAttribute(...)] | 1 | True | -| System.DataMisalignedException | [NullableAttribute(...)] | 0 | 0 | -| System.DataMisalignedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.DataMisalignedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.DateOnly System.DateOnly.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateOnly System.DateOnly.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateOnly System.DateOnly.Parse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateOnly System.DateOnly.ParseExact(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateOnly System.DateOnly.ParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateOnly System.DateOnly.ParseExact(System.String,System.String[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateOnly System.DateOnly.ParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTime | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.DateTime System.Convert.ToDateTime(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.DateTime System.Convert.ToDateTime(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.DateTime System.Convert.ToDateTime(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.DateTime System.Convert.ToDateTime(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.DateTime System.DateTime.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTime System.DateTime.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTime System.DateTime.Parse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTime System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTime System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTime System.DateTime.ParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTimeOffset | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.DateTimeOffset System.DateTimeOffset.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTimeOffset System.DateTimeOffset.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTimeOffset System.DateTimeOffset.Parse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTimeOffset System.DateTimeOffset.ParseExact(System.String,System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTimeOffset System.DateTimeOffset.ParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTimeOffset System.DateTimeOffset.ParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DateTimeResult | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.DateTimeResult | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.DateTimeResult | [ObsoleteAttribute(...)] | 1 | True | -| System.Decimal System.Convert.ToDecimal(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Decimal System.Convert.ToDecimal(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Decimal System.Convert.ToDecimal(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Decimal System.Convert.ToDecimal(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Decimal System.Decimal.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Decimal System.Decimal.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Decimal System.Decimal.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Decimal System.Decimal.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Decimal System.Decimal.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Decimal System.Decimal.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Decimal System.Decimal.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Decimal System.Decimal.op_Implicit(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Decimal System.Decimal.op_Implicit(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Decimal System.Decimal.op_Implicit(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Decimal System.Decimal.op_Implicit(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Delegate | [ClassInterfaceAttribute(...)] | 0 | 0 | -| System.Delegate | [ComVisibleAttribute(...)] | 0 | True | -| System.Delegate | [NullableAttribute(...)] | 0 | 0 | -| System.Delegate | [NullableAttribute(...)] | 0 | 2 | -| System.Delegate | [NullableContextAttribute(...)] | 0 | 1 | -| System.Delegate System.Delegate.Combine(System.Delegate,System.Delegate) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Delegate System.Delegate.Combine(System.Delegate[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Delegate System.Delegate.CreateDelegate(System.Type,System.Object,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The target method might be removed | -| System.Delegate System.Delegate.CreateDelegate(System.Type,System.Object,System.String,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The target method might be removed | -| System.Delegate System.Delegate.CreateDelegate(System.Type,System.Object,System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The target method might be removed | -| System.Delegate System.Delegate.Remove(System.Delegate,System.Delegate) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Delegate System.Delegate.RemoveAll(System.Delegate,System.Delegate) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Delegate System.Diagnostics.Tracing.PropertyValue.TypeHelper.GetGetMethod(System.Reflection.PropertyInfo,System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Delegate System.Diagnostics.Tracing.PropertyValue.TypeHelper.GetGetMethod(System.Reflection.PropertyInfo,System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Delegate System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer(System.IntPtr,System.Type) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Delegate System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer(System.IntPtr,System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the delegate might not be available. Use the GetDelegateForFunctionPointer<TDelegate> overload instead. | -| System.Diagnostics.CodeAnalysis.AllowNullAttribute | [AttributeUsageAttribute(...)] | 0 | 2432 | -| System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.CodeAnalysis.DisallowNullAttribute | [AttributeUsageAttribute(...)] | 0 | 2432 | -| System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute | [AttributeUsageAttribute(...)] | 0 | 352 | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute | [AttributeUsageAttribute(...)] | 0 | 28108 | -| System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute | [AttributeUsageAttribute(...)] | 0 | 749 | -| System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.CodeAnalysis.ExperimentalAttribute | [AttributeUsageAttribute(...)] | 0 | 6143 | -| System.Diagnostics.CodeAnalysis.ExperimentalAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.ExperimentalAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.CodeAnalysis.MaybeNullAttribute | [AttributeUsageAttribute(...)] | 0 | 10624 | -| System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Diagnostics.CodeAnalysis.MemberNotNullAttribute | [AttributeUsageAttribute(...)] | 0 | 192 | -| System.Diagnostics.CodeAnalysis.MemberNotNullAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.MemberNotNullAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute | [AttributeUsageAttribute(...)] | 0 | 192 | -| System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.CodeAnalysis.NotNullAttribute | [AttributeUsageAttribute(...)] | 0 | 10624 | -| System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute | [AttributeUsageAttribute(...)] | 0 | 10368 | -| System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.CodeAnalysis.NotNullWhenAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute | [AttributeUsageAttribute(...)] | 0 | 736 | -| System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute | [AttributeUsageAttribute(...)] | 0 | 100 | -| System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute | [AttributeUsageAttribute(...)] | 0 | 100 | -| System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute | [AttributeUsageAttribute(...)] | 0 | 32 | -| System.Diagnostics.CodeAnalysis.StringSyntaxAttribute | [AttributeUsageAttribute(...)] | 0 | 2432 | -| System.Diagnostics.CodeAnalysis.StringSyntaxAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.StringSyntaxAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute | [ConditionalAttribute(...)] | 0 | CODE_ANALYSIS | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.SuppressMessageAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.CodeAnalysis.UnscopedRefAttribute | [AttributeUsageAttribute(...)] | 0 | 2240 | -| System.Diagnostics.ConditionalAttribute | [AttributeUsageAttribute(...)] | 0 | 68 | -| System.Diagnostics.ConditionalAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.ConditionalAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Contracts.Contract | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Contracts.Contract | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Contracts.Contract.ContractFailed | [NullableAttribute(...)] | 0 | [2,1] | -| System.Diagnostics.Contracts.ContractAbbreviatorAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Diagnostics.Contracts.ContractAbbreviatorAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractArgumentValidatorAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Diagnostics.Contracts.ContractArgumentValidatorAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractClassAttribute | [AttributeUsageAttribute(...)] | 0 | 5124 | -| System.Diagnostics.Contracts.ContractClassAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractClassAttribute | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Diagnostics.Contracts.ContractClassAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Contracts.ContractClassAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Contracts.ContractClassForAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.Diagnostics.Contracts.ContractClassForAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractClassForAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Contracts.ContractClassForAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Contracts.ContractException | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Contracts.ContractException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Contracts.ContractException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Diagnostics.Contracts.ContractFailedEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Contracts.ContractFailedEventArgs | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Contracts.ContractFailureKind | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Diagnostics.Contracts.ContractInvariantMethodAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Diagnostics.Contracts.ContractInvariantMethodAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractOptionAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Diagnostics.Contracts.ContractOptionAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractOptionAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Contracts.ContractOptionAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute | [AttributeUsageAttribute(...)] | 0 | 192 | -| System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.ContractVerificationAttribute | [AttributeUsageAttribute(...)] | 0 | 237 | -| System.Diagnostics.Contracts.ContractVerificationAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Contracts.PureAttribute | [AttributeUsageAttribute(...)] | 0 | 6884 | -| System.Diagnostics.Contracts.PureAttribute | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Diagnostics.Debug | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Debug | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Debug.AssertInterpolatedStringHandler | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Diagnostics.Debug.AssertInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | condition | -| System.Diagnostics.Debug.AssertInterpolatedStringHandler | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Debug.WriteIfInterpolatedStringHandler | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Diagnostics.Debug.WriteIfInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | condition | -| System.Diagnostics.Debug.WriteIfInterpolatedStringHandler | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.DebugProvider | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.DebugProvider | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.DebugProvider System.Diagnostics.Debug.SetProvider(System.Diagnostics.DebugProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.DebuggableAttribute | [AttributeUsageAttribute(...)] | 0 | 3 | -| System.Diagnostics.Debugger | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Debugger | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.DebuggerBrowsableAttribute | [AttributeUsageAttribute(...)] | 0 | 384 | -| System.Diagnostics.DebuggerDisplayAttribute | [AttributeUsageAttribute(...)] | 0 | 4509 | -| System.Diagnostics.DebuggerDisplayAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.DebuggerDisplayAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.DebuggerHiddenAttribute | [AttributeUsageAttribute(...)] | 0 | 224 | -| System.Diagnostics.DebuggerNonUserCodeAttribute | [AttributeUsageAttribute(...)] | 0 | 236 | -| System.Diagnostics.DebuggerStepThroughAttribute | [AttributeUsageAttribute(...)] | 0 | 108 | -| System.Diagnostics.DebuggerStepperBoundaryAttribute | [AttributeUsageAttribute(...)] | 0 | 96 | -| System.Diagnostics.DebuggerTypeProxyAttribute | [AttributeUsageAttribute(...)] | 0 | 13 | -| System.Diagnostics.DebuggerTypeProxyAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.DebuggerTypeProxyAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.DebuggerVisualizerAttribute | [AttributeUsageAttribute(...)] | 0 | 13 | -| System.Diagnostics.DebuggerVisualizerAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.DebuggerVisualizerAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.StackFrame | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.StackFrame | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.StackFrame System.Diagnostics.StackTrace.GetFrame(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.StackFrameExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.StackFrameExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.StackTrace | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.StackTrace | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.StackTraceHiddenAttribute | [AttributeUsageAttribute(...)] | 0 | 108 | -| System.Diagnostics.Stopwatch | [DebuggerDisplayAttribute(...)] | 0 | {DebuggerDisplay,nq} | -| System.Diagnostics.Stopwatch | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Stopwatch | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.SymbolStore.ISymbolDocumentWriter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.CounterGroup | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Diagnostics.Tracing.DiagnosticCounter | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.DiagnosticCounter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.DiagnosticCounter | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Diagnostics.Tracing.EventAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Diagnostics.Tracing.EventAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Tracing.EventChannelAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Diagnostics.Tracing.EventCounter | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventCounter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.EventCounter | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Diagnostics.Tracing.EventDataAttribute | [AttributeUsageAttribute(...)] | 0 | 12 | -| System.Diagnostics.Tracing.EventDataAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventDataAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Tracing.EventFieldAttribute | [AttributeUsageAttribute(...)] | 0 | 128 | -| System.Diagnostics.Tracing.EventIgnoreAttribute | [AttributeUsageAttribute(...)] | 0 | 128 | -| System.Diagnostics.Tracing.EventListener | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventListener | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.EventListener.EventSourceCreated | [NullableAttribute(...)] | 0 | [2,1] | -| System.Diagnostics.Tracing.EventListener.EventWritten | [NullableAttribute(...)] | 0 | [2,1] | -| System.Diagnostics.Tracing.EventPayload | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Diagnostics.Tracing.EventSource | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Diagnostics.Tracing.EventSource | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventSource | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Tracing.EventSource System.Diagnostics.Tracing.EventWrittenEventArgs.EventSource | [NullableAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.EventSource System.Diagnostics.Tracing.EventWrittenEventArgs.get_EventSource() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.EventSource.EventCommandExecuted | [NullableAttribute(...)] | 0 | [2,1] | -| System.Diagnostics.Tracing.EventSource.EventData | [NullableContextAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive System.Diagnostics.Tracing.EventSource.EventSourcePrimitive.op_Implicit(System.Enum) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive System.Diagnostics.Tracing.EventSource.EventSourcePrimitive.op_Implicit(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive System.Diagnostics.Tracing.EventSource.EventSourcePrimitive.op_Implicit(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive System.Diagnostics.Tracing.EventSource.EventSourcePrimitive.op_Implicit(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive System.Diagnostics.Tracing.EventSource.EventSourcePrimitive.op_Implicit(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Diagnostics.Tracing.EventSource.EventSourcePrimitive System.Diagnostics.Tracing.EventSource.EventSourcePrimitive.op_Implicit(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Diagnostics.Tracing.EventSourceAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.Diagnostics.Tracing.EventSourceAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventSourceAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Tracing.EventSourceCreatedEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventSourceCreatedEventArgs | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Tracing.EventSourceException | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventSourceException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Tracing.EventWrittenEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.EventWrittenEventArgs | [NullableContextAttribute(...)] | 0 | 2 | -| System.Diagnostics.Tracing.EventWrittenEventArgs.MoreEventInfo System.Diagnostics.Tracing.EventWrittenEventArgs.MoreInfo | [NullableAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.FrameworkEventSource | [GeneratedCodeAttribute(...)] | 0 | System.Private.CoreLib.Generators | -| System.Diagnostics.Tracing.FrameworkEventSource | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Diagnostics.Tracing.IncrementingEventCounter | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.IncrementingEventCounter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.IncrementingEventCounter | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Diagnostics.Tracing.IncrementingPollingCounter | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.IncrementingPollingCounter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.IncrementingPollingCounter | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Diagnostics.Tracing.NativeRuntimeEventSource | [GeneratedCodeAttribute(...)] | 0 | System.Private.CoreLib.Generators | -| System.Diagnostics.Tracing.NativeRuntimeEventSource | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Diagnostics.Tracing.NonEventAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Diagnostics.Tracing.PollingCounter | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.Tracing.PollingCounter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Diagnostics.Tracing.PollingCounter | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Diagnostics.Tracing.RuntimeEventSource | [GeneratedCodeAttribute(...)] | 0 | System.Private.CoreLib.Generators | -| System.Diagnostics.Tracing.RuntimeEventSource | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Diagnostics.Tracing.SessionMask | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Diagnostics.Tracing.TraceLoggingEventHandleTable | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Diagnostics.Tracing.TraceLoggingEventTypes System.Diagnostics.Tracing.EventSource.EventMetadata.get_TraceLoggingEventTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Diagnostics.Tracing.TraceLoggingEventTypes System.Diagnostics.Tracing.EventSource.EventMetadata.get_TraceLoggingEventTypes() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Diagnostics.Tracing.TraceLoggingEventTypes System.Diagnostics.Tracing.EventSource.EventMetadata.get_TraceLoggingEventTypes() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Diagnostics.Tracing.TraceLoggingEventTypes System.Diagnostics.Tracing.SimpleEventTypes`1.InitInstance() | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Diagnostics.Tracing.TraceLoggingEventTypes System.Diagnostics.Tracing.SimpleEventTypes`1.get_Instance() | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Diagnostics.Tracing.TraceLoggingTypeInfo System.Diagnostics.Tracing.Statics.CreateDefaultTypeInfo(System.Type,System.Collections.Generic.List<System.Type>) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Diagnostics.Tracing.TraceLoggingTypeInfo System.Diagnostics.Tracing.TraceLoggingTypeInfo.GetInstance(System.Type,System.Collections.Generic.List<System.Type>) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Diagnostics.Tracing.TraceLoggingTypeInfo[] System.Diagnostics.Tracing.TraceLoggingEventTypes.MakeArray(System.Reflection.ParameterInfo[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Diagnostics.Tracing.TraceLoggingTypeInfo[] System.Diagnostics.Tracing.TraceLoggingEventTypes.MakeArray(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Diagnostics.UnreachableException | [NullableAttribute(...)] | 0 | 0 | -| System.Diagnostics.UnreachableException | [NullableContextAttribute(...)] | 0 | 2 | -| System.DivideByZeroException | [NullableAttribute(...)] | 0 | 0 | -| System.DivideByZeroException | [NullableContextAttribute(...)] | 0 | 2 | -| System.DivideByZeroException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.DllNotFoundException | [NullableAttribute(...)] | 0 | 0 | -| System.DllNotFoundException | [NullableContextAttribute(...)] | 0 | 2 | -| System.DllNotFoundException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Double System.BitConverter.ToDouble(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Double System.BitConverter.UInt64BitsToDouble(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Double System.Char.GetNumericValue(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Convert.ToDouble(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Double System.Convert.ToDouble(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Double System.Convert.ToDouble(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Double System.Convert.ToDouble(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Double System.Double.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Double.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Double.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Double.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Double.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Double.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Double.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Double System.Globalization.CharUnicodeInfo.GetNumericValue(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.DuplicateWaitObjectException | [NullableAttribute(...)] | 0 | 0 | -| System.DuplicateWaitObjectException | [NullableContextAttribute(...)] | 0 | 2 | -| System.DuplicateWaitObjectException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.EntryPointNotFoundException | [NullableAttribute(...)] | 0 | 0 | -| System.EntryPointNotFoundException | [NullableContextAttribute(...)] | 0 | 2 | -| System.EntryPointNotFoundException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Enum | [NullableAttribute(...)] | 0 | 0 | -| System.Enum | [NullableContextAttribute(...)] | 0 | 1 | -| System.Enum | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Environment | [NullableAttribute(...)] | 0 | 0 | -| System.Environment | [NullableContextAttribute(...)] | 0 | 1 | -| System.Environment.SpecialFolder | [NullableContextAttribute(...)] | 0 | 0 | -| System.Environment.SpecialFolderOption | [NullableContextAttribute(...)] | 0 | 0 | -| System.EventArgs | [NullableAttribute(...)] | 0 | 1 | -| System.EventArgs | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.EventArgs.Empty | [NullableAttribute(...)] | 0 | 1 | -| System.EventHandler<!0> | [NullableAttribute(...)] | 0 | [2,1] | -| System.EventHandler<System.Diagnostics.Contracts.ContractFailedEventArgs> | [NullableAttribute(...)] | 0 | [2,1] | -| System.EventHandler<System.Diagnostics.Tracing.EventCommandEventArgs> | [NullableAttribute(...)] | 0 | [2,1] | -| System.EventHandler<System.Diagnostics.Tracing.EventSourceCreatedEventArgs> | [NullableAttribute(...)] | 0 | [2,1] | -| System.EventHandler<System.Diagnostics.Tracing.EventWrittenEventArgs> | [NullableAttribute(...)] | 0 | [2,1] | -| System.EventHandler<System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs> | [NullableAttribute(...)] | 0 | [2,1] | -| System.EventHandler<System.Runtime.Serialization.SafeSerializationEventArgs> | [NullableAttribute(...)] | 0 | [2,1] | -| System.EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs> | [NullableAttribute(...)] | 0 | [2,1] | -| System.Exception | [NullableAttribute(...)] | 0 | 0 | -| System.Exception | [NullableAttribute(...)] | 0 | 1 | -| System.Exception | [NullableContextAttribute(...)] | 0 | 2 | -| System.Exception | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Exception System.Exception.GetBaseException() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Exception System.Runtime.InteropServices.Marshal.GetExceptionForHR(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Exception System.Runtime.InteropServices.Marshal.GetExceptionForHR(System.Int32,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Exception.SerializeObjectState | [NullableAttribute(...)] | 0 | [2,1] | -| System.Exception.SerializeObjectState | [ObsoleteAttribute(...)] | 0 | BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information. | -| System.Exception[] System.Reflection.ReflectionTypeLoadException.LoaderExceptions | [NullableAttribute(...)] | 0 | [1,2] | -| System.ExecutionEngineException | [NullableAttribute(...)] | 0 | 0 | -| System.ExecutionEngineException | [NullableContextAttribute(...)] | 0 | 2 | -| System.ExecutionEngineException | [ObsoleteAttribute(...)] | 0 | ExecutionEngineException previously indicated an unspecified fatal error in the runtime. The runtime no longer raises this exception so this type is obsolete. | -| System.ExecutionEngineException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.FieldAccessException | [NullableAttribute(...)] | 0 | 0 | -| System.FieldAccessException | [NullableContextAttribute(...)] | 0 | 2 | -| System.FieldAccessException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.FlagsAttribute | [AttributeUsageAttribute(...)] | 0 | 16 | -| System.FormatException | [NullableAttribute(...)] | 0 | 0 | -| System.FormatException | [NullableContextAttribute(...)] | 0 | 2 | -| System.FormatException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.FormattableString | [NullableAttribute(...)] | 0 | 0 | -| System.FormattableString | [NullableContextAttribute(...)] | 0 | 1 | -| System.FormattableString System.Runtime.CompilerServices.FormattableStringFactory.Create(System.String,System.Object[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Func<!0,!0,System.Boolean> | [NullableAttribute(...)] | 0 | [1,2,2] | -| System.Func<!0,!1,!2,System.AsyncCallback,System.IAsyncResult,System.Object> | [NullableAttribute(...)] | 0 | [1,1,1,1,1,2,1] | -| System.Func<!0,!1,System.AsyncCallback,System.IAsyncResult,System.Object> | [NullableAttribute(...)] | 0 | [1,1,1,1,2,1] | -| System.Func<!0,System.AsyncCallback,System.IAsyncResult,System.Object> | [NullableAttribute(...)] | 0 | [1,1,1,2,1] | -| System.Func<!0,System.Int32> | [NullableAttribute(...)] | 0 | [2,1] | -| System.Func<!0,System.Object,System.Threading.Tasks.Task<!0>> | [NullableAttribute(...)] | 0 | [1,1,1,2,1] | -| System.Func<!0,System.Object,System.Threading.Tasks.Task> | [NullableAttribute(...)] | 0 | [1,1,2,1] | -| System.Func<!0,System.Object> | [NullableAttribute(...)] | 0 | [1,2,1] | -| System.Func<System.AsyncCallback,System.IAsyncResult,System.Object> | [NullableAttribute(...)] | 0 | [1,1,2,1] | -| System.Func<System.Boolean,System.Reflection.Assembly,System.String,System.Type> | [NullableAttribute(...)] | 0 | [2,2,1,2] | -| System.Func<System.Diagnostics.Tracing.PropertyValue,System.Diagnostics.Tracing.PropertyValue> System.Diagnostics.Tracing.PropertyValue.GetReferenceTypePropertyGetter(System.Reflection.PropertyInfo) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Func<System.Diagnostics.Tracing.PropertyValue,System.Diagnostics.Tracing.PropertyValue> System.Diagnostics.Tracing.PropertyValue.GetReferenceTypePropertyGetter(System.Reflection.PropertyInfo) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Func<System.IntPtr,System.Reflection.Assembly,System.String> | [NullableAttribute(...)] | 0 | [2,1,1] | -| System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName,System.Runtime.Loader.AssemblyLoadContext> | [NullableAttribute(...)] | 0 | [2,1,1,2] | -| System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName> | [NullableAttribute(...)] | 0 | [2,1,2] | -| System.Func<System.Threading.Tasks.Task<!0>> | [NullableAttribute(...)] | 0 | [1,2,1] | -| System.Func<System.Threading.Tasks.Task> | [NullableAttribute(...)] | 0 | [1,2] | -| System.Func`5 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`5 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`6 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`6 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`7 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`7 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`8 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`8 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`9 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`9 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`10 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`10 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`11 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`11 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`12 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`12 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`13 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`13 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`14 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`14 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`15 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`15 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`16 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`16 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Func`17 | [NullableAttribute(...)] | 0 | 0 | -| System.Func`17 | [NullableContextAttribute(...)] | 0 | 2 | -| System.GC | [NullableAttribute(...)] | 0 | 0 | -| System.GC | [NullableContextAttribute(...)] | 0 | 1 | -| System.GC.EnableNoGCRegionCallbackStatus System.GC._EnableNoGCRegionCallback(System.GC.NoGCRegionCallbackFinalizerWorkItem*,System.Int64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Globalization.Calendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.Calendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.ChineseLunisolarCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.ChineseLunisolarCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.CompareInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.CompareInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.CompareInfo | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Globalization.CultureInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.CultureInfo | [NullableAttribute(...)] | 0 | 2 | -| System.Globalization.CultureInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.CultureInfo System.Globalization.CultureInfo.DefaultThreadCurrentCulture | [NullableAttribute(...)] | 0 | 2 | -| System.Globalization.CultureInfo System.Globalization.CultureInfo.DefaultThreadCurrentUICulture | [NullableAttribute(...)] | 0 | 2 | -| System.Globalization.CultureInfo System.Globalization.CultureInfo.get_DefaultThreadCurrentCulture() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Globalization.CultureInfo System.Globalization.CultureInfo.get_DefaultThreadCurrentUICulture() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Globalization.CultureNotFoundException | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.CultureNotFoundException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Globalization.CultureNotFoundException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Globalization.CultureTypes.FrameworkCultures | [ObsoleteAttribute(...)] | 0 | CultureTypes.FrameworkCultures has been deprecated. Use other values in CultureTypes instead. | -| System.Globalization.CultureTypes.WindowsOnlyCultures | [ObsoleteAttribute(...)] | 0 | CultureTypes.WindowsOnlyCultures has been deprecated. Use other values in CultureTypes instead. | -| System.Globalization.DateTimeFormatInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.DateTimeFormatInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.EraInfo[] System.Globalization.ChineseLunisolarCalendar.CalEraInfo | [NullableAttribute(...)] | 0 | [2,1] | -| System.Globalization.EraInfo[] System.Globalization.EastAsianLunisolarCalendar.CalEraInfo | [NullableAttribute(...)] | 0 | [2,1] | -| System.Globalization.EraInfo[] System.Globalization.JapaneseLunisolarCalendar.CalEraInfo | [NullableAttribute(...)] | 0 | [2,1] | -| System.Globalization.EraInfo[] System.Globalization.KoreanLunisolarCalendar.CalEraInfo | [NullableAttribute(...)] | 0 | [2,1] | -| System.Globalization.EraInfo[] System.Globalization.TaiwanLunisolarCalendar.CalEraInfo | [NullableAttribute(...)] | 0 | [2,1] | -| System.Globalization.IdnMapping | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.IdnMapping | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.JapaneseCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.JapaneseCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.JapaneseLunisolarCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.JapaneseLunisolarCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.JulianCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.JulianCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.KoreanCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.KoreanCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.KoreanLunisolarCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.KoreanLunisolarCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.NumberFormatInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.NumberFormatInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.RegionInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.RegionInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.SortKey | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.SortKey | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.SortVersion | [NotNullWhenAttribute(...)] | 0 | True | -| System.Globalization.SortVersion | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.SortVersion | [NullableContextAttribute(...)] | 0 | 2 | -| System.Globalization.SortVersion | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Globalization.StringInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.StringInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.TaiwanCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.TaiwanCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.TaiwanLunisolarCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.TaiwanLunisolarCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.TextElementEnumerator | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.TextElementEnumerator | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.TextInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.TextInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.ThaiBuddhistCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.ThaiBuddhistCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.TimeSpanParse.StringParser | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Globalization.TimeSpanParse.StringParser | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Globalization.TimeSpanParse.StringParser | [ObsoleteAttribute(...)] | 1 | True | -| System.Globalization.TimeSpanParse.TimeSpanRawInfo | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Globalization.TimeSpanParse.TimeSpanRawInfo | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Globalization.TimeSpanParse.TimeSpanRawInfo | [ObsoleteAttribute(...)] | 1 | True | -| System.Globalization.TimeSpanParse.TimeSpanResult | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Globalization.TimeSpanParse.TimeSpanResult | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Globalization.TimeSpanParse.TimeSpanResult | [ObsoleteAttribute(...)] | 1 | True | -| System.Globalization.TimeSpanParse.TimeSpanToken | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Globalization.TimeSpanParse.TimeSpanToken | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Globalization.TimeSpanParse.TimeSpanToken | [ObsoleteAttribute(...)] | 1 | True | -| System.Globalization.TimeSpanParse.TimeSpanTokenizer | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Globalization.TimeSpanParse.TimeSpanTokenizer | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Globalization.TimeSpanParse.TimeSpanTokenizer | [ObsoleteAttribute(...)] | 1 | True | -| System.Globalization.UmAlQuraCalendar | [NullableAttribute(...)] | 0 | 0 | -| System.Globalization.UmAlQuraCalendar | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.UnicodeCategory System.Char.GetUnicodeCategory(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Globalization.UnicodeCategory System.Globalization.CharUnicodeInfo.GetUnicodeCategory(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Guid | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Guid System.Diagnostics.Tracing.EventSource.GetGuid(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Guid System.Guid.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Guid System.Guid.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Guid System.Guid.ParseExact(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.BitConverter.ToHalf(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Half System.BitConverter.UInt16BitsToHalf(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Half System.Half.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.Half.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.Half.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.Half.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.Half.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.Half.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.Half.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Half System.Half.op_Explicit(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Half System.Half.op_Explicit(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Half System.Half.op_Explicit(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Half System.Half.op_Explicit(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Half System.Half.op_Implicit(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.HashCode | [NullableAttribute(...)] | 0 | 0 | -| System.HashCode | [NullableContextAttribute(...)] | 0 | 1 | -| System.HexConverter.<>c.<>9__6_0 | [TupleElementNamesAttribute(...)] | 0 | [RosPtr,casing] | -| System.IAsyncResult | [NullableAttribute(...)] | 0 | 1 | -| System.IAsyncResult | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`4.BeginInvoke(!0,!1,!2,!3,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`5.BeginInvoke(!0,!1,!2,!3,!4,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`6.BeginInvoke(!0,!1,!2,!3,!4,!5,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`7.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`8.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`9.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`10.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`11.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`12.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`13.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`14.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`15.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Action`16.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`5.BeginInvoke(!0,!1,!2,!3,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`6.BeginInvoke(!0,!1,!2,!3,!4,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`7.BeginInvoke(!0,!1,!2,!3,!4,!5,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`8.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`9.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`10.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`11.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`12.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`13.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`14.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`15.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`16.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Func`17.BeginInvoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,System.AsyncCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Threading.Overlapped.AsyncResult | [NullableAttribute(...)] | 0 | 1 | -| System.IAsyncResult System.Threading.Overlapped.get_AsyncResult() | [NullableContextAttribute(...)] | 0 | 1 | -| System.ICloneable | [NullableContextAttribute(...)] | 0 | 1 | -| System.IComparable | [NullableContextAttribute(...)] | 0 | 2 | -| System.IComparable`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.IConvertible | [CLSCompliantAttribute(...)] | 0 | False | -| System.IConvertible | [NullableContextAttribute(...)] | 0 | 2 | -| System.ICustomFormatter | [NullableContextAttribute(...)] | 0 | 2 | -| System.IEquatable`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.IFormatProvider | [NullableAttribute(...)] | 0 | 2 | -| System.IFormatProvider | [NullableContextAttribute(...)] | 0 | 2 | -| System.IFormattable | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.BinaryReader | [NullableAttribute(...)] | 0 | 0 | -| System.IO.BinaryReader | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.BinaryWriter | [NullableAttribute(...)] | 0 | 0 | -| System.IO.BinaryWriter | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.BufferedStream | [NullableAttribute(...)] | 0 | 0 | -| System.IO.BufferedStream | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.Directory | [NullableAttribute(...)] | 0 | 0 | -| System.IO.Directory | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.DirectoryInfo | [NullableAttribute(...)] | 0 | 0 | -| System.IO.DirectoryInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.DirectoryInfo System.IO.Directory.CreateDirectory(System.String,System.IO.UnixFileMode) | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IO.DirectoryInfo System.IO.DirectoryInfo.Parent | [NullableAttribute(...)] | 0 | 2 | -| System.IO.DirectoryInfo System.IO.DirectoryInfo.get_Parent() | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.DirectoryInfo System.IO.FileInfo.Directory | [NullableAttribute(...)] | 0 | 2 | -| System.IO.DirectoryInfo System.IO.FileInfo.get_Directory() | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.DirectoryNotFoundException | [NullableAttribute(...)] | 0 | 0 | -| System.IO.DirectoryNotFoundException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.DirectoryNotFoundException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IO.EndOfStreamException | [NullableAttribute(...)] | 0 | 0 | -| System.IO.EndOfStreamException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.EndOfStreamException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IO.Enumeration.FileSystemEntry | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.IO.Enumeration.FileSystemEntry | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.IO.Enumeration.FileSystemEntry | [ObsoleteAttribute(...)] | 1 | True | -| System.IO.Enumeration.FileSystemEntry.FileNameBuffer._buffer | [FixedBufferAttribute(...)] | 0 | System.Char | -| System.IO.Enumeration.FileSystemEntry.FileNameBuffer._buffer | [FixedBufferAttribute(...)] | 1 | 256 | -| System.IO.Enumeration.FileSystemEnumerable<!0>.FindPredicate | [NullableAttribute(...)] | 0 | [2,0] | -| System.IO.Enumeration.FileSystemEnumerable<!0>.FindPredicate System.IO.Enumeration.FileSystemEnumerable`1.ShouldIncludePredicate | [NullableAttribute(...)] | 0 | [2,0] | -| System.IO.Enumeration.FileSystemEnumerable<!0>.FindPredicate System.IO.Enumeration.FileSystemEnumerable`1.ShouldRecursePredicate | [NullableAttribute(...)] | 0 | [2,0] | -| System.IO.Enumeration.FileSystemEnumerable<!0>.FindTransform | [NullableAttribute(...)] | 0 | [1,0] | -| System.IO.Enumeration.FileSystemEnumerator`1._pending | [TupleElementNamesAttribute(...)] | 0 | [Path,RemainingDepth] | -| System.IO.EnumerationOptions | [NullableAttribute(...)] | 0 | 0 | -| System.IO.EnumerationOptions | [NullableAttribute(...)] | 0 | 2 | -| System.IO.EnumerationOptions | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.File | [NullableAttribute(...)] | 0 | 0 | -| System.IO.File | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.FileInfo | [NullableAttribute(...)] | 0 | 0 | -| System.IO.FileInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.FileLoadException | [NullableAttribute(...)] | 0 | 0 | -| System.IO.FileLoadException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.FileLoadException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IO.FileNotFoundException | [NullableAttribute(...)] | 0 | 0 | -| System.IO.FileNotFoundException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.FileNotFoundException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IO.FileStream | [NullableAttribute(...)] | 0 | 0 | -| System.IO.FileStream | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.FileStream System.Reflection.Assembly.GetFile(System.String) | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| System.IO.FileStream System.Reflection.Emit.AssemblyBuilder.GetFile(System.String) | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| System.IO.FileStream System.Reflection.RuntimeAssembly.GetFile(System.String) | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| System.IO.FileStream[] System.Reflection.Assembly.GetFiles() | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| System.IO.FileStream[] System.Reflection.Assembly.GetFiles(System.Boolean) | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| System.IO.FileStream[] System.Reflection.Emit.AssemblyBuilder.GetFiles(System.Boolean) | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| System.IO.FileStream[] System.Reflection.RuntimeAssembly.GetFiles(System.Boolean) | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| System.IO.FileSystemInfo | [NullableAttribute(...)] | 0 | 0 | -| System.IO.FileSystemInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.FileSystemInfo System.IO.Enumeration.FileSystemEntry.ToFileSystemInfo() | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.FileSystemInfo System.IO.FileSystemInfo.ResolveLinkTarget(System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.IOException | [NullableAttribute(...)] | 0 | 0 | -| System.IO.IOException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.IOException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IO.InvalidDataException | [NullableAttribute(...)] | 0 | 0 | -| System.IO.InvalidDataException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.InvalidDataException | [TypeForwardedFromAttribute(...)] | 0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IO.MemoryStream | [NullableAttribute(...)] | 0 | 0 | -| System.IO.MemoryStream | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.Path.InvalidPathChars | [NullableAttribute(...)] | 0 | 1 | -| System.IO.Path.InvalidPathChars | [ObsoleteAttribute(...)] | 0 | Path.InvalidPathChars has been deprecated. Use GetInvalidPathChars or GetInvalidFileNameChars instead. | -| System.IO.PathTooLongException | [NullableAttribute(...)] | 0 | 0 | -| System.IO.PathTooLongException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IO.PathTooLongException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IO.Stream | [NullableAttribute(...)] | 0 | 0 | -| System.IO.Stream | [NullableAttribute(...)] | 0 | 2 | -| System.IO.Stream | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.Stream System.Console.OpenStandardInput() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.IO.Stream System.Console.OpenStandardInput() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.IO.Stream System.Console.OpenStandardInput() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.IO.Stream System.Console.OpenStandardInput() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.IO.Stream System.Console.OpenStandardInput(System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.IO.Stream System.Console.OpenStandardInput(System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.IO.StreamReader | [NullableAttribute(...)] | 0 | 0 | -| System.IO.StreamReader | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.StreamWriter | [NullableAttribute(...)] | 0 | 0 | -| System.IO.StreamWriter | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.StringReader | [NullableAttribute(...)] | 0 | 0 | -| System.IO.StringReader | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.StringWriter | [NullableAttribute(...)] | 0 | 0 | -| System.IO.StringWriter | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.TextReader | [NullableAttribute(...)] | 0 | 0 | -| System.IO.TextReader | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.TextReader System.Console.In | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.IO.TextReader System.Console.In | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.IO.TextReader System.Console.In | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.IO.TextReader System.Console.In | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.IO.TextWriter | [NullableAttribute(...)] | 0 | 0 | -| System.IO.TextWriter | [NullableContextAttribute(...)] | 0 | 1 | -| System.IO.UnixFileMode System.IO.File.GetUnixFileMode(Microsoft.Win32.SafeHandles.SafeFileHandle) | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IO.UnixFileMode System.IO.File.GetUnixFileMode(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IO.UnmanagedMemoryStream System.Resources.ResourceManager.GetStream(System.String,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IObservable`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.IObserver`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.IProgress`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.IndexOutOfRangeException | [NullableAttribute(...)] | 0 | 0 | -| System.IndexOutOfRangeException | [NullableContextAttribute(...)] | 0 | 2 | -| System.IndexOutOfRangeException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.InsufficientExecutionStackException | [NullableAttribute(...)] | 0 | 0 | -| System.InsufficientExecutionStackException | [NullableContextAttribute(...)] | 0 | 2 | -| System.InsufficientExecutionStackException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.InsufficientMemoryException | [NullableAttribute(...)] | 0 | 0 | -| System.InsufficientMemoryException | [NullableContextAttribute(...)] | 0 | 2 | -| System.InsufficientMemoryException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Int16 System.BitConverter.ToInt16(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int16 System.Convert.ToInt16(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int16 System.Convert.ToInt16(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int16 System.Convert.ToInt16(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int16 System.Convert.ToInt16(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int16 System.Int16.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int16 System.Int16.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int16 System.Int16.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int16 System.Int16.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int16 System.Int16.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int16 System.Int16.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int16 System.Int16.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int16 System.Runtime.InteropServices.Marshal.ReadInt16(System.Object,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int16 System.Runtime.InteropServices.Marshal.ReadInt16(System.Object,System.Int32) | [ObsoleteAttribute(...)] | 0 | ReadInt16(Object, Int32) may be unavailable in future releases. | -| System.Int16 System.Runtime.InteropServices.Marshal.ReadInt16(System.Object,System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.GetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for the method requested might not be available at runtime. | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssembly(System.IntPtr,System.IntPtr,System.IntPtr) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for the method requested might not be available at runtime. | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssembly(System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssembly(System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssembly(System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssembly(System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | maccatalyst | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssembly(System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for the method requested might not be available at runtime. | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Native hosting is not trim compatible and this warning will be seen if trimming is enabled. | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | maccatalyst | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyAndGetFunctionPointer(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyBytes(System.Byte*,System.IntPtr,System.Byte*,System.IntPtr,System.IntPtr,System.IntPtr) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for the method requested might not be available at runtime. | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyBytes(System.Byte*,System.IntPtr,System.Byte*,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyBytes(System.Byte*,System.IntPtr,System.Byte*,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyBytes(System.Byte*,System.IntPtr,System.Byte*,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyBytes(System.Byte*,System.IntPtr,System.Byte*,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | maccatalyst | -| System.Int32 Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyBytes(System.Byte*,System.IntPtr,System.Byte*,System.IntPtr,System.IntPtr,System.IntPtr) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Int32 Interop.Globalization.GetCalendars(System.String,System.Globalization.CalendarId[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 Interop.Globalization.GetCalendars(System.String,System.Globalization.CalendarId[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 Interop.Globalization.GetICUVersion() | [LibraryImportAttribute(...)] | 0 | libSystem.Globalization.Native | -| System.Int32 Interop.Globalization.GetLatestJapaneseEra() | [LibraryImportAttribute(...)] | 0 | libSystem.Globalization.Native | -| System.Int32 Interop.Globalization.GetLocales(System.Char[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 Interop.Globalization.GetLocales(System.Char[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 Interop.Globalization.GetSortVersion(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | libSystem.Globalization.Native | -| System.Int32 Interop.Globalization.IanaIdToWindowsId(System.String,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 Interop.Globalization.IanaIdToWindowsId(System.String,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 Interop.Globalization.LoadICU() | [LibraryImportAttribute(...)] | 0 | libSystem.Globalization.Native | -| System.Int32 Interop.Globalization.WindowsIdToIanaId(System.String,System.IntPtr,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 Interop.Globalization.WindowsIdToIanaId(System.String,System.IntPtr,System.Char*,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 Interop.HostPolicy.corehost_resolve_component_dependencies(System.String,Interop.HostPolicy.corehost_resolve_component_dependencies_result_fn) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 Interop.HostPolicy.corehost_resolve_component_dependencies(System.String,Interop.HostPolicy.corehost_resolve_component_dependencies_result_fn) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 Interop.Kernel32.FormatMessage(System.Int32,System.IntPtr,System.UInt32,System.Int32,System.Void*,System.Int32,System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 Interop.Kernel32.FormatMessage(System.Int32,System.IntPtr,System.UInt32,System.Int32,System.Void*,System.Int32,System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 Interop.Kernel32.FormatMessage(System.Int32,System.IntPtr,System.UInt32,System.Int32,System.Void*,System.Int32,System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.AppDomain.ExecuteAssembly(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Int32 System.AppDomain.ExecuteAssembly(System.String,System.String[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Int32 System.AppDomain.ExecuteAssembly(System.String,System.String[],System.Byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.AppDomain.ExecuteAssembly(System.String,System.String[],System.Byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Int32 System.AppDomain.ExecuteAssembly(System.String,System.String[],System.Byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Int32 System.AppDomain.GetCurrentThreadId() | [ObsoleteAttribute(...)] | 0 | AppDomain.GetCurrentThreadId has been deprecated because it does not provide a stable Id when managed threads are running on fibers (aka lightweight threads). To get a stable identifier for a managed thread, use the ManagedThreadId property on Thread instead. | -| System.Int32 System.Array.BinarySearch(System.Array,System.Int32,System.Int32,System.Object,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Array.BinarySearch(System.Array,System.Object,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Attribute.GetHashCode() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Int32 System.Attribute.GetHashCode() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Int32 System.BitConverter.ToInt32(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Boolean.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.ComputeFirstIndexOverlapped`2(!0,!0,!0,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.ComputeFirstIndex`2(!0,!0,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.ComputeLastIndexOverlapped`2(!0,!0,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.ComputeLastIndex`2(!0,!0,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized`2(System.Int16,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized`2(System.Int16,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized`2(System.Int16,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized`1(System.Byte,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized`2(System.Int16,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized`2(System.Int16,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Int32 System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized`2(System.Int16,System.Int32,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Int32 System.Buffers.ProbabilisticMap.IndexOfAnyVectorized(System.UInt32,System.Char,System.Int32,System.ReadOnlySpan<System.Char>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Int32 System.Buffers.ProbabilisticMap.IndexOfAnyVectorized(System.UInt32,System.Char,System.Int32,System.ReadOnlySpan<System.Char>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse41 | -| System.Int32 System.Byte.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Char.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Char.ConvertToUtf32(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Collections.ArrayList.Add(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.BinarySearch(System.Int32,System.Int32,System.Object,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.BinarySearch(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.BinarySearch(System.Object,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.IndexOf(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.IndexOf(System.Object,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.IndexOf(System.Object,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.LastIndexOf(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.LastIndexOf(System.Object,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.ArrayList.LastIndexOf(System.Object,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.Comparer.Compare(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.Generic.Comparer`1.Compare(!0,!0) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.Generic.GenericEqualityComparer`1.GetHashCode(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Collections.Generic.IEqualityComparer`1.GetHashCode(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Collections.Generic.NonRandomizedStringEqualityComparer.GetHashCode(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Collections.Generic.ObjectEqualityComparer`1.GetHashCode(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Collections.Generic.ReferenceEqualityComparer.GetHashCode(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Comparison`1.Invoke(!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Console.Read() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Int32 System.Console.Read() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Int32 System.Console.get_BufferHeight() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Int32 System.Console.get_BufferHeight() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Int32 System.Console.get_BufferHeight() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Int32 System.Console.get_BufferHeight() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Int32 System.Console.get_BufferWidth() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Int32 System.Console.get_BufferWidth() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Int32 System.Console.get_BufferWidth() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Int32 System.Console.get_BufferWidth() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Int32 System.Console.get_CursorSize() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Int32 System.Console.get_CursorSize() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Int32 System.Console.get_CursorSize() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Int32 System.Console.get_CursorSize() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Int32 System.Convert.ToBase64CharArray(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Convert.ToBase64CharArray(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Base64FormattingOptions) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Convert.ToInt32(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Convert.ToInt32(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Convert.ToInt32(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Convert.ToInt32(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.CultureAwareComparer.GetHashCode(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.DateOnly.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.DateTime.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Decimal.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.EventActivityIdControl(System.UInt32,System.Guid) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.EventActivityIdControl(System.UInt32,System.Guid) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Diagnostics.Tracing.EventPipeInternal.EventActivityIdControl(System.UInt32,System.Guid) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Diagnostics.Tracing.EventSource.GetHelperCallFirstArg(System.Reflection.MethodInfo) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Int32 System.Diagnostics.Tracing.EventSource.GetHelperCallFirstArg(System.Reflection.MethodInfo) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Int32 System.Double.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Enum.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Environment.GetProcessorCount() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.GC._EndNoGCRegion() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.GC._RefreshMemoryLimit(System.GC.GCHeapHardLimitInfo) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.GC._StartNoGCRegion(System.Int64,System.Boolean,System.Int64,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.GC._StartNoGCRegion(System.Int64,System.Boolean,System.Int64,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.GC._StartNoGCRegion(System.Int64,System.Boolean,System.Int64,System.Boolean) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Globalization.CharUnicodeInfo.GetDecimalDigitValue(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Globalization.CharUnicodeInfo.GetDigitValue(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Globalization.CompareInfo.Compare(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.Compare(System.String,System.Int32,System.Int32,System.String,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Globalization.CompareInfo.Compare(System.String,System.Int32,System.Int32,System.String,System.Int32,System.Int32,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Globalization.CompareInfo.Compare(System.String,System.Int32,System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Globalization.CompareInfo.Compare(System.String,System.Int32,System.String,System.Int32,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Globalization.CompareInfo.Compare(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Globalization.CompareInfo.Compare(System.String,System.String,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Globalization.CompareInfo.GetHashCode(System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.GetSortKey(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.GetSortKeyLength(System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.IndexOf(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.IndexOf(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.IndexOf(System.ReadOnlySpan<System.Char>,System.Text.Rune,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.LastIndexOf(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.LastIndexOf(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.Globalization.CompareOptions,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.CompareInfo.LastIndexOf(System.ReadOnlySpan<System.Char>,System.Text.Rune,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Globalization.StringInfo.GetNextTextElementLength(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Guid.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Half.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.HashCode.GetHashCode() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.HashCode.GetHashCode() | [ObsoleteAttribute(...)] | 0 | HashCode is a mutable struct and should not be compared with other HashCodes. Use ToHashCode to retrieve the computed hash code. | -| System.Int32 System.HashCode.GetHashCode() | [ObsoleteAttribute(...)] | 1 | True | -| System.Int32 System.IO.BinaryReader.Read(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.BinaryReader.Read(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.BufferedStream.Read(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.FileStream.Read(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.MemoryStream.Read(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.Stream.Read(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.Stream.ReadAtLeast(System.Span<System.Byte>,System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.StreamReader.Read(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.StreamReader.ReadBlock(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.StringReader.Read(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.StringReader.ReadBlock(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.TextReader.Read(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.TextReader.ReadBlock(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.IO.UnmanagedMemoryStream.Read(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int16.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Int32.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Int32.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int32.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int32.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int32.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int32.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int32.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int32.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Int64.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Int128.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.IntPtr.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Math.Sign(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.MemoryExtensions.BinarySearch`1(System.ReadOnlySpan<!0>,System.IComparable<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.BinarySearch`1(System.Span<!0>,System.IComparable<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.ReadOnlySpan<!0>,!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.ReadOnlySpan<!0>,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.Span<!0>,!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.BinarySearch`2(System.Span<!0>,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.ReadOnlySpan<!0>,System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.ReadOnlySpan<!0>,System.ReadOnlySpan<!0>,System.Collections.Generic.IEqualityComparer<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.Span<!0>,System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.MemoryExtensions.CommonPrefixLength`1(System.Span<!0>,System.ReadOnlySpan<!0>,System.Collections.Generic.IEqualityComparer<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.MemoryExtensions.IndexOfAnyExceptInRange`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAnyExceptInRange`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.ReadOnlySpan<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAnyExcept`1(System.Span<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAnyInRange`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAnyInRange`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.ReadOnlySpan<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.IndexOfAny`1(System.Span<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExceptInRange`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExceptInRange`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.ReadOnlySpan<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyExcept`1(System.Span<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyInRange`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAnyInRange`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.ReadOnlySpan<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.ReadOnlySpan<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.MemoryExtensions.LastIndexOfAny`1(System.Span<!0>,!0,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Memory`1.GetHashCode() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.Numerics.BitOperations.LeadingZeroCount(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.LeadingZeroCount(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.LeadingZeroCount(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.Log2(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.Log2(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.Log2(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.PopCount(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.PopCount(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.PopCount(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.BitOperations.TrailingZeroCount(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Numerics.IBinaryInteger`1.WriteBigEndian(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Numerics.IBinaryInteger`1.WriteLittleEndian(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Numerics.IFloatingPoint`1.WriteExponentBigEndian(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Numerics.IFloatingPoint`1.WriteExponentLittleEndian(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Numerics.IFloatingPoint`1.WriteSignificandBigEndian(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Numerics.IFloatingPoint`1.WriteSignificandLittleEndian(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Numerics.TotalOrderIeee754Comparer`1.GetHashCode(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.OrdinalComparer.GetHashCode(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.PackedSpanHelpers.ComputeFirstIndex(System.Int16,System.Int16,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Int32 System.PackedSpanHelpers.ComputeFirstIndex(System.Int16,System.Int16,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx512F | -| System.Int32 System.PackedSpanHelpers.ComputeFirstIndexOverlapped(System.Int16,System.Int16,System.Int16,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Int32 System.PackedSpanHelpers.ComputeFirstIndexOverlapped(System.Int16,System.Int16,System.Int16,System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx512F | -| System.Int32 System.PackedSpanHelpers.IndexOf(System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAny(System.Char,System.Char,System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAny(System.Char,System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAnyExcept(System.Char,System.Char,System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAnyExcept(System.Char,System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAnyExcept(System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAnyExceptInRange(System.Char,System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAnyInRange(System.Char,System.Char,System.Char,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAnyInRange`1(System.Int16,System.Int16,System.Int16,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAny`1(System.Int16,System.Int16,System.Int16,System.Int16,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOfAny`1(System.Int16,System.Int16,System.Int16,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.PackedSpanHelpers.IndexOf`1(System.Int16,System.Int16,System.Int32) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Int32 System.ReadOnlyMemory`1.GetHashCode() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.ReadOnlySpan`1.GetHashCode() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.ReadOnlySpan`1.GetHashCode() | [ObsoleteAttribute(...)] | 0 | GetHashCode() on ReadOnlySpan will always throw an exception. | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetArrayMethodToken(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetArrayMethodToken(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRef(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefFromSignature(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefFromSignature(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefOfFieldInfo(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Runtime.CompilerServices.QCallTypeHandle,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefOfMethodInfo(System.Runtime.CompilerServices.QCallModule,System.Int32,System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetStringConstant(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetStringConstant(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetTokenFromTypeSpec(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetTokenFromTypeSpec(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetTokenFromTypeSpec(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetTypeRef(System.Runtime.CompilerServices.QCallModule,System.String,System.Runtime.CompilerServices.QCallModule,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeModuleBuilder.GetTypeRef(System.Runtime.CompilerServices.QCallModule,System.String,System.Runtime.CompilerServices.QCallModule,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineEvent(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Reflection.EventAttributes,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineEvent(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Reflection.EventAttributes,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineField(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32,System.Reflection.FieldAttributes) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineField(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32,System.Reflection.FieldAttributes) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineGenericParam(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32,System.Reflection.GenericParameterAttributes,System.Int32,System.Int32[]) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineGenericParam(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32,System.Reflection.GenericParameterAttributes,System.Int32,System.Int32[]) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineMethod(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32,System.Reflection.MethodAttributes) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineMethod(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Byte[],System.Int32,System.Reflection.MethodAttributes) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodSpec(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodSpec(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodSpec(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineProperty(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Reflection.PropertyAttributes,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineProperty(System.Runtime.CompilerServices.QCallModule,System.Int32,System.String,System.Reflection.PropertyAttributes,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineType(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32,System.Reflection.TypeAttributes,System.Int32,System.Int32[]) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.DefineType(System.Runtime.CompilerServices.QCallModule,System.String,System.Int32,System.Reflection.TypeAttributes,System.Int32,System.Int32[]) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.GetTokenFromSig(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.GetTokenFromSig(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.GetTokenFromSig(System.Runtime.CompilerServices.QCallModule,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.SetParamInfo(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Reflection.ParameterAttributes,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.Emit.RuntimeTypeBuilder.SetParamInfo(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Reflection.ParameterAttributes,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Reflection.RuntimeAssembly.GetManifestResourceInfo(System.Runtime.CompilerServices.QCallAssembly,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StringHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Reflection.RuntimeAssembly.GetManifestResourceInfo(System.Runtime.CompilerServices.QCallAssembly,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StringHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Runtime.CompilerServices.Unsafe.SizeOf`1() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Runtime.InteropServices.ComTypes.IMoniker.IsRunning(System.Runtime.InteropServices.ComTypes.IBindCtx,System.Runtime.InteropServices.ComTypes.IMoniker,System.Runtime.InteropServices.ComTypes.IMoniker) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(System.Object) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Int32 System.Runtime.InteropServices.Marshal.GetEndComSlot(System.Type) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Int32 System.Runtime.InteropServices.Marshal.GetExceptionCode() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.Runtime.InteropServices.Marshal.GetExceptionCode() | [ObsoleteAttribute(...)] | 0 | GetExceptionCode() may be unavailable in future releases. | -| System.Int32 System.Runtime.InteropServices.Marshal.GetHRForException(System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Runtime.InteropServices.Marshal.GetStartComSlot(System.Type) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Int32 System.Runtime.InteropServices.Marshal.ReadInt32(System.Object,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.Runtime.InteropServices.Marshal.ReadInt32(System.Object,System.Int32) | [ObsoleteAttribute(...)] | 0 | ReadInt32(Object, Int32) may be unavailable in future releases. | -| System.Int32 System.Runtime.InteropServices.Marshal.ReadInt32(System.Object,System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Int32 System.Runtime.InteropServices.Marshal.ReleaseComObject(System.Object) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Int32 System.Runtime.InteropServices.Marshal.SizeOf(System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.Runtime.InteropServices.Marshal.SizeOf(System.Object) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available. Use the SizeOf<T> overload instead. | -| System.Int32 System.Runtime.InteropServices.Marshal.SizeOf(System.Type) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.Runtime.InteropServices.Marshal.SizeOf(System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available. Use the SizeOf<T> overload instead. | -| System.Int32 System.Runtime.InteropServices.Marshal.SizeOf`1() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Runtime.InteropServices.NFloat.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.SByte.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Single.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Span`1.GetHashCode() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int32 System.Span`1.GetHashCode() | [ObsoleteAttribute(...)] | 0 | GetHashCode() on Span will always throw an exception. | -| System.Int32 System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32,System.Boolean,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32,System.Globalization.CultureInfo,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32,System.StringComparison) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.String,System.Boolean,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.String,System.Globalization.CultureInfo,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.Compare(System.String,System.String,System.StringComparison) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.CompareOrdinal(System.String,System.Int32,System.String,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.CompareOrdinal(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.CompareTo(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.String.GetHashCode(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.String.GetHashCode(System.ReadOnlySpan<System.Char>,System.StringComparison) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.StringComparer.Compare(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.StringComparer.Compare(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Text.ASCIIEncoding.GetByteCount(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.ASCIIEncoding.GetByteCount(System.Char[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.ASCIIEncoding.GetByteCount(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.ASCIIEncoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.ASCIIEncoding.GetBytes(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.ASCIIEncoding.GetBytes(System.String,System.Int32,System.Int32,System.Byte[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.ASCIIEncoding.GetCharCount(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.ASCIIEncoding.GetCharCount(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.ASCIIEncoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.ASCIIEncoding.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.Decoder.GetCharCount(System.Byte*,System.Int32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Decoder.GetCharCount(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.Decoder.GetCharCount(System.Byte[],System.Int32,System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.Decoder.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Decoder.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.Decoder.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.Encoder.GetByteCount(System.Char*,System.Int32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Encoder.GetByteCount(System.Char[],System.Int32,System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.Encoder.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Encoder.GetBytes(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.Encoding.GetByteCount(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Encoding.GetByteCount(System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.Encoding.GetByteCount(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.Encoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Encoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.Encoding.GetBytes(System.ReadOnlySpan<System.Char>,System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.Encoding.GetCharCount(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Encoding.GetCharCount(System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.Encoding.GetCharCount(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.Encoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.Encoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.Encoding.GetChars(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF7Encoding.GetByteCount(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF7Encoding.GetByteCount(System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF7Encoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF7Encoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF7Encoding.GetCharCount(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF7Encoding.GetCharCount(System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF7Encoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF7Encoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF8Encoding.GetByteCount(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF8Encoding.GetByteCount(System.Char[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.UTF8Encoding.GetByteCount(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.UTF8Encoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF8Encoding.GetBytes(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.UTF8Encoding.GetBytes(System.String,System.Int32,System.Int32,System.Byte[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.UTF8Encoding.GetCharCount(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF8Encoding.GetCharCount(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.UTF8Encoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF8Encoding.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32 System.Text.UTF32Encoding.GetByteCount(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF32Encoding.GetByteCount(System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF32Encoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF32Encoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF32Encoding.GetCharCount(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF32Encoding.GetCharCount(System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UTF32Encoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UTF32Encoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UnicodeEncoding.GetByteCount(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UnicodeEncoding.GetByteCount(System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UnicodeEncoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UnicodeEncoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UnicodeEncoding.GetCharCount(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UnicodeEncoding.GetCharCount(System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Text.UnicodeEncoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Text.UnicodeEncoding.GetChars(System.Byte*,System.Int32,System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int32 System.Threading.LowLevelLifoSemaphore.WaitNative(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Int32 System.Threading.LowLevelLifoSemaphore.WaitNative(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Int32 System.Threading.LowLevelLifoSemaphore.WaitNative(Microsoft.Win32.SafeHandles.SafeWaitHandle,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int32 System.Threading.SynchronizationContext.Wait(System.IntPtr[],System.Boolean,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.Threading.SynchronizationContext.WaitHelper(System.IntPtr[],System.Boolean,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int32 System.TimeOnly.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.TimeSpan.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.UInt16.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.UInt32.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.UInt64.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.UInt128.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.UIntPtr.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Version.CompareTo(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32 System.Version.CompareTo(System.Version) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Int32[] System.Decimal.GetBits(System.Decimal) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32[] System.Globalization.GregorianCalendar.get_Eras() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32[] System.Globalization.HebrewCalendar.get_Eras() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32[] System.Globalization.HijriCalendar.get_Eras() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int32[] System.Globalization.PersianCalendar.get_Eras() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.BitConverter.ToInt64(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Int64 System.Convert.ToInt64(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int64 System.Convert.ToInt64(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int64 System.Convert.ToInt64(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int64 System.Convert.ToInt64(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int64 System.GC.GetTotalMemory() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int64 System.GC._GetGenerationBudget(System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int64 System.IO.RandomAccess.GetLength(Microsoft.Win32.SafeHandles.SafeFileHandle) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.IO.RandomAccess.Read(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList<System.Memory<System.Byte>>,System.Int64) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Int64.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Int64.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Int64.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Int64.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Int64.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Int64.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Int64.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int64 System.Runtime.InteropServices.Marshal.ReadInt64(System.Object,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Int64 System.Runtime.InteropServices.Marshal.ReadInt64(System.Object,System.Int32) | [ObsoleteAttribute(...)] | 0 | ReadInt64(Object, Int32) may be unavailable in future releases. | -| System.Int64 System.Runtime.InteropServices.Marshal.ReadInt64(System.Object,System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Int64 System.Threading.Monitor.GetLockContentionCount() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Int128 System.Int128.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int128 System.Int128.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int128 System.Int128.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int128 System.Int128.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int128 System.Int128.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int128 System.Int128.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int128 System.Int128.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Int128 System.Int128.op_Implicit(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int128 System.Int128.op_Implicit(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int128 System.Int128.op_Implicit(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int128 System.Int128.op_Implicit(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int128 System.Int128.op_Implicit(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int128 System.UInt128.op_CheckedExplicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Int128 System.UInt128.op_Explicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.IntPtr | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.IntPtr Internal.Runtime.InteropServices.ComponentActivator.InternalGetFunctionPointer(System.Runtime.Loader.AssemblyLoadContext,System.String,System.String,System.IntPtr) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for the method requested might not be available at runtime. | -| System.IntPtr Internal.Runtime.InteropServices.ComponentActivator.InternalGetFunctionPointer(System.Runtime.Loader.AssemblyLoadContext,System.String,System.String,System.IntPtr) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Native hosting is not trim compatible and this warning will be seen if trimming is enabled. | -| System.IntPtr Interop.HostPolicy.corehost_set_error_writer(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | libhostpolicy | -| System.IntPtr System.ComAwareWeakReference.ObjectToComWeakRef(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.IntPtr System.ComAwareWeakReference.ObjectToComWeakRef(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.IntPtr System.ComAwareWeakReference.ObjectToComWeakRef(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Int64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.CreateProvider(System.String,delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void>,System.Void*) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.CreateProvider(System.String,delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void>,System.Void*) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.DefineEvent(System.IntPtr,System.UInt32,System.Int64,System.UInt32,System.UInt32,System.Void*,System.UInt32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.GetProvider(System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.IntPtr System.Diagnostics.Tracing.EventPipeInternal.GetProvider(System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.IntPtr System.GC._RegisterFrozenSegment(System.IntPtr,System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.IO.FileStream.Handle | [ObsoleteAttribute(...)] | 0 | FileStream.Handle has been deprecated. Use FileStream's SafeFileHandle property instead. | -| System.IntPtr System.IntPtr.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.IntPtr.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.IntPtr.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.IntPtr.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.IntPtr.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.IntPtr.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.IntPtr.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.IntPtr.op_Explicit(System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.IntPtr System.Runtime.CompilerServices.RuntimeHelpers.AllocateTypeAssociatedMemory(System.Runtime.CompilerServices.QCallTypeHandle,System.UInt32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.Runtime.InteropServices.DllImportResolver.Invoke(System.String,System.Reflection.Assembly,System.Nullable<System.Runtime.InteropServices.DllImportSearchPath>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.Marshal.CreateAggregatedObject(System.IntPtr,System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.Marshal.CreateAggregatedObject(System.IntPtr,System.Object) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IntPtr System.Runtime.InteropServices.Marshal.CreateAggregatedObject`1(System.IntPtr,!0) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetComInterfaceForObject(System.Object,System.Type) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetComInterfaceForObject(System.Object,System.Type) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetComInterfaceForObject(System.Object,System.Type,System.Runtime.InteropServices.CustomQueryInterfaceMode) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetComInterfaceForObject(System.Object,System.Type,System.Runtime.InteropServices.CustomQueryInterfaceMode) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetComInterfaceForObject`2(!0) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetComInterfaceForObject`2(!0) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(System.Delegate) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(System.Delegate) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the delegate might not be available. Use the GetFunctionPointerForDelegate<TDelegate> overload instead. | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate`1(!0) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate`1(!0) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Module) | [RequiresAssemblyFilesAttribute(...)] | 0 | Windows only assigns HINSTANCE to assemblies loaded from disk. This API will return -1 for modules without a file on disk. | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetIDispatchForObject(System.Object) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IntPtr System.Runtime.InteropServices.Marshal.GetIUnknownForObject(System.Object) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.IntPtr System.Runtime.InteropServices.Marshal.OffsetOf(System.Type,System.String) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.Marshal.OffsetOf(System.Type,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.IntPtr System.Runtime.InteropServices.Marshal.OffsetOf(System.Type,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.IntPtr System.Runtime.InteropServices.Marshal.ReadIntPtr(System.Object,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.Marshal.ReadIntPtr(System.Object,System.Int32) | [ObsoleteAttribute(...)] | 0 | ReadIntPtr(Object, Int32) may be unavailable in future releases. | -| System.IntPtr System.Runtime.InteropServices.Marshal.ReadIntPtr(System.Object,System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToBSTR(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToCoTaskMemAnsi(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToCoTaskMemAuto(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToCoTaskMemUTF8(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToHGlobalAuto(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.StringToHGlobalUni(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.IntPtr System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(System.Array,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.GetSymbol(System.IntPtr,System.String,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.GetSymbol(System.IntPtr,System.String,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.LoadByName(System.String,System.Runtime.CompilerServices.QCallAssembly,System.Boolean,System.UInt32,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.LoadByName(System.String,System.Runtime.CompilerServices.QCallAssembly,System.Boolean,System.UInt32,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.LoadFromPath(System.String,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.IntPtr System.Runtime.InteropServices.NativeLibrary.LoadFromPath(System.String,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.IntPtr System.Runtime.Loader.AssemblyLoadContext.GetLoadContextForAssembly(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.Runtime.Loader.AssemblyLoadContext.InitializeAssemblyLoadContext(System.IntPtr,System.Boolean,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.IntPtr System.Runtime.Loader.AssemblyLoadContext.InitializeAssemblyLoadContext(System.IntPtr,System.Boolean,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.IntPtr System.Runtime.Loader.AssemblyLoadContext.InitializeAssemblyLoadContext(System.IntPtr,System.Boolean,System.Boolean) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.RuntimeMethodHandle.GetFunctionPointer(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.RuntimeTypeHandle.FreeGCHandle(System.Runtime.CompilerServices.QCallTypeHandle,System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.RuntimeTypeHandle.GetGCHandle(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.InteropServices.GCHandleType) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.IntPtr System.Threading.WaitHandle.Handle | [ObsoleteAttribute(...)] | 0 | WaitHandle.Handle has been deprecated. Use the SafeWaitHandle property instead. | -| System.InvalidCastException | [NullableAttribute(...)] | 0 | 0 | -| System.InvalidCastException | [NullableContextAttribute(...)] | 0 | 2 | -| System.InvalidCastException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.InvalidOperationException | [NullableAttribute(...)] | 0 | 0 | -| System.InvalidOperationException | [NullableContextAttribute(...)] | 0 | 2 | -| System.InvalidOperationException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.InvalidProgramException | [NullableAttribute(...)] | 0 | 0 | -| System.InvalidProgramException | [NullableContextAttribute(...)] | 0 | 2 | -| System.InvalidProgramException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.InvalidTimeZoneException | [NullableAttribute(...)] | 0 | 0 | -| System.InvalidTimeZoneException | [NullableContextAttribute(...)] | 0 | 2 | -| System.InvalidTimeZoneException | [TypeForwardedFromAttribute(...)] | 0 | System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Lazy`1 | [DebuggerDisplayAttribute(...)] | 0 | ThreadSafetyMode = {Mode}, IsValueCreated = {IsValueCreated}, IsValueFaulted = {IsValueFaulted}, Value = {ValueForDebugDisplay} | -| System.Lazy`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.LazyDebugView`1 | -| System.Lazy`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Lazy`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Lazy`2 | [NullableAttribute(...)] | 0 | [0,1] | -| System.Lazy`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.LoaderOptimization.DisallowBindings | [ObsoleteAttribute(...)] | 0 | LoaderOptimization.DisallowBindings has been deprecated and is not supported. | -| System.LoaderOptimization.DomainMask | [ObsoleteAttribute(...)] | 0 | LoaderOptimization.DomainMask has been deprecated and is not supported. | -| System.LoaderOptimizationAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.MTAThreadAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.MarshalByRefObject | [ClassInterfaceAttribute(...)] | 0 | 1 | -| System.MarshalByRefObject | [ComVisibleAttribute(...)] | 0 | True | -| System.MarshalByRefObject | [NullableAttribute(...)] | 0 | 0 | -| System.MarshalByRefObject | [NullableContextAttribute(...)] | 0 | 1 | -| System.MemberAccessException | [NullableAttribute(...)] | 0 | 0 | -| System.MemberAccessException | [NullableContextAttribute(...)] | 0 | 2 | -| System.MemberAccessException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Memory<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Memory<!0> System.Buffers.IMemoryOwner`1.Memory | [NullableAttribute(...)] | 0 | [0,1] | -| System.Memory<!0> System.Buffers.MemoryManager`1.Memory | [NullableAttribute(...)] | 0 | [0,1] | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(!0[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(!0[],System.Index) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(!0[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(!0[],System.Range) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(System.ArraySegment<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(System.ArraySegment<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.MemoryExtensions.AsMemory`1(System.ArraySegment<!0>,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.Memory`1.Empty | [NullableAttribute(...)] | 0 | [0,1] | -| System.Memory<!0> System.Runtime.InteropServices.MemoryMarshal.AsMemory`1(System.ReadOnlyMemory<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Memory<!0> System.Runtime.InteropServices.MemoryMarshal.CreateFromPinnedArray`1(!0[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | [destination,provider] | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | destination | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.MemoryExtensions.TryWriteInterpolatedStringHandler | [ObsoleteAttribute(...)] | 1 | True | -| System.Memory`1 | [DebuggerDisplayAttribute(...)] | 0 | {ToString(),raw} | -| System.Memory`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.MemoryDebugView`1 | -| System.Memory`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Memory`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.MethodAccessException | [NullableAttribute(...)] | 0 | 0 | -| System.MethodAccessException | [NullableContextAttribute(...)] | 0 | 2 | -| System.MethodAccessException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.MissingFieldException | [NullableAttribute(...)] | 0 | 0 | -| System.MissingFieldException | [NullableContextAttribute(...)] | 0 | 1 | -| System.MissingFieldException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.MissingMemberException | [NullableAttribute(...)] | 0 | 0 | -| System.MissingMemberException | [NullableContextAttribute(...)] | 0 | 2 | -| System.MissingMemberException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.MissingMethodException | [NullableAttribute(...)] | 0 | 0 | -| System.MissingMethodException | [NullableContextAttribute(...)] | 0 | 1 | -| System.MissingMethodException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ModuleHandle | [NullableAttribute(...)] | 0 | 0 | -| System.ModuleHandle | [NullableContextAttribute(...)] | 0 | 2 | -| System.MulticastDelegate | [ClassInterfaceAttribute(...)] | 0 | 0 | -| System.MulticastDelegate | [ComVisibleAttribute(...)] | 0 | True | -| System.MulticastDelegate | [NullableAttribute(...)] | 0 | 0 | -| System.MulticastDelegate | [NullableContextAttribute(...)] | 0 | 1 | -| System.MulticastNotSupportedException | [NullableAttribute(...)] | 0 | 0 | -| System.MulticastNotSupportedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.MulticastNotSupportedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Net.WebUtility | [NullableAttribute(...)] | 0 | 0 | -| System.Net.WebUtility | [NullableContextAttribute(...)] | 0 | 2 | -| System.NonSerializedAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.NonSerializedAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.NotFiniteNumberException | [NullableAttribute(...)] | 0 | 0 | -| System.NotFiniteNumberException | [NullableContextAttribute(...)] | 0 | 2 | -| System.NotFiniteNumberException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.NotImplementedException | [NullableAttribute(...)] | 0 | 0 | -| System.NotImplementedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.NotImplementedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.NotSupportedException | [NullableAttribute(...)] | 0 | 0 | -| System.NotSupportedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.NotSupportedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.NullReferenceException | [NullableAttribute(...)] | 0 | 0 | -| System.NullReferenceException | [NullableContextAttribute(...)] | 0 | 2 | -| System.NullReferenceException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Nullable`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Number.BigInteger | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Number.BigInteger | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Number.BigInteger | [ObsoleteAttribute(...)] | 1 | True | -| System.Number.BigInteger._blocks | [FixedBufferAttribute(...)] | 0 | System.UInt32 | -| System.Number.BigInteger._blocks | [FixedBufferAttribute(...)] | 1 | 115 | -| System.Number.DiyFp | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Number.DiyFp | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Number.DiyFp | [ObsoleteAttribute(...)] | 1 | True | -| System.Number.NumberBuffer | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Number.NumberBuffer | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Number.NumberBuffer | [ObsoleteAttribute(...)] | 1 | True | -| System.Numerics.IAdditionOperators`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IAdditiveIdentity`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IBinaryInteger`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IBitwiseOperators`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IComparisonOperators`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IDecrementOperators`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IDivisionOperators`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IEqualityOperators`3 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.IExponentialFunctions`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IFloatingPointConstants`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IFloatingPointIeee754`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IFloatingPoint`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IHyperbolicFunctions`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IIncrementOperators`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.ILogarithmicFunctions`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IMinMaxValue`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IModulusOperators`3 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.IMultiplicativeIdentity`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IMultiplyOperators`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.INumberBase`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.INumber`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IShiftOperators`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.ISubtractionOperators`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.ITrigonometricFunctions`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.IUnaryNegationOperators`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Matrix3x2 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.Matrix3x2.Impl | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.Matrix4x4 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.Matrix4x4.Impl | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.Quaternion | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.TotalOrderIeee754Comparer<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Numerics.TotalOrderIeee754Comparer`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Numerics.TotalOrderIeee754Comparer`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector2 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.Vector3 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.Vector4 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Numerics.Vector<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Numerics.Vector<!0> System.Numerics.Vector.Abs`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Add`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.AndNot`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.BitwiseAnd`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.BitwiseOr`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.ConditionalSelect`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Divide`1(System.Numerics.Vector<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Divide`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Equals`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.GreaterThanOrEqual`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.GreaterThan`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.LessThanOrEqual`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.LessThan`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.LoadAlignedNonTemporal`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<!0> System.Numerics.Vector.LoadAlignedNonTemporal`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.LoadAligned`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<!0> System.Numerics.Vector.LoadAligned`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.LoadUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector.LoadUnsafe`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<!0> System.Numerics.Vector.LoadUnsafe`1(!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Load`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<!0> System.Numerics.Vector.Load`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Max`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Min`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Multiply`1(!0,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Multiply`1(System.Numerics.Vector<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Multiply`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Negate`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.OnesComplement`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.SquareRoot`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Subtract`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector.WithElement`1(System.Numerics.Vector<!0>,System.Int32,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector.Xor`1(System.Numerics.Vector<!0>,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Numerics.Vector`1.AllBitsSet | [NullableAttribute(...)] | 0 | [0,1] | -| System.Numerics.Vector<!0> System.Numerics.Vector`1.One | [NullableAttribute(...)] | 0 | [0,1] | -| System.Numerics.Vector<!0> System.Numerics.Vector`1.Zero | [NullableAttribute(...)] | 0 | [0,1] | -| System.Numerics.Vector<!0> System.Numerics.Vector`1.op_Division(System.Numerics.Vector<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector`1.op_Multiply(!0,System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Numerics.Vector`1.op_Multiply(System.Numerics.Vector<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Numerics.Vector<!0> System.Runtime.Intrinsics.Vector128.AsVector`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Runtime.Intrinsics.Vector256.AsVector`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!0> System.Runtime.Intrinsics.Vector512.AsVector`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<!1> System.Numerics.Vector.As`2(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Numerics.Vector<System.Byte> System.Numerics.Vector.Narrow(System.Numerics.Vector<System.UInt16>,System.Numerics.Vector<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.Double> System.Numerics.Vector.ConvertToDouble(System.Numerics.Vector<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.Int16> System.Numerics.Vector.WidenLower(System.Numerics.Vector<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.Int16> System.Numerics.Vector.WidenUpper(System.Numerics.Vector<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.SByte> System.Numerics.Vector.AsVectorSByte`1(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.SByte> System.Numerics.Vector.Narrow(System.Numerics.Vector<System.Int16>,System.Numerics.Vector<System.Int16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.SByte> System.Numerics.Vector.ShiftLeft(System.Numerics.Vector<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.SByte> System.Numerics.Vector.ShiftRightArithmetic(System.Numerics.Vector<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.SByte> System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.SByte> System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.Single> System.Numerics.Vector.ConvertToSingle(System.Numerics.Vector<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt16> System.Numerics.Vector.AsVectorUInt16`1(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt16> System.Numerics.Vector.Narrow(System.Numerics.Vector<System.UInt32>,System.Numerics.Vector<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt16> System.Numerics.Vector.ShiftLeft(System.Numerics.Vector<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt16> System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt16> System.Numerics.Vector.WidenLower(System.Numerics.Vector<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt16> System.Numerics.Vector.WidenUpper(System.Numerics.Vector<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt16> System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector.AsVectorUInt32`1(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector.ConvertToUInt32(System.Numerics.Vector<System.Single>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector.Narrow(System.Numerics.Vector<System.UInt64>,System.Numerics.Vector<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector.ShiftLeft(System.Numerics.Vector<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector.WidenLower(System.Numerics.Vector<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector.WidenUpper(System.Numerics.Vector<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt32> System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt64> System.Numerics.Vector.AsVectorUInt64`1(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt64> System.Numerics.Vector.ConvertToUInt64(System.Numerics.Vector<System.Double>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt64> System.Numerics.Vector.ShiftLeft(System.Numerics.Vector<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt64> System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt64> System.Numerics.Vector.WidenLower(System.Numerics.Vector<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt64> System.Numerics.Vector.WidenUpper(System.Numerics.Vector<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UInt64> System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UIntPtr> System.Numerics.Vector.AsVectorNUInt`1(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UIntPtr> System.Numerics.Vector.ShiftLeft(System.Numerics.Vector<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UIntPtr> System.Numerics.Vector.ShiftRightLogical(System.Numerics.Vector<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector<System.UIntPtr> System.Numerics.Vector`1.op_Explicit(System.Numerics.Vector<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Numerics.Vector`1 | [DebuggerDisplayAttribute(...)] | 0 | {DisplayString,nq} | -| System.Numerics.Vector`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Numerics.VectorDebugView`1 | -| System.Numerics.Vector`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Object System.Activator.CreateInstance(System.Type,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Activator.CreateInstance(System.Type,System.Object[],System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Activator.CreateInstance(System.Type,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Activator.CreateInstance(System.Type,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.AppDomain.CreateInstanceAndUnwrap(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Object System.AppDomain.CreateInstanceAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.AppDomain.CreateInstanceAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Object System.AppDomain.CreateInstanceAndUnwrap(System.String,System.String,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Object System.AppDomain.CreateInstanceFromAndUnwrap(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Object System.AppDomain.CreateInstanceFromAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.AppDomain.CreateInstanceFromAndUnwrap(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Object System.AppDomain.CreateInstanceFromAndUnwrap(System.String,System.String,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Object System.ArgumentOutOfRangeException.get_ActualValue() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Array.GetValue(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Array.GetValue(System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Array.GetValue(System.Int32,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Array.GetValue(System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Array.GetValue(System.Int64,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Array.GetValue(System.Int64,System.Int64,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.CharEnumerator.Clone() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.Collections.ArrayList.get_Item(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Collections.DictionaryEntry.get_Value() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Collections.IDictionaryEnumerator.get_Value() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Delegate.DynamicInvoke(System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Delegate.DynamicInvokeImpl(System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Delegate.get_Target() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Enum.ToObject(System.Type,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Object System.Enum.ToObject(System.Type,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Object System.Enum.ToObject(System.Type,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Object System.Enum.ToObject(System.Type,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Object System.FormattableString.GetArgument(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Globalization.CultureInfo.GetFormat(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Globalization.DateTimeFormatInfo.GetFormat(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Globalization.NumberFormatInfo.GetFormat(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.IAsyncResult.get_AsyncState() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.IConvertible.ToType(System.Type,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.MarshalByRefObject.GetLifetimeService() | [ObsoleteAttribute(...)] | 0 | This Remoting API is not supported and throws PlatformNotSupportedException. | -| System.Object System.MarshalByRefObject.InitializeLifetimeService() | [ObsoleteAttribute(...)] | 0 | This Remoting API is not supported and throws PlatformNotSupportedException. | -| System.Object System.Object.MemberwiseClone() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.Reflection.Assembly.CreateInstance(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead. | -| System.Object System.Reflection.Assembly.CreateInstance(System.String,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead. | -| System.Object System.Reflection.Assembly.CreateInstance(System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.Assembly.CreateInstance(System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead. | -| System.Object System.Reflection.AssemblyName.Clone() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.Reflection.ConstructorInfo.Invoke(System.Object[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.Reflection.ConstructorInvoker.Invoke(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.ConstructorInvoker.Invoke(System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.ConstructorInvoker.Invoke(System.Object,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.CustomAttributeTypedArgument.get_Value() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.Emit.DynamicMethod.Invoke(System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.Emit.RuntimeEnumBuilder.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.Emit.RuntimeTypeBuilder.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.Emit.SymbolType.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.Emit.TypeBuilderInstantiation.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.FieldInfo.GetRawConstantValue() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.FieldInfo.GetValue(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.FieldInfo.GetValueDirect(System.TypedReference) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Object System.Reflection.FieldInfo.GetValueDirect(System.TypedReference) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.IReflect.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.IReflect.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.ModifiedType.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.ParameterInfo.GetRealObject(System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Object System.Reflection.ParameterInfo.GetRealObject(System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Object System.Reflection.ParameterInfo.get_DefaultValue() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.ParameterInfo.get_RawDefaultValue() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Reflection.Pointer.Box(System.Void*,System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.Reflection.SignatureType.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.TypeDelegator.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Reflection.TypeDelegator.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Resources.ResourceManager.GetObject(System.String,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Runtime.CompilerServices.RuntimeHelpers.GetObjectValue(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Runtime.InteropServices.ComWrappers.CreateObject(System.IntPtr,System.Runtime.InteropServices.CreateObjectFlags) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Runtime.InteropServices.Marshal.BindToMoniker(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Built-in COM support is not trim compatible | -| System.Object System.Runtime.InteropServices.Marshal.BindToMoniker(System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Object System.Runtime.InteropServices.Marshal.CreateWrapperOfType(System.Object,System.Type) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Object System.Runtime.InteropServices.Marshal.CreateWrapperOfType(System.Object,System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Runtime.InteropServices.Marshal.CreateWrapperOfType(System.Object,System.Type) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Object System.Runtime.InteropServices.Marshal.GetComObjectData(System.Object,System.Object) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Object System.Runtime.InteropServices.Marshal.GetObjectForIUnknown(System.IntPtr) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Object System.Runtime.InteropServices.Marshal.GetObjectForNativeVariant(System.IntPtr) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Object System.Runtime.InteropServices.Marshal.GetObjectForNativeVariant(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Runtime.InteropServices.Marshal.GetObjectForNativeVariant(System.IntPtr) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Object System.Runtime.InteropServices.Marshal.GetTypedObjectForIUnknown(System.IntPtr,System.Type) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Object System.Runtime.InteropServices.Marshal.GetUniqueObjectForIUnknown(System.IntPtr) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Object System.Runtime.InteropServices.Marshal.PtrToStructure(System.IntPtr,System.Type) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Object System.Runtime.InteropServices.Marshal.PtrToStructure(System.IntPtr,System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Object System.Runtime.Serialization.SerializationEntry.get_Value() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Runtime.Serialization.SerializationInfoEnumerator.get_Value() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.RuntimeType.<CreateInstanceImpl>g__CreateInstanceLocal\|145_0(System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Object System.RuntimeType.<CreateInstanceImpl>g__CreateInstanceLocal\|145_0(System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2082:UnrecognizedReflectionPattern | -| System.Object System.RuntimeType.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Object System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2067:ParameterDoesntMeetParameterRequirements | -| System.Object System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Object System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2067:ParameterDoesntMeetParameterRequirements | -| System.Object System.Security.PermissionSet.get_SyncRoot() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.Threading.Interlocked.CompareExchange(System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Threading.Interlocked.Exchange(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Threading.Tasks.Task.get_AsyncState() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Threading.Thread.VolatileRead(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Threading.ThreadPoolBoundHandle.GetNativeOverlappedState(System.Threading.NativeOverlapped*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Globalization.CultureInfo) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Object System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Object System.UnitySerializationHolder.GetRealObject(System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Object System.Version.Clone() | [NullableContextAttribute(...)] | 0 | 1 | -| System.ObjectDisposedException | [NullableAttribute(...)] | 0 | 0 | -| System.ObjectDisposedException | [NullableContextAttribute(...)] | 0 | 1 | -| System.ObjectDisposedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Object[] System.Diagnostics.Tracing.EventSource.SerializeEventArgs(System.Int32,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Object[] System.Diagnostics.Tracing.EventSource.SerializeEventArgs(System.Int32,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Object[] System.Diagnostics.Tracing.EventSource.SerializeEventArgs(System.Int32,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Object[] System.Runtime.InteropServices.Marshal.GetObjectsForNativeVariants(System.IntPtr,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Object[] System.Runtime.InteropServices.Marshal.GetObjectsForNativeVariants(System.IntPtr,System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.ObsoleteAttribute | [AttributeUsageAttribute(...)] | 0 | 6140 | -| System.ObsoleteAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.ObsoleteAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.OperatingSystem | [NullableAttribute(...)] | 0 | 0 | -| System.OperatingSystem | [NullableContextAttribute(...)] | 0 | 1 | -| System.OperationCanceledException | [NullableAttribute(...)] | 0 | 0 | -| System.OperationCanceledException | [NullableContextAttribute(...)] | 0 | 2 | -| System.OperationCanceledException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.OrdinalComparer | [NullableAttribute(...)] | 0 | 0 | -| System.OrdinalComparer | [NullableContextAttribute(...)] | 0 | 2 | -| System.OrdinalComparer | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.OutOfMemoryException | [NullableAttribute(...)] | 0 | 0 | -| System.OutOfMemoryException | [NullableContextAttribute(...)] | 0 | 2 | -| System.OutOfMemoryException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.OverflowException | [NullableAttribute(...)] | 0 | 0 | -| System.OverflowException | [NullableContextAttribute(...)] | 0 | 2 | -| System.OverflowException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ParamArrayAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.PlatformID.MacOSX | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.PlatformID.Win32S | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.PlatformID.Win32Windows | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.PlatformID.WinCE | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.PlatformID.Xbox | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.PlatformNotSupportedException | [NullableAttribute(...)] | 0 | 0 | -| System.PlatformNotSupportedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.PlatformNotSupportedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Progress`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Progress`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Progress`1.ProgressChanged | [NullableAttribute(...)] | 0 | [2,1] | -| System.Random | [NullableAttribute(...)] | 0 | 0 | -| System.Random | [NullableContextAttribute(...)] | 0 | 1 | -| System.RankException | [NullableAttribute(...)] | 0 | 0 | -| System.RankException | [NullableContextAttribute(...)] | 0 | 2 | -| System.RankException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ReadOnlyMemory<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.ReadOnlyMemory<!0> System.ReadOnlyMemory`1.Empty | [NullableAttribute(...)] | 0 | [0,1] | -| System.ReadOnlyMemory`1 | [DebuggerDisplayAttribute(...)] | 0 | {ToString(),raw} | -| System.ReadOnlyMemory`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.MemoryDebugView`1 | -| System.ReadOnlyMemory`1 | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlyMemory`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.ReadOnlySpan<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.ReadOnlySpan<!0> System.ReadOnlyMemory`1.Span | [NullableAttribute(...)] | 0 | [0,1] | -| System.ReadOnlySpan<!0> System.ReadOnlySpan`1.Empty | [NullableAttribute(...)] | 0 | [0,1] | -| System.ReadOnlySpan<!0> System.Runtime.CompilerServices.RuntimeHelpers.CreateSpan`1(System.RuntimeFieldHandle) | [NullableContextAttribute(...)] | 0 | 2 | -| System.ReadOnlySpan<!0> System.Runtime.InteropServices.MemoryMarshal.CreateReadOnlySpan`1(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.ReadOnlySpan<!0>.Enumerator System.ReadOnlySpan`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Boolean> System.Globalization.CompareInfo.HighCharTable | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Byte> System.Diagnostics.Tracing.EventSource.ProviderMetadata | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Byte> System.Runtime.InteropServices.MemoryMarshal.CreateReadOnlySpanFromNullTerminated(System.Byte*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ReadOnlySpan<System.Byte> System.Text.Encoding.Preamble | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Byte> System.Text.Encoding.get_Preamble() | [NullableContextAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Byte> System.Text.UTF32Encoding.Preamble | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Byte> System.Text.UTF32Encoding.get_Preamble() | [NullableContextAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Byte> System.Text.UnicodeEncoding.Preamble | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Byte> System.Text.UnicodeEncoding.get_Preamble() | [NullableContextAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Char> | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Char> | [StringSyntaxAttribute(...)] | 0 | DateOnlyFormat | -| System.ReadOnlySpan<System.Char> | [StringSyntaxAttribute(...)] | 0 | DateTimeFormat | -| System.ReadOnlySpan<System.Char> | [StringSyntaxAttribute(...)] | 0 | EnumFormat | -| System.ReadOnlySpan<System.Char> | [StringSyntaxAttribute(...)] | 0 | GuidFormat | -| System.ReadOnlySpan<System.Char> | [StringSyntaxAttribute(...)] | 0 | NumericFormat | -| System.ReadOnlySpan<System.Char> | [StringSyntaxAttribute(...)] | 0 | TimeOnlyFormat | -| System.ReadOnlySpan<System.Char> | [StringSyntaxAttribute(...)] | 0 | TimeSpanFormat | -| System.ReadOnlySpan<System.Char> System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.Text | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Char> System.Runtime.InteropServices.MemoryMarshal.CreateReadOnlySpanFromNullTerminated(System.Char*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ReadOnlySpan<System.Char> System.String.op_Implicit(System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.Object> | [NullableAttribute(...)] | 0 | [0,2] | -| System.ReadOnlySpan<System.SByte> System.Convert.DecodingMap | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan<System.String> | [NullableAttribute(...)] | 0 | [0,1] | -| System.ReadOnlySpan`1 | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.ReadOnlySpan`1 | [DebuggerDisplayAttribute(...)] | 0 | {ToString(),raw} | -| System.ReadOnlySpan`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.SpanDebugView`1 | -| System.ReadOnlySpan`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.ReadOnlySpan`1 | [NativeMarshallingAttribute(...)] | 0 | System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | -| System.ReadOnlySpan`1 | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.ReadOnlySpan`1 | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.ReadOnlySpan`1 | [ObsoleteAttribute(...)] | 1 | True | -| System.ReadOnlySpan`1.Enumerator | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.ReadOnlySpan`1.Enumerator | [NullableAttribute(...)] | 0 | 0 | -| System.ReadOnlySpan`1.Enumerator | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.ReadOnlySpan`1.Enumerator | [ObsoleteAttribute(...)] | 1 | True | -| System.Reflection.AmbiguousMatchException | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AmbiguousMatchException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.AmbiguousMatchException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Reflection.Assembly | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Assembly | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.Assembly | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.Assembly | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Assembly Internal.Runtime.InteropServices.IsolatedComponentLoadContext.Load(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.Assembly Internal.Runtime.InteropServices.IsolatedComponentLoadContext.Load(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Reflection.Assembly System.AppDomain.Load(System.Byte[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.AppDomain.Load(System.Byte[],System.Byte[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.GetEntryAssembly() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Assembly System.Reflection.Assembly.Load(System.Byte[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.Load(System.Byte[],System.Byte[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.LoadFile(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.LoadFrom(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.LoadFrom(System.String,System.Byte[],System.Configuration.Assemblies.AssemblyHashAlgorithm) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.LoadFromResolveHandler(System.Object,System.ResolveEventArgs) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.LoadFromResolveHandler(System.Object,System.ResolveEventArgs) | [UnconditionalSuppressMessageAttribute(...)] | 0 | SingleFile | -| System.Reflection.Assembly System.Reflection.Assembly.LoadFromResolveHandler(System.Object,System.ResolveEventArgs) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3000:Avoid accessing Assembly file path when publishing as a single file | -| System.Reflection.Assembly System.Reflection.Assembly.LoadWithPartialName(System.String) | [ObsoleteAttribute(...)] | 0 | Assembly.LoadWithPartialName has been deprecated. Use Assembly.Load() instead. | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.Byte[]) | [ObsoleteAttribute(...)] | 0 | ReflectionOnly loading is not supported and throws PlatformNotSupportedException. | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.Byte[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.String) | [ObsoleteAttribute(...)] | 0 | ReflectionOnly loading is not supported and throws PlatformNotSupportedException. | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoad(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoadFrom(System.String) | [ObsoleteAttribute(...)] | 0 | ReflectionOnly loading is not supported and throws PlatformNotSupportedException. | -| System.Reflection.Assembly System.Reflection.Assembly.ReflectionOnlyLoadFrom(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Reflection.Assembly.UnsafeLoadFrom(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.ResolveEventArgs.RequestingAssembly | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.Assembly System.ResolveEventArgs.get_RequestingAssembly() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Assembly System.ResolveEventHandler.Invoke(System.Object,System.ResolveEventArgs) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 0 | SingleFile | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3000: Avoid accessing Assembly file path when publishing as a single file | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.InternalLoad(System.ReadOnlySpan<System.Byte>,System.ReadOnlySpan<System.Byte>) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.LoadFromNativeImagePath(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.LoadFromStream(System.IO.Stream) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.LoadFromStream(System.IO.Stream,System.IO.Stream) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.ResolveSatelliteAssembly(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.ResolveSatelliteAssembly(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 0 | SingleFile | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.ResolveSatelliteAssembly(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Reflection.Assembly System.Runtime.Loader.AssemblyLoadContext.ResolveSatelliteAssembly(System.Reflection.AssemblyName) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3000: Avoid accessing Assembly file path when publishing as a single file | -| System.Reflection.Assembly.ModuleResolve | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.AssemblyAlgorithmIdAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyCompanyAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyCompanyAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyCompanyAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyConfigurationAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyConfigurationAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyConfigurationAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyCopyrightAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyCopyrightAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyCopyrightAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyCultureAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyCultureAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyCultureAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyDefaultAliasAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyDefaultAliasAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyDefaultAliasAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyDelaySignAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyDescriptionAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyDescriptionAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyDescriptionAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyFileVersionAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyFileVersionAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyFileVersionAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyFlagsAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyInformationalVersionAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyInformationalVersionAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyInformationalVersionAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyKeyFileAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyKeyFileAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyKeyFileAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyKeyNameAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyKeyNameAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyKeyNameAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyMetadataAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyMetadataAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyMetadataAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyName | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyName | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.AssemblyName System.Reflection.AssemblyName.GetAssemblyName(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyName System.Reflection.AssemblyNameProxy.GetAssemblyName(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyNameFlags System.Reflection.RuntimeAssembly.GetFlags(System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Reflection.AssemblyNameParser | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Reflection.AssemblyNameParser | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Reflection.AssemblyNameParser | [ObsoleteAttribute(...)] | 1 | True | -| System.Reflection.AssemblyName[] System.Reflection.Assembly.GetReferencedAssemblies() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Assembly references might be removed | -| System.Reflection.AssemblyName[] System.Reflection.Emit.RuntimeAssemblyBuilder.GetReferencedAssemblies() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Assembly references might be removed | -| System.Reflection.AssemblyName[] System.Reflection.RuntimeAssembly.GetReferencedAssemblies() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Assembly references might be removed | -| System.Reflection.AssemblyProductAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyProductAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyProductAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblySignatureKeyAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblySignatureKeyAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblySignatureKeyAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyTitleAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyTitleAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyTitleAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyTrademarkAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyTrademarkAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyTrademarkAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyVersionAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.AssemblyVersionAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.AssemblyVersionAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Binder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Binder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.CerHashtable`2 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Reflection.ConstArray | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Reflection.ConstructorInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ConstructorInfo | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.ConstructorInfo | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.ConstructorInfo System.Reflection.Emit.RuntimeEnumBuilder.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.Emit.RuntimeTypeBuilder.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.Emit.SymbolType.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.Emit.TypeBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.ConstructorInfo System.Reflection.Emit.TypeBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2055:UnrecognizedReflectionPattern | -| System.Reflection.ConstructorInfo System.Reflection.Emit.TypeBuilderInstantiation.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.ModifiedType.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.SignatureType.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.TypeDelegator.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Reflection.TypeDelegator.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.ConstructorInfo System.RuntimeType.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Type.GetConstructor(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Type.GetConstructor(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.ConstructorInfo System.Type.GetConstructor(System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Type.GetConstructor(System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.ConstructorInfo System.Type.GetConstructor(System.Reflection.BindingFlags,System.Type[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Type.GetConstructor(System.Type[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 3 | -| System.Reflection.ConstructorInfo System.Type.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Type.GetConstructorImpl(System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.ConstructorInfo System.Type.TypeInitializer | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.ConstructorInfo System.Type.get_TypeInitializer() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo System.Type.get_TypeInitializer() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.ConstructorInfo.ConstructorName | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.ConstructorInfo.TypeConstructorName | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.ConstructorInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Reflection.Emit.SymbolType.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Reflection.ModifiedType.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Reflection.SignatureType.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Reflection.TypeDelegator.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.RuntimeType.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInfo[] System.Type.GetConstructors() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 3 | -| System.Reflection.ConstructorInfo[] System.Type.GetConstructors(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Reflection.ConstructorInvoker | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ConstructorInvoker | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.CustomAttributeData | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.CustomAttributeData | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.CustomAttributeExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.CustomAttributeExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.CustomAttributeFormatException | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.CustomAttributeFormatException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.CustomAttributeFormatException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Reflection.CustomAttributeNamedArgument | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.CustomAttributeNamedArgument | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.CustomAttributeTypedArgument | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.CustomAttributeTypedArgument | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.DefaultMemberAttribute | [AttributeUsageAttribute(...)] | 0 | 1036 | -| System.Reflection.DefaultMemberAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.DefaultMemberAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.AssemblyBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.AssemblyBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.AssemblyBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicAssembly(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess) | [RequiresDynamicCodeAttribute(...)] | 0 | Defining a dynamic assembly requires dynamic code. | -| System.Reflection.Emit.AssemblyBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicAssembly(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder>) | [RequiresDynamicCodeAttribute(...)] | 0 | Defining a dynamic assembly requires dynamic code. | -| System.Reflection.Emit.ConstructorBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.ConstructorBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineConstructorNoLock(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineConstructorNoLock(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2082:UnrecognizedReflectionPattern | -| System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineTypeInitializerCore() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineTypeInitializerCore() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2082:UnrecognizedReflectionPattern | -| System.Reflection.Emit.CustomAttributeBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.CustomAttributeBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.DynamicILInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.DynamicILInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.DynamicMethod | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.DynamicMethod | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.DynamicScope | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Reflection.Emit.EnumBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.EnumBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.EventBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.EventBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.FlowControl.Phi | [ObsoleteAttribute(...)] | 0 | FlowControl.Phi has been deprecated and is not supported. | -| System.Reflection.Emit.ILGenerator | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.ILGenerator | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.LocalBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.LocalBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.MethodBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.MethodBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethodCore(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.RuntimeModuleBuilder.DefinePInvokeMethodCore(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodCore(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodCore(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2082:UnrecognizedReflectionPattern | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefinePInvokeMethodCore(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethodCore(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) | [RequiresUnreferencedCodeAttribute(...)] | 0 | P/Invoke marshalling may dynamically access members that could be trimmed. | -| System.Reflection.Emit.ModuleBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.ModuleBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.OpCode | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.OpCode | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.OpCodeType.Annotation | [ObsoleteAttribute(...)] | 0 | OpCodeType.Annotation has been deprecated and is not supported. | -| System.Reflection.Emit.OperandType.InlinePhi | [ObsoleteAttribute(...)] | 0 | OperandType.InlinePhi has been deprecated and is not supported. | -| System.Reflection.Emit.ParameterBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.ParameterBuilder | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.DynamicMethod.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.PropertyBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.PropertyBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.RuntimeConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineDefaultConstructorNoLock(System.Reflection.MethodAttributes) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.Emit.RuntimeConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineDefaultConstructorNoLock(System.Reflection.MethodAttributes) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2055:UnrecognizedReflectionPattern | -| System.Reflection.Emit.RuntimeConstructorBuilder System.Reflection.Emit.RuntimeTypeBuilder.DefineDefaultConstructorNoLock(System.Reflection.MethodAttributes) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Reflection.Emit.RuntimeEnumBuilder.m_typeBuilder | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.Emit.RuntimeMethodBuilder.m_containingType | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.Emit.RuntimeTypeBuilder | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.Emit.RuntimeTypeBuilder.m_bakedRuntimeType | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.Emit.RuntimeTypeBuilder.m_typeParent | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.Emit.SignatureHelper | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.SignatureHelper | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Emit.SignatureHelper System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Reflection.Module,System.Reflection.CallingConventions,System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.SignatureHelper System.Reflection.Emit.SignatureHelper.GetMethodSigHelper(System.Reflection.Module,System.Type,System.Type[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.SignatureHelper System.Reflection.Emit.SignatureHelper.GetPropertySigHelper(System.Reflection.Module,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.SignatureHelper System.Reflection.Emit.SignatureHelper.GetPropertySigHelper(System.Reflection.Module,System.Type,System.Type[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.SignatureHelper System.Reflection.Emit.SignatureHelper.GetPropertySigHelper(System.Reflection.Module,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.Emit.TypeBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Emit.TypeBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.EventInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.EventInfo | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.EventInfo System.Attribute.GetParentDefinition(System.Reflection.EventInfo) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.EventInfo System.Attribute.GetParentDefinition(System.Reflection.EventInfo) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Reflection.EventInfo System.Reflection.Emit.RuntimeEnumBuilder.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.Emit.RuntimeTypeBuilder.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.Emit.SymbolType.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.Emit.TypeBuilderInstantiation.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.ModifiedType.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.SignatureType.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.TypeDelegator.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Reflection.TypeInfo.GetDeclaredEvent(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.RuntimeType.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo System.Type.GetEvent(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo System.Type.GetEvent(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.Emit.SymbolType.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.Emit.SymbolType.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.ModifiedType.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.ModifiedType.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.SignatureType.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.SignatureType.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Reflection.TypeDelegator.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Reflection.TypeDelegator.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.RuntimeType.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.EventInfo[] System.Type.GetEvents() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Reflection.EventInfo[] System.Type.GetEvents(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Reflection.ExceptionHandlingClause | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ExceptionHandlingClause | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.FieldAttributes.NotSerialized | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Reflection.FieldInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.FieldInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.FieldInfo System.Reflection.Emit.RuntimeEnumBuilder.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.Emit.RuntimeModuleBuilder.GetField(System.String,System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo System.Reflection.Emit.RuntimeModuleBuilder.ResolveField(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.FieldInfo System.Reflection.Emit.RuntimeTypeBuilder.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.Emit.SymbolType.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.Emit.TypeBuilder.GetField(System.Type,System.Reflection.FieldInfo) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.FieldInfo System.Reflection.Emit.TypeBuilder.GetField(System.Type,System.Reflection.FieldInfo) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2055:UnrecognizedReflectionPattern | -| System.Reflection.FieldInfo System.Reflection.Emit.TypeBuilderInstantiation.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.IReflect.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.ModifiedType.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.Module.GetField(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo System.Reflection.Module.GetField(System.String,System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo System.Reflection.Module.ResolveField(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.FieldInfo System.Reflection.Module.ResolveField(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.FieldInfo System.Reflection.Module.ResolveField(System.Int32,System.Type[],System.Type[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.FieldInfo System.Reflection.Module.ResolveField(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.FieldInfo System.Reflection.RuntimeModule.GetField(System.String,System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo System.Reflection.RuntimeModule.ResolveField(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.FieldInfo System.Reflection.RuntimeModule.ResolveLiteralField(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.FieldInfo System.Reflection.SignatureType.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.TypeDelegator.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Reflection.TypeInfo.GetDeclaredField(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.RuntimeType.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo System.Type.GetField(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 32 | -| System.Reflection.FieldInfo System.Type.GetField(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Diagnostics.Tracing.ManifestBuilder.<CreateManifestString>g__GetEnumFields\|19_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.FieldInfo[] System.Diagnostics.Tracing.ManifestBuilder.<CreateManifestString>g__GetEnumFields\|19_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.Reflection.FieldInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.Emit.RuntimeModuleBuilder.GetFields(System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.Emit.SymbolType.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.IReflect.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.ModifiedType.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.Module.GetFields() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo[] System.Reflection.Module.GetFields(System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo[] System.Reflection.RuntimeModule.GetFields(System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Fields might be removed | -| System.Reflection.FieldInfo[] System.Reflection.SignatureType.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Reflection.TypeDelegator.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.RuntimeType.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.FieldInfo[] System.Type.GetFields() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 32 | -| System.Reflection.FieldInfo[] System.Type.GetFields(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Reflection.ICustomAttributeProvider | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.IReflect | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.IReflectableType | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.InterfaceMapping | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.InterfaceMapping | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.IntrospectionExtensions | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Reflection.InvalidFilterCriteriaException | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.InvalidFilterCriteriaException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.InvalidFilterCriteriaException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Reflection.LocalVariableInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.LocalVariableInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.ManifestResourceInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ManifestResourceInfo | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MemberInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.MemberInfo | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.MemberInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MemberInfo System.Reflection.Emit.RuntimeModuleBuilder.ResolveMember(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MemberInfo System.Reflection.Module.ResolveMember(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MemberInfo System.Reflection.Module.ResolveMember(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MemberInfo System.Reflection.Module.ResolveMember(System.Int32,System.Type[],System.Type[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MemberInfo System.Reflection.Module.ResolveMember(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MemberInfo System.Reflection.RuntimeModule.ResolveMember(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MemberInfo System.Type.GetMemberWithSameMetadataDefinitionAs(System.Reflection.MemberInfo) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.MemberInfo System.Type.GetMemberWithSameMetadataDefinitionAs(System.Reflection.MemberInfo) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2085:UnrecognizedReflectionPattern | -| System.Reflection.MemberInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.SymbolType.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.SymbolType.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.IReflect.GetMember(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.IReflect.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.ModifiedType.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.ModifiedType.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.SignatureType.FindMembers(System.Reflection.MemberTypes,System.Reflection.BindingFlags,System.Reflection.MemberFilter,System.Object) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.MemberInfo[] System.Reflection.SignatureType.GetDefaultMembers() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2731 | -| System.Reflection.MemberInfo[] System.Reflection.SignatureType.GetMember(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.SignatureType.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.SignatureType.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.TypeDelegator.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Reflection.TypeDelegator.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.RuntimeType.GetDefaultMembers() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2731 | -| System.Reflection.MemberInfo[] System.RuntimeType.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.RuntimeType.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Type.FindMembers(System.Reflection.MemberTypes,System.Reflection.BindingFlags,System.Reflection.MemberFilter,System.Object) | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.MemberInfo[] System.Type.FindMembers(System.Reflection.MemberTypes,System.Reflection.BindingFlags,System.Reflection.MemberFilter,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MemberInfo[] System.Type.GetDefaultMembers() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2731 | -| System.Reflection.MemberInfo[] System.Type.GetMember(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2731 | -| System.Reflection.MemberInfo[] System.Type.GetMember(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Type.GetMember(System.String,System.Reflection.MemberTypes,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.MemberInfo[] System.Type.GetMembers() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2731 | -| System.Reflection.MemberInfo[] System.Type.GetMembers(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8191 | -| System.Reflection.Metadata.MetadataUpdateHandlerAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.Metadata.MetadataUpdateHandlerAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Metadata.MetadataUpdateHandlerAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MetadataEnumResult | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Reflection.MetadataEnumResult.smallResult | [FixedBufferAttribute(...)] | 0 | System.Int32 | -| System.Reflection.MetadataEnumResult.smallResult | [FixedBufferAttribute(...)] | 1 | 16 | -| System.Reflection.MethodBase | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.MethodBase | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodBase System.DefaultBinder.BindToMethod(System.Reflection.BindingFlags,System.Reflection.MethodBase[],System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Reflection.MethodBase System.DefaultBinder.BindToMethod(System.Reflection.BindingFlags,System.Reflection.MethodBase[],System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:RequiresDynamicCode | -| System.Reflection.MethodBase System.Diagnostics.StackFrame.GetMethod() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Metadata for the method might be incomplete or removed | -| System.Reflection.MethodBase System.Exception.get_TargetSite() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Metadata for the method might be incomplete or removed | -| System.Reflection.MethodBase System.Reflection.Binder.BindToMethod(System.Reflection.BindingFlags,System.Reflection.MethodBase[],System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodBase System.Reflection.Emit.RuntimeModuleBuilder.GetGenericMethodBaseDefinition(System.Reflection.MethodBase) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.MethodBase System.Reflection.Emit.RuntimeModuleBuilder.GetGenericMethodBaseDefinition(System.Reflection.MethodBase) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Reflection.MethodBase System.Reflection.Emit.RuntimeModuleBuilder.ResolveMethod(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MethodBase System.Reflection.MethodBase.GetCurrentMethod() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Metadata for the method might be incomplete or removed | -| System.Reflection.MethodBase System.Reflection.Module.ResolveMethod(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodBase System.Reflection.Module.ResolveMethod(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MethodBase System.Reflection.Module.ResolveMethod(System.Int32,System.Type[],System.Type[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodBase System.Reflection.Module.ResolveMethod(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MethodBase System.Reflection.RuntimeModule.ResolveMethod(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MethodBase System.RuntimeType.GetMethodBase(System.Reflection.RuntimeModule,System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Reflection.MethodBase System.RuntimeType.GetMethodBase(System.RuntimeType,System.RuntimeMethodHandleInternal) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.MethodBase System.RuntimeType.GetMethodBase(System.RuntimeType,System.RuntimeMethodHandleInternal) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.Reflection.MethodBase System.Type.DeclaringMethod | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.MethodBase System.Type.get_DeclaringMethod() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodBase.ArgumentData`1 | [InlineArrayAttribute(...)] | 0 | 4 | -| System.Reflection.MethodBase.StackAllocatedArguments | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Reflection.MethodBase.StackAllocatedArguments | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Reflection.MethodBase.StackAllocatedArguments | [ObsoleteAttribute(...)] | 1 | True | -| System.Reflection.MethodBase.StackAllocatedArgumentsWithCopyBack | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Reflection.MethodBase.StackAllocatedArgumentsWithCopyBack | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Reflection.MethodBase.StackAllocatedArgumentsWithCopyBack | [ObsoleteAttribute(...)] | 1 | True | -| System.Reflection.MethodBase.StackAllocatedByRefs | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Reflection.MethodBase.StackAllocatedByRefs | [InlineArrayAttribute(...)] | 0 | 4 | -| System.Reflection.MethodBase.StackAllocatedByRefs | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Reflection.MethodBase.StackAllocatedByRefs | [ObsoleteAttribute(...)] | 1 | True | -| System.Reflection.MethodBase[] | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.MethodBody | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.MethodBody | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MethodBody System.Reflection.MethodBase.GetMethodBody() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming may change method bodies. For example it can change some instructions, remove branches or local variables. | -| System.Reflection.MethodBody System.Reflection.RuntimeConstructorInfo.GetMethodBody() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming may change method bodies. For example it can change some instructions, remove branches or local variables. | -| System.Reflection.MethodBody System.Reflection.RuntimeMethodInfo.GetMethodBody() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming may change method bodies. For example it can change some instructions, remove branches or local variables. | -| System.Reflection.MethodInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.MethodInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MethodInfo System.Reflection.Assembly.EntryPoint | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.Assembly.get_EntryPoint() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.Emit.AssemblyBuilder.EntryPoint | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.Emit.AssemblyBuilder.get_EntryPoint() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.Emit.MethodBuilderInstantiation.MakeGenericMethod(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Reflection.MethodInfo System.Reflection.Emit.MethodOnTypeBuilderInstantiation.MakeGenericMethod(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Reflection.MethodInfo System.Reflection.Emit.RuntimeEnumBuilder.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.Emit.RuntimeMethodBuilder.MakeGenericMethod(System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for this instantiation might not be available at runtime. | -| System.Reflection.MethodInfo System.Reflection.Emit.RuntimeMethodBuilder.MakeGenericMethod(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Reflection.MethodInfo System.Reflection.Emit.RuntimeModuleBuilder.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo System.Reflection.Emit.RuntimeTypeBuilder.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.Emit.SymbolType.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.Emit.TypeBuilder.GetMethod(System.Type,System.Reflection.MethodInfo) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.MethodInfo System.Reflection.Emit.TypeBuilder.GetMethod(System.Type,System.Reflection.MethodInfo) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2055:UnrecognizedReflectionPattern | -| System.Reflection.MethodInfo System.Reflection.Emit.TypeBuilderInstantiation.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.IReflect.GetMethod(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.IReflect.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.IReflect.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.MethodInfo.MakeGenericMethod(System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for this instantiation might not be available at runtime. | -| System.Reflection.MethodInfo System.Reflection.MethodInfo.MakeGenericMethod(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Reflection.MethodInfo System.Reflection.ModifiedType.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.Module.GetMethod(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo System.Reflection.Module.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.Module.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo System.Reflection.Module.GetMethod(System.String,System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo System.Reflection.Module.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.Module.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo System.Reflection.RuntimeMethodInfo.MakeGenericMethod(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Reflection.MethodInfo System.Reflection.RuntimeModule.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed because Module methods can't currently be annotated for dynamic access. | -| System.Reflection.MethodInfo System.Reflection.RuntimeModule.GetMethodInternal(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed because Module methods can't currently be annotated for dynamic access. | -| System.Reflection.MethodInfo System.Reflection.SignatureType.GetMethodImpl(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.SignatureType.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.TypeDelegator.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Reflection.TypeDelegator.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Reflection.TypeInfo.GetDeclaredMethod(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.RuntimeType.GetMethodImpl(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.RuntimeType.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Int32,System.Type[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Int32,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Reflection.BindingFlags,System.Type[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Type[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Reflection.MethodInfo System.Type.GetMethod(System.String,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Reflection.MethodInfo System.Type.GetMethodImpl(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethodImpl(System.String,System.Int32,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo System.Type.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo System.Type.GetMethodImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Reflection.CallingConventions,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInfo[] System.Diagnostics.StackTrace.<TryResolveStateMachineMethod>g__GetDeclaredMethods\|28_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.MethodInfo[] System.Diagnostics.StackTrace.<TryResolveStateMachineMethod>g__GetDeclaredMethods\|28_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.Reflection.MethodInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.Emit.RuntimeModuleBuilder.GetMethods(System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.Emit.SymbolType.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.EventInfo.GetOtherMethods() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MethodInfo[] System.Reflection.EventInfo.GetOtherMethods(System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MethodInfo[] System.Reflection.IReflect.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.ModifiedType.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.Module.GetMethods() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo[] System.Reflection.Module.GetMethods(System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo[] System.Reflection.PropertyInfo.GetAccessors() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MethodInfo[] System.Reflection.PropertyInfo.GetAccessors(System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.MethodInfo[] System.Reflection.RuntimeModule.GetMethods(System.Reflection.BindingFlags) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Methods might be removed | -| System.Reflection.MethodInfo[] System.Reflection.SignatureType.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.TypeDelegator.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Reflection.TypeInfo.<GetDeclaredMethods>g__GetDeclaredOnlyMethods\|10_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.MethodInfo[] System.Reflection.TypeInfo.<GetDeclaredMethods>g__GetDeclaredOnlyMethods\|10_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.Reflection.MethodInfo[] System.RuntimeType.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInfo[] System.Type.GetMethods() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Reflection.MethodInfo[] System.Type.GetMethods(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Reflection.MethodInvoker | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.MethodInvoker | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.MethodInvoker System.Reflection.MethodInvoker.Create(System.Reflection.MethodBase) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Missing.Value | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.Module | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.Module | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.Module | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.Module System.Reflection.Assembly.LoadModule(System.String,System.Byte[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded module depends on might be removed | -| System.Reflection.Module System.Reflection.Assembly.LoadModule(System.String,System.Byte[],System.Byte[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded module depends on might be removed | -| System.Reflection.Module System.Reflection.ModuleResolveEventHandler.Invoke(System.Object,System.ResolveEventArgs) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.NullabilityInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.NullabilityInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.NullabilityInfo System.Reflection.NullabilityInfo.ElementType | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.NullabilityInfo System.Reflection.NullabilityInfo.get_ElementType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.NullabilityInfoContext | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.NullabilityInfoContext | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.ObfuscateAssemblyAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Reflection.ObfuscationAttribute | [AttributeUsageAttribute(...)] | 0 | 8157 | -| System.Reflection.ObfuscationAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ObfuscationAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.ParameterInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ParameterInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.ParameterInfo.ClassImpl | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.ParameterInfo.DefaultValueImpl | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.ParameterInfo.NameImpl | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.ParameterInfo[] System.Reflection.MethodBase.GetParameters() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.ParameterInfo[] System.Reflection.PropertyInfo.GetIndexParameters() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.ParameterModifier | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Reflection.ParameterModifier[] | [NullableAttribute(...)] | 0 | 2 | -| System.Reflection.Pointer | [CLSCompliantAttribute(...)] | 0 | False | -| System.Reflection.ProcessorArchitecture System.Reflection.AssemblyName.ProcessorArchitecture | [ObsoleteAttribute(...)] | 0 | AssemblyName members HashAlgorithm, ProcessorArchitecture, and VersionCompatibility are obsolete and not supported. | -| System.Reflection.PropertyInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.PropertyInfo | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo System.Attribute.GetParentDefinition(System.Reflection.PropertyInfo,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.PropertyInfo System.Attribute.GetParentDefinition(System.Reflection.PropertyInfo,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Reflection.PropertyInfo System.Reflection.Binder.SelectProperty(System.Reflection.BindingFlags,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo System.Reflection.Emit.RuntimeEnumBuilder.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.Emit.RuntimeTypeBuilder.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.Emit.SymbolType.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.Emit.TypeBuilderInstantiation.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.IReflect.GetProperty(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.IReflect.GetProperty(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.IReflect.GetProperty(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo System.Reflection.ModifiedType.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.SignatureType.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.TypeDelegator.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Reflection.TypeDelegator.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo System.Reflection.TypeInfo.GetDeclaredProperty(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.RuntimeType.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 512 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 512 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2085:UnrecognizedReflectionPattern | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type,System.Type[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 512 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 512 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo System.Type.GetProperty(System.String,System.Type[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 512 | -| System.Reflection.PropertyInfo System.Type.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo System.Type.GetPropertyImpl(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.PropertyInfo[] | [NullableAttribute(...)] | 0 | 1 | -| System.Reflection.PropertyInfo[] System.Reflection.Emit.RuntimeEnumBuilder.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.Emit.RuntimeTypeBuilder.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.Emit.SymbolType.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.Emit.TypeBuilderInstantiation.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.IReflect.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.ModifiedType.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.SignatureType.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Reflection.TypeDelegator.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.RuntimeType.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.PropertyInfo[] System.Type.GetProperties() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 512 | -| System.Reflection.PropertyInfo[] System.Type.GetProperties(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Reflection.ReflectionContext | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ReflectionContext | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.ReflectionTypeLoadException | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.ReflectionTypeLoadException | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.ReflectionTypeLoadException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Reflection.RuntimeAssembly System.Runtime.Loader.AssemblyLoadContext.InternalLoadFromPath(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Reflection.RuntimeAssembly System.Runtime.Loader.AssemblyLoadContext.InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | SingleFile | -| System.Reflection.RuntimeAssembly System.Runtime.Loader.AssemblyLoadContext.InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3000: Avoid accessing Assembly file path when publishing as a single file | -| System.Reflection.RuntimeFieldInfo[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateFields(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.RuntimeFieldInfo[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateFields(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Reflection.RuntimeMethodInfo System.Reflection.Associates.AssignAssociates(System.Int32,System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.RuntimeMethodInfo System.Reflection.Associates.AssignAssociates(System.Int32,System.RuntimeType,System.RuntimeType) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Reflection.RuntimeReflectionExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.RuntimeReflectionExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.StrongNameKeyPair | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.StrongNameKeyPair | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.StrongNameKeyPair | [ObsoleteAttribute(...)] | 0 | Strong name signing is not supported and throws PlatformNotSupportedException. | -| System.Reflection.StrongNameKeyPair System.Reflection.AssemblyName.KeyPair | [ObsoleteAttribute(...)] | 0 | Strong name signing is not supported and throws PlatformNotSupportedException. | -| System.Reflection.TargetException | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.TargetException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.TargetException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Reflection.TargetInvocationException | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.TargetInvocationException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.TargetInvocationException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Reflection.TargetParameterCountException | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.TargetParameterCountException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Reflection.TargetParameterCountException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Reflection.TypeAttributes.Serializable | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Reflection.TypeDelegator | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.TypeDelegator | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.TypeDelegator.typeImpl | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Reflection.TypeInfo | [NotNullWhenAttribute(...)] | 0 | True | -| System.Reflection.TypeInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Reflection.TypeInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.TypeInfo System.Reflection.Emit.RuntimeTypeBuilder.CreateTypeNoLock() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Reflection.TypeInfo System.Reflection.Emit.RuntimeTypeBuilder.CreateTypeNoLock() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2068:UnrecognizedReflectionPattern | -| System.Reflection.TypeInfo System.Reflection.Emit.RuntimeTypeBuilder.CreateTypeNoLock() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2069:UnrecognizedReflectionPattern | -| System.Reflection.TypeInfo System.Reflection.Emit.RuntimeTypeBuilder.CreateTypeNoLock() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2083:UnrecognizedReflectionPattern | -| System.Reflection.TypeInfo System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Reflection.TypeInfo System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Reflection.TypeInfo System.Reflection.TypeInfo.GetDeclaredNestedType(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Reflection.TypeNameParser | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Reflection.TypeNameParser | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Reflection.TypeNameParser | [ObsoleteAttribute(...)] | 1 | True | -| System.ResolveEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.ResolveEventArgs | [NullableAttribute(...)] | 0 | 1 | -| System.ResolveEventArgs | [NullableContextAttribute(...)] | 0 | 1 | -| System.Resources.MissingManifestResourceException | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Resources.MissingManifestResourceException | [NullableAttribute(...)] | 0 | 0 | -| System.Resources.MissingManifestResourceException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Resources.MissingManifestResourceException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Resources.MissingSatelliteAssemblyException | [NullableAttribute(...)] | 0 | 0 | -| System.Resources.MissingSatelliteAssemblyException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Resources.MissingSatelliteAssemblyException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Resources.NeutralResourcesLanguageAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Resources.NeutralResourcesLanguageAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Resources.NeutralResourcesLanguageAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Resources.NeutralResourcesLanguageAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Resources.ResourceManager | [NullableAttribute(...)] | 0 | 0 | -| System.Resources.ResourceManager | [NullableContextAttribute(...)] | 0 | 1 | -| System.Resources.ResourceManager.MainAssembly | [NullableAttribute(...)] | 0 | 2 | -| System.Resources.ResourceManager._userResourceSet | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Resources.ResourceReader.s_binaryFormatterType | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1 | -| System.Resources.ResourceSet | [NullableAttribute(...)] | 0 | 0 | -| System.Resources.ResourceSet | [NullableContextAttribute(...)] | 0 | 1 | -| System.Resources.ResourceSet System.Resources.ManifestBasedResourceGroveler.InternalGetResourceSetFromSerializedData(System.IO.Stream,System.String,System.String,System.Resources.ResourceManager.ResourceManagerMediator) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The CustomResourceTypesSupport feature switch has been enabled for this app which is being trimmed. Custom readers as well as custom objects on the resources file are not observable by the trimmer and so required assemblies, types and members may be removed. | -| System.Resources.ResourceSet.Reader | [NullableAttribute(...)] | 0 | 2 | -| System.Resources.SatelliteContractVersionAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Resources.SatelliteContractVersionAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Resources.SatelliteContractVersionAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Resources.SatelliteContractVersionAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.AmbiguousImplementationException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.AmbiguousImplementationException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.AmbiguousImplementationException | [TypeForwardedFromAttribute(...)] | 0 | System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| System.Runtime.AssemblyTargetedPatchBandAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.AssemblyTargetedPatchBandAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.AssemblyTargetedPatchBandAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AccessedThroughPropertyAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Runtime.CompilerServices.AccessedThroughPropertyAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AccessedThroughPropertyAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AsyncIteratorMethodBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AsyncIteratorMethodBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.CompilerServices.AsyncMethodBuilderAttribute | [AttributeUsageAttribute(...)] | 0 | 5212 | -| System.Runtime.CompilerServices.AsyncMethodBuilderAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AsyncMethodBuilderAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AsyncStateMachineAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1 | [DebuggerDisplayAttribute(...)] | 0 | {DebuggerDisplay,nq} | -| System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.AsyncVoidMethodBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.AsyncVoidMethodBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.CallerArgumentExpressionAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.CallerArgumentExpressionAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.CallerArgumentExpressionAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.CallerFilePathAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.CallerLineNumberAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.CallerMemberNameAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.CollectionBuilderAttribute | [AttributeUsageAttribute(...)] | 0 | 1036 | -| System.Runtime.CompilerServices.CollectionBuilderAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.CollectionBuilderAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.CompExactlyDependsOnAttribute | [AttributeUsageAttribute(...)] | 0 | 96 | -| System.Runtime.CompilerServices.CompilationRelaxationsAttribute | [AttributeUsageAttribute(...)] | 0 | 71 | -| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.CompilerGeneratedAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Runtime.CompilerServices.CompilerGlobalScopeAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.Runtime.CompilerServices.ConditionalWeakTable<!0,!1>.CreateValueCallback | [NullableAttribute(...)] | 0 | [1,0,0] | -| System.Runtime.CompilerServices.ConditionalWeakTable`2 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.ConditionalWeakTable`2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.ConditionalWeakTable`2.CreateValueCallback | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.ContractHelper | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.ContractHelper | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.ContractHelper.InternalContractFailed | [NullableAttribute(...)] | 0 | [2,1] | -| System.Runtime.CompilerServices.CreateNewOnMetadataUpdateAttribute | [AttributeUsageAttribute(...)] | 0 | 12 | -| System.Runtime.CompilerServices.CustomConstantAttribute | [AttributeUsageAttribute(...)] | 0 | 2304 | -| System.Runtime.CompilerServices.CustomConstantAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.CustomConstantAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.DateTimeConstantAttribute | [AttributeUsageAttribute(...)] | 0 | 2304 | -| System.Runtime.CompilerServices.DateTimeConstantAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.DateTimeConstantAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.DecimalConstantAttribute | [AttributeUsageAttribute(...)] | 0 | 2304 | -| System.Runtime.CompilerServices.DefaultDependencyAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | [provider,initialBuffer] | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | provider | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.CompilerServices.DefaultInterpolatedStringHandler | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.CompilerServices.DependencyAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.DependencyAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.DependencyAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.DisablePrivateReflectionAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.DisablePrivateReflectionAttribute | [ObsoleteAttribute(...)] | 0 | DisablePrivateReflectionAttribute has no effect in .NET 6.0+. | -| System.Runtime.CompilerServices.DisableRuntimeMarshallingAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.DiscardableAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Runtime.CompilerServices.EnumeratorCancellationAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.ExtensionAttribute | [AttributeUsageAttribute(...)] | 0 | 69 | -| System.Runtime.CompilerServices.FixedAddressValueTypeAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Runtime.CompilerServices.FixedBufferAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Runtime.CompilerServices.FixedBufferAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.FixedBufferAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.IAsyncStateMachine | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.ICastable | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.INotifyCompletion | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.IStrongBox | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.ITuple | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Runtime.CompilerServices.ITuple | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.IndexerNameAttribute | [AttributeUsageAttribute(...)] | 0 | 128 | -| System.Runtime.CompilerServices.InlineArrayAttribute | [AttributeUsageAttribute(...)] | 0 | 8 | -| System.Runtime.CompilerServices.InternalsVisibleToAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.InternalsVisibleToAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.InternalsVisibleToAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute | [AttributeUsageAttribute(...)] | 0 | 12 | -| System.Runtime.CompilerServices.IntrinsicAttribute | [AttributeUsageAttribute(...)] | 0 | 364 | -| System.Runtime.CompilerServices.IsByRefLikeAttribute | [AttributeUsageAttribute(...)] | 0 | 8 | -| System.Runtime.CompilerServices.IsByRefLikeAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.IsExternalInit | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.IsReadOnlyAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Runtime.CompilerServices.IsReadOnlyAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.IsUnmanagedAttribute | [AttributeUsageAttribute(...)] | 0 | 32767 | -| System.Runtime.CompilerServices.IsUnmanagedAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.IteratorStateMachineAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.CompilerServices.MetadataUpdateOriginalTypeAttribute | [AttributeUsageAttribute(...)] | 0 | 12 | -| System.Runtime.CompilerServices.MetadataUpdateOriginalTypeAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.MetadataUpdateOriginalTypeAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.MethodImplAttribute | [AttributeUsageAttribute(...)] | 0 | 96 | -| System.Runtime.CompilerServices.ModuleInitializerAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.CompilerServices.NullableAttribute | [AttributeUsageAttribute(...)] | 0 | 27524 | -| System.Runtime.CompilerServices.NullableAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.NullableAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.NullableAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.NullableContextAttribute | [AttributeUsageAttribute(...)] | 0 | 5196 | -| System.Runtime.CompilerServices.NullableContextAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.NullablePublicOnlyAttribute | [AttributeUsageAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.NullablePublicOnlyAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.ObjectHandleOnStack | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.CompilerServices.ObjectHandleOnStack | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.CompilerServices.ObjectHandleOnStack | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.PreserveBaseOverridesAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.CompilerServices.QCallAssembly | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.CompilerServices.QCallAssembly | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.CompilerServices.QCallAssembly | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.CompilerServices.QCallModule | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.CompilerServices.QCallModule | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.CompilerServices.QCallModule | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.CompilerServices.QCallTypeHandle | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.CompilerServices.QCallTypeHandle | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.CompilerServices.QCallTypeHandle | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.CompilerServices.RefSafetyRulesAttribute | [AttributeUsageAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.RefSafetyRulesAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.ReferenceAssemblyAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.ReferenceAssemblyAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.ReferenceAssemblyAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.RequiredMemberAttribute | [AttributeUsageAttribute(...)] | 0 | 396 | -| System.Runtime.CompilerServices.RequiredMemberAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.RequiresLocationAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.RequiresLocationAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.RuntimeCompatibilityAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.RuntimeFeature | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.RuntimeFeature | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.RuntimeHelpers | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.RuntimeHelpers | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.RuntimeHelpers.CleanupCode | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.RuntimeHelpers.TryCode | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.RuntimeWrappedException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.RuntimeWrappedException | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.RuntimeWrappedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.CompilerServices.ScopedRefAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.CompilerServices.ScopedRefAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.SkipLocalsInitAttribute | [AttributeUsageAttribute(...)] | 0 | 1774 | -| System.Runtime.CompilerServices.SpecialNameAttribute | [AttributeUsageAttribute(...)] | 0 | 972 | -| System.Runtime.CompilerServices.StackCrawlMarkHandle | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.CompilerServices.StackCrawlMarkHandle | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.CompilerServices.StackCrawlMarkHandle | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.CompilerServices.StateMachineAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.CompilerServices.StateMachineAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.StateMachineAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.StringFreezingAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.StringHandleOnStack | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.CompilerServices.StringHandleOnStack | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.CompilerServices.StringHandleOnStack | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.CompilerServices.StrongBox`1.Value | [NullableAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.SuppressIldasmAttribute | [AttributeUsageAttribute(...)] | 0 | 3 | -| System.Runtime.CompilerServices.SuppressIldasmAttribute | [ObsoleteAttribute(...)] | 0 | SuppressIldasmAttribute has no effect in .NET 6.0+. | -| System.Runtime.CompilerServices.SwitchExpressionException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.SwitchExpressionException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.SwitchExpressionException | [TypeForwardedFromAttribute(...)] | 0 | System.Runtime.Extensions, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | -| System.Runtime.CompilerServices.TupleElementNamesAttribute | [AttributeUsageAttribute(...)] | 0 | 11148 | -| System.Runtime.CompilerServices.TupleElementNamesAttribute | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.CompilerServices.TypeForwardedFromAttribute | [AttributeUsageAttribute(...)] | 0 | 5148 | -| System.Runtime.CompilerServices.TypeForwardedFromAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.TypeForwardedFromAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.TypeForwardedToAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.TypeForwardedToAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.TypeForwardedToAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.Unsafe | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.Unsafe | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.CompilerServices.UnsafeAccessorAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.CompilerServices.UnsafeAccessorAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.CompilerServices.UnsafeAccessorAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.CompilerServices.UnsafeValueTypeAttribute | [AttributeUsageAttribute(...)] | 0 | 8 | -| System.Runtime.ConstrainedExecution.Cer | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Runtime.ConstrainedExecution.Consistency | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute | [AttributeUsageAttribute(...)] | 0 | 96 | -| System.Runtime.ConstrainedExecution.PrePrepareMethodAttribute | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Runtime.ConstrainedExecution.ReliabilityContractAttribute | [AttributeUsageAttribute(...)] | 0 | 1133 | -| System.Runtime.ConstrainedExecution.ReliabilityContractAttribute | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Runtime.DependentHandle | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.DependentHandle | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.ExceptionServices.ExceptionDispatchInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.ExceptionServices.ExceptionDispatchInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute | [ObsoleteAttribute(...)] | 0 | Recovery from corrupted process state exceptions is not supported; HandleProcessCorruptedStateExceptionsAttribute is ignored. | -| System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.AllowReversePInvokeCallsAttribute | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Runtime.InteropServices.ArrayWithOffset | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ArrayWithOffset | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.BStrWrapper | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.BStrWrapper | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.BStrWrapper | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.BestFitMappingAttribute | [AttributeUsageAttribute(...)] | 0 | 1037 | -| System.Runtime.InteropServices.CLong | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.COMException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.COMException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.COMException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.CULong | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.ClassInterfaceAttribute | [AttributeUsageAttribute(...)] | 0 | 5 | -| System.Runtime.InteropServices.CoClassAttribute | [AttributeUsageAttribute(...)] | 0 | 1024 | -| System.Runtime.InteropServices.CoClassAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.CoClassAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.CollectionsMarshal | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.CollectionsMarshal | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComDefaultInterfaceAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.Runtime.InteropServices.ComDefaultInterfaceAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComDefaultInterfaceAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComEventInterfaceAttribute | [AttributeUsageAttribute(...)] | 0 | 1024 | -| System.Runtime.InteropServices.ComEventInterfaceAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComEventInterfaceAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComEventInterfaceAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComEventsHelper | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComEventsHelper | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComEventsHelper | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComEventsHelper | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.ComImportAttribute | [AttributeUsageAttribute(...)] | 0 | 1028 | -| System.Runtime.InteropServices.ComSourceInterfacesAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.Runtime.InteropServices.ComSourceInterfacesAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComSourceInterfacesAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComSourceInterfacesAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.BINDPTR | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.BIND_OPTS | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.CALLCONV | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.CONNECTDATA | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.CONNECTDATA.pUnk | [NullableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.DESCKIND | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.DISPPARAMS | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ELEMDESC | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.EXCEPINFO | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.EXCEPINFO | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComTypes.EXCEPINFO | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.FILETIME | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.FUNCDESC | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.FUNCFLAGS | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.FUNCKIND | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IBindCtx | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IBindCtx | [GuidAttribute(...)] | 0 | 0000000e-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IBindCtx | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IBindCtx | [NullableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IBindCtx | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IConnectionPoint | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IConnectionPoint | [GuidAttribute(...)] | 0 | B196B286-BAB4-101A-B69C-00AA00341D07 | -| System.Runtime.InteropServices.ComTypes.IConnectionPoint | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IConnectionPoint | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IConnectionPointContainer | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IConnectionPointContainer | [GuidAttribute(...)] | 0 | B196B284-BAB4-101A-B69C-00AA00341D07 | -| System.Runtime.InteropServices.ComTypes.IConnectionPointContainer | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IConnectionPointContainer | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IDLDESC | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IDLFLAG | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints | [GuidAttribute(...)] | 0 | B196B285-BAB4-101A-B69C-00AA00341D07 | -| System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumConnections | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumConnections | [GuidAttribute(...)] | 0 | B196B287-BAB4-101A-B69C-00AA00341D07 | -| System.Runtime.InteropServices.ComTypes.IEnumConnections | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumConnections | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumMoniker | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumMoniker | [GuidAttribute(...)] | 0 | 00000102-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IEnumMoniker | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumMoniker | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumString | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumString | [GuidAttribute(...)] | 0 | 00000101-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IEnumString | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumString | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumVARIANT | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumVARIANT | [GuidAttribute(...)] | 0 | 00020404-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IEnumVARIANT | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumVARIANT | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IEnumerable | [GuidAttribute(...)] | 0 | 496B0ABE-CDEE-11d3-88E8-00902754C43A | -| System.Runtime.InteropServices.ComTypes.IEnumerator | [GuidAttribute(...)] | 0 | 496B0ABF-CDEE-11d3-88E8-00902754C43A | -| System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IMoniker | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IMoniker | [GuidAttribute(...)] | 0 | 0000000f-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IMoniker | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IMoniker | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.ComTypes.IMoniker | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.INVOKEKIND | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IPersistFile | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IPersistFile | [GuidAttribute(...)] | 0 | 0000010b-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IPersistFile | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IPersistFile | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IRunningObjectTable | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IRunningObjectTable | [GuidAttribute(...)] | 0 | 00000010-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IRunningObjectTable | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IRunningObjectTable | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IStream | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IStream | [GuidAttribute(...)] | 0 | 0000000c-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.IStream | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.IStream | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeComp | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeComp | [GuidAttribute(...)] | 0 | 00020403-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.ITypeComp | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeComp | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo | [GuidAttribute(...)] | 0 | 00020401-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo2 | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo2 | [GuidAttribute(...)] | 0 | 00020412-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo2 | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeInfo2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeLib | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeLib | [GuidAttribute(...)] | 0 | 00020402-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.ITypeLib | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeLib | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeLib2 | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeLib2 | [GuidAttribute(...)] | 0 | 00020411-0000-0000-C000-000000000046 | -| System.Runtime.InteropServices.ComTypes.ITypeLib2 | [InterfaceTypeAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.ITypeLib2 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.LIBFLAGS | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.PARAMDESC | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.PARAMFLAG | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.STATSTG | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.STATSTG.pwcsName | [NullableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.SYSKIND | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.TYPEATTR | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.TYPEDESC | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.TYPEFLAGS | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.TYPEKIND | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.TYPELIBATTR | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.VARDESC | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.VARDESC.lpstrSchema | [NullableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.VARFLAGS | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComTypes.VARKIND | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComVisibleAttribute | [AttributeUsageAttribute(...)] | 0 | 5597 | -| System.Runtime.InteropServices.ComWrappers | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.ComWrappers | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComWrappers | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ComWrappers | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Runtime.InteropServices.ComWrappers | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Runtime.InteropServices.ComWrappers | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Runtime.InteropServices.ComWrappers | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Runtime.InteropServices.ComWrappers.ComInterfaceDispatch | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComWrappers.ComInterfaceDispatch* | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComWrappers.ComInterfaceEntry | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ComWrappers.ComInterfaceEntry* System.Runtime.InteropServices.ComWrappers.ComputeVtables(System.Object,System.Runtime.InteropServices.CreateComInterfaceFlags,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.CurrencyWrapper | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.CurrencyWrapper | [ObsoleteAttribute(...)] | 0 | CurrencyWrapper and support for marshalling to the VARIANT type may be unavailable in future releases. | -| System.Runtime.InteropServices.CustomQueryInterfaceMode | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.CustomQueryInterfaceResult | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.DefaultCharSetAttribute | [AttributeUsageAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.DefaultDllImportSearchPathsAttribute | [AttributeUsageAttribute(...)] | 0 | 65 | -| System.Runtime.InteropServices.DefaultParameterValueAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.InteropServices.DefaultParameterValueAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.DefaultParameterValueAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.DispIdAttribute | [AttributeUsageAttribute(...)] | 0 | 960 | -| System.Runtime.InteropServices.DispatchWrapper | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.DispatchWrapper | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.DispatchWrapper | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.DispatchWrapper | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.DllImportAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.DllImportAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.DllImportAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.DllImportAttribute.EntryPoint | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.DynamicInterfaceCastableImplementationAttribute | [AttributeUsageAttribute(...)] | 0 | 1024 | -| System.Runtime.InteropServices.ErrorWrapper | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ErrorWrapper | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ErrorWrapper | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ExternalException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ExternalException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.ExternalException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.FieldOffsetAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Runtime.InteropServices.GCHandle | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.GCHandle | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.GuidAttribute | [AttributeUsageAttribute(...)] | 0 | 5149 | -| System.Runtime.InteropServices.GuidAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.GuidAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.HandleRef | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.HandleRef | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.ICustomAdapter | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ICustomAdapter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ICustomFactory | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ICustomMarshaler | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ICustomQueryInterface | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.InAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.InteropServices.InterfaceTypeAttribute | [AttributeUsageAttribute(...)] | 0 | 1024 | -| System.Runtime.InteropServices.InvalidComObjectException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.InvalidComObjectException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.InvalidComObjectException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.InvalidOleVariantTypeException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.InvalidOleVariantTypeException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.InvalidOleVariantTypeException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.LCIDConversionAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.LibraryImportAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.LibraryImportAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.LibraryImportAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.Marshal | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.Marshal | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.MarshalAsAttribute | [AttributeUsageAttribute(...)] | 0 | 10496 | -| System.Runtime.InteropServices.MarshalAsAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.MarshalAsAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.MarshalDirectiveException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.MarshalDirectiveException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.MarshalDirectiveException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller | [CustomMarshallerAttribute(...)] | 0 | System.String | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller | [CustomMarshallerAttribute(...)] | 1 | 0 | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller.ManagedToUnmanagedIn | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.InteropServices.Marshalling.AnsiStringMarshaller.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 0 | System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.GenericPlaceholder | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 0 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller | [CustomMarshallerAttribute(...)] | 0 | System.String | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller | [CustomMarshallerAttribute(...)] | 1 | 0 | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.BStrStringMarshaller | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.BStrStringMarshaller.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller.ManagedToUnmanagedIn | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.InteropServices.Marshalling.BStrStringMarshaller.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.InteropServices.Marshalling.ContiguousCollectionMarshallerAttribute | [AttributeUsageAttribute(...)] | 0 | 12 | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute | [AttributeUsageAttribute(...)] | 0 | 12 | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.GenericPlaceholder | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute | [AttributeUsageAttribute(...)] | 0 | 10240 | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute | [AttributeUsageAttribute(...)] | 0 | 5148 | -| System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 0 | System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.GenericPlaceholder* | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 0 | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2.ManagedToUnmanagedIn | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 0 | System.ReadOnlySpan`1 | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 6 | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.UnmanagedToManagedOut | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1 | [CustomMarshallerAttribute(...)] | 0 | System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute.GenericPlaceholder | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1 | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1 | [CustomMarshallerAttribute(...)] | 1 | 2 | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1 | [CustomMarshallerAttribute(...)] | 1 | 3 | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1.ManagedToUnmanagedOut | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1.ManagedToUnmanagedRef | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1.ManagedToUnmanagedRef | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1.ManagedToUnmanagedRef | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 0 | System.Span`1 | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 0 | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller`2.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller | [CustomMarshallerAttribute(...)] | 0 | System.String | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller | [CustomMarshallerAttribute(...)] | 1 | 0 | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller | [CustomMarshallerAttribute(...)] | 1 | 1 | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller.ManagedToUnmanagedIn | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller.ManagedToUnmanagedIn | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller.ManagedToUnmanagedIn | [ObsoleteAttribute(...)] | 1 | True | -| System.Runtime.InteropServices.Marshalling.Utf16StringMarshaller | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.Marshalling.Utf16StringMarshaller | [CustomMarshallerAttribute(...)] | 0 | System.String | -| System.Runtime.InteropServices.Marshalling.Utf16StringMarshaller | [CustomMarshallerAttribute(...)] | 1 | 0 | -| System.Runtime.InteropServices.Marshalling.Utf16StringMarshaller | [CustomMarshallerAttribute(...)] | 2 | System.Runtime.InteropServices.Marshalling.Utf16StringMarshaller | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Explicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.NFloat System.Runtime.InteropServices.NFloat.op_Implicit(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.InteropServices.NativeLibrary | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.NativeLibrary | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.OSPlatform | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.OSPlatform | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.UnhandledExceptionPropagationHandler | [NullableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.ObjectiveC.ObjectiveCTrackedTypeAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.Runtime.InteropServices.ObjectiveC.ObjectiveCTrackedTypeAttribute | [SupportedOSPlatformAttribute(...)] | 0 | macos | -| System.Runtime.InteropServices.OptionalAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.InteropServices.OutAttribute | [AttributeUsageAttribute(...)] | 0 | 2048 | -| System.Runtime.InteropServices.PosixSignal.SIGCHLD | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.PosixSignal.SIGCONT | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.PosixSignal.SIGTSTP | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.PosixSignal.SIGTTIN | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.PosixSignal.SIGTTOU | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.PosixSignal.SIGWINCH | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Runtime.InteropServices.PosixSignalRegistration System.Runtime.InteropServices.PosixSignalRegistration.Create(System.Runtime.InteropServices.PosixSignal,System.Action<System.Runtime.InteropServices.PosixSignalContext>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.PosixSignalRegistration System.Runtime.InteropServices.PosixSignalRegistration.Create(System.Runtime.InteropServices.PosixSignal,System.Action<System.Runtime.InteropServices.PosixSignalContext>) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Runtime.InteropServices.PosixSignalRegistration System.Runtime.InteropServices.PosixSignalRegistration.Create(System.Runtime.InteropServices.PosixSignal,System.Action<System.Runtime.InteropServices.PosixSignalContext>) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Runtime.InteropServices.PosixSignalRegistration System.Runtime.InteropServices.PosixSignalRegistration.Create(System.Runtime.InteropServices.PosixSignal,System.Action<System.Runtime.InteropServices.PosixSignalContext>) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Runtime.InteropServices.PosixSignalRegistration System.Runtime.InteropServices.PosixSignalRegistration.Create(System.Runtime.InteropServices.PosixSignal,System.Action<System.Runtime.InteropServices.PosixSignalContext>) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Runtime.InteropServices.PreserveSigAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.ProgIdAttribute | [AttributeUsageAttribute(...)] | 0 | 4 | -| System.Runtime.InteropServices.ProgIdAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.ProgIdAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.RuntimeInformation | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.RuntimeInformation | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.SEHException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.SEHException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.SEHException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.SafeArrayRankMismatchException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.SafeArrayRankMismatchException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.SafeArrayRankMismatchException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.SafeArrayTypeMismatchException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.SafeArrayTypeMismatchException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.SafeArrayTypeMismatchException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.InteropServices.SafeHandle System.Threading.ThreadPoolBoundHandle.Handle | [NullableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.SafeHandle System.Threading.ThreadPoolBoundHandle.get_Handle() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.StructLayoutAttribute | [AttributeUsageAttribute(...)] | 0 | 12 | -| System.Runtime.InteropServices.StructLayoutAttribute System.Type.StructLayoutAttribute | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.StructLayoutAttribute System.Type.get_StructLayoutAttribute() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.SuppressGCTransitionAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.TypeIdentifierAttribute | [AttributeUsageAttribute(...)] | 0 | 5144 | -| System.Runtime.InteropServices.TypeIdentifierAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.TypeIdentifierAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.UnknownWrapper | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnknownWrapper | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.UnknownWrapper | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.UnmanagedCallConvAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.UnmanagedCallConvAttribute.CallConvs | [NullableAttribute(...)] | 0 | [2,1] | -| System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.CallConvs | [NullableAttribute(...)] | 0 | [2,1] | -| System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute.EntryPoint | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute | [AttributeUsageAttribute(...)] | 0 | 4096 | -| System.Runtime.InteropServices.UnmanagedType.AnsiBStr | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.AnsiBStr | [ObsoleteAttribute(...)] | 0 | Marshalling as AnsiBStr may be unavailable in future releases. | -| System.Runtime.InteropServices.UnmanagedType.AsAny | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.AsAny | [ObsoleteAttribute(...)] | 0 | Marshalling arbitrary types may be unavailable in future releases. Specify the type you wish to marshal as. | -| System.Runtime.InteropServices.UnmanagedType.Currency | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.Currency | [ObsoleteAttribute(...)] | 0 | Marshalling as Currency may be unavailable in future releases. | -| System.Runtime.InteropServices.UnmanagedType.IDispatch | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.SafeArray | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.Struct | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.TBStr | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.TBStr | [ObsoleteAttribute(...)] | 0 | Marshalling as TBstr may be unavailable in future releases. | -| System.Runtime.InteropServices.UnmanagedType.VBByRefStr | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.UnmanagedType.VBByRefStr | [ObsoleteAttribute(...)] | 0 | Marshalling as VBByRefString may be unavailable in future releases. | -| System.Runtime.InteropServices.UnmanagedType.VariantBool | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.VarEnum | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.VariantWrapper | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.InteropServices.VariantWrapper | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.InteropServices.VariantWrapper | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Arm.AdvSimd | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Arm.Aes | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Arm.ArmBase | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Arm.Crc32 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Arm.Dp | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Arm.Rdm | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Arm.Sha1 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Arm.Sha256 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Abs`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Add`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.AndNot`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.BitwiseAnd`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.BitwiseOr`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.ConditionalSelect`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.CreateScalar`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Create`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Create`1(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Create`1(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Create`1(System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Divide`1(System.Runtime.Intrinsics.Vector64<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Divide`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Equals`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.GreaterThan`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LessThan`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadAlignedNonTemporal`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadAlignedNonTemporal`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadAligned`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadAligned`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadUnsafe`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.LoadUnsafe`1(!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Load`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Load`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Max`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Min`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Multiply`1(!0,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Multiply`1(System.Runtime.Intrinsics.Vector64<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Multiply`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Negate`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.OnesComplement`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Sqrt`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Subtract`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.WithElement`1(System.Runtime.Intrinsics.Vector64<!0>,System.Int32,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64.Xor`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.AllBitsSet | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.One | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector64`1.Zero | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector128.GetLower`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!0> System.Runtime.Intrinsics.Vector128.GetUpper`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<!1> System.Runtime.Intrinsics.Vector64.As`2(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector64<System.Byte> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Runtime.Intrinsics.Vector64<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.Double> System.Runtime.Intrinsics.Vector64.ConvertToDouble(System.Runtime.Intrinsics.Vector64<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.Int16> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.AsSByte`1(System.Runtime.Intrinsics.Vector64<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Create(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.CreateScalar(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.Int16>,System.Runtime.Intrinsics.Vector64<System.Int16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.SByte> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Runtime.Intrinsics.Vector64<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.Single> System.Runtime.Intrinsics.Vector64.ConvertToSingle(System.Runtime.Intrinsics.Vector64<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.AsUInt16`1(System.Runtime.Intrinsics.Vector64<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Create(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Runtime.Intrinsics.Vector64<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Runtime.Intrinsics.Vector64<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt16> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.AsUInt32`1(System.Runtime.Intrinsics.Vector64<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.ConvertToUInt32(System.Runtime.Intrinsics.Vector64<System.Single>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Create(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Create(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Narrow(System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Runtime.Intrinsics.Vector64<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.Shuffle(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Runtime.Intrinsics.Vector64<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt32> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.AsUInt64`1(System.Runtime.Intrinsics.Vector64<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.ConvertToUInt64(System.Runtime.Intrinsics.Vector64<System.Double>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.Create(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.WidenLower(System.Runtime.Intrinsics.Vector64<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UInt64> System.Runtime.Intrinsics.Vector64.WidenUpper(System.Runtime.Intrinsics.Vector64<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.AsNUInt`1(System.Runtime.Intrinsics.Vector64<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.Create(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.CreateScalar(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.CreateScalarUnsafe(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.ShiftLeft(System.Runtime.Intrinsics.Vector64<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64<System.UIntPtr> System.Runtime.Intrinsics.Vector64.ShiftRightLogical(System.Runtime.Intrinsics.Vector64<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector64`1 | [DebuggerDisplayAttribute(...)] | 0 | {DisplayString,nq} | -| System.Runtime.Intrinsics.Vector64`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Runtime.Intrinsics.Vector64DebugView`1 | -| System.Runtime.Intrinsics.Vector64`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Runtime.Intrinsics.Vector64`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Intrinsics.Vector64`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector64.ToVector128Unsafe`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector64.ToVector128`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Abs`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Add`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.AndNot`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.AsVector128`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.BitwiseAnd`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.BitwiseOr`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.ConditionalSelect`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.CreateScalar`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Create`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Create`1(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Create`1(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Create`1(System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Create`1(System.Runtime.Intrinsics.Vector64<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Divide`1(System.Runtime.Intrinsics.Vector128<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Divide`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Equals`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.GreaterThan`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LessThan`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadAlignedNonTemporal`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadAlignedNonTemporal`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadAligned`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadAligned`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadUnsafe`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.LoadUnsafe`1(!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Load`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Load`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Max`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Min`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Multiply`1(!0,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Multiply`1(System.Runtime.Intrinsics.Vector128<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Multiply`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Negate`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.OnesComplement`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Sqrt`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Subtract`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithElement`1(System.Runtime.Intrinsics.Vector128<!0>,System.Int32,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithLower`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.WithUpper`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128.Xor`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.AllBitsSet | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.One | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector128`1.Zero | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector256.GetLower`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!0> System.Runtime.Intrinsics.Vector256.GetUpper`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<!1> System.Runtime.Intrinsics.Vector128.As`2(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.Default.PackSources(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.Default.PackSources(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.Default.PackSources(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`1(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`1(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`1(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`2(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`2(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`2(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.Ssse3AndWasmHandleZeroInNeedle.PackSources(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.Ssse3AndWasmHandleZeroInNeedle.PackSources(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.ProbabilisticMap.ContainsMask16Chars(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Char) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.ProbabilisticMap.ContainsMask16Chars(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Char) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.ProbabilisticMap.IsCharBitSet(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.ProbabilisticMap.IsCharBitSet(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.ProbabilisticMap.IsCharBitSet(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.ProbabilisticMap.IsCharBitSet(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.ProbabilisticMap.IsCharBitSet(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.Text.Base64.SimdShuffle(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Buffers.Text.Base64.SimdShuffle(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.PackedSpanHelpers.PackSources(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.AddSaturate(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.AddSaturate(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.ShuffleUnsafe(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.ShuffleUnsafe(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.ShuffleUnsafe(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Wasm.PackedSimd | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.ShuffleUnsafe(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.SubtractSaturate(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.SubtractSaturate(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.UnpackHigh(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.UnpackHigh(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.UnpackLow(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.Byte> System.Runtime.Intrinsics.Vector128.UnpackLow(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.Double> System.Runtime.Intrinsics.Vector128.ConvertToDouble(System.Runtime.Intrinsics.Vector128<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.Int16> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.AsSByte`1(System.Runtime.Intrinsics.Vector128<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Create(System.Runtime.Intrinsics.Vector64<System.SByte>,System.Runtime.Intrinsics.Vector64<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Create(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.CreateScalar(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.SByte> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Runtime.Intrinsics.Vector128<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.Single> System.Runtime.Intrinsics.Vector128.ConvertToSingle(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.AddSaturate(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.AddSaturate(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.AsUInt16`1(System.Runtime.Intrinsics.Vector128<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Create(System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Runtime.Intrinsics.Vector64<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Create(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt16> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.AsUInt32`1(System.Runtime.Intrinsics.Vector128<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.ConvertToUInt32(System.Runtime.Intrinsics.Vector128<System.Single>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Create(System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Runtime.Intrinsics.Vector64<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Create(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Create(System.UInt32,System.UInt32,System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Narrow(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Runtime.Intrinsics.Vector128<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt32> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.AsUInt64`1(System.Runtime.Intrinsics.Vector128<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.ConvertToUInt64(System.Runtime.Intrinsics.Vector128<System.Double>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.Create(System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Runtime.Intrinsics.Vector64<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.Create(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.Create(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.Shuffle(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Runtime.Intrinsics.Vector128<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.WidenLower(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UInt64> System.Runtime.Intrinsics.Vector128.WidenUpper(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.AsNUInt`1(System.Runtime.Intrinsics.Vector128<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.Create(System.Runtime.Intrinsics.Vector64<System.UIntPtr>,System.Runtime.Intrinsics.Vector64<System.UIntPtr>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.Create(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.CreateScalar(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.CreateScalarUnsafe(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.ShiftLeft(System.Runtime.Intrinsics.Vector128<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128<System.UIntPtr> System.Runtime.Intrinsics.Vector128.ShiftRightLogical(System.Runtime.Intrinsics.Vector128<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector128`1 | [DebuggerDisplayAttribute(...)] | 0 | {DisplayString,nq} | -| System.Runtime.Intrinsics.Vector128`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Runtime.Intrinsics.Vector128DebugView`1 | -| System.Runtime.Intrinsics.Vector128`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Runtime.Intrinsics.Vector128`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Intrinsics.Vector128`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector128.ToVector256Unsafe`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector128.ToVector256`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Abs`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Add`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.AndNot`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.AsVector256`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.BitwiseAnd`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.BitwiseOr`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.ConditionalSelect`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.CreateScalar`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Create`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Create`1(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Create`1(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Create`1(System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Create`1(System.Runtime.Intrinsics.Vector128<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Divide`1(System.Runtime.Intrinsics.Vector256<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Divide`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Equals`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.GreaterThan`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LessThan`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadAlignedNonTemporal`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadAlignedNonTemporal`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadAligned`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadAligned`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadUnsafe`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.LoadUnsafe`1(!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Load`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Load`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Max`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Min`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Multiply`1(!0,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Multiply`1(System.Runtime.Intrinsics.Vector256<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Multiply`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Negate`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.OnesComplement`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Sqrt`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Subtract`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithElement`1(System.Runtime.Intrinsics.Vector256<!0>,System.Int32,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithLower`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.WithUpper`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256.Xor`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.AllBitsSet | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.One | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector256`1.Zero | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector512.GetLower`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!0> System.Runtime.Intrinsics.Vector512.GetUpper`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<!1> System.Runtime.Intrinsics.Vector256.As`2(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.Default.PackSources(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.FixUpPackedVector256Result(System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookupCore(System.Runtime.Intrinsics.Vector256<System.Byte>,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`1(System.Runtime.Intrinsics.Vector256<System.Byte>,System.Runtime.Intrinsics.Vector256<System.Byte>,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyLookup`2(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Runtime.Intrinsics.Vector256<System.Int16>,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.IndexOfAnyAsciiSearcher.Ssse3AndWasmHandleZeroInNeedle.PackSources(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.ProbabilisticMap.ContainsMask32CharsAvx2(System.Runtime.Intrinsics.Vector256<System.Byte>,System.Runtime.Intrinsics.Vector256<System.Byte>,System.Char) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Buffers.ProbabilisticMap.IsCharBitSetAvx2(System.Runtime.Intrinsics.Vector256<System.Byte>,System.Runtime.Intrinsics.Vector256<System.Byte>,System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.PackedSpanHelpers.FixUpPackedVector256Result(System.Runtime.Intrinsics.Vector256<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.PackedSpanHelpers.PackSources(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Runtime.Intrinsics.Vector256<System.Int16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Runtime.Intrinsics.Vector256<System.Byte> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.Double> System.Runtime.Intrinsics.Vector256.ConvertToDouble(System.Runtime.Intrinsics.Vector256<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.Int16> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.AsSByte`1(System.Runtime.Intrinsics.Vector256<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Create(System.Runtime.Intrinsics.Vector128<System.SByte>,System.Runtime.Intrinsics.Vector128<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Create(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.CreateScalar(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.Int16>,System.Runtime.Intrinsics.Vector256<System.Int16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.SByte> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Runtime.Intrinsics.Vector256<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.Single> System.Runtime.Intrinsics.Vector256.ConvertToSingle(System.Runtime.Intrinsics.Vector256<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.AsUInt16`1(System.Runtime.Intrinsics.Vector256<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Create(System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Create(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Runtime.Intrinsics.Vector256<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt16> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.AsUInt32`1(System.Runtime.Intrinsics.Vector256<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.ConvertToUInt32(System.Runtime.Intrinsics.Vector256<System.Single>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Create(System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Create(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Create(System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Narrow(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Runtime.Intrinsics.Vector256<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Runtime.Intrinsics.Vector256<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt32> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.AsUInt64`1(System.Runtime.Intrinsics.Vector256<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.ConvertToUInt64(System.Runtime.Intrinsics.Vector256<System.Double>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.Create(System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Runtime.Intrinsics.Vector128<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.Create(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.Create(System.UInt64,System.UInt64,System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.Shuffle(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Runtime.Intrinsics.Vector256<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.WidenLower(System.Runtime.Intrinsics.Vector256<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UInt64> System.Runtime.Intrinsics.Vector256.WidenUpper(System.Runtime.Intrinsics.Vector256<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.AsNUInt`1(System.Runtime.Intrinsics.Vector256<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.Create(System.Runtime.Intrinsics.Vector128<System.UIntPtr>,System.Runtime.Intrinsics.Vector128<System.UIntPtr>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.Create(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.CreateScalar(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.CreateScalarUnsafe(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.ShiftLeft(System.Runtime.Intrinsics.Vector256<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256<System.UIntPtr> System.Runtime.Intrinsics.Vector256.ShiftRightLogical(System.Runtime.Intrinsics.Vector256<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector256`1 | [DebuggerDisplayAttribute(...)] | 0 | {DisplayString,nq} | -| System.Runtime.Intrinsics.Vector256`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Runtime.Intrinsics.Vector256DebugView`1 | -| System.Runtime.Intrinsics.Vector256`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Runtime.Intrinsics.Vector256`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Intrinsics.Vector256`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector256.ToVector512Unsafe`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector256.ToVector512`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Abs`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Add`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.AndNot`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.AsVector512`1(System.Numerics.Vector<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.BitwiseAnd`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.BitwiseOr`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.ConditionalSelect`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.CreateScalar`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Create`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Create`1(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Create`1(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Create`1(System.ReadOnlySpan<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Create`1(System.Runtime.Intrinsics.Vector256<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Divide`1(System.Runtime.Intrinsics.Vector512<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Divide`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Equals`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.GreaterThanOrEqual`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.GreaterThan`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LessThanOrEqual`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LessThan`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadAlignedNonTemporal`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadAlignedNonTemporal`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadAligned`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadAligned`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadUnsafe`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadUnsafe`1(!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.LoadUnsafe`1(!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Load`1(!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Load`1(!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Max`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Min`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Multiply`1(!0,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Multiply`1(System.Runtime.Intrinsics.Vector512<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Multiply`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Negate`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.OnesComplement`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Sqrt`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Subtract`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithElement`1(System.Runtime.Intrinsics.Vector512<!0>,System.Int32,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithLower`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.WithUpper`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512.Xor`1(System.Runtime.Intrinsics.Vector512<!0>,System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.AllBitsSet | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.One | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector512<!0> System.Runtime.Intrinsics.Vector512`1.Zero | [NullableAttribute(...)] | 0 | [0,1] | -| System.Runtime.Intrinsics.Vector512<!1> System.Runtime.Intrinsics.Vector512.As`2(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.PackedSpanHelpers.FixUpPackedVector512Result(System.Runtime.Intrinsics.Vector512<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx512F | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.PackedSpanHelpers.PackSources(System.Runtime.Intrinsics.Vector512<System.Int16>,System.Runtime.Intrinsics.Vector512<System.Int16>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx512BW | -| System.Runtime.Intrinsics.Vector512<System.Byte> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Runtime.Intrinsics.Vector512<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.Double> System.Runtime.Intrinsics.Vector512.ConvertToDouble(System.Runtime.Intrinsics.Vector512<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.Int16> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.AsSByte`1(System.Runtime.Intrinsics.Vector512<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Create(System.Runtime.Intrinsics.Vector256<System.SByte>,System.Runtime.Intrinsics.Vector256<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Create(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Create(System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.CreateScalar(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.Int16>,System.Runtime.Intrinsics.Vector512<System.Int16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.SByte> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.SByte>,System.Runtime.Intrinsics.Vector512<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.Single> System.Runtime.Intrinsics.Vector512.ConvertToSingle(System.Runtime.Intrinsics.Vector512<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.AsUInt16`1(System.Runtime.Intrinsics.Vector512<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Create(System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Create(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Create(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.CreateScalar(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Runtime.Intrinsics.Vector512<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Runtime.Intrinsics.Vector512<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt16> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.AsUInt32`1(System.Runtime.Intrinsics.Vector512<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.ConvertToUInt32(System.Runtime.Intrinsics.Vector512<System.Single>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Create(System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Runtime.Intrinsics.Vector256<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Create(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Create(System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.CreateScalar(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Narrow(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Runtime.Intrinsics.Vector512<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Runtime.Intrinsics.Vector512<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt32> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.AsUInt64`1(System.Runtime.Intrinsics.Vector512<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.ConvertToUInt64(System.Runtime.Intrinsics.Vector512<System.Double>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.Create(System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Runtime.Intrinsics.Vector256<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.Create(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.Create(System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.CreateScalar(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.Shuffle(System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Runtime.Intrinsics.Vector512<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.WidenLower(System.Runtime.Intrinsics.Vector512<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UInt64> System.Runtime.Intrinsics.Vector512.WidenUpper(System.Runtime.Intrinsics.Vector512<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.AsNUInt`1(System.Runtime.Intrinsics.Vector512<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.Create(System.Runtime.Intrinsics.Vector256<System.UIntPtr>,System.Runtime.Intrinsics.Vector256<System.UIntPtr>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.Create(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.CreateScalar(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.CreateScalarUnsafe(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.ShiftLeft(System.Runtime.Intrinsics.Vector512<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512<System.UIntPtr> System.Runtime.Intrinsics.Vector512.ShiftRightLogical(System.Runtime.Intrinsics.Vector512<System.UIntPtr>,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.Vector512`1 | [DebuggerDisplayAttribute(...)] | 0 | {DisplayString,nq} | -| System.Runtime.Intrinsics.Vector512`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Runtime.Intrinsics.Vector512DebugView`1 | -| System.Runtime.Intrinsics.Vector512`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Runtime.Intrinsics.Vector512`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Intrinsics.Vector512`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Intrinsics.Wasm.PackedSimd | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Aes | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Avx | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Avx2 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Avx512BW | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Avx512CD | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Avx512DQ | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Avx512F | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Avx512Vbmi | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.AvxVnni | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.AvxVnni | [RequiresPreviewFeaturesAttribute(...)] | 0 | AvxVnni is in preview. | -| System.Runtime.Intrinsics.X86.Bmi1 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Bmi2 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Fma | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Lzcnt | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Pclmulqdq | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Popcnt | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Sse | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Sse2 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Sse3 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Sse41 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Sse42 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.Ssse3 | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.X86Base | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Intrinsics.X86.X86Serialize | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Loader.AssemblyDependencyResolver | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Loader.AssemblyDependencyResolver | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Loader.AssemblyDependencyResolver | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Runtime.Loader.AssemblyDependencyResolver | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Runtime.Loader.AssemblyDependencyResolver | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Runtime.Loader.AssemblyDependencyResolver | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Runtime.Loader.AssemblyLoadContext | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Loader.AssemblyLoadContext | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Loader.AssemblyLoadContext System.Runtime.Loader.AssemblyLoadContext.CurrentContextualReflectionContext | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.Loader.AssemblyLoadContext System.Runtime.Loader.AssemblyLoadContext.get_CurrentContextualReflectionContext() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Loader.AssemblyLoadContext.AssemblyLoad | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.Loader.AssemblyLoadContext.AssemblyResolve | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.Loader.AssemblyLoadContext.ContextualReflectionScope | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Runtime.Loader.AssemblyLoadContext.ContextualReflectionScope | [NullableContextAttribute(...)] | 0 | 0 | -| System.Runtime.Loader.AssemblyLoadContext.ContextualReflectionScope System.Runtime.Loader.AssemblyLoadContext.EnterContextualReflection(System.Reflection.Assembly) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Loader.AssemblyLoadContext.Resolving | [NullableAttribute(...)] | 0 | [2,1,1,2] | -| System.Runtime.Loader.AssemblyLoadContext.ResolvingUnmanagedDll | [NullableAttribute(...)] | 0 | [2,1,1] | -| System.Runtime.Loader.AssemblyLoadContext.ResourceResolve | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.Loader.AssemblyLoadContext.TypeResolve | [NullableAttribute(...)] | 0 | 2 | -| System.Runtime.Loader.AssemblyLoadContext.Unloading | [NullableAttribute(...)] | 0 | [2,1] | -| System.Runtime.Loader.AssemblyLoadContext._resolving | [NullableAttribute(...)] | 0 | [2,1,1,1] | -| System.Runtime.Loader.AssemblyLoadContext._resolvingUnmanagedDll | [NullableAttribute(...)] | 0 | [2,1,1] | -| System.Runtime.Loader.AssemblyLoadContext._unloading | [NullableAttribute(...)] | 0 | [2,1] | -| System.Runtime.Remoting.ObjectHandle | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Remoting.ObjectHandle | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstance(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstance(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstance(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstance(System.String,System.String,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceFrom(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceFrom(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceFrom(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceFrom(System.String,System.String,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceInternal(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[],System.Threading.StackCrawlMark) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceInternal(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[],System.Threading.StackCrawlMark) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Runtime.Remoting.ObjectHandle System.Activator.CreateInstanceInternal(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[],System.Threading.StackCrawlMark) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2072:UnrecognizedReflectionPattern | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstance(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstance(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstance(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstance(System.String,System.String,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstanceFrom(System.String,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstanceFrom(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstanceFrom(System.String,System.String,System.Boolean,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Remoting.ObjectHandle System.AppDomain.CreateInstanceFrom(System.String,System.String,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Type and its constructor could be removed | -| System.Runtime.Serialization.IDeserializationCallback | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Serialization.IFormatterConverter | [CLSCompliantAttribute(...)] | 0 | False | -| System.Runtime.Serialization.IFormatterConverter | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Serialization.IFormatterConverter | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Runtime.Serialization.IObjectReference | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Serialization.IObjectReference | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Runtime.Serialization.ISafeSerializationData | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Serialization.ISafeSerializationData | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Runtime.Serialization.ISerializable | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Serialization.OnDeserializedAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.Serialization.OnDeserializingAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.Serialization.OnSerializedAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.Serialization.OnSerializingAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Runtime.Serialization.OptionalFieldAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Runtime.Serialization.SafeSerializationEventArgs | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Runtime.Serialization.SerializationEntry | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Serialization.SerializationEntry | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Serialization.SerializationException | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Serialization.SerializationException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Serialization.SerializationException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Runtime.Serialization.SerializationInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Serialization.SerializationInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Serialization.SerializationInfoEnumerator | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Serialization.SerializationInfoEnumerator | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Serialization.StreamingContext | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Serialization.StreamingContext | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Serialization.StreamingContext._state | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Runtime.Serialization.StreamingContextStates | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Runtime.Serialization.StreamingContextStates System.Runtime.Serialization.StreamingContext.State | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Runtime.TargetedPatchingOptOutAttribute | [AttributeUsageAttribute(...)] | 0 | 96 | -| System.Runtime.TargetedPatchingOptOutAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.TargetedPatchingOptOutAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Versioning.ComponentGuaranteesAttribute | [AttributeUsageAttribute(...)] | 0 | 5887 | -| System.Runtime.Versioning.FrameworkName | [NotNullWhenAttribute(...)] | 0 | True | -| System.Runtime.Versioning.FrameworkName | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Versioning.FrameworkName | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Versioning.NonVersionableAttribute | [AttributeUsageAttribute(...)] | 0 | 108 | -| System.Runtime.Versioning.OSPlatformAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Versioning.OSPlatformAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Versioning.ObsoletedOSPlatformAttribute | [AttributeUsageAttribute(...)] | 0 | 2047 | -| System.Runtime.Versioning.ObsoletedOSPlatformAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Versioning.ObsoletedOSPlatformAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Versioning.RequiresPreviewFeaturesAttribute | [AttributeUsageAttribute(...)] | 0 | 6143 | -| System.Runtime.Versioning.RequiresPreviewFeaturesAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Versioning.RequiresPreviewFeaturesAttribute | [NullableContextAttribute(...)] | 0 | 2 | -| System.Runtime.Versioning.ResourceConsumptionAttribute | [AttributeUsageAttribute(...)] | 0 | 224 | -| System.Runtime.Versioning.ResourceConsumptionAttribute | [ConditionalAttribute(...)] | 0 | RESOURCE_ANNOTATION_WORK | -| System.Runtime.Versioning.ResourceExposureAttribute | [AttributeUsageAttribute(...)] | 0 | 480 | -| System.Runtime.Versioning.ResourceExposureAttribute | [ConditionalAttribute(...)] | 0 | RESOURCE_ANNOTATION_WORK | -| System.Runtime.Versioning.SupportedOSPlatformAttribute | [AttributeUsageAttribute(...)] | 0 | 2047 | -| System.Runtime.Versioning.SupportedOSPlatformGuardAttribute | [AttributeUsageAttribute(...)] | 0 | 448 | -| System.Runtime.Versioning.TargetFrameworkAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.Versioning.TargetFrameworkAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Versioning.TargetFrameworkAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Versioning.TargetPlatformAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Runtime.Versioning.UnsupportedOSPlatformAttribute | [AttributeUsageAttribute(...)] | 0 | 2047 | -| System.Runtime.Versioning.UnsupportedOSPlatformAttribute | [NullableAttribute(...)] | 0 | 0 | -| System.Runtime.Versioning.UnsupportedOSPlatformAttribute | [NullableContextAttribute(...)] | 0 | 1 | -| System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute | [AttributeUsageAttribute(...)] | 0 | 448 | -| System.RuntimeFieldHandle System.ModuleHandle.GetRuntimeFieldHandleFromMetadataToken(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeFieldHandle System.ModuleHandle.ResolveFieldHandle(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeFieldHandle System.ModuleHandle.ResolveFieldHandle(System.Int32,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeMethodHandle System.ModuleHandle.GetRuntimeMethodHandleFromMetadataToken(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeMethodHandle System.ModuleHandle.ResolveMethodHandle(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeMethodHandle System.ModuleHandle.ResolveMethodHandle(System.Int32,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeMethodHandleInternal System.Diagnostics.StackFrame.GetMethodDescFromNativeIP(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.RuntimeMethodHandleInternal System.ModuleHandle.ResolveMethod(System.Runtime.CompilerServices.QCallModule,System.Int32,System.IntPtr*,System.Int32,System.IntPtr*,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.RuntimeMethodHandleInternal System.RuntimeTypeHandle.GetInterfaceMethodImplementation(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallTypeHandle,System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.RuntimeType | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1 | -| System.RuntimeType | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.RuntimeType | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.RuntimeType.ListBuilder`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.RuntimeTypeHandle | [NullableAttribute(...)] | 0 | 0 | -| System.RuntimeTypeHandle | [NullableContextAttribute(...)] | 0 | 2 | -| System.RuntimeTypeHandle System.ModuleHandle.GetRuntimeTypeHandleFromMetadataToken(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeTypeHandle System.ModuleHandle.ResolveTypeHandle(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeTypeHandle System.ModuleHandle.ResolveTypeHandle(System.Int32,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.RuntimeType[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateInterfaces(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.RuntimeType[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateInterfaces(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2065:UnrecognizedReflectionPattern | -| System.RuntimeType[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateNestedClasses(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.RuntimeType[] System.RuntimeType.RuntimeTypeCache.MemberInfoCache`1.PopulateNestedClasses(System.RuntimeType.RuntimeTypeCache.Filter) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.SByte System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Byte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.DateTime) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Double) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Int16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Object,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.Single) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.String,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.Convert.ToSByte(System.String,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Convert.ToSByte(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Decimal.ToSByte(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Decimal.op_Explicit(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Half.op_CheckedExplicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Half.op_Explicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.IO.BinaryReader.ReadSByte() | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.IO.UnmanagedMemoryAccessor.ReadSByte(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Int128.op_CheckedExplicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Int128.op_Explicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Math.Abs(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Math.Clamp(System.SByte,System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Math.Max(System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Math.Min(System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Runtime.Serialization.SerializationInfo.GetSByte(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.SByte.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.SByte.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.SByte.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.SByte.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.SByte.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.SByte.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.SByte.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SByte System.Threading.Thread.VolatileRead(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.Threading.Volatile.Read(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.UInt128.op_CheckedExplicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.SByte System.UInt128.op_Explicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.STAThreadAttribute | [AttributeUsageAttribute(...)] | 0 | 64 | -| System.Security.AllowPartiallyTrustedCallersAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Security.Cryptography.CryptographicException | [NullableAttribute(...)] | 0 | 0 | -| System.Security.Cryptography.CryptographicException | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.Cryptography.CryptographicException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Security.IPermission | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.IPermission | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.IPermission System.Security.IPermission.Copy() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.IPermission System.Security.Permissions.SecurityAttribute.CreatePermission() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.IPermission System.Security.Permissions.SecurityPermissionAttribute.CreatePermission() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.ISecurityEncodable | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.IStackWalk | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.PermissionSet | [NullableAttribute(...)] | 0 | 0 | -| System.Security.PermissionSet | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.PermissionSet | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.PermissionSet System.AppDomain.PermissionSet | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.PermissionSet System.Security.PermissionSet.Copy() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.Permissions.CodeAccessSecurityAttribute | [AttributeUsageAttribute(...)] | 0 | 109 | -| System.Security.Permissions.CodeAccessSecurityAttribute | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.Permissions.PermissionState | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.Permissions.SecurityAction | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.Permissions.SecurityAttribute | [AttributeUsageAttribute(...)] | 0 | 109 | -| System.Security.Permissions.SecurityAttribute | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.Permissions.SecurityPermissionAttribute | [AttributeUsageAttribute(...)] | 0 | 109 | -| System.Security.Permissions.SecurityPermissionAttribute | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.Permissions.SecurityPermissionFlag | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Security.Principal.IIdentity | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.Principal.IPrincipal | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.Principal.IPrincipal System.Threading.Thread.CurrentPrincipal | [NullableAttribute(...)] | 0 | 2 | -| System.Security.Principal.IPrincipal System.Threading.Thread.get_CurrentPrincipal() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.SecureString System.Security.SecureString.Copy() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.SecurityCriticalAttribute | [AttributeUsageAttribute(...)] | 0 | 5501 | -| System.Security.SecurityCriticalScope | [ObsoleteAttribute(...)] | 0 | SecurityCriticalScope is only used for .NET 2.0 transparency compatibility. | -| System.Security.SecurityCriticalScope System.Security.SecurityCriticalAttribute.Scope | [ObsoleteAttribute(...)] | 0 | SecurityCriticalScope is only used for .NET 2.0 transparency compatibility. | -| System.Security.SecurityElement | [NotNullWhenAttribute(...)] | 0 | True | -| System.Security.SecurityElement | [NullableAttribute(...)] | 0 | 0 | -| System.Security.SecurityElement | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.SecurityElement System.Security.ISecurityEncodable.ToXml() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.SecurityElement System.Security.SecurityElement.Copy() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.SecurityElement System.Security.SecurityElement.FromString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.SecurityElement System.Security.SecurityElement.SearchForChildByTag(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Security.SecurityException | [NullableAttribute(...)] | 0 | 0 | -| System.Security.SecurityException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.SecurityException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Security.SecurityRulesAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Security.SecuritySafeCriticalAttribute | [AttributeUsageAttribute(...)] | 0 | 5500 | -| System.Security.SecurityTransparentAttribute | [AttributeUsageAttribute(...)] | 0 | 1 | -| System.Security.SecurityTreatAsSafeAttribute | [AttributeUsageAttribute(...)] | 0 | 5501 | -| System.Security.SecurityTreatAsSafeAttribute | [ObsoleteAttribute(...)] | 0 | SecurityTreatAsSafe is only used for .NET 2.0 transparency compatibility. Use the SecuritySafeCriticalAttribute instead. | -| System.Security.SuppressUnmanagedCodeSecurityAttribute | [AttributeUsageAttribute(...)] | 0 | 5188 | -| System.Security.UnverifiableCodeAttribute | [AttributeUsageAttribute(...)] | 0 | 2 | -| System.Security.VerificationException | [NullableAttribute(...)] | 0 | 0 | -| System.Security.VerificationException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Security.VerificationException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.SerializableAttribute | [AttributeUsageAttribute(...)] | 0 | 4124 | -| System.SerializableAttribute | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Single System.BitConverter.ToSingle(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Single System.BitConverter.UInt32BitsToSingle(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Single System.Convert.ToSingle(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Single System.Convert.ToSingle(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Single System.Convert.ToSingle(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Single System.Convert.ToSingle(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Single System.Single.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Single System.Single.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Single System.Single.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Single System.Single.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Single System.Single.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Single System.Single.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Single System.Single.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Span<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Index) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(!0[],System.Range) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Index) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.MemoryExtensions.AsSpan`1(System.ArraySegment<!0>,System.Range) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.Memory`1.Span | [NullableAttribute(...)] | 0 | [0,1] | -| System.Span<!0> System.Runtime.InteropServices.CollectionsMarshal.AsSpan`1(System.Collections.Generic.List<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Span<!0> System.Runtime.InteropServices.MemoryMarshal.CreateSpan`1(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Span<!0> System.Span`1.Empty | [NullableAttribute(...)] | 0 | [0,1] | -| System.Span<!0>.Enumerator System.Span`1.GetEnumerator() | [NullableContextAttribute(...)] | 0 | 0 | -| System.Span<!1> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Span<System.Char> | [NullableAttribute(...)] | 0 | 0 | -| System.Span<System.Char> System.Text.StringBuilder.RemainingCurrentChunk | [NullableAttribute(...)] | 0 | 0 | -| System.Span<System.Object> | [NullableAttribute(...)] | 0 | [0,2] | -| System.Span`1 | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Span`1 | [DebuggerDisplayAttribute(...)] | 0 | {ToString(),raw} | -| System.Span`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.SpanDebugView`1 | -| System.Span`1 | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Span`1 | [NativeMarshallingAttribute(...)] | 0 | System.Runtime.InteropServices.Marshalling.SpanMarshaller`2 | -| System.Span`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Span`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Span`1 | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Span`1 | [ObsoleteAttribute(...)] | 1 | True | -| System.Span`1.Enumerator | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Span`1.Enumerator | [NullableAttribute(...)] | 0 | 0 | -| System.Span`1.Enumerator | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Span`1.Enumerator | [ObsoleteAttribute(...)] | 1 | True | -| System.StackOverflowException | [NullableAttribute(...)] | 0 | 0 | -| System.StackOverflowException | [NullableContextAttribute(...)] | 0 | 2 | -| System.StackOverflowException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.String System.AppContext.GetBaseDirectoryCore() | [UnconditionalSuppressMessageAttribute(...)] | 0 | SingleFile | -| System.String System.AppContext.GetBaseDirectoryCore() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3000: Avoid accessing Assembly file path when publishing as a single file | -| System.String System.AppContext.get_TargetFrameworkName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.AppDomain.get_DynamicDirectory() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.AppDomain.get_RelativeSearchPath() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.ApplicationId.get_Culture() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.ApplicationId.get_ProcessorArchitecture() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.ArgumentException.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.BadImageFormatException.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.BadImageFormatException.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Boolean.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Boolean.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Buffers.StandardFormat.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Byte.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Byte.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Byte.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Byte.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Char.ConvertFromUtf32(System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Char.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Char.ToString(System.Char) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Char.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Console.ReadLine() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Console.ReadLine() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.String System.Console.ReadLine() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.String System.Console.get_Title() | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.String System.Convert.ToBase64String(System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToBase64String(System.Byte[],System.Base64FormattingOptions) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToBase64String(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToBase64String(System.Byte[],System.Int32,System.Int32,System.Base64FormattingOptions) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToBase64String(System.ReadOnlySpan<System.Byte>,System.Base64FormattingOptions) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.Convert.ToHexString(System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToHexString(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToHexString(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.Convert.ToString(System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Boolean,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Byte) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Byte,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Byte,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Char) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Char,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.DateTime) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.DateTime,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Decimal) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Decimal,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Double) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Double,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int16) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int16,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int16,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int32,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int64) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int64,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Int64,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.SByte) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.SByte,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.SByte,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Single) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.Single,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.UInt16) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.UInt16,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.UInt16,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.UInt32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.UInt32,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.UInt32,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.UInt64) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Convert.ToString(System.UInt64,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Convert.ToString(System.UInt64,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateOnly.ToLongDateString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateOnly.ToShortDateString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateOnly.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateOnly.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateOnly.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateOnly.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.DateTime.ToLongDateString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTime.ToLongTimeString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTime.ToShortDateString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTime.ToShortTimeString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTime.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTime.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTime.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTime.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.DateTimeOffset.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTimeOffset.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTimeOffset.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.DateTimeOffset.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Decimal.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Decimal.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Decimal.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Decimal.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Diagnostics.CodeAnalysis.ExperimentalAttribute.get_UrlFormat() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.get_Url() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.get_Url() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_Category() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.get_CheckId() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_Category() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.get_CheckId() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.Contracts.ContractException.get_Failure() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.Contracts.ContractOptionAttribute.get_Value() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Diagnostics.DebuggerDisplayAttribute.get_Value() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.DebuggerTypeProxyAttribute.get_ProxyTypeName() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.DebuggerVisualizerAttribute.get_VisualizerTypeName() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.StackFrame.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.Tracing.EventSource.GenerateManifest(System.Type,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.String System.Diagnostics.Tracing.EventSource.GenerateManifest(System.Type,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2114:ReflectionToDynamicallyAccessedMembers | -| System.String System.Diagnostics.Tracing.EventSource.GenerateManifest(System.Type,System.String,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.String System.Diagnostics.Tracing.EventSource.GenerateManifest(System.Type,System.String,System.Diagnostics.Tracing.EventManifestOptions) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2114:ReflectionToDynamicallyAccessedMembers | -| System.String System.Diagnostics.Tracing.EventSource.GetName(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.Tracing.EventSource.GetTrait(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.Tracing.EventSource.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Diagnostics.Tracing.EventSource.get_Name() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Double.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Double.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Double.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Double.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Enum.GetName`1(!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.Enum.ToString(System.IFormatProvider) | [ObsoleteAttribute(...)] | 0 | The provider argument is not used. Use ToString() instead. | -| System.String System.Enum.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Enum.ToString(System.String,System.IFormatProvider) | [ObsoleteAttribute(...)] | 0 | The provider argument is not used. Use ToString(String) instead. | -| System.String System.Environment.get_ProcessPath() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Exception.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Exception.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Exception.get_Source() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.String System.Exception.get_Source() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.String System.Globalization.CultureNotFoundException.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Guid.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Guid.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Guid.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Half.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Half.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Half.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Half.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IConvertible.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Enumeration.FileSystemEntry.ToFullPath() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Enumeration.FileSystemEntry.ToSpecifiedFullPath() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Enumeration.FileSystemName.TranslateWin32Expression(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.FileInfo.get_DirectoryName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.FileLoadException.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.FileLoadException.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.FileNotFoundException.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.FileNotFoundException.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.FileSystemInfo.get_LinkTarget() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.ChangeExtension(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.Combine(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.Combine(System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.Combine(System.String,System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.Combine(System.String[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.GetDirectoryName(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.GetExtension(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.GetFileName(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.GetFileNameWithoutExtension(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.GetFullPath(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.GetFullPath(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.GetPathRoot(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.GetRandomFileName() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.GetRelativePath(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.GetTempFileName() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.GetTempPath() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.Join(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.Join(System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.Join(System.String,System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.Path.Join(System.String[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.Path.TrimEndingDirectorySeparator(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IO.StreamReader.ReadLine() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.StringReader.ReadLine() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IO.TextReader.ReadLine() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Index.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int16.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int16.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int16.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int16.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Int32.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int32.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int32.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int32.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Int64.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int64.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int64.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int64.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Int128.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int128.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int128.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Int128.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.IntPtr.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IntPtr.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IntPtr.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.IntPtr.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Lazy`1.ToString() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.MissingMemberException.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Nullable`1.ToString() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Numerics.Matrix3x2.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Matrix4x4.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Plane.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Quaternion.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector2.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector2.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector2.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Numerics.Vector3.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector3.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector3.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Numerics.Vector4.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector4.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector4.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Numerics.Vector`1.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector`1.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Numerics.Vector`1.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Range.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Reflection.Assembly.CreateQualifiedName(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.Assembly.get_CodeBase() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.Assembly.get_FullName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.AssemblyMetadataAttribute.get_Value() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.AssemblyName.EscapeCodeBase(System.String) | [RequiresAssemblyFilesAttribute(...)] | 0 | The code will return an empty string for assemblies embedded in a single-file app | -| System.String System.Reflection.AssemblyName.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Reflection.AssemblyName.get_CodeBase() | [RequiresAssemblyFilesAttribute(...)] | 0 | The code will return an empty string for assemblies embedded in a single-file app | -| System.String System.Reflection.AssemblyName.get_FullName() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Reflection.Emit.AssemblyBuilder.get_CodeBase() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.Emit.RuntimeModuleBuilder.ResolveString(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.String System.Reflection.ExceptionHandlingClause.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Reflection.Module.ResolveString(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.String System.Reflection.ParameterInfo.get_Name() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.RuntimeModule.GetFullyQualifiedName() | [RequiresAssemblyFilesAttribute(...)] | 0 | Returns <Unknown> for modules with no file path | -| System.String System.Reflection.RuntimeModule.ResolveString(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.String System.Reflection.TypeDelegator.get_AssemblyQualifiedName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.TypeDelegator.get_FullName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Reflection.TypeDelegator.get_Namespace() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Resources.ResourceManager.GetString(System.String,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.CompilerServices.AsyncMethodBuilderCore.GetAsyncStateMachineDescription(System.Runtime.CompilerServices.IAsyncStateMachine) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.String System.Runtime.CompilerServices.AsyncMethodBuilderCore.GetAsyncStateMachineDescription(System.Runtime.CompilerServices.IAsyncStateMachine) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.String System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.ToStringAndClear() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.CompilerServices.SwitchExpressionException.get_Message() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.CLong.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.COMException.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.CULong.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.ExternalException.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.LibraryImportAttribute.get_LibraryName() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.Marshal.GetTypeInfoName(System.Runtime.InteropServices.ComTypes.ITypeInfo) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.String System.Runtime.InteropServices.Marshal.PtrToStringAnsi(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.InteropServices.Marshal.PtrToStringAuto(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.InteropServices.Marshal.PtrToStringAuto(System.IntPtr,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.InteropServices.Marshal.PtrToStringUTF8(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.InteropServices.Marshal.PtrToStringUni(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.InteropServices.NFloat.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.NFloat.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.NFloat.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.InteropServices.NFloat.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.Loader.AssemblyLoadContext.get_Name() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.Versioning.TargetFrameworkAttribute.get_FrameworkDisplayName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.Versioning.UnsupportedOSPlatformAttribute.get_Message() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName(System.String,System.Runtime.Versioning.ResourceScope,System.Runtime.Versioning.ResourceScope,System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.SByte.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.SByte.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.SByte.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.SByte.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Security.PermissionSet.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Security.SecurityElement.Attribute(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Security.SecurityElement.SearchForTextOfTag(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Security.SecurityElement.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Security.SecurityElement.get_Tag() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Security.SecurityException.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Single.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Single.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Single.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Single.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Concat(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Concat(System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Concat(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.String.Concat(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.String.Concat(System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>,System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.String.Concat(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Concat(System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Concat(System.String,System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Copy(System.String) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.String System.String.Copy(System.String) | [ObsoleteAttribute(...)] | 0 | This API should not be used to create mutable strings. See https://go.microsoft.com/fwlink/?linkid=2084035 for alternatives. | -| System.String System.String.Create(System.IFormatProvider,System.Span<System.Char>,System.Runtime.CompilerServices.DefaultInterpolatedStringHandler) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.String.Format(System.IFormatProvider,System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Format(System.IFormatProvider,System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.String.Format(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Text.ASCIIEncoding.GetString(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Text.Encoding.GetString(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.String System.Text.Encoding.GetString(System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.Text.Encoding.GetString(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.String System.Text.Rune.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Text.UTF8Encoding.GetString(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Threading.Tasks.ValueTask`1.ToString() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Threading.Thread.get_Name() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Threading.ThreadLocal`1.ToString() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.TimeOnly.ToLongTimeString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.TimeOnly.ToShortTimeString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.TimeOnly.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.TimeOnly.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.TimeOnly.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.TimeOnly.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.TimeSpan.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.TimeSpan.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.TimeSpan.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Tuple`1.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Tuple`2.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Type.get_AssemblyQualifiedName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Type.get_FullName() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.Type.get_Namespace() | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.UInt16.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt16.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt16.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt16.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.UInt32.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt32.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt32.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt32.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.UInt64.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt64.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt64.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt64.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.UInt128.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt128.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt128.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UInt128.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.UIntPtr.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UIntPtr.ToString(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UIntPtr.ToString(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.UIntPtr.ToString(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.String System.ValueTuple`1.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.ValueTuple`2.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.ValueTuple`3.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.ValueTuple`4.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Version.ToString() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String System.Version.ToString(System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.StringComparer | [NullableAttribute(...)] | 0 | 0 | -| System.StringComparer | [NullableContextAttribute(...)] | 0 | 1 | -| System.StringComparer | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.StringComparer System.Globalization.GlobalizationExtensions.GetStringComparer(System.Globalization.CompareInfo,System.Globalization.CompareOptions) | [NullableContextAttribute(...)] | 0 | 1 | -| System.StringNormalizationExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.StringNormalizationExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.String[] System.DateTime.GetDateTimeFormats() | [NullableContextAttribute(...)] | 0 | 1 | -| System.String[] System.DateTime.GetDateTimeFormats(System.Char) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String[] System.DateTime.GetDateTimeFormats(System.Char,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.String[] System.DateTime.GetDateTimeFormats(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.SystemException | [NullableAttribute(...)] | 0 | 0 | -| System.SystemException | [NullableContextAttribute(...)] | 0 | 2 | -| System.SystemException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Text.CompositeFormat | [DebuggerDisplayAttribute(...)] | 0 | {Format} | -| System.Text.CompositeFormat | [NullableAttribute(...)] | 0 | 0 | -| System.Text.CompositeFormat | [NullableAttribute(...)] | 0 | 1 | -| System.Text.CompositeFormat | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.CompositeFormat._segments | [TupleElementNamesAttribute(...)] | 0 | [Literal,ArgIndex,Alignment,Format] | -| System.Text.Decoder System.Text.ASCIIEncoding.GetDecoder() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Decoder System.Text.UTF8Encoding.GetDecoder() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.DecoderFallback | [NullableAttribute(...)] | 0 | 0 | -| System.Text.DecoderFallback | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.DecoderFallback System.Text.Decoder.Fallback | [NullableAttribute(...)] | 0 | 2 | -| System.Text.DecoderFallback System.Text.Decoder.get_Fallback() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.DecoderFallbackBuffer System.Text.Decoder.FallbackBuffer | [NullableAttribute(...)] | 0 | 1 | -| System.Text.DecoderFallbackBuffer System.Text.Decoder.get_FallbackBuffer() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.DecoderFallbackBuffer System.Text.DecoderExceptionFallback.CreateFallbackBuffer() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.DecoderFallbackException | [NullableAttribute(...)] | 0 | 0 | -| System.Text.DecoderFallbackException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.DecoderFallbackException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Text.DecoderReplacementFallback | [NullableAttribute(...)] | 0 | 0 | -| System.Text.DecoderReplacementFallback | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.DecoderReplacementFallbackBuffer | [NullableAttribute(...)] | 0 | 0 | -| System.Text.DecoderReplacementFallbackBuffer | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Encoder System.Text.ASCIIEncoding.GetEncoder() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Encoder System.Text.UTF8Encoding.GetEncoder() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.EncoderFallback | [NullableAttribute(...)] | 0 | 0 | -| System.Text.EncoderFallback | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.EncoderFallback System.Text.Encoder.Fallback | [NullableAttribute(...)] | 0 | 2 | -| System.Text.EncoderFallback System.Text.Encoder.get_Fallback() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.EncoderFallbackBuffer System.Text.Encoder.FallbackBuffer | [NullableAttribute(...)] | 0 | 1 | -| System.Text.EncoderFallbackBuffer System.Text.Encoder.get_FallbackBuffer() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.EncoderFallbackBuffer System.Text.EncoderExceptionFallback.CreateFallbackBuffer() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.EncoderFallbackException | [NullableAttribute(...)] | 0 | 0 | -| System.Text.EncoderFallbackException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.EncoderFallbackException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Text.EncoderReplacementFallback | [NullableAttribute(...)] | 0 | 0 | -| System.Text.EncoderReplacementFallback | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Encoding | [NullableAttribute(...)] | 0 | 0 | -| System.Text.Encoding | [NullableAttribute(...)] | 0 | 1 | -| System.Text.Encoding | [NullableAttribute(...)] | 0 | 2 | -| System.Text.Encoding | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Encoding System.Console.InputEncoding | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Text.Encoding System.Console.InputEncoding | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Text.Encoding System.Console.InputEncoding | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Text.Encoding System.Console.InputEncoding | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Text.Encoding System.Text.Encoding.UTF7 | [ObsoleteAttribute(...)] | 0 | The UTF-7 encoding is insecure and should not be used. Consider using UTF-8 instead. | -| System.Text.Encoding System.Text.EncodingProvider.GetEncoding(System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.EncodingInfo | [NullableAttribute(...)] | 0 | 0 | -| System.Text.EncodingInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.EncodingProvider | [NullableAttribute(...)] | 0 | 0 | -| System.Text.EncodingProvider | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.EncodingProvider System.Text.EncodingInfo.Provider | [NullableAttribute(...)] | 0 | 2 | -| System.Text.NormalizationForm.FormKC | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Text.NormalizationForm.FormKD | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Text.Rune | [DebuggerDisplayAttribute(...)] | 0 | {DebuggerDisplay,nq} | -| System.Text.Rune System.Text.Rune.GetRuneAt(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Rune System.Text.Rune.ToLower(System.Text.Rune,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Rune System.Text.Rune.ToUpper(System.Text.Rune,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Rune System.Text.Rune.op_Explicit(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.SpanLineEnumerator | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Text.SpanLineEnumerator | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Text.SpanLineEnumerator | [ObsoleteAttribute(...)] | 1 | True | -| System.Text.SpanRuneEnumerator | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Text.SpanRuneEnumerator | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Text.SpanRuneEnumerator | [ObsoleteAttribute(...)] | 1 | True | -| System.Text.StringBuilder | [DefaultMemberAttribute(...)] | 0 | Chars | -| System.Text.StringBuilder | [NotNullWhenAttribute(...)] | 0 | True | -| System.Text.StringBuilder | [NullableAttribute(...)] | 0 | 0 | -| System.Text.StringBuilder | [NullableAttribute(...)] | 0 | 2 | -| System.Text.StringBuilder | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.StringBuilder | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.Char*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.ReadOnlyMemory<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.Append(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.StringBuilder System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.StringBuilder System.Text.StringBuilder.AppendFormat(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Text.StringBuilder System.Text.StringBuilder.Insert(System.Int32,System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Text.StringBuilder System.Text.StringBuilder.Insert(System.Int32,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.Insert(System.Int32,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.Insert(System.Int32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder System.Text.StringBuilder.Insert(System.Int32,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Text.StringBuilder.AppendInterpolatedStringHandler | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Text.StringBuilder.AppendInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | | -| System.Text.StringBuilder.AppendInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | [,provider] | -| System.Text.StringBuilder.AppendInterpolatedStringHandler | [NullableAttribute(...)] | 0 | 0 | -| System.Text.StringBuilder.ChunkEnumerator | [NullableContextAttribute(...)] | 0 | 0 | -| System.Text.StringBuilder.ChunkEnumerator System.Text.StringBuilder.ChunkEnumerator.GetEnumerator() | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Text.UTF7Encoding | [NullableAttribute(...)] | 0 | 0 | -| System.Text.UTF7Encoding | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.UTF32Encoding | [NullableAttribute(...)] | 0 | 0 | -| System.Text.UTF32Encoding | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.Unicode.TextSegmentationUtility.Processor`1 | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Text.Unicode.TextSegmentationUtility.Processor`1 | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Text.Unicode.TextSegmentationUtility.Processor`1 | [ObsoleteAttribute(...)] | 1 | True | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | [destination,provider] | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [InterpolatedStringHandlerArgumentAttribute(...)] | 0 | destination | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler | [ObsoleteAttribute(...)] | 1 | True | -| System.Text.UnicodeEncoding | [NullableAttribute(...)] | 0 | 0 | -| System.Text.UnicodeEncoding | [NullableContextAttribute(...)] | 0 | 1 | -| System.Text.ValueStringBuilder | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Text.ValueStringBuilder | [DefaultMemberAttribute(...)] | 0 | Item | -| System.Text.ValueStringBuilder | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Text.ValueStringBuilder | [ObsoleteAttribute(...)] | 1 | True | -| System.Text.ValueUtf8Converter | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.Text.ValueUtf8Converter | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.Text.ValueUtf8Converter | [ObsoleteAttribute(...)] | 1 | True | -| System.ThreadStaticAttribute | [AttributeUsageAttribute(...)] | 0 | 256 | -| System.Threading.AbandonedMutexException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.AbandonedMutexException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.AbandonedMutexException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.ApartmentState System.Threading.Thread.ApartmentState | [ObsoleteAttribute(...)] | 0 | The ApartmentState property has been deprecated. Use GetApartmentState, SetApartmentState or TrySetApartmentState instead. | -| System.Threading.AsyncLocalValueChangedArgs`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.AsyncLocalValueChangedArgs`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.AsyncLocal`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.AsyncLocal`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.CancellationToken | [DebuggerDisplayAttribute(...)] | 0 | IsCancellationRequested = {IsCancellationRequested} | -| System.Threading.CancellationToken | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.CancellationToken | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.CancellationTokenRegistration System.Threading.CancellationToken.Register(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.CancellationTokenRegistration System.Threading.CancellationToken.Register(System.Action,System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.CancellationTokenSource | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.CancellationTokenSource | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.CompressedStack | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.CompressedStack | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.CompressedStack System.Threading.Thread.GetCompressedStack() | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Threading.EventWaitHandle | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.EventWaitHandle | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.EventWaitHandle System.Threading.EventWaitHandle.OpenExisting(System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Threading.ExecutionContext | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.ExecutionContext | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.ExecutionContext System.Threading.ExecutionContext.Capture() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.ExecutionContext System.Threading.Tasks.Task.CapturedContext | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.ExecutionContext System.Threading.Thread.ExecutionContext | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.ExecutionContext System.Threading.Thread.get_ExecutionContext() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.IOCompletionCallback | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.IOCompletionCallback | [NullableAttribute(...)] | 0 | 1 | -| System.Threading.IOCompletionCallback | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.Interlocked | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Interlocked | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.LazyInitializer | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.LazyInitializer | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.LockRecursionException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.LockRecursionException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.LockRecursionException | [TypeForwardedFromAttribute(...)] | 0 | System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.ManualResetEventSlim | [DebuggerDisplayAttribute(...)] | 0 | Set = {IsSet} | -| System.Threading.Monitor | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Monitor | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Mutex | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Mutex | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.Pack(System.Threading.IOCompletionCallback) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.Pack(System.Threading.IOCompletionCallback) | [ObsoleteAttribute(...)] | 0 | This overload is not safe and has been deprecated. Use Pack(IOCompletionCallback?, object?) instead. | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.Pack(System.Threading.IOCompletionCallback,System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.Pack(System.Threading.IOCompletionCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback) | [ObsoleteAttribute(...)] | 0 | This overload is not safe and has been deprecated. Use UnsafePack(IOCompletionCallback?, object?) instead. | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.NativeOverlapped* System.Threading.Overlapped.UnsafePack(System.Threading.IOCompletionCallback,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.NativeOverlapped* System.Threading.ThreadPoolBoundHandle.AllocateNativeOverlapped(System.Threading.IOCompletionCallback,System.Object,System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.NativeOverlapped* System.Threading.ThreadPoolBoundHandle.AllocateNativeOverlapped(System.Threading.IOCompletionCallback,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.NativeOverlapped* System.Threading.ThreadPoolBoundHandle.AllocateNativeOverlapped(System.Threading.PreAllocatedOverlapped) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.NativeOverlapped* System.Threading.ThreadPoolBoundHandle.UnsafeAllocateNativeOverlapped(System.Threading.IOCompletionCallback,System.Object,System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.NativeOverlapped* System.Threading.ThreadPoolBoundHandle.UnsafeAllocateNativeOverlapped(System.Threading.IOCompletionCallback,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Overlapped System.Threading.Overlapped.Unpack(System.Threading.NativeOverlapped*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.PreAllocatedOverlapped | [NullableAttribute(...)] | 0 | 1 | -| System.Threading.PreAllocatedOverlapped System.Threading.PreAllocatedOverlapped.UnsafeCreate(System.Threading.IOCompletionCallback,System.Object,System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.PreAllocatedOverlapped System.Threading.PreAllocatedOverlapped.UnsafeCreate(System.Threading.IOCompletionCallback,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.RegisteredWaitHandle | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.RegisteredWaitHandle | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.RegisteredWaitHandle | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.Int32,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.Int64,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.TimeSpan,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.UInt32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.RegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.UInt32,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.Int32,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.Int64,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.TimeSpan,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.UInt32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Threading.RegisteredWaitHandle System.Threading.ThreadPool.UnsafeRegisterWaitForSingleObject(System.Threading.WaitHandle,System.Threading.WaitOrTimerCallback,System.Object,System.UInt32,System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Threading.Semaphore | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Semaphore | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Semaphore System.Threading.Semaphore.OpenExisting(System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Threading.SemaphoreFullException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.SemaphoreFullException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.SemaphoreFullException | [TypeForwardedFromAttribute(...)] | 0 | System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.SemaphoreSlim | [DebuggerDisplayAttribute(...)] | 0 | Current Count = {m_currentCount} | -| System.Threading.SemaphoreSlim | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.SemaphoreSlim | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.SemaphoreSlim System.IO.Stream.EnsureAsyncActiveSemaphoreInitialized() | [MemberNotNullAttribute(...)] | 0 | _asyncActiveSemaphore | -| System.Threading.SpinLock | [DebuggerDisplayAttribute(...)] | 0 | IsHeld = {IsHeld} | -| System.Threading.SpinLock | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.SpinLock.SystemThreading_SpinLockDebugView | -| System.Threading.SpinWait | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.SpinWait | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.SynchronizationContext | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.SynchronizationContext | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.SynchronizationContext System.Threading.SynchronizationContext.Current | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.SynchronizationContext System.Threading.SynchronizationContext.get_Current() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.SynchronizationLockException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.SynchronizationLockException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.SynchronizationLockException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair | [DebuggerDisplayAttribute(...)] | 0 | Concurrent = {ConcurrentTaskCountForDebugger}, Exclusive = {ExclusiveTaskCountForDebugger}, Mode = {ModeForDebugger} | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.DebugView | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ConcurrentExclusiveTaskScheduler | [DebuggerDisplayAttribute(...)] | 0 | Count = {CountForDebugger}, MaxConcurrencyLevel = {m_maxConcurrencyLevel}, Id = {Id} | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ConcurrentExclusiveTaskScheduler | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ConcurrentExclusiveTaskScheduler.DebugView | -| System.Threading.Tasks.Sources.IValueTaskSource | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Sources.IValueTaskSource`1 | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.Task | [DebuggerDisplayAttribute(...)] | 0 | Id = {Id}, Status = {Status}, Method = {DebuggerDisplayMethodDescription} | -| System.Threading.Tasks.Task | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.Tasks.SystemThreadingTasks_TaskDebugView | -| System.Threading.Tasks.Task | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.OutputTabsAsync() | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<OutputTabsAsync>d__23 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteAsync(System.Char) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__37 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteAsync(System.Char[],System.Int32,System.Int32) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__38 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__40 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteAsync(System.String) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__39 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteAsync(System.Text.StringBuilder,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteAsync>d__41 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteLineAsync() | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__59 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteLineAsync(System.Char) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__60 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteLineAsync(System.Char[],System.Int32,System.Int32) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__61 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteLineAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__63 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteLineAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteLineAsync(System.String) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__62 | -| System.Threading.Tasks.Task System.CodeDom.Compiler.IndentedTextWriter.WriteLineAsync(System.Text.StringBuilder,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.CodeDom.Compiler.IndentedTextWriter.<WriteLineAsync>d__64 | -| System.Threading.Tasks.Task System.IO.BufferedStream.CopyToAsyncCore(System.IO.Stream,System.Int32,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.BufferedStream.<CopyToAsyncCore>d__68 | -| System.Threading.Tasks.Task System.IO.BufferedStream.FlushAsyncInternal(System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.BufferedStream.<FlushAsyncInternal>d__36 | -| System.Threading.Tasks.Task System.IO.File.<WriteAllBytesAsync>g__Core\|92_0(System.String,System.Byte[],System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.File.<<WriteAllBytesAsync>g__Core\|92_0>d | -| System.Threading.Tasks.Task System.IO.File.InternalWriteAllLinesAsync(System.IO.StreamWriter,System.Collections.Generic.IEnumerable<System.String>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.File.<InternalWriteAllLinesAsync>d__98 | -| System.Threading.Tasks.Task System.IO.File.WriteToFileAsync(System.String,System.IO.FileMode,System.String,System.Text.Encoding,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.File.<WriteToFileAsync>d__108 | -| System.Threading.Tasks.Task System.IO.Strategies.BufferedFileStreamStrategy.CopyToAsyncCore(System.IO.Stream,System.Int32,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Strategies.BufferedFileStreamStrategy.<CopyToAsyncCore>d__57 | -| System.Threading.Tasks.Task System.IO.Strategies.BufferedFileStreamStrategy.FlushAsyncInternal(System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Strategies.BufferedFileStreamStrategy.<FlushAsyncInternal>d__55 | -| System.Threading.Tasks.Task System.IO.Stream.<CopyToAsync>g__Core\|27_0(System.IO.Stream,System.IO.Stream,System.Int32,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Stream.<<CopyToAsync>g__Core\|27_0>d | -| System.Threading.Tasks.Task System.IO.Stream.FinishWriteAsync(System.Threading.Tasks.Task,System.Byte[]) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Stream.<FinishWriteAsync>d__61 | -| System.Threading.Tasks.Task System.IO.StreamWriter.<FlushAsyncInternal>g__Core\|76_0(System.Boolean,System.Boolean,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamWriter.<<FlushAsyncInternal>g__Core\|76_0>d | -| System.Threading.Tasks.Task System.IO.StreamWriter.WriteAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.IO.StreamWriter.WriteAsyncInternal(System.Char,System.Boolean) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamWriter.<WriteAsyncInternal>d__64 | -| System.Threading.Tasks.Task System.IO.StreamWriter.WriteAsyncInternal(System.ReadOnlyMemory<System.Char>,System.Boolean,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamWriter.<WriteAsyncInternal>d__68 | -| System.Threading.Tasks.Task System.IO.StreamWriter.WriteLineAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.IO.StringWriter.WriteAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.IO.StringWriter.WriteLineAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.IO.TextWriter.<WriteAsync>g__WriteAsyncCore\|60_0(System.Text.StringBuilder,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.TextWriter.<<WriteAsync>g__WriteAsyncCore\|60_0>d | -| System.Threading.Tasks.Task System.IO.TextWriter.<WriteLineAsync>g__WriteLineAsyncCore\|66_0(System.Text.StringBuilder,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.TextWriter.<<WriteLineAsync>g__WriteLineAsyncCore\|66_0>d | -| System.Threading.Tasks.Task System.IO.TextWriter.WriteAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.IO.TextWriter.WriteLineAsync(System.ReadOnlyMemory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task System.IO.UnmanagedMemoryStream.FlushAsync(System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.Task System.IO.UnmanagedMemoryStream.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.Task System.Threading.Tasks.Task.InternalCurrent | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task System.Threading.Tasks.Task.ParentForDebugger | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.Task.ContinueWith`1(System.Func<!0,System.Object,System.Threading.Tasks.Task>,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.Task.ContinueWith`1(System.Func<!0,System.Object,System.Threading.Tasks.Task>,System.Object,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.Task.ContinueWith`1(System.Func<!0,System.Object,System.Threading.Tasks.Task>,System.Object,System.Threading.Tasks.TaskContinuationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.TaskFactory.StartNew`1(System.Func<!0,System.Object>,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.TaskFactory.StartNew`1(System.Func<!0,System.Object>,System.Object,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.TaskFactory.StartNew`1(System.Func<!0,System.Object>,System.Object,System.Threading.Tasks.TaskCreationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.Task`1.ContinueWith`1(System.Func<!0,System.Object,System.Threading.Tasks.Task<!0>>,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.Task`1.ContinueWith`1(System.Func<!0,System.Object,System.Threading.Tasks.Task<!0>>,System.Object,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<!0> System.Threading.Tasks.Task`1.ContinueWith`1(System.Func<!0,System.Object,System.Threading.Tasks.Task<!0>>,System.Object,System.Threading.Tasks.TaskContinuationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.Task<System.Boolean> System.Threading.SemaphoreSlim.WaitUntilCountOrTimeoutAsync(System.Threading.SemaphoreSlim.TaskNode,System.Int32,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.Threading.SemaphoreSlim.<WaitUntilCountOrTimeoutAsync>d__31 | -| System.Threading.Tasks.Task<System.Byte[]> System.IO.File.InternalReadAllBytesAsync(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Int32,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.File.<InternalReadAllBytesAsync>d__90 | -| System.Threading.Tasks.Task<System.Byte[]> System.IO.File.InternalReadAllBytesUnknownLengthAsync(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.File.<InternalReadAllBytesUnknownLengthAsync>d__91 | -| System.Threading.Tasks.Task<System.Int32> System.IO.UnmanagedMemoryStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.Task<System.String> System.IO.File.InternalReadAllTextAsync(System.String,System.Text.Encoding,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.File.<InternalReadAllTextAsync>d__86 | -| System.Threading.Tasks.Task<System.String> System.IO.StreamReader.ReadLineAsyncInternal(System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamReader.<ReadLineAsyncInternal>d__63 | -| System.Threading.Tasks.Task<System.String> System.IO.StreamReader.ReadToEndAsyncInternal(System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamReader.<ReadToEndAsyncInternal>d__66 | -| System.Threading.Tasks.Task<System.String> System.IO.TextReader.ReadToEndAsync(System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.TextReader.<ReadToEndAsync>d__17 | -| System.Threading.Tasks.Task<System.String[]> System.IO.File.InternalReadAllLinesAsync(System.String,System.Text.Encoding,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.File.<InternalReadAllLinesAsync>d__95 | -| System.Threading.Tasks.TaskAsyncEnumerableExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskAsyncEnumerableExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TaskCanceledException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskCanceledException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskCanceledException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.Tasks.TaskCompletionSource | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskCompletionSource | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TaskCompletionSource`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskCompletionSource`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TaskExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TaskFactory | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskFactory | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TaskFactory`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskFactory`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TaskScheduler | [DebuggerDisplayAttribute(...)] | 0 | Id = {Id} | -| System.Threading.Tasks.TaskScheduler | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.Tasks.TaskScheduler.SystemThreadingTasks_TaskSchedulerDebugView | -| System.Threading.Tasks.TaskScheduler | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskScheduler | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TaskScheduler System.Threading.Tasks.Task.ExecutingTaskScheduler | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskScheduler System.Threading.Tasks.TaskFactory.Scheduler | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskScheduler System.Threading.Tasks.TaskFactory.get_Scheduler() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskScheduler System.Threading.Tasks.TaskFactory`1.Scheduler | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskScheduler System.Threading.Tasks.TaskFactory`1.get_Scheduler() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskScheduler System.Threading.Tasks.TaskScheduler.InternalCurrent | [NullableAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskScheduler.UnobservedTaskException | [NullableAttribute(...)] | 0 | [2,1] | -| System.Threading.Tasks.TaskSchedulerException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskSchedulerException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.TaskSchedulerException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.Tasks.TaskToAsyncResult | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.TaskToAsyncResult | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.Task`1 | [DebuggerDisplayAttribute(...)] | 0 | Id = {Id}, Status = {Status}, Method = {DebuggerDisplayMethodDescription}, Result = {DebuggerDisplayResultDescription} | -| System.Threading.Tasks.Task`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.Tasks.SystemThreadingTasks_FutureDebugView`1 | -| System.Threading.Tasks.Task`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.Task`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.TplEventSource | [GeneratedCodeAttribute(...)] | 0 | System.Private.CoreLib.Generators | -| System.Threading.Tasks.TplEventSource | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Threading.Tasks.UnobservedTaskExceptionEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.UnobservedTaskExceptionEventArgs | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.ValueTask | [AsyncMethodBuilderAttribute(...)] | 0 | System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder | -| System.Threading.Tasks.ValueTask | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.ValueTask System.IO.BufferedStream.DisposeAsync() | [AsyncStateMachineAttribute(...)] | 0 | System.IO.BufferedStream.<DisposeAsync>d__33 | -| System.Threading.Tasks.ValueTask System.IO.BufferedStream.FlushWriteAsync(System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.BufferedStream.<FlushWriteAsync>d__40 | -| System.Threading.Tasks.ValueTask System.IO.BufferedStream.WriteAsync(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask System.IO.BufferedStream.WriteToUnderlyingStreamAsync(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken,System.Threading.Tasks.Task) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.BufferedStream.<WriteToUnderlyingStreamAsync>d__59 | -| System.Threading.Tasks.ValueTask System.IO.FileStream.DisposeAsync() | [AsyncStateMachineAttribute(...)] | 0 | System.IO.FileStream.<DisposeAsync>d__57 | -| System.Threading.Tasks.ValueTask System.IO.FileStream.WriteAsync(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask System.IO.MemoryStream.WriteAsync(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask System.IO.RandomAccess.WriteAsync(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList<System.ReadOnlyMemory<System.Byte>>,System.Int64,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Tasks.ValueTask System.IO.Strategies.BufferedFileStreamStrategy.DisposeAsync() | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Strategies.BufferedFileStreamStrategy.<DisposeAsync>d__27 | -| System.Threading.Tasks.ValueTask System.IO.Strategies.BufferedFileStreamStrategy.WriteAsyncSlowPath(System.Threading.Tasks.Task,System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [AsyncMethodBuilderAttribute(...)] | 0 | System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder | -| System.Threading.Tasks.ValueTask System.IO.Strategies.BufferedFileStreamStrategy.WriteAsyncSlowPath(System.Threading.Tasks.Task,System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Strategies.BufferedFileStreamStrategy.<WriteAsyncSlowPath>d__48 | -| System.Threading.Tasks.ValueTask System.IO.Strategies.BufferedFileStreamStrategy.WriteToNonSeekableAsync(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Strategies.BufferedFileStreamStrategy.<WriteToNonSeekableAsync>d__47 | -| System.Threading.Tasks.ValueTask System.IO.Stream.ReadExactlyAsync(System.Memory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask System.IO.Stream.WriteAsync(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask System.IO.StreamWriter.DisposeAsyncCore() | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamWriter.<DisposeAsyncCore>d__36 | -| System.Threading.Tasks.ValueTask System.Text.TranscodingStream.<DisposeAsync>g__DisposeAsyncCore\|30_0(System.ArraySegment<System.Byte>) | [AsyncStateMachineAttribute(...)] | 0 | System.Text.TranscodingStream.<<DisposeAsync>g__DisposeAsyncCore\|30_0>d | -| System.Threading.Tasks.ValueTask System.Text.TranscodingStream.<WriteAsync>g__WriteAsyncCore\|50_0(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.Text.TranscodingStream.<<WriteAsync>g__WriteAsyncCore\|50_0>d | -| System.Threading.Tasks.ValueTask System.Threading.CancellationTokenSource.Registrations.WaitForCallbackToCompleteAsync(System.Int64) | [AsyncStateMachineAttribute(...)] | 0 | System.Threading.CancellationTokenSource.Registrations.<WaitForCallbackToCompleteAsync>d__12 | -| System.Threading.Tasks.ValueTask<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.Threading.Tasks.ValueTask<!0> System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Task | [NullableAttribute(...)] | 0 | [0,1] | -| System.Threading.Tasks.ValueTask<!0> System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.Task | [NullableAttribute(...)] | 0 | [0,1] | -| System.Threading.Tasks.ValueTask<!0> System.Threading.Tasks.ValueTask.FromCanceled`1(System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.BufferedStream.ReadAsync(System.Memory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.BufferedStream.ReadFromUnderlyingStreamAsync(System.Memory<System.Byte>,System.Threading.CancellationToken,System.Int32,System.Threading.Tasks.Task) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.BufferedStream.<ReadFromUnderlyingStreamAsync>d__48 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.FileStream.ReadAsync(System.Memory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.MemoryStream.ReadAsync(System.Memory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Strategies.BufferedFileStreamStrategy.ReadAsyncSlowPath(System.Threading.Tasks.Task,System.Memory<System.Byte>,System.Threading.CancellationToken) | [AsyncMethodBuilderAttribute(...)] | 0 | System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Strategies.BufferedFileStreamStrategy.ReadAsyncSlowPath(System.Threading.Tasks.Task,System.Memory<System.Byte>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Strategies.BufferedFileStreamStrategy.<ReadAsyncSlowPath>d__37 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Strategies.BufferedFileStreamStrategy.ReadFromNonSeekableAsync(System.Memory<System.Byte>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Strategies.BufferedFileStreamStrategy.<ReadFromNonSeekableAsync>d__36 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Stream.<ReadAsync>g__FinishReadAsync\|42_0(System.Threading.Tasks.Task<System.Int32>,System.Byte[],System.Memory<System.Byte>) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Stream.<<ReadAsync>g__FinishReadAsync\|42_0>d | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Stream.ReadAsync(System.Memory<System.Byte>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Stream.ReadAtLeastAsync(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Stream.ReadAtLeastAsyncCore(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken) | [AsyncMethodBuilderAttribute(...)] | 0 | System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.Stream.ReadAtLeastAsyncCore(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.Stream.<ReadAtLeastAsyncCore>d__46 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.StreamReader.ReadAsync(System.Memory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.StreamReader.ReadAsyncInternal(System.Memory<System.Char>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamReader.<ReadAsyncInternal>d__69 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.StreamReader.ReadBlockAsync(System.Memory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.StreamReader.ReadBufferAsync(System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.StreamReader.<ReadBufferAsync>d__72 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.StringReader.ReadAsync(System.Memory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.StringReader.ReadBlockAsync(System.Memory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.TextReader.ReadAsync(System.Memory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.TextReader.ReadBlockAsync(System.Memory<System.Char>,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask<System.Int32> System.IO.TextReader.ReadBlockAsyncInternal(System.Memory<System.Char>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.IO.TextReader.<ReadBlockAsyncInternal>d__23 | -| System.Threading.Tasks.ValueTask<System.Int32> System.Text.TranscodingStream.<ReadAsync>g__ReadAsyncCore\|41_0(System.Memory<System.Byte>,System.Threading.CancellationToken) | [AsyncStateMachineAttribute(...)] | 0 | System.Text.TranscodingStream.<<ReadAsync>g__ReadAsyncCore\|41_0>d | -| System.Threading.Tasks.ValueTask`1 | [AsyncMethodBuilderAttribute(...)] | 0 | System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1 | -| System.Threading.Tasks.ValueTask`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Tasks.ValueTask`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.Thread | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Thread | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.ThreadAbortException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.ThreadAbortException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.ThreadAbortException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.ThreadExceptionEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.ThreadExceptionEventArgs | [NullableAttribute(...)] | 0 | 1 | -| System.Threading.ThreadExceptionEventArgs | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.ThreadInterruptedException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.ThreadInterruptedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.ThreadInterruptedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.ThreadLocal<System.Object> System.LocalDataStoreSlot.Data | [NullableAttribute(...)] | 0 | [1,2] | -| System.Threading.ThreadLocal`1 | [DebuggerDisplayAttribute(...)] | 0 | IsValueCreated = {IsValueCreated}, Value = {ValueForDebugDisplay}, Count = {ValuesCountForDebugDisplay} | -| System.Threading.ThreadLocal`1 | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.SystemThreading_ThreadLocalDebugView`1 | -| System.Threading.ThreadLocal`1 | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.ThreadLocal`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.ThreadPool | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.ThreadPool | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.ThreadPoolBoundHandle System.Threading.ThreadPoolBoundHandle.BindHandle(System.Runtime.InteropServices.SafeHandle) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.ThreadStartException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.ThreadStateException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.ThreadStateException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.ThreadStateException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.Timer | [DebuggerDisplayAttribute(...)] | 0 | {DisplayString,nq} | -| System.Threading.Timer | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.TimerQueueTimer.TimerDebuggerTypeProxy | -| System.Threading.Timer | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Timer | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.TimerQueue | [DebuggerDisplayAttribute(...)] | 0 | Count = {CountForDebugger} | -| System.Threading.TimerQueue | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.TimerQueue.TimerQueueDebuggerTypeProxy | -| System.Threading.TimerQueue.s_tickCountToTimeMap | [TupleElementNamesAttribute(...)] | 0 | [TickCount,Time] | -| System.Threading.TimerQueueTimer | [DebuggerDisplayAttribute(...)] | 0 | {DisplayString,nq} | -| System.Threading.TimerQueueTimer | [DebuggerTypeProxyAttribute(...)] | 0 | System.Threading.TimerQueueTimer.TimerDebuggerTypeProxy | -| System.Threading.TimerQueueTimer[] System.Threading.TimerQueue.TimerQueueDebuggerTypeProxy.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| System.Threading.Volatile | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.Volatile | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.WaitHandle | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.WaitHandle | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.WaitHandle System.IO.Stream.CreateWaitHandle() | [ObsoleteAttribute(...)] | 0 | CreateWaitHandle has been deprecated. Use the ManualResetEvent(false) constructor instead. | -| System.Threading.WaitHandle System.Threading.CancellationToken.WaitHandle | [NullableAttribute(...)] | 0 | 1 | -| System.Threading.WaitHandle System.Threading.CancellationToken.get_WaitHandle() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.WaitHandle System.Threading.ManualResetEventSlim.WaitHandle | [NullableAttribute(...)] | 0 | 1 | -| System.Threading.WaitHandle System.Threading.ManualResetEventSlim.get_WaitHandle() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Threading.WaitHandleCannotBeOpenedException | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.WaitHandleCannotBeOpenedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.Threading.WaitHandleCannotBeOpenedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Threading.WaitHandleExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.Threading.WaitHandleExtensions | [NullableContextAttribute(...)] | 0 | 1 | -| System.ThreeObjects | [InlineArrayAttribute(...)] | 0 | 3 | -| System.TimeOnly System.TimeOnly.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeOnly System.TimeOnly.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeOnly System.TimeOnly.Parse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeOnly System.TimeOnly.ParseExact(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeOnly System.TimeOnly.ParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeOnly System.TimeOnly.ParseExact(System.String,System.String[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeOnly System.TimeOnly.ParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeProvider | [NullableAttribute(...)] | 0 | 0 | -| System.TimeProvider | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeSpan System.TimeSpan.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeSpan System.TimeSpan.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeSpan System.TimeSpan.ParseExact(System.String,System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeSpan System.TimeSpan.ParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.TimeSpanStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeSpan System.TimeSpan.ParseExact(System.String,System.String[],System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeSpan System.TimeSpan.ParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.TimeSpanStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeZone | [NullableAttribute(...)] | 0 | 0 | -| System.TimeZone | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeZone | [ObsoleteAttribute(...)] | 0 | System.TimeZone has been deprecated. Investigate the use of System.TimeZoneInfo instead. | -| System.TimeZoneInfo | [NotNullWhenAttribute(...)] | 0 | True | -| System.TimeZoneInfo | [NullableAttribute(...)] | 0 | 0 | -| System.TimeZoneInfo | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeZoneInfo | [TypeForwardedFromAttribute(...)] | 0 | System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.TimeZoneInfo System.TimeZoneInfo.CreateCustomTimeZone(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo.AdjustmentRule[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.TimeZoneInfo System.TimeZoneInfo.CreateCustomTimeZone(System.String,System.TimeSpan,System.String,System.String,System.String,System.TimeZoneInfo.AdjustmentRule[],System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.TimeZoneInfo.AdjustmentRule | [NotNullWhenAttribute(...)] | 0 | True | -| System.TimeZoneInfo.AdjustmentRule | [NullableContextAttribute(...)] | 0 | 0 | -| System.TimeZoneInfo.AdjustmentRule System.TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo.TransitionTime,System.TimeZoneInfo.TransitionTime) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeZoneInfo.AdjustmentRule System.TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(System.DateTime,System.DateTime,System.TimeSpan,System.TimeZoneInfo.TransitionTime,System.TimeZoneInfo.TransitionTime,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TimeZoneInfo.AdjustmentRule[] | [NullableAttribute(...)] | 0 | [2,1] | -| System.TimeZoneInfo.TransitionTime | [NullableContextAttribute(...)] | 0 | 0 | -| System.TimeZoneNotFoundException | [NullableAttribute(...)] | 0 | 0 | -| System.TimeZoneNotFoundException | [NullableContextAttribute(...)] | 0 | 2 | -| System.TimeZoneNotFoundException | [TypeForwardedFromAttribute(...)] | 0 | System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.TimeoutException | [NullableAttribute(...)] | 0 | 0 | -| System.TimeoutException | [NullableContextAttribute(...)] | 0 | 2 | -| System.TimeoutException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple | [NullableAttribute(...)] | 0 | 0 | -| System.Tuple | [NullableContextAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8,!9>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!7,!8,!9>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!7,!8,!9>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!7,!8,!9>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19,!20>>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19>>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18>>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17>>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16>>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15>>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14>>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9>> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5,!6> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4,!5> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3,!4> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2,!3> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1,!2> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0,!1> | [NullableAttribute(...)] | 0 | 1 | -| System.Tuple<!0> System.TupleExtensions.ToTuple`1(System.ValueTuple<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TupleExtensions | [NullableAttribute(...)] | 0 | 0 | -| System.TupleExtensions | [NullableContextAttribute(...)] | 0 | 2 | -| System.Tuple`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple`2 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple`3 | [NullableAttribute(...)] | 0 | 0 | -| System.Tuple`3 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Tuple`3 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple`4 | [NullableAttribute(...)] | 0 | 0 | -| System.Tuple`4 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Tuple`4 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple`5 | [NullableAttribute(...)] | 0 | 0 | -| System.Tuple`5 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Tuple`5 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple`6 | [NullableAttribute(...)] | 0 | 0 | -| System.Tuple`6 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Tuple`6 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple`7 | [NullableAttribute(...)] | 0 | 0 | -| System.Tuple`7 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Tuple`7 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Tuple`8 | [NullableAttribute(...)] | 0 | 0 | -| System.Tuple`8 | [NullableContextAttribute(...)] | 0 | 1 | -| System.Tuple`8 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.TwoObjects | [InlineArrayAttribute(...)] | 0 | 2 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 3 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 32 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 96 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 512 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 515 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 1536 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2048 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2607 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 6144 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| System.Type | [NotNullWhenAttribute(...)] | 0 | True | -| System.Type | [NullableAttribute(...)] | 0 | 0 | -| System.Type | [NullableAttribute(...)] | 0 | 1 | -| System.Type | [NullableAttribute(...)] | 0 | 2 | -| System.Type | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type System.Exception.GetType() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type System.Nullable.GetUnderlyingType(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type System.Object.GetType() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type System.Reflection.Assembly.GetType(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Assembly.GetType(System.String,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Assembly.GetType(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Emit.DynamicMethod.DeclaringType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.Emit.DynamicMethod.ReflectedType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.Emit.DynamicMethod.get_DeclaringType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.Emit.DynamicMethod.get_ReflectedType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.Emit.EnumBuilder.MakeArrayType() | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.Emit.EnumBuilder.MakeArrayType(System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.Emit.RuntimeAssemblyBuilder.GetType(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Emit.RuntimeEnumBuilder.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.Emit.RuntimeEnumBuilder.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.MakeArrayType() | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.MakeArrayType(System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.MakeGenericType(System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for this instantiation might not be available at runtime. | -| System.Type System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.MakeGenericType(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Type System.Reflection.Emit.RuntimeModuleBuilder.GetType(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Emit.RuntimeModuleBuilder.GetType(System.String,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Emit.RuntimeModuleBuilder.GetType(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Emit.RuntimeModuleBuilder.GetTypeNoLock(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Emit.RuntimeModuleBuilder.ResolveType(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Type System.Reflection.Emit.RuntimeTypeBuilder.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.Emit.RuntimeTypeBuilder.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.Emit.SymbolType.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.Emit.SymbolType.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.Emit.TypeBuilder.MakeArrayType() | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.Emit.TypeBuilder.MakeArrayType(System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.Emit.TypeBuilder.MakeGenericType(System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for this instantiation might not be available at runtime. | -| System.Type System.Reflection.Emit.TypeBuilder.MakeGenericType(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Type System.Reflection.Emit.TypeBuilderInstantiation.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.Emit.TypeBuilderInstantiation.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.Emit.TypeBuilderInstantiation.MakeGenericType(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Type System.Reflection.Emit.TypeBuilderInstantiation.Substitute(System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.Reflection.Emit.TypeBuilderInstantiation.Substitute(System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2055:UnrecognizedReflectionPattern | -| System.Type System.Reflection.MemberInfo.DeclaringType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.MemberInfo.ReflectedType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.MemberInfo.get_DeclaringType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.MemberInfo.get_ReflectedType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.Metadata.MetadataUpdateHandlerAttribute.HandlerType | [DynamicallyAccessedMembersAttribute(...)] | 0 | 24 | -| System.Type System.Reflection.ModifiedType.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.ModifiedType.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.Module.GetType(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Module.GetType(System.String,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Module.GetType(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.Module.ResolveType(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Type System.Reflection.Module.ResolveType(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Type System.Reflection.PropertyInfo.GetModifiedPropertyType() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type System.Reflection.PropertyInfo.PropertyType | [NullableAttribute(...)] | 0 | 1 | -| System.Type System.Reflection.PropertyInfo.get_PropertyType() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type System.Reflection.RuntimeAssembly.GetType(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.RuntimeExceptionHandlingClause.get_CatchType() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.Reflection.RuntimeExceptionHandlingClause.get_CatchType() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Type System.Reflection.RuntimeModule.GetType(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type System.Reflection.RuntimeModule.ResolveType(System.Int32,System.Type[],System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimming changes metadata tokens | -| System.Type System.Reflection.SignatureType.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.SignatureType.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.SignatureType.MakeArrayType() | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.SignatureType.MakeArrayType(System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Reflection.SignatureType.MakeGenericType(System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for this instantiation might not be available at runtime. | -| System.Type System.Reflection.SignatureType.MakeGenericType(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeArrayType(System.Type,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeGenericType(System.Type,System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | Wrapper around MakeGenericType which itself has RequiresDynamicCode | -| System.Type System.Reflection.SignatureTypeExtensions.TryMakeGenericType(System.Type,System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Wrapper around MakeGenericType which itself has RequiresUnreferencedCode | -| System.Type System.Reflection.SignatureTypeExtensions.TryResolve(System.Reflection.SignatureType,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Type System.Reflection.SignatureTypeExtensions.TryResolve(System.Reflection.SignatureType,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.Reflection.SignatureTypeExtensions.TryResolve(System.Reflection.SignatureType,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Type System.Reflection.SignatureTypeExtensions.TryResolve(System.Reflection.SignatureType,System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Type System.Reflection.TypeDelegator.BaseType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.TypeDelegator.GetElementType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.TypeDelegator.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Reflection.TypeDelegator.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Reflection.TypeDelegator.get_BaseType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Reflection.TypeNameParser.GenericTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Type System.Reflection.TypeNameParser.GenericTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.Reflection.TypeNameParser.GenericTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2055:UnrecognizedReflectionPattern | -| System.Type System.Reflection.TypeNameParser.GenericTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Type System.Reflection.TypeNameParser.GetType(System.String,System.Boolean,System.Boolean,System.Reflection.Assembly) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Reflection.TypeNameParser.GetType(System.String,System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName>,System.Func<System.Boolean,System.Reflection.Assembly,System.String,System.Type>,System.Reflection.Assembly,System.Boolean,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Reflection.TypeNameParser.GetType(System.String,System.ReadOnlySpan<System.String>,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.Reflection.TypeNameParser.GetType(System.String,System.ReadOnlySpan<System.String>,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Type System.Reflection.TypeNameParser.GetType(System.String,System.ReadOnlySpan<System.String>,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Type System.Reflection.TypeNameParser.GetType(System.String,System.Reflection.Assembly,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Reflection.TypeNameParser.ModifierTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Type System.Reflection.TypeNameParser.ModifierTypeName.ResolveType(System.Reflection.TypeNameParser,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Type System.Resources.ResourceManager.ResourceManagerMediator.UserResourceSet | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Type System.Resources.ResourceManager.ResourceSetType | [DynamicallyAccessedMembersAttribute(...)] | 0 | 7 | -| System.Type System.Resources.ResourceReader.<FindType>g__UseReflectionToGetTypeLocal\|52_0(System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.Resources.ResourceReader.<FindType>g__UseReflectionToGetTypeLocal\|52_0(System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Type System.Resources.ResourceReader.UseReflectionToGetType(System.Int32) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The CustomResourceTypesSupport feature switch has been enabled for this app which is being trimmed. Custom readers as well as custom objects on the resources file are not observable by the trimmer and so required assemblies, types and members may be removed. | -| System.Type System.Runtime.InteropServices.ComEventInterfaceAttribute.EventProvider | [DynamicallyAccessedMembersAttribute(...)] | 0 | 2607 | -| System.Type System.Runtime.InteropServices.ComEventInterfaceAttribute.SourceInterface | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8 | -| System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.NativeType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute.get_NativeType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.RuntimeType.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.RuntimeType.GetInterface(System.String,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.RuntimeType.GetInterface(System.String,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2063:UnrecognizedReflectionPattern | -| System.Type System.RuntimeType.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.RuntimeType.MakeGenericType(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Type System.Type.BaseType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Type.DeclaringType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetElementType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetEnumUnderlyingType() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type System.Type.GetEnumUnderlyingType() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2085:UnrecognizedReflectionPattern | -| System.Type System.Type.GetInterface(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Type.GetInterface(System.String,System.Boolean) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type System.Type.GetNestedType(System.String) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 128 | -| System.Type System.Type.GetNestedType(System.String,System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type System.Type.GetType(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Type.GetType(System.String,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Type.GetType(System.String,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Type.GetType(System.String,System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName>,System.Func<System.Boolean,System.Reflection.Assembly,System.String,System.Type>) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Type.GetType(System.String,System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName>,System.Func<System.Boolean,System.Reflection.Assembly,System.String,System.Type>,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Type.GetType(System.String,System.Func<System.Reflection.Assembly,System.Reflection.AssemblyName>,System.Func<System.Boolean,System.Reflection.Assembly,System.String,System.Type>,System.Boolean,System.Boolean) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The type might be removed | -| System.Type System.Type.GetTypeFromCLSID(System.Guid) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetTypeFromCLSID(System.Guid) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.GetTypeFromCLSID(System.Guid,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetTypeFromCLSID(System.Guid,System.Boolean) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.GetTypeFromCLSID(System.Guid,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetTypeFromCLSID(System.Guid,System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.GetTypeFromCLSID(System.Guid,System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetTypeFromCLSID(System.Guid,System.String,System.Boolean) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.GetTypeFromHandle(System.RuntimeTypeHandle) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetTypeFromProgID(System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.GetTypeFromProgID(System.String,System.Boolean) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.GetTypeFromProgID(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetTypeFromProgID(System.String,System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.GetTypeFromProgID(System.String,System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.GetTypeFromProgID(System.String,System.String,System.Boolean) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Type System.Type.MakeArrayType() | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Type.MakeArrayType(System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | The code for an array of the specified type might not be available. | -| System.Type System.Type.MakeGenericType(System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | The native code for this instantiation might not be available at runtime. | -| System.Type System.Type.MakeGenericType(System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met. | -| System.Type System.Type.ReflectedType | [NullableAttribute(...)] | 0 | 2 | -| System.Type System.Type.ReflectionOnlyGetType(System.String,System.Boolean,System.Boolean) | [ObsoleteAttribute(...)] | 0 | ReflectionOnly loading is not supported and throws PlatformNotSupportedException. | -| System.Type System.Type.get_BaseType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.get_DeclaringType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.Type.get_ReflectedType() | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type System.TypedReference.GetTargetType(System.TypedReference) | [NullableContextAttribute(...)] | 0 | 1 | -| System.TypeAccessException | [NullableAttribute(...)] | 0 | 0 | -| System.TypeAccessException | [NullableContextAttribute(...)] | 0 | 2 | -| System.TypeAccessException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.TypeCode System.Type.GetTypeCode(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.TypeInitializationException | [NullableAttribute(...)] | 0 | 0 | -| System.TypeInitializationException | [NullableContextAttribute(...)] | 0 | 1 | -| System.TypeInitializationException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.TypeLoadException | [NullableAttribute(...)] | 0 | 0 | -| System.TypeLoadException | [NullableContextAttribute(...)] | 0 | 1 | -| System.TypeLoadException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.TypeUnloadedException | [NullableAttribute(...)] | 0 | 0 | -| System.TypeUnloadedException | [NullableContextAttribute(...)] | 0 | 2 | -| System.TypeUnloadedException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Type[] | [NotNullWhenAttribute(...)] | 0 | False | -| System.Type[] | [NullableAttribute(...)] | 0 | 1 | -| System.Type[] | [NullableAttribute(...)] | 0 | [2,1] | -| System.Type[] System.Reflection.Assembly.GetExportedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.Assembly.GetForwardedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.Assembly.GetTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.Emit.AssemblyBuilder.GetExportedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.Emit.RuntimeEnumBuilder.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.Emit.RuntimeEnumBuilder.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.Emit.RuntimeGenericTypeParameterBuilder.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.Emit.RuntimeModuleBuilder.GetTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.Emit.RuntimeTypeBuilder.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.Emit.RuntimeTypeBuilder.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.Emit.SymbolType.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.Emit.SymbolType.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.Emit.TypeBuilderInstantiation.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.Emit.TypeBuilderInstantiation.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.MethodBase.GetGenericArguments() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type[] System.Reflection.ModifiedType.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.ModifiedType.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.Module.FindTypes(System.Reflection.TypeFilter,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Type[] System.Reflection.Module.FindTypes(System.Reflection.TypeFilter,System.Object) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.Module.GetTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.PropertyInfo.GetOptionalCustomModifiers() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type[] System.Reflection.PropertyInfo.GetRequiredCustomModifiers() | [NullableContextAttribute(...)] | 0 | 1 | -| System.Type[] System.Reflection.ReflectionTypeLoadException.Types | [NullableAttribute(...)] | 0 | [1,2] | -| System.Type[] System.Reflection.RuntimeAssembly.GetExportedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.RuntimeAssembly.GetForwardedTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.RuntimeModule.GetTypes() | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed | -| System.Type[] System.Reflection.SignatureType.FindInterfaces(System.Reflection.TypeFilter,System.Object) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.SignatureType.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.SignatureType.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.TypeDelegator.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Reflection.TypeDelegator.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Reflection.TypeInfo.<get_DeclaredNestedTypes>g__GetDeclaredOnlyNestedTypes\|22_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Type[] System.Reflection.TypeInfo.<get_DeclaredNestedTypes>g__GetDeclaredOnlyNestedTypes\|22_0(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.Type[] System.RuntimeType.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.RuntimeType.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[] System.Type.FindInterfaces(System.Reflection.TypeFilter,System.Object) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Type.GetInterfaces() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 8192 | -| System.Type[] System.Type.GetNestedTypes() | [DynamicallyAccessedMembersAttribute(...)] | 0 | 128 | -| System.Type[] System.Type.GetNestedTypes(System.Reflection.BindingFlags) | [DynamicallyAccessedMembersAttribute(...)] | 0 | 384 | -| System.Type[][] | [NullableAttribute(...)] | 0 | [2,1,1] | -| System.TypedReference | [CLSCompliantAttribute(...)] | 0 | False | -| System.TypedReference | [NullableAttribute(...)] | 0 | 0 | -| System.TypedReference | [NullableContextAttribute(...)] | 0 | 2 | -| System.TypedReference System.ArgIterator.GetNextArg() | [CLSCompliantAttribute(...)] | 0 | False | -| System.TypedReference System.ArgIterator.GetNextArg(System.RuntimeTypeHandle) | [CLSCompliantAttribute(...)] | 0 | False | -| System.TypedReference System.TypedReference.MakeTypedReference(System.Object,System.Reflection.FieldInfo[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.BitConverter.HalfToUInt16Bits(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.BitConverter.ToUInt16(System.Byte[],System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.BitConverter.ToUInt16(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.BitConverter.ToUInt16(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.UInt16 System.Buffers.Binary.BinaryPrimitives.ReadUInt16BigEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Buffers.Binary.BinaryPrimitives.ReadUInt16LittleEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Byte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.DateTime) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Double) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Int16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Object,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.Single) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.String,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.String,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Convert.ToUInt16(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Decimal.ToUInt16(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Decimal.op_Explicit(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Half.op_CheckedExplicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Half.op_Explicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.IO.BinaryReader.ReadUInt16() | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.IO.UnmanagedMemoryAccessor.ReadUInt16(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Int128.op_CheckedExplicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Int128.op_Explicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Math.Clamp(System.UInt16,System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Math.Max(System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Math.Min(System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Runtime.Serialization.SerializationInfo.GetUInt16(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Threading.Thread.VolatileRead(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.Threading.Volatile.Read(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.UInt16.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.UInt16.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.UInt16.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.UInt16.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.UInt16.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.UInt16.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.UInt16.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt16 System.UInt128.op_CheckedExplicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt16 System.UInt128.op_Explicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 Interop.Kernel32.GetEnvironmentVariable(System.String,System.Char,System.UInt32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.UInt32 Interop.Kernel32.GetEnvironmentVariable(System.String,System.Char,System.UInt32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.UInt32 System.BitConverter.SingleToUInt32Bits(System.Single) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.BitConverter.ToUInt32(System.Byte[],System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.BitConverter.ToUInt32(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.BitConverter.ToUInt32(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.UInt32 System.Buffers.Binary.BinaryPrimitives.ReadUInt32BigEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Buffers.Binary.BinaryPrimitives.ReadUInt32LittleEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Byte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.DateTime) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Double) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Int16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Object,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.Single) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.String,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.String,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Convert.ToUInt32(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Decimal.ToUInt32(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Decimal.op_Explicit(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Half.op_CheckedExplicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Half.op_Explicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.IO.BinaryReader.ReadUInt32() | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.IO.UnmanagedMemoryAccessor.ReadUInt32(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Int128.op_CheckedExplicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Int128.op_Explicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Math.Clamp(System.UInt32,System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Math.Max(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Math.Min(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.Byte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Numerics.BitOperations.Crc32C(System.UInt32,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Numerics.BitOperations.RotateLeft(System.UInt32,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Numerics.BitOperations.RotateRight(System.UInt32,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Numerics.BitOperations.RoundUpToPowerOf2(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Reflection.Assembly.GetAssemblyCount() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.UInt32 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Runtime.Intrinsics.Vector64.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector64<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Runtime.Intrinsics.Vector64.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector64<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.UInt32 System.Runtime.Intrinsics.Vector128.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector128<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Runtime.Intrinsics.Vector128.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector128<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.UInt32 System.Runtime.Intrinsics.Vector256.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector256<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Runtime.Intrinsics.Vector256.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector256<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.UInt32 System.Runtime.Serialization.SerializationInfo.GetUInt32(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Interlocked.Add(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Interlocked.And(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Interlocked.CompareExchange(System.UInt32,System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Interlocked.Decrement(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Interlocked.Exchange(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Interlocked.Increment(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Interlocked.Or(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Thread.VolatileRead(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.Threading.Volatile.Read(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.UInt32.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt32 System.UInt32.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt32 System.UInt32.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt32 System.UInt32.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt32 System.UInt32.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt32 System.UInt32.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt32 System.UInt32.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt32 System.UInt128.op_CheckedExplicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt32 System.UInt128.op_Explicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.BitConverter.DoubleToUInt64Bits(System.Double) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.BitConverter.ToUInt64(System.Byte[],System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.BitConverter.ToUInt64(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.BitConverter.ToUInt64(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.UInt64 System.Buffers.Binary.BinaryPrimitives.ReadUInt64BigEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Buffers.Binary.BinaryPrimitives.ReadUInt64LittleEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Byte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Char) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.DateTime) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Double) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Int16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Object,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.Single) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.String,System.IFormatProvider) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.String,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Convert.ToUInt64(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Decimal.ToUInt64(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Decimal.op_Explicit(System.Decimal) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Diagnostics.Tracing.EventPipeInternal.Enable(System.Char*,System.Diagnostics.Tracing.EventPipeSerializationFormat,System.UInt32,System.Diagnostics.Tracing.EventPipeInternal.EventPipeProviderConfigurationNative*,System.UInt32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.UInt64 System.Half.op_CheckedExplicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Half.op_Explicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.IO.BinaryReader.ReadUInt64() | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.IO.UnmanagedMemoryAccessor.ReadUInt64(System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Int128.op_CheckedExplicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Int128.op_Explicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Math.BigMul(System.UInt64,System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Math.Clamp(System.UInt64,System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Math.Max(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Math.Min(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Numerics.BitOperations.RotateLeft(System.UInt64,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Numerics.BitOperations.RotateRight(System.UInt64,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Numerics.BitOperations.RoundUpToPowerOf2(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Runtime.Intrinsics.Vector512.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector512<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Runtime.Intrinsics.Vector512.ExtractMostSignificantBits`1(System.Runtime.Intrinsics.Vector512<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.UInt64 System.Runtime.Serialization.SerializationInfo.GetUInt64(System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.Add(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.And(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.CompareExchange(System.UInt64,System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.Decrement(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.Exchange(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.Increment(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.Or(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Interlocked.Read(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Thread.GetCurrentOSThreadId() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.UInt64 System.Threading.Thread.VolatileRead(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.Threading.Volatile.Read(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.UInt64.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt64 System.UInt64.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt64 System.UInt64.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt64 System.UInt64.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt64 System.UInt64.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt64 System.UInt64.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt64 System.UInt64.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt64 System.UInt128.op_CheckedExplicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt64 System.UInt128.op_Explicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Buffers.Binary.BinaryPrimitives.ReadUInt128BigEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Buffers.Binary.BinaryPrimitives.ReadUInt128LittleEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Half.op_CheckedExplicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Half.op_Explicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Int128.op_CheckedExplicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Int128.op_Explicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.UInt128.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt128 System.UInt128.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt128 System.UInt128.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt128 System.UInt128.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt128 System.UInt128.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt128 System.UInt128.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt128 System.UInt128.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UInt128 System.UInt128.op_CheckedExplicit(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.UInt128.op_Explicit(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.UInt128.op_Implicit(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.UInt128.op_Implicit(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.UInt128.op_Implicit(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UInt128 System.UInt128.op_Implicit(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.UIntPtr System.Buffers.Binary.BinaryPrimitives.ReadUIntPtrBigEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Buffers.Binary.BinaryPrimitives.ReadUIntPtrLittleEndian(System.ReadOnlySpan<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Half.op_CheckedExplicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Half.op_Explicit(System.Half) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Int128.op_CheckedExplicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Int128.op_Explicit(System.Int128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Math.Clamp(System.UIntPtr,System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Math.Max(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Math.Min(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Numerics.BitOperations.RotateLeft(System.UIntPtr,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Numerics.BitOperations.RotateRight(System.UIntPtr,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Numerics.BitOperations.RoundUpToPowerOf2(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Runtime.InteropServices.NFloat.op_CheckedExplicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Runtime.InteropServices.NFloat.op_Explicit(System.Runtime.InteropServices.NFloat) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Text.Latin1Utility.GetIndexOfFirstNonLatin1Char_Sse2(System.Char*,System.UIntPtr) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.UIntPtr System.Text.Latin1Utility.NarrowUtf16ToLatin1_Sse2(System.Char*,System.Byte*,System.UIntPtr) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.UIntPtr System.Threading.Interlocked.CompareExchange(System.UIntPtr,System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Threading.Interlocked.Exchange(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Threading.Thread.VolatileRead(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.Threading.Volatile.Read(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.UInt128.op_CheckedExplicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.UInt128.op_Explicit(System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.UIntPtr System.UIntPtr.CreateChecked`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UIntPtr System.UIntPtr.CreateSaturating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UIntPtr System.UIntPtr.CreateTruncating`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UIntPtr System.UIntPtr.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UIntPtr System.UIntPtr.Parse(System.String,System.Globalization.NumberStyles) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UIntPtr System.UIntPtr.Parse(System.String,System.Globalization.NumberStyles,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UIntPtr System.UIntPtr.Parse(System.String,System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.UnauthorizedAccessException | [NullableAttribute(...)] | 0 | 0 | -| System.UnauthorizedAccessException | [NullableContextAttribute(...)] | 0 | 2 | -| System.UnauthorizedAccessException | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.UnhandledExceptionEventArgs | [NullableAttribute(...)] | 0 | 0 | -| System.UnhandledExceptionEventArgs | [NullableAttribute(...)] | 0 | 1 | -| System.UnhandledExceptionEventArgs | [NullableContextAttribute(...)] | 0 | 1 | -| System.UnitySerializationHolder | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.ValueTuple | [NullableAttribute(...)] | 0 | 0 | -| System.ValueTuple | [NullableContextAttribute(...)] | 0 | 1 | -| System.ValueTuple | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,!7> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7,!8,!9>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7,!8>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!7>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!7,!8,!9>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!7,!8,!9>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!7,!8,!9>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18,!19,!20>>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18,!19>>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17,!18>>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16,!17>>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15,!16>>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14,!15>>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9,System.ValueTuple<!14>>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6,System.ValueTuple<!10,!11,!12,!13,!7,!8,!9>> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5,!6> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4,!5> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3,!4> | [NullableAttribute(...)] | 0 | [0,1,1,1,1,1] | -| System.ValueTuple<!0,!1,!2,!3> | [NullableAttribute(...)] | 0 | [0,1,1,1,1] | -| System.ValueTuple<!0,!1,!2> | [NullableAttribute(...)] | 0 | [0,1,1,1] | -| System.ValueTuple<!0,!1> | [NullableAttribute(...)] | 0 | [0,1,1] | -| System.ValueTuple<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| System.ValueTuple<!0> System.TupleExtensions.ToValueTuple`1(System.Tuple<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.ValueTuple<System.HexConverter.Casing,System.IntPtr> | [TupleElementNamesAttribute(...)] | 0 | [RosPtr,casing] | -| System.ValueTuple<System.Int32,System.Int32,System.String,System.String>[] | [TupleElementNamesAttribute(...)] | 0 | [Literal,ArgIndex,Alignment,Format] | -| System.ValueTuple<System.Int32,System.Int32> System.Console.GetCursorPosition() | [NullableContextAttribute(...)] | 0 | 0 | -| System.ValueTuple<System.Int32,System.Int32> System.Console.GetCursorPosition() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.ValueTuple<System.Int32,System.Int32> System.Console.GetCursorPosition() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.ValueTuple<System.Int32,System.Int32> System.Console.GetCursorPosition() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.ValueTuple<System.Int32,System.Int32> System.Console.GetCursorPosition() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.ValueTuple<System.Int32,System.Int32> System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UInt32,System.Int32,System.Int32) | [RequiresPreviewFeaturesAttribute(...)] | 0 | DivRem is in preview. | -| System.ValueTuple<System.Int64,System.Int64> System.Runtime.Intrinsics.X86.X86Base.X64.DivRem(System.UInt64,System.Int64,System.Int64) | [RequiresPreviewFeaturesAttribute(...)] | 0 | DivRem is in preview. | -| System.ValueTuple<System.IntPtr,System.IntPtr> System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UIntPtr,System.IntPtr,System.IntPtr) | [RequiresPreviewFeaturesAttribute(...)] | 0 | DivRem is in preview. | -| System.ValueTuple<System.Object,System.Object> System.Runtime.DependentHandle.TargetAndDependent | [NullableAttribute(...)] | 0 | [0,2,2] | -| System.ValueTuple<System.Object,System.Object> System.Runtime.DependentHandle.TargetAndDependent | [TupleElementNamesAttribute(...)] | 0 | [Target,Dependent] | -| System.ValueTuple<System.Runtime.Intrinsics.Vector64<System.Int16>,System.Runtime.Intrinsics.Vector64<System.Int16>> System.Runtime.Intrinsics.Vector64.Widen(System.Runtime.Intrinsics.Vector64<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector64<System.UInt16>,System.Runtime.Intrinsics.Vector64<System.UInt16>> System.Runtime.Intrinsics.Vector64.Widen(System.Runtime.Intrinsics.Vector64<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector64<System.UInt32>,System.Runtime.Intrinsics.Vector64<System.UInt32>> System.Runtime.Intrinsics.Vector64.Widen(System.Runtime.Intrinsics.Vector64<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector64<System.UInt64>,System.Runtime.Intrinsics.Vector64<System.UInt64>> System.Runtime.Intrinsics.Vector64.Widen(System.Runtime.Intrinsics.Vector64<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>> System.Guid.FormatGuidVector128Utf8(System.Guid,System.Boolean) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>> System.Guid.FormatGuidVector128Utf8(System.Guid,System.Boolean) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>> System.HexConverter.AsciiToHexVector128(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>> System.HexConverter.AsciiToHexVector128(System.Runtime.Intrinsics.Vector128<System.Byte>,System.Runtime.Intrinsics.Vector128<System.Byte>) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.Int16>,System.Runtime.Intrinsics.Vector128<System.Int16>> System.Runtime.Intrinsics.Vector128.Widen(System.Runtime.Intrinsics.Vector128<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.UInt16>,System.Runtime.Intrinsics.Vector128<System.UInt16>> System.Runtime.Intrinsics.Vector128.Widen(System.Runtime.Intrinsics.Vector128<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.UInt32>,System.Runtime.Intrinsics.Vector128<System.UInt32>> System.Runtime.Intrinsics.Vector128.Widen(System.Runtime.Intrinsics.Vector128<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector128<System.UInt64>,System.Runtime.Intrinsics.Vector128<System.UInt64>> System.Runtime.Intrinsics.Vector128.Widen(System.Runtime.Intrinsics.Vector128<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector256<System.Int16>,System.Runtime.Intrinsics.Vector256<System.Int16>> System.Runtime.Intrinsics.Vector256.Widen(System.Runtime.Intrinsics.Vector256<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector256<System.UInt16>,System.Runtime.Intrinsics.Vector256<System.UInt16>> System.Runtime.Intrinsics.Vector256.Widen(System.Runtime.Intrinsics.Vector256<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector256<System.UInt32>,System.Runtime.Intrinsics.Vector256<System.UInt32>> System.Runtime.Intrinsics.Vector256.Widen(System.Runtime.Intrinsics.Vector256<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector256<System.UInt64>,System.Runtime.Intrinsics.Vector256<System.UInt64>> System.Runtime.Intrinsics.Vector256.Widen(System.Runtime.Intrinsics.Vector256<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector512<System.Int16>,System.Runtime.Intrinsics.Vector512<System.Int16>> System.Runtime.Intrinsics.Vector512.Widen(System.Runtime.Intrinsics.Vector512<System.SByte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector512<System.UInt16>,System.Runtime.Intrinsics.Vector512<System.UInt16>> System.Runtime.Intrinsics.Vector512.Widen(System.Runtime.Intrinsics.Vector512<System.Byte>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector512<System.UInt32>,System.Runtime.Intrinsics.Vector512<System.UInt32>> System.Runtime.Intrinsics.Vector512.Widen(System.Runtime.Intrinsics.Vector512<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.Runtime.Intrinsics.Vector512<System.UInt64>,System.Runtime.Intrinsics.Vector512<System.UInt64>> System.Runtime.Intrinsics.Vector512.Widen(System.Runtime.Intrinsics.Vector512<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.SByte,System.SByte> System.Math.DivRem(System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.UInt16,System.UInt16> System.Math.DivRem(System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.UInt32,System.UInt32> System.Math.DivRem(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.UInt32,System.UInt32> System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UInt32,System.UInt32,System.UInt32) | [RequiresPreviewFeaturesAttribute(...)] | 0 | DivRem is in preview. | -| System.ValueTuple<System.UInt64,System.UInt64> System.Math.DivRem(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.UInt64,System.UInt64> System.Runtime.Intrinsics.X86.X86Base.X64.DivRem(System.UInt64,System.UInt64,System.UInt64) | [RequiresPreviewFeaturesAttribute(...)] | 0 | DivRem is in preview. | -| System.ValueTuple<System.UIntPtr,System.UIntPtr> System.Math.DivRem(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.ValueTuple<System.UIntPtr,System.UIntPtr> System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UIntPtr,System.UIntPtr,System.UIntPtr) | [RequiresPreviewFeaturesAttribute(...)] | 0 | DivRem is in preview. | -| System.ValueTuple`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`1.Item1 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`2 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`2.Item1 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`2.Item2 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`3 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`3.Item1 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`3.Item2 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`3.Item3 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`4 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`4.Item1 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`4.Item2 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`4.Item3 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`4.Item4 | [NullableAttribute(...)] | 0 | 1 | -| System.ValueTuple`5 | [NullableAttribute(...)] | 0 | 0 | -| System.ValueTuple`5 | [NullableContextAttribute(...)] | 0 | 1 | -| System.ValueTuple`5 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`6 | [NullableAttribute(...)] | 0 | 0 | -| System.ValueTuple`6 | [NullableContextAttribute(...)] | 0 | 1 | -| System.ValueTuple`6 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`7 | [NullableAttribute(...)] | 0 | 0 | -| System.ValueTuple`7 | [NullableContextAttribute(...)] | 0 | 1 | -| System.ValueTuple`7 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`8 | [NullableAttribute(...)] | 0 | 0 | -| System.ValueTuple`8 | [NullableContextAttribute(...)] | 0 | 1 | -| System.ValueTuple`8 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.ValueTuple`8.Rest | [NullableAttribute(...)] | 0 | 0 | -| System.ValueType | [NullableAttribute(...)] | 0 | 0 | -| System.ValueType | [NullableContextAttribute(...)] | 0 | 2 | -| System.ValueType | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Version | [NotNullWhenAttribute(...)] | 0 | True | -| System.Version | [NullableAttribute(...)] | 0 | 2 | -| System.Version | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.Version System.Version.Parse(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void Internal.Console.Error.Write(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void Internal.Console.Write(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void Internal.Console.WriteLine(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssembly>g__LoadAssemblyLocal\|14_0(System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssembly>g__LoadAssemblyLocal\|14_0(System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssemblyBytes>g__LoadAssemblyBytesLocal\|16_0(System.ReadOnlySpan<System.Byte>,System.ReadOnlySpan<System.Byte>) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.<LoadAssemblyBytes>g__LoadAssemblyBytesLocal\|16_0(System.ReadOnlySpan<System.Byte>,System.ReadOnlySpan<System.Byte>) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyImpl(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Native hosting is not trim compatible and this warning will be seen if trimming is enabled. | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyImpl(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyImpl(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyImpl(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyImpl(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | maccatalyst | -| System.Void Internal.Runtime.InteropServices.ComponentActivator.LoadAssemblyImpl(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void Internal.Runtime.InteropServices.IsolatedComponentLoadContext..ctor(System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The trimmer might remove assemblies that are loaded by this class | -| System.Void Interop.Globalization.ChangeCase(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void Interop.Globalization.ChangeCase(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void Interop.Globalization.ChangeCaseInvariant(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void Interop.Globalization.ChangeCaseInvariant(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void Interop.Globalization.ChangeCaseTurkish(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void Interop.Globalization.ChangeCaseTurkish(System.Char*,System.Int32,System.Char*,System.Int32,System.Boolean) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void Interop.Globalization.CloseSortHandle(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | libSystem.Globalization.Native | -| System.Void Interop.Globalization.InitICUFunctions(System.IntPtr,System.IntPtr,System.String,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void Interop.Globalization.InitICUFunctions(System.IntPtr,System.IntPtr,System.String,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.AccessViolationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.AccessViolationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.AccessViolationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Action`1.Invoke(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`2.Invoke(!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`3.Invoke(!0,!1,!2) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`4..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`4.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`4.Invoke(!0,!1,!2,!3) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`5..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`5.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`5.Invoke(!0,!1,!2,!3,!4) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`6..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`6.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`6.Invoke(!0,!1,!2,!3,!4,!5) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`7..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`7.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`7.Invoke(!0,!1,!2,!3,!4,!5,!6) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`8..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`8.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`8.Invoke(!0,!1,!2,!3,!4,!5,!6,!7) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`9..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`9.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`9.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`10..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`10.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`10.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`11..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`11.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`11.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`12..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`12.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`12.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`13..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`13.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`13.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`14..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`14.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`14.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`15..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`15.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`15.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Action`16..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`16.EndInvoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Action`16.Invoke(!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.AggregateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.AggregateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.AggregateException..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AggregateException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.AggregateException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.AppDomain.AppendPrivatePath(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.AppendPrivatePath(System.String) | [ObsoleteAttribute(...)] | 0 | AppDomain.AppendPrivatePath has been deprecated and is not supported. | -| System.Void System.AppDomain.ClearPrivatePath() | [ObsoleteAttribute(...)] | 0 | AppDomain.ClearPrivatePath has been deprecated and is not supported. | -| System.Void System.AppDomain.ClearShadowCopyPath() | [ObsoleteAttribute(...)] | 0 | AppDomain.ClearShadowCopyPath has been deprecated and is not supported. | -| System.Void System.AppDomain.SetCachePath(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.SetCachePath(System.String) | [ObsoleteAttribute(...)] | 0 | AppDomain.SetCachePath has been deprecated and is not supported. | -| System.Void System.AppDomain.SetDynamicBase(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.SetDynamicBase(System.String) | [ObsoleteAttribute(...)] | 0 | AppDomain.SetDynamicBase has been deprecated and is not supported. | -| System.Void System.AppDomain.SetShadowCopyFiles() | [ObsoleteAttribute(...)] | 0 | AppDomain.SetShadowCopyFiles has been deprecated and is not supported. | -| System.Void System.AppDomain.SetShadowCopyPath(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.SetShadowCopyPath(System.String) | [ObsoleteAttribute(...)] | 0 | AppDomain.SetShadowCopyPath has been deprecated and is not supported. | -| System.Void System.AppDomain.Unload(System.AppDomain) | [ObsoleteAttribute(...)] | 0 | Creating and unloading AppDomains is not supported and throws an exception. | -| System.Void System.AppDomain.add_AssemblyLoad(System.AssemblyLoadEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.add_AssemblyResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.add_DomainUnload(System.EventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.add_ProcessExit(System.EventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.add_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.add_ResourceResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.add_TypeResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.add_UnhandledException(System.UnhandledExceptionEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_AssemblyLoad(System.AssemblyLoadEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_AssemblyResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_DomainUnload(System.EventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_ProcessExit(System.EventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_ReflectionOnlyAssemblyResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_ResourceResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_TypeResolve(System.ResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomain.remove_UnhandledException(System.UnhandledExceptionEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.AppDomainUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.AppDomainUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.AppDomainUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ApplicationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ApplicationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ApplicationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ArgIterator..ctor(System.RuntimeArgumentHandle,System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.ArgumentException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ArgumentException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ArgumentNullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentNullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentNullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ArgumentNullException.ThrowIfNull(System.Void*,System.String) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.ArgumentNullException.ThrowIfNull(System.Void*,System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.ArgumentOutOfRangeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentOutOfRangeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ArgumentOutOfRangeException..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ArgumentOutOfRangeException..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ArgumentOutOfRangeException..ctor(System.String,System.Object,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ArgumentOutOfRangeException..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ArgumentOutOfRangeException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ArgumentOutOfRangeException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ArithmeticException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ArithmeticException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ArithmeticException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Array.Resize`1(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.SetValue(System.Object,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.SetValue(System.Object,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.SetValue(System.Object,System.Int32,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.SetValue(System.Object,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.SetValue(System.Object,System.Int64,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.SetValue(System.Object,System.Int64,System.Int64,System.Int64) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.Sort(System.Array,System.Array,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.Sort(System.Array,System.Array,System.Int32,System.Int32,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.Sort`2(!0[],!1[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.Sort`2(!0[],!1[],System.Collections.Generic.IComparer<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.Sort`2(!0[],!1[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Array.Sort`2(!0[],!1[],System.Int32,System.Int32,System.Collections.Generic.IComparer<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.AssemblyLoadEventHandler.Invoke(System.Object,System.AssemblyLoadEventArgs) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.AsyncCallback.Invoke(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.BadImageFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.BadImageFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.BadImageFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.BadImageFormatException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.BadImageFormatException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.BadImageFormatException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Buffer.MemoryCopy(System.Void*,System.Void*,System.Int64,System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffer.MemoryCopy(System.Void*,System.Void*,System.Int64,System.Int64) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Buffer.MemoryCopy(System.Void*,System.Void*,System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffer.MemoryCopy(System.Void*,System.Void*,System.UInt64,System.UInt64) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Buffer.__Memmove(System.Byte*,System.Byte*,System.UIntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Buffer.__ZeroMemory(System.Void*,System.UIntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Buffers.ArrayPoolEventSource.BufferAllocated(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferAllocatedReason) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Buffers.ArrayPoolEventSource.BufferAllocated(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferAllocatedReason) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Buffers.ArrayPoolEventSource.BufferDropped(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferDroppedReason) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Buffers.ArrayPoolEventSource.BufferDropped(System.Int32,System.Int32,System.Int32,System.Int32,System.Buffers.ArrayPoolEventSource.BufferDroppedReason) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Buffers.ArrayPoolEventSource.BufferRented(System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Buffers.ArrayPoolEventSource.BufferRented(System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.ReadOnlySpan<System.UInt16>,System.Span<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.ReadOnlySpan<System.UInt32>,System.Span<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.ReadOnlySpan<System.UInt64>,System.Span<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.ReadOnlySpan<System.UInt128>,System.Span<System.UInt128>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.ReverseEndianness(System.ReadOnlySpan<System.UIntPtr>,System.Span<System.UIntPtr>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt16BigEndian(System.Span<System.Byte>,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt16LittleEndian(System.Span<System.Byte>,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt32BigEndian(System.Span<System.Byte>,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt32LittleEndian(System.Span<System.Byte>,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt64BigEndian(System.Span<System.Byte>,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt64LittleEndian(System.Span<System.Byte>,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt128BigEndian(System.Span<System.Byte>,System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUInt128LittleEndian(System.Span<System.Byte>,System.UInt128) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUIntPtrBigEndian(System.Span<System.Byte>,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.Binary.BinaryPrimitives.WriteUIntPtrLittleEndian(System.Span<System.Byte>,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.MemoryHandle..ctor(System.Void*,System.Runtime.InteropServices.GCHandle,System.Buffers.IPinnable) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Buffers.ReadOnlySpanAction`2.Invoke(System.ReadOnlySpan<!0>,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Buffers.SpanAction`2.Invoke(System.Span<!0>,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Buffers.Text.Base64.Avx2Decode(System.Byte*,System.Byte*,System.Byte*,System.Int32,System.Int32,System.Byte*,System.Byte*) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Void System.Buffers.Text.Base64.Avx2Encode(System.Byte*,System.Byte*,System.Byte*,System.Int32,System.Int32,System.Byte*,System.Byte*) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Avx2 | -| System.Void System.Buffers.Text.Base64.Vector128Decode(System.Byte*,System.Byte*,System.Byte*,System.Int32,System.Int32,System.Byte*,System.Byte*) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Void System.Buffers.Text.Base64.Vector128Decode(System.Byte*,System.Byte*,System.Byte*,System.Int32,System.Int32,System.Byte*,System.Byte*) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Void System.Buffers.Text.Base64.Vector128Encode(System.Byte*,System.Byte*,System.Byte*,System.Int32,System.Int32,System.Byte*,System.Byte*) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Void System.Buffers.Text.Base64.Vector128Encode(System.Byte*,System.Byte*,System.Byte*,System.Int32,System.Int32,System.Byte*,System.Byte*) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Void System.CannotUnloadAppDomainException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.CannotUnloadAppDomainException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.CannotUnloadAppDomainException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.Write(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.Write(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.Write(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.Write(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.WriteLine(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.WriteLine(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.WriteLine(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.WriteLine(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.WriteLine(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.CodeDom.Compiler.IndentedTextWriter.WriteLineNoTabs(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.ArrayList.Insert(System.Int32,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.ArrayList.Remove(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.ArrayList.Sort(System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.ArrayList.Sort(System.Int32,System.Int32,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.ArrayList.set_Item(System.Int32,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Comparer.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Comparer.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.DictionaryEntry.Deconstruct(System.Object,System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.DictionaryEntry.set_Value(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Generic.Dictionary`2..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.Dictionary`2..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Generic.Dictionary`2.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.Dictionary`2.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Generic.Dictionary`2.KeyCollection..ctor(System.Collections.Generic.Dictionary<!0,!1>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.Dictionary`2.KeyCollection.CopyTo(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.Dictionary`2.OnDeserialization(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Generic.Dictionary`2.ValueCollection..ctor(System.Collections.Generic.Dictionary<!0,!1>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.Dictionary`2.ValueCollection.CopyTo(!1[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.EnumEqualityComparer`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.HashSet`1..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.HashSet`1..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Generic.HashSet`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.HashSet`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Generic.HashSet`1.OnDeserialization(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Generic.KeyNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.KeyNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.KeyNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Generic.KeyValuePair`2.Deconstruct(!0,!1) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.NonRandomizedStringEqualityComparer..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.NonRandomizedStringEqualityComparer..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.NonRandomizedStringEqualityComparer..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Generic.NullableComparer`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Generic.NullableEqualityComparer`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Hashtable..ctor(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Collections.IDictionary,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use Hashtable(IDictionary, IEqualityComparer) instead. | -| System.Void System.Collections.Hashtable..ctor(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Collections.IDictionary,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use Hashtable(IDictionary, float, IEqualityComparer) instead. | -| System.Void System.Collections.Hashtable..ctor(System.Collections.IEqualityComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Collections.IHashCodeProvider,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Collections.IHashCodeProvider,System.Collections.IComparer) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use Hashtable(IEqualityComparer) instead. | -| System.Void System.Collections.Hashtable..ctor(System.Int32,System.Collections.IEqualityComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Int32,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use Hashtable(int, IEqualityComparer) instead. | -| System.Void System.Collections.Hashtable..ctor(System.Int32,System.Single,System.Collections.IEqualityComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable..ctor(System.Int32,System.Single,System.Collections.IHashCodeProvider,System.Collections.IComparer) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use Hashtable(int, float, IEqualityComparer) instead. | -| System.Void System.Collections.Hashtable..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Hashtable..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Hashtable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Collections.Hashtable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Hashtable.OnDeserialization(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable.SyncHashtable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Collections.Hashtable.set_comparer(System.Collections.IComparer) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.Hashtable.set_hcp(System.Collections.IHashCodeProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Collections.ObjectModel.ReadOnlyDictionary`2.ValueCollection.CopyTo(!1[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ComAwareWeakReference.ComWeakRefToObject(System.IntPtr,System.Int64,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.ComponentModel.DefaultValueAttribute..ctor(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.ComponentModel.DefaultValueAttribute..ctor(System.Type,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ComponentModel.DefaultValueAttribute..ctor(System.Type,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Generic TypeConverters may require the generic types to be annotated. For example, NullableConverter requires the underlying type to be DynamicallyAccessedMembers All. | -| System.Void System.ComponentModel.DefaultValueAttribute..ctor(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.ComponentModel.DefaultValueAttribute..ctor(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.ComponentModel.DefaultValueAttribute..ctor(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.ComponentModel.Win32Exception..ctor(System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ComponentModel.Win32Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ComponentModel.Win32Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ComponentModel.Win32Exception..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ComponentModel.Win32Exception..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ComponentModel.Win32Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ComponentModel.Win32Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Console.Beep() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.Beep() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Console.Beep() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.Beep() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.Beep(System.Int32,System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.Clear() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.Clear() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.Clear() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.MoveBufferArea(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.MoveBufferArea(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Char,System.ConsoleColor,System.ConsoleColor) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.ResetColor() | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.ResetColor() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Console.ResetColor() | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.ResetColor() | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.SetBufferSize(System.Int32,System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.SetCursorPosition(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.SetCursorPosition(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Console.SetCursorPosition(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.SetCursorPosition(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.SetIn(System.IO.TextReader) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.SetIn(System.IO.TextReader) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Console.SetIn(System.IO.TextReader) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.SetIn(System.IO.TextReader) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.SetWindowPosition(System.Int32,System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.SetWindowSize(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.SetWindowSize(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Console.SetWindowSize(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.SetWindowSize(System.Int32,System.Int32) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.Write(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.Write(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.Write(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.Write(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.Write(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.Write(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Console.Write(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Console.WriteLine(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.WriteLine(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.WriteLine(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.WriteLine(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.WriteLine(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.WriteLine(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Console.WriteLine(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Console.add_CancelKeyPress(System.ConsoleCancelEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.remove_CancelKeyPress(System.ConsoleCancelEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Console.set_BufferHeight(System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.set_BufferWidth(System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.set_CursorSize(System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.set_CursorVisible(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.set_CursorVisible(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Console.set_CursorVisible(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.set_CursorVisible(System.Boolean) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.set_OutputEncoding(System.Text.Encoding) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.set_OutputEncoding(System.Text.Encoding) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.set_OutputEncoding(System.Text.Encoding) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.set_Title(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| System.Void System.Console.set_Title(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Console.set_Title(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.Console.set_Title(System.String) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.Console.set_WindowLeft(System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Console.set_WindowTop(System.Int32) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.ConsoleCancelEventHandler.Invoke(System.Object,System.ConsoleCancelEventArgs) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ContextMarshalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ContextMarshalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ContextMarshalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.CultureAwareComparer.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DBNull.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DBNull.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.DataMisalignedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DataMisalignedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.DateOnly..ctor(System.Int32,System.Int32,System.Int32,System.Globalization.Calendar) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateOnly.Deconstruct(System.Int32,System.Int32,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DateTime..ctor(System.Int32,System.Int32,System.Int32,System.Globalization.Calendar) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTime..ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Globalization.Calendar) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTime..ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Globalization.Calendar) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTime..ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Globalization.Calendar,System.DateTimeKind) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTime..ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Globalization.Calendar) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTime..ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Globalization.Calendar,System.DateTimeKind) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTime.Deconstruct(System.DateOnly,System.TimeOnly) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DateTime.Deconstruct(System.Int32,System.Int32,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DateTimeOffset..ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Globalization.Calendar,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTimeOffset..ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Globalization.Calendar,System.TimeSpan) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DateTimeOffset.Deconstruct(System.DateOnly,System.TimeOnly,System.TimeSpan) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Decimal..ctor(System.Int32[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Decimal..ctor(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Decimal..ctor(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Delegate..ctor(System.Object,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The target method might be removed | -| System.Void System.Delegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Delegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes,System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute..ctor(System.String,System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.CodeAnalysis.ExperimentalAttribute.set_UrlFormat(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.set_Url(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.set_Url(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.CodeAnalysis.SuppressMessageAttribute..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Contracts.Contract.Assert(System.Boolean) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Assert(System.Boolean) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Contracts.Contract.Assert(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Assert(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Contracts.Contract.Assert(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.Contracts.Contract.AssertMustUseRewriter(System.Diagnostics.Contracts.ContractFailureKind,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Contracts.Contract.AssertMustUseRewriter(System.Diagnostics.Contracts.ContractFailureKind,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Diagnostics.Contracts.Contract.Assume(System.Boolean) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Assume(System.Boolean) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Contracts.Contract.Assume(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Assume(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Contracts.Contract.Assume(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.Contracts.Contract.EndContractBlock() | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Ensures(System.Boolean) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Ensures(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Ensures(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.Contracts.Contract.EnsuresOnThrow`1(System.Boolean) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.EnsuresOnThrow`1(System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Contracts.Contract.EnsuresOnThrow`1(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.EnsuresOnThrow`1(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Contracts.Contract.Invariant(System.Boolean) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Invariant(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Invariant(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.Contracts.Contract.Requires(System.Boolean) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Requires(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | CONTRACTS_FULL | -| System.Void System.Diagnostics.Contracts.Contract.Requires(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Diagnostics.Contracts.Contract.Requires`1(System.Boolean) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Contracts.Contract.Requires`1(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Contracts.ContractException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Diagnostics.Contracts.ContractException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Contracts.ContractException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Contracts.ContractException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Diagnostics.Debug.Assert(System.Boolean) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Assert(System.Boolean,System.Diagnostics.Debug.AssertInterpolatedStringHandler) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Assert(System.Boolean,System.Diagnostics.Debug.AssertInterpolatedStringHandler,System.Diagnostics.Debug.AssertInterpolatedStringHandler) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Assert(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Assert(System.Boolean,System.String,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Assert(System.Boolean,System.String,System.String,System.Object[]) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Assert(System.Boolean,System.String,System.String,System.Object[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.AssertInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Debug.AssertInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Debug.AssertInterpolatedStringHandler.AppendFormatted`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.AssertInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.AssertInterpolatedStringHandler.AppendLiteral(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.Close() | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Fail(System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Fail(System.String,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Flush() | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Indent() | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Print(System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Print(System.String,System.Object[]) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Print(System.String,System.Object[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.Unindent() | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Write(System.Object) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Write(System.Object,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Write(System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.Write(System.String,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteIf(System.Boolean,System.Diagnostics.Debug.WriteIfInterpolatedStringHandler) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteIf(System.Boolean,System.Diagnostics.Debug.WriteIfInterpolatedStringHandler,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteIf(System.Boolean,System.Object) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteIf(System.Boolean,System.Object,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteIf(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteIf(System.Boolean,System.String,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteIfInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Debug.WriteIfInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Debug.WriteIfInterpolatedStringHandler.AppendFormatted`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.WriteIfInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.WriteIfInterpolatedStringHandler.AppendLiteral(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.WriteLine(System.Object) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLine(System.Object,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLine(System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLine(System.String,System.Object[]) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLine(System.String,System.Object[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debug.WriteLine(System.String,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLineIf(System.Boolean,System.Diagnostics.Debug.WriteIfInterpolatedStringHandler) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLineIf(System.Boolean,System.Diagnostics.Debug.WriteIfInterpolatedStringHandler,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLineIf(System.Boolean,System.Object) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLineIf(System.Boolean,System.Object,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLineIf(System.Boolean,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Debug.WriteLineIf(System.Boolean,System.String,System.String) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.DebugProvider.FailCore(System.String,System.String,System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebugProvider.WriteCore(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Debugger.LogInternal(System.Int32,System.String,System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Diagnostics.Debugger.LogInternal(System.Int32,System.String,System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Diagnostics.DebuggerTypeProxyAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebuggerTypeProxyAttribute..ctor(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute..ctor(System.String,System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute..ctor(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute..ctor(System.Type,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.DebuggerVisualizerAttribute..ctor(System.Type,System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.StackTrace.ToString(System.Diagnostics.StackTrace.TraceFormat,System.Text.StringBuilder) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.StackTrace.ToString(System.Diagnostics.StackTrace.TraceFormat,System.Text.StringBuilder) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 0 | 512 | -| System.Void System.Diagnostics.Tracing.EventCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 1 | System.Diagnostics.Tracing.CounterPayload | -| System.Void System.Diagnostics.Tracing.EventCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventPipeInternal.DeleteProvider(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.EventPipeInternal.Disable(System.UInt64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.EventPipeInternal.WriteEventData(System.IntPtr,System.Diagnostics.Tracing.EventProvider.EventData*,System.UInt32,System.Guid*,System.Guid*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.EventSource..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSource..ctor(System.String,System.Diagnostics.Tracing.EventSourceSettings) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSource..ctor(System.String,System.Diagnostics.Tracing.EventSourceSettings,System.String[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSource.AssertValidString(System.Diagnostics.Tracing.EventSource.EventData*) | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Diagnostics.Tracing.EventSource.OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSource.SendCommand(System.Diagnostics.Tracing.EventSource,System.Diagnostics.Tracing.EventCommand,System.Collections.Generic.IDictionary<System.String,System.String>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSource.Write(System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.Write(System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.Write(System.String,System.Diagnostics.Tracing.EventSourceOptions) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.Write(System.String,System.Diagnostics.Tracing.EventSourceOptions) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Byte[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Byte[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Diagnostics.Tracing.EventSource.EventSourcePrimitive[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Diagnostics.Tracing.EventSource.EventSourcePrimitive[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Diagnostics.Tracing.EventSource.EventSourcePrimitive[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Byte[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Byte[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Int64,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.Int64,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Int64,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.String,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEvent(System.Int32,System.String,System.String,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventCore(System.Int32,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventCore(System.Int32,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventCore(System.Int32,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventCore(System.Int32,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventCore(System.Int32,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventVarargs(System.Int32,System.Guid*,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventVarargs(System.Int32,System.Guid*,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventVarargs(System.Int32,System.Guid*,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityId(System.Int32,System.Guid,System.Object[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityId(System.Int32,System.Guid,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityId(System.Int32,System.Guid,System.Object[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(System.Int32,System.Guid*,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(System.Int32,System.Guid*,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(System.Int32,System.Guid*,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(System.Int32,System.Guid*,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore(System.Int32,System.Guid*,System.Int32,System.Diagnostics.Tracing.EventSource.EventData*) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,!0) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,!0) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,!0) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,!0) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,!0) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,!0) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,System.Guid,System.Guid,!0) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,System.Guid,System.Guid,!0) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.EventSource.Write`1(System.String,System.Diagnostics.Tracing.EventSourceOptions,System.Guid,System.Guid,!0) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2112:ReflectionToRequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.EventSourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Diagnostics.Tracing.EventSourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String,System.Boolean,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent(System.Int32,System.Int64,System.Int32,System.String,System.Boolean,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.IncrementingEventCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 0 | 512 | -| System.Void System.Diagnostics.Tracing.IncrementingEventCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 1 | System.Diagnostics.Tracing.IncrementingCounterPayload | -| System.Void System.Diagnostics.Tracing.IncrementingEventCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.IncrementingEventCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.IncrementingPollingCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 0 | 512 | -| System.Void System.Diagnostics.Tracing.IncrementingPollingCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 1 | System.Diagnostics.Tracing.IncrementingCounterPayload | -| System.Void System.Diagnostics.Tracing.IncrementingPollingCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.IncrementingPollingCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogContentionLockCreated(System.IntPtr,System.IntPtr,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogContentionStart(System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionFlagsMap,System.UInt16,System.IntPtr,System.IntPtr,System.UInt64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogContentionStop(System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionFlagsMap,System.UInt16,System.Double) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIODequeue(System.IntPtr,System.IntPtr,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIOEnqueue(System.IntPtr,System.IntPtr,System.Boolean,System.UInt16) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIOEnqueue(System.IntPtr,System.IntPtr,System.Boolean,System.UInt16) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIOEnqueue(System.IntPtr,System.IntPtr,System.Boolean,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolIOPack(System.IntPtr,System.IntPtr,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolMinMaxThreads(System.UInt16,System.UInt16,System.UInt16,System.UInt16,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadAdjustmentAdjustment(System.Double,System.UInt32,System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadAdjustmentReasonMap,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadAdjustmentSample(System.Double,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadAdjustmentStats(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.UInt16,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadStart(System.UInt32,System.UInt32,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadStop(System.UInt32,System.UInt32,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkerThreadWait(System.UInt32,System.UInt32,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NativeRuntimeEventSource.LogThreadPoolWorkingThreadCount(System.UInt32,System.UInt16) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Diagnostics.Tracing.NullableTypeInfo..ctor(System.Type,System.Collections.Generic.List<System.Type>) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Void System.Diagnostics.Tracing.NullableTypeInfo.WriteData(System.Diagnostics.Tracing.PropertyValue) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.NullableTypeInfo.WriteData(System.Diagnostics.Tracing.PropertyValue) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2072:UnrecognizedReflectionPattern | -| System.Void System.Diagnostics.Tracing.PollingCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 0 | 512 | -| System.Void System.Diagnostics.Tracing.PollingCounter.WritePayload(System.Single,System.Int32) | [DynamicDependencyAttribute(...)] | 1 | System.Diagnostics.Tracing.CounterPayload | -| System.Void System.Diagnostics.Tracing.PollingCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Diagnostics.Tracing.PollingCounter.WritePayload(System.Single,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Diagnostics.Tracing.TraceLoggingEventTypes..ctor(System.String,System.Diagnostics.Tracing.EventTags,System.Reflection.ParameterInfo[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Void System.Diagnostics.Tracing.TraceLoggingEventTypes..ctor(System.String,System.Diagnostics.Tracing.EventTags,System.Type[]) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Void System.Diagnostics.Tracing.TypeAnalysis..ctor(System.Type,System.Diagnostics.Tracing.EventDataAttribute,System.Collections.Generic.List<System.Type>) | [RequiresUnreferencedCodeAttribute(...)] | 0 | EventSource WriteEvent will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type | -| System.Void System.DivideByZeroException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DivideByZeroException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DivideByZeroException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.DllNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DllNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DllNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.DuplicateWaitObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.DuplicateWaitObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.DuplicateWaitObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.EntryPointNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.EntryPointNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.EntryPointNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Enum.AssertValidGenerics`2() | [ConditionalAttribute(...)] | 0 | DEBUG | -| System.Void System.Enum.GetEnumValuesAndNames(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack,Interop.BOOL) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Environment.FailFast(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Environment.FailFast(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Environment._Exit(System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.EventHandler.Invoke(System.Object,System.EventArgs) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.EventHandler`1.Invoke(System.Object,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Exception..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Exception.GetMessageFromNativeResources(System.Exception.ExceptionMessageKind,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Exception.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.FieldAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.FieldAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.FieldAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.FormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.FormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.FormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Func`5..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`6..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`7..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`8..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`9..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`10..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`11..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`12..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`13..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`14..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`15..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`16..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Func`17..ctor(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.GC.KeepAlive(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.GC._AddMemoryPressure(System.UInt64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.GC._Collect(System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.GC._EnumerateConfigurationValues(System.Void*,delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void>) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.GC._RemoveMemoryPressure(System.UInt64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.GC._UnregisterFrozenSegment(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.GC._WaitForPendingFinalizers() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Globalization.CompareInfo.InitSort(System.Globalization.CultureInfo) | [MemberNotNullAttribute(...)] | 0 | _sortName | -| System.Void System.Globalization.CultureInfo.set_DefaultThreadCurrentCulture(System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Globalization.CultureInfo.set_DefaultThreadCurrentUICulture(System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Globalization.CultureNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Globalization.CultureNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Globalization.CultureNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Globalization.CultureNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Globalization.CultureNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Globalization.CultureNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Globalization.DateTimeFormatInfo.set_Calendar(System.Globalization.Calendar) | [MemberNotNullAttribute(...)] | 0 | calendar | -| System.Void System.Globalization.StringInfo.set_String(System.String) | [MemberNotNullAttribute(...)] | 0 | _str | -| System.Void System.Guid..ctor(System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Guid..ctor(System.Int32,System.Int16,System.Int16,System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Guid..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Guid..ctor(System.UInt32,System.UInt16,System.UInt16,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte,System.Byte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.HashCode.AddBytes(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.HexConverter.EncodeToUtf16_Vector128(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>,System.HexConverter.Casing) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.Arm.AdvSimd.Arm64 | -| System.Void System.HexConverter.EncodeToUtf16_Vector128(System.ReadOnlySpan<System.Byte>,System.Span<System.Char>,System.HexConverter.Casing) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Ssse3 | -| System.Void System.IO.BinaryWriter.Write(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.BinaryWriter.Write(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.BinaryWriter.Write(System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.BinaryWriter.Write(System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.BinaryWriter.Write(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.BinaryWriter.Write(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.BufferedStream.EnsureBufferAllocated() | [MemberNotNullAttribute(...)] | 0 | _buffer | -| System.Void System.IO.BufferedStream.Write(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.DirectoryNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.DirectoryNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.DirectoryNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.EndOfStreamException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.EndOfStreamException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.EndOfStreamException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.Enumeration.FileSystemEnumerable`1..ctor(System.String,System.IO.Enumeration.FileSystemEnumerable<!0>.FindTransform,System.IO.EnumerationOptions) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.Enumeration.FileSystemEnumerator`1..ctor(System.String,System.IO.EnumerationOptions) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.File.Decrypt(System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.File.Encrypt(System.String) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.File.SetUnixFileMode(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.UnixFileMode) | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.File.SetUnixFileMode(System.String,System.IO.UnixFileMode) | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.FileInfo.Decrypt() | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.FileInfo.Encrypt() | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.FileLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.FileLoadException.GetFileLoadExceptionMessage(System.Int32,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.IO.FileLoadException.GetMessageForHR(System.Int32,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.IO.FileLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.FileNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.FileNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileNotFoundException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use FileStream(SafeFileHandle handle, FileAccess access) instead. | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess,System.Boolean) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess,System.Boolean) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use FileStream(SafeFileHandle handle, FileAccess access) and optionally make a new SafeFileHandle with ownsHandle=false if needed instead. | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use FileStream(SafeFileHandle handle, FileAccess access, int bufferSize) and optionally make a new SafeFileHandle with ownsHandle=false if needed instead. | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32,System.Boolean) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileStream..ctor(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32,System.Boolean) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use FileStream(SafeFileHandle handle, FileAccess access, int bufferSize, bool isAsync) and optionally make a new SafeFileHandle with ownsHandle=false if needed instead. | -| System.Void System.IO.FileStream.Lock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | freebsd | -| System.Void System.IO.FileStream.Lock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.IO.FileStream.Lock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | macos | -| System.Void System.IO.FileStream.Lock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.IO.FileStream.Unlock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | freebsd | -| System.Void System.IO.FileStream.Unlock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| System.Void System.IO.FileStream.Unlock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | macos | -| System.Void System.IO.FileStream.Unlock(System.Int64,System.Int64) | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| System.Void System.IO.FileStream.Write(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.FileStreamOptions.set_UnixCreateMode(System.Nullable<System.IO.UnixFileMode>) | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.FileSystemInfo..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileSystemInfo..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.FileSystemInfo.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.FileSystemInfo.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.FileSystemInfo.set_UnixFileMode(System.IO.UnixFileMode) | [UnsupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.IO.IOException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.IOException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.IOException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.InvalidDataException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.MemoryStream.Write(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.PathTooLongException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.IO.PathTooLongException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.PathTooLongException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.IO.RandomAccess.FlushToDisk(Microsoft.Win32.SafeHandles.SafeFileHandle) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.RandomAccess.SetLength(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Int64) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.RandomAccess.Write(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList<System.ReadOnlyMemory<System.Byte>>,System.Int64) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.AllocateBuffer() | [MemberNotNullAttribute(...)] | 0 | _buffer | -| System.Void System.IO.Strategies.BufferedFileStreamStrategy.EnsureBufferAllocated() | [MemberNotNullAttribute(...)] | 0 | _buffer | -| System.Void System.IO.Stream.ObjectInvariant() | [ObsoleteAttribute(...)] | 0 | Do not call or override this method. | -| System.Void System.IO.Stream.ReadExactly(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.Stream.Write(System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.StreamWriter.Write(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StreamWriter.Write(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.StreamWriter.Write(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StreamWriter.Write(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StreamWriter.Write(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StreamWriter.WriteLine(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.StreamWriter.WriteLine(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StreamWriter.WriteLine(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StreamWriter.WriteLine(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StringWriter..ctor(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StringWriter.Write(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.StringWriter.Write(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StringWriter.Write(System.Text.StringBuilder) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.StringWriter.WriteLine(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.StringWriter.WriteLine(System.Text.StringBuilder) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter..ctor(System.IFormatProvider) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.Write(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.Write(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.Write(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.TextWriter.Write(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.Write(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.Write(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.Write(System.Text.StringBuilder) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.Write(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.TextWriter.Write(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.TextWriter.WriteLine(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.WriteLine(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.WriteLine(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.IO.TextWriter.WriteLine(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.WriteLine(System.String,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.WriteLine(System.String,System.Object,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.WriteLine(System.Text.StringBuilder) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.IO.TextWriter.WriteLine(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.TextWriter.WriteLine(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryAccessor..ctor(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.UnmanagedMemoryAccessor..ctor(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.UnmanagedMemoryAccessor.Initialize(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.UnmanagedMemoryAccessor.Write(System.Int64,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryAccessor.Write(System.Int64,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryAccessor.Write(System.Int64,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryAccessor.Write(System.Int64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryStream..ctor(System.Byte*,System.Int64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryStream..ctor(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryStream..ctor(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.UnmanagedMemoryStream..ctor(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.UnmanagedMemoryStream.Initialize(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IO.UnmanagedMemoryStream.Initialize(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IO.UnmanagedMemoryStream.Write(System.Byte[],System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.IndexOutOfRangeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.InsufficientExecutionStackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.InsufficientMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Int128..ctor(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.IntPtr..ctor(System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.InvalidCastException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.InvalidCastException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.InvalidCastException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.InvalidOperationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.InvalidOperationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.InvalidOperationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.InvalidProgramException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.InvalidTimeZoneException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.InvalidTimeZoneException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.InvalidTimeZoneException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MemberAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.MemberAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.MemberAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MemoryExtensions.CopyTo`1(!0[],System.Memory<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MemoryExtensions.CopyTo`1(!0[],System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MemoryExtensions.Replace`1(System.ReadOnlySpan<!0>,System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.MemoryExtensions.Replace`1(System.Span<!0>,!0,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.MemoryExtensions.Reverse`1(System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MemoryExtensions.Sort`1(System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MemoryExtensions.Sort`1(System.Span<!0>,System.Comparison<!0>) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.MemoryExtensions.Sort`2(System.Span<!0>,System.Span<!1>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MemoryExtensions.Sort`2(System.Span<!0>,System.Span<!1>,System.Comparison<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MemoryExtensions.Sort`3(System.Span<!0>,System.Span<!1>,!2) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MethodAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.MethodAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.MethodAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MissingFieldException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.MissingFieldException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MissingFieldException..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MissingFieldException..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MissingFieldException..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MissingMemberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.MissingMemberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.MissingMemberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MissingMemberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.MissingMemberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.MissingMemberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MissingMethodException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.MissingMethodException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MissingMethodException..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MissingMethodException..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.MissingMethodException..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ModuleHandle.GetModuleType(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.ModuleHandle.GetPEKind(System.Runtime.CompilerServices.QCallModule,System.Int32*,System.Int32*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.ModuleHandle.ResolveField(System.Runtime.CompilerServices.QCallModule,System.Int32,System.IntPtr*,System.Int32,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.ModuleHandle.ResolveType(System.Runtime.CompilerServices.QCallModule,System.Int32,System.IntPtr*,System.Int32,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.MulticastDelegate..ctor(System.Object,System.String) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The target method might be removed | -| System.Void System.MulticastDelegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.MulticastDelegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.MulticastNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Net.WebUtility.HtmlDecode(System.String,System.IO.TextWriter) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Net.WebUtility.HtmlEncode(System.String,System.IO.TextWriter) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.NotFiniteNumberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.NotFiniteNumberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.NotFiniteNumberException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.NotFiniteNumberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.NotFiniteNumberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.NotFiniteNumberException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.NotImplementedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.NotImplementedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.NotImplementedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.NotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.NotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.NotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.NullReferenceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.NullReferenceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.NullReferenceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Numerics.Vector2.CopyTo(System.Single[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector2.CopyTo(System.Single[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector3.CopyTo(System.Single[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector3.CopyTo(System.Single[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector4.CopyTo(System.Single[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector4.CopyTo(System.Single[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector.StoreAlignedNonTemporal`1(System.Numerics.Vector<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector.StoreAlignedNonTemporal`1(System.Numerics.Vector<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Numerics.Vector.StoreAligned`1(System.Numerics.Vector<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector.StoreAligned`1(System.Numerics.Vector<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Numerics.Vector.StoreUnsafe`1(System.Numerics.Vector<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector.StoreUnsafe`1(System.Numerics.Vector<!0>,!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector.StoreUnsafe`1(System.Numerics.Vector<!0>,!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector.Store`1(System.Numerics.Vector<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector.Store`1(System.Numerics.Vector<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Numerics.Vector.Widen(System.Numerics.Vector<System.Byte>,System.Numerics.Vector<System.UInt16>,System.Numerics.Vector<System.UInt16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector.Widen(System.Numerics.Vector<System.SByte>,System.Numerics.Vector<System.Int16>,System.Numerics.Vector<System.Int16>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector.Widen(System.Numerics.Vector<System.UInt16>,System.Numerics.Vector<System.UInt32>,System.Numerics.Vector<System.UInt32>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector.Widen(System.Numerics.Vector<System.UInt32>,System.Numerics.Vector<System.UInt64>,System.Numerics.Vector<System.UInt64>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Numerics.Vector`1..ctor(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector`1..ctor(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector`1..ctor(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector`1.CopyTo(!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Numerics.Vector`1.CopyTo(!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ObjectDisposedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ObjectDisposedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ObjectDisposedException..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ObjectDisposedException..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ObjectDisposedException..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.ObjectDisposedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.ObjectDisposedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.OperatingSystem.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.OperatingSystem.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.OperationCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.OperationCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.OperationCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.OutOfMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.OutOfMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.OutOfMemoryException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.OverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.OverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.OverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.PlatformNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.PlatformNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.PlatformNotSupportedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Random.CompatPrng.EnsureInitialized(System.Int32) | [MemberNotNullAttribute(...)] | 0 | _seedArray | -| System.Void System.Random.CompatPrng.Initialize(System.Int32) | [MemberNotNullAttribute(...)] | 0 | _seedArray | -| System.Void System.Random.GetItems`1(System.ReadOnlySpan<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Random.NextBytes(System.Span<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Random.Shuffle`1(System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.RankException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.RankException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.RankException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.ReadOnlySpan`1..ctor(System.Void*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.ReadOnlySpan`1..ctor(System.Void*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.AmbiguousMatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.Assembly.GetEntryAssemblyNative(System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Assembly.GetExecutingAssemblyNative(System.Runtime.CompilerServices.StackCrawlMarkHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Assembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Assembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.Assembly.add_ModuleResolve(System.Reflection.ModuleResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Assembly.remove_ModuleResolve(System.Reflection.ModuleResolveEventHandler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.AssemblyAlgorithmIdAttribute..ctor(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Reflection.AssemblyFlagsAttribute..ctor(System.Int32) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use AssemblyFlagsAttribute(AssemblyNameFlags) instead. | -| System.Void System.Reflection.AssemblyFlagsAttribute..ctor(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Reflection.AssemblyFlagsAttribute..ctor(System.UInt32) | [ObsoleteAttribute(...)] | 0 | This constructor has been deprecated. Use AssemblyFlagsAttribute(AssemblyNameFlags) instead. | -| System.Void System.Reflection.AssemblyName..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.AssemblyName.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.AssemblyName.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.AssemblyName.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.AssemblyName.InitializeAssemblySpec(System.Reflection.NativeAssemblyNameParts*,System.Void*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.CustomAttribute.AddCustomAttributes(System.RuntimeType.ListBuilder<System.Object>,System.Reflection.RuntimeModule,System.Int32,System.RuntimeType,System.Boolean,System.RuntimeType.ListBuilder<System.Object>) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Reflection.CustomAttribute.AddCustomAttributes(System.RuntimeType.ListBuilder<System.Object>,System.Reflection.RuntimeModule,System.Int32,System.RuntimeType,System.Boolean,System.RuntimeType.ListBuilder<System.Object>) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:MethodParameterDoesntMeetThisParameterRequirements | -| System.Void System.Reflection.CustomAttributeFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.CustomAttributeFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.CustomAttributeFormatException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.Emit.AssemblyBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.ConstructorBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.DynamicILInfo.SetCode(System.Byte*,System.Int32,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Reflection.Emit.DynamicILInfo.SetCode(System.Byte*,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.DynamicILInfo.SetCode(System.Byte[],System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.DynamicILInfo.SetExceptions(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Reflection.Emit.DynamicILInfo.SetExceptions(System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.DynamicILInfo.SetExceptions(System.Byte[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.DynamicILInfo.SetLocalSignature(System.Byte*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Reflection.Emit.DynamicILInfo.SetLocalSignature(System.Byte*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.DynamicILInfo.SetLocalSignature(System.Byte[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Reflection.Module,System.Boolean) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type,System.Boolean) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Type,System.Type[]) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Type,System.Type[],System.Boolean) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Type,System.Type[],System.Reflection.Module) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Type,System.Type[],System.Reflection.Module,System.Boolean) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Type,System.Type[],System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod..ctor(System.String,System.Type,System.Type[],System.Type,System.Boolean) | [RequiresDynamicCodeAttribute(...)] | 0 | Creating a DynamicMethod requires dynamic code. | -| System.Void System.Reflection.Emit.DynamicMethod.Init(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type,System.Reflection.Module,System.Boolean,System.Boolean) | [MemberNotNullAttribute(...)] | 0 | _module | -| System.Void System.Reflection.Emit.DynamicMethod.Init(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type,System.Reflection.Module,System.Boolean,System.Boolean) | [MemberNotNullAttribute(...)] | 0 | _name | -| System.Void System.Reflection.Emit.DynamicMethod.Init(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type,System.Reflection.Module,System.Boolean,System.Boolean) | [MemberNotNullAttribute(...)] | 0 | _parameterTypes | -| System.Void System.Reflection.Emit.DynamicMethod.Init(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type,System.Reflection.Module,System.Boolean,System.Boolean) | [MemberNotNullAttribute(...)] | 0 | _returnType | -| System.Void System.Reflection.Emit.EnumBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.EventBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.FieldBuilder.SetConstantCore(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraintCore(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Emit.ILGenerator.BeginCatchBlock(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.ILGenerator.Emit(System.Reflection.Emit.OpCode,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Reflection.Emit.ILGenerator.EmitCalli(System.Reflection.Emit.OpCode,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.ILGenerator.EmitCalli(System.Reflection.Emit.OpCode,System.Runtime.InteropServices.CallingConvention,System.Type,System.Type[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.MethodBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.MethodBuilder.SetSignatureCore(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.ModuleBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.ParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Emit.ParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Emit.ParameterBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.PropertyBuilder.SetConstantCore(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.PropertyBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.RuntimeAssemblyBuilder.CreateDynamicAssembly(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Reflection.NativeAssemblyNameParts*,System.Configuration.Assemblies.AssemblyHashAlgorithm,System.Reflection.Emit.AssemblyBuilderAccess,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeEnumBuilder..ctor(System.String,System.Type,System.Reflection.TypeAttributes,System.Reflection.Emit.RuntimeModuleBuilder) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Reflection.Emit.RuntimeEnumBuilder..ctor(System.String,System.Type,System.Reflection.TypeAttributes,System.Reflection.Emit.RuntimeModuleBuilder) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2064:UnrecognizedReflectionPattern | -| System.Void System.Reflection.Emit.RuntimeModuleBuilder.SetFieldRVAContent(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.Emit.RuntimeModuleBuilder.SetFieldRVAContent(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.Emit.RuntimeModuleBuilder.SetFieldRVAContent(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Byte[],System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.AddInterfaceImpl(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineCustomAttribute(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.ReadOnlySpan<System.Byte>,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineCustomAttribute(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.ReadOnlySpan<System.Byte>,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineCustomAttribute(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.ReadOnlySpan<System.Byte>,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodImpl(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodSemantics(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Reflection.MethodSemanticsAttributes,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetClassLayout(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Reflection.Emit.PackingSize,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetConstantValue(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32,System.Void*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetFieldLayoutOffset(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Boolean,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32,System.Reflection.Emit.ExceptionHandler[],System.Int32,System.Int32[],System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Boolean,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32,System.Reflection.Emit.ExceptionHandler[],System.Int32,System.Int32[],System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Boolean,System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32,System.Reflection.Emit.ExceptionHandler[],System.Int32,System.Int32[],System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetMethodImpl(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Reflection.MethodImplAttributes) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetPInvokeData(System.Runtime.CompilerServices.QCallModule,System.String,System.String,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetPInvokeData(System.Runtime.CompilerServices.QCallModule,System.String,System.String,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.SetParentType(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.RuntimeTypeBuilder.TermCreateClass(System.Runtime.CompilerServices.QCallModule,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Emit.SignatureHelper.Init(System.Reflection.Module) | [MemberNotNullAttribute(...)] | 0 | m_signature | -| System.Void System.Reflection.Emit.SignatureHelper.Init(System.Reflection.Module,System.Reflection.MdSigCallingConvention) | [MemberNotNullAttribute(...)] | 0 | m_signature | -| System.Void System.Reflection.Emit.SignatureHelper.Init(System.Reflection.Module,System.Reflection.MdSigCallingConvention,System.Int32) | [MemberNotNullAttribute(...)] | 0 | m_signature | -| System.Void System.Reflection.Emit.TypeBuilder.SetCustomAttributeCore(System.Reflection.ConstructorInfo,System.ReadOnlySpan<System.Byte>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Reflection.Emit.TypeBuilder.SetParent(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.Emit.TypeBuilder.SetParentCore(System.Type) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.FieldInfo.SetValue(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.FieldInfo.SetValue(System.Object,System.Object,System.Reflection.BindingFlags,System.Reflection.Binder,System.Globalization.CultureInfo) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.FieldInfo.SetValueDirect(System.TypedReference,System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Reflection.InvalidFilterCriteriaException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.InvalidFilterCriteriaException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.InvalidFilterCriteriaException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.Metadata.MetadataUpdater.ApplyUpdate(System.Runtime.CompilerServices.QCallAssembly,System.Byte*,System.Int32,System.Byte*,System.Int32,System.Byte*,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.Metadata.RuntimeTypeMetadataUpdateHandler.ClearCache(System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Reflection.Metadata.RuntimeTypeMetadataUpdateHandler.ClearCache(System.Type[]) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.Reflection.Module.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.Module.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.ReflectionTypeLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.ReflectionTypeLoadException..ctor(System.Type[],System.Exception[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.ReflectionTypeLoadException..ctor(System.Type[],System.Exception[],System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Reflection.ReflectionTypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.ReflectionTypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.RuntimeAssembly.AddPublicNestedTypes(System.Type,System.Collections.Generic.List<System.Type>,System.Collections.Generic.List<System.Exception>) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types might be removed because recursive nested types can't currently be annotated for dynamic access. | -| System.Void System.Reflection.RuntimeAssembly.GetEntryPoint(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetExportedTypes(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetForwardedType(System.Runtime.CompilerServices.QCallAssembly,System.Reflection.MetadataToken,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetFullName(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetImageRuntimeVersion(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetLocale(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetLocation(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetModule(System.Runtime.CompilerServices.QCallAssembly,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.RuntimeAssembly.GetModule(System.Runtime.CompilerServices.QCallAssembly,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.RuntimeAssembly.GetModules(System.Runtime.CompilerServices.QCallAssembly,System.Boolean,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.RuntimeAssembly.GetModules(System.Runtime.CompilerServices.QCallAssembly,System.Boolean,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.RuntimeAssembly.GetModules(System.Runtime.CompilerServices.QCallAssembly,System.Boolean,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.RuntimeAssembly.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.RuntimeAssembly.GetPublicKey(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetSimpleName(System.Runtime.CompilerServices.QCallAssembly,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.GetTypeCore(System.Runtime.CompilerServices.QCallAssembly,System.String,System.ReadOnlySpan<System.String>,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.RuntimeAssembly.GetTypeCore(System.Runtime.CompilerServices.QCallAssembly,System.String,System.ReadOnlySpan<System.String>,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.RuntimeAssembly.GetTypeCoreIgnoreCase(System.Runtime.CompilerServices.QCallAssembly,System.String,System.ReadOnlySpan<System.String>,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.RuntimeAssembly.GetTypeCoreIgnoreCase(System.Runtime.CompilerServices.QCallAssembly,System.String,System.ReadOnlySpan<System.String>,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.RuntimeAssembly.GetVersion(System.Runtime.CompilerServices.QCallAssembly,System.Int32,System.Int32,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.RuntimeAssembly.GetVersion(System.Runtime.CompilerServices.QCallAssembly,System.Int32,System.Int32,System.Int32,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.RuntimeAssembly.GetVersion(System.Runtime.CompilerServices.QCallAssembly,System.Int32,System.Int32,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeAssembly.InternalLoad(System.Reflection.NativeAssemblyNameParts*,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StackCrawlMarkHandle,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Reflection.RuntimeAssembly.InternalLoad(System.Reflection.NativeAssemblyNameParts*,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StackCrawlMarkHandle,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Reflection.RuntimeAssembly.InternalLoad(System.Reflection.NativeAssemblyNameParts*,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StackCrawlMarkHandle,System.Boolean,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeConstructorInfo.InvokeClassConstructor() | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Reflection.RuntimeConstructorInfo.InvokeClassConstructor() | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2059:RunClassConstructor | -| System.Void System.Reflection.RuntimeCustomAttributeData..ctor(System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.Reflection.ConstArray) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Reflection.RuntimeCustomAttributeData..ctor(System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.Reflection.ConstArray) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Reflection.RuntimeCustomAttributeData..ctor(System.Reflection.RuntimeModule,System.Reflection.MetadataToken,System.Reflection.ConstArray) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Void System.Reflection.RuntimeCustomAttributeData.Init(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Reflection.RuntimeCustomAttributeData.Init(System.Object) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2075:UnrecognizedReflectionPattern | -| System.Void System.Reflection.RuntimeModule.GetFullyQualifiedName(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.RuntimeModule.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.RuntimeModule.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.RuntimeModule.GetScopeName(System.Runtime.CompilerServices.QCallModule,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Reflection.StrongNameKeyPair..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.StrongNameKeyPair..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.TargetException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.TargetException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Reflection.TargetException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.TargetInvocationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Reflection.TargetParameterCountException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Resources.MissingManifestResourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Resources.MissingManifestResourceException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Resources.MissingSatelliteAssemblyException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Resources.MissingSatelliteAssemblyException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Resources.MissingSatelliteAssemblyException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Resources.ResourceManager.CommonAssemblyInit() | [MemberNotNullAttribute(...)] | 0 | _resourceGroveler | -| System.Void System.Resources.ResourceReader..ctor(System.IO.Stream) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Resources.ResourceReader..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Resources.ResourceReader.GetResourceData(System.String,System.String,System.Byte[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Resources.ResourceReader.ReadResources() | [MemberNotNullAttribute(...)] | 0 | _typeNamePositions | -| System.Void System.Resources.ResourceReader.ReadResources() | [MemberNotNullAttribute(...)] | 0 | _typeTable | -| System.Void System.Resources.ResourceReader._ReadResources() | [MemberNotNullAttribute(...)] | 0 | _typeNamePositions | -| System.Void System.Resources.ResourceReader._ReadResources() | [MemberNotNullAttribute(...)] | 0 | _typeTable | -| System.Void System.Runtime.AmbiguousImplementationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute..ctor(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.AsyncStateMachineAttribute..ctor(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable.ConfiguredValueTaskAwaiter.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable.ConfiguredValueTaskAwaiter.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.DecimalConstantAttribute..ctor(System.Byte,System.Byte,System.UInt32,System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.DefaultInterpolatedStringHandler..ctor(System.Int32,System.Int32,System.IFormatProvider,System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted`1(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendLiteral(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ICriticalNotifyCompletion.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.IndexerNameAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.IteratorStateMachineAttribute..ctor(System.Type) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.CleanupCode.Invoke(System.Object,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.CompileMethod(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(System.Runtime.CompilerServices.RuntimeHelpers.TryCode,System.Runtime.CompilerServices.RuntimeHelpers.CleanupCode,System.Object) | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.GetUninitializedObject(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegions() | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareConstrainedRegionsNoOP() | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareContractedDelegate(System.Delegate) | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(System.RuntimeMethodHandle,System.RuntimeTypeHandle[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(System.RuntimeMethodHandleInternal,System.IntPtr*,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.ProbeForSufficientStack() | [ObsoleteAttribute(...)] | 0 | The Constrained Execution Region (CER) feature is not supported. | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(System.RuntimeTypeHandle) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Trimmer can't guarantee existence of class constructor | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.RunModuleConstructor(System.Runtime.CompilerServices.QCallModule) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.CompilerServices.RuntimeHelpers.TryCode.Invoke(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.CompilerServices.RuntimeWrappedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.CompilerServices.RuntimeWrappedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.RuntimeWrappedException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.CompilerServices.StrongBox`1..ctor(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.SwitchExpressionException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.CompilerServices.TaskAwaiter.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.TaskAwaiter.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.TaskAwaiter`1.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.TaskAwaiter`1.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte,System.Byte,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte,System.Byte,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(!0,System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(!0,System.Void*) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(System.Void*,!0) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.Copy`1(System.Void*,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte,System.Byte,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte,System.Byte,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned`1(System.Void*,!0) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.WriteUnaligned`1(System.Void*,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.Unsafe.Write`1(System.Void*,!0) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.CompilerServices.Unsafe.Write`1(System.Void*,!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Runtime.CompilerServices.ValueTaskAwaiter.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ValueTaskAwaiter.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ValueTaskAwaiter`1.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.ValueTaskAwaiter`1.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.YieldAwaitable.YieldAwaiter.OnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.CompilerServices.YieldAwaitable.YieldAwaiter.UnsafeOnCompleted(System.Action) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.ControlledExecution.AbortThread(System.Threading.ThreadHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.ControlledExecution.ResetAbortThread() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.ControlledExecution.Run(System.Action,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.ControlledExecution.Run(System.Action,System.Threading.CancellationToken) | [ObsoleteAttribute(...)] | 0 | ControlledExecution.Run method may corrupt the process and should not be used in production code. | -| System.Void System.Runtime.InteropServices.COMException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.COMException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.COMException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.ComTypes.IBindCtx.EnumObjectParam(System.Runtime.InteropServices.ComTypes.IEnumString) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.IBindCtx.GetRunningObjectTable(System.Runtime.InteropServices.ComTypes.IRunningObjectTable) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.IConnectionPointContainer.FindConnectionPoint(System.Guid,System.Runtime.InteropServices.ComTypes.IConnectionPoint) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.IMoniker.Enum(System.Boolean,System.Runtime.InteropServices.ComTypes.IEnumMoniker) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.IMoniker.Reduce(System.Runtime.InteropServices.ComTypes.IBindCtx,System.Int32,System.Runtime.InteropServices.ComTypes.IMoniker,System.Runtime.InteropServices.ComTypes.IMoniker) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.IPersistFile.Save(System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation2(System.Int32,System.String,System.Int32,System.String) | [LCIDConversionAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetMops(System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.ITypeInfo.GetMops(System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation2(System.Int32,System.String,System.Int32,System.String) | [LCIDConversionAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal(System.IntPtr,System.IntPtr,System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal(System.IntPtr,System.IntPtr,System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal(System.IntPtr,System.IntPtr,System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.InteropServices.ComWrappers.RegisterForMarshalling(System.Runtime.InteropServices.ComWrappers) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Runtime.InteropServices.ComWrappers.SetGlobalInstanceRegisteredForMarshalling(System.Int64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.InteropServices.ComWrappers.SetGlobalInstanceRegisteredForTrackerSupport(System.Int64) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.InteropServices.CurrencyWrapper..ctor(System.Object) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.ExternalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.ExternalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.ExternalException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.InvalidComObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.InvalidComObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.InvalidComObjectException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.InvalidOleVariantTypeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.InvalidOleVariantTypeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.InvalidOleVariantTypeException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.LibraryImportAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.ChangeWrapperHandleStrength(System.Object,System.Boolean) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Runtime.InteropServices.Marshal.DestroyStructure(System.IntPtr,System.Type) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.DestroyStructure(System.IntPtr,System.Type) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available. Use the DestroyStructure<T> overload instead. | -| System.Void System.Runtime.InteropServices.Marshal.DestroyStructure`1(System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.Marshal.DestroyStructure`1(System.IntPtr) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Void System.Runtime.InteropServices.Marshal.DestroyStructure`1(System.IntPtr) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Void System.Runtime.InteropServices.Marshal.GetNativeVariantForObject(System.Object,System.IntPtr) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.GetNativeVariantForObject(System.Object,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.Marshal.GetNativeVariantForObject(System.Object,System.IntPtr) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Runtime.InteropServices.Marshal.GetNativeVariantForObject`1(!0,System.IntPtr) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.GetNativeVariantForObject`1(!0,System.IntPtr) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.InteropServices.Marshal.GetNativeVariantForObject`1(!0,System.IntPtr) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Runtime.InteropServices.Marshal.InternalPrelink(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.InteropServices.Marshal.PrelinkAll(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Runtime.InteropServices.Marshal.PrelinkAll(System.Type) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2070:UnrecognizedReflectionPattern | -| System.Void System.Runtime.InteropServices.Marshal.PtrToStructure(System.IntPtr,System.Object) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.PtrToStructure(System.IntPtr,System.Object) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Void System.Runtime.InteropServices.Marshal.StructureToPtr(System.Object,System.IntPtr,System.Boolean) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.StructureToPtr(System.Object,System.IntPtr,System.Boolean) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available. Use the StructureToPtr<T> overload instead. | -| System.Void System.Runtime.InteropServices.Marshal.StructureToPtr`1(!0,System.IntPtr,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 0 | AotAnalysis | -| System.Void System.Runtime.InteropServices.Marshal.StructureToPtr`1(!0,System.IntPtr,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL3050:AotUnfriendlyApi | -| System.Void System.Runtime.InteropServices.Marshal.WriteByte(System.Object,System.Int32,System.Byte) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.WriteByte(System.Object,System.Int32,System.Byte) | [ObsoleteAttribute(...)] | 0 | WriteByte(Object, Int32, Byte) may be unavailable in future releases. | -| System.Void System.Runtime.InteropServices.Marshal.WriteByte(System.Object,System.Int32,System.Byte) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt16(System.Object,System.Int32,System.Char) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt16(System.Object,System.Int32,System.Char) | [ObsoleteAttribute(...)] | 0 | WriteInt16(Object, Int32, Char) may be unavailable in future releases. | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt16(System.Object,System.Int32,System.Char) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt16(System.Object,System.Int32,System.Int16) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt16(System.Object,System.Int32,System.Int16) | [ObsoleteAttribute(...)] | 0 | WriteInt16(Object, Int32, Int16) may be unavailable in future releases. | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt16(System.Object,System.Int32,System.Int16) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt32(System.Object,System.Int32,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt32(System.Object,System.Int32,System.Int32) | [ObsoleteAttribute(...)] | 0 | WriteInt32(Object, Int32, Int32) may be unavailable in future releases. | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt32(System.Object,System.Int32,System.Int32) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt64(System.Object,System.Int32,System.Int64) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt64(System.Object,System.Int32,System.Int64) | [ObsoleteAttribute(...)] | 0 | WriteInt64(Object, Int32, Int64) may be unavailable in future releases. | -| System.Void System.Runtime.InteropServices.Marshal.WriteInt64(System.Object,System.Int32,System.Int64) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Void System.Runtime.InteropServices.Marshal.WriteIntPtr(System.Object,System.Int32,System.IntPtr) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.Marshal.WriteIntPtr(System.Object,System.Int32,System.IntPtr) | [ObsoleteAttribute(...)] | 0 | WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases. | -| System.Void System.Runtime.InteropServices.Marshal.WriteIntPtr(System.Object,System.Int32,System.IntPtr) | [RequiresDynamicCodeAttribute(...)] | 0 | Marshalling code for the object might not be available | -| System.Void System.Runtime.InteropServices.MarshalDirectiveException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.MarshalDirectiveException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.MarshalDirectiveException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.Marshalling.SafeHandleMarshaller`1.ManagedToUnmanagedIn.FromManaged(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.NativeLibrary.FreeLib(System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.InteropServices.NativeMemory.AlignedFree(System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.NativeMemory.Clear(System.Void*,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.NativeMemory.Copy(System.Void*,System.Void*,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.NativeMemory.Fill(System.Void*,System.UIntPtr,System.Byte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.NativeMemory.Free(System.Void*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SEHException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.SEHException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.SEHException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.SafeArrayRankMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.SafeArrayRankMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.SafeArrayRankMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.SafeArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.SafeArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.InteropServices.SafeArrayTypeMismatchException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.InteropServices.SafeBuffer.AcquirePointer(System.Byte*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.Initialize(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.Initialize(System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.Initialize`1(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.ReadArray`1(System.UInt64,!0[],System.Int32,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.ReadSpan`1(System.UInt64,System.Span<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.WriteArray`1(System.UInt64,!0[],System.Int32,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.WriteSpan`1(System.UInt64,System.ReadOnlySpan<!0>) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.InteropServices.SafeBuffer.Write`1(System.UInt64,!0) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector64.CopyTo`1(System.Runtime.Intrinsics.Vector64<!0>,!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector64.CopyTo`1(System.Runtime.Intrinsics.Vector64<!0>,!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector64.CopyTo`1(System.Runtime.Intrinsics.Vector64<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAligned`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector64.StoreAligned`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector64.StoreUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector64.StoreUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector64.StoreUnsafe`1(System.Runtime.Intrinsics.Vector64<!0>,!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector64.Store`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector64.Store`1(System.Runtime.Intrinsics.Vector64<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector128.CopyTo`1(System.Runtime.Intrinsics.Vector128<!0>,!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector128.CopyTo`1(System.Runtime.Intrinsics.Vector128<!0>,!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector128.CopyTo`1(System.Runtime.Intrinsics.Vector128<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAligned`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector128.StoreAligned`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector128.StoreUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector128.StoreUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector128.StoreUnsafe`1(System.Runtime.Intrinsics.Vector128<!0>,!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector128.Store`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector128.Store`1(System.Runtime.Intrinsics.Vector128<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector256.CopyTo`1(System.Runtime.Intrinsics.Vector256<!0>,!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector256.CopyTo`1(System.Runtime.Intrinsics.Vector256<!0>,!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector256.CopyTo`1(System.Runtime.Intrinsics.Vector256<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAligned`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector256.StoreAligned`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector256.StoreUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector256.StoreUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector256.StoreUnsafe`1(System.Runtime.Intrinsics.Vector256<!0>,!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector256.Store`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector256.Store`1(System.Runtime.Intrinsics.Vector256<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector512.CopyTo`1(System.Runtime.Intrinsics.Vector512<!0>,!0[]) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector512.CopyTo`1(System.Runtime.Intrinsics.Vector512<!0>,!0[],System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector512.CopyTo`1(System.Runtime.Intrinsics.Vector512<!0>,System.Span<!0>) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAlignedNonTemporal`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAligned`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector512.StoreAligned`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.Vector512.StoreUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector512.StoreUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,!0,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector512.StoreUnsafe`1(System.Runtime.Intrinsics.Vector512<!0>,!0,System.UIntPtr) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Intrinsics.Vector512.Store`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Intrinsics.Vector512.Store`1(System.Runtime.Intrinsics.Vector512<!0>,!0*) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Intrinsics.X86.X86Base.__cpuidex(System.Int32*,System.Int32,System.Int32) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.Loader.AssemblyLoadContext..ctor(System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Loader.AssemblyLoadContext.InternalSetProfileRoot(System.String) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Runtime.Loader.AssemblyLoadContext.InternalSetProfileRoot(System.String) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Runtime.Loader.AssemblyLoadContext.InternalStartProfile(System.String,System.IntPtr) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Runtime.Loader.AssemblyLoadContext.InternalStartProfile(System.String,System.IntPtr) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(System.IntPtr,System.String,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(System.IntPtr,System.String,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Runtime.Loader.AssemblyLoadContext.LoadFromPath(System.IntPtr,System.String,System.String,System.Runtime.CompilerServices.ObjectHandleOnStack) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Void System.Runtime.Loader.AssemblyLoadContext.LoadFromStream(System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.Loader.AssemblyLoadContext.LoadFromStream(System.IntPtr,System.IntPtr,System.Int32,System.IntPtr,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [RequiresUnreferencedCodeAttribute(...)] | 0 | Types and members the loaded assembly depends on might be removed | -| System.Void System.Runtime.Loader.AssemblyLoadContext.PrepareForAssemblyLoadContextRelease(System.IntPtr,System.IntPtr) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Runtime.Loader.AssemblyLoadContext.StartProfileOptimization(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.ProfileOptimization.SetProfileRoot(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.ProfileOptimization.StartProfile(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Void System.Runtime.Serialization.SafeSerializationEventArgs.AddSerializedState(System.Runtime.Serialization.ISafeSerializationData) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Serialization.SerializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Serialization.SerializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Serialization.SerializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter) | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Serialization.SerializationInfo..ctor(System.Type,System.Runtime.Serialization.IFormatterConverter,System.Boolean) | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Void System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Serialization.SerializationInfo.AddValue(System.String,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Runtime.Serialization.StreamingContext..ctor(System.Runtime.Serialization.StreamingContextStates) | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Void System.Runtime.Serialization.StreamingContext..ctor(System.Runtime.Serialization.StreamingContextStates,System.Object) | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| System.Void System.Runtime.Versioning.ObsoletedOSPlatformAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Versioning.ObsoletedOSPlatformAttribute..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Versioning.SupportedOSPlatformAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Versioning.SupportedOSPlatformGuardAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Versioning.TargetFrameworkAttribute.set_FrameworkDisplayName(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Runtime.Versioning.TargetPlatformAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Runtime.Versioning.UnsupportedOSPlatformGuardAttribute..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.RuntimeFieldHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.RuntimeFieldHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.RuntimeFieldHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.RuntimeMethodHandle.ConstructInstantiation(System.RuntimeMethodHandleInternal,System.TypeNameFormatFlags,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeMethodHandle.Destroy(System.RuntimeMethodHandleInternal) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeMethodHandle.GetMethodInstantiation(System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.ObjectHandleOnStack,Interop.BOOL) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeMethodHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.RuntimeMethodHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.RuntimeMethodHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.RuntimeMethodHandle.GetTypicalMethodDefinition(System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeMethodHandle.StripMethodInstantiation(System.RuntimeMethodHandleInternal,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.ConstructName(System.Runtime.CompilerServices.QCallTypeHandle,System.TypeNameFormatFlags,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.CreateInstanceForAnotherGenericParameter(System.Runtime.CompilerServices.QCallTypeHandle,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.GetActivationInfo(System.Runtime.CompilerServices.ObjectHandleOnStack,delegate* managed<Void*,Object>*,System.Void**,delegate* managed<Object,Void>*,Interop.BOOL*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.GetConstraints(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.GetGenericTypeDefinition(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.GetInstantiation(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack,Interop.BOOL) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.RuntimeTypeHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.RuntimeTypeHandle.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.RuntimeTypeHandle.Instantiate(System.Runtime.CompilerServices.QCallTypeHandle,System.IntPtr*,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.MakeArray(System.Runtime.CompilerServices.QCallTypeHandle,System.Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.MakeByRef(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.MakePointer(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.MakeSZArray(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.ObjectHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.RegisterCollectibleTypeDependency(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallAssembly) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.RuntimeTypeHandle.VerifyInterfaceIsImplemented(System.Runtime.CompilerServices.QCallTypeHandle,System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Security.Cryptography.CryptographicException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Security.Cryptography.CryptographicException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Security.Cryptography.CryptographicException..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Security.Cryptography.CryptographicException..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Security.PermissionSet.CopyTo(System.Array,System.Int32) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.PermissionSet.FromXml(System.Security.SecurityElement) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecureString..ctor(System.Char*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Security.SecurityElement..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityElement..ctor(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityElement.AddAttribute(System.String,System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityElement.AddChild(System.Security.SecurityElement) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityElement.set_Tag(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Security.SecurityException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.SecurityException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Security.VerificationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Security.VerificationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Security.VerificationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Signature.GetSignature(System.Void*,System.Int32,System.RuntimeFieldHandleInternal,System.IRuntimeMethodInfo,System.RuntimeType) | [MemberNotNullAttribute(...)] | 0 | m_arguments | -| System.Void System.Signature.GetSignature(System.Void*,System.Int32,System.RuntimeFieldHandleInternal,System.IRuntimeMethodInfo,System.RuntimeType) | [MemberNotNullAttribute(...)] | 0 | m_returnTypeORfieldType | -| System.Void System.Span`1..ctor(System.Void*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Span`1..ctor(System.Void*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.StackOverflowException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.StartupHookProvider.CallStartupHook(System.Char*) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.StartupHookProvider.CallStartupHook(System.Char*) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:RequiresUnreferencedCode | -| System.Void System.StartupHookProvider.CallStartupHook(System.StartupHookProvider.StartupHookNameOrPath) | [RequiresUnreferencedCodeAttribute(...)] | 0 | The StartupHookSupport feature switch has been enabled for this app which is being trimmed. Startup hook code is not observable by the trimmer and so required assemblies, types and members may be removed | -| System.Void System.String..ctor(System.Char*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.String..ctor(System.Char*) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.String..ctor(System.Char*,System.Int32,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.String..ctor(System.Char*,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.String..ctor(System.Char[]) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.String..ctor(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.String..ctor(System.SByte*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.String..ctor(System.SByte*) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.String..ctor(System.SByte*,System.Int32,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.String..ctor(System.SByte*,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.String..ctor(System.SByte*,System.Int32,System.Int32,System.Text.Encoding) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.String..ctor(System.SByte*,System.Int32,System.Int32,System.Text.Encoding) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.String.CopyTo(System.Span<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.SystemException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.SystemException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.SystemException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Text.Decoder.Convert(System.Byte*,System.Int32,System.Char*,System.Int32,System.Boolean,System.Int32,System.Int32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Text.Decoder.Convert(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32,System.Int32,System.Boolean,System.Int32,System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Text.Decoder.set_Fallback(System.Text.DecoderFallback) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.DecoderFallbackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Text.Encoder.Convert(System.Char*,System.Int32,System.Byte*,System.Int32,System.Boolean,System.Int32,System.Int32,System.Boolean) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Text.Encoder.Convert(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32,System.Int32,System.Boolean) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Text.Encoder.set_Fallback(System.Text.EncoderFallback) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.EncoderFallbackException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Text.EncoderReplacementFallbackBuffer..ctor(System.Text.EncoderReplacementFallback) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Text.Encoding..ctor(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.Encoding.SetDefaultFallbacks() | [MemberNotNullAttribute(...)] | 0 | decoderFallback | -| System.Void System.Text.Encoding.SetDefaultFallbacks() | [MemberNotNullAttribute(...)] | 0 | encoderFallback | -| System.Void System.Text.Latin1Utility.WidenLatin1ToUtf16_Sse2(System.Byte*,System.Char*,System.UIntPtr) | [CompExactlyDependsOnAttribute(...)] | 0 | System.Runtime.Intrinsics.X86.Sse2 | -| System.Void System.Text.Rune..ctor(System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Text.StringBuilder..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder..ctor(System.String,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder..ctor(System.String,System.Int32,System.Int32,System.Int32) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted(System.Object,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted(System.ReadOnlySpan<System.Char>,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted(System.String,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted`1(!0,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted`1(!0,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Text.StringBuilder.CopyTo(System.Int32,System.Span<System.Char>,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void System.Text.TranscodingStream.EnsurePreReadConditions() | [MemberNotNullAttribute(...)] | 0 | [_innerDecoder,_thisEncoder,_readBuffer] | -| System.Void System.Text.TranscodingStream.EnsurePreWriteConditions() | [MemberNotNullAttribute(...)] | 0 | [_thisDecoder,_innerEncoder] | -| System.Void System.Text.UTF7Encoding..ctor() | [ObsoleteAttribute(...)] | 0 | The UTF-7 encoding is insecure and should not be used. Consider using UTF-8 instead. | -| System.Void System.Text.UTF7Encoding..ctor(System.Boolean) | [ObsoleteAttribute(...)] | 0 | The UTF-7 encoding is insecure and should not be used. Consider using UTF-8 instead. | -| System.Void System.Text.UTF7Encoding.MakeTables() | [MemberNotNullAttribute(...)] | 0 | _base64Bytes | -| System.Void System.Text.UTF7Encoding.MakeTables() | [MemberNotNullAttribute(...)] | 0 | _base64Values | -| System.Void System.Text.UTF7Encoding.MakeTables() | [MemberNotNullAttribute(...)] | 0 | _directEncode | -| System.Void System.Threading.AbandonedMutexException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.AbandonedMutexException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.AbandonedMutexException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.CompressedStack.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.CompressedStack.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.ContextCallback.Invoke(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.EventWaitHandle..ctor(System.Boolean,System.Threading.EventResetMode,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.EventWaitHandle..ctor(System.Boolean,System.Threading.EventResetMode,System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.ExecutionContext.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.ExecutionContext.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.Interlocked._MemoryBarrierProcessWide() | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Threading.LockRecursionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.LockRecursionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.LockRecursionException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.ManualResetEventSlim.Wait() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.ManualResetEventSlim.Wait(System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Mutex..ctor(System.Boolean,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Mutex..ctor(System.Boolean,System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Overlapped..ctor(System.Int32,System.Int32,System.Int32,System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Overlapped..ctor(System.Int32,System.Int32,System.Int32,System.IAsyncResult) | [ObsoleteAttribute(...)] | 0 | This constructor is not 64-bit compatible and has been deprecated. Use the constructor that accepts an IntPtr for the event handle instead. | -| System.Void System.Threading.Overlapped..ctor(System.Int32,System.Int32,System.IntPtr,System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Overlapped.Free(System.Threading.NativeOverlapped*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Overlapped.set_AsyncResult(System.IAsyncResult) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.ParameterizedThreadStart.Invoke(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.PeriodicTimer..ctor(System.TimeSpan,System.TimeProvider) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.PreAllocatedOverlapped..ctor(System.Threading.IOCompletionCallback,System.Object,System.Object) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.PreAllocatedOverlapped..ctor(System.Threading.IOCompletionCallback,System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Semaphore..ctor(System.Int32,System.Int32,System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Semaphore..ctor(System.Int32,System.Int32,System.String,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.SemaphoreFullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.SemaphoreFullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.SemaphoreFullException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.SemaphoreSlim.Wait() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.SemaphoreSlim.Wait(System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.SendOrPostCallback.Invoke(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.SynchronizationContext.SetSynchronizationContext(System.Threading.SynchronizationContext) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.SynchronizationLockException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.SynchronizationLockException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.SynchronizationLockException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action<System.Object>,System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task..ctor(System.Action<System.Object>,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task..ctor(System.Action<System.Object>,System.Object,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task..ctor(System.Action<System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task..ctor(System.Action<System.Object>,System.Object,System.Threading.Tasks.TaskCreationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[]) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[],System.Threading.CancellationToken) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Tasks.TaskAsyncEnumerableExtensions.ManualResetEventWithAwaiterSupport.Wait`1(!0) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Tasks.TaskCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.Tasks.TaskCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.Tasks.TaskCanceledException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.Tasks.TaskCompletionSource..ctor(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskCompletionSource..ctor(System.Object,System.Threading.Tasks.TaskCreationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskCompletionSource`1..ctor(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskCompletionSource`1..ctor(System.Object,System.Threading.Tasks.TaskCreationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskFactory..ctor(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskFactory..ctor(System.Threading.Tasks.TaskScheduler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskFactory`1..ctor(System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions,System.Threading.Tasks.TaskContinuationOptions,System.Threading.Tasks.TaskScheduler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskFactory`1..ctor(System.Threading.Tasks.TaskScheduler) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TaskSchedulerException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.Tasks.TaskSchedulerException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.Tasks.TaskSchedulerException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.Tasks.Task`1..ctor(System.Func<!0,System.Object>,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task`1..ctor(System.Func<!0,System.Object>,System.Object,System.Threading.CancellationToken) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task`1..ctor(System.Func<!0,System.Object>,System.Object,System.Threading.CancellationToken,System.Threading.Tasks.TaskCreationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.Task`1..ctor(System.Func<!0,System.Object>,System.Object,System.Threading.Tasks.TaskCreationOptions) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Tasks.TplEventSource.AwaitTaskContinuationScheduled(System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Threading.Tasks.TplEventSource.AwaitTaskContinuationScheduled(System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Threading.Tasks.TplEventSource.TaskCompleted(System.Int32,System.Int32,System.Int32,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Threading.Tasks.TplEventSource.TaskCompleted(System.Int32,System.Int32,System.Int32,System.Boolean) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Threading.Tasks.TplEventSource.TaskScheduled(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Threading.Tasks.TplEventSource.TaskScheduled(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Threading.Tasks.TplEventSource.TaskWaitBegin(System.Int32,System.Int32,System.Int32,System.Threading.Tasks.TplEventSource.TaskWaitBehavior,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Threading.Tasks.TplEventSource.TaskWaitBegin(System.Int32,System.Int32,System.Int32,System.Threading.Tasks.TplEventSource.TaskWaitBehavior,System.Int32) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Threading.Tasks.TplEventSource.TraceOperationBegin(System.Int32,System.String,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Threading.Tasks.TplEventSource.TraceOperationBegin(System.Int32,System.String,System.Int64) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Threading.Tasks.TplEventSource.TraceSynchronousWorkEnd(System.Threading.Tasks.CausalitySynchronousWork) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Threading.Tasks.TplEventSource.TraceSynchronousWorkEnd(System.Threading.Tasks.CausalitySynchronousWork) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2026:UnrecognizedReflectionPattern | -| System.Void System.Threading.Thread.Abort() | [ObsoleteAttribute(...)] | 0 | Thread.Abort is not supported and throws PlatformNotSupportedException. | -| System.Void System.Threading.Thread.Abort(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Thread.Abort(System.Object) | [ObsoleteAttribute(...)] | 0 | Thread.Abort is not supported and throws PlatformNotSupportedException. | -| System.Void System.Threading.Thread.InformThreadNameChange(System.Threading.ThreadHandle,System.String,System.Int32) | [GeneratedCodeAttribute(...)] | 0 | Microsoft.Interop.LibraryImportGenerator | -| System.Void System.Threading.Thread.InformThreadNameChange(System.Threading.ThreadHandle,System.String,System.Int32) | [GeneratedCodeAttribute(...)] | 1 | 8.0.9.8001 | -| System.Void System.Threading.Thread.ResetAbort() | [ObsoleteAttribute(...)] | 0 | Thread.ResetAbort is not supported and throws PlatformNotSupportedException. | -| System.Void System.Threading.Thread.Resume() | [ObsoleteAttribute(...)] | 0 | Thread.Resume has been deprecated. Use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. | -| System.Void System.Threading.Thread.SetApartmentState(System.Threading.ApartmentState) | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| System.Void System.Threading.Thread.SetCompressedStack(System.Threading.CompressedStack) | [ObsoleteAttribute(...)] | 0 | Code Access Security is not supported or honored by the runtime. | -| System.Void System.Threading.Thread.Start() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Thread.Start(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Thread.Start(System.Object) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Thread.StartInternal(System.Threading.ThreadHandle,System.Int32,System.Int32,System.Char*) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.Threading.Thread.Suspend() | [ObsoleteAttribute(...)] | 0 | Thread.Suspend has been deprecated. Use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. | -| System.Void System.Threading.Thread.UnsafeStart() | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Thread.UnsafeStart(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Thread.UnsafeStart(System.Object) | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| System.Void System.Threading.Thread.VolatileWrite(System.Object,System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Thread.VolatileWrite(System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Thread.VolatileWrite(System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Thread.VolatileWrite(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Thread.VolatileWrite(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Thread.VolatileWrite(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Thread.set_CurrentPrincipal(System.Security.Principal.IPrincipal) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Thread.set_Name(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.ThreadAbortException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.ThreadExceptionEventHandler.Invoke(System.Object,System.Threading.ThreadExceptionEventArgs) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.ThreadInterruptedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.ThreadInterruptedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.ThreadInterruptedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.ThreadPoolBoundHandle.FreeNativeOverlapped(System.Threading.NativeOverlapped*) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.ThreadStartException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.ThreadStateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.ThreadStateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.ThreadStateException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.Timer..ctor(System.Threading.TimerCallback,System.Object,System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Timer.TimerSetup(System.Threading.TimerCallback,System.Object,System.UInt32,System.UInt32,System.Boolean) | [MemberNotNullAttribute(...)] | 0 | _timer | -| System.Void System.Threading.TimerCallback.Invoke(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.Volatile.Write(System.SByte,System.SByte) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Volatile.Write(System.UInt16,System.UInt16) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Volatile.Write(System.UInt32,System.UInt32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Volatile.Write(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.Volatile.Write(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.Threading.WaitCallback.Invoke(System.Object) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.Threading.WaitHandleCannotBeOpenedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.Threading.WaitHandleCannotBeOpenedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Threading.WaitHandleCannotBeOpenedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.Threading.WaitOrTimerCallback.Invoke(System.Object,System.Boolean) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.TimeOnly.Deconstruct(System.Int32,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TimeOnly.Deconstruct(System.Int32,System.Int32,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TimeOnly.Deconstruct(System.Int32,System.Int32,System.Int32,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TimeOnly.Deconstruct(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TimeZoneNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TimeZoneNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TimeZoneNotFoundException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.TimeoutException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TimeoutException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TimeoutException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.TupleExtensions.Deconstruct`1(System.Tuple<!0>,!0) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`1(System.Tuple<!0>,!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`2(System.Tuple<!0,!1>,!0,!1) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`2(System.Tuple<!0,!1>,!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`3(System.Tuple<!0,!1,!2>,!0,!1,!2) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`3(System.Tuple<!0,!1,!2>,!0,!1,!2) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`4(System.Tuple<!0,!1,!2,!3>,!0,!1,!2,!3) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`4(System.Tuple<!0,!1,!2,!3>,!0,!1,!2,!3) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`5(System.Tuple<!0,!1,!2,!3,!4>,!0,!1,!2,!3,!4) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`5(System.Tuple<!0,!1,!2,!3,!4>,!0,!1,!2,!3,!4) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`6(System.Tuple<!0,!1,!2,!3,!4,!5>,!0,!1,!2,!3,!4,!5) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`6(System.Tuple<!0,!1,!2,!3,!4,!5>,!0,!1,!2,!3,!4,!5) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`7(System.Tuple<!0,!1,!2,!3,!4,!5,!6>,!0,!1,!2,!3,!4,!5,!6) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`7(System.Tuple<!0,!1,!2,!3,!4,!5,!6>,!0,!1,!2,!3,!4,!5,!6) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`8(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7>>,!0,!1,!2,!3,!4,!5,!6,!7) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`8(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7>>,!0,!1,!2,!3,!4,!5,!6,!7) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`9(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8>>,!0,!1,!2,!3,!4,!5,!6,!7,!8) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`9(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8>>,!0,!1,!2,!3,!4,!5,!6,!7,!8) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`10(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`10(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`11(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`11(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`12(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`12(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`13(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`13(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`14(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`14(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`15(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`15(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`16(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`16(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`17(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`17(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`18(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`18(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`19(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`19(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`20(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18,!19) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`20(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18,!19) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`21(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19,!20>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18,!19,!20) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TupleExtensions.Deconstruct`21(System.Tuple<!0,!1,!2,!3,!4,!5,!6,System.Tuple<!10,!11,!12,!13,!7,!8,!9,System.Tuple<!14,!15,!16,!17,!18,!19,!20>>>,!0,!1,!2,!3,!4,!5,!6,!7,!8,!9,!10,!11,!12,!13,!14,!15,!16,!17,!18,!19,!20) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Tuple`1..ctor(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Tuple`2..ctor(!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Type.GetEnumData(System.String[],System.Array) | [UnconditionalSuppressMessageAttribute(...)] | 0 | ReflectionAnalysis | -| System.Void System.Type.GetEnumData(System.String[],System.Array) | [UnconditionalSuppressMessageAttribute(...)] | 1 | IL2085:UnrecognizedReflectionPattern | -| System.Void System.TypeAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TypeAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TypeAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.TypeInitializationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.TypeInitializationException..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.TypeInitializationException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TypeInitializationException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.TypeLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TypeLoadException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.TypeLoadException..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.TypeLoadException..ctor(System.String,System.Exception) | [NullableContextAttribute(...)] | 0 | 2 | -| System.Void System.TypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TypeLoadException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.TypeLoadException.GetTypeLoadExceptionMessage(System.Int32,System.Runtime.CompilerServices.StringHandleOnStack) | [LibraryImportAttribute(...)] | 0 | QCall | -| System.Void System.TypeUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.TypeUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.TypeUnloadedException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.UInt128..ctor(System.UInt64,System.UInt64) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void System.UnauthorizedAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.UnauthorizedAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.UnauthorizedAccessException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.UnhandledExceptionEventHandler.Invoke(System.Object,System.UnhandledExceptionEventArgs) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.UnitySerializationHolder..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.UnitySerializationHolder.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ValueTuple`1..ctor(!0) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ValueTuple`2..ctor(!0,!1) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ValueTuple`3..ctor(!0,!1,!2) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.ValueTuple`4..ctor(!0,!1,!2,!3) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.Version..ctor(System.String) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.WeakReference..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.WeakReference..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.WeakReference..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.WeakReference.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.WeakReference.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [NullableContextAttribute(...)] | 0 | 1 | -| System.Void System.WeakReference.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void System.WeakReference`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [EditorBrowsableAttribute(...)] | 0 | 1 | -| System.Void System.WeakReference`1.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext) | [ObsoleteAttribute(...)] | 0 | This API supports obsolete formatter-based serialization. It should not be called or extended by application code. | -| System.Void* System.IntPtr.ToPointer() | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.IntPtr.op_Explicit(System.IntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.CompilerServices.Unsafe.Add`1(System.Void*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.CompilerServices.Unsafe.Add`1(System.Void*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void* System.Runtime.CompilerServices.Unsafe.AsPointer`1(!0) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.CompilerServices.Unsafe.AsPointer`1(!0) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void* System.Runtime.CompilerServices.Unsafe.Subtract`1(System.Void*,System.Int32) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.CompilerServices.Unsafe.Subtract`1(System.Void*,System.Int32) | [NullableContextAttribute(...)] | 0 | 0 | -| System.Void* System.Runtime.InteropServices.NativeMemory.AlignedAlloc(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.InteropServices.NativeMemory.AlignedRealloc(System.Void*,System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.InteropServices.NativeMemory.Alloc(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.InteropServices.NativeMemory.Alloc(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.InteropServices.NativeMemory.AllocZeroed(System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.InteropServices.NativeMemory.AllocZeroed(System.UIntPtr,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.Void* System.Runtime.InteropServices.NativeMemory.Realloc(System.Void*,System.UIntPtr) | [CLSCompliantAttribute(...)] | 0 | False | -| System.WeakReference | [NullableAttribute(...)] | 0 | 0 | -| System.WeakReference | [NullableContextAttribute(...)] | 0 | 2 | -| System.WeakReference | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.WeakReference`1 | [NullableAttribute(...)] | 0 | 0 | -| System.WeakReference`1 | [NullableContextAttribute(...)] | 0 | 1 | -| System.WeakReference`1 | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| System.__Canon | [ClassInterfaceAttribute(...)] | 0 | 0 | -| System.__Canon | [ComVisibleAttribute(...)] | 0 | True | -| System.__DTString | [CompilerFeatureRequiredAttribute(...)] | 0 | RefStructs | -| System.__DTString | [ObsoleteAttribute(...)] | 0 | Types with embedded references are not supported in this version of your compiler. | -| System.__DTString | [ObsoleteAttribute(...)] | 1 | True | -| bool | [DoesNotReturnIfAttribute(...)] | 0 | False | -| bool | [DoesNotReturnIfAttribute(...)] | 0 | True | -| bool | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| bool System.Console.CapsLock | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| bool System.Console.NumberLock | [SupportedOSPlatformAttribute(...)] | 0 | windows | -| bool System.Console.TreatControlCAsInput | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| bool System.Console.TreatControlCAsInput | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| bool System.Console.TreatControlCAsInput | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| bool System.Console.TreatControlCAsInput | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| bool System.Reflection.Assembly.GlobalAssemblyCache | [ObsoleteAttribute(...)] | 0 | The Global Assembly Cache is not supported. | -| bool System.Reflection.FieldInfo.IsNotSerialized | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| bool System.Reflection.RuntimeAssembly.GlobalAssemblyCache | [ObsoleteAttribute(...)] | 0 | The Global Assembly Cache is not supported. | -| bool System.Reflection.SignatureType.IsSerializable | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| bool System.Threading.Tasks.Task.IsFaulted | [MemberNotNullWhenAttribute(...)] | 0 | True | -| bool System.Threading.Tasks.Task.IsFaulted | [MemberNotNullWhenAttribute(...)] | 1 | Exception | -| bool System.Type.IsSerializable | [ObsoleteAttribute(...)] | 0 | Formatter-based serialization is obsolete and should not be used. | -| bool.FalseString | [NullableAttribute(...)] | 0 | 1 | -| bool.TrueString | [NullableAttribute(...)] | 0 | 1 | -| byte | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| byte* System.IO.UnmanagedMemoryStream.PositionPointer | [CLSCompliantAttribute(...)] | 0 | False | -| byte[] | [NotNullWhenAttribute(...)] | 0 | True | -| byte[] | [NullableAttribute(...)] | 0 | 2 | -| char | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| char[] | [NullableAttribute(...)] | 0 | 2 | -| decimal | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| decimal.AdditiveIdentity | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.AdditiveIdentity | [DecimalConstantAttribute(...)] | 1 | 0 | -| decimal.AdditiveIdentity | [DecimalConstantAttribute(...)] | 2 | 0 | -| decimal.AdditiveIdentity | [DecimalConstantAttribute(...)] | 3 | 0 | -| decimal.AdditiveIdentity | [DecimalConstantAttribute(...)] | 4 | 0 | -| decimal.MaxValue | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.MaxValue | [DecimalConstantAttribute(...)] | 1 | 0 | -| decimal.MaxValue | [DecimalConstantAttribute(...)] | 2 | 4294967295 | -| decimal.MaxValue | [DecimalConstantAttribute(...)] | 3 | 4294967295 | -| decimal.MaxValue | [DecimalConstantAttribute(...)] | 4 | 4294967295 | -| decimal.MinValue | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.MinValue | [DecimalConstantAttribute(...)] | 1 | 128 | -| decimal.MinValue | [DecimalConstantAttribute(...)] | 2 | 4294967295 | -| decimal.MinValue | [DecimalConstantAttribute(...)] | 3 | 4294967295 | -| decimal.MinValue | [DecimalConstantAttribute(...)] | 4 | 4294967295 | -| decimal.MinusOne | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.MinusOne | [DecimalConstantAttribute(...)] | 1 | 128 | -| decimal.MinusOne | [DecimalConstantAttribute(...)] | 2 | 0 | -| decimal.MinusOne | [DecimalConstantAttribute(...)] | 3 | 0 | -| decimal.MinusOne | [DecimalConstantAttribute(...)] | 4 | 1 | -| decimal.MultiplicativeIdentity | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.MultiplicativeIdentity | [DecimalConstantAttribute(...)] | 1 | 0 | -| decimal.MultiplicativeIdentity | [DecimalConstantAttribute(...)] | 2 | 0 | -| decimal.MultiplicativeIdentity | [DecimalConstantAttribute(...)] | 3 | 0 | -| decimal.MultiplicativeIdentity | [DecimalConstantAttribute(...)] | 4 | 1 | -| decimal.NegativeOne | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.NegativeOne | [DecimalConstantAttribute(...)] | 1 | 128 | -| decimal.NegativeOne | [DecimalConstantAttribute(...)] | 2 | 0 | -| decimal.NegativeOne | [DecimalConstantAttribute(...)] | 3 | 0 | -| decimal.NegativeOne | [DecimalConstantAttribute(...)] | 4 | 1 | -| decimal.One | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.One | [DecimalConstantAttribute(...)] | 1 | 0 | -| decimal.One | [DecimalConstantAttribute(...)] | 2 | 0 | -| decimal.One | [DecimalConstantAttribute(...)] | 3 | 0 | -| decimal.One | [DecimalConstantAttribute(...)] | 4 | 1 | -| decimal.Zero | [DecimalConstantAttribute(...)] | 0 | 0 | -| decimal.Zero | [DecimalConstantAttribute(...)] | 1 | 0 | -| decimal.Zero | [DecimalConstantAttribute(...)] | 2 | 0 | -| decimal.Zero | [DecimalConstantAttribute(...)] | 3 | 0 | -| decimal.Zero | [DecimalConstantAttribute(...)] | 4 | 0 | -| delegate* managed<Byte&,Void> System.Array.ArrayInitializeCache.GetElementConstructorEntrypoint(System.Runtime.CompilerServices.QCallTypeHandle) | [LibraryImportAttribute(...)] | 0 | QCall | -| double | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| float | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| int | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| int System.Console.CursorLeft | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| int System.Console.CursorLeft | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| int System.Console.CursorLeft | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| int System.Console.CursorLeft | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| int System.Console.CursorTop | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| int System.Console.CursorTop | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| int System.Console.CursorTop | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| int System.Console.CursorTop | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| int System.Console.LargestWindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| int System.Console.LargestWindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| int System.Console.LargestWindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| int System.Console.LargestWindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| int System.Console.LargestWindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| int System.Console.LargestWindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| int System.Console.LargestWindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| int System.Console.LargestWindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| int System.Console.WindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| int System.Console.WindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| int System.Console.WindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| int System.Console.WindowHeight | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| int System.Console.WindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | android | -| int System.Console.WindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | browser | -| int System.Console.WindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | ios | -| int System.Console.WindowWidth | [UnsupportedOSPlatformAttribute(...)] | 0 | tvos | -| int System.Runtime.CompilerServices.RuntimeHelpers.OffsetToStringData | [ObsoleteAttribute(...)] | 0 | OffsetToStringData has been deprecated. Use string.GetPinnableReference() instead. | -| int System.Threading.Overlapped.EventHandle | [ObsoleteAttribute(...)] | 0 | Overlapped.EventHandle is not 64-bit compatible and has been deprecated. Use EventHandleIntPtr instead. | -| int[] System.Globalization.GregorianCalendar.Eras | [NullableAttribute(...)] | 0 | 1 | -| int[] System.Globalization.HebrewCalendar.Eras | [NullableAttribute(...)] | 0 | 1 | -| int[] System.Globalization.HijriCalendar.Eras | [NullableAttribute(...)] | 0 | 1 | -| int[] System.Globalization.PersianCalendar.Eras | [NullableAttribute(...)] | 0 | 1 | -| int[] System.Globalization.StringInfo.Indexes | [NullableAttribute(...)] | 0 | 2 | -| long | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| object | [ClassInterfaceAttribute(...)] | 0 | 1 | -| object | [ComVisibleAttribute(...)] | 0 | True | -| object | [NotNullIfNotNullAttribute(...)] | 0 | address | -| object | [NotNullIfNotNullAttribute(...)] | 0 | syncLock | -| object | [NotNullIfNotNullAttribute(...)] | 0 | value | -| object | [NotNullWhenAttribute(...)] | 0 | True | -| object | [NullableAttribute(...)] | 0 | 0 | -| object | [NullableAttribute(...)] | 0 | 1 | -| object | [NullableAttribute(...)] | 0 | 2 | -| object | [NullableContextAttribute(...)] | 0 | 2 | -| object | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| object System.ArgumentOutOfRangeException.ActualValue | [NullableAttribute(...)] | 0 | 2 | -| object System.Array.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ArraySegment`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.CharEnumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.ArrayList.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.DictionaryEntry.Value | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.Dictionary`2.Enumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.Dictionary`2.Enumerator.Key | [NullableAttribute(...)] | 0 | 1 | -| object System.Collections.Generic.Dictionary`2.Enumerator.Value | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.Dictionary`2.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.Dictionary`2.KeyCollection.Enumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.Dictionary`2.KeyCollection.SyncRoot | [NullableAttribute(...)] | 0 | 1 | -| object System.Collections.Generic.Dictionary`2.ValueCollection.Enumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.Dictionary`2.ValueCollection.SyncRoot | [NullableAttribute(...)] | 0 | 1 | -| object System.Collections.Generic.HashSet`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.List`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.List`1.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Generic.Queue`1.Enumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.Hashtable.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.IDictionary.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.IDictionaryEnumerator.Value | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.ListDictionaryInternal.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.ObjectModel.Collection`1.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.ObjectModel.ReadOnlyCollection`1.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.ObjectModel.ReadOnlyDictionary`2.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Collections.ObjectModel.ReadOnlyDictionary`2.ValueCollection.SyncRoot | [NullableAttribute(...)] | 0 | 1 | -| object System.Delegate.Target | [NullableAttribute(...)] | 0 | 2 | -| object System.IAsyncResult.AsyncState | [NullableAttribute(...)] | 0 | 2 | -| object System.IO.Enumeration.FileSystemEnumerator`1.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Reflection.CustomAttributeTypedArgument.Value | [NullableAttribute(...)] | 0 | 2 | -| object System.Reflection.ParameterInfo.DefaultValue | [NullableAttribute(...)] | 0 | 2 | -| object System.Reflection.ParameterInfo.RawDefaultValue | [NullableAttribute(...)] | 0 | 2 | -| object System.Runtime.CompilerServices.StrongBox`1.Value | [NullableAttribute(...)] | 0 | 2 | -| object System.Runtime.Serialization.SerializationEntry.Value | [NullableAttribute(...)] | 0 | 2 | -| object System.Runtime.Serialization.SerializationInfoEnumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Runtime.Serialization.SerializationInfoEnumerator.Value | [NullableAttribute(...)] | 0 | 2 | -| object System.Security.PermissionSet.SyncRoot | [NullableAttribute(...)] | 0 | 1 | -| object System.Text.StringRuneEnumerator.Current | [NullableAttribute(...)] | 0 | 2 | -| object System.Threading.Tasks.Task.AsyncState | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`1.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`2.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`3.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`4.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`5.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`6.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`7.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.Tuple`8.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`1.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`2.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`3.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`4.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`5.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`6.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`7.Item | [NullableAttribute(...)] | 0 | 2 | -| object System.ValueTuple`8.Item | [NullableAttribute(...)] | 0 | 2 | -| object[] | [NullableAttribute(...)] | 0 | 2 | -| object[] | [NullableAttribute(...)] | 0 | [1,2] | -| object[] | [NullableAttribute(...)] | 0 | [2,1] | -| object[] System.Collections.ArrayList.ArrayListDebugView.Items | [DebuggerBrowsableAttribute(...)] | 0 | 3 | -| object[] System.Diagnostics.CodeAnalysis.StringSyntaxAttribute.Arguments | [NullableAttribute(...)] | 0 | [1,2] | -| out !0 | [MaybeNullWhenAttribute(...)] | 0 | False | -| out !0 | [NotNullWhenAttribute(...)] | 0 | True | -| out !0 | [NullableAttribute(...)] | 0 | 1 | -| out !1 | [MaybeNullWhenAttribute(...)] | 0 | False | -| out !1 | [NotNullWhenAttribute(...)] | 0 | True | -| out Microsoft.Win32.SafeHandles.SafeFileHandle | [NotNullWhenAttribute(...)] | 0 | True | -| out System.ArraySegment<!0> | [NullableAttribute(...)] | 0 | [0,1] | -| out System.Exception | [NotNullWhenAttribute(...)] | 0 | True | -| out System.Globalization.CompareInfo | [NotNullWhenAttribute(...)] | 0 | True | -| out System.Runtime.InteropServices.ComTypes.IMoniker | [NullableAttribute(...)] | 0 | 2 | -| out System.RuntimeType | [NotNullWhenAttribute(...)] | 0 | True | -| out System.Threading.EventWaitHandle | [NotNullWhenAttribute(...)] | 0 | True | -| out System.Threading.EventWaitHandle | [NullableAttribute(...)] | 0 | 2 | -| out System.Threading.Mutex | [NotNullWhenAttribute(...)] | 0 | True | -| out System.Threading.Mutex | [NullableAttribute(...)] | 0 | 2 | -| out System.Threading.Semaphore | [NotNullWhenAttribute(...)] | 0 | True | -| out System.Threading.Semaphore | [NullableAttribute(...)] | 0 | 2 | -| out System.TimeZoneInfo | [NotNullWhenAttribute(...)] | 0 | True | -| out System.TimeZoneInfo | [NullableAttribute(...)] | 0 | 2 | -| out System.Version | [NotNullWhenAttribute(...)] | 0 | True | -| out System.Version | [NullableAttribute(...)] | 0 | 2 | -| out byte[] | [NotNullWhenAttribute(...)] | 0 | True | -| out long | [NotNullWhenAttribute(...)] | 0 | True | -| out object | [MaybeNullWhenAttribute(...)] | 0 | False | -| out object | [NotNullWhenAttribute(...)] | 0 | True | -| out object | [NullableAttribute(...)] | 0 | 2 | -| out object[] | [NullableAttribute(...)] | 0 | [1,2] | -| out string | [MaybeNullWhenAttribute(...)] | 0 | False | -| out string | [NotNullWhenAttribute(...)] | 0 | True | -| out string | [NullableAttribute(...)] | 0 | 2 | -| sbyte | [CLSCompliantAttribute(...)] | 0 | False | -| sbyte | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| short | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| string | [CallerArgumentExpressionAttribute(...)] | 0 | argument | -| string | [CallerArgumentExpressionAttribute(...)] | 0 | time | -| string | [CallerArgumentExpressionAttribute(...)] | 0 | value | -| string | [DefaultMemberAttribute(...)] | 0 | Chars | -| string | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| string | [NotNullWhenAttribute(...)] | 0 | False | -| string | [NotNullWhenAttribute(...)] | 0 | True | -| string | [NullableAttribute(...)] | 0 | 0 | -| string | [NullableAttribute(...)] | 0 | 1 | -| string | [NullableAttribute(...)] | 0 | 2 | -| string | [NullableContextAttribute(...)] | 0 | 1 | -| string | [StringSyntaxAttribute(...)] | 0 | CompositeFormat | -| string | [StringSyntaxAttribute(...)] | 0 | DateOnlyFormat | -| string | [StringSyntaxAttribute(...)] | 0 | DateTimeFormat | -| string | [StringSyntaxAttribute(...)] | 0 | EnumFormat | -| string | [StringSyntaxAttribute(...)] | 0 | GuidFormat | -| string | [StringSyntaxAttribute(...)] | 0 | NumericFormat | -| string | [StringSyntaxAttribute(...)] | 0 | TimeOnlyFormat | -| string | [StringSyntaxAttribute(...)] | 0 | TimeSpanFormat | -| string | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| string System.AppContext.TargetFrameworkName | [NullableAttribute(...)] | 0 | 2 | -| string System.AppDomain.DynamicDirectory | [NullableAttribute(...)] | 0 | 2 | -| string System.AppDomain.RelativeSearchPath | [NullableAttribute(...)] | 0 | 2 | -| string System.ApplicationId.Culture | [NullableAttribute(...)] | 0 | 2 | -| string System.ApplicationId.ProcessorArchitecture | [NullableAttribute(...)] | 0 | 2 | -| string System.ArgumentException.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.BadImageFormatException.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.Buffers.SearchValues`1.DebuggerDisplay | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.CodeAnalysis.ExperimentalAttribute.UrlFormat | [NullableAttribute(...)] | 0 | 2 | -| string System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute.Url | [NullableAttribute(...)] | 0 | 2 | -| string System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute.Url | [NullableAttribute(...)] | 0 | 2 | -| string System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.Category | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.CodeAnalysis.SuppressMessageAttribute.CheckId | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.Category | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute.CheckId | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.Contracts.ContractException.Failure | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.Contracts.ContractOptionAttribute.Value | [NullableAttribute(...)] | 0 | 2 | -| string System.Diagnostics.DebuggerDisplayAttribute.Value | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.DebuggerTypeProxyAttribute.ProxyTypeName | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| string System.Diagnostics.DebuggerTypeProxyAttribute.ProxyTypeName | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.DebuggerVisualizerAttribute.VisualizerObjectSourceTypeName | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| string System.Diagnostics.DebuggerVisualizerAttribute.VisualizerTypeName | [DynamicallyAccessedMembersAttribute(...)] | 0 | -1 | -| string System.Diagnostics.DebuggerVisualizerAttribute.VisualizerTypeName | [NullableAttribute(...)] | 0 | 1 | -| string System.Diagnostics.Tracing.EventFieldAttribute.Name | [NullableAttribute(...)] | 0 | 2 | -| string System.Diagnostics.Tracing.EventSource.Name | [NullableAttribute(...)] | 0 | 1 | -| string System.Environment.ProcessPath | [NullableAttribute(...)] | 0 | 2 | -| string System.Exception.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.FormattableString.Format | [StringSyntaxAttribute(...)] | 0 | CompositeFormat | -| string System.Globalization.CultureInfo.InteropName | [NullableAttribute(...)] | 0 | 2 | -| string System.Globalization.CultureNotFoundException.DefaultMessage | [NullableAttribute(...)] | 0 | 1 | -| string System.Globalization.CultureNotFoundException.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.IO.FileInfo.DirectoryName | [NullableAttribute(...)] | 0 | 2 | -| string System.IO.FileLoadException.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.IO.FileNotFoundException.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.IO.FileSystemInfo.LinkTarget | [NullableAttribute(...)] | 0 | 2 | -| string System.Int128.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string System.MissingMemberException.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.Numerics.Vector`1.DisplayString | [NullableAttribute(...)] | 0 | 1 | -| string System.Reflection.Assembly.CodeBase | [NullableAttribute(...)] | 0 | 2 | -| string System.Reflection.Assembly.CodeBase | [ObsoleteAttribute(...)] | 0 | Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location. | -| string System.Reflection.Assembly.CodeBase | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| string System.Reflection.Assembly.EscapedCodeBase | [ObsoleteAttribute(...)] | 0 | Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location. | -| string System.Reflection.Assembly.EscapedCodeBase | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| string System.Reflection.Assembly.FullName | [NullableAttribute(...)] | 0 | 2 | -| string System.Reflection.AssemblyMetadataAttribute.Value | [NullableAttribute(...)] | 0 | 2 | -| string System.Reflection.AssemblyName.CodeBase | [ObsoleteAttribute(...)] | 0 | AssemblyName.CodeBase and AssemblyName.EscapedCodeBase are obsolete. Using them for loading an assembly is not supported. | -| string System.Reflection.AssemblyName.EscapedCodeBase | [ObsoleteAttribute(...)] | 0 | AssemblyName.CodeBase and AssemblyName.EscapedCodeBase are obsolete. Using them for loading an assembly is not supported. | -| string System.Reflection.AssemblyName.EscapedCodeBase | [RequiresAssemblyFilesAttribute(...)] | 0 | The code will return an empty string for assemblies embedded in a single-file app | -| string System.Reflection.AssemblyName.FullName | [NullableAttribute(...)] | 0 | 1 | -| string System.Reflection.Emit.AssemblyBuilder.CodeBase | [NullableAttribute(...)] | 0 | 2 | -| string System.Reflection.Emit.AssemblyBuilder.CodeBase | [ObsoleteAttribute(...)] | 0 | Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location instead. | -| string System.Reflection.Emit.AssemblyBuilder.CodeBase | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| string System.Reflection.Emit.RuntimeModuleBuilder.FullyQualifiedName | [RequiresAssemblyFilesAttribute(...)] | 0 | Returns <Unknown> for modules with no file path | -| string System.Reflection.Emit.RuntimeModuleBuilder.Name | [RequiresAssemblyFilesAttribute(...)] | 0 | Returns <Unknown> for modules with no file path | -| string System.Reflection.Module.FullyQualifiedName | [RequiresAssemblyFilesAttribute(...)] | 0 | Returns <Unknown> for modules with no file path | -| string System.Reflection.Module.Name | [RequiresAssemblyFilesAttribute(...)] | 0 | Returns <Unknown> for modules with no file path | -| string System.Reflection.ParameterInfo.Name | [NullableAttribute(...)] | 0 | 2 | -| string System.Reflection.RuntimeAssembly.CodeBase | [ObsoleteAttribute(...)] | 0 | Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location. | -| string System.Reflection.RuntimeAssembly.CodeBase | [RequiresAssemblyFilesAttribute(...)] | 0 | This member throws an exception for assemblies embedded in a single-file app | -| string System.Reflection.RuntimeModule.FullyQualifiedName | [RequiresAssemblyFilesAttribute(...)] | 0 | Returns <Unknown> for modules with no file path | -| string System.Reflection.RuntimeModule.Name | [RequiresAssemblyFilesAttribute(...)] | 0 | Returns <Unknown> for modules with no file path | -| string System.Reflection.TypeDelegator.AssemblyQualifiedName | [NullableAttribute(...)] | 0 | 2 | -| string System.Reflection.TypeDelegator.FullName | [NullableAttribute(...)] | 0 | 2 | -| string System.Reflection.TypeDelegator.Namespace | [NullableAttribute(...)] | 0 | 2 | -| string System.Runtime.CompilerServices.SwitchExpressionException.Message | [NullableAttribute(...)] | 0 | 1 | -| string System.Runtime.InteropServices.LibraryImportAttribute.LibraryName | [NullableAttribute(...)] | 0 | 1 | -| string System.Runtime.Loader.AssemblyLoadContext.Name | [NullableAttribute(...)] | 0 | 2 | -| string System.Runtime.Versioning.TargetFrameworkAttribute.FrameworkDisplayName | [NullableAttribute(...)] | 0 | 2 | -| string System.Runtime.Versioning.UnsupportedOSPlatformAttribute.Message | [NullableAttribute(...)] | 0 | 2 | -| string System.Security.SecurityElement.Tag | [NullableAttribute(...)] | 0 | 1 | -| string System.Text.Rune.DebuggerDisplay | [NullableAttribute(...)] | 0 | 1 | -| string System.Threading.Thread.Name | [NullableAttribute(...)] | 0 | 2 | -| string System.Type.AssemblyQualifiedName | [NullableAttribute(...)] | 0 | 2 | -| string System.Type.FullName | [NullableAttribute(...)] | 0 | 2 | -| string System.Type.Namespace | [NullableAttribute(...)] | 0 | 2 | -| string System.UInt128.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string byte.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string char.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string int.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string long.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string sbyte.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string short.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string uint.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string ulong.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string ushort.OverflowMessage | [NullableAttribute(...)] | 0 | 1 | -| string[] | [NotNullWhenAttribute(...)] | 0 | True | -| string[] | [NullableAttribute(...)] | 0 | 1 | -| string[] | [NullableAttribute(...)] | 0 | 2 | -| string[] | [NullableAttribute(...)] | 0 | [1,2] | -| string[] | [NullableAttribute(...)] | 0 | [2,1] | -| string[] | [StringSyntaxAttribute(...)] | 0 | DateOnlyFormat | -| string[] | [StringSyntaxAttribute(...)] | 0 | DateTimeFormat | -| string[] | [StringSyntaxAttribute(...)] | 0 | TimeOnlyFormat | -| string[] | [StringSyntaxAttribute(...)] | 0 | TimeSpanFormat | -| uint | [CLSCompliantAttribute(...)] | 0 | False | -| uint | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| uint System.Reflection.AssemblyAlgorithmIdAttribute.AlgorithmId | [CLSCompliantAttribute(...)] | 0 | False | -| uint System.Reflection.AssemblyFlagsAttribute.Flags | [CLSCompliantAttribute(...)] | 0 | False | -| uint System.Reflection.AssemblyFlagsAttribute.Flags | [ObsoleteAttribute(...)] | 0 | AssemblyFlagsAttribute.Flags has been deprecated. Use AssemblyFlags instead. | -| ulong | [CLSCompliantAttribute(...)] | 0 | False | -| ulong | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| ulong System.Runtime.InteropServices.SafeBuffer.ByteLength | [CLSCompliantAttribute(...)] | 0 | False | -| ushort | [CLSCompliantAttribute(...)] | 0 | False | -| ushort | [TypeForwardedFromAttribute(...)] | 0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | -| void* | [NullableAttribute(...)] | 0 | 0 | -| void* System.Buffers.MemoryHandle.Pointer | [CLSCompliantAttribute(...)] | 0 | False | diff --git a/csharp/ql/test/library-tests/cil/attributes/attribute.ql b/csharp/ql/test/library-tests/cil/attributes/attribute.ql deleted file mode 100644 index 76489b3c9891..000000000000 --- a/csharp/ql/test/library-tests/cil/attributes/attribute.ql +++ /dev/null @@ -1,47 +0,0 @@ -import semmle.code.cil.Attribute -import semmle.code.cil.Declaration - -deprecated private predicate isOsSpecific(Declaration d) { - d.getFullyQualifiedName() - .matches("%" + - [ - "libobjc", "libproc", "libc", "Interop.OSReleaseFile", "Interop.Sys", - "System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal", - "System.Diagnostics.Tracing.XplatEventLogger", "System.Threading.AutoreleasePool", - "System.CLRConfig", "System.Diagnostics.Tracing.EventSource.<WriteEventString>", - "System.IO.FileSystem.<TryCloneFile>" - ] + "%") -} - -deprecated query predicate attrNoArg(string dec, string attr) { - exists(Declaration d, Attribute a | - not isOsSpecific(d) and - a.getDeclaration() = d and - not exists(a.getAnArgument()) - | - dec = d.toStringWithTypes() and - attr = a.toStringWithTypes() - ) -} - -deprecated query predicate attrArgNamed(string dec, string attr, string name, string value) { - exists(Declaration d, Attribute a | - a.getDeclaration() = d and - not isOsSpecific(d) and - a.getNamedArgument(name) = value - | - dec = d.toStringWithTypes() and - attr = a.toStringWithTypes() - ) -} - -deprecated query predicate attrArgPositional(string dec, string attr, int index, string value) { - exists(Declaration d, Attribute a | - a.getDeclaration() = d and - not isOsSpecific(d) and - a.getArgument(index) = value - | - dec = d.toStringWithTypes() and - attr = a.toStringWithTypes() - ) -} diff --git a/csharp/ql/test/library-tests/cil/attributes/options b/csharp/ql/test/library-tests/cil/attributes/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/cil/attributes/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/cil/consistency/Handles.expected b/csharp/ql/test/library-tests/cil/consistency/Handles.expected deleted file mode 100644 index d48a89c24a34..000000000000 --- a/csharp/ql/test/library-tests/cil/consistency/Handles.expected +++ /dev/null @@ -1,14 +0,0 @@ -tooManyHandles -tooManyMatchingHandles -missingCil -csharpLocationViolation -matchingObjectMethods -| Equals(object) | System.Boolean System.Object.Equals(System.Object) | -| Equals(object, object) | System.Boolean System.Object.Equals(System.Object,System.Object) | -| GetHashCode() | System.Int32 System.Object.GetHashCode() | -| GetType() | System.Type System.Object.GetType() | -| MemberwiseClone() | System.Object System.Object.MemberwiseClone() | -| Object() | System.Void System.Object..ctor() | -| ReferenceEquals(object, object) | System.Boolean System.Object.ReferenceEquals(System.Object,System.Object) | -| ToString() | System.String System.Object.ToString() | -| ~Object() | System.Void System.Object.Finalize() | diff --git a/csharp/ql/test/library-tests/cil/consistency/Handles.ql b/csharp/ql/test/library-tests/cil/consistency/Handles.ql deleted file mode 100644 index 73c17c713d7f..000000000000 --- a/csharp/ql/test/library-tests/cil/consistency/Handles.ql +++ /dev/null @@ -1,68 +0,0 @@ -import csharp -import cil -import dotnet -import semmle.code.csharp.commons.QualifiedName - -deprecated class MetadataEntity extends DotNet::NamedElement, @metadata_entity { - int getHandle() { metadata_handle(this, _, result) } - - predicate hasHandle() { exists(this.getHandle()) } - - Assembly getAssembly() { metadata_handle(this, result, _) } -} - -deprecated query predicate tooManyHandles(string s) { - exists(MetadataEntity e, Assembly a, string qualifier, string name | - strictcount(int handle | metadata_handle(e, a, handle)) > 1 and - e.hasFullyQualifiedName(qualifier, name) and - s = getQualifiedName(qualifier, name) - ) -} - -deprecated private class UniqueMetadataEntity extends MetadataEntity { - UniqueMetadataEntity() { - // Tuple types such as `(,)` and `ValueTuple`2` share the same handle - not this instanceof TupleType and - not exists(string name | - this.hasFullyQualifiedName("System", name) and - name.matches("System.ValueTuple%") - ) - } -} - -deprecated query predicate tooManyMatchingHandles(string s) { - exists(UniqueMetadataEntity e, Assembly a, int handle, string qualifier, string name | - metadata_handle(e, a, handle) and - strictcount(UniqueMetadataEntity e2 | metadata_handle(e2, a, handle)) > 2 and - e.hasFullyQualifiedName(qualifier, name) and - s = getQualifiedName(qualifier, name) - ) -} - -deprecated query predicate missingCil(Element e) { - ( - e instanceof Callable - or - e instanceof Type - or - e instanceof Field - ) and - e.fromLibrary() and - e.(MetadataEntity).hasHandle() and - not exists(CIL::Element ce | ce.(MetadataEntity).matchesHandle(e)) -} - -deprecated query predicate csharpLocationViolation(Element e) { - e.fromLibrary() and - e.(MetadataEntity).hasHandle() and - not e.getALocation() = e.(MetadataEntity).getAssembly() -} - -deprecated query predicate matchingObjectMethods(string s1, string s2) { - exists(Callable m1, CIL::Method m2 | - m1.getDeclaringType().hasFullyQualifiedName("System", "Object") and - m1.(DotNet::Callable).matchesHandle(m2) and - s1 = m1.toStringWithTypes() and - s2 = m2.toStringWithTypes() - ) -} diff --git a/csharp/ql/test/library-tests/cil/consistency/Program.cs b/csharp/ql/test/library-tests/cil/consistency/Program.cs deleted file mode 100644 index e867fdc0718e..000000000000 --- a/csharp/ql/test/library-tests/cil/consistency/Program.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -class Test -{ - static void Main(string[] args) - { - } -} diff --git a/csharp/ql/test/library-tests/cil/consistency/consistency.expected b/csharp/ql/test/library-tests/cil/consistency/consistency.expected deleted file mode 100644 index 8932c2ec7139..000000000000 --- a/csharp/ql/test/library-tests/cil/consistency/consistency.expected +++ /dev/null @@ -1,17 +0,0 @@ -| Finalize | Overridden method from System.Object is not in a base type | -| System.Int32 System.Math.Sign(System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; ldc.i4.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; mul [push: 1, pop: 2]; ldc.i4.1 [push: 1, pop: 0]; sub [push: 1, pop: 2]; and [push: 1, pop: 2]; shr [push: 1, pop: 2]; conv.i8 [push: 1, pop: 1]; ldarg.0 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.Int32 System.Runtime.InteropServices.Marshal.AddRef(System.IntPtr): calli, ldarg.0 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; call [push: 0, pop: 2]; ldarg.0 [push: 1, pop: 0]; ldind.i [push: 1, pop: 1]; sizeof [push: 1, pop: 0]; add [push: 1, pop: 2]; ldind.i [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldloc.0 [push: 1, pop: 0]; calli [push: 1, pop: 2] | Expression is missing getType() | -| System.Int32 System.Runtime.InteropServices.Marshal.QueryInterface(System.IntPtr,System.Guid,System.IntPtr): calli, ldarg.0 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; call [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; stloc.1 [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; conv.u [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldarg.2 [push: 1, pop: 0]; stloc.3 [push: 0, pop: 1]; ldloc.3 [push: 1, pop: 0]; conv.u [push: 1, pop: 1]; stloc.2 [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldind.i [push: 1, pop: 1]; ldind.i [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldloc.0 [push: 1, pop: 0]; ldloc.2 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; calli [push: 1, pop: 4] | Expression is missing getType() | -| System.Int32 System.Runtime.InteropServices.Marshal.Release(System.IntPtr): calli, ldarg.0 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; call [push: 0, pop: 2]; ldarg.0 [push: 1, pop: 0]; ldind.i [push: 1, pop: 1]; ldc.i4.2 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; sizeof [push: 1, pop: 0]; mul [push: 1, pop: 2]; add [push: 1, pop: 2]; ldind.i [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldloc.0 [push: 1, pop: 0]; calli [push: 1, pop: 2] | Expression is missing getType() | -| System.Int32 System.Text.UnicodeEncoding.GetByteCount(System.Char*,System.Int32,System.Text.EncoderNLS): dup, ldarg.2 [push: 1, pop: 0]; ldc.i4.1 [push: 1, pop: 0]; shl [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; bge.s [push: 0, pop: 2]; ldstr [push: 1, pop: 0]; call [push: 1, pop: 0]; newobj [push: 1, pop: 2]; throw [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; stloc.1 [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldarg.2 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; ldc.i4.2 [push: 1, pop: 0]; mul [push: 1, pop: 2]; add [push: 1, pop: 2]; stloc.2 [push: 0, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; stloc.3 [push: 0, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; brfalse [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; stloc.3 [push: 0, pop: 1]; ldloc.3 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; ble.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; add [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; brfalse [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; ble.s [push: 0, pop: 2]; call [push: 1, pop: 0]; ldarg.0 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; ldarg.3 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; br.s [push: 0, pop: 0]; call [push: 1, pop: 1]; call [push: 1, pop: 3]; newobj [push: 1, pop: 1]; throw [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.1 [push: 1, pop: 0]; ldloc.2 [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; br [push: 0, pop: 0]; ldloc.s [push: 1, pop: 0]; brtrue [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; ldsfld [push: 1, pop: 0]; xor [push: 1, pop: 2]; brfalse [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; conv.u8 [push: 1, pop: 1]; ldc.i4.7 [push: 1, pop: 0]; conv.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brtrue [push: 0, pop: 1]; ldloc.3 [push: 1, pop: 0]; brtrue [push: 0, pop: 1]; ldloc.2 [push: 1, pop: 0]; ldc.i4.3 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; ldc.i4.2 [push: 1, pop: 0]; mul [push: 1, pop: 2]; sub [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; br [push: 0, pop: 0]; ldc.i8 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldind.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldc.i8 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldind.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; ldc.i8 [push: 1, pop: 0]; xor [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i8 [push: 1, pop: 0]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i8 [push: 1, pop: 0]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; conv.u8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; conv.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brtrue.s [push: 0, pop: 1]; ldc.i8 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldind.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; ldsfld [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldc.i8 [push: 1, pop: 0]; bne.un.s [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; add [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; blt.un [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldloc.2 [push: 1, pop: 0]; bge.un [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; ldind.u2 [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; br.s [push: 0, pop: 0]; ldloc.0 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; add [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; blt [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; bgt [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; bgt.s [push: 0, pop: 2]; ldloc.3 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; ble.s [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.1 [push: 1, pop: 0]; ldloc.2 [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.3 [push: 1, pop: 0]; ldloca.s [push: 1, pop: 0]; callvirt [push: 1, pop: 3]; pop [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; stloc.3 [push: 0, pop: 1]; br [push: 0, pop: 0]; ldloc.s [push: 1, pop: 0]; stloc.3 [push: 0, pop: 1]; br [push: 0, pop: 0]; ldloc.3 [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.1 [push: 1, pop: 0]; ldloc.2 [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldloca.s [push: 1, pop: 0]; callvirt [push: 1, pop: 3]; pop [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; br.s [push: 0, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; stloc.3 [push: 0, pop: 1]; br.s [push: 0, pop: 0]; ldloc.3 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; ble.s [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.1 [push: 1, pop: 0]; ldloc.2 [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.3 [push: 1, pop: 0]; ldloca.s [push: 1, pop: 0]; callvirt [push: 1, pop: 3]; pop [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; stloc.3 [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; dup [push: 2, pop: 1] | Expression is missing getType() | -| System.Int32 System.Text.UnicodeEncoding.GetBytes(System.Char*,System.Int32,System.Byte*,System.Int32,System.Text.EncoderNLS): dup, ldc.i4.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; stloc.2 [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; ldarg.s [push: 1, pop: 0]; add [push: 1, pop: 2]; stloc.3 [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldarg.2 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; ldc.i4.2 [push: 1, pop: 0]; mul [push: 1, pop: 2]; add [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; brfalse [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; brfalse [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; ble.s [push: 0, pop: 2]; ldarg.s [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; brfalse.s [push: 0, pop: 1]; call [push: 1, pop: 0]; ldarg.0 [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; ldarg.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; br.s [push: 0, pop: 0]; call [push: 1, pop: 1]; call [push: 1, pop: 3]; newobj [push: 1, pop: 1]; throw [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldarg.s [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; br [push: 0, pop: 0]; ldloc.1 [push: 1, pop: 0]; brtrue [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; ldsfld [push: 1, pop: 0]; xor [push: 1, pop: 2]; brfalse [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; conv.u8 [push: 1, pop: 1]; ldc.i4.7 [push: 1, pop: 0]; conv.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brtrue [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; brtrue [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldc.i4.3 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; ldc.i4.2 [push: 1, pop: 0]; mul [push: 1, pop: 2]; sub [push: 1, pop: 2]; ldloc.3 [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; sub [push: 1, pop: 2]; ldc.i4.1 [push: 1, pop: 0]; div [push: 1, pop: 2]; conv.i8 [push: 1, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; shr [push: 1, pop: 2]; ldloc.s [push: 1, pop: 0]; ldarg.1 [push: 1, pop: 0]; sub [push: 1, pop: 2]; ldc.i4.2 [push: 1, pop: 0]; div [push: 1, pop: 2]; conv.i8 [push: 1, pop: 1]; blt.s [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; ldarg.1 [push: 1, pop: 0]; sub [push: 1, pop: 2]; ldc.i4.2 [push: 1, pop: 0]; div [push: 1, pop: 2]; conv.i8 [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldloc.3 [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; sub [push: 1, pop: 2]; ldc.i4.1 [push: 1, pop: 0]; div [push: 1, pop: 2]; conv.i8 [push: 1, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; shr [push: 1, pop: 2]; ldc.i4.2 [push: 1, pop: 0]; conv.i8 [push: 1, pop: 1]; mul [push: 1, pop: 2]; conv.i [push: 1, pop: 1]; add [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; br [push: 0, pop: 0]; ldc.i8 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldind.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldc.i8 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldind.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; ldc.i8 [push: 1, pop: 0]; xor [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i8 [push: 1, pop: 0]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i8 [push: 1, pop: 0]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; conv.u8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; conv.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; brtrue.s [push: 0, pop: 1]; ldc.i8 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldind.i8 [push: 1, pop: 1]; and [push: 1, pop: 2]; ldsfld [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldc.i8 [push: 1, pop: 0]; bne.un.s [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldind.i8 [push: 1, pop: 1]; call [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; add [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; add [push: 1, pop: 2]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; blt.un [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; bge.un [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; ldind.u2 [push: 1, pop: 1]; stloc.1 [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; blt [push: 0, pop: 2]; ldloc.1 [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; bgt [push: 0, pop: 2]; ldloc.1 [push: 1, pop: 0]; ldc.i4 [push: 1, pop: 0]; bgt.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; ble.s [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldarg.s [push: 1, pop: 0]; ldc.i4.1 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.0 [push: 1, pop: 0]; ldloca.s [push: 1, pop: 0]; callvirt [push: 1, pop: 3]; pop [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; br [push: 0, pop: 0]; ldloc.1 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; br [push: 0, pop: 0]; ldloc.0 [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldarg.s [push: 1, pop: 0]; ldc.i4.1 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.1 [push: 1, pop: 0]; ldloca.s [push: 1, pop: 0]; callvirt [push: 1, pop: 3]; pop [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; br [push: 0, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldc.i4.3 [push: 1, pop: 0]; add [push: 1, pop: 2]; ldloc.3 [push: 1, pop: 0]; blt.un.s [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; pop [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; pop [push: 0, pop: 1]; br.s [push: 0, pop: 0]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; ldc.i4.2 [push: 1, pop: 0]; mul [push: 1, pop: 2]; sub [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldarg.s [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ceq [push: 1, pop: 2]; call [push: 0, pop: 3]; ldc.i4.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; br [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; brfalse.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; shr [push: 1, pop: 2]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; br.s [push: 0, pop: 0]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; shr [push: 1, pop: 2]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; ldc.i4.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; br.s [push: 0, pop: 0]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; ble.s [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; brtrue.s [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldarg.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ldarg.s [push: 1, pop: 0]; ldc.i4.1 [push: 1, pop: 0]; callvirt [push: 0, pop: 5]; ldarg.1 [push: 1, pop: 0]; stloc.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldloc.0 [push: 1, pop: 0]; ldloca.s [push: 1, pop: 0]; callvirt [push: 1, pop: 3]; pop [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; starg.s [push: 0, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; br.s [push: 0, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; ldloc.3 [push: 1, pop: 0]; blt.un.s [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; pop [push: 0, pop: 1]; br.s [push: 0, pop: 0]; ldarg.1 [push: 1, pop: 0]; ldc.i4.2 [push: 1, pop: 0]; sub [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldarg.s [push: 1, pop: 0]; ldarg.3 [push: 1, pop: 0]; ldloc.s [push: 1, pop: 0]; ceq [push: 1, pop: 2]; call [push: 0, pop: 3]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; brfalse.s [push: 0, pop: 1]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; shr [push: 1, pop: 2]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; br.s [push: 0, pop: 0]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; ldarg.3 [push: 1, pop: 0]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; add [push: 1, pop: 2]; starg.s [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; ldc.i4.8 [push: 1, pop: 0]; shr [push: 1, pop: 2]; conv.u1 [push: 1, pop: 1]; stind.i1 [push: 0, pop: 2]; ldloc.s [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldloc.s [push: 1, pop: 0]; callvirt [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; dup [push: 2, pop: 1] | Expression is missing getType() | -| System.IntPtr System.IntPtr.CopySign(System.IntPtr,System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.IntPtr System.IntPtr.CopySign(System.IntPtr,System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; neg [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; blt.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; call [push: 0, pop: 0]; ldloc.0 [push: 1, pop: 0]; ret [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.IntPtr System.IntPtr.MaxMagnitude(System.IntPtr,System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.IntPtr System.IntPtr.MaxMagnitude(System.IntPtr,System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; neg [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldarg.0 [push: 1, pop: 0]; ret [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; stloc.1 [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.1 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.IntPtr System.IntPtr.MinMagnitude(System.IntPtr,System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.IntPtr System.IntPtr.MinMagnitude(System.IntPtr,System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.0 [push: 1, pop: 0]; neg [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldarg.1 [push: 1, pop: 0]; ret [push: 0, pop: 1]; ldarg.1 [push: 1, pop: 0]; stloc.1 [push: 0, pop: 1]; ldloc.1 [push: 1, pop: 0]; ldc.i4.0 [push: 1, pop: 0]; conv.i [push: 1, pop: 1]; bge.s [push: 0, pop: 2]; ldloc.1 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.IntPtr System.IntPtr.op_UnaryNegation(System.IntPtr): neg, ldarg.0 [push: 1, pop: 0]; neg [push: 1, pop: 1] | Expression is missing getType() | -| System.String System.Exception.get_Source(): dup, ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldarg.0 [push: 1, pop: 0]; ldarg.0 [push: 1, pop: 0]; call [push: 1, pop: 1]; brtrue.s [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; br.s [push: 0, pop: 0]; ldarg.0 [push: 1, pop: 0]; call [push: 1, pop: 1]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; br.s [push: 0, pop: 0]; callvirt [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldstr [push: 1, pop: 0]; dup [push: 2, pop: 1] | Expression is missing getType() | -| System.String System.Threading.TimerQueueTimer.get_DisplayString(): dup, ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; br.s [push: 0, pop: 0]; callvirt [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; call [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldc.i4.s [push: 1, pop: 0]; newarr [push: 1, pop: 1]; dup [push: 2, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; stelem.ref [push: 0, pop: 3]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; ldc.i4.m1 [push: 1, pop: 0]; beq.s [push: 0, pop: 2]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; conv.r.un [push: 1, pop: 1]; conv.r8 [push: 1, pop: 1]; call [push: 1, pop: 1]; box [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldstr [push: 1, pop: 0]; dup [push: 2, pop: 1] | Expression is missing getType() | -| System.String System.Threading.TimerQueueTimer.get_DisplayString(): dup, ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; callvirt [push: 1, pop: 1]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; br.s [push: 0, pop: 0]; callvirt [push: 1, pop: 1]; stloc.0 [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; brfalse.s [push: 0, pop: 1]; ldloc.0 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; call [push: 1, pop: 2]; stloc.0 [push: 0, pop: 1]; ldc.i4.s [push: 1, pop: 0]; newarr [push: 1, pop: 1]; dup [push: 2, pop: 1]; ldc.i4.0 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; stelem.ref [push: 0, pop: 3]; dup [push: 2, pop: 1]; ldc.i4.1 [push: 1, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; ldc.i4.m1 [push: 1, pop: 0]; beq.s [push: 0, pop: 2]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; conv.r.un [push: 1, pop: 1]; conv.r8 [push: 1, pop: 1]; call [push: 1, pop: 1]; box [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldstr [push: 1, pop: 0]; dup [push: 2, pop: 1]; brtrue.s [push: 0, pop: 1]; pop [push: 0, pop: 1]; ldnull [push: 1, pop: 0]; br.s [push: 0, pop: 0]; callvirt [push: 1, pop: 1]; stelem.ref [push: 0, pop: 3]; dup [push: 2, pop: 1]; ldc.i4.2 [push: 1, pop: 0]; ldstr [push: 1, pop: 0]; stelem.ref [push: 0, pop: 3]; dup [push: 2, pop: 1]; ldc.i4.3 [push: 1, pop: 0]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; ldc.i4.m1 [push: 1, pop: 0]; beq.s [push: 0, pop: 2]; ldarg.0 [push: 1, pop: 0]; ldfld [push: 1, pop: 1]; conv.r.un [push: 1, pop: 1]; conv.r8 [push: 1, pop: 1]; call [push: 1, pop: 1]; box [push: 1, pop: 1]; br.s [push: 0, pop: 0]; ldstr [push: 1, pop: 0]; dup [push: 2, pop: 1] | Expression is missing getType() | diff --git a/csharp/ql/test/library-tests/cil/consistency/consistency.ql b/csharp/ql/test/library-tests/cil/consistency/consistency.ql deleted file mode 100644 index e7ece7c4e6e9..000000000000 --- a/csharp/ql/test/library-tests/cil/consistency/consistency.ql +++ /dev/null @@ -1,6 +0,0 @@ -import cil -import semmle.code.cil.ConsistencyChecks - -deprecated query predicate consistencyViolation(ConsistencyViolation v, string message) { - message = v.getMessage() -} diff --git a/csharp/ql/test/library-tests/cil/consistency/options b/csharp/ql/test/library-tests/cil/consistency/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/cil/consistency/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/cil/enums/Program.cs b/csharp/ql/test/library-tests/cil/enums/Program.cs deleted file mode 100644 index e867fdc0718e..000000000000 --- a/csharp/ql/test/library-tests/cil/enums/Program.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -class Test -{ - static void Main(string[] args) - { - } -} diff --git a/csharp/ql/test/library-tests/cil/enums/enums.expected b/csharp/ql/test/library-tests/cil/enums/enums.expected deleted file mode 100644 index 4b64efc04abb..000000000000 --- a/csharp/ql/test/library-tests/cil/enums/enums.expected +++ /dev/null @@ -1,290 +0,0 @@ -| Interop.Advapi32.ActivityControl | uint | -| Interop.BOOL | int | -| Interop.Error | int | -| Interop.Globalization.ResultCode | int | -| Interop.Globalization.TimeZoneDisplayNameType | int | -| Interop.PollEvents | short | -| Interop.Sys.AccessMode | int | -| Interop.Sys.ControlCharacterNames | int | -| Interop.Sys.FileAdvice | int | -| Interop.Sys.FileStatusFlags | int | -| Interop.Sys.LockOperations | int | -| Interop.Sys.NodeType | int | -| Interop.Sys.OpenFlags | int | -| Interop.Sys.SeekWhence | int | -| Interop.Sys.SysConfName | int | -| Interop.Sys.SysLogPriority | int | -| Interop.Sys.UnixFileSystemTypes | uint | -| Microsoft.Win32.SafeHandles.SafeFileHandle.NullableBool | int | -| Microsoft.Win32.SafeHandles.SafeFileHandle.ThreadPoolValueTaskSource.Operation | byte | -| System.AttributeTargets | int | -| System.Base64FormattingOptions | int | -| System.Buffers.ArrayPoolEventSource.BufferAllocatedReason | int | -| System.Buffers.ArrayPoolEventSource.BufferDroppedReason | int | -| System.Buffers.OperationStatus | int | -| System.Buffers.Text.Utf8Parser.ComponentParseResult | byte | -| System.Buffers.Text.Utf8Parser.ParseNumberOptions | int | -| System.Buffers.Utilities.MemoryPressure | int | -| System.Collections.Generic.InsertionBehavior | byte | -| System.ComponentModel.EditorBrowsableState | int | -| System.Configuration.Assemblies.AssemblyHashAlgorithm | int | -| System.Configuration.Assemblies.AssemblyVersionCompatibility | int | -| System.ConsoleColor | int | -| System.ConsoleKey | int | -| System.ConsoleModifiers | int | -| System.ConsoleSpecialKey | int | -| System.DTSubStringType | int | -| System.DateTimeKind | int | -| System.DateTimeParse.DS | int | -| System.DateTimeParse.DTT | int | -| System.DateTimeParse.TM | int | -| System.DayOfWeek | int | -| System.DefaultBinder.Primitives | int | -| System.DelegateBindingFlags | int | -| System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes | int | -| System.Diagnostics.Contracts.ContractFailureKind | int | -| System.Diagnostics.DebuggableAttribute.DebuggingModes | int | -| System.Diagnostics.DebuggerBrowsableState | int | -| System.Diagnostics.StackTrace.TraceFormat | int | -| System.Diagnostics.Tracing.ControllerCommand | int | -| System.Diagnostics.Tracing.EventActivityOptions | int | -| System.Diagnostics.Tracing.EventChannel | byte | -| System.Diagnostics.Tracing.EventChannelType | int | -| System.Diagnostics.Tracing.EventCommand | int | -| System.Diagnostics.Tracing.EventFieldFormat | int | -| System.Diagnostics.Tracing.EventFieldTags | int | -| System.Diagnostics.Tracing.EventKeywords | long | -| System.Diagnostics.Tracing.EventLevel | int | -| System.Diagnostics.Tracing.EventManifestOptions | int | -| System.Diagnostics.Tracing.EventOpcode | int | -| System.Diagnostics.Tracing.EventPipeSerializationFormat | int | -| System.Diagnostics.Tracing.EventProvider.WriteEventErrorCode | int | -| System.Diagnostics.Tracing.EventProviderType | int | -| System.Diagnostics.Tracing.EventSourceSettings | int | -| System.Diagnostics.Tracing.EventTags | int | -| System.Diagnostics.Tracing.EventTask | int | -| System.Diagnostics.Tracing.ManifestEnvelope.ManifestFormats | byte | -| System.Diagnostics.Tracing.NativeRuntimeEventSource.ContentionFlagsMap | byte | -| System.Diagnostics.Tracing.NativeRuntimeEventSource.ThreadAdjustmentReasonMap | uint | -| System.Diagnostics.Tracing.RuntimeEventSource.EventId | int | -| System.Diagnostics.Tracing.TraceLoggingDataType | int | -| System.Environment.SpecialFolder | int | -| System.Environment.SpecialFolderOption | int | -| System.EnvironmentVariableTarget | int | -| System.Exception.ExceptionMessageKind | int | -| System.ExceptionArgument | int | -| System.ExceptionResource | int | -| System.GC.EnableNoGCRegionCallbackStatus | int | -| System.GC.EndNoGCRegionStatus | int | -| System.GC.GCConfigurationType | int | -| System.GC.GC_ALLOC_FLAGS | int | -| System.GC.RefreshMemoryStatus | int | -| System.GC.StartNoGCRegionStatus | int | -| System.GCCollectionMode | int | -| System.GCKind | int | -| System.GCNotificationStatus | int | -| System.Globalization.CalendarAlgorithmType | int | -| System.Globalization.CalendarDataType | int | -| System.Globalization.CalendarId | ushort | -| System.Globalization.CalendarWeekRule | int | -| System.Globalization.CalendricalCalculationsHelper.CorrectionAlgorithm | int | -| System.Globalization.CompareOptions | int | -| System.Globalization.CultureData.LocaleGroupingData | uint | -| System.Globalization.CultureData.LocaleNumberData | uint | -| System.Globalization.CultureData.LocaleStringData | uint | -| System.Globalization.CultureTypes | int | -| System.Globalization.DateTimeFormatFlags | int | -| System.Globalization.DateTimeFormatInfoScanner.FoundDatePattern | int | -| System.Globalization.DateTimeStyles | int | -| System.Globalization.DigitShapes | int | -| System.Globalization.FORMATFLAGS | int | -| System.Globalization.GregorianCalendarTypes | int | -| System.Globalization.HebrewNumber.HS | sbyte | -| System.Globalization.HebrewNumber.HebrewToken | short | -| System.Globalization.HebrewNumberParsingState | int | -| System.Globalization.IcuLocaleDataParts | int | -| System.Globalization.MonthNameStyles | int | -| System.Globalization.NumberStyles | int | -| System.Globalization.StrongBidiCategory | int | -| System.Globalization.TextInfo.Tristate | byte | -| System.Globalization.TimeSpanFormat.StandardFormat | int | -| System.Globalization.TimeSpanParse.TTT | byte | -| System.Globalization.TimeSpanParse.TimeSpanStandardStyles | byte | -| System.Globalization.TimeSpanStyles | int | -| System.Globalization.UnicodeCategory | int | -| System.Guid.GuidParseThrowStyle | byte | -| System.Guid.ParseFailure | int | -| System.HexConverter.Casing | uint | -| System.IO.FileAccess | int | -| System.IO.FileAttributes | int | -| System.IO.FileMode | int | -| System.IO.FileOptions | int | -| System.IO.FileShare | int | -| System.IO.HandleInheritability | int | -| System.IO.MatchCasing | int | -| System.IO.MatchType | int | -| System.IO.SearchOption | int | -| System.IO.SearchTarget | int | -| System.IO.SeekOrigin | int | -| System.IO.UnixFileMode | int | -| System.LazyState | int | -| System.LoaderOptimization | int | -| System.MidpointRounding | int | -| System.Number.NumberBufferKind | byte | -| System.Number.ParsingStatus | int | -| System.ParseFailureKind | int | -| System.ParseFlags | int | -| System.PlatformID | int | -| System.Reflection.AssemblyContentType | int | -| System.Reflection.AssemblyNameFlags | int | -| System.Reflection.AssemblyNameParser.AttributeKind | int | -| System.Reflection.AssemblyNameParser.Token | int | -| System.Reflection.Associates.Attributes | int | -| System.Reflection.BindingFlags | int | -| System.Reflection.CallingConventions | int | -| System.Reflection.CorElementType | byte | -| System.Reflection.CustomAttributeEncoding | int | -| System.Reflection.Emit.AssemblyBuilderAccess | int | -| System.Reflection.Emit.DynamicResolver.SecurityControlFlags | int | -| System.Reflection.Emit.FlowControl | int | -| System.Reflection.Emit.OpCodeType | int | -| System.Reflection.Emit.OpCodeValues | int | -| System.Reflection.Emit.OperandType | int | -| System.Reflection.Emit.PEFileKinds | int | -| System.Reflection.Emit.PackingSize | int | -| System.Reflection.Emit.ScopeAction | sbyte | -| System.Reflection.Emit.StackBehaviour | int | -| System.Reflection.Emit.TypeKind | int | -| System.Reflection.Emit.TypeNameBuilder.Format | int | -| System.Reflection.EventAttributes | int | -| System.Reflection.ExceptionHandlingClauseOptions | int | -| System.Reflection.FieldAttributes | int | -| System.Reflection.GenericParameterAttributes | int | -| System.Reflection.ImageFileMachine | int | -| System.Reflection.InvocationFlags | uint | -| System.Reflection.MdSigCallingConvention | byte | -| System.Reflection.MemberTypes | int | -| System.Reflection.MetadataTokenType | int | -| System.Reflection.MethodAttributes | int | -| System.Reflection.MethodBase.InvokerArgFlags | int | -| System.Reflection.MethodBase.InvokerStrategy | int | -| System.Reflection.MethodImplAttributes | int | -| System.Reflection.MethodSemanticsAttributes | int | -| System.Reflection.NullabilityInfoContext.NotAnnotatedStatus | int | -| System.Reflection.NullabilityState | int | -| System.Reflection.PInvokeAttributes | int | -| System.Reflection.ParameterAttributes | int | -| System.Reflection.PortableExecutableKinds | int | -| System.Reflection.ProcessorArchitecture | int | -| System.Reflection.PropertyAttributes | int | -| System.Reflection.ResourceAttributes | int | -| System.Reflection.ResourceLocation | int | -| System.Reflection.SignatureCallingConvention | byte | -| System.Reflection.TypeAttributes | int | -| System.Reflection.TypeNameParser.TokenType | int | -| System.Resources.ResourceTypeCode | int | -| System.Resources.UltimateResourceFallbackLocation | int | -| System.Runtime.CompilerServices.CastResult | int | -| System.Runtime.CompilerServices.CompilationRelaxations | int | -| System.Runtime.CompilerServices.LoadHint | int | -| System.Runtime.CompilerServices.MethodCodeType | int | -| System.Runtime.CompilerServices.MethodImplOptions | int | -| System.Runtime.CompilerServices.UnsafeAccessorKind | int | -| System.Runtime.ConstrainedExecution.Cer | int | -| System.Runtime.ConstrainedExecution.Consistency | int | -| System.Runtime.GCLargeObjectHeapCompactionMode | int | -| System.Runtime.GCLatencyMode | int | -| System.Runtime.GCSettings.SetLatencyModeStatus | int | -| System.Runtime.InteropServices.Architecture | int | -| System.Runtime.InteropServices.CallingConvention | int | -| System.Runtime.InteropServices.CharSet | int | -| System.Runtime.InteropServices.ClassInterfaceType | int | -| System.Runtime.InteropServices.ComInterfaceType | int | -| System.Runtime.InteropServices.ComMemberType | int | -| System.Runtime.InteropServices.ComTypes.CALLCONV | int | -| System.Runtime.InteropServices.ComTypes.DESCKIND | int | -| System.Runtime.InteropServices.ComTypes.FUNCFLAGS | short | -| System.Runtime.InteropServices.ComTypes.FUNCKIND | int | -| System.Runtime.InteropServices.ComTypes.IDLFLAG | short | -| System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS | int | -| System.Runtime.InteropServices.ComTypes.INVOKEKIND | int | -| System.Runtime.InteropServices.ComTypes.LIBFLAGS | short | -| System.Runtime.InteropServices.ComTypes.PARAMFLAG | short | -| System.Runtime.InteropServices.ComTypes.SYSKIND | int | -| System.Runtime.InteropServices.ComTypes.TYPEFLAGS | short | -| System.Runtime.InteropServices.ComTypes.TYPEKIND | int | -| System.Runtime.InteropServices.ComTypes.VARFLAGS | short | -| System.Runtime.InteropServices.ComTypes.VARKIND | int | -| System.Runtime.InteropServices.ComWrappersScenario | int | -| System.Runtime.InteropServices.CreateComInterfaceFlags | int | -| System.Runtime.InteropServices.CreateObjectFlags | int | -| System.Runtime.InteropServices.CustomQueryInterfaceMode | int | -| System.Runtime.InteropServices.CustomQueryInterfaceResult | int | -| System.Runtime.InteropServices.DllImportSearchPath | int | -| System.Runtime.InteropServices.GCHandleType | int | -| System.Runtime.InteropServices.LayoutKind | int | -| System.Runtime.InteropServices.Marshalling.MarshalMode | int | -| System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.MessageSendFunction | int | -| System.Runtime.InteropServices.PosixSignal | int | -| System.Runtime.InteropServices.StringMarshalling | int | -| System.Runtime.InteropServices.UnmanagedType | int | -| System.Runtime.InteropServices.VarEnum | int | -| System.Runtime.Intrinsics.X86.FloatComparisonMode | byte | -| System.Runtime.Loader.AssemblyLoadContext.InternalState | int | -| System.Runtime.Serialization.StreamingContextStates | int | -| System.Runtime.Versioning.ComponentGuaranteesOptions | int | -| System.Runtime.Versioning.ResourceScope | int | -| System.Runtime.Versioning.SxSRequirements | int | -| System.RuntimeType.CheckValueStatus | int | -| System.RuntimeType.MemberListType | int | -| System.RuntimeType.RuntimeTypeCache.CacheType | int | -| System.Security.PartialTrustVisibilityLevel | int | -| System.Security.Permissions.PermissionState | int | -| System.Security.Permissions.SecurityAction | int | -| System.Security.Permissions.SecurityPermissionFlag | int | -| System.Security.Principal.PrincipalPolicy | int | -| System.Security.Principal.TokenImpersonationLevel | int | -| System.Security.SecurityCriticalScope | int | -| System.Security.SecurityRuleSet | byte | -| System.StringComparison | int | -| System.StringSplitOptions | int | -| System.StubHelpers.AsAnyMarshaler.BackPropAction | int | -| System.TermInfo.WellKnownNumbers | int | -| System.TermInfo.WellKnownStrings | int | -| System.Text.NormalizationForm | int | -| System.Text.TrimType | int | -| System.Text.Unicode.GraphemeClusterBreakType | int | -| System.Threading.ApartmentState | int | -| System.Threading.EventResetMode | int | -| System.Threading.LazyThreadSafetyMode | int | -| System.Threading.LockRecursionPolicy | int | -| System.Threading.OpenExistingResult | int | -| System.Threading.PortableThreadPool.HillClimbing.StateOrTransition | int | -| System.Threading.PortableThreadPool.PendingBlockingAdjustment | byte | -| System.Threading.ReaderWriterLockSlim.EnterLockType | int | -| System.Threading.ReaderWriterLockSlim.EnterSpinLockReason | int | -| System.Threading.ReaderWriterLockSlim.WaiterStates | byte | -| System.Threading.StackCrawlMark | int | -| System.Threading.Tasks.AsyncCausalityStatus | int | -| System.Threading.Tasks.CausalityRelation | int | -| System.Threading.Tasks.CausalitySynchronousWork | int | -| System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ProcessingMode | byte | -| System.Threading.Tasks.ConfigureAwaitOptions | int | -| System.Threading.Tasks.InternalTaskOptions | int | -| System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags | int | -| System.Threading.Tasks.Sources.ValueTaskSourceStatus | int | -| System.Threading.Tasks.Task.TaskStateFlags | int | -| System.Threading.Tasks.TaskContinuationOptions | int | -| System.Threading.Tasks.TaskCreationOptions | int | -| System.Threading.Tasks.TaskStatus | int | -| System.Threading.Tasks.TplEventSource.TaskWaitBehavior | int | -| System.Threading.ThreadPriority | int | -| System.Threading.ThreadState | int | -| System.TimeZoneInfo.StringSerializer.State | int | -| System.TimeZoneInfo.TZVersion | byte | -| System.TimeZoneInfo.TimeZoneInfoResult | int | -| System.TimeZoneInfoOptions | int | -| System.TokenType | int | -| System.TypeCode | int | -| System.TypeNameFormatFlags | int | -| System.TypeNameKind | int | diff --git a/csharp/ql/test/library-tests/cil/enums/enums.ql b/csharp/ql/test/library-tests/cil/enums/enums.ql deleted file mode 100644 index 07a63dbc8471..000000000000 --- a/csharp/ql/test/library-tests/cil/enums/enums.ql +++ /dev/null @@ -1,19 +0,0 @@ -import semmle.code.cil.Types -import semmle.code.csharp.commons.QualifiedName - -predicate osSpecific(string qualifier, string name) { - qualifier = "Interop.Sys" and - ( - name = "LockType" or // doesn't exist on osx - name = "NSSearchPathDirectory" // doesn't exist on linux. - ) -} - -deprecated query predicate enums(string qualifiedName, string type) { - exists(Enum e, string qualifier, string name | - e.hasFullyQualifiedName(qualifier, name) and - not osSpecific(qualifier, name) and - qualifiedName = getQualifiedName(qualifier, name) and - type = e.getUnderlyingType().toStringWithTypes() - ) -} diff --git a/csharp/ql/test/library-tests/cil/enums/options b/csharp/ql/test/library-tests/cil/enums/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/cil/enums/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/cil/functionPointers/Class1.cs_ b/csharp/ql/test/library-tests/cil/functionPointers/Class1.cs_ deleted file mode 100644 index bd0ddc309060..000000000000 --- a/csharp/ql/test/library-tests/cil/functionPointers/Class1.cs_ +++ /dev/null @@ -1,52 +0,0 @@ -using System; - -#nullable enable - -public class FnPointer -{ - public unsafe static class Program - { - static delegate*<int> pointer = &M0; - - public static int M0() - { - return 0; - } - - static void M1(delegate*<ref int, out object?, int> f) - { - int i = 42; - int j = f(ref i, out object? o); - } - - static void M2<T>(delegate* unmanaged[Stdcall/*, StdcallSuppressGCTransition*/]<ref int, out object?, T, void> f) where T : new() - { - int i = 42; - f(ref i, out object? o, new T()); - } - - static void M3(delegate* managed<ref int, out object?, in int, ref int> f) - { - int i = 42; - ref int j = ref f(ref i, out object? o, in i); - } - - static void M4<T>(delegate*<T, int> f) where T : new() - { - int j = f(new T()); - } - - static void M5(delegate*<B, A> f, delegate*<A, B> ff) - { - M5(ff, ff); // implicit conversion due to implicit reference conversion - } - - static void M6(delegate*<int*, void*> f, delegate*<void*, int*> ff) - { - M6(ff, ff); // implicit conversion due to implicit pointer conversion - } - - class A { } - class B : A { } - } -} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/cil/functionPointers/Test.cs b/csharp/ql/test/library-tests/cil/functionPointers/Test.cs deleted file mode 100644 index 2dfba6976825..000000000000 --- a/csharp/ql/test/library-tests/cil/functionPointers/Test.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System; - -class Test -{ -} diff --git a/csharp/ql/test/library-tests/cil/functionPointers/fnptr.dll b/csharp/ql/test/library-tests/cil/functionPointers/fnptr.dll deleted file mode 100644 index c63b9dcc254503c4d1686d1bb40d3a702bedd6b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLYit}>6+U<N;q|(X*LISobsp<DPsd%a?Ich&X}$K^iQBC0WY_5nDW2V(-Ap_? zv&_sowNR;PLW=}QBoa|0MT#QmFaAVoe*`3uDu@aa5eOlHP$>ujLP7#nDhlwU;X8L` zACAN8C!*K6=bqO+_ndR@+&wp$7rsIPA_}74yGL{jBe!u0|20^Jc*BlwZJ@W?@ATgi zC+_s;&gxFQYFlMnt;7qeX<BYPuf^?}8Q0BtdM+EUSVb+-*%{sCo1UK{Iw1nIvTgpO z`f9(Xo$(HlgmG}f9(Up~jB)gFbfTEV70+*Gu>Z2H0)o#iK#QMeRsPo;eUe#de;Oj1 zV`QA@Lw_EVjkZYi5Qr_%%Qcw)0TL&Qw5UZuA8(-(uJ)1(`gkV*WHQ$K)(3krVLNsK zV(HsB5DrwvgVAr}@IGN{h6P3Tl@`(2)<*P}Hcm9rLP~Te=M{~8Qz%4d`-yHwiG<|- z_h6^8uZt*3gLxlO9{%!XnA^QMaP4In4Gun87X;SP@HsdL3y2REs5dF74K83>H*Jm{ zpfK|S)FXWbZ^vL%>Fl8%rF}onaCgTbK^~-sAxD}#`9qM4eK2t#vOmO3wh@%6!O?25 z(L?R~u^O!OCKZ`t>|Zx29ddHp{&rB&!9fZH_I2>F^ibp*=;%jb7z?k$i<STo2~IG? z@Mj|X^n~!U%6qhYFp*4*CC5e{2Z6jBfIr9dfzJ}9;e3_xtZVCL*<p>h;TmuKz(SU8 z0p}wyaBN{Fjq&@S|A5>LOc+)kG&hjq*#(8#`5XGX7$e>Upqv{%moQJ*D2aDt>_cZc zqLd@!tOGl~*GClQaXhbxpDAIwE8%r|Q|Y3+Pz%$0v=jXIMG<gOLLuRH39n0dn^?M_ z90-IdEf`kl4B#nZn;pt5;IRP1*NNeC62B#G0sjjz+$43r0Lb1TEHs%}5u<V17)Uj! zw_uYgC_;7{{-%Hj!HLl_m>EPEqE{iC_Ng#9G1>u(8R%`0R6nS#pt@)eg#*XM9@?gy z5Z$z@%!&Cpg!I~$%kWFk^9^c22(la03!q+YP%OLLpm^RjNnHW92-!_ZUBZe*P(Svm zHnN36ANo|3F5u4G$ga^P>ZB_oNJ*cH(G3xzCw!`x-V$vz?NM9aP;QHM%1X-fx}83? zhT>fIal-xyROr!$l<{`DjC0Wq7^X)6qqH9|Mk5kFE@4W-83|8H_`HNV;3oPsV3<}U zyad=spOg4i3BL(T^R$Z|#oq6w0%=NuI_L)?LA~@7z&`o_Z~#X<K?i6A(lI&$_yipT zoTMD!Gm@VLoTMdKn8fX(DQVdJu2PVkg5(s)p>s-6u6053FG&6c@GmJB!T*u+b--UJ z-;<EUPCBEEOBliVf0O!YHyxs<=tU~i%k(9>LcvweWox^R{NZ1tUBeu1VVuP_K(@r+ zcQ>NqaTCS?I?XDXBxOb@GfJ5;${eK3A<7)4BN?k$Gqfiuh1)$xrsg`XY8F+yNRzgv zy4sA%jDki}mAqCgYQ>a`dnI3UHJY?4Ro&3+W16YiP;C({n9G{2mvl96Xp{KSZcb`o z3yxZD;it8Htz2gPh6c^n3}Y=P<v3a;Z>;2Ww^cEx+GWk1M%|#Dx9p{+g&DJn*XK^d z=hK?)=+*;-GiJ%ME2;~jYOK@BYK5AuyDRgWUD2HfTbQ)Wl3uPMA!`=!k|mj^G(&w! zV$OQ+=51_9!EFlWYAr-PBUpq>fTmVGI9^6ISDJ!THPh8A*aYxhJ+B*ZzbTzq!9JEs zG;OG5%C0!BR!R6X5`Ogf4WW`*b?rpaFbM8(dFJa<Jt3(AN87NVl?=_}Oq=tT4qt7m z`Xj3@tFC2JqToR}$R+9q(z;qUEyvXhPMuZvYKDzj)vRVO>jiC{xPB%Za_?Lr2pn{% z*AvJAJCxB2w&hqQHz5xxwtU6W8#e2~C7RpqP$PHVnR93^e-5$M-K@{y4-R$T-7o%L zDP25q^*nuG>`mUIU|fhuAWk9#q`RBR4H6xZa4OIyB3*64NMvgtDUn!Y$H~~%_68Pf z3qYU*geTZep_riU6pV`P`0;D9H^D-TO$1`TjU5ZI2!4=S$@VrS(nlf!D-uS2_?g~& zcOLuY$<-SPvHH4y80zt~<{(jLHuKWR%22%J3K@#~XXxlC>J|JA#V2cqTeG#JrdD%p z)fkG;*Ybv5ct%^vSxcIEv{3j&eq^jvDilYH#p0onO(LhnvP*gumT;dG<YyxS;cX!$ z914X|ctkjfAx_`65NeJ{CkfF^UMwa+w&bQqiq~W!Ds^NMP_bdM=-Jv6=ONy+)#r4H zF3wh0q)T8C5fOfUzMYGQoU-{@TdmGo=G03Ct;(N5?yPN{cUZ4YUf_oXJ(8H6%4PlA zb*P@1WuyicHf(I%UTNK_8tTd{E;EV>3VC0KMCD;dnGUNXUPe*tLPZiN1ZA}n<OTN# zy12wY6*;9dWf<1^3=*$b4GoO;8S^Z%i3^+6PN2^JcWPKe{^$U72-G!bT+h|nK<jK2 z9ex}A&C~CY$jtM^7txI&bgn1;#)`e@d(q#8?A;a_tK9cYp;Os(_Wi@J^`%~!Oy9V> z>*80x^N!6nh8G-M=EJU9QJrP=+|qDSTOP(eRvng!8@BT2hGpJ{TTUjD?uirCVxF?c zQ=^9tlW*Pa_pKv>ROcTD-}~KffAzI*{O!io&HihLy-U_#luX>$>aQY?eP+_K(}s~z zb(1Pi!Ll_?-lU%N-foJo3-vyG|0^U{#<=r{R@ZvWp9nJc06y#S+wr+^qBrCTV-Dj7 z0Z&tw&HzrKzR%JOUfQ#uX8@<YS2uk-_-DNP**bS_-uRS9pbB1FEis$lJOWl#vSCNZ z+ew2>lS*W<7}X-r%0a4v>p-rO3q1>z*KP*?ie&_Ra-pSzUw(k4pGuu1;`aUyQl4`_ zL#WUMYD)`mm#SQ21re#BG-<vBdsS(f=%CcCdzprYgDRHSWR0dzt#gvNnMA{%)0ksp zR#SI`67Zwmd5tLaIRmcLHQ|fV;!)Fff{KvvTXP?-1Kb?YFH3EXriv<@JuA~$SR#s} zACb1_d_HH2ZP(*r%8U9zYj}B@$6O2R))2Sb;uT@Pnt4jfJgwEeKk{bWM4yy7N+B-} nVyIwe40s>MsaTt><{Zw~$8B8(;@<xmrH`(Ye9ZVi$iP1UX&*p| diff --git a/csharp/ql/test/library-tests/cil/functionPointers/functionPointers.expected b/csharp/ql/test/library-tests/cil/functionPointers/functionPointers.expected deleted file mode 100644 index deebe4d568a2..000000000000 --- a/csharp/ql/test/library-tests/cil/functionPointers/functionPointers.expected +++ /dev/null @@ -1,73 +0,0 @@ -fnptr -| delegate* managed<!0,Int32> | 1 | Int32 | 0 | -| delegate* managed<A,B> | 1 | B | 0 | -| delegate* managed<B,A> | 1 | A | 0 | -| delegate* managed<Byte&,Void> | 1 | void | 0 | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | 3 | Int32& | 0 | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | 2 | Int32 | 0 | -| delegate* managed<Int32*,Void*> | 1 | Void* | 0 | -| delegate* managed<Int32> | 0 | Int32 | 0 | -| delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | 3 | void | 0 | -| delegate* managed<Object,Void> | 1 | void | 0 | -| delegate* managed<Void*,Int32*> | 1 | Int32* | 0 | -| delegate* managed<Void*,Object> | 1 | Object | 0 | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 7 | void | 9 | -| delegate* unmanaged<Char*,IntPtr,Void> | 2 | void | 9 | -| delegate* unmanaged<Int32,PosixSignal,Int32> | 2 | Int32 | 9 | -| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 3 | Int32 | 9 | -| delegate* unmanaged<IntPtr,Int32> | 1 | Int32 | 9 | -| delegate* unmanaged<IntPtr,Void> | 1 | void | 9 | -| delegate* unmanaged<NoGCRegionCallbackFinalizerWorkItem*,Void> | 1 | void | 9 | -| delegate* unmanaged<Void*,Byte*,Void> | 2 | void | 9 | -| delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 5 | void | 9 | -| delegate* unmanaged<Void> | 0 | void | 9 | -| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 3 | void | 2 | -params -| delegate* managed<!0,Int32> | 0 | Parameter 0 of delegate* managed<!0,Int32> | !0 | -| delegate* managed<A,B> | 0 | Parameter 0 of delegate* managed<A,B> | A | -| delegate* managed<B,A> | 0 | Parameter 0 of delegate* managed<B,A> | B | -| delegate* managed<Byte&,Void> | 0 | Parameter 0 of delegate* managed<Byte&,Void> | Byte& | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | 0 | Parameter 0 of delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | Int32& | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | 1 | Parameter 1 of delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | Object& | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | 2 | Parameter 2 of delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | Int32& | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | 0 | Parameter 0 of delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | Int32& | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | 1 | Parameter 1 of delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | Object& | -| delegate* managed<Int32*,Void*> | 0 | Parameter 0 of delegate* managed<Int32*,Void*> | Int32* | -| delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | 0 | Parameter 0 of delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | IntPtr | -| delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | 1 | Parameter 1 of delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | Byte& | -| delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | 2 | Parameter 2 of delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | PortableTailCallFrame* | -| delegate* managed<Object,Void> | 0 | Parameter 0 of delegate* managed<Object,Void> | Object | -| delegate* managed<Void*,Int32*> | 0 | Parameter 0 of delegate* managed<Void*,Int32*> | Void* | -| delegate* managed<Void*,Object> | 0 | Parameter 0 of delegate* managed<Void*,Object> | Void* | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 0 | Parameter 0 of delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | Byte* | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 1 | Parameter 1 of delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | Int32 | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 2 | Parameter 2 of delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | Byte | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 3 | Parameter 3 of delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | Int64 | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 4 | Parameter 4 of delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | Int64 | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 5 | Parameter 5 of delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | EVENT_FILTER_DESCRIPTOR* | -| delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | 6 | Parameter 6 of delegate* unmanaged<Byte*,Int32,Byte,Int64,Int64,EVENT_FILTER_DESCRIPTOR*,Void*,Void> | Void* | -| delegate* unmanaged<Char*,IntPtr,Void> | 0 | Parameter 0 of delegate* unmanaged<Char*,IntPtr,Void> | Char* | -| delegate* unmanaged<Char*,IntPtr,Void> | 1 | Parameter 1 of delegate* unmanaged<Char*,IntPtr,Void> | IntPtr | -| delegate* unmanaged<Int32,PosixSignal,Int32> | 0 | Parameter 0 of delegate* unmanaged<Int32,PosixSignal,Int32> | Int32 | -| delegate* unmanaged<Int32,PosixSignal,Int32> | 1 | Parameter 1 of delegate* unmanaged<Int32,PosixSignal,Int32> | PosixSignal | -| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 0 | Parameter 0 of delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | IntPtr | -| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 1 | Parameter 1 of delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | Guid* | -| delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | 2 | Parameter 2 of delegate* unmanaged<IntPtr,Guid*,IntPtr*,Int32> | IntPtr* | -| delegate* unmanaged<IntPtr,Int32> | 0 | Parameter 0 of delegate* unmanaged<IntPtr,Int32> | IntPtr | -| delegate* unmanaged<IntPtr,Void> | 0 | Parameter 0 of delegate* unmanaged<IntPtr,Void> | IntPtr | -| delegate* unmanaged<NoGCRegionCallbackFinalizerWorkItem*,Void> | 0 | Parameter 0 of delegate* unmanaged<NoGCRegionCallbackFinalizerWorkItem*,Void> | NoGCRegionCallbackFinalizerWorkItem* | -| delegate* unmanaged<Void*,Byte*,Void> | 0 | Parameter 0 of delegate* unmanaged<Void*,Byte*,Void> | Void* | -| delegate* unmanaged<Void*,Byte*,Void> | 1 | Parameter 1 of delegate* unmanaged<Void*,Byte*,Void> | Byte* | -| delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 0 | Parameter 0 of delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | Void* | -| delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 1 | Parameter 1 of delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | Void* | -| delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 2 | Parameter 2 of delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | Void* | -| delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 3 | Parameter 3 of delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | GCConfigurationType | -| delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | 4 | Parameter 4 of delegate* unmanaged<Void*,Void*,Void*,GCConfigurationType,Int64,Void> | Int64 | -| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 0 | Parameter 0 of delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | Int32& | -| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 1 | Parameter 1 of delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | Object& | -| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | 2 | Parameter 2 of delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | !0 | -modifiers -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | System.Runtime.InteropServices.InAttribute | modreq | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32& modreq(InAttribute),Int32&> | System.Runtime.InteropServices.OutAttribute | modreq | -| delegate* managed<Int32&,Object& modreq(OutAttribute),Int32> | System.Runtime.InteropServices.OutAttribute | modreq | -| delegate* unmanaged[StdCall]<Int32&,Object& modreq(OutAttribute),!0,Void> | System.Runtime.InteropServices.OutAttribute | modreq | diff --git a/csharp/ql/test/library-tests/cil/functionPointers/functionPointers.ql b/csharp/ql/test/library-tests/cil/functionPointers/functionPointers.ql deleted file mode 100644 index e6a9219bf6ca..000000000000 --- a/csharp/ql/test/library-tests/cil/functionPointers/functionPointers.ql +++ /dev/null @@ -1,42 +0,0 @@ -import cil -import semmle.code.cil.Type -import semmle.code.csharp.commons.QualifiedName - -bindingset[kind] -deprecated private string getKind(int kind) { - if kind = 1 then result = "modreq" else result = "modopt" -} - -bindingset[t, e] -deprecated private string getAnnotatedType(Type t, Element e) { - cil_type_annotation(e, 32) and result = t.toString() + "&" - or - not cil_type_annotation(e, 32) and result = t.toString() -} - -deprecated query predicate fnptr( - string fnptr, int paramCount, string returnType, int callingConvention -) { - exists(FunctionPointerType fn | fnptr = fn.toString() | - paramCount = fn.getNumberOfParameters() and - returnType = getAnnotatedType(fn.getReturnType(), fn) and - callingConvention = fn.getCallingConvention() - ) -} - -deprecated query predicate params(string fnptr, int i, string param, string t) { - exists(FunctionPointerType fn, Parameter p | fnptr = fn.toString() and param = p.toString() | - fn.getParameter(i) = p and t = getAnnotatedType(p.getType(), p) - ) -} - -deprecated query predicate modifiers(string fnptr, string modifier, string sKind) { - exists(Type modType, int kind, FunctionPointerType fn, string qualifier, string name | - fnptr = fn.toString() - | - cil_custom_modifiers(fn, modType, kind) and - modType.hasFullyQualifiedName(qualifier, name) and - modifier = getQualifiedName(qualifier, name) and - sKind = getKind(kind) - ) -} diff --git a/csharp/ql/test/library-tests/cil/functionPointers/options b/csharp/ql/test/library-tests/cil/functionPointers/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/cil/functionPointers/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/Program.cs b/csharp/ql/test/library-tests/cil/init-only-prop/Program.cs deleted file mode 100644 index e867fdc0718e..000000000000 --- a/csharp/ql/test/library-tests/cil/init-only-prop/Program.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -class Test -{ - static void Main(string[] args) - { - } -} diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/Test.cs_ b/csharp/ql/test/library-tests/cil/init-only-prop/Test.cs_ deleted file mode 100644 index d39b5a82926c..000000000000 --- a/csharp/ql/test/library-tests/cil/init-only-prop/Test.cs_ +++ /dev/null @@ -1,13 +0,0 @@ -namespace System.Runtime.CompilerServices -{ - class IsExternalInit { } -} - -namespace cil_init_prop -{ - class SomeClass - { - public int Prop1 { get; set; } - public int Prop2 { get; init; } - } -} diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/cil-init-prop.dll b/csharp/ql/test/library-tests/cil/init-only-prop/cil-init-prop.dll deleted file mode 100644 index dceff38f4876df7970395ec4a9046e1e1b276225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKU2GiH75-+tHjd*saUdv&pG=4<Sc-ArJ_}KWk%CCox_pq(Q=--M!gNJUcVY z%$isTun_-!;h_=|2#FxxDph$%B~(fuijXQKDg;I4u|lY&NT@B32ob(>XV%`eAp)Kd z;yU-c=kK0-&bfE?-W)#p99jV6*e_lLUgIcjNaLkpnd+_`f9%4A4e#uH&6s*;=j>@W zw!$c=L{8NzIldnxR#90|&9_|N${#IQ)u62GO`AG;GS|~%z?9K~+?!XNtFQJ?TyJeO z`hX5f+EVHG9*!3K5Ie9%(`FjC2qb>pmWh;0Yr*^zVk-Yu$BY#b+y8F>jtVgZ<fRa6 z+dR-oStspg*Xl0CTR?k*zMcF;18*nlY(joYjHuJOW^t3#%>w4_D2__xbZkQ;BvA>d zp$##5J5pXiL#>*pQhe#WIc9AL7^&0saktc!O=2_AipMSBY1Z5j;SXrnnGbPl?ibga zEe~sg0)~<bGGfmrNtY%WF;cjD#K=~Z_!sxtefD7AVE+LLpcNkRH0SPm1o%70KM7q( zBG<3PV)0yST9#eM3ivH)Nqg5_$0qX}UnT#s@FQMO<S32PjeEDfY-|wb3u6#hrul9r zD@TBOee7gpsMyLb^$=dlU#EeMrqE(tG#1P@T+nz9C(O<G4b9u|Z+vL9;YFi|+EI<r zc&*0AG`<VbzG_}ed=d+02LgKNz#oX>{YC+<Dr;@Q3ufNzU*UddE|6>CN(KhdgPoWp zPFphL$#w%bP<|rgHtJbU#%-g{gqv|Ya1*&G<+jf-k`_GF#7PA2F$BR4m|^DK#5P<- z>|l&D<`(p8JfLw{<D|xWH2zwnOKiguaT^>>TeuJJGx8Km_z*TWVn6Y693ozg`-!_y zA>M?Sh=Vv!ydAF-NAXwUue7{C9MXP<GZb(0nqJmuGJaq)YsE7`6uyPsBuZ~3og?O! z(|x8{*7kERa<tJ~LfO^yD=nvIYm&0h(*priR5CXm1z|tp6{;>9Sdk6j;NhTL^VFR< zsIBi@n424MN((&O<F4|`sd!+WxUdu_s%p>F{KTy)<W;d&si<fq3LcD|qNfUplPHV^ z)zI}+beHl~L_v8t;b&8<QI*aR)3ve&FRQBII9Ao7w>0Y}jWcGQh)Ip}=UzP+L<{Tf z$GQA*6~%7guUAg`r-G>JBvd-yw_1$`{wcRoWBg4{(%iIgMtROzO~vaMVOh(yQnFql z4jg}JRgo1_%M-WgdT!F7U39#fLUY~iENJdlU6Xg6iXX&@TZ(O6W0YKPuj{+XUS5o$ zUG}`pv_4}-o$^#kl4~{<ZcZl7$wb(tB#7#B8dj-`vgqylo)=WK=$2HR?KDH=Nh4bb zs%q48;uuGZXSgmV<FT`eins-nTr54v=zb=?=N!JwKmXPK$6xvV$xo5945Pipg3(H% zyIa^UO&(}Je`xN}?hiU{Guy<Vz0ERqbkcSY+W7+{_Zx7X{CdrrSKb>r;gP@}J6lqr zWITIX4y-}D%k+nHvw`jQk+Ip)AX39&_{*%mcPtLt{dCZE#mZ63yK(3_OGkL}u+_k( zrYiG(G0>WpADwjG&l`n*sa!MsaAifV+|)Whd+IG1ho|K$Kf^xHdw*VE6seh*U(QZ3 z-X^@=pc9KVS1x7>`NIDy|9I?;zigfQv#b90pJ)Gdi}>h07W1p<O`NI|FFI!yddq6D zmtS<)+muLeP(0JC^XT<eQest{Fk~&7t?aN|L}6lh;O70v7Q5z=Y%wM@_EGiq`wyOc z_k;HLAGqVH?828|2ZgqTTHopqgH$ue4as}nVaN4RjU^7HPjWWz;%>TGoBDd6KTCe( z6)^NBZU>f|15Mu^{Cw8Q#cqQA#1QaF{c0rtiMfw>90kk~$1p=`k}vHe<R^*a>8l%W z<o^3rdeh2RAuSybr3`P^^xc)QddL$EdUX)dkIVO=qE8>E_->Ncqi4-h>rfg~?;xRF zKrU_Pa}$i!U`z?ET*@oo;HgL3^r8N@4@J_zL3DBMDE(Ct>NS>_kwZ>t_az<EUhUWA z3VUf4(K@6yujkgI&T~eLl8zy4it$oD`uL-2ti*eqJ|cQq&99&Dp}v(aYi^~zR4CE5 zK4bM7BL4QZY?Ns!@9#Z)_ZXPs{ED6}*@t|^N%bl?P0!H3BvX2=qnTVPD{IyB6)vsP zcUd#7^E7=0jHAXnB@I!7yzKoq*SSx>h@0oGt<-9rfLnD<hgrv%IaayT9<#G}%9^XY ZI!9{!6KGcYf5wShe*(GuoWl36z}M1Sag_i7 diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.expected b/csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.expected deleted file mode 100644 index ec6ec39982d4..000000000000 --- a/csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.expected +++ /dev/null @@ -1,104 +0,0 @@ -| AsROImpl | System.Runtime.InteropServices.InAttribute | modreq | -| AsRef | System.Runtime.InteropServices.InAttribute | modreq | -| EventWriteTransfer | System.Runtime.InteropServices.InAttribute | modreq | -| GetPinnableReference | System.Runtime.InteropServices.InAttribute | modreq | -| GetValueRefOrDefaultRef | System.Runtime.InteropServices.InAttribute | modreq | -| ThreadIDExecutingCallbacks | System.Runtime.CompilerServices.IsVolatile | modreq | -| Value | System.Runtime.CompilerServices.IsVolatile | modreq | -| _bufferedValuesIndex | System.Runtime.CompilerServices.IsVolatile | modreq | -| _canSeek | System.Runtime.CompilerServices.IsVolatile | modreq | -| _cancelCompleted | System.Runtime.CompilerServices.IsVolatile | modreq | -| _container | System.Runtime.CompilerServices.IsVolatile | modreq | -| _first | System.Runtime.CompilerServices.IsVolatile | modreq | -| _head | System.Runtime.CompilerServices.IsVolatile | modreq | -| _idsThatDoNotTrackAllValues | System.Runtime.CompilerServices.IsVolatile | modreq | -| _initialized | System.Runtime.CompilerServices.IsVolatile | modreq | -| _isWriterInProgress | System.Runtime.CompilerServices.IsVolatile | modreq | -| _kernelEvent | System.Runtime.CompilerServices.IsVolatile | modreq | -| _last | System.Runtime.CompilerServices.IsVolatile | modreq | -| _localTimeZone | System.Runtime.CompilerServices.IsVolatile | modreq | -| _next | System.Runtime.CompilerServices.IsVolatile | modreq | -| _oldKeepAlive | System.Runtime.CompilerServices.IsVolatile | modreq | -| _owner | System.Runtime.CompilerServices.IsVolatile | modreq | -| _previous | System.Runtime.CompilerServices.IsVolatile | modreq | -| _queues | System.Runtime.CompilerServices.IsVolatile | modreq | -| _saDurationFormats | System.Runtime.CompilerServices.IsVolatile | modreq | -| _saLongTimes | System.Runtime.CompilerServices.IsVolatile | modreq | -| _saShortTimes | System.Runtime.CompilerServices.IsVolatile | modreq | -| _slotArray | System.Runtime.CompilerServices.IsVolatile | modreq | -| _state | System.Runtime.CompilerServices.IsVolatile | modreq | -| _supportsRandomAccess | System.Runtime.CompilerServices.IsVolatile | modreq | -| _tail | System.Runtime.CompilerServices.IsVolatile | modreq | -| _timer | System.Runtime.CompilerServices.IsVolatile | modreq | -| _version | System.Runtime.CompilerServices.IsVolatile | modreq | -| _waCalendars | System.Runtime.CompilerServices.IsVolatile | modreq | -| currentTimeZone | System.Runtime.CompilerServices.IsVolatile | modreq | -| g_nameCache | System.Runtime.CompilerServices.IsVolatile | modreq | -| get_Current | System.Runtime.InteropServices.InAttribute | modreq | -| get_Item | System.Runtime.InteropServices.InAttribute | modreq | -| m_Dispatchers | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_Next | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_array | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_channelData | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_combinedState | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_completionCountdown | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_completionEvent | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_continuationObject | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_currentCount | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_etwProvider | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_eventData | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_eventObj | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_eventPipeProvider | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_exceptionalChildren | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_exceptionsHolder | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_faultExceptions | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_headIndex | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_internalCancellationRequested | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_isHandled | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_lock | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_mask | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_nameIsCached | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_rawManifest | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_stateFlags | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_tailIndex | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_taskSchedulerId | System.Runtime.CompilerServices.IsVolatile | modreq | -| m_waitHandle | System.Runtime.CompilerServices.IsVolatile | modreq | -| numRequestedWorkers | System.Runtime.CompilerServices.IsVolatile | modreq | -| property Current | System.Runtime.InteropServices.InAttribute | modreq | -| property Item | System.Runtime.InteropServices.InAttribute | modreq | -| s_DefaultThreadCurrentCulture | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_DefaultThreadCurrentUICulture | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_Invariant | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_allContexts | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_anonymouslyHostedDynamicMethodsModule | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_cachedCultures | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_cachedCulturesByLcid | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_cachedCulturesByName | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_cachedRegions | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_canceledTask | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_currentRegionInfo | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_defaultBinder | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_defaultFlowSuppressed | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_defaultInstance | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_emitAnsiColorCodes | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_encoding | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_indentSize | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_initialized | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_invariantInfo | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_jajpDTFI | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_japaneseEraInfo | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_osArchPlusOne | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_osVersion | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_privilegedProcess | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_processId | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_processPath | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_provider | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_providers | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_regionNames | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_systemPageSize | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_userDefaultCulture | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_userDefaultUICulture | System.Runtime.CompilerServices.IsVolatile | modreq | -| s_zhtwDTFI | System.Runtime.CompilerServices.IsVolatile | modreq | -| set_IsDerived | System.Runtime.CompilerServices.IsExternalInit | modreq | -| set_IsOptional | System.Runtime.CompilerServices.IsExternalInit | modreq | -| set_Prop2 | System.Runtime.CompilerServices.IsExternalInit | modreq | diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.ql b/csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.ql deleted file mode 100644 index 3eeb5cf0697a..000000000000 --- a/csharp/ql/test/library-tests/cil/init-only-prop/customModifiers.ql +++ /dev/null @@ -1,17 +0,0 @@ -import semmle.code.cil.Type -import semmle.code.csharp.commons.QualifiedName - -bindingset[kind] -deprecated private string getKind(int kind) { - if kind = 1 then result = "modreq" else result = "modopt" -} - -deprecated query predicate customModifiers(string receiver, string modifier, string kind) { - exists(Type modType, CustomModifierReceiver cmr, string qualifier, string name, int k | - receiver = cmr.toString() and - cil_custom_modifiers(cmr, modType, k) and - modType.hasFullyQualifiedName(qualifier, name) and - modifier = getQualifiedName(qualifier, name) and - kind = getKind(k) - ) -} diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/options b/csharp/ql/test/library-tests/cil/init-only-prop/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/cil/init-only-prop/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/setters.expected b/csharp/ql/test/library-tests/cil/init-only-prop/setters.expected deleted file mode 100644 index 49f58c1113d7..000000000000 --- a/csharp/ql/test/library-tests/cil/init-only-prop/setters.expected +++ /dev/null @@ -1,2 +0,0 @@ -| cil-init-prop.dll:0:0:0:0 | set_Prop1 | set | -| cil-init-prop.dll:0:0:0:0 | set_Prop2 | init | diff --git a/csharp/ql/test/library-tests/cil/init-only-prop/setters.ql b/csharp/ql/test/library-tests/cil/init-only-prop/setters.ql deleted file mode 100644 index 06ab21392e3b..000000000000 --- a/csharp/ql/test/library-tests/cil/init-only-prop/setters.ql +++ /dev/null @@ -1,11 +0,0 @@ -import semmle.code.cil.Method -import semmle.code.csharp.Location - -deprecated private string getType(Setter s) { - if s.isInitOnly() then result = "init" else result = "set" -} - -deprecated query predicate setters(Setter s, string type) { - s.getLocation().(Assembly).getName() = "cil-init-prop" and - type = getType(s) -} diff --git a/csharp/ql/test/library-tests/cil/pdbs/EmbeddedPdb.dll b/csharp/ql/test/library-tests/cil/pdbs/EmbeddedPdb.dll deleted file mode 100644 index 7a9e483ba2b8c4ce0317a64d9175eba8c758837e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKYj7J^6+SEZ6+2Pl+B8m^hOHIHvSZ6qB-d6`6WNyIh}f~P6a#UFcqOgnr7Nwv zyH2AF1v?!=^8nHZ#6Kvc5N0UpbTUIbxD3#c$3W7S{%L=-8QRbvold6&D5Vr8ZTRlh z!}5bNFwFEvIr2Sw&-0#h?%lh`gS(EAm553(u3smb#gl=b;}1tu5ZgZaGaEgz?73TK zg@Na8jZ7$pnAWv~E+xg7luBu)7?nkRG9@Z0F)$PslUiJMu2@mIKIb~rM>HT<>5VUJ z+Ld4J3e}5Mf{UmUoU$zUO$VMLh984y6`xzOaWh6vjc5u4_zbKx_Eo0J{^p)JlCc0Y z@H@mNexmzWAr`_I(Q@#vH4t?!lzkX25>*t*D?o26qMfF^&jkG^rUV(!H5WH14kFQ* zQ#bS&C?1<16Sh$-pd#=idZ#X{8Wg!`3_|9M=Z$9${6szZdH(q<@@K$evrs9iBGIu@ zB7rgg3#f4kR1Q1XSJUdsja1fLZ*i<-`8D^1KiwnbJhM3WdYvw($K`SR*g{wv_~$UR zf0@XE_yZXBu&FDlguyga<j&H!?+jBK6PBL6e`hd&=M<xvZI7x&K{J54&|hnzWsLZT z;Gr9{c`-Z4_&{W2!(jR52hn2!o3m3@F08PWk;(C9x-6`uR+yGijLr#V^d`s8a6Bq7 zP9w*Dj`wr^5M2eomE*@b=UemuICofBuK82K>LMT`0cGpv^N`4-)3kvaLB}|Cu<k`z z3drb1L|6@6Mr(j8sR?)$xjFW6+|6;2<IiyXd5$IEPmsdrcX6EIcpA8joK!^{fosSM zd^3fC?X(+sBPD@79B<~hm-Dxi0e+ZsMmdhr5peFLCxHz*OE*!;RJOWQfNIRxUglvP z-IAXY^{SF#xap2TEk3ErpQ65GRF22xcqksFq!H6}Rf*D|Y))u#>Yr5N-6jr6bkdY5 zAV((?2`Q?|bG%+HIieWKJYKh9$jPXhi6~~VYJsgwaXBgJcg}f<NP0pxx8h=x@79V1 zd7G_@Dv!vzp=hZ&tGuvRON}duNnJ9R6bED@rYq_BLd2a`RBkaWtI|F`GZy;}=_pgo zTrB9-(ivSzOe`r%rlnM7&SrQrWhzOTt%-G_imI4J(s0Hw<)kyG<jkds_p*3voN-m9 ztY+@v9G1sbImXf=XUx>}JU^gFiIirTO3cW!^1g#9Q`WU~Sl0I{F?o?VTNGI@$g?|+ zP;gkFJ{0{T7R(-{eLoq0e&+UT{in9y^6PuIeC-sKh=NdI6-g+?q`I1sHij(La-pK) zr~7x0tnpqs1cizUA$NPPW3Oeza^q)pDZN8W_3ewve48Q@x^}lAK(Cy?#khN_ijOIk za`tM0ZYXSnc=l0I+~jh15H$(3{x*+S?ufdht#OyPqt)Bl(b+2bI;7S(<GR}8?Qxd} z7dlpO<DSHiXi%WF&K-S`!ZB>gZABOE(%YPFglelT2m^|dR;A1i9NAiCB^D$i*Jf4X z-(6uagiDRqB4qCd4E9aR1M+9@>NdzijTpF0hr@yJ%fI>C)taDX+mXty<7YeUl`Pw$ z{GDmMsvk!f3<Y{-Q4FK<T|F8fi<7WUw59JFc6eU!P?hVn`vnTF7DsH`f|f&T>9vwo zPk&>&Tlmq}OV8V!O_!eC-d1+;)S2@=_pb3ysmHo6U47)cqNl#@k^K+rZ+9R3-R*yV z|KZb(5B7H)|HC`IuV32T_S(_!`^RUGxZG)ra_m&e)XcKOf1jRN*=#$ve3j2(_#!7u zTh5g1Jh%LZf1N(*3q5rIugV`gT<x&_W%K4p<G}YUA?LRR;g$P>*S<O0aOLs`U9Wnc zdTIUd`-e}w?|%2012qTM*xqX!-!)tB_~koqoWJMs(Y=m=)-T=k#PR8iFCF$ZJbCm7 zCmdTgwm)@prmNH4*3k6yfy?b3P3;X0?WJ`mzVln(p$iud?!S29E%(uuwFe&fasAuR z*M6n#)eWb8+UR@tys}aqeZ6_l^%gQ~?KgYu*2bEeDyu!*^<bTy&gA+Mc7|SNbCJy! zL%x5>O7`?>dO%eNB_);pP{=aBm6-H;1AHv#h!*?%cym|>LR5!#YJMHqB}jw|Xc3?3 zvEK1>exjD5{<+2K1$P8}!5-i~8pbS$PJ0LFAn?{~*G<1D`Qr!0omak3*aB+?tVdvX zQ!xZU2=FSA4nGR|Mj1X+G)@{<ThFZ`kV@bhkV|AjPXm>O(<MjYR6tB7v=s0YOL&^# zIxgg${dp<MYJh%*)uR{wlK9E6HnB<;>WgG)zJ3PTN?b3eLVk4VLSelCJQ(OFSsdwk zarVI~3TYfahC>)pIC0_IG-p2onGO$g`MJ?|xe9}@9_uSvg-ouSLOg0wR7<bp#A+&j zY=3Wn{Qzte+>&LUrVNibK@;$bmTeJFq(||>iL?o^xC!4pYKE6$KiM5(xh3ION5`12 zB3qNiJd|65?GTGOzuSyrmB%+{$r{bY-pOknf*%d}Orp+aQRe^39^XJ-<N0<AE4{GJ qo!q7ySr|O0C?d|F0{_kqX?%1bX8&h=>p%ME_M;2;|11A*EAUTvDzKUW diff --git a/csharp/ql/test/library-tests/cil/pdbs/FullPdb.dll b/csharp/ql/test/library-tests/cil/pdbs/FullPdb.dll deleted file mode 100644 index 6ce8636e4ef29d6d9512fe9cdae05365d5529ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHKU2GIp6h5<Ux7!~I<*%TP4lN=-cHC_jC@8q?ZVN^FV|OVCP3Y|IbUQFRv(C&y zR~yAd1og!j;=92ZQ641GKuj=(_}~kMCtu~&2jaUS;CJrqbhllCiSfaxXM4}R=l7m- z?wxyYM~{C<bwpH;_V6Lm4fG5#fgg{~LEQHAw{7%w)9p<+q{Fv2rRH=;F4$JiR`YU3 zHBHNv)0%7-O<6bP#CTH9TUkw6v7&i%+4aN_(P62MzL@Gg?$36Yy5trqOcVkq=y5-L z7QKuXLnB%x#sM#GW|Y;4&Vc}*p^j$Gvnu~p`ZCEZKni}xc@QI-<3cQl8KPG3I=7%L zmpzV_z3_dN5a@$GfnIU7c^CcFMj#oDb1lb>kpP)!MzI|`14_ge!+;m68LbLph+eTZ z!-68mN;7Ees|~FRVnl;gq!?c0x&k=105#A>ndnjjk;Kfu0Bgblkq+$JsiV20Wk)F3 zc)Yo><5){$-GjjT2U2UO=U#Bd4r<!o71+9xli7}W29t*drShzt!<ncOR{Fwykv$wl z0~x?Sz-jlJM3{nNXx&NI*3F#58U@saOVfQMNiGJw<lP63j3m&%!!+9t8de%K1I(oZ z>jKoo#P3oct@m<fJIF+X2_ZmHMjrc(=u3&myzA~$C=euFVjQNQrIoZ5=0Q3}-$_CG zMd0rRo{*T+Dez8#Ex}LFui$qHd|7bbrwich4qO+L@W$Y|`L_zKod(2sLT3Kk^og_` z^n#$?-Eaq%9KS?ANlkPIakc{oX(MnmZ3A9K5rOvzJRtChz^@4Ws=zAnI?~1XHGxY4 zzYQEDg<9x&;5F0_{3IO(?#8xLXb0ti`viVL;JDzwOb+--!8svthCTr2G<^f?&@Fm` z>d$#KM)+lDN6)M3!zScWhPa_RPJ~_@wX#J++fTzq!<fjXDeq(~+tAZ=pr~gDT<nl^ z(bXuSrHi?onl`iwFK*?hbVpyp8*m&gpEgP<-K|z#WZP<1%d7V3ikFmX=QMX1C!TiJ zsuuV*!@8kOX||(VX2r@E#w~MJ&lPReeWW;{IT>3oEEOW|f^G<lNzG8_#mK4kJz=9Z z8Mjstw+ba&&&@qjlrN}esbVu(G+jNf@tl|^tsA;qB~6wbSIaA9C8eAuK1v!^Gp=Rp zs^PDUk~IwS^vj(xsm&T%hLa<OwS9g<S97N2xO&F%S^f+ormNXjA*tDC^o&*`_DZAK zi*j$>5fJtX)W_4OFkyKMmF~@7ee3)ihb~<DX#eF;_byPqEJ>j{nWP2`+S{3IV-yHB z)`voYQ0V&W(^DIxci#gu6beb=&?b6{Kh0EN{ZU&jj9KQ;d`1&1mYTDzvyKG4M)4)L zV&HF6Y7ndriB>PJhJ5RaEcb>ZyNR|*v^f&)-<gd>)t>CE7VU{fcZYlWwM=hMZ#vo= z&F<P6>5WEl;KOMIXC;0_qY`y0V?(LM-S}L2MfTx5-K9hjX4~3DVM2EbhFTiK&Rxq^ z@}fi*+FU08Ugk5U6CwBG9_+`FG?`2!Pux1Y?cn`|(QEsD+;a25wQ<fUzIQsSotefP zfD7$RCsi|>w&thHc~4vEQ`2Hie2!AUNBi%Bh4P)sS$)i7nMbwY-@TsXWZbe7hB2z@ zrgw;Gn)qZ``tTX}5U-e8FMlV8Zy2Ht-YcrgF>i3(yN}?r62Bde#jq9YnDU^t4ttZP zaN?f?9->K%M)1-a13dyf?7h0^X8msuyi=cNVDS2vJVKoQy!Wbs?{o=XRkGnn$J;=I zPm^ZJ5^9@;RSHrSTnBQMT<BS#Jou{KfKv%ExzN(V$AMMj>7dXFBX92)r8L(7Hx<_- z4u5(4G+4Ws#e=RYSwYNSLbj^VE34qn3_;7EF98n@Wkei>C2<Z@5wROIL0Qbq^{=*@ zf}IV^N?sA%q~XPe?-Z{=NmRxax+dZ<s-juyU%@Oq8?WbT*d2yVPFQfJ1uBUMb2Nt- z@txQ3WV(V)DpN0Fh!D;&yz9756+hmJWZ^dtzc%iEziLD=5$kw)4qg$C)vpm#TxkNQ zx+ayFz1mE`-a;Nl)YGlXbh#Z-RMc{*{_={})|2Z$fT$gjLmCm5knx|{A?$xH$lm`9 NpYwwK5C6Fe`~f&5G2#FK diff --git a/csharp/ql/test/library-tests/cil/pdbs/FullPdb.pdb b/csharp/ql/test/library-tests/cil/pdbs/FullPdb.pdb deleted file mode 100644 index 69e2f3db261820d8d7c257b3335d5d8004f3b314..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 zcmeHMO>9(E6h3blq|+Z@q#5dH<V6Dkit|%Utt6%?#fGL%3N$GS6VmCMnK*XnH1non zjEjj9-DwwYG#W9wAP^U%#)aCX8iR!;O<0j&SQsUQ215c1)A9S>4;dTUq_LIh%sn&b zefQ_wd(S!dz5C9+FP1U#IWw0o=-uJ&)>b_>(4)T)ibR^~g9io#<gxy;70Ckgpk^D? zwF*2iT~bub9_WzYYT5jnx4q$VRO{e6w%K98Mk$rNz*1=)u8OMJ0}q@3O=|wDdCLD~ z+sC1(c5blkn1<5hKcCul@b7nG7ham#F*Sdo-xXvXxty*Y-n+1<yjrE#hzB0_{PU$) zzWy^$a~9$nF;S_xga_38FX5aTsJcIVxbxzMS^va<O!t4~`SO>S`#$;e_bdL1PCMW5 z`TNKG=~@5OZjt+Sy;HXWEu|CZHpf1=m+Lj&dw$403pjn~qy3*6Q~s~N==$|~`;mPe zC%^lt2HaOQChCqQE>?|U%8(^JFh4gx$3Sk7Qr-LF$<&+iv3%~0lu<C_1Bub(aPF;m z&v-U_C^;PO&L&JV8Zt}~V}YpYh^8Sr22taIC?knhFh|(~CaHa;?T1Hyeey;`D?*L* z*wBrc!mPI3pq}zLBDQANZOd8S31;8l%)Hwdcj|c;ur38wR2d%N)7d7w{nX|UM<v}s z0_OBF2Ss`kMj@BaB(fp_S?6clGhiJ|;`|3ixB5cbLY8AaNsb!@s}0YZJ_GZ60#^aH z37`$JyiEpq4~8c17q9nH=go_guU+l^al6m+!})KAP%SYz0Nq8rxB;mPkFa<zlDyEG zd97Z1))Ne9?B_4!Cs+y6@YAi7NImehlSZ>5b=d%<es#e0z}s{4MU;sT`39$alY_K{ z^+6!|Dn1Q_4BC6~Yet*LQ6jP)_>^oz2_>oX7Wlv`cag?8wBI78Ni8<4>Xm!Cpf7xf zzG{T?o&Zu0msfRgj#FIi5mf&x;ep1L=tT8VaUKZBc59vH`l*#I@B!IXRvu}OkfIf* zzEbEvdVuTxV&uLX7OPj~Yu^K$<5Rw<756tt<A;rMCD{bCUIpu5#_QJiK_DprW{iM{ zXW9Z>?9<`$^I^A!STDDn>{*~2<2Xg)Y%N3f)>69mwntu!v~|gI--qtFvbrl=h8{$E zO_qT6;9Qz=bxr_CyC_a%tmlrrj4iIXdt+x9c4reiwaI4<V5i;MHHAxk|2Yav!mngT zM|wxoISG#@PNqx=n|UMrdMc4j<%hF5W5g~<XR;|Xyu3pJ?knh8hRY<rZx~`f17--! zu-w{v02zXl)MqE#4=Z-vh@N!tB$&^6A7;dT-rq*P2<HBMC-@BN_Tc&Anh*hVf5e>) vC&`^WPMWhn;$BG@H*!7UIDFS|&!nhwJg}v5R8g8J4=4{P4=4}(j~@63S3*nE diff --git a/csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.expected b/csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.expected deleted file mode 100644 index 96d8f519d481..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.expected +++ /dev/null @@ -1,41 +0,0 @@ -| C:/dev/projects/Sandbox/EmbeddedPdb/Class1.cs:6:3:6:4 | 0: nop | -| C:/dev/projects/Sandbox/EmbeddedPdb/Class1.cs:7:4:7:13 | 1: ldc.i4.1 | -| C:/dev/projects/Sandbox/EmbeddedPdb/Class1.cs:7:4:7:13 | 2: stloc.0 L0 | -| C:/dev/projects/Sandbox/EmbeddedPdb/Class1.cs:7:4:7:13 | 3: br.s 4: | -| C:/dev/projects/Sandbox/EmbeddedPdb/Class1.cs:8:3:8:4 | 4: ldloc.0 | -| C:/dev/projects/Sandbox/EmbeddedPdb/Class1.cs:8:3:8:4 | 5: ret | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:6:3:6:4 | 0: nop | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:7:4:7:20 | 1: ldc.i4.1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:7:4:7:20 | 2: stloc.0 L0 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:9:8:18 | 3: ldc.i4.1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:9:8:18 | 4: stloc.1 L1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:9:8:18 | 5: br.s 14: | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 14: ldloc.1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 15: ldarg.1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 16: cgt | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 17: ldc.i4.0 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 18: ceq | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 19: stloc.2 L2 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 20: ldloc.2 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:20:8:26 | 21: brtrue.s 6: | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:28:8:31 | 10: ldloc.1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:28:8:31 | 11: ldc.i4.1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:28:8:31 | 12: add | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:8:28:8:31 | 13: stloc.1 L1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:9:5:9:18 | 6: ldloc.0 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:9:5:9:18 | 7: ldloc.1 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:9:5:9:18 | 8: mul | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:9:5:9:18 | 9: stloc.0 L0 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:10:4:10:19 | 22: ldloc.0 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:10:4:10:19 | 23: stloc.3 L3 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:10:4:10:19 | 24: br.s 25: | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:11:3:11:4 | 25: ldloc.3 | -| C:/dev/projects/Sandbox/PortablePdb/Class1.cs:11:3:11:4 | 26: ret | -| EmbeddedPdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 0: ldarg.0 | -| EmbeddedPdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 1: call System.Object..ctor | -| EmbeddedPdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 2: nop | -| EmbeddedPdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 3: ret | -| PortablePdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 0: ldarg.0 | -| PortablePdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 1: call System.Object..ctor | -| PortablePdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 2: nop | -| PortablePdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | 3: ret | diff --git a/csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.ql b/csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.ql deleted file mode 100644 index 321705377897..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/InstructionLocations.ql +++ /dev/null @@ -1,17 +0,0 @@ -import cil - -// Used only because native PDBs are only supported on Windows. -// They are included as tests but disabled here. -deprecated predicate filterMethod(CIL::Method m) { - m.getDeclaringType().getNamespace().getName() = "EmbeddedPdb" or - m.getDeclaringType().getNamespace().getName() = "PortablePdb" -} - -deprecated query predicate instructionLocations(string loc, string extra) { - exists(CIL::Instruction instruction, CIL::Location location | - location = instruction.getLocation() and - filterMethod(instruction.getImplementation().getMethod()) and - loc = location.toString() and - extra = instruction.toStringExtra() - ) -} diff --git a/csharp/ql/test/library-tests/cil/pdbs/MethodLocations.expected b/csharp/ql/test/library-tests/cil/pdbs/MethodLocations.expected deleted file mode 100644 index 4a9747bb722f..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/MethodLocations.expected +++ /dev/null @@ -1,4 +0,0 @@ -| System.Int32 EmbeddedPdb.Class1.Method() | C:/dev/projects/Sandbox/EmbeddedPdb/Class1.cs:6:3:6:4 | true | -| System.Int32 EmbeddedPdb.Class1.Method() | EmbeddedPdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | false | -| System.Int32 PortablePdb.Class1.Factorial(System.Int32) | C:/dev/projects/Sandbox/PortablePdb/Class1.cs:6:3:6:4 | true | -| System.Int32 PortablePdb.Class1.Factorial(System.Int32) | PortablePdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | false | diff --git a/csharp/ql/test/library-tests/cil/pdbs/MethodLocations.ql b/csharp/ql/test/library-tests/cil/pdbs/MethodLocations.ql deleted file mode 100644 index a301741f0cfa..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/MethodLocations.ql +++ /dev/null @@ -1,19 +0,0 @@ -import cil - -// Used only because native PDBs are only supported on Windows. -// They are included as tests but disabled here. -deprecated predicate filterMethod(CIL::Method m) { - m.getDeclaringType().getNamespace().getName() = "EmbeddedPdb" or - m.getDeclaringType().getNamespace().getName() = "PortablePdb" -} - -deprecated query predicate methodLocations(string m, string loc, boolean primaryLocation) { - exists(CIL::Method method, CIL::Location location | - location = method.getALocation() and - exists(CIL::Location l | l = method.getALocation() | l.getFile().isPdbSourceFile()) and - (if location = method.getLocation() then primaryLocation = true else primaryLocation = false) and - filterMethod(method) and - m = method.toStringWithTypes() and - loc = location.toString() - ) -} diff --git a/csharp/ql/test/library-tests/cil/pdbs/PdbOnly.dll b/csharp/ql/test/library-tests/cil/pdbs/PdbOnly.dll deleted file mode 100644 index 49fd9b0be231b6e5f888395e5487a04696b59896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHJTWl0n82+a%ZK<VDid+O?pdgphaksk`P}FUAOR3Us?UsVLk<RR%ZU<&()|n}E z2_cXuhBxDz4<<&QNQ{9<A~9YPBZ&#&)kngU@x|z~2J82q+1YMe#Kaek`tP29&VRq0 zGw00kiFc@;h#D~F=7?_L$&irv(dZ(?ZCgHTqnpd`ZoQ=(xx00I+Vs?t>l9qQsOEIr zc6`+ksykz=rmd#Z8MWx-g|=cv%l3-v(E*|(N<IDXde4b4+I`xlKBh#7n!#xdxaW4_ zsbVBBh*rsYU6403Dr!U*L4eOtPm^!4D*xx76_QziUGSUcNrGsa8?hKBiCV$?c?Z#^ z#j;1yYLI@Y(hT}=NZ_gYV%Ep=ViS;x!L?TM#!P}rG^x3sn*$|tOJKqa)q+t231qLi z!g8R<xzZ#C`)b3efdo;14JoHt?kj+EtD|LPsYGusBT|_87oa1e5SIk|c3RicMU8v5 z)$LlzIq&JuywtB$Jae9B;#x$DMPktd90;+2KZjxG1*{A5KZwzp@m<p{c&w2}?OcB6 z(F{#v!pqt@cyuU*=Pc+}w(YkZ12hB7mBBT2w48}wlo+iI>S8;{<UnS!O<Zp{h(1tw z&b#VYdZ0AYw8Hplx}&V5Ct=!1$LJGq?n(TW#A$^&8zqiQY)gKU?t#Bm;twU~3S9<g zZ{0^S2roRx=HDueSY4l-kE+bSL{HF8&^bw6UVj^w3M#sd4BLSlX#;Qz?FL>&QHc*o z+$Zsn#IH#Fs>C|*<7CSD8xof#z69Jz8a+l`z#S9^-bfkXPRasz!A7H)#Lr2bl>C>; z0Y4)-uSuMvx4}70H-J6*5*0LD47y8Ih@p$TmLY6LHC0Gjy5~jd;INaQvBV2h^m2}C znFb9Df7;2@;Eb8?^RY3E8DCIJ7&C=}ZdhWTmvo8~re`kT^?9Bs8diDS^lMeCY*){V zqVAra_cE@#1>qmUVJ6NxwSv&*kZFkt;d-WH&s&AUq+?H+g&9}(A1Y1>FXx)2g+k<A zGA(H_CM<nc&b+0*M_sfg=Pwl`ol@B~3)2r36-&BZp0^pBv3;{BI40s4re*py(oEU& zMNz9LX_YeZF4Ab;NZVFf%Uc!&T9t=3CZ;Tr<B~|r`Hma%Q>I?99nUv&UdRgl4%xnN zol-`)XUv>fA`TiN+^RfSZKQ$C0rj+T3IW5Ef*oWJ9{=XT+?~Y7-+#B|-5b5vsX<kg z=6aQsWtg<LGug(duD(fWZvOOKc49;P{uL-RH!JcWCfdxe<9OZLW3FBraqNNFoRCX3 zKJ7YZJq3DA^6kZ$(^TmPjxfnur_k!^GN@l)Q`MeGbRW@fg|_dT+Gj-a@pyMs*Y)mr zPw)Qj{qbjF-J)kokL5%zX7oanoknps;zu;B&?aqUV7$5w_g0qTd7PiUS`=xvt*HuA zrdP7`@(8x<8n#la5>;w*hr+uSuOMwg%B@df;20Xqq%!ZF@A&rpuAAwrSLe(h(+@hh zqU5vLyf~A^z0SS%vKigZ8_sODQg_xdPG#k?gdDAuH#pG02u3USB$srG=PJ*ZLU^AB zl9NftO<C5kZrZ^iCWL%zSUR@@KIE6lQZIiOhi@RF_4q7Vm;t{GMA(c=_^ij@4#yMN zLp9$|t@UwmCvY#E1RkI<%!cr#H3E7F_)zfGMPD@h^jq!C8{QKy!kU5a2;Qf)kOHB= zt4=QbnD}lG@M+T&ZX$;5(rO%19b6A`oqXsypaQtwV8N+^oP21R;1?d^>9Ev^pzh!o zCxd%{`;7aMgufzw0@gmF1hB0}R+90{s8*MH6&2c#Ge)V#OTmLjIhjXkL7t<ON5nMz zTU3T|WP#lT>|9vR*A>Nm8>tRLoL0o)&iGQ-Mjlp8HVgf0h-Tr(>$w_sM_^Ns7F=lw z8E~fxG!1V!6PEB)x`qv{QV(*75>7GN1246Hf)&ZbZxMc7d?AEgBTC3z)0G&!BAjcu zx=eAWiT)_(pf{ticTmR+`svqHy4a5Jb;E10P=9epm-drw`jE9JYcP;u85RGT9n${i Sf{OPR*`4PF`yc*u9rzt=GAxV$ diff --git a/csharp/ql/test/library-tests/cil/pdbs/PdbOnly.pdb b/csharp/ql/test/library-tests/cil/pdbs/PdbOnly.pdb deleted file mode 100644 index 92f60f94a9d210cbedbb2118c6028731b0c3ea31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 zcmeHMOGuPa6uvV~>Nvh8V=~<gflzAmP*aIW$OniGCKHu5i1Wlro00javS=|7<gQ$_ zaUodlY8ASw1cML@+bC2}iztwcN~|C^Ii2r+$Rsi-M$O|MJ@@?g-ZS^{o&Vl@&i!qE zcPJ<XePLsxxv`?cXtTE%>r56)UQS7qoe`<Uf3}w%!^jiukpxdu0D<W!r*uZ3p1n)w z>8JhNb<eG;dhBC`GLy(>(Wr)GG@3yvr&LB@Gy4~C`=_$W|CrltlU4PxyQ)h?r6bph zW=AU~+sDVF{x9vniWEiEfn(`yNA<>{*lPZqBnWJ_{&6VA?*GVRIvZt@Opy;W4g%c% zallD~s#RA<!%WtKe%Q{Y+sD;+o;J6QEG^FKha054ZuCZ%-nXEiDrampyLIZbp*Y%o zuh2I1GuZ0BUelx81vI?Uwanf9Uj0TtH2dJg;>BBQ+3+YiB?$sq@;DWlB*W&z+#v#M z%WKPU<W8fV#v=}o_mX2E6g=;BhXse-8SuD*gN~CPS9_rUiledLDF{}RTVTw+K~<1d z2j~Y-b+4<!lc*rBL=QyhjmMQD6bX=&zPG3%G>)ak&bb%i1=V()dg#*?v1nE0x3Kg9 zVzfOr_T-#Hu2<dyFXcHU1_D@}CRVP;Xq5Z?*fW4^nu$8mwl;6LH|Sx<m`3xg;nU1S z=gZc|Wm@&4`;$G;v9TsrMN&gA1lolIfOi9=$z<wWk_Ku>O-+8I=cA|~QqiB%Cw2yl zSSofLLBCWN*+nv&WCpdYVR^KJXxI;_Od6Z~OoA07;j|?L5Yv@t%`31~E*WbdNnoz< zmKxcC68cF{iX`Z`{>!kib~&XU0tQwl?)})WRZQOC>Dj;z#*|xXEg);^%|G2|6fa0u z&W3cyD3#|A8(-F1MZaIia&P9cc~2fq_$;xJ7{0vteUK!`Knx#&v9HsjphUVIj=djN zY9MpipqxELa^ra~hn6NOv}Co%>uQ?o4_nxwho%)pSMd$yW<;STFEUS5P_5rfLoZu) zI596MLc+gPdfrBe%aqty?gq_CghnOOiXBMLN^Mffc;A1{&`iuH{DHpKfG^0*0p|s; zz|2C(ZSM6tJ>HP3Kj`k03Vi;4uVCKZr2ygzKwByUwx1-q_zdR`OqoM0#vUZ${)6~u zCkcnYmgZASM&b!#tn)Uqh_c?VQa(bA_#N^5YvM{;U)U26qajw?O$;N&8cj!e7*b0N kzY+Th`oURKK+Gv|5Lo}nn>a(_BjE^e1ULd5fq#I&Z^Z05+W-In diff --git a/csharp/ql/test/library-tests/cil/pdbs/Pdbs.cs b/csharp/ql/test/library-tests/cil/pdbs/Pdbs.cs deleted file mode 100644 index 8b137891791f..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/Pdbs.cs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/csharp/ql/test/library-tests/cil/pdbs/PortablePdb.dll b/csharp/ql/test/library-tests/cil/pdbs/PortablePdb.dll deleted file mode 100644 index a6da57ff582eae63ca0fca14a861ef9dd2d05088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHKU2GIp6h5<Ux7!v<%U?lJ2U?N8j=SAbS`pcHw}m2Y*X~jfH`3YNVLLFpv&_sw z*AN2_8Vp2z;N73Z5S}y!V=)>NgYratGx%aid?o}RH37eKXaD*mCi-Bap6xyN-t&LX zy>svF*wJ^Xj)>~f9zG<RL(dQr_|fPb*sV`}(Ms2vZf%^C4&K@rpV4hOZ<!fO&B`e? zmoptXsmWF$C+j&mG7*!rW?EC0FK_NDnT`$<9hB<m+gE#zmc8AfO>&FmC-Q;fb*Y~| zgI-1pp%Jx-vB!;@2_-S2bC`h6P)E~muqgjk`_hz2fN9vB;6aG!0vBQ-OcN~wZOdk& z4GVdXn#*qZWf33d`^yvbilfas=;s=NWHipT6gNf!WQ3<!ww1z6#1_JU7pfVp211Bl zu{6VkAjeA6Xl$z$tp-9wLp4(|yv%h4aBLoGpbIk5`wc`A6aNCN@_R%&&~K-X=8l%_ zK5ygE=EjaAEsb>#JZm3F%Y5B;z00>#)3!~XEh{*gZSXS`J1``bymAhwdlkPD^ale2 z97F>dz&BvD^K~M)p#5l_F~`z#8Ji_$Q5P;v=b;###ekQ*bKjxS2>MHyuV&pL!%Sk% z0Cj2K8V@z`<X0(3Yu%h#4?NMJLI_Zlk;mmm^s&TavFoHZkC(Cn_tH<&3K5-`67-$q zrJn`9A#hw`iY)Mez_y_8r~9C97Wj&wyiFHD+3WdQIN^=KzWLXN)=q<B9F>`Vo<5Sc zVSZN3-duMZnjF7GKS)h<8*#P+ducszGi?QKqkzBz0uKs2D)37Jzbvo{yoPi!J|%Eb z;Pb#<QmBQV1ztt{z>m{m;7)8ig|^cv;Gn>}1r7`Pi*yF`n4r8OaEjgm<s@APMkVMm zsz2w}7~z+o9X+pV88*@r<zd)RZ972EkD2L$p}jy+({j|Lp+(b4%GxQ@GV~<vE9mJ# z2fHL$a5Rc&$wDT>LRDJW%ueaHK94qN+gdhh6yv&6D_S92YFf*x*2$`sxN2oIX9TC7 zcE+q_lyydQLz~hpTQ_r6tuixg=8o%`f~7i3vLl+Evh@6XCgRTPhR~SQ40TqF?8UaD z7V4977Bj+TzG&&0nI&1-yqYUkbtVfrN6%{P6MmAqp*uC)SkZR0tWpwEN@?Q5q!Bgc zn3k>@wX36~4TD^rQm0I6#|<sT36jDZWqL$cGda_C^pssDmA#DS9L+NGG0i%yr?f?E zw>+9v;k#>(ps-&cK9M{Dho!yr<+<}WzrT5Z;xqldyB}ORa)9b(N%GanBsE~r-p<oj zMjmftz0c?I`96OwF}1$;&RZb*d_GAW-b7FGCmQ#xJ#4A@aWgkOo6^Lp#b+$@j4eT~ zQGC&D61CKBS85RC4vAJ)Rz?2isx0^T1G|W}O4Ow#)nI?Xzq7k9&^OTCo7Pg@{lS4i zcVOp0urC$d*`w~_!yg_3I5+Vl8k1;)GCmxy?8+UbmDz){wND8k)YjD%W<<C1hFToQ z4qnY#a)l!cX)cwxqouJZpD!B_as+o`1jo~4EE2nS`N@lOq1^|r@A)ymtn0U5IHT}$ ziL`b)f%gCx+fKyPTsmpaCTem|n8_0fu{O0-C6ABz-vJj&_bX@fA&+GqEr#+v>~fBU zO)Fv;W2&BW4>L^@pAB;#J`Ee<MYGt--=**kL$uC)Mb#MNjg5PE2|5e$+u=xvXh$8- zT-Z_9i@_95{A0kwG>OqDURvXrj{=XluP*wk{@w%k)MpP2Zok)^h|{0<TP^UNF2Slw z7VPMF8)&eZqvK=>u`Zz%2Ui8v245uyawcXjd{Tc2MkU1LKuQN4ht(oWGeX9Xyxm_f zCAkK;skk0t*vsOlLEC{B7dF-K^1^=+*{VXWBtjv)(xi&N2rSr?5^?0`#TkVM3ltT8 zImalaG2(Ub)#y)wW5Gf-zW{Djf29%p@w<U5<OtauEE+XYE$v5vHv>Oj-<8lm2;Gd( z<jnI_6cJ}=23GN{FQUnG6&qEi9>fwLoMU+BaowtR+!ad0ZWeYeyamctWS<=KM9BxQ z5XW3zBc5^P2{l=&M%CE+MXjT-V<Mjd>g?2H{zv*my`skR^%hooVV(Ph&LFa|MNYhG aMO5I=^pM6s2eSJ=!!=%@|KUGZf!_h-2}L9T diff --git a/csharp/ql/test/library-tests/cil/pdbs/PortablePdb.pdb b/csharp/ql/test/library-tests/cil/pdbs/PortablePdb.pdb deleted file mode 100644 index 4dc80964ea8aadb5af7692de3f90e41643b97ff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmZ<?_HtrmU}OLR9v}{IaZ)HV)H47JFt9Py02v-YtQ?S%1QI&}#0@~KT*tuR0@Mc5 zqa0jPl$n=a3}i9{0L559VxhqdAwV|BAZ7PZPZuEF0_1mq_)a<bAj95Ik?Y>!VC}Wj z_GST(%I{A{<BXz!!VK=BObnbr8mOE>0En5O7{uoXVm=@Sv0)g<1gQaWfnYs^VrT&i z!1RJ>W*`PB(g%{}Kpl(>K47(sKp9vVD1g;4gJnVL#lb3IdLdSTNRW97Kz*R_VaQ}C zD9TSMO)dd(7#QA&N&JsnCE(lsJ>N6A*(BjdQlR}Y_RE43f*B6@FJ@Y}A}GG}=)`@l zTXrZ+EqofZmx0OIia8~<j00#&R%&udF?(=gUP@Aa1$RJxQAuJ_PAV|)Ih}J7i;E5Q zl8f167+E+3B~?Z4y*L)`KTY)1JC6$-v&D~^s5Y#%*9SU|k&T&=L4b(~7>Z0>K!-9h m@G@1hFfiBau>fPVkOSl!ewIWQ21cfO4n{6UWhN;xke>jMX;n%9 diff --git a/csharp/ql/test/library-tests/cil/pdbs/Stubs.expected b/csharp/ql/test/library-tests/cil/pdbs/Stubs.expected deleted file mode 100644 index e63ae56c0a60..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/Stubs.expected +++ /dev/null @@ -1,2 +0,0 @@ -| EmbeddedPdb.dll:0:0:0:0 | EmbeddedPdb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | -| PdbOnly.dll:0:0:0:0 | PdbOnly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | diff --git a/csharp/ql/test/library-tests/cil/pdbs/Stubs.ql b/csharp/ql/test/library-tests/cil/pdbs/Stubs.ql deleted file mode 100644 index cfe897f10694..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/Stubs.ql +++ /dev/null @@ -1,3 +0,0 @@ -import cil::CIL - -deprecated query predicate stubs(Assembly asm) { assemblyIsStub(asm) } diff --git a/csharp/ql/test/library-tests/cil/pdbs/options b/csharp/ql/test/library-tests/cil/pdbs/options deleted file mode 100644 index 0771fbd3771d..000000000000 --- a/csharp/ql/test/library-tests/cil/pdbs/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil --pdb diff --git a/csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.expected b/csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.expected deleted file mode 100644 index bb7c7754e022..000000000000 --- a/csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Methods.dll:0:0:0:0 | F | Methods.dll:0:0:0:0 | F | Methods.dll:0:0:0:0 | !0 | -| Methods.dll:0:0:0:0 | F | Methods.dll:0:0:0:0 | F | Methods.dll:0:0:0:0 | !0 | diff --git a/csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.ql b/csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.ql deleted file mode 100644 index d472708bb5e9..000000000000 --- a/csharp/ql/test/library-tests/cil/regressions/ConstructedMethods.ql +++ /dev/null @@ -1,9 +0,0 @@ -import cil::CIL - -deprecated query predicate constructedMethods( - UnboundGenericMethod f, ConstructedMethod fc, Type typeArgument -) { - fc.getUnboundMethod() = f and - f.hasFullyQualifiedName("Methods", "Class1", "F") and - typeArgument = fc.getTypeArgument(0) -} diff --git a/csharp/ql/test/library-tests/cil/regressions/Methods.cs b/csharp/ql/test/library-tests/cil/regressions/Methods.cs deleted file mode 100644 index 7d8ec90f84de..000000000000 --- a/csharp/ql/test/library-tests/cil/regressions/Methods.cs +++ /dev/null @@ -1,17 +0,0 @@ -/* - * A regression test for the CIL extractor - compiled into Methods.dll - * This tests the correct extraction of F<T>, and we should end up with - * 2 constructed methods of F<T>. - */ - -namespace Methods -{ - public class Class1 - { - public T F<T>(T t) { return new T[] { t }[0]; } - - public T G<T>(T t) { return F(t); } - - public T H<T>(T t) { return F(t); } - } -} diff --git a/csharp/ql/test/library-tests/cil/regressions/Methods.dll b/csharp/ql/test/library-tests/cil/regressions/Methods.dll deleted file mode 100644 index 1178f3e09c4a4c0c08baf63ea2b3d2c8487b2a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHJU2GIp6h3!%yZxcmHVXwL;6SNXDw8cmA_BT?w}m48p}U}H5oUL%+rinH&CIm4 zn3z5&i7^@tzLD^vF+89#fd`^7QR9<BGzOzSnD|Iy3>e=Gp?>GiOn2J?55D5rz2Cj( z=bn4cnLGE+(2MU<l!#(z^YcVk&@-hZ-XG?mZhGXiCc0dIZPOKT@Y<&Aq~R)M$1XZr zNy%%LWqV3aSDYzJF)SrLl2J-_L04C<Y}gXG9_=SOD57-f{L9~jtNl)!l@%gMR0m1i zm;U%DdIc?oM$|0F5kGDgaQu?yfRHmqDfI@M^1sptEQ>&M@H@hT6qe&cETt1fjgVbv zC(16>-H%uN@I#Y2@cTmsz3S;R9{OK6KLw3*4dTW~l0tMsbzCP8PR5qPfD>&%tD+R5 zR~_B7VaT!42{iWAgjPi<qTVW24li?EK^$9zYUqkWbPH<;7XAlHBxCe2=3#ydt$7>W z`u5i7hupV*z}V19@vTIOWQ10Rc9CcYRGoq9-nz|^juo6e=J#d}^ok%#&Ut!=npC@! z-Cesl=o&JCKfr0*Yeaici|ahjc#dHeUAAaOj$F#N!x>tI0dJAEeTN6r=(m8s%6zYB z=g>33h1j<`QdiH5{Uf@m)vpn=&`DpseGs2~JXlUf7xt{<G0|b+_i_4;&WSi}5RC0K zCmy2Dp^DQe?S>>KCV>};(U5pX;vW)sN&Hr5(iv|a_Rqg&w6mg1jz<-ipTVQ(1V0mS z32+g5Kj2n_i_*tFxAruzj5&h7hvy2`(`m%r0*uo-U;{l4Y^E-WyCn8V9F%xS;!%kj zFit9J(+y0}9^iU<3D`yjU?-gecGCsmZn^~Qqc4HaNqGji8ha`>7giAANji%Nx%MG# zMr0vHX^kA#1br>~2yO7yeWvERU9@M&E=-yFGc-W^@B(DX(mmJHtb*ngD6QwFibXAF z>OCH|O>WB5smFEoQqG*s8eX+Ht2ss88^D>TpR%1-mfH^)rhY_sT*J1OD+jF!+bL-t zl$v=@t3KPBFp5)-w5vGjvrA>el)^FH)Mn(!t?0vuM;)Y^_m(Tzfo9EC6k}7CXOwg) z_l%rj8eWw)GwXVKNeztDAY8muG^BfzcEME(rb)h4(5YkkgsJB_KT`9a?S%5Qp%pFL z^^Ck5&JI<fe?L9l$>`3sk=NbesbD=kI<O<Tlkglq^VrX~X4fR%>3Q#Or^(vXp-@Z_ zqAseCsKKD6h1sT9t=LGBjTCD@Uw8G@#Qe2wza6Sg3a}6ec@PtA<X0&hX?@<&%EPwR zKa<zXoI-Zeu}`@IcD3@&+bL+BI^3Vl1pDTRpd@>zx2s8bXj-+fFVcovHnrJdY!hn4 z{GehuF9g-d?S|tU@-CcY`1x|l1POY{V{eie8s$BI4DB}Vq}#P&_Ws+E0Q(r)QJm{X z{bOOlKwg6j9MM=No!R!2GPb?+*MU!N9@sm0=kj?@s_*IXf<8Ttdz`E5j%V;n<m{R8 zAmDL3cXC|DJ6`p|Al=YFEf;c>+26DM$(<DXR|EgZp?>S1Uv(#bZF&91M~SyC1osbz z^)-(b9xbQvp7J%v`)ns|nnRjlQOV8Qj;_m%$J+UJ_*k0ia)<v*?ot81J&4v4%`H~? zH!Zg0GCAAvx5Eo5qKj3B@x{mvNRLp4jsyE?45LAOX$^xP1P=ILUGzol<{f|M%GU{V z{Qg;tnD{QLaw}zNpnzA69QZMC*X!_U(FEC2zeUc<LaRaQLa&hrI~$x&pT-*DR3Ih~ zRtDt7yLh^RPy{6xemf|KF`?B#-UojrD$6xyk&y;Ym+ptqdo&4s0jm=|CGEpV)6lw< zm+O`n#kF*vzfL&s2<ADMS;?adcVu#*@j8u&i!0$tTMIFnRgo?BuOd1VKcWs)SkOVt zDasj~S(#>Kghk}R2dsjYlKw{mIaiJShw(AzSKwaj`1y=tK38T6HSnsUBU(I<>l{a1 wi|v<Ip;Cje&ONA+i(E>0S|+kkuu~RSt}=(~_ka@~EPumZ-}!*o;Q>wmU)i4aCIA2c diff --git a/csharp/ql/test/library-tests/cil/regressions/options b/csharp/ql/test/library-tests/cil/regressions/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/cil/regressions/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/cil/typeAnnotations/Program.cs b/csharp/ql/test/library-tests/cil/typeAnnotations/Program.cs deleted file mode 100644 index e867fdc0718e..000000000000 --- a/csharp/ql/test/library-tests/cil/typeAnnotations/Program.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -class Test -{ - static void Main(string[] args) - { - } -} diff --git a/csharp/ql/test/library-tests/cil/typeAnnotations/options b/csharp/ql/test/library-tests/cil/typeAnnotations/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/cil/typeAnnotations/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.expected b/csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.expected deleted file mode 100644 index c3216e25e99c..000000000000 --- a/csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.expected +++ /dev/null @@ -1,3942 +0,0 @@ -| <PrivateImplementationDetails>.InlineArrayElementRef | method | 32 | -| <PrivateImplementationDetails>.InlineArrayFirstElementRef | method | 32 | -| Local variable 0 of method System.Array.Clear | local | 32 | -| Local variable 0 of method System.Array.GetFlattenedIndex | local | 32 | -| Local variable 0 of method System.Buffer.Memmove | local | 32 | -| Local variable 0 of method System.Buffers.AnyByteSearchValues.IndexOfAnyScalar | local | 32 | -| Local variable 0 of method System.Buffers.AsciiByteSearchValues.IndexOfAnyScalar | local | 32 | -| Local variable 0 of method System.Buffers.AsciiCharSearchValues.IndexOfAnyScalar | local | 32 | -| Local variable 0 of method System.Buffers.Binary.BinaryPrimitives.ReverseEndianness | local | 32 | -| Local variable 0 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 0 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 0 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 0 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 0 of method System.Buffers.Latin1CharSearchValues.IndexOfAny | local | 32 | -| Local variable 0 of method System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.Contains | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.Enumerator.MoveNext | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.FindValue | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.KeyCollection.Enumerator.MoveNext | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.Remove | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.TryGetValue | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.ValueCollection.Enumerator.MoveNext | local | 32 | -| Local variable 0 of method System.Collections.Generic.Dictionary.get_Item | local | 32 | -| Local variable 0 of method System.Collections.Generic.GenericArraySortHelper.PickPivotAndPartition | local | 32 | -| Local variable 0 of method System.Collections.Generic.GenericArraySortHelper.SwapIfGreaterWithValues | local | 32 | -| Local variable 0 of method System.Collections.Generic.HashSet.Enumerator.MoveNext | local | 32 | -| Local variable 0 of method System.Convert.TryDecodeFromUtf16 | local | 32 | -| Local variable 0 of method System.Diagnostics.Tracing.ActivityTracker.NormalizeActivityName | local | 32 | -| Local variable 0 of method System.Diagnostics.Tracing.EventSource.AddEventDescriptor | local | 32 | -| Local variable 0 of method System.Diagnostics.Tracing.EventSource.WriteEventVarargs | local | 32 | -| Local variable 0 of method System.Diagnostics.Tracing.EventSource.WriteEventWithRelatedActivityIdCore | local | 32 | -| Local variable 0 of method System.Diagnostics.Tracing.EventSource.WriteToAllListeners | local | 32 | -| Local variable 0 of method System.Diagnostics.Tracing.EventWrittenEventArgs.get_OSThreadId | local | 32 | -| Local variable 0 of method System.Enum.CompareTo | local | 32 | -| Local variable 0 of method System.Enum.Equals | local | 32 | -| Local variable 0 of method System.Enum.GetHashCode | local | 32 | -| Local variable 0 of method System.Enum.GetValue | local | 32 | -| Local variable 0 of method System.Enum.HasFlag | local | 32 | -| Local variable 0 of method System.GC.ConfigCallback | local | 32 | -| Local variable 0 of method System.Globalization.Ordinal.IndexOfOrdinalIgnoreCase | local | 32 | -| Local variable 0 of method System.Guid.GetHashCode | local | 32 | -| Local variable 0 of method System.HashCode.AddBytes | local | 32 | -| Local variable 0 of method System.HexConverter.EncodeToUtf16_Vector128 | local | 32 | -| Local variable 0 of method System.Number.BigInteger.Add | local | 32 | -| Local variable 0 of method System.Number.BigInteger.Multiply | local | 32 | -| Local variable 0 of method System.Numerics.BitOperations.Crc32Fallback.Crc32C | local | 32 | -| Local variable 0 of method System.ReadOnlySpan.GetPinnableReference | local | 32 | -| Local variable 0 of method System.Runtime.CompilerServices.ConditionalWeakTable.Container.RemoveIndex | local | 32 | -| Local variable 0 of method System.Runtime.Intrinsics.Vector512.CopyTo | local | 32 | -| Local variable 0 of method System.Runtime.Intrinsics.Vector512.Create | local | 32 | -| Local variable 0 of method System.Runtime.Intrinsics.Vector512.TryCopyTo | local | 32 | -| Local variable 0 of method System.Span.GetPinnableReference | local | 32 | -| Local variable 0 of method System.Text.Ascii.IsValidCore | local | 32 | -| Local variable 0 of method System.Threading.CancellationTokenSource.Registrations.EnterLock | local | 32 | -| Local variable 0 of method System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction | local | 32 | -| Local variable 0 of method System.Threading.TimerQueue.LinkTimer | local | 32 | -| Local variable 1 of method Interop.Sys.GetControlCharacters | local | 32 | -| Local variable 1 of method System.Array.Fill | local | 32 | -| Local variable 1 of method System.Array.GetUpperBound | local | 32 | -| Local variable 1 of method System.Buffer.Memmove | local | 32 | -| Local variable 1 of method System.Buffers.AnyByteSearchValues.IndexOfAnyScalar | local | 32 | -| Local variable 1 of method System.Buffers.AsciiByteSearchValues.IndexOfAnyScalar | local | 32 | -| Local variable 1 of method System.Buffers.AsciiCharSearchValues.IndexOfAnyScalar | local | 32 | -| Local variable 1 of method System.Buffers.Binary.BinaryPrimitives.ReverseEndianness | local | 32 | -| Local variable 1 of method System.Buffers.Latin1CharSearchValues.IndexOfAny | local | 32 | -| Local variable 1 of method System.Buffers.ProbabilisticMap..ctor | local | 32 | -| Local variable 1 of method System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | local | 32 | -| Local variable 1 of method System.Buffers.Text.Base64.DecodeFromUtf8 | local | 32 | -| Local variable 1 of method System.Buffers.Text.Base64.DecodeFromUtf8InPlace | local | 32 | -| Local variable 1 of method System.Buffers.Text.Base64.EncodeToUtf8 | local | 32 | -| Local variable 1 of method System.Buffers.Text.Base64.EncodeToUtf8InPlace | local | 32 | -| Local variable 1 of method System.Byte.TryReadBigEndian | local | 32 | -| Local variable 1 of method System.Byte.TryReadLittleEndian | local | 32 | -| Local variable 1 of method System.Char.TryReadBigEndian | local | 32 | -| Local variable 1 of method System.Char.TryReadLittleEndian | local | 32 | -| Local variable 1 of method System.Collections.Generic.Dictionary.FindValue | local | 32 | -| Local variable 1 of method System.Collections.Generic.GenericArraySortHelper.PickPivotAndPartition | local | 32 | -| Local variable 1 of method System.Collections.Generic.RandomizedStringEqualityComparer..ctor | local | 32 | -| Local variable 1 of method System.ConsolePal.Read | local | 32 | -| Local variable 1 of method System.ConsolePal.Write | local | 32 | -| Local variable 1 of method System.Convert.FromBase64CharArray | local | 32 | -| Local variable 1 of method System.Convert.FromBase64String | local | 32 | -| Local variable 1 of method System.Convert.TryDecodeFromUtf16 | local | 32 | -| Local variable 1 of method System.DateTimeFormat.TryFormatDateOnlyO | local | 32 | -| Local variable 1 of method System.DateTimeFormat.TryFormatTimeOnlyO | local | 32 | -| Local variable 1 of method System.DateTimeFormat.TryFormatTimeOnlyR | local | 32 | -| Local variable 1 of method System.Diagnostics.Debugger.LogInternal | local | 32 | -| Local variable 1 of method System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.CreateActivityPathGuid | local | 32 | -| Local variable 1 of method System.Diagnostics.Tracing.EventSource.WriteEvent | local | 32 | -| Local variable 1 of method System.Diagnostics.Tracing.EventSource.WriteImpl | local | 32 | -| Local variable 1 of method System.Diagnostics.Tracing.EventSource.WriteMultiMerge | local | 32 | -| Local variable 1 of method System.Diagnostics.Tracing.FrameworkEventSource.WriteEvent | local | 32 | -| Local variable 1 of method System.Enum.CompareTo | local | 32 | -| Local variable 1 of method System.Enum.Equals | local | 32 | -| Local variable 1 of method System.Enum.HasFlag | local | 32 | -| Local variable 1 of method System.Enum.ToString | local | 32 | -| Local variable 1 of method System.Enum.TryFormat | local | 32 | -| Local variable 1 of method System.Globalization.CalendarData.<>c.<GetCalendarInfo>b__32_0 | local | 32 | -| Local variable 1 of method System.Globalization.CharUnicodeInfo.GetCategoryCasingTableOffsetNoBoundsChecks | local | 32 | -| Local variable 1 of method System.Globalization.CharUnicodeInfo.GetNumericGraphemeTableOffsetNoBoundsChecks | local | 32 | -| Local variable 1 of method System.Globalization.CharUnicodeInfo.GetNumericValueNoBoundsCheck | local | 32 | -| Local variable 1 of method System.Globalization.CompareInfo.IcuCompareString | local | 32 | -| Local variable 1 of method System.Globalization.CompareInfo.IcuEndsWith | local | 32 | -| Local variable 1 of method System.Globalization.CompareInfo.IcuGetSortKeyLength | local | 32 | -| Local variable 1 of method System.Globalization.CompareInfo.IcuIndexOfCore | local | 32 | -| Local variable 1 of method System.Globalization.CompareInfo.IcuStartsWith | local | 32 | -| Local variable 1 of method System.Globalization.CompareInfo.IndexOfOrdinalHelper | local | 32 | -| Local variable 1 of method System.Globalization.CompareInfo.IndexOfOrdinalIgnoreCaseHelper | local | 32 | -| Local variable 1 of method System.Globalization.IdnMapping.GetAscii | local | 32 | -| Local variable 1 of method System.Globalization.IdnMapping.GetUnicode | local | 32 | -| Local variable 1 of method System.Globalization.InvariantModeCasing.CompareStringIgnoreCase | local | 32 | -| Local variable 1 of method System.Globalization.InvariantModeCasing.IndexOfIgnoreCase | local | 32 | -| Local variable 1 of method System.Globalization.InvariantModeCasing.LastIndexOfIgnoreCase | local | 32 | -| Local variable 1 of method System.Globalization.OrdinalCasing.CompareStringIgnoreCase | local | 32 | -| Local variable 1 of method System.Globalization.OrdinalCasing.IndexOf | local | 32 | -| Local variable 1 of method System.Globalization.OrdinalCasing.LastIndexOf | local | 32 | -| Local variable 1 of method System.Guid.TryFormatX | local | 32 | -| Local variable 1 of method System.HashCode.AddBytes | local | 32 | -| Local variable 1 of method System.HexConverter.EncodeToUtf16_Vector128 | local | 32 | -| Local variable 1 of method System.IO.RandomAccess.ReadAtOffset | local | 32 | -| Local variable 1 of method System.IO.RandomAccess.WriteAtOffset | local | 32 | -| Local variable 1 of method System.MemoryExtensions.IndexOfAnyExcept | local | 32 | -| Local variable 1 of method System.MemoryExtensions.LastIndexOfAnyExcept | local | 32 | -| Local variable 1 of method System.Number.BigInteger.Add | local | 32 | -| Local variable 1 of method System.Number.BigInteger.Pow10 | local | 32 | -| Local variable 1 of method System.Number.MatchChars | local | 32 | -| Local variable 1 of method System.Number.TryStringToNumber | local | 32 | -| Local variable 1 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 1 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 1 of method System.Reflection.Emit.RuntimeModuleBuilder.SetFieldRVAContent | local | 32 | -| Local variable 1 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineCustomAttribute | local | 32 | -| Local variable 1 of method System.Reflection.Emit.RuntimeTypeBuilder.SetPInvokeData | local | 32 | -| Local variable 1 of method System.Reflection.Emit.ScopeTree.AddUsingNamespaceToCurrentScope | local | 32 | -| Local variable 1 of method System.Reflection.MetadataEnumResult.get_Item | local | 32 | -| Local variable 1 of method System.Reflection.RuntimeAssembly.GetModule | local | 32 | -| Local variable 1 of method System.Reflection.RuntimeAssembly.GetVersion | local | 32 | -| Local variable 1 of method System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal | local | 32 | -| Local variable 1 of method System.Runtime.InteropServices.Marshal.QueryInterface | local | 32 | -| Local variable 1 of method System.Runtime.Loader.AssemblyLoadContext.InternalSetProfileRoot | local | 32 | -| Local variable 1 of method System.Runtime.Loader.AssemblyLoadContext.InternalStartProfile | local | 32 | -| Local variable 1 of method System.Runtime.Loader.AssemblyLoadContext.LoadFromPath | local | 32 | -| Local variable 1 of method System.SpanHelpers.Count | local | 32 | -| Local variable 1 of method System.SpanHelpers.CountValueType | local | 32 | -| Local variable 1 of method System.SpanHelpers.IndexOf | local | 32 | -| Local variable 1 of method System.SpanHelpers.IndexOfAnyExcept | local | 32 | -| Local variable 1 of method System.SpanHelpers.IndexOfAnyExceptInRange | local | 32 | -| Local variable 1 of method System.SpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 1 of method System.SpanHelpers.LastIndexOfAnyExcept | local | 32 | -| Local variable 1 of method System.SpanHelpers.LastIndexOfAnyExceptInRange | local | 32 | -| Local variable 1 of method System.SpanHelpers.LastIndexOfAnyInRange | local | 32 | -| Local variable 1 of method System.String.GetBytesFromEncoding | local | 32 | -| Local variable 1 of method System.String.GetNonRandomizedHashCode | local | 32 | -| Local variable 1 of method System.String.Trim | local | 32 | -| Local variable 1 of method System.String.TrimEnd | local | 32 | -| Local variable 1 of method System.String.TrimStart | local | 32 | -| Local variable 1 of method System.Text.ASCIIEncoding.GetByteCount | local | 32 | -| Local variable 1 of method System.Text.ASCIIEncoding.GetBytes | local | 32 | -| Local variable 1 of method System.Text.ASCIIEncoding.GetCharCount | local | 32 | -| Local variable 1 of method System.Text.ASCIIEncoding.GetChars | local | 32 | -| Local variable 1 of method System.Text.ASCIIEncoding.TryGetBytes | local | 32 | -| Local variable 1 of method System.Text.ASCIIEncoding.TryGetChars | local | 32 | -| Local variable 1 of method System.Text.Ascii.ChangeCase | local | 32 | -| Local variable 1 of method System.Text.Decoder.Convert | local | 32 | -| Local variable 1 of method System.Text.Decoder.GetCharCount | local | 32 | -| Local variable 1 of method System.Text.Decoder.GetChars | local | 32 | -| Local variable 1 of method System.Text.DecoderNLS.Convert | local | 32 | -| Local variable 1 of method System.Text.DecoderNLS.GetCharCount | local | 32 | -| Local variable 1 of method System.Text.Encoder.Convert | local | 32 | -| Local variable 1 of method System.Text.Encoder.GetByteCount | local | 32 | -| Local variable 1 of method System.Text.Encoder.GetBytes | local | 32 | -| Local variable 1 of method System.Text.EncoderNLS.Convert | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetByteCount | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetByteCountWithFallback | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetBytes | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetBytesWithFallback | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetCharCount | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetCharCountWithFallback | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetChars | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetCharsWithFallback | local | 32 | -| Local variable 1 of method System.Text.Encoding.GetString | local | 32 | -| Local variable 1 of method System.Text.Latin1Encoding.GetByteCount | local | 32 | -| Local variable 1 of method System.Text.Latin1Encoding.GetBytes | local | 32 | -| Local variable 1 of method System.Text.Latin1Encoding.GetChars | local | 32 | -| Local variable 1 of method System.Text.Latin1Encoding.TryGetBytes | local | 32 | -| Local variable 1 of method System.Text.Latin1Encoding.TryGetChars | local | 32 | -| Local variable 1 of method System.Text.UTF7Encoding.GetByteCount | local | 32 | -| Local variable 1 of method System.Text.UTF8Encoding.GetByteCount | local | 32 | -| Local variable 1 of method System.Text.UTF8Encoding.GetBytes | local | 32 | -| Local variable 1 of method System.Text.UTF8Encoding.GetCharCount | local | 32 | -| Local variable 1 of method System.Text.UTF8Encoding.GetChars | local | 32 | -| Local variable 1 of method System.Text.UTF8Encoding.TryGetBytes | local | 32 | -| Local variable 1 of method System.Text.UTF8Encoding.TryGetChars | local | 32 | -| Local variable 1 of method System.Text.UTF32Encoding.GetByteCount | local | 32 | -| Local variable 1 of method System.Text.Unicode.Utf8.FromUtf16 | local | 32 | -| Local variable 1 of method System.Text.Unicode.Utf8.ToUtf16 | local | 32 | -| Local variable 1 of method System.Text.Unicode.Utf8.ToUtf16PreservingReplacement | local | 32 | -| Local variable 1 of method System.Text.UnicodeEncoding.GetByteCount | local | 32 | -| Local variable 1 of method System.Threading.PortableThreadPool.HillClimbing.LogTransition | local | 32 | -| Local variable 1 of method System.Threading.Tasks.TplEventSource.TraceOperationBegin | local | 32 | -| Local variable 1 of method System.Threading.Thread.InformThreadNameChange | local | 32 | -| Local variable 1 of method System.Threading.WaitHandle.WaitMultipleIgnoringSyncContext | local | 32 | -| Local variable 1 of method System.TimeZoneInfo.<>c.<GetDisplayName>b__203_0 | local | 32 | -| Local variable 1 of method System.TimeZoneInfo.<>c.<GetDisplayName>b__203_1 | local | 32 | -| Local variable 1 of method System.UInt16.TryReadBigEndian | local | 32 | -| Local variable 1 of method System.UInt16.TryReadLittleEndian | local | 32 | -| Local variable 1 of method System.UInt32.TryReadBigEndian | local | 32 | -| Local variable 1 of method System.UInt32.TryReadLittleEndian | local | 32 | -| Local variable 1 of method System.UInt64.TryReadBigEndian | local | 32 | -| Local variable 1 of method System.UInt64.TryReadLittleEndian | local | 32 | -| Local variable 1 of method System.UInt128.TryReadBigEndian | local | 32 | -| Local variable 1 of method System.UInt128.TryReadLittleEndian | local | 32 | -| Local variable 1 of method System.UIntPtr.TryReadBigEndian | local | 32 | -| Local variable 1 of method System.UIntPtr.TryReadLittleEndian | local | 32 | -| Local variable 2 of method Interop.Globalization.GetCalendarInfo | local | 32 | -| Local variable 2 of method Interop.Globalization.GetCalendars | local | 32 | -| Local variable 2 of method Interop.Globalization.GetLocales | local | 32 | -| Local variable 2 of method Interop.Globalization.GetTimeZoneDisplayName | local | 32 | -| Local variable 2 of method Interop.Globalization.IanaIdToWindowsId | local | 32 | -| Local variable 2 of method Interop.Globalization.WindowsIdToIanaId | local | 32 | -| Local variable 2 of method Interop.Sys.GetCpuUtilization | local | 32 | -| Local variable 2 of method Interop.Sys.GetPwUidR | local | 32 | -| Local variable 2 of method System.Array.Clear | local | 32 | -| Local variable 2 of method System.Array.Copy | local | 32 | -| Local variable 2 of method System.Array.InternalGetValue | local | 32 | -| Local variable 2 of method System.Char.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.Char.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.Collections.Generic.GenericArraySortHelper.PickPivotAndPartition | local | 32 | -| Local variable 2 of method System.Collections.Generic.HashSet.CopyTo | local | 32 | -| Local variable 2 of method System.Collections.Generic.HashSet.IntersectWithHashSetWithSameComparer | local | 32 | -| Local variable 2 of method System.ComAwareWeakReference.ObjectToComWeakRef | local | 32 | -| Local variable 2 of method System.Convert.ToBase64CharsLargeNoLineBreaks | local | 32 | -| Local variable 2 of method System.DateTimeFormat.FormatCustomizedRoundripTimeZone | local | 32 | -| Local variable 2 of method System.Decimal.TryWriteSignificandBigEndian | local | 32 | -| Local variable 2 of method System.Decimal.TryWriteSignificandLittleEndian | local | 32 | -| Local variable 2 of method System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForNamedTypeV2 | local | 32 | -| Local variable 2 of method System.Diagnostics.Tracing.EventPipeInternal.CreateProvider | local | 32 | -| Local variable 2 of method System.Diagnostics.Tracing.EventPipeInternal.EventActivityIdControl | local | 32 | -| Local variable 2 of method System.Diagnostics.Tracing.EventPipeInternal.GetProvider | local | 32 | -| Local variable 2 of method System.Diagnostics.Tracing.EventSource.Write | local | 32 | -| Local variable 2 of method System.Enum.ToString | local | 32 | -| Local variable 2 of method System.Globalization.CompareInfo.EndsWithOrdinalHelper | local | 32 | -| Local variable 2 of method System.Globalization.CompareInfo.EndsWithOrdinalIgnoreCaseHelper | local | 32 | -| Local variable 2 of method System.Globalization.CompareInfo.IcuCreateSortKey | local | 32 | -| Local variable 2 of method System.Globalization.CompareInfo.IcuGetSortKey | local | 32 | -| Local variable 2 of method System.Globalization.CompareInfo.StartsWithOrdinalHelper | local | 32 | -| Local variable 2 of method System.Globalization.CompareInfo.StartsWithOrdinalIgnoreCaseHelper | local | 32 | -| Local variable 2 of method System.Globalization.InvariantModeCasing.CompareStringIgnoreCase | local | 32 | -| Local variable 2 of method System.Globalization.Normalization.IcuIsNormalized | local | 32 | -| Local variable 2 of method System.Globalization.Ordinal.CompareStringIgnoreCase | local | 32 | -| Local variable 2 of method System.Globalization.Ordinal.EqualsStringIgnoreCaseUtf8 | local | 32 | -| Local variable 2 of method System.Globalization.OrdinalCasing.CompareStringIgnoreCase | local | 32 | -| Local variable 2 of method System.Globalization.TextInfo.ChangeCaseCommon | local | 32 | -| Local variable 2 of method System.Globalization.TextInfo.ToLowerAsciiInvariant | local | 32 | -| Local variable 2 of method System.HashCode.AddBytes | local | 32 | -| Local variable 2 of method System.HexConverter.TryDecodeFromUtf16_Vector128 | local | 32 | -| Local variable 2 of method System.IO.Enumeration.FileSystemEnumerator.FindNextEntry | local | 32 | -| Local variable 2 of method System.IO.Path.TryJoin | local | 32 | -| Local variable 2 of method System.IO.PathInternal.EqualStartingCharacterCount | local | 32 | -| Local variable 2 of method System.IO.PinnedBufferMemoryStream..ctor | local | 32 | -| Local variable 2 of method System.Int16.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.Int16.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.Int32.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.Int32.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.Int64.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.Int64.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.Int128.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.Int128.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.Int128.TryWriteBigEndian | local | 32 | -| Local variable 2 of method System.Int128.TryWriteLittleEndian | local | 32 | -| Local variable 2 of method System.IntPtr.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.IntPtr.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.MemoryExtensions.IndexOfAnyExcept | local | 32 | -| Local variable 2 of method System.MemoryExtensions.LastIndexOfAnyExcept | local | 32 | -| Local variable 2 of method System.ModuleHandle.ResolveMethodHandleInternal | local | 32 | -| Local variable 2 of method System.Number.BigInteger.Multiply | local | 32 | -| Local variable 2 of method System.Number.TryInt32ToHexStr | local | 32 | -| Local variable 2 of method System.Number.TryInt64ToHexStr | local | 32 | -| Local variable 2 of method System.Number.TryNegativeInt32ToDecStr | local | 32 | -| Local variable 2 of method System.Number.TryNegativeInt64ToDecStr | local | 32 | -| Local variable 2 of method System.Number.TryUInt32ToBinaryStr | local | 32 | -| Local variable 2 of method System.Number.TryUInt32ToDecStr | local | 32 | -| Local variable 2 of method System.Number.TryUInt64ToBinaryStr | local | 32 | -| Local variable 2 of method System.Number.TryUInt64ToDecStr | local | 32 | -| Local variable 2 of method System.Object.MemberwiseClone | local | 32 | -| Local variable 2 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 2 of method System.Reflection.AssemblyName.ParseAsAssemblySpec | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeModuleBuilder.GetArrayMethodToken | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefFromSignature | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeModuleBuilder.GetStringConstant | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeModuleBuilder.GetTokenFromTypeSpec | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeModuleBuilder.GetTypeRef | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineEvent | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineField | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineGenericParam | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineMethod | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineMethodSpec | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineProperty | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineType | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.GetTokenFromSig | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL | local | 32 | -| Local variable 2 of method System.Reflection.Emit.RuntimeTypeBuilder.SetParamInfo | local | 32 | -| Local variable 2 of method System.Reflection.RuntimeAssembly.GetManifestResourceInfo | local | 32 | -| Local variable 2 of method System.Reflection.RuntimeAssembly.GetResource | local | 32 | -| Local variable 2 of method System.SByte.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.SByte.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 2 of method System.SpanHelpers.LastIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 2 of method System.SpanHelpers.LastIndexOfAnyValueType | local | 32 | -| Local variable 2 of method System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 2 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 2 of method System.String.CompareOrdinalHelper | local | 32 | -| Local variable 2 of method System.String.MakeSeparatorListVectorized | local | 32 | -| Local variable 2 of method System.StubHelpers.AnsiCharMarshaler.DoAnsiConversion | local | 32 | -| Local variable 2 of method System.Text.DecoderNLS.GetChars | local | 32 | -| Local variable 2 of method System.Text.EncoderNLS.GetByteCount | local | 32 | -| Local variable 2 of method System.Text.EncoderNLS.GetBytes | local | 32 | -| Local variable 2 of method System.Text.StringBuilder.Append | local | 32 | -| Local variable 2 of method System.Text.UTF7Encoding.GetBytes | local | 32 | -| Local variable 2 of method System.Text.UTF32Encoding.GetBytes | local | 32 | -| Local variable 2 of method System.Text.UnicodeEncoding.GetBytes | local | 32 | -| Local variable 2 of method System.UInt16.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.UInt16.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.UInt32.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.UInt32.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.UInt64.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.UInt64.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.UInt128.<op_Division>g__AddDivisor\|110_0 | local | 32 | -| Local variable 2 of method System.UInt128.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.UInt128.TryReadLittleEndian | local | 32 | -| Local variable 2 of method System.UInt128.TryWriteBigEndian | local | 32 | -| Local variable 2 of method System.UInt128.WriteLittleEndianUnsafe | local | 32 | -| Local variable 2 of method System.UIntPtr.TryReadBigEndian | local | 32 | -| Local variable 2 of method System.UIntPtr.TryReadLittleEndian | local | 32 | -| Local variable 3 of method Interop.Globalization.EnumCalendarInfo | local | 32 | -| Local variable 3 of method Interop.Globalization.GetJapaneseEraStartDate | local | 32 | -| Local variable 3 of method Interop.Globalization.GetLocaleInfoGroupingSizes | local | 32 | -| Local variable 3 of method Interop.Globalization.GetLocaleInfoInt | local | 32 | -| Local variable 3 of method Interop.Globalization.GetLocaleInfoString | local | 32 | -| Local variable 3 of method Interop.Globalization.GetLocaleName | local | 32 | -| Local variable 3 of method Interop.Globalization.IsPredefinedLocale | local | 32 | -| Local variable 3 of method Interop.Kernel32.GetEnvironmentVariable | local | 32 | -| Local variable 3 of method Interop.Sys.GetUnixVersion | local | 32 | -| Local variable 3 of method Interop.Sys.GetWindowSize | local | 32 | -| Local variable 3 of method Interop.Sys.LStat | local | 32 | -| Local variable 3 of method Interop.Sys.MkDir | local | 32 | -| Local variable 3 of method Interop.Sys.ReadLink | local | 32 | -| Local variable 3 of method Interop.Sys.Rename | local | 32 | -| Local variable 3 of method Interop.Sys.SetWindowSize | local | 32 | -| Local variable 3 of method Interop.Sys.Stat | local | 32 | -| Local variable 3 of method System.Array.Copy | local | 32 | -| Local variable 3 of method System.Array.CreateInstance | local | 32 | -| Local variable 3 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 3 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 3 of method System.Buffers.Text.Base64.DecodeFromUtf8 | local | 32 | -| Local variable 3 of method System.Buffers.Text.Base64.EncodeToUtf8 | local | 32 | -| Local variable 3 of method System.Collections.Generic.Dictionary.Remove | local | 32 | -| Local variable 3 of method System.Collections.Generic.GenericArraySortHelper.PickPivotAndPartition | local | 32 | -| Local variable 3 of method System.Collections.Generic.HashSet.RemoveWhere | local | 32 | -| Local variable 3 of method System.Convert.ToBase64CharsLargeNoLineBreaks | local | 32 | -| Local variable 3 of method System.Convert.TryToBase64Chars | local | 32 | -| Local variable 3 of method System.DateTimeFormat.TryFormatDateOnlyR | local | 32 | -| Local variable 3 of method System.Diagnostics.Debugger.LogInternal | local | 32 | -| Local variable 3 of method System.Diagnostics.Tracing.EventPipeInternal.Enable | local | 32 | -| Local variable 3 of method System.Diagnostics.Tracing.EventSource.Write | local | 32 | -| Local variable 3 of method System.Diagnostics.Tracing.EventSource.WriteEvent | local | 32 | -| Local variable 3 of method System.Globalization.CompareInfo.IcuCompareString | local | 32 | -| Local variable 3 of method System.Globalization.CompareInfo.IcuEndsWith | local | 32 | -| Local variable 3 of method System.Globalization.CompareInfo.IcuIndexOfCore | local | 32 | -| Local variable 3 of method System.Globalization.CompareInfo.IcuStartsWith | local | 32 | -| Local variable 3 of method System.Globalization.CompareInfo.IndexOfOrdinalHelper | local | 32 | -| Local variable 3 of method System.Globalization.CompareInfo.IndexOfOrdinalIgnoreCaseHelper | local | 32 | -| Local variable 3 of method System.Globalization.InvariantModeCasing.IndexOfIgnoreCase | local | 32 | -| Local variable 3 of method System.Globalization.InvariantModeCasing.LastIndexOfIgnoreCase | local | 32 | -| Local variable 3 of method System.Globalization.Ordinal.CompareStringIgnoreCase | local | 32 | -| Local variable 3 of method System.Globalization.Ordinal.EqualsStringIgnoreCaseUtf8 | local | 32 | -| Local variable 3 of method System.Globalization.OrdinalCasing.IndexOf | local | 32 | -| Local variable 3 of method System.Globalization.OrdinalCasing.LastIndexOf | local | 32 | -| Local variable 3 of method System.HexConverter.TryDecodeFromUtf16_Vector128 | local | 32 | -| Local variable 3 of method System.Int16.TryReadBigEndian | local | 32 | -| Local variable 3 of method System.Int16.TryReadLittleEndian | local | 32 | -| Local variable 3 of method System.Int32.TryReadBigEndian | local | 32 | -| Local variable 3 of method System.Int32.TryReadLittleEndian | local | 32 | -| Local variable 3 of method System.Int64.TryReadBigEndian | local | 32 | -| Local variable 3 of method System.Int64.TryReadLittleEndian | local | 32 | -| Local variable 3 of method System.Int128.TryReadBigEndian | local | 32 | -| Local variable 3 of method System.Int128.TryReadLittleEndian | local | 32 | -| Local variable 3 of method System.IntPtr.TryReadBigEndian | local | 32 | -| Local variable 3 of method System.IntPtr.TryReadLittleEndian | local | 32 | -| Local variable 3 of method System.Memory.Pin | local | 32 | -| Local variable 3 of method System.ModuleHandle.ResolveMethodHandleInternal | local | 32 | -| Local variable 3 of method System.Number.BigInteger.Pow10 | local | 32 | -| Local variable 3 of method System.Number.FindSection | local | 32 | -| Local variable 3 of method System.Number.Int32ToHexStr | local | 32 | -| Local variable 3 of method System.Number.Int64ToHexStr | local | 32 | -| Local variable 3 of method System.Number.NegativeInt32ToDecStr | local | 32 | -| Local variable 3 of method System.Number.NegativeInt64ToDecStr | local | 32 | -| Local variable 3 of method System.Number.TryInt128ToHexStr | local | 32 | -| Local variable 3 of method System.Number.TryNegativeInt128ToDecStr | local | 32 | -| Local variable 3 of method System.Number.TryUInt32ToDecStr | local | 32 | -| Local variable 3 of method System.Number.TryUInt64ToDecStr | local | 32 | -| Local variable 3 of method System.Number.TryUInt128ToBinaryStr | local | 32 | -| Local variable 3 of method System.Number.TryUInt128ToDecStr | local | 32 | -| Local variable 3 of method System.Number.UInt32ToBinaryStr | local | 32 | -| Local variable 3 of method System.Number.UInt32ToDecStr | local | 32 | -| Local variable 3 of method System.Number.UInt32ToDecStr_NoSmallNumberCheck | local | 32 | -| Local variable 3 of method System.Number.UInt64ToBinaryStr | local | 32 | -| Local variable 3 of method System.Number.UInt64ToDecStr | local | 32 | -| Local variable 3 of method System.Number.UInt128ToDecStr | local | 32 | -| Local variable 3 of method System.Object.MemberwiseClone | local | 32 | -| Local variable 3 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 3 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 3 of method System.ReadOnlyMemory.Pin | local | 32 | -| Local variable 3 of method System.Reflection.CustomAttribute.AddCustomAttributes | local | 32 | -| Local variable 3 of method System.Reflection.Emit.RuntimeAssemblyBuilder.CreateDynamicAssembly | local | 32 | -| Local variable 3 of method System.Reflection.Emit.RuntimeTypeBuilder.SetPInvokeData | local | 32 | -| Local variable 3 of method System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata | local | 32 | -| Local variable 3 of method System.Reflection.RuntimeAssembly.GetVersion | local | 32 | -| Local variable 3 of method System.Runtime.CompilerServices.ConditionalWeakTable.Container.Resize | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.ComWrappers.TryGetComInstanceInternal | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.ComWrappers.TryGetOrCreateComInterfaceForObjectInternal | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.Marshal.QueryInterface | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.NativeLibrary.GetSymbol | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.NativeLibrary.LoadFromPath | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.SafeBuffer.ReadSpan | local | 32 | -| Local variable 3 of method System.Runtime.InteropServices.SafeBuffer.WriteSpan | local | 32 | -| Local variable 3 of method System.Runtime.Loader.AssemblyLoadContext.InternalLoad | local | 32 | -| Local variable 3 of method System.Runtime.Loader.AssemblyLoadContext.LoadFromPath | local | 32 | -| Local variable 3 of method System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyResolveHandlerInvoked | local | 32 | -| Local variable 3 of method System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked | local | 32 | -| Local variable 3 of method System.Runtime.Loader.AssemblyLoadContext.TraceSatelliteSubdirectoryPathProbed | local | 32 | -| Local variable 3 of method System.RuntimeType.RuntimeTypeCache.MemberInfoCache.Populate | local | 32 | -| Local variable 3 of method System.SpanHelpers.CountValueType | local | 32 | -| Local variable 3 of method System.SpanHelpers.Fill | local | 32 | -| Local variable 3 of method System.SpanHelpers.LastIndexOf | local | 32 | -| Local variable 3 of method System.SpanHelpers.LastIndexOfAnyValueType | local | 32 | -| Local variable 3 of method System.SpanHelpers.NonPackedContainsValueType | local | 32 | -| Local variable 3 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 3 of method System.SpanHelpers.NonPackedIndexOfValueType | local | 32 | -| Local variable 3 of method System.SpanHelpers.Reverse | local | 32 | -| Local variable 3 of method System.String.CreateStringFromEncoding | local | 32 | -| Local variable 3 of method System.String.GetNonRandomizedHashCodeOrdinalIgnoreCase | local | 32 | -| Local variable 3 of method System.Text.ASCIIEncoding.GetBytes | local | 32 | -| Local variable 3 of method System.Text.ASCIIEncoding.GetChars | local | 32 | -| Local variable 3 of method System.Text.ASCIIEncoding.TryGetBytes | local | 32 | -| Local variable 3 of method System.Text.ASCIIEncoding.TryGetChars | local | 32 | -| Local variable 3 of method System.Text.Ascii.ChangeCase | local | 32 | -| Local variable 3 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 3 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 3 of method System.Text.Ascii.FromUtf16 | local | 32 | -| Local variable 3 of method System.Text.Ascii.ToUtf16 | local | 32 | -| Local variable 3 of method System.Text.Decoder.Convert | local | 32 | -| Local variable 3 of method System.Text.Decoder.GetChars | local | 32 | -| Local variable 3 of method System.Text.DecoderNLS.Convert | local | 32 | -| Local variable 3 of method System.Text.Encoder.Convert | local | 32 | -| Local variable 3 of method System.Text.Encoder.GetBytes | local | 32 | -| Local variable 3 of method System.Text.EncoderNLS.Convert | local | 32 | -| Local variable 3 of method System.Text.Encoding.GetBytes | local | 32 | -| Local variable 3 of method System.Text.Encoding.GetBytesWithFallback | local | 32 | -| Local variable 3 of method System.Text.Encoding.GetChars | local | 32 | -| Local variable 3 of method System.Text.Encoding.GetCharsWithFallback | local | 32 | -| Local variable 3 of method System.Text.Latin1Encoding.GetBytes | local | 32 | -| Local variable 3 of method System.Text.Latin1Encoding.GetChars | local | 32 | -| Local variable 3 of method System.Text.Latin1Encoding.TryGetBytes | local | 32 | -| Local variable 3 of method System.Text.Latin1Encoding.TryGetChars | local | 32 | -| Local variable 3 of method System.Text.UTF8Encoding.GetBytes | local | 32 | -| Local variable 3 of method System.Text.UTF8Encoding.GetChars | local | 32 | -| Local variable 3 of method System.Text.UTF8Encoding.TryGetBytes | local | 32 | -| Local variable 3 of method System.Text.UTF8Encoding.TryGetChars | local | 32 | -| Local variable 3 of method System.Text.Unicode.Utf8.FromUtf16 | local | 32 | -| Local variable 3 of method System.Text.Unicode.Utf8.ToUtf16 | local | 32 | -| Local variable 3 of method System.Text.Unicode.Utf8.ToUtf16PreservingReplacement | local | 32 | -| Local variable 3 of method System.Threading.Thread.StartCore | local | 32 | -| Local variable 3 of method System.UInt128.<op_Division>g__SubtractDivisor\|110_3 | local | 32 | -| Local variable 4 of method Interop.Globalization.GetCalendars | local | 32 | -| Local variable 4 of method Interop.Globalization.GetLocaleTimeFormat | local | 32 | -| Local variable 4 of method Interop.Globalization.GetTimeZoneDisplayName | local | 32 | -| Local variable 4 of method Interop.Kernel32.GetMessage | local | 32 | -| Local variable 4 of method Interop.Kernel32.SetEnvironmentVariable | local | 32 | -| Local variable 4 of method Interop.Sys.IsMemberOfGroup | local | 32 | -| Local variable 4 of method System.Array.Copy | local | 32 | -| Local variable 4 of method System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | local | 32 | -| Local variable 4 of method System.Collections.Generic.Dictionary.CollectionsMarshalHelper.GetValueRefOrAddDefault | local | 32 | -| Local variable 4 of method System.Collections.Generic.Dictionary.CopyEntries | local | 32 | -| Local variable 4 of method System.Collections.Generic.Dictionary.TryInsert | local | 32 | -| Local variable 4 of method System.Collections.Generic.HashSet.AddIfNotPresent | local | 32 | -| Local variable 4 of method System.Collections.Generic.HashSet.ConstructFrom | local | 32 | -| Local variable 4 of method System.Convert.ToBase64CharsLargeNoLineBreaks | local | 32 | -| Local variable 4 of method System.Convert.ToBase64String | local | 32 | -| Local variable 4 of method System.DateTimeFormat.FormatCustomizedTimeZone | local | 32 | -| Local variable 4 of method System.DateTimeFormat.FormatDigits | local | 32 | -| Local variable 4 of method System.Diagnostics.Tracing.DataCollector.AddNullTerminatedString | local | 32 | -| Local variable 4 of method System.Diagnostics.Tracing.EventSource.WriteEvent | local | 32 | -| Local variable 4 of method System.Enum.Format | local | 32 | -| Local variable 4 of method System.Globalization.CompareInfo.EndsWithOrdinalHelper | local | 32 | -| Local variable 4 of method System.Globalization.CompareInfo.EndsWithOrdinalIgnoreCaseHelper | local | 32 | -| Local variable 4 of method System.Globalization.CompareInfo.IcuGetSortKey | local | 32 | -| Local variable 4 of method System.Globalization.CompareInfo.StartsWithOrdinalHelper | local | 32 | -| Local variable 4 of method System.Globalization.CompareInfo.StartsWithOrdinalIgnoreCaseHelper | local | 32 | -| Local variable 4 of method System.Globalization.IdnMapping.IcuGetUnicodeCore | local | 32 | -| Local variable 4 of method System.Globalization.Ordinal.IndexOfOrdinalIgnoreCase | local | 32 | -| Local variable 4 of method System.IO.PathInternal.EqualStartingCharacterCount | local | 32 | -| Local variable 4 of method System.MemoryExtensions.TrimUtf8 | local | 32 | -| Local variable 4 of method System.Number.BigInteger.AddDivisor | local | 32 | -| Local variable 4 of method System.Number.Int128ToHexStr | local | 32 | -| Local variable 4 of method System.Number.NegativeInt128ToDecStr | local | 32 | -| Local variable 4 of method System.Number.UInt128ToBinaryStr | local | 32 | -| Local variable 4 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 4 of method System.Reflection.AssemblyName.EscapeString | local | 32 | -| Local variable 4 of method System.Reflection.AssemblyName.ParseAsAssemblySpec | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeModuleBuilder.GetArrayMethodToken | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeModuleBuilder.GetMemberRefFromSignature | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineField | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineGenericParam | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineMethod | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineProperty | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeTypeBuilder.DefineType | local | 32 | -| Local variable 4 of method System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL | local | 32 | -| Local variable 4 of method System.Reflection.RuntimeAssembly.GetResource | local | 32 | -| Local variable 4 of method System.Reflection.RuntimeAssembly.InternalLoad | local | 32 | -| Local variable 4 of method System.Runtime.InteropServices.NativeLibrary.LoadByName | local | 32 | -| Local variable 4 of method System.Runtime.Loader.AssemblyLoadContext.InternalLoad | local | 32 | -| Local variable 4 of method System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyLoadFromResolveHandlerInvoked | local | 32 | -| Local variable 4 of method System.SpanHelpers.IndexOf | local | 32 | -| Local variable 4 of method System.SpanHelpers.LastIndexOf | local | 32 | -| Local variable 4 of method System.SpanHelpers.NonPackedContainsValueType | local | 32 | -| Local variable 4 of method System.SpanHelpers.NonPackedIndexOfValueType | local | 32 | -| Local variable 4 of method System.SpanHelpers.Reverse | local | 32 | -| Local variable 4 of method System.String.CompareOrdinalHelper | local | 32 | -| Local variable 4 of method System.String.Replace | local | 32 | -| Local variable 4 of method System.TermInfo.ParameterizedStrings.FormatPrintF | local | 32 | -| Local variable 4 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 4 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 4 of method System.Text.DecoderNLS.GetChars | local | 32 | -| Local variable 4 of method System.Text.EncoderNLS.GetBytes | local | 32 | -| Local variable 4 of method System.Text.Latin1Encoding.GetString | local | 32 | -| Local variable 4 of method System.Text.UTF7Encoding.GetBytes | local | 32 | -| Local variable 4 of method System.Text.UTF7Encoding.GetChars | local | 32 | -| Local variable 4 of method System.Text.UTF8Encoding.UTF8EncodingSealed.GetBytesForSmallInput | local | 32 | -| Local variable 4 of method System.Text.UTF32Encoding.GetBytes | local | 32 | -| Local variable 4 of method System.Text.UTF32Encoding.GetChars | local | 32 | -| Local variable 4 of method System.Text.UnicodeEncoding.GetBytes | local | 32 | -| Local variable 4 of method System.Text.UnicodeEncoding.GetChars | local | 32 | -| Local variable 5 of method Interop.Globalization.GetJapaneseEraStartDate | local | 32 | -| Local variable 5 of method Interop.Globalization.GetLocaleInfoGroupingSizes | local | 32 | -| Local variable 5 of method Interop.Globalization.GetLocaleInfoInt | local | 32 | -| Local variable 5 of method Interop.Globalization.GetLocaleInfoString | local | 32 | -| Local variable 5 of method Interop.Kernel32.GetEnvironmentVariable | local | 32 | -| Local variable 5 of method Interop.Sys.FStat | local | 32 | -| Local variable 5 of method Interop.Sys.GetCwd | local | 32 | -| Local variable 5 of method Interop.Sys.GetUnixVersion | local | 32 | -| Local variable 5 of method Interop.Sys.GetUserNameFromPasswd | local | 32 | -| Local variable 5 of method Interop.Sys.LStat | local | 32 | -| Local variable 5 of method Interop.Sys.ReadLink | local | 32 | -| Local variable 5 of method Interop.Sys.Rename | local | 32 | -| Local variable 5 of method Interop.Sys.Stat | local | 32 | -| Local variable 5 of method System.Array.Clear | local | 32 | -| Local variable 5 of method System.Array.CopyImpl | local | 32 | -| Local variable 5 of method System.Array.CreateInstance | local | 32 | -| Local variable 5 of method System.Array.InternalGetValue | local | 32 | -| Local variable 5 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 5 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 5 of method System.Buffers.SharedArrayPool.Return | local | 32 | -| Local variable 5 of method System.Buffers.Text.Base64.DecodeFromUtf8InPlace | local | 32 | -| Local variable 5 of method System.Collections.Generic.Dictionary.CopyEntries | local | 32 | -| Local variable 5 of method System.Collections.Generic.GenericArraySortHelper.PickPivotAndPartition | local | 32 | -| Local variable 5 of method System.Collections.Generic.HashSet.Remove | local | 32 | -| Local variable 5 of method System.Collections.Generic.HashSet.Resize | local | 32 | -| Local variable 5 of method System.Convert.ToBase64CharArray | local | 32 | -| Local variable 5 of method System.Convert.ToBase64CharsLargeNoLineBreaks | local | 32 | -| Local variable 5 of method System.Convert.TryToBase64Chars | local | 32 | -| Local variable 5 of method System.Diagnostics.Tracing.EventPipeInternal.Enable | local | 32 | -| Local variable 5 of method System.Diagnostics.Tracing.EventSource.WriteEvent | local | 32 | -| Local variable 5 of method System.Globalization.TextInfo.ToLowerAsciiInvariant | local | 32 | -| Local variable 5 of method System.IO.PersistedFiles.GetHomeDirectory | local | 32 | -| Local variable 5 of method System.Number.BigInteger.SubtractDivisor | local | 32 | -| Local variable 5 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 5 of method System.Reflection.CustomAttribute.GetAttributeUsage | local | 32 | -| Local variable 5 of method System.Reflection.Emit.RuntimeAssemblyBuilder.CreateDynamicAssembly | local | 32 | -| Local variable 5 of method System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata | local | 32 | -| Local variable 5 of method System.Reflection.Metadata.MetadataUpdater.ApplyUpdate | local | 32 | -| Local variable 5 of method System.Reflection.RuntimeAssembly.GetVersion | local | 32 | -| Local variable 5 of method System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod | local | 32 | -| Local variable 5 of method System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal | local | 32 | -| Local variable 5 of method System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyResolveHandlerInvoked | local | 32 | -| Local variable 5 of method System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked | local | 32 | -| Local variable 5 of method System.String.Replace | local | 32 | -| Local variable 5 of method System.Text.Ascii.ChangeCase | local | 32 | -| Local variable 5 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 5 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 5 of method System.Text.Ascii.FromUtf16 | local | 32 | -| Local variable 5 of method System.Text.Ascii.ToUtf16 | local | 32 | -| Local variable 5 of method System.Text.Encoding.GetBytes | local | 32 | -| Local variable 6 of method Interop.Kernel32.CreateEventEx | local | 32 | -| Local variable 6 of method Interop.Kernel32.CreateMutexEx | local | 32 | -| Local variable 6 of method Interop.Kernel32.CreateSemaphoreEx | local | 32 | -| Local variable 6 of method Interop.Kernel32.ReleaseSemaphore | local | 32 | -| Local variable 6 of method Interop.Kernel32.SetEnvironmentVariable | local | 32 | -| Local variable 6 of method System.Array.CopyImpl | local | 32 | -| Local variable 6 of method System.Array.Initialize | local | 32 | -| Local variable 6 of method System.Array.InternalGetValue | local | 32 | -| Local variable 6 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 6 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 6 of method System.Collections.Generic.Dictionary.Resize | local | 32 | -| Local variable 6 of method System.Collections.Generic.GenericArraySortHelper.PickPivotAndPartition | local | 32 | -| Local variable 6 of method System.Collections.Generic.HashSet.FindItemIndex | local | 32 | -| Local variable 6 of method System.Convert.ConvertToBase64Array | local | 32 | -| Local variable 6 of method System.Convert.ToBase64String | local | 32 | -| Local variable 6 of method System.Convert.TryDecodeFromUtf16 | local | 32 | -| Local variable 6 of method System.DateTimeFormat.FormatCustomizedTimeZone | local | 32 | -| Local variable 6 of method System.DateTimeFormat.FormatDigits | local | 32 | -| Local variable 6 of method System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForProperty | local | 32 | -| Local variable 6 of method System.Globalization.IdnMapping.IcuGetAsciiCore | local | 32 | -| Local variable 6 of method System.Number.BigInteger.Pow10 | local | 32 | -| Local variable 6 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 6 of method System.Reflection.Emit.RuntimeTypeBuilder.SetConstantValue | local | 32 | -| Local variable 6 of method System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL | local | 32 | -| Local variable 6 of method System.Reflection.Metadata.MetadataUpdater.ApplyUpdate | local | 32 | -| Local variable 6 of method System.Reflection.RuntimeAssembly.InternalLoad | local | 32 | -| Local variable 6 of method System.Runtime.CompilerServices.ConditionalWeakTable.Container.Resize | local | 32 | -| Local variable 6 of method System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyLoadFromResolveHandlerInvoked | local | 32 | -| Local variable 6 of method System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 6 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 6 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 7 of method Interop.Globalization.GetJapaneseEraStartDate | local | 32 | -| Local variable 7 of method Interop.Globalization.GetLocaleInfoGroupingSizes | local | 32 | -| Local variable 7 of method Interop.Globalization.GetSortHandle | local | 32 | -| Local variable 7 of method Interop.Kernel32.OpenMutex | local | 32 | -| Local variable 7 of method System.Array.InternalGetValue | local | 32 | -| Local variable 7 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 7 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 7 of method System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | local | 32 | -| Local variable 7 of method System.Buffers.Text.Base64.EncodeToUtf8InPlace | local | 32 | -| Local variable 7 of method System.Collections.Generic.Dictionary.CollectionsMarshalHelper.GetValueRefOrAddDefault | local | 32 | -| Local variable 7 of method System.Collections.Generic.Dictionary.Remove | local | 32 | -| Local variable 7 of method System.Collections.Generic.Dictionary.TryInsert | local | 32 | -| Local variable 7 of method System.Collections.Generic.HashSet.AddIfNotPresent | local | 32 | -| Local variable 7 of method System.Collections.Generic.HashSet.Remove | local | 32 | -| Local variable 7 of method System.Collections.Generic.HashSet.Resize | local | 32 | -| Local variable 7 of method System.Convert.ToBase64CharArray | local | 32 | -| Local variable 7 of method System.Convert.ToBase64CharsLargeNoLineBreaks | local | 32 | -| Local variable 7 of method System.DateTimeFormat.TryFormatS | local | 32 | -| Local variable 7 of method System.DateTimeFormat.TryFormatu | local | 32 | -| Local variable 7 of method System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadata | local | 32 | -| Local variable 7 of method System.Globalization.CompareInfo.IcuGetHashCodeOfString | local | 32 | -| Local variable 7 of method System.Globalization.Normalization.IcuNormalize | local | 32 | -| Local variable 7 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 7 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 7 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 7 of method System.Reflection.Metadata.MetadataUpdater.ApplyUpdate | local | 32 | -| Local variable 7 of method System.Reflection.RuntimeAssembly.GetVersion | local | 32 | -| Local variable 7 of method System.Runtime.CompilerServices.ConditionalWeakTable.Container.Resize | local | 32 | -| Local variable 7 of method System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyResolveHandlerInvoked | local | 32 | -| Local variable 7 of method System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked | local | 32 | -| Local variable 7 of method System.RuntimeType.RuntimeTypeCache.MemberInfoCache.Populate | local | 32 | -| Local variable 7 of method System.SpanHelpers.NonPackedContainsValueType | local | 32 | -| Local variable 7 of method System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 7 of method System.SpanHelpers.NonPackedIndexOfValueType | local | 32 | -| Local variable 7 of method System.String.MakeSeparatorListAny | local | 32 | -| Local variable 7 of method System.StubHelpers.CSTRMarshaler.ConvertFixedToNative | local | 32 | -| Local variable 7 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 8 of method Interop.Sys.LStat | local | 32 | -| Local variable 8 of method Interop.Sys.Stat | local | 32 | -| Local variable 8 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 8 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 8 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 8 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 8 of method System.Collections.Generic.HashSet.Resize | local | 32 | -| Local variable 8 of method System.DateTimeFormat.TryFormatInvariantG | local | 32 | -| Local variable 8 of method System.Diagnostics.Tracing.EventSource.WriteEventString | local | 32 | -| Local variable 8 of method System.ModuleHandle.ResolveFieldHandle | local | 32 | -| Local variable 8 of method System.ModuleHandle.ResolveTypeHandle | local | 32 | -| Local variable 8 of method System.Number.BigInteger.Pow10 | local | 32 | -| Local variable 8 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 8 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 8 of method System.Reflection.Emit.RuntimeTypeBuilder.SetConstantValue | local | 32 | -| Local variable 8 of method System.Reflection.Emit.RuntimeTypeBuilder.SetMethodIL | local | 32 | -| Local variable 8 of method System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyLoadFromResolveHandlerInvoked | local | 32 | -| Local variable 8 of method System.SpanHelpers.CountValueType | local | 32 | -| Local variable 8 of method System.SpanHelpers.NonPackedContainsValueType | local | 32 | -| Local variable 8 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 8 of method System.SpanHelpers.NonPackedIndexOfValueType | local | 32 | -| Local variable 8 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 8 of method System.Text.Ascii.IsValidCore | local | 32 | -| Local variable 9 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 9 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 9 of method System.Collections.Generic.Dictionary.CollectionsMarshalHelper.GetValueRefOrAddDefault | local | 32 | -| Local variable 9 of method System.Collections.Generic.HashSet.AddIfNotPresent | local | 32 | -| Local variable 9 of method System.Collections.Generic.HashSet.FindItemIndex | local | 32 | -| Local variable 9 of method System.Collections.Generic.HashSet.IntersectWithEnumerable | local | 32 | -| Local variable 9 of method System.Collections.Generic.HashSet.TrimExcess | local | 32 | -| Local variable 9 of method System.DateTimeFormat.TryFormatR | local | 32 | -| Local variable 9 of method System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForProperty | local | 32 | -| Local variable 9 of method System.Diagnostics.Tracing.EventPipeInternal.Enable | local | 32 | -| Local variable 9 of method System.Globalization.CompareInfo.IcuGetHashCodeOfString | local | 32 | -| Local variable 9 of method System.Globalization.Normalization.IcuNormalize | local | 32 | -| Local variable 9 of method System.IO.Directory.CreateTempSubdirectoryCore | local | 32 | -| Local variable 9 of method System.IO.Path.GetTempFileName | local | 32 | -| Local variable 9 of method System.ModuleHandle.ResolveFieldHandle | local | 32 | -| Local variable 9 of method System.ModuleHandle.ResolveTypeHandle | local | 32 | -| Local variable 9 of method System.Runtime.Loader.AssemblyLoadContext.TraceAssemblyResolveHandlerInvoked | local | 32 | -| Local variable 9 of method System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked | local | 32 | -| Local variable 9 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 9 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 9 of method System.SpanHelpers.Reverse | local | 32 | -| Local variable 9 of method System.String.<GetNonRandomizedHashCodeOrdinalIgnoreCase>g__GetNonRandomizedHashCodeOrdinalIgnoreCaseSlow\|47_0 | local | 32 | -| Local variable 9 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 10 of method System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | local | 32 | -| Local variable 10 of method System.Collections.Generic.HashSet.TrimExcess | local | 32 | -| Local variable 10 of method System.Convert.ToBase64CharsLargeNoLineBreaks | local | 32 | -| Local variable 10 of method System.DateTimeFormat.TryFormatO | local | 32 | -| Local variable 10 of method System.Number.BigInteger.Pow10 | local | 32 | -| Local variable 10 of method System.Number.FormatFixed | local | 32 | -| Local variable 10 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 10 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 10 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 10 of method System.SpanHelpers.Reverse | local | 32 | -| Local variable 10 of method System.String.JoinCore | local | 32 | -| Local variable 10 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 11 of method System.Buffers.Text.Base64.EncodeToUtf8 | local | 32 | -| Local variable 11 of method System.Collections.Generic.HashSet.AddIfNotPresent | local | 32 | -| Local variable 11 of method System.Globalization.CompareInfo.IcuGetHashCodeOfString | local | 32 | -| Local variable 11 of method System.IO.RandomAccess.ReadScatterAtOffset | local | 32 | -| Local variable 11 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 11 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 11 of method System.Runtime.CompilerServices.ConditionalWeakTable.Container.Resize | local | 32 | -| Local variable 11 of method System.Runtime.Loader.AssemblyLoadContext.TraceResolvingHandlerInvoked | local | 32 | -| Local variable 11 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 11 of method System.SpanHelpers.NonPackedContainsValueType | local | 32 | -| Local variable 11 of method System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 11 of method System.SpanHelpers.NonPackedIndexOfValueType | local | 32 | -| Local variable 11 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 12 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 12 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 12 of method System.Diagnostics.Tracing.EventSource.WriteMultiMerge | local | 32 | -| Local variable 12 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 12 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 12 of method System.Reflection.RuntimeAssembly.GetTypeCoreIgnoreCase | local | 32 | -| Local variable 12 of method System.SpanHelpers.NonPackedContainsValueType | local | 32 | -| Local variable 12 of method System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 12 of method System.SpanHelpers.NonPackedIndexOfValueType | local | 32 | -| Local variable 12 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 12 of method System.Text.Ascii.IsValidCore | local | 32 | -| Local variable 13 of method System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | local | 32 | -| Local variable 13 of method System.Buffers.Text.Base64.DecodeFromUtf8 | local | 32 | -| Local variable 13 of method System.Globalization.TextInfo.ChangeCaseCommon | local | 32 | -| Local variable 13 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 13 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 13 of method System.SpanHelpers.CountValueType | local | 32 | -| Local variable 13 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 14 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 14 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 14 of method System.IO.RandomAccess.WriteGatherAtOffset | local | 32 | -| Local variable 14 of method System.Reflection.RuntimeAssembly.GetTypeCoreIgnoreCase | local | 32 | -| Local variable 14 of method System.Runtime.CompilerServices.ConditionalWeakTable.Container.Resize | local | 32 | -| Local variable 14 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 14 of method System.SpanHelpers.Reverse | local | 32 | -| Local variable 14 of method System.Text.Ascii.Equals | local | 32 | -| Local variable 14 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 15 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 15 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 15 of method System.Diagnostics.Tracing.EventSource.WriteImpl | local | 32 | -| Local variable 15 of method System.Globalization.TimeSpanFormat.TryFormatStandard | local | 32 | -| Local variable 15 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 15 of method System.SpanHelpers.Reverse | local | 32 | -| Local variable 15 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 16 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 16 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 16 of method System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 16 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 16 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 17 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | local | 32 | -| Local variable 17 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 17 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | local | 32 | -| Local variable 17 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 17 of method System.Reflection.RuntimeAssembly.GetTypeCore | local | 32 | -| Local variable 17 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 17 of method System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | local | 32 | -| Local variable 17 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 17 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 18 of method System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 18 of method System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | local | 32 | -| Local variable 18 of method System.Diagnostics.Tracing.EventSource.WriteMultiMergeInner | local | 32 | -| Local variable 18 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 18 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 18 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 18 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 18 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 19 of method System.Number.NumberToStringFormat | local | 32 | -| Local variable 19 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 19 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 19 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 20 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 20 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 20 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 21 of method System.Diagnostics.Tracing.EventPipeMetadataGenerator.GenerateMetadata | local | 32 | -| Local variable 21 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 23 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 23 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 23 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 24 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 24 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 24 of method System.SpanHelpers.NonPackedIndexOfAnyValueType | local | 32 | -| Local variable 25 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 25 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 25 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 25 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 25 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 26 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 26 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 26 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 27 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 27 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 28 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 28 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 28 of method System.Text.Ascii.EqualsIgnoreCase | local | 32 | -| Local variable 29 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 29 of method System.SpanHelpers.IndexOfAnyValueType | local | 32 | -| Local variable 30 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 30 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 30 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 31 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 31 of method System.Number.NumberToStringFormat | local | 32 | -| Local variable 31 of method System.PackedSpanHelpers.Contains | local | 32 | -| Local variable 31 of method System.PackedSpanHelpers.IndexOf | local | 32 | -| Local variable 31 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 31 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 32 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 33 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 33 of method System.Diagnostics.Tracing.EventSource.CreateManifestAndDescriptors | local | 32 | -| Local variable 34 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 34 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 36 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 36 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 37 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 37 of method System.PackedSpanHelpers.IndexOfAnyInRange | local | 32 | -| Local variable 38 of method System.Diagnostics.Tracing.EventProvider.WriteEvent | local | 32 | -| Local variable 39 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Local variable 40 of method System.PackedSpanHelpers.IndexOfAny | local | 32 | -| Parameter 0 of <PrivateImplementationDetails>.InlineArrayElementRef | parameter | 32 | -| Parameter 0 of <PrivateImplementationDetails>.InlineArrayFirstElementRef | parameter | 32 | -| Parameter 0 of Interop.Sys.GetCpuUtilization | parameter | 32 | -| Parameter 0 of Interop.Sys.GetWindowSize | parameter | 32 | -| Parameter 0 of Interop.Sys.LStat | parameter | 32 | -| Parameter 0 of Interop.Sys.MkDir | parameter | 32 | -| Parameter 0 of Interop.Sys.ReadLink | parameter | 32 | -| Parameter 0 of Interop.Sys.Rename | parameter | 32 | -| Parameter 0 of Interop.Sys.SetWindowSize | parameter | 32 | -| Parameter 0 of Interop.Sys.Stat | parameter | 32 | -| Parameter 0 of System.Array.Resize | parameter | 32 | -| Parameter 0 of System.Buffer.BulkMoveWithWriteBarrier | parameter | 32 | -| Parameter 0 of System.Buffer.Memmove | parameter | 32 | -| Parameter 0 of System.Buffer._BulkMoveWithWriteBarrier | parameter | 32 | -| Parameter 0 of System.Buffer._Memmove | parameter | 32 | -| Parameter 0 of System.Buffer._ZeroMemory | parameter | 32 | -| Parameter 0 of System.Buffer.__BulkMoveWithWriteBarrier | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeFirstIndex | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeFirstIndexOverlapped | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeLastIndex | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeLastIndexOverlapped | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.TryIndexOfAny | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.TryIndexOfAnyExcept | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.TryLastIndexOfAny | parameter | 32 | -| Parameter 0 of System.Buffers.IndexOfAnyAsciiSearcher.TryLastIndexOfAnyExcept | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.Contains | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.IndexOfAny | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.IndexOfAnyExcept | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.IndexOfAnySimpleLoop | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.IsCharBitSet | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.LastIndexOfAny | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.LastIndexOfAnyExcept | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.LastIndexOfAnySimpleLoop | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.ProbabilisticIndexOfAny | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.ProbabilisticLastIndexOfAny | parameter | 32 | -| Parameter 0 of System.Buffers.ProbabilisticMap.SetCharBit | parameter | 32 | -| Parameter 0 of System.Buffers.Text.Base64.Avx2Decode | parameter | 32 | -| Parameter 0 of System.Buffers.Text.Base64.Avx2Encode | parameter | 32 | -| Parameter 0 of System.Buffers.Text.Base64.GetPaddingCount | parameter | 32 | -| Parameter 0 of System.Buffers.Text.Base64.Vector128Decode | parameter | 32 | -| Parameter 0 of System.Buffers.Text.Base64.Vector128Encode | parameter | 32 | -| Parameter 0 of System.Buffers.Text.FormattingHelpers.GetSymbolOrDefault | parameter | 32 | -| Parameter 0 of System.Buffers.Text.ParserHelpers.TryParseThrowFormatException | parameter | 32 | -| Parameter 0 of System.ByReference.Create | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper.GreaterThan | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper.LessThan | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper.Swap | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper.SwapIfGreater | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper<!0,!1>.GreaterThan | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper<!0,!1>.LessThan | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper<!0>.GreaterThan | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper<!0>.LessThan | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper<!0>.Swap | parameter | 32 | -| Parameter 0 of System.Collections.Generic.GenericArraySortHelper<!0>.SwapIfGreater | parameter | 32 | -| Parameter 0 of System.ComAwareWeakReference.EnsureComAwareReference | parameter | 32 | -| Parameter 0 of System.ComAwareWeakReference.SetComInfoInConstructor | parameter | 32 | -| Parameter 0 of System.ComAwareWeakReference.SetTarget | parameter | 32 | -| Parameter 0 of System.ConsolePal.GetWindowSize | parameter | 32 | -| Parameter 0 of System.ConsolePal.RefreshColors | parameter | 32 | -| Parameter 0 of System.ConsolePal.TryGetCachedCursorPosition | parameter | 32 | -| Parameter 0 of System.ConsolePal.TryGetCursorPosition | parameter | 32 | -| Parameter 0 of System.Convert.Decode | parameter | 32 | -| Parameter 0 of System.Convert.WriteThreeLowOrderBytes | parameter | 32 | -| Parameter 0 of System.DateTimeFormat.AppendChar | parameter | 32 | -| Parameter 0 of System.DateTimeFormat.AppendString | parameter | 32 | -| Parameter 0 of System.DateTimeFormat.FormatDigits | parameter | 32 | -| Parameter 0 of System.DateTimeFormat.FormatFraction | parameter | 32 | -| Parameter 0 of System.DateTimeFormat.PrepareFormatU | parameter | 32 | -| Parameter 0 of System.DateTimeParse.AdjustHour | parameter | 32 | -| Parameter 0 of System.DateTimeParse.AdjustTimeZoneToLocal | parameter | 32 | -| Parameter 0 of System.DateTimeParse.AdjustTimeZoneToUniversal | parameter | 32 | -| Parameter 0 of System.DateTimeParse.CheckDefaultDateTime | parameter | 32 | -| Parameter 0 of System.DateTimeParse.CheckNewValue | parameter | 32 | -| Parameter 0 of System.DateTimeParse.DateTimeOffsetTimeZonePostProcessing | parameter | 32 | -| Parameter 0 of System.DateTimeParse.DetermineTimeZoneAdjustments | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDateOfDSN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDateOfNDS | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDateOfNNDS | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDateTimeNow | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDateTimeParseException | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfMN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfMNN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfNM | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfNN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfNNN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfNNY | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfYM | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfYMN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfYN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDayOfYNN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetDefaultYear | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetHebrewDayOfNM | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetTimeOfN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetTimeOfNN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetTimeOfNNN | parameter | 32 | -| Parameter 0 of System.DateTimeParse.GetTimeZoneName | parameter | 32 | -| Parameter 0 of System.DateTimeParse.HandleTimeZone | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchAbbreviatedDayName | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchAbbreviatedMonthName | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchAbbreviatedTimeMark | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchDayName | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchEraName | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchHebrewDigits | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchMonthName | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchTimeMark | parameter | 32 | -| Parameter 0 of System.DateTimeParse.MatchWord | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseByFormat | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseDigits | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseFraction | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseFractionExact | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseISO8601 | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseJapaneseEraStart | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseSign | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseTimeZone | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ParseTimeZoneOffset | parameter | 32 | -| Parameter 0 of System.DateTimeParse.ProcessDateTimeSuffix | parameter | 32 | -| Parameter 0 of System.DateTimeParse.SetDateDMY | parameter | 32 | -| Parameter 0 of System.DateTimeParse.SetDateMDY | parameter | 32 | -| Parameter 0 of System.DateTimeParse.SetDateYDM | parameter | 32 | -| Parameter 0 of System.DateTimeParse.SetDateYMD | parameter | 32 | -| Parameter 0 of System.DateTimeParse.TryAdjustYear | parameter | 32 | -| Parameter 0 of System.DateTimeParse.VerifyValidPunctuation | parameter | 32 | -| Parameter 0 of System.Decimal.AsMutable | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.Add32To96 | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.DecAddSub | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.DecDivMod1E9 | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.Div96By32 | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.Div96By64 | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.Div96ByConst | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.Div128By96 | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.GetHashCode | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.IncreaseScale | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.IncreaseScale64 | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.InternalRound | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.OverflowUnscale | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.SearchScale | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.Unscale | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarCyFromDec | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarDecCmp | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarDecCmpSub | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarDecDiv | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarDecMod | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarDecModFull | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarDecMul | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarR4FromDec | parameter | 32 | -| Parameter 0 of System.Decimal.DecCalc.VarR8FromDec | parameter | 32 | -| Parameter 0 of System.Decimal.DecDivMod1E9 | parameter | 32 | -| Parameter 0 of System.Decimal.GetBytes | parameter | 32 | -| Parameter 0 of System.Decimal.Round | parameter | 32 | -| Parameter 0 of System.Decimal.Truncate | parameter | 32 | -| Parameter 0 of System.Diagnostics.Contracts.Contract.ValueAtReturn | parameter | 32 | -| Parameter 0 of System.Diagnostics.StackTrace.TryResolveStateMachineMethod | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.WriteNibble | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.EventPipePayloadDecoder.DecodePayload | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.EventProvider.EncodeObject | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.EventSource.AddEventDescriptor | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.EventSource.DebugCheckEvent | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.EventSource.RemoveFirstArgIfRelatedActivityId | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.EventSource.TrimEventDescriptors | parameter | 32 | -| Parameter 0 of System.Diagnostics.Tracing.ManifestBuilder.UpdateStringBuilder | parameter | 32 | -| Parameter 0 of System.Enum.FormatNumberAsHex | parameter | 32 | -| Parameter 0 of System.Enum.TryFormatNumberAsHex | parameter | 32 | -| Parameter 0 of System.Globalization.CultureData.GetDefaultLocaleName | parameter | 32 | -| Parameter 0 of System.Globalization.DateTimeFormatInfo.TryParseHebrewNumber | parameter | 32 | -| Parameter 0 of System.Globalization.GlobalizationMode.TryGetAppLocalIcuSwitchValue | parameter | 32 | -| Parameter 0 of System.Globalization.HebrewNumber.Append | parameter | 32 | -| Parameter 0 of System.Globalization.InvariantModeCasing.CompareStringIgnoreCase | parameter | 32 | -| Parameter 0 of System.Globalization.InvariantModeCasing.GetScalar | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.CompareStringIgnoreCase | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.CompareStringIgnoreCaseNonAscii | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsIgnoreCase | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsIgnoreCaseUtf8 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsIgnoreCaseUtf8_Scalar | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsIgnoreCaseUtf8_Vector128 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsIgnoreCase_Scalar | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsIgnoreCase_Vector128 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsStringIgnoreCaseNonAsciiUtf8 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.EqualsStringIgnoreCaseUtf8 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.StartsWithIgnoreCaseUtf8 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.StartsWithIgnoreCaseUtf8_Scalar | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.StartsWithIgnoreCaseUtf8_Vector128 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.StartsWithStringIgnoreCaseNonAsciiUtf8 | parameter | 32 | -| Parameter 0 of System.Globalization.Ordinal.StartsWithStringIgnoreCaseUtf8 | parameter | 32 | -| Parameter 0 of System.Globalization.OrdinalCasing.CompareStringIgnoreCase | parameter | 32 | -| Parameter 0 of System.Globalization.TextInfo.AddNonLetter | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ParseExactDigits | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ParseExactLiteral | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ProcessTerminalState | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ProcessTerminal_D | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ProcessTerminal_DHMSF | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ProcessTerminal_HM | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ProcessTerminal_HMS_F_D | parameter | 32 | -| Parameter 0 of System.Globalization.TimeSpanParse.ProcessTerminal_HM_S_D | parameter | 32 | -| Parameter 0 of System.Guid.AsBytes | parameter | 32 | -| Parameter 0 of System.Guid.EqualsCore | parameter | 32 | -| Parameter 0 of System.HashCode.Initialize | parameter | 32 | -| Parameter 0 of System.IO.Enumeration.FileSystemEntry.Initialize | parameter | 32 | -| Parameter 0 of System.IO.Enumeration.FileSystemEnumerableFactory.NormalizeInputs | parameter | 32 | -| Parameter 0 of System.IO.FileSystem.<ResolveLinkTarget>g__GetLinkTargetFullPath\|46_0 | parameter | 32 | -| Parameter 0 of System.Marvin.Block | parameter | 32 | -| Parameter 0 of System.Marvin.ComputeHash32 | parameter | 32 | -| Parameter 0 of System.Marvin.ComputeHash32OrdinalIgnoreCase | parameter | 32 | -| Parameter 0 of System.Marvin.ComputeHash32OrdinalIgnoreCaseSlow | parameter | 32 | -| Parameter 0 of System.MemoryExtensions.SliceLongerSpanToMatchShorterLength | parameter | 32 | -| Parameter 0 of System.Nullable.GetValueRefOrDefaultRef | parameter | 32 | -| Parameter 0 of System.Number.<AppendUnknownChar>g__AppendNonAsciiBytes\|115_0 | parameter | 32 | -| Parameter 0 of System.Number.AccumulateDecimalDigitsIntoBigInteger | parameter | 32 | -| Parameter 0 of System.Number.AppendUnknownChar | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.Add | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.AddDivisor | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.Compare | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.CountSignificantBits | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.DivRem | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.HeuristicDivide | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.Multiply | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.SetUInt32 | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.SetUInt64 | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.SetValue | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.SetZero | parameter | 32 | -| Parameter 0 of System.Number.BigInteger.SubtractDivisor | parameter | 32 | -| Parameter 0 of System.Number.ConvertBigIntegerToFloatingPointBits | parameter | 32 | -| Parameter 0 of System.Number.DecimalToNumber | parameter | 32 | -| Parameter 0 of System.Number.FormatCurrency | parameter | 32 | -| Parameter 0 of System.Number.FormatDouble | parameter | 32 | -| Parameter 0 of System.Number.FormatExponent | parameter | 32 | -| Parameter 0 of System.Number.FormatFixed | parameter | 32 | -| Parameter 0 of System.Number.FormatGeneral | parameter | 32 | -| Parameter 0 of System.Number.FormatHalf | parameter | 32 | -| Parameter 0 of System.Number.FormatNumber | parameter | 32 | -| Parameter 0 of System.Number.FormatPercent | parameter | 32 | -| Parameter 0 of System.Number.FormatScientific | parameter | 32 | -| Parameter 0 of System.Number.FormatSingle | parameter | 32 | -| Parameter 0 of System.Number.Grisu3.TryDigitGenCounted | parameter | 32 | -| Parameter 0 of System.Number.Grisu3.TryDigitGenShortest | parameter | 32 | -| Parameter 0 of System.Number.Grisu3.TryRunCounted | parameter | 32 | -| Parameter 0 of System.Number.Grisu3.TryRunShortest | parameter | 32 | -| Parameter 0 of System.Number.Int128DivMod1E19 | parameter | 32 | -| Parameter 0 of System.Number.NumberToFloat | parameter | 32 | -| Parameter 0 of System.Number.NumberToFloatingPointBits | parameter | 32 | -| Parameter 0 of System.Number.NumberToFloatingPointBitsSlow | parameter | 32 | -| Parameter 0 of System.Number.NumberToString | parameter | 32 | -| Parameter 0 of System.Number.NumberToStringFormat | parameter | 32 | -| Parameter 0 of System.Number.RoundNumber | parameter | 32 | -| Parameter 0 of System.Number.TryNumberBufferToBinaryInteger | parameter | 32 | -| Parameter 0 of System.Number.TryNumberToDecimal | parameter | 32 | -| Parameter 0 of System.Number.TryParseNumber | parameter | 32 | -| Parameter 0 of System.Numerics.BitOperations.Crc32Fallback.Crc32CCore | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.Invert | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.Lerp | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.op_Addition | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.op_Equality | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.op_Inequality | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.op_Multiply | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.op_Subtraction | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix3x2.Impl.op_UnaryNegation | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.<Invert>g__SoftwareFallback\|64_2 | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.<Invert>g__SseImpl\|64_0 | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateBillboard | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateConstrainedBillboard | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateFromAxisAngle | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateFromQuaternion | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateLookTo | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateLookToLeftHanded | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateReflection | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateScale | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateShadow | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateTranslation | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.CreateWorld | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.Decompose | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.Invert | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.Lerp | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.Transform | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.Transpose | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.op_Addition | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.op_Equality | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.op_Inequality | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.op_Multiply | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.op_Subtraction | parameter | 32 | -| Parameter 0 of System.Numerics.Matrix4x4.Impl.op_UnaryNegation | parameter | 32 | -| Parameter 0 of System.Numerics.Plane.<Equals>g__SoftwareFallback\|16_0 | parameter | 32 | -| Parameter 0 of System.Numerics.Quaternion.<Equals>g__SoftwareFallback\|44_0 | parameter | 32 | -| Parameter 0 of System.Numerics.Vector2.<Equals>g__SoftwareFallback\|59_0 | parameter | 32 | -| Parameter 0 of System.Numerics.Vector3.<Equals>g__SoftwareFallback\|60_0 | parameter | 32 | -| Parameter 0 of System.Numerics.Vector4.<Equals>g__SoftwareFallback\|66_0 | parameter | 32 | -| Parameter 0 of System.Numerics.Vector.<Equals>g__SoftwareFallback\|57_0 | parameter | 32 | -| Parameter 0 of System.Numerics.Vector.GetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Numerics.Vector.LoadUnsafe | parameter | 32 | -| Parameter 0 of System.Numerics.Vector.SetElementUnsafe | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.ComputeFirstIndex | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.ComputeFirstIndexOverlapped | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.Contains | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.IndexOf | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.IndexOfAny | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.IndexOfAnyExcept | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.IndexOfAnyExceptInRange | parameter | 32 | -| Parameter 0 of System.PackedSpanHelpers.IndexOfAnyInRange | parameter | 32 | -| Parameter 0 of System.PasteArguments.AppendArgument | parameter | 32 | -| Parameter 0 of System.Reflection.Assembly.GetExecutingAssembly | parameter | 32 | -| Parameter 0 of System.Reflection.AssemblyNameFormatter.AppendQuoted | parameter | 32 | -| Parameter 0 of System.Reflection.CustomAttribute.AddCustomAttributes | parameter | 32 | -| Parameter 0 of System.Reflection.MethodBase.AppendParameters | parameter | 32 | -| Parameter 0 of System.Reflection.MethodInvokerCommon.DetermineStrategy_Obj4Args | parameter | 32 | -| Parameter 0 of System.Reflection.MethodInvokerCommon.DetermineStrategy_ObjSpanArgs | parameter | 32 | -| Parameter 0 of System.Reflection.MethodInvokerCommon.DetermineStrategy_RefArgs | parameter | 32 | -| Parameter 0 of System.Reflection.RuntimeMethodInfo.InternalGetCurrentMethod | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.GetStateMachineBox | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.AwaitOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.GetStateMachineBox | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.AwaitOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.CastCache.Element | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.CastCache.HashShift | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.CastCache.KeyToBucket | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.CastCache.TableMask | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.CastHelpers.StelemRef_Helper_NoCacheLookup | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.CastHelpers.WriteBarrier | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.ObjectHandleOnStack.Create | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.GetStateMachineBox | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<!0>.AwaitOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<!0>.GetStateMachineBox | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<VoidTaskResult>.AwaitOnCompleted | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.Add | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.AddByteOffset | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.AreSame | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.As | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.AsPointer | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.AsRef | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.ByteOffset | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.Copy | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.CopyBlock | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.InitBlock | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.IsAddressLessThan | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.IsNullRef | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.ReadUnaligned | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.SkipInit | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.Subtract | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.SubtractByteOffset | parameter | 32 | -| Parameter 0 of System.Runtime.CompilerServices.Unsafe.WriteUnaligned | parameter | 32 | -| Parameter 0 of System.Runtime.InteropServices.ComWrappers.GetIUnknownImpl | parameter | 32 | -| Parameter 0 of System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal | parameter | 32 | -| Parameter 0 of System.Runtime.InteropServices.MemoryMarshal.CreateReadOnlySpan | parameter | 32 | -| Parameter 0 of System.Runtime.InteropServices.MemoryMarshal.CreateSpan | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector64.<Equals>g__SoftwareFallback\|34_0 | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector64.GetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector64.LoadUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector64.SetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector128.GetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector128.LoadUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector128.SetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector128.SetLowerUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector128.SetUpperUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector256.GetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector256.LoadUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector256.SetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector256.SetLowerUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector256.SetUpperUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector512.GetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector512.LoadUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector512.SetElementUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector512.SetLowerUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Intrinsics.Vector512.SetUpperUnsafe | parameter | 32 | -| Parameter 0 of System.Runtime.Loader.AssemblyLoadContext.StartAssemblyLoad | parameter | 32 | -| Parameter 0 of System.Runtime.Loader.AssemblyLoadContext.StopAssemblyLoad | parameter | 32 | -| Parameter 0 of System.Runtime.MemoryFailPoint.CheckForAvailableMemory | parameter | 32 | -| Parameter 0 of System.RuntimeMethodHandle.GetCurrentMethod | parameter | 32 | -| Parameter 0 of System.RuntimeMethodHandle._GetCurrentMethod | parameter | 32 | -| Parameter 0 of System.RuntimeTypeHandle.GetNextIntroducedMethod | parameter | 32 | -| Parameter 0 of System.SpanHelpers.BinarySearch | parameter | 32 | -| Parameter 0 of System.SpanHelpers.ClearWithReferences | parameter | 32 | -| Parameter 0 of System.SpanHelpers.ClearWithoutReferences | parameter | 32 | -| Parameter 0 of System.SpanHelpers.CommonPrefixLength | parameter | 32 | -| Parameter 0 of System.SpanHelpers.ComputeFirstIndex | parameter | 32 | -| Parameter 0 of System.SpanHelpers.Contains | parameter | 32 | -| Parameter 0 of System.SpanHelpers.ContainsValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.Count | parameter | 32 | -| Parameter 0 of System.SpanHelpers.CountValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.Fill | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOf | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAny | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyChar | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyExcept | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyExceptInRange | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyExceptInRangeUnsignedNumber | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyExceptValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyInRange | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyInRangeUnsignedNumber | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfAnyValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfChar | parameter | 32 | -| Parameter 0 of System.SpanHelpers.IndexOfValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOf | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAny | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAnyExcept | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAnyExceptInRange | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAnyExceptInRangeUnsignedNumber | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAnyExceptValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAnyInRange | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAnyInRangeUnsignedNumber | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfAnyValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LastIndexOfValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LoadNUInt | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LoadUInt | parameter | 32 | -| Parameter 0 of System.SpanHelpers.LoadUShort | parameter | 32 | -| Parameter 0 of System.SpanHelpers.NonPackedContainsValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.NonPackedIndexOfAnyInRangeUnsignedNumber | parameter | 32 | -| Parameter 0 of System.SpanHelpers.NonPackedIndexOfAnyValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.NonPackedIndexOfChar | parameter | 32 | -| Parameter 0 of System.SpanHelpers.NonPackedIndexOfValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.Replace | parameter | 32 | -| Parameter 0 of System.SpanHelpers.ReplaceValueType | parameter | 32 | -| Parameter 0 of System.SpanHelpers.Reverse | parameter | 32 | -| Parameter 0 of System.SpanHelpers.ReverseInner | parameter | 32 | -| Parameter 0 of System.SpanHelpers.SequenceCompareTo | parameter | 32 | -| Parameter 0 of System.SpanHelpers.SequenceEqual | parameter | 32 | -| Parameter 0 of System.StartupHookProvider.ParseStartupHook | parameter | 32 | -| Parameter 0 of System.StubHelpers.CleanupWorkListElement.AddToCleanupList | parameter | 32 | -| Parameter 0 of System.StubHelpers.StubHelpers.AddToCleanupList | parameter | 32 | -| Parameter 0 of System.StubHelpers.StubHelpers.DestroyCleanupList | parameter | 32 | -| Parameter 0 of System.StubHelpers.StubHelpers.KeepAliveViaCleanupList | parameter | 32 | -| Parameter 0 of System.Text.Ascii.Equals | parameter | 32 | -| Parameter 0 of System.Text.Ascii.EqualsIgnoreCase | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader.EqualAndAscii256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader.EqualAndAscii512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader.Load128 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader.Load256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader.Load512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!0>.EqualAndAscii256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!0>.EqualAndAscii512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!0>.Load128 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!0>.Load256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!0>.Load512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!1>.EqualAndAscii256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!1>.EqualAndAscii512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!1>.Load128 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!1>.Load256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<!0,!1>.Load512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<Byte,UInt16>.EqualAndAscii256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<Byte,UInt16>.EqualAndAscii512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<Byte,UInt16>.Load128 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<Byte,UInt16>.Load256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.ILoader<Byte,UInt16>.Load512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.IsValidCore | parameter | 32 | -| Parameter 0 of System.Text.Ascii.NarrowFourUtf16CharsToAsciiAndWriteToBuffer | parameter | 32 | -| Parameter 0 of System.Text.Ascii.NarrowTwoUtf16CharsToAsciiAndWriteToBuffer | parameter | 32 | -| Parameter 0 of System.Text.Ascii.PlainLoader.EqualAndAscii256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.PlainLoader.EqualAndAscii512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.PlainLoader.Load128 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.PlainLoader.Load256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.PlainLoader.Load512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.WidenFourAsciiBytesToUtf16AndWriteToBuffer | parameter | 32 | -| Parameter 0 of System.Text.Ascii.WideningLoader.EqualAndAscii256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.WideningLoader.EqualAndAscii512 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.WideningLoader.Load128 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.WideningLoader.Load256 | parameter | 32 | -| Parameter 0 of System.Text.Ascii.WideningLoader.Load512 | parameter | 32 | -| Parameter 0 of System.Text.Latin1Utility.NarrowFourUtf16CharsToLatin1AndWriteToBuffer | parameter | 32 | -| Parameter 0 of System.Text.Latin1Utility.NarrowTwoUtf16CharsToLatin1AndWriteToBuffer | parameter | 32 | -| Parameter 0 of System.Text.UTF8Encoding.UTF8EncodingSealed.ReadUtf8 | parameter | 32 | -| Parameter 0 of System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.<AppendEnum>g__GrowAndAppendFormatted\|21_0 | parameter | 32 | -| Parameter 0 of System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.<AppendSpanFormattable>g__GrowAndAppendFormatted\|20_0 | parameter | 32 | -| Parameter 0 of System.Text.Unicode.Utf8Utility.IsUtf8ContinuationByte | parameter | 32 | -| Parameter 0 of System.Text.Unicode.Utf8Utility.WriteFirstUtf16CharAsUtf8ThreeByteSequence | parameter | 32 | -| Parameter 0 of System.Text.Unicode.Utf8Utility.WriteTwoUtf16CharsAsTwoUtf8ThreeByteSequences | parameter | 32 | -| Parameter 0 of System.Threading.CancellationTokenSource.Registrations.<EnterLock>g__Contention\|13_0 | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.Add | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.And | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.CompareExchange | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.Decrement | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.Exchange | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.ExchangeAdd | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.Increment | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.Or | parameter | 32 | -| Parameter 0 of System.Threading.Interlocked.Read | parameter | 32 | -| Parameter 0 of System.Threading.LazyInitializer.EnsureInitialized | parameter | 32 | -| Parameter 0 of System.Threading.LazyInitializer.EnsureInitializedCore | parameter | 32 | -| Parameter 0 of System.Threading.LazyInitializer.EnsureLockInitialized | parameter | 32 | -| Parameter 0 of System.Threading.SpinLock.CompareExchange | parameter | 32 | -| Parameter 0 of System.Threading.Tasks.Task.AddExceptionsForCompletedTask | parameter | 32 | -| Parameter 0 of System.Threading.Thread.VolatileRead | parameter | 32 | -| Parameter 0 of System.Threading.Thread.VolatileWrite | parameter | 32 | -| Parameter 0 of System.Threading.ThreadLocal.GrowTable | parameter | 32 | -| Parameter 0 of System.Threading.ThreadLocal<!0>.GrowTable | parameter | 32 | -| Parameter 0 of System.Threading.ThreadPool.GetAvailableThreads | parameter | 32 | -| Parameter 0 of System.Threading.ThreadPool.GetMaxThreads | parameter | 32 | -| Parameter 0 of System.Threading.ThreadPool.GetMinThreads | parameter | 32 | -| Parameter 0 of System.Threading.Volatile.Read | parameter | 32 | -| Parameter 0 of System.Threading.Volatile.Write | parameter | 32 | -| Parameter 0 of System.TimeZoneInfo.AdjustmentRule.AdjustDaylightDeltaToExpectedRange | parameter | 32 | -| Parameter 0 of System.TimeZoneInfo.GetDirectoryEntryFullPath | parameter | 32 | -| Parameter 0 of System.TimeZoneInfo.TZif_GenerateAdjustmentRule | parameter | 32 | -| Parameter 0 of System.TimeZoneInfo.TZif_GenerateAdjustmentRules | parameter | 32 | -| Parameter 0 of System.TimeZoneInfo.TryGetLocalTzFile | parameter | 32 | -| Parameter 0 of delegate* managed<Byte&,Void> | parameter | 32 | -| Parameter 1 of Interop.Globalization.GetJapaneseEraStartDate | parameter | 32 | -| Parameter 1 of Interop.Globalization.GetSortHandle | parameter | 32 | -| Parameter 1 of Interop.Kernel32.GetEnvironmentVariable | parameter | 32 | -| Parameter 1 of Interop.Sys.FStat | parameter | 32 | -| Parameter 1 of Interop.Sys.GetPwUidR | parameter | 32 | -| Parameter 1 of Interop.Sys.GetUnixVersion | parameter | 32 | -| Parameter 1 of Interop.Sys.LStat | parameter | 32 | -| Parameter 1 of Interop.Sys.ReadLink | parameter | 32 | -| Parameter 1 of Interop.Sys.Rename | parameter | 32 | -| Parameter 1 of Interop.Sys.Stat | parameter | 32 | -| Parameter 1 of Interop.Sys.TryGetFileSystemType | parameter | 32 | -| Parameter 1 of Microsoft.Win32.SafeHandles.SafeFileHandle.TryGetCachedLength | parameter | 32 | -| Parameter 1 of System.AppContext.TryGetSwitch | parameter | 32 | -| Parameter 1 of System.Boolean.<TryParse>g__TryParseUncommon\|20_0 | parameter | 32 | -| Parameter 1 of System.Boolean.TryParse | parameter | 32 | -| Parameter 1 of System.Buffer.BulkMoveWithWriteBarrier | parameter | 32 | -| Parameter 1 of System.Buffer.Memmove | parameter | 32 | -| Parameter 1 of System.Buffer._BulkMoveWithWriteBarrier | parameter | 32 | -| Parameter 1 of System.Buffer._Memmove | parameter | 32 | -| Parameter 1 of System.Buffer.__BulkMoveWithWriteBarrier | parameter | 32 | -| Parameter 1 of System.Buffers.AnyByteSearchValues.IndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.AnyByteSearchValues.IndexOfAnyScalar | parameter | 32 | -| Parameter 1 of System.Buffers.AnyByteSearchValues.LastIndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.AnyByteSearchValues.LastIndexOfAnyScalar | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiByteSearchValues.IndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiByteSearchValues.IndexOfAnyScalar | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiByteSearchValues.LastIndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiByteSearchValues.LastIndexOfAnyScalar | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiCharSearchValues.IndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiCharSearchValues.IndexOfAnyScalar | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiCharSearchValues.LastIndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.AsciiCharSearchValues.LastIndexOfAnyScalar | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadDoubleBigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadDoubleLittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadHalfBigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadHalfLittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt16BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt16LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt32BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt32LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt64BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt64LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt128BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadInt128LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadIntPtrBigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadIntPtrLittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadSingleBigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadSingleLittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt16BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt16LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt32BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt32LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt64BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt64LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt128BigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUInt128LittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUIntPtrBigEndian | parameter | 32 | -| Parameter 1 of System.Buffers.Binary.BinaryPrimitives.TryReadUIntPtrLittleEndian | parameter | 32 | -| Parameter 1 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeBitmap | parameter | 32 | -| Parameter 1 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeBitmap256 | parameter | 32 | -| Parameter 1 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeFirstIndex | parameter | 32 | -| Parameter 1 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeFirstIndexOverlapped | parameter | 32 | -| Parameter 1 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeLastIndex | parameter | 32 | -| Parameter 1 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeLastIndexOverlapped | parameter | 32 | -| Parameter 1 of System.Buffers.Latin1CharSearchValues.IndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.Latin1CharSearchValues.LastIndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.MemoryManager.TryGetArray | parameter | 32 | -| Parameter 1 of System.Buffers.MemoryManager<!0>.TryGetArray | parameter | 32 | -| Parameter 1 of System.Buffers.ProbabilisticMap.IndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.ProbabilisticMap.IndexOfAnyVectorized | parameter | 32 | -| Parameter 1 of System.Buffers.ProbabilisticMap.LastIndexOfAny | parameter | 32 | -| Parameter 1 of System.Buffers.SearchValues.TryGetSingleRange | parameter | 32 | -| Parameter 1 of System.Buffers.SharedArrayPoolStatics.TryGetInt32EnvironmentVariable | parameter | 32 | -| Parameter 1 of System.Buffers.StandardFormat.ParseHelper | parameter | 32 | -| Parameter 1 of System.Buffers.StandardFormat.TryParse | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.Avx2Decode | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.Avx2Encode | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.Decode | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.DecodeFromUtf8InPlace | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.DecodeWithWhiteSpaceFromUtf8InPlace | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.Encode | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.EncodeAndPadOne | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.EncodeAndPadTwo | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.IsValid | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.Vector128Decode | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Base64.Vector128Encode | parameter | 32 | -| Parameter 1 of System.Buffers.Text.FormattingHelpers.CountDecimalTrailingZeros | parameter | 32 | -| Parameter 1 of System.Buffers.Text.ParserHelpers.TryParseThrowFormatException | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParse | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseByteD | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseByteN | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseByteX | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseDateTimeG | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseDateTimeOffsetDefault | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseDateTimeOffsetO | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseGuidCore | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseGuidN | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseInt16D | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseInt16N | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseInt32D | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseInt32N | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseInt64D | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseInt64N | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseNormalAsFloatingPoint | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseNumber | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseSByteD | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseSByteN | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanBigG | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanC | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanFraction | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanLittleG | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt16D | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt16N | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt16X | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt32D | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt32N | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt32X | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt64D | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt64N | parameter | 32 | -| Parameter 1 of System.Buffers.Text.Utf8Parser.TryParseUInt64X | parameter | 32 | -| Parameter 1 of System.ByReference..ctor | parameter | 32 | -| Parameter 1 of System.Byte.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Byte.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Byte.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Byte.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Byte.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Byte.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Byte.TryParse | parameter | 32 | -| Parameter 1 of System.Char.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Char.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Char.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Char.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Char.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Char.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Char.TryParse | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue.SnapForObservation | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue.TryDequeueSlow | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue.TryPeek | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue.TryTake | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue<!0>.SnapForObservation | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue<!0>.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue<!0>.TryDequeueSlow | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue<!0>.TryPeek | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueue<Object>.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueueSegment.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueueSegment.TryPeek | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueueSegment<!0>.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.ConcurrentQueueSegment<!0>.TryPeek | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.IProducerConsumerCollection.TryTake | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.IProducerConsumerCollection<!0>.TryTake | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.IProducerConsumerQueue.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.IProducerConsumerQueue<!0>.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.IProducerConsumerQueue<Task>.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.MultiProducerMultiConsumerQueue.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue.TryPeek | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue<!0>.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue<!0>.TryPeek | parameter | 32 | -| Parameter 1 of System.Collections.DictionaryEntry.Deconstruct | parameter | 32 | -| Parameter 1 of System.Collections.Generic.EnumerableHelpers.ToArray | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper.GreaterThan | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper.LessThan | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper.Swap | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper.SwapIfGreater | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper<!0,!1>.GreaterThan | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper<!0,!1>.LessThan | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper<!0>.GreaterThan | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper<!0>.LessThan | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper<!0>.Swap | parameter | 32 | -| Parameter 1 of System.Collections.Generic.GenericArraySortHelper<!0>.SwapIfGreater | parameter | 32 | -| Parameter 1 of System.Collections.Generic.KeyValuePair.Deconstruct | parameter | 32 | -| Parameter 1 of System.Collections.Generic.KeyValuePair<String,ResourceSet>.Deconstruct | parameter | 32 | -| Parameter 1 of System.Collections.Generic.Queue.MoveNext | parameter | 32 | -| Parameter 1 of System.Collections.Generic.Queue.TryDequeue | parameter | 32 | -| Parameter 1 of System.Collections.Generic.Queue.TryPeek | parameter | 32 | -| Parameter 1 of System.Collections.Generic.Queue<!0>.MoveNext | parameter | 32 | -| Parameter 1 of System.Collections.Generic.Stack<ConsoleKeyInfo>.TryPop | parameter | 32 | -| Parameter 1 of System.ComAwareWeakReference.ObjectToComWeakRef | parameter | 32 | -| Parameter 1 of System.ConsolePal.<TryGetCursorPosition>g__BufferUntil\|82_1 | parameter | 32 | -| Parameter 1 of System.ConsolePal.GetWindowSize | parameter | 32 | -| Parameter 1 of System.ConsolePal.TryGetCachedCursorPosition | parameter | 32 | -| Parameter 1 of System.ConsolePal.TryGetCursorPosition | parameter | 32 | -| Parameter 1 of System.Convert.Decode | parameter | 32 | -| Parameter 1 of System.CultureAwareComparer.IsWellKnownCultureAwareComparerCore | parameter | 32 | -| Parameter 1 of System.DateOnly.Deconstruct | parameter | 32 | -| Parameter 1 of System.DateOnly.TryParse | parameter | 32 | -| Parameter 1 of System.DateTime.Deconstruct | parameter | 32 | -| Parameter 1 of System.DateTime.GetDate | parameter | 32 | -| Parameter 1 of System.DateTime.GetTime | parameter | 32 | -| Parameter 1 of System.DateTime.GetTimePrecise | parameter | 32 | -| Parameter 1 of System.DateTime.TryParse | parameter | 32 | -| Parameter 1 of System.DateTimeFormat.PrepareFormatU | parameter | 32 | -| Parameter 1 of System.DateTimeOffset.Deconstruct | parameter | 32 | -| Parameter 1 of System.DateTimeOffset.TryParse | parameter | 32 | -| Parameter 1 of System.DateTimeParse.AdjustTimeMark | parameter | 32 | -| Parameter 1 of System.DateTimeParse.CheckDefaultDateTime | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ExpandPredefinedFormat | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDateOfDSN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDateOfNDS | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDateOfNNDS | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDateTimeNow | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfMN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfMNN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfNM | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfNN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfNNN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfNNY | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfYM | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfYMN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfYN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDayOfYNN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetDefaultYear | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetHebrewDayOfNM | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetMonthDayOrder | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetTimeOfN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetTimeOfNN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetTimeOfNNN | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetYearMonthDayOrder | parameter | 32 | -| Parameter 1 of System.DateTimeParse.GetYearMonthOrder | parameter | 32 | -| Parameter 1 of System.DateTimeParse.HandleTimeZone | parameter | 32 | -| Parameter 1 of System.DateTimeParse.Lex | parameter | 32 | -| Parameter 1 of System.DateTimeParse.MatchHebrewDigits | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ParseByFormat | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ParseFraction | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ParseISO8601 | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ParseSign | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ParseTimeZone | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ProcessDateTimeSuffix | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ProcessHebrewTerminalState | parameter | 32 | -| Parameter 1 of System.DateTimeParse.ProcessTerminalState | parameter | 32 | -| Parameter 1 of System.DateTimeParse.TryParseFormatO | parameter | 32 | -| Parameter 1 of System.DateTimeParse.TryParseFormatR | parameter | 32 | -| Parameter 1 of System.Decimal..ctor | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.DecAddSub | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.Div96ByConst | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.Div128By96 | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.Unscale | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecCmp | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecCmpSub | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecDiv | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecFromR4 | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecFromR8 | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecMod | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecModFull | parameter | 32 | -| Parameter 1 of System.Decimal.DecCalc.VarDecMul | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertFrom | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertTo | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Decimal.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Decimal.TryParse | parameter | 32 | -| Parameter 1 of System.DefaultBinder.ReorderArgumentArray | parameter | 32 | -| Parameter 1 of System.Diagnostics.Debug.Assert | parameter | 32 | -| Parameter 1 of System.Diagnostics.Debug.WriteIf | parameter | 32 | -| Parameter 1 of System.Diagnostics.Debug.WriteLineIf | parameter | 32 | -| Parameter 1 of System.Diagnostics.StackTrace.TryResolveStateMachineMethod | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.CreateActivityPathGuid | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventParameterInfo.GetMetadataLength | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventParameterInfo.GetMetadataLengthForTypeV2 | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventParameterInfo.GetMetadataLengthV2 | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventParameterInfo.GetTypeInfoFromType | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventPipeEventProvider.EventActivityIdControl | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventPipeEventProvider.EventWriteTransfer | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventPipeInternal.EventActivityIdControl | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventPipeInternal.EventPipeProviderConfigurationNative.MarshalToNative | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventProvider.EncodeObject | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventProvider.WriteEvent | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventProvider.WriteEventRaw | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventProviderImpl.EventWriteTransfer | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.EventSource.SetCurrentThreadActivityId | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.FieldMetadata.Encode | parameter | 32 | -| Parameter 1 of System.Diagnostics.Tracing.Statics.EncodeTags | parameter | 32 | -| Parameter 1 of System.Double.TryConvertFrom | parameter | 32 | -| Parameter 1 of System.Double.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Double.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Double.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Double.TryConvertTo | parameter | 32 | -| Parameter 1 of System.Double.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Double.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Double.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Double.TryParse | parameter | 32 | -| Parameter 1 of System.Enum.<ToString>g__HandleRareTypes\|55_0 | parameter | 32 | -| Parameter 1 of System.Enum.ToString | parameter | 32 | -| Parameter 1 of System.Enum.ToStringInlined | parameter | 32 | -| Parameter 1 of System.Enum.TryParse | parameter | 32 | -| Parameter 1 of System.Exception.<ToString>g__Write\|60_0 | parameter | 32 | -| Parameter 1 of System.Exception.GetHelpContext | parameter | 32 | -| Parameter 1 of System.Exception.GetStackTracesDeepCopy | parameter | 32 | -| Parameter 1 of System.Exception.RestoreDispatchState | parameter | 32 | -| Parameter 1 of System.Globalization.CalendarData.NormalizeDayOfWeek | parameter | 32 | -| Parameter 1 of System.Globalization.CultureData.GetLocaleName | parameter | 32 | -| Parameter 1 of System.Globalization.CultureData.IsValidCultureName | parameter | 32 | -| Parameter 1 of System.Globalization.CultureData.NormalizeCultureName | parameter | 32 | -| Parameter 1 of System.Globalization.DateTimeFormatInfo.TryParseHebrewNumber | parameter | 32 | -| Parameter 1 of System.Globalization.DateTimeFormatInfo.YearMonthAdjustment | parameter | 32 | -| Parameter 1 of System.Globalization.HebrewNumber.ParseByChar | parameter | 32 | -| Parameter 1 of System.Globalization.JapaneseCalendar.GetJapaneseEraStartDate | parameter | 32 | -| Parameter 1 of System.Globalization.Ordinal.EqualsIgnoreCase | parameter | 32 | -| Parameter 1 of System.Globalization.Ordinal.EqualsIgnoreCase_Scalar | parameter | 32 | -| Parameter 1 of System.Globalization.Ordinal.EqualsIgnoreCase_Vector128 | parameter | 32 | -| Parameter 1 of System.Globalization.TextInfo.AddNonLetter | parameter | 32 | -| Parameter 1 of System.Globalization.TextInfo.AddTitlecaseLetter | parameter | 32 | -| Parameter 1 of System.Globalization.TimeSpanParse.ParseExactLiteral | parameter | 32 | -| Parameter 1 of System.Globalization.TimeSpanParse.StringParser.ParseTime | parameter | 32 | -| Parameter 1 of System.Globalization.TimeSpanParse.TimeSpanRawInfo.ProcessToken | parameter | 32 | -| Parameter 1 of System.Globalization.TimeSpanParse.TryParseTimeSpanConstant | parameter | 32 | -| Parameter 1 of System.Globalization.UmAlQuraCalendar.ConvertGregorianToHijri | parameter | 32 | -| Parameter 1 of System.Guid.<TryParseExactD>g__TryCompatParsing\|33_0 | parameter | 32 | -| Parameter 1 of System.Guid.EqualsCore | parameter | 32 | -| Parameter 1 of System.Guid.TryParse | parameter | 32 | -| Parameter 1 of System.Guid.TryParseExactB | parameter | 32 | -| Parameter 1 of System.Guid.TryParseExactD | parameter | 32 | -| Parameter 1 of System.Guid.TryParseExactN | parameter | 32 | -| Parameter 1 of System.Guid.TryParseExactP | parameter | 32 | -| Parameter 1 of System.Guid.TryParseExactX | parameter | 32 | -| Parameter 1 of System.Guid.TryParseGuid | parameter | 32 | -| Parameter 1 of System.Guid.TryParseHex | parameter | 32 | -| Parameter 1 of System.Half.TryConvertFrom | parameter | 32 | -| Parameter 1 of System.Half.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Half.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Half.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Half.TryConvertTo | parameter | 32 | -| Parameter 1 of System.Half.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Half.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Half.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Half.TryParse | parameter | 32 | -| Parameter 1 of System.HashCode.Initialize | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator.ShouldIncludeEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator.ShouldRecurseIntoEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.DelegateEnumerator.TransformEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.FindPredicate.BeginInvoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.FindPredicate.EndInvoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.FindPredicate.Invoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.FindTransform.BeginInvoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.FindTransform.EndInvoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable.FindTransform.Invoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable<!0>.FindPredicate.Invoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerable<!0>.FindTransform.Invoke | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<DirectoryInfos>b__6_0 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<FileInfos>b__5_0 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<FileSystemInfos>b__7_0 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<UserDirectories>b__3_0 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<UserEntries>b__4_0 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<UserFiles>b__2_0 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass2_0.<UserFiles>b__1 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass3_0.<UserDirectories>b__1 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass4_0.<UserEntries>b__1 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass5_0.<FileInfos>b__1 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass6_0.<DirectoryInfos>b__1 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.<>c__DisplayClass7_0.<FileSystemInfos>b__1 | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerableFactory.NormalizeInputs | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerator.ShouldIncludeEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerator.ShouldRecurseIntoEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerator.TransformEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerator<!0>.ShouldIncludeEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerator<!0>.ShouldRecurseIntoEntry | parameter | 32 | -| Parameter 1 of System.IO.Enumeration.FileSystemEnumerator<!0>.TransformEntry | parameter | 32 | -| Parameter 1 of System.IO.FileSystem.<>c.<RemoveDirectoryRecursive>b__20_0 | parameter | 32 | -| Parameter 1 of System.IO.FileSystem.DirectoryExists | parameter | 32 | -| Parameter 1 of System.IO.FileSystem.FileExists | parameter | 32 | -| Parameter 1 of System.IO.FileSystemInfo.Init | parameter | 32 | -| Parameter 1 of System.IO.KeyParser.<ParseFromSingleChar>g__ControlAndDigitPressed\|8_2 | parameter | 32 | -| Parameter 1 of System.IO.KeyParser.<ParseFromSingleChar>g__UppercaseCharacter\|8_0 | parameter | 32 | -| Parameter 1 of System.IO.MemoryStream.TryGetBuffer | parameter | 32 | -| Parameter 1 of System.IO.Path.ExistsCore | parameter | 32 | -| Parameter 1 of System.IO.StdInReader.ReadKey | parameter | 32 | -| Parameter 1 of System.IO.SyncTextReader.ReadKey | parameter | 32 | -| Parameter 1 of System.IO.UnmanagedMemoryStreamWrapper.TryGetBuffer | parameter | 32 | -| Parameter 1 of System.Int16.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Int16.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Int16.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Int16.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Int16.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Int16.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Int16.TryParse | parameter | 32 | -| Parameter 1 of System.Int32.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Int32.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Int32.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Int32.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Int32.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Int32.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Int32.TryParse | parameter | 32 | -| Parameter 1 of System.Int64.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Int64.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Int64.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Int64.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Int64.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Int64.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Int64.TryParse | parameter | 32 | -| Parameter 1 of System.Int128.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Int128.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Int128.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Int128.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Int128.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Int128.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Int128.TryParse | parameter | 32 | -| Parameter 1 of System.IntPtr.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.IntPtr.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.IntPtr.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.IntPtr.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.IntPtr.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.IntPtr.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.IntPtr.TryParse | parameter | 32 | -| Parameter 1 of System.LocalAppContextSwitches.GetCachedSwitchValue | parameter | 32 | -| Parameter 1 of System.LocalAppContextSwitches.GetCachedSwitchValueInternal | parameter | 32 | -| Parameter 1 of System.Marvin.Block | parameter | 32 | -| Parameter 1 of System.MemoryExtensions.SliceLongerSpanToMatchShorterLength | parameter | 32 | -| Parameter 1 of System.MemoryExtensions.TryWrite | parameter | 32 | -| Parameter 1 of System.ModuleHandle.GetPEKind | parameter | 32 | -| Parameter 1 of System.Net.WebUtility.ConvertSmpToUtf16 | parameter | 32 | -| Parameter 1 of System.Net.WebUtility.GetNextUnicodeScalarValueFromUtf16Surrogate | parameter | 32 | -| Parameter 1 of System.Net.WebUtility.HtmlDecode | parameter | 32 | -| Parameter 1 of System.Net.WebUtility.HtmlEncode | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.Add | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.Compare | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.DivRem | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.DivRem32 | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.HeuristicDivide | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.Multiply | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.Pow2 | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.Pow10 | parameter | 32 | -| Parameter 1 of System.Number.BigInteger.SetValue | parameter | 32 | -| Parameter 1 of System.Number.DecimalToNumber | parameter | 32 | -| Parameter 1 of System.Number.DiyFp.CreateAndGetBoundaries | parameter | 32 | -| Parameter 1 of System.Number.DiyFp.Multiply | parameter | 32 | -| Parameter 1 of System.Number.DiyFp.Subtract | parameter | 32 | -| Parameter 1 of System.Number.ExtractFractionAndBiasedExponent | parameter | 32 | -| Parameter 1 of System.Number.FormatCurrency | parameter | 32 | -| Parameter 1 of System.Number.FormatFixed | parameter | 32 | -| Parameter 1 of System.Number.FormatGeneral | parameter | 32 | -| Parameter 1 of System.Number.FormatNumber | parameter | 32 | -| Parameter 1 of System.Number.FormatPercent | parameter | 32 | -| Parameter 1 of System.Number.FormatScientific | parameter | 32 | -| Parameter 1 of System.Number.GetFloatingPointMaxDigitsAndPrecision | parameter | 32 | -| Parameter 1 of System.Number.Grisu3.TryDigitGenShortest | parameter | 32 | -| Parameter 1 of System.Number.Grisu3.TryRunShortest | parameter | 32 | -| Parameter 1 of System.Number.Int32ToNumber | parameter | 32 | -| Parameter 1 of System.Number.Int64ToNumber | parameter | 32 | -| Parameter 1 of System.Number.Int128ToNumber | parameter | 32 | -| Parameter 1 of System.Number.NumberToString | parameter | 32 | -| Parameter 1 of System.Number.NumberToStringFormat | parameter | 32 | -| Parameter 1 of System.Number.ParseFormatSpecifier | parameter | 32 | -| Parameter 1 of System.Number.TryNumberBufferToBinaryInteger | parameter | 32 | -| Parameter 1 of System.Number.TryNumberToDecimal | parameter | 32 | -| Parameter 1 of System.Number.UInt32ToNumber | parameter | 32 | -| Parameter 1 of System.Number.UInt64ToNumber | parameter | 32 | -| Parameter 1 of System.Number.UInt128ToNumber | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Byte>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Byte>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Byte>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Byte>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Byte>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Byte>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Char>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Char>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Char>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Char>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Char>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Char>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Decimal>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Decimal>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Decimal>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Decimal>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Decimal>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Decimal>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Double>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Double>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Double>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Double>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Double>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Double>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Half>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Half>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Half>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Half>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Half>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Half>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int16>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int16>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int16>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int16>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int16>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int16>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int32>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int32>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int32>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int32>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int32>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int32>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int64>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int64>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int64>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int64>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int64>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int64>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int128>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int128>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int128>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int128>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int128>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Int128>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<IntPtr>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<IntPtr>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<IntPtr>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<IntPtr>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<IntPtr>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<IntPtr>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<NFloat>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<NFloat>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<NFloat>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<NFloat>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<NFloat>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<NFloat>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<SByte>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<SByte>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<SByte>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<SByte>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<SByte>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<SByte>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Single>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Single>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Single>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Single>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Single>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<Single>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt16>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt16>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt16>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt16>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt16>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt16>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt32>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt32>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt32>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt32>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt32>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt32>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt64>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt64>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt64>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt64>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt64>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt64>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt128>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt128>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt128>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt128>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt128>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UInt128>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UIntPtr>.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UIntPtr>.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UIntPtr>.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UIntPtr>.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UIntPtr>.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Numerics.INumberBase<UIntPtr>.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.Equals | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.Invert | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.Lerp | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.op_Addition | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.op_Equality | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.op_Inequality | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.op_Multiply | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Impl.op_Subtraction | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix3x2.Invert | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Decompose | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.<Invert>g__SoftwareFallback\|64_2 | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.<Invert>g__SseImpl\|64_0 | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateBillboard | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateConstrainedBillboard | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateLookTo | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateLookToLeftHanded | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateRotationX | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateRotationY | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateRotationZ | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateScale | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateShadow | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.CreateWorld | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.Decompose | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.Equals | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.Init | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.Invert | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.Lerp | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.Transform | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.op_Addition | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.op_Equality | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.op_Inequality | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.op_Multiply | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Impl.op_Subtraction | parameter | 32 | -| Parameter 1 of System.Numerics.Matrix4x4.Invert | parameter | 32 | -| Parameter 1 of System.Numerics.Vector2.Transform | parameter | 32 | -| Parameter 1 of System.Numerics.Vector2.TransformNormal | parameter | 32 | -| Parameter 1 of System.Numerics.Vector3.TransformNormal | parameter | 32 | -| Parameter 1 of System.Numerics.Vector4.Transform | parameter | 32 | -| Parameter 1 of System.Numerics.Vector.StoreUnsafe | parameter | 32 | -| Parameter 1 of System.Numerics.Vector.Widen | parameter | 32 | -| Parameter 1 of System.OrdinalComparer.IsWellKnownOrdinalComparerCore | parameter | 32 | -| Parameter 1 of System.PackedSpanHelpers.ComputeFirstIndex | parameter | 32 | -| Parameter 1 of System.PackedSpanHelpers.ComputeFirstIndexOverlapped | parameter | 32 | -| Parameter 1 of System.ParseNumbers.EatWhiteSpace | parameter | 32 | -| Parameter 1 of System.ReadOnlyMemory.GetObjectStartLength | parameter | 32 | -| Parameter 1 of System.ReadOnlyMemory<!0>.GetObjectStartLength | parameter | 32 | -| Parameter 1 of System.ReadOnlyMemory<Char>.GetObjectStartLength | parameter | 32 | -| Parameter 1 of System.ReadOnlySpan..ctor | parameter | 32 | -| Parameter 1 of System.ReadOnlySpan<!0>..ctor | parameter | 32 | -| Parameter 1 of System.ReadOnlySpan<Byte>..ctor | parameter | 32 | -| Parameter 1 of System.ReadOnlySpan<Char>..ctor | parameter | 32 | -| Parameter 1 of System.ReadOnlySpan<Int32>..ctor | parameter | 32 | -| Parameter 1 of System.ReadOnlySpan<Object>..ctor | parameter | 32 | -| Parameter 1 of System.Reflection.AssemblyNameParser.GetNextToken | parameter | 32 | -| Parameter 1 of System.Reflection.AssemblyNameParser.RecordNewSeenOrThrow | parameter | 32 | -| Parameter 1 of System.Reflection.Binder.ReorderArgumentArray | parameter | 32 | -| Parameter 1 of System.Reflection.ConstructorInvoker.CheckArgument | parameter | 32 | -| Parameter 1 of System.Reflection.CustomAttribute.FilterCustomAttributeRecord | parameter | 32 | -| Parameter 1 of System.Reflection.CustomAttribute.GetPropertyOrFieldData | parameter | 32 | -| Parameter 1 of System.Reflection.CustomAttribute.ParseAttributeUsageAttribute | parameter | 32 | -| Parameter 1 of System.Reflection.CustomAttributeEncodedArgument.ParseAttributeArguments | parameter | 32 | -| Parameter 1 of System.Reflection.Emit.DynamicResolver.GetCodeInfo | parameter | 32 | -| Parameter 1 of System.Reflection.Emit.DynamicResolver.GetJitContext | parameter | 32 | -| Parameter 1 of System.Reflection.Emit.RuntimeMethodBuilder.GetLocalSignature | parameter | 32 | -| Parameter 1 of System.Reflection.Emit.RuntimeModuleBuilder.GetPEKind | parameter | 32 | -| Parameter 1 of System.Reflection.Emit.SignatureHelper.InternalGetSignature | parameter | 32 | -| Parameter 1 of System.Reflection.InvokeUtils.TryConvertPointer | parameter | 32 | -| Parameter 1 of System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata | parameter | 32 | -| Parameter 1 of System.Reflection.Metadata.AssemblyExtensions.TryGetRawMetadata | parameter | 32 | -| Parameter 1 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 1 of System.Reflection.MetadataImport.GetScopeProps | parameter | 32 | -| Parameter 1 of System.Reflection.MetadataImport._GetScopeProps | parameter | 32 | -| Parameter 1 of System.Reflection.MethodBaseInvoker.TryByRefFastPath | parameter | 32 | -| Parameter 1 of System.Reflection.MethodInvoker.CheckArgument | parameter | 32 | -| Parameter 1 of System.Reflection.MethodInvokerCommon.DetermineStrategy_Obj4Args | parameter | 32 | -| Parameter 1 of System.Reflection.MethodInvokerCommon.DetermineStrategy_ObjSpanArgs | parameter | 32 | -| Parameter 1 of System.Reflection.MethodInvokerCommon.DetermineStrategy_RefArgs | parameter | 32 | -| Parameter 1 of System.Reflection.MethodInvokerCommon.Initialize | parameter | 32 | -| Parameter 1 of System.Reflection.Module.GetPEKind | parameter | 32 | -| Parameter 1 of System.Reflection.RuntimeAssembly.GetVersion | parameter | 32 | -| Parameter 1 of System.Reflection.RuntimeAssembly.InternalLoad | parameter | 32 | -| Parameter 1 of System.Reflection.RuntimeCustomAttributeData.GetCombinedList | parameter | 32 | -| Parameter 1 of System.Reflection.RuntimeModule.GetPEKind | parameter | 32 | -| Parameter 1 of System.Reflection.TypeNameParser.AssemblyQualifiedTypeName.ResolveType | parameter | 32 | -| Parameter 1 of System.Reflection.TypeNameParser.GenericTypeName.ResolveType | parameter | 32 | -| Parameter 1 of System.Reflection.TypeNameParser.ModifierTypeName.ResolveType | parameter | 32 | -| Parameter 1 of System.Reflection.TypeNameParser.NamespaceTypeName.ResolveType | parameter | 32 | -| Parameter 1 of System.Reflection.TypeNameParser.NestedNamespaceTypeName.ResolveType | parameter | 32 | -| Parameter 1 of System.Reflection.TypeNameParser.TypeName.ResolveType | parameter | 32 | -| Parameter 1 of System.Resolver.GetCodeInfo | parameter | 32 | -| Parameter 1 of System.Resolver.GetJitContext | parameter | 32 | -| Parameter 1 of System.Resources.ManifestBasedResourceGroveler.GetNeutralResourcesLanguage | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.MoveNext | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.GetStateMachineBox | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetException | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetNotificationForWaitCompletion | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.GetStateMachineBox | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.SetException | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.SetNotificationForWaitCompletion | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Boolean>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Boolean>.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Byte[]>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Byte[]>.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<String>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<String>.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<String[]>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<String[]>.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.SetException | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.SetNotificationForWaitCompletion | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder<Int32>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder<Int32>.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable.ConfiguredValueTaskAwaiter..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.GetStateMachineBox | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.SetException | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<!0>.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<!0>.GetStateMachineBox | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<!0>.SetException | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<Int32>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<Int32>.Start | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<VoidTaskResult>.AwaitOnCompleted | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<VoidTaskResult>.SetException | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.QCallAssembly..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.QCallModule..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.QCallTypeHandle..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.RuntimeHelpers.Box | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.StackCrawlMarkHandle..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.StringHandleOnStack..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.Unsafe.AreSame | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.Unsafe.ByteOffset | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.Unsafe.Copy | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.Unsafe.CopyBlock | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.Unsafe.IsAddressLessThan | parameter | 32 | -| Parameter 1 of System.Runtime.CompilerServices.ValueTaskAwaiter..ctor | parameter | 32 | -| Parameter 1 of System.Runtime.DependentHandle.InternalGetTargetAndDependent | parameter | 32 | -| Parameter 1 of System.Runtime.DependentHandle.UnsafeGetTargetAndDependent | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IBindCtx.EnumObjectParam | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IBindCtx.GetBindOptions | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IBindCtx.GetRunningObjectTable | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IBindCtx.SetBindOptions | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IConnectionPoint.EnumConnections | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IConnectionPoint.GetConnectionInterface | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IConnectionPoint.GetConnectionPointContainer | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IConnectionPointContainer.EnumConnectionPoints | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IConnectionPointContainer.FindConnectionPoint | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints.Clone | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IEnumConnections.Clone | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IEnumMoniker.Clone | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IEnumString.Clone | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IMoniker.GetClassID | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IMoniker.GetSizeMax | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IMoniker.Hash | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IMoniker.Inverse | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IMoniker.IsSystemMoniker | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IPersistFile.GetClassID | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IPersistFile.GetCurFile | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IRunningObjectTable.EnumRunning | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IStream.Clone | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.IStream.Stat | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetContainingTypeLib | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetCustData | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetTypeAttr | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetTypeComp | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetTypeFlags | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetTypeKind | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetContainingTypeLib | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetTypeAttr | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetTypeComp | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetCustData | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetLibAttr | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetTypeComp | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetTypeInfoOfGuid | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetLibAttr | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetTypeComp | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetTypeInfoOfGuid | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComWrappers.CallICustomQueryInterface | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComWrappers.GetIUnknownImpl | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComWrappers.TryGetComInstance | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComWrappers.TryGetComInstanceInternal | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ComWrappers.TryGetObject | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ICustomQueryInterface.GetInterface | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.Marshal.QueryInterface | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.Marshalling.ArrayMarshaller.AllocateContainerForUnmanagedElements | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller.AllocateContainerForUnmanagedElements | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller.UnmanagedToManagedOut.AllocateContainerForUnmanagedElements | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.Marshalling.SpanMarshaller.AllocateContainerForUnmanagedElements | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.MemoryMarshal.TryGetArray | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.MemoryMarshal.TryGetMemoryManager | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.MemoryMarshal.TryGetString | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.MemoryMarshal.TryRead | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.MemoryMarshal.TryWrite | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.MemoryMarshal.Write | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertFrom | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertTo | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NFloat.TryParse | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.NativeLibrary.TryLoad | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.CreateReferenceTrackingHandle | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.UnhandledExceptionPropagationHandler.EndInvoke | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.SafeBuffer.AcquirePointer | parameter | 32 | -| Parameter 1 of System.Runtime.InteropServices.SafeHandle.DangerousAddRef | parameter | 32 | -| Parameter 1 of System.Runtime.Intrinsics.Vector64.StoreUnsafe | parameter | 32 | -| Parameter 1 of System.Runtime.Intrinsics.Vector128.StoreLowerUnsafe | parameter | 32 | -| Parameter 1 of System.Runtime.Intrinsics.Vector128.StoreUnsafe | parameter | 32 | -| Parameter 1 of System.Runtime.Intrinsics.Vector256.StoreUnsafe | parameter | 32 | -| Parameter 1 of System.Runtime.Intrinsics.Vector512.StoreUnsafe | parameter | 32 | -| Parameter 1 of System.Runtime.Loader.AssemblyLoadContext.StartAssemblyLoad | parameter | 32 | -| Parameter 1 of System.Runtime.MemoryFailPoint.CheckForAvailableMemory | parameter | 32 | -| Parameter 1 of System.Runtime.Serialization.SerializationInfo.ThrowIfDeserializationInProgress | parameter | 32 | -| Parameter 1 of System.RuntimeType.CheckValue | parameter | 32 | -| Parameter 1 of System.RuntimeType.FilterHelper | parameter | 32 | -| Parameter 1 of System.RuntimeType.GetGUID | parameter | 32 | -| Parameter 1 of System.RuntimeType.RuntimeTypeCache.ConstructName | parameter | 32 | -| Parameter 1 of System.RuntimeType.RuntimeTypeCache.GetMemberCache | parameter | 32 | -| Parameter 1 of System.RuntimeType.RuntimeTypeCache.GetMemberList | parameter | 32 | -| Parameter 1 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache.AddSpecialInterface | parameter | 32 | -| Parameter 1 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache.Insert | parameter | 32 | -| Parameter 1 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache<!0>.AddSpecialInterface | parameter | 32 | -| Parameter 1 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache<!0>.Insert | parameter | 32 | -| Parameter 1 of System.RuntimeType.SplitName | parameter | 32 | -| Parameter 1 of System.RuntimeType.TryChangeType | parameter | 32 | -| Parameter 1 of System.RuntimeType.TryChangeTypeSpecial | parameter | 32 | -| Parameter 1 of System.RuntimeType.TryGetByRefElementType | parameter | 32 | -| Parameter 1 of System.RuntimeTypeHandle.CopyRuntimeTypeHandles | parameter | 32 | -| Parameter 1 of System.RuntimeTypeHandle.GetActivationInfo | parameter | 32 | -| Parameter 1 of System.SByte.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.SByte.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.SByte.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.SByte.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.SByte.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.SByte.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.SByte.TryParse | parameter | 32 | -| Parameter 1 of System.Security.SecureString.AcquireSpan | parameter | 32 | -| Parameter 1 of System.Single.TryConvertFrom | parameter | 32 | -| Parameter 1 of System.Single.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.Single.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.Single.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.Single.TryConvertTo | parameter | 32 | -| Parameter 1 of System.Single.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.Single.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.Single.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.Single.TryParse | parameter | 32 | -| Parameter 1 of System.Span..ctor | parameter | 32 | -| Parameter 1 of System.Span<!0>..ctor | parameter | 32 | -| Parameter 1 of System.Span<!1>..ctor | parameter | 32 | -| Parameter 1 of System.Span<Boolean>..ctor | parameter | 32 | -| Parameter 1 of System.Span<Byte>..ctor | parameter | 32 | -| Parameter 1 of System.Span<Char>..ctor | parameter | 32 | -| Parameter 1 of System.Span<GuidResult>..ctor | parameter | 32 | -| Parameter 1 of System.Span<Int32>..ctor | parameter | 32 | -| Parameter 1 of System.Span<Object>..ctor | parameter | 32 | -| Parameter 1 of System.SpanHelpers.CommonPrefixLength | parameter | 32 | -| Parameter 1 of System.SpanHelpers.ComputeFirstIndex | parameter | 32 | -| Parameter 1 of System.SpanHelpers.Replace | parameter | 32 | -| Parameter 1 of System.SpanHelpers.ReplaceValueType | parameter | 32 | -| Parameter 1 of System.SpanHelpers.SequenceEqual | parameter | 32 | -| Parameter 1 of System.String.Create | parameter | 32 | -| Parameter 1 of System.String.MakeSeparatorListVectorized | parameter | 32 | -| Parameter 1 of System.String.TryGetTrailByte | parameter | 32 | -| Parameter 1 of System.StringComparer.IsWellKnownCultureAwareComparer | parameter | 32 | -| Parameter 1 of System.StringComparer.IsWellKnownCultureAwareComparerCore | parameter | 32 | -| Parameter 1 of System.StringComparer.IsWellKnownOrdinalComparer | parameter | 32 | -| Parameter 1 of System.StringComparer.IsWellKnownOrdinalComparerCore | parameter | 32 | -| Parameter 1 of System.StubHelpers.HandleMarshaler.ConvertSafeHandleToNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdFixedArrayMarshaler.ClearNativeContents | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdFixedArrayMarshaler.ConvertContentsToManaged | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdFixedArrayMarshaler.ConvertContentsToNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdFixedArrayMarshaler.ConvertSpaceToManaged | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdFixedArrayMarshaler.ConvertSpaceToNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdNativeArrayMarshaler.ClearNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdNativeArrayMarshaler.ClearNativeContents | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdNativeArrayMarshaler.ConvertContentsToManaged | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdNativeArrayMarshaler.ConvertContentsToNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdNativeArrayMarshaler.ConvertSpaceToManaged | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdNativeArrayMarshaler.ConvertSpaceToNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdRefCustomMarshaler.ClearManaged | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdRefCustomMarshaler.ClearNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdRefCustomMarshaler.ConvertContentsToManaged | parameter | 32 | -| Parameter 1 of System.StubHelpers.MngdRefCustomMarshaler.ConvertContentsToNative | parameter | 32 | -| Parameter 1 of System.StubHelpers.StubHelpers.SafeHandleAddRef | parameter | 32 | -| Parameter 1 of System.TermInfo.DatabaseFactory.TryOpen | parameter | 32 | -| Parameter 1 of System.TermInfo.ParameterizedStrings.EvaluateInternal | parameter | 32 | -| Parameter 1 of System.TermInfo.ParameterizedStrings.GetDynamicOrStaticVariables | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ChangeCase | parameter | 32 | -| Parameter 1 of System.Text.Ascii.Equals | parameter | 32 | -| Parameter 1 of System.Text.Ascii.EqualsIgnoreCase | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader.EqualAndAscii256 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader.EqualAndAscii512 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader<!0,!0>.EqualAndAscii256 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader<!0,!0>.EqualAndAscii512 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader<!0,!1>.EqualAndAscii256 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader<!0,!1>.EqualAndAscii512 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader<Byte,UInt16>.EqualAndAscii256 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ILoader<Byte,UInt16>.EqualAndAscii512 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.PlainLoader.EqualAndAscii256 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.PlainLoader.EqualAndAscii512 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ToLowerInPlace | parameter | 32 | -| Parameter 1 of System.Text.Ascii.ToUpperInPlace | parameter | 32 | -| Parameter 1 of System.Text.Ascii.WideningLoader.EqualAndAscii256 | parameter | 32 | -| Parameter 1 of System.Text.Ascii.WideningLoader.EqualAndAscii512 | parameter | 32 | -| Parameter 1 of System.Text.CompositeFormat.<TryParseLiterals>g__TryMoveNext\|12_0 | parameter | 32 | -| Parameter 1 of System.Text.Rune.DecodeFromUtf8 | parameter | 32 | -| Parameter 1 of System.Text.Rune.DecodeFromUtf16 | parameter | 32 | -| Parameter 1 of System.Text.Rune.DecodeLastFromUtf8 | parameter | 32 | -| Parameter 1 of System.Text.Rune.DecodeLastFromUtf16 | parameter | 32 | -| Parameter 1 of System.Text.Rune.TryCreate | parameter | 32 | -| Parameter 1 of System.Text.StringBuilder.<AppendFormatHelper>g__MoveNext\|116_0 | parameter | 32 | -| Parameter 1 of System.Text.StringBuilder.Append | parameter | 32 | -| Parameter 1 of System.Text.StringBuilder.AppendJoinCore | parameter | 32 | -| Parameter 1 of System.Text.StringBuilder.AppendLine | parameter | 32 | -| Parameter 1 of System.Text.StringBuilder.AppendWithExpansion | parameter | 32 | -| Parameter 1 of System.Text.StringBuilder.ChunkEnumerator.ManyChunkInfo.MoveNext | parameter | 32 | -| Parameter 1 of System.Text.StringBuilder.ReplaceInPlaceAtChunk | parameter | 32 | -| Parameter 1 of System.Text.Unicode.Utf8.TryWrite | parameter | 32 | -| Parameter 1 of System.Text.Unicode.Utf8Utility.GetIndexOfFirstInvalidUtf8Sequence | parameter | 32 | -| Parameter 1 of System.Text.UnicodeUtility.GetUtf16SurrogatesFromSupplementaryPlaneScalar | parameter | 32 | -| Parameter 1 of System.Text.ValueStringBuilder.<AppendFormatHelper>g__MoveNext\|0_0 | parameter | 32 | -| Parameter 1 of System.Threading.EventWaitHandle.OpenExistingWorker | parameter | 32 | -| Parameter 1 of System.Threading.EventWaitHandle.TryOpenExisting | parameter | 32 | -| Parameter 1 of System.Threading.LazyInitializer.EnsureInitialized | parameter | 32 | -| Parameter 1 of System.Threading.LazyInitializer.EnsureInitializedCore | parameter | 32 | -| Parameter 1 of System.Threading.Monitor.Enter | parameter | 32 | -| Parameter 1 of System.Threading.Monitor.ReliableEnter | parameter | 32 | -| Parameter 1 of System.Threading.Monitor.TryEnter | parameter | 32 | -| Parameter 1 of System.Threading.Mutex.OpenExistingWorker | parameter | 32 | -| Parameter 1 of System.Threading.Mutex.TryOpenExisting | parameter | 32 | -| Parameter 1 of System.Threading.PeriodicTimer.TryGetMilliseconds | parameter | 32 | -| Parameter 1 of System.Threading.PortableThreadPool.GetAvailableThreads | parameter | 32 | -| Parameter 1 of System.Threading.PortableThreadPool.GetMaxThreads | parameter | 32 | -| Parameter 1 of System.Threading.PortableThreadPool.GetMinThreads | parameter | 32 | -| Parameter 1 of System.Threading.PortableThreadPool.WorkerThread.WorkerDoWork | parameter | 32 | -| Parameter 1 of System.Threading.ReaderWriterLockSlim.LazyCreateEvent | parameter | 32 | -| Parameter 1 of System.Threading.Semaphore.OpenExistingWorker | parameter | 32 | -| Parameter 1 of System.Threading.Semaphore.TryOpenExisting | parameter | 32 | -| Parameter 1 of System.Threading.SpinLock.Enter | parameter | 32 | -| Parameter 1 of System.Threading.SpinLock.TryEnter | parameter | 32 | -| Parameter 1 of System.Threading.Tasks.Task.AddToList | parameter | 32 | -| Parameter 1 of System.Threading.Tasks.Task.CreationOptionsFromContinuationOptions | parameter | 32 | -| Parameter 1 of System.Threading.Tasks.Task.ExecuteWithThreadLocal | parameter | 32 | -| Parameter 1 of System.Threading.Tasks.Task.WhenAllPromise.<Invoke>g__HandleTask\|3_0 | parameter | 32 | -| Parameter 1 of System.Threading.ThreadPool.GetAvailableThreads | parameter | 32 | -| Parameter 1 of System.Threading.ThreadPool.GetMaxThreads | parameter | 32 | -| Parameter 1 of System.Threading.ThreadPool.GetMinThreads | parameter | 32 | -| Parameter 1 of System.Threading.ThreadPool.GetNextConfigUInt32Value | parameter | 32 | -| Parameter 1 of System.Threading.ThreadPoolWorkQueue.WorkStealingQueue.TrySteal | parameter | 32 | -| Parameter 1 of System.TimeOnly.Deconstruct | parameter | 32 | -| Parameter 1 of System.TimeOnly.TryParse | parameter | 32 | -| Parameter 1 of System.TimeSpan.TryParse | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.AdjustmentRule.AdjustDaylightDeltaToExpectedRange | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.GetAlternativeId | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.GetDaylightDisplayName | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.GetStandardDisplayName | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.NormalizeAdjustmentRuleOffset | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.StringSerializer.SerializeSubstitute | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.StringSerializer.SerializeTransitionTime | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParseJulianDay | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParseMDateRule | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParsePosixDate | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParsePosixDateTime | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParsePosixName | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParsePosixOffset | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParsePosixString | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParsePosixTime | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TZif_ParseRaw | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryConvertIanaIdToWindowsId | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryConvertWindowsIdToIanaId | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryFindSystemTimeZoneById | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryGetLocalTzFile | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryGetTimeZone | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryGetTimeZoneFromLocalMachine | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryGetTimeZoneFromLocalMachineCore | parameter | 32 | -| Parameter 1 of System.TimeZoneInfo.TryLoadTzFile | parameter | 32 | -| Parameter 1 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 1 of System.Type.GetEnumData | parameter | 32 | -| Parameter 1 of System.UInt16.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.UInt16.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.UInt16.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.UInt16.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.UInt16.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.UInt16.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.UInt16.TryParse | parameter | 32 | -| Parameter 1 of System.UInt32.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.UInt32.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.UInt32.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.UInt32.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.UInt32.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.UInt32.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.UInt32.TryParse | parameter | 32 | -| Parameter 1 of System.UInt64.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.UInt64.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.UInt64.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.UInt64.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.UInt64.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.UInt64.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.UInt64.TryParse | parameter | 32 | -| Parameter 1 of System.UInt128.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.UInt128.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.UInt128.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.UInt128.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.UInt128.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.UInt128.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.UInt128.TryParse | parameter | 32 | -| Parameter 1 of System.UIntPtr.TryConvertFromChecked | parameter | 32 | -| Parameter 1 of System.UIntPtr.TryConvertFromSaturating | parameter | 32 | -| Parameter 1 of System.UIntPtr.TryConvertFromTruncating | parameter | 32 | -| Parameter 1 of System.UIntPtr.TryConvertToChecked | parameter | 32 | -| Parameter 1 of System.UIntPtr.TryConvertToSaturating | parameter | 32 | -| Parameter 1 of System.UIntPtr.TryConvertToTruncating | parameter | 32 | -| Parameter 1 of System.UIntPtr.TryParse | parameter | 32 | -| Parameter 1 of System.Version.TryParse | parameter | 32 | -| Parameter 1 of System.WeakReference.TryGetTarget | parameter | 32 | -| Parameter 1 of System.WeakReference<AssemblyLoadContext>.TryGetTarget | parameter | 32 | -| Parameter 1 of System.WeakReference<CounterGroup>.TryGetTarget | parameter | 32 | -| Parameter 1 of System.WeakReference<EventProvider>.TryGetTarget | parameter | 32 | -| Parameter 1 of System.WeakReference<EventSource>.TryGetTarget | parameter | 32 | -| Parameter 1 of System.__DTString.GetRegularToken | parameter | 32 | -| Parameter 1 of delegate* managed<IntPtr,Byte&,PortableTailCallFrame*,Void> | parameter | 32 | -| Parameter 2 of Interop.Globalization.GetJapaneseEraStartDate | parameter | 32 | -| Parameter 2 of Interop.Globalization.GetLocaleInfoGroupingSizes | parameter | 32 | -| Parameter 2 of Interop.Globalization.GetLocaleInfoInt | parameter | 32 | -| Parameter 2 of Interop.Kernel32.ReleaseSemaphore | parameter | 32 | -| Parameter 2 of Microsoft.Win32.SafeHandles.SafeFileHandle.FStatCheckIO | parameter | 32 | -| Parameter 2 of Microsoft.Win32.SafeHandles.SafeFileHandle.OpenReadOnly | parameter | 32 | -| Parameter 2 of System.Boolean.TryFormat | parameter | 32 | -| Parameter 2 of System.Boolean.TryParse | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeBitmap | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeBitmap256 | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeFirstIndexOverlapped | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorized | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.IndexOfAnyVectorizedAnyByte | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorized | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.LastIndexOfAnyVectorizedAnyByte | parameter | 32 | -| Parameter 2 of System.Buffers.IndexOfAnyAsciiSearcher.TryComputeBitmap | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.ContainsMask16Chars | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.ContainsMask32CharsAvx2 | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.IndexOfAny | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.IndexOfAnyExcept | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.LastIndexOfAny | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.LastIndexOfAnyExcept | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.ProbabilisticIndexOfAny | parameter | 32 | -| Parameter 2 of System.Buffers.ProbabilisticMap.ProbabilisticLastIndexOfAny | parameter | 32 | -| Parameter 2 of System.Buffers.SearchValues.TryGetSingleRange | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Base64.<DecodeFromUtf8>g__InvalidDataFallback\|15_0 | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Base64.DecodeFromUtf8 | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Base64.DecodeWithWhiteSpaceBlockwise | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Base64.EncodeToUtf8 | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Base64.EncodeToUtf8InPlace | parameter | 32 | -| Parameter 2 of System.Buffers.Text.FormattingHelpers.TryFormat | parameter | 32 | -| Parameter 2 of System.Buffers.Text.ParserHelpers.TryParseThrowFormatException | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Formatter.TryFormat | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Formatter.TryFormatDateTimeL | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TimeSpanSplitter.ParseComponent | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParse | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseByteD | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseByteN | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseByteX | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseDateTimeG | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseDateTimeOffsetDefault | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseDateTimeOffsetO | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseDateTimeOffsetR | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseGuidCore | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseGuidN | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseInt16D | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseInt16N | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseInt32D | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseInt32N | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseInt64D | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseInt64N | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseNormalAsFloatingPoint | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseNumber | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseSByteD | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseSByteN | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanBigG | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanC | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanFraction | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseTimeSpanLittleG | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt16D | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt16N | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt16X | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt32D | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt32N | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt32X | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt64D | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt64N | parameter | 32 | -| Parameter 2 of System.Buffers.Text.Utf8Parser.TryParseUInt64X | parameter | 32 | -| Parameter 2 of System.Byte.TryFormat | parameter | 32 | -| Parameter 2 of System.Byte.TryParse | parameter | 32 | -| Parameter 2 of System.Byte.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Byte.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Byte.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Byte.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Char.TryFormat | parameter | 32 | -| Parameter 2 of System.Char.TryParse | parameter | 32 | -| Parameter 2 of System.Char.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Char.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Char.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Char.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Collections.Concurrent.ConcurrentQueue.SnapForObservation | parameter | 32 | -| Parameter 2 of System.Collections.Concurrent.ConcurrentQueue<!0>.SnapForObservation | parameter | 32 | -| Parameter 2 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue.EnqueueSlow | parameter | 32 | -| Parameter 2 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue<!0>.EnqueueSlow | parameter | 32 | -| Parameter 2 of System.Collections.DictionaryEntry.Deconstruct | parameter | 32 | -| Parameter 2 of System.Collections.Generic.CollectionExtensions.Remove | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary.CollectionsMarshalHelper.GetValueRefOrAddDefault | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary.Remove | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<!0,!1>.CollectionsMarshalHelper.GetValueRefOrAddDefault | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Int32,Boolean>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Int32,ChannelInfo>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Int32,CultureInfo>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Int32,HashSet<Token>>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Int32,String>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Int32,Task>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<MemberInfo,NullabilityState>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Module,NotAnnotatedStatus>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Object,Object>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<ReadOnlyMemory<Char>,ConsoleKeyInfo>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,Assembly>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,Boolean>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,CultureData>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,CultureInfo>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,Int32>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,IntPtr>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,IsolatedComponentLoadContext>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,List<Int32>>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,List<RuntimePropertyInfo>>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,LocalDataStoreSlot>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,Object>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,ResourceLocator>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,ResourceSet>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,String>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,TimeZoneInfo>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<String,Type>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Type,AttributeUsageAttribute>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<Type,TraceLoggingTypeInfo>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<UInt64,Char>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.Dictionary<UInt64,String>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.HashSet.AddIfNotPresent | parameter | 32 | -| Parameter 2 of System.Collections.Generic.HashSet.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.HashSet<!0>.AddIfNotPresent | parameter | 32 | -| Parameter 2 of System.Collections.Generic.IDictionary.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.IDictionary<!0,!1>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.IDictionary<String,String>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.IReadOnlyDictionary.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.IReadOnlyDictionary<!0,!1>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Collections.Generic.KeyValuePair.Deconstruct | parameter | 32 | -| Parameter 2 of System.Collections.Generic.KeyValuePair<String,ResourceSet>.Deconstruct | parameter | 32 | -| Parameter 2 of System.Collections.Generic.ValueListBuilder.TryCopyTo | parameter | 32 | -| Parameter 2 of System.Collections.Generic.ValueListBuilder<!0>.TryCopyTo | parameter | 32 | -| Parameter 2 of System.Collections.ObjectModel.ReadOnlyDictionary.TryGetValue | parameter | 32 | -| Parameter 2 of System.ComponentModel.DefaultValueAttribute.ctor>g__TryConvertFromInvariantString\|2_0 | parameter | 32 | -| Parameter 2 of System.ConsolePal.<TryGetCursorPosition>g__BufferUntil\|82_1 | parameter | 32 | -| Parameter 2 of System.Convert.CopyToTempBufferWithoutWhiteSpace | parameter | 32 | -| Parameter 2 of System.Convert.TryDecodeFromUtf16 | parameter | 32 | -| Parameter 2 of System.Convert.TryFromBase64Chars | parameter | 32 | -| Parameter 2 of System.Convert.TryFromBase64String | parameter | 32 | -| Parameter 2 of System.Convert.TryToBase64Chars | parameter | 32 | -| Parameter 2 of System.CultureAwareComparer.IsWellKnownCultureAwareComparerCore | parameter | 32 | -| Parameter 2 of System.CurrentSystemTimeZone.GetUtcOffsetFromUniversalTime | parameter | 32 | -| Parameter 2 of System.DateOnly.Deconstruct | parameter | 32 | -| Parameter 2 of System.DateOnly.TryFormat | parameter | 32 | -| Parameter 2 of System.DateOnly.TryFormatCore | parameter | 32 | -| Parameter 2 of System.DateOnly.TryParse | parameter | 32 | -| Parameter 2 of System.DateOnly.TryParseExact | parameter | 32 | -| Parameter 2 of System.DateTime.Deconstruct | parameter | 32 | -| Parameter 2 of System.DateTime.GetDate | parameter | 32 | -| Parameter 2 of System.DateTime.GetTime | parameter | 32 | -| Parameter 2 of System.DateTime.GetTimePrecise | parameter | 32 | -| Parameter 2 of System.DateTime.TryAddTicks | parameter | 32 | -| Parameter 2 of System.DateTime.TryFormat | parameter | 32 | -| Parameter 2 of System.DateTime.TryParse | parameter | 32 | -| Parameter 2 of System.DateTimeFormat.FormatCustomizedRoundripTimeZone | parameter | 32 | -| Parameter 2 of System.DateTimeFormat.ParseQuoteString | parameter | 32 | -| Parameter 2 of System.DateTimeFormat.TryFormat | parameter | 32 | -| Parameter 2 of System.DateTimeFormat.TryFormatS | parameter | 32 | -| Parameter 2 of System.DateTimeOffset.Deconstruct | parameter | 32 | -| Parameter 2 of System.DateTimeOffset.TryFormat | parameter | 32 | -| Parameter 2 of System.DateTimeOffset.TryParse | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ExpandPredefinedFormat | parameter | 32 | -| Parameter 2 of System.DateTimeParse.GetDayOfMN | parameter | 32 | -| Parameter 2 of System.DateTimeParse.GetDayOfNM | parameter | 32 | -| Parameter 2 of System.DateTimeParse.GetDayOfNN | parameter | 32 | -| Parameter 2 of System.DateTimeParse.Lex | parameter | 32 | -| Parameter 2 of System.DateTimeParse.MatchAbbreviatedDayName | parameter | 32 | -| Parameter 2 of System.DateTimeParse.MatchAbbreviatedMonthName | parameter | 32 | -| Parameter 2 of System.DateTimeParse.MatchAbbreviatedTimeMark | parameter | 32 | -| Parameter 2 of System.DateTimeParse.MatchDayName | parameter | 32 | -| Parameter 2 of System.DateTimeParse.MatchEraName | parameter | 32 | -| Parameter 2 of System.DateTimeParse.MatchMonthName | parameter | 32 | -| Parameter 2 of System.DateTimeParse.MatchTimeMark | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ParseByFormat | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ParseDigits | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ParseFractionExact | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ParseTimeZoneOffset | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ProcessDateTimeSuffix | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ProcessHebrewTerminalState | parameter | 32 | -| Parameter 2 of System.DateTimeParse.ProcessTerminalState | parameter | 32 | -| Parameter 2 of System.DateTimeParse.TryAdjustYear | parameter | 32 | -| Parameter 2 of System.DateTimeParse.TryParseQuoteString | parameter | 32 | -| Parameter 2 of System.Decimal.DecCalc.DivByConst | parameter | 32 | -| Parameter 2 of System.Decimal.DecCalc.UInt64x64To128 | parameter | 32 | -| Parameter 2 of System.Decimal.DecCalc.Unscale | parameter | 32 | -| Parameter 2 of System.Decimal.TryFormat | parameter | 32 | -| Parameter 2 of System.Decimal.TryGetBits | parameter | 32 | -| Parameter 2 of System.Decimal.TryParse | parameter | 32 | -| Parameter 2 of System.Decimal.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Decimal.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Decimal.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Decimal.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Diagnostics.Debug.Assert | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.ActivityTracker.ActivityInfo.CreateActivityPathGuid | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadata | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForProperty | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForTypeV2 | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataV2 | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventParameterInfo.GetMetadataLengthForNamedTypeV2 | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventPayload.TryGetValue | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventPipeMetadataGenerator.WriteToBuffer | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventProvider.EncodeObject | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventProviderImpl.MarshalFilterData | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventSource.Write | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventSource.WriteEventRaw | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventSource.WriteImpl | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventSource.WriteMultiMerge | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventSource.WriteMultiMergeInner | parameter | 32 | -| Parameter 2 of System.Diagnostics.Tracing.EventSource.WriteToAllListeners | parameter | 32 | -| Parameter 2 of System.Double.TryFormat | parameter | 32 | -| Parameter 2 of System.Double.TryParse | parameter | 32 | -| Parameter 2 of System.Double.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Double.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Double.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Double.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Enum.<ToString>g__HandleRareTypes\|56_0 | parameter | 32 | -| Parameter 2 of System.Enum.ToString | parameter | 32 | -| Parameter 2 of System.Enum.ToStringInlined | parameter | 32 | -| Parameter 2 of System.Enum.TryFormat | parameter | 32 | -| Parameter 2 of System.Enum.TryFormatNumberAsHex | parameter | 32 | -| Parameter 2 of System.Enum.TryFormatUnconstrained | parameter | 32 | -| Parameter 2 of System.Enum.TryParse | parameter | 32 | -| Parameter 2 of System.Exception.GetStackTracesDeepCopy | parameter | 32 | -| Parameter 2 of System.Globalization.CalendarData.CountOccurrences | parameter | 32 | -| Parameter 2 of System.Globalization.CalendarData.NormalizeDayOfWeek | parameter | 32 | -| Parameter 2 of System.Globalization.CharUnicodeInfo.GetUnicodeCategoryInternal | parameter | 32 | -| Parameter 2 of System.Globalization.CultureData.GetIndexOfNextTokenAfterSeconds | parameter | 32 | -| Parameter 2 of System.Globalization.CultureData.IsValidCultureName | parameter | 32 | -| Parameter 2 of System.Globalization.CultureData.NormalizeCultureName | parameter | 32 | -| Parameter 2 of System.Globalization.DateTimeFormatInfo.Tokenize | parameter | 32 | -| Parameter 2 of System.Globalization.DateTimeFormatInfo.TryParseHebrewNumber | parameter | 32 | -| Parameter 2 of System.Globalization.DateTimeFormatInfo.YearMonthAdjustment | parameter | 32 | -| Parameter 2 of System.Globalization.EastAsianLunisolarCalendar.TimeToLunar | parameter | 32 | -| Parameter 2 of System.Globalization.GlobalizationMode.TryGetStringValue | parameter | 32 | -| Parameter 2 of System.Globalization.InvariantModeCasing.CompareStringIgnoreCase | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.CompareStringIgnoreCase | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.CompareStringIgnoreCaseNonAscii | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.EqualsIgnoreCaseUtf8 | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.EqualsIgnoreCaseUtf8_Scalar | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.EqualsIgnoreCaseUtf8_Vector128 | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.EqualsStringIgnoreCaseNonAsciiUtf8 | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.EqualsStringIgnoreCaseUtf8 | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.StartsWithIgnoreCaseUtf8 | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.StartsWithIgnoreCaseUtf8_Scalar | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.StartsWithIgnoreCaseUtf8_Vector128 | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.StartsWithStringIgnoreCaseNonAsciiUtf8 | parameter | 32 | -| Parameter 2 of System.Globalization.Ordinal.StartsWithStringIgnoreCaseUtf8 | parameter | 32 | -| Parameter 2 of System.Globalization.OrdinalCasing.CompareStringIgnoreCase | parameter | 32 | -| Parameter 2 of System.Globalization.PersianCalendar.GetDate | parameter | 32 | -| Parameter 2 of System.Globalization.SurrogateCasing.ToLower | parameter | 32 | -| Parameter 2 of System.Globalization.SurrogateCasing.ToUpper | parameter | 32 | -| Parameter 2 of System.Globalization.TextInfo.AddTitlecaseLetter | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanFormat.TryFormat | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.ParseExactDigits | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.ProcessTerminalState | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.ProcessTerminal_D | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.ProcessTerminal_DHMSF | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.ProcessTerminal_HM | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.ProcessTerminal_HMS_F_D | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.ProcessTerminal_HM_S_D | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.StringParser.ParseInt | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.StringParser.ParseTime | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.StringParser.TryParse | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.TimeSpanRawInfo.AddNum | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.TimeSpanRawInfo.AddSep | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.TimeSpanRawInfo.ProcessToken | parameter | 32 | -| Parameter 2 of System.Globalization.TimeSpanParse.TryParse | parameter | 32 | -| Parameter 2 of System.Globalization.UmAlQuraCalendar.ConvertGregorianToHijri | parameter | 32 | -| Parameter 2 of System.Guid.DecodeByte | parameter | 32 | -| Parameter 2 of System.Guid.TryFormat | parameter | 32 | -| Parameter 2 of System.Guid.TryFormatCore | parameter | 32 | -| Parameter 2 of System.Guid.TryFormatX | parameter | 32 | -| Parameter 2 of System.Guid.TryParse | parameter | 32 | -| Parameter 2 of System.Guid.TryParseExact | parameter | 32 | -| Parameter 2 of System.Guid.TryParseHex | parameter | 32 | -| Parameter 2 of System.Half.TryFormat | parameter | 32 | -| Parameter 2 of System.Half.TryParse | parameter | 32 | -| Parameter 2 of System.Half.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Half.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Half.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Half.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.HashCode.Initialize | parameter | 32 | -| Parameter 2 of System.HexConverter.TryDecodeFromUtf16 | parameter | 32 | -| Parameter 2 of System.IO.BufferedStream.WriteToBuffer | parameter | 32 | -| Parameter 2 of System.IO.KeyParser.<ParseFromSingleChar>g__ControlAndDigitPressed\|8_2 | parameter | 32 | -| Parameter 2 of System.IO.KeyParser.<ParseFromSingleChar>g__ControlAndLetterPressed\|8_1 | parameter | 32 | -| Parameter 2 of System.IO.KeyParser.TryParseTerminalInputSequence | parameter | 32 | -| Parameter 2 of System.IO.PathInternal.RemoveRelativeSegments | parameter | 32 | -| Parameter 2 of System.IO.PersistedFiles.TryGetHomeDirectoryFromPasswd | parameter | 32 | -| Parameter 2 of System.IO.StreamReader.ReadBuffer | parameter | 32 | -| Parameter 2 of System.IO.UnmanagedMemoryAccessor.Read | parameter | 32 | -| Parameter 2 of System.IO.UnmanagedMemoryAccessor.Write | parameter | 32 | -| Parameter 2 of System.IParsable.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Boolean>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Byte>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Char>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<DateOnly>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<DateTime>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<DateTimeOffset>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Decimal>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Double>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Guid>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Half>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Int16>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Int32>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Int64>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Int128>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<IntPtr>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<NFloat>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<SByte>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<Single>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<String>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<TimeOnly>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<TimeSpan>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<UInt16>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<UInt32>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<UInt64>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<UInt128>.TryParse | parameter | 32 | -| Parameter 2 of System.IParsable<UIntPtr>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanFormattable.TryFormat | parameter | 32 | -| Parameter 2 of System.ISpanParsable.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<!0>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Boolean>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Byte>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Char>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<DateOnly>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<DateTime>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<DateTimeOffset>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Decimal>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Double>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Guid>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Half>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Int16>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Int32>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Int64>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Int128>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<IntPtr>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<NFloat>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<SByte>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<Single>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<String>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<TimeOnly>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<TimeSpan>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<UInt16>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<UInt32>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<UInt64>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<UInt128>.TryParse | parameter | 32 | -| Parameter 2 of System.ISpanParsable<UIntPtr>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanFormattable.TryFormat | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<!0>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Byte>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Decimal>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Double>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Half>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Int16>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Int32>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Int64>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Int128>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<IntPtr>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<NFloat>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<SByte>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<Single>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<UInt16>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<UInt32>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<UInt64>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<UInt128>.TryParse | parameter | 32 | -| Parameter 2 of System.IUtf8SpanParsable<UIntPtr>.TryParse | parameter | 32 | -| Parameter 2 of System.Int16.TryFormat | parameter | 32 | -| Parameter 2 of System.Int16.TryParse | parameter | 32 | -| Parameter 2 of System.Int16.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Int16.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Int16.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Int16.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Int32.TryFormat | parameter | 32 | -| Parameter 2 of System.Int32.TryParse | parameter | 32 | -| Parameter 2 of System.Int32.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Int32.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Int32.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Int32.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Int64.TryFormat | parameter | 32 | -| Parameter 2 of System.Int64.TryParse | parameter | 32 | -| Parameter 2 of System.Int64.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Int64.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Int64.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Int64.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Int128.BigMul | parameter | 32 | -| Parameter 2 of System.Int128.TryFormat | parameter | 32 | -| Parameter 2 of System.Int128.TryParse | parameter | 32 | -| Parameter 2 of System.Int128.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Int128.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Int128.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Int128.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.IntPtr.TryFormat | parameter | 32 | -| Parameter 2 of System.IntPtr.TryParse | parameter | 32 | -| Parameter 2 of System.IntPtr.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.IntPtr.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.IntPtr.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.IntPtr.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Math.<BigMul>g__SoftwareFallback\|49_0 | parameter | 32 | -| Parameter 2 of System.Math.BigMul | parameter | 32 | -| Parameter 2 of System.Math.DivRem | parameter | 32 | -| Parameter 2 of System.MemoryExtensions.Overlaps | parameter | 32 | -| Parameter 2 of System.MemoryExtensions.TryWrite | parameter | 32 | -| Parameter 2 of System.ModuleHandle.GetPEKind | parameter | 32 | -| Parameter 2 of System.Net.WebUtility.ConvertSmpToUtf16 | parameter | 32 | -| Parameter 2 of System.Number.BigInteger.Add | parameter | 32 | -| Parameter 2 of System.Number.BigInteger.AddDivisor | parameter | 32 | -| Parameter 2 of System.Number.BigInteger.DivRem | parameter | 32 | -| Parameter 2 of System.Number.BigInteger.Multiply | parameter | 32 | -| Parameter 2 of System.Number.BigInteger.SubtractDivisor | parameter | 32 | -| Parameter 2 of System.Number.DiyFp.CreateAndGetBoundaries | parameter | 32 | -| Parameter 2 of System.Number.DiyFp.GetBoundaries | parameter | 32 | -| Parameter 2 of System.Number.Grisu3.BiggestPowerTen | parameter | 32 | -| Parameter 2 of System.Number.Grisu3.GetCachedPowerForBinaryExponentRange | parameter | 32 | -| Parameter 2 of System.Number.Grisu3.TryDigitGenShortest | parameter | 32 | -| Parameter 2 of System.Number.Grisu3.TryRunDouble | parameter | 32 | -| Parameter 2 of System.Number.Grisu3.TryRunHalf | parameter | 32 | -| Parameter 2 of System.Number.Grisu3.TryRunShortest | parameter | 32 | -| Parameter 2 of System.Number.Grisu3.TryRunSingle | parameter | 32 | -| Parameter 2 of System.Number.TryCopyTo | parameter | 32 | -| Parameter 2 of System.Number.TryParseBinaryIntegerHexNumberStyle | parameter | 32 | -| Parameter 2 of System.Number.TryParseBinaryIntegerHexOrBinaryNumberStyle | parameter | 32 | -| Parameter 2 of System.Number.TryStringToNumber | parameter | 32 | -| Parameter 2 of System.Number.TryUInt32ToDecStr | parameter | 32 | -| Parameter 2 of System.Number.TryUInt64ToDecStr | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<!0>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<!0>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<!0>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<!0>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Byte>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Byte>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Byte>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Byte>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Char>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Char>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Char>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Char>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int16>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int16>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int16>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int16>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int32>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int32>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int32>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int32>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int64>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int64>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int64>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int64>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int128>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int128>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int128>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<Int128>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<IntPtr>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<IntPtr>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<IntPtr>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<IntPtr>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<SByte>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<SByte>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<SByte>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<SByte>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt16>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt16>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt16>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt16>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt32>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt32>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt32>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt32>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt64>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt64>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt64>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt64>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt128>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt128>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt128>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UInt128>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UIntPtr>.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UIntPtr>.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UIntPtr>.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IBinaryInteger<UIntPtr>.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<!0>.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<!0>.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<!0>.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<!0>.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Decimal>.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Decimal>.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Decimal>.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Decimal>.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Double>.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Double>.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Double>.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Double>.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Half>.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Half>.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Half>.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Half>.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<NFloat>.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<NFloat>.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<NFloat>.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<NFloat>.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Single>.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Single>.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Single>.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Numerics.IFloatingPoint<Single>.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Numerics.INumberBase.TryFormat | parameter | 32 | -| Parameter 2 of System.Numerics.INumberBase.TryParse | parameter | 32 | -| Parameter 2 of System.Numerics.Matrix4x4.Decompose | parameter | 32 | -| Parameter 2 of System.Numerics.Matrix4x4.Impl.CreateBillboard | parameter | 32 | -| Parameter 2 of System.Numerics.Matrix4x4.Impl.CreateConstrainedBillboard | parameter | 32 | -| Parameter 2 of System.Numerics.Matrix4x4.Impl.CreateLookTo | parameter | 32 | -| Parameter 2 of System.Numerics.Matrix4x4.Impl.CreateLookToLeftHanded | parameter | 32 | -| Parameter 2 of System.Numerics.Matrix4x4.Impl.CreateWorld | parameter | 32 | -| Parameter 2 of System.Numerics.Matrix4x4.Impl.Decompose | parameter | 32 | -| Parameter 2 of System.Numerics.Vector.Widen | parameter | 32 | -| Parameter 2 of System.PackedSpanHelpers.ComputeFirstIndexOverlapped | parameter | 32 | -| Parameter 2 of System.ParseNumbers.GrabInts | parameter | 32 | -| Parameter 2 of System.ParseNumbers.GrabLongs | parameter | 32 | -| Parameter 2 of System.ParseNumbers.IsDigit | parameter | 32 | -| Parameter 2 of System.ReadOnlyMemory.GetObjectStartLength | parameter | 32 | -| Parameter 2 of System.ReadOnlyMemory<!0>.GetObjectStartLength | parameter | 32 | -| Parameter 2 of System.ReadOnlyMemory<Char>.GetObjectStartLength | parameter | 32 | -| Parameter 2 of System.Reflection.AssemblyName.EscapeAsciiChar | parameter | 32 | -| Parameter 2 of System.Reflection.CustomAttribute.AttributeUsageCheck | parameter | 32 | -| Parameter 2 of System.Reflection.CustomAttribute.ParseAttributeUsageAttribute | parameter | 32 | -| Parameter 2 of System.Reflection.CustomAttribute._ParseAttributeUsageAttribute | parameter | 32 | -| Parameter 2 of System.Reflection.CustomAttributeEncodedArgument.ParseAttributeArguments | parameter | 32 | -| Parameter 2 of System.Reflection.Emit.DynamicResolver.GetCodeInfo | parameter | 32 | -| Parameter 2 of System.Reflection.Emit.DynamicResolver.ResolveToken | parameter | 32 | -| Parameter 2 of System.Reflection.Emit.RuntimeModuleBuilder.GetPEKind | parameter | 32 | -| Parameter 2 of System.Reflection.Metadata.AssemblyExtensions.InternalTryGetRawMetadata | parameter | 32 | -| Parameter 2 of System.Reflection.Metadata.AssemblyExtensions.TryGetRawMetadata | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.EnumCustomAttributes | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.EnumEvents | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.EnumFields | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.EnumNestedTypes | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.EnumParams | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.EnumProperties | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetClassLayout | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetCustomAttributeProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetDefaultValue | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetEventProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetFieldDefProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetGenericParamProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetPInvokeMap | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetParamDefProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport.GetPropertyProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetClassLayout | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetCustomAttributeProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetDefaultValue | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetFieldDefProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetFieldMarshal | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetGenericParamProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetMemberRefProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetPInvokeMap | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetParamDefProps | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetParentToken | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetSigOfFieldDef | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetSigOfMethodDef | parameter | 32 | -| Parameter 2 of System.Reflection.MetadataImport._GetSignatureFromToken | parameter | 32 | -| Parameter 2 of System.Reflection.MethodInvokerCommon.Initialize | parameter | 32 | -| Parameter 2 of System.Reflection.Module.GetPEKind | parameter | 32 | -| Parameter 2 of System.Reflection.NullabilityInfoContext.NullableAttributeStateParser.ParseNullableState | parameter | 32 | -| Parameter 2 of System.Reflection.NullabilityInfoContext.TryPopulateNullabilityInfo | parameter | 32 | -| Parameter 2 of System.Reflection.PseudoCustomAttribute.GetCustomAttributes | parameter | 32 | -| Parameter 2 of System.Reflection.RuntimeAssembly.GetResource | parameter | 32 | -| Parameter 2 of System.Reflection.RuntimeAssembly.GetVersion | parameter | 32 | -| Parameter 2 of System.Reflection.RuntimeModule.GetPEKind | parameter | 32 | -| Parameter 2 of System.Reflection.RuntimeParameterInfo.TryGetDefaultValueInternal | parameter | 32 | -| Parameter 2 of System.Resolver.GetCodeInfo | parameter | 32 | -| Parameter 2 of System.Resolver.ResolveToken | parameter | 32 | -| Parameter 2 of System.Resources.ResourceManager.AddResourceSet | parameter | 32 | -| Parameter 2 of System.Resources.ResourceReader.AllocateStringForNameIndex | parameter | 32 | -| Parameter 2 of System.Resources.ResourceReader.GetResourceData | parameter | 32 | -| Parameter 2 of System.Resources.ResourceReader.LoadObject | parameter | 32 | -| Parameter 2 of System.Resources.ResourceReader.LoadObjectV2 | parameter | 32 | -| Parameter 2 of System.Resources.ResourceReader._LoadObjectV2 | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Boolean>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Byte[]>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<String>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<String[]>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncTaskMethodBuilder<VoidTaskResult>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder<Int32>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable.Container.FindEntry | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable.Container.TryGetEntry | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable.Container.TryGetValueWorker | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable.TryGetValue | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable<!0,!1>.Container.FindEntry | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable<!0,!1>.Container.TryGetEntry | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable<!0,!1>.Container.TryGetValueWorker | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable<!0,!1>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable<Assembly,DllImportResolver>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ConditionalWeakTable<Object,SerializationInfo>.TryGetValue | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ICastable.IsInstanceOfInterface | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.ICastableHelpers.IsInstanceOfInterface | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<!0>.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<Int32>.AwaitUnsafeOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder<VoidTaskResult>.AwaitOnCompleted | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.RuntimeHelpers.DispatchTailCalls | parameter | 32 | -| Parameter 2 of System.Runtime.CompilerServices.RuntimeHelpers.GetSpanDataFrom | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IBindCtx.GetObjectParam | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IConnectionPointContainer.FindConnectionPoint | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IMoniker.CommonPrefixWith | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IMoniker.Enum | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IMoniker.RelativePathTo | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IRunningObjectTable.GetObject | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IRunningObjectTable.GetTimeOfLastChange | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.IRunningObjectTable.NoteChangeTime | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.CreateInstance | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetContainingTypeLib | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetCustData | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation2 | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetFuncCustData | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetFuncDesc | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetImplTypeCustData | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetImplTypeFlags | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetMops | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetRefTypeInfo | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetRefTypeOfImplType | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetVarCustData | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetVarDesc | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetVarIndexOfMemId | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.CreateInstance | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetContainingTypeLib | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetDocumentation | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetFuncDesc | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetImplTypeFlags | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetMops | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetRefTypeInfo | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetRefTypeOfImplType | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetVarDesc | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetCustData | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation2 | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetLibStatistics | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetTypeInfo | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetTypeInfoOfGuid | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetTypeInfoType | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetDocumentation | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetTypeInfo | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetTypeInfoOfGuid | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetTypeInfoType | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComWrappers.CallICustomQueryInterface | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComWrappers.GetIUnknownImpl | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ComWrappers.GetIUnknownImplInternal | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.ICustomQueryInterface.GetInterface | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.Marshal.QueryInterface | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.MemoryMarshal.TryGetMemoryManager | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.MemoryMarshal.TryGetString | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.NFloat.TryFormat | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.NFloat.TryParse | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.NFloat.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.NFloat.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.NFloat.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.NFloat.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.Runtime.InteropServices.NativeLibrary.TryGetExport | parameter | 32 | -| Parameter 2 of System.Runtime.Serialization.SerializationInfo.GetElement | parameter | 32 | -| Parameter 2 of System.Runtime.Serialization.SerializationInfo.GetElementNoThrow | parameter | 32 | -| Parameter 2 of System.RuntimeType.FilterHelper | parameter | 32 | -| Parameter 2 of System.RuntimeType.SplitName | parameter | 32 | -| Parameter 2 of System.RuntimeType.TryChangeType | parameter | 32 | -| Parameter 2 of System.RuntimeTypeHandle.GetActivationInfo | parameter | 32 | -| Parameter 2 of System.SByte.TryFormat | parameter | 32 | -| Parameter 2 of System.SByte.TryParse | parameter | 32 | -| Parameter 2 of System.SByte.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.SByte.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.SByte.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.SByte.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Security.SecurityElement.GetUnescapeSequence | parameter | 32 | -| Parameter 2 of System.Single.TryFormat | parameter | 32 | -| Parameter 2 of System.Single.TryParse | parameter | 32 | -| Parameter 2 of System.Single.TryWriteExponentBigEndian | parameter | 32 | -| Parameter 2 of System.Single.TryWriteExponentLittleEndian | parameter | 32 | -| Parameter 2 of System.Single.TryWriteSignificandBigEndian | parameter | 32 | -| Parameter 2 of System.Single.TryWriteSignificandLittleEndian | parameter | 32 | -| Parameter 2 of System.SpanHelpers.IndexOf | parameter | 32 | -| Parameter 2 of System.SpanHelpers.IndexOfAny | parameter | 32 | -| Parameter 2 of System.SpanHelpers.LastIndexOf | parameter | 32 | -| Parameter 2 of System.SpanHelpers.LastIndexOfAny | parameter | 32 | -| Parameter 2 of System.SpanHelpers.SequenceCompareTo | parameter | 32 | -| Parameter 2 of System.String.Create | parameter | 32 | -| Parameter 2 of System.String.IndexOfNewlineChar | parameter | 32 | -| Parameter 2 of System.String.MakeSeparatorList | parameter | 32 | -| Parameter 2 of System.String.MakeSeparatorListAny | parameter | 32 | -| Parameter 2 of System.String.TryParse | parameter | 32 | -| Parameter 2 of System.StringComparer.IsWellKnownCultureAwareComparer | parameter | 32 | -| Parameter 2 of System.StringComparer.IsWellKnownCultureAwareComparerCore | parameter | 32 | -| Parameter 2 of System.StubHelpers.StubHelpers.FmtClassUpdateNativeInternal | parameter | 32 | -| Parameter 2 of System.TermInfo.ParameterizedStrings.GetDynamicOrStaticVariables | parameter | 32 | -| Parameter 2 of System.Text.ASCIIEncoding.DecodeFirstRune | parameter | 32 | -| Parameter 2 of System.Text.ASCIIEncoding.TryGetByteCount | parameter | 32 | -| Parameter 2 of System.Text.Ascii.ChangeCase | parameter | 32 | -| Parameter 2 of System.Text.Ascii.FromUtf16 | parameter | 32 | -| Parameter 2 of System.Text.Ascii.ToLower | parameter | 32 | -| Parameter 2 of System.Text.Ascii.ToUpper | parameter | 32 | -| Parameter 2 of System.Text.Ascii.ToUtf16 | parameter | 32 | -| Parameter 2 of System.Text.CompositeFormat.<TryParseLiterals>g__TryMoveNext\|12_0 | parameter | 32 | -| Parameter 2 of System.Text.CompositeFormat.TryParseLiterals | parameter | 32 | -| Parameter 2 of System.Text.DecoderFallbackBuffer.TryDrainRemainingDataForGetChars | parameter | 32 | -| Parameter 2 of System.Text.DecoderNLS.DrainLeftoverDataForGetCharCount | parameter | 32 | -| Parameter 2 of System.Text.EncoderFallbackBuffer.InternalFallback | parameter | 32 | -| Parameter 2 of System.Text.EncoderFallbackBuffer.InternalFallbackGetByteCount | parameter | 32 | -| Parameter 2 of System.Text.EncoderFallbackBuffer.TryDrainRemainingDataForGetBytes | parameter | 32 | -| Parameter 2 of System.Text.EncoderNLS.DrainLeftoverDataForGetByteCount | parameter | 32 | -| Parameter 2 of System.Text.Encoding.DecodeFirstRune | parameter | 32 | -| Parameter 2 of System.Text.Encoding.TryGetByteCount | parameter | 32 | -| Parameter 2 of System.Text.Latin1Encoding.DecodeFirstRune | parameter | 32 | -| Parameter 2 of System.Text.Latin1Encoding.TryGetByteCount | parameter | 32 | -| Parameter 2 of System.Text.Rune.DecodeFromUtf8 | parameter | 32 | -| Parameter 2 of System.Text.Rune.DecodeFromUtf16 | parameter | 32 | -| Parameter 2 of System.Text.Rune.DecodeLastFromUtf8 | parameter | 32 | -| Parameter 2 of System.Text.Rune.DecodeLastFromUtf16 | parameter | 32 | -| Parameter 2 of System.Text.Rune.TryCreate | parameter | 32 | -| Parameter 2 of System.Text.Rune.TryEncodeToUtf8 | parameter | 32 | -| Parameter 2 of System.Text.Rune.TryEncodeToUtf16 | parameter | 32 | -| Parameter 2 of System.Text.Rune.TryFormat | parameter | 32 | -| Parameter 2 of System.Text.Rune.TryGetRuneAt | parameter | 32 | -| Parameter 2 of System.Text.StringBuilder.Append | parameter | 32 | -| Parameter 2 of System.Text.StringBuilder.AppendLine | parameter | 32 | -| Parameter 2 of System.Text.StringBuilder.Insert | parameter | 32 | -| Parameter 2 of System.Text.StringBuilder.ReplaceInPlaceAtChunk | parameter | 32 | -| Parameter 2 of System.Text.UTF8Encoding.DecodeFirstRune | parameter | 32 | -| Parameter 2 of System.Text.UTF8Encoding.TryGetByteCount | parameter | 32 | -| Parameter 2 of System.Text.UTF8Encoding.UTF8EncodingSealed.ReadUtf8 | parameter | 32 | -| Parameter 2 of System.Text.Unicode.TextSegmentationUtility.DecodeFirstRune.Invoke | parameter | 32 | -| Parameter 2 of System.Text.Unicode.TextSegmentationUtility.DecodeFirstRune<!0>.Invoke | parameter | 32 | -| Parameter 2 of System.Text.Unicode.Utf8.FromUtf16 | parameter | 32 | -| Parameter 2 of System.Text.Unicode.Utf8.ToUtf16 | parameter | 32 | -| Parameter 2 of System.Text.Unicode.Utf8.ToUtf16PreservingReplacement | parameter | 32 | -| Parameter 2 of System.Text.Unicode.Utf8.TryWrite | parameter | 32 | -| Parameter 2 of System.Text.Unicode.Utf8Utility.GetPointerToFirstInvalidByte | parameter | 32 | -| Parameter 2 of System.Text.Unicode.Utf16Utility.GetPointerToFirstInvalidChar | parameter | 32 | -| Parameter 2 of System.Text.UnicodeUtility.GetUtf16SurrogatesFromSupplementaryPlaneScalar | parameter | 32 | -| Parameter 2 of System.Threading.AsyncLocalValueMap.EmptyAsyncLocalValueMap.TryGetValue | parameter | 32 | -| Parameter 2 of System.Threading.AsyncLocalValueMap.FourElementAsyncLocalValueMap.TryGetValue | parameter | 32 | -| Parameter 2 of System.Threading.AsyncLocalValueMap.MultiElementAsyncLocalValueMap.TryGetValue | parameter | 32 | -| Parameter 2 of System.Threading.AsyncLocalValueMap.OneElementAsyncLocalValueMap.TryGetValue | parameter | 32 | -| Parameter 2 of System.Threading.AsyncLocalValueMap.ThreeElementAsyncLocalValueMap.TryGetValue | parameter | 32 | -| Parameter 2 of System.Threading.AsyncLocalValueMap.TwoElementAsyncLocalValueMap.TryGetValue | parameter | 32 | -| Parameter 2 of System.Threading.ExecutionContext.RunForThreadPoolUnsafe | parameter | 32 | -| Parameter 2 of System.Threading.IAsyncLocalValueMap.TryGetValue | parameter | 32 | -| Parameter 2 of System.Threading.LazyInitializer.EnsureInitialized | parameter | 32 | -| Parameter 2 of System.Threading.LazyInitializer.EnsureInitializedCore | parameter | 32 | -| Parameter 2 of System.Threading.Monitor.ReliableEnterTimeout | parameter | 32 | -| Parameter 2 of System.Threading.Monitor.TryEnter | parameter | 32 | -| Parameter 2 of System.Threading.PortableThreadPool.GetAvailableThreads | parameter | 32 | -| Parameter 2 of System.Threading.PortableThreadPool.GetMaxThreads | parameter | 32 | -| Parameter 2 of System.Threading.PortableThreadPool.GetMinThreads | parameter | 32 | -| Parameter 2 of System.Threading.PortableThreadPool.PerformBlockingAdjustment | parameter | 32 | -| Parameter 2 of System.Threading.ReaderWriterLockSlim.WaitOnEvent | parameter | 32 | -| Parameter 2 of System.Threading.SpinLock.ContinueTryEnter | parameter | 32 | -| Parameter 2 of System.Threading.SpinLock.TryEnter | parameter | 32 | -| Parameter 2 of System.Threading.Tasks.Task.CreationOptionsFromContinuationOptions | parameter | 32 | -| Parameter 2 of System.Threading.ThreadPool.GetNextConfigUInt32Value | parameter | 32 | -| Parameter 2 of System.Threading.ThreadPoolWorkQueue.Dequeue | parameter | 32 | -| Parameter 2 of System.Threading.ThreadPoolWorkQueue.TryStartProcessingHighPriorityWorkItemsAndDequeue | parameter | 32 | -| Parameter 2 of System.TimeOnly.Add | parameter | 32 | -| Parameter 2 of System.TimeOnly.AddHours | parameter | 32 | -| Parameter 2 of System.TimeOnly.AddMinutes | parameter | 32 | -| Parameter 2 of System.TimeOnly.AddTicks | parameter | 32 | -| Parameter 2 of System.TimeOnly.Deconstruct | parameter | 32 | -| Parameter 2 of System.TimeOnly.TryFormat | parameter | 32 | -| Parameter 2 of System.TimeOnly.TryFormatCore | parameter | 32 | -| Parameter 2 of System.TimeOnly.TryParse | parameter | 32 | -| Parameter 2 of System.TimeOnly.TryParseExact | parameter | 32 | -| Parameter 2 of System.TimeSpan.TryFormat | parameter | 32 | -| Parameter 2 of System.TimeSpan.TryParse | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.ConvertUtcToTimeZone | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.GetAdjustmentRuleForAmbiguousOffsets | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.GetAdjustmentRuleForTime | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.GetFullValueForDisplayNameField | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.GetUtcOffsetFromUtc | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TZif_ParseJulianDay | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TZif_ParseMDateRule | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TZif_ParsePosixDateTime | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TZif_ParseRaw | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryConvertIanaIdToWindowsId | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryConvertWindowsIdToIanaId | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryFindSystemTimeZoneById | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryGetTimeZone | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryGetTimeZoneFromLocalMachine | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryGetTimeZoneFromLocalMachineCore | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryGetTimeZoneUsingId | parameter | 32 | -| Parameter 2 of System.TimeZoneInfo.TryLoadTzFile | parameter | 32 | -| Parameter 2 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 2 of System.Type.GetEnumData | parameter | 32 | -| Parameter 2 of System.UInt16.TryFormat | parameter | 32 | -| Parameter 2 of System.UInt16.TryParse | parameter | 32 | -| Parameter 2 of System.UInt16.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.UInt16.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.UInt16.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.UInt16.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.UInt32.TryFormat | parameter | 32 | -| Parameter 2 of System.UInt32.TryParse | parameter | 32 | -| Parameter 2 of System.UInt32.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.UInt32.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.UInt32.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.UInt32.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.UInt64.TryFormat | parameter | 32 | -| Parameter 2 of System.UInt64.TryParse | parameter | 32 | -| Parameter 2 of System.UInt64.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.UInt64.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.UInt64.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.UInt64.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.UInt128.BigMul | parameter | 32 | -| Parameter 2 of System.UInt128.TryFormat | parameter | 32 | -| Parameter 2 of System.UInt128.TryParse | parameter | 32 | -| Parameter 2 of System.UInt128.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.UInt128.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.UInt128.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.UInt128.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.UIntPtr.TryFormat | parameter | 32 | -| Parameter 2 of System.UIntPtr.TryParse | parameter | 32 | -| Parameter 2 of System.UIntPtr.TryReadBigEndian | parameter | 32 | -| Parameter 2 of System.UIntPtr.TryReadLittleEndian | parameter | 32 | -| Parameter 2 of System.UIntPtr.TryWriteBigEndian | parameter | 32 | -| Parameter 2 of System.UIntPtr.TryWriteLittleEndian | parameter | 32 | -| Parameter 2 of System.Version.TryFormat | parameter | 32 | -| Parameter 2 of System.__DTString.GetRegularToken | parameter | 32 | -| Parameter 2 of System.__DTString.GetSeparatorToken | parameter | 32 | -| Parameter 2 of System.__DTString.MatchLongestWords | parameter | 32 | -| Parameter 3 of Interop.Globalization.GetJapaneseEraStartDate | parameter | 32 | -| Parameter 3 of Interop.Globalization.GetLocaleInfoGroupingSizes | parameter | 32 | -| Parameter 3 of Interop.Sys.GetControlCharacters | parameter | 32 | -| Parameter 3 of Interop.Sys.Poll | parameter | 32 | -| Parameter 3 of Interop.Sys.TryGetUserNameFromPasswd | parameter | 32 | -| Parameter 3 of Microsoft.Win32.SafeHandles.SafeFileHandle.FStatCheckIO | parameter | 32 | -| Parameter 3 of Microsoft.Win32.SafeHandles.SafeFileHandle.OpenReadOnly | parameter | 32 | -| Parameter 3 of System.Buffers.IndexOfAnyAsciiSearcher.ComputeBitmap256 | parameter | 32 | -| Parameter 3 of System.Buffers.IndexOfAnyAsciiSearcher.TryIndexOfAny | parameter | 32 | -| Parameter 3 of System.Buffers.IndexOfAnyAsciiSearcher.TryIndexOfAnyExcept | parameter | 32 | -| Parameter 3 of System.Buffers.IndexOfAnyAsciiSearcher.TryLastIndexOfAny | parameter | 32 | -| Parameter 3 of System.Buffers.IndexOfAnyAsciiSearcher.TryLastIndexOfAnyExcept | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Base64.<DecodeFromUtf8>g__InvalidDataFallback\|15_0 | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Base64.DecodeFromUtf8 | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Base64.DecodeWithWhiteSpaceBlockwise | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Base64.EncodeToUtf8 | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Utf8Formatter.TryFormat | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Utf8Parser.TimeSpanSplitter.ParseComponent | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Utf8Parser.TimeSpanSplitter.TrySplitTimeSpan | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Utf8Parser.TryParseDateTimeG | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Utf8Parser.TryParseDateTimeOffsetO | parameter | 32 | -| Parameter 3 of System.Buffers.Text.Utf8Parser.TryParseDateTimeOffsetR | parameter | 32 | -| Parameter 3 of System.Byte.TryParse | parameter | 32 | -| Parameter 3 of System.Char.TryParse | parameter | 32 | -| Parameter 3 of System.Collections.Concurrent.ConcurrentQueue.SnapForObservation | parameter | 32 | -| Parameter 3 of System.Collections.Concurrent.ConcurrentQueue<!0>.SnapForObservation | parameter | 32 | -| Parameter 3 of System.Collections.Hashtable.InitHash | parameter | 32 | -| Parameter 3 of System.ConsolePal.<TryGetCursorPosition>g__AppendToStdInReaderUntil\|82_2 | parameter | 32 | -| Parameter 3 of System.ConsolePal.<TryGetCursorPosition>g__BufferUntil\|82_1 | parameter | 32 | -| Parameter 3 of System.Convert.CopyToTempBufferWithoutWhiteSpace | parameter | 32 | -| Parameter 3 of System.Convert.TryDecodeFromUtf16 | parameter | 32 | -| Parameter 3 of System.DateOnly.Deconstruct | parameter | 32 | -| Parameter 3 of System.DateOnly.TryParse | parameter | 32 | -| Parameter 3 of System.DateOnly.TryParseInternal | parameter | 32 | -| Parameter 3 of System.DateTime.Deconstruct | parameter | 32 | -| Parameter 3 of System.DateTime.GetDate | parameter | 32 | -| Parameter 3 of System.DateTime.GetTime | parameter | 32 | -| Parameter 3 of System.DateTime.GetTimePrecise | parameter | 32 | -| Parameter 3 of System.DateTime.TryParse | parameter | 32 | -| Parameter 3 of System.DateTimeFormat.TryFormatInvariantG | parameter | 32 | -| Parameter 3 of System.DateTimeFormat.TryFormatO | parameter | 32 | -| Parameter 3 of System.DateTimeFormat.TryFormatR | parameter | 32 | -| Parameter 3 of System.DateTimeFormat.TryFormatu | parameter | 32 | -| Parameter 3 of System.DateTimeOffset.Deconstruct | parameter | 32 | -| Parameter 3 of System.DateTimeOffset.TryParse | parameter | 32 | -| Parameter 3 of System.DateTimeParse.CheckNewValue | parameter | 32 | -| Parameter 3 of System.DateTimeParse.ExpandPredefinedFormat | parameter | 32 | -| Parameter 3 of System.DateTimeParse.Lex | parameter | 32 | -| Parameter 3 of System.DateTimeParse.Parse | parameter | 32 | -| Parameter 3 of System.DateTimeParse.ParseDigits | parameter | 32 | -| Parameter 3 of System.DateTimeParse.ParseISO8601 | parameter | 32 | -| Parameter 3 of System.DateTimeParse.ProcessHebrewTerminalState | parameter | 32 | -| Parameter 3 of System.DateTimeParse.ProcessTerminalState | parameter | 32 | -| Parameter 3 of System.DateTimeParse.SetIfStartsWith | parameter | 32 | -| Parameter 3 of System.DateTimeParse.TryParse | parameter | 32 | -| Parameter 3 of System.DateTimeParse.TryParseQuoteString | parameter | 32 | -| Parameter 3 of System.Decimal.DecCalc.DivByConst | parameter | 32 | -| Parameter 3 of System.Decimal.TryParse | parameter | 32 | -| Parameter 3 of System.DefaultBinder.BindToMethod | parameter | 32 | -| Parameter 3 of System.Diagnostics.Tracing.EventParameterInfo.GenerateMetadataForNamedTypeV2 | parameter | 32 | -| Parameter 3 of System.Diagnostics.Tracing.EventProvider.EncodeObject | parameter | 32 | -| Parameter 3 of System.Diagnostics.Tracing.EventProviderImpl.MarshalFilterData | parameter | 32 | -| Parameter 3 of System.Diagnostics.Tracing.EventSource.UpdateDescriptor | parameter | 32 | -| Parameter 3 of System.Diagnostics.Tracing.EventSource.Write | parameter | 32 | -| Parameter 3 of System.Double.TryParse | parameter | 32 | -| Parameter 3 of System.Enum.GetSingleFlagsEnumNameForValue | parameter | 32 | -| Parameter 3 of System.Enum.TryFormatFlagNames | parameter | 32 | -| Parameter 3 of System.Enum.TryFormatPrimitiveDefault | parameter | 32 | -| Parameter 3 of System.Enum.TryFormatPrimitiveNonDefault | parameter | 32 | -| Parameter 3 of System.Enum.TryParse | parameter | 32 | -| Parameter 3 of System.Globalization.CalendarData.EnumCalendarInfo | parameter | 32 | -| Parameter 3 of System.Globalization.CalendarData.EnumDatePatterns | parameter | 32 | -| Parameter 3 of System.Globalization.CalendarData.EnumEraNames | parameter | 32 | -| Parameter 3 of System.Globalization.CalendarData.EnumMonthNames | parameter | 32 | -| Parameter 3 of System.Globalization.CalendarData.GetCalendarInfo | parameter | 32 | -| Parameter 3 of System.Globalization.DateTimeFormatInfo.Tokenize | parameter | 32 | -| Parameter 3 of System.Globalization.DateTimeFormatInfoScanner.ScanRepeatChar | parameter | 32 | -| Parameter 3 of System.Globalization.EastAsianLunisolarCalendar.TimeToLunar | parameter | 32 | -| Parameter 3 of System.Globalization.PersianCalendar.GetDate | parameter | 32 | -| Parameter 3 of System.Globalization.SurrogateCasing.ToLower | parameter | 32 | -| Parameter 3 of System.Globalization.SurrogateCasing.ToUpper | parameter | 32 | -| Parameter 3 of System.Globalization.TimeSpanFormat.FormatCustomized | parameter | 32 | -| Parameter 3 of System.Globalization.TimeSpanParse.ParseExactDigits | parameter | 32 | -| Parameter 3 of System.Globalization.TimeSpanParse.StringParser.ParseInt | parameter | 32 | -| Parameter 3 of System.Globalization.TimeSpanParse.TryParseByFormat | parameter | 32 | -| Parameter 3 of System.Globalization.TimeSpanParse.TryParseTimeSpan | parameter | 32 | -| Parameter 3 of System.Globalization.UmAlQuraCalendar.ConvertGregorianToHijri | parameter | 32 | -| Parameter 3 of System.Globalization.UmAlQuraCalendar.ConvertHijriToGregorian | parameter | 32 | -| Parameter 3 of System.Guid.TryWriteBytes | parameter | 32 | -| Parameter 3 of System.Half.TryParse | parameter | 32 | -| Parameter 3 of System.HashCode.Initialize | parameter | 32 | -| Parameter 3 of System.IO.BufferedStream.WriteToBuffer | parameter | 32 | -| Parameter 3 of System.IO.FileSystemInfo.Create | parameter | 32 | -| Parameter 3 of System.IO.KeyParser.<ParseFromSingleChar>g__ControlAndLetterPressed\|8_1 | parameter | 32 | -| Parameter 3 of System.IO.KeyParser.TryParseTerminalInputSequence | parameter | 32 | -| Parameter 3 of System.IO.Path.TryJoin | parameter | 32 | -| Parameter 3 of System.Int16.TryParse | parameter | 32 | -| Parameter 3 of System.Int32.TryParse | parameter | 32 | -| Parameter 3 of System.Int64.TryParse | parameter | 32 | -| Parameter 3 of System.Int128.TryParse | parameter | 32 | -| Parameter 3 of System.IntPtr.TryParse | parameter | 32 | -| Parameter 3 of System.MemoryExtensions.TryWrite | parameter | 32 | -| Parameter 3 of System.Number.AccumulateDecimalDigitsIntoBigInteger | parameter | 32 | -| Parameter 3 of System.Number.BigInteger.DivRem | parameter | 32 | -| Parameter 3 of System.Number.DiyFp.GetBoundaries | parameter | 32 | -| Parameter 3 of System.Number.Dragon4Double | parameter | 32 | -| Parameter 3 of System.Number.Dragon4Half | parameter | 32 | -| Parameter 3 of System.Number.Dragon4Single | parameter | 32 | -| Parameter 3 of System.Number.GetFloatingPointMaxDigitsAndPrecision | parameter | 32 | -| Parameter 3 of System.Number.Grisu3.TryDigitGenCounted | parameter | 32 | -| Parameter 3 of System.Number.Grisu3.TryRunCounted | parameter | 32 | -| Parameter 3 of System.Number.TryParseBinaryInteger | parameter | 32 | -| Parameter 3 of System.Number.TryParseBinaryIntegerNumber | parameter | 32 | -| Parameter 3 of System.Number.TryParseBinaryIntegerStyle | parameter | 32 | -| Parameter 3 of System.Number.TryParseDecimal | parameter | 32 | -| Parameter 3 of System.Number.TryParseFloat | parameter | 32 | -| Parameter 3 of System.Number.TryParseNumber | parameter | 32 | -| Parameter 3 of System.Number.TryUInt32ToBinaryStr | parameter | 32 | -| Parameter 3 of System.Number.TryUInt32ToDecStr | parameter | 32 | -| Parameter 3 of System.Number.TryUInt64ToBinaryStr | parameter | 32 | -| Parameter 3 of System.Number.TryUInt64ToDecStr | parameter | 32 | -| Parameter 3 of System.Number.TryUInt128ToBinaryStr | parameter | 32 | -| Parameter 3 of System.Number.TryUInt128ToDecStr | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<!0>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Byte>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Char>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Decimal>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Double>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Half>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Int16>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Int32>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Int64>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Int128>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<IntPtr>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<NFloat>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<SByte>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<Single>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<UInt16>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<UInt32>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<UInt64>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<UInt128>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.INumberBase<UIntPtr>.TryParse | parameter | 32 | -| Parameter 3 of System.Numerics.Matrix4x4.Decompose | parameter | 32 | -| Parameter 3 of System.Numerics.Matrix4x4.Impl.CreateBillboard | parameter | 32 | -| Parameter 3 of System.Numerics.Matrix4x4.Impl.CreateConstrainedBillboard | parameter | 32 | -| Parameter 3 of System.Numerics.Matrix4x4.Impl.CreateScale | parameter | 32 | -| Parameter 3 of System.Numerics.Matrix4x4.Impl.Decompose | parameter | 32 | -| Parameter 3 of System.ParseNumbers.StringToInt | parameter | 32 | -| Parameter 3 of System.ParseNumbers.StringToLong | parameter | 32 | -| Parameter 3 of System.Reflection.Binder.BindToMethod | parameter | 32 | -| Parameter 3 of System.Reflection.CustomAttribute.CreateCaObject | parameter | 32 | -| Parameter 3 of System.Reflection.CustomAttribute.GetPropertyOrFieldData | parameter | 32 | -| Parameter 3 of System.Reflection.CustomAttribute.ParseAttributeUsageAttribute | parameter | 32 | -| Parameter 3 of System.Reflection.CustomAttribute._GetPropertyOrFieldData | parameter | 32 | -| Parameter 3 of System.Reflection.CustomAttribute._ParseAttributeUsageAttribute | parameter | 32 | -| Parameter 3 of System.Reflection.CustomAttributeEncodedArgument.ParseAttributeArguments | parameter | 32 | -| Parameter 3 of System.Reflection.Emit.DynamicResolver.GetCodeInfo | parameter | 32 | -| Parameter 3 of System.Reflection.Emit.DynamicResolver.ResolveToken | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.Enum | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetClassLayout | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetCustomAttributeProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetDefaultValue | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetEventProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetFieldOffset | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetPInvokeMap | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetParamDefProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport.GetPropertyProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._Enum | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetClassLayout | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetCustomAttributeProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetDefaultValue | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetEventProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetFieldOffset | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetParamDefProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetPropertyProps | parameter | 32 | -| Parameter 3 of System.Reflection.MetadataImport._GetUserString | parameter | 32 | -| Parameter 3 of System.Reflection.MethodInvokerCommon.Initialize | parameter | 32 | -| Parameter 3 of System.Reflection.RuntimeAssembly.GetVersion | parameter | 32 | -| Parameter 3 of System.Reflection.RuntimeCustomAttributeData..ctor | parameter | 32 | -| Parameter 3 of System.Reflection.RuntimeParameterInfo.GetParameters | parameter | 32 | -| Parameter 3 of System.Resolver.GetCodeInfo | parameter | 32 | -| Parameter 3 of System.Resolver.ResolveToken | parameter | 32 | -| Parameter 3 of System.Resources.ResourceReader.GetResourceData | parameter | 32 | -| Parameter 3 of System.Resources.RuntimeResourceSet.ReadValue | parameter | 32 | -| Parameter 3 of System.Runtime.CompilerServices.ConditionalWeakTable.Container.TryGetEntry | parameter | 32 | -| Parameter 3 of System.Runtime.CompilerServices.ConditionalWeakTable<!0,!1>.Container.TryGetEntry | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.IMoniker.BindToObject | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.IMoniker.BindToStorage | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.IMoniker.ComposeWith | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.IMoniker.GetDisplayName | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.IMoniker.GetTimeOfLastChange | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.IMoniker.Reduce | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeComp.BindType | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.AddressOfMember | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.CreateInstance | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation2 | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetFuncCustData | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetFuncIndexOfMemId | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetImplTypeCustData | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetParamCustData | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetVarCustData | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo.AddressOfMember | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo.CreateInstance | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetDocumentation | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation2 | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetDocumentation | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComWrappers.ComputeVtables | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ComWrappers.TryGetOrCreateComInterfaceForObjectInternal | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.MemoryMarshal.TryGetMemoryManager | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.MemoryMarshal.TryGetString | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.NFloat.TryParse | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.NativeLibrary.TryLoad | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.UnhandledExceptionPropagationHandler.BeginInvoke | parameter | 32 | -| Parameter 3 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.UnhandledExceptionPropagationHandler.Invoke | parameter | 32 | -| Parameter 3 of System.RuntimeType.FilterHelper | parameter | 32 | -| Parameter 3 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache.PopulateLiteralFields | parameter | 32 | -| Parameter 3 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache.PopulateRtFields | parameter | 32 | -| Parameter 3 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache<!0>.PopulateLiteralFields | parameter | 32 | -| Parameter 3 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache<!0>.PopulateRtFields | parameter | 32 | -| Parameter 3 of System.RuntimeTypeHandle.GetActivationInfo | parameter | 32 | -| Parameter 3 of System.SByte.TryParse | parameter | 32 | -| Parameter 3 of System.Single.TryParse | parameter | 32 | -| Parameter 3 of System.String.MakeSeparatorListAny | parameter | 32 | -| Parameter 3 of System.String.TryGetSpan | parameter | 32 | -| Parameter 3 of System.StubHelpers.AnsiCharMarshaler.DoAnsiConversion | parameter | 32 | -| Parameter 3 of System.StubHelpers.VBByValStrMarshaler.ConvertToNative | parameter | 32 | -| Parameter 3 of System.TermInfo.ParameterizedStrings.GetDynamicOrStaticVariables | parameter | 32 | -| Parameter 3 of System.Text.ASCIIEncoding.DecodeFirstRune | parameter | 32 | -| Parameter 3 of System.Text.ASCIIEncoding.EncodeRune | parameter | 32 | -| Parameter 3 of System.Text.ASCIIEncoding.TryGetBytes | parameter | 32 | -| Parameter 3 of System.Text.ASCIIEncoding.TryGetChars | parameter | 32 | -| Parameter 3 of System.Text.CompositeFormat.TryParseLiterals | parameter | 32 | -| Parameter 3 of System.Text.DecoderFallbackBuffer.InternalFallback | parameter | 32 | -| Parameter 3 of System.Text.DecoderNLS.DrainLeftoverDataForGetChars | parameter | 32 | -| Parameter 3 of System.Text.EncoderFallbackBuffer.TryInternalFallbackGetBytes | parameter | 32 | -| Parameter 3 of System.Text.EncoderNLS.TryDrainLeftoverDataForGetBytes | parameter | 32 | -| Parameter 3 of System.Text.Encoding.DecodeFirstRune | parameter | 32 | -| Parameter 3 of System.Text.Encoding.EncodeRune | parameter | 32 | -| Parameter 3 of System.Text.Encoding.TryGetBytes | parameter | 32 | -| Parameter 3 of System.Text.Encoding.TryGetChars | parameter | 32 | -| Parameter 3 of System.Text.Latin1Encoding.DecodeFirstRune | parameter | 32 | -| Parameter 3 of System.Text.Latin1Encoding.EncodeRune | parameter | 32 | -| Parameter 3 of System.Text.Latin1Encoding.TryGetBytes | parameter | 32 | -| Parameter 3 of System.Text.Latin1Encoding.TryGetChars | parameter | 32 | -| Parameter 3 of System.Text.StringBuilder.MakeRoom | parameter | 32 | -| Parameter 3 of System.Text.StringBuilder.Remove | parameter | 32 | -| Parameter 3 of System.Text.StringBuilder.ReplaceInPlaceAtChunk | parameter | 32 | -| Parameter 3 of System.Text.UTF8Encoding.DecodeFirstRune | parameter | 32 | -| Parameter 3 of System.Text.UTF8Encoding.EncodeRune | parameter | 32 | -| Parameter 3 of System.Text.UTF8Encoding.TryGetBytes | parameter | 32 | -| Parameter 3 of System.Text.UTF8Encoding.TryGetChars | parameter | 32 | -| Parameter 3 of System.Text.UTF8Encoding.UTF8EncodingSealed.TryGetBytes | parameter | 32 | -| Parameter 3 of System.Text.Unicode.TextSegmentationUtility.DecodeFirstRune.Invoke | parameter | 32 | -| Parameter 3 of System.Text.Unicode.TextSegmentationUtility.DecodeFirstRune<!0>.Invoke | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf8.FromUtf16 | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf8.ToUtf16 | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf8.ToUtf16PreservingReplacement | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf8.TryWrite | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.<AppendEnum>g__GrowAndAppendFormatted\|21_0 | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler.<AppendSpanFormattable>g__GrowAndAppendFormatted\|20_0 | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf8Utility.GetPointerToFirstInvalidByte | parameter | 32 | -| Parameter 3 of System.Text.Unicode.Utf16Utility.GetPointerToFirstInvalidChar | parameter | 32 | -| Parameter 3 of System.Threading.Mutex..ctor | parameter | 32 | -| Parameter 3 of System.Threading.Mutex.CreateMutexCore | parameter | 32 | -| Parameter 3 of System.Threading.SpinLock.CompareExchange | parameter | 32 | -| Parameter 3 of System.Threading.SpinLock.ContinueTryEnterWithThreadTracking | parameter | 32 | -| Parameter 3 of System.Threading.Tasks.AwaitTaskContinuation.RunCallback | parameter | 32 | -| Parameter 3 of System.Threading.Tasks.Task.AtomicStateUpdate | parameter | 32 | -| Parameter 3 of System.Threading.ThreadPool.GetNextConfigUInt32Value | parameter | 32 | -| Parameter 3 of System.TimeOnly.Deconstruct | parameter | 32 | -| Parameter 3 of System.TimeOnly.TryParse | parameter | 32 | -| Parameter 3 of System.TimeOnly.TryParseInternal | parameter | 32 | -| Parameter 3 of System.TimeSpan.TryParseExact | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.GetAdjustmentRuleForTime | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.GetDisplayName | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.GetUtcOffsetFromUtc | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TZif_ParseMDateRule | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TZif_ParsePosixDateTime | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TZif_ParseRaw | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TryConvertWindowsIdToIanaId | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TryGetEndOfDstIfYearStartWithDst | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TryGetStartOfDstIfYearEndWithDst | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TryGetTimeZone | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TryGetTimeZoneFromLocalMachine | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.TryGetTimeZoneUsingId | parameter | 32 | -| Parameter 3 of System.TimeZoneInfo.ValidateTimeZoneInfo | parameter | 32 | -| Parameter 3 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 3 of System.UInt16.TryParse | parameter | 32 | -| Parameter 3 of System.UInt32.TryParse | parameter | 32 | -| Parameter 3 of System.UInt64.TryParse | parameter | 32 | -| Parameter 3 of System.UInt128.TryParse | parameter | 32 | -| Parameter 3 of System.UIntPtr.TryParse | parameter | 32 | -| Parameter 3 of System.Version.TryFormat | parameter | 32 | -| Parameter 3 of System.Version.TryFormatCore | parameter | 32 | -| Parameter 3 of System.Version.TryParseComponent | parameter | 32 | -| Parameter 3 of System.__DTString.GetSeparatorToken | parameter | 32 | -| Parameter 3 of System.__DTString.MatchSpecifiedWords | parameter | 32 | -| Parameter 4 of Interop.CallStringMethod | parameter | 32 | -| Parameter 4 of Microsoft.Win32.SafeHandles.SafeFileHandle.Open | parameter | 32 | -| Parameter 4 of System.Buffers.Text.Utf8Parser.TryCreateDateTimeOffset | parameter | 32 | -| Parameter 4 of System.Buffers.Text.Utf8Parser.TryParseAsSpecialFloatingPoint | parameter | 32 | -| Parameter 4 of System.Buffers.Text.Utf8Parser.TryParseNumber | parameter | 32 | -| Parameter 4 of System.Collections.Concurrent.ConcurrentQueue.SnapForObservation | parameter | 32 | -| Parameter 4 of System.Collections.Concurrent.ConcurrentQueue<!0>.SnapForObservation | parameter | 32 | -| Parameter 4 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue.TryDequeueSlow | parameter | 32 | -| Parameter 4 of System.Collections.Concurrent.SingleProducerSingleConsumerQueue<!0>.TryDequeueSlow | parameter | 32 | -| Parameter 4 of System.Collections.Hashtable.InitHash | parameter | 32 | -| Parameter 4 of System.ConsolePal.<TryGetCursorPosition>g__AppendToStdInReaderUntil\|82_2 | parameter | 32 | -| Parameter 4 of System.ConsolePal.<TryGetCursorPosition>g__ReadRowOrCol\|82_3 | parameter | 32 | -| Parameter 4 of System.DateOnly.TryParseExact | parameter | 32 | -| Parameter 4 of System.DateOnly.TryParseExactInternal | parameter | 32 | -| Parameter 4 of System.DateTime.GetTime | parameter | 32 | -| Parameter 4 of System.DateTime.GetTimePrecise | parameter | 32 | -| Parameter 4 of System.DateTime.TryParseExact | parameter | 32 | -| Parameter 4 of System.DateTimeFormat.FormatCustomized | parameter | 32 | -| Parameter 4 of System.DateTimeFormat.FormatCustomizedTimeZone | parameter | 32 | -| Parameter 4 of System.DateTimeFormat.TryFormatDateOnlyO | parameter | 32 | -| Parameter 4 of System.DateTimeFormat.TryFormatTimeOnlyR | parameter | 32 | -| Parameter 4 of System.DateTimeOffset.TryParseExact | parameter | 32 | -| Parameter 4 of System.DateTimeParse.DoStrictParse | parameter | 32 | -| Parameter 4 of System.DateTimeParse.Lex | parameter | 32 | -| Parameter 4 of System.DateTimeParse.ParseByFormat | parameter | 32 | -| Parameter 4 of System.DateTimeParse.ParseExact | parameter | 32 | -| Parameter 4 of System.DateTimeParse.ParseExactMultiple | parameter | 32 | -| Parameter 4 of System.DateTimeParse.SetIfStartsWith | parameter | 32 | -| Parameter 4 of System.DateTimeParse.TryParse | parameter | 32 | -| Parameter 4 of System.DateTimeParse.TryParseExact | parameter | 32 | -| Parameter 4 of System.DateTimeParse.TryParseExactMultiple | parameter | 32 | -| Parameter 4 of System.Diagnostics.Debug.AssertInterpolatedStringHandler..ctor | parameter | 32 | -| Parameter 4 of System.Diagnostics.Debug.WriteIfInterpolatedStringHandler..ctor | parameter | 32 | -| Parameter 4 of System.Diagnostics.Tracing.ActivityTracker.OnStart | parameter | 32 | -| Parameter 4 of System.Diagnostics.Tracing.ActivityTracker.OnStop | parameter | 32 | -| Parameter 4 of System.Diagnostics.Tracing.EventSource.UpdateDescriptor | parameter | 32 | -| Parameter 4 of System.Diagnostics.Tracing.EventSource.Write | parameter | 32 | -| Parameter 4 of System.Enum.<TryParse>g__TryParseRareTypes\|41_0 | parameter | 32 | -| Parameter 4 of System.Enum.TryFormatFlagNames | parameter | 32 | -| Parameter 4 of System.Enum.TryParse | parameter | 32 | -| Parameter 4 of System.Enum.TryParseByName | parameter | 32 | -| Parameter 4 of System.Enum.TryParseByValueOrName | parameter | 32 | -| Parameter 4 of System.Enum.TryParseRareTypeByValueOrName | parameter | 32 | -| Parameter 4 of System.Globalization.CalendarData.EnumMonthNames | parameter | 32 | -| Parameter 4 of System.Globalization.CompareInfo.IndexOf | parameter | 32 | -| Parameter 4 of System.Globalization.CompareInfo.IsPrefix | parameter | 32 | -| Parameter 4 of System.Globalization.CompareInfo.IsSuffix | parameter | 32 | -| Parameter 4 of System.Globalization.CompareInfo.LastIndexOf | parameter | 32 | -| Parameter 4 of System.Globalization.DateTimeFormatInfo.Tokenize | parameter | 32 | -| Parameter 4 of System.Globalization.EastAsianLunisolarCalendar.GregorianToLunar | parameter | 32 | -| Parameter 4 of System.Globalization.EastAsianLunisolarCalendar.LunarToGregorian | parameter | 32 | -| Parameter 4 of System.Globalization.EastAsianLunisolarCalendar.TimeToLunar | parameter | 32 | -| Parameter 4 of System.Globalization.PersianCalendar.GetDate | parameter | 32 | -| Parameter 4 of System.Globalization.TimeSpanFormat.TryFormatStandard | parameter | 32 | -| Parameter 4 of System.Globalization.TimeSpanParse.ParseExactDigits | parameter | 32 | -| Parameter 4 of System.Globalization.TimeSpanParse.TryParseExact | parameter | 32 | -| Parameter 4 of System.Globalization.TimeSpanParse.TryParseExactMultiple | parameter | 32 | -| Parameter 4 of System.Globalization.TimeSpanParse.TryParseExactMultipleTimeSpan | parameter | 32 | -| Parameter 4 of System.Globalization.TimeSpanParse.TryParseExactTimeSpan | parameter | 32 | -| Parameter 4 of System.Globalization.UmAlQuraCalendar.ConvertHijriToGregorian | parameter | 32 | -| Parameter 4 of System.IO.BufferedStream.ReadFromBuffer | parameter | 32 | -| Parameter 4 of System.IO.KeyParser.Parse | parameter | 32 | -| Parameter 4 of System.IO.Path.TryJoin | parameter | 32 | -| Parameter 4 of System.MemoryExtensions.TryWriteInterpolatedStringHandler..ctor | parameter | 32 | -| Parameter 4 of System.Number.<TryFormatInt64>g__TryFormatInt64Slow\|46_0 | parameter | 32 | -| Parameter 4 of System.Number.<TryFormatInt128>g__TryFormatInt128Slow\|50_0 | parameter | 32 | -| Parameter 4 of System.Number.<TryFormatUInt32>g__TryFormatUInt32Slow\|44_0 | parameter | 32 | -| Parameter 4 of System.Number.<TryFormatUInt64>g__TryFormatUInt64Slow\|48_0 | parameter | 32 | -| Parameter 4 of System.Number.<TryFormatUInt128>g__TryFormatUInt128Slow\|52_0 | parameter | 32 | -| Parameter 4 of System.Number.Grisu3.TryDigitGenCounted | parameter | 32 | -| Parameter 4 of System.Number.Grisu3.TryDigitGenShortest | parameter | 32 | -| Parameter 4 of System.Number.Grisu3.TryRunCounted | parameter | 32 | -| Parameter 4 of System.Number.Grisu3.TryRunShortest | parameter | 32 | -| Parameter 4 of System.Number.TryFormatDecimal | parameter | 32 | -| Parameter 4 of System.Number.TryFormatDouble | parameter | 32 | -| Parameter 4 of System.Number.TryFormatHalf | parameter | 32 | -| Parameter 4 of System.Number.TryFormatInt64 | parameter | 32 | -| Parameter 4 of System.Number.TryFormatInt128 | parameter | 32 | -| Parameter 4 of System.Number.TryFormatSingle | parameter | 32 | -| Parameter 4 of System.Number.TryFormatUInt32 | parameter | 32 | -| Parameter 4 of System.Number.TryFormatUInt64 | parameter | 32 | -| Parameter 4 of System.Number.TryFormatUInt128 | parameter | 32 | -| Parameter 4 of System.Number.TryInt32ToHexStr | parameter | 32 | -| Parameter 4 of System.Number.TryInt64ToHexStr | parameter | 32 | -| Parameter 4 of System.Number.TryInt128ToHexStr | parameter | 32 | -| Parameter 4 of System.Number.TryNegativeInt32ToDecStr | parameter | 32 | -| Parameter 4 of System.Number.TryNegativeInt64ToDecStr | parameter | 32 | -| Parameter 4 of System.Number.TryNegativeInt128ToDecStr | parameter | 32 | -| Parameter 4 of System.Numerics.Matrix4x4.Impl.CreateConstrainedBillboard | parameter | 32 | -| Parameter 4 of System.Reflection.AssemblyName.EscapeString | parameter | 32 | -| Parameter 4 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 4 of System.Reflection.CustomAttribute.GetPropertyOrFieldData | parameter | 32 | -| Parameter 4 of System.Reflection.CustomAttribute._GetPropertyOrFieldData | parameter | 32 | -| Parameter 4 of System.Reflection.CustomAttribute._ParseAttributeUsageAttribute | parameter | 32 | -| Parameter 4 of System.Reflection.Emit.DynamicResolver.ResolveToken | parameter | 32 | -| Parameter 4 of System.Reflection.MetadataImport.GetDefaultValue | parameter | 32 | -| Parameter 4 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 4 of System.Reflection.MetadataImport.GetPInvokeMap | parameter | 32 | -| Parameter 4 of System.Reflection.MetadataImport.GetPropertyProps | parameter | 32 | -| Parameter 4 of System.Reflection.MetadataImport._GetDefaultValue | parameter | 32 | -| Parameter 4 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 4 of System.Reflection.MetadataImport._GetPropertyProps | parameter | 32 | -| Parameter 4 of System.Reflection.NullabilityInfoContext.GetNullabilityInfo | parameter | 32 | -| Parameter 4 of System.Reflection.RuntimeAssembly.GetVersion | parameter | 32 | -| Parameter 4 of System.Reflection.RuntimeEventInfo..ctor | parameter | 32 | -| Parameter 4 of System.Reflection.RuntimePropertyInfo..ctor | parameter | 32 | -| Parameter 4 of System.Resolver.ResolveToken | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.IMoniker.BindToObject | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.IMoniker.BindToStorage | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.IMoniker.ParseDisplayName | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.IMoniker.Reduce | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeComp.Bind | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeComp.BindType | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation2 | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetNames | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetParamCustData | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.Invoke | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetDocumentation | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetNames | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeInfo.Invoke | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation2 | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetDocumentation | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComWrappers.CallComputeVtables | parameter | 32 | -| Parameter 4 of System.Runtime.InteropServices.ComWrappers.TryGetOrCreateComInterfaceForObjectInternal | parameter | 32 | -| Parameter 4 of System.RuntimeFieldHandle.GetValue | parameter | 32 | -| Parameter 4 of System.RuntimeType.FilterHelper | parameter | 32 | -| Parameter 4 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache.PopulateEvents | parameter | 32 | -| Parameter 4 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache<!0>.PopulateEvents | parameter | 32 | -| Parameter 4 of System.RuntimeTypeHandle.GetActivationInfo | parameter | 32 | -| Parameter 4 of System.TermInfo.ParameterizedStrings.EvaluateInternal | parameter | 32 | -| Parameter 4 of System.Text.ASCIIEncoding.GetByteCountFast | parameter | 32 | -| Parameter 4 of System.Text.ASCIIEncoding.GetCharCountFast | parameter | 32 | -| Parameter 4 of System.Text.Decoder.Convert | parameter | 32 | -| Parameter 4 of System.Text.DecoderFallbackBuffer.TryInternalFallbackGetChars | parameter | 32 | -| Parameter 4 of System.Text.Encoder.Convert | parameter | 32 | -| Parameter 4 of System.Text.EncoderFallbackBuffer.TryInternalFallbackGetBytes | parameter | 32 | -| Parameter 4 of System.Text.EncoderNLS.TryDrainLeftoverDataForGetBytes | parameter | 32 | -| Parameter 4 of System.Text.Encoding.GetByteCountFast | parameter | 32 | -| Parameter 4 of System.Text.Encoding.GetCharCountFast | parameter | 32 | -| Parameter 4 of System.Text.Latin1Encoding.GetByteCountFast | parameter | 32 | -| Parameter 4 of System.Text.Latin1Encoding.GetCharCountFast | parameter | 32 | -| Parameter 4 of System.Text.StringBuilder.MakeRoom | parameter | 32 | -| Parameter 4 of System.Text.StringBuilder.Remove | parameter | 32 | -| Parameter 4 of System.Text.UTF8Encoding.GetByteCountFast | parameter | 32 | -| Parameter 4 of System.Text.UTF8Encoding.GetCharCountFast | parameter | 32 | -| Parameter 4 of System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler..ctor | parameter | 32 | -| Parameter 4 of System.Text.Unicode.Utf8Utility.TranscodeToUtf8 | parameter | 32 | -| Parameter 4 of System.Text.Unicode.Utf8Utility.TranscodeToUtf16 | parameter | 32 | -| Parameter 4 of System.Threading.EventWaitHandle..ctor | parameter | 32 | -| Parameter 4 of System.Threading.EventWaitHandle.CreateEventCore | parameter | 32 | -| Parameter 4 of System.Threading.Semaphore..ctor | parameter | 32 | -| Parameter 4 of System.Threading.Semaphore.CreateSemaphoreCore | parameter | 32 | -| Parameter 4 of System.TimeOnly.Deconstruct | parameter | 32 | -| Parameter 4 of System.TimeOnly.TryParseExact | parameter | 32 | -| Parameter 4 of System.TimeOnly.TryParseExactInternal | parameter | 32 | -| Parameter 4 of System.TimeSpan.TryParseExact | parameter | 32 | -| Parameter 4 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 4 of System.TimeZoneInfo.TZif_ParseRaw | parameter | 32 | -| Parameter 4 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 5 of System.Buffers.Text.Utf8Parser.TryParseAsSpecialFloatingPoint | parameter | 32 | -| Parameter 5 of System.DateTimeFormat.TryFormatDateOnlyR | parameter | 32 | -| Parameter 5 of System.DateTimeFormat.TryFormatTimeOnlyO | parameter | 32 | -| Parameter 5 of System.DateTimeParse.Lex | parameter | 32 | -| Parameter 5 of System.DateTimeParse.TryParseExact | parameter | 32 | -| Parameter 5 of System.DateTimeParse.TryParseExactMultiple | parameter | 32 | -| Parameter 5 of System.Diagnostics.Tracing.ActivityTracker.OnStart | parameter | 32 | -| Parameter 5 of System.Diagnostics.Tracing.EventSource.Write | parameter | 32 | -| Parameter 5 of System.Enum.TryFindFlagsNames | parameter | 32 | -| Parameter 5 of System.Globalization.EastAsianLunisolarCalendar.GregorianToLunar | parameter | 32 | -| Parameter 5 of System.Globalization.EastAsianLunisolarCalendar.LunarToGregorian | parameter | 32 | -| Parameter 5 of System.Globalization.UmAlQuraCalendar.ConvertHijriToGregorian | parameter | 32 | -| Parameter 5 of System.MemoryExtensions.TryWriteInterpolatedStringHandler..ctor | parameter | 32 | -| Parameter 5 of System.Number.<TryFormatInt32>g__TryFormatInt32Slow\|42_0 | parameter | 32 | -| Parameter 5 of System.Number.Grisu3.TryDigitGenShortest | parameter | 32 | -| Parameter 5 of System.Number.Grisu3.TryRoundWeedCounted | parameter | 32 | -| Parameter 5 of System.Number.Grisu3.TryRunShortest | parameter | 32 | -| Parameter 5 of System.Number.TryFormatInt32 | parameter | 32 | -| Parameter 5 of System.Reflection.AssemblyName.EnsureDestinationSize | parameter | 32 | -| Parameter 5 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 5 of System.Reflection.CustomAttribute.CreateCaObject | parameter | 32 | -| Parameter 5 of System.Reflection.CustomAttribute.GetPropertyOrFieldData | parameter | 32 | -| Parameter 5 of System.Reflection.CustomAttribute._GetPropertyOrFieldData | parameter | 32 | -| Parameter 5 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 5 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.IMoniker.ParseDisplayName | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.ITypeComp.Bind | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.GetDocumentation | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.ITypeInfo.GetDocumentation | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.ITypeLib2.FindName | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.ITypeLib2.GetDocumentation | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.ITypeLib.FindName | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComTypes.ITypeLib.GetDocumentation | parameter | 32 | -| Parameter 5 of System.Runtime.InteropServices.ComWrappers.TryGetOrCreateObjectForComInstanceInternal | parameter | 32 | -| Parameter 5 of System.RuntimeType.FilterHelper | parameter | 32 | -| Parameter 5 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache.PopulateRtFields | parameter | 32 | -| Parameter 5 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache<!0>.PopulateRtFields | parameter | 32 | -| Parameter 5 of System.TermInfo.ParameterizedStrings.EvaluateInternal | parameter | 32 | -| Parameter 5 of System.Text.ASCIIEncoding.GetBytesFast | parameter | 32 | -| Parameter 5 of System.Text.ASCIIEncoding.GetCharsFast | parameter | 32 | -| Parameter 5 of System.Text.Decoder.Convert | parameter | 32 | -| Parameter 5 of System.Text.Encoder.Convert | parameter | 32 | -| Parameter 5 of System.Text.Encoding.GetBytesFast | parameter | 32 | -| Parameter 5 of System.Text.Encoding.GetCharsFast | parameter | 32 | -| Parameter 5 of System.Text.Latin1Encoding.GetBytesFast | parameter | 32 | -| Parameter 5 of System.Text.Latin1Encoding.GetCharsFast | parameter | 32 | -| Parameter 5 of System.Text.UTF8Encoding.GetBytesFast | parameter | 32 | -| Parameter 5 of System.Text.UTF8Encoding.GetCharsFast | parameter | 32 | -| Parameter 5 of System.Text.Unicode.Utf8.TryWriteInterpolatedStringHandler..ctor | parameter | 32 | -| Parameter 5 of System.Text.Unicode.Utf8Utility.TranscodeToUtf8 | parameter | 32 | -| Parameter 5 of System.Text.Unicode.Utf8Utility.TranscodeToUtf16 | parameter | 32 | -| Parameter 5 of System.TimeOnly.Deconstruct | parameter | 32 | -| Parameter 5 of System.TimeZoneInfo.GetIsDaylightSavingsFromUtc | parameter | 32 | -| Parameter 5 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 5 of System.TimeZoneInfo.TZif_ParseRaw | parameter | 32 | -| Parameter 5 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 6 of System.Buffers.Text.Utf8Parser.TryCreateTimeSpan | parameter | 32 | -| Parameter 6 of System.Enum.TryFindFlagsNames | parameter | 32 | -| Parameter 6 of System.Globalization.EastAsianLunisolarCalendar.GregorianToLunar | parameter | 32 | -| Parameter 6 of System.Globalization.EastAsianLunisolarCalendar.LunarToGregorian | parameter | 32 | -| Parameter 6 of System.Globalization.TimeSpanParse.TryTimeToTicks | parameter | 32 | -| Parameter 6 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 6 of System.Reflection.CustomAttribute.FilterCustomAttributeRecord | parameter | 32 | -| Parameter 6 of System.Reflection.CustomAttribute.GetPropertyOrFieldData | parameter | 32 | -| Parameter 6 of System.Reflection.CustomAttribute._GetPropertyOrFieldData | parameter | 32 | -| Parameter 6 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 6 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 6 of System.Runtime.InteropServices.ComTypes.ITypeComp.Bind | parameter | 32 | -| Parameter 6 of System.RuntimeFieldHandle.SetValue | parameter | 32 | -| Parameter 6 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache.PopulateProperties | parameter | 32 | -| Parameter 6 of System.RuntimeType.RuntimeTypeCache.MemberInfoCache<!0>.PopulateProperties | parameter | 32 | -| Parameter 6 of System.Text.Decoder.Convert | parameter | 32 | -| Parameter 6 of System.Text.DecoderNLS.Convert | parameter | 32 | -| Parameter 6 of System.Text.Encoder.Convert | parameter | 32 | -| Parameter 6 of System.Text.EncoderNLS.Convert | parameter | 32 | -| Parameter 6 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 6 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 7 of Microsoft.Win32.SafeHandles.SafeFileHandle.Init | parameter | 32 | -| Parameter 7 of Microsoft.Win32.SafeHandles.SafeFileHandle.Open | parameter | 32 | -| Parameter 7 of System.Buffers.Text.Utf8Parser.TryCreateDateTimeOffsetInterpretingDataAsLocalTime | parameter | 32 | -| Parameter 7 of System.DateTime.TryCreate | parameter | 32 | -| Parameter 7 of System.DefaultBinder.BindToMethod | parameter | 32 | -| Parameter 7 of System.Number.Dragon4 | parameter | 32 | -| Parameter 7 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 7 of System.Reflection.Binder.BindToMethod | parameter | 32 | -| Parameter 7 of System.Reflection.CustomAttribute.FilterCustomAttributeRecord | parameter | 32 | -| Parameter 7 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 7 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 7 of System.Runtime.InteropServices.ComTypes.ITypeInfo2.Invoke | parameter | 32 | -| Parameter 7 of System.Runtime.InteropServices.ComTypes.ITypeInfo.Invoke | parameter | 32 | -| Parameter 7 of System.Text.Decoder.Convert | parameter | 32 | -| Parameter 7 of System.Text.DecoderNLS.Convert | parameter | 32 | -| Parameter 7 of System.Text.Encoder.Convert | parameter | 32 | -| Parameter 7 of System.Text.EncoderNLS.Convert | parameter | 32 | -| Parameter 7 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 7 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 8 of Microsoft.Win32.SafeHandles.SafeFileHandle.Init | parameter | 32 | -| Parameter 8 of Microsoft.Win32.SafeHandles.SafeFileHandle.Open | parameter | 32 | -| Parameter 8 of System.Activator.CreateInstanceInternal | parameter | 32 | -| Parameter 8 of System.Buffers.Text.Utf8Parser.TryCreateDateTime | parameter | 32 | -| Parameter 8 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 8 of System.Reflection.CustomAttribute.FilterCustomAttributeRecord | parameter | 32 | -| Parameter 8 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 8 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 8 of System.Text.Decoder.Convert | parameter | 32 | -| Parameter 8 of System.Text.DecoderNLS.Convert | parameter | 32 | -| Parameter 8 of System.Text.Encoder.Convert | parameter | 32 | -| Parameter 8 of System.Text.EncoderNLS.Convert | parameter | 32 | -| Parameter 8 of System.TimeZoneInfo.TZif_ParsePosixFormat | parameter | 32 | -| Parameter 8 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 9 of System.Globalization.Calendar.TryToDateTime | parameter | 32 | -| Parameter 9 of System.Globalization.GregorianCalendar.TryToDateTime | parameter | 32 | -| Parameter 9 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 9 of System.Reflection.CustomAttribute.FilterCustomAttributeRecord | parameter | 32 | -| Parameter 9 of System.Reflection.MetadataImport.GetMarshalAs | parameter | 32 | -| Parameter 9 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 9 of System.Text.Decoder.Convert | parameter | 32 | -| Parameter 9 of System.Text.DecoderNLS.Convert | parameter | 32 | -| Parameter 9 of System.Text.Encoder.Convert | parameter | 32 | -| Parameter 9 of System.Text.EncoderNLS.Convert | parameter | 32 | -| Parameter 9 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 10 of Microsoft.Win32.SafeHandles.SafeFileHandle.Open | parameter | 32 | -| Parameter 10 of System.Buffers.Text.Utf8Parser.TryCreateDateTimeOffset | parameter | 32 | -| Parameter 10 of System.Diagnostics.StackFrameHelper.GetSourceLineInfoDelegate.Invoke | parameter | 32 | -| Parameter 10 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 10 of System.Reflection.MetadataImport._GetMarshalAs | parameter | 32 | -| Parameter 10 of System.Text.Decoder.Convert | parameter | 32 | -| Parameter 10 of System.Text.DecoderNLS.Convert | parameter | 32 | -| Parameter 10 of System.Text.Encoder.Convert | parameter | 32 | -| Parameter 10 of System.Text.EncoderNLS.Convert | parameter | 32 | -| Parameter 10 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 11 of System.Diagnostics.StackFrameHelper.GetSourceLineInfoDelegate.Invoke | parameter | 32 | -| Parameter 11 of System.Reflection.Associates.AssignAssociates | parameter | 32 | -| Parameter 11 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 12 of System.Diagnostics.StackFrameHelper.GetSourceLineInfoDelegate.Invoke | parameter | 32 | -| Parameter 12 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 13 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 14 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 15 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 16 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 17 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 18 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 19 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 20 of System.TupleExtensions.Deconstruct | parameter | 32 | -| Parameter 21 of System.TupleExtensions.Deconstruct | parameter | 32 | -| System.Collections.Generic.Dictionary.CollectionsMarshalHelper.GetValueRefOrAddDefault | method | 32 | -| System.Collections.Generic.Dictionary.FindValue | method | 32 | -| System.Collections.Generic.Dictionary.GetBucket | method | 32 | -| System.Collections.Generic.Dictionary<!0,!1>.CollectionsMarshalHelper.GetValueRefOrAddDefault | method | 32 | -| System.Collections.Generic.Dictionary<!0,!1>.FindValue | method | 32 | -| System.Collections.Generic.Dictionary<!0,!1>.GetBucket | method | 32 | -| System.Collections.Generic.HashSet.GetBucketRef | method | 32 | -| System.Collections.Generic.HashSet<!0>.GetBucketRef | method | 32 | -| System.Collections.Generic.ValueListBuilder.Item | property | 32 | -| System.Collections.Generic.ValueListBuilder.get_Item | method | 32 | -| System.Collections.Generic.ValueListBuilder<!0>.get_Item | method | 32 | -| System.Collections.Generic.ValueListBuilder<Int32>.get_Item | method | 32 | -| System.Decimal.AsMutable | method | 32 | -| System.Diagnostics.Tracing.EventWrittenEventArgs.Metadata | property | 32 | -| System.Diagnostics.Tracing.EventWrittenEventArgs.get_Metadata | method | 32 | -| System.Nullable.GetValueRefOrDefaultRef | method | 32 | -| System.Numerics.Matrix3x2.AsImpl | method | 32 | -| System.Numerics.Matrix3x2.AsROImpl | method | 32 | -| System.Numerics.Matrix3x2.Impl.AsM3x2 | method | 32 | -| System.Numerics.Matrix4x4.AsImpl | method | 32 | -| System.Numerics.Matrix4x4.AsROImpl | method | 32 | -| System.Numerics.Matrix4x4.Impl.AsM4x4 | method | 32 | -| System.ReadOnlySpan.Enumerator.Current | property | 32 | -| System.ReadOnlySpan.Enumerator.get_Current | method | 32 | -| System.ReadOnlySpan.GetPinnableReference | method | 32 | -| System.ReadOnlySpan.Item | property | 32 | -| System.ReadOnlySpan.get_Item | method | 32 | -| System.ReadOnlySpan<!0>.get_Item | method | 32 | -| System.ReadOnlySpan<!1>.get_Item | method | 32 | -| System.ReadOnlySpan<Boolean>.get_Item | method | 32 | -| System.ReadOnlySpan<Byte>.GetPinnableReference | method | 32 | -| System.ReadOnlySpan<Byte>.get_Item | method | 32 | -| System.ReadOnlySpan<Char>.get_Item | method | 32 | -| System.ReadOnlySpan<Double>.get_Item | method | 32 | -| System.ReadOnlySpan<Int16>.get_Item | method | 32 | -| System.ReadOnlySpan<Int32>.get_Item | method | 32 | -| System.ReadOnlySpan<Int128>.get_Item | method | 32 | -| System.ReadOnlySpan<IntPtr>.GetPinnableReference | method | 32 | -| System.ReadOnlySpan<IntPtr>.get_Item | method | 32 | -| System.ReadOnlySpan<KeyValuePair<!0,!1>>.get_Item | method | 32 | -| System.ReadOnlySpan<Object>.get_Item | method | 32 | -| System.ReadOnlySpan<SafeWaitHandle>.get_Item | method | 32 | -| System.ReadOnlySpan<Single>.get_Item | method | 32 | -| System.ReadOnlySpan<String>.get_Item | method | 32 | -| System.ReadOnlySpan<Task>.get_Item | method | 32 | -| System.ReadOnlySpan<UInt16>.get_Item | method | 32 | -| System.ReadOnlySpan<UInt32>.get_Item | method | 32 | -| System.ReadOnlySpan<UInt64>.get_Item | method | 32 | -| System.ReadOnlySpan<WaitHandle>.get_Item | method | 32 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AsyncStateMachineBox.Context | property | 32 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AsyncStateMachineBox.get_Context | method | 32 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.AsyncStateMachineBox<!0>.get_Context | method | 32 | -| System.Runtime.CompilerServices.AsyncTaskMethodBuilder<!0>.AsyncStateMachineBox<IAsyncStateMachine>.get_Context | method | 32 | -| System.Runtime.CompilerServices.CastCache.Element | method | 32 | -| System.Runtime.CompilerServices.CastCache.HashShift | method | 32 | -| System.Runtime.CompilerServices.CastCache.TableData | method | 32 | -| System.Runtime.CompilerServices.CastCache.TableMask | method | 32 | -| System.Runtime.CompilerServices.CastHelpers.LdelemaRef | method | 32 | -| System.Runtime.CompilerServices.CastHelpers.ThrowArrayMismatchException | method | 32 | -| System.Runtime.CompilerServices.CastHelpers.Unbox | method | 32 | -| System.Runtime.CompilerServices.CastHelpers.Unbox_Helper | method | 32 | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.StateMachineBox.PerCoreCacheSlot | property | 32 | -| System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder.StateMachineBox.get_PerCoreCacheSlot | method | 32 | -| System.Runtime.CompilerServices.RuntimeHelpers.GetMultiDimensionalArrayBounds | method | 32 | -| System.Runtime.CompilerServices.RuntimeHelpers.GetRawData | method | 32 | -| System.Runtime.CompilerServices.Unsafe.Add | method | 32 | -| System.Runtime.CompilerServices.Unsafe.AddByteOffset | method | 32 | -| System.Runtime.CompilerServices.Unsafe.As | method | 32 | -| System.Runtime.CompilerServices.Unsafe.AsRef | method | 32 | -| System.Runtime.CompilerServices.Unsafe.NullRef | method | 32 | -| System.Runtime.CompilerServices.Unsafe.Subtract | method | 32 | -| System.Runtime.CompilerServices.Unsafe.SubtractByteOffset | method | 32 | -| System.Runtime.CompilerServices.Unsafe.Unbox | method | 32 | -| System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrAddDefault | method | 32 | -| System.Runtime.InteropServices.CollectionsMarshal.GetValueRefOrNullRef | method | 32 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller<!0,!1>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller<Byte,Byte>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller<CalendarId,CalendarId>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller<Char,Char>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller<ExceptionHandler,ExceptionHandler>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ArrayMarshaller<Int32,Int32>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller<!0,!1>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller<!0,!1>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller<Byte,Byte>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller<String,IntPtr>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.SpanMarshaller<!0,!1>.ManagedToUnmanagedIn.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.Marshalling.Utf16StringMarshaller.GetPinnableReference | method | 32 | -| System.Runtime.InteropServices.MemoryMarshal.AsRef | method | 32 | -| System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference | method | 32 | -| System.Runtime.InteropServices.MemoryMarshal.GetNonNullPinnableReference | method | 32 | -| System.Runtime.InteropServices.MemoryMarshal.GetReference | method | 32 | -| System.Span.Enumerator.Current | property | 32 | -| System.Span.Enumerator.get_Current | method | 32 | -| System.Span.GetPinnableReference | method | 32 | -| System.Span.Item | property | 32 | -| System.Span.get_Item | method | 32 | -| System.Span<!0>.get_Item | method | 32 | -| System.Span<!1>.get_Item | method | 32 | -| System.Span<Boolean>.get_Item | method | 32 | -| System.Span<Byte>.GetPinnableReference | method | 32 | -| System.Span<Byte>.get_Item | method | 32 | -| System.Span<Char>.GetPinnableReference | method | 32 | -| System.Span<Char>.get_Item | method | 32 | -| System.Span<EventPipeProviderConfigurationNative>.GetPinnableReference | method | 32 | -| System.Span<EventPipeProviderConfigurationNative>.get_Item | method | 32 | -| System.Span<IOVector>.get_Item | method | 32 | -| System.Span<Int32>.get_Item | method | 32 | -| System.Span<Int128>.get_Item | method | 32 | -| System.Span<IntPtr>.get_Item | method | 32 | -| System.Span<Object>.get_Item | method | 32 | -| System.Span<Range>.get_Item | method | 32 | -| System.Span<SafeWaitHandle>.get_Item | method | 32 | -| System.Span<UInt16>.get_Item | method | 32 | -| System.Span<UInt32>.GetPinnableReference | method | 32 | -| System.Span<UInt32>.get_Item | method | 32 | -| System.String.GetPinnableReference | method | 32 | -| System.String.GetRawStringData | method | 32 | -| System.String.GetRawStringDataAsUInt16 | method | 32 | -| System.Text.ValueStringBuilder.GetPinnableReference | method | 32 | -| System.Text.ValueStringBuilder.Item | property | 32 | -| System.Text.ValueStringBuilder.get_Item | method | 32 | -| System.Threading.Overlapped.GCHandleCountRef | method | 32 | -| System.Threading.Overlapped.GCHandleRef | method | 32 | -| Value | other | 32 | -| _arg0 | other | 32 | -| _reference | other | 32 | -| _value | other | 32 | diff --git a/csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.ql b/csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.ql deleted file mode 100644 index d5f2ee7f7c39..000000000000 --- a/csharp/ql/test/library-tests/cil/typeAnnotations/typeAnnotations.ql +++ /dev/null @@ -1,94 +0,0 @@ -import cil -import semmle.code.csharp.commons.QualifiedName -import semmle.code.cil.Type - -deprecated private string elementType(Element e, string toString) { - exists(string namespace, string type, string name | - toString = getQualifiedName(namespace, type, name) - | - e.(Method).hasFullyQualifiedName(namespace, type, name) and result = "method" - or - e.(Property).hasFullyQualifiedName(namespace, type, name) and result = "property" - ) - or - e = - any(Parameter p | - exists(string qualifier, string name | - p.getDeclaringElement().hasFullyQualifiedName(qualifier, name) - | - toString = "Parameter " + p.getIndex() + " of " + getQualifiedName(qualifier, name) - ) - ) and - result = "parameter" - or - e = - any(LocalVariable v | - exists(string namespace, string type, string name | - v.getImplementation().getMethod().hasFullyQualifiedName(namespace, type, name) - | - toString = - "Local variable " + v.getIndex() + " of method " + getQualifiedName(namespace, type, name) - ) - ) and - result = "local" - or - exists(string qualifier, string name | - e.(FunctionPointerType).hasFullyQualifiedName(qualifier, name) - | - toString = getQualifiedName(qualifier, name) - ) and - result = "fnptr" - or - not e instanceof Method and - not e instanceof Property and - not e instanceof Parameter and - not e instanceof LocalVariable and - not e instanceof FunctionPointerType and - result = "other" and - toString = e.toString() -} - -deprecated private predicate exclude(string s) { - s in [ - "Parameter 0 of Interop.libobjc.NSOperatingSystemVersion_objc_msgSend_stret", - "Parameter 1 of Interop.procfs.TryParseStatusFile", - "Parameter 1 of Interop.procfs.TryReadFile", - "Parameter 1 of Interop.procfs.TryReadStatusFile", - "Parameter 1 of System.CLRConfig.GetBoolValue", - "Parameter 1 of System.CLRConfig.GetConfigBoolValue", - "Parameter 1 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.CreateReferenceTrackingHandleInternal", - "Parameter 2 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.CreateReferenceTrackingHandleInternal", - "Parameter 2 of Interop.OSReleaseFile.<GetPrettyName>g__TryGetFieldValue|1_0", - "Parameter 2 of System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.InvokeUnhandledExceptionPropagation", - "Parameter 3 of System.IO.FileSystem.<TryCloneFile>g__TryCloneFile|5_0", - "Parameter 3 of System.IO.FileSystem.TryCloneFile", - "Parameter 6 of Microsoft.Win32.SafeHandles.SafeFileHandle.OpenNoFollowSymlink", - "Local variable 1 of method Interop.libobjc.NSOperatingSystemVersion_objc_msgSend_stret", - "Local variable 1 of method System.Diagnostics.Tracing.XplatEventLogger.LogEventSource", - "Local variable 2 of method System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.CreateReferenceTrackingHandleInternal", - "Local variable 3 of method System.Diagnostics.Tracing.XplatEventLogger.LogEventSource", - "Local variable 4 of method System.CLRConfig.GetConfigBoolValue", - "Local variable 4 of method System.Runtime.InteropServices.ObjectiveC.ObjectiveCMarshal.CreateReferenceTrackingHandleInternal", - "Local variable 5 of method Interop.OSReleaseFile.<GetPrettyName>g__TryGetFieldValue|1_0", - "Local variable 5 of method System.Diagnostics.Tracing.XplatEventLogger.LogEventSource", - "Local variable 13 of method Interop.procfs.TryParseStatusFile", - "Parameter 0 of System.Diagnostics.Tracing.XplatEventLogger.AppendByteArrayAsHexString", - "Parameter 1 of System.Diagnostics.Tracing.XplatEventLogger.MinimalJsonserializer" - ] -} - -deprecated query predicate typeAnnotation(string toString, string type, int i) { - exists(Element e | - cil_type_annotation(e, i) and - type = elementType(e, toString) and - not exclude(toString) and - ( - not e instanceof Parameter - or - not exists(Type t | - t = e.(Parameter).getDeclaringElement().(Method).getDeclaringType() and - t.hasFullyQualifiedName("System", "Environment") - ) // There are OS specific methods in this class - ) - ) -} diff --git a/csharp/ql/test/library-tests/controlflow/guards/options b/csharp/ql/test/library-tests/controlflow/guards/options index 85a6cc13696e..1548e4eedaf9 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/options +++ b/csharp/ql/test/library-tests/controlflow/guards/options @@ -1,3 +1,2 @@ -semmle-extractor-options: --cil semmle-extractor-options: ${testdir}/../../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs semmle-extractor-options: /r:System.Collections.Specialized.dll /r:System.Collections.dll /r:System.Linq.dll diff --git a/csharp/ql/test/library-tests/csharp11/PrintAst.expected b/csharp/ql/test/library-tests/csharp11/PrintAst.expected index 47f5e1353958..4716334aca04 100644 --- a/csharp/ql/test/library-tests/csharp11/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp11/PrintAst.expected @@ -1448,12 +1448,3 @@ StructDefault.cs: # 11| 0: [AssignExpr] ... = ... # 11| 0: [FieldAccess] access to field Y # 11| 1: [IntLiteral] 1 -cil/class1.cs: -# 4| [Class] Class1 -# 6| 5: [Method] Main -# 6| -1: [TypeMention] Void -#-----| 2: (Parameters) -# 6| 0: [Parameter] args -# 6| -1: [TypeMention] String[] -# 6| 1: [TypeMention] string -# 6| 4: [BlockStmt] {...} diff --git a/csharp/ql/test/library-tests/csharp11/cil/Assembly.cs_ b/csharp/ql/test/library-tests/csharp11/cil/Assembly.cs_ deleted file mode 100644 index 3511e152a5ec..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/Assembly.cs_ +++ /dev/null @@ -1,16 +0,0 @@ -using System; - -namespace Assembly -{ - public class MyAssemblyGeneric1Attribute<T> : Attribute { } - public class MyAssemblyGeneric2Attribute<T, U> : Attribute { } - - public class TestAssemblyGenericAttribute - { - [MyAssemblyGeneric1Attribute<object>()] - public void M1() { } - - [MyAssemblyGeneric2<int, string>()] - public void M2() { } - } -} diff --git a/csharp/ql/test/library-tests/csharp11/cil/Struct.cs_ b/csharp/ql/test/library-tests/csharp11/cil/Struct.cs_ deleted file mode 100644 index 1ea483764f77..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/Struct.cs_ +++ /dev/null @@ -1,14 +0,0 @@ -namespace structassembly; - -public class MyEmptyClass { } - -public ref struct RefStruct -{ - public int MyInt; - public ref byte MyByte; - public ref object MyObject; - internal ref MyEmptyClass MyEmptyClass; - public ref readonly byte MyReadonlyByte; - public readonly ref object MyReadonlyObject; - public readonly ref readonly string MyReadonlyString; -} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/csharp11/cil/assembly.dll b/csharp/ql/test/library-tests/csharp11/cil/assembly.dll deleted file mode 100644 index 790a657a8d871b79ad55d2fa28a0c983beb46220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 zcmeHKU2Ggz6+W}x-K?G1wbLXGP1;W4Buzsz>z@Rgl%~7(+O28q81Fiv0V$rHy}O=f zc4nEGO}uIWH)(kTg-Sdi@kGi4Di1*lqEtd^`FR1_C;EWkp;Azh0D&q%NLAYKojX4} zwo5=f(q8+XIo~<wo_o%@_s-m%J$r?Eh$xMI>lV?=cycR9dV8`8^}v0v4AAx7*Y~`v zoP2#xW!d!9mg_WJy{Q_yZ9BeN6{_2|Rnt~Wr^;&6sR^yWzi(gYdVY%Nq|!sj&uG7n zW_yeFs+*M&qAieQ1L?ho@Kn(Y=tP5(PX%$afa8~K6%=xAJ+$;ZoAQ768A2AJ{qg~# zQ_K{Ic5@-tx1}JAUmYZ>tk>NRt3<hkJ_r1G0&Bil@qzdCfj}p74dVuqO(j~=T+cOt zWNZa6oag|0q7@Lm<_gP!A(xDn(An2k^h7HVO(dXXZy|qf99xPq^fMK4BXEU<|3llG zI(P?BA04WOOzN($4#D029X;RrBAliVorn}Y8!%#CqsMxr55*p12Hx=xh;;=+6Xj1& zC}G5$|Aiykh&DblK6;E3$dCoP1-^#AM6|*_nJ@dUX*WE!cm{in%R0PRrd9B~U4|c9 zoGIaX1$YH<4^LQ56_^{sRL*RpTrUrLR~e@rLA{WtTywZbT!Eimc*0&r$2Dag(TP-0 z-z<Gyc|Mh;o07gpZt4#D4$QOkKJA12hH@74tfY5IdPLIiOZo?5?bnDs45pp{{f(sG zCFcJq`MW`R#z`iK0`n?^^bGwZbu>nA!UH4DYmk0{SdM~6azGu4dQe3LbxG4Z(4`R{ zqx~V;B+)sbB6K-AK-W{Fp!dP{04<~*qIs2P|H@7aaVhj<j2;GZV^jdT6eHHX5F?KK z+c9D<FRek>0|Ytiei)*?61}p<vX?AWe+V>79|P^92S5jDRMKOT7A2jL^fQt^DX9*c zr4HzJoHXXQNoq>^tfcp2M_P(Tn`xRfx)W~~jdqa@I!qTqKTbaY9jBjyK1^?bPSS5d zpOEr0=r|7Uk}^r3qqm{!12rUXguFq2qRUcpSxPQLzg4*^C0C{7DkR608?+aGZopd| z<vR~Qs^Wp}qCJ#e#qv_Jy^H1Fln@-G`50}Xlae36lSd8E9OKzhn(Y)lPc*Am=P_Xm z*EB|pK2BD(?TaO7$2J;_bq&VoQ?pL3ZHW_jw=Pn-<N2bgEwpXlYznFf&tK;}9!gWq zs;JdOtt**ynk~~3u8c$Xld9Ng(bF3uMpP2jcB7$Jt%Pi@ZCPt2Q4AH+Pa0Nqw;}v# zeCfnR$35Tm8re@Hn$yDdOvm1+oU!YU+tht1b?e_+O*(enY_wfz*LAWW>Sety{LTVu z=XK>l38e9Yu=EwlCG=5b^De4x_}zg~(wL9GOI<}Yf<5bYr>h7TNy>e*YFehB&`xxG zLDQDrShuEHm?_@8q=)-Pt65fPMxi<$CF+(ixJINIzT-ynlBqXr$Ma3Yi$q~OTC@ww z!o6S`!VA|J6Jn<UMwxPO9?hDD>v&Gx$GDm(VktVF=~0|!u*M#psy>A{D5^#ryF3(h z^Y^d)<LU3M7JlTu^xn^Rb?&CLswlZ0m6Qyap&^C?l0BB$zICUvJG*`B?o@6dckR)0 zUmkk1?|4u4o=hr>{~ViU*z}%EP6;m%_wu{1lG<^`)mw9pJ+)$p7T2V*>^c`c1$LX{ zNq$73o!Z<~Wzum)vDJDoEaoE@KB<ks!N9h7ua-=&W$B$cY~37>P+`%J>7pgU=S!iC zJRSIQ!v82fsQ3%y65xx;lO9m$x%2#mtEBpimgQWWZCk$CvT%A+y)*VQ-Uv8}Y<6<n ze`UrWtN-LJBR^H3XvlsuKcm+7-d}!4%IrM*c@AC0{YFh#@Sr=<??-<Tx)&2Vh=Qvk zGhtgOm&%0`edTZVUzxk~)`N$K&;R|O>?6PE;b`ZZrm?IG%NA8(<<H<XkjKlgX^F!I z_EY`~R^ITIb+^TwkJnk=GOMocb`CS}@=?9>PW7q0EO*`(J{BX^Xsue6%8wVvj(&o| zFy5F5!$7K^fBK!=wYQ(GzwqZv-{}2Yc$MSG`=je}m`3suUHJmpIc%4bWzFiQO-;|h z-VyRdO6{%vq;4ol($`1)|5XL}R!6jxXmxE`{01Vz`QIRCJO1tP*#gn4eCWdVYU&8M z(^RH&pi{H}ZU%RuIp7)4>EKrv{W$&C_k)`V&%iBsJ{kbrCxiQQ2<4*$s=%vGF8tu` zMFKu;s*@x2`{bw!v^u07^g8*lbAW<&Ev+I}1u^-sG9hn#fTx=XMM2il-w~>E4QPyd zA)kc5Cbi@o9b}{f3F%(PoF4cl>@D0DxgD2dqG(Iddbp$U+^sdSebCqud<c{{zS9`% zVstm3QQRI!;?8sR!=5YROIsVUS&0bO&!JHbdj6F}bP#V}ysR+}UueiU%NBCrNE@^a zk3=f^gq-74DCY{Yb(9~Ypc=QEE2!f<d^m`pje7WrC<#6`)^SAM=+}-}Uy*J-h#r!) iE3WgTV)v}AVs{MJ@<Y_HnEabrJ^mre`J+_h3j7NhQP$f4 diff --git a/csharp/ql/test/library-tests/csharp11/cil/class1.cs b/csharp/ql/test/library-tests/csharp11/cil/class1.cs deleted file mode 100644 index 141d836fd9ee..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -using System; -using Assembly; - -public class Class1 -{ - public static void Main(string[] args) { } -} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/csharp11/cil/genericAttribute.expected b/csharp/ql/test/library-tests/csharp11/cil/genericAttribute.expected deleted file mode 100644 index 2ff7cf5d931d..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/genericAttribute.expected +++ /dev/null @@ -1,2 +0,0 @@ -| assembly.dll:0:0:0:0 | [MyAssemblyGeneric1Attribute<Object>(...)] | MyAssemblyGeneric1Attribute<Object> | 1 | (Object) | -| assembly.dll:0:0:0:0 | [MyAssemblyGeneric2Attribute<Int32,String>(...)] | MyAssemblyGeneric2Attribute<Int32,String> | 2 | (Int32,String) | diff --git a/csharp/ql/test/library-tests/csharp11/cil/genericAttribute.ql b/csharp/ql/test/library-tests/csharp11/cil/genericAttribute.ql deleted file mode 100644 index d386bb8ce0e5..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/genericAttribute.ql +++ /dev/null @@ -1,14 +0,0 @@ -import semmle.code.cil.CIL - -deprecated private string getTypeArguments(GenericAttribute a) { - result = "(" + concat(Type t | t = a.getATypeArgument() | t.getName(), ",") + ")" -} - -deprecated query predicate genericAttribute( - GenericAttribute a, string name, int numArgs, string args -) { - a.getFile().getStem() = "assembly" and - name = a.getType().getName() and - numArgs = a.getNumberOfTypeArguments() and - args = getTypeArguments(a) -} diff --git a/csharp/ql/test/library-tests/csharp11/cil/options b/csharp/ql/test/library-tests/csharp11/cil/options deleted file mode 100644 index 8511aa162b8e..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/options +++ /dev/null @@ -1 +0,0 @@ -semmle-extractor-options: --cil diff --git a/csharp/ql/test/library-tests/csharp11/cil/refField.expected b/csharp/ql/test/library-tests/csharp11/cil/refField.expected deleted file mode 100644 index fbd3f405454c..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/refField.expected +++ /dev/null @@ -1,6 +0,0 @@ -| file://:0:0:0:0 | MyByte | Byte | -| file://:0:0:0:0 | MyEmptyClass | MyEmptyClass | -| file://:0:0:0:0 | MyObject | Object | -| file://:0:0:0:0 | MyReadonlyByte | Byte | -| file://:0:0:0:0 | MyReadonlyObject | Object | -| file://:0:0:0:0 | MyReadonlyString | String | diff --git a/csharp/ql/test/library-tests/csharp11/cil/refField.ql b/csharp/ql/test/library-tests/csharp11/cil/refField.ql deleted file mode 100644 index 3474beb49137..000000000000 --- a/csharp/ql/test/library-tests/csharp11/cil/refField.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cil - -deprecated query predicate cilfields(CIL::Field f, string type) { - f.isRef() and type = f.getType().toString() and f.getDeclaringType().getName() = "RefStruct" -} diff --git a/csharp/ql/test/library-tests/csharp11/cil/structassembly.dll b/csharp/ql/test/library-tests/csharp11/cil/structassembly.dll deleted file mode 100644 index 364ae8b144200483fb4c87f81e1756168d75e733..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120 zcmeHLYit}>6+Scji0u%^j*D?g0~0$<Tc@41aRNz5Qm<d_wqD!W-Mna}cy{;hdYajp z&CINmr7gG(0rCUX@~0pHLgW_$sS&C~d8z$@go>zSQB^{KAW{J#p$a4(KOiD}=g#bU z?1Z!+{#5F9?l<Rk&pr3tJ9o||`>|&zMnrM+>(_~1#FN{ PA()ZHKaUN^na`RdLW zmDyK!7M4s;tGiCsHELSPux-cJib8W6wr1Me)O=p6Ic1@5+0wNubiFW5G^@nuj-mc< zwr0CZgW6_ggy=nxBm?O$hVj(U$I*#;B&`N<vw-85Z3PH9w-_y6WK;gP_6%7Tp?wB^ z=b0EMI?0LH*cO8@p16mouu*p_UL)#==sUna7~yqaocF<B?E*k2*BZtRPBx8bQFlGJ z1Wv{_4uTijjUH*^h+cPv<-m|rMvLg|Ya4o`jT22oSV?}L^NPl?sg$5^X+*0CTw&q= z&<54Jdx^SexEK=Z`##qXcX#&3zWgMd#)prz6tNq4#Jo<A{fH04Bh~?rG?9O3LJ1?| zbuRDKNA$6gvC#t@Xo4(Y9Akz)K~%@{QKs|0YuZ(hEq;o##OWJ4mZw$Fd@P0@IF^~h z^D6j1Bfg;t%PE5AhH#V<w-I$R^ABZ=cp)J1piSt!b$mQI%{$Op$DOF82G1m|C|A@Z zU6=S(`ii=hR^c{DZ_<9qf3I8wW+Wyh4oUo)#2*oBj}v?7Q<s6gF~+mRxKGlTr1qDA zMAElQ`e$-R9iup&AR3uFrH6*-O?4k+kb?U*Mlr{$?V;~t+&<9A6SyVG#gJPC*^0+z zV`*rT)Ct`oa7V#yqTTcxbr?9N>cA(}QCQ5x7<Z_9frGLAco*ZbL!fs-vYYlmvYT>h znie#U@6!X%VMPj^YID=z+&1?RxTo73>%P$DcpYDFbL^#)o<sh7fl0a@*hTjMduUYR z0f}je8Hq<Fo|0$)lhg#hmo7>AS>Sg160nE9Atk27rzGBmbNM?(r_HoLI`z>h;C4C> z9HOUyd*~(L7`+DkDE%5ZNq+=BEaiFNBt1fZ2X+BVk}idGiT+6!q~wB>T!4O1xhy4@ zrQ|Xs8RZQcq&jdLEd$TM&l}{?6QCcb*A+#%07+V6e5G|3C~UKMNBAta+D`aww?kQ{ z+_1zE$~Qe<)bw1#_RX50<A&7`g=SsQbgd}LWl>K1c+H9pU(lpetDBZ^XN2K5T#*xJ z8>V|Rg9n5yT*Hs5+Fp)%Mpd*q%6JpaoT$v2XClHWQEXJJM$wAM<{Fl@UXu1aQ7c-_ zg6T&M=Zl_W2|qHlV7OJ`&)~x)&N=RxwaHr^X0WQ`!u3qYzEPR6D~?+;d?*d;KUz&X zcEzkVu<CVAu(Z5U5q>j=WP5AQgH%f6oUn}Zl8WeCkuA8`rjoxlu$2bP$Df%sMaIhs zqdae0%{5ue3(scQ5k<J$Qtq2Y(=z>tHrt$NV!N~07^CdKqhx0+qq^a==wUi=3rDPj zYneRXMdU`fNqX6`!qF6tYC97ZOO!Zoq?dfhZONxhqiQ>zZ<f54D2!Wgoy5Fwm(7y! zC^#{Q1IHR{D@z=+M_IGvI-XPUF|I7q*v6)3Lfo9L)&1tAg&3)wwBWF?cE0!+!ip>` z6!4zPwLz7!{S6BZ-ms5<{^)nIkNjoorDw1G-2CDXwoqJCl#ZB2N&-Z0FSFf}Jdn^- zrCaT|a{uX1_P*YAFqYhrP?PxA5li+Y(C>&Rd$tXL=;lEQ9<(FTp@b#K2l$RGsQo8g zqdw=@)8|W~&Z#Ucxz0IHf!!wgg*dFxfIc@}m~>o`uGjAk_u%mINAwXm=)SG}dQ6#K z-7=bUcw0Jnga(T~g}T@8Cq9u1C1l!BnP8Ste6aBs$R&d>GEco*p--LRFK$8IlC~`8 zT()8PX5A7HbY|=&;hMN9*lZRb<hNnQpS`y-OUO?k5bdNwIlj?6?VRZ^X}B}wy{5UM zB3xnP_-KYJG%jepM!oL12#0H0pDW(w;9Ag}iq>=*u2u@~Kpn2PD%90J3@Ag8?9Du3 z*al7?{46Qi1&;R_^i|ZEs}TbZt`Ge#^hMNai?YB26E<1ewirBf`KkOLmaN0ua<4u7 z!jB(+fBxd|Ec-|u^AKdJW|o!=VcDW6tkenIb17VpHA~!A!l6%{wNfQ-$#CmT`NH#4 zmRWQSw|O5kUTXdBrkvtqDY>~RTlhEt8}xd;T%`Pi=@0GuFohv)|7#c$FZ-33v%kIc z{LB4+`^mj~o)61VUdby=YfRnPTIFh>IgNulWm#Fnw5jHmaB79TLZtTkop7=-JvVxM zR}#qpS9wGOL@N;?Ncp1B$W7#I$G;s;juTzuLmakisPhQ5Yo1O6rzr<2gI`*6;4{FP z;8z#@F#e~11vLquQf|TX{(wP!DeLf%3m#mrEAVQN3qL06egU60RmhPByX2?>v<9Re z^alB`bHD}dO8im8svssGRwm@tn|RtUZAP%};BPM#IR|uvwqoog{MD!~=V)R@1~?(z zd(vwIwV4m8hd%*b5pgu7enyUOMLq?s2V0J#zAnzU@-u?#U1`UC9DZDQT3hER>dcXL zCs_8uo-^f3TN}|?k;rc~pH5}i@-Hl+yK%GPB8HEu^uU>@V{N>GDlNe~$@h0o&Nm;* zIm<j>Yu(HR8GF0)26<nAKL^nS`TcM5K7!vL3hMOe_>Eax%Nfyrncwt=9n^60)@OQc Z4CnhD*0kXN41RU+9TxYy;r?GT@NbvzL398B From f59aaf1d755088c4e2893930fde84d743c95253a Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Thu, 7 Mar 2024 19:45:05 +0100 Subject: [PATCH 136/731] C#: Add change note. --- csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md diff --git a/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md b/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md new file mode 100644 index 000000000000..36be2372b4ec --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. From eb62c033aabf238e95333333e20216379656a426 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Tue, 12 Mar 2024 11:12:46 +0100 Subject: [PATCH 137/731] C#: Remove the cil extractor option. --- csharp/extractor/Semmle.Util/CommandLineOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Util/CommandLineOptions.cs b/csharp/extractor/Semmle.Util/CommandLineOptions.cs index 8dfd4ea5479c..f2cf332e07f3 100644 --- a/csharp/extractor/Semmle.Util/CommandLineOptions.cs +++ b/csharp/extractor/Semmle.Util/CommandLineOptions.cs @@ -40,7 +40,7 @@ public interface ICommandLineOptions public static class OptionsExtensions { - private static readonly string[] ExtractorOptions = new[] { "trap_compression", "cil" }; + private static readonly string[] ExtractorOptions = ["trap_compression"]; private static List<string> GetExtractorOptions() { var extractorOptions = new List<string>(); From 0e0b73a5e67c3f07530e40715358a471cfcc5ba5 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 12 Mar 2024 11:22:04 +0100 Subject: [PATCH 138/731] Address review comment --- shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 2b43cbdd4745..6fbeb35bded2 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -1334,8 +1334,10 @@ module MakeImpl<InputSig Lang> { bindingset[c, t, tail] additional Ap apCons(Content c, Typ t, Ap tail) { result = Param::apCons(c, t, tail) and - Config::accessPathLimit() > 0 and - if tail instanceof ApNil then any() else Config::accessPathLimit() > 1 + exists(int limit | + limit = Config::accessPathLimit() and + if tail instanceof ApNil then limit > 0 else limit > 1 + ) } pragma[nomagic] From 95a5ec7f27520aa050f6ad470add684d111f0d94 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Tue, 12 Mar 2024 13:22:11 +0100 Subject: [PATCH 139/731] add test that the new `Object.groupBy` method has a type --- .../TypeScript/Types/printAst.expected | 103 ++++++++++++++++-- .../TypeScript/Types/tests.expected | 25 +++++ .../library-tests/TypeScript/Types/tst.ts | 4 + 3 files changed, 124 insertions(+), 8 deletions(-) diff --git a/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected b/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected index 90fa2b8dcda2..081636baa063 100644 --- a/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected +++ b/javascript/ql/test/library-tests/TypeScript/Types/printAst.expected @@ -125,6 +125,8 @@ nodes | file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | | file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | | file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | +| file://:0:0:0:0 | (Arguments) | semmle.label | (Arguments) | +| file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | | file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | | file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | | file://:0:0:0:0 | (Parameters) | semmle.label | (Parameters) | @@ -1760,8 +1762,8 @@ nodes | tst.ts:483:46:483:50 | [LocalTypeAccess] Pair3 | semmle.label | [LocalTypeAccess] Pair3 | | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3<string> | semmle.label | [GenericTypeExpr] Pair3<string> | | tst.ts:483:52:483:57 | [KeywordTypeExpr] string | semmle.label | [KeywordTypeExpr] string | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | semmle.label | [NamespaceDeclaration] module ... ow"); } | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | semmle.order | 90 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | semmle.label | [NamespaceDeclaration] module ... }); } | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | semmle.order | 90 | | tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.label | [VarDecl] TS54 | | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.label | [FunctionDeclStmt] functio ... 0]; } | | tst.ts:487:12:487:28 | [VarDecl] createStreetLight | semmle.label | [VarDecl] createStreetLight | @@ -1788,6 +1790,33 @@ nodes | tst.ts:491:29:491:36 | [Literal] "yellow" | semmle.label | [Literal] "yellow" | | tst.ts:491:39:491:45 | [Literal] "green" | semmle.label | [Literal] "green" | | tst.ts:491:49:491:56 | [Literal] "yellow" | semmle.label | [Literal] "yellow" | +| tst.ts:493:3:495:5 | [DeclStmt] const myObj = ... | semmle.label | [DeclStmt] const myObj = ... | +| tst.ts:493:9:493:13 | [VarDecl] myObj | semmle.label | [VarDecl] myObj | +| tst.ts:493:9:495:4 | [VariableDeclarator] myObj = ... "; }) | semmle.label | [VariableDeclarator] myObj = ... "; }) | +| tst.ts:493:17:493:22 | [VarRef] Object | semmle.label | [VarRef] Object | +| tst.ts:493:17:493:30 | [DotExpr] Object.groupBy | semmle.label | [DotExpr] Object.groupBy | +| tst.ts:493:17:495:4 | [MethodCallExpr] Object. ... "; }) | semmle.label | [MethodCallExpr] Object. ... "; }) | +| tst.ts:493:24:493:30 | [Label] groupBy | semmle.label | [Label] groupBy | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | semmle.label | [ArrayExpr] [0, 1, 2, 3, 4, 5] | +| tst.ts:493:33:493:33 | [Literal] 0 | semmle.label | [Literal] 0 | +| tst.ts:493:36:493:36 | [Literal] 1 | semmle.label | [Literal] 1 | +| tst.ts:493:39:493:39 | [Literal] 2 | semmle.label | [Literal] 2 | +| tst.ts:493:42:493:42 | [Literal] 3 | semmle.label | [Literal] 3 | +| tst.ts:493:45:493:45 | [Literal] 4 | semmle.label | [Literal] 4 | +| tst.ts:493:48:493:48 | [Literal] 5 | semmle.label | [Literal] 5 | +| tst.ts:493:52:495:3 | [ArrowFunctionExpr] (num, i ... d"; } | semmle.label | [ArrowFunctionExpr] (num, i ... d"; } | +| tst.ts:493:53:493:55 | [SimpleParameter] num | semmle.label | [SimpleParameter] num | +| tst.ts:493:58:493:62 | [SimpleParameter] index | semmle.label | [SimpleParameter] index | +| tst.ts:493:68:495:3 | [BlockStmt] { r ... d"; } | semmle.label | [BlockStmt] { r ... d"; } | +| tst.ts:494:5:494:41 | [ReturnStmt] return ... "odd"; | semmle.label | [ReturnStmt] return ... "odd"; | +| tst.ts:494:12:494:14 | [VarRef] num | semmle.label | [VarRef] num | +| tst.ts:494:12:494:18 | [BinaryExpr] num % 2 | semmle.label | [BinaryExpr] num % 2 | +| tst.ts:494:12:494:24 | [BinaryExpr] num % 2 === 0 | semmle.label | [BinaryExpr] num % 2 === 0 | +| tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | semmle.label | [ConditionalExpr] num % 2 ... : "odd" | +| tst.ts:494:18:494:18 | [Literal] 2 | semmle.label | [Literal] 2 | +| tst.ts:494:24:494:24 | [Literal] 0 | semmle.label | [Literal] 0 | +| tst.ts:494:28:494:33 | [Literal] "even" | semmle.label | [Literal] "even" | +| tst.ts:494:36:494:40 | [Literal] "odd" | semmle.label | [Literal] "odd" | | tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.label | [ExportDeclaration] export ... 'b'; } | | tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | semmle.order | 91 | | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | semmle.label | [FunctionDeclStmt] functio ... 'b'; } | @@ -2251,6 +2280,10 @@ edges | file://:0:0:0:0 | (Arguments) | tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | semmle.order | 0 | | file://:0:0:0:0 | (Arguments) | tst.ts:491:49:491:56 | [Literal] "yellow" | semmle.label | 1 | | file://:0:0:0:0 | (Arguments) | tst.ts:491:49:491:56 | [Literal] "yellow" | semmle.order | 1 | +| file://:0:0:0:0 | (Arguments) | tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | semmle.label | 0 | +| file://:0:0:0:0 | (Arguments) | tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | semmle.order | 0 | +| file://:0:0:0:0 | (Arguments) | tst.ts:493:52:495:3 | [ArrowFunctionExpr] (num, i ... d"; } | semmle.label | 1 | +| file://:0:0:0:0 | (Arguments) | tst.ts:493:52:495:3 | [ArrowFunctionExpr] (num, i ... d"; } | semmle.order | 1 | | file://:0:0:0:0 | (Parameters) | tst.ts:14:17:14:17 | [SimpleParameter] x | semmle.label | 0 | | file://:0:0:0:0 | (Parameters) | tst.ts:14:17:14:17 | [SimpleParameter] x | semmle.order | 0 | | file://:0:0:0:0 | (Parameters) | tst.ts:14:28:14:28 | [SimpleParameter] y | semmle.label | 1 | @@ -2353,6 +2386,10 @@ edges | file://:0:0:0:0 | (Parameters) | tst.ts:487:48:487:53 | [SimpleParameter] colors | semmle.order | 0 | | file://:0:0:0:0 | (Parameters) | tst.ts:487:61:487:72 | [SimpleParameter] defaultColor | semmle.label | 1 | | file://:0:0:0:0 | (Parameters) | tst.ts:487:61:487:72 | [SimpleParameter] defaultColor | semmle.order | 1 | +| file://:0:0:0:0 | (Parameters) | tst.ts:493:53:493:55 | [SimpleParameter] num | semmle.label | 0 | +| file://:0:0:0:0 | (Parameters) | tst.ts:493:53:493:55 | [SimpleParameter] num | semmle.order | 0 | +| file://:0:0:0:0 | (Parameters) | tst.ts:493:58:493:62 | [SimpleParameter] index | semmle.label | 1 | +| file://:0:0:0:0 | (Parameters) | tst.ts:493:58:493:62 | [SimpleParameter] index | semmle.order | 1 | | file://:0:0:0:0 | (Parameters) | type_alias.ts:14:10:14:17 | [SimpleParameter] property | semmle.label | 0 | | file://:0:0:0:0 | (Parameters) | type_alias.ts:14:10:14:17 | [SimpleParameter] property | semmle.order | 0 | | file://:0:0:0:0 | (Parameters) | type_alias.ts:21:19:21:21 | [SimpleParameter] key | semmle.label | 0 | @@ -5223,12 +5260,14 @@ edges | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3<string> | tst.ts:483:46:483:50 | [LocalTypeAccess] Pair3 | semmle.order | 1 | | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3<string> | tst.ts:483:52:483:57 | [KeywordTypeExpr] string | semmle.label | 2 | | tst.ts:483:46:483:58 | [GenericTypeExpr] Pair3<string> | tst.ts:483:52:483:57 | [KeywordTypeExpr] string | semmle.order | 2 | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.label | 1 | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.order | 1 | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.label | 2 | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.order | 2 | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | semmle.label | 3 | -| tst.ts:486:1:492:1 | [NamespaceDeclaration] module ... ow"); } | tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | semmle.order | 3 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.label | 1 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:486:8:486:11 | [VarDecl] TS54 | semmle.order | 1 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.label | 2 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | semmle.order | 2 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | semmle.label | 3 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:491:3:491:58 | [ExprStmt] createS ... llow"); | semmle.order | 3 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:493:3:495:5 | [DeclStmt] const myObj = ... | semmle.label | 4 | +| tst.ts:486:1:496:1 | [NamespaceDeclaration] module ... }); } | tst.ts:493:3:495:5 | [DeclStmt] const myObj = ... | semmle.order | 4 | | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | file://:0:0:0:0 | (Parameters) | semmle.label | 1 | | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | file://:0:0:0:0 | (Parameters) | semmle.order | 1 | | tst.ts:487:3:489:3 | [FunctionDeclStmt] functio ... 0]; } | file://:0:0:0:0 | (TypeParameters) | semmle.label | 2 | @@ -5271,6 +5310,54 @@ edges | tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:29:491:36 | [Literal] "yellow" | semmle.order | 2 | | tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:39:491:45 | [Literal] "green" | semmle.label | 3 | | tst.ts:491:21:491:46 | [ArrayExpr] ["red", ... green"] | tst.ts:491:39:491:45 | [Literal] "green" | semmle.order | 3 | +| tst.ts:493:3:495:5 | [DeclStmt] const myObj = ... | tst.ts:493:9:495:4 | [VariableDeclarator] myObj = ... "; }) | semmle.label | 1 | +| tst.ts:493:3:495:5 | [DeclStmt] const myObj = ... | tst.ts:493:9:495:4 | [VariableDeclarator] myObj = ... "; }) | semmle.order | 1 | +| tst.ts:493:9:495:4 | [VariableDeclarator] myObj = ... "; }) | tst.ts:493:9:493:13 | [VarDecl] myObj | semmle.label | 1 | +| tst.ts:493:9:495:4 | [VariableDeclarator] myObj = ... "; }) | tst.ts:493:9:493:13 | [VarDecl] myObj | semmle.order | 1 | +| tst.ts:493:9:495:4 | [VariableDeclarator] myObj = ... "; }) | tst.ts:493:17:495:4 | [MethodCallExpr] Object. ... "; }) | semmle.label | 2 | +| tst.ts:493:9:495:4 | [VariableDeclarator] myObj = ... "; }) | tst.ts:493:17:495:4 | [MethodCallExpr] Object. ... "; }) | semmle.order | 2 | +| tst.ts:493:17:493:30 | [DotExpr] Object.groupBy | tst.ts:493:17:493:22 | [VarRef] Object | semmle.label | 1 | +| tst.ts:493:17:493:30 | [DotExpr] Object.groupBy | tst.ts:493:17:493:22 | [VarRef] Object | semmle.order | 1 | +| tst.ts:493:17:493:30 | [DotExpr] Object.groupBy | tst.ts:493:24:493:30 | [Label] groupBy | semmle.label | 2 | +| tst.ts:493:17:493:30 | [DotExpr] Object.groupBy | tst.ts:493:24:493:30 | [Label] groupBy | semmle.order | 2 | +| tst.ts:493:17:495:4 | [MethodCallExpr] Object. ... "; }) | file://:0:0:0:0 | (Arguments) | semmle.label | 1 | +| tst.ts:493:17:495:4 | [MethodCallExpr] Object. ... "; }) | file://:0:0:0:0 | (Arguments) | semmle.order | 1 | +| tst.ts:493:17:495:4 | [MethodCallExpr] Object. ... "; }) | tst.ts:493:17:493:30 | [DotExpr] Object.groupBy | semmle.label | 0 | +| tst.ts:493:17:495:4 | [MethodCallExpr] Object. ... "; }) | tst.ts:493:17:493:30 | [DotExpr] Object.groupBy | semmle.order | 0 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:33:493:33 | [Literal] 0 | semmle.label | 1 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:33:493:33 | [Literal] 0 | semmle.order | 1 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:36:493:36 | [Literal] 1 | semmle.label | 2 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:36:493:36 | [Literal] 1 | semmle.order | 2 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:39:493:39 | [Literal] 2 | semmle.label | 3 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:39:493:39 | [Literal] 2 | semmle.order | 3 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:42:493:42 | [Literal] 3 | semmle.label | 4 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:42:493:42 | [Literal] 3 | semmle.order | 4 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:45:493:45 | [Literal] 4 | semmle.label | 5 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:45:493:45 | [Literal] 4 | semmle.order | 5 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:48:493:48 | [Literal] 5 | semmle.label | 6 | +| tst.ts:493:32:493:49 | [ArrayExpr] [0, 1, 2, 3, 4, 5] | tst.ts:493:48:493:48 | [Literal] 5 | semmle.order | 6 | +| tst.ts:493:52:495:3 | [ArrowFunctionExpr] (num, i ... d"; } | file://:0:0:0:0 | (Parameters) | semmle.label | 1 | +| tst.ts:493:52:495:3 | [ArrowFunctionExpr] (num, i ... d"; } | file://:0:0:0:0 | (Parameters) | semmle.order | 1 | +| tst.ts:493:52:495:3 | [ArrowFunctionExpr] (num, i ... d"; } | tst.ts:493:68:495:3 | [BlockStmt] { r ... d"; } | semmle.label | 5 | +| tst.ts:493:52:495:3 | [ArrowFunctionExpr] (num, i ... d"; } | tst.ts:493:68:495:3 | [BlockStmt] { r ... d"; } | semmle.order | 5 | +| tst.ts:493:68:495:3 | [BlockStmt] { r ... d"; } | tst.ts:494:5:494:41 | [ReturnStmt] return ... "odd"; | semmle.label | 1 | +| tst.ts:493:68:495:3 | [BlockStmt] { r ... d"; } | tst.ts:494:5:494:41 | [ReturnStmt] return ... "odd"; | semmle.order | 1 | +| tst.ts:494:5:494:41 | [ReturnStmt] return ... "odd"; | tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | semmle.label | 1 | +| tst.ts:494:5:494:41 | [ReturnStmt] return ... "odd"; | tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | semmle.order | 1 | +| tst.ts:494:12:494:18 | [BinaryExpr] num % 2 | tst.ts:494:12:494:14 | [VarRef] num | semmle.label | 1 | +| tst.ts:494:12:494:18 | [BinaryExpr] num % 2 | tst.ts:494:12:494:14 | [VarRef] num | semmle.order | 1 | +| tst.ts:494:12:494:18 | [BinaryExpr] num % 2 | tst.ts:494:18:494:18 | [Literal] 2 | semmle.label | 2 | +| tst.ts:494:12:494:18 | [BinaryExpr] num % 2 | tst.ts:494:18:494:18 | [Literal] 2 | semmle.order | 2 | +| tst.ts:494:12:494:24 | [BinaryExpr] num % 2 === 0 | tst.ts:494:12:494:18 | [BinaryExpr] num % 2 | semmle.label | 1 | +| tst.ts:494:12:494:24 | [BinaryExpr] num % 2 === 0 | tst.ts:494:12:494:18 | [BinaryExpr] num % 2 | semmle.order | 1 | +| tst.ts:494:12:494:24 | [BinaryExpr] num % 2 === 0 | tst.ts:494:24:494:24 | [Literal] 0 | semmle.label | 2 | +| tst.ts:494:12:494:24 | [BinaryExpr] num % 2 === 0 | tst.ts:494:24:494:24 | [Literal] 0 | semmle.order | 2 | +| tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | tst.ts:494:12:494:24 | [BinaryExpr] num % 2 === 0 | semmle.label | 1 | +| tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | tst.ts:494:12:494:24 | [BinaryExpr] num % 2 === 0 | semmle.order | 1 | +| tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | tst.ts:494:28:494:33 | [Literal] "even" | semmle.label | 2 | +| tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | tst.ts:494:28:494:33 | [Literal] "even" | semmle.order | 2 | +| tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | tst.ts:494:36:494:40 | [Literal] "odd" | semmle.label | 3 | +| tst.ts:494:12:494:40 | [ConditionalExpr] num % 2 ... : "odd" | tst.ts:494:36:494:40 | [Literal] "odd" | semmle.order | 3 | | tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | semmle.label | 1 | | tstModuleCJS.cts:1:1:3:1 | [ExportDeclaration] export ... 'b'; } | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | semmle.order | 1 | | tstModuleCJS.cts:1:8:3:1 | [FunctionDeclStmt] functio ... 'b'; } | tstModuleCJS.cts:1:17:1:28 | [VarDecl] tstModuleCJS | semmle.label | 0 | diff --git a/javascript/ql/test/library-tests/TypeScript/Types/tests.expected b/javascript/ql/test/library-tests/TypeScript/Types/tests.expected index 49a1f1e000f3..daa1571d73cd 100644 --- a/javascript/ql/test/library-tests/TypeScript/Types/tests.expected +++ b/javascript/ql/test/library-tests/TypeScript/Types/tests.expected @@ -669,6 +669,29 @@ getExprType | tst.ts:491:29:491:36 | "yellow" | "yellow" | | tst.ts:491:39:491:45 | "green" | "green" | | tst.ts:491:49:491:56 | "yellow" | "yellow" | +| tst.ts:493:9:493:13 | myObj | Partial<Record<"even" \| "odd", number[]>> | +| tst.ts:493:17:493:22 | Object | ObjectConstructor | +| tst.ts:493:17:493:30 | Object.groupBy | <K extends PropertyKey, T>(items: Iterable<T>, ... | +| tst.ts:493:17:495:4 | Object. ... ";\\n }) | Partial<Record<"even" \| "odd", number[]>> | +| tst.ts:493:24:493:30 | groupBy | <K extends PropertyKey, T>(items: Iterable<T>, ... | +| tst.ts:493:32:493:49 | [0, 1, 2, 3, 4, 5] | Iterable<number> | +| tst.ts:493:33:493:33 | 0 | 0 | +| tst.ts:493:36:493:36 | 1 | 1 | +| tst.ts:493:39:493:39 | 2 | 2 | +| tst.ts:493:42:493:42 | 3 | 3 | +| tst.ts:493:45:493:45 | 4 | 4 | +| tst.ts:493:48:493:48 | 5 | 5 | +| tst.ts:493:52:495:3 | (num, i ... d";\\n } | (num: number, index: number) => "even" \| "odd" | +| tst.ts:493:53:493:55 | num | number | +| tst.ts:493:58:493:62 | index | number | +| tst.ts:494:12:494:14 | num | number | +| tst.ts:494:12:494:18 | num % 2 | number | +| tst.ts:494:12:494:24 | num % 2 === 0 | boolean | +| tst.ts:494:12:494:40 | num % 2 ... : "odd" | "even" \| "odd" | +| tst.ts:494:18:494:18 | 2 | 2 | +| tst.ts:494:24:494:24 | 0 | 0 | +| tst.ts:494:28:494:33 | "even" | "even" | +| tst.ts:494:36:494:40 | "odd" | "odd" | | tstModuleCJS.cts:1:17:1:28 | tstModuleCJS | () => "a" \| "b" | | tstModuleCJS.cts:2:12:2:15 | Math | Math | | tstModuleCJS.cts:2:12:2:22 | Math.random | () => number | @@ -1374,6 +1397,7 @@ unionIndex | "boolean" | 3 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "c" | 2 | "a" \| "b" \| "c" | | "circle" | 0 | "circle" \| "square" | +| "even" | 0 | "even" \| "odd" | | "function" | 7 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "green" | 1 | "red" \| "green" \| "blue" | | "green" | 1 | "red" \| "green" \| "yellow" | @@ -1381,6 +1405,7 @@ unionIndex | "number" | 1 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | | "number" | 1 | keyof TypeMap | | "object" | 6 | "string" \| "number" \| "bigint" \| "boolean" \| "s... | +| "odd" | 1 | "even" \| "odd" | | "red" | 0 | "red" \| "green" \| "blue" | | "red" | 0 | "red" \| "green" \| "yellow" | | "square" | 1 | "circle" \| "square" | diff --git a/javascript/ql/test/library-tests/TypeScript/Types/tst.ts b/javascript/ql/test/library-tests/TypeScript/Types/tst.ts index 08d5e610ff59..cef97f9e4faa 100644 --- a/javascript/ql/test/library-tests/TypeScript/Types/tst.ts +++ b/javascript/ql/test/library-tests/TypeScript/Types/tst.ts @@ -489,4 +489,8 @@ module TS54 { } createStreetLight(["red", "yellow", "green"], "yellow"); + + const myObj = Object.groupBy([0, 1, 2, 3, 4, 5], (num, index) => { + return num % 2 === 0 ? "even": "odd"; + }); } \ No newline at end of file From d7790faeceeee0f9f43f1f2cc837ece38afcc592 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 12 Mar 2024 11:51:32 +0100 Subject: [PATCH 140/731] Address review comments --- .../codeql/dataflow/internal/DataFlowImpl.qll | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 6fbeb35bded2..e075af108d1c 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -480,7 +480,9 @@ module MakeImpl<InputSig Lang> { /** * Holds if field flow should be used for the given configuration. */ - private predicate useFieldFlow() { Config::fieldFlowBranchLimit() >= 1 } + private predicate useFieldFlow() { + Config::fieldFlowBranchLimit() >= 1 and Config::accessPathLimit() > 0 + } private predicate hasSourceCallCtx() { exists(FlowFeature feature | feature = Config::getAFeature() | @@ -1331,15 +1333,6 @@ module MakeImpl<InputSig Lang> { fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t } - bindingset[c, t, tail] - additional Ap apCons(Content c, Typ t, Ap tail) { - result = Param::apCons(c, t, tail) and - exists(int limit | - limit = Config::accessPathLimit() and - if tail instanceof ApNil then limit > 0 else limit > 1 - ) - } - pragma[nomagic] private predicate fwdFlow0( NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, @@ -2534,7 +2527,10 @@ module MakeImpl<InputSig Lang> { bindingset[c, t, tail] Ap apCons(Content c, Typ t, Ap tail) { - result = true and exists(c) and exists(t) and exists(tail) + result = true and + exists(c) and + exists(t) and + if tail = true then Config::accessPathLimit() > 1 else any() } class ApHeadContent = Unit; @@ -3201,10 +3197,7 @@ module MakeImpl<InputSig Lang> { Typ getTyp(DataFlowType t) { result = t } bindingset[c, t, tail] - Ap apCons(Content c, Typ t, Ap tail) { - result.isCons(c, t, tail) and - Config::accessPathLimit() > tail.len() - } + Ap apCons(Content c, Typ t, Ap tail) { result.isCons(c, t, tail) } class ApHeadContent = Content; @@ -4641,7 +4634,7 @@ module MakeImpl<InputSig Lang> { private newtype TPartialAccessPath = TPartialNil() or - TPartialCons(Content c, int len) { len in [1 .. accessPathLimit()] } + TPartialCons(Content c, int len) { len in [1 .. Config::accessPathLimit()] } /** * Conceptually a list of `Content`s, but only the first From 6be0ed1dc391cf4428f633f154ba58f8112eee30 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Tue, 12 Mar 2024 13:42:58 +0100 Subject: [PATCH 141/731] narrow the version specifier used for TypeScript --- javascript/extractor/lib/typescript/package-lock.json | 2 +- javascript/extractor/lib/typescript/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/javascript/extractor/lib/typescript/package-lock.json b/javascript/extractor/lib/typescript/package-lock.json index 604db5f3e37c..e03fbf0c6a63 100644 --- a/javascript/extractor/lib/typescript/package-lock.json +++ b/javascript/extractor/lib/typescript/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "typescript-parser-wrapper", "dependencies": { - "typescript": "5.4" + "typescript": "5.4.2" }, "devDependencies": { "@types/node": "18.15.3" diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json index 8f6a1549a601..d8b228fc4020 100644 --- a/javascript/extractor/lib/typescript/package.json +++ b/javascript/extractor/lib/typescript/package.json @@ -2,7 +2,7 @@ "name": "typescript-parser-wrapper", "private": true, "dependencies": { - "typescript": "5.4" + "typescript": "5.4.2" }, "scripts": { "build": "tsc --project tsconfig.json", From 695e728ed5584641492df4e5c2ee8da511286b46 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Mon, 11 Mar 2024 11:59:31 +0100 Subject: [PATCH 142/731] Ruby: Lower access path limit to 1 for `OrmTracking` --- ruby/ql/lib/codeql/ruby/security/XSS.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/security/XSS.qll b/ruby/ql/lib/codeql/ruby/security/XSS.qll index a212369d4e6a..e5cf48bd0ef0 100644 --- a/ruby/ql/lib/codeql/ruby/security/XSS.qll +++ b/ruby/ql/lib/codeql/ruby/security/XSS.qll @@ -299,6 +299,8 @@ private module OrmTracking { } predicate isBarrierIn(DataFlow::Node node) { node instanceof DataFlow::SelfParameterNode } + + int accessPathLimit() { result = 1 } } import DataFlow::Global<Config> From c2aa334465cc621211405490050ea803eb8f2b82 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Mon, 11 Mar 2024 19:00:46 +0000 Subject: [PATCH 143/731] Java: Accept test changes --- .../java/buildless-erroneous/diagnostics.expected | 14 ++++++++++++++ .../java/buildless-gradle/diagnostics.expected | 14 ++++++++++++++ .../diagnostics.expected | 14 ++++++++++++++ .../java/buildless-maven/diagnostics.expected | 14 ++++++++++++++ .../diagnostics.expected | 14 ++++++++++++++ .../java/buildless/diagnostics.expected | 14 ++++++++++++++ 6 files changed, 84 insertions(+) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected index 2118edbe2965..03978511bb75 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected @@ -12,6 +12,20 @@ "telemetry": true } } +{ + "markdownMessage": "Java buildless extraction has completed.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/complete", + "name": "Java buildless extraction completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} { "markdownMessage": "Java buildless mode used the system default JDK.", "severity": "unknown", diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected index 7f297a411392..5d8a00c5578b 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected @@ -1,3 +1,17 @@ +{ + "markdownMessage": "Java buildless extraction has completed.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/complete", + "name": "Java buildless extraction completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} { "markdownMessage": "Java buildless mode used build tool Gradle to pick a JDK version and/or to recommend external dependencies.", "severity": "unknown", diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected index dcc7c1377b67..77e259ae537a 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected @@ -1,3 +1,17 @@ +{ + "markdownMessage": "Java buildless extraction has completed.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/complete", + "name": "Java buildless extraction completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} { "markdownMessage": "Java buildless mode used build tool Maven to pick a JDK version and/or to recommend external dependencies.", "severity": "unknown", diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected index d99f38541ca3..0228a1165a90 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected @@ -1,3 +1,17 @@ +{ + "markdownMessage": "Java buildless extraction has completed.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/complete", + "name": "Java buildless extraction completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} { "markdownMessage": "Java buildless mode used build tool Maven to pick a JDK version and/or to recommend external dependencies.", "severity": "unknown", diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected index b8e399f746a8..c150b2135f3b 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected @@ -1,3 +1,17 @@ +{ + "markdownMessage": "Java buildless extraction has completed.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/complete", + "name": "Java buildless extraction completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} { "markdownMessage": "Java buildless mode dropped the following dependencies because a sibling project depends on a higher version:\n\n* `junit/junit-4.11`", "severity": "unknown", diff --git a/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected index 2118edbe2965..03978511bb75 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected @@ -12,6 +12,20 @@ "telemetry": true } } +{ + "markdownMessage": "Java buildless extraction has completed.", + "severity": "unknown", + "source": { + "extractorName": "java", + "id": "java/autobuilder/buildless/complete", + "name": "Java buildless extraction completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} { "markdownMessage": "Java buildless mode used the system default JDK.", "severity": "unknown", From 52f71e4553784fa425b2cb07e90b726960cdf186 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Tue, 12 Mar 2024 15:07:29 +0100 Subject: [PATCH 144/731] small fixes based on review --- .../semmle/code/java/security/RequestForgery.qll | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index e083977c74f9..9ab593f0d6f9 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -103,7 +103,7 @@ private predicate isContainsUrlSanitizer(Guard guard, Expr e, boolean branch) { * This `contains` method is usually called on a list, but the sanitizer matches any call to a method * called `contains`, so other methods with the same name will also be considered sanitizers. */ -class ContainsUrlSanitizer extends RequestForgerySanitizer { +private class ContainsUrlSanitizer extends RequestForgerySanitizer { ContainsUrlSanitizer() { this = DataFlow::BarrierGuard<isContainsUrlSanitizer/3>::getABarrierNode() } @@ -115,11 +115,7 @@ class ContainsUrlSanitizer extends RequestForgerySanitizer { private predicate isRelativeUrlSanitizer(Guard guard, Expr e, boolean branch) { guard = any(MethodCall call | - exists(Method method | - call.getMethod() = method and - method.getName() = "isAbsolute" and - method.getDeclaringType().hasQualifiedName("java.net", "URI") - ) and + call.getMethod().hasQualifiedName("java.net", "URI", "isAbsolute") and e = call.getQualifier() and branch = false ) @@ -128,7 +124,7 @@ private predicate isRelativeUrlSanitizer(Guard guard, Expr e, boolean branch) { /** * A check that the URL is relative, and therefore safe for URL redirects. */ -class RelativeUrlSanitizer extends RequestForgerySanitizer { +private class RelativeUrlSanitizer extends RequestForgerySanitizer { RelativeUrlSanitizer() { this = DataFlow::BarrierGuard<isRelativeUrlSanitizer/3>::getABarrierNode() } @@ -145,8 +141,7 @@ private predicate isHostComparisonSanitizer(Guard guard, Expr e, boolean branch) branch = true and exists(MethodCall hostCall | hostCall = [equalsCall.getQualifier(), equalsCall.getArgument(0)] and - hostCall.getMethod().getName() = "getHost" and - hostCall.getMethod().getDeclaringType().hasQualifiedName("java.net", "URI") and + hostCall.getMethod().hasQualifiedName("java.net", "URI", "getHost") and e = hostCall.getQualifier() ) ) @@ -155,7 +150,7 @@ private predicate isHostComparisonSanitizer(Guard guard, Expr e, boolean branch) /** * A comparison on the `Host` property of a url, that is a sanitizer for URL redirects. */ -class HostComparisonSanitizer extends RequestForgerySanitizer { +private class HostComparisonSanitizer extends RequestForgerySanitizer { HostComparisonSanitizer() { this = DataFlow::BarrierGuard<isHostComparisonSanitizer/3>::getABarrierNode() } From 74876ff49beb5103d6f5c6974457a00afb15a2e7 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Tue, 12 Mar 2024 15:07:36 +0100 Subject: [PATCH 145/731] add change-note --- java/ql/lib/change-notes/2024-03-12-request-sanitizers.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2024-03-12-request-sanitizers.md diff --git a/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md b/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md new file mode 100644 index 000000000000..cc30b339320a --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added sanitizers for relative URLs, `List.contains()`, and checking the host on an URI to the `java/ssrf` query. \ No newline at end of file From b07b0762f271355b2b315f7b77743756cad4bc90 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Tue, 12 Mar 2024 15:07:48 +0100 Subject: [PATCH 146/731] Adjust based on code review feedback --- .../DependencyManager.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 143ed49f4407..f4ae77c3d338 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -927,7 +927,8 @@ private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPa var multipleVersions = notYetDownloadedPackages .GroupBy(p => p.Name) .Where(g => g.Count() > 1) - .Select(g => g.Key); + .Select(g => g.Key) + .ToList(); foreach (var package in multipleVersions) { From 179a7d500e75d3c37d61d4425087100ea62e1c24 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 12 Mar 2024 14:14:27 +0000 Subject: [PATCH 147/731] C++: Handle 'wchar_t' types that may be defined as unsigned short in C. This brings back SAMATE results. --- cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index 461df854c758..de397c312019 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -49,7 +49,9 @@ predicate cannotContainString(Type t) { not unspecified instanceof WideCharType and not unspecified instanceof Char8Type and not unspecified instanceof Char16Type and - not unspecified instanceof Char32Type + not unspecified instanceof Char32Type and + // C often defines `wchar_t` as `unsigned short` + unspecified = any(ShortType short | not short.isUnsigned()) | unspecified instanceof ArithmeticType or unspecified instanceof BuiltInType From 6a563c161e5e3cd677ef8e810f1fe2bf6df16573 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 12 Mar 2024 14:15:44 +0000 Subject: [PATCH 148/731] C++: Simplify the definition of 'isNonConst'. On ImageMagick I get the same exact sources before and after. --- .../Likely Bugs/Format/NonConstantFormat.ql | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index de397c312019..1a28f494fa6c 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -109,35 +109,28 @@ predicate isNonConst(DataFlow::Node node) { // i.e., functions that with unknown bodies and are not known to define the output through its input // are considered as possible non-const sources // The function's output must also not be const to be considered a non-const source - ( + exists(Function func, CallInstruction call | + not func.hasDefinition() and + func = call.getStaticCallTarget() + | // Case 1: It's a known dataflow or taintflow function with flow to the return value - exists(Function func, CallInstruction call | - call.getUnconvertedResultExpression() = node.asIndirectExpr() and - func = call.getStaticCallTarget() and - not exists(FunctionOutput output | - dataFlowOrTaintFlowFunction(func, output) and - output.isReturnValueDeref() and - node = callOutput(call, output) - ) + call.getUnconvertedResultExpression() = node.asIndirectExpr() and + not exists(FunctionOutput output | + dataFlowOrTaintFlowFunction(func, output) and + output.isReturnValueDeref(_) and + node = callOutput(call, output) ) or - // Case 1: It's a known dataflow or taintflow function with flow to an output parameter - exists(Function func, int i, CallInstruction call | + // Case 2: It's a known dataflow or taintflow function with flow to an output parameter + exists(int i | call.getPositionalArgumentOperand(i).getDef().getUnconvertedResultExpression() = node.asDefiningArgument() and - func = call.getStaticCallTarget() and not exists(FunctionOutput output | dataFlowOrTaintFlowFunction(func, output) and - output.isParameterDeref(i) and + output.isParameterDeref(i, _) and node = callOutput(call, output) ) ) - ) and - not exists(Call c | - c.getTarget().hasDefinition() and - if node instanceof DataFlow::DefinitionByReferenceNode - then c.getAnArgument() = node.asDefiningArgument() - else c = node.asIndirectExpr() ) } From 51f57407071cc09cbbc6707722a15bfc5f9828df Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 12 Mar 2024 14:16:46 +0000 Subject: [PATCH 149/731] C++: Exclude functions that aren't declared inside the source root. This fixes performance on ImageMagick. --- cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index 1a28f494fa6c..3e9576de175b 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -63,6 +63,14 @@ predicate dataFlowOrTaintFlowFunction(Function func, FunctionOutput output) { func.(TaintFunction).hasTaintFlow(_, output) } +/** Holds if `func` is declared inside the source root. */ +predicate isInsideSourceRoot(Function func) { + exists(File f | + f = func.getFile() and + exists(f.getRelativePath()) + ) +} + /** * Holds if `node` is a non-constant source of data flow for non-const format string detection. * This is defined as either: @@ -111,7 +119,8 @@ predicate isNonConst(DataFlow::Node node) { // The function's output must also not be const to be considered a non-const source exists(Function func, CallInstruction call | not func.hasDefinition() and - func = call.getStaticCallTarget() + func = call.getStaticCallTarget() and + isInsideSourceRoot(func) | // Case 1: It's a known dataflow or taintflow function with flow to the return value call.getUnconvertedResultExpression() = node.asIndirectExpr() and From b53ae77c56fd1460559c023150c07ca87208f53a Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen <erik-krogh@github.com> Date: Tue, 12 Mar 2024 15:22:17 +0100 Subject: [PATCH 150/731] expand change-note Co-authored-by: Tony Torralba <atorralba@users.noreply.github.com> --- java/ql/lib/change-notes/2024-03-12-request-sanitizers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md b/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md index cc30b339320a..08229d6d7d0d 100644 --- a/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md +++ b/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Added sanitizers for relative URLs, `List.contains()`, and checking the host on an URI to the `java/ssrf` query. \ No newline at end of file +* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. \ No newline at end of file From 35aae0a98108d8b5fbd30be5664180157eb51425 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Tue, 12 Mar 2024 15:22:57 +0100 Subject: [PATCH 151/731] move changenote to src/ --- .../ql/{lib => src}/change-notes/2024-03-12-request-sanitizers.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename java/ql/{lib => src}/change-notes/2024-03-12-request-sanitizers.md (100%) diff --git a/java/ql/lib/change-notes/2024-03-12-request-sanitizers.md b/java/ql/src/change-notes/2024-03-12-request-sanitizers.md similarity index 100% rename from java/ql/lib/change-notes/2024-03-12-request-sanitizers.md rename to java/ql/src/change-notes/2024-03-12-request-sanitizers.md From f6138230471e2f04fc2309f6f6fc3cd285230fb4 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Tue, 12 Mar 2024 15:25:27 +0100 Subject: [PATCH 152/731] add explicit QLDoc that any method named "contains" is matched --- java/ql/lib/semmle/code/java/security/RequestForgery.qll | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index 9ab593f0d6f9..a4e824c1cfeb 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -86,7 +86,9 @@ private class HostnameSantizer extends RequestForgerySanitizer { } /** - * An argument to a call to `List.contains()` that is a sanitizer for URL redirects. + * An argument to a call to a `.contains()` method that is a sanitizer for URL redirects. + * + * Matches any method call where the method is named `contains`. */ private predicate isContainsUrlSanitizer(Guard guard, Expr e, boolean branch) { guard = From ab6e2f9364f6b3de360ad3d5e7b2438d5db313c4 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 12 Mar 2024 15:00:15 +0000 Subject: [PATCH 153/731] C++: Accept test regression. --- .../Format/NonConstantFormat/NonConstantFormat.expected | 4 ---- .../Likely Bugs/Format/NonConstantFormat/nested.cpp | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected index c3c94158da8a..7cdf2ada53ab 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected @@ -7,7 +7,6 @@ edges | nested.cpp:34:37:34:39 | *fmt | nested.cpp:35:19:35:21 | *fmt | provenance | | | nested.cpp:35:19:35:21 | *fmt | nested.cpp:27:32:27:34 | *fmt | provenance | | | nested.cpp:42:24:42:34 | *call to ext_fmt_str | nested.cpp:34:37:34:39 | *fmt | provenance | | -| nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | provenance | | | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | provenance | | | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | provenance | | | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | @@ -35,8 +34,6 @@ nodes | nested.cpp:35:19:35:21 | *fmt | semmle.label | *fmt | | nested.cpp:42:24:42:34 | *call to ext_fmt_str | semmle.label | *call to ext_fmt_str | | nested.cpp:79:32:79:38 | *call to get_fmt | semmle.label | *call to get_fmt | -| nested.cpp:86:19:86:46 | *call to __builtin_alloca | semmle.label | *call to __builtin_alloca | -| nested.cpp:87:18:87:20 | *fmt | semmle.label | *fmt | | test.cpp:46:27:46:30 | **argv | semmle.label | **argv | | test.cpp:130:20:130:26 | *access to array | semmle.label | *access to array | | test.cpp:167:31:167:34 | *data | semmle.label | *data | @@ -68,7 +65,6 @@ subpaths | NonConstantFormat.c:45:9:45:48 | *call to gettext | NonConstantFormat.c:45:11:45:47 | *call to any_random_function | NonConstantFormat.c:45:9:45:48 | *call to gettext | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:45:2:45:7 | call to printf | printf | | nested.cpp:21:23:21:26 | *fmt0 | nested.cpp:42:24:42:34 | *call to ext_fmt_str | nested.cpp:21:23:21:26 | *fmt0 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:21:5:21:12 | call to snprintf | snprintf | | nested.cpp:79:32:79:38 | *call to get_fmt | nested.cpp:79:32:79:38 | *call to get_fmt | nested.cpp:79:32:79:38 | *call to get_fmt | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:79:5:79:14 | call to diagnostic | diagnostic | -| nested.cpp:87:18:87:20 | *fmt | nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:87:7:87:16 | call to diagnostic | diagnostic | | test.cpp:130:20:130:26 | *access to array | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:130:2:130:10 | call to sprintf | sprintf | | test.cpp:170:12:170:14 | *res | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:170:5:170:10 | call to printf | printf | | test.cpp:195:31:195:33 | *str | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:195:3:195:18 | call to StringCchPrintfW | StringCchPrintfW | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp index 1c3d2513da54..40a88ee7fc0f 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp @@ -84,7 +84,7 @@ namespace ns { class blab { void out1(void) { char *fmt = (char *)__builtin_alloca(10); - diagnostic(fmt); // BAD + diagnostic(fmt); // BAD [NOT DETECTED] } }; } From 0e94aa0eb51a6a474d8d4923f09965449d87a95b Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Tue, 12 Mar 2024 16:42:37 +0000 Subject: [PATCH 154/731] Kotlin 2: Accept more changes in the exprs test --- .../library-tests/exprs/exprs.expected | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index d23114e07583..aa19916593a1 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -1414,29 +1414,29 @@ | exprs.kt:157:8:157:8 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:157:8:157:21 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr | | exprs.kt:157:8:157:21 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | -| exprs.kt:158:13:158:14 | x1 | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | +| exprs.kt:158:9:158:29 | x1 | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | | exprs.kt:158:29:158:29 | <implicit cast> | exprs.kt:156:1:163:1 | typeTests | ImplicitCastExpr | | exprs.kt:158:29:158:29 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | | exprs.kt:158:29:158:29 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | -| exprs.kt:160:9:160:10 | y1 | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | +| exprs.kt:160:5:160:60 | y1 | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | | exprs.kt:160:25:160:60 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral | | exprs.kt:160:25:160:60 | when ... | exprs.kt:156:1:163:1 | typeTests | WhenExpr | | exprs.kt:160:29:160:29 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:160:29:160:42 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr | | exprs.kt:160:29:160:42 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | | exprs.kt:160:45:160:49 | <Stmt> | exprs.kt:156:1:163:1 | typeTests | StmtExpr | -| exprs.kt:160:45:160:49 | <implicit cast> | exprs.kt:156:1:163:1 | typeTests | ImplicitCastExpr | -| exprs.kt:160:45:160:49 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | +| exprs.kt:160:47:160:47 | <implicit cast> | exprs.kt:156:1:163:1 | typeTests | ImplicitCastExpr | +| exprs.kt:160:47:160:47 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | | exprs.kt:160:47:160:47 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:160:58:160:58 | y | exprs.kt:156:1:163:1 | typeTests | VarAccess | -| exprs.kt:161:9:161:9 | q | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | +| exprs.kt:161:5:161:13 | q | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | | exprs.kt:161:13:161:13 | 1 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | | exprs.kt:162:5:162:48 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral | | exprs.kt:162:5:162:48 | when ... | exprs.kt:156:1:163:1 | typeTests | WhenExpr | | exprs.kt:162:9:162:9 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:9:162:22 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr | | exprs.kt:162:9:162:22 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | -| exprs.kt:162:27:162:27 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | +| exprs.kt:162:27:162:31 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:27:162:31 | ...=... | exprs.kt:156:1:163:1 | typeTests | AssignExpr | | exprs.kt:162:31:162:31 | 2 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | | exprs.kt:162:42:162:42 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | @@ -1444,23 +1444,23 @@ | exprs.kt:162:46:162:46 | 3 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | | exprs.kt:165:1:172:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:165:9:165:18 | Polygon | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:166:9:166:9 | r | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | +| exprs.kt:166:5:166:25 | r | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | | exprs.kt:166:13:166:13 | p | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:166:13:166:25 | getBounds(...) | exprs.kt:165:1:172:1 | foo | MethodCall | | exprs.kt:167:5:171:5 | when ... | exprs.kt:165:1:172:1 | foo | WhenExpr | | exprs.kt:167:8:167:8 | r | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:167:8:167:16 | ... (value not-equals) ... | exprs.kt:165:1:172:1 | foo | ValueNEExpr | | exprs.kt:167:13:167:16 | null | exprs.kt:165:1:172:1 | foo | NullLiteral | -| exprs.kt:168:13:168:14 | r2 | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | +| exprs.kt:168:9:168:29 | r2 | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | | exprs.kt:168:29:168:29 | <implicit not null> | exprs.kt:165:1:172:1 | foo | ImplicitNotNullExpr | | exprs.kt:168:29:168:29 | Rectangle | exprs.kt:165:1:172:1 | foo | TypeAccess | | exprs.kt:168:29:168:29 | r | exprs.kt:165:1:172:1 | foo | VarAccess | -| exprs.kt:169:13:169:18 | height | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | +| exprs.kt:169:9:169:30 | height | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | | exprs.kt:169:22:169:23 | r2 | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:169:25:169:30 | r2.height | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:170:9:170:10 | r2 | exprs.kt:165:1:172:1 | foo | VarAccess | -| exprs.kt:170:9:170:17 | r2.height | exprs.kt:165:1:172:1 | foo | VarAccess | -| exprs.kt:170:9:170:21 | ...=... | exprs.kt:165:1:172:1 | foo | AssignExpr | +| exprs.kt:170:12:170:21 | r2.height | exprs.kt:165:1:172:1 | foo | VarAccess | +| exprs.kt:170:12:170:21 | ...=... | exprs.kt:165:1:172:1 | foo | AssignExpr | | exprs.kt:170:21:170:21 | 3 | exprs.kt:165:1:172:1 | foo | IntegerLiteral | | exprs.kt:174:1:176:1 | 0 | exprs.kt:174:1:176:1 | Direction | IntegerLiteral | | exprs.kt:174:1:176:1 | Direction | exprs.kt:174:1:176:1 | Direction | TypeAccess | @@ -1471,7 +1471,7 @@ | exprs.kt:174:1:176:1 | Enum<Direction> | exprs.kt:174:1:176:1 | Direction | TypeAccess | | exprs.kt:174:1:176:1 | EnumEntries<Direction> | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:174:1:176:1 | String | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:174:1:176:1 | new Enum(...) | exprs.kt:174:1:176:1 | Direction | ClassInstanceExpr | +| exprs.kt:174:1:176:1 | new Enum<Direction>(...) | exprs.kt:174:1:176:1 | Direction | ClassInstanceExpr | | exprs.kt:174:1:176:1 | null | exprs.kt:174:1:176:1 | Direction | NullLiteral | | exprs.kt:175:5:175:10 | ...=... | exprs.kt:0:0:0:0 | <clinit> | KtInitializerAssignExpr | | exprs.kt:175:5:175:10 | Direction | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | From f70a39e72f844f01c6b3aa0ac3028184ff9923b2 Mon Sep 17 00:00:00 2001 From: intrigus-lgtm <60750685+intrigus-lgtm@users.noreply.github.com> Date: Tue, 12 Mar 2024 19:59:26 +0100 Subject: [PATCH 155/731] [cpp-docs] Fix 404 link in guards library doc. --- .../codeql-language-guides/using-the-guards-library-in-cpp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/codeql-language-guides/using-the-guards-library-in-cpp.rst b/docs/codeql/codeql-language-guides/using-the-guards-library-in-cpp.rst index 792cbcd47034..1900f1b8e056 100644 --- a/docs/codeql/codeql-language-guides/using-the-guards-library-in-cpp.rst +++ b/docs/codeql/codeql-language-guides/using-the-guards-library-in-cpp.rst @@ -8,7 +8,7 @@ You can use the CodeQL guards library to identify conditional expressions that c About the guards library ------------------------ -The guards library (defined in ``semmle.code.cpp.controlflow.Guards``) provides a class `GuardCondition <https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/controlflow/Guards.qll/type.Guards$GuardCondition.html>`__ representing Boolean values that are used to make control flow decisions. +The guards library (defined in ``semmle.code.cpp.controlflow.Guards``) provides a class `GuardCondition <https://codeql.github.com/codeql-standard-libraries/cpp/semmle/code/cpp/controlflow/IRGuards.qll/type.IRGuards$GuardCondition.html>`__ representing Boolean values that are used to make control flow decisions. A ``GuardCondition`` is considered to guard a basic block if the block can only be reached if the ``GuardCondition`` is evaluated a certain way. For instance, in the following code, ``x < 10`` is a ``GuardCondition``, and it guards all the code before the return statement. .. code-block:: cpp From cff2cdb9e4c9d1ac8569da1a0aa153bdc13001eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 00:15:53 +0000 Subject: [PATCH 156/731] Add changed framework coverage reports --- .../library-coverage/coverage.csv | 88 +++++++++---------- .../library-coverage/coverage.rst | 4 +- .../library-coverage/coverage.csv | 2 +- .../library-coverage/coverage.rst | 4 +- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index 8bb3b01441ab..6da4acdabe69 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -1,44 +1,44 @@ -package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:commandargs,source:environment,source:file,source:file-write,source:local,source:remote,summary:taint,summary:value -Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,,,6,, -Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,,,, -Dapper,55,,,,,,,,,,,,55,,,,,,,, -ILCompiler,,,81,,,,,,,,,,,,,,,,,81, -ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,,,63, -ILLink.Shared,,,32,,,,,,,,,,,,,,,,,29,3 -ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,5, -Internal.IL,,,69,,,,,,,,,,,,,,,,,67,2 -Internal.Pgo,,,9,,,,,,,,,,,,,,,,,8,1 -Internal.TypeSystem,,,367,,,,,,,,,,,,,,,,,331,36 -JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,,,7, -Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,,,14, -Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,7, -Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,, -Microsoft.CSharp,,,24,,,,,,,,,,,,,,,,,24, -Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,,,13, -Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,12 -Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,,,15, -Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,,,37,1 -Microsoft.Extensions.Configuration,,2,89,,,,,,,,,,,,2,,,,,86,3 -Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,,,120, -Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,,,12, -Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,,,13, -Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,,,15, -Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,,,14,2 -Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,,,22,1 -Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,,,10, -Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,,,59,1 -Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,,,8, -Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,,,64, -Microsoft.Interop,,,78,,,,,,,,,,,,,,,,,78, -Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,,,1, -Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,,,7, -Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,,,5,5 -Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,,,3, -Microsoft.Win32.SafeHandles,,,4,,,,,,,,,,,,,,,,,4, -Mono.Linker,,,163,,,,,,,,,,,,,,,,,163, -MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,, -Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,73,18 -ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,7, -SourceGenerators,,,4,,,,,,,,,,,,,,,,,4, -System,67,30,11864,,8,8,9,,,4,5,,33,2,3,1,17,3,4,9898,1966 -Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,, +package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:commandargs,source:environment,source:file,source:file-write,source:local,source:remote,source:windows-registry,summary:taint,summary:value +Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,,,6,,, +Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,,,,, +Dapper,55,,,,,,,,,,,,55,,,,,,,,, +ILCompiler,,,81,,,,,,,,,,,,,,,,,,81, +ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,,,,63, +ILLink.Shared,,,32,,,,,,,,,,,,,,,,,,29,3 +ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,,5, +Internal.IL,,,69,,,,,,,,,,,,,,,,,,67,2 +Internal.Pgo,,,9,,,,,,,,,,,,,,,,,,8,1 +Internal.TypeSystem,,,367,,,,,,,,,,,,,,,,,,331,36 +JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,,,,7, +Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,,,,14, +Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,,7, +Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,,, +Microsoft.CSharp,,,24,,,,,,,,,,,,,,,,,,24, +Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,,,,13, +Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,,12 +Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,,,,15, +Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,,,,37,1 +Microsoft.Extensions.Configuration,,2,89,,,,,,,,,,,,2,,,,,,86,3 +Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,,,,120, +Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,,,,12, +Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,,,,13, +Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,,,,15, +Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,,,,14,2 +Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,,,,22,1 +Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,,,,10, +Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,,,,59,1 +Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,,,,8, +Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,,,,64, +Microsoft.Interop,,,78,,,,,,,,,,,,,,,,,,78, +Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,,,,1, +Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,,,,7, +Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,,,,5,5 +Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,,,,3, +Microsoft.Win32,,4,4,,,,,,,,,,,,,,,,,4,4, +Mono.Linker,,,163,,,,,,,,,,,,,,,,,,163, +MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,,, +Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,,73,18 +ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,,7, +SourceGenerators,,,4,,,,,,,,,,,,,,,,,,4, +System,67,30,11864,,8,8,9,,,4,5,,33,2,3,1,17,3,4,,9898,1966 +Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,,, diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index bdee069e89a9..0b11da25d91f 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -9,6 +9,6 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack <https://servicestack.net/>`_,"``ServiceStack.*``, ``ServiceStack``",,7,194, System,"``System.*``, ``System``",30,11864,67,9 - Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32.SafeHandles``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",8,1547,148, - Totals,,38,13418,409,9 + Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",12,1547,148, + Totals,,42,13418,409,9 diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 751024f53217..a86fdd321be3 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -4,7 +4,7 @@ android.app,77,,103,,,,,,,,,,11,,,,,7,,,,,,,42,,,17,,,,,,,,,,,,,,,,,,,,,,18,85 android.content,24,31,154,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,8,,,,,,4,27,,,,,63,91 android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,,41, android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 -android.os,,2,122,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,41,81 +android.os,1,2,122,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,2,,,,,,41,81 android.support.v4.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, android.util,6,16,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,16,, android.webkit,3,2,,,,,,,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 903890f7ba26..432d9c2db674 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -7,7 +7,7 @@ Java framework & library support :widths: auto Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE‑022` :sub:`Path injection`,`CWE‑079` :sub:`Cross-site scripting`,`CWE‑089` :sub:`SQL injection`,`CWE‑090` :sub:`LDAP injection`,`CWE‑094` :sub:`Code injection`,`CWE‑918` :sub:`Request Forgery` - Android,``android.*``,52,481,180,,3,67,,, + Android,``android.*``,52,481,181,1,3,67,,, Android extensions,``androidx.*``,5,183,60,,,,,, `Apache Commons Collections <https://commons.apache.org/proper/commons-collections/>`_,"``org.apache.commons.collections``, ``org.apache.commons.collections4``",,1600,,,,,,, `Apache Commons IO <https://commons.apache.org/proper/commons-io/>`_,``org.apache.commons.io``,,562,118,99,,,,,15 @@ -23,5 +23,5 @@ Java framework & library support Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 `Spring <https://spring.io/>`_,``org.springframework.*``,38,481,118,5,,28,14,,35 Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,125,6,22,18,,209 - Totals,,308,18953,2558,337,16,128,33,1,409 + Totals,,308,18953,2559,338,16,128,33,1,409 From 806f42ef7240357b2d2b00948210deab939afa3e Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Wed, 13 Mar 2024 09:54:17 +0000 Subject: [PATCH 157/731] Ruby: Update change note --- .../src/change-notes/2023-09-25-csrf-protection-not-enabled.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md b/ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md index e8e7ac54e381..c84492291a3f 100644 --- a/ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md +++ b/ruby/ql/src/change-notes/2023-09-25-csrf-protection-not-enabled.md @@ -1,4 +1,4 @@ --- category: newQuery --- -* Added a new experimental query, `rb/csrf-protection-not-enabled`, to detect cases where Cross-Site Request Forgery protection is not enabled in Ruby on Rails controllers. +* Added a new query, `rb/csrf-protection-not-enabled`, to detect cases where Cross-Site Request Forgery protection is not enabled in Ruby on Rails controllers. From 013ed7adb3f6d3a2db42da4c093bc67c599c2241 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Wed, 13 Mar 2024 09:51:35 +0100 Subject: [PATCH 158/731] Java: update the url-redirection in the same style as the C# qhelp --- .../src/Security/CWE/CWE-601/UrlRedirect.java | 14 ------ .../Security/CWE/CWE-601/UrlRedirect.qhelp | 44 ++++++++++++++++--- .../CWE/CWE-601/examples/UrlRedirect.java | 6 +++ .../CWE/CWE-601/examples/UrlRedirectGood.java | 16 +++++++ .../examples/UrlRedirectGoodDomain.java | 18 ++++++++ 5 files changed, 78 insertions(+), 20 deletions(-) delete mode 100644 java/ql/src/Security/CWE/CWE-601/UrlRedirect.java create mode 100644 java/ql/src/Security/CWE/CWE-601/examples/UrlRedirect.java create mode 100644 java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGood.java create mode 100644 java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGoodDomain.java diff --git a/java/ql/src/Security/CWE/CWE-601/UrlRedirect.java b/java/ql/src/Security/CWE/CWE-601/UrlRedirect.java deleted file mode 100644 index dd915d9eca44..000000000000 --- a/java/ql/src/Security/CWE/CWE-601/UrlRedirect.java +++ /dev/null @@ -1,14 +0,0 @@ -public class UrlRedirect extends HttpServlet { - private static final String VALID_REDIRECT = "http://cwe.mitre.org/data/definitions/601.html"; - - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - // BAD: a request parameter is incorporated without validation into a URL redirect - response.sendRedirect(request.getParameter("target")); - - // GOOD: the request parameter is validated against a known fixed string - if (VALID_REDIRECT.equals(request.getParameter("target"))) { - response.sendRedirect(VALID_REDIRECT); - } - } -} diff --git a/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp b/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp index 1fdd2be75aca..eddca4f62f69 100644 --- a/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp +++ b/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp @@ -16,21 +16,53 @@ controlled by the attacker.</p> <p>To guard against untrusted URL redirection, it is advisable to avoid putting user input directly into a redirect URL. Instead, maintain a list of authorized redirects on the server; then choose from that list based on the user input provided.</p> - +<p> +If this is not possible, then the user input should be validated in some other way, +for example, by verifying that the target URL is on the same host as the current page. +</p> </recommendation> + + <example> +<p> +The following example shows an HTTP request parameter being used directly in a URL redirect +without validating the input, which facilitates phishing attacks: +</p> + +<sample src="examples/UrlRedirect.java"/> -<p>The following example shows an HTTP request parameter being used directly in a URL redirect -without validating the input, which facilitates phishing attacks. -It also shows how to remedy the problem by validating the user input against a known fixed string. +<p> +One way to remedy the problem is to validate the user input against a known fixed string +before doing the redirection: </p> -<sample src="UrlRedirect.java" /> +<sample src="examples/UrlRedirectGood.java"/> + +<p> +Alternatively, we can check that the target URL does not redirect to a different host +by checking that the URL is either relative or on a known good host: +</p> + +<sample src="examples/UrlRedirectGoodDomain.java"/> + +<p> +Note that as written, the above code will allow redirects to URLs on <code>example.com</code>, +which is harmless but perhaps not intended. You can substitute your own domain (if known) for +<code>example.com</code> to prevent this. +</p> </example> -<references> +<references> +<li> +OWASP: +<a href="https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html">XSS +Unvalidated Redirects and Forwards Cheat Sheet</a>. +</li> +<li> +Microsoft Docs: <a href="https://docs.microsoft.com/en-us/aspnet/mvc/overview/security/preventing-open-redirection-attacks">Preventing Open Redirection Attacks (C#)</a>. +</li> </references> </qhelp> diff --git a/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirect.java b/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirect.java new file mode 100644 index 000000000000..78281dc93c3c --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirect.java @@ -0,0 +1,6 @@ +public class UrlRedirect extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // BAD: a request parameter is incorporated without validation into a URL redirect + response.sendRedirect(request.getParameter("target")); + } +} \ No newline at end of file diff --git a/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGood.java b/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGood.java new file mode 100644 index 000000000000..4a44a22a3753 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGood.java @@ -0,0 +1,16 @@ +public class UrlRedirect extends HttpServlet { + private static final List<String> VALID_REDIRECTS = Arrays.asList( + "http://cwe.mitre.org/data/definitions/601.html", + "http://cwe.mitre.org/data/definitions/79.html" + ); + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // GOOD: the request parameter is validated against a known list of strings + String target = request.getParameter("target"); + if (VALID_REDIRECTS.contains(target)) { + response.sendRedirect(target); + } else { + response.sendRedirect("/error.html"); + } + } +} \ No newline at end of file diff --git a/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGoodDomain.java b/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGoodDomain.java new file mode 100644 index 000000000000..e9010f308161 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-601/examples/UrlRedirectGoodDomain.java @@ -0,0 +1,18 @@ +public class UrlRedirect extends HttpServlet { + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + try { + String urlString = request.getParameter("page"); + URI url = new URI(urlString); + + if (!url.isAbsolute()) { + response.sendRedirect(url.toString()); // GOOD: The redirect is to a relative URL + } + + if ("example.org".equals(url.getHost())) { + response.sendRedirect(url.toString()); // GOOD: The redirect is to a known host + } + } catch (URISyntaxException e) { + // handle exception + } + } +} \ No newline at end of file From 3ef1ab49ea5ecab585cc0cde42b472b36a231ad1 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Wed, 13 Mar 2024 12:00:02 +0100 Subject: [PATCH 159/731] C++: Add IR tests for the destruction of temporaries --- .../library-tests/ir/ir/PrintAST.expected | 368 +++++++++++++ .../library-tests/ir/ir/aliased_ir.expected | 493 ++++++++++++++++++ .../ir/ir/destructors_for_temps.cpp | 56 ++ .../ir/ir/operand_locations.expected | 438 ++++++++++++++++ .../test/library-tests/ir/ir/raw_ir.expected | 414 +++++++++++++++ 5 files changed, 1769 insertions(+) create mode 100644 cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 24501a4bcaeb..624954838d6e 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -1728,6 +1728,374 @@ complex.c: # 144| Type = [LongDoubleType] long double # 144| ValueCategory = prvalue # 145| getStmt(72): [ReturnStmt] return ... +destructors_for_temps.cpp: +# 1| [CopyAssignmentOperator] ClassWithDestructor2& ClassWithDestructor2::operator=(ClassWithDestructor2 const&) +# 1| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithDestructor2 & +# 1| [CopyConstructor] void ClassWithDestructor2::ClassWithDestructor2(ClassWithDestructor2 const&) +# 1| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithDestructor2 & +# 3| [Constructor] void ClassWithDestructor2::ClassWithDestructor2() +# 3| <params>: +# 4| [Destructor] void ClassWithDestructor2::~ClassWithDestructor2() +# 4| <params>: +# 6| [MemberFunction] char ClassWithDestructor2::get_x() +# 6| <params>: +# 9| [CopyAssignmentOperator] ClassWithConstructor& ClassWithConstructor::operator=(ClassWithConstructor const&) +# 9| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithConstructor & +# 9| [MoveAssignmentOperator] ClassWithConstructor& ClassWithConstructor::operator=(ClassWithConstructor&&) +# 9| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] ClassWithConstructor && +# 9| [CopyConstructor] void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor const&) +# 9| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithConstructor & +# 9| [MoveConstructor] void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) +# 9| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] ClassWithConstructor && +# 9| <initializations>: +# 9| getEntryPoint(): [BlockStmt] { ... } +# 9| getStmt(0): [ReturnStmt] return ... +# 11| [Constructor] void ClassWithConstructor::ClassWithConstructor(char, char) +# 11| <params>: +# 11| getParameter(0): [Parameter] x +# 11| Type = [PlainCharType] char +# 11| getParameter(1): [Parameter] y +# 11| Type = [PlainCharType] char +# 14| [TopLevelFunction] char temp_test() +# 14| <params>: +# 14| getEntryPoint(): [BlockStmt] { ... } +# 15| getStmt(0): [DeclStmt] declaration +# 15| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 15| Type = [PlainCharType] char +# 15| getVariable().getInitializer(): [Initializer] initializer for x +# 15| getExpr(): [FunctionCall] call to get_x +# 15| Type = [PlainCharType] char +# 15| ValueCategory = prvalue +# 15| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 15| Type = [VoidType] void +# 15| ValueCategory = prvalue +# 15| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 15| Type = [Class] ClassWithDestructor2 +# 15| ValueCategory = prvalue(load) +# 16| getStmt(1): [DeclStmt] declaration +# 16| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 16| Type = [Class] ClassWithConstructor +# 16| getVariable().getInitializer(): [Initializer] initializer for y +# 16| getExpr(): [ConstructorCall] call to ClassWithConstructor +# 16| Type = [VoidType] void +# 16| ValueCategory = prvalue +# 16| getArgument(0): [CharLiteral] 97 +# 16| Type = [PlainCharType] char +# 16| Value = [CharLiteral] 97 +# 16| ValueCategory = prvalue +# 16| getArgument(1): [FunctionCall] call to get_x +# 16| Type = [PlainCharType] char +# 16| ValueCategory = prvalue +# 16| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 16| Type = [VoidType] void +# 16| ValueCategory = prvalue +# 16| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 16| Type = [Class] ClassWithDestructor2 +# 16| ValueCategory = prvalue(load) +# 17| getStmt(2): [ReturnStmt] return ... +# 17| getExpr(): [FunctionCall] call to get_x +# 17| Type = [PlainCharType] char +# 17| ValueCategory = prvalue +# 17| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 17| Type = [VoidType] void +# 17| ValueCategory = prvalue +# 17| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 17| Type = [Class] ClassWithDestructor2 +# 17| ValueCategory = prvalue(load) +# 21| [TopLevelFunction] char temp_test2() +# 21| <params>: +# 21| getEntryPoint(): [BlockStmt] { ... } +# 22| getStmt(0): [ExprStmt] ExprStmt +# 22| getExpr(): [NewExpr] new +# 22| Type = [PointerType] ClassWithDestructor2 * +# 22| ValueCategory = prvalue +# 22| getInitializer(): [ConstructorCall] call to ClassWithDestructor2 +# 22| Type = [VoidType] void +# 22| ValueCategory = prvalue +# 23| getStmt(1): [ReturnStmt] return ... +# 23| getExpr(): [AddExpr] ... + ... +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getLeftOperand(): [FunctionCall] call to get_x +# 23| Type = [PlainCharType] char +# 23| ValueCategory = prvalue +# 23| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 23| Type = [VoidType] void +# 23| ValueCategory = prvalue +# 23| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 23| Type = [Class] ClassWithDestructor2 +# 23| ValueCategory = prvalue(load) +# 23| getRightOperand(): [FunctionCall] call to get_x +# 23| Type = [PlainCharType] char +# 23| ValueCategory = prvalue +# 23| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 23| Type = [VoidType] void +# 23| ValueCategory = prvalue +# 23| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 23| Type = [Class] ClassWithDestructor2 +# 23| ValueCategory = prvalue(load) +# 23| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 23| Conversion = [IntegralConversion] integral conversion +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 23| Conversion = [IntegralConversion] integral conversion +# 23| Type = [IntType] int +# 23| ValueCategory = prvalue +# 23| getExpr().getFullyConverted(): [CStyleCast] (char)... +# 23| Conversion = [IntegralConversion] integral conversion +# 23| Type = [PlainCharType] char +# 23| ValueCategory = prvalue +# 27| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor2 returnValue<ClassWithDestructor2>() +# 27| <params>: +# 27| [TemplateFunction,TopLevelFunction] T returnValue<T>() +# 27| <params>: +# 29| [TopLevelFunction] void temp_test3() +# 29| <params>: +# 29| getEntryPoint(): [BlockStmt] { ... } +# 30| getStmt(0): [DeclStmt] declaration +# 30| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs +# 30| Type = [LValueReferenceType] const ClassWithDestructor2 & +# 30| getVariable().getInitializer(): [Initializer] initializer for rs +# 30| getExpr(): [FunctionCall] call to returnValue +# 30| Type = [Class] ClassWithDestructor2 +# 30| ValueCategory = prvalue +# 30| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 30| Type = [LValueReferenceType] const ClassWithDestructor2 & +# 30| ValueCategory = prvalue +# 30| getExpr(): [CStyleCast] (const ClassWithDestructor2)... +# 30| Conversion = [GlvalueConversion] glvalue conversion +# 30| Type = [SpecifiedType] const ClassWithDestructor2 +# 30| ValueCategory = lvalue +# 30| getExpr(): [TemporaryObjectExpr] temporary object +# 30| Type = [Class] ClassWithDestructor2 +# 30| ValueCategory = lvalue +# 31| getStmt(1): [ReturnStmt] return ... +# 33| [TopLevelFunction] void temp_test4() +# 33| <params>: +# 33| getEntryPoint(): [BlockStmt] { ... } +# 34| getStmt(0): [DeclStmt] declaration +# 34| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 34| Type = [Class] ClassWithDestructor2 +# 34| getVariable().getInitializer(): [Initializer] initializer for c +# 34| getExpr(): [ConstructorCall] call to ClassWithDestructor2 +# 34| Type = [VoidType] void +# 34| ValueCategory = prvalue +# 35| getStmt(1): [DeclStmt] declaration +# 35| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs2 +# 35| Type = [LValueReferenceType] const ClassWithDestructor2 & +# 35| getVariable().getInitializer(): [Initializer] initializer for rs2 +# 35| getExpr(): [FunctionCall] call to returnValue +# 35| Type = [Class] ClassWithDestructor2 +# 35| ValueCategory = prvalue +# 35| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 35| Type = [LValueReferenceType] const ClassWithDestructor2 & +# 35| ValueCategory = prvalue +# 35| getExpr(): [CStyleCast] (const ClassWithDestructor2)... +# 35| Conversion = [GlvalueConversion] glvalue conversion +# 35| Type = [SpecifiedType] const ClassWithDestructor2 +# 35| ValueCategory = lvalue +# 35| getExpr(): [TemporaryObjectExpr] temporary object +# 35| Type = [Class] ClassWithDestructor2 +# 35| ValueCategory = lvalue +# 36| getStmt(2): [ReturnStmt] return ... +# 36| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 36| Type = [VoidType] void +# 36| ValueCategory = prvalue +# 36| getQualifier(): [VariableAccess] c +# 36| Type = [Class] ClassWithDestructor2 +# 36| ValueCategory = lvalue +# 38| [TopLevelFunction] void temp_test5(bool) +# 38| <params>: +# 38| getParameter(0): [Parameter] b +# 38| Type = [BoolType] bool +# 38| getEntryPoint(): [BlockStmt] { ... } +# 39| getStmt(0): [ExprStmt] ExprStmt +# 39| getExpr(): [ConditionalExpr] ... ? ... : ... +# 39| Type = [Class] ClassWithDestructor2 +# 39| ValueCategory = prvalue +# 39| getCondition(): [VariableAccess] b +# 39| Type = [BoolType] bool +# 39| ValueCategory = prvalue(load) +# 39| getThen(): [ConstructorCall] call to ClassWithDestructor2 +# 39| Type = [VoidType] void +# 39| ValueCategory = prvalue +# 39| getElse(): [ConstructorCall] call to ClassWithDestructor2 +# 39| Type = [VoidType] void +# 39| ValueCategory = prvalue +# 39| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 39| Type = [Class] ClassWithDestructor2 +# 39| ValueCategory = prvalue(load) +# 39| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 39| Type = [Class] ClassWithDestructor2 +# 39| ValueCategory = prvalue(load) +# 39| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 39| Type = [Class] ClassWithDestructor2 +# 39| ValueCategory = prvalue +# 40| getStmt(1): [ReturnStmt] return ... +# 42| [TopLevelFunction] void temp_test6(bool) +# 42| <params>: +# 42| getParameter(0): [Parameter] b +# 42| Type = [BoolType] bool +# 42| getEntryPoint(): [BlockStmt] { ... } +# 43| getStmt(0): [DeclStmt] declaration +# 43| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 43| Type = [Class] ClassWithDestructor2 +# 43| getVariable().getInitializer(): [Initializer] initializer for c +# 43| getExpr(): [ConstructorCall] call to ClassWithDestructor2 +# 43| Type = [VoidType] void +# 43| ValueCategory = prvalue +# 44| getStmt(1): [IfStmt] if (...) ... +# 44| getCondition(): [VariableAccess] b +# 44| Type = [BoolType] bool +# 44| ValueCategory = prvalue(load) +# 44| getThen(): [BlockStmt] { ... } +# 45| getStmt(0): [ExprStmt] ExprStmt +# 45| getExpr(): [ThrowExpr] throw ... +# 45| Type = [Class] ClassWithConstructor +# 45| ValueCategory = prvalue +# 45| getExpr(): [ConstructorCall] call to ClassWithConstructor +# 45| Type = [VoidType] void +# 45| ValueCategory = prvalue +# 45| getArgument(0): [CharLiteral] 120 +# 45| Type = [PlainCharType] char +# 45| Value = [CharLiteral] 120 +# 45| ValueCategory = prvalue +# 45| getArgument(1): [FunctionCall] call to get_x +# 45| Type = [PlainCharType] char +# 45| ValueCategory = prvalue +# 45| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 45| Type = [VoidType] void +# 45| ValueCategory = prvalue +# 45| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 45| Type = [Class] ClassWithDestructor2 +# 45| ValueCategory = prvalue(load) +# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 47| Type = [VoidType] void +# 47| ValueCategory = prvalue +# 47| getQualifier(): [VariableAccess] c +# 47| Type = [Class] ClassWithDestructor2 +# 47| ValueCategory = lvalue +# 47| getStmt(2): [ReturnStmt] return ... +# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 47| Type = [VoidType] void +# 47| ValueCategory = prvalue +# 47| getQualifier(): [VariableAccess] c +# 47| Type = [Class] ClassWithDestructor2 +# 47| ValueCategory = lvalue +# 49| [TopLevelFunction] void temp_test7(bool) +# 49| <params>: +# 49| getParameter(0): [Parameter] b +# 49| Type = [BoolType] bool +# 49| getEntryPoint(): [BlockStmt] { ... } +# 50| getStmt(0): [DeclStmt] declaration +# 50| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 50| Type = [Class] ClassWithDestructor2 +# 50| getVariable().getInitializer(): [Initializer] initializer for c +# 50| getExpr(): [ConstructorCall] call to ClassWithDestructor2 +# 50| Type = [VoidType] void +# 50| ValueCategory = prvalue +# 51| getStmt(1): [ExprStmt] ExprStmt +# 51| getExpr(): [ConditionalExpr] ... ? ... : ... +# 51| Type = [Class] ClassWithDestructor2 +# 51| ValueCategory = prvalue(load) +# 51| getCondition(): [VariableAccess] b +# 51| Type = [BoolType] bool +# 51| ValueCategory = prvalue(load) +# 51| getThen(): [ThrowExpr] throw ... +# 51| Type = [Class] ClassWithConstructor +# 51| ValueCategory = prvalue +# 51| getExpr(): [ConstructorCall] call to ClassWithConstructor +# 51| Type = [VoidType] void +# 51| ValueCategory = prvalue +# 51| getArgument(0): [CharLiteral] 120 +# 51| Type = [PlainCharType] char +# 51| Value = [CharLiteral] 120 +# 51| ValueCategory = prvalue +# 51| getArgument(1): [FunctionCall] call to get_x +# 51| Type = [PlainCharType] char +# 51| ValueCategory = prvalue +# 51| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 51| Type = [VoidType] void +# 51| ValueCategory = prvalue +# 51| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 51| Type = [Class] ClassWithDestructor2 +# 51| ValueCategory = prvalue(load) +# 52| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 52| Type = [VoidType] void +# 52| ValueCategory = prvalue +# 52| getQualifier(): [VariableAccess] c +# 52| Type = [Class] ClassWithDestructor2 +# 52| ValueCategory = lvalue +# 51| getElse(): [ConstructorCall] call to ClassWithDestructor2 +# 51| Type = [VoidType] void +# 51| ValueCategory = prvalue +# 51| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 51| Type = [Class] ClassWithDestructor2 +# 51| ValueCategory = prvalue(load) +# 51| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 51| Type = [Class] ClassWithDestructor2 +# 51| ValueCategory = prvalue +# 52| getStmt(2): [ReturnStmt] return ... +# 52| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 52| Type = [VoidType] void +# 52| ValueCategory = prvalue +# 52| getQualifier(): [VariableAccess] c +# 52| Type = [Class] ClassWithDestructor2 +# 52| ValueCategory = lvalue +# 54| [TopLevelFunction] void temp_test8(bool) +# 54| <params>: +# 54| getParameter(0): [Parameter] b +# 54| Type = [BoolType] bool +# 54| getEntryPoint(): [BlockStmt] { ... } +# 55| getStmt(0): [ExprStmt] ExprStmt +# 55| getExpr(): [ConditionalExpr] ... ? ... : ... +# 55| Type = [Class] ClassWithDestructor2 +# 55| ValueCategory = prvalue(load) +# 55| getCondition(): [VariableAccess] b +# 55| Type = [BoolType] bool +# 55| ValueCategory = prvalue(load) +# 55| getThen(): [ThrowExpr] throw ... +# 55| Type = [Class] ClassWithConstructor +# 55| ValueCategory = prvalue +# 55| getExpr(): [ConstructorCall] call to ClassWithConstructor +# 55| Type = [VoidType] void +# 55| ValueCategory = prvalue +# 55| getArgument(0): [CharLiteral] 120 +# 55| Type = [PlainCharType] char +# 55| Value = [CharLiteral] 120 +# 55| ValueCategory = prvalue +# 55| getArgument(1): [FunctionCall] call to get_x +# 55| Type = [PlainCharType] char +# 55| ValueCategory = prvalue +# 55| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 +# 55| Type = [VoidType] void +# 55| ValueCategory = prvalue +# 55| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 55| Type = [Class] ClassWithDestructor2 +# 55| ValueCategory = prvalue(load) +# 55| getElse(): [ConstructorCall] call to ClassWithDestructor2 +# 55| Type = [VoidType] void +# 55| ValueCategory = prvalue +# 55| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 55| Type = [Class] ClassWithDestructor2 +# 55| ValueCategory = prvalue(load) +# 55| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 55| Type = [Class] ClassWithDestructor2 +# 55| ValueCategory = prvalue +# 56| getStmt(1): [ReturnStmt] return ... ir.c: # 5| [TopLevelFunction] int getX(MyCoords*) # 5| <params>: diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 510a271b7ace..fe75f86cfc57 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -738,6 +738,499 @@ complex.c: # 58| v58_6(void) = AliasedUse : m58_3 # 58| v58_7(void) = ExitFunction : +destructors_for_temps.cpp: +# 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) +# 9| Block 0 +# 9| v9_1(void) = EnterFunction : +# 9| m9_2(unknown) = AliasedDefinition : +# 9| m9_3(unknown) = InitializeNonLocal : +# 9| m9_4(unknown) = Chi : total:m9_2, partial:m9_3 +# 9| r9_5(glval<unknown>) = VariableAddress[#this] : +# 9| m9_6(glval<ClassWithConstructor>) = InitializeParameter[#this] : &:r9_5 +# 9| r9_7(glval<ClassWithConstructor>) = Load[#this] : &:r9_5, m9_6 +# 9| m9_8(ClassWithConstructor) = InitializeIndirection[#this] : &:r9_7 +#-----| r0_1(glval<ClassWithConstructor &&>) = VariableAddress[(unnamed parameter 0)] : +#-----| m0_2(ClassWithConstructor &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(ClassWithConstructor &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 +#-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 9| v9_9(void) = NoOp : +# 9| v9_10(void) = ReturnIndirection[#this] : &:r9_7, m9_8 +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 +# 9| v9_11(void) = ReturnVoid : +# 9| v9_12(void) = AliasedUse : m9_3 +# 9| v9_13(void) = ExitFunction : + +# 14| char temp_test() +# 14| Block 0 +# 14| v14_1(void) = EnterFunction : +# 14| m14_2(unknown) = AliasedDefinition : +# 14| m14_3(unknown) = InitializeNonLocal : +# 14| m14_4(unknown) = Chi : total:m14_2, partial:m14_3 +# 15| r15_1(glval<char>) = VariableAddress[x] : +# 15| r15_2(glval<ClassWithDestructor2>) = VariableAddress[#temp15:14] : +# 15| m15_3(ClassWithDestructor2) = Uninitialized[#temp15:14] : &:r15_2 +# 15| r15_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 15| v15_5(void) = Call[ClassWithDestructor2] : func:r15_4, this:r15_2 +# 15| m15_6(unknown) = ^CallSideEffect : ~m14_4 +# 15| m15_7(unknown) = Chi : total:m14_4, partial:m15_6 +# 15| m15_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2 +# 15| m15_9(ClassWithDestructor2) = Chi : total:m15_3, partial:m15_8 +# 15| r15_10(glval<unknown>) = FunctionAddress[get_x] : +# 15| r15_11(char) = Call[get_x] : func:r15_10, this:r15_2 +# 15| m15_12(unknown) = ^CallSideEffect : ~m15_7 +# 15| m15_13(unknown) = Chi : total:m15_7, partial:m15_12 +# 15| v15_14(void) = ^IndirectReadSideEffect[-1] : &:r15_2, m15_9 +# 15| m15_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2 +# 15| m15_16(ClassWithDestructor2) = Chi : total:m15_9, partial:m15_15 +# 15| m15_17(char) = Store[x] : &:r15_1, r15_11 +# 16| r16_1(glval<ClassWithConstructor>) = VariableAddress[y] : +# 16| m16_2(ClassWithConstructor) = Uninitialized[y] : &:r16_1 +# 16| r16_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 16| r16_4(char) = Constant[97] : +# 16| r16_5(glval<ClassWithDestructor2>) = VariableAddress[#temp16:33] : +# 16| m16_6(ClassWithDestructor2) = Uninitialized[#temp16:33] : &:r16_5 +# 16| r16_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 16| v16_8(void) = Call[ClassWithDestructor2] : func:r16_7, this:r16_5 +# 16| m16_9(unknown) = ^CallSideEffect : ~m15_13 +# 16| m16_10(unknown) = Chi : total:m15_13, partial:m16_9 +# 16| m16_11(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5 +# 16| m16_12(ClassWithDestructor2) = Chi : total:m16_6, partial:m16_11 +# 16| r16_13(glval<unknown>) = FunctionAddress[get_x] : +# 16| r16_14(char) = Call[get_x] : func:r16_13, this:r16_5 +# 16| m16_15(unknown) = ^CallSideEffect : ~m16_10 +# 16| m16_16(unknown) = Chi : total:m16_10, partial:m16_15 +# 16| v16_17(void) = ^IndirectReadSideEffect[-1] : &:r16_5, m16_12 +# 16| m16_18(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5 +# 16| m16_19(ClassWithDestructor2) = Chi : total:m16_12, partial:m16_18 +# 16| v16_20(void) = Call[ClassWithConstructor] : func:r16_3, this:r16_1, 0:r16_4, 1:r16_14 +# 16| m16_21(unknown) = ^CallSideEffect : ~m16_16 +# 16| m16_22(unknown) = Chi : total:m16_16, partial:m16_21 +# 16| m16_23(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r16_1 +# 16| m16_24(ClassWithConstructor) = Chi : total:m16_2, partial:m16_23 +# 17| r17_1(glval<char>) = VariableAddress[#return] : +# 17| r17_2(glval<ClassWithDestructor2>) = VariableAddress[#temp17:12] : +# 17| m17_3(ClassWithDestructor2) = Uninitialized[#temp17:12] : &:r17_2 +# 17| r17_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 17| v17_5(void) = Call[ClassWithDestructor2] : func:r17_4, this:r17_2 +# 17| m17_6(unknown) = ^CallSideEffect : ~m16_22 +# 17| m17_7(unknown) = Chi : total:m16_22, partial:m17_6 +# 17| m17_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2 +# 17| m17_9(ClassWithDestructor2) = Chi : total:m17_3, partial:m17_8 +# 17| r17_10(glval<unknown>) = FunctionAddress[get_x] : +# 17| r17_11(char) = Call[get_x] : func:r17_10, this:r17_2 +# 17| m17_12(unknown) = ^CallSideEffect : ~m17_7 +# 17| m17_13(unknown) = Chi : total:m17_7, partial:m17_12 +# 17| v17_14(void) = ^IndirectReadSideEffect[-1] : &:r17_2, m17_9 +# 17| m17_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2 +# 17| m17_16(ClassWithDestructor2) = Chi : total:m17_9, partial:m17_15 +# 17| m17_17(char) = Store[#return] : &:r17_1, r17_11 +# 14| r14_5(glval<char>) = VariableAddress[#return] : +# 14| v14_6(void) = ReturnValue : &:r14_5, m17_17 +# 14| v14_7(void) = AliasedUse : ~m17_13 +# 14| v14_8(void) = ExitFunction : + +# 21| char temp_test2() +# 21| Block 0 +# 21| v21_1(void) = EnterFunction : +# 21| m21_2(unknown) = AliasedDefinition : +# 21| m21_3(unknown) = InitializeNonLocal : +# 21| m21_4(unknown) = Chi : total:m21_2, partial:m21_3 +# 22| r22_1(glval<unknown>) = FunctionAddress[operator new] : +# 22| r22_2(unsigned long) = Constant[1] : +# 22| r22_3(void *) = Call[operator new] : func:r22_1, 0:r22_2 +# 22| m22_4(unknown) = ^CallSideEffect : ~m21_4 +# 22| m22_5(unknown) = Chi : total:m21_4, partial:m22_4 +# 22| m22_6(unknown) = ^InitializeDynamicAllocation : &:r22_3 +# 22| r22_7(ClassWithDestructor2 *) = Convert : r22_3 +# 22| r22_8(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 22| v22_9(void) = Call[ClassWithDestructor2] : func:r22_8, this:r22_7 +# 22| m22_10(unknown) = ^CallSideEffect : ~m22_5 +# 22| m22_11(unknown) = Chi : total:m22_5, partial:m22_10 +# 22| m22_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r22_7 +# 22| m22_13(unknown) = Chi : total:m22_6, partial:m22_12 +# 23| r23_1(glval<char>) = VariableAddress[#return] : +# 23| r23_2(glval<ClassWithDestructor2>) = VariableAddress[#temp23:12] : +# 23| m23_3(ClassWithDestructor2) = Uninitialized[#temp23:12] : &:r23_2 +# 23| r23_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 23| v23_5(void) = Call[ClassWithDestructor2] : func:r23_4, this:r23_2 +# 23| m23_6(unknown) = ^CallSideEffect : ~m22_11 +# 23| m23_7(unknown) = Chi : total:m22_11, partial:m23_6 +# 23| m23_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2 +# 23| m23_9(ClassWithDestructor2) = Chi : total:m23_3, partial:m23_8 +# 23| r23_10(glval<unknown>) = FunctionAddress[get_x] : +# 23| r23_11(char) = Call[get_x] : func:r23_10, this:r23_2 +# 23| m23_12(unknown) = ^CallSideEffect : ~m23_7 +# 23| m23_13(unknown) = Chi : total:m23_7, partial:m23_12 +# 23| v23_14(void) = ^IndirectReadSideEffect[-1] : &:r23_2, m23_9 +# 23| m23_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2 +# 23| m23_16(ClassWithDestructor2) = Chi : total:m23_9, partial:m23_15 +# 23| r23_17(int) = Convert : r23_11 +# 23| r23_18(glval<ClassWithDestructor2>) = VariableAddress[#temp23:45] : +# 23| m23_19(ClassWithDestructor2) = Uninitialized[#temp23:45] : &:r23_18 +# 23| r23_20(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 23| v23_21(void) = Call[ClassWithDestructor2] : func:r23_20, this:r23_18 +# 23| m23_22(unknown) = ^CallSideEffect : ~m23_13 +# 23| m23_23(unknown) = Chi : total:m23_13, partial:m23_22 +# 23| m23_24(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_18 +# 23| m23_25(ClassWithDestructor2) = Chi : total:m23_19, partial:m23_24 +# 23| r23_26(glval<unknown>) = FunctionAddress[get_x] : +# 23| r23_27(char) = Call[get_x] : func:r23_26, this:r23_18 +# 23| m23_28(unknown) = ^CallSideEffect : ~m23_23 +# 23| m23_29(unknown) = Chi : total:m23_23, partial:m23_28 +# 23| v23_30(void) = ^IndirectReadSideEffect[-1] : &:r23_18, m23_25 +# 23| m23_31(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_18 +# 23| m23_32(ClassWithDestructor2) = Chi : total:m23_25, partial:m23_31 +# 23| r23_33(int) = Convert : r23_27 +# 23| r23_34(int) = Add : r23_17, r23_33 +# 23| r23_35(char) = Convert : r23_34 +# 23| m23_36(char) = Store[#return] : &:r23_1, r23_35 +# 21| r21_5(glval<char>) = VariableAddress[#return] : +# 21| v21_6(void) = ReturnValue : &:r21_5, m23_36 +# 21| v21_7(void) = AliasedUse : ~m23_29 +# 21| v21_8(void) = ExitFunction : + +# 29| void temp_test3() +# 29| Block 0 +# 29| v29_1(void) = EnterFunction : +# 29| m29_2(unknown) = AliasedDefinition : +# 29| m29_3(unknown) = InitializeNonLocal : +# 29| m29_4(unknown) = Chi : total:m29_2, partial:m29_3 +# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] : +# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] : +# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] : +# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3 +# 30| m30_5(unknown) = ^CallSideEffect : ~m29_4 +# 30| m30_6(unknown) = Chi : total:m29_4, partial:m30_5 +# 30| m30_7(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4 +# 30| r30_8(glval<ClassWithDestructor2>) = Convert : r30_2 +# 30| r30_9(ClassWithDestructor2 &) = CopyValue : r30_8 +# 30| m30_10(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_9 +# 31| v31_1(void) = NoOp : +# 29| v29_5(void) = ReturnVoid : +# 29| v29_6(void) = AliasedUse : ~m30_6 +# 29| v29_7(void) = ExitFunction : + +# 33| void temp_test4() +# 33| Block 0 +# 33| v33_1(void) = EnterFunction : +# 33| m33_2(unknown) = AliasedDefinition : +# 33| m33_3(unknown) = InitializeNonLocal : +# 33| m33_4(unknown) = Chi : total:m33_2, partial:m33_3 +# 34| r34_1(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 34| m34_2(ClassWithDestructor2) = Uninitialized[c] : &:r34_1 +# 34| r34_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 34| v34_4(void) = Call[ClassWithDestructor2] : func:r34_3, this:r34_1 +# 34| m34_5(unknown) = ^CallSideEffect : ~m33_4 +# 34| m34_6(unknown) = Chi : total:m33_4, partial:m34_5 +# 34| m34_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r34_1 +# 34| m34_8(ClassWithDestructor2) = Chi : total:m34_2, partial:m34_7 +# 35| r35_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs2] : +# 35| r35_2(glval<ClassWithDestructor2>) = VariableAddress[#temp35:39] : +# 35| r35_3(glval<unknown>) = FunctionAddress[returnValue] : +# 35| r35_4(ClassWithDestructor2) = Call[returnValue] : func:r35_3 +# 35| m35_5(unknown) = ^CallSideEffect : ~m34_6 +# 35| m35_6(unknown) = Chi : total:m34_6, partial:m35_5 +# 35| m35_7(ClassWithDestructor2) = Store[#temp35:39] : &:r35_2, r35_4 +# 35| r35_8(glval<ClassWithDestructor2>) = Convert : r35_2 +# 35| r35_9(ClassWithDestructor2 &) = CopyValue : r35_8 +# 35| m35_10(ClassWithDestructor2 &) = Store[rs2] : &:r35_1, r35_9 +# 36| v36_1(void) = NoOp : +# 36| r36_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 36| r36_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 36| v36_4(void) = Call[~ClassWithDestructor2] : func:r36_3, this:r36_2 +# 36| m36_5(unknown) = ^CallSideEffect : ~m35_6 +# 36| m36_6(unknown) = Chi : total:m35_6, partial:m36_5 +# 36| v36_7(void) = ^IndirectReadSideEffect[-1] : &:r36_2, m34_8 +# 36| m36_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_2 +# 36| m36_9(ClassWithDestructor2) = Chi : total:m34_8, partial:m36_8 +# 33| v33_5(void) = ReturnVoid : +# 33| v33_6(void) = AliasedUse : ~m36_6 +# 33| v33_7(void) = ExitFunction : + +# 38| void temp_test5(bool) +# 38| Block 0 +# 38| v38_1(void) = EnterFunction : +# 38| m38_2(unknown) = AliasedDefinition : +# 38| m38_3(unknown) = InitializeNonLocal : +# 38| m38_4(unknown) = Chi : total:m38_2, partial:m38_3 +# 38| r38_5(glval<bool>) = VariableAddress[b] : +# 38| m38_6(bool) = InitializeParameter[b] : &:r38_5 +# 39| r39_1(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| r39_2(glval<bool>) = VariableAddress[b] : +# 39| r39_3(bool) = Load[b] : &:r39_2, m38_6 +# 39| v39_4(void) = ConditionalBranch : r39_3 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 39| Block 1 +# 39| m39_5(unknown) = Phi : from 2:~m39_15, from 3:~m39_26 +# 39| m39_6(ClassWithDestructor2) = Phi : from 2:m39_20, from 3:m39_31 +# 39| r39_7(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| r39_8(ClassWithDestructor2) = Load[#temp39:3] : &:r39_7, m39_6 +# 39| m39_9(ClassWithDestructor2) = Store[#temp39:3] : &:r39_1, r39_8 +# 40| v40_1(void) = NoOp : +# 38| v38_7(void) = ReturnVoid : +# 38| v38_8(void) = AliasedUse : ~m39_5 +# 38| v38_9(void) = ExitFunction : + +# 39| Block 2 +# 39| r39_10(glval<ClassWithDestructor2>) = VariableAddress[#temp39:7] : +# 39| m39_11(ClassWithDestructor2) = Uninitialized[#temp39:7] : &:r39_10 +# 39| r39_12(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 39| v39_13(void) = Call[ClassWithDestructor2] : func:r39_12, this:r39_10 +# 39| m39_14(unknown) = ^CallSideEffect : ~m38_4 +# 39| m39_15(unknown) = Chi : total:m38_4, partial:m39_14 +# 39| m39_16(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_10 +# 39| m39_17(ClassWithDestructor2) = Chi : total:m39_11, partial:m39_16 +# 39| r39_18(ClassWithDestructor2) = Load[#temp39:7] : &:r39_10, m39_17 +# 39| r39_19(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| m39_20(ClassWithDestructor2) = Store[#temp39:3] : &:r39_19, r39_18 +#-----| Goto -> Block 1 + +# 39| Block 3 +# 39| r39_21(glval<ClassWithDestructor2>) = VariableAddress[#temp39:32] : +# 39| m39_22(ClassWithDestructor2) = Uninitialized[#temp39:32] : &:r39_21 +# 39| r39_23(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 39| v39_24(void) = Call[ClassWithDestructor2] : func:r39_23, this:r39_21 +# 39| m39_25(unknown) = ^CallSideEffect : ~m38_4 +# 39| m39_26(unknown) = Chi : total:m38_4, partial:m39_25 +# 39| m39_27(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_21 +# 39| m39_28(ClassWithDestructor2) = Chi : total:m39_22, partial:m39_27 +# 39| r39_29(ClassWithDestructor2) = Load[#temp39:32] : &:r39_21, m39_28 +# 39| r39_30(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| m39_31(ClassWithDestructor2) = Store[#temp39:3] : &:r39_30, r39_29 +#-----| Goto -> Block 1 + +# 42| void temp_test6(bool) +# 42| Block 0 +# 42| v42_1(void) = EnterFunction : +# 42| m42_2(unknown) = AliasedDefinition : +# 42| m42_3(unknown) = InitializeNonLocal : +# 42| m42_4(unknown) = Chi : total:m42_2, partial:m42_3 +# 42| r42_5(glval<bool>) = VariableAddress[b] : +# 42| m42_6(bool) = InitializeParameter[b] : &:r42_5 +# 43| r43_1(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 43| m43_2(ClassWithDestructor2) = Uninitialized[c] : &:r43_1 +# 43| r43_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 43| v43_4(void) = Call[ClassWithDestructor2] : func:r43_3, this:r43_1 +# 43| m43_5(unknown) = ^CallSideEffect : ~m42_4 +# 43| m43_6(unknown) = Chi : total:m42_4, partial:m43_5 +# 43| m43_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r43_1 +# 43| m43_8(ClassWithDestructor2) = Chi : total:m43_2, partial:m43_7 +# 44| r44_1(glval<bool>) = VariableAddress[b] : +# 44| r44_2(bool) = Load[b] : &:r44_1, m42_6 +# 44| v44_3(void) = ConditionalBranch : r44_2 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 42| Block 1 +# 42| m42_7(unknown) = Phi : from 2:~m45_22, from 4:~m47_6 +# 42| v42_8(void) = AliasedUse : ~m42_7 +# 42| v42_9(void) = ExitFunction : + +# 42| Block 2 +# 42| v42_10(void) = Unwind : +#-----| Goto -> Block 1 + +# 45| Block 3 +# 45| r45_1(glval<ClassWithConstructor>) = VariableAddress[#throw45:7] : +# 45| m45_2(ClassWithConstructor) = Uninitialized[#throw45:7] : &:r45_1 +# 45| r45_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 45| r45_4(char) = Constant[120] : +# 45| r45_5(glval<ClassWithDestructor2>) = VariableAddress[#temp45:39] : +# 45| m45_6(ClassWithDestructor2) = Uninitialized[#temp45:39] : &:r45_5 +# 45| r45_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 45| v45_8(void) = Call[ClassWithDestructor2] : func:r45_7, this:r45_5 +# 45| m45_9(unknown) = ^CallSideEffect : ~m43_6 +# 45| m45_10(unknown) = Chi : total:m43_6, partial:m45_9 +# 45| m45_11(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5 +# 45| m45_12(ClassWithDestructor2) = Chi : total:m45_6, partial:m45_11 +# 45| r45_13(glval<unknown>) = FunctionAddress[get_x] : +# 45| r45_14(char) = Call[get_x] : func:r45_13, this:r45_5 +# 45| m45_15(unknown) = ^CallSideEffect : ~m45_10 +# 45| m45_16(unknown) = Chi : total:m45_10, partial:m45_15 +# 45| v45_17(void) = ^IndirectReadSideEffect[-1] : &:r45_5, m45_12 +# 45| m45_18(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5 +# 45| m45_19(ClassWithDestructor2) = Chi : total:m45_12, partial:m45_18 +# 45| v45_20(void) = Call[ClassWithConstructor] : func:r45_3, this:r45_1, 0:r45_4, 1:r45_14 +# 45| m45_21(unknown) = ^CallSideEffect : ~m45_16 +# 45| m45_22(unknown) = Chi : total:m45_16, partial:m45_21 +# 45| m45_23(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r45_1 +# 45| m45_24(ClassWithConstructor) = Chi : total:m45_2, partial:m45_23 +# 45| v45_25(void) = ThrowValue : &:r45_1, m45_24 +#-----| Exception -> Block 2 + +# 47| Block 4 +# 47| v47_1(void) = NoOp : +# 47| r47_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 47| r47_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 47| v47_4(void) = Call[~ClassWithDestructor2] : func:r47_3, this:r47_2 +# 47| m47_5(unknown) = ^CallSideEffect : ~m43_6 +# 47| m47_6(unknown) = Chi : total:m43_6, partial:m47_5 +# 47| v47_7(void) = ^IndirectReadSideEffect[-1] : &:r47_2, m43_8 +# 47| m47_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r47_2 +# 47| m47_9(ClassWithDestructor2) = Chi : total:m43_8, partial:m47_8 +# 42| v42_11(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 49| void temp_test7(bool) +# 49| Block 0 +# 49| v49_1(void) = EnterFunction : +# 49| m49_2(unknown) = AliasedDefinition : +# 49| m49_3(unknown) = InitializeNonLocal : +# 49| m49_4(unknown) = Chi : total:m49_2, partial:m49_3 +# 49| r49_5(glval<bool>) = VariableAddress[b] : +# 49| m49_6(bool) = InitializeParameter[b] : &:r49_5 +# 50| r50_1(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 50| m50_2(ClassWithDestructor2) = Uninitialized[c] : &:r50_1 +# 50| r50_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 50| v50_4(void) = Call[ClassWithDestructor2] : func:r50_3, this:r50_1 +# 50| m50_5(unknown) = ^CallSideEffect : ~m49_4 +# 50| m50_6(unknown) = Chi : total:m49_4, partial:m50_5 +# 50| m50_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r50_1 +# 50| m50_8(ClassWithDestructor2) = Chi : total:m50_2, partial:m50_7 +# 51| r51_1(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] : +# 51| r51_2(glval<bool>) = VariableAddress[b] : +# 51| r51_3(bool) = Load[b] : &:r51_2, m49_6 +# 51| v51_4(void) = ConditionalBranch : r51_3 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 49| Block 1 +# 49| m49_7(unknown) = Phi : from 2:~m51_26, from 4:~m52_6 +# 49| v49_8(void) = AliasedUse : ~m49_7 +# 49| v49_9(void) = ExitFunction : + +# 49| Block 2 +# 49| v49_10(void) = Unwind : +#-----| Goto -> Block 1 + +# 51| Block 3 +# 51| r51_5(glval<ClassWithConstructor>) = VariableAddress[#throw51:9] : +# 51| m51_6(ClassWithConstructor) = Uninitialized[#throw51:9] : &:r51_5 +# 51| r51_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 51| r51_8(char) = Constant[120] : +# 51| r51_9(glval<ClassWithDestructor2>) = VariableAddress[#temp51:41] : +# 51| m51_10(ClassWithDestructor2) = Uninitialized[#temp51:41] : &:r51_9 +# 51| r51_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 51| v51_12(void) = Call[ClassWithDestructor2] : func:r51_11, this:r51_9 +# 51| m51_13(unknown) = ^CallSideEffect : ~m50_6 +# 51| m51_14(unknown) = Chi : total:m50_6, partial:m51_13 +# 51| m51_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9 +# 51| m51_16(ClassWithDestructor2) = Chi : total:m51_10, partial:m51_15 +# 51| r51_17(glval<unknown>) = FunctionAddress[get_x] : +# 51| r51_18(char) = Call[get_x] : func:r51_17, this:r51_9 +# 51| m51_19(unknown) = ^CallSideEffect : ~m51_14 +# 51| m51_20(unknown) = Chi : total:m51_14, partial:m51_19 +# 51| v51_21(void) = ^IndirectReadSideEffect[-1] : &:r51_9, m51_16 +# 51| m51_22(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9 +# 51| m51_23(ClassWithDestructor2) = Chi : total:m51_16, partial:m51_22 +# 51| v51_24(void) = Call[ClassWithConstructor] : func:r51_7, this:r51_5, 0:r51_8, 1:r51_18 +# 51| m51_25(unknown) = ^CallSideEffect : ~m51_20 +# 51| m51_26(unknown) = Chi : total:m51_20, partial:m51_25 +# 51| m51_27(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r51_5 +# 51| m51_28(ClassWithConstructor) = Chi : total:m51_6, partial:m51_27 +# 51| v51_29(void) = ThrowValue : &:r51_5, m51_28 +#-----| Exception -> Block 2 + +# 51| Block 4 +# 51| r51_30(glval<ClassWithDestructor2>) = VariableAddress[#temp51:75] : +# 51| m51_31(ClassWithDestructor2) = Uninitialized[#temp51:75] : &:r51_30 +# 51| r51_32(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 51| v51_33(void) = Call[ClassWithDestructor2] : func:r51_32, this:r51_30 +# 51| m51_34(unknown) = ^CallSideEffect : ~m50_6 +# 51| m51_35(unknown) = Chi : total:m50_6, partial:m51_34 +# 51| m51_36(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_30 +# 51| m51_37(ClassWithDestructor2) = Chi : total:m51_31, partial:m51_36 +# 51| r51_38(ClassWithDestructor2) = Load[#temp51:75] : &:r51_30, m51_37 +# 51| r51_39(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] : +# 51| m51_40(ClassWithDestructor2) = Store[#temp51:5] : &:r51_39, r51_38 +# 51| r51_41(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] : +# 51| r51_42(ClassWithDestructor2) = Load[#temp51:5] : &:r51_41, m51_40 +# 51| m51_43(ClassWithDestructor2) = Store[#temp51:5] : &:r51_1, r51_42 +# 52| v52_1(void) = NoOp : +# 52| r52_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 52| r52_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 52| v52_4(void) = Call[~ClassWithDestructor2] : func:r52_3, this:r52_2 +# 52| m52_5(unknown) = ^CallSideEffect : ~m51_35 +# 52| m52_6(unknown) = Chi : total:m51_35, partial:m52_5 +# 52| v52_7(void) = ^IndirectReadSideEffect[-1] : &:r52_2, m50_8 +# 52| m52_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r52_2 +# 52| m52_9(ClassWithDestructor2) = Chi : total:m50_8, partial:m52_8 +# 49| v49_11(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 54| void temp_test8(bool) +# 54| Block 0 +# 54| v54_1(void) = EnterFunction : +# 54| m54_2(unknown) = AliasedDefinition : +# 54| m54_3(unknown) = InitializeNonLocal : +# 54| m54_4(unknown) = Chi : total:m54_2, partial:m54_3 +# 54| r54_5(glval<bool>) = VariableAddress[b] : +# 54| m54_6(bool) = InitializeParameter[b] : &:r54_5 +# 55| r55_1(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] : +# 55| r55_2(glval<bool>) = VariableAddress[b] : +# 55| r55_3(bool) = Load[b] : &:r55_2, m54_6 +# 55| v55_4(void) = ConditionalBranch : r55_3 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 54| Block 1 +# 54| m54_7(unknown) = Phi : from 2:~m55_26, from 4:~m55_35 +# 54| v54_8(void) = AliasedUse : ~m54_7 +# 54| v54_9(void) = ExitFunction : + +# 54| Block 2 +# 54| v54_10(void) = Unwind : +#-----| Goto -> Block 1 + +# 55| Block 3 +# 55| r55_5(glval<ClassWithConstructor>) = VariableAddress[#throw55:9] : +# 55| m55_6(ClassWithConstructor) = Uninitialized[#throw55:9] : &:r55_5 +# 55| r55_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 55| r55_8(char) = Constant[120] : +# 55| r55_9(glval<ClassWithDestructor2>) = VariableAddress[#temp55:41] : +# 55| m55_10(ClassWithDestructor2) = Uninitialized[#temp55:41] : &:r55_9 +# 55| r55_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 55| v55_12(void) = Call[ClassWithDestructor2] : func:r55_11, this:r55_9 +# 55| m55_13(unknown) = ^CallSideEffect : ~m54_4 +# 55| m55_14(unknown) = Chi : total:m54_4, partial:m55_13 +# 55| m55_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9 +# 55| m55_16(ClassWithDestructor2) = Chi : total:m55_10, partial:m55_15 +# 55| r55_17(glval<unknown>) = FunctionAddress[get_x] : +# 55| r55_18(char) = Call[get_x] : func:r55_17, this:r55_9 +# 55| m55_19(unknown) = ^CallSideEffect : ~m55_14 +# 55| m55_20(unknown) = Chi : total:m55_14, partial:m55_19 +# 55| v55_21(void) = ^IndirectReadSideEffect[-1] : &:r55_9, m55_16 +# 55| m55_22(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9 +# 55| m55_23(ClassWithDestructor2) = Chi : total:m55_16, partial:m55_22 +# 55| v55_24(void) = Call[ClassWithConstructor] : func:r55_7, this:r55_5, 0:r55_8, 1:r55_18 +# 55| m55_25(unknown) = ^CallSideEffect : ~m55_20 +# 55| m55_26(unknown) = Chi : total:m55_20, partial:m55_25 +# 55| m55_27(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r55_5 +# 55| m55_28(ClassWithConstructor) = Chi : total:m55_6, partial:m55_27 +# 55| v55_29(void) = ThrowValue : &:r55_5, m55_28 +#-----| Exception -> Block 2 + +# 55| Block 4 +# 55| r55_30(glval<ClassWithDestructor2>) = VariableAddress[#temp55:75] : +# 55| m55_31(ClassWithDestructor2) = Uninitialized[#temp55:75] : &:r55_30 +# 55| r55_32(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 55| v55_33(void) = Call[ClassWithDestructor2] : func:r55_32, this:r55_30 +# 55| m55_34(unknown) = ^CallSideEffect : ~m54_4 +# 55| m55_35(unknown) = Chi : total:m54_4, partial:m55_34 +# 55| m55_36(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_30 +# 55| m55_37(ClassWithDestructor2) = Chi : total:m55_31, partial:m55_36 +# 55| r55_38(ClassWithDestructor2) = Load[#temp55:75] : &:r55_30, m55_37 +# 55| r55_39(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] : +# 55| m55_40(ClassWithDestructor2) = Store[#temp55:5] : &:r55_39, r55_38 +# 55| r55_41(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] : +# 55| r55_42(ClassWithDestructor2) = Load[#temp55:5] : &:r55_41, m55_40 +# 55| m55_43(ClassWithDestructor2) = Store[#temp55:5] : &:r55_1, r55_42 +# 56| v56_1(void) = NoOp : +# 54| v54_11(void) = ReturnVoid : +#-----| Goto -> Block 1 + ir.c: # 7| void MyCoordsTest(int) # 7| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp b/cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp new file mode 100644 index 000000000000..572c81ac111b --- /dev/null +++ b/cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp @@ -0,0 +1,56 @@ +class ClassWithDestructor2 { +public: + ClassWithDestructor2(); + ~ClassWithDestructor2(); + + char get_x(); +}; + +class ClassWithConstructor { +public: + ClassWithConstructor(char x, char y); +}; + +char temp_test() { + char x = ClassWithDestructor2().get_x(); + ClassWithConstructor y('a', ClassWithDestructor2().get_x()); + return ClassWithDestructor2().get_x(); +} + + +char temp_test2() { + new ClassWithDestructor2(); + return ClassWithDestructor2().get_x() + ClassWithDestructor2().get_x(); +} + +template<typename T> +T returnValue(); + +void temp_test3() { + const ClassWithDestructor2& rs = returnValue<ClassWithDestructor2>(); +} + +void temp_test4() { + ClassWithDestructor2 c; + const ClassWithDestructor2& rs2 = returnValue<ClassWithDestructor2>(); +} + +void temp_test5(bool b) { + b ? ClassWithDestructor2() : ClassWithDestructor2(); +} + +void temp_test6(bool b) { + ClassWithDestructor2 c; + if (b) { + throw ClassWithConstructor('x', ClassWithDestructor2().get_x()); + } +} + +void temp_test7(bool b) { + ClassWithDestructor2 c; + b ? throw ClassWithConstructor('x', ClassWithDestructor2().get_x()) : ClassWithDestructor2(); +} + +void temp_test8(bool b) { + b ? throw ClassWithConstructor('x', ClassWithDestructor2().get_x()) : ClassWithDestructor2(); +} diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 6d9a76dc0687..7f606978b585 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -652,6 +652,440 @@ | complex.c:144:8:144:10 | Load | m133_5 | | complex.c:144:8:144:10 | StoreValue | r144_3 | | complex.c:144:8:144:10 | Unary | r144_2 | +| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_5 | +| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_5 | +| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_7 | +| destructors_for_temps.cpp:9:7:9:7 | Address | &:r9_7 | +| destructors_for_temps.cpp:9:7:9:7 | ChiPartial | partial:m9_3 | +| destructors_for_temps.cpp:9:7:9:7 | ChiTotal | total:m9_2 | +| destructors_for_temps.cpp:9:7:9:7 | Load | m9_6 | +| destructors_for_temps.cpp:9:7:9:7 | SideEffect | m9_3 | +| destructors_for_temps.cpp:9:7:9:7 | SideEffect | m9_8 | +| destructors_for_temps.cpp:14:6:14:14 | Address | &:r14_5 | +| destructors_for_temps.cpp:14:6:14:14 | ChiPartial | partial:m14_3 | +| destructors_for_temps.cpp:14:6:14:14 | ChiTotal | total:m14_2 | +| destructors_for_temps.cpp:14:6:14:14 | Load | m17_17 | +| destructors_for_temps.cpp:14:6:14:14 | SideEffect | ~m17_13 | +| destructors_for_temps.cpp:15:10:15:10 | Address | &:r15_1 | +| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 | +| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 | +| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 | +| destructors_for_temps.cpp:15:14:15:35 | Address | &:r15_2 | +| destructors_for_temps.cpp:15:14:15:35 | Arg(this) | this:r15_2 | +| destructors_for_temps.cpp:15:14:15:35 | Arg(this) | this:r15_2 | +| destructors_for_temps.cpp:15:14:15:35 | CallTarget | func:r15_4 | +| destructors_for_temps.cpp:15:14:15:35 | ChiPartial | partial:m15_6 | +| destructors_for_temps.cpp:15:14:15:35 | ChiPartial | partial:m15_8 | +| destructors_for_temps.cpp:15:14:15:35 | ChiPartial | partial:m15_15 | +| destructors_for_temps.cpp:15:14:15:35 | ChiTotal | total:m14_4 | +| destructors_for_temps.cpp:15:14:15:35 | ChiTotal | total:m15_3 | +| destructors_for_temps.cpp:15:14:15:35 | ChiTotal | total:m15_9 | +| destructors_for_temps.cpp:15:14:15:35 | SideEffect | m15_9 | +| destructors_for_temps.cpp:15:14:15:35 | SideEffect | ~m14_4 | +| destructors_for_temps.cpp:15:37:15:41 | CallTarget | func:r15_10 | +| destructors_for_temps.cpp:15:37:15:41 | ChiPartial | partial:m15_12 | +| destructors_for_temps.cpp:15:37:15:41 | ChiTotal | total:m15_7 | +| destructors_for_temps.cpp:15:37:15:41 | SideEffect | ~m15_7 | +| destructors_for_temps.cpp:15:37:15:41 | StoreValue | r15_11 | +| destructors_for_temps.cpp:16:26:16:26 | Address | &:r16_1 | +| destructors_for_temps.cpp:16:26:16:26 | Address | &:r16_1 | +| destructors_for_temps.cpp:16:26:16:26 | Arg(this) | this:r16_1 | +| destructors_for_temps.cpp:16:28:16:30 | Arg(0) | 0:r16_4 | +| destructors_for_temps.cpp:16:28:16:63 | CallTarget | func:r16_3 | +| destructors_for_temps.cpp:16:28:16:63 | ChiPartial | partial:m16_21 | +| destructors_for_temps.cpp:16:28:16:63 | ChiPartial | partial:m16_23 | +| destructors_for_temps.cpp:16:28:16:63 | ChiTotal | total:m16_2 | +| destructors_for_temps.cpp:16:28:16:63 | ChiTotal | total:m16_16 | +| destructors_for_temps.cpp:16:28:16:63 | SideEffect | ~m16_16 | +| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 | +| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 | +| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 | +| destructors_for_temps.cpp:16:33:16:54 | Address | &:r16_5 | +| destructors_for_temps.cpp:16:33:16:54 | Arg(this) | this:r16_5 | +| destructors_for_temps.cpp:16:33:16:54 | Arg(this) | this:r16_5 | +| destructors_for_temps.cpp:16:33:16:54 | CallTarget | func:r16_7 | +| destructors_for_temps.cpp:16:33:16:54 | ChiPartial | partial:m16_9 | +| destructors_for_temps.cpp:16:33:16:54 | ChiPartial | partial:m16_11 | +| destructors_for_temps.cpp:16:33:16:54 | ChiPartial | partial:m16_18 | +| destructors_for_temps.cpp:16:33:16:54 | ChiTotal | total:m15_13 | +| destructors_for_temps.cpp:16:33:16:54 | ChiTotal | total:m16_6 | +| destructors_for_temps.cpp:16:33:16:54 | ChiTotal | total:m16_12 | +| destructors_for_temps.cpp:16:33:16:54 | SideEffect | m16_12 | +| destructors_for_temps.cpp:16:33:16:54 | SideEffect | ~m15_13 | +| destructors_for_temps.cpp:16:56:16:60 | Arg(1) | 1:r16_14 | +| destructors_for_temps.cpp:16:56:16:60 | CallTarget | func:r16_13 | +| destructors_for_temps.cpp:16:56:16:60 | ChiPartial | partial:m16_15 | +| destructors_for_temps.cpp:16:56:16:60 | ChiTotal | total:m16_10 | +| destructors_for_temps.cpp:16:56:16:60 | SideEffect | ~m16_10 | +| destructors_for_temps.cpp:17:5:17:42 | Address | &:r17_1 | +| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 | +| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 | +| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 | +| destructors_for_temps.cpp:17:12:17:33 | Address | &:r17_2 | +| destructors_for_temps.cpp:17:12:17:33 | Arg(this) | this:r17_2 | +| destructors_for_temps.cpp:17:12:17:33 | Arg(this) | this:r17_2 | +| destructors_for_temps.cpp:17:12:17:33 | CallTarget | func:r17_4 | +| destructors_for_temps.cpp:17:12:17:33 | ChiPartial | partial:m17_6 | +| destructors_for_temps.cpp:17:12:17:33 | ChiPartial | partial:m17_8 | +| destructors_for_temps.cpp:17:12:17:33 | ChiPartial | partial:m17_15 | +| destructors_for_temps.cpp:17:12:17:33 | ChiTotal | total:m16_22 | +| destructors_for_temps.cpp:17:12:17:33 | ChiTotal | total:m17_3 | +| destructors_for_temps.cpp:17:12:17:33 | ChiTotal | total:m17_9 | +| destructors_for_temps.cpp:17:12:17:33 | SideEffect | m17_9 | +| destructors_for_temps.cpp:17:12:17:33 | SideEffect | ~m16_22 | +| destructors_for_temps.cpp:17:35:17:39 | CallTarget | func:r17_10 | +| destructors_for_temps.cpp:17:35:17:39 | ChiPartial | partial:m17_12 | +| destructors_for_temps.cpp:17:35:17:39 | ChiTotal | total:m17_7 | +| destructors_for_temps.cpp:17:35:17:39 | SideEffect | ~m17_7 | +| destructors_for_temps.cpp:17:35:17:39 | StoreValue | r17_11 | +| destructors_for_temps.cpp:21:6:21:15 | Address | &:r21_5 | +| destructors_for_temps.cpp:21:6:21:15 | ChiPartial | partial:m21_3 | +| destructors_for_temps.cpp:21:6:21:15 | ChiTotal | total:m21_2 | +| destructors_for_temps.cpp:21:6:21:15 | Load | m23_36 | +| destructors_for_temps.cpp:21:6:21:15 | SideEffect | ~m23_29 | +| destructors_for_temps.cpp:22:5:22:30 | Address | &:r22_3 | +| destructors_for_temps.cpp:22:5:22:30 | Address | &:r22_7 | +| destructors_for_temps.cpp:22:5:22:30 | Arg(0) | 0:r22_2 | +| destructors_for_temps.cpp:22:5:22:30 | Arg(this) | this:r22_7 | +| destructors_for_temps.cpp:22:5:22:30 | CallTarget | func:r22_1 | +| destructors_for_temps.cpp:22:5:22:30 | CallTarget | func:r22_8 | +| destructors_for_temps.cpp:22:5:22:30 | ChiPartial | partial:m22_4 | +| destructors_for_temps.cpp:22:5:22:30 | ChiPartial | partial:m22_10 | +| destructors_for_temps.cpp:22:5:22:30 | ChiPartial | partial:m22_12 | +| destructors_for_temps.cpp:22:5:22:30 | ChiTotal | total:m21_4 | +| destructors_for_temps.cpp:22:5:22:30 | ChiTotal | total:m22_5 | +| destructors_for_temps.cpp:22:5:22:30 | ChiTotal | total:m22_6 | +| destructors_for_temps.cpp:22:5:22:30 | SideEffect | ~m21_4 | +| destructors_for_temps.cpp:22:5:22:30 | SideEffect | ~m22_5 | +| destructors_for_temps.cpp:22:5:22:30 | Unary | r22_3 | +| destructors_for_temps.cpp:23:5:23:75 | Address | &:r23_1 | +| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 | +| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 | +| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 | +| destructors_for_temps.cpp:23:12:23:33 | Address | &:r23_2 | +| destructors_for_temps.cpp:23:12:23:33 | Arg(this) | this:r23_2 | +| destructors_for_temps.cpp:23:12:23:33 | Arg(this) | this:r23_2 | +| destructors_for_temps.cpp:23:12:23:33 | CallTarget | func:r23_4 | +| destructors_for_temps.cpp:23:12:23:33 | ChiPartial | partial:m23_6 | +| destructors_for_temps.cpp:23:12:23:33 | ChiPartial | partial:m23_8 | +| destructors_for_temps.cpp:23:12:23:33 | ChiPartial | partial:m23_15 | +| destructors_for_temps.cpp:23:12:23:33 | ChiTotal | total:m22_11 | +| destructors_for_temps.cpp:23:12:23:33 | ChiTotal | total:m23_3 | +| destructors_for_temps.cpp:23:12:23:33 | ChiTotal | total:m23_9 | +| destructors_for_temps.cpp:23:12:23:33 | SideEffect | m23_9 | +| destructors_for_temps.cpp:23:12:23:33 | SideEffect | ~m22_11 | +| destructors_for_temps.cpp:23:12:23:41 | Left | r23_17 | +| destructors_for_temps.cpp:23:12:23:74 | StoreValue | r23_35 | +| destructors_for_temps.cpp:23:12:23:74 | Unary | r23_34 | +| destructors_for_temps.cpp:23:35:23:39 | CallTarget | func:r23_10 | +| destructors_for_temps.cpp:23:35:23:39 | ChiPartial | partial:m23_12 | +| destructors_for_temps.cpp:23:35:23:39 | ChiTotal | total:m23_7 | +| destructors_for_temps.cpp:23:35:23:39 | SideEffect | ~m23_7 | +| destructors_for_temps.cpp:23:35:23:39 | Unary | r23_11 | +| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 | +| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 | +| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 | +| destructors_for_temps.cpp:23:45:23:66 | Address | &:r23_18 | +| destructors_for_temps.cpp:23:45:23:66 | Arg(this) | this:r23_18 | +| destructors_for_temps.cpp:23:45:23:66 | Arg(this) | this:r23_18 | +| destructors_for_temps.cpp:23:45:23:66 | CallTarget | func:r23_20 | +| destructors_for_temps.cpp:23:45:23:66 | ChiPartial | partial:m23_22 | +| destructors_for_temps.cpp:23:45:23:66 | ChiPartial | partial:m23_24 | +| destructors_for_temps.cpp:23:45:23:66 | ChiPartial | partial:m23_31 | +| destructors_for_temps.cpp:23:45:23:66 | ChiTotal | total:m23_13 | +| destructors_for_temps.cpp:23:45:23:66 | ChiTotal | total:m23_19 | +| destructors_for_temps.cpp:23:45:23:66 | ChiTotal | total:m23_25 | +| destructors_for_temps.cpp:23:45:23:66 | SideEffect | m23_25 | +| destructors_for_temps.cpp:23:45:23:66 | SideEffect | ~m23_13 | +| destructors_for_temps.cpp:23:45:23:74 | Right | r23_33 | +| destructors_for_temps.cpp:23:68:23:72 | CallTarget | func:r23_26 | +| destructors_for_temps.cpp:23:68:23:72 | ChiPartial | partial:m23_28 | +| destructors_for_temps.cpp:23:68:23:72 | ChiTotal | total:m23_23 | +| destructors_for_temps.cpp:23:68:23:72 | SideEffect | ~m23_23 | +| destructors_for_temps.cpp:23:68:23:72 | Unary | r23_27 | +| destructors_for_temps.cpp:29:6:29:15 | ChiPartial | partial:m29_3 | +| destructors_for_temps.cpp:29:6:29:15 | ChiTotal | total:m29_2 | +| destructors_for_temps.cpp:29:6:29:15 | SideEffect | ~m30_6 | +| destructors_for_temps.cpp:30:33:30:34 | Address | &:r30_1 | +| destructors_for_temps.cpp:30:38:30:70 | CallTarget | func:r30_3 | +| destructors_for_temps.cpp:30:38:30:70 | ChiPartial | partial:m30_5 | +| destructors_for_temps.cpp:30:38:30:70 | ChiTotal | total:m29_4 | +| destructors_for_temps.cpp:30:38:30:70 | SideEffect | ~m29_4 | +| destructors_for_temps.cpp:30:38:30:70 | StoreValue | r30_4 | +| destructors_for_temps.cpp:30:38:30:72 | Address | &:r30_2 | +| destructors_for_temps.cpp:30:38:30:72 | StoreValue | r30_9 | +| destructors_for_temps.cpp:30:38:30:72 | Unary | r30_2 | +| destructors_for_temps.cpp:30:38:30:72 | Unary | r30_8 | +| destructors_for_temps.cpp:33:6:33:15 | ChiPartial | partial:m33_3 | +| destructors_for_temps.cpp:33:6:33:15 | ChiTotal | total:m33_2 | +| destructors_for_temps.cpp:33:6:33:15 | SideEffect | ~m36_6 | +| destructors_for_temps.cpp:34:26:34:26 | Address | &:r34_1 | +| destructors_for_temps.cpp:34:26:34:26 | Address | &:r34_1 | +| destructors_for_temps.cpp:34:26:34:26 | Arg(this) | this:r34_1 | +| destructors_for_temps.cpp:34:26:34:26 | CallTarget | func:r34_3 | +| destructors_for_temps.cpp:34:26:34:26 | ChiPartial | partial:m34_5 | +| destructors_for_temps.cpp:34:26:34:26 | ChiPartial | partial:m34_7 | +| destructors_for_temps.cpp:34:26:34:26 | ChiTotal | total:m33_4 | +| destructors_for_temps.cpp:34:26:34:26 | ChiTotal | total:m34_2 | +| destructors_for_temps.cpp:34:26:34:26 | SideEffect | ~m33_4 | +| destructors_for_temps.cpp:35:33:35:35 | Address | &:r35_1 | +| destructors_for_temps.cpp:35:39:35:71 | CallTarget | func:r35_3 | +| destructors_for_temps.cpp:35:39:35:71 | ChiPartial | partial:m35_5 | +| destructors_for_temps.cpp:35:39:35:71 | ChiTotal | total:m34_6 | +| destructors_for_temps.cpp:35:39:35:71 | SideEffect | ~m34_6 | +| destructors_for_temps.cpp:35:39:35:71 | StoreValue | r35_4 | +| destructors_for_temps.cpp:35:39:35:73 | Address | &:r35_2 | +| destructors_for_temps.cpp:35:39:35:73 | StoreValue | r35_9 | +| destructors_for_temps.cpp:35:39:35:73 | Unary | r35_2 | +| destructors_for_temps.cpp:35:39:35:73 | Unary | r35_8 | +| destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_2 | +| destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_2 | +| destructors_for_temps.cpp:36:1:36:1 | Arg(this) | this:r36_2 | +| destructors_for_temps.cpp:36:1:36:1 | CallTarget | func:r36_3 | +| destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_5 | +| destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_8 | +| destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m34_8 | +| destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m35_6 | +| destructors_for_temps.cpp:36:1:36:1 | SideEffect | m34_8 | +| destructors_for_temps.cpp:36:1:36:1 | SideEffect | ~m35_6 | +| destructors_for_temps.cpp:38:6:38:15 | ChiPartial | partial:m38_3 | +| destructors_for_temps.cpp:38:6:38:15 | ChiTotal | total:m38_2 | +| destructors_for_temps.cpp:38:6:38:15 | SideEffect | ~m39_5 | +| destructors_for_temps.cpp:38:22:38:22 | Address | &:r38_5 | +| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_2 | +| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_7 | +| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_19 | +| destructors_for_temps.cpp:39:3:39:3 | Address | &:r39_30 | +| destructors_for_temps.cpp:39:3:39:3 | Condition | r39_3 | +| destructors_for_temps.cpp:39:3:39:3 | Load | m38_6 | +| destructors_for_temps.cpp:39:3:39:3 | Load | m39_6 | +| destructors_for_temps.cpp:39:3:39:3 | Phi | from 2:m39_20 | +| destructors_for_temps.cpp:39:3:39:3 | Phi | from 2:~m39_15 | +| destructors_for_temps.cpp:39:3:39:3 | Phi | from 3:m39_31 | +| destructors_for_temps.cpp:39:3:39:3 | Phi | from 3:~m39_26 | +| destructors_for_temps.cpp:39:3:39:3 | StoreValue | r39_8 | +| destructors_for_temps.cpp:39:3:39:53 | Address | &:r39_1 | +| destructors_for_temps.cpp:39:7:39:28 | Address | &:r39_10 | +| destructors_for_temps.cpp:39:7:39:28 | Address | &:r39_10 | +| destructors_for_temps.cpp:39:7:39:28 | Address | &:r39_10 | +| destructors_for_temps.cpp:39:7:39:28 | Arg(this) | this:r39_10 | +| destructors_for_temps.cpp:39:7:39:28 | CallTarget | func:r39_12 | +| destructors_for_temps.cpp:39:7:39:28 | ChiPartial | partial:m39_14 | +| destructors_for_temps.cpp:39:7:39:28 | ChiPartial | partial:m39_16 | +| destructors_for_temps.cpp:39:7:39:28 | ChiTotal | total:m38_4 | +| destructors_for_temps.cpp:39:7:39:28 | ChiTotal | total:m39_11 | +| destructors_for_temps.cpp:39:7:39:28 | Load | m39_17 | +| destructors_for_temps.cpp:39:7:39:28 | SideEffect | ~m38_4 | +| destructors_for_temps.cpp:39:7:39:28 | StoreValue | r39_18 | +| destructors_for_temps.cpp:39:32:39:53 | Address | &:r39_21 | +| destructors_for_temps.cpp:39:32:39:53 | Address | &:r39_21 | +| destructors_for_temps.cpp:39:32:39:53 | Address | &:r39_21 | +| destructors_for_temps.cpp:39:32:39:53 | Arg(this) | this:r39_21 | +| destructors_for_temps.cpp:39:32:39:53 | CallTarget | func:r39_23 | +| destructors_for_temps.cpp:39:32:39:53 | ChiPartial | partial:m39_25 | +| destructors_for_temps.cpp:39:32:39:53 | ChiPartial | partial:m39_27 | +| destructors_for_temps.cpp:39:32:39:53 | ChiTotal | total:m38_4 | +| destructors_for_temps.cpp:39:32:39:53 | ChiTotal | total:m39_22 | +| destructors_for_temps.cpp:39:32:39:53 | Load | m39_28 | +| destructors_for_temps.cpp:39:32:39:53 | SideEffect | ~m38_4 | +| destructors_for_temps.cpp:39:32:39:53 | StoreValue | r39_29 | +| destructors_for_temps.cpp:42:6:42:15 | ChiPartial | partial:m42_3 | +| destructors_for_temps.cpp:42:6:42:15 | ChiTotal | total:m42_2 | +| destructors_for_temps.cpp:42:6:42:15 | Phi | from 2:~m45_22 | +| destructors_for_temps.cpp:42:6:42:15 | Phi | from 4:~m47_6 | +| destructors_for_temps.cpp:42:6:42:15 | SideEffect | ~m42_7 | +| destructors_for_temps.cpp:42:22:42:22 | Address | &:r42_5 | +| destructors_for_temps.cpp:43:26:43:26 | Address | &:r43_1 | +| destructors_for_temps.cpp:43:26:43:26 | Address | &:r43_1 | +| destructors_for_temps.cpp:43:26:43:26 | Arg(this) | this:r43_1 | +| destructors_for_temps.cpp:43:26:43:26 | CallTarget | func:r43_3 | +| destructors_for_temps.cpp:43:26:43:26 | ChiPartial | partial:m43_5 | +| destructors_for_temps.cpp:43:26:43:26 | ChiPartial | partial:m43_7 | +| destructors_for_temps.cpp:43:26:43:26 | ChiTotal | total:m42_4 | +| destructors_for_temps.cpp:43:26:43:26 | ChiTotal | total:m43_2 | +| destructors_for_temps.cpp:43:26:43:26 | SideEffect | ~m42_4 | +| destructors_for_temps.cpp:44:9:44:9 | Address | &:r44_1 | +| destructors_for_temps.cpp:44:9:44:9 | Condition | r44_2 | +| destructors_for_temps.cpp:44:9:44:9 | Load | m42_6 | +| destructors_for_temps.cpp:45:7:45:69 | Address | &:r45_1 | +| destructors_for_temps.cpp:45:7:45:69 | Address | &:r45_1 | +| destructors_for_temps.cpp:45:7:45:69 | Address | &:r45_1 | +| destructors_for_temps.cpp:45:7:45:69 | Arg(this) | this:r45_1 | +| destructors_for_temps.cpp:45:7:45:69 | CallTarget | func:r45_3 | +| destructors_for_temps.cpp:45:7:45:69 | ChiPartial | partial:m45_21 | +| destructors_for_temps.cpp:45:7:45:69 | ChiPartial | partial:m45_23 | +| destructors_for_temps.cpp:45:7:45:69 | ChiTotal | total:m45_2 | +| destructors_for_temps.cpp:45:7:45:69 | ChiTotal | total:m45_16 | +| destructors_for_temps.cpp:45:7:45:69 | Load | m45_24 | +| destructors_for_temps.cpp:45:7:45:69 | SideEffect | ~m45_16 | +| destructors_for_temps.cpp:45:34:45:36 | Arg(0) | 0:r45_4 | +| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 | +| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 | +| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 | +| destructors_for_temps.cpp:45:39:45:60 | Address | &:r45_5 | +| destructors_for_temps.cpp:45:39:45:60 | Arg(this) | this:r45_5 | +| destructors_for_temps.cpp:45:39:45:60 | Arg(this) | this:r45_5 | +| destructors_for_temps.cpp:45:39:45:60 | CallTarget | func:r45_7 | +| destructors_for_temps.cpp:45:39:45:60 | ChiPartial | partial:m45_9 | +| destructors_for_temps.cpp:45:39:45:60 | ChiPartial | partial:m45_11 | +| destructors_for_temps.cpp:45:39:45:60 | ChiPartial | partial:m45_18 | +| destructors_for_temps.cpp:45:39:45:60 | ChiTotal | total:m43_6 | +| destructors_for_temps.cpp:45:39:45:60 | ChiTotal | total:m45_6 | +| destructors_for_temps.cpp:45:39:45:60 | ChiTotal | total:m45_12 | +| destructors_for_temps.cpp:45:39:45:60 | SideEffect | m45_12 | +| destructors_for_temps.cpp:45:39:45:60 | SideEffect | ~m43_6 | +| destructors_for_temps.cpp:45:62:45:66 | Arg(1) | 1:r45_14 | +| destructors_for_temps.cpp:45:62:45:66 | CallTarget | func:r45_13 | +| destructors_for_temps.cpp:45:62:45:66 | ChiPartial | partial:m45_15 | +| destructors_for_temps.cpp:45:62:45:66 | ChiTotal | total:m45_10 | +| destructors_for_temps.cpp:45:62:45:66 | SideEffect | ~m45_10 | +| destructors_for_temps.cpp:47:1:47:1 | Address | &:r47_2 | +| destructors_for_temps.cpp:47:1:47:1 | Address | &:r47_2 | +| destructors_for_temps.cpp:47:1:47:1 | Arg(this) | this:r47_2 | +| destructors_for_temps.cpp:47:1:47:1 | CallTarget | func:r47_3 | +| destructors_for_temps.cpp:47:1:47:1 | ChiPartial | partial:m47_5 | +| destructors_for_temps.cpp:47:1:47:1 | ChiPartial | partial:m47_8 | +| destructors_for_temps.cpp:47:1:47:1 | ChiTotal | total:m43_6 | +| destructors_for_temps.cpp:47:1:47:1 | ChiTotal | total:m43_8 | +| destructors_for_temps.cpp:47:1:47:1 | SideEffect | m43_8 | +| destructors_for_temps.cpp:47:1:47:1 | SideEffect | ~m43_6 | +| destructors_for_temps.cpp:49:6:49:15 | ChiPartial | partial:m49_3 | +| destructors_for_temps.cpp:49:6:49:15 | ChiTotal | total:m49_2 | +| destructors_for_temps.cpp:49:6:49:15 | Phi | from 2:~m51_26 | +| destructors_for_temps.cpp:49:6:49:15 | Phi | from 4:~m52_6 | +| destructors_for_temps.cpp:49:6:49:15 | SideEffect | ~m49_7 | +| destructors_for_temps.cpp:49:22:49:22 | Address | &:r49_5 | +| destructors_for_temps.cpp:50:26:50:26 | Address | &:r50_1 | +| destructors_for_temps.cpp:50:26:50:26 | Address | &:r50_1 | +| destructors_for_temps.cpp:50:26:50:26 | Arg(this) | this:r50_1 | +| destructors_for_temps.cpp:50:26:50:26 | CallTarget | func:r50_3 | +| destructors_for_temps.cpp:50:26:50:26 | ChiPartial | partial:m50_5 | +| destructors_for_temps.cpp:50:26:50:26 | ChiPartial | partial:m50_7 | +| destructors_for_temps.cpp:50:26:50:26 | ChiTotal | total:m49_4 | +| destructors_for_temps.cpp:50:26:50:26 | ChiTotal | total:m50_2 | +| destructors_for_temps.cpp:50:26:50:26 | SideEffect | ~m49_4 | +| destructors_for_temps.cpp:51:5:51:5 | Address | &:r51_2 | +| destructors_for_temps.cpp:51:5:51:5 | Address | &:r51_39 | +| destructors_for_temps.cpp:51:5:51:5 | Address | &:r51_41 | +| destructors_for_temps.cpp:51:5:51:5 | Condition | r51_3 | +| destructors_for_temps.cpp:51:5:51:5 | Load | m49_6 | +| destructors_for_temps.cpp:51:5:51:5 | Load | m51_40 | +| destructors_for_temps.cpp:51:5:51:5 | StoreValue | r51_42 | +| destructors_for_temps.cpp:51:5:51:96 | Address | &:r51_1 | +| destructors_for_temps.cpp:51:9:51:71 | Address | &:r51_5 | +| destructors_for_temps.cpp:51:9:51:71 | Address | &:r51_5 | +| destructors_for_temps.cpp:51:9:51:71 | Address | &:r51_5 | +| destructors_for_temps.cpp:51:9:51:71 | Arg(this) | this:r51_5 | +| destructors_for_temps.cpp:51:9:51:71 | CallTarget | func:r51_7 | +| destructors_for_temps.cpp:51:9:51:71 | ChiPartial | partial:m51_25 | +| destructors_for_temps.cpp:51:9:51:71 | ChiPartial | partial:m51_27 | +| destructors_for_temps.cpp:51:9:51:71 | ChiTotal | total:m51_6 | +| destructors_for_temps.cpp:51:9:51:71 | ChiTotal | total:m51_20 | +| destructors_for_temps.cpp:51:9:51:71 | Load | m51_28 | +| destructors_for_temps.cpp:51:9:51:71 | SideEffect | ~m51_20 | +| destructors_for_temps.cpp:51:36:51:38 | Arg(0) | 0:r51_8 | +| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 | +| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 | +| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 | +| destructors_for_temps.cpp:51:41:51:62 | Address | &:r51_9 | +| destructors_for_temps.cpp:51:41:51:62 | Arg(this) | this:r51_9 | +| destructors_for_temps.cpp:51:41:51:62 | Arg(this) | this:r51_9 | +| destructors_for_temps.cpp:51:41:51:62 | CallTarget | func:r51_11 | +| destructors_for_temps.cpp:51:41:51:62 | ChiPartial | partial:m51_13 | +| destructors_for_temps.cpp:51:41:51:62 | ChiPartial | partial:m51_15 | +| destructors_for_temps.cpp:51:41:51:62 | ChiPartial | partial:m51_22 | +| destructors_for_temps.cpp:51:41:51:62 | ChiTotal | total:m50_6 | +| destructors_for_temps.cpp:51:41:51:62 | ChiTotal | total:m51_10 | +| destructors_for_temps.cpp:51:41:51:62 | ChiTotal | total:m51_16 | +| destructors_for_temps.cpp:51:41:51:62 | SideEffect | m51_16 | +| destructors_for_temps.cpp:51:41:51:62 | SideEffect | ~m50_6 | +| destructors_for_temps.cpp:51:64:51:68 | Arg(1) | 1:r51_18 | +| destructors_for_temps.cpp:51:64:51:68 | CallTarget | func:r51_17 | +| destructors_for_temps.cpp:51:64:51:68 | ChiPartial | partial:m51_19 | +| destructors_for_temps.cpp:51:64:51:68 | ChiTotal | total:m51_14 | +| destructors_for_temps.cpp:51:64:51:68 | SideEffect | ~m51_14 | +| destructors_for_temps.cpp:51:75:51:96 | Address | &:r51_30 | +| destructors_for_temps.cpp:51:75:51:96 | Address | &:r51_30 | +| destructors_for_temps.cpp:51:75:51:96 | Address | &:r51_30 | +| destructors_for_temps.cpp:51:75:51:96 | Arg(this) | this:r51_30 | +| destructors_for_temps.cpp:51:75:51:96 | CallTarget | func:r51_32 | +| destructors_for_temps.cpp:51:75:51:96 | ChiPartial | partial:m51_34 | +| destructors_for_temps.cpp:51:75:51:96 | ChiPartial | partial:m51_36 | +| destructors_for_temps.cpp:51:75:51:96 | ChiTotal | total:m50_6 | +| destructors_for_temps.cpp:51:75:51:96 | ChiTotal | total:m51_31 | +| destructors_for_temps.cpp:51:75:51:96 | Load | m51_37 | +| destructors_for_temps.cpp:51:75:51:96 | SideEffect | ~m50_6 | +| destructors_for_temps.cpp:51:75:51:96 | StoreValue | r51_38 | +| destructors_for_temps.cpp:52:1:52:1 | Address | &:r52_2 | +| destructors_for_temps.cpp:52:1:52:1 | Address | &:r52_2 | +| destructors_for_temps.cpp:52:1:52:1 | Arg(this) | this:r52_2 | +| destructors_for_temps.cpp:52:1:52:1 | CallTarget | func:r52_3 | +| destructors_for_temps.cpp:52:1:52:1 | ChiPartial | partial:m52_5 | +| destructors_for_temps.cpp:52:1:52:1 | ChiPartial | partial:m52_8 | +| destructors_for_temps.cpp:52:1:52:1 | ChiTotal | total:m50_8 | +| destructors_for_temps.cpp:52:1:52:1 | ChiTotal | total:m51_35 | +| destructors_for_temps.cpp:52:1:52:1 | SideEffect | m50_8 | +| destructors_for_temps.cpp:52:1:52:1 | SideEffect | ~m51_35 | +| destructors_for_temps.cpp:54:6:54:15 | ChiPartial | partial:m54_3 | +| destructors_for_temps.cpp:54:6:54:15 | ChiTotal | total:m54_2 | +| destructors_for_temps.cpp:54:6:54:15 | Phi | from 2:~m55_26 | +| destructors_for_temps.cpp:54:6:54:15 | Phi | from 4:~m55_35 | +| destructors_for_temps.cpp:54:6:54:15 | SideEffect | ~m54_7 | +| destructors_for_temps.cpp:54:22:54:22 | Address | &:r54_5 | +| destructors_for_temps.cpp:55:5:55:5 | Address | &:r55_2 | +| destructors_for_temps.cpp:55:5:55:5 | Address | &:r55_39 | +| destructors_for_temps.cpp:55:5:55:5 | Address | &:r55_41 | +| destructors_for_temps.cpp:55:5:55:5 | Condition | r55_3 | +| destructors_for_temps.cpp:55:5:55:5 | Load | m54_6 | +| destructors_for_temps.cpp:55:5:55:5 | Load | m55_40 | +| destructors_for_temps.cpp:55:5:55:5 | StoreValue | r55_42 | +| destructors_for_temps.cpp:55:5:55:96 | Address | &:r55_1 | +| destructors_for_temps.cpp:55:9:55:71 | Address | &:r55_5 | +| destructors_for_temps.cpp:55:9:55:71 | Address | &:r55_5 | +| destructors_for_temps.cpp:55:9:55:71 | Address | &:r55_5 | +| destructors_for_temps.cpp:55:9:55:71 | Arg(this) | this:r55_5 | +| destructors_for_temps.cpp:55:9:55:71 | CallTarget | func:r55_7 | +| destructors_for_temps.cpp:55:9:55:71 | ChiPartial | partial:m55_25 | +| destructors_for_temps.cpp:55:9:55:71 | ChiPartial | partial:m55_27 | +| destructors_for_temps.cpp:55:9:55:71 | ChiTotal | total:m55_6 | +| destructors_for_temps.cpp:55:9:55:71 | ChiTotal | total:m55_20 | +| destructors_for_temps.cpp:55:9:55:71 | Load | m55_28 | +| destructors_for_temps.cpp:55:9:55:71 | SideEffect | ~m55_20 | +| destructors_for_temps.cpp:55:36:55:38 | Arg(0) | 0:r55_8 | +| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 | +| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 | +| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 | +| destructors_for_temps.cpp:55:41:55:62 | Address | &:r55_9 | +| destructors_for_temps.cpp:55:41:55:62 | Arg(this) | this:r55_9 | +| destructors_for_temps.cpp:55:41:55:62 | Arg(this) | this:r55_9 | +| destructors_for_temps.cpp:55:41:55:62 | CallTarget | func:r55_11 | +| destructors_for_temps.cpp:55:41:55:62 | ChiPartial | partial:m55_13 | +| destructors_for_temps.cpp:55:41:55:62 | ChiPartial | partial:m55_15 | +| destructors_for_temps.cpp:55:41:55:62 | ChiPartial | partial:m55_22 | +| destructors_for_temps.cpp:55:41:55:62 | ChiTotal | total:m54_4 | +| destructors_for_temps.cpp:55:41:55:62 | ChiTotal | total:m55_10 | +| destructors_for_temps.cpp:55:41:55:62 | ChiTotal | total:m55_16 | +| destructors_for_temps.cpp:55:41:55:62 | SideEffect | m55_16 | +| destructors_for_temps.cpp:55:41:55:62 | SideEffect | ~m54_4 | +| destructors_for_temps.cpp:55:64:55:68 | Arg(1) | 1:r55_18 | +| destructors_for_temps.cpp:55:64:55:68 | CallTarget | func:r55_17 | +| destructors_for_temps.cpp:55:64:55:68 | ChiPartial | partial:m55_19 | +| destructors_for_temps.cpp:55:64:55:68 | ChiTotal | total:m55_14 | +| destructors_for_temps.cpp:55:64:55:68 | SideEffect | ~m55_14 | +| destructors_for_temps.cpp:55:75:55:96 | Address | &:r55_30 | +| destructors_for_temps.cpp:55:75:55:96 | Address | &:r55_30 | +| destructors_for_temps.cpp:55:75:55:96 | Address | &:r55_30 | +| destructors_for_temps.cpp:55:75:55:96 | Arg(this) | this:r55_30 | +| destructors_for_temps.cpp:55:75:55:96 | CallTarget | func:r55_32 | +| destructors_for_temps.cpp:55:75:55:96 | ChiPartial | partial:m55_34 | +| destructors_for_temps.cpp:55:75:55:96 | ChiPartial | partial:m55_36 | +| destructors_for_temps.cpp:55:75:55:96 | ChiTotal | total:m54_4 | +| destructors_for_temps.cpp:55:75:55:96 | ChiTotal | total:m55_31 | +| destructors_for_temps.cpp:55:75:55:96 | Load | m55_37 | +| destructors_for_temps.cpp:55:75:55:96 | SideEffect | ~m54_4 | +| destructors_for_temps.cpp:55:75:55:96 | StoreValue | r55_38 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | @@ -726,6 +1160,8 @@ | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_5 | @@ -861,6 +1297,7 @@ | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | +| file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_5 | | file://:0:0:0:0 | Load | m0_8 | | file://:0:0:0:0 | Load | m0_11 | @@ -900,6 +1337,7 @@ | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | +| file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_14 | | file://:0:0:0:0 | SideEffect | m1080_23 | | file://:0:0:0:0 | SideEffect | m1080_23 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 02bd64000250..671a9f6a0d3c 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -724,6 +724,420 @@ complex.c: # 58| v58_5(void) = AliasedUse : ~m? # 58| v58_6(void) = ExitFunction : +destructors_for_temps.cpp: +# 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) +# 9| Block 0 +# 9| v9_1(void) = EnterFunction : +# 9| mu9_2(unknown) = AliasedDefinition : +# 9| mu9_3(unknown) = InitializeNonLocal : +# 9| r9_4(glval<unknown>) = VariableAddress[#this] : +# 9| mu9_5(glval<ClassWithConstructor>) = InitializeParameter[#this] : &:r9_4 +# 9| r9_6(glval<ClassWithConstructor>) = Load[#this] : &:r9_4, ~m? +# 9| mu9_7(ClassWithConstructor) = InitializeIndirection[#this] : &:r9_6 +#-----| r0_1(glval<ClassWithConstructor &&>) = VariableAddress[(unnamed parameter 0)] : +#-----| mu0_2(ClassWithConstructor &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(ClassWithConstructor &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? +#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 9| v9_8(void) = NoOp : +# 9| v9_9(void) = ReturnIndirection[#this] : &:r9_6, ~m? +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? +# 9| v9_10(void) = ReturnVoid : +# 9| v9_11(void) = AliasedUse : ~m? +# 9| v9_12(void) = ExitFunction : + +# 14| char temp_test() +# 14| Block 0 +# 14| v14_1(void) = EnterFunction : +# 14| mu14_2(unknown) = AliasedDefinition : +# 14| mu14_3(unknown) = InitializeNonLocal : +# 15| r15_1(glval<char>) = VariableAddress[x] : +# 15| r15_2(glval<ClassWithDestructor2>) = VariableAddress[#temp15:14] : +# 15| mu15_3(ClassWithDestructor2) = Uninitialized[#temp15:14] : &:r15_2 +# 15| r15_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 15| v15_5(void) = Call[ClassWithDestructor2] : func:r15_4, this:r15_2 +# 15| mu15_6(unknown) = ^CallSideEffect : ~m? +# 15| mu15_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2 +# 15| r15_8(glval<unknown>) = FunctionAddress[get_x] : +# 15| r15_9(char) = Call[get_x] : func:r15_8, this:r15_2 +# 15| mu15_10(unknown) = ^CallSideEffect : ~m? +# 15| v15_11(void) = ^IndirectReadSideEffect[-1] : &:r15_2, ~m? +# 15| mu15_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r15_2 +# 15| mu15_13(char) = Store[x] : &:r15_1, r15_9 +# 16| r16_1(glval<ClassWithConstructor>) = VariableAddress[y] : +# 16| mu16_2(ClassWithConstructor) = Uninitialized[y] : &:r16_1 +# 16| r16_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 16| r16_4(char) = Constant[97] : +# 16| r16_5(glval<ClassWithDestructor2>) = VariableAddress[#temp16:33] : +# 16| mu16_6(ClassWithDestructor2) = Uninitialized[#temp16:33] : &:r16_5 +# 16| r16_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 16| v16_8(void) = Call[ClassWithDestructor2] : func:r16_7, this:r16_5 +# 16| mu16_9(unknown) = ^CallSideEffect : ~m? +# 16| mu16_10(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5 +# 16| r16_11(glval<unknown>) = FunctionAddress[get_x] : +# 16| r16_12(char) = Call[get_x] : func:r16_11, this:r16_5 +# 16| mu16_13(unknown) = ^CallSideEffect : ~m? +# 16| v16_14(void) = ^IndirectReadSideEffect[-1] : &:r16_5, ~m? +# 16| mu16_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r16_5 +# 16| v16_16(void) = Call[ClassWithConstructor] : func:r16_3, this:r16_1, 0:r16_4, 1:r16_12 +# 16| mu16_17(unknown) = ^CallSideEffect : ~m? +# 16| mu16_18(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r16_1 +# 17| r17_1(glval<char>) = VariableAddress[#return] : +# 17| r17_2(glval<ClassWithDestructor2>) = VariableAddress[#temp17:12] : +# 17| mu17_3(ClassWithDestructor2) = Uninitialized[#temp17:12] : &:r17_2 +# 17| r17_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 17| v17_5(void) = Call[ClassWithDestructor2] : func:r17_4, this:r17_2 +# 17| mu17_6(unknown) = ^CallSideEffect : ~m? +# 17| mu17_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2 +# 17| r17_8(glval<unknown>) = FunctionAddress[get_x] : +# 17| r17_9(char) = Call[get_x] : func:r17_8, this:r17_2 +# 17| mu17_10(unknown) = ^CallSideEffect : ~m? +# 17| v17_11(void) = ^IndirectReadSideEffect[-1] : &:r17_2, ~m? +# 17| mu17_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r17_2 +# 17| mu17_13(char) = Store[#return] : &:r17_1, r17_9 +# 14| r14_4(glval<char>) = VariableAddress[#return] : +# 14| v14_5(void) = ReturnValue : &:r14_4, ~m? +# 14| v14_6(void) = AliasedUse : ~m? +# 14| v14_7(void) = ExitFunction : + +# 21| char temp_test2() +# 21| Block 0 +# 21| v21_1(void) = EnterFunction : +# 21| mu21_2(unknown) = AliasedDefinition : +# 21| mu21_3(unknown) = InitializeNonLocal : +# 22| r22_1(glval<unknown>) = FunctionAddress[operator new] : +# 22| r22_2(unsigned long) = Constant[1] : +# 22| r22_3(void *) = Call[operator new] : func:r22_1, 0:r22_2 +# 22| mu22_4(unknown) = ^CallSideEffect : ~m? +# 22| mu22_5(unknown) = ^InitializeDynamicAllocation : &:r22_3 +# 22| r22_6(ClassWithDestructor2 *) = Convert : r22_3 +# 22| r22_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 22| v22_8(void) = Call[ClassWithDestructor2] : func:r22_7, this:r22_6 +# 22| mu22_9(unknown) = ^CallSideEffect : ~m? +# 22| mu22_10(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r22_6 +# 23| r23_1(glval<char>) = VariableAddress[#return] : +# 23| r23_2(glval<ClassWithDestructor2>) = VariableAddress[#temp23:12] : +# 23| mu23_3(ClassWithDestructor2) = Uninitialized[#temp23:12] : &:r23_2 +# 23| r23_4(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 23| v23_5(void) = Call[ClassWithDestructor2] : func:r23_4, this:r23_2 +# 23| mu23_6(unknown) = ^CallSideEffect : ~m? +# 23| mu23_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2 +# 23| r23_8(glval<unknown>) = FunctionAddress[get_x] : +# 23| r23_9(char) = Call[get_x] : func:r23_8, this:r23_2 +# 23| mu23_10(unknown) = ^CallSideEffect : ~m? +# 23| v23_11(void) = ^IndirectReadSideEffect[-1] : &:r23_2, ~m? +# 23| mu23_12(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_2 +# 23| r23_13(int) = Convert : r23_9 +# 23| r23_14(glval<ClassWithDestructor2>) = VariableAddress[#temp23:45] : +# 23| mu23_15(ClassWithDestructor2) = Uninitialized[#temp23:45] : &:r23_14 +# 23| r23_16(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 23| v23_17(void) = Call[ClassWithDestructor2] : func:r23_16, this:r23_14 +# 23| mu23_18(unknown) = ^CallSideEffect : ~m? +# 23| mu23_19(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_14 +# 23| r23_20(glval<unknown>) = FunctionAddress[get_x] : +# 23| r23_21(char) = Call[get_x] : func:r23_20, this:r23_14 +# 23| mu23_22(unknown) = ^CallSideEffect : ~m? +# 23| v23_23(void) = ^IndirectReadSideEffect[-1] : &:r23_14, ~m? +# 23| mu23_24(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r23_14 +# 23| r23_25(int) = Convert : r23_21 +# 23| r23_26(int) = Add : r23_13, r23_25 +# 23| r23_27(char) = Convert : r23_26 +# 23| mu23_28(char) = Store[#return] : &:r23_1, r23_27 +# 21| r21_4(glval<char>) = VariableAddress[#return] : +# 21| v21_5(void) = ReturnValue : &:r21_4, ~m? +# 21| v21_6(void) = AliasedUse : ~m? +# 21| v21_7(void) = ExitFunction : + +# 29| void temp_test3() +# 29| Block 0 +# 29| v29_1(void) = EnterFunction : +# 29| mu29_2(unknown) = AliasedDefinition : +# 29| mu29_3(unknown) = InitializeNonLocal : +# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] : +# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] : +# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] : +# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3 +# 30| mu30_5(unknown) = ^CallSideEffect : ~m? +# 30| mu30_6(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4 +# 30| r30_7(glval<ClassWithDestructor2>) = Convert : r30_2 +# 30| r30_8(ClassWithDestructor2 &) = CopyValue : r30_7 +# 30| mu30_9(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_8 +# 31| v31_1(void) = NoOp : +# 29| v29_4(void) = ReturnVoid : +# 29| v29_5(void) = AliasedUse : ~m? +# 29| v29_6(void) = ExitFunction : + +# 33| void temp_test4() +# 33| Block 0 +# 33| v33_1(void) = EnterFunction : +# 33| mu33_2(unknown) = AliasedDefinition : +# 33| mu33_3(unknown) = InitializeNonLocal : +# 34| r34_1(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 34| mu34_2(ClassWithDestructor2) = Uninitialized[c] : &:r34_1 +# 34| r34_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 34| v34_4(void) = Call[ClassWithDestructor2] : func:r34_3, this:r34_1 +# 34| mu34_5(unknown) = ^CallSideEffect : ~m? +# 34| mu34_6(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r34_1 +# 35| r35_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs2] : +# 35| r35_2(glval<ClassWithDestructor2>) = VariableAddress[#temp35:39] : +# 35| r35_3(glval<unknown>) = FunctionAddress[returnValue] : +# 35| r35_4(ClassWithDestructor2) = Call[returnValue] : func:r35_3 +# 35| mu35_5(unknown) = ^CallSideEffect : ~m? +# 35| mu35_6(ClassWithDestructor2) = Store[#temp35:39] : &:r35_2, r35_4 +# 35| r35_7(glval<ClassWithDestructor2>) = Convert : r35_2 +# 35| r35_8(ClassWithDestructor2 &) = CopyValue : r35_7 +# 35| mu35_9(ClassWithDestructor2 &) = Store[rs2] : &:r35_1, r35_8 +# 36| v36_1(void) = NoOp : +# 36| r36_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 36| r36_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 36| v36_4(void) = Call[~ClassWithDestructor2] : func:r36_3, this:r36_2 +# 36| mu36_5(unknown) = ^CallSideEffect : ~m? +# 36| v36_6(void) = ^IndirectReadSideEffect[-1] : &:r36_2, ~m? +# 36| mu36_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_2 +# 33| v33_4(void) = ReturnVoid : +# 33| v33_5(void) = AliasedUse : ~m? +# 33| v33_6(void) = ExitFunction : + +# 38| void temp_test5(bool) +# 38| Block 0 +# 38| v38_1(void) = EnterFunction : +# 38| mu38_2(unknown) = AliasedDefinition : +# 38| mu38_3(unknown) = InitializeNonLocal : +# 38| r38_4(glval<bool>) = VariableAddress[b] : +# 38| mu38_5(bool) = InitializeParameter[b] : &:r38_4 +# 39| r39_1(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| r39_2(glval<bool>) = VariableAddress[b] : +# 39| r39_3(bool) = Load[b] : &:r39_2, ~m? +# 39| v39_4(void) = ConditionalBranch : r39_3 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 39| Block 1 +# 39| r39_5(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| r39_6(ClassWithDestructor2) = Load[#temp39:3] : &:r39_5, ~m? +# 39| mu39_7(ClassWithDestructor2) = Store[#temp39:3] : &:r39_1, r39_6 +# 40| v40_1(void) = NoOp : +# 38| v38_6(void) = ReturnVoid : +# 38| v38_7(void) = AliasedUse : ~m? +# 38| v38_8(void) = ExitFunction : + +# 39| Block 2 +# 39| r39_8(glval<ClassWithDestructor2>) = VariableAddress[#temp39:7] : +# 39| mu39_9(ClassWithDestructor2) = Uninitialized[#temp39:7] : &:r39_8 +# 39| r39_10(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 39| v39_11(void) = Call[ClassWithDestructor2] : func:r39_10, this:r39_8 +# 39| mu39_12(unknown) = ^CallSideEffect : ~m? +# 39| mu39_13(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_8 +# 39| r39_14(ClassWithDestructor2) = Load[#temp39:7] : &:r39_8, ~m? +# 39| r39_15(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| mu39_16(ClassWithDestructor2) = Store[#temp39:3] : &:r39_15, r39_14 +#-----| Goto -> Block 1 + +# 39| Block 3 +# 39| r39_17(glval<ClassWithDestructor2>) = VariableAddress[#temp39:32] : +# 39| mu39_18(ClassWithDestructor2) = Uninitialized[#temp39:32] : &:r39_17 +# 39| r39_19(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 39| v39_20(void) = Call[ClassWithDestructor2] : func:r39_19, this:r39_17 +# 39| mu39_21(unknown) = ^CallSideEffect : ~m? +# 39| mu39_22(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r39_17 +# 39| r39_23(ClassWithDestructor2) = Load[#temp39:32] : &:r39_17, ~m? +# 39| r39_24(glval<ClassWithDestructor2>) = VariableAddress[#temp39:3] : +# 39| mu39_25(ClassWithDestructor2) = Store[#temp39:3] : &:r39_24, r39_23 +#-----| Goto -> Block 1 + +# 42| void temp_test6(bool) +# 42| Block 0 +# 42| v42_1(void) = EnterFunction : +# 42| mu42_2(unknown) = AliasedDefinition : +# 42| mu42_3(unknown) = InitializeNonLocal : +# 42| r42_4(glval<bool>) = VariableAddress[b] : +# 42| mu42_5(bool) = InitializeParameter[b] : &:r42_4 +# 43| r43_1(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 43| mu43_2(ClassWithDestructor2) = Uninitialized[c] : &:r43_1 +# 43| r43_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 43| v43_4(void) = Call[ClassWithDestructor2] : func:r43_3, this:r43_1 +# 43| mu43_5(unknown) = ^CallSideEffect : ~m? +# 43| mu43_6(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r43_1 +# 44| r44_1(glval<bool>) = VariableAddress[b] : +# 44| r44_2(bool) = Load[b] : &:r44_1, ~m? +# 44| v44_3(void) = ConditionalBranch : r44_2 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 42| Block 1 +# 42| v42_6(void) = AliasedUse : ~m? +# 42| v42_7(void) = ExitFunction : + +# 42| Block 2 +# 42| v42_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 45| Block 3 +# 45| r45_1(glval<ClassWithConstructor>) = VariableAddress[#throw45:7] : +# 45| mu45_2(ClassWithConstructor) = Uninitialized[#throw45:7] : &:r45_1 +# 45| r45_3(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 45| r45_4(char) = Constant[120] : +# 45| r45_5(glval<ClassWithDestructor2>) = VariableAddress[#temp45:39] : +# 45| mu45_6(ClassWithDestructor2) = Uninitialized[#temp45:39] : &:r45_5 +# 45| r45_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 45| v45_8(void) = Call[ClassWithDestructor2] : func:r45_7, this:r45_5 +# 45| mu45_9(unknown) = ^CallSideEffect : ~m? +# 45| mu45_10(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5 +# 45| r45_11(glval<unknown>) = FunctionAddress[get_x] : +# 45| r45_12(char) = Call[get_x] : func:r45_11, this:r45_5 +# 45| mu45_13(unknown) = ^CallSideEffect : ~m? +# 45| v45_14(void) = ^IndirectReadSideEffect[-1] : &:r45_5, ~m? +# 45| mu45_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r45_5 +# 45| v45_16(void) = Call[ClassWithConstructor] : func:r45_3, this:r45_1, 0:r45_4, 1:r45_12 +# 45| mu45_17(unknown) = ^CallSideEffect : ~m? +# 45| mu45_18(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r45_1 +# 45| v45_19(void) = ThrowValue : &:r45_1, ~m? +#-----| Exception -> Block 2 + +# 47| Block 4 +# 47| v47_1(void) = NoOp : +# 47| r47_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 47| r47_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 47| v47_4(void) = Call[~ClassWithDestructor2] : func:r47_3, this:r47_2 +# 47| mu47_5(unknown) = ^CallSideEffect : ~m? +# 47| v47_6(void) = ^IndirectReadSideEffect[-1] : &:r47_2, ~m? +# 47| mu47_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r47_2 +# 42| v42_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 49| void temp_test7(bool) +# 49| Block 0 +# 49| v49_1(void) = EnterFunction : +# 49| mu49_2(unknown) = AliasedDefinition : +# 49| mu49_3(unknown) = InitializeNonLocal : +# 49| r49_4(glval<bool>) = VariableAddress[b] : +# 49| mu49_5(bool) = InitializeParameter[b] : &:r49_4 +# 50| r50_1(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 50| mu50_2(ClassWithDestructor2) = Uninitialized[c] : &:r50_1 +# 50| r50_3(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 50| v50_4(void) = Call[ClassWithDestructor2] : func:r50_3, this:r50_1 +# 50| mu50_5(unknown) = ^CallSideEffect : ~m? +# 50| mu50_6(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r50_1 +# 51| r51_1(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] : +# 51| r51_2(glval<bool>) = VariableAddress[b] : +# 51| r51_3(bool) = Load[b] : &:r51_2, ~m? +# 51| v51_4(void) = ConditionalBranch : r51_3 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 49| Block 1 +# 49| v49_6(void) = AliasedUse : ~m? +# 49| v49_7(void) = ExitFunction : + +# 49| Block 2 +# 49| v49_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 51| Block 3 +# 51| r51_5(glval<ClassWithConstructor>) = VariableAddress[#throw51:9] : +# 51| mu51_6(ClassWithConstructor) = Uninitialized[#throw51:9] : &:r51_5 +# 51| r51_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 51| r51_8(char) = Constant[120] : +# 51| r51_9(glval<ClassWithDestructor2>) = VariableAddress[#temp51:41] : +# 51| mu51_10(ClassWithDestructor2) = Uninitialized[#temp51:41] : &:r51_9 +# 51| r51_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 51| v51_12(void) = Call[ClassWithDestructor2] : func:r51_11, this:r51_9 +# 51| mu51_13(unknown) = ^CallSideEffect : ~m? +# 51| mu51_14(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9 +# 51| r51_15(glval<unknown>) = FunctionAddress[get_x] : +# 51| r51_16(char) = Call[get_x] : func:r51_15, this:r51_9 +# 51| mu51_17(unknown) = ^CallSideEffect : ~m? +# 51| v51_18(void) = ^IndirectReadSideEffect[-1] : &:r51_9, ~m? +# 51| mu51_19(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_9 +# 51| v51_20(void) = Call[ClassWithConstructor] : func:r51_7, this:r51_5, 0:r51_8, 1:r51_16 +# 51| mu51_21(unknown) = ^CallSideEffect : ~m? +# 51| mu51_22(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r51_5 +# 51| v51_23(void) = ThrowValue : &:r51_5, ~m? +#-----| Exception -> Block 2 + +# 51| Block 4 +# 51| r51_24(glval<ClassWithDestructor2>) = VariableAddress[#temp51:75] : +# 51| mu51_25(ClassWithDestructor2) = Uninitialized[#temp51:75] : &:r51_24 +# 51| r51_26(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 51| v51_27(void) = Call[ClassWithDestructor2] : func:r51_26, this:r51_24 +# 51| mu51_28(unknown) = ^CallSideEffect : ~m? +# 51| mu51_29(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_24 +# 51| r51_30(ClassWithDestructor2) = Load[#temp51:75] : &:r51_24, ~m? +# 51| r51_31(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] : +# 51| mu51_32(ClassWithDestructor2) = Store[#temp51:5] : &:r51_31, r51_30 +# 51| r51_33(glval<ClassWithDestructor2>) = VariableAddress[#temp51:5] : +# 51| r51_34(ClassWithDestructor2) = Load[#temp51:5] : &:r51_33, ~m? +# 51| mu51_35(ClassWithDestructor2) = Store[#temp51:5] : &:r51_1, r51_34 +# 52| v52_1(void) = NoOp : +# 52| r52_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 52| r52_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 52| v52_4(void) = Call[~ClassWithDestructor2] : func:r52_3, this:r52_2 +# 52| mu52_5(unknown) = ^CallSideEffect : ~m? +# 52| v52_6(void) = ^IndirectReadSideEffect[-1] : &:r52_2, ~m? +# 52| mu52_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r52_2 +# 49| v49_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + +# 54| void temp_test8(bool) +# 54| Block 0 +# 54| v54_1(void) = EnterFunction : +# 54| mu54_2(unknown) = AliasedDefinition : +# 54| mu54_3(unknown) = InitializeNonLocal : +# 54| r54_4(glval<bool>) = VariableAddress[b] : +# 54| mu54_5(bool) = InitializeParameter[b] : &:r54_4 +# 55| r55_1(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] : +# 55| r55_2(glval<bool>) = VariableAddress[b] : +# 55| r55_3(bool) = Load[b] : &:r55_2, ~m? +# 55| v55_4(void) = ConditionalBranch : r55_3 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 54| Block 1 +# 54| v54_6(void) = AliasedUse : ~m? +# 54| v54_7(void) = ExitFunction : + +# 54| Block 2 +# 54| v54_8(void) = Unwind : +#-----| Goto -> Block 1 + +# 55| Block 3 +# 55| r55_5(glval<ClassWithConstructor>) = VariableAddress[#throw55:9] : +# 55| mu55_6(ClassWithConstructor) = Uninitialized[#throw55:9] : &:r55_5 +# 55| r55_7(glval<unknown>) = FunctionAddress[ClassWithConstructor] : +# 55| r55_8(char) = Constant[120] : +# 55| r55_9(glval<ClassWithDestructor2>) = VariableAddress[#temp55:41] : +# 55| mu55_10(ClassWithDestructor2) = Uninitialized[#temp55:41] : &:r55_9 +# 55| r55_11(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 55| v55_12(void) = Call[ClassWithDestructor2] : func:r55_11, this:r55_9 +# 55| mu55_13(unknown) = ^CallSideEffect : ~m? +# 55| mu55_14(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9 +# 55| r55_15(glval<unknown>) = FunctionAddress[get_x] : +# 55| r55_16(char) = Call[get_x] : func:r55_15, this:r55_9 +# 55| mu55_17(unknown) = ^CallSideEffect : ~m? +# 55| v55_18(void) = ^IndirectReadSideEffect[-1] : &:r55_9, ~m? +# 55| mu55_19(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_9 +# 55| v55_20(void) = Call[ClassWithConstructor] : func:r55_7, this:r55_5, 0:r55_8, 1:r55_16 +# 55| mu55_21(unknown) = ^CallSideEffect : ~m? +# 55| mu55_22(ClassWithConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r55_5 +# 55| v55_23(void) = ThrowValue : &:r55_5, ~m? +#-----| Exception -> Block 2 + +# 55| Block 4 +# 55| r55_24(glval<ClassWithDestructor2>) = VariableAddress[#temp55:75] : +# 55| mu55_25(ClassWithDestructor2) = Uninitialized[#temp55:75] : &:r55_24 +# 55| r55_26(glval<unknown>) = FunctionAddress[ClassWithDestructor2] : +# 55| v55_27(void) = Call[ClassWithDestructor2] : func:r55_26, this:r55_24 +# 55| mu55_28(unknown) = ^CallSideEffect : ~m? +# 55| mu55_29(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_24 +# 55| r55_30(ClassWithDestructor2) = Load[#temp55:75] : &:r55_24, ~m? +# 55| r55_31(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] : +# 55| mu55_32(ClassWithDestructor2) = Store[#temp55:5] : &:r55_31, r55_30 +# 55| r55_33(glval<ClassWithDestructor2>) = VariableAddress[#temp55:5] : +# 55| r55_34(ClassWithDestructor2) = Load[#temp55:5] : &:r55_33, ~m? +# 55| mu55_35(ClassWithDestructor2) = Store[#temp55:5] : &:r55_1, r55_34 +# 56| v56_1(void) = NoOp : +# 54| v54_9(void) = ReturnVoid : +#-----| Goto -> Block 1 + ir.c: # 7| void MyCoordsTest(int) # 7| Block 0 From 129286aa1c0fb67bd38704dca3ce24bda3c7ac18 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Wed, 13 Mar 2024 12:03:00 +0100 Subject: [PATCH 160/731] allow more flow through .filter() --- .../ql/lib/semmle/javascript/Arrays.qll | 5 ++- .../ReflectedXss/ReflectedXss.expected | 42 +++++++++++++++++++ .../CWE-079/ReflectedXss/ReflectedXss.js | 14 +++++++ .../ReflectedXssWithCustomSanitizer.expected | 2 + 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/Arrays.qll b/javascript/ql/lib/semmle/javascript/Arrays.qll index 64ed34ae631a..cd982855a153 100644 --- a/javascript/ql/lib/semmle/javascript/Arrays.qll +++ b/javascript/ql/lib/semmle/javascript/Arrays.qll @@ -36,7 +36,8 @@ module ArrayTaintTracking { succ = call ) or - // `array.filter(x => x)` and `array.filter(x => !!x)` keeps the taint + // `array.filter(x => x)` and `array.filter(x => !<something>)` keeps the taint + // the latter is assumed to filter away only specific values, thus keeping the taint call.(DataFlow::MethodCallNode).getMethodName() = "filter" and pred = call.getReceiver() and succ = call and @@ -47,7 +48,7 @@ module ArrayTaintTracking { | param = ret or - param = DataFlow::exprNode(ret.asExpr().(LogNotExpr).getOperand().(LogNotExpr).getOperand()) + ret.asExpr() instanceof LogNotExpr ) or // `array.reduce` with tainted value in callback diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected index 3c625dccdd37..ddee07dbadc5 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.expected @@ -84,6 +84,26 @@ nodes | ReflectedXss.js:110:16:110:30 | request.query.p | | ReflectedXss.js:110:16:110:30 | request.query.p | | ReflectedXss.js:110:16:110:30 | request.query.p | +| ReflectedXss.js:114:11:114:41 | queryKeys | +| ReflectedXss.js:114:13:114:27 | keys: queryKeys | +| ReflectedXss.js:114:13:114:27 | keys: queryKeys | +| ReflectedXss.js:116:11:116:45 | keys | +| ReflectedXss.js:116:18:116:26 | queryKeys | +| ReflectedXss.js:116:18:116:45 | queryKe ... s?.keys | +| ReflectedXss.js:116:31:116:45 | paramKeys?.keys | +| ReflectedXss.js:116:31:116:45 | paramKeys?.keys | +| ReflectedXss.js:118:11:118:61 | keyArray | +| ReflectedXss.js:118:22:118:61 | typeof ... : keys | +| ReflectedXss.js:118:49:118:54 | [keys] | +| ReflectedXss.js:118:50:118:53 | keys | +| ReflectedXss.js:118:58:118:61 | keys | +| ReflectedXss.js:119:11:119:72 | invalidKeys | +| ReflectedXss.js:119:25:119:32 | keyArray | +| ReflectedXss.js:119:25:119:72 | keyArra ... s(key)) | +| ReflectedXss.js:122:30:122:73 | `${inva ... telist` | +| ReflectedXss.js:122:30:122:73 | `${inva ... telist` | +| ReflectedXss.js:122:33:122:43 | invalidKeys | +| ReflectedXss.js:122:33:122:54 | invalid ... n(', ') | | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | | ReflectedXssContentTypes.js:10:24:10:36 | req.params.id | @@ -307,6 +327,26 @@ edges | ReflectedXss.js:103:76:103:83 | req.body | ReflectedXss.js:103:12:103:84 | markdow ... q.body) | | ReflectedXss.js:103:76:103:83 | req.body | ReflectedXss.js:103:12:103:84 | markdow ... q.body) | | ReflectedXss.js:110:16:110:30 | request.query.p | ReflectedXss.js:110:16:110:30 | request.query.p | +| ReflectedXss.js:114:11:114:41 | queryKeys | ReflectedXss.js:116:18:116:26 | queryKeys | +| ReflectedXss.js:114:13:114:27 | keys: queryKeys | ReflectedXss.js:114:11:114:41 | queryKeys | +| ReflectedXss.js:114:13:114:27 | keys: queryKeys | ReflectedXss.js:114:11:114:41 | queryKeys | +| ReflectedXss.js:116:11:116:45 | keys | ReflectedXss.js:118:50:118:53 | keys | +| ReflectedXss.js:116:11:116:45 | keys | ReflectedXss.js:118:58:118:61 | keys | +| ReflectedXss.js:116:18:116:26 | queryKeys | ReflectedXss.js:116:18:116:45 | queryKe ... s?.keys | +| ReflectedXss.js:116:18:116:45 | queryKe ... s?.keys | ReflectedXss.js:116:11:116:45 | keys | +| ReflectedXss.js:116:31:116:45 | paramKeys?.keys | ReflectedXss.js:116:18:116:45 | queryKe ... s?.keys | +| ReflectedXss.js:116:31:116:45 | paramKeys?.keys | ReflectedXss.js:116:18:116:45 | queryKe ... s?.keys | +| ReflectedXss.js:118:11:118:61 | keyArray | ReflectedXss.js:119:25:119:32 | keyArray | +| ReflectedXss.js:118:22:118:61 | typeof ... : keys | ReflectedXss.js:118:11:118:61 | keyArray | +| ReflectedXss.js:118:49:118:54 | [keys] | ReflectedXss.js:118:22:118:61 | typeof ... : keys | +| ReflectedXss.js:118:50:118:53 | keys | ReflectedXss.js:118:49:118:54 | [keys] | +| ReflectedXss.js:118:58:118:61 | keys | ReflectedXss.js:118:22:118:61 | typeof ... : keys | +| ReflectedXss.js:119:11:119:72 | invalidKeys | ReflectedXss.js:122:33:122:43 | invalidKeys | +| ReflectedXss.js:119:25:119:32 | keyArray | ReflectedXss.js:119:25:119:72 | keyArra ... s(key)) | +| ReflectedXss.js:119:25:119:72 | keyArra ... s(key)) | ReflectedXss.js:119:11:119:72 | invalidKeys | +| ReflectedXss.js:122:33:122:43 | invalidKeys | ReflectedXss.js:122:33:122:54 | invalid ... n(', ') | +| ReflectedXss.js:122:33:122:54 | invalid ... n(', ') | ReflectedXss.js:122:30:122:73 | `${inva ... telist` | +| ReflectedXss.js:122:33:122:54 | invalid ... n(', ') | ReflectedXss.js:122:30:122:73 | `${inva ... telist` | | ReflectedXssContentTypes.js:10:24:10:36 | req.params.id | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | | ReflectedXssContentTypes.js:10:24:10:36 | req.params.id | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | | ReflectedXssContentTypes.js:10:24:10:36 | req.params.id | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | @@ -461,6 +501,8 @@ edges | ReflectedXss.js:100:12:100:39 | markdow ... q.body) | ReflectedXss.js:100:31:100:38 | req.body | ReflectedXss.js:100:12:100:39 | markdow ... q.body) | Cross-site scripting vulnerability due to a $@. | ReflectedXss.js:100:31:100:38 | req.body | user-provided value | | ReflectedXss.js:103:12:103:84 | markdow ... q.body) | ReflectedXss.js:103:76:103:83 | req.body | ReflectedXss.js:103:12:103:84 | markdow ... q.body) | Cross-site scripting vulnerability due to a $@. | ReflectedXss.js:103:76:103:83 | req.body | user-provided value | | ReflectedXss.js:110:16:110:30 | request.query.p | ReflectedXss.js:110:16:110:30 | request.query.p | ReflectedXss.js:110:16:110:30 | request.query.p | Cross-site scripting vulnerability due to a $@. | ReflectedXss.js:110:16:110:30 | request.query.p | user-provided value | +| ReflectedXss.js:122:30:122:73 | `${inva ... telist` | ReflectedXss.js:114:13:114:27 | keys: queryKeys | ReflectedXss.js:122:30:122:73 | `${inva ... telist` | Cross-site scripting vulnerability due to a $@. | ReflectedXss.js:114:13:114:27 | keys: queryKeys | user-provided value | +| ReflectedXss.js:122:30:122:73 | `${inva ... telist` | ReflectedXss.js:116:31:116:45 | paramKeys?.keys | ReflectedXss.js:122:30:122:73 | `${inva ... telist` | Cross-site scripting vulnerability due to a $@. | ReflectedXss.js:116:31:116:45 | paramKeys?.keys | user-provided value | | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | ReflectedXssContentTypes.js:10:24:10:36 | req.params.id | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | Cross-site scripting vulnerability due to a $@. | ReflectedXssContentTypes.js:10:24:10:36 | req.params.id | user-provided value | | ReflectedXssContentTypes.js:20:14:20:36 | "FOO: " ... rams.id | ReflectedXssContentTypes.js:20:24:20:36 | req.params.id | ReflectedXssContentTypes.js:20:14:20:36 | "FOO: " ... rams.id | Cross-site scripting vulnerability due to a $@. | ReflectedXssContentTypes.js:20:24:20:36 | req.params.id | user-provided value | | ReflectedXssContentTypes.js:39:13:39:35 | "FOO: " ... rams.id | ReflectedXssContentTypes.js:39:23:39:35 | req.params.id | ReflectedXssContentTypes.js:39:13:39:35 | "FOO: " ... rams.id | Cross-site scripting vulnerability due to a $@. | ReflectedXssContentTypes.js:39:23:39:35 | req.params.id | user-provided value | diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.js b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.js index 2b7c2057f0f7..fc2e1abb8882 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.js +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXss.js @@ -109,3 +109,17 @@ hapi.route({ handler: function (request){ return request.query.p; // NOT OK }}); + +app.get("invalid/keys/:id", async (req, res) => { + const { keys: queryKeys } = req.query; + const paramKeys = req.params; + const keys = queryKeys || paramKeys?.keys; + + const keyArray = typeof keys === 'string' ? [keys] : keys; + const invalidKeys = keyArray.filter(key => !whitelist.includes(key)); + + if (invalidKeys.length) { + res.status(400).send(`${invalidKeys.join(', ')} not in whitelist`); + return; + } +}); \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected index e73591619dfb..a367f07307a5 100644 --- a/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected +++ b/javascript/ql/test/query-tests/Security/CWE-079/ReflectedXss/ReflectedXssWithCustomSanitizer.expected @@ -19,6 +19,8 @@ | ReflectedXss.js:100:12:100:39 | markdow ... q.body) | Cross-site scripting vulnerability due to $@. | ReflectedXss.js:100:31:100:38 | req.body | user-provided value | | ReflectedXss.js:103:12:103:84 | markdow ... q.body) | Cross-site scripting vulnerability due to $@. | ReflectedXss.js:103:76:103:83 | req.body | user-provided value | | ReflectedXss.js:110:16:110:30 | request.query.p | Cross-site scripting vulnerability due to $@. | ReflectedXss.js:110:16:110:30 | request.query.p | user-provided value | +| ReflectedXss.js:122:30:122:73 | `${inva ... telist` | Cross-site scripting vulnerability due to $@. | ReflectedXss.js:114:13:114:27 | keys: queryKeys | user-provided value | +| ReflectedXss.js:122:30:122:73 | `${inva ... telist` | Cross-site scripting vulnerability due to $@. | ReflectedXss.js:116:31:116:45 | paramKeys?.keys | user-provided value | | ReflectedXssContentTypes.js:10:14:10:36 | "FOO: " ... rams.id | Cross-site scripting vulnerability due to $@. | ReflectedXssContentTypes.js:10:24:10:36 | req.params.id | user-provided value | | ReflectedXssContentTypes.js:20:14:20:36 | "FOO: " ... rams.id | Cross-site scripting vulnerability due to $@. | ReflectedXssContentTypes.js:20:24:20:36 | req.params.id | user-provided value | | ReflectedXssContentTypes.js:39:13:39:35 | "FOO: " ... rams.id | Cross-site scripting vulnerability due to $@. | ReflectedXssContentTypes.js:39:23:39:35 | req.params.id | user-provided value | From bcd36b1994ba35cfca2807af4e566368bdfba9fb Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 13 Mar 2024 11:39:15 +0000 Subject: [PATCH 161/731] C++: Recognize glib allocations and deallocations. --- .../semmle/code/cpp/models/implementations/Allocation.qll | 8 ++++++-- .../code/cpp/models/implementations/Deallocation.qll | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll index 305a0c257322..4b61a1936527 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Allocation.qll @@ -36,7 +36,9 @@ private class MallocAllocationFunction extends AllocationFunction { "CRYPTO_malloc", // CRYPTO_malloc(size_t num, const char *file, int line) "CRYPTO_zalloc", // CRYPTO_zalloc(size_t num, const char *file, int line) "CRYPTO_secure_malloc", // CRYPTO_secure_malloc(size_t num, const char *file, int line) - "CRYPTO_secure_zalloc" // CRYPTO_secure_zalloc(size_t num, const char *file, int line) + "CRYPTO_secure_zalloc", // CRYPTO_secure_zalloc(size_t num, const char *file, int line) + "g_malloc", // g_malloc (n_bytes); + "g_try_malloc" // g_try_malloc(n_bytes); ]) and sizeArg = 0 or @@ -139,7 +141,9 @@ private class ReallocAllocationFunction extends AllocationFunction, TaintFunctio // --- Windows COM allocation "CoTaskMemRealloc", // CoTaskMemRealloc(ptr, size) // --- OpenSSL memory allocation - "CRYPTO_realloc" // CRYPTO_realloc(void *addr, size_t num, const char *file, int line) + "CRYPTO_realloc", // CRYPTO_realloc(void *addr, size_t num, const char *file, int line) + "g_realloc", // g_realloc(mem, n_bytes); + "g_try_realloc" // g_try_realloc(mem, n_bytes); ]) and sizeArg = 1 and reallocArg = 0 diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Deallocation.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Deallocation.qll index 1162c09b0b64..e50530142aa7 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Deallocation.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Deallocation.qll @@ -20,8 +20,10 @@ private class StandardDeallocationFunction extends DeallocationFunction { freedArg = 0 or this.hasGlobalName([ - // --- OpenSSL memory allocation - "CRYPTO_free", "CRYPTO_secure_free" + // --- OpenSSL memory deallocation + "CRYPTO_free", "CRYPTO_secure_free", + // --- glib memory deallocation + "g_free" ]) and freedArg = 0 or From 3ea39a25536e750dd7601f55850dc3137e43f12c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 13 Mar 2024 11:39:34 +0000 Subject: [PATCH 162/731] C++: Add some query tests. --- .../query-tests/Critical/MemoryFreed/DoubleFree.expected | 4 ++++ .../Critical/MemoryFreed/MemoryFreed.expected | 2 ++ .../test/query-tests/Critical/MemoryFreed/test_free.cpp | 7 +++++++ .../Security/CWE/CWE-193/InvalidPointerDeref.expected | 9 +++++++++ cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp | 9 +++++++++ 5 files changed, 31 insertions(+) diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected index b9ac7f0a2d53..bd8868102842 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected @@ -11,6 +11,7 @@ edges | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | provenance | | | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | provenance | | | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | provenance | | +| test_free.cpp:301:12:301:14 | pointer to g_free output argument | test_free.cpp:302:12:302:14 | buf | provenance | | nodes | test_free.cpp:11:10:11:10 | pointer to free output argument | semmle.label | pointer to free output argument | | test_free.cpp:14:10:14:10 | a | semmle.label | a | @@ -36,6 +37,8 @@ nodes | test_free.cpp:154:10:154:10 | a | semmle.label | a | | test_free.cpp:207:10:207:10 | pointer to free output argument | semmle.label | pointer to free output argument | | test_free.cpp:209:10:209:10 | a | semmle.label | a | +| test_free.cpp:301:12:301:14 | pointer to g_free output argument | semmle.label | pointer to g_free output argument | +| test_free.cpp:302:12:302:14 | buf | semmle.label | buf | subpaths #select | test_free.cpp:14:10:14:10 | a | test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:14:10:14:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:11:5:11:8 | call to free | call to free | @@ -50,3 +53,4 @@ subpaths | test_free.cpp:129:10:129:11 | * ... | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | Memory pointed to by '* ...' may already have been freed by $@. | test_free.cpp:128:5:128:8 | call to free | call to free | | test_free.cpp:154:10:154:10 | a | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:152:22:152:25 | call to free | call to free | | test_free.cpp:209:10:209:10 | a | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:207:5:207:8 | call to free | call to free | +| test_free.cpp:302:12:302:14 | buf | test_free.cpp:301:12:301:14 | pointer to g_free output argument | test_free.cpp:302:12:302:14 | buf | Memory pointed to by 'buf' may already have been freed by $@. | test_free.cpp:301:5:301:10 | call to g_free | call to g_free | diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/MemoryFreed.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/MemoryFreed.expected index 14b04cc5c2dd..2e5f59ae0d26 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/MemoryFreed.expected +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/MemoryFreed.expected @@ -102,6 +102,8 @@ | test_free.cpp:282:10:282:12 | buf | | test_free.cpp:288:8:288:10 | buf | | test_free.cpp:293:8:293:10 | buf | +| test_free.cpp:301:12:301:14 | buf | +| test_free.cpp:302:12:302:14 | buf | | virtual.cpp:18:10:18:10 | a | | virtual.cpp:19:10:19:10 | c | | virtual.cpp:38:10:38:10 | b | diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp b/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp index 24c0fcd922cc..8bffcad28560 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/test_free.cpp @@ -293,4 +293,11 @@ void test_free_struct4(char* buf, MyStruct s) { free(buf); s.buf = buf; char c = s.buf[0]; // BAD +} + +void g_free (void*); + +void test_g_free(char* buf) { + g_free(buf); + g_free(buf); // BAD } \ No newline at end of file diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected index 43e865d894bc..b6a9e097127a 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected @@ -101,6 +101,10 @@ edges | test.cpp:857:16:857:29 | ... + ... | test.cpp:857:16:857:29 | ... + ... | provenance | | | test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | provenance | | | test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | provenance | | +| test.cpp:868:15:868:35 | call to g_malloc | test.cpp:869:15:869:22 | ... + ... | provenance | | +| test.cpp:869:15:869:22 | ... + ... | test.cpp:869:15:869:22 | ... + ... | provenance | | +| test.cpp:869:15:869:22 | ... + ... | test.cpp:870:14:870:15 | * ... | provenance | | +| test.cpp:869:15:869:22 | ... + ... | test.cpp:870:14:870:15 | * ... | provenance | | nodes | test.cpp:4:15:4:33 | call to malloc | semmle.label | call to malloc | | test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | @@ -198,6 +202,10 @@ nodes | test.cpp:857:16:857:29 | ... + ... | semmle.label | ... + ... | | test.cpp:857:16:857:29 | ... + ... | semmle.label | ... + ... | | test.cpp:860:5:860:11 | ... = ... | semmle.label | ... = ... | +| test.cpp:868:15:868:35 | call to g_malloc | semmle.label | call to g_malloc | +| test.cpp:869:15:869:22 | ... + ... | semmle.label | ... + ... | +| test.cpp:869:15:869:22 | ... + ... | semmle.label | ... + ... | +| test.cpp:870:14:870:15 | * ... | semmle.label | * ... | subpaths #select | test.cpp:6:14:6:15 | * ... | test.cpp:4:15:4:33 | call to malloc | test.cpp:6:14:6:15 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:4:15:4:33 | call to malloc | call to malloc | test.cpp:5:19:5:22 | size | size | @@ -231,3 +239,4 @@ subpaths | test.cpp:842:3:842:20 | ... = ... | test.cpp:841:18:841:35 | call to malloc | test.cpp:842:3:842:20 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:841:18:841:35 | call to malloc | call to malloc | test.cpp:842:11:842:15 | index | index | | test.cpp:849:5:849:22 | ... = ... | test.cpp:848:20:848:37 | call to malloc | test.cpp:849:5:849:22 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:848:20:848:37 | call to malloc | call to malloc | test.cpp:849:13:849:17 | index | index | | test.cpp:860:5:860:11 | ... = ... | test.cpp:856:12:856:35 | call to malloc | test.cpp:860:5:860:11 | ... = ... | This write might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:856:12:856:35 | call to malloc | call to malloc | test.cpp:857:21:857:28 | ... + ... | ... + ... | +| test.cpp:870:14:870:15 | * ... | test.cpp:868:15:868:35 | call to g_malloc | test.cpp:870:14:870:15 | * ... | This read might be out of bounds, as the pointer might be equal to $@ + $@. | test.cpp:868:15:868:35 | call to g_malloc | call to g_malloc | test.cpp:869:19:869:22 | size | size | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp index cb9caeaae1b6..db1017e233fe 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/test.cpp @@ -859,4 +859,13 @@ void test_regression(size_t size) { if(p <= chend) { *p = 42; // $ deref=L857->L860 // BAD } +} + + +void* g_malloc(size_t size); + +void test17(int size) { + char* p = (char*)g_malloc(size); + char* q = p + size; // $ alloc=L868 + char a = *q; // $ deref=L869->L870 // BAD } \ No newline at end of file From 465c3c18e37d9c9387b58f2c437967a480f89700 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 13 Mar 2024 11:49:26 +0000 Subject: [PATCH 163/731] C++: Add change note. --- cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md diff --git a/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md b/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md new file mode 100644 index 000000000000..bc9082285d41 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added models for `GLib` allocation and deallocation functions. From 16cef92106caebbbfed72734df00cf64391063ef Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 12 Mar 2024 11:08:18 +0100 Subject: [PATCH 164/731] JS: Add `DataFlow::Node.getLocation` --- config/identical-files.json | 3 +- javascript/ql/lib/semmle/javascript/AST.qll | 16 +- javascript/ql/lib/semmle/javascript/CFG.qll | 4 +- .../ql/lib/semmle/javascript/Comments.qll | 2 - .../ql/lib/semmle/javascript/Errors.qll | 2 - javascript/ql/lib/semmle/javascript/Files.qll | 3 +- javascript/ql/lib/semmle/javascript/HTML.qll | 8 - javascript/ql/lib/semmle/javascript/JSDoc.qll | 4 - javascript/ql/lib/semmle/javascript/JSON.qll | 12 +- javascript/ql/lib/semmle/javascript/Lines.qll | 2 - .../ql/lib/semmle/javascript/Locations.qll | 53 +++--- .../ql/lib/semmle/javascript/Regexp.qll | 2 - .../semmle/javascript/RestrictedLocations.qll | 2 +- .../ql/lib/semmle/javascript/Tokens.qll | 2 - .../ql/lib/semmle/javascript/Variables.qll | 4 +- javascript/ql/lib/semmle/javascript/XML.qll | 8 +- javascript/ql/lib/semmle/javascript/YAML.qll | 8 +- .../semmle/javascript/dataflow/DataFlow.qll | 8 + .../javascript/frameworks/Templating.qll | 9 +- .../javascript/internal/CachedStages.qll | 2 + .../semmle/javascript/internal/Locations.qll | 171 ++++++++++++++++++ .../internal/InlineExpectationsTestImpl.qll | 7 +- 22 files changed, 235 insertions(+), 97 deletions(-) create mode 100644 javascript/ql/lib/semmle/javascript/internal/Locations.qll diff --git a/config/identical-files.json b/config/identical-files.json index ce0e3a67f35d..017fdd11481d 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -255,7 +255,6 @@ "cpp/ql/lib/semmle/code/cpp/XML.qll", "csharp/ql/lib/semmle/code/csharp/XML.qll", "java/ql/lib/semmle/code/xml/XML.qll", - "javascript/ql/lib/semmle/javascript/XML.qll", "python/ql/lib/semmle/python/xml/XML.qll" ], "DuplicationProblems.inc.qhelp": [ @@ -372,4 +371,4 @@ "python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml", "python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml" ] -} +} \ No newline at end of file diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index e4a1cf944c46..412f2036280e 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -23,31 +23,27 @@ private import semmle.javascript.internal.CachedStages * ``` */ class AstNode extends @ast_node, NodeInStmtContainer { - override Location getLocation() { hasLocation(this, result) } - override File getFile() { result = this.getLocation().getFile() // Specialized for performance reasons } /** Gets the first token belonging to this element. */ Token getFirstToken() { - exists(Location l1, Location l2 | + exists(DbLocation l1, DbLocation l2, string filepath, int startline, int startcolumn | l1 = this.getLocation() and l2 = result.getLocation() and - l1.getFile() = l2.getFile() and - l1.getStartLine() = l2.getStartLine() and - l1.getStartColumn() = l2.getStartColumn() + l1.hasLocationInfo(filepath, startline, startcolumn, _, _) and + l2.hasLocationInfo(filepath, startline, startcolumn, _, _) ) } /** Gets the last token belonging to this element. */ Token getLastToken() { - exists(Location l1, Location l2 | + exists(DbLocation l1, DbLocation l2, string filepath, int endline, int endcolumn | l1 = this.getLocation() and l2 = result.getLocation() and - l1.getFile() = l2.getFile() and - l1.getEndLine() = l2.getEndLine() and - l1.getEndColumn() = l2.getEndColumn() + l1.hasLocationInfo(filepath, _, _, endline, endcolumn) and + l2.hasLocationInfo(filepath, _, _, endline, endcolumn) ) and // exclude empty EOF token not result instanceof EOFToken diff --git a/javascript/ql/lib/semmle/javascript/CFG.qll b/javascript/ql/lib/semmle/javascript/CFG.qll index 81bbef4c6d22..95e1e9aef72a 100644 --- a/javascript/ql/lib/semmle/javascript/CFG.qll +++ b/javascript/ql/lib/semmle/javascript/CFG.qll @@ -356,9 +356,7 @@ class ControlFlowNode extends @cfg_node, Locatable, NodeInStmtContainer { * A synthetic CFG node that does not correspond to a statement or expression; * examples include guard nodes and entry/exit nodes. */ -class SyntheticControlFlowNode extends @synthetic_cfg_node, ControlFlowNode { - override Location getLocation() { hasLocation(this, result) } -} +class SyntheticControlFlowNode extends @synthetic_cfg_node, ControlFlowNode { } /** A synthetic CFG node marking the entry point of a function or toplevel script. */ class ControlFlowEntryNode extends SyntheticControlFlowNode, @entry_node { diff --git a/javascript/ql/lib/semmle/javascript/Comments.qll b/javascript/ql/lib/semmle/javascript/Comments.qll index 4888aae0b6d5..889843728a25 100644 --- a/javascript/ql/lib/semmle/javascript/Comments.qll +++ b/javascript/ql/lib/semmle/javascript/Comments.qll @@ -15,8 +15,6 @@ import javascript * </pre> */ class Comment extends @comment, Locatable { - override Location getLocation() { hasLocation(this, result) } - /** Gets the toplevel element this comment belongs to. */ TopLevel getTopLevel() { comments(this, _, result, _, _) } diff --git a/javascript/ql/lib/semmle/javascript/Errors.qll b/javascript/ql/lib/semmle/javascript/Errors.qll index 729965029971..6a5d73566a44 100644 --- a/javascript/ql/lib/semmle/javascript/Errors.qll +++ b/javascript/ql/lib/semmle/javascript/Errors.qll @@ -4,8 +4,6 @@ import javascript /** An error encountered during extraction. */ abstract class Error extends Locatable { - override Location getLocation() { hasLocation(this, result) } - /** Gets the message associated with this error. */ abstract string getMessage(); diff --git a/javascript/ql/lib/semmle/javascript/Files.qll b/javascript/ql/lib/semmle/javascript/Files.qll index b384febb9a1a..88513f087ae0 100644 --- a/javascript/ql/lib/semmle/javascript/Files.qll +++ b/javascript/ql/lib/semmle/javascript/Files.qll @@ -3,6 +3,7 @@ import javascript private import NodeModuleResolutionImpl private import codeql.util.FileSystem +private import internal.Locations private module FsInput implements InputSig { abstract class ContainerBase extends @container { @@ -83,7 +84,7 @@ class File extends Container, Impl::File { * * Note that files have special locations starting and ending at line zero, column zero. */ - Location getLocation() { hasLocation(this, result) } + DbLocation getLocation() { result = getLocatableLocation(this) } /** Gets the number of lines in this file. */ int getNumberOfLines() { result = sum(int loc | numlines(this, loc, _, _) | loc) } diff --git a/javascript/ql/lib/semmle/javascript/HTML.qll b/javascript/ql/lib/semmle/javascript/HTML.qll index 5ba02cba7cb9..01ce54cef529 100644 --- a/javascript/ql/lib/semmle/javascript/HTML.qll +++ b/javascript/ql/lib/semmle/javascript/HTML.qll @@ -43,8 +43,6 @@ module HTML { class Element extends Locatable, @xmlelement { Element() { exists(FileContainingHtml f | xmlElements(this, _, _, _, f)) } - override Location getLocation() { xmllocations(this, result) } - /** * Gets the name of this HTML element. * @@ -122,8 +120,6 @@ module HTML { class Attribute extends Locatable, @xmlattribute { Attribute() { exists(FileContainingHtml f | xmlAttrs(this, _, _, _, _, f)) } - override Location getLocation() { xmllocations(this, result) } - /** * Gets the inline script of this attribute, if any. */ @@ -326,8 +322,6 @@ module HTML { * Holds if this text node is inside a `CDATA` tag. */ predicate isCData() { xmlChars(this, _, _, _, 1, _) } - - override Location getLocation() { xmllocations(this, result) } } /** @@ -349,7 +343,5 @@ module HTML { string getText() { result = this.toString().regexpCapture("(?s)<!--(.*)-->", 1) } override string toString() { xmlComments(this, result, _, _) } - - override Location getLocation() { xmllocations(this, result) } } } diff --git a/javascript/ql/lib/semmle/javascript/JSDoc.qll b/javascript/ql/lib/semmle/javascript/JSDoc.qll index 44ec09f34e43..6e1ea5caecb6 100644 --- a/javascript/ql/lib/semmle/javascript/JSDoc.qll +++ b/javascript/ql/lib/semmle/javascript/JSDoc.qll @@ -18,8 +18,6 @@ private import semmle.javascript.internal.CachedStages * </pre> */ class JSDoc extends @jsdoc, Locatable { - override Location getLocation() { hasLocation(this, result) } - /** Gets the description text of this JSDoc comment. */ string getDescription() { jsdoc(this, result, _) } @@ -75,8 +73,6 @@ abstract class Documentable extends AstNode { * ``` */ class JSDocTypeExprParent extends @jsdoc_type_expr_parent, Locatable { - override Location getLocation() { hasLocation(this, result) } - /** Gets the JSDoc comment to which this element belongs. */ JSDoc getJSDocComment() { none() } } diff --git a/javascript/ql/lib/semmle/javascript/JSON.qll b/javascript/ql/lib/semmle/javascript/JSON.qll index 1e56fc00657e..714228e52b65 100644 --- a/javascript/ql/lib/semmle/javascript/JSON.qll +++ b/javascript/ql/lib/semmle/javascript/JSON.qll @@ -3,6 +3,7 @@ */ import javascript +private import semmle.javascript.internal.Locations /** * A JSON-encoded value, which may be a primitive value, an array or an object. @@ -20,8 +21,6 @@ import javascript * ``` */ class JsonValue extends @json_value, Locatable { - override Location getLocation() { json_locations(this, result) } - /** Gets the parent value to which this value belongs, if any. */ JsonValue getParent() { json(this, _, result, _, _) } @@ -34,12 +33,7 @@ class JsonValue extends @json_value, Locatable { override string toString() { json(this, _, _, _, result) } /** Gets the JSON file containing this value. */ - File getJsonFile() { - exists(Location loc | - json_locations(this, loc) and - result = loc.getFile() - ) - } + File getJsonFile() { result = getLocatableLocation(this).getFile() } /** If this is an object, gets the value of property `name`. */ JsonValue getPropValue(string name) { json_properties(this, name, result) } @@ -172,7 +166,5 @@ class JsonObject extends @json_object, JsonValue { * An error reported by the JSON parser. */ class JsonParseError extends @json_parse_error, Error { - override Location getLocation() { json_locations(this, result) } - override string getMessage() { json_errors(this, result) } } diff --git a/javascript/ql/lib/semmle/javascript/Lines.qll b/javascript/ql/lib/semmle/javascript/Lines.qll index 08a013e52e88..1db9187008a1 100644 --- a/javascript/ql/lib/semmle/javascript/Lines.qll +++ b/javascript/ql/lib/semmle/javascript/Lines.qll @@ -14,8 +14,6 @@ import javascript * extracted with the `--extract-program-text` flag. */ class Line extends @line, Locatable { - override Location getLocation() { hasLocation(this, result) } - /** Gets the toplevel element this line belongs to. */ TopLevel getTopLevel() { lines(this, result, _, _) } diff --git a/javascript/ql/lib/semmle/javascript/Locations.qll b/javascript/ql/lib/semmle/javascript/Locations.qll index c0748f7b3e71..ce323dfc14db 100644 --- a/javascript/ql/lib/semmle/javascript/Locations.qll +++ b/javascript/ql/lib/semmle/javascript/Locations.qll @@ -1,38 +1,41 @@ /** Provides classes for working with locations and program elements that have locations. */ import javascript +private import internal.Locations /** * A location as given by a file, a start line, a start column, * an end line, and an end column. * + * This class is restricted to locations created by the extractor. + * * For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ -class Location extends @location { +class DbLocation extends TDbLocation { /** Gets the file for this location. */ - File getFile() { locations_default(this, result, _, _, _, _) } + File getFile() { dbLocationInfo(this, result, _, _, _, _) } /** Gets the 1-based line number (inclusive) where this location starts. */ - int getStartLine() { locations_default(this, _, result, _, _, _) } + int getStartLine() { dbLocationInfo(this, _, result, _, _, _) } /** Gets the 1-based column number (inclusive) where this location starts. */ - int getStartColumn() { locations_default(this, _, _, result, _, _) } + int getStartColumn() { dbLocationInfo(this, _, _, result, _, _) } /** Gets the 1-based line number (inclusive) where this location ends. */ - int getEndLine() { locations_default(this, _, _, _, result, _) } + int getEndLine() { dbLocationInfo(this, _, _, _, result, _) } /** Gets the 1-based column number (inclusive) where this location ends. */ - int getEndColumn() { locations_default(this, _, _, _, _, result) } + int getEndColumn() { dbLocationInfo(this, _, _, _, _, result) } /** Gets the number of lines covered by this location. */ int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } /** Holds if this location starts before location `that`. */ pragma[inline] - predicate startsBefore(Location that) { + predicate startsBefore(DbLocation that) { exists(File f, int sl1, int sc1, int sl2, int sc2 | - locations_default(this, f, sl1, sc1, _, _) and - locations_default(that, f, sl2, sc2, _, _) + dbLocationInfo(this, f, sl1, sc1, _, _) and + dbLocationInfo(that, f, sl2, sc2, _, _) | sl1 < sl2 or @@ -42,10 +45,10 @@ class Location extends @location { /** Holds if this location ends after location `that`. */ pragma[inline] - predicate endsAfter(Location that) { + predicate endsAfter(DbLocation that) { exists(File f, int el1, int ec1, int el2, int ec2 | - locations_default(this, f, _, _, el1, ec1) and - locations_default(that, f, _, _, el2, ec2) + dbLocationInfo(this, f, _, _, el1, ec1) and + dbLocationInfo(that, f, _, _, el2, ec2) | el1 > el2 or @@ -57,10 +60,10 @@ class Location extends @location { * Holds if this location contains location `that`, meaning that it starts * before and ends after it. */ - predicate contains(Location that) { this.startsBefore(that) and this.endsAfter(that) } + predicate contains(DbLocation that) { this.startsBefore(that) and this.endsAfter(that) } /** Holds if this location is empty. */ - predicate isEmpty() { exists(int l, int c | locations_default(this, _, l, c, l, c - 1)) } + predicate isEmpty() { exists(int l, int c | dbLocationInfo(this, _, l, c, l, c - 1)) } /** Gets a textual representation of this element. */ string toString() { result = this.getFile().getBaseName() + ":" + this.getStartLine().toString() } @@ -76,22 +79,21 @@ class Location extends @location { string filepath, int startline, int startcolumn, int endline, int endcolumn ) { exists(File f | - locations_default(this, f, startline, startcolumn, endline, endcolumn) and + dbLocationInfo(this, f, startline, startcolumn, endline, endcolumn) and filepath = f.getAbsolutePath() ) } } +final class Location = LocationImpl; + /** A program element with a location. */ class Locatable extends @locatable { /** Gets the file this program element comes from. */ File getFile() { result = this.getLocation().getFile() } /** Gets this element's location. */ - Location getLocation() { - // overridden by subclasses - none() - } + final DbLocation getLocation() { result = getLocatableLocation(this) } /** * Gets the line on which this element starts. @@ -142,16 +144,3 @@ class Locatable extends @locatable { */ string getAPrimaryQlClass() { result = "???" } } - -/** - * A `File`, considered as a `Locatable`. - * - * For reasons of backwards compatibility, @file is a subtype of @locatable. This class exists to - * provide an override of `Locatable.getLocation()` for @files, since it would otherwise default - * to `none()`, which is unhelpful. - */ -private class FileLocatable extends File, Locatable { - override Location getLocation() { result = File.super.getLocation() } - - override string toString() { result = File.super.toString() } -} diff --git a/javascript/ql/lib/semmle/javascript/Regexp.qll b/javascript/ql/lib/semmle/javascript/Regexp.qll index 3266f1527a27..3c190af44764 100644 --- a/javascript/ql/lib/semmle/javascript/Regexp.qll +++ b/javascript/ql/lib/semmle/javascript/Regexp.qll @@ -43,8 +43,6 @@ class RegExpParent extends Locatable, @regexpparent { } * ``` */ class RegExpTerm extends Locatable, @regexpterm { - override Location getLocation() { hasLocation(this, result) } - /** Gets the `i`th child term of this term. */ RegExpTerm getChild(int i) { regexpterm(result, _, this, i, _) } diff --git a/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll b/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll index 47ee41a42357..05bcd8b3dddc 100644 --- a/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll +++ b/javascript/ql/lib/semmle/javascript/RestrictedLocations.qll @@ -26,7 +26,7 @@ class FirstLineOf extends Locatable { then endcolumn = xc else endcolumn = - max(int c | any(Location l).hasLocationInfo(filepath, startline, _, startline, c)) + max(int c | any(DbLocation l).hasLocationInfo(filepath, startline, _, startline, c)) ) } } diff --git a/javascript/ql/lib/semmle/javascript/Tokens.qll b/javascript/ql/lib/semmle/javascript/Tokens.qll index 52659f444c4a..c6a9b05a3d1a 100644 --- a/javascript/ql/lib/semmle/javascript/Tokens.qll +++ b/javascript/ql/lib/semmle/javascript/Tokens.qll @@ -17,8 +17,6 @@ import javascript * ``` */ class Token extends Locatable, @token { - override Location getLocation() { hasLocation(this, result) } - /** Gets the toplevel syntactic structure to which this token belongs. */ TopLevel getTopLevel() { tokeninfo(this, _, result, _, _) } diff --git a/javascript/ql/lib/semmle/javascript/Variables.qll b/javascript/ql/lib/semmle/javascript/Variables.qll index 00b463f8a9bb..1eeb735124b5 100644 --- a/javascript/ql/lib/semmle/javascript/Variables.qll +++ b/javascript/ql/lib/semmle/javascript/Variables.qll @@ -329,9 +329,9 @@ class LocalVariable extends Variable { * If the variable has one or more declarations, the location of the first declaration is used. * If the variable has no declaration, the entry point of its declaring container is used. */ - Location getLocation() { + DbLocation getLocation() { result = - min(Location loc | + min(DbLocation loc | loc = this.getADeclaration().getLocation() | loc order by loc.getStartLine(), loc.getStartColumn() diff --git a/javascript/ql/lib/semmle/javascript/XML.qll b/javascript/ql/lib/semmle/javascript/XML.qll index 65bdd7b7cc16..1a27c9a1ef3a 100644 --- a/javascript/ql/lib/semmle/javascript/XML.qll +++ b/javascript/ql/lib/semmle/javascript/XML.qll @@ -3,6 +3,7 @@ */ import semmle.files.FileSystem +private import semmle.javascript.internal.Locations private class TXmlLocatable = @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; @@ -10,7 +11,7 @@ private class TXmlLocatable = /** An XML element that has a location. */ class XmlLocatable extends @xmllocatable, TXmlLocatable { /** Gets the source location for this element. */ - Location getLocation() { xmllocations(this, result) } + DbLocation getLocation() { result = getLocatableLocation(this) } /** * Holds if this element is at the specified location. @@ -22,10 +23,7 @@ class XmlLocatable extends @xmllocatable, TXmlLocatable { predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - exists(File f, Location l | l = this.getLocation() | - locations_default(l, f, startline, startcolumn, endline, endcolumn) and - filepath = f.getAbsolutePath() - ) + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) } /** Gets a textual representation of this element. */ diff --git a/javascript/ql/lib/semmle/javascript/YAML.qll b/javascript/ql/lib/semmle/javascript/YAML.qll index 38bca7779002..1ab562b9524d 100644 --- a/javascript/ql/lib/semmle/javascript/YAML.qll +++ b/javascript/ql/lib/semmle/javascript/YAML.qll @@ -9,9 +9,9 @@ import javascript private import codeql.yaml.Yaml as LibYaml private module YamlSig implements LibYaml::InputSig { - class LocatableBase extends @yaml_locatable, Locatable { - override Location getLocation() { yaml_locations(this, result) } - } + class Location = DbLocation; + + class LocatableBase extends @yaml_locatable, Locatable { } import javascript @@ -52,8 +52,6 @@ import LibYaml::Make<YamlSig> private class MyYmlNode extends Locatable instanceof YamlNode { override string getAPrimaryQlClass() { result = YamlNode.super.getAPrimaryQlClass() } - override Location getLocation() { result = YamlNode.super.getLocation() } - override string toString() { result = YamlNode.super.toString() } } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index c098c60816e4..6d091a720af5 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -152,6 +152,14 @@ module DataFlow { none() } + /** Gets the location of this node. */ + Location getLocation() { + exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | + this.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + result.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + ) + } + /** Gets the file this data flow node comes from. */ File getFile() { none() } // overridden in subclasses diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll b/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll index 097003c5ab8f..a7286c7a1999 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Templating.qll @@ -36,8 +36,6 @@ module Templating { /** A placeholder tag for a templating engine. */ class TemplatePlaceholderTag extends @template_placeholder_tag, Locatable { - override Location getLocation() { hasLocation(this, result) } - override string toString() { template_placeholder_tag_info(this, _, result) } /** Gets the full text of the template tag, including delimiters. */ @@ -107,7 +105,12 @@ module Templating { * Gets the innermost JavaScript expression containing this template tag, if any. */ pragma[nomagic] - Expr getEnclosingExpr() { expr_contains_template_tag_location(result, this.getLocation()) } + Expr getEnclosingExpr() { + exists(@location loc | + hasLocation(this, loc) and + expr_contains_template_tag_location(result, loc) + ) + } } /** diff --git a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll index 459b83f2b996..09d52e89ee04 100644 --- a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll +++ b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll @@ -138,6 +138,8 @@ module Stages { or any(DataFlow::Node node).hasLocationInfo(_, _, _, _, _) or + exists(any(DataFlow::Node node).getLocation()) + or exists(any(DataFlow::Node node).toString()) or exists(any(AccessPath a).getAnInstanceIn(_)) diff --git a/javascript/ql/lib/semmle/javascript/internal/Locations.qll b/javascript/ql/lib/semmle/javascript/internal/Locations.qll new file mode 100644 index 000000000000..4a21f4a6b980 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/internal/Locations.qll @@ -0,0 +1,171 @@ +/** Provides classes for working with locations and program elements that have locations. */ + +import javascript + +// Should _not_ be cached, as that would require the data flow stage to be evaluated +// in order to evaluate the AST stage. Ideally, we would cache each injector separately, +// but that's not possible. Instead, we cache all predicates that need the injectors +// to be tuple numbered. +newtype TLocation = + TDbLocation(@location loc) or + TSynthLocation(string filepath, int startline, int startcolumn, int endline, int endcolumn) { + any(DataFlow::Node n).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + // avoid overlap with existing DB locations + not exists(File f | + locations_default(_, f, startline, startcolumn, endline, endcolumn) and + f.getAbsolutePath() = filepath + ) + } + +/** + * A location as given by a file, a start line, a start column, + * an end line, and an end column. + * + * For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +abstract class LocationImpl extends TLocation { + /** Gets the file for this location. */ + abstract File getFile(); + + /** Gets the 1-based line number (inclusive) where this location starts. */ + abstract int getStartLine(); + + /** Gets the 1-based column number (inclusive) where this location starts. */ + abstract int getStartColumn(); + + /** Gets the 1-based line number (inclusive) where this location ends. */ + abstract int getEndLine(); + + /** Gets the 1-based column number (inclusive) where this location ends. */ + abstract int getEndColumn(); + + /** Gets the number of lines covered by this location. */ + int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } + + /** Holds if this location starts before location `that`. */ + pragma[inline] + predicate startsBefore(Location that) { + exists(string f, int sl1, int sc1, int sl2, int sc2 | + this.hasLocationInfo(f, sl1, sc1, _, _) and + that.hasLocationInfo(f, sl2, sc2, _, _) + | + sl1 < sl2 + or + sl1 = sl2 and sc1 < sc2 + ) + } + + /** Holds if this location ends after location `that`. */ + pragma[inline] + predicate endsAfter(Location that) { + exists(string f, int el1, int ec1, int el2, int ec2 | + this.hasLocationInfo(f, _, _, el1, ec1) and + that.hasLocationInfo(f, _, _, el2, ec2) + | + el1 > el2 + or + el1 = el2 and ec1 > ec2 + ) + } + + /** + * Holds if this location contains location `that`, meaning that it starts + * before and ends after it. + */ + predicate contains(Location that) { this.startsBefore(that) and this.endsAfter(that) } + + /** Holds if this location is empty. */ + predicate isEmpty() { exists(int l, int c | this.hasLocationInfo(_, l, c, l, c - 1)) } + + /** Gets a textual representation of this element. */ + string toString() { result = this.getFile().getBaseName() + ":" + this.getStartLine().toString() } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + abstract predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ); +} + +class DbLocationImpl extends LocationImpl instanceof DbLocation { + override File getFile() { result = DbLocation.super.getFile() } + + override int getStartLine() { result = DbLocation.super.getStartLine() } + + override int getStartColumn() { result = DbLocation.super.getStartColumn() } + + override int getEndLine() { result = DbLocation.super.getEndLine() } + + override int getEndColumn() { result = DbLocation.super.getEndColumn() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + DbLocation.super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +class SynthLocationImpl extends LocationImpl, TSynthLocation { + override File getFile() { synthLocationInfo(this, result.getAbsolutePath(), _, _, _, _) } + + override int getStartLine() { synthLocationInfo(this, _, result, _, _, _) } + + override int getStartColumn() { synthLocationInfo(this, _, _, result, _, _) } + + override int getEndLine() { synthLocationInfo(this, _, _, _, result, _) } + + override int getEndColumn() { synthLocationInfo(this, _, _, _, _, result) } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + synthLocationInfo(this, filepath, startline, startcolumn, endline, endcolumn) + } +} + +cached +private module Cached { + cached + DbLocation getLocatableLocation(@locatable l) { + exists(@location loc | + hasLocation(l, loc) or + xmllocations(l, loc) or + json_locations(l, loc) or + yaml_locations(l, loc) + | + result = TDbLocation(loc) + ) + } + + cached + predicate dbLocationInfo( + DbLocation l, File f, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(@location loc | + l = TDbLocation(loc) and + locations_default(loc, f, startline, startcolumn, endline, endcolumn) + ) + } +} + +import Cached + +cached +private module CachedInDataFlowStage { + private import semmle.javascript.internal.CachedStages + + cached + predicate synthLocationInfo( + SynthLocationImpl l, string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + Stages::DataFlowStage::ref() and + l = TSynthLocation(filepath, startline, startcolumn, endline, endcolumn) + } +} + +private import CachedInDataFlowStage diff --git a/javascript/ql/test/testUtilities/internal/InlineExpectationsTestImpl.qll b/javascript/ql/test/testUtilities/internal/InlineExpectationsTestImpl.qll index d1de2866b105..9e92f70af69f 100644 --- a/javascript/ql/test/testUtilities/internal/InlineExpectationsTestImpl.qll +++ b/javascript/ql/test/testUtilities/internal/InlineExpectationsTestImpl.qll @@ -4,8 +4,13 @@ private import codeql.util.test.InlineExpectationsTest module Impl implements InlineExpectationsTestSig { private import javascript - class ExpectationComment extends LineComment { + final private class LineCommentFinal = LineComment; + + class ExpectationComment extends LineCommentFinal { string getContents() { result = this.getText() } + + /** Gets this element's location. */ + Location getLocation() { result = super.getLocation() } } class Location = JS::Location; From 8d5eab401d2ed411380f0c28d252b5c5333c57e5 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Wed, 13 Mar 2024 13:28:27 +0100 Subject: [PATCH 165/731] C++: Introduce re-use expressions in the database scheme --- .../exprs.ql | 13 + .../old.dbscheme | 2250 +++++ .../semmlecode.cpp.dbscheme | 2244 +++++ .../upgrade.properties | 4 + cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll | 20 + cpp/ql/lib/semmlecode.cpp.dbscheme | 6 + cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 8344 +++++++++-------- .../old.dbscheme | 2244 +++++ .../semmlecode.cpp.dbscheme | 2250 +++++ .../upgrade.properties | 2 + 10 files changed, 13266 insertions(+), 4111 deletions(-) create mode 100644 cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/exprs.ql create mode 100644 cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme create mode 100644 cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme create mode 100644 cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties create mode 100644 cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/upgrade.properties diff --git a/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/exprs.ql b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/exprs.ql new file mode 100644 index 000000000000..366c074e5dab --- /dev/null +++ b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/exprs.ql @@ -0,0 +1,13 @@ +class Expr extends @expr { + string toString() { none() } +} + +class Location extends @location_expr { + string toString() { none() } +} + +from Expr expr, int kind, int kind_new, Location loc +where + exprs(expr, kind, loc) and + if kind = 363 then kind_new = 1 else kind_new = kind +select expr, kind_new, loc diff --git a/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme new file mode 100644 index 000000000000..aa7ff0ab32cd --- /dev/null +++ b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme @@ -0,0 +1,2250 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..298438feb146 --- /dev/null +++ b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme @@ -0,0 +1,2244 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties new file mode 100644 index 000000000000..b2f465d1ba5d --- /dev/null +++ b/cpp/downgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties @@ -0,0 +1,4 @@ +description: Introduce re-use expressions +compatibility: partial +expr_reuse.rel: delete +exprs.rel: run exprs.qlo diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index b87805d19671..42e441668f28 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -1322,3 +1322,23 @@ class CoYieldExpr extends UnaryOperation, @co_yield { override int getPrecedence() { result = 2 } } + +/** + * An expression representing the re-use of another expression. + * + * In some specific cases an expression may be referred to outside its + * original context. A re-use expression wraps any such reference. A + * re-use expression can for example occur as the qualifier of an implicit + * destructor called on a temporary object, where the original use of the + * expression is in the definition of the temporary. + */ +class ReuseExpr extends Expr, @reuseexpr { + override string getAPrimaryQlClass() { result = "ReuseExpr" } + + override string toString() { result = "reuse of " + this.getReusedExpr().toString() } + + /** + * Gets the expression that is being re-used. + */ + Expr getReusedExpr() { expr_reuse(underlyingElement(this), unresolveElement(result)) } +} diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 298438feb146..aa7ff0ab32cd 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1513,6 +1513,11 @@ exprs( int location: @location_expr ref ); +expr_reuse( + int reuse: @expr ref, + int original: @expr ref +) + /* case @value.category of 1 = prval @@ -1741,6 +1746,7 @@ case @expr.kind of | 360 = @isunsigned | 361 = @isvoid | 362 = @isvolatile +| 363 = @reuseexpr ; @var_args_expr = @vastartexpr diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 0ac63edd1ab5..8d4a841aaf8a 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ <typesizes> <e> <k>@compilation</k> - <v>9695</v> + <v>9657</v> </e> <e> <k>@externalDataElement</k> @@ -18,71 +18,71 @@ </e> <e> <k>@location_default</k> - <v>29753112</v> + <v>29786456</v> </e> <e> <k>@location_stmt</k> - <v>3814280</v> + <v>3820105</v> + </e> + <e> + <k>@location_expr</k> + <v>13188716</v> </e> <e> <k>@diagnostic</k> - <v>5192</v> + <v>5013</v> </e> <e> <k>@file</k> - <v>122996</v> + <v>123134</v> </e> <e> <k>@folder</k> - <v>15374</v> - </e> - <e> - <k>@location_expr</k> - <v>13168606</v> + <v>16324</v> </e> <e> <k>@macro_expansion</k> - <v>33099938</v> + <v>32971750</v> </e> <e> <k>@other_macro_reference</k> - <v>857250</v> + <v>858211</v> </e> <e> <k>@function</k> - <v>4640799</v> + <v>4646000</v> </e> <e> <k>@fun_decl</k> - <v>5004199</v> + <v>5009807</v> </e> <e> <k>@var_decl</k> - <v>8413633</v> + <v>8423062</v> </e> <e> <k>@type_decl</k> - <v>3238449</v> + <v>3242079</v> </e> <e> <k>@namespace_decl</k> - <v>311526</v> + <v>311530</v> </e> <e> <k>@using</k> - <v>368990</v> + <v>369403</v> </e> <e> <k>@static_assert</k> - <v>134653</v> + <v>134655</v> </e> <e> <k>@parameter</k> - <v>6568681</v> + <v>6576042</v> </e> <e> <k>@membervariable</k> - <v>1053150</v> + <v>1054758</v> </e> <e> <k>@globalvariable</k> @@ -90,259 +90,259 @@ </e> <e> <k>@localvariable</k> - <v>577491</v> + <v>576906</v> </e> <e> <k>@enumconstant</k> - <v>241316</v> + <v>241684</v> </e> <e> <k>@errortype</k> - <v>465</v> + <v>466</v> </e> <e> <k>@unknowntype</k> - <v>465</v> + <v>466</v> </e> <e> <k>@void</k> - <v>465</v> + <v>466</v> </e> <e> <k>@boolean</k> - <v>465</v> + <v>466</v> </e> <e> <k>@char</k> - <v>465</v> + <v>466</v> </e> <e> <k>@unsigned_char</k> - <v>465</v> + <v>466</v> </e> <e> <k>@signed_char</k> - <v>465</v> + <v>466</v> </e> <e> <k>@short</k> - <v>465</v> + <v>466</v> </e> <e> <k>@unsigned_short</k> - <v>465</v> + <v>466</v> </e> <e> <k>@signed_short</k> - <v>465</v> + <v>466</v> </e> <e> <k>@int</k> - <v>465</v> + <v>466</v> </e> <e> <k>@unsigned_int</k> - <v>465</v> + <v>466</v> </e> <e> <k>@signed_int</k> - <v>465</v> + <v>466</v> </e> <e> <k>@long</k> - <v>465</v> + <v>466</v> </e> <e> <k>@unsigned_long</k> - <v>465</v> + <v>466</v> </e> <e> <k>@signed_long</k> - <v>465</v> + <v>466</v> </e> <e> <k>@long_long</k> - <v>465</v> + <v>466</v> </e> <e> <k>@unsigned_long_long</k> - <v>465</v> + <v>466</v> </e> <e> <k>@signed_long_long</k> - <v>465</v> + <v>466</v> </e> <e> <k>@float</k> - <v>465</v> + <v>466</v> </e> <e> <k>@double</k> - <v>465</v> + <v>466</v> </e> <e> <k>@long_double</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_float</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_double</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_long_double</k> - <v>465</v> + <v>466</v> </e> <e> <k>@imaginary_float</k> - <v>465</v> + <v>466</v> </e> <e> <k>@imaginary_double</k> - <v>465</v> + <v>466</v> </e> <e> <k>@imaginary_long_double</k> - <v>465</v> + <v>466</v> </e> <e> <k>@wchar_t</k> - <v>465</v> + <v>466</v> </e> <e> <k>@decltype_nullptr</k> - <v>465</v> + <v>466</v> </e> <e> <k>@int128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@unsigned_int128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@signed_int128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@float128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_float128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@decimal32</k> - <v>465</v> + <v>466</v> </e> <e> <k>@decimal64</k> - <v>465</v> + <v>466</v> </e> <e> <k>@decimal128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@char16_t</k> - <v>465</v> + <v>466</v> </e> <e> <k>@char32_t</k> - <v>465</v> + <v>466</v> </e> <e> <k>@std_float32</k> - <v>465</v> + <v>466</v> </e> <e> <k>@float32x</k> - <v>465</v> + <v>466</v> </e> <e> <k>@std_float64</k> - <v>465</v> + <v>466</v> </e> <e> <k>@float64x</k> - <v>465</v> + <v>466</v> </e> <e> <k>@std_float128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@char8_t</k> - <v>465</v> + <v>466</v> </e> <e> <k>@float16</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_float16</k> - <v>465</v> + <v>466</v> </e> <e> <k>@fp16</k> - <v>465</v> + <v>466</v> </e> <e> <k>@std_bfloat16</k> - <v>465</v> + <v>466</v> </e> <e> <k>@std_float16</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_std_float32</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_float32x</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_std_float64</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_float64x</k> - <v>465</v> + <v>466</v> </e> <e> <k>@complex_std_float128</k> - <v>465</v> + <v>466</v> </e> <e> <k>@pointer</k> - <v>566996</v> + <v>567632</v> </e> <e> <k>@type_with_specifiers</k> - <v>1010530</v> + <v>1010263</v> </e> <e> <k>@array</k> - <v>109951</v> + <v>110074</v> </e> <e> <k>@routineptr</k> - <v>633361</v> + <v>624659</v> </e> <e> <k>@reference</k> - <v>1727994</v> + <v>1721148</v> </e> <e> <k>@gnu_vector</k> - <v>696</v> + <v>693</v> </e> <e> <k>@routinereference</k> @@ -350,7 +350,7 @@ </e> <e> <k>@rvalue_reference</k> - <v>627137</v> + <v>620692</v> </e> <e> <k>@block</k> @@ -358,43 +358,43 @@ </e> <e> <k>@decltype</k> - <v>27022</v> + <v>27052</v> </e> <e> <k>@usertype</k> - <v>5224568</v> + <v>5229957</v> </e> <e> <k>@mangledname</k> - <v>6441025</v> + <v>6448244</v> </e> <e> <k>@type_mention</k> - <v>4023226</v> + <v>4029370</v> </e> <e> <k>@routinetype</k> - <v>545338</v> + <v>538161</v> </e> <e> <k>@ptrtomember</k> - <v>37737</v> + <v>37779</v> </e> <e> <k>@specifier</k> - <v>24692</v> + <v>24720</v> </e> <e> <k>@gnuattribute</k> - <v>684868</v> + <v>685636</v> </e> <e> <k>@stdattribute</k> - <v>491954</v> + <v>487895</v> </e> <e> <k>@declspec</k> - <v>243213</v> + <v>243123</v> </e> <e> <k>@msattribute</k> @@ -402,15 +402,15 @@ </e> <e> <k>@alignas</k> - <v>9783</v> + <v>9794</v> </e> <e> <k>@attribute_arg_token</k> - <v>39135</v> + <v>39179</v> </e> <e> <k>@attribute_arg_constant_expr</k> - <v>369922</v> + <v>370336</v> </e> <e> <k>@attribute_arg_empty</k> @@ -422,7 +422,7 @@ </e> <e> <k>@attribute_arg_type</k> - <v>465</v> + <v>466</v> </e> <e> <k>@attribute_arg_expr</k> @@ -430,35 +430,35 @@ </e> <e> <k>@derivation</k> - <v>395209</v> + <v>391086</v> </e> <e> <k>@frienddecl</k> - <v>713754</v> + <v>706182</v> </e> <e> <k>@comment</k> - <v>8751514</v> + <v>8686670</v> </e> <e> <k>@namespace</k> - <v>12113</v> + <v>12126</v> </e> <e> <k>@specialnamequalifyingelement</k> - <v>465</v> + <v>466</v> </e> <e> <k>@namequalifier</k> - <v>1570954</v> + <v>1516804</v> </e> <e> <k>@value</k> - <v>10760930</v> + <v>10777325</v> </e> <e> <k>@initialiser</k> - <v>1710236</v> + <v>1710241</v> </e> <e> <k>@address_of</k> @@ -466,15 +466,15 @@ </e> <e> <k>@indirect</k> - <v>292216</v> + <v>292663</v> </e> <e> <k>@array_to_pointer</k> - <v>1428793</v> + <v>1430922</v> </e> <e> <k>@parexpr</k> - <v>3582350</v> + <v>3587688</v> </e> <e> <k>@arithnegexpr</k> @@ -482,115 +482,115 @@ </e> <e> <k>@unaryplusexpr</k> - <v>2912</v> + <v>2916</v> </e> <e> <k>@complementexpr</k> - <v>27796</v> + <v>27839</v> </e> <e> <k>@notexpr</k> - <v>276021</v> + <v>276441</v> </e> <e> <k>@postincrexpr</k> - <v>61954</v> + <v>62049</v> </e> <e> <k>@postdecrexpr</k> - <v>41975</v> + <v>42038</v> </e> <e> <k>@preincrexpr</k> - <v>70470</v> + <v>70577</v> </e> <e> <k>@predecrexpr</k> - <v>26169</v> + <v>26209</v> </e> <e> <k>@conditionalexpr</k> - <v>656298</v> + <v>657276</v> </e> <e> <k>@addexpr</k> - <v>397812</v> + <v>398417</v> </e> <e> <k>@subexpr</k> - <v>340271</v> + <v>340778</v> </e> <e> <k>@mulexpr</k> - <v>305908</v> + <v>306374</v> </e> <e> <k>@divexpr</k> - <v>132972</v> + <v>133174</v> </e> <e> <k>@remexpr</k> - <v>15790</v> + <v>15622</v> </e> <e> <k>@paddexpr</k> - <v>86535</v> + <v>86667</v> </e> <e> <k>@psubexpr</k> - <v>49827</v> + <v>49903</v> </e> <e> <k>@pdiffexpr</k> - <v>35355</v> + <v>35197</v> </e> <e> <k>@lshiftexpr</k> - <v>565475</v> + <v>566336</v> </e> <e> <k>@rshiftexpr</k> - <v>140634</v> + <v>140848</v> </e> <e> <k>@andexpr</k> - <v>488341</v> + <v>489084</v> </e> <e> <k>@orexpr</k> - <v>145252</v> + <v>145473</v> </e> <e> <k>@xorexpr</k> - <v>54095</v> + <v>54178</v> </e> <e> <k>@eqexpr</k> - <v>469960</v> + <v>470677</v> </e> <e> <k>@neexpr</k> - <v>301236</v> + <v>301684</v> </e> <e> <k>@gtexpr</k> - <v>103895</v> + <v>104011</v> </e> <e> <k>@ltexpr</k> - <v>101565</v> + <v>101679</v> </e> <e> <k>@geexpr</k> - <v>59162</v> + <v>59252</v> </e> <e> <k>@leexpr</k> - <v>212214</v> + <v>212539</v> </e> <e> <k>@assignexpr</k> - <v>935582</v> + <v>937011</v> </e> <e> <k>@assignaddexpr</k> @@ -598,23 +598,23 @@ </e> <e> <k>@assignsubexpr</k> - <v>11183</v> + <v>11200</v> </e> <e> <k>@assignmulexpr</k> - <v>8246</v> + <v>8214</v> </e> <e> <k>@assigndivexpr</k> - <v>4986</v> + <v>4994</v> </e> <e> <k>@assignremexpr</k> - <v>417</v> + <v>414</v> </e> <e> <k>@assignlshiftexpr</k> - <v>2712</v> + <v>2716</v> </e> <e> <k>@assignrshiftexpr</k> @@ -622,43 +622,43 @@ </e> <e> <k>@assignandexpr</k> - <v>4819</v> + <v>4826</v> </e> <e> <k>@assignorexpr</k> - <v>23678</v> + <v>23654</v> </e> <e> <k>@assignxorexpr</k> - <v>21812</v> + <v>21845</v> </e> <e> <k>@assignpaddexpr</k> - <v>13608</v> + <v>13629</v> </e> <e> <k>@assignpsubexpr</k> - <v>1151</v> + <v>1152</v> </e> <e> <k>@andlogicalexpr</k> - <v>249586</v> + <v>249967</v> </e> <e> <k>@orlogicalexpr</k> - <v>864846</v> + <v>866161</v> </e> <e> <k>@commaexpr</k> - <v>123692</v> + <v>122776</v> </e> <e> <k>@subscriptexpr</k> - <v>365254</v> + <v>364887</v> </e> <e> <k>@callexpr</k> - <v>301901</v> + <v>316232</v> </e> <e> <k>@vastartexpr</k> @@ -666,51 +666,51 @@ </e> <e> <k>@vaargexpr</k> - <v>950</v> + <v>952</v> </e> <e> <k>@vaendexpr</k> - <v>2795</v> + <v>2798</v> </e> <e> <k>@vacopyexpr</k> - <v>140</v> + <v>139</v> </e> <e> <k>@varaccess</k> - <v>6020283</v> + <v>6029477</v> </e> <e> <k>@runtime_sizeof</k> - <v>295403</v> + <v>295853</v> </e> <e> <k>@runtime_alignof</k> - <v>49726</v> + <v>49198</v> </e> <e> <k>@expr_stmt</k> - <v>94249</v> + <v>94392</v> </e> <e> <k>@routineexpr</k> - <v>2925479</v> + <v>3151079</v> </e> <e> <k>@type_operand</k> - <v>1127108</v> + <v>1128821</v> </e> <e> <k>@offsetofexpr</k> - <v>19963</v> + <v>19994</v> </e> <e> <k>@typescompexpr</k> - <v>562954</v> + <v>563810</v> </e> <e> <k>@literal</k> - <v>4406828</v> + <v>4406917</v> </e> <e> <k>@aggregateliteral</k> @@ -718,31 +718,31 @@ </e> <e> <k>@c_style_cast</k> - <v>4210119</v> + <v>4210103</v> </e> <e> <k>@temp_init</k> - <v>825128</v> + <v>796653</v> </e> <e> <k>@errorexpr</k> - <v>46737</v> + <v>46241</v> </e> <e> <k>@reference_to</k> - <v>1587202</v> + <v>1570260</v> </e> <e> <k>@ref_indirect</k> - <v>1932263</v> + <v>1906893</v> </e> <e> <k>@vacuous_destructor_call</k> - <v>8123</v> + <v>8037</v> </e> <e> <k>@assume</k> - <v>3230</v> + <v>3231</v> </e> <e> <k>@conjugation</k> @@ -794,35 +794,35 @@ </e> <e> <k>@thisaccess</k> - <v>1117234</v> + <v>1117586</v> </e> <e> <k>@new_expr</k> - <v>47510</v> + <v>47006</v> </e> <e> <k>@delete_expr</k> - <v>11710</v> + <v>11621</v> </e> <e> <k>@throw_expr</k> - <v>21143</v> + <v>21061</v> </e> <e> <k>@condition_decl</k> - <v>42306</v> + <v>40853</v> </e> <e> <k>@braced_init_list</k> - <v>1105</v> + <v>1067</v> </e> <e> <k>@type_id</k> - <v>36362</v> + <v>35977</v> </e> <e> <k>@sizeof_pack</k> - <v>5590</v> + <v>5597</v> </e> <e> <k>@hasassignexpr</k> @@ -878,19 +878,19 @@ </e> <e> <k>@isconvtoexpr</k> - <v>208</v> + <v>207</v> </e> <e> <k>@isemptyexpr</k> - <v>1477</v> + <v>1461</v> </e> <e> <k>@isenumexpr</k> - <v>521</v> + <v>517</v> </e> <e> <k>@ispodexpr</k> - <v>617</v> + <v>615</v> </e> <e> <k>@ispolyexpr</k> @@ -906,7 +906,7 @@ </e> <e> <k>@hastrivialdestructor</k> - <v>465</v> + <v>466</v> </e> <e> <k>@uuidof</k> @@ -914,7 +914,7 @@ </e> <e> <k>@delete_array_expr</k> - <v>1370</v> + <v>1365</v> </e> <e> <k>@new_array_expr</k> @@ -926,55 +926,55 @@ </e> <e> <k>@ctordirectinit</k> - <v>112605</v> + <v>111410</v> </e> <e> <k>@ctorvirtualinit</k> - <v>6347</v> + <v>6322</v> </e> <e> <k>@ctorfieldinit</k> - <v>200453</v> + <v>198326</v> </e> <e> <k>@ctordelegatinginit</k> - <v>3340</v> + <v>3305</v> </e> <e> <k>@dtordirectdestruct</k> - <v>41638</v> + <v>41231</v> </e> <e> <k>@dtorvirtualdestruct</k> - <v>4114</v> + <v>4070</v> </e> <e> <k>@dtorfielddestruct</k> - <v>41567</v> + <v>41126</v> </e> <e> <k>@static_cast</k> - <v>215292</v> + <v>214451</v> </e> <e> <k>@reinterpret_cast</k> - <v>30975</v> + <v>30745</v> </e> <e> <k>@const_cast</k> - <v>35251</v> + <v>34990</v> </e> <e> <k>@dynamic_cast</k> - <v>1011</v> + <v>1007</v> </e> <e> <k>@lambdaexpr</k> - <v>21431</v> + <v>21455</v> </e> <e> <k>@param_ref</k> - <v>244956</v> + <v>236428</v> </e> <e> <k>@noopexpr</k> @@ -982,7 +982,7 @@ </e> <e> <k>@istriviallyconstructibleexpr</k> - <v>1355</v> + <v>1345</v> </e> <e> <k>@isdestructibleexpr</k> @@ -994,7 +994,7 @@ </e> <e> <k>@istriviallydestructibleexpr</k> - <v>834</v> + <v>828</v> </e> <e> <k>@istriviallyassignableexpr</k> @@ -1002,11 +1002,11 @@ </e> <e> <k>@isnothrowassignableexpr</k> - <v>4171</v> + <v>4140</v> </e> <e> <k>@istrivialexpr</k> - <v>931</v> + <v>932</v> </e> <e> <k>@isstandardlayoutexpr</k> @@ -1014,7 +1014,7 @@ </e> <e> <k>@istriviallycopyableexpr</k> - <v>3727</v> + <v>3731</v> </e> <e> <k>@isliteraltypeexpr</k> @@ -1034,11 +1034,11 @@ </e> <e> <k>@isconstructibleexpr</k> - <v>465</v> + <v>466</v> </e> <e> <k>@isnothrowconstructibleexpr</k> - <v>14392</v> + <v>14285</v> </e> <e> <k>@hasfinalizerexpr</k> @@ -1074,11 +1074,11 @@ </e> <e> <k>@isfinalexpr</k> - <v>1688</v> + <v>1670</v> </e> <e> <k>@noexceptexpr</k> - <v>25664</v> + <v>24725</v> </e> <e> <k>@builtinshufflevector</k> @@ -1086,11 +1086,11 @@ </e> <e> <k>@builtinchooseexpr</k> - <v>9051</v> + <v>9065</v> </e> <e> <k>@builtinaddressof</k> - <v>13258</v> + <v>13117</v> </e> <e> <k>@vec_fill</k> @@ -1134,7 +1134,7 @@ </e> <e> <k>@builtinshuffle</k> - <v>1909</v> + <v>1902</v> </e> <e> <k>@blockassignexpr</k> @@ -1248,77 +1248,81 @@ <k>@isvolatile</k> <v>2</v> </e> + <e> + <k>@reuseexpr</k> + <v>331632</v> + </e> <e> <k>@lambdacapture</k> - <v>27953</v> + <v>27985</v> </e> <e> <k>@stmt_expr</k> - <v>1483845</v> + <v>1486111</v> </e> <e> <k>@stmt_if</k> - <v>724849</v> + <v>725956</v> </e> <e> <k>@stmt_while</k> - <v>29345</v> + <v>29152</v> </e> <e> <k>@stmt_goto</k> - <v>110529</v> + <v>110697</v> </e> <e> <k>@stmt_label</k> - <v>53064</v> + <v>53145</v> </e> <e> <k>@stmt_return</k> - <v>1283546</v> + <v>1284984</v> </e> <e> <k>@stmt_block</k> - <v>1422383</v> + <v>1423977</v> </e> <e> <k>@stmt_end_test_while</k> - <v>148655</v> + <v>148882</v> </e> <e> <k>@stmt_for</k> - <v>61466</v> + <v>61560</v> </e> <e> <k>@stmt_switch_case</k> - <v>209046</v> + <v>201865</v> </e> <e> <k>@stmt_switch</k> - <v>20756</v> + <v>20788</v> </e> <e> <k>@stmt_asm</k> - <v>109821</v> + <v>109989</v> </e> <e> <k>@stmt_decl</k> - <v>591603</v> + <v>589211</v> </e> <e> <k>@stmt_empty</k> - <v>192088</v> + <v>191899</v> </e> <e> <k>@stmt_continue</k> - <v>22529</v> + <v>22563</v> </e> <e> <k>@stmt_break</k> - <v>103194</v> + <v>103183</v> </e> <e> <k>@stmt_try_block</k> - <v>46788</v> + <v>45181</v> </e> <e> <k>@stmt_microsoft_try</k> @@ -1334,19 +1338,19 @@ </e> <e> <k>@stmt_assigned_goto</k> - <v>9062</v> + <v>9076</v> </e> <e> <k>@stmt_range_based_for</k> - <v>8386</v> + <v>8395</v> </e> <e> <k>@stmt_handler</k> - <v>65128</v> + <v>62891</v> </e> <e> <k>@stmt_constexpr_if</k> - <v>52355</v> + <v>52071</v> </e> <e> <k>@stmt_co_return</k> @@ -1354,55 +1358,55 @@ </e> <e> <k>@ppd_if</k> - <v>665766</v> + <v>666512</v> </e> <e> <k>@ppd_ifdef</k> - <v>262765</v> + <v>263060</v> </e> <e> <k>@ppd_ifndef</k> - <v>266027</v> + <v>266325</v> </e> <e> <k>@ppd_elif</k> - <v>25158</v> + <v>25186</v> </e> <e> <k>@ppd_else</k> - <v>208721</v> + <v>208955</v> </e> <e> <k>@ppd_endif</k> - <v>1194559</v> + <v>1195898</v> </e> <e> <k>@ppd_plain_include</k> - <v>310753</v> + <v>311101</v> </e> <e> <k>@ppd_define</k> - <v>2426503</v> + <v>2408524</v> </e> <e> <k>@ppd_undef</k> - <v>258106</v> + <v>258396</v> </e> <e> <k>@ppd_include_next</k> - <v>1863</v> + <v>1865</v> </e> <e> <k>@ppd_line</k> - <v>27580</v> + <v>27551</v> </e> <e> <k>@ppd_error</k> - <v>104</v> + <v>103</v> </e> <e> <k>@ppd_pragma</k> - <v>314133</v> + <v>311805</v> </e> <e> <k>@ppd_objc_import</k> @@ -1414,7 +1418,7 @@ </e> <e> <k>@link_target</k> - <v>848</v> + <v>819</v> </e> <e> <k>@xmldtd</k> @@ -1444,11 +1448,11 @@ <stats> <relation> <name>compilations</name> - <cardinality>9695</cardinality> + <cardinality>9657</cardinality> <columnsizes> <e> <k>id</k> - <v>9695</v> + <v>9657</v> </e> <e> <k>cwd</k> @@ -1466,7 +1470,7 @@ <b> <a>1</a> <b>2</b> - <v>9695</v> + <v>9657</v> </b> </bs> </hist> @@ -1492,19 +1496,19 @@ </relation> <relation> <name>compilation_args</name> - <cardinality>651597</cardinality> + <cardinality>652589</cardinality> <columnsizes> <e> <k>id</k> - <v>5506</v> + <v>5514</v> </e> <e> <k>num</k> - <v>708</v> + <v>709</v> </e> <e> <k>arg</k> - <v>34410</v> + <v>34463</v> </e> </columnsizes> <dependencies> @@ -1523,12 +1527,12 @@ <b> <a>71</a> <b>102</b> - <v>274</v> + <v>275</v> </b> <b> <a>126</a> <b>127</b> - <v>3862</v> + <v>3868</v> </b> <b> <a>127</a> @@ -1538,7 +1542,7 @@ <b> <a>131</a> <b>132</b> - <v>813</v> + <v>815</v> </b> <b> <a>134</a> @@ -1564,12 +1568,12 @@ <b> <a>57</a> <b>106</b> - <v>290</v> + <v>291</v> </b> <b> <a>106</a> <b>107</b> - <v>3825</v> + <v>3831</v> </b> <b> <a>107</a> @@ -1579,7 +1583,7 @@ <b> <a>109</a> <b>110</b> - <v>813</v> + <v>815</v> </b> <b> <a>111</a> @@ -1625,12 +1629,12 @@ <b> <a>970</a> <b>989</b> - <v>36</v> + <v>37</v> </b> <b> <a>999</a> <b>1000</b> - <v>73</v> + <v>74</v> </b> <b> <a>1001</a> @@ -1742,12 +1746,12 @@ <b> <a>1</a> <b>2</b> - <v>32350</v> + <v>32399</v> </b> <b> <a>2</a> <b>1043</b> - <v>2060</v> + <v>2063</v> </b> </bs> </hist> @@ -1763,12 +1767,12 @@ <b> <a>1</a> <b>2</b> - <v>33206</v> + <v>33256</v> </b> <b> <a>2</a> <b>56</b> - <v>1204</v> + <v>1206</v> </b> </bs> </hist> @@ -1778,19 +1782,19 @@ </relation> <relation> <name>compilation_compiling_files</name> - <cardinality>11529</cardinality> + <cardinality>11546</cardinality> <columnsizes> <e> <k>id</k> - <v>1994</v> + <v>1997</v> </e> <e> <k>num</k> - <v>3311</v> + <v>3316</v> </e> <e> <k>file</k> - <v>10013</v> + <v>10028</v> </e> </columnsizes> <dependencies> @@ -1804,7 +1808,7 @@ <b> <a>1</a> <b>2</b> - <v>997</v> + <v>998</v> </b> <b> <a>2</a> @@ -1855,7 +1859,7 @@ <b> <a>1</a> <b>2</b> - <v>997</v> + <v>998</v> </b> <b> <a>2</a> @@ -1906,12 +1910,12 @@ <b> <a>1</a> <b>2</b> - <v>1755</v> + <v>1757</v> </b> <b> <a>2</a> <b>3</b> - <v>718</v> + <v>719</v> </b> <b> <a>3</a> @@ -1942,12 +1946,12 @@ <b> <a>1</a> <b>2</b> - <v>1755</v> + <v>1757</v> </b> <b> <a>2</a> <b>3</b> - <v>718</v> + <v>719</v> </b> <b> <a>3</a> @@ -1978,12 +1982,12 @@ <b> <a>1</a> <b>2</b> - <v>9015</v> + <v>9029</v> </b> <b> <a>2</a> <b>4</b> - <v>837</v> + <v>839</v> </b> <b> <a>4</a> @@ -2004,12 +2008,12 @@ <b> <a>1</a> <b>2</b> - <v>9175</v> + <v>9189</v> </b> <b> <a>2</a> <b>4</b> - <v>797</v> + <v>799</v> </b> <b> <a>4</a> @@ -2024,15 +2028,15 @@ </relation> <relation> <name>compilation_time</name> - <cardinality>46116</cardinality> + <cardinality>46187</cardinality> <columnsizes> <e> <k>id</k> - <v>1994</v> + <v>1997</v> </e> <e> <k>num</k> - <v>3311</v> + <v>3316</v> </e> <e> <k>kind</k> @@ -2040,7 +2044,7 @@ </e> <e> <k>seconds</k> - <v>9933</v> + <v>9828</v> </e> </columnsizes> <dependencies> @@ -2054,7 +2058,7 @@ <b> <a>1</a> <b>2</b> - <v>997</v> + <v>998</v> </b> <b> <a>2</a> @@ -2105,7 +2109,7 @@ <b> <a>4</a> <b>5</b> - <v>1994</v> + <v>1997</v> </b> </bs> </hist> @@ -2121,51 +2125,46 @@ <b> <a>3</a> <b>4</b> - <v>359</v> + <v>719</v> </b> <b> <a>4</a> <b>5</b> - <v>638</v> + <v>279</v> </b> <b> - <a>6</a> + <a>5</a> <b>8</b> <v>159</v> </b> <b> - <a>8</a> + <a>9</a> <b>10</b> - <v>79</v> + <v>159</v> </b> <b> <a>10</a> - <b>11</b> - <v>119</v> - </b> - <b> - <a>11</a> - <b>13</b> + <b>12</b> <v>159</v> </b> <b> - <a>14</a> - <b>17</b> + <a>12</a> + <b>16</b> <v>119</v> </b> <b> - <a>17</a> - <b>19</b> - <v>119</v> + <a>16</a> + <b>18</b> + <v>159</v> </b> <b> - <a>20</a> - <b>41</b> + <a>19</a> + <b>43</b> <v>159</v> </b> <b> - <a>52</a> - <b>102</b> + <a>57</a> + <b>92</b> <v>79</v> </b> </bs> @@ -2182,12 +2181,12 @@ <b> <a>1</a> <b>2</b> - <v>1755</v> + <v>1757</v> </b> <b> <a>2</a> <b>3</b> - <v>718</v> + <v>719</v> </b> <b> <a>3</a> @@ -2218,7 +2217,7 @@ <b> <a>4</a> <b>5</b> - <v>3311</v> + <v>3316</v> </b> </bs> </hist> @@ -2234,12 +2233,12 @@ <b> <a>3</a> <b>4</b> - <v>837</v> + <v>1478</v> </b> <b> <a>4</a> <b>5</b> - <v>917</v> + <v>279</v> </b> <b> <a>5</a> @@ -2249,33 +2248,28 @@ <b> <a>6</a> <b>7</b> - <v>199</v> + <v>439</v> </b> <b> <a>7</a> <b>8</b> - <v>319</v> + <v>119</v> </b> <b> <a>8</a> <b>9</b> - <v>79</v> + <v>199</v> </b> <b> <a>9</a> - <b>11</b> + <b>23</b> <v>279</v> </b> <b> - <a>11</a> - <b>29</b> + <a>24</a> + <b>90</b> <v>279</v> </b> - <b> - <a>32</a> - <b>93</b> - <v>159</v> - </b> </bs> </hist> </val> @@ -2335,8 +2329,8 @@ <v>39</v> </b> <b> - <a>156</a> - <b>157</b> + <a>146</a> + <b>147</b> <v>39</v> </b> </bs> @@ -2353,27 +2347,27 @@ <b> <a>1</a> <b>2</b> - <v>4946</v> + <v>4834</v> </b> <b> <a>2</a> <b>3</b> - <v>2473</v> + <v>2557</v> </b> <b> <a>3</a> <b>4</b> - <v>1436</v> + <v>1238</v> </b> <b> <a>4</a> <b>5</b> - <v>757</v> + <v>719</v> </b> <b> <a>5</a> <b>46</b> - <v>319</v> + <v>479</v> </b> </bs> </hist> @@ -2389,32 +2383,32 @@ <b> <a>1</a> <b>2</b> - <v>4667</v> + <v>4474</v> </b> <b> <a>2</a> <b>3</b> - <v>1914</v> + <v>2197</v> </b> <b> <a>3</a> <b>4</b> - <v>1476</v> + <v>1318</v> </b> <b> <a>4</a> <b>5</b> - <v>997</v> + <v>679</v> </b> <b> <a>5</a> - <b>10</b> - <v>757</v> + <b>7</b> + <v>799</v> </b> <b> - <a>43</a> - <b>75</b> - <v>119</v> + <a>7</a> + <b>76</b> + <v>359</v> </b> </bs> </hist> @@ -2430,12 +2424,12 @@ <b> <a>1</a> <b>2</b> - <v>7938</v> + <v>8110</v> </b> <b> <a>2</a> <b>3</b> - <v>1994</v> + <v>1718</v> </b> </bs> </hist> @@ -2445,15 +2439,15 @@ </relation> <relation> <name>diagnostic_for</name> - <cardinality>5665</cardinality> + <cardinality>5471</cardinality> <columnsizes> <e> <k>diagnostic</k> - <v>5192</v> + <v>5013</v> </e> <e> <k>compilation</k> - <v>848</v> + <v>819</v> </e> <e> <k>file_number</k> @@ -2461,7 +2455,7 @@ </e> <e> <k>file_number_diagnostic_number</k> - <v>414</v> + <v>400</v> </e> </columnsizes> <dependencies> @@ -2475,12 +2469,12 @@ <b> <a>1</a> <b>2</b> - <v>5034</v> + <v>4861</v> </b> <b> <a>2</a> <b>7</b> - <v>157</v> + <v>152</v> </b> </bs> </hist> @@ -2496,7 +2490,7 @@ <b> <a>1</a> <b>2</b> - <v>5192</v> + <v>5013</v> </b> </bs> </hist> @@ -2512,7 +2506,7 @@ <b> <a>1</a> <b>2</b> - <v>5192</v> + <v>5013</v> </b> </bs> </hist> @@ -2528,27 +2522,27 @@ <b> <a>5</a> <b>6</b> - <v>631</v> + <v>610</v> </b> <b> <a>7</a> <b>8</b> - <v>78</v> + <v>76</v> </b> <b> <a>9</a> <b>12</b> - <v>59</v> + <v>57</v> </b> <b> <a>13</a> <b>16</b> - <v>39</v> + <v>38</v> </b> <b> <a>21</a> <b>22</b> - <v>39</v> + <v>38</v> </b> </bs> </hist> @@ -2564,7 +2558,7 @@ <b> <a>1</a> <b>2</b> - <v>848</v> + <v>819</v> </b> </bs> </hist> @@ -2580,27 +2574,27 @@ <b> <a>5</a> <b>6</b> - <v>631</v> + <v>610</v> </b> <b> <a>7</a> <b>8</b> - <v>78</v> + <v>76</v> </b> <b> <a>9</a> <b>12</b> - <v>59</v> + <v>57</v> </b> <b> <a>13</a> <b>16</b> - <v>39</v> + <v>38</v> </b> <b> <a>21</a> <b>22</b> - <v>39</v> + <v>38</v> </b> </bs> </hist> @@ -2664,37 +2658,37 @@ <b> <a>2</a> <b>3</b> - <v>118</v> + <v>114</v> </b> <b> <a>3</a> <b>4</b> - <v>39</v> + <v>38</v> </b> <b> <a>4</a> <b>5</b> - <v>39</v> + <v>38</v> </b> <b> <a>5</a> <b>6</b> - <v>39</v> + <v>38</v> </b> <b> <a>7</a> <b>8</b> - <v>39</v> + <v>38</v> </b> <b> <a>11</a> <b>12</b> - <v>39</v> + <v>38</v> </b> <b> <a>37</a> <b>38</b> - <v>78</v> + <v>76</v> </b> <b> <a>43</a> @@ -2715,37 +2709,37 @@ <b> <a>2</a> <b>3</b> - <v>118</v> + <v>114</v> </b> <b> <a>3</a> <b>4</b> - <v>39</v> + <v>38</v> </b> <b> <a>4</a> <b>5</b> - <v>39</v> + <v>38</v> </b> <b> <a>5</a> <b>6</b> - <v>39</v> + <v>38</v> </b> <b> <a>7</a> <b>8</b> - <v>39</v> + <v>38</v> </b> <b> <a>11</a> <b>12</b> - <v>39</v> + <v>38</v> </b> <b> <a>43</a> <b>44</b> - <v>98</v> + <v>95</v> </b> </bs> </hist> @@ -2761,7 +2755,7 @@ <b> <a>1</a> <b>2</b> - <v>414</v> + <v>400</v> </b> </bs> </hist> @@ -2771,19 +2765,19 @@ </relation> <relation> <name>compilation_finished</name> - <cardinality>9695</cardinality> + <cardinality>9657</cardinality> <columnsizes> <e> <k>id</k> - <v>9695</v> + <v>9657</v> </e> <e> <k>cpu_seconds</k> - <v>7190</v> + <v>7330</v> </e> <e> <k>elapsed_seconds</k> - <v>146</v> + <v>145</v> </e> </columnsizes> <dependencies> @@ -2797,7 +2791,7 @@ <b> <a>1</a> <b>2</b> - <v>9695</v> + <v>9657</v> </b> </bs> </hist> @@ -2813,7 +2807,7 @@ <b> <a>1</a> <b>2</b> - <v>9695</v> + <v>9657</v> </b> </bs> </hist> @@ -2829,17 +2823,17 @@ <b> <a>1</a> <b>2</b> - <v>5864</v> + <v>6054</v> </b> <b> <a>2</a> <b>3</b> - <v>831</v> + <v>850</v> </b> <b> <a>3</a> - <b>17</b> - <v>494</v> + <b>20</b> + <v>425</v> </b> </bs> </hist> @@ -2855,12 +2849,12 @@ <b> <a>1</a> <b>2</b> - <v>6561</v> + <v>6692</v> </b> <b> <a>2</a> <b>3</b> - <v>629</v> + <v>637</v> </b> </bs> </hist> @@ -2876,26 +2870,21 @@ <b> <a>1</a> <b>2</b> - <v>22</v> + <v>11</v> </b> <b> <a>2</a> <b>3</b> - <v>11</v> + <v>33</v> </b> <b> - <a>3</a> - <b>4</b> + <a>7</a> + <b>8</b> <v>22</v> </b> <b> - <a>6</a> - <b>7</b> - <v>11</v> - </b> - <b> - <a>10</a> - <b>11</b> + <a>11</a> + <b>12</b> <v>11</v> </b> <b> @@ -2904,28 +2893,28 @@ <v>11</v> </b> <b> - <a>46</a> - <b>47</b> + <a>52</a> + <b>53</b> <v>11</v> </b> <b> - <a>159</a> - <b>160</b> + <a>161</a> + <b>162</b> <v>11</v> </b> <b> - <a>165</a> - <b>166</b> + <a>163</a> + <b>164</b> <v>11</v> </b> <b> - <a>204</a> - <b>205</b> + <a>184</a> + <b>185</b> <v>11</v> </b> <b> - <a>251</a> - <b>252</b> + <a>259</a> + <b>260</b> <v>11</v> </b> </bs> @@ -2942,26 +2931,21 @@ <b> <a>1</a> <b>2</b> - <v>22</v> + <v>11</v> </b> <b> <a>2</a> <b>3</b> - <v>11</v> + <v>33</v> </b> <b> - <a>3</a> - <b>4</b> + <a>7</a> + <b>8</b> <v>22</v> </b> <b> - <a>6</a> - <b>7</b> - <v>11</v> - </b> - <b> - <a>10</a> - <b>11</b> + <a>11</a> + <b>12</b> <v>11</v> </b> <b> @@ -2970,13 +2954,13 @@ <v>11</v> </b> <b> - <a>44</a> - <b>45</b> + <a>52</a> + <b>53</b> <v>11</v> </b> <b> - <a>116</a> - <b>117</b> + <a>115</a> + <b>116</b> <v>11</v> </b> <b> @@ -2985,13 +2969,13 @@ <v>11</v> </b> <b> - <a>148</a> - <b>149</b> + <a>140</a> + <b>141</b> <v>11</v> </b> <b> - <a>231</a> - <b>232</b> + <a>242</a> + <b>243</b> <v>11</v> </b> </bs> @@ -3218,11 +3202,11 @@ </relation> <relation> <name>sourceLocationPrefix</name> - <cardinality>465</cardinality> + <cardinality>466</cardinality> <columnsizes> <e> <k>prefix</k> - <v>465</v> + <v>466</v> </e> </columnsizes> <dependencies/> @@ -4716,15 +4700,15 @@ </relation> <relation> <name>extractor_version</name> - <cardinality>465</cardinality> + <cardinality>466</cardinality> <columnsizes> <e> <k>codeql_version</k> - <v>465</v> + <v>466</v> </e> <e> <k>frontend_version</k> - <v>465</v> + <v>466</v> </e> </columnsizes> <dependencies> @@ -4738,7 +4722,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -4754,7 +4738,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -4764,31 +4748,31 @@ </relation> <relation> <name>locations_default</name> - <cardinality>29753112</cardinality> + <cardinality>29786456</cardinality> <columnsizes> <e> <k>id</k> - <v>29753112</v> + <v>29786456</v> </e> <e> <k>container</k> - <v>122996</v> + <v>123134</v> </e> <e> <k>startLine</k> - <v>2090945</v> + <v>2093288</v> </e> <e> <k>startColumn</k> - <v>36805</v> + <v>36847</v> </e> <e> <k>endLine</k> - <v>2095138</v> + <v>2097486</v> </e> <e> <k>endColumn</k> - <v>47987</v> + <v>48041</v> </e> </columnsizes> <dependencies> @@ -4802,7 +4786,7 @@ <b> <a>1</a> <b>2</b> - <v>29753112</v> + <v>29786456</v> </b> </bs> </hist> @@ -4818,7 +4802,7 @@ <b> <a>1</a> <b>2</b> - <v>29753112</v> + <v>29786456</v> </b> </bs> </hist> @@ -4834,7 +4818,7 @@ <b> <a>1</a> <b>2</b> - <v>29753112</v> + <v>29786456</v> </b> </bs> </hist> @@ -4850,7 +4834,7 @@ <b> <a>1</a> <b>2</b> - <v>29753112</v> + <v>29786456</v> </b> </bs> </hist> @@ -4866,7 +4850,7 @@ <b> <a>1</a> <b>2</b> - <v>29753112</v> + <v>29786456</v> </b> </bs> </hist> @@ -4882,67 +4866,67 @@ <b> <a>1</a> <b>11</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>11</a> <b>18</b> - <v>10249</v> + <v>10261</v> </b> <b> <a>18</a> <b>30</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>30</a> <b>42</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>43</a> <b>61</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>61</a> <b>79</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>80</a> <b>106</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>109</a> <b>149</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>149</a> <b>199</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>206</a> <b>292</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>305</a> <b>469</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>482</a> <b>850</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>939</a> <b>2380</b> - <v>8386</v> + <v>8395</v> </b> </bs> </hist> @@ -4958,72 +4942,72 @@ <b> <a>1</a> <b>8</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>8</a> <b>13</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>13</a> <b>20</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>20</a> <b>32</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>32</a> <b>43</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>44</a> <b>61</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>62</a> <b>72</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>73</a> <b>93</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>97</a> <b>128</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>128</a> <b>180</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>180</a> <b>267</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>277</a> <b>414</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>439</a> <b>1465</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>1557</a> <b>1569</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -5039,67 +5023,67 @@ <b> <a>1</a> <b>4</b> - <v>8852</v> + <v>8861</v> </b> <b> <a>4</a> <b>5</b> - <v>7920</v> + <v>7929</v> </b> <b> <a>5</a> <b>6</b> - <v>7454</v> + <v>7462</v> </b> <b> <a>6</a> <b>8</b> - <v>11181</v> + <v>11194</v> </b> <b> <a>8</a> <b>10</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>10</a> <b>15</b> - <v>10715</v> + <v>10727</v> </b> <b> <a>15</a> <b>23</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>23</a> <b>28</b> - <v>11181</v> + <v>11194</v> </b> <b> <a>28</a> <b>34</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>34</a> <b>44</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>44</a> <b>55</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>55</a> <b>66</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>66</a> <b>77</b> - <v>8386</v> + <v>8395</v> </b> </bs> </hist> @@ -5115,72 +5099,72 @@ <b> <a>1</a> <b>8</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>8</a> <b>13</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>13</a> <b>20</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>20</a> <b>32</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>32</a> <b>43</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>43</a> <b>60</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>61</a> <b>71</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>72</a> <b>93</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>94</a> <b>127</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>128</a> <b>179</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>180</a> <b>268</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>278</a> <b>413</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>437</a> <b>1465</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>1554</a> <b>1566</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -5196,67 +5180,67 @@ <b> <a>1</a> <b>9</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>9</a> <b>13</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>13</a> <b>18</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>18</a> <b>26</b> - <v>10249</v> + <v>10261</v> </b> <b> <a>27</a> <b>33</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>33</a> <b>39</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>39</a> <b>47</b> - <v>10249</v> + <v>10261</v> </b> <b> <a>47</a> <b>54</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>54</a> <b>60</b> - <v>10249</v> + <v>10261</v> </b> <b> <a>60</a> <b>66</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>66</a> <b>74</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>74</a> <b>78</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>78</a> <b>90</b> - <v>6988</v> + <v>6996</v> </b> </bs> </hist> @@ -5272,52 +5256,52 @@ <b> <a>1</a> <b>2</b> - <v>580507</v> + <v>581158</v> </b> <b> <a>2</a> <b>3</b> - <v>314480</v> + <v>314832</v> </b> <b> <a>3</a> <b>4</b> - <v>194744</v> + <v>194963</v> </b> <b> <a>4</a> <b>6</b> - <v>162132</v> + <v>162313</v> </b> <b> <a>6</a> <b>10</b> - <v>183097</v> + <v>183302</v> </b> <b> <a>10</a> <b>16</b> - <v>161666</v> + <v>161847</v> </b> <b> <a>16</a> <b>25</b> - <v>168188</v> + <v>168377</v> </b> <b> <a>25</a> <b>45</b> - <v>157007</v> + <v>157183</v> </b> <b> <a>45</a> <b>160</b> - <v>157473</v> + <v>157649</v> </b> <b> <a>160</a> <b>265</b> - <v>11647</v> + <v>11660</v> </b> </bs> </hist> @@ -5333,42 +5317,42 @@ <b> <a>1</a> <b>2</b> - <v>869363</v> + <v>870338</v> </b> <b> <a>2</a> <b>3</b> - <v>273015</v> + <v>273321</v> </b> <b> <a>3</a> <b>5</b> - <v>193347</v> + <v>193563</v> </b> <b> <a>5</a> <b>8</b> - <v>173313</v> + <v>173507</v> </b> <b> <a>8</a> <b>13</b> - <v>187756</v> + <v>187966</v> </b> <b> <a>13</a> <b>20</b> - <v>160734</v> + <v>160914</v> </b> <b> <a>20</a> <b>51</b> - <v>159336</v> + <v>159515</v> </b> <b> <a>51</a> <b>265</b> - <v>74077</v> + <v>74160</v> </b> </bs> </hist> @@ -5384,47 +5368,47 @@ <b> <a>1</a> <b>2</b> - <v>610790</v> + <v>611475</v> </b> <b> <a>2</a> <b>3</b> - <v>312616</v> + <v>312967</v> </b> <b> <a>3</a> <b>4</b> - <v>198006</v> + <v>198228</v> </b> <b> <a>4</a> <b>6</b> - <v>182631</v> + <v>182836</v> </b> <b> <a>6</a> <b>9</b> - <v>172847</v> + <v>173041</v> </b> <b> <a>9</a> <b>13</b> - <v>163063</v> + <v>163246</v> </b> <b> <a>13</a> <b>19</b> - <v>173779</v> + <v>173974</v> </b> <b> <a>19</a> <b>29</b> - <v>164927</v> + <v>165112</v> </b> <b> <a>29</a> <b>52</b> - <v>112281</v> + <v>112407</v> </b> </bs> </hist> @@ -5440,22 +5424,22 @@ <b> <a>1</a> <b>2</b> - <v>1528607</v> + <v>1530321</v> </b> <b> <a>2</a> <b>3</b> - <v>348025</v> + <v>348415</v> </b> <b> <a>3</a> <b>5</b> - <v>161666</v> + <v>161847</v> </b> <b> <a>5</a> <b>16</b> - <v>52646</v> + <v>52705</v> </b> </bs> </hist> @@ -5471,47 +5455,47 @@ <b> <a>1</a> <b>2</b> - <v>585166</v> + <v>585822</v> </b> <b> <a>2</a> <b>3</b> - <v>315878</v> + <v>316232</v> </b> <b> <a>3</a> <b>4</b> - <v>197540</v> + <v>197761</v> </b> <b> <a>4</a> <b>6</b> - <v>168188</v> + <v>168377</v> </b> <b> <a>6</a> <b>10</b> - <v>191483</v> + <v>191698</v> </b> <b> <a>10</a> <b>15</b> - <v>165393</v> + <v>165578</v> </b> <b> <a>15</a> <b>22</b> - <v>167722</v> + <v>167910</v> </b> <b> <a>22</a> <b>34</b> - <v>163995</v> + <v>164179</v> </b> <b> <a>34</a> <b>66</b> - <v>135576</v> + <v>135727</v> </b> </bs> </hist> @@ -5527,72 +5511,72 @@ <b> <a>1</a> <b>31</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>42</a> <b>85</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>86</a> <b>128</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>129</a> <b>229</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>247</a> <b>286</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>291</a> <b>360</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>373</a> <b>457</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>475</a> <b>565</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>566</a> <b>620</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>623</a> <b>689</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>696</a> <b>807</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>820</a> <b>1563</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>1638</a> <b>5632</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>15295</a> <b>15296</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -5608,67 +5592,67 @@ <b> <a>1</a> <b>18</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>23</a> <b>35</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>38</a> <b>43</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>44</a> <b>61</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>65</a> <b>73</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>73</a> <b>84</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>84</a> <b>96</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>96</a> <b>101</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>101</a> <b>105</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>107</a> <b>112</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>112</a> <b>126</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>137</a> <b>170</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>195</a> <b>265</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -5684,72 +5668,72 @@ <b> <a>1</a> <b>19</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>30</a> <b>72</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>83</a> <b>122</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>122</a> <b>205</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>214</a> <b>261</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>265</a> <b>322</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>322</a> <b>379</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>404</a> <b>430</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>453</a> <b>474</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>478</a> <b>505</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>511</a> <b>583</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>585</a> <b>836</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>1104</a> <b>2196</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>2387</a> <b>2388</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -5765,72 +5749,72 @@ <b> <a>1</a> <b>19</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>30</a> <b>72</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>83</a> <b>122</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>122</a> <b>205</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>214</a> <b>261</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>265</a> <b>322</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>322</a> <b>380</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>404</a> <b>430</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>453</a> <b>474</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>477</a> <b>504</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>514</a> <b>582</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>585</a> <b>835</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>1109</a> <b>2203</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>2382</a> <b>2383</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -5846,67 +5830,67 @@ <b> <a>1</a> <b>7</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>7</a> <b>11</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>11</a> <b>16</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>16</a> <b>22</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>22</a> <b>24</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>24</a> <b>28</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>29</a> <b>34</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>34</a> <b>41</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>41</a> <b>46</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>47</a> <b>49</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>49</a> <b>54</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>54</a> <b>74</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>75</a> <b>86</b> - <v>1863</v> + <v>1865</v> </b> </bs> </hist> @@ -5922,52 +5906,52 @@ <b> <a>1</a> <b>2</b> - <v>590757</v> + <v>591419</v> </b> <b> <a>2</a> <b>3</b> - <v>306560</v> + <v>306903</v> </b> <b> <a>3</a> <b>4</b> - <v>198006</v> + <v>198228</v> </b> <b> <a>4</a> <b>6</b> - <v>159336</v> + <v>159515</v> </b> <b> <a>6</a> <b>10</b> - <v>182631</v> + <v>182836</v> </b> <b> <a>10</a> <b>16</b> - <v>160268</v> + <v>160448</v> </b> <b> <a>16</a> <b>25</b> - <v>170518</v> + <v>170709</v> </b> <b> <a>25</a> <b>45</b> - <v>157939</v> + <v>158116</v> </b> <b> <a>45</a> <b>160</b> - <v>157939</v> + <v>158116</v> </b> <b> <a>160</a> <b>265</b> - <v>11181</v> + <v>11194</v> </b> </bs> </hist> @@ -5983,47 +5967,47 @@ <b> <a>1</a> <b>2</b> - <v>884738</v> + <v>885729</v> </b> <b> <a>2</a> <b>3</b> - <v>259504</v> + <v>259795</v> </b> <b> <a>3</a> <b>4</b> - <v>124860</v> + <v>125000</v> </b> <b> <a>4</a> <b>6</b> - <v>140700</v> + <v>140858</v> </b> <b> <a>6</a> <b>10</b> - <v>184495</v> + <v>184701</v> </b> <b> <a>10</a> <b>15</b> - <v>168188</v> + <v>168377</v> </b> <b> <a>15</a> <b>26</b> - <v>163063</v> + <v>163246</v> </b> <b> <a>26</a> <b>120</b> - <v>157939</v> + <v>158116</v> </b> <b> <a>121</a> <b>265</b> - <v>11647</v> + <v>11660</v> </b> </bs> </hist> @@ -6039,22 +6023,22 @@ <b> <a>1</a> <b>2</b> - <v>1526278</v> + <v>1527988</v> </b> <b> <a>2</a> <b>3</b> - <v>341036</v> + <v>341418</v> </b> <b> <a>3</a> <b>5</b> - <v>170518</v> + <v>170709</v> </b> <b> <a>5</a> <b>10</b> - <v>57305</v> + <v>57369</v> </b> </bs> </hist> @@ -6070,47 +6054,47 @@ <b> <a>1</a> <b>2</b> - <v>621972</v> + <v>622669</v> </b> <b> <a>2</a> <b>3</b> - <v>302833</v> + <v>303172</v> </b> <b> <a>3</a> <b>4</b> - <v>201267</v> + <v>201493</v> </b> <b> <a>4</a> <b>6</b> - <v>183563</v> + <v>183769</v> </b> <b> <a>6</a> <b>9</b> - <v>169586</v> + <v>169776</v> </b> <b> <a>9</a> <b>13</b> - <v>166325</v> + <v>166511</v> </b> <b> <a>13</a> <b>19</b> - <v>174711</v> + <v>174907</v> </b> <b> <a>19</a> <b>29</b> - <v>160734</v> + <v>160914</v> </b> <b> <a>29</a> <b>52</b> - <v>114144</v> + <v>114272</v> </b> </bs> </hist> @@ -6126,52 +6110,52 @@ <b> <a>1</a> <b>2</b> - <v>597279</v> + <v>597949</v> </b> <b> <a>2</a> <b>3</b> - <v>306560</v> + <v>306903</v> </b> <b> <a>3</a> <b>4</b> - <v>196142</v> + <v>196362</v> </b> <b> <a>4</a> <b>6</b> - <v>169120</v> + <v>169310</v> </b> <b> <a>6</a> <b>9</b> - <v>154677</v> + <v>154851</v> </b> <b> <a>9</a> <b>14</b> - <v>168188</v> + <v>168377</v> </b> <b> <a>14</a> <b>21</b> - <v>178438</v> + <v>178638</v> </b> <b> <a>21</a> <b>32</b> - <v>163063</v> + <v>163246</v> </b> <b> <a>32</a> <b>60</b> - <v>157939</v> + <v>158116</v> </b> <b> <a>60</a> <b>65</b> - <v>3727</v> + <v>3731</v> </b> </bs> </hist> @@ -6187,67 +6171,67 @@ <b> <a>1</a> <b>2</b> - <v>5124</v> + <v>5130</v> </b> <b> <a>2</a> <b>8</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>9</a> <b>186</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>193</a> <b>288</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>294</a> <b>495</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>503</a> <b>555</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>561</a> <b>634</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>640</a> <b>758</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>758</a> <b>869</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>876</a> <b>1074</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>1075</a> <b>1281</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>1289</a> <b>1590</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>1685</a> <b>2418</b> - <v>1863</v> + <v>1865</v> </b> </bs> </hist> @@ -6263,67 +6247,67 @@ <b> <a>1</a> <b>2</b> - <v>5590</v> + <v>5597</v> </b> <b> <a>2</a> <b>5</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>5</a> <b>65</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>70</a> <b>100</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>100</a> <b>111</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>112</a> <b>122</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>122</a> <b>134</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>139</a> <b>152</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>152</a> <b>160</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>160</a> <b>171</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>171</a> <b>175</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>176</a> <b>192</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>207</a> <b>265</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -6339,67 +6323,67 @@ <b> <a>1</a> <b>2</b> - <v>5590</v> + <v>5597</v> </b> <b> <a>2</a> <b>8</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>9</a> <b>105</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>155</a> <b>241</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>253</a> <b>336</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>340</a> <b>426</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>434</a> <b>488</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>489</a> <b>572</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>573</a> <b>623</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>628</a> <b>696</b> - <v>4193</v> + <v>4197</v> </b> <b> <a>701</a> <b>819</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>837</a> <b>1095</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>1172</a> <b>1174</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -6415,67 +6399,67 @@ <b> <a>1</a> <b>2</b> - <v>6056</v> + <v>6063</v> </b> <b> <a>2</a> <b>4</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>4</a> <b>8</b> - <v>4193</v> + <v>4197</v> </b> <b> <a>8</a> <b>15</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>15</a> <b>23</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>23</a> <b>29</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>29</a> <b>35</b> - <v>4193</v> + <v>4197</v> </b> <b> <a>35</a> <b>39</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>39</a> <b>42</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>42</a> <b>44</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>44</a> <b>46</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>46</a> <b>49</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>49</a> <b>53</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -6491,67 +6475,67 @@ <b> <a>1</a> <b>2</b> - <v>5590</v> + <v>5597</v> </b> <b> <a>2</a> <b>8</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>9</a> <b>156</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>159</a> <b>240</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>251</a> <b>335</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>342</a> <b>430</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>432</a> <b>490</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>490</a> <b>573</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>574</a> <b>622</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>628</a> <b>698</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>700</a> <b>812</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>812</a> <b>987</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>1096</a> <b>1180</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -6561,31 +6545,31 @@ </relation> <relation> <name>locations_stmt</name> - <cardinality>3814280</cardinality> + <cardinality>3820105</cardinality> <columnsizes> <e> <k>id</k> - <v>3814280</v> + <v>3820105</v> </e> <e> <k>container</k> - <v>3083</v> + <v>3088</v> </e> <e> <k>startLine</k> - <v>199878</v> + <v>200183</v> </e> <e> <k>startColumn</k> - <v>1870</v> + <v>1873</v> </e> <e> <k>endLine</k> - <v>194143</v> + <v>194439</v> </e> <e> <k>endColumn</k> - <v>2364</v> + <v>2367</v> </e> </columnsizes> <dependencies> @@ -6599,7 +6583,7 @@ <b> <a>1</a> <b>2</b> - <v>3814280</v> + <v>3820105</v> </b> </bs> </hist> @@ -6615,7 +6599,7 @@ <b> <a>1</a> <b>2</b> - <v>3814280</v> + <v>3820105</v> </b> </bs> </hist> @@ -6631,7 +6615,7 @@ <b> <a>1</a> <b>2</b> - <v>3814280</v> + <v>3820105</v> </b> </bs> </hist> @@ -6647,7 +6631,7 @@ <b> <a>1</a> <b>2</b> - <v>3814280</v> + <v>3820105</v> </b> </bs> </hist> @@ -6663,7 +6647,7 @@ <b> <a>1</a> <b>2</b> - <v>3814280</v> + <v>3820105</v> </b> </bs> </hist> @@ -6679,62 +6663,62 @@ <b> <a>1</a> <b>13</b> - <v>246</v> + <v>247</v> </b> <b> <a>16</a> <b>48</b> - <v>246</v> + <v>247</v> </b> <b> <a>61</a> <b>175</b> - <v>246</v> + <v>247</v> </b> <b> <a>176</a> <b>417</b> - <v>246</v> + <v>247</v> </b> <b> <a>436</a> <b>608</b> - <v>246</v> + <v>247</v> </b> <b> <a>621</a> <b>797</b> - <v>246</v> + <v>247</v> </b> <b> <a>848</a> <b>1139</b> - <v>246</v> + <v>247</v> </b> <b> <a>1158</a> <b>1417</b> - <v>246</v> + <v>247</v> </b> <b> <a>1453</a> <b>1715</b> - <v>246</v> + <v>247</v> </b> <b> <a>1771</a> <b>2252</b> - <v>246</v> + <v>247</v> </b> <b> <a>2282</a> <b>2669</b> - <v>246</v> + <v>247</v> </b> <b> <a>2736</a> <b>3751</b> - <v>246</v> + <v>247</v> </b> <b> <a>3768</a> @@ -6755,17 +6739,17 @@ <b> <a>1</a> <b>13</b> - <v>246</v> + <v>247</v> </b> <b> <a>16</a> <b>47</b> - <v>246</v> + <v>247</v> </b> <b> <a>48</a> <b>161</b> - <v>246</v> + <v>247</v> </b> <b> <a>169</a> @@ -6775,42 +6759,42 @@ <b> <a>393</a> <b>586</b> - <v>246</v> + <v>247</v> </b> <b> <a>602</a> <b>783</b> - <v>246</v> + <v>247</v> </b> <b> <a>845</a> <b>1120</b> - <v>246</v> + <v>247</v> </b> <b> <a>1131</a> <b>1390</b> - <v>246</v> + <v>247</v> </b> <b> <a>1394</a> <b>1692</b> - <v>246</v> + <v>247</v> </b> <b> <a>1726</a> <b>2208</b> - <v>246</v> + <v>247</v> </b> <b> <a>2225</a> <b>2680</b> - <v>246</v> + <v>247</v> </b> <b> <a>2777</a> <b>3643</b> - <v>246</v> + <v>247</v> </b> <b> <a>3885</a> @@ -6846,7 +6830,7 @@ <b> <a>9</a> <b>11</b> - <v>246</v> + <v>247</v> </b> <b> <a>11</a> @@ -6861,7 +6845,7 @@ <b> <a>14</a> <b>16</b> - <v>246</v> + <v>247</v> </b> <b> <a>16</a> @@ -6881,22 +6865,22 @@ <b> <a>21</a> <b>23</b> - <v>246</v> + <v>247</v> </b> <b> <a>23</a> <b>29</b> - <v>246</v> + <v>247</v> </b> <b> <a>29</a> <b>43</b> - <v>246</v> + <v>247</v> </b> <b> <a>48</a> <b>60</b> - <v>143</v> + <v>144</v> </b> </bs> </hist> @@ -6912,62 +6896,62 @@ <b> <a>1</a> <b>11</b> - <v>246</v> + <v>247</v> </b> <b> <a>12</a> <b>34</b> - <v>246</v> + <v>247</v> </b> <b> <a>43</a> <b>132</b> - <v>246</v> + <v>247</v> </b> <b> <a>134</a> <b>282</b> - <v>246</v> + <v>247</v> </b> <b> <a>294</a> <b>452</b> - <v>246</v> + <v>247</v> </b> <b> <a>459</a> <b>601</b> - <v>246</v> + <v>247</v> </b> <b> <a>609</a> <b>831</b> - <v>246</v> + <v>247</v> </b> <b> <a>838</a> <b>1062</b> - <v>246</v> + <v>247</v> </b> <b> <a>1071</a> <b>1265</b> - <v>246</v> + <v>247</v> </b> <b> <a>1323</a> <b>1679</b> - <v>246</v> + <v>247</v> </b> <b> <a>1688</a> <b>2006</b> - <v>246</v> + <v>247</v> </b> <b> <a>2044</a> <b>2758</b> - <v>246</v> + <v>247</v> </b> <b> <a>2776</a> @@ -6988,22 +6972,22 @@ <b> <a>1</a> <b>8</b> - <v>246</v> + <v>247</v> </b> <b> <a>8</a> <b>21</b> - <v>246</v> + <v>247</v> </b> <b> <a>22</a> <b>45</b> - <v>246</v> + <v>247</v> </b> <b> <a>45</a> <b>56</b> - <v>246</v> + <v>247</v> </b> <b> <a>56</a> @@ -7013,12 +6997,12 @@ <b> <a>63</a> <b>67</b> - <v>246</v> + <v>247</v> </b> <b> <a>67</a> <b>69</b> - <v>246</v> + <v>247</v> </b> <b> <a>69</a> @@ -7028,22 +7012,22 @@ <b> <a>71</a> <b>72</b> - <v>246</v> + <v>247</v> </b> <b> <a>72</a> <b>74</b> - <v>246</v> + <v>247</v> </b> <b> <a>74</a> <b>76</b> - <v>246</v> + <v>247</v> </b> <b> <a>76</a> <b>80</b> - <v>246</v> + <v>247</v> </b> <b> <a>81</a> @@ -7064,67 +7048,67 @@ <b> <a>1</a> <b>2</b> - <v>21544</v> + <v>21576</v> </b> <b> <a>2</a> <b>3</b> - <v>15294</v> + <v>15317</v> </b> <b> <a>3</a> <b>4</b> - <v>12478</v> + <v>12497</v> </b> <b> <a>4</a> <b>6</b> - <v>14451</v> + <v>14473</v> </b> <b> <a>6</a> <b>8</b> - <v>12519</v> + <v>12538</v> </b> <b> <a>8</a> <b>11</b> - <v>16713</v> + <v>16738</v> </b> <b> <a>11</a> <b>16</b> - <v>17268</v> + <v>17294</v> </b> <b> <a>16</a> <b>22</b> - <v>15356</v> + <v>15379</v> </b> <b> <a>22</a> <b>29</b> - <v>16980</v> + <v>17006</v> </b> <b> <a>29</a> <b>37</b> - <v>17370</v> + <v>17397</v> </b> <b> <a>37</a> <b>45</b> - <v>15089</v> + <v>15112</v> </b> <b> <a>45</a> <b>56</b> - <v>16178</v> + <v>16203</v> </b> <b> <a>56</a> <b>73</b> - <v>8634</v> + <v>8647</v> </b> </bs> </hist> @@ -7140,67 +7124,67 @@ <b> <a>1</a> <b>2</b> - <v>22304</v> + <v>22338</v> </b> <b> <a>2</a> <b>3</b> - <v>15726</v> + <v>15750</v> </b> <b> <a>3</a> <b>4</b> - <v>12683</v> + <v>12703</v> </b> <b> <a>4</a> <b>6</b> - <v>14390</v> + <v>14412</v> </b> <b> <a>6</a> <b>8</b> - <v>12724</v> + <v>12744</v> </b> <b> <a>8</a> <b>11</b> - <v>17576</v> + <v>17603</v> </b> <b> <a>11</a> <b>16</b> - <v>16363</v> + <v>16388</v> </b> <b> <a>16</a> <b>22</b> - <v>16219</v> + <v>16244</v> </b> <b> <a>22</a> <b>29</b> - <v>16959</v> + <v>16985</v> </b> <b> <a>29</a> <b>36</b> - <v>15993</v> + <v>16017</v> </b> <b> <a>36</a> <b>44</b> - <v>16322</v> + <v>16347</v> </b> <b> <a>44</a> <b>54</b> - <v>15644</v> + <v>15667</v> </b> <b> <a>54</a> <b>69</b> - <v>6968</v> + <v>6979</v> </b> </bs> </hist> @@ -7216,57 +7200,57 @@ <b> <a>1</a> <b>2</b> - <v>26827</v> + <v>26868</v> </b> <b> <a>2</a> <b>3</b> - <v>20845</v> + <v>20876</v> </b> <b> <a>3</a> <b>4</b> - <v>16815</v> + <v>16841</v> </b> <b> <a>4</a> <b>5</b> - <v>16075</v> + <v>16100</v> </b> <b> <a>5</a> <b>6</b> - <v>17432</v> + <v>17459</v> </b> <b> <a>6</a> <b>7</b> - <v>19858</v> + <v>19888</v> </b> <b> <a>7</a> <b>8</b> - <v>22756</v> + <v>22791</v> </b> <b> <a>8</a> <b>9</b> - <v>20392</v> + <v>20423</v> </b> <b> <a>9</a> <b>10</b> - <v>15006</v> + <v>15029</v> </b> <b> <a>10</a> <b>12</b> - <v>16651</v> + <v>16676</v> </b> <b> <a>12</a> <b>18</b> - <v>7215</v> + <v>7226</v> </b> </bs> </hist> @@ -7282,67 +7266,67 @@ <b> <a>1</a> <b>2</b> - <v>34597</v> + <v>34650</v> </b> <b> <a>2</a> <b>3</b> - <v>25799</v> + <v>25838</v> </b> <b> <a>3</a> <b>4</b> - <v>18439</v> + <v>18468</v> </b> <b> <a>4</a> <b>5</b> - <v>16219</v> + <v>16244</v> </b> <b> <a>5</a> <b>6</b> - <v>12786</v> + <v>12806</v> </b> <b> <a>6</a> <b>7</b> - <v>12026</v> + <v>12044</v> </b> <b> <a>7</a> <b>8</b> - <v>10175</v> + <v>10191</v> </b> <b> <a>8</a> <b>9</b> - <v>10977</v> + <v>10994</v> </b> <b> <a>9</a> <b>10</b> - <v>10730</v> + <v>10747</v> </b> <b> <a>10</a> <b>11</b> - <v>10525</v> + <v>10541</v> </b> <b> <a>11</a> <b>12</b> - <v>10175</v> + <v>10191</v> </b> <b> <a>12</a> <b>14</b> - <v>15787</v> + <v>15812</v> </b> <b> <a>14</a> <b>24</b> - <v>11635</v> + <v>11653</v> </b> </bs> </hist> @@ -7358,67 +7342,67 @@ <b> <a>1</a> <b>2</b> - <v>22140</v> + <v>22174</v> </b> <b> <a>2</a> <b>3</b> - <v>16199</v> + <v>16223</v> </b> <b> <a>3</a> <b>4</b> - <v>12951</v> + <v>12970</v> </b> <b> <a>4</a> <b>6</b> - <v>16075</v> + <v>16100</v> </b> <b> <a>6</a> <b>8</b> - <v>14698</v> + <v>14720</v> </b> <b> <a>8</a> <b>10</b> - <v>13197</v> + <v>13217</v> </b> <b> <a>10</a> <b>14</b> - <v>18295</v> + <v>18323</v> </b> <b> <a>14</a> <b>18</b> - <v>17021</v> + <v>17047</v> </b> <b> <a>18</a> <b>22</b> - <v>17576</v> + <v>17603</v> </b> <b> <a>22</a> <b>26</b> - <v>18501</v> + <v>18529</v> </b> <b> <a>26</a> <b>30</b> - <v>16384</v> + <v>16409</v> </b> <b> <a>30</a> <b>36</b> - <v>15232</v> + <v>15256</v> </b> <b> <a>36</a> <b>42</b> - <v>1603</v> + <v>1605</v> </b> </bs> </hist> @@ -7439,7 +7423,7 @@ <b> <a>2</a> <b>3</b> - <v>143</v> + <v>144</v> </b> <b> <a>3</a> @@ -7449,7 +7433,7 @@ <b> <a>7</a> <b>12</b> - <v>143</v> + <v>144</v> </b> <b> <a>12</a> @@ -7459,37 +7443,37 @@ <b> <a>21</a> <b>53</b> - <v>143</v> + <v>144</v> </b> <b> <a>54</a> <b>74</b> - <v>143</v> + <v>144</v> </b> <b> <a>78</a> <b>92</b> - <v>143</v> + <v>144</v> </b> <b> <a>92</a> <b>134</b> - <v>143</v> + <v>144</v> </b> <b> <a>134</a> <b>228</b> - <v>143</v> + <v>144</v> </b> <b> <a>228</a> <b>2062</b> - <v>143</v> + <v>144</v> </b> <b> <a>3245</a> <b>40863</b> - <v>143</v> + <v>144</v> </b> <b> <a>53257</a> @@ -7510,7 +7494,7 @@ <b> <a>1</a> <b>2</b> - <v>287</v> + <v>288</v> </b> <b> <a>2</a> @@ -7530,42 +7514,42 @@ <b> <a>8</a> <b>13</b> - <v>143</v> + <v>144</v> </b> <b> <a>13</a> <b>18</b> - <v>143</v> + <v>144</v> </b> <b> <a>18</a> <b>22</b> - <v>143</v> + <v>144</v> </b> <b> <a>22</a> <b>24</b> - <v>143</v> + <v>144</v> </b> <b> <a>24</a> <b>29</b> - <v>143</v> + <v>144</v> </b> <b> <a>33</a> <b>42</b> - <v>143</v> + <v>144</v> </b> <b> <a>47</a> <b>109</b> - <v>143</v> + <v>144</v> </b> <b> <a>116</a> <b>150</b> - <v>143</v> + <v>144</v> </b> </bs> </hist> @@ -7586,7 +7570,7 @@ <b> <a>2</a> <b>3</b> - <v>143</v> + <v>144</v> </b> <b> <a>3</a> @@ -7596,7 +7580,7 @@ <b> <a>7</a> <b>12</b> - <v>143</v> + <v>144</v> </b> <b> <a>12</a> @@ -7606,37 +7590,37 @@ <b> <a>21</a> <b>53</b> - <v>143</v> + <v>144</v> </b> <b> <a>54</a> <b>74</b> - <v>143</v> + <v>144</v> </b> <b> <a>77</a> <b>88</b> - <v>143</v> + <v>144</v> </b> <b> <a>90</a> <b>131</b> - <v>143</v> + <v>144</v> </b> <b> <a>134</a> <b>224</b> - <v>143</v> + <v>144</v> </b> <b> <a>226</a> <b>1699</b> - <v>143</v> + <v>144</v> </b> <b> <a>2430</a> <b>7900</b> - <v>143</v> + <v>144</v> </b> <b> <a>8302</a> @@ -7662,7 +7646,7 @@ <b> <a>2</a> <b>3</b> - <v>143</v> + <v>144</v> </b> <b> <a>3</a> @@ -7672,7 +7656,7 @@ <b> <a>7</a> <b>12</b> - <v>143</v> + <v>144</v> </b> <b> <a>12</a> @@ -7682,37 +7666,37 @@ <b> <a>21</a> <b>53</b> - <v>143</v> + <v>144</v> </b> <b> <a>54</a> <b>74</b> - <v>143</v> + <v>144</v> </b> <b> <a>77</a> <b>88</b> - <v>143</v> + <v>144</v> </b> <b> <a>90</a> <b>130</b> - <v>143</v> + <v>144</v> </b> <b> <a>134</a> <b>221</b> - <v>143</v> + <v>144</v> </b> <b> <a>226</a> <b>1414</b> - <v>143</v> + <v>144</v> </b> <b> <a>2290</a> <b>7741</b> - <v>143</v> + <v>144</v> </b> <b> <a>8096</a> @@ -7733,12 +7717,12 @@ <b> <a>1</a> <b>2</b> - <v>287</v> + <v>288</v> </b> <b> <a>2</a> <b>3</b> - <v>143</v> + <v>144</v> </b> <b> <a>3</a> @@ -7758,7 +7742,7 @@ <b> <a>8</a> <b>11</b> - <v>143</v> + <v>144</v> </b> <b> <a>11</a> @@ -7768,27 +7752,27 @@ <b> <a>15</a> <b>19</b> - <v>143</v> + <v>144</v> </b> <b> <a>19</a> <b>26</b> - <v>143</v> + <v>144</v> </b> <b> <a>28</a> <b>35</b> - <v>143</v> + <v>144</v> </b> <b> <a>41</a> <b>69</b> - <v>143</v> + <v>144</v> </b> <b> <a>70</a> <b>104</b> - <v>143</v> + <v>144</v> </b> </bs> </hist> @@ -7804,67 +7788,67 @@ <b> <a>1</a> <b>2</b> - <v>17412</v> + <v>17438</v> </b> <b> <a>2</a> <b>3</b> - <v>14410</v> + <v>14432</v> </b> <b> <a>3</a> <b>4</b> - <v>11491</v> + <v>11509</v> </b> <b> <a>4</a> <b>6</b> - <v>15602</v> + <v>15626</v> </b> <b> <a>6</a> <b>8</b> - <v>12498</v> + <v>12517</v> </b> <b> <a>8</a> <b>11</b> - <v>15459</v> + <v>15482</v> </b> <b> <a>11</a> <b>15</b> - <v>14636</v> + <v>14659</v> </b> <b> <a>15</a> <b>21</b> - <v>16096</v> + <v>16120</v> </b> <b> <a>21</a> <b>27</b> - <v>15417</v> + <v>15441</v> </b> <b> <a>27</a> <b>34</b> - <v>14945</v> + <v>14967</v> </b> <b> <a>34</a> <b>42</b> - <v>15746</v> + <v>15770</v> </b> <b> <a>42</a> <b>52</b> - <v>16014</v> + <v>16038</v> </b> <b> <a>52</a> <b>130</b> - <v>14410</v> + <v>14432</v> </b> </bs> </hist> @@ -7880,62 +7864,62 @@ <b> <a>1</a> <b>2</b> - <v>24956</v> + <v>24994</v> </b> <b> <a>2</a> <b>3</b> - <v>16137</v> + <v>16162</v> </b> <b> <a>3</a> <b>4</b> - <v>12766</v> + <v>12785</v> </b> <b> <a>4</a> <b>6</b> - <v>15664</v> + <v>15688</v> </b> <b> <a>6</a> <b>8</b> - <v>15006</v> + <v>15029</v> </b> <b> <a>8</a> <b>11</b> - <v>15890</v> + <v>15915</v> </b> <b> <a>11</a> <b>16</b> - <v>17453</v> + <v>17479</v> </b> <b> <a>16</a> <b>20</b> - <v>14595</v> + <v>14617</v> </b> <b> <a>20</a> <b>26</b> - <v>17165</v> + <v>17191</v> </b> <b> <a>26</a> <b>32</b> - <v>16260</v> + <v>16285</v> </b> <b> <a>32</a> <b>39</b> - <v>14862</v> + <v>14885</v> </b> <b> <a>39</a> <b>59</b> - <v>13382</v> + <v>13403</v> </b> </bs> </hist> @@ -7951,62 +7935,62 @@ <b> <a>1</a> <b>2</b> - <v>32480</v> + <v>32530</v> </b> <b> <a>2</a> <b>3</b> - <v>23764</v> + <v>23800</v> </b> <b> <a>3</a> <b>4</b> - <v>18460</v> + <v>18488</v> </b> <b> <a>4</a> <b>5</b> - <v>15150</v> + <v>15173</v> </b> <b> <a>5</a> <b>6</b> - <v>13876</v> + <v>13897</v> </b> <b> <a>6</a> <b>7</b> - <v>11676</v> + <v>11694</v> </b> <b> <a>7</a> <b>8</b> - <v>11738</v> + <v>11756</v> </b> <b> <a>8</a> <b>9</b> - <v>10915</v> + <v>10932</v> </b> <b> <a>9</a> <b>10</b> - <v>10175</v> + <v>10191</v> </b> <b> <a>10</a> <b>12</b> - <v>17967</v> + <v>17994</v> </b> <b> <a>12</a> <b>15</b> - <v>17720</v> + <v>17747</v> </b> <b> <a>15</a> <b>100</b> - <v>10216</v> + <v>10232</v> </b> </bs> </hist> @@ -8022,57 +8006,57 @@ <b> <a>1</a> <b>2</b> - <v>24956</v> + <v>24994</v> </b> <b> <a>2</a> <b>3</b> - <v>20392</v> + <v>20423</v> </b> <b> <a>3</a> <b>4</b> - <v>16836</v> + <v>16862</v> </b> <b> <a>4</a> <b>5</b> - <v>17802</v> + <v>17829</v> </b> <b> <a>5</a> <b>6</b> - <v>18583</v> + <v>18612</v> </b> <b> <a>6</a> <b>7</b> - <v>20433</v> + <v>20465</v> </b> <b> <a>7</a> <b>8</b> - <v>22427</v> + <v>22462</v> </b> <b> <a>8</a> <b>9</b> - <v>18748</v> + <v>18776</v> </b> <b> <a>9</a> <b>10</b> - <v>12930</v> + <v>12950</v> </b> <b> <a>10</a> <b>12</b> - <v>15027</v> + <v>15050</v> </b> <b> <a>12</a> <b>18</b> - <v>6002</v> + <v>6011</v> </b> </bs> </hist> @@ -8088,67 +8072,67 @@ <b> <a>1</a> <b>2</b> - <v>24709</v> + <v>24747</v> </b> <b> <a>2</a> <b>3</b> - <v>16630</v> + <v>16656</v> </b> <b> <a>3</a> <b>4</b> - <v>12539</v> + <v>12559</v> </b> <b> <a>4</a> <b>6</b> - <v>17823</v> + <v>17850</v> </b> <b> <a>6</a> <b>8</b> - <v>15335</v> + <v>15359</v> </b> <b> <a>8</a> <b>10</b> - <v>12827</v> + <v>12847</v> </b> <b> <a>10</a> <b>13</b> - <v>14410</v> + <v>14432</v> </b> <b> <a>13</a> <b>16</b> - <v>15027</v> + <v>15050</v> </b> <b> <a>16</a> <b>19</b> - <v>14657</v> + <v>14679</v> </b> <b> <a>19</a> <b>22</b> - <v>14040</v> + <v>14062</v> </b> <b> <a>22</a> <b>26</b> - <v>17124</v> + <v>17150</v> </b> <b> <a>26</a> <b>31</b> - <v>15335</v> + <v>15359</v> </b> <b> <a>31</a> <b>39</b> - <v>3679</v> + <v>3685</v> </b> </bs> </hist> @@ -8543,31 +8527,31 @@ </relation> <relation> <name>locations_expr</name> - <cardinality>13168606</cardinality> + <cardinality>13188716</cardinality> <columnsizes> <e> <k>id</k> - <v>13168606</v> + <v>13188716</v> </e> <e> <k>container</k> - <v>4645</v> + <v>4653</v> </e> <e> <k>startLine</k> - <v>191943</v> + <v>192236</v> </e> <e> <k>startColumn</k> - <v>2466</v> + <v>2470</v> </e> <e> <k>endLine</k> - <v>191922</v> + <v>192215</v> </e> <e> <k>endColumn</k> - <v>2795</v> + <v>2800</v> </e> </columnsizes> <dependencies> @@ -8581,7 +8565,7 @@ <b> <a>1</a> <b>2</b> - <v>13168606</v> + <v>13188716</v> </b> </bs> </hist> @@ -8597,7 +8581,7 @@ <b> <a>1</a> <b>2</b> - <v>13168606</v> + <v>13188716</v> </b> </bs> </hist> @@ -8613,7 +8597,7 @@ <b> <a>1</a> <b>2</b> - <v>13168606</v> + <v>13188716</v> </b> </bs> </hist> @@ -8629,7 +8613,7 @@ <b> <a>1</a> <b>2</b> - <v>13168606</v> + <v>13188716</v> </b> </bs> </hist> @@ -8645,7 +8629,7 @@ <b> <a>1</a> <b>2</b> - <v>13168606</v> + <v>13188716</v> </b> </bs> </hist> @@ -8666,7 +8650,7 @@ <b> <a>2</a> <b>6</b> - <v>328</v> + <v>329</v> </b> <b> <a>6</a> @@ -8681,47 +8665,47 @@ <b> <a>27</a> <b>96</b> - <v>349</v> + <v>350</v> </b> <b> <a>100</a> <b>514</b> - <v>349</v> + <v>350</v> </b> <b> <a>525</a> <b>1401</b> - <v>349</v> + <v>350</v> </b> <b> <a>1526</a> <b>2343</b> - <v>349</v> + <v>350</v> </b> <b> <a>2404</a> <b>3615</b> - <v>349</v> + <v>350</v> </b> <b> <a>3668</a> <b>5162</b> - <v>349</v> + <v>350</v> </b> <b> <a>5341</a> <b>7345</b> - <v>349</v> + <v>350</v> </b> <b> <a>7399</a> <b>9307</b> - <v>349</v> + <v>350</v> </b> <b> <a>9382</a> <b>16759</b> - <v>349</v> + <v>350</v> </b> <b> <a>18811</a> @@ -8742,7 +8726,7 @@ <b> <a>1</a> <b>2</b> - <v>493</v> + <v>494</v> </b> <b> <a>2</a> @@ -8757,47 +8741,47 @@ <b> <a>10</a> <b>20</b> - <v>349</v> + <v>350</v> </b> <b> <a>20</a> <b>51</b> - <v>349</v> + <v>350</v> </b> <b> <a>65</a> <b>151</b> - <v>349</v> + <v>350</v> </b> <b> <a>161</a> <b>360</b> - <v>349</v> + <v>350</v> </b> <b> <a>361</a> <b>577</b> - <v>349</v> + <v>350</v> </b> <b> <a>590</a> <b>923</b> - <v>349</v> + <v>350</v> </b> <b> <a>928</a> <b>1265</b> - <v>349</v> + <v>350</v> </b> <b> <a>1268</a> <b>1742</b> - <v>349</v> + <v>350</v> </b> <b> <a>1781</a> <b>2320</b> - <v>349</v> + <v>350</v> </b> <b> <a>2491</a> @@ -8818,32 +8802,32 @@ <b> <a>1</a> <b>2</b> - <v>493</v> + <v>494</v> </b> <b> <a>2</a> <b>4</b> - <v>349</v> + <v>350</v> </b> <b> <a>4</a> <b>7</b> - <v>390</v> + <v>391</v> </b> <b> <a>7</a> <b>16</b> - <v>349</v> + <v>350</v> </b> <b> <a>16</a> <b>37</b> - <v>349</v> + <v>350</v> </b> <b> <a>37</a> <b>59</b> - <v>390</v> + <v>391</v> </b> <b> <a>59</a> @@ -8904,7 +8888,7 @@ <b> <a>1</a> <b>2</b> - <v>493</v> + <v>494</v> </b> <b> <a>2</a> @@ -8919,47 +8903,47 @@ <b> <a>10</a> <b>20</b> - <v>349</v> + <v>350</v> </b> <b> <a>20</a> <b>51</b> - <v>349</v> + <v>350</v> </b> <b> <a>65</a> <b>151</b> - <v>349</v> + <v>350</v> </b> <b> <a>162</a> <b>360</b> - <v>349</v> + <v>350</v> </b> <b> <a>361</a> <b>578</b> - <v>349</v> + <v>350</v> </b> <b> <a>591</a> <b>926</b> - <v>349</v> + <v>350</v> </b> <b> <a>930</a> <b>1266</b> - <v>349</v> + <v>350</v> </b> <b> <a>1272</a> <b>1742</b> - <v>349</v> + <v>350</v> </b> <b> <a>1785</a> <b>2324</b> - <v>349</v> + <v>350</v> </b> <b> <a>2500</a> @@ -8985,7 +8969,7 @@ <b> <a>2</a> <b>4</b> - <v>328</v> + <v>329</v> </b> <b> <a>4</a> @@ -8995,22 +8979,22 @@ <b> <a>7</a> <b>15</b> - <v>349</v> + <v>350</v> </b> <b> <a>15</a> <b>36</b> - <v>349</v> + <v>350</v> </b> <b> <a>36</a> <b>61</b> - <v>349</v> + <v>350</v> </b> <b> <a>61</a> <b>70</b> - <v>349</v> + <v>350</v> </b> <b> <a>70</a> @@ -9020,7 +9004,7 @@ <b> <a>73</a> <b>75</b> - <v>328</v> + <v>329</v> </b> <b> <a>75</a> @@ -9035,12 +9019,12 @@ <b> <a>77</a> <b>79</b> - <v>349</v> + <v>350</v> </b> <b> <a>79</a> <b>84</b> - <v>349</v> + <v>350</v> </b> <b> <a>84</a> @@ -9061,67 +9045,67 @@ <b> <a>1</a> <b>5</b> - <v>16116</v> + <v>16141</v> </b> <b> <a>5</a> <b>9</b> - <v>16486</v> + <v>16512</v> </b> <b> <a>9</a> <b>15</b> - <v>16034</v> + <v>16059</v> </b> <b> <a>15</a> <b>23</b> - <v>15109</v> + <v>15132</v> </b> <b> <a>23</a> <b>32</b> - <v>15150</v> + <v>15173</v> </b> <b> <a>32</a> <b>44</b> - <v>15006</v> + <v>15029</v> </b> <b> <a>44</a> <b>60</b> - <v>14760</v> + <v>14782</v> </b> <b> <a>60</a> <b>80</b> - <v>14821</v> + <v>14844</v> </b> <b> <a>80</a> <b>103</b> - <v>14636</v> + <v>14659</v> </b> <b> <a>103</a> <b>130</b> - <v>14780</v> + <v>14803</v> </b> <b> <a>130</a> <b>159</b> - <v>14534</v> + <v>14556</v> </b> <b> <a>159</a> <b>194</b> - <v>14616</v> + <v>14638</v> </b> <b> <a>194</a> <b>302</b> - <v>9888</v> + <v>9903</v> </b> </bs> </hist> @@ -9137,62 +9121,62 @@ <b> <a>1</a> <b>2</b> - <v>23517</v> + <v>23553</v> </b> <b> <a>2</a> <b>3</b> - <v>15623</v> + <v>15647</v> </b> <b> <a>3</a> <b>4</b> - <v>11347</v> + <v>11364</v> </b> <b> <a>4</a> <b>6</b> - <v>16363</v> + <v>16388</v> </b> <b> <a>6</a> <b>8</b> - <v>13629</v> + <v>13650</v> </b> <b> <a>8</a> <b>11</b> - <v>16445</v> + <v>16470</v> </b> <b> <a>11</a> <b>16</b> - <v>17350</v> + <v>17376</v> </b> <b> <a>16</a> <b>21</b> - <v>16445</v> + <v>16470</v> </b> <b> <a>21</a> <b>28</b> - <v>16651</v> + <v>16676</v> </b> <b> <a>28</a> <b>35</b> - <v>15808</v> + <v>15832</v> </b> <b> <a>35</a> <b>43</b> - <v>15849</v> + <v>15873</v> </b> <b> <a>43</a> <b>60</b> - <v>12909</v> + <v>12929</v> </b> </bs> </hist> @@ -9208,62 +9192,62 @@ <b> <a>1</a> <b>4</b> - <v>15973</v> + <v>15997</v> </b> <b> <a>4</a> <b>7</b> - <v>17535</v> + <v>17562</v> </b> <b> <a>7</a> <b>11</b> - <v>16692</v> + <v>16718</v> </b> <b> <a>11</a> <b>16</b> - <v>17412</v> + <v>17438</v> </b> <b> <a>16</a> <b>21</b> - <v>17514</v> + <v>17541</v> </b> <b> <a>21</a> <b>26</b> - <v>15068</v> + <v>15091</v> </b> <b> <a>26</a> <b>31</b> - <v>16178</v> + <v>16203</v> </b> <b> <a>31</a> <b>36</b> - <v>17720</v> + <v>17747</v> </b> <b> <a>36</a> <b>40</b> - <v>15705</v> + <v>15729</v> </b> <b> <a>40</a> <b>44</b> - <v>16301</v> + <v>16326</v> </b> <b> <a>44</a> <b>49</b> - <v>16898</v> + <v>16923</v> </b> <b> <a>49</a> <b>63</b> - <v>8942</v> + <v>8956</v> </b> </bs> </hist> @@ -9279,27 +9263,27 @@ <b> <a>1</a> <b>2</b> - <v>101964</v> + <v>102119</v> </b> <b> <a>2</a> <b>3</b> - <v>44629</v> + <v>44698</v> </b> <b> <a>3</a> <b>4</b> - <v>27649</v> + <v>27691</v> </b> <b> <a>4</a> <b>6</b> - <v>14575</v> + <v>14597</v> </b> <b> <a>6</a> <b>23</b> - <v>3124</v> + <v>3129</v> </b> </bs> </hist> @@ -9315,62 +9299,62 @@ <b> <a>1</a> <b>4</b> - <v>16959</v> + <v>16985</v> </b> <b> <a>4</a> <b>7</b> - <v>16651</v> + <v>16676</v> </b> <b> <a>7</a> <b>11</b> - <v>16425</v> + <v>16450</v> </b> <b> <a>11</a> <b>16</b> - <v>16219</v> + <v>16244</v> </b> <b> <a>16</a> <b>21</b> - <v>16445</v> + <v>16470</v> </b> <b> <a>21</a> <b>27</b> - <v>16774</v> + <v>16800</v> </b> <b> <a>27</a> <b>33</b> - <v>16445</v> + <v>16470</v> </b> <b> <a>33</a> <b>38</b> - <v>14472</v> + <v>14494</v> </b> <b> <a>38</a> <b>43</b> - <v>15541</v> + <v>15565</v> </b> <b> <a>43</a> <b>47</b> - <v>14698</v> + <v>14720</v> </b> <b> <a>47</a> <b>52</b> - <v>16774</v> + <v>16800</v> </b> <b> <a>52</a> <b>65</b> - <v>14451</v> + <v>14473</v> </b> <b> <a>65</a> @@ -9467,7 +9451,7 @@ <b> <a>1</a> <b>2</b> - <v>328</v> + <v>329</v> </b> <b> <a>2</a> @@ -9477,7 +9461,7 @@ <b> <a>3</a> <b>4</b> - <v>143</v> + <v>144</v> </b> <b> <a>4</a> @@ -9517,7 +9501,7 @@ <b> <a>142</a> <b>144</b> - <v>143</v> + <v>144</v> </b> <b> <a>144</a> @@ -9700,7 +9684,7 @@ <b> <a>1</a> <b>2</b> - <v>328</v> + <v>329</v> </b> <b> <a>2</a> @@ -9776,67 +9760,67 @@ <b> <a>1</a> <b>5</b> - <v>16137</v> + <v>16162</v> </b> <b> <a>5</a> <b>9</b> - <v>16486</v> + <v>16512</v> </b> <b> <a>9</a> <b>15</b> - <v>15808</v> + <v>15832</v> </b> <b> <a>15</a> <b>23</b> - <v>15089</v> + <v>15112</v> </b> <b> <a>23</a> <b>32</b> - <v>15644</v> + <v>15667</v> </b> <b> <a>32</a> <b>44</b> - <v>14739</v> + <v>14762</v> </b> <b> <a>44</a> <b>60</b> - <v>14492</v> + <v>14515</v> </b> <b> <a>60</a> <b>80</b> - <v>15253</v> + <v>15276</v> </b> <b> <a>80</a> <b>103</b> - <v>14534</v> + <v>14556</v> </b> <b> <a>103</a> <b>130</b> - <v>14760</v> + <v>14782</v> </b> <b> <a>130</a> <b>160</b> - <v>14883</v> + <v>14906</v> </b> <b> <a>160</a> <b>195</b> - <v>14554</v> + <v>14576</v> </b> <b> <a>195</a> <b>299</b> - <v>9538</v> + <v>9553</v> </b> </bs> </hist> @@ -9852,67 +9836,67 @@ <b> <a>1</a> <b>2</b> - <v>23517</v> + <v>23553</v> </b> <b> <a>2</a> <b>3</b> - <v>15561</v> + <v>15585</v> </b> <b> <a>3</a> <b>4</b> - <v>11347</v> + <v>11364</v> </b> <b> <a>4</a> <b>6</b> - <v>16055</v> + <v>16079</v> </b> <b> <a>6</a> <b>8</b> - <v>13485</v> + <v>13506</v> </b> <b> <a>8</a> <b>11</b> - <v>16507</v> + <v>16532</v> </b> <b> <a>11</a> <b>15</b> - <v>14431</v> + <v>14453</v> </b> <b> <a>15</a> <b>20</b> - <v>16774</v> + <v>16800</v> </b> <b> <a>20</a> <b>26</b> - <v>14986</v> + <v>15009</v> </b> <b> <a>26</a> <b>33</b> - <v>16055</v> + <v>16079</v> </b> <b> <a>33</a> <b>40</b> - <v>14636</v> + <v>14659</v> </b> <b> <a>40</a> <b>49</b> - <v>14595</v> + <v>14617</v> </b> <b> <a>49</a> <b>60</b> - <v>3967</v> + <v>3973</v> </b> </bs> </hist> @@ -9928,27 +9912,27 @@ <b> <a>1</a> <b>2</b> - <v>95488</v> + <v>95634</v> </b> <b> <a>2</a> <b>3</b> - <v>50015</v> + <v>50092</v> </b> <b> <a>3</a> <b>4</b> - <v>29376</v> + <v>29421</v> </b> <b> <a>4</a> <b>6</b> - <v>15602</v> + <v>15626</v> </b> <b> <a>6</a> <b>11</b> - <v>1439</v> + <v>1441</v> </b> </bs> </hist> @@ -9964,62 +9948,62 @@ <b> <a>1</a> <b>4</b> - <v>15829</v> + <v>15853</v> </b> <b> <a>4</a> <b>7</b> - <v>17453</v> + <v>17479</v> </b> <b> <a>7</a> <b>11</b> - <v>16486</v> + <v>16512</v> </b> <b> <a>11</a> <b>16</b> - <v>17350</v> + <v>17376</v> </b> <b> <a>16</a> <b>21</b> - <v>17309</v> + <v>17335</v> </b> <b> <a>21</a> <b>26</b> - <v>15150</v> + <v>15173</v> </b> <b> <a>26</a> <b>31</b> - <v>16301</v> + <v>16326</v> </b> <b> <a>31</a> <b>36</b> - <v>17679</v> + <v>17706</v> </b> <b> <a>36</a> <b>40</b> - <v>15294</v> + <v>15317</v> </b> <b> <a>40</a> <b>44</b> - <v>16445</v> + <v>16470</v> </b> <b> <a>44</a> <b>49</b> - <v>16980</v> + <v>17006</v> </b> <b> <a>49</a> <b>63</b> - <v>9641</v> + <v>9656</v> </b> </bs> </hist> @@ -10035,62 +10019,62 @@ <b> <a>1</a> <b>4</b> - <v>17185</v> + <v>17212</v> </b> <b> <a>4</a> <b>7</b> - <v>16795</v> + <v>16820</v> </b> <b> <a>7</a> <b>11</b> - <v>16425</v> + <v>16450</v> </b> <b> <a>11</a> <b>16</b> - <v>16877</v> + <v>16903</v> </b> <b> <a>16</a> <b>21</b> - <v>16014</v> + <v>16038</v> </b> <b> <a>21</a> <b>26</b> - <v>14513</v> + <v>14535</v> </b> <b> <a>26</a> <b>32</b> - <v>16158</v> + <v>16182</v> </b> <b> <a>32</a> <b>38</b> - <v>17494</v> + <v>17520</v> </b> <b> <a>38</a> <b>43</b> - <v>16137</v> + <v>16162</v> </b> <b> <a>43</a> <b>47</b> - <v>14472</v> + <v>14494</v> </b> <b> <a>47</a> <b>52</b> - <v>16569</v> + <v>16594</v> </b> <b> <a>52</a> <b>69</b> - <v>13280</v> + <v>13300</v> </b> </bs> </hist> @@ -10121,7 +10105,7 @@ <b> <a>10</a> <b>16</b> - <v>246</v> + <v>247</v> </b> <b> <a>16</a> @@ -10182,7 +10166,7 @@ <b> <a>1</a> <b>2</b> - <v>328</v> + <v>329</v> </b> <b> <a>2</a> @@ -10222,12 +10206,12 @@ <b> <a>137</a> <b>142</b> - <v>246</v> + <v>247</v> </b> <b> <a>142</a> <b>147</b> - <v>143</v> + <v>144</v> </b> <b> <a>147</a> @@ -10237,7 +10221,7 @@ <b> <a>148</a> <b>151</b> - <v>246</v> + <v>247</v> </b> <b> <a>151</a> @@ -10268,7 +10252,7 @@ <b> <a>4</a> <b>8</b> - <v>246</v> + <v>247</v> </b> <b> <a>8</a> @@ -10344,17 +10328,17 @@ <b> <a>4</a> <b>9</b> - <v>246</v> + <v>247</v> </b> <b> <a>9</a> <b>14</b> - <v>246</v> + <v>247</v> </b> <b> <a>14</a> <b>22</b> - <v>246</v> + <v>247</v> </b> <b> <a>23</a> @@ -10415,7 +10399,7 @@ <b> <a>4</a> <b>8</b> - <v>246</v> + <v>247</v> </b> <b> <a>8</a> @@ -10475,23 +10459,23 @@ </relation> <relation> <name>numlines</name> - <cardinality>1380918</cardinality> + <cardinality>1382466</cardinality> <columnsizes> <e> <k>element_id</k> - <v>1373930</v> + <v>1375469</v> </e> <e> <k>num_lines</k> - <v>101565</v> + <v>101679</v> </e> <e> <k>num_code</k> - <v>84793</v> + <v>84888</v> </e> <e> <k>num_comment</k> - <v>59634</v> + <v>59701</v> </e> </columnsizes> <dependencies> @@ -10505,12 +10489,12 @@ <b> <a>1</a> <b>2</b> - <v>1366941</v> + <v>1368473</v> </b> <b> <a>2</a> <b>3</b> - <v>6988</v> + <v>6996</v> </b> </bs> </hist> @@ -10526,12 +10510,12 @@ <b> <a>1</a> <b>2</b> - <v>1367873</v> + <v>1369406</v> </b> <b> <a>2</a> <b>3</b> - <v>6056</v> + <v>6063</v> </b> </bs> </hist> @@ -10547,7 +10531,7 @@ <b> <a>1</a> <b>2</b> - <v>1373930</v> + <v>1375469</v> </b> </bs> </hist> @@ -10563,27 +10547,27 @@ <b> <a>1</a> <b>2</b> - <v>68020</v> + <v>68097</v> </b> <b> <a>2</a> <b>3</b> - <v>12113</v> + <v>12126</v> </b> <b> <a>3</a> <b>4</b> - <v>7454</v> + <v>7462</v> </b> <b> <a>4</a> <b>21</b> - <v>7920</v> + <v>7929</v> </b> <b> <a>29</a> <b>921</b> - <v>6056</v> + <v>6063</v> </b> </bs> </hist> @@ -10599,27 +10583,27 @@ <b> <a>1</a> <b>2</b> - <v>70350</v> + <v>70429</v> </b> <b> <a>2</a> <b>3</b> - <v>12113</v> + <v>12126</v> </b> <b> <a>3</a> <b>4</b> - <v>8386</v> + <v>8395</v> </b> <b> <a>4</a> <b>6</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>6</a> <b>7</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -10635,22 +10619,22 @@ <b> <a>1</a> <b>2</b> - <v>69418</v> + <v>69496</v> </b> <b> <a>2</a> <b>3</b> - <v>14908</v> + <v>14925</v> </b> <b> <a>3</a> <b>4</b> - <v>10715</v> + <v>10727</v> </b> <b> <a>4</a> <b>7</b> - <v>6522</v> + <v>6529</v> </b> </bs> </hist> @@ -10666,27 +10650,27 @@ <b> <a>1</a> <b>2</b> - <v>52646</v> + <v>52705</v> </b> <b> <a>2</a> <b>3</b> - <v>14442</v> + <v>14458</v> </b> <b> <a>3</a> <b>5</b> - <v>6522</v> + <v>6529</v> </b> <b> <a>5</a> <b>42</b> - <v>6522</v> + <v>6529</v> </b> <b> <a>44</a> <b>922</b> - <v>4658</v> + <v>4664</v> </b> </bs> </hist> @@ -10702,27 +10686,27 @@ <b> <a>1</a> <b>2</b> - <v>52646</v> + <v>52705</v> </b> <b> <a>2</a> <b>3</b> - <v>16772</v> + <v>16791</v> </b> <b> <a>3</a> <b>5</b> - <v>6056</v> + <v>6063</v> </b> <b> <a>5</a> <b>8</b> - <v>6522</v> + <v>6529</v> </b> <b> <a>8</a> <b>12</b> - <v>2795</v> + <v>2798</v> </b> </bs> </hist> @@ -10738,27 +10722,27 @@ <b> <a>1</a> <b>2</b> - <v>53112</v> + <v>53171</v> </b> <b> <a>2</a> <b>3</b> - <v>15840</v> + <v>15858</v> </b> <b> <a>3</a> <b>5</b> - <v>7454</v> + <v>7462</v> </b> <b> <a>5</a> <b>7</b> - <v>5124</v> + <v>5130</v> </b> <b> <a>7</a> <b>10</b> - <v>3261</v> + <v>3264</v> </b> </bs> </hist> @@ -10774,32 +10758,32 @@ <b> <a>1</a> <b>2</b> - <v>34476</v> + <v>34515</v> </b> <b> <a>2</a> <b>3</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>3</a> <b>4</b> - <v>4193</v> + <v>4197</v> </b> <b> <a>4</a> <b>6</b> - <v>4658</v> + <v>4664</v> </b> <b> <a>6</a> <b>11</b> - <v>5124</v> + <v>5130</v> </b> <b> <a>17</a> <b>2596</b> - <v>1863</v> + <v>1865</v> </b> </bs> </hist> @@ -10815,32 +10799,32 @@ <b> <a>1</a> <b>2</b> - <v>34476</v> + <v>34515</v> </b> <b> <a>2</a> <b>3</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>3</a> <b>4</b> - <v>4193</v> + <v>4197</v> </b> <b> <a>4</a> <b>6</b> - <v>4658</v> + <v>4664</v> </b> <b> <a>6</a> <b>8</b> - <v>4658</v> + <v>4664</v> </b> <b> <a>10</a> <b>38</b> - <v>2329</v> + <v>2332</v> </b> </bs> </hist> @@ -10856,32 +10840,32 @@ <b> <a>1</a> <b>2</b> - <v>34476</v> + <v>34515</v> </b> <b> <a>2</a> <b>3</b> - <v>9317</v> + <v>9328</v> </b> <b> <a>3</a> <b>4</b> - <v>4193</v> + <v>4197</v> </b> <b> <a>4</a> <b>6</b> - <v>4658</v> + <v>4664</v> </b> <b> <a>6</a> <b>10</b> - <v>4658</v> + <v>4664</v> </b> <b> <a>10</a> <b>37</b> - <v>2329</v> + <v>2332</v> </b> </bs> </hist> @@ -10891,11 +10875,11 @@ </relation> <relation> <name>diagnostics</name> - <cardinality>5192</cardinality> + <cardinality>5013</cardinality> <columnsizes> <e> <k>id</k> - <v>5192</v> + <v>5013</v> </e> <e> <k>severity</k> @@ -10903,19 +10887,19 @@ </e> <e> <k>error_tag</k> - <v>39</v> + <v>38</v> </e> <e> <k>error_message</k> - <v>414</v> + <v>400</v> </e> <e> <k>full_error_message</k> - <v>4362</v> + <v>4213</v> </e> <e> <k>location</k> - <v>177</v> + <v>171</v> </e> </columnsizes> <dependencies> @@ -10929,7 +10913,7 @@ <b> <a>1</a> <b>2</b> - <v>5192</v> + <v>5013</v> </b> </bs> </hist> @@ -10945,7 +10929,7 @@ <b> <a>1</a> <b>2</b> - <v>5192</v> + <v>5013</v> </b> </bs> </hist> @@ -10961,7 +10945,7 @@ <b> <a>1</a> <b>2</b> - <v>5192</v> + <v>5013</v> </b> </bs> </hist> @@ -10977,7 +10961,7 @@ <b> <a>1</a> <b>2</b> - <v>5192</v> + <v>5013</v> </b> </bs> </hist> @@ -10993,7 +10977,7 @@ <b> <a>1</a> <b>2</b> - <v>5192</v> + <v>5013</v> </b> </bs> </hist> @@ -11110,7 +11094,7 @@ <b> <a>1</a> <b>2</b> - <v>39</v> + <v>38</v> </b> </bs> </hist> @@ -11189,17 +11173,17 @@ <b> <a>1</a> <b>2</b> - <v>118</v> + <v>114</v> </b> <b> <a>2</a> <b>3</b> - <v>157</v> + <v>152</v> </b> <b> <a>3</a> <b>4</b> - <v>78</v> + <v>76</v> </b> <b> <a>43</a> @@ -11209,7 +11193,7 @@ <b> <a>93</a> <b>94</b> - <v>39</v> + <v>38</v> </b> </bs> </hist> @@ -11225,7 +11209,7 @@ <b> <a>1</a> <b>2</b> - <v>414</v> + <v>400</v> </b> </bs> </hist> @@ -11241,7 +11225,7 @@ <b> <a>1</a> <b>2</b> - <v>414</v> + <v>400</v> </b> </bs> </hist> @@ -11257,22 +11241,22 @@ <b> <a>1</a> <b>2</b> - <v>138</v> + <v>133</v> </b> <b> <a>2</a> <b>3</b> - <v>157</v> + <v>152</v> </b> <b> <a>3</a> <b>4</b> - <v>78</v> + <v>76</v> </b> <b> <a>93</a> <b>94</b> - <v>39</v> + <v>38</v> </b> </bs> </hist> @@ -11288,22 +11272,22 @@ <b> <a>1</a> <b>2</b> - <v>177</v> + <v>171</v> </b> <b> <a>2</a> <b>3</b> - <v>118</v> + <v>114</v> </b> <b> <a>3</a> <b>4</b> - <v>78</v> + <v>76</v> </b> <b> <a>4</a> <b>5</b> - <v>39</v> + <v>38</v> </b> </bs> </hist> @@ -11319,7 +11303,7 @@ <b> <a>1</a> <b>2</b> - <v>4343</v> + <v>4194</v> </b> <b> <a>43</a> @@ -11340,7 +11324,7 @@ <b> <a>1</a> <b>2</b> - <v>4362</v> + <v>4213</v> </b> </bs> </hist> @@ -11356,7 +11340,7 @@ <b> <a>1</a> <b>2</b> - <v>4362</v> + <v>4213</v> </b> </bs> </hist> @@ -11372,7 +11356,7 @@ <b> <a>1</a> <b>2</b> - <v>4362</v> + <v>4213</v> </b> </bs> </hist> @@ -11388,7 +11372,7 @@ <b> <a>1</a> <b>2</b> - <v>4362</v> + <v>4213</v> </b> </bs> </hist> @@ -11404,17 +11388,17 @@ <b> <a>6</a> <b>7</b> - <v>39</v> + <v>38</v> </b> <b> <a>22</a> <b>23</b> - <v>39</v> + <v>38</v> </b> <b> <a>41</a> <b>42</b> - <v>78</v> + <v>76</v> </b> <b> <a>43</a> @@ -11435,7 +11419,7 @@ <b> <a>1</a> <b>2</b> - <v>177</v> + <v>171</v> </b> </bs> </hist> @@ -11451,7 +11435,7 @@ <b> <a>1</a> <b>2</b> - <v>177</v> + <v>171</v> </b> </bs> </hist> @@ -11472,17 +11456,17 @@ <b> <a>3</a> <b>4</b> - <v>39</v> + <v>38</v> </b> <b> <a>5</a> <b>6</b> - <v>39</v> + <v>38</v> </b> <b> <a>6</a> <b>7</b> - <v>78</v> + <v>76</v> </b> </bs> </hist> @@ -11503,17 +11487,17 @@ <b> <a>6</a> <b>7</b> - <v>39</v> + <v>38</v> </b> <b> <a>22</a> <b>23</b> - <v>39</v> + <v>38</v> </b> <b> <a>41</a> <b>42</b> - <v>78</v> + <v>76</v> </b> </bs> </hist> @@ -11523,15 +11507,15 @@ </relation> <relation> <name>files</name> - <cardinality>122996</cardinality> + <cardinality>123134</cardinality> <columnsizes> <e> <k>id</k> - <v>122996</v> + <v>123134</v> </e> <e> <k>name</k> - <v>122996</v> + <v>123134</v> </e> </columnsizes> <dependencies> @@ -11545,7 +11529,7 @@ <b> <a>1</a> <b>2</b> - <v>122996</v> + <v>123134</v> </b> </bs> </hist> @@ -11561,7 +11545,7 @@ <b> <a>1</a> <b>2</b> - <v>122996</v> + <v>123134</v> </b> </bs> </hist> @@ -11571,15 +11555,15 @@ </relation> <relation> <name>folders</name> - <cardinality>15374</cardinality> + <cardinality>16324</cardinality> <columnsizes> <e> <k>id</k> - <v>15374</v> + <v>16324</v> </e> <e> <k>name</k> - <v>15374</v> + <v>16324</v> </e> </columnsizes> <dependencies> @@ -11593,7 +11577,7 @@ <b> <a>1</a> <b>2</b> - <v>15374</v> + <v>16324</v> </b> </bs> </hist> @@ -11609,7 +11593,7 @@ <b> <a>1</a> <b>2</b> - <v>15374</v> + <v>16324</v> </b> </bs> </hist> @@ -11619,15 +11603,15 @@ </relation> <relation> <name>containerparent</name> - <cardinality>137439</cardinality> + <cardinality>138526</cardinality> <columnsizes> <e> <k>parent</k> - <v>15374</v> + <v>16324</v> </e> <e> <k>child</k> - <v>137439</v> + <v>138526</v> </e> </columnsizes> <dependencies> @@ -11641,32 +11625,32 @@ <b> <a>1</a> <b>2</b> - <v>6522</v> + <v>7462</v> </b> <b> <a>2</a> <b>3</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>3</a> - <b>5</b> - <v>1397</v> + <b>4</b> + <v>1399</v> </b> <b> - <a>5</a> + <a>4</a> <b>12</b> - <v>1397</v> + <v>1399</v> </b> <b> <a>23</a> <b>28</b> - <v>1397</v> + <v>1399</v> </b> <b> <a>40</a> <b>67</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -11682,7 +11666,7 @@ <b> <a>1</a> <b>2</b> - <v>137439</v> + <v>138526</v> </b> </bs> </hist> @@ -11692,11 +11676,11 @@ </relation> <relation> <name>fileannotations</name> - <cardinality>5104924</cardinality> + <cardinality>5084962</cardinality> <columnsizes> <e> <k>id</k> - <v>4875</v> + <v>4856</v> </e> <e> <k>kind</k> @@ -11704,11 +11688,11 @@ </e> <e> <k>name</k> - <v>54511</v> + <v>54298</v> </e> <e> <k>value</k> - <v>45826</v> + <v>45647</v> </e> </columnsizes> <dependencies> @@ -11722,12 +11706,12 @@ <b> <a>1</a> <b>2</b> - <v>168</v> + <v>167</v> </b> <b> <a>2</a> <b>3</b> - <v>4707</v> + <v>4688</v> </b> </bs> </hist> @@ -11743,42 +11727,42 @@ <b> <a>1</a> <b>102</b> - <v>381</v> + <v>380</v> </b> <b> <a>102</a> <b>225</b> - <v>370</v> + <v>369</v> </b> <b> <a>227</a> <b>299</b> - <v>370</v> + <v>369</v> </b> <b> <a>301</a> <b>452</b> - <v>393</v> + <v>391</v> </b> <b> <a>452</a> <b>555</b> - <v>370</v> + <v>369</v> </b> <b> <a>559</a> <b>626</b> - <v>370</v> + <v>369</v> </b> <b> <a>626</a> <b>716</b> - <v>370</v> + <v>369</v> </b> <b> <a>729</a> <b>904</b> - <v>370</v> + <v>369</v> </b> <b> <a>904</a> @@ -11788,12 +11772,12 @@ <b> <a>936</a> <b>937</b> - <v>1415</v> + <v>1410</v> </b> <b> <a>1083</a> <b>2036</b> - <v>370</v> + <v>369</v> </b> <b> <a>2293</a> @@ -11814,52 +11798,52 @@ <b> <a>1</a> <b>114</b> - <v>381</v> + <v>380</v> </b> <b> <a>114</a> <b>275</b> - <v>370</v> + <v>369</v> </b> <b> <a>275</a> <b>363</b> - <v>370</v> + <v>369</v> </b> <b> <a>393</a> <b>638</b> - <v>370</v> + <v>369</v> </b> <b> <a>643</a> <b>744</b> - <v>370</v> + <v>369</v> </b> <b> <a>751</a> <b>955</b> - <v>370</v> + <v>369</v> </b> <b> <a>955</a> <b>1087</b> - <v>370</v> + <v>369</v> </b> <b> <a>1088</a> <b>1501</b> - <v>247</v> + <v>246</v> </b> <b> <a>1501</a> <b>1502</b> - <v>1415</v> + <v>1410</v> </b> <b> <a>1504</a> <b>1874</b> - <v>370</v> + <v>369</v> </b> <b> <a>1972</a> @@ -11943,62 +11927,62 @@ <b> <a>1</a> <b>2</b> - <v>8819</v> + <v>8784</v> </b> <b> <a>2</a> <b>3</b> - <v>6190</v> + <v>6166</v> </b> <b> <a>3</a> <b>5</b> - <v>4156</v> + <v>4140</v> </b> <b> <a>5</a> <b>9</b> - <v>4246</v> + <v>4230</v> </b> <b> <a>9</a> <b>14</b> - <v>3965</v> + <v>3950</v> </b> <b> <a>14</a> <b>18</b> - <v>4156</v> + <v>4140</v> </b> <b> <a>18</a> <b>20</b> - <v>4696</v> + <v>4677</v> </b> <b> <a>20</a> <b>34</b> - <v>4201</v> + <v>4185</v> </b> <b> <a>34</a> <b>128</b> - <v>4482</v> + <v>4465</v> </b> <b> <a>128</a> <b>229</b> - <v>4100</v> + <v>4084</v> </b> <b> <a>229</a> <b>387</b> - <v>4224</v> + <v>4207</v> </b> <b> <a>387</a> <b>434</b> - <v>1269</v> + <v>1264</v> </b> </bs> </hist> @@ -12014,7 +11998,7 @@ <b> <a>1</a> <b>2</b> - <v>54511</v> + <v>54298</v> </b> </bs> </hist> @@ -12030,62 +12014,62 @@ <b> <a>1</a> <b>2</b> - <v>8830</v> + <v>8796</v> </b> <b> <a>2</a> <b>3</b> - <v>8021</v> + <v>7990</v> </b> <b> <a>3</a> <b>4</b> - <v>2550</v> + <v>2540</v> </b> <b> <a>4</a> <b>6</b> - <v>4493</v> + <v>4476</v> </b> <b> <a>6</a> <b>9</b> - <v>4111</v> + <v>4095</v> </b> <b> <a>9</a> <b>14</b> - <v>4190</v> + <v>4174</v> </b> <b> <a>14</a> <b>17</b> - <v>4111</v> + <v>4095</v> </b> <b> <a>17</a> <b>22</b> - <v>4572</v> + <v>4554</v> </b> <b> <a>22</a> <b>41</b> - <v>4190</v> + <v>4174</v> </b> <b> <a>41</a> <b>82</b> - <v>4145</v> + <v>4129</v> </b> <b> <a>82</a> <b>157</b> - <v>4089</v> + <v>4073</v> </b> <b> <a>158</a> <b>1895</b> - <v>1202</v> + <v>1197</v> </b> </bs> </hist> @@ -12101,67 +12085,67 @@ <b> <a>1</a> <b>2</b> - <v>7122</v> + <v>7095</v> </b> <b> <a>2</a> <b>5</b> - <v>2224</v> + <v>2215</v> </b> <b> <a>5</a> <b>8</b> - <v>3314</v> + <v>3301</v> </b> <b> <a>8</a> <b>15</b> - <v>3516</v> + <v>3502</v> </b> <b> <a>15</a> <b>17</b> - <v>2527</v> + <v>2517</v> </b> <b> <a>17</a> <b>19</b> - <v>4123</v> + <v>4107</v> </b> <b> <a>19</a> <b>34</b> - <v>3314</v> + <v>3301</v> </b> <b> <a>34</a> <b>189</b> - <v>3606</v> + <v>3592</v> </b> <b> <a>189</a> <b>201</b> - <v>3595</v> + <v>3581</v> </b> <b> <a>201</a> <b>266</b> - <v>3538</v> + <v>3525</v> </b> <b> <a>266</a> <b>321</b> - <v>3662</v> + <v>3648</v> </b> <b> <a>322</a> <b>399</b> - <v>3932</v> + <v>3916</v> </b> <b> <a>399</a> <b>435</b> - <v>1348</v> + <v>1342</v> </b> </bs> </hist> @@ -12177,7 +12161,7 @@ <b> <a>1</a> <b>2</b> - <v>45815</v> + <v>45636</v> </b> <b> <a>2</a> @@ -12198,67 +12182,67 @@ <b> <a>1</a> <b>2</b> - <v>7145</v> + <v>7117</v> </b> <b> <a>2</a> <b>5</b> - <v>2572</v> + <v>2562</v> </b> <b> <a>5</a> <b>8</b> - <v>3494</v> + <v>3480</v> </b> <b> <a>8</a> <b>15</b> - <v>3538</v> + <v>3525</v> </b> <b> <a>15</a> <b>17</b> - <v>2819</v> + <v>2808</v> </b> <b> <a>17</a> <b>19</b> - <v>3572</v> + <v>3558</v> </b> <b> <a>19</a> <b>29</b> - <v>3494</v> + <v>3480</v> </b> <b> <a>29</a> <b>39</b> - <v>3651</v> + <v>3637</v> </b> <b> <a>39</a> <b>48</b> - <v>3595</v> + <v>3581</v> </b> <b> <a>48</a> <b>74</b> - <v>3550</v> + <v>3536</v> </b> <b> <a>74</a> <b>102</b> - <v>3437</v> + <v>3424</v> </b> <b> <a>102</a> <b>119</b> - <v>3583</v> + <v>3569</v> </b> <b> <a>119</a> <b>146</b> - <v>1370</v> + <v>1365</v> </b> </bs> </hist> @@ -12268,15 +12252,15 @@ </relation> <relation> <name>inmacroexpansion</name> - <cardinality>109622207</cardinality> + <cardinality>109785545</cardinality> <columnsizes> <e> <k>id</k> - <v>18001590</v> + <v>18028412</v> </e> <e> <k>inv</k> - <v>2696311</v> + <v>2700329</v> </e> </columnsizes> <dependencies> @@ -12290,37 +12274,37 @@ <b> <a>1</a> <b>3</b> - <v>1579695</v> + <v>1582049</v> </b> <b> <a>3</a> <b>5</b> - <v>1076257</v> + <v>1077861</v> </b> <b> <a>5</a> <b>6</b> - <v>1183189</v> + <v>1184952</v> </b> <b> <a>6</a> <b>7</b> - <v>4813034</v> + <v>4820205</v> </b> <b> <a>7</a> <b>8</b> - <v>6376831</v> + <v>6386332</v> </b> <b> <a>8</a> <b>9</b> - <v>2601529</v> + <v>2605405</v> </b> <b> <a>9</a> <b>21</b> - <v>371052</v> + <v>371604</v> </b> </bs> </hist> @@ -12336,57 +12320,57 @@ <b> <a>1</a> <b>2</b> - <v>377884</v> + <v>378447</v> </b> <b> <a>2</a> <b>3</b> - <v>543330</v> + <v>544135</v> </b> <b> <a>3</a> <b>4</b> - <v>351012</v> + <v>351535</v> </b> <b> <a>4</a> <b>7</b> - <v>200372</v> + <v>200670</v> </b> <b> <a>7</a> <b>8</b> - <v>206856</v> + <v>207164</v> </b> <b> <a>8</a> <b>9</b> - <v>241543</v> + <v>241902</v> </b> <b> <a>9</a> <b>10</b> - <v>2207</v> + <v>2210</v> </b> <b> <a>10</a> <b>11</b> - <v>325021</v> + <v>325505</v> </b> <b> <a>11</a> <b>337</b> - <v>224525</v> + <v>224864</v> </b> <b> <a>339</a> <b>423</b> - <v>206058</v> + <v>206365</v> </b> <b> <a>423</a> <b>7616</b> - <v>17499</v> + <v>17525</v> </b> </bs> </hist> @@ -12396,15 +12380,15 @@ </relation> <relation> <name>affectedbymacroexpansion</name> - <cardinality>35638060</cardinality> + <cardinality>35691161</cardinality> <columnsizes> <e> <k>id</k> - <v>5149370</v> + <v>5157043</v> </e> <e> <k>inv</k> - <v>2780793</v> + <v>2784936</v> </e> </columnsizes> <dependencies> @@ -12418,37 +12402,37 @@ <b> <a>1</a> <b>2</b> - <v>2811908</v> + <v>2816098</v> </b> <b> <a>2</a> <b>3</b> - <v>559328</v> + <v>560161</v> </b> <b> <a>3</a> <b>4</b> - <v>264527</v> + <v>264922</v> </b> <b> <a>4</a> <b>5</b> - <v>564985</v> + <v>565827</v> </b> <b> <a>5</a> <b>12</b> - <v>391343</v> + <v>391926</v> </b> <b> <a>12</a> <b>50</b> - <v>406819</v> + <v>407425</v> </b> <b> <a>50</a> <b>9900</b> - <v>150457</v> + <v>150681</v> </b> </bs> </hist> @@ -12464,67 +12448,67 @@ <b> <a>1</a> <b>4</b> - <v>228789</v> + <v>229130</v> </b> <b> <a>4</a> <b>7</b> - <v>231457</v> + <v>231802</v> </b> <b> <a>7</a> <b>9</b> - <v>220163</v> + <v>220491</v> </b> <b> <a>9</a> <b>12</b> - <v>250729</v> + <v>251102</v> </b> <b> <a>12</a> <b>13</b> - <v>333500</v> + <v>333997</v> </b> <b> <a>13</a> <b>14</b> - <v>165351</v> + <v>165598</v> </b> <b> <a>14</a> <b>15</b> - <v>298417</v> + <v>298861</v> </b> <b> <a>15</a> <b>16</b> - <v>121669</v> + <v>121850</v> </b> <b> <a>16</a> <b>17</b> - <v>276213</v> + <v>276624</v> </b> <b> <a>17</a> <b>18</b> - <v>146730</v> + <v>146949</v> </b> <b> <a>18</a> <b>20</b> - <v>251774</v> + <v>252149</v> </b> <b> <a>20</a> <b>25</b> - <v>208680</v> + <v>208991</v> </b> <b> <a>25</a> <b>109</b> - <v>47316</v> + <v>47386</v> </b> </bs> </hist> @@ -12534,19 +12518,19 @@ </relation> <relation> <name>macroinvocations</name> - <cardinality>33332083</cardinality> + <cardinality>33202987</cardinality> <columnsizes> <e> <k>id</k> - <v>33332083</v> + <v>33202987</v> </e> <e> <k>macro_id</k> - <v>79104</v> + <v>78795</v> </e> <e> <k>location</k> - <v>756755</v> + <v>753796</v> </e> <e> <k>kind</k> @@ -12564,7 +12548,7 @@ <b> <a>1</a> <b>2</b> - <v>33332083</v> + <v>33202987</v> </b> </bs> </hist> @@ -12580,7 +12564,7 @@ <b> <a>1</a> <b>2</b> - <v>33332083</v> + <v>33202987</v> </b> </bs> </hist> @@ -12596,7 +12580,7 @@ <b> <a>1</a> <b>2</b> - <v>33332083</v> + <v>33202987</v> </b> </bs> </hist> @@ -12612,57 +12596,57 @@ <b> <a>1</a> <b>2</b> - <v>16178</v> + <v>16114</v> </b> <b> <a>2</a> <b>3</b> - <v>16492</v> + <v>16428</v> </b> <b> <a>3</a> <b>4</b> - <v>3100</v> + <v>3088</v> </b> <b> <a>4</a> <b>5</b> - <v>5246</v> + <v>5226</v> </b> <b> <a>5</a> <b>8</b> - <v>5662</v> + <v>5640</v> </b> <b> <a>8</a> <b>13</b> - <v>6078</v> + <v>6054</v> </b> <b> <a>13</a> <b>26</b> - <v>6156</v> + <v>6121</v> </b> <b> <a>26</a> <b>61</b> - <v>6033</v> + <v>6009</v> </b> <b> <a>61</a> - <b>200</b> - <v>5954</v> + <b>199</b> + <v>5919</v> </b> <b> - <a>200</a> + <a>199</a> <b>1697</b> - <v>5965</v> + <v>5964</v> </b> <b> <a>1716</a> <b>168807</b> - <v>2235</v> + <v>2226</v> </b> </bs> </hist> @@ -12678,37 +12662,37 @@ <b> <a>1</a> <b>2</b> - <v>42265</v> + <v>42100</v> </b> <b> <a>2</a> <b>3</b> - <v>10347</v> + <v>10306</v> </b> <b> <a>3</a> <b>4</b> - <v>5134</v> + <v>5114</v> </b> <b> <a>4</a> <b>6</b> - <v>6808</v> + <v>6781</v> </b> <b> <a>6</a> <b>13</b> - <v>6448</v> + <v>6423</v> </b> <b> <a>13</a> <b>66</b> - <v>5976</v> + <v>5953</v> </b> <b> <a>66</a> <b>3614</b> - <v>2123</v> + <v>2115</v> </b> </bs> </hist> @@ -12724,12 +12708,12 @@ <b> <a>1</a> <b>2</b> - <v>73397</v> + <v>73110</v> </b> <b> <a>2</a> <b>3</b> - <v>5707</v> + <v>5684</v> </b> </bs> </hist> @@ -12745,42 +12729,37 @@ <b> <a>1</a> <b>2</b> - <v>279881</v> + <v>278787</v> </b> <b> <a>2</a> <b>3</b> - <v>168814</v> + <v>168154</v> </b> <b> <a>3</a> <b>4</b> - <v>70419</v> + <v>70144</v> </b> <b> <a>4</a> <b>5</b> - <v>60005</v> + <v>59770</v> </b> <b> <a>5</a> - <b>8</b> - <v>53679</v> - </b> - <b> - <a>8</a> - <b>17</b> - <v>62544</v> + <b>9</b> + <v>69786</v> </b> <b> - <a>17</a> - <b>525</b> - <v>56769</v> + <a>9</a> + <b>21</b> + <v>58595</v> </b> <b> - <a>534</a> + <a>21</a> <b>244764</b> - <v>4639</v> + <v>48557</v> </b> </bs> </hist> @@ -12796,12 +12775,12 @@ <b> <a>1</a> <b>2</b> - <v>710804</v> + <v>708025</v> </b> <b> <a>2</a> <b>350</b> - <v>45950</v> + <v>45770</v> </b> </bs> </hist> @@ -12817,7 +12796,7 @@ <b> <a>1</a> <b>2</b> - <v>756755</v> + <v>753796</v> </b> </bs> </hist> @@ -12836,8 +12815,8 @@ <v>11</v> </b> <b> - <a>2946191</a> - <b>2946192</b> + <a>2946302</a> + <b>2946303</b> <v>11</v> </b> </bs> @@ -12890,15 +12869,15 @@ </relation> <relation> <name>macroparent</name> - <cardinality>29807887</cardinality> + <cardinality>29691721</cardinality> <columnsizes> <e> <k>id</k> - <v>29807887</v> + <v>29691721</v> </e> <e> <k>parent_id</k> - <v>23175993</v> + <v>23085760</v> </e> </columnsizes> <dependencies> @@ -12912,7 +12891,7 @@ <b> <a>1</a> <b>2</b> - <v>29807887</v> + <v>29691721</v> </b> </bs> </hist> @@ -12928,17 +12907,17 @@ <b> <a>1</a> <b>2</b> - <v>17907074</v> + <v>17837443</v> </b> <b> <a>2</a> <b>3</b> - <v>4438249</v> + <v>4420895</v> </b> <b> <a>3</a> <b>88</b> - <v>830669</v> + <v>827421</v> </b> </bs> </hist> @@ -12948,15 +12927,15 @@ </relation> <relation> <name>macrolocationbind</name> - <cardinality>4037867</cardinality> + <cardinality>4044034</cardinality> <columnsizes> <e> <k>id</k> - <v>2826997</v> + <v>2831314</v> </e> <e> <k>location</k> - <v>2018105</v> + <v>2021186</v> </e> </columnsizes> <dependencies> @@ -12970,22 +12949,22 @@ <b> <a>1</a> <b>2</b> - <v>2226651</v> + <v>2230051</v> </b> <b> <a>2</a> <b>3</b> - <v>340625</v> + <v>341145</v> </b> <b> <a>3</a> <b>7</b> - <v>230187</v> + <v>230539</v> </b> <b> <a>7</a> <b>57</b> - <v>29533</v> + <v>29578</v> </b> </bs> </hist> @@ -13001,22 +12980,22 @@ <b> <a>1</a> <b>2</b> - <v>1608661</v> + <v>1611118</v> </b> <b> <a>2</a> <b>3</b> - <v>177421</v> + <v>177692</v> </b> <b> <a>3</a> <b>8</b> - <v>156639</v> + <v>156878</v> </b> <b> <a>8</a> <b>723</b> - <v>75382</v> + <v>75497</v> </b> </bs> </hist> @@ -13026,19 +13005,19 @@ </relation> <relation> <name>macro_argument_unexpanded</name> - <cardinality>84144991</cardinality> + <cardinality>83818746</cardinality> <columnsizes> <e> <k>invocation</k> - <v>26089756</v> + <v>25989002</v> </e> <e> <k>argument_index</k> - <v>741</v> + <v>738</v> </e> <e> <k>text</k> - <v>316788</v> + <v>315549</v> </e> </columnsizes> <dependencies> @@ -13052,22 +13031,22 @@ <b> <a>1</a> <b>2</b> - <v>7397659</v> + <v>7368800</v> </b> <b> <a>2</a> <b>3</b> - <v>10622885</v> + <v>10582220</v> </b> <b> <a>3</a> <b>4</b> - <v>6109677</v> + <v>6086111</v> </b> <b> <a>4</a> <b>67</b> - <v>1959533</v> + <v>1951870</v> </b> </bs> </hist> @@ -13083,22 +13062,22 @@ <b> <a>1</a> <b>2</b> - <v>7467484</v> + <v>7438351</v> </b> <b> <a>2</a> <b>3</b> - <v>10768736</v> + <v>10727500</v> </b> <b> <a>3</a> <b>4</b> - <v>5944143</v> + <v>5921224</v> </b> <b> <a>4</a> <b>67</b> - <v>1909392</v> + <v>1901925</v> </b> </bs> </hist> @@ -13114,16 +13093,16 @@ <b> <a>41230</a> <b>41231</b> - <v>651</v> + <v>649</v> </b> <b> <a>41432</a> <b>174417</b> - <v>56</v> + <v>55</v> </b> <b> - <a>718232</a> - <b>2322223</b> + <a>718261</a> + <b>2322336</b> <v>33</v> </b> </bs> @@ -13140,12 +13119,12 @@ <b> <a>2</a> <b>3</b> - <v>651</v> + <v>649</v> </b> <b> <a>13</a> <b>995</b> - <v>56</v> + <v>55</v> </b> <b> <a>6559</a> @@ -13166,57 +13145,57 @@ <b> <a>1</a> <b>2</b> - <v>34906</v> + <v>34770</v> </b> <b> <a>2</a> <b>3</b> - <v>60971</v> + <v>60732</v> </b> <b> <a>3</a> <b>4</b> - <v>17661</v> + <v>17592</v> </b> <b> <a>4</a> <b>5</b> - <v>44849</v> + <v>44674</v> </b> <b> <a>5</a> <b>7</b> - <v>23885</v> + <v>23713</v> </b> <b> <a>7</a> <b>12</b> - <v>18402</v> + <v>18364</v> </b> <b> <a>12</a> <b>16</b> - <v>21503</v> + <v>21430</v> </b> <b> <a>16</a> <b>23</b> - <v>24851</v> + <v>24765</v> </b> <b> <a>23</a> <b>42</b> - <v>24199</v> + <v>24116</v> </b> <b> <a>42</a> <b>129</b> - <v>23963</v> + <v>23870</v> </b> <b> <a>129</a> <b>522417</b> - <v>21593</v> + <v>21520</v> </b> </bs> </hist> @@ -13232,17 +13211,17 @@ <b> <a>1</a> <b>2</b> - <v>229100</v> + <v>228204</v> </b> <b> <a>2</a> <b>3</b> - <v>77452</v> + <v>77150</v> </b> <b> <a>3</a> <b>9</b> - <v>10234</v> + <v>10194</v> </b> </bs> </hist> @@ -13252,19 +13231,19 @@ </relation> <relation> <name>macro_argument_expanded</name> - <cardinality>84144991</cardinality> + <cardinality>83818746</cardinality> <columnsizes> <e> <k>invocation</k> - <v>26089756</v> + <v>25989002</v> </e> <e> <k>argument_index</k> - <v>741</v> + <v>738</v> </e> <e> <k>text</k> - <v>191980</v> + <v>191229</v> </e> </columnsizes> <dependencies> @@ -13278,22 +13257,22 @@ <b> <a>1</a> <b>2</b> - <v>7397659</v> + <v>7368800</v> </b> <b> <a>2</a> <b>3</b> - <v>10622885</v> + <v>10582220</v> </b> <b> <a>3</a> <b>4</b> - <v>6109677</v> + <v>6086111</v> </b> <b> <a>4</a> <b>67</b> - <v>1959533</v> + <v>1951870</v> </b> </bs> </hist> @@ -13309,22 +13288,22 @@ <b> <a>1</a> <b>2</b> - <v>10638704</v> + <v>10597171</v> </b> <b> <a>2</a> <b>3</b> - <v>9157482</v> + <v>9122547</v> </b> <b> <a>3</a> <b>4</b> - <v>5183073</v> + <v>5163131</v> </b> <b> <a>4</a> <b>9</b> - <v>1110494</v> + <v>1106152</v> </b> </bs> </hist> @@ -13340,16 +13319,16 @@ <b> <a>41230</a> <b>41231</b> - <v>651</v> + <v>649</v> </b> <b> <a>41432</a> <b>174417</b> - <v>56</v> + <v>55</v> </b> <b> - <a>718232</a> - <b>2322223</b> + <a>718261</a> + <b>2322336</b> <v>33</v> </b> </bs> @@ -13366,12 +13345,12 @@ <b> <a>1</a> <b>2</b> - <v>640</v> + <v>637</v> </b> <b> <a>2</a> <b>76</b> - <v>56</v> + <v>55</v> </b> <b> <a>870</a> @@ -13392,62 +13371,62 @@ <b> <a>1</a> <b>2</b> - <v>20694</v> + <v>20613</v> </b> <b> <a>2</a> <b>3</b> - <v>37131</v> + <v>36985</v> </b> <b> <a>3</a> <b>4</b> - <v>9021</v> + <v>8986</v> </b> <b> <a>4</a> <b>5</b> - <v>16301</v> + <v>16237</v> </b> <b> <a>5</a> <b>6</b> - <v>2471</v> + <v>2394</v> </b> <b> <a>6</a> <b>7</b> - <v>22750</v> + <v>22650</v> </b> <b> <a>7</a> <b>9</b> - <v>14695</v> + <v>14671</v> </b> <b> <a>9</a> <b>14</b> - <v>11976</v> + <v>11940</v> </b> <b> <a>14</a> <b>19</b> - <v>14504</v> + <v>14425</v> </b> <b> <a>19</a> - <b>49</b> - <v>15739</v> + <b>48</b> + <v>14346</v> </b> <b> - <a>49</a> - <b>169</b> - <v>14414</v> + <a>48</a> + <b>151</b> + <v>14357</v> </b> <b> - <a>169</a> + <a>152</a> <b>1060462</b> - <v>12279</v> + <v>13619</v> </b> </bs> </hist> @@ -13463,17 +13442,17 @@ <b> <a>1</a> <b>2</b> - <v>97158</v> + <v>96778</v> </b> <b> <a>2</a> <b>3</b> - <v>80486</v> + <v>80171</v> </b> <b> <a>3</a> <b>66</b> - <v>14335</v> + <v>14279</v> </b> </bs> </hist> @@ -13483,19 +13462,19 @@ </relation> <relation> <name>functions</name> - <cardinality>4640799</cardinality> + <cardinality>4646000</cardinality> <columnsizes> <e> <k>id</k> - <v>4640799</v> + <v>4646000</v> </e> <e> <k>name</k> - <v>1915302</v> + <v>1916982</v> </e> <e> <k>kind</k> - <v>3261</v> + <v>3264</v> </e> </columnsizes> <dependencies> @@ -13509,7 +13488,7 @@ <b> <a>1</a> <b>2</b> - <v>4640799</v> + <v>4646000</v> </b> </bs> </hist> @@ -13525,7 +13504,7 @@ <b> <a>1</a> <b>2</b> - <v>4640799</v> + <v>4646000</v> </b> </bs> </hist> @@ -13541,22 +13520,22 @@ <b> <a>1</a> <b>2</b> - <v>1502983</v> + <v>1504201</v> </b> <b> <a>2</a> <b>3</b> - <v>151882</v> + <v>152052</v> </b> <b> <a>3</a> <b>5</b> - <v>150018</v> + <v>150186</v> </b> <b> <a>5</a> <b>1676</b> - <v>110417</v> + <v>110541</v> </b> </bs> </hist> @@ -13572,12 +13551,12 @@ <b> <a>1</a> <b>2</b> - <v>1914836</v> + <v>1916516</v> </b> <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -13593,37 +13572,37 @@ <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>64</a> <b>65</b> - <v>465</v> + <v>466</v> </b> <b> <a>173</a> <b>174</b> - <v>465</v> + <v>466</v> </b> <b> <a>195</a> <b>196</b> - <v>465</v> + <v>466</v> </b> <b> <a>1354</a> <b>1355</b> - <v>465</v> + <v>466</v> </b> <b> <a>2382</a> <b>2383</b> - <v>465</v> + <v>466</v> </b> <b> <a>5789</a> <b>5790</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -13639,37 +13618,37 @@ <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> <b> <a>33</a> <b>34</b> - <v>465</v> + <v>466</v> </b> <b> - <a>39</a> - <b>40</b> - <v>465</v> + <a>38</a> + <b>39</b> + <v>466</v> </b> <b> <a>94</a> <b>95</b> - <v>465</v> + <v>466</v> </b> <b> <a>195</a> <b>196</b> - <v>465</v> + <v>466</v> </b> <b> <a>245</a> <b>246</b> - <v>465</v> + <v>466</v> </b> <b> <a>3504</a> <b>3505</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -13679,15 +13658,15 @@ </relation> <relation> <name>function_entry_point</name> - <cardinality>1155424</cardinality> + <cardinality>1156719</cardinality> <columnsizes> <e> <k>id</k> - <v>1145640</v> + <v>1146924</v> </e> <e> <k>entry_point</k> - <v>1155424</v> + <v>1156719</v> </e> </columnsizes> <dependencies> @@ -13701,12 +13680,12 @@ <b> <a>1</a> <b>2</b> - <v>1135856</v> + <v>1137129</v> </b> <b> <a>2</a> <b>3</b> - <v>9783</v> + <v>9794</v> </b> </bs> </hist> @@ -13722,7 +13701,7 @@ <b> <a>1</a> <b>2</b> - <v>1155424</v> + <v>1156719</v> </b> </bs> </hist> @@ -13732,15 +13711,15 @@ </relation> <relation> <name>function_return_type</name> - <cardinality>4645924</cardinality> + <cardinality>4651131</cardinality> <columnsizes> <e> <k>id</k> - <v>4640799</v> + <v>4646000</v> </e> <e> <k>return_type</k> - <v>986303</v> + <v>987409</v> </e> </columnsizes> <dependencies> @@ -13754,12 +13733,12 @@ <b> <a>1</a> <b>2</b> - <v>4635674</v> + <v>4640870</v> </b> <b> <a>2</a> <b>3</b> - <v>5124</v> + <v>5130</v> </b> </bs> </hist> @@ -13775,22 +13754,22 @@ <b> <a>1</a> <b>2</b> - <v>509691</v> + <v>510262</v> </b> <b> <a>2</a> <b>3</b> - <v>375512</v> + <v>375933</v> </b> <b> <a>3</a> <b>10</b> - <v>75009</v> + <v>75093</v> </b> <b> <a>10</a> <b>2516</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -13808,7 +13787,7 @@ </e> <e> <k>traits</k> - <v>2</v> + <v>1</v> </e> <e> <k>handle</k> @@ -13876,9 +13855,9 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> - <v>2</v> + <a>2</a> + <b>3</b> + <v>1</v> </b> </bs> </hist> @@ -13892,9 +13871,9 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> - <v>2</v> + <a>2</a> + <b>3</b> + <v>1</v> </b> </bs> </hist> @@ -13908,9 +13887,9 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> - <v>2</v> + <a>2</a> + <b>3</b> + <v>1</v> </b> </bs> </hist> @@ -14112,59 +14091,59 @@ </relation> <relation> <name>purefunctions</name> - <cardinality>100915</cardinality> + <cardinality>100917</cardinality> <columnsizes> <e> <k>id</k> - <v>100915</v> + <v>100917</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_deleted</name> - <cardinality>137439</cardinality> + <cardinality>137593</cardinality> <columnsizes> <e> <k>id</k> - <v>137439</v> + <v>137593</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_defaulted</name> - <cardinality>73611</cardinality> + <cardinality>73694</cardinality> <columnsizes> <e> <k>id</k> - <v>73611</v> + <v>73694</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_prototyped</name> - <cardinality>4549018</cardinality> + <cardinality>4554116</cardinality> <columnsizes> <e> <k>id</k> - <v>4549018</v> + <v>4554116</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>member_function_this_type</name> - <cardinality>551738</cardinality> + <cardinality>546094</cardinality> <columnsizes> <e> <k>id</k> - <v>551738</v> + <v>546094</v> </e> <e> <k>this_type</k> - <v>189340</v> + <v>187436</v> </e> </columnsizes> <dependencies> @@ -14178,7 +14157,7 @@ <b> <a>1</a> <b>2</b> - <v>551738</v> + <v>546094</v> </b> </bs> </hist> @@ -14194,32 +14173,32 @@ <b> <a>1</a> <b>2</b> - <v>68329</v> + <v>67674</v> </b> <b> <a>2</a> <b>3</b> - <v>45365</v> + <v>44849</v> </b> <b> <a>3</a> <b>4</b> - <v>30454</v> + <v>30201</v> </b> <b> <a>4</a> <b>5</b> - <v>15508</v> + <v>15344</v> </b> <b> <a>5</a> <b>7</b> - <v>15543</v> + <v>15379</v> </b> <b> <a>7</a> <b>66</b> - <v>14137</v> + <v>13987</v> </b> </bs> </hist> @@ -14229,27 +14208,27 @@ </relation> <relation> <name>fun_decls</name> - <cardinality>5009324</cardinality> + <cardinality>5014938</cardinality> <columnsizes> <e> <k>id</k> - <v>5004199</v> + <v>5009807</v> </e> <e> <k>function</k> - <v>4497303</v> + <v>4502343</v> </e> <e> <k>type_id</k> - <v>984906</v> + <v>986009</v> </e> <e> <k>name</k> - <v>1817930</v> + <v>1819500</v> </e> <e> <k>location</k> - <v>3414558</v> + <v>3418385</v> </e> </columnsizes> <dependencies> @@ -14263,7 +14242,7 @@ <b> <a>1</a> <b>2</b> - <v>5004199</v> + <v>5009807</v> </b> </bs> </hist> @@ -14279,12 +14258,12 @@ <b> <a>1</a> <b>2</b> - <v>4999074</v> + <v>5004676</v> </b> <b> <a>2</a> <b>3</b> - <v>5124</v> + <v>5130</v> </b> </bs> </hist> @@ -14300,7 +14279,7 @@ <b> <a>1</a> <b>2</b> - <v>5004199</v> + <v>5009807</v> </b> </bs> </hist> @@ -14316,7 +14295,7 @@ <b> <a>1</a> <b>2</b> - <v>5004199</v> + <v>5009807</v> </b> </bs> </hist> @@ -14332,17 +14311,17 @@ <b> <a>1</a> <b>2</b> - <v>4069144</v> + <v>4073704</v> </b> <b> <a>2</a> <b>3</b> - <v>355479</v> + <v>355877</v> </b> <b> <a>3</a> <b>7</b> - <v>72679</v> + <v>72761</v> </b> </bs> </hist> @@ -14358,12 +14337,12 @@ <b> <a>1</a> <b>2</b> - <v>4457702</v> + <v>4462697</v> </b> <b> <a>2</a> <b>3</b> - <v>39601</v> + <v>39645</v> </b> </bs> </hist> @@ -14379,7 +14358,7 @@ <b> <a>1</a> <b>2</b> - <v>4497303</v> + <v>4502343</v> </b> </bs> </hist> @@ -14395,17 +14374,17 @@ <b> <a>1</a> <b>2</b> - <v>4125517</v> + <v>4130141</v> </b> <b> <a>2</a> <b>4</b> - <v>370853</v> + <v>371269</v> </b> <b> <a>5</a> <b>6</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -14421,22 +14400,22 @@ <b> <a>1</a> <b>2</b> - <v>435147</v> + <v>435635</v> </b> <b> <a>2</a> <b>3</b> - <v>437943</v> + <v>438433</v> </b> <b> <a>3</a> <b>8</b> - <v>75009</v> + <v>75093</v> </b> <b> <a>8</a> <b>2761</b> - <v>36805</v> + <v>36847</v> </b> </bs> </hist> @@ -14452,22 +14431,22 @@ <b> <a>1</a> <b>2</b> - <v>519009</v> + <v>519590</v> </b> <b> <a>2</a> <b>3</b> - <v>367126</v> + <v>367538</v> </b> <b> <a>3</a> <b>11</b> - <v>75475</v> + <v>75559</v> </b> <b> <a>11</a> <b>2477</b> - <v>23294</v> + <v>23320</v> </b> </bs> </hist> @@ -14483,17 +14462,17 @@ <b> <a>1</a> <b>2</b> - <v>857716</v> + <v>858677</v> </b> <b> <a>2</a> <b>5</b> - <v>89452</v> + <v>89552</v> </b> <b> <a>5</a> <b>823</b> - <v>37737</v> + <v>37779</v> </b> </bs> </hist> @@ -14509,22 +14488,22 @@ <b> <a>1</a> <b>2</b> - <v>753821</v> + <v>754666</v> </b> <b> <a>2</a> <b>3</b> - <v>131382</v> + <v>131530</v> </b> <b> <a>3</a> <b>10</b> - <v>74543</v> + <v>74627</v> </b> <b> <a>10</a> <b>2030</b> - <v>25158</v> + <v>25186</v> </b> </bs> </hist> @@ -14540,27 +14519,27 @@ <b> <a>1</a> <b>2</b> - <v>1233695</v> + <v>1234611</v> </b> <b> <a>2</a> <b>3</b> - <v>266493</v> + <v>266791</v> </b> <b> <a>3</a> <b>4</b> - <v>80600</v> + <v>80690</v> </b> <b> <a>4</a> <b>6</b> - <v>136507</v> + <v>136660</v> </b> <b> <a>6</a> <b>1710</b> - <v>100633</v> + <v>100746</v> </b> </bs> </hist> @@ -14576,22 +14555,22 @@ <b> <a>1</a> <b>2</b> - <v>1412599</v> + <v>1413716</v> </b> <b> <a>2</a> <b>3</b> - <v>150950</v> + <v>151119</v> </b> <b> <a>3</a> <b>5</b> - <v>143962</v> + <v>144123</v> </b> <b> <a>5</a> <b>1660</b> - <v>110417</v> + <v>110541</v> </b> </bs> </hist> @@ -14607,17 +14586,17 @@ <b> <a>1</a> <b>2</b> - <v>1600356</v> + <v>1601216</v> </b> <b> <a>2</a> <b>4</b> - <v>134178</v> + <v>134795</v> </b> <b> <a>4</a> <b>930</b> - <v>83395</v> + <v>83489</v> </b> </bs> </hist> @@ -14633,27 +14612,27 @@ <b> <a>1</a> <b>2</b> - <v>1254660</v> + <v>1255600</v> </b> <b> <a>2</a> <b>3</b> - <v>293515</v> + <v>293377</v> </b> <b> <a>3</a> <b>4</b> - <v>79202</v> + <v>79757</v> </b> <b> <a>4</a> <b>8</b> - <v>137439</v> + <v>137593</v> </b> <b> <a>8</a> <b>653</b> - <v>53112</v> + <v>53171</v> </b> </bs> </hist> @@ -14669,17 +14648,17 @@ <b> <a>1</a> <b>2</b> - <v>2958911</v> + <v>2962227</v> </b> <b> <a>2</a> <b>4</b> - <v>295844</v> + <v>296176</v> </b> <b> <a>4</a> <b>55</b> - <v>159802</v> + <v>159981</v> </b> </bs> </hist> @@ -14695,17 +14674,17 @@ <b> <a>1</a> <b>2</b> - <v>3026000</v> + <v>3029392</v> </b> <b> <a>2</a> <b>6</b> - <v>262299</v> + <v>262593</v> </b> <b> <a>6</a> <b>55</b> - <v>126258</v> + <v>126399</v> </b> </bs> </hist> @@ -14721,12 +14700,12 @@ <b> <a>1</a> <b>2</b> - <v>3204905</v> + <v>3208496</v> </b> <b> <a>2</a> <b>25</b> - <v>209653</v> + <v>209888</v> </b> </bs> </hist> @@ -14742,12 +14721,12 @@ <b> <a>1</a> <b>2</b> - <v>3242642</v> + <v>3246276</v> </b> <b> <a>2</a> <b>13</b> - <v>171915</v> + <v>172108</v> </b> </bs> </hist> @@ -14757,22 +14736,22 @@ </relation> <relation> <name>fun_def</name> - <cardinality>1933006</cardinality> + <cardinality>1935172</cardinality> <columnsizes> <e> <k>id</k> - <v>1933006</v> + <v>1935172</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>fun_specialized</name> - <cardinality>26090</cardinality> + <cardinality>26119</cardinality> <columnsizes> <e> <k>id</k> - <v>26090</v> + <v>26119</v> </e> </columnsizes> <dependencies/> @@ -14790,15 +14769,15 @@ </relation> <relation> <name>fun_decl_specifiers</name> - <cardinality>2900674</cardinality> + <cardinality>2903925</cardinality> <columnsizes> <e> <k>id</k> - <v>1686081</v> + <v>1687970</v> </e> <e> <k>name</k> - <v>2795</v> + <v>2798</v> </e> </columnsizes> <dependencies> @@ -14812,17 +14791,17 @@ <b> <a>1</a> <b>2</b> - <v>490123</v> + <v>490672</v> </b> <b> <a>2</a> <b>3</b> - <v>1177321</v> + <v>1178641</v> </b> <b> <a>3</a> <b>4</b> - <v>18635</v> + <v>18656</v> </b> </bs> </hist> @@ -14838,32 +14817,32 @@ <b> <a>50</a> <b>51</b> - <v>465</v> + <v>466</v> </b> <b> <a>203</a> <b>204</b> - <v>465</v> + <v>466</v> </b> <b> <a>209</a> <b>210</b> - <v>465</v> + <v>466</v> </b> <b> <a>639</a> <b>640</b> - <v>465</v> + <v>466</v> </b> <b> <a>2561</a> <b>2562</b> - <v>465</v> + <v>466</v> </b> <b> <a>2564</a> <b>2565</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -14994,26 +14973,26 @@ </relation> <relation> <name>fun_decl_empty_throws</name> - <cardinality>1931608</cardinality> + <cardinality>1933773</cardinality> <columnsizes> <e> <k>fun_decl</k> - <v>1931608</v> + <v>1933773</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>fun_decl_noexcept</name> - <cardinality>61011</cardinality> + <cardinality>60559</cardinality> <columnsizes> <e> <k>fun_decl</k> - <v>61011</v> + <v>60559</v> </e> <e> <k>constant</k> - <v>60907</v> + <v>60456</v> </e> </columnsizes> <dependencies> @@ -15027,7 +15006,7 @@ <b> <a>1</a> <b>2</b> - <v>61011</v> + <v>60559</v> </b> </bs> </hist> @@ -15043,12 +15022,12 @@ <b> <a>1</a> <b>2</b> - <v>60803</v> + <v>60352</v> </b> <b> <a>2</a> <b>3</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -15058,22 +15037,22 @@ </relation> <relation> <name>fun_decl_empty_noexcept</name> - <cardinality>868897</cardinality> + <cardinality>869871</cardinality> <columnsizes> <e> <k>fun_decl</k> - <v>868897</v> + <v>869871</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>fun_decl_typedef_type</name> - <cardinality>2870</cardinality> + <cardinality>2867</cardinality> <columnsizes> <e> <k>fun_decl</k> - <v>2870</v> + <v>2867</v> </e> <e> <k>typedeftype_id</k> @@ -15091,7 +15070,7 @@ <b> <a>1</a> <b>2</b> - <v>2870</v> + <v>2867</v> </b> </bs> </hist> @@ -15167,19 +15146,19 @@ </relation> <relation> <name>param_decl_bind</name> - <cardinality>7371421</cardinality> + <cardinality>7379682</cardinality> <columnsizes> <e> <k>id</k> - <v>7371421</v> + <v>7379682</v> </e> <e> <k>index</k> - <v>7920</v> + <v>7929</v> </e> <e> <k>fun_decl</k> - <v>4218231</v> + <v>4222958</v> </e> </columnsizes> <dependencies> @@ -15193,7 +15172,7 @@ <b> <a>1</a> <b>2</b> - <v>7371421</v> + <v>7379682</v> </b> </bs> </hist> @@ -15209,7 +15188,7 @@ <b> <a>1</a> <b>2</b> - <v>7371421</v> + <v>7379682</v> </b> </bs> </hist> @@ -15225,72 +15204,72 @@ <b> <a>2</a> <b>3</b> - <v>931</v> + <v>932</v> </b> <b> <a>5</a> <b>6</b> - <v>465</v> + <v>466</v> </b> <b> <a>7</a> <b>8</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>931</v> + <v>932</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>931</v> + <v>932</v> </b> <b> <a>13</a> <b>14</b> - <v>465</v> + <v>466</v> </b> <b> <a>25</a> <b>26</b> - <v>465</v> + <v>466</v> </b> <b> <a>78</a> <b>79</b> - <v>465</v> + <v>466</v> </b> <b> <a>245</a> <b>246</b> - <v>465</v> + <v>466</v> </b> <b> <a>636</a> <b>637</b> - <v>465</v> + <v>466</v> </b> <b> <a>1713</a> <b>1714</b> - <v>465</v> + <v>466</v> </b> <b> <a>3987</a> <b>3988</b> - <v>465</v> + <v>466</v> </b> <b> <a>9054</a> <b>9055</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -15306,72 +15285,72 @@ <b> <a>2</a> <b>3</b> - <v>931</v> + <v>932</v> </b> <b> <a>5</a> <b>6</b> - <v>465</v> + <v>466</v> </b> <b> <a>7</a> <b>8</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>931</v> + <v>932</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>931</v> + <v>932</v> </b> <b> <a>13</a> <b>14</b> - <v>465</v> + <v>466</v> </b> <b> <a>25</a> <b>26</b> - <v>465</v> + <v>466</v> </b> <b> <a>78</a> <b>79</b> - <v>465</v> + <v>466</v> </b> <b> <a>245</a> <b>246</b> - <v>465</v> + <v>466</v> </b> <b> <a>636</a> <b>637</b> - <v>465</v> + <v>466</v> </b> <b> <a>1713</a> <b>1714</b> - <v>465</v> + <v>466</v> </b> <b> <a>3987</a> <b>3988</b> - <v>465</v> + <v>466</v> </b> <b> <a>9054</a> <b>9055</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -15387,22 +15366,22 @@ <b> <a>1</a> <b>2</b> - <v>2360699</v> + <v>2363345</v> </b> <b> <a>2</a> <b>3</b> - <v>1059449</v> + <v>1060637</v> </b> <b> <a>3</a> <b>4</b> - <v>501771</v> + <v>502333</v> </b> <b> <a>4</a> <b>18</b> - <v>296310</v> + <v>296642</v> </b> </bs> </hist> @@ -15418,22 +15397,22 @@ <b> <a>1</a> <b>2</b> - <v>2360699</v> + <v>2363345</v> </b> <b> <a>2</a> <b>3</b> - <v>1059449</v> + <v>1060637</v> </b> <b> <a>3</a> <b>4</b> - <v>501771</v> + <v>502333</v> </b> <b> <a>4</a> <b>18</b> - <v>296310</v> + <v>296642</v> </b> </bs> </hist> @@ -15443,27 +15422,27 @@ </relation> <relation> <name>var_decls</name> - <cardinality>8484449</cardinality> + <cardinality>8493958</cardinality> <columnsizes> <e> <k>id</k> - <v>8413633</v> + <v>8423062</v> </e> <e> <k>variable</k> - <v>7403568</v> + <v>7411865</v> </e> <e> <k>type_id</k> - <v>2381665</v> + <v>2384334</v> </e> <e> <k>name</k> - <v>666232</v> + <v>666979</v> </e> <e> <k>location</k> - <v>5300975</v> + <v>5306916</v> </e> </columnsizes> <dependencies> @@ -15477,7 +15456,7 @@ <b> <a>1</a> <b>2</b> - <v>8413633</v> + <v>8423062</v> </b> </bs> </hist> @@ -15493,12 +15472,12 @@ <b> <a>1</a> <b>2</b> - <v>8345612</v> + <v>8354965</v> </b> <b> <a>2</a> <b>3</b> - <v>68020</v> + <v>68097</v> </b> </bs> </hist> @@ -15514,7 +15493,7 @@ <b> <a>1</a> <b>2</b> - <v>8413633</v> + <v>8423062</v> </b> </bs> </hist> @@ -15530,12 +15509,12 @@ <b> <a>1</a> <b>2</b> - <v>8410838</v> + <v>8420264</v> </b> <b> <a>2</a> <b>3</b> - <v>2795</v> + <v>2798</v> </b> </bs> </hist> @@ -15551,17 +15530,17 @@ <b> <a>1</a> <b>2</b> - <v>6553306</v> + <v>6560651</v> </b> <b> <a>2</a> <b>3</b> - <v>696981</v> + <v>697762</v> </b> <b> <a>3</a> <b>7</b> - <v>153280</v> + <v>153451</v> </b> </bs> </hist> @@ -15577,12 +15556,12 @@ <b> <a>1</a> <b>2</b> - <v>7232584</v> + <v>7240690</v> </b> <b> <a>2</a> <b>4</b> - <v>170984</v> + <v>171175</v> </b> </bs> </hist> @@ -15598,12 +15577,12 @@ <b> <a>1</a> <b>2</b> - <v>7288492</v> + <v>7296660</v> </b> <b> <a>2</a> <b>3</b> - <v>115076</v> + <v>115205</v> </b> </bs> </hist> @@ -15619,12 +15598,12 @@ <b> <a>1</a> <b>2</b> - <v>6859401</v> + <v>6867088</v> </b> <b> <a>2</a> <b>4</b> - <v>544167</v> + <v>544777</v> </b> </bs> </hist> @@ -15640,27 +15619,27 @@ <b> <a>1</a> <b>2</b> - <v>1467575</v> + <v>1469220</v> </b> <b> <a>2</a> <b>3</b> - <v>508759</v> + <v>509329</v> </b> <b> <a>3</a> <b>4</b> - <v>97838</v> + <v>97948</v> </b> <b> <a>4</a> <b>7</b> - <v>186824</v> + <v>187034</v> </b> <b> <a>7</a> <b>762</b> - <v>120667</v> + <v>120802</v> </b> </bs> </hist> @@ -15676,22 +15655,22 @@ <b> <a>1</a> <b>2</b> - <v>1600822</v> + <v>1602616</v> </b> <b> <a>2</a> <b>3</b> - <v>484066</v> + <v>484609</v> </b> <b> <a>3</a> <b>7</b> - <v>186358</v> + <v>186567</v> </b> <b> <a>7</a> <b>724</b> - <v>110417</v> + <v>110541</v> </b> </bs> </hist> @@ -15707,17 +15686,17 @@ <b> <a>1</a> <b>2</b> - <v>1875235</v> + <v>1877336</v> </b> <b> <a>2</a> <b>3</b> - <v>384365</v> + <v>384795</v> </b> <b> <a>3</a> <b>128</b> - <v>122065</v> + <v>122201</v> </b> </bs> </hist> @@ -15733,22 +15712,22 @@ <b> <a>1</a> <b>2</b> - <v>1703319</v> + <v>1705228</v> </b> <b> <a>2</a> <b>3</b> - <v>401137</v> + <v>401586</v> </b> <b> <a>3</a> <b>8</b> - <v>188222</v> + <v>188433</v> </b> <b> <a>8</a> <b>592</b> - <v>88986</v> + <v>89086</v> </b> </bs> </hist> @@ -15764,37 +15743,37 @@ <b> <a>1</a> <b>2</b> - <v>340570</v> + <v>340952</v> </b> <b> <a>2</a> <b>3</b> - <v>86656</v> + <v>86753</v> </b> <b> <a>3</a> <b>4</b> - <v>48453</v> + <v>48507</v> </b> <b> <a>4</a> <b>6</b> - <v>51714</v> + <v>51772</v> </b> <b> <a>6</a> <b>12</b> - <v>52180</v> + <v>52238</v> </b> <b> <a>12</a> <b>33</b> - <v>50316</v> + <v>50373</v> </b> <b> <a>34</a> <b>3223</b> - <v>36339</v> + <v>36380</v> </b> </bs> </hist> @@ -15810,37 +15789,37 @@ <b> <a>1</a> <b>2</b> - <v>368058</v> + <v>368471</v> </b> <b> <a>2</a> <b>3</b> - <v>77804</v> + <v>77891</v> </b> <b> <a>3</a> <b>4</b> - <v>45192</v> + <v>45242</v> </b> <b> <a>4</a> <b>6</b> - <v>49385</v> + <v>49440</v> </b> <b> <a>6</a> <b>14</b> - <v>53112</v> + <v>53171</v> </b> <b> <a>14</a> <b>56</b> - <v>50782</v> + <v>50839</v> </b> <b> <a>56</a> <b>3140</b> - <v>21897</v> + <v>21921</v> </b> </bs> </hist> @@ -15856,27 +15835,27 @@ <b> <a>1</a> <b>2</b> - <v>456113</v> + <v>456624</v> </b> <b> <a>2</a> <b>3</b> - <v>93645</v> + <v>93750</v> </b> <b> <a>3</a> <b>5</b> - <v>46589</v> + <v>46641</v> </b> <b> <a>5</a> <b>19</b> - <v>50782</v> + <v>50839</v> </b> <b> <a>19</a> <b>1927</b> - <v>19101</v> + <v>19123</v> </b> </bs> </hist> @@ -15892,32 +15871,32 @@ <b> <a>1</a> <b>2</b> - <v>378308</v> + <v>378732</v> </b> <b> <a>2</a> <b>3</b> - <v>90384</v> + <v>90485</v> </b> <b> <a>3</a> <b>5</b> - <v>59634</v> + <v>59701</v> </b> <b> <a>5</a> <b>9</b> - <v>51248</v> + <v>51306</v> </b> <b> <a>9</a> <b>21</b> - <v>50316</v> + <v>50373</v> </b> <b> <a>21</a> <b>1010</b> - <v>36339</v> + <v>36380</v> </b> </bs> </hist> @@ -15933,17 +15912,17 @@ <b> <a>1</a> <b>2</b> - <v>4487053</v> + <v>4492082</v> </b> <b> <a>2</a> <b>3</b> - <v>530656</v> + <v>531251</v> </b> <b> <a>3</a> <b>1735</b> - <v>283265</v> + <v>283582</v> </b> </bs> </hist> @@ -15959,17 +15938,17 @@ <b> <a>1</a> <b>2</b> - <v>4875611</v> + <v>4881075</v> </b> <b> <a>2</a> <b>17</b> - <v>414648</v> + <v>415112</v> </b> <b> <a>17</a> <b>1731</b> - <v>10715</v> + <v>10727</v> </b> </bs> </hist> @@ -15985,12 +15964,12 @@ <b> <a>1</a> <b>2</b> - <v>4951553</v> + <v>4957102</v> </b> <b> <a>2</a> <b>1513</b> - <v>349422</v> + <v>349814</v> </b> </bs> </hist> @@ -16006,12 +15985,12 @@ <b> <a>1</a> <b>2</b> - <v>5291657</v> + <v>5297588</v> </b> <b> <a>2</a> <b>6</b> - <v>9317</v> + <v>9328</v> </b> </bs> </hist> @@ -16021,26 +16000,26 @@ </relation> <relation> <name>var_def</name> - <cardinality>4020225</cardinality> + <cardinality>4024730</cardinality> <columnsizes> <e> <k>id</k> - <v>4020225</v> + <v>4024730</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>var_decl_specifiers</name> - <cardinality>310287</cardinality> + <cardinality>310635</cardinality> <columnsizes> <e> <k>id</k> - <v>310287</v> + <v>310635</v> </e> <e> <k>name</k> - <v>1397</v> + <v>1399</v> </e> </columnsizes> <dependencies> @@ -16054,7 +16033,7 @@ <b> <a>1</a> <b>2</b> - <v>310287</v> + <v>310635</v> </b> </bs> </hist> @@ -16070,17 +16049,17 @@ <b> <a>15</a> <b>16</b> - <v>465</v> + <v>466</v> </b> <b> <a>66</a> <b>67</b> - <v>465</v> + <v>466</v> </b> <b> <a>585</a> <b>586</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -16101,19 +16080,19 @@ </relation> <relation> <name>type_decls</name> - <cardinality>3238449</cardinality> + <cardinality>3242079</cardinality> <columnsizes> <e> <k>id</k> - <v>3238449</v> + <v>3242079</v> </e> <e> <k>type_id</k> - <v>3188133</v> + <v>3191705</v> </e> <e> <k>location</k> - <v>3159713</v> + <v>3163254</v> </e> </columnsizes> <dependencies> @@ -16127,7 +16106,7 @@ <b> <a>1</a> <b>2</b> - <v>3238449</v> + <v>3242079</v> </b> </bs> </hist> @@ -16143,7 +16122,7 @@ <b> <a>1</a> <b>2</b> - <v>3238449</v> + <v>3242079</v> </b> </bs> </hist> @@ -16159,12 +16138,12 @@ <b> <a>1</a> <b>2</b> - <v>3146668</v> + <v>3150194</v> </b> <b> <a>2</a> <b>5</b> - <v>41464</v> + <v>41511</v> </b> </bs> </hist> @@ -16180,12 +16159,12 @@ <b> <a>1</a> <b>2</b> - <v>3146668</v> + <v>3150194</v> </b> <b> <a>2</a> <b>5</b> - <v>41464</v> + <v>41511</v> </b> </bs> </hist> @@ -16201,12 +16180,12 @@ <b> <a>1</a> <b>2</b> - <v>3119646</v> + <v>3123142</v> </b> <b> <a>2</a> <b>20</b> - <v>40067</v> + <v>40112</v> </b> </bs> </hist> @@ -16222,12 +16201,12 @@ <b> <a>1</a> <b>2</b> - <v>3119646</v> + <v>3123142</v> </b> <b> <a>2</a> <b>20</b> - <v>40067</v> + <v>40112</v> </b> </bs> </hist> @@ -16237,33 +16216,33 @@ </relation> <relation> <name>type_def</name> - <cardinality>2621602</cardinality> + <cardinality>2624540</cardinality> <columnsizes> <e> <k>id</k> - <v>2621602</v> + <v>2624540</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>type_decl_top</name> - <cardinality>742173</cardinality> + <cardinality>743005</cardinality> <columnsizes> <e> <k>type_decl</k> - <v>742173</v> + <v>743005</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>namespace_decls</name> - <cardinality>311526</cardinality> + <cardinality>311530</cardinality> <columnsizes> <e> <k>id</k> - <v>311526</v> + <v>311530</v> </e> <e> <k>namespace_id</k> @@ -16271,11 +16250,11 @@ </e> <e> <k>location</k> - <v>311526</v> + <v>311530</v> </e> <e> <k>bodylocation</k> - <v>311526</v> + <v>311530</v> </e> </columnsizes> <dependencies> @@ -16289,7 +16268,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16305,7 +16284,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16321,7 +16300,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16535,7 +16514,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16551,7 +16530,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16567,7 +16546,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16583,7 +16562,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16599,7 +16578,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16615,7 +16594,7 @@ <b> <a>1</a> <b>2</b> - <v>311526</v> + <v>311530</v> </b> </bs> </hist> @@ -16625,19 +16604,19 @@ </relation> <relation> <name>usings</name> - <cardinality>368990</cardinality> + <cardinality>369403</cardinality> <columnsizes> <e> <k>id</k> - <v>368990</v> + <v>369403</v> </e> <e> <k>element_id</k> - <v>314946</v> + <v>315299</v> </e> <e> <k>location</k> - <v>247391</v> + <v>247668</v> </e> </columnsizes> <dependencies> @@ -16651,7 +16630,7 @@ <b> <a>1</a> <b>2</b> - <v>368990</v> + <v>369403</v> </b> </bs> </hist> @@ -16667,7 +16646,7 @@ <b> <a>1</a> <b>2</b> - <v>368990</v> + <v>369403</v> </b> </bs> </hist> @@ -16683,17 +16662,17 @@ <b> <a>1</a> <b>2</b> - <v>262765</v> + <v>263060</v> </b> <b> <a>2</a> <b>3</b> - <v>50782</v> + <v>50839</v> </b> <b> <a>3</a> <b>5</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -16709,17 +16688,17 @@ <b> <a>1</a> <b>2</b> - <v>262765</v> + <v>263060</v> </b> <b> <a>2</a> <b>3</b> - <v>50782</v> + <v>50839</v> </b> <b> <a>3</a> <b>5</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -16735,22 +16714,22 @@ <b> <a>1</a> <b>2</b> - <v>202199</v> + <v>202425</v> </b> <b> <a>2</a> <b>4</b> - <v>10715</v> + <v>10727</v> </b> <b> <a>4</a> <b>5</b> - <v>31215</v> + <v>31250</v> </b> <b> <a>5</a> <b>11</b> - <v>3261</v> + <v>3264</v> </b> </bs> </hist> @@ -16766,22 +16745,22 @@ <b> <a>1</a> <b>2</b> - <v>202199</v> + <v>202425</v> </b> <b> <a>2</a> <b>4</b> - <v>10715</v> + <v>10727</v> </b> <b> <a>4</a> <b>5</b> - <v>31215</v> + <v>31250</v> </b> <b> <a>5</a> <b>11</b> - <v>3261</v> + <v>3264</v> </b> </bs> </hist> @@ -16791,15 +16770,15 @@ </relation> <relation> <name>using_container</name> - <cardinality>464571</cardinality> + <cardinality>462754</cardinality> <columnsizes> <e> <k>parent</k> - <v>10998</v> + <v>10955</v> </e> <e> <k>child</k> - <v>294577</v> + <v>293425</v> </e> </columnsizes> <dependencies> @@ -16813,42 +16792,42 @@ <b> <a>1</a> <b>2</b> - <v>3280</v> + <v>3267</v> </b> <b> <a>2</a> <b>4</b> - <v>932</v> + <v>928</v> </b> <b> <a>4</a> <b>6</b> - <v>415</v> + <v>414</v> </b> <b> <a>6</a> <b>7</b> - <v>2482</v> + <v>2473</v> </b> <b> <a>7</a> <b>17</b> - <v>898</v> + <v>895</v> </b> <b> <a>19</a> <b>143</b> - <v>763</v> + <v>760</v> </b> <b> <a>178</a> <b>179</b> - <v>1292</v> + <v>1286</v> </b> <b> <a>179</a> <b>183</b> - <v>853</v> + <v>850</v> </b> <b> <a>201</a> @@ -16869,22 +16848,22 @@ <b> <a>1</a> <b>2</b> - <v>217270</v> + <v>216420</v> </b> <b> <a>2</a> <b>3</b> - <v>51477</v> + <v>51276</v> </b> <b> <a>3</a> <b>11</b> - <v>23705</v> + <v>23612</v> </b> <b> <a>13</a> <b>41</b> - <v>2123</v> + <v>2115</v> </b> </bs> </hist> @@ -16894,15 +16873,15 @@ </relation> <relation> <name>static_asserts</name> - <cardinality>134653</cardinality> + <cardinality>134655</cardinality> <columnsizes> <e> <k>id</k> - <v>134653</v> + <v>134655</v> </e> <e> <k>condition</k> - <v>134653</v> + <v>134655</v> </e> <e> <k>message</k> @@ -16928,7 +16907,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -16944,7 +16923,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -16960,7 +16939,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -16976,7 +16955,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -16992,7 +16971,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -17008,7 +16987,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -17024,7 +17003,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -17040,7 +17019,7 @@ <b> <a>1</a> <b>2</b> - <v>134653</v> + <v>134655</v> </b> </bs> </hist> @@ -17502,23 +17481,23 @@ </relation> <relation> <name>params</name> - <cardinality>6732211</cardinality> + <cardinality>6739755</cardinality> <columnsizes> <e> <k>id</k> - <v>6568681</v> + <v>6576042</v> </e> <e> <k>function</k> - <v>3875331</v> + <v>3879674</v> </e> <e> <k>index</k> - <v>7920</v> + <v>7929</v> </e> <e> <k>type_id</k> - <v>2186454</v> + <v>2188904</v> </e> </columnsizes> <dependencies> @@ -17532,7 +17511,7 @@ <b> <a>1</a> <b>2</b> - <v>6568681</v> + <v>6576042</v> </b> </bs> </hist> @@ -17548,7 +17527,7 @@ <b> <a>1</a> <b>2</b> - <v>6568681</v> + <v>6576042</v> </b> </bs> </hist> @@ -17564,12 +17543,12 @@ <b> <a>1</a> <b>2</b> - <v>6445218</v> + <v>6452441</v> </b> <b> <a>2</a> <b>4</b> - <v>123462</v> + <v>123601</v> </b> </bs> </hist> @@ -17585,22 +17564,22 @@ <b> <a>1</a> <b>2</b> - <v>2254475</v> + <v>2257002</v> </b> <b> <a>2</a> <b>3</b> - <v>950895</v> + <v>951961</v> </b> <b> <a>3</a> <b>4</b> - <v>429091</v> + <v>429571</v> </b> <b> <a>4</a> <b>18</b> - <v>240868</v> + <v>241138</v> </b> </bs> </hist> @@ -17616,22 +17595,22 @@ <b> <a>1</a> <b>2</b> - <v>2254475</v> + <v>2257002</v> </b> <b> <a>2</a> <b>3</b> - <v>950895</v> + <v>951961</v> </b> <b> <a>3</a> <b>4</b> - <v>429091</v> + <v>429571</v> </b> <b> <a>4</a> <b>18</b> - <v>240868</v> + <v>241138</v> </b> </bs> </hist> @@ -17647,22 +17626,22 @@ <b> <a>1</a> <b>2</b> - <v>2552183</v> + <v>2555043</v> </b> <b> <a>2</a> <b>3</b> - <v>825103</v> + <v>826028</v> </b> <b> <a>3</a> <b>4</b> - <v>345695</v> + <v>346082</v> </b> <b> <a>4</a> <b>12</b> - <v>152348</v> + <v>152519</v> </b> </bs> </hist> @@ -17678,72 +17657,72 @@ <b> <a>2</a> <b>3</b> - <v>931</v> + <v>932</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>8</a> <b>9</b> - <v>931</v> + <v>932</v> </b> <b> <a>9</a> <b>10</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>931</v> + <v>932</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>19</a> <b>20</b> - <v>465</v> + <v>466</v> </b> <b> <a>64</a> <b>65</b> - <v>465</v> + <v>466</v> </b> <b> <a>194</a> <b>195</b> - <v>465</v> + <v>466</v> </b> <b> <a>517</a> <b>518</b> - <v>465</v> + <v>466</v> </b> <b> <a>1438</a> <b>1439</b> - <v>465</v> + <v>466</v> </b> <b> <a>3479</a> <b>3480</b> - <v>465</v> + <v>466</v> </b> <b> <a>8318</a> <b>8319</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -17759,72 +17738,72 @@ <b> <a>2</a> <b>3</b> - <v>931</v> + <v>932</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>8</a> <b>9</b> - <v>931</v> + <v>932</v> </b> <b> <a>9</a> <b>10</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>931</v> + <v>932</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>19</a> <b>20</b> - <v>465</v> + <v>466</v> </b> <b> <a>64</a> <b>65</b> - <v>465</v> + <v>466</v> </b> <b> <a>194</a> <b>195</b> - <v>465</v> + <v>466</v> </b> <b> <a>517</a> <b>518</b> - <v>465</v> + <v>466</v> </b> <b> <a>1438</a> <b>1439</b> - <v>465</v> + <v>466</v> </b> <b> <a>3479</a> <b>3480</b> - <v>465</v> + <v>466</v> </b> <b> <a>8318</a> <b>8319</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -17840,67 +17819,67 @@ <b> <a>1</a> <b>2</b> - <v>931</v> + <v>932</v> </b> <b> <a>3</a> <b>4</b> - <v>465</v> + <v>466</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>5</a> <b>6</b> - <v>465</v> + <v>466</v> </b> <b> <a>6</a> <b>7</b> - <v>1397</v> + <v>1399</v> </b> <b> <a>7</a> <b>8</b> - <v>931</v> + <v>932</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>42</a> <b>43</b> - <v>465</v> + <v>466</v> </b> <b> <a>106</a> <b>107</b> - <v>465</v> + <v>466</v> </b> <b> <a>228</a> <b>229</b> - <v>465</v> + <v>466</v> </b> <b> <a>582</a> <b>583</b> - <v>465</v> + <v>466</v> </b> <b> <a>1271</a> <b>1272</b> - <v>465</v> + <v>466</v> </b> <b> <a>3609</a> <b>3610</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -17916,22 +17895,22 @@ <b> <a>1</a> <b>2</b> - <v>1486677</v> + <v>1488343</v> </b> <b> <a>2</a> <b>3</b> - <v>439806</v> + <v>440299</v> </b> <b> <a>3</a> <b>8</b> - <v>170052</v> + <v>170242</v> </b> <b> <a>8</a> <b>518</b> - <v>89918</v> + <v>90018</v> </b> </bs> </hist> @@ -17947,22 +17926,22 @@ <b> <a>1</a> <b>2</b> - <v>1706114</v> + <v>1708026</v> </b> <b> <a>2</a> <b>3</b> - <v>247857</v> + <v>248134</v> </b> <b> <a>3</a> <b>9</b> - <v>168188</v> + <v>168377</v> </b> <b> <a>9</a> <b>502</b> - <v>64293</v> + <v>64365</v> </b> </bs> </hist> @@ -17978,17 +17957,17 @@ <b> <a>1</a> <b>2</b> - <v>1759692</v> + <v>1761664</v> </b> <b> <a>2</a> <b>3</b> - <v>348025</v> + <v>348415</v> </b> <b> <a>3</a> <b>13</b> - <v>78736</v> + <v>78824</v> </b> </bs> </hist> @@ -17998,15 +17977,15 @@ </relation> <relation> <name>overrides</name> - <cardinality>125996</cardinality> + <cardinality>125866</cardinality> <columnsizes> <e> <k>new</k> - <v>123017</v> + <v>122890</v> </e> <e> <k>old</k> - <v>9763</v> + <v>9753</v> </e> </columnsizes> <dependencies> @@ -18020,12 +17999,12 @@ <b> <a>1</a> <b>2</b> - <v>120046</v> + <v>119922</v> </b> <b> <a>2</a> <b>4</b> - <v>2970</v> + <v>2967</v> </b> </bs> </hist> @@ -18041,17 +18020,17 @@ <b> <a>1</a> <b>2</b> - <v>4297</v> + <v>4293</v> </b> <b> <a>2</a> <b>3</b> - <v>2102</v> + <v>2100</v> </b> <b> <a>3</a> <b>4</b> - <v>926</v> + <v>925</v> </b> <b> <a>4</a> @@ -18061,17 +18040,17 @@ <b> <a>5</a> <b>7</b> - <v>851</v> + <v>850</v> </b> <b> <a>7</a> <b>23</b> - <v>763</v> + <v>762</v> </b> <b> <a>25</a> <b>1464</b> - <v>363</v> + <v>362</v> </b> </bs> </hist> @@ -18081,19 +18060,19 @@ </relation> <relation> <name>membervariables</name> - <cardinality>1054945</cardinality> + <cardinality>1056556</cardinality> <columnsizes> <e> <k>id</k> - <v>1053150</v> + <v>1054758</v> </e> <e> <k>type_id</k> - <v>327246</v> + <v>327746</v> </e> <e> <k>name</k> - <v>450956</v> + <v>451645</v> </e> </columnsizes> <dependencies> @@ -18107,12 +18086,12 @@ <b> <a>1</a> <b>2</b> - <v>1051434</v> + <v>1053040</v> </b> <b> <a>2</a> <b>4</b> - <v>1715</v> + <v>1718</v> </b> </bs> </hist> @@ -18128,7 +18107,7 @@ <b> <a>1</a> <b>2</b> - <v>1053150</v> + <v>1054758</v> </b> </bs> </hist> @@ -18144,22 +18123,22 @@ <b> <a>1</a> <b>2</b> - <v>242672</v> + <v>243043</v> </b> <b> <a>2</a> <b>3</b> - <v>51821</v> + <v>51900</v> </b> <b> <a>3</a> <b>10</b> - <v>25491</v> + <v>25530</v> </b> <b> <a>10</a> <b>4152</b> - <v>7260</v> + <v>7271</v> </b> </bs> </hist> @@ -18175,22 +18154,22 @@ <b> <a>1</a> <b>2</b> - <v>254879</v> + <v>255269</v> </b> <b> <a>2</a> <b>3</b> - <v>46396</v> + <v>46467</v> </b> <b> <a>3</a> <b>40</b> - <v>24574</v> + <v>24611</v> </b> <b> <a>41</a> <b>2031</b> - <v>1396</v> + <v>1398</v> </b> </bs> </hist> @@ -18206,22 +18185,22 @@ <b> <a>1</a> <b>2</b> - <v>294893</v> + <v>295343</v> </b> <b> <a>2</a> <b>3</b> - <v>86409</v> + <v>86541</v> </b> <b> <a>3</a> <b>5</b> - <v>41130</v> + <v>41193</v> </b> <b> <a>5</a> <b>646</b> - <v>28523</v> + <v>28567</v> </b> </bs> </hist> @@ -18237,17 +18216,17 @@ <b> <a>1</a> <b>2</b> - <v>367300</v> + <v>367860</v> </b> <b> <a>2</a> <b>3</b> - <v>51662</v> + <v>51741</v> </b> <b> <a>3</a> <b>650</b> - <v>31994</v> + <v>32043</v> </b> </bs> </hist> @@ -18428,19 +18407,19 @@ </relation> <relation> <name>localvariables</name> - <cardinality>577491</cardinality> + <cardinality>576906</cardinality> <columnsizes> <e> <k>id</k> - <v>577491</v> + <v>576906</v> </e> <e> <k>type_id</k> - <v>37631</v> + <v>37597</v> </e> <e> <k>name</k> - <v>90743</v> + <v>90649</v> </e> </columnsizes> <dependencies> @@ -18454,7 +18433,7 @@ <b> <a>1</a> <b>2</b> - <v>577491</v> + <v>576906</v> </b> </bs> </hist> @@ -18470,7 +18449,7 @@ <b> <a>1</a> <b>2</b> - <v>577491</v> + <v>576906</v> </b> </bs> </hist> @@ -18486,32 +18465,32 @@ <b> <a>1</a> <b>2</b> - <v>21054</v> + <v>21032</v> </b> <b> <a>2</a> <b>3</b> - <v>5378</v> + <v>5368</v> </b> <b> <a>3</a> <b>4</b> - <v>2461</v> + <v>2467</v> </b> <b> <a>4</a> <b>7</b> - <v>3383</v> + <v>3380</v> </b> <b> <a>7</a> <b>18</b> - <v>2858</v> + <v>2851</v> </b> <b> <a>18</a> - <b>15847</b> - <v>2495</v> + <b>15849</b> + <v>2496</v> </b> </bs> </hist> @@ -18527,27 +18506,27 @@ <b> <a>1</a> <b>2</b> - <v>26803</v> + <v>26772</v> </b> <b> <a>2</a> <b>3</b> - <v>4573</v> + <v>4572</v> </b> <b> <a>3</a> <b>5</b> - <v>2920</v> + <v>2921</v> </b> <b> <a>5</a> <b>31</b> - <v>2824</v> + <v>2821</v> </b> <b> <a>31</a> <b>3455</b> - <v>509</v> + <v>508</v> </b> </bs> </hist> @@ -18563,27 +18542,27 @@ <b> <a>1</a> <b>2</b> - <v>57154</v> + <v>57095</v> </b> <b> <a>2</a> <b>3</b> - <v>14315</v> + <v>14301</v> </b> <b> <a>3</a> <b>5</b> - <v>8328</v> + <v>8319</v> </b> <b> <a>5</a> <b>15</b> - <v>6997</v> + <v>6990</v> </b> <b> <a>15</a> - <b>5176</b> - <v>3947</v> + <b>5178</b> + <v>3943</v> </b> </bs> </hist> @@ -18599,17 +18578,17 @@ <b> <a>1</a> <b>2</b> - <v>76656</v> + <v>76577</v> </b> <b> <a>2</a> <b>3</b> - <v>7427</v> + <v>7419</v> </b> <b> <a>3</a> <b>1486</b> - <v>6659</v> + <v>6652</v> </b> </bs> </hist> @@ -18619,15 +18598,15 @@ </relation> <relation> <name>autoderivation</name> - <cardinality>148931</cardinality> + <cardinality>148035</cardinality> <columnsizes> <e> <k>var</k> - <v>148931</v> + <v>148035</v> </e> <e> <k>derivation_type</k> - <v>521</v> + <v>517</v> </e> </columnsizes> <dependencies> @@ -18641,7 +18620,7 @@ <b> <a>1</a> <b>2</b> - <v>148931</v> + <v>148035</v> </b> </bs> </hist> @@ -18657,27 +18636,27 @@ <b> <a>33</a> <b>34</b> - <v>104</v> + <v>103</v> </b> <b> - <a>90</a> - <b>91</b> - <v>104</v> + <a>91</a> + <b>92</b> + <v>103</v> </b> <b> - <a>353</a> - <b>354</b> - <v>104</v> + <a>354</a> + <b>355</b> + <v>103</v> </b> <b> <a>392</a> <b>393</b> - <v>104</v> + <v>103</v> </b> <b> <a>560</a> <b>561</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -18687,15 +18666,15 @@ </relation> <relation> <name>orphaned_variables</name> - <cardinality>37769</cardinality> + <cardinality>37368</cardinality> <columnsizes> <e> <k>var</k> - <v>37769</v> + <v>37368</v> </e> <e> <k>function</k> - <v>33197</v> + <v>32845</v> </e> </columnsizes> <dependencies> @@ -18709,7 +18688,7 @@ <b> <a>1</a> <b>2</b> - <v>37769</v> + <v>37368</v> </b> </bs> </hist> @@ -18725,12 +18704,12 @@ <b> <a>1</a> <b>2</b> - <v>31123</v> + <v>30792</v> </b> <b> <a>2</a> <b>47</b> - <v>2074</v> + <v>2052</v> </b> </bs> </hist> @@ -18740,19 +18719,19 @@ </relation> <relation> <name>enumconstants</name> - <cardinality>241316</cardinality> + <cardinality>241684</cardinality> <columnsizes> <e> <k>id</k> - <v>241316</v> + <v>241684</v> </e> <e> <k>parent</k> - <v>28484</v> + <v>28527</v> </e> <e> <k>index</k> - <v>10212</v> + <v>10228</v> </e> <e> <k>type_id</k> @@ -18760,11 +18739,11 @@ </e> <e> <k>name</k> - <v>241036</v> + <v>241405</v> </e> <e> <k>location</k> - <v>221249</v> + <v>221587</v> </e> </columnsizes> <dependencies> @@ -18778,7 +18757,7 @@ <b> <a>1</a> <b>2</b> - <v>241316</v> + <v>241684</v> </b> </bs> </hist> @@ -18794,7 +18773,7 @@ <b> <a>1</a> <b>2</b> - <v>241316</v> + <v>241684</v> </b> </bs> </hist> @@ -18810,7 +18789,7 @@ <b> <a>1</a> <b>2</b> - <v>241316</v> + <v>241684</v> </b> </bs> </hist> @@ -18826,7 +18805,7 @@ <b> <a>1</a> <b>2</b> - <v>241316</v> + <v>241684</v> </b> </bs> </hist> @@ -18842,7 +18821,7 @@ <b> <a>1</a> <b>2</b> - <v>241316</v> + <v>241684</v> </b> </bs> </hist> @@ -18858,52 +18837,52 @@ <b> <a>1</a> <b>2</b> - <v>997</v> + <v>998</v> </b> <b> <a>2</a> <b>3</b> - <v>4029</v> + <v>4035</v> </b> <b> <a>3</a> <b>4</b> - <v>5784</v> + <v>5793</v> </b> <b> <a>4</a> <b>5</b> - <v>3909</v> + <v>3915</v> </b> <b> <a>5</a> <b>6</b> - <v>3071</v> + <v>3076</v> </b> <b> <a>6</a> <b>7</b> - <v>1835</v> + <v>1837</v> </b> <b> <a>7</a> <b>8</b> - <v>1476</v> + <v>1478</v> </b> <b> <a>8</a> <b>11</b> - <v>2593</v> + <v>2597</v> </b> <b> <a>11</a> <b>17</b> - <v>2353</v> + <v>2357</v> </b> <b> <a>17</a> <b>84</b> - <v>2154</v> + <v>2157</v> </b> <b> <a>94</a> @@ -18924,52 +18903,52 @@ <b> <a>1</a> <b>2</b> - <v>997</v> + <v>998</v> </b> <b> <a>2</a> <b>3</b> - <v>4029</v> + <v>4035</v> </b> <b> <a>3</a> <b>4</b> - <v>5784</v> + <v>5793</v> </b> <b> <a>4</a> <b>5</b> - <v>3909</v> + <v>3915</v> </b> <b> <a>5</a> <b>6</b> - <v>3071</v> + <v>3076</v> </b> <b> <a>6</a> <b>7</b> - <v>1835</v> + <v>1837</v> </b> <b> <a>7</a> <b>8</b> - <v>1476</v> + <v>1478</v> </b> <b> <a>8</a> <b>11</b> - <v>2593</v> + <v>2597</v> </b> <b> <a>11</a> <b>17</b> - <v>2353</v> + <v>2357</v> </b> <b> <a>17</a> <b>84</b> - <v>2154</v> + <v>2157</v> </b> <b> <a>94</a> @@ -18990,7 +18969,7 @@ <b> <a>1</a> <b>2</b> - <v>28484</v> + <v>28527</v> </b> </bs> </hist> @@ -19006,52 +18985,52 @@ <b> <a>1</a> <b>2</b> - <v>997</v> + <v>998</v> </b> <b> <a>2</a> <b>3</b> - <v>4029</v> + <v>4035</v> </b> <b> <a>3</a> <b>4</b> - <v>5784</v> + <v>5793</v> </b> <b> <a>4</a> <b>5</b> - <v>3909</v> + <v>3915</v> </b> <b> <a>5</a> <b>6</b> - <v>3071</v> + <v>3076</v> </b> <b> <a>6</a> <b>7</b> - <v>1835</v> + <v>1837</v> </b> <b> <a>7</a> <b>8</b> - <v>1476</v> + <v>1478</v> </b> <b> <a>8</a> <b>11</b> - <v>2593</v> + <v>2597</v> </b> <b> <a>11</a> <b>17</b> - <v>2353</v> + <v>2357</v> </b> <b> <a>17</a> <b>84</b> - <v>2154</v> + <v>2157</v> </b> <b> <a>94</a> @@ -19072,52 +19051,52 @@ <b> <a>1</a> <b>2</b> - <v>1436</v> + <v>1438</v> </b> <b> <a>2</a> <b>3</b> - <v>4188</v> + <v>4195</v> </b> <b> <a>3</a> <b>4</b> - <v>5824</v> + <v>5833</v> </b> <b> <a>4</a> <b>5</b> - <v>3869</v> + <v>3875</v> </b> <b> <a>5</a> <b>6</b> - <v>3071</v> + <v>3076</v> </b> <b> <a>6</a> <b>7</b> - <v>1795</v> + <v>1797</v> </b> <b> <a>7</a> <b>8</b> - <v>1396</v> + <v>1398</v> </b> <b> <a>8</a> <b>11</b> - <v>2513</v> + <v>2517</v> </b> <b> <a>11</a> <b>17</b> - <v>2234</v> + <v>2237</v> </b> <b> <a>17</a> <b>257</b> - <v>2154</v> + <v>2157</v> </b> </bs> </hist> @@ -19133,47 +19112,47 @@ <b> <a>1</a> <b>2</b> - <v>2034</v> + <v>2037</v> </b> <b> <a>2</a> <b>3</b> - <v>1635</v> + <v>1638</v> </b> <b> <a>3</a> <b>4</b> - <v>1755</v> + <v>1757</v> </b> <b> <a>4</a> <b>5</b> - <v>877</v> + <v>878</v> </b> <b> <a>5</a> <b>9</b> - <v>797</v> + <v>799</v> </b> <b> <a>9</a> <b>12</b> - <v>837</v> + <v>839</v> </b> <b> <a>12</a> <b>20</b> - <v>877</v> + <v>878</v> </b> <b> <a>20</a> <b>69</b> - <v>797</v> + <v>799</v> </b> <b> <a>77</a> <b>715</b> - <v>598</v> + <v>599</v> </b> </bs> </hist> @@ -19189,47 +19168,47 @@ <b> <a>1</a> <b>2</b> - <v>2034</v> + <v>2037</v> </b> <b> <a>2</a> <b>3</b> - <v>1635</v> + <v>1638</v> </b> <b> <a>3</a> <b>4</b> - <v>1755</v> + <v>1757</v> </b> <b> <a>4</a> <b>5</b> - <v>877</v> + <v>878</v> </b> <b> <a>5</a> <b>9</b> - <v>797</v> + <v>799</v> </b> <b> <a>9</a> <b>12</b> - <v>837</v> + <v>839</v> </b> <b> <a>12</a> <b>20</b> - <v>877</v> + <v>878</v> </b> <b> <a>20</a> <b>69</b> - <v>797</v> + <v>799</v> </b> <b> <a>77</a> <b>715</b> - <v>598</v> + <v>599</v> </b> </bs> </hist> @@ -19245,7 +19224,7 @@ <b> <a>1</a> <b>2</b> - <v>10212</v> + <v>10228</v> </b> </bs> </hist> @@ -19261,47 +19240,47 @@ <b> <a>1</a> <b>2</b> - <v>2034</v> + <v>2037</v> </b> <b> <a>2</a> <b>3</b> - <v>1635</v> + <v>1638</v> </b> <b> <a>3</a> <b>4</b> - <v>1755</v> + <v>1757</v> </b> <b> <a>4</a> <b>5</b> - <v>877</v> + <v>878</v> </b> <b> <a>5</a> <b>9</b> - <v>797</v> + <v>799</v> </b> <b> <a>9</a> <b>12</b> - <v>837</v> + <v>839</v> </b> <b> <a>12</a> <b>20</b> - <v>877</v> + <v>878</v> </b> <b> <a>20</a> <b>69</b> - <v>797</v> + <v>799</v> </b> <b> <a>77</a> <b>712</b> - <v>598</v> + <v>599</v> </b> </bs> </hist> @@ -19317,47 +19296,47 @@ <b> <a>1</a> <b>2</b> - <v>2034</v> + <v>2037</v> </b> <b> <a>2</a> <b>3</b> - <v>1635</v> + <v>1638</v> </b> <b> <a>3</a> <b>4</b> - <v>1755</v> + <v>1757</v> </b> <b> <a>4</a> <b>5</b> - <v>877</v> + <v>878</v> </b> <b> <a>5</a> <b>9</b> - <v>797</v> + <v>799</v> </b> <b> <a>9</a> <b>12</b> - <v>837</v> + <v>839</v> </b> <b> <a>12</a> <b>20</b> - <v>877</v> + <v>878</v> </b> <b> <a>20</a> <b>69</b> - <v>797</v> + <v>799</v> </b> <b> <a>77</a> <b>715</b> - <v>598</v> + <v>599</v> </b> </bs> </hist> @@ -19453,7 +19432,7 @@ <b> <a>1</a> <b>2</b> - <v>240757</v> + <v>241125</v> </b> <b> <a>2</a> @@ -19474,7 +19453,7 @@ <b> <a>1</a> <b>2</b> - <v>240757</v> + <v>241125</v> </b> <b> <a>2</a> @@ -19495,7 +19474,7 @@ <b> <a>1</a> <b>2</b> - <v>241036</v> + <v>241405</v> </b> </bs> </hist> @@ -19511,7 +19490,7 @@ <b> <a>1</a> <b>2</b> - <v>241036</v> + <v>241405</v> </b> </bs> </hist> @@ -19527,7 +19506,7 @@ <b> <a>1</a> <b>2</b> - <v>240757</v> + <v>241125</v> </b> <b> <a>2</a> @@ -19548,12 +19527,12 @@ <b> <a>1</a> <b>2</b> - <v>220491</v> + <v>220828</v> </b> <b> <a>2</a> <b>205</b> - <v>757</v> + <v>759</v> </b> </bs> </hist> @@ -19569,7 +19548,7 @@ <b> <a>1</a> <b>2</b> - <v>221249</v> + <v>221587</v> </b> </bs> </hist> @@ -19585,12 +19564,12 @@ <b> <a>1</a> <b>2</b> - <v>220491</v> + <v>220828</v> </b> <b> <a>2</a> <b>205</b> - <v>757</v> + <v>759</v> </b> </bs> </hist> @@ -19606,7 +19585,7 @@ <b> <a>1</a> <b>2</b> - <v>221249</v> + <v>221587</v> </b> </bs> </hist> @@ -19622,12 +19601,12 @@ <b> <a>1</a> <b>2</b> - <v>220491</v> + <v>220828</v> </b> <b> <a>2</a> <b>205</b> - <v>757</v> + <v>759</v> </b> </bs> </hist> @@ -19637,31 +19616,31 @@ </relation> <relation> <name>builtintypes</name> - <cardinality>26090</cardinality> + <cardinality>26119</cardinality> <columnsizes> <e> <k>id</k> - <v>26090</v> + <v>26119</v> </e> <e> <k>name</k> - <v>26090</v> + <v>26119</v> </e> <e> <k>kind</k> - <v>26090</v> + <v>26119</v> </e> <e> <k>size</k> - <v>3261</v> + <v>3264</v> </e> <e> <k>sign</k> - <v>1397</v> + <v>1399</v> </e> <e> <k>alignment</k> - <v>2329</v> + <v>2332</v> </e> </columnsizes> <dependencies> @@ -19675,7 +19654,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19691,7 +19670,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19707,7 +19686,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19723,7 +19702,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19739,7 +19718,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19755,7 +19734,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19771,7 +19750,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19787,7 +19766,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19803,7 +19782,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19819,7 +19798,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19835,7 +19814,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19851,7 +19830,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19867,7 +19846,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19883,7 +19862,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19899,7 +19878,7 @@ <b> <a>1</a> <b>2</b> - <v>26090</v> + <v>26119</v> </b> </bs> </hist> @@ -19915,37 +19894,37 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>7</a> <b>8</b> - <v>465</v> + <v>466</v> </b> <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>465</v> + <v>466</v> </b> <b> <a>14</a> <b>15</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -19961,37 +19940,37 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>7</a> <b>8</b> - <v>465</v> + <v>466</v> </b> <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>465</v> + <v>466</v> </b> <b> <a>14</a> <b>15</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20007,37 +19986,37 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>7</a> <b>8</b> - <v>465</v> + <v>466</v> </b> <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>465</v> + <v>466</v> </b> <b> <a>14</a> <b>15</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20053,12 +20032,12 @@ <b> <a>1</a> <b>2</b> - <v>931</v> + <v>932</v> </b> <b> <a>3</a> <b>4</b> - <v>2329</v> + <v>2332</v> </b> </bs> </hist> @@ -20074,12 +20053,12 @@ <b> <a>1</a> <b>2</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>2</a> <b>3</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -20095,17 +20074,17 @@ <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>465</v> + <v>466</v> </b> <b> <a>38</a> <b>39</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20121,17 +20100,17 @@ <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>465</v> + <v>466</v> </b> <b> <a>38</a> <b>39</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20147,17 +20126,17 @@ <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>12</a> <b>13</b> - <v>465</v> + <v>466</v> </b> <b> <a>38</a> <b>39</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20173,12 +20152,12 @@ <b> <a>5</a> <b>6</b> - <v>931</v> + <v>932</v> </b> <b> <a>7</a> <b>8</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20194,7 +20173,7 @@ <b> <a>5</a> <b>6</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -20210,27 +20189,27 @@ <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>9</a> <b>10</b> - <v>465</v> + <v>466</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>13</a> <b>14</b> - <v>465</v> + <v>466</v> </b> <b> <a>15</a> <b>16</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20246,27 +20225,27 @@ <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>9</a> <b>10</b> - <v>465</v> + <v>466</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>13</a> <b>14</b> - <v>465</v> + <v>466</v> </b> <b> <a>15</a> <b>16</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20282,27 +20261,27 @@ <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>9</a> <b>10</b> - <v>465</v> + <v>466</v> </b> <b> <a>11</a> <b>12</b> - <v>465</v> + <v>466</v> </b> <b> <a>13</a> <b>14</b> - <v>465</v> + <v>466</v> </b> <b> <a>15</a> <b>16</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20318,7 +20297,7 @@ <b> <a>2</a> <b>3</b> - <v>2329</v> + <v>2332</v> </b> </bs> </hist> @@ -20334,7 +20313,7 @@ <b> <a>3</a> <b>4</b> - <v>2329</v> + <v>2332</v> </b> </bs> </hist> @@ -20344,23 +20323,23 @@ </relation> <relation> <name>derivedtypes</name> - <cardinality>4332841</cardinality> + <cardinality>4330701</cardinality> <columnsizes> <e> <k>id</k> - <v>4332841</v> + <v>4330701</v> </e> <e> <k>name</k> - <v>2158500</v> + <v>2160919</v> </e> <e> <k>kind</k> - <v>2795</v> + <v>2798</v> </e> <e> <k>type_id</k> - <v>2673316</v> + <v>2670715</v> </e> </columnsizes> <dependencies> @@ -20374,7 +20353,7 @@ <b> <a>1</a> <b>2</b> - <v>4332841</v> + <v>4330701</v> </b> </bs> </hist> @@ -20390,7 +20369,7 @@ <b> <a>1</a> <b>2</b> - <v>4332841</v> + <v>4330701</v> </b> </bs> </hist> @@ -20406,7 +20385,7 @@ <b> <a>1</a> <b>2</b> - <v>4332841</v> + <v>4330701</v> </b> </bs> </hist> @@ -20422,17 +20401,17 @@ <b> <a>1</a> <b>2</b> - <v>1897132</v> + <v>1899258</v> </b> <b> <a>2</a> <b>5</b> - <v>164461</v> + <v>164645</v> </b> <b> <a>5</a> - <b>1165</b> - <v>96906</v> + <b>1153</b> + <v>97015</v> </b> </bs> </hist> @@ -20448,12 +20427,12 @@ <b> <a>1</a> <b>2</b> - <v>2157568</v> + <v>2159986</v> </b> <b> <a>2</a> <b>3</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -20469,17 +20448,17 @@ <b> <a>1</a> <b>2</b> - <v>1897132</v> + <v>1899258</v> </b> <b> <a>2</a> <b>5</b> - <v>164461</v> + <v>164645</v> </b> <b> <a>5</a> - <b>1147</b> - <v>96906</v> + <b>1135</b> + <v>97015</v> </b> </bs> </hist> @@ -20495,32 +20474,32 @@ <b> <a>236</a> <b>237</b> - <v>465</v> + <v>466</v> </b> <b> <a>1077</a> <b>1078</b> - <v>465</v> + <v>466</v> </b> <b> - <a>1146</a> - <b>1147</b> - <v>465</v> + <a>1134</a> + <b>1135</b> + <v>466</v> </b> <b> <a>1217</a> <b>1218</b> - <v>465</v> + <v>466</v> </b> <b> - <a>2169</a> - <b>2170</b> - <v>465</v> + <a>2166</a> + <b>2167</b> + <v>466</v> </b> <b> <a>3455</a> <b>3456</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20536,32 +20515,32 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>201</a> <b>202</b> - <v>465</v> + <v>466</v> </b> <b> <a>606</a> <b>607</b> - <v>465</v> + <v>466</v> </b> <b> <a>760</a> <b>761</b> - <v>465</v> + <v>466</v> </b> <b> <a>1128</a> <b>1129</b> - <v>465</v> + <v>466</v> </b> <b> <a>1939</a> <b>1940</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20577,32 +20556,32 @@ <b> <a>84</a> <b>85</b> - <v>465</v> + <v>466</v> </b> <b> <a>1077</a> <b>1078</b> - <v>465</v> + <v>466</v> </b> <b> - <a>1146</a> - <b>1147</b> - <v>465</v> + <a>1134</a> + <b>1135</b> + <v>466</v> </b> <b> <a>1217</a> <b>1218</b> - <v>465</v> + <v>466</v> </b> <b> - <a>2124</a> - <b>2125</b> - <v>465</v> + <a>2121</a> + <b>2122</b> + <v>466</v> </b> <b> <a>3455</a> <b>3456</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20618,22 +20597,22 @@ <b> <a>1</a> <b>2</b> - <v>1653468</v> + <v>1651123</v> </b> <b> <a>2</a> <b>3</b> - <v>560939</v> + <v>560169</v> </b> <b> <a>3</a> <b>4</b> - <v>353615</v> + <v>354012</v> </b> <b> <a>4</a> <b>72</b> - <v>105292</v> + <v>105410</v> </b> </bs> </hist> @@ -20649,22 +20628,22 @@ <b> <a>1</a> <b>2</b> - <v>1664649</v> + <v>1662317</v> </b> <b> <a>2</a> <b>3</b> - <v>553485</v> + <v>552706</v> </b> <b> <a>3</a> <b>4</b> - <v>350820</v> + <v>351213</v> </b> <b> <a>4</a> <b>72</b> - <v>104360</v> + <v>104477</v> </b> </bs> </hist> @@ -20680,22 +20659,22 @@ <b> <a>1</a> <b>2</b> - <v>1657661</v> + <v>1655321</v> </b> <b> <a>2</a> <b>3</b> - <v>564667</v> + <v>563900</v> </b> <b> <a>3</a> <b>4</b> - <v>352684</v> + <v>353079</v> </b> <b> <a>4</a> <b>6</b> - <v>98304</v> + <v>98414</v> </b> </bs> </hist> @@ -20705,19 +20684,19 @@ </relation> <relation> <name>pointerishsize</name> - <cardinality>3212359</cardinality> + <cardinality>3210362</cardinality> <columnsizes> <e> <k>id</k> - <v>3212359</v> + <v>3210362</v> </e> <e> <k>size</k> - <v>465</v> + <v>466</v> </e> <e> <k>alignment</k> - <v>465</v> + <v>466</v> </e> </columnsizes> <dependencies> @@ -20731,7 +20710,7 @@ <b> <a>1</a> <b>2</b> - <v>3212359</v> + <v>3210362</v> </b> </bs> </hist> @@ -20747,7 +20726,7 @@ <b> <a>1</a> <b>2</b> - <v>3212359</v> + <v>3210362</v> </b> </bs> </hist> @@ -20761,9 +20740,9 @@ <budget>12</budget> <bs> <b> - <a>6895</a> - <b>6896</b> - <v>465</v> + <a>6883</a> + <b>6884</b> + <v>466</v> </b> </bs> </hist> @@ -20779,7 +20758,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20793,9 +20772,9 @@ <budget>12</budget> <bs> <b> - <a>6895</a> - <b>6896</b> - <v>465</v> + <a>6883</a> + <b>6884</b> + <v>466</v> </b> </bs> </hist> @@ -20811,7 +20790,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20821,23 +20800,23 @@ </relation> <relation> <name>arraysizes</name> - <cardinality>88054</cardinality> + <cardinality>88153</cardinality> <columnsizes> <e> <k>id</k> - <v>88054</v> + <v>88153</v> </e> <e> <k>num_elements</k> - <v>31680</v> + <v>31716</v> </e> <e> <k>bytesize</k> - <v>33078</v> + <v>33115</v> </e> <e> <k>alignment</k> - <v>1863</v> + <v>1865</v> </e> </columnsizes> <dependencies> @@ -20851,7 +20830,7 @@ <b> <a>1</a> <b>2</b> - <v>88054</v> + <v>88153</v> </b> </bs> </hist> @@ -20867,7 +20846,7 @@ <b> <a>1</a> <b>2</b> - <v>88054</v> + <v>88153</v> </b> </bs> </hist> @@ -20883,7 +20862,7 @@ <b> <a>1</a> <b>2</b> - <v>88054</v> + <v>88153</v> </b> </bs> </hist> @@ -20899,27 +20878,27 @@ <b> <a>1</a> <b>2</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>2</a> <b>3</b> - <v>23760</v> + <v>23787</v> </b> <b> <a>3</a> <b>5</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>5</a> <b>13</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>13</a> <b>14</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -20935,17 +20914,17 @@ <b> <a>1</a> <b>2</b> - <v>26556</v> + <v>26585</v> </b> <b> <a>2</a> <b>3</b> - <v>2329</v> + <v>2332</v> </b> <b> <a>3</a> <b>7</b> - <v>2795</v> + <v>2798</v> </b> </bs> </hist> @@ -20961,17 +20940,17 @@ <b> <a>1</a> <b>2</b> - <v>26556</v> + <v>26585</v> </b> <b> <a>2</a> <b>3</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>3</a> <b>5</b> - <v>2329</v> + <v>2332</v> </b> </bs> </hist> @@ -20987,27 +20966,27 @@ <b> <a>1</a> <b>2</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>2</a> <b>3</b> - <v>23760</v> + <v>23787</v> </b> <b> <a>3</a> <b>4</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>4</a> <b>6</b> - <v>2329</v> + <v>2332</v> </b> <b> <a>7</a> <b>16</b> - <v>1863</v> + <v>1865</v> </b> </bs> </hist> @@ -21023,17 +21002,17 @@ <b> <a>1</a> <b>2</b> - <v>27487</v> + <v>27518</v> </b> <b> <a>2</a> <b>3</b> - <v>3727</v> + <v>3731</v> </b> <b> <a>3</a> <b>5</b> - <v>1863</v> + <v>1865</v> </b> </bs> </hist> @@ -21049,17 +21028,17 @@ <b> <a>1</a> <b>2</b> - <v>27487</v> + <v>27518</v> </b> <b> <a>2</a> <b>3</b> - <v>4658</v> + <v>4664</v> </b> <b> <a>4</a> <b>5</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -21075,22 +21054,22 @@ <b> <a>5</a> <b>6</b> - <v>465</v> + <v>466</v> </b> <b> <a>16</a> <b>17</b> - <v>465</v> + <v>466</v> </b> <b> <a>31</a> <b>32</b> - <v>465</v> + <v>466</v> </b> <b> <a>137</a> <b>138</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -21106,17 +21085,17 @@ <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>7</a> <b>8</b> - <v>931</v> + <v>932</v> </b> <b> <a>68</a> <b>69</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -21132,22 +21111,22 @@ <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>7</a> <b>8</b> - <v>465</v> + <v>466</v> </b> <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>68</a> <b>69</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -21157,15 +21136,15 @@ </relation> <relation> <name>typedefbase</name> - <cardinality>1679336</cardinality> + <cardinality>1672769</cardinality> <columnsizes> <e> <k>id</k> - <v>1679336</v> + <v>1672769</v> </e> <e> <k>type_id</k> - <v>790504</v> + <v>787413</v> </e> </columnsizes> <dependencies> @@ -21179,7 +21158,7 @@ <b> <a>1</a> <b>2</b> - <v>1679336</v> + <v>1672769</v> </b> </bs> </hist> @@ -21195,22 +21174,22 @@ <b> <a>1</a> <b>2</b> - <v>615196</v> + <v>612790</v> </b> <b> <a>2</a> <b>3</b> - <v>82913</v> + <v>82588</v> </b> <b> <a>3</a> <b>6</b> - <v>61746</v> + <v>61505</v> </b> <b> <a>6</a> <b>5437</b> - <v>30648</v> + <v>30528</v> </b> </bs> </hist> @@ -21220,19 +21199,19 @@ </relation> <relation> <name>decltypes</name> - <cardinality>172128</cardinality> + <cardinality>166216</cardinality> <columnsizes> <e> <k>id</k> - <v>17293</v> + <v>16699</v> </e> <e> <k>expr</k> - <v>172128</v> + <v>166216</v> </e> <e> <k>base_type</k> - <v>10324</v> + <v>9970</v> </e> <e> <k>parentheses_would_change_meaning</k> @@ -21250,37 +21229,37 @@ <b> <a>1</a> <b>2</b> - <v>5271</v> + <v>5090</v> </b> <b> <a>2</a> <b>3</b> - <v>6416</v> + <v>6195</v> </b> <b> <a>3</a> <b>5</b> - <v>1145</v> + <v>1105</v> </b> <b> <a>5</a> <b>12</b> - <v>1342</v> + <v>1296</v> </b> <b> <a>12</a> <b>18</b> - <v>1401</v> + <v>1353</v> </b> <b> <a>18</a> <b>46</b> - <v>1302</v> + <v>1258</v> </b> <b> <a>51</a> <b>740</b> - <v>414</v> + <v>400</v> </b> </bs> </hist> @@ -21296,7 +21275,7 @@ <b> <a>1</a> <b>2</b> - <v>17293</v> + <v>16699</v> </b> </bs> </hist> @@ -21312,7 +21291,7 @@ <b> <a>1</a> <b>2</b> - <v>17293</v> + <v>16699</v> </b> </bs> </hist> @@ -21328,7 +21307,7 @@ <b> <a>1</a> <b>2</b> - <v>172128</v> + <v>166216</v> </b> </bs> </hist> @@ -21344,7 +21323,7 @@ <b> <a>1</a> <b>2</b> - <v>172128</v> + <v>166216</v> </b> </bs> </hist> @@ -21360,7 +21339,7 @@ <b> <a>1</a> <b>2</b> - <v>172128</v> + <v>166216</v> </b> </bs> </hist> @@ -21376,17 +21355,17 @@ <b> <a>1</a> <b>2</b> - <v>7501</v> + <v>7244</v> </b> <b> <a>2</a> <b>3</b> - <v>2349</v> + <v>2268</v> </b> <b> <a>4</a> <b>149</b> - <v>473</v> + <v>457</v> </b> </bs> </hist> @@ -21402,37 +21381,37 @@ <b> <a>1</a> <b>2</b> - <v>750</v> + <v>724</v> </b> <b> <a>2</a> <b>3</b> - <v>6356</v> + <v>6138</v> </b> <b> <a>3</a> <b>4</b> - <v>355</v> + <v>343</v> </b> <b> <a>4</a> <b>5</b> - <v>1006</v> + <v>972</v> </b> <b> <a>5</a> <b>7</b> - <v>789</v> + <v>762</v> </b> <b> <a>7</a> <b>32</b> - <v>829</v> + <v>800</v> </b> <b> <a>32</a> <b>3888</b> - <v>236</v> + <v>228</v> </b> </bs> </hist> @@ -21448,7 +21427,7 @@ <b> <a>1</a> <b>2</b> - <v>10324</v> + <v>9970</v> </b> </bs> </hist> @@ -21506,19 +21485,19 @@ </relation> <relation> <name>usertypes</name> - <cardinality>5224568</cardinality> + <cardinality>5229957</cardinality> <columnsizes> <e> <k>id</k> - <v>5224568</v> + <v>5229957</v> </e> <e> <k>name</k> - <v>1349703</v> + <v>1351216</v> </e> <e> <k>kind</k> - <v>5124</v> + <v>5130</v> </e> </columnsizes> <dependencies> @@ -21532,7 +21511,7 @@ <b> <a>1</a> <b>2</b> - <v>5224568</v> + <v>5229957</v> </b> </bs> </hist> @@ -21548,7 +21527,7 @@ <b> <a>1</a> <b>2</b> - <v>5224568</v> + <v>5229957</v> </b> </bs> </hist> @@ -21564,27 +21543,27 @@ <b> <a>1</a> <b>2</b> - <v>981644</v> + <v>982745</v> </b> <b> <a>2</a> <b>3</b> - <v>153280</v> + <v>153451</v> </b> <b> <a>3</a> <b>7</b> - <v>104360</v> + <v>104477</v> </b> <b> <a>7</a> <b>61</b> - <v>101565</v> + <v>101679</v> </b> <b> <a>65</a> <b>874</b> - <v>8852</v> + <v>8861</v> </b> </bs> </hist> @@ -21600,17 +21579,17 @@ <b> <a>1</a> <b>2</b> - <v>1209468</v> + <v>1210823</v> </b> <b> <a>2</a> <b>3</b> - <v>124860</v> + <v>125000</v> </b> <b> <a>3</a> <b>7</b> - <v>15374</v> + <v>15391</v> </b> </bs> </hist> @@ -21626,57 +21605,57 @@ <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>465</v> + <v>466</v> </b> <b> <a>26</a> <b>27</b> - <v>465</v> + <v>466</v> </b> <b> <a>124</a> <b>125</b> - <v>465</v> + <v>466</v> </b> <b> <a>135</a> <b>136</b> - <v>465</v> + <v>466</v> </b> <b> <a>663</a> <b>664</b> - <v>465</v> + <v>466</v> </b> <b> <a>853</a> <b>854</b> - <v>465</v> + <v>466</v> </b> <b> - <a>959</a> - <b>960</b> - <v>465</v> + <a>958</a> + <b>959</b> + <v>466</v> </b> <b> <a>1752</a> <b>1753</b> - <v>465</v> + <v>466</v> </b> <b> <a>1842</a> <b>1843</b> - <v>465</v> + <v>466</v> </b> <b> <a>4844</a> <b>4845</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -21692,57 +21671,57 @@ <b> <a>5</a> <b>6</b> - <v>465</v> + <v>466</v> </b> <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>14</a> <b>15</b> - <v>465</v> + <v>466</v> </b> <b> <a>30</a> <b>31</b> - <v>465</v> + <v>466</v> </b> <b> <a>43</a> <b>44</b> - <v>465</v> + <v>466</v> </b> <b> <a>125</a> <b>126</b> - <v>465</v> + <v>466</v> </b> <b> <a>267</a> <b>268</b> - <v>465</v> + <v>466</v> </b> <b> <a>371</a> <b>372</b> - <v>465</v> + <v>466</v> </b> <b> <a>438</a> <b>439</b> - <v>465</v> + <v>466</v> </b> <b> <a>739</a> <b>740</b> - <v>465</v> + <v>466</v> </b> <b> <a>1200</a> <b>1201</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -21752,19 +21731,19 @@ </relation> <relation> <name>usertypesize</name> - <cardinality>1704251</cardinality> + <cardinality>1705694</cardinality> <columnsizes> <e> <k>id</k> - <v>1704251</v> + <v>1705694</v> </e> <e> <k>size</k> - <v>13511</v> + <v>13526</v> </e> <e> <k>alignment</k> - <v>2329</v> + <v>2332</v> </e> </columnsizes> <dependencies> @@ -21778,7 +21757,7 @@ <b> <a>1</a> <b>2</b> - <v>1704251</v> + <v>1705694</v> </b> </bs> </hist> @@ -21794,7 +21773,7 @@ <b> <a>1</a> <b>2</b> - <v>1704251</v> + <v>1705694</v> </b> </bs> </hist> @@ -21810,47 +21789,47 @@ <b> <a>1</a> <b>2</b> - <v>3261</v> + <v>3264</v> </b> <b> <a>2</a> <b>3</b> - <v>4193</v> + <v>4197</v> </b> <b> <a>3</a> <b>4</b> - <v>465</v> + <v>466</v> </b> <b> <a>4</a> <b>5</b> - <v>931</v> + <v>932</v> </b> <b> <a>6</a> <b>8</b> - <v>931</v> + <v>932</v> </b> <b> <a>9</a> <b>15</b> - <v>931</v> + <v>932</v> </b> <b> <a>37</a> <b>84</b> - <v>931</v> + <v>932</v> </b> <b> <a>92</a> <b>163</b> - <v>931</v> + <v>932</v> </b> <b> <a>740</a> - <b>2473</b> - <v>931</v> + <b>2472</b> + <v>932</v> </b> </bs> </hist> @@ -21866,17 +21845,17 @@ <b> <a>1</a> <b>2</b> - <v>10249</v> + <v>10261</v> </b> <b> <a>2</a> <b>3</b> - <v>2795</v> + <v>2798</v> </b> <b> <a>3</a> <b>4</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -21892,27 +21871,27 @@ <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>184</a> <b>185</b> - <v>465</v> + <v>466</v> </b> <b> <a>254</a> <b>255</b> - <v>465</v> + <v>466</v> </b> <b> - <a>3212</a> - <b>3213</b> - <v>465</v> + <a>3211</a> + <b>3212</b> + <v>466</v> </b> </bs> </hist> @@ -21928,27 +21907,27 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> <b> <a>3</a> <b>4</b> - <v>465</v> + <v>466</v> </b> <b> <a>9</a> <b>10</b> - <v>465</v> + <v>466</v> </b> <b> <a>22</a> <b>23</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -21958,22 +21937,22 @@ </relation> <relation> <name>usertype_final</name> - <cardinality>9490</cardinality> + <cardinality>9420</cardinality> <columnsizes> <e> <k>id</k> - <v>9490</v> + <v>9420</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>usertype_uuid</name> - <cardinality>36638</cardinality> + <cardinality>36639</cardinality> <columnsizes> <e> <k>id</k> - <v>36638</v> + <v>36639</v> </e> <e> <k>uuid</k> @@ -21991,7 +21970,7 @@ <b> <a>1</a> <b>2</b> - <v>36638</v> + <v>36639</v> </b> </bs> </hist> @@ -22007,7 +21986,7 @@ <b> <a>1</a> <b>2</b> - <v>35889</v> + <v>35890</v> </b> <b> <a>2</a> @@ -22022,19 +22001,19 @@ </relation> <relation> <name>mangled_name</name> - <cardinality>9467492</cardinality> + <cardinality>9477636</cardinality> <columnsizes> <e> <k>id</k> - <v>9467492</v> + <v>9477636</v> </e> <e> <k>mangled_name</k> - <v>6441025</v> + <v>6448244</v> </e> <e> <k>is_complete</k> - <v>465</v> + <v>466</v> </e> </columnsizes> <dependencies> @@ -22048,7 +22027,7 @@ <b> <a>1</a> <b>2</b> - <v>9467492</v> + <v>9477636</v> </b> </bs> </hist> @@ -22064,7 +22043,7 @@ <b> <a>1</a> <b>2</b> - <v>9467492</v> + <v>9477636</v> </b> </bs> </hist> @@ -22080,12 +22059,12 @@ <b> <a>1</a> <b>2</b> - <v>6160555</v> + <v>6167459</v> </b> <b> <a>2</a> <b>874</b> - <v>280469</v> + <v>280784</v> </b> </bs> </hist> @@ -22101,7 +22080,7 @@ <b> <a>1</a> <b>2</b> - <v>6441025</v> + <v>6448244</v> </b> </bs> </hist> @@ -22115,9 +22094,9 @@ <budget>12</budget> <bs> <b> - <a>20321</a> - <b>20322</b> - <v>465</v> + <a>20320</a> + <b>20321</b> + <v>466</v> </b> </bs> </hist> @@ -22133,7 +22112,7 @@ <b> <a>13825</a> <b>13826</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -22143,59 +22122,59 @@ </relation> <relation> <name>is_pod_class</name> - <cardinality>532834</cardinality> + <cardinality>530716</cardinality> <columnsizes> <e> <k>id</k> - <v>532834</v> + <v>530716</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>is_standard_layout_class</name> - <cardinality>1252796</cardinality> + <cardinality>1253734</cardinality> <columnsizes> <e> <k>id</k> - <v>1252796</v> + <v>1253734</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>is_complete</name> - <cardinality>1643684</cardinality> + <cardinality>1645060</cardinality> <columnsizes> <e> <k>id</k> - <v>1643684</v> + <v>1645060</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>is_class_template</name> - <cardinality>397410</cardinality> + <cardinality>397855</cardinality> <columnsizes> <e> <k>id</k> - <v>397410</v> + <v>397855</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>class_instantiation</name> - <cardinality>1087869</cardinality> + <cardinality>1088622</cardinality> <columnsizes> <e> <k>to</k> - <v>1087869</v> + <v>1088622</v> </e> <e> <k>from</k> - <v>168188</v> + <v>168377</v> </e> </columnsizes> <dependencies> @@ -22209,7 +22188,7 @@ <b> <a>1</a> <b>2</b> - <v>1087869</v> + <v>1088622</v> </b> </bs> </hist> @@ -22225,47 +22204,47 @@ <b> <a>1</a> <b>2</b> - <v>59634</v> + <v>59701</v> </b> <b> <a>2</a> <b>3</b> - <v>29351</v> + <v>29384</v> </b> <b> <a>3</a> <b>4</b> - <v>15840</v> + <v>15858</v> </b> <b> <a>4</a> <b>5</b> - <v>13045</v> + <v>13059</v> </b> <b> <a>5</a> <b>6</b> - <v>9783</v> + <v>9794</v> </b> <b> <a>6</a> <b>10</b> - <v>12579</v> + <v>12593</v> </b> <b> <a>10</a> <b>16</b> - <v>13045</v> + <v>13059</v> </b> <b> <a>16</a> <b>70</b> - <v>13511</v> + <v>13526</v> </b> <b> <a>70</a> <b>84</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -22275,19 +22254,19 @@ </relation> <relation> <name>class_template_argument</name> - <cardinality>2870306</cardinality> + <cardinality>2859038</cardinality> <columnsizes> <e> <k>type_id</k> - <v>1310002</v> + <v>1304835</v> </e> <e> <k>index</k> - <v>1258</v> + <v>1253</v> </e> <e> <k>arg_type</k> - <v>836511</v> + <v>833229</v> </e> </columnsizes> <dependencies> @@ -22301,27 +22280,27 @@ <b> <a>1</a> <b>2</b> - <v>538743</v> + <v>536592</v> </b> <b> <a>2</a> <b>3</b> - <v>397645</v> + <v>396090</v> </b> <b> <a>3</a> <b>4</b> - <v>230325</v> + <v>229424</v> </b> <b> <a>4</a> <b>7</b> - <v>119796</v> + <v>119328</v> </b> <b> <a>7</a> <b>113</b> - <v>23492</v> + <v>23400</v> </b> </bs> </hist> @@ -22337,22 +22316,22 @@ <b> <a>1</a> <b>2</b> - <v>565268</v> + <v>563013</v> </b> <b> <a>2</a> <b>3</b> - <v>408835</v> + <v>407236</v> </b> <b> <a>3</a> <b>4</b> - <v>243705</v> + <v>242752</v> </b> <b> <a>4</a> <b>113</b> - <v>92192</v> + <v>91832</v> </b> </bs> </hist> @@ -22373,31 +22352,31 @@ <b> <a>2</a> <b>3</b> - <v>797</v> + <v>794</v> </b> <b> <a>3</a> <b>26</b> - <v>101</v> + <v>100</v> </b> <b> <a>29</a> <b>64</b> - <v>101</v> + <v>100</v> </b> <b> <a>69</a> <b>411</b> - <v>101</v> + <v>100</v> </b> <b> <a>592</a> <b>8901</b> - <v>101</v> + <v>100</v> </b> <b> <a>13095</a> - <b>114270</b> + <b>114267</b> <v>44</v> </b> </bs> @@ -22419,31 +22398,31 @@ <b> <a>2</a> <b>3</b> - <v>797</v> + <v>794</v> </b> <b> <a>3</a> <b>14</b> - <v>112</v> + <v>111</v> </b> <b> <a>14</a> <b>26</b> - <v>101</v> + <v>100</v> </b> <b> <a>28</a> <b>145</b> - <v>101</v> + <v>100</v> </b> <b> <a>195</a> <b>3469</b> - <v>101</v> + <v>100</v> </b> <b> <a>10524</a> - <b>39739</b> + <b>39738</b> <v>33</v> </b> </bs> @@ -22460,27 +22439,27 @@ <b> <a>1</a> <b>2</b> - <v>520779</v> + <v>518731</v> </b> <b> <a>2</a> <b>3</b> - <v>173600</v> + <v>172921</v> </b> <b> <a>3</a> <b>4</b> - <v>51084</v> + <v>50884</v> </b> <b> <a>4</a> <b>10</b> - <v>63768</v> + <v>63519</v> </b> <b> <a>10</a> <b>10265</b> - <v>27278</v> + <v>27171</v> </b> </bs> </hist> @@ -22496,17 +22475,17 @@ <b> <a>1</a> <b>2</b> - <v>737319</v> + <v>734424</v> </b> <b> <a>2</a> <b>3</b> - <v>80946</v> + <v>80630</v> </b> <b> <a>3</a> <b>22</b> - <v>18245</v> + <v>18174</v> </b> </bs> </hist> @@ -22516,19 +22495,19 @@ </relation> <relation> <name>class_template_argument_value</name> - <cardinality>494316</cardinality> + <cardinality>494870</cardinality> <columnsizes> <e> <k>type_id</k> - <v>304230</v> + <v>304571</v> </e> <e> <k>index</k> - <v>1863</v> + <v>1865</v> </e> <e> <k>arg_value</k> - <v>494316</v> + <v>494870</v> </e> </columnsizes> <dependencies> @@ -22542,17 +22521,17 @@ <b> <a>1</a> <b>2</b> - <v>249254</v> + <v>249534</v> </b> <b> <a>2</a> <b>3</b> - <v>53112</v> + <v>53171</v> </b> <b> <a>3</a> <b>4</b> - <v>1863</v> + <v>1865</v> </b> </bs> </hist> @@ -22568,22 +22547,22 @@ <b> <a>1</a> <b>2</b> - <v>189154</v> + <v>189366</v> </b> <b> <a>2</a> <b>3</b> - <v>81066</v> + <v>81156</v> </b> <b> <a>3</a> <b>4</b> - <v>12113</v> + <v>12126</v> </b> <b> <a>4</a> <b>9</b> - <v>21897</v> + <v>21921</v> </b> </bs> </hist> @@ -22599,22 +22578,22 @@ <b> <a>18</a> <b>19</b> - <v>465</v> + <v>466</v> </b> <b> <a>92</a> <b>93</b> - <v>465</v> + <v>466</v> </b> <b> <a>293</a> <b>294</b> - <v>465</v> + <v>466</v> </b> <b> <a>372</a> <b>373</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -22630,22 +22609,22 @@ <b> <a>19</a> <b>20</b> - <v>465</v> + <v>466</v> </b> <b> <a>124</a> <b>125</b> - <v>465</v> + <v>466</v> </b> <b> <a>409</a> <b>410</b> - <v>465</v> + <v>466</v> </b> <b> <a>509</a> <b>510</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -22661,7 +22640,7 @@ <b> <a>1</a> <b>2</b> - <v>494316</v> + <v>494870</v> </b> </bs> </hist> @@ -22677,7 +22656,7 @@ <b> <a>1</a> <b>2</b> - <v>494316</v> + <v>494870</v> </b> </bs> </hist> @@ -22687,15 +22666,15 @@ </relation> <relation> <name>is_proxy_class_for</name> - <cardinality>62896</cardinality> + <cardinality>62966</cardinality> <columnsizes> <e> <k>id</k> - <v>62896</v> + <v>62966</v> </e> <e> <k>templ_param_id</k> - <v>62896</v> + <v>62966</v> </e> </columnsizes> <dependencies> @@ -22709,7 +22688,7 @@ <b> <a>1</a> <b>2</b> - <v>62896</v> + <v>62966</v> </b> </bs> </hist> @@ -22725,7 +22704,7 @@ <b> <a>1</a> <b>2</b> - <v>62896</v> + <v>62966</v> </b> </bs> </hist> @@ -22735,19 +22714,19 @@ </relation> <relation> <name>type_mentions</name> - <cardinality>4023226</cardinality> + <cardinality>4029370</cardinality> <columnsizes> <e> <k>id</k> - <v>4023226</v> + <v>4029370</v> </e> <e> <k>type_id</k> - <v>197911</v> + <v>198214</v> </e> <e> <k>location</k> - <v>3989755</v> + <v>3995848</v> </e> <e> <k>kind</k> @@ -22765,7 +22744,7 @@ <b> <a>1</a> <b>2</b> - <v>4023226</v> + <v>4029370</v> </b> </bs> </hist> @@ -22781,7 +22760,7 @@ <b> <a>1</a> <b>2</b> - <v>4023226</v> + <v>4029370</v> </b> </bs> </hist> @@ -22797,7 +22776,7 @@ <b> <a>1</a> <b>2</b> - <v>4023226</v> + <v>4029370</v> </b> </bs> </hist> @@ -22813,42 +22792,42 @@ <b> <a>1</a> <b>2</b> - <v>97459</v> + <v>97608</v> </b> <b> <a>2</a> <b>3</b> - <v>21702</v> + <v>21735</v> </b> <b> <a>3</a> <b>4</b> - <v>8218</v> + <v>8230</v> </b> <b> <a>4</a> <b>5</b> - <v>10771</v> + <v>10787</v> </b> <b> <a>5</a> <b>7</b> - <v>14361</v> + <v>14383</v> </b> <b> <a>7</a> <b>12</b> - <v>15837</v> + <v>15861</v> </b> <b> <a>12</a> <b>27</b> - <v>15159</v> + <v>15182</v> </b> <b> <a>27</a> <b>8555</b> - <v>14401</v> + <v>14423</v> </b> </bs> </hist> @@ -22864,42 +22843,42 @@ <b> <a>1</a> <b>2</b> - <v>97459</v> + <v>97608</v> </b> <b> <a>2</a> <b>3</b> - <v>21702</v> + <v>21735</v> </b> <b> <a>3</a> <b>4</b> - <v>8218</v> + <v>8230</v> </b> <b> <a>4</a> <b>5</b> - <v>10771</v> + <v>10787</v> </b> <b> <a>5</a> <b>7</b> - <v>14361</v> + <v>14383</v> </b> <b> <a>7</a> <b>12</b> - <v>15837</v> + <v>15861</v> </b> <b> <a>12</a> <b>27</b> - <v>15159</v> + <v>15182</v> </b> <b> <a>27</a> <b>8555</b> - <v>14401</v> + <v>14423</v> </b> </bs> </hist> @@ -22915,7 +22894,7 @@ <b> <a>1</a> <b>2</b> - <v>197911</v> + <v>198214</v> </b> </bs> </hist> @@ -22931,12 +22910,12 @@ <b> <a>1</a> <b>2</b> - <v>3956284</v> + <v>3962326</v> </b> <b> <a>2</a> <b>3</b> - <v>33470</v> + <v>33521</v> </b> </bs> </hist> @@ -22952,12 +22931,12 @@ <b> <a>1</a> <b>2</b> - <v>3956284</v> + <v>3962326</v> </b> <b> <a>2</a> <b>3</b> - <v>33470</v> + <v>33521</v> </b> </bs> </hist> @@ -22973,7 +22952,7 @@ <b> <a>1</a> <b>2</b> - <v>3989755</v> + <v>3995848</v> </b> </bs> </hist> @@ -23031,26 +23010,26 @@ </relation> <relation> <name>is_function_template</name> - <cardinality>1400020</cardinality> + <cardinality>1401589</cardinality> <columnsizes> <e> <k>id</k> - <v>1400020</v> + <v>1401589</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_instantiation</name> - <cardinality>904114</cardinality> + <cardinality>894870</cardinality> <columnsizes> <e> <k>to</k> - <v>904114</v> + <v>894870</v> </e> <e> <k>from</k> - <v>145768</v> + <v>144256</v> </e> </columnsizes> <dependencies> @@ -23064,7 +23043,7 @@ <b> <a>1</a> <b>2</b> - <v>904114</v> + <v>894870</v> </b> </bs> </hist> @@ -23080,27 +23059,27 @@ <b> <a>1</a> <b>2</b> - <v>101070</v> + <v>100033</v> </b> <b> <a>2</a> <b>3</b> - <v>14383</v> + <v>14230</v> </b> <b> <a>3</a> <b>6</b> - <v>11992</v> + <v>11864</v> </b> <b> <a>6</a> <b>21</b> - <v>12027</v> + <v>11899</v> </b> <b> <a>22</a> - <b>869</b> - <v>6294</v> + <b>870</b> + <v>6228</v> </b> </bs> </hist> @@ -23110,19 +23089,19 @@ </relation> <relation> <name>function_template_argument</name> - <cardinality>2335210</cardinality> + <cardinality>2310645</cardinality> <columnsizes> <e> <k>function_id</k> - <v>1333998</v> + <v>1319951</v> </e> <e> <k>index</k> - <v>562</v> + <v>556</v> </e> <e> <k>arg_type</k> - <v>304055</v> + <v>300865</v> </e> </columnsizes> <dependencies> @@ -23136,22 +23115,22 @@ <b> <a>1</a> <b>2</b> - <v>680767</v> + <v>673580</v> </b> <b> <a>2</a> <b>3</b> - <v>394154</v> + <v>390007</v> </b> <b> <a>3</a> <b>4</b> - <v>188531</v> + <v>186566</v> </b> <b> <a>4</a> <b>15</b> - <v>70545</v> + <v>69797</v> </b> </bs> </hist> @@ -23167,22 +23146,22 @@ <b> <a>1</a> <b>2</b> - <v>698351</v> + <v>690977</v> </b> <b> <a>2</a> <b>3</b> - <v>404036</v> + <v>399784</v> </b> <b> <a>3</a> <b>4</b> - <v>168415</v> + <v>166664</v> </b> <b> <a>4</a> <b>9</b> - <v>63195</v> + <v>62525</v> </b> </bs> </hist> @@ -23198,57 +23177,57 @@ <b> <a>1</a> <b>2</b> - <v>211</v> + <v>208</v> </b> <b> <a>7</a> <b>8</b> - <v>35</v> + <v>34</v> </b> <b> <a>35</a> <b>36</b> - <v>35</v> + <v>34</v> </b> <b> <a>108</a> <b>109</b> - <v>35</v> + <v>34</v> </b> <b> <a>164</a> <b>165</b> - <v>35</v> + <v>34</v> </b> <b> <a>294</a> <b>295</b> - <v>35</v> + <v>34</v> </b> <b> <a>849</a> <b>850</b> - <v>35</v> + <v>34</v> </b> <b> - <a>3293</a> - <b>3294</b> - <v>35</v> + <a>3294</a> + <b>3295</b> + <v>34</v> </b> <b> - <a>8740</a> - <b>8741</b> - <v>35</v> + <a>8741</a> + <b>8742</b> + <v>34</v> </b> <b> - <a>17935</a> - <b>17936</b> - <v>35</v> + <a>17936</a> + <b>17937</b> + <v>34</v> </b> <b> - <a>34972</a> - <b>34973</b> - <v>35</v> + <a>34975</a> + <b>34976</b> + <v>34</v> </b> </bs> </hist> @@ -23264,57 +23243,57 @@ <b> <a>1</a> <b>2</b> - <v>211</v> + <v>208</v> </b> <b> <a>3</a> <b>4</b> - <v>35</v> + <v>34</v> </b> <b> <a>11</a> <b>12</b> - <v>35</v> + <v>34</v> </b> <b> <a>22</a> <b>23</b> - <v>35</v> + <v>34</v> </b> <b> <a>30</a> <b>31</b> - <v>35</v> + <v>34</v> </b> <b> <a>61</a> <b>62</b> - <v>35</v> + <v>34</v> </b> <b> <a>134</a> <b>135</b> - <v>35</v> + <v>34</v> </b> <b> <a>453</a> <b>454</b> - <v>35</v> + <v>34</v> </b> <b> <a>1126</a> <b>1127</b> - <v>35</v> + <v>34</v> </b> <b> <a>2397</a> <b>2398</b> - <v>35</v> + <v>34</v> </b> <b> - <a>5837</a> - <b>5838</b> - <v>35</v> + <a>5838</a> + <b>5839</b> + <v>34</v> </b> </bs> </hist> @@ -23330,32 +23309,32 @@ <b> <a>1</a> <b>2</b> - <v>186245</v> + <v>184304</v> </b> <b> <a>2</a> <b>3</b> - <v>44521</v> + <v>44049</v> </b> <b> <a>3</a> <b>5</b> - <v>23421</v> + <v>23172</v> </b> <b> <a>5</a> <b>16</b> - <v>23456</v> + <v>23207</v> </b> <b> <a>16</a> <b>107</b> - <v>22964</v> + <v>22720</v> </b> <b> <a>108</a> <b>957</b> - <v>3446</v> + <v>3409</v> </b> </bs> </hist> @@ -23371,17 +23350,17 @@ <b> <a>1</a> <b>2</b> - <v>273987</v> + <v>271116</v> </b> <b> <a>2</a> <b>4</b> - <v>25953</v> + <v>25678</v> </b> <b> <a>4</a> <b>17</b> - <v>4114</v> + <v>4070</v> </b> </bs> </hist> @@ -23391,19 +23370,19 @@ </relation> <relation> <name>function_template_argument_value</name> - <cardinality>362328</cardinality> + <cardinality>358553</cardinality> <columnsizes> <e> <k>function_id</k> - <v>194509</v> + <v>192516</v> </e> <e> <k>index</k> - <v>562</v> + <v>556</v> </e> <e> <k>arg_value</k> - <v>359690</v> + <v>355944</v> </e> </columnsizes> <dependencies> @@ -23417,12 +23396,12 @@ <b> <a>1</a> <b>2</b> - <v>185155</v> + <v>183260</v> </b> <b> <a>2</a> <b>8</b> - <v>9354</v> + <v>9255</v> </b> </bs> </hist> @@ -23438,17 +23417,17 @@ <b> <a>1</a> <b>2</b> - <v>177735</v> + <v>175919</v> </b> <b> <a>2</a> <b>31</b> - <v>15262</v> + <v>15100</v> </b> <b> <a>32</a> <b>97</b> - <v>1512</v> + <v>1496</v> </b> </bs> </hist> @@ -23464,52 +23443,52 @@ <b> <a>1</a> <b>2</b> - <v>211</v> + <v>208</v> </b> <b> <a>2</a> <b>3</b> - <v>70</v> + <v>69</v> </b> <b> <a>11</a> <b>12</b> - <v>35</v> + <v>34</v> </b> <b> <a>26</a> <b>27</b> - <v>35</v> + <v>34</v> </b> <b> <a>94</a> <b>95</b> - <v>35</v> + <v>34</v> </b> <b> <a>314</a> <b>315</b> - <v>35</v> + <v>34</v> </b> <b> <a>844</a> <b>845</b> - <v>35</v> + <v>34</v> </b> <b> - <a>992</a> - <b>993</b> - <v>35</v> + <a>994</a> + <b>995</b> + <v>34</v> </b> <b> <a>1187</a> <b>1188</b> - <v>35</v> + <v>34</v> </b> <b> <a>2397</a> <b>2398</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -23525,52 +23504,52 @@ <b> <a>1</a> <b>2</b> - <v>211</v> + <v>208</v> </b> <b> <a>2</a> <b>3</b> - <v>70</v> + <v>69</v> </b> <b> <a>60</a> <b>61</b> - <v>35</v> + <v>34</v> </b> <b> <a>80</a> <b>81</b> - <v>35</v> + <v>34</v> </b> <b> <a>141</a> <b>142</b> - <v>35</v> + <v>34</v> </b> <b> <a>533</a> <b>534</b> - <v>35</v> + <v>34</v> </b> <b> - <a>1610</a> - <b>1611</b> - <v>35</v> + <a>1612</a> + <b>1613</b> + <v>34</v> </b> <b> <a>1821</a> <b>1822</b> - <v>35</v> + <v>34</v> </b> <b> <a>2202</a> <b>2203</b> - <v>35</v> + <v>34</v> </b> <b> <a>3771</a> <b>3772</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -23586,12 +23565,12 @@ <b> <a>1</a> <b>2</b> - <v>357052</v> + <v>353334</v> </b> <b> <a>2</a> <b>3</b> - <v>2637</v> + <v>2609</v> </b> </bs> </hist> @@ -23607,7 +23586,7 @@ <b> <a>1</a> <b>2</b> - <v>359690</v> + <v>355944</v> </b> </bs> </hist> @@ -23617,26 +23596,26 @@ </relation> <relation> <name>is_variable_template</name> - <cardinality>47349</cardinality> + <cardinality>46998</cardinality> <columnsizes> <e> <k>id</k> - <v>47349</v> + <v>46998</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>variable_instantiation</name> - <cardinality>172502</cardinality> + <cardinality>171327</cardinality> <columnsizes> <e> <k>to</k> - <v>172502</v> + <v>171327</v> </e> <e> <k>from</k> - <v>25864</v> + <v>25673</v> </e> </columnsizes> <dependencies> @@ -23650,7 +23629,7 @@ <b> <a>1</a> <b>2</b> - <v>172502</v> + <v>171327</v> </b> </bs> </hist> @@ -23666,42 +23645,42 @@ <b> <a>1</a> <b>2</b> - <v>13871</v> + <v>13768</v> </b> <b> <a>2</a> <b>3</b> - <v>2607</v> + <v>2588</v> </b> <b> <a>3</a> <b>4</b> - <v>1251</v> + <v>1242</v> </b> <b> <a>4</a> <b>6</b> - <v>1877</v> + <v>1863</v> </b> <b> <a>6</a> <b>8</b> - <v>1355</v> + <v>1345</v> </b> <b> <a>8</a> <b>12</b> - <v>2190</v> + <v>2173</v> </b> <b> <a>12</a> <b>38</b> - <v>1981</v> + <v>1966</v> </b> <b> <a>46</a> - <b>277</b> - <v>730</v> + <b>278</b> + <v>724</v> </b> </bs> </hist> @@ -23711,19 +23690,19 @@ </relation> <relation> <name>variable_template_argument</name> - <cardinality>310587</cardinality> + <cardinality>308493</cardinality> <columnsizes> <e> <k>variable_id</k> - <v>163324</v> + <v>162217</v> </e> <e> <k>index</k> - <v>1772</v> + <v>1759</v> </e> <e> <k>arg_type</k> - <v>171146</v> + <v>170085</v> </e> </columnsizes> <dependencies> @@ -23737,22 +23716,22 @@ <b> <a>1</a> <b>2</b> - <v>83643</v> + <v>83023</v> </b> <b> <a>2</a> <b>3</b> - <v>50791</v> + <v>50518</v> </b> <b> <a>3</a> <b>4</b> - <v>18772</v> + <v>18633</v> </b> <b> <a>4</a> <b>17</b> - <v>10116</v> + <v>10041</v> </b> </bs> </hist> @@ -23768,22 +23747,22 @@ <b> <a>1</a> <b>2</b> - <v>88336</v> + <v>87682</v> </b> <b> <a>2</a> <b>3</b> - <v>52042</v> + <v>51760</v> </b> <b> <a>3</a> <b>4</b> - <v>13662</v> + <v>13561</v> </b> <b> <a>4</a> <b>17</b> - <v>9282</v> + <v>9213</v> </b> </bs> </hist> @@ -23799,47 +23778,47 @@ <b> <a>9</a> <b>10</b> - <v>104</v> + <v>103</v> </b> <b> <a>19</a> <b>20</b> - <v>625</v> + <v>621</v> </b> <b> <a>26</a> <b>27</b> - <v>417</v> + <v>414</v> </b> <b> <a>47</a> <b>48</b> - <v>104</v> + <v>103</v> </b> <b> <a>93</a> <b>94</b> - <v>104</v> + <v>103</v> </b> <b> <a>185</a> <b>186</b> - <v>104</v> + <v>103</v> </b> <b> - <a>547</a> - <b>548</b> - <v>104</v> + <a>548</a> + <b>549</b> + <v>103</v> </b> <b> - <a>626</a> - <b>627</b> - <v>104</v> + <a>627</a> + <b>628</b> + <v>103</v> </b> <b> <a>1253</a> <b>1254</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -23855,52 +23834,52 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>103</v> </b> <b> <a>10</a> <b>11</b> - <v>417</v> + <v>414</v> </b> <b> <a>11</a> <b>12</b> - <v>208</v> + <v>207</v> </b> <b> <a>12</a> <b>13</b> - <v>417</v> + <v>414</v> </b> <b> <a>29</a> <b>30</b> - <v>104</v> + <v>103</v> </b> <b> <a>48</a> <b>49</b> - <v>104</v> + <v>103</v> </b> <b> <a>130</a> <b>131</b> - <v>104</v> + <v>103</v> </b> <b> - <a>375</a> - <b>376</b> - <v>104</v> + <a>376</a> + <b>377</b> + <v>103</v> </b> <b> - <a>402</a> - <b>403</b> - <v>104</v> + <a>403</a> + <b>404</b> + <v>103</v> </b> <b> <a>743</a> <b>744</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -23916,22 +23895,22 @@ <b> <a>1</a> <b>2</b> - <v>137668</v> + <v>136855</v> </b> <b> <a>2</a> <b>3</b> - <v>19502</v> + <v>19358</v> </b> <b> <a>3</a> <b>24</b> - <v>12932</v> + <v>12836</v> </b> <b> <a>24</a> <b>110</b> - <v>1042</v> + <v>1035</v> </b> </bs> </hist> @@ -23947,17 +23926,17 @@ <b> <a>1</a> <b>2</b> - <v>154146</v> + <v>153211</v> </b> <b> <a>2</a> <b>3</b> - <v>14914</v> + <v>14803</v> </b> <b> <a>3</a> <b>6</b> - <v>2085</v> + <v>2070</v> </b> </bs> </hist> @@ -23967,19 +23946,19 @@ </relation> <relation> <name>variable_template_argument_value</name> - <cardinality>11889</cardinality> + <cardinality>11801</cardinality> <columnsizes> <e> <k>variable_id</k> - <v>7822</v> + <v>7764</v> </e> <e> <k>index</k> - <v>417</v> + <v>414</v> </e> <e> <k>arg_value</k> - <v>11889</v> + <v>11801</v> </e> </columnsizes> <dependencies> @@ -23993,12 +23972,12 @@ <b> <a>1</a> <b>2</b> - <v>7404</v> + <v>7350</v> </b> <b> <a>2</a> <b>3</b> - <v>417</v> + <v>414</v> </b> </bs> </hist> @@ -24014,17 +23993,17 @@ <b> <a>1</a> <b>2</b> - <v>4380</v> + <v>4347</v> </b> <b> <a>2</a> <b>3</b> - <v>3128</v> + <v>3105</v> </b> <b> <a>4</a> <b>5</b> - <v>312</v> + <v>310</v> </b> </bs> </hist> @@ -24040,22 +24019,22 @@ <b> <a>4</a> <b>5</b> - <v>104</v> + <v>103</v> </b> <b> <a>19</a> <b>20</b> - <v>104</v> + <v>103</v> </b> <b> <a>26</a> <b>27</b> - <v>104</v> + <v>103</v> </b> <b> <a>30</a> <b>31</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -24071,22 +24050,22 @@ <b> <a>7</a> <b>8</b> - <v>104</v> + <v>103</v> </b> <b> <a>28</a> <b>29</b> - <v>104</v> + <v>103</v> </b> <b> <a>38</a> <b>39</b> - <v>104</v> + <v>103</v> </b> <b> <a>41</a> <b>42</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -24102,7 +24081,7 @@ <b> <a>1</a> <b>2</b> - <v>11889</v> + <v>11801</v> </b> </bs> </hist> @@ -24118,7 +24097,7 @@ <b> <a>1</a> <b>2</b> - <v>11889</v> + <v>11801</v> </b> </bs> </hist> @@ -24128,15 +24107,15 @@ </relation> <relation> <name>routinetypes</name> - <cardinality>545338</cardinality> + <cardinality>538161</cardinality> <columnsizes> <e> <k>id</k> - <v>545338</v> + <v>538161</v> </e> <e> <k>return_type</k> - <v>284819</v> + <v>280406</v> </e> </columnsizes> <dependencies> @@ -24150,7 +24129,7 @@ <b> <a>1</a> <b>2</b> - <v>545338</v> + <v>538161</v> </b> </bs> </hist> @@ -24166,17 +24145,17 @@ <b> <a>1</a> <b>2</b> - <v>248175</v> + <v>244220</v> </b> <b> <a>2</a> <b>3</b> - <v>21276</v> + <v>20946</v> </b> <b> <a>3</a> - <b>3594</b> - <v>15368</v> + <b>3595</b> + <v>15239</v> </b> </bs> </hist> @@ -24186,19 +24165,19 @@ </relation> <relation> <name>routinetypeargs</name> - <cardinality>982110</cardinality> + <cardinality>982278</cardinality> <columnsizes> <e> <k>routine</k> - <v>423034</v> + <v>423042</v> </e> <e> <k>index</k> - <v>7920</v> + <v>7929</v> </e> <e> <k>type_id</k> - <v>226425</v> + <v>226679</v> </e> </columnsizes> <dependencies> @@ -24212,27 +24191,27 @@ <b> <a>1</a> <b>2</b> - <v>152348</v> + <v>152519</v> </b> <b> <a>2</a> <b>3</b> - <v>134178</v> + <v>133862</v> </b> <b> <a>3</a> <b>4</b> - <v>63361</v> + <v>63432</v> </b> <b> <a>4</a> <b>5</b> - <v>45657</v> + <v>45709</v> </b> <b> <a>5</a> <b>18</b> - <v>27487</v> + <v>27518</v> </b> </bs> </hist> @@ -24248,27 +24227,27 @@ <b> <a>1</a> <b>2</b> - <v>182165</v> + <v>182369</v> </b> <b> <a>2</a> <b>3</b> - <v>133712</v> + <v>133395</v> </b> <b> <a>3</a> <b>4</b> - <v>58703</v> + <v>58768</v> </b> <b> <a>4</a> <b>5</b> - <v>33544</v> + <v>33582</v> </b> <b> <a>5</a> <b>11</b> - <v>14908</v> + <v>14925</v> </b> </bs> </hist> @@ -24284,67 +24263,67 @@ <b> <a>2</a> <b>3</b> - <v>931</v> + <v>932</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> <b> <a>8</a> <b>9</b> - <v>931</v> + <v>932</v> </b> <b> <a>9</a> <b>10</b> - <v>465</v> + <v>466</v> </b> <b> <a>10</a> <b>11</b> - <v>1397</v> + <v>1399</v> </b> <b> <a>13</a> <b>14</b> - <v>465</v> + <v>466</v> </b> <b> <a>28</a> <b>29</b> - <v>465</v> + <v>466</v> </b> <b> <a>59</a> <b>60</b> - <v>465</v> + <v>466</v> </b> <b> <a>157</a> <b>158</b> - <v>465</v> + <v>466</v> </b> <b> <a>293</a> <b>294</b> - <v>465</v> + <v>466</v> </b> <b> - <a>581</a> - <b>582</b> - <v>465</v> + <a>580</a> + <b>581</b> + <v>466</v> </b> <b> - <a>908</a> - <b>909</b> - <v>465</v> + <a>907</a> + <b>908</b> + <v>466</v> </b> </bs> </hist> @@ -24360,57 +24339,57 @@ <b> <a>1</a> <b>2</b> - <v>931</v> + <v>932</v> </b> <b> <a>3</a> <b>4</b> - <v>931</v> + <v>932</v> </b> <b> <a>4</a> <b>5</b> - <v>1397</v> + <v>1399</v> </b> <b> <a>5</a> <b>6</b> - <v>931</v> + <v>932</v> </b> <b> <a>6</a> <b>7</b> - <v>931</v> + <v>932</v> </b> <b> <a>10</a> <b>11</b> - <v>465</v> + <v>466</v> </b> <b> <a>14</a> <b>15</b> - <v>465</v> + <v>466</v> </b> <b> <a>47</a> <b>48</b> - <v>465</v> + <v>466</v> </b> <b> <a>90</a> <b>91</b> - <v>465</v> + <v>466</v> </b> <b> <a>176</a> <b>177</b> - <v>465</v> + <v>466</v> </b> <b> <a>347</a> <b>348</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -24426,27 +24405,27 @@ <b> <a>1</a> <b>2</b> - <v>146291</v> + <v>146455</v> </b> <b> <a>2</a> <b>3</b> - <v>30749</v> + <v>30783</v> </b> <b> <a>3</a> <b>5</b> - <v>16772</v> + <v>16791</v> </b> <b> <a>5</a> <b>12</b> - <v>18169</v> + <v>18190</v> </b> <b> <a>12</a> - <b>111</b> - <v>14442</v> + <b>110</b> + <v>14458</v> </b> </bs> </hist> @@ -24462,22 +24441,22 @@ <b> <a>1</a> <b>2</b> - <v>172381</v> + <v>172575</v> </b> <b> <a>2</a> <b>3</b> - <v>30749</v> + <v>30783</v> </b> <b> <a>3</a> <b>6</b> - <v>18635</v> + <v>18656</v> </b> <b> <a>6</a> <b>14</b> - <v>4658</v> + <v>4664</v> </b> </bs> </hist> @@ -24487,19 +24466,19 @@ </relation> <relation> <name>ptrtomembers</name> - <cardinality>37737</cardinality> + <cardinality>37779</cardinality> <columnsizes> <e> <k>id</k> - <v>37737</v> + <v>37779</v> </e> <e> <k>type_id</k> - <v>37737</v> + <v>37779</v> </e> <e> <k>class_id</k> - <v>15374</v> + <v>15391</v> </e> </columnsizes> <dependencies> @@ -24513,7 +24492,7 @@ <b> <a>1</a> <b>2</b> - <v>37737</v> + <v>37779</v> </b> </bs> </hist> @@ -24529,7 +24508,7 @@ <b> <a>1</a> <b>2</b> - <v>37737</v> + <v>37779</v> </b> </bs> </hist> @@ -24545,7 +24524,7 @@ <b> <a>1</a> <b>2</b> - <v>37737</v> + <v>37779</v> </b> </bs> </hist> @@ -24561,7 +24540,7 @@ <b> <a>1</a> <b>2</b> - <v>37737</v> + <v>37779</v> </b> </bs> </hist> @@ -24577,17 +24556,17 @@ <b> <a>1</a> <b>2</b> - <v>13511</v> + <v>13526</v> </b> <b> <a>8</a> <b>9</b> - <v>1397</v> + <v>1399</v> </b> <b> <a>28</a> <b>29</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -24603,17 +24582,17 @@ <b> <a>1</a> <b>2</b> - <v>13511</v> + <v>13526</v> </b> <b> <a>8</a> <b>9</b> - <v>1397</v> + <v>1399</v> </b> <b> <a>28</a> <b>29</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -24623,15 +24602,15 @@ </relation> <relation> <name>specifiers</name> - <cardinality>24692</cardinality> + <cardinality>24720</cardinality> <columnsizes> <e> <k>id</k> - <v>24692</v> + <v>24720</v> </e> <e> <k>str</k> - <v>24692</v> + <v>24720</v> </e> </columnsizes> <dependencies> @@ -24645,7 +24624,7 @@ <b> <a>1</a> <b>2</b> - <v>24692</v> + <v>24720</v> </b> </bs> </hist> @@ -24661,7 +24640,7 @@ <b> <a>1</a> <b>2</b> - <v>24692</v> + <v>24720</v> </b> </bs> </hist> @@ -24671,15 +24650,15 @@ </relation> <relation> <name>typespecifiers</name> - <cardinality>1291000</cardinality> + <cardinality>1291048</cardinality> <columnsizes> <e> <k>type_id</k> - <v>1272830</v> + <v>1272857</v> </e> <e> <k>spec_id</k> - <v>3727</v> + <v>3731</v> </e> </columnsizes> <dependencies> @@ -24693,12 +24672,12 @@ <b> <a>1</a> <b>2</b> - <v>1254660</v> + <v>1254667</v> </b> <b> <a>2</a> <b>3</b> - <v>18169</v> + <v>18190</v> </b> </bs> </hist> @@ -24714,42 +24693,42 @@ <b> <a>8</a> <b>9</b> - <v>465</v> + <v>466</v> </b> <b> <a>36</a> <b>37</b> - <v>465</v> + <v>466</v> </b> <b> <a>51</a> <b>52</b> - <v>465</v> + <v>466</v> </b> <b> <a>86</a> <b>87</b> - <v>465</v> + <v>466</v> </b> <b> <a>105</a> <b>106</b> - <v>465</v> + <v>466</v> </b> <b> <a>219</a> <b>220</b> - <v>465</v> + <v>466</v> </b> <b> <a>221</a> <b>222</b> - <v>465</v> + <v>466</v> </b> <b> - <a>2045</a> - <b>2046</b> - <v>465</v> + <a>2042</a> + <b>2043</b> + <v>466</v> </b> </bs> </hist> @@ -24759,15 +24738,15 @@ </relation> <relation> <name>funspecifiers</name> - <cardinality>12739754</cardinality> + <cardinality>12607036</cardinality> <columnsizes> <e> <k>func_id</k> - <v>3895228</v> + <v>3854601</v> </e> <e> <k>spec_id</k> - <v>703</v> + <v>695</v> </e> </columnsizes> <dependencies> @@ -24781,27 +24760,27 @@ <b> <a>1</a> <b>2</b> - <v>314078</v> + <v>310746</v> </b> <b> <a>2</a> <b>3</b> - <v>545865</v> + <v>540214</v> </b> <b> <a>3</a> <b>4</b> - <v>1145748</v> + <v>1133732</v> </b> <b> <a>4</a> <b>5</b> - <v>1641079</v> + <v>1624017</v> </b> <b> <a>5</a> <b>8</b> - <v>248456</v> + <v>245890</v> </b> </bs> </hist> @@ -24817,97 +24796,97 @@ <b> <a>13</a> <b>14</b> - <v>70</v> + <v>69</v> </b> <b> <a>98</a> <b>99</b> - <v>35</v> + <v>34</v> </b> <b> <a>202</a> <b>203</b> - <v>35</v> + <v>34</v> </b> <b> <a>296</a> <b>297</b> - <v>35</v> + <v>34</v> </b> <b> <a>304</a> <b>305</b> - <v>35</v> + <v>34</v> </b> <b> <a>572</a> <b>573</b> - <v>35</v> + <v>34</v> </b> <b> <a>709</a> <b>710</b> - <v>35</v> + <v>34</v> </b> <b> <a>1599</a> <b>1600</b> - <v>35</v> + <v>34</v> </b> <b> <a>1646</a> <b>1647</b> - <v>35</v> + <v>34</v> </b> <b> <a>3782</a> <b>3783</b> - <v>35</v> + <v>34</v> </b> <b> <a>3923</a> <b>3924</b> - <v>35</v> + <v>34</v> </b> <b> <a>5095</a> <b>5096</b> - <v>35</v> + <v>34</v> </b> <b> - <a>6822</a> - <b>6823</b> - <v>35</v> + <a>6823</a> + <b>6824</b> + <v>34</v> </b> <b> - <a>9687</a> - <b>9688</b> - <v>35</v> + <a>9692</a> + <b>9693</b> + <v>34</v> </b> <b> - <a>12226</a> - <b>12227</b> - <v>35</v> + <a>12228</a> + <b>12229</b> + <v>34</v> </b> <b> - <a>50649</a> - <b>50650</b> - <v>35</v> + <a>50664</a> + <b>50665</b> + <v>34</v> </b> <b> - <a>77765</a> - <b>77766</b> - <v>35</v> + <a>77775</a> + <b>77776</b> + <v>34</v> </b> <b> - <a>89259</a> - <b>89260</b> - <v>35</v> + <a>89276</a> + <b>89277</b> + <v>34</v> </b> <b> - <a>97602</a> - <b>97603</b> - <v>35</v> + <a>97622</a> + <b>97623</b> + <v>34</v> </b> </bs> </hist> @@ -24917,15 +24896,15 @@ </relation> <relation> <name>varspecifiers</name> - <cardinality>2241430</cardinality> + <cardinality>2243942</cardinality> <columnsizes> <e> <k>var_id</k> - <v>1222513</v> + <v>1223883</v> </e> <e> <k>spec_id</k> - <v>3727</v> + <v>3731</v> </e> </columnsizes> <dependencies> @@ -24939,22 +24918,22 @@ <b> <a>1</a> <b>2</b> - <v>728662</v> + <v>729479</v> </b> <b> <a>2</a> <b>3</b> - <v>202199</v> + <v>202425</v> </b> <b> <a>3</a> <b>4</b> - <v>58237</v> + <v>58302</v> </b> <b> <a>4</a> <b>5</b> - <v>233414</v> + <v>233675</v> </b> </bs> </hist> @@ -24970,42 +24949,42 @@ <b> <a>112</a> <b>113</b> - <v>465</v> + <v>466</v> </b> <b> <a>315</a> <b>316</b> - <v>465</v> + <v>466</v> </b> <b> <a>416</a> <b>417</b> - <v>465</v> + <v>466</v> </b> <b> <a>514</a> <b>515</b> - <v>465</v> + <v>466</v> </b> <b> <a>646</a> <b>647</b> - <v>465</v> + <v>466</v> </b> <b> <a>686</a> <b>687</b> - <v>465</v> + <v>466</v> </b> <b> <a>700</a> <b>701</b> - <v>465</v> + <v>466</v> </b> <b> <a>1422</a> <b>1423</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25015,27 +24994,27 @@ </relation> <relation> <name>attributes</name> - <cardinality>735689</cardinality> + <cardinality>729824</cardinality> <columnsizes> <e> <k>id</k> - <v>735689</v> + <v>729824</v> </e> <e> <k>kind</k> - <v>312</v> + <v>310</v> </e> <e> <k>name</k> - <v>1668</v> + <v>1656</v> </e> <e> <k>name_space</k> - <v>208</v> + <v>207</v> </e> <e> <k>location</k> - <v>483193</v> + <v>479613</v> </e> </columnsizes> <dependencies> @@ -25049,7 +25028,7 @@ <b> <a>1</a> <b>2</b> - <v>735689</v> + <v>729824</v> </b> </bs> </hist> @@ -25065,7 +25044,7 @@ <b> <a>1</a> <b>2</b> - <v>735689</v> + <v>729824</v> </b> </bs> </hist> @@ -25081,7 +25060,7 @@ <b> <a>1</a> <b>2</b> - <v>735689</v> + <v>729824</v> </b> </bs> </hist> @@ -25097,7 +25076,7 @@ <b> <a>1</a> <b>2</b> - <v>735689</v> + <v>729824</v> </b> </bs> </hist> @@ -25113,17 +25092,17 @@ <b> <a>5</a> <b>6</b> - <v>104</v> + <v>103</v> </b> <b> <a>2332</a> <b>2333</b> - <v>104</v> + <v>103</v> </b> <b> - <a>4717</a> - <b>4718</b> - <v>104</v> + <a>4713</a> + <b>4714</b> + <v>103</v> </b> </bs> </hist> @@ -25139,17 +25118,17 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>103</v> </b> <b> <a>6</a> <b>7</b> - <v>104</v> + <v>103</v> </b> <b> <a>11</a> <b>12</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25165,12 +25144,12 @@ <b> <a>1</a> <b>2</b> - <v>208</v> + <v>207</v> </b> <b> <a>2</a> <b>3</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25186,17 +25165,17 @@ <b> <a>2</a> <b>3</b> - <v>104</v> + <v>103</v> </b> <b> <a>2057</a> <b>2058</b> - <v>104</v> + <v>103</v> </b> <b> <a>2574</a> <b>2575</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25212,72 +25191,72 @@ <b> <a>1</a> <b>2</b> - <v>208</v> + <v>310</v> </b> <b> <a>2</a> <b>3</b> - <v>104</v> + <v>103</v> </b> <b> <a>4</a> <b>5</b> - <v>104</v> + <v>103</v> </b> <b> <a>5</a> <b>6</b> - <v>208</v> + <v>103</v> </b> <b> <a>11</a> <b>12</b> - <v>104</v> + <v>103</v> </b> <b> <a>14</a> <b>15</b> - <v>104</v> + <v>103</v> </b> <b> <a>16</a> <b>17</b> - <v>104</v> + <v>103</v> </b> <b> <a>18</a> <b>19</b> - <v>104</v> + <v>103</v> </b> <b> <a>24</a> <b>25</b> - <v>104</v> + <v>103</v> </b> <b> <a>86</a> <b>87</b> - <v>104</v> + <v>103</v> </b> <b> <a>115</a> <b>116</b> - <v>104</v> + <v>103</v> </b> <b> <a>1048</a> <b>1049</b> - <v>104</v> + <v>103</v> </b> <b> <a>1760</a> <b>1761</b> - <v>104</v> + <v>103</v> </b> <b> <a>3944</a> <b>3945</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25293,12 +25272,12 @@ <b> <a>1</a> <b>2</b> - <v>1460</v> + <v>1449</v> </b> <b> <a>2</a> <b>3</b> - <v>208</v> + <v>207</v> </b> </bs> </hist> @@ -25314,7 +25293,7 @@ <b> <a>1</a> <b>2</b> - <v>1668</v> + <v>1656</v> </b> </bs> </hist> @@ -25330,67 +25309,67 @@ <b> <a>1</a> <b>2</b> - <v>312</v> + <v>310</v> </b> <b> <a>2</a> <b>3</b> - <v>208</v> + <v>207</v> </b> <b> <a>4</a> <b>5</b> - <v>104</v> + <v>103</v> </b> <b> <a>6</a> <b>7</b> - <v>104</v> + <v>103</v> </b> <b> <a>8</a> <b>9</b> - <v>104</v> + <v>103</v> </b> <b> <a>9</a> <b>10</b> - <v>104</v> + <v>103</v> </b> <b> <a>14</a> <b>15</b> - <v>104</v> + <v>103</v> </b> <b> <a>18</a> <b>19</b> - <v>104</v> + <v>103</v> </b> <b> <a>59</a> <b>60</b> - <v>104</v> + <v>103</v> </b> <b> <a>72</a> <b>73</b> - <v>104</v> + <v>103</v> </b> <b> <a>333</a> <b>334</b> - <v>104</v> + <v>103</v> </b> <b> <a>1756</a> <b>1757</b> - <v>104</v> + <v>103</v> </b> <b> <a>2388</a> <b>2389</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25404,14 +25383,14 @@ <budget>12</budget> <bs> <b> - <a>23</a> - <b>24</b> - <v>104</v> + <a>19</a> + <b>20</b> + <v>103</v> </b> <b> <a>7031</a> <b>7032</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25427,12 +25406,12 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>103</v> </b> <b> <a>3</a> <b>4</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25448,12 +25427,12 @@ <b> <a>2</a> <b>3</b> - <v>104</v> + <v>103</v> </b> <b> <a>14</a> <b>15</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25469,12 +25448,12 @@ <b> <a>9</a> <b>10</b> - <v>104</v> + <v>103</v> </b> <b> <a>4624</a> <b>4625</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -25490,17 +25469,17 @@ <b> <a>1</a> <b>2</b> - <v>425623</v> + <v>422573</v> </b> <b> <a>2</a> <b>3</b> - <v>36607</v> + <v>36335</v> </b> <b> <a>3</a> <b>201</b> - <v>20963</v> + <v>20704</v> </b> </bs> </hist> @@ -25516,7 +25495,7 @@ <b> <a>1</a> <b>2</b> - <v>483193</v> + <v>479613</v> </b> </bs> </hist> @@ -25532,12 +25511,12 @@ <b> <a>1</a> <b>2</b> - <v>478917</v> + <v>475369</v> </b> <b> <a>2</a> <b>3</b> - <v>4276</v> + <v>4244</v> </b> </bs> </hist> @@ -25553,7 +25532,7 @@ <b> <a>1</a> <b>2</b> - <v>483193</v> + <v>479613</v> </b> </bs> </hist> @@ -25563,27 +25542,27 @@ </relation> <relation> <name>attribute_args</name> - <cardinality>409523</cardinality> + <cardinality>409982</cardinality> <columnsizes> <e> <k>id</k> - <v>409523</v> + <v>409982</v> </e> <e> <k>kind</k> - <v>1397</v> + <v>1399</v> </e> <e> <k>attribute</k> - <v>297708</v> + <v>298041</v> </e> <e> <k>index</k> - <v>1397</v> + <v>1399</v> </e> <e> <k>location</k> - <v>327059</v> + <v>327426</v> </e> </columnsizes> <dependencies> @@ -25597,7 +25576,7 @@ <b> <a>1</a> <b>2</b> - <v>409523</v> + <v>409982</v> </b> </bs> </hist> @@ -25613,7 +25592,7 @@ <b> <a>1</a> <b>2</b> - <v>409523</v> + <v>409982</v> </b> </bs> </hist> @@ -25629,7 +25608,7 @@ <b> <a>1</a> <b>2</b> - <v>409523</v> + <v>409982</v> </b> </bs> </hist> @@ -25645,7 +25624,7 @@ <b> <a>1</a> <b>2</b> - <v>409523</v> + <v>409982</v> </b> </bs> </hist> @@ -25661,17 +25640,17 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>84</a> <b>85</b> - <v>465</v> + <v>466</v> </b> <b> <a>794</a> <b>795</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25687,17 +25666,17 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>84</a> <b>85</b> - <v>465</v> + <v>466</v> </b> <b> <a>606</a> <b>607</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25713,12 +25692,12 @@ <b> <a>1</a> <b>2</b> - <v>931</v> + <v>932</v> </b> <b> <a>3</a> <b>4</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25734,17 +25713,17 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> <b> <a>54</a> <b>55</b> - <v>465</v> + <v>466</v> </b> <b> <a>674</a> <b>675</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25760,17 +25739,17 @@ <b> <a>1</a> <b>2</b> - <v>215710</v> + <v>215952</v> </b> <b> <a>2</a> <b>3</b> - <v>52180</v> + <v>52238</v> </b> <b> <a>3</a> <b>4</b> - <v>29817</v> + <v>29850</v> </b> </bs> </hist> @@ -25786,12 +25765,12 @@ <b> <a>1</a> <b>2</b> - <v>273481</v> + <v>273788</v> </b> <b> <a>2</a> <b>3</b> - <v>24226</v> + <v>24253</v> </b> </bs> </hist> @@ -25807,17 +25786,17 @@ <b> <a>1</a> <b>2</b> - <v>215710</v> + <v>215952</v> </b> <b> <a>2</a> <b>3</b> - <v>52180</v> + <v>52238</v> </b> <b> <a>3</a> <b>4</b> - <v>29817</v> + <v>29850</v> </b> </bs> </hist> @@ -25833,17 +25812,17 @@ <b> <a>1</a> <b>2</b> - <v>215710</v> + <v>215952</v> </b> <b> <a>2</a> <b>3</b> - <v>52180</v> + <v>52238</v> </b> <b> <a>3</a> <b>4</b> - <v>29817</v> + <v>29850</v> </b> </bs> </hist> @@ -25859,17 +25838,17 @@ <b> <a>64</a> <b>65</b> - <v>465</v> + <v>466</v> </b> <b> <a>176</a> <b>177</b> - <v>465</v> + <v>466</v> </b> <b> <a>639</a> <b>640</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25885,12 +25864,12 @@ <b> <a>1</a> <b>2</b> - <v>931</v> + <v>932</v> </b> <b> <a>3</a> <b>4</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25906,17 +25885,17 @@ <b> <a>64</a> <b>65</b> - <v>465</v> + <v>466</v> </b> <b> <a>176</a> <b>177</b> - <v>465</v> + <v>466</v> </b> <b> <a>639</a> <b>640</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25932,17 +25911,17 @@ <b> <a>34</a> <b>35</b> - <v>465</v> + <v>466</v> </b> <b> <a>140</a> <b>141</b> - <v>465</v> + <v>466</v> </b> <b> <a>528</a> <b>529</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25958,22 +25937,22 @@ <b> <a>1</a> <b>2</b> - <v>278606</v> + <v>278918</v> </b> <b> <a>2</a> <b>3</b> - <v>23294</v> + <v>23320</v> </b> <b> <a>3</a> <b>9</b> - <v>24692</v> + <v>24720</v> </b> <b> <a>17</a> <b>18</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -25989,12 +25968,12 @@ <b> <a>1</a> <b>2</b> - <v>314480</v> + <v>314832</v> </b> <b> <a>2</a> <b>3</b> - <v>12579</v> + <v>12593</v> </b> </bs> </hist> @@ -26010,22 +25989,22 @@ <b> <a>1</a> <b>2</b> - <v>278606</v> + <v>278918</v> </b> <b> <a>2</a> <b>3</b> - <v>23294</v> + <v>23320</v> </b> <b> <a>3</a> <b>9</b> - <v>24692</v> + <v>24720</v> </b> <b> <a>17</a> <b>18</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -26041,7 +26020,7 @@ <b> <a>1</a> <b>2</b> - <v>327059</v> + <v>327426</v> </b> </bs> </hist> @@ -26051,15 +26030,15 @@ </relation> <relation> <name>attribute_arg_value</name> - <cardinality>39135</cardinality> + <cardinality>39179</cardinality> <columnsizes> <e> <k>arg</k> - <v>39135</v> + <v>39179</v> </e> <e> <k>value</k> - <v>15840</v> + <v>15858</v> </e> </columnsizes> <dependencies> @@ -26073,7 +26052,7 @@ <b> <a>1</a> <b>2</b> - <v>39135</v> + <v>39179</v> </b> </bs> </hist> @@ -26089,12 +26068,12 @@ <b> <a>1</a> <b>2</b> - <v>14442</v> + <v>14458</v> </b> <b> <a>2</a> <b>34</b> - <v>1397</v> + <v>1399</v> </b> </bs> </hist> @@ -26104,15 +26083,15 @@ </relation> <relation> <name>attribute_arg_type</name> - <cardinality>465</cardinality> + <cardinality>466</cardinality> <columnsizes> <e> <k>arg</k> - <v>465</v> + <v>466</v> </e> <e> <k>type_id</k> - <v>465</v> + <v>466</v> </e> </columnsizes> <dependencies> @@ -26126,7 +26105,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -26142,7 +26121,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -26152,15 +26131,15 @@ </relation> <relation> <name>attribute_arg_constant</name> - <cardinality>369922</cardinality> + <cardinality>370336</cardinality> <columnsizes> <e> <k>arg</k> - <v>369922</v> + <v>370336</v> </e> <e> <k>constant</k> - <v>369922</v> + <v>370336</v> </e> </columnsizes> <dependencies> @@ -26174,7 +26153,7 @@ <b> <a>1</a> <b>2</b> - <v>369922</v> + <v>370336</v> </b> </bs> </hist> @@ -26190,7 +26169,7 @@ <b> <a>1</a> <b>2</b> - <v>369922</v> + <v>370336</v> </b> </bs> </hist> @@ -26301,15 +26280,15 @@ </relation> <relation> <name>typeattributes</name> - <cardinality>84999</cardinality> + <cardinality>84369</cardinality> <columnsizes> <e> <k>type_id</k> - <v>62159</v> + <v>61698</v> </e> <e> <k>spec_id</k> - <v>84999</v> + <v>84369</v> </e> </columnsizes> <dependencies> @@ -26323,17 +26302,17 @@ <b> <a>1</a> <b>2</b> - <v>56214</v> + <v>55797</v> </b> <b> <a>2</a> <b>4</b> - <v>4276</v> + <v>4244</v> </b> <b> <a>12</a> <b>13</b> - <v>1668</v> + <v>1656</v> </b> </bs> </hist> @@ -26349,7 +26328,7 @@ <b> <a>1</a> <b>2</b> - <v>84999</v> + <v>84369</v> </b> </bs> </hist> @@ -26359,15 +26338,15 @@ </relation> <relation> <name>funcattributes</name> - <cardinality>650858</cardinality> + <cardinality>651587</cardinality> <columnsizes> <e> <k>func_id</k> - <v>442602</v> + <v>443098</v> </e> <e> <k>spec_id</k> - <v>650858</v> + <v>651587</v> </e> </columnsizes> <dependencies> @@ -26381,22 +26360,22 @@ <b> <a>1</a> <b>2</b> - <v>334048</v> + <v>334422</v> </b> <b> <a>2</a> <b>3</b> - <v>65225</v> + <v>65298</v> </b> <b> <a>3</a> <b>6</b> - <v>34942</v> + <v>34981</v> </b> <b> <a>6</a> <b>9</b> - <v>8386</v> + <v>8395</v> </b> </bs> </hist> @@ -26412,7 +26391,7 @@ <b> <a>1</a> <b>2</b> - <v>650858</v> + <v>651587</v> </b> </bs> </hist> @@ -26480,15 +26459,15 @@ </relation> <relation> <name>stmtattributes</name> - <cardinality>977</cardinality> + <cardinality>973</cardinality> <columnsizes> <e> <k>stmt_id</k> - <v>977</v> + <v>973</v> </e> <e> <k>spec_id</k> - <v>977</v> + <v>973</v> </e> </columnsizes> <dependencies> @@ -26502,7 +26481,7 @@ <b> <a>1</a> <b>2</b> - <v>977</v> + <v>973</v> </b> </bs> </hist> @@ -26518,7 +26497,7 @@ <b> <a>1</a> <b>2</b> - <v>977</v> + <v>973</v> </b> </bs> </hist> @@ -26528,15 +26507,15 @@ </relation> <relation> <name>unspecifiedtype</name> - <cardinality>10144906</cardinality> + <cardinality>10144615</cardinality> <columnsizes> <e> <k>type_id</k> - <v>10144906</v> + <v>10144615</v> </e> <e> <k>unspecified_type_id</k> - <v>6818402</v> + <v>6817181</v> </e> </columnsizes> <dependencies> @@ -26550,7 +26529,7 @@ <b> <a>1</a> <b>2</b> - <v>10144906</v> + <v>10144615</v> </b> </bs> </hist> @@ -26566,17 +26545,17 @@ <b> <a>1</a> <b>2</b> - <v>4585358</v> + <v>4584433</v> </b> <b> <a>2</a> <b>3</b> - <v>1995902</v> + <v>1995340</v> </b> <b> <a>3</a> <b>145</b> - <v>237141</v> + <v>237407</v> </b> </bs> </hist> @@ -26586,19 +26565,19 @@ </relation> <relation> <name>member</name> - <cardinality>4997440</cardinality> + <cardinality>4945084</cardinality> <columnsizes> <e> <k>parent</k> - <v>646092</v> + <v>639377</v> </e> <e> <k>index</k> - <v>8791</v> + <v>8698</v> </e> <e> <k>child</k> - <v>4952285</v> + <v>4900409</v> </e> </columnsizes> <dependencies> @@ -26612,42 +26591,42 @@ <b> <a>1</a> <b>3</b> - <v>19271</v> + <v>19067</v> </b> <b> <a>3</a> <b>4</b> - <v>348050</v> + <v>344496</v> </b> <b> <a>4</a> <b>5</b> - <v>38226</v> + <v>37786</v> </b> <b> <a>5</a> <b>7</b> - <v>53032</v> + <v>52504</v> </b> <b> <a>7</a> <b>10</b> - <v>52750</v> + <v>52191</v> </b> <b> <a>10</a> <b>15</b> - <v>50148</v> + <v>49581</v> </b> <b> <a>15</a> <b>24</b> - <v>49445</v> + <v>48955</v> </b> <b> <a>24</a> <b>251</b> - <v>35167</v> + <v>34794</v> </b> </bs> </hist> @@ -26663,42 +26642,42 @@ <b> <a>1</a> <b>3</b> - <v>19271</v> + <v>19067</v> </b> <b> <a>3</a> <b>4</b> - <v>347979</v> + <v>344427</v> </b> <b> <a>4</a> <b>5</b> - <v>38261</v> + <v>37821</v> </b> <b> <a>5</a> <b>7</b> - <v>53137</v> + <v>52608</v> </b> <b> <a>7</a> <b>10</b> - <v>53102</v> + <v>52539</v> </b> <b> <a>10</a> <b>15</b> - <v>49761</v> + <v>49198</v> </b> <b> <a>15</a> <b>24</b> - <v>49515</v> + <v>49024</v> </b> <b> <a>24</a> <b>255</b> - <v>35061</v> + <v>34689</v> </b> </bs> </hist> @@ -26714,62 +26693,62 @@ <b> <a>1</a> <b>2</b> - <v>1406</v> + <v>1391</v> </b> <b> <a>2</a> <b>3</b> - <v>808</v> + <v>800</v> </b> <b> <a>3</a> <b>4</b> - <v>949</v> + <v>939</v> </b> <b> <a>5</a> <b>22</b> - <v>668</v> + <v>661</v> </b> <b> <a>22</a> <b>42</b> - <v>668</v> + <v>661</v> </b> <b> <a>42</a> <b>56</b> - <v>668</v> + <v>661</v> </b> <b> <a>56</a> <b>100</b> - <v>668</v> + <v>661</v> </b> <b> <a>104</a> <b>164</b> - <v>668</v> + <v>661</v> </b> <b> <a>181</a> <b>299</b> - <v>668</v> + <v>661</v> </b> <b> <a>300</a> <b>727</b> - <v>668</v> + <v>661</v> </b> <b> <a>845</a> <b>4002</b> - <v>668</v> + <v>661</v> </b> <b> <a>4606</a> - <b>18041</b> - <v>281</v> + <b>18045</b> + <v>278</v> </b> </bs> </hist> @@ -26785,62 +26764,62 @@ <b> <a>1</a> <b>2</b> - <v>808</v> + <v>800</v> </b> <b> <a>2</a> <b>3</b> - <v>879</v> + <v>869</v> </b> <b> <a>3</a> <b>4</b> - <v>1160</v> + <v>1148</v> </b> <b> <a>4</a> <b>15</b> - <v>668</v> + <v>661</v> </b> <b> <a>16</a> <b>35</b> - <v>738</v> + <v>730</v> </b> <b> <a>36</a> <b>55</b> - <v>668</v> + <v>661</v> </b> <b> <a>57</a> <b>93</b> - <v>738</v> + <v>730</v> </b> <b> <a>97</a> <b>135</b> - <v>668</v> + <v>661</v> </b> <b> <a>140</a> <b>256</b> - <v>668</v> + <v>661</v> </b> <b> <a>268</a> <b>612</b> - <v>668</v> + <v>661</v> </b> <b> <a>619</a> <b>2611</b> - <v>668</v> + <v>661</v> </b> <b> <a>2770</a> - <b>18053</b> - <v>457</v> + <b>18057</b> + <v>452</v> </b> </bs> </hist> @@ -26856,7 +26835,7 @@ <b> <a>1</a> <b>2</b> - <v>4952285</v> + <v>4900409</v> </b> </bs> </hist> @@ -26872,12 +26851,12 @@ <b> <a>1</a> <b>2</b> - <v>4908502</v> + <v>4857090</v> </b> <b> <a>2</a> <b>8</b> - <v>43783</v> + <v>43318</v> </b> </bs> </hist> @@ -26887,15 +26866,15 @@ </relation> <relation> <name>enclosingfunction</name> - <cardinality>118347</cardinality> + <cardinality>117884</cardinality> <columnsizes> <e> <k>child</k> - <v>118347</v> + <v>117884</v> </e> <e> <k>parent</k> - <v>67599</v> + <v>67335</v> </e> </columnsizes> <dependencies> @@ -26909,7 +26888,7 @@ <b> <a>1</a> <b>2</b> - <v>118347</v> + <v>117884</v> </b> </bs> </hist> @@ -26925,22 +26904,22 @@ <b> <a>1</a> <b>2</b> - <v>35726</v> + <v>35587</v> </b> <b> <a>2</a> <b>3</b> - <v>20975</v> + <v>20893</v> </b> <b> <a>3</a> <b>4</b> - <v>5931</v> + <v>5908</v> </b> <b> <a>4</a> <b>45</b> - <v>4965</v> + <v>4946</v> </b> </bs> </hist> @@ -26950,27 +26929,27 @@ </relation> <relation> <name>derivations</name> - <cardinality>395209</cardinality> + <cardinality>391086</cardinality> <columnsizes> <e> <k>derivation</k> - <v>395209</v> + <v>391086</v> </e> <e> <k>sub</k> - <v>374742</v> + <v>370836</v> </e> <e> <k>index</k> - <v>211</v> + <v>208</v> </e> <e> <k>super</k> - <v>204673</v> + <v>202501</v> </e> <e> <k>location</k> - <v>38086</v> + <v>37682</v> </e> </columnsizes> <dependencies> @@ -26984,7 +26963,7 @@ <b> <a>1</a> <b>2</b> - <v>395209</v> + <v>391086</v> </b> </bs> </hist> @@ -27000,7 +26979,7 @@ <b> <a>1</a> <b>2</b> - <v>395209</v> + <v>391086</v> </b> </bs> </hist> @@ -27016,7 +26995,7 @@ <b> <a>1</a> <b>2</b> - <v>395209</v> + <v>391086</v> </b> </bs> </hist> @@ -27032,7 +27011,7 @@ <b> <a>1</a> <b>2</b> - <v>395209</v> + <v>391086</v> </b> </bs> </hist> @@ -27048,12 +27027,12 @@ <b> <a>1</a> <b>2</b> - <v>359620</v> + <v>355874</v> </b> <b> <a>2</a> <b>7</b> - <v>15121</v> + <v>14961</v> </b> </bs> </hist> @@ -27069,12 +27048,12 @@ <b> <a>1</a> <b>2</b> - <v>359620</v> + <v>355874</v> </b> <b> <a>2</a> <b>7</b> - <v>15121</v> + <v>14961</v> </b> </bs> </hist> @@ -27090,12 +27069,12 @@ <b> <a>1</a> <b>2</b> - <v>359620</v> + <v>355874</v> </b> <b> <a>2</a> <b>7</b> - <v>15121</v> + <v>14961</v> </b> </bs> </hist> @@ -27111,12 +27090,12 @@ <b> <a>1</a> <b>2</b> - <v>359620</v> + <v>355874</v> </b> <b> <a>2</a> <b>7</b> - <v>15121</v> + <v>14961</v> </b> </bs> </hist> @@ -27132,22 +27111,22 @@ <b> <a>25</a> <b>26</b> - <v>105</v> + <v>104</v> </b> <b> <a>77</a> <b>78</b> - <v>35</v> + <v>34</v> </b> <b> <a>430</a> <b>431</b> - <v>35</v> + <v>34</v> </b> <b> - <a>10656</a> - <b>10657</b> - <v>35</v> + <a>10658</a> + <b>10659</b> + <v>34</v> </b> </bs> </hist> @@ -27163,22 +27142,22 @@ <b> <a>25</a> <b>26</b> - <v>105</v> + <v>104</v> </b> <b> <a>77</a> <b>78</b> - <v>35</v> + <v>34</v> </b> <b> <a>430</a> <b>431</b> - <v>35</v> + <v>34</v> </b> <b> - <a>10656</a> - <b>10657</b> - <v>35</v> + <a>10658</a> + <b>10659</b> + <v>34</v> </b> </bs> </hist> @@ -27194,27 +27173,27 @@ <b> <a>23</a> <b>24</b> - <v>35</v> + <v>34</v> </b> <b> <a>25</a> <b>26</b> - <v>70</v> + <v>69</v> </b> <b> <a>35</a> <b>36</b> - <v>35</v> + <v>34</v> </b> <b> <a>261</a> <b>262</b> - <v>35</v> + <v>34</v> </b> <b> <a>5465</a> <b>5466</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -27230,22 +27209,22 @@ <b> <a>1</a> <b>2</b> - <v>105</v> + <v>104</v> </b> <b> <a>9</a> <b>10</b> - <v>35</v> + <v>34</v> </b> <b> <a>66</a> <b>67</b> - <v>35</v> + <v>34</v> </b> <b> <a>1005</a> <b>1006</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -27261,12 +27240,12 @@ <b> <a>1</a> <b>2</b> - <v>197217</v> + <v>195125</v> </b> <b> <a>2</a> - <b>1518</b> - <v>7455</v> + <b>1519</b> + <v>7376</v> </b> </bs> </hist> @@ -27282,12 +27261,12 @@ <b> <a>1</a> <b>2</b> - <v>197217</v> + <v>195125</v> </b> <b> <a>2</a> - <b>1518</b> - <v>7455</v> + <b>1519</b> + <v>7376</v> </b> </bs> </hist> @@ -27303,12 +27282,12 @@ <b> <a>1</a> <b>2</b> - <v>204216</v> + <v>202049</v> </b> <b> <a>2</a> <b>4</b> - <v>457</v> + <v>452</v> </b> </bs> </hist> @@ -27324,12 +27303,12 @@ <b> <a>1</a> <b>2</b> - <v>200980</v> + <v>198848</v> </b> <b> <a>2</a> <b>108</b> - <v>3692</v> + <v>3653</v> </b> </bs> </hist> @@ -27345,27 +27324,27 @@ <b> <a>1</a> <b>2</b> - <v>28309</v> + <v>28009</v> </b> <b> <a>2</a> <b>5</b> - <v>3235</v> + <v>3201</v> </b> <b> <a>5</a> <b>15</b> - <v>2918</v> + <v>2887</v> </b> <b> <a>15</a> <b>134</b> - <v>2883</v> + <v>2853</v> </b> <b> <a>136</a> <b>476</b> - <v>738</v> + <v>730</v> </b> </bs> </hist> @@ -27381,27 +27360,27 @@ <b> <a>1</a> <b>2</b> - <v>28309</v> + <v>28009</v> </b> <b> <a>2</a> <b>5</b> - <v>3235</v> + <v>3201</v> </b> <b> <a>5</a> <b>15</b> - <v>2918</v> + <v>2887</v> </b> <b> <a>15</a> <b>134</b> - <v>2883</v> + <v>2853</v> </b> <b> <a>136</a> <b>476</b> - <v>738</v> + <v>730</v> </b> </bs> </hist> @@ -27417,7 +27396,7 @@ <b> <a>1</a> <b>2</b> - <v>38086</v> + <v>37682</v> </b> </bs> </hist> @@ -27433,22 +27412,22 @@ <b> <a>1</a> <b>2</b> - <v>30700</v> + <v>30375</v> </b> <b> <a>2</a> <b>5</b> - <v>3376</v> + <v>3340</v> </b> <b> <a>5</a> <b>45</b> - <v>2883</v> + <v>2853</v> </b> <b> <a>54</a> <b>415</b> - <v>1125</v> + <v>1113</v> </b> </bs> </hist> @@ -27458,15 +27437,15 @@ </relation> <relation> <name>derspecifiers</name> - <cardinality>397108</cardinality> + <cardinality>392965</cardinality> <columnsizes> <e> <k>der_id</k> - <v>394822</v> + <v>390703</v> </e> <e> <k>spec_id</k> - <v>140</v> + <v>139</v> </e> </columnsizes> <dependencies> @@ -27480,12 +27459,12 @@ <b> <a>1</a> <b>2</b> - <v>392536</v> + <v>388441</v> </b> <b> <a>2</a> <b>3</b> - <v>2285</v> + <v>2261</v> </b> </bs> </hist> @@ -27501,22 +27480,22 @@ <b> <a>65</a> <b>66</b> - <v>35</v> + <v>34</v> </b> <b> <a>93</a> <b>94</b> - <v>35</v> + <v>34</v> </b> <b> <a>1127</a> <b>1128</b> - <v>35</v> + <v>34</v> </b> <b> - <a>10007</a> - <b>10008</b> - <v>35</v> + <a>10009</a> + <b>10010</b> + <v>34</v> </b> </bs> </hist> @@ -27526,15 +27505,15 @@ </relation> <relation> <name>direct_base_offsets</name> - <cardinality>365985</cardinality> + <cardinality>362172</cardinality> <columnsizes> <e> <k>der_id</k> - <v>365985</v> + <v>362172</v> </e> <e> <k>offset</k> - <v>351</v> + <v>347</v> </e> </columnsizes> <dependencies> @@ -27548,7 +27527,7 @@ <b> <a>1</a> <b>2</b> - <v>365985</v> + <v>362172</v> </b> </bs> </hist> @@ -27564,32 +27543,32 @@ <b> <a>1</a> <b>2</b> - <v>35</v> + <v>34</v> </b> <b> <a>2</a> <b>3</b> - <v>105</v> + <v>104</v> </b> <b> <a>3</a> <b>4</b> - <v>70</v> + <v>69</v> </b> <b> <a>4</a> <b>5</b> - <v>70</v> + <v>69</v> </b> <b> <a>85</a> <b>86</b> - <v>35</v> + <v>34</v> </b> <b> - <a>10301</a> - <b>10302</b> - <v>35</v> + <a>10303</a> + <b>10304</b> + <v>34</v> </b> </bs> </hist> @@ -27599,19 +27578,19 @@ </relation> <relation> <name>virtual_base_offsets</name> - <cardinality>6471</cardinality> + <cardinality>6445</cardinality> <columnsizes> <e> <k>sub</k> - <v>3572</v> + <v>3558</v> </e> <e> <k>super</k> - <v>494</v> + <v>492</v> </e> <e> <k>offset</k> - <v>247</v> + <v>246</v> </e> </columnsizes> <dependencies> @@ -27625,17 +27604,17 @@ <b> <a>1</a> <b>2</b> - <v>2808</v> + <v>2797</v> </b> <b> <a>2</a> <b>4</b> - <v>314</v> + <v>313</v> </b> <b> <a>4</a> <b>7</b> - <v>258</v> + <v>257</v> </b> <b> <a>7</a> @@ -27656,17 +27635,17 @@ <b> <a>1</a> <b>2</b> - <v>3010</v> + <v>2999</v> </b> <b> <a>2</a> <b>4</b> - <v>303</v> + <v>302</v> </b> <b> <a>4</a> <b>8</b> - <v>258</v> + <v>257</v> </b> </bs> </hist> @@ -27692,7 +27671,7 @@ <b> <a>3</a> <b>4</b> - <v>56</v> + <v>55</v> </b> <b> <a>4</a> @@ -27743,7 +27722,7 @@ <b> <a>1</a> <b>2</b> - <v>280</v> + <v>279</v> </b> <b> <a>2</a> @@ -27890,23 +27869,23 @@ </relation> <relation> <name>frienddecls</name> - <cardinality>713754</cardinality> + <cardinality>706182</cardinality> <columnsizes> <e> <k>id</k> - <v>713754</v> + <v>706182</v> </e> <e> <k>type_id</k> - <v>42306</v> + <v>41857</v> </e> <e> <k>decl_id</k> - <v>70053</v> + <v>69309</v> </e> <e> <k>location</k> - <v>6330</v> + <v>6262</v> </e> </columnsizes> <dependencies> @@ -27920,7 +27899,7 @@ <b> <a>1</a> <b>2</b> - <v>713754</v> + <v>706182</v> </b> </bs> </hist> @@ -27936,7 +27915,7 @@ <b> <a>1</a> <b>2</b> - <v>713754</v> + <v>706182</v> </b> </bs> </hist> @@ -27952,7 +27931,7 @@ <b> <a>1</a> <b>2</b> - <v>713754</v> + <v>706182</v> </b> </bs> </hist> @@ -27968,47 +27947,47 @@ <b> <a>1</a> <b>2</b> - <v>6189</v> + <v>6123</v> </b> <b> <a>2</a> <b>3</b> - <v>13187</v> + <v>13047</v> </b> <b> <a>3</a> <b>6</b> - <v>2954</v> + <v>2922</v> </b> <b> <a>6</a> <b>10</b> - <v>3200</v> + <v>3166</v> </b> <b> <a>10</a> <b>17</b> - <v>3270</v> + <v>3235</v> </b> <b> <a>17</a> <b>24</b> - <v>3340</v> + <v>3305</v> </b> <b> <a>25</a> <b>36</b> - <v>3305</v> + <v>3270</v> </b> <b> <a>37</a> <b>55</b> - <v>3235</v> + <v>3201</v> </b> <b> <a>55</a> <b>103</b> - <v>3622</v> + <v>3583</v> </b> </bs> </hist> @@ -28024,47 +28003,47 @@ <b> <a>1</a> <b>2</b> - <v>6189</v> + <v>6123</v> </b> <b> <a>2</a> <b>3</b> - <v>13187</v> + <v>13047</v> </b> <b> <a>3</a> <b>6</b> - <v>2954</v> + <v>2922</v> </b> <b> <a>6</a> <b>10</b> - <v>3200</v> + <v>3166</v> </b> <b> <a>10</a> <b>17</b> - <v>3270</v> + <v>3235</v> </b> <b> <a>17</a> <b>24</b> - <v>3340</v> + <v>3305</v> </b> <b> <a>25</a> <b>36</b> - <v>3305</v> + <v>3270</v> </b> <b> <a>37</a> <b>55</b> - <v>3235</v> + <v>3201</v> </b> <b> <a>55</a> <b>103</b> - <v>3622</v> + <v>3583</v> </b> </bs> </hist> @@ -28080,12 +28059,12 @@ <b> <a>1</a> <b>2</b> - <v>40864</v> + <v>40430</v> </b> <b> <a>2</a> <b>13</b> - <v>1441</v> + <v>1426</v> </b> </bs> </hist> @@ -28101,37 +28080,37 @@ <b> <a>1</a> <b>2</b> - <v>40407</v> + <v>39978</v> </b> <b> <a>2</a> <b>3</b> - <v>5872</v> + <v>5810</v> </b> <b> <a>3</a> <b>8</b> - <v>6013</v> + <v>5949</v> </b> <b> <a>8</a> <b>15</b> - <v>5415</v> + <v>5358</v> </b> <b> <a>15</a> <b>32</b> - <v>5275</v> + <v>5219</v> </b> <b> <a>32</a> <b>71</b> - <v>5275</v> + <v>5219</v> </b> <b> <a>72</a> <b>160</b> - <v>1793</v> + <v>1774</v> </b> </bs> </hist> @@ -28147,37 +28126,37 @@ <b> <a>1</a> <b>2</b> - <v>40407</v> + <v>39978</v> </b> <b> <a>2</a> <b>3</b> - <v>5872</v> + <v>5810</v> </b> <b> <a>3</a> <b>8</b> - <v>6013</v> + <v>5949</v> </b> <b> <a>8</a> <b>15</b> - <v>5415</v> + <v>5358</v> </b> <b> <a>15</a> <b>32</b> - <v>5275</v> + <v>5219</v> </b> <b> <a>32</a> <b>71</b> - <v>5275</v> + <v>5219</v> </b> <b> <a>72</a> <b>160</b> - <v>1793</v> + <v>1774</v> </b> </bs> </hist> @@ -28193,12 +28172,12 @@ <b> <a>1</a> <b>2</b> - <v>69384</v> + <v>68648</v> </b> <b> <a>2</a> <b>5</b> - <v>668</v> + <v>661</v> </b> </bs> </hist> @@ -28214,12 +28193,12 @@ <b> <a>1</a> <b>2</b> - <v>5943</v> + <v>5880</v> </b> <b> <a>2</a> <b>20106</b> - <v>386</v> + <v>382</v> </b> </bs> </hist> @@ -28235,12 +28214,12 @@ <b> <a>1</a> <b>2</b> - <v>6189</v> + <v>6123</v> </b> <b> <a>2</a> <b>1105</b> - <v>140</v> + <v>139</v> </b> </bs> </hist> @@ -28256,12 +28235,12 @@ <b> <a>1</a> <b>2</b> - <v>5978</v> + <v>5915</v> </b> <b> <a>2</a> <b>1837</b> - <v>351</v> + <v>347</v> </b> </bs> </hist> @@ -28271,19 +28250,19 @@ </relation> <relation> <name>comments</name> - <cardinality>8751514</cardinality> + <cardinality>8686670</cardinality> <columnsizes> <e> <k>id</k> - <v>8751514</v> + <v>8686670</v> </e> <e> <k>contents</k> - <v>3332400</v> + <v>3307709</v> </e> <e> <k>location</k> - <v>8751514</v> + <v>8686670</v> </e> </columnsizes> <dependencies> @@ -28297,7 +28276,7 @@ <b> <a>1</a> <b>2</b> - <v>8751514</v> + <v>8686670</v> </b> </bs> </hist> @@ -28313,7 +28292,7 @@ <b> <a>1</a> <b>2</b> - <v>8751514</v> + <v>8686670</v> </b> </bs> </hist> @@ -28329,17 +28308,17 @@ <b> <a>1</a> <b>2</b> - <v>3048408</v> + <v>3025820</v> </b> <b> <a>2</a> <b>7</b> - <v>250514</v> + <v>248657</v> </b> <b> <a>7</a> <b>32784</b> - <v>33478</v> + <v>33230</v> </b> </bs> </hist> @@ -28355,17 +28334,17 @@ <b> <a>1</a> <b>2</b> - <v>3048408</v> + <v>3025820</v> </b> <b> <a>2</a> <b>7</b> - <v>250514</v> + <v>248657</v> </b> <b> <a>7</a> <b>32784</b> - <v>33478</v> + <v>33230</v> </b> </bs> </hist> @@ -28381,7 +28360,7 @@ <b> <a>1</a> <b>2</b> - <v>8751514</v> + <v>8686670</v> </b> </bs> </hist> @@ -28397,7 +28376,7 @@ <b> <a>1</a> <b>2</b> - <v>8751514</v> + <v>8686670</v> </b> </bs> </hist> @@ -28407,15 +28386,15 @@ </relation> <relation> <name>commentbinding</name> - <cardinality>3084703</cardinality> + <cardinality>3088160</cardinality> <columnsizes> <e> <k>id</k> - <v>2440368</v> + <v>2443103</v> </e> <e> <k>element</k> - <v>3008296</v> + <v>3011668</v> </e> </columnsizes> <dependencies> @@ -28429,12 +28408,12 @@ <b> <a>1</a> <b>2</b> - <v>2363495</v> + <v>2366144</v> </b> <b> <a>2</a> <b>97</b> - <v>76873</v> + <v>76959</v> </b> </bs> </hist> @@ -28450,12 +28429,12 @@ <b> <a>1</a> <b>2</b> - <v>2931889</v> + <v>2935175</v> </b> <b> <a>2</a> <b>3</b> - <v>76407</v> + <v>76492</v> </b> </bs> </hist> @@ -28465,15 +28444,15 @@ </relation> <relation> <name>exprconv</name> - <cardinality>7022968</cardinality> + <cardinality>7033432</cardinality> <columnsizes> <e> <k>converted</k> - <v>7022968</v> + <v>7033432</v> </e> <e> <k>conversion</k> - <v>7022968</v> + <v>7033432</v> </e> </columnsizes> <dependencies> @@ -28487,7 +28466,7 @@ <b> <a>1</a> <b>2</b> - <v>7022968</v> + <v>7033432</v> </b> </bs> </hist> @@ -28503,7 +28482,7 @@ <b> <a>1</a> <b>2</b> - <v>7022968</v> + <v>7033432</v> </b> </bs> </hist> @@ -28513,30 +28492,30 @@ </relation> <relation> <name>compgenerated</name> - <cardinality>9150058</cardinality> + <cardinality>9265823</cardinality> <columnsizes> <e> <k>id</k> - <v>9150058</v> + <v>9265823</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>synthetic_destructor_call</name> - <cardinality>143878</cardinality> + <cardinality>471159</cardinality> <columnsizes> <e> <k>element</k> - <v>111422</v> + <v>286813</v> </e> <e> <k>i</k> - <v>335</v> + <v>381</v> </e> <e> <k>destructor_call</k> - <v>143878</v> + <v>471159</v> </e> </columnsizes> <dependencies> @@ -28550,17 +28529,27 @@ <b> <a>1</a> <b>2</b> - <v>91779</v> + <v>190103</v> </b> <b> <a>2</a> <b>3</b> - <v>12950</v> + <v>50404</v> </b> <b> <a>3</a> - <b>18</b> - <v>6692</v> + <b>4</b> + <v>21503</v> + </b> + <b> + <a>4</a> + <b>7</b> + <v>23238</v> + </b> + <b> + <a>7</a> + <b>20</b> + <v>1563</v> </b> </bs> </hist> @@ -28576,17 +28565,27 @@ <b> <a>1</a> <b>2</b> - <v>91779</v> + <v>189912</v> </b> <b> <a>2</a> <b>3</b> - <v>12950</v> + <v>50537</v> </b> <b> <a>3</a> - <b>18</b> - <v>6692</v> + <b>4</b> + <v>21503</v> + </b> + <b> + <a>4</a> + <b>7</b> + <v>23295</v> + </b> + <b> + <a>7</a> + <b>20</b> + <v>1563</v> </b> </bs> </hist> @@ -28599,15 +28598,10 @@ <hist> <budget>12</budget> <bs> - <b> - <a>1</a> - <b>2</b> - <v>19</v> - </b> <b> <a>2</a> <b>3</b> - <v>59</v> + <v>19</v> </b> <b> <a>3</a> @@ -28617,21 +28611,46 @@ <b> <a>4</a> <b>5</b> - <v>59</v> + <v>19</v> + </b> + <b> + <a>5</a> + <b>6</b> + <v>19</v> </b> <b> <a>6</a> <b>7</b> <v>19</v> </b> + <b> + <a>7</a> + <b>8</b> + <v>19</v> + </b> + <b> + <a>10</a> + <b>11</b> + <v>19</v> + </b> <b> <a>11</a> <b>12</b> <v>19</v> </b> <b> - <a>20</a> - <b>21</b> + <a>16</a> + <b>17</b> + <v>19</v> + </b> + <b> + <a>18</a> + <b>19</b> + <v>19</v> + </b> + <b> + <a>26</a> + <b>27</b> <v>19</v> </b> <b> @@ -28640,28 +28659,43 @@ <v>19</v> </b> <b> - <a>65</a> - <b>66</b> + <a>37</a> + <b>38</b> <v>19</v> </b> <b> - <a>152</a> - <b>153</b> + <a>82</a> + <b>83</b> <v>19</v> </b> <b> - <a>339</a> - <b>340</b> + <a>193</a> + <b>194</b> + <v>19</v> + </b> + <b> + <a>422</a> + <b>423</b> + <v>19</v> + </b> + <b> + <a>1301</a> + <b>1302</b> + <v>19</v> + </b> + <b> + <a>2429</a> + <b>2430</b> <v>19</v> </b> <b> - <a>995</a> - <b>996</b> + <a>5068</a> + <b>5069</b> <v>19</v> </b> <b> - <a>5644</a> - <b>5645</b> + <a>15013</a> + <b>15014</b> <v>19</v> </b> </bs> @@ -28675,15 +28709,10 @@ <hist> <budget>12</budget> <bs> - <b> - <a>1</a> - <b>2</b> - <v>19</v> - </b> <b> <a>2</a> <b>3</b> - <v>59</v> + <v>19</v> </b> <b> <a>3</a> @@ -28693,21 +28722,46 @@ <b> <a>4</a> <b>5</b> - <v>59</v> + <v>19</v> + </b> + <b> + <a>5</a> + <b>6</b> + <v>19</v> </b> <b> <a>6</a> <b>7</b> <v>19</v> </b> + <b> + <a>7</a> + <b>8</b> + <v>19</v> + </b> + <b> + <a>10</a> + <b>11</b> + <v>19</v> + </b> <b> <a>11</a> <b>12</b> <v>19</v> </b> <b> - <a>20</a> - <b>21</b> + <a>16</a> + <b>17</b> + <v>19</v> + </b> + <b> + <a>18</a> + <b>19</b> + <v>19</v> + </b> + <b> + <a>26</a> + <b>27</b> <v>19</v> </b> <b> @@ -28716,28 +28770,43 @@ <v>19</v> </b> <b> - <a>65</a> - <b>66</b> + <a>37</a> + <b>38</b> <v>19</v> </b> <b> - <a>152</a> - <b>153</b> + <a>82</a> + <b>83</b> <v>19</v> </b> <b> - <a>339</a> - <b>340</b> + <a>193</a> + <b>194</b> + <v>19</v> + </b> + <b> + <a>422</a> + <b>423</b> + <v>19</v> + </b> + <b> + <a>1301</a> + <b>1302</b> <v>19</v> </b> <b> - <a>995</a> - <b>996</b> + <a>2429</a> + <b>2430</b> <v>19</v> </b> <b> - <a>5644</a> - <b>5645</b> + <a>5071</a> + <b>5072</b> + <v>19</v> + </b> + <b> + <a>15038</a> + <b>15039</b> <v>19</v> </b> </bs> @@ -28754,7 +28823,7 @@ <b> <a>1</a> <b>2</b> - <v>143878</v> + <v>471159</v> </b> </bs> </hist> @@ -28770,7 +28839,7 @@ <b> <a>1</a> <b>2</b> - <v>143878</v> + <v>471159</v> </b> </bs> </hist> @@ -28780,15 +28849,15 @@ </relation> <relation> <name>namespaces</name> - <cardinality>12113</cardinality> + <cardinality>12126</cardinality> <columnsizes> <e> <k>id</k> - <v>12113</v> + <v>12126</v> </e> <e> <k>name</k> - <v>9783</v> + <v>9794</v> </e> </columnsizes> <dependencies> @@ -28802,7 +28871,7 @@ <b> <a>1</a> <b>2</b> - <v>12113</v> + <v>12126</v> </b> </bs> </hist> @@ -28818,17 +28887,17 @@ <b> <a>1</a> <b>2</b> - <v>8386</v> + <v>8395</v> </b> <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> <b> <a>3</a> <b>4</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -28838,26 +28907,26 @@ </relation> <relation> <name>namespace_inline</name> - <cardinality>1397</cardinality> + <cardinality>1399</cardinality> <columnsizes> <e> <k>id</k> - <v>1397</v> + <v>1399</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>namespacembrs</name> - <cardinality>2383528</cardinality> + <cardinality>2385733</cardinality> <columnsizes> <e> <k>parentid</k> - <v>10249</v> + <v>10261</v> </e> <e> <k>memberid</k> - <v>2383528</v> + <v>2385733</v> </e> </columnsizes> <dependencies> @@ -28871,52 +28940,52 @@ <b> <a>1</a> <b>2</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>2</a> <b>4</b> - <v>931</v> + <v>932</v> </b> <b> <a>4</a> <b>5</b> - <v>931</v> + <v>932</v> </b> <b> <a>5</a> <b>7</b> - <v>931</v> + <v>932</v> </b> <b> <a>7</a> <b>8</b> - <v>931</v> + <v>932</v> </b> <b> <a>8</a> <b>12</b> - <v>931</v> + <v>932</v> </b> <b> <a>17</a> <b>30</b> - <v>931</v> + <v>932</v> </b> <b> <a>43</a> <b>47</b> - <v>931</v> + <v>932</v> </b> <b> <a>52</a> <b>143</b> - <v>931</v> + <v>932</v> </b> <b> <a>258</a> - <b>4469</b> - <v>931</v> + <b>4468</b> + <v>932</v> </b> </bs> </hist> @@ -28932,7 +29001,7 @@ <b> <a>1</a> <b>2</b> - <v>2383528</v> + <v>2385733</v> </b> </bs> </hist> @@ -28942,19 +29011,19 @@ </relation> <relation> <name>exprparents</name> - <cardinality>14185678</cardinality> + <cardinality>14207341</cardinality> <columnsizes> <e> <k>expr_id</k> - <v>14185678</v> + <v>14207341</v> </e> <e> <k>child_index</k> - <v>14636</v> + <v>14659</v> </e> <e> <k>parent_id</k> - <v>9439823</v> + <v>9454239</v> </e> </columnsizes> <dependencies> @@ -28968,7 +29037,7 @@ <b> <a>1</a> <b>2</b> - <v>14185678</v> + <v>14207341</v> </b> </bs> </hist> @@ -28984,7 +29053,7 @@ <b> <a>1</a> <b>2</b> - <v>14185678</v> + <v>14207341</v> </b> </bs> </hist> @@ -29000,12 +29069,12 @@ <b> <a>1</a> <b>2</b> - <v>2816</v> + <v>2820</v> </b> <b> <a>2</a> <b>3</b> - <v>1110</v> + <v>1111</v> </b> <b> <a>3</a> @@ -29015,22 +29084,22 @@ <b> <a>4</a> <b>5</b> - <v>6557</v> + <v>6567</v> </b> <b> <a>5</a> <b>8</b> - <v>1212</v> + <v>1214</v> </b> <b> <a>8</a> <b>11</b> - <v>1192</v> + <v>1194</v> </b> <b> <a>11</a> <b>53</b> - <v>1110</v> + <v>1111</v> </b> <b> <a>56</a> @@ -29051,12 +29120,12 @@ <b> <a>1</a> <b>2</b> - <v>2816</v> + <v>2820</v> </b> <b> <a>2</a> <b>3</b> - <v>1110</v> + <v>1111</v> </b> <b> <a>3</a> @@ -29066,22 +29135,22 @@ <b> <a>4</a> <b>5</b> - <v>6557</v> + <v>6567</v> </b> <b> <a>5</a> <b>8</b> - <v>1212</v> + <v>1214</v> </b> <b> <a>8</a> <b>11</b> - <v>1192</v> + <v>1194</v> </b> <b> <a>11</a> <b>53</b> - <v>1110</v> + <v>1111</v> </b> <b> <a>56</a> @@ -29102,17 +29171,17 @@ <b> <a>1</a> <b>2</b> - <v>5401426</v> + <v>5409675</v> </b> <b> <a>2</a> <b>3</b> - <v>3701154</v> + <v>3706806</v> </b> <b> <a>3</a> <b>712</b> - <v>337242</v> + <v>337757</v> </b> </bs> </hist> @@ -29128,17 +29197,17 @@ <b> <a>1</a> <b>2</b> - <v>5401426</v> + <v>5409675</v> </b> <b> <a>2</a> <b>3</b> - <v>3701154</v> + <v>3706806</v> </b> <b> <a>3</a> <b>712</b> - <v>337242</v> + <v>337757</v> </b> </bs> </hist> @@ -29148,22 +29217,22 @@ </relation> <relation> <name>expr_isload</name> - <cardinality>5203642</cardinality> + <cardinality>5170780</cardinality> <columnsizes> <e> <k>expr_id</k> - <v>5203642</v> + <v>5170780</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>conversionkinds</name> - <cardinality>4221347</cardinality> + <cardinality>4221331</cardinality> <columnsizes> <e> <k>expr_id</k> - <v>4221347</v> + <v>4221331</v> </e> <e> <k>kind</k> @@ -29181,7 +29250,7 @@ <b> <a>1</a> <b>2</b> - <v>4221347</v> + <v>4221331</v> </b> </bs> </hist> @@ -29205,8 +29274,8 @@ <v>1</v> </b> <b> - <a>13929</a> - <b>13930</b> + <a>13928</a> + <b>13929</b> <v>1</v> </b> <b> @@ -29220,8 +29289,8 @@ <v>1</v> </b> <b> - <a>4131269</a> - <b>4131270</b> + <a>4131254</a> + <b>4131255</b> <v>1</v> </b> </bs> @@ -29232,15 +29301,15 @@ </relation> <relation> <name>iscall</name> - <cardinality>2958862</cardinality> + <cardinality>3183297</cardinality> <columnsizes> <e> <k>caller</k> - <v>2958862</v> + <v>3183297</v> </e> <e> <k>kind</k> - <v>59</v> + <v>57</v> </e> </columnsizes> <dependencies> @@ -29254,7 +29323,7 @@ <b> <a>1</a> <b>2</b> - <v>2958862</v> + <v>3183297</v> </b> </bs> </hist> @@ -29278,8 +29347,8 @@ <v>19</v> </b> <b> - <a>146089</a> - <b>146090</b> + <a>163193</a> + <b>163194</b> <v>19</v> </b> </bs> @@ -29290,15 +29359,15 @@ </relation> <relation> <name>numtemplatearguments</name> - <cardinality>397495</cardinality> + <cardinality>393347</cardinality> <columnsizes> <e> <k>expr_id</k> - <v>397495</v> + <v>393347</v> </e> <e> <k>num</k> - <v>316</v> + <v>313</v> </e> </columnsizes> <dependencies> @@ -29312,7 +29381,7 @@ <b> <a>1</a> <b>2</b> - <v>397495</v> + <v>393347</v> </b> </bs> </hist> @@ -29328,37 +29397,37 @@ <b> <a>1</a> <b>2</b> - <v>105</v> + <v>104</v> </b> <b> <a>4</a> <b>5</b> - <v>35</v> + <v>34</v> </b> <b> <a>20</a> <b>21</b> - <v>35</v> + <v>34</v> </b> <b> <a>101</a> <b>102</b> - <v>35</v> + <v>34</v> </b> <b> <a>229</a> <b>230</b> - <v>35</v> + <v>34</v> </b> <b> <a>248</a> <b>249</b> - <v>35</v> + <v>34</v> </b> <b> - <a>10698</a> - <b>10699</b> - <v>35</v> + <a>10700</a> + <b>10701</b> + <v>34</v> </b> </bs> </hist> @@ -29368,15 +29437,15 @@ </relation> <relation> <name>specialnamequalifyingelements</name> - <cardinality>465</cardinality> + <cardinality>466</cardinality> <columnsizes> <e> <k>id</k> - <v>465</v> + <v>466</v> </e> <e> <k>name</k> - <v>465</v> + <v>466</v> </e> </columnsizes> <dependencies> @@ -29390,7 +29459,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -29406,7 +29475,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -29416,23 +29485,23 @@ </relation> <relation> <name>namequalifiers</name> - <cardinality>1570954</cardinality> + <cardinality>1516804</cardinality> <columnsizes> <e> <k>id</k> - <v>1570954</v> + <v>1516804</v> </e> <e> <k>qualifiableelement</k> - <v>1570954</v> + <v>1516804</v> </e> <e> <k>qualifyingelement</k> - <v>101314</v> + <v>97777</v> </e> <e> <k>location</k> - <v>316244</v> + <v>305343</v> </e> </columnsizes> <dependencies> @@ -29446,7 +29515,7 @@ <b> <a>1</a> <b>2</b> - <v>1570954</v> + <v>1516804</v> </b> </bs> </hist> @@ -29462,7 +29531,7 @@ <b> <a>1</a> <b>2</b> - <v>1570954</v> + <v>1516804</v> </b> </bs> </hist> @@ -29478,7 +29547,7 @@ <b> <a>1</a> <b>2</b> - <v>1570954</v> + <v>1516804</v> </b> </bs> </hist> @@ -29494,7 +29563,7 @@ <b> <a>1</a> <b>2</b> - <v>1570954</v> + <v>1516804</v> </b> </bs> </hist> @@ -29510,7 +29579,7 @@ <b> <a>1</a> <b>2</b> - <v>1570954</v> + <v>1516804</v> </b> </bs> </hist> @@ -29526,7 +29595,7 @@ <b> <a>1</a> <b>2</b> - <v>1570954</v> + <v>1516804</v> </b> </bs> </hist> @@ -29542,27 +29611,27 @@ <b> <a>1</a> <b>2</b> - <v>60745</v> + <v>58601</v> </b> <b> <a>2</a> <b>3</b> - <v>23255</v> + <v>22457</v> </b> <b> <a>3</a> <b>5</b> - <v>9239</v> + <v>8921</v> </b> <b> <a>5</a> <b>92</b> - <v>7640</v> + <v>7377</v> </b> <b> <a>96</a> - <b>21576</b> - <v>434</v> + <b>21572</b> + <v>419</v> </b> </bs> </hist> @@ -29578,27 +29647,27 @@ <b> <a>1</a> <b>2</b> - <v>60745</v> + <v>58601</v> </b> <b> <a>2</a> <b>3</b> - <v>23255</v> + <v>22457</v> </b> <b> <a>3</a> <b>5</b> - <v>9239</v> + <v>8921</v> </b> <b> <a>5</a> <b>92</b> - <v>7640</v> + <v>7377</v> </b> <b> <a>96</a> - <b>21576</b> - <v>434</v> + <b>21572</b> + <v>419</v> </b> </bs> </hist> @@ -29614,22 +29683,22 @@ <b> <a>1</a> <b>2</b> - <v>66371</v> + <v>64035</v> </b> <b> <a>2</a> <b>3</b> - <v>21439</v> + <v>20703</v> </b> <b> <a>3</a> <b>5</b> - <v>8686</v> + <v>8388</v> </b> <b> <a>5</a> <b>7095</b> - <v>4817</v> + <v>4651</v> </b> </bs> </hist> @@ -29645,32 +29714,32 @@ <b> <a>1</a> <b>2</b> - <v>104631</v> + <v>101018</v> </b> <b> <a>2</a> <b>3</b> - <v>29415</v> + <v>28385</v> </b> <b> <a>3</a> <b>4</b> - <v>46373</v> + <v>44780</v> </b> <b> <a>4</a> <b>6</b> - <v>14826</v> + <v>14316</v> </b> <b> <a>6</a> <b>7</b> - <v>98788</v> + <v>95394</v> </b> <b> <a>7</a> <b>790</b> - <v>22209</v> + <v>21446</v> </b> </bs> </hist> @@ -29686,32 +29755,32 @@ <b> <a>1</a> <b>2</b> - <v>104631</v> + <v>101018</v> </b> <b> <a>2</a> <b>3</b> - <v>29415</v> + <v>28385</v> </b> <b> <a>3</a> <b>4</b> - <v>46373</v> + <v>44780</v> </b> <b> <a>4</a> <b>6</b> - <v>14826</v> + <v>14316</v> </b> <b> <a>6</a> <b>7</b> - <v>98788</v> + <v>95394</v> </b> <b> <a>7</a> <b>790</b> - <v>22209</v> + <v>21446</v> </b> </bs> </hist> @@ -29727,22 +29796,22 @@ <b> <a>1</a> <b>2</b> - <v>142575</v> + <v>137659</v> </b> <b> <a>2</a> <b>3</b> - <v>57804</v> + <v>55799</v> </b> <b> <a>3</a> <b>4</b> - <v>106309</v> + <v>102658</v> </b> <b> <a>4</a> <b>143</b> - <v>9555</v> + <v>9226</v> </b> </bs> </hist> @@ -29752,15 +29821,15 @@ </relation> <relation> <name>varbind</name> - <cardinality>6020283</cardinality> + <cardinality>6029477</cardinality> <columnsizes> <e> <k>expr</k> - <v>6020283</v> + <v>6029477</v> </e> <e> <k>var</k> - <v>767403</v> + <v>768575</v> </e> </columnsizes> <dependencies> @@ -29774,7 +29843,7 @@ <b> <a>1</a> <b>2</b> - <v>6020283</v> + <v>6029477</v> </b> </bs> </hist> @@ -29790,52 +29859,52 @@ <b> <a>1</a> <b>2</b> - <v>126036</v> + <v>126229</v> </b> <b> <a>2</a> <b>3</b> - <v>137672</v> + <v>137882</v> </b> <b> <a>3</a> <b>4</b> - <v>106137</v> + <v>106299</v> </b> <b> <a>4</a> <b>5</b> - <v>85086</v> + <v>85216</v> </b> <b> <a>5</a> <b>6</b> - <v>61199</v> + <v>61292</v> </b> <b> <a>6</a> <b>7</b> - <v>48042</v> + <v>48115</v> </b> <b> <a>7</a> <b>9</b> - <v>59533</v> + <v>59624</v> </b> <b> <a>9</a> <b>13</b> - <v>59184</v> + <v>59274</v> </b> <b> <a>13</a> <b>28</b> - <v>58793</v> + <v>58883</v> </b> <b> <a>28</a> <b>5137</b> - <v>25717</v> + <v>25756</v> </b> </bs> </hist> @@ -29845,15 +29914,15 @@ </relation> <relation> <name>funbind</name> - <cardinality>2962929</cardinality> + <cardinality>3187262</cardinality> <columnsizes> <e> <k>expr</k> - <v>2959178</v> + <v>3183583</v> </e> <e> <k>fun</k> - <v>532278</v> + <v>512661</v> </e> </columnsizes> <dependencies> @@ -29867,12 +29936,12 @@ <b> <a>1</a> <b>2</b> - <v>2955427</v> + <v>3179903</v> </b> <b> <a>2</a> <b>3</b> - <v>3750</v> + <v>3679</v> </b> </bs> </hist> @@ -29888,32 +29957,32 @@ <b> <a>1</a> <b>2</b> - <v>328780</v> + <v>316152</v> </b> <b> <a>2</a> <b>3</b> - <v>81948</v> + <v>78084</v> </b> <b> <a>3</a> <b>4</b> - <v>31784</v> + <v>31455</v> </b> <b> <a>4</a> <b>7</b> - <v>47913</v> + <v>46210</v> </b> <b> <a>7</a> - <b>158</b> - <v>39937</v> + <b>133</b> + <v>38451</v> </b> <b> - <a>159</a> - <b>4943</b> - <v>1914</v> + <a>133</a> + <b>4992</b> + <v>2306</v> </b> </bs> </hist> @@ -29923,19 +29992,19 @@ </relation> <relation> <name>expr_allocator</name> - <cardinality>46455</cardinality> + <cardinality>45963</cardinality> <columnsizes> <e> <k>expr</k> - <v>46455</v> + <v>45963</v> </e> <e> <k>func</k> - <v>105</v> + <v>104</v> </e> <e> <k>form</k> - <v>35</v> + <v>34</v> </e> </columnsizes> <dependencies> @@ -29949,7 +30018,7 @@ <b> <a>1</a> <b>2</b> - <v>46455</v> + <v>45963</v> </b> </bs> </hist> @@ -29965,7 +30034,7 @@ <b> <a>1</a> <b>2</b> - <v>46455</v> + <v>45963</v> </b> </bs> </hist> @@ -29981,17 +30050,17 @@ <b> <a>1</a> <b>2</b> - <v>35</v> + <v>34</v> </b> <b> <a>585</a> <b>586</b> - <v>35</v> + <v>34</v> </b> <b> <a>735</a> <b>736</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -30007,7 +30076,7 @@ <b> <a>1</a> <b>2</b> - <v>105</v> + <v>104</v> </b> </bs> </hist> @@ -30023,7 +30092,7 @@ <b> <a>1321</a> <b>1322</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -30039,7 +30108,7 @@ <b> <a>3</a> <b>4</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -30049,19 +30118,19 @@ </relation> <relation> <name>expr_deallocator</name> - <cardinality>55212</cardinality> + <cardinality>54626</cardinality> <columnsizes> <e> <k>expr</k> - <v>55212</v> + <v>54626</v> </e> <e> <k>func</k> - <v>105</v> + <v>104</v> </e> <e> <k>form</k> - <v>70</v> + <v>69</v> </e> </columnsizes> <dependencies> @@ -30075,7 +30144,7 @@ <b> <a>1</a> <b>2</b> - <v>55212</v> + <v>54626</v> </b> </bs> </hist> @@ -30091,7 +30160,7 @@ <b> <a>1</a> <b>2</b> - <v>55212</v> + <v>54626</v> </b> </bs> </hist> @@ -30107,17 +30176,17 @@ <b> <a>1</a> <b>2</b> - <v>35</v> + <v>34</v> </b> <b> <a>722</a> <b>723</b> - <v>35</v> + <v>34</v> </b> <b> <a>847</a> <b>848</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -30133,7 +30202,7 @@ <b> <a>1</a> <b>2</b> - <v>105</v> + <v>104</v> </b> </bs> </hist> @@ -30149,12 +30218,12 @@ <b> <a>722</a> <b>723</b> - <v>35</v> + <v>34</v> </b> <b> <a>848</a> <b>849</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -30170,12 +30239,12 @@ <b> <a>1</a> <b>2</b> - <v>35</v> + <v>34</v> </b> <b> <a>2</a> <b>3</b> - <v>35</v> + <v>34</v> </b> </bs> </hist> @@ -30185,26 +30254,26 @@ </relation> <relation> <name>expr_cond_two_operand</name> - <cardinality>480</cardinality> + <cardinality>481</cardinality> <columnsizes> <e> <k>cond</k> - <v>480</v> + <v>481</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>expr_cond_guard</name> - <cardinality>656298</cardinality> + <cardinality>657276</cardinality> <columnsizes> <e> <k>cond</k> - <v>656298</v> + <v>657276</v> </e> <e> <k>guard</k> - <v>656298</v> + <v>657276</v> </e> </columnsizes> <dependencies> @@ -30218,7 +30287,7 @@ <b> <a>1</a> <b>2</b> - <v>656298</v> + <v>657276</v> </b> </bs> </hist> @@ -30234,7 +30303,7 @@ <b> <a>1</a> <b>2</b> - <v>656298</v> + <v>657276</v> </b> </bs> </hist> @@ -30244,15 +30313,15 @@ </relation> <relation> <name>expr_cond_true</name> - <cardinality>656295</cardinality> + <cardinality>657273</cardinality> <columnsizes> <e> <k>cond</k> - <v>656295</v> + <v>657273</v> </e> <e> <k>true</k> - <v>656295</v> + <v>657273</v> </e> </columnsizes> <dependencies> @@ -30266,7 +30335,7 @@ <b> <a>1</a> <b>2</b> - <v>656295</v> + <v>657273</v> </b> </bs> </hist> @@ -30282,7 +30351,7 @@ <b> <a>1</a> <b>2</b> - <v>656295</v> + <v>657273</v> </b> </bs> </hist> @@ -30292,15 +30361,15 @@ </relation> <relation> <name>expr_cond_false</name> - <cardinality>656298</cardinality> + <cardinality>657276</cardinality> <columnsizes> <e> <k>cond</k> - <v>656298</v> + <v>657276</v> </e> <e> <k>false</k> - <v>656298</v> + <v>657276</v> </e> </columnsizes> <dependencies> @@ -30314,7 +30383,7 @@ <b> <a>1</a> <b>2</b> - <v>656298</v> + <v>657276</v> </b> </bs> </hist> @@ -30330,7 +30399,7 @@ <b> <a>1</a> <b>2</b> - <v>656298</v> + <v>657276</v> </b> </bs> </hist> @@ -30340,15 +30409,15 @@ </relation> <relation> <name>values</name> - <cardinality>10760930</cardinality> + <cardinality>10777325</cardinality> <columnsizes> <e> <k>id</k> - <v>10760930</v> + <v>10777325</v> </e> <e> <k>str</k> - <v>87934</v> + <v>88068</v> </e> </columnsizes> <dependencies> @@ -30362,7 +30431,7 @@ <b> <a>1</a> <b>2</b> - <v>10760930</v> + <v>10777325</v> </b> </bs> </hist> @@ -30378,27 +30447,27 @@ <b> <a>1</a> <b>2</b> - <v>59458</v> + <v>59548</v> </b> <b> <a>2</a> <b>3</b> - <v>12391</v> + <v>12410</v> </b> <b> <a>3</a> <b>6</b> - <v>6906</v> + <v>6916</v> </b> <b> <a>6</a> <b>56</b> - <v>6621</v> + <v>6631</v> </b> <b> <a>57</a> - <b>452015</b> - <v>2557</v> + <b>452017</b> + <v>2561</v> </b> </bs> </hist> @@ -30471,15 +30540,15 @@ </relation> <relation> <name>valuebind</name> - <cardinality>11194506</cardinality> + <cardinality>11211571</cardinality> <columnsizes> <e> <k>val</k> - <v>10760930</v> + <v>10777325</v> </e> <e> <k>expr</k> - <v>11194506</v> + <v>11211571</v> </e> </columnsizes> <dependencies> @@ -30493,12 +30562,12 @@ <b> <a>1</a> <b>2</b> - <v>10349865</v> + <v>10365623</v> </b> <b> <a>2</a> <b>7</b> - <v>411064</v> + <v>411701</v> </b> </bs> </hist> @@ -30514,7 +30583,7 @@ <b> <a>1</a> <b>2</b> - <v>11194506</v> + <v>11211571</v> </b> </bs> </hist> @@ -30524,15 +30593,15 @@ </relation> <relation> <name>fieldoffsets</name> - <cardinality>1053150</cardinality> + <cardinality>1054758</cardinality> <columnsizes> <e> <k>id</k> - <v>1053150</v> + <v>1054758</v> </e> <e> <k>byteoffset</k> - <v>22659</v> + <v>22694</v> </e> <e> <k>bitoffset</k> @@ -30550,7 +30619,7 @@ <b> <a>1</a> <b>2</b> - <v>1053150</v> + <v>1054758</v> </b> </bs> </hist> @@ -30566,7 +30635,7 @@ <b> <a>1</a> <b>2</b> - <v>1053150</v> + <v>1054758</v> </b> </bs> </hist> @@ -30582,37 +30651,37 @@ <b> <a>1</a> <b>2</b> - <v>13005</v> + <v>13025</v> </b> <b> <a>2</a> <b>3</b> - <v>1715</v> + <v>1718</v> </b> <b> <a>3</a> <b>5</b> - <v>1795</v> + <v>1797</v> </b> <b> <a>5</a> <b>12</b> - <v>1914</v> + <v>1917</v> </b> <b> <a>12</a> <b>35</b> - <v>1715</v> + <v>1718</v> </b> <b> <a>35</a> <b>205</b> - <v>1715</v> + <v>1718</v> </b> <b> <a>244</a> <b>5638</b> - <v>797</v> + <v>799</v> </b> </bs> </hist> @@ -30628,12 +30697,12 @@ <b> <a>1</a> <b>2</b> - <v>21981</v> + <v>22014</v> </b> <b> <a>2</a> <b>9</b> - <v>678</v> + <v>679</v> </b> </bs> </hist> @@ -30725,19 +30794,19 @@ </relation> <relation> <name>bitfield</name> - <cardinality>20858</cardinality> + <cardinality>20704</cardinality> <columnsizes> <e> <k>id</k> - <v>20858</v> + <v>20704</v> </e> <e> <k>bits</k> - <v>2607</v> + <v>2588</v> </e> <e> <k>declared_bits</k> - <v>2607</v> + <v>2588</v> </e> </columnsizes> <dependencies> @@ -30751,7 +30820,7 @@ <b> <a>1</a> <b>2</b> - <v>20858</v> + <v>20704</v> </b> </bs> </hist> @@ -30767,7 +30836,7 @@ <b> <a>1</a> <b>2</b> - <v>20858</v> + <v>20704</v> </b> </bs> </hist> @@ -30783,42 +30852,42 @@ <b> <a>1</a> <b>2</b> - <v>730</v> + <v>724</v> </b> <b> <a>2</a> <b>3</b> - <v>625</v> + <v>621</v> </b> <b> <a>3</a> <b>4</b> - <v>208</v> + <v>207</v> </b> <b> <a>4</a> <b>5</b> - <v>208</v> + <v>207</v> </b> <b> <a>5</a> <b>6</b> - <v>208</v> + <v>207</v> </b> <b> <a>6</a> <b>8</b> - <v>208</v> + <v>207</v> </b> <b> <a>8</a> <b>11</b> - <v>208</v> + <v>207</v> </b> <b> <a>12</a> <b>115</b> - <v>208</v> + <v>207</v> </b> </bs> </hist> @@ -30834,7 +30903,7 @@ <b> <a>1</a> <b>2</b> - <v>2607</v> + <v>2588</v> </b> </bs> </hist> @@ -30850,42 +30919,42 @@ <b> <a>1</a> <b>2</b> - <v>730</v> + <v>724</v> </b> <b> <a>2</a> <b>3</b> - <v>625</v> + <v>621</v> </b> <b> <a>3</a> <b>4</b> - <v>208</v> + <v>207</v> </b> <b> <a>4</a> <b>5</b> - <v>208</v> + <v>207</v> </b> <b> <a>5</a> <b>6</b> - <v>208</v> + <v>207</v> </b> <b> <a>6</a> <b>8</b> - <v>208</v> + <v>207</v> </b> <b> <a>8</a> <b>11</b> - <v>208</v> + <v>207</v> </b> <b> <a>12</a> <b>115</b> - <v>208</v> + <v>207</v> </b> </bs> </hist> @@ -30901,7 +30970,7 @@ <b> <a>1</a> <b>2</b> - <v>2607</v> + <v>2588</v> </b> </bs> </hist> @@ -30911,23 +30980,23 @@ </relation> <relation> <name>initialisers</name> - <cardinality>1710236</cardinality> + <cardinality>1710241</cardinality> <columnsizes> <e> <k>init</k> - <v>1710236</v> + <v>1710241</v> </e> <e> <k>var</k> - <v>719575</v> + <v>719566</v> </e> <e> <k>expr</k> - <v>1710236</v> + <v>1710241</v> </e> <e> <k>location</k> - <v>394516</v> + <v>394521</v> </e> </columnsizes> <dependencies> @@ -30941,7 +31010,7 @@ <b> <a>1</a> <b>2</b> - <v>1710236</v> + <v>1710241</v> </b> </bs> </hist> @@ -30957,7 +31026,7 @@ <b> <a>1</a> <b>2</b> - <v>1710236</v> + <v>1710241</v> </b> </bs> </hist> @@ -30973,7 +31042,7 @@ <b> <a>1</a> <b>2</b> - <v>1710236</v> + <v>1710241</v> </b> </bs> </hist> @@ -30989,7 +31058,7 @@ <b> <a>1</a> <b>2</b> - <v>633831</v> + <v>633820</v> </b> <b> <a>2</a> @@ -30999,7 +31068,7 @@ <b> <a>16</a> <b>25</b> - <v>57021</v> + <v>57022</v> </b> </bs> </hist> @@ -31015,7 +31084,7 @@ <b> <a>1</a> <b>2</b> - <v>633831</v> + <v>633820</v> </b> <b> <a>2</a> @@ -31025,7 +31094,7 @@ <b> <a>16</a> <b>25</b> - <v>57021</v> + <v>57022</v> </b> </bs> </hist> @@ -31041,7 +31110,7 @@ <b> <a>1</a> <b>2</b> - <v>719569</v> + <v>719560</v> </b> <b> <a>2</a> @@ -31062,7 +31131,7 @@ <b> <a>1</a> <b>2</b> - <v>1710236</v> + <v>1710241</v> </b> </bs> </hist> @@ -31078,7 +31147,7 @@ <b> <a>1</a> <b>2</b> - <v>1710236</v> + <v>1710241</v> </b> </bs> </hist> @@ -31094,7 +31163,7 @@ <b> <a>1</a> <b>2</b> - <v>1710236</v> + <v>1710241</v> </b> </bs> </hist> @@ -31110,7 +31179,7 @@ <b> <a>1</a> <b>2</b> - <v>321600</v> + <v>321604</v> </b> <b> <a>2</a> @@ -31120,7 +31189,7 @@ <b> <a>3</a> <b>15</b> - <v>30976</v> + <v>30977</v> </b> <b> <a>15</a> @@ -31141,17 +31210,17 @@ <b> <a>1</a> <b>2</b> - <v>344483</v> + <v>344488</v> </b> <b> <a>2</a> <b>4</b> - <v>36086</v> + <v>36106</v> </b> <b> <a>4</a> <b>12073</b> - <v>13945</v> + <v>13927</v> </b> </bs> </hist> @@ -31167,7 +31236,7 @@ <b> <a>1</a> <b>2</b> - <v>321600</v> + <v>321604</v> </b> <b> <a>2</a> @@ -31177,7 +31246,7 @@ <b> <a>3</a> <b>15</b> - <v>30976</v> + <v>30977</v> </b> <b> <a>15</a> @@ -31192,26 +31261,26 @@ </relation> <relation> <name>braced_initialisers</name> - <cardinality>41639</cardinality> + <cardinality>41701</cardinality> <columnsizes> <e> <k>init</k> - <v>41639</v> + <v>41701</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>expr_ancestor</name> - <cardinality>148162</cardinality> + <cardinality>475296</cardinality> <columnsizes> <e> <k>exp</k> - <v>148162</v> + <v>475296</v> </e> <e> <k>ancestor</k> - <v>92668</v> + <v>269541</v> </e> </columnsizes> <dependencies> @@ -31225,7 +31294,7 @@ <b> <a>1</a> <b>2</b> - <v>148162</v> + <v>475296</v> </b> </bs> </hist> @@ -31241,22 +31310,27 @@ <b> <a>1</a> <b>2</b> - <v>65069</v> + <v>165739</v> </b> <b> <a>2</a> <b>3</b> - <v>18359</v> + <v>54712</v> </b> <b> <a>3</a> + <b>4</b> + <v>22152</v> + </b> + <b> + <a>4</a> <b>6</b> - <v>7422</v> + <v>22132</v> </b> <b> <a>6</a> <b>26</b> - <v>1816</v> + <v>4804</v> </b> </bs> </hist> @@ -31266,19 +31340,19 @@ </relation> <relation> <name>exprs</name> - <cardinality>18360534</cardinality> + <cardinality>18388573</cardinality> <columnsizes> <e> <k>id</k> - <v>18360534</v> + <v>18388573</v> </e> <e> <k>kind</k> - <v>1163</v> + <v>1165</v> </e> <e> <k>location</k> - <v>8475665</v> + <v>8488587</v> </e> </columnsizes> <dependencies> @@ -31292,7 +31366,7 @@ <b> <a>1</a> <b>2</b> - <v>18360534</v> + <v>18388573</v> </b> </bs> </hist> @@ -31308,7 +31382,7 @@ <b> <a>1</a> <b>2</b> - <v>18360534</v> + <v>18388573</v> </b> </bs> </hist> @@ -31383,7 +31457,7 @@ </b> <b> <a>63119</a> - <b>136808</b> + <b>136815</b> <v>88</v> </b> <b> @@ -31486,22 +31560,22 @@ <b> <a>1</a> <b>2</b> - <v>7134774</v> + <v>7145568</v> </b> <b> <a>2</a> <b>3</b> - <v>661975</v> + <v>663069</v> </b> <b> <a>3</a> <b>18</b> - <v>637171</v> + <v>638140</v> </b> <b> <a>18</a> <b>71656</b> - <v>41744</v> + <v>41808</v> </b> </bs> </hist> @@ -31517,17 +31591,65 @@ <b> <a>1</a> <b>2</b> - <v>7240687</v> + <v>7251643</v> </b> <b> <a>2</a> <b>3</b> - <v>617251</v> + <v>618277</v> </b> <b> <a>3</a> <b>32</b> - <v>617727</v> + <v>618666</v> + </b> + </bs> + </hist> + </val> + </dep> + </dependencies> + </relation> + <relation> + <name>expr_reuse</name> + <cardinality>331632</cardinality> + <columnsizes> + <e> + <k>reuse</k> + <v>331632</v> + </e> + <e> + <k>original</k> + <v>331632</v> + </e> + </columnsizes> + <dependencies> + <dep> + <src>reuse</src> + <trg>original</trg> + <val> + <hist> + <budget>12</budget> + <bs> + <b> + <a>1</a> + <b>2</b> + <v>331632</v> + </b> + </bs> + </hist> + </val> + </dep> + <dep> + <src>original</src> + <trg>reuse</trg> + <val> + <hist> + <budget>12</budget> + <bs> + <b> + <a>1</a> + <b>2</b> + <v>331632</v> </b> </bs> </hist> @@ -31537,15 +31659,15 @@ </relation> <relation> <name>expr_types</name> - <cardinality>18487847</cardinality> + <cardinality>18461112</cardinality> <columnsizes> <e> <k>id</k> - <v>18356624</v> + <v>18330447</v> </e> <e> <k>typeid</k> - <v>1243492</v> + <v>1237209</v> </e> <e> <k>value_category</k> @@ -31563,12 +31685,12 @@ <b> <a>1</a> <b>2</b> - <v>18225401</v> + <v>18199782</v> </b> <b> <a>2</a> <b>3</b> - <v>131222</v> + <v>130664</v> </b> </bs> </hist> @@ -31584,7 +31706,7 @@ <b> <a>1</a> <b>2</b> - <v>18356624</v> + <v>18330447</v> </b> </bs> </hist> @@ -31600,42 +31722,42 @@ <b> <a>1</a> <b>2</b> - <v>450100</v> + <v>448184</v> </b> <b> <a>2</a> <b>3</b> - <v>258108</v> + <v>256965</v> </b> <b> <a>3</a> <b>4</b> - <v>103214</v> + <v>102788</v> </b> <b> <a>4</a> <b>5</b> - <v>84643</v> + <v>84133</v> </b> <b> <a>5</a> <b>8</b> - <v>111056</v> + <v>110196</v> </b> <b> <a>8</a> <b>14</b> - <v>99102</v> + <v>98435</v> </b> <b> <a>14</a> <b>42</b> - <v>94046</v> + <v>93511</v> </b> <b> <a>42</a> - <b>125383</b> - <v>43220</v> + <b>125366</b> + <v>42995</v> </b> </bs> </hist> @@ -31651,17 +31773,17 @@ <b> <a>1</a> <b>2</b> - <v>1074947</v> + <v>1069468</v> </b> <b> <a>2</a> <b>3</b> - <v>158085</v> + <v>157321</v> </b> <b> <a>3</a> <b>4</b> - <v>10459</v> + <v>10418</v> </b> </bs> </hist> @@ -31675,18 +31797,18 @@ <budget>12</budget> <bs> <b> - <a>14895</a> - <b>14896</b> + <a>14892</a> + <b>14893</b> <v>11</v> </b> <b> - <a>372954</a> - <b>372955</b> + <a>372687</a> + <b>372688</b> <v>11</v> </b> <b> - <a>1246055</a> - <b>1246056</b> + <a>1250400</a> + <b>1250401</b> <v>11</v> </b> </bs> @@ -31706,13 +31828,13 @@ <v>11</v> </b> <b> - <a>30879</a> - <b>30880</b> + <a>30862</a> + <b>30863</b> <v>11</v> </b> <b> - <a>93014</a> - <b>93015</b> + <a>92891</a> + <b>92892</b> <v>11</v> </b> </bs> @@ -31723,15 +31845,15 @@ </relation> <relation> <name>new_allocated_type</name> - <cardinality>47510</cardinality> + <cardinality>47006</cardinality> <columnsizes> <e> <k>expr</k> - <v>47510</v> + <v>47006</v> </e> <e> <k>type_id</k> - <v>28098</v> + <v>27800</v> </e> </columnsizes> <dependencies> @@ -31745,7 +31867,7 @@ <b> <a>1</a> <b>2</b> - <v>47510</v> + <v>47006</v> </b> </bs> </hist> @@ -31761,17 +31883,17 @@ <b> <a>1</a> <b>2</b> - <v>11745</v> + <v>11621</v> </b> <b> <a>2</a> <b>3</b> - <v>14875</v> + <v>14717</v> </b> <b> <a>3</a> <b>19</b> - <v>1477</v> + <v>1461</v> </b> </bs> </hist> @@ -32866,15 +32988,15 @@ </relation> <relation> <name>condition_decl_bind</name> - <cardinality>42306</cardinality> + <cardinality>40853</cardinality> <columnsizes> <e> <k>expr</k> - <v>42306</v> + <v>40853</v> </e> <e> <k>decl</k> - <v>42306</v> + <v>40853</v> </e> </columnsizes> <dependencies> @@ -32888,7 +33010,7 @@ <b> <a>1</a> <b>2</b> - <v>42306</v> + <v>40853</v> </b> </bs> </hist> @@ -32904,7 +33026,7 @@ <b> <a>1</a> <b>2</b> - <v>42306</v> + <v>40853</v> </b> </bs> </hist> @@ -32914,15 +33036,15 @@ </relation> <relation> <name>typeid_bind</name> - <cardinality>36362</cardinality> + <cardinality>35977</cardinality> <columnsizes> <e> <k>expr</k> - <v>36362</v> + <v>35977</v> </e> <e> <k>type_id</k> - <v>16352</v> + <v>16179</v> </e> </columnsizes> <dependencies> @@ -32936,7 +33058,7 @@ <b> <a>1</a> <b>2</b> - <v>36362</v> + <v>35977</v> </b> </bs> </hist> @@ -32952,12 +33074,12 @@ <b> <a>1</a> <b>2</b> - <v>15930</v> + <v>15761</v> </b> <b> <a>3</a> <b>328</b> - <v>422</v> + <v>417</v> </b> </bs> </hist> @@ -32975,7 +33097,7 @@ </e> <e> <k>type_id</k> - <v>20096</v> + <v>20097</v> </e> </columnsizes> <dependencies> @@ -33005,7 +33127,7 @@ <b> <a>1</a> <b>2</b> - <v>19931</v> + <v>19932</v> </b> <b> <a>2</a> @@ -33020,15 +33142,15 @@ </relation> <relation> <name>sizeof_bind</name> - <cardinality>198892</cardinality> + <cardinality>199195</cardinality> <columnsizes> <e> <k>expr</k> - <v>198892</v> + <v>199195</v> </e> <e> <k>type_id</k> - <v>8169</v> + <v>8181</v> </e> </columnsizes> <dependencies> @@ -33042,7 +33164,7 @@ <b> <a>1</a> <b>2</b> - <v>198892</v> + <v>199195</v> </b> </bs> </hist> @@ -33058,22 +33180,22 @@ <b> <a>1</a> <b>2</b> - <v>2689</v> + <v>2693</v> </b> <b> <a>2</a> <b>3</b> - <v>2330</v> + <v>2333</v> </b> <b> <a>3</a> <b>4</b> - <v>776</v> + <v>777</v> </b> <b> <a>4</a> <b>5</b> - <v>739</v> + <v>740</v> </b> <b> <a>5</a> @@ -33083,12 +33205,12 @@ <b> <a>6</a> <b>9</b> - <v>713</v> + <v>714</v> </b> <b> <a>9</a> <b>133</b> - <v>649</v> + <v>650</v> </b> <b> <a>164</a> @@ -33151,19 +33273,19 @@ </relation> <relation> <name>lambdas</name> - <cardinality>21431</cardinality> + <cardinality>21455</cardinality> <columnsizes> <e> <k>expr</k> - <v>21431</v> + <v>21455</v> </e> <e> <k>default_capture</k> - <v>465</v> + <v>466</v> </e> <e> <k>has_explicit_return_type</k> - <v>465</v> + <v>466</v> </e> </columnsizes> <dependencies> @@ -33177,7 +33299,7 @@ <b> <a>1</a> <b>2</b> - <v>21431</v> + <v>21455</v> </b> </bs> </hist> @@ -33193,7 +33315,7 @@ <b> <a>1</a> <b>2</b> - <v>21431</v> + <v>21455</v> </b> </bs> </hist> @@ -33209,7 +33331,7 @@ <b> <a>46</a> <b>47</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33225,7 +33347,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33241,7 +33363,7 @@ <b> <a>46</a> <b>47</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33257,7 +33379,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33267,35 +33389,35 @@ </relation> <relation> <name>lambda_capture</name> - <cardinality>27953</cardinality> + <cardinality>27985</cardinality> <columnsizes> <e> <k>id</k> - <v>27953</v> + <v>27985</v> </e> <e> <k>lambda</k> - <v>20499</v> + <v>20522</v> </e> <e> <k>index</k> - <v>931</v> + <v>932</v> </e> <e> <k>field</k> - <v>27953</v> + <v>27985</v> </e> <e> <k>captured_by_reference</k> - <v>465</v> + <v>466</v> </e> <e> <k>is_implicit</k> - <v>465</v> + <v>466</v> </e> <e> <k>location</k> - <v>2795</v> + <v>2798</v> </e> </columnsizes> <dependencies> @@ -33309,7 +33431,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33325,7 +33447,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33341,7 +33463,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33357,7 +33479,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33373,7 +33495,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33389,7 +33511,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33405,12 +33527,12 @@ <b> <a>1</a> <b>2</b> - <v>13045</v> + <v>13059</v> </b> <b> <a>2</a> <b>3</b> - <v>7454</v> + <v>7462</v> </b> </bs> </hist> @@ -33426,12 +33548,12 @@ <b> <a>1</a> <b>2</b> - <v>13045</v> + <v>13059</v> </b> <b> <a>2</a> <b>3</b> - <v>7454</v> + <v>7462</v> </b> </bs> </hist> @@ -33447,12 +33569,12 @@ <b> <a>1</a> <b>2</b> - <v>13045</v> + <v>13059</v> </b> <b> <a>2</a> <b>3</b> - <v>7454</v> + <v>7462</v> </b> </bs> </hist> @@ -33468,7 +33590,7 @@ <b> <a>1</a> <b>2</b> - <v>20499</v> + <v>20522</v> </b> </bs> </hist> @@ -33484,7 +33606,7 @@ <b> <a>1</a> <b>2</b> - <v>20499</v> + <v>20522</v> </b> </bs> </hist> @@ -33500,12 +33622,12 @@ <b> <a>1</a> <b>2</b> - <v>13045</v> + <v>13059</v> </b> <b> <a>2</a> <b>3</b> - <v>7454</v> + <v>7462</v> </b> </bs> </hist> @@ -33521,12 +33643,12 @@ <b> <a>16</a> <b>17</b> - <v>465</v> + <v>466</v> </b> <b> <a>44</a> <b>45</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33542,12 +33664,12 @@ <b> <a>16</a> <b>17</b> - <v>465</v> + <v>466</v> </b> <b> <a>44</a> <b>45</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33563,12 +33685,12 @@ <b> <a>16</a> <b>17</b> - <v>465</v> + <v>466</v> </b> <b> <a>44</a> <b>45</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33584,7 +33706,7 @@ <b> <a>1</a> <b>2</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -33600,7 +33722,7 @@ <b> <a>1</a> <b>2</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -33616,12 +33738,12 @@ <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> <b> <a>4</a> <b>5</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33637,7 +33759,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33653,7 +33775,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33669,7 +33791,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33685,7 +33807,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33701,7 +33823,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33717,7 +33839,7 @@ <b> <a>1</a> <b>2</b> - <v>27953</v> + <v>27985</v> </b> </bs> </hist> @@ -33733,7 +33855,7 @@ <b> <a>60</a> <b>61</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33749,7 +33871,7 @@ <b> <a>44</a> <b>45</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33765,7 +33887,7 @@ <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33781,7 +33903,7 @@ <b> <a>60</a> <b>61</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33797,7 +33919,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33813,7 +33935,7 @@ <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33829,7 +33951,7 @@ <b> <a>60</a> <b>61</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33845,7 +33967,7 @@ <b> <a>44</a> <b>45</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33861,7 +33983,7 @@ <b> <a>2</a> <b>3</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33877,7 +33999,7 @@ <b> <a>60</a> <b>61</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33893,7 +34015,7 @@ <b> <a>1</a> <b>2</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33909,7 +34031,7 @@ <b> <a>6</a> <b>7</b> - <v>465</v> + <v>466</v> </b> </bs> </hist> @@ -33925,12 +34047,12 @@ <b> <a>8</a> <b>9</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>14</a> <b>15</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -33946,12 +34068,12 @@ <b> <a>8</a> <b>9</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>14</a> <b>15</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -33967,7 +34089,7 @@ <b> <a>1</a> <b>2</b> - <v>2795</v> + <v>2798</v> </b> </bs> </hist> @@ -33983,12 +34105,12 @@ <b> <a>8</a> <b>9</b> - <v>1863</v> + <v>1865</v> </b> <b> <a>14</a> <b>15</b> - <v>931</v> + <v>932</v> </b> </bs> </hist> @@ -34004,7 +34126,7 @@ <b> <a>1</a> <b>2</b> - <v>2795</v> + <v>2798</v> </b> </bs> </hist> @@ -34020,7 +34142,7 @@ <b> <a>1</a> <b>2</b> - <v>2795</v> + <v>2798</v> </b> </bs> </hist> @@ -34146,19 +34268,19 @@ </relation> <relation> <name>stmts</name> - <cardinality>4648694</cardinality> + <cardinality>4619943</cardinality> <columnsizes> <e> <k>id</k> - <v>4648694</v> + <v>4619943</v> </e> <e> <k>kind</k> - <v>1981</v> + <v>1966</v> </e> <e> <k>location</k> - <v>2286749</v> + <v>2269598</v> </e> </columnsizes> <dependencies> @@ -34172,7 +34294,7 @@ <b> <a>1</a> <b>2</b> - <v>4648694</v> + <v>4619943</v> </b> </bs> </hist> @@ -34188,7 +34310,7 @@ <b> <a>1</a> <b>2</b> - <v>4648694</v> + <v>4619943</v> </b> </bs> </hist> @@ -34204,97 +34326,97 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>103</v> </b> <b> <a>18</a> <b>19</b> - <v>104</v> + <v>103</v> </b> <b> <a>22</a> <b>23</b> - <v>104</v> + <v>103</v> </b> <b> <a>46</a> <b>47</b> - <v>104</v> + <v>103</v> </b> <b> <a>75</a> <b>76</b> - <v>104</v> + <v>103</v> </b> <b> <a>83</a> <b>84</b> - <v>104</v> + <v>103</v> </b> <b> <a>102</a> <b>103</b> - <v>104</v> + <v>103</v> </b> <b> <a>154</a> <b>155</b> - <v>104</v> + <v>103</v> </b> <b> <a>242</a> <b>243</b> - <v>104</v> + <v>103</v> </b> <b> <a>284</a> <b>285</b> - <v>104</v> + <v>103</v> </b> <b> <a>383</a> <b>384</b> - <v>104</v> + <v>103</v> </b> <b> <a>418</a> <b>419</b> - <v>104</v> + <v>103</v> </b> <b> - <a>502</a> - <b>503</b> - <v>104</v> + <a>503</a> + <b>504</b> + <v>103</v> </b> <b> - <a>1325</a> - <b>1326</b> - <v>104</v> + <a>1326</a> + <b>1327</b> + <v>103</v> </b> <b> - <a>2630</a> - <b>2631</b> - <v>104</v> + <a>2635</a> + <b>2636</b> + <v>103</v> </b> <b> - <a>4613</a> - <b>4614</b> - <v>104</v> + <a>4621</a> + <b>4622</b> + <v>103</v> </b> <b> - <a>8794</a> - <b>8795</b> - <v>104</v> + <a>8803</a> + <b>8804</b> + <v>103</v> </b> <b> - <a>11560</a> - <b>11561</b> - <v>104</v> + <a>11577</a> + <b>11578</b> + <v>103</v> </b> <b> - <a>13321</a> - <b>13322</b> - <v>104</v> + <a>13335</a> + <b>13336</b> + <v>103</v> </b> </bs> </hist> @@ -34310,97 +34432,97 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>103</v> </b> <b> <a>8</a> <b>9</b> - <v>104</v> + <v>103</v> </b> <b> <a>18</a> <b>19</b> - <v>104</v> + <v>103</v> </b> <b> <a>45</a> <b>46</b> - <v>104</v> + <v>103</v> </b> <b> <a>50</a> <b>51</b> - <v>104</v> + <v>103</v> </b> <b> <a>56</a> <b>57</b> - <v>104</v> + <v>103</v> </b> <b> <a>74</a> <b>75</b> - <v>104</v> + <v>103</v> </b> <b> <a>89</a> <b>90</b> - <v>104</v> + <v>103</v> </b> <b> <a>101</a> <b>102</b> - <v>104</v> + <v>103</v> </b> <b> <a>128</a> <b>129</b> - <v>104</v> + <v>103</v> </b> <b> <a>209</a> <b>210</b> - <v>104</v> + <v>103</v> </b> <b> <a>252</a> <b>253</b> - <v>104</v> + <v>103</v> </b> <b> <a>368</a> <b>369</b> - <v>104</v> + <v>103</v> </b> <b> <a>642</a> <b>643</b> - <v>104</v> + <v>103</v> </b> <b> <a>1743</a> <b>1744</b> - <v>104</v> + <v>103</v> </b> <b> <a>2190</a> <b>2191</b> - <v>104</v> + <v>103</v> </b> <b> - <a>4229</a> - <b>4230</b> - <v>104</v> + <a>4228</a> + <b>4229</b> + <v>103</v> </b> <b> <a>6071</a> <b>6072</b> - <v>104</v> + <v>103</v> </b> <b> - <a>6568</a> - <b>6569</b> - <v>104</v> + <a>6567</a> + <b>6568</b> + <v>103</v> </b> </bs> </hist> @@ -34416,22 +34538,22 @@ <b> <a>1</a> <b>2</b> - <v>1893352</v> + <v>1879323</v> </b> <b> <a>2</a> <b>4</b> - <v>175318</v> + <v>174019</v> </b> <b> <a>4</a> <b>12</b> - <v>175631</v> + <v>174122</v> </b> <b> <a>12</a> <b>687</b> - <v>42447</v> + <v>42133</v> </b> </bs> </hist> @@ -34447,12 +34569,12 @@ <b> <a>1</a> <b>2</b> - <v>2229596</v> + <v>2212869</v> </b> <b> <a>2</a> <b>8</b> - <v>57153</v> + <v>56729</v> </b> </bs> </hist> @@ -34558,15 +34680,15 @@ </relation> <relation> <name>if_initialization</name> - <cardinality>312</cardinality> + <cardinality>310</cardinality> <columnsizes> <e> <k>if_stmt</k> - <v>312</v> + <v>310</v> </e> <e> <k>init_id</k> - <v>312</v> + <v>310</v> </e> </columnsizes> <dependencies> @@ -34580,7 +34702,7 @@ <b> <a>1</a> <b>2</b> - <v>312</v> + <v>310</v> </b> </bs> </hist> @@ -34596,7 +34718,7 @@ <b> <a>1</a> <b>2</b> - <v>312</v> + <v>310</v> </b> </bs> </hist> @@ -34606,15 +34728,15 @@ </relation> <relation> <name>if_then</name> - <cardinality>724849</cardinality> + <cardinality>725956</cardinality> <columnsizes> <e> <k>if_stmt</k> - <v>724849</v> + <v>725956</v> </e> <e> <k>then_id</k> - <v>724849</v> + <v>725956</v> </e> </columnsizes> <dependencies> @@ -34628,7 +34750,7 @@ <b> <a>1</a> <b>2</b> - <v>724849</v> + <v>725956</v> </b> </bs> </hist> @@ -34644,7 +34766,7 @@ <b> <a>1</a> <b>2</b> - <v>724849</v> + <v>725956</v> </b> </bs> </hist> @@ -34654,15 +34776,15 @@ </relation> <relation> <name>if_else</name> - <cardinality>184398</cardinality> + <cardinality>184680</cardinality> <columnsizes> <e> <k>if_stmt</k> - <v>184398</v> + <v>184680</v> </e> <e> <k>else_id</k> - <v>184398</v> + <v>184680</v> </e> </columnsizes> <dependencies> @@ -34676,7 +34798,7 @@ <b> <a>1</a> <b>2</b> - <v>184398</v> + <v>184680</v> </b> </bs> </hist> @@ -34692,7 +34814,7 @@ <b> <a>1</a> <b>2</b> - <v>184398</v> + <v>184680</v> </b> </bs> </hist> @@ -34750,15 +34872,15 @@ </relation> <relation> <name>constexpr_if_then</name> - <cardinality>52355</cardinality> + <cardinality>52071</cardinality> <columnsizes> <e> <k>constexpr_if_stmt</k> - <v>52355</v> + <v>52071</v> </e> <e> <k>then_id</k> - <v>52355</v> + <v>52071</v> </e> </columnsizes> <dependencies> @@ -34772,7 +34894,7 @@ <b> <a>1</a> <b>2</b> - <v>52355</v> + <v>52071</v> </b> </bs> </hist> @@ -34788,7 +34910,7 @@ <b> <a>1</a> <b>2</b> - <v>52355</v> + <v>52071</v> </b> </bs> </hist> @@ -34798,15 +34920,15 @@ </relation> <relation> <name>constexpr_if_else</name> - <cardinality>30766</cardinality> + <cardinality>30538</cardinality> <columnsizes> <e> <k>constexpr_if_stmt</k> - <v>30766</v> + <v>30538</v> </e> <e> <k>else_id</k> - <v>30766</v> + <v>30538</v> </e> </columnsizes> <dependencies> @@ -34820,7 +34942,7 @@ <b> <a>1</a> <b>2</b> - <v>30766</v> + <v>30538</v> </b> </bs> </hist> @@ -34836,7 +34958,7 @@ <b> <a>1</a> <b>2</b> - <v>30766</v> + <v>30538</v> </b> </bs> </hist> @@ -34846,15 +34968,15 @@ </relation> <relation> <name>while_body</name> - <cardinality>29345</cardinality> + <cardinality>29152</cardinality> <columnsizes> <e> <k>while_stmt</k> - <v>29345</v> + <v>29152</v> </e> <e> <k>body_id</k> - <v>29345</v> + <v>29152</v> </e> </columnsizes> <dependencies> @@ -34868,7 +34990,7 @@ <b> <a>1</a> <b>2</b> - <v>29345</v> + <v>29152</v> </b> </bs> </hist> @@ -34884,7 +35006,7 @@ <b> <a>1</a> <b>2</b> - <v>29345</v> + <v>29152</v> </b> </bs> </hist> @@ -34894,15 +35016,15 @@ </relation> <relation> <name>do_body</name> - <cardinality>148655</cardinality> + <cardinality>148882</cardinality> <columnsizes> <e> <k>do_stmt</k> - <v>148655</v> + <v>148882</v> </e> <e> <k>body_id</k> - <v>148655</v> + <v>148882</v> </e> </columnsizes> <dependencies> @@ -34916,7 +35038,7 @@ <b> <a>1</a> <b>2</b> - <v>148655</v> + <v>148882</v> </b> </bs> </hist> @@ -34932,7 +35054,7 @@ <b> <a>1</a> <b>2</b> - <v>148655</v> + <v>148882</v> </b> </bs> </hist> @@ -34942,15 +35064,15 @@ </relation> <relation> <name>switch_initialization</name> - <cardinality>4</cardinality> + <cardinality>5</cardinality> <columnsizes> <e> <k>switch_stmt</k> - <v>4</v> + <v>5</v> </e> <e> <k>init_id</k> - <v>4</v> + <v>5</v> </e> </columnsizes> <dependencies> @@ -34964,7 +35086,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -34980,7 +35102,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -34990,19 +35112,19 @@ </relation> <relation> <name>switch_case</name> - <cardinality>209046</cardinality> + <cardinality>201865</cardinality> <columnsizes> <e> <k>switch_stmt</k> - <v>11193</v> + <v>10809</v> </e> <e> <k>index</k> - <v>4856</v> + <v>4689</v> </e> <e> <k>case_id</k> - <v>209046</v> + <v>201865</v> </e> </columnsizes> <dependencies> @@ -35016,57 +35138,57 @@ <b> <a>2</a> <b>3</b> - <v>59</v> + <v>57</v> </b> <b> <a>3</a> <b>4</b> - <v>2487</v> + <v>2402</v> </b> <b> <a>4</a> <b>5</b> - <v>1816</v> + <v>1753</v> </b> <b> <a>5</a> <b>6</b> - <v>1085</v> + <v>1048</v> </b> <b> <a>6</a> <b>8</b> - <v>1026</v> + <v>991</v> </b> <b> <a>8</a> <b>9</b> - <v>552</v> + <v>533</v> </b> <b> <a>9</a> <b>10</b> - <v>1066</v> + <v>1029</v> </b> <b> <a>10</a> <b>12</b> - <v>1026</v> + <v>991</v> </b> <b> <a>12</a> <b>25</b> - <v>868</v> + <v>838</v> </b> <b> <a>30</a> <b>152</b> - <v>848</v> + <v>819</v> </b> <b> <a>181</a> <b>247</b> - <v>355</v> + <v>343</v> </b> </bs> </hist> @@ -35082,57 +35204,57 @@ <b> <a>2</a> <b>3</b> - <v>59</v> + <v>57</v> </b> <b> <a>3</a> <b>4</b> - <v>2487</v> + <v>2402</v> </b> <b> <a>4</a> <b>5</b> - <v>1816</v> + <v>1753</v> </b> <b> <a>5</a> <b>6</b> - <v>1085</v> + <v>1048</v> </b> <b> <a>6</a> <b>8</b> - <v>1026</v> + <v>991</v> </b> <b> <a>8</a> <b>9</b> - <v>552</v> + <v>533</v> </b> <b> <a>9</a> <b>10</b> - <v>1066</v> + <v>1029</v> </b> <b> <a>10</a> <b>12</b> - <v>1026</v> + <v>991</v> </b> <b> <a>12</a> <b>25</b> - <v>868</v> + <v>838</v> </b> <b> <a>30</a> <b>152</b> - <v>848</v> + <v>819</v> </b> <b> <a>181</a> <b>247</b> - <v>355</v> + <v>343</v> </b> </bs> </hist> @@ -35148,32 +35270,32 @@ <b> <a>14</a> <b>15</b> - <v>1283</v> + <v>1239</v> </b> <b> <a>18</a> <b>19</b> - <v>592</v> + <v>571</v> </b> <b> <a>32</a> <b>33</b> - <v>2092</v> + <v>2020</v> </b> <b> <a>33</a> <b>62</b> - <v>414</v> + <v>400</v> </b> <b> <a>66</a> <b>292</b> - <v>375</v> + <v>362</v> </b> <b> <a>346</a> <b>568</b> - <v>98</v> + <v>95</v> </b> </bs> </hist> @@ -35189,32 +35311,32 @@ <b> <a>14</a> <b>15</b> - <v>1283</v> + <v>1239</v> </b> <b> <a>18</a> <b>19</b> - <v>592</v> + <v>571</v> </b> <b> <a>32</a> <b>33</b> - <v>2092</v> + <v>2020</v> </b> <b> <a>33</a> <b>62</b> - <v>414</v> + <v>400</v> </b> <b> <a>66</a> <b>292</b> - <v>375</v> + <v>362</v> </b> <b> <a>346</a> <b>568</b> - <v>98</v> + <v>95</v> </b> </bs> </hist> @@ -35230,7 +35352,7 @@ <b> <a>1</a> <b>2</b> - <v>209046</v> + <v>201865</v> </b> </bs> </hist> @@ -35246,7 +35368,7 @@ <b> <a>1</a> <b>2</b> - <v>209046</v> + <v>201865</v> </b> </bs> </hist> @@ -35256,15 +35378,15 @@ </relation> <relation> <name>switch_body</name> - <cardinality>20756</cardinality> + <cardinality>20788</cardinality> <columnsizes> <e> <k>switch_stmt</k> - <v>20756</v> + <v>20788</v> </e> <e> <k>body_id</k> - <v>20756</v> + <v>20788</v> </e> </columnsizes> <dependencies> @@ -35278,7 +35400,7 @@ <b> <a>1</a> <b>2</b> - <v>20756</v> + <v>20788</v> </b> </bs> </hist> @@ -35294,7 +35416,7 @@ <b> <a>1</a> <b>2</b> - <v>20756</v> + <v>20788</v> </b> </bs> </hist> @@ -35304,15 +35426,15 @@ </relation> <relation> <name>for_initialization</name> - <cardinality>53325</cardinality> + <cardinality>53407</cardinality> <columnsizes> <e> <k>for_stmt</k> - <v>53325</v> + <v>53407</v> </e> <e> <k>init_id</k> - <v>53325</v> + <v>53407</v> </e> </columnsizes> <dependencies> @@ -35326,7 +35448,7 @@ <b> <a>1</a> <b>2</b> - <v>53325</v> + <v>53407</v> </b> </bs> </hist> @@ -35342,7 +35464,7 @@ <b> <a>1</a> <b>2</b> - <v>53325</v> + <v>53407</v> </b> </bs> </hist> @@ -35352,15 +35474,15 @@ </relation> <relation> <name>for_condition</name> - <cardinality>55586</cardinality> + <cardinality>55671</cardinality> <columnsizes> <e> <k>for_stmt</k> - <v>55586</v> + <v>55671</v> </e> <e> <k>condition_id</k> - <v>55586</v> + <v>55671</v> </e> </columnsizes> <dependencies> @@ -35374,7 +35496,7 @@ <b> <a>1</a> <b>2</b> - <v>55586</v> + <v>55671</v> </b> </bs> </hist> @@ -35390,7 +35512,7 @@ <b> <a>1</a> <b>2</b> - <v>55586</v> + <v>55671</v> </b> </bs> </hist> @@ -35400,15 +35522,15 @@ </relation> <relation> <name>for_update</name> - <cardinality>53428</cardinality> + <cardinality>53509</cardinality> <columnsizes> <e> <k>for_stmt</k> - <v>53428</v> + <v>53509</v> </e> <e> <k>update_id</k> - <v>53428</v> + <v>53509</v> </e> </columnsizes> <dependencies> @@ -35422,7 +35544,7 @@ <b> <a>1</a> <b>2</b> - <v>53428</v> + <v>53509</v> </b> </bs> </hist> @@ -35438,7 +35560,7 @@ <b> <a>1</a> <b>2</b> - <v>53428</v> + <v>53509</v> </b> </bs> </hist> @@ -35448,15 +35570,15 @@ </relation> <relation> <name>for_body</name> - <cardinality>61466</cardinality> + <cardinality>61560</cardinality> <columnsizes> <e> <k>for_stmt</k> - <v>61466</v> + <v>61560</v> </e> <e> <k>body_id</k> - <v>61466</v> + <v>61560</v> </e> </columnsizes> <dependencies> @@ -35470,7 +35592,7 @@ <b> <a>1</a> <b>2</b> - <v>61466</v> + <v>61560</v> </b> </bs> </hist> @@ -35486,7 +35608,7 @@ <b> <a>1</a> <b>2</b> - <v>61466</v> + <v>61560</v> </b> </bs> </hist> @@ -35496,11 +35618,11 @@ </relation> <relation> <name>stmtparents</name> - <cardinality>4054126</cardinality> + <cardinality>4054468</cardinality> <columnsizes> <e> <k>id</k> - <v>4054126</v> + <v>4054468</v> </e> <e> <k>index</k> @@ -35508,7 +35630,7 @@ </e> <e> <k>parent</k> - <v>1721123</v> + <v>1721248</v> </e> </columnsizes> <dependencies> @@ -35522,7 +35644,7 @@ <b> <a>1</a> <b>2</b> - <v>4054126</v> + <v>4054468</v> </b> </bs> </hist> @@ -35538,7 +35660,7 @@ <b> <a>1</a> <b>2</b> - <v>4054126</v> + <v>4054468</v> </b> </bs> </hist> @@ -35598,7 +35720,7 @@ </b> <b> <a>77</a> - <b>195121</b> + <b>195132</b> <v>704</v> </b> </bs> @@ -35659,7 +35781,7 @@ </b> <b> <a>77</a> - <b>195121</b> + <b>195132</b> <v>704</v> </b> </bs> @@ -35676,27 +35798,27 @@ <b> <a>1</a> <b>2</b> - <v>989099</v> + <v>989113</v> </b> <b> <a>2</a> <b>3</b> - <v>372496</v> + <v>372551</v> </b> <b> <a>3</a> <b>4</b> - <v>105695</v> + <v>105697</v> </b> <b> <a>4</a> <b>6</b> - <v>111192</v> + <v>111251</v> </b> <b> <a>6</a> <b>17</b> - <v>130356</v> + <v>130351</v> </b> <b> <a>17</a> @@ -35717,27 +35839,27 @@ <b> <a>1</a> <b>2</b> - <v>989099</v> + <v>989113</v> </b> <b> <a>2</a> <b>3</b> - <v>372496</v> + <v>372551</v> </b> <b> <a>3</a> <b>4</b> - <v>105695</v> + <v>105697</v> </b> <b> <a>4</a> <b>6</b> - <v>111192</v> + <v>111251</v> </b> <b> <a>6</a> <b>17</b> - <v>130356</v> + <v>130351</v> </b> <b> <a>17</a> @@ -35752,22 +35874,22 @@ </relation> <relation> <name>ishandler</name> - <cardinality>65128</cardinality> + <cardinality>62891</cardinality> <columnsizes> <e> <k>block</k> - <v>65128</v> + <v>62891</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>stmt_decl_bind</name> - <cardinality>581396</cardinality> + <cardinality>580807</cardinality> <columnsizes> <e> <k>stmt</k> - <v>541537</v> + <v>540988</v> </e> <e> <k>num</k> @@ -35775,7 +35897,7 @@ </e> <e> <k>decl</k> - <v>581292</v> + <v>580703</v> </e> </columnsizes> <dependencies> @@ -35789,12 +35911,12 @@ <b> <a>1</a> <b>2</b> - <v>520808</v> + <v>520281</v> </b> <b> <a>2</a> <b>19</b> - <v>20728</v> + <v>20707</v> </b> </bs> </hist> @@ -35810,12 +35932,12 @@ <b> <a>1</a> <b>2</b> - <v>520808</v> + <v>520281</v> </b> <b> <a>2</a> <b>19</b> - <v>20728</v> + <v>20707</v> </b> </bs> </hist> @@ -35904,8 +36026,8 @@ <v>4</v> </b> <b> - <a>129788</a> - <b>129789</b> + <a>129790</a> + <b>129791</b> <v>4</v> </b> </bs> @@ -35995,8 +36117,8 @@ <v>4</v> </b> <b> - <a>129763</a> - <b>129764</b> + <a>129765</a> + <b>129766</b> <v>4</v> </b> </bs> @@ -36013,7 +36135,7 @@ <b> <a>1</a> <b>2</b> - <v>581255</v> + <v>580665</v> </b> <b> <a>2</a> @@ -36034,7 +36156,7 @@ <b> <a>1</a> <b>2</b> - <v>581292</v> + <v>580703</v> </b> </bs> </hist> @@ -36044,11 +36166,11 @@ </relation> <relation> <name>stmt_decl_entry_bind</name> - <cardinality>524221</cardinality> + <cardinality>523682</cardinality> <columnsizes> <e> <k>stmt</k> - <v>484662</v> + <v>484163</v> </e> <e> <k>num</k> @@ -36056,7 +36178,7 @@ </e> <e> <k>decl_entry</k> - <v>524163</v> + <v>523624</v> </e> </columnsizes> <dependencies> @@ -36070,12 +36192,12 @@ <b> <a>1</a> <b>2</b> - <v>464196</v> + <v>463719</v> </b> <b> <a>2</a> <b>19</b> - <v>20465</v> + <v>20444</v> </b> </bs> </hist> @@ -36091,12 +36213,12 @@ <b> <a>1</a> <b>2</b> - <v>464196</v> + <v>463719</v> </b> <b> <a>2</a> <b>19</b> - <v>20465</v> + <v>20444</v> </b> </bs> </hist> @@ -36294,7 +36416,7 @@ <b> <a>1</a> <b>2</b> - <v>524142</v> + <v>523603</v> </b> <b> <a>3</a> @@ -36315,7 +36437,7 @@ <b> <a>1</a> <b>2</b> - <v>524163</v> + <v>523624</v> </b> </bs> </hist> @@ -36325,15 +36447,15 @@ </relation> <relation> <name>blockscope</name> - <cardinality>1413997</cardinality> + <cardinality>1415581</cardinality> <columnsizes> <e> <k>block</k> - <v>1413997</v> + <v>1415581</v> </e> <e> <k>enclosing</k> - <v>1298920</v> + <v>1300376</v> </e> </columnsizes> <dependencies> @@ -36347,7 +36469,7 @@ <b> <a>1</a> <b>2</b> - <v>1413997</v> + <v>1415581</v> </b> </bs> </hist> @@ -36363,12 +36485,12 @@ <b> <a>1</a> <b>2</b> - <v>1233695</v> + <v>1235077</v> </b> <b> <a>2</a> <b>13</b> - <v>65225</v> + <v>65298</v> </b> </bs> </hist> @@ -36378,19 +36500,19 @@ </relation> <relation> <name>jumpinfo</name> - <cardinality>254083</cardinality> + <cardinality>254471</cardinality> <columnsizes> <e> <k>id</k> - <v>254083</v> + <v>254471</v> </e> <e> <k>str</k> - <v>21159</v> + <v>21192</v> </e> <e> <k>target</k> - <v>53064</v> + <v>53145</v> </e> </columnsizes> <dependencies> @@ -36404,7 +36526,7 @@ <b> <a>1</a> <b>2</b> - <v>254083</v> + <v>254471</v> </b> </bs> </hist> @@ -36420,7 +36542,7 @@ <b> <a>1</a> <b>2</b> - <v>254083</v> + <v>254471</v> </b> </bs> </hist> @@ -36436,37 +36558,37 @@ <b> <a>2</a> <b>3</b> - <v>9879</v> + <v>9894</v> </b> <b> <a>3</a> <b>4</b> - <v>4247</v> + <v>4254</v> </b> <b> <a>4</a> <b>5</b> - <v>1566</v> + <v>1568</v> </b> <b> <a>5</a> <b>6</b> - <v>1340</v> + <v>1342</v> </b> <b> <a>6</a> <b>10</b> - <v>1700</v> + <v>1702</v> </b> <b> <a>10</a> <b>22</b> - <v>1621</v> + <v>1623</v> </b> <b> <a>22</a> <b>13723</b> - <v>804</v> + <v>805</v> </b> </bs> </hist> @@ -36482,17 +36604,17 @@ <b> <a>1</a> <b>2</b> - <v>16723</v> + <v>16748</v> </b> <b> <a>2</a> <b>3</b> - <v>2632</v> + <v>2636</v> </b> <b> <a>3</a> <b>10</b> - <v>1688</v> + <v>1690</v> </b> <b> <a>10</a> @@ -36518,27 +36640,27 @@ <b> <a>2</a> <b>3</b> - <v>26437</v> + <v>26478</v> </b> <b> <a>3</a> <b>4</b> - <v>12901</v> + <v>12921</v> </b> <b> <a>4</a> <b>5</b> - <v>5344</v> + <v>5352</v> </b> <b> <a>5</a> <b>8</b> - <v>4692</v> + <v>4699</v> </b> <b> <a>8</a> <b>2124</b> - <v>3662</v> + <v>3668</v> </b> </bs> </hist> @@ -36554,7 +36676,7 @@ <b> <a>1</a> <b>2</b> - <v>53064</v> + <v>53145</v> </b> </bs> </hist> @@ -36564,19 +36686,19 @@ </relation> <relation> <name>preprocdirects</name> - <cardinality>4421959</cardinality> + <cardinality>4389195</cardinality> <columnsizes> <e> <k>id</k> - <v>4421959</v> + <v>4389195</v> </e> <e> <k>kind</k> - <v>1147</v> + <v>1138</v> </e> <e> <k>location</k> - <v>4419352</v> + <v>4386607</v> </e> </columnsizes> <dependencies> @@ -36590,7 +36712,7 @@ <b> <a>1</a> <b>2</b> - <v>4421959</v> + <v>4389195</v> </b> </bs> </hist> @@ -36606,7 +36728,7 @@ <b> <a>1</a> <b>2</b> - <v>4421959</v> + <v>4389195</v> </b> </bs> </hist> @@ -36622,57 +36744,57 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>103</v> </b> <b> <a>122</a> <b>123</b> - <v>104</v> + <v>103</v> </b> <b> <a>694</a> <b>695</b> - <v>104</v> + <v>103</v> </b> <b> <a>799</a> <b>800</b> - <v>104</v> + <v>103</v> </b> <b> <a>932</a> <b>933</b> - <v>104</v> + <v>103</v> </b> <b> <a>1689</a> <b>1690</b> - <v>104</v> + <v>103</v> </b> <b> <a>1792</a> <b>1793</b> - <v>104</v> + <v>103</v> </b> <b> <a>3012</a> <b>3013</b> - <v>104</v> + <v>103</v> </b> <b> <a>3802</a> <b>3803</b> - <v>104</v> + <v>103</v> </b> <b> <a>6290</a> <b>6291</b> - <v>104</v> + <v>103</v> </b> <b> <a>23266</a> <b>23267</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -36688,57 +36810,57 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>103</v> </b> <b> <a>122</a> <b>123</b> - <v>104</v> + <v>103</v> </b> <b> <a>694</a> <b>695</b> - <v>104</v> + <v>103</v> </b> <b> <a>799</a> <b>800</b> - <v>104</v> + <v>103</v> </b> <b> <a>932</a> <b>933</b> - <v>104</v> + <v>103</v> </b> <b> <a>1689</a> <b>1690</b> - <v>104</v> + <v>103</v> </b> <b> <a>1792</a> <b>1793</b> - <v>104</v> + <v>103</v> </b> <b> <a>3012</a> <b>3013</b> - <v>104</v> + <v>103</v> </b> <b> <a>3802</a> <b>3803</b> - <v>104</v> + <v>103</v> </b> <b> <a>6290</a> <b>6291</b> - <v>104</v> + <v>103</v> </b> <b> <a>23241</a> <b>23242</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -36754,12 +36876,12 @@ <b> <a>1</a> <b>2</b> - <v>4419247</v> + <v>4386503</v> </b> <b> <a>26</a> <b>27</b> - <v>104</v> + <v>103</v> </b> </bs> </hist> @@ -36775,7 +36897,7 @@ <b> <a>1</a> <b>2</b> - <v>4419352</v> + <v>4386607</v> </b> </bs> </hist> @@ -36785,15 +36907,15 @@ </relation> <relation> <name>preprocpair</name> - <cardinality>1428440</cardinality> + <cardinality>1430040</cardinality> <columnsizes> <e> <k>begin</k> - <v>1194559</v> + <v>1195898</v> </e> <e> <k>elseelifend</k> - <v>1428440</v> + <v>1430040</v> </e> </columnsizes> <dependencies> @@ -36807,17 +36929,17 @@ <b> <a>1</a> <b>2</b> - <v>976520</v> + <v>977614</v> </b> <b> <a>2</a> <b>3</b> - <v>207790</v> + <v>208022</v> </b> <b> <a>3</a> <b>11</b> - <v>10249</v> + <v>10261</v> </b> </bs> </hist> @@ -36833,7 +36955,7 @@ <b> <a>1</a> <b>2</b> - <v>1428440</v> + <v>1430040</v> </b> </bs> </hist> @@ -36843,41 +36965,41 @@ </relation> <relation> <name>preproctrue</name> - <cardinality>765468</cardinality> + <cardinality>766326</cardinality> <columnsizes> <e> <k>branch</k> - <v>765468</v> + <v>766326</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>preprocfalse</name> - <cardinality>330786</cardinality> + <cardinality>331157</cardinality> <columnsizes> <e> <k>branch</k> - <v>330786</v> + <v>331157</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>preproctext</name> - <cardinality>3565497</cardinality> + <cardinality>3539079</cardinality> <columnsizes> <e> <k>id</k> - <v>3565497</v> + <v>3539079</v> </e> <e> <k>head</k> - <v>2583987</v> + <v>2564841</v> </e> <e> <k>body</k> - <v>1510176</v> + <v>1498986</v> </e> </columnsizes> <dependencies> @@ -36891,7 +37013,7 @@ <b> <a>1</a> <b>2</b> - <v>3565497</v> + <v>3539079</v> </b> </bs> </hist> @@ -36907,7 +37029,7 @@ <b> <a>1</a> <b>2</b> - <v>3565497</v> + <v>3539079</v> </b> </bs> </hist> @@ -36923,12 +37045,12 @@ <b> <a>1</a> <b>2</b> - <v>2437036</v> + <v>2418979</v> </b> <b> <a>2</a> <b>740</b> - <v>146950</v> + <v>145861</v> </b> </bs> </hist> @@ -36944,12 +37066,12 @@ <b> <a>1</a> <b>2</b> - <v>2521827</v> + <v>2503142</v> </b> <b> <a>2</a> <b>5</b> - <v>62159</v> + <v>61698</v> </b> </bs> </hist> @@ -36965,17 +37087,17 @@ <b> <a>1</a> <b>2</b> - <v>1367085</v> + <v>1356955</v> </b> <b> <a>2</a> <b>6</b> - <v>113263</v> + <v>112424</v> </b> <b> <a>6</a> <b>11630</b> - <v>29828</v> + <v>29607</v> </b> </bs> </hist> @@ -36991,17 +37113,17 @@ <b> <a>1</a> <b>2</b> - <v>1370109</v> + <v>1359957</v> </b> <b> <a>2</a> <b>7</b> - <v>113576</v> + <v>112734</v> </b> <b> <a>7</a> <b>2980</b> - <v>26490</v> + <v>26294</v> </b> </bs> </hist> @@ -37011,15 +37133,15 @@ </relation> <relation> <name>includes</name> - <cardinality>312616</cardinality> + <cardinality>312967</cardinality> <columnsizes> <e> <k>id</k> - <v>312616</v> + <v>312967</v> </e> <e> <k>included</k> - <v>116940</v> + <v>117071</v> </e> </columnsizes> <dependencies> @@ -37033,7 +37155,7 @@ <b> <a>1</a> <b>2</b> - <v>312616</v> + <v>312967</v> </b> </bs> </hist> @@ -37049,32 +37171,32 @@ <b> <a>1</a> <b>2</b> - <v>61032</v> + <v>61100</v> </b> <b> <a>2</a> <b>3</b> - <v>21897</v> + <v>21921</v> </b> <b> <a>3</a> <b>4</b> - <v>12579</v> + <v>12593</v> </b> <b> <a>4</a> <b>6</b> - <v>10249</v> + <v>10261</v> </b> <b> <a>6</a> <b>14</b> - <v>8852</v> + <v>8861</v> </b> <b> <a>14</a> <b>47</b> - <v>2329</v> + <v>2332</v> </b> </bs> </hist> @@ -37084,15 +37206,15 @@ </relation> <relation> <name>link_targets</name> - <cardinality>848</cardinality> + <cardinality>819</cardinality> <columnsizes> <e> <k>id</k> - <v>848</v> + <v>819</v> </e> <e> <k>binary</k> - <v>848</v> + <v>819</v> </e> </columnsizes> <dependencies> @@ -37106,7 +37228,7 @@ <b> <a>1</a> <b>2</b> - <v>848</v> + <v>819</v> </b> </bs> </hist> @@ -37122,7 +37244,7 @@ <b> <a>1</a> <b>2</b> - <v>848</v> + <v>819</v> </b> </bs> </hist> @@ -37132,15 +37254,15 @@ </relation> <relation> <name>link_parent</name> - <cardinality>39286447</cardinality> + <cardinality>38877182</cardinality> <columnsizes> <e> <k>element</k> - <v>4979610</v> + <v>4927618</v> </e> <e> <k>link_target</k> - <v>351</v> + <v>347</v> </e> </columnsizes> <dependencies> @@ -37154,17 +37276,17 @@ <b> <a>1</a> <b>2</b> - <v>671377</v> + <v>664255</v> </b> <b> <a>2</a> <b>9</b> - <v>26129</v> + <v>25852</v> </b> <b> <a>9</a> <b>10</b> - <v>4282103</v> + <v>4237510</v> </b> </bs> </hist> @@ -37180,52 +37302,52 @@ <b> <a>3</a> <b>4</b> - <v>35</v> + <v>34</v> </b> <b> - <a>121946</a> - <b>121947</b> - <v>35</v> + <a>121970</a> + <b>121971</b> + <v>34</v> </b> <b> - <a>122058</a> - <b>122059</b> - <v>35</v> + <a>122082</a> + <b>122083</b> + <v>34</v> </b> <b> - <a>122157</a> - <b>122158</b> - <v>35</v> + <a>122181</a> + <b>122182</b> + <v>34</v> </b> <b> - <a>122188</a> - <b>122189</b> - <v>35</v> + <a>122212</a> + <b>122213</b> + <v>34</v> </b> <b> - <a>122200</a> - <b>122201</b> - <v>35</v> + <a>122224</a> + <b>122225</b> + <v>34</v> </b> <b> - <a>122217</a> - <b>122218</b> - <v>35</v> + <a>122241</a> + <b>122242</b> + <v>34</v> </b> <b> - <a>124217</a> - <b>124218</b> - <v>35</v> + <a>124241</a> + <b>124242</b> + <v>34</v> </b> <b> - <a>128871</a> - <b>128872</b> - <v>35</v> + <a>128895</a> + <b>128896</b> + <v>34</v> </b> <b> - <a>131275</a> - <b>131276</b> - <v>35</v> + <a>131299</a> + <b>131300</b> + <v>34</v> </b> </bs> </hist> diff --git a/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/old.dbscheme b/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/old.dbscheme new file mode 100644 index 000000000000..298438feb146 --- /dev/null +++ b/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/old.dbscheme @@ -0,0 +1,2244 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..aa7ff0ab32cd --- /dev/null +++ b/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/semmlecode.cpp.dbscheme @@ -0,0 +1,2250 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/upgrade.properties b/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/upgrade.properties new file mode 100644 index 000000000000..f300f2c17719 --- /dev/null +++ b/cpp/ql/lib/upgrades/298438feb146335af824002589cd6d4e96e5dbf9/upgrade.properties @@ -0,0 +1,2 @@ +description: Introduce re-use expressions +compatibility: backwards From 560b355e0c2496929a0f26bbf5cdeb4b95cb7452 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Wed, 13 Mar 2024 14:26:30 +0100 Subject: [PATCH 166/731] C#: Remove hard-coded local sources from the uncontrolled-format-string query. --- .../src/Security Features/CWE-134/UncontrolledFormatString.ql | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql index 657fdd0e183e..7eec0bb90c6b 100644 --- a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql +++ b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql @@ -17,9 +17,7 @@ import semmle.code.csharp.frameworks.Format import FormatString::PathGraph module FormatStringConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source instanceof ThreatModelFlowSource or source instanceof LocalFlowSource - } + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } predicate isSink(DataFlow::Node sink) { sink.asExpr() = any(FormatCall call | call.hasInsertions()).getFormatExpr() From e4a4c1816632a2dc1e5b99054076470d90b48464 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Mon, 11 Mar 2024 09:21:33 +0100 Subject: [PATCH 167/731] Go: Implement new data flow interface --- go/ql/lib/semmle/go/DiagnosticsReporting.qll | 3 +- go/ql/lib/semmle/go/Files.qll | 2 - go/ql/lib/semmle/go/HTML.qll | 8 - go/ql/lib/semmle/go/Locations.qll | 21 ++- go/ql/lib/semmle/go/dataflow/DataFlow.qll | 2 +- .../lib/semmle/go/dataflow/TaintTracking.qll | 3 +- .../go/dataflow/internal/DataFlowImpl.qll | 3 +- .../dataflow/internal/DataFlowImplCommon.qll | 3 +- .../internal/DataFlowImplConsistency.qll | 5 +- .../internal/DataFlowImplSpecific.qll | 3 +- .../go/dataflow/internal/DataFlowNodes.qll | 8 + .../go/dataflow/internal/DataFlowPrivate.qll | 2 - .../go/dataflow/internal/FlowSummaryImpl.qll | 8 +- .../internal/TaintTrackingImplSpecific.qll | 3 +- go/ql/lib/semmle/go/internal/Locations.qll | 143 ++++++++++++++++++ .../Security/CWE-338/InsecureRandomness.ql | 2 +- go/ql/test/TestUtilities/InlineFlowTest.qll | 4 +- .../internal/InlineExpectationsTestImpl.qll | 7 +- .../diagnostics/Diagnostics.ql | 8 +- 19 files changed, 200 insertions(+), 38 deletions(-) create mode 100644 go/ql/lib/semmle/go/internal/Locations.qll diff --git a/go/ql/lib/semmle/go/DiagnosticsReporting.qll b/go/ql/lib/semmle/go/DiagnosticsReporting.qll index 653e3ad7c5e2..e05fe0e7a58a 100644 --- a/go/ql/lib/semmle/go/DiagnosticsReporting.qll +++ b/go/ql/lib/semmle/go/DiagnosticsReporting.qll @@ -1,6 +1,7 @@ /** Provides classes for working with errors and warnings recorded during extraction. */ import go +private import semmle.go.internal.Locations /** Gets the SARIF severity level that indicates an error. */ private int getErrorSeverity() { result = 2 } @@ -29,7 +30,7 @@ private class Diagnostic extends @diagnostic { * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { - exists(Location l | diagnostics(this, _, _, _, _, l) | l.hasLocationInfo(path, sl, sc, el, ec)) + getDiagnosticLocation(this).hasLocationInfo(path, sl, sc, el, ec) } string toString() { result = this.getMessage() } diff --git a/go/ql/lib/semmle/go/Files.qll b/go/ql/lib/semmle/go/Files.qll index 87e3fd3169d1..cda168482ca9 100644 --- a/go/ql/lib/semmle/go/Files.qll +++ b/go/ql/lib/semmle/go/Files.qll @@ -50,8 +50,6 @@ class Folder extends Container, Impl::Folder { class ExtractedOrExternalFile extends Container, Impl::File, Documentable, ExprParent, GoModExprParent, DeclParent, ScopeNode { - override Location getLocation() { has_location(this, result) } - /** Gets the number of lines in this file. */ int getNumberOfLines() { numlines(this, result, _, _) } diff --git a/go/ql/lib/semmle/go/HTML.qll b/go/ql/lib/semmle/go/HTML.qll index c68155fd01c9..2f0e411a88d8 100644 --- a/go/ql/lib/semmle/go/HTML.qll +++ b/go/ql/lib/semmle/go/HTML.qll @@ -15,8 +15,6 @@ module HTML { class Element extends Locatable, @xmlelement { Element() { exists(HtmlFile f | xmlElements(this, _, _, _, f)) } - override Location getLocation() { xmllocations(this, result) } - /** * Gets the name of this HTML element. * @@ -97,8 +95,6 @@ module HTML { class Attribute extends Locatable, @xmlattribute { Attribute() { xmlAttrs(this, _, _, _, _, any(HtmlFile f)) } - override Location getLocation() { xmllocations(this, result) } - /** * Gets the element to which this attribute belongs. */ @@ -180,8 +176,6 @@ module HTML { * Holds if this text node is inside a `CDATA` tag. */ predicate isCData() { xmlChars(this, _, _, _, 1, _) } - - override Location getLocation() { xmllocations(this, result) } } /** @@ -203,7 +197,5 @@ module HTML { string getText() { result = this.toString().regexpCapture("(?s)<!--(.*)-->", 1) } override string toString() { xmlComments(this, result, _, _) } - - override Location getLocation() { xmllocations(this, result) } } } diff --git a/go/ql/lib/semmle/go/Locations.qll b/go/ql/lib/semmle/go/Locations.qll index acd5f94430b6..d5ab0858f213 100644 --- a/go/ql/lib/semmle/go/Locations.qll +++ b/go/ql/lib/semmle/go/Locations.qll @@ -1,28 +1,31 @@ /** Provides classes for working with locations and program elements that have locations. */ import go +private import internal.Locations /** * A location as given by a file, a start line, a start column, * an end line, and an end column. * + * This class is restricted to locations created by the extractor. + * * For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ -class Location extends @location { +class DbLocation extends TDbLocation { /** Gets the file for this location. */ - File getFile() { locations_default(this, result, _, _, _, _) } + File getFile() { dbLocationInfo(this, result, _, _, _, _) } /** Gets the 1-based line number (inclusive) where this location starts. */ - int getStartLine() { locations_default(this, _, result, _, _, _) } + int getStartLine() { dbLocationInfo(this, _, result, _, _, _) } /** Gets the 1-based column number (inclusive) where this location starts. */ - int getStartColumn() { locations_default(this, _, _, result, _, _) } + int getStartColumn() { dbLocationInfo(this, _, _, result, _, _) } /** Gets the 1-based line number (inclusive) where this location ends. */ - int getEndLine() { locations_default(this, _, _, _, result, _) } + int getEndLine() { dbLocationInfo(this, _, _, _, result, _) } /** Gets the 1-based column number (inclusive) where this location ends. */ - int getEndColumn() { locations_default(this, _, _, _, _, result) } + int getEndColumn() { dbLocationInfo(this, _, _, _, _, result) } /** Gets the number of lines covered by this location. */ int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } @@ -46,19 +49,21 @@ class Location extends @location { string filepath, int startline, int startcolumn, int endline, int endcolumn ) { exists(File f | - locations_default(this, f, startline, startcolumn, endline, endcolumn) and + dbLocationInfo(this, f, startline, startcolumn, endline, endcolumn) and filepath = f.getAbsolutePath() ) } } +final class Location = LocationImpl; + /** A program element with a location. */ class Locatable extends @locatable { /** Gets the file this program element comes from. */ File getFile() { result = this.getLocation().getFile() } /** Gets this element's location. */ - Location getLocation() { has_location(this, result) } + final DbLocation getLocation() { result = getLocatableLocation(this) } /** Gets the number of lines covered by this element. */ int getNumLines() { result = this.getLocation().getNumLines() } diff --git a/go/ql/lib/semmle/go/dataflow/DataFlow.qll b/go/ql/lib/semmle/go/dataflow/DataFlow.qll index 4a5290255a4d..9363bc93abda 100644 --- a/go/ql/lib/semmle/go/dataflow/DataFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/DataFlow.qll @@ -24,7 +24,7 @@ import go module DataFlow { private import semmle.go.dataflow.internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake<GoDataFlow> + import DataFlowMake<Location, GoDataFlow> import semmle.go.dataflow.internal.DataFlowImpl1 import Properties } diff --git a/go/ql/lib/semmle/go/dataflow/TaintTracking.qll b/go/ql/lib/semmle/go/dataflow/TaintTracking.qll index 2c028a0e34a8..d762e925ab57 100644 --- a/go/ql/lib/semmle/go/dataflow/TaintTracking.qll +++ b/go/ql/lib/semmle/go/dataflow/TaintTracking.qll @@ -13,7 +13,8 @@ module TaintTracking { import semmle.go.dataflow.internal.tainttracking1.TaintTrackingParameter::Public private import semmle.go.dataflow.internal.DataFlowImplSpecific private import semmle.go.dataflow.internal.TaintTrackingImplSpecific + private import semmle.go.Locations private import codeql.dataflow.TaintTracking - import TaintFlowMake<GoDataFlow, GoTaintTracking> + import TaintFlowMake<Location, GoDataFlow, GoTaintTracking> import semmle.go.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll index b95eab3eb018..c9761d217024 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImpl.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl<GoDataFlow> +private import semmle.go.Locations +import MakeImpl<Location, GoDataFlow> diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll index 8f8f7b0a36c5..6df86bde023d 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon<GoDataFlow> +private import semmle.go.Locations +import MakeImplCommon<Location, GoDataFlow> diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll index 6397b79716b0..58b849858416 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll @@ -7,7 +7,8 @@ private import go private import DataFlowImplSpecific private import TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency +private import semmle.go.dataflow.internal.DataFlowNodes -private module Input implements InputSig<GoDataFlow> { } +private module Input implements InputSig<Location, GoDataFlow> { } -module Consistency = MakeConsistency<GoDataFlow, GoTaintTracking, Input>; +module Consistency = MakeConsistency<Location, GoDataFlow, GoTaintTracking, Input>; diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll index 555b09660e8b..c680778ce4d2 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplSpecific.qll @@ -3,6 +3,7 @@ */ private import codeql.dataflow.DataFlow +private import semmle.go.Locations module Private { import DataFlowPrivate @@ -13,7 +14,7 @@ module Public { import DataFlowUtil } -module GoDataFlow implements InputSig { +module GoDataFlow implements InputSig<Location> { import Private import Public diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll index 9034e454278a..6b230bc728f8 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -157,6 +157,14 @@ module Public { endcolumn = 0 } + /** Gets the location of this node. */ + Location getLocation() { + exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | + this.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + result.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + ) + } + /** Gets the file in which this node appears. */ File getFile() { this.hasLocationInfo(result.getAbsolutePath(), _, _, _, _) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll index e17f4cd9cd23..f750214010f3 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -251,8 +251,6 @@ class DataFlowType extends TDataFlowType { string toString() { result = "" } } -class DataFlowLocation = Location; - private newtype TDataFlowCallable = TCallable(Callable c) or TFileScope(File f) or diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index cbf33afff251..fb09daa48ff5 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -15,7 +15,7 @@ private module FlowSummaries { private import semmle.go.dataflow.FlowSummary as F } -module Input implements InputSig<DataFlowImplSpecific::GoDataFlow> { +module Input implements InputSig<Location, DataFlowImplSpecific::GoDataFlow> { class SummarizedCallableBase = Callable; ArgumentPosition callbackSelfParameterPosition() { result = -1 } @@ -83,7 +83,7 @@ module Input implements InputSig<DataFlowImplSpecific::GoDataFlow> { } } -private import Make<DataFlowImplSpecific::GoDataFlow, Input> as Impl +private import Make<Location, DataFlowImplSpecific::GoDataFlow, Input> as Impl private module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { @@ -95,7 +95,7 @@ private module StepsInput implements Impl::Private::StepsInputSig { } module SourceSinkInterpretationInput implements - Impl::Private::External::SourceSinkInterpretationInputSig<Location> + Impl::Private::External::SourceSinkInterpretationInputSig { class Element = SourceOrSinkElement; @@ -264,7 +264,7 @@ module Private { module External { import Impl::Private::External - import Impl::Private::External::SourceSinkInterpretation<Location, SourceSinkInterpretationInput> + import Impl::Private::External::SourceSinkInterpretation<SourceSinkInterpretationInput> } /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingImplSpecific.qll b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingImplSpecific.qll index f52499df2321..b9795bb14d31 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/TaintTrackingImplSpecific.qll @@ -4,7 +4,8 @@ private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific +private import semmle.go.Locations -module GoTaintTracking implements InputSig<GoDataFlow> { +module GoTaintTracking implements InputSig<Location, GoDataFlow> { import TaintTrackingUtil } diff --git a/go/ql/lib/semmle/go/internal/Locations.qll b/go/ql/lib/semmle/go/internal/Locations.qll new file mode 100644 index 000000000000..498ac9d11702 --- /dev/null +++ b/go/ql/lib/semmle/go/internal/Locations.qll @@ -0,0 +1,143 @@ +/** Provides classes for working with locations and program elements that have locations. */ + +import go + +// Should _not_ be cached, as that would require the data flow stage to be evaluated +// in order to evaluate the AST stage. Ideally, we would cache each injector separately, +// but that's not possible. Instead, we cache all predicates that need the injectors +// to be tuple numbered. +newtype TLocation = + TDbLocation(@location loc) or + TSynthLocation(string filepath, int startline, int startcolumn, int endline, int endcolumn) { + any(DataFlow::Node n).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + // avoid overlap with existing DB locations + not exists(File f | + locations_default(_, f, startline, startcolumn, endline, endcolumn) and + f.getAbsolutePath() = filepath + ) + } + +/** + * A location as given by a file, a start line, a start column, + * an end line, and an end column. + * + * For more information about locations see [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +abstract class LocationImpl extends TLocation { + /** Gets the file for this location. */ + abstract File getFile(); + + /** Gets the 1-based line number (inclusive) where this location starts. */ + abstract int getStartLine(); + + /** Gets the 1-based column number (inclusive) where this location starts. */ + abstract int getStartColumn(); + + /** Gets the 1-based line number (inclusive) where this location ends. */ + abstract int getEndLine(); + + /** Gets the 1-based column number (inclusive) where this location ends. */ + abstract int getEndColumn(); + + /** Gets the number of lines covered by this location. */ + int getNumLines() { result = this.getEndLine() - this.getStartLine() + 1 } + + /** Gets a textual representation of this element. */ + string toString() { + exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | + this.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + result = filepath + "@" + startline + ":" + startcolumn + ":" + endline + ":" + endcolumn + ) + } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + abstract predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ); +} + +class DbLocationImpl extends LocationImpl instanceof DbLocation { + private @location loc; + + DbLocationImpl() { this = TDbLocation(loc) } + + override File getFile() { result = DbLocation.super.getFile() } + + override int getStartLine() { result = DbLocation.super.getStartLine() } + + override int getStartColumn() { result = DbLocation.super.getStartColumn() } + + override int getEndLine() { result = DbLocation.super.getEndLine() } + + override int getEndColumn() { result = DbLocation.super.getEndColumn() } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + DbLocation.super.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } +} + +class SynthLocationImpl extends LocationImpl, TSynthLocation { + override File getFile() { synthLocationInfo(this, result.getAbsolutePath(), _, _, _, _) } + + override int getStartLine() { synthLocationInfo(this, _, result, _, _, _) } + + override int getStartColumn() { synthLocationInfo(this, _, _, result, _, _) } + + override int getEndLine() { synthLocationInfo(this, _, _, _, result, _) } + + override int getEndColumn() { synthLocationInfo(this, _, _, _, _, result) } + + override predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + synthLocationInfo(this, filepath, startline, startcolumn, endline, endcolumn) + } +} + +cached +private module Cached { + cached + DbLocation getLocatableLocation(@locatable l) { + exists(@location loc | + has_location(l, loc) or + xmllocations(l, loc) + | + result = TDbLocation(loc) + ) + } + + cached + DbLocation getDiagnosticLocation(@diagnostic d) { + exists(@location loc | + diagnostics(d, _, _, _, _, loc) and + result = TDbLocation(loc) + ) + } + + cached + predicate dbLocationInfo( + DbLocation l, File f, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(@location loc | + l = TDbLocation(loc) and + locations_default(loc, f, startline, startcolumn, endline, endcolumn) + ) + } +} + +import Cached + +cached +private predicate synthLocationInfo( + SynthLocationImpl l, string filepath, int startline, int startcolumn, int endline, int endcolumn +) { + l = TSynthLocation(filepath, startline, startcolumn, endline, endcolumn) +} diff --git a/go/ql/src/Security/CWE-338/InsecureRandomness.ql b/go/ql/src/Security/CWE-338/InsecureRandomness.ql index cc6bc42be710..a66641cf1cef 100644 --- a/go/ql/src/Security/CWE-338/InsecureRandomness.ql +++ b/go/ql/src/Security/CWE-338/InsecureRandomness.ql @@ -25,7 +25,7 @@ where min(InsecureRandomness::Flow::PathNode sink2, int line | InsecureRandomness::Flow::flowPath(_, sink2) and sink2.getNode().getRoot() = sink.getNode().getRoot() and - sink2.hasLocationInfo(_, line, _, _, _) + line = sink2.getLocation().getStartLine() | sink2 order by line ) diff --git a/go/ql/test/TestUtilities/InlineFlowTest.qll b/go/ql/test/TestUtilities/InlineFlowTest.qll index 3ec43911b76e..b761fed993ee 100644 --- a/go/ql/test/TestUtilities/InlineFlowTest.qll +++ b/go/ql/test/TestUtilities/InlineFlowTest.qll @@ -9,7 +9,7 @@ private import semmle.go.dataflow.internal.DataFlowImplSpecific private import semmle.go.dataflow.internal.TaintTrackingImplSpecific private import internal.InlineExpectationsTestImpl -private module FlowTestImpl implements InputSig<GoDataFlow> { +private module FlowTestImpl implements InputSig<Location, GoDataFlow> { predicate defaultSource(DataFlow::Node source) { exists(Function fn | fn.hasQualifiedName(_, ["source", "taint"]) | source = fn.getACall().getResult() @@ -26,4 +26,4 @@ private module FlowTestImpl implements InputSig<GoDataFlow> { } } -import InlineFlowTestMake<GoDataFlow, GoTaintTracking, Impl, FlowTestImpl> +import InlineFlowTestMake<Location, GoDataFlow, GoTaintTracking, Impl, FlowTestImpl> diff --git a/go/ql/test/TestUtilities/internal/InlineExpectationsTestImpl.qll b/go/ql/test/TestUtilities/internal/InlineExpectationsTestImpl.qll index a544aed8fee7..1d1854407722 100644 --- a/go/ql/test/TestUtilities/internal/InlineExpectationsTestImpl.qll +++ b/go/ql/test/TestUtilities/internal/InlineExpectationsTestImpl.qll @@ -2,13 +2,18 @@ private import go as G private import codeql.util.test.InlineExpectationsTest module Impl implements InlineExpectationsTestSig { + final private class CommentFinal = G::Comment; + /** * A class representing line comments in the Go style, including the * preceding comment marker (`//`). */ - class ExpectationComment extends G::Comment { + class ExpectationComment extends CommentFinal { /** Returns the contents of the given comment, _without_ the preceding comment marker (`//`). */ string getContents() { result = this.getText() } + + /** Gets this element's location. */ + G::Location getLocation() { result = super.getLocation() } } class Location = G::Location; diff --git a/go/ql/test/extractor-tests/diagnostics/Diagnostics.ql b/go/ql/test/extractor-tests/diagnostics/Diagnostics.ql index ed6d8ac043de..324709175e5c 100644 --- a/go/ql/test/extractor-tests/diagnostics/Diagnostics.ql +++ b/go/ql/test/extractor-tests/diagnostics/Diagnostics.ql @@ -1,4 +1,5 @@ import go +private import semmle.go.internal.Locations bindingset[path] string baseName(string path) { result = path.regexpCapture(".*(/|\\\\)([^/\\\\]+)(/|\\\\)?$", 2) } @@ -30,7 +31,12 @@ class Diagnostic extends @diagnostic { diagnostic_for(this, c, fileNum, idx) } - Location getLocation() { diagnostics(this, _, _, _, _, result) } + DbLocation getLocation() { + exists(@location loc | + diagnostics(this, _, _, _, _, loc) and + result = TDbLocation(loc) + ) + } // string getTag() { // diagnostics(this, _, result, _, _, _) From 02ae2d15207df8d6c977f0791d1c4fd14bf487df Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Mon, 11 Mar 2024 13:19:21 +0100 Subject: [PATCH 168/731] Java: Implement new data flow interface --- java/ql/lib/semmle/code/java/dataflow/DataFlow.qll | 2 +- java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll | 2 +- .../semmle/code/java/dataflow/internal/DataFlowImpl.qll | 3 ++- .../code/java/dataflow/internal/DataFlowImplCommon.qll | 3 ++- .../java/dataflow/internal/DataFlowImplConsistency.qll | 4 ++-- .../code/java/dataflow/internal/DataFlowImplSpecific.qll | 3 ++- .../semmle/code/java/dataflow/internal/DataFlowNodes.qll | 2 +- .../code/java/dataflow/internal/FlowSummaryImpl.qll | 8 ++++---- .../java/dataflow/internal/TaintTrackingImplSpecific.qll | 3 ++- java/ql/test-kotlin1/TestUtilities/InlineFlowTest.qll | 4 ++-- java/ql/test/TestUtilities/InlineFlowTest.qll | 4 ++-- 11 files changed, 21 insertions(+), 17 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll b/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll index 0f87cb7010c9..66a7a847c336 100644 --- a/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/DataFlow.qll @@ -8,6 +8,6 @@ import java module DataFlow { private import semmle.code.java.dataflow.internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake<JavaDataFlow> + import DataFlowMake<Location, JavaDataFlow> import semmle.code.java.dataflow.internal.DataFlowImpl1 } diff --git a/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll b/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll index ad7b88381a8a..ed13837a312b 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TaintTracking.qll @@ -12,6 +12,6 @@ module TaintTracking { private import semmle.code.java.dataflow.internal.DataFlowImplSpecific private import semmle.code.java.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake<JavaDataFlow, JavaTaintTracking> + import TaintFlowMake<Location, JavaDataFlow, JavaTaintTracking> import semmle.code.java.dataflow.internal.tainttracking1.TaintTrackingImpl } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll index 30746706e311..689e58daab89 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImpl.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl<JavaDataFlow> +private import semmle.code.Location +import MakeImpl<Location, JavaDataFlow> diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll index 2118572f7797..00f388dfdf3a 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplCommon.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific +private import semmle.code.Location private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon<JavaDataFlow> +import MakeImplCommon<Location, JavaDataFlow> diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll index 1dfa24fffac4..0272af417ace 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplConsistency.qll @@ -8,10 +8,10 @@ private import DataFlowImplSpecific private import TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency -private module Input implements InputSig<JavaDataFlow> { +private module Input implements InputSig<Location, JavaDataFlow> { predicate argHasPostUpdateExclude(JavaDataFlow::ArgumentNode n) { n.getType() instanceof ImmutableType or n instanceof Public::ImplicitVarargsArray } } -module Consistency = MakeConsistency<JavaDataFlow, JavaTaintTracking, Input>; +module Consistency = MakeConsistency<Location, JavaDataFlow, JavaTaintTracking, Input>; diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll index e269b56e3aa4..84cdf19ed518 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowImplSpecific.qll @@ -2,6 +2,7 @@ * Provides Java-specific definitions for use in the data flow library. */ +private import semmle.code.Location private import codeql.dataflow.DataFlow module Private { @@ -13,7 +14,7 @@ module Public { import DataFlowUtil } -module JavaDataFlow implements InputSig { +module JavaDataFlow implements InputSig<Location> { import Private import Public diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll index 8bcbf0635a35..bf867d21d3cc 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll @@ -163,7 +163,7 @@ module Public { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index d5364567d88d..0960497dd8c7 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -26,7 +26,7 @@ private string positionToString(int pos) { if pos = -1 then result = "this" else result = pos.toString() } -module Input implements InputSig<DataFlowImplSpecific::JavaDataFlow> { +module Input implements InputSig<Location, DataFlowImplSpecific::JavaDataFlow> { class SummarizedCallableBase = FlowSummary::SummarizedCallableBase; ArgumentPosition callbackSelfParameterPosition() { result = -1 } @@ -85,7 +85,7 @@ module Input implements InputSig<DataFlowImplSpecific::JavaDataFlow> { } } -private import Make<DataFlowImplSpecific::JavaDataFlow, Input> as Impl +private import Make<Location, DataFlowImplSpecific::JavaDataFlow, Input> as Impl private module TypesInput implements Impl::Private::TypesInputSig { DataFlowType getSyntheticGlobalType(Impl::Private::SyntheticGlobal sg) { @@ -186,7 +186,7 @@ private predicate correspondingKotlinParameterDefaultsArgSpec( } module SourceSinkInterpretationInput implements - Impl::Private::External::SourceSinkInterpretationInputSig<Location> + Impl::Private::External::SourceSinkInterpretationInputSig { private import java as J @@ -294,7 +294,7 @@ module Private { module External { import Impl::Private::External - import Impl::Private::External::SourceSinkInterpretation<Location, SourceSinkInterpretationInput> + import Impl::Private::External::SourceSinkInterpretation<SourceSinkInterpretationInput> /** * Holds if an external flow summary exists for `c` with input specification diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll index ba30b102a208..0f756200abeb 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/TaintTrackingImplSpecific.qll @@ -4,7 +4,8 @@ private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific +private import semmle.code.Location -module JavaTaintTracking implements InputSig<JavaDataFlow> { +module JavaTaintTracking implements InputSig<Location, JavaDataFlow> { import TaintTrackingUtil } diff --git a/java/ql/test-kotlin1/TestUtilities/InlineFlowTest.qll b/java/ql/test-kotlin1/TestUtilities/InlineFlowTest.qll index d815f3026380..500e47836145 100644 --- a/java/ql/test-kotlin1/TestUtilities/InlineFlowTest.qll +++ b/java/ql/test-kotlin1/TestUtilities/InlineFlowTest.qll @@ -10,7 +10,7 @@ private import semmle.code.java.dataflow.internal.DataFlowImplSpecific private import semmle.code.java.dataflow.internal.TaintTrackingImplSpecific private import internal.InlineExpectationsTestImpl -private module FlowTestImpl implements InputSig<JavaDataFlow> { +private module FlowTestImpl implements InputSig<Location, JavaDataFlow> { predicate defaultSource(DataFlow::Node source) { source.asExpr().(MethodCall).getMethod().getName() = ["source", "taint"] } @@ -30,4 +30,4 @@ private module FlowTestImpl implements InputSig<JavaDataFlow> { } } -import InlineFlowTestMake<JavaDataFlow, JavaTaintTracking, Impl, FlowTestImpl> +import InlineFlowTestMake<Location, JavaDataFlow, JavaTaintTracking, Impl, FlowTestImpl> diff --git a/java/ql/test/TestUtilities/InlineFlowTest.qll b/java/ql/test/TestUtilities/InlineFlowTest.qll index d815f3026380..500e47836145 100644 --- a/java/ql/test/TestUtilities/InlineFlowTest.qll +++ b/java/ql/test/TestUtilities/InlineFlowTest.qll @@ -10,7 +10,7 @@ private import semmle.code.java.dataflow.internal.DataFlowImplSpecific private import semmle.code.java.dataflow.internal.TaintTrackingImplSpecific private import internal.InlineExpectationsTestImpl -private module FlowTestImpl implements InputSig<JavaDataFlow> { +private module FlowTestImpl implements InputSig<Location, JavaDataFlow> { predicate defaultSource(DataFlow::Node source) { source.asExpr().(MethodCall).getMethod().getName() = ["source", "taint"] } @@ -30,4 +30,4 @@ private module FlowTestImpl implements InputSig<JavaDataFlow> { } } -import InlineFlowTestMake<JavaDataFlow, JavaTaintTracking, Impl, FlowTestImpl> +import InlineFlowTestMake<Location, JavaDataFlow, JavaTaintTracking, Impl, FlowTestImpl> From 6c0ed28e6b6485e6201fdd39013679dc230fefe0 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Mon, 11 Mar 2024 13:26:01 +0100 Subject: [PATCH 169/731] Python: Implement new data flow interface --- python/ql/consistency-queries/DataFlowConsistency.ql | 8 ++++++-- python/ql/lib/semmle/python/ApiGraphs.qll | 5 ++++- python/ql/lib/semmle/python/dataflow/new/DataFlow.qll | 2 +- .../ql/lib/semmle/python/dataflow/new/TaintTracking.qll | 2 +- .../python/dataflow/new/internal/DataFlowDispatch.qll | 2 +- .../semmle/python/dataflow/new/internal/DataFlowImpl.qll | 3 ++- .../python/dataflow/new/internal/DataFlowImplCommon.qll | 3 ++- .../python/dataflow/new/internal/DataFlowImplSpecific.qll | 2 +- .../python/dataflow/new/internal/DataFlowPublic.qll | 4 ++-- .../python/dataflow/new/internal/FlowSummaryImpl.qll | 4 ++-- .../dataflow/new/internal/TaintTrackingImplSpecific.qll | 3 ++- python/ql/lib/semmle/python/internal/CachedStages.qll | 2 +- 12 files changed, 25 insertions(+), 15 deletions(-) diff --git a/python/ql/consistency-queries/DataFlowConsistency.ql b/python/ql/consistency-queries/DataFlowConsistency.ql index f0a0d0356ca2..759db3d19a9c 100644 --- a/python/ql/consistency-queries/DataFlowConsistency.ql +++ b/python/ql/consistency-queries/DataFlowConsistency.ql @@ -10,12 +10,16 @@ private import semmle.python.dataflow.new.internal.DataFlowDispatch private import semmle.python.dataflow.new.internal.TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency -private module Input implements InputSig<PythonDataFlow> { +private module Input implements InputSig<Location, PythonDataFlow> { private import Private private import Public predicate postWithInFlowExclude(Node n) { n instanceof FlowSummaryNode } + predicate uniqueNodeLocationExclude(Node n) { n instanceof FlowSummaryNode } + + predicate missingLocationExclude(Node n) { n instanceof FlowSummaryNode } + predicate argHasPostUpdateExclude(ArgumentNode n) { // TODO: Implement post-updates for *args, see tests added in https://github.com/github/codeql/pull/14936 exists(ArgumentPosition apos | n.argumentOf(_, apos) and apos.isStarArgs(_)) @@ -132,4 +136,4 @@ private module Input implements InputSig<PythonDataFlow> { } } -import MakeConsistency<PythonDataFlow, PythonTaintTracking, Input> +import MakeConsistency<Location, PythonDataFlow, PythonTaintTracking, Input> diff --git a/python/ql/lib/semmle/python/ApiGraphs.qll b/python/ql/lib/semmle/python/ApiGraphs.qll index 18202ebb5241..6f27c829e32c 100644 --- a/python/ql/lib/semmle/python/ApiGraphs.qll +++ b/python/ql/lib/semmle/python/ApiGraphs.qll @@ -328,6 +328,9 @@ module API { */ DataFlow::Node getInducingNode() { this = Impl::MkUse(result) or this = Impl::MkDef(result) } + /** Gets the location of this node */ + PY::Location getLocation() { result = this.getInducingNode().getLocation() } + /** * Holds if this element is at the specified location. * The location spans column `startcolumn` of line `startline` to @@ -335,7 +338,7 @@ module API { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { this.getInducingNode().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) diff --git a/python/ql/lib/semmle/python/dataflow/new/DataFlow.qll b/python/ql/lib/semmle/python/dataflow/new/DataFlow.qll index 75725a42a9ea..17cc0a0ee858 100644 --- a/python/ql/lib/semmle/python/dataflow/new/DataFlow.qll +++ b/python/ql/lib/semmle/python/dataflow/new/DataFlow.qll @@ -24,6 +24,6 @@ private import python module DataFlow { private import internal.DataFlowImplSpecific private import codeql.dataflow.DataFlow - import DataFlowMake<PythonDataFlow> + import DataFlowMake<Location, PythonDataFlow> import internal.DataFlowImpl1 } diff --git a/python/ql/lib/semmle/python/dataflow/new/TaintTracking.qll b/python/ql/lib/semmle/python/dataflow/new/TaintTracking.qll index aa80e7c7148d..e085ba45dd00 100644 --- a/python/ql/lib/semmle/python/dataflow/new/TaintTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/new/TaintTracking.qll @@ -19,6 +19,6 @@ module TaintTracking { private import semmle.python.dataflow.new.internal.DataFlowImplSpecific private import semmle.python.dataflow.new.internal.TaintTrackingImplSpecific private import codeql.dataflow.TaintTracking - import TaintFlowMake<PythonDataFlow, PythonTaintTracking> + import TaintFlowMake<Location, PythonDataFlow, PythonTaintTracking> import internal.tainttracking1.TaintTrackingImpl } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index 87a278e0f6bc..5abb5e31edbe 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -1595,7 +1595,7 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { override string toString() { result = this.getSummaryNode().toString() } // Hack to return "empty location" - override predicate hasLocationInfo( + deprecated override predicate hasLocationInfo( string file, int startline, int startcolumn, int endline, int endcolumn ) { file = "" and diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll index 92f0f17ce825..9789857adcb8 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImpl.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImpl -import MakeImpl<PythonDataFlow> +private import semmle.python.Files +import MakeImpl<Location, PythonDataFlow> diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplCommon.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplCommon.qll index 41c9c4ec1be7..cd7c39923307 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplCommon.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplCommon.qll @@ -1,3 +1,4 @@ private import DataFlowImplSpecific private import codeql.dataflow.internal.DataFlowImplCommon -import MakeImplCommon<PythonDataFlow> +private import semmle.python.Files +import MakeImplCommon<Location, PythonDataFlow> diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll index cffdefe41ba2..2d18c789732b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll @@ -15,7 +15,7 @@ module Public { import DataFlowUtil } -module PythonDataFlow implements InputSig { +module PythonDataFlow implements InputSig<Python::Location> { import Private import Public diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll index 73c87992c483..16a9572db6a7 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll @@ -148,6 +148,7 @@ class Node extends TNode { DataFlowCallable getEnclosingCallable() { result = getCallableScope(this.getScope()) } /** Gets the location of this node */ + cached Location getLocation() { none() } /** @@ -157,8 +158,7 @@ class Node extends TNode { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - cached - predicate hasLocationInfo( + deprecated predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { Stages::DataFlow::ref() and diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll index 4a55d38edb6c..5e45a961b5b7 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/FlowSummaryImpl.qll @@ -9,7 +9,7 @@ private import DataFlowImplSpecific as DataFlowImplSpecific private import DataFlowImplSpecific::Private private import DataFlowImplSpecific::Public -module Input implements InputSig<DataFlowImplSpecific::PythonDataFlow> { +module Input implements InputSig<Location, DataFlowImplSpecific::PythonDataFlow> { class SummarizedCallableBase = string; ArgumentPosition callbackSelfParameterPosition() { result.isLambdaSelf() } @@ -83,7 +83,7 @@ module Input implements InputSig<DataFlowImplSpecific::PythonDataFlow> { } } -private import Make<DataFlowImplSpecific::PythonDataFlow, Input> as Impl +private import Make<Location, DataFlowImplSpecific::PythonDataFlow, Input> as Impl private module StepsInput implements Impl::Private::StepsInputSig { DataFlowCall getACall(Public::SummarizedCallable sc) { diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingImplSpecific.qll index 6f65d2343443..798c1d5116f0 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingImplSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TaintTrackingImplSpecific.qll @@ -4,7 +4,8 @@ private import codeql.dataflow.TaintTracking private import DataFlowImplSpecific +private import semmle.python.Files -module PythonTaintTracking implements InputSig<PythonDataFlow> { +module PythonTaintTracking implements InputSig<Location, PythonDataFlow> { import TaintTrackingPrivate } diff --git a/python/ql/lib/semmle/python/internal/CachedStages.qll b/python/ql/lib/semmle/python/internal/CachedStages.qll index da32b4c071e1..687cabeceaed 100644 --- a/python/ql/lib/semmle/python/internal/CachedStages.qll +++ b/python/ql/lib/semmle/python/internal/CachedStages.qll @@ -194,7 +194,7 @@ module Stages { or exists(any(DataFlowPublic::Node node).toString()) or - any(DataFlowPublic::Node node).hasLocationInfo(_, _, _, _, _) + exists(any(DataFlowPublic::Node node).getLocation()) or DataFlowDispatch::resolveCall(_, _, _) or From 533b63743b2b538f257d975851c5fca0bcfb49e7 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen <yoff@github.com> Date: Wed, 13 Mar 2024 15:28:34 +0100 Subject: [PATCH 170/731] Python: test MaD syntax for keyword argument use the combined positional/keyword syntax as that is what we will probably mostly use. --- .../dataflow/model-summaries/NormalDataflowTest.ext.yml | 2 +- .../experimental/dataflow/model-summaries/model_summaries.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml b/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml index e3a7e059401e..b3898193f59c 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml +++ b/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/python-all extensible: summaryModel data: - - ["foo", "Member[MS_identity]", "Argument[0]", "ReturnValue", "value"] + - ["foo", "Member[MS_identity]", "Argument[0,x:]", "ReturnValue", "value"] - ["foo", "Member[MS_apply_lambda]", "Argument[1]", "Argument[0].Parameter[0]", "value"] - ["foo", "Member[MS_apply_lambda]", "Argument[0].ReturnValue", "ReturnValue", "value"] - ["foo", "Member[MS_reversed]", "Argument[0].ListElement", "ReturnValue.ListElement", "value"] diff --git a/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py b/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py index c8c5ac0a8882..071d1ae6aa4b 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py +++ b/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py @@ -36,6 +36,10 @@ def SINK_F(x): via_identity = MS_identity(SOURCE) SINK(via_identity) # $ flow="SOURCE, l:-1 -> via_identity" +# Simple summary keyword +via_identity_kw = MS_identity(x = SOURCE) +SINK(via_identity_kw) # $ flow="SOURCE, l:-1 -> via_identity_kw" + # Lambda summary via_lambda = MS_apply_lambda(lambda x: [x], SOURCE) SINK(via_lambda[0]) # $ flow="SOURCE, l:-1 -> via_lambda[0]" From 039bea1625b4c05e6b0bb91305e3041855a5fa78 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:59:38 +0100 Subject: [PATCH 171/731] Java: Add more neutral JDK models This is similar to https://github.com/github/codeql/pull/15766, in the sense that it adds neutral models to prevent the model generator from generating summaries for them. These models were spotted while evaluating https://github.com/github/codeql/pull/14919. --- java/ql/lib/ext/java.beans.model.yml | 9 +++++++++ java/ql/lib/ext/java.io.model.yml | 3 +++ java/ql/lib/ext/java.net.model.yml | 7 +++++++ java/ql/lib/ext/java.util.logging.yml | 8 ++++++++ java/ql/lib/ext/java.util.model.yml | 4 ++++ java/ql/lib/ext/java.util.prefs.model.yml | 2 ++ java/ql/lib/ext/java.util.regex.model.yml | 5 +++++ java/ql/lib/ext/javax.crypto.model.yml | 2 ++ java/ql/lib/ext/javax.crypto.spec.model.yml | 5 +++++ 9 files changed, 45 insertions(+) create mode 100644 java/ql/lib/ext/java.util.logging.yml diff --git a/java/ql/lib/ext/java.beans.model.yml b/java/ql/lib/ext/java.beans.model.yml index b9d06ea56947..53e8522643a1 100644 --- a/java/ql/lib/ext/java.beans.model.yml +++ b/java/ql/lib/ext/java.beans.model.yml @@ -4,3 +4,12 @@ extensions: extensible: summaryModel data: - ["java.beans", "XMLDecoder", False, "XMLDecoder", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + # summary neutrals + - ["java.beans", "PropertyEditor", "getAsText", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.beans", "PropertyEditor", "getValue", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.beans", "PropertyEditor", "setAsText", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.beans", "PropertyEditor", "setValue", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index ef0f4dbb0a6f..bcf0494da8fd 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -116,9 +116,12 @@ extensions: - ["java.io", "File", "isFile", "()", "summary", "manual"] - ["java.io", "File", "length", "()", "summary", "manual"] - ["java.io", "File", "isDirectory", "()", "summary", "manual"] + - ["java.io", "File", "listFiles", "", "summary", "manual"] - ["java.io", "File", "mkdirs", "()", "summary", "manual"] - ["java.io", "FileInputStream", "FileInputStream", "(File)", "summary", "manual"] + - ["java.io", "FileInputStream", "FileInputStream", "(String)", "summary", "manual"] - ["java.io", "InputStream", "close", "()", "summary", "manual"] + - ["java.io", "ObjectInput", "readObject", "()", "summary", "manual"] - ["java.io", "OutputStream", "flush", "()", "summary", "manual"] # The below APIs have numeric flow and are currently being stored as neutral models. # These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future. diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index afdf3320b088..5eb501d19d97 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -61,3 +61,10 @@ extensions: - ["java.net", "URL", False, "toURI", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.net", "URL", False, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.net", "URLDecoder", False, "decode", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + # summary neutrals + - ["java.net", "Socket", "getOutputStream", "()", "summary", "manual"] + - ["java.net", "Socket", "connect", "(SocketAddress,int)", "summary", "manual"] diff --git a/java/ql/lib/ext/java.util.logging.yml b/java/ql/lib/ext/java.util.logging.yml new file mode 100644 index 000000000000..d2620776d9ab --- /dev/null +++ b/java/ql/lib/ext/java.util.logging.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + # summary neutrals + - ["java.util.logging", "LogRecord", "getResourceBundle", "()", "summary", "manual"] + - ["java.util.logging", "LogRecord", "setParameters", "", "summary", "manual"] diff --git a/java/ql/lib/ext/java.util.model.yml b/java/ql/lib/ext/java.util.model.yml index bd6e58918aa1..87675d49f96d 100644 --- a/java/ql/lib/ext/java.util.model.yml +++ b/java/ql/lib/ext/java.util.model.yml @@ -107,6 +107,8 @@ extensions: - ["java.util", "Collections", False, "unmodifiableSortedMap", "(SortedMap)", "", "Argument[0].MapKey", "ReturnValue.MapKey", "value", "manual"] - ["java.util", "Collections", False, "unmodifiableSortedMap", "(SortedMap)", "", "Argument[0].MapValue", "ReturnValue.MapValue", "value", "manual"] - ["java.util", "Collections", False, "unmodifiableSortedSet", "(SortedSet)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["java.util", "ConcurrentHashMap", False, "ConcurrentHashMap", "(Map)", "", "Argument[0].MapKey", "Argument[this].MapKey", "value", "manual"] + - ["java.util", "ConcurrentHashMap", False, "ConcurrentHashMap", "(Map)", "", "Argument[0].MapValue", "Argument[this].MapValue", "value", "manual"] - ["java.util", "Deque", True, "addFirst", "(Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["java.util", "Deque", True, "addLast", "(Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["java.util", "Deque", True, "descendingIterator", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] @@ -428,6 +430,7 @@ extensions: - ["java.util", "Collections", "emptySet", "()", "summary", "manual"] - ["java.util", "Collections", "sort", "", "summary", "manual"] - ["java.util", "Enumeration", "hasMoreElements", "()", "summary", "manual"] + - ["java.util", "EnumSet", "copyOf", "(EnumSet)", "summary", "manual"] - ["java.util", "HashMap", "containsKey", "(Object)", "summary", "manual"] - ["java.util", "HashMap", "HashMap", "(int)", "summary", "manual"] - ["java.util", "HashMap", "size", "()", "summary", "manual"] @@ -454,6 +457,7 @@ extensions: - ["java.util", "Optional", "isEmpty", "()", "summary", "manual"] - ["java.util", "Optional", "isPresent", "()", "summary", "manual"] - ["java.util", "Random", "nextInt", "(int)", "summary", "manual"] + - ["java.util", "ResourceBundle", "getBundle", "", "summary", "manual"] - ["java.util", "Set", "contains", "(Object)", "summary", "manual"] - ["java.util", "Set", "isEmpty", "()", "summary", "manual"] - ["java.util", "Set", "size", "()", "summary", "manual"] diff --git a/java/ql/lib/ext/java.util.prefs.model.yml b/java/ql/lib/ext/java.util.prefs.model.yml index a2a7c16bc5d0..cb299746343a 100644 --- a/java/ql/lib/ext/java.util.prefs.model.yml +++ b/java/ql/lib/ext/java.util.prefs.model.yml @@ -3,6 +3,8 @@ extensions: pack: codeql/java-all extensible: neutralModel data: + # summary neutrals + - ["java.util.prefs", "Preferences", "get", "(String,String)", "summary", "manual"] # sink neutrals - ["java.util.prefs", "AbstractPreferences", "nodeExists", "", "sink", "hq-manual"] - ["java.util.prefs", "Preferences", "nodeExists", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.util.regex.model.yml b/java/ql/lib/ext/java.util.regex.model.yml index 0a71a96b5f90..02519c64af1c 100644 --- a/java/ql/lib/ext/java.util.regex.model.yml +++ b/java/ql/lib/ext/java.util.regex.model.yml @@ -30,4 +30,9 @@ extensions: pack: codeql/java-all extensible: neutralModel data: + - ["java.util.regex", "Matcher", "appendReplacement", "(StringBuffer,String)", "summary", "manual"] + - ["java.util.regex", "Matcher", "appendTail", "(StringBuffer)", "summary", "manual"] - ["java.util.regex", "Matcher", "find", "()", "summary", "manual"] + - ["java.util.regex", "Matcher", "pattern", "()", "summary", "manual"] + - ["java.util.regex", "Pattern", "compile", "(String,int)", "summary", "manual"] + - ["java.util.regex", "Pattern", "pattern", "()", "summary", "manual"] diff --git a/java/ql/lib/ext/javax.crypto.model.yml b/java/ql/lib/ext/javax.crypto.model.yml index 9c909320344c..40db2df856fe 100644 --- a/java/ql/lib/ext/javax.crypto.model.yml +++ b/java/ql/lib/ext/javax.crypto.model.yml @@ -24,3 +24,5 @@ extensions: - ["javax.crypto", "Cipher", "update", "", "summary", "manual"] - ["javax.crypto", "Cipher", "updateAAD", "", "summary", "manual"] - ["javax.crypto", "Cipher", "wrap", "", "summary", "manual"] + - ["javax.crypto", "Mac", "init", "(Key)", "summary", "manual"] + - ["javax.crypto", "Mac", "doFinal", "()", "summary", "manual"] diff --git a/java/ql/lib/ext/javax.crypto.spec.model.yml b/java/ql/lib/ext/javax.crypto.spec.model.yml index 0f879c1f900c..759197d52e7b 100644 --- a/java/ql/lib/ext/javax.crypto.spec.model.yml +++ b/java/ql/lib/ext/javax.crypto.spec.model.yml @@ -26,3 +26,8 @@ extensions: - ["javax.crypto.spec", "PBEParameterSpec", False, "PBEParameterSpec", "", "", "Argument[0]", "encryption-salt", "manual"] - ["javax.crypto.spec", "SecretKeySpec", False, "SecretKeySpec", "(byte[],String)", "", "Argument[0]", "credentials-key", "hq-generated"] - ["javax.crypto.spec", "SecretKeySpec", False, "SecretKeySpec", "(byte[],int,int,String)", "", "Argument[0]", "credentials-key", "hq-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.crypto.spec", "SecretKeySpec", "SecretKeySpec", "(byte[],String)", "summary", "manual"] From 54fa8181da3527974a8ca0ce6572dbb23783dba8 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 13 Mar 2024 20:03:01 +0100 Subject: [PATCH 172/731] Address review comment --- javascript/ql/lib/semmle/javascript/SSA.qll | 8 ++ .../semmle/javascript/dataflow/DataFlow.qll | 122 ++++-------------- .../javascript/internal/CachedStages.qll | 2 - .../semmle/javascript/internal/Locations.qll | 2 +- 4 files changed, 32 insertions(+), 102 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/SSA.qll b/javascript/ql/lib/semmle/javascript/SSA.qll index a505cf5ff484..2de42193743f 100644 --- a/javascript/ql/lib/semmle/javascript/SSA.qll +++ b/javascript/ql/lib/semmle/javascript/SSA.qll @@ -488,6 +488,14 @@ class SsaDefinition extends TSsaDefinition { string filepath, int startline, int startcolumn, int endline, int endcolumn ); + /** Gets the location of this element. */ + final Location getLocation() { + exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | + this.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + result.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + ) + } + /** Gets the function or toplevel to which this definition belongs. */ StmtContainer getContainer() { result = this.getBasicBlock().getContainer() } } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll index 6d091a720af5..79fede61b8f7 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll @@ -145,20 +145,15 @@ module DataFlow { * For more information, see * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). */ - cached - predicate hasLocationInfo( + final predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn ) { - none() + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) } /** Gets the location of this node. */ - Location getLocation() { - exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | - this.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and - result.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - ) - } + cached + Location getLocation() { none() } /** Gets the file this data flow node comes from. */ File getFile() { none() } // overridden in subclasses @@ -300,11 +295,9 @@ module DataFlow { override BasicBlock getBasicBlock() { astNode = result.getANode() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { + override Location getLocation() { Stages::DataFlowStage::ref() and - astNode.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + result = astNode.getLocation() } override File getFile() { result = astNode.getFile() } @@ -325,11 +318,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = ssa.getBasicBlock() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - ssa.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = ssa.getLocation() } override string toString() { result = ssa.getSourceVariable().getName() } @@ -348,13 +337,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = prop.(ControlFlowNode).getBasicBlock() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - prop.(Locatable) - .getLocation() - .hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = prop.(Locatable).getLocation() } override string toString() { result = prop.(AstNode).toString() } @@ -375,11 +358,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = rest.getBasicBlock() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - rest.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = rest.getLocation() } override string toString() { result = "..." + rest.toString() } @@ -400,11 +379,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = elt.getBasicBlock() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - elt.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = elt.getLocation() } override string toString() { result = elt.toString() } @@ -429,11 +404,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = elt.getBasicBlock() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - elt.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = elt.getLocation() } override string toString() { result = elt.toString() } @@ -453,11 +424,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = call.getBasicBlock() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - call.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = call.getLocation() } override string toString() { result = "reflective call" } @@ -474,11 +441,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = imprt.getBasicBlock() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - imprt.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = imprt.getLocation() } override string toString() { result = imprt.toString() } @@ -968,11 +931,7 @@ module DataFlow { override string toString() { result = attr.toString() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - attr.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = attr.getLocation() } /** Gets the attribute corresponding to this data flow node. */ HTML::Attribute getAttribute() { result = attr } @@ -990,11 +949,7 @@ module DataFlow { override string toString() { result = attr.toString() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - attr.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = attr.getLocation() } /** Gets the attribute corresponding to this data flow node. */ XmlAttribute getAttribute() { result = attr } @@ -1012,11 +967,7 @@ module DataFlow { override string toString() { result = "exceptional return of " + function.describe() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - function.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = function.getLocation() } override BasicBlock getBasicBlock() { result = function.getExit().getBasicBlock() } @@ -1038,11 +989,7 @@ module DataFlow { override string toString() { result = "return of " + function.describe() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - function.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = function.getLocation() } override BasicBlock getBasicBlock() { result = function.getExit().getBasicBlock() } @@ -1064,11 +1011,7 @@ module DataFlow { override string toString() { result = "'arguments' object of " + function.describe() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - function.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = function.getLocation() } override BasicBlock getBasicBlock() { result = function.getEntry().getBasicBlock() } @@ -1090,11 +1033,7 @@ module DataFlow { override string toString() { result = "exceptional return of " + invoke.toString() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - invoke.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = invoke.getLocation() } override BasicBlock getBasicBlock() { result = invoke.getBasicBlock() } @@ -1366,15 +1305,10 @@ module DataFlow { exists(StmtContainer container | this = TThisNode(container) | result = container.getEntry()) } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { + override Location getLocation() { // Use the function entry as the location exists(StmtContainer container | this = TThisNode(container) | - container - .getEntry() - .getLocation() - .hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + result = container.getEntry().getLocation() ) } @@ -1393,11 +1327,7 @@ module DataFlow { override BasicBlock getBasicBlock() { result = variable.getDeclaringContainer().getStartBB() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - variable.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = variable.getLocation() } override string toString() { result = variable.getName() } } @@ -1409,13 +1339,7 @@ module DataFlow { override BasicBlock getBasicBlock() { none() } - override predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.getTag() - .getLocation() - .hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } + override Location getLocation() { result = this.getTag().getLocation() } override string toString() { result = this.getTag().toString() } } diff --git a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll index 09d52e89ee04..39da790b6b94 100644 --- a/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll +++ b/javascript/ql/lib/semmle/javascript/internal/CachedStages.qll @@ -136,8 +136,6 @@ module Stages { or exists(DataFlow::ssaDefinitionNode(_)) or - any(DataFlow::Node node).hasLocationInfo(_, _, _, _, _) - or exists(any(DataFlow::Node node).getLocation()) or exists(any(DataFlow::Node node).toString()) diff --git a/javascript/ql/lib/semmle/javascript/internal/Locations.qll b/javascript/ql/lib/semmle/javascript/internal/Locations.qll index 4a21f4a6b980..d1dc8d403f75 100644 --- a/javascript/ql/lib/semmle/javascript/internal/Locations.qll +++ b/javascript/ql/lib/semmle/javascript/internal/Locations.qll @@ -9,7 +9,7 @@ import javascript newtype TLocation = TDbLocation(@location loc) or TSynthLocation(string filepath, int startline, int startcolumn, int endline, int endcolumn) { - any(DataFlow::Node n).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and + any(SsaDefinition def).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and // avoid overlap with existing DB locations not exists(File f | locations_default(_, f, startline, startcolumn, endline, endcolumn) and From 866a3934d4af805ba4a8b50245c3420fe579c10c Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Wed, 13 Mar 2024 20:17:00 +0100 Subject: [PATCH 173/731] C++: suppress destructors with reuse expressions until proper support is added --- .../raw/internal/TranslatedElement.qll | 5 +++++ .../raw/internal/TranslatedStmt.qll | 20 ++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index a9d4b6e1095f..81c704edb8b7 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -99,6 +99,11 @@ private predicate ignoreExprAndDescendants(Expr expr) { or // suppress destructors of temporary variables until proper support is added for them. exists(Expr parent | parent.getAnImplicitDestructorCall() = expr) + or + exists(Stmt parent | + parent.getAnImplicitDestructorCall() = expr and + expr.(DestructorCall).getQualifier() instanceof ReuseExpr + ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll index d8ec66a2ee71..247b15ed4c4a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll @@ -248,9 +248,19 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { final override TranslatedElement getChild(int id) { result = this.getChildInternal(id) or - exists(int destructorIndex | + exists(int destructorIndex, int tempDestructorCount | result.(TranslatedExpr).getExpr() = stmt.getImplicitDestructorCall(destructorIndex) and - id = this.getFirstDestructorCallIndex() + destructorIndex + id = this.getFirstDestructorCallIndex() + destructorIndex - tempDestructorCount and + // suppress destructors of temporary variables until proper support is added for them. + tempDestructorCount = + count(DestructorCall call, int tempIndex | + stmt.getImplicitDestructorCall(tempIndex) = call and + tempIndex < destructorIndex and + call.getQualifier() instanceof ReuseExpr + | + call + ) and + not stmt.getImplicitDestructorCall(destructorIndex).getQualifier() instanceof ReuseExpr ) } @@ -261,7 +271,11 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { } final override predicate hasAnImplicitDestructorCall() { - exists(stmt.getAnImplicitDestructorCall()) + exists(stmt.getAnImplicitDestructorCall()) and + // suppress destructors of temporary variables until proper support is added for them. + exists(Expr expr | stmt.getAnImplicitDestructorCall().getQualifier() = expr | + not expr instanceof ReuseExpr + ) } final override string toString() { result = stmt.toString() } From 0d38a9625e039120e715dfe79b529dc5bfead3d8 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Mon, 20 Nov 2023 15:12:33 -0500 Subject: [PATCH 174/731] Java: copy files from experimental --- ...unsafeUrlForwardExperimentalMove.model.yml | 61 ++++ .../CWE/CWE-552/UnsafeLoadSpringResource.java | 21 ++ .../CWE/CWE-552/UnsafeResourceGet.java | 18 ++ .../CWE-552/UnsafeServletRequestDispatch.java | 11 + .../CWE/CWE-552/UnsafeUrlForward.java | 38 +++ .../CWE/CWE-552/UnsafeUrlForward.qhelp | 70 +++++ .../Security/CWE/CWE-552/UnsafeUrlForward.ql | 63 ++++ .../Security/CWE/CWE-552/UnsafeUrlForward.qll | 163 +++++++++++ .../CWE-552/UnsafeLoadSpringResource.java | 155 ++++++++++ .../security/CWE-552/UnsafeRequestPath.java | 52 ++++ .../security/CWE-552/UnsafeResourceGet.java | 270 ++++++++++++++++++ .../security/CWE-552/UnsafeResourceGet2.java | 58 ++++ .../CWE-552/UnsafeServletRequestDispatch.java | 131 +++++++++ .../CWE-552/UnsafeUrlForward.expected | 129 +++++++++ .../security/CWE-552/UnsafeUrlForward.java | 78 +++++ .../security/CWE-552/UnsafeUrlForward.qlref | 1 + .../test/query-tests/security/CWE-552/options | 1 + 17 files changed, 1320 insertions(+) create mode 100644 java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml create mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java create mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java create mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java create mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.java create mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qhelp create mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql create mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qll create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref create mode 100644 java/ql/test/query-tests/security/CWE-552/options diff --git a/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml b/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml new file mode 100644 index 000000000000..b48d891e692d --- /dev/null +++ b/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml @@ -0,0 +1,61 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] + + # # ! below added by me when debugging CVEs: + # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "retrieve", "(String,String,String,ServletWebRequest,boolean)", "", "Parameter[3]", "remote", "manual"] + # - ["org.springframework.web.context.request", "ServletWebRequest", True, "getContextPath", "()", "", "ReturnValue", "remote", "manual"] + + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["java.util.concurrent", "TimeUnit", True, "sleep", "", "", "Argument[0]", "thread-pause", "manual"] # ! this seems like a typo; doesn't look like it's used in the query at all + + - ["org.springframework.core.io", "ClassPathResource", True, "getFilename", "", "", "Argument[this]", "get-resource", "manual"] # ! Note: `ClassPathResource` implements `Resource`, so it might make more sense to model some of these as `Resource` with subtype True. + - ["org.springframework.core.io", "ClassPathResource", True, "getPath", "", "", "Argument[this]", "get-resource", "manual"] + - ["org.springframework.core.io", "ClassPathResource", True, "getURL", "", "", "Argument[this]", "get-resource", "manual"] + - ["org.springframework.core.io", "ClassPathResource", True, "resolveURL", "", "", "Argument[this]", "get-resource", "manual"] + # # ! below added by me when debugging CVEs: + # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "retrieve", "", "", "Argument[0]", "get-resource", "manual"] # don't need + # # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "getFilePath", "", "", "Argument[0..3]", "get-resource", "manual"] # don't need + # # - ["org.springframework.cloud.config.server.resource", "ResourceRepository", True, "findOne", "", "", "Argument[0..3]", "get-resource", "manual"] # convert to summary + # # - ["org.springframework.core.io", "InputStreamSource", True, "getInputStream", "", "", "Argument[this]", "get-resource", "manual"] # convert to summary + # - ["org.springframework.util", "StreamUtils", True, "copyToString", "", "", "Argument[0]", "get-resource", "manual"] # * public class with good docs + # # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator", True, "getLocations", "(String,String,String)", "", "Argument[0..2]", "get-resource", "manual"] # convert to summary + # # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator$Locations", True, "getLocations", "()", "", "Argument[this]", "get-resource", "manual"] # convert to summary + # - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "", "", "Argument[0]", "get-resource", "manual"] # * public interface with good docs, might be problematic for FPs based on fact that the ext contributor changed this to a taint step to avoid "exists" FPS (maybe there's another way to exclude those FPs though). + # - ["javax.servlet", "ServletContext", True, "getResource", "", "", "Argument[0]", "get-resource", "manual"] + # - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "", "", "Argument[0]", "get-resource", "manual"] + # - ["javax.servlet", "ServletContext", True, "getResourcePaths", "", "", "Argument[0]", "get-resource", "manual"] + # - ["javax.servlet", "ServletContext", True, "getResource", "", "", "Argument[this]", "get-resource", "manual"] + # - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "", "", "Argument[this]", "get-resource", "manual"] + # - ["javax.servlet", "ServletContext", True, "getResourcePaths", "", "", "Argument[this]", "get-resource", "manual"] + # # - ["org.apache.tomcat.util.http", "RequestUtil", True, "normalize", "", "", "Argument[0]", "get-resource", "manual"] + + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["io.undertow.server.handlers.resource", "Resource", True, "getFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["io.undertow.server.handlers.resource", "Resource", True, "getFilePath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["io.undertow.server.handlers.resource", "Resource", True, "getPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! this as a taint step seems to contradict the fact that they did `ClassPathResource.getPath` as a sink for Spring... + - ["java.nio.file", "Path", True, "normalize", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! shouldn't this be a sanitizer instead??? Or no because WEB-INF ones don't care about normalization? + - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! check if this and the below are already in the default models + - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["java.nio.file", "Paths", True, "get", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + + - ["org.springframework.core.io", "ClassPathResource", False, "ClassPathResource", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["org.springframework.core.io", "Resource", True, "createRelative", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + # # ! below added/modified by me when debugging CVEs: + - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] + # - ["org.springframework.cloud.config.server.resource", "ResourceRepository", True, "findOne", "", "", "Argument[0..3]", "ReturnValue", "taint", "manual"] # * public interface, but might be too specific, no easily findable docs... + # - ["org.springframework.core.io", "InputStreamSource", True, "getInputStream", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # * public interface with good docs, Note: other `getInputStream`s are remote source and/or taint step, so this as taint step versus sink probably is more consistent + # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator", True, "getLocations", "(String,String,String)", "", "Argument[0..2]", "ReturnValue", "taint", "manual"] # * public interface with docs: https://www.javadoc.io/static/org.springframework.cloud/spring-cloud-config-server/2.1.0.RELEASE/org/springframework/cloud/config/server/environment/SearchPathLocator.html + # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator$Locations", True, "getLocations", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! is the `Locations` class package-private? Or does it inherit public from it's enclosing interface? + # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "getFilePath", "", "", "Argument[0..3]", "ReturnValue", "taint", "manual"] # don't need diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java b/java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java new file mode 100644 index 000000000000..ce462fe490ef --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java @@ -0,0 +1,21 @@ +//BAD: no path validation in Spring resource loading +@GetMapping("/file") +public String getFileContent(@RequestParam(name="fileName") String fileName) { + ClassPathResource clr = new ClassPathResource(fileName); + + File file = ResourceUtils.getFile(fileName); + + Resource resource = resourceLoader.getResource(fileName); +} + +//GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix in Spring resource loading: +@GetMapping("/file") +public String getFileContent(@RequestParam(name="fileName") String fileName) { + if (!fileName.contains("..") && fileName.hasPrefix("/public-content")) { + ClassPathResource clr = new ClassPathResource(fileName); + + File file = ResourceUtils.getFile(fileName); + + Resource resource = resourceLoader.getResource(fileName); + } +} diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java b/java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java new file mode 100644 index 000000000000..8b3583bf59e2 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java @@ -0,0 +1,18 @@ +// BAD: no URI validation +URL url = request.getServletContext().getResource(requestUrl); +url = getClass().getResource(requestUrl); +InputStream in = url.openStream(); + +InputStream in = request.getServletContext().getResourceAsStream(requestPath); +in = getClass().getClassLoader().getResourceAsStream(requestPath); + +// GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix: +// (alternatively use `Path.normalize` instead of checking for `..`) +if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { + InputStream in = request.getServletContext().getResourceAsStream(requestPath); +} + +Path path = Paths.get(requestUrl).normalize().toRealPath(); +if (path.startsWith("/trusted")) { + URL url = request.getServletContext().getResource(path.toString()); +} diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java new file mode 100644 index 000000000000..a2bbf3dfcd85 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java @@ -0,0 +1,11 @@ +// BAD: no URI validation +String returnURL = request.getParameter("returnURL"); +RequestDispatcher rd = sc.getRequestDispatcher(returnURL); +rd.forward(request, response); + +// GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix: +// (alternatively use `Path.normalize` instead of checking for `..`) +if (!returnURL.contains("..") && returnURL.hasPrefix("/pages")) { ... } +// Also GOOD: check for a forbidden prefix, ensuring URL-encoding is not used to evade the check: +// (alternatively use `URLDecoder.decode` before `hasPrefix`) +if (returnURL.hasPrefix("/internal") && !returnURL.contains("%")) { ... } diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.java b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.java new file mode 100644 index 000000000000..d159c4057362 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.java @@ -0,0 +1,38 @@ +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class UnsafeUrlForward { + + @GetMapping("/bad1") + public ModelAndView bad1(String url) { + return new ModelAndView(url); + } + + @GetMapping("/bad2") + public void bad2(String url, HttpServletRequest request, HttpServletResponse response) { + try { + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @GetMapping("/good1") + public void good1(String url, HttpServletRequest request, HttpServletResponse response) { + try { + request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qhelp b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qhelp new file mode 100644 index 000000000000..2e425952edc3 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qhelp @@ -0,0 +1,70 @@ +<!DOCTYPE qhelp PUBLIC + "-//Semmle//qhelp//EN" + "qhelp.dtd"> +<qhelp> + + +<overview> +<p>Constructing a server-side redirect path with user input could allow an attacker to download application binaries +(including application classes or jar files) or view arbitrary files within protected directories.</p> + +</overview> +<recommendation> + +<p>Unsanitized user provided data must not be used to construct the path for URL forwarding. In order to prevent +untrusted URL forwarding, it is recommended to avoid concatenating user input directly into the forwarding URL. +Instead, user input should be checked against allowed (e.g., must come within <code>user_content/</code>) or disallowed +(e.g. must not come within <code>/internal</code>) paths, ensuring that neither path traversal using <code>../</code> +or URL encoding are used to evade these checks. +</p> + +</recommendation> +<example> + +<p>The following examples show the bad case and the good case respectively. +The <code>bad</code> methods show an HTTP request parameter being used directly in a URL forward +without validating the input, which may cause file leakage. In the <code>good1</code> method, +ordinary forwarding requests are shown, which will not cause file leakage. +</p> + +<sample src="UnsafeUrlForward.java" /> + +<p>The following examples show an HTTP request parameter or request path being used directly in a +request dispatcher of Java EE without validating the input, which allows sensitive file exposure +attacks. It also shows how to remedy the problem by validating the user input. +</p> + +<sample src="UnsafeServletRequestDispatch.java" /> + +<p>The following examples show an HTTP request parameter or request path being used directly to +retrieve a resource of a Java EE application without validating the input, which allows sensitive +file exposure attacks. It also shows how to remedy the problem by validating the user input. +</p> + +<sample src="UnsafeResourceGet.java" /> + +<p>The following examples show an HTTP request parameter being used directly to retrieve a resource + of a Java Spring application without validating the input, which allows sensitive file exposure + attacks. It also shows how to remedy the problem by validating the user input. + </p> + + <sample src="UnsafeLoadSpringResource.java" /> +</example> +<references> +<li>File Disclosure: + <a href="https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.file_disclosure_spring">Unsafe Url Forward</a>. +</li> +<li>Jakarta Javadoc: + <a href="https://jakarta.ee/specifications/webprofile/9/apidocs/jakarta/servlet/servletrequest#getRequestDispatcher-java.lang.String-">Security vulnerability with unsafe usage of RequestDispatcher</a>. +</li> +<li>Micro Focus: + <a href="https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.file_disclosure_j2ee">File Disclosure: J2EE</a> +</li> +<li>CVE-2015-5174: + <a href="https://vuldb.com/?id.81084">Apache Tomcat 6.0/7.0/8.0/9.0 Servletcontext getResource/getResourceAsStream/getResourcePaths Path Traversal</a> +</li> +<li>CVE-2019-3799: + <a href="https://github.com/mpgn/CVE-2019-3799">CVE-2019-3799 - Spring-Cloud-Config-Server Directory Traversal < 2.1.2, 2.0.4, 1.4.6</a> +</li> +</references> +</qhelp> diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql new file mode 100644 index 000000000000..240023f9ffc0 --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql @@ -0,0 +1,63 @@ +/** + * @name Unsafe URL forward or include from a remote source + * @description URL forward or include based on unvalidated user-input + * may cause file information disclosure. + * @kind path-problem + * @problem.severity error + * @precision high + * @id java/unsafe-url-forward-include + * @tags security + * external/cwe-552 + */ + +import java +import UnsafeUrlForward +import semmle.code.java.dataflow.FlowSources +import semmle.code.java.dataflow.TaintTracking +import experimental.semmle.code.java.frameworks.Jsf +import semmle.code.java.security.PathSanitizer +import UnsafeUrlForwardFlow::PathGraph + +module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof ThreatModelFlowSource and + not exists(MethodCall ma, Method m | ma.getMethod() = m | + ( + m instanceof HttpServletRequestGetRequestUriMethod or + m instanceof HttpServletRequestGetRequestUrlMethod or + m instanceof HttpServletRequestGetPathMethod + ) and + ma = source.asExpr() + ) + } + + predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeUrlForwardSink } + + predicate isBarrier(DataFlow::Node node) { + node instanceof UnsafeUrlForwardSanitizer or + node instanceof PathInjectionSanitizer + } + + DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } + + predicate isAdditionalFlowStep(DataFlow::Node prev, DataFlow::Node succ) { + exists(MethodCall ma | + ( + ma.getMethod() instanceof GetServletResourceMethod or + ma.getMethod() instanceof GetFacesResourceMethod or + ma.getMethod() instanceof GetClassResourceMethod or + ma.getMethod() instanceof GetClassLoaderResourceMethod or + ma.getMethod() instanceof GetWildflyResourceMethod + ) and + ma.getArgument(0) = prev.asExpr() and + ma = succ.asExpr() + ) + } +} + +module UnsafeUrlForwardFlow = TaintTracking::Global<UnsafeUrlForwardFlowConfig>; + +from UnsafeUrlForwardFlow::PathNode source, UnsafeUrlForwardFlow::PathNode sink +where UnsafeUrlForwardFlow::flowPath(source, sink) +select sink.getNode(), source, sink, "Potentially untrusted URL forward due to $@.", + source.getNode(), "user-provided value" diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qll b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qll new file mode 100644 index 000000000000..db610eb65cec --- /dev/null +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qll @@ -0,0 +1,163 @@ +import java +private import experimental.semmle.code.java.frameworks.Jsf +private import semmle.code.java.dataflow.ExternalFlow +private import semmle.code.java.dataflow.FlowSources +private import semmle.code.java.dataflow.StringPrefixes +private import semmle.code.java.frameworks.javaee.ejb.EJBRestrictions +private import experimental.semmle.code.java.frameworks.SpringResource + +/** A sink for unsafe URL forward vulnerabilities. */ +abstract class UnsafeUrlForwardSink extends DataFlow::Node { } + +/** A sanitizer for unsafe URL forward vulnerabilities. */ +abstract class UnsafeUrlForwardSanitizer extends DataFlow::Node { } + +/** An argument to `getRequestDispatcher`. */ +private class RequestDispatcherSink extends UnsafeUrlForwardSink { + RequestDispatcherSink() { + exists(MethodCall ma | + ma.getMethod() instanceof GetRequestDispatcherMethod and + ma.getArgument(0) = this.asExpr() + ) + } +} + +/** The `getResource` method of `Class`. */ +class GetClassResourceMethod extends Method { + GetClassResourceMethod() { + this.getDeclaringType() instanceof TypeClass and + this.hasName("getResource") + } +} + +/** The `getResourceAsStream` method of `Class`. */ +class GetClassResourceAsStreamMethod extends Method { + GetClassResourceAsStreamMethod() { + this.getDeclaringType() instanceof TypeClass and + this.hasName("getResourceAsStream") + } +} + +/** The `getResource` method of `ClassLoader`. */ +class GetClassLoaderResourceMethod extends Method { + GetClassLoaderResourceMethod() { + this.getDeclaringType() instanceof ClassLoaderClass and + this.hasName("getResource") + } +} + +/** The `getResourceAsStream` method of `ClassLoader`. */ +class GetClassLoaderResourceAsStreamMethod extends Method { + GetClassLoaderResourceAsStreamMethod() { + this.getDeclaringType() instanceof ClassLoaderClass and + this.hasName("getResourceAsStream") + } +} + +/** The JBoss class `FileResourceManager`. */ +class FileResourceManager extends RefType { + FileResourceManager() { + this.hasQualifiedName("io.undertow.server.handlers.resource", "FileResourceManager") + } +} + +/** The JBoss method `getResource` of `FileResourceManager`. */ +class GetWildflyResourceMethod extends Method { + GetWildflyResourceMethod() { + this.getDeclaringType().getASupertype*() instanceof FileResourceManager and + this.hasName("getResource") + } +} + +/** The JBoss class `VirtualFile`. */ +class VirtualFile extends RefType { + VirtualFile() { this.hasQualifiedName("org.jboss.vfs", "VirtualFile") } +} + +/** The JBoss method `getChild` of `FileResourceManager`. */ +class GetVirtualFileChildMethod extends Method { + GetVirtualFileChildMethod() { + this.getDeclaringType().getASupertype*() instanceof VirtualFile and + this.hasName("getChild") + } +} + +/** An argument to `getResource()` or `getResourceAsStream()`. */ +private class GetResourceSink extends UnsafeUrlForwardSink { + GetResourceSink() { + sinkNode(this, "request-forgery") + or + sinkNode(this, "get-resource") + or + exists(MethodCall ma | + ( + ma.getMethod() instanceof GetServletResourceAsStreamMethod or + ma.getMethod() instanceof GetFacesResourceAsStreamMethod or + ma.getMethod() instanceof GetClassResourceAsStreamMethod or + ma.getMethod() instanceof GetClassLoaderResourceAsStreamMethod or + ma.getMethod() instanceof GetVirtualFileChildMethod + ) and + ma.getArgument(0) = this.asExpr() + ) + } +} + +/** A sink for methods that load Spring resources. */ +private class SpringResourceSink extends UnsafeUrlForwardSink { + SpringResourceSink() { + exists(MethodCall ma | + ma.getMethod() instanceof GetResourceUtilsMethod and + ma.getArgument(0) = this.asExpr() + ) + } +} + +/** An argument to `new ModelAndView` or `ModelAndView.setViewName`. */ +private class SpringModelAndViewSink extends UnsafeUrlForwardSink { + SpringModelAndViewSink() { + exists(ClassInstanceExpr cie | + cie.getConstructedType() instanceof ModelAndView and + cie.getArgument(0) = this.asExpr() + ) + or + exists(SpringModelAndViewSetViewNameCall smavsvnc | smavsvnc.getArgument(0) = this.asExpr()) + } +} + +private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer { + PrimitiveSanitizer() { + this.getType() instanceof PrimitiveType or + this.getType() instanceof BoxedType or + this.getType() instanceof NumberType + } +} + +private class SanitizingPrefix extends InterestingPrefix { + SanitizingPrefix() { + not this.getStringValue().matches("/WEB-INF/%") and + not this.getStringValue() = "forward:" + } + + override int getOffset() { result = 0 } +} + +private class FollowsSanitizingPrefix extends UnsafeUrlForwardSanitizer { + FollowsSanitizingPrefix() { this.asExpr() = any(SanitizingPrefix fp).getAnAppendedExpression() } +} + +private class ForwardPrefix extends InterestingPrefix { + ForwardPrefix() { this.getStringValue() = "forward:" } + + override int getOffset() { result = 0 } +} + +/** + * An expression appended (perhaps indirectly) to `"forward:"`, and which + * is reachable from a Spring entry point. + */ +private class SpringUrlForwardSink extends UnsafeUrlForwardSink { + SpringUrlForwardSink() { + any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable()) and + this.asExpr() = any(ForwardPrefix fp).getAnAppendedExpression() + } +} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java b/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java new file mode 100644 index 000000000000..c7e114aede35 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java @@ -0,0 +1,155 @@ +package com.example; + +import java.io.File; +import java.io.FileReader; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.Reader; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.nio.file.Files; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.util.ResourceUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** Sample class of Spring RestController */ +@RestController +public class UnsafeLoadSpringResource { + @GetMapping("/file1") + //BAD: Get resource from ClassPathResource without input validation + public String getFileContent1(@RequestParam(name="fileName") String fileName) { + // A request such as the following can disclose source code and application configuration + // fileName=/../../WEB-INF/views/page.jsp + // fileName=/com/example/package/SampleController.class + ClassPathResource clr = new ClassPathResource(fileName); + char[] buffer = new char[4096]; + StringBuilder out = new StringBuilder(); + try { + Reader in = new FileReader(clr.getFilename()); + for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { + out.append(buffer, 0, numRead); + } + } catch (IOException ie) { + ie.printStackTrace(); + } + return out.toString(); + } + + @GetMapping("/file1a") + //GOOD: Get resource from ClassPathResource with input path validation + public String getFileContent1a(@RequestParam(name="fileName") String fileName) { + String result = null; + if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { + ClassPathResource clr = new ClassPathResource(fileName); + char[] buffer = new char[4096]; + StringBuilder out = new StringBuilder(); + try { + Reader in = new InputStreamReader(clr.getInputStream(), "UTF-8"); + for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { + out.append(buffer, 0, numRead); + } + } catch (IOException ie) { + ie.printStackTrace(); + } + result = out.toString(); + } + return result; + } + + @GetMapping("/file2") + //BAD: Get resource from ResourceUtils without input validation + public String getFileContent2(@RequestParam(name="fileName") String fileName) { + String content = null; + + try { + // A request such as the following can disclose source code and system configuration + // fileName=/etc/hosts + // fileName=file:/etc/hosts + // fileName=/opt/appdir/WEB-INF/views/page.jsp + File file = ResourceUtils.getFile(fileName); + //Read File Content + content = new String(Files.readAllBytes(file.toPath())); + } catch (IOException ie) { + ie.printStackTrace(); + } + return content; + } + + @GetMapping("/file2a") + //GOOD: Get resource from ResourceUtils with input path validation + public String getFileContent2a(@RequestParam(name="fileName") String fileName) { + String content = null; + + if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { + try { + File file = ResourceUtils.getFile(fileName); + //Read File Content + content = new String(Files.readAllBytes(file.toPath())); + } catch (IOException ie) { + ie.printStackTrace(); + } + } + return content; + } + + @Autowired + ResourceLoader resourceLoader; + + @GetMapping("/file3") + //BAD: Get resource from ResourceLoader (same as application context) without input validation + // Note it is not detected without the generic `resource.getInputStream()` check + public String getFileContent3(@RequestParam(name="fileName") String fileName) { + String content = null; + + try { + // A request such as the following can disclose source code and system configuration + // fileName=/WEB-INF/views/page.jsp + // fileName=/WEB-INF/classes/com/example/package/SampleController.class + // fileName=file:/etc/hosts + Resource resource = resourceLoader.getResource(fileName); + + char[] buffer = new char[4096]; + StringBuilder out = new StringBuilder(); + + Reader in = new InputStreamReader(resource.getInputStream(), "UTF-8"); + for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { + out.append(buffer, 0, numRead); + } + content = out.toString(); + } catch (IOException ie) { + ie.printStackTrace(); + } + return content; + } + + @GetMapping("/file3a") + //GOOD: Get resource from ResourceLoader (same as application context) with input path validation + public String getFileContent3a(@RequestParam(name="fileName") String fileName) { + String content = null; + + if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { + try { + Resource resource = resourceLoader.getResource(fileName); + + char[] buffer = new char[4096]; + StringBuilder out = new StringBuilder(); + + Reader in = new InputStreamReader(resource.getInputStream(), "UTF-8"); + for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { + out.append(buffer, 0, numRead); + } + content = out.toString(); + } catch (IOException ie) { + ie.printStackTrace(); + } + } + return content; + } +} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java b/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java new file mode 100644 index 000000000000..2de0cae0d3c5 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java @@ -0,0 +1,52 @@ +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +// @WebFilter("/*") +public class UnsafeRequestPath implements Filter { + private static final String BASE_PATH = "/pages"; + + @Override + // BAD: Request dispatcher from servlet path without check + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + String path = ((HttpServletRequest) request).getServletPath(); + // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check + if (path != null && !path.startsWith("/WEB-INF")) { + request.getRequestDispatcher(path).forward(request, response); + } else { + chain.doFilter(request, response); + } + } + + // GOOD: Request dispatcher from servlet path with check + public void doFilter2(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + String path = ((HttpServletRequest) request).getServletPath(); + + if (path.startsWith(BASE_PATH) && !path.contains("..")) { + request.getRequestDispatcher(path).forward(request, response); + } else { + chain.doFilter(request, response); + } + } + + // GOOD: Request dispatcher from servlet path with whitelisted string comparison + public void doFilter3(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + String path = ((HttpServletRequest) request).getServletPath(); + + if (path.equals("/comaction")) { + request.getRequestDispatcher(path).forward(request, response); + } else { + chain.doFilter(request, response); + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java new file mode 100644 index 000000000000..64c23334f187 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java @@ -0,0 +1,270 @@ +package com.example; + +import java.io.InputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.net.URI; +import java.net.URL; +import java.net.URISyntaxException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.ServletOutputStream; +import javax.servlet.ServletException; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; + +import io.undertow.server.handlers.resource.FileResourceManager; +import io.undertow.server.handlers.resource.Resource; +import org.jboss.vfs.VFS; +import org.jboss.vfs.VirtualFile; + +public class UnsafeResourceGet extends HttpServlet { + private static final String BASE_PATH = "/pages"; + + @Override + // BAD: getResource constructed from `ServletContext` without input validation + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestUrl = request.getParameter("requestURL"); + ServletOutputStream out = response.getOutputStream(); + + ServletConfig cfg = getServletConfig(); + ServletContext sc = cfg.getServletContext(); + + // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file + URL url = sc.getResource(requestUrl); + + InputStream in = url.openStream(); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + + // GOOD: getResource constructed from `ServletContext` with input validation + protected void doGetGood(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestUrl = request.getParameter("requestURL"); + ServletOutputStream out = response.getOutputStream(); + + ServletConfig cfg = getServletConfig(); + ServletContext sc = cfg.getServletContext(); + + Path path = Paths.get(requestUrl).normalize().toRealPath(); + if (path.startsWith(BASE_PATH)) { + URL url = sc.getResource(path.toString()); + + InputStream in = url.openStream(); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + } + + // GOOD: getResource constructed from `ServletContext` with null check only + protected void doGetGood2(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestUrl = request.getParameter("requestURL"); + PrintWriter writer = response.getWriter(); + + ServletConfig cfg = getServletConfig(); + ServletContext sc = cfg.getServletContext(); + + // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file + URL url = sc.getResource(requestUrl); + if (url == null) { + writer.println("Requested source not found"); + } + } + + // GOOD: getResource constructed from `ServletContext` with `equals` check + protected void doGetGood3(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestUrl = request.getParameter("requestURL"); + ServletOutputStream out = response.getOutputStream(); + + ServletContext sc = request.getServletContext(); + + if (requestUrl.equals("/public/crossdomain.xml")) { + URL url = sc.getResource(requestUrl); + + InputStream in = url.openStream(); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + } + + @Override + // BAD: getResourceAsStream constructed from `ServletContext` without input validation + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestPath = request.getParameter("requestPath"); + ServletOutputStream out = response.getOutputStream(); + + // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file + InputStream in = request.getServletContext().getResourceAsStream(requestPath); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + + // GOOD: getResourceAsStream constructed from `ServletContext` with input validation + protected void doPostGood(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestPath = request.getParameter("requestPath"); + ServletOutputStream out = response.getOutputStream(); + + if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { + InputStream in = request.getServletContext().getResourceAsStream(requestPath); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + } + + @Override + // BAD: getResource constructed from `Class` without input validation + protected void doHead(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestUrl = request.getParameter("requestURL"); + ServletOutputStream out = response.getOutputStream(); + + // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file + // Note the class is in two levels of subpackages and `Class.getResource` starts from its own directory + URL url = getClass().getResource(requestUrl); + + InputStream in = url.openStream(); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + + // GOOD: getResource constructed from `Class` with input validation + protected void doHeadGood(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestUrl = request.getParameter("requestURL"); + ServletOutputStream out = response.getOutputStream(); + + Path path = Paths.get(requestUrl).normalize().toRealPath(); + if (path.startsWith(BASE_PATH)) { + URL url = getClass().getResource(path.toString()); + + InputStream in = url.openStream(); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + } + + @Override + // BAD: getResourceAsStream constructed from `ClassLoader` without input validation + protected void doPut(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestPath = request.getParameter("requestPath"); + ServletOutputStream out = response.getOutputStream(); + + ServletConfig cfg = getServletConfig(); + ServletContext sc = cfg.getServletContext(); + + // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file + // Note the class is in two levels of subpackages and `ClassLoader.getResourceAsStream` starts from its own directory + InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + + // GOOD: getResourceAsStream constructed from `ClassLoader` with input validation + protected void doPutGood(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestPath = request.getParameter("requestPath"); + ServletOutputStream out = response.getOutputStream(); + + ServletConfig cfg = getServletConfig(); + ServletContext sc = cfg.getServletContext(); + + if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { + InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + } + + // BAD: getResource constructed from `ClassLoader` without input validation + protected void doPutBad(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestUrl = request.getParameter("requestURL"); + ServletOutputStream out = response.getOutputStream(); + + // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file + // Note the class is in two levels of subpackages and `ClassLoader.getResource` starts from its own directory + URL url = getClass().getClassLoader().getResource(requestUrl); + + InputStream in = url.openStream(); + byte[] buf = new byte[4 * 1024]; // 4K buffer + int bytesRead; + while ((bytesRead = in.read(buf)) != -1) { + out.write(buf, 0, bytesRead); + } + } + + // BAD: getResource constructed using Undertow IO without input validation + protected void doPutBad2(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestPath = request.getParameter("requestPath"); + + try { + FileResourceManager rm = new FileResourceManager(VFS.getChild(new URI("/usr/share")).getPhysicalFile()); + Resource rs = rm.getResource(requestPath); + + VirtualFile overlay = VFS.getChild(new URI("EAP_HOME/modules/")); + // Do file operations + overlay.getChild(rs.getPath()); + } catch (URISyntaxException ue) { + throw new IOException("Cannot parse the URI"); + } + } + + // GOOD: getResource constructed using Undertow IO with input validation + protected void doPutGood2(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String requestPath = request.getParameter("requestPath"); + + try { + FileResourceManager rm = new FileResourceManager(VFS.getChild(new URI("/usr/share")).getPhysicalFile()); + Resource rs = rm.getResource(requestPath); + + VirtualFile overlay = VFS.getChild(new URI("EAP_HOME/modules/")); + String path = rs.getPath(); + if (path.startsWith("/trusted_path") && !path.contains("..")) { + // Do file operations + overlay.getChild(path); + } + } catch (URISyntaxException ue) { + throw new IOException("Cannot parse the URI"); + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java new file mode 100644 index 000000000000..b3d041d024cf --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java @@ -0,0 +1,58 @@ +package com.example; + +import javax.faces.context.FacesContext; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.IOException; +import java.net.URL; +import java.util.Map; + +/** Sample class of JSF managed bean */ +public class UnsafeResourceGet2 { + // BAD: getResourceAsStream constructed from `ExternalContext` without input validation + public String parameterActionBad1() throws IOException { + FacesContext fc = FacesContext.getCurrentInstance(); + Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); + String loadUrl = params.get("loadUrl"); + + InputStreamReader isr = new InputStreamReader(fc.getExternalContext().getResourceAsStream(loadUrl)); + BufferedReader br = new BufferedReader(isr); + if(br.ready()) { + //Do Stuff + return "result"; + } + + return "home"; + } + + // BAD: getResource constructed from `ExternalContext` without input validation + public String parameterActionBad2() throws IOException { + FacesContext fc = FacesContext.getCurrentInstance(); + Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); + String loadUrl = params.get("loadUrl"); + + URL url = fc.getExternalContext().getResource(loadUrl); + + InputStream in = url.openStream(); + //Do Stuff + return "result"; + } + + // GOOD: getResource constructed from `ExternalContext` with input validation + public String parameterActionGood1() throws IOException { + FacesContext fc = FacesContext.getCurrentInstance(); + Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); + String loadUrl = params.get("loadUrl"); + + if (loadUrl.equals("/public/crossdomain.xml")) { + URL url = fc.getExternalContext().getResource(loadUrl); + + InputStream in = url.openStream(); + //Do Stuff + return "result"; + } + + return "home"; + } +} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java new file mode 100644 index 000000000000..ee63939b209e --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java @@ -0,0 +1,131 @@ +import java.io.IOException; +import java.net.URLDecoder; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; + +public class UnsafeServletRequestDispatch extends HttpServlet { + private static final String BASE_PATH = "/pages"; + + @Override + // BAD: Request dispatcher constructed from `ServletContext` without input validation + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String action = request.getParameter("action"); + String returnURL = request.getParameter("returnURL"); + + ServletConfig cfg = getServletConfig(); + if (action.equals("Login")) { + ServletContext sc = cfg.getServletContext(); + RequestDispatcher rd = sc.getRequestDispatcher("/Login.jsp"); + rd.forward(request, response); + } else { + ServletContext sc = cfg.getServletContext(); + RequestDispatcher rd = sc.getRequestDispatcher(returnURL); + rd.forward(request, response); + } + } + + @Override + // BAD: Request dispatcher constructed from `HttpServletRequest` without input validation + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String action = request.getParameter("action"); + String returnURL = request.getParameter("returnURL"); + + if (action.equals("Login")) { + RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); + rd.forward(request, response); + } else { + RequestDispatcher rd = request.getRequestDispatcher(returnURL); + rd.forward(request, response); + } + } + + @Override + // GOOD: Request dispatcher with a whitelisted URI + protected void doPut(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String action = request.getParameter("action"); + + if (action.equals("Login")) { + RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); + rd.forward(request, response); + } else if (action.equals("Register")) { + RequestDispatcher rd = request.getRequestDispatcher("/Register.jsp"); + rd.forward(request, response); + } + } + + // BAD: Request dispatcher without path traversal check + protected void doHead2(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + + // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check + // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` + if (path.startsWith(BASE_PATH)) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + + // GOOD: Request dispatcher with path traversal check + protected void doHead3(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + + if (path.startsWith(BASE_PATH) && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + + // GOOD: Request dispatcher with path normalization and comparison + protected void doHead4(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); + + // /pages/welcome.jsp/../../WEB-INF/web.xml becomes /WEB-INF/web.xml + // /pages/welcome.jsp/../../%57EB-INF/web.xml becomes /%57EB-INF/web.xml + if (requestedPath.startsWith(BASE_PATH)) { + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); + } + } + + // FN: Request dispatcher with negation check and path normalization, but without URL decoding + // When promoting this query, consider using FlowStates to make `getRequestDispatcher` a sink + // only if a URL-decoding step has NOT been crossed (i.e. make URLDecoder.decode change the + // state to a different value than the one required at the sink). + protected void doHead5(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); + + if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); + } + } + + // GOOD: Request dispatcher with path traversal check and URL decoding + protected void doHead6(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + boolean hasEncoding = path.contains("%"); + while (hasEncoding) { + path = URLDecoder.decode(path, "UTF-8"); + hasEncoding = path.contains("%"); + } + + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected new file mode 100644 index 000000000000..5d809244fdba --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected @@ -0,0 +1,129 @@ +edges +| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | +| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | UnsafeLoadSpringResource.java:35:31:35:33 | clr | +| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | +| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | +| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | +| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | +| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:17:20:17:25 | params : Map | +| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | +| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | +| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:33:20:33:25 | params : Map | +| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | +| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | +| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | UnsafeResourceGet2.java:37:20:37:22 | url | +| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | +| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | +| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | UnsafeResourceGet.java:41:20:41:22 | url | +| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | +| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | +| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | +| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | UnsafeResourceGet.java:150:20:150:22 | url | +| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | +| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | +| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | +| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | UnsafeResourceGet.java:226:20:226:22 | url | +| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | +| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:241:33:241:43 | requestPath : String | +| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | UnsafeResourceGet.java:245:21:245:22 | rs : Resource | +| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | +| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | +| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | +| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | +| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | +| UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | +| UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | +| UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | +| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | +| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | +| UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | +| UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | +| UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | +nodes +| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | semmle.label | fileName : String | +| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | semmle.label | new ClassPathResource(...) : ClassPathResource | +| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | semmle.label | fileName : String | +| UnsafeLoadSpringResource.java:35:31:35:33 | clr | semmle.label | clr | +| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | semmle.label | fileName : String | +| UnsafeLoadSpringResource.java:76:38:76:45 | fileName | semmle.label | fileName | +| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | semmle.label | fileName : String | +| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | semmle.label | fileName | +| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | semmle.label | getServletPath(...) : String | +| UnsafeRequestPath.java:23:33:23:36 | path | semmle.label | path | +| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | +| UnsafeResourceGet2.java:17:20:17:25 | params : Map | semmle.label | params : Map | +| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | semmle.label | get(...) : String | +| UnsafeResourceGet2.java:19:93:19:99 | loadUrl | semmle.label | loadUrl | +| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | +| UnsafeResourceGet2.java:33:20:33:25 | params : Map | semmle.label | params : Map | +| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | semmle.label | get(...) : String | +| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | semmle.label | getResource(...) : URL | +| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | semmle.label | loadUrl : String | +| UnsafeResourceGet2.java:37:20:37:22 | url | semmle.label | url | +| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | semmle.label | getResource(...) : URL | +| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | semmle.label | requestUrl : String | +| UnsafeResourceGet.java:41:20:41:22 | url | semmle.label | url | +| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeResourceGet.java:115:68:115:78 | requestPath | semmle.label | requestPath | +| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | semmle.label | getResource(...) : URL | +| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | semmle.label | requestUrl : String | +| UnsafeResourceGet.java:150:20:150:22 | url | semmle.label | url | +| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeResourceGet.java:189:68:189:78 | requestPath | semmle.label | requestPath | +| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | semmle.label | getResource(...) : URL | +| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | semmle.label | requestUrl : String | +| UnsafeResourceGet.java:226:20:226:22 | url | semmle.label | url | +| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | semmle.label | getResource(...) : Resource | +| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | semmle.label | requestPath : String | +| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | semmle.label | rs : Resource | +| UnsafeResourceGet.java:245:21:245:32 | getPath(...) | semmle.label | getPath(...) | +| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | semmle.label | returnURL | +| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | semmle.label | returnURL | +| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| UnsafeServletRequestDispatch.java:76:53:76:56 | path | semmle.label | path | +| UnsafeUrlForward.java:13:27:13:36 | url : String | semmle.label | url : String | +| UnsafeUrlForward.java:14:27:14:29 | url | semmle.label | url | +| UnsafeUrlForward.java:18:27:18:36 | url : String | semmle.label | url : String | +| UnsafeUrlForward.java:20:28:20:30 | url | semmle.label | url | +| UnsafeUrlForward.java:25:21:25:30 | url : String | semmle.label | url : String | +| UnsafeUrlForward.java:26:23:26:25 | url | semmle.label | url | +| UnsafeUrlForward.java:30:27:30:36 | url : String | semmle.label | url : String | +| UnsafeUrlForward.java:31:48:31:63 | ... + ... | semmle.label | ... + ... | +| UnsafeUrlForward.java:31:61:31:63 | url | semmle.label | url | +| UnsafeUrlForward.java:36:19:36:28 | url : String | semmle.label | url : String | +| UnsafeUrlForward.java:38:33:38:35 | url | semmle.label | url | +| UnsafeUrlForward.java:47:19:47:28 | url : String | semmle.label | url : String | +| UnsafeUrlForward.java:49:33:49:62 | ... + ... | semmle.label | ... + ... | +| UnsafeUrlForward.java:58:19:58:28 | url : String | semmle.label | url : String | +| UnsafeUrlForward.java:60:33:60:62 | ... + ... | semmle.label | ... + ... | +subpaths +#select +| UnsafeLoadSpringResource.java:35:31:35:33 | clr | UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:35:31:35:33 | clr | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:27:32:27:77 | fileName | user-provided value | +| UnsafeLoadSpringResource.java:76:38:76:45 | fileName | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:68:32:68:77 | fileName | user-provided value | +| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:108:32:108:77 | fileName | user-provided value | +| UnsafeRequestPath.java:23:33:23:36 | path | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | Potentially untrusted URL forward due to $@. | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) | user-provided value | +| UnsafeResourceGet2.java:19:93:19:99 | loadUrl | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) | user-provided value | +| UnsafeResourceGet2.java:37:20:37:22 | url | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:37:20:37:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) | user-provided value | +| UnsafeResourceGet.java:41:20:41:22 | url | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:41:20:41:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) | user-provided value | +| UnsafeResourceGet.java:115:68:115:78 | requestPath | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) | user-provided value | +| UnsafeResourceGet.java:150:20:150:22 | url | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:150:20:150:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) | user-provided value | +| UnsafeResourceGet.java:189:68:189:78 | requestPath | UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:181:24:181:58 | getParameter(...) | user-provided value | +| UnsafeResourceGet.java:226:20:226:22 | url | UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:226:20:226:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:219:23:219:56 | getParameter(...) | user-provided value | +| UnsafeResourceGet.java:245:21:245:32 | getPath(...) | UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:237:24:237:58 | getParameter(...) | user-provided value | +| UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) | user-provided value | +| UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) | user-provided value | +| UnsafeServletRequestDispatch.java:76:53:76:56 | path | UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) | user-provided value | +| UnsafeUrlForward.java:14:27:14:29 | url | UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:13:27:13:36 | url | user-provided value | +| UnsafeUrlForward.java:20:28:20:30 | url | UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:18:27:18:36 | url | user-provided value | +| UnsafeUrlForward.java:26:23:26:25 | url | UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:25:21:25:30 | url | user-provided value | +| UnsafeUrlForward.java:31:48:31:63 | ... + ... | UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:30:27:30:36 | url | user-provided value | +| UnsafeUrlForward.java:31:61:31:63 | url | UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:30:27:30:36 | url | user-provided value | +| UnsafeUrlForward.java:38:33:38:35 | url | UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:36:19:36:28 | url | user-provided value | +| UnsafeUrlForward.java:49:33:49:62 | ... + ... | UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:47:19:47:28 | url | user-provided value | +| UnsafeUrlForward.java:60:33:60:62 | ... + ... | UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:58:19:58:28 | url | user-provided value | diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java new file mode 100644 index 000000000000..4018ed289481 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java @@ -0,0 +1,78 @@ +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +public class UnsafeUrlForward { + + @GetMapping("/bad1") + public ModelAndView bad1(String url) { + return new ModelAndView(url); + } + + @GetMapping("/bad2") + public ModelAndView bad2(String url) { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName(url); + return modelAndView; + } + + @GetMapping("/bad3") + public String bad3(String url) { + return "forward:" + url + "/swagger-ui/index.html"; + } + + @GetMapping("/bad4") + public ModelAndView bad4(String url) { + ModelAndView modelAndView = new ModelAndView("forward:" + url); + return modelAndView; + } + + @GetMapping("/bad5") + public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { + try { + request.getRequestDispatcher(url).include(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @GetMapping("/bad6") + public void bad6(String url, HttpServletRequest request, HttpServletResponse response) { + try { + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @GetMapping("/bad7") + public void bad7(String url, HttpServletRequest request, HttpServletResponse response) { + try { + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @GetMapping("/good1") + public void good1(String url, HttpServletRequest request, HttpServletResponse response) { + try { + request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref new file mode 100644 index 000000000000..934a18cc6c78 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref @@ -0,0 +1 @@ +experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql diff --git a/java/ql/test/query-tests/security/CWE-552/options b/java/ql/test/query-tests/security/CWE-552/options new file mode 100644 index 000000000000..025b888db025 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8/:${testdir}/../../../stubs/javax-faces-2.3/:${testdir}/../../../stubs/undertow-io-2.2/:${testdir}/../../../stubs/jboss-vfs-3.2/:${testdir}/../../../stubs/springframework-5.3.8/ From 2793f28428567060b66819525a5a045f52f2228d Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Mon, 20 Nov 2023 16:56:41 -0500 Subject: [PATCH 175/731] Java: move config to Query.qll file --- java/ql/lib/semmle/code/java/Jsf.qll | 35 +++++++++++++++ .../lib/semmle/code/java/SpringResource.qll | 22 +++++++++ .../code/java/security}/UnsafeUrlForward.qll | 4 +- .../java/security/UnsafeUrlForwardQuery.qll | 45 +++++++++++++++++++ .../Security/CWE/CWE-552/UnsafeUrlForward.ql | 45 +------------------ 5 files changed, 105 insertions(+), 46 deletions(-) create mode 100644 java/ql/lib/semmle/code/java/Jsf.qll create mode 100644 java/ql/lib/semmle/code/java/SpringResource.qll rename java/ql/{src/Security/CWE/CWE-552 => lib/semmle/code/java/security}/UnsafeUrlForward.qll (97%) create mode 100644 java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll diff --git a/java/ql/lib/semmle/code/java/Jsf.qll b/java/ql/lib/semmle/code/java/Jsf.qll new file mode 100644 index 000000000000..9023953add4b --- /dev/null +++ b/java/ql/lib/semmle/code/java/Jsf.qll @@ -0,0 +1,35 @@ +/** + * Provides classes and predicates for working with the Java Server Faces (JSF). + */ + +// TODO: COMBINE WITH EXISTING JSF-RELATED QLL FILES! +import java + +/** + * The JSF class `ExternalContext` for processing HTTP requests. + */ +class ExternalContext extends RefType { + ExternalContext() { + this.hasQualifiedName(["javax.faces.context", "jakarta.faces.context"], "ExternalContext") + } +} + +/** + * The method `getResource()` declared in JSF `ExternalContext`. + */ +class GetFacesResourceMethod extends Method { + GetFacesResourceMethod() { + this.getDeclaringType().getASupertype*() instanceof ExternalContext and + this.hasName("getResource") + } +} + +/** + * The method `getResourceAsStream()` declared in JSF `ExternalContext`. + */ +class GetFacesResourceAsStreamMethod extends Method { + GetFacesResourceAsStreamMethod() { + this.getDeclaringType().getASupertype*() instanceof ExternalContext and + this.hasName("getResourceAsStream") + } +} diff --git a/java/ql/lib/semmle/code/java/SpringResource.qll b/java/ql/lib/semmle/code/java/SpringResource.qll new file mode 100644 index 000000000000..a7d3a3793b6d --- /dev/null +++ b/java/ql/lib/semmle/code/java/SpringResource.qll @@ -0,0 +1,22 @@ +/** + * Provides classes for working with resource loading in Spring. + */ + +// TODO: COMBINE WITH EXISTING SPRING-RELATED QLL FILES! +import java +private import semmle.code.java.dataflow.FlowSources + +/** A utility class for resolving resource locations to files in the file system in the Spring framework. */ +class ResourceUtils extends Class { + ResourceUtils() { this.hasQualifiedName("org.springframework.util", "ResourceUtils") } +} + +/** + * A method declared in `org.springframework.util.ResourceUtils` that loads Spring resources. + */ +class GetResourceUtilsMethod extends Method { + GetResourceUtilsMethod() { + this.getDeclaringType().getASupertype*() instanceof ResourceUtils and + this.hasName(["extractArchiveURL", "extractJarFileURL", "getFile", "getURL"]) + } +} diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll similarity index 97% rename from java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qll rename to java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll index db610eb65cec..48b4431015e4 100644 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll @@ -1,10 +1,10 @@ import java -private import experimental.semmle.code.java.frameworks.Jsf +private import semmle.code.java.Jsf private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.StringPrefixes private import semmle.code.java.frameworks.javaee.ejb.EJBRestrictions -private import experimental.semmle.code.java.frameworks.SpringResource +private import semmle.code.java.SpringResource /** A sink for unsafe URL forward vulnerabilities. */ abstract class UnsafeUrlForwardSink extends DataFlow::Node { } diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll new file mode 100644 index 000000000000..9ee3f2ab4170 --- /dev/null +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll @@ -0,0 +1,45 @@ +import java +import semmle.code.java.security.UnsafeUrlForward +import semmle.code.java.dataflow.FlowSources +import semmle.code.java.dataflow.TaintTracking +import semmle.code.java.Jsf +import semmle.code.java.security.PathSanitizer + +module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof ThreatModelFlowSource and + not exists(MethodCall ma, Method m | ma.getMethod() = m | + ( + m instanceof HttpServletRequestGetRequestUriMethod or + m instanceof HttpServletRequestGetRequestUrlMethod or + m instanceof HttpServletRequestGetPathMethod + ) and + ma = source.asExpr() + ) + } + + predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeUrlForwardSink } + + predicate isBarrier(DataFlow::Node node) { + node instanceof UnsafeUrlForwardSanitizer or + node instanceof PathInjectionSanitizer + } + + DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } + + predicate isAdditionalFlowStep(DataFlow::Node prev, DataFlow::Node succ) { + exists(MethodCall ma | + ( + ma.getMethod() instanceof GetServletResourceMethod or + ma.getMethod() instanceof GetFacesResourceMethod or + ma.getMethod() instanceof GetClassResourceMethod or + ma.getMethod() instanceof GetClassLoaderResourceMethod or + ma.getMethod() instanceof GetWildflyResourceMethod + ) and + ma.getArgument(0) = prev.asExpr() and + ma = succ.asExpr() + ) + } +} + +module UnsafeUrlForwardFlow = TaintTracking::Global<UnsafeUrlForwardFlowConfig>; diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql index 240023f9ffc0..4e3326a831ee 100644 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql @@ -11,52 +11,9 @@ */ import java -import UnsafeUrlForward -import semmle.code.java.dataflow.FlowSources -import semmle.code.java.dataflow.TaintTracking -import experimental.semmle.code.java.frameworks.Jsf -import semmle.code.java.security.PathSanitizer +import semmle.code.java.security.UnsafeUrlForwardQuery import UnsafeUrlForwardFlow::PathGraph -module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source instanceof ThreatModelFlowSource and - not exists(MethodCall ma, Method m | ma.getMethod() = m | - ( - m instanceof HttpServletRequestGetRequestUriMethod or - m instanceof HttpServletRequestGetRequestUrlMethod or - m instanceof HttpServletRequestGetPathMethod - ) and - ma = source.asExpr() - ) - } - - predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeUrlForwardSink } - - predicate isBarrier(DataFlow::Node node) { - node instanceof UnsafeUrlForwardSanitizer or - node instanceof PathInjectionSanitizer - } - - DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } - - predicate isAdditionalFlowStep(DataFlow::Node prev, DataFlow::Node succ) { - exists(MethodCall ma | - ( - ma.getMethod() instanceof GetServletResourceMethod or - ma.getMethod() instanceof GetFacesResourceMethod or - ma.getMethod() instanceof GetClassResourceMethod or - ma.getMethod() instanceof GetClassLoaderResourceMethod or - ma.getMethod() instanceof GetWildflyResourceMethod - ) and - ma.getArgument(0) = prev.asExpr() and - ma = succ.asExpr() - ) - } -} - -module UnsafeUrlForwardFlow = TaintTracking::Global<UnsafeUrlForwardFlowConfig>; - from UnsafeUrlForwardFlow::PathNode source, UnsafeUrlForwardFlow::PathNode sink where UnsafeUrlForwardFlow::flowPath(source, sink) select sink.getNode(), source, sink, "Potentially untrusted URL forward due to $@.", From 35a083ae9e5c70a29ac426cf54112ef98286507b Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Mon, 20 Nov 2023 16:59:19 -0500 Subject: [PATCH 176/731] Java: update test cases to use inline expectations --- .../CWE-552/UnsafeLoadSpringResource.java | 10 +- .../security/CWE-552/UnsafeRequestPath.java | 12 +- .../security/CWE-552/UnsafeResourceGet.java | 12 +- .../security/CWE-552/UnsafeResourceGet2.java | 4 +- .../CWE-552/UnsafeServletRequestDispatch.java | 20 +-- .../CWE-552/UnsafeUrlForward.expected | 129 ------------------ .../security/CWE-552/UnsafeUrlForward.java | 14 +- .../security/CWE-552/UnsafeUrlForward.qlref | 1 - .../CWE-552/UnsafeUrlForwardTest.expected | 2 + .../security/CWE-552/UnsafeUrlForwardTest.ql | 18 +++ 10 files changed, 56 insertions(+), 166 deletions(-) delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.expected create mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java b/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java index c7e114aede35..363d84cabe90 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java @@ -32,7 +32,7 @@ public String getFileContent1(@RequestParam(name="fileName") String fileName) { char[] buffer = new char[4096]; StringBuilder out = new StringBuilder(); try { - Reader in = new FileReader(clr.getFilename()); + Reader in = new FileReader(clr.getFilename()); // $ hasUnsafeUrlForward (path-inj?) for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { out.append(buffer, 0, numRead); } @@ -67,13 +67,13 @@ public String getFileContent1a(@RequestParam(name="fileName") String fileName) { //BAD: Get resource from ResourceUtils without input validation public String getFileContent2(@RequestParam(name="fileName") String fileName) { String content = null; - + try { // A request such as the following can disclose source code and system configuration // fileName=/etc/hosts // fileName=file:/etc/hosts // fileName=/opt/appdir/WEB-INF/views/page.jsp - File file = ResourceUtils.getFile(fileName); + File file = ResourceUtils.getFile(fileName); // $ hasUnsafeUrlForward (path-inj?) //Read File Content content = new String(Files.readAllBytes(file.toPath())); } catch (IOException ie) { @@ -86,7 +86,7 @@ public String getFileContent2(@RequestParam(name="fileName") String fileName) { //GOOD: Get resource from ResourceUtils with input path validation public String getFileContent2a(@RequestParam(name="fileName") String fileName) { String content = null; - + if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { try { File file = ResourceUtils.getFile(fileName); @@ -113,7 +113,7 @@ public String getFileContent3(@RequestParam(name="fileName") String fileName) { // fileName=/WEB-INF/views/page.jsp // fileName=/WEB-INF/classes/com/example/package/SampleController.class // fileName=file:/etc/hosts - Resource resource = resourceLoader.getResource(fileName); + Resource resource = resourceLoader.getResource(fileName); // $ hasUnsafeUrlForward (path-inj?) char[] buffer = new char[4096]; StringBuilder out = new StringBuilder(); diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java b/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java index 2de0cae0d3c5..55afe84bc192 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java @@ -14,23 +14,23 @@ public class UnsafeRequestPath implements Filter { private static final String BASE_PATH = "/pages"; @Override - // BAD: Request dispatcher from servlet path without check + // BAD: Request dispatcher from servlet path without check public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String path = ((HttpServletRequest) request).getServletPath(); // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check if (path != null && !path.startsWith("/WEB-INF")) { - request.getRequestDispatcher(path).forward(request, response); + request.getRequestDispatcher(path).forward(request, response); // $ hasUnsafeUrlForward } else { chain.doFilter(request, response); } } - // GOOD: Request dispatcher from servlet path with check + // GOOD: Request dispatcher from servlet path with check public void doFilter2(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String path = ((HttpServletRequest) request).getServletPath(); - + if (path.startsWith(BASE_PATH) && !path.contains("..")) { request.getRequestDispatcher(path).forward(request, response); } else { @@ -38,11 +38,11 @@ public void doFilter2(ServletRequest request, ServletResponse response, FilterCh } } - // GOOD: Request dispatcher from servlet path with whitelisted string comparison + // GOOD: Request dispatcher from servlet path with whitelisted string comparison public void doFilter3(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String path = ((HttpServletRequest) request).getServletPath(); - + if (path.equals("/comaction")) { request.getRequestDispatcher(path).forward(request, response); } else { diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java index 64c23334f187..053887984c61 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java @@ -38,7 +38,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file URL url = sc.getResource(requestUrl); - InputStream in = url.openStream(); + InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) byte[] buf = new byte[4 * 1024]; // 4K buffer int bytesRead; while ((bytesRead = in.read(buf)) != -1) { @@ -112,7 +112,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) ServletOutputStream out = response.getOutputStream(); // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file - InputStream in = request.getServletContext().getResourceAsStream(requestPath); + InputStream in = request.getServletContext().getResourceAsStream(requestPath); // $ hasUnsafeUrlForward (path-inj?) byte[] buf = new byte[4 * 1024]; // 4K buffer int bytesRead; while ((bytesRead = in.read(buf)) != -1) { @@ -147,7 +147,7 @@ protected void doHead(HttpServletRequest request, HttpServletResponse response) // Note the class is in two levels of subpackages and `Class.getResource` starts from its own directory URL url = getClass().getResource(requestUrl); - InputStream in = url.openStream(); + InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) byte[] buf = new byte[4 * 1024]; // 4K buffer int bytesRead; while ((bytesRead = in.read(buf)) != -1) { @@ -186,7 +186,7 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response) // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file // Note the class is in two levels of subpackages and `ClassLoader.getResourceAsStream` starts from its own directory - InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); + InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); // $ hasUnsafeUrlForward (path-inj?) byte[] buf = new byte[4 * 1024]; // 4K buffer int bytesRead; while ((bytesRead = in.read(buf)) != -1) { @@ -223,7 +223,7 @@ protected void doPutBad(HttpServletRequest request, HttpServletResponse response // Note the class is in two levels of subpackages and `ClassLoader.getResource` starts from its own directory URL url = getClass().getClassLoader().getResource(requestUrl); - InputStream in = url.openStream(); + InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) byte[] buf = new byte[4 * 1024]; // 4K buffer int bytesRead; while ((bytesRead = in.read(buf)) != -1) { @@ -242,7 +242,7 @@ protected void doPutBad2(HttpServletRequest request, HttpServletResponse respons VirtualFile overlay = VFS.getChild(new URI("EAP_HOME/modules/")); // Do file operations - overlay.getChild(rs.getPath()); + overlay.getChild(rs.getPath()); // $ hasUnsafeUrlForward (path-inj?) } catch (URISyntaxException ue) { throw new IOException("Cannot parse the URI"); } diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java index b3d041d024cf..0043bb06c67a 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java @@ -16,7 +16,7 @@ public String parameterActionBad1() throws IOException { Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); String loadUrl = params.get("loadUrl"); - InputStreamReader isr = new InputStreamReader(fc.getExternalContext().getResourceAsStream(loadUrl)); + InputStreamReader isr = new InputStreamReader(fc.getExternalContext().getResourceAsStream(loadUrl)); // $ hasUnsafeUrlForward (path-inj?) BufferedReader br = new BufferedReader(isr); if(br.ready()) { //Do Stuff @@ -34,7 +34,7 @@ public String parameterActionBad2() throws IOException { URL url = fc.getExternalContext().getResource(loadUrl); - InputStream in = url.openStream(); + InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) //Do Stuff return "result"; } diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java index ee63939b209e..9d501f2ec0df 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java @@ -29,13 +29,13 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) rd.forward(request, response); } else { ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher(returnURL); + RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasUnsafeUrlForward rd.forward(request, response); } } @Override - // BAD: Request dispatcher constructed from `HttpServletRequest` without input validation + // BAD: Request dispatcher constructed from `HttpServletRequest` without input validation protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); @@ -45,7 +45,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); rd.forward(request, response); } else { - RequestDispatcher rd = request.getRequestDispatcher(returnURL); + RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasUnsafeUrlForward rd.forward(request, response); } } @@ -65,22 +65,22 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response) } } - // BAD: Request dispatcher without path traversal check + // BAD: Request dispatcher without path traversal check protected void doHead2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); - // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check - // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` + // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check + // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` if (path.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(path).include(request, response); + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUnsafeUrlForward } } - // GOOD: Request dispatcher with path traversal check + // GOOD: Request dispatcher with path traversal check protected void doHead3(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); + String path = request.getParameter("path"); if (path.startsWith(BASE_PATH) && !path.contains("..")) { request.getServletContext().getRequestDispatcher(path).include(request, response); @@ -110,7 +110,7 @@ protected void doHead5(HttpServletRequest request, HttpServletResponse response) Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ MISSING: hasUnsafeUrlForward } } diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected deleted file mode 100644 index 5d809244fdba..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.expected +++ /dev/null @@ -1,129 +0,0 @@ -edges -| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | -| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | UnsafeLoadSpringResource.java:35:31:35:33 | clr | -| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | -| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | -| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | -| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | -| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:17:20:17:25 | params : Map | -| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | -| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:33:20:33:25 | params : Map | -| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | -| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | UnsafeResourceGet2.java:37:20:37:22 | url | -| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | -| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | -| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | UnsafeResourceGet.java:41:20:41:22 | url | -| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | -| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | -| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | -| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | UnsafeResourceGet.java:150:20:150:22 | url | -| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | -| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | -| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | -| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | UnsafeResourceGet.java:226:20:226:22 | url | -| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | -| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:241:33:241:43 | requestPath : String | -| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | UnsafeResourceGet.java:245:21:245:22 | rs : Resource | -| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | -| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | -| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | -| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | -| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | -| UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | -| UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | -| UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | -| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | -| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | -| UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | -| UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | -| UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | -nodes -| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | semmle.label | new ClassPathResource(...) : ClassPathResource | -| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:35:31:35:33 | clr | semmle.label | clr | -| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:76:38:76:45 | fileName | semmle.label | fileName | -| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | semmle.label | fileName | -| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | semmle.label | getServletPath(...) : String | -| UnsafeRequestPath.java:23:33:23:36 | path | semmle.label | path | -| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | -| UnsafeResourceGet2.java:17:20:17:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | semmle.label | get(...) : String | -| UnsafeResourceGet2.java:19:93:19:99 | loadUrl | semmle.label | loadUrl | -| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | -| UnsafeResourceGet2.java:33:20:33:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | semmle.label | get(...) : String | -| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | semmle.label | loadUrl : String | -| UnsafeResourceGet2.java:37:20:37:22 | url | semmle.label | url | -| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | semmle.label | requestUrl : String | -| UnsafeResourceGet.java:41:20:41:22 | url | semmle.label | url | -| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:115:68:115:78 | requestPath | semmle.label | requestPath | -| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | semmle.label | requestUrl : String | -| UnsafeResourceGet.java:150:20:150:22 | url | semmle.label | url | -| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:189:68:189:78 | requestPath | semmle.label | requestPath | -| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | semmle.label | requestUrl : String | -| UnsafeResourceGet.java:226:20:226:22 | url | semmle.label | url | -| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | semmle.label | getResource(...) : Resource | -| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | semmle.label | requestPath : String | -| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | semmle.label | rs : Resource | -| UnsafeResourceGet.java:245:21:245:32 | getPath(...) | semmle.label | getPath(...) | -| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | semmle.label | returnURL | -| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | semmle.label | returnURL | -| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeServletRequestDispatch.java:76:53:76:56 | path | semmle.label | path | -| UnsafeUrlForward.java:13:27:13:36 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:14:27:14:29 | url | semmle.label | url | -| UnsafeUrlForward.java:18:27:18:36 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:20:28:20:30 | url | semmle.label | url | -| UnsafeUrlForward.java:25:21:25:30 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:26:23:26:25 | url | semmle.label | url | -| UnsafeUrlForward.java:30:27:30:36 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:31:48:31:63 | ... + ... | semmle.label | ... + ... | -| UnsafeUrlForward.java:31:61:31:63 | url | semmle.label | url | -| UnsafeUrlForward.java:36:19:36:28 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:38:33:38:35 | url | semmle.label | url | -| UnsafeUrlForward.java:47:19:47:28 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:49:33:49:62 | ... + ... | semmle.label | ... + ... | -| UnsafeUrlForward.java:58:19:58:28 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:60:33:60:62 | ... + ... | semmle.label | ... + ... | -subpaths -#select -| UnsafeLoadSpringResource.java:35:31:35:33 | clr | UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:35:31:35:33 | clr | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:27:32:27:77 | fileName | user-provided value | -| UnsafeLoadSpringResource.java:76:38:76:45 | fileName | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:68:32:68:77 | fileName | user-provided value | -| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:108:32:108:77 | fileName | user-provided value | -| UnsafeRequestPath.java:23:33:23:36 | path | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | Potentially untrusted URL forward due to $@. | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) | user-provided value | -| UnsafeResourceGet2.java:19:93:19:99 | loadUrl | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) | user-provided value | -| UnsafeResourceGet2.java:37:20:37:22 | url | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:37:20:37:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) | user-provided value | -| UnsafeResourceGet.java:41:20:41:22 | url | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:41:20:41:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:115:68:115:78 | requestPath | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:150:20:150:22 | url | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:150:20:150:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:189:68:189:78 | requestPath | UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:181:24:181:58 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:226:20:226:22 | url | UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:226:20:226:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:219:23:219:56 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:245:21:245:32 | getPath(...) | UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:237:24:237:58 | getParameter(...) | user-provided value | -| UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) | user-provided value | -| UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) | user-provided value | -| UnsafeServletRequestDispatch.java:76:53:76:56 | path | UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) | user-provided value | -| UnsafeUrlForward.java:14:27:14:29 | url | UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:13:27:13:36 | url | user-provided value | -| UnsafeUrlForward.java:20:28:20:30 | url | UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:18:27:18:36 | url | user-provided value | -| UnsafeUrlForward.java:26:23:26:25 | url | UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:25:21:25:30 | url | user-provided value | -| UnsafeUrlForward.java:31:48:31:63 | ... + ... | UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:30:27:30:36 | url | user-provided value | -| UnsafeUrlForward.java:31:61:31:63 | url | UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:30:27:30:36 | url | user-provided value | -| UnsafeUrlForward.java:38:33:38:35 | url | UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:36:19:36:28 | url | user-provided value | -| UnsafeUrlForward.java:49:33:49:62 | ... + ... | UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:47:19:47:28 | url | user-provided value | -| UnsafeUrlForward.java:60:33:60:62 | ... + ... | UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:58:19:58:28 | url | user-provided value | diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java index 4018ed289481..0a00637cd44c 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java @@ -11,31 +11,31 @@ public class UnsafeUrlForward { @GetMapping("/bad1") public ModelAndView bad1(String url) { - return new ModelAndView(url); + return new ModelAndView(url); // $ hasUnsafeUrlForward } @GetMapping("/bad2") public ModelAndView bad2(String url) { ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName(url); + modelAndView.setViewName(url); // $ hasUnsafeUrlForward return modelAndView; } @GetMapping("/bad3") public String bad3(String url) { - return "forward:" + url + "/swagger-ui/index.html"; + return "forward:" + url + "/swagger-ui/index.html"; // $ hasUnsafeUrlForward } @GetMapping("/bad4") public ModelAndView bad4(String url) { - ModelAndView modelAndView = new ModelAndView("forward:" + url); + ModelAndView modelAndView = new ModelAndView("forward:" + url); // $ hasUnsafeUrlForward return modelAndView; } @GetMapping("/bad5") public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher(url).include(request, response); + request.getRequestDispatcher(url).include(request, response); // $ hasUnsafeUrlForward } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -46,7 +46,7 @@ public void bad5(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/bad6") public void bad6(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); // $ hasUnsafeUrlForward } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -57,7 +57,7 @@ public void bad6(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/bad7") public void bad7(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); // $ hasUnsafeUrlForward } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref deleted file mode 100644 index 934a18cc6c78..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.expected b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.expected new file mode 100644 index 000000000000..8ec8033d086e --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.expected @@ -0,0 +1,2 @@ +testFailures +failures diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql new file mode 100644 index 000000000000..cf77edcf12a4 --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql @@ -0,0 +1,18 @@ +import java +import TestUtilities.InlineExpectationsTest +import semmle.code.java.security.UnsafeUrlForwardQuery + +module UnsafeUrlForwardTest implements TestSig { + string getARelevantTag() { result = "hasUnsafeUrlForward" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasUnsafeUrlForward" and + exists(UnsafeUrlForwardFlow::PathNode sink | UnsafeUrlForwardFlow::flowPath(_, sink) | + location = sink.getNode().getLocation() and + element = sink.getNode().toString() and + value = "" + ) + } +} + +import MakeTest<UnsafeUrlForwardTest> From 915e106ab382aaa060e11b02e34d61c7434452c6 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Mon, 20 Nov 2023 18:10:07 -0500 Subject: [PATCH 177/731] Java: remove path-injection related models and tests for now --- ...unsafeUrlForwardExperimentalMove.model.yml | 40 +-- .../code/java/security/UnsafeUrlForward.qll | 91 +----- .../java/security/UnsafeUrlForwardQuery.qll | 24 +- .../CWE-552/UnsafeLoadSpringResource.java | 155 ---------- .../security/CWE-552/UnsafeResourceGet.java | 270 ------------------ .../security/CWE-552/UnsafeResourceGet2.java | 58 ---- 6 files changed, 12 insertions(+), 626 deletions(-) delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java diff --git a/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml b/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml index b48d891e692d..27c1094d765b 100644 --- a/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml +++ b/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml @@ -6,56 +6,18 @@ extensions: - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] - # # ! below added by me when debugging CVEs: - # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "retrieve", "(String,String,String,ServletWebRequest,boolean)", "", "Parameter[3]", "remote", "manual"] - # - ["org.springframework.web.context.request", "ServletWebRequest", True, "getContextPath", "()", "", "ReturnValue", "remote", "manual"] - - addsTo: pack: codeql/java-all extensible: sinkModel data: - ["java.util.concurrent", "TimeUnit", True, "sleep", "", "", "Argument[0]", "thread-pause", "manual"] # ! this seems like a typo; doesn't look like it's used in the query at all - - ["org.springframework.core.io", "ClassPathResource", True, "getFilename", "", "", "Argument[this]", "get-resource", "manual"] # ! Note: `ClassPathResource` implements `Resource`, so it might make more sense to model some of these as `Resource` with subtype True. - - ["org.springframework.core.io", "ClassPathResource", True, "getPath", "", "", "Argument[this]", "get-resource", "manual"] - - ["org.springframework.core.io", "ClassPathResource", True, "getURL", "", "", "Argument[this]", "get-resource", "manual"] - - ["org.springframework.core.io", "ClassPathResource", True, "resolveURL", "", "", "Argument[this]", "get-resource", "manual"] - # # ! below added by me when debugging CVEs: - # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "retrieve", "", "", "Argument[0]", "get-resource", "manual"] # don't need - # # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "getFilePath", "", "", "Argument[0..3]", "get-resource", "manual"] # don't need - # # - ["org.springframework.cloud.config.server.resource", "ResourceRepository", True, "findOne", "", "", "Argument[0..3]", "get-resource", "manual"] # convert to summary - # # - ["org.springframework.core.io", "InputStreamSource", True, "getInputStream", "", "", "Argument[this]", "get-resource", "manual"] # convert to summary - # - ["org.springframework.util", "StreamUtils", True, "copyToString", "", "", "Argument[0]", "get-resource", "manual"] # * public class with good docs - # # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator", True, "getLocations", "(String,String,String)", "", "Argument[0..2]", "get-resource", "manual"] # convert to summary - # # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator$Locations", True, "getLocations", "()", "", "Argument[this]", "get-resource", "manual"] # convert to summary - # - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "", "", "Argument[0]", "get-resource", "manual"] # * public interface with good docs, might be problematic for FPs based on fact that the ext contributor changed this to a taint step to avoid "exists" FPS (maybe there's another way to exclude those FPs though). - # - ["javax.servlet", "ServletContext", True, "getResource", "", "", "Argument[0]", "get-resource", "manual"] - # - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "", "", "Argument[0]", "get-resource", "manual"] - # - ["javax.servlet", "ServletContext", True, "getResourcePaths", "", "", "Argument[0]", "get-resource", "manual"] - # - ["javax.servlet", "ServletContext", True, "getResource", "", "", "Argument[this]", "get-resource", "manual"] - # - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "", "", "Argument[this]", "get-resource", "manual"] - # - ["javax.servlet", "ServletContext", True, "getResourcePaths", "", "", "Argument[this]", "get-resource", "manual"] - # # - ["org.apache.tomcat.util.http", "RequestUtil", True, "normalize", "", "", "Argument[0]", "get-resource", "manual"] - - addsTo: pack: codeql/java-all extensible: summaryModel data: - - ["io.undertow.server.handlers.resource", "Resource", True, "getFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["io.undertow.server.handlers.resource", "Resource", True, "getFilePath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["io.undertow.server.handlers.resource", "Resource", True, "getPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! this as a taint step seems to contradict the fact that they did `ClassPathResource.getPath` as a sink for Spring... - - ["java.nio.file", "Path", True, "normalize", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! shouldn't this be a sanitizer instead??? Or no because WEB-INF ones don't care about normalization? + - ["java.nio.file", "Path", True, "normalize", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! check if this and the below are already in the default models - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.nio.file", "Paths", True, "get", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - - ["org.springframework.core.io", "ClassPathResource", False, "ClassPathResource", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] - - ["org.springframework.core.io", "Resource", True, "createRelative", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - # # ! below added/modified by me when debugging CVEs: - - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - # - ["org.springframework.cloud.config.server.resource", "ResourceRepository", True, "findOne", "", "", "Argument[0..3]", "ReturnValue", "taint", "manual"] # * public interface, but might be too specific, no easily findable docs... - # - ["org.springframework.core.io", "InputStreamSource", True, "getInputStream", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # * public interface with good docs, Note: other `getInputStream`s are remote source and/or taint step, so this as taint step versus sink probably is more consistent - # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator", True, "getLocations", "(String,String,String)", "", "Argument[0..2]", "ReturnValue", "taint", "manual"] # * public interface with docs: https://www.javadoc.io/static/org.springframework.cloud/spring-cloud-config-server/2.1.0.RELEASE/org/springframework/cloud/config/server/environment/SearchPathLocator.html - # - ["org.springframework.cloud.config.server.environment", "SearchPathLocator$Locations", True, "getLocations", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! is the `Locations` class package-private? Or does it inherit public from it's enclosing interface? - # - ["org.springframework.cloud.config.server.resource", "ResourceController", True, "getFilePath", "", "", "Argument[0..3]", "ReturnValue", "taint", "manual"] # don't need diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll index 48b4431015e4..dd3e17aa8321 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll @@ -22,96 +22,7 @@ private class RequestDispatcherSink extends UnsafeUrlForwardSink { } } -/** The `getResource` method of `Class`. */ -class GetClassResourceMethod extends Method { - GetClassResourceMethod() { - this.getDeclaringType() instanceof TypeClass and - this.hasName("getResource") - } -} - -/** The `getResourceAsStream` method of `Class`. */ -class GetClassResourceAsStreamMethod extends Method { - GetClassResourceAsStreamMethod() { - this.getDeclaringType() instanceof TypeClass and - this.hasName("getResourceAsStream") - } -} - -/** The `getResource` method of `ClassLoader`. */ -class GetClassLoaderResourceMethod extends Method { - GetClassLoaderResourceMethod() { - this.getDeclaringType() instanceof ClassLoaderClass and - this.hasName("getResource") - } -} - -/** The `getResourceAsStream` method of `ClassLoader`. */ -class GetClassLoaderResourceAsStreamMethod extends Method { - GetClassLoaderResourceAsStreamMethod() { - this.getDeclaringType() instanceof ClassLoaderClass and - this.hasName("getResourceAsStream") - } -} - -/** The JBoss class `FileResourceManager`. */ -class FileResourceManager extends RefType { - FileResourceManager() { - this.hasQualifiedName("io.undertow.server.handlers.resource", "FileResourceManager") - } -} - -/** The JBoss method `getResource` of `FileResourceManager`. */ -class GetWildflyResourceMethod extends Method { - GetWildflyResourceMethod() { - this.getDeclaringType().getASupertype*() instanceof FileResourceManager and - this.hasName("getResource") - } -} - -/** The JBoss class `VirtualFile`. */ -class VirtualFile extends RefType { - VirtualFile() { this.hasQualifiedName("org.jboss.vfs", "VirtualFile") } -} - -/** The JBoss method `getChild` of `FileResourceManager`. */ -class GetVirtualFileChildMethod extends Method { - GetVirtualFileChildMethod() { - this.getDeclaringType().getASupertype*() instanceof VirtualFile and - this.hasName("getChild") - } -} - -/** An argument to `getResource()` or `getResourceAsStream()`. */ -private class GetResourceSink extends UnsafeUrlForwardSink { - GetResourceSink() { - sinkNode(this, "request-forgery") - or - sinkNode(this, "get-resource") - or - exists(MethodCall ma | - ( - ma.getMethod() instanceof GetServletResourceAsStreamMethod or - ma.getMethod() instanceof GetFacesResourceAsStreamMethod or - ma.getMethod() instanceof GetClassResourceAsStreamMethod or - ma.getMethod() instanceof GetClassLoaderResourceAsStreamMethod or - ma.getMethod() instanceof GetVirtualFileChildMethod - ) and - ma.getArgument(0) = this.asExpr() - ) - } -} - -/** A sink for methods that load Spring resources. */ -private class SpringResourceSink extends UnsafeUrlForwardSink { - SpringResourceSink() { - exists(MethodCall ma | - ma.getMethod() instanceof GetResourceUtilsMethod and - ma.getArgument(0) = this.asExpr() - ) - } -} - +// TODO: look into `StaplerResponse.forward`, etc., and think about re-adding the MaD "request-forgery" sinks as a result /** An argument to `new ModelAndView` or `ModelAndView.setViewName`. */ private class SpringModelAndViewSink extends UnsafeUrlForwardSink { SpringModelAndViewSink() { diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll index 9ee3f2ab4170..6cd419a5e131 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll @@ -1,3 +1,5 @@ +/** Provides configurations to be used in queries related to unsafe URL forwarding. */ + import java import semmle.code.java.security.UnsafeUrlForward import semmle.code.java.dataflow.FlowSources @@ -5,9 +7,13 @@ import semmle.code.java.dataflow.TaintTracking import semmle.code.java.Jsf import semmle.code.java.security.PathSanitizer +/** + * A taint-tracking configuration for untrusted user input in a URL forward or include. + */ module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource and + // TODO: move below logic to class in UnsafeUrlForward.qll? not exists(MethodCall ma, Method m | ma.getMethod() = m | ( m instanceof HttpServletRequestGetRequestUriMethod or @@ -25,21 +31,11 @@ module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { node instanceof PathInjectionSanitizer } + // TODO: check if the below is still needed after removing path-injection related sinks. DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } - - predicate isAdditionalFlowStep(DataFlow::Node prev, DataFlow::Node succ) { - exists(MethodCall ma | - ( - ma.getMethod() instanceof GetServletResourceMethod or - ma.getMethod() instanceof GetFacesResourceMethod or - ma.getMethod() instanceof GetClassResourceMethod or - ma.getMethod() instanceof GetClassLoaderResourceMethod or - ma.getMethod() instanceof GetWildflyResourceMethod - ) and - ma.getArgument(0) = prev.asExpr() and - ma = succ.asExpr() - ) - } } +/** + * Taint-tracking flow for untrusted user input in a URL forward or include. + */ module UnsafeUrlForwardFlow = TaintTracking::Global<UnsafeUrlForwardFlowConfig>; diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java b/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java deleted file mode 100644 index 363d84cabe90..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeLoadSpringResource.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.example; - -import java.io.File; -import java.io.FileReader; -import java.io.InputStreamReader; -import java.io.IOException; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.nio.file.Files; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.ResourceLoader; -import org.springframework.util.ResourceUtils; -import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -/** Sample class of Spring RestController */ -@RestController -public class UnsafeLoadSpringResource { - @GetMapping("/file1") - //BAD: Get resource from ClassPathResource without input validation - public String getFileContent1(@RequestParam(name="fileName") String fileName) { - // A request such as the following can disclose source code and application configuration - // fileName=/../../WEB-INF/views/page.jsp - // fileName=/com/example/package/SampleController.class - ClassPathResource clr = new ClassPathResource(fileName); - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - try { - Reader in = new FileReader(clr.getFilename()); // $ hasUnsafeUrlForward (path-inj?) - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - } catch (IOException ie) { - ie.printStackTrace(); - } - return out.toString(); - } - - @GetMapping("/file1a") - //GOOD: Get resource from ClassPathResource with input path validation - public String getFileContent1a(@RequestParam(name="fileName") String fileName) { - String result = null; - if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { - ClassPathResource clr = new ClassPathResource(fileName); - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - try { - Reader in = new InputStreamReader(clr.getInputStream(), "UTF-8"); - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - } catch (IOException ie) { - ie.printStackTrace(); - } - result = out.toString(); - } - return result; - } - - @GetMapping("/file2") - //BAD: Get resource from ResourceUtils without input validation - public String getFileContent2(@RequestParam(name="fileName") String fileName) { - String content = null; - - try { - // A request such as the following can disclose source code and system configuration - // fileName=/etc/hosts - // fileName=file:/etc/hosts - // fileName=/opt/appdir/WEB-INF/views/page.jsp - File file = ResourceUtils.getFile(fileName); // $ hasUnsafeUrlForward (path-inj?) - //Read File Content - content = new String(Files.readAllBytes(file.toPath())); - } catch (IOException ie) { - ie.printStackTrace(); - } - return content; - } - - @GetMapping("/file2a") - //GOOD: Get resource from ResourceUtils with input path validation - public String getFileContent2a(@RequestParam(name="fileName") String fileName) { - String content = null; - - if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { - try { - File file = ResourceUtils.getFile(fileName); - //Read File Content - content = new String(Files.readAllBytes(file.toPath())); - } catch (IOException ie) { - ie.printStackTrace(); - } - } - return content; - } - - @Autowired - ResourceLoader resourceLoader; - - @GetMapping("/file3") - //BAD: Get resource from ResourceLoader (same as application context) without input validation - // Note it is not detected without the generic `resource.getInputStream()` check - public String getFileContent3(@RequestParam(name="fileName") String fileName) { - String content = null; - - try { - // A request such as the following can disclose source code and system configuration - // fileName=/WEB-INF/views/page.jsp - // fileName=/WEB-INF/classes/com/example/package/SampleController.class - // fileName=file:/etc/hosts - Resource resource = resourceLoader.getResource(fileName); // $ hasUnsafeUrlForward (path-inj?) - - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - - Reader in = new InputStreamReader(resource.getInputStream(), "UTF-8"); - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - content = out.toString(); - } catch (IOException ie) { - ie.printStackTrace(); - } - return content; - } - - @GetMapping("/file3a") - //GOOD: Get resource from ResourceLoader (same as application context) with input path validation - public String getFileContent3a(@RequestParam(name="fileName") String fileName) { - String content = null; - - if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { - try { - Resource resource = resourceLoader.getResource(fileName); - - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - - Reader in = new InputStreamReader(resource.getInputStream(), "UTF-8"); - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - content = out.toString(); - } catch (IOException ie) { - ie.printStackTrace(); - } - } - return content; - } -} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java deleted file mode 100644 index 053887984c61..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.example; - -import java.io.InputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.net.URI; -import java.net.URL; -import java.net.URISyntaxException; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.ServletOutputStream; -import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; - -import io.undertow.server.handlers.resource.FileResourceManager; -import io.undertow.server.handlers.resource.Resource; -import org.jboss.vfs.VFS; -import org.jboss.vfs.VirtualFile; - -public class UnsafeResourceGet extends HttpServlet { - private static final String BASE_PATH = "/pages"; - - @Override - // BAD: getResource constructed from `ServletContext` without input validation - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file - URL url = sc.getResource(requestUrl); - - InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResource constructed from `ServletContext` with input validation - protected void doGetGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - Path path = Paths.get(requestUrl).normalize().toRealPath(); - if (path.startsWith(BASE_PATH)) { - URL url = sc.getResource(path.toString()); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - // GOOD: getResource constructed from `ServletContext` with null check only - protected void doGetGood2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - PrintWriter writer = response.getWriter(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file - URL url = sc.getResource(requestUrl); - if (url == null) { - writer.println("Requested source not found"); - } - } - - // GOOD: getResource constructed from `ServletContext` with `equals` check - protected void doGetGood3(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - ServletContext sc = request.getServletContext(); - - if (requestUrl.equals("/public/crossdomain.xml")) { - URL url = sc.getResource(requestUrl); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - @Override - // BAD: getResourceAsStream constructed from `ServletContext` without input validation - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file - InputStream in = request.getServletContext().getResourceAsStream(requestPath); // $ hasUnsafeUrlForward (path-inj?) - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResourceAsStream constructed from `ServletContext` with input validation - protected void doPostGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { - InputStream in = request.getServletContext().getResourceAsStream(requestPath); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - @Override - // BAD: getResource constructed from `Class` without input validation - protected void doHead(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file - // Note the class is in two levels of subpackages and `Class.getResource` starts from its own directory - URL url = getClass().getResource(requestUrl); - - InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResource constructed from `Class` with input validation - protected void doHeadGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - Path path = Paths.get(requestUrl).normalize().toRealPath(); - if (path.startsWith(BASE_PATH)) { - URL url = getClass().getResource(path.toString()); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - @Override - // BAD: getResourceAsStream constructed from `ClassLoader` without input validation - protected void doPut(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file - // Note the class is in two levels of subpackages and `ClassLoader.getResourceAsStream` starts from its own directory - InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); // $ hasUnsafeUrlForward (path-inj?) - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResourceAsStream constructed from `ClassLoader` with input validation - protected void doPutGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { - InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - // BAD: getResource constructed from `ClassLoader` without input validation - protected void doPutBad(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file - // Note the class is in two levels of subpackages and `ClassLoader.getResource` starts from its own directory - URL url = getClass().getClassLoader().getResource(requestUrl); - - InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // BAD: getResource constructed using Undertow IO without input validation - protected void doPutBad2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - - try { - FileResourceManager rm = new FileResourceManager(VFS.getChild(new URI("/usr/share")).getPhysicalFile()); - Resource rs = rm.getResource(requestPath); - - VirtualFile overlay = VFS.getChild(new URI("EAP_HOME/modules/")); - // Do file operations - overlay.getChild(rs.getPath()); // $ hasUnsafeUrlForward (path-inj?) - } catch (URISyntaxException ue) { - throw new IOException("Cannot parse the URI"); - } - } - - // GOOD: getResource constructed using Undertow IO with input validation - protected void doPutGood2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - - try { - FileResourceManager rm = new FileResourceManager(VFS.getChild(new URI("/usr/share")).getPhysicalFile()); - Resource rs = rm.getResource(requestPath); - - VirtualFile overlay = VFS.getChild(new URI("EAP_HOME/modules/")); - String path = rs.getPath(); - if (path.startsWith("/trusted_path") && !path.contains("..")) { - // Do file operations - overlay.getChild(path); - } - } catch (URISyntaxException ue) { - throw new IOException("Cannot parse the URI"); - } - } -} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java b/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java deleted file mode 100644 index 0043bb06c67a..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeResourceGet2.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.example; - -import javax.faces.context.FacesContext; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.IOException; -import java.net.URL; -import java.util.Map; - -/** Sample class of JSF managed bean */ -public class UnsafeResourceGet2 { - // BAD: getResourceAsStream constructed from `ExternalContext` without input validation - public String parameterActionBad1() throws IOException { - FacesContext fc = FacesContext.getCurrentInstance(); - Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); - String loadUrl = params.get("loadUrl"); - - InputStreamReader isr = new InputStreamReader(fc.getExternalContext().getResourceAsStream(loadUrl)); // $ hasUnsafeUrlForward (path-inj?) - BufferedReader br = new BufferedReader(isr); - if(br.ready()) { - //Do Stuff - return "result"; - } - - return "home"; - } - - // BAD: getResource constructed from `ExternalContext` without input validation - public String parameterActionBad2() throws IOException { - FacesContext fc = FacesContext.getCurrentInstance(); - Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); - String loadUrl = params.get("loadUrl"); - - URL url = fc.getExternalContext().getResource(loadUrl); - - InputStream in = url.openStream(); // $ hasUnsafeUrlForward (SSRF) - //Do Stuff - return "result"; - } - - // GOOD: getResource constructed from `ExternalContext` with input validation - public String parameterActionGood1() throws IOException { - FacesContext fc = FacesContext.getCurrentInstance(); - Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); - String loadUrl = params.get("loadUrl"); - - if (loadUrl.equals("/public/crossdomain.xml")) { - URL url = fc.getExternalContext().getResource(loadUrl); - - InputStream in = url.openStream(); - //Do Stuff - return "result"; - } - - return "home"; - } -} From 2a682995aeadbb919d4c400b916c7737fae0b150 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Thu, 30 Nov 2023 11:16:39 -0500 Subject: [PATCH 178/731] Java: move MaD models to correct files, delete ones that already exist --- .../ql/lib/ext/jakarta.servlet.http.model.yml | 6 +++++ java/ql/lib/ext/javax.servlet.http.model.yml | 2 ++ ...unsafeUrlForwardExperimentalMove.model.yml | 23 ------------------- 3 files changed, 8 insertions(+), 23 deletions(-) create mode 100644 java/ql/lib/ext/jakarta.servlet.http.model.yml delete mode 100644 java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml new file mode 100644 index 000000000000..5a83b1ac08d8 --- /dev/null +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index afac25e4bc85..ec35445d199a 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -18,6 +18,8 @@ extensions: - ["javax.servlet.http", "HttpServletRequest", False, "getRemoteUser", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURI", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURL", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "HttpServletRequest", False, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] + - addsTo: pack: codeql/java-all extensible: sinkModel diff --git a/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml b/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml deleted file mode 100644 index 27c1094d765b..000000000000 --- a/java/ql/lib/ext/unsafeUrlForwardExperimentalMove.model.yml +++ /dev/null @@ -1,23 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: sourceModel - data: - - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] - - ["javax.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] - - - addsTo: - pack: codeql/java-all - extensible: sinkModel - data: - - ["java.util.concurrent", "TimeUnit", True, "sleep", "", "", "Argument[0]", "thread-pause", "manual"] # ! this seems like a typo; doesn't look like it's used in the query at all - - - addsTo: - pack: codeql/java-all - extensible: summaryModel - data: - - ["java.nio.file", "Path", True, "normalize", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] # ! check if this and the below are already in the default models - - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.nio.file", "Paths", True, "get", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] From 4ff884e26cad54486745861fe1145c6539418f8c Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Thu, 30 Nov 2023 11:31:39 -0500 Subject: [PATCH 179/731] Java: remove more path-injection related classes (will maybe add some of these back in a separate PR) --- java/ql/lib/semmle/code/java/Jsf.qll | 35 ------------------- .../lib/semmle/code/java/SpringResource.qll | 22 ------------ .../code/java/security/UnsafeUrlForward.qll | 2 -- .../java/security/UnsafeUrlForwardQuery.qll | 1 - 4 files changed, 60 deletions(-) delete mode 100644 java/ql/lib/semmle/code/java/Jsf.qll delete mode 100644 java/ql/lib/semmle/code/java/SpringResource.qll diff --git a/java/ql/lib/semmle/code/java/Jsf.qll b/java/ql/lib/semmle/code/java/Jsf.qll deleted file mode 100644 index 9023953add4b..000000000000 --- a/java/ql/lib/semmle/code/java/Jsf.qll +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Provides classes and predicates for working with the Java Server Faces (JSF). - */ - -// TODO: COMBINE WITH EXISTING JSF-RELATED QLL FILES! -import java - -/** - * The JSF class `ExternalContext` for processing HTTP requests. - */ -class ExternalContext extends RefType { - ExternalContext() { - this.hasQualifiedName(["javax.faces.context", "jakarta.faces.context"], "ExternalContext") - } -} - -/** - * The method `getResource()` declared in JSF `ExternalContext`. - */ -class GetFacesResourceMethod extends Method { - GetFacesResourceMethod() { - this.getDeclaringType().getASupertype*() instanceof ExternalContext and - this.hasName("getResource") - } -} - -/** - * The method `getResourceAsStream()` declared in JSF `ExternalContext`. - */ -class GetFacesResourceAsStreamMethod extends Method { - GetFacesResourceAsStreamMethod() { - this.getDeclaringType().getASupertype*() instanceof ExternalContext and - this.hasName("getResourceAsStream") - } -} diff --git a/java/ql/lib/semmle/code/java/SpringResource.qll b/java/ql/lib/semmle/code/java/SpringResource.qll deleted file mode 100644 index a7d3a3793b6d..000000000000 --- a/java/ql/lib/semmle/code/java/SpringResource.qll +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Provides classes for working with resource loading in Spring. - */ - -// TODO: COMBINE WITH EXISTING SPRING-RELATED QLL FILES! -import java -private import semmle.code.java.dataflow.FlowSources - -/** A utility class for resolving resource locations to files in the file system in the Spring framework. */ -class ResourceUtils extends Class { - ResourceUtils() { this.hasQualifiedName("org.springframework.util", "ResourceUtils") } -} - -/** - * A method declared in `org.springframework.util.ResourceUtils` that loads Spring resources. - */ -class GetResourceUtilsMethod extends Method { - GetResourceUtilsMethod() { - this.getDeclaringType().getASupertype*() instanceof ResourceUtils and - this.hasName(["extractArchiveURL", "extractJarFileURL", "getFile", "getURL"]) - } -} diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll index dd3e17aa8321..628397d07ef9 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll @@ -1,10 +1,8 @@ import java -private import semmle.code.java.Jsf private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.StringPrefixes private import semmle.code.java.frameworks.javaee.ejb.EJBRestrictions -private import semmle.code.java.SpringResource /** A sink for unsafe URL forward vulnerabilities. */ abstract class UnsafeUrlForwardSink extends DataFlow::Node { } diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll index 6cd419a5e131..4231af1a90a2 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll @@ -4,7 +4,6 @@ import java import semmle.code.java.security.UnsafeUrlForward import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.TaintTracking -import semmle.code.java.Jsf import semmle.code.java.security.PathSanitizer /** From 42e3825ea3b50ee362ae723c657744de85860e5e Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 5 Mar 2024 11:55:54 -0500 Subject: [PATCH 180/731] Java: convert RequestDispatcherSink to MaD --- java/ql/lib/ext/jakarta.servlet.model.yml | 8 ++++++++ java/ql/lib/ext/javax.portlet.model.yml | 7 +++++++ java/ql/lib/ext/javax.servlet.model.yml | 3 +++ .../semmle/code/java/security/UnsafeUrlForward.qll | 11 +++-------- 4 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 java/ql/lib/ext/jakarta.servlet.model.yml create mode 100644 java/ql/lib/ext/javax.portlet.model.yml diff --git a/java/ql/lib/ext/jakarta.servlet.model.yml b/java/ql/lib/ext/jakarta.servlet.model.yml new file mode 100644 index 000000000000..fc1274cadaf6 --- /dev/null +++ b/java/ql/lib/ext/jakarta.servlet.model.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + # TODO: potentially switch to using Argument[this] of `RequestDispatcher.forward|include` as sink instead of the below. + - ["jakarta.servlet", "ServletContext", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] + - ["jakarta.servlet", "ServletRequest", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] diff --git a/java/ql/lib/ext/javax.portlet.model.yml b/java/ql/lib/ext/javax.portlet.model.yml new file mode 100644 index 000000000000..e39484abcb74 --- /dev/null +++ b/java/ql/lib/ext/javax.portlet.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + # TODO: potentially switch to using Argument[this] of `PortletRequestDispatcher.forward|include` as sink instead of the below. + - ["javax.portlet", "PortletContext", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.model.yml b/java/ql/lib/ext/javax.servlet.model.yml index 581863c74f7e..7c405ac0de91 100644 --- a/java/ql/lib/ext/javax.servlet.model.yml +++ b/java/ql/lib/ext/javax.servlet.model.yml @@ -14,6 +14,9 @@ extensions: extensible: sinkModel data: - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + # TODO: potentially switch to using Argument[this] of `RequestDispatcher.forward|include` as sink instead of the below. + - ["javax.servlet", "ServletContext", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] + - ["javax.servlet", "ServletRequest", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll index 628397d07ef9..e7780ee971b6 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll @@ -10,14 +10,9 @@ abstract class UnsafeUrlForwardSink extends DataFlow::Node { } /** A sanitizer for unsafe URL forward vulnerabilities. */ abstract class UnsafeUrlForwardSanitizer extends DataFlow::Node { } -/** An argument to `getRequestDispatcher`. */ -private class RequestDispatcherSink extends UnsafeUrlForwardSink { - RequestDispatcherSink() { - exists(MethodCall ma | - ma.getMethod() instanceof GetRequestDispatcherMethod and - ma.getArgument(0) = this.asExpr() - ) - } +/** A default sink representing methods susceptible to unsafe URL forwarding. */ +private class DefaultUnsafeUrlForwardSink extends UnsafeUrlForwardSink { + DefaultUnsafeUrlForwardSink() { sinkNode(this, "url-forward") } } // TODO: look into `StaplerResponse.forward`, etc., and think about re-adding the MaD "request-forgery" sinks as a result From 8d66097483a8892d4a15c2232e63d883035a45f9 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Thu, 30 Nov 2023 13:50:51 -0500 Subject: [PATCH 181/731] Java: switch StaplerResponse.forward from request-forgery sink to url-forward sink --- java/ql/lib/ext/org.kohsuke.stapler.model.yml | 2 +- java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/java/ql/lib/ext/org.kohsuke.stapler.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.model.yml index 63bbdbfd52a6..ca9f08ba78c9 100644 --- a/java/ql/lib/ext/org.kohsuke.stapler.model.yml +++ b/java/ql/lib/ext/org.kohsuke.stapler.model.yml @@ -9,7 +9,7 @@ extensions: - ["org.kohsuke.stapler", "HttpResponses", True, "staticResource", "(URL,long)", "", "Argument[0]", "request-forgery", "manual"] - ["org.kohsuke.stapler", "HttpResponses", True, "html", "(String)", "", "Argument[0]", "html-injection", "manual"] - ["org.kohsuke.stapler", "HttpResponses", True, "literalHtml", "(String)", "", "Argument[0]", "html-injection", "manual"] - - ["org.kohsuke.stapler", "StaplerResponse", True, "forward", "(Object,String,StaplerRequest)", "", "Argument[1]", "request-forgery", "manual"] + - ["org.kohsuke.stapler", "StaplerResponse", True, "forward", "(Object,String,StaplerRequest)", "", "Argument[1]", "url-forward", "manual"] - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect2", "(String)", "", "Argument[0]", "url-redirection", "manual"] - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect", "(int,String)", "", "Argument[1]", "url-redirection", "manual"] - ["org.kohsuke.stapler", "StaplerResponse", True, "sendRedirect", "(String)", "", "Argument[0]", "url-redirection", "manual"] diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll index e7780ee971b6..0e96066c72e1 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll @@ -15,7 +15,6 @@ private class DefaultUnsafeUrlForwardSink extends UnsafeUrlForwardSink { DefaultUnsafeUrlForwardSink() { sinkNode(this, "url-forward") } } -// TODO: look into `StaplerResponse.forward`, etc., and think about re-adding the MaD "request-forgery" sinks as a result /** An argument to `new ModelAndView` or `ModelAndView.setViewName`. */ private class SpringModelAndViewSink extends UnsafeUrlForwardSink { SpringModelAndViewSink() { From 1da1e896cbc8eb1b918c8c4950010b53146391a6 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 5 Mar 2024 12:25:19 -0500 Subject: [PATCH 182/731] Java: convert SpringModelAndViewSink to MaD --- .../ext/org.springframework.web.portlet.model.yml | 7 +++++++ .../ext/org.springframework.web.servlet.model.yml | 7 +++++++ .../semmle/code/java/security/UnsafeUrlForward.qll | 12 ------------ shared/mad/codeql/mad/ModelValidation.qll | 4 ++-- 4 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 java/ql/lib/ext/org.springframework.web.portlet.model.yml create mode 100644 java/ql/lib/ext/org.springframework.web.servlet.model.yml diff --git a/java/ql/lib/ext/org.springframework.web.portlet.model.yml b/java/ql/lib/ext/org.springframework.web.portlet.model.yml new file mode 100644 index 000000000000..ba90b531c33e --- /dev/null +++ b/java/ql/lib/ext/org.springframework.web.portlet.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.springframework.web.portlet", "ModelAndView", False, "ModelAndView", "", "", "Argument[0]", "url-forward", "manual"] + - ["org.springframework.web.portlet", "ModelAndView", False, "setViewName", "", "", "Argument[0]", "url-forward", "manual"] diff --git a/java/ql/lib/ext/org.springframework.web.servlet.model.yml b/java/ql/lib/ext/org.springframework.web.servlet.model.yml new file mode 100644 index 000000000000..acdda3d569f6 --- /dev/null +++ b/java/ql/lib/ext/org.springframework.web.servlet.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sinkModel + data: + - ["org.springframework.web.servlet", "ModelAndView", False, "ModelAndView", "", "", "Argument[0]", "url-forward", "manual"] + - ["org.springframework.web.servlet", "ModelAndView", False, "setViewName", "", "", "Argument[0]", "url-forward", "manual"] diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll index 0e96066c72e1..cd65a6f63451 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll @@ -15,18 +15,6 @@ private class DefaultUnsafeUrlForwardSink extends UnsafeUrlForwardSink { DefaultUnsafeUrlForwardSink() { sinkNode(this, "url-forward") } } -/** An argument to `new ModelAndView` or `ModelAndView.setViewName`. */ -private class SpringModelAndViewSink extends UnsafeUrlForwardSink { - SpringModelAndViewSink() { - exists(ClassInstanceExpr cie | - cie.getConstructedType() instanceof ModelAndView and - cie.getArgument(0) = this.asExpr() - ) - or - exists(SpringModelAndViewSetViewNameCall smavsvnc | smavsvnc.getArgument(0) = this.asExpr()) - } -} - private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer { PrimitiveSanitizer() { this.getType() instanceof PrimitiveType or diff --git a/shared/mad/codeql/mad/ModelValidation.qll b/shared/mad/codeql/mad/ModelValidation.qll index bb3b8c174b97..20bcdd1908cd 100644 --- a/shared/mad/codeql/mad/ModelValidation.qll +++ b/shared/mad/codeql/mad/ModelValidation.qll @@ -33,8 +33,8 @@ module KindValidation<KindValidationConfigSig Config> { "bean-validation", "fragment-injection", "groovy-injection", "hostname-verification", "information-leak", "intent-redirection", "jexl-injection", "jndi-injection", "mvel-injection", "notification", "ognl-injection", "pending-intents", - "response-splitting", "trust-boundary-violation", "template-injection", "xpath-injection", - "xslt-injection", + "response-splitting", "trust-boundary-violation", "template-injection", "url-forward", + "xpath-injection", "xslt-injection", // JavaScript-only currently, but may be shared in the future "mongodb.sink", "nosql-injection", "unsafe-deserialization", // Swift-only currently, but may be shared in the future From 5a9d7552b3d92aba8cdee9a75ea95c02819bb4cf Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Thu, 30 Nov 2023 16:05:59 -0500 Subject: [PATCH 183/731] Java: add some comments and minor code reorg --- .../code/java/security/UnsafeUrlForward.qll | 54 ++++++++++--------- .../java/security/UnsafeUrlForwardQuery.qll | 2 +- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll index cd65a6f63451..4a529896f866 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll @@ -1,20 +1,40 @@ +/** Provides classes related to unsafe URL forwarding in Java. */ + import java private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.StringPrefixes -private import semmle.code.java.frameworks.javaee.ejb.EJBRestrictions /** A sink for unsafe URL forward vulnerabilities. */ abstract class UnsafeUrlForwardSink extends DataFlow::Node { } -/** A sanitizer for unsafe URL forward vulnerabilities. */ -abstract class UnsafeUrlForwardSanitizer extends DataFlow::Node { } - /** A default sink representing methods susceptible to unsafe URL forwarding. */ private class DefaultUnsafeUrlForwardSink extends UnsafeUrlForwardSink { DefaultUnsafeUrlForwardSink() { sinkNode(this, "url-forward") } } +/** + * An expression appended (perhaps indirectly) to `"forward:"`, and which + * is reachable from a Spring entry point. + */ +private class SpringUrlForwardSink extends UnsafeUrlForwardSink { + SpringUrlForwardSink() { + // TODO: check if can use MaD "Annotated" for `SpringRequestMappingMethod` or if too complicated for MaD (probably too complicated). + any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable()) and + this.asExpr() = any(ForwardPrefix fp).getAnAppendedExpression() + } +} + +// TODO: should this potentially be "include:" as well? Or does that not work similarly? +private class ForwardPrefix extends InterestingPrefix { + ForwardPrefix() { this.getStringValue() = "forward:" } + + override int getOffset() { result = 0 } +} + +/** A sanitizer for unsafe URL forward vulnerabilities. */ +abstract class UnsafeUrlForwardSanitizer extends DataFlow::Node { } + private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer { PrimitiveSanitizer() { this.getType() instanceof PrimitiveType or @@ -23,6 +43,11 @@ private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer { } } +// TODO: double-check this sanitizer (and should I switch all "sanitizer" naming to "barrier" instead?) +private class FollowsSanitizingPrefix extends UnsafeUrlForwardSanitizer { + FollowsSanitizingPrefix() { this.asExpr() = any(SanitizingPrefix fp).getAnAppendedExpression() } +} + private class SanitizingPrefix extends InterestingPrefix { SanitizingPrefix() { not this.getStringValue().matches("/WEB-INF/%") and @@ -31,24 +56,3 @@ private class SanitizingPrefix extends InterestingPrefix { override int getOffset() { result = 0 } } - -private class FollowsSanitizingPrefix extends UnsafeUrlForwardSanitizer { - FollowsSanitizingPrefix() { this.asExpr() = any(SanitizingPrefix fp).getAnAppendedExpression() } -} - -private class ForwardPrefix extends InterestingPrefix { - ForwardPrefix() { this.getStringValue() = "forward:" } - - override int getOffset() { result = 0 } -} - -/** - * An expression appended (perhaps indirectly) to `"forward:"`, and which - * is reachable from a Spring entry point. - */ -private class SpringUrlForwardSink extends UnsafeUrlForwardSink { - SpringUrlForwardSink() { - any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable()) and - this.asExpr() = any(ForwardPrefix fp).getAnAppendedExpression() - } -} diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll index 4231af1a90a2..496702345820 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll @@ -12,7 +12,7 @@ import semmle.code.java.security.PathSanitizer module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource and - // TODO: move below logic to class in UnsafeUrlForward.qll? + // TODO: move below logic to class in UnsafeUrlForward.qll? And check exactly why these were excluded. not exists(MethodCall ma, Method m | ma.getMethod() = m | ( m instanceof HttpServletRequestGetRequestUriMethod or From 6e7c05467bddf44f0411920392b6886f680c5ecf Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Fri, 1 Dec 2023 08:29:17 -0500 Subject: [PATCH 184/731] Java: update query metadata and alert message --- .../Security/CWE/CWE-552/UnsafeUrlForward.ql | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql index 4e3326a831ee..06686d5e0bd0 100644 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql +++ b/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql @@ -1,13 +1,16 @@ /** - * @name Unsafe URL forward or include from a remote source - * @description URL forward or include based on unvalidated user-input - * may cause file information disclosure. + * @name URL forward from a remote source + * @description URL forward based on unvalidated user-input + * may cause file information disclosure or + * redirection to malicious web sites. * @kind path-problem * @problem.severity error + * @security-severity 6.1 * @precision high - * @id java/unsafe-url-forward-include + * @id java/unvalidated-url-forward * @tags security - * external/cwe-552 + * external/cwe/cwe-552 + * external/cwe/cwe-601 */ import java @@ -16,5 +19,5 @@ import UnsafeUrlForwardFlow::PathGraph from UnsafeUrlForwardFlow::PathNode source, UnsafeUrlForwardFlow::PathNode sink where UnsafeUrlForwardFlow::flowPath(source, sink) -select sink.getNode(), source, sink, "Potentially untrusted URL forward due to $@.", - source.getNode(), "user-provided value" +select sink.getNode(), source, sink, "Untrusted URL forward depends on a $@.", source.getNode(), + "user-provided value" From 09bc21dbd36e4f0e4ab954d5f691bc440b2cb0c5 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Fri, 1 Dec 2023 08:56:20 -0500 Subject: [PATCH 185/731] Java: rename 'UnsafeUrlForward' to 'UrlForward' --- .../{UnsafeUrlForward.qll => UrlForward.qll} | 22 +++++++++---------- ...rlForwardQuery.qll => UrlForwardQuery.qll} | 18 +++++++-------- ...{UnsafeUrlForward.java => UrlForward.java} | 2 +- ...nsafeUrlForward.qhelp => UrlForward.qhelp} | 2 +- .../{UnsafeUrlForward.ql => UrlForward.ql} | 8 +++---- .../security/CWE-552/UnsafeRequestPath.java | 2 +- .../CWE-552/UnsafeServletRequestDispatch.java | 8 +++---- .../security/CWE-552/UnsafeUrlForwardTest.ql | 18 --------------- ...dTest.expected => UrlForwardTest.expected} | 0 ...afeUrlForward.java => UrlForwardTest.java} | 16 +++++++------- .../security/CWE-552/UrlForwardTest.ql | 18 +++++++++++++++ 11 files changed, 57 insertions(+), 57 deletions(-) rename java/ql/lib/semmle/code/java/security/{UnsafeUrlForward.qll => UrlForward.qll} (66%) rename java/ql/lib/semmle/code/java/security/{UnsafeUrlForwardQuery.qll => UrlForwardQuery.qll} (55%) rename java/ql/src/Security/CWE/CWE-552/{UnsafeUrlForward.java => UrlForward.java} (97%) rename java/ql/src/Security/CWE/CWE-552/{UnsafeUrlForward.qhelp => UrlForward.qhelp} (98%) rename java/ql/src/Security/CWE/CWE-552/{UnsafeUrlForward.ql => UrlForward.ql} (71%) delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql rename java/ql/test/query-tests/security/CWE-552/{UnsafeUrlForwardTest.expected => UrlForwardTest.expected} (100%) rename java/ql/test/query-tests/security/CWE-552/{UnsafeUrlForward.java => UrlForwardTest.java} (83%) create mode 100644 java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll similarity index 66% rename from java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll rename to java/ql/lib/semmle/code/java/security/UrlForward.qll index 4a529896f866..aa21ed48aba8 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -1,23 +1,23 @@ -/** Provides classes related to unsafe URL forwarding in Java. */ +/** Provides classes to reason about URL forward attacks. */ import java private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.StringPrefixes -/** A sink for unsafe URL forward vulnerabilities. */ -abstract class UnsafeUrlForwardSink extends DataFlow::Node { } +/** A URL forward sink. */ +abstract class UrlForwardSink extends DataFlow::Node { } -/** A default sink representing methods susceptible to unsafe URL forwarding. */ -private class DefaultUnsafeUrlForwardSink extends UnsafeUrlForwardSink { - DefaultUnsafeUrlForwardSink() { sinkNode(this, "url-forward") } +/** A default sink representing methods susceptible to URL forwarding attacks. */ +private class DefaultUrlForwardSink extends UrlForwardSink { + DefaultUrlForwardSink() { sinkNode(this, "url-forward") } } /** * An expression appended (perhaps indirectly) to `"forward:"`, and which * is reachable from a Spring entry point. */ -private class SpringUrlForwardSink extends UnsafeUrlForwardSink { +private class SpringUrlForwardSink extends UrlForwardSink { SpringUrlForwardSink() { // TODO: check if can use MaD "Annotated" for `SpringRequestMappingMethod` or if too complicated for MaD (probably too complicated). any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable()) and @@ -32,10 +32,10 @@ private class ForwardPrefix extends InterestingPrefix { override int getOffset() { result = 0 } } -/** A sanitizer for unsafe URL forward vulnerabilities. */ -abstract class UnsafeUrlForwardSanitizer extends DataFlow::Node { } +/** A URL forward sanitizer. */ +abstract class UrlForwardSanitizer extends DataFlow::Node { } -private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer { +private class PrimitiveSanitizer extends UrlForwardSanitizer { PrimitiveSanitizer() { this.getType() instanceof PrimitiveType or this.getType() instanceof BoxedType or @@ -44,7 +44,7 @@ private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer { } // TODO: double-check this sanitizer (and should I switch all "sanitizer" naming to "barrier" instead?) -private class FollowsSanitizingPrefix extends UnsafeUrlForwardSanitizer { +private class FollowsSanitizingPrefix extends UrlForwardSanitizer { FollowsSanitizingPrefix() { this.asExpr() = any(SanitizingPrefix fp).getAnAppendedExpression() } } diff --git a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll similarity index 55% rename from java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll rename to java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll index 496702345820..dadf4be612ff 100644 --- a/java/ql/lib/semmle/code/java/security/UnsafeUrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll @@ -1,18 +1,18 @@ -/** Provides configurations to be used in queries related to unsafe URL forwarding. */ +/** Provides a taint-tracking configuration for reasoning about URL forwarding. */ import java -import semmle.code.java.security.UnsafeUrlForward +import semmle.code.java.security.UrlForward import semmle.code.java.dataflow.FlowSources import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.PathSanitizer /** - * A taint-tracking configuration for untrusted user input in a URL forward or include. + * A taint-tracking configuration for reasoning about URL forwarding. */ -module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { +module UrlForwardFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource and - // TODO: move below logic to class in UnsafeUrlForward.qll? And check exactly why these were excluded. + // TODO: move below logic to class in UrlForward.qll? And check exactly why these were excluded. not exists(MethodCall ma, Method m | ma.getMethod() = m | ( m instanceof HttpServletRequestGetRequestUriMethod or @@ -23,10 +23,10 @@ module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { ) } - predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeUrlForwardSink } + predicate isSink(DataFlow::Node sink) { sink instanceof UrlForwardSink } predicate isBarrier(DataFlow::Node node) { - node instanceof UnsafeUrlForwardSanitizer or + node instanceof UrlForwardSanitizer or node instanceof PathInjectionSanitizer } @@ -35,6 +35,6 @@ module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { } /** - * Taint-tracking flow for untrusted user input in a URL forward or include. + * Taint-tracking flow for URL forwarding. */ -module UnsafeUrlForwardFlow = TaintTracking::Global<UnsafeUrlForwardFlowConfig>; +module UrlForwardFlow = TaintTracking::Global<UrlForwardFlowConfig>; diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.java b/java/ql/src/Security/CWE/CWE-552/UrlForward.java similarity index 97% rename from java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.java rename to java/ql/src/Security/CWE/CWE-552/UrlForward.java index d159c4057362..53b959bb8896 100644 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.java +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.java @@ -7,7 +7,7 @@ import org.springframework.web.servlet.ModelAndView; @Controller -public class UnsafeUrlForward { +public class UrlForward { @GetMapping("/bad1") public ModelAndView bad1(String url) { diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qhelp b/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp similarity index 98% rename from java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qhelp rename to java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp index 2e425952edc3..fa9ffd45c103 100644 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.qhelp +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp @@ -27,7 +27,7 @@ without validating the input, which may cause file leakage. In the <code>good1</ ordinary forwarding requests are shown, which will not cause file leakage. </p> -<sample src="UnsafeUrlForward.java" /> +<sample src="UrlForward.java" /> <p>The following examples show an HTTP request parameter or request path being used directly in a request dispatcher of Java EE without validating the input, which allows sensitive file exposure diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql b/java/ql/src/Security/CWE/CWE-552/UrlForward.ql similarity index 71% rename from java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql rename to java/ql/src/Security/CWE/CWE-552/UrlForward.ql index 06686d5e0bd0..66d3d0dd1ca3 100644 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeUrlForward.ql +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.ql @@ -14,10 +14,10 @@ */ import java -import semmle.code.java.security.UnsafeUrlForwardQuery -import UnsafeUrlForwardFlow::PathGraph +import semmle.code.java.security.UrlForwardQuery +import UrlForwardFlow::PathGraph -from UnsafeUrlForwardFlow::PathNode source, UnsafeUrlForwardFlow::PathNode sink -where UnsafeUrlForwardFlow::flowPath(source, sink) +from UrlForwardFlow::PathNode source, UrlForwardFlow::PathNode sink +where UrlForwardFlow::flowPath(source, sink) select sink.getNode(), source, sink, "Untrusted URL forward depends on a $@.", source.getNode(), "user-provided value" diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java b/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java index 55afe84bc192..3d82e7d783ed 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java @@ -20,7 +20,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha String path = ((HttpServletRequest) request).getServletPath(); // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check if (path != null && !path.startsWith("/WEB-INF")) { - request.getRequestDispatcher(path).forward(request, response); // $ hasUnsafeUrlForward + request.getRequestDispatcher(path).forward(request, response); // $ hasUrlForward } else { chain.doFilter(request, response); } diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java index 9d501f2ec0df..66521c5897b0 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java +++ b/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java @@ -29,7 +29,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) rd.forward(request, response); } else { ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasUnsafeUrlForward + RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasUrlForward rd.forward(request, response); } } @@ -45,7 +45,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); rd.forward(request, response); } else { - RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasUnsafeUrlForward + RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasUrlForward rd.forward(request, response); } } @@ -73,7 +73,7 @@ protected void doHead2(HttpServletRequest request, HttpServletResponse response) // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` if (path.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUnsafeUrlForward + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward } } @@ -110,7 +110,7 @@ protected void doHead5(HttpServletRequest request, HttpServletResponse response) Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ MISSING: hasUnsafeUrlForward + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ MISSING: hasUrlForward } } diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql b/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql deleted file mode 100644 index cf77edcf12a4..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.ql +++ /dev/null @@ -1,18 +0,0 @@ -import java -import TestUtilities.InlineExpectationsTest -import semmle.code.java.security.UnsafeUrlForwardQuery - -module UnsafeUrlForwardTest implements TestSig { - string getARelevantTag() { result = "hasUnsafeUrlForward" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasUnsafeUrlForward" and - exists(UnsafeUrlForwardFlow::PathNode sink | UnsafeUrlForwardFlow::flowPath(_, sink) | - location = sink.getNode().getLocation() and - element = sink.getNode().toString() and - value = "" - ) - } -} - -import MakeTest<UnsafeUrlForwardTest> diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.expected b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected similarity index 100% rename from java/ql/test/query-tests/security/CWE-552/UnsafeUrlForwardTest.expected rename to java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java similarity index 83% rename from java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java rename to java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index 0a00637cd44c..2db1e812fb6b 100644 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeUrlForward.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -7,35 +7,35 @@ import org.springframework.web.servlet.ModelAndView; @Controller -public class UnsafeUrlForward { +public class UrlForwardTest { @GetMapping("/bad1") public ModelAndView bad1(String url) { - return new ModelAndView(url); // $ hasUnsafeUrlForward + return new ModelAndView(url); // $ hasUrlForward } @GetMapping("/bad2") public ModelAndView bad2(String url) { ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName(url); // $ hasUnsafeUrlForward + modelAndView.setViewName(url); // $ hasUrlForward return modelAndView; } @GetMapping("/bad3") public String bad3(String url) { - return "forward:" + url + "/swagger-ui/index.html"; // $ hasUnsafeUrlForward + return "forward:" + url + "/swagger-ui/index.html"; // $ hasUrlForward } @GetMapping("/bad4") public ModelAndView bad4(String url) { - ModelAndView modelAndView = new ModelAndView("forward:" + url); // $ hasUnsafeUrlForward + ModelAndView modelAndView = new ModelAndView("forward:" + url); // $ hasUrlForward return modelAndView; } @GetMapping("/bad5") public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher(url).include(request, response); // $ hasUnsafeUrlForward + request.getRequestDispatcher(url).include(request, response); // $ hasUrlForward } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -46,7 +46,7 @@ public void bad5(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/bad6") public void bad6(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); // $ hasUnsafeUrlForward + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); // $ hasUrlForward } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -57,7 +57,7 @@ public void bad6(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/bad7") public void bad7(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); // $ hasUnsafeUrlForward + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); // $ hasUrlForward } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql new file mode 100644 index 000000000000..4e62a35752bb --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql @@ -0,0 +1,18 @@ +import java +import TestUtilities.InlineExpectationsTest +import semmle.code.java.security.UrlForwardQuery + +module UrlForwardTest implements TestSig { + string getARelevantTag() { result = "hasUrlForward" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasUrlForward" and + exists(UrlForwardFlow::PathNode sink | UrlForwardFlow::flowPath(_, sink) | + location = sink.getNode().getLocation() and + element = sink.getNode().toString() and + value = "" + ) + } +} + +import MakeTest<UrlForwardTest> From c331393cfd3982f06098e7f1a0613124c0cb44f4 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Fri, 1 Dec 2023 12:14:27 -0500 Subject: [PATCH 186/731] Java: update qhelp --- .../CWE/CWE-552/UnsafeLoadSpringResource.java | 21 ------- .../CWE/CWE-552/UnsafeResourceGet.java | 18 ------ .../CWE-552/UnsafeServletRequestDispatch.java | 11 ---- .../src/Security/CWE/CWE-552/UrlForward.java | 43 ++++---------- .../src/Security/CWE/CWE-552/UrlForward.qhelp | 58 ++++--------------- .../ql/src/Security/CWE/CWE-552/UrlForward.ql | 6 +- 6 files changed, 25 insertions(+), 132 deletions(-) delete mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java delete mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java delete mode 100644 java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java b/java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java deleted file mode 100644 index ce462fe490ef..000000000000 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeLoadSpringResource.java +++ /dev/null @@ -1,21 +0,0 @@ -//BAD: no path validation in Spring resource loading -@GetMapping("/file") -public String getFileContent(@RequestParam(name="fileName") String fileName) { - ClassPathResource clr = new ClassPathResource(fileName); - - File file = ResourceUtils.getFile(fileName); - - Resource resource = resourceLoader.getResource(fileName); -} - -//GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix in Spring resource loading: -@GetMapping("/file") -public String getFileContent(@RequestParam(name="fileName") String fileName) { - if (!fileName.contains("..") && fileName.hasPrefix("/public-content")) { - ClassPathResource clr = new ClassPathResource(fileName); - - File file = ResourceUtils.getFile(fileName); - - Resource resource = resourceLoader.getResource(fileName); - } -} diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java b/java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java deleted file mode 100644 index 8b3583bf59e2..000000000000 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeResourceGet.java +++ /dev/null @@ -1,18 +0,0 @@ -// BAD: no URI validation -URL url = request.getServletContext().getResource(requestUrl); -url = getClass().getResource(requestUrl); -InputStream in = url.openStream(); - -InputStream in = request.getServletContext().getResourceAsStream(requestPath); -in = getClass().getClassLoader().getResourceAsStream(requestPath); - -// GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix: -// (alternatively use `Path.normalize` instead of checking for `..`) -if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { - InputStream in = request.getServletContext().getResourceAsStream(requestPath); -} - -Path path = Paths.get(requestUrl).normalize().toRealPath(); -if (path.startsWith("/trusted")) { - URL url = request.getServletContext().getResource(path.toString()); -} diff --git a/java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java deleted file mode 100644 index a2bbf3dfcd85..000000000000 --- a/java/ql/src/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java +++ /dev/null @@ -1,11 +0,0 @@ -// BAD: no URI validation -String returnURL = request.getParameter("returnURL"); -RequestDispatcher rd = sc.getRequestDispatcher(returnURL); -rd.forward(request, response); - -// GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix: -// (alternatively use `Path.normalize` instead of checking for `..`) -if (!returnURL.contains("..") && returnURL.hasPrefix("/pages")) { ... } -// Also GOOD: check for a forbidden prefix, ensuring URL-encoding is not used to evade the check: -// (alternatively use `URLDecoder.decode` before `hasPrefix`) -if (returnURL.hasPrefix("/internal") && !returnURL.contains("%")) { ... } diff --git a/java/ql/src/Security/CWE/CWE-552/UrlForward.java b/java/ql/src/Security/CWE/CWE-552/UrlForward.java index 53b959bb8896..db701fbcd9a8 100644 --- a/java/ql/src/Security/CWE/CWE-552/UrlForward.java +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.java @@ -1,38 +1,17 @@ -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.servlet.ModelAndView; +public class UrlForward extends HttpServlet { + private static final String VALID_FORWARD = "https://cwe.mitre.org/data/definitions/552.html"; -@Controller -public class UrlForward { + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + ServletConfig cfg = getServletConfig(); + ServletContext sc = cfg.getServletContext(); - @GetMapping("/bad1") - public ModelAndView bad1(String url) { - return new ModelAndView(url); - } - - @GetMapping("/bad2") - public void bad2(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } + // BAD: a request parameter is incorporated without validation into a URL forward + sc.getRequestDispatcher(request.getParameter("target")).forward(request, response); - @GetMapping("/good1") - public void good1(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); + // GOOD: the request parameter is validated against a known fixed string + if (VALID_FORWARD.equals(request.getParameter("target"))) { + sc.getRequestDispatcher(VALID_FORWARD).forward(request, response); } } } diff --git a/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp b/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp index fa9ffd45c103..2b06a851a2b6 100644 --- a/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp @@ -5,66 +5,32 @@ <overview> -<p>Constructing a server-side redirect path with user input could allow an attacker to download application binaries -(including application classes or jar files) or view arbitrary files within protected directories.</p> +<p>Directly incorporating user input into a URL forward request without validating the input +can cause file information disclosure by allowing an attacker to access unauthorized URLs.</p> </overview> <recommendation> -<p>Unsanitized user provided data must not be used to construct the path for URL forwarding. In order to prevent -untrusted URL forwarding, it is recommended to avoid concatenating user input directly into the forwarding URL. -Instead, user input should be checked against allowed (e.g., must come within <code>user_content/</code>) or disallowed -(e.g. must not come within <code>/internal</code>) paths, ensuring that neither path traversal using <code>../</code> -or URL encoding are used to evade these checks. -</p> +<p>To guard against untrusted URL forwarding, it is advisable to avoid putting user input +directly into a forwarded URL. Instead, maintain a list of authorized +URLs on the server; then choose from that list based on the user input provided.</p> </recommendation> <example> -<p>The following examples show the bad case and the good case respectively. -The <code>bad</code> methods show an HTTP request parameter being used directly in a URL forward -without validating the input, which may cause file leakage. In the <code>good1</code> method, -ordinary forwarding requests are shown, which will not cause file leakage. +<p>The following example shows an HTTP request parameter being used directly in a URL forward +without validating the input, which may cause file information disclosure. +It also shows how to remedy the problem by validating the user input against a known fixed string. </p> <sample src="UrlForward.java" /> -<p>The following examples show an HTTP request parameter or request path being used directly in a -request dispatcher of Java EE without validating the input, which allows sensitive file exposure -attacks. It also shows how to remedy the problem by validating the user input. -</p> - -<sample src="UnsafeServletRequestDispatch.java" /> - -<p>The following examples show an HTTP request parameter or request path being used directly to -retrieve a resource of a Java EE application without validating the input, which allows sensitive -file exposure attacks. It also shows how to remedy the problem by validating the user input. -</p> - -<sample src="UnsafeResourceGet.java" /> - -<p>The following examples show an HTTP request parameter being used directly to retrieve a resource - of a Java Spring application without validating the input, which allows sensitive file exposure - attacks. It also shows how to remedy the problem by validating the user input. - </p> - - <sample src="UnsafeLoadSpringResource.java" /> </example> <references> -<li>File Disclosure: - <a href="https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.file_disclosure_spring">Unsafe Url Forward</a>. -</li> -<li>Jakarta Javadoc: - <a href="https://jakarta.ee/specifications/webprofile/9/apidocs/jakarta/servlet/servletrequest#getRequestDispatcher-java.lang.String-">Security vulnerability with unsafe usage of RequestDispatcher</a>. -</li> -<li>Micro Focus: - <a href="https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.file_disclosure_j2ee">File Disclosure: J2EE</a> -</li> -<li>CVE-2015-5174: - <a href="https://vuldb.com/?id.81084">Apache Tomcat 6.0/7.0/8.0/9.0 Servletcontext getResource/getResourceAsStream/getResourcePaths Path Traversal</a> -</li> -<li>CVE-2019-3799: - <a href="https://github.com/mpgn/CVE-2019-3799">CVE-2019-3799 - Spring-Cloud-Config-Server Directory Traversal < 2.1.2, 2.0.4, 1.4.6</a> + +<li>OWASP: + <a href="https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html">Unvalidated Redirects and Forwards Cheat Sheet</a>. </li> + </references> </qhelp> diff --git a/java/ql/src/Security/CWE/CWE-552/UrlForward.ql b/java/ql/src/Security/CWE/CWE-552/UrlForward.ql index 66d3d0dd1ca3..95c540049a21 100644 --- a/java/ql/src/Security/CWE/CWE-552/UrlForward.ql +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.ql @@ -1,16 +1,14 @@ /** * @name URL forward from a remote source * @description URL forward based on unvalidated user-input - * may cause file information disclosure or - * redirection to malicious web sites. + * may cause file information disclosure. * @kind path-problem * @problem.severity error - * @security-severity 6.1 + * @security-severity 7.5 * @precision high * @id java/unvalidated-url-forward * @tags security * external/cwe/cwe-552 - * external/cwe/cwe-601 */ import java From 5fa63ab5c22adc24b62cdfdc4efe12e578ede3bf Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Mon, 4 Dec 2023 10:31:47 -0500 Subject: [PATCH 187/731] Java: update/add some TODO comments --- .../semmle/code/java/security/UrlForward.qll | 31 ++++++++++--------- .../code/java/security/UrlForwardQuery.qll | 9 +++--- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index aa21ed48aba8..7e68f07987b1 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -8,48 +8,49 @@ private import semmle.code.java.dataflow.StringPrefixes /** A URL forward sink. */ abstract class UrlForwardSink extends DataFlow::Node { } -/** A default sink representing methods susceptible to URL forwarding attacks. */ +/** + * A default sink representing methods susceptible to URL + * forwarding attacks. + */ private class DefaultUrlForwardSink extends UrlForwardSink { DefaultUrlForwardSink() { sinkNode(this, "url-forward") } } /** - * An expression appended (perhaps indirectly) to `"forward:"`, and which - * is reachable from a Spring entry point. + * An expression appended (perhaps indirectly) to `"forward:"` + * and reachable from a Spring entry point. */ private class SpringUrlForwardSink extends UrlForwardSink { SpringUrlForwardSink() { - // TODO: check if can use MaD "Annotated" for `SpringRequestMappingMethod` or if too complicated for MaD (probably too complicated). - any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable()) and + any(SpringRequestMappingMethod srmm).polyCalls*(this.getEnclosingCallable()) and this.asExpr() = any(ForwardPrefix fp).getAnAppendedExpression() } } -// TODO: should this potentially be "include:" as well? Or does that not work similarly? private class ForwardPrefix extends InterestingPrefix { ForwardPrefix() { this.getStringValue() = "forward:" } override int getOffset() { result = 0 } } -/** A URL forward sanitizer. */ -abstract class UrlForwardSanitizer extends DataFlow::Node { } +/** A URL forward barrier. */ +abstract class UrlForwardBarrier extends DataFlow::Node { } -private class PrimitiveSanitizer extends UrlForwardSanitizer { - PrimitiveSanitizer() { +private class PrimitiveBarrier extends UrlForwardBarrier { + PrimitiveBarrier() { this.getType() instanceof PrimitiveType or this.getType() instanceof BoxedType or this.getType() instanceof NumberType } } -// TODO: double-check this sanitizer (and should I switch all "sanitizer" naming to "barrier" instead?) -private class FollowsSanitizingPrefix extends UrlForwardSanitizer { - FollowsSanitizingPrefix() { this.asExpr() = any(SanitizingPrefix fp).getAnAppendedExpression() } +private class FollowsBarrierPrefix extends UrlForwardBarrier { + FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } -private class SanitizingPrefix extends InterestingPrefix { - SanitizingPrefix() { +private class BarrierPrefix extends InterestingPrefix { + BarrierPrefix() { + // TODO: why not META-INF here as well? (and are `/` correct?) not this.getStringValue().matches("/WEB-INF/%") and not this.getStringValue() = "forward:" } diff --git a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll index dadf4be612ff..c92467490f30 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll @@ -12,25 +12,24 @@ import semmle.code.java.security.PathSanitizer module UrlForwardFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource and - // TODO: move below logic to class in UrlForward.qll? And check exactly why these were excluded. - not exists(MethodCall ma, Method m | ma.getMethod() = m | + // excluded due to FPs + not exists(MethodCall mc, Method m | mc.getMethod() = m | ( m instanceof HttpServletRequestGetRequestUriMethod or m instanceof HttpServletRequestGetRequestUrlMethod or m instanceof HttpServletRequestGetPathMethod ) and - ma = source.asExpr() + mc = source.asExpr() ) } predicate isSink(DataFlow::Node sink) { sink instanceof UrlForwardSink } predicate isBarrier(DataFlow::Node node) { - node instanceof UrlForwardSanitizer or + node instanceof UrlForwardBarrier or node instanceof PathInjectionSanitizer } - // TODO: check if the below is still needed after removing path-injection related sinks. DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } } From e75c96c0f9be67d4423446177dedc808a1ec9239 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Dec 2023 22:03:11 -0500 Subject: [PATCH 188/731] Java: combine test cases; add test for StaplerResponse.forward --- .../security/CWE-552/UnsafeRequestPath.java | 52 ----- .../CWE-552/UnsafeServletRequestDispatch.java | 131 ------------- .../security/CWE-552/UrlForwardTest.java | 180 +++++++++++++++++- .../test/query-tests/security/CWE-552/options | 2 +- 4 files changed, 180 insertions(+), 185 deletions(-) delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java delete mode 100644 java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java b/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java deleted file mode 100644 index 3d82e7d783ed..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeRequestPath.java +++ /dev/null @@ -1,52 +0,0 @@ -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -// @WebFilter("/*") -public class UnsafeRequestPath implements Filter { - private static final String BASE_PATH = "/pages"; - - @Override - // BAD: Request dispatcher from servlet path without check - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); - // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check - if (path != null && !path.startsWith("/WEB-INF")) { - request.getRequestDispatcher(path).forward(request, response); // $ hasUrlForward - } else { - chain.doFilter(request, response); - } - } - - // GOOD: Request dispatcher from servlet path with check - public void doFilter2(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); - - if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getRequestDispatcher(path).forward(request, response); - } else { - chain.doFilter(request, response); - } - } - - // GOOD: Request dispatcher from servlet path with whitelisted string comparison - public void doFilter3(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); - - if (path.equals("/comaction")) { - request.getRequestDispatcher(path).forward(request, response); - } else { - chain.doFilter(request, response); - } - } -} diff --git a/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java deleted file mode 100644 index 66521c5897b0..000000000000 --- a/java/ql/test/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java +++ /dev/null @@ -1,131 +0,0 @@ -import java.io.IOException; -import java.net.URLDecoder; -import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; - -public class UnsafeServletRequestDispatch extends HttpServlet { - private static final String BASE_PATH = "/pages"; - - @Override - // BAD: Request dispatcher constructed from `ServletContext` without input validation - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String action = request.getParameter("action"); - String returnURL = request.getParameter("returnURL"); - - ServletConfig cfg = getServletConfig(); - if (action.equals("Login")) { - ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher("/Login.jsp"); - rd.forward(request, response); - } else { - ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasUrlForward - rd.forward(request, response); - } - } - - @Override - // BAD: Request dispatcher constructed from `HttpServletRequest` without input validation - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String action = request.getParameter("action"); - String returnURL = request.getParameter("returnURL"); - - if (action.equals("Login")) { - RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); - rd.forward(request, response); - } else { - RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasUrlForward - rd.forward(request, response); - } - } - - @Override - // GOOD: Request dispatcher with a whitelisted URI - protected void doPut(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String action = request.getParameter("action"); - - if (action.equals("Login")) { - RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); - rd.forward(request, response); - } else if (action.equals("Register")) { - RequestDispatcher rd = request.getRequestDispatcher("/Register.jsp"); - rd.forward(request, response); - } - } - - // BAD: Request dispatcher without path traversal check - protected void doHead2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - - // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check - // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` - if (path.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward - } - } - - // GOOD: Request dispatcher with path traversal check - protected void doHead3(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - - if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); - } - } - - // GOOD: Request dispatcher with path normalization and comparison - protected void doHead4(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); - - // /pages/welcome.jsp/../../WEB-INF/web.xml becomes /WEB-INF/web.xml - // /pages/welcome.jsp/../../%57EB-INF/web.xml becomes /%57EB-INF/web.xml - if (requestedPath.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); - } - } - - // FN: Request dispatcher with negation check and path normalization, but without URL decoding - // When promoting this query, consider using FlowStates to make `getRequestDispatcher` a sink - // only if a URL-decoding step has NOT been crossed (i.e. make URLDecoder.decode change the - // state to a different value than the one required at the sink). - protected void doHead5(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); - - if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ MISSING: hasUrlForward - } - } - - // GOOD: Request dispatcher with path traversal check and URL decoding - protected void doHead6(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - boolean hasEncoding = path.contains("%"); - while (hasEncoding) { - path = URLDecoder.decode(path, "UTF-8"); - hasEncoding = path.contains("%"); - } - - if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); - } - } -} diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index 2db1e812fb6b..e41bc65848eb 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -1,14 +1,29 @@ import java.io.IOException; +import java.net.URLDecoder; +import java.nio.file.Path; +import java.nio.file.Paths; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; +import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerResponse; @Controller -public class UrlForwardTest { +public class UrlForwardTest extends HttpServlet implements Filter { + // (1) ORIGINAL @GetMapping("/bad1") public ModelAndView bad1(String url) { return new ModelAndView(url); // $ hasUrlForward @@ -75,4 +90,167 @@ public void good1(String url, HttpServletRequest request, HttpServletResponse re e.printStackTrace(); } } + + // (2) UnsafeRequestPath + private static final String BASE_PATH = "/pages"; + + @Override + // BAD: Request dispatcher from servlet path without check + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + String path = ((HttpServletRequest) request).getServletPath(); + // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check + if (path != null && !path.startsWith("/WEB-INF")) { + request.getRequestDispatcher(path).forward(request, response); // $ hasUrlForward + } else { + chain.doFilter(request, response); + } + } + + // GOOD: Request dispatcher from servlet path with check + public void doFilter2(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + String path = ((HttpServletRequest) request).getServletPath(); + + if (path.startsWith(BASE_PATH) && !path.contains("..")) { + request.getRequestDispatcher(path).forward(request, response); + } else { + chain.doFilter(request, response); + } + } + + // GOOD: Request dispatcher from servlet path with whitelisted string comparison + public void doFilter3(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + String path = ((HttpServletRequest) request).getServletPath(); + + if (path.equals("/comaction")) { + request.getRequestDispatcher(path).forward(request, response); + } else { + chain.doFilter(request, response); + } + } + + // (3) UnsafeServletRequestDispatch + @Override + // BAD: Request dispatcher constructed from `ServletContext` without input validation + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String action = request.getParameter("action"); + String returnURL = request.getParameter("returnURL"); + + ServletConfig cfg = getServletConfig(); + if (action.equals("Login")) { + ServletContext sc = cfg.getServletContext(); + RequestDispatcher rd = sc.getRequestDispatcher("/Login.jsp"); + rd.forward(request, response); + } else { + ServletContext sc = cfg.getServletContext(); + RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasUrlForward + rd.forward(request, response); + } + } + + @Override + // BAD: Request dispatcher constructed from `HttpServletRequest` without input validation + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String action = request.getParameter("action"); + String returnURL = request.getParameter("returnURL"); + + if (action.equals("Login")) { + RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); + rd.forward(request, response); + } else { + RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasUrlForward + rd.forward(request, response); + } + } + + @Override + // GOOD: Request dispatcher with a whitelisted URI + protected void doPut(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String action = request.getParameter("action"); + + if (action.equals("Login")) { + RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); + rd.forward(request, response); + } else if (action.equals("Register")) { + RequestDispatcher rd = request.getRequestDispatcher("/Register.jsp"); + rd.forward(request, response); + } + } + + // BAD: Request dispatcher without path traversal check + protected void doHead2(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + + // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check + // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` + if (path.startsWith(BASE_PATH)) { + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + } + } + + // GOOD: Request dispatcher with path traversal check + protected void doHead3(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + + if (path.startsWith(BASE_PATH) && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + + // GOOD: Request dispatcher with path normalization and comparison + protected void doHead4(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); + + // /pages/welcome.jsp/../../WEB-INF/web.xml becomes /WEB-INF/web.xml + // /pages/welcome.jsp/../../%57EB-INF/web.xml becomes /%57EB-INF/web.xml + if (requestedPath.startsWith(BASE_PATH)) { + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); + } + } + + // FN: Request dispatcher with negation check and path normalization, but without URL decoding + // When promoting this query, consider using FlowStates to make `getRequestDispatcher` a sink + // only if a URL-decoding step has NOT been crossed (i.e. make URLDecoder.decode change the + // state to a different value than the one required at the sink). + // TODO: but does this need to take into account URLDecoder.decode in a loop...? + protected void doHead5(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); + + if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ MISSING: hasUrlForward + } + } + + // GOOD: Request dispatcher with path traversal check and URL decoding + protected void doHead6(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + boolean hasEncoding = path.contains("%"); + while (hasEncoding) { + path = URLDecoder.decode(path, "UTF-8"); + hasEncoding = path.contains("%"); + } + + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + + // New Tests (i.e. Added by me) + public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object obj) throws IOException, ServletException { + String url = req.getParameter("target"); + rsp.forward(obj, url, req); // $ hasUrlForward + } + } diff --git a/java/ql/test/query-tests/security/CWE-552/options b/java/ql/test/query-tests/security/CWE-552/options index 025b888db025..bda9516fb580 100644 --- a/java/ql/test/query-tests/security/CWE-552/options +++ b/java/ql/test/query-tests/security/CWE-552/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8/:${testdir}/../../../stubs/javax-faces-2.3/:${testdir}/../../../stubs/undertow-io-2.2/:${testdir}/../../../stubs/jboss-vfs-3.2/:${testdir}/../../../stubs/springframework-5.3.8/ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8/:${testdir}/../../../stubs/javax-faces-2.3/:${testdir}/../../../stubs/undertow-io-2.2/:${testdir}/../../../stubs/jboss-vfs-3.2/:${testdir}/../../../stubs/stapler-1.263/:${testdir}/../../../stubs/apache-commons-fileupload-1.4/:${testdir}/../../../stubs/apache-commons-beanutils/:${testdir}/../../../stubs/saxon-xqj-9.x/:${testdir}/../../../stubs/apache-commons-lang/:${testdir}/../../../stubs/javax-servlet-2.5/ From c8ec301793067bb1d9d6c9f5e9ccacc59d086f01 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Dec 2023 22:12:08 -0500 Subject: [PATCH 189/731] Java: add change note --- java/ql/src/change-notes/2023-12-12-url-forward-query.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/src/change-notes/2023-12-12-url-forward-query.md diff --git a/java/ql/src/change-notes/2023-12-12-url-forward-query.md b/java/ql/src/change-notes/2023-12-12-url-forward-query.md new file mode 100644 index 000000000000..4efc4b7c4e0a --- /dev/null +++ b/java/ql/src/change-notes/2023-12-12-url-forward-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). From 911a61df2234dc5f9519e3238159f2e7f53f1d3f Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 5 Mar 2024 11:08:24 -0500 Subject: [PATCH 190/731] Java: initial update of barrier and test cases to remove FN --- .../code/java/security/PathSanitizer.qll | 7 +- .../semmle/code/java/security/UrlForward.qll | 110 +++++++++++++- .../code/java/security/UrlForwardQuery.qll | 5 +- .../security/CWE-552/UrlForwardTest.java | 135 ++++++++++++++++-- 4 files changed, 237 insertions(+), 20 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll index 4ca08f5becc6..f3c54629efde 100644 --- a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll @@ -64,7 +64,8 @@ private predicate exactPathMatchGuard(Guard g, Expr e, boolean branch) { ) } -private class ExactPathMatchSanitizer extends PathInjectionSanitizer { +// TODO: switch back to private if possible +class ExactPathMatchSanitizer extends PathInjectionSanitizer { ExactPathMatchSanitizer() { this = DataFlow::BarrierGuard<exactPathMatchGuard/3>::getABarrierNode() or @@ -151,7 +152,8 @@ private class DotDotCheckSanitizer extends PathInjectionSanitizer { } } -private class BlockListGuard extends PathGuard instanceof MethodCall { +// TODO: switch back to private if possible +class BlockListGuard extends PathGuard instanceof MethodCall { BlockListGuard() { (isStringPartialMatch(this) or isPathPrefixMatch(this)) and isDisallowedWord(super.getAnArgument()) @@ -228,6 +230,7 @@ private predicate isStringPartialMatch(MethodCall ma) { exists(RefType t | t = ma.getMethod().getDeclaringType() | t instanceof TypeString or t instanceof StringsKt ) and + // TODO ! Why not use `StringPartialMatchMethod` for the below? getSourceMethod(ma.getMethod()) .hasName(["contains", "matches", "regionMatches", "indexOf", "lastIndexOf"]) } diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 7e68f07987b1..073507fe33a6 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -4,6 +4,9 @@ import java private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.StringPrefixes +private import semmle.code.java.security.PathSanitizer +private import semmle.code.java.dataflow.DataFlow +private import semmle.code.java.controlflow.Guards /** A URL forward sink. */ abstract class UrlForwardSink extends DataFlow::Node { } @@ -44,16 +47,121 @@ private class PrimitiveBarrier extends UrlForwardBarrier { } } +// TODO: should this also take URL encoding/decoding into account? +// TODO: and PathSanitization in general? private class FollowsBarrierPrefix extends UrlForwardBarrier { FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } private class BarrierPrefix extends InterestingPrefix { BarrierPrefix() { - // TODO: why not META-INF here as well? (and are `/` correct?) not this.getStringValue().matches("/WEB-INF/%") and not this.getStringValue() = "forward:" } override int getOffset() { result = 0 } } + +private class UrlPathBarrier extends UrlForwardBarrier { + UrlPathBarrier() { + this instanceof PathInjectionSanitizer and + ( + this instanceof ExactPathMatchSanitizer //TODO: still need a better solution for this edge case... + or + // TODO: these don't enforce order of checks and PathSanitization... make bypass test cases. + this instanceof NoEncodingBarrier + or + this instanceof FullyDecodesBarrier + ) + } +} + +abstract class UrlDecodeCall extends MethodCall { } + +private class DefaultUrlDecodeCall extends UrlDecodeCall { + DefaultUrlDecodeCall() { + this.getMethod().hasQualifiedName("java.net", "URLDecoder", "decode") or // TODO: reuse existing class? Or make this a class? + this.getMethod().hasQualifiedName("org.eclipse.jetty.util.URIUtil", "URIUtil", "decodePath") + } +} + +// TODO: this can probably be named/designed better... +abstract class RepeatedStmt extends Stmt { } + +private class DefaultRepeatedStmt extends RepeatedStmt { + DefaultRepeatedStmt() { this instanceof LoopStmt } +} + +abstract class CheckEncodingCall extends MethodCall { } + +private class DefaultCheckEncodingCall extends CheckEncodingCall { + DefaultCheckEncodingCall() { + // TODO: indexOf?, etc. + this.getMethod().hasQualifiedName("java.lang", "String", "contains") and // TODO: reuse existing class? Or make this a class? + this.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "%" + } +} + +// TODO: better naming? +// TODO: check if any URL decoding implementations _fully_ decode... or if all need to be called in a loop? +// TODO: make this extendable instead of `RepeatedStmt`? +private class RepeatedUrlDecodeCall extends MethodCall { + RepeatedUrlDecodeCall() { + this instanceof UrlDecodeCall and + this.getAnEnclosingStmt() instanceof RepeatedStmt + } +} + +private class CheckEncodingGuard extends Guard instanceof MethodCall { + CheckEncodingGuard() { this instanceof CheckEncodingCall } + + Expr getCheckedExpr() { result = this.(MethodCall).getQualifier() } +} + +private predicate noEncodingGuard(Guard g, Expr e, boolean branch) { + g instanceof CheckEncodingGuard and + e = g.(CheckEncodingGuard).getCheckedExpr() and + branch = false + or + // branch = false and + // g instanceof AssignExpr and // AssignExpr + // exists(CheckEncodingCall call | g.(AssignExpr).getSource() = call | e = call.getQualifier()) + branch = false and + g.(Expr).getType() instanceof BooleanType and // AssignExpr + ( + exists(CheckEncodingCall call, AssignExpr ae | + ae.getSource() = call and + e = call.getQualifier() and + g = ae.getDest() + ) + or + exists(CheckEncodingCall call, LocalVariableDeclExpr vde | + vde.getInitOrPatternSource() = call and + e = call.getQualifier() and + g = vde.getAnAccess() //and + //vde.getVariable() = g + ) + ) +} + +// TODO: check edge case of !contains(%), make sure that behaves as expected at least. +private class NoEncodingBarrier extends DataFlow::Node { + NoEncodingBarrier() { this = DataFlow::BarrierGuard<noEncodingGuard/3>::getABarrierNode() } +} + +private predicate fullyDecodesGuard(Expr e) { + exists(CheckEncodingGuard g, RepeatedUrlDecodeCall decodeCall | + e = g.getCheckedExpr() and + g.controls(decodeCall.getBasicBlock(), true) + ) +} + +private class FullyDecodesBarrier extends DataFlow::Node { + FullyDecodesBarrier() { + exists(Variable v, Expr e | this.asExpr() = v.getAnAccess() | + fullyDecodesGuard(e) and + e = v.getAnAccess() and + e.getBasicBlock().bbDominates(this.asExpr().getBasicBlock()) + ) + } +} diff --git a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll index c92467490f30..71d41f42deed 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll @@ -25,10 +25,7 @@ module UrlForwardFlowConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof UrlForwardSink } - predicate isBarrier(DataFlow::Node node) { - node instanceof UrlForwardBarrier or - node instanceof PathInjectionSanitizer - } + predicate isBarrier(DataFlow::Node node) { node instanceof UrlForwardBarrier } DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } } diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index e41bc65848eb..c7a9d82b1a0a 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -112,8 +112,9 @@ public void doFilter2(ServletRequest request, ServletResponse response, FilterCh throws IOException, ServletException { String path = ((HttpServletRequest) request).getServletPath(); + // actually BAD since could potentially bypass with ".." encoded as "%2e%2e"? if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getRequestDispatcher(path).forward(request, response); + request.getRequestDispatcher(path).forward(request, response); // $ hasUrlForward } else { chain.doFilter(request, response); } @@ -124,6 +125,7 @@ public void doFilter3(ServletRequest request, ServletResponse response, FilterCh throws IOException, ServletException { String path = ((HttpServletRequest) request).getServletPath(); + // this is still good, should not flag here..., url-decoding first doesn't matter if looking for exact match... :( if (path.equals("/comaction")) { request.getRequestDispatcher(path).forward(request, response); } else { @@ -199,8 +201,9 @@ protected void doHead3(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); + // actually BAD since could potentially bypass with ".." encoded as "%2e%2e"? if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward } } @@ -212,30 +215,68 @@ protected void doHead4(HttpServletRequest request, HttpServletResponse response) // /pages/welcome.jsp/../../WEB-INF/web.xml becomes /WEB-INF/web.xml // /pages/welcome.jsp/../../%57EB-INF/web.xml becomes /%57EB-INF/web.xml + // actually BAD since could potentially bypass with ".." encoded as "%2e%2e": "/pages/welcome.jsp/%2e%2e/%2e%2e/WEB-INF/web.xml" becomes /pages/welcome.jsp/%2e%2e/%2e%2e/WEB-INF/web.xml, which will pass this check and potentially be problematic if decoded later? if (requestedPath.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasUrlForward } } - // FN: Request dispatcher with negation check and path normalization, but without URL decoding - // When promoting this query, consider using FlowStates to make `getRequestDispatcher` a sink - // only if a URL-decoding step has NOT been crossed (i.e. make URLDecoder.decode change the - // state to a different value than the one required at the sink). - // TODO: but does this need to take into account URLDecoder.decode in a loop...? + // BAD (original FN): Request dispatcher with negation check and path normalization, but without URL decoding protected void doHead5(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ MISSING: hasUrlForward + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasUrlForward } } - // GOOD: Request dispatcher with path traversal check and URL decoding - protected void doHead6(HttpServletRequest request, HttpServletResponse response) + // BAD (I added to test decode with no loop): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + protected void doHead7(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); + path = URLDecoder.decode(path, "UTF-8"); + + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + } + } + + // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass + protected void doHead6(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); // v + + if (path.contains("%")){ // v.getAnAccess() + while (path.contains("%")) { + path = URLDecoder.decode(path, "UTF-8"); + } + } + + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + + // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass + protected void doHead8(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); // v + while (path.contains("%")) { + path = URLDecoder.decode(path, "UTF-8"); + } + + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + + // FP now.... + // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass + protected void doHead9(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); // v boolean hasEncoding = path.contains("%"); while (hasEncoding) { path = URLDecoder.decode(path, "UTF-8"); @@ -243,14 +284,82 @@ protected void doHead6(HttpServletRequest request, HttpServletResponse response) } if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ SPURIOUS: hasUrlForward } } - // New Tests (i.e. Added by me) + // New Tests public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object obj) throws IOException, ServletException { String url = req.getParameter("target"); rsp.forward(obj, url, req); // $ hasUrlForward } + // Other Tests for edge cases: + // // GOOD (I added): Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass + // // testing `if` stmt requirement for BB controlling + // protected void doHead12(HttpServletRequest request, HttpServletResponse response) + // throws ServletException, IOException { + // String path = request.getParameter("path"); + // if (path.contains("%")) { + // while (path.contains("%")) { + // path = URLDecoder.decode(path, "UTF-8"); + // } + // } + // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + // request.getServletContext().getRequestDispatcher(path).include(request, response); + // } + // } + // // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, + // // having previously been checked against a block-list of forbidden values." + // protected void doHead8(HttpServletRequest request, HttpServletResponse response) + // throws ServletException, IOException { + // String path = request.getParameter("path"); + + // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + // boolean hasEncoding = path.contains("%"); // BAD: doesn't do anything with the check... + // request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + // } + // } + // // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, + // // having previously been checked against a block-list of forbidden values." + // protected void doHead9(HttpServletRequest request, HttpServletResponse response) + // throws ServletException, IOException { + // String path = request.getParameter("path"); + + // boolean hasEncoding = path.contains("%"); // BAD: doesn't do anything with the check... and check comes BEFORE blocklist so guard should not trigger + // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + // request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + // } + // } + + // // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, + // // having previously been checked against a block-list of forbidden values." + // protected void doHead10(HttpServletRequest request, HttpServletResponse response) + // throws ServletException, IOException { + // String path = request.getParameter("path"); + + // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + // if (path.contains("%")){ // BAD: wrong check + // request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + // } + // } + // } + + // // "GOOD" (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, + // // having previously been checked against a block-list of forbidden values." + // protected void doHead11(HttpServletRequest request, HttpServletResponse response) + // throws ServletException, IOException { + // String path = request.getParameter("path"); + + // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + // if (!path.contains("%")){ // GOOD: right check + // request.getServletContext().getRequestDispatcher(path).include(request, response); + // } + // } + // } + } From f573032b2e74ccf8165650b83602b08a8f2af126 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 5 Mar 2024 13:56:35 -0500 Subject: [PATCH 191/731] Java: remove todo comments from ext files --- java/ql/lib/ext/jakarta.servlet.model.yml | 1 - java/ql/lib/ext/javax.portlet.model.yml | 1 - java/ql/lib/ext/javax.servlet.model.yml | 1 - 3 files changed, 3 deletions(-) diff --git a/java/ql/lib/ext/jakarta.servlet.model.yml b/java/ql/lib/ext/jakarta.servlet.model.yml index fc1274cadaf6..be2feeb3c375 100644 --- a/java/ql/lib/ext/jakarta.servlet.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.model.yml @@ -3,6 +3,5 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - # TODO: potentially switch to using Argument[this] of `RequestDispatcher.forward|include` as sink instead of the below. - ["jakarta.servlet", "ServletContext", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] - ["jakarta.servlet", "ServletRequest", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] diff --git a/java/ql/lib/ext/javax.portlet.model.yml b/java/ql/lib/ext/javax.portlet.model.yml index e39484abcb74..15d108866247 100644 --- a/java/ql/lib/ext/javax.portlet.model.yml +++ b/java/ql/lib/ext/javax.portlet.model.yml @@ -3,5 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - # TODO: potentially switch to using Argument[this] of `PortletRequestDispatcher.forward|include` as sink instead of the below. - ["javax.portlet", "PortletContext", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.model.yml b/java/ql/lib/ext/javax.servlet.model.yml index 7c405ac0de91..d27011c6e127 100644 --- a/java/ql/lib/ext/javax.servlet.model.yml +++ b/java/ql/lib/ext/javax.servlet.model.yml @@ -14,7 +14,6 @@ extensions: extensible: sinkModel data: - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - # TODO: potentially switch to using Argument[this] of `RequestDispatcher.forward|include` as sink instead of the below. - ["javax.servlet", "ServletContext", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] - ["javax.servlet", "ServletRequest", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] - addsTo: From 2708e53c7f3b54f1755596513aad1b444457ee9b Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 5 Mar 2024 14:02:41 -0500 Subject: [PATCH 192/731] Java: remove redundant imports --- java/ql/lib/semmle/code/java/security/UrlForward.qll | 1 - java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll | 1 - 2 files changed, 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 073507fe33a6..79f8e5f2b288 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -5,7 +5,6 @@ private import semmle.code.java.dataflow.ExternalFlow private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.StringPrefixes private import semmle.code.java.security.PathSanitizer -private import semmle.code.java.dataflow.DataFlow private import semmle.code.java.controlflow.Guards /** A URL forward sink. */ diff --git a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll index 71d41f42deed..30de4ef8354b 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll @@ -3,7 +3,6 @@ import java import semmle.code.java.security.UrlForward import semmle.code.java.dataflow.FlowSources -import semmle.code.java.dataflow.TaintTracking import semmle.code.java.security.PathSanitizer /** From 43b49628fc54cd2de38768e14ff9f22720852919 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 5 Mar 2024 14:36:43 -0500 Subject: [PATCH 193/731] Java: use new 'SimpleTypeSanitizer', and update some non-extending subtype relationships --- .../semmle/code/java/security/UrlForward.qll | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 79f8e5f2b288..d19b8c163fdd 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -6,6 +6,7 @@ private import semmle.code.java.dataflow.FlowSources private import semmle.code.java.dataflow.StringPrefixes private import semmle.code.java.security.PathSanitizer private import semmle.code.java.controlflow.Guards +private import semmle.code.java.security.Sanitizers /** A URL forward sink. */ abstract class UrlForwardSink extends DataFlow::Node { } @@ -38,13 +39,7 @@ private class ForwardPrefix extends InterestingPrefix { /** A URL forward barrier. */ abstract class UrlForwardBarrier extends DataFlow::Node { } -private class PrimitiveBarrier extends UrlForwardBarrier { - PrimitiveBarrier() { - this.getType() instanceof PrimitiveType or - this.getType() instanceof BoxedType or - this.getType() instanceof NumberType - } -} +private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } // TODO: should this also take URL encoding/decoding into account? // TODO: and PathSanitization in general? @@ -87,9 +82,7 @@ private class DefaultUrlDecodeCall extends UrlDecodeCall { // TODO: this can probably be named/designed better... abstract class RepeatedStmt extends Stmt { } -private class DefaultRepeatedStmt extends RepeatedStmt { - DefaultRepeatedStmt() { this instanceof LoopStmt } -} +private class DefaultRepeatedStmt extends RepeatedStmt instanceof LoopStmt { } abstract class CheckEncodingCall extends MethodCall { } @@ -111,9 +104,7 @@ private class RepeatedUrlDecodeCall extends MethodCall { } } -private class CheckEncodingGuard extends Guard instanceof MethodCall { - CheckEncodingGuard() { this instanceof CheckEncodingCall } - +private class CheckEncodingGuard extends Guard instanceof MethodCall, CheckEncodingCall { Expr getCheckedExpr() { result = this.(MethodCall).getQualifier() } } From d9772c1880bb269c0c8e61db3beae8587bae8822 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 5 Mar 2024 15:04:43 -0500 Subject: [PATCH 194/731] Java: update change note --- java/ql/src/change-notes/2023-12-12-url-forward-query.md | 4 ---- java/ql/src/change-notes/2024-03-06-url-forward-query.md | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 java/ql/src/change-notes/2023-12-12-url-forward-query.md create mode 100644 java/ql/src/change-notes/2024-03-06-url-forward-query.md diff --git a/java/ql/src/change-notes/2023-12-12-url-forward-query.md b/java/ql/src/change-notes/2023-12-12-url-forward-query.md deleted file mode 100644 index 4efc4b7c4e0a..000000000000 --- a/java/ql/src/change-notes/2023-12-12-url-forward-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). diff --git a/java/ql/src/change-notes/2024-03-06-url-forward-query.md b/java/ql/src/change-notes/2024-03-06-url-forward-query.md new file mode 100644 index 000000000000..46028bda4f21 --- /dev/null +++ b/java/ql/src/change-notes/2024-03-06-url-forward-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). From d220b3a298044753382b0677d054e51da23a1246 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Mar 2024 14:42:46 -0400 Subject: [PATCH 195/731] Java: some updates to test cases --- .../code/java/security/PathSanitizer.qll | 9 +- .../semmle/code/java/security/UrlForward.qll | 19 +- .../security/CWE-552/UrlForwardTest.java | 163 +++++++++--------- 3 files changed, 90 insertions(+), 101 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll index f3c54629efde..77803e3e27dc 100644 --- a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll @@ -64,7 +64,10 @@ private predicate exactPathMatchGuard(Guard g, Expr e, boolean branch) { ) } -// TODO: switch back to private if possible +/** + * A sanitizer that protects against path injection vulnerabilities + * by checking for a matching path. + */ class ExactPathMatchSanitizer extends PathInjectionSanitizer { ExactPathMatchSanitizer() { this = DataFlow::BarrierGuard<exactPathMatchGuard/3>::getABarrierNode() @@ -152,8 +155,7 @@ private class DotDotCheckSanitizer extends PathInjectionSanitizer { } } -// TODO: switch back to private if possible -class BlockListGuard extends PathGuard instanceof MethodCall { +private class BlockListGuard extends PathGuard instanceof MethodCall { BlockListGuard() { (isStringPartialMatch(this) or isPathPrefixMatch(this)) and isDisallowedWord(super.getAnArgument()) @@ -230,7 +232,6 @@ private predicate isStringPartialMatch(MethodCall ma) { exists(RefType t | t = ma.getMethod().getDeclaringType() | t instanceof TypeString or t instanceof StringsKt ) and - // TODO ! Why not use `StringPartialMatchMethod` for the below? getSourceMethod(ma.getMethod()) .hasName(["contains", "matches", "regionMatches", "indexOf", "lastIndexOf"]) } diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index d19b8c163fdd..f7001023689b 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -50,23 +50,20 @@ private class FollowsBarrierPrefix extends UrlForwardBarrier { private class BarrierPrefix extends InterestingPrefix { BarrierPrefix() { not this.getStringValue().matches("/WEB-INF/%") and - not this.getStringValue() = "forward:" + not this instanceof ForwardPrefix } override int getOffset() { result = 0 } } -private class UrlPathBarrier extends UrlForwardBarrier { +private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionSanitizer { UrlPathBarrier() { - this instanceof PathInjectionSanitizer and - ( - this instanceof ExactPathMatchSanitizer //TODO: still need a better solution for this edge case... - or - // TODO: these don't enforce order of checks and PathSanitization... make bypass test cases. - this instanceof NoEncodingBarrier - or - this instanceof FullyDecodesBarrier - ) + this instanceof ExactPathMatchSanitizer //TODO: still need a better solution for this edge case... + or + // TODO: these don't enforce order of checks and PathSanitization... make bypass test cases. + this instanceof NoEncodingBarrier + or + this instanceof FullyDecodesBarrier } } diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index c7a9d82b1a0a..9b94f3f57248 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -23,7 +23,7 @@ @Controller public class UrlForwardTest extends HttpServlet implements Filter { - // (1) ORIGINAL + // Spring-related test cases @GetMapping("/bad1") public ModelAndView bad1(String url) { return new ModelAndView(url); // $ hasUrlForward @@ -91,7 +91,7 @@ public void good1(String url, HttpServletRequest request, HttpServletResponse re } } - // (2) UnsafeRequestPath + // Non-Spring test cases (UnsafeRequest*Path*) private static final String BASE_PATH = "/pages"; @Override @@ -107,12 +107,12 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha } } - // GOOD: Request dispatcher from servlet path with check + // BAD: Request dispatcher from servlet path with check that does not decode + // the user-supplied path; could bypass check with ".." encoded as "%2e%2e". public void doFilter2(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String path = ((HttpServletRequest) request).getServletPath(); - // actually BAD since could potentially bypass with ".." encoded as "%2e%2e"? if (path.startsWith(BASE_PATH) && !path.contains("..")) { request.getRequestDispatcher(path).forward(request, response); // $ hasUrlForward } else { @@ -125,7 +125,6 @@ public void doFilter3(ServletRequest request, ServletResponse response, FilterCh throws IOException, ServletException { String path = ((HttpServletRequest) request).getServletPath(); - // this is still good, should not flag here..., url-decoding first doesn't matter if looking for exact match... :( if (path.equals("/comaction")) { request.getRequestDispatcher(path).forward(request, response); } else { @@ -133,7 +132,7 @@ public void doFilter3(ServletRequest request, ServletResponse response, FilterCh } } - // (3) UnsafeServletRequestDispatch + // Non-Spring test cases (UnsafeServletRequest*Dispatch*) @Override // BAD: Request dispatcher constructed from `ServletContext` without input validation protected void doGet(HttpServletRequest request, HttpServletResponse response) @@ -190,41 +189,41 @@ protected void doHead2(HttpServletRequest request, HttpServletResponse response) String path = request.getParameter("path"); // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check - // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` if (path.startsWith(BASE_PATH)) { request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward } } - // GOOD: Request dispatcher with path traversal check + // BAD: Request dispatcher with path traversal check that does not decode + // the user-supplied path; could bypass check with ".." encoded as "%2e%2e". protected void doHead3(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); - // actually BAD since could potentially bypass with ".." encoded as "%2e%2e"? if (path.startsWith(BASE_PATH) && !path.contains("..")) { request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward } } - // GOOD: Request dispatcher with path normalization and comparison + // BAD: Request dispatcher with path normalization and comparison, but + // does not decode before normalization. protected void doHead4(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); + + // Since not decoded before normalization, "%2e%2e" can remain in the path Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); - // /pages/welcome.jsp/../../WEB-INF/web.xml becomes /WEB-INF/web.xml - // /pages/welcome.jsp/../../%57EB-INF/web.xml becomes /%57EB-INF/web.xml - // actually BAD since could potentially bypass with ".." encoded as "%2e%2e": "/pages/welcome.jsp/%2e%2e/%2e%2e/WEB-INF/web.xml" becomes /pages/welcome.jsp/%2e%2e/%2e%2e/WEB-INF/web.xml, which will pass this check and potentially be problematic if decoded later? if (requestedPath.startsWith(BASE_PATH)) { request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasUrlForward } } - // BAD (original FN): Request dispatcher with negation check and path normalization, but without URL decoding + // BAD: Request dispatcher with negation check and path normalization, but without URL decoding. protected void doHead5(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); + // Since not decoded before normalization, "/%57EB-INF" can remain in the path and pass the `startsWith` check. Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { @@ -232,7 +231,7 @@ protected void doHead5(HttpServletRequest request, HttpServletResponse response) } } - // BAD (I added to test decode with no loop): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + // BAD: Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding protected void doHead7(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); @@ -246,9 +245,9 @@ protected void doHead7(HttpServletRequest request, HttpServletResponse response) // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass protected void doHead6(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); // v + String path = request.getParameter("path"); // TODO: remove this debugging comment: // v - if (path.contains("%")){ // v.getAnAccess() + if (path.contains("%")){ // TODO: remove this debugging comment: // v.getAnAccess() while (path.contains("%")) { path = URLDecoder.decode(path, "UTF-8"); } @@ -259,10 +258,53 @@ protected void doHead6(HttpServletRequest request, HttpServletResponse response) } } + // GOOD: Request dispatcher with URL encoding check and path traversal check + protected void doHead16(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + + if (!path.contains("%")){ + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + } + + // TODO: clean-up + // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, + // having previously been checked against a block-list of forbidden values." + protected void doHead10(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + if (path.contains("%")){ // BAD: wrong check + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + // if (path.contains("%")){ // BAD: wrong check + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + // } + } + } + } + + // TODO: clean-up + // "GOOD" (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding + // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, + // having previously been checked against a block-list of forbidden values." + protected void doHead11(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String path = request.getParameter("path"); + + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { + if (!path.contains("%")){ // GOOD: right check + request.getServletContext().getRequestDispatcher(path).include(request, response); + } + } + } + // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass protected void doHead8(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); // v + String path = request.getParameter("path"); // TODO: remove this debugging comment: // v while (path.contains("%")) { path = URLDecoder.decode(path, "UTF-8"); } @@ -272,6 +314,7 @@ protected void doHead8(HttpServletRequest request, HttpServletResponse response) } } + // TODO: see if can fix? // FP now.... // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass protected void doHead9(HttpServletRequest request, HttpServletResponse response) @@ -288,78 +331,26 @@ protected void doHead9(HttpServletRequest request, HttpServletResponse response) } } - // New Tests + // BAD: `StaplerResponse.forward` without any checks public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object obj) throws IOException, ServletException { String url = req.getParameter("target"); rsp.forward(obj, url, req); // $ hasUrlForward } - // Other Tests for edge cases: - // // GOOD (I added): Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass - // // testing `if` stmt requirement for BB controlling - // protected void doHead12(HttpServletRequest request, HttpServletResponse response) - // throws ServletException, IOException { - // String path = request.getParameter("path"); - // if (path.contains("%")) { - // while (path.contains("%")) { - // path = URLDecoder.decode(path, "UTF-8"); - // } - // } - // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - // request.getServletContext().getRequestDispatcher(path).include(request, response); - // } - // } - // // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding - // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, - // // having previously been checked against a block-list of forbidden values." - // protected void doHead8(HttpServletRequest request, HttpServletResponse response) - // throws ServletException, IOException { - // String path = request.getParameter("path"); - - // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - // boolean hasEncoding = path.contains("%"); // BAD: doesn't do anything with the check... - // request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward - // } - // } - // // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding - // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, - // // having previously been checked against a block-list of forbidden values." - // protected void doHead9(HttpServletRequest request, HttpServletResponse response) - // throws ServletException, IOException { - // String path = request.getParameter("path"); - - // boolean hasEncoding = path.contains("%"); // BAD: doesn't do anything with the check... and check comes BEFORE blocklist so guard should not trigger - // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - // request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward - // } - // } - - // // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding - // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, - // // having previously been checked against a block-list of forbidden values." - // protected void doHead10(HttpServletRequest request, HttpServletResponse response) - // throws ServletException, IOException { - // String path = request.getParameter("path"); - - // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - // if (path.contains("%")){ // BAD: wrong check - // request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward - // } - // } - // } - - // // "GOOD" (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding - // // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, - // // having previously been checked against a block-list of forbidden values." - // protected void doHead11(HttpServletRequest request, HttpServletResponse response) - // throws ServletException, IOException { - // String path = request.getParameter("path"); - - // if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - // if (!path.contains("%")){ // GOOD: right check - // request.getServletContext().getRequestDispatcher(path).include(request, response); - // } - // } - // } + // QHelp example + private static final String VALID_FORWARD = "https://cwe.mitre.org/data/definitions/552.html"; + + protected void doGet2(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + ServletConfig cfg = getServletConfig(); + ServletContext sc = cfg.getServletContext(); + // BAD: a request parameter is incorporated without validation into a URL forward + sc.getRequestDispatcher(request.getParameter("target")).forward(request, response); // $ hasUrlForward + + // GOOD: the request parameter is validated against a known fixed string + if (VALID_FORWARD.equals(request.getParameter("target"))) { + sc.getRequestDispatcher(VALID_FORWARD).forward(request, response); + } + } } From 052452b18666e793783032da33fd1863e5d7121f Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Mar 2024 15:54:11 -0400 Subject: [PATCH 196/731] Java: create UrlDecodeMethod --- .../lib/semmle/code/java/frameworks/Networking.qll | 13 +++++++++++++ .../ql/lib/semmle/code/java/security/UrlForward.qll | 7 ++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/java/ql/lib/semmle/code/java/frameworks/Networking.qll b/java/ql/lib/semmle/code/java/frameworks/Networking.qll index c473cc9fc09c..f86cecd5b4ee 100644 --- a/java/ql/lib/semmle/code/java/frameworks/Networking.qll +++ b/java/ql/lib/semmle/code/java/frameworks/Networking.qll @@ -24,6 +24,11 @@ class TypeUrl extends RefType { TypeUrl() { this.hasQualifiedName("java.net", "URL") } } +/** The type `java.net.URLDecoder`. */ +class TypeUrlDecoder extends RefType { + TypeUrlDecoder() { this.hasQualifiedName("java.net", "URLDecoder") } +} + /** The type `java.net.URI`. */ class TypeUri extends RefType { TypeUri() { this.hasQualifiedName("java.net", "URI") } @@ -157,6 +162,14 @@ class UrlOpenConnectionMethod extends Method { } } +/** The method `java.net.URLDecoder::decode`. */ +class UrlDecodeMethod extends Method { + UrlDecodeMethod() { + this.getDeclaringType() instanceof TypeUrlDecoder and + this.getName() = "decode" + } +} + /** The method `javax.net.SocketFactory::createSocket`. */ class CreateSocketMethod extends Method { CreateSocketMethod() { diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index f7001023689b..be9bfb91043e 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -41,8 +41,6 @@ abstract class UrlForwardBarrier extends DataFlow::Node { } private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } -// TODO: should this also take URL encoding/decoding into account? -// TODO: and PathSanitization in general? private class FollowsBarrierPrefix extends UrlForwardBarrier { FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } @@ -58,9 +56,8 @@ private class BarrierPrefix extends InterestingPrefix { private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionSanitizer { UrlPathBarrier() { - this instanceof ExactPathMatchSanitizer //TODO: still need a better solution for this edge case... + this instanceof ExactPathMatchSanitizer or - // TODO: these don't enforce order of checks and PathSanitization... make bypass test cases. this instanceof NoEncodingBarrier or this instanceof FullyDecodesBarrier @@ -71,7 +68,7 @@ abstract class UrlDecodeCall extends MethodCall { } private class DefaultUrlDecodeCall extends UrlDecodeCall { DefaultUrlDecodeCall() { - this.getMethod().hasQualifiedName("java.net", "URLDecoder", "decode") or // TODO: reuse existing class? Or make this a class? + this.getMethod() instanceof UrlDecodeMethod or this.getMethod().hasQualifiedName("org.eclipse.jetty.util.URIUtil", "URIUtil", "decodePath") } } From 042dcf9cd961e2b24b30220b8f7618221022f339 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Mar 2024 16:50:41 -0400 Subject: [PATCH 197/731] Java: some updates to UrlPathBarrier code --- java/ql/lib/semmle/code/java/JDK.qll | 7 ++ .../semmle/code/java/security/UrlForward.qll | 69 +++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/java/ql/lib/semmle/code/java/JDK.qll b/java/ql/lib/semmle/code/java/JDK.qll index 7623cc87393c..55d420dbcaec 100644 --- a/java/ql/lib/semmle/code/java/JDK.qll +++ b/java/ql/lib/semmle/code/java/JDK.qll @@ -38,6 +38,13 @@ class StringLengthMethod extends Method { StringLengthMethod() { this.hasName("length") and this.getDeclaringType() instanceof TypeString } } +/** The `contains()` method of the class `java.lang.String`. */ +class StringContainsMethod extends Method { + StringContainsMethod() { + this.hasName("contains") and this.getDeclaringType() instanceof TypeString + } +} + /** * The methods on the class `java.lang.String` that are used to perform partial matches with a specified substring or char. */ diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index be9bfb91043e..8f1b978cbfcc 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -58,12 +58,13 @@ private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionS UrlPathBarrier() { this instanceof ExactPathMatchSanitizer or - this instanceof NoEncodingBarrier + this instanceof NoUrlEncodingBarrier or - this instanceof FullyDecodesBarrier + this instanceof FullyDecodesUrlBarrier } } +/** A call to a method that decodes a URL. */ abstract class UrlDecodeCall extends MethodCall { } private class DefaultUrlDecodeCall extends UrlDecodeCall { @@ -73,77 +74,69 @@ private class DefaultUrlDecodeCall extends UrlDecodeCall { } } -// TODO: this can probably be named/designed better... -abstract class RepeatedStmt extends Stmt { } +/** A repeated call to a method that decodes a URL. */ +abstract class RepeatedUrlDecodeCall extends MethodCall { } -private class DefaultRepeatedStmt extends RepeatedStmt instanceof LoopStmt { } - -abstract class CheckEncodingCall extends MethodCall { } - -private class DefaultCheckEncodingCall extends CheckEncodingCall { - DefaultCheckEncodingCall() { - // TODO: indexOf?, etc. - this.getMethod().hasQualifiedName("java.lang", "String", "contains") and // TODO: reuse existing class? Or make this a class? - this.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "%" +private class DefaultRepeatedUrlDecodeCall extends RepeatedUrlDecodeCall { + DefaultRepeatedUrlDecodeCall() { + this instanceof UrlDecodeCall and + this.getAnEnclosingStmt() instanceof LoopStmt } } -// TODO: better naming? -// TODO: check if any URL decoding implementations _fully_ decode... or if all need to be called in a loop? -// TODO: make this extendable instead of `RepeatedStmt`? -private class RepeatedUrlDecodeCall extends MethodCall { - RepeatedUrlDecodeCall() { - this instanceof UrlDecodeCall and - this.getAnEnclosingStmt() instanceof RepeatedStmt +/** A method call that checks a string for URL encoding. */ +abstract class CheckUrlEncodingCall extends MethodCall { } + +private class DefaultCheckUrlEncodingCall extends CheckUrlEncodingCall { + DefaultCheckUrlEncodingCall() { + this.getMethod() instanceof StringContainsMethod and + this.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "%" } } -private class CheckEncodingGuard extends Guard instanceof MethodCall, CheckEncodingCall { +private class CheckUrlEncodingGuard extends Guard instanceof CheckUrlEncodingCall { Expr getCheckedExpr() { result = this.(MethodCall).getQualifier() } } -private predicate noEncodingGuard(Guard g, Expr e, boolean branch) { - g instanceof CheckEncodingGuard and - e = g.(CheckEncodingGuard).getCheckedExpr() and +private predicate noUrlEncodingGuard(Guard g, Expr e, boolean branch) { + g instanceof CheckUrlEncodingGuard and + e = g.(CheckUrlEncodingGuard).getCheckedExpr() and branch = false or - // branch = false and - // g instanceof AssignExpr and // AssignExpr - // exists(CheckEncodingCall call | g.(AssignExpr).getSource() = call | e = call.getQualifier()) branch = false and - g.(Expr).getType() instanceof BooleanType and // AssignExpr + g.(Expr).getType() instanceof BooleanType and // TODO: remove debugging comment: // AssignExpr ( - exists(CheckEncodingCall call, AssignExpr ae | + exists(CheckUrlEncodingCall call, AssignExpr ae | ae.getSource() = call and e = call.getQualifier() and g = ae.getDest() ) or - exists(CheckEncodingCall call, LocalVariableDeclExpr vde | + exists(CheckUrlEncodingCall call, LocalVariableDeclExpr vde | vde.getInitOrPatternSource() = call and e = call.getQualifier() and g = vde.getAnAccess() //and //vde.getVariable() = g + // TODO: remove debugging comments above ) ) } -// TODO: check edge case of !contains(%), make sure that behaves as expected at least. -private class NoEncodingBarrier extends DataFlow::Node { - NoEncodingBarrier() { this = DataFlow::BarrierGuard<noEncodingGuard/3>::getABarrierNode() } +private class NoUrlEncodingBarrier extends DataFlow::Node { + NoUrlEncodingBarrier() { this = DataFlow::BarrierGuard<noUrlEncodingGuard/3>::getABarrierNode() } } -private predicate fullyDecodesGuard(Expr e) { - exists(CheckEncodingGuard g, RepeatedUrlDecodeCall decodeCall | +private predicate fullyDecodesUrlGuard(Expr e) { + exists(CheckUrlEncodingGuard g, RepeatedUrlDecodeCall decodeCall | e = g.getCheckedExpr() and g.controls(decodeCall.getBasicBlock(), true) ) } -private class FullyDecodesBarrier extends DataFlow::Node { - FullyDecodesBarrier() { +private class FullyDecodesUrlBarrier extends DataFlow::Node { + FullyDecodesUrlBarrier() { exists(Variable v, Expr e | this.asExpr() = v.getAnAccess() | - fullyDecodesGuard(e) and + fullyDecodesUrlGuard(e) and e = v.getAnAccess() and e.getBasicBlock().bbDominates(this.asExpr().getBasicBlock()) ) From a8075969d886bc86ef60b12f10bdf551f4145eba Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Mar 2024 18:33:00 -0400 Subject: [PATCH 198/731] Java: add QLDocs to UrlPathBarrier code --- .../semmle/code/java/security/UrlForward.qll | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 8f1b978cbfcc..d4cad4e2f54d 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -41,10 +41,12 @@ abstract class UrlForwardBarrier extends DataFlow::Node { } private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } +// TODO: QLDoc private class FollowsBarrierPrefix extends UrlForwardBarrier { FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } +// TODO: QLDoc and fix broadness of this prefix check... private class BarrierPrefix extends InterestingPrefix { BarrierPrefix() { not this.getStringValue().matches("/WEB-INF/%") and @@ -54,6 +56,7 @@ private class BarrierPrefix extends InterestingPrefix { override int getOffset() { result = 0 } } +/** A barrier that protects against path injection vulnerabilities while accounting for URL encoding. */ private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionSanitizer { UrlPathBarrier() { this instanceof ExactPathMatchSanitizer @@ -77,11 +80,8 @@ private class DefaultUrlDecodeCall extends UrlDecodeCall { /** A repeated call to a method that decodes a URL. */ abstract class RepeatedUrlDecodeCall extends MethodCall { } -private class DefaultRepeatedUrlDecodeCall extends RepeatedUrlDecodeCall { - DefaultRepeatedUrlDecodeCall() { - this instanceof UrlDecodeCall and - this.getAnEnclosingStmt() instanceof LoopStmt - } +private class DefaultRepeatedUrlDecodeCall extends RepeatedUrlDecodeCall instanceof UrlDecodeCall { + DefaultRepeatedUrlDecodeCall() { this.getAnEnclosingStmt() instanceof LoopStmt } } /** A method call that checks a string for URL encoding. */ @@ -94,17 +94,19 @@ private class DefaultCheckUrlEncodingCall extends CheckUrlEncodingCall { } } +/** A guard that looks for a method call that checks for URL encoding. */ private class CheckUrlEncodingGuard extends Guard instanceof CheckUrlEncodingCall { Expr getCheckedExpr() { result = this.(MethodCall).getQualifier() } } +/** Holds if `g` is guard for a URL that does not contain URL encoding. */ private predicate noUrlEncodingGuard(Guard g, Expr e, boolean branch) { g instanceof CheckUrlEncodingGuard and e = g.(CheckUrlEncodingGuard).getCheckedExpr() and branch = false or branch = false and - g.(Expr).getType() instanceof BooleanType and // TODO: remove debugging comment: // AssignExpr + g.(Expr).getType() instanceof BooleanType and ( exists(CheckUrlEncodingCall call, AssignExpr ae | ae.getSource() = call and @@ -115,17 +117,17 @@ private predicate noUrlEncodingGuard(Guard g, Expr e, boolean branch) { exists(CheckUrlEncodingCall call, LocalVariableDeclExpr vde | vde.getInitOrPatternSource() = call and e = call.getQualifier() and - g = vde.getAnAccess() //and - //vde.getVariable() = g - // TODO: remove debugging comments above + g = vde.getAnAccess() ) ) } +/** A barrier for URLs that do not contain URL encoding. */ private class NoUrlEncodingBarrier extends DataFlow::Node { NoUrlEncodingBarrier() { this = DataFlow::BarrierGuard<noUrlEncodingGuard/3>::getABarrierNode() } } +/** Holds if `g` is guard for a URL that is fully decoded. */ private predicate fullyDecodesUrlGuard(Expr e) { exists(CheckUrlEncodingGuard g, RepeatedUrlDecodeCall decodeCall | e = g.getCheckedExpr() and @@ -133,6 +135,7 @@ private predicate fullyDecodesUrlGuard(Expr e) { ) } +/** A barrier for URLs that are fully decoded. */ private class FullyDecodesUrlBarrier extends DataFlow::Node { FullyDecodesUrlBarrier() { exists(Variable v, Expr e | this.asExpr() = v.getAnAccess() | From a002674587b255694088bed6768b8c16cf6ffac9 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Mar 2024 21:22:35 -0400 Subject: [PATCH 199/731] Java: clean up comments on test cases --- .../security/CWE-552/UrlForwardTest.java | 59 ++++++++----------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index 9b94f3f57248..e66b5c899c72 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -23,7 +23,7 @@ @Controller public class UrlForwardTest extends HttpServlet implements Filter { - // Spring-related test cases + // Spring `ModelAndView` test cases @GetMapping("/bad1") public ModelAndView bad1(String url) { return new ModelAndView(url); // $ hasUrlForward @@ -36,6 +36,7 @@ public ModelAndView bad2(String url) { return modelAndView; } + // Spring `"forward:"` prefix test cases @GetMapping("/bad3") public String bad3(String url) { return "forward:" + url + "/swagger-ui/index.html"; // $ hasUrlForward @@ -47,6 +48,7 @@ public ModelAndView bad4(String url) { return modelAndView; } + // `RequestDispatcher` test cases from a Spring `GetMapping` entry point @GetMapping("/bad5") public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { try { @@ -91,7 +93,7 @@ public void good1(String url, HttpServletRequest request, HttpServletResponse re } } - // Non-Spring test cases (UnsafeRequest*Path*) + // `RequestDispatcher` test cases from non-Spring entry points private static final String BASE_PATH = "/pages"; @Override @@ -132,7 +134,6 @@ public void doFilter3(ServletRequest request, ServletResponse response, FilterCh } } - // Non-Spring test cases (UnsafeServletRequest*Dispatch*) @Override // BAD: Request dispatcher constructed from `ServletContext` without input validation protected void doGet(HttpServletRequest request, HttpServletResponse response) @@ -184,7 +185,7 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response) } // BAD: Request dispatcher without path traversal check - protected void doHead2(HttpServletRequest request, HttpServletResponse response) + protected void doHead1(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); @@ -196,7 +197,7 @@ protected void doHead2(HttpServletRequest request, HttpServletResponse response) // BAD: Request dispatcher with path traversal check that does not decode // the user-supplied path; could bypass check with ".." encoded as "%2e%2e". - protected void doHead3(HttpServletRequest request, HttpServletResponse response) + protected void doHead2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); @@ -207,7 +208,7 @@ protected void doHead3(HttpServletRequest request, HttpServletResponse response) // BAD: Request dispatcher with path normalization and comparison, but // does not decode before normalization. - protected void doHead4(HttpServletRequest request, HttpServletResponse response) + protected void doHead3(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); @@ -220,7 +221,7 @@ protected void doHead4(HttpServletRequest request, HttpServletResponse response) } // BAD: Request dispatcher with negation check and path normalization, but without URL decoding. - protected void doHead5(HttpServletRequest request, HttpServletResponse response) + protected void doHead4(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); // Since not decoded before normalization, "/%57EB-INF" can remain in the path and pass the `startsWith` check. @@ -232,7 +233,7 @@ protected void doHead5(HttpServletRequest request, HttpServletResponse response) } // BAD: Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding - protected void doHead7(HttpServletRequest request, HttpServletResponse response) + protected void doHead5(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); path = URLDecoder.decode(path, "UTF-8"); @@ -245,9 +246,9 @@ protected void doHead7(HttpServletRequest request, HttpServletResponse response) // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass protected void doHead6(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); // TODO: remove this debugging comment: // v + String path = request.getParameter("path"); - if (path.contains("%")){ // TODO: remove this debugging comment: // v.getAnAccess() + if (path.contains("%")){ while (path.contains("%")) { path = URLDecoder.decode(path, "UTF-8"); } @@ -259,7 +260,7 @@ protected void doHead6(HttpServletRequest request, HttpServletResponse response) } // GOOD: Request dispatcher with URL encoding check and path traversal check - protected void doHead16(HttpServletRequest request, HttpServletResponse response) + protected void doHead7(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); @@ -270,41 +271,33 @@ protected void doHead16(HttpServletRequest request, HttpServletResponse response } } - // TODO: clean-up - // BAD (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding - // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, - // having previously been checked against a block-list of forbidden values." - protected void doHead10(HttpServletRequest request, HttpServletResponse response) + // BAD: Request dispatcher without URL decoding before WEB-INF and path traversal checks + protected void doHead8(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); - if (path.contains("%")){ // BAD: wrong check - if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - // if (path.contains("%")){ // BAD: wrong check + if (path.contains("%")){ // incorrect check + if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward - // } + } } } - } - // TODO: clean-up - // "GOOD" (I added): Request dispatcher with path traversal check and single URL decoding; may be vulnerable to double-encoding - // Tests urlEncoding BarrierGuard "a guard that considers a string safe because it is checked for URL encoding sequences, - // having previously been checked against a block-list of forbidden values." - protected void doHead11(HttpServletRequest request, HttpServletResponse response) + // GOOD: Request dispatcher with WEB-INF, path traversal, and URL encoding checks + protected void doHead9(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getParameter("path"); if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - if (!path.contains("%")){ // GOOD: right check + if (!path.contains("%")){ // correct check request.getServletContext().getRequestDispatcher(path).include(request, response); } } } // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass - protected void doHead8(HttpServletRequest request, HttpServletResponse response) + protected void doHead10(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); // TODO: remove this debugging comment: // v + String path = request.getParameter("path"); while (path.contains("%")) { path = URLDecoder.decode(path, "UTF-8"); } @@ -314,12 +307,12 @@ protected void doHead8(HttpServletRequest request, HttpServletResponse response) } } - // TODO: see if can fix? - // FP now.... // GOOD: Request dispatcher with path traversal check and URL decoding in a loop to avoid double-encoding bypass - protected void doHead9(HttpServletRequest request, HttpServletResponse response) + protected void doHead11(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String path = request.getParameter("path"); // v + String path = request.getParameter("path"); + // FP: we don't currently handle the scenario where the + // `path.contains("%")` check is stored in a variable. boolean hasEncoding = path.contains("%"); while (hasEncoding) { path = URLDecoder.decode(path, "UTF-8"); From 7310c155e24a238316224adf9cff9204f174d843 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Mar 2024 21:29:00 -0400 Subject: [PATCH 200/731] Java: rename SpringUrlForwardSink --- java/ql/lib/semmle/code/java/security/UrlForward.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index d4cad4e2f54d..76ef139b7b2f 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -23,8 +23,8 @@ private class DefaultUrlForwardSink extends UrlForwardSink { * An expression appended (perhaps indirectly) to `"forward:"` * and reachable from a Spring entry point. */ -private class SpringUrlForwardSink extends UrlForwardSink { - SpringUrlForwardSink() { +private class SpringUrlForwardPrefixSink extends UrlForwardSink { + SpringUrlForwardPrefixSink() { any(SpringRequestMappingMethod srmm).polyCalls*(this.getEnclosingCallable()) and this.asExpr() = any(ForwardPrefix fp).getAnAppendedExpression() } From c5a59d6c514cbe2c8985ada441bdd5203b9c615e Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 10 Mar 2024 23:27:22 -0400 Subject: [PATCH 201/731] Java: add QLDoc --- java/ql/lib/semmle/code/java/security/UrlForward.qll | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 76ef139b7b2f..e72f3ab21173 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -41,12 +41,11 @@ abstract class UrlForwardBarrier extends DataFlow::Node { } private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } -// TODO: QLDoc +/** A barrier for URLs appended to a prefix. */ private class FollowsBarrierPrefix extends UrlForwardBarrier { FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } -// TODO: QLDoc and fix broadness of this prefix check... private class BarrierPrefix extends InterestingPrefix { BarrierPrefix() { not this.getStringValue().matches("/WEB-INF/%") and From e99cea340bcf8902bf133c8913cf867d943475c9 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 12 Mar 2024 12:21:22 -0400 Subject: [PATCH 202/731] Java: update UrlPathBarrier to include FollowsBarrierPrefix --- .../semmle/code/java/security/UrlForward.qll | 17 ++++----- .../security/CWE-552/UrlForwardTest.java | 36 ++++++++++++++++++- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index e72f3ab21173..8c7f8d55eb0f 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -41,8 +41,7 @@ abstract class UrlForwardBarrier extends DataFlow::Node { } private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } -/** A barrier for URLs appended to a prefix. */ -private class FollowsBarrierPrefix extends UrlForwardBarrier { +private class FollowsBarrierPrefix extends DataFlow::Node { FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } @@ -55,14 +54,16 @@ private class BarrierPrefix extends InterestingPrefix { override int getOffset() { result = 0 } } -/** A barrier that protects against path injection vulnerabilities while accounting for URL encoding. */ +/** + * A barrier that protects against path injection vulnerabilities while accounting + * for URL encoding and concatenated prefixes. + */ private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionSanitizer { UrlPathBarrier() { - this instanceof ExactPathMatchSanitizer - or - this instanceof NoUrlEncodingBarrier - or - this instanceof FullyDecodesUrlBarrier + this instanceof ExactPathMatchSanitizer or + this instanceof NoUrlEncodingBarrier or + this instanceof FullyDecodesUrlBarrier or + this instanceof FollowsBarrierPrefix } } diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index e66b5c899c72..6d1c0580cb68 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -85,7 +85,41 @@ public void bad7(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/good1") public void good1(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); + request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); // $ SPURIOUS: hasUrlForward + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + // BAD: appended to a prefix without path sanitization + @GetMapping("/bad8") + public void bad8(String urlPath, HttpServletRequest request, HttpServletResponse response) { + try { + String url = "/pages" + urlPath; + request.getRequestDispatcher(url).forward(request, response); // $ hasUrlForward + } catch (ServletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + // GOOD: appended to a prefix with path sanitization + @GetMapping("/good2") + public void good2(String urlPath, HttpServletRequest request, HttpServletResponse response) { + try { + while (urlPath.contains("%")) { + urlPath = URLDecoder.decode(urlPath, "UTF-8"); + } + + if (!urlPath.contains("..") && !urlPath.startsWith("/WEB-INF")) { + // Note: path injection sanitizer does not account for string concatenation instead of a `startswith` check + String url = "/pages" + urlPath; + request.getRequestDispatcher(url).forward(request, response); + } + } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { From 04d27f2d65e9fa1833731889404e57c33f9a22f0 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Tue, 12 Mar 2024 20:44:53 -0400 Subject: [PATCH 203/731] Java: adjust prefix barriers --- .../semmle/code/java/security/UrlForward.qll | 37 +++++++++++++++---- .../security/CWE-552/UrlForwardTest.java | 10 ++++- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 8c7f8d55eb0f..5ea36d7c6b8b 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -41,29 +41,50 @@ abstract class UrlForwardBarrier extends DataFlow::Node { } private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } -private class FollowsBarrierPrefix extends DataFlow::Node { +/** + * A barrier for values appended to a "redirect:" prefix. + * These results are excluded because they should be handled + * by the `java/unvalidated-url-redirection` query instead. + */ +private class RedirectPrefixBarrier extends UrlForwardBarrier { + RedirectPrefixBarrier() { this.asExpr() = any(RedirectPrefix fp).getAnAppendedExpression() } +} + +private class RedirectPrefix extends InterestingPrefix { + RedirectPrefix() { this.getStringValue() = "redirect:" } + + override int getOffset() { result = 0 } +} + +/** + * A value that is the result of prepending a string that prevents + * any value from controlling the path of a URL. + */ +private class FollowsBarrierPrefix extends UrlForwardBarrier { FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } } private class BarrierPrefix extends InterestingPrefix { + int offset; + BarrierPrefix() { - not this.getStringValue().matches("/WEB-INF/%") and - not this instanceof ForwardPrefix + // Matches strings that look like when prepended to untrusted input, they will restrict + // the path of a URL: for example, anything containing `?` or `#`. + exists(this.getStringValue().regexpFind("[?#]", 0, offset)) } - override int getOffset() { result = 0 } + override int getOffset() { result = offset } } /** - * A barrier that protects against path injection vulnerabilities while accounting - * for URL encoding and concatenated prefixes. + * A barrier that protects against path injection vulnerabilities + * while accounting for URL encoding. */ private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionSanitizer { UrlPathBarrier() { this instanceof ExactPathMatchSanitizer or this instanceof NoUrlEncodingBarrier or - this instanceof FullyDecodesUrlBarrier or - this instanceof FollowsBarrierPrefix + this instanceof FullyDecodesUrlBarrier } } diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index 6d1c0580cb68..19bd739c294a 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -48,6 +48,14 @@ public ModelAndView bad4(String url) { return modelAndView; } + // Not relevant for this query since redirecting instead of forwarding + // This result should be found by the `java/unvalidated-url-redirection` query instead. + @GetMapping("/redirect") + public ModelAndView redirect(String url) { + ModelAndView modelAndView = new ModelAndView("redirect:" + url); + return modelAndView; + } + // `RequestDispatcher` test cases from a Spring `GetMapping` entry point @GetMapping("/bad5") public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { @@ -85,7 +93,7 @@ public void bad7(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/good1") public void good1(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); // $ SPURIOUS: hasUrlForward + request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { From 5ac453eb38813b14f0e62c2215486581c3943b87 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Wed, 13 Mar 2024 09:36:42 -0400 Subject: [PATCH 204/731] Java: add spurious test case for StringBuilder.append --- .../security/CWE-552/UrlForwardTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index 19bd739c294a..5d1d19d4be51 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -388,4 +388,25 @@ protected void doGet2(HttpServletRequest request, HttpServletResponse response) sc.getRequestDispatcher(VALID_FORWARD).forward(request, response); } } + + // Test `StringBuilder.append` sequence with `?` appended before the user input + private static final String LOGIN_URL = "/UI/Login"; + + public void doPost2(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + StringBuilder forwardUrl = new StringBuilder(200); + forwardUrl.append(LOGIN_URL); + + String queryString = request.getQueryString(); + + // should be sanitized due to the `?` appended + forwardUrl.append('?').append(queryString); + + String fUrl = forwardUrl.toString(); + + ServletConfig config = getServletConfig(); + + RequestDispatcher dispatcher = config.getServletContext().getRequestDispatcher(fUrl); // $ SPURIOUS: hasUrlForward + dispatcher.forward(request, response); + } } From 1b01f26d09dc118c3796846ceaa975525c3ccf6f Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Wed, 13 Mar 2024 16:27:25 -0400 Subject: [PATCH 205/731] Java: adjust BarrierPrefix to handle prepended chars --- java/ql/lib/semmle/code/java/security/UrlForward.qll | 2 ++ .../ql/test/query-tests/security/CWE-552/UrlForwardTest.java | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 5ea36d7c6b8b..b8cc6821abff 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -71,6 +71,8 @@ private class BarrierPrefix extends InterestingPrefix { // Matches strings that look like when prepended to untrusted input, they will restrict // the path of a URL: for example, anything containing `?` or `#`. exists(this.getStringValue().regexpFind("[?#]", 0, offset)) + or + this.(CharacterLiteral).getValue() = ["?", "#"] and offset = 0 } override int getOffset() { result = offset } diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index 5d1d19d4be51..f0e982c74003 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -389,7 +389,7 @@ protected void doGet2(HttpServletRequest request, HttpServletResponse response) } } - // Test `StringBuilder.append` sequence with `?` appended before the user input + // GOOD: char `?` appended before the user input private static final String LOGIN_URL = "/UI/Login"; public void doPost2(HttpServletRequest request, HttpServletResponse response) @@ -399,14 +399,13 @@ public void doPost2(HttpServletRequest request, HttpServletResponse response) String queryString = request.getQueryString(); - // should be sanitized due to the `?` appended forwardUrl.append('?').append(queryString); String fUrl = forwardUrl.toString(); ServletConfig config = getServletConfig(); - RequestDispatcher dispatcher = config.getServletContext().getRequestDispatcher(fUrl); // $ SPURIOUS: hasUrlForward + RequestDispatcher dispatcher = config.getServletContext().getRequestDispatcher(fUrl); dispatcher.forward(request, response); } } From ef8368cfc4a7201187e8e677fa940347b424287d Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Wed, 13 Mar 2024 22:37:13 +0100 Subject: [PATCH 206/731] fix typo --- csharp/ql/src/Security Features/CWE-601/UrlRedirect.qhelp | 2 +- java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/ql/src/Security Features/CWE-601/UrlRedirect.qhelp b/csharp/ql/src/Security Features/CWE-601/UrlRedirect.qhelp index c9a1b692b812..80873b1bc1cc 100644 --- a/csharp/ql/src/Security Features/CWE-601/UrlRedirect.qhelp +++ b/csharp/ql/src/Security Features/CWE-601/UrlRedirect.qhelp @@ -57,7 +57,7 @@ which is harmless but perhaps not intended. You can substitute your own domain ( <li> OWASP: -<a href="https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html">XSS +<a href="https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html"> Unvalidated Redirects and Forwards Cheat Sheet</a>. </li> <li> diff --git a/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp b/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp index eddca4f62f69..4325ccf5430a 100644 --- a/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp +++ b/java/ql/src/Security/CWE/CWE-601/UrlRedirect.qhelp @@ -57,7 +57,7 @@ which is harmless but perhaps not intended. You can substitute your own domain ( <li> OWASP: -<a href="https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html">XSS +<a href="https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html"> Unvalidated Redirects and Forwards Cheat Sheet</a>. </li> <li> From 61597f5ac79b2a38285a2299fc0d5439d6257ae0 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 13 Mar 2024 22:37:03 +0000 Subject: [PATCH 207/731] C++: This commit does two things: 1. It fixes a logic error in the cannotContainString predicate. 2. It reverts the changes to the `isSource` predicate that required the external function to be within the source root. The change to `isSource` was meant to fix the a performance problem that occurred because of the logic error in the cannotContainString predicate. However, now that the logic error is fixed this is no longer necessary :tada: --- .../Likely Bugs/Format/NonConstantFormat.ql | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql index 3e9576de175b..62c3c98e197c 100644 --- a/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql +++ b/cpp/ql/src/Likely Bugs/Format/NonConstantFormat.ql @@ -37,6 +37,11 @@ class UncalledFunction extends Function { } } +/** The `unsigned short` type. */ +class UnsignedShort extends ShortType { + UnsignedShort() { this.isUnsigned() } +} + /** * Holds if `t` cannot refer to a string. That is, it's a built-in * or arithmetic type that is not a "`char` like" type. @@ -51,7 +56,7 @@ predicate cannotContainString(Type t) { not unspecified instanceof Char16Type and not unspecified instanceof Char32Type and // C often defines `wchar_t` as `unsigned short` - unspecified = any(ShortType short | not short.isUnsigned()) + not unspecified instanceof UnsignedShort | unspecified instanceof ArithmeticType or unspecified instanceof BuiltInType @@ -63,14 +68,6 @@ predicate dataFlowOrTaintFlowFunction(Function func, FunctionOutput output) { func.(TaintFunction).hasTaintFlow(_, output) } -/** Holds if `func` is declared inside the source root. */ -predicate isInsideSourceRoot(Function func) { - exists(File f | - f = func.getFile() and - exists(f.getRelativePath()) - ) -} - /** * Holds if `node` is a non-constant source of data flow for non-const format string detection. * This is defined as either: @@ -119,8 +116,7 @@ predicate isNonConst(DataFlow::Node node) { // The function's output must also not be const to be considered a non-const source exists(Function func, CallInstruction call | not func.hasDefinition() and - func = call.getStaticCallTarget() and - isInsideSourceRoot(func) + func = call.getStaticCallTarget() | // Case 1: It's a known dataflow or taintflow function with flow to the return value call.getUnconvertedResultExpression() = node.asIndirectExpr() and From d1c253b5193db7f758792660319fd6ef17d10fa7 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 13 Mar 2024 22:41:32 +0000 Subject: [PATCH 208/731] C++: Accept test changes. --- .../Format/NonConstantFormat/NonConstantFormat.expected | 4 ++++ .../Likely Bugs/Format/NonConstantFormat/nested.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected index 7cdf2ada53ab..c3c94158da8a 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected @@ -7,6 +7,7 @@ edges | nested.cpp:34:37:34:39 | *fmt | nested.cpp:35:19:35:21 | *fmt | provenance | | | nested.cpp:35:19:35:21 | *fmt | nested.cpp:27:32:27:34 | *fmt | provenance | | | nested.cpp:42:24:42:34 | *call to ext_fmt_str | nested.cpp:34:37:34:39 | *fmt | provenance | | +| nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | provenance | | | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | provenance | | | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | provenance | | | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | @@ -34,6 +35,8 @@ nodes | nested.cpp:35:19:35:21 | *fmt | semmle.label | *fmt | | nested.cpp:42:24:42:34 | *call to ext_fmt_str | semmle.label | *call to ext_fmt_str | | nested.cpp:79:32:79:38 | *call to get_fmt | semmle.label | *call to get_fmt | +| nested.cpp:86:19:86:46 | *call to __builtin_alloca | semmle.label | *call to __builtin_alloca | +| nested.cpp:87:18:87:20 | *fmt | semmle.label | *fmt | | test.cpp:46:27:46:30 | **argv | semmle.label | **argv | | test.cpp:130:20:130:26 | *access to array | semmle.label | *access to array | | test.cpp:167:31:167:34 | *data | semmle.label | *data | @@ -65,6 +68,7 @@ subpaths | NonConstantFormat.c:45:9:45:48 | *call to gettext | NonConstantFormat.c:45:11:45:47 | *call to any_random_function | NonConstantFormat.c:45:9:45:48 | *call to gettext | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:45:2:45:7 | call to printf | printf | | nested.cpp:21:23:21:26 | *fmt0 | nested.cpp:42:24:42:34 | *call to ext_fmt_str | nested.cpp:21:23:21:26 | *fmt0 | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:21:5:21:12 | call to snprintf | snprintf | | nested.cpp:79:32:79:38 | *call to get_fmt | nested.cpp:79:32:79:38 | *call to get_fmt | nested.cpp:79:32:79:38 | *call to get_fmt | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:79:5:79:14 | call to diagnostic | diagnostic | +| nested.cpp:87:18:87:20 | *fmt | nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | nested.cpp:87:7:87:16 | call to diagnostic | diagnostic | | test.cpp:130:20:130:26 | *access to array | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:130:2:130:10 | call to sprintf | sprintf | | test.cpp:170:12:170:14 | *res | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:170:5:170:10 | call to printf | printf | | test.cpp:195:31:195:33 | *str | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | test.cpp:195:3:195:18 | call to StringCchPrintfW | StringCchPrintfW | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp index 40a88ee7fc0f..1c3d2513da54 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/nested.cpp @@ -84,7 +84,7 @@ namespace ns { class blab { void out1(void) { char *fmt = (char *)__builtin_alloca(10); - diagnostic(fmt); // BAD [NOT DETECTED] + diagnostic(fmt); // BAD } }; } From a839c929792d101a94d0f066bf28a23fa99b573c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 13 Mar 2024 22:57:38 +0000 Subject: [PATCH 209/731] C++: Fix mapping issue between dataflow nodes and expressions when the expression is a prvalue. --- .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index b411790596ec..6d24664331f3 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -1331,6 +1331,7 @@ private import GetConvertedResultExpression /** Holds if `node` is an `OperandNode` that should map `node.asExpr()` to `e`. */ predicate exprNodeShouldBeOperand(OperandNode node, Expr e, int n) { + not exprNodeShouldBeIndirectOperand(_, e, n) and exists(Instruction def | unique( | | getAUse(def)) = node.getOperand() and e = getConvertedResultExpression(def, n) @@ -1347,6 +1348,22 @@ private predicate indirectExprNodeShouldBeIndirectOperand( ) } +/** Holds if `node` should be an `IndirectOperand` that maps `node.asExpr()` to `e`. */ +private predicate exprNodeShouldBeIndirectOperand(IndirectOperand node, Expr e, int n) { + exists(ArgumentOperand operand | + // When an argument (qualifier or position) is a PR value and the + // parameter (qualifier or positional) is a (const) reference, IR + // construction introduces a temporary `IRVariable`. The `VariableAddress` + // instruction has the argument as it's `getConvertedResultExpression` + // result. However, the instruction actually represents the _address_ of + // the argument. So to fix this mismatch, we have the indirection of the + // `VariableAddressInstruction` map to the expression. + node.hasOperandAndIndirectionIndex(operand, 1) and + e = getConvertedResultExpression(operand.getDef(), n) and + operand.getDef().(VariableAddressInstruction).getIRVariable() instanceof IRTempVariable + ) +} + private predicate exprNodeShouldBeIndirectOutNode(IndirectArgumentOutNode node, Expr e, int n) { exists(CallInstruction call | call.getStaticCallTarget() instanceof Constructor and @@ -1359,6 +1376,7 @@ private predicate exprNodeShouldBeIndirectOutNode(IndirectArgumentOutNode node, predicate exprNodeShouldBeInstruction(Node node, Expr e, int n) { not exprNodeShouldBeOperand(_, e, n) and not exprNodeShouldBeIndirectOutNode(_, e, n) and + not exprNodeShouldBeIndirectOperand(_, e, n) and e = getConvertedResultExpression(node.asInstruction(), n) } @@ -1391,7 +1409,8 @@ abstract private class ExprNodeBase extends Node { private predicate exprNodeShouldBe(Expr e, int n) { exprNodeShouldBeInstruction(_, e, n) or exprNodeShouldBeOperand(_, e, n) or - exprNodeShouldBeIndirectOutNode(_, e, n) + exprNodeShouldBeIndirectOutNode(_, e, n) or + exprNodeShouldBeIndirectOperand(_, e, n) } private class InstructionExprNode extends ExprNodeBase, InstructionNode { @@ -1533,6 +1552,12 @@ private class IndirectArgumentOutExprNode extends ExprNodeBase, IndirectArgument final override Expr getConvertedExpr(int n) { exprNodeShouldBeIndirectOutNode(this, result, n) } } +private class IndirectTemporaryExpr extends ExprNodeBase instanceof IndirectOperand { + IndirectTemporaryExpr() { exprNodeShouldBeIndirectOperand(this, _, _) } + + final override Expr getConvertedExpr(int n) { exprNodeShouldBeIndirectOperand(this, result, n) } +} + /** * An expression, viewed as a node in a data flow graph. */ From b5f349bd2c5a982a5ce6973f716598f4160d5e36 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Thu, 14 Mar 2024 08:37:22 +0100 Subject: [PATCH 210/731] C#: Handle namespace resolution error more gracefully --- .../Entities/NamespaceDeclaration.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs index f90bf5355e30..12684c304a41 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/NamespaceDeclaration.cs @@ -27,7 +27,12 @@ public override void WriteId(EscapingTextWriter trapFile) public override void Populate(TextWriter trapFile) { - var @namespace = (INamespaceSymbol)Context.GetModel(node).GetSymbolInfo(node.Name).Symbol!; + var @namespace = (INamespaceSymbol?)Context.GetModel(node).GetSymbolInfo(node.Name).Symbol; + if (@namespace is null) + { + throw new InternalError(node, "Namespace symbol not found"); + } + var ns = Namespace.Create(Context, @namespace); trapFile.namespace_declarations(this, ns); trapFile.namespace_declaration_location(this, Context.CreateLocation(node.Name.GetLocation())); From 36f6a6fb10cb0bdb04cc807675675f5257f0a554 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Thu, 14 Mar 2024 08:46:43 +0100 Subject: [PATCH 211/731] Model more EnumSet methods as neutrals --- java/ql/lib/ext/java.util.model.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java/ql/lib/ext/java.util.model.yml b/java/ql/lib/ext/java.util.model.yml index 87675d49f96d..0cc520f28f83 100644 --- a/java/ql/lib/ext/java.util.model.yml +++ b/java/ql/lib/ext/java.util.model.yml @@ -430,7 +430,14 @@ extensions: - ["java.util", "Collections", "emptySet", "()", "summary", "manual"] - ["java.util", "Collections", "sort", "", "summary", "manual"] - ["java.util", "Enumeration", "hasMoreElements", "()", "summary", "manual"] + - ["java.util", "EnumSet", "allOf", "(Class)", "summary", "manual"] + - ["java.util", "EnumSet", "clone", "()", "summary", "manual"] + - ["java.util", "EnumSet", "complementOf", "(EnumSet)", "summary", "manual"] + - ["java.util", "EnumSet", "copyOf", "(Collection)", "summary", "manual"] - ["java.util", "EnumSet", "copyOf", "(EnumSet)", "summary", "manual"] + - ["java.util", "EnumSet", "noneOf", "(Class)", "summary", "manual"] + - ["java.util", "EnumSet", "of", "", "summary", "manual"] + - ["java.util", "EnumSet", "range", "(Object,Object)", "summary", "manual"] - ["java.util", "HashMap", "containsKey", "(Object)", "summary", "manual"] - ["java.util", "HashMap", "HashMap", "(int)", "summary", "manual"] - ["java.util", "HashMap", "size", "()", "summary", "manual"] From 5b88b8a3ed2d3b5a96d41f2fd0f8e20b74628c56 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Thu, 14 Mar 2024 08:47:40 +0100 Subject: [PATCH 212/731] A few more neutrals --- java/ql/lib/ext/java.nio.file.model.yml | 1 + java/ql/lib/ext/java.util.prefs.model.yml | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index 39a83291fc03..c04ae453ba39 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -91,6 +91,7 @@ extensions: data: # summary neutrals - ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "summary", "manual"] + - ["java.nio.file", "Files", "newInputStream", "(Path,LinkOption[])", "summary", "manual"] # sink neutrals - ["java.nio.file", "Files", "getLastModifiedTime", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "getOwner", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.util.prefs.model.yml b/java/ql/lib/ext/java.util.prefs.model.yml index cb299746343a..8d33596bcfcb 100644 --- a/java/ql/lib/ext/java.util.prefs.model.yml +++ b/java/ql/lib/ext/java.util.prefs.model.yml @@ -4,7 +4,20 @@ extensions: extensible: neutralModel data: # summary neutrals - - ["java.util.prefs", "Preferences", "get", "(String,String)", "summary", "manual"] + - ["java.util.prefs", "Preferences", "get", "(String,String)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getBoolean", "(String,boolean)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getByteArray", "(String,byte[])", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getDouble", "(String,double)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getFloat", "(String,float)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getInt", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getLong", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "put", "(String,String)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putBoolean", "(String,boolean)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putByteArray", "(String,byte[])", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putDouble", "(String,double)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putFloat", "(String,float)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putInt", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putLong", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs # sink neutrals - ["java.util.prefs", "AbstractPreferences", "nodeExists", "", "sink", "hq-manual"] - ["java.util.prefs", "Preferences", "nodeExists", "", "sink", "hq-manual"] From eecab9122a7524371635e822781117048465c219 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Thu, 14 Mar 2024 08:55:47 +0100 Subject: [PATCH 213/731] Recognize the model generator involvement in the models' provenances --- java/ql/lib/ext/java.beans.model.yml | 8 +++--- java/ql/lib/ext/java.io.model.yml | 7 +++--- java/ql/lib/ext/java.net.model.yml | 4 +-- java/ql/lib/ext/java.nio.file.model.yml | 2 +- java/ql/lib/ext/java.util.logging.yml | 4 +-- java/ql/lib/ext/java.util.model.yml | 22 ++++++++-------- java/ql/lib/ext/java.util.prefs.model.yml | 28 ++++++++++----------- java/ql/lib/ext/java.util.regex.model.yml | 10 ++++---- java/ql/lib/ext/javax.crypto.model.yml | 4 +-- java/ql/lib/ext/javax.crypto.spec.model.yml | 2 +- 10 files changed, 45 insertions(+), 46 deletions(-) diff --git a/java/ql/lib/ext/java.beans.model.yml b/java/ql/lib/ext/java.beans.model.yml index 53e8522643a1..30667ec69615 100644 --- a/java/ql/lib/ext/java.beans.model.yml +++ b/java/ql/lib/ext/java.beans.model.yml @@ -9,7 +9,7 @@ extensions: extensible: neutralModel data: # summary neutrals - - ["java.beans", "PropertyEditor", "getAsText", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.beans", "PropertyEditor", "getValue", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.beans", "PropertyEditor", "setAsText", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.beans", "PropertyEditor", "setValue", "()", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.beans", "PropertyEditor", "getAsText", "()", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.beans", "PropertyEditor", "getValue", "()", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.beans", "PropertyEditor", "setAsText", "()", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.beans", "PropertyEditor", "setValue", "()", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index bcf0494da8fd..3824c588662d 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -80,7 +80,6 @@ extensions: - ["java.io", "File", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "getParentFile", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.io", "File", True, "listFiles", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "toPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "toURI", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] @@ -116,12 +115,12 @@ extensions: - ["java.io", "File", "isFile", "()", "summary", "manual"] - ["java.io", "File", "length", "()", "summary", "manual"] - ["java.io", "File", "isDirectory", "()", "summary", "manual"] - - ["java.io", "File", "listFiles", "", "summary", "manual"] + - ["java.io", "File", "listFiles", "", "summary", "df-manual"] - ["java.io", "File", "mkdirs", "()", "summary", "manual"] - ["java.io", "FileInputStream", "FileInputStream", "(File)", "summary", "manual"] - - ["java.io", "FileInputStream", "FileInputStream", "(String)", "summary", "manual"] + - ["java.io", "FileInputStream", "FileInputStream", "(String)", "summary", "df-manual"] - ["java.io", "InputStream", "close", "()", "summary", "manual"] - - ["java.io", "ObjectInput", "readObject", "()", "summary", "manual"] + - ["java.io", "ObjectInput", "readObject", "()", "summary", "df-manual"] # this is a deserialization sink modeled in regular CodeQL - ["java.io", "OutputStream", "flush", "()", "summary", "manual"] # The below APIs have numeric flow and are currently being stored as neutral models. # These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future. diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 5eb501d19d97..19044ec7a402 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -66,5 +66,5 @@ extensions: extensible: neutralModel data: # summary neutrals - - ["java.net", "Socket", "getOutputStream", "()", "summary", "manual"] - - ["java.net", "Socket", "connect", "(SocketAddress,int)", "summary", "manual"] + - ["java.net", "Socket", "getOutputStream", "()", "summary", "df-manual"] + - ["java.net", "Socket", "connect", "(SocketAddress,int)", "summary", "df-manual"] diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index c04ae453ba39..fc0648c85aab 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -91,7 +91,7 @@ extensions: data: # summary neutrals - ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "summary", "manual"] - - ["java.nio.file", "Files", "newInputStream", "(Path,LinkOption[])", "summary", "manual"] + - ["java.nio.file", "Files", "newInputStream", "(Path,LinkOption[])", "summary", "df-manual"] # sink neutrals - ["java.nio.file", "Files", "getLastModifiedTime", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "getOwner", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.util.logging.yml b/java/ql/lib/ext/java.util.logging.yml index d2620776d9ab..c4bf4e77300b 100644 --- a/java/ql/lib/ext/java.util.logging.yml +++ b/java/ql/lib/ext/java.util.logging.yml @@ -4,5 +4,5 @@ extensions: extensible: neutralModel data: # summary neutrals - - ["java.util.logging", "LogRecord", "getResourceBundle", "()", "summary", "manual"] - - ["java.util.logging", "LogRecord", "setParameters", "", "summary", "manual"] + - ["java.util.logging", "LogRecord", "getResourceBundle", "()", "summary", "df-manual"] + - ["java.util.logging", "LogRecord", "setParameters", "", "summary", "df-manual"] diff --git a/java/ql/lib/ext/java.util.model.yml b/java/ql/lib/ext/java.util.model.yml index 0cc520f28f83..7ab6780b8f84 100644 --- a/java/ql/lib/ext/java.util.model.yml +++ b/java/ql/lib/ext/java.util.model.yml @@ -107,8 +107,8 @@ extensions: - ["java.util", "Collections", False, "unmodifiableSortedMap", "(SortedMap)", "", "Argument[0].MapKey", "ReturnValue.MapKey", "value", "manual"] - ["java.util", "Collections", False, "unmodifiableSortedMap", "(SortedMap)", "", "Argument[0].MapValue", "ReturnValue.MapValue", "value", "manual"] - ["java.util", "Collections", False, "unmodifiableSortedSet", "(SortedSet)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - - ["java.util", "ConcurrentHashMap", False, "ConcurrentHashMap", "(Map)", "", "Argument[0].MapKey", "Argument[this].MapKey", "value", "manual"] - - ["java.util", "ConcurrentHashMap", False, "ConcurrentHashMap", "(Map)", "", "Argument[0].MapValue", "Argument[this].MapValue", "value", "manual"] + - ["java.util", "ConcurrentHashMap", False, "ConcurrentHashMap", "(Map)", "", "Argument[0].MapKey", "Argument[this].MapKey", "value", "df-manual"] + - ["java.util", "ConcurrentHashMap", False, "ConcurrentHashMap", "(Map)", "", "Argument[0].MapValue", "Argument[this].MapValue", "value", "df-manual"] - ["java.util", "Deque", True, "addFirst", "(Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["java.util", "Deque", True, "addLast", "(Object)", "", "Argument[0]", "Argument[this].Element", "value", "manual"] - ["java.util", "Deque", True, "descendingIterator", "()", "", "Argument[this].Element", "ReturnValue.Element", "value", "manual"] @@ -430,14 +430,14 @@ extensions: - ["java.util", "Collections", "emptySet", "()", "summary", "manual"] - ["java.util", "Collections", "sort", "", "summary", "manual"] - ["java.util", "Enumeration", "hasMoreElements", "()", "summary", "manual"] - - ["java.util", "EnumSet", "allOf", "(Class)", "summary", "manual"] - - ["java.util", "EnumSet", "clone", "()", "summary", "manual"] - - ["java.util", "EnumSet", "complementOf", "(EnumSet)", "summary", "manual"] - - ["java.util", "EnumSet", "copyOf", "(Collection)", "summary", "manual"] - - ["java.util", "EnumSet", "copyOf", "(EnumSet)", "summary", "manual"] - - ["java.util", "EnumSet", "noneOf", "(Class)", "summary", "manual"] - - ["java.util", "EnumSet", "of", "", "summary", "manual"] - - ["java.util", "EnumSet", "range", "(Object,Object)", "summary", "manual"] + - ["java.util", "EnumSet", "allOf", "(Class)", "summary", "df-manual"] + - ["java.util", "EnumSet", "clone", "()", "summary", "df-manual"] + - ["java.util", "EnumSet", "complementOf", "(EnumSet)", "summary", "df-manual"] + - ["java.util", "EnumSet", "copyOf", "(Collection)", "summary", "df-manual"] + - ["java.util", "EnumSet", "copyOf", "(EnumSet)", "summary", "df-manual"] + - ["java.util", "EnumSet", "noneOf", "(Class)", "summary", "df-manual"] + - ["java.util", "EnumSet", "of", "", "summary", "df-manual"] + - ["java.util", "EnumSet", "range", "(Object,Object)", "summary", "df-manual"] - ["java.util", "HashMap", "containsKey", "(Object)", "summary", "manual"] - ["java.util", "HashMap", "HashMap", "(int)", "summary", "manual"] - ["java.util", "HashMap", "size", "()", "summary", "manual"] @@ -464,7 +464,7 @@ extensions: - ["java.util", "Optional", "isEmpty", "()", "summary", "manual"] - ["java.util", "Optional", "isPresent", "()", "summary", "manual"] - ["java.util", "Random", "nextInt", "(int)", "summary", "manual"] - - ["java.util", "ResourceBundle", "getBundle", "", "summary", "manual"] + - ["java.util", "ResourceBundle", "getBundle", "", "summary", "df-manual"] - ["java.util", "Set", "contains", "(Object)", "summary", "manual"] - ["java.util", "Set", "isEmpty", "()", "summary", "manual"] - ["java.util", "Set", "size", "()", "summary", "manual"] diff --git a/java/ql/lib/ext/java.util.prefs.model.yml b/java/ql/lib/ext/java.util.prefs.model.yml index 8d33596bcfcb..11289e0782b6 100644 --- a/java/ql/lib/ext/java.util.prefs.model.yml +++ b/java/ql/lib/ext/java.util.prefs.model.yml @@ -4,20 +4,20 @@ extensions: extensible: neutralModel data: # summary neutrals - - ["java.util.prefs", "Preferences", "get", "(String,String)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "getBoolean", "(String,boolean)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "getByteArray", "(String,byte[])", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "getDouble", "(String,double)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "getFloat", "(String,float)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "getInt", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "getLong", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "put", "(String,String)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "putBoolean", "(String,boolean)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "putByteArray", "(String,byte[])", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "putDouble", "(String,double)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "putFloat", "(String,float)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "putInt", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs - - ["java.util.prefs", "Preferences", "putLong", "(String,int)", "summary", "manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "get", "(String,String)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getBoolean", "(String,boolean)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getByteArray", "(String,byte[])", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getDouble", "(String,double)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getFloat", "(String,float)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getInt", "(String,int)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "getLong", "(String,int)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "put", "(String,String)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putBoolean", "(String,boolean)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putByteArray", "(String,byte[])", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putDouble", "(String,double)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putFloat", "(String,float)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putInt", "(String,int)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs + - ["java.util.prefs", "Preferences", "putLong", "(String,int)", "summary", "df-manual"] # needs to be modeled by regular CodeQL matching the get and set keys to reduce FPs # sink neutrals - ["java.util.prefs", "AbstractPreferences", "nodeExists", "", "sink", "hq-manual"] - ["java.util.prefs", "Preferences", "nodeExists", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.util.regex.model.yml b/java/ql/lib/ext/java.util.regex.model.yml index 02519c64af1c..4f0776e59bd2 100644 --- a/java/ql/lib/ext/java.util.regex.model.yml +++ b/java/ql/lib/ext/java.util.regex.model.yml @@ -30,9 +30,9 @@ extensions: pack: codeql/java-all extensible: neutralModel data: - - ["java.util.regex", "Matcher", "appendReplacement", "(StringBuffer,String)", "summary", "manual"] - - ["java.util.regex", "Matcher", "appendTail", "(StringBuffer)", "summary", "manual"] + - ["java.util.regex", "Matcher", "appendReplacement", "(StringBuffer,String)", "summary", "df-manual"] + - ["java.util.regex", "Matcher", "appendTail", "(StringBuffer)", "summary", "df-manual"] - ["java.util.regex", "Matcher", "find", "()", "summary", "manual"] - - ["java.util.regex", "Matcher", "pattern", "()", "summary", "manual"] - - ["java.util.regex", "Pattern", "compile", "(String,int)", "summary", "manual"] - - ["java.util.regex", "Pattern", "pattern", "()", "summary", "manual"] + - ["java.util.regex", "Matcher", "pattern", "()", "summary", "df-manual"] + - ["java.util.regex", "Pattern", "compile", "(String,int)", "summary", "df-manual"] + - ["java.util.regex", "Pattern", "pattern", "()", "summary", "df-manual"] diff --git a/java/ql/lib/ext/javax.crypto.model.yml b/java/ql/lib/ext/javax.crypto.model.yml index 40db2df856fe..53b54f1a22db 100644 --- a/java/ql/lib/ext/javax.crypto.model.yml +++ b/java/ql/lib/ext/javax.crypto.model.yml @@ -24,5 +24,5 @@ extensions: - ["javax.crypto", "Cipher", "update", "", "summary", "manual"] - ["javax.crypto", "Cipher", "updateAAD", "", "summary", "manual"] - ["javax.crypto", "Cipher", "wrap", "", "summary", "manual"] - - ["javax.crypto", "Mac", "init", "(Key)", "summary", "manual"] - - ["javax.crypto", "Mac", "doFinal", "()", "summary", "manual"] + - ["javax.crypto", "Mac", "init", "(Key)", "summary", "df-manual"] + - ["javax.crypto", "Mac", "doFinal", "()", "summary", "df-manual"] diff --git a/java/ql/lib/ext/javax.crypto.spec.model.yml b/java/ql/lib/ext/javax.crypto.spec.model.yml index 759197d52e7b..2a88b6275fd4 100644 --- a/java/ql/lib/ext/javax.crypto.spec.model.yml +++ b/java/ql/lib/ext/javax.crypto.spec.model.yml @@ -30,4 +30,4 @@ extensions: pack: codeql/java-all extensible: neutralModel data: - - ["javax.crypto.spec", "SecretKeySpec", "SecretKeySpec", "(byte[],String)", "summary", "manual"] + - ["javax.crypto.spec", "SecretKeySpec", "SecretKeySpec", "(byte[],String)", "summary", "df-manual"] From 9d44045e6f2601e46270deb36a82363bbcba63a7 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:41:34 +0100 Subject: [PATCH 214/731] Adjust test expectations --- java/ql/test/ext/TestModels/Test.java | 3 --- .../TopJdkApisTest/TopJdkApis/java/io/File.java | 2 +- .../TopJdkApisTest/TopJdkApisTest.expected | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/java/ql/test/ext/TestModels/Test.java b/java/ql/test/ext/TestModels/Test.java index 6bbc7a078792..f54007ada9e4 100644 --- a/java/ql/test/ext/TestModels/Test.java +++ b/java/ql/test/ext/TestModels/Test.java @@ -110,9 +110,6 @@ public void test() throws Exception { File f2 = (File)source(); sink(f2.getPath()); // $hasTaintFlow - File f3 = (File)source(); - sink(f3.listFiles()); // $hasTaintFlow - StringWriter sw = (StringWriter)source(); sink(sw.toString()); // $hasTaintFlow diff --git a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/io/File.java b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/io/File.java index 878aa9d30867..54a16d3c22d1 100644 --- a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/io/File.java +++ b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApis/java/io/File.java @@ -16,7 +16,6 @@ protected File() {} public File(File p0, String p1){} // manual summary public File(String p0){} // manual summary public File(String p0, String p1){} // manual summary - public File[] listFiles(){ return null; } // manual summary public Path toPath(){ return null; } // manual summary public String getAbsolutePath(){ return null; } // manual summary public String getName(){ return null; } // manual summary @@ -26,6 +25,7 @@ public File(String p0, String p1){} // manual summary public boolean exists(){ return false; } // manual neutral public boolean isDirectory(){ return false; } // manual neutral public boolean isFile(){ return false; } // manual neutral + public File[] listFiles(){ return null; } // manual neutral public boolean mkdirs(){ return false; } // manual neutral public long length(){ return 0; } // manual neutral } diff --git a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected index df21c086b2f8..64748f777659 100644 --- a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected +++ b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected @@ -1,5 +1,5 @@ | java.awt | 0 | 0 | 2 | 1 | 3 | 0.6666666666666666 | 0.0 | 0.6666666666666666 | 0.0 | NaN | 0.3333333333333333 | -| java.io | 0 | 0 | 21 | 15 | 36 | 0.5833333333333334 | 0.0 | 0.5833333333333334 | 0.0 | NaN | 0.4166666666666667 | +| java.io | 0 | 0 | 20 | 16 | 36 | 0.5555555555555556 | 0.0 | 0.5555555555555556 | 0.0 | NaN | 0.4444444444444444 | | java.lang | 0 | 0 | 57 | 88 | 145 | 0.3931034482758621 | 0.0 | 0.3931034482758621 | 0.0 | NaN | 0.6068965517241379 | | java.lang.invoke | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.lang.reflect | 0 | 0 | 0 | 4 | 4 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | From d8c0ab8e1f2a8c2d7bd35025f99fee8329d3cd54 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:11:39 +0100 Subject: [PATCH 215/731] Go: Consider more strings as hardcoded credentials --- go/ql/lib/semmle/go/security/HardcodedCredentials.qll | 6 +----- go/ql/src/Security/CWE-798/HardcodedCredentials.ql | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/go/ql/lib/semmle/go/security/HardcodedCredentials.qll b/go/ql/lib/semmle/go/security/HardcodedCredentials.qll index 84c426ac317e..0be50fc23062 100644 --- a/go/ql/lib/semmle/go/security/HardcodedCredentials.qll +++ b/go/ql/lib/semmle/go/security/HardcodedCredentials.qll @@ -37,11 +37,7 @@ module HardcodedCredentials { /** A hardcoded string literal as a source for hardcoded credentials. */ private class HardcodedStringSource extends Source { - HardcodedStringSource() { - exists(StringLit val | this.asExpr() = val | - not PasswordHeuristics::isDummyPassword(val.getStringValue()) - ) - } + HardcodedStringSource() { this.asExpr() instanceof StringLit } } /** A use of a credential. */ diff --git a/go/ql/src/Security/CWE-798/HardcodedCredentials.ql b/go/ql/src/Security/CWE-798/HardcodedCredentials.ql index c0c623b50b98..6dd422413f7f 100644 --- a/go/ql/src/Security/CWE-798/HardcodedCredentials.ql +++ b/go/ql/src/Security/CWE-798/HardcodedCredentials.ql @@ -60,6 +60,6 @@ where message = "Hard-coded private key." or HardcodedCredentials::Flow::flow(source, sink) and - type = SensitiveExpr::password() and - message = "Hard-coded credential." + type = SensitiveExpr::secret() and + message = "Hard-coded $@." select sink, message, source, type.toString() From c375497fa531c375fb8b9a1606390d504fc09d24 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Thu, 14 Mar 2024 09:16:04 +0000 Subject: [PATCH 216/731] Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll --- .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 6d24664331f3..db92731e3b15 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -1354,7 +1354,7 @@ private predicate exprNodeShouldBeIndirectOperand(IndirectOperand node, Expr e, // When an argument (qualifier or position) is a PR value and the // parameter (qualifier or positional) is a (const) reference, IR // construction introduces a temporary `IRVariable`. The `VariableAddress` - // instruction has the argument as it's `getConvertedResultExpression` + // instruction has the argument as its `getConvertedResultExpression` // result. However, the instruction actually represents the _address_ of // the argument. So to fix this mismatch, we have the indirection of the // `VariableAddressInstruction` map to the expression. From a24432baccc03cc29ed31e840768c534aa34b6af Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Thu, 14 Mar 2024 09:23:33 +0000 Subject: [PATCH 217/731] Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll --- .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index db92731e3b15..a3459c3ed102 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -1351,7 +1351,7 @@ private predicate indirectExprNodeShouldBeIndirectOperand( /** Holds if `node` should be an `IndirectOperand` that maps `node.asExpr()` to `e`. */ private predicate exprNodeShouldBeIndirectOperand(IndirectOperand node, Expr e, int n) { exists(ArgumentOperand operand | - // When an argument (qualifier or position) is a PR value and the + // When an argument (qualifier or positional) is a prvalue and the // parameter (qualifier or positional) is a (const) reference, IR // construction introduces a temporary `IRVariable`. The `VariableAddress` // instruction has the argument as its `getConvertedResultExpression` From 87b2dcc89245de8dbfae1c4d948ef55e02254cbc Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:25:04 +0100 Subject: [PATCH 218/731] Adjust test expectations --- .../CWE-798/HardcodedCredentials.expected | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/go/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected b/go/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected index 8eb49a5cc809..0526c0ba604a 100644 --- a/go/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected +++ b/go/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.expected @@ -1,28 +1,28 @@ | AlertSuppressionExample.go:11:14:11:40 | "horsebatterystaplecorrect" | Hard-coded $@. | AlertSuppressionExample.go:11:14:11:40 | "horsebatterystaplecorrect" | password | | HardcodedCredentials.go:10:13:10:28 | "s3cretp4ssword" | Hard-coded $@. | HardcodedCredentials.go:10:13:10:28 | "s3cretp4ssword" | password | -| HardcodedKeysBad.go:19:28:19:39 | mySigningKey | Hard-coded credential. | HardcodedKeysBad.go:11:25:11:37 | "AllYourBase" | password | -| jwt.go:42:28:42:39 | mySigningKey | Hard-coded credential. | jwt.go:33:25:33:30 | "key1" | password | -| jwt.go:49:16:49:29 | type conversion | Hard-coded credential. | jwt.go:49:23:49:28 | "key2" | password | -| jwt.go:68:44:68:46 | key | Hard-coded credential. | jwt.go:67:16:67:21 | `key3` | password | -| jwt.go:73:66:73:68 | key | Hard-coded credential. | jwt.go:72:16:72:21 | "key4" | password | -| jwt.go:81:15:81:18 | key2 | Hard-coded credential. | jwt.go:76:17:76:22 | "key5" | password | -| jwt.go:91:41:91:43 | key | Hard-coded credential. | jwt.go:87:16:87:21 | "key6" | password | -| jwt.go:98:66:98:69 | key2 | Hard-coded credential. | jwt.go:96:17:96:22 | "key7" | password | -| jwt.go:109:30:109:32 | key | Hard-coded credential. | jwt.go:104:16:104:21 | "key8" | password | -| jwt.go:114:16:114:24 | sharedKey | Hard-coded credential. | jwt.go:113:22:113:27 | "key9" | password | -| jwt.go:120:16:120:30 | sharedKeyglobal | Hard-coded credential. | jwt.go:117:30:117:36 | "key10" | password | -| jwt.go:126:20:126:34 | type conversion | Hard-coded credential. | jwt.go:126:27:126:33 | "key11" | password | -| jwt.go:143:39:143:41 | key | Hard-coded credential. | jwt.go:141:16:141:22 | "key12" | password | -| jwt.go:152:11:152:13 | key | Hard-coded credential. | jwt.go:148:16:148:22 | "key13" | password | -| jwt.go:160:34:160:36 | key | Hard-coded credential. | jwt.go:159:16:159:22 | "key14" | password | -| jwt.go:166:32:166:34 | key | Hard-coded credential. | jwt.go:165:16:165:22 | "key15" | password | -| jwt.go:172:41:172:43 | key | Hard-coded credential. | jwt.go:171:16:171:22 | "key16" | password | -| jwt.go:178:51:178:53 | key | Hard-coded credential. | jwt.go:177:16:177:22 | "key17" | password | -| jwt.go:184:42:184:44 | key | Hard-coded credential. | jwt.go:183:16:183:22 | "key18" | password | -| jwt.go:192:33:192:35 | key | Hard-coded credential. | jwt.go:189:16:189:22 | "key19" | password | +| HardcodedKeysBad.go:19:28:19:39 | mySigningKey | Hard-coded $@. | HardcodedKeysBad.go:11:25:11:37 | "AllYourBase" | secret | +| jwt.go:42:28:42:39 | mySigningKey | Hard-coded $@. | jwt.go:33:25:33:30 | "key1" | secret | +| jwt.go:49:16:49:29 | type conversion | Hard-coded $@. | jwt.go:49:23:49:28 | "key2" | secret | +| jwt.go:68:44:68:46 | key | Hard-coded $@. | jwt.go:67:16:67:21 | `key3` | secret | +| jwt.go:73:66:73:68 | key | Hard-coded $@. | jwt.go:72:16:72:21 | "key4" | secret | +| jwt.go:81:15:81:18 | key2 | Hard-coded $@. | jwt.go:76:17:76:22 | "key5" | secret | +| jwt.go:91:41:91:43 | key | Hard-coded $@. | jwt.go:87:16:87:21 | "key6" | secret | +| jwt.go:98:66:98:69 | key2 | Hard-coded $@. | jwt.go:96:17:96:22 | "key7" | secret | +| jwt.go:109:30:109:32 | key | Hard-coded $@. | jwt.go:104:16:104:21 | "key8" | secret | +| jwt.go:114:16:114:24 | sharedKey | Hard-coded $@. | jwt.go:113:22:113:27 | "key9" | secret | +| jwt.go:120:16:120:30 | sharedKeyglobal | Hard-coded $@. | jwt.go:117:30:117:36 | "key10" | secret | +| jwt.go:126:20:126:34 | type conversion | Hard-coded $@. | jwt.go:126:27:126:33 | "key11" | secret | +| jwt.go:143:39:143:41 | key | Hard-coded $@. | jwt.go:141:16:141:22 | "key12" | secret | +| jwt.go:152:11:152:13 | key | Hard-coded $@. | jwt.go:148:16:148:22 | "key13" | secret | +| jwt.go:160:34:160:36 | key | Hard-coded $@. | jwt.go:159:16:159:22 | "key14" | secret | +| jwt.go:166:32:166:34 | key | Hard-coded $@. | jwt.go:165:16:165:22 | "key15" | secret | +| jwt.go:172:41:172:43 | key | Hard-coded $@. | jwt.go:171:16:171:22 | "key16" | secret | +| jwt.go:178:51:178:53 | key | Hard-coded $@. | jwt.go:177:16:177:22 | "key17" | secret | +| jwt.go:184:42:184:44 | key | Hard-coded $@. | jwt.go:183:16:183:22 | "key18" | secret | +| jwt.go:192:33:192:35 | key | Hard-coded $@. | jwt.go:189:16:189:22 | "key19" | secret | | main.go:6:14:6:23 | "p4ssw0rd" | Hard-coded $@. | main.go:6:14:6:23 | "p4ssw0rd" | password | | main.go:12:1:26:30 | `-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQC/tzdtXKXcX6F3v3hR6+uYyZpIeXhhLflJkY2eILLQfAnwKlT5\nxIHW5QZcHQV9sCyZ8qSdPGif7PwgMbButMbByiZhCSugUFb6vjVqoktmslYF4LKH\niDgvmlwuJW0TvynxBLzDCwrRP+gpRT8wuAortWAx/03POTw7Mzi2cIPNsQIDAQAB\nAoGAMHCrqY9CPTdQhgAz94cDpTwzJmLCvtMt7J/BR5X9eF4O6MbZZ652HAUMIVQX\n4hUUf+VmIHB2AwqO/ddwO9ijaz04BslOSy/iYevHGlH65q4587NSlFWjvILMIQCM\nGBjfzJIxlLHVhjc2cFnyAE5YWjF/OMnJN0OhP9pxmCP/iM0CQQDxmQndQLdnV7+6\n8SvBHE8bg1LE8/BzTt68U3aWwiBjrHMFgzr//7Za4VF7h4ilFgmbh0F3sYz+C8iO\n0JrBRPeLAkEAyyTwnv/pgqTS/wuxIHUxRBpbdk3YvILAthNrGQg5uzA7eSeFu7Mv\nGtEkXsaqCDbdehgarFfNN8PB6OMRIbsXMwJBAOjhH8UJ0L/osYO9XPO0GfznRS1c\nBnbfm4vk1/bSAO6TF/xEVubU0i4f6q8sIecfqvskEVMS7lkjeptPMR0DIakCQE+7\nuQH/Wizf+r0GXshplyOu4LVHisk63N7aMlAJ7XbuUHmWLKRmiReSfR8CBNzig/2X\nFmkMsUyw9hwte5zsrQcCQQCrOkZvzUj9j1HKG+32EJ2E4kisJZmAgF9GI+z6oxpi\nExped5tp8EWytCjRwKhOcc0068SgaqhKvyyUWpbx32VQ\n-----END RSA PRIVATE KEY-----` | Hard-coded private key. | main.go:12:1:26:30 | `-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQC/tzdtXKXcX6F3v3hR6+uYyZpIeXhhLflJkY2eILLQfAnwKlT5\nxIHW5QZcHQV9sCyZ8qSdPGif7PwgMbButMbByiZhCSugUFb6vjVqoktmslYF4LKH\niDgvmlwuJW0TvynxBLzDCwrRP+gpRT8wuAortWAx/03POTw7Mzi2cIPNsQIDAQAB\nAoGAMHCrqY9CPTdQhgAz94cDpTwzJmLCvtMt7J/BR5X9eF4O6MbZZ652HAUMIVQX\n4hUUf+VmIHB2AwqO/ddwO9ijaz04BslOSy/iYevHGlH65q4587NSlFWjvILMIQCM\nGBjfzJIxlLHVhjc2cFnyAE5YWjF/OMnJN0OhP9pxmCP/iM0CQQDxmQndQLdnV7+6\n8SvBHE8bg1LE8/BzTt68U3aWwiBjrHMFgzr//7Za4VF7h4ilFgmbh0F3sYz+C8iO\n0JrBRPeLAkEAyyTwnv/pgqTS/wuxIHUxRBpbdk3YvILAthNrGQg5uzA7eSeFu7Mv\nGtEkXsaqCDbdehgarFfNN8PB6OMRIbsXMwJBAOjhH8UJ0L/osYO9XPO0GfznRS1c\nBnbfm4vk1/bSAO6TF/xEVubU0i4f6q8sIecfqvskEVMS7lkjeptPMR0DIakCQE+7\nuQH/Wizf+r0GXshplyOu4LVHisk63N7aMlAJ7XbuUHmWLKRmiReSfR8CBNzig/2X\nFmkMsUyw9hwte5zsrQcCQQCrOkZvzUj9j1HKG+32EJ2E4kisJZmAgF9GI+z6oxpi\nExped5tp8EWytCjRwKhOcc0068SgaqhKvyyUWpbx32VQ\n-----END RSA PRIVATE KEY-----` | certificate | | main.go:44:14:44:19 | "p4ss" | Hard-coded $@. | main.go:44:14:44:19 | "p4ss" | password | | main.go:48:13:48:15 | tmp | Hard-coded $@. | main.go:44:14:44:19 | "p4ss" | password | | main.go:50:15:50:21 | "p4ss2" | Hard-coded $@. | main.go:50:15:50:21 | "p4ss2" | password | -| sanitizer.go:18:44:18:46 | key | Hard-coded credential. | sanitizer.go:17:16:17:25 | `some_key` | password | +| sanitizer.go:18:44:18:46 | key | Hard-coded $@. | sanitizer.go:17:16:17:25 | `some_key` | secret | From fc8caa66c8ac4cb9b6a9a31f5ea24d0b50d3297a Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 11:35:50 +0100 Subject: [PATCH 219/731] Python: Prepare for general content in type-tracker Due to the char-pred of Content, this change should keep exactly the same behavior as before. --- .../python/dataflow/new/TypeTracking.qll | 14 +++--- .../new/internal/TypeTrackingImpl.qll | 45 +++++-------------- 2 files changed, 21 insertions(+), 38 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll index 4f1810f059ef..9d0bcb3c487a 100644 --- a/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll @@ -5,6 +5,7 @@ private import internal.TypeTrackingImpl as Impl import Impl::Shared::TypeTracking<Impl::TypeTrackingInput> +private import semmle.python.dataflow.new.internal.DataFlowPublic as DataFlowPublic /** A string that may appear as the name of an attribute or access path. */ class AttributeName = Impl::TypeTrackingInput::Content; @@ -40,7 +41,11 @@ class TypeTracker extends Impl::TypeTracker { * Holds if this is the starting point of type tracking, and the value starts in the attribute named `attrName`. * The type tracking only ends after the attribute has been loaded. */ - predicate startInAttr(string attrName) { this.startInContent(attrName) } + predicate startInAttr(string attrName) { + exists(DataFlowPublic::AttributeContent content | content.getAttribute() = attrName | + this.startInContent(content) + ) + } /** * INTERNAL. DO NOT USE. @@ -48,9 +53,8 @@ class TypeTracker extends Impl::TypeTracker { * Gets the attribute associated with this type tracker. */ string getAttr() { - result = this.getContent().asSome() - or - this.getContent().isNone() and - result = "" + if this.getContent().asSome() instanceof DataFlowPublic::AttributeContent + then result = this.getContent().asSome().(DataFlowPublic::AttributeContent).getAttribute() + else result = "" } } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll index 1a9bdb5202ee..8b6e53c8b745 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -97,24 +97,14 @@ private module SummaryTypeTrackerInput implements SummaryTypeTracker::Input { private module TypeTrackerSummaryFlow = SummaryTypeTracker::SummaryFlow<SummaryTypeTrackerInput>; -/** - * Gets the name of a possible piece of content. For Python, this is currently only attribute names, - * using the name of the attribute for the corresponding content. - */ -private string getPossibleContentName() { - Stages::TypeTracking::ref() and // the TypeTracking::append() etc. predicates that we want to cache depend on this predicate, so we can place the `ref()` call here to get around identical files. - result = any(DataFlowPublic::AttrRef a).getAttributeName() -} - module TypeTrackingInput implements Shared::TypeTrackingInput { class Node = DataFlowPublic::Node; class LocalSourceNode = DataFlowPublic::LocalSourceNode; - class Content instanceof string { - Content() { this = getPossibleContentName() } - - string toString() { result = this } + class Content extends DataFlowPublic::Content { + // this char-pred is just a temporary restriction while transitioning to more general content + Content() { this instanceof DataFlowPublic::AttributeContent } } /** @@ -181,46 +171,35 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { * Holds if `nodeFrom` is being written to the `content` content of the object in `nodeTo`. */ predicate storeStep(Node nodeFrom, Node nodeTo, Content content) { - exists(DataFlowPublic::AttrWrite a | - a.mayHaveAttributeName(content) and + exists(DataFlowPublic::AttrWrite a, string attrName | + content.(DataFlowPublic::AttributeContent).getAttribute() = attrName and + a.mayHaveAttributeName(attrName) and nodeFrom = a.getValue() and nodeTo = a.getObject() ) or - exists(DataFlowPublic::ContentSet contents | - contents.(DataFlowPublic::AttributeContent).getAttribute() = content - | - TypeTrackerSummaryFlow::basicStoreStep(nodeFrom, nodeTo, contents) - ) + TypeTrackerSummaryFlow::basicStoreStep(nodeFrom, nodeTo, content) } /** * Holds if `nodeTo` is the result of accessing the `content` content of `nodeFrom`. */ predicate loadStep(Node nodeFrom, LocalSourceNode nodeTo, Content content) { - exists(DataFlowPublic::AttrRead a | - a.mayHaveAttributeName(content) and + exists(DataFlowPublic::AttrRead a, string attrName | + content.(DataFlowPublic::AttributeContent).getAttribute() = attrName and + a.mayHaveAttributeName(attrName) and nodeFrom = a.getObject() and nodeTo = a ) or - exists(DataFlowPublic::ContentSet contents | - contents.(DataFlowPublic::AttributeContent).getAttribute() = content - | - TypeTrackerSummaryFlow::basicLoadStep(nodeFrom, nodeTo, contents) - ) + TypeTrackerSummaryFlow::basicLoadStep(nodeFrom, nodeTo, content) } /** * Holds if the `loadContent` of `nodeFrom` is stored in the `storeContent` of `nodeTo`. */ predicate loadStoreStep(Node nodeFrom, Node nodeTo, Content loadContent, Content storeContent) { - exists(DataFlowPublic::ContentSet loadContents, DataFlowPublic::ContentSet storeContents | - loadContents.(DataFlowPublic::AttributeContent).getAttribute() = loadContent and - storeContents.(DataFlowPublic::AttributeContent).getAttribute() = storeContent - | - TypeTrackerSummaryFlow::basicLoadStoreStep(nodeFrom, nodeTo, loadContents, storeContents) - ) + TypeTrackerSummaryFlow::basicLoadStoreStep(nodeFrom, nodeTo, loadContent, storeContent) } /** From 636cf611ae8d5f9ac3025bacff6e028902e89f88 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 11:36:47 +0100 Subject: [PATCH 220/731] Python: Allow general content in type-tracker This should not result in many changes, since store/load steps are still only implemented for attributes. --- .../semmle/python/dataflow/new/internal/TypeTrackingImpl.qll | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll index 8b6e53c8b745..81c1f369561b 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -102,10 +102,7 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { class LocalSourceNode = DataFlowPublic::LocalSourceNode; - class Content extends DataFlowPublic::Content { - // this char-pred is just a temporary restriction while transitioning to more general content - Content() { this instanceof DataFlowPublic::AttributeContent } - } + class Content = DataFlowPublic::Content; /** * A label to use for `WithContent` and `WithoutContent` steps, restricting From 7721fb33314cee322fd4b7ac3c8bd5bfe8b2e353 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 11:44:08 +0100 Subject: [PATCH 221/731] Python: Setup shared read/store steps --- .../dataflow/new/internal/DataFlowPrivate.qll | 14 ++++++++++++++ .../dataflow/new/internal/TypeTrackingImpl.qll | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 47f41d0cd057..5ccfa251634a 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -641,11 +641,18 @@ predicate jumpStepNotSharedWithTypeTracker(Node nodeFrom, Node nodeTo) { //-------- // Field flow //-------- +/** + * Subset of `storeStep` that should be shared with type-tracking. + */ +predicate storeStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { none() } + /** * Holds if data can flow from `nodeFrom` to `nodeTo` via an assignment to * content `c`. */ predicate storeStep(Node nodeFrom, ContentSet c, Node nodeTo) { + storeStepCommon(nodeFrom, c, nodeTo) + or listStoreStep(nodeFrom, c, nodeTo) or setStoreStep(nodeFrom, c, nodeTo) @@ -891,10 +898,17 @@ predicate attributeStoreStep(Node nodeFrom, AttributeContent c, Node nodeTo) { ) } +/** + * Subset of `readStep` that should be shared with type-tracking. + */ +predicate readStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { none() } + /** * Holds if data can flow from `nodeFrom` to `nodeTo` via a read of content `c`. */ predicate readStep(Node nodeFrom, ContentSet c, Node nodeTo) { + readStepCommon(nodeFrom, c, nodeTo) + or subscriptReadStep(nodeFrom, c, nodeTo) or iterableUnpackingReadStep(nodeFrom, c, nodeTo) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll index 81c1f369561b..68779208de97 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -175,6 +175,8 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { nodeTo = a.getObject() ) or + DataFlowPrivate::storeStepCommon(nodeFrom, content, nodeTo) + or TypeTrackerSummaryFlow::basicStoreStep(nodeFrom, nodeTo, content) } @@ -189,6 +191,8 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { nodeTo = a ) or + DataFlowPrivate::readStepCommon(nodeFrom, content, nodeTo) + or TypeTrackerSummaryFlow::basicLoadStep(nodeFrom, nodeTo, content) } From a95bb7c86b1b9047fd5bcc6adf77ee195074a8c5 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 13:24:48 +0100 Subject: [PATCH 222/731] Python: Expand function reference in content test --- .../CallGraph/InlineCallGraphTest.expected | 3 +- .../CallGraph/code/func_ref_in_content.py | 53 +++++++++++++++++++ .../CallGraph/code/tuple_function_return.py | 15 ------ 3 files changed, 55 insertions(+), 16 deletions(-) create mode 100644 python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py delete mode 100644 python/ql/test/experimental/library-tests/CallGraph/code/tuple_function_return.py diff --git a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected index 55774486be0d..504c5251a1a8 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected +++ b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected @@ -15,8 +15,9 @@ pointsTo_found_typeTracker_notFound | code/func_defined_outside_class.py:39:11:39:21 | ControlFlowNode for _gen() | B._gen | | code/func_defined_outside_class.py:42:1:42:7 | ControlFlowNode for Attribute() | B._gen.func | | code/func_defined_outside_class.py:43:1:43:7 | ControlFlowNode for Attribute() | B._gen.func | +| code/func_ref_in_content.py:17:1:17:4 | ControlFlowNode for f2() | func | +| code/func_ref_in_content.py:20:1:20:4 | ControlFlowNode for f3() | func | | code/funky_regression.py:15:9:15:17 | ControlFlowNode for Attribute() | Wat.f2 | -| code/tuple_function_return.py:15:1:15:4 | ControlFlowNode for f2() | func | | code/type_tracking_limitation.py:8:1:8:3 | ControlFlowNode for x() | my_func | typeTracker_found_pointsTo_notFound | code/callable_as_argument.py:29:5:29:12 | ControlFlowNode for Attribute() | test_class.InsideTestFunc.sm | diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py new file mode 100644 index 000000000000..b89a013f5b1b --- /dev/null +++ b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py @@ -0,0 +1,53 @@ +def func(): + print("func()") + +def return_func(): + return func + +f1 = return_func() # $ pt,tt=return_func +f1() # $ pt,tt=func + + +def return_func_in_tuple(): + return (func, 42) + +tup = return_func_in_tuple() # $ pt,tt=return_func_in_tuple + +f2, _ = tup +f2() # $ pt=func MISSING: tt + +f3 = tup[0] +f3() # $ pt=func MISSING: tt + + +def return_func_in_dict(): + return {'func': func, 'val': 42} + +dct = return_func_in_dict() # $ pt,tt=return_func_in_dict + +f4 = dct['func'] +f4() # $ MISSING: tt=func + + +def return_func_in_dict_update(): + d = {} + d["func"] = func + return d + +dct2 = return_func_in_dict_update() # $ pt,tt=return_func_in_dict_update + +f5 = dct2['func'] +f5() # $ MISSING: tt=func + + +def return_func_in_list(): + return [func, 42] + +lst = return_func_in_list() # $ pt,tt=return_func_in_list + +f6 = lst[0] +f6() # $ MISSING: pt,tt=func + +if eval("False"): # don't run this, but fool analysis to still consider it (doesn't wok if you just to `if False:`) + f7 = lst[1] + f7() diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/tuple_function_return.py b/python/ql/test/experimental/library-tests/CallGraph/code/tuple_function_return.py deleted file mode 100644 index f87b1aa23e84..000000000000 --- a/python/ql/test/experimental/library-tests/CallGraph/code/tuple_function_return.py +++ /dev/null @@ -1,15 +0,0 @@ -def func(): - print("func()") - -def return_func(): - return func - -def return_func_in_tuple(): - return (func, 42) - -f1 = return_func() # $ pt,tt=return_func -f1() # $ pt,tt=func - - -f2, _ = return_func_in_tuple() # $ pt,tt=return_func_in_tuple -f2() # $ pt=func MISSING: tt From ece8245a4be1f05fffc2e9cd7acd5e387729538e Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 13:39:49 +0100 Subject: [PATCH 223/731] Python: type-track through tuple content --- .../python/dataflow/new/internal/DataFlowPrivate.qll | 12 ++++++------ .../CallGraph/InlineCallGraphTest.expected | 1 - .../CallGraph/code/func_ref_in_content.py | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 5ccfa251634a..22fb979f9dcb 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -644,7 +644,9 @@ predicate jumpStepNotSharedWithTypeTracker(Node nodeFrom, Node nodeTo) { /** * Subset of `storeStep` that should be shared with type-tracking. */ -predicate storeStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { none() } +predicate storeStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { + tupleStoreStep(nodeFrom, c, nodeTo) +} /** * Holds if data can flow from `nodeFrom` to `nodeTo` via an assignment to @@ -657,8 +659,6 @@ predicate storeStep(Node nodeFrom, ContentSet c, Node nodeTo) { or setStoreStep(nodeFrom, c, nodeTo) or - tupleStoreStep(nodeFrom, c, nodeTo) - or dictStoreStep(nodeFrom, c, nodeTo) or moreDictStoreSteps(nodeFrom, c, nodeTo) @@ -901,7 +901,9 @@ predicate attributeStoreStep(Node nodeFrom, AttributeContent c, Node nodeTo) { /** * Subset of `readStep` that should be shared with type-tracking. */ -predicate readStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { none() } +predicate readStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { + subscriptReadStep(nodeFrom, c, nodeTo) +} /** * Holds if data can flow from `nodeFrom` to `nodeTo` via a read of content `c`. @@ -909,8 +911,6 @@ predicate readStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { none() } predicate readStep(Node nodeFrom, ContentSet c, Node nodeTo) { readStepCommon(nodeFrom, c, nodeTo) or - subscriptReadStep(nodeFrom, c, nodeTo) - or iterableUnpackingReadStep(nodeFrom, c, nodeTo) or matchReadStep(nodeFrom, c, nodeTo) diff --git a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected index 504c5251a1a8..667ebf28d755 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected +++ b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected @@ -16,7 +16,6 @@ pointsTo_found_typeTracker_notFound | code/func_defined_outside_class.py:42:1:42:7 | ControlFlowNode for Attribute() | B._gen.func | | code/func_defined_outside_class.py:43:1:43:7 | ControlFlowNode for Attribute() | B._gen.func | | code/func_ref_in_content.py:17:1:17:4 | ControlFlowNode for f2() | func | -| code/func_ref_in_content.py:20:1:20:4 | ControlFlowNode for f3() | func | | code/funky_regression.py:15:9:15:17 | ControlFlowNode for Attribute() | Wat.f2 | | code/type_tracking_limitation.py:8:1:8:3 | ControlFlowNode for x() | my_func | typeTracker_found_pointsTo_notFound diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py index b89a013f5b1b..87abb4198e9c 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py +++ b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py @@ -17,7 +17,7 @@ def return_func_in_tuple(): f2() # $ pt=func MISSING: tt f3 = tup[0] -f3() # $ pt=func MISSING: tt +f3() # $ tt,pt=func def return_func_in_dict(): From 73fe596753357032044842f90816421ddd16490c Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 13:57:57 +0100 Subject: [PATCH 224/731] Python: type-tracking through dictionary construction --- .../semmle/python/dataflow/new/internal/DataFlowPrivate.qll | 4 ++-- .../library-tests/CallGraph/InlineCallGraphTest.expected | 1 + .../library-tests/CallGraph/code/func_ref_in_content.py | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 22fb979f9dcb..3b589da37d6d 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -646,6 +646,8 @@ predicate jumpStepNotSharedWithTypeTracker(Node nodeFrom, Node nodeTo) { */ predicate storeStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { tupleStoreStep(nodeFrom, c, nodeTo) + or + dictStoreStep(nodeFrom, c, nodeTo) } /** @@ -659,8 +661,6 @@ predicate storeStep(Node nodeFrom, ContentSet c, Node nodeTo) { or setStoreStep(nodeFrom, c, nodeTo) or - dictStoreStep(nodeFrom, c, nodeTo) - or moreDictStoreSteps(nodeFrom, c, nodeTo) or comprehensionStoreStep(nodeFrom, c, nodeTo) diff --git a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected index 667ebf28d755..ab97d594a4e0 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected +++ b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected @@ -38,6 +38,7 @@ typeTracker_found_pointsTo_notFound | code/class_super.py:101:1:101:7 | ControlFlowNode for Attribute() | Z.foo | | code/class_super.py:108:1:108:8 | ControlFlowNode for Attribute() | Z.foo | | code/def_in_function.py:22:5:22:11 | ControlFlowNode for Attribute() | test.A.foo | +| code/func_ref_in_content.py:29:1:29:4 | ControlFlowNode for f4() | func | | code/isinstance.py:9:13:9:22 | ControlFlowNode for Attribute() | A.foo | | code/isinstance.py:9:13:9:22 | ControlFlowNode for Attribute() | ASub.foo | | code/isinstance.py:14:13:14:22 | ControlFlowNode for Attribute() | A.foo | diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py index 87abb4198e9c..57b11915c51b 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py +++ b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py @@ -26,7 +26,7 @@ def return_func_in_dict(): dct = return_func_in_dict() # $ pt,tt=return_func_in_dict f4 = dct['func'] -f4() # $ MISSING: tt=func +f4() # $ tt=func def return_func_in_dict_update(): From dac2b57bb029e345f79e0337f5ab1ba2a2137db7 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 14:51:38 +0100 Subject: [PATCH 225/731] Python: type-track through dict-updates --- .../dataflow/new/internal/DataFlowPrivate.qll | 4 ++-- .../dataflow/new/internal/TypeTrackingImpl.qll | 13 ++++++++++++- .../CallGraph/InlineCallGraphTest.expected | 1 + .../CallGraph/code/func_ref_in_content.py | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 3b589da37d6d..98841726a746 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -648,6 +648,8 @@ predicate storeStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { tupleStoreStep(nodeFrom, c, nodeTo) or dictStoreStep(nodeFrom, c, nodeTo) + or + moreDictStoreSteps(nodeFrom, c, nodeTo) } /** @@ -661,8 +663,6 @@ predicate storeStep(Node nodeFrom, ContentSet c, Node nodeTo) { or setStoreStep(nodeFrom, c, nodeTo) or - moreDictStoreSteps(nodeFrom, c, nodeTo) - or comprehensionStoreStep(nodeFrom, c, nodeTo) or iterableUnpackingStoreStep(nodeFrom, c, nodeTo) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll index 68779208de97..8b3e1a95ef10 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -175,7 +175,18 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { nodeTo = a.getObject() ) or - DataFlowPrivate::storeStepCommon(nodeFrom, content, nodeTo) + // type-tracking doesn't really handle PostUpdateNodes, so for some assignment steps + // like `my_dict["foo"] = foo` the data-flow step targets the PostUpdateNode for + // `my_dict`, where we want to translate that into a type-tracking step that targets + // the normal/non-PostUpdateNode for `my_dict`. + exists(DataFlowPublic::Node storeTarget | + DataFlowPrivate::storeStepCommon(nodeFrom, content, storeTarget) + | + not storeTarget instanceof DataFlowPrivate::SyntheticPostUpdateNode and + nodeTo = storeTarget + or + nodeTo = storeTarget.(DataFlowPrivate::SyntheticPostUpdateNode).getPreUpdateNode() + ) or TypeTrackerSummaryFlow::basicStoreStep(nodeFrom, nodeTo, content) } diff --git a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected index ab97d594a4e0..378b2c64957c 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected +++ b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected @@ -39,6 +39,7 @@ typeTracker_found_pointsTo_notFound | code/class_super.py:108:1:108:8 | ControlFlowNode for Attribute() | Z.foo | | code/def_in_function.py:22:5:22:11 | ControlFlowNode for Attribute() | test.A.foo | | code/func_ref_in_content.py:29:1:29:4 | ControlFlowNode for f4() | func | +| code/func_ref_in_content.py:40:1:40:4 | ControlFlowNode for f5() | func | | code/isinstance.py:9:13:9:22 | ControlFlowNode for Attribute() | A.foo | | code/isinstance.py:9:13:9:22 | ControlFlowNode for Attribute() | ASub.foo | | code/isinstance.py:14:13:14:22 | ControlFlowNode for Attribute() | A.foo | diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py index 57b11915c51b..4bea545cb0f2 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py +++ b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py @@ -37,7 +37,7 @@ def return_func_in_dict_update(): dct2 = return_func_in_dict_update() # $ pt,tt=return_func_in_dict_update f5 = dct2['func'] -f5() # $ MISSING: tt=func +f5() # $ tt=func def return_func_in_list(): From 0cf3fe4a4c5d7772d2efefa0d45cf2d89e46c160 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 14:59:07 +0100 Subject: [PATCH 226/731] Python: Expand dict update tests --- .../CallGraph/InlineCallGraphTest.expected | 8 +++++--- .../CallGraph/code/func_ref_in_content.py | 10 ++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected index 378b2c64957c..c5b7d6dc473c 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected +++ b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected @@ -15,7 +15,7 @@ pointsTo_found_typeTracker_notFound | code/func_defined_outside_class.py:39:11:39:21 | ControlFlowNode for _gen() | B._gen | | code/func_defined_outside_class.py:42:1:42:7 | ControlFlowNode for Attribute() | B._gen.func | | code/func_defined_outside_class.py:43:1:43:7 | ControlFlowNode for Attribute() | B._gen.func | -| code/func_ref_in_content.py:17:1:17:4 | ControlFlowNode for f2() | func | +| code/func_ref_in_content.py:20:1:20:4 | ControlFlowNode for f2() | func | | code/funky_regression.py:15:9:15:17 | ControlFlowNode for Attribute() | Wat.f2 | | code/type_tracking_limitation.py:8:1:8:3 | ControlFlowNode for x() | my_func | typeTracker_found_pointsTo_notFound @@ -38,8 +38,10 @@ typeTracker_found_pointsTo_notFound | code/class_super.py:101:1:101:7 | ControlFlowNode for Attribute() | Z.foo | | code/class_super.py:108:1:108:8 | ControlFlowNode for Attribute() | Z.foo | | code/def_in_function.py:22:5:22:11 | ControlFlowNode for Attribute() | test.A.foo | -| code/func_ref_in_content.py:29:1:29:4 | ControlFlowNode for f4() | func | -| code/func_ref_in_content.py:40:1:40:4 | ControlFlowNode for f5() | func | +| code/func_ref_in_content.py:32:1:32:4 | ControlFlowNode for f4() | func | +| code/func_ref_in_content.py:46:1:46:4 | ControlFlowNode for f5() | func | +| code/func_ref_in_content.py:48:1:48:15 | ControlFlowNode for Subscript() | func2 | +| code/func_ref_in_content.py:50:1:50:19 | ControlFlowNode for Subscript() | func2 | | code/isinstance.py:9:13:9:22 | ControlFlowNode for Attribute() | A.foo | | code/isinstance.py:9:13:9:22 | ControlFlowNode for Attribute() | ASub.foo | | code/isinstance.py:14:13:14:22 | ControlFlowNode for Attribute() | A.foo | diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py index 4bea545cb0f2..b249ec0b2e98 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py +++ b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py @@ -1,6 +1,9 @@ def func(): print("func()") +def func2(): + print("func2()") + def return_func(): return func @@ -32,6 +35,9 @@ def return_func_in_dict(): def return_func_in_dict_update(): d = {} d["func"] = func + d["func2"] = func2 + d["contested"] = func + d["contested"] = func2 return d dct2 = return_func_in_dict_update() # $ pt,tt=return_func_in_dict_update @@ -39,6 +45,10 @@ def return_func_in_dict_update(): f5 = dct2['func'] f5() # $ tt=func +dct2['func2']() # $ tt=func2 + +dct2['contested']() # $ tt=func2 SPURIOUS: tt=func + def return_func_in_list(): return [func, 42] From 92729dbbd659bdac0c8f9e31699161806fb80e73 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 23 Feb 2024 15:27:10 +0100 Subject: [PATCH 227/731] Python: Support iterable unpacking in type-tracking --- .../python/dataflow/new/internal/DataFlowPrivate.qll | 8 ++++---- .../library-tests/CallGraph/InlineCallGraphTest.expected | 1 - .../library-tests/CallGraph/code/func_ref_in_content.py | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index 98841726a746..f2a523775443 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -650,6 +650,8 @@ predicate storeStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { dictStoreStep(nodeFrom, c, nodeTo) or moreDictStoreSteps(nodeFrom, c, nodeTo) + or + iterableUnpackingStoreStep(nodeFrom, c, nodeTo) } /** @@ -665,8 +667,6 @@ predicate storeStep(Node nodeFrom, ContentSet c, Node nodeTo) { or comprehensionStoreStep(nodeFrom, c, nodeTo) or - iterableUnpackingStoreStep(nodeFrom, c, nodeTo) - or attributeStoreStep(nodeFrom, c, nodeTo) or matchStoreStep(nodeFrom, c, nodeTo) @@ -903,6 +903,8 @@ predicate attributeStoreStep(Node nodeFrom, AttributeContent c, Node nodeTo) { */ predicate readStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { subscriptReadStep(nodeFrom, c, nodeTo) + or + iterableUnpackingReadStep(nodeFrom, c, nodeTo) } /** @@ -911,8 +913,6 @@ predicate readStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { predicate readStep(Node nodeFrom, ContentSet c, Node nodeTo) { readStepCommon(nodeFrom, c, nodeTo) or - iterableUnpackingReadStep(nodeFrom, c, nodeTo) - or matchReadStep(nodeFrom, c, nodeTo) or forReadStep(nodeFrom, c, nodeTo) diff --git a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected index c5b7d6dc473c..ef82a9ad20c4 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected +++ b/python/ql/test/experimental/library-tests/CallGraph/InlineCallGraphTest.expected @@ -15,7 +15,6 @@ pointsTo_found_typeTracker_notFound | code/func_defined_outside_class.py:39:11:39:21 | ControlFlowNode for _gen() | B._gen | | code/func_defined_outside_class.py:42:1:42:7 | ControlFlowNode for Attribute() | B._gen.func | | code/func_defined_outside_class.py:43:1:43:7 | ControlFlowNode for Attribute() | B._gen.func | -| code/func_ref_in_content.py:20:1:20:4 | ControlFlowNode for f2() | func | | code/funky_regression.py:15:9:15:17 | ControlFlowNode for Attribute() | Wat.f2 | | code/type_tracking_limitation.py:8:1:8:3 | ControlFlowNode for x() | my_func | typeTracker_found_pointsTo_notFound diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py index b249ec0b2e98..24518ace0885 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py +++ b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py @@ -17,7 +17,7 @@ def return_func_in_tuple(): tup = return_func_in_tuple() # $ pt,tt=return_func_in_tuple f2, _ = tup -f2() # $ pt=func MISSING: tt +f2() # $ pt,tt=func f3 = tup[0] f3() # $ tt,pt=func From 8a7ffac19c9162fdfbde38aa859fc114ad927ba6 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 1 Mar 2024 12:13:43 +0100 Subject: [PATCH 228/731] Python: Accept consistency failure --- .../CallGraph/CONSISTENCY/TypeTrackingConsistency.expected | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected new file mode 100644 index 000000000000..6aed7c838132 --- /dev/null +++ b/python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected @@ -0,0 +1,2 @@ +| code/func_ref_in_content.py:19:1:19:5 | IterableElement | Unreachable node in step of kind store Tuple element at index 0. | +| code/func_ref_in_content.py:19:1:19:5 | IterableElement | Unreachable node in step of kind store Tuple element at index 1. | From 4d78762ba85ddb1373488ef1b0f45fc2a9f9b2a3 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 1 Mar 2024 12:14:14 +0100 Subject: [PATCH 229/731] Python: Ignore consistency failure --- python/ql/consistency-queries/TypeTrackingConsistency.ql | 7 +++++++ .../CallGraph/CONSISTENCY/TypeTrackingConsistency.expected | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) delete mode 100644 python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index 150832290020..551573a7aef7 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -36,6 +36,13 @@ private module ConsistencyChecksInput implements ConsistencyChecksInputSig { // which I couldn't just fix. We ignore the problems here, and instead rely on the // test-case added in https://github.com/github/codeql/pull/15841 n.getLocation().getFile().getAbsolutePath().matches("%/socketserver.py") + or + // for iterable unpacking like `a,b = some_list`, we currently don't want to allow + // type-tracking... however, in the future when we allow tracking list indexes + // precisely (that is, move away from ListElementContent), we should ensure we have + // proper flow to the synthetic `IterableElementNode`. + exists(DataFlow::ListElementContent c) and + n instanceof DataFlow::IterableElementNode } } diff --git a/python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected deleted file mode 100644 index 6aed7c838132..000000000000 --- a/python/ql/test/experimental/library-tests/CallGraph/CONSISTENCY/TypeTrackingConsistency.expected +++ /dev/null @@ -1,2 +0,0 @@ -| code/func_ref_in_content.py:19:1:19:5 | IterableElement | Unreachable node in step of kind store Tuple element at index 0. | -| code/func_ref_in_content.py:19:1:19:5 | IterableElement | Unreachable node in step of kind store Tuple element at index 1. | From fa0c4e18fcbe2638af0266bbd86d209e2feec054 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Mon, 4 Mar 2024 16:05:18 +0100 Subject: [PATCH 230/731] Python: Expand dict-content tt test even more While it might be useful to track content to any lookup, it's not something we do right now. --- .../CallGraph/code/func_ref_in_content.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py index 24518ace0885..eee8f29778be 100644 --- a/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py +++ b/python/ql/test/experimental/library-tests/CallGraph/code/func_ref_in_content.py @@ -50,6 +50,17 @@ def return_func_in_dict_update(): dct2['contested']() # $ tt=func2 SPURIOUS: tt=func +## non-precise access is not supported right now +for k in dct2: + dct2[k]() # $ MISSING: tt=func tt=func2 + +for v in dct2.values(): + v() # $ MISSING: tt=func tt=func2 + +for k, v in dct2.items(): + v() # $ MISSING: tt=func tt=func2 + + def return_func_in_list(): return [func, 42] From 7de304bf1680d61f7b6309cb840a941445f9caf9 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 12 Mar 2024 16:07:53 +0100 Subject: [PATCH 231/731] Python: Add proper type-tracking tests for content Instead of just relying on the call-graph tests --- .../dataflow/typetracking/content_test.py | 78 +++++++++++++++++++ .../dataflow/typetracking/tracked.ql | 8 ++ 2 files changed, 86 insertions(+) create mode 100644 python/ql/test/experimental/dataflow/typetracking/content_test.py diff --git a/python/ql/test/experimental/dataflow/typetracking/content_test.py b/python/ql/test/experimental/dataflow/typetracking/content_test.py new file mode 100644 index 000000000000..ac201f233013 --- /dev/null +++ b/python/ql/test/experimental/dataflow/typetracking/content_test.py @@ -0,0 +1,78 @@ +# test of other content types than attributes + +def test_tuple(index_arg): + tup = (tracked, other) # $tracked + + tup[0] # $ tracked + tup[1] + + a,b = tup # $tracked + a # $ tracked + b + + # non-precise access is not supported right now (and it's not 100% clear if we want + # to support it, or if it will lead to bad results) + tup[index_arg] + + for x in tup: + print(x) + + for i in range(len(tup)): + print(tup[i]) + + +def test_dict(key_arg): + d1 = {"t": tracked, "o": other} # $tracked + d1["t"] # $ tracked + d1.get("t") # $ MISSING: tracked + d1.setdefault("t") # $ MISSING: tracked + + d1["o"] + d1.get("o") + d1.setdefault("o") + + + # non-precise access is not supported right now (and it's not 100% clear if we want + # to support it, or if it will lead to bad results) + d1[key_arg] + + for k in d1: + d1[k] + + for v in d1.values(): + v + + for k, v in d1.items(): + v + + + # construction with inline updates + d2 = dict() + d2["t"] = tracked # $ tracked + d2["o"] = other + + d2["t"] # $ tracked + d2["o"] + + # notice that time-travel is also possible (just as with attributes) + d3 = dict() + d3["t"] # $ SPURIOUS: tracked + d3["t"] = tracked # $ tracked + d3["t"] # $ tracked + + +def test_list(index_arg): + l = [tracked, other] # $tracked + + l[0] # $ MISSING: tracked + l[1] + + # non-precise access is not supported right now (and it's not 100% clear if we want + # to support it, or if it will lead to bad results) + l[index_arg] + + for x in l: + print(x) + + for i in range(len(l)): + print(l[i]) diff --git a/python/ql/test/experimental/dataflow/typetracking/tracked.ql b/python/ql/test/experimental/dataflow/typetracking/tracked.ql index ca893688256c..8bad0e33ead8 100644 --- a/python/ql/test/experimental/dataflow/typetracking/tracked.ql +++ b/python/ql/test/experimental/dataflow/typetracking/tracked.ql @@ -30,6 +30,14 @@ module TrackedTest implements TestSig { not e instanceof DataFlow::ScopeEntryDefinitionNode and // ...same for `SynthCaptureNode`s not e instanceof DP::SynthCaptureNode and + // after starting to track all kinds of content, we generally just want to show + // annotations after reading the tracked data out again. (we keep the old + // attribute logic to not rewrite all our tests) + ( + t.getContent().isNone() + or + t.getContent().asSome() instanceof DataFlow::AttributeContent + ) and tag = "tracked" and location = e.getLocation() and value = t.getAttr() and From 2b09b084e0393193e5daf97a1a512538c9aa4b57 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 12 Mar 2024 17:43:43 +0100 Subject: [PATCH 232/731] Python: Add change-note --- python/ql/lib/change-notes/2024-03-12-typetracking-content.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 python/ql/lib/change-notes/2024-03-12-typetracking-content.md diff --git a/python/ql/lib/change-notes/2024-03-12-typetracking-content.md b/python/ql/lib/change-notes/2024-03-12-typetracking-content.md new file mode 100644 index 000000000000..5ad93a657aed --- /dev/null +++ b/python/ql/lib/change-notes/2024-03-12-typetracking-content.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Improved the type-tracking capabilities (and therefore also API graphs) to allow tracking items in tuples and dictionaries. From af8cef5b535b068057a58654701cf27ca2641e81 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 12 Mar 2024 17:57:32 +0100 Subject: [PATCH 233/731] Python: Fixup deprecated type-tracker API --- .../dataflow/new/internal/TypeTracker.qll | 46 +++++++++++++++---- .../new/internal/TypeTrackerSpecific.qll | 2 +- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll index 0f6ff8bd3bd2..01c881b23169 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTracker.qll @@ -1,6 +1,7 @@ /** Step Summaries and Type Tracking */ private import TypeTrackerSpecific +private import semmle.python.dataflow.new.internal.DataFlowPublic as DataFlowPublic cached private module Cached { @@ -12,10 +13,22 @@ private module Cached { LevelStep() or CallStep() or ReturnStep() or - deprecated StoreStep(TypeTrackerContent content) { basicStoreStep(_, _, content) } or - deprecated LoadStep(TypeTrackerContent content) { basicLoadStep(_, _, content) } or + deprecated StoreStep(TypeTrackerContent content) { + exists(DataFlowPublic::AttributeContent dfc | dfc.getAttribute() = content | + basicStoreStep(_, _, dfc) + ) + } or + deprecated LoadStep(TypeTrackerContent content) { + exists(DataFlowPublic::AttributeContent dfc | dfc.getAttribute() = content | + basicLoadStep(_, _, dfc) + ) + } or deprecated LoadStoreStep(TypeTrackerContent load, TypeTrackerContent store) { - basicLoadStoreStep(_, _, load, store) + exists(DataFlowPublic::AttributeContent dfcLoad, DataFlowPublic::AttributeContent dfcStore | + dfcLoad.getAttribute() = load and dfcStore.getAttribute() = store + | + basicLoadStoreStep(_, _, dfcLoad, dfcStore) + ) } or deprecated WithContent(ContentFilter filter) { basicWithContentStep(_, _, filter) } or deprecated WithoutContent(ContentFilter filter) { basicWithoutContentStep(_, _, filter) } or @@ -29,13 +42,13 @@ private module Cached { // Restrict `content` to those that might eventually match a load. // We can't rely on `basicStoreStep` since `startInContent` might be used with // a content that has no corresponding store. - exists(TypeTrackerContent loadContents | + exists(DataFlowPublic::AttributeContent loadContents | ( basicLoadStep(_, _, loadContents) or basicLoadStoreStep(_, _, loadContents, _) ) and - compatibleContents(content, loadContents) + compatibleContents(content, loadContents.getAttribute()) ) } @@ -45,13 +58,13 @@ private module Cached { content = noContent() or // As in MkTypeTracker, restrict `content` to those that might eventually match a store. - exists(TypeTrackerContent storeContent | + exists(DataFlowPublic::AttributeContent storeContent | ( basicStoreStep(_, _, storeContent) or basicLoadStoreStep(_, _, _, storeContent) ) and - compatibleContents(storeContent, content) + compatibleContents(storeContent.getAttribute(), content) ) } @@ -198,7 +211,10 @@ private module Cached { flowsToStoreStep(nodeFrom, nodeTo, content) and summary = StoreStep(content) or - basicLoadStep(nodeFrom, nodeTo, content) and summary = LoadStep(content) + exists(DataFlowPublic::AttributeContent dfc | dfc.getAttribute() = content | + basicLoadStep(nodeFrom, nodeTo, dfc) + ) and + summary = LoadStep(content) ) or exists(TypeTrackerContent loadContent, TypeTrackerContent storeContent | @@ -281,7 +297,12 @@ deprecated private predicate smallstepProj(Node nodeFrom, StepSummary summary) { deprecated private predicate flowsToStoreStep( Node nodeFrom, TypeTrackingNode nodeTo, TypeTrackerContent content ) { - exists(Node obj | nodeTo.flowsTo(obj) and basicStoreStep(nodeFrom, obj, content)) + exists(Node obj | + nodeTo.flowsTo(obj) and + exists(DataFlowPublic::AttributeContent dfc | dfc.getAttribute() = content | + basicStoreStep(nodeFrom, obj, dfc) + ) + ) } /** @@ -292,7 +313,12 @@ deprecated private predicate flowsToLoadStoreStep( TypeTrackerContent storeContent ) { exists(Node obj | - nodeTo.flowsTo(obj) and basicLoadStoreStep(nodeFrom, obj, loadContent, storeContent) + nodeTo.flowsTo(obj) and + exists(DataFlowPublic::AttributeContent loadDfc, DataFlowPublic::AttributeContent storeDfc | + loadDfc.getAttribute() = loadContent and storeDfc.getAttribute() = storeContent + | + basicLoadStoreStep(nodeFrom, obj, loadDfc, storeDfc) + ) ) } diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll index c31cfeb53310..11cce1446f75 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackerSpecific.qll @@ -15,7 +15,7 @@ deprecated class OptionalTypeTrackerContent extends string { OptionalTypeTrackerContent() { this = "" or - this instanceof TypeTrackingImpl::TypeTrackingInput::Content + this = any(DataFlowPublic::AttributeContent dfc).getAttribute() } } From 6ffaad1bc8cfb0812549780d6547c8e37a2dcea9 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 12 Mar 2024 22:32:40 +0100 Subject: [PATCH 234/731] Python: Expand type-tracking tests with nested tuples I was initially surprised to see that this didn't work, until I remembered that type-tracking only works with content of depth 1. --- .../TypeTrackingConsistency.expected | 13 +++++++++++ .../dataflow/typetracking/content_test.py | 22 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected new file mode 100644 index 000000000000..6fc4df916995 --- /dev/null +++ b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected @@ -0,0 +1,13 @@ +unreachableNode +| content_test.py:31:6:31:11 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | +| content_test.py:31:6:31:11 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | +| content_test.py:31:6:31:11 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | +| content_test.py:31:16:31:21 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | +| content_test.py:31:16:31:21 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | +| content_test.py:31:16:31:21 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | +| content_test.py:40:10:40:13 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | +| content_test.py:40:10:40:13 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | +| content_test.py:40:10:40:13 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | +| content_test.py:66:9:66:12 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | +| content_test.py:66:9:66:12 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | +| content_test.py:66:9:66:12 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | diff --git a/python/ql/test/experimental/dataflow/typetracking/content_test.py b/python/ql/test/experimental/dataflow/typetracking/content_test.py index ac201f233013..1c52d659582a 100644 --- a/python/ql/test/experimental/dataflow/typetracking/content_test.py +++ b/python/ql/test/experimental/dataflow/typetracking/content_test.py @@ -21,6 +21,28 @@ def test_tuple(index_arg): print(tup[i]) + # nested tuples + nested_tuples = ((tracked, other), (other, tracked)) # $tracked + + nested_tuples[0][0] # $ MISSING: tracked + nested_tuples[0][1] + nested_tuples[1][0] + nested_tuples[1][1] # $ MISSING: tracked + + (aa, ab), (ba, bb) = nested_tuples + aa # $ MISSING: tracked + ab + ba + bb # $ MISSING: tracked + + + # non-precise access is not supported right now (and it's not 100% clear if we want + # to support it, or if it will lead to bad results) + for (x, y) in nested_tuples: + x + y + + def test_dict(key_arg): d1 = {"t": tracked, "o": other} # $tracked d1["t"] # $ tracked From 7a3ee0f5f8145abe25b26a64415a43ed32b7016e Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Wed, 13 Mar 2024 16:41:42 +0100 Subject: [PATCH 235/731] Python: Make `IterableSequenceNode` LocalSourceNode We do this to remove the inconsistencies, and to be ready for a future where type-tracking support content tracker of depth > 1. It works because targets of loadSteps needs to be LocalSourceNodes predicate loadStep(Node nodeFrom, LocalSourceNode nodeTo, Content content) { --- .../python/dataflow/new/internal/LocalSources.qll | 2 ++ .../CONSISTENCY/TypeTrackingConsistency.expected | 13 ------------- 2 files changed, 2 insertions(+), 13 deletions(-) delete mode 100644 python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll index 34b137b35115..92d9e5887ad8 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll @@ -74,6 +74,8 @@ class LocalSourceNode extends Node { this instanceof ScopeEntryDefinitionNode or this instanceof ParameterNode + or + this instanceof IterableSequenceNode } /** Holds if this `LocalSourceNode` can flow to `nodeTo` in one or more local flow steps. */ diff --git a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected deleted file mode 100644 index 6fc4df916995..000000000000 --- a/python/ql/test/experimental/dataflow/typetracking/CONSISTENCY/TypeTrackingConsistency.expected +++ /dev/null @@ -1,13 +0,0 @@ -unreachableNode -| content_test.py:31:6:31:11 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | -| content_test.py:31:6:31:11 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | -| content_test.py:31:6:31:11 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | -| content_test.py:31:16:31:21 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | -| content_test.py:31:16:31:21 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | -| content_test.py:31:16:31:21 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | -| content_test.py:40:10:40:13 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | -| content_test.py:40:10:40:13 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | -| content_test.py:40:10:40:13 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | -| content_test.py:66:9:66:12 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 0. | -| content_test.py:66:9:66:12 | ControlFlowNode for Tuple | Unreachable node in step of kind load Tuple element at index 1. | -| content_test.py:66:9:66:12 | ControlFlowNode for Tuple | Unreachable node in step of kind storeTarget. | From 20691e409cc0cff6472f03f846a533b12881db97 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Thu, 14 Mar 2024 11:56:43 +0100 Subject: [PATCH 236/731] Add change note --- .../2024-03-14-hardcoded-credentials-more-sources.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md diff --git a/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md b/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md new file mode 100644 index 000000000000..ad6f712958e6 --- /dev/null +++ b/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. From 5b734c76b651241e0776faf1ffa46e8a01a125c1 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Tue, 5 Mar 2024 15:50:16 +0000 Subject: [PATCH 237/731] Add manual neutral models for java.util.Locale and its subclasses --- java/ql/lib/ext/java.util.model.yml | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/java/ql/lib/ext/java.util.model.yml b/java/ql/lib/ext/java.util.model.yml index 7ab6780b8f84..8f621df591e2 100644 --- a/java/ql/lib/ext/java.util.model.yml +++ b/java/ql/lib/ext/java.util.model.yml @@ -451,7 +451,62 @@ extensions: - ["java.util", "List", "of", "()", "summary", "manual"] - ["java.util", "List", "sort", "(Comparator)", "summary", "manual"] - ["java.util", "List", "size", "()", "summary", "manual"] + - ["java.util", "Locale$Builder", "addUnicodeLocaleAttribute", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "build", "()", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "clear", "()", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "clearExtensions", "()", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "removeUnicodeLocaleAttribute", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setExtension", "(char,String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setLanguage", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setLanguageTag", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setLocale", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setLocale", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setRegion", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setScript", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setUnicodeLocaleKeyword", "(String,String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setVariant", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$Builder", "setVariant", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "LanguageRange", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "LanguageRange", "(String,double)", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "getRange", "()", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "mapEquivalents", "(List,Map)", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "mapEquivalents", "(List,Map)", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "parse", "(String)", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "parse", "(String,Map)", "summary", "df-manual"] + - ["java.util", "Locale$LanguageRange", "parse", "(String,Map)", "summary", "df-manual"] + - ["java.util", "Locale", "Locale", "(String)", "summary", "df-manual"] + - ["java.util", "Locale", "Locale", "(String,String)", "summary", "df-manual"] + - ["java.util", "Locale", "Locale", "(String,String)", "summary", "df-manual"] + - ["java.util", "Locale", "Locale", "(String,String,String)", "summary", "df-manual"] + - ["java.util", "Locale", "Locale", "(String,String,String)", "summary", "df-manual"] + - ["java.util", "Locale", "Locale", "(String,String,String)", "summary", "df-manual"] + - ["java.util", "Locale", "filterTags", "(List,Collection)", "summary", "df-manual"] + - ["java.util", "Locale", "filterTags", "(List,Collection,Locale$FilteringMode)", "summary", "df-manual"] - ["java.util", "Locale", "forLanguageTag", "(String)", "summary", "manual"] + - ["java.util", "Locale", "getCountry", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayCountry", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayCountry", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayCountry", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayLanguage", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayLanguage", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayLanguage", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayName", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayName", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayName", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayScript", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayScript", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayScript", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayVariant", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayVariant", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getDisplayVariant", "(Locale)", "summary", "df-manual"] + - ["java.util", "Locale", "getExtensionKeys", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getISO3Language", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getLanguage", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getScript", "()", "summary", "df-manual"] + - ["java.util", "Locale", "getVariant", "()", "summary", "df-manual"] + - ["java.util", "Locale", "lookupTag", "(List,Collection)", "summary", "df-manual"] + - ["java.util", "Locale", "stripExtensions", "()", "summary", "df-manual"] + - ["java.util", "Locale", "toLanguageTag", "()", "summary", "df-manual"] - ["java.util", "Map", "containsKey", "(Object)", "summary", "manual"] - ["java.util", "Map", "isEmpty", "()", "summary", "manual"] - ["java.util", "Map", "size", "()", "summary", "manual"] From 2bd08838d47309e6dbae9db9000cf39ec94587d2 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 6 Mar 2024 14:31:00 +0000 Subject: [PATCH 238/731] Add manual neutral models for java.lang.ClassLoader --- java/ql/lib/ext/java.lang.model.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 0569b4c209c4..fff3a90dcb3f 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -185,8 +185,19 @@ extensions: - ["java.lang", "Class", "isAssignableFrom", "(Class)", "summary", "manual"] - ["java.lang", "Class", "isInstance", "(Object)", "summary", "manual"] - ["java.lang", "Class", "toString", "()", "summary", "manual"] + - ["java.lang", "ClassLoader", "findResource", "(String)", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "getDefinedPackage", "(String)", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "getDefinedPackage", "(String)", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "getName", "()", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "getParent", "()", "summary", "df-manual"] - ["java.lang", "ClassLoader", "getResource", "(String)", "summary", "manual"] - ["java.lang", "ClassLoader", "getResourceAsStream", "(String)", "summary", "manual"] + - ["java.lang", "ClassLoader", "getSystemResource", "(String)", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "getUnnamedModule", "()", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "loadClass", "(String)", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "loadClass", "(String,boolean)", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "setClassAssertionStatus", "(String,boolean)", "summary", "df-manual"] + - ["java.lang", "ClassLoader", "setPackageAssertionStatus", "(String,boolean)", "summary", "df-manual"] - ["java.lang", "Enum", "Enum", "(String,int)", "summary", "manual"] - ["java.lang", "Enum", "equals", "(Object)", "summary", "manual"] - ["java.lang", "Enum", "hashCode", "()", "summary", "manual"] From 7fdea27d331d7aae758aa0d6b2291cd043ae28b1 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Thu, 14 Mar 2024 11:46:15 +0000 Subject: [PATCH 239/731] C++: Rename 'IndirectTemporaryExpr' to 'IndirectOperandExprNode'. --- .../lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index a3459c3ed102..046e37ae6be0 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -1552,8 +1552,8 @@ private class IndirectArgumentOutExprNode extends ExprNodeBase, IndirectArgument final override Expr getConvertedExpr(int n) { exprNodeShouldBeIndirectOutNode(this, result, n) } } -private class IndirectTemporaryExpr extends ExprNodeBase instanceof IndirectOperand { - IndirectTemporaryExpr() { exprNodeShouldBeIndirectOperand(this, _, _) } +private class IndirectOperandExprNode extends ExprNodeBase instanceof IndirectOperand { + IndirectOperandExprNode() { exprNodeShouldBeIndirectOperand(this, _, _) } final override Expr getConvertedExpr(int n) { exprNodeShouldBeIndirectOperand(this, result, n) } } From 8c31b612ca01c004e3bbfab2881b2d2bb60ebd88 Mon Sep 17 00:00:00 2001 From: Joe Farebrother <joefarebrother@github.com> Date: Wed, 13 Mar 2024 15:48:21 +0000 Subject: [PATCH 240/731] Model UploadedFile `original_filename` and `read` --- .../ruby/frameworks/ActionController.qll | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index be1df5066e1d..c6d6014f8dad 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -8,6 +8,7 @@ private import codeql.ruby.controlflow.CfgNodes private import codeql.ruby.DataFlow private import codeql.ruby.dataflow.RemoteFlowSources private import codeql.ruby.ApiGraphs +private import codeql.ruby.typetracking.TypeTracking private import codeql.ruby.frameworks.ActionDispatch private import codeql.ruby.frameworks.ActionView private import codeql.ruby.frameworks.Rails @@ -505,6 +506,27 @@ private module ParamsSummaries { ] } + /** Gets a field of an instance of `ActionController::Parameters` */ + private DataFlow::LocalSourceNode paramsField() { + result = + [ + paramsInstance(), + paramsInstance().getAMethodCall(methodReturnsTaintFromSelf()).getAnElementRead*() + ] + } + + private DataFlow::LocalSourceNode paramsFieldType(TypeTracker t) { + t.start() and + result = paramsField() + or + exists(TypeTracker t2 | result = paramsFieldType(t2).track(t2, t)) + } + + /** Gets a node with a type that can be a field of `ActionController::Parameters */ + private DataFlow::LocalSourceNode paramsFieldType() { + paramsFieldType(TypeTracker::end()).flowsTo(result) + } + /** * A flow summary for methods on `ActionController::Parameters` which * propagate taint from receiver to return value. @@ -569,6 +591,44 @@ private module ParamsSummaries { preservesValue = false } } + + /** Flow summaries for `ActiveDispatch::Http::UploadedFile`, which can be an field of `ActionController::Parameters`. */ + module UploadedFileSummaries { + /** Flow summary for `ActiveDispatch::Http::UploadedFile.original_filename` */ + private class UploadedFileOriginalFilenameSummary extends SummarizedCallable { + UploadedFileOriginalFilenameSummary() { + this = "ActionDispatch::Http::UploadedFile::original_filename" + } + + override MethodCall getACall() { + result = paramsFieldType().getAMethodCall("original_filename").asExpr().getExpr() and + result.getNumberOfArguments() = 0 + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[self]" and output = "ReturnValue" and preservesValue = false + } + } + + /** + * Flow summary for `ActiveDispatch::Http::UploadedFile.original_filename`, + * which propagates taint from the receiver to the return value or to the second (buffer) argument + */ + private class UploadedFileReadSummary extends SummarizedCallable { + UploadedFileReadSummary() { this = "ActionDispatch::Http::UploadedFile::read" } + + override MethodCall getACall() { + result = paramsFieldType().getAMethodCall("read").asExpr().getExpr() and + result.getNumberOfArguments() in [0 .. 2] + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[self]" and + output = ["ReturnValue", "Argument[1]"] and + preservesValue = false + } + } + } } /** From 5333c759192212565762a33680bf9e843daac11c Mon Sep 17 00:00:00 2001 From: Joe Farebrother <joefarebrother@github.com> Date: Thu, 14 Mar 2024 14:44:20 +0000 Subject: [PATCH 241/731] Model additional string attributes --- .../codeql/ruby/frameworks/ActionController.qll | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index c6d6014f8dad..0c49b1f074f0 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -594,14 +594,18 @@ private module ParamsSummaries { /** Flow summaries for `ActiveDispatch::Http::UploadedFile`, which can be an field of `ActionController::Parameters`. */ module UploadedFileSummaries { - /** Flow summary for `ActiveDispatch::Http::UploadedFile.original_filename` */ - private class UploadedFileOriginalFilenameSummary extends SummarizedCallable { - UploadedFileOriginalFilenameSummary() { - this = "ActionDispatch::Http::UploadedFile::original_filename" + /** Flow summary for various string attributes of `UploadedFile`, including `original_filename`, `content_type`, and `headers`. */ + private class UploadedFileStringAttributeSummary extends SummarizedCallable { + UploadedFileStringAttributeSummary() { + this = "ActionDispatch::Http::UploadedFile::[original_filename,content_type,headers]" } override MethodCall getACall() { - result = paramsFieldType().getAMethodCall("original_filename").asExpr().getExpr() and + result = + paramsFieldType() + .getAMethodCall(["original_filename", "content_type", "headers"]) + .asExpr() + .getExpr() and result.getNumberOfArguments() = 0 } From 3e61be1b6a1a20db3ffb6624c57fc558ce830715 Mon Sep 17 00:00:00 2001 From: Joe Farebrother <joefarebrother@github.com> Date: Thu, 14 Mar 2024 14:46:46 +0000 Subject: [PATCH 242/731] Add test cases --- .../dataflow/local/TaintStep.expected | 3 ++ .../ActionController.expected | 25 ++++++++++++ .../action_controller/params-flow.expected | 40 +++++++++++++++++++ .../action_controller/params_flow.rb | 29 ++++++++++++++ 4 files changed, 97 insertions(+) diff --git a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected index f640ff6551a6..e73f2e3cb107 100644 --- a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected @@ -2835,6 +2835,9 @@ | file://:0:0:0:0 | [summary param] self in ActionController::Parameters#merge | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionController::Parameters#merge | | file://:0:0:0:0 | [summary param] self in ActionController::Parameters#merge! | file://:0:0:0:0 | [summary] to write: Argument[self] in ActionController::Parameters#merge! | | file://:0:0:0:0 | [summary param] self in ActionController::Parameters#merge! | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionController::Parameters#merge! | +| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile::[original_filename,content_type,headers] | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionDispatch::Http::UploadedFile::[original_filename,content_type,headers] | +| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile::read | file://:0:0:0:0 | [summary] to write: Argument[1] in ActionDispatch::Http::UploadedFile::read | +| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile::read | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionDispatch::Http::UploadedFile::read | | file://:0:0:0:0 | [summary param] self in ActiveSupportStringTransform | file://:0:0:0:0 | [summary] to write: ReturnValue in ActiveSupportStringTransform | | file://:0:0:0:0 | [summary param] self in [] | file://:0:0:0:0 | [summary] to write: ReturnValue in [] | | file://:0:0:0:0 | [summary param] self in \| | file://:0:0:0:0 | [summary] read: Argument[self].Element[any] in \| | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected index 9276cc0b350a..7e5b5d6d001f 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected @@ -14,6 +14,7 @@ actionControllerControllerClasses | input_access.rb:1:1:58:3 | UsersController | | params_flow.rb:1:1:162:3 | MyController | | params_flow.rb:170:1:178:3 | Subclass | +| params_flow.rb:180:1:205:5 | UploadedFileTests | actionControllerActionMethods | app/controllers/comments_controller.rb:17:3:51:5 | index | | app/controllers/comments_controller.rb:53:3:54:5 | create | @@ -86,6 +87,12 @@ actionControllerActionMethods | params_flow.rb:152:3:159:5 | m33 | | params_flow.rb:165:3:167:5 | m34 | | params_flow.rb:171:3:173:5 | m35 | +| params_flow.rb:181:3:183:5 | m36 | +| params_flow.rb:185:3:187:5 | m37 | +| params_flow.rb:189:3:191:5 | m38 | +| params_flow.rb:193:3:195:5 | m39 | +| params_flow.rb:197:3:201:5 | m40 | +| params_flow.rb:203:3:205:5 | m41 | paramsCalls | app/controllers/comments_controller.rb:80:36:80:41 | call to params | | app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params | @@ -146,6 +153,12 @@ paramsCalls | params_flow.rb:166:10:166:15 | call to params | | params_flow.rb:172:10:172:15 | call to params | | params_flow.rb:176:10:176:15 | call to params | +| params_flow.rb:182:10:182:15 | call to params | +| params_flow.rb:186:10:186:15 | call to params | +| params_flow.rb:190:10:190:15 | call to params | +| params_flow.rb:194:10:194:15 | call to params | +| params_flow.rb:199:5:199:10 | call to params | +| params_flow.rb:204:10:204:15 | call to params | paramsSources | app/controllers/comments_controller.rb:80:36:80:41 | call to params | | app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params | @@ -206,6 +219,12 @@ paramsSources | params_flow.rb:166:10:166:15 | call to params | | params_flow.rb:172:10:172:15 | call to params | | params_flow.rb:176:10:176:15 | call to params | +| params_flow.rb:182:10:182:15 | call to params | +| params_flow.rb:186:10:186:15 | call to params | +| params_flow.rb:190:10:190:15 | call to params | +| params_flow.rb:194:10:194:15 | call to params | +| params_flow.rb:199:5:199:10 | call to params | +| params_flow.rb:204:10:204:15 | call to params | httpInputAccesses | app/controllers/application_controller.rb:11:53:11:64 | call to path | ActionDispatch::Request#path | | app/controllers/comments_controller.rb:18:5:18:18 | call to params | ActionDispatch::Request#params | @@ -324,6 +343,12 @@ httpInputAccesses | params_flow.rb:166:10:166:15 | call to params | ActionController::Metal#params | | params_flow.rb:172:10:172:15 | call to params | ActionController::Metal#params | | params_flow.rb:176:10:176:15 | call to params | ActionController::Metal#params | +| params_flow.rb:182:10:182:15 | call to params | ActionController::Metal#params | +| params_flow.rb:186:10:186:15 | call to params | ActionController::Metal#params | +| params_flow.rb:190:10:190:15 | call to params | ActionController::Metal#params | +| params_flow.rb:194:10:194:15 | call to params | ActionController::Metal#params | +| params_flow.rb:199:5:199:10 | call to params | ActionController::Metal#params | +| params_flow.rb:204:10:204:15 | call to params | ActionController::Metal#params | cookiesCalls | app/controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | cookiesSources diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected index 69946539384b..698d3b23ccb6 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected @@ -101,6 +101,21 @@ edges | params_flow.rb:166:10:166:15 | call to params | params_flow.rb:166:10:166:19 | ...[...] | provenance | | | params_flow.rb:172:10:172:15 | call to params | params_flow.rb:172:10:172:19 | ...[...] | provenance | | | params_flow.rb:176:10:176:15 | call to params | params_flow.rb:176:10:176:19 | ...[...] | provenance | | +| params_flow.rb:182:10:182:15 | call to params | params_flow.rb:182:10:182:22 | ...[...] | provenance | | +| params_flow.rb:182:10:182:22 | ...[...] | params_flow.rb:182:10:182:40 | call to original_filename | provenance | | +| params_flow.rb:186:10:186:15 | call to params | params_flow.rb:186:10:186:30 | call to require | provenance | | +| params_flow.rb:186:10:186:30 | call to require | params_flow.rb:186:10:186:43 | call to content_type | provenance | | +| params_flow.rb:190:10:190:15 | call to params | params_flow.rb:190:10:190:29 | call to permit | provenance | | +| params_flow.rb:190:10:190:29 | call to permit | params_flow.rb:190:10:190:36 | ...[...] | provenance | | +| params_flow.rb:190:10:190:36 | ...[...] | params_flow.rb:190:10:190:44 | call to headers | provenance | | +| params_flow.rb:194:10:194:15 | call to params | params_flow.rb:194:10:194:19 | ...[...] | provenance | | +| params_flow.rb:194:10:194:19 | ...[...] | params_flow.rb:194:10:194:31 | call to to_unsafe_h | provenance | | +| params_flow.rb:194:10:194:31 | call to to_unsafe_h | params_flow.rb:194:10:194:35 | ...[...] | provenance | | +| params_flow.rb:194:10:194:35 | ...[...] | params_flow.rb:194:10:194:42 | ...[...] | provenance | | +| params_flow.rb:194:10:194:42 | ...[...] | params_flow.rb:194:10:194:47 | call to read | provenance | | +| params_flow.rb:198:5:198:10 | call to params | params_flow.rb:198:5:198:17 | ...[...] | provenance | | +| params_flow.rb:198:5:198:17 | ...[...] | params_flow.rb:198:28:198:28 | [post] a | provenance | | +| params_flow.rb:198:28:198:28 | [post] a | params_flow.rb:199:10:199:10 | a | provenance | | nodes | filter_flow.rb:14:5:14:8 | [post] self [@foo] | semmle.label | [post] self [@foo] | | filter_flow.rb:14:12:14:17 | call to params | semmle.label | call to params | @@ -244,6 +259,26 @@ nodes | params_flow.rb:172:10:172:19 | ...[...] | semmle.label | ...[...] | | params_flow.rb:176:10:176:15 | call to params | semmle.label | call to params | | params_flow.rb:176:10:176:19 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:182:10:182:15 | call to params | semmle.label | call to params | +| params_flow.rb:182:10:182:22 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:182:10:182:40 | call to original_filename | semmle.label | call to original_filename | +| params_flow.rb:186:10:186:15 | call to params | semmle.label | call to params | +| params_flow.rb:186:10:186:30 | call to require | semmle.label | call to require | +| params_flow.rb:186:10:186:43 | call to content_type | semmle.label | call to content_type | +| params_flow.rb:190:10:190:15 | call to params | semmle.label | call to params | +| params_flow.rb:190:10:190:29 | call to permit | semmle.label | call to permit | +| params_flow.rb:190:10:190:36 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:190:10:190:44 | call to headers | semmle.label | call to headers | +| params_flow.rb:194:10:194:15 | call to params | semmle.label | call to params | +| params_flow.rb:194:10:194:19 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:194:10:194:31 | call to to_unsafe_h | semmle.label | call to to_unsafe_h | +| params_flow.rb:194:10:194:35 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:194:10:194:42 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:194:10:194:47 | call to read | semmle.label | call to read | +| params_flow.rb:198:5:198:10 | call to params | semmle.label | call to params | +| params_flow.rb:198:5:198:17 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:198:28:198:28 | [post] a | semmle.label | [post] a | +| params_flow.rb:199:10:199:10 | a | semmle.label | a | subpaths #select | filter_flow.rb:21:10:21:13 | @foo | filter_flow.rb:14:12:14:17 | call to params | filter_flow.rb:21:10:21:13 | @foo | $@ | filter_flow.rb:14:12:14:17 | call to params | call to params | @@ -298,3 +333,8 @@ subpaths | params_flow.rb:166:10:166:19 | ...[...] | params_flow.rb:166:10:166:15 | call to params | params_flow.rb:166:10:166:19 | ...[...] | $@ | params_flow.rb:166:10:166:15 | call to params | call to params | | params_flow.rb:172:10:172:19 | ...[...] | params_flow.rb:172:10:172:15 | call to params | params_flow.rb:172:10:172:19 | ...[...] | $@ | params_flow.rb:172:10:172:15 | call to params | call to params | | params_flow.rb:176:10:176:19 | ...[...] | params_flow.rb:176:10:176:15 | call to params | params_flow.rb:176:10:176:19 | ...[...] | $@ | params_flow.rb:176:10:176:15 | call to params | call to params | +| params_flow.rb:182:10:182:40 | call to original_filename | params_flow.rb:182:10:182:15 | call to params | params_flow.rb:182:10:182:40 | call to original_filename | $@ | params_flow.rb:182:10:182:15 | call to params | call to params | +| params_flow.rb:186:10:186:43 | call to content_type | params_flow.rb:186:10:186:15 | call to params | params_flow.rb:186:10:186:43 | call to content_type | $@ | params_flow.rb:186:10:186:15 | call to params | call to params | +| params_flow.rb:190:10:190:44 | call to headers | params_flow.rb:190:10:190:15 | call to params | params_flow.rb:190:10:190:44 | call to headers | $@ | params_flow.rb:190:10:190:15 | call to params | call to params | +| params_flow.rb:194:10:194:47 | call to read | params_flow.rb:194:10:194:15 | call to params | params_flow.rb:194:10:194:47 | call to read | $@ | params_flow.rb:194:10:194:15 | call to params | call to params | +| params_flow.rb:199:10:199:10 | a | params_flow.rb:198:5:198:10 | call to params | params_flow.rb:199:10:199:10 | a | $@ | params_flow.rb:198:5:198:10 | call to params | call to params | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb b/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb index 65aba8fabf2d..018d8b58af01 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb +++ b/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb @@ -176,3 +176,32 @@ def m35 sink params[:x] # $hasTaintFlow end end + +class UploadedFileTests < MyController + def m36 + sink params[:file].original_filename # $hasTaintFlow + end + + def m37 + sink params.require(:file).content_type # $hasTaintFlow + end + + def m38 + sink params.permit(:file)[:file].headers # $hasTaintFlow + end + + def m39 + sink params[:a].to_unsafe_h[:b][:file].read # $hasTaintFlow + end + + def m40(a) + params[:file].read(nil,a) + sink a # $ hasTaintFlow + end + + def m41 + a = "" + params[:file].read(nil,a) + sink a # $ MISSING:hasTaintFlow + end +end \ No newline at end of file From b4ed77343b77cdc16aea4e04af294883ebbefdb7 Mon Sep 17 00:00:00 2001 From: Joe Farebrother <joefarebrother@github.com> Date: Thu, 14 Mar 2024 15:44:53 +0000 Subject: [PATCH 243/731] Add change note + fix qldoc --- .../2024-03-14-actiondispatch-uploadedfile.md | 4 ++++ ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll | 8 ++++---- .../test/library-tests/dataflow/local/TaintStep.expected | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md diff --git a/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md b/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md new file mode 100644 index 000000000000..a02ca0d00a2a --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. \ No newline at end of file diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index 0c49b1f074f0..7578ba52bb13 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -597,7 +597,7 @@ private module ParamsSummaries { /** Flow summary for various string attributes of `UploadedFile`, including `original_filename`, `content_type`, and `headers`. */ private class UploadedFileStringAttributeSummary extends SummarizedCallable { UploadedFileStringAttributeSummary() { - this = "ActionDispatch::Http::UploadedFile::[original_filename,content_type,headers]" + this = "ActionDispatch::Http::UploadedFile#[original_filename,content_type,headers]" } override MethodCall getACall() { @@ -615,11 +615,11 @@ private module ParamsSummaries { } /** - * Flow summary for `ActiveDispatch::Http::UploadedFile.original_filename`, - * which propagates taint from the receiver to the return value or to the second (buffer) argument + * Flow summary for `ActiveDispatch::Http::UploadedFile#read`, + * which propagates taint from the receiver to the return value or to the second (out string) argument */ private class UploadedFileReadSummary extends SummarizedCallable { - UploadedFileReadSummary() { this = "ActionDispatch::Http::UploadedFile::read" } + UploadedFileReadSummary() { this = "ActionDispatch::Http::UploadedFile#read" } override MethodCall getACall() { result = paramsFieldType().getAMethodCall("read").asExpr().getExpr() and diff --git a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected index e73f2e3cb107..44f879946ab7 100644 --- a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected @@ -2835,9 +2835,9 @@ | file://:0:0:0:0 | [summary param] self in ActionController::Parameters#merge | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionController::Parameters#merge | | file://:0:0:0:0 | [summary param] self in ActionController::Parameters#merge! | file://:0:0:0:0 | [summary] to write: Argument[self] in ActionController::Parameters#merge! | | file://:0:0:0:0 | [summary param] self in ActionController::Parameters#merge! | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionController::Parameters#merge! | -| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile::[original_filename,content_type,headers] | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionDispatch::Http::UploadedFile::[original_filename,content_type,headers] | -| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile::read | file://:0:0:0:0 | [summary] to write: Argument[1] in ActionDispatch::Http::UploadedFile::read | -| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile::read | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionDispatch::Http::UploadedFile::read | +| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile#[original_filename,content_type,headers] | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionDispatch::Http::UploadedFile#[original_filename,content_type,headers] | +| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile#read | file://:0:0:0:0 | [summary] to write: Argument[1] in ActionDispatch::Http::UploadedFile#read | +| file://:0:0:0:0 | [summary param] self in ActionDispatch::Http::UploadedFile#read | file://:0:0:0:0 | [summary] to write: ReturnValue in ActionDispatch::Http::UploadedFile#read | | file://:0:0:0:0 | [summary param] self in ActiveSupportStringTransform | file://:0:0:0:0 | [summary] to write: ReturnValue in ActiveSupportStringTransform | | file://:0:0:0:0 | [summary param] self in [] | file://:0:0:0:0 | [summary] to write: ReturnValue in [] | | file://:0:0:0:0 | [summary param] self in \| | file://:0:0:0:0 | [summary] read: Argument[self].Element[any] in \| | From f464f1b94ef8a3326a51689729c020636ac688e2 Mon Sep 17 00:00:00 2001 From: Joe Farebrother <joefarebrother@github.com> Date: Thu, 14 Mar 2024 16:36:26 +0000 Subject: [PATCH 244/731] Accept test output + fix qldoc typo --- .../ruby/frameworks/ActionController.qll | 2 +- .../ActionController.expected | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index 7578ba52bb13..19dcb82cfd69 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -522,7 +522,7 @@ private module ParamsSummaries { exists(TypeTracker t2 | result = paramsFieldType(t2).track(t2, t)) } - /** Gets a node with a type that can be a field of `ActionController::Parameters */ + /** Gets a node with a type that can be a field of `ActionController::Parameters` */ private DataFlow::LocalSourceNode paramsFieldType() { paramsFieldType(TypeTracker::end()).flowsTo(result) } diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected index 7e5b5d6d001f..9af92b159cd3 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/ActionController.expected @@ -14,7 +14,7 @@ actionControllerControllerClasses | input_access.rb:1:1:58:3 | UsersController | | params_flow.rb:1:1:162:3 | MyController | | params_flow.rb:170:1:178:3 | Subclass | -| params_flow.rb:180:1:205:5 | UploadedFileTests | +| params_flow.rb:180:1:207:3 | UploadedFileTests | actionControllerActionMethods | app/controllers/comments_controller.rb:17:3:51:5 | index | | app/controllers/comments_controller.rb:53:3:54:5 | create | @@ -91,8 +91,8 @@ actionControllerActionMethods | params_flow.rb:185:3:187:5 | m37 | | params_flow.rb:189:3:191:5 | m38 | | params_flow.rb:193:3:195:5 | m39 | -| params_flow.rb:197:3:201:5 | m40 | -| params_flow.rb:203:3:205:5 | m41 | +| params_flow.rb:197:3:200:5 | m40 | +| params_flow.rb:202:3:206:5 | m41 | paramsCalls | app/controllers/comments_controller.rb:80:36:80:41 | call to params | | app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params | @@ -157,8 +157,8 @@ paramsCalls | params_flow.rb:186:10:186:15 | call to params | | params_flow.rb:190:10:190:15 | call to params | | params_flow.rb:194:10:194:15 | call to params | -| params_flow.rb:199:5:199:10 | call to params | -| params_flow.rb:204:10:204:15 | call to params | +| params_flow.rb:198:5:198:10 | call to params | +| params_flow.rb:204:5:204:10 | call to params | paramsSources | app/controllers/comments_controller.rb:80:36:80:41 | call to params | | app/controllers/foo/bars_controller.rb:13:21:13:26 | call to params | @@ -223,8 +223,8 @@ paramsSources | params_flow.rb:186:10:186:15 | call to params | | params_flow.rb:190:10:190:15 | call to params | | params_flow.rb:194:10:194:15 | call to params | -| params_flow.rb:199:5:199:10 | call to params | -| params_flow.rb:204:10:204:15 | call to params | +| params_flow.rb:198:5:198:10 | call to params | +| params_flow.rb:204:5:204:10 | call to params | httpInputAccesses | app/controllers/application_controller.rb:11:53:11:64 | call to path | ActionDispatch::Request#path | | app/controllers/comments_controller.rb:18:5:18:18 | call to params | ActionDispatch::Request#params | @@ -347,8 +347,8 @@ httpInputAccesses | params_flow.rb:186:10:186:15 | call to params | ActionController::Metal#params | | params_flow.rb:190:10:190:15 | call to params | ActionController::Metal#params | | params_flow.rb:194:10:194:15 | call to params | ActionController::Metal#params | -| params_flow.rb:199:5:199:10 | call to params | ActionController::Metal#params | -| params_flow.rb:204:10:204:15 | call to params | ActionController::Metal#params | +| params_flow.rb:198:5:198:10 | call to params | ActionController::Metal#params | +| params_flow.rb:204:5:204:10 | call to params | ActionController::Metal#params | cookiesCalls | app/controllers/foo/bars_controller.rb:10:27:10:33 | call to cookies | cookiesSources From 7f05743212a50d28d68683cb4a413acfa73391d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 00:16:16 +0000 Subject: [PATCH 245/731] Add changed framework coverage reports --- java/documentation/library-coverage/coverage.csv | 4 ++-- java/documentation/library-coverage/coverage.rst | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index a86fdd321be3..ad4f7bdd07f2 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -76,13 +76,13 @@ jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3 java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -java.io,51,1,46,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,1,,44,2 +java.io,51,1,45,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,1,,43,2 java.lang,38,3,101,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,3,,,58,43 java.net,22,3,24,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,,3,24, java.nio,44,,38,,,,,,,,,5,,,,,,,,,,,,,,,38,,,,,,,,,1,,,,,,,,,,,,,,38, java.security,21,,,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,1,,,,2, -java.util,47,2,522,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,46,476 +java.util,47,2,524,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,46,478 javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,7, javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 432d9c2db674..a37dc0a71efd 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -18,10 +18,10 @@ Java framework & library support `Google Guava <https://guava.dev/>`_,``com.google.common.*``,,730,43,9,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java <https://github.com/stleary/JSON-java>`_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,10,737,239,80,,9,,,25 + Java Standard Library,``java.*``,10,738,239,80,,9,,,25 Java extensions,"``javax.*``, ``jakarta.*``",67,688,80,5,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 `Spring <https://spring.io/>`_,``org.springframework.*``,38,481,118,5,,28,14,,35 Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,125,6,22,18,,209 - Totals,,308,18953,2559,338,16,128,33,1,409 + Totals,,308,18954,2559,338,16,128,33,1,409 From 71cf94865097d55838ce8291b0b044cbfc2018c8 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 14 Mar 2024 22:23:54 -0400 Subject: [PATCH 246/731] Classes extending `SourceNode` for local and stored source models Queries such as `cs/sql-injection` cast their source to a `SourceNode` in order to describe them. For example: ```ql import semmle.code.csharp.security.dataflow.flowsources.FlowSources string getSourceType(DataFlow::Node source) { result = source.(SourceNode).getSourceType() } ``` Models as data source models are not included in `SourceNode` by default, they must be wrapped with a class extending `SourceNode`. This adds such classes, which wrap the `sourceNode(DataFlow::Node,string)` predicate and assigns a `getSourceType`. --- .../code/csharp/security/dataflow/flowsources/Local.qll | 8 ++++++++ .../code/csharp/security/dataflow/flowsources/Stored.qll | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll index 7ad656e11d33..6261d41f4049 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Local.qll @@ -40,6 +40,10 @@ abstract class EnvironmentVariableSource extends LocalFlowSource { override string getSourceType() { result = "environment variable" } } +private class ExternalEnvironmentVariableSource extends EnvironmentVariableSource { + ExternalEnvironmentVariableSource() { sourceNode(this, "environment") } +} + /** * A dataflow source that represents the access of a command line argument. */ @@ -49,6 +53,10 @@ abstract class CommandLineArgumentSource extends LocalFlowSource { override string getSourceType() { result = "command line argument" } } +private class ExternalCommandLineArgumentSource extends CommandLineArgumentSource { + ExternalCommandLineArgumentSource() { sourceNode(this, "command-line") } +} + /** * A data flow source that represents the parameters of the `Main` method of a program. */ diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll index 2d2ecd0bccba..5516da547e67 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/Stored.qll @@ -73,6 +73,10 @@ deprecated class ORMMappedProperty extends DataFlow::Node { } } +private class ExternalDatabaseInputSource extends DatabaseInputSource { + ExternalDatabaseInputSource() { sourceNode(this, "database") } +} + /** A file stream source is considered a stored flow source. */ class FileStreamStoredFlowSource extends StoredFlowSource { FileStreamStoredFlowSource() { sourceNode(this, "file") } From 00f2a6a65e76336e0cd926a1630dd0001ed3bd14 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 15 Mar 2024 10:14:45 +0100 Subject: [PATCH 247/731] Python: Update ssa-compute test expectations --- .../CONSISTENCY/TypeTrackingConsistency.expected | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected b/python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected index 81d19f3f20d7..0e829fd207f0 100644 --- a/python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected +++ b/python/ql/test/library-tests/essa/ssa-compute/CONSISTENCY/TypeTrackingConsistency.expected @@ -1,6 +1,6 @@ unreachableNode -| test2.py:16:17:16:17 | ControlFlowNode for y | Unreachable node in step of kind load bar. | -| test2.py:25:23:25:23 | ControlFlowNode for x | Unreachable node in step of kind load attribute. | +| test2.py:16:17:16:17 | ControlFlowNode for y | Unreachable node in step of kind load Attribute bar. | +| test2.py:25:23:25:23 | ControlFlowNode for x | Unreachable node in step of kind load Attribute attribute. | | test2.py:25:23:25:23 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | -| test2.py:26:17:26:17 | ControlFlowNode for y | Unreachable node in step of kind load bar. | +| test2.py:26:17:26:17 | ControlFlowNode for y | Unreachable node in step of kind load Attribute bar. | | test2.py:27:23:27:23 | ControlFlowNode for x | Unreachable node in step of kind simpleLocalSmallStep. | From 6babb2ff909d750c908ed3f2faadc8a5285fe81e Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 15 Mar 2024 10:24:33 +0100 Subject: [PATCH 248/731] Python: Accept .expected for `typetracking-summaries` --- .../experimental/dataflow/typetracking-summaries/summaries.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py b/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py index e11f451b8652..89b5e1756d5c 100644 --- a/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py +++ b/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py @@ -41,8 +41,8 @@ def explicit_identity(x): tms # $ MISSING: tracked another_tainted_list = TTS_append_to_list([], tracked) # $ tracked -atl = another_tainted_list[0] -atl # $ MISSING: tracked +atl = another_tainted_list[0] # $ tracked +atl # $ tracked # This will not work, as the call is not found by `getACallSimple`. from json import loads as json_loads From 7eb4419342e08b9f537cd75e1db2e0f5693c55fe Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Fri, 15 Mar 2024 10:24:57 +0100 Subject: [PATCH 249/731] Python: Restrict type-tracking content to only be precise At least for now :) --- .../dataflow/new/internal/TypeTrackingImpl.qll | 16 +++++++++++++++- .../dataflow/typetracking-summaries/summaries.py | 4 ++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll index 8b3e1a95ef10..ce95a6cca4e2 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -102,7 +102,21 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { class LocalSourceNode = DataFlowPublic::LocalSourceNode; - class Content = DataFlowPublic::Content; + class Content extends DataFlowPublic::Content { + Content() { + // TODO: for now, it's not 100% clear if should support non-precise content in + // type-tracking, or if it will lead to bad results. We start with only allowing + // precise content, which should always be a good improvement! It also simplifies + // the process of examining new results from non-precise content steps in the + // future, since you will _only_ have to look over the results from the new + // non-precise steps. + this instanceof DataFlowPublic::AttributeContent + or + this instanceof DataFlowPublic::DictionaryElementContent + or + this instanceof DataFlowPublic::TupleElementContent + } + } /** * A label to use for `WithContent` and `WithoutContent` steps, restricting diff --git a/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py b/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py index 89b5e1756d5c..e11f451b8652 100644 --- a/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py +++ b/python/ql/test/experimental/dataflow/typetracking-summaries/summaries.py @@ -41,8 +41,8 @@ def explicit_identity(x): tms # $ MISSING: tracked another_tainted_list = TTS_append_to_list([], tracked) # $ tracked -atl = another_tainted_list[0] # $ tracked -atl # $ tracked +atl = another_tainted_list[0] +atl # $ MISSING: tracked # This will not work, as the call is not found by `getACallSimple`. from json import loads as json_loads From e7b00a7b42976a08b2b4d0daf985a150a7341fd4 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Fri, 15 Mar 2024 10:14:47 +0100 Subject: [PATCH 250/731] Ruby: Add post-update argument nodes for string constants --- .../codeql/ruby/dataflow/internal/DataFlowPrivate.qll | 6 +++++- .../library-tests/dataflow/global/instance_variables.rb | 2 +- .../library-tests/dataflow/local/DataflowStep.expected | 9 +++++++++ .../test/library-tests/dataflow/local/TaintStep.expected | 9 +++++++++ .../frameworks/action_controller/params-flow.expected | 8 ++++++++ .../frameworks/action_controller/params_flow.rb | 2 +- 6 files changed, 33 insertions(+), 3 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index a7ef050f1c86..3b97ebcf4c82 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -322,7 +322,11 @@ private class Argument extends CfgNodes::ExprCfgNode { /** Holds if `n` is not a constant expression. */ predicate isNonConstantExpr(CfgNodes::ExprCfgNode n) { - not exists(n.getConstantValue()) and + not exists(ConstantValue cv | + cv = n.getConstantValue() and + // strings are mutable in Ruby + not cv.isString(_) + ) and not n.getExpr() instanceof ConstantAccess } diff --git a/ruby/ql/test/library-tests/dataflow/global/instance_variables.rb b/ruby/ql/test/library-tests/dataflow/global/instance_variables.rb index e1687bfed2c7..9943b3cb5792 100644 --- a/ruby/ql/test/library-tests/dataflow/global/instance_variables.rb +++ b/ruby/ql/test/library-tests/dataflow/global/instance_variables.rb @@ -70,7 +70,7 @@ def initialize x foo3.set_field(taint(22)) sink(foo3.field) # $ hasValueFlow=22 -foo4 = "hello" +foo4 = 4 foo4.other = taint(23) sink(foo4.other) # no field flow for constants diff --git a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected index 307ffc016114..1f773f7d1a45 100644 --- a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected @@ -2676,6 +2676,7 @@ | local_dataflow.rb:131:7:131:8 | "" | local_dataflow.rb:131:3:131:8 | ... = ... | | local_dataflow.rb:132:6:132:11 | [post] self | local_dataflow.rb:133:8:133:13 | self | | local_dataflow.rb:132:6:132:11 | self | local_dataflow.rb:133:8:133:13 | self | +| local_dataflow.rb:132:10:132:10 | [post] x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:10:132:10 | x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:12:148:10 | then ... | local_dataflow.rb:132:3:149:5 | if ... | | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | @@ -2686,17 +2687,20 @@ | local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:18:133:23 | self | | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | +| local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:136:7:136:12 | self | +| local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... | | local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:136:7:136:12 | [post] self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:7:136:12 | self | local_dataflow.rb:137:10:137:15 | self | +| local_dataflow.rb:136:11:136:11 | [post] x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:136:11:136:11 | x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | @@ -2705,6 +2709,7 @@ | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self | | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... | | local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... | @@ -2717,6 +2722,7 @@ | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | | local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:20:141:25 | self | | local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:20:141:25 | self | +| local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | @@ -2726,6 +2732,7 @@ | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:20:141:36 | [false] ... && ... | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | | local_dataflow.rb:141:20:141:36 | [true] ... && ... | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | +| local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... | | local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... | @@ -2740,6 +2747,7 @@ | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | +| local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | @@ -2747,5 +2755,6 @@ | local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... | | local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self | | local_dataflow.rb:147:5:147:10 | self | local_dataflow.rb:148:5:148:10 | self | +| local_dataflow.rb:147:9:147:9 | [post] x | local_dataflow.rb:148:9:148:9 | x | | local_dataflow.rb:147:9:147:9 | x | local_dataflow.rb:148:9:148:9 | x | | local_dataflow.rb:148:5:148:10 | call to use | local_dataflow.rb:132:12:148:10 | then ... | diff --git a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected index 44f879946ab7..a462aebeba9f 100644 --- a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected @@ -3167,6 +3167,7 @@ | local_dataflow.rb:131:7:131:8 | "" | local_dataflow.rb:131:3:131:8 | ... = ... | | local_dataflow.rb:132:6:132:11 | [post] self | local_dataflow.rb:133:8:133:13 | self | | local_dataflow.rb:132:6:132:11 | self | local_dataflow.rb:133:8:133:13 | self | +| local_dataflow.rb:132:10:132:10 | [post] x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:10:132:10 | x | local_dataflow.rb:133:12:133:12 | x | | local_dataflow.rb:132:12:148:10 | then ... | local_dataflow.rb:132:3:149:5 | if ... | | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | @@ -3177,17 +3178,20 @@ | local_dataflow.rb:133:8:133:13 | self | local_dataflow.rb:133:18:133:23 | self | | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | local_dataflow.rb:134:7:134:12 | self | | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | +| local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:136:7:136:12 | self | +| local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... | | local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:136:7:136:12 | [post] self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:7:136:12 | self | local_dataflow.rb:137:10:137:15 | self | +| local_dataflow.rb:136:11:136:11 | [post] x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:136:11:136:11 | x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | @@ -3196,6 +3200,7 @@ | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self | | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... | | local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... | @@ -3212,6 +3217,7 @@ | local_dataflow.rb:141:9:141:14 | call to use | local_dataflow.rb:141:8:141:14 | [false] ! ... | | local_dataflow.rb:141:9:141:14 | call to use | local_dataflow.rb:141:8:141:14 | [true] ! ... | | local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:20:141:25 | self | +| local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | @@ -3221,6 +3227,7 @@ | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | local_dataflow.rb:143:15:143:15 | x | | local_dataflow.rb:141:20:141:36 | [false] ... && ... | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | | local_dataflow.rb:141:20:141:36 | [true] ... && ... | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | +| local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... | | local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... | @@ -3237,6 +3244,7 @@ | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | +| local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | @@ -3244,5 +3252,6 @@ | local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... | | local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self | | local_dataflow.rb:147:5:147:10 | self | local_dataflow.rb:148:5:148:10 | self | +| local_dataflow.rb:147:9:147:9 | [post] x | local_dataflow.rb:148:9:148:9 | x | | local_dataflow.rb:147:9:147:9 | x | local_dataflow.rb:148:9:148:9 | x | | local_dataflow.rb:148:5:148:10 | call to use | local_dataflow.rb:132:12:148:10 | then ... | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected index 698d3b23ccb6..51eb4d1d95c3 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected @@ -116,6 +116,9 @@ edges | params_flow.rb:198:5:198:10 | call to params | params_flow.rb:198:5:198:17 | ...[...] | provenance | | | params_flow.rb:198:5:198:17 | ...[...] | params_flow.rb:198:28:198:28 | [post] a | provenance | | | params_flow.rb:198:28:198:28 | [post] a | params_flow.rb:199:10:199:10 | a | provenance | | +| params_flow.rb:204:5:204:10 | call to params | params_flow.rb:204:5:204:17 | ...[...] | provenance | | +| params_flow.rb:204:5:204:17 | ...[...] | params_flow.rb:204:28:204:28 | [post] a | provenance | | +| params_flow.rb:204:28:204:28 | [post] a | params_flow.rb:205:10:205:10 | a | provenance | | nodes | filter_flow.rb:14:5:14:8 | [post] self [@foo] | semmle.label | [post] self [@foo] | | filter_flow.rb:14:12:14:17 | call to params | semmle.label | call to params | @@ -279,6 +282,10 @@ nodes | params_flow.rb:198:5:198:17 | ...[...] | semmle.label | ...[...] | | params_flow.rb:198:28:198:28 | [post] a | semmle.label | [post] a | | params_flow.rb:199:10:199:10 | a | semmle.label | a | +| params_flow.rb:204:5:204:10 | call to params | semmle.label | call to params | +| params_flow.rb:204:5:204:17 | ...[...] | semmle.label | ...[...] | +| params_flow.rb:204:28:204:28 | [post] a | semmle.label | [post] a | +| params_flow.rb:205:10:205:10 | a | semmle.label | a | subpaths #select | filter_flow.rb:21:10:21:13 | @foo | filter_flow.rb:14:12:14:17 | call to params | filter_flow.rb:21:10:21:13 | @foo | $@ | filter_flow.rb:14:12:14:17 | call to params | call to params | @@ -338,3 +345,4 @@ subpaths | params_flow.rb:190:10:190:44 | call to headers | params_flow.rb:190:10:190:15 | call to params | params_flow.rb:190:10:190:44 | call to headers | $@ | params_flow.rb:190:10:190:15 | call to params | call to params | | params_flow.rb:194:10:194:47 | call to read | params_flow.rb:194:10:194:15 | call to params | params_flow.rb:194:10:194:47 | call to read | $@ | params_flow.rb:194:10:194:15 | call to params | call to params | | params_flow.rb:199:10:199:10 | a | params_flow.rb:198:5:198:10 | call to params | params_flow.rb:199:10:199:10 | a | $@ | params_flow.rb:198:5:198:10 | call to params | call to params | +| params_flow.rb:205:10:205:10 | a | params_flow.rb:204:5:204:10 | call to params | params_flow.rb:205:10:205:10 | a | $@ | params_flow.rb:204:5:204:10 | call to params | call to params | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb b/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb index 018d8b58af01..ece3b5515564 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb +++ b/ruby/ql/test/library-tests/frameworks/action_controller/params_flow.rb @@ -202,6 +202,6 @@ def m40(a) def m41 a = "" params[:file].read(nil,a) - sink a # $ MISSING:hasTaintFlow + sink a # $ hasTaintFlow end end \ No newline at end of file From 80649786c3c92fd5db3986ccf21201b916eb6ec1 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Fri, 15 Mar 2024 11:06:15 +0100 Subject: [PATCH 251/731] QL4QL: Remove `MissingOverride` query --- ql/ql/src/queries/style/MissingOverride.ql | 20 ---------- .../MissingOverride/MissingOverride.expected | 2 - .../MissingOverride/MissingOverride.qlref | 1 - .../queries/style/MissingOverride/Test.qll | 37 ------------------- 4 files changed, 60 deletions(-) delete mode 100644 ql/ql/src/queries/style/MissingOverride.ql delete mode 100644 ql/ql/test/queries/style/MissingOverride/MissingOverride.expected delete mode 100644 ql/ql/test/queries/style/MissingOverride/MissingOverride.qlref delete mode 100644 ql/ql/test/queries/style/MissingOverride/Test.qll diff --git a/ql/ql/src/queries/style/MissingOverride.ql b/ql/ql/src/queries/style/MissingOverride.ql deleted file mode 100644 index 833b1ba198b7..000000000000 --- a/ql/ql/src/queries/style/MissingOverride.ql +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @name Missing override annotation - * @description Predicates that override another predicate should have an `override` annotation. - * @kind problem - * @problem.severity warning - * @precision very-high - * @id ql/missing-override - * @tags maintainability - */ - -import ql - -string getQualifiedName(ClassPredicate p) { - result = p.getDeclaringType().getName() + "." + p.getName() -} - -from ClassPredicate pred, ClassPredicate sup -where pred.overrides(sup) and not pred.isOverride() -select pred, getQualifiedName(pred) + " overrides $@ but does not have an override annotation.", - sup, getQualifiedName(sup) diff --git a/ql/ql/test/queries/style/MissingOverride/MissingOverride.expected b/ql/ql/test/queries/style/MissingOverride/MissingOverride.expected deleted file mode 100644 index d64a6ed15440..000000000000 --- a/ql/ql/test/queries/style/MissingOverride/MissingOverride.expected +++ /dev/null @@ -1,2 +0,0 @@ -| Test.qll:12:13:12:16 | ClassPredicate test | Wrong.test overrides $@ but does not have an override annotation. | Test.qll:4:13:4:16 | ClassPredicate test | Super.test | -| Test.qll:18:13:18:16 | ClassPredicate test | Wrong2.test overrides $@ but does not have an override annotation. | Test.qll:4:13:4:16 | ClassPredicate test | Super.test | diff --git a/ql/ql/test/queries/style/MissingOverride/MissingOverride.qlref b/ql/ql/test/queries/style/MissingOverride/MissingOverride.qlref deleted file mode 100644 index 3a83310f4a29..000000000000 --- a/ql/ql/test/queries/style/MissingOverride/MissingOverride.qlref +++ /dev/null @@ -1 +0,0 @@ -queries/style/MissingOverride.ql \ No newline at end of file diff --git a/ql/ql/test/queries/style/MissingOverride/Test.qll b/ql/ql/test/queries/style/MissingOverride/Test.qll deleted file mode 100644 index 82d5199bf9ec..000000000000 --- a/ql/ql/test/queries/style/MissingOverride/Test.qll +++ /dev/null @@ -1,37 +0,0 @@ -import ql - -class Super extends AstNode { - predicate test(int i) { i = [1 .. 5] } -} - -class Correct extends Super { - override predicate test(int i) { i = 3 } -} - -class Wrong extends Super { - predicate test(int i) { i = 2 } -} - -class Mid extends Super { } - -class Wrong2 extends Mid { - predicate test(int i) { i = 2 } -} - -final class SuperFinal = Super; - -class Correct2 extends SuperFinal { - predicate test(int i) { i = 4 } -} - -class Correct3 extends AstNode instanceof SuperFinal { - predicate test(int i) { i = 4 } -} - -final class Super2 extends AstNode { - predicate test(int i) { i = [1 .. 5] } -} - -class Correct4 extends Super2 { - predicate test(int i) { i = 3 } -} From 8e52483bebdc1916ceda98d18ace0654346cdd35 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Thu, 14 Mar 2024 21:29:59 +0000 Subject: [PATCH 252/731] Add df-manual models in manually modeled classes --- java/ql/lib/ext/java.io.model.yml | 2 ++ java/ql/lib/ext/java.lang.model.yml | 17 +++++++++-------- java/ql/lib/ext/java.util.model.yml | 12 ++++++++++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index 3824c588662d..e8a14a13e51d 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -78,11 +78,13 @@ extensions: - ["java.io", "File", True, "getCanonicalFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "getCanonicalPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["java.io", "File", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] - ["java.io", "File", True, "getParentFile", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "toPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "File", True, "toURI", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] + - ["java.io", "File", True, "toURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] - ["java.io", "FilterOutputStream", True, "FilterOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.io", "InputStream", True, "read", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.io", "InputStream", True, "read", "(byte[])", "", "Argument[this]", "Argument[0]", "taint", "manual"] diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index fff3a90dcb3f..92f0a7a0805a 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -114,6 +114,7 @@ extensions: - ["java.lang", "String", False, "indent", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "intern", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "join", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] + - ["java.lang", "String", False, "lines", "()", "", "Argument[this]", "ReturnValue.Element", "taint", "df-generated"] - ["java.lang", "String", False, "repeat", "(int)", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "replace", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "replace", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] @@ -239,14 +240,14 @@ extensions: - ["java.lang", "Thread", "interrupt", "()", "summary", "manual"] - ["java.lang", "Thread", "sleep", "(long)", "summary", "manual"] - ["java.lang", "Thread", "start", "()", "summary", "manual"] - - ["java.lang", "Throwable", "addSuppressed", "(Throwable)", "summary", "manual"] - - ["java.lang", "Throwable", "fillInStackTrace", "()", "summary", "manual"] - - ["java.lang", "Throwable", "getStackTrace", "()", "summary", "manual"] - - ["java.lang", "Throwable", "getSuppressed", "()", "summary", "manual"] - - ["java.lang", "Throwable", "printStackTrace", "()", "summary", "manual"] - - ["java.lang", "Throwable", "printStackTrace", "(PrintStream)", "summary", "manual"] - - ["java.lang", "Throwable", "printStackTrace", "(PrintWriter)", "summary", "manual"] - - ["java.lang", "Throwable", "setStackTrace", "(StackTraceElement[])", "summary", "manual"] + - ["java.lang", "Throwable", "addSuppressed", "(Throwable)", "summary", "df-manual"] + - ["java.lang", "Throwable", "fillInStackTrace", "()", "summary", "df-manual"] + - ["java.lang", "Throwable", "getStackTrace", "()", "summary", "df-manual"] + - ["java.lang", "Throwable", "getSuppressed", "()", "summary", "df-manual"] + - ["java.lang", "Throwable", "printStackTrace", "()", "summary", "df-manual"] + - ["java.lang", "Throwable", "printStackTrace", "(PrintStream)", "summary", "df-manual"] + - ["java.lang", "Throwable", "printStackTrace", "(PrintWriter)", "summary", "df-manual"] + - ["java.lang", "Throwable", "setStackTrace", "(StackTraceElement[])", "summary", "df-manual"] # The below APIs have numeric flow and are currently being stored as neutral models. # These may be changed to summary models with kinds "value-numeric" and "taint-numeric" (or similar) in the future. - ["java.lang", "Double", "doubleToLongBits", "(double)", "summary", "manual"] # taint-numeric diff --git a/java/ql/lib/ext/java.util.model.yml b/java/ql/lib/ext/java.util.model.yml index 8f621df591e2..be4665d4cd7e 100644 --- a/java/ql/lib/ext/java.util.model.yml +++ b/java/ql/lib/ext/java.util.model.yml @@ -58,6 +58,7 @@ extensions: - ["java.util", "Collection", True, "toArray", "", "", "Argument[this].Element", "Argument[0].ArrayElement", "value", "manual"] - ["java.util", "Collection", True, "toArray", "", "", "Argument[this].Element", "ReturnValue.ArrayElement", "value", "manual"] - ["java.util", "Collections", False, "addAll", "(Collection,Object[])", "", "Argument[1].ArrayElement", "Argument[0].Element", "value", "manual"] + - ["java.util", "Collections", False, "asLifoQueue", "(Deque)", "", "Argument[0].Element", "ReturnValue.Element", "value", "df-manual"] - ["java.util", "Collections", False, "checkedCollection", "(Collection,Class)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["java.util", "Collections", False, "checkedList", "(List,Class)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["java.util", "Collections", False, "checkedMap", "(Map,Class,Class)", "", "Argument[0].MapKey", "ReturnValue.MapKey", "value", "manual"] @@ -65,6 +66,7 @@ extensions: - ["java.util", "Collections", False, "checkedNavigableMap", "(NavigableMap,Class,Class)", "", "Argument[0].MapKey", "ReturnValue.MapKey", "value", "manual"] - ["java.util", "Collections", False, "checkedNavigableMap", "(NavigableMap,Class,Class)", "", "Argument[0].MapValue", "ReturnValue.MapValue", "value", "manual"] - ["java.util", "Collections", False, "checkedNavigableSet", "(NavigableSet,Class)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] + - ["java.util", "Collections", False, "checkedQueue", "(Queue,Class)", "", "Argument[0].Element", "ReturnValue.Element", "value", "df-manual"] - ["java.util", "Collections", False, "checkedSet", "(Set,Class)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] - ["java.util", "Collections", False, "checkedSortedMap", "(SortedMap,Class,Class)", "", "Argument[0].MapKey", "ReturnValue.MapKey", "value", "manual"] - ["java.util", "Collections", False, "checkedSortedMap", "(SortedMap,Class,Class)", "", "Argument[0].MapValue", "ReturnValue.MapValue", "value", "manual"] @@ -309,6 +311,9 @@ extensions: - ["java.util", "Queue", True, "poll", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["java.util", "Queue", True, "remove", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["java.util", "ResourceBundle", True, "getString", "(String)", "", "Argument[this].MapValue", "ReturnValue", "value", "manual"] + - ["java.util", "Scanner", True, "findAll", "(Pattern)", "", "Argument[this]", "ReturnValue.Element", "taint", "df-manual"] + - ["java.util", "Scanner", True, "findAll", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] + - ["java.util", "Scanner", True, "match", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] - ["java.util", "Scanner", True, "Scanner", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.util", "Scanner", True, "findInLine", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.util", "Scanner", True, "findWithinHorizon", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] @@ -428,6 +433,8 @@ extensions: - ["java.util", "Collections", "emptyList", "()", "summary", "manual"] - ["java.util", "Collections", "emptyMap", "()", "summary", "manual"] - ["java.util", "Collections", "emptySet", "()", "summary", "manual"] + - ["java.util", "Collections", "newSetFromMap", "", "summary", "df-manual"] + - ["java.util", "Collections", "reverseOrder", "", "summary", "df-manual"] - ["java.util", "Collections", "sort", "", "summary", "manual"] - ["java.util", "Enumeration", "hasMoreElements", "()", "summary", "manual"] - ["java.util", "EnumSet", "allOf", "(Class)", "summary", "df-manual"] @@ -520,6 +527,11 @@ extensions: - ["java.util", "Optional", "isPresent", "()", "summary", "manual"] - ["java.util", "Random", "nextInt", "(int)", "summary", "manual"] - ["java.util", "ResourceBundle", "getBundle", "", "summary", "df-manual"] + - ["java.util", "Scanner", "delimiter", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNext", "(Pattern)", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNext", "(String)", "summary", "df-generated"] + - ["java.util", "Scanner", "ioException", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "locale", "()", "summary", "df-generated"] - ["java.util", "Set", "contains", "(Object)", "summary", "manual"] - ["java.util", "Set", "isEmpty", "()", "summary", "manual"] - ["java.util", "Set", "size", "()", "summary", "manual"] From d3e0a90ae512fafa8dec022db9651ea8f84cbb07 Mon Sep 17 00:00:00 2001 From: Max Schaefer <max-schaefer@github.com> Date: Fri, 15 Mar 2024 11:19:32 +0000 Subject: [PATCH 253/731] Go: Mention raw string iterals in QHelp for `go/incomplete-hostname-regexp`. --- .../CWE-020/IncompleteHostnameRegexp.qhelp | 4 ++++ .../CWE-020/IncompleteHostnameRegexpGood2.go | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 go/ql/src/Security/CWE-020/IncompleteHostnameRegexpGood2.go diff --git a/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.qhelp b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.qhelp index cf4655dbae51..21368fca81be 100644 --- a/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.qhelp +++ b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexp.qhelp @@ -41,6 +41,10 @@ domain such as <code>wwwXexample.com</code>. Address this vulnerability by escaping <code>.</code> appropriately: </p> <sample src="IncompleteHostnameRegexpGood.go"/> +<p> +You may also want to consider using raw string literals to avoid having to escape backslashes: +</p> +<sample src="IncompleteHostnameRegexpGood2.go"/> </example> <references> diff --git a/go/ql/src/Security/CWE-020/IncompleteHostnameRegexpGood2.go b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexpGood2.go new file mode 100644 index 000000000000..7c5df3f67426 --- /dev/null +++ b/go/ql/src/Security/CWE-020/IncompleteHostnameRegexpGood2.go @@ -0,0 +1,16 @@ +package main + +import ( + "errors" + "net/http" + "regexp" +) + +func checkRedirectGood(req *http.Request, via []*http.Request) error { + // GOOD: the host of `req.URL` must be `example.com`, `www.example.com` or `beta.example.com` + re := `^((www|beta)\.)?example\.com/` + if matched, _ := regexp.MatchString(re, req.URL.Host); matched { + return nil + } + return errors.New("Invalid redirect") +} From a51fe4a00e51fe166fae564971de2414f2a61100 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 12:10:48 +0000 Subject: [PATCH 254/731] C++: Make the vector and iterator classes in 'ir.cpp' more realistic. This matches the one we use for dataflow tests. --- .../library-tests/ir/ir/PrintAST.expected | 16283 ++++++++-------- .../library-tests/ir/ir/aliased_ir.expected | 14449 +++++++------- cpp/ql/test/library-tests/ir/ir/ir.cpp | 105 +- .../ir/ir/operand_locations.expected | 12886 ++++++------ .../ir/ir/raw_consistency.expected | 2 +- .../test/library-tests/ir/ir/raw_ir.expected | 12925 ++++++------ 6 files changed, 28566 insertions(+), 28084 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 624954838d6e..3b369651304b 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -9750,2301 +9750,2419 @@ ir.cpp: # 1054| getRightOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1054| Type = [IntType] int # 1054| ValueCategory = prvalue(load) -# 1059| [CopyAssignmentOperator] vector<ClassWithDestructor>& vector<ClassWithDestructor>::operator=(vector<ClassWithDestructor> const&) -# 1059| <params>: +# 1078| [CopyAssignmentOperator] std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>& std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>::operator=(std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&> const&) +# 1078| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const vector<ClassWithDestructor> & -# 1059| [CopyAssignmentOperator] vector<String>& vector<String>::operator=(vector<String> const&) -# 1059| <params>: +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 1078| [CopyAssignmentOperator] std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>& std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>::operator=(std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&> const&) +# 1078| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const vector<String> & -# 1059| [CopyAssignmentOperator] vector<int>& vector<int>::operator=(vector<int> const&) -# 1059| <params>: +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +# 1078| [CopyAssignmentOperator] std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>& std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator=(std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&> const&) +# 1078| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const vector<int> & -# 1059| [CopyConstructor] void vector<ClassWithDestructor>::vector(vector<ClassWithDestructor> const&) -# 1059| <params>: +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +# 1081| [Constructor] void std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::iterator() +# 1081| <params>: +# 1082| [Constructor] void std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::iterator(std::iterator<Category, type, std::ptrdiff_t, type*, type&> const&) +# 1082| <params>: +# 1082| getParameter(0): [Parameter] other +# 1082| Type = [LValueReferenceType] const iterator<Category, type, ptrdiff_t, type *, type &> & +# 1082| [CopyConstructor] void std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>::iterator(std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&> const&) +# 1082| <params>: +# 1082| getParameter(0): [Parameter] other +# 1082| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 1082| [CopyConstructor] void std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>::iterator(std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&> const&) +# 1082| <params>: +# 1082| getParameter(0): [Parameter] other +# 1082| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +# 1082| [CopyConstructor] void std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::iterator(std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&> const&) +# 1082| <params>: +# 1082| getParameter(0): [Parameter] other +# 1082| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +# 1084| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type>& std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator++() +# 1084| <params>: +# 1084| [MemberFunction] std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>& std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>::operator++() +# 1084| <params>: +# 1084| [MemberFunction] std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>& std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>::operator++() +# 1084| <params>: +# 1084| [MemberFunction] std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>& std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator++() +# 1084| <params>: +# 1085| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type> std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator++(int) +# 1085| <params>: +# 1085| getParameter(0): [Parameter] (unnamed parameter 0) +# 1085| Type = [IntType] int +# 1086| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type>& std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator--() +# 1086| <params>: +# 1087| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type> std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator--(int) +# 1087| <params>: +# 1087| getParameter(0): [Parameter] (unnamed parameter 0) +# 1087| Type = [IntType] int +# 1088| [ConstMemberFunction] bool std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator==(std::iterator<Category, value_type, difference_type, pointer_type, reference_type>) const +# 1088| <params>: +# 1088| getParameter(0): [Parameter] other +# 1088| Type = [TemplateClass] iterator<Category, value_type, difference_type, pointer_type, reference_type> +# 1089| [ConstMemberFunction] bool std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator!=(std::iterator<Category, value_type, difference_type, pointer_type, reference_type>) const +# 1089| <params>: +# 1089| getParameter(0): [Parameter] other +# 1089| Type = [TemplateClass] iterator<Category, value_type, difference_type, pointer_type, reference_type> +# 1089| [ConstMemberFunction] bool std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>::operator!=(std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>) const +# 1089| <params>: +# 1089| getParameter(0): [Parameter] other +# 1089| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +# 1089| [ConstMemberFunction] bool std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>::operator!=(std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>) const +# 1089| <params>: +# 1089| getParameter(0): [Parameter] other +# 1089| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +# 1089| [ConstMemberFunction] bool std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator!=(std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>) const +# 1089| <params>: +# 1089| getParameter(0): [Parameter] other +# 1089| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +# 1090| [ConstMemberFunction] ClassWithDestructor& std::iterator<std::random_access_iterator_tag, ClassWithDestructor, std::ptrdiff_t, ClassWithDestructor*, ClassWithDestructor&>::operator*() const +# 1090| <params>: +# 1090| [ConstMemberFunction] String& std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>::operator*() const +# 1090| <params>: +# 1090| [ConstMemberFunction] int& std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator*() const +# 1090| <params>: +# 1090| [ConstMemberFunction] reference_type std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator*() const +# 1090| <params>: +# 1091| [ConstMemberFunction] pointer_type std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator->() const +# 1091| <params>: +# 1092| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type> std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator+(int) +# 1092| <params>: +# 1092| getParameter(0): [Parameter] (unnamed parameter 0) +# 1092| Type = [IntType] int +# 1093| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type> std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator-(int) +# 1093| <params>: +# 1093| getParameter(0): [Parameter] (unnamed parameter 0) +# 1093| Type = [IntType] int +# 1094| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type>& std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator+=(int) +# 1094| <params>: +# 1094| getParameter(0): [Parameter] (unnamed parameter 0) +# 1094| Type = [IntType] int +# 1095| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type>& std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator-=(int) +# 1095| <params>: +# 1095| getParameter(0): [Parameter] (unnamed parameter 0) +# 1095| Type = [IntType] int +# 1096| [MemberFunction] int std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator-(std::iterator<Category, value_type, difference_type, pointer_type, reference_type>) +# 1096| <params>: +# 1096| getParameter(0): [Parameter] (unnamed parameter 0) +# 1096| Type = [TemplateClass] iterator<Category, value_type, difference_type, pointer_type, reference_type> +# 1097| [MemberFunction] reference_type std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator[](int) +# 1097| <params>: +# 1097| getParameter(0): [Parameter] (unnamed parameter 0) +# 1097| Type = [IntType] int +# 1100| [CopyAssignmentOperator] std::input_iterator_tag& std::input_iterator_tag::operator=(std::input_iterator_tag const&) +# 1100| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const vector<ClassWithDestructor> & -# 1059| [CopyConstructor] void vector<String>::vector(vector<String> const&) -# 1059| <params>: +#-----| Type = [LValueReferenceType] const input_iterator_tag & +# 1100| [MoveAssignmentOperator] std::input_iterator_tag& std::input_iterator_tag::operator=(std::input_iterator_tag&&) +# 1100| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const vector<String> & -# 1059| [CopyConstructor] void vector<int>::vector(vector<int> const&) -# 1059| <params>: +#-----| Type = [RValueReferenceType] input_iterator_tag && +# 1101| [CopyAssignmentOperator] std::forward_iterator_tag& std::forward_iterator_tag::operator=(std::forward_iterator_tag const&) +# 1101| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const vector<int> & -# 1060| [CopyAssignmentOperator] vector<ClassWithDestructor>::iterator& vector<ClassWithDestructor>::iterator::operator=(vector<ClassWithDestructor>::iterator const public&) -# 1060| <params>: +#-----| Type = [LValueReferenceType] const forward_iterator_tag & +# 1101| [MoveAssignmentOperator] std::forward_iterator_tag& std::forward_iterator_tag::operator=(std::forward_iterator_tag&&) +# 1101| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] forward_iterator_tag && +# 1101| [Constructor] void std::forward_iterator_tag::forward_iterator_tag() +# 1101| <params>: +# 1102| [CopyAssignmentOperator] std::bidirectional_iterator_tag& std::bidirectional_iterator_tag::operator=(std::bidirectional_iterator_tag const&) +# 1102| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const bidirectional_iterator_tag & +# 1102| [MoveAssignmentOperator] std::bidirectional_iterator_tag& std::bidirectional_iterator_tag::operator=(std::bidirectional_iterator_tag&&) +# 1102| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] bidirectional_iterator_tag && +# 1102| [Constructor] void std::bidirectional_iterator_tag::bidirectional_iterator_tag() +# 1102| <params>: +# 1103| [CopyAssignmentOperator] std::random_access_iterator_tag& std::random_access_iterator_tag::operator=(std::random_access_iterator_tag const&) +# 1103| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const random_access_iterator_tag & +# 1103| [MoveAssignmentOperator] std::random_access_iterator_tag& std::random_access_iterator_tag::operator=(std::random_access_iterator_tag&&) +# 1103| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] random_access_iterator_tag && +# 1103| [Constructor] void std::random_access_iterator_tag::random_access_iterator_tag() +# 1103| <params>: +# 1105| [CopyAssignmentOperator] std::output_iterator_tag& std::output_iterator_tag::operator=(std::output_iterator_tag const&) +# 1105| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const output_iterator_tag & +# 1105| [MoveAssignmentOperator] std::output_iterator_tag& std::output_iterator_tag::operator=(std::output_iterator_tag&&) +# 1105| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] output_iterator_tag && +# 1108| [CopyAssignmentOperator] std::vector<ClassWithDestructor>& std::vector<ClassWithDestructor>::operator=(std::vector<ClassWithDestructor> const&) +# 1108| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const iterator & -# 1060| [MoveAssignmentOperator] vector<ClassWithDestructor>::iterator& vector<ClassWithDestructor>::iterator::operator=(vector<ClassWithDestructor>::iterator&&) -# 1060| <params>: +#-----| Type = [LValueReferenceType] const vector<ClassWithDestructor> & +# 1108| [CopyAssignmentOperator] std::vector<String>& std::vector<String>::operator=(std::vector<String> const&) +# 1108| <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>: +#-----| Type = [LValueReferenceType] const vector<String> & +# 1108| [CopyAssignmentOperator] std::vector<int>& std::vector<int>::operator=(std::vector<int> const&) +# 1108| <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>: +#-----| Type = [LValueReferenceType] const vector<int> & +# 1108| [CopyConstructor] void std::vector<ClassWithDestructor>::vector(std::vector<ClassWithDestructor> const&) +# 1108| <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>: +#-----| Type = [LValueReferenceType] const vector<ClassWithDestructor> & +# 1108| [CopyConstructor] void std::vector<String>::vector(std::vector<String> const&) +# 1108| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const iterator & -# 1060| [MoveAssignmentOperator] vector<int>::iterator& vector<int>::iterator::operator=(vector<int>::iterator&&) -# 1060| <params>: +#-----| Type = [LValueReferenceType] const vector<String> & +# 1108| [CopyConstructor] void std::vector<int>::vector(std::vector<int> const&) +# 1108| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| 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 -# 1063| <params>: -# 1065| [ConstMemberFunction] bool vector<ClassWithDestructor>::iterator::operator!=(vector<ClassWithDestructor>::iterator) const -# 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 -# 1065| Type = [NestedClass,TemplateClass] iterator -# 1065| [ConstMemberFunction] bool vector<int>::iterator::operator!=(vector<int>::iterator) const -# 1065| <params>: -# 1065| getParameter(0): [Parameter] right -# 1065| Type = [NestedStruct] iterator -# 1068| [Constructor] void vector<ClassWithDestructor>::vector(ClassWithDestructor) -# 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) -# 1068| Type = [TemplateParameter] T -# 1068| [Constructor] void vector<int>::vector(int) -# 1068| <params>: -# 1068| getParameter(0): [Parameter] (unnamed parameter 0) -# 1068| Type = [IntType] int -# 1069| [Destructor] void vector<ClassWithDestructor>::~vector() -# 1069| <params>: -# 1069| [Destructor] void vector<T>::~vector() -# 1069| <params>: -# 1069| [Destructor] void vector<int>::~vector() -# 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 -# 1071| <params>: -# 1075| [Operator,TemplateFunction,TopLevelFunction] bool operator==<T>(iterator, iterator) -# 1075| <params>: -# 1075| getParameter(0): [Parameter] left -# 1075| Type = [TemplateParameter] iterator -# 1075| getParameter(1): [Parameter] right -# 1075| Type = [TemplateParameter] iterator -# 1077| [Operator,TemplateFunction,TopLevelFunction] bool operator!=<T>(iterator, iterator) -# 1077| <params>: -# 1077| getParameter(0): [Parameter] left -# 1077| Type = [TemplateParameter] iterator -# 1077| getParameter(1): [Parameter] right -# 1077| Type = [TemplateParameter] iterator -# 1079| [TopLevelFunction] void RangeBasedFor(vector<int> const&) -# 1079| <params>: -# 1079| getParameter(0): [Parameter] v -# 1079| Type = [LValueReferenceType] const vector<int> & -# 1079| getEntryPoint(): [BlockStmt] { ... } -# 1080| getStmt(0): [RangeBasedForStmt] for(...:...) ... -# 1080| getChild(1): [DeclStmt] declaration -# 1080| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 1080| Type = [LValueReferenceType] const vector<int> & +#-----| Type = [LValueReferenceType] const vector<int> & +# 1109| [Constructor] void std::vector<ClassWithDestructor>::vector(ClassWithDestructor) +# 1109| <params>: +# 1109| getParameter(0): [Parameter] (unnamed parameter 0) +# 1109| Type = [Class] ClassWithDestructor +# 1109| [Constructor] void std::vector<String>::vector(String) +# 1109| <params>: +# 1109| getParameter(0): [Parameter] (unnamed parameter 0) +# 1109| Type = [Struct] String +# 1109| [Constructor] void std::vector<T>::vector(T) +# 1109| <params>: +# 1109| getParameter(0): [Parameter] (unnamed parameter 0) +# 1109| Type = [TemplateParameter] T +# 1109| [Constructor] void std::vector<int>::vector(int) +# 1109| <params>: +# 1109| getParameter(0): [Parameter] (unnamed parameter 0) +# 1109| Type = [IntType] int +# 1110| [Destructor] void std::vector<ClassWithDestructor>::~vector() +# 1110| <params>: +# 1110| [Destructor] void std::vector<T>::~vector() +# 1110| <params>: +# 1110| [Destructor] void std::vector<int>::~vector() +# 1110| <params>: +# 1115| [ConstMemberFunction] std::vector<ClassWithDestructor>::iterator std::vector<ClassWithDestructor>::begin() const +# 1115| <params>: +# 1115| [ConstMemberFunction] std::vector<String>::iterator std::vector<String>::begin() const +# 1115| <params>: +# 1115| [ConstMemberFunction] std::vector<T>::iterator std::vector<T>::begin() const +# 1115| <params>: +# 1115| [ConstMemberFunction] std::vector<int>::iterator std::vector<int>::begin() const +# 1115| <params>: +# 1116| [ConstMemberFunction] std::vector<ClassWithDestructor>::iterator std::vector<ClassWithDestructor>::end() const +# 1116| <params>: +# 1116| [ConstMemberFunction] std::vector<String>::iterator std::vector<String>::end() const +# 1116| <params>: +# 1116| [ConstMemberFunction] std::vector<T>::iterator std::vector<T>::end() const +# 1116| <params>: +# 1116| [ConstMemberFunction] std::vector<int>::iterator std::vector<int>::end() const +# 1116| <params>: +# 1120| [Operator,TemplateFunction,TopLevelFunction] bool std::operator==<T>(iterator, iterator) +# 1120| <params>: +# 1120| getParameter(0): [Parameter] left +# 1120| Type = [TemplateParameter] iterator +# 1120| getParameter(1): [Parameter] right +# 1120| Type = [TemplateParameter] iterator +# 1122| [Operator,TemplateFunction,TopLevelFunction] bool std::operator!=<T>(iterator, iterator) +# 1122| <params>: +# 1122| getParameter(0): [Parameter] left +# 1122| Type = [TemplateParameter] iterator +# 1122| getParameter(1): [Parameter] right +# 1122| Type = [TemplateParameter] iterator +# 1126| [TopLevelFunction] void RangeBasedFor(std::vector<int> const&) +# 1126| <params>: +# 1126| getParameter(0): [Parameter] v +# 1126| Type = [LValueReferenceType] const vector<int> & +# 1126| getEntryPoint(): [BlockStmt] { ... } +# 1127| getStmt(0): [RangeBasedForStmt] for(...:...) ... +# 1127| getChild(1): [DeclStmt] declaration +# 1127| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 1127| Type = [LValueReferenceType] const vector<int> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 1080| getExpr(): [VariableAccess] v -# 1080| Type = [LValueReferenceType] const vector<int> & -# 1080| ValueCategory = prvalue(load) -# 1080| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1080| Type = [LValueReferenceType] const vector<int> & -# 1080| ValueCategory = prvalue -# 1080| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1080| Type = [SpecifiedType] const vector<int> -# 1080| ValueCategory = lvalue -# 1080| getBeginEndDeclaration(): [DeclStmt] declaration -# 1080| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 1080| Type = [NestedStruct] iterator +# 1127| getExpr(): [VariableAccess] v +# 1127| Type = [LValueReferenceType] const vector<int> & +# 1127| ValueCategory = prvalue(load) +# 1127| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1127| Type = [LValueReferenceType] const vector<int> & +# 1127| ValueCategory = prvalue +# 1127| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1127| Type = [SpecifiedType] const vector<int> +# 1127| ValueCategory = lvalue +# 1127| getBeginEndDeclaration(): [DeclStmt] declaration +# 1127| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 1080| getExpr(): [FunctionCall] call to begin -# 1080| Type = [NestedStruct] iterator -# 1080| ValueCategory = prvalue -# 1080| getQualifier(): [VariableAccess] (__range) -# 1080| Type = [LValueReferenceType] const vector<int> & -# 1080| ValueCategory = prvalue(load) +# 1127| getExpr(): [FunctionCall] call to begin +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1127| ValueCategory = prvalue +# 1127| getQualifier(): [VariableAccess] (__range) +# 1127| Type = [LValueReferenceType] const vector<int> & +# 1127| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const vector<int> #-----| ValueCategory = lvalue -# 1080| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 1080| Type = [NestedStruct] iterator +# 1127| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 1080| getExpr(): [FunctionCall] call to end -# 1080| Type = [NestedStruct] iterator -# 1080| ValueCategory = prvalue -# 1080| getQualifier(): [VariableAccess] (__range) -# 1080| Type = [LValueReferenceType] const vector<int> & -# 1080| ValueCategory = prvalue(load) +# 1127| getExpr(): [FunctionCall] call to end +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1127| ValueCategory = prvalue +# 1127| getQualifier(): [VariableAccess] (__range) +# 1127| Type = [LValueReferenceType] const vector<int> & +# 1127| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const vector<int> #-----| ValueCategory = lvalue -# 1080| getCondition(): [FunctionCall] call to operator!= -# 1080| Type = [BoolType] bool -# 1080| ValueCategory = prvalue -# 1080| getQualifier(): [VariableAccess] (__begin) -# 1080| Type = [NestedStruct] iterator -# 1080| ValueCategory = lvalue -# 1080| getArgument(0): [VariableAccess] (__end) -# 1080| Type = [NestedStruct] iterator -# 1080| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 1127| getCondition(): [FunctionCall] call to operator!= +# 1127| Type = [BoolType] bool +# 1127| ValueCategory = prvalue +# 1127| getQualifier(): [VariableAccess] (__begin) +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1127| ValueCategory = lvalue +# 1127| getArgument(0): [ConstructorCall] call to iterator +# 1127| Type = [VoidType] void +# 1127| ValueCategory = prvalue +# 1127| getArgument(0): [VariableAccess] (__end) +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1127| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 1080| getUpdate(): [FunctionCall] call to operator++ -# 1080| Type = [LValueReferenceType] iterator & -# 1080| ValueCategory = prvalue -# 1080| getQualifier(): [VariableAccess] (__begin) -# 1080| Type = [NestedStruct] iterator -# 1080| ValueCategory = lvalue -# 1080| getChild(5): [DeclStmt] declaration -# 1080| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e -# 1080| Type = [IntType] int -# 1080| getVariable().getInitializer(): [Initializer] initializer for e -# 1080| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 1080| Type = [LValueReferenceType] int & -# 1080| ValueCategory = prvalue -# 1080| getQualifier(): [VariableAccess] (__begin) -# 1080| Type = [NestedStruct] iterator -# 1080| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 1127| getUpdate(): [FunctionCall] call to operator++ +# 1127| Type = [LValueReferenceType] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +# 1127| ValueCategory = prvalue +# 1127| getQualifier(): [VariableAccess] (__begin) +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1127| ValueCategory = lvalue +# 1127| getChild(5): [DeclStmt] declaration +# 1127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e +# 1127| Type = [IntType] int +# 1127| getVariable().getInitializer(): [Initializer] initializer for e +# 1127| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 1127| Type = [LValueReferenceType] int & +# 1127| ValueCategory = prvalue +# 1127| getQualifier(): [VariableAccess] (__begin) +# 1127| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1127| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 1080| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1080| Type = [IntType] int -# 1080| ValueCategory = prvalue(load) -# 1080| getStmt(): [BlockStmt] { ... } -# 1081| getStmt(0): [IfStmt] if (...) ... -# 1081| getCondition(): [GTExpr] ... > ... -# 1081| Type = [BoolType] bool -# 1081| ValueCategory = prvalue -# 1081| getGreaterOperand(): [VariableAccess] e -# 1081| Type = [IntType] int -# 1081| ValueCategory = prvalue(load) -# 1081| getLesserOperand(): [Literal] 0 -# 1081| Type = [IntType] int -# 1081| Value = [Literal] 0 -# 1081| ValueCategory = prvalue -# 1081| getThen(): [BlockStmt] { ... } -# 1082| getStmt(0): [ContinueStmt] continue; -# 1080| getStmt(1): [LabelStmt] label ...: -# 1080| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1080| Type = [NestedStruct] iterator -# 1080| ValueCategory = lvalue -# 1086| getStmt(1): [RangeBasedForStmt] for(...:...) ... -# 1086| getChild(1): [DeclStmt] declaration -# 1086| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 1086| Type = [LValueReferenceType] const vector<int> & +# 1127| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1127| Type = [IntType] int +# 1127| ValueCategory = prvalue(load) +# 1127| getStmt(): [BlockStmt] { ... } +# 1128| getStmt(0): [IfStmt] if (...) ... +# 1128| getCondition(): [GTExpr] ... > ... +# 1128| Type = [BoolType] bool +# 1128| ValueCategory = prvalue +# 1128| getGreaterOperand(): [VariableAccess] e +# 1128| Type = [IntType] int +# 1128| ValueCategory = prvalue(load) +# 1128| getLesserOperand(): [Literal] 0 +# 1128| Type = [IntType] int +# 1128| Value = [Literal] 0 +# 1128| ValueCategory = prvalue +# 1128| getThen(): [BlockStmt] { ... } +# 1129| getStmt(0): [ContinueStmt] continue; +# 1127| getStmt(1): [LabelStmt] label ...: +# 1127| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1127| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +# 1127| ValueCategory = lvalue +# 1133| getStmt(1): [RangeBasedForStmt] for(...:...) ... +# 1133| getChild(1): [DeclStmt] declaration +# 1133| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 1133| Type = [LValueReferenceType] const vector<int> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 1086| getExpr(): [VariableAccess] v -# 1086| Type = [LValueReferenceType] const vector<int> & -# 1086| ValueCategory = prvalue(load) -# 1086| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1086| Type = [LValueReferenceType] const vector<int> & -# 1086| ValueCategory = prvalue -# 1086| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1086| Type = [SpecifiedType] const vector<int> -# 1086| ValueCategory = lvalue -# 1086| getBeginEndDeclaration(): [DeclStmt] declaration -# 1086| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 1086| Type = [NestedStruct] iterator +# 1133| getExpr(): [VariableAccess] v +# 1133| Type = [LValueReferenceType] const vector<int> & +# 1133| ValueCategory = prvalue(load) +# 1133| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1133| Type = [LValueReferenceType] const vector<int> & +# 1133| ValueCategory = prvalue +# 1133| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1133| Type = [SpecifiedType] const vector<int> +# 1133| ValueCategory = lvalue +# 1133| getBeginEndDeclaration(): [DeclStmt] declaration +# 1133| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 1086| getExpr(): [FunctionCall] call to begin -# 1086| Type = [NestedStruct] iterator -# 1086| ValueCategory = prvalue -# 1086| getQualifier(): [VariableAccess] (__range) -# 1086| Type = [LValueReferenceType] const vector<int> & -# 1086| ValueCategory = prvalue(load) +# 1133| getExpr(): [FunctionCall] call to begin +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1133| ValueCategory = prvalue +# 1133| getQualifier(): [VariableAccess] (__range) +# 1133| Type = [LValueReferenceType] const vector<int> & +# 1133| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const vector<int> #-----| ValueCategory = lvalue -# 1086| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 1086| Type = [NestedStruct] iterator +# 1133| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 1086| getExpr(): [FunctionCall] call to end -# 1086| Type = [NestedStruct] iterator -# 1086| ValueCategory = prvalue -# 1086| getQualifier(): [VariableAccess] (__range) -# 1086| Type = [LValueReferenceType] const vector<int> & -# 1086| ValueCategory = prvalue(load) +# 1133| getExpr(): [FunctionCall] call to end +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1133| ValueCategory = prvalue +# 1133| getQualifier(): [VariableAccess] (__range) +# 1133| Type = [LValueReferenceType] const vector<int> & +# 1133| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const vector<int> #-----| ValueCategory = lvalue -# 1086| getCondition(): [FunctionCall] call to operator!= -# 1086| Type = [BoolType] bool -# 1086| ValueCategory = prvalue -# 1086| getQualifier(): [VariableAccess] (__begin) -# 1086| Type = [NestedStruct] iterator -# 1086| ValueCategory = lvalue -# 1086| getArgument(0): [VariableAccess] (__end) -# 1086| Type = [NestedStruct] iterator -# 1086| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 1133| getCondition(): [FunctionCall] call to operator!= +# 1133| Type = [BoolType] bool +# 1133| ValueCategory = prvalue +# 1133| getQualifier(): [VariableAccess] (__begin) +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1133| ValueCategory = lvalue +# 1133| getArgument(0): [ConstructorCall] call to iterator +# 1133| Type = [VoidType] void +# 1133| ValueCategory = prvalue +# 1133| getArgument(0): [VariableAccess] (__end) +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1133| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 1086| getUpdate(): [FunctionCall] call to operator++ -# 1086| Type = [LValueReferenceType] iterator & -# 1086| ValueCategory = prvalue -# 1086| getQualifier(): [VariableAccess] (__begin) -# 1086| Type = [NestedStruct] iterator -# 1086| ValueCategory = lvalue -# 1086| getChild(5): [DeclStmt] declaration -# 1086| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e -# 1086| Type = [LValueReferenceType] const int & -# 1086| getVariable().getInitializer(): [Initializer] initializer for e -# 1086| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 1086| Type = [LValueReferenceType] int & -# 1086| ValueCategory = prvalue -# 1086| getQualifier(): [VariableAccess] (__begin) -# 1086| Type = [NestedStruct] iterator -# 1086| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +#-----| ValueCategory = lvalue +# 1133| getUpdate(): [FunctionCall] call to operator++ +# 1133| Type = [LValueReferenceType] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +# 1133| ValueCategory = prvalue +# 1133| getQualifier(): [VariableAccess] (__begin) +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1133| ValueCategory = lvalue +# 1133| getChild(5): [DeclStmt] declaration +# 1133| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e +# 1133| Type = [LValueReferenceType] const int & +# 1133| getVariable().getInitializer(): [Initializer] initializer for e +# 1133| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 1133| Type = [LValueReferenceType] int & +# 1133| ValueCategory = prvalue +# 1133| getQualifier(): [VariableAccess] (__begin) +# 1133| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 1133| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 1086| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1086| Type = [LValueReferenceType] const int & -# 1086| ValueCategory = prvalue -# 1086| getExpr(): [CStyleCast] (const int)... -# 1086| Conversion = [GlvalueConversion] glvalue conversion -# 1086| Type = [SpecifiedType] const int -# 1086| ValueCategory = lvalue -# 1086| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1086| Type = [IntType] int -# 1086| ValueCategory = lvalue -# 1086| getStmt(): [BlockStmt] { ... } -# 1087| getStmt(0): [IfStmt] if (...) ... -# 1087| getCondition(): [LTExpr] ... < ... -# 1087| Type = [BoolType] bool -# 1087| ValueCategory = prvalue -# 1087| getLesserOperand(): [VariableAccess] e -# 1087| Type = [LValueReferenceType] const int & -# 1087| ValueCategory = prvalue(load) -# 1087| getGreaterOperand(): [Literal] 5 -# 1087| Type = [IntType] int -# 1087| Value = [Literal] 5 -# 1087| ValueCategory = prvalue -# 1087| getLesserOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1087| Type = [IntType] int -# 1087| ValueCategory = prvalue(load) -# 1087| getThen(): [BlockStmt] { ... } -# 1088| getStmt(0): [BreakStmt] break; -# 1086| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1086| Type = [NestedStruct] iterator -# 1086| ValueCategory = lvalue -# 1090| getStmt(2): [LabelStmt] label ...: -# 1091| getStmt(3): [ReturnStmt] return ... -# 1110| [TopLevelFunction] int AsmStmt(int) -# 1110| <params>: -# 1110| getParameter(0): [Parameter] x -# 1110| Type = [IntType] int -# 1110| getEntryPoint(): [BlockStmt] { ... } -# 1111| getStmt(0): [AsmStmt] asm statement -# 1112| getStmt(1): [ReturnStmt] return ... -# 1112| getExpr(): [VariableAccess] x -# 1112| Type = [IntType] int -# 1112| ValueCategory = prvalue(load) -# 1115| [TopLevelFunction] void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) -# 1115| <params>: -# 1115| getParameter(0): [Parameter] a -# 1115| Type = [LValueReferenceType] unsigned int & -# 1115| getParameter(1): [Parameter] b -# 1115| Type = [IntType] unsigned int -# 1115| getParameter(2): [Parameter] c -# 1115| Type = [LValueReferenceType] unsigned int & -# 1115| getParameter(3): [Parameter] d -# 1115| Type = [IntType] unsigned int -# 1116| getEntryPoint(): [BlockStmt] { ... } -# 1117| getStmt(0): [AsmStmt] asm statement -# 1120| getChild(0): [VariableAccess] a -# 1120| Type = [LValueReferenceType] unsigned int & -# 1120| ValueCategory = prvalue(load) -# 1120| getChild(1): [VariableAccess] b -# 1120| Type = [IntType] unsigned int -# 1120| ValueCategory = lvalue -# 1120| getChild(2): [VariableAccess] c -# 1120| Type = [LValueReferenceType] unsigned int & -# 1120| ValueCategory = prvalue(load) -# 1120| getChild(3): [VariableAccess] d -# 1120| Type = [IntType] unsigned int -# 1120| ValueCategory = prvalue(load) -# 1120| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1120| Type = [IntType] unsigned int -# 1120| ValueCategory = lvalue -# 1120| getChild(2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1120| Type = [IntType] unsigned int -# 1120| ValueCategory = prvalue(load) -# 1122| getStmt(1): [ReturnStmt] return ... -# 1124| [TopLevelFunction] void ExternDeclarations() -# 1124| <params>: -# 1125| getEntryPoint(): [BlockStmt] { ... } -# 1126| getStmt(0): [DeclStmt] declaration -# 1126| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1126| Type = [IntType] int -# 1127| getStmt(1): [DeclStmt] declaration -# 1127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1127| Type = [IntType] int -# 1128| getStmt(2): [DeclStmt] declaration -# 1128| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1128| Type = [IntType] int -# 1128| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of f -# 1128| Type = [IntType] int -# 1129| getStmt(3): [DeclStmt] declaration -# 1129| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z -# 1129| Type = [IntType] int -# 1129| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of w -# 1129| Type = [IntType] int -# 1129| getDeclarationEntry(2): [VariableDeclarationEntry] definition of h -# 1129| Type = [IntType] int -# 1130| getStmt(4): [DeclStmt] declaration -# 1130| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of d -# 1130| Type = [CTypedefType,LocalTypedefType] d -# 1131| getStmt(5): [ReturnStmt] return ... -# 1128| [TopLevelFunction] int f(float) -# 1128| <params>: -# 1128| getParameter(0): [Parameter] (unnamed parameter 0) -# 1128| Type = [FloatType] float -# 1129| [TopLevelFunction] int z(float) -# 1129| <params>: -# 1129| getParameter(0): [Parameter] (unnamed parameter 0) -# 1129| Type = [FloatType] float -# 1129| [TopLevelFunction] int w(float) -# 1129| <params>: -# 1129| getParameter(0): [Parameter] (unnamed parameter 0) -# 1129| Type = [FloatType] float -# 1139| [TopLevelFunction] void ExternDeclarationsInMacro() -# 1139| <params>: -# 1140| getEntryPoint(): [BlockStmt] { ... } -# 1141| getStmt(0): [DeclStmt] declaration -# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1141| Type = [IntType] int -# 1141| getStmt(1): [ForStmt] for(...;...;...) ... -# 1141| getInitialization(): [DeclStmt] declaration -# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1141| Type = [IntType] int -# 1141| getVariable().getInitializer(): [Initializer] initializer for i -# 1141| getExpr(): [Literal] 0 -# 1141| Type = [IntType] int -# 1141| Value = [Literal] 0 -# 1141| ValueCategory = prvalue -# 1141| getCondition(): [LTExpr] ... < ... -# 1141| Type = [BoolType] bool -# 1141| ValueCategory = prvalue -# 1141| getLesserOperand(): [VariableAccess] i -# 1141| Type = [IntType] int -# 1141| ValueCategory = prvalue(load) -# 1141| getGreaterOperand(): [Literal] 10 -# 1141| Type = [IntType] int -# 1141| Value = [Literal] 10 -# 1141| ValueCategory = prvalue -# 1141| getUpdate(): [PrefixIncrExpr] ++ ... -# 1141| Type = [IntType] int -# 1141| ValueCategory = lvalue -# 1141| getOperand(): [VariableAccess] i -# 1141| Type = [IntType] int -# 1141| ValueCategory = lvalue -# 1141| getStmt(): [BlockStmt] { ... } -# 1141| getStmt(0): [DeclStmt] declaration -# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1141| Type = [IntType] int -# 1141| getStmt(2): [EmptyStmt] ; -# 1142| getStmt(3): [ReturnStmt] return ... -# 1144| [TopLevelFunction] void TryCatchNoCatchAny(bool) -# 1144| <params>: -# 1144| getParameter(0): [Parameter] b -# 1144| Type = [BoolType] bool -# 1144| getEntryPoint(): [BlockStmt] { ... } -# 1145| getStmt(0): [TryStmt] try { ... } -# 1145| getStmt(): [BlockStmt] { ... } -# 1146| getStmt(0): [DeclStmt] declaration -# 1146| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1146| Type = [IntType] int -# 1146| getVariable().getInitializer(): [Initializer] initializer for x -# 1146| getExpr(): [Literal] 5 -# 1146| Type = [IntType] int -# 1146| Value = [Literal] 5 -# 1146| ValueCategory = prvalue -# 1147| getStmt(1): [IfStmt] if (...) ... -# 1147| getCondition(): [VariableAccess] b -# 1147| Type = [BoolType] bool -# 1147| ValueCategory = prvalue(load) -# 1147| getThen(): [BlockStmt] { ... } -# 1148| getStmt(0): [ExprStmt] ExprStmt -# 1148| getExpr(): [ThrowExpr] throw ... -# 1148| Type = [PointerType] const char * -# 1148| ValueCategory = prvalue -# 1148| getExpr(): string literal -# 1148| Type = [ArrayType] const char[15] -# 1148| Value = [StringLiteral] "string literal" -# 1148| ValueCategory = lvalue -# 1148| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1148| Type = [PointerType] const char * -# 1148| ValueCategory = prvalue -# 1150| getElse(): [IfStmt] if (...) ... -# 1150| getCondition(): [LTExpr] ... < ... -# 1150| Type = [BoolType] bool -# 1150| ValueCategory = prvalue -# 1150| getLesserOperand(): [VariableAccess] x -# 1150| Type = [IntType] int -# 1150| ValueCategory = prvalue(load) -# 1150| getGreaterOperand(): [Literal] 2 -# 1150| Type = [IntType] int -# 1150| Value = [Literal] 2 -# 1150| ValueCategory = prvalue -# 1150| getThen(): [BlockStmt] { ... } -# 1151| getStmt(0): [ExprStmt] ExprStmt -# 1151| getExpr(): [AssignExpr] ... = ... -# 1151| Type = [IntType] int -# 1151| ValueCategory = lvalue -# 1151| getLValue(): [VariableAccess] x -# 1151| Type = [IntType] int -# 1151| ValueCategory = lvalue -# 1151| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1151| Type = [IntType] int -# 1151| ValueCategory = prvalue -# 1151| getCondition(): [VariableAccess] b -# 1151| Type = [BoolType] bool -# 1151| ValueCategory = prvalue(load) -# 1151| getThen(): [Literal] 7 -# 1151| Type = [IntType] int -# 1151| Value = [Literal] 7 -# 1151| ValueCategory = prvalue -# 1151| getElse(): [ThrowExpr] throw ... -# 1151| Type = [Struct] String -# 1151| ValueCategory = prvalue -# 1151| getExpr(): [ConstructorCall] call to String -# 1151| Type = [VoidType] void -# 1151| ValueCategory = prvalue -# 1151| getArgument(0): String object -# 1151| Type = [ArrayType] const char[14] -# 1151| Value = [StringLiteral] "String object" -# 1151| ValueCategory = lvalue -# 1151| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1151| Type = [PointerType] const char * -# 1151| ValueCategory = prvalue -# 1153| getStmt(2): [ExprStmt] ExprStmt -# 1153| getExpr(): [AssignExpr] ... = ... -# 1153| Type = [IntType] int -# 1153| ValueCategory = lvalue -# 1153| getLValue(): [VariableAccess] x -# 1153| Type = [IntType] int -# 1153| ValueCategory = lvalue -# 1153| getRValue(): [Literal] 7 -# 1153| Type = [IntType] int -# 1153| Value = [Literal] 7 -# 1153| ValueCategory = prvalue -# 1155| getChild(1): [Handler] <handler> -# 1155| getBlock(): [CatchBlock] { ... } -# 1156| getStmt(0): [ExprStmt] ExprStmt -# 1156| getExpr(): [ThrowExpr] throw ... -# 1156| Type = [Struct] String -# 1156| ValueCategory = prvalue -# 1156| getExpr(): [ConstructorCall] call to String -# 1156| Type = [VoidType] void -# 1156| ValueCategory = prvalue -# 1156| getArgument(0): [VariableAccess] s -# 1156| Type = [PointerType] const char * -# 1156| ValueCategory = prvalue(load) -# 1158| getChild(2): [Handler] <handler> -# 1158| getBlock(): [CatchBlock] { ... } -# 1160| getStmt(1): [ReturnStmt] return ... -# 1164| [TopLevelFunction] void VectorTypes(int) -# 1164| <params>: -# 1164| getParameter(0): [Parameter] i -# 1164| Type = [IntType] int -# 1164| getEntryPoint(): [BlockStmt] { ... } -# 1165| getStmt(0): [DeclStmt] declaration -# 1165| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4 -# 1165| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1165| getVariable().getInitializer(): [Initializer] initializer for vi4 -# 1165| getExpr(): [VectorAggregateLiteral] {...} -# 1165| Type = [GNUVectorType] __attribute((vector_size(16UL))) int -# 1165| ValueCategory = prvalue -# 1165| getAnElementExpr(0): [Literal] 0 -# 1165| Type = [IntType] int -# 1165| Value = [Literal] 0 -# 1165| ValueCategory = prvalue -# 1165| getAnElementExpr(1): [Literal] 1 -# 1165| Type = [IntType] int -# 1165| Value = [Literal] 1 -# 1165| ValueCategory = prvalue -# 1165| getAnElementExpr(2): [Literal] 2 -# 1165| Type = [IntType] int -# 1165| Value = [Literal] 2 -# 1165| ValueCategory = prvalue -# 1165| getAnElementExpr(3): [Literal] 3 -# 1165| Type = [IntType] int -# 1165| Value = [Literal] 3 -# 1165| ValueCategory = prvalue -# 1166| getStmt(1): [DeclStmt] declaration -# 1166| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1166| Type = [IntType] int -# 1166| getVariable().getInitializer(): [Initializer] initializer for x -# 1166| getExpr(): [ArrayExpr] access to array -# 1166| Type = [IntType] int -# 1166| ValueCategory = prvalue(load) -# 1166| getArrayBase(): [VariableAccess] vi4 -# 1166| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1166| ValueCategory = lvalue -# 1166| getArrayOffset(): [VariableAccess] i -# 1166| Type = [IntType] int -# 1166| ValueCategory = prvalue(load) -# 1167| getStmt(2): [ExprStmt] ExprStmt -# 1167| getExpr(): [AssignExpr] ... = ... -# 1167| Type = [IntType] int +# 1133| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1133| Type = [LValueReferenceType] const int & +# 1133| ValueCategory = prvalue +# 1133| getExpr(): [CStyleCast] (const int)... +# 1133| Conversion = [GlvalueConversion] glvalue conversion +# 1133| Type = [SpecifiedType] const int +# 1133| ValueCategory = lvalue +# 1133| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1133| Type = [IntType] int +# 1133| ValueCategory = lvalue +# 1133| getStmt(): [BlockStmt] { ... } +# 1134| getStmt(0): [IfStmt] if (...) ... +# 1134| getCondition(): [LTExpr] ... < ... +# 1134| Type = [BoolType] bool +# 1134| ValueCategory = prvalue +# 1134| getLesserOperand(): [VariableAccess] e +# 1134| Type = [LValueReferenceType] const int & +# 1134| ValueCategory = prvalue(load) +# 1134| getGreaterOperand(): [Literal] 5 +# 1134| Type = [IntType] int +# 1134| Value = [Literal] 5 +# 1134| ValueCategory = prvalue +# 1134| getLesserOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1134| Type = [IntType] int +# 1134| ValueCategory = prvalue(load) +# 1134| getThen(): [BlockStmt] { ... } +# 1135| getStmt(0): [BreakStmt] break; +# 1133| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1133| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +# 1133| ValueCategory = lvalue +# 1137| getStmt(2): [LabelStmt] label ...: +# 1138| getStmt(3): [ReturnStmt] return ... +# 1157| [TopLevelFunction] int AsmStmt(int) +# 1157| <params>: +# 1157| getParameter(0): [Parameter] x +# 1157| Type = [IntType] int +# 1157| getEntryPoint(): [BlockStmt] { ... } +# 1158| getStmt(0): [AsmStmt] asm statement +# 1159| getStmt(1): [ReturnStmt] return ... +# 1159| getExpr(): [VariableAccess] x +# 1159| Type = [IntType] int +# 1159| ValueCategory = prvalue(load) +# 1162| [TopLevelFunction] void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) +# 1162| <params>: +# 1162| getParameter(0): [Parameter] a +# 1162| Type = [LValueReferenceType] unsigned int & +# 1162| getParameter(1): [Parameter] b +# 1162| Type = [IntType] unsigned int +# 1162| getParameter(2): [Parameter] c +# 1162| Type = [LValueReferenceType] unsigned int & +# 1162| getParameter(3): [Parameter] d +# 1162| Type = [IntType] unsigned int +# 1163| getEntryPoint(): [BlockStmt] { ... } +# 1164| getStmt(0): [AsmStmt] asm statement +# 1167| getChild(0): [VariableAccess] a +# 1167| Type = [LValueReferenceType] unsigned int & +# 1167| ValueCategory = prvalue(load) +# 1167| getChild(1): [VariableAccess] b +# 1167| Type = [IntType] unsigned int # 1167| ValueCategory = lvalue -# 1167| getLValue(): [ArrayExpr] access to array -# 1167| Type = [IntType] int -# 1167| ValueCategory = lvalue -# 1167| getArrayBase(): [VariableAccess] vi4 -# 1167| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1167| ValueCategory = lvalue -# 1167| getArrayOffset(): [VariableAccess] i -# 1167| Type = [IntType] int -# 1167| ValueCategory = prvalue(load) -# 1167| getRValue(): [VariableAccess] x -# 1167| Type = [IntType] int -# 1167| ValueCategory = prvalue(load) -# 1168| getStmt(3): [DeclStmt] declaration -# 1168| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4_shuffle -# 1168| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1168| getVariable().getInitializer(): [Initializer] initializer for vi4_shuffle -# 1168| getExpr(): [BuiltInOperationBuiltInShuffleVector] __builtin_shufflevector -# 1168| Type = [GNUVectorType] __attribute((vector_size(16))) int -# 1168| ValueCategory = prvalue -# 1168| getChild(0): [VariableAccess] vi4 -# 1168| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1168| ValueCategory = prvalue(load) -# 1168| getChild(1): [VariableAccess] vi4 -# 1168| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1168| ValueCategory = prvalue(load) -# 1168| getChild(2): [AddExpr] ... + ... -# 1168| Type = [IntType] int -# 1168| Value = [AddExpr] 3 -# 1168| ValueCategory = prvalue -# 1168| getLeftOperand(): [Literal] 3 -# 1168| Type = [IntType] int -# 1168| Value = [Literal] 3 -# 1168| ValueCategory = prvalue -# 1168| getRightOperand(): [Literal] 0 -# 1168| Type = [IntType] int -# 1168| Value = [Literal] 0 -# 1168| ValueCategory = prvalue -# 1168| getChild(3): [Literal] 2 -# 1168| Type = [IntType] int -# 1168| Value = [Literal] 2 -# 1168| ValueCategory = prvalue -# 1168| getChild(4): [Literal] 1 -# 1168| Type = [IntType] int -# 1168| Value = [Literal] 1 -# 1168| ValueCategory = prvalue -# 1168| getChild(5): [Literal] 0 -# 1168| Type = [IntType] int -# 1168| Value = [Literal] 0 -# 1168| ValueCategory = prvalue -# 1169| getStmt(4): [ExprStmt] ExprStmt -# 1169| getExpr(): [AssignExpr] ... = ... -# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1169| ValueCategory = lvalue -# 1169| getLValue(): [VariableAccess] vi4 -# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1169| ValueCategory = lvalue -# 1169| getRValue(): [AddExpr] ... + ... -# 1169| Type = [GNUVectorType] __attribute((vector_size(16UL))) int -# 1169| ValueCategory = prvalue -# 1169| getLeftOperand(): [VariableAccess] vi4 -# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1169| ValueCategory = prvalue(load) -# 1169| getRightOperand(): [VariableAccess] vi4_shuffle -# 1169| Type = [SpecifiedType] __attribute((vector_size(16UL))) int -# 1169| ValueCategory = prvalue(load) -# 1170| getStmt(5): [ReturnStmt] return ... -# 1172| [TopLevelFunction] void* memcpy(void*, void*, int) -# 1172| <params>: -# 1172| getParameter(0): [Parameter] dst -# 1172| Type = [VoidPointerType] void * -# 1172| getParameter(1): [Parameter] src -# 1172| Type = [VoidPointerType] void * -# 1172| getParameter(2): [Parameter] size -# 1172| Type = [IntType] int -# 1174| [TopLevelFunction] int ModeledCallTarget(int) -# 1174| <params>: -# 1174| getParameter(0): [Parameter] x -# 1174| Type = [IntType] int -# 1174| getEntryPoint(): [BlockStmt] { ... } -# 1175| getStmt(0): [DeclStmt] declaration +# 1167| getChild(2): [VariableAccess] c +# 1167| Type = [LValueReferenceType] unsigned int & +# 1167| ValueCategory = prvalue(load) +# 1167| getChild(3): [VariableAccess] d +# 1167| Type = [IntType] unsigned int +# 1167| ValueCategory = prvalue(load) +# 1167| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1167| Type = [IntType] unsigned int +# 1167| ValueCategory = lvalue +# 1167| getChild(2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1167| Type = [IntType] unsigned int +# 1167| ValueCategory = prvalue(load) +# 1169| getStmt(1): [ReturnStmt] return ... +# 1171| [TopLevelFunction] void ExternDeclarations() +# 1171| <params>: +# 1172| getEntryPoint(): [BlockStmt] { ... } +# 1173| getStmt(0): [DeclStmt] declaration +# 1173| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1173| Type = [IntType] int +# 1174| getStmt(1): [DeclStmt] declaration +# 1174| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1174| Type = [IntType] int +# 1175| getStmt(2): [DeclStmt] declaration # 1175| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1175| Type = [IntType] int -# 1176| getStmt(1): [ExprStmt] ExprStmt -# 1176| getExpr(): [FunctionCall] call to memcpy -# 1176| Type = [VoidPointerType] void * -# 1176| ValueCategory = prvalue -# 1176| getArgument(0): [AddressOfExpr] & ... -# 1176| Type = [IntPointerType] int * -# 1176| ValueCategory = prvalue -# 1176| getOperand(): [VariableAccess] y -# 1176| Type = [IntType] int -# 1176| ValueCategory = lvalue -# 1176| getArgument(1): [AddressOfExpr] & ... -# 1176| Type = [IntPointerType] int * -# 1176| ValueCategory = prvalue -# 1176| getOperand(): [VariableAccess] x -# 1176| Type = [IntType] int -# 1176| ValueCategory = lvalue -# 1176| getArgument(2): [SizeofTypeOperator] sizeof(int) -# 1176| Type = [LongType] unsigned long -# 1176| Value = [SizeofTypeOperator] 4 -# 1176| ValueCategory = prvalue -# 1176| getArgument(0).getFullyConverted(): [CStyleCast] (void *)... -# 1176| Conversion = [PointerConversion] pointer conversion -# 1176| Type = [VoidPointerType] void * -# 1176| ValueCategory = prvalue -# 1176| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... -# 1176| Conversion = [PointerConversion] pointer conversion -# 1176| Type = [VoidPointerType] void * -# 1176| ValueCategory = prvalue -# 1176| getArgument(2).getFullyConverted(): [CStyleCast] (int)... -# 1176| Conversion = [IntegralConversion] integral conversion -# 1176| Type = [IntType] int -# 1176| Value = [CStyleCast] 4 -# 1176| ValueCategory = prvalue -# 1177| getStmt(2): [ReturnStmt] return ... -# 1177| getExpr(): [VariableAccess] y -# 1177| Type = [IntType] int -# 1177| ValueCategory = prvalue(load) -# 1180| [TopLevelFunction] String ReturnObjectImpl() -# 1180| <params>: -# 1180| getEntryPoint(): [BlockStmt] { ... } -# 1181| getStmt(0): [ReturnStmt] return ... -# 1181| getExpr(): [ConstructorCall] call to String -# 1181| Type = [VoidType] void -# 1181| ValueCategory = prvalue -# 1181| getArgument(0): foo -# 1181| Type = [ArrayType] const char[4] -# 1181| Value = [StringLiteral] "foo" -# 1181| ValueCategory = lvalue -# 1181| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1181| Type = [PointerType] const char * -# 1181| ValueCategory = prvalue -# 1184| [TopLevelFunction] void switch1Case(int) -# 1184| <params>: -# 1184| getParameter(0): [Parameter] x -# 1184| Type = [IntType] int -# 1184| getEntryPoint(): [BlockStmt] { ... } -# 1185| getStmt(0): [DeclStmt] declaration -# 1185| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1185| Type = [IntType] int -# 1185| getVariable().getInitializer(): [Initializer] initializer for y -# 1185| getExpr(): [Literal] 0 -# 1185| Type = [IntType] int -# 1185| Value = [Literal] 0 -# 1185| ValueCategory = prvalue -# 1186| getStmt(1): [SwitchStmt] switch (...) ... -# 1186| getExpr(): [VariableAccess] x -# 1186| Type = [IntType] int -# 1186| ValueCategory = prvalue(load) -# 1186| getStmt(): [BlockStmt] { ... } -# 1187| getStmt(0): [SwitchCase] case ...: -# 1187| getExpr(): [Literal] 1 -# 1187| Type = [IntType] int -# 1187| Value = [Literal] 1 -# 1187| ValueCategory = prvalue -# 1188| getStmt(1): [ExprStmt] ExprStmt -# 1188| getExpr(): [AssignExpr] ... = ... -# 1188| Type = [IntType] int -# 1188| ValueCategory = lvalue -# 1188| getLValue(): [VariableAccess] y -# 1188| Type = [IntType] int -# 1188| ValueCategory = lvalue -# 1188| getRValue(): [Literal] 2 +# 1175| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of f +# 1175| Type = [IntType] int +# 1176| getStmt(3): [DeclStmt] declaration +# 1176| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z +# 1176| Type = [IntType] int +# 1176| getDeclarationEntry(1): [FunctionDeclarationEntry] declaration of w +# 1176| Type = [IntType] int +# 1176| getDeclarationEntry(2): [VariableDeclarationEntry] definition of h +# 1176| Type = [IntType] int +# 1177| getStmt(4): [DeclStmt] declaration +# 1177| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of d +# 1177| Type = [CTypedefType,LocalTypedefType] d +# 1178| getStmt(5): [ReturnStmt] return ... +# 1175| [TopLevelFunction] int f(float) +# 1175| <params>: +# 1175| getParameter(0): [Parameter] (unnamed parameter 0) +# 1175| Type = [FloatType] float +# 1176| [TopLevelFunction] int z(float) +# 1176| <params>: +# 1176| getParameter(0): [Parameter] (unnamed parameter 0) +# 1176| Type = [FloatType] float +# 1176| [TopLevelFunction] int w(float) +# 1176| <params>: +# 1176| getParameter(0): [Parameter] (unnamed parameter 0) +# 1176| Type = [FloatType] float +# 1186| [TopLevelFunction] void ExternDeclarationsInMacro() +# 1186| <params>: +# 1187| getEntryPoint(): [BlockStmt] { ... } +# 1188| getStmt(0): [DeclStmt] declaration +# 1188| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1188| Type = [IntType] int +# 1188| getStmt(1): [ForStmt] for(...;...;...) ... +# 1188| getInitialization(): [DeclStmt] declaration +# 1188| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1188| Type = [IntType] int +# 1188| getVariable().getInitializer(): [Initializer] initializer for i +# 1188| getExpr(): [Literal] 0 # 1188| Type = [IntType] int -# 1188| Value = [Literal] 2 +# 1188| Value = [Literal] 0 # 1188| ValueCategory = prvalue -# 1190| getStmt(2): [DeclStmt] declaration -# 1190| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1190| Type = [IntType] int -# 1190| getVariable().getInitializer(): [Initializer] initializer for z -# 1190| getExpr(): [VariableAccess] y -# 1190| Type = [IntType] int -# 1190| ValueCategory = prvalue(load) -# 1191| getStmt(3): [ReturnStmt] return ... -# 1193| [TopLevelFunction] void switch2Case_fallthrough(int) -# 1193| <params>: -# 1193| getParameter(0): [Parameter] x -# 1193| Type = [IntType] int -# 1193| getEntryPoint(): [BlockStmt] { ... } -# 1194| getStmt(0): [DeclStmt] declaration -# 1194| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1194| Type = [IntType] int -# 1194| getVariable().getInitializer(): [Initializer] initializer for y -# 1194| getExpr(): [Literal] 0 -# 1194| Type = [IntType] int -# 1194| Value = [Literal] 0 -# 1194| ValueCategory = prvalue -# 1195| getStmt(1): [SwitchStmt] switch (...) ... -# 1195| getExpr(): [VariableAccess] x -# 1195| Type = [IntType] int -# 1195| ValueCategory = prvalue(load) -# 1195| getStmt(): [BlockStmt] { ... } -# 1196| getStmt(0): [SwitchCase] case ...: -# 1196| getExpr(): [Literal] 1 -# 1196| Type = [IntType] int -# 1196| Value = [Literal] 1 -# 1196| ValueCategory = prvalue -# 1197| getStmt(1): [ExprStmt] ExprStmt -# 1197| getExpr(): [AssignExpr] ... = ... -# 1197| Type = [IntType] int -# 1197| ValueCategory = lvalue -# 1197| getLValue(): [VariableAccess] y -# 1197| Type = [IntType] int -# 1197| ValueCategory = lvalue -# 1197| getRValue(): [Literal] 2 -# 1197| Type = [IntType] int -# 1197| Value = [Literal] 2 +# 1188| getCondition(): [LTExpr] ... < ... +# 1188| Type = [BoolType] bool +# 1188| ValueCategory = prvalue +# 1188| getLesserOperand(): [VariableAccess] i +# 1188| Type = [IntType] int +# 1188| ValueCategory = prvalue(load) +# 1188| getGreaterOperand(): [Literal] 10 +# 1188| Type = [IntType] int +# 1188| Value = [Literal] 10 +# 1188| ValueCategory = prvalue +# 1188| getUpdate(): [PrefixIncrExpr] ++ ... +# 1188| Type = [IntType] int +# 1188| ValueCategory = lvalue +# 1188| getOperand(): [VariableAccess] i +# 1188| Type = [IntType] int +# 1188| ValueCategory = lvalue +# 1188| getStmt(): [BlockStmt] { ... } +# 1188| getStmt(0): [DeclStmt] declaration +# 1188| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1188| Type = [IntType] int +# 1188| getStmt(2): [EmptyStmt] ; +# 1189| getStmt(3): [ReturnStmt] return ... +# 1191| [TopLevelFunction] void TryCatchNoCatchAny(bool) +# 1191| <params>: +# 1191| getParameter(0): [Parameter] b +# 1191| Type = [BoolType] bool +# 1191| getEntryPoint(): [BlockStmt] { ... } +# 1192| getStmt(0): [TryStmt] try { ... } +# 1192| getStmt(): [BlockStmt] { ... } +# 1193| getStmt(0): [DeclStmt] declaration +# 1193| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1193| Type = [IntType] int +# 1193| getVariable().getInitializer(): [Initializer] initializer for x +# 1193| getExpr(): [Literal] 5 +# 1193| Type = [IntType] int +# 1193| Value = [Literal] 5 +# 1193| ValueCategory = prvalue +# 1194| getStmt(1): [IfStmt] if (...) ... +# 1194| getCondition(): [VariableAccess] b +# 1194| Type = [BoolType] bool +# 1194| ValueCategory = prvalue(load) +# 1194| getThen(): [BlockStmt] { ... } +# 1195| getStmt(0): [ExprStmt] ExprStmt +# 1195| getExpr(): [ThrowExpr] throw ... +# 1195| Type = [PointerType] const char * +# 1195| ValueCategory = prvalue +# 1195| getExpr(): string literal +# 1195| Type = [ArrayType] const char[15] +# 1195| Value = [StringLiteral] "string literal" +# 1195| ValueCategory = lvalue +# 1195| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1195| Type = [PointerType] const char * +# 1195| ValueCategory = prvalue +# 1197| getElse(): [IfStmt] if (...) ... +# 1197| getCondition(): [LTExpr] ... < ... +# 1197| Type = [BoolType] bool # 1197| ValueCategory = prvalue -# 1198| getStmt(2): [SwitchCase] case ...: -# 1198| getExpr(): [Literal] 2 -# 1198| Type = [IntType] int -# 1198| Value = [Literal] 2 -# 1198| ValueCategory = prvalue -# 1199| getStmt(3): [ExprStmt] ExprStmt -# 1199| getExpr(): [AssignExpr] ... = ... -# 1199| Type = [IntType] int -# 1199| ValueCategory = lvalue -# 1199| getLValue(): [VariableAccess] y -# 1199| Type = [IntType] int -# 1199| ValueCategory = lvalue -# 1199| getRValue(): [Literal] 3 -# 1199| Type = [IntType] int -# 1199| Value = [Literal] 3 -# 1199| ValueCategory = prvalue -# 1201| getStmt(2): [DeclStmt] declaration -# 1201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1201| Type = [IntType] int -# 1201| getVariable().getInitializer(): [Initializer] initializer for z -# 1201| getExpr(): [VariableAccess] y -# 1201| Type = [IntType] int -# 1201| ValueCategory = prvalue(load) -# 1202| getStmt(3): [ReturnStmt] return ... -# 1204| [TopLevelFunction] void switch2Case(int) -# 1204| <params>: -# 1204| getParameter(0): [Parameter] x -# 1204| Type = [IntType] int -# 1204| getEntryPoint(): [BlockStmt] { ... } -# 1205| getStmt(0): [DeclStmt] declaration -# 1205| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1205| Type = [IntType] int -# 1205| getVariable().getInitializer(): [Initializer] initializer for y -# 1205| getExpr(): [Literal] 0 -# 1205| Type = [IntType] int -# 1205| Value = [Literal] 0 -# 1205| ValueCategory = prvalue -# 1206| getStmt(1): [SwitchStmt] switch (...) ... -# 1206| getExpr(): [VariableAccess] x -# 1206| Type = [IntType] int -# 1206| ValueCategory = prvalue(load) -# 1206| getStmt(): [BlockStmt] { ... } -# 1207| getStmt(0): [SwitchCase] case ...: -# 1207| getExpr(): [Literal] 1 -# 1207| Type = [IntType] int -# 1207| Value = [Literal] 1 -# 1207| ValueCategory = prvalue -# 1208| getStmt(1): [ExprStmt] ExprStmt -# 1208| getExpr(): [AssignExpr] ... = ... -# 1208| Type = [IntType] int -# 1208| ValueCategory = lvalue -# 1208| getLValue(): [VariableAccess] y -# 1208| Type = [IntType] int -# 1208| ValueCategory = lvalue -# 1208| getRValue(): [Literal] 2 -# 1208| Type = [IntType] int -# 1208| Value = [Literal] 2 -# 1208| ValueCategory = prvalue -# 1209| getStmt(2): [BreakStmt] break; -# 1210| getStmt(3): [SwitchCase] case ...: -# 1210| getExpr(): [Literal] 2 -# 1210| Type = [IntType] int -# 1210| Value = [Literal] 2 -# 1210| ValueCategory = prvalue -# 1211| getStmt(4): [ExprStmt] ExprStmt -# 1211| getExpr(): [AssignExpr] ... = ... -# 1211| Type = [IntType] int -# 1211| ValueCategory = lvalue -# 1211| getLValue(): [VariableAccess] y -# 1211| Type = [IntType] int -# 1211| ValueCategory = lvalue -# 1211| getRValue(): [Literal] 3 -# 1211| Type = [IntType] int -# 1211| Value = [Literal] 3 -# 1211| ValueCategory = prvalue -# 1212| getStmt(2): [LabelStmt] label ...: -# 1213| getStmt(3): [DeclStmt] declaration -# 1213| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1197| getLesserOperand(): [VariableAccess] x +# 1197| Type = [IntType] int +# 1197| ValueCategory = prvalue(load) +# 1197| getGreaterOperand(): [Literal] 2 +# 1197| Type = [IntType] int +# 1197| Value = [Literal] 2 +# 1197| ValueCategory = prvalue +# 1197| getThen(): [BlockStmt] { ... } +# 1198| getStmt(0): [ExprStmt] ExprStmt +# 1198| getExpr(): [AssignExpr] ... = ... +# 1198| Type = [IntType] int +# 1198| ValueCategory = lvalue +# 1198| getLValue(): [VariableAccess] x +# 1198| Type = [IntType] int +# 1198| ValueCategory = lvalue +# 1198| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1198| Type = [IntType] int +# 1198| ValueCategory = prvalue +# 1198| getCondition(): [VariableAccess] b +# 1198| Type = [BoolType] bool +# 1198| ValueCategory = prvalue(load) +# 1198| getThen(): [Literal] 7 +# 1198| Type = [IntType] int +# 1198| Value = [Literal] 7 +# 1198| ValueCategory = prvalue +# 1198| getElse(): [ThrowExpr] throw ... +# 1198| Type = [Struct] String +# 1198| ValueCategory = prvalue +# 1198| getExpr(): [ConstructorCall] call to String +# 1198| Type = [VoidType] void +# 1198| ValueCategory = prvalue +# 1198| getArgument(0): String object +# 1198| Type = [ArrayType] const char[14] +# 1198| Value = [StringLiteral] "String object" +# 1198| ValueCategory = lvalue +# 1198| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1198| Type = [PointerType] const char * +# 1198| ValueCategory = prvalue +# 1200| getStmt(2): [ExprStmt] ExprStmt +# 1200| getExpr(): [AssignExpr] ... = ... +# 1200| Type = [IntType] int +# 1200| ValueCategory = lvalue +# 1200| getLValue(): [VariableAccess] x +# 1200| Type = [IntType] int +# 1200| ValueCategory = lvalue +# 1200| getRValue(): [Literal] 7 +# 1200| Type = [IntType] int +# 1200| Value = [Literal] 7 +# 1200| ValueCategory = prvalue +# 1202| getChild(1): [Handler] <handler> +# 1202| getBlock(): [CatchBlock] { ... } +# 1203| getStmt(0): [ExprStmt] ExprStmt +# 1203| getExpr(): [ThrowExpr] throw ... +# 1203| Type = [Struct] String +# 1203| ValueCategory = prvalue +# 1203| getExpr(): [ConstructorCall] call to String +# 1203| Type = [VoidType] void +# 1203| ValueCategory = prvalue +# 1203| getArgument(0): [VariableAccess] s +# 1203| Type = [PointerType] const char * +# 1203| ValueCategory = prvalue(load) +# 1205| getChild(2): [Handler] <handler> +# 1205| getBlock(): [CatchBlock] { ... } +# 1207| getStmt(1): [ReturnStmt] return ... +# 1211| [TopLevelFunction] void VectorTypes(int) +# 1211| <params>: +# 1211| getParameter(0): [Parameter] i +# 1211| Type = [IntType] int +# 1211| getEntryPoint(): [BlockStmt] { ... } +# 1212| getStmt(0): [DeclStmt] declaration +# 1212| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4 +# 1212| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1212| getVariable().getInitializer(): [Initializer] initializer for vi4 +# 1212| getExpr(): [VectorAggregateLiteral] {...} +# 1212| Type = [GNUVectorType] __attribute((vector_size(16UL))) int +# 1212| ValueCategory = prvalue +# 1212| getAnElementExpr(0): [Literal] 0 +# 1212| Type = [IntType] int +# 1212| Value = [Literal] 0 +# 1212| ValueCategory = prvalue +# 1212| getAnElementExpr(1): [Literal] 1 +# 1212| Type = [IntType] int +# 1212| Value = [Literal] 1 +# 1212| ValueCategory = prvalue +# 1212| getAnElementExpr(2): [Literal] 2 +# 1212| Type = [IntType] int +# 1212| Value = [Literal] 2 +# 1212| ValueCategory = prvalue +# 1212| getAnElementExpr(3): [Literal] 3 +# 1212| Type = [IntType] int +# 1212| Value = [Literal] 3 +# 1212| ValueCategory = prvalue +# 1213| getStmt(1): [DeclStmt] declaration +# 1213| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1213| Type = [IntType] int -# 1213| getVariable().getInitializer(): [Initializer] initializer for z -# 1213| getExpr(): [VariableAccess] y +# 1213| getVariable().getInitializer(): [Initializer] initializer for x +# 1213| getExpr(): [ArrayExpr] access to array # 1213| Type = [IntType] int # 1213| ValueCategory = prvalue(load) -# 1214| getStmt(4): [ReturnStmt] return ... -# 1216| [TopLevelFunction] void switch2Case_default(int) -# 1216| <params>: -# 1216| getParameter(0): [Parameter] x -# 1216| Type = [IntType] int -# 1216| getEntryPoint(): [BlockStmt] { ... } -# 1217| getStmt(0): [DeclStmt] declaration -# 1217| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1217| Type = [IntType] int -# 1217| getVariable().getInitializer(): [Initializer] initializer for y -# 1217| getExpr(): [Literal] 0 -# 1217| Type = [IntType] int -# 1217| Value = [Literal] 0 -# 1217| ValueCategory = prvalue -# 1218| getStmt(1): [SwitchStmt] switch (...) ... -# 1218| getExpr(): [VariableAccess] x -# 1218| Type = [IntType] int -# 1218| ValueCategory = prvalue(load) -# 1218| getStmt(): [BlockStmt] { ... } -# 1219| getStmt(0): [SwitchCase] case ...: -# 1219| getExpr(): [Literal] 1 -# 1219| Type = [IntType] int -# 1219| Value = [Literal] 1 -# 1219| ValueCategory = prvalue -# 1220| getStmt(1): [ExprStmt] ExprStmt -# 1220| getExpr(): [AssignExpr] ... = ... -# 1220| Type = [IntType] int -# 1220| ValueCategory = lvalue -# 1220| getLValue(): [VariableAccess] y -# 1220| Type = [IntType] int -# 1220| ValueCategory = lvalue -# 1220| getRValue(): [Literal] 2 -# 1220| Type = [IntType] int -# 1220| Value = [Literal] 2 -# 1220| ValueCategory = prvalue -# 1221| getStmt(2): [BreakStmt] break; -# 1223| getStmt(3): [SwitchCase] case ...: -# 1223| getExpr(): [Literal] 2 +# 1213| getArrayBase(): [VariableAccess] vi4 +# 1213| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1213| ValueCategory = lvalue +# 1213| getArrayOffset(): [VariableAccess] i +# 1213| Type = [IntType] int +# 1213| ValueCategory = prvalue(load) +# 1214| getStmt(2): [ExprStmt] ExprStmt +# 1214| getExpr(): [AssignExpr] ... = ... +# 1214| Type = [IntType] int +# 1214| ValueCategory = lvalue +# 1214| getLValue(): [ArrayExpr] access to array +# 1214| Type = [IntType] int +# 1214| ValueCategory = lvalue +# 1214| getArrayBase(): [VariableAccess] vi4 +# 1214| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1214| ValueCategory = lvalue +# 1214| getArrayOffset(): [VariableAccess] i +# 1214| Type = [IntType] int +# 1214| ValueCategory = prvalue(load) +# 1214| getRValue(): [VariableAccess] x +# 1214| Type = [IntType] int +# 1214| ValueCategory = prvalue(load) +# 1215| getStmt(3): [DeclStmt] declaration +# 1215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of vi4_shuffle +# 1215| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1215| getVariable().getInitializer(): [Initializer] initializer for vi4_shuffle +# 1215| getExpr(): [BuiltInOperationBuiltInShuffleVector] __builtin_shufflevector +# 1215| Type = [GNUVectorType] __attribute((vector_size(16))) int +# 1215| ValueCategory = prvalue +# 1215| getChild(0): [VariableAccess] vi4 +# 1215| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1215| ValueCategory = prvalue(load) +# 1215| getChild(1): [VariableAccess] vi4 +# 1215| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1215| ValueCategory = prvalue(load) +# 1215| getChild(2): [AddExpr] ... + ... +# 1215| Type = [IntType] int +# 1215| Value = [AddExpr] 3 +# 1215| ValueCategory = prvalue +# 1215| getLeftOperand(): [Literal] 3 +# 1215| Type = [IntType] int +# 1215| Value = [Literal] 3 +# 1215| ValueCategory = prvalue +# 1215| getRightOperand(): [Literal] 0 +# 1215| Type = [IntType] int +# 1215| Value = [Literal] 0 +# 1215| ValueCategory = prvalue +# 1215| getChild(3): [Literal] 2 +# 1215| Type = [IntType] int +# 1215| Value = [Literal] 2 +# 1215| ValueCategory = prvalue +# 1215| getChild(4): [Literal] 1 +# 1215| Type = [IntType] int +# 1215| Value = [Literal] 1 +# 1215| ValueCategory = prvalue +# 1215| getChild(5): [Literal] 0 +# 1215| Type = [IntType] int +# 1215| Value = [Literal] 0 +# 1215| ValueCategory = prvalue +# 1216| getStmt(4): [ExprStmt] ExprStmt +# 1216| getExpr(): [AssignExpr] ... = ... +# 1216| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1216| ValueCategory = lvalue +# 1216| getLValue(): [VariableAccess] vi4 +# 1216| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1216| ValueCategory = lvalue +# 1216| getRValue(): [AddExpr] ... + ... +# 1216| Type = [GNUVectorType] __attribute((vector_size(16UL))) int +# 1216| ValueCategory = prvalue +# 1216| getLeftOperand(): [VariableAccess] vi4 +# 1216| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1216| ValueCategory = prvalue(load) +# 1216| getRightOperand(): [VariableAccess] vi4_shuffle +# 1216| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1216| ValueCategory = prvalue(load) +# 1217| getStmt(5): [ReturnStmt] return ... +# 1219| [TopLevelFunction] void* memcpy(void*, void*, int) +# 1219| <params>: +# 1219| getParameter(0): [Parameter] dst +# 1219| Type = [VoidPointerType] void * +# 1219| getParameter(1): [Parameter] src +# 1219| Type = [VoidPointerType] void * +# 1219| getParameter(2): [Parameter] size +# 1219| Type = [IntType] int +# 1221| [TopLevelFunction] int ModeledCallTarget(int) +# 1221| <params>: +# 1221| getParameter(0): [Parameter] x +# 1221| Type = [IntType] int +# 1221| getEntryPoint(): [BlockStmt] { ... } +# 1222| getStmt(0): [DeclStmt] declaration +# 1222| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1222| Type = [IntType] int +# 1223| getStmt(1): [ExprStmt] ExprStmt +# 1223| getExpr(): [FunctionCall] call to memcpy +# 1223| Type = [VoidPointerType] void * +# 1223| ValueCategory = prvalue +# 1223| getArgument(0): [AddressOfExpr] & ... +# 1223| Type = [IntPointerType] int * +# 1223| ValueCategory = prvalue +# 1223| getOperand(): [VariableAccess] y +# 1223| Type = [IntType] int +# 1223| ValueCategory = lvalue +# 1223| getArgument(1): [AddressOfExpr] & ... +# 1223| Type = [IntPointerType] int * +# 1223| ValueCategory = prvalue +# 1223| getOperand(): [VariableAccess] x # 1223| Type = [IntType] int -# 1223| Value = [Literal] 2 -# 1223| ValueCategory = prvalue -# 1224| getStmt(4): [ExprStmt] ExprStmt -# 1224| getExpr(): [AssignExpr] ... = ... -# 1224| Type = [IntType] int -# 1224| ValueCategory = lvalue -# 1224| getLValue(): [VariableAccess] y -# 1224| Type = [IntType] int -# 1224| ValueCategory = lvalue -# 1224| getRValue(): [Literal] 3 -# 1224| Type = [IntType] int -# 1224| Value = [Literal] 3 -# 1224| ValueCategory = prvalue -# 1225| getStmt(5): [BreakStmt] break; -# 1227| getStmt(6): [SwitchCase] default: -# 1228| getStmt(7): [ExprStmt] ExprStmt -# 1228| getExpr(): [AssignExpr] ... = ... -# 1228| Type = [IntType] int -# 1228| ValueCategory = lvalue -# 1228| getLValue(): [VariableAccess] y -# 1228| Type = [IntType] int -# 1228| ValueCategory = lvalue -# 1228| getRValue(): [Literal] 4 -# 1228| Type = [IntType] int -# 1228| Value = [Literal] 4 -# 1228| ValueCategory = prvalue -# 1229| getStmt(2): [LabelStmt] label ...: -# 1230| getStmt(3): [DeclStmt] declaration -# 1230| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1230| Type = [IntType] int -# 1230| getVariable().getInitializer(): [Initializer] initializer for z -# 1230| getExpr(): [VariableAccess] y -# 1230| Type = [IntType] int -# 1230| ValueCategory = prvalue(load) -# 1231| getStmt(4): [ReturnStmt] return ... -# 1233| [TopLevelFunction] int staticLocalInit(int) -# 1233| <params>: -# 1233| getParameter(0): [Parameter] x -# 1233| Type = [IntType] int -# 1233| getEntryPoint(): [BlockStmt] { ... } -# 1234| getStmt(0): [DeclStmt] declaration -# 1234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1234| Type = [IntType] int -# 1234| getVariable().getInitializer(): [Initializer] initializer for a -# 1234| getExpr(): [Literal] 0 +# 1223| ValueCategory = lvalue +# 1223| getArgument(2): [SizeofTypeOperator] sizeof(int) +# 1223| Type = [LongType] unsigned long +# 1223| Value = [SizeofTypeOperator] 4 +# 1223| ValueCategory = prvalue +# 1223| getArgument(0).getFullyConverted(): [CStyleCast] (void *)... +# 1223| Conversion = [PointerConversion] pointer conversion +# 1223| Type = [VoidPointerType] void * +# 1223| ValueCategory = prvalue +# 1223| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... +# 1223| Conversion = [PointerConversion] pointer conversion +# 1223| Type = [VoidPointerType] void * +# 1223| ValueCategory = prvalue +# 1223| getArgument(2).getFullyConverted(): [CStyleCast] (int)... +# 1223| Conversion = [IntegralConversion] integral conversion +# 1223| Type = [IntType] int +# 1223| Value = [CStyleCast] 4 +# 1223| ValueCategory = prvalue +# 1224| getStmt(2): [ReturnStmt] return ... +# 1224| getExpr(): [VariableAccess] y +# 1224| Type = [IntType] int +# 1224| ValueCategory = prvalue(load) +# 1227| [TopLevelFunction] String ReturnObjectImpl() +# 1227| <params>: +# 1227| getEntryPoint(): [BlockStmt] { ... } +# 1228| getStmt(0): [ReturnStmt] return ... +# 1228| getExpr(): [ConstructorCall] call to String +# 1228| Type = [VoidType] void +# 1228| ValueCategory = prvalue +# 1228| getArgument(0): foo +# 1228| Type = [ArrayType] const char[4] +# 1228| Value = [StringLiteral] "foo" +# 1228| ValueCategory = lvalue +# 1228| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1228| Type = [PointerType] const char * +# 1228| ValueCategory = prvalue +# 1231| [TopLevelFunction] void switch1Case(int) +# 1231| <params>: +# 1231| getParameter(0): [Parameter] x +# 1231| Type = [IntType] int +# 1231| getEntryPoint(): [BlockStmt] { ... } +# 1232| getStmt(0): [DeclStmt] declaration +# 1232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1232| Type = [IntType] int +# 1232| getVariable().getInitializer(): [Initializer] initializer for y +# 1232| getExpr(): [Literal] 0 +# 1232| Type = [IntType] int +# 1232| Value = [Literal] 0 +# 1232| ValueCategory = prvalue +# 1233| getStmt(1): [SwitchStmt] switch (...) ... +# 1233| getExpr(): [VariableAccess] x +# 1233| Type = [IntType] int +# 1233| ValueCategory = prvalue(load) +# 1233| getStmt(): [BlockStmt] { ... } +# 1234| getStmt(0): [SwitchCase] case ...: +# 1234| getExpr(): [Literal] 1 # 1234| Type = [IntType] int -# 1234| Value = [Literal] 0 +# 1234| Value = [Literal] 1 # 1234| ValueCategory = prvalue -# 1235| getStmt(1): [DeclStmt] declaration -# 1235| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1235| Type = [IntType] int -# 1235| getVariable().getInitializer(): [Initializer] initializer for b -# 1235| getExpr(): [SizeofExprOperator] sizeof(<expr>) -# 1235| Type = [LongType] unsigned long -# 1235| Value = [SizeofExprOperator] 4 -# 1235| ValueCategory = prvalue -# 1235| getExprOperand(): [VariableAccess] x +# 1235| getStmt(1): [ExprStmt] ExprStmt +# 1235| getExpr(): [AssignExpr] ... = ... +# 1235| Type = [IntType] int +# 1235| ValueCategory = lvalue +# 1235| getLValue(): [VariableAccess] y # 1235| Type = [IntType] int # 1235| ValueCategory = lvalue -# 1235| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 1235| getRValue(): [Literal] 2 # 1235| Type = [IntType] int -# 1235| ValueCategory = lvalue -# 1235| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 1235| Conversion = [IntegralConversion] integral conversion -# 1235| Type = [IntType] int -# 1235| Value = [CStyleCast] 4 -# 1235| ValueCategory = prvalue -# 1236| getStmt(2): [DeclStmt] declaration -# 1236| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1236| Type = [IntType] int -# 1236| getVariable().getInitializer(): [Initializer] initializer for c -# 1236| getExpr(): [VariableAccess] x -# 1236| Type = [IntType] int -# 1236| ValueCategory = prvalue(load) -# 1237| getStmt(3): [DeclStmt] declaration -# 1237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1235| Value = [Literal] 2 +# 1235| ValueCategory = prvalue +# 1237| getStmt(2): [DeclStmt] declaration +# 1237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z # 1237| Type = [IntType] int -# 1239| getStmt(4): [ReturnStmt] return ... -# 1239| getExpr(): [AddExpr] ... + ... -# 1239| Type = [IntType] int -# 1239| ValueCategory = prvalue -# 1239| getLeftOperand(): [AddExpr] ... + ... -# 1239| Type = [IntType] int -# 1239| ValueCategory = prvalue -# 1239| getLeftOperand(): [AddExpr] ... + ... -# 1239| Type = [IntType] int -# 1239| ValueCategory = prvalue -# 1239| getLeftOperand(): [VariableAccess] a -# 1239| Type = [IntType] int -# 1239| ValueCategory = prvalue(load) -# 1239| getRightOperand(): [VariableAccess] b -# 1239| Type = [IntType] int -# 1239| ValueCategory = prvalue(load) -# 1239| getRightOperand(): [VariableAccess] c -# 1239| Type = [IntType] int -# 1239| ValueCategory = prvalue(load) -# 1239| getRightOperand(): [VariableAccess] d -# 1239| Type = [IntType] int -# 1239| ValueCategory = prvalue(load) -# 1242| [TopLevelFunction] void staticLocalWithConstructor(char const*) -# 1242| <params>: -# 1242| getParameter(0): [Parameter] dynamic -# 1242| Type = [PointerType] const char * -# 1242| getEntryPoint(): [BlockStmt] { ... } -# 1243| getStmt(0): [DeclStmt] declaration -# 1243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1243| Type = [Struct] String -#-----| getVariable().getInitializer(): [Initializer] initializer for a -#-----| getExpr(): [ConstructorCall] call to String -#-----| Type = [VoidType] void -#-----| ValueCategory = prvalue -# 1244| getStmt(1): [DeclStmt] declaration -# 1244| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1244| Type = [Struct] String -# 1244| getVariable().getInitializer(): [Initializer] initializer for b -# 1244| getExpr(): [ConstructorCall] call to String -# 1244| Type = [VoidType] void -# 1244| ValueCategory = prvalue -# 1244| getArgument(0): static -# 1244| Type = [ArrayType] const char[7] -# 1244| Value = [StringLiteral] "static" +# 1237| getVariable().getInitializer(): [Initializer] initializer for z +# 1237| getExpr(): [VariableAccess] y +# 1237| Type = [IntType] int +# 1237| ValueCategory = prvalue(load) +# 1238| getStmt(3): [ReturnStmt] return ... +# 1240| [TopLevelFunction] void switch2Case_fallthrough(int) +# 1240| <params>: +# 1240| getParameter(0): [Parameter] x +# 1240| Type = [IntType] int +# 1240| getEntryPoint(): [BlockStmt] { ... } +# 1241| getStmt(0): [DeclStmt] declaration +# 1241| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1241| Type = [IntType] int +# 1241| getVariable().getInitializer(): [Initializer] initializer for y +# 1241| getExpr(): [Literal] 0 +# 1241| Type = [IntType] int +# 1241| Value = [Literal] 0 +# 1241| ValueCategory = prvalue +# 1242| getStmt(1): [SwitchStmt] switch (...) ... +# 1242| getExpr(): [VariableAccess] x +# 1242| Type = [IntType] int +# 1242| ValueCategory = prvalue(load) +# 1242| getStmt(): [BlockStmt] { ... } +# 1243| getStmt(0): [SwitchCase] case ...: +# 1243| getExpr(): [Literal] 1 +# 1243| Type = [IntType] int +# 1243| Value = [Literal] 1 +# 1243| ValueCategory = prvalue +# 1244| getStmt(1): [ExprStmt] ExprStmt +# 1244| getExpr(): [AssignExpr] ... = ... +# 1244| Type = [IntType] int +# 1244| ValueCategory = lvalue +# 1244| getLValue(): [VariableAccess] y +# 1244| Type = [IntType] int # 1244| ValueCategory = lvalue -# 1244| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1244| Type = [PointerType] const char * +# 1244| getRValue(): [Literal] 2 +# 1244| Type = [IntType] int +# 1244| Value = [Literal] 2 # 1244| ValueCategory = prvalue -# 1245| getStmt(2): [DeclStmt] declaration -# 1245| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1245| Type = [Struct] String -# 1245| getVariable().getInitializer(): [Initializer] initializer for c -# 1245| getExpr(): [ConstructorCall] call to String -# 1245| Type = [VoidType] void +# 1245| getStmt(2): [SwitchCase] case ...: +# 1245| getExpr(): [Literal] 2 +# 1245| Type = [IntType] int +# 1245| Value = [Literal] 2 # 1245| ValueCategory = prvalue -# 1245| getArgument(0): [VariableAccess] dynamic -# 1245| Type = [PointerType] const char * -# 1245| ValueCategory = prvalue(load) -# 1246| getStmt(3): [ReturnStmt] return ... -# 1250| [TopLevelFunction] char* strcpy(char*, char const*) -# 1250| <params>: -# 1250| getParameter(0): [Parameter] destination -# 1250| Type = [CharPointerType] char * -# 1250| getParameter(1): [Parameter] source -# 1250| Type = [PointerType] const char * -# 1251| [TopLevelFunction] char* strcat(char*, char const*) +# 1246| getStmt(3): [ExprStmt] ExprStmt +# 1246| getExpr(): [AssignExpr] ... = ... +# 1246| Type = [IntType] int +# 1246| ValueCategory = lvalue +# 1246| getLValue(): [VariableAccess] y +# 1246| Type = [IntType] int +# 1246| ValueCategory = lvalue +# 1246| getRValue(): [Literal] 3 +# 1246| Type = [IntType] int +# 1246| Value = [Literal] 3 +# 1246| ValueCategory = prvalue +# 1248| getStmt(2): [DeclStmt] declaration +# 1248| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1248| Type = [IntType] int +# 1248| getVariable().getInitializer(): [Initializer] initializer for z +# 1248| getExpr(): [VariableAccess] y +# 1248| Type = [IntType] int +# 1248| ValueCategory = prvalue(load) +# 1249| getStmt(3): [ReturnStmt] return ... +# 1251| [TopLevelFunction] void switch2Case(int) # 1251| <params>: -# 1251| getParameter(0): [Parameter] destination -# 1251| Type = [CharPointerType] char * -# 1251| getParameter(1): [Parameter] source -# 1251| Type = [PointerType] const char * -# 1253| [TopLevelFunction] void test_strings(char*, char*) -# 1253| <params>: -# 1253| getParameter(0): [Parameter] s1 -# 1253| Type = [CharPointerType] char * -# 1253| getParameter(1): [Parameter] s2 -# 1253| Type = [CharPointerType] char * -# 1253| getEntryPoint(): [BlockStmt] { ... } -# 1254| getStmt(0): [DeclStmt] declaration -# 1254| getDeclarationEntry(0): [VariableDeclarationEntry] definition of buffer -# 1254| Type = [ArrayType] char[1024] -# 1254| getVariable().getInitializer(): [Initializer] initializer for buffer -# 1254| getExpr(): [ArrayAggregateLiteral] {...} -# 1254| Type = [ArrayType] char[1024] +# 1251| getParameter(0): [Parameter] x +# 1251| Type = [IntType] int +# 1251| getEntryPoint(): [BlockStmt] { ... } +# 1252| getStmt(0): [DeclStmt] declaration +# 1252| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1252| Type = [IntType] int +# 1252| getVariable().getInitializer(): [Initializer] initializer for y +# 1252| getExpr(): [Literal] 0 +# 1252| Type = [IntType] int +# 1252| Value = [Literal] 0 +# 1252| ValueCategory = prvalue +# 1253| getStmt(1): [SwitchStmt] switch (...) ... +# 1253| getExpr(): [VariableAccess] x +# 1253| Type = [IntType] int +# 1253| ValueCategory = prvalue(load) +# 1253| getStmt(): [BlockStmt] { ... } +# 1254| getStmt(0): [SwitchCase] case ...: +# 1254| getExpr(): [Literal] 1 +# 1254| Type = [IntType] int +# 1254| Value = [Literal] 1 # 1254| ValueCategory = prvalue -# 1254| getAnElementExpr(0): [Literal] 0 -# 1254| Type = [IntType] int -# 1254| Value = [Literal] 0 -# 1254| ValueCategory = prvalue -# 1254| getAnElementExpr(0).getFullyConverted(): [CStyleCast] (char)... -# 1254| Conversion = [IntegralConversion] integral conversion -# 1254| Type = [PlainCharType] char -# 1254| Value = [CStyleCast] 0 -# 1254| ValueCategory = prvalue -# 1256| getStmt(1): [ExprStmt] ExprStmt -# 1256| getExpr(): [FunctionCall] call to strcpy -# 1256| Type = [CharPointerType] char * -# 1256| ValueCategory = prvalue -# 1256| getArgument(0): [VariableAccess] buffer -# 1256| Type = [ArrayType] char[1024] -# 1256| ValueCategory = lvalue -# 1256| getArgument(1): [VariableAccess] s1 -# 1256| Type = [CharPointerType] char * -# 1256| ValueCategory = prvalue(load) -# 1256| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1256| Type = [CharPointerType] char * -# 1256| ValueCategory = prvalue -# 1256| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... -# 1256| Conversion = [PointerConversion] pointer conversion -# 1256| Type = [PointerType] const char * -# 1256| ValueCategory = prvalue -# 1257| getStmt(2): [ExprStmt] ExprStmt -# 1257| getExpr(): [FunctionCall] call to strcat -# 1257| Type = [CharPointerType] char * -# 1257| ValueCategory = prvalue -# 1257| getArgument(0): [VariableAccess] buffer -# 1257| Type = [ArrayType] char[1024] -# 1257| ValueCategory = lvalue -# 1257| getArgument(1): [VariableAccess] s2 -# 1257| Type = [CharPointerType] char * -# 1257| ValueCategory = prvalue(load) -# 1257| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1257| Type = [CharPointerType] char * -# 1257| ValueCategory = prvalue -# 1257| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... -# 1257| Conversion = [PointerConversion] pointer conversion -# 1257| Type = [PointerType] const char * -# 1257| ValueCategory = prvalue -# 1258| getStmt(3): [ReturnStmt] return ... -# 1260| [CopyAssignmentOperator] A& A::operator=(A const&) -# 1260| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const A & -# 1260| [MoveAssignmentOperator] A& A::operator=(A&&) -# 1260| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] A && -# 1263| [MemberFunction] void A::static_member(A*, int) +# 1255| getStmt(1): [ExprStmt] ExprStmt +# 1255| getExpr(): [AssignExpr] ... = ... +# 1255| Type = [IntType] int +# 1255| ValueCategory = lvalue +# 1255| getLValue(): [VariableAccess] y +# 1255| Type = [IntType] int +# 1255| ValueCategory = lvalue +# 1255| getRValue(): [Literal] 2 +# 1255| Type = [IntType] int +# 1255| Value = [Literal] 2 +# 1255| ValueCategory = prvalue +# 1256| getStmt(2): [BreakStmt] break; +# 1257| getStmt(3): [SwitchCase] case ...: +# 1257| getExpr(): [Literal] 2 +# 1257| Type = [IntType] int +# 1257| Value = [Literal] 2 +# 1257| ValueCategory = prvalue +# 1258| getStmt(4): [ExprStmt] ExprStmt +# 1258| getExpr(): [AssignExpr] ... = ... +# 1258| Type = [IntType] int +# 1258| ValueCategory = lvalue +# 1258| getLValue(): [VariableAccess] y +# 1258| Type = [IntType] int +# 1258| ValueCategory = lvalue +# 1258| getRValue(): [Literal] 3 +# 1258| Type = [IntType] int +# 1258| Value = [Literal] 3 +# 1258| ValueCategory = prvalue +# 1259| getStmt(2): [LabelStmt] label ...: +# 1260| getStmt(3): [DeclStmt] declaration +# 1260| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1260| Type = [IntType] int +# 1260| getVariable().getInitializer(): [Initializer] initializer for z +# 1260| getExpr(): [VariableAccess] y +# 1260| Type = [IntType] int +# 1260| ValueCategory = prvalue(load) +# 1261| getStmt(4): [ReturnStmt] return ... +# 1263| [TopLevelFunction] void switch2Case_default(int) # 1263| <params>: -# 1263| getParameter(0): [Parameter] a -# 1263| Type = [PointerType] A * -# 1263| getParameter(1): [Parameter] x +# 1263| getParameter(0): [Parameter] x # 1263| Type = [IntType] int # 1263| getEntryPoint(): [BlockStmt] { ... } -# 1264| getStmt(0): [ExprStmt] ExprStmt -# 1264| getExpr(): [AssignExpr] ... = ... +# 1264| getStmt(0): [DeclStmt] declaration +# 1264| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1264| Type = [IntType] int -# 1264| ValueCategory = lvalue -# 1264| getLValue(): [PointerFieldAccess] member -# 1264| Type = [IntType] int -# 1264| ValueCategory = lvalue -# 1264| getQualifier(): [VariableAccess] a -# 1264| Type = [PointerType] A * -# 1264| ValueCategory = prvalue(load) -# 1264| getRValue(): [VariableAccess] x -# 1264| Type = [IntType] int -# 1264| ValueCategory = prvalue(load) -# 1265| getStmt(1): [ReturnStmt] return ... -# 1267| [MemberFunction] void A::static_member_without_def() -# 1267| <params>: -# 1270| [TopLevelFunction] A* getAnInstanceOfA() -# 1270| <params>: -# 1272| [TopLevelFunction] void test_static_member_functions(int, A*) -# 1272| <params>: -# 1272| getParameter(0): [Parameter] int_arg -# 1272| Type = [IntType] int -# 1272| getParameter(1): [Parameter] a_arg -# 1272| Type = [PointerType] A * -# 1272| getEntryPoint(): [BlockStmt] { ... } -# 1273| getStmt(0): [DeclStmt] declaration -# 1273| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1273| Type = [Class] C -# 1273| getVariable().getInitializer(): [Initializer] initializer for c -# 1273| getExpr(): [ConstructorCall] call to C -# 1273| Type = [VoidType] void -# 1273| ValueCategory = prvalue -# 1274| getStmt(1): [ExprStmt] ExprStmt -# 1274| getExpr(): [FunctionCall] call to StaticMemberFunction -# 1274| Type = [IntType] int -# 1274| ValueCategory = prvalue -# 1274| getQualifier(): [VariableAccess] c -# 1274| Type = [Class] C -# 1274| ValueCategory = lvalue -# 1274| getArgument(0): [Literal] 10 -# 1274| Type = [IntType] int -# 1274| Value = [Literal] 10 -# 1274| ValueCategory = prvalue -# 1275| getStmt(2): [ExprStmt] ExprStmt -# 1275| getExpr(): [FunctionCall] call to StaticMemberFunction -# 1275| Type = [IntType] int -# 1275| ValueCategory = prvalue -# 1275| getArgument(0): [Literal] 10 -# 1275| Type = [IntType] int -# 1275| Value = [Literal] 10 -# 1275| ValueCategory = prvalue +# 1264| getVariable().getInitializer(): [Initializer] initializer for y +# 1264| getExpr(): [Literal] 0 +# 1264| Type = [IntType] int +# 1264| Value = [Literal] 0 +# 1264| ValueCategory = prvalue +# 1265| getStmt(1): [SwitchStmt] switch (...) ... +# 1265| getExpr(): [VariableAccess] x +# 1265| Type = [IntType] int +# 1265| ValueCategory = prvalue(load) +# 1265| getStmt(): [BlockStmt] { ... } +# 1266| getStmt(0): [SwitchCase] case ...: +# 1266| getExpr(): [Literal] 1 +# 1266| Type = [IntType] int +# 1266| Value = [Literal] 1 +# 1266| ValueCategory = prvalue +# 1267| getStmt(1): [ExprStmt] ExprStmt +# 1267| getExpr(): [AssignExpr] ... = ... +# 1267| Type = [IntType] int +# 1267| ValueCategory = lvalue +# 1267| getLValue(): [VariableAccess] y +# 1267| Type = [IntType] int +# 1267| ValueCategory = lvalue +# 1267| getRValue(): [Literal] 2 +# 1267| Type = [IntType] int +# 1267| Value = [Literal] 2 +# 1267| ValueCategory = prvalue +# 1268| getStmt(2): [BreakStmt] break; +# 1270| getStmt(3): [SwitchCase] case ...: +# 1270| getExpr(): [Literal] 2 +# 1270| Type = [IntType] int +# 1270| Value = [Literal] 2 +# 1270| ValueCategory = prvalue +# 1271| getStmt(4): [ExprStmt] ExprStmt +# 1271| getExpr(): [AssignExpr] ... = ... +# 1271| Type = [IntType] int +# 1271| ValueCategory = lvalue +# 1271| getLValue(): [VariableAccess] y +# 1271| Type = [IntType] int +# 1271| ValueCategory = lvalue +# 1271| getRValue(): [Literal] 3 +# 1271| Type = [IntType] int +# 1271| Value = [Literal] 3 +# 1271| ValueCategory = prvalue +# 1272| getStmt(5): [BreakStmt] break; +# 1274| getStmt(6): [SwitchCase] default: +# 1275| getStmt(7): [ExprStmt] ExprStmt +# 1275| getExpr(): [AssignExpr] ... = ... +# 1275| Type = [IntType] int +# 1275| ValueCategory = lvalue +# 1275| getLValue(): [VariableAccess] y +# 1275| Type = [IntType] int +# 1275| ValueCategory = lvalue +# 1275| getRValue(): [Literal] 4 +# 1275| Type = [IntType] int +# 1275| Value = [Literal] 4 +# 1275| ValueCategory = prvalue +# 1276| getStmt(2): [LabelStmt] label ...: # 1277| getStmt(3): [DeclStmt] declaration -# 1277| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1277| Type = [Struct] A -# 1278| getStmt(4): [ExprStmt] ExprStmt -# 1278| getExpr(): [FunctionCall] call to static_member -# 1278| Type = [VoidType] void -# 1278| ValueCategory = prvalue -# 1278| getQualifier(): [VariableAccess] a -# 1278| Type = [Struct] A -# 1278| ValueCategory = lvalue -# 1278| getArgument(0): [AddressOfExpr] & ... -# 1278| Type = [PointerType] A * -# 1278| ValueCategory = prvalue -# 1278| getOperand(): [VariableAccess] a -# 1278| Type = [Struct] A -# 1278| ValueCategory = lvalue -# 1278| getArgument(1): [VariableAccess] int_arg -# 1278| Type = [IntType] int -# 1278| ValueCategory = prvalue(load) -# 1279| getStmt(5): [ExprStmt] ExprStmt -# 1279| getExpr(): [FunctionCall] call to static_member -# 1279| Type = [VoidType] void -# 1279| ValueCategory = prvalue -# 1279| getArgument(0): [AddressOfExpr] & ... -# 1279| Type = [PointerType] A * -# 1279| ValueCategory = prvalue -# 1279| getOperand(): [VariableAccess] a -# 1279| Type = [Struct] A -# 1279| ValueCategory = lvalue -# 1279| getArgument(1): [VariableAccess] int_arg -# 1279| Type = [IntType] int -# 1279| ValueCategory = prvalue(load) -# 1281| getStmt(6): [ExprStmt] ExprStmt -# 1281| getExpr(): [FunctionCall] call to static_member -# 1281| Type = [VoidType] void -# 1281| ValueCategory = prvalue -# 1281| getQualifier(): [AddressOfExpr] & ... -# 1281| Type = [PointerType] A * -# 1281| ValueCategory = prvalue -# 1281| getOperand(): [VariableAccess] a -# 1281| Type = [Struct] A -# 1281| ValueCategory = lvalue -# 1281| getArgument(0): [VariableAccess] a_arg -# 1281| Type = [PointerType] A * -# 1281| ValueCategory = prvalue(load) -# 1281| getArgument(1): [AddExpr] ... + ... -# 1281| Type = [IntType] int -# 1281| ValueCategory = prvalue -# 1281| getLeftOperand(): [VariableAccess] int_arg +# 1277| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1277| Type = [IntType] int +# 1277| getVariable().getInitializer(): [Initializer] initializer for z +# 1277| getExpr(): [VariableAccess] y +# 1277| Type = [IntType] int +# 1277| ValueCategory = prvalue(load) +# 1278| getStmt(4): [ReturnStmt] return ... +# 1280| [TopLevelFunction] int staticLocalInit(int) +# 1280| <params>: +# 1280| getParameter(0): [Parameter] x +# 1280| Type = [IntType] int +# 1280| getEntryPoint(): [BlockStmt] { ... } +# 1281| getStmt(0): [DeclStmt] declaration +# 1281| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 1281| Type = [IntType] int +# 1281| getVariable().getInitializer(): [Initializer] initializer for a +# 1281| getExpr(): [Literal] 0 # 1281| Type = [IntType] int -# 1281| ValueCategory = prvalue(load) -# 1281| getRightOperand(): [Literal] 2 -# 1281| Type = [IntType] int -# 1281| Value = [Literal] 2 +# 1281| Value = [Literal] 0 # 1281| ValueCategory = prvalue -# 1281| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 1281| Type = [PointerType] A * -# 1281| ValueCategory = prvalue -# 1282| getStmt(7): [ExprStmt] ExprStmt -# 1282| getExpr(): [FunctionCall] call to static_member -# 1282| Type = [VoidType] void -# 1282| ValueCategory = prvalue -# 1282| getQualifier(): [PointerDereferenceExpr] * ... -# 1282| Type = [Struct] A -# 1282| ValueCategory = lvalue -# 1282| getOperand(): [VariableAccess] a_arg -# 1282| Type = [PointerType] A * -# 1282| ValueCategory = prvalue(load) -# 1282| getArgument(0): [AddressOfExpr] & ... -# 1282| Type = [PointerType] A * -# 1282| ValueCategory = prvalue -# 1282| getOperand(): [VariableAccess] a -# 1282| Type = [Struct] A -# 1282| ValueCategory = lvalue -# 1282| getArgument(1): [Literal] 99 -# 1282| Type = [IntType] int -# 1282| Value = [Literal] 99 -# 1282| ValueCategory = prvalue -# 1282| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 1282| Type = [Struct] A -# 1282| ValueCategory = lvalue -# 1283| getStmt(8): [ExprStmt] ExprStmt -# 1283| getExpr(): [FunctionCall] call to static_member -# 1283| Type = [VoidType] void -# 1283| ValueCategory = prvalue -# 1283| getQualifier(): [VariableAccess] a_arg -# 1283| Type = [PointerType] A * -# 1283| ValueCategory = prvalue(load) -# 1283| getArgument(0): [VariableAccess] a_arg -# 1283| Type = [PointerType] A * -# 1283| ValueCategory = prvalue(load) -# 1283| getArgument(1): [UnaryMinusExpr] - ... -# 1283| Type = [IntType] int -# 1283| Value = [UnaryMinusExpr] -1 -# 1283| ValueCategory = prvalue -# 1283| getOperand(): [Literal] 1 +# 1282| getStmt(1): [DeclStmt] declaration +# 1282| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1282| Type = [IntType] int +# 1282| getVariable().getInitializer(): [Initializer] initializer for b +# 1282| getExpr(): [SizeofExprOperator] sizeof(<expr>) +# 1282| Type = [LongType] unsigned long +# 1282| Value = [SizeofExprOperator] 4 +# 1282| ValueCategory = prvalue +# 1282| getExprOperand(): [VariableAccess] x +# 1282| Type = [IntType] int +# 1282| ValueCategory = lvalue +# 1282| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 1282| Type = [IntType] int +# 1282| ValueCategory = lvalue +# 1282| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 1282| Conversion = [IntegralConversion] integral conversion +# 1282| Type = [IntType] int +# 1282| Value = [CStyleCast] 4 +# 1282| ValueCategory = prvalue +# 1283| getStmt(2): [DeclStmt] declaration +# 1283| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1283| Type = [IntType] int +# 1283| getVariable().getInitializer(): [Initializer] initializer for c +# 1283| getExpr(): [VariableAccess] x # 1283| Type = [IntType] int -# 1283| Value = [Literal] 1 -# 1283| ValueCategory = prvalue -# 1285| getStmt(9): [ExprStmt] ExprStmt -# 1285| getExpr(): [FunctionCall] call to static_member_without_def -# 1285| Type = [VoidType] void -# 1285| ValueCategory = prvalue -# 1285| getQualifier(): [VariableAccess] a -# 1285| Type = [Struct] A -# 1285| ValueCategory = lvalue -# 1286| getStmt(10): [ExprStmt] ExprStmt -# 1286| getExpr(): [FunctionCall] call to static_member_without_def -# 1286| Type = [VoidType] void +# 1283| ValueCategory = prvalue(load) +# 1284| getStmt(3): [DeclStmt] declaration +# 1284| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1284| Type = [IntType] int +# 1286| getStmt(4): [ReturnStmt] return ... +# 1286| getExpr(): [AddExpr] ... + ... +# 1286| Type = [IntType] int # 1286| ValueCategory = prvalue -# 1288| getStmt(11): [ExprStmt] ExprStmt -# 1288| getExpr(): [FunctionCall] call to static_member_without_def -# 1288| Type = [VoidType] void -# 1288| ValueCategory = prvalue -# 1288| getQualifier(): [FunctionCall] call to getAnInstanceOfA -# 1288| Type = [PointerType] A * -# 1288| ValueCategory = prvalue -# 1289| getStmt(12): [ReturnStmt] return ... -# 1289| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1289| Type = [VoidType] void -# 1289| ValueCategory = prvalue -# 1289| getQualifier(): [VariableAccess] c -# 1289| Type = [Class] C -# 1289| ValueCategory = lvalue -# 1291| [TopLevelFunction] int missingReturnValue(bool, int) -# 1291| <params>: -# 1291| getParameter(0): [Parameter] b -# 1291| Type = [BoolType] bool -# 1291| getParameter(1): [Parameter] x -# 1291| Type = [IntType] int -# 1291| getEntryPoint(): [BlockStmt] { ... } -# 1292| getStmt(0): [IfStmt] if (...) ... -# 1292| getCondition(): [VariableAccess] b -# 1292| Type = [BoolType] bool -# 1292| ValueCategory = prvalue(load) -# 1292| getThen(): [BlockStmt] { ... } -# 1293| getStmt(0): [ReturnStmt] return ... -# 1293| getExpr(): [VariableAccess] x -# 1293| Type = [IntType] int -# 1293| ValueCategory = prvalue(load) -# 1295| getStmt(1): [ReturnStmt] return ... -# 1297| [TopLevelFunction] void returnVoid(int, int) +# 1286| getLeftOperand(): [AddExpr] ... + ... +# 1286| Type = [IntType] int +# 1286| ValueCategory = prvalue +# 1286| getLeftOperand(): [AddExpr] ... + ... +# 1286| Type = [IntType] int +# 1286| ValueCategory = prvalue +# 1286| getLeftOperand(): [VariableAccess] a +# 1286| Type = [IntType] int +# 1286| ValueCategory = prvalue(load) +# 1286| getRightOperand(): [VariableAccess] b +# 1286| Type = [IntType] int +# 1286| ValueCategory = prvalue(load) +# 1286| getRightOperand(): [VariableAccess] c +# 1286| Type = [IntType] int +# 1286| ValueCategory = prvalue(load) +# 1286| getRightOperand(): [VariableAccess] d +# 1286| Type = [IntType] int +# 1286| ValueCategory = prvalue(load) +# 1289| [TopLevelFunction] void staticLocalWithConstructor(char const*) +# 1289| <params>: +# 1289| getParameter(0): [Parameter] dynamic +# 1289| Type = [PointerType] const char * +# 1289| getEntryPoint(): [BlockStmt] { ... } +# 1290| getStmt(0): [DeclStmt] declaration +# 1290| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 1290| Type = [Struct] String +#-----| getVariable().getInitializer(): [Initializer] initializer for a +#-----| getExpr(): [ConstructorCall] call to String +#-----| Type = [VoidType] void +#-----| ValueCategory = prvalue +# 1291| getStmt(1): [DeclStmt] declaration +# 1291| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1291| Type = [Struct] String +# 1291| getVariable().getInitializer(): [Initializer] initializer for b +# 1291| getExpr(): [ConstructorCall] call to String +# 1291| Type = [VoidType] void +# 1291| ValueCategory = prvalue +# 1291| getArgument(0): static +# 1291| Type = [ArrayType] const char[7] +# 1291| Value = [StringLiteral] "static" +# 1291| ValueCategory = lvalue +# 1291| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1291| Type = [PointerType] const char * +# 1291| ValueCategory = prvalue +# 1292| getStmt(2): [DeclStmt] declaration +# 1292| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1292| Type = [Struct] String +# 1292| getVariable().getInitializer(): [Initializer] initializer for c +# 1292| getExpr(): [ConstructorCall] call to String +# 1292| Type = [VoidType] void +# 1292| ValueCategory = prvalue +# 1292| getArgument(0): [VariableAccess] dynamic +# 1292| Type = [PointerType] const char * +# 1292| ValueCategory = prvalue(load) +# 1293| getStmt(3): [ReturnStmt] return ... +# 1297| [TopLevelFunction] char* strcpy(char*, char const*) # 1297| <params>: -# 1297| getParameter(0): [Parameter] x -# 1297| Type = [IntType] int -# 1297| getParameter(1): [Parameter] y -# 1297| Type = [IntType] int -# 1297| getEntryPoint(): [BlockStmt] { ... } -# 1298| getStmt(0): [ReturnStmt] return ... -# 1298| getExpr(): [FunctionCall] call to IntegerOps -# 1298| Type = [VoidType] void -# 1298| ValueCategory = prvalue -# 1298| getArgument(0): [VariableAccess] x -# 1298| Type = [IntType] int -# 1298| ValueCategory = prvalue(load) -# 1298| getArgument(1): [VariableAccess] y -# 1298| Type = [IntType] int -# 1298| ValueCategory = prvalue(load) -# 1301| [TopLevelFunction] void gccBinaryConditional(bool, int, long) -# 1301| <params>: -# 1301| getParameter(0): [Parameter] b -# 1301| Type = [BoolType] bool -# 1301| getParameter(1): [Parameter] x -# 1301| Type = [IntType] int -# 1301| getParameter(2): [Parameter] y -# 1301| Type = [LongType] long -# 1301| getEntryPoint(): [BlockStmt] { ... } -# 1302| getStmt(0): [DeclStmt] declaration -# 1302| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1302| Type = [IntType] int -# 1302| getVariable().getInitializer(): [Initializer] initializer for z -# 1302| getExpr(): [VariableAccess] x -# 1302| Type = [IntType] int -# 1302| ValueCategory = prvalue(load) +# 1297| getParameter(0): [Parameter] destination +# 1297| Type = [CharPointerType] char * +# 1297| getParameter(1): [Parameter] source +# 1297| Type = [PointerType] const char * +# 1298| [TopLevelFunction] char* strcat(char*, char const*) +# 1298| <params>: +# 1298| getParameter(0): [Parameter] destination +# 1298| Type = [CharPointerType] char * +# 1298| getParameter(1): [Parameter] source +# 1298| Type = [PointerType] const char * +# 1300| [TopLevelFunction] void test_strings(char*, char*) +# 1300| <params>: +# 1300| getParameter(0): [Parameter] s1 +# 1300| Type = [CharPointerType] char * +# 1300| getParameter(1): [Parameter] s2 +# 1300| Type = [CharPointerType] char * +# 1300| getEntryPoint(): [BlockStmt] { ... } +# 1301| getStmt(0): [DeclStmt] declaration +# 1301| getDeclarationEntry(0): [VariableDeclarationEntry] definition of buffer +# 1301| Type = [ArrayType] char[1024] +# 1301| getVariable().getInitializer(): [Initializer] initializer for buffer +# 1301| getExpr(): [ArrayAggregateLiteral] {...} +# 1301| Type = [ArrayType] char[1024] +# 1301| ValueCategory = prvalue +# 1301| getAnElementExpr(0): [Literal] 0 +# 1301| Type = [IntType] int +# 1301| Value = [Literal] 0 +# 1301| ValueCategory = prvalue +# 1301| getAnElementExpr(0).getFullyConverted(): [CStyleCast] (char)... +# 1301| Conversion = [IntegralConversion] integral conversion +# 1301| Type = [PlainCharType] char +# 1301| Value = [CStyleCast] 0 +# 1301| ValueCategory = prvalue # 1303| getStmt(1): [ExprStmt] ExprStmt -# 1303| getExpr(): [AssignExpr] ... = ... -# 1303| Type = [IntType] int -# 1303| ValueCategory = lvalue -# 1303| getLValue(): [VariableAccess] z -# 1303| Type = [IntType] int +# 1303| getExpr(): [FunctionCall] call to strcpy +# 1303| Type = [CharPointerType] char * +# 1303| ValueCategory = prvalue +# 1303| getArgument(0): [VariableAccess] buffer +# 1303| Type = [ArrayType] char[1024] # 1303| ValueCategory = lvalue -# 1303| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1303| Type = [IntType] int +# 1303| getArgument(1): [VariableAccess] s1 +# 1303| Type = [CharPointerType] char * # 1303| ValueCategory = prvalue(load) -# 1303| getCondition(): [VariableAccess] b -# 1303| Type = [BoolType] bool -# 1303| ValueCategory = prvalue(load) -# 1303| getElse(): [VariableAccess] x -# 1303| Type = [IntType] int -# 1303| ValueCategory = prvalue(load) +# 1303| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1303| Type = [CharPointerType] char * +# 1303| ValueCategory = prvalue +# 1303| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... +# 1303| Conversion = [PointerConversion] pointer conversion +# 1303| Type = [PointerType] const char * +# 1303| ValueCategory = prvalue # 1304| getStmt(2): [ExprStmt] ExprStmt -# 1304| getExpr(): [AssignExpr] ... = ... -# 1304| Type = [IntType] int -# 1304| ValueCategory = lvalue -# 1304| getLValue(): [VariableAccess] z -# 1304| Type = [IntType] int +# 1304| getExpr(): [FunctionCall] call to strcat +# 1304| Type = [CharPointerType] char * +# 1304| ValueCategory = prvalue +# 1304| getArgument(0): [VariableAccess] buffer +# 1304| Type = [ArrayType] char[1024] # 1304| ValueCategory = lvalue -# 1304| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1304| Type = [LongType] long +# 1304| getArgument(1): [VariableAccess] s2 +# 1304| Type = [CharPointerType] char * # 1304| ValueCategory = prvalue(load) -# 1304| getCondition(): [VariableAccess] b -# 1304| Type = [BoolType] bool -# 1304| ValueCategory = prvalue(load) -# 1304| getElse(): [VariableAccess] y -# 1304| Type = [LongType] long -# 1304| ValueCategory = prvalue(load) -# 1304| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1304| Conversion = [IntegralConversion] integral conversion -# 1304| Type = [IntType] int +# 1304| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1304| Type = [CharPointerType] char * # 1304| ValueCategory = prvalue -# 1305| getStmt(3): [ExprStmt] ExprStmt -# 1305| getExpr(): [AssignExpr] ... = ... -# 1305| Type = [IntType] int -# 1305| ValueCategory = lvalue -# 1305| getLValue(): [VariableAccess] z -# 1305| Type = [IntType] int -# 1305| ValueCategory = lvalue -# 1305| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1305| Type = [IntType] int -# 1305| ValueCategory = prvalue(load) -# 1305| getCondition(): [VariableAccess] x -# 1305| Type = [IntType] int -# 1305| ValueCategory = prvalue(load) -# 1305| getElse(): [VariableAccess] x -# 1305| Type = [IntType] int -# 1305| ValueCategory = prvalue(load) -# 1305| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1305| Conversion = [BoolConversion] conversion to bool -# 1305| Type = [BoolType] bool -# 1305| ValueCategory = prvalue -# 1306| getStmt(4): [ExprStmt] ExprStmt -# 1306| getExpr(): [AssignExpr] ... = ... -# 1306| Type = [IntType] int -# 1306| ValueCategory = lvalue -# 1306| getLValue(): [VariableAccess] z -# 1306| Type = [IntType] int -# 1306| ValueCategory = lvalue -# 1306| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1306| Type = [LongType] long -# 1306| ValueCategory = prvalue(load) -# 1306| getCondition(): [VariableAccess] x -# 1306| Type = [IntType] int -# 1306| ValueCategory = prvalue(load) -# 1306| getElse(): [VariableAccess] y -# 1306| Type = [LongType] long -# 1306| ValueCategory = prvalue(load) -# 1306| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1306| Conversion = [BoolConversion] conversion to bool -# 1306| Type = [BoolType] bool -# 1306| ValueCategory = prvalue -# 1306| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1306| Conversion = [IntegralConversion] integral conversion -# 1306| Type = [IntType] int -# 1306| ValueCategory = prvalue -# 1307| getStmt(5): [ExprStmt] ExprStmt -# 1307| getExpr(): [AssignExpr] ... = ... -# 1307| Type = [IntType] int -# 1307| ValueCategory = lvalue -# 1307| getLValue(): [VariableAccess] z -# 1307| Type = [IntType] int -# 1307| ValueCategory = lvalue -# 1307| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1307| Type = [LongType] long -# 1307| ValueCategory = prvalue(load) -# 1307| getCondition(): [VariableAccess] y -# 1307| Type = [LongType] long -# 1307| ValueCategory = prvalue(load) -# 1307| getElse(): [VariableAccess] x -# 1307| Type = [IntType] int -# 1307| ValueCategory = prvalue(load) -# 1307| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1307| Conversion = [BoolConversion] conversion to bool -# 1307| Type = [BoolType] bool -# 1307| ValueCategory = prvalue -# 1307| getElse().getFullyConverted(): [CStyleCast] (long)... -# 1307| Conversion = [IntegralConversion] integral conversion -# 1307| Type = [LongType] long -# 1307| ValueCategory = prvalue -# 1307| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1307| Conversion = [IntegralConversion] integral conversion -# 1307| Type = [IntType] int -# 1307| ValueCategory = prvalue -# 1308| getStmt(6): [ExprStmt] ExprStmt -# 1308| getExpr(): [AssignExpr] ... = ... -# 1308| Type = [IntType] int -# 1308| ValueCategory = lvalue -# 1308| getLValue(): [VariableAccess] z -# 1308| Type = [IntType] int -# 1308| ValueCategory = lvalue -# 1308| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1308| Type = [LongType] long -# 1308| ValueCategory = prvalue(load) -# 1308| getCondition(): [VariableAccess] y -# 1308| Type = [LongType] long -# 1308| ValueCategory = prvalue(load) -# 1308| getElse(): [VariableAccess] y -# 1308| Type = [LongType] long -# 1308| ValueCategory = prvalue(load) -# 1308| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1308| Conversion = [BoolConversion] conversion to bool -# 1308| Type = [BoolType] bool -# 1308| ValueCategory = prvalue -# 1308| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1308| Conversion = [IntegralConversion] integral conversion -# 1308| Type = [IntType] int -# 1308| ValueCategory = prvalue -# 1310| getStmt(7): [ExprStmt] ExprStmt -# 1310| getExpr(): [AssignExpr] ... = ... -# 1310| Type = [IntType] int -# 1310| ValueCategory = lvalue -# 1310| getLValue(): [VariableAccess] z -# 1310| Type = [IntType] int -# 1310| ValueCategory = lvalue -# 1310| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1310| Type = [IntType] int -# 1310| ValueCategory = prvalue(load) -# 1310| getCondition(): [LogicalOrExpr] ... || ... -# 1310| Type = [BoolType] bool -# 1310| ValueCategory = prvalue -# 1310| getLeftOperand(): [LogicalAndExpr] ... && ... -# 1310| Type = [BoolType] bool -# 1310| ValueCategory = prvalue -# 1310| getLeftOperand(): [VariableAccess] x -# 1310| Type = [IntType] int -# 1310| ValueCategory = prvalue(load) -# 1310| getRightOperand(): [VariableAccess] b -# 1310| Type = [BoolType] bool -# 1310| ValueCategory = prvalue(load) -# 1310| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... -# 1310| Conversion = [BoolConversion] conversion to bool -# 1310| Type = [BoolType] bool -# 1310| ValueCategory = prvalue -# 1310| getRightOperand(): [VariableAccess] y -# 1310| Type = [LongType] long -# 1310| ValueCategory = prvalue(load) -# 1310| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... -# 1310| Conversion = [BoolConversion] conversion to bool -# 1310| Type = [BoolType] bool -# 1310| ValueCategory = prvalue -# 1310| getElse(): [VariableAccess] x -# 1310| Type = [IntType] int -# 1310| ValueCategory = prvalue(load) -# 1310| getCondition().getFullyConverted(): [ParenthesisExpr] (...) -# 1310| Type = [BoolType] bool -# 1310| ValueCategory = prvalue -# 1311| getStmt(8): [ReturnStmt] return ... -# 1313| [TopLevelFunction] bool predicateA() -# 1313| <params>: -# 1314| [TopLevelFunction] bool predicateB() +# 1304| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... +# 1304| Conversion = [PointerConversion] pointer conversion +# 1304| Type = [PointerType] const char * +# 1304| ValueCategory = prvalue +# 1305| getStmt(3): [ReturnStmt] return ... +# 1307| [CopyAssignmentOperator] A& A::operator=(A const&) +# 1307| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const A & +# 1307| [MoveAssignmentOperator] A& A::operator=(A&&) +# 1307| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] A && +# 1310| [MemberFunction] void A::static_member(A*, int) +# 1310| <params>: +# 1310| getParameter(0): [Parameter] a +# 1310| Type = [PointerType] A * +# 1310| getParameter(1): [Parameter] x +# 1310| Type = [IntType] int +# 1310| getEntryPoint(): [BlockStmt] { ... } +# 1311| getStmt(0): [ExprStmt] ExprStmt +# 1311| getExpr(): [AssignExpr] ... = ... +# 1311| Type = [IntType] int +# 1311| ValueCategory = lvalue +# 1311| getLValue(): [PointerFieldAccess] member +# 1311| Type = [IntType] int +# 1311| ValueCategory = lvalue +# 1311| getQualifier(): [VariableAccess] a +# 1311| Type = [PointerType] A * +# 1311| ValueCategory = prvalue(load) +# 1311| getRValue(): [VariableAccess] x +# 1311| Type = [IntType] int +# 1311| ValueCategory = prvalue(load) +# 1312| getStmt(1): [ReturnStmt] return ... +# 1314| [MemberFunction] void A::static_member_without_def() # 1314| <params>: -# 1316| [TopLevelFunction] int shortCircuitConditional(int, int) -# 1316| <params>: -# 1316| getParameter(0): [Parameter] x -# 1316| Type = [IntType] int -# 1316| getParameter(1): [Parameter] y -# 1316| Type = [IntType] int -# 1316| getEntryPoint(): [BlockStmt] { ... } -# 1317| getStmt(0): [ReturnStmt] return ... -# 1317| getExpr(): [ConditionalExpr] ... ? ... : ... -# 1317| Type = [IntType] int -# 1317| ValueCategory = prvalue(load) -# 1317| getCondition(): [LogicalAndExpr] ... && ... -# 1317| Type = [BoolType] bool -# 1317| ValueCategory = prvalue -# 1317| getLeftOperand(): [FunctionCall] call to predicateA -# 1317| Type = [BoolType] bool -# 1317| ValueCategory = prvalue -# 1317| getRightOperand(): [FunctionCall] call to predicateB -# 1317| Type = [BoolType] bool -# 1317| ValueCategory = prvalue -# 1317| getThen(): [VariableAccess] x -# 1317| Type = [IntType] int -# 1317| ValueCategory = prvalue(load) -# 1317| getElse(): [VariableAccess] y -# 1317| Type = [IntType] int -# 1317| ValueCategory = prvalue(load) -# 1320| [Operator,TopLevelFunction] void* operator new(size_t, void*) -# 1320| <params>: -# 1320| getParameter(0): [Parameter] (unnamed parameter 0) -# 1320| Type = [CTypedefType,Size_t] size_t -# 1320| getParameter(1): [Parameter] (unnamed parameter 1) -# 1320| Type = [VoidPointerType] void * -# 1322| [TopLevelFunction] void f(int*) -# 1322| <params>: -# 1322| getParameter(0): [Parameter] p -# 1322| Type = [IntPointerType] int * -# 1323| getEntryPoint(): [BlockStmt] { ... } -# 1324| getStmt(0): [ExprStmt] ExprStmt -# 1324| getExpr(): [NewExpr] new -# 1324| Type = [IntPointerType] int * -# 1324| ValueCategory = prvalue -# 1324| getAllocatorCall(): [FunctionCall] call to operator new -# 1324| Type = [VoidPointerType] void * -# 1324| ValueCategory = prvalue -# 1324| getArgument(0): [ErrorExpr] <error expr> -# 1324| Type = [LongType] unsigned long -# 1324| ValueCategory = prvalue -# 1324| getArgument(1): [VariableAccess] p -# 1324| Type = [IntPointerType] int * -# 1324| ValueCategory = prvalue(load) -# 1324| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... -# 1324| Conversion = [PointerConversion] pointer conversion -# 1324| Type = [VoidPointerType] void * -# 1324| ValueCategory = prvalue -# 1325| getStmt(1): [ReturnStmt] return ... -# 1328| [FunctionTemplateInstantiation,TopLevelFunction] Point defaultConstruct<Point>() -# 1328| <params>: -# 1328| getEntryPoint(): [BlockStmt] { ... } -# 1329| getStmt(0): [ReturnStmt] return ... -# 1329| getExpr(): [Literal] 0 -# 1329| Type = [Struct] Point -# 1329| Value = [Literal] 0 -# 1329| ValueCategory = prvalue -# 1328| [FunctionTemplateInstantiation,TopLevelFunction] String defaultConstruct<String>() -# 1328| <params>: -# 1328| getEntryPoint(): [BlockStmt] { ... } -# 1329| getStmt(0): [ReturnStmt] return ... -# 1329| getExpr(): [ConstructorCall] call to String +# 1317| [TopLevelFunction] A* getAnInstanceOfA() +# 1317| <params>: +# 1319| [TopLevelFunction] void test_static_member_functions(int, A*) +# 1319| <params>: +# 1319| getParameter(0): [Parameter] int_arg +# 1319| Type = [IntType] int +# 1319| getParameter(1): [Parameter] a_arg +# 1319| Type = [PointerType] A * +# 1319| getEntryPoint(): [BlockStmt] { ... } +# 1320| getStmt(0): [DeclStmt] declaration +# 1320| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1320| Type = [Class] C +# 1320| getVariable().getInitializer(): [Initializer] initializer for c +# 1320| getExpr(): [ConstructorCall] call to C +# 1320| Type = [VoidType] void +# 1320| ValueCategory = prvalue +# 1321| getStmt(1): [ExprStmt] ExprStmt +# 1321| getExpr(): [FunctionCall] call to StaticMemberFunction +# 1321| Type = [IntType] int +# 1321| ValueCategory = prvalue +# 1321| getQualifier(): [VariableAccess] c +# 1321| Type = [Class] C +# 1321| ValueCategory = lvalue +# 1321| getArgument(0): [Literal] 10 +# 1321| Type = [IntType] int +# 1321| Value = [Literal] 10 +# 1321| ValueCategory = prvalue +# 1322| getStmt(2): [ExprStmt] ExprStmt +# 1322| getExpr(): [FunctionCall] call to StaticMemberFunction +# 1322| Type = [IntType] int +# 1322| ValueCategory = prvalue +# 1322| getArgument(0): [Literal] 10 +# 1322| Type = [IntType] int +# 1322| Value = [Literal] 10 +# 1322| ValueCategory = prvalue +# 1324| getStmt(3): [DeclStmt] declaration +# 1324| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 1324| Type = [Struct] A +# 1325| getStmt(4): [ExprStmt] ExprStmt +# 1325| getExpr(): [FunctionCall] call to static_member +# 1325| Type = [VoidType] void +# 1325| ValueCategory = prvalue +# 1325| getQualifier(): [VariableAccess] a +# 1325| Type = [Struct] A +# 1325| ValueCategory = lvalue +# 1325| getArgument(0): [AddressOfExpr] & ... +# 1325| Type = [PointerType] A * +# 1325| ValueCategory = prvalue +# 1325| getOperand(): [VariableAccess] a +# 1325| Type = [Struct] A +# 1325| ValueCategory = lvalue +# 1325| getArgument(1): [VariableAccess] int_arg +# 1325| Type = [IntType] int +# 1325| ValueCategory = prvalue(load) +# 1326| getStmt(5): [ExprStmt] ExprStmt +# 1326| getExpr(): [FunctionCall] call to static_member +# 1326| Type = [VoidType] void +# 1326| ValueCategory = prvalue +# 1326| getArgument(0): [AddressOfExpr] & ... +# 1326| Type = [PointerType] A * +# 1326| ValueCategory = prvalue +# 1326| getOperand(): [VariableAccess] a +# 1326| Type = [Struct] A +# 1326| ValueCategory = lvalue +# 1326| getArgument(1): [VariableAccess] int_arg +# 1326| Type = [IntType] int +# 1326| ValueCategory = prvalue(load) +# 1328| getStmt(6): [ExprStmt] ExprStmt +# 1328| getExpr(): [FunctionCall] call to static_member +# 1328| Type = [VoidType] void +# 1328| ValueCategory = prvalue +# 1328| getQualifier(): [AddressOfExpr] & ... +# 1328| Type = [PointerType] A * +# 1328| ValueCategory = prvalue +# 1328| getOperand(): [VariableAccess] a +# 1328| Type = [Struct] A +# 1328| ValueCategory = lvalue +# 1328| getArgument(0): [VariableAccess] a_arg +# 1328| Type = [PointerType] A * +# 1328| ValueCategory = prvalue(load) +# 1328| getArgument(1): [AddExpr] ... + ... +# 1328| Type = [IntType] int +# 1328| ValueCategory = prvalue +# 1328| getLeftOperand(): [VariableAccess] int_arg +# 1328| Type = [IntType] int +# 1328| ValueCategory = prvalue(load) +# 1328| getRightOperand(): [Literal] 2 +# 1328| Type = [IntType] int +# 1328| Value = [Literal] 2 +# 1328| ValueCategory = prvalue +# 1328| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 1328| Type = [PointerType] A * +# 1328| ValueCategory = prvalue +# 1329| getStmt(7): [ExprStmt] ExprStmt +# 1329| getExpr(): [FunctionCall] call to static_member # 1329| Type = [VoidType] void # 1329| ValueCategory = prvalue -# 1328| [TemplateFunction,TopLevelFunction] T defaultConstruct<T>() -# 1328| <params>: -# 1328| getEntryPoint(): [BlockStmt] { ... } -# 1329| getStmt(0): [ReturnStmt] return ... -# 1329| getExpr(): [Literal] 0 -# 1329| Type = [TemplateParameter] T -# 1329| Value = [Literal] 0 -# 1329| ValueCategory = prvalue -# 1329| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1329| Type = [TemplateParameter] T -# 1329| ValueCategory = prvalue(load) -# 1328| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor defaultConstruct<copy_constructor>() -# 1328| <params>: -# 1328| getEntryPoint(): [BlockStmt] { ... } -# 1329| getStmt(0): [ReturnStmt] return ... -# 1329| getExpr(): [ConstructorCall] call to copy_constructor -# 1329| Type = [VoidType] void -# 1329| ValueCategory = prvalue -# 1328| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only defaultConstruct<destructor_only>() -# 1328| <params>: -# 1328| getEntryPoint(): [BlockStmt] { ... } -# 1329| getStmt(0): [ReturnStmt] return ... -# 1329| getExpr(): [Literal] 0 -# 1329| Type = [Class] destructor_only -# 1329| Value = [Literal] 0 -# 1329| ValueCategory = prvalue -# 1332| [CopyAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only const&) -# 1332| <params>: +# 1329| getQualifier(): [PointerDereferenceExpr] * ... +# 1329| Type = [Struct] A +# 1329| ValueCategory = lvalue +# 1329| getOperand(): [VariableAccess] a_arg +# 1329| Type = [PointerType] A * +# 1329| ValueCategory = prvalue(load) +# 1329| getArgument(0): [AddressOfExpr] & ... +# 1329| Type = [PointerType] A * +# 1329| ValueCategory = prvalue +# 1329| getOperand(): [VariableAccess] a +# 1329| Type = [Struct] A +# 1329| ValueCategory = lvalue +# 1329| getArgument(1): [Literal] 99 +# 1329| Type = [IntType] int +# 1329| Value = [Literal] 99 +# 1329| ValueCategory = prvalue +# 1329| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 1329| Type = [Struct] A +# 1329| ValueCategory = lvalue +# 1330| getStmt(8): [ExprStmt] ExprStmt +# 1330| getExpr(): [FunctionCall] call to static_member +# 1330| Type = [VoidType] void +# 1330| ValueCategory = prvalue +# 1330| getQualifier(): [VariableAccess] a_arg +# 1330| Type = [PointerType] A * +# 1330| ValueCategory = prvalue(load) +# 1330| getArgument(0): [VariableAccess] a_arg +# 1330| Type = [PointerType] A * +# 1330| ValueCategory = prvalue(load) +# 1330| getArgument(1): [UnaryMinusExpr] - ... +# 1330| Type = [IntType] int +# 1330| Value = [UnaryMinusExpr] -1 +# 1330| ValueCategory = prvalue +# 1330| getOperand(): [Literal] 1 +# 1330| Type = [IntType] int +# 1330| Value = [Literal] 1 +# 1330| ValueCategory = prvalue +# 1332| getStmt(9): [ExprStmt] ExprStmt +# 1332| getExpr(): [FunctionCall] call to static_member_without_def +# 1332| Type = [VoidType] void +# 1332| ValueCategory = prvalue +# 1332| getQualifier(): [VariableAccess] a +# 1332| Type = [Struct] A +# 1332| ValueCategory = lvalue +# 1333| getStmt(10): [ExprStmt] ExprStmt +# 1333| getExpr(): [FunctionCall] call to static_member_without_def +# 1333| Type = [VoidType] void +# 1333| ValueCategory = prvalue +# 1335| getStmt(11): [ExprStmt] ExprStmt +# 1335| getExpr(): [FunctionCall] call to static_member_without_def +# 1335| Type = [VoidType] void +# 1335| ValueCategory = prvalue +# 1335| getQualifier(): [FunctionCall] call to getAnInstanceOfA +# 1335| Type = [PointerType] A * +# 1335| ValueCategory = prvalue +# 1336| getStmt(12): [ReturnStmt] return ... +# 1336| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1336| Type = [VoidType] void +# 1336| ValueCategory = prvalue +# 1336| getQualifier(): [VariableAccess] c +# 1336| Type = [Class] C +# 1336| ValueCategory = lvalue +# 1338| [TopLevelFunction] int missingReturnValue(bool, int) +# 1338| <params>: +# 1338| getParameter(0): [Parameter] b +# 1338| Type = [BoolType] bool +# 1338| getParameter(1): [Parameter] x +# 1338| Type = [IntType] int +# 1338| getEntryPoint(): [BlockStmt] { ... } +# 1339| getStmt(0): [IfStmt] if (...) ... +# 1339| getCondition(): [VariableAccess] b +# 1339| Type = [BoolType] bool +# 1339| ValueCategory = prvalue(load) +# 1339| getThen(): [BlockStmt] { ... } +# 1340| getStmt(0): [ReturnStmt] return ... +# 1340| getExpr(): [VariableAccess] x +# 1340| Type = [IntType] int +# 1340| ValueCategory = prvalue(load) +# 1342| getStmt(1): [ReturnStmt] return ... +# 1344| [TopLevelFunction] void returnVoid(int, int) +# 1344| <params>: +# 1344| getParameter(0): [Parameter] x +# 1344| Type = [IntType] int +# 1344| getParameter(1): [Parameter] y +# 1344| Type = [IntType] int +# 1344| getEntryPoint(): [BlockStmt] { ... } +# 1345| getStmt(0): [ReturnStmt] return ... +# 1345| getExpr(): [FunctionCall] call to IntegerOps +# 1345| Type = [VoidType] void +# 1345| ValueCategory = prvalue +# 1345| getArgument(0): [VariableAccess] x +# 1345| Type = [IntType] int +# 1345| ValueCategory = prvalue(load) +# 1345| getArgument(1): [VariableAccess] y +# 1345| Type = [IntType] int +# 1345| ValueCategory = prvalue(load) +# 1348| [TopLevelFunction] void gccBinaryConditional(bool, int, long) +# 1348| <params>: +# 1348| getParameter(0): [Parameter] b +# 1348| Type = [BoolType] bool +# 1348| getParameter(1): [Parameter] x +# 1348| Type = [IntType] int +# 1348| getParameter(2): [Parameter] y +# 1348| Type = [LongType] long +# 1348| getEntryPoint(): [BlockStmt] { ... } +# 1349| getStmt(0): [DeclStmt] declaration +# 1349| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1349| Type = [IntType] int +# 1349| getVariable().getInitializer(): [Initializer] initializer for z +# 1349| getExpr(): [VariableAccess] x +# 1349| Type = [IntType] int +# 1349| ValueCategory = prvalue(load) +# 1350| getStmt(1): [ExprStmt] ExprStmt +# 1350| getExpr(): [AssignExpr] ... = ... +# 1350| Type = [IntType] int +# 1350| ValueCategory = lvalue +# 1350| getLValue(): [VariableAccess] z +# 1350| Type = [IntType] int +# 1350| ValueCategory = lvalue +# 1350| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1350| Type = [IntType] int +# 1350| ValueCategory = prvalue(load) +# 1350| getCondition(): [VariableAccess] b +# 1350| Type = [BoolType] bool +# 1350| ValueCategory = prvalue(load) +# 1350| getElse(): [VariableAccess] x +# 1350| Type = [IntType] int +# 1350| ValueCategory = prvalue(load) +# 1351| getStmt(2): [ExprStmt] ExprStmt +# 1351| getExpr(): [AssignExpr] ... = ... +# 1351| Type = [IntType] int +# 1351| ValueCategory = lvalue +# 1351| getLValue(): [VariableAccess] z +# 1351| Type = [IntType] int +# 1351| ValueCategory = lvalue +# 1351| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1351| Type = [LongType] long +# 1351| ValueCategory = prvalue(load) +# 1351| getCondition(): [VariableAccess] b +# 1351| Type = [BoolType] bool +# 1351| ValueCategory = prvalue(load) +# 1351| getElse(): [VariableAccess] y +# 1351| Type = [LongType] long +# 1351| ValueCategory = prvalue(load) +# 1351| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1351| Conversion = [IntegralConversion] integral conversion +# 1351| Type = [IntType] int +# 1351| ValueCategory = prvalue +# 1352| getStmt(3): [ExprStmt] ExprStmt +# 1352| getExpr(): [AssignExpr] ... = ... +# 1352| Type = [IntType] int +# 1352| ValueCategory = lvalue +# 1352| getLValue(): [VariableAccess] z +# 1352| Type = [IntType] int +# 1352| ValueCategory = lvalue +# 1352| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1352| Type = [IntType] int +# 1352| ValueCategory = prvalue(load) +# 1352| getCondition(): [VariableAccess] x +# 1352| Type = [IntType] int +# 1352| ValueCategory = prvalue(load) +# 1352| getElse(): [VariableAccess] x +# 1352| Type = [IntType] int +# 1352| ValueCategory = prvalue(load) +# 1352| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1352| Conversion = [BoolConversion] conversion to bool +# 1352| Type = [BoolType] bool +# 1352| ValueCategory = prvalue +# 1353| getStmt(4): [ExprStmt] ExprStmt +# 1353| getExpr(): [AssignExpr] ... = ... +# 1353| Type = [IntType] int +# 1353| ValueCategory = lvalue +# 1353| getLValue(): [VariableAccess] z +# 1353| Type = [IntType] int +# 1353| ValueCategory = lvalue +# 1353| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1353| Type = [LongType] long +# 1353| ValueCategory = prvalue(load) +# 1353| getCondition(): [VariableAccess] x +# 1353| Type = [IntType] int +# 1353| ValueCategory = prvalue(load) +# 1353| getElse(): [VariableAccess] y +# 1353| Type = [LongType] long +# 1353| ValueCategory = prvalue(load) +# 1353| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1353| Conversion = [BoolConversion] conversion to bool +# 1353| Type = [BoolType] bool +# 1353| ValueCategory = prvalue +# 1353| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1353| Conversion = [IntegralConversion] integral conversion +# 1353| Type = [IntType] int +# 1353| ValueCategory = prvalue +# 1354| getStmt(5): [ExprStmt] ExprStmt +# 1354| getExpr(): [AssignExpr] ... = ... +# 1354| Type = [IntType] int +# 1354| ValueCategory = lvalue +# 1354| getLValue(): [VariableAccess] z +# 1354| Type = [IntType] int +# 1354| ValueCategory = lvalue +# 1354| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1354| Type = [LongType] long +# 1354| ValueCategory = prvalue(load) +# 1354| getCondition(): [VariableAccess] y +# 1354| Type = [LongType] long +# 1354| ValueCategory = prvalue(load) +# 1354| getElse(): [VariableAccess] x +# 1354| Type = [IntType] int +# 1354| ValueCategory = prvalue(load) +# 1354| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1354| Conversion = [BoolConversion] conversion to bool +# 1354| Type = [BoolType] bool +# 1354| ValueCategory = prvalue +# 1354| getElse().getFullyConverted(): [CStyleCast] (long)... +# 1354| Conversion = [IntegralConversion] integral conversion +# 1354| Type = [LongType] long +# 1354| ValueCategory = prvalue +# 1354| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1354| Conversion = [IntegralConversion] integral conversion +# 1354| Type = [IntType] int +# 1354| ValueCategory = prvalue +# 1355| getStmt(6): [ExprStmt] ExprStmt +# 1355| getExpr(): [AssignExpr] ... = ... +# 1355| Type = [IntType] int +# 1355| ValueCategory = lvalue +# 1355| getLValue(): [VariableAccess] z +# 1355| Type = [IntType] int +# 1355| ValueCategory = lvalue +# 1355| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1355| Type = [LongType] long +# 1355| ValueCategory = prvalue(load) +# 1355| getCondition(): [VariableAccess] y +# 1355| Type = [LongType] long +# 1355| ValueCategory = prvalue(load) +# 1355| getElse(): [VariableAccess] y +# 1355| Type = [LongType] long +# 1355| ValueCategory = prvalue(load) +# 1355| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1355| Conversion = [BoolConversion] conversion to bool +# 1355| Type = [BoolType] bool +# 1355| ValueCategory = prvalue +# 1355| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1355| Conversion = [IntegralConversion] integral conversion +# 1355| Type = [IntType] int +# 1355| ValueCategory = prvalue +# 1357| getStmt(7): [ExprStmt] ExprStmt +# 1357| getExpr(): [AssignExpr] ... = ... +# 1357| Type = [IntType] int +# 1357| ValueCategory = lvalue +# 1357| getLValue(): [VariableAccess] z +# 1357| Type = [IntType] int +# 1357| ValueCategory = lvalue +# 1357| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1357| Type = [IntType] int +# 1357| ValueCategory = prvalue(load) +# 1357| getCondition(): [LogicalOrExpr] ... || ... +# 1357| Type = [BoolType] bool +# 1357| ValueCategory = prvalue +# 1357| getLeftOperand(): [LogicalAndExpr] ... && ... +# 1357| Type = [BoolType] bool +# 1357| ValueCategory = prvalue +# 1357| getLeftOperand(): [VariableAccess] x +# 1357| Type = [IntType] int +# 1357| ValueCategory = prvalue(load) +# 1357| getRightOperand(): [VariableAccess] b +# 1357| Type = [BoolType] bool +# 1357| ValueCategory = prvalue(load) +# 1357| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... +# 1357| Conversion = [BoolConversion] conversion to bool +# 1357| Type = [BoolType] bool +# 1357| ValueCategory = prvalue +# 1357| getRightOperand(): [VariableAccess] y +# 1357| Type = [LongType] long +# 1357| ValueCategory = prvalue(load) +# 1357| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 1357| Conversion = [BoolConversion] conversion to bool +# 1357| Type = [BoolType] bool +# 1357| ValueCategory = prvalue +# 1357| getElse(): [VariableAccess] x +# 1357| Type = [IntType] int +# 1357| ValueCategory = prvalue(load) +# 1357| getCondition().getFullyConverted(): [ParenthesisExpr] (...) +# 1357| Type = [BoolType] bool +# 1357| ValueCategory = prvalue +# 1358| getStmt(8): [ReturnStmt] return ... +# 1360| [TopLevelFunction] bool predicateA() +# 1360| <params>: +# 1361| [TopLevelFunction] bool predicateB() +# 1361| <params>: +# 1363| [TopLevelFunction] int shortCircuitConditional(int, int) +# 1363| <params>: +# 1363| getParameter(0): [Parameter] x +# 1363| Type = [IntType] int +# 1363| getParameter(1): [Parameter] y +# 1363| Type = [IntType] int +# 1363| getEntryPoint(): [BlockStmt] { ... } +# 1364| getStmt(0): [ReturnStmt] return ... +# 1364| getExpr(): [ConditionalExpr] ... ? ... : ... +# 1364| Type = [IntType] int +# 1364| ValueCategory = prvalue(load) +# 1364| getCondition(): [LogicalAndExpr] ... && ... +# 1364| Type = [BoolType] bool +# 1364| ValueCategory = prvalue +# 1364| getLeftOperand(): [FunctionCall] call to predicateA +# 1364| Type = [BoolType] bool +# 1364| ValueCategory = prvalue +# 1364| getRightOperand(): [FunctionCall] call to predicateB +# 1364| Type = [BoolType] bool +# 1364| ValueCategory = prvalue +# 1364| getThen(): [VariableAccess] x +# 1364| Type = [IntType] int +# 1364| ValueCategory = prvalue(load) +# 1364| getElse(): [VariableAccess] y +# 1364| Type = [IntType] int +# 1364| ValueCategory = prvalue(load) +# 1367| [Operator,TopLevelFunction] void* operator new(size_t, void*) +# 1367| <params>: +# 1367| getParameter(0): [Parameter] (unnamed parameter 0) +# 1367| Type = [CTypedefType,Size_t] size_t +# 1367| getParameter(1): [Parameter] (unnamed parameter 1) +# 1367| Type = [VoidPointerType] void * +# 1369| [TopLevelFunction] void f(int*) +# 1369| <params>: +# 1369| getParameter(0): [Parameter] p +# 1369| Type = [IntPointerType] int * +# 1370| getEntryPoint(): [BlockStmt] { ... } +# 1371| getStmt(0): [ExprStmt] ExprStmt +# 1371| getExpr(): [NewExpr] new +# 1371| Type = [IntPointerType] int * +# 1371| ValueCategory = prvalue +# 1371| getAllocatorCall(): [FunctionCall] call to operator new +# 1371| Type = [VoidPointerType] void * +# 1371| ValueCategory = prvalue +# 1371| getArgument(0): [ErrorExpr] <error expr> +# 1371| Type = [LongType] unsigned long +# 1371| ValueCategory = prvalue +# 1371| getArgument(1): [VariableAccess] p +# 1371| Type = [IntPointerType] int * +# 1371| ValueCategory = prvalue(load) +# 1371| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... +# 1371| Conversion = [PointerConversion] pointer conversion +# 1371| Type = [VoidPointerType] void * +# 1371| ValueCategory = prvalue +# 1372| getStmt(1): [ReturnStmt] return ... +# 1375| [FunctionTemplateInstantiation,TopLevelFunction] Point defaultConstruct<Point>() +# 1375| <params>: +# 1375| getEntryPoint(): [BlockStmt] { ... } +# 1376| getStmt(0): [ReturnStmt] return ... +# 1376| getExpr(): [Literal] 0 +# 1376| Type = [Struct] Point +# 1376| Value = [Literal] 0 +# 1376| ValueCategory = prvalue +# 1375| [FunctionTemplateInstantiation,TopLevelFunction] String defaultConstruct<String>() +# 1375| <params>: +# 1375| getEntryPoint(): [BlockStmt] { ... } +# 1376| getStmt(0): [ReturnStmt] return ... +# 1376| getExpr(): [ConstructorCall] call to String +# 1376| Type = [VoidType] void +# 1376| ValueCategory = prvalue +# 1375| [TemplateFunction,TopLevelFunction] T defaultConstruct<T>() +# 1375| <params>: +# 1375| getEntryPoint(): [BlockStmt] { ... } +# 1376| getStmt(0): [ReturnStmt] return ... +# 1376| getExpr(): [Literal] 0 +# 1376| Type = [TemplateParameter] T +# 1376| Value = [Literal] 0 +# 1376| ValueCategory = prvalue +# 1376| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1376| Type = [TemplateParameter] T +# 1376| ValueCategory = prvalue(load) +# 1375| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor defaultConstruct<copy_constructor>() +# 1375| <params>: +# 1375| getEntryPoint(): [BlockStmt] { ... } +# 1376| getStmt(0): [ReturnStmt] return ... +# 1376| getExpr(): [ConstructorCall] call to copy_constructor +# 1376| Type = [VoidType] void +# 1376| ValueCategory = prvalue +# 1375| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only defaultConstruct<destructor_only>() +# 1375| <params>: +# 1375| getEntryPoint(): [BlockStmt] { ... } +# 1376| getStmt(0): [ReturnStmt] return ... +# 1376| getExpr(): [Literal] 0 +# 1376| Type = [Class] destructor_only +# 1376| Value = [Literal] 0 +# 1376| ValueCategory = prvalue +# 1379| [CopyAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only const&) +# 1379| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const constructor_only & -# 1332| [MoveAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only&&) -# 1332| <params>: +# 1379| [MoveAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only&&) +# 1379| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] constructor_only && -# 1332| [CopyConstructor] void constructor_only::constructor_only(constructor_only const&) -# 1332| <params>: +# 1379| [CopyConstructor] void constructor_only::constructor_only(constructor_only const&) +# 1379| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const constructor_only & -# 1332| [MoveConstructor] void constructor_only::constructor_only(constructor_only&&) -# 1332| <params>: +# 1379| [MoveConstructor] void constructor_only::constructor_only(constructor_only&&) +# 1379| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] constructor_only && -# 1337| [Constructor] void constructor_only::constructor_only(int) -# 1337| <params>: -# 1337| getParameter(0): [Parameter] x -# 1337| Type = [IntType] int -# 1340| [CopyAssignmentOperator] copy_constructor& copy_constructor::operator=(copy_constructor const&) -# 1340| <params>: +# 1384| [Constructor] void constructor_only::constructor_only(int) +# 1384| <params>: +# 1384| getParameter(0): [Parameter] x +# 1384| Type = [IntType] int +# 1387| [CopyAssignmentOperator] copy_constructor& copy_constructor::operator=(copy_constructor const&) +# 1387| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const copy_constructor & -# 1345| [Constructor] void copy_constructor::copy_constructor() -# 1345| <params>: -# 1346| [CopyConstructor] void copy_constructor::copy_constructor(copy_constructor const&) -# 1346| <params>: -# 1346| getParameter(0): [Parameter] (unnamed parameter 0) -# 1346| Type = [LValueReferenceType] const copy_constructor & -# 1348| [MemberFunction] void copy_constructor::method() -# 1348| <params>: -# 1351| [CopyAssignmentOperator] destructor_only& destructor_only::operator=(destructor_only const&) -# 1351| <params>: +# 1392| [Constructor] void copy_constructor::copy_constructor() +# 1392| <params>: +# 1393| [CopyConstructor] void copy_constructor::copy_constructor(copy_constructor const&) +# 1393| <params>: +# 1393| getParameter(0): [Parameter] (unnamed parameter 0) +# 1393| Type = [LValueReferenceType] const copy_constructor & +# 1395| [MemberFunction] void copy_constructor::method() +# 1395| <params>: +# 1398| [CopyAssignmentOperator] destructor_only& destructor_only::operator=(destructor_only const&) +# 1398| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const destructor_only & -# 1351| [Constructor] void destructor_only::destructor_only() -# 1351| <params>: -# 1353| [Destructor] void destructor_only::~destructor_only() -# 1353| <params>: -# 1355| [MemberFunction] void destructor_only::method() -# 1355| <params>: -# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<Point>(Point const&) -# 1359| <params>: -# 1359| getParameter(0): [Parameter] v -# 1359| Type = [LValueReferenceType] const Point & -# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<String>(String const&) -# 1359| <params>: -# 1359| getParameter(0): [Parameter] v -# 1359| Type = [LValueReferenceType] const String & -# 1359| [TemplateFunction,TopLevelFunction] void acceptRef<T>(T const&) -# 1359| <params>: -# 1359| getParameter(0): [Parameter] v -# 1359| Type = [LValueReferenceType] const T & -# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<copy_constructor>(copy_constructor const&) -# 1359| <params>: -# 1359| getParameter(0): [Parameter] v -# 1359| Type = [LValueReferenceType] const copy_constructor & -# 1359| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<destructor_only>(destructor_only const&) -# 1359| <params>: -# 1359| getParameter(0): [Parameter] v -# 1359| Type = [LValueReferenceType] const destructor_only & -# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<Point>(Point) -# 1362| <params>: -# 1362| getParameter(0): [Parameter] v -# 1362| Type = [Struct] Point -# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<String>(String) -# 1362| <params>: -# 1362| getParameter(0): [Parameter] v -# 1362| Type = [Struct] String -# 1362| [TemplateFunction,TopLevelFunction] void acceptValue<T>(T) -# 1362| <params>: -# 1362| getParameter(0): [Parameter] v -# 1362| Type = [TemplateParameter] T -# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<copy_constructor>(copy_constructor) -# 1362| <params>: -# 1362| getParameter(0): [Parameter] v -# 1362| Type = [Class] copy_constructor -# 1362| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<destructor_only>(destructor_only) -# 1362| <params>: -# 1362| getParameter(0): [Parameter] v -# 1362| Type = [Class] destructor_only -# 1365| [FunctionTemplateInstantiation,TopLevelFunction] POD_Derived returnValue<POD_Derived>() -# 1365| <params>: -# 1365| [FunctionTemplateInstantiation,TopLevelFunction] POD_Middle returnValue<POD_Middle>() -# 1365| <params>: -# 1365| [FunctionTemplateInstantiation,TopLevelFunction] Point returnValue<Point>() -# 1365| <params>: -# 1365| [FunctionTemplateInstantiation,TopLevelFunction] String returnValue<String>() -# 1365| <params>: -# 1365| [TemplateFunction,TopLevelFunction] T returnValue<T>() -# 1365| <params>: -# 1365| [FunctionTemplateInstantiation,TopLevelFunction] UnusualFields returnValue<UnusualFields>() -# 1365| <params>: -# 1365| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor returnValue<copy_constructor>() -# 1365| <params>: -# 1365| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only returnValue<destructor_only>() -# 1365| <params>: -# 1367| [TopLevelFunction] void temporary_string() -# 1367| <params>: -# 1367| getEntryPoint(): [BlockStmt] { ... } -# 1368| getStmt(0): [DeclStmt] declaration -# 1368| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 1368| Type = [Struct] String -# 1368| getVariable().getInitializer(): [Initializer] initializer for s -# 1368| getExpr(): [FunctionCall] call to returnValue -# 1368| Type = [Struct] String -# 1368| ValueCategory = prvalue -# 1369| getStmt(1): [DeclStmt] declaration -# 1369| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs -# 1369| Type = [LValueReferenceType] const String & -# 1369| getVariable().getInitializer(): [Initializer] initializer for rs -# 1369| getExpr(): [FunctionCall] call to returnValue -# 1369| Type = [Struct] String -# 1369| ValueCategory = prvalue -# 1369| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1369| Type = [LValueReferenceType] const String & -# 1369| ValueCategory = prvalue -# 1369| getExpr(): [CStyleCast] (const String)... -# 1369| Conversion = [GlvalueConversion] glvalue conversion -# 1369| Type = [SpecifiedType] const String -# 1369| ValueCategory = lvalue -# 1369| getExpr(): [TemporaryObjectExpr] temporary object -# 1369| Type = [Struct] String -# 1369| ValueCategory = lvalue -# 1371| getStmt(2): [ExprStmt] ExprStmt -# 1371| getExpr(): [FunctionCall] call to acceptRef -# 1371| Type = [VoidType] void -# 1371| ValueCategory = prvalue -# 1371| getArgument(0): [VariableAccess] s -# 1371| Type = [Struct] String -# 1371| ValueCategory = lvalue -# 1371| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1371| Type = [LValueReferenceType] const String & -# 1371| ValueCategory = prvalue -# 1371| getExpr(): [CStyleCast] (const String)... -# 1371| Conversion = [GlvalueConversion] glvalue conversion -# 1371| Type = [SpecifiedType] const String -# 1371| ValueCategory = lvalue -# 1372| getStmt(3): [ExprStmt] ExprStmt -# 1372| getExpr(): [FunctionCall] call to acceptRef -# 1372| Type = [VoidType] void -# 1372| ValueCategory = prvalue -# 1372| getArgument(0): [ConstructorCall] call to String -# 1372| Type = [VoidType] void -# 1372| ValueCategory = prvalue -# 1372| getArgument(0): foo -# 1372| Type = [ArrayType] const char[4] -# 1372| Value = [StringLiteral] "foo" -# 1372| ValueCategory = lvalue -# 1372| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1372| Type = [PointerType] const char * -# 1372| ValueCategory = prvalue -# 1372| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1372| Type = [LValueReferenceType] const String & -# 1372| ValueCategory = prvalue -# 1372| getExpr(): [TemporaryObjectExpr] temporary object -# 1372| Type = [SpecifiedType] const String -# 1372| ValueCategory = lvalue -# 1373| getStmt(4): [ExprStmt] ExprStmt -# 1373| getExpr(): [FunctionCall] call to acceptValue -# 1373| Type = [VoidType] void -# 1373| ValueCategory = prvalue -# 1373| getArgument(0): [ConstructorCall] call to String -# 1373| Type = [VoidType] void -# 1373| ValueCategory = prvalue -# 1373| getArgument(0): [VariableAccess] s -# 1373| Type = [Struct] String -# 1373| ValueCategory = lvalue -# 1373| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1373| Type = [LValueReferenceType] const String & -# 1373| ValueCategory = prvalue -# 1373| getExpr(): [CStyleCast] (const String)... -# 1373| Conversion = [GlvalueConversion] glvalue conversion -# 1373| Type = [SpecifiedType] const String -# 1373| ValueCategory = lvalue -# 1373| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1373| Type = [Struct] String -# 1373| ValueCategory = lvalue -# 1374| getStmt(5): [ExprStmt] ExprStmt -# 1374| getExpr(): [FunctionCall] call to acceptValue -# 1374| Type = [VoidType] void -# 1374| ValueCategory = prvalue -# 1374| getArgument(0): [ConstructorCall] call to String -# 1374| Type = [VoidType] void -# 1374| ValueCategory = prvalue -# 1374| getArgument(0): foo -# 1374| Type = [ArrayType] const char[4] -# 1374| Value = [StringLiteral] "foo" -# 1374| ValueCategory = lvalue -# 1374| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1374| Type = [PointerType] const char * -# 1374| ValueCategory = prvalue -# 1374| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1374| Type = [Struct] String -# 1374| ValueCategory = lvalue -# 1375| getStmt(6): [ExprStmt] ExprStmt -# 1375| getExpr(): [FunctionCall] call to c_str -# 1375| Type = [PointerType] const char * -# 1375| ValueCategory = prvalue -# 1375| getQualifier(): [ConstructorCall] call to String -# 1375| Type = [VoidType] void -# 1375| ValueCategory = prvalue -# 1375| getQualifier().getFullyConverted(): [CStyleCast] (const String)... -# 1375| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion -# 1375| Type = [SpecifiedType] const String -# 1375| ValueCategory = prvalue -# 1375| getExpr(): [TemporaryObjectExpr] temporary object -# 1375| Type = [Struct] String -# 1375| ValueCategory = prvalue(load) -# 1376| getStmt(7): [ExprStmt] ExprStmt -# 1376| getExpr(): [FunctionCall] call to c_str -# 1376| Type = [PointerType] const char * -# 1376| ValueCategory = prvalue -# 1376| getQualifier(): [FunctionCall] call to returnValue -# 1376| Type = [Struct] String -# 1376| ValueCategory = prvalue -# 1376| getQualifier().getFullyConverted(): [CStyleCast] (const String)... -# 1376| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion -# 1376| Type = [SpecifiedType] const String -# 1376| ValueCategory = prvalue -# 1376| getExpr(): [TemporaryObjectExpr] temporary object -# 1376| Type = [Struct] String -# 1376| ValueCategory = prvalue(load) -# 1378| getStmt(8): [ExprStmt] ExprStmt -# 1378| getExpr(): [FunctionCall] call to defaultConstruct -# 1378| Type = [Struct] String -# 1378| ValueCategory = prvalue -# 1378| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1378| Type = [Struct] String -# 1378| ValueCategory = prvalue -# 1379| getStmt(9): [ReturnStmt] return ... -# 1379| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1379| Type = [VoidType] void -# 1379| ValueCategory = prvalue -# 1379| getQualifier(): [VariableAccess] s -# 1379| Type = [Struct] String -# 1379| ValueCategory = lvalue -# 1381| [TopLevelFunction] void temporary_destructor_only() -# 1381| <params>: -# 1381| getEntryPoint(): [BlockStmt] { ... } -# 1382| getStmt(0): [DeclStmt] declaration -# 1382| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1382| Type = [Class] destructor_only -# 1382| getVariable().getInitializer(): [Initializer] initializer for d -# 1382| getExpr(): [FunctionCall] call to returnValue -# 1382| Type = [Class] destructor_only -# 1382| ValueCategory = prvalue -# 1383| getStmt(1): [DeclStmt] declaration -# 1383| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1383| Type = [LValueReferenceType] const destructor_only & -# 1383| getVariable().getInitializer(): [Initializer] initializer for rd -# 1383| getExpr(): [FunctionCall] call to returnValue -# 1383| Type = [Class] destructor_only -# 1383| ValueCategory = prvalue -# 1383| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1383| Type = [LValueReferenceType] const destructor_only & -# 1383| ValueCategory = prvalue -# 1383| getExpr(): [CStyleCast] (const destructor_only)... -# 1383| Conversion = [GlvalueConversion] glvalue conversion -# 1383| Type = [SpecifiedType] const destructor_only -# 1383| ValueCategory = lvalue -# 1383| getExpr(): [TemporaryObjectExpr] temporary object -# 1383| Type = [Class] destructor_only -# 1383| ValueCategory = lvalue -# 1384| getStmt(2): [DeclStmt] declaration -# 1384| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 -# 1384| Type = [Class] destructor_only -# 1385| getStmt(3): [ExprStmt] ExprStmt -# 1385| getExpr(): [FunctionCall] call to acceptRef -# 1385| Type = [VoidType] void -# 1385| ValueCategory = prvalue -# 1385| getArgument(0): [VariableAccess] d -# 1385| Type = [Class] destructor_only -# 1385| ValueCategory = lvalue -# 1385| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1385| Type = [LValueReferenceType] const destructor_only & -# 1385| ValueCategory = prvalue -# 1385| getExpr(): [CStyleCast] (const destructor_only)... -# 1385| Conversion = [GlvalueConversion] glvalue conversion -# 1385| Type = [SpecifiedType] const destructor_only -# 1385| ValueCategory = lvalue -# 1386| getStmt(4): [ExprStmt] ExprStmt -# 1386| getExpr(): [FunctionCall] call to acceptValue -# 1386| Type = [VoidType] void -# 1386| ValueCategory = prvalue -# 1386| getArgument(0): [VariableAccess] d -# 1386| Type = [Class] destructor_only -# 1386| ValueCategory = prvalue(load) -# 1386| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1386| Type = [Class] destructor_only -# 1386| ValueCategory = lvalue -# 1387| getStmt(5): [ExprStmt] ExprStmt -# 1387| getExpr(): [FunctionCall] call to method -# 1387| Type = [VoidType] void -# 1387| ValueCategory = prvalue -# 1387| getQualifier(): [Literal] 0 -# 1387| Type = [Class] destructor_only -# 1387| Value = [Literal] 0 -# 1387| ValueCategory = prvalue -# 1387| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1387| Type = [Class] destructor_only -# 1387| ValueCategory = prvalue(load) -# 1388| getStmt(6): [ExprStmt] ExprStmt -# 1388| getExpr(): [FunctionCall] call to method -# 1388| Type = [VoidType] void -# 1388| ValueCategory = prvalue -# 1388| getQualifier(): [FunctionCall] call to returnValue -# 1388| Type = [Class] destructor_only -# 1388| ValueCategory = prvalue -# 1388| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1388| Type = [Class] destructor_only -# 1388| ValueCategory = prvalue(load) -# 1390| getStmt(7): [ExprStmt] ExprStmt -# 1390| getExpr(): [FunctionCall] call to defaultConstruct -# 1390| Type = [Class] destructor_only -# 1390| ValueCategory = prvalue -# 1390| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1390| Type = [Class] destructor_only -# 1390| ValueCategory = prvalue -# 1391| getStmt(8): [ReturnStmt] return ... -# 1391| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only -# 1391| Type = [VoidType] void -# 1391| ValueCategory = prvalue -# 1391| getQualifier(): [VariableAccess] d2 -# 1391| Type = [Class] destructor_only -# 1391| ValueCategory = lvalue -# 1391| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only -# 1391| Type = [VoidType] void -# 1391| ValueCategory = prvalue -# 1391| getQualifier(): [VariableAccess] d -# 1391| Type = [Class] destructor_only -# 1391| ValueCategory = lvalue -# 1393| [TopLevelFunction] void temporary_copy_constructor() -# 1393| <params>: -# 1393| getEntryPoint(): [BlockStmt] { ... } -# 1394| getStmt(0): [DeclStmt] declaration -# 1394| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1394| Type = [Class] copy_constructor -# 1394| getVariable().getInitializer(): [Initializer] initializer for d -# 1394| getExpr(): [FunctionCall] call to returnValue -# 1394| Type = [Class] copy_constructor -# 1394| ValueCategory = prvalue -# 1395| getStmt(1): [DeclStmt] declaration -# 1395| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1395| Type = [LValueReferenceType] const copy_constructor & -# 1395| getVariable().getInitializer(): [Initializer] initializer for rd -# 1395| getExpr(): [FunctionCall] call to returnValue -# 1395| Type = [Class] copy_constructor -# 1395| ValueCategory = prvalue -# 1395| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1395| Type = [LValueReferenceType] const copy_constructor & -# 1395| ValueCategory = prvalue -# 1395| getExpr(): [CStyleCast] (const copy_constructor)... -# 1395| Conversion = [GlvalueConversion] glvalue conversion -# 1395| Type = [SpecifiedType] const copy_constructor -# 1395| ValueCategory = lvalue -# 1395| getExpr(): [TemporaryObjectExpr] temporary object -# 1395| Type = [Class] copy_constructor -# 1395| ValueCategory = lvalue -# 1396| getStmt(2): [DeclStmt] declaration -# 1396| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 -# 1396| Type = [Class] copy_constructor -# 1396| getVariable().getInitializer(): [Initializer] initializer for d2 -# 1396| getExpr(): [ConstructorCall] call to copy_constructor -# 1396| Type = [VoidType] void -# 1396| ValueCategory = prvalue -# 1397| getStmt(3): [ExprStmt] ExprStmt -# 1397| getExpr(): [FunctionCall] call to acceptRef -# 1397| Type = [VoidType] void -# 1397| ValueCategory = prvalue -# 1397| getArgument(0): [VariableAccess] d -# 1397| Type = [Class] copy_constructor -# 1397| ValueCategory = lvalue -# 1397| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1397| Type = [LValueReferenceType] const copy_constructor & -# 1397| ValueCategory = prvalue -# 1397| getExpr(): [CStyleCast] (const copy_constructor)... -# 1397| Conversion = [GlvalueConversion] glvalue conversion -# 1397| Type = [SpecifiedType] const copy_constructor -# 1397| ValueCategory = lvalue -# 1398| getStmt(4): [ExprStmt] ExprStmt -# 1398| getExpr(): [FunctionCall] call to acceptValue -# 1398| Type = [VoidType] void -# 1398| ValueCategory = prvalue -# 1398| getArgument(0): [ConstructorCall] call to copy_constructor -# 1398| Type = [VoidType] void -# 1398| ValueCategory = prvalue -# 1398| getArgument(0): [VariableAccess] d -# 1398| Type = [Class] copy_constructor -# 1398| ValueCategory = lvalue -# 1398| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1398| Type = [LValueReferenceType] const copy_constructor & -# 1398| ValueCategory = prvalue -# 1398| getExpr(): [CStyleCast] (const copy_constructor)... -# 1398| Conversion = [GlvalueConversion] glvalue conversion -# 1398| Type = [SpecifiedType] const copy_constructor -# 1398| ValueCategory = lvalue -# 1398| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1398| Type = [Class] copy_constructor -# 1398| ValueCategory = lvalue -# 1399| getStmt(5): [ExprStmt] ExprStmt -# 1399| getExpr(): [FunctionCall] call to method -# 1399| Type = [VoidType] void -# 1399| ValueCategory = prvalue -# 1399| getQualifier(): [ConstructorCall] call to copy_constructor -# 1399| Type = [VoidType] void -# 1399| ValueCategory = prvalue -# 1399| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1399| Type = [Class] copy_constructor -# 1399| ValueCategory = prvalue(load) -# 1400| getStmt(6): [ExprStmt] ExprStmt -# 1400| getExpr(): [FunctionCall] call to method -# 1400| Type = [VoidType] void -# 1400| ValueCategory = prvalue -# 1400| getQualifier(): [FunctionCall] call to returnValue -# 1400| Type = [Class] copy_constructor -# 1400| ValueCategory = prvalue -# 1400| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1400| Type = [Class] copy_constructor -# 1400| ValueCategory = prvalue(load) -# 1401| getStmt(7): [ExprStmt] ExprStmt -# 1401| getExpr(): [FunctionCall] call to defaultConstruct -# 1401| Type = [Class] copy_constructor -# 1401| ValueCategory = prvalue -# 1401| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1401| Type = [Class] copy_constructor -# 1401| ValueCategory = prvalue -# 1403| getStmt(8): [DeclStmt] declaration -# 1403| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1403| Type = [IntType] int -# 1403| getVariable().getInitializer(): [Initializer] initializer for y -# 1403| getExpr(): [ValueFieldAccess] y -# 1403| Type = [IntType] int -# 1403| ValueCategory = prvalue -# 1403| getQualifier(): [FunctionCall] call to returnValue -# 1403| Type = [Class] copy_constructor -# 1403| ValueCategory = prvalue -# 1403| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1403| Type = [Class] copy_constructor -# 1403| ValueCategory = prvalue(load) -# 1404| getStmt(9): [ReturnStmt] return ... -# 1406| [TopLevelFunction] void temporary_point() +# 1398| [Constructor] void destructor_only::destructor_only() +# 1398| <params>: +# 1400| [Destructor] void destructor_only::~destructor_only() +# 1400| <params>: +# 1402| [MemberFunction] void destructor_only::method() +# 1402| <params>: +# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<Point>(Point const&) # 1406| <params>: -# 1406| getEntryPoint(): [BlockStmt] { ... } -# 1407| getStmt(0): [DeclStmt] declaration -# 1407| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 1407| Type = [Struct] Point -# 1407| getVariable().getInitializer(): [Initializer] initializer for p -# 1407| getExpr(): [FunctionCall] call to returnValue -# 1407| Type = [Struct] Point -# 1407| ValueCategory = prvalue -# 1408| getStmt(1): [DeclStmt] declaration -# 1408| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rp -# 1408| Type = [LValueReferenceType] const Point & -# 1408| getVariable().getInitializer(): [Initializer] initializer for rp -# 1408| getExpr(): [FunctionCall] call to returnValue -# 1408| Type = [Struct] Point -# 1408| ValueCategory = prvalue -# 1408| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1408| Type = [LValueReferenceType] const Point & -# 1408| ValueCategory = prvalue -# 1408| getExpr(): [CStyleCast] (const Point)... -# 1408| Conversion = [GlvalueConversion] glvalue conversion -# 1408| Type = [SpecifiedType] const Point -# 1408| ValueCategory = lvalue -# 1408| getExpr(): [TemporaryObjectExpr] temporary object -# 1408| Type = [Struct] Point -# 1408| ValueCategory = lvalue -# 1410| getStmt(2): [ExprStmt] ExprStmt -# 1410| getExpr(): [FunctionCall] call to acceptRef -# 1410| Type = [VoidType] void -# 1410| ValueCategory = prvalue -# 1410| getArgument(0): [VariableAccess] p -# 1410| Type = [Struct] Point -# 1410| ValueCategory = lvalue -# 1410| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1410| Type = [LValueReferenceType] const Point & -# 1410| ValueCategory = prvalue -# 1410| getExpr(): [CStyleCast] (const Point)... -# 1410| Conversion = [GlvalueConversion] glvalue conversion -# 1410| Type = [SpecifiedType] const Point -# 1410| ValueCategory = lvalue -# 1411| getStmt(3): [ExprStmt] ExprStmt -# 1411| getExpr(): [FunctionCall] call to acceptValue -# 1411| Type = [VoidType] void -# 1411| ValueCategory = prvalue -# 1411| getArgument(0): [VariableAccess] p -# 1411| Type = [Struct] Point -# 1411| ValueCategory = prvalue(load) -# 1412| getStmt(4): [ExprStmt] ExprStmt -# 1412| getExpr(): [ValueFieldAccess] x -# 1412| Type = [IntType] int -# 1412| Value = [ValueFieldAccess] 0 -# 1412| ValueCategory = prvalue -# 1412| getQualifier(): [Literal] 0 -# 1412| Type = [Struct] Point -# 1412| Value = [Literal] 0 -# 1412| ValueCategory = prvalue -# 1412| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1412| Type = [Struct] Point -# 1412| ValueCategory = prvalue(load) -# 1413| getStmt(5): [DeclStmt] declaration -# 1413| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1413| Type = [IntType] int -# 1413| getVariable().getInitializer(): [Initializer] initializer for y -# 1413| getExpr(): [ValueFieldAccess] y -# 1413| Type = [IntType] int -# 1413| ValueCategory = prvalue -# 1413| getQualifier(): [FunctionCall] call to returnValue -# 1413| Type = [Struct] Point -# 1413| ValueCategory = prvalue -# 1415| getStmt(6): [ExprStmt] ExprStmt -# 1415| getExpr(): [FunctionCall] call to defaultConstruct -# 1415| Type = [Struct] Point -# 1415| ValueCategory = prvalue -# 1416| getStmt(7): [ReturnStmt] return ... -# 1418| [CopyAssignmentOperator] UnusualFields& UnusualFields::operator=(UnusualFields const&) -# 1418| <params>: +# 1406| getParameter(0): [Parameter] v +# 1406| Type = [LValueReferenceType] const Point & +# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<String>(String const&) +# 1406| <params>: +# 1406| getParameter(0): [Parameter] v +# 1406| Type = [LValueReferenceType] const String & +# 1406| [TemplateFunction,TopLevelFunction] void acceptRef<T>(T const&) +# 1406| <params>: +# 1406| getParameter(0): [Parameter] v +# 1406| Type = [LValueReferenceType] const T & +# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<copy_constructor>(copy_constructor const&) +# 1406| <params>: +# 1406| getParameter(0): [Parameter] v +# 1406| Type = [LValueReferenceType] const copy_constructor & +# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef<destructor_only>(destructor_only const&) +# 1406| <params>: +# 1406| getParameter(0): [Parameter] v +# 1406| Type = [LValueReferenceType] const destructor_only & +# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<Point>(Point) +# 1409| <params>: +# 1409| getParameter(0): [Parameter] v +# 1409| Type = [Struct] Point +# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<String>(String) +# 1409| <params>: +# 1409| getParameter(0): [Parameter] v +# 1409| Type = [Struct] String +# 1409| [TemplateFunction,TopLevelFunction] void acceptValue<T>(T) +# 1409| <params>: +# 1409| getParameter(0): [Parameter] v +# 1409| Type = [TemplateParameter] T +# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<copy_constructor>(copy_constructor) +# 1409| <params>: +# 1409| getParameter(0): [Parameter] v +# 1409| Type = [Class] copy_constructor +# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue<destructor_only>(destructor_only) +# 1409| <params>: +# 1409| getParameter(0): [Parameter] v +# 1409| Type = [Class] destructor_only +# 1412| [FunctionTemplateInstantiation,TopLevelFunction] POD_Derived returnValue<POD_Derived>() +# 1412| <params>: +# 1412| [FunctionTemplateInstantiation,TopLevelFunction] POD_Middle returnValue<POD_Middle>() +# 1412| <params>: +# 1412| [FunctionTemplateInstantiation,TopLevelFunction] Point returnValue<Point>() +# 1412| <params>: +# 1412| [FunctionTemplateInstantiation,TopLevelFunction] String returnValue<String>() +# 1412| <params>: +# 1412| [TemplateFunction,TopLevelFunction] T returnValue<T>() +# 1412| <params>: +# 1412| [FunctionTemplateInstantiation,TopLevelFunction] UnusualFields returnValue<UnusualFields>() +# 1412| <params>: +# 1412| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor returnValue<copy_constructor>() +# 1412| <params>: +# 1412| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only returnValue<destructor_only>() +# 1412| <params>: +# 1414| [TopLevelFunction] void temporary_string() +# 1414| <params>: +# 1414| getEntryPoint(): [BlockStmt] { ... } +# 1415| getStmt(0): [DeclStmt] declaration +# 1415| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 1415| Type = [Struct] String +# 1415| getVariable().getInitializer(): [Initializer] initializer for s +# 1415| getExpr(): [FunctionCall] call to returnValue +# 1415| Type = [Struct] String +# 1415| ValueCategory = prvalue +# 1416| getStmt(1): [DeclStmt] declaration +# 1416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs +# 1416| Type = [LValueReferenceType] const String & +# 1416| getVariable().getInitializer(): [Initializer] initializer for rs +# 1416| getExpr(): [FunctionCall] call to returnValue +# 1416| Type = [Struct] String +# 1416| ValueCategory = prvalue +# 1416| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1416| Type = [LValueReferenceType] const String & +# 1416| ValueCategory = prvalue +# 1416| getExpr(): [CStyleCast] (const String)... +# 1416| Conversion = [GlvalueConversion] glvalue conversion +# 1416| Type = [SpecifiedType] const String +# 1416| ValueCategory = lvalue +# 1416| getExpr(): [TemporaryObjectExpr] temporary object +# 1416| Type = [Struct] String +# 1416| ValueCategory = lvalue +# 1418| getStmt(2): [ExprStmt] ExprStmt +# 1418| getExpr(): [FunctionCall] call to acceptRef +# 1418| Type = [VoidType] void +# 1418| ValueCategory = prvalue +# 1418| getArgument(0): [VariableAccess] s +# 1418| Type = [Struct] String +# 1418| ValueCategory = lvalue +# 1418| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1418| Type = [LValueReferenceType] const String & +# 1418| ValueCategory = prvalue +# 1418| getExpr(): [CStyleCast] (const String)... +# 1418| Conversion = [GlvalueConversion] glvalue conversion +# 1418| Type = [SpecifiedType] const String +# 1418| ValueCategory = lvalue +# 1419| getStmt(3): [ExprStmt] ExprStmt +# 1419| getExpr(): [FunctionCall] call to acceptRef +# 1419| Type = [VoidType] void +# 1419| ValueCategory = prvalue +# 1419| getArgument(0): [ConstructorCall] call to String +# 1419| Type = [VoidType] void +# 1419| ValueCategory = prvalue +# 1419| getArgument(0): foo +# 1419| Type = [ArrayType] const char[4] +# 1419| Value = [StringLiteral] "foo" +# 1419| ValueCategory = lvalue +# 1419| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1419| Type = [PointerType] const char * +# 1419| ValueCategory = prvalue +# 1419| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1419| Type = [LValueReferenceType] const String & +# 1419| ValueCategory = prvalue +# 1419| getExpr(): [TemporaryObjectExpr] temporary object +# 1419| Type = [SpecifiedType] const String +# 1419| ValueCategory = lvalue +# 1420| getStmt(4): [ExprStmt] ExprStmt +# 1420| getExpr(): [FunctionCall] call to acceptValue +# 1420| Type = [VoidType] void +# 1420| ValueCategory = prvalue +# 1420| getArgument(0): [ConstructorCall] call to String +# 1420| Type = [VoidType] void +# 1420| ValueCategory = prvalue +# 1420| getArgument(0): [VariableAccess] s +# 1420| Type = [Struct] String +# 1420| ValueCategory = lvalue +# 1420| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1420| Type = [LValueReferenceType] const String & +# 1420| ValueCategory = prvalue +# 1420| getExpr(): [CStyleCast] (const String)... +# 1420| Conversion = [GlvalueConversion] glvalue conversion +# 1420| Type = [SpecifiedType] const String +# 1420| ValueCategory = lvalue +# 1420| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1420| Type = [Struct] String +# 1420| ValueCategory = lvalue +# 1421| getStmt(5): [ExprStmt] ExprStmt +# 1421| getExpr(): [FunctionCall] call to acceptValue +# 1421| Type = [VoidType] void +# 1421| ValueCategory = prvalue +# 1421| getArgument(0): [ConstructorCall] call to String +# 1421| Type = [VoidType] void +# 1421| ValueCategory = prvalue +# 1421| getArgument(0): foo +# 1421| Type = [ArrayType] const char[4] +# 1421| Value = [StringLiteral] "foo" +# 1421| ValueCategory = lvalue +# 1421| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1421| Type = [PointerType] const char * +# 1421| ValueCategory = prvalue +# 1421| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1421| Type = [Struct] String +# 1421| ValueCategory = lvalue +# 1422| getStmt(6): [ExprStmt] ExprStmt +# 1422| getExpr(): [FunctionCall] call to c_str +# 1422| Type = [PointerType] const char * +# 1422| ValueCategory = prvalue +# 1422| getQualifier(): [ConstructorCall] call to String +# 1422| Type = [VoidType] void +# 1422| ValueCategory = prvalue +# 1422| getQualifier().getFullyConverted(): [CStyleCast] (const String)... +# 1422| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion +# 1422| Type = [SpecifiedType] const String +# 1422| ValueCategory = prvalue +# 1422| getExpr(): [TemporaryObjectExpr] temporary object +# 1422| Type = [Struct] String +# 1422| ValueCategory = prvalue(load) +# 1423| getStmt(7): [ExprStmt] ExprStmt +# 1423| getExpr(): [FunctionCall] call to c_str +# 1423| Type = [PointerType] const char * +# 1423| ValueCategory = prvalue +# 1423| getQualifier(): [FunctionCall] call to returnValue +# 1423| Type = [Struct] String +# 1423| ValueCategory = prvalue +# 1423| getQualifier().getFullyConverted(): [CStyleCast] (const String)... +# 1423| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion +# 1423| Type = [SpecifiedType] const String +# 1423| ValueCategory = prvalue +# 1423| getExpr(): [TemporaryObjectExpr] temporary object +# 1423| Type = [Struct] String +# 1423| ValueCategory = prvalue(load) +# 1425| getStmt(8): [ExprStmt] ExprStmt +# 1425| getExpr(): [FunctionCall] call to defaultConstruct +# 1425| Type = [Struct] String +# 1425| ValueCategory = prvalue +# 1425| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1425| Type = [Struct] String +# 1425| ValueCategory = prvalue +# 1426| getStmt(9): [ReturnStmt] return ... +# 1426| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1426| Type = [VoidType] void +# 1426| ValueCategory = prvalue +# 1426| getQualifier(): [VariableAccess] s +# 1426| Type = [Struct] String +# 1426| ValueCategory = lvalue +# 1428| [TopLevelFunction] void temporary_destructor_only() +# 1428| <params>: +# 1428| getEntryPoint(): [BlockStmt] { ... } +# 1429| getStmt(0): [DeclStmt] declaration +# 1429| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1429| Type = [Class] destructor_only +# 1429| getVariable().getInitializer(): [Initializer] initializer for d +# 1429| getExpr(): [FunctionCall] call to returnValue +# 1429| Type = [Class] destructor_only +# 1429| ValueCategory = prvalue +# 1430| getStmt(1): [DeclStmt] declaration +# 1430| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1430| Type = [LValueReferenceType] const destructor_only & +# 1430| getVariable().getInitializer(): [Initializer] initializer for rd +# 1430| getExpr(): [FunctionCall] call to returnValue +# 1430| Type = [Class] destructor_only +# 1430| ValueCategory = prvalue +# 1430| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1430| Type = [LValueReferenceType] const destructor_only & +# 1430| ValueCategory = prvalue +# 1430| getExpr(): [CStyleCast] (const destructor_only)... +# 1430| Conversion = [GlvalueConversion] glvalue conversion +# 1430| Type = [SpecifiedType] const destructor_only +# 1430| ValueCategory = lvalue +# 1430| getExpr(): [TemporaryObjectExpr] temporary object +# 1430| Type = [Class] destructor_only +# 1430| ValueCategory = lvalue +# 1431| getStmt(2): [DeclStmt] declaration +# 1431| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1431| Type = [Class] destructor_only +# 1432| getStmt(3): [ExprStmt] ExprStmt +# 1432| getExpr(): [FunctionCall] call to acceptRef +# 1432| Type = [VoidType] void +# 1432| ValueCategory = prvalue +# 1432| getArgument(0): [VariableAccess] d +# 1432| Type = [Class] destructor_only +# 1432| ValueCategory = lvalue +# 1432| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1432| Type = [LValueReferenceType] const destructor_only & +# 1432| ValueCategory = prvalue +# 1432| getExpr(): [CStyleCast] (const destructor_only)... +# 1432| Conversion = [GlvalueConversion] glvalue conversion +# 1432| Type = [SpecifiedType] const destructor_only +# 1432| ValueCategory = lvalue +# 1433| getStmt(4): [ExprStmt] ExprStmt +# 1433| getExpr(): [FunctionCall] call to acceptValue +# 1433| Type = [VoidType] void +# 1433| ValueCategory = prvalue +# 1433| getArgument(0): [VariableAccess] d +# 1433| Type = [Class] destructor_only +# 1433| ValueCategory = prvalue(load) +# 1433| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1433| Type = [Class] destructor_only +# 1433| ValueCategory = lvalue +# 1434| getStmt(5): [ExprStmt] ExprStmt +# 1434| getExpr(): [FunctionCall] call to method +# 1434| Type = [VoidType] void +# 1434| ValueCategory = prvalue +# 1434| getQualifier(): [Literal] 0 +# 1434| Type = [Class] destructor_only +# 1434| Value = [Literal] 0 +# 1434| ValueCategory = prvalue +# 1434| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1434| Type = [Class] destructor_only +# 1434| ValueCategory = prvalue(load) +# 1435| getStmt(6): [ExprStmt] ExprStmt +# 1435| getExpr(): [FunctionCall] call to method +# 1435| Type = [VoidType] void +# 1435| ValueCategory = prvalue +# 1435| getQualifier(): [FunctionCall] call to returnValue +# 1435| Type = [Class] destructor_only +# 1435| ValueCategory = prvalue +# 1435| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1435| Type = [Class] destructor_only +# 1435| ValueCategory = prvalue(load) +# 1437| getStmt(7): [ExprStmt] ExprStmt +# 1437| getExpr(): [FunctionCall] call to defaultConstruct +# 1437| Type = [Class] destructor_only +# 1437| ValueCategory = prvalue +# 1437| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1437| Type = [Class] destructor_only +# 1437| ValueCategory = prvalue +# 1438| getStmt(8): [ReturnStmt] return ... +# 1438| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1438| Type = [VoidType] void +# 1438| ValueCategory = prvalue +# 1438| getQualifier(): [VariableAccess] d2 +# 1438| Type = [Class] destructor_only +# 1438| ValueCategory = lvalue +# 1438| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only +# 1438| Type = [VoidType] void +# 1438| ValueCategory = prvalue +# 1438| getQualifier(): [VariableAccess] d +# 1438| Type = [Class] destructor_only +# 1438| ValueCategory = lvalue +# 1440| [TopLevelFunction] void temporary_copy_constructor() +# 1440| <params>: +# 1440| getEntryPoint(): [BlockStmt] { ... } +# 1441| getStmt(0): [DeclStmt] declaration +# 1441| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1441| Type = [Class] copy_constructor +# 1441| getVariable().getInitializer(): [Initializer] initializer for d +# 1441| getExpr(): [FunctionCall] call to returnValue +# 1441| Type = [Class] copy_constructor +# 1441| ValueCategory = prvalue +# 1442| getStmt(1): [DeclStmt] declaration +# 1442| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1442| Type = [LValueReferenceType] const copy_constructor & +# 1442| getVariable().getInitializer(): [Initializer] initializer for rd +# 1442| getExpr(): [FunctionCall] call to returnValue +# 1442| Type = [Class] copy_constructor +# 1442| ValueCategory = prvalue +# 1442| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1442| Type = [LValueReferenceType] const copy_constructor & +# 1442| ValueCategory = prvalue +# 1442| getExpr(): [CStyleCast] (const copy_constructor)... +# 1442| Conversion = [GlvalueConversion] glvalue conversion +# 1442| Type = [SpecifiedType] const copy_constructor +# 1442| ValueCategory = lvalue +# 1442| getExpr(): [TemporaryObjectExpr] temporary object +# 1442| Type = [Class] copy_constructor +# 1442| ValueCategory = lvalue +# 1443| getStmt(2): [DeclStmt] declaration +# 1443| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1443| Type = [Class] copy_constructor +# 1443| getVariable().getInitializer(): [Initializer] initializer for d2 +# 1443| getExpr(): [ConstructorCall] call to copy_constructor +# 1443| Type = [VoidType] void +# 1443| ValueCategory = prvalue +# 1444| getStmt(3): [ExprStmt] ExprStmt +# 1444| getExpr(): [FunctionCall] call to acceptRef +# 1444| Type = [VoidType] void +# 1444| ValueCategory = prvalue +# 1444| getArgument(0): [VariableAccess] d +# 1444| Type = [Class] copy_constructor +# 1444| ValueCategory = lvalue +# 1444| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1444| Type = [LValueReferenceType] const copy_constructor & +# 1444| ValueCategory = prvalue +# 1444| getExpr(): [CStyleCast] (const copy_constructor)... +# 1444| Conversion = [GlvalueConversion] glvalue conversion +# 1444| Type = [SpecifiedType] const copy_constructor +# 1444| ValueCategory = lvalue +# 1445| getStmt(4): [ExprStmt] ExprStmt +# 1445| getExpr(): [FunctionCall] call to acceptValue +# 1445| Type = [VoidType] void +# 1445| ValueCategory = prvalue +# 1445| getArgument(0): [ConstructorCall] call to copy_constructor +# 1445| Type = [VoidType] void +# 1445| ValueCategory = prvalue +# 1445| getArgument(0): [VariableAccess] d +# 1445| Type = [Class] copy_constructor +# 1445| ValueCategory = lvalue +# 1445| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1445| Type = [LValueReferenceType] const copy_constructor & +# 1445| ValueCategory = prvalue +# 1445| getExpr(): [CStyleCast] (const copy_constructor)... +# 1445| Conversion = [GlvalueConversion] glvalue conversion +# 1445| Type = [SpecifiedType] const copy_constructor +# 1445| ValueCategory = lvalue +# 1445| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1445| Type = [Class] copy_constructor +# 1445| ValueCategory = lvalue +# 1446| getStmt(5): [ExprStmt] ExprStmt +# 1446| getExpr(): [FunctionCall] call to method +# 1446| Type = [VoidType] void +# 1446| ValueCategory = prvalue +# 1446| getQualifier(): [ConstructorCall] call to copy_constructor +# 1446| Type = [VoidType] void +# 1446| ValueCategory = prvalue +# 1446| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1446| Type = [Class] copy_constructor +# 1446| ValueCategory = prvalue(load) +# 1447| getStmt(6): [ExprStmt] ExprStmt +# 1447| getExpr(): [FunctionCall] call to method +# 1447| Type = [VoidType] void +# 1447| ValueCategory = prvalue +# 1447| getQualifier(): [FunctionCall] call to returnValue +# 1447| Type = [Class] copy_constructor +# 1447| ValueCategory = prvalue +# 1447| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1447| Type = [Class] copy_constructor +# 1447| ValueCategory = prvalue(load) +# 1448| getStmt(7): [ExprStmt] ExprStmt +# 1448| getExpr(): [FunctionCall] call to defaultConstruct +# 1448| Type = [Class] copy_constructor +# 1448| ValueCategory = prvalue +# 1448| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1448| Type = [Class] copy_constructor +# 1448| ValueCategory = prvalue +# 1450| getStmt(8): [DeclStmt] declaration +# 1450| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1450| Type = [IntType] int +# 1450| getVariable().getInitializer(): [Initializer] initializer for y +# 1450| getExpr(): [ValueFieldAccess] y +# 1450| Type = [IntType] int +# 1450| ValueCategory = prvalue +# 1450| getQualifier(): [FunctionCall] call to returnValue +# 1450| Type = [Class] copy_constructor +# 1450| ValueCategory = prvalue +# 1450| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1450| Type = [Class] copy_constructor +# 1450| ValueCategory = prvalue(load) +# 1451| getStmt(9): [ReturnStmt] return ... +# 1453| [TopLevelFunction] void temporary_point() +# 1453| <params>: +# 1453| getEntryPoint(): [BlockStmt] { ... } +# 1454| getStmt(0): [DeclStmt] declaration +# 1454| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 1454| Type = [Struct] Point +# 1454| getVariable().getInitializer(): [Initializer] initializer for p +# 1454| getExpr(): [FunctionCall] call to returnValue +# 1454| Type = [Struct] Point +# 1454| ValueCategory = prvalue +# 1455| getStmt(1): [DeclStmt] declaration +# 1455| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rp +# 1455| Type = [LValueReferenceType] const Point & +# 1455| getVariable().getInitializer(): [Initializer] initializer for rp +# 1455| getExpr(): [FunctionCall] call to returnValue +# 1455| Type = [Struct] Point +# 1455| ValueCategory = prvalue +# 1455| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1455| Type = [LValueReferenceType] const Point & +# 1455| ValueCategory = prvalue +# 1455| getExpr(): [CStyleCast] (const Point)... +# 1455| Conversion = [GlvalueConversion] glvalue conversion +# 1455| Type = [SpecifiedType] const Point +# 1455| ValueCategory = lvalue +# 1455| getExpr(): [TemporaryObjectExpr] temporary object +# 1455| Type = [Struct] Point +# 1455| ValueCategory = lvalue +# 1457| getStmt(2): [ExprStmt] ExprStmt +# 1457| getExpr(): [FunctionCall] call to acceptRef +# 1457| Type = [VoidType] void +# 1457| ValueCategory = prvalue +# 1457| getArgument(0): [VariableAccess] p +# 1457| Type = [Struct] Point +# 1457| ValueCategory = lvalue +# 1457| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1457| Type = [LValueReferenceType] const Point & +# 1457| ValueCategory = prvalue +# 1457| getExpr(): [CStyleCast] (const Point)... +# 1457| Conversion = [GlvalueConversion] glvalue conversion +# 1457| Type = [SpecifiedType] const Point +# 1457| ValueCategory = lvalue +# 1458| getStmt(3): [ExprStmt] ExprStmt +# 1458| getExpr(): [FunctionCall] call to acceptValue +# 1458| Type = [VoidType] void +# 1458| ValueCategory = prvalue +# 1458| getArgument(0): [VariableAccess] p +# 1458| Type = [Struct] Point +# 1458| ValueCategory = prvalue(load) +# 1459| getStmt(4): [ExprStmt] ExprStmt +# 1459| getExpr(): [ValueFieldAccess] x +# 1459| Type = [IntType] int +# 1459| Value = [ValueFieldAccess] 0 +# 1459| ValueCategory = prvalue +# 1459| getQualifier(): [Literal] 0 +# 1459| Type = [Struct] Point +# 1459| Value = [Literal] 0 +# 1459| ValueCategory = prvalue +# 1459| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1459| Type = [Struct] Point +# 1459| ValueCategory = prvalue(load) +# 1460| getStmt(5): [DeclStmt] declaration +# 1460| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1460| Type = [IntType] int +# 1460| getVariable().getInitializer(): [Initializer] initializer for y +# 1460| getExpr(): [ValueFieldAccess] y +# 1460| Type = [IntType] int +# 1460| ValueCategory = prvalue +# 1460| getQualifier(): [FunctionCall] call to returnValue +# 1460| Type = [Struct] Point +# 1460| ValueCategory = prvalue +# 1462| getStmt(6): [ExprStmt] ExprStmt +# 1462| getExpr(): [FunctionCall] call to defaultConstruct +# 1462| Type = [Struct] Point +# 1462| ValueCategory = prvalue +# 1463| getStmt(7): [ReturnStmt] return ... +# 1465| [CopyAssignmentOperator] UnusualFields& UnusualFields::operator=(UnusualFields const&) +# 1465| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const UnusualFields & -# 1418| [Constructor] void UnusualFields::UnusualFields() -# 1418| <params>: -# 1418| [CopyConstructor] void UnusualFields::UnusualFields(UnusualFields const&) -# 1418| <params>: +# 1465| [Constructor] void UnusualFields::UnusualFields() +# 1465| <params>: +# 1465| [CopyConstructor] void UnusualFields::UnusualFields(UnusualFields const&) +# 1465| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const UnusualFields & -# 1418| [MoveConstructor] void UnusualFields::UnusualFields(UnusualFields&&) -# 1418| <params>: +# 1465| [MoveConstructor] void UnusualFields::UnusualFields(UnusualFields&&) +# 1465| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] UnusualFields && -# 1423| [TopLevelFunction] void temporary_unusual_fields() -# 1423| <params>: -# 1423| getEntryPoint(): [BlockStmt] { ... } -# 1424| getStmt(0): [DeclStmt] declaration -# 1424| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx -# 1424| Type = [LValueReferenceType] const int & -# 1424| getVariable().getInitializer(): [Initializer] initializer for rx -# 1424| getExpr(): [ValueFieldAccess] r -# 1424| Type = [LValueReferenceType] int & -# 1424| ValueCategory = prvalue -# 1424| getQualifier(): [FunctionCall] call to returnValue -# 1424| Type = [Struct] UnusualFields -# 1424| ValueCategory = prvalue -# 1424| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1424| Type = [LValueReferenceType] const int & -# 1424| ValueCategory = prvalue -# 1424| getExpr(): [CStyleCast] (const int)... -# 1424| Conversion = [GlvalueConversion] glvalue conversion -# 1424| Type = [SpecifiedType] const int -# 1424| ValueCategory = lvalue -# 1424| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1424| Type = [IntType] int -# 1424| ValueCategory = lvalue -# 1425| getStmt(1): [DeclStmt] declaration -# 1425| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1425| Type = [IntType] int -# 1425| getVariable().getInitializer(): [Initializer] initializer for x -# 1425| getExpr(): [ValueFieldAccess] r -# 1425| Type = [LValueReferenceType] int & -# 1425| ValueCategory = prvalue -# 1425| getQualifier(): [FunctionCall] call to returnValue -# 1425| Type = [Struct] UnusualFields -# 1425| ValueCategory = prvalue -# 1425| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1425| Type = [IntType] int -# 1425| ValueCategory = prvalue(load) -# 1427| getStmt(2): [DeclStmt] declaration -# 1427| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rf -# 1427| Type = [LValueReferenceType] const float & -# 1427| getVariable().getInitializer(): [Initializer] initializer for rf -# 1427| getExpr(): [ArrayExpr] access to array -# 1427| Type = [FloatType] float -# 1427| ValueCategory = lvalue -# 1427| getArrayBase(): [ValueFieldAccess] a -# 1427| Type = [ArrayType] float[10] -# 1427| ValueCategory = prvalue -# 1427| getQualifier(): [FunctionCall] call to returnValue -# 1427| Type = [Struct] UnusualFields -# 1427| ValueCategory = prvalue -# 1427| getArrayOffset(): [Literal] 3 -# 1427| Type = [IntType] int -# 1427| Value = [Literal] 3 -# 1427| ValueCategory = prvalue -# 1427| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1427| Type = [PointerType] float * -# 1427| ValueCategory = prvalue -# 1427| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1427| Type = [LValueReferenceType] const float & -# 1427| ValueCategory = prvalue -# 1427| getExpr(): [CStyleCast] (const float)... -# 1427| Conversion = [GlvalueConversion] glvalue conversion -# 1427| Type = [SpecifiedType] const float -# 1427| ValueCategory = lvalue -# 1428| getStmt(3): [DeclStmt] declaration -# 1428| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f -# 1428| Type = [FloatType] float -# 1428| getVariable().getInitializer(): [Initializer] initializer for f -# 1428| getExpr(): [ArrayExpr] access to array -# 1428| Type = [FloatType] float -# 1428| ValueCategory = prvalue(load) -# 1428| getArrayBase(): [ValueFieldAccess] a -# 1428| Type = [ArrayType] float[10] -# 1428| ValueCategory = prvalue -# 1428| getQualifier(): [FunctionCall] call to returnValue -# 1428| Type = [Struct] UnusualFields -# 1428| ValueCategory = prvalue -# 1428| getArrayOffset(): [Literal] 5 -# 1428| Type = [IntType] int -# 1428| Value = [Literal] 5 -# 1428| ValueCategory = prvalue -# 1428| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1428| Type = [PointerType] float * -# 1428| ValueCategory = prvalue -# 1429| getStmt(4): [ReturnStmt] return ... -# 1431| [CopyAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base const&) -# 1431| <params>: +# 1470| [TopLevelFunction] void temporary_unusual_fields() +# 1470| <params>: +# 1470| getEntryPoint(): [BlockStmt] { ... } +# 1471| getStmt(0): [DeclStmt] declaration +# 1471| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx +# 1471| Type = [LValueReferenceType] const int & +# 1471| getVariable().getInitializer(): [Initializer] initializer for rx +# 1471| getExpr(): [ValueFieldAccess] r +# 1471| Type = [LValueReferenceType] int & +# 1471| ValueCategory = prvalue +# 1471| getQualifier(): [FunctionCall] call to returnValue +# 1471| Type = [Struct] UnusualFields +# 1471| ValueCategory = prvalue +# 1471| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1471| Type = [LValueReferenceType] const int & +# 1471| ValueCategory = prvalue +# 1471| getExpr(): [CStyleCast] (const int)... +# 1471| Conversion = [GlvalueConversion] glvalue conversion +# 1471| Type = [SpecifiedType] const int +# 1471| ValueCategory = lvalue +# 1471| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1471| Type = [IntType] int +# 1471| ValueCategory = lvalue +# 1472| getStmt(1): [DeclStmt] declaration +# 1472| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1472| Type = [IntType] int +# 1472| getVariable().getInitializer(): [Initializer] initializer for x +# 1472| getExpr(): [ValueFieldAccess] r +# 1472| Type = [LValueReferenceType] int & +# 1472| ValueCategory = prvalue +# 1472| getQualifier(): [FunctionCall] call to returnValue +# 1472| Type = [Struct] UnusualFields +# 1472| ValueCategory = prvalue +# 1472| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1472| Type = [IntType] int +# 1472| ValueCategory = prvalue(load) +# 1474| getStmt(2): [DeclStmt] declaration +# 1474| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rf +# 1474| Type = [LValueReferenceType] const float & +# 1474| getVariable().getInitializer(): [Initializer] initializer for rf +# 1474| getExpr(): [ArrayExpr] access to array +# 1474| Type = [FloatType] float +# 1474| ValueCategory = lvalue +# 1474| getArrayBase(): [ValueFieldAccess] a +# 1474| Type = [ArrayType] float[10] +# 1474| ValueCategory = prvalue +# 1474| getQualifier(): [FunctionCall] call to returnValue +# 1474| Type = [Struct] UnusualFields +# 1474| ValueCategory = prvalue +# 1474| getArrayOffset(): [Literal] 3 +# 1474| Type = [IntType] int +# 1474| Value = [Literal] 3 +# 1474| ValueCategory = prvalue +# 1474| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1474| Type = [PointerType] float * +# 1474| ValueCategory = prvalue +# 1474| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1474| Type = [LValueReferenceType] const float & +# 1474| ValueCategory = prvalue +# 1474| getExpr(): [CStyleCast] (const float)... +# 1474| Conversion = [GlvalueConversion] glvalue conversion +# 1474| Type = [SpecifiedType] const float +# 1474| ValueCategory = lvalue +# 1475| getStmt(3): [DeclStmt] declaration +# 1475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 1475| Type = [FloatType] float +# 1475| getVariable().getInitializer(): [Initializer] initializer for f +# 1475| getExpr(): [ArrayExpr] access to array +# 1475| Type = [FloatType] float +# 1475| ValueCategory = prvalue(load) +# 1475| getArrayBase(): [ValueFieldAccess] a +# 1475| Type = [ArrayType] float[10] +# 1475| ValueCategory = prvalue +# 1475| getQualifier(): [FunctionCall] call to returnValue +# 1475| Type = [Struct] UnusualFields +# 1475| ValueCategory = prvalue +# 1475| getArrayOffset(): [Literal] 5 +# 1475| Type = [IntType] int +# 1475| Value = [Literal] 5 +# 1475| ValueCategory = prvalue +# 1475| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1475| Type = [PointerType] float * +# 1475| ValueCategory = prvalue +# 1476| getStmt(4): [ReturnStmt] return ... +# 1478| [CopyAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base const&) +# 1478| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Base & -# 1431| [MoveAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base&&) -# 1431| <params>: +# 1478| [MoveAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base&&) +# 1478| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Base && -# 1434| [ConstMemberFunction] float POD_Base::f() const -# 1434| <params>: -# 1437| [CopyAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle const&) -# 1437| <params>: +# 1481| [ConstMemberFunction] float POD_Base::f() const +# 1481| <params>: +# 1484| [CopyAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle const&) +# 1484| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Middle & -# 1437| [MoveAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle&&) -# 1437| <params>: +# 1484| [MoveAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle&&) +# 1484| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Middle && -# 1437| [Constructor] void POD_Middle::POD_Middle() -# 1437| <params>: -# 1441| [CopyAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived const&) -# 1441| <params>: +# 1484| [Constructor] void POD_Middle::POD_Middle() +# 1484| <params>: +# 1488| [CopyAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived const&) +# 1488| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Derived & -# 1441| [MoveAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived&&) -# 1441| <params>: +# 1488| [MoveAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived&&) +# 1488| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Derived && -# 1441| [Constructor] void POD_Derived::POD_Derived() -# 1441| <params>: -# 1445| [TopLevelFunction] void temporary_hierarchy() -# 1445| <params>: -# 1445| getEntryPoint(): [BlockStmt] { ... } -# 1446| getStmt(0): [DeclStmt] declaration -# 1446| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1446| Type = [Struct] POD_Base -# 1446| getVariable().getInitializer(): [Initializer] initializer for b -# 1446| getExpr(): [FunctionCall] call to returnValue -# 1446| Type = [Struct] POD_Middle -# 1446| ValueCategory = prvalue +# 1488| [Constructor] void POD_Derived::POD_Derived() +# 1488| <params>: +# 1492| [TopLevelFunction] void temporary_hierarchy() +# 1492| <params>: +# 1492| getEntryPoint(): [BlockStmt] { ... } +# 1493| getStmt(0): [DeclStmt] declaration +# 1493| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1493| Type = [Struct] POD_Base +# 1493| getVariable().getInitializer(): [Initializer] initializer for b +# 1493| getExpr(): [FunctionCall] call to returnValue +# 1493| Type = [Struct] POD_Middle +# 1493| ValueCategory = prvalue #-----| getExpr().getFullyConverted(): [CStyleCast] (POD_Base)... #-----| Conversion = [BaseClassConversion] base class conversion #-----| Type = [Struct] POD_Base @@ -12052,40 +12170,40 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Middle #-----| ValueCategory = xvalue -# 1447| getStmt(1): [ExprStmt] ExprStmt -# 1447| getExpr(): [AssignExpr] ... = ... -# 1447| Type = [Struct] POD_Base -# 1447| ValueCategory = lvalue -# 1447| getLValue(): [VariableAccess] b -# 1447| Type = [Struct] POD_Base -# 1447| ValueCategory = lvalue -# 1447| getRValue(): [FunctionCall] call to returnValue -# 1447| Type = [Struct] POD_Derived -# 1447| ValueCategory = prvalue -# 1447| getRValue().getFullyConverted(): [CStyleCast] (POD_Base)... -# 1447| Conversion = [BaseClassConversion] base class conversion -# 1447| Type = [Struct] POD_Base -# 1447| ValueCategory = prvalue(load) -# 1447| getExpr(): [CStyleCast] (POD_Middle)... -# 1447| Conversion = [BaseClassConversion] base class conversion -# 1447| Type = [Struct] POD_Middle -# 1447| ValueCategory = lvalue -# 1447| getExpr(): [TemporaryObjectExpr] temporary object -# 1447| Type = [Struct] POD_Derived -# 1447| ValueCategory = lvalue -# 1447| getExpr(): [ParenthesisExpr] (...) -# 1447| Type = [Struct] POD_Derived -# 1447| ValueCategory = prvalue -# 1448| getStmt(2): [DeclStmt] declaration -# 1448| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1448| Type = [IntType] int -# 1448| getVariable().getInitializer(): [Initializer] initializer for x -# 1448| getExpr(): [ValueFieldAccess] x -# 1448| Type = [IntType] int -# 1448| ValueCategory = prvalue(load) -# 1448| getQualifier(): [FunctionCall] call to returnValue -# 1448| Type = [Struct] POD_Derived -# 1448| ValueCategory = prvalue +# 1494| getStmt(1): [ExprStmt] ExprStmt +# 1494| getExpr(): [AssignExpr] ... = ... +# 1494| Type = [Struct] POD_Base +# 1494| ValueCategory = lvalue +# 1494| getLValue(): [VariableAccess] b +# 1494| Type = [Struct] POD_Base +# 1494| ValueCategory = lvalue +# 1494| getRValue(): [FunctionCall] call to returnValue +# 1494| Type = [Struct] POD_Derived +# 1494| ValueCategory = prvalue +# 1494| getRValue().getFullyConverted(): [CStyleCast] (POD_Base)... +# 1494| Conversion = [BaseClassConversion] base class conversion +# 1494| Type = [Struct] POD_Base +# 1494| ValueCategory = prvalue(load) +# 1494| getExpr(): [CStyleCast] (POD_Middle)... +# 1494| Conversion = [BaseClassConversion] base class conversion +# 1494| Type = [Struct] POD_Middle +# 1494| ValueCategory = lvalue +# 1494| getExpr(): [TemporaryObjectExpr] temporary object +# 1494| Type = [Struct] POD_Derived +# 1494| ValueCategory = lvalue +# 1494| getExpr(): [ParenthesisExpr] (...) +# 1494| Type = [Struct] POD_Derived +# 1494| ValueCategory = prvalue +# 1495| getStmt(2): [DeclStmt] declaration +# 1495| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1495| Type = [IntType] int +# 1495| getVariable().getInitializer(): [Initializer] initializer for x +# 1495| getExpr(): [ValueFieldAccess] x +# 1495| Type = [IntType] int +# 1495| ValueCategory = prvalue(load) +# 1495| getQualifier(): [FunctionCall] call to returnValue +# 1495| Type = [Struct] POD_Derived +# 1495| ValueCategory = prvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (POD_Base)... #-----| Conversion = [BaseClassConversion] base class conversion #-----| Type = [Struct] POD_Base @@ -12097,16 +12215,16 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Derived #-----| ValueCategory = xvalue -# 1449| getStmt(3): [DeclStmt] declaration -# 1449| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f -# 1449| Type = [FloatType] float -# 1449| getVariable().getInitializer(): [Initializer] initializer for f -# 1449| getExpr(): [FunctionCall] call to f -# 1449| Type = [FloatType] float -# 1449| ValueCategory = prvalue -# 1449| getQualifier(): [FunctionCall] call to returnValue -# 1449| Type = [Struct] POD_Derived -# 1449| ValueCategory = prvalue +# 1496| getStmt(3): [DeclStmt] declaration +# 1496| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 1496| Type = [FloatType] float +# 1496| getVariable().getInitializer(): [Initializer] initializer for f +# 1496| getExpr(): [FunctionCall] call to f +# 1496| Type = [FloatType] float +# 1496| ValueCategory = prvalue +# 1496| getQualifier(): [FunctionCall] call to returnValue +# 1496| Type = [Struct] POD_Derived +# 1496| ValueCategory = prvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const POD_Base)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const POD_Base @@ -12122,99 +12240,99 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Derived #-----| ValueCategory = xvalue -# 1449| getExpr(): [ParenthesisExpr] (...) -# 1449| Type = [Struct] POD_Derived -# 1449| ValueCategory = prvalue -# 1450| getStmt(4): [ReturnStmt] return ... -# 1452| [CopyAssignmentOperator] Inheritance_Test_B& Inheritance_Test_B::operator=(Inheritance_Test_B const&) -# 1452| <params>: +# 1496| getExpr(): [ParenthesisExpr] (...) +# 1496| Type = [Struct] POD_Derived +# 1496| ValueCategory = prvalue +# 1497| getStmt(4): [ReturnStmt] return ... +# 1499| [CopyAssignmentOperator] Inheritance_Test_B& Inheritance_Test_B::operator=(Inheritance_Test_B const&) +# 1499| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_B & -# 1452| [Constructor] void Inheritance_Test_B::Inheritance_Test_B() -# 1452| <params>: -# 1453| [Destructor] void Inheritance_Test_B::~Inheritance_Test_B() -# 1453| <params>: -# 1453| getEntryPoint(): [BlockStmt] { ... } -# 1453| getStmt(0): [ReturnStmt] return ... -# 1453| <destructions>: -# 1456| [CopyAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A const&) -# 1456| <params>: +# 1499| [Constructor] void Inheritance_Test_B::Inheritance_Test_B() +# 1499| <params>: +# 1500| [Destructor] void Inheritance_Test_B::~Inheritance_Test_B() +# 1500| <params>: +# 1500| getEntryPoint(): [BlockStmt] { ... } +# 1500| getStmt(0): [ReturnStmt] return ... +# 1500| <destructions>: +# 1503| [CopyAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A const&) +# 1503| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_A & -# 1456| [MoveAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A&&) -# 1456| <params>: +# 1503| [MoveAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A&&) +# 1503| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Inheritance_Test_A && -# 1456| [CopyConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A const&) -# 1456| <params>: +# 1503| [CopyConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A const&) +# 1503| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_A & -# 1456| [MoveConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A&&) -# 1456| <params>: +# 1503| [MoveConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A&&) +# 1503| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Inheritance_Test_A && -# 1456| [Destructor] void Inheritance_Test_A::~Inheritance_Test_A() -# 1456| <params>: -# 1459| [Constructor] void Inheritance_Test_A::Inheritance_Test_A() -# 1459| <params>: -# 1459| <initializations>: -# 1459| getInitializer(0): (no string representation) -# 1459| Type = [Struct] Inheritance_Test_B -# 1459| ValueCategory = prvalue -# 1459| getInitializer(1): [ConstructorFieldInit] constructor init of field x -# 1459| Type = [IntType] int -# 1459| ValueCategory = prvalue -# 1459| getExpr(): [Literal] 42 -# 1459| Type = [IntType] int -# 1459| Value = [Literal] 42 -# 1459| ValueCategory = prvalue -# 1459| getEntryPoint(): [BlockStmt] { ... } -# 1460| getStmt(0): [ExprStmt] ExprStmt -# 1460| getExpr(): [AssignExpr] ... = ... -# 1460| Type = [IntType] int -# 1460| ValueCategory = lvalue -# 1460| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] y -# 1460| Type = [IntType] int -# 1460| ValueCategory = lvalue -# 1460| getQualifier(): [ThisExpr] this -# 1460| Type = [PointerType] Inheritance_Test_A * -# 1460| ValueCategory = prvalue(load) -# 1460| getRValue(): [Literal] 3 -# 1460| Type = [IntType] int -# 1460| Value = [Literal] 3 -# 1460| ValueCategory = prvalue -# 1461| getStmt(1): [ReturnStmt] return ... -# 1464| [TopLevelFunction] void array_structured_binding() -# 1464| <params>: -# 1464| getEntryPoint(): [BlockStmt] { ... } -# 1465| getStmt(0): [DeclStmt] declaration -# 1465| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs -# 1465| Type = [ArrayType] int[2] -# 1465| getVariable().getInitializer(): [Initializer] initializer for xs -# 1465| getExpr(): [ArrayAggregateLiteral] {...} -# 1465| Type = [ArrayType] int[2] -# 1465| ValueCategory = prvalue -# 1465| getAnElementExpr(0): [Literal] 1 -# 1465| Type = [IntType] int -# 1465| Value = [Literal] 1 -# 1465| ValueCategory = prvalue -# 1465| getAnElementExpr(1): [Literal] 2 -# 1465| Type = [IntType] int -# 1465| Value = [Literal] 2 -# 1465| ValueCategory = prvalue -# 1467| getStmt(1): [BlockStmt] { ... } -# 1468| getStmt(0): [DeclStmt] declaration -# 1468| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1468| Type = [LValueReferenceType] int(&)[2] -# 1468| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1468| getExpr(): [VariableAccess] xs -# 1468| Type = [ArrayType] int[2] -# 1468| ValueCategory = lvalue -# 1468| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1468| Type = [LValueReferenceType] int(&)[2] -# 1468| ValueCategory = prvalue -# 1468| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 -# 1468| Type = [IntType] int +# 1503| [Destructor] void Inheritance_Test_A::~Inheritance_Test_A() +# 1503| <params>: +# 1506| [Constructor] void Inheritance_Test_A::Inheritance_Test_A() +# 1506| <params>: +# 1506| <initializations>: +# 1506| getInitializer(0): (no string representation) +# 1506| Type = [Struct] Inheritance_Test_B +# 1506| ValueCategory = prvalue +# 1506| getInitializer(1): [ConstructorFieldInit] constructor init of field x +# 1506| Type = [IntType] int +# 1506| ValueCategory = prvalue +# 1506| getExpr(): [Literal] 42 +# 1506| Type = [IntType] int +# 1506| Value = [Literal] 42 +# 1506| ValueCategory = prvalue +# 1506| getEntryPoint(): [BlockStmt] { ... } +# 1507| getStmt(0): [ExprStmt] ExprStmt +# 1507| getExpr(): [AssignExpr] ... = ... +# 1507| Type = [IntType] int +# 1507| ValueCategory = lvalue +# 1507| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] y +# 1507| Type = [IntType] int +# 1507| ValueCategory = lvalue +# 1507| getQualifier(): [ThisExpr] this +# 1507| Type = [PointerType] Inheritance_Test_A * +# 1507| ValueCategory = prvalue(load) +# 1507| getRValue(): [Literal] 3 +# 1507| Type = [IntType] int +# 1507| Value = [Literal] 3 +# 1507| ValueCategory = prvalue +# 1508| getStmt(1): [ReturnStmt] return ... +# 1511| [TopLevelFunction] void array_structured_binding() +# 1511| <params>: +# 1511| getEntryPoint(): [BlockStmt] { ... } +# 1512| getStmt(0): [DeclStmt] declaration +# 1512| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs +# 1512| Type = [ArrayType] int[2] +# 1512| getVariable().getInitializer(): [Initializer] initializer for xs +# 1512| getExpr(): [ArrayAggregateLiteral] {...} +# 1512| Type = [ArrayType] int[2] +# 1512| ValueCategory = prvalue +# 1512| getAnElementExpr(0): [Literal] 1 +# 1512| Type = [IntType] int +# 1512| Value = [Literal] 1 +# 1512| ValueCategory = prvalue +# 1512| getAnElementExpr(1): [Literal] 2 +# 1512| Type = [IntType] int +# 1512| Value = [Literal] 2 +# 1512| ValueCategory = prvalue +# 1514| getStmt(1): [BlockStmt] { ... } +# 1515| getStmt(0): [DeclStmt] declaration +# 1515| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1515| Type = [LValueReferenceType] int(&)[2] +# 1515| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1515| getExpr(): [VariableAccess] xs +# 1515| Type = [ArrayType] int[2] +# 1515| ValueCategory = lvalue +# 1515| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1515| Type = [LValueReferenceType] int(&)[2] +# 1515| ValueCategory = prvalue +# 1515| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 +# 1515| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x0 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -12232,8 +12350,8 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ArrayType] int[2] #-----| ValueCategory = lvalue -# 1468| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 -# 1468| Type = [IntType] int +# 1515| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 +# 1515| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x1 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -12251,1462 +12369,1462 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ArrayType] int[2] #-----| ValueCategory = lvalue -# 1469| getStmt(1): [ExprStmt] ExprStmt -# 1469| getExpr(): [AssignExpr] ... = ... -# 1469| Type = [IntType] int -# 1469| ValueCategory = lvalue -# 1469| getLValue(): [VariableAccess] x1 -# 1469| Type = [IntType] int -# 1469| ValueCategory = lvalue -# 1469| getRValue(): [Literal] 3 -# 1469| Type = [IntType] int -# 1469| Value = [Literal] 3 -# 1469| ValueCategory = prvalue -# 1470| getStmt(2): [DeclStmt] declaration -# 1470| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 -# 1470| Type = [LValueReferenceType] int & -# 1470| getVariable().getInitializer(): [Initializer] initializer for rx1 -# 1470| getExpr(): [VariableAccess] x1 -# 1470| Type = [IntType] int -# 1470| ValueCategory = lvalue -# 1470| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1470| Type = [LValueReferenceType] int & -# 1470| ValueCategory = prvalue -# 1471| getStmt(3): [DeclStmt] declaration -# 1471| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1471| Type = [IntType] int -# 1471| getVariable().getInitializer(): [Initializer] initializer for x -# 1471| getExpr(): [VariableAccess] x1 -# 1471| Type = [IntType] int -# 1471| ValueCategory = prvalue(load) -# 1474| getStmt(2): [BlockStmt] { ... } -# 1475| getStmt(0): [DeclStmt] declaration -# 1475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1475| Type = [LValueReferenceType] int(&)[2] -# 1475| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1475| getExpr(): [VariableAccess] xs -# 1475| Type = [ArrayType] int[2] -# 1475| ValueCategory = lvalue -# 1475| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1475| Type = [LValueReferenceType] int(&)[2] -# 1475| ValueCategory = prvalue -# 1476| getStmt(1): [DeclStmt] declaration -# 1476| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 -# 1476| Type = [LValueReferenceType] int & -# 1476| getVariable().getInitializer(): [Initializer] initializer for x0 -# 1476| getExpr(): [ArrayExpr] access to array -# 1476| Type = [IntType] int -# 1476| ValueCategory = lvalue -# 1476| getArrayBase(): [VariableAccess] unnamed_local_variable -# 1476| Type = [LValueReferenceType] int(&)[2] -# 1476| ValueCategory = prvalue(load) -# 1476| getArrayOffset(): [Literal] 0 -# 1476| Type = [IntType] int -# 1476| Value = [Literal] 0 -# 1476| ValueCategory = prvalue -# 1476| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1476| Type = [IntPointerType] int * -# 1476| ValueCategory = prvalue -# 1476| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1476| Type = [ArrayType] int[2] -# 1476| ValueCategory = lvalue -# 1476| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1476| Type = [LValueReferenceType] int & -# 1476| ValueCategory = prvalue -# 1477| getStmt(2): [DeclStmt] declaration -# 1477| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 -# 1477| Type = [LValueReferenceType] int & -# 1477| getVariable().getInitializer(): [Initializer] initializer for x1 -# 1477| getExpr(): [ArrayExpr] access to array -# 1477| Type = [IntType] int -# 1477| ValueCategory = lvalue -# 1477| getArrayBase(): [VariableAccess] unnamed_local_variable -# 1477| Type = [LValueReferenceType] int(&)[2] -# 1477| ValueCategory = prvalue(load) -# 1477| getArrayOffset(): [Literal] 1 -# 1477| Type = [IntType] int -# 1477| Value = [Literal] 1 -# 1477| ValueCategory = prvalue -# 1477| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1477| Type = [IntPointerType] int * -# 1477| ValueCategory = prvalue -# 1477| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1477| Type = [ArrayType] int[2] -# 1477| ValueCategory = lvalue -# 1477| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1477| Type = [LValueReferenceType] int & -# 1477| ValueCategory = prvalue -# 1478| getStmt(3): [ExprStmt] ExprStmt -# 1478| getExpr(): [AssignExpr] ... = ... -# 1478| Type = [IntType] int -# 1478| ValueCategory = lvalue -# 1478| getLValue(): [VariableAccess] x1 -# 1478| Type = [LValueReferenceType] int & -# 1478| ValueCategory = prvalue(load) -# 1478| getRValue(): [Literal] 3 -# 1478| Type = [IntType] int -# 1478| Value = [Literal] 3 -# 1478| ValueCategory = prvalue -# 1478| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1478| Type = [IntType] int -# 1478| ValueCategory = lvalue -# 1479| getStmt(4): [DeclStmt] declaration -# 1479| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 -# 1479| Type = [LValueReferenceType] int & -# 1479| getVariable().getInitializer(): [Initializer] initializer for rx1 -# 1479| getExpr(): [VariableAccess] x1 -# 1479| Type = [LValueReferenceType] int & -# 1479| ValueCategory = prvalue(load) -# 1479| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1479| Type = [LValueReferenceType] int & -# 1479| ValueCategory = prvalue -# 1479| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1479| Type = [IntType] int -# 1479| ValueCategory = lvalue -# 1480| getStmt(5): [DeclStmt] declaration -# 1480| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1480| Type = [IntType] int -# 1480| getVariable().getInitializer(): [Initializer] initializer for x -# 1480| getExpr(): [VariableAccess] x1 -# 1480| Type = [LValueReferenceType] int & -# 1480| ValueCategory = prvalue(load) -# 1480| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1480| Type = [IntType] int -# 1480| ValueCategory = prvalue(load) -# 1482| getStmt(3): [ReturnStmt] return ... -# 1484| [CopyAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct const&) -# 1484| <params>: +# 1516| getStmt(1): [ExprStmt] ExprStmt +# 1516| getExpr(): [AssignExpr] ... = ... +# 1516| Type = [IntType] int +# 1516| ValueCategory = lvalue +# 1516| getLValue(): [VariableAccess] x1 +# 1516| Type = [IntType] int +# 1516| ValueCategory = lvalue +# 1516| getRValue(): [Literal] 3 +# 1516| Type = [IntType] int +# 1516| Value = [Literal] 3 +# 1516| ValueCategory = prvalue +# 1517| getStmt(2): [DeclStmt] declaration +# 1517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1517| Type = [LValueReferenceType] int & +# 1517| getVariable().getInitializer(): [Initializer] initializer for rx1 +# 1517| getExpr(): [VariableAccess] x1 +# 1517| Type = [IntType] int +# 1517| ValueCategory = lvalue +# 1517| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1517| Type = [LValueReferenceType] int & +# 1517| ValueCategory = prvalue +# 1518| getStmt(3): [DeclStmt] declaration +# 1518| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1518| Type = [IntType] int +# 1518| getVariable().getInitializer(): [Initializer] initializer for x +# 1518| getExpr(): [VariableAccess] x1 +# 1518| Type = [IntType] int +# 1518| ValueCategory = prvalue(load) +# 1521| getStmt(2): [BlockStmt] { ... } +# 1522| getStmt(0): [DeclStmt] declaration +# 1522| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1522| Type = [LValueReferenceType] int(&)[2] +# 1522| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1522| getExpr(): [VariableAccess] xs +# 1522| Type = [ArrayType] int[2] +# 1522| ValueCategory = lvalue +# 1522| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1522| Type = [LValueReferenceType] int(&)[2] +# 1522| ValueCategory = prvalue +# 1523| getStmt(1): [DeclStmt] declaration +# 1523| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 +# 1523| Type = [LValueReferenceType] int & +# 1523| getVariable().getInitializer(): [Initializer] initializer for x0 +# 1523| getExpr(): [ArrayExpr] access to array +# 1523| Type = [IntType] int +# 1523| ValueCategory = lvalue +# 1523| getArrayBase(): [VariableAccess] unnamed_local_variable +# 1523| Type = [LValueReferenceType] int(&)[2] +# 1523| ValueCategory = prvalue(load) +# 1523| getArrayOffset(): [Literal] 0 +# 1523| Type = [IntType] int +# 1523| Value = [Literal] 0 +# 1523| ValueCategory = prvalue +# 1523| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1523| Type = [IntPointerType] int * +# 1523| ValueCategory = prvalue +# 1523| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1523| Type = [ArrayType] int[2] +# 1523| ValueCategory = lvalue +# 1523| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1523| Type = [LValueReferenceType] int & +# 1523| ValueCategory = prvalue +# 1524| getStmt(2): [DeclStmt] declaration +# 1524| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 +# 1524| Type = [LValueReferenceType] int & +# 1524| getVariable().getInitializer(): [Initializer] initializer for x1 +# 1524| getExpr(): [ArrayExpr] access to array +# 1524| Type = [IntType] int +# 1524| ValueCategory = lvalue +# 1524| getArrayBase(): [VariableAccess] unnamed_local_variable +# 1524| Type = [LValueReferenceType] int(&)[2] +# 1524| ValueCategory = prvalue(load) +# 1524| getArrayOffset(): [Literal] 1 +# 1524| Type = [IntType] int +# 1524| Value = [Literal] 1 +# 1524| ValueCategory = prvalue +# 1524| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1524| Type = [IntPointerType] int * +# 1524| ValueCategory = prvalue +# 1524| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1524| Type = [ArrayType] int[2] +# 1524| ValueCategory = lvalue +# 1524| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1524| Type = [LValueReferenceType] int & +# 1524| ValueCategory = prvalue +# 1525| getStmt(3): [ExprStmt] ExprStmt +# 1525| getExpr(): [AssignExpr] ... = ... +# 1525| Type = [IntType] int +# 1525| ValueCategory = lvalue +# 1525| getLValue(): [VariableAccess] x1 +# 1525| Type = [LValueReferenceType] int & +# 1525| ValueCategory = prvalue(load) +# 1525| getRValue(): [Literal] 3 +# 1525| Type = [IntType] int +# 1525| Value = [Literal] 3 +# 1525| ValueCategory = prvalue +# 1525| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1525| Type = [IntType] int +# 1525| ValueCategory = lvalue +# 1526| getStmt(4): [DeclStmt] declaration +# 1526| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1526| Type = [LValueReferenceType] int & +# 1526| getVariable().getInitializer(): [Initializer] initializer for rx1 +# 1526| getExpr(): [VariableAccess] x1 +# 1526| Type = [LValueReferenceType] int & +# 1526| ValueCategory = prvalue(load) +# 1526| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1526| Type = [LValueReferenceType] int & +# 1526| ValueCategory = prvalue +# 1526| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1526| Type = [IntType] int +# 1526| ValueCategory = lvalue +# 1527| getStmt(5): [DeclStmt] declaration +# 1527| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1527| Type = [IntType] int +# 1527| getVariable().getInitializer(): [Initializer] initializer for x +# 1527| getExpr(): [VariableAccess] x1 +# 1527| Type = [LValueReferenceType] int & +# 1527| ValueCategory = prvalue(load) +# 1527| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1527| Type = [IntType] int +# 1527| ValueCategory = prvalue(load) +# 1529| getStmt(3): [ReturnStmt] return ... +# 1531| [CopyAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct const&) +# 1531| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberMemberStruct & -# 1484| [MoveAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct&&) -# 1484| <params>: +# 1531| [MoveAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct&&) +# 1531| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberMemberStruct && -# 1484| [Constructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1484| <params>: -# 1484| <initializations>: -# 1484| getInitializer(0): [ConstructorFieldInit] constructor init of field x -# 1484| Type = [IntType] int -# 1484| ValueCategory = prvalue -# 1484| getEntryPoint(): [BlockStmt] { ... } -# 1484| getStmt(0): [ReturnStmt] return ... -# 1484| [CopyConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct const&) -# 1484| <params>: +# 1531| [Constructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1531| <params>: +# 1531| <initializations>: +# 1531| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 1531| Type = [IntType] int +# 1531| ValueCategory = prvalue +# 1531| getEntryPoint(): [BlockStmt] { ... } +# 1531| getStmt(0): [ReturnStmt] return ... +# 1531| [CopyConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct const&) +# 1531| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberMemberStruct & -# 1484| [MoveConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct&&) -# 1484| <params>: +# 1531| [MoveConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct&&) +# 1531| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberMemberStruct && -# 1488| [CopyAssignmentOperator] StructuredBindingDataMemberStruct& StructuredBindingDataMemberStruct::operator=(StructuredBindingDataMemberStruct const&) -# 1488| <params>: +# 1535| [CopyAssignmentOperator] StructuredBindingDataMemberStruct& StructuredBindingDataMemberStruct::operator=(StructuredBindingDataMemberStruct const&) +# 1535| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| [Constructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1488| <params>: -# 1488| <initializations>: -# 1488| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1488| Type = [IntType] int -# 1488| ValueCategory = prvalue -# 1488| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1488| Type = [DoubleType] double -# 1488| ValueCategory = prvalue -# 1488| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1488| Type = [LValueReferenceType] int & -# 1488| ValueCategory = prvalue -# 1488| getInitializer(3): [ConstructorFieldInit] constructor init of field p -# 1488| Type = [IntPointerType] int * -# 1488| ValueCategory = prvalue -# 1488| getInitializer(4): [ConstructorFieldInit] constructor init of field xs -# 1488| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1488| ValueCategory = prvalue -# 1488| getInitializer(5): [ConstructorFieldInit] constructor init of field r_alt -# 1488| Type = [CTypedefType,NestedTypedefType] RefType -# 1488| ValueCategory = prvalue -# 1488| getInitializer(6): [ConstructorFieldInit] constructor init of field m -# 1488| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberMemberStruct -# 1488| Type = [VoidType] void -# 1488| ValueCategory = prvalue -# 1488| getEntryPoint(): [BlockStmt] { ... } -# 1488| getStmt(0): [ReturnStmt] return ... -# 1488| [CopyConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1488| <params>: +# 1535| [Constructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1535| <params>: +# 1535| <initializations>: +# 1535| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1535| Type = [IntType] int +# 1535| ValueCategory = prvalue +# 1535| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1535| Type = [DoubleType] double +# 1535| ValueCategory = prvalue +# 1535| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1535| Type = [LValueReferenceType] int & +# 1535| ValueCategory = prvalue +# 1535| getInitializer(3): [ConstructorFieldInit] constructor init of field p +# 1535| Type = [IntPointerType] int * +# 1535| ValueCategory = prvalue +# 1535| getInitializer(4): [ConstructorFieldInit] constructor init of field xs +# 1535| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1535| ValueCategory = prvalue +# 1535| getInitializer(5): [ConstructorFieldInit] constructor init of field r_alt +# 1535| Type = [CTypedefType,NestedTypedefType] RefType +# 1535| ValueCategory = prvalue +# 1535| getInitializer(6): [ConstructorFieldInit] constructor init of field m +# 1535| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberMemberStruct +# 1535| Type = [VoidType] void +# 1535| ValueCategory = prvalue +# 1535| getEntryPoint(): [BlockStmt] { ... } +# 1535| getStmt(0): [ReturnStmt] return ... +# 1535| [CopyConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1535| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| <initializations>: -# 1488| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1488| Type = [IntType] int -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] i -# 1488| Type = [IntType] int -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1488| Type = [DoubleType] double -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] d -# 1488| Type = [DoubleType] double -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getInitializer(2): [ConstructorFieldInit] constructor init of field b -# 1488| Type = [IntType] unsigned int -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] b -# 1488| Type = [IntType] unsigned int -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getInitializer(3): [ConstructorFieldInit] constructor init of field r -# 1488| Type = [LValueReferenceType] int & -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] r -# 1488| Type = [LValueReferenceType] int & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getInitializer(4): [ConstructorFieldInit] constructor init of field p -# 1488| Type = [IntPointerType] int * -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] p -# 1488| Type = [IntPointerType] int * -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getInitializer(5): [ConstructorFieldInit] constructor init of field xs -# 1488| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] xs -# 1488| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getInitializer(6): [ConstructorFieldInit] constructor init of field r_alt -# 1488| Type = [CTypedefType,NestedTypedefType] RefType -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] r_alt -# 1488| Type = [CTypedefType,NestedTypedefType] RefType -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getInitializer(7): [ConstructorFieldInit] constructor init of field m -# 1488| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1488| ValueCategory = prvalue -# 1488| getExpr(): [ReferenceFieldAccess] m -# 1488| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1488| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1488| ValueCategory = prvalue(load) -# 1488| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1488| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1488| ValueCategory = lvalue -# 1488| getEntryPoint(): [BlockStmt] { ... } -# 1488| getStmt(0): [ReturnStmt] return ... -# 1488| [MoveConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct&&) -# 1488| <params>: +# 1535| <initializations>: +# 1535| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1535| Type = [IntType] int +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] i +# 1535| Type = [IntType] int +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1535| Type = [DoubleType] double +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] d +# 1535| Type = [DoubleType] double +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getInitializer(2): [ConstructorFieldInit] constructor init of field b +# 1535| Type = [IntType] unsigned int +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] b +# 1535| Type = [IntType] unsigned int +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getInitializer(3): [ConstructorFieldInit] constructor init of field r +# 1535| Type = [LValueReferenceType] int & +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] r +# 1535| Type = [LValueReferenceType] int & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getInitializer(4): [ConstructorFieldInit] constructor init of field p +# 1535| Type = [IntPointerType] int * +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] p +# 1535| Type = [IntPointerType] int * +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getInitializer(5): [ConstructorFieldInit] constructor init of field xs +# 1535| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] xs +# 1535| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getInitializer(6): [ConstructorFieldInit] constructor init of field r_alt +# 1535| Type = [CTypedefType,NestedTypedefType] RefType +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] r_alt +# 1535| Type = [CTypedefType,NestedTypedefType] RefType +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getInitializer(7): [ConstructorFieldInit] constructor init of field m +# 1535| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1535| ValueCategory = prvalue +# 1535| getExpr(): [ReferenceFieldAccess] m +# 1535| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1535| ValueCategory = prvalue(load) +# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1535| ValueCategory = lvalue +# 1535| getEntryPoint(): [BlockStmt] { ... } +# 1535| getStmt(0): [ReturnStmt] return ... +# 1535| [MoveConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct&&) +# 1535| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberStruct && -# 1501| [TopLevelFunction] void data_member_structured_binding() -# 1501| <params>: -# 1501| getEntryPoint(): [BlockStmt] { ... } -# 1502| getStmt(0): [DeclStmt] declaration -# 1502| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 1502| Type = [Struct] StructuredBindingDataMemberStruct -# 1502| getVariable().getInitializer(): [Initializer] initializer for s -# 1502| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberStruct -# 1502| Type = [VoidType] void -# 1502| ValueCategory = prvalue -# 1504| getStmt(1): [BlockStmt] { ... } -# 1505| getStmt(0): [DeclStmt] declaration -# 1505| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1505| getExpr(): [VariableAccess] s -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = prvalue(load) -# 1505| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1505| Type = [IntType] int +# 1548| [TopLevelFunction] void data_member_structured_binding() +# 1548| <params>: +# 1548| getEntryPoint(): [BlockStmt] { ... } +# 1549| getStmt(0): [DeclStmt] declaration +# 1549| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 1549| Type = [Struct] StructuredBindingDataMemberStruct +# 1549| getVariable().getInitializer(): [Initializer] initializer for s +# 1549| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberStruct +# 1549| Type = [VoidType] void +# 1549| ValueCategory = prvalue +# 1551| getStmt(1): [BlockStmt] { ... } +# 1552| getStmt(0): [DeclStmt] declaration +# 1552| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1552| getExpr(): [VariableAccess] s +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = prvalue(load) +# 1552| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1552| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1505| getExpr(): [ValueFieldAccess] i -# 1505| Type = [IntType] int -# 1505| ValueCategory = lvalue -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d -# 1505| Type = [DoubleType] double +# 1552| getExpr(): [ValueFieldAccess] i +# 1552| Type = [IntType] int +# 1552| ValueCategory = lvalue +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d +# 1552| Type = [DoubleType] double #-----| getVariable().getInitializer(): [Initializer] initializer for d -# 1505| getExpr(): [ValueFieldAccess] d -# 1505| Type = [DoubleType] double -# 1505| ValueCategory = lvalue -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getDeclarationEntry(3): [VariableDeclarationEntry] definition of b -# 1505| Type = [IntType] unsigned int +# 1552| getExpr(): [ValueFieldAccess] d +# 1552| Type = [DoubleType] double +# 1552| ValueCategory = lvalue +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getDeclarationEntry(3): [VariableDeclarationEntry] definition of b +# 1552| Type = [IntType] unsigned int #-----| getVariable().getInitializer(): [Initializer] initializer for b -# 1505| getExpr(): [ValueFieldAccess] b -# 1505| Type = [IntType] unsigned int -# 1505| ValueCategory = lvalue -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getDeclarationEntry(4): [VariableDeclarationEntry] definition of r -# 1505| Type = [IntType] int +# 1552| getExpr(): [ValueFieldAccess] b +# 1552| Type = [IntType] unsigned int +# 1552| ValueCategory = lvalue +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getDeclarationEntry(4): [VariableDeclarationEntry] definition of r +# 1552| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1505| getExpr(): [ValueFieldAccess] r -# 1505| Type = [LValueReferenceType] int & -# 1505| ValueCategory = prvalue(load) -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1505| Type = [IntType] int -# 1505| ValueCategory = lvalue -# 1505| getDeclarationEntry(5): [VariableDeclarationEntry] definition of p -# 1505| Type = [IntPointerType] int * +# 1552| getExpr(): [ValueFieldAccess] r +# 1552| Type = [LValueReferenceType] int & +# 1552| ValueCategory = prvalue(load) +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1552| Type = [IntType] int +# 1552| ValueCategory = lvalue +# 1552| getDeclarationEntry(5): [VariableDeclarationEntry] definition of p +# 1552| Type = [IntPointerType] int * #-----| getVariable().getInitializer(): [Initializer] initializer for p -# 1505| getExpr(): [ValueFieldAccess] p -# 1505| Type = [IntPointerType] int * -# 1505| ValueCategory = lvalue -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getDeclarationEntry(6): [VariableDeclarationEntry] definition of xs -# 1505| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1552| getExpr(): [ValueFieldAccess] p +# 1552| Type = [IntPointerType] int * +# 1552| ValueCategory = lvalue +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getDeclarationEntry(6): [VariableDeclarationEntry] definition of xs +# 1552| Type = [CTypedefType,NestedTypedefType] ArrayType #-----| getVariable().getInitializer(): [Initializer] initializer for xs -# 1505| getExpr(): [ValueFieldAccess] xs -# 1505| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1505| ValueCategory = lvalue -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getDeclarationEntry(7): [VariableDeclarationEntry] definition of r_alt -# 1505| Type = [IntType] int +# 1552| getExpr(): [ValueFieldAccess] xs +# 1552| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1552| ValueCategory = lvalue +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getDeclarationEntry(7): [VariableDeclarationEntry] definition of r_alt +# 1552| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for r_alt -# 1505| getExpr(): [ValueFieldAccess] r_alt -# 1505| Type = [CTypedefType,NestedTypedefType] RefType -# 1505| ValueCategory = prvalue(load) -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1505| Type = [IntType] int -# 1505| ValueCategory = lvalue -# 1505| getDeclarationEntry(8): [VariableDeclarationEntry] definition of m -# 1505| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1552| getExpr(): [ValueFieldAccess] r_alt +# 1552| Type = [CTypedefType,NestedTypedefType] RefType +# 1552| ValueCategory = prvalue(load) +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1552| Type = [IntType] int +# 1552| ValueCategory = lvalue +# 1552| getDeclarationEntry(8): [VariableDeclarationEntry] definition of m +# 1552| Type = [Struct] StructuredBindingDataMemberMemberStruct #-----| getVariable().getInitializer(): [Initializer] initializer for m -# 1505| getExpr(): [ValueFieldAccess] m -# 1505| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1505| ValueCategory = lvalue -# 1505| getQualifier(): [VariableAccess] (unnamed local variable) -# 1505| Type = [Struct] StructuredBindingDataMemberStruct -# 1505| ValueCategory = lvalue -# 1506| getStmt(1): [ExprStmt] ExprStmt -# 1506| getExpr(): [AssignExpr] ... = ... -# 1506| Type = [DoubleType] double -# 1506| ValueCategory = lvalue -# 1506| getLValue(): [VariableAccess] d -# 1506| Type = [DoubleType] double -# 1506| ValueCategory = lvalue -# 1506| getRValue(): [Literal] 4.0 -# 1506| Type = [DoubleType] double -# 1506| Value = [Literal] 4.0 -# 1506| ValueCategory = prvalue -# 1507| getStmt(2): [DeclStmt] declaration -# 1507| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1507| Type = [LValueReferenceType] double & -# 1507| getVariable().getInitializer(): [Initializer] initializer for rd -# 1507| getExpr(): [VariableAccess] d -# 1507| Type = [DoubleType] double -# 1507| ValueCategory = lvalue -# 1507| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1507| Type = [LValueReferenceType] double & -# 1507| ValueCategory = prvalue -# 1508| getStmt(3): [DeclStmt] declaration -# 1508| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1508| Type = [IntType] int -# 1508| getVariable().getInitializer(): [Initializer] initializer for v -# 1508| getExpr(): [VariableAccess] i -# 1508| Type = [IntType] int -# 1508| ValueCategory = prvalue(load) -# 1509| getStmt(4): [ExprStmt] ExprStmt -# 1509| getExpr(): [AssignExpr] ... = ... -# 1509| Type = [IntType] int -# 1509| ValueCategory = lvalue -# 1509| getLValue(): [VariableAccess] r -# 1509| Type = [IntType] int -# 1509| ValueCategory = lvalue -# 1509| getRValue(): [Literal] 5 -# 1509| Type = [IntType] int -# 1509| Value = [Literal] 5 -# 1509| ValueCategory = prvalue -# 1510| getStmt(5): [ExprStmt] ExprStmt -# 1510| getExpr(): [AssignExpr] ... = ... -# 1510| Type = [IntType] int -# 1510| ValueCategory = lvalue -# 1510| getLValue(): [PointerDereferenceExpr] * ... -# 1510| Type = [IntType] int -# 1510| ValueCategory = lvalue -# 1510| getOperand(): [VariableAccess] p -# 1510| Type = [IntPointerType] int * -# 1510| ValueCategory = prvalue(load) -# 1510| getRValue(): [Literal] 6 -# 1510| Type = [IntType] int -# 1510| Value = [Literal] 6 -# 1510| ValueCategory = prvalue -# 1511| getStmt(6): [DeclStmt] declaration -# 1511| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1511| Type = [LValueReferenceType] int & -# 1511| getVariable().getInitializer(): [Initializer] initializer for rr -# 1511| getExpr(): [VariableAccess] r -# 1511| Type = [IntType] int -# 1511| ValueCategory = lvalue -# 1511| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1511| Type = [LValueReferenceType] int & -# 1511| ValueCategory = prvalue -# 1512| getStmt(7): [DeclStmt] declaration -# 1512| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr -# 1512| Type = [IntPointerType] int * -# 1512| getVariable().getInitializer(): [Initializer] initializer for pr -# 1512| getExpr(): [AddressOfExpr] & ... -# 1512| Type = [IntPointerType] int * -# 1512| ValueCategory = prvalue -# 1512| getOperand(): [VariableAccess] r -# 1512| Type = [IntType] int -# 1512| ValueCategory = lvalue -# 1513| getStmt(8): [DeclStmt] declaration -# 1513| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1513| Type = [IntType] int -# 1513| getVariable().getInitializer(): [Initializer] initializer for w -# 1513| getExpr(): [VariableAccess] r -# 1513| Type = [IntType] int -# 1513| ValueCategory = prvalue(load) -# 1516| getStmt(2): [BlockStmt] { ... } -# 1517| getStmt(0): [DeclStmt] declaration -# 1517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1517| Type = [Struct] StructuredBindingDataMemberStruct -# 1517| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1517| getExpr(): [VariableAccess] s -# 1517| Type = [Struct] StructuredBindingDataMemberStruct -# 1517| ValueCategory = prvalue(load) -# 1518| getStmt(1): [DeclStmt] declaration -# 1518| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1518| Type = [LValueReferenceType] int & -# 1518| getVariable().getInitializer(): [Initializer] initializer for i -# 1518| getExpr(): [ValueFieldAccess] i -# 1518| Type = [IntType] int -# 1518| ValueCategory = lvalue -# 1518| getQualifier(): [VariableAccess] unnamed_local_variable -# 1518| Type = [Struct] StructuredBindingDataMemberStruct -# 1518| ValueCategory = lvalue -# 1518| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1518| Type = [LValueReferenceType] int & -# 1518| ValueCategory = prvalue -# 1519| getStmt(2): [DeclStmt] declaration -# 1519| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1519| Type = [LValueReferenceType] double & -# 1519| getVariable().getInitializer(): [Initializer] initializer for d -# 1519| getExpr(): [ValueFieldAccess] d -# 1519| Type = [DoubleType] double -# 1519| ValueCategory = lvalue -# 1519| getQualifier(): [VariableAccess] unnamed_local_variable -# 1519| Type = [Struct] StructuredBindingDataMemberStruct -# 1519| ValueCategory = lvalue -# 1519| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1519| Type = [LValueReferenceType] double & -# 1519| ValueCategory = prvalue -# 1521| getStmt(3): [DeclStmt] declaration -# 1521| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1521| Type = [LValueReferenceType] int & -# 1521| getVariable().getInitializer(): [Initializer] initializer for r -# 1521| getExpr(): [ValueFieldAccess] r -# 1521| Type = [LValueReferenceType] int & -# 1521| ValueCategory = prvalue(load) -# 1521| getQualifier(): [VariableAccess] unnamed_local_variable -# 1521| Type = [Struct] StructuredBindingDataMemberStruct -# 1521| ValueCategory = lvalue -# 1521| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1521| Type = [LValueReferenceType] int & -# 1521| ValueCategory = prvalue -# 1521| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1521| Type = [IntType] int -# 1521| ValueCategory = lvalue -# 1522| getStmt(4): [DeclStmt] declaration -# 1522| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 1522| Type = [LValueReferenceType] int *& -# 1522| getVariable().getInitializer(): [Initializer] initializer for p -# 1522| getExpr(): [ValueFieldAccess] p -# 1522| Type = [IntPointerType] int * -# 1522| ValueCategory = lvalue -# 1522| getQualifier(): [VariableAccess] unnamed_local_variable -# 1522| Type = [Struct] StructuredBindingDataMemberStruct -# 1522| ValueCategory = lvalue -# 1522| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1522| Type = [LValueReferenceType] int *& -# 1522| ValueCategory = prvalue -# 1523| getStmt(5): [ExprStmt] ExprStmt -# 1523| getExpr(): [AssignExpr] ... = ... -# 1523| Type = [DoubleType] double -# 1523| ValueCategory = lvalue -# 1523| getLValue(): [VariableAccess] d -# 1523| Type = [LValueReferenceType] double & -# 1523| ValueCategory = prvalue(load) -# 1523| getRValue(): [Literal] 4.0 -# 1523| Type = [DoubleType] double -# 1523| Value = [Literal] 4.0 -# 1523| ValueCategory = prvalue -# 1523| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1523| Type = [DoubleType] double -# 1523| ValueCategory = lvalue -# 1524| getStmt(6): [DeclStmt] declaration -# 1524| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1524| Type = [LValueReferenceType] double & -# 1524| getVariable().getInitializer(): [Initializer] initializer for rd -# 1524| getExpr(): [VariableAccess] d -# 1524| Type = [LValueReferenceType] double & -# 1524| ValueCategory = prvalue(load) -# 1524| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1524| Type = [LValueReferenceType] double & -# 1524| ValueCategory = prvalue -# 1524| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1524| Type = [DoubleType] double -# 1524| ValueCategory = lvalue -# 1525| getStmt(7): [DeclStmt] declaration -# 1525| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1525| Type = [IntType] int -# 1525| getVariable().getInitializer(): [Initializer] initializer for v -# 1525| getExpr(): [VariableAccess] i -# 1525| Type = [LValueReferenceType] int & -# 1525| ValueCategory = prvalue(load) -# 1525| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1525| Type = [IntType] int -# 1525| ValueCategory = prvalue(load) -# 1526| getStmt(8): [ExprStmt] ExprStmt -# 1526| getExpr(): [AssignExpr] ... = ... -# 1526| Type = [IntType] int -# 1526| ValueCategory = lvalue -# 1526| getLValue(): [VariableAccess] r -# 1526| Type = [LValueReferenceType] int & -# 1526| ValueCategory = prvalue(load) -# 1526| getRValue(): [Literal] 5 -# 1526| Type = [IntType] int -# 1526| Value = [Literal] 5 -# 1526| ValueCategory = prvalue -# 1526| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1526| Type = [IntType] int -# 1526| ValueCategory = lvalue -# 1527| getStmt(9): [ExprStmt] ExprStmt -# 1527| getExpr(): [AssignExpr] ... = ... -# 1527| Type = [IntType] int -# 1527| ValueCategory = lvalue -# 1527| getLValue(): [PointerDereferenceExpr] * ... -# 1527| Type = [IntType] int -# 1527| ValueCategory = lvalue -# 1527| getOperand(): [VariableAccess] p -# 1527| Type = [LValueReferenceType] int *& -# 1527| ValueCategory = prvalue(load) -# 1527| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1527| Type = [IntPointerType] int * -# 1527| ValueCategory = prvalue(load) -# 1527| getRValue(): [Literal] 6 -# 1527| Type = [IntType] int -# 1527| Value = [Literal] 6 -# 1527| ValueCategory = prvalue -# 1528| getStmt(10): [DeclStmt] declaration -# 1528| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1528| Type = [LValueReferenceType] int & -# 1528| getVariable().getInitializer(): [Initializer] initializer for rr -# 1528| getExpr(): [VariableAccess] r -# 1528| Type = [LValueReferenceType] int & -# 1528| ValueCategory = prvalue(load) -# 1528| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1528| Type = [LValueReferenceType] int & -# 1528| ValueCategory = prvalue -# 1528| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1528| Type = [IntType] int -# 1528| ValueCategory = lvalue -# 1529| getStmt(11): [DeclStmt] declaration -# 1529| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr -# 1529| Type = [IntPointerType] int * -# 1529| getVariable().getInitializer(): [Initializer] initializer for pr -# 1529| getExpr(): [AddressOfExpr] & ... -# 1529| Type = [IntPointerType] int * -# 1529| ValueCategory = prvalue -# 1529| getOperand(): [VariableAccess] r -# 1529| Type = [LValueReferenceType] int & -# 1529| ValueCategory = prvalue(load) -# 1529| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1529| Type = [IntType] int -# 1529| ValueCategory = lvalue -# 1530| getStmt(12): [DeclStmt] declaration -# 1530| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1530| Type = [IntType] int -# 1530| getVariable().getInitializer(): [Initializer] initializer for w -# 1530| getExpr(): [VariableAccess] r -# 1530| Type = [LValueReferenceType] int & -# 1530| ValueCategory = prvalue(load) -# 1530| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1530| Type = [IntType] int -# 1530| ValueCategory = prvalue(load) -# 1532| getStmt(3): [ReturnStmt] return ... -# 1541| [CopyAssignmentOperator] StructuredBindingTupleRefGet& StructuredBindingTupleRefGet::operator=(StructuredBindingTupleRefGet const&) -# 1541| <params>: +# 1552| getExpr(): [ValueFieldAccess] m +# 1552| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1552| ValueCategory = lvalue +# 1552| getQualifier(): [VariableAccess] (unnamed local variable) +# 1552| Type = [Struct] StructuredBindingDataMemberStruct +# 1552| ValueCategory = lvalue +# 1553| getStmt(1): [ExprStmt] ExprStmt +# 1553| getExpr(): [AssignExpr] ... = ... +# 1553| Type = [DoubleType] double +# 1553| ValueCategory = lvalue +# 1553| getLValue(): [VariableAccess] d +# 1553| Type = [DoubleType] double +# 1553| ValueCategory = lvalue +# 1553| getRValue(): [Literal] 4.0 +# 1553| Type = [DoubleType] double +# 1553| Value = [Literal] 4.0 +# 1553| ValueCategory = prvalue +# 1554| getStmt(2): [DeclStmt] declaration +# 1554| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1554| Type = [LValueReferenceType] double & +# 1554| getVariable().getInitializer(): [Initializer] initializer for rd +# 1554| getExpr(): [VariableAccess] d +# 1554| Type = [DoubleType] double +# 1554| ValueCategory = lvalue +# 1554| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1554| Type = [LValueReferenceType] double & +# 1554| ValueCategory = prvalue +# 1555| getStmt(3): [DeclStmt] declaration +# 1555| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1555| Type = [IntType] int +# 1555| getVariable().getInitializer(): [Initializer] initializer for v +# 1555| getExpr(): [VariableAccess] i +# 1555| Type = [IntType] int +# 1555| ValueCategory = prvalue(load) +# 1556| getStmt(4): [ExprStmt] ExprStmt +# 1556| getExpr(): [AssignExpr] ... = ... +# 1556| Type = [IntType] int +# 1556| ValueCategory = lvalue +# 1556| getLValue(): [VariableAccess] r +# 1556| Type = [IntType] int +# 1556| ValueCategory = lvalue +# 1556| getRValue(): [Literal] 5 +# 1556| Type = [IntType] int +# 1556| Value = [Literal] 5 +# 1556| ValueCategory = prvalue +# 1557| getStmt(5): [ExprStmt] ExprStmt +# 1557| getExpr(): [AssignExpr] ... = ... +# 1557| Type = [IntType] int +# 1557| ValueCategory = lvalue +# 1557| getLValue(): [PointerDereferenceExpr] * ... +# 1557| Type = [IntType] int +# 1557| ValueCategory = lvalue +# 1557| getOperand(): [VariableAccess] p +# 1557| Type = [IntPointerType] int * +# 1557| ValueCategory = prvalue(load) +# 1557| getRValue(): [Literal] 6 +# 1557| Type = [IntType] int +# 1557| Value = [Literal] 6 +# 1557| ValueCategory = prvalue +# 1558| getStmt(6): [DeclStmt] declaration +# 1558| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1558| Type = [LValueReferenceType] int & +# 1558| getVariable().getInitializer(): [Initializer] initializer for rr +# 1558| getExpr(): [VariableAccess] r +# 1558| Type = [IntType] int +# 1558| ValueCategory = lvalue +# 1558| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1558| Type = [LValueReferenceType] int & +# 1558| ValueCategory = prvalue +# 1559| getStmt(7): [DeclStmt] declaration +# 1559| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr +# 1559| Type = [IntPointerType] int * +# 1559| getVariable().getInitializer(): [Initializer] initializer for pr +# 1559| getExpr(): [AddressOfExpr] & ... +# 1559| Type = [IntPointerType] int * +# 1559| ValueCategory = prvalue +# 1559| getOperand(): [VariableAccess] r +# 1559| Type = [IntType] int +# 1559| ValueCategory = lvalue +# 1560| getStmt(8): [DeclStmt] declaration +# 1560| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1560| Type = [IntType] int +# 1560| getVariable().getInitializer(): [Initializer] initializer for w +# 1560| getExpr(): [VariableAccess] r +# 1560| Type = [IntType] int +# 1560| ValueCategory = prvalue(load) +# 1563| getStmt(2): [BlockStmt] { ... } +# 1564| getStmt(0): [DeclStmt] declaration +# 1564| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1564| Type = [Struct] StructuredBindingDataMemberStruct +# 1564| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1564| getExpr(): [VariableAccess] s +# 1564| Type = [Struct] StructuredBindingDataMemberStruct +# 1564| ValueCategory = prvalue(load) +# 1565| getStmt(1): [DeclStmt] declaration +# 1565| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1565| Type = [LValueReferenceType] int & +# 1565| getVariable().getInitializer(): [Initializer] initializer for i +# 1565| getExpr(): [ValueFieldAccess] i +# 1565| Type = [IntType] int +# 1565| ValueCategory = lvalue +# 1565| getQualifier(): [VariableAccess] unnamed_local_variable +# 1565| Type = [Struct] StructuredBindingDataMemberStruct +# 1565| ValueCategory = lvalue +# 1565| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1565| Type = [LValueReferenceType] int & +# 1565| ValueCategory = prvalue +# 1566| getStmt(2): [DeclStmt] declaration +# 1566| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1566| Type = [LValueReferenceType] double & +# 1566| getVariable().getInitializer(): [Initializer] initializer for d +# 1566| getExpr(): [ValueFieldAccess] d +# 1566| Type = [DoubleType] double +# 1566| ValueCategory = lvalue +# 1566| getQualifier(): [VariableAccess] unnamed_local_variable +# 1566| Type = [Struct] StructuredBindingDataMemberStruct +# 1566| ValueCategory = lvalue +# 1566| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1566| Type = [LValueReferenceType] double & +# 1566| ValueCategory = prvalue +# 1568| getStmt(3): [DeclStmt] declaration +# 1568| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1568| Type = [LValueReferenceType] int & +# 1568| getVariable().getInitializer(): [Initializer] initializer for r +# 1568| getExpr(): [ValueFieldAccess] r +# 1568| Type = [LValueReferenceType] int & +# 1568| ValueCategory = prvalue(load) +# 1568| getQualifier(): [VariableAccess] unnamed_local_variable +# 1568| Type = [Struct] StructuredBindingDataMemberStruct +# 1568| ValueCategory = lvalue +# 1568| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1568| Type = [LValueReferenceType] int & +# 1568| ValueCategory = prvalue +# 1568| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1568| Type = [IntType] int +# 1568| ValueCategory = lvalue +# 1569| getStmt(4): [DeclStmt] declaration +# 1569| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 1569| Type = [LValueReferenceType] int *& +# 1569| getVariable().getInitializer(): [Initializer] initializer for p +# 1569| getExpr(): [ValueFieldAccess] p +# 1569| Type = [IntPointerType] int * +# 1569| ValueCategory = lvalue +# 1569| getQualifier(): [VariableAccess] unnamed_local_variable +# 1569| Type = [Struct] StructuredBindingDataMemberStruct +# 1569| ValueCategory = lvalue +# 1569| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1569| Type = [LValueReferenceType] int *& +# 1569| ValueCategory = prvalue +# 1570| getStmt(5): [ExprStmt] ExprStmt +# 1570| getExpr(): [AssignExpr] ... = ... +# 1570| Type = [DoubleType] double +# 1570| ValueCategory = lvalue +# 1570| getLValue(): [VariableAccess] d +# 1570| Type = [LValueReferenceType] double & +# 1570| ValueCategory = prvalue(load) +# 1570| getRValue(): [Literal] 4.0 +# 1570| Type = [DoubleType] double +# 1570| Value = [Literal] 4.0 +# 1570| ValueCategory = prvalue +# 1570| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1570| Type = [DoubleType] double +# 1570| ValueCategory = lvalue +# 1571| getStmt(6): [DeclStmt] declaration +# 1571| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1571| Type = [LValueReferenceType] double & +# 1571| getVariable().getInitializer(): [Initializer] initializer for rd +# 1571| getExpr(): [VariableAccess] d +# 1571| Type = [LValueReferenceType] double & +# 1571| ValueCategory = prvalue(load) +# 1571| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1571| Type = [LValueReferenceType] double & +# 1571| ValueCategory = prvalue +# 1571| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1571| Type = [DoubleType] double +# 1571| ValueCategory = lvalue +# 1572| getStmt(7): [DeclStmt] declaration +# 1572| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1572| Type = [IntType] int +# 1572| getVariable().getInitializer(): [Initializer] initializer for v +# 1572| getExpr(): [VariableAccess] i +# 1572| Type = [LValueReferenceType] int & +# 1572| ValueCategory = prvalue(load) +# 1572| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1572| Type = [IntType] int +# 1572| ValueCategory = prvalue(load) +# 1573| getStmt(8): [ExprStmt] ExprStmt +# 1573| getExpr(): [AssignExpr] ... = ... +# 1573| Type = [IntType] int +# 1573| ValueCategory = lvalue +# 1573| getLValue(): [VariableAccess] r +# 1573| Type = [LValueReferenceType] int & +# 1573| ValueCategory = prvalue(load) +# 1573| getRValue(): [Literal] 5 +# 1573| Type = [IntType] int +# 1573| Value = [Literal] 5 +# 1573| ValueCategory = prvalue +# 1573| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1573| Type = [IntType] int +# 1573| ValueCategory = lvalue +# 1574| getStmt(9): [ExprStmt] ExprStmt +# 1574| getExpr(): [AssignExpr] ... = ... +# 1574| Type = [IntType] int +# 1574| ValueCategory = lvalue +# 1574| getLValue(): [PointerDereferenceExpr] * ... +# 1574| Type = [IntType] int +# 1574| ValueCategory = lvalue +# 1574| getOperand(): [VariableAccess] p +# 1574| Type = [LValueReferenceType] int *& +# 1574| ValueCategory = prvalue(load) +# 1574| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1574| Type = [IntPointerType] int * +# 1574| ValueCategory = prvalue(load) +# 1574| getRValue(): [Literal] 6 +# 1574| Type = [IntType] int +# 1574| Value = [Literal] 6 +# 1574| ValueCategory = prvalue +# 1575| getStmt(10): [DeclStmt] declaration +# 1575| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1575| Type = [LValueReferenceType] int & +# 1575| getVariable().getInitializer(): [Initializer] initializer for rr +# 1575| getExpr(): [VariableAccess] r +# 1575| Type = [LValueReferenceType] int & +# 1575| ValueCategory = prvalue(load) +# 1575| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1575| Type = [LValueReferenceType] int & +# 1575| ValueCategory = prvalue +# 1575| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1575| Type = [IntType] int +# 1575| ValueCategory = lvalue +# 1576| getStmt(11): [DeclStmt] declaration +# 1576| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr +# 1576| Type = [IntPointerType] int * +# 1576| getVariable().getInitializer(): [Initializer] initializer for pr +# 1576| getExpr(): [AddressOfExpr] & ... +# 1576| Type = [IntPointerType] int * +# 1576| ValueCategory = prvalue +# 1576| getOperand(): [VariableAccess] r +# 1576| Type = [LValueReferenceType] int & +# 1576| ValueCategory = prvalue(load) +# 1576| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1576| Type = [IntType] int +# 1576| ValueCategory = lvalue +# 1577| getStmt(12): [DeclStmt] declaration +# 1577| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1577| Type = [IntType] int +# 1577| getVariable().getInitializer(): [Initializer] initializer for w +# 1577| getExpr(): [VariableAccess] r +# 1577| Type = [LValueReferenceType] int & +# 1577| ValueCategory = prvalue(load) +# 1577| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1577| Type = [IntType] int +# 1577| ValueCategory = prvalue(load) +# 1579| getStmt(3): [ReturnStmt] return ... +# 1588| [CopyAssignmentOperator] StructuredBindingTupleRefGet& StructuredBindingTupleRefGet::operator=(StructuredBindingTupleRefGet const&) +# 1588| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1541| [Constructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1541| <params>: -# 1541| <initializations>: -# 1541| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1541| Type = [IntType] int -# 1541| ValueCategory = prvalue -# 1541| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1541| Type = [DoubleType] double -# 1541| ValueCategory = prvalue -# 1541| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1541| Type = [LValueReferenceType] int & -# 1541| ValueCategory = prvalue -# 1541| getEntryPoint(): [BlockStmt] { ... } -# 1541| getStmt(0): [ReturnStmt] return ... -# 1541| [CopyConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1541| <params>: +# 1588| [Constructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1588| <params>: +# 1588| <initializations>: +# 1588| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1588| Type = [IntType] int +# 1588| ValueCategory = prvalue +# 1588| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1588| Type = [DoubleType] double +# 1588| ValueCategory = prvalue +# 1588| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1588| Type = [LValueReferenceType] int & +# 1588| ValueCategory = prvalue +# 1588| getEntryPoint(): [BlockStmt] { ... } +# 1588| getStmt(0): [ReturnStmt] return ... +# 1588| [CopyConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1588| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1541| <initializations>: -# 1541| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1541| Type = [IntType] int -# 1541| ValueCategory = prvalue -# 1541| getExpr(): [ReferenceFieldAccess] i -# 1541| Type = [IntType] int -# 1541| ValueCategory = prvalue(load) -# 1541| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1541| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1541| ValueCategory = prvalue(load) -# 1541| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1541| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1541| ValueCategory = lvalue -# 1541| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1541| Type = [DoubleType] double -# 1541| ValueCategory = prvalue -# 1541| getExpr(): [ReferenceFieldAccess] d -# 1541| Type = [DoubleType] double -# 1541| ValueCategory = prvalue(load) -# 1541| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1541| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1541| ValueCategory = prvalue(load) -# 1541| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1541| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1541| ValueCategory = lvalue -# 1541| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1541| Type = [LValueReferenceType] int & -# 1541| ValueCategory = prvalue -# 1541| getExpr(): [ReferenceFieldAccess] r -# 1541| Type = [LValueReferenceType] int & -# 1541| ValueCategory = prvalue(load) -# 1541| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1541| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1541| ValueCategory = prvalue(load) -# 1541| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1541| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1541| ValueCategory = lvalue -# 1541| getEntryPoint(): [BlockStmt] { ... } -# 1541| getStmt(0): [ReturnStmt] return ... -# 1541| [MoveConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet&&) -# 1541| <params>: +# 1588| <initializations>: +# 1588| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1588| Type = [IntType] int +# 1588| ValueCategory = prvalue +# 1588| getExpr(): [ReferenceFieldAccess] i +# 1588| Type = [IntType] int +# 1588| ValueCategory = prvalue(load) +# 1588| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1588| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1588| ValueCategory = prvalue(load) +# 1588| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1588| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1588| ValueCategory = lvalue +# 1588| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1588| Type = [DoubleType] double +# 1588| ValueCategory = prvalue +# 1588| getExpr(): [ReferenceFieldAccess] d +# 1588| Type = [DoubleType] double +# 1588| ValueCategory = prvalue(load) +# 1588| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1588| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1588| ValueCategory = prvalue(load) +# 1588| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1588| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1588| ValueCategory = lvalue +# 1588| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1588| Type = [LValueReferenceType] int & +# 1588| ValueCategory = prvalue +# 1588| getExpr(): [ReferenceFieldAccess] r +# 1588| Type = [LValueReferenceType] int & +# 1588| ValueCategory = prvalue(load) +# 1588| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1588| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1588| ValueCategory = prvalue(load) +# 1588| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1588| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1588| ValueCategory = lvalue +# 1588| getEntryPoint(): [BlockStmt] { ... } +# 1588| getStmt(0): [ReturnStmt] return ... +# 1588| [MoveConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet&&) +# 1588| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingTupleRefGet && -# 1547| [MemberFunction,TemplateFunction] type& StructuredBindingTupleRefGet::get<int i>() -# 1547| <params>: -# 1551| [CopyAssignmentOperator] std::tuple_size<StructuredBindingTupleRefGet>& std::tuple_size<StructuredBindingTupleRefGet>::operator=(std::tuple_size<StructuredBindingTupleRefGet> const&) -# 1551| <params>: +# 1594| [MemberFunction,TemplateFunction] type& StructuredBindingTupleRefGet::get<int i>() +# 1594| <params>: +# 1598| [CopyAssignmentOperator] std::tuple_size<StructuredBindingTupleRefGet>& std::tuple_size<StructuredBindingTupleRefGet>::operator=(std::tuple_size<StructuredBindingTupleRefGet> const&) +# 1598| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_size<StructuredBindingTupleRefGet> & -# 1551| [MoveAssignmentOperator] std::tuple_size<StructuredBindingTupleRefGet>& std::tuple_size<StructuredBindingTupleRefGet>::operator=(std::tuple_size<StructuredBindingTupleRefGet>&&) -# 1551| <params>: +# 1598| [MoveAssignmentOperator] std::tuple_size<StructuredBindingTupleRefGet>& std::tuple_size<StructuredBindingTupleRefGet>::operator=(std::tuple_size<StructuredBindingTupleRefGet>&&) +# 1598| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_size<StructuredBindingTupleRefGet> && -# 1556| [CopyAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleRefGet>& std::tuple_element<int 0, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleRefGet> const&) -# 1556| <params>: +# 1603| [CopyAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleRefGet>& std::tuple_element<int 0, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleRefGet> const&) +# 1603| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<0, StructuredBindingTupleRefGet> & -# 1556| [MoveAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleRefGet>& std::tuple_element<int 0, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleRefGet>&&) -# 1556| <params>: +# 1603| [MoveAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleRefGet>& std::tuple_element<int 0, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleRefGet>&&) +# 1603| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<0, StructuredBindingTupleRefGet> && -# 1560| [CopyAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleRefGet>& std::tuple_element<int 1, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleRefGet> const&) -# 1560| <params>: +# 1607| [CopyAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleRefGet>& std::tuple_element<int 1, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleRefGet> const&) +# 1607| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<1, StructuredBindingTupleRefGet> & -# 1560| [MoveAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleRefGet>& std::tuple_element<int 1, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleRefGet>&&) -# 1560| <params>: +# 1607| [MoveAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleRefGet>& std::tuple_element<int 1, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleRefGet>&&) +# 1607| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<1, StructuredBindingTupleRefGet> && -# 1564| [CopyAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleRefGet>& std::tuple_element<int 2, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleRefGet> const&) -# 1564| <params>: +# 1611| [CopyAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleRefGet>& std::tuple_element<int 2, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleRefGet> const&) +# 1611| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<2, StructuredBindingTupleRefGet> & -# 1564| [MoveAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleRefGet>& std::tuple_element<int 2, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleRefGet>&&) -# 1564| <params>: +# 1611| [MoveAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleRefGet>& std::tuple_element<int 2, StructuredBindingTupleRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleRefGet>&&) +# 1611| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<2, StructuredBindingTupleRefGet> && -# 1569| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 0, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 0>() -# 1569| <params>: -# 1569| getEntryPoint(): [BlockStmt] { ... } -# 1570| getStmt(0): [ReturnStmt] return ... -# 1570| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i -# 1570| Type = [IntType] int -# 1570| ValueCategory = lvalue -# 1570| getQualifier(): [ThisExpr] this -# 1570| Type = [PointerType] StructuredBindingTupleRefGet * -# 1570| ValueCategory = prvalue(load) +# 1616| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 0, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 0>() +# 1616| <params>: +# 1616| getEntryPoint(): [BlockStmt] { ... } +# 1617| getStmt(0): [ReturnStmt] return ... +# 1617| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i +# 1617| Type = [IntType] int +# 1617| ValueCategory = lvalue +# 1617| getQualifier(): [ThisExpr] this +# 1617| Type = [PointerType] StructuredBindingTupleRefGet * +# 1617| ValueCategory = prvalue(load) #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] int & #-----| ValueCategory = prvalue -# 1573| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 1, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 1>() -# 1573| <params>: -# 1573| getEntryPoint(): [BlockStmt] { ... } -# 1574| getStmt(0): [ReturnStmt] return ... -# 1574| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] d -# 1574| Type = [DoubleType] double -# 1574| ValueCategory = lvalue -# 1574| getQualifier(): [ThisExpr] this -# 1574| Type = [PointerType] StructuredBindingTupleRefGet * -# 1574| ValueCategory = prvalue(load) +# 1620| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 1, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 1>() +# 1620| <params>: +# 1620| getEntryPoint(): [BlockStmt] { ... } +# 1621| getStmt(0): [ReturnStmt] return ... +# 1621| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] d +# 1621| Type = [DoubleType] double +# 1621| ValueCategory = lvalue +# 1621| getQualifier(): [ThisExpr] this +# 1621| Type = [PointerType] StructuredBindingTupleRefGet * +# 1621| ValueCategory = prvalue(load) #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] double & #-----| ValueCategory = prvalue -# 1577| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 2, StructuredBindingTupleRefGet>::type StructuredBindingTupleRefGet::get<int 2>() -# 1577| <params>: -# 1577| getEntryPoint(): [BlockStmt] { ... } -# 1578| getStmt(0): [ReturnStmt] return ... -# 1578| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r -# 1578| Type = [LValueReferenceType] int & -# 1578| ValueCategory = prvalue(load) -# 1578| getQualifier(): [ThisExpr] this -# 1578| Type = [PointerType] StructuredBindingTupleRefGet * -# 1578| ValueCategory = prvalue(load) -# 1578| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1578| Type = [LValueReferenceType] int & -# 1578| ValueCategory = prvalue -# 1578| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1578| Type = [IntType] int -# 1578| ValueCategory = lvalue -# 1581| [TopLevelFunction] void tuple_structured_binding_ref_get() -# 1581| <params>: -# 1581| getEntryPoint(): [BlockStmt] { ... } -# 1582| getStmt(0): [DeclStmt] declaration -# 1582| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t -# 1582| Type = [Struct] StructuredBindingTupleRefGet -# 1582| getVariable().getInitializer(): [Initializer] initializer for t -# 1582| getExpr(): [ConstructorCall] call to StructuredBindingTupleRefGet -# 1582| Type = [VoidType] void -# 1582| ValueCategory = prvalue -# 1584| getStmt(1): [BlockStmt] { ... } -# 1585| getStmt(0): [DeclStmt] declaration -# 1585| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1585| Type = [Struct] StructuredBindingTupleRefGet -# 1585| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1585| getExpr(): [VariableAccess] t -# 1585| Type = [Struct] StructuredBindingTupleRefGet -# 1585| ValueCategory = prvalue(load) -# 1585| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1585| Type = [LValueReferenceType] type & +# 1624| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 2, StructuredBindingTupleRefGet>::type StructuredBindingTupleRefGet::get<int 2>() +# 1624| <params>: +# 1624| getEntryPoint(): [BlockStmt] { ... } +# 1625| getStmt(0): [ReturnStmt] return ... +# 1625| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r +# 1625| Type = [LValueReferenceType] int & +# 1625| ValueCategory = prvalue(load) +# 1625| getQualifier(): [ThisExpr] this +# 1625| Type = [PointerType] StructuredBindingTupleRefGet * +# 1625| ValueCategory = prvalue(load) +# 1625| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1625| Type = [LValueReferenceType] int & +# 1625| ValueCategory = prvalue +# 1625| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1625| Type = [IntType] int +# 1625| ValueCategory = lvalue +# 1628| [TopLevelFunction] void tuple_structured_binding_ref_get() +# 1628| <params>: +# 1628| getEntryPoint(): [BlockStmt] { ... } +# 1629| getStmt(0): [DeclStmt] declaration +# 1629| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 1629| Type = [Struct] StructuredBindingTupleRefGet +# 1629| getVariable().getInitializer(): [Initializer] initializer for t +# 1629| getExpr(): [ConstructorCall] call to StructuredBindingTupleRefGet +# 1629| Type = [VoidType] void +# 1629| ValueCategory = prvalue +# 1631| getStmt(1): [BlockStmt] { ... } +# 1632| getStmt(0): [DeclStmt] declaration +# 1632| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1632| Type = [Struct] StructuredBindingTupleRefGet +# 1632| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1632| getExpr(): [VariableAccess] t +# 1632| Type = [Struct] StructuredBindingTupleRefGet +# 1632| ValueCategory = prvalue(load) +# 1632| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1632| Type = [LValueReferenceType] type & #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1585| getExpr(): [FunctionCall] call to get -# 1585| Type = [LValueReferenceType] type & -# 1585| ValueCategory = prvalue -# 1585| getQualifier(): [VariableAccess] (unnamed local variable) -# 1585| Type = [Struct] StructuredBindingTupleRefGet -# 1585| ValueCategory = xvalue -# 1585| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1585| Type = [LValueReferenceType] type & -# 1585| ValueCategory = prvalue -# 1585| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1585| ValueCategory = lvalue -# 1585| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d -# 1585| Type = [LValueReferenceType] type & +# 1632| getExpr(): [FunctionCall] call to get +# 1632| Type = [LValueReferenceType] type & +# 1632| ValueCategory = prvalue +# 1632| getQualifier(): [VariableAccess] (unnamed local variable) +# 1632| Type = [Struct] StructuredBindingTupleRefGet +# 1632| ValueCategory = xvalue +# 1632| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1632| Type = [LValueReferenceType] type & +# 1632| ValueCategory = prvalue +# 1632| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1632| ValueCategory = lvalue +# 1632| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d +# 1632| Type = [LValueReferenceType] type & #-----| getVariable().getInitializer(): [Initializer] initializer for d -# 1585| getExpr(): [FunctionCall] call to get -# 1585| Type = [LValueReferenceType] type & -# 1585| ValueCategory = prvalue -# 1585| getQualifier(): [VariableAccess] (unnamed local variable) -# 1585| Type = [Struct] StructuredBindingTupleRefGet -# 1585| ValueCategory = xvalue -# 1585| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1585| Type = [LValueReferenceType] type & -# 1585| ValueCategory = prvalue -# 1585| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1585| ValueCategory = lvalue -# 1585| getDeclarationEntry(3): [VariableDeclarationEntry] definition of r -# 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1632| getExpr(): [FunctionCall] call to get +# 1632| Type = [LValueReferenceType] type & +# 1632| ValueCategory = prvalue +# 1632| getQualifier(): [VariableAccess] (unnamed local variable) +# 1632| Type = [Struct] StructuredBindingTupleRefGet +# 1632| ValueCategory = xvalue +# 1632| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1632| Type = [LValueReferenceType] type & +# 1632| ValueCategory = prvalue +# 1632| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1632| ValueCategory = lvalue +# 1632| getDeclarationEntry(3): [VariableDeclarationEntry] definition of r +# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type #-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1585| getExpr(): [FunctionCall] call to get -# 1585| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1585| ValueCategory = prvalue -# 1585| getQualifier(): [VariableAccess] (unnamed local variable) -# 1585| Type = [Struct] StructuredBindingTupleRefGet -# 1585| ValueCategory = xvalue -# 1585| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1585| Type = [LValueReferenceType] int & -# 1585| ValueCategory = prvalue -# 1585| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1585| Type = [IntType] int -# 1585| ValueCategory = lvalue -# 1586| getStmt(1): [ExprStmt] ExprStmt -# 1586| getExpr(): [AssignExpr] ... = ... -# 1586| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1586| ValueCategory = lvalue -# 1586| getLValue(): [VariableAccess] d -# 1586| Type = [LValueReferenceType] type & -# 1586| ValueCategory = prvalue(load) -# 1586| getRValue(): [Literal] 4.0 -# 1586| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1586| Value = [Literal] 4.0 -# 1586| ValueCategory = prvalue -# 1586| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1586| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1586| ValueCategory = lvalue -# 1587| getStmt(2): [DeclStmt] declaration -# 1587| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1587| Type = [LValueReferenceType] double & -# 1587| getVariable().getInitializer(): [Initializer] initializer for rd -# 1587| getExpr(): [VariableAccess] d -# 1587| Type = [LValueReferenceType] type & -# 1587| ValueCategory = prvalue(load) -# 1587| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1587| Type = [LValueReferenceType] type & -# 1587| ValueCategory = prvalue -# 1587| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1587| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1587| ValueCategory = lvalue -# 1588| getStmt(3): [DeclStmt] declaration -# 1588| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1588| Type = [IntType] int -# 1588| getVariable().getInitializer(): [Initializer] initializer for v -# 1588| getExpr(): [VariableAccess] i -# 1588| Type = [LValueReferenceType] type & -# 1588| ValueCategory = prvalue(load) -# 1588| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1588| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1588| ValueCategory = prvalue(load) -# 1589| getStmt(4): [ExprStmt] ExprStmt -# 1589| getExpr(): [AssignExpr] ... = ... -# 1589| Type = [IntType] int -# 1589| ValueCategory = lvalue -# 1589| getLValue(): [VariableAccess] r -# 1589| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1589| ValueCategory = prvalue(load) -# 1589| getRValue(): [Literal] 5 -# 1589| Type = [IntType] int -# 1589| Value = [Literal] 5 -# 1589| ValueCategory = prvalue -# 1589| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1589| Type = [IntType] int -# 1589| ValueCategory = lvalue -# 1590| getStmt(5): [DeclStmt] declaration -# 1590| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1590| Type = [LValueReferenceType] int & -# 1590| getVariable().getInitializer(): [Initializer] initializer for rr -# 1590| getExpr(): [VariableAccess] r -# 1590| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1590| ValueCategory = prvalue(load) -# 1590| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1590| Type = [LValueReferenceType] int & -# 1590| ValueCategory = prvalue -# 1590| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1590| Type = [IntType] int -# 1590| ValueCategory = lvalue -# 1591| getStmt(6): [DeclStmt] declaration -# 1591| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1591| Type = [IntType] int -# 1591| getVariable().getInitializer(): [Initializer] initializer for w -# 1591| getExpr(): [VariableAccess] r -# 1591| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1591| ValueCategory = prvalue(load) -# 1591| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1591| Type = [IntType] int -# 1591| ValueCategory = prvalue(load) -# 1594| getStmt(2): [BlockStmt] { ... } -# 1595| getStmt(0): [DeclStmt] declaration -# 1595| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1595| Type = [Struct] StructuredBindingTupleRefGet -# 1595| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1595| getExpr(): [VariableAccess] t -# 1595| Type = [Struct] StructuredBindingTupleRefGet -# 1595| ValueCategory = prvalue(load) -# 1596| getStmt(1): [DeclStmt] declaration -# 1596| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1596| Type = [LValueReferenceType] type & -# 1596| getVariable().getInitializer(): [Initializer] initializer for i -# 1596| getExpr(): [FunctionCall] call to get -# 1596| Type = [LValueReferenceType] type & -# 1596| ValueCategory = prvalue -# 1596| getQualifier(): [VariableAccess] unnamed_local_variable -# 1596| Type = [Struct] StructuredBindingTupleRefGet -# 1596| ValueCategory = lvalue -# 1596| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1596| Type = [LValueReferenceType] type & -# 1596| ValueCategory = prvalue -# 1596| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1596| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1596| ValueCategory = lvalue -# 1597| getStmt(2): [DeclStmt] declaration -# 1597| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1597| Type = [LValueReferenceType] type & -# 1597| getVariable().getInitializer(): [Initializer] initializer for d -# 1597| getExpr(): [FunctionCall] call to get -# 1597| Type = [LValueReferenceType] type & -# 1597| ValueCategory = prvalue -# 1597| getQualifier(): [VariableAccess] unnamed_local_variable -# 1597| Type = [Struct] StructuredBindingTupleRefGet -# 1597| ValueCategory = lvalue -# 1597| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1597| Type = [LValueReferenceType] type & -# 1597| ValueCategory = prvalue -# 1597| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1597| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1597| ValueCategory = lvalue -# 1598| getStmt(3): [DeclStmt] declaration -# 1598| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1598| Type = [LValueReferenceType] int & -# 1598| getVariable().getInitializer(): [Initializer] initializer for r -# 1598| getExpr(): [FunctionCall] call to get -# 1598| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1598| ValueCategory = prvalue -# 1598| getQualifier(): [VariableAccess] unnamed_local_variable -# 1598| Type = [Struct] StructuredBindingTupleRefGet -# 1598| ValueCategory = lvalue -# 1598| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1598| Type = [LValueReferenceType] int & -# 1598| ValueCategory = prvalue -# 1598| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1598| Type = [IntType] int -# 1598| ValueCategory = lvalue -# 1599| getStmt(4): [ExprStmt] ExprStmt -# 1599| getExpr(): [AssignExpr] ... = ... -# 1599| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1599| ValueCategory = lvalue -# 1599| getLValue(): [VariableAccess] d -# 1599| Type = [LValueReferenceType] type & -# 1599| ValueCategory = prvalue(load) -# 1599| getRValue(): [Literal] 4.0 -# 1599| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1599| Value = [Literal] 4.0 -# 1599| ValueCategory = prvalue -# 1599| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1599| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1599| ValueCategory = lvalue -# 1600| getStmt(5): [DeclStmt] declaration -# 1600| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1600| Type = [LValueReferenceType] double & -# 1600| getVariable().getInitializer(): [Initializer] initializer for rd -# 1600| getExpr(): [VariableAccess] d -# 1600| Type = [LValueReferenceType] type & -# 1600| ValueCategory = prvalue(load) -# 1600| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1600| Type = [LValueReferenceType] type & -# 1600| ValueCategory = prvalue -# 1600| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1600| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1600| ValueCategory = lvalue -# 1601| getStmt(6): [DeclStmt] declaration -# 1601| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1601| Type = [IntType] int -# 1601| getVariable().getInitializer(): [Initializer] initializer for v -# 1601| getExpr(): [VariableAccess] i -# 1601| Type = [LValueReferenceType] type & -# 1601| ValueCategory = prvalue(load) -# 1601| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1601| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1601| ValueCategory = prvalue(load) -# 1602| getStmt(7): [ExprStmt] ExprStmt -# 1602| getExpr(): [AssignExpr] ... = ... -# 1602| Type = [IntType] int -# 1602| ValueCategory = lvalue -# 1602| getLValue(): [VariableAccess] r -# 1602| Type = [LValueReferenceType] int & -# 1602| ValueCategory = prvalue(load) -# 1602| getRValue(): [Literal] 5 -# 1602| Type = [IntType] int -# 1602| Value = [Literal] 5 -# 1602| ValueCategory = prvalue -# 1602| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1602| Type = [IntType] int -# 1602| ValueCategory = lvalue -# 1603| getStmt(8): [DeclStmt] declaration -# 1603| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1603| Type = [LValueReferenceType] int & -# 1603| getVariable().getInitializer(): [Initializer] initializer for rr -# 1603| getExpr(): [VariableAccess] r -# 1603| Type = [LValueReferenceType] int & -# 1603| ValueCategory = prvalue(load) -# 1603| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1603| Type = [LValueReferenceType] int & -# 1603| ValueCategory = prvalue -# 1603| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1603| Type = [IntType] int -# 1603| ValueCategory = lvalue -# 1604| getStmt(9): [DeclStmt] declaration -# 1604| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1604| Type = [IntType] int -# 1604| getVariable().getInitializer(): [Initializer] initializer for w -# 1604| getExpr(): [VariableAccess] r -# 1604| Type = [LValueReferenceType] int & -# 1604| ValueCategory = prvalue(load) -# 1604| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1604| Type = [IntType] int -# 1604| ValueCategory = prvalue(load) -# 1606| getStmt(3): [ReturnStmt] return ... -# 1608| [CopyAssignmentOperator] StructuredBindingTupleNoRefGet& StructuredBindingTupleNoRefGet::operator=(StructuredBindingTupleNoRefGet const&) -# 1608| <params>: +# 1632| getExpr(): [FunctionCall] call to get +# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1632| ValueCategory = prvalue +# 1632| getQualifier(): [VariableAccess] (unnamed local variable) +# 1632| Type = [Struct] StructuredBindingTupleRefGet +# 1632| ValueCategory = xvalue +# 1632| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1632| Type = [LValueReferenceType] int & +# 1632| ValueCategory = prvalue +# 1632| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1632| Type = [IntType] int +# 1632| ValueCategory = lvalue +# 1633| getStmt(1): [ExprStmt] ExprStmt +# 1633| getExpr(): [AssignExpr] ... = ... +# 1633| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1633| ValueCategory = lvalue +# 1633| getLValue(): [VariableAccess] d +# 1633| Type = [LValueReferenceType] type & +# 1633| ValueCategory = prvalue(load) +# 1633| getRValue(): [Literal] 4.0 +# 1633| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1633| Value = [Literal] 4.0 +# 1633| ValueCategory = prvalue +# 1633| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1633| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1633| ValueCategory = lvalue +# 1634| getStmt(2): [DeclStmt] declaration +# 1634| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1634| Type = [LValueReferenceType] double & +# 1634| getVariable().getInitializer(): [Initializer] initializer for rd +# 1634| getExpr(): [VariableAccess] d +# 1634| Type = [LValueReferenceType] type & +# 1634| ValueCategory = prvalue(load) +# 1634| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1634| Type = [LValueReferenceType] type & +# 1634| ValueCategory = prvalue +# 1634| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1634| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1634| ValueCategory = lvalue +# 1635| getStmt(3): [DeclStmt] declaration +# 1635| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1635| Type = [IntType] int +# 1635| getVariable().getInitializer(): [Initializer] initializer for v +# 1635| getExpr(): [VariableAccess] i +# 1635| Type = [LValueReferenceType] type & +# 1635| ValueCategory = prvalue(load) +# 1635| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1635| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1635| ValueCategory = prvalue(load) +# 1636| getStmt(4): [ExprStmt] ExprStmt +# 1636| getExpr(): [AssignExpr] ... = ... +# 1636| Type = [IntType] int +# 1636| ValueCategory = lvalue +# 1636| getLValue(): [VariableAccess] r +# 1636| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1636| ValueCategory = prvalue(load) +# 1636| getRValue(): [Literal] 5 +# 1636| Type = [IntType] int +# 1636| Value = [Literal] 5 +# 1636| ValueCategory = prvalue +# 1636| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1636| Type = [IntType] int +# 1636| ValueCategory = lvalue +# 1637| getStmt(5): [DeclStmt] declaration +# 1637| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1637| Type = [LValueReferenceType] int & +# 1637| getVariable().getInitializer(): [Initializer] initializer for rr +# 1637| getExpr(): [VariableAccess] r +# 1637| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1637| ValueCategory = prvalue(load) +# 1637| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1637| Type = [LValueReferenceType] int & +# 1637| ValueCategory = prvalue +# 1637| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1637| Type = [IntType] int +# 1637| ValueCategory = lvalue +# 1638| getStmt(6): [DeclStmt] declaration +# 1638| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1638| Type = [IntType] int +# 1638| getVariable().getInitializer(): [Initializer] initializer for w +# 1638| getExpr(): [VariableAccess] r +# 1638| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1638| ValueCategory = prvalue(load) +# 1638| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1638| Type = [IntType] int +# 1638| ValueCategory = prvalue(load) +# 1641| getStmt(2): [BlockStmt] { ... } +# 1642| getStmt(0): [DeclStmt] declaration +# 1642| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1642| Type = [Struct] StructuredBindingTupleRefGet +# 1642| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1642| getExpr(): [VariableAccess] t +# 1642| Type = [Struct] StructuredBindingTupleRefGet +# 1642| ValueCategory = prvalue(load) +# 1643| getStmt(1): [DeclStmt] declaration +# 1643| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1643| Type = [LValueReferenceType] type & +# 1643| getVariable().getInitializer(): [Initializer] initializer for i +# 1643| getExpr(): [FunctionCall] call to get +# 1643| Type = [LValueReferenceType] type & +# 1643| ValueCategory = prvalue +# 1643| getQualifier(): [VariableAccess] unnamed_local_variable +# 1643| Type = [Struct] StructuredBindingTupleRefGet +# 1643| ValueCategory = lvalue +# 1643| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1643| Type = [LValueReferenceType] type & +# 1643| ValueCategory = prvalue +# 1643| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1643| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1643| ValueCategory = lvalue +# 1644| getStmt(2): [DeclStmt] declaration +# 1644| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1644| Type = [LValueReferenceType] type & +# 1644| getVariable().getInitializer(): [Initializer] initializer for d +# 1644| getExpr(): [FunctionCall] call to get +# 1644| Type = [LValueReferenceType] type & +# 1644| ValueCategory = prvalue +# 1644| getQualifier(): [VariableAccess] unnamed_local_variable +# 1644| Type = [Struct] StructuredBindingTupleRefGet +# 1644| ValueCategory = lvalue +# 1644| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1644| Type = [LValueReferenceType] type & +# 1644| ValueCategory = prvalue +# 1644| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1644| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1644| ValueCategory = lvalue +# 1645| getStmt(3): [DeclStmt] declaration +# 1645| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1645| Type = [LValueReferenceType] int & +# 1645| getVariable().getInitializer(): [Initializer] initializer for r +# 1645| getExpr(): [FunctionCall] call to get +# 1645| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1645| ValueCategory = prvalue +# 1645| getQualifier(): [VariableAccess] unnamed_local_variable +# 1645| Type = [Struct] StructuredBindingTupleRefGet +# 1645| ValueCategory = lvalue +# 1645| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1645| Type = [LValueReferenceType] int & +# 1645| ValueCategory = prvalue +# 1645| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1645| Type = [IntType] int +# 1645| ValueCategory = lvalue +# 1646| getStmt(4): [ExprStmt] ExprStmt +# 1646| getExpr(): [AssignExpr] ... = ... +# 1646| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1646| ValueCategory = lvalue +# 1646| getLValue(): [VariableAccess] d +# 1646| Type = [LValueReferenceType] type & +# 1646| ValueCategory = prvalue(load) +# 1646| getRValue(): [Literal] 4.0 +# 1646| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1646| Value = [Literal] 4.0 +# 1646| ValueCategory = prvalue +# 1646| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1646| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1646| ValueCategory = lvalue +# 1647| getStmt(5): [DeclStmt] declaration +# 1647| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1647| Type = [LValueReferenceType] double & +# 1647| getVariable().getInitializer(): [Initializer] initializer for rd +# 1647| getExpr(): [VariableAccess] d +# 1647| Type = [LValueReferenceType] type & +# 1647| ValueCategory = prvalue(load) +# 1647| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1647| Type = [LValueReferenceType] type & +# 1647| ValueCategory = prvalue +# 1647| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1647| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1647| ValueCategory = lvalue +# 1648| getStmt(6): [DeclStmt] declaration +# 1648| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1648| Type = [IntType] int +# 1648| getVariable().getInitializer(): [Initializer] initializer for v +# 1648| getExpr(): [VariableAccess] i +# 1648| Type = [LValueReferenceType] type & +# 1648| ValueCategory = prvalue(load) +# 1648| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1648| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1648| ValueCategory = prvalue(load) +# 1649| getStmt(7): [ExprStmt] ExprStmt +# 1649| getExpr(): [AssignExpr] ... = ... +# 1649| Type = [IntType] int +# 1649| ValueCategory = lvalue +# 1649| getLValue(): [VariableAccess] r +# 1649| Type = [LValueReferenceType] int & +# 1649| ValueCategory = prvalue(load) +# 1649| getRValue(): [Literal] 5 +# 1649| Type = [IntType] int +# 1649| Value = [Literal] 5 +# 1649| ValueCategory = prvalue +# 1649| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1649| Type = [IntType] int +# 1649| ValueCategory = lvalue +# 1650| getStmt(8): [DeclStmt] declaration +# 1650| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1650| Type = [LValueReferenceType] int & +# 1650| getVariable().getInitializer(): [Initializer] initializer for rr +# 1650| getExpr(): [VariableAccess] r +# 1650| Type = [LValueReferenceType] int & +# 1650| ValueCategory = prvalue(load) +# 1650| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1650| Type = [LValueReferenceType] int & +# 1650| ValueCategory = prvalue +# 1650| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1650| Type = [IntType] int +# 1650| ValueCategory = lvalue +# 1651| getStmt(9): [DeclStmt] declaration +# 1651| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1651| Type = [IntType] int +# 1651| getVariable().getInitializer(): [Initializer] initializer for w +# 1651| getExpr(): [VariableAccess] r +# 1651| Type = [LValueReferenceType] int & +# 1651| ValueCategory = prvalue(load) +# 1651| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| Type = [IntType] int +# 1651| ValueCategory = prvalue(load) +# 1653| getStmt(3): [ReturnStmt] return ... +# 1655| [CopyAssignmentOperator] StructuredBindingTupleNoRefGet& StructuredBindingTupleNoRefGet::operator=(StructuredBindingTupleNoRefGet const&) +# 1655| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet & -# 1608| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1608| <params>: -# 1608| <initializations>: -# 1608| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1608| Type = [IntType] int -# 1608| ValueCategory = prvalue -# 1608| getInitializer(1): [ConstructorFieldInit] constructor init of field r -# 1608| Type = [LValueReferenceType] int & -# 1608| ValueCategory = prvalue -# 1608| getEntryPoint(): [BlockStmt] { ... } -# 1608| getStmt(0): [ReturnStmt] return ... -# 1608| [CopyConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet const&) -# 1608| <params>: +# 1655| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1655| <params>: +# 1655| <initializations>: +# 1655| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1655| Type = [IntType] int +# 1655| ValueCategory = prvalue +# 1655| getInitializer(1): [ConstructorFieldInit] constructor init of field r +# 1655| Type = [LValueReferenceType] int & +# 1655| ValueCategory = prvalue +# 1655| getEntryPoint(): [BlockStmt] { ... } +# 1655| getStmt(0): [ReturnStmt] return ... +# 1655| [CopyConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet const&) +# 1655| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet & -# 1608| [MoveConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet&&) -# 1608| <params>: +# 1655| [MoveConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet&&) +# 1655| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingTupleNoRefGet && -# 1613| [MemberFunction,TemplateFunction] type StructuredBindingTupleNoRefGet::get<int i>() -# 1613| <params>: -# 1617| [CopyAssignmentOperator] std::tuple_size<StructuredBindingTupleNoRefGet>& std::tuple_size<StructuredBindingTupleNoRefGet>::operator=(std::tuple_size<StructuredBindingTupleNoRefGet> const&) -# 1617| <params>: +# 1660| [MemberFunction,TemplateFunction] type StructuredBindingTupleNoRefGet::get<int i>() +# 1660| <params>: +# 1664| [CopyAssignmentOperator] std::tuple_size<StructuredBindingTupleNoRefGet>& std::tuple_size<StructuredBindingTupleNoRefGet>::operator=(std::tuple_size<StructuredBindingTupleNoRefGet> const&) +# 1664| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_size<StructuredBindingTupleNoRefGet> & -# 1617| [MoveAssignmentOperator] std::tuple_size<StructuredBindingTupleNoRefGet>& std::tuple_size<StructuredBindingTupleNoRefGet>::operator=(std::tuple_size<StructuredBindingTupleNoRefGet>&&) -# 1617| <params>: +# 1664| [MoveAssignmentOperator] std::tuple_size<StructuredBindingTupleNoRefGet>& std::tuple_size<StructuredBindingTupleNoRefGet>::operator=(std::tuple_size<StructuredBindingTupleNoRefGet>&&) +# 1664| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_size<StructuredBindingTupleNoRefGet> && -# 1622| [CopyAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>& std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleNoRefGet> const&) -# 1622| <params>: +# 1669| [CopyAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>& std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleNoRefGet> const&) +# 1669| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<0, StructuredBindingTupleNoRefGet> & -# 1622| [MoveAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>& std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleNoRefGet>&&) -# 1622| <params>: +# 1669| [MoveAssignmentOperator] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>& std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 0, StructuredBindingTupleNoRefGet>&&) +# 1669| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<0, StructuredBindingTupleNoRefGet> && -# 1626| [CopyAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>& std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleNoRefGet> const&) -# 1626| <params>: +# 1673| [CopyAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>& std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleNoRefGet> const&) +# 1673| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<1, StructuredBindingTupleNoRefGet> & -# 1626| [MoveAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>& std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleNoRefGet>&&) -# 1626| <params>: +# 1673| [MoveAssignmentOperator] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>& std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 1, StructuredBindingTupleNoRefGet>&&) +# 1673| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<1, StructuredBindingTupleNoRefGet> && -# 1630| [CopyAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>& std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleNoRefGet> const&) -# 1630| <params>: +# 1677| [CopyAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>& std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleNoRefGet> const&) +# 1677| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<2, StructuredBindingTupleNoRefGet> & -# 1630| [MoveAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>& std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleNoRefGet>&&) -# 1630| <params>: +# 1677| [MoveAssignmentOperator] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>& std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::operator=(std::tuple_element<int 2, StructuredBindingTupleNoRefGet>&&) +# 1677| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<2, StructuredBindingTupleNoRefGet> && -# 1635| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>() -# 1635| <params>: -# 1635| getEntryPoint(): [BlockStmt] { ... } -# 1636| getStmt(0): [ReturnStmt] return ... -# 1636| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i -# 1636| Type = [IntType] int -# 1636| ValueCategory = prvalue(load) -# 1636| getQualifier(): [ThisExpr] this -# 1636| Type = [PointerType] StructuredBindingTupleNoRefGet * -# 1636| ValueCategory = prvalue(load) -# 1639| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>() -# 1639| <params>: -# 1639| getEntryPoint(): [BlockStmt] { ... } -# 1640| getStmt(0): [ReturnStmt] return ... -# 1640| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r -# 1640| Type = [LValueReferenceType] int & -# 1640| ValueCategory = prvalue(load) -# 1640| getQualifier(): [ThisExpr] this -# 1640| Type = [PointerType] StructuredBindingTupleNoRefGet * -# 1640| ValueCategory = prvalue(load) -# 1640| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1640| Type = [LValueReferenceType] int & -# 1640| ValueCategory = prvalue -# 1640| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1640| Type = [IntType] int -# 1640| ValueCategory = lvalue -# 1643| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>() -# 1643| <params>: -# 1643| getEntryPoint(): [BlockStmt] { ... } -# 1644| getStmt(0): [ReturnStmt] return ... -# 1644| getExpr(): [Literal] 5 -# 1644| Type = [IntType] int -# 1644| Value = [Literal] 5 -# 1644| ValueCategory = prvalue -# 1644| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1644| Type = [LValueReferenceType] int & -# 1644| ValueCategory = prvalue -# 1644| getExpr(): [TemporaryObjectExpr] temporary object -# 1644| Type = [IntType] int -# 1644| ValueCategory = lvalue -# 1647| [TopLevelFunction] void tuple_structured_binding_no_ref_get() -# 1647| <params>: -# 1647| getEntryPoint(): [BlockStmt] { ... } -# 1648| getStmt(0): [DeclStmt] declaration -# 1648| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t -# 1648| Type = [Struct] StructuredBindingTupleNoRefGet -# 1648| getVariable().getInitializer(): [Initializer] initializer for t -# 1648| getExpr(): [ConstructorCall] call to StructuredBindingTupleNoRefGet -# 1648| Type = [VoidType] void -# 1648| ValueCategory = prvalue -# 1650| getStmt(1): [BlockStmt] { ... } -# 1651| getStmt(0): [DeclStmt] declaration -# 1651| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1651| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1651| getExpr(): [VariableAccess] t -# 1651| Type = [Struct] StructuredBindingTupleNoRefGet -# 1651| ValueCategory = lvalue -# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1651| ValueCategory = prvalue -# 1651| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1651| Type = [RValueReferenceType] type && +# 1682| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>() +# 1682| <params>: +# 1682| getEntryPoint(): [BlockStmt] { ... } +# 1683| getStmt(0): [ReturnStmt] return ... +# 1683| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i +# 1683| Type = [IntType] int +# 1683| ValueCategory = prvalue(load) +# 1683| getQualifier(): [ThisExpr] this +# 1683| Type = [PointerType] StructuredBindingTupleNoRefGet * +# 1683| ValueCategory = prvalue(load) +# 1686| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>() +# 1686| <params>: +# 1686| getEntryPoint(): [BlockStmt] { ... } +# 1687| getStmt(0): [ReturnStmt] return ... +# 1687| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r +# 1687| Type = [LValueReferenceType] int & +# 1687| ValueCategory = prvalue(load) +# 1687| getQualifier(): [ThisExpr] this +# 1687| Type = [PointerType] StructuredBindingTupleNoRefGet * +# 1687| ValueCategory = prvalue(load) +# 1687| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1687| Type = [LValueReferenceType] int & +# 1687| ValueCategory = prvalue +# 1687| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1687| Type = [IntType] int +# 1687| ValueCategory = lvalue +# 1690| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>() +# 1690| <params>: +# 1690| getEntryPoint(): [BlockStmt] { ... } +# 1691| getStmt(0): [ReturnStmt] return ... +# 1691| getExpr(): [Literal] 5 +# 1691| Type = [IntType] int +# 1691| Value = [Literal] 5 +# 1691| ValueCategory = prvalue +# 1691| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1691| Type = [LValueReferenceType] int & +# 1691| ValueCategory = prvalue +# 1691| getExpr(): [TemporaryObjectExpr] temporary object +# 1691| Type = [IntType] int +# 1691| ValueCategory = lvalue +# 1694| [TopLevelFunction] void tuple_structured_binding_no_ref_get() +# 1694| <params>: +# 1694| getEntryPoint(): [BlockStmt] { ... } +# 1695| getStmt(0): [DeclStmt] declaration +# 1695| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 1695| Type = [Struct] StructuredBindingTupleNoRefGet +# 1695| getVariable().getInitializer(): [Initializer] initializer for t +# 1695| getExpr(): [ConstructorCall] call to StructuredBindingTupleNoRefGet +# 1695| Type = [VoidType] void +# 1695| ValueCategory = prvalue +# 1697| getStmt(1): [BlockStmt] { ... } +# 1698| getStmt(0): [DeclStmt] declaration +# 1698| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1698| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1698| getExpr(): [VariableAccess] t +# 1698| Type = [Struct] StructuredBindingTupleNoRefGet +# 1698| ValueCategory = lvalue +# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1698| ValueCategory = prvalue +# 1698| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1698| Type = [RValueReferenceType] type && #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1651| getExpr(): [FunctionCall] call to get -# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1651| ValueCategory = prvalue -# 1651| getQualifier(): [VariableAccess] (unnamed local variable) -# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1651| ValueCategory = prvalue(load) -# 1651| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1651| Type = [Struct] StructuredBindingTupleNoRefGet -# 1651| ValueCategory = lvalue -# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1651| Type = [LValueReferenceType] type & -# 1651| ValueCategory = prvalue -# 1651| getExpr(): [TemporaryObjectExpr] temporary object -# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1651| ValueCategory = lvalue -# 1651| getDeclarationEntry(2): [VariableDeclarationEntry] definition of r -# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1698| getExpr(): [FunctionCall] call to get +# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1698| ValueCategory = prvalue +# 1698| getQualifier(): [VariableAccess] (unnamed local variable) +# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1698| ValueCategory = prvalue(load) +# 1698| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1698| Type = [Struct] StructuredBindingTupleNoRefGet +# 1698| ValueCategory = lvalue +# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1698| Type = [LValueReferenceType] type & +# 1698| ValueCategory = prvalue +# 1698| getExpr(): [TemporaryObjectExpr] temporary object +# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1698| ValueCategory = lvalue +# 1698| getDeclarationEntry(2): [VariableDeclarationEntry] definition of r +# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type #-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1651| getExpr(): [FunctionCall] call to get -# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1651| ValueCategory = prvalue -# 1651| getQualifier(): [VariableAccess] (unnamed local variable) -# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1651| ValueCategory = prvalue(load) -# 1651| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1651| Type = [Struct] StructuredBindingTupleNoRefGet -# 1651| ValueCategory = lvalue -# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1651| Type = [LValueReferenceType] int & -# 1651| ValueCategory = prvalue -# 1651| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1651| Type = [IntType] int -# 1651| ValueCategory = lvalue -# 1651| getDeclarationEntry(3): [VariableDeclarationEntry] definition of rv -# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1698| getExpr(): [FunctionCall] call to get +# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1698| ValueCategory = prvalue +# 1698| getQualifier(): [VariableAccess] (unnamed local variable) +# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1698| ValueCategory = prvalue(load) +# 1698| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1698| Type = [Struct] StructuredBindingTupleNoRefGet +# 1698| ValueCategory = lvalue +# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1698| Type = [LValueReferenceType] int & +# 1698| ValueCategory = prvalue +# 1698| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1698| Type = [IntType] int +# 1698| ValueCategory = lvalue +# 1698| getDeclarationEntry(3): [VariableDeclarationEntry] definition of rv +# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type #-----| getVariable().getInitializer(): [Initializer] initializer for rv -# 1651| getExpr(): [FunctionCall] call to get -# 1651| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1651| ValueCategory = prvalue -# 1651| getQualifier(): [VariableAccess] (unnamed local variable) -# 1651| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1651| ValueCategory = prvalue(load) -# 1651| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1651| Type = [Struct] StructuredBindingTupleNoRefGet -# 1651| ValueCategory = lvalue -# 1651| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1651| Type = [LValueReferenceType] int & -# 1651| ValueCategory = prvalue -# 1651| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1651| Type = [IntType] int -# 1651| ValueCategory = xvalue -# 1652| getStmt(1): [ExprStmt] ExprStmt -# 1652| getExpr(): [AssignExpr] ... = ... -# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1652| ValueCategory = lvalue -# 1652| getLValue(): [VariableAccess] i -# 1652| Type = [RValueReferenceType] type && -# 1652| ValueCategory = prvalue(load) -# 1652| getRValue(): [Literal] 4 -# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1652| Value = [Literal] 4 -# 1652| ValueCategory = prvalue -# 1652| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1652| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1652| ValueCategory = lvalue -# 1653| getStmt(2): [DeclStmt] declaration -# 1653| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri -# 1653| Type = [LValueReferenceType] int & -# 1653| getVariable().getInitializer(): [Initializer] initializer for ri -# 1653| getExpr(): [VariableAccess] i -# 1653| Type = [RValueReferenceType] type && -# 1653| ValueCategory = prvalue(load) -# 1653| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1653| Type = [LValueReferenceType] type & -# 1653| ValueCategory = prvalue -# 1653| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1653| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1653| ValueCategory = lvalue -# 1654| getStmt(3): [DeclStmt] declaration -# 1654| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1654| Type = [IntType] int -# 1654| getVariable().getInitializer(): [Initializer] initializer for v -# 1654| getExpr(): [VariableAccess] i -# 1654| Type = [RValueReferenceType] type && -# 1654| ValueCategory = prvalue(load) -# 1654| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1654| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1654| ValueCategory = prvalue(load) -# 1655| getStmt(4): [ExprStmt] ExprStmt -# 1655| getExpr(): [AssignExpr] ... = ... -# 1655| Type = [IntType] int -# 1655| ValueCategory = lvalue -# 1655| getLValue(): [VariableAccess] r -# 1655| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1655| ValueCategory = prvalue(load) -# 1655| getRValue(): [Literal] 5 -# 1655| Type = [IntType] int -# 1655| Value = [Literal] 5 -# 1655| ValueCategory = prvalue -# 1655| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1655| Type = [IntType] int -# 1655| ValueCategory = lvalue -# 1656| getStmt(5): [DeclStmt] declaration -# 1656| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1656| Type = [LValueReferenceType] int & -# 1656| getVariable().getInitializer(): [Initializer] initializer for rr -# 1656| getExpr(): [VariableAccess] r -# 1656| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1656| ValueCategory = prvalue(load) -# 1656| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1656| Type = [LValueReferenceType] int & -# 1656| ValueCategory = prvalue -# 1656| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1656| Type = [IntType] int -# 1656| ValueCategory = lvalue -# 1657| getStmt(6): [DeclStmt] declaration -# 1657| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1657| Type = [IntType] int -# 1657| getVariable().getInitializer(): [Initializer] initializer for w -# 1657| getExpr(): [VariableAccess] r -# 1657| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1657| ValueCategory = prvalue(load) -# 1657| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1657| Type = [IntType] int -# 1657| ValueCategory = prvalue(load) -# 1660| getStmt(2): [BlockStmt] { ... } -# 1661| getStmt(0): [DeclStmt] declaration -# 1661| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1661| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1661| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1661| getExpr(): [VariableAccess] t -# 1661| Type = [Struct] StructuredBindingTupleNoRefGet -# 1661| ValueCategory = lvalue -# 1661| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1661| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1661| ValueCategory = prvalue -# 1662| getStmt(1): [DeclStmt] declaration -# 1662| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1662| Type = [RValueReferenceType] type && -# 1662| getVariable().getInitializer(): [Initializer] initializer for i -# 1662| getExpr(): [FunctionCall] call to get -# 1662| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1662| ValueCategory = prvalue -# 1662| getQualifier(): [VariableAccess] unnamed_local_variable -# 1662| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1662| ValueCategory = prvalue(load) -# 1662| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1662| Type = [Struct] StructuredBindingTupleNoRefGet -# 1662| ValueCategory = lvalue -# 1662| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1662| Type = [LValueReferenceType] type & -# 1662| ValueCategory = prvalue -# 1662| getExpr(): [TemporaryObjectExpr] temporary object -# 1662| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1662| ValueCategory = lvalue -# 1663| getStmt(2): [DeclStmt] declaration -# 1663| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1663| Type = [LValueReferenceType] int & -# 1663| getVariable().getInitializer(): [Initializer] initializer for r -# 1663| getExpr(): [FunctionCall] call to get -# 1663| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1663| ValueCategory = prvalue -# 1663| getQualifier(): [VariableAccess] unnamed_local_variable -# 1663| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1663| ValueCategory = prvalue(load) -# 1663| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1663| Type = [Struct] StructuredBindingTupleNoRefGet -# 1663| ValueCategory = lvalue -# 1663| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1663| Type = [LValueReferenceType] int & -# 1663| ValueCategory = prvalue -# 1663| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1663| Type = [IntType] int -# 1663| ValueCategory = lvalue -# 1664| getStmt(3): [DeclStmt] declaration -# 1664| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rv -# 1664| Type = [RValueReferenceType] int && -# 1664| getVariable().getInitializer(): [Initializer] initializer for rv -# 1664| getExpr(): [FunctionCall] call to get -# 1664| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1664| ValueCategory = prvalue -# 1664| getQualifier(): [VariableAccess] unnamed_local_variable -# 1664| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1664| ValueCategory = prvalue(load) -# 1664| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1664| Type = [Struct] StructuredBindingTupleNoRefGet -# 1664| ValueCategory = lvalue -# 1664| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1664| Type = [LValueReferenceType] int & -# 1664| ValueCategory = prvalue -# 1664| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1664| Type = [IntType] int -# 1664| ValueCategory = xvalue -# 1665| getStmt(4): [ExprStmt] ExprStmt -# 1665| getExpr(): [AssignExpr] ... = ... -# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1665| ValueCategory = lvalue -# 1665| getLValue(): [VariableAccess] i -# 1665| Type = [RValueReferenceType] type && -# 1665| ValueCategory = prvalue(load) -# 1665| getRValue(): [Literal] 4 -# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1665| Value = [Literal] 4 -# 1665| ValueCategory = prvalue -# 1665| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1665| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1665| ValueCategory = lvalue -# 1666| getStmt(5): [DeclStmt] declaration -# 1666| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri -# 1666| Type = [LValueReferenceType] int & -# 1666| getVariable().getInitializer(): [Initializer] initializer for ri -# 1666| getExpr(): [VariableAccess] i -# 1666| Type = [RValueReferenceType] type && -# 1666| ValueCategory = prvalue(load) -# 1666| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1666| Type = [LValueReferenceType] type & -# 1666| ValueCategory = prvalue -# 1666| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1666| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1666| ValueCategory = lvalue -# 1667| getStmt(6): [DeclStmt] declaration -# 1667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1667| Type = [IntType] int -# 1667| getVariable().getInitializer(): [Initializer] initializer for v -# 1667| getExpr(): [VariableAccess] i -# 1667| Type = [RValueReferenceType] type && -# 1667| ValueCategory = prvalue(load) -# 1667| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1667| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1667| ValueCategory = prvalue(load) -# 1668| getStmt(7): [ExprStmt] ExprStmt -# 1668| getExpr(): [AssignExpr] ... = ... -# 1668| Type = [IntType] int -# 1668| ValueCategory = lvalue -# 1668| getLValue(): [VariableAccess] r -# 1668| Type = [LValueReferenceType] int & -# 1668| ValueCategory = prvalue(load) -# 1668| getRValue(): [Literal] 5 -# 1668| Type = [IntType] int -# 1668| Value = [Literal] 5 -# 1668| ValueCategory = prvalue -# 1668| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1668| Type = [IntType] int -# 1668| ValueCategory = lvalue -# 1669| getStmt(8): [DeclStmt] declaration -# 1669| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1669| Type = [LValueReferenceType] int & -# 1669| getVariable().getInitializer(): [Initializer] initializer for rr -# 1669| getExpr(): [VariableAccess] r -# 1669| Type = [LValueReferenceType] int & -# 1669| ValueCategory = prvalue(load) -# 1669| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1669| Type = [LValueReferenceType] int & -# 1669| ValueCategory = prvalue -# 1669| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1669| Type = [IntType] int -# 1669| ValueCategory = lvalue -# 1670| getStmt(9): [DeclStmt] declaration -# 1670| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1670| Type = [IntType] int -# 1670| getVariable().getInitializer(): [Initializer] initializer for w -# 1670| getExpr(): [VariableAccess] r -# 1670| Type = [LValueReferenceType] int & -# 1670| ValueCategory = prvalue(load) -# 1670| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1670| Type = [IntType] int -# 1670| ValueCategory = prvalue(load) -# 1672| getStmt(3): [ReturnStmt] return ... -# 1674| [TopLevelFunction] void array_structured_binding_non_ref_init() -# 1674| <params>: -# 1674| getEntryPoint(): [BlockStmt] { ... } -# 1675| getStmt(0): [DeclStmt] declaration -# 1675| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs -# 1675| Type = [ArrayType] int[2] -# 1675| getVariable().getInitializer(): [Initializer] initializer for xs -# 1675| getExpr(): [ArrayAggregateLiteral] {...} -# 1675| Type = [ArrayType] int[2] -# 1675| ValueCategory = prvalue -# 1675| getAnElementExpr(0): [Literal] 1 -# 1675| Type = [IntType] int -# 1675| Value = [Literal] 1 -# 1675| ValueCategory = prvalue -# 1675| getAnElementExpr(1): [Literal] 2 -# 1675| Type = [IntType] int -# 1675| Value = [Literal] 2 -# 1675| ValueCategory = prvalue -# 1676| getStmt(1): [DeclStmt] declaration -# 1676| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1676| Type = [ArrayType] int[2] -# 1676| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1676| getExpr(): [VariableAccess] xs -# 1676| Type = [ArrayType] int[2] -# 1676| ValueCategory = prvalue(load) -# 1676| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 -# 1676| Type = [IntType] int +# 1698| getExpr(): [FunctionCall] call to get +# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1698| ValueCategory = prvalue +# 1698| getQualifier(): [VariableAccess] (unnamed local variable) +# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1698| ValueCategory = prvalue(load) +# 1698| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1698| Type = [Struct] StructuredBindingTupleNoRefGet +# 1698| ValueCategory = lvalue +# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1698| Type = [LValueReferenceType] int & +# 1698| ValueCategory = prvalue +# 1698| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1698| Type = [IntType] int +# 1698| ValueCategory = xvalue +# 1699| getStmt(1): [ExprStmt] ExprStmt +# 1699| getExpr(): [AssignExpr] ... = ... +# 1699| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1699| ValueCategory = lvalue +# 1699| getLValue(): [VariableAccess] i +# 1699| Type = [RValueReferenceType] type && +# 1699| ValueCategory = prvalue(load) +# 1699| getRValue(): [Literal] 4 +# 1699| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1699| Value = [Literal] 4 +# 1699| ValueCategory = prvalue +# 1699| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1699| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1699| ValueCategory = lvalue +# 1700| getStmt(2): [DeclStmt] declaration +# 1700| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri +# 1700| Type = [LValueReferenceType] int & +# 1700| getVariable().getInitializer(): [Initializer] initializer for ri +# 1700| getExpr(): [VariableAccess] i +# 1700| Type = [RValueReferenceType] type && +# 1700| ValueCategory = prvalue(load) +# 1700| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1700| Type = [LValueReferenceType] type & +# 1700| ValueCategory = prvalue +# 1700| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1700| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1700| ValueCategory = lvalue +# 1701| getStmt(3): [DeclStmt] declaration +# 1701| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1701| Type = [IntType] int +# 1701| getVariable().getInitializer(): [Initializer] initializer for v +# 1701| getExpr(): [VariableAccess] i +# 1701| Type = [RValueReferenceType] type && +# 1701| ValueCategory = prvalue(load) +# 1701| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1701| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1701| ValueCategory = prvalue(load) +# 1702| getStmt(4): [ExprStmt] ExprStmt +# 1702| getExpr(): [AssignExpr] ... = ... +# 1702| Type = [IntType] int +# 1702| ValueCategory = lvalue +# 1702| getLValue(): [VariableAccess] r +# 1702| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1702| ValueCategory = prvalue(load) +# 1702| getRValue(): [Literal] 5 +# 1702| Type = [IntType] int +# 1702| Value = [Literal] 5 +# 1702| ValueCategory = prvalue +# 1702| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1702| Type = [IntType] int +# 1702| ValueCategory = lvalue +# 1703| getStmt(5): [DeclStmt] declaration +# 1703| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1703| Type = [LValueReferenceType] int & +# 1703| getVariable().getInitializer(): [Initializer] initializer for rr +# 1703| getExpr(): [VariableAccess] r +# 1703| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1703| ValueCategory = prvalue(load) +# 1703| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1703| Type = [LValueReferenceType] int & +# 1703| ValueCategory = prvalue +# 1703| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1703| Type = [IntType] int +# 1703| ValueCategory = lvalue +# 1704| getStmt(6): [DeclStmt] declaration +# 1704| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1704| Type = [IntType] int +# 1704| getVariable().getInitializer(): [Initializer] initializer for w +# 1704| getExpr(): [VariableAccess] r +# 1704| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1704| ValueCategory = prvalue(load) +# 1704| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1704| Type = [IntType] int +# 1704| ValueCategory = prvalue(load) +# 1707| getStmt(2): [BlockStmt] { ... } +# 1708| getStmt(0): [DeclStmt] declaration +# 1708| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1708| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1708| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1708| getExpr(): [VariableAccess] t +# 1708| Type = [Struct] StructuredBindingTupleNoRefGet +# 1708| ValueCategory = lvalue +# 1708| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1708| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1708| ValueCategory = prvalue +# 1709| getStmt(1): [DeclStmt] declaration +# 1709| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1709| Type = [RValueReferenceType] type && +# 1709| getVariable().getInitializer(): [Initializer] initializer for i +# 1709| getExpr(): [FunctionCall] call to get +# 1709| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1709| ValueCategory = prvalue +# 1709| getQualifier(): [VariableAccess] unnamed_local_variable +# 1709| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1709| ValueCategory = prvalue(load) +# 1709| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1709| Type = [Struct] StructuredBindingTupleNoRefGet +# 1709| ValueCategory = lvalue +# 1709| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1709| Type = [LValueReferenceType] type & +# 1709| ValueCategory = prvalue +# 1709| getExpr(): [TemporaryObjectExpr] temporary object +# 1709| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1709| ValueCategory = lvalue +# 1710| getStmt(2): [DeclStmt] declaration +# 1710| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1710| Type = [LValueReferenceType] int & +# 1710| getVariable().getInitializer(): [Initializer] initializer for r +# 1710| getExpr(): [FunctionCall] call to get +# 1710| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1710| ValueCategory = prvalue +# 1710| getQualifier(): [VariableAccess] unnamed_local_variable +# 1710| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1710| ValueCategory = prvalue(load) +# 1710| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1710| Type = [Struct] StructuredBindingTupleNoRefGet +# 1710| ValueCategory = lvalue +# 1710| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1710| Type = [LValueReferenceType] int & +# 1710| ValueCategory = prvalue +# 1710| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1710| Type = [IntType] int +# 1710| ValueCategory = lvalue +# 1711| getStmt(3): [DeclStmt] declaration +# 1711| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rv +# 1711| Type = [RValueReferenceType] int && +# 1711| getVariable().getInitializer(): [Initializer] initializer for rv +# 1711| getExpr(): [FunctionCall] call to get +# 1711| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1711| ValueCategory = prvalue +# 1711| getQualifier(): [VariableAccess] unnamed_local_variable +# 1711| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1711| ValueCategory = prvalue(load) +# 1711| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1711| Type = [Struct] StructuredBindingTupleNoRefGet +# 1711| ValueCategory = lvalue +# 1711| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1711| Type = [LValueReferenceType] int & +# 1711| ValueCategory = prvalue +# 1711| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1711| Type = [IntType] int +# 1711| ValueCategory = xvalue +# 1712| getStmt(4): [ExprStmt] ExprStmt +# 1712| getExpr(): [AssignExpr] ... = ... +# 1712| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1712| ValueCategory = lvalue +# 1712| getLValue(): [VariableAccess] i +# 1712| Type = [RValueReferenceType] type && +# 1712| ValueCategory = prvalue(load) +# 1712| getRValue(): [Literal] 4 +# 1712| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1712| Value = [Literal] 4 +# 1712| ValueCategory = prvalue +# 1712| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1712| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1712| ValueCategory = lvalue +# 1713| getStmt(5): [DeclStmt] declaration +# 1713| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri +# 1713| Type = [LValueReferenceType] int & +# 1713| getVariable().getInitializer(): [Initializer] initializer for ri +# 1713| getExpr(): [VariableAccess] i +# 1713| Type = [RValueReferenceType] type && +# 1713| ValueCategory = prvalue(load) +# 1713| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1713| Type = [LValueReferenceType] type & +# 1713| ValueCategory = prvalue +# 1713| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1713| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1713| ValueCategory = lvalue +# 1714| getStmt(6): [DeclStmt] declaration +# 1714| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1714| Type = [IntType] int +# 1714| getVariable().getInitializer(): [Initializer] initializer for v +# 1714| getExpr(): [VariableAccess] i +# 1714| Type = [RValueReferenceType] type && +# 1714| ValueCategory = prvalue(load) +# 1714| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1714| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1714| ValueCategory = prvalue(load) +# 1715| getStmt(7): [ExprStmt] ExprStmt +# 1715| getExpr(): [AssignExpr] ... = ... +# 1715| Type = [IntType] int +# 1715| ValueCategory = lvalue +# 1715| getLValue(): [VariableAccess] r +# 1715| Type = [LValueReferenceType] int & +# 1715| ValueCategory = prvalue(load) +# 1715| getRValue(): [Literal] 5 +# 1715| Type = [IntType] int +# 1715| Value = [Literal] 5 +# 1715| ValueCategory = prvalue +# 1715| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1715| Type = [IntType] int +# 1715| ValueCategory = lvalue +# 1716| getStmt(8): [DeclStmt] declaration +# 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1716| Type = [LValueReferenceType] int & +# 1716| getVariable().getInitializer(): [Initializer] initializer for rr +# 1716| getExpr(): [VariableAccess] r +# 1716| Type = [LValueReferenceType] int & +# 1716| ValueCategory = prvalue(load) +# 1716| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1716| Type = [LValueReferenceType] int & +# 1716| ValueCategory = prvalue +# 1716| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1716| Type = [IntType] int +# 1716| ValueCategory = lvalue +# 1717| getStmt(9): [DeclStmt] declaration +# 1717| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1717| Type = [IntType] int +# 1717| getVariable().getInitializer(): [Initializer] initializer for w +# 1717| getExpr(): [VariableAccess] r +# 1717| Type = [LValueReferenceType] int & +# 1717| ValueCategory = prvalue(load) +# 1717| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1717| Type = [IntType] int +# 1717| ValueCategory = prvalue(load) +# 1719| getStmt(3): [ReturnStmt] return ... +# 1721| [TopLevelFunction] void array_structured_binding_non_ref_init() +# 1721| <params>: +# 1721| getEntryPoint(): [BlockStmt] { ... } +# 1722| getStmt(0): [DeclStmt] declaration +# 1722| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs +# 1722| Type = [ArrayType] int[2] +# 1722| getVariable().getInitializer(): [Initializer] initializer for xs +# 1722| getExpr(): [ArrayAggregateLiteral] {...} +# 1722| Type = [ArrayType] int[2] +# 1722| ValueCategory = prvalue +# 1722| getAnElementExpr(0): [Literal] 1 +# 1722| Type = [IntType] int +# 1722| Value = [Literal] 1 +# 1722| ValueCategory = prvalue +# 1722| getAnElementExpr(1): [Literal] 2 +# 1722| Type = [IntType] int +# 1722| Value = [Literal] 2 +# 1722| ValueCategory = prvalue +# 1723| getStmt(1): [DeclStmt] declaration +# 1723| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1723| Type = [ArrayType] int[2] +# 1723| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1723| getExpr(): [VariableAccess] xs +# 1723| Type = [ArrayType] int[2] +# 1723| ValueCategory = prvalue(load) +# 1723| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 +# 1723| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x0 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -13721,8 +13839,8 @@ ir.cpp: #-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion #-----| Type = [IntPointerType] int * #-----| ValueCategory = prvalue -# 1676| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 -# 1676| Type = [IntType] int +# 1723| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 +# 1723| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x1 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -13737,351 +13855,351 @@ ir.cpp: #-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion #-----| Type = [IntPointerType] int * #-----| ValueCategory = prvalue -# 1677| getStmt(2): [ReturnStmt] return ... -# 1679| [CopyAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj const&) -# 1679| <params>: +# 1724| getStmt(2): [ReturnStmt] return ... +# 1726| [CopyAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj const&) +# 1726| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1679| [MoveAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj&&) -# 1679| <params>: +# 1726| [MoveAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj&&) +# 1726| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CapturedLambdaMyObj && -# 1679| [CopyConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj const&) -# 1679| <params>: +# 1726| [CopyConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj const&) +# 1726| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1679| [MoveConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj&&) -# 1679| <params>: +# 1726| [MoveConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj&&) +# 1726| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CapturedLambdaMyObj && -# 1682| [Constructor] void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1682| <params>: -# 1682| <initializations>: -# 1682| getEntryPoint(): [BlockStmt] { ... } -# 1682| getStmt(0): [ReturnStmt] return ... -# 1685| [TopLevelFunction] void captured_lambda(int, int&, int&&) -# 1685| <params>: -# 1685| getParameter(0): [Parameter] x -# 1685| Type = [IntType] int -# 1685| getParameter(1): [Parameter] y -# 1685| Type = [LValueReferenceType] int & -# 1685| getParameter(2): [Parameter] z -# 1685| Type = [RValueReferenceType] int && -# 1686| getEntryPoint(): [BlockStmt] { ... } -# 1687| getStmt(0): [DeclStmt] declaration -# 1687| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj1 -# 1687| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1687| getVariable().getInitializer(): [Initializer] initializer for obj1 -# 1687| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj -# 1687| Type = [VoidType] void -# 1687| ValueCategory = prvalue -# 1687| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1687| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1687| ValueCategory = prvalue -# 1687| getExpr(): [CStyleCast] (const CapturedLambdaMyObj)... -# 1687| Conversion = [GlvalueConversion] glvalue conversion -# 1687| Type = [SpecifiedType] const CapturedLambdaMyObj -# 1687| ValueCategory = lvalue -# 1687| getExpr(): [TemporaryObjectExpr] temporary object -# 1687| Type = [Class] CapturedLambdaMyObj -# 1687| ValueCategory = lvalue -# 1688| getStmt(1): [DeclStmt] declaration -# 1688| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj2 -# 1688| Type = [Class] CapturedLambdaMyObj -# 1688| getVariable().getInitializer(): [Initializer] initializer for obj2 -# 1688| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj -# 1688| Type = [VoidType] void -# 1688| ValueCategory = prvalue -# 1690| getStmt(2): [DeclStmt] declaration -# 1690| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_outer -# 1690| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1690| getVariable().getInitializer(): [Initializer] initializer for lambda_outer -# 1690| getExpr(): [LambdaExpression] [...](...){...} -# 1690| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1690| ValueCategory = prvalue -# 1690| getInitializer(): [ClassAggregateLiteral] {...} -# 1690| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1690| ValueCategory = prvalue -# 1690| getAFieldExpr(obj1): [VariableAccess] obj1 -# 1690| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1690| ValueCategory = prvalue(load) -# 1690| getAFieldExpr(obj2): [VariableAccess] obj2 -# 1690| Type = [Class] CapturedLambdaMyObj -# 1690| ValueCategory = prvalue(load) -# 1690| getAFieldExpr(x): [VariableAccess] x -# 1690| Type = [IntType] int -# 1690| ValueCategory = prvalue(load) -# 1690| getAFieldExpr(y): [VariableAccess] y -# 1690| Type = [LValueReferenceType] int & -# 1690| ValueCategory = prvalue(load) -# 1690| getAFieldExpr(z): [VariableAccess] z -# 1690| Type = [RValueReferenceType] int && -# 1690| ValueCategory = prvalue(load) +# 1729| [Constructor] void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1729| <params>: +# 1729| <initializations>: +# 1729| getEntryPoint(): [BlockStmt] { ... } +# 1729| getStmt(0): [ReturnStmt] return ... +# 1732| [TopLevelFunction] void captured_lambda(int, int&, int&&) +# 1732| <params>: +# 1732| getParameter(0): [Parameter] x +# 1732| Type = [IntType] int +# 1732| getParameter(1): [Parameter] y +# 1732| Type = [LValueReferenceType] int & +# 1732| getParameter(2): [Parameter] z +# 1732| Type = [RValueReferenceType] int && +# 1733| getEntryPoint(): [BlockStmt] { ... } +# 1734| getStmt(0): [DeclStmt] declaration +# 1734| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj1 +# 1734| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1734| getVariable().getInitializer(): [Initializer] initializer for obj1 +# 1734| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj +# 1734| Type = [VoidType] void +# 1734| ValueCategory = prvalue +# 1734| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1734| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1734| ValueCategory = prvalue +# 1734| getExpr(): [CStyleCast] (const CapturedLambdaMyObj)... +# 1734| Conversion = [GlvalueConversion] glvalue conversion +# 1734| Type = [SpecifiedType] const CapturedLambdaMyObj +# 1734| ValueCategory = lvalue +# 1734| getExpr(): [TemporaryObjectExpr] temporary object +# 1734| Type = [Class] CapturedLambdaMyObj +# 1734| ValueCategory = lvalue +# 1735| getStmt(1): [DeclStmt] declaration +# 1735| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj2 +# 1735| Type = [Class] CapturedLambdaMyObj +# 1735| getVariable().getInitializer(): [Initializer] initializer for obj2 +# 1735| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj +# 1735| Type = [VoidType] void +# 1735| ValueCategory = prvalue +# 1737| getStmt(2): [DeclStmt] declaration +# 1737| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_outer +# 1737| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1737| getVariable().getInitializer(): [Initializer] initializer for lambda_outer +# 1737| getExpr(): [LambdaExpression] [...](...){...} +# 1737| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1737| ValueCategory = prvalue +# 1737| getInitializer(): [ClassAggregateLiteral] {...} +# 1737| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1737| ValueCategory = prvalue +# 1737| getAFieldExpr(obj1): [VariableAccess] obj1 +# 1737| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1737| ValueCategory = prvalue(load) +# 1737| getAFieldExpr(obj2): [VariableAccess] obj2 +# 1737| Type = [Class] CapturedLambdaMyObj +# 1737| ValueCategory = prvalue(load) +# 1737| getAFieldExpr(x): [VariableAccess] x +# 1737| Type = [IntType] int +# 1737| ValueCategory = prvalue(load) +# 1737| getAFieldExpr(y): [VariableAccess] y +# 1737| Type = [LValueReferenceType] int & +# 1737| ValueCategory = prvalue(load) +# 1737| getAFieldExpr(z): [VariableAccess] z +# 1737| Type = [RValueReferenceType] int && +# 1737| ValueCategory = prvalue(load) #-----| getAFieldExpr(obj1).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const CapturedLambdaMyObj #-----| ValueCategory = prvalue(load) -# 1692| getAFieldExpr(y).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1692| Type = [IntType] int -# 1692| ValueCategory = prvalue(load) -# 1692| getAFieldExpr(z).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1692| Type = [IntType] int -# 1692| ValueCategory = prvalue(load) -# 1693| getStmt(3): [ReturnStmt] return ... -# 1690| [CopyAssignmentOperator] (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)& (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator=((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25) const&) -# 1690| <params>: +# 1739| getAFieldExpr(y).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1739| Type = [IntType] int +# 1739| ValueCategory = prvalue(load) +# 1739| getAFieldExpr(z).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1739| Type = [IntType] int +# 1739| ValueCategory = prvalue(load) +# 1740| getStmt(3): [ReturnStmt] return ... +# 1737| [CopyAssignmentOperator] (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)& (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator=((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25) const&) +# 1737| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1690, col. 25 & -# 1690| [CopyConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25) const&) -# 1690| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1737, col. 25 & +# 1737| [CopyConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25) const&) +# 1737| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1690, col. 25 & -# 1690| [MoveConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)&&) -# 1690| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1737, col. 25 & +# 1737| [MoveConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)&&) +# 1737| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1690, col. 25 && -# 1690| [Constructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::(unnamed constructor)() -# 1690| <params>: -# 1690| [ConstMemberFunction] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const -# 1690| <params>: -# 1690| getEntryPoint(): [BlockStmt] { ... } -# 1691| getStmt(0): [DeclStmt] declaration -# 1691| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_inner -# 1691| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1691| getVariable().getInitializer(): [Initializer] initializer for lambda_inner -# 1691| getExpr(): [LambdaExpression] [...](...){...} -# 1691| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1691| ValueCategory = prvalue -# 1691| getInitializer(): [ClassAggregateLiteral] {...} -# 1691| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1691| ValueCategory = prvalue -# 1691| getAFieldExpr(obj1): [PointerFieldAccess] obj1 -# 1691| Type = [SpecifiedType] const CapturedLambdaMyObj -# 1691| ValueCategory = prvalue(load) -# 1691| getQualifier(): [ThisExpr] this -# 1691| Type = [PointerType] lambda [] type at line 1691, col. 29 * -# 1691| ValueCategory = prvalue(load) -# 1691| getAFieldExpr(obj2): [PointerFieldAccess] obj2 -# 1691| Type = [Class] CapturedLambdaMyObj -# 1691| ValueCategory = prvalue(load) -# 1691| getQualifier(): [ThisExpr] this -# 1691| Type = [PointerType] lambda [] type at line 1691, col. 29 * -# 1691| ValueCategory = prvalue(load) -# 1691| getAFieldExpr(x): [PointerFieldAccess] x -# 1691| Type = [IntType] int -# 1691| ValueCategory = prvalue(load) -# 1691| getQualifier(): [ThisExpr] this -# 1691| Type = [PointerType] const lambda [] type at line 1690, col. 25 * -# 1691| ValueCategory = prvalue(load) -# 1691| getAFieldExpr(y): [PointerFieldAccess] y -# 1691| Type = [IntType] int -# 1691| ValueCategory = prvalue(load) -# 1691| getQualifier(): [ThisExpr] this -# 1691| Type = [PointerType] const lambda [] type at line 1690, col. 25 * -# 1691| ValueCategory = prvalue(load) -# 1691| getAFieldExpr(z): [PointerFieldAccess] z -# 1691| Type = [IntType] int -# 1691| ValueCategory = prvalue(load) -# 1691| getQualifier(): [ThisExpr] this -# 1691| Type = [PointerType] const lambda [] type at line 1690, col. 25 * -# 1691| ValueCategory = prvalue(load) -# 1692| getStmt(1): [ReturnStmt] return ... -# 1691| [CopyAssignmentOperator] (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)& (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator=((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29) const&) -# 1691| <params>: +#-----| Type = [RValueReferenceType] lambda [] type at line 1737, col. 25 && +# 1737| [Constructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::(unnamed constructor)() +# 1737| <params>: +# 1737| [ConstMemberFunction] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const +# 1737| <params>: +# 1737| getEntryPoint(): [BlockStmt] { ... } +# 1738| getStmt(0): [DeclStmt] declaration +# 1738| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_inner +# 1738| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1738| getVariable().getInitializer(): [Initializer] initializer for lambda_inner +# 1738| getExpr(): [LambdaExpression] [...](...){...} +# 1738| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1738| ValueCategory = prvalue +# 1738| getInitializer(): [ClassAggregateLiteral] {...} +# 1738| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1738| ValueCategory = prvalue +# 1738| getAFieldExpr(obj1): [PointerFieldAccess] obj1 +# 1738| Type = [SpecifiedType] const CapturedLambdaMyObj +# 1738| ValueCategory = prvalue(load) +# 1738| getQualifier(): [ThisExpr] this +# 1738| Type = [PointerType] lambda [] type at line 1738, col. 29 * +# 1738| ValueCategory = prvalue(load) +# 1738| getAFieldExpr(obj2): [PointerFieldAccess] obj2 +# 1738| Type = [Class] CapturedLambdaMyObj +# 1738| ValueCategory = prvalue(load) +# 1738| getQualifier(): [ThisExpr] this +# 1738| Type = [PointerType] lambda [] type at line 1738, col. 29 * +# 1738| ValueCategory = prvalue(load) +# 1738| getAFieldExpr(x): [PointerFieldAccess] x +# 1738| Type = [IntType] int +# 1738| ValueCategory = prvalue(load) +# 1738| getQualifier(): [ThisExpr] this +# 1738| Type = [PointerType] const lambda [] type at line 1737, col. 25 * +# 1738| ValueCategory = prvalue(load) +# 1738| getAFieldExpr(y): [PointerFieldAccess] y +# 1738| Type = [IntType] int +# 1738| ValueCategory = prvalue(load) +# 1738| getQualifier(): [ThisExpr] this +# 1738| Type = [PointerType] const lambda [] type at line 1737, col. 25 * +# 1738| ValueCategory = prvalue(load) +# 1738| getAFieldExpr(z): [PointerFieldAccess] z +# 1738| Type = [IntType] int +# 1738| ValueCategory = prvalue(load) +# 1738| getQualifier(): [ThisExpr] this +# 1738| Type = [PointerType] const lambda [] type at line 1737, col. 25 * +# 1738| ValueCategory = prvalue(load) +# 1739| getStmt(1): [ReturnStmt] return ... +# 1738| [CopyAssignmentOperator] (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)& (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator=((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29) const&) +# 1738| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1691, col. 29 & -# 1691| [CopyConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29) const&) -# 1691| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1738, col. 29 & +# 1738| [CopyConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29) const&) +# 1738| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1691, col. 29 & -# 1691| [MoveConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)&&) -# 1691| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1738, col. 29 & +# 1738| [MoveConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)&&) +# 1738| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1691, col. 29 && -# 1691| [Constructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::(unnamed constructor)() -# 1691| <params>: -# 1691| [ConstMemberFunction] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator()() const -# 1691| <params>: -# 1691| getEntryPoint(): [BlockStmt] { ... } -# 1691| getStmt(0): [EmptyStmt] ; -# 1691| getStmt(1): [ReturnStmt] return ... -# 1695| [TopLevelFunction] int goto_on_same_line() -# 1695| <params>: -# 1695| getEntryPoint(): [BlockStmt] { ... } -# 1696| getStmt(0): [DeclStmt] declaration -# 1696| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1696| Type = [IntType] int -# 1696| getVariable().getInitializer(): [Initializer] initializer for x -# 1696| getExpr(): [Literal] 42 -# 1696| Type = [IntType] int -# 1696| Value = [Literal] 42 -# 1696| ValueCategory = prvalue -# 1697| getStmt(1): [GotoStmt] goto ... -# 1697| getStmt(2): [LabelStmt] label ...: -# 1698| getStmt(3): [ReturnStmt] return ... -# 1698| getExpr(): [VariableAccess] x -# 1698| Type = [IntType] int -# 1698| ValueCategory = prvalue(load) -# 1701| [CopyAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass const&) -# 1701| <params>: +#-----| Type = [RValueReferenceType] lambda [] type at line 1738, col. 29 && +# 1738| [Constructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::(unnamed constructor)() +# 1738| <params>: +# 1738| [ConstMemberFunction] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator()() const +# 1738| <params>: +# 1738| getEntryPoint(): [BlockStmt] { ... } +# 1738| getStmt(0): [EmptyStmt] ; +# 1738| getStmt(1): [ReturnStmt] return ... +# 1742| [TopLevelFunction] int goto_on_same_line() +# 1742| <params>: +# 1742| getEntryPoint(): [BlockStmt] { ... } +# 1743| getStmt(0): [DeclStmt] declaration +# 1743| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1743| Type = [IntType] int +# 1743| getVariable().getInitializer(): [Initializer] initializer for x +# 1743| getExpr(): [Literal] 42 +# 1743| Type = [IntType] int +# 1743| Value = [Literal] 42 +# 1743| ValueCategory = prvalue +# 1744| getStmt(1): [GotoStmt] goto ... +# 1744| getStmt(2): [LabelStmt] label ...: +# 1745| getStmt(3): [ReturnStmt] return ... +# 1745| getExpr(): [VariableAccess] x +# 1745| Type = [IntType] int +# 1745| ValueCategory = prvalue(load) +# 1748| [CopyAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass const&) +# 1748| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1701| [MoveAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass&&) -# 1701| <params>: +# 1748| [MoveAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass&&) +# 1748| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] TrivialLambdaClass && -# 1703| [ConstMemberFunction] void TrivialLambdaClass::m() const -# 1703| <params>: -# 1703| getEntryPoint(): [BlockStmt] { ... } -# 1704| getStmt(0): [DeclStmt] declaration -# 1704| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_outer -# 1704| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1704| getVariable().getInitializer(): [Initializer] initializer for l_m_outer -# 1704| getExpr(): [LambdaExpression] [...](...){...} -# 1704| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1704| ValueCategory = prvalue -# 1704| getInitializer(): [ClassAggregateLiteral] {...} -# 1704| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1704| ValueCategory = prvalue -# 1704| getAFieldExpr((captured this)): [PointerDereferenceExpr] * ... -# 1704| Type = [SpecifiedType] const TrivialLambdaClass -# 1704| ValueCategory = prvalue(load) -# 1704| getOperand(): [ThisExpr] this -# 1704| Type = [SpecifiedType] const TrivialLambdaClass *const -# 1704| ValueCategory = prvalue(load) -# 1711| getStmt(1): [ReturnStmt] return ... -# 1704| [CopyAssignmentOperator] (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)& (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator=((void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26) const&) -# 1704| <params>: +# 1750| [ConstMemberFunction] void TrivialLambdaClass::m() const +# 1750| <params>: +# 1750| getEntryPoint(): [BlockStmt] { ... } +# 1751| getStmt(0): [DeclStmt] declaration +# 1751| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_outer +# 1751| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1751| getVariable().getInitializer(): [Initializer] initializer for l_m_outer +# 1751| getExpr(): [LambdaExpression] [...](...){...} +# 1751| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1751| ValueCategory = prvalue +# 1751| getInitializer(): [ClassAggregateLiteral] {...} +# 1751| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1751| ValueCategory = prvalue +# 1751| getAFieldExpr((captured this)): [PointerDereferenceExpr] * ... +# 1751| Type = [SpecifiedType] const TrivialLambdaClass +# 1751| ValueCategory = prvalue(load) +# 1751| getOperand(): [ThisExpr] this +# 1751| Type = [SpecifiedType] const TrivialLambdaClass *const +# 1751| ValueCategory = prvalue(load) +# 1758| getStmt(1): [ReturnStmt] return ... +# 1751| [CopyAssignmentOperator] (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)& (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator=((void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26) const&) +# 1751| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1704, col. 26 & -# 1704| [CopyConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26) const&) -# 1704| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1751, col. 26 & +# 1751| [CopyConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26) const&) +# 1751| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1704, col. 26 & -# 1704| [MoveConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)&&) -# 1704| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1751, col. 26 & +# 1751| [MoveConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)&&) +# 1751| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1704, col. 26 && -# 1704| [Constructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::(unnamed constructor)() -# 1704| <params>: -# 1704| [ConstMemberFunction] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const -# 1704| <params>: -# 1704| getEntryPoint(): [BlockStmt] { ... } -# 1705| getStmt(0): [ExprStmt] ExprStmt -# 1705| getExpr(): [FunctionCall] call to m -# 1705| Type = [VoidType] void -# 1705| ValueCategory = prvalue -# 1705| getQualifier(): [AddressOfExpr] & ... -# 1705| Type = [PointerType] const TrivialLambdaClass * -# 1705| ValueCategory = prvalue -# 1705| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) -# 1705| Type = [SpecifiedType] const TrivialLambdaClass -# 1705| ValueCategory = lvalue -# 1705| getQualifier(): [ThisExpr] this -# 1705| Type = [PointerType] const lambda [] type at line 1704, col. 26 * -# 1705| ValueCategory = prvalue(load) -# 1707| getStmt(1): [DeclStmt] declaration -# 1707| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_inner -# 1707| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1707| getVariable().getInitializer(): [Initializer] initializer for l_m_inner -# 1707| getExpr(): [LambdaExpression] [...](...){...} -# 1707| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1707| ValueCategory = prvalue -# 1707| getInitializer(): [ClassAggregateLiteral] {...} -# 1707| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1707| ValueCategory = prvalue -# 1707| getAFieldExpr((captured this)): [PointerFieldAccess] (captured this) -# 1707| Type = [SpecifiedType] const TrivialLambdaClass -# 1707| ValueCategory = prvalue(load) -# 1707| getQualifier(): [ThisExpr] this -# 1707| Type = [PointerType] lambda [] type at line 1707, col. 30 * -# 1707| ValueCategory = prvalue(load) -# 1710| getStmt(2): [ReturnStmt] return ... -# 1707| [CopyAssignmentOperator] (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)& (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator=((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30) const&) -# 1707| <params>: +#-----| Type = [RValueReferenceType] lambda [] type at line 1751, col. 26 && +# 1751| [Constructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::(unnamed constructor)() +# 1751| <params>: +# 1751| [ConstMemberFunction] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const +# 1751| <params>: +# 1751| getEntryPoint(): [BlockStmt] { ... } +# 1752| getStmt(0): [ExprStmt] ExprStmt +# 1752| getExpr(): [FunctionCall] call to m +# 1752| Type = [VoidType] void +# 1752| ValueCategory = prvalue +# 1752| getQualifier(): [AddressOfExpr] & ... +# 1752| Type = [PointerType] const TrivialLambdaClass * +# 1752| ValueCategory = prvalue +# 1752| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) +# 1752| Type = [SpecifiedType] const TrivialLambdaClass +# 1752| ValueCategory = lvalue +# 1752| getQualifier(): [ThisExpr] this +# 1752| Type = [PointerType] const lambda [] type at line 1751, col. 26 * +# 1752| ValueCategory = prvalue(load) +# 1754| getStmt(1): [DeclStmt] declaration +# 1754| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_inner +# 1754| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1754| getVariable().getInitializer(): [Initializer] initializer for l_m_inner +# 1754| getExpr(): [LambdaExpression] [...](...){...} +# 1754| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1754| ValueCategory = prvalue +# 1754| getInitializer(): [ClassAggregateLiteral] {...} +# 1754| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1754| ValueCategory = prvalue +# 1754| getAFieldExpr((captured this)): [PointerFieldAccess] (captured this) +# 1754| Type = [SpecifiedType] const TrivialLambdaClass +# 1754| ValueCategory = prvalue(load) +# 1754| getQualifier(): [ThisExpr] this +# 1754| Type = [PointerType] lambda [] type at line 1754, col. 30 * +# 1754| ValueCategory = prvalue(load) +# 1757| getStmt(2): [ReturnStmt] return ... +# 1754| [CopyAssignmentOperator] (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)& (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator=((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30) const&) +# 1754| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1707, col. 30 & -# 1707| [CopyConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30) const&) -# 1707| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1754, col. 30 & +# 1754| [CopyConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30) const&) +# 1754| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1707, col. 30 & -# 1707| [MoveConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)&&) -# 1707| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1754, col. 30 & +# 1754| [MoveConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)&&) +# 1754| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1707, col. 30 && -# 1707| [Constructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::(unnamed constructor)() -# 1707| <params>: -# 1707| [ConstMemberFunction] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator()() const -# 1707| <params>: -# 1707| getEntryPoint(): [BlockStmt] { ... } -# 1708| getStmt(0): [ExprStmt] ExprStmt -# 1708| getExpr(): [FunctionCall] call to m -# 1708| Type = [VoidType] void -# 1708| ValueCategory = prvalue -# 1708| getQualifier(): [AddressOfExpr] & ... -# 1708| Type = [PointerType] const TrivialLambdaClass * -# 1708| ValueCategory = prvalue -# 1708| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) -# 1708| Type = [SpecifiedType] const TrivialLambdaClass -# 1708| ValueCategory = lvalue -# 1708| getQualifier(): [ThisExpr] this -# 1708| Type = [PointerType] const lambda [] type at line 1707, col. 30 * -# 1708| ValueCategory = prvalue(load) -# 1709| getStmt(1): [ReturnStmt] return ... -# 1714| [TopLevelFunction] void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1714| <params>: -# 1714| getParameter(0): [Parameter] p1 -# 1714| Type = [Class] TrivialLambdaClass -# 1714| getParameter(1): [Parameter] p2 -# 1714| Type = [LValueReferenceType] TrivialLambdaClass & -# 1714| getParameter(2): [Parameter] p3 -# 1714| Type = [RValueReferenceType] TrivialLambdaClass && -# 1714| getEntryPoint(): [BlockStmt] { ... } -# 1715| getStmt(0): [DeclStmt] declaration -# 1715| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 -# 1715| Type = [SpecifiedType] const TrivialLambdaClass -# 1716| getStmt(1): [DeclStmt] declaration -# 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l2 -# 1716| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1716| getVariable().getInitializer(): [Initializer] initializer for l2 -# 1716| getExpr(): [Literal] 0 -# 1716| Type = [Class] TrivialLambdaClass -# 1716| Value = [Literal] 0 -# 1716| ValueCategory = prvalue -# 1716| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1716| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1716| ValueCategory = prvalue -# 1716| getExpr(): [CStyleCast] (const TrivialLambdaClass)... -# 1716| Conversion = [GlvalueConversion] glvalue conversion -# 1716| Type = [SpecifiedType] const TrivialLambdaClass -# 1716| ValueCategory = lvalue -# 1716| getExpr(): [TemporaryObjectExpr] temporary object -# 1716| Type = [Class] TrivialLambdaClass -# 1716| ValueCategory = lvalue -# 1718| getStmt(2): [DeclStmt] declaration -# 1718| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 -# 1718| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1718| getVariable().getInitializer(): [Initializer] initializer for l_outer1 -# 1718| getExpr(): [LambdaExpression] [...](...){...} -# 1718| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1718| ValueCategory = prvalue -# 1718| getInitializer(): [ClassAggregateLiteral] {...} -# 1718| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1718| ValueCategory = prvalue -# 1718| getAFieldExpr(p1): [VariableAccess] p1 -# 1718| Type = [Class] TrivialLambdaClass -# 1718| ValueCategory = prvalue(load) -# 1718| getAFieldExpr(p2): [VariableAccess] p2 -# 1718| Type = [LValueReferenceType] TrivialLambdaClass & -# 1718| ValueCategory = prvalue(load) -# 1718| getAFieldExpr(p3): [VariableAccess] p3 -# 1718| Type = [RValueReferenceType] TrivialLambdaClass && -# 1718| ValueCategory = prvalue(load) -# 1718| getAFieldExpr(l1): [VariableAccess] l1 -# 1718| Type = [SpecifiedType] const TrivialLambdaClass -# 1718| ValueCategory = prvalue(load) -# 1718| getAFieldExpr(l2): [VariableAccess] l2 -# 1718| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1718| ValueCategory = prvalue(load) +#-----| Type = [RValueReferenceType] lambda [] type at line 1754, col. 30 && +# 1754| [Constructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::(unnamed constructor)() +# 1754| <params>: +# 1754| [ConstMemberFunction] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator()() const +# 1754| <params>: +# 1754| getEntryPoint(): [BlockStmt] { ... } +# 1755| getStmt(0): [ExprStmt] ExprStmt +# 1755| getExpr(): [FunctionCall] call to m +# 1755| Type = [VoidType] void +# 1755| ValueCategory = prvalue +# 1755| getQualifier(): [AddressOfExpr] & ... +# 1755| Type = [PointerType] const TrivialLambdaClass * +# 1755| ValueCategory = prvalue +# 1755| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) +# 1755| Type = [SpecifiedType] const TrivialLambdaClass +# 1755| ValueCategory = lvalue +# 1755| getQualifier(): [ThisExpr] this +# 1755| Type = [PointerType] const lambda [] type at line 1754, col. 30 * +# 1755| ValueCategory = prvalue(load) +# 1756| getStmt(1): [ReturnStmt] return ... +# 1761| [TopLevelFunction] void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1761| <params>: +# 1761| getParameter(0): [Parameter] p1 +# 1761| Type = [Class] TrivialLambdaClass +# 1761| getParameter(1): [Parameter] p2 +# 1761| Type = [LValueReferenceType] TrivialLambdaClass & +# 1761| getParameter(2): [Parameter] p3 +# 1761| Type = [RValueReferenceType] TrivialLambdaClass && +# 1761| getEntryPoint(): [BlockStmt] { ... } +# 1762| getStmt(0): [DeclStmt] declaration +# 1762| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 +# 1762| Type = [SpecifiedType] const TrivialLambdaClass +# 1763| getStmt(1): [DeclStmt] declaration +# 1763| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l2 +# 1763| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1763| getVariable().getInitializer(): [Initializer] initializer for l2 +# 1763| getExpr(): [Literal] 0 +# 1763| Type = [Class] TrivialLambdaClass +# 1763| Value = [Literal] 0 +# 1763| ValueCategory = prvalue +# 1763| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1763| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1763| ValueCategory = prvalue +# 1763| getExpr(): [CStyleCast] (const TrivialLambdaClass)... +# 1763| Conversion = [GlvalueConversion] glvalue conversion +# 1763| Type = [SpecifiedType] const TrivialLambdaClass +# 1763| ValueCategory = lvalue +# 1763| getExpr(): [TemporaryObjectExpr] temporary object +# 1763| Type = [Class] TrivialLambdaClass +# 1763| ValueCategory = lvalue +# 1765| getStmt(2): [DeclStmt] declaration +# 1765| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 +# 1765| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1765| getVariable().getInitializer(): [Initializer] initializer for l_outer1 +# 1765| getExpr(): [LambdaExpression] [...](...){...} +# 1765| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1765| ValueCategory = prvalue +# 1765| getInitializer(): [ClassAggregateLiteral] {...} +# 1765| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1765| ValueCategory = prvalue +# 1765| getAFieldExpr(p1): [VariableAccess] p1 +# 1765| Type = [Class] TrivialLambdaClass +# 1765| ValueCategory = prvalue(load) +# 1765| getAFieldExpr(p2): [VariableAccess] p2 +# 1765| Type = [LValueReferenceType] TrivialLambdaClass & +# 1765| ValueCategory = prvalue(load) +# 1765| getAFieldExpr(p3): [VariableAccess] p3 +# 1765| Type = [RValueReferenceType] TrivialLambdaClass && +# 1765| ValueCategory = prvalue(load) +# 1765| getAFieldExpr(l1): [VariableAccess] l1 +# 1765| Type = [SpecifiedType] const TrivialLambdaClass +# 1765| ValueCategory = prvalue(load) +# 1765| getAFieldExpr(l2): [VariableAccess] l2 +# 1765| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1765| ValueCategory = prvalue(load) #-----| getAFieldExpr(p2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [Class] TrivialLambdaClass #-----| ValueCategory = prvalue(load) @@ -14091,723 +14209,723 @@ ir.cpp: #-----| getAFieldExpr(l2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const TrivialLambdaClass #-----| ValueCategory = prvalue(load) -# 1721| getStmt(3): [ReturnStmt] return ... -# 1718| [CopyAssignmentOperator] (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)& (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator=((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21) const&) -# 1718| <params>: +# 1768| getStmt(3): [ReturnStmt] return ... +# 1765| [CopyAssignmentOperator] (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)& (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator=((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21) const&) +# 1765| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1718, col. 21 & -# 1718| [CopyConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21) const&) -# 1718| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1765, col. 21 & +# 1765| [CopyConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21) const&) +# 1765| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1718, col. 21 & -# 1718| [MoveConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)&&) -# 1718| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1765, col. 21 & +# 1765| [MoveConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)&&) +# 1765| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1718, col. 21 && -# 1718| [Constructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::(unnamed constructor)() -# 1718| <params>: -# 1718| [ConstMemberFunction] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const -# 1718| <params>: -# 1718| getEntryPoint(): [BlockStmt] { ... } -# 1719| getStmt(0): [DeclStmt] declaration -# 1719| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_inner1 -# 1719| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1719| getVariable().getInitializer(): [Initializer] initializer for l_inner1 -# 1719| getExpr(): [LambdaExpression] [...](...){...} -# 1719| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1719| ValueCategory = prvalue -# 1719| getInitializer(): [ClassAggregateLiteral] {...} -# 1719| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1719| ValueCategory = prvalue -# 1719| getAFieldExpr(p1): [PointerFieldAccess] p1 -# 1719| Type = [Class] TrivialLambdaClass -# 1719| ValueCategory = prvalue(load) -# 1719| getQualifier(): [ThisExpr] this -# 1719| Type = [PointerType] lambda [] type at line 1719, col. 25 * -# 1719| ValueCategory = prvalue(load) -# 1720| getStmt(1): [ReturnStmt] return ... -# 1719| [CopyAssignmentOperator] (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)& (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator=((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25) const&) -# 1719| <params>: +#-----| Type = [RValueReferenceType] lambda [] type at line 1765, col. 21 && +# 1765| [Constructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::(unnamed constructor)() +# 1765| <params>: +# 1765| [ConstMemberFunction] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const +# 1765| <params>: +# 1765| getEntryPoint(): [BlockStmt] { ... } +# 1766| getStmt(0): [DeclStmt] declaration +# 1766| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_inner1 +# 1766| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1766| getVariable().getInitializer(): [Initializer] initializer for l_inner1 +# 1766| getExpr(): [LambdaExpression] [...](...){...} +# 1766| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1766| ValueCategory = prvalue +# 1766| getInitializer(): [ClassAggregateLiteral] {...} +# 1766| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1766| ValueCategory = prvalue +# 1766| getAFieldExpr(p1): [PointerFieldAccess] p1 +# 1766| Type = [Class] TrivialLambdaClass +# 1766| ValueCategory = prvalue(load) +# 1766| getQualifier(): [ThisExpr] this +# 1766| Type = [PointerType] lambda [] type at line 1766, col. 25 * +# 1766| ValueCategory = prvalue(load) +# 1767| getStmt(1): [ReturnStmt] return ... +# 1766| [CopyAssignmentOperator] (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)& (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator=((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25) const&) +# 1766| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1719, col. 25 & -# 1719| [CopyConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25) const&) -# 1719| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1766, col. 25 & +# 1766| [CopyConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25) const&) +# 1766| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1719, col. 25 & -# 1719| [MoveConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)&&) -# 1719| <params>: +#-----| Type = [LValueReferenceType] const lambda [] type at line 1766, col. 25 & +# 1766| [MoveConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)&&) +# 1766| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1719, col. 25 && -# 1719| [Constructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::(unnamed constructor)() -# 1719| <params>: -# 1719| [ConstMemberFunction] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator()() const -# 1719| <params>: -# 1719| getEntryPoint(): [BlockStmt] { ... } -# 1719| getStmt(0): [ReturnStmt] return ... -# 1723| [CopyAssignmentOperator] CopyConstructorWithImplicitArgumentClass& CopyConstructorWithImplicitArgumentClass::operator=(CopyConstructorWithImplicitArgumentClass const&) -# 1723| <params>: +#-----| Type = [RValueReferenceType] lambda [] type at line 1766, col. 25 && +# 1766| [Constructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::(unnamed constructor)() +# 1766| <params>: +# 1766| [ConstMemberFunction] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator()() const +# 1766| <params>: +# 1766| getEntryPoint(): [BlockStmt] { ... } +# 1766| getStmt(0): [ReturnStmt] return ... +# 1770| [CopyAssignmentOperator] CopyConstructorWithImplicitArgumentClass& CopyConstructorWithImplicitArgumentClass::operator=(CopyConstructorWithImplicitArgumentClass const&) +# 1770| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1726| [Constructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1726| <params>: -# 1726| <initializations>: -# 1726| getEntryPoint(): [BlockStmt] { ... } -# 1726| getStmt(0): [ReturnStmt] return ... -# 1727| [CopyConstructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1727| <params>: -# 1727| getParameter(0): [Parameter] c -# 1727| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1727| <initializations>: -# 1727| getEntryPoint(): [BlockStmt] { ... } -# 1728| getStmt(0): [ExprStmt] ExprStmt -# 1728| getExpr(): [AssignExpr] ... = ... -# 1728| Type = [IntType] int -# 1728| ValueCategory = lvalue -# 1728| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 1728| Type = [IntType] int -# 1728| ValueCategory = lvalue -# 1728| getQualifier(): [ThisExpr] this -# 1728| Type = [PointerType] CopyConstructorWithImplicitArgumentClass * -# 1728| ValueCategory = prvalue(load) -# 1728| getRValue(): [ReferenceFieldAccess] x -# 1728| Type = [IntType] int -# 1728| ValueCategory = prvalue(load) -# 1728| getQualifier(): [VariableAccess] c -# 1728| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1728| ValueCategory = prvalue(load) -# 1728| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1728| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1728| ValueCategory = lvalue -# 1729| getStmt(1): [ReturnStmt] return ... -# 1732| [CopyAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass const&) -# 1732| <params>: +# 1773| [Constructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1773| <params>: +# 1773| <initializations>: +# 1773| getEntryPoint(): [BlockStmt] { ... } +# 1773| getStmt(0): [ReturnStmt] return ... +# 1774| [CopyConstructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1774| <params>: +# 1774| getParameter(0): [Parameter] c +# 1774| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1774| <initializations>: +# 1774| getEntryPoint(): [BlockStmt] { ... } +# 1775| getStmt(0): [ExprStmt] ExprStmt +# 1775| getExpr(): [AssignExpr] ... = ... +# 1775| Type = [IntType] int +# 1775| ValueCategory = lvalue +# 1775| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 1775| Type = [IntType] int +# 1775| ValueCategory = lvalue +# 1775| getQualifier(): [ThisExpr] this +# 1775| Type = [PointerType] CopyConstructorWithImplicitArgumentClass * +# 1775| ValueCategory = prvalue(load) +# 1775| getRValue(): [ReferenceFieldAccess] x +# 1775| Type = [IntType] int +# 1775| ValueCategory = prvalue(load) +# 1775| getQualifier(): [VariableAccess] c +# 1775| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1775| ValueCategory = prvalue(load) +# 1775| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1775| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1775| ValueCategory = lvalue +# 1776| getStmt(1): [ReturnStmt] return ... +# 1779| [CopyAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass const&) +# 1779| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithBitwiseCopyClass & -# 1732| [MoveAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass&&) -# 1732| <params>: +# 1779| [MoveAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass&&) +# 1779| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorWithBitwiseCopyClass && -# 1732| [CopyConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass const&) -# 1732| <params>: +# 1779| [CopyConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass const&) +# 1779| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithBitwiseCopyClass & -# 1732| [MoveConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass&&) -# 1732| <params>: +# 1779| [MoveConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass&&) +# 1779| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorWithBitwiseCopyClass && -# 1735| [Constructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1735| <params>: -# 1735| <initializations>: -# 1735| getEntryPoint(): [BlockStmt] { ... } -# 1735| getStmt(0): [ReturnStmt] return ... -# 1738| [CopyAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass const&) -# 1738| <params>: +# 1782| [Constructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1782| <params>: +# 1782| <initializations>: +# 1782| getEntryPoint(): [BlockStmt] { ... } +# 1782| getStmt(0): [ReturnStmt] return ... +# 1785| [CopyAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass const&) +# 1785| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1738| [MoveAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass&&) -# 1738| <params>: +# 1785| [MoveAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass&&) +# 1785| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestNonVirtualClass && -# 1738| [CopyConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) -# 1738| <params>: +# 1785| [CopyConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1785| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1738| <initializations>: -# 1738| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass -# 1738| Type = [VoidType] void -# 1738| ValueCategory = prvalue -# 1738| getArgument(0): [VariableAccess] (unnamed parameter 0) -# 1738| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1738| ValueCategory = prvalue(load) -# 1738| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1738| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1738| ValueCategory = prvalue -# 1738| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... -# 1738| Conversion = [BaseClassConversion] base class conversion -# 1738| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1738| ValueCategory = lvalue -# 1738| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1738| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass -# 1738| ValueCategory = lvalue -# 1738| getInitializer(1): (no string representation) -# 1738| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass -# 1738| ValueCategory = prvalue -# 1738| getEntryPoint(): [BlockStmt] { ... } -# 1738| getStmt(0): [ReturnStmt] return ... -# 1738| [MoveConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass&&) -# 1738| <params>: +# 1785| <initializations>: +# 1785| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass +# 1785| Type = [VoidType] void +# 1785| ValueCategory = prvalue +# 1785| getArgument(0): [VariableAccess] (unnamed parameter 0) +# 1785| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1785| ValueCategory = prvalue(load) +# 1785| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1785| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1785| ValueCategory = prvalue +# 1785| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... +# 1785| Conversion = [BaseClassConversion] base class conversion +# 1785| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1785| ValueCategory = lvalue +# 1785| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1785| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass +# 1785| ValueCategory = lvalue +# 1785| getInitializer(1): (no string representation) +# 1785| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass +# 1785| ValueCategory = prvalue +# 1785| getEntryPoint(): [BlockStmt] { ... } +# 1785| getStmt(0): [ReturnStmt] return ... +# 1785| [MoveConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass&&) +# 1785| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestNonVirtualClass && -# 1742| [Constructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1742| <params>: -# 1742| <initializations>: -# 1742| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass -# 1742| Type = [VoidType] void -# 1742| ValueCategory = prvalue -# 1742| getInitializer(1): [ConstructorDirectInit] call to CopyConstructorWithBitwiseCopyClass -# 1742| Type = [VoidType] void -# 1742| ValueCategory = prvalue -# 1742| getEntryPoint(): [BlockStmt] { ... } -# 1742| getStmt(0): [ReturnStmt] return ... -# 1745| [CopyAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass const&) -# 1745| <params>: +# 1789| [Constructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1789| <params>: +# 1789| <initializations>: +# 1789| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass +# 1789| Type = [VoidType] void +# 1789| ValueCategory = prvalue +# 1789| getInitializer(1): [ConstructorDirectInit] call to CopyConstructorWithBitwiseCopyClass +# 1789| Type = [VoidType] void +# 1789| ValueCategory = prvalue +# 1789| getEntryPoint(): [BlockStmt] { ... } +# 1789| getStmt(0): [ReturnStmt] return ... +# 1792| [CopyAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass const&) +# 1792| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1745| [MoveAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass&&) -# 1745| <params>: +# 1792| [MoveAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass&&) +# 1792| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestVirtualClass && -# 1745| [CopyConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1745| <params>: +# 1792| [CopyConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1792| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1745| <initializations>: -# 1745| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass -# 1745| Type = [VoidType] void -# 1745| ValueCategory = prvalue -# 1745| getArgument(0): [VariableAccess] (unnamed parameter 0) -# 1745| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1745| ValueCategory = prvalue(load) -# 1745| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1745| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1745| ValueCategory = prvalue -# 1745| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... -# 1745| Conversion = [BaseClassConversion] base class conversion -# 1745| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1745| ValueCategory = lvalue -# 1745| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1745| Type = [SpecifiedType] const CopyConstructorTestVirtualClass -# 1745| ValueCategory = lvalue -# 1745| getInitializer(1): (no string representation) -# 1745| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass -# 1745| ValueCategory = prvalue -# 1745| getEntryPoint(): [BlockStmt] { ... } -# 1745| getStmt(0): [ReturnStmt] return ... -# 1745| [MoveConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass&&) -# 1745| <params>: +# 1792| <initializations>: +# 1792| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass +# 1792| Type = [VoidType] void +# 1792| ValueCategory = prvalue +# 1792| getArgument(0): [VariableAccess] (unnamed parameter 0) +# 1792| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1792| ValueCategory = prvalue(load) +# 1792| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1792| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1792| ValueCategory = prvalue +# 1792| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... +# 1792| Conversion = [BaseClassConversion] base class conversion +# 1792| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1792| ValueCategory = lvalue +# 1792| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1792| Type = [SpecifiedType] const CopyConstructorTestVirtualClass +# 1792| ValueCategory = lvalue +# 1792| getInitializer(1): (no string representation) +# 1792| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass +# 1792| ValueCategory = prvalue +# 1792| getEntryPoint(): [BlockStmt] { ... } +# 1792| getStmt(0): [ReturnStmt] return ... +# 1792| [MoveConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass&&) +# 1792| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestVirtualClass && -# 1749| [Constructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1749| <params>: -# 1749| <initializations>: -# 1749| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass -# 1749| Type = [VoidType] void -# 1749| ValueCategory = prvalue -# 1749| getInitializer(1): [ConstructorVirtualInit] call to CopyConstructorWithBitwiseCopyClass -# 1749| Type = [VoidType] void -# 1749| ValueCategory = prvalue -# 1749| getEntryPoint(): [BlockStmt] { ... } -# 1749| getStmt(0): [ReturnStmt] return ... -# 1752| [TopLevelFunction] int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1752| <params>: -# 1753| getParameter(0): [Parameter] x -# 1753| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1754| getParameter(1): [Parameter] y -# 1754| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1754| getEntryPoint(): [BlockStmt] { ... } -# 1755| getStmt(0): [DeclStmt] declaration -# 1755| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cx -# 1755| Type = [Class] CopyConstructorTestNonVirtualClass -# 1755| getVariable().getInitializer(): [Initializer] initializer for cx -# 1755| getExpr(): [ConstructorCall] call to CopyConstructorTestNonVirtualClass -# 1755| Type = [VoidType] void -# 1755| ValueCategory = prvalue -# 1755| getArgument(0): [VariableAccess] x -# 1755| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1755| ValueCategory = prvalue(load) -# 1755| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1755| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1755| ValueCategory = prvalue -# 1755| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1755| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass -# 1755| ValueCategory = lvalue -# 1756| getStmt(1): [DeclStmt] declaration -# 1756| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cy -# 1756| Type = [Class] CopyConstructorTestVirtualClass -# 1756| getVariable().getInitializer(): [Initializer] initializer for cy -# 1756| getExpr(): [ConstructorCall] call to CopyConstructorTestVirtualClass -# 1756| Type = [VoidType] void -# 1756| ValueCategory = prvalue -# 1756| getArgument(0): [VariableAccess] y -# 1756| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1756| ValueCategory = prvalue(load) -# 1756| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1756| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1756| ValueCategory = prvalue -# 1756| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1756| Type = [SpecifiedType] const CopyConstructorTestVirtualClass -# 1756| ValueCategory = lvalue -# 1757| getStmt(2): [ReturnStmt] return ... -# 1759| [TopLevelFunction] void if_initialization(int) -# 1759| <params>: -# 1759| getParameter(0): [Parameter] x -# 1759| Type = [IntType] int -# 1759| getEntryPoint(): [BlockStmt] { ... } -# 1760| getStmt(0): [IfStmt] if (...) ... -# 1760| getInitialization(): [DeclStmt] declaration -# 1760| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1760| Type = [IntType] int -# 1760| getVariable().getInitializer(): [Initializer] initializer for y -# 1760| getExpr(): [VariableAccess] x -# 1760| Type = [IntType] int -# 1760| ValueCategory = prvalue(load) -# 1760| getCondition(): [AddExpr] ... + ... -# 1760| Type = [IntType] int -# 1760| ValueCategory = prvalue -# 1760| getLeftOperand(): [VariableAccess] x -# 1760| Type = [IntType] int -# 1760| ValueCategory = prvalue(load) -# 1760| getRightOperand(): [Literal] 1 -# 1760| Type = [IntType] int -# 1760| Value = [Literal] 1 -# 1760| ValueCategory = prvalue -# 1760| getThen(): [BlockStmt] { ... } -# 1761| getStmt(0): [ExprStmt] ExprStmt -# 1761| getExpr(): [AssignExpr] ... = ... -# 1761| Type = [IntType] int -# 1761| ValueCategory = lvalue -# 1761| getLValue(): [VariableAccess] x -# 1761| Type = [IntType] int -# 1761| ValueCategory = lvalue -# 1761| getRValue(): [AddExpr] ... + ... -# 1761| Type = [IntType] int -# 1761| ValueCategory = prvalue -# 1761| getLeftOperand(): [VariableAccess] x -# 1761| Type = [IntType] int -# 1761| ValueCategory = prvalue(load) -# 1761| getRightOperand(): [VariableAccess] y -# 1761| Type = [IntType] int -# 1761| ValueCategory = prvalue(load) -# 1760| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1760| Conversion = [BoolConversion] conversion to bool -# 1760| Type = [BoolType] bool -# 1760| ValueCategory = prvalue -# 1764| getStmt(1): [DeclStmt] declaration -# 1764| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1764| Type = [IntType] int -# 1765| getStmt(2): [IfStmt] if (...) ... -# 1765| getInitialization(): [ExprStmt] ExprStmt -# 1765| getExpr(): [AssignExpr] ... = ... -# 1765| Type = [IntType] int -# 1765| ValueCategory = lvalue -# 1765| getLValue(): [VariableAccess] w -# 1765| Type = [IntType] int -# 1765| ValueCategory = lvalue -# 1765| getRValue(): [VariableAccess] x -# 1765| Type = [IntType] int -# 1765| ValueCategory = prvalue(load) -# 1765| getCondition(): [AddExpr] ... + ... -# 1765| Type = [IntType] int -# 1765| ValueCategory = prvalue -# 1765| getLeftOperand(): [VariableAccess] x -# 1765| Type = [IntType] int -# 1765| ValueCategory = prvalue(load) -# 1765| getRightOperand(): [Literal] 1 -# 1765| Type = [IntType] int -# 1765| Value = [Literal] 1 -# 1765| ValueCategory = prvalue -# 1765| getThen(): [BlockStmt] { ... } -# 1766| getStmt(0): [ExprStmt] ExprStmt -# 1766| getExpr(): [AssignExpr] ... = ... -# 1766| Type = [IntType] int -# 1766| ValueCategory = lvalue -# 1766| getLValue(): [VariableAccess] x -# 1766| Type = [IntType] int -# 1766| ValueCategory = lvalue -# 1766| getRValue(): [AddExpr] ... + ... -# 1766| Type = [IntType] int -# 1766| ValueCategory = prvalue -# 1766| getLeftOperand(): [VariableAccess] x -# 1766| Type = [IntType] int -# 1766| ValueCategory = prvalue(load) -# 1766| getRightOperand(): [VariableAccess] w -# 1766| Type = [IntType] int -# 1766| ValueCategory = prvalue(load) -# 1765| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1765| Conversion = [BoolConversion] conversion to bool -# 1765| Type = [BoolType] bool -# 1765| ValueCategory = prvalue -# 1769| getStmt(3): [IfStmt] if (...) ... -# 1769| getInitialization(): [ExprStmt] ExprStmt -# 1769| getExpr(): [AssignExpr] ... = ... -# 1769| Type = [IntType] int -# 1769| ValueCategory = lvalue -# 1769| getLValue(): [VariableAccess] w -# 1769| Type = [IntType] int -# 1769| ValueCategory = lvalue -# 1769| getRValue(): [VariableAccess] x -# 1769| Type = [IntType] int -# 1769| ValueCategory = prvalue(load) -# 1769| getCondition(): [ConditionDeclExpr] (condition decl) -# 1769| Type = [BoolType] bool -# 1769| ValueCategory = prvalue -# 1769| getVariableAccess(): [VariableAccess] w2 -# 1769| Type = [IntType] int -# 1769| ValueCategory = prvalue(load) -# 1769| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1769| Conversion = [BoolConversion] conversion to bool -# 1769| Type = [BoolType] bool -# 1769| ValueCategory = prvalue -# 1769| getThen(): [BlockStmt] { ... } -# 1770| getStmt(0): [ExprStmt] ExprStmt -# 1770| getExpr(): [AssignExpr] ... = ... -# 1770| Type = [IntType] int -# 1770| ValueCategory = lvalue -# 1770| getLValue(): [VariableAccess] x -# 1770| Type = [IntType] int -# 1770| ValueCategory = lvalue -# 1770| getRValue(): [AddExpr] ... + ... -# 1770| Type = [IntType] int -# 1770| ValueCategory = prvalue -# 1770| getLeftOperand(): [VariableAccess] x -# 1770| Type = [IntType] int -# 1770| ValueCategory = prvalue(load) -# 1770| getRightOperand(): [VariableAccess] w -# 1770| Type = [IntType] int -# 1770| ValueCategory = prvalue(load) -# 1773| getStmt(4): [IfStmt] if (...) ... -# 1773| getInitialization(): [DeclStmt] declaration -# 1773| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1773| Type = [IntType] int -# 1773| getVariable().getInitializer(): [Initializer] initializer for v -# 1773| getExpr(): [VariableAccess] x -# 1773| Type = [IntType] int -# 1773| ValueCategory = prvalue(load) -# 1773| getCondition(): [ConditionDeclExpr] (condition decl) -# 1773| Type = [BoolType] bool -# 1773| ValueCategory = prvalue -# 1773| getVariableAccess(): [VariableAccess] v2 -# 1773| Type = [IntType] int -# 1773| ValueCategory = prvalue(load) -# 1773| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1773| Conversion = [BoolConversion] conversion to bool -# 1773| Type = [BoolType] bool -# 1773| ValueCategory = prvalue -# 1773| getThen(): [BlockStmt] { ... } -# 1774| getStmt(0): [ExprStmt] ExprStmt -# 1774| getExpr(): [AssignExpr] ... = ... -# 1774| Type = [IntType] int -# 1774| ValueCategory = lvalue -# 1774| getLValue(): [VariableAccess] x -# 1774| Type = [IntType] int -# 1774| ValueCategory = lvalue -# 1774| getRValue(): [AddExpr] ... + ... -# 1774| Type = [IntType] int -# 1774| ValueCategory = prvalue -# 1774| getLeftOperand(): [VariableAccess] x -# 1774| Type = [IntType] int -# 1774| ValueCategory = prvalue(load) -# 1774| getRightOperand(): [VariableAccess] v -# 1774| Type = [IntType] int -# 1774| ValueCategory = prvalue(load) -# 1777| getStmt(5): [DeclStmt] declaration -# 1777| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1777| Type = [IntType] int -# 1777| getVariable().getInitializer(): [Initializer] initializer for z -# 1777| getExpr(): [VariableAccess] x -# 1777| Type = [IntType] int -# 1777| ValueCategory = prvalue(load) -# 1778| getStmt(6): [IfStmt] if (...) ... -# 1778| getCondition(): [VariableAccess] z -# 1778| Type = [IntType] int -# 1778| ValueCategory = prvalue(load) -# 1778| getThen(): [BlockStmt] { ... } -# 1779| getStmt(0): [ExprStmt] ExprStmt -# 1779| getExpr(): [AssignExpr] ... = ... -# 1779| Type = [IntType] int -# 1779| ValueCategory = lvalue -# 1779| getLValue(): [VariableAccess] x -# 1779| Type = [IntType] int -# 1779| ValueCategory = lvalue -# 1779| getRValue(): [AddExpr] ... + ... -# 1779| Type = [IntType] int -# 1779| ValueCategory = prvalue -# 1779| getLeftOperand(): [VariableAccess] x -# 1779| Type = [IntType] int -# 1779| ValueCategory = prvalue(load) -# 1779| getRightOperand(): [VariableAccess] z -# 1779| Type = [IntType] int -# 1779| ValueCategory = prvalue(load) -# 1778| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1778| Conversion = [BoolConversion] conversion to bool -# 1778| Type = [BoolType] bool -# 1778| ValueCategory = prvalue -# 1782| getStmt(7): [IfStmt] if (...) ... -# 1782| getCondition(): [ConditionDeclExpr] (condition decl) -# 1782| Type = [BoolType] bool -# 1782| ValueCategory = prvalue -# 1782| getVariableAccess(): [VariableAccess] z2 -# 1782| Type = [IntType] int -# 1782| ValueCategory = prvalue(load) -# 1782| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1782| Conversion = [BoolConversion] conversion to bool -# 1782| Type = [BoolType] bool -# 1782| ValueCategory = prvalue -# 1782| getThen(): [BlockStmt] { ... } -# 1783| getStmt(0): [ExprStmt] ExprStmt -# 1783| getExpr(): [AssignAddExpr] ... += ... -# 1783| Type = [IntType] int -# 1783| ValueCategory = lvalue -# 1783| getLValue(): [VariableAccess] x -# 1783| Type = [IntType] int -# 1783| ValueCategory = lvalue -# 1783| getRValue(): [VariableAccess] z2 -# 1783| Type = [IntType] int -# 1783| ValueCategory = prvalue(load) -# 1785| getStmt(8): [ReturnStmt] return ... -# 1787| [TopLevelFunction] void switch_initialization(int) -# 1787| <params>: -# 1787| getParameter(0): [Parameter] x -# 1787| Type = [IntType] int -# 1787| getEntryPoint(): [BlockStmt] { ... } -# 1788| getStmt(0): [SwitchStmt] switch (...) ... -# 1788| getInitialization(): [DeclStmt] declaration -# 1788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1788| Type = [IntType] int -# 1788| getVariable().getInitializer(): [Initializer] initializer for y -# 1788| getExpr(): [VariableAccess] x -# 1788| Type = [IntType] int -# 1788| ValueCategory = prvalue(load) -# 1788| getExpr(): [AddExpr] ... + ... -# 1788| Type = [IntType] int -# 1788| ValueCategory = prvalue -# 1788| getLeftOperand(): [VariableAccess] x -# 1788| Type = [IntType] int -# 1788| ValueCategory = prvalue(load) -# 1788| getRightOperand(): [Literal] 1 -# 1788| Type = [IntType] int -# 1788| Value = [Literal] 1 -# 1788| ValueCategory = prvalue -# 1788| getStmt(): [BlockStmt] { ... } -# 1789| getStmt(0): [SwitchCase] default: -# 1790| getStmt(1): [ExprStmt] ExprStmt -# 1790| getExpr(): [AssignExpr] ... = ... -# 1790| Type = [IntType] int -# 1790| ValueCategory = lvalue -# 1790| getLValue(): [VariableAccess] x -# 1790| Type = [IntType] int -# 1790| ValueCategory = lvalue -# 1790| getRValue(): [AddExpr] ... + ... -# 1790| Type = [IntType] int -# 1790| ValueCategory = prvalue -# 1790| getLeftOperand(): [VariableAccess] x -# 1790| Type = [IntType] int -# 1790| ValueCategory = prvalue(load) -# 1790| getRightOperand(): [VariableAccess] y -# 1790| Type = [IntType] int -# 1790| ValueCategory = prvalue(load) -# 1793| getStmt(1): [DeclStmt] declaration -# 1793| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1793| Type = [IntType] int -# 1794| getStmt(2): [SwitchStmt] switch (...) ... -# 1794| getInitialization(): [ExprStmt] ExprStmt -# 1794| getExpr(): [AssignExpr] ... = ... -# 1794| Type = [IntType] int -# 1794| ValueCategory = lvalue -# 1794| getLValue(): [VariableAccess] w -# 1794| Type = [IntType] int -# 1794| ValueCategory = lvalue -# 1794| getRValue(): [VariableAccess] x -# 1794| Type = [IntType] int -# 1794| ValueCategory = prvalue(load) -# 1794| getExpr(): [AddExpr] ... + ... -# 1794| Type = [IntType] int -# 1794| ValueCategory = prvalue -# 1794| getLeftOperand(): [VariableAccess] x -# 1794| Type = [IntType] int -# 1794| ValueCategory = prvalue(load) -# 1794| getRightOperand(): [Literal] 1 -# 1794| Type = [IntType] int -# 1794| Value = [Literal] 1 -# 1794| ValueCategory = prvalue -# 1794| getStmt(): [BlockStmt] { ... } -# 1795| getStmt(0): [SwitchCase] default: -# 1796| getStmt(1): [ExprStmt] ExprStmt -# 1796| getExpr(): [AssignExpr] ... = ... -# 1796| Type = [IntType] int -# 1796| ValueCategory = lvalue -# 1796| getLValue(): [VariableAccess] x -# 1796| Type = [IntType] int -# 1796| ValueCategory = lvalue -# 1796| getRValue(): [AddExpr] ... + ... -# 1796| Type = [IntType] int -# 1796| ValueCategory = prvalue -# 1796| getLeftOperand(): [VariableAccess] x -# 1796| Type = [IntType] int -# 1796| ValueCategory = prvalue(load) -# 1796| getRightOperand(): [VariableAccess] w -# 1796| Type = [IntType] int -# 1796| ValueCategory = prvalue(load) -# 1799| getStmt(3): [SwitchStmt] switch (...) ... -# 1799| getInitialization(): [ExprStmt] ExprStmt -# 1799| getExpr(): [AssignExpr] ... = ... -# 1799| Type = [IntType] int -# 1799| ValueCategory = lvalue -# 1799| getLValue(): [VariableAccess] w -# 1799| Type = [IntType] int -# 1799| ValueCategory = lvalue -# 1799| getRValue(): [VariableAccess] x -# 1799| Type = [IntType] int -# 1799| ValueCategory = prvalue(load) -# 1799| getExpr(): [ConditionDeclExpr] (condition decl) -# 1799| Type = [IntType] int -# 1799| ValueCategory = prvalue -# 1799| getVariableAccess(): [VariableAccess] w2 -# 1799| Type = [IntType] int -# 1799| ValueCategory = prvalue(load) -# 1799| getStmt(): [BlockStmt] { ... } -# 1800| getStmt(0): [SwitchCase] default: -# 1801| getStmt(1): [ExprStmt] ExprStmt -# 1801| getExpr(): [AssignExpr] ... = ... -# 1801| Type = [IntType] int -# 1801| ValueCategory = lvalue -# 1801| getLValue(): [VariableAccess] x -# 1801| Type = [IntType] int -# 1801| ValueCategory = lvalue -# 1801| getRValue(): [AddExpr] ... + ... -# 1801| Type = [IntType] int -# 1801| ValueCategory = prvalue -# 1801| getLeftOperand(): [VariableAccess] x -# 1801| Type = [IntType] int -# 1801| ValueCategory = prvalue(load) -# 1801| getRightOperand(): [VariableAccess] w -# 1801| Type = [IntType] int -# 1801| ValueCategory = prvalue(load) -# 1804| getStmt(4): [SwitchStmt] switch (...) ... -# 1804| getInitialization(): [DeclStmt] declaration -# 1804| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1804| Type = [IntType] int -# 1804| getVariable().getInitializer(): [Initializer] initializer for v -# 1804| getExpr(): [VariableAccess] x -# 1804| Type = [IntType] int -# 1804| ValueCategory = prvalue(load) -# 1804| getExpr(): [ConditionDeclExpr] (condition decl) -# 1804| Type = [IntType] int -# 1804| ValueCategory = prvalue -# 1804| getVariableAccess(): [VariableAccess] v2 -# 1804| Type = [IntType] int -# 1804| ValueCategory = prvalue(load) -# 1804| getStmt(): [BlockStmt] { ... } -# 1805| getStmt(0): [SwitchCase] default: -# 1806| getStmt(1): [ExprStmt] ExprStmt -# 1806| getExpr(): [AssignExpr] ... = ... -# 1806| Type = [IntType] int -# 1806| ValueCategory = lvalue -# 1806| getLValue(): [VariableAccess] x -# 1806| Type = [IntType] int -# 1806| ValueCategory = lvalue -# 1806| getRValue(): [AddExpr] ... + ... -# 1806| Type = [IntType] int -# 1806| ValueCategory = prvalue -# 1806| getLeftOperand(): [VariableAccess] x -# 1806| Type = [IntType] int -# 1806| ValueCategory = prvalue(load) -# 1806| getRightOperand(): [VariableAccess] v -# 1806| Type = [IntType] int -# 1806| ValueCategory = prvalue(load) -# 1809| getStmt(5): [DeclStmt] declaration -# 1809| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1809| Type = [IntType] int -# 1809| getVariable().getInitializer(): [Initializer] initializer for z -# 1809| getExpr(): [VariableAccess] x -# 1809| Type = [IntType] int -# 1809| ValueCategory = prvalue(load) -# 1810| getStmt(6): [SwitchStmt] switch (...) ... -# 1810| getExpr(): [VariableAccess] z -# 1810| Type = [IntType] int -# 1810| ValueCategory = prvalue(load) -# 1810| getStmt(): [BlockStmt] { ... } -# 1811| getStmt(0): [SwitchCase] default: -# 1812| getStmt(1): [ExprStmt] ExprStmt -# 1812| getExpr(): [AssignExpr] ... = ... +# 1796| [Constructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1796| <params>: +# 1796| <initializations>: +# 1796| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass +# 1796| Type = [VoidType] void +# 1796| ValueCategory = prvalue +# 1796| getInitializer(1): [ConstructorVirtualInit] call to CopyConstructorWithBitwiseCopyClass +# 1796| Type = [VoidType] void +# 1796| ValueCategory = prvalue +# 1796| getEntryPoint(): [BlockStmt] { ... } +# 1796| getStmt(0): [ReturnStmt] return ... +# 1799| [TopLevelFunction] int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1799| <params>: +# 1800| getParameter(0): [Parameter] x +# 1800| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1801| getParameter(1): [Parameter] y +# 1801| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1801| getEntryPoint(): [BlockStmt] { ... } +# 1802| getStmt(0): [DeclStmt] declaration +# 1802| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cx +# 1802| Type = [Class] CopyConstructorTestNonVirtualClass +# 1802| getVariable().getInitializer(): [Initializer] initializer for cx +# 1802| getExpr(): [ConstructorCall] call to CopyConstructorTestNonVirtualClass +# 1802| Type = [VoidType] void +# 1802| ValueCategory = prvalue +# 1802| getArgument(0): [VariableAccess] x +# 1802| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1802| ValueCategory = prvalue(load) +# 1802| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1802| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1802| ValueCategory = prvalue +# 1802| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1802| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass +# 1802| ValueCategory = lvalue +# 1803| getStmt(1): [DeclStmt] declaration +# 1803| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cy +# 1803| Type = [Class] CopyConstructorTestVirtualClass +# 1803| getVariable().getInitializer(): [Initializer] initializer for cy +# 1803| getExpr(): [ConstructorCall] call to CopyConstructorTestVirtualClass +# 1803| Type = [VoidType] void +# 1803| ValueCategory = prvalue +# 1803| getArgument(0): [VariableAccess] y +# 1803| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1803| ValueCategory = prvalue(load) +# 1803| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1803| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1803| ValueCategory = prvalue +# 1803| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1803| Type = [SpecifiedType] const CopyConstructorTestVirtualClass +# 1803| ValueCategory = lvalue +# 1804| getStmt(2): [ReturnStmt] return ... +# 1806| [TopLevelFunction] void if_initialization(int) +# 1806| <params>: +# 1806| getParameter(0): [Parameter] x +# 1806| Type = [IntType] int +# 1806| getEntryPoint(): [BlockStmt] { ... } +# 1807| getStmt(0): [IfStmt] if (...) ... +# 1807| getInitialization(): [DeclStmt] declaration +# 1807| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1807| Type = [IntType] int +# 1807| getVariable().getInitializer(): [Initializer] initializer for y +# 1807| getExpr(): [VariableAccess] x +# 1807| Type = [IntType] int +# 1807| ValueCategory = prvalue(load) +# 1807| getCondition(): [AddExpr] ... + ... +# 1807| Type = [IntType] int +# 1807| ValueCategory = prvalue +# 1807| getLeftOperand(): [VariableAccess] x +# 1807| Type = [IntType] int +# 1807| ValueCategory = prvalue(load) +# 1807| getRightOperand(): [Literal] 1 +# 1807| Type = [IntType] int +# 1807| Value = [Literal] 1 +# 1807| ValueCategory = prvalue +# 1807| getThen(): [BlockStmt] { ... } +# 1808| getStmt(0): [ExprStmt] ExprStmt +# 1808| getExpr(): [AssignExpr] ... = ... +# 1808| Type = [IntType] int +# 1808| ValueCategory = lvalue +# 1808| getLValue(): [VariableAccess] x +# 1808| Type = [IntType] int +# 1808| ValueCategory = lvalue +# 1808| getRValue(): [AddExpr] ... + ... +# 1808| Type = [IntType] int +# 1808| ValueCategory = prvalue +# 1808| getLeftOperand(): [VariableAccess] x +# 1808| Type = [IntType] int +# 1808| ValueCategory = prvalue(load) +# 1808| getRightOperand(): [VariableAccess] y +# 1808| Type = [IntType] int +# 1808| ValueCategory = prvalue(load) +# 1807| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1807| Conversion = [BoolConversion] conversion to bool +# 1807| Type = [BoolType] bool +# 1807| ValueCategory = prvalue +# 1811| getStmt(1): [DeclStmt] declaration +# 1811| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1811| Type = [IntType] int +# 1812| getStmt(2): [IfStmt] if (...) ... +# 1812| getInitialization(): [ExprStmt] ExprStmt +# 1812| getExpr(): [AssignExpr] ... = ... +# 1812| Type = [IntType] int +# 1812| ValueCategory = lvalue +# 1812| getLValue(): [VariableAccess] w # 1812| Type = [IntType] int # 1812| ValueCategory = lvalue -# 1812| getLValue(): [VariableAccess] x -# 1812| Type = [IntType] int -# 1812| ValueCategory = lvalue -# 1812| getRValue(): [AddExpr] ... + ... -# 1812| Type = [IntType] int -# 1812| ValueCategory = prvalue -# 1812| getLeftOperand(): [VariableAccess] x -# 1812| Type = [IntType] int -# 1812| ValueCategory = prvalue(load) -# 1812| getRightOperand(): [VariableAccess] z -# 1812| Type = [IntType] int -# 1812| ValueCategory = prvalue(load) -# 1815| getStmt(7): [SwitchStmt] switch (...) ... -# 1815| getExpr(): [ConditionDeclExpr] (condition decl) -# 1815| Type = [IntType] int -# 1815| ValueCategory = prvalue -# 1815| getVariableAccess(): [VariableAccess] z2 -# 1815| Type = [IntType] int -# 1815| ValueCategory = prvalue(load) -# 1815| getStmt(): [BlockStmt] { ... } -# 1816| getStmt(0): [SwitchCase] default: -# 1817| getStmt(1): [ExprStmt] ExprStmt -# 1817| getExpr(): [AssignAddExpr] ... += ... +# 1812| getRValue(): [VariableAccess] x +# 1812| Type = [IntType] int +# 1812| ValueCategory = prvalue(load) +# 1812| getCondition(): [AddExpr] ... + ... +# 1812| Type = [IntType] int +# 1812| ValueCategory = prvalue +# 1812| getLeftOperand(): [VariableAccess] x +# 1812| Type = [IntType] int +# 1812| ValueCategory = prvalue(load) +# 1812| getRightOperand(): [Literal] 1 +# 1812| Type = [IntType] int +# 1812| Value = [Literal] 1 +# 1812| ValueCategory = prvalue +# 1812| getThen(): [BlockStmt] { ... } +# 1813| getStmt(0): [ExprStmt] ExprStmt +# 1813| getExpr(): [AssignExpr] ... = ... +# 1813| Type = [IntType] int +# 1813| ValueCategory = lvalue +# 1813| getLValue(): [VariableAccess] x +# 1813| Type = [IntType] int +# 1813| ValueCategory = lvalue +# 1813| getRValue(): [AddExpr] ... + ... +# 1813| Type = [IntType] int +# 1813| ValueCategory = prvalue +# 1813| getLeftOperand(): [VariableAccess] x +# 1813| Type = [IntType] int +# 1813| ValueCategory = prvalue(load) +# 1813| getRightOperand(): [VariableAccess] w +# 1813| Type = [IntType] int +# 1813| ValueCategory = prvalue(load) +# 1812| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1812| Conversion = [BoolConversion] conversion to bool +# 1812| Type = [BoolType] bool +# 1812| ValueCategory = prvalue +# 1816| getStmt(3): [IfStmt] if (...) ... +# 1816| getInitialization(): [ExprStmt] ExprStmt +# 1816| getExpr(): [AssignExpr] ... = ... +# 1816| Type = [IntType] int +# 1816| ValueCategory = lvalue +# 1816| getLValue(): [VariableAccess] w +# 1816| Type = [IntType] int +# 1816| ValueCategory = lvalue +# 1816| getRValue(): [VariableAccess] x +# 1816| Type = [IntType] int +# 1816| ValueCategory = prvalue(load) +# 1816| getCondition(): [ConditionDeclExpr] (condition decl) +# 1816| Type = [BoolType] bool +# 1816| ValueCategory = prvalue +# 1816| getVariableAccess(): [VariableAccess] w2 +# 1816| Type = [IntType] int +# 1816| ValueCategory = prvalue(load) +# 1816| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1816| Conversion = [BoolConversion] conversion to bool +# 1816| Type = [BoolType] bool +# 1816| ValueCategory = prvalue +# 1816| getThen(): [BlockStmt] { ... } +# 1817| getStmt(0): [ExprStmt] ExprStmt +# 1817| getExpr(): [AssignExpr] ... = ... # 1817| Type = [IntType] int # 1817| ValueCategory = lvalue # 1817| getLValue(): [VariableAccess] x # 1817| Type = [IntType] int # 1817| ValueCategory = lvalue -# 1817| getRValue(): [VariableAccess] z2 +# 1817| getRValue(): [AddExpr] ... + ... # 1817| Type = [IntType] int -# 1817| ValueCategory = prvalue(load) -# 1819| getStmt(8): [ReturnStmt] return ... -# 1823| [GlobalVariable] int global_2 -# 1823| getInitializer(): [Initializer] initializer for global_2 -# 1823| getExpr(): [Literal] 1 -# 1823| Type = [IntType] int -# 1823| Value = [Literal] 1 -# 1823| ValueCategory = prvalue -# 1825| [GlobalVariable] int const global_3 -# 1825| getInitializer(): [Initializer] initializer for global_3 -# 1825| getExpr(): [Literal] 2 -# 1825| Type = [IntType] int -# 1825| Value = [Literal] 2 -# 1825| ValueCategory = prvalue -# 1827| [GlobalVariable] constructor_only global_4 -# 1827| getInitializer(): [Initializer] initializer for global_4 -# 1827| getExpr(): [ConstructorCall] call to constructor_only -# 1827| Type = [VoidType] void -# 1827| ValueCategory = prvalue -# 1827| getArgument(0): [Literal] 1 -# 1827| Type = [IntType] int -# 1827| Value = [Literal] 1 -# 1827| ValueCategory = prvalue -# 1829| [GlobalVariable] constructor_only global_5 -# 1829| getInitializer(): [Initializer] initializer for global_5 -# 1829| getExpr(): [ConstructorCall] call to constructor_only -# 1829| Type = [VoidType] void -# 1829| ValueCategory = prvalue -# 1829| getArgument(0): [Literal] 2 -# 1829| Type = [IntType] int -# 1829| Value = [Literal] 2 +# 1817| ValueCategory = prvalue +# 1817| getLeftOperand(): [VariableAccess] x +# 1817| Type = [IntType] int +# 1817| ValueCategory = prvalue(load) +# 1817| getRightOperand(): [VariableAccess] w +# 1817| Type = [IntType] int +# 1817| ValueCategory = prvalue(load) +# 1820| getStmt(4): [IfStmt] if (...) ... +# 1820| getInitialization(): [DeclStmt] declaration +# 1820| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1820| Type = [IntType] int +# 1820| getVariable().getInitializer(): [Initializer] initializer for v +# 1820| getExpr(): [VariableAccess] x +# 1820| Type = [IntType] int +# 1820| ValueCategory = prvalue(load) +# 1820| getCondition(): [ConditionDeclExpr] (condition decl) +# 1820| Type = [BoolType] bool +# 1820| ValueCategory = prvalue +# 1820| getVariableAccess(): [VariableAccess] v2 +# 1820| Type = [IntType] int +# 1820| ValueCategory = prvalue(load) +# 1820| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1820| Conversion = [BoolConversion] conversion to bool +# 1820| Type = [BoolType] bool +# 1820| ValueCategory = prvalue +# 1820| getThen(): [BlockStmt] { ... } +# 1821| getStmt(0): [ExprStmt] ExprStmt +# 1821| getExpr(): [AssignExpr] ... = ... +# 1821| Type = [IntType] int +# 1821| ValueCategory = lvalue +# 1821| getLValue(): [VariableAccess] x +# 1821| Type = [IntType] int +# 1821| ValueCategory = lvalue +# 1821| getRValue(): [AddExpr] ... + ... +# 1821| Type = [IntType] int +# 1821| ValueCategory = prvalue +# 1821| getLeftOperand(): [VariableAccess] x +# 1821| Type = [IntType] int +# 1821| ValueCategory = prvalue(load) +# 1821| getRightOperand(): [VariableAccess] v +# 1821| Type = [IntType] int +# 1821| ValueCategory = prvalue(load) +# 1824| getStmt(5): [DeclStmt] declaration +# 1824| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1824| Type = [IntType] int +# 1824| getVariable().getInitializer(): [Initializer] initializer for z +# 1824| getExpr(): [VariableAccess] x +# 1824| Type = [IntType] int +# 1824| ValueCategory = prvalue(load) +# 1825| getStmt(6): [IfStmt] if (...) ... +# 1825| getCondition(): [VariableAccess] z +# 1825| Type = [IntType] int +# 1825| ValueCategory = prvalue(load) +# 1825| getThen(): [BlockStmt] { ... } +# 1826| getStmt(0): [ExprStmt] ExprStmt +# 1826| getExpr(): [AssignExpr] ... = ... +# 1826| Type = [IntType] int +# 1826| ValueCategory = lvalue +# 1826| getLValue(): [VariableAccess] x +# 1826| Type = [IntType] int +# 1826| ValueCategory = lvalue +# 1826| getRValue(): [AddExpr] ... + ... +# 1826| Type = [IntType] int +# 1826| ValueCategory = prvalue +# 1826| getLeftOperand(): [VariableAccess] x +# 1826| Type = [IntType] int +# 1826| ValueCategory = prvalue(load) +# 1826| getRightOperand(): [VariableAccess] z +# 1826| Type = [IntType] int +# 1826| ValueCategory = prvalue(load) +# 1825| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1825| Conversion = [BoolConversion] conversion to bool +# 1825| Type = [BoolType] bool +# 1825| ValueCategory = prvalue +# 1829| getStmt(7): [IfStmt] if (...) ... +# 1829| getCondition(): [ConditionDeclExpr] (condition decl) +# 1829| Type = [BoolType] bool # 1829| ValueCategory = prvalue -# 1831| [GlobalVariable] char* global_string -# 1831| getInitializer(): [Initializer] initializer for global_string -# 1831| getExpr(): global string -# 1831| Type = [ArrayType] const char[14] -# 1831| Value = [StringLiteral] "global string" -# 1831| ValueCategory = lvalue -# 1831| getExpr().getFullyConverted(): [CStyleCast] (char *)... -# 1831| Conversion = [PointerConversion] pointer conversion -# 1831| Type = [CharPointerType] char * -# 1831| ValueCategory = prvalue -# 1831| getExpr(): [ArrayToPointerConversion] array to pointer conversion -# 1831| Type = [PointerType] const char * -# 1831| ValueCategory = prvalue -# 1833| [GlobalVariable] int global_6 -# 1833| getInitializer(): [Initializer] initializer for global_6 -# 1833| getExpr(): [VariableAccess] global_2 -# 1833| Type = [IntType] int -# 1833| ValueCategory = prvalue(load) -# 1836| [CopyAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A const&) -# 1836| <params>: +# 1829| getVariableAccess(): [VariableAccess] z2 +# 1829| Type = [IntType] int +# 1829| ValueCategory = prvalue(load) +# 1829| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1829| Conversion = [BoolConversion] conversion to bool +# 1829| Type = [BoolType] bool +# 1829| ValueCategory = prvalue +# 1829| getThen(): [BlockStmt] { ... } +# 1830| getStmt(0): [ExprStmt] ExprStmt +# 1830| getExpr(): [AssignAddExpr] ... += ... +# 1830| Type = [IntType] int +# 1830| ValueCategory = lvalue +# 1830| getLValue(): [VariableAccess] x +# 1830| Type = [IntType] int +# 1830| ValueCategory = lvalue +# 1830| getRValue(): [VariableAccess] z2 +# 1830| Type = [IntType] int +# 1830| ValueCategory = prvalue(load) +# 1832| getStmt(8): [ReturnStmt] return ... +# 1834| [TopLevelFunction] void switch_initialization(int) +# 1834| <params>: +# 1834| getParameter(0): [Parameter] x +# 1834| Type = [IntType] int +# 1834| getEntryPoint(): [BlockStmt] { ... } +# 1835| getStmt(0): [SwitchStmt] switch (...) ... +# 1835| getInitialization(): [DeclStmt] declaration +# 1835| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1835| Type = [IntType] int +# 1835| getVariable().getInitializer(): [Initializer] initializer for y +# 1835| getExpr(): [VariableAccess] x +# 1835| Type = [IntType] int +# 1835| ValueCategory = prvalue(load) +# 1835| getExpr(): [AddExpr] ... + ... +# 1835| Type = [IntType] int +# 1835| ValueCategory = prvalue +# 1835| getLeftOperand(): [VariableAccess] x +# 1835| Type = [IntType] int +# 1835| ValueCategory = prvalue(load) +# 1835| getRightOperand(): [Literal] 1 +# 1835| Type = [IntType] int +# 1835| Value = [Literal] 1 +# 1835| ValueCategory = prvalue +# 1835| getStmt(): [BlockStmt] { ... } +# 1836| getStmt(0): [SwitchCase] default: +# 1837| getStmt(1): [ExprStmt] ExprStmt +# 1837| getExpr(): [AssignExpr] ... = ... +# 1837| Type = [IntType] int +# 1837| ValueCategory = lvalue +# 1837| getLValue(): [VariableAccess] x +# 1837| Type = [IntType] int +# 1837| ValueCategory = lvalue +# 1837| getRValue(): [AddExpr] ... + ... +# 1837| Type = [IntType] int +# 1837| ValueCategory = prvalue +# 1837| getLeftOperand(): [VariableAccess] x +# 1837| Type = [IntType] int +# 1837| ValueCategory = prvalue(load) +# 1837| getRightOperand(): [VariableAccess] y +# 1837| Type = [IntType] int +# 1837| ValueCategory = prvalue(load) +# 1840| getStmt(1): [DeclStmt] declaration +# 1840| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1840| Type = [IntType] int +# 1841| getStmt(2): [SwitchStmt] switch (...) ... +# 1841| getInitialization(): [ExprStmt] ExprStmt +# 1841| getExpr(): [AssignExpr] ... = ... +# 1841| Type = [IntType] int +# 1841| ValueCategory = lvalue +# 1841| getLValue(): [VariableAccess] w +# 1841| Type = [IntType] int +# 1841| ValueCategory = lvalue +# 1841| getRValue(): [VariableAccess] x +# 1841| Type = [IntType] int +# 1841| ValueCategory = prvalue(load) +# 1841| getExpr(): [AddExpr] ... + ... +# 1841| Type = [IntType] int +# 1841| ValueCategory = prvalue +# 1841| getLeftOperand(): [VariableAccess] x +# 1841| Type = [IntType] int +# 1841| ValueCategory = prvalue(load) +# 1841| getRightOperand(): [Literal] 1 +# 1841| Type = [IntType] int +# 1841| Value = [Literal] 1 +# 1841| ValueCategory = prvalue +# 1841| getStmt(): [BlockStmt] { ... } +# 1842| getStmt(0): [SwitchCase] default: +# 1843| getStmt(1): [ExprStmt] ExprStmt +# 1843| getExpr(): [AssignExpr] ... = ... +# 1843| Type = [IntType] int +# 1843| ValueCategory = lvalue +# 1843| getLValue(): [VariableAccess] x +# 1843| Type = [IntType] int +# 1843| ValueCategory = lvalue +# 1843| getRValue(): [AddExpr] ... + ... +# 1843| Type = [IntType] int +# 1843| ValueCategory = prvalue +# 1843| getLeftOperand(): [VariableAccess] x +# 1843| Type = [IntType] int +# 1843| ValueCategory = prvalue(load) +# 1843| getRightOperand(): [VariableAccess] w +# 1843| Type = [IntType] int +# 1843| ValueCategory = prvalue(load) +# 1846| getStmt(3): [SwitchStmt] switch (...) ... +# 1846| getInitialization(): [ExprStmt] ExprStmt +# 1846| getExpr(): [AssignExpr] ... = ... +# 1846| Type = [IntType] int +# 1846| ValueCategory = lvalue +# 1846| getLValue(): [VariableAccess] w +# 1846| Type = [IntType] int +# 1846| ValueCategory = lvalue +# 1846| getRValue(): [VariableAccess] x +# 1846| Type = [IntType] int +# 1846| ValueCategory = prvalue(load) +# 1846| getExpr(): [ConditionDeclExpr] (condition decl) +# 1846| Type = [IntType] int +# 1846| ValueCategory = prvalue +# 1846| getVariableAccess(): [VariableAccess] w2 +# 1846| Type = [IntType] int +# 1846| ValueCategory = prvalue(load) +# 1846| getStmt(): [BlockStmt] { ... } +# 1847| getStmt(0): [SwitchCase] default: +# 1848| getStmt(1): [ExprStmt] ExprStmt +# 1848| getExpr(): [AssignExpr] ... = ... +# 1848| Type = [IntType] int +# 1848| ValueCategory = lvalue +# 1848| getLValue(): [VariableAccess] x +# 1848| Type = [IntType] int +# 1848| ValueCategory = lvalue +# 1848| getRValue(): [AddExpr] ... + ... +# 1848| Type = [IntType] int +# 1848| ValueCategory = prvalue +# 1848| getLeftOperand(): [VariableAccess] x +# 1848| Type = [IntType] int +# 1848| ValueCategory = prvalue(load) +# 1848| getRightOperand(): [VariableAccess] w +# 1848| Type = [IntType] int +# 1848| ValueCategory = prvalue(load) +# 1851| getStmt(4): [SwitchStmt] switch (...) ... +# 1851| getInitialization(): [DeclStmt] declaration +# 1851| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1851| Type = [IntType] int +# 1851| getVariable().getInitializer(): [Initializer] initializer for v +# 1851| getExpr(): [VariableAccess] x +# 1851| Type = [IntType] int +# 1851| ValueCategory = prvalue(load) +# 1851| getExpr(): [ConditionDeclExpr] (condition decl) +# 1851| Type = [IntType] int +# 1851| ValueCategory = prvalue +# 1851| getVariableAccess(): [VariableAccess] v2 +# 1851| Type = [IntType] int +# 1851| ValueCategory = prvalue(load) +# 1851| getStmt(): [BlockStmt] { ... } +# 1852| getStmt(0): [SwitchCase] default: +# 1853| getStmt(1): [ExprStmt] ExprStmt +# 1853| getExpr(): [AssignExpr] ... = ... +# 1853| Type = [IntType] int +# 1853| ValueCategory = lvalue +# 1853| getLValue(): [VariableAccess] x +# 1853| Type = [IntType] int +# 1853| ValueCategory = lvalue +# 1853| getRValue(): [AddExpr] ... + ... +# 1853| Type = [IntType] int +# 1853| ValueCategory = prvalue +# 1853| getLeftOperand(): [VariableAccess] x +# 1853| Type = [IntType] int +# 1853| ValueCategory = prvalue(load) +# 1853| getRightOperand(): [VariableAccess] v +# 1853| Type = [IntType] int +# 1853| ValueCategory = prvalue(load) +# 1856| getStmt(5): [DeclStmt] declaration +# 1856| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1856| Type = [IntType] int +# 1856| getVariable().getInitializer(): [Initializer] initializer for z +# 1856| getExpr(): [VariableAccess] x +# 1856| Type = [IntType] int +# 1856| ValueCategory = prvalue(load) +# 1857| getStmt(6): [SwitchStmt] switch (...) ... +# 1857| getExpr(): [VariableAccess] z +# 1857| Type = [IntType] int +# 1857| ValueCategory = prvalue(load) +# 1857| getStmt(): [BlockStmt] { ... } +# 1858| getStmt(0): [SwitchCase] default: +# 1859| getStmt(1): [ExprStmt] ExprStmt +# 1859| getExpr(): [AssignExpr] ... = ... +# 1859| Type = [IntType] int +# 1859| ValueCategory = lvalue +# 1859| getLValue(): [VariableAccess] x +# 1859| Type = [IntType] int +# 1859| ValueCategory = lvalue +# 1859| getRValue(): [AddExpr] ... + ... +# 1859| Type = [IntType] int +# 1859| ValueCategory = prvalue +# 1859| getLeftOperand(): [VariableAccess] x +# 1859| Type = [IntType] int +# 1859| ValueCategory = prvalue(load) +# 1859| getRightOperand(): [VariableAccess] z +# 1859| Type = [IntType] int +# 1859| ValueCategory = prvalue(load) +# 1862| getStmt(7): [SwitchStmt] switch (...) ... +# 1862| getExpr(): [ConditionDeclExpr] (condition decl) +# 1862| Type = [IntType] int +# 1862| ValueCategory = prvalue +# 1862| getVariableAccess(): [VariableAccess] z2 +# 1862| Type = [IntType] int +# 1862| ValueCategory = prvalue(load) +# 1862| getStmt(): [BlockStmt] { ... } +# 1863| getStmt(0): [SwitchCase] default: +# 1864| getStmt(1): [ExprStmt] ExprStmt +# 1864| getExpr(): [AssignAddExpr] ... += ... +# 1864| Type = [IntType] int +# 1864| ValueCategory = lvalue +# 1864| getLValue(): [VariableAccess] x +# 1864| Type = [IntType] int +# 1864| ValueCategory = lvalue +# 1864| getRValue(): [VariableAccess] z2 +# 1864| Type = [IntType] int +# 1864| ValueCategory = prvalue(load) +# 1866| getStmt(8): [ReturnStmt] return ... +# 1870| [GlobalVariable] int global_2 +# 1870| getInitializer(): [Initializer] initializer for global_2 +# 1870| getExpr(): [Literal] 1 +# 1870| Type = [IntType] int +# 1870| Value = [Literal] 1 +# 1870| ValueCategory = prvalue +# 1872| [GlobalVariable] int const global_3 +# 1872| getInitializer(): [Initializer] initializer for global_3 +# 1872| getExpr(): [Literal] 2 +# 1872| Type = [IntType] int +# 1872| Value = [Literal] 2 +# 1872| ValueCategory = prvalue +# 1874| [GlobalVariable] constructor_only global_4 +# 1874| getInitializer(): [Initializer] initializer for global_4 +# 1874| getExpr(): [ConstructorCall] call to constructor_only +# 1874| Type = [VoidType] void +# 1874| ValueCategory = prvalue +# 1874| getArgument(0): [Literal] 1 +# 1874| Type = [IntType] int +# 1874| Value = [Literal] 1 +# 1874| ValueCategory = prvalue +# 1876| [GlobalVariable] constructor_only global_5 +# 1876| getInitializer(): [Initializer] initializer for global_5 +# 1876| getExpr(): [ConstructorCall] call to constructor_only +# 1876| Type = [VoidType] void +# 1876| ValueCategory = prvalue +# 1876| getArgument(0): [Literal] 2 +# 1876| Type = [IntType] int +# 1876| Value = [Literal] 2 +# 1876| ValueCategory = prvalue +# 1878| [GlobalVariable] char* global_string +# 1878| getInitializer(): [Initializer] initializer for global_string +# 1878| getExpr(): global string +# 1878| Type = [ArrayType] const char[14] +# 1878| Value = [StringLiteral] "global string" +# 1878| ValueCategory = lvalue +# 1878| getExpr().getFullyConverted(): [CStyleCast] (char *)... +# 1878| Conversion = [PointerConversion] pointer conversion +# 1878| Type = [CharPointerType] char * +# 1878| ValueCategory = prvalue +# 1878| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 1878| Type = [PointerType] const char * +# 1878| ValueCategory = prvalue +# 1880| [GlobalVariable] int global_6 +# 1880| getInitializer(): [Initializer] initializer for global_6 +# 1880| getExpr(): [VariableAccess] global_2 +# 1880| Type = [IntType] int +# 1880| ValueCategory = prvalue(load) +# 1883| [CopyAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A const&) +# 1883| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1836| [MoveAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1836| <params>: +# 1883| [MoveAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1883| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && #-----| getEntryPoint(): [BlockStmt] { ... } @@ -14840,43 +14958,43 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] A & #-----| ValueCategory = prvalue -# 1836| [Constructor] void block_assignment::A::A() -# 1836| <params>: -# 1836| [CopyConstructor] void block_assignment::A::A(block_assignment::A const&) -# 1836| <params>: +# 1883| [Constructor] void block_assignment::A::A() +# 1883| <params>: +# 1883| [CopyConstructor] void block_assignment::A::A(block_assignment::A const&) +# 1883| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1836| [MoveConstructor] void block_assignment::A::A(block_assignment::A&&) -# 1836| <params>: +# 1883| [MoveConstructor] void block_assignment::A::A(block_assignment::A&&) +# 1883| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && -# 1838| [VirtualFunction] void block_assignment::A::f() -# 1838| <params>: -# 1841| [CopyAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B const&) -# 1841| <params>: +# 1885| [VirtualFunction] void block_assignment::A::f() +# 1885| <params>: +# 1888| [CopyAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B const&) +# 1888| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const B & -# 1841| [MoveAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1841| <params>: +# 1888| [MoveAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1888| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] B && #-----| getEntryPoint(): [BlockStmt] { ... } #-----| getStmt(0): [ExprStmt] ExprStmt -# 1841| getExpr(): [FunctionCall] call to operator= -# 1841| Type = [LValueReferenceType] A & -# 1841| ValueCategory = prvalue -# 1841| getQualifier(): [ThisExpr] this -# 1841| Type = [PointerType] B * -# 1841| ValueCategory = prvalue(load) -# 1841| getArgument(0): [PointerDereferenceExpr] * ... -# 1841| Type = [Class] A -# 1841| ValueCategory = xvalue -# 1841| getOperand(): [AddressOfExpr] & ... -# 1841| Type = [PointerType] B * -# 1841| ValueCategory = prvalue -# 1841| getOperand(): [VariableAccess] (unnamed parameter 0) -# 1841| Type = [RValueReferenceType] B && -# 1841| ValueCategory = prvalue(load) +# 1888| getExpr(): [FunctionCall] call to operator= +# 1888| Type = [LValueReferenceType] A & +# 1888| ValueCategory = prvalue +# 1888| getQualifier(): [ThisExpr] this +# 1888| Type = [PointerType] B * +# 1888| ValueCategory = prvalue(load) +# 1888| getArgument(0): [PointerDereferenceExpr] * ... +# 1888| Type = [Class] A +# 1888| ValueCategory = xvalue +# 1888| getOperand(): [AddressOfExpr] & ... +# 1888| Type = [PointerType] B * +# 1888| ValueCategory = prvalue +# 1888| getOperand(): [VariableAccess] (unnamed parameter 0) +# 1888| Type = [RValueReferenceType] B && +# 1888| ValueCategory = prvalue(load) #-----| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [Struct] B #-----| ValueCategory = lvalue @@ -14904,1072 +15022,1072 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] B & #-----| ValueCategory = prvalue -# 1841| [CopyConstructor] void block_assignment::B::B(block_assignment::B const&) -# 1841| <params>: +# 1888| [CopyConstructor] void block_assignment::B::B(block_assignment::B const&) +# 1888| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const B & -# 1841| [MoveConstructor] void block_assignment::B::B(block_assignment::B&&) -# 1841| <params>: +# 1888| [MoveConstructor] void block_assignment::B::B(block_assignment::B&&) +# 1888| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] B && -# 1842| [Constructor] void block_assignment::B::B(block_assignment::A*) -# 1842| <params>: -# 1842| getParameter(0): [Parameter] (unnamed parameter 0) -# 1842| Type = [PointerType] A * -# 1845| [TopLevelFunction] void block_assignment::foo() -# 1845| <params>: -# 1845| getEntryPoint(): [BlockStmt] { ... } -# 1846| getStmt(0): [DeclStmt] declaration -# 1846| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1846| Type = [Struct] B -# 1846| getVariable().getInitializer(): [Initializer] initializer for v -# 1846| getExpr(): [ConstructorCall] call to B -# 1846| Type = [VoidType] void -# 1846| ValueCategory = prvalue -# 1846| getArgument(0): [Literal] 0 -# 1846| Type = [IntType] int -# 1846| Value = [Literal] 0 -# 1846| ValueCategory = prvalue -# 1846| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... -# 1846| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 1846| Type = [PointerType] A * -# 1846| Value = [CStyleCast] 0 -# 1846| ValueCategory = prvalue -# 1847| getStmt(1): [ExprStmt] ExprStmt -# 1847| getExpr(): [FunctionCall] call to operator= -# 1847| Type = [LValueReferenceType] B & -# 1847| ValueCategory = prvalue -# 1847| getQualifier(): [VariableAccess] v -# 1847| Type = [Struct] B -# 1847| ValueCategory = lvalue -# 1847| getArgument(0): [ConstructorCall] call to B -# 1847| Type = [VoidType] void -# 1847| ValueCategory = prvalue -# 1847| getArgument(0): [Literal] 0 -# 1847| Type = [IntType] int -# 1847| Value = [Literal] 0 -# 1847| ValueCategory = prvalue -# 1847| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... -# 1847| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 1847| Type = [PointerType] A * -# 1847| Value = [CStyleCast] 0 -# 1847| ValueCategory = prvalue -# 1847| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1847| Type = [LValueReferenceType] B & -# 1847| ValueCategory = prvalue -# 1847| getExpr(): [TemporaryObjectExpr] temporary object -# 1847| Type = [Struct] B -# 1847| ValueCategory = lvalue -# 1847| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1847| Type = [Struct] B -# 1847| ValueCategory = lvalue -# 1848| getStmt(2): [ReturnStmt] return ... -# 1851| [TopLevelFunction] void magicvars() -# 1851| <params>: -# 1851| getEntryPoint(): [BlockStmt] { ... } -# 1852| getStmt(0): [DeclStmt] declaration -# 1852| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pf -# 1852| Type = [PointerType] const char * -# 1852| getVariable().getInitializer(): [Initializer] initializer for pf -# 1852| getExpr(): [VariableAccess] __PRETTY_FUNCTION__ -# 1852| Type = [ArrayType] const char[17] -# 1852| ValueCategory = lvalue -# 1852| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1852| Type = [PointerType] const char * -# 1852| ValueCategory = prvalue -# 1853| getStmt(1): [DeclStmt] declaration -# 1853| getDeclarationEntry(0): [VariableDeclarationEntry] definition of strfunc -# 1853| Type = [PointerType] const char * -# 1853| getVariable().getInitializer(): [Initializer] initializer for strfunc -# 1853| getExpr(): [VariableAccess] __func__ -# 1853| Type = [ArrayType] const char[10] -# 1853| ValueCategory = lvalue -# 1853| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1853| Type = [PointerType] const char * -# 1853| ValueCategory = prvalue -# 1854| getStmt(2): [ReturnStmt] return ... -# 1857| [CopyAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S const&) -# 1857| <params>: +# 1889| [Constructor] void block_assignment::B::B(block_assignment::A*) +# 1889| <params>: +# 1889| getParameter(0): [Parameter] (unnamed parameter 0) +# 1889| Type = [PointerType] A * +# 1892| [TopLevelFunction] void block_assignment::foo() +# 1892| <params>: +# 1892| getEntryPoint(): [BlockStmt] { ... } +# 1893| getStmt(0): [DeclStmt] declaration +# 1893| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1893| Type = [Struct] B +# 1893| getVariable().getInitializer(): [Initializer] initializer for v +# 1893| getExpr(): [ConstructorCall] call to B +# 1893| Type = [VoidType] void +# 1893| ValueCategory = prvalue +# 1893| getArgument(0): [Literal] 0 +# 1893| Type = [IntType] int +# 1893| Value = [Literal] 0 +# 1893| ValueCategory = prvalue +# 1893| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... +# 1893| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 1893| Type = [PointerType] A * +# 1893| Value = [CStyleCast] 0 +# 1893| ValueCategory = prvalue +# 1894| getStmt(1): [ExprStmt] ExprStmt +# 1894| getExpr(): [FunctionCall] call to operator= +# 1894| Type = [LValueReferenceType] B & +# 1894| ValueCategory = prvalue +# 1894| getQualifier(): [VariableAccess] v +# 1894| Type = [Struct] B +# 1894| ValueCategory = lvalue +# 1894| getArgument(0): [ConstructorCall] call to B +# 1894| Type = [VoidType] void +# 1894| ValueCategory = prvalue +# 1894| getArgument(0): [Literal] 0 +# 1894| Type = [IntType] int +# 1894| Value = [Literal] 0 +# 1894| ValueCategory = prvalue +# 1894| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... +# 1894| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 1894| Type = [PointerType] A * +# 1894| Value = [CStyleCast] 0 +# 1894| ValueCategory = prvalue +# 1894| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1894| Type = [LValueReferenceType] B & +# 1894| ValueCategory = prvalue +# 1894| getExpr(): [TemporaryObjectExpr] temporary object +# 1894| Type = [Struct] B +# 1894| ValueCategory = lvalue +# 1894| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1894| Type = [Struct] B +# 1894| ValueCategory = lvalue +# 1895| getStmt(2): [ReturnStmt] return ... +# 1898| [TopLevelFunction] void magicvars() +# 1898| <params>: +# 1898| getEntryPoint(): [BlockStmt] { ... } +# 1899| getStmt(0): [DeclStmt] declaration +# 1899| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pf +# 1899| Type = [PointerType] const char * +# 1899| getVariable().getInitializer(): [Initializer] initializer for pf +# 1899| getExpr(): [VariableAccess] __PRETTY_FUNCTION__ +# 1899| Type = [ArrayType] const char[17] +# 1899| ValueCategory = lvalue +# 1899| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1899| Type = [PointerType] const char * +# 1899| ValueCategory = prvalue +# 1900| getStmt(1): [DeclStmt] declaration +# 1900| getDeclarationEntry(0): [VariableDeclarationEntry] definition of strfunc +# 1900| Type = [PointerType] const char * +# 1900| getVariable().getInitializer(): [Initializer] initializer for strfunc +# 1900| getExpr(): [VariableAccess] __func__ +# 1900| Type = [ArrayType] const char[10] +# 1900| ValueCategory = lvalue +# 1900| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1900| Type = [PointerType] const char * +# 1900| ValueCategory = prvalue +# 1901| getStmt(2): [ReturnStmt] return ... +# 1904| [CopyAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S const&) +# 1904| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const S & -# 1857| [MoveAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S&&) -# 1857| <params>: +# 1904| [MoveAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S&&) +# 1904| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] S && -# 1861| [CopyAssignmentOperator] missing_declaration_entries::Bar1<int>& missing_declaration_entries::Bar1<int>::operator=(missing_declaration_entries::Bar1<int> const&) -# 1861| <params>: +# 1908| [CopyAssignmentOperator] missing_declaration_entries::Bar1<int>& missing_declaration_entries::Bar1<int>::operator=(missing_declaration_entries::Bar1<int> const&) +# 1908| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Bar1<int> & -# 1861| [MoveAssignmentOperator] missing_declaration_entries::Bar1<int>& missing_declaration_entries::Bar1<int>::operator=(missing_declaration_entries::Bar1<int>&&) -# 1861| <params>: +# 1908| [MoveAssignmentOperator] missing_declaration_entries::Bar1<int>& missing_declaration_entries::Bar1<int>::operator=(missing_declaration_entries::Bar1<int>&&) +# 1908| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Bar1<int> && -# 1864| [MemberFunction] void* missing_declaration_entries::Bar1<T>::missing_type_decl_entry(missing_declaration_entries::Bar1<T>::pointer) -# 1864| <params>: -# 1864| getParameter(0): [Parameter] p -# 1864| Type = [CTypedefType,NestedTypedefType] pointer -# 1864| getEntryPoint(): [BlockStmt] { ... } -# 1865| getStmt(0): [DeclStmt] declaration -# 1865| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res -# 1865| Type = [CTypedefType,LocalTypedefType] _Res -# 1866| getStmt(1): [ReturnStmt] return ... -# 1866| getExpr(): [VariableAccess] p -# 1866| Type = [CTypedefType,NestedTypedefType] pointer -# 1866| ValueCategory = prvalue(load) -# 1866| getExpr().getFullyConverted(): [CStyleCast] (void *)... -# 1866| Conversion = [PointerConversion] pointer conversion -# 1866| Type = [VoidPointerType] void * -# 1866| ValueCategory = prvalue -# 1864| [MemberFunction] void* missing_declaration_entries::Bar1<int>::missing_type_decl_entry(missing_declaration_entries::Bar1<int>::pointer) -# 1864| <params>: -# 1864| getParameter(0): [Parameter] p -# 1864| Type = [CTypedefType,NestedTypedefType] pointer -# 1864| getEntryPoint(): [BlockStmt] { ... } -# 1865| getStmt(0): [DeclStmt] declaration -# 1866| getStmt(1): [ReturnStmt] return ... -# 1866| getExpr(): [VariableAccess] p -# 1866| Type = [CTypedefType,NestedTypedefType] pointer -# 1866| ValueCategory = prvalue(load) -# 1866| getExpr().getFullyConverted(): [CStyleCast] (void *)... -# 1866| Conversion = [PointerConversion] pointer conversion -# 1866| Type = [VoidPointerType] void * -# 1866| ValueCategory = prvalue -# 1870| [TopLevelFunction] void missing_declaration_entries::test1() -# 1870| <params>: -# 1870| getEntryPoint(): [BlockStmt] { ... } -# 1871| getStmt(0): [DeclStmt] declaration -# 1871| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1871| Type = [ClassTemplateInstantiation,Struct] Bar1<int> -# 1872| getStmt(1): [ExprStmt] ExprStmt -# 1872| getExpr(): [FunctionCall] call to missing_type_decl_entry -# 1872| Type = [VoidPointerType] void * -# 1872| ValueCategory = prvalue -# 1872| getQualifier(): [VariableAccess] b -# 1872| Type = [ClassTemplateInstantiation,Struct] Bar1<int> -# 1872| ValueCategory = lvalue -# 1872| getArgument(0): [Literal] 0 -# 1872| Type = [NullPointerType] decltype(nullptr) -# 1872| Value = [Literal] 0 -# 1872| ValueCategory = prvalue -# 1872| getArgument(0).getFullyConverted(): [CStyleCast] (pointer)... -# 1872| Conversion = [PointerConversion] pointer conversion -# 1872| Type = [CTypedefType,NestedTypedefType] pointer -# 1872| Value = [CStyleCast] 0 -# 1872| ValueCategory = prvalue -# 1873| getStmt(2): [ReturnStmt] return ... -# 1875| [CopyAssignmentOperator] missing_declaration_entries::Bar2<int>& missing_declaration_entries::Bar2<int>::operator=(missing_declaration_entries::Bar2<int> const&) -# 1875| <params>: +# 1911| [MemberFunction] void* missing_declaration_entries::Bar1<T>::missing_type_decl_entry(missing_declaration_entries::Bar1<T>::pointer) +# 1911| <params>: +# 1911| getParameter(0): [Parameter] p +# 1911| Type = [CTypedefType,NestedTypedefType] pointer +# 1911| getEntryPoint(): [BlockStmt] { ... } +# 1912| getStmt(0): [DeclStmt] declaration +# 1912| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res +# 1912| Type = [CTypedefType,LocalTypedefType] _Res +# 1913| getStmt(1): [ReturnStmt] return ... +# 1913| getExpr(): [VariableAccess] p +# 1913| Type = [CTypedefType,NestedTypedefType] pointer +# 1913| ValueCategory = prvalue(load) +# 1913| getExpr().getFullyConverted(): [CStyleCast] (void *)... +# 1913| Conversion = [PointerConversion] pointer conversion +# 1913| Type = [VoidPointerType] void * +# 1913| ValueCategory = prvalue +# 1911| [MemberFunction] void* missing_declaration_entries::Bar1<int>::missing_type_decl_entry(missing_declaration_entries::Bar1<int>::pointer) +# 1911| <params>: +# 1911| getParameter(0): [Parameter] p +# 1911| Type = [CTypedefType,NestedTypedefType] pointer +# 1911| getEntryPoint(): [BlockStmt] { ... } +# 1912| getStmt(0): [DeclStmt] declaration +# 1913| getStmt(1): [ReturnStmt] return ... +# 1913| getExpr(): [VariableAccess] p +# 1913| Type = [CTypedefType,NestedTypedefType] pointer +# 1913| ValueCategory = prvalue(load) +# 1913| getExpr().getFullyConverted(): [CStyleCast] (void *)... +# 1913| Conversion = [PointerConversion] pointer conversion +# 1913| Type = [VoidPointerType] void * +# 1913| ValueCategory = prvalue +# 1917| [TopLevelFunction] void missing_declaration_entries::test1() +# 1917| <params>: +# 1917| getEntryPoint(): [BlockStmt] { ... } +# 1918| getStmt(0): [DeclStmt] declaration +# 1918| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1918| Type = [ClassTemplateInstantiation,Struct] Bar1<int> +# 1919| getStmt(1): [ExprStmt] ExprStmt +# 1919| getExpr(): [FunctionCall] call to missing_type_decl_entry +# 1919| Type = [VoidPointerType] void * +# 1919| ValueCategory = prvalue +# 1919| getQualifier(): [VariableAccess] b +# 1919| Type = [ClassTemplateInstantiation,Struct] Bar1<int> +# 1919| ValueCategory = lvalue +# 1919| getArgument(0): [Literal] 0 +# 1919| Type = [NullPointerType] decltype(nullptr) +# 1919| Value = [Literal] 0 +# 1919| ValueCategory = prvalue +# 1919| getArgument(0).getFullyConverted(): [CStyleCast] (pointer)... +# 1919| Conversion = [PointerConversion] pointer conversion +# 1919| Type = [CTypedefType,NestedTypedefType] pointer +# 1919| Value = [CStyleCast] 0 +# 1919| ValueCategory = prvalue +# 1920| getStmt(2): [ReturnStmt] return ... +# 1922| [CopyAssignmentOperator] missing_declaration_entries::Bar2<int>& missing_declaration_entries::Bar2<int>::operator=(missing_declaration_entries::Bar2<int> const&) +# 1922| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Bar2<int> & -# 1875| [MoveAssignmentOperator] missing_declaration_entries::Bar2<int>& missing_declaration_entries::Bar2<int>::operator=(missing_declaration_entries::Bar2<int>&&) -# 1875| <params>: +# 1922| [MoveAssignmentOperator] missing_declaration_entries::Bar2<int>& missing_declaration_entries::Bar2<int>::operator=(missing_declaration_entries::Bar2<int>&&) +# 1922| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Bar2<int> && -# 1877| [MemberFunction] int missing_declaration_entries::Bar2<T>::two_missing_variable_declaration_entries() -# 1877| <params>: -# 1877| getEntryPoint(): [BlockStmt] { ... } -# 1878| getStmt(0): [DeclStmt] declaration -# 1878| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1878| Type = [ArrayType] int[10] -# 1878| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y -# 1878| Type = [ArrayType] int[10] -# 1879| getStmt(1): [ExprStmt] ExprStmt -# 1879| getExpr(): [AssignExpr] ... = ... -# 1879| Type = [IntType] int -# 1879| ValueCategory = lvalue -# 1879| getLValue(): [PointerDereferenceExpr] * ... -# 1879| Type = [IntType] int -# 1879| ValueCategory = lvalue -# 1879| getOperand(): [VariableAccess] x -# 1879| Type = [ArrayType] int[10] -# 1879| ValueCategory = lvalue -# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1879| Type = [IntPointerType] int * -# 1879| ValueCategory = prvalue -# 1879| getRValue(): [Literal] 10 -# 1879| Type = [IntType] int -# 1879| Value = [Literal] 10 -# 1879| ValueCategory = prvalue -# 1880| getStmt(2): [ExprStmt] ExprStmt -# 1880| getExpr(): [AssignExpr] ... = ... -# 1880| Type = [IntType] int -# 1880| ValueCategory = lvalue -# 1880| getLValue(): [PointerDereferenceExpr] * ... -# 1880| Type = [IntType] int -# 1880| ValueCategory = lvalue -# 1880| getOperand(): [VariableAccess] y -# 1880| Type = [ArrayType] int[10] -# 1880| ValueCategory = lvalue -# 1880| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1880| Type = [IntPointerType] int * -# 1880| ValueCategory = prvalue -# 1880| getRValue(): [Literal] 10 -# 1880| Type = [IntType] int -# 1880| Value = [Literal] 10 -# 1880| ValueCategory = prvalue -# 1881| getStmt(3): [ReturnStmt] return ... -# 1881| getExpr(): [AddExpr] ... + ... -# 1881| Type = [IntType] int -# 1881| ValueCategory = prvalue -# 1881| getLeftOperand(): [PointerDereferenceExpr] * ... -# 1881| Type = [IntType] int -# 1881| ValueCategory = prvalue(load) -# 1881| getOperand(): [VariableAccess] x -# 1881| Type = [ArrayType] int[10] -# 1881| ValueCategory = lvalue -# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1881| Type = [IntPointerType] int * -# 1881| ValueCategory = prvalue -# 1881| getRightOperand(): [PointerDereferenceExpr] * ... -# 1881| Type = [IntType] int -# 1881| ValueCategory = prvalue(load) -# 1881| getOperand(): [VariableAccess] y -# 1881| Type = [ArrayType] int[10] -# 1881| ValueCategory = lvalue -# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1881| Type = [IntPointerType] int * -# 1881| ValueCategory = prvalue -# 1877| [MemberFunction] int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() -# 1877| <params>: -# 1877| getEntryPoint(): [BlockStmt] { ... } -# 1878| getStmt(0): [DeclStmt] declaration -# 1879| getStmt(1): [ExprStmt] ExprStmt -# 1879| getExpr(): [AssignExpr] ... = ... -# 1879| Type = [IntType] int -# 1879| ValueCategory = lvalue -# 1879| getLValue(): [PointerDereferenceExpr] * ... -# 1879| Type = [IntType] int -# 1879| ValueCategory = lvalue -# 1879| getOperand(): [VariableAccess] x -# 1879| Type = [ArrayType] int[10] -# 1879| ValueCategory = lvalue -# 1879| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1879| Type = [IntPointerType] int * -# 1879| ValueCategory = prvalue -# 1879| getRValue(): [Literal] 10 -# 1879| Type = [IntType] int -# 1879| Value = [Literal] 10 -# 1879| ValueCategory = prvalue -# 1880| getStmt(2): [ExprStmt] ExprStmt -# 1880| getExpr(): [AssignExpr] ... = ... -# 1880| Type = [IntType] int -# 1880| ValueCategory = lvalue -# 1880| getLValue(): [PointerDereferenceExpr] * ... -# 1880| Type = [IntType] int -# 1880| ValueCategory = lvalue -# 1880| getOperand(): [VariableAccess] y -# 1880| Type = [ArrayType] int[10] -# 1880| ValueCategory = lvalue -# 1880| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1880| Type = [IntPointerType] int * -# 1880| ValueCategory = prvalue -# 1880| getRValue(): [Literal] 10 -# 1880| Type = [IntType] int -# 1880| Value = [Literal] 10 -# 1880| ValueCategory = prvalue -# 1881| getStmt(3): [ReturnStmt] return ... -# 1881| getExpr(): [AddExpr] ... + ... -# 1881| Type = [IntType] int -# 1881| ValueCategory = prvalue -# 1881| getLeftOperand(): [PointerDereferenceExpr] * ... -# 1881| Type = [IntType] int -# 1881| ValueCategory = prvalue(load) -# 1881| getOperand(): [VariableAccess] x -# 1881| Type = [ArrayType] int[10] -# 1881| ValueCategory = lvalue -# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1881| Type = [IntPointerType] int * -# 1881| ValueCategory = prvalue -# 1881| getRightOperand(): [PointerDereferenceExpr] * ... -# 1881| Type = [IntType] int -# 1881| ValueCategory = prvalue(load) -# 1881| getOperand(): [VariableAccess] y -# 1881| Type = [ArrayType] int[10] -# 1881| ValueCategory = lvalue -# 1881| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1881| Type = [IntPointerType] int * -# 1881| ValueCategory = prvalue -# 1885| [TopLevelFunction] void missing_declaration_entries::test2() -# 1885| <params>: -# 1885| getEntryPoint(): [BlockStmt] { ... } -# 1886| getStmt(0): [DeclStmt] declaration -# 1886| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1886| Type = [ClassTemplateInstantiation,Struct] Bar2<int> -# 1887| getStmt(1): [ExprStmt] ExprStmt -# 1887| getExpr(): [FunctionCall] call to two_missing_variable_declaration_entries -# 1887| Type = [IntType] int -# 1887| ValueCategory = prvalue -# 1887| getQualifier(): [VariableAccess] b -# 1887| Type = [ClassTemplateInstantiation,Struct] Bar2<int> -# 1887| ValueCategory = lvalue -# 1888| getStmt(2): [ReturnStmt] return ... -# 1891| [GlobalVariable] char global_template<char> -# 1891| getInitializer(): [Initializer] initializer for global_template -# 1891| getExpr(): [Literal] 42 -# 1891| Type = [IntType] int -# 1891| Value = [Literal] 42 -# 1891| ValueCategory = prvalue -# 1891| getExpr().getFullyConverted(): [CStyleCast] (char)... -# 1891| Conversion = [IntegralConversion] integral conversion -# 1891| Type = [PlainCharType] char -# 1891| Value = [CStyleCast] 42 -# 1891| ValueCategory = prvalue -# 1891| [GlobalVariable] int global_template<int> -# 1891| getInitializer(): [Initializer] initializer for global_template -# 1891| getExpr(): [Literal] 42 -# 1891| Type = [IntType] int -# 1891| Value = [Literal] 42 -# 1891| ValueCategory = prvalue -# 1893| [TopLevelFunction] int test_global_template_int() -# 1893| <params>: -# 1893| getEntryPoint(): [BlockStmt] { ... } -# 1894| getStmt(0): [DeclStmt] declaration -# 1894| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int -# 1894| Type = [IntType] int -# 1894| getVariable().getInitializer(): [Initializer] initializer for local_int -# 1894| getExpr(): [VariableAccess] global_template -# 1894| Type = [IntType] int -# 1894| ValueCategory = prvalue(load) -# 1895| getStmt(1): [DeclStmt] declaration -# 1895| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char -# 1895| Type = [PlainCharType] char -# 1895| getVariable().getInitializer(): [Initializer] initializer for local_char -# 1895| getExpr(): [VariableAccess] global_template -# 1895| Type = [PlainCharType] char -# 1895| ValueCategory = prvalue(load) -# 1896| getStmt(2): [ReturnStmt] return ... -# 1896| getExpr(): [AddExpr] ... + ... -# 1896| Type = [IntType] int -# 1896| ValueCategory = prvalue -# 1896| getLeftOperand(): [VariableAccess] local_int -# 1896| Type = [IntType] int -# 1896| ValueCategory = prvalue(load) -# 1896| getRightOperand(): [VariableAccess] local_char -# 1896| Type = [PlainCharType] char -# 1896| ValueCategory = prvalue(load) -# 1896| getRightOperand().getFullyConverted(): [CStyleCast] (int)... -# 1896| Conversion = [IntegralConversion] integral conversion -# 1896| Type = [IntType] int -# 1896| ValueCategory = prvalue -# 1899| [TopLevelFunction] void noreturnFunc() -# 1899| <params>: -# 1901| [TopLevelFunction] int noreturnTest(int) -# 1901| <params>: -# 1901| getParameter(0): [Parameter] x -# 1901| Type = [IntType] int -# 1901| getEntryPoint(): [BlockStmt] { ... } -# 1902| getStmt(0): [IfStmt] if (...) ... -# 1902| getCondition(): [LTExpr] ... < ... -# 1902| Type = [BoolType] bool -# 1902| ValueCategory = prvalue -# 1902| getLesserOperand(): [VariableAccess] x -# 1902| Type = [IntType] int -# 1902| ValueCategory = prvalue(load) -# 1902| getGreaterOperand(): [Literal] 10 -# 1902| Type = [IntType] int -# 1902| Value = [Literal] 10 -# 1902| ValueCategory = prvalue -# 1902| getThen(): [BlockStmt] { ... } -# 1903| getStmt(0): [ReturnStmt] return ... -# 1903| getExpr(): [VariableAccess] x -# 1903| Type = [IntType] int -# 1903| ValueCategory = prvalue(load) -# 1904| getElse(): [BlockStmt] { ... } -# 1905| getStmt(0): [ExprStmt] ExprStmt -# 1905| getExpr(): [FunctionCall] call to noreturnFunc -# 1905| Type = [VoidType] void -# 1905| ValueCategory = prvalue -# 1907| getStmt(1): [ReturnStmt] return ... -# 1909| [TopLevelFunction] int noreturnTest2(int) -# 1909| <params>: -# 1909| getParameter(0): [Parameter] x -# 1909| Type = [IntType] int -# 1909| getEntryPoint(): [BlockStmt] { ... } -# 1910| getStmt(0): [IfStmt] if (...) ... -# 1910| getCondition(): [LTExpr] ... < ... -# 1910| Type = [BoolType] bool -# 1910| ValueCategory = prvalue -# 1910| getLesserOperand(): [VariableAccess] x -# 1910| Type = [IntType] int -# 1910| ValueCategory = prvalue(load) -# 1910| getGreaterOperand(): [Literal] 10 -# 1910| Type = [IntType] int -# 1910| Value = [Literal] 10 -# 1910| ValueCategory = prvalue -# 1910| getThen(): [BlockStmt] { ... } -# 1911| getStmt(0): [ExprStmt] ExprStmt -# 1911| getExpr(): [FunctionCall] call to noreturnFunc -# 1911| Type = [VoidType] void -# 1911| ValueCategory = prvalue -# 1913| getStmt(1): [ReturnStmt] return ... -# 1913| getExpr(): [VariableAccess] x -# 1913| Type = [IntType] int -# 1913| ValueCategory = prvalue(load) -# 1916| [TopLevelFunction] int static_function(int) -# 1916| <params>: -# 1916| getParameter(0): [Parameter] x -# 1916| Type = [IntType] int -# 1916| getEntryPoint(): [BlockStmt] { ... } -# 1917| getStmt(0): [ReturnStmt] return ... -# 1917| getExpr(): [VariableAccess] x -# 1917| Type = [IntType] int -# 1917| ValueCategory = prvalue(load) -# 1920| [TopLevelFunction] void test_static_functions_with_assignments() -# 1920| <params>: -# 1920| getEntryPoint(): [BlockStmt] { ... } -# 1921| getStmt(0): [DeclStmt] declaration -# 1921| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1921| Type = [Class] C -# 1921| getVariable().getInitializer(): [Initializer] initializer for c -# 1921| getExpr(): [ConstructorCall] call to C -# 1921| Type = [VoidType] void -# 1921| ValueCategory = prvalue -# 1922| getStmt(1): [DeclStmt] declaration -# 1922| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1922| Type = [IntType] int -# 1923| getStmt(2): [ExprStmt] ExprStmt -# 1923| getExpr(): [AssignExpr] ... = ... -# 1923| Type = [IntType] int -# 1923| ValueCategory = lvalue -# 1923| getLValue(): [VariableAccess] x -# 1923| Type = [IntType] int -# 1923| ValueCategory = lvalue -# 1923| getRValue(): [FunctionCall] call to StaticMemberFunction -# 1923| Type = [IntType] int -# 1923| ValueCategory = prvalue -# 1923| getQualifier(): [VariableAccess] c -# 1923| Type = [Class] C -# 1923| ValueCategory = lvalue -# 1923| getArgument(0): [Literal] 10 -# 1923| Type = [IntType] int -# 1923| Value = [Literal] 10 -# 1923| ValueCategory = prvalue -# 1924| getStmt(3): [DeclStmt] declaration -# 1924| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1924| Type = [IntType] int -# 1925| getStmt(4): [ExprStmt] ExprStmt -# 1925| getExpr(): [AssignExpr] ... = ... -# 1925| Type = [IntType] int -# 1925| ValueCategory = lvalue -# 1925| getLValue(): [VariableAccess] y -# 1925| Type = [IntType] int -# 1925| ValueCategory = lvalue -# 1925| getRValue(): [FunctionCall] call to StaticMemberFunction -# 1925| Type = [IntType] int -# 1925| ValueCategory = prvalue -# 1925| getArgument(0): [Literal] 10 -# 1925| Type = [IntType] int -# 1925| Value = [Literal] 10 -# 1925| ValueCategory = prvalue -# 1926| getStmt(5): [DeclStmt] declaration -# 1926| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1924| [MemberFunction] int missing_declaration_entries::Bar2<T>::two_missing_variable_declaration_entries() +# 1924| <params>: +# 1924| getEntryPoint(): [BlockStmt] { ... } +# 1925| getStmt(0): [DeclStmt] declaration +# 1925| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1925| Type = [ArrayType] int[10] +# 1925| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y +# 1925| Type = [ArrayType] int[10] +# 1926| getStmt(1): [ExprStmt] ExprStmt +# 1926| getExpr(): [AssignExpr] ... = ... # 1926| Type = [IntType] int -# 1927| getStmt(6): [ExprStmt] ExprStmt +# 1926| ValueCategory = lvalue +# 1926| getLValue(): [PointerDereferenceExpr] * ... +# 1926| Type = [IntType] int +# 1926| ValueCategory = lvalue +# 1926| getOperand(): [VariableAccess] x +# 1926| Type = [ArrayType] int[10] +# 1926| ValueCategory = lvalue +# 1926| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1926| Type = [IntPointerType] int * +# 1926| ValueCategory = prvalue +# 1926| getRValue(): [Literal] 10 +# 1926| Type = [IntType] int +# 1926| Value = [Literal] 10 +# 1926| ValueCategory = prvalue +# 1927| getStmt(2): [ExprStmt] ExprStmt # 1927| getExpr(): [AssignExpr] ... = ... # 1927| Type = [IntType] int # 1927| ValueCategory = lvalue -# 1927| getLValue(): [VariableAccess] z +# 1927| getLValue(): [PointerDereferenceExpr] * ... # 1927| Type = [IntType] int # 1927| ValueCategory = lvalue -# 1927| getRValue(): [FunctionCall] call to static_function +# 1927| getOperand(): [VariableAccess] y +# 1927| Type = [ArrayType] int[10] +# 1927| ValueCategory = lvalue +# 1927| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1927| Type = [IntPointerType] int * +# 1927| ValueCategory = prvalue +# 1927| getRValue(): [Literal] 10 # 1927| Type = [IntType] int +# 1927| Value = [Literal] 10 # 1927| ValueCategory = prvalue -# 1927| getArgument(0): [Literal] 10 -# 1927| Type = [IntType] int -# 1927| Value = [Literal] 10 +# 1928| getStmt(3): [ReturnStmt] return ... +# 1928| getExpr(): [AddExpr] ... + ... +# 1928| Type = [IntType] int +# 1928| ValueCategory = prvalue +# 1928| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1928| Type = [IntType] int +# 1928| ValueCategory = prvalue(load) +# 1928| getOperand(): [VariableAccess] x +# 1928| Type = [ArrayType] int[10] +# 1928| ValueCategory = lvalue +# 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1928| Type = [IntPointerType] int * +# 1928| ValueCategory = prvalue +# 1928| getRightOperand(): [PointerDereferenceExpr] * ... +# 1928| Type = [IntType] int +# 1928| ValueCategory = prvalue(load) +# 1928| getOperand(): [VariableAccess] y +# 1928| Type = [ArrayType] int[10] +# 1928| ValueCategory = lvalue +# 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1928| Type = [IntPointerType] int * +# 1928| ValueCategory = prvalue +# 1924| [MemberFunction] int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() +# 1924| <params>: +# 1924| getEntryPoint(): [BlockStmt] { ... } +# 1925| getStmt(0): [DeclStmt] declaration +# 1926| getStmt(1): [ExprStmt] ExprStmt +# 1926| getExpr(): [AssignExpr] ... = ... +# 1926| Type = [IntType] int +# 1926| ValueCategory = lvalue +# 1926| getLValue(): [PointerDereferenceExpr] * ... +# 1926| Type = [IntType] int +# 1926| ValueCategory = lvalue +# 1926| getOperand(): [VariableAccess] x +# 1926| Type = [ArrayType] int[10] +# 1926| ValueCategory = lvalue +# 1926| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1926| Type = [IntPointerType] int * +# 1926| ValueCategory = prvalue +# 1926| getRValue(): [Literal] 10 +# 1926| Type = [IntType] int +# 1926| Value = [Literal] 10 +# 1926| ValueCategory = prvalue +# 1927| getStmt(2): [ExprStmt] ExprStmt +# 1927| getExpr(): [AssignExpr] ... = ... +# 1927| Type = [IntType] int +# 1927| ValueCategory = lvalue +# 1927| getLValue(): [PointerDereferenceExpr] * ... +# 1927| Type = [IntType] int +# 1927| ValueCategory = lvalue +# 1927| getOperand(): [VariableAccess] y +# 1927| Type = [ArrayType] int[10] +# 1927| ValueCategory = lvalue +# 1927| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1927| Type = [IntPointerType] int * # 1927| ValueCategory = prvalue -# 1928| getStmt(7): [ReturnStmt] return ... -# 1928| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1928| Type = [VoidType] void +# 1927| getRValue(): [Literal] 10 +# 1927| Type = [IntType] int +# 1927| Value = [Literal] 10 +# 1927| ValueCategory = prvalue +# 1928| getStmt(3): [ReturnStmt] return ... +# 1928| getExpr(): [AddExpr] ... + ... +# 1928| Type = [IntType] int # 1928| ValueCategory = prvalue -# 1928| getQualifier(): [VariableAccess] c -# 1928| Type = [Class] C -# 1928| ValueCategory = lvalue -# 1930| [TopLevelFunction] void test_double_assign() -# 1930| <params>: -# 1930| getEntryPoint(): [BlockStmt] { ... } -# 1931| getStmt(0): [DeclStmt] declaration -# 1931| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1931| Type = [IntType] int -# 1931| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j -# 1931| Type = [IntType] int -# 1932| getStmt(1): [ExprStmt] ExprStmt -# 1932| getExpr(): [AssignExpr] ... = ... -# 1932| Type = [IntType] int -# 1932| ValueCategory = lvalue -# 1932| getLValue(): [VariableAccess] i -# 1932| Type = [IntType] int -# 1932| ValueCategory = lvalue -# 1932| getRValue(): [AssignExpr] ... = ... -# 1932| Type = [IntType] int -# 1932| ValueCategory = prvalue(load) -# 1932| getLValue(): [VariableAccess] j -# 1932| Type = [IntType] int -# 1932| ValueCategory = lvalue -# 1932| getRValue(): [Literal] 40 -# 1932| Type = [IntType] int -# 1932| Value = [Literal] 40 -# 1932| ValueCategory = prvalue -# 1933| getStmt(2): [ReturnStmt] return ... -# 1935| [TopLevelFunction] void test_assign_with_assign_operation() -# 1935| <params>: -# 1935| getEntryPoint(): [BlockStmt] { ... } -# 1936| getStmt(0): [DeclStmt] declaration -# 1936| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1936| Type = [IntType] int -# 1936| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j -# 1936| Type = [IntType] int -# 1936| getVariable().getInitializer(): [Initializer] initializer for j -# 1936| getExpr(): [Literal] 0 -# 1936| Type = [IntType] int -# 1936| Value = [Literal] 0 -# 1936| ValueCategory = prvalue -# 1937| getStmt(1): [ExprStmt] ExprStmt -# 1937| getExpr(): [AssignExpr] ... = ... -# 1937| Type = [IntType] int -# 1937| ValueCategory = lvalue -# 1937| getLValue(): [VariableAccess] i -# 1937| Type = [IntType] int -# 1937| ValueCategory = lvalue -# 1937| getRValue(): [AssignAddExpr] ... += ... -# 1937| Type = [IntType] int -# 1937| ValueCategory = prvalue(load) -# 1937| getLValue(): [VariableAccess] j -# 1937| Type = [IntType] int -# 1937| ValueCategory = lvalue -# 1937| getRValue(): [Literal] 40 -# 1937| Type = [IntType] int -# 1937| Value = [Literal] 40 -# 1937| ValueCategory = prvalue -# 1937| getRValue().getFullyConverted(): [ParenthesisExpr] (...) -# 1937| Type = [IntType] int -# 1937| ValueCategory = prvalue(load) -# 1938| getStmt(2): [ReturnStmt] return ... -# 1940| [CopyAssignmentOperator] D& D::operator=(D const&) +# 1928| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1928| Type = [IntType] int +# 1928| ValueCategory = prvalue(load) +# 1928| getOperand(): [VariableAccess] x +# 1928| Type = [ArrayType] int[10] +# 1928| ValueCategory = lvalue +# 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1928| Type = [IntPointerType] int * +# 1928| ValueCategory = prvalue +# 1928| getRightOperand(): [PointerDereferenceExpr] * ... +# 1928| Type = [IntType] int +# 1928| ValueCategory = prvalue(load) +# 1928| getOperand(): [VariableAccess] y +# 1928| Type = [ArrayType] int[10] +# 1928| ValueCategory = lvalue +# 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1928| Type = [IntPointerType] int * +# 1928| ValueCategory = prvalue +# 1932| [TopLevelFunction] void missing_declaration_entries::test2() +# 1932| <params>: +# 1932| getEntryPoint(): [BlockStmt] { ... } +# 1933| getStmt(0): [DeclStmt] declaration +# 1933| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1933| Type = [ClassTemplateInstantiation,Struct] Bar2<int> +# 1934| getStmt(1): [ExprStmt] ExprStmt +# 1934| getExpr(): [FunctionCall] call to two_missing_variable_declaration_entries +# 1934| Type = [IntType] int +# 1934| ValueCategory = prvalue +# 1934| getQualifier(): [VariableAccess] b +# 1934| Type = [ClassTemplateInstantiation,Struct] Bar2<int> +# 1934| ValueCategory = lvalue +# 1935| getStmt(2): [ReturnStmt] return ... +# 1938| [GlobalVariable] char global_template<char> +# 1938| getInitializer(): [Initializer] initializer for global_template +# 1938| getExpr(): [Literal] 42 +# 1938| Type = [IntType] int +# 1938| Value = [Literal] 42 +# 1938| ValueCategory = prvalue +# 1938| getExpr().getFullyConverted(): [CStyleCast] (char)... +# 1938| Conversion = [IntegralConversion] integral conversion +# 1938| Type = [PlainCharType] char +# 1938| Value = [CStyleCast] 42 +# 1938| ValueCategory = prvalue +# 1938| [GlobalVariable] int global_template<int> +# 1938| getInitializer(): [Initializer] initializer for global_template +# 1938| getExpr(): [Literal] 42 +# 1938| Type = [IntType] int +# 1938| Value = [Literal] 42 +# 1938| ValueCategory = prvalue +# 1940| [TopLevelFunction] int test_global_template_int() # 1940| <params>: +# 1940| getEntryPoint(): [BlockStmt] { ... } +# 1941| getStmt(0): [DeclStmt] declaration +# 1941| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int +# 1941| Type = [IntType] int +# 1941| getVariable().getInitializer(): [Initializer] initializer for local_int +# 1941| getExpr(): [VariableAccess] global_template +# 1941| Type = [IntType] int +# 1941| ValueCategory = prvalue(load) +# 1942| getStmt(1): [DeclStmt] declaration +# 1942| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char +# 1942| Type = [PlainCharType] char +# 1942| getVariable().getInitializer(): [Initializer] initializer for local_char +# 1942| getExpr(): [VariableAccess] global_template +# 1942| Type = [PlainCharType] char +# 1942| ValueCategory = prvalue(load) +# 1943| getStmt(2): [ReturnStmt] return ... +# 1943| getExpr(): [AddExpr] ... + ... +# 1943| Type = [IntType] int +# 1943| ValueCategory = prvalue +# 1943| getLeftOperand(): [VariableAccess] local_int +# 1943| Type = [IntType] int +# 1943| ValueCategory = prvalue(load) +# 1943| getRightOperand(): [VariableAccess] local_char +# 1943| Type = [PlainCharType] char +# 1943| ValueCategory = prvalue(load) +# 1943| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 1943| Conversion = [IntegralConversion] integral conversion +# 1943| Type = [IntType] int +# 1943| ValueCategory = prvalue +# 1946| [TopLevelFunction] void noreturnFunc() +# 1946| <params>: +# 1948| [TopLevelFunction] int noreturnTest(int) +# 1948| <params>: +# 1948| getParameter(0): [Parameter] x +# 1948| Type = [IntType] int +# 1948| getEntryPoint(): [BlockStmt] { ... } +# 1949| getStmt(0): [IfStmt] if (...) ... +# 1949| getCondition(): [LTExpr] ... < ... +# 1949| Type = [BoolType] bool +# 1949| ValueCategory = prvalue +# 1949| getLesserOperand(): [VariableAccess] x +# 1949| Type = [IntType] int +# 1949| ValueCategory = prvalue(load) +# 1949| getGreaterOperand(): [Literal] 10 +# 1949| Type = [IntType] int +# 1949| Value = [Literal] 10 +# 1949| ValueCategory = prvalue +# 1949| getThen(): [BlockStmt] { ... } +# 1950| getStmt(0): [ReturnStmt] return ... +# 1950| getExpr(): [VariableAccess] x +# 1950| Type = [IntType] int +# 1950| ValueCategory = prvalue(load) +# 1951| getElse(): [BlockStmt] { ... } +# 1952| getStmt(0): [ExprStmt] ExprStmt +# 1952| getExpr(): [FunctionCall] call to noreturnFunc +# 1952| Type = [VoidType] void +# 1952| ValueCategory = prvalue +# 1954| getStmt(1): [ReturnStmt] return ... +# 1956| [TopLevelFunction] int noreturnTest2(int) +# 1956| <params>: +# 1956| getParameter(0): [Parameter] x +# 1956| Type = [IntType] int +# 1956| getEntryPoint(): [BlockStmt] { ... } +# 1957| getStmt(0): [IfStmt] if (...) ... +# 1957| getCondition(): [LTExpr] ... < ... +# 1957| Type = [BoolType] bool +# 1957| ValueCategory = prvalue +# 1957| getLesserOperand(): [VariableAccess] x +# 1957| Type = [IntType] int +# 1957| ValueCategory = prvalue(load) +# 1957| getGreaterOperand(): [Literal] 10 +# 1957| Type = [IntType] int +# 1957| Value = [Literal] 10 +# 1957| ValueCategory = prvalue +# 1957| getThen(): [BlockStmt] { ... } +# 1958| getStmt(0): [ExprStmt] ExprStmt +# 1958| getExpr(): [FunctionCall] call to noreturnFunc +# 1958| Type = [VoidType] void +# 1958| ValueCategory = prvalue +# 1960| getStmt(1): [ReturnStmt] return ... +# 1960| getExpr(): [VariableAccess] x +# 1960| Type = [IntType] int +# 1960| ValueCategory = prvalue(load) +# 1963| [TopLevelFunction] int static_function(int) +# 1963| <params>: +# 1963| getParameter(0): [Parameter] x +# 1963| Type = [IntType] int +# 1963| getEntryPoint(): [BlockStmt] { ... } +# 1964| getStmt(0): [ReturnStmt] return ... +# 1964| getExpr(): [VariableAccess] x +# 1964| Type = [IntType] int +# 1964| ValueCategory = prvalue(load) +# 1967| [TopLevelFunction] void test_static_functions_with_assignments() +# 1967| <params>: +# 1967| getEntryPoint(): [BlockStmt] { ... } +# 1968| getStmt(0): [DeclStmt] declaration +# 1968| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1968| Type = [Class] C +# 1968| getVariable().getInitializer(): [Initializer] initializer for c +# 1968| getExpr(): [ConstructorCall] call to C +# 1968| Type = [VoidType] void +# 1968| ValueCategory = prvalue +# 1969| getStmt(1): [DeclStmt] declaration +# 1969| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1969| Type = [IntType] int +# 1970| getStmt(2): [ExprStmt] ExprStmt +# 1970| getExpr(): [AssignExpr] ... = ... +# 1970| Type = [IntType] int +# 1970| ValueCategory = lvalue +# 1970| getLValue(): [VariableAccess] x +# 1970| Type = [IntType] int +# 1970| ValueCategory = lvalue +# 1970| getRValue(): [FunctionCall] call to StaticMemberFunction +# 1970| Type = [IntType] int +# 1970| ValueCategory = prvalue +# 1970| getQualifier(): [VariableAccess] c +# 1970| Type = [Class] C +# 1970| ValueCategory = lvalue +# 1970| getArgument(0): [Literal] 10 +# 1970| Type = [IntType] int +# 1970| Value = [Literal] 10 +# 1970| ValueCategory = prvalue +# 1971| getStmt(3): [DeclStmt] declaration +# 1971| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1971| Type = [IntType] int +# 1972| getStmt(4): [ExprStmt] ExprStmt +# 1972| getExpr(): [AssignExpr] ... = ... +# 1972| Type = [IntType] int +# 1972| ValueCategory = lvalue +# 1972| getLValue(): [VariableAccess] y +# 1972| Type = [IntType] int +# 1972| ValueCategory = lvalue +# 1972| getRValue(): [FunctionCall] call to StaticMemberFunction +# 1972| Type = [IntType] int +# 1972| ValueCategory = prvalue +# 1972| getArgument(0): [Literal] 10 +# 1972| Type = [IntType] int +# 1972| Value = [Literal] 10 +# 1972| ValueCategory = prvalue +# 1973| getStmt(5): [DeclStmt] declaration +# 1973| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1973| Type = [IntType] int +# 1974| getStmt(6): [ExprStmt] ExprStmt +# 1974| getExpr(): [AssignExpr] ... = ... +# 1974| Type = [IntType] int +# 1974| ValueCategory = lvalue +# 1974| getLValue(): [VariableAccess] z +# 1974| Type = [IntType] int +# 1974| ValueCategory = lvalue +# 1974| getRValue(): [FunctionCall] call to static_function +# 1974| Type = [IntType] int +# 1974| ValueCategory = prvalue +# 1974| getArgument(0): [Literal] 10 +# 1974| Type = [IntType] int +# 1974| Value = [Literal] 10 +# 1974| ValueCategory = prvalue +# 1975| getStmt(7): [ReturnStmt] return ... +# 1975| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1975| Type = [VoidType] void +# 1975| ValueCategory = prvalue +# 1975| getQualifier(): [VariableAccess] c +# 1975| Type = [Class] C +# 1975| ValueCategory = lvalue +# 1977| [TopLevelFunction] void test_double_assign() +# 1977| <params>: +# 1977| getEntryPoint(): [BlockStmt] { ... } +# 1978| getStmt(0): [DeclStmt] declaration +# 1978| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1978| Type = [IntType] int +# 1978| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1978| Type = [IntType] int +# 1979| getStmt(1): [ExprStmt] ExprStmt +# 1979| getExpr(): [AssignExpr] ... = ... +# 1979| Type = [IntType] int +# 1979| ValueCategory = lvalue +# 1979| getLValue(): [VariableAccess] i +# 1979| Type = [IntType] int +# 1979| ValueCategory = lvalue +# 1979| getRValue(): [AssignExpr] ... = ... +# 1979| Type = [IntType] int +# 1979| ValueCategory = prvalue(load) +# 1979| getLValue(): [VariableAccess] j +# 1979| Type = [IntType] int +# 1979| ValueCategory = lvalue +# 1979| getRValue(): [Literal] 40 +# 1979| Type = [IntType] int +# 1979| Value = [Literal] 40 +# 1979| ValueCategory = prvalue +# 1980| getStmt(2): [ReturnStmt] return ... +# 1982| [TopLevelFunction] void test_assign_with_assign_operation() +# 1982| <params>: +# 1982| getEntryPoint(): [BlockStmt] { ... } +# 1983| getStmt(0): [DeclStmt] declaration +# 1983| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1983| Type = [IntType] int +# 1983| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1983| Type = [IntType] int +# 1983| getVariable().getInitializer(): [Initializer] initializer for j +# 1983| getExpr(): [Literal] 0 +# 1983| Type = [IntType] int +# 1983| Value = [Literal] 0 +# 1983| ValueCategory = prvalue +# 1984| getStmt(1): [ExprStmt] ExprStmt +# 1984| getExpr(): [AssignExpr] ... = ... +# 1984| Type = [IntType] int +# 1984| ValueCategory = lvalue +# 1984| getLValue(): [VariableAccess] i +# 1984| Type = [IntType] int +# 1984| ValueCategory = lvalue +# 1984| getRValue(): [AssignAddExpr] ... += ... +# 1984| Type = [IntType] int +# 1984| ValueCategory = prvalue(load) +# 1984| getLValue(): [VariableAccess] j +# 1984| Type = [IntType] int +# 1984| ValueCategory = lvalue +# 1984| getRValue(): [Literal] 40 +# 1984| Type = [IntType] int +# 1984| Value = [Literal] 40 +# 1984| ValueCategory = prvalue +# 1984| getRValue().getFullyConverted(): [ParenthesisExpr] (...) +# 1984| Type = [IntType] int +# 1984| ValueCategory = prvalue(load) +# 1985| getStmt(2): [ReturnStmt] return ... +# 1987| [CopyAssignmentOperator] D& D::operator=(D const&) +# 1987| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const D & -# 1940| [MoveAssignmentOperator] D& D::operator=(D&&) -# 1940| <params>: +# 1987| [MoveAssignmentOperator] D& D::operator=(D&&) +# 1987| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] D && -# 1944| [MemberFunction] D& D::ReferenceStaticMemberFunction() -# 1944| <params>: -# 1944| getEntryPoint(): [BlockStmt] { ... } -# 1945| getStmt(0): [ReturnStmt] return ... -# 1945| getExpr(): [VariableAccess] x -# 1945| Type = [Class] D -# 1945| ValueCategory = lvalue -# 1945| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1945| Type = [LValueReferenceType] D & -# 1945| ValueCategory = prvalue -# 1947| [MemberFunction] D D::ObjectStaticMemberFunction() -# 1947| <params>: -# 1947| getEntryPoint(): [BlockStmt] { ... } -# 1948| getStmt(0): [ReturnStmt] return ... -# 1948| getExpr(): [VariableAccess] x -# 1948| Type = [Class] D -# 1948| ValueCategory = prvalue(load) -# 1952| [TopLevelFunction] void test_static_member_functions_with_reference_return() -# 1952| <params>: -# 1952| getEntryPoint(): [BlockStmt] { ... } -# 1953| getStmt(0): [DeclStmt] declaration -# 1953| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1953| Type = [Class] D -# 1955| getStmt(1): [ExprStmt] ExprStmt -# 1955| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 1955| Type = [LValueReferenceType] D & -# 1955| ValueCategory = prvalue -# 1955| getQualifier(): [VariableAccess] d -# 1955| Type = [Class] D -# 1955| ValueCategory = lvalue -# 1955| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1955| Type = [Class] D -# 1955| ValueCategory = lvalue -# 1956| getStmt(2): [ExprStmt] ExprStmt -# 1956| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 1956| Type = [LValueReferenceType] D & -# 1956| ValueCategory = prvalue -# 1956| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1956| Type = [Class] D -# 1956| ValueCategory = lvalue -# 1957| getStmt(3): [ExprStmt] ExprStmt -# 1957| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 1957| Type = [Class] D -# 1957| ValueCategory = prvalue -# 1957| getQualifier(): [VariableAccess] d -# 1957| Type = [Class] D -# 1957| ValueCategory = lvalue -# 1958| getStmt(4): [ExprStmt] ExprStmt -# 1958| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 1958| Type = [Class] D -# 1958| ValueCategory = prvalue -# 1960| getStmt(5): [DeclStmt] declaration -# 1960| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1960| Type = [Class] D -# 1961| getStmt(6): [ExprStmt] ExprStmt -# 1961| getExpr(): [AssignExpr] ... = ... -# 1961| Type = [Class] D -# 1961| ValueCategory = lvalue -# 1961| getLValue(): [VariableAccess] x -# 1961| Type = [Class] D -# 1961| ValueCategory = lvalue -# 1961| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction -# 1961| Type = [LValueReferenceType] D & -# 1961| ValueCategory = prvalue -# 1961| getQualifier(): [VariableAccess] d -# 1961| Type = [Class] D -# 1961| ValueCategory = lvalue -# 1961| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1961| Type = [Class] D -# 1961| ValueCategory = prvalue(load) -# 1962| getStmt(7): [DeclStmt] declaration -# 1962| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1962| Type = [Class] D -# 1963| getStmt(8): [ExprStmt] ExprStmt -# 1963| getExpr(): [AssignExpr] ... = ... -# 1963| Type = [Class] D -# 1963| ValueCategory = lvalue -# 1963| getLValue(): [VariableAccess] y -# 1963| Type = [Class] D -# 1963| ValueCategory = lvalue -# 1963| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction -# 1963| Type = [LValueReferenceType] D & -# 1963| ValueCategory = prvalue -# 1963| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1963| Type = [Class] D -# 1963| ValueCategory = prvalue(load) -# 1964| getStmt(9): [DeclStmt] declaration -# 1964| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j -# 1964| Type = [Class] D -# 1965| getStmt(10): [ExprStmt] ExprStmt -# 1965| getExpr(): [AssignExpr] ... = ... -# 1965| Type = [Class] D -# 1965| ValueCategory = lvalue -# 1965| getLValue(): [VariableAccess] j -# 1965| Type = [Class] D -# 1965| ValueCategory = lvalue -# 1965| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction -# 1965| Type = [Class] D -# 1965| ValueCategory = prvalue -# 1965| getQualifier(): [VariableAccess] d -# 1965| Type = [Class] D -# 1965| ValueCategory = lvalue -# 1966| getStmt(11): [DeclStmt] declaration -# 1966| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k -# 1966| Type = [Class] D -# 1967| getStmt(12): [ExprStmt] ExprStmt -# 1967| getExpr(): [AssignExpr] ... = ... -# 1967| Type = [Class] D -# 1967| ValueCategory = lvalue -# 1967| getLValue(): [VariableAccess] k -# 1967| Type = [Class] D -# 1967| ValueCategory = lvalue -# 1967| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction -# 1967| Type = [Class] D -# 1967| ValueCategory = prvalue -# 1968| getStmt(13): [ReturnStmt] return ... -# 1970| [TopLevelFunction] void test_volatile() -# 1970| <params>: -# 1970| getEntryPoint(): [BlockStmt] { ... } -# 1971| getStmt(0): [DeclStmt] declaration -# 1971| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1971| Type = [SpecifiedType] volatile int -# 1972| getStmt(1): [ExprStmt] ExprStmt -# 1972| getExpr(): [VariableAccess] x -# 1972| Type = [IntType] int -# 1972| ValueCategory = prvalue(load) -# 1973| getStmt(2): [ReturnStmt] return ... -# 1975| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) -# 1975| <params>: +# 1991| [MemberFunction] D& D::ReferenceStaticMemberFunction() +# 1991| <params>: +# 1991| getEntryPoint(): [BlockStmt] { ... } +# 1992| getStmt(0): [ReturnStmt] return ... +# 1992| getExpr(): [VariableAccess] x +# 1992| Type = [Class] D +# 1992| ValueCategory = lvalue +# 1992| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1992| Type = [LValueReferenceType] D & +# 1992| ValueCategory = prvalue +# 1994| [MemberFunction] D D::ObjectStaticMemberFunction() +# 1994| <params>: +# 1994| getEntryPoint(): [BlockStmt] { ... } +# 1995| getStmt(0): [ReturnStmt] return ... +# 1995| getExpr(): [VariableAccess] x +# 1995| Type = [Class] D +# 1995| ValueCategory = prvalue(load) +# 1999| [TopLevelFunction] void test_static_member_functions_with_reference_return() +# 1999| <params>: +# 1999| getEntryPoint(): [BlockStmt] { ... } +# 2000| getStmt(0): [DeclStmt] declaration +# 2000| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2000| Type = [Class] D +# 2002| getStmt(1): [ExprStmt] ExprStmt +# 2002| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2002| Type = [LValueReferenceType] D & +# 2002| ValueCategory = prvalue +# 2002| getQualifier(): [VariableAccess] d +# 2002| Type = [Class] D +# 2002| ValueCategory = lvalue +# 2002| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2002| Type = [Class] D +# 2002| ValueCategory = lvalue +# 2003| getStmt(2): [ExprStmt] ExprStmt +# 2003| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2003| Type = [LValueReferenceType] D & +# 2003| ValueCategory = prvalue +# 2003| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2003| Type = [Class] D +# 2003| ValueCategory = lvalue +# 2004| getStmt(3): [ExprStmt] ExprStmt +# 2004| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction +# 2004| Type = [Class] D +# 2004| ValueCategory = prvalue +# 2004| getQualifier(): [VariableAccess] d +# 2004| Type = [Class] D +# 2004| ValueCategory = lvalue +# 2005| getStmt(4): [ExprStmt] ExprStmt +# 2005| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction +# 2005| Type = [Class] D +# 2005| ValueCategory = prvalue +# 2007| getStmt(5): [DeclStmt] declaration +# 2007| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2007| Type = [Class] D +# 2008| getStmt(6): [ExprStmt] ExprStmt +# 2008| getExpr(): [AssignExpr] ... = ... +# 2008| Type = [Class] D +# 2008| ValueCategory = lvalue +# 2008| getLValue(): [VariableAccess] x +# 2008| Type = [Class] D +# 2008| ValueCategory = lvalue +# 2008| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2008| Type = [LValueReferenceType] D & +# 2008| ValueCategory = prvalue +# 2008| getQualifier(): [VariableAccess] d +# 2008| Type = [Class] D +# 2008| ValueCategory = lvalue +# 2008| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2008| Type = [Class] D +# 2008| ValueCategory = prvalue(load) +# 2009| getStmt(7): [DeclStmt] declaration +# 2009| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2009| Type = [Class] D +# 2010| getStmt(8): [ExprStmt] ExprStmt +# 2010| getExpr(): [AssignExpr] ... = ... +# 2010| Type = [Class] D +# 2010| ValueCategory = lvalue +# 2010| getLValue(): [VariableAccess] y +# 2010| Type = [Class] D +# 2010| ValueCategory = lvalue +# 2010| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2010| Type = [LValueReferenceType] D & +# 2010| ValueCategory = prvalue +# 2010| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2010| Type = [Class] D +# 2010| ValueCategory = prvalue(load) +# 2011| getStmt(9): [DeclStmt] declaration +# 2011| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j +# 2011| Type = [Class] D +# 2012| getStmt(10): [ExprStmt] ExprStmt +# 2012| getExpr(): [AssignExpr] ... = ... +# 2012| Type = [Class] D +# 2012| ValueCategory = lvalue +# 2012| getLValue(): [VariableAccess] j +# 2012| Type = [Class] D +# 2012| ValueCategory = lvalue +# 2012| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction +# 2012| Type = [Class] D +# 2012| ValueCategory = prvalue +# 2012| getQualifier(): [VariableAccess] d +# 2012| Type = [Class] D +# 2012| ValueCategory = lvalue +# 2013| getStmt(11): [DeclStmt] declaration +# 2013| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k +# 2013| Type = [Class] D +# 2014| getStmt(12): [ExprStmt] ExprStmt +# 2014| getExpr(): [AssignExpr] ... = ... +# 2014| Type = [Class] D +# 2014| ValueCategory = lvalue +# 2014| getLValue(): [VariableAccess] k +# 2014| Type = [Class] D +# 2014| ValueCategory = lvalue +# 2014| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction +# 2014| Type = [Class] D +# 2014| ValueCategory = prvalue +# 2015| getStmt(13): [ReturnStmt] return ... +# 2017| [TopLevelFunction] void test_volatile() +# 2017| <params>: +# 2017| getEntryPoint(): [BlockStmt] { ... } +# 2018| getStmt(0): [DeclStmt] declaration +# 2018| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2018| Type = [SpecifiedType] volatile int +# 2019| getStmt(1): [ExprStmt] ExprStmt +# 2019| getExpr(): [VariableAccess] x +# 2019| Type = [IntType] int +# 2019| ValueCategory = prvalue(load) +# 2020| getStmt(2): [ReturnStmt] return ... +# 2022| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) +# 2022| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ValCat & -# 1975| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) -# 1975| <params>: +# 2022| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) +# 2022| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] ValCat && -# 1976| [MemberFunction] ValCat& ValCat::lvalue() -# 1976| <params>: -# 1977| [MemberFunction] ValCat&& ValCat::xvalue() -# 1977| <params>: -# 1978| [MemberFunction] ValCat ValCat::prvalue() -# 1978| <params>: -# 1981| [TopLevelFunction] void value_category_test() -# 1981| <params>: -# 1981| getEntryPoint(): [BlockStmt] { ... } -# 1982| getStmt(0): [DeclStmt] declaration -# 1982| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1982| Type = [Struct] ValCat -# 1984| getStmt(1): [ExprStmt] ExprStmt -# 1984| getExpr(): [AssignExpr] ... = ... -# 1984| Type = [Struct] ValCat -# 1984| ValueCategory = lvalue -# 1984| getLValue(): [FunctionCall] call to lvalue -# 1984| Type = [LValueReferenceType] ValCat & -# 1984| ValueCategory = prvalue -# 1984| getQualifier(): [VariableAccess] c -# 1984| Type = [Struct] ValCat -# 1984| ValueCategory = lvalue -# 1984| getRValue(): [ClassAggregateLiteral] {...} -# 1984| Type = [Struct] ValCat -# 1984| ValueCategory = prvalue -# 1984| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1984| Type = [Struct] ValCat -# 1984| ValueCategory = lvalue +# 2023| [MemberFunction] ValCat& ValCat::lvalue() +# 2023| <params>: +# 2024| [MemberFunction] ValCat&& ValCat::xvalue() +# 2024| <params>: +# 2025| [MemberFunction] ValCat ValCat::prvalue() +# 2025| <params>: +# 2028| [TopLevelFunction] void value_category_test() +# 2028| <params>: +# 2028| getEntryPoint(): [BlockStmt] { ... } +# 2029| getStmt(0): [DeclStmt] declaration +# 2029| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2029| Type = [Struct] ValCat +# 2031| getStmt(1): [ExprStmt] ExprStmt +# 2031| getExpr(): [AssignExpr] ... = ... +# 2031| Type = [Struct] ValCat +# 2031| ValueCategory = lvalue +# 2031| getLValue(): [FunctionCall] call to lvalue +# 2031| Type = [LValueReferenceType] ValCat & +# 2031| ValueCategory = prvalue +# 2031| getQualifier(): [VariableAccess] c +# 2031| Type = [Struct] ValCat +# 2031| ValueCategory = lvalue +# 2031| getRValue(): [ClassAggregateLiteral] {...} +# 2031| Type = [Struct] ValCat +# 2031| ValueCategory = prvalue +# 2031| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2031| Type = [Struct] ValCat +# 2031| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1985| getStmt(2): [ExprStmt] ExprStmt -# 1985| getExpr(): [AssignExpr] ... = ... -# 1985| Type = [Struct] ValCat -# 1985| ValueCategory = lvalue -# 1985| getLValue(): [FunctionCall] call to xvalue -# 1985| Type = [RValueReferenceType] ValCat && -# 1985| ValueCategory = prvalue -# 1985| getQualifier(): [VariableAccess] c -# 1985| Type = [Struct] ValCat -# 1985| ValueCategory = lvalue -# 1985| getRValue(): [ClassAggregateLiteral] {...} -# 1985| Type = [Struct] ValCat -# 1985| ValueCategory = prvalue -# 1985| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1985| Type = [Struct] ValCat -# 1985| ValueCategory = lvalue +# 2032| getStmt(2): [ExprStmt] ExprStmt +# 2032| getExpr(): [AssignExpr] ... = ... +# 2032| Type = [Struct] ValCat +# 2032| ValueCategory = lvalue +# 2032| getLValue(): [FunctionCall] call to xvalue +# 2032| Type = [RValueReferenceType] ValCat && +# 2032| ValueCategory = prvalue +# 2032| getQualifier(): [VariableAccess] c +# 2032| Type = [Struct] ValCat +# 2032| ValueCategory = lvalue +# 2032| getRValue(): [ClassAggregateLiteral] {...} +# 2032| Type = [Struct] ValCat +# 2032| ValueCategory = prvalue +# 2032| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2032| Type = [Struct] ValCat +# 2032| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1986| getStmt(3): [ExprStmt] ExprStmt -# 1986| getExpr(): [AssignExpr] ... = ... -# 1986| Type = [Struct] ValCat -# 1986| ValueCategory = lvalue -# 1986| getLValue(): [FunctionCall] call to prvalue -# 1986| Type = [Struct] ValCat -# 1986| ValueCategory = prvalue -# 1986| getQualifier(): [VariableAccess] c -# 1986| Type = [Struct] ValCat -# 1986| ValueCategory = lvalue -# 1986| getRValue(): [ClassAggregateLiteral] {...} -# 1986| Type = [Struct] ValCat -# 1986| ValueCategory = prvalue -# 1986| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1986| Type = [Struct] ValCat -# 1986| ValueCategory = lvalue +# 2033| getStmt(3): [ExprStmt] ExprStmt +# 2033| getExpr(): [AssignExpr] ... = ... +# 2033| Type = [Struct] ValCat +# 2033| ValueCategory = lvalue +# 2033| getLValue(): [FunctionCall] call to prvalue +# 2033| Type = [Struct] ValCat +# 2033| ValueCategory = prvalue +# 2033| getQualifier(): [VariableAccess] c +# 2033| Type = [Struct] ValCat +# 2033| ValueCategory = lvalue +# 2033| getRValue(): [ClassAggregateLiteral] {...} +# 2033| Type = [Struct] ValCat +# 2033| ValueCategory = prvalue +# 2033| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2033| Type = [Struct] ValCat +# 2033| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1987| getStmt(4): [ExprStmt] ExprStmt -# 1987| getExpr(): [AssignExpr] ... = ... -# 1987| Type = [Struct] ValCat -# 1987| ValueCategory = lvalue -# 1987| getLValue(): [FunctionCall] call to lvalue -# 1987| Type = [LValueReferenceType] ValCat & -# 1987| ValueCategory = prvalue -# 1987| getRValue(): [ClassAggregateLiteral] {...} -# 1987| Type = [Struct] ValCat -# 1987| ValueCategory = prvalue -# 1987| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1987| Type = [Struct] ValCat -# 1987| ValueCategory = lvalue +# 2034| getStmt(4): [ExprStmt] ExprStmt +# 2034| getExpr(): [AssignExpr] ... = ... +# 2034| Type = [Struct] ValCat +# 2034| ValueCategory = lvalue +# 2034| getLValue(): [FunctionCall] call to lvalue +# 2034| Type = [LValueReferenceType] ValCat & +# 2034| ValueCategory = prvalue +# 2034| getRValue(): [ClassAggregateLiteral] {...} +# 2034| Type = [Struct] ValCat +# 2034| ValueCategory = prvalue +# 2034| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2034| Type = [Struct] ValCat +# 2034| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1988| getStmt(5): [ExprStmt] ExprStmt -# 1988| getExpr(): [AssignExpr] ... = ... -# 1988| Type = [Struct] ValCat -# 1988| ValueCategory = lvalue -# 1988| getLValue(): [FunctionCall] call to xvalue -# 1988| Type = [RValueReferenceType] ValCat && -# 1988| ValueCategory = prvalue -# 1988| getRValue(): [ClassAggregateLiteral] {...} -# 1988| Type = [Struct] ValCat -# 1988| ValueCategory = prvalue -# 1988| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1988| Type = [Struct] ValCat -# 1988| ValueCategory = lvalue +# 2035| getStmt(5): [ExprStmt] ExprStmt +# 2035| getExpr(): [AssignExpr] ... = ... +# 2035| Type = [Struct] ValCat +# 2035| ValueCategory = lvalue +# 2035| getLValue(): [FunctionCall] call to xvalue +# 2035| Type = [RValueReferenceType] ValCat && +# 2035| ValueCategory = prvalue +# 2035| getRValue(): [ClassAggregateLiteral] {...} +# 2035| Type = [Struct] ValCat +# 2035| ValueCategory = prvalue +# 2035| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2035| Type = [Struct] ValCat +# 2035| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1989| getStmt(6): [ExprStmt] ExprStmt -# 1989| getExpr(): [AssignExpr] ... = ... -# 1989| Type = [Struct] ValCat -# 1989| ValueCategory = lvalue -# 1989| getLValue(): [FunctionCall] call to prvalue -# 1989| Type = [Struct] ValCat -# 1989| ValueCategory = prvalue -# 1989| getRValue(): [ClassAggregateLiteral] {...} -# 1989| Type = [Struct] ValCat -# 1989| ValueCategory = prvalue -# 1989| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1989| Type = [Struct] ValCat -# 1989| ValueCategory = lvalue +# 2036| getStmt(6): [ExprStmt] ExprStmt +# 2036| getExpr(): [AssignExpr] ... = ... +# 2036| Type = [Struct] ValCat +# 2036| ValueCategory = lvalue +# 2036| getLValue(): [FunctionCall] call to prvalue +# 2036| Type = [Struct] ValCat +# 2036| ValueCategory = prvalue +# 2036| getRValue(): [ClassAggregateLiteral] {...} +# 2036| Type = [Struct] ValCat +# 2036| ValueCategory = prvalue +# 2036| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2036| Type = [Struct] ValCat +# 2036| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 1990| getStmt(7): [ReturnStmt] return ... -# 1992| [TopLevelFunction] void SetStaticFuncPtr() -# 1992| <params>: -# 1992| getEntryPoint(): [BlockStmt] { ... } -# 1993| getStmt(0): [DeclStmt] declaration -# 1993| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1993| Type = [Class] C -# 1993| getVariable().getInitializer(): [Initializer] initializer for c -# 1993| getExpr(): [ConstructorCall] call to C -# 1993| Type = [VoidType] void -# 1993| ValueCategory = prvalue -# 1994| getStmt(1): [DeclStmt] declaration -# 1994| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn -# 1994| Type = [FunctionPointerType] ..(*)(..) -# 1994| getVariable().getInitializer(): [Initializer] initializer for pfn -# 1994| getExpr(): [FunctionAccess] StaticMemberFunction -# 1994| Type = [FunctionPointerType] ..(*)(..) -# 1994| ValueCategory = prvalue(load) -# 1995| getStmt(2): [ExprStmt] ExprStmt -# 1995| getExpr(): [AssignExpr] ... = ... -# 1995| Type = [FunctionPointerType] ..(*)(..) -# 1995| ValueCategory = lvalue -# 1995| getLValue(): [VariableAccess] pfn -# 1995| Type = [FunctionPointerType] ..(*)(..) -# 1995| ValueCategory = lvalue -# 1995| getRValue(): [FunctionAccess] StaticMemberFunction -# 1995| Type = [FunctionPointerType] ..(*)(..) -# 1995| ValueCategory = prvalue(load) -# 1995| getQualifier(): [VariableAccess] c -# 1995| Type = [Class] C -# 1995| ValueCategory = lvalue -# 1996| getStmt(3): [ReturnStmt] return ... -# 1996| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1996| Type = [VoidType] void -# 1996| ValueCategory = prvalue -# 1996| getQualifier(): [VariableAccess] c -# 1996| Type = [Class] C -# 1996| ValueCategory = lvalue -# 1998| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) -# 1998| <params>: -# 1998| getParameter(0): [Parameter] a -# 1998| Type = [BoolType] bool -# 1998| getParameter(1): [Parameter] x -# 1998| Type = [IntType] int -# 1998| getParameter(2): [Parameter] y -# 1998| Type = [IntType] int -# 1998| getParameter(3): [Parameter] z -# 1998| Type = [IntType] int -# 1998| getEntryPoint(): [BlockStmt] { ... } -# 1999| getStmt(0): [ExprStmt] ExprStmt -# 1999| getExpr(): [AssignExpr] ... = ... -# 1999| Type = [IntType] int -# 1999| ValueCategory = lvalue -# 1999| getLValue(): [VariableAccess] z -# 1999| Type = [IntType] int -# 1999| ValueCategory = lvalue -# 1999| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1999| Type = [IntType] int -# 1999| ValueCategory = prvalue(load) -# 1999| getCondition(): [VariableAccess] a -# 1999| Type = [BoolType] bool -# 1999| ValueCategory = prvalue(load) -# 1999| getThen(): [VariableAccess] x -# 1999| Type = [IntType] int -# 1999| ValueCategory = prvalue(load) -# 1999| getElse(): [VariableAccess] y -# 1999| Type = [IntType] int -# 1999| ValueCategory = prvalue(load) -# 2000| getStmt(1): [ExprStmt] ExprStmt -# 2000| getExpr(): [AssignExpr] ... = ... -# 2000| Type = [IntType] int -# 2000| ValueCategory = lvalue -# 2000| getLValue(): [VariableAccess] z -# 2000| Type = [IntType] int -# 2000| ValueCategory = lvalue -# 2000| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2000| Type = [IntType] int -# 2000| ValueCategory = prvalue(load) -# 2000| getCondition(): [VariableAccess] a -# 2000| Type = [BoolType] bool -# 2000| ValueCategory = prvalue(load) -# 2000| getThen(): [VariableAccess] x -# 2000| Type = [IntType] int -# 2000| ValueCategory = prvalue(load) -# 2000| getElse(): [Literal] 5 -# 2000| Type = [IntType] int -# 2000| Value = [Literal] 5 -# 2000| ValueCategory = prvalue -# 2001| getStmt(2): [ExprStmt] ExprStmt -# 2001| getExpr(): [AssignExpr] ... = ... -# 2001| Type = [IntType] int -# 2001| ValueCategory = lvalue -# 2001| getLValue(): [VariableAccess] z -# 2001| Type = [IntType] int -# 2001| ValueCategory = lvalue -# 2001| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2001| Type = [IntType] int -# 2001| ValueCategory = prvalue -# 2001| getCondition(): [VariableAccess] a -# 2001| Type = [BoolType] bool -# 2001| ValueCategory = prvalue(load) -# 2001| getThen(): [Literal] 3 -# 2001| Type = [IntType] int -# 2001| Value = [Literal] 3 -# 2001| ValueCategory = prvalue -# 2001| getElse(): [Literal] 5 -# 2001| Type = [IntType] int -# 2001| Value = [Literal] 5 -# 2001| ValueCategory = prvalue -# 2002| getStmt(3): [ExprStmt] ExprStmt -# 2002| getExpr(): [AssignExpr] ... = ... -# 2002| Type = [IntType] int -# 2002| ValueCategory = lvalue -# 2002| getLValue(): [ConditionalExpr] ... ? ... : ... -# 2002| Type = [IntType] int -# 2002| ValueCategory = lvalue -# 2002| getCondition(): [VariableAccess] a -# 2002| Type = [BoolType] bool -# 2002| ValueCategory = prvalue(load) -# 2002| getThen(): [VariableAccess] x -# 2002| Type = [IntType] int -# 2002| ValueCategory = lvalue -# 2002| getElse(): [VariableAccess] y -# 2002| Type = [IntType] int -# 2002| ValueCategory = lvalue -# 2002| getRValue(): [Literal] 7 -# 2002| Type = [IntType] int -# 2002| Value = [Literal] 7 -# 2002| ValueCategory = prvalue -# 2002| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2002| Type = [IntType] int -# 2002| ValueCategory = lvalue -# 2003| getStmt(4): [ReturnStmt] return ... -# 2005| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) -# 2005| <params>: +# 2037| getStmt(7): [ReturnStmt] return ... +# 2039| [TopLevelFunction] void SetStaticFuncPtr() +# 2039| <params>: +# 2039| getEntryPoint(): [BlockStmt] { ... } +# 2040| getStmt(0): [DeclStmt] declaration +# 2040| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2040| Type = [Class] C +# 2040| getVariable().getInitializer(): [Initializer] initializer for c +# 2040| getExpr(): [ConstructorCall] call to C +# 2040| Type = [VoidType] void +# 2040| ValueCategory = prvalue +# 2041| getStmt(1): [DeclStmt] declaration +# 2041| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn +# 2041| Type = [FunctionPointerType] ..(*)(..) +# 2041| getVariable().getInitializer(): [Initializer] initializer for pfn +# 2041| getExpr(): [FunctionAccess] StaticMemberFunction +# 2041| Type = [FunctionPointerType] ..(*)(..) +# 2041| ValueCategory = prvalue(load) +# 2042| getStmt(2): [ExprStmt] ExprStmt +# 2042| getExpr(): [AssignExpr] ... = ... +# 2042| Type = [FunctionPointerType] ..(*)(..) +# 2042| ValueCategory = lvalue +# 2042| getLValue(): [VariableAccess] pfn +# 2042| Type = [FunctionPointerType] ..(*)(..) +# 2042| ValueCategory = lvalue +# 2042| getRValue(): [FunctionAccess] StaticMemberFunction +# 2042| Type = [FunctionPointerType] ..(*)(..) +# 2042| ValueCategory = prvalue(load) +# 2042| getQualifier(): [VariableAccess] c +# 2042| Type = [Class] C +# 2042| ValueCategory = lvalue +# 2043| getStmt(3): [ReturnStmt] return ... +# 2043| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 2043| Type = [VoidType] void +# 2043| ValueCategory = prvalue +# 2043| getQualifier(): [VariableAccess] c +# 2043| Type = [Class] C +# 2043| ValueCategory = lvalue +# 2045| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) +# 2045| <params>: +# 2045| getParameter(0): [Parameter] a +# 2045| Type = [BoolType] bool +# 2045| getParameter(1): [Parameter] x +# 2045| Type = [IntType] int +# 2045| getParameter(2): [Parameter] y +# 2045| Type = [IntType] int +# 2045| getParameter(3): [Parameter] z +# 2045| Type = [IntType] int +# 2045| getEntryPoint(): [BlockStmt] { ... } +# 2046| getStmt(0): [ExprStmt] ExprStmt +# 2046| getExpr(): [AssignExpr] ... = ... +# 2046| Type = [IntType] int +# 2046| ValueCategory = lvalue +# 2046| getLValue(): [VariableAccess] z +# 2046| Type = [IntType] int +# 2046| ValueCategory = lvalue +# 2046| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2046| Type = [IntType] int +# 2046| ValueCategory = prvalue(load) +# 2046| getCondition(): [VariableAccess] a +# 2046| Type = [BoolType] bool +# 2046| ValueCategory = prvalue(load) +# 2046| getThen(): [VariableAccess] x +# 2046| Type = [IntType] int +# 2046| ValueCategory = prvalue(load) +# 2046| getElse(): [VariableAccess] y +# 2046| Type = [IntType] int +# 2046| ValueCategory = prvalue(load) +# 2047| getStmt(1): [ExprStmt] ExprStmt +# 2047| getExpr(): [AssignExpr] ... = ... +# 2047| Type = [IntType] int +# 2047| ValueCategory = lvalue +# 2047| getLValue(): [VariableAccess] z +# 2047| Type = [IntType] int +# 2047| ValueCategory = lvalue +# 2047| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2047| Type = [IntType] int +# 2047| ValueCategory = prvalue(load) +# 2047| getCondition(): [VariableAccess] a +# 2047| Type = [BoolType] bool +# 2047| ValueCategory = prvalue(load) +# 2047| getThen(): [VariableAccess] x +# 2047| Type = [IntType] int +# 2047| ValueCategory = prvalue(load) +# 2047| getElse(): [Literal] 5 +# 2047| Type = [IntType] int +# 2047| Value = [Literal] 5 +# 2047| ValueCategory = prvalue +# 2048| getStmt(2): [ExprStmt] ExprStmt +# 2048| getExpr(): [AssignExpr] ... = ... +# 2048| Type = [IntType] int +# 2048| ValueCategory = lvalue +# 2048| getLValue(): [VariableAccess] z +# 2048| Type = [IntType] int +# 2048| ValueCategory = lvalue +# 2048| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2048| Type = [IntType] int +# 2048| ValueCategory = prvalue +# 2048| getCondition(): [VariableAccess] a +# 2048| Type = [BoolType] bool +# 2048| ValueCategory = prvalue(load) +# 2048| getThen(): [Literal] 3 +# 2048| Type = [IntType] int +# 2048| Value = [Literal] 3 +# 2048| ValueCategory = prvalue +# 2048| getElse(): [Literal] 5 +# 2048| Type = [IntType] int +# 2048| Value = [Literal] 5 +# 2048| ValueCategory = prvalue +# 2049| getStmt(3): [ExprStmt] ExprStmt +# 2049| getExpr(): [AssignExpr] ... = ... +# 2049| Type = [IntType] int +# 2049| ValueCategory = lvalue +# 2049| getLValue(): [ConditionalExpr] ... ? ... : ... +# 2049| Type = [IntType] int +# 2049| ValueCategory = lvalue +# 2049| getCondition(): [VariableAccess] a +# 2049| Type = [BoolType] bool +# 2049| ValueCategory = prvalue(load) +# 2049| getThen(): [VariableAccess] x +# 2049| Type = [IntType] int +# 2049| ValueCategory = lvalue +# 2049| getElse(): [VariableAccess] y +# 2049| Type = [IntType] int +# 2049| ValueCategory = lvalue +# 2049| getRValue(): [Literal] 7 +# 2049| Type = [IntType] int +# 2049| Value = [Literal] 7 +# 2049| ValueCategory = prvalue +# 2049| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2049| Type = [IntType] int +# 2049| ValueCategory = lvalue +# 2050| getStmt(4): [ReturnStmt] return ... +# 2052| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) +# 2052| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryPodObj & -# 2005| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) -# 2005| <params>: +# 2052| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) +# 2052| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] TernaryPodObj && -# 2008| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2008| <params>: -# 2008| getParameter(0): [Parameter] a -# 2008| Type = [BoolType] bool -# 2008| getParameter(1): [Parameter] x -# 2008| Type = [Struct] TernaryPodObj -# 2008| getParameter(2): [Parameter] y -# 2008| Type = [Struct] TernaryPodObj -# 2008| getParameter(3): [Parameter] z -# 2008| Type = [Struct] TernaryPodObj -# 2008| getEntryPoint(): [BlockStmt] { ... } -# 2009| getStmt(0): [ExprStmt] ExprStmt -# 2009| getExpr(): [AssignExpr] ... = ... -# 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = lvalue -# 2009| getLValue(): [VariableAccess] z -# 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = lvalue -# 2009| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = prvalue(load) -# 2009| getCondition(): [VariableAccess] a -# 2009| Type = [BoolType] bool -# 2009| ValueCategory = prvalue(load) -# 2009| getThen(): [VariableAccess] x -# 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = prvalue(load) -# 2009| getElse(): [VariableAccess] y -# 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = prvalue(load) -# 2010| getStmt(1): [ExprStmt] ExprStmt -# 2010| getExpr(): [AssignExpr] ... = ... -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = lvalue -# 2010| getLValue(): [VariableAccess] z -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = lvalue -# 2010| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue -# 2010| getCondition(): [VariableAccess] a -# 2010| Type = [BoolType] bool -# 2010| ValueCategory = prvalue(load) -# 2010| getThen(): [VariableAccess] x -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue(load) -# 2010| getElse(): [Literal] 0 -# 2010| Type = [Struct] TernaryPodObj -# 2010| Value = [Literal] 0 -# 2010| ValueCategory = prvalue -# 2010| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue(load) -# 2010| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue(load) -# 2010| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue(load) -# 2011| getStmt(2): [ExprStmt] ExprStmt -# 2011| getExpr(): [AssignExpr] ... = ... -# 2011| Type = [Struct] TernaryPodObj -# 2011| ValueCategory = lvalue -# 2011| getLValue(): [VariableAccess] z -# 2011| Type = [Struct] TernaryPodObj -# 2011| ValueCategory = lvalue -# 2011| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2011| Type = [Struct] TernaryPodObj -# 2011| ValueCategory = prvalue -# 2011| getCondition(): [VariableAccess] a -# 2011| Type = [BoolType] bool -# 2011| ValueCategory = prvalue(load) -# 2011| getThen(): [Literal] 0 -# 2011| Type = [Struct] TernaryPodObj -# 2011| Value = [Literal] 0 -# 2011| ValueCategory = prvalue -# 2011| getElse(): [Literal] 0 -# 2011| Type = [Struct] TernaryPodObj -# 2011| Value = [Literal] 0 -# 2011| ValueCategory = prvalue -# 2011| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2011| Type = [Struct] TernaryPodObj -# 2011| ValueCategory = prvalue(load) -# 2011| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2011| Type = [Struct] TernaryPodObj -# 2011| ValueCategory = prvalue(load) -# 2011| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2011| Type = [Struct] TernaryPodObj -# 2011| ValueCategory = prvalue(load) -# 2012| getStmt(3): [ExprStmt] ExprStmt -# 2012| getExpr(): [AssignExpr] ... = ... -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = lvalue -# 2012| getLValue(): [AssignExpr] ... = ... -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = lvalue -# 2012| getLValue(): [VariableAccess] z -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = lvalue -# 2012| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = prvalue(load) -# 2012| getCondition(): [VariableAccess] a -# 2012| Type = [BoolType] bool -# 2012| ValueCategory = prvalue(load) -# 2012| getThen(): [VariableAccess] x -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = prvalue(load) -# 2012| getElse(): [VariableAccess] y -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = prvalue(load) -# 2012| getRValue(): [Literal] 0 -# 2012| Type = [Struct] TernaryPodObj -# 2012| Value = [Literal] 0 -# 2012| ValueCategory = prvalue -# 2012| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = lvalue -# 2012| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2012| Type = [Struct] TernaryPodObj -# 2012| ValueCategory = prvalue(load) -# 2013| getStmt(4): [ReturnStmt] return ... -# 2015| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2015| <params>: +# 2055| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2055| <params>: +# 2055| getParameter(0): [Parameter] a +# 2055| Type = [BoolType] bool +# 2055| getParameter(1): [Parameter] x +# 2055| Type = [Struct] TernaryPodObj +# 2055| getParameter(2): [Parameter] y +# 2055| Type = [Struct] TernaryPodObj +# 2055| getParameter(3): [Parameter] z +# 2055| Type = [Struct] TernaryPodObj +# 2055| getEntryPoint(): [BlockStmt] { ... } +# 2056| getStmt(0): [ExprStmt] ExprStmt +# 2056| getExpr(): [AssignExpr] ... = ... +# 2056| Type = [Struct] TernaryPodObj +# 2056| ValueCategory = lvalue +# 2056| getLValue(): [VariableAccess] z +# 2056| Type = [Struct] TernaryPodObj +# 2056| ValueCategory = lvalue +# 2056| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2056| Type = [Struct] TernaryPodObj +# 2056| ValueCategory = prvalue(load) +# 2056| getCondition(): [VariableAccess] a +# 2056| Type = [BoolType] bool +# 2056| ValueCategory = prvalue(load) +# 2056| getThen(): [VariableAccess] x +# 2056| Type = [Struct] TernaryPodObj +# 2056| ValueCategory = prvalue(load) +# 2056| getElse(): [VariableAccess] y +# 2056| Type = [Struct] TernaryPodObj +# 2056| ValueCategory = prvalue(load) +# 2057| getStmt(1): [ExprStmt] ExprStmt +# 2057| getExpr(): [AssignExpr] ... = ... +# 2057| Type = [Struct] TernaryPodObj +# 2057| ValueCategory = lvalue +# 2057| getLValue(): [VariableAccess] z +# 2057| Type = [Struct] TernaryPodObj +# 2057| ValueCategory = lvalue +# 2057| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2057| Type = [Struct] TernaryPodObj +# 2057| ValueCategory = prvalue +# 2057| getCondition(): [VariableAccess] a +# 2057| Type = [BoolType] bool +# 2057| ValueCategory = prvalue(load) +# 2057| getThen(): [VariableAccess] x +# 2057| Type = [Struct] TernaryPodObj +# 2057| ValueCategory = prvalue(load) +# 2057| getElse(): [Literal] 0 +# 2057| Type = [Struct] TernaryPodObj +# 2057| Value = [Literal] 0 +# 2057| ValueCategory = prvalue +# 2057| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2057| Type = [Struct] TernaryPodObj +# 2057| ValueCategory = prvalue(load) +# 2057| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2057| Type = [Struct] TernaryPodObj +# 2057| ValueCategory = prvalue(load) +# 2057| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2057| Type = [Struct] TernaryPodObj +# 2057| ValueCategory = prvalue(load) +# 2058| getStmt(2): [ExprStmt] ExprStmt +# 2058| getExpr(): [AssignExpr] ... = ... +# 2058| Type = [Struct] TernaryPodObj +# 2058| ValueCategory = lvalue +# 2058| getLValue(): [VariableAccess] z +# 2058| Type = [Struct] TernaryPodObj +# 2058| ValueCategory = lvalue +# 2058| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2058| Type = [Struct] TernaryPodObj +# 2058| ValueCategory = prvalue +# 2058| getCondition(): [VariableAccess] a +# 2058| Type = [BoolType] bool +# 2058| ValueCategory = prvalue(load) +# 2058| getThen(): [Literal] 0 +# 2058| Type = [Struct] TernaryPodObj +# 2058| Value = [Literal] 0 +# 2058| ValueCategory = prvalue +# 2058| getElse(): [Literal] 0 +# 2058| Type = [Struct] TernaryPodObj +# 2058| Value = [Literal] 0 +# 2058| ValueCategory = prvalue +# 2058| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2058| Type = [Struct] TernaryPodObj +# 2058| ValueCategory = prvalue(load) +# 2058| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2058| Type = [Struct] TernaryPodObj +# 2058| ValueCategory = prvalue(load) +# 2058| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2058| Type = [Struct] TernaryPodObj +# 2058| ValueCategory = prvalue(load) +# 2059| getStmt(3): [ExprStmt] ExprStmt +# 2059| getExpr(): [AssignExpr] ... = ... +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = lvalue +# 2059| getLValue(): [AssignExpr] ... = ... +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = lvalue +# 2059| getLValue(): [VariableAccess] z +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = lvalue +# 2059| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = prvalue(load) +# 2059| getCondition(): [VariableAccess] a +# 2059| Type = [BoolType] bool +# 2059| ValueCategory = prvalue(load) +# 2059| getThen(): [VariableAccess] x +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = prvalue(load) +# 2059| getElse(): [VariableAccess] y +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = prvalue(load) +# 2059| getRValue(): [Literal] 0 +# 2059| Type = [Struct] TernaryPodObj +# 2059| Value = [Literal] 0 +# 2059| ValueCategory = prvalue +# 2059| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = lvalue +# 2059| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2059| Type = [Struct] TernaryPodObj +# 2059| ValueCategory = prvalue(load) +# 2060| getStmt(4): [ReturnStmt] return ... +# 2062| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2062| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & #-----| getEntryPoint(): [BlockStmt] { ... } @@ -15983,979 +16101,979 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] TernaryNonPodObj & #-----| ValueCategory = prvalue -# 2015| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() -# 2015| <params>: -# 2015| <initializations>: -# 2015| getEntryPoint(): [BlockStmt] { ... } -# 2015| getStmt(0): [ReturnStmt] return ... -# 2015| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2015| <params>: +# 2062| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() +# 2062| <params>: +# 2062| <initializations>: +# 2062| getEntryPoint(): [BlockStmt] { ... } +# 2062| getStmt(0): [ReturnStmt] return ... +# 2062| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2062| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2015| <initializations>: -# 2015| getEntryPoint(): [BlockStmt] { ... } -# 2015| getStmt(0): [ReturnStmt] return ... -# 2016| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() -# 2016| <params>: -# 2016| getEntryPoint(): [BlockStmt] { ... } -# 2016| getStmt(0): [ReturnStmt] return ... -# 2016| <destructions>: -# 2019| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2019| <params>: -# 2019| getParameter(0): [Parameter] a -# 2019| Type = [BoolType] bool -# 2019| getParameter(1): [Parameter] x -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| getParameter(2): [Parameter] y -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| getParameter(3): [Parameter] z -# 2019| Type = [Struct] TernaryNonPodObj -# 2019| getEntryPoint(): [BlockStmt] { ... } -# 2020| getStmt(0): [ExprStmt] ExprStmt -# 2020| getExpr(): [FunctionCall] call to operator= -# 2020| Type = [LValueReferenceType] TernaryNonPodObj & -# 2020| ValueCategory = prvalue -# 2020| getQualifier(): [VariableAccess] z -# 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = lvalue -# 2020| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = lvalue -# 2020| getCondition(): [VariableAccess] a -# 2020| Type = [BoolType] bool -# 2020| ValueCategory = prvalue(load) -# 2020| getThen(): [VariableAccess] x -# 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = lvalue -# 2020| getElse(): [VariableAccess] y -# 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = lvalue -# 2020| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2020| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2020| ValueCategory = prvalue -# 2020| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2020| Conversion = [GlvalueConversion] glvalue conversion -# 2020| Type = [SpecifiedType] const TernaryNonPodObj -# 2020| ValueCategory = lvalue -# 2020| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = lvalue -# 2021| getStmt(1): [ExprStmt] ExprStmt -# 2021| getExpr(): [FunctionCall] call to operator= -# 2021| Type = [LValueReferenceType] TernaryNonPodObj & -# 2021| ValueCategory = prvalue -# 2021| getQualifier(): [VariableAccess] z -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = prvalue -# 2021| getCondition(): [VariableAccess] a -# 2021| Type = [BoolType] bool -# 2021| ValueCategory = prvalue(load) -# 2021| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2021| Type = [VoidType] void -# 2021| ValueCategory = prvalue -# 2021| getArgument(0): [VariableAccess] x -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2021| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2021| ValueCategory = prvalue -# 2021| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2021| Conversion = [GlvalueConversion] glvalue conversion -# 2021| Type = [SpecifiedType] const TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2021| Type = [VoidType] void -# 2021| ValueCategory = prvalue -# 2021| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = prvalue(load) -# 2021| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = prvalue(load) -# 2021| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2021| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2021| ValueCategory = prvalue -# 2021| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2021| Conversion = [GlvalueConversion] glvalue conversion -# 2021| Type = [SpecifiedType] const TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getExpr(): [TemporaryObjectExpr] temporary object -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2021| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2021| Type = [Struct] TernaryNonPodObj -# 2021| ValueCategory = lvalue -# 2022| getStmt(2): [ExprStmt] ExprStmt -# 2022| getExpr(): [FunctionCall] call to operator= -# 2022| Type = [LValueReferenceType] TernaryNonPodObj & -# 2022| ValueCategory = prvalue -# 2022| getQualifier(): [VariableAccess] z -# 2022| Type = [Struct] TernaryNonPodObj -# 2022| ValueCategory = lvalue -# 2022| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2022| Type = [Struct] TernaryNonPodObj -# 2022| ValueCategory = prvalue -# 2022| getCondition(): [VariableAccess] a -# 2022| Type = [BoolType] bool -# 2022| ValueCategory = prvalue(load) -# 2022| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2022| Type = [VoidType] void -# 2022| ValueCategory = prvalue -# 2022| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2022| Type = [VoidType] void -# 2022| ValueCategory = prvalue -# 2022| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2022| Type = [Struct] TernaryNonPodObj -# 2022| ValueCategory = prvalue(load) -# 2022| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2022| Type = [Struct] TernaryNonPodObj -# 2022| ValueCategory = prvalue(load) -# 2022| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2022| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2022| ValueCategory = prvalue -# 2022| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2022| Conversion = [GlvalueConversion] glvalue conversion -# 2022| Type = [SpecifiedType] const TernaryNonPodObj -# 2022| ValueCategory = lvalue -# 2022| getExpr(): [TemporaryObjectExpr] temporary object -# 2022| Type = [Struct] TernaryNonPodObj -# 2022| ValueCategory = lvalue -# 2022| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2022| Type = [Struct] TernaryNonPodObj -# 2022| ValueCategory = lvalue -# 2023| getStmt(3): [ExprStmt] ExprStmt -# 2023| getExpr(): [FunctionCall] call to operator= -# 2023| Type = [LValueReferenceType] TernaryNonPodObj & -# 2023| ValueCategory = prvalue -# 2023| getQualifier(): [FunctionCall] call to operator= -# 2023| Type = [LValueReferenceType] TernaryNonPodObj & -# 2023| ValueCategory = prvalue -# 2023| getQualifier(): [VariableAccess] z -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getCondition(): [VariableAccess] a -# 2023| Type = [BoolType] bool -# 2023| ValueCategory = prvalue(load) -# 2023| getThen(): [VariableAccess] x -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getElse(): [VariableAccess] y -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2023| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2023| ValueCategory = prvalue -# 2023| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2023| Conversion = [GlvalueConversion] glvalue conversion -# 2023| Type = [SpecifiedType] const TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getArgument(0): [ConstructorCall] call to TernaryNonPodObj -# 2023| Type = [VoidType] void -# 2023| ValueCategory = prvalue -# 2023| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2023| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2023| ValueCategory = prvalue -# 2023| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2023| Conversion = [GlvalueConversion] glvalue conversion -# 2023| Type = [SpecifiedType] const TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getExpr(): [TemporaryObjectExpr] temporary object -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2023| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2023| Type = [Struct] TernaryNonPodObj -# 2023| ValueCategory = lvalue -# 2024| getStmt(4): [ReturnStmt] return ... -# 2026| [TopLevelFunction] void CommaTestHelper(unsigned int) -# 2026| <params>: -# 2026| getParameter(0): [Parameter] (unnamed parameter 0) -# 2026| Type = [IntType] unsigned int -# 2028| [TopLevelFunction] unsigned int CommaTest(unsigned int) -# 2028| <params>: -# 2028| getParameter(0): [Parameter] x -# 2028| Type = [IntType] unsigned int -# 2028| getEntryPoint(): [BlockStmt] { ... } -# 2029| getStmt(0): [DeclStmt] declaration -# 2029| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2029| Type = [IntType] unsigned int -# 2030| getStmt(1): [ExprStmt] ExprStmt -# 2030| getExpr(): [AssignExpr] ... = ... -# 2030| Type = [IntType] unsigned int -# 2030| ValueCategory = lvalue -# 2030| getLValue(): [VariableAccess] y -# 2030| Type = [IntType] unsigned int -# 2030| ValueCategory = lvalue -# 2030| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2030| Type = [IntType] unsigned int -# 2030| ValueCategory = prvalue(load) -# 2030| getCondition(): [LTExpr] ... < ... -# 2030| Type = [BoolType] bool -# 2030| ValueCategory = prvalue -# 2030| getLesserOperand(): [VariableAccess] x -# 2030| Type = [IntType] unsigned int -# 2030| ValueCategory = prvalue(load) -# 2030| getGreaterOperand(): [Literal] 100 -# 2030| Type = [IntType] int -# 2030| Value = [Literal] 100 -# 2030| ValueCategory = prvalue -# 2030| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2030| Conversion = [IntegralConversion] integral conversion -# 2030| Type = [IntType] unsigned int -# 2030| Value = [CStyleCast] 100 -# 2030| ValueCategory = prvalue -# 2031| getThen(): [CommaExpr] ... , ... -# 2031| Type = [IntType] unsigned int -# 2031| ValueCategory = prvalue(load) -# 2031| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2031| Type = [VoidType] void -# 2031| ValueCategory = prvalue -# 2031| getArgument(0): [VariableAccess] x -# 2031| Type = [IntType] unsigned int -# 2031| ValueCategory = prvalue(load) -# 2031| getRightOperand(): [VariableAccess] x -# 2031| Type = [IntType] unsigned int -# 2031| ValueCategory = prvalue(load) -# 2032| getElse(): [CommaExpr] ... , ... -# 2032| Type = [IntType] int -# 2032| ValueCategory = prvalue -# 2032| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2032| Type = [VoidType] void -# 2032| ValueCategory = prvalue -# 2032| getArgument(0): [VariableAccess] x -# 2032| Type = [IntType] unsigned int -# 2032| ValueCategory = prvalue(load) -# 2032| getRightOperand(): [Literal] 10 -# 2032| Type = [IntType] int -# 2032| Value = [Literal] 10 -# 2032| ValueCategory = prvalue -# 2031| getThen().getFullyConverted(): [ParenthesisExpr] (...) -# 2031| Type = [IntType] unsigned int -# 2031| ValueCategory = prvalue(load) -# 2032| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2032| Conversion = [IntegralConversion] integral conversion -# 2032| Type = [IntType] unsigned int -# 2032| ValueCategory = prvalue -# 2032| getExpr(): [ParenthesisExpr] (...) -# 2032| Type = [IntType] int -# 2032| ValueCategory = prvalue -# 2033| getStmt(2): [ReturnStmt] return ... -# 2035| [TopLevelFunction] void NewDeleteMem() -# 2035| <params>: -# 2035| getEntryPoint(): [BlockStmt] { ... } -# 2036| getStmt(0): [DeclStmt] declaration -# 2036| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2036| Type = [IntPointerType] int * -# 2036| getVariable().getInitializer(): [Initializer] initializer for x -# 2036| getExpr(): [NewExpr] new -# 2036| Type = [IntPointerType] int * -# 2036| ValueCategory = prvalue -# 2037| getStmt(1): [ExprStmt] ExprStmt -# 2037| getExpr(): [AssignExpr] ... = ... -# 2037| Type = [IntType] int -# 2037| ValueCategory = lvalue -# 2037| getLValue(): [PointerDereferenceExpr] * ... -# 2037| Type = [IntType] int -# 2037| ValueCategory = lvalue -# 2037| getOperand(): [VariableAccess] x -# 2037| Type = [IntPointerType] int * -# 2037| ValueCategory = prvalue(load) -# 2037| getRValue(): [Literal] 6 -# 2037| Type = [IntType] int -# 2037| Value = [Literal] 6 -# 2037| ValueCategory = prvalue -# 2038| getStmt(2): [ExprStmt] ExprStmt -# 2038| getExpr(): [DeleteExpr] delete -# 2038| Type = [VoidType] void -# 2038| ValueCategory = prvalue -# 2038| getExpr(): [VariableAccess] x -# 2038| Type = [IntPointerType] int * -# 2038| ValueCategory = prvalue(load) -# 2039| getStmt(3): [ReturnStmt] return ... -# 2041| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) -# 2041| <params>: +# 2062| <initializations>: +# 2062| getEntryPoint(): [BlockStmt] { ... } +# 2062| getStmt(0): [ReturnStmt] return ... +# 2063| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() +# 2063| <params>: +# 2063| getEntryPoint(): [BlockStmt] { ... } +# 2063| getStmt(0): [ReturnStmt] return ... +# 2063| <destructions>: +# 2066| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2066| <params>: +# 2066| getParameter(0): [Parameter] a +# 2066| Type = [BoolType] bool +# 2066| getParameter(1): [Parameter] x +# 2066| Type = [Struct] TernaryNonPodObj +# 2066| getParameter(2): [Parameter] y +# 2066| Type = [Struct] TernaryNonPodObj +# 2066| getParameter(3): [Parameter] z +# 2066| Type = [Struct] TernaryNonPodObj +# 2066| getEntryPoint(): [BlockStmt] { ... } +# 2067| getStmt(0): [ExprStmt] ExprStmt +# 2067| getExpr(): [FunctionCall] call to operator= +# 2067| Type = [LValueReferenceType] TernaryNonPodObj & +# 2067| ValueCategory = prvalue +# 2067| getQualifier(): [VariableAccess] z +# 2067| Type = [Struct] TernaryNonPodObj +# 2067| ValueCategory = lvalue +# 2067| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2067| Type = [Struct] TernaryNonPodObj +# 2067| ValueCategory = lvalue +# 2067| getCondition(): [VariableAccess] a +# 2067| Type = [BoolType] bool +# 2067| ValueCategory = prvalue(load) +# 2067| getThen(): [VariableAccess] x +# 2067| Type = [Struct] TernaryNonPodObj +# 2067| ValueCategory = lvalue +# 2067| getElse(): [VariableAccess] y +# 2067| Type = [Struct] TernaryNonPodObj +# 2067| ValueCategory = lvalue +# 2067| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2067| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2067| ValueCategory = prvalue +# 2067| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2067| Conversion = [GlvalueConversion] glvalue conversion +# 2067| Type = [SpecifiedType] const TernaryNonPodObj +# 2067| ValueCategory = lvalue +# 2067| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2067| Type = [Struct] TernaryNonPodObj +# 2067| ValueCategory = lvalue +# 2068| getStmt(1): [ExprStmt] ExprStmt +# 2068| getExpr(): [FunctionCall] call to operator= +# 2068| Type = [LValueReferenceType] TernaryNonPodObj & +# 2068| ValueCategory = prvalue +# 2068| getQualifier(): [VariableAccess] z +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = lvalue +# 2068| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = prvalue +# 2068| getCondition(): [VariableAccess] a +# 2068| Type = [BoolType] bool +# 2068| ValueCategory = prvalue(load) +# 2068| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2068| Type = [VoidType] void +# 2068| ValueCategory = prvalue +# 2068| getArgument(0): [VariableAccess] x +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = lvalue +# 2068| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2068| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2068| ValueCategory = prvalue +# 2068| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2068| Conversion = [GlvalueConversion] glvalue conversion +# 2068| Type = [SpecifiedType] const TernaryNonPodObj +# 2068| ValueCategory = lvalue +# 2068| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2068| Type = [VoidType] void +# 2068| ValueCategory = prvalue +# 2068| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = prvalue(load) +# 2068| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = prvalue(load) +# 2068| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2068| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2068| ValueCategory = prvalue +# 2068| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2068| Conversion = [GlvalueConversion] glvalue conversion +# 2068| Type = [SpecifiedType] const TernaryNonPodObj +# 2068| ValueCategory = lvalue +# 2068| getExpr(): [TemporaryObjectExpr] temporary object +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = lvalue +# 2068| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = lvalue +# 2069| getStmt(2): [ExprStmt] ExprStmt +# 2069| getExpr(): [FunctionCall] call to operator= +# 2069| Type = [LValueReferenceType] TernaryNonPodObj & +# 2069| ValueCategory = prvalue +# 2069| getQualifier(): [VariableAccess] z +# 2069| Type = [Struct] TernaryNonPodObj +# 2069| ValueCategory = lvalue +# 2069| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2069| Type = [Struct] TernaryNonPodObj +# 2069| ValueCategory = prvalue +# 2069| getCondition(): [VariableAccess] a +# 2069| Type = [BoolType] bool +# 2069| ValueCategory = prvalue(load) +# 2069| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2069| Type = [VoidType] void +# 2069| ValueCategory = prvalue +# 2069| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2069| Type = [VoidType] void +# 2069| ValueCategory = prvalue +# 2069| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2069| Type = [Struct] TernaryNonPodObj +# 2069| ValueCategory = prvalue(load) +# 2069| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2069| Type = [Struct] TernaryNonPodObj +# 2069| ValueCategory = prvalue(load) +# 2069| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2069| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2069| ValueCategory = prvalue +# 2069| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2069| Conversion = [GlvalueConversion] glvalue conversion +# 2069| Type = [SpecifiedType] const TernaryNonPodObj +# 2069| ValueCategory = lvalue +# 2069| getExpr(): [TemporaryObjectExpr] temporary object +# 2069| Type = [Struct] TernaryNonPodObj +# 2069| ValueCategory = lvalue +# 2069| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2069| Type = [Struct] TernaryNonPodObj +# 2069| ValueCategory = lvalue +# 2070| getStmt(3): [ExprStmt] ExprStmt +# 2070| getExpr(): [FunctionCall] call to operator= +# 2070| Type = [LValueReferenceType] TernaryNonPodObj & +# 2070| ValueCategory = prvalue +# 2070| getQualifier(): [FunctionCall] call to operator= +# 2070| Type = [LValueReferenceType] TernaryNonPodObj & +# 2070| ValueCategory = prvalue +# 2070| getQualifier(): [VariableAccess] z +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getCondition(): [VariableAccess] a +# 2070| Type = [BoolType] bool +# 2070| ValueCategory = prvalue(load) +# 2070| getThen(): [VariableAccess] x +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getElse(): [VariableAccess] y +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2070| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2070| ValueCategory = prvalue +# 2070| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2070| Conversion = [GlvalueConversion] glvalue conversion +# 2070| Type = [SpecifiedType] const TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getArgument(0): [ConstructorCall] call to TernaryNonPodObj +# 2070| Type = [VoidType] void +# 2070| ValueCategory = prvalue +# 2070| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2070| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2070| ValueCategory = prvalue +# 2070| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2070| Conversion = [GlvalueConversion] glvalue conversion +# 2070| Type = [SpecifiedType] const TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getExpr(): [TemporaryObjectExpr] temporary object +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2070| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = lvalue +# 2071| getStmt(4): [ReturnStmt] return ... +# 2073| [TopLevelFunction] void CommaTestHelper(unsigned int) +# 2073| <params>: +# 2073| getParameter(0): [Parameter] (unnamed parameter 0) +# 2073| Type = [IntType] unsigned int +# 2075| [TopLevelFunction] unsigned int CommaTest(unsigned int) +# 2075| <params>: +# 2075| getParameter(0): [Parameter] x +# 2075| Type = [IntType] unsigned int +# 2075| getEntryPoint(): [BlockStmt] { ... } +# 2076| getStmt(0): [DeclStmt] declaration +# 2076| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2076| Type = [IntType] unsigned int +# 2077| getStmt(1): [ExprStmt] ExprStmt +# 2077| getExpr(): [AssignExpr] ... = ... +# 2077| Type = [IntType] unsigned int +# 2077| ValueCategory = lvalue +# 2077| getLValue(): [VariableAccess] y +# 2077| Type = [IntType] unsigned int +# 2077| ValueCategory = lvalue +# 2077| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2077| Type = [IntType] unsigned int +# 2077| ValueCategory = prvalue(load) +# 2077| getCondition(): [LTExpr] ... < ... +# 2077| Type = [BoolType] bool +# 2077| ValueCategory = prvalue +# 2077| getLesserOperand(): [VariableAccess] x +# 2077| Type = [IntType] unsigned int +# 2077| ValueCategory = prvalue(load) +# 2077| getGreaterOperand(): [Literal] 100 +# 2077| Type = [IntType] int +# 2077| Value = [Literal] 100 +# 2077| ValueCategory = prvalue +# 2077| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2077| Conversion = [IntegralConversion] integral conversion +# 2077| Type = [IntType] unsigned int +# 2077| Value = [CStyleCast] 100 +# 2077| ValueCategory = prvalue +# 2078| getThen(): [CommaExpr] ... , ... +# 2078| Type = [IntType] unsigned int +# 2078| ValueCategory = prvalue(load) +# 2078| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2078| Type = [VoidType] void +# 2078| ValueCategory = prvalue +# 2078| getArgument(0): [VariableAccess] x +# 2078| Type = [IntType] unsigned int +# 2078| ValueCategory = prvalue(load) +# 2078| getRightOperand(): [VariableAccess] x +# 2078| Type = [IntType] unsigned int +# 2078| ValueCategory = prvalue(load) +# 2079| getElse(): [CommaExpr] ... , ... +# 2079| Type = [IntType] int +# 2079| ValueCategory = prvalue +# 2079| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2079| Type = [VoidType] void +# 2079| ValueCategory = prvalue +# 2079| getArgument(0): [VariableAccess] x +# 2079| Type = [IntType] unsigned int +# 2079| ValueCategory = prvalue(load) +# 2079| getRightOperand(): [Literal] 10 +# 2079| Type = [IntType] int +# 2079| Value = [Literal] 10 +# 2079| ValueCategory = prvalue +# 2078| getThen().getFullyConverted(): [ParenthesisExpr] (...) +# 2078| Type = [IntType] unsigned int +# 2078| ValueCategory = prvalue(load) +# 2079| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2079| Conversion = [IntegralConversion] integral conversion +# 2079| Type = [IntType] unsigned int +# 2079| ValueCategory = prvalue +# 2079| getExpr(): [ParenthesisExpr] (...) +# 2079| Type = [IntType] int +# 2079| ValueCategory = prvalue +# 2080| getStmt(2): [ReturnStmt] return ... +# 2082| [TopLevelFunction] void NewDeleteMem() +# 2082| <params>: +# 2082| getEntryPoint(): [BlockStmt] { ... } +# 2083| getStmt(0): [DeclStmt] declaration +# 2083| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2083| Type = [IntPointerType] int * +# 2083| getVariable().getInitializer(): [Initializer] initializer for x +# 2083| getExpr(): [NewExpr] new +# 2083| Type = [IntPointerType] int * +# 2083| ValueCategory = prvalue +# 2084| getStmt(1): [ExprStmt] ExprStmt +# 2084| getExpr(): [AssignExpr] ... = ... +# 2084| Type = [IntType] int +# 2084| ValueCategory = lvalue +# 2084| getLValue(): [PointerDereferenceExpr] * ... +# 2084| Type = [IntType] int +# 2084| ValueCategory = lvalue +# 2084| getOperand(): [VariableAccess] x +# 2084| Type = [IntPointerType] int * +# 2084| ValueCategory = prvalue(load) +# 2084| getRValue(): [Literal] 6 +# 2084| Type = [IntType] int +# 2084| Value = [Literal] 6 +# 2084| ValueCategory = prvalue +# 2085| getStmt(2): [ExprStmt] ExprStmt +# 2085| getExpr(): [DeleteExpr] delete +# 2085| Type = [VoidType] void +# 2085| ValueCategory = prvalue +# 2085| getExpr(): [VariableAccess] x +# 2085| Type = [IntPointerType] int * +# 2085| ValueCategory = prvalue(load) +# 2086| getStmt(3): [ReturnStmt] return ... +# 2088| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) +# 2088| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Base2 & -# 2041| [Constructor] void Base2::Base2() -# 2041| <params>: -# 2041| <initializations>: -# 2041| getEntryPoint(): [BlockStmt] { ... } -# 2041| getStmt(0): [ReturnStmt] return ... -# 2041| [CopyConstructor] void Base2::Base2(Base2 const&) -# 2041| <params>: +# 2088| [Constructor] void Base2::Base2() +# 2088| <params>: +# 2088| <initializations>: +# 2088| getEntryPoint(): [BlockStmt] { ... } +# 2088| getStmt(0): [ReturnStmt] return ... +# 2088| [CopyConstructor] void Base2::Base2(Base2 const&) +# 2088| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Base2 & -# 2043| [MemberFunction] void Base2::operator delete(void*) -# 2043| <params>: -# 2043| getParameter(0): [Parameter] p -# 2043| Type = [VoidPointerType] void * -# 2043| getEntryPoint(): [BlockStmt] { ... } -# 2044| getStmt(0): [ReturnStmt] return ... -# 2045| [Destructor,VirtualFunction] void Base2::~Base2() -# 2045| <params>: -# 2045| getEntryPoint(): [BlockStmt] { ... } -# 2045| getStmt(0): [ReturnStmt] return ... -# 2045| <destructions>: -# 2048| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) -# 2048| <params>: +# 2090| [MemberFunction] void Base2::operator delete(void*) +# 2090| <params>: +# 2090| getParameter(0): [Parameter] p +# 2090| Type = [VoidPointerType] void * +# 2090| getEntryPoint(): [BlockStmt] { ... } +# 2091| getStmt(0): [ReturnStmt] return ... +# 2092| [Destructor,VirtualFunction] void Base2::~Base2() +# 2092| <params>: +# 2092| getEntryPoint(): [BlockStmt] { ... } +# 2092| getStmt(0): [ReturnStmt] return ... +# 2092| <destructions>: +# 2095| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) +# 2095| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2048| [Constructor] void Derived2::Derived2() -# 2048| <params>: -# 2048| <initializations>: -# 2048| getInitializer(0): [ConstructorDirectInit] call to Base2 -# 2048| Type = [VoidType] void -# 2048| ValueCategory = prvalue -# 2048| getEntryPoint(): [BlockStmt] { ... } -# 2048| getStmt(0): [ReturnStmt] return ... -# 2048| [CopyConstructor] void Derived2::Derived2(Derived2 const&) -# 2048| <params>: +# 2095| [Constructor] void Derived2::Derived2() +# 2095| <params>: +# 2095| <initializations>: +# 2095| getInitializer(0): [ConstructorDirectInit] call to Base2 +# 2095| Type = [VoidType] void +# 2095| ValueCategory = prvalue +# 2095| getEntryPoint(): [BlockStmt] { ... } +# 2095| getStmt(0): [ReturnStmt] return ... +# 2095| [CopyConstructor] void Derived2::Derived2(Derived2 const&) +# 2095| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2051| [Destructor,VirtualFunction] void Derived2::~Derived2() -# 2051| <params>: -# 2051| getEntryPoint(): [BlockStmt] { ... } -# 2051| getStmt(0): [ReturnStmt] return ... -# 2051| <destructions>: -# 2051| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 -# 2051| Type = [VoidType] void -# 2051| ValueCategory = prvalue -# 2053| [MemberFunction] void Derived2::operator delete(void*) -# 2053| <params>: -# 2053| getParameter(0): [Parameter] p -# 2053| Type = [VoidPointerType] void * -# 2053| getEntryPoint(): [BlockStmt] { ... } -# 2054| getStmt(0): [ReturnStmt] return ... -# 2058| [TopLevelFunction] int virtual_delete() -# 2058| <params>: -# 2059| getEntryPoint(): [BlockStmt] { ... } -# 2060| getStmt(0): [DeclStmt] declaration -# 2060| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 -# 2060| Type = [PointerType] Base2 * -# 2060| getVariable().getInitializer(): [Initializer] initializer for b1 -# 2060| getExpr(): [NewExpr] new -# 2060| Type = [PointerType] Base2 * -# 2060| ValueCategory = prvalue -# 2060| getInitializer(): [ConstructorCall] call to Base2 -# 2060| Type = [VoidType] void -# 2060| ValueCategory = prvalue -# 2061| getStmt(1): [ExprStmt] ExprStmt -# 2061| getExpr(): [DeleteExpr] delete -# 2061| Type = [VoidType] void -# 2061| ValueCategory = prvalue -# 2061| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2061| Type = [VoidType] void -# 2061| ValueCategory = prvalue -# 2061| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2061| Type = [VoidType] void -# 2061| ValueCategory = prvalue -# 2061| getQualifier(): [VariableAccess] b1 -# 2061| Type = [PointerType] Base2 * -# 2061| ValueCategory = prvalue(load) -# 2063| getStmt(2): [DeclStmt] declaration -# 2063| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 -# 2063| Type = [PointerType] Base2 * -# 2063| getVariable().getInitializer(): [Initializer] initializer for b2 -# 2063| getExpr(): [NewExpr] new -# 2063| Type = [PointerType] Derived2 * -# 2063| ValueCategory = prvalue -# 2063| getInitializer(): [ConstructorCall] call to Derived2 -# 2063| Type = [VoidType] void -# 2063| ValueCategory = prvalue -# 2063| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... -# 2063| Conversion = [BaseClassConversion] base class conversion -# 2063| Type = [PointerType] Base2 * -# 2063| ValueCategory = prvalue -# 2064| getStmt(3): [ExprStmt] ExprStmt -# 2064| getExpr(): [DeleteExpr] delete -# 2064| Type = [VoidType] void -# 2064| ValueCategory = prvalue -# 2064| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2064| Type = [VoidType] void -# 2064| ValueCategory = prvalue -# 2064| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2064| Type = [VoidType] void -# 2064| ValueCategory = prvalue -# 2064| getQualifier(): [VariableAccess] b2 -# 2064| Type = [PointerType] Base2 * -# 2064| ValueCategory = prvalue(load) -# 2066| getStmt(4): [DeclStmt] declaration -# 2066| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2066| Type = [PointerType] Derived2 * -# 2066| getVariable().getInitializer(): [Initializer] initializer for d -# 2066| getExpr(): [NewExpr] new -# 2066| Type = [PointerType] Derived2 * -# 2066| ValueCategory = prvalue -# 2066| getInitializer(): [ConstructorCall] call to Derived2 -# 2066| Type = [VoidType] void -# 2066| ValueCategory = prvalue -# 2067| getStmt(5): [ExprStmt] ExprStmt -# 2067| getExpr(): [DeleteExpr] delete -# 2067| Type = [VoidType] void -# 2067| ValueCategory = prvalue -# 2067| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2067| Type = [VoidType] void -# 2067| ValueCategory = prvalue -# 2067| getDestructorCall(): [DestructorCall] call to ~Derived2 -# 2067| Type = [VoidType] void -# 2067| ValueCategory = prvalue -# 2067| getQualifier(): [VariableAccess] d -# 2067| Type = [PointerType] Derived2 * -# 2067| ValueCategory = prvalue(load) -# 2068| getStmt(6): [ReturnStmt] return ... -# 2070| [TopLevelFunction] void test_constant_folding_use(int) -# 2070| <params>: -# 2070| getParameter(0): [Parameter] (unnamed parameter 0) -# 2070| Type = [IntType] int -# 2072| [TopLevelFunction] void test_constant_folding() -# 2072| <params>: -# 2072| getEntryPoint(): [BlockStmt] { ... } -# 2073| getStmt(0): [DeclStmt] declaration -# 2073| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2073| Type = [SpecifiedType] const int -# 2073| getVariable().getInitializer(): [Initializer] initializer for x -# 2073| getExpr(): [Literal] 116 -# 2073| Type = [IntType] int -# 2073| Value = [Literal] 116 -# 2073| ValueCategory = prvalue -# 2074| getStmt(1): [ExprStmt] ExprStmt -# 2074| getExpr(): [FunctionCall] call to test_constant_folding_use -# 2074| Type = [VoidType] void -# 2074| ValueCategory = prvalue -# 2074| getArgument(0): [VariableAccess] x -# 2074| Type = [IntType] int -# 2074| Value = [VariableAccess] 116 -# 2074| ValueCategory = prvalue(load) -# 2075| getStmt(2): [ReturnStmt] return ... -# 2077| [TopLevelFunction] void exit(int) -# 2077| <params>: -# 2077| getParameter(0): [Parameter] code -# 2077| Type = [IntType] int -# 2079| [TopLevelFunction] int NonExit() -# 2079| <params>: -# 2079| getEntryPoint(): [BlockStmt] { ... } -# 2080| getStmt(0): [DeclStmt] declaration -# 2080| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2080| Type = [IntType] int -# 2080| getVariable().getInitializer(): [Initializer] initializer for x -# 2080| getExpr(): [FunctionCall] call to Add -# 2080| Type = [IntType] int -# 2080| ValueCategory = prvalue -# 2080| getArgument(0): [Literal] 3 -# 2080| Type = [IntType] int -# 2080| Value = [Literal] 3 -# 2080| ValueCategory = prvalue -# 2080| getArgument(1): [Literal] 4 -# 2080| Type = [IntType] int -# 2080| Value = [Literal] 4 -# 2080| ValueCategory = prvalue -# 2081| getStmt(1): [IfStmt] if (...) ... -# 2081| getCondition(): [EQExpr] ... == ... -# 2081| Type = [BoolType] bool -# 2081| ValueCategory = prvalue -# 2081| getLeftOperand(): [VariableAccess] x -# 2081| Type = [IntType] int -# 2081| ValueCategory = prvalue(load) -# 2081| getRightOperand(): [Literal] 7 -# 2081| Type = [IntType] int -# 2081| Value = [Literal] 7 -# 2081| ValueCategory = prvalue -# 2082| getThen(): [ExprStmt] ExprStmt -# 2082| getExpr(): [FunctionCall] call to exit -# 2082| Type = [VoidType] void -# 2082| ValueCategory = prvalue -# 2082| getArgument(0): [Literal] 3 -# 2082| Type = [IntType] int -# 2082| Value = [Literal] 3 -# 2082| ValueCategory = prvalue -# 2083| getStmt(2): [ExprStmt] ExprStmt -# 2083| getExpr(): [FunctionCall] call to VoidFunc -# 2083| Type = [VoidType] void -# 2083| ValueCategory = prvalue -# 2084| getStmt(3): [ReturnStmt] return ... -# 2084| getExpr(): [VariableAccess] x -# 2084| Type = [IntType] int -# 2084| ValueCategory = prvalue(load) -# 2087| [TopLevelFunction] void CallsNonExit() -# 2087| <params>: -# 2087| getEntryPoint(): [BlockStmt] { ... } -# 2088| getStmt(0): [ExprStmt] ExprStmt -# 2088| getExpr(): [FunctionCall] call to VoidFunc -# 2088| Type = [VoidType] void -# 2088| ValueCategory = prvalue -# 2089| getStmt(1): [ExprStmt] ExprStmt -# 2089| getExpr(): [FunctionCall] call to exit -# 2089| Type = [VoidType] void -# 2089| ValueCategory = prvalue -# 2089| getArgument(0): [Literal] 3 -# 2089| Type = [IntType] int -# 2089| Value = [Literal] 3 -# 2089| ValueCategory = prvalue -# 2090| getStmt(2): [ReturnStmt] return ... -# 2092| [TopLevelFunction] int TransNonExit() -# 2092| <params>: -# 2092| getEntryPoint(): [BlockStmt] { ... } -# 2093| getStmt(0): [DeclStmt] declaration -# 2093| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2093| Type = [IntType] int -# 2093| getVariable().getInitializer(): [Initializer] initializer for x -# 2093| getExpr(): [FunctionCall] call to Add -# 2093| Type = [IntType] int -# 2093| ValueCategory = prvalue -# 2093| getArgument(0): [Literal] 3 -# 2093| Type = [IntType] int -# 2093| Value = [Literal] 3 -# 2093| ValueCategory = prvalue -# 2093| getArgument(1): [Literal] 4 -# 2093| Type = [IntType] int -# 2093| Value = [Literal] 4 -# 2093| ValueCategory = prvalue -# 2094| getStmt(1): [IfStmt] if (...) ... -# 2094| getCondition(): [EQExpr] ... == ... -# 2094| Type = [BoolType] bool -# 2094| ValueCategory = prvalue -# 2094| getLeftOperand(): [VariableAccess] x -# 2094| Type = [IntType] int -# 2094| ValueCategory = prvalue(load) -# 2094| getRightOperand(): [Literal] 7 -# 2094| Type = [IntType] int -# 2094| Value = [Literal] 7 -# 2094| ValueCategory = prvalue -# 2095| getThen(): [ExprStmt] ExprStmt -# 2095| getExpr(): [FunctionCall] call to CallsNonExit -# 2095| Type = [VoidType] void -# 2095| ValueCategory = prvalue -# 2096| getStmt(2): [ExprStmt] ExprStmt -# 2096| getExpr(): [FunctionCall] call to VoidFunc -# 2096| Type = [VoidType] void -# 2096| ValueCategory = prvalue -# 2097| getStmt(3): [ReturnStmt] return ... -# 2097| getExpr(): [VariableAccess] x -# 2097| Type = [IntType] int -# 2097| ValueCategory = prvalue(load) -# 2100| [TopLevelFunction] void newArrayCorrectType(size_t) +# 2098| [Destructor,VirtualFunction] void Derived2::~Derived2() +# 2098| <params>: +# 2098| getEntryPoint(): [BlockStmt] { ... } +# 2098| getStmt(0): [ReturnStmt] return ... +# 2098| <destructions>: +# 2098| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 +# 2098| Type = [VoidType] void +# 2098| ValueCategory = prvalue +# 2100| [MemberFunction] void Derived2::operator delete(void*) # 2100| <params>: -# 2100| getParameter(0): [Parameter] n -# 2100| Type = [CTypedefType,Size_t] size_t +# 2100| getParameter(0): [Parameter] p +# 2100| Type = [VoidPointerType] void * # 2100| getEntryPoint(): [BlockStmt] { ... } -# 2101| getStmt(0): [ExprStmt] ExprStmt -# 2101| getExpr(): [NewArrayExpr] new[] -# 2101| Type = [IntPointerType] int * -# 2101| ValueCategory = prvalue -# 2101| getExtent(): [VariableAccess] n -# 2101| Type = [CTypedefType,Size_t] size_t -# 2101| ValueCategory = prvalue(load) -# 2102| getStmt(1): [ExprStmt] ExprStmt -# 2102| getExpr(): [NewArrayExpr] new[] -# 2102| Type = [IntPointerType] int * -# 2102| ValueCategory = prvalue -# 2102| getAllocatorCall(): [FunctionCall] call to operator new[] -# 2102| Type = [VoidPointerType] void * -# 2102| ValueCategory = prvalue -# 2102| getArgument(0): [ErrorExpr] <error expr> -# 2102| Type = [LongType] unsigned long -# 2102| ValueCategory = prvalue -# 2102| getArgument(1): [Literal] 1.0 -# 2102| Type = [FloatType] float -# 2102| Value = [Literal] 1.0 -# 2102| ValueCategory = prvalue -# 2102| getExtent(): [VariableAccess] n -# 2102| Type = [CTypedefType,Size_t] size_t -# 2102| ValueCategory = prvalue(load) -# 2103| getStmt(2): [ExprStmt] ExprStmt -# 2103| getExpr(): [NewArrayExpr] new[] -# 2103| Type = [PointerType] String * -# 2103| ValueCategory = prvalue -# 2103| getInitializer(): [ArrayAggregateLiteral] {...} -# 2103| Type = [ArrayType] String[] -# 2103| ValueCategory = prvalue -# 2103| getAnElementExpr(0): [ConstructorCall] call to String -# 2103| Type = [VoidType] void -# 2103| ValueCategory = prvalue -# 2103| getExtent(): [VariableAccess] n -# 2103| Type = [CTypedefType,Size_t] size_t -# 2103| ValueCategory = prvalue(load) -# 2104| getStmt(3): [ExprStmt] ExprStmt -# 2104| getExpr(): [NewArrayExpr] new[] -# 2104| Type = [PointerType] Overaligned * -# 2104| ValueCategory = prvalue -# 2104| getExtent(): [VariableAccess] n -# 2104| Type = [CTypedefType,Size_t] size_t -# 2104| ValueCategory = prvalue(load) -# 2104| getAlignmentArgument(): [Literal] 128 -# 2104| Type = [ScopedEnum] align_val_t -# 2104| Value = [Literal] 128 -# 2104| ValueCategory = prvalue -# 2105| getStmt(4): [ExprStmt] ExprStmt -# 2105| getExpr(): [NewArrayExpr] new[] -# 2105| Type = [PointerType] DefaultCtorWithDefaultParam * -# 2105| ValueCategory = prvalue -# 2105| getInitializer(): [ArrayAggregateLiteral] {...} -# 2105| Type = [ArrayType] DefaultCtorWithDefaultParam[] -# 2105| ValueCategory = prvalue -# 2105| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam -# 2105| Type = [VoidType] void -# 2105| ValueCategory = prvalue -# 2105| getExtent(): [VariableAccess] n -# 2105| Type = [CTypedefType,Size_t] size_t -# 2105| ValueCategory = prvalue(load) -# 2106| getStmt(5): [ExprStmt] ExprStmt -# 2106| getExpr(): [NewArrayExpr] new[] -# 2106| Type = [IntPointerType] int * -# 2106| ValueCategory = prvalue -# 2106| getInitializer(): [ArrayAggregateLiteral] {...} -# 2106| Type = [ArrayType] int[3] -# 2106| ValueCategory = prvalue -# 2106| getAnElementExpr(0): [Literal] 0 -# 2106| Type = [IntType] int -# 2106| Value = [Literal] 0 -# 2106| ValueCategory = prvalue -# 2106| getAnElementExpr(1): [Literal] 1 -# 2106| Type = [IntType] int -# 2106| Value = [Literal] 1 -# 2106| ValueCategory = prvalue -# 2106| getAnElementExpr(2): [Literal] 2 -# 2106| Type = [IntType] int -# 2106| Value = [Literal] 2 -# 2106| ValueCategory = prvalue -# 2106| getExtent(): [VariableAccess] n -# 2106| Type = [CTypedefType,Size_t] size_t -# 2106| ValueCategory = prvalue(load) -# 2107| getStmt(6): [ReturnStmt] return ... -# 2109| [TopLevelFunction] double strtod(char const*, char**) -# 2109| <params>: -# 2109| getParameter(0): [Parameter] str -# 2109| Type = [PointerType] const char * -# 2109| getParameter(1): [Parameter] endptr -# 2109| Type = [PointerType] char ** -# 2111| [TopLevelFunction] char* test_strtod(char*) -# 2111| <params>: -# 2111| getParameter(0): [Parameter] s -# 2111| Type = [CharPointerType] char * -# 2111| getEntryPoint(): [BlockStmt] { ... } -# 2112| getStmt(0): [DeclStmt] declaration -# 2112| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end -# 2112| Type = [CharPointerType] char * -# 2113| getStmt(1): [DeclStmt] declaration +# 2101| getStmt(0): [ReturnStmt] return ... +# 2105| [TopLevelFunction] int virtual_delete() +# 2105| <params>: +# 2106| getEntryPoint(): [BlockStmt] { ... } +# 2107| getStmt(0): [DeclStmt] declaration +# 2107| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 +# 2107| Type = [PointerType] Base2 * +# 2107| getVariable().getInitializer(): [Initializer] initializer for b1 +# 2107| getExpr(): [NewExpr] new +# 2107| Type = [PointerType] Base2 * +# 2107| ValueCategory = prvalue +# 2107| getInitializer(): [ConstructorCall] call to Base2 +# 2107| Type = [VoidType] void +# 2107| ValueCategory = prvalue +# 2108| getStmt(1): [ExprStmt] ExprStmt +# 2108| getExpr(): [DeleteExpr] delete +# 2108| Type = [VoidType] void +# 2108| ValueCategory = prvalue +# 2108| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2108| Type = [VoidType] void +# 2108| ValueCategory = prvalue +# 2108| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2108| Type = [VoidType] void +# 2108| ValueCategory = prvalue +# 2108| getQualifier(): [VariableAccess] b1 +# 2108| Type = [PointerType] Base2 * +# 2108| ValueCategory = prvalue(load) +# 2110| getStmt(2): [DeclStmt] declaration +# 2110| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 +# 2110| Type = [PointerType] Base2 * +# 2110| getVariable().getInitializer(): [Initializer] initializer for b2 +# 2110| getExpr(): [NewExpr] new +# 2110| Type = [PointerType] Derived2 * +# 2110| ValueCategory = prvalue +# 2110| getInitializer(): [ConstructorCall] call to Derived2 +# 2110| Type = [VoidType] void +# 2110| ValueCategory = prvalue +# 2110| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... +# 2110| Conversion = [BaseClassConversion] base class conversion +# 2110| Type = [PointerType] Base2 * +# 2110| ValueCategory = prvalue +# 2111| getStmt(3): [ExprStmt] ExprStmt +# 2111| getExpr(): [DeleteExpr] delete +# 2111| Type = [VoidType] void +# 2111| ValueCategory = prvalue +# 2111| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2111| Type = [VoidType] void +# 2111| ValueCategory = prvalue +# 2111| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2111| Type = [VoidType] void +# 2111| ValueCategory = prvalue +# 2111| getQualifier(): [VariableAccess] b2 +# 2111| Type = [PointerType] Base2 * +# 2111| ValueCategory = prvalue(load) +# 2113| getStmt(4): [DeclStmt] declaration # 2113| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2113| Type = [DoubleType] double +# 2113| Type = [PointerType] Derived2 * # 2113| getVariable().getInitializer(): [Initializer] initializer for d -# 2113| getExpr(): [FunctionCall] call to strtod -# 2113| Type = [DoubleType] double +# 2113| getExpr(): [NewExpr] new +# 2113| Type = [PointerType] Derived2 * # 2113| ValueCategory = prvalue -# 2113| getArgument(0): [VariableAccess] s -# 2113| Type = [CharPointerType] char * -# 2113| ValueCategory = prvalue(load) -# 2113| getArgument(1): [AddressOfExpr] & ... -# 2113| Type = [PointerType] char ** -# 2113| ValueCategory = prvalue -# 2113| getOperand(): [VariableAccess] end -# 2113| Type = [CharPointerType] char * -# 2113| ValueCategory = lvalue -# 2113| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... -# 2113| Conversion = [PointerConversion] pointer conversion -# 2113| Type = [PointerType] const char * +# 2113| getInitializer(): [ConstructorCall] call to Derived2 +# 2113| Type = [VoidType] void # 2113| ValueCategory = prvalue -# 2114| getStmt(2): [ReturnStmt] return ... -# 2114| getExpr(): [VariableAccess] end -# 2114| Type = [CharPointerType] char * -# 2114| ValueCategory = prvalue(load) -# 2117| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) -# 2117| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const HasOperatorBool & -# 2117| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) +# 2114| getStmt(5): [ExprStmt] ExprStmt +# 2114| getExpr(): [DeleteExpr] delete +# 2114| Type = [VoidType] void +# 2114| ValueCategory = prvalue +# 2114| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2114| Type = [VoidType] void +# 2114| ValueCategory = prvalue +# 2114| getDestructorCall(): [DestructorCall] call to ~Derived2 +# 2114| Type = [VoidType] void +# 2114| ValueCategory = prvalue +# 2114| getQualifier(): [VariableAccess] d +# 2114| Type = [PointerType] Derived2 * +# 2114| ValueCategory = prvalue(load) +# 2115| getStmt(6): [ReturnStmt] return ... +# 2117| [TopLevelFunction] void test_constant_folding_use(int) # 2117| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] HasOperatorBool && -# 2118| [ConversionOperator] bool HasOperatorBool::operator bool() -# 2118| <params>: -# 2121| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() -# 2121| <params>: -# 2121| getEntryPoint(): [BlockStmt] { ... } -# 2122| getStmt(0): [IfStmt] if (...) ... -# 2122| getCondition(): [ConditionDeclExpr] (condition decl) -# 2122| Type = [BoolType] bool -# 2122| ValueCategory = prvalue -# 2122| getChild(0): [FunctionCall] call to operator bool -# 2122| Type = [BoolType] bool -# 2122| ValueCategory = prvalue -# 2122| getQualifier(): [VariableAccess] b -# 2122| Type = [Struct] HasOperatorBool -# 2122| ValueCategory = prvalue(load) -# 2122| getThen(): [BlockStmt] { ... } -# 2123| getStmt(1): [ReturnStmt] return ... -# 2125| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) -# 2125| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const ClassWithDestructor & -# 2125| [CopyConstructor] void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2125| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const ClassWithDestructor & -# 2125| <initializations>: -# 2125| getInitializer(0): [ConstructorFieldInit] constructor init of field x -# 2125| Type = [CharPointerType] char * -# 2125| ValueCategory = prvalue -# 2125| getExpr(): [ReferenceFieldAccess] x -# 2125| Type = [CharPointerType] char * -# 2125| ValueCategory = prvalue(load) -# 2125| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 2125| Type = [LValueReferenceType] const ClassWithDestructor & -# 2125| ValueCategory = prvalue(load) -# 2125| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2125| Type = [SpecifiedType] const ClassWithDestructor -# 2125| ValueCategory = lvalue -# 2125| getEntryPoint(): [BlockStmt] { ... } -# 2125| getStmt(0): [ReturnStmt] return ... -# 2128| [Constructor] void ClassWithDestructor::ClassWithDestructor() -# 2128| <params>: -# 2128| <initializations>: -# 2128| getEntryPoint(): [BlockStmt] { ... } -# 2128| getStmt(0): [ExprStmt] ExprStmt -# 2128| getExpr(): [AssignExpr] ... = ... -# 2128| Type = [CharPointerType] char * -# 2128| ValueCategory = lvalue -# 2128| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2128| Type = [CharPointerType] char * -# 2128| ValueCategory = lvalue -# 2128| getQualifier(): [ThisExpr] this -# 2128| Type = [PointerType] ClassWithDestructor * -# 2128| ValueCategory = prvalue(load) -# 2128| getRValue(): [NewExpr] new -# 2128| Type = [CharPointerType] char * +# 2117| getParameter(0): [Parameter] (unnamed parameter 0) +# 2117| Type = [IntType] int +# 2119| [TopLevelFunction] void test_constant_folding() +# 2119| <params>: +# 2119| getEntryPoint(): [BlockStmt] { ... } +# 2120| getStmt(0): [DeclStmt] declaration +# 2120| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2120| Type = [SpecifiedType] const int +# 2120| getVariable().getInitializer(): [Initializer] initializer for x +# 2120| getExpr(): [Literal] 116 +# 2120| Type = [IntType] int +# 2120| Value = [Literal] 116 +# 2120| ValueCategory = prvalue +# 2121| getStmt(1): [ExprStmt] ExprStmt +# 2121| getExpr(): [FunctionCall] call to test_constant_folding_use +# 2121| Type = [VoidType] void +# 2121| ValueCategory = prvalue +# 2121| getArgument(0): [VariableAccess] x +# 2121| Type = [IntType] int +# 2121| Value = [VariableAccess] 116 +# 2121| ValueCategory = prvalue(load) +# 2122| getStmt(2): [ReturnStmt] return ... +# 2124| [TopLevelFunction] void exit(int) +# 2124| <params>: +# 2124| getParameter(0): [Parameter] code +# 2124| Type = [IntType] int +# 2126| [TopLevelFunction] int NonExit() +# 2126| <params>: +# 2126| getEntryPoint(): [BlockStmt] { ... } +# 2127| getStmt(0): [DeclStmt] declaration +# 2127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2127| Type = [IntType] int +# 2127| getVariable().getInitializer(): [Initializer] initializer for x +# 2127| getExpr(): [FunctionCall] call to Add +# 2127| Type = [IntType] int +# 2127| ValueCategory = prvalue +# 2127| getArgument(0): [Literal] 3 +# 2127| Type = [IntType] int +# 2127| Value = [Literal] 3 +# 2127| ValueCategory = prvalue +# 2127| getArgument(1): [Literal] 4 +# 2127| Type = [IntType] int +# 2127| Value = [Literal] 4 +# 2127| ValueCategory = prvalue +# 2128| getStmt(1): [IfStmt] if (...) ... +# 2128| getCondition(): [EQExpr] ... == ... +# 2128| Type = [BoolType] bool +# 2128| ValueCategory = prvalue +# 2128| getLeftOperand(): [VariableAccess] x +# 2128| Type = [IntType] int +# 2128| ValueCategory = prvalue(load) +# 2128| getRightOperand(): [Literal] 7 +# 2128| Type = [IntType] int +# 2128| Value = [Literal] 7 # 2128| ValueCategory = prvalue -# 2128| getStmt(1): [ReturnStmt] return ... -# 2129| [Destructor] void ClassWithDestructor::~ClassWithDestructor() -# 2129| <params>: -# 2129| getEntryPoint(): [BlockStmt] { ... } -# 2129| getStmt(0): [ExprStmt] ExprStmt -# 2129| getExpr(): [DeleteExpr] delete -# 2129| Type = [VoidType] void -# 2129| ValueCategory = prvalue -# 2129| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2129| Type = [CharPointerType] char * -# 2129| ValueCategory = prvalue(load) -# 2129| getQualifier(): [ThisExpr] this -# 2129| Type = [PointerType] ClassWithDestructor * -# 2129| ValueCategory = prvalue(load) -# 2129| getStmt(1): [ReturnStmt] return ... -# 2129| <destructions>: -# 2131| [MemberFunction] void ClassWithDestructor::set_x(char) -# 2131| <params>: -# 2131| getParameter(0): [Parameter] y -# 2131| Type = [PlainCharType] char -# 2131| getEntryPoint(): [BlockStmt] { ... } -# 2131| getStmt(0): [ExprStmt] ExprStmt -# 2131| getExpr(): [AssignExpr] ... = ... -# 2131| Type = [PlainCharType] char -# 2131| ValueCategory = lvalue -# 2131| getLValue(): [PointerDereferenceExpr] * ... -# 2131| Type = [PlainCharType] char -# 2131| ValueCategory = lvalue -# 2131| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2131| Type = [CharPointerType] char * -# 2131| ValueCategory = prvalue(load) -# 2131| getQualifier(): [ThisExpr] this -# 2131| Type = [PointerType] ClassWithDestructor * -# 2131| ValueCategory = prvalue(load) -# 2131| getRValue(): [VariableAccess] y -# 2131| Type = [PlainCharType] char -# 2131| ValueCategory = prvalue(load) -# 2131| getStmt(1): [ReturnStmt] return ... -# 2132| [MemberFunction] char ClassWithDestructor::get_x() -# 2132| <params>: -# 2132| getEntryPoint(): [BlockStmt] { ... } -# 2132| getStmt(0): [ReturnStmt] return ... -# 2132| getExpr(): [PointerDereferenceExpr] * ... -# 2132| Type = [PlainCharType] char -# 2132| ValueCategory = prvalue(load) -# 2132| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2132| Type = [CharPointerType] char * -# 2132| ValueCategory = prvalue(load) -# 2132| getQualifier(): [ThisExpr] this -# 2132| Type = [PointerType] ClassWithDestructor * -# 2132| ValueCategory = prvalue(load) -# 2135| [GlobalVariable] bool initialization_with_destructor_bool -# 2135| getInitializer(): [Initializer] initializer for initialization_with_destructor_bool -# 2135| getExpr(): [Literal] 1 -# 2135| Type = [BoolType] bool -# 2135| Value = [Literal] 1 -# 2135| ValueCategory = prvalue -# 2137| [TopLevelFunction] void initialization_with_destructor(bool, char) -# 2137| <params>: -# 2137| getParameter(0): [Parameter] b -# 2137| Type = [BoolType] bool -# 2137| getParameter(1): [Parameter] c -# 2137| Type = [PlainCharType] char -# 2137| getEntryPoint(): [BlockStmt] { ... } -# 2138| getStmt(0): [IfStmt] if (...) ... -# 2138| getInitialization(): [DeclStmt] declaration -# 2138| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2138| Type = [Class] ClassWithDestructor -# 2138| getVariable().getInitializer(): [Initializer] initializer for x -# 2138| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2138| Type = [VoidType] void -# 2138| ValueCategory = prvalue -# 2138| getCondition(): [VariableAccess] b -# 2138| Type = [BoolType] bool -# 2138| ValueCategory = prvalue(load) -# 2139| getThen(): [ExprStmt] ExprStmt -# 2139| getExpr(): [FunctionCall] call to set_x -# 2139| Type = [VoidType] void -# 2139| ValueCategory = prvalue -# 2139| getQualifier(): [VariableAccess] x -# 2139| Type = [Class] ClassWithDestructor -# 2139| ValueCategory = lvalue -# 2139| getArgument(0): [CharLiteral] 97 -# 2139| Type = [PlainCharType] char -# 2139| Value = [CharLiteral] 97 -# 2139| ValueCategory = prvalue -# 2139| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2139| Type = [VoidType] void -# 2139| ValueCategory = prvalue -# 2139| getQualifier(): [VariableAccess] x -# 2139| Type = [Class] ClassWithDestructor -# 2139| ValueCategory = lvalue -# 2141| getStmt(1): [ConstexprIfStmt] if constexpr (...) ... -# 2141| getInitialization(): [DeclStmt] declaration -# 2141| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2141| Type = [Class] ClassWithDestructor -# 2141| getVariable().getInitializer(): [Initializer] initializer for x -# 2141| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2141| Type = [VoidType] void -# 2141| ValueCategory = prvalue -# 2141| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2129| getThen(): [ExprStmt] ExprStmt +# 2129| getExpr(): [FunctionCall] call to exit +# 2129| Type = [VoidType] void +# 2129| ValueCategory = prvalue +# 2129| getArgument(0): [Literal] 3 +# 2129| Type = [IntType] int +# 2129| Value = [Literal] 3 +# 2129| ValueCategory = prvalue +# 2130| getStmt(2): [ExprStmt] ExprStmt +# 2130| getExpr(): [FunctionCall] call to VoidFunc +# 2130| Type = [VoidType] void +# 2130| ValueCategory = prvalue +# 2131| getStmt(3): [ReturnStmt] return ... +# 2131| getExpr(): [VariableAccess] x +# 2131| Type = [IntType] int +# 2131| ValueCategory = prvalue(load) +# 2134| [TopLevelFunction] void CallsNonExit() +# 2134| <params>: +# 2134| getEntryPoint(): [BlockStmt] { ... } +# 2135| getStmt(0): [ExprStmt] ExprStmt +# 2135| getExpr(): [FunctionCall] call to VoidFunc +# 2135| Type = [VoidType] void +# 2135| ValueCategory = prvalue +# 2136| getStmt(1): [ExprStmt] ExprStmt +# 2136| getExpr(): [FunctionCall] call to exit +# 2136| Type = [VoidType] void +# 2136| ValueCategory = prvalue +# 2136| getArgument(0): [Literal] 3 +# 2136| Type = [IntType] int +# 2136| Value = [Literal] 3 +# 2136| ValueCategory = prvalue +# 2137| getStmt(2): [ReturnStmt] return ... +# 2139| [TopLevelFunction] int TransNonExit() +# 2139| <params>: +# 2139| getEntryPoint(): [BlockStmt] { ... } +# 2140| getStmt(0): [DeclStmt] declaration +# 2140| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2140| Type = [IntType] int +# 2140| getVariable().getInitializer(): [Initializer] initializer for x +# 2140| getExpr(): [FunctionCall] call to Add +# 2140| Type = [IntType] int +# 2140| ValueCategory = prvalue +# 2140| getArgument(0): [Literal] 3 +# 2140| Type = [IntType] int +# 2140| Value = [Literal] 3 +# 2140| ValueCategory = prvalue +# 2140| getArgument(1): [Literal] 4 +# 2140| Type = [IntType] int +# 2140| Value = [Literal] 4 +# 2140| ValueCategory = prvalue +# 2141| getStmt(1): [IfStmt] if (...) ... +# 2141| getCondition(): [EQExpr] ... == ... # 2141| Type = [BoolType] bool -# 2141| Value = [VariableAccess] 1 -# 2141| ValueCategory = prvalue(load) +# 2141| ValueCategory = prvalue +# 2141| getLeftOperand(): [VariableAccess] x +# 2141| Type = [IntType] int +# 2141| ValueCategory = prvalue(load) +# 2141| getRightOperand(): [Literal] 7 +# 2141| Type = [IntType] int +# 2141| Value = [Literal] 7 +# 2141| ValueCategory = prvalue # 2142| getThen(): [ExprStmt] ExprStmt -# 2142| getExpr(): [FunctionCall] call to set_x +# 2142| getExpr(): [FunctionCall] call to CallsNonExit # 2142| Type = [VoidType] void # 2142| ValueCategory = prvalue -# 2142| getQualifier(): [VariableAccess] x -# 2142| Type = [Class] ClassWithDestructor -# 2142| ValueCategory = lvalue -# 2142| getArgument(0): [CharLiteral] 97 -# 2142| Type = [PlainCharType] char -# 2142| Value = [CharLiteral] 97 -# 2142| ValueCategory = prvalue -# 2142| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2142| Type = [VoidType] void -# 2142| ValueCategory = prvalue -# 2142| getQualifier(): [VariableAccess] x -# 2142| Type = [Class] ClassWithDestructor -# 2142| ValueCategory = lvalue -# 2144| getStmt(2): [SwitchStmt] switch (...) ... -# 2144| getInitialization(): [DeclStmt] declaration -# 2144| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2144| Type = [Class] ClassWithDestructor -# 2144| getVariable().getInitializer(): [Initializer] initializer for x -# 2144| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2144| Type = [VoidType] void -# 2144| ValueCategory = prvalue -# 2144| getExpr(): [VariableAccess] c -# 2144| Type = [PlainCharType] char +# 2143| getStmt(2): [ExprStmt] ExprStmt +# 2143| getExpr(): [FunctionCall] call to VoidFunc +# 2143| Type = [VoidType] void +# 2143| ValueCategory = prvalue +# 2144| getStmt(3): [ReturnStmt] return ... +# 2144| getExpr(): [VariableAccess] x +# 2144| Type = [IntType] int # 2144| ValueCategory = prvalue(load) -# 2144| getStmt(): [BlockStmt] { ... } -# 2145| getStmt(0): [SwitchCase] case ...: -# 2145| getExpr(): [CharLiteral] 97 -# 2145| Type = [PlainCharType] char -# 2145| Value = [CharLiteral] 97 -# 2145| ValueCategory = prvalue -# 2145| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2145| Conversion = [IntegralConversion] integral conversion -# 2145| Type = [IntType] int -# 2145| Value = [CStyleCast] 97 -# 2145| ValueCategory = prvalue -# 2146| getStmt(1): [ExprStmt] ExprStmt -# 2146| getExpr(): [FunctionCall] call to set_x -# 2146| Type = [VoidType] void -# 2146| ValueCategory = prvalue -# 2146| getQualifier(): [VariableAccess] x -# 2146| Type = [Class] ClassWithDestructor -# 2146| ValueCategory = lvalue -# 2146| getArgument(0): [CharLiteral] 97 -# 2146| Type = [PlainCharType] char -# 2146| Value = [CharLiteral] 97 -# 2146| ValueCategory = prvalue -# 2147| getStmt(2): [BreakStmt] break; -# 2148| getStmt(3): [SwitchCase] default: -# 2149| getStmt(4): [ExprStmt] ExprStmt -# 2149| getExpr(): [FunctionCall] call to set_x -# 2149| Type = [VoidType] void +# 2147| [TopLevelFunction] void newArrayCorrectType(size_t) +# 2147| <params>: +# 2147| getParameter(0): [Parameter] n +# 2147| Type = [CTypedefType,Size_t] size_t +# 2147| getEntryPoint(): [BlockStmt] { ... } +# 2148| getStmt(0): [ExprStmt] ExprStmt +# 2148| getExpr(): [NewArrayExpr] new[] +# 2148| Type = [IntPointerType] int * +# 2148| ValueCategory = prvalue +# 2148| getExtent(): [VariableAccess] n +# 2148| Type = [CTypedefType,Size_t] size_t +# 2148| ValueCategory = prvalue(load) +# 2149| getStmt(1): [ExprStmt] ExprStmt +# 2149| getExpr(): [NewArrayExpr] new[] +# 2149| Type = [IntPointerType] int * +# 2149| ValueCategory = prvalue +# 2149| getAllocatorCall(): [FunctionCall] call to operator new[] +# 2149| Type = [VoidPointerType] void * +# 2149| ValueCategory = prvalue +# 2149| getArgument(0): [ErrorExpr] <error expr> +# 2149| Type = [LongType] unsigned long +# 2149| ValueCategory = prvalue +# 2149| getArgument(1): [Literal] 1.0 +# 2149| Type = [FloatType] float +# 2149| Value = [Literal] 1.0 # 2149| ValueCategory = prvalue -# 2149| getQualifier(): [VariableAccess] x -# 2149| Type = [Class] ClassWithDestructor -# 2149| ValueCategory = lvalue -# 2149| getArgument(0): [CharLiteral] 98 -# 2149| Type = [PlainCharType] char -# 2149| Value = [CharLiteral] 98 -# 2149| ValueCategory = prvalue -# 2150| getStmt(5): [BreakStmt] break; -# 2151| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2151| Type = [VoidType] void +# 2149| getExtent(): [VariableAccess] n +# 2149| Type = [CTypedefType,Size_t] size_t +# 2149| ValueCategory = prvalue(load) +# 2150| getStmt(2): [ExprStmt] ExprStmt +# 2150| getExpr(): [NewArrayExpr] new[] +# 2150| Type = [PointerType] String * +# 2150| ValueCategory = prvalue +# 2150| getInitializer(): [ArrayAggregateLiteral] {...} +# 2150| Type = [ArrayType] String[] +# 2150| ValueCategory = prvalue +# 2150| getAnElementExpr(0): [ConstructorCall] call to String +# 2150| Type = [VoidType] void +# 2150| ValueCategory = prvalue +# 2150| getExtent(): [VariableAccess] n +# 2150| Type = [CTypedefType,Size_t] size_t +# 2150| ValueCategory = prvalue(load) +# 2151| getStmt(3): [ExprStmt] ExprStmt +# 2151| getExpr(): [NewArrayExpr] new[] +# 2151| Type = [PointerType] Overaligned * # 2151| ValueCategory = prvalue -# 2151| getQualifier(): [VariableAccess] x -# 2151| Type = [Class] ClassWithDestructor -# 2151| ValueCategory = lvalue -# 2144| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2144| Conversion = [IntegralConversion] integral conversion -# 2144| Type = [IntType] int -# 2144| ValueCategory = prvalue -# 2151| getStmt(3): [LabelStmt] label ...: -# 2153| getStmt(4): [DeclStmt] declaration -# 2153| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2153| Type = [Class] ClassWithDestructor -# 2153| getVariable().getInitializer(): [Initializer] initializer for x -# 2153| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2153| Type = [VoidType] void +# 2151| getExtent(): [VariableAccess] n +# 2151| Type = [CTypedefType,Size_t] size_t +# 2151| ValueCategory = prvalue(load) +# 2151| getAlignmentArgument(): [Literal] 128 +# 2151| Type = [ScopedEnum] align_val_t +# 2151| Value = [Literal] 128 +# 2151| ValueCategory = prvalue +# 2152| getStmt(4): [ExprStmt] ExprStmt +# 2152| getExpr(): [NewArrayExpr] new[] +# 2152| Type = [PointerType] DefaultCtorWithDefaultParam * +# 2152| ValueCategory = prvalue +# 2152| getInitializer(): [ArrayAggregateLiteral] {...} +# 2152| Type = [ArrayType] DefaultCtorWithDefaultParam[] +# 2152| ValueCategory = prvalue +# 2152| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam +# 2152| Type = [VoidType] void +# 2152| ValueCategory = prvalue +# 2152| getExtent(): [VariableAccess] n +# 2152| Type = [CTypedefType,Size_t] size_t +# 2152| ValueCategory = prvalue(load) +# 2153| getStmt(5): [ExprStmt] ExprStmt +# 2153| getExpr(): [NewArrayExpr] new[] +# 2153| Type = [IntPointerType] int * +# 2153| ValueCategory = prvalue +# 2153| getInitializer(): [ArrayAggregateLiteral] {...} +# 2153| Type = [ArrayType] int[3] +# 2153| ValueCategory = prvalue +# 2153| getAnElementExpr(0): [Literal] 0 +# 2153| Type = [IntType] int +# 2153| Value = [Literal] 0 +# 2153| ValueCategory = prvalue +# 2153| getAnElementExpr(1): [Literal] 1 +# 2153| Type = [IntType] int +# 2153| Value = [Literal] 1 # 2153| ValueCategory = prvalue -# 2154| getStmt(5): [RangeBasedForStmt] for(...:...) ... -# 2154| getInitialization(): [DeclStmt] declaration -# 2154| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2154| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2154| getVariable().getInitializer(): [Initializer] initializer for ys -# 2154| getExpr(): [ConstructorCall] call to vector -# 2154| Type = [VoidType] void -# 2154| ValueCategory = prvalue -# 2154| getArgument(0): [VariableAccess] x -# 2154| Type = [Class] ClassWithDestructor -# 2154| ValueCategory = prvalue(load) -# 2154| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2154| Type = [Class] ClassWithDestructor -# 2154| ValueCategory = lvalue -# 2154| getChild(1): [DeclStmt] declaration -# 2154| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2154| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2153| getAnElementExpr(2): [Literal] 2 +# 2153| Type = [IntType] int +# 2153| Value = [Literal] 2 +# 2153| ValueCategory = prvalue +# 2153| getExtent(): [VariableAccess] n +# 2153| Type = [CTypedefType,Size_t] size_t +# 2153| ValueCategory = prvalue(load) +# 2154| getStmt(6): [ReturnStmt] return ... +# 2156| [TopLevelFunction] double strtod(char const*, char**) +# 2156| <params>: +# 2156| getParameter(0): [Parameter] str +# 2156| Type = [PointerType] const char * +# 2156| getParameter(1): [Parameter] endptr +# 2156| Type = [PointerType] char ** +# 2158| [TopLevelFunction] char* test_strtod(char*) +# 2158| <params>: +# 2158| getParameter(0): [Parameter] s +# 2158| Type = [CharPointerType] char * +# 2158| getEntryPoint(): [BlockStmt] { ... } +# 2159| getStmt(0): [DeclStmt] declaration +# 2159| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end +# 2159| Type = [CharPointerType] char * +# 2160| getStmt(1): [DeclStmt] declaration +# 2160| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2160| Type = [DoubleType] double +# 2160| getVariable().getInitializer(): [Initializer] initializer for d +# 2160| getExpr(): [FunctionCall] call to strtod +# 2160| Type = [DoubleType] double +# 2160| ValueCategory = prvalue +# 2160| getArgument(0): [VariableAccess] s +# 2160| Type = [CharPointerType] char * +# 2160| ValueCategory = prvalue(load) +# 2160| getArgument(1): [AddressOfExpr] & ... +# 2160| Type = [PointerType] char ** +# 2160| ValueCategory = prvalue +# 2160| getOperand(): [VariableAccess] end +# 2160| Type = [CharPointerType] char * +# 2160| ValueCategory = lvalue +# 2160| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 2160| Conversion = [PointerConversion] pointer conversion +# 2160| Type = [PointerType] const char * +# 2160| ValueCategory = prvalue +# 2161| getStmt(2): [ReturnStmt] return ... +# 2161| getExpr(): [VariableAccess] end +# 2161| Type = [CharPointerType] char * +# 2161| ValueCategory = prvalue(load) +# 2164| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) +# 2164| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const HasOperatorBool & +# 2164| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) +# 2164| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] HasOperatorBool && +# 2165| [ConversionOperator] bool HasOperatorBool::operator bool() +# 2165| <params>: +# 2168| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() +# 2168| <params>: +# 2168| getEntryPoint(): [BlockStmt] { ... } +# 2169| getStmt(0): [IfStmt] if (...) ... +# 2169| getCondition(): [ConditionDeclExpr] (condition decl) +# 2169| Type = [BoolType] bool +# 2169| ValueCategory = prvalue +# 2169| getChild(0): [FunctionCall] call to operator bool +# 2169| Type = [BoolType] bool +# 2169| ValueCategory = prvalue +# 2169| getQualifier(): [VariableAccess] b +# 2169| Type = [Struct] HasOperatorBool +# 2169| ValueCategory = prvalue(load) +# 2169| getThen(): [BlockStmt] { ... } +# 2170| getStmt(1): [ReturnStmt] return ... +# 2172| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) +# 2172| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithDestructor & +# 2172| [CopyConstructor] void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2172| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const ClassWithDestructor & +# 2172| <initializations>: +# 2172| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 2172| Type = [CharPointerType] char * +# 2172| ValueCategory = prvalue +# 2172| getExpr(): [ReferenceFieldAccess] x +# 2172| Type = [CharPointerType] char * +# 2172| ValueCategory = prvalue(load) +# 2172| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 2172| Type = [LValueReferenceType] const ClassWithDestructor & +# 2172| ValueCategory = prvalue(load) +# 2172| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2172| Type = [SpecifiedType] const ClassWithDestructor +# 2172| ValueCategory = lvalue +# 2172| getEntryPoint(): [BlockStmt] { ... } +# 2172| getStmt(0): [ReturnStmt] return ... +# 2175| [Constructor] void ClassWithDestructor::ClassWithDestructor() +# 2175| <params>: +# 2175| <initializations>: +# 2175| getEntryPoint(): [BlockStmt] { ... } +# 2175| getStmt(0): [ExprStmt] ExprStmt +# 2175| getExpr(): [AssignExpr] ... = ... +# 2175| Type = [CharPointerType] char * +# 2175| ValueCategory = lvalue +# 2175| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2175| Type = [CharPointerType] char * +# 2175| ValueCategory = lvalue +# 2175| getQualifier(): [ThisExpr] this +# 2175| Type = [PointerType] ClassWithDestructor * +# 2175| ValueCategory = prvalue(load) +# 2175| getRValue(): [NewExpr] new +# 2175| Type = [CharPointerType] char * +# 2175| ValueCategory = prvalue +# 2175| getStmt(1): [ReturnStmt] return ... +# 2176| [Destructor] void ClassWithDestructor::~ClassWithDestructor() +# 2176| <params>: +# 2176| getEntryPoint(): [BlockStmt] { ... } +# 2176| getStmt(0): [ExprStmt] ExprStmt +# 2176| getExpr(): [DeleteExpr] delete +# 2176| Type = [VoidType] void +# 2176| ValueCategory = prvalue +# 2176| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2176| Type = [CharPointerType] char * +# 2176| ValueCategory = prvalue(load) +# 2176| getQualifier(): [ThisExpr] this +# 2176| Type = [PointerType] ClassWithDestructor * +# 2176| ValueCategory = prvalue(load) +# 2176| getStmt(1): [ReturnStmt] return ... +# 2176| <destructions>: +# 2178| [MemberFunction] void ClassWithDestructor::set_x(char) +# 2178| <params>: +# 2178| getParameter(0): [Parameter] y +# 2178| Type = [PlainCharType] char +# 2178| getEntryPoint(): [BlockStmt] { ... } +# 2178| getStmt(0): [ExprStmt] ExprStmt +# 2178| getExpr(): [AssignExpr] ... = ... +# 2178| Type = [PlainCharType] char +# 2178| ValueCategory = lvalue +# 2178| getLValue(): [PointerDereferenceExpr] * ... +# 2178| Type = [PlainCharType] char +# 2178| ValueCategory = lvalue +# 2178| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2178| Type = [CharPointerType] char * +# 2178| ValueCategory = prvalue(load) +# 2178| getQualifier(): [ThisExpr] this +# 2178| Type = [PointerType] ClassWithDestructor * +# 2178| ValueCategory = prvalue(load) +# 2178| getRValue(): [VariableAccess] y +# 2178| Type = [PlainCharType] char +# 2178| ValueCategory = prvalue(load) +# 2178| getStmt(1): [ReturnStmt] return ... +# 2179| [MemberFunction] char ClassWithDestructor::get_x() +# 2179| <params>: +# 2179| getEntryPoint(): [BlockStmt] { ... } +# 2179| getStmt(0): [ReturnStmt] return ... +# 2179| getExpr(): [PointerDereferenceExpr] * ... +# 2179| Type = [PlainCharType] char +# 2179| ValueCategory = prvalue(load) +# 2179| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2179| Type = [CharPointerType] char * +# 2179| ValueCategory = prvalue(load) +# 2179| getQualifier(): [ThisExpr] this +# 2179| Type = [PointerType] ClassWithDestructor * +# 2179| ValueCategory = prvalue(load) +# 2182| [GlobalVariable] bool initialization_with_destructor_bool +# 2182| getInitializer(): [Initializer] initializer for initialization_with_destructor_bool +# 2182| getExpr(): [Literal] 1 +# 2182| Type = [BoolType] bool +# 2182| Value = [Literal] 1 +# 2182| ValueCategory = prvalue +# 2184| [TopLevelFunction] void initialization_with_destructor(bool, char) +# 2184| <params>: +# 2184| getParameter(0): [Parameter] b +# 2184| Type = [BoolType] bool +# 2184| getParameter(1): [Parameter] c +# 2184| Type = [PlainCharType] char +# 2184| getEntryPoint(): [BlockStmt] { ... } +# 2185| getStmt(0): [IfStmt] if (...) ... +# 2185| getInitialization(): [DeclStmt] declaration +# 2185| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2185| Type = [Class] ClassWithDestructor +# 2185| getVariable().getInitializer(): [Initializer] initializer for x +# 2185| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2185| Type = [VoidType] void +# 2185| ValueCategory = prvalue +# 2185| getCondition(): [VariableAccess] b +# 2185| Type = [BoolType] bool +# 2185| ValueCategory = prvalue(load) +# 2186| getThen(): [ExprStmt] ExprStmt +# 2186| getExpr(): [FunctionCall] call to set_x +# 2186| Type = [VoidType] void +# 2186| ValueCategory = prvalue +# 2186| getQualifier(): [VariableAccess] x +# 2186| Type = [Class] ClassWithDestructor +# 2186| ValueCategory = lvalue +# 2186| getArgument(0): [CharLiteral] 97 +# 2186| Type = [PlainCharType] char +# 2186| Value = [CharLiteral] 97 +# 2186| ValueCategory = prvalue +# 2186| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2186| Type = [VoidType] void +# 2186| ValueCategory = prvalue +# 2186| getQualifier(): [VariableAccess] x +# 2186| Type = [Class] ClassWithDestructor +# 2186| ValueCategory = lvalue +# 2188| getStmt(1): [ConstexprIfStmt] if constexpr (...) ... +# 2188| getInitialization(): [DeclStmt] declaration +# 2188| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2188| Type = [Class] ClassWithDestructor +# 2188| getVariable().getInitializer(): [Initializer] initializer for x +# 2188| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2188| Type = [VoidType] void +# 2188| ValueCategory = prvalue +# 2188| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2188| Type = [BoolType] bool +# 2188| Value = [VariableAccess] 1 +# 2188| ValueCategory = prvalue(load) +# 2189| getThen(): [ExprStmt] ExprStmt +# 2189| getExpr(): [FunctionCall] call to set_x +# 2189| Type = [VoidType] void +# 2189| ValueCategory = prvalue +# 2189| getQualifier(): [VariableAccess] x +# 2189| Type = [Class] ClassWithDestructor +# 2189| ValueCategory = lvalue +# 2189| getArgument(0): [CharLiteral] 97 +# 2189| Type = [PlainCharType] char +# 2189| Value = [CharLiteral] 97 +# 2189| ValueCategory = prvalue +# 2189| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2189| Type = [VoidType] void +# 2189| ValueCategory = prvalue +# 2189| getQualifier(): [VariableAccess] x +# 2189| Type = [Class] ClassWithDestructor +# 2189| ValueCategory = lvalue +# 2191| getStmt(2): [SwitchStmt] switch (...) ... +# 2191| getInitialization(): [DeclStmt] declaration +# 2191| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2191| Type = [Class] ClassWithDestructor +# 2191| getVariable().getInitializer(): [Initializer] initializer for x +# 2191| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2191| Type = [VoidType] void +# 2191| ValueCategory = prvalue +# 2191| getExpr(): [VariableAccess] c +# 2191| Type = [PlainCharType] char +# 2191| ValueCategory = prvalue(load) +# 2191| getStmt(): [BlockStmt] { ... } +# 2192| getStmt(0): [SwitchCase] case ...: +# 2192| getExpr(): [CharLiteral] 97 +# 2192| Type = [PlainCharType] char +# 2192| Value = [CharLiteral] 97 +# 2192| ValueCategory = prvalue +# 2192| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2192| Conversion = [IntegralConversion] integral conversion +# 2192| Type = [IntType] int +# 2192| Value = [CStyleCast] 97 +# 2192| ValueCategory = prvalue +# 2193| getStmt(1): [ExprStmt] ExprStmt +# 2193| getExpr(): [FunctionCall] call to set_x +# 2193| Type = [VoidType] void +# 2193| ValueCategory = prvalue +# 2193| getQualifier(): [VariableAccess] x +# 2193| Type = [Class] ClassWithDestructor +# 2193| ValueCategory = lvalue +# 2193| getArgument(0): [CharLiteral] 97 +# 2193| Type = [PlainCharType] char +# 2193| Value = [CharLiteral] 97 +# 2193| ValueCategory = prvalue +# 2194| getStmt(2): [BreakStmt] break; +# 2195| getStmt(3): [SwitchCase] default: +# 2196| getStmt(4): [ExprStmt] ExprStmt +# 2196| getExpr(): [FunctionCall] call to set_x +# 2196| Type = [VoidType] void +# 2196| ValueCategory = prvalue +# 2196| getQualifier(): [VariableAccess] x +# 2196| Type = [Class] ClassWithDestructor +# 2196| ValueCategory = lvalue +# 2196| getArgument(0): [CharLiteral] 98 +# 2196| Type = [PlainCharType] char +# 2196| Value = [CharLiteral] 98 +# 2196| ValueCategory = prvalue +# 2197| getStmt(5): [BreakStmt] break; +# 2198| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2198| Type = [VoidType] void +# 2198| ValueCategory = prvalue +# 2198| getQualifier(): [VariableAccess] x +# 2198| Type = [Class] ClassWithDestructor +# 2198| ValueCategory = lvalue +# 2191| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2191| Conversion = [IntegralConversion] integral conversion +# 2191| Type = [IntType] int +# 2191| ValueCategory = prvalue +# 2198| getStmt(3): [LabelStmt] label ...: +# 2200| getStmt(4): [DeclStmt] declaration +# 2200| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2200| Type = [Class] ClassWithDestructor +# 2200| getVariable().getInitializer(): [Initializer] initializer for x +# 2200| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2200| Type = [VoidType] void +# 2200| ValueCategory = prvalue +# 2201| getStmt(5): [RangeBasedForStmt] for(...:...) ... +# 2201| getInitialization(): [DeclStmt] declaration +# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2201| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2201| getVariable().getInitializer(): [Initializer] initializer for ys +# 2201| getExpr(): [ConstructorCall] call to vector +# 2201| Type = [VoidType] void +# 2201| ValueCategory = prvalue +# 2201| getArgument(0): [VariableAccess] x +# 2201| Type = [Class] ClassWithDestructor +# 2201| ValueCategory = prvalue(load) +# 2201| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2201| Type = [Class] ClassWithDestructor +# 2201| ValueCategory = lvalue +# 2201| getChild(1): [DeclStmt] declaration +# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2154| getExpr(): [VariableAccess] ys -# 2154| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2154| ValueCategory = lvalue -# 2154| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2154| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2154| ValueCategory = prvalue -# 2154| getBeginEndDeclaration(): [DeclStmt] declaration -# 2154| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2154| Type = [NestedStruct] iterator +# 2201| getExpr(): [VariableAccess] ys +# 2201| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2201| ValueCategory = lvalue +# 2201| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2201| ValueCategory = prvalue +# 2201| getBeginEndDeclaration(): [DeclStmt] declaration +# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2154| getExpr(): [FunctionCall] call to begin -# 2154| Type = [NestedStruct] iterator -# 2154| ValueCategory = prvalue -# 2154| getQualifier(): [VariableAccess] (__range) -# 2154| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2154| ValueCategory = prvalue(load) +# 2201| getExpr(): [FunctionCall] call to begin +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [VariableAccess] (__range) +# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2201| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -16963,15 +17081,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2154| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2154| Type = [NestedStruct] iterator +# 2201| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2154| getExpr(): [FunctionCall] call to end -# 2154| Type = [NestedStruct] iterator -# 2154| ValueCategory = prvalue -# 2154| getQualifier(): [VariableAccess] (__range) -# 2154| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2154| ValueCategory = prvalue(load) +# 2201| getExpr(): [FunctionCall] call to end +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [VariableAccess] (__range) +# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2201| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -16979,102 +17097,115 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2154| getCondition(): [FunctionCall] call to operator!= -# 2154| Type = [BoolType] bool -# 2154| ValueCategory = prvalue -# 2154| getQualifier(): [VariableAccess] (__begin) -# 2154| Type = [NestedStruct] iterator -# 2154| ValueCategory = lvalue -# 2154| getArgument(0): [VariableAccess] (__end) -# 2154| Type = [NestedStruct] iterator -# 2154| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 2201| getCondition(): [FunctionCall] call to operator!= +# 2201| Type = [BoolType] bool +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [VariableAccess] (__begin) +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2201| ValueCategory = lvalue +# 2201| getArgument(0): [ConstructorCall] call to iterator +# 2201| Type = [VoidType] void +# 2201| ValueCategory = prvalue +# 2201| getArgument(0): [VariableAccess] (__end) +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2201| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2154| getUpdate(): [FunctionCall] call to operator++ -# 2154| Type = [LValueReferenceType] iterator & -# 2154| ValueCategory = prvalue -# 2154| getQualifier(): [VariableAccess] (__begin) -# 2154| Type = [NestedStruct] iterator -# 2154| ValueCategory = lvalue -# 2154| getChild(5): [DeclStmt] declaration -# 2154| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2154| Type = [Class] ClassWithDestructor -# 2154| getVariable().getInitializer(): [Initializer] initializer for y -# 2154| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2154| Type = [LValueReferenceType] ClassWithDestructor & -# 2154| ValueCategory = prvalue -# 2154| getQualifier(): [VariableAccess] (__begin) -# 2154| Type = [NestedStruct] iterator -# 2154| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 2201| getUpdate(): [FunctionCall] call to operator++ +# 2201| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [VariableAccess] (__begin) +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2201| ValueCategory = lvalue +# 2201| getChild(5): [DeclStmt] declaration +# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2201| Type = [Class] ClassWithDestructor +# 2201| getVariable().getInitializer(): [Initializer] initializer for y +# 2201| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2201| Type = [LValueReferenceType] ClassWithDestructor & +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [VariableAccess] (__begin) +# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2201| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2154| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2154| Type = [Class] ClassWithDestructor -# 2154| ValueCategory = prvalue(load) -# 2155| getStmt(): [ExprStmt] ExprStmt -# 2155| getExpr(): [FunctionCall] call to set_x -# 2155| Type = [VoidType] void -# 2155| ValueCategory = prvalue -# 2155| getQualifier(): [VariableAccess] y -# 2155| Type = [Class] ClassWithDestructor -# 2155| ValueCategory = lvalue -# 2155| getArgument(0): [CharLiteral] 97 -# 2155| Type = [PlainCharType] char -# 2155| Value = [CharLiteral] 97 -# 2155| ValueCategory = prvalue -# 2154| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2154| Type = [VoidType] void -# 2154| ValueCategory = prvalue -# 2154| getQualifier(): [VariableAccess] y -# 2154| Type = [Class] ClassWithDestructor -# 2154| ValueCategory = lvalue -# 2154| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2154| Type = [VoidType] void -# 2154| ValueCategory = prvalue -# 2154| getQualifier(): [VariableAccess] ys -# 2154| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2154| ValueCategory = lvalue -# 2154| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2154| Type = [NestedStruct] iterator -# 2154| ValueCategory = lvalue -# 2157| getStmt(6): [RangeBasedForStmt] for(...:...) ... -# 2157| getInitialization(): [DeclStmt] declaration -# 2157| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2157| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2157| getVariable().getInitializer(): [Initializer] initializer for ys -# 2157| getExpr(): [ConstructorCall] call to vector -# 2157| Type = [VoidType] void -# 2157| ValueCategory = prvalue -# 2157| getArgument(0): [VariableAccess] x -# 2157| Type = [Class] ClassWithDestructor -# 2157| ValueCategory = prvalue(load) -# 2157| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2157| Type = [Class] ClassWithDestructor -# 2157| ValueCategory = lvalue -# 2157| getChild(1): [DeclStmt] declaration -# 2157| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2157| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2201| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2201| Type = [Class] ClassWithDestructor +# 2201| ValueCategory = prvalue(load) +# 2202| getStmt(): [ExprStmt] ExprStmt +# 2202| getExpr(): [FunctionCall] call to set_x +# 2202| Type = [VoidType] void +# 2202| ValueCategory = prvalue +# 2202| getQualifier(): [VariableAccess] y +# 2202| Type = [Class] ClassWithDestructor +# 2202| ValueCategory = lvalue +# 2202| getArgument(0): [CharLiteral] 97 +# 2202| Type = [PlainCharType] char +# 2202| Value = [CharLiteral] 97 +# 2202| ValueCategory = prvalue +# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2201| Type = [VoidType] void +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [VariableAccess] y +# 2201| Type = [Class] ClassWithDestructor +# 2201| ValueCategory = lvalue +# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2201| Type = [VoidType] void +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [VariableAccess] ys +# 2201| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2201| ValueCategory = lvalue +# 2201| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2201| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +# 2201| ValueCategory = lvalue +# 2204| getStmt(6): [RangeBasedForStmt] for(...:...) ... +# 2204| getInitialization(): [DeclStmt] declaration +# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2204| getVariable().getInitializer(): [Initializer] initializer for ys +# 2204| getExpr(): [ConstructorCall] call to vector +# 2204| Type = [VoidType] void +# 2204| ValueCategory = prvalue +# 2204| getArgument(0): [VariableAccess] x +# 2204| Type = [Class] ClassWithDestructor +# 2204| ValueCategory = prvalue(load) +# 2204| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2204| Type = [Class] ClassWithDestructor +# 2204| ValueCategory = lvalue +# 2204| getChild(1): [DeclStmt] declaration +# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2157| getExpr(): [VariableAccess] ys -# 2157| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2157| ValueCategory = lvalue -# 2157| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2157| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2157| ValueCategory = prvalue -# 2157| getBeginEndDeclaration(): [DeclStmt] declaration -# 2157| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2157| Type = [NestedStruct] iterator +# 2204| getExpr(): [VariableAccess] ys +# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2204| ValueCategory = lvalue +# 2204| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2204| ValueCategory = prvalue +# 2204| getBeginEndDeclaration(): [DeclStmt] declaration +# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2157| getExpr(): [FunctionCall] call to begin -# 2157| Type = [NestedStruct] iterator -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] (__range) -# 2157| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2157| ValueCategory = prvalue(load) +# 2204| getExpr(): [FunctionCall] call to begin +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] (__range) +# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2204| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17082,15 +17213,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2157| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2157| Type = [NestedStruct] iterator +# 2204| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2157| getExpr(): [FunctionCall] call to end -# 2157| Type = [NestedStruct] iterator -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] (__range) -# 2157| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2157| ValueCategory = prvalue(load) +# 2204| getExpr(): [FunctionCall] call to end +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] (__range) +# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2204| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17098,143 +17229,156 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2157| getCondition(): [FunctionCall] call to operator!= -# 2157| Type = [BoolType] bool -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] (__begin) -# 2157| Type = [NestedStruct] iterator -# 2157| ValueCategory = lvalue -# 2157| getArgument(0): [VariableAccess] (__end) -# 2157| Type = [NestedStruct] iterator -# 2157| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 2204| getCondition(): [FunctionCall] call to operator!= +# 2204| Type = [BoolType] bool +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] (__begin) +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2204| ValueCategory = lvalue +# 2204| getArgument(0): [ConstructorCall] call to iterator +# 2204| Type = [VoidType] void +# 2204| ValueCategory = prvalue +# 2204| getArgument(0): [VariableAccess] (__end) +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2204| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2157| getUpdate(): [FunctionCall] call to operator++ -# 2157| Type = [LValueReferenceType] iterator & -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] (__begin) -# 2157| Type = [NestedStruct] iterator -# 2157| ValueCategory = lvalue -# 2157| getChild(5): [DeclStmt] declaration -# 2157| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2157| Type = [Class] ClassWithDestructor -# 2157| getVariable().getInitializer(): [Initializer] initializer for y -# 2157| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2157| Type = [LValueReferenceType] ClassWithDestructor & -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] (__begin) -# 2157| Type = [NestedStruct] iterator -# 2157| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 2204| getUpdate(): [FunctionCall] call to operator++ +# 2204| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] (__begin) +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2204| ValueCategory = lvalue +# 2204| getChild(5): [DeclStmt] declaration +# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2204| Type = [Class] ClassWithDestructor +# 2204| getVariable().getInitializer(): [Initializer] initializer for y +# 2204| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2204| Type = [LValueReferenceType] ClassWithDestructor & +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] (__begin) +# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2204| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2157| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2157| Type = [Class] ClassWithDestructor -# 2157| ValueCategory = prvalue(load) -# 2157| getStmt(): [BlockStmt] { ... } -# 2158| getStmt(0): [ExprStmt] ExprStmt -# 2158| getExpr(): [FunctionCall] call to set_x -# 2158| Type = [VoidType] void -# 2158| ValueCategory = prvalue -# 2158| getQualifier(): [VariableAccess] y -# 2158| Type = [Class] ClassWithDestructor -# 2158| ValueCategory = lvalue -# 2158| getArgument(0): [CharLiteral] 97 -# 2158| Type = [PlainCharType] char -# 2158| Value = [CharLiteral] 97 -# 2158| ValueCategory = prvalue -# 2159| getStmt(1): [IfStmt] if (...) ... -# 2159| getCondition(): [EQExpr] ... == ... -# 2159| Type = [BoolType] bool -# 2159| ValueCategory = prvalue -# 2159| getLeftOperand(): [FunctionCall] call to get_x -# 2159| Type = [PlainCharType] char -# 2159| ValueCategory = prvalue -# 2159| getQualifier(): [VariableAccess] y -# 2159| Type = [Class] ClassWithDestructor -# 2159| ValueCategory = lvalue -# 2159| getRightOperand(): [CharLiteral] 98 -# 2159| Type = [PlainCharType] char -# 2159| Value = [CharLiteral] 98 -# 2159| ValueCategory = prvalue -# 2159| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... -# 2159| Conversion = [IntegralConversion] integral conversion -# 2159| Type = [IntType] int -# 2159| ValueCategory = prvalue -# 2159| getRightOperand().getFullyConverted(): [CStyleCast] (int)... -# 2159| Conversion = [IntegralConversion] integral conversion -# 2159| Type = [IntType] int -# 2159| Value = [CStyleCast] 98 -# 2159| ValueCategory = prvalue -# 2160| getThen(): [ReturnStmt] return ... -# 2157| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2157| Type = [VoidType] void -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] y -# 2157| Type = [Class] ClassWithDestructor -# 2157| ValueCategory = lvalue -# 2157| getImplicitDestructorCall(1): [DestructorCall] call to ~vector -# 2157| Type = [VoidType] void -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] ys -# 2157| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2157| ValueCategory = lvalue -# 2172| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor -# 2172| Type = [VoidType] void -# 2172| ValueCategory = prvalue -# 2172| getQualifier(): [VariableAccess] x -# 2172| Type = [Class] ClassWithDestructor -# 2172| ValueCategory = lvalue -# 2157| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2157| Type = [VoidType] void -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] y -# 2157| Type = [Class] ClassWithDestructor -# 2157| ValueCategory = lvalue -# 2157| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2157| Type = [VoidType] void -# 2157| ValueCategory = prvalue -# 2157| getQualifier(): [VariableAccess] ys -# 2157| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2157| ValueCategory = lvalue -# 2157| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2157| Type = [NestedStruct] iterator -# 2157| ValueCategory = lvalue -# 2163| getStmt(7): [RangeBasedForStmt] for(...:...) ... -# 2163| getInitialization(): [DeclStmt] declaration -# 2163| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2163| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2163| getVariable().getInitializer(): [Initializer] initializer for ys -# 2163| getExpr(): [ConstructorCall] call to vector -# 2163| Type = [VoidType] void -# 2163| ValueCategory = prvalue -# 2163| getArgument(0): [Literal] 1 -# 2163| Type = [IntType] int -# 2163| Value = [Literal] 1 -# 2163| ValueCategory = prvalue -# 2163| getChild(1): [DeclStmt] declaration -# 2163| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2163| Type = [LValueReferenceType] vector<int> & +# 2204| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2204| Type = [Class] ClassWithDestructor +# 2204| ValueCategory = prvalue(load) +# 2204| getStmt(): [BlockStmt] { ... } +# 2205| getStmt(0): [ExprStmt] ExprStmt +# 2205| getExpr(): [FunctionCall] call to set_x +# 2205| Type = [VoidType] void +# 2205| ValueCategory = prvalue +# 2205| getQualifier(): [VariableAccess] y +# 2205| Type = [Class] ClassWithDestructor +# 2205| ValueCategory = lvalue +# 2205| getArgument(0): [CharLiteral] 97 +# 2205| Type = [PlainCharType] char +# 2205| Value = [CharLiteral] 97 +# 2205| ValueCategory = prvalue +# 2206| getStmt(1): [IfStmt] if (...) ... +# 2206| getCondition(): [EQExpr] ... == ... +# 2206| Type = [BoolType] bool +# 2206| ValueCategory = prvalue +# 2206| getLeftOperand(): [FunctionCall] call to get_x +# 2206| Type = [PlainCharType] char +# 2206| ValueCategory = prvalue +# 2206| getQualifier(): [VariableAccess] y +# 2206| Type = [Class] ClassWithDestructor +# 2206| ValueCategory = lvalue +# 2206| getRightOperand(): [CharLiteral] 98 +# 2206| Type = [PlainCharType] char +# 2206| Value = [CharLiteral] 98 +# 2206| ValueCategory = prvalue +# 2206| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2206| Conversion = [IntegralConversion] integral conversion +# 2206| Type = [IntType] int +# 2206| ValueCategory = prvalue +# 2206| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 2206| Conversion = [IntegralConversion] integral conversion +# 2206| Type = [IntType] int +# 2206| Value = [CStyleCast] 98 +# 2206| ValueCategory = prvalue +# 2207| getThen(): [ReturnStmt] return ... +# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2204| Type = [VoidType] void +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] y +# 2204| Type = [Class] ClassWithDestructor +# 2204| ValueCategory = lvalue +# 2204| getImplicitDestructorCall(1): [DestructorCall] call to ~vector +# 2204| Type = [VoidType] void +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] ys +# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2204| ValueCategory = lvalue +# 2219| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor +# 2219| Type = [VoidType] void +# 2219| ValueCategory = prvalue +# 2219| getQualifier(): [VariableAccess] x +# 2219| Type = [Class] ClassWithDestructor +# 2219| ValueCategory = lvalue +# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2204| Type = [VoidType] void +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] y +# 2204| Type = [Class] ClassWithDestructor +# 2204| ValueCategory = lvalue +# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2204| Type = [VoidType] void +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [VariableAccess] ys +# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2204| ValueCategory = lvalue +# 2204| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2204| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +# 2204| ValueCategory = lvalue +# 2210| getStmt(7): [RangeBasedForStmt] for(...:...) ... +# 2210| getInitialization(): [DeclStmt] declaration +# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2210| getVariable().getInitializer(): [Initializer] initializer for ys +# 2210| getExpr(): [ConstructorCall] call to vector +# 2210| Type = [VoidType] void +# 2210| ValueCategory = prvalue +# 2210| getArgument(0): [Literal] 1 +# 2210| Type = [IntType] int +# 2210| Value = [Literal] 1 +# 2210| ValueCategory = prvalue +# 2210| getChild(1): [DeclStmt] declaration +# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2210| Type = [LValueReferenceType] vector<int> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2163| getExpr(): [VariableAccess] ys -# 2163| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2163| ValueCategory = lvalue -# 2163| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2163| Type = [LValueReferenceType] vector<int> & -# 2163| ValueCategory = prvalue -# 2163| getBeginEndDeclaration(): [DeclStmt] declaration -# 2163| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2163| Type = [NestedStruct] iterator +# 2210| getExpr(): [VariableAccess] ys +# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2210| ValueCategory = lvalue +# 2210| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2210| Type = [LValueReferenceType] vector<int> & +# 2210| ValueCategory = prvalue +# 2210| getBeginEndDeclaration(): [DeclStmt] declaration +# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2163| getExpr(): [FunctionCall] call to begin -# 2163| Type = [NestedStruct] iterator -# 2163| ValueCategory = prvalue -# 2163| getQualifier(): [VariableAccess] (__range) -# 2163| Type = [LValueReferenceType] vector<int> & -# 2163| ValueCategory = prvalue(load) +# 2210| getExpr(): [FunctionCall] call to begin +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] (__range) +# 2210| Type = [LValueReferenceType] vector<int> & +# 2210| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<int>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<int> @@ -17242,15 +17386,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<int> #-----| ValueCategory = lvalue -# 2163| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2163| Type = [NestedStruct] iterator +# 2210| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2163| getExpr(): [FunctionCall] call to end -# 2163| Type = [NestedStruct] iterator -# 2163| ValueCategory = prvalue -# 2163| getQualifier(): [VariableAccess] (__range) -# 2163| Type = [LValueReferenceType] vector<int> & -# 2163| ValueCategory = prvalue(load) +# 2210| getExpr(): [FunctionCall] call to end +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] (__range) +# 2210| Type = [LValueReferenceType] vector<int> & +# 2210| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<int>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<int> @@ -17258,110 +17402,123 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<int> #-----| ValueCategory = lvalue -# 2163| getCondition(): [FunctionCall] call to operator!= -# 2163| Type = [BoolType] bool -# 2163| ValueCategory = prvalue -# 2163| getQualifier(): [VariableAccess] (__begin) -# 2163| Type = [NestedStruct] iterator -# 2163| ValueCategory = lvalue -# 2163| getArgument(0): [VariableAccess] (__end) -# 2163| Type = [NestedStruct] iterator -# 2163| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 2210| getCondition(): [FunctionCall] call to operator!= +# 2210| Type = [BoolType] bool +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] (__begin) +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2210| ValueCategory = lvalue +# 2210| getArgument(0): [ConstructorCall] call to iterator +# 2210| Type = [VoidType] void +# 2210| ValueCategory = prvalue +# 2210| getArgument(0): [VariableAccess] (__end) +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2210| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 2163| getUpdate(): [FunctionCall] call to operator++ -# 2163| Type = [LValueReferenceType] iterator & -# 2163| ValueCategory = prvalue -# 2163| getQualifier(): [VariableAccess] (__begin) -# 2163| Type = [NestedStruct] iterator -# 2163| ValueCategory = lvalue -# 2163| getChild(5): [DeclStmt] declaration -# 2163| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2163| Type = [IntType] int -# 2163| getVariable().getInitializer(): [Initializer] initializer for y -# 2163| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2163| Type = [LValueReferenceType] int & -# 2163| ValueCategory = prvalue -# 2163| getQualifier(): [VariableAccess] (__begin) -# 2163| Type = [NestedStruct] iterator -# 2163| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 2210| getUpdate(): [FunctionCall] call to operator++ +# 2210| Type = [LValueReferenceType] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] (__begin) +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2210| ValueCategory = lvalue +# 2210| getChild(5): [DeclStmt] declaration +# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2210| Type = [IntType] int +# 2210| getVariable().getInitializer(): [Initializer] initializer for y +# 2210| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2210| Type = [LValueReferenceType] int & +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] (__begin) +# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2210| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 2163| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2163| Type = [IntType] int -# 2163| ValueCategory = prvalue(load) -# 2163| getStmt(): [BlockStmt] { ... } -# 2164| getStmt(0): [IfStmt] if (...) ... -# 2164| getCondition(): [EQExpr] ... == ... -# 2164| Type = [BoolType] bool -# 2164| ValueCategory = prvalue -# 2164| getLeftOperand(): [VariableAccess] y -# 2164| Type = [IntType] int -# 2164| ValueCategory = prvalue(load) -# 2164| getRightOperand(): [Literal] 1 -# 2164| Type = [IntType] int -# 2164| Value = [Literal] 1 -# 2164| ValueCategory = prvalue -# 2165| getThen(): [ReturnStmt] return ... -# 2163| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2163| Type = [VoidType] void -# 2163| ValueCategory = prvalue -# 2163| getQualifier(): [VariableAccess] ys -# 2163| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2163| ValueCategory = lvalue -# 2172| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2172| Type = [VoidType] void -# 2172| ValueCategory = prvalue -# 2172| getQualifier(): [VariableAccess] x -# 2172| Type = [Class] ClassWithDestructor -# 2172| ValueCategory = lvalue -# 2163| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2163| Type = [VoidType] void -# 2163| ValueCategory = prvalue -# 2163| getQualifier(): [VariableAccess] ys -# 2163| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2163| ValueCategory = lvalue -# 2163| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2163| Type = [NestedStruct] iterator -# 2163| ValueCategory = lvalue -# 2168| getStmt(8): [RangeBasedForStmt] for(...:...) ... -# 2168| getInitialization(): [DeclStmt] declaration -# 2168| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2168| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2168| getVariable().getInitializer(): [Initializer] initializer for ys -# 2168| getExpr(): [ConstructorCall] call to vector -# 2168| Type = [VoidType] void -# 2168| ValueCategory = prvalue -# 2168| getArgument(0): [VariableAccess] x -# 2168| Type = [Class] ClassWithDestructor -# 2168| ValueCategory = prvalue(load) -# 2168| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2168| Type = [Class] ClassWithDestructor -# 2168| ValueCategory = lvalue -# 2168| getChild(1): [DeclStmt] declaration -# 2168| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2168| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2210| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2210| Type = [IntType] int +# 2210| ValueCategory = prvalue(load) +# 2210| getStmt(): [BlockStmt] { ... } +# 2211| getStmt(0): [IfStmt] if (...) ... +# 2211| getCondition(): [EQExpr] ... == ... +# 2211| Type = [BoolType] bool +# 2211| ValueCategory = prvalue +# 2211| getLeftOperand(): [VariableAccess] y +# 2211| Type = [IntType] int +# 2211| ValueCategory = prvalue(load) +# 2211| getRightOperand(): [Literal] 1 +# 2211| Type = [IntType] int +# 2211| Value = [Literal] 1 +# 2211| ValueCategory = prvalue +# 2212| getThen(): [ReturnStmt] return ... +# 2210| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2210| Type = [VoidType] void +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] ys +# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2210| ValueCategory = lvalue +# 2219| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2219| Type = [VoidType] void +# 2219| ValueCategory = prvalue +# 2219| getQualifier(): [VariableAccess] x +# 2219| Type = [Class] ClassWithDestructor +# 2219| ValueCategory = lvalue +# 2210| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2210| Type = [VoidType] void +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] ys +# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2210| ValueCategory = lvalue +# 2210| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2210| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +# 2210| ValueCategory = lvalue +# 2215| getStmt(8): [RangeBasedForStmt] for(...:...) ... +# 2215| getInitialization(): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2215| getVariable().getInitializer(): [Initializer] initializer for ys +# 2215| getExpr(): [ConstructorCall] call to vector +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getArgument(0): [VariableAccess] x +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = prvalue(load) +# 2215| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = lvalue +# 2215| getChild(1): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2168| getExpr(): [VariableAccess] ys -# 2168| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2168| ValueCategory = lvalue -# 2168| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2168| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2168| ValueCategory = prvalue -# 2168| getBeginEndDeclaration(): [DeclStmt] declaration -# 2168| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2168| Type = [NestedStruct] iterator +# 2215| getExpr(): [VariableAccess] ys +# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2215| ValueCategory = lvalue +# 2215| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2215| ValueCategory = prvalue +# 2215| getBeginEndDeclaration(): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2168| getExpr(): [FunctionCall] call to begin -# 2168| Type = [NestedStruct] iterator -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] (__range) -# 2168| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2168| ValueCategory = prvalue(load) +# 2215| getExpr(): [FunctionCall] call to begin +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__range) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2215| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17369,15 +17526,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2168| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2168| Type = [NestedStruct] iterator +# 2215| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2168| getExpr(): [FunctionCall] call to end -# 2168| Type = [NestedStruct] iterator -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] (__range) -# 2168| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2168| ValueCategory = prvalue(load) +# 2215| getExpr(): [FunctionCall] call to end +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__range) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2215| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17385,591 +17542,604 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2168| getCondition(): [FunctionCall] call to operator!= -# 2168| Type = [BoolType] bool -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] (__begin) -# 2168| Type = [NestedStruct] iterator -# 2168| ValueCategory = lvalue -# 2168| getArgument(0): [VariableAccess] (__end) -# 2168| Type = [NestedStruct] iterator -# 2168| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +# 2215| getCondition(): [FunctionCall] call to operator!= +# 2215| Type = [BoolType] bool +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue +# 2215| getArgument(0): [ConstructorCall] call to iterator +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getArgument(0): [VariableAccess] (__end) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2168| getUpdate(): [FunctionCall] call to operator++ -# 2168| Type = [LValueReferenceType] iterator & -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] (__begin) -# 2168| Type = [NestedStruct] iterator -# 2168| ValueCategory = lvalue -# 2168| getChild(5): [DeclStmt] declaration -# 2168| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2168| Type = [Class] ClassWithDestructor -# 2168| getVariable().getInitializer(): [Initializer] initializer for y -# 2168| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2168| Type = [LValueReferenceType] ClassWithDestructor & -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] (__begin) -# 2168| Type = [NestedStruct] iterator -# 2168| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +#-----| ValueCategory = lvalue +# 2215| getUpdate(): [FunctionCall] call to operator++ +# 2215| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue +# 2215| getChild(5): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2215| Type = [Class] ClassWithDestructor +# 2215| getVariable().getInitializer(): [Initializer] initializer for y +# 2215| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2215| Type = [LValueReferenceType] ClassWithDestructor & +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2168| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2168| Type = [Class] ClassWithDestructor -# 2168| ValueCategory = prvalue(load) -# 2168| getStmt(): [BlockStmt] { ... } -# 2169| getStmt(0): [DeclStmt] declaration -# 2169| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z1 -# 2169| Type = [Class] ClassWithDestructor -# 2169| getVariable().getInitializer(): [Initializer] initializer for z1 -# 2169| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2169| Type = [VoidType] void -# 2169| ValueCategory = prvalue -# 2170| getStmt(1): [DeclStmt] declaration -# 2170| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z2 -# 2170| Type = [Class] ClassWithDestructor -# 2170| getVariable().getInitializer(): [Initializer] initializer for z2 -# 2170| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2170| Type = [VoidType] void -# 2170| ValueCategory = prvalue -# 2171| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2171| Type = [VoidType] void -# 2171| ValueCategory = prvalue -# 2171| getQualifier(): [VariableAccess] z2 -# 2171| Type = [Class] ClassWithDestructor -# 2171| ValueCategory = lvalue -# 2171| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2171| Type = [VoidType] void -# 2171| ValueCategory = prvalue -# 2171| getQualifier(): [VariableAccess] z1 -# 2171| Type = [Class] ClassWithDestructor -# 2171| ValueCategory = lvalue -# 2168| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor -# 2168| Type = [VoidType] void -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] y -# 2168| Type = [Class] ClassWithDestructor -# 2168| ValueCategory = lvalue -# 2168| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2168| Type = [VoidType] void -# 2168| ValueCategory = prvalue -# 2168| getQualifier(): [VariableAccess] ys -# 2168| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2168| ValueCategory = lvalue -# 2168| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2168| Type = [NestedStruct] iterator -# 2168| ValueCategory = lvalue -# 2172| getStmt(9): [ReturnStmt] return ... -# 2172| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2172| Type = [VoidType] void -# 2172| ValueCategory = prvalue -# 2172| getQualifier(): [VariableAccess] x -# 2172| Type = [Class] ClassWithDestructor -# 2172| ValueCategory = lvalue -# 2174| [TopLevelFunction] void static_variable_with_destructor_1() -# 2174| <params>: -# 2174| getEntryPoint(): [BlockStmt] { ... } -# 2175| getStmt(0): [DeclStmt] declaration -# 2175| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2175| Type = [Class] ClassWithDestructor -# 2175| getVariable().getInitializer(): [Initializer] initializer for a -# 2175| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2175| Type = [VoidType] void -# 2175| ValueCategory = prvalue -# 2176| getStmt(1): [DeclStmt] declaration -# 2176| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2176| Type = [Class] ClassWithDestructor +# 2215| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = prvalue(load) +# 2215| getStmt(): [BlockStmt] { ... } +# 2216| getStmt(0): [DeclStmt] declaration +# 2216| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z1 +# 2216| Type = [Class] ClassWithDestructor +# 2216| getVariable().getInitializer(): [Initializer] initializer for z1 +# 2216| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2216| Type = [VoidType] void +# 2216| ValueCategory = prvalue +# 2217| getStmt(1): [DeclStmt] declaration +# 2217| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z2 +# 2217| Type = [Class] ClassWithDestructor +# 2217| getVariable().getInitializer(): [Initializer] initializer for z2 +# 2217| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2217| Type = [VoidType] void +# 2217| ValueCategory = prvalue +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] z2 +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = lvalue +# 2218| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] z1 +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = lvalue +# 2215| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] y +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = lvalue +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] ys +# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2215| ValueCategory = lvalue +# 2215| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2215| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +# 2215| ValueCategory = lvalue +# 2219| getStmt(9): [ReturnStmt] return ... +# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2219| Type = [VoidType] void +# 2219| ValueCategory = prvalue +# 2219| getQualifier(): [VariableAccess] x +# 2219| Type = [Class] ClassWithDestructor +# 2219| ValueCategory = lvalue +# 2221| [TopLevelFunction] void static_variable_with_destructor_1() +# 2221| <params>: +# 2221| getEntryPoint(): [BlockStmt] { ... } +# 2222| getStmt(0): [DeclStmt] declaration +# 2222| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2222| Type = [Class] ClassWithDestructor +# 2222| getVariable().getInitializer(): [Initializer] initializer for a +# 2222| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2222| Type = [VoidType] void +# 2222| ValueCategory = prvalue +# 2223| getStmt(1): [DeclStmt] declaration +# 2223| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2223| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for b #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2177| getStmt(2): [ReturnStmt] return ... -# 2177| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2177| Type = [VoidType] void -# 2177| ValueCategory = prvalue -# 2177| getQualifier(): [VariableAccess] a -# 2177| Type = [Class] ClassWithDestructor -# 2177| ValueCategory = lvalue -# 2179| [TopLevelFunction] void static_variable_with_destructor_2() -# 2179| <params>: -# 2179| getEntryPoint(): [BlockStmt] { ... } -# 2180| getStmt(0): [DeclStmt] declaration -# 2180| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2180| Type = [Class] ClassWithDestructor +# 2224| getStmt(2): [ReturnStmt] return ... +# 2224| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2224| Type = [VoidType] void +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] a +# 2224| Type = [Class] ClassWithDestructor +# 2224| ValueCategory = lvalue +# 2226| [TopLevelFunction] void static_variable_with_destructor_2() +# 2226| <params>: +# 2226| getEntryPoint(): [BlockStmt] { ... } +# 2227| getStmt(0): [DeclStmt] declaration +# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2227| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for a #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2181| getStmt(1): [DeclStmt] declaration -# 2181| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2181| Type = [Class] ClassWithDestructor -# 2181| getVariable().getInitializer(): [Initializer] initializer for b -# 2181| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2181| Type = [VoidType] void -# 2181| ValueCategory = prvalue -# 2182| getStmt(2): [ReturnStmt] return ... -# 2182| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2182| Type = [VoidType] void -# 2182| ValueCategory = prvalue -# 2182| getQualifier(): [VariableAccess] b -# 2182| Type = [Class] ClassWithDestructor -# 2182| ValueCategory = lvalue -# 2184| [TopLevelFunction] void static_variable_with_destructor_3() -# 2184| <params>: -# 2184| getEntryPoint(): [BlockStmt] { ... } -# 2185| getStmt(0): [DeclStmt] declaration -# 2185| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2185| Type = [Class] ClassWithDestructor -# 2185| getVariable().getInitializer(): [Initializer] initializer for a -# 2185| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2185| Type = [VoidType] void -# 2185| ValueCategory = prvalue -# 2186| getStmt(1): [DeclStmt] declaration -# 2186| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2186| Type = [Class] ClassWithDestructor -# 2186| getVariable().getInitializer(): [Initializer] initializer for b -# 2186| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2186| Type = [VoidType] void -# 2186| ValueCategory = prvalue -# 2187| getStmt(2): [DeclStmt] declaration -# 2187| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2187| Type = [Class] ClassWithDestructor +# 2228| getStmt(1): [DeclStmt] declaration +# 2228| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2228| Type = [Class] ClassWithDestructor +# 2228| getVariable().getInitializer(): [Initializer] initializer for b +# 2228| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2228| Type = [VoidType] void +# 2228| ValueCategory = prvalue +# 2229| getStmt(2): [ReturnStmt] return ... +# 2229| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2229| Type = [VoidType] void +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] b +# 2229| Type = [Class] ClassWithDestructor +# 2229| ValueCategory = lvalue +# 2231| [TopLevelFunction] void static_variable_with_destructor_3() +# 2231| <params>: +# 2231| getEntryPoint(): [BlockStmt] { ... } +# 2232| getStmt(0): [DeclStmt] declaration +# 2232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2232| Type = [Class] ClassWithDestructor +# 2232| getVariable().getInitializer(): [Initializer] initializer for a +# 2232| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2233| getStmt(1): [DeclStmt] declaration +# 2233| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2233| Type = [Class] ClassWithDestructor +# 2233| getVariable().getInitializer(): [Initializer] initializer for b +# 2233| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2233| Type = [VoidType] void +# 2233| ValueCategory = prvalue +# 2234| getStmt(2): [DeclStmt] declaration +# 2234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2234| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for c #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2188| getStmt(3): [ReturnStmt] return ... -# 2188| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2188| Type = [VoidType] void -# 2188| ValueCategory = prvalue -# 2188| getQualifier(): [VariableAccess] b -# 2188| Type = [Class] ClassWithDestructor -# 2188| ValueCategory = lvalue -# 2188| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2188| Type = [VoidType] void -# 2188| ValueCategory = prvalue -# 2188| getQualifier(): [VariableAccess] a -# 2188| Type = [Class] ClassWithDestructor -# 2188| ValueCategory = lvalue -# 2190| [GlobalVariable] ClassWithDestructor global_class_with_destructor -# 2190| getInitializer(): [Initializer] initializer for global_class_with_destructor -# 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 ... -# 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> && +# 2235| getStmt(3): [ReturnStmt] return ... +# 2235| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2235| Type = [VoidType] void +# 2235| ValueCategory = prvalue +# 2235| getQualifier(): [VariableAccess] b +# 2235| Type = [Class] ClassWithDestructor +# 2235| ValueCategory = lvalue +# 2235| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2235| Type = [VoidType] void +# 2235| ValueCategory = prvalue +# 2235| getQualifier(): [VariableAccess] a +# 2235| Type = [Class] ClassWithDestructor +# 2235| ValueCategory = lvalue +# 2237| [GlobalVariable] ClassWithDestructor global_class_with_destructor +# 2237| getInitializer(): [Initializer] initializer for global_class_with_destructor +# 2237| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2237| Type = [VoidType] void +# 2237| ValueCategory = prvalue +# 2241| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) +# 2241| <params>: +# 2241| getParameter(0): [Parameter] t +# 2241| Type = [LValueReferenceType] ClassWithDestructor & +# 2241| getEntryPoint(): [BlockStmt] { ... } +# 2241| getStmt(0): [ReturnStmt] return ... +# 2241| getExpr(): [VariableAccess] t +# 2241| Type = [LValueReferenceType] ClassWithDestructor & +# 2241| ValueCategory = prvalue(load) +# 2241| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2241| Type = [LValueReferenceType] ClassWithDestructor & +# 2241| ValueCategory = prvalue +# 2241| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2241| Type = [Class] ClassWithDestructor +# 2241| ValueCategory = lvalue +# 2241| [TemplateFunction,TopLevelFunction] T& vacuous_destructor_call::get<T>(T&) +# 2241| <params>: +# 2241| getParameter(0): [Parameter] t +# 2241| Type = [LValueReferenceType] T & +# 2241| getEntryPoint(): [BlockStmt] { ... } +# 2241| getStmt(0): [ReturnStmt] return ... +# 2241| getExpr(): [VariableAccess] t +# 2241| Type = [LValueReferenceType] T & +# 2241| ValueCategory = prvalue(load) +# 2241| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2241| Type = [TemplateParameter] T +# 2241| ValueCategory = lvalue +# 2241| [FunctionTemplateInstantiation,TopLevelFunction] int& vacuous_destructor_call::get<int>(int&) +# 2241| <params>: +# 2241| getParameter(0): [Parameter] t +# 2241| Type = [LValueReferenceType] int & +# 2241| getEntryPoint(): [BlockStmt] { ... } +# 2241| getStmt(0): [ReturnStmt] return ... +# 2241| getExpr(): [VariableAccess] t +# 2241| Type = [LValueReferenceType] int & +# 2241| ValueCategory = prvalue(load) +# 2241| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2241| Type = [LValueReferenceType] int & +# 2241| ValueCategory = prvalue +# 2241| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2241| Type = [IntType] int +# 2241| ValueCategory = lvalue +# 2244| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) +# 2244| <params>: +# 2244| getParameter(0): [Parameter] t +# 2244| Type = [LValueReferenceType] ClassWithDestructor & +# 2244| getEntryPoint(): [BlockStmt] { ... } +# 2245| getStmt(0): [ExprStmt] ExprStmt +# 2245| getExpr(): [DestructorCall] call to ~ClassWithDestructor +# 2245| Type = [VoidType] void +# 2245| ValueCategory = prvalue +# 2245| getQualifier(): [FunctionCall] call to get +# 2245| Type = [LValueReferenceType] ClassWithDestructor & +# 2245| ValueCategory = prvalue +# 2245| getArgument(0): [VariableAccess] t +# 2245| Type = [LValueReferenceType] ClassWithDestructor & +# 2245| ValueCategory = prvalue(load) +# 2245| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2245| Type = [LValueReferenceType] ClassWithDestructor & +# 2245| ValueCategory = prvalue +# 2245| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2245| Type = [Class] ClassWithDestructor +# 2245| ValueCategory = lvalue +# 2245| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2245| Type = [Class] ClassWithDestructor +# 2245| ValueCategory = lvalue +# 2246| getStmt(1): [ReturnStmt] return ... +# 2244| [TemplateFunction,TopLevelFunction] void vacuous_destructor_call::call_destructor<T>(T&) +# 2244| <params>: +# 2244| getParameter(0): [Parameter] t +# 2244| Type = [LValueReferenceType] T & +# 2244| getEntryPoint(): [BlockStmt] { ... } +# 2245| getStmt(0): [ExprStmt] ExprStmt +# 2245| getExpr(): [ExprCall] call to expression +# 2245| Type = [UnknownType] unknown +# 2245| ValueCategory = prvalue +# 2245| getExpr(): [Literal] Unknown literal +# 2245| Type = [UnknownType] unknown +# 2245| ValueCategory = prvalue +# 2245| getChild(-1): [ExprCall] call to expression +# 2245| Type = [UnknownType] unknown +# 2245| ValueCategory = prvalue +# 2245| getExpr(): [Literal] Unknown literal +# 2245| Type = [UnknownType] unknown +# 2245| ValueCategory = prvalue +# 2245| getArgument(0): [VariableAccess] t +# 2245| Type = [LValueReferenceType] T & +# 2245| ValueCategory = prvalue(load) +# 2245| getArgument(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2245| Type = [TemplateParameter] T +# 2245| ValueCategory = lvalue +# 2246| getStmt(1): [ReturnStmt] return ... +# 2244| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<int>(int&) +# 2244| <params>: +# 2244| getParameter(0): [Parameter] t +# 2244| Type = [LValueReferenceType] int & +# 2244| getEntryPoint(): [BlockStmt] { ... } +# 2245| getStmt(0): [ExprStmt] ExprStmt +# 2245| getExpr(): [VacuousDestructorCall] (vacuous destructor call) +# 2245| Type = [VoidType] void +# 2245| ValueCategory = prvalue +# 2245| getChild(0): [FunctionCall] call to get +# 2245| Type = [LValueReferenceType] int & +# 2245| ValueCategory = prvalue +# 2245| getArgument(0): [VariableAccess] t +# 2245| Type = [LValueReferenceType] int & +# 2245| ValueCategory = prvalue(load) +# 2245| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2245| Type = [LValueReferenceType] int & +# 2245| ValueCategory = prvalue +# 2245| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2245| Type = [IntType] int +# 2245| ValueCategory = lvalue +# 2245| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2245| Type = [IntType] int +# 2245| ValueCategory = lvalue +# 2246| getStmt(1): [ReturnStmt] return ... +# 2248| [TopLevelFunction] void vacuous_destructor_call::non_vacuous_destructor_call() +# 2248| <params>: +# 2248| getEntryPoint(): [BlockStmt] { ... } +# 2249| getStmt(0): [DeclStmt] declaration +# 2249| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2249| Type = [Class] ClassWithDestructor +# 2249| getVariable().getInitializer(): [Initializer] initializer for c +# 2249| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2249| Type = [VoidType] void +# 2249| ValueCategory = prvalue +# 2250| getStmt(1): [ExprStmt] ExprStmt +# 2250| getExpr(): [FunctionCall] call to call_destructor +# 2250| Type = [VoidType] void +# 2250| ValueCategory = prvalue +# 2250| getArgument(0): [VariableAccess] c +# 2250| Type = [Class] ClassWithDestructor +# 2250| ValueCategory = lvalue +# 2250| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2250| Type = [LValueReferenceType] ClassWithDestructor & +# 2250| ValueCategory = prvalue +# 2251| getStmt(2): [ReturnStmt] return ... +# 2251| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2251| Type = [VoidType] void +# 2251| ValueCategory = prvalue +# 2251| getQualifier(): [VariableAccess] c +# 2251| Type = [Class] ClassWithDestructor +# 2251| ValueCategory = lvalue +# 2253| [TopLevelFunction] void vacuous_destructor_call::vacuous_destructor_call() +# 2253| <params>: +# 2253| getEntryPoint(): [BlockStmt] { ... } +# 2254| getStmt(0): [DeclStmt] declaration +# 2254| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 2254| Type = [IntType] int +# 2255| getStmt(1): [ExprStmt] ExprStmt +# 2255| getExpr(): [FunctionCall] call to call_destructor +# 2255| Type = [VoidType] void +# 2255| ValueCategory = prvalue +# 2255| getArgument(0): [VariableAccess] i +# 2255| Type = [IntType] int +# 2255| ValueCategory = lvalue +# 2255| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2255| Type = [LValueReferenceType] int & +# 2255| ValueCategory = prvalue +# 2256| getStmt(2): [ReturnStmt] return ... +# 2259| [TopLevelFunction] void TryCatchDestructors(bool) +# 2259| <params>: +# 2259| getParameter(0): [Parameter] b +# 2259| Type = [BoolType] bool +# 2259| getEntryPoint(): [BlockStmt] { ... } +# 2260| getStmt(0): [TryStmt] try { ... } +# 2260| getStmt(): [BlockStmt] { ... } +# 2261| getStmt(0): [DeclStmt] declaration +# 2261| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2261| Type = [Struct] String +# 2261| getVariable().getInitializer(): [Initializer] initializer for s +# 2261| getExpr(): [ConstructorCall] call to String +# 2261| Type = [VoidType] void +# 2261| ValueCategory = prvalue +# 2262| getStmt(1): [IfStmt] if (...) ... +# 2262| getCondition(): [VariableAccess] b +# 2262| Type = [BoolType] bool +# 2262| ValueCategory = prvalue(load) +# 2262| getThen(): [BlockStmt] { ... } +# 2263| getStmt(0): [ExprStmt] ExprStmt +# 2263| getExpr(): [ThrowExpr] throw ... +# 2263| Type = [PointerType] const char * +# 2263| ValueCategory = prvalue +# 2263| getExpr(): string literal +# 2263| Type = [ArrayType] const char[15] +# 2263| Value = [StringLiteral] "string literal" +# 2263| ValueCategory = lvalue +# 2266| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2266| Type = [VoidType] void +# 2266| ValueCategory = prvalue +# 2266| getQualifier(): [VariableAccess] s +# 2266| Type = [Struct] String +# 2266| ValueCategory = lvalue +# 2263| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2263| Type = [PointerType] const char * +# 2263| ValueCategory = prvalue +# 2265| getStmt(2): [DeclStmt] declaration +# 2265| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2265| Type = [Struct] String +# 2265| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2265| getExpr(): [ConstructorCall] call to String +# 2265| Type = [VoidType] void +# 2265| ValueCategory = prvalue +# 2266| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2266| Type = [VoidType] void +# 2266| ValueCategory = prvalue +# 2266| getQualifier(): [VariableAccess] s2 +# 2266| Type = [Struct] String +# 2266| ValueCategory = lvalue +# 2266| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2266| Type = [VoidType] void +# 2266| ValueCategory = prvalue +# 2266| getQualifier(): [VariableAccess] s +# 2266| Type = [Struct] String +# 2266| ValueCategory = lvalue +# 2267| getChild(1): [Handler] <handler> +# 2267| getBlock(): [CatchBlock] { ... } +# 2268| getStmt(0): [ExprStmt] ExprStmt +# 2268| getExpr(): [ThrowExpr] throw ... +# 2268| Type = [Struct] String +# 2268| ValueCategory = prvalue +# 2268| getExpr(): [ConstructorCall] call to String +# 2268| Type = [VoidType] void +# 2268| ValueCategory = prvalue +# 2268| getArgument(0): [VariableAccess] s +# 2268| Type = [PointerType] const char * +# 2268| ValueCategory = prvalue(load) +# 2270| getChild(2): [Handler] <handler> +# 2270| getBlock(): [CatchBlock] { ... } +# 2272| getChild(3): [Handler] <handler> +# 2272| getBlock(): [CatchAnyBlock] { ... } +# 2273| getStmt(0): [ExprStmt] ExprStmt +# 2273| getExpr(): [ReThrowExpr] re-throw exception +# 2273| Type = [VoidType] void +# 2273| ValueCategory = prvalue +# 2275| getStmt(1): [ReturnStmt] return ... +# 2277| [TopLevelFunction] void IfDestructors(bool) +# 2277| <params>: +# 2277| getParameter(0): [Parameter] b +# 2277| Type = [BoolType] bool +# 2277| getEntryPoint(): [BlockStmt] { ... } +# 2278| getStmt(0): [DeclStmt] declaration +# 2278| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 +# 2278| Type = [Struct] String +# 2278| getVariable().getInitializer(): [Initializer] initializer for s1 +# 2278| getExpr(): [ConstructorCall] call to String +# 2278| Type = [VoidType] void +# 2278| ValueCategory = prvalue +# 2279| getStmt(1): [IfStmt] if (...) ... +# 2279| getCondition(): [VariableAccess] b +# 2279| Type = [BoolType] bool +# 2279| ValueCategory = prvalue(load) +# 2279| getThen(): [BlockStmt] { ... } +# 2280| getStmt(0): [DeclStmt] declaration +# 2280| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2280| Type = [Struct] String +# 2280| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2280| getExpr(): [ConstructorCall] call to String +# 2280| Type = [VoidType] void +# 2280| ValueCategory = prvalue +# 2281| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2281| Type = [VoidType] void +# 2281| ValueCategory = prvalue +# 2281| getQualifier(): [VariableAccess] s2 +# 2281| Type = [Struct] String +# 2281| ValueCategory = lvalue +# 2281| getElse(): [BlockStmt] { ... } +# 2282| getStmt(0): [DeclStmt] declaration +# 2282| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s3 +# 2282| Type = [Struct] String +# 2282| getVariable().getInitializer(): [Initializer] initializer for s3 +# 2282| getExpr(): [ConstructorCall] call to String +# 2282| Type = [VoidType] void +# 2282| ValueCategory = prvalue +# 2283| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2283| Type = [VoidType] void +# 2283| ValueCategory = prvalue +# 2283| getQualifier(): [VariableAccess] s3 +# 2283| Type = [Struct] String +# 2283| ValueCategory = lvalue +# 2284| getStmt(2): [DeclStmt] declaration +# 2284| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s4 +# 2284| Type = [Struct] String +# 2284| getVariable().getInitializer(): [Initializer] initializer for s4 +# 2284| getExpr(): [ConstructorCall] call to String +# 2284| Type = [VoidType] void +# 2284| ValueCategory = prvalue +# 2285| getStmt(3): [ReturnStmt] return ... +# 2285| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2285| Type = [VoidType] void +# 2285| ValueCategory = prvalue +# 2285| getQualifier(): [VariableAccess] s4 +# 2285| Type = [Struct] String +# 2285| ValueCategory = lvalue +# 2285| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2285| Type = [VoidType] void +# 2285| ValueCategory = prvalue +# 2285| getQualifier(): [VariableAccess] s1 +# 2285| Type = [Struct] String +# 2285| ValueCategory = lvalue +# 2287| [TopLevelFunction] void ForDestructors() +# 2287| <params>: +# 2287| getEntryPoint(): [BlockStmt] { ... } +# 2288| getStmt(0): [DeclStmt] declaration +# 2288| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2288| Type = [PlainCharType] char +# 2288| getVariable().getInitializer(): [Initializer] initializer for c +# 2288| getExpr(): [CharLiteral] 97 +# 2288| Type = [PlainCharType] char +# 2288| Value = [CharLiteral] 97 +# 2288| ValueCategory = prvalue +# 2289| getStmt(1): [ForStmt] for(...;...;...) ... +# 2289| getInitialization(): [DeclStmt] declaration +# 2289| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2289| Type = [Struct] String +# 2289| getVariable().getInitializer(): [Initializer] initializer for s +# 2289| getExpr(): [ConstructorCall] call to String +# 2289| Type = [VoidType] void +# 2289| ValueCategory = prvalue +# 2289| getArgument(0): hello +# 2289| Type = [ArrayType] const char[6] +# 2289| Value = [StringLiteral] "hello" +# 2289| ValueCategory = lvalue +# 2289| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2289| Type = [PointerType] const char * +# 2289| ValueCategory = prvalue +# 2289| getCondition(): [NEExpr] ... != ... +# 2289| Type = [BoolType] bool +# 2289| ValueCategory = prvalue +# 2289| getLeftOperand(): [VariableAccess] c +# 2289| Type = [PlainCharType] char +# 2289| ValueCategory = prvalue(load) +# 2289| getRightOperand(): [Literal] 0 +# 2289| Type = [IntType] int +# 2289| Value = [Literal] 0 +# 2289| ValueCategory = prvalue +# 2289| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2289| Conversion = [IntegralConversion] integral conversion +# 2289| Type = [IntType] int +# 2289| ValueCategory = prvalue +# 2289| getUpdate(): [AssignExpr] ... = ... +# 2289| Type = [PlainCharType] char +# 2289| ValueCategory = lvalue +# 2289| getLValue(): [VariableAccess] c +# 2289| Type = [PlainCharType] char +# 2289| ValueCategory = lvalue +# 2289| getRValue(): [FunctionCall] call to pop_back +# 2289| Type = [PlainCharType] char +# 2289| ValueCategory = prvalue +# 2289| getQualifier(): [VariableAccess] s +# 2289| Type = [Struct] String +# 2289| ValueCategory = lvalue +# 2289| getStmt(): [BlockStmt] { ... } +# 2290| getStmt(0): [DeclStmt] declaration +# 2290| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2290| Type = [Struct] String +# 2290| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2290| getExpr(): [ConstructorCall] call to String +# 2290| Type = [VoidType] void +# 2290| ValueCategory = prvalue +# 2291| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2291| Type = [VoidType] void +# 2291| ValueCategory = prvalue +# 2291| getQualifier(): [VariableAccess] s2 +# 2291| Type = [Struct] String +# 2291| ValueCategory = lvalue +# 2289| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2289| Type = [VoidType] void +# 2289| ValueCategory = prvalue +# 2289| getQualifier(): [VariableAccess] s +# 2289| Type = [Struct] String +# 2289| ValueCategory = lvalue +# 2293| getStmt(2): [RangeBasedForStmt] for(...:...) ... +# 2293| getChild(1): [DeclStmt] declaration +# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2293| 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 +# 2293| getExpr(): [ConstructorCall] call to vector +# 2293| Type = [VoidType] void +# 2293| ValueCategory = prvalue +# 2293| getArgument(0): [ConstructorCall] call to String +# 2293| Type = [VoidType] void +# 2293| ValueCategory = prvalue +# 2293| getArgument(0): hello +# 2293| Type = [ArrayType] const char[6] +# 2293| Value = [StringLiteral] "hello" +# 2293| ValueCategory = lvalue +# 2293| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2293| Type = [PointerType] const char * +# 2293| ValueCategory = prvalue +# 2293| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2293| Type = [Struct] String +# 2293| ValueCategory = lvalue +# 2293| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2293| Type = [LValueReferenceType] vector<String> & +# 2293| ValueCategory = prvalue +# 2293| getExpr(): [TemporaryObjectExpr] temporary object +# 2293| Type = [ClassTemplateInstantiation,Struct] vector<String> +# 2293| ValueCategory = xvalue +# 2293| getBeginEndDeclaration(): [DeclStmt] declaration +# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] 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) +# 2293| getExpr(): [FunctionCall] call to begin +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2293| ValueCategory = prvalue +# 2293| getQualifier(): [VariableAccess] (__range) +# 2293| Type = [RValueReferenceType] vector<String> && +# 2293| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<String>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<String> @@ -17977,15 +18147,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<String> #-----| ValueCategory = lvalue -# 2246| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2246| Type = [NestedStruct] iterator +# 2293| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] 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) +# 2293| getExpr(): [FunctionCall] call to end +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2293| ValueCategory = prvalue +# 2293| getQualifier(): [VariableAccess] (__range) +# 2293| Type = [RValueReferenceType] vector<String> && +# 2293| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<String>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<String> @@ -17993,476 +18163,489 @@ ir.cpp: #-----| 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)... +# 2293| getCondition(): [FunctionCall] call to operator!= +# 2293| Type = [BoolType] bool +# 2293| ValueCategory = prvalue +# 2293| getQualifier(): [VariableAccess] (__begin) +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2293| ValueCategory = lvalue +# 2293| getArgument(0): [ConstructorCall] call to iterator +# 2293| Type = [VoidType] void +# 2293| ValueCategory = prvalue +# 2293| getArgument(0): [VariableAccess] (__end) +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2293| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> #-----| 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)... +# 2293| getUpdate(): [FunctionCall] call to operator++ +# 2293| Type = [LValueReferenceType] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +# 2293| ValueCategory = prvalue +# 2293| getQualifier(): [VariableAccess] (__begin) +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2293| ValueCategory = lvalue +# 2293| getChild(5): [DeclStmt] declaration +# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2293| Type = [Struct] String +# 2293| getVariable().getInitializer(): [Initializer] initializer for s +# 2293| getExpr(): [ConstructorCall] call to String +# 2293| Type = [VoidType] void +# 2293| ValueCategory = prvalue +# 2293| getArgument(0): [OverloadedPointerDereferenceExpr] call to operator* +# 2293| Type = [LValueReferenceType] String & +# 2293| ValueCategory = prvalue +# 2293| getQualifier(): [VariableAccess] (__begin) +# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2293| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> #-----| 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>: +# 2293| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2293| Type = [LValueReferenceType] const String & +# 2293| ValueCategory = prvalue +# 2293| getExpr(): [CStyleCast] (const String)... +# 2293| Conversion = [GlvalueConversion] glvalue conversion +# 2293| Type = [SpecifiedType] const String +# 2293| ValueCategory = lvalue +# 2293| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2293| Type = [Struct] String +# 2293| ValueCategory = lvalue +# 2293| getStmt(): [BlockStmt] { ... } +# 2294| getStmt(0): [DeclStmt] declaration +# 2294| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2294| Type = [Struct] String +# 2294| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2294| getExpr(): [ConstructorCall] call to String +# 2294| Type = [VoidType] void +# 2294| ValueCategory = prvalue +# 2295| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2295| Type = [VoidType] void +# 2295| ValueCategory = prvalue +# 2295| getQualifier(): [VariableAccess] s2 +# 2295| Type = [Struct] String +# 2295| ValueCategory = lvalue +# 2293| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2293| Type = [VoidType] void +# 2293| ValueCategory = prvalue +# 2293| getQualifier(): [VariableAccess] s +# 2293| Type = [Struct] String +# 2293| ValueCategory = lvalue +# 2293| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2293| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +# 2293| ValueCategory = lvalue +# 2297| getStmt(3): [ForStmt] for(...;...;...) ... +# 2297| getInitialization(): [DeclStmt] declaration +# 2297| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2297| Type = [Struct] String +# 2297| getVariable().getInitializer(): [Initializer] initializer for s +# 2297| getExpr(): [ConstructorCall] call to String +# 2297| Type = [VoidType] void +# 2297| ValueCategory = prvalue +# 2297| getArgument(0): hello +# 2297| Type = [ArrayType] const char[6] +# 2297| Value = [StringLiteral] "hello" +# 2297| ValueCategory = lvalue +# 2297| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2297| Type = [PointerType] const char * +# 2297| ValueCategory = prvalue +# 2297| getDeclarationEntry(1): [VariableDeclarationEntry] definition of s2 +# 2297| Type = [Struct] String +# 2297| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2297| getExpr(): [ConstructorCall] call to String +# 2297| Type = [VoidType] void +# 2297| ValueCategory = prvalue +# 2297| getArgument(0): world +# 2297| Type = [ArrayType] const char[6] +# 2297| Value = [StringLiteral] "world" +# 2297| ValueCategory = lvalue +# 2297| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2297| Type = [PointerType] const char * +# 2297| ValueCategory = prvalue +# 2297| getCondition(): [NEExpr] ... != ... +# 2297| Type = [BoolType] bool +# 2297| ValueCategory = prvalue +# 2297| getLeftOperand(): [VariableAccess] c +# 2297| Type = [PlainCharType] char +# 2297| ValueCategory = prvalue(load) +# 2297| getRightOperand(): [Literal] 0 +# 2297| Type = [IntType] int +# 2297| Value = [Literal] 0 +# 2297| ValueCategory = prvalue +# 2297| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2297| Conversion = [IntegralConversion] integral conversion +# 2297| Type = [IntType] int +# 2297| ValueCategory = prvalue +# 2297| getUpdate(): [AssignExpr] ... = ... +# 2297| Type = [PlainCharType] char +# 2297| ValueCategory = lvalue +# 2297| getLValue(): [VariableAccess] c +# 2297| Type = [PlainCharType] char +# 2297| ValueCategory = lvalue +# 2297| getRValue(): [FunctionCall] call to pop_back +# 2297| Type = [PlainCharType] char +# 2297| ValueCategory = prvalue +# 2297| getQualifier(): [VariableAccess] s +# 2297| Type = [Struct] String +# 2297| ValueCategory = lvalue +# 2297| getStmt(): [BlockStmt] { ... } +# 2298| getStmt(0): [ExprStmt] ExprStmt +# 2298| getExpr(): [AssignExpr] ... = ... +# 2298| Type = [PlainCharType] char +# 2298| ValueCategory = lvalue +# 2298| getLValue(): [VariableAccess] c +# 2298| Type = [PlainCharType] char +# 2298| ValueCategory = lvalue +# 2298| getRValue(): [Literal] 0 +# 2298| Type = [IntType] int +# 2298| Value = [Literal] 0 +# 2298| ValueCategory = prvalue +# 2298| getRValue().getFullyConverted(): [CStyleCast] (char)... +# 2298| Conversion = [IntegralConversion] integral conversion +# 2298| Type = [PlainCharType] char +# 2298| Value = [CStyleCast] 0 +# 2298| ValueCategory = prvalue +# 2297| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2297| Type = [VoidType] void +# 2297| ValueCategory = prvalue +# 2297| getQualifier(): [VariableAccess] s2 +# 2297| Type = [Struct] String +# 2297| ValueCategory = lvalue +# 2297| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2297| Type = [VoidType] void +# 2297| ValueCategory = prvalue +# 2297| getQualifier(): [VariableAccess] s +# 2297| Type = [Struct] String +# 2297| ValueCategory = lvalue +# 2300| getStmt(4): [ReturnStmt] return ... +# 2302| [TopLevelFunction] void IfDestructors2(bool) +# 2302| <params>: +# 2302| getParameter(0): [Parameter] b +# 2302| Type = [BoolType] bool +# 2302| getEntryPoint(): [BlockStmt] { ... } +# 2303| getStmt(0): [IfStmt] if (...) ... +# 2303| getInitialization(): [DeclStmt] declaration +# 2303| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2303| Type = [Struct] String +# 2303| getVariable().getInitializer(): [Initializer] initializer for s +# 2303| getExpr(): [ConstructorCall] call to String +# 2303| Type = [VoidType] void +# 2303| ValueCategory = prvalue +# 2303| getArgument(0): hello +# 2303| Type = [ArrayType] const char[6] +# 2303| Value = [StringLiteral] "hello" +# 2303| ValueCategory = lvalue +# 2303| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2303| Type = [PointerType] const char * +# 2303| ValueCategory = prvalue +# 2303| getCondition(): [VariableAccess] b +# 2303| Type = [BoolType] bool +# 2303| ValueCategory = prvalue(load) +# 2303| getThen(): [BlockStmt] { ... } +# 2304| getStmt(0): [DeclStmt] declaration +# 2304| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2304| Type = [IntType] int +# 2304| getVariable().getInitializer(): [Initializer] initializer for x +# 2304| getExpr(): [Literal] 0 +# 2304| Type = [IntType] int +# 2304| Value = [Literal] 0 +# 2304| ValueCategory = prvalue +# 2305| getElse(): [BlockStmt] { ... } +# 2306| getStmt(0): [DeclStmt] declaration +# 2306| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2306| Type = [IntType] int +# 2306| getVariable().getInitializer(): [Initializer] initializer for y +# 2306| getExpr(): [Literal] 0 +# 2306| Type = [IntType] int +# 2306| Value = [Literal] 0 +# 2306| ValueCategory = prvalue +# 2307| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2307| Type = [VoidType] void +# 2307| ValueCategory = prvalue +# 2307| getQualifier(): [VariableAccess] s +# 2307| Type = [Struct] String +# 2307| ValueCategory = lvalue +# 2308| getStmt(1): [ReturnStmt] return ... +# 2310| [CopyAssignmentOperator] Bool& Bool::operator=(Bool const&) +# 2310| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Bool & -# 2263| [CopyConstructor] void Bool::Bool(Bool const&) -# 2263| <params>: +# 2310| [CopyConstructor] void Bool::Bool(Bool const&) +# 2310| <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() +# 2312| [Constructor] void Bool::Bool(bool) +# 2312| <params>: +# 2312| getParameter(0): [Parameter] b_ +# 2312| Type = [BoolType] bool +# 2313| [ConversionOperator] bool Bool::operator bool() +# 2313| <params>: +# 2314| [Destructor] void Bool::~Bool() # 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 -# 2320| [CopyAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc const&) -# 2320| <params>: +# 2317| [TopLevelFunction] void IfDestructors3(bool) +# 2317| <params>: +# 2317| getParameter(0): [Parameter] b +# 2317| Type = [BoolType] bool +# 2317| getEntryPoint(): [BlockStmt] { ... } +# 2318| getStmt(0): [IfStmt] if (...) ... +# 2318| getCondition(): [ConditionDeclExpr] (condition decl) +# 2318| Type = [BoolType] bool +# 2318| ValueCategory = prvalue +# 2318| getChild(0): [FunctionCall] call to operator bool +# 2318| Type = [BoolType] bool +# 2318| ValueCategory = prvalue +# 2318| getQualifier(): [VariableAccess] B +# 2318| Type = [Class] Bool +# 2318| ValueCategory = prvalue(load) +# 2318| getThen(): [BlockStmt] { ... } +# 2319| getStmt(0): [DeclStmt] declaration +# 2319| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 +# 2319| Type = [Struct] String +# 2319| getVariable().getInitializer(): [Initializer] initializer for s1 +# 2319| getExpr(): [ConstructorCall] call to String +# 2319| Type = [VoidType] void +# 2319| ValueCategory = prvalue +# 2320| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2320| Type = [VoidType] void +# 2320| ValueCategory = prvalue +# 2320| getQualifier(): [VariableAccess] s1 +# 2320| Type = [Struct] String +# 2320| ValueCategory = lvalue +# 2320| getElse(): [BlockStmt] { ... } +# 2321| getStmt(0): [DeclStmt] declaration +# 2321| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2321| Type = [Struct] String +# 2321| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2321| getExpr(): [ConstructorCall] call to String +# 2321| Type = [VoidType] void +# 2321| ValueCategory = prvalue +# 2322| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2322| Type = [VoidType] void +# 2322| ValueCategory = prvalue +# 2322| getQualifier(): [VariableAccess] s2 +# 2322| Type = [Struct] String +# 2322| ValueCategory = lvalue +# 2322| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2322| Type = [VoidType] void +# 2322| ValueCategory = prvalue +# 2322| getQualifier(): [VariableAccess] B +# 2322| Type = [Class] Bool +# 2322| ValueCategory = lvalue +# 2323| getStmt(1): [ReturnStmt] return ... +# 2325| [TopLevelFunction] void WhileLoopDestructors(bool) +# 2325| <params>: +# 2325| getParameter(0): [Parameter] b +# 2325| Type = [BoolType] bool +# 2325| getEntryPoint(): [BlockStmt] { ... } +# 2326| getStmt(0): [BlockStmt] { ... } +# 2327| getStmt(0): [DeclStmt] declaration +# 2327| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2327| Type = [Struct] String +# 2327| getVariable().getInitializer(): [Initializer] initializer for s +# 2327| getExpr(): [ConstructorCall] call to String +# 2327| Type = [VoidType] void +# 2327| ValueCategory = prvalue +# 2328| getStmt(1): [WhileStmt] while (...) ... +# 2328| getCondition(): [VariableAccess] b +# 2328| Type = [BoolType] bool +# 2328| ValueCategory = prvalue(load) +# 2328| getStmt(): [BlockStmt] { ... } +# 2329| getStmt(0): [ExprStmt] ExprStmt +# 2329| getExpr(): [AssignExpr] ... = ... +# 2329| Type = [BoolType] bool +# 2329| ValueCategory = lvalue +# 2329| getLValue(): [VariableAccess] b +# 2329| Type = [BoolType] bool +# 2329| ValueCategory = lvalue +# 2329| getRValue(): [Literal] 0 +# 2329| Type = [BoolType] bool +# 2329| Value = [Literal] 0 +# 2329| ValueCategory = prvalue +# 2331| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2331| Type = [VoidType] void +# 2331| ValueCategory = prvalue +# 2331| getQualifier(): [VariableAccess] s +# 2331| Type = [Struct] String +# 2331| ValueCategory = lvalue +# 2333| getStmt(1): [BlockStmt] { ... } +# 2334| getStmt(0): [WhileStmt] while (...) ... +# 2334| getCondition(): [ConditionDeclExpr] (condition decl) +# 2334| Type = [BoolType] bool +# 2334| ValueCategory = prvalue +# 2334| getChild(0): [FunctionCall] call to operator bool +# 2334| Type = [BoolType] bool +# 2334| ValueCategory = prvalue +# 2334| getQualifier(): [VariableAccess] B +# 2334| Type = [Class] Bool +# 2334| ValueCategory = prvalue(load) +# 2334| getStmt(): [BlockStmt] { ... } +# 2335| getStmt(0): [ExprStmt] ExprStmt +# 2335| getExpr(): [AssignExpr] ... = ... +# 2335| Type = [BoolType] bool +# 2335| ValueCategory = lvalue +# 2335| getLValue(): [VariableAccess] b +# 2335| Type = [BoolType] bool +# 2335| ValueCategory = lvalue +# 2335| getRValue(): [Literal] 0 +# 2335| Type = [BoolType] bool +# 2335| Value = [Literal] 0 +# 2335| ValueCategory = prvalue +# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2336| Type = [VoidType] void +# 2336| ValueCategory = prvalue +# 2336| getQualifier(): [VariableAccess] B +# 2336| Type = [Class] Bool +# 2336| ValueCategory = lvalue +# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2336| Type = [VoidType] void +# 2336| ValueCategory = prvalue +# 2336| getQualifier(): [VariableAccess] B +# 2336| Type = [Class] Bool +# 2336| ValueCategory = lvalue +# 2338| getStmt(2): [ReturnStmt] return ... +# 2340| [TopLevelFunction] void VoidFunc() +# 2340| <params>: +# 2340| getEntryPoint(): [BlockStmt] { ... } +# 2340| getStmt(0): [ReturnStmt] return ... +# 2342| [TopLevelFunction] void IfReturnDestructors(bool) +# 2342| <params>: +# 2342| getParameter(0): [Parameter] b +# 2342| Type = [BoolType] bool +# 2342| getEntryPoint(): [BlockStmt] { ... } +# 2343| getStmt(0): [DeclStmt] declaration +# 2343| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2343| Type = [Struct] String +# 2343| getVariable().getInitializer(): [Initializer] initializer for s +# 2343| getExpr(): [ConstructorCall] call to String +# 2343| Type = [VoidType] void +# 2343| ValueCategory = prvalue +# 2344| getStmt(1): [IfStmt] if (...) ... +# 2344| getCondition(): [VariableAccess] b +# 2344| Type = [BoolType] bool +# 2344| ValueCategory = prvalue(load) +# 2344| getThen(): [BlockStmt] { ... } +# 2345| getStmt(0): [ReturnStmt] return ... +# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2351| Type = [VoidType] void +# 2351| ValueCategory = prvalue +# 2351| getQualifier(): [VariableAccess] s +# 2351| Type = [Struct] String +# 2351| ValueCategory = lvalue +# 2347| getStmt(2): [IfStmt] if (...) ... +# 2347| getCondition(): [VariableAccess] b +# 2347| Type = [BoolType] bool +# 2347| ValueCategory = prvalue(load) +# 2347| getThen(): [BlockStmt] { ... } +# 2348| getStmt(0): [ReturnStmt] return ... +# 2348| getExpr(): [FunctionCall] call to VoidFunc +# 2348| Type = [VoidType] void +# 2348| ValueCategory = prvalue +# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2351| Type = [VoidType] void +# 2351| ValueCategory = prvalue +# 2351| getQualifier(): [VariableAccess] s +# 2351| Type = [Struct] String +# 2351| ValueCategory = lvalue +# 2350| getStmt(3): [ExprStmt] ExprStmt +# 2350| getExpr(): [VariableAccess] s +# 2350| Type = [Struct] String +# 2350| ValueCategory = lvalue +# 2351| getStmt(4): [ReturnStmt] return ... +# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2351| Type = [VoidType] void +# 2351| ValueCategory = prvalue +# 2351| getQualifier(): [VariableAccess] s +# 2351| Type = [Struct] String +# 2351| ValueCategory = lvalue +# 2353| [TopLevelFunction] int IfReturnDestructors3(bool) +# 2353| <params>: +# 2353| getParameter(0): [Parameter] b +# 2353| Type = [BoolType] bool +# 2353| getEntryPoint(): [BlockStmt] { ... } +# 2354| getStmt(0): [DeclStmt] declaration +# 2354| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2354| Type = [Struct] String +# 2354| getVariable().getInitializer(): [Initializer] initializer for s +# 2354| getExpr(): [ConstructorCall] call to String +# 2354| Type = [VoidType] void +# 2354| ValueCategory = prvalue +# 2355| getStmt(1): [IfStmt] if (...) ... +# 2355| getCondition(): [VariableAccess] b +# 2355| Type = [BoolType] bool +# 2355| ValueCategory = prvalue(load) +# 2355| getThen(): [BlockStmt] { ... } +# 2356| getStmt(0): [ReturnStmt] return ... +# 2356| getExpr(): [Literal] 1 +# 2356| Type = [IntType] int +# 2356| Value = [Literal] 1 +# 2356| ValueCategory = prvalue +# 2359| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2359| Type = [VoidType] void +# 2359| ValueCategory = prvalue +# 2359| getQualifier(): [VariableAccess] s +# 2359| Type = [Struct] String +# 2359| ValueCategory = lvalue +# 2358| getStmt(2): [ReturnStmt] return ... +# 2358| getExpr(): [Literal] 0 +# 2358| Type = [IntType] int +# 2358| Value = [Literal] 0 +# 2358| ValueCategory = prvalue +# 2359| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2359| Type = [VoidType] void +# 2359| ValueCategory = prvalue +# 2359| getQualifier(): [VariableAccess] s +# 2359| Type = [Struct] String +# 2359| ValueCategory = lvalue +# 2361| [TopLevelFunction] void VoidReturnDestructors() +# 2361| <params>: +# 2361| getEntryPoint(): [BlockStmt] { ... } +# 2362| getStmt(0): [DeclStmt] declaration +# 2362| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2362| Type = [Struct] String +# 2362| getVariable().getInitializer(): [Initializer] initializer for s +# 2362| getExpr(): [ConstructorCall] call to String +# 2362| Type = [VoidType] void +# 2362| ValueCategory = prvalue +# 2363| getStmt(1): [ReturnStmt] return ... +# 2363| getExpr(): [FunctionCall] call to VoidFunc +# 2363| Type = [VoidType] void +# 2363| ValueCategory = prvalue +# 2364| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2364| Type = [VoidType] void +# 2364| ValueCategory = prvalue +# 2364| getQualifier(): [VariableAccess] s +# 2364| Type = [Struct] String +# 2364| ValueCategory = lvalue +# 2367| [CopyAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc const&) +# 2367| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const HasVoidToIntFunc & -# 2320| [MoveAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc&&) -# 2320| <params>: +# 2367| [MoveAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc&&) +# 2367| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] HasVoidToIntFunc && -# 2322| [MemberFunction] void return_routine_type::HasVoidToIntFunc::VoidToInt(int) -# 2322| <params>: -# 2322| getParameter(0): [Parameter] (unnamed parameter 0) -# 2322| Type = [IntType] int -# 2327| [TopLevelFunction] return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2327| <params>: -# 2328| getEntryPoint(): [BlockStmt] { ... } -# 2329| getStmt(0): [ReturnStmt] return ... -# 2329| getExpr(): [FunctionAccess] VoidToInt -# 2329| Type = [RoutineType] ..()(..) -# 2329| ValueCategory = prvalue +# 2369| [MemberFunction] void return_routine_type::HasVoidToIntFunc::VoidToInt(int) +# 2369| <params>: +# 2369| getParameter(0): [Parameter] (unnamed parameter 0) +# 2369| Type = [IntType] int +# 2374| [TopLevelFunction] return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2374| <params>: +# 2375| getEntryPoint(): [BlockStmt] { ... } +# 2376| getStmt(0): [ReturnStmt] return ... +# 2376| getExpr(): [FunctionAccess] VoidToInt +# 2376| Type = [RoutineType] ..()(..) +# 2376| ValueCategory = prvalue perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) # 4| <params>: diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index fe75f86cfc57..a5c45046307f 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -7268,4035 +7268,4057 @@ ir.cpp: # 1054| v1054_43(void) = AliasedUse : ~m1054_20 # 1054| v1054_44(void) = ExitFunction : -# 1079| void RangeBasedFor(vector<int> const&) -# 1079| Block 0 -# 1079| v1079_1(void) = EnterFunction : -# 1079| m1079_2(unknown) = AliasedDefinition : -# 1079| m1079_3(unknown) = InitializeNonLocal : -# 1079| m1079_4(unknown) = Chi : total:m1079_2, partial:m1079_3 -# 1079| r1079_5(glval<vector<int> &>) = VariableAddress[v] : -# 1079| m1079_6(vector<int> &) = InitializeParameter[v] : &:r1079_5 -# 1079| r1079_7(vector<int> &) = Load[v] : &:r1079_5, m1079_6 -# 1079| m1079_8(unknown) = InitializeIndirection[v] : &:r1079_7 -# 1080| r1080_1(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1080| r1080_2(glval<vector<int> &>) = VariableAddress[v] : -# 1080| r1080_3(vector<int> &) = Load[v] : &:r1080_2, m1079_6 -# 1080| r1080_4(glval<vector<int>>) = CopyValue : r1080_3 -# 1080| r1080_5(vector<int> &) = CopyValue : r1080_4 -# 1080| m1080_6(vector<int> &) = Store[(__range)] : &:r1080_1, r1080_5 -# 1080| r1080_7(glval<iterator>) = VariableAddress[(__begin)] : -# 1080| r1080_8(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1080| r1080_9(vector<int> &) = Load[(__range)] : &:r1080_8, m1080_6 -#-----| r0_1(glval<vector<int>>) = CopyValue : r1080_9 -# 1080| r1080_10(glval<unknown>) = FunctionAddress[begin] : -# 1080| r1080_11(iterator) = Call[begin] : func:r1080_10, this:r0_1 -# 1080| m1080_12(unknown) = ^CallSideEffect : ~m1079_4 -# 1080| m1080_13(unknown) = Chi : total:m1079_4, partial:m1080_12 -#-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m1079_8 -# 1080| m1080_14(iterator) = Store[(__begin)] : &:r1080_7, r1080_11 -# 1080| r1080_15(glval<iterator>) = VariableAddress[(__end)] : -# 1080| r1080_16(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1080| r1080_17(vector<int> &) = Load[(__range)] : &:r1080_16, m1080_6 -#-----| r0_3(glval<vector<int>>) = CopyValue : r1080_17 -# 1080| r1080_18(glval<unknown>) = FunctionAddress[end] : -# 1080| r1080_19(iterator) = Call[end] : func:r1080_18, this:r0_3 -# 1080| m1080_20(unknown) = ^CallSideEffect : ~m1080_13 -# 1080| m1080_21(unknown) = Chi : total:m1080_13, partial:m1080_20 -#-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m1079_8 -# 1080| m1080_22(iterator) = Store[(__end)] : &:r1080_15, r1080_19 +# 1126| void RangeBasedFor(std::vector<int> const&) +# 1126| Block 0 +# 1126| v1126_1(void) = EnterFunction : +# 1126| m1126_2(unknown) = AliasedDefinition : +# 1126| m1126_3(unknown) = InitializeNonLocal : +# 1126| m1126_4(unknown) = Chi : total:m1126_2, partial:m1126_3 +# 1126| r1126_5(glval<vector<int> &>) = VariableAddress[v] : +# 1126| m1126_6(vector<int> &) = InitializeParameter[v] : &:r1126_5 +# 1126| r1126_7(vector<int> &) = Load[v] : &:r1126_5, m1126_6 +# 1126| m1126_8(unknown) = InitializeIndirection[v] : &:r1126_7 +# 1127| r1127_1(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_2(glval<vector<int> &>) = VariableAddress[v] : +# 1127| r1127_3(vector<int> &) = Load[v] : &:r1127_2, m1126_6 +# 1127| r1127_4(glval<vector<int>>) = CopyValue : r1127_3 +# 1127| r1127_5(vector<int> &) = CopyValue : r1127_4 +# 1127| m1127_6(vector<int> &) = Store[(__range)] : &:r1127_1, r1127_5 +# 1127| r1127_7(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1127| r1127_8(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_9(vector<int> &) = Load[(__range)] : &:r1127_8, m1127_6 +#-----| r0_1(glval<vector<int>>) = CopyValue : r1127_9 +# 1127| r1127_10(glval<unknown>) = FunctionAddress[begin] : +# 1127| r1127_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1127_10, this:r0_1 +# 1127| m1127_12(unknown) = ^CallSideEffect : ~m1126_4 +# 1127| m1127_13(unknown) = Chi : total:m1126_4, partial:m1127_12 +#-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m1126_8 +# 1127| m1127_14(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1127_7, r1127_11 +# 1127| r1127_15(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1127| r1127_16(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_17(vector<int> &) = Load[(__range)] : &:r1127_16, m1127_6 +#-----| r0_3(glval<vector<int>>) = CopyValue : r1127_17 +# 1127| r1127_18(glval<unknown>) = FunctionAddress[end] : +# 1127| r1127_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1127_18, this:r0_3 +# 1127| m1127_20(unknown) = ^CallSideEffect : ~m1127_13 +# 1127| m1127_21(unknown) = Chi : total:m1127_13, partial:m1127_20 +#-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m1126_8 +# 1127| m1127_22(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1127_15, r1127_19 #-----| Goto -> Block 1 -# 1080| Block 1 -# 1080| m1080_23(iterator) = Phi : from 0:m1080_14, from 4:m1080_49 -# 1080| m1080_24(unknown) = Phi : from 0:~m1080_21, from 4:~m1080_46 -# 1080| r1080_25(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_5(glval<iterator>) = Convert : r1080_25 -# 1080| r1080_26(glval<unknown>) = FunctionAddress[operator!=] : -# 1080| r1080_27(glval<iterator>) = VariableAddress[(__end)] : -# 1080| r1080_28(iterator) = Load[(__end)] : &:r1080_27, m1080_22 -# 1080| r1080_29(bool) = Call[operator!=] : func:r1080_26, this:r0_5, 0:r1080_28 -# 1080| m1080_30(unknown) = ^CallSideEffect : ~m1080_24 -# 1080| m1080_31(unknown) = Chi : total:m1080_24, partial:m1080_30 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m1080_23 -# 1080| v1080_32(void) = ConditionalBranch : r1080_29 +# 1127| Block 1 +# 1127| m1127_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 0:m1127_14, from 4:m1127_54 +# 1127| m1127_24(unknown) = Phi : from 0:~m1127_21, from 4:~m1127_51 +# 1127| r1127_25(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_5(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_25 +# 1127| r1127_26(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_6(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : +#-----| m0_7(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_6 +# 1127| r1127_27(glval<unknown>) = FunctionAddress[iterator] : +# 1127| r1127_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_28 +#-----| r0_9(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_8 +# 1127| v1127_29(void) = Call[iterator] : func:r1127_27, this:r0_6, 0:r0_9 +# 1127| m1127_30(unknown) = ^CallSideEffect : ~m1127_24 +# 1127| m1127_31(unknown) = Chi : total:m1127_24, partial:m1127_30 +#-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_9, ~m1127_22 +# 1127| m1127_32(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +# 1127| m1127_33(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_7, partial:m1127_32 +#-----| r0_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_6, m1127_33 +# 1127| r1127_34(bool) = Call[operator!=] : func:r1127_26, this:r0_5, 0:r0_11 +# 1127| m1127_35(unknown) = ^CallSideEffect : ~m1127_31 +# 1127| m1127_36(unknown) = Chi : total:m1127_31, partial:m1127_35 +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m1127_23 +# 1127| v1127_37(void) = ConditionalBranch : r1127_34 #-----| False -> Block 5 #-----| True -> Block 2 -# 1080| Block 2 -# 1080| r1080_33(glval<int>) = VariableAddress[e] : -# 1080| r1080_34(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator>) = Convert : r1080_34 -# 1080| r1080_35(glval<unknown>) = FunctionAddress[operator*] : -# 1080| r1080_36(int &) = Call[operator*] : func:r1080_35, this:r0_7 -# 1080| m1080_37(unknown) = ^CallSideEffect : ~m1080_31 -# 1080| m1080_38(unknown) = Chi : total:m1080_31, partial:m1080_37 -#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m1080_23 -# 1080| r1080_39(int) = Load[?] : &:r1080_36, ~m1080_38 -# 1080| m1080_40(int) = Store[e] : &:r1080_33, r1080_39 -# 1081| r1081_1(glval<int>) = VariableAddress[e] : -# 1081| r1081_2(int) = Load[e] : &:r1081_1, m1080_40 -# 1081| r1081_3(int) = Constant[0] : -# 1081| r1081_4(bool) = CompareGT : r1081_2, r1081_3 -# 1081| v1081_5(void) = ConditionalBranch : r1081_4 +# 1127| Block 2 +# 1127| r1127_38(glval<int>) = VariableAddress[e] : +# 1127| r1127_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_39 +# 1127| r1127_40(glval<unknown>) = FunctionAddress[operator*] : +# 1127| r1127_41(int &) = Call[operator*] : func:r1127_40, this:r0_13 +# 1127| m1127_42(unknown) = ^CallSideEffect : ~m1127_36 +# 1127| m1127_43(unknown) = Chi : total:m1127_36, partial:m1127_42 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, m1127_23 +# 1127| r1127_44(int) = Load[?] : &:r1127_41, ~m1127_43 +# 1127| m1127_45(int) = Store[e] : &:r1127_38, r1127_44 +# 1128| r1128_1(glval<int>) = VariableAddress[e] : +# 1128| r1128_2(int) = Load[e] : &:r1128_1, m1127_45 +# 1128| r1128_3(int) = Constant[0] : +# 1128| r1128_4(bool) = CompareGT : r1128_2, r1128_3 +# 1128| v1128_5(void) = ConditionalBranch : r1128_4 #-----| False -> Block 4 #-----| True -> Block 3 -# 1082| Block 3 -# 1082| v1082_1(void) = NoOp : +# 1129| Block 3 +# 1129| v1129_1(void) = NoOp : #-----| Goto -> Block 4 -# 1080| Block 4 -# 1080| v1080_41(void) = NoOp : -# 1080| r1080_42(glval<iterator>) = VariableAddress[(__begin)] : -# 1080| r1080_43(glval<unknown>) = FunctionAddress[operator++] : -# 1080| r1080_44(iterator &) = Call[operator++] : func:r1080_43, this:r1080_42 -# 1080| m1080_45(unknown) = ^CallSideEffect : ~m1080_38 -# 1080| m1080_46(unknown) = Chi : total:m1080_38, partial:m1080_45 -# 1080| v1080_47(void) = ^IndirectReadSideEffect[-1] : &:r1080_42, m1080_23 -# 1080| m1080_48(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1080_42 -# 1080| m1080_49(iterator) = Chi : total:m1080_23, partial:m1080_48 -# 1080| r1080_50(glval<iterator>) = CopyValue : r1080_44 +# 1127| Block 4 +# 1127| v1127_46(void) = NoOp : +# 1127| r1127_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1127| r1127_48(glval<unknown>) = FunctionAddress[operator++] : +# 1127| r1127_49(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_48, this:r1127_47 +# 1127| m1127_50(unknown) = ^CallSideEffect : ~m1127_43 +# 1127| m1127_51(unknown) = Chi : total:m1127_43, partial:m1127_50 +# 1127| v1127_52(void) = ^IndirectReadSideEffect[-1] : &:r1127_47, m1127_23 +# 1127| m1127_53(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_47 +# 1127| m1127_54(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1127_23, partial:m1127_53 +# 1127| r1127_55(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_49 #-----| Goto (back edge) -> Block 1 -# 1086| Block 5 -# 1086| r1086_1(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1086| r1086_2(glval<vector<int> &>) = VariableAddress[v] : -# 1086| r1086_3(vector<int> &) = Load[v] : &:r1086_2, m1079_6 -# 1086| r1086_4(glval<vector<int>>) = CopyValue : r1086_3 -# 1086| r1086_5(vector<int> &) = CopyValue : r1086_4 -# 1086| m1086_6(vector<int> &) = Store[(__range)] : &:r1086_1, r1086_5 -# 1086| r1086_7(glval<iterator>) = VariableAddress[(__begin)] : -# 1086| r1086_8(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1086| r1086_9(vector<int> &) = Load[(__range)] : &:r1086_8, m1086_6 -#-----| r0_9(glval<vector<int>>) = CopyValue : r1086_9 -# 1086| r1086_10(glval<unknown>) = FunctionAddress[begin] : -# 1086| r1086_11(iterator) = Call[begin] : func:r1086_10, this:r0_9 -# 1086| m1086_12(unknown) = ^CallSideEffect : ~m1080_31 -# 1086| m1086_13(unknown) = Chi : total:m1080_31, partial:m1086_12 -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m1079_8 -# 1086| m1086_14(iterator) = Store[(__begin)] : &:r1086_7, r1086_11 -# 1086| r1086_15(glval<iterator>) = VariableAddress[(__end)] : -# 1086| r1086_16(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1086| r1086_17(vector<int> &) = Load[(__range)] : &:r1086_16, m1086_6 -#-----| r0_11(glval<vector<int>>) = CopyValue : r1086_17 -# 1086| r1086_18(glval<unknown>) = FunctionAddress[end] : -# 1086| r1086_19(iterator) = Call[end] : func:r1086_18, this:r0_11 -# 1086| m1086_20(unknown) = ^CallSideEffect : ~m1086_13 -# 1086| m1086_21(unknown) = Chi : total:m1086_13, partial:m1086_20 -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1079_8 -# 1086| m1086_22(iterator) = Store[(__end)] : &:r1086_15, r1086_19 +# 1133| Block 5 +# 1133| r1133_1(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_2(glval<vector<int> &>) = VariableAddress[v] : +# 1133| r1133_3(vector<int> &) = Load[v] : &:r1133_2, m1126_6 +# 1133| r1133_4(glval<vector<int>>) = CopyValue : r1133_3 +# 1133| r1133_5(vector<int> &) = CopyValue : r1133_4 +# 1133| m1133_6(vector<int> &) = Store[(__range)] : &:r1133_1, r1133_5 +# 1133| r1133_7(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1133| r1133_8(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_9(vector<int> &) = Load[(__range)] : &:r1133_8, m1133_6 +#-----| r0_15(glval<vector<int>>) = CopyValue : r1133_9 +# 1133| r1133_10(glval<unknown>) = FunctionAddress[begin] : +# 1133| r1133_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1133_10, this:r0_15 +# 1133| m1133_12(unknown) = ^CallSideEffect : ~m1127_36 +# 1133| m1133_13(unknown) = Chi : total:m1127_36, partial:m1133_12 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m1126_8 +# 1133| m1133_14(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1133_7, r1133_11 +# 1133| r1133_15(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1133| r1133_16(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_17(vector<int> &) = Load[(__range)] : &:r1133_16, m1133_6 +#-----| r0_17(glval<vector<int>>) = CopyValue : r1133_17 +# 1133| r1133_18(glval<unknown>) = FunctionAddress[end] : +# 1133| r1133_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1133_18, this:r0_17 +# 1133| m1133_20(unknown) = ^CallSideEffect : ~m1133_13 +# 1133| m1133_21(unknown) = Chi : total:m1133_13, partial:m1133_20 +#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m1126_8 +# 1133| m1133_22(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1133_15, r1133_19 #-----| Goto -> Block 6 -# 1086| Block 6 -# 1086| m1086_23(iterator) = Phi : from 5:m1086_14, from 7:m1086_40 -# 1086| m1086_24(unknown) = Phi : from 5:~m1086_21, from 7:~m1086_37 -# 1086| r1086_25(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_13(glval<iterator>) = Convert : r1086_25 -# 1086| r1086_26(glval<unknown>) = FunctionAddress[operator!=] : -# 1086| r1086_27(glval<iterator>) = VariableAddress[(__end)] : -# 1086| r1086_28(iterator) = Load[(__end)] : &:r1086_27, m1086_22 -# 1086| r1086_29(bool) = Call[operator!=] : func:r1086_26, this:r0_13, 0:r1086_28 -# 1086| m1086_30(unknown) = ^CallSideEffect : ~m1086_24 -# 1086| m1086_31(unknown) = Chi : total:m1086_24, partial:m1086_30 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, m1086_23 -# 1086| v1086_32(void) = ConditionalBranch : r1086_29 +# 1133| Block 6 +# 1133| m1133_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 5:m1133_14, from 7:m1133_45 +# 1133| m1133_24(unknown) = Phi : from 5:~m1133_21, from 7:~m1133_42 +# 1133| r1133_25(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_25 +# 1133| r1133_26(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_20(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : +#-----| m0_21(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_20 +# 1133| r1133_27(glval<unknown>) = FunctionAddress[iterator] : +# 1133| r1133_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_28 +#-----| r0_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_22 +# 1133| v1133_29(void) = Call[iterator] : func:r1133_27, this:r0_20, 0:r0_23 +# 1133| m1133_30(unknown) = ^CallSideEffect : ~m1133_24 +# 1133| m1133_31(unknown) = Chi : total:m1133_24, partial:m1133_30 +#-----| v0_24(void) = ^BufferReadSideEffect[0] : &:r0_23, ~m1133_22 +# 1133| m1133_32(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 +# 1133| m1133_33(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_21, partial:m1133_32 +#-----| r0_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_20, m1133_33 +# 1133| r1133_34(bool) = Call[operator!=] : func:r1133_26, this:r0_19, 0:r0_25 +# 1133| m1133_35(unknown) = ^CallSideEffect : ~m1133_31 +# 1133| m1133_36(unknown) = Chi : total:m1133_31, partial:m1133_35 +#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m1133_23 +# 1133| v1133_37(void) = ConditionalBranch : r1133_34 #-----| False -> Block 10 #-----| True -> Block 8 -# 1086| Block 7 -# 1086| r1086_33(glval<iterator>) = VariableAddress[(__begin)] : -# 1086| r1086_34(glval<unknown>) = FunctionAddress[operator++] : -# 1086| r1086_35(iterator &) = Call[operator++] : func:r1086_34, this:r1086_33 -# 1086| m1086_36(unknown) = ^CallSideEffect : ~m1086_47 -# 1086| m1086_37(unknown) = Chi : total:m1086_47, partial:m1086_36 -# 1086| v1086_38(void) = ^IndirectReadSideEffect[-1] : &:r1086_33, m1086_23 -# 1086| m1086_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1086_33 -# 1086| m1086_40(iterator) = Chi : total:m1086_23, partial:m1086_39 -# 1086| r1086_41(glval<iterator>) = CopyValue : r1086_35 +# 1133| Block 7 +# 1133| r1133_38(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1133| r1133_39(glval<unknown>) = FunctionAddress[operator++] : +# 1133| r1133_40(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_39, this:r1133_38 +# 1133| m1133_41(unknown) = ^CallSideEffect : ~m1133_52 +# 1133| m1133_42(unknown) = Chi : total:m1133_52, partial:m1133_41 +# 1133| v1133_43(void) = ^IndirectReadSideEffect[-1] : &:r1133_38, m1133_23 +# 1133| m1133_44(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_38 +# 1133| m1133_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1133_23, partial:m1133_44 +# 1133| r1133_46(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_40 #-----| Goto (back edge) -> Block 6 -# 1086| Block 8 -# 1086| r1086_42(glval<int &>) = VariableAddress[e] : -# 1086| r1086_43(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator>) = Convert : r1086_43 -# 1086| r1086_44(glval<unknown>) = FunctionAddress[operator*] : -# 1086| r1086_45(int &) = Call[operator*] : func:r1086_44, this:r0_15 -# 1086| m1086_46(unknown) = ^CallSideEffect : ~m1086_31 -# 1086| m1086_47(unknown) = Chi : total:m1086_31, partial:m1086_46 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m1086_23 -# 1086| r1086_48(glval<int>) = CopyValue : r1086_45 -# 1086| r1086_49(glval<int>) = Convert : r1086_48 -# 1086| r1086_50(int &) = CopyValue : r1086_49 -# 1086| m1086_51(int &) = Store[e] : &:r1086_42, r1086_50 -# 1087| r1087_1(glval<int &>) = VariableAddress[e] : -# 1087| r1087_2(int &) = Load[e] : &:r1087_1, m1086_51 -# 1087| r1087_3(int) = Load[?] : &:r1087_2, ~m1086_47 -# 1087| r1087_4(int) = Constant[5] : -# 1087| r1087_5(bool) = CompareLT : r1087_3, r1087_4 -# 1087| v1087_6(void) = ConditionalBranch : r1087_5 +# 1133| Block 8 +# 1133| r1133_47(glval<int &>) = VariableAddress[e] : +# 1133| r1133_48(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_48 +# 1133| r1133_49(glval<unknown>) = FunctionAddress[operator*] : +# 1133| r1133_50(int &) = Call[operator*] : func:r1133_49, this:r0_27 +# 1133| m1133_51(unknown) = ^CallSideEffect : ~m1133_36 +# 1133| m1133_52(unknown) = Chi : total:m1133_36, partial:m1133_51 +#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, m1133_23 +# 1133| r1133_53(glval<int>) = CopyValue : r1133_50 +# 1133| r1133_54(glval<int>) = Convert : r1133_53 +# 1133| r1133_55(int &) = CopyValue : r1133_54 +# 1133| m1133_56(int &) = Store[e] : &:r1133_47, r1133_55 +# 1134| r1134_1(glval<int &>) = VariableAddress[e] : +# 1134| r1134_2(int &) = Load[e] : &:r1134_1, m1133_56 +# 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m1133_52 +# 1134| r1134_4(int) = Constant[5] : +# 1134| r1134_5(bool) = CompareLT : r1134_3, r1134_4 +# 1134| v1134_6(void) = ConditionalBranch : r1134_5 #-----| False -> Block 7 #-----| True -> Block 9 -# 1088| Block 9 -# 1088| v1088_1(void) = NoOp : +# 1135| Block 9 +# 1135| v1135_1(void) = NoOp : #-----| Goto -> Block 10 -# 1090| Block 10 -# 1090| m1090_1(unknown) = Phi : from 6:~m1086_31, from 9:~m1086_47 -# 1090| v1090_2(void) = NoOp : -# 1091| v1091_1(void) = NoOp : -# 1079| v1079_9(void) = ReturnIndirection[v] : &:r1079_7, m1079_8 -# 1079| v1079_10(void) = ReturnVoid : -# 1079| v1079_11(void) = AliasedUse : ~m1090_1 -# 1079| v1079_12(void) = ExitFunction : - -# 1110| int AsmStmt(int) -# 1110| Block 0 -# 1110| v1110_1(void) = EnterFunction : -# 1110| m1110_2(unknown) = AliasedDefinition : -# 1110| m1110_3(unknown) = InitializeNonLocal : -# 1110| m1110_4(unknown) = Chi : total:m1110_2, partial:m1110_3 -# 1110| r1110_5(glval<int>) = VariableAddress[x] : -# 1110| m1110_6(int) = InitializeParameter[x] : &:r1110_5 -# 1111| m1111_1(unknown) = InlineAsm : ~m1110_4 -# 1111| m1111_2(unknown) = Chi : total:m1110_4, partial:m1111_1 -# 1112| r1112_1(glval<int>) = VariableAddress[#return] : -# 1112| r1112_2(glval<int>) = VariableAddress[x] : -# 1112| r1112_3(int) = Load[x] : &:r1112_2, m1110_6 -# 1112| m1112_4(int) = Store[#return] : &:r1112_1, r1112_3 -# 1110| r1110_7(glval<int>) = VariableAddress[#return] : -# 1110| v1110_8(void) = ReturnValue : &:r1110_7, m1112_4 -# 1110| v1110_9(void) = AliasedUse : ~m1111_2 -# 1110| v1110_10(void) = ExitFunction : - -# 1115| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) -# 1115| Block 0 -# 1115| v1115_1(void) = EnterFunction : -# 1115| m1115_2(unknown) = AliasedDefinition : -# 1115| m1115_3(unknown) = InitializeNonLocal : -# 1115| m1115_4(unknown) = Chi : total:m1115_2, partial:m1115_3 -# 1115| r1115_5(glval<unsigned int &>) = VariableAddress[a] : -# 1115| m1115_6(unsigned int &) = InitializeParameter[a] : &:r1115_5 -# 1115| r1115_7(unsigned int &) = Load[a] : &:r1115_5, m1115_6 -# 1115| m1115_8(unknown) = InitializeIndirection[a] : &:r1115_7 -# 1115| r1115_9(glval<unsigned int>) = VariableAddress[b] : -# 1115| m1115_10(unsigned int) = InitializeParameter[b] : &:r1115_9 -# 1115| r1115_11(glval<unsigned int &>) = VariableAddress[c] : -# 1115| m1115_12(unsigned int &) = InitializeParameter[c] : &:r1115_11 -# 1115| r1115_13(unsigned int &) = Load[c] : &:r1115_11, m1115_12 -# 1115| m1115_14(unknown) = InitializeIndirection[c] : &:r1115_13 -# 1115| r1115_15(glval<unsigned int>) = VariableAddress[d] : -# 1115| m1115_16(unsigned int) = InitializeParameter[d] : &:r1115_15 -# 1120| r1120_1(glval<unsigned int &>) = VariableAddress[a] : -# 1120| r1120_2(unsigned int &) = Load[a] : &:r1120_1, m1115_6 -# 1120| r1120_3(glval<unsigned int>) = CopyValue : r1120_2 -# 1120| r1120_4(glval<unsigned int>) = VariableAddress[b] : -# 1120| r1120_5(glval<unsigned int &>) = VariableAddress[c] : -# 1120| r1120_6(unsigned int &) = Load[c] : &:r1120_5, m1115_12 -# 1120| r1120_7(unsigned int) = Load[?] : &:r1120_6, ~m1115_14 -# 1120| r1120_8(glval<unsigned int>) = VariableAddress[d] : -# 1120| r1120_9(unsigned int) = Load[d] : &:r1120_8, m1115_16 -# 1117| m1117_1(unknown) = InlineAsm : ~m1115_4, 0:r1120_3, 1:r1120_4, 2:r1120_7, 3:r1120_9 -# 1117| m1117_2(unknown) = Chi : total:m1115_4, partial:m1117_1 -# 1122| v1122_1(void) = NoOp : -# 1115| v1115_17(void) = ReturnIndirection[a] : &:r1115_7, m1115_8 -# 1115| v1115_18(void) = ReturnIndirection[c] : &:r1115_13, m1115_14 -# 1115| v1115_19(void) = ReturnVoid : -# 1115| v1115_20(void) = AliasedUse : ~m1117_2 -# 1115| v1115_21(void) = ExitFunction : - -# 1124| void ExternDeclarations() -# 1124| Block 0 -# 1124| v1124_1(void) = EnterFunction : -# 1124| m1124_2(unknown) = AliasedDefinition : -# 1124| m1124_3(unknown) = InitializeNonLocal : -# 1124| m1124_4(unknown) = Chi : total:m1124_2, partial:m1124_3 -# 1127| r1127_1(glval<int>) = VariableAddress[x] : -# 1127| m1127_2(int) = Uninitialized[x] : &:r1127_1 -# 1128| r1128_1(glval<int>) = VariableAddress[y] : -# 1128| m1128_2(int) = Uninitialized[y] : &:r1128_1 -# 1129| r1129_1(glval<int>) = VariableAddress[h] : -# 1129| m1129_2(int) = Uninitialized[h] : &:r1129_1 -# 1131| v1131_1(void) = NoOp : -# 1124| v1124_5(void) = ReturnVoid : -# 1124| v1124_6(void) = AliasedUse : m1124_3 -# 1124| v1124_7(void) = ExitFunction : - -# 1139| void ExternDeclarationsInMacro() -# 1139| Block 0 -# 1139| v1139_1(void) = EnterFunction : -# 1139| m1139_2(unknown) = AliasedDefinition : -# 1139| m1139_3(unknown) = InitializeNonLocal : -# 1139| m1139_4(unknown) = Chi : total:m1139_2, partial:m1139_3 -# 1141| r1141_1(glval<int>) = VariableAddress[i] : -# 1141| r1141_2(int) = Constant[0] : -# 1141| m1141_3(int) = Store[i] : &:r1141_1, r1141_2 +# 1137| Block 10 +# 1137| m1137_1(unknown) = Phi : from 6:~m1133_36, from 9:~m1133_52 +# 1137| v1137_2(void) = NoOp : +# 1138| v1138_1(void) = NoOp : +# 1126| v1126_9(void) = ReturnIndirection[v] : &:r1126_7, m1126_8 +# 1126| v1126_10(void) = ReturnVoid : +# 1126| v1126_11(void) = AliasedUse : ~m1137_1 +# 1126| v1126_12(void) = ExitFunction : + +# 1157| int AsmStmt(int) +# 1157| Block 0 +# 1157| v1157_1(void) = EnterFunction : +# 1157| m1157_2(unknown) = AliasedDefinition : +# 1157| m1157_3(unknown) = InitializeNonLocal : +# 1157| m1157_4(unknown) = Chi : total:m1157_2, partial:m1157_3 +# 1157| r1157_5(glval<int>) = VariableAddress[x] : +# 1157| m1157_6(int) = InitializeParameter[x] : &:r1157_5 +# 1158| m1158_1(unknown) = InlineAsm : ~m1157_4 +# 1158| m1158_2(unknown) = Chi : total:m1157_4, partial:m1158_1 +# 1159| r1159_1(glval<int>) = VariableAddress[#return] : +# 1159| r1159_2(glval<int>) = VariableAddress[x] : +# 1159| r1159_3(int) = Load[x] : &:r1159_2, m1157_6 +# 1159| m1159_4(int) = Store[#return] : &:r1159_1, r1159_3 +# 1157| r1157_7(glval<int>) = VariableAddress[#return] : +# 1157| v1157_8(void) = ReturnValue : &:r1157_7, m1159_4 +# 1157| v1157_9(void) = AliasedUse : ~m1158_2 +# 1157| v1157_10(void) = ExitFunction : + +# 1162| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) +# 1162| Block 0 +# 1162| v1162_1(void) = EnterFunction : +# 1162| m1162_2(unknown) = AliasedDefinition : +# 1162| m1162_3(unknown) = InitializeNonLocal : +# 1162| m1162_4(unknown) = Chi : total:m1162_2, partial:m1162_3 +# 1162| r1162_5(glval<unsigned int &>) = VariableAddress[a] : +# 1162| m1162_6(unsigned int &) = InitializeParameter[a] : &:r1162_5 +# 1162| r1162_7(unsigned int &) = Load[a] : &:r1162_5, m1162_6 +# 1162| m1162_8(unknown) = InitializeIndirection[a] : &:r1162_7 +# 1162| r1162_9(glval<unsigned int>) = VariableAddress[b] : +# 1162| m1162_10(unsigned int) = InitializeParameter[b] : &:r1162_9 +# 1162| r1162_11(glval<unsigned int &>) = VariableAddress[c] : +# 1162| m1162_12(unsigned int &) = InitializeParameter[c] : &:r1162_11 +# 1162| r1162_13(unsigned int &) = Load[c] : &:r1162_11, m1162_12 +# 1162| m1162_14(unknown) = InitializeIndirection[c] : &:r1162_13 +# 1162| r1162_15(glval<unsigned int>) = VariableAddress[d] : +# 1162| m1162_16(unsigned int) = InitializeParameter[d] : &:r1162_15 +# 1167| r1167_1(glval<unsigned int &>) = VariableAddress[a] : +# 1167| r1167_2(unsigned int &) = Load[a] : &:r1167_1, m1162_6 +# 1167| r1167_3(glval<unsigned int>) = CopyValue : r1167_2 +# 1167| r1167_4(glval<unsigned int>) = VariableAddress[b] : +# 1167| r1167_5(glval<unsigned int &>) = VariableAddress[c] : +# 1167| r1167_6(unsigned int &) = Load[c] : &:r1167_5, m1162_12 +# 1167| r1167_7(unsigned int) = Load[?] : &:r1167_6, ~m1162_14 +# 1167| r1167_8(glval<unsigned int>) = VariableAddress[d] : +# 1167| r1167_9(unsigned int) = Load[d] : &:r1167_8, m1162_16 +# 1164| m1164_1(unknown) = InlineAsm : ~m1162_4, 0:r1167_3, 1:r1167_4, 2:r1167_7, 3:r1167_9 +# 1164| m1164_2(unknown) = Chi : total:m1162_4, partial:m1164_1 +# 1169| v1169_1(void) = NoOp : +# 1162| v1162_17(void) = ReturnIndirection[a] : &:r1162_7, m1162_8 +# 1162| v1162_18(void) = ReturnIndirection[c] : &:r1162_13, m1162_14 +# 1162| v1162_19(void) = ReturnVoid : +# 1162| v1162_20(void) = AliasedUse : ~m1164_2 +# 1162| v1162_21(void) = ExitFunction : + +# 1171| void ExternDeclarations() +# 1171| Block 0 +# 1171| v1171_1(void) = EnterFunction : +# 1171| m1171_2(unknown) = AliasedDefinition : +# 1171| m1171_3(unknown) = InitializeNonLocal : +# 1171| m1171_4(unknown) = Chi : total:m1171_2, partial:m1171_3 +# 1174| r1174_1(glval<int>) = VariableAddress[x] : +# 1174| m1174_2(int) = Uninitialized[x] : &:r1174_1 +# 1175| r1175_1(glval<int>) = VariableAddress[y] : +# 1175| m1175_2(int) = Uninitialized[y] : &:r1175_1 +# 1176| r1176_1(glval<int>) = VariableAddress[h] : +# 1176| m1176_2(int) = Uninitialized[h] : &:r1176_1 +# 1178| v1178_1(void) = NoOp : +# 1171| v1171_5(void) = ReturnVoid : +# 1171| v1171_6(void) = AliasedUse : m1171_3 +# 1171| v1171_7(void) = ExitFunction : + +# 1186| void ExternDeclarationsInMacro() +# 1186| Block 0 +# 1186| v1186_1(void) = EnterFunction : +# 1186| m1186_2(unknown) = AliasedDefinition : +# 1186| m1186_3(unknown) = InitializeNonLocal : +# 1186| m1186_4(unknown) = Chi : total:m1186_2, partial:m1186_3 +# 1188| r1188_1(glval<int>) = VariableAddress[i] : +# 1188| r1188_2(int) = Constant[0] : +# 1188| m1188_3(int) = Store[i] : &:r1188_1, r1188_2 #-----| Goto -> Block 1 -# 1141| Block 1 -# 1141| m1141_4(int) = Phi : from 0:m1141_3, from 2:m1141_14 -# 1141| r1141_5(glval<int>) = VariableAddress[i] : -# 1141| r1141_6(int) = Load[i] : &:r1141_5, m1141_4 -# 1141| r1141_7(int) = Constant[10] : -# 1141| r1141_8(bool) = CompareLT : r1141_6, r1141_7 -# 1141| v1141_9(void) = ConditionalBranch : r1141_8 +# 1188| Block 1 +# 1188| m1188_4(int) = Phi : from 0:m1188_3, from 2:m1188_14 +# 1188| r1188_5(glval<int>) = VariableAddress[i] : +# 1188| r1188_6(int) = Load[i] : &:r1188_5, m1188_4 +# 1188| r1188_7(int) = Constant[10] : +# 1188| r1188_8(bool) = CompareLT : r1188_6, r1188_7 +# 1188| v1188_9(void) = ConditionalBranch : r1188_8 #-----| False -> Block 3 #-----| True -> Block 2 -# 1141| Block 2 -# 1141| r1141_10(glval<int>) = VariableAddress[i] : -# 1141| r1141_11(int) = Load[i] : &:r1141_10, m1141_4 -# 1141| r1141_12(int) = Constant[1] : -# 1141| r1141_13(int) = Add : r1141_11, r1141_12 -# 1141| m1141_14(int) = Store[i] : &:r1141_10, r1141_13 +# 1188| Block 2 +# 1188| r1188_10(glval<int>) = VariableAddress[i] : +# 1188| r1188_11(int) = Load[i] : &:r1188_10, m1188_4 +# 1188| r1188_12(int) = Constant[1] : +# 1188| r1188_13(int) = Add : r1188_11, r1188_12 +# 1188| m1188_14(int) = Store[i] : &:r1188_10, r1188_13 #-----| Goto (back edge) -> Block 1 -# 1141| Block 3 -# 1141| v1141_15(void) = NoOp : -# 1142| v1142_1(void) = NoOp : -# 1139| v1139_5(void) = ReturnVoid : -# 1139| v1139_6(void) = AliasedUse : m1139_3 -# 1139| v1139_7(void) = ExitFunction : - -# 1144| void TryCatchNoCatchAny(bool) -# 1144| Block 0 -# 1144| v1144_1(void) = EnterFunction : -# 1144| m1144_2(unknown) = AliasedDefinition : -# 1144| m1144_3(unknown) = InitializeNonLocal : -# 1144| m1144_4(unknown) = Chi : total:m1144_2, partial:m1144_3 -# 1144| r1144_5(glval<bool>) = VariableAddress[b] : -# 1144| m1144_6(bool) = InitializeParameter[b] : &:r1144_5 -# 1146| r1146_1(glval<int>) = VariableAddress[x] : -# 1146| r1146_2(int) = Constant[5] : -# 1146| m1146_3(int) = Store[x] : &:r1146_1, r1146_2 -# 1147| r1147_1(glval<bool>) = VariableAddress[b] : -# 1147| r1147_2(bool) = Load[b] : &:r1147_1, m1144_6 -# 1147| v1147_3(void) = ConditionalBranch : r1147_2 +# 1188| Block 3 +# 1188| v1188_15(void) = NoOp : +# 1189| v1189_1(void) = NoOp : +# 1186| v1186_5(void) = ReturnVoid : +# 1186| v1186_6(void) = AliasedUse : m1186_3 +# 1186| v1186_7(void) = ExitFunction : + +# 1191| void TryCatchNoCatchAny(bool) +# 1191| Block 0 +# 1191| v1191_1(void) = EnterFunction : +# 1191| m1191_2(unknown) = AliasedDefinition : +# 1191| m1191_3(unknown) = InitializeNonLocal : +# 1191| m1191_4(unknown) = Chi : total:m1191_2, partial:m1191_3 +# 1191| r1191_5(glval<bool>) = VariableAddress[b] : +# 1191| m1191_6(bool) = InitializeParameter[b] : &:r1191_5 +# 1193| r1193_1(glval<int>) = VariableAddress[x] : +# 1193| r1193_2(int) = Constant[5] : +# 1193| m1193_3(int) = Store[x] : &:r1193_1, r1193_2 +# 1194| r1194_1(glval<bool>) = VariableAddress[b] : +# 1194| r1194_2(bool) = Load[b] : &:r1194_1, m1191_6 +# 1194| v1194_3(void) = ConditionalBranch : r1194_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 1144| Block 1 -# 1144| m1144_7(unknown) = Phi : from 2:~m1144_10, from 10:~m1144_4 -# 1144| v1144_8(void) = AliasedUse : ~m1144_7 -# 1144| v1144_9(void) = ExitFunction : +# 1191| Block 1 +# 1191| m1191_7(unknown) = Phi : from 2:~m1191_10, from 10:~m1191_4 +# 1191| v1191_8(void) = AliasedUse : ~m1191_7 +# 1191| v1191_9(void) = ExitFunction : -# 1144| Block 2 -# 1144| m1144_10(unknown) = Phi : from 7:~m1156_8, from 8:~m1144_4 -# 1144| v1144_11(void) = Unwind : +# 1191| Block 2 +# 1191| m1191_10(unknown) = Phi : from 7:~m1203_8, from 8:~m1191_4 +# 1191| v1191_11(void) = Unwind : #-----| Goto -> Block 1 -# 1148| Block 3 -# 1148| r1148_1(glval<char *>) = VariableAddress[#throw1148:7] : -# 1148| r1148_2(glval<char[15]>) = StringConstant["string literal"] : -# 1148| r1148_3(char *) = Convert : r1148_2 -# 1148| m1148_4(char *) = Store[#throw1148:7] : &:r1148_1, r1148_3 -# 1148| v1148_5(void) = ThrowValue : &:r1148_1, m1148_4 +# 1195| Block 3 +# 1195| r1195_1(glval<char *>) = VariableAddress[#throw1195:7] : +# 1195| r1195_2(glval<char[15]>) = StringConstant["string literal"] : +# 1195| r1195_3(char *) = Convert : r1195_2 +# 1195| m1195_4(char *) = Store[#throw1195:7] : &:r1195_1, r1195_3 +# 1195| v1195_5(void) = ThrowValue : &:r1195_1, m1195_4 #-----| Exception -> Block 6 -# 1150| Block 4 -# 1150| r1150_1(glval<int>) = VariableAddress[x] : -# 1150| r1150_2(int) = Load[x] : &:r1150_1, m1146_3 -# 1150| r1150_3(int) = Constant[2] : -# 1150| r1150_4(bool) = CompareLT : r1150_2, r1150_3 -# 1150| v1150_5(void) = ConditionalBranch : r1150_4 +# 1197| Block 4 +# 1197| r1197_1(glval<int>) = VariableAddress[x] : +# 1197| r1197_2(int) = Load[x] : &:r1197_1, m1193_3 +# 1197| r1197_3(int) = Constant[2] : +# 1197| r1197_4(bool) = CompareLT : r1197_2, r1197_3 +# 1197| v1197_5(void) = ConditionalBranch : r1197_4 #-----| False -> Block 5 #-----| True -> Block 11 -# 1153| Block 5 -# 1153| r1153_1(int) = Constant[7] : -# 1153| r1153_2(glval<int>) = VariableAddress[x] : -# 1153| m1153_3(int) = Store[x] : &:r1153_2, r1153_1 +# 1200| Block 5 +# 1200| r1200_1(int) = Constant[7] : +# 1200| r1200_2(glval<int>) = VariableAddress[x] : +# 1200| m1200_3(int) = Store[x] : &:r1200_2, r1200_1 #-----| Goto -> Block 10 -# 1155| Block 6 -# 1155| v1155_1(void) = CatchByType[const char *] : +# 1202| Block 6 +# 1202| v1202_1(void) = CatchByType[const char *] : #-----| Exception -> Block 8 #-----| Goto -> Block 7 -# 1155| Block 7 -# 1155| r1155_2(glval<char *>) = VariableAddress[s] : -# 1155| m1155_3(char *) = InitializeParameter[s] : &:r1155_2 -# 1155| r1155_4(char *) = Load[s] : &:r1155_2, m1155_3 -# 1155| m1155_5(unknown) = InitializeIndirection[s] : &:r1155_4 -# 1156| r1156_1(glval<String>) = VariableAddress[#throw1156:5] : -# 1156| m1156_2(String) = Uninitialized[#throw1156:5] : &:r1156_1 -# 1156| r1156_3(glval<unknown>) = FunctionAddress[String] : -# 1156| r1156_4(glval<char *>) = VariableAddress[s] : -# 1156| r1156_5(char *) = Load[s] : &:r1156_4, m1155_3 -# 1156| v1156_6(void) = Call[String] : func:r1156_3, this:r1156_1, 0:r1156_5 -# 1156| m1156_7(unknown) = ^CallSideEffect : ~m1144_4 -# 1156| m1156_8(unknown) = Chi : total:m1144_4, partial:m1156_7 -# 1156| v1156_9(void) = ^BufferReadSideEffect[0] : &:r1156_5, ~m1155_5 -# 1156| m1156_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1156_1 -# 1156| m1156_11(String) = Chi : total:m1156_2, partial:m1156_10 -# 1156| v1156_12(void) = ThrowValue : &:r1156_1, m1156_11 +# 1202| Block 7 +# 1202| r1202_2(glval<char *>) = VariableAddress[s] : +# 1202| m1202_3(char *) = InitializeParameter[s] : &:r1202_2 +# 1202| r1202_4(char *) = Load[s] : &:r1202_2, m1202_3 +# 1202| m1202_5(unknown) = InitializeIndirection[s] : &:r1202_4 +# 1203| r1203_1(glval<String>) = VariableAddress[#throw1203:5] : +# 1203| m1203_2(String) = Uninitialized[#throw1203:5] : &:r1203_1 +# 1203| r1203_3(glval<unknown>) = FunctionAddress[String] : +# 1203| r1203_4(glval<char *>) = VariableAddress[s] : +# 1203| r1203_5(char *) = Load[s] : &:r1203_4, m1202_3 +# 1203| v1203_6(void) = Call[String] : func:r1203_3, this:r1203_1, 0:r1203_5 +# 1203| m1203_7(unknown) = ^CallSideEffect : ~m1191_4 +# 1203| m1203_8(unknown) = Chi : total:m1191_4, partial:m1203_7 +# 1203| v1203_9(void) = ^BufferReadSideEffect[0] : &:r1203_5, ~m1202_5 +# 1203| m1203_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1203_1 +# 1203| m1203_11(String) = Chi : total:m1203_2, partial:m1203_10 +# 1203| v1203_12(void) = ThrowValue : &:r1203_1, m1203_11 #-----| Exception -> Block 2 -# 1158| Block 8 -# 1158| v1158_1(void) = CatchByType[const String &] : +# 1205| Block 8 +# 1205| v1205_1(void) = CatchByType[const String &] : #-----| Exception -> Block 2 #-----| Goto -> Block 9 -# 1158| Block 9 -# 1158| r1158_2(glval<String &>) = VariableAddress[e] : -# 1158| m1158_3(String &) = InitializeParameter[e] : &:r1158_2 -# 1158| r1158_4(String &) = Load[e] : &:r1158_2, m1158_3 -# 1158| m1158_5(unknown) = InitializeIndirection[e] : &:r1158_4 -# 1158| v1158_6(void) = NoOp : +# 1205| Block 9 +# 1205| r1205_2(glval<String &>) = VariableAddress[e] : +# 1205| m1205_3(String &) = InitializeParameter[e] : &:r1205_2 +# 1205| r1205_4(String &) = Load[e] : &:r1205_2, m1205_3 +# 1205| m1205_5(unknown) = InitializeIndirection[e] : &:r1205_4 +# 1205| v1205_6(void) = NoOp : #-----| Goto -> Block 10 -# 1160| Block 10 -# 1160| v1160_1(void) = NoOp : -# 1144| v1144_12(void) = ReturnVoid : +# 1207| Block 10 +# 1207| v1207_1(void) = NoOp : +# 1191| v1191_12(void) = ReturnVoid : #-----| Goto -> Block 1 -# 1144| Block 11 -# 1144| v1144_13(void) = Unreached : - -# 1164| void VectorTypes(int) -# 1164| Block 0 -# 1164| v1164_1(void) = EnterFunction : -# 1164| m1164_2(unknown) = AliasedDefinition : -# 1164| m1164_3(unknown) = InitializeNonLocal : -# 1164| m1164_4(unknown) = Chi : total:m1164_2, partial:m1164_3 -# 1164| r1164_5(glval<int>) = VariableAddress[i] : -# 1164| m1164_6(int) = InitializeParameter[i] : &:r1164_5 -# 1165| r1165_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1165| m1165_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1165_1 -# 1165| r1165_3(int) = Constant[0] : -# 1165| r1165_4(glval<int>) = PointerAdd[4] : r1165_1, r1165_3 -# 1165| r1165_5(int) = Constant[0] : -# 1165| m1165_6(int) = Store[?] : &:r1165_4, r1165_5 -# 1165| m1165_7(__attribute((vector_size(16UL))) int) = Chi : total:m1165_2, partial:m1165_6 -# 1165| r1165_8(int) = Constant[1] : -# 1165| r1165_9(glval<int>) = PointerAdd[4] : r1165_1, r1165_8 -# 1165| r1165_10(int) = Constant[1] : -# 1165| m1165_11(int) = Store[?] : &:r1165_9, r1165_10 -# 1165| m1165_12(__attribute((vector_size(16UL))) int) = Chi : total:m1165_7, partial:m1165_11 -# 1165| r1165_13(int) = Constant[2] : -# 1165| r1165_14(glval<int>) = PointerAdd[4] : r1165_1, r1165_13 -# 1165| r1165_15(int) = Constant[2] : -# 1165| m1165_16(int) = Store[?] : &:r1165_14, r1165_15 -# 1165| m1165_17(__attribute((vector_size(16UL))) int) = Chi : total:m1165_12, partial:m1165_16 -# 1165| r1165_18(int) = Constant[3] : -# 1165| r1165_19(glval<int>) = PointerAdd[4] : r1165_1, r1165_18 -# 1165| r1165_20(int) = Constant[3] : -# 1165| m1165_21(int) = Store[?] : &:r1165_19, r1165_20 -# 1165| m1165_22(__attribute((vector_size(16UL))) int) = Chi : total:m1165_17, partial:m1165_21 -# 1166| r1166_1(glval<int>) = VariableAddress[x] : -# 1166| r1166_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1166| r1166_3(glval<int>) = VariableAddress[i] : -# 1166| r1166_4(int) = Load[i] : &:r1166_3, m1164_6 -# 1166| r1166_5(glval<int>) = PointerAdd[4] : r1166_2, r1166_4 -# 1166| r1166_6(int) = Load[?] : &:r1166_5, ~m1165_22 -# 1166| m1166_7(int) = Store[x] : &:r1166_1, r1166_6 -# 1167| r1167_1(glval<int>) = VariableAddress[x] : -# 1167| r1167_2(int) = Load[x] : &:r1167_1, m1166_7 -# 1167| r1167_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1167| r1167_4(glval<int>) = VariableAddress[i] : -# 1167| r1167_5(int) = Load[i] : &:r1167_4, m1164_6 -# 1167| r1167_6(glval<int>) = PointerAdd[4] : r1167_3, r1167_5 -# 1167| m1167_7(int) = Store[?] : &:r1167_6, r1167_2 -# 1167| m1167_8(__attribute((vector_size(16UL))) int) = Chi : total:m1165_22, partial:m1167_7 -# 1168| r1168_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1168| r1168_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1168| r1168_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_2, m1167_8 -# 1168| r1168_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1168| r1168_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_4, m1167_8 -# 1168| r1168_6(int) = Constant[3] : -# 1168| r1168_7(int) = Constant[2] : -# 1168| r1168_8(int) = Constant[1] : -# 1168| r1168_9(int) = Constant[0] : -# 1168| r1168_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1168_3, 1:r1168_5, 2:r1168_6, 3:r1168_7, 4:r1168_8, 5:r1168_9 -# 1168| m1168_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1168_1, r1168_10 -# 1169| r1169_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1169| r1169_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1169_1, m1167_8 -# 1169| r1169_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1169| r1169_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1169_3, m1168_11 -# 1169| r1169_5(__attribute((vector_size(16UL))) int) = Add : r1169_2, r1169_4 -# 1169| r1169_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1169| m1169_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1169_6, r1169_5 -# 1170| v1170_1(void) = NoOp : -# 1164| v1164_7(void) = ReturnVoid : -# 1164| v1164_8(void) = AliasedUse : m1164_3 -# 1164| v1164_9(void) = ExitFunction : - -# 1174| int ModeledCallTarget(int) -# 1174| Block 0 -# 1174| v1174_1(void) = EnterFunction : -# 1174| m1174_2(unknown) = AliasedDefinition : -# 1174| m1174_3(unknown) = InitializeNonLocal : -# 1174| m1174_4(unknown) = Chi : total:m1174_2, partial:m1174_3 -# 1174| r1174_5(glval<int>) = VariableAddress[x] : -# 1174| m1174_6(int) = InitializeParameter[x] : &:r1174_5 -# 1175| r1175_1(glval<int>) = VariableAddress[y] : -# 1175| m1175_2(int) = Uninitialized[y] : &:r1175_1 -# 1176| r1176_1(glval<unknown>) = FunctionAddress[memcpy] : -# 1176| r1176_2(glval<int>) = VariableAddress[y] : -# 1176| r1176_3(int *) = CopyValue : r1176_2 -# 1176| r1176_4(void *) = Convert : r1176_3 -# 1176| r1176_5(glval<int>) = VariableAddress[x] : -# 1176| r1176_6(int *) = CopyValue : r1176_5 -# 1176| r1176_7(void *) = Convert : r1176_6 -# 1176| r1176_8(int) = Constant[4] : -# 1176| r1176_9(void *) = Call[memcpy] : func:r1176_1, 0:r1176_4, 1:r1176_7, 2:r1176_8 -# 1176| v1176_10(void) = ^SizedBufferReadSideEffect[1] : &:r1176_7, r1176_8, ~m1174_6 -# 1176| m1176_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1176_4, r1176_8 -# 1176| m1176_12(int) = Chi : total:m1175_2, partial:m1176_11 -# 1177| r1177_1(glval<int>) = VariableAddress[#return] : -# 1177| r1177_2(glval<int>) = VariableAddress[y] : -# 1177| r1177_3(int) = Load[y] : &:r1177_2, m1176_12 -# 1177| m1177_4(int) = Store[#return] : &:r1177_1, r1177_3 -# 1174| r1174_7(glval<int>) = VariableAddress[#return] : -# 1174| v1174_8(void) = ReturnValue : &:r1174_7, m1177_4 -# 1174| v1174_9(void) = AliasedUse : m1174_3 -# 1174| v1174_10(void) = ExitFunction : - -# 1180| String ReturnObjectImpl() -# 1180| Block 0 -# 1180| v1180_1(void) = EnterFunction : -# 1180| m1180_2(unknown) = AliasedDefinition : -# 1180| m1180_3(unknown) = InitializeNonLocal : -# 1180| m1180_4(unknown) = Chi : total:m1180_2, partial:m1180_3 -# 1181| r1181_1(glval<String>) = VariableAddress[#return] : -# 1181| m1181_2(String) = Uninitialized[#return] : &:r1181_1 -# 1181| r1181_3(glval<unknown>) = FunctionAddress[String] : -# 1181| r1181_4(glval<char[4]>) = StringConstant["foo"] : -# 1181| r1181_5(char *) = Convert : r1181_4 -# 1181| v1181_6(void) = Call[String] : func:r1181_3, this:r1181_1, 0:r1181_5 -# 1181| m1181_7(unknown) = ^CallSideEffect : ~m1180_4 -# 1181| m1181_8(unknown) = Chi : total:m1180_4, partial:m1181_7 -# 1181| v1181_9(void) = ^BufferReadSideEffect[0] : &:r1181_5, ~m1180_3 -# 1181| m1181_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1181_1 -# 1181| m1181_11(String) = Chi : total:m1181_2, partial:m1181_10 -# 1180| r1180_5(glval<String>) = VariableAddress[#return] : -# 1180| v1180_6(void) = ReturnValue : &:r1180_5, m1181_11 -# 1180| v1180_7(void) = AliasedUse : ~m1181_8 -# 1180| v1180_8(void) = ExitFunction : - -# 1184| void switch1Case(int) -# 1184| Block 0 -# 1184| v1184_1(void) = EnterFunction : -# 1184| m1184_2(unknown) = AliasedDefinition : -# 1184| m1184_3(unknown) = InitializeNonLocal : -# 1184| m1184_4(unknown) = Chi : total:m1184_2, partial:m1184_3 -# 1184| r1184_5(glval<int>) = VariableAddress[x] : -# 1184| m1184_6(int) = InitializeParameter[x] : &:r1184_5 -# 1185| r1185_1(glval<int>) = VariableAddress[y] : -# 1185| r1185_2(int) = Constant[0] : -# 1185| m1185_3(int) = Store[y] : &:r1185_1, r1185_2 -# 1186| r1186_1(glval<int>) = VariableAddress[x] : -# 1186| r1186_2(int) = Load[x] : &:r1186_1, m1184_6 -# 1186| v1186_3(void) = Switch : r1186_2 +# 1191| Block 11 +# 1191| v1191_13(void) = Unreached : + +# 1211| void VectorTypes(int) +# 1211| Block 0 +# 1211| v1211_1(void) = EnterFunction : +# 1211| m1211_2(unknown) = AliasedDefinition : +# 1211| m1211_3(unknown) = InitializeNonLocal : +# 1211| m1211_4(unknown) = Chi : total:m1211_2, partial:m1211_3 +# 1211| r1211_5(glval<int>) = VariableAddress[i] : +# 1211| m1211_6(int) = InitializeParameter[i] : &:r1211_5 +# 1212| r1212_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1212| m1212_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1212_1 +# 1212| r1212_3(int) = Constant[0] : +# 1212| r1212_4(glval<int>) = PointerAdd[4] : r1212_1, r1212_3 +# 1212| r1212_5(int) = Constant[0] : +# 1212| m1212_6(int) = Store[?] : &:r1212_4, r1212_5 +# 1212| m1212_7(__attribute((vector_size(16UL))) int) = Chi : total:m1212_2, partial:m1212_6 +# 1212| r1212_8(int) = Constant[1] : +# 1212| r1212_9(glval<int>) = PointerAdd[4] : r1212_1, r1212_8 +# 1212| r1212_10(int) = Constant[1] : +# 1212| m1212_11(int) = Store[?] : &:r1212_9, r1212_10 +# 1212| m1212_12(__attribute((vector_size(16UL))) int) = Chi : total:m1212_7, partial:m1212_11 +# 1212| r1212_13(int) = Constant[2] : +# 1212| r1212_14(glval<int>) = PointerAdd[4] : r1212_1, r1212_13 +# 1212| r1212_15(int) = Constant[2] : +# 1212| m1212_16(int) = Store[?] : &:r1212_14, r1212_15 +# 1212| m1212_17(__attribute((vector_size(16UL))) int) = Chi : total:m1212_12, partial:m1212_16 +# 1212| r1212_18(int) = Constant[3] : +# 1212| r1212_19(glval<int>) = PointerAdd[4] : r1212_1, r1212_18 +# 1212| r1212_20(int) = Constant[3] : +# 1212| m1212_21(int) = Store[?] : &:r1212_19, r1212_20 +# 1212| m1212_22(__attribute((vector_size(16UL))) int) = Chi : total:m1212_17, partial:m1212_21 +# 1213| r1213_1(glval<int>) = VariableAddress[x] : +# 1213| r1213_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1213| r1213_3(glval<int>) = VariableAddress[i] : +# 1213| r1213_4(int) = Load[i] : &:r1213_3, m1211_6 +# 1213| r1213_5(glval<int>) = PointerAdd[4] : r1213_2, r1213_4 +# 1213| r1213_6(int) = Load[?] : &:r1213_5, ~m1212_22 +# 1213| m1213_7(int) = Store[x] : &:r1213_1, r1213_6 +# 1214| r1214_1(glval<int>) = VariableAddress[x] : +# 1214| r1214_2(int) = Load[x] : &:r1214_1, m1213_7 +# 1214| r1214_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1214| r1214_4(glval<int>) = VariableAddress[i] : +# 1214| r1214_5(int) = Load[i] : &:r1214_4, m1211_6 +# 1214| r1214_6(glval<int>) = PointerAdd[4] : r1214_3, r1214_5 +# 1214| m1214_7(int) = Store[?] : &:r1214_6, r1214_2 +# 1214| m1214_8(__attribute((vector_size(16UL))) int) = Chi : total:m1212_22, partial:m1214_7 +# 1215| r1215_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1215| r1215_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1215| r1215_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_2, m1214_8 +# 1215| r1215_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1215| r1215_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_4, m1214_8 +# 1215| r1215_6(int) = Constant[3] : +# 1215| r1215_7(int) = Constant[2] : +# 1215| r1215_8(int) = Constant[1] : +# 1215| r1215_9(int) = Constant[0] : +# 1215| r1215_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_6, 3:r1215_7, 4:r1215_8, 5:r1215_9 +# 1215| m1215_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_10 +# 1216| r1216_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1216| r1216_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1216_1, m1214_8 +# 1216| r1216_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1216| r1216_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1216_3, m1215_11 +# 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 +# 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1216| m1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 +# 1217| v1217_1(void) = NoOp : +# 1211| v1211_7(void) = ReturnVoid : +# 1211| v1211_8(void) = AliasedUse : m1211_3 +# 1211| v1211_9(void) = ExitFunction : + +# 1221| int ModeledCallTarget(int) +# 1221| Block 0 +# 1221| v1221_1(void) = EnterFunction : +# 1221| m1221_2(unknown) = AliasedDefinition : +# 1221| m1221_3(unknown) = InitializeNonLocal : +# 1221| m1221_4(unknown) = Chi : total:m1221_2, partial:m1221_3 +# 1221| r1221_5(glval<int>) = VariableAddress[x] : +# 1221| m1221_6(int) = InitializeParameter[x] : &:r1221_5 +# 1222| r1222_1(glval<int>) = VariableAddress[y] : +# 1222| m1222_2(int) = Uninitialized[y] : &:r1222_1 +# 1223| r1223_1(glval<unknown>) = FunctionAddress[memcpy] : +# 1223| r1223_2(glval<int>) = VariableAddress[y] : +# 1223| r1223_3(int *) = CopyValue : r1223_2 +# 1223| r1223_4(void *) = Convert : r1223_3 +# 1223| r1223_5(glval<int>) = VariableAddress[x] : +# 1223| r1223_6(int *) = CopyValue : r1223_5 +# 1223| r1223_7(void *) = Convert : r1223_6 +# 1223| r1223_8(int) = Constant[4] : +# 1223| r1223_9(void *) = Call[memcpy] : func:r1223_1, 0:r1223_4, 1:r1223_7, 2:r1223_8 +# 1223| v1223_10(void) = ^SizedBufferReadSideEffect[1] : &:r1223_7, r1223_8, ~m1221_6 +# 1223| m1223_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1223_4, r1223_8 +# 1223| m1223_12(int) = Chi : total:m1222_2, partial:m1223_11 +# 1224| r1224_1(glval<int>) = VariableAddress[#return] : +# 1224| r1224_2(glval<int>) = VariableAddress[y] : +# 1224| r1224_3(int) = Load[y] : &:r1224_2, m1223_12 +# 1224| m1224_4(int) = Store[#return] : &:r1224_1, r1224_3 +# 1221| r1221_7(glval<int>) = VariableAddress[#return] : +# 1221| v1221_8(void) = ReturnValue : &:r1221_7, m1224_4 +# 1221| v1221_9(void) = AliasedUse : m1221_3 +# 1221| v1221_10(void) = ExitFunction : + +# 1227| String ReturnObjectImpl() +# 1227| Block 0 +# 1227| v1227_1(void) = EnterFunction : +# 1227| m1227_2(unknown) = AliasedDefinition : +# 1227| m1227_3(unknown) = InitializeNonLocal : +# 1227| m1227_4(unknown) = Chi : total:m1227_2, partial:m1227_3 +# 1228| r1228_1(glval<String>) = VariableAddress[#return] : +# 1228| m1228_2(String) = Uninitialized[#return] : &:r1228_1 +# 1228| r1228_3(glval<unknown>) = FunctionAddress[String] : +# 1228| r1228_4(glval<char[4]>) = StringConstant["foo"] : +# 1228| r1228_5(char *) = Convert : r1228_4 +# 1228| v1228_6(void) = Call[String] : func:r1228_3, this:r1228_1, 0:r1228_5 +# 1228| m1228_7(unknown) = ^CallSideEffect : ~m1227_4 +# 1228| m1228_8(unknown) = Chi : total:m1227_4, partial:m1228_7 +# 1228| v1228_9(void) = ^BufferReadSideEffect[0] : &:r1228_5, ~m1227_3 +# 1228| m1228_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1228_1 +# 1228| m1228_11(String) = Chi : total:m1228_2, partial:m1228_10 +# 1227| r1227_5(glval<String>) = VariableAddress[#return] : +# 1227| v1227_6(void) = ReturnValue : &:r1227_5, m1228_11 +# 1227| v1227_7(void) = AliasedUse : ~m1228_8 +# 1227| v1227_8(void) = ExitFunction : + +# 1231| void switch1Case(int) +# 1231| Block 0 +# 1231| v1231_1(void) = EnterFunction : +# 1231| m1231_2(unknown) = AliasedDefinition : +# 1231| m1231_3(unknown) = InitializeNonLocal : +# 1231| m1231_4(unknown) = Chi : total:m1231_2, partial:m1231_3 +# 1231| r1231_5(glval<int>) = VariableAddress[x] : +# 1231| m1231_6(int) = InitializeParameter[x] : &:r1231_5 +# 1232| r1232_1(glval<int>) = VariableAddress[y] : +# 1232| r1232_2(int) = Constant[0] : +# 1232| m1232_3(int) = Store[y] : &:r1232_1, r1232_2 +# 1233| r1233_1(glval<int>) = VariableAddress[x] : +# 1233| r1233_2(int) = Load[x] : &:r1233_1, m1231_6 +# 1233| v1233_3(void) = Switch : r1233_2 #-----| Case[1] -> Block 1 #-----| Default -> Block 2 -# 1187| Block 1 -# 1187| v1187_1(void) = NoOp : -# 1188| r1188_1(int) = Constant[2] : -# 1188| r1188_2(glval<int>) = VariableAddress[y] : -# 1188| m1188_3(int) = Store[y] : &:r1188_2, r1188_1 +# 1234| Block 1 +# 1234| v1234_1(void) = NoOp : +# 1235| r1235_1(int) = Constant[2] : +# 1235| r1235_2(glval<int>) = VariableAddress[y] : +# 1235| m1235_3(int) = Store[y] : &:r1235_2, r1235_1 #-----| Goto -> Block 2 -# 1190| Block 2 -# 1190| m1190_1(int) = Phi : from 0:m1185_3, from 1:m1188_3 -# 1190| r1190_2(glval<int>) = VariableAddress[z] : -# 1190| r1190_3(glval<int>) = VariableAddress[y] : -# 1190| r1190_4(int) = Load[y] : &:r1190_3, m1190_1 -# 1190| m1190_5(int) = Store[z] : &:r1190_2, r1190_4 -# 1191| v1191_1(void) = NoOp : -# 1184| v1184_7(void) = ReturnVoid : -# 1184| v1184_8(void) = AliasedUse : m1184_3 -# 1184| v1184_9(void) = ExitFunction : - -# 1193| void switch2Case_fallthrough(int) -# 1193| Block 0 -# 1193| v1193_1(void) = EnterFunction : -# 1193| m1193_2(unknown) = AliasedDefinition : -# 1193| m1193_3(unknown) = InitializeNonLocal : -# 1193| m1193_4(unknown) = Chi : total:m1193_2, partial:m1193_3 -# 1193| r1193_5(glval<int>) = VariableAddress[x] : -# 1193| m1193_6(int) = InitializeParameter[x] : &:r1193_5 -# 1194| r1194_1(glval<int>) = VariableAddress[y] : -# 1194| r1194_2(int) = Constant[0] : -# 1194| m1194_3(int) = Store[y] : &:r1194_1, r1194_2 -# 1195| r1195_1(glval<int>) = VariableAddress[x] : -# 1195| r1195_2(int) = Load[x] : &:r1195_1, m1193_6 -# 1195| v1195_3(void) = Switch : r1195_2 +# 1237| Block 2 +# 1237| m1237_1(int) = Phi : from 0:m1232_3, from 1:m1235_3 +# 1237| r1237_2(glval<int>) = VariableAddress[z] : +# 1237| r1237_3(glval<int>) = VariableAddress[y] : +# 1237| r1237_4(int) = Load[y] : &:r1237_3, m1237_1 +# 1237| m1237_5(int) = Store[z] : &:r1237_2, r1237_4 +# 1238| v1238_1(void) = NoOp : +# 1231| v1231_7(void) = ReturnVoid : +# 1231| v1231_8(void) = AliasedUse : m1231_3 +# 1231| v1231_9(void) = ExitFunction : + +# 1240| void switch2Case_fallthrough(int) +# 1240| Block 0 +# 1240| v1240_1(void) = EnterFunction : +# 1240| m1240_2(unknown) = AliasedDefinition : +# 1240| m1240_3(unknown) = InitializeNonLocal : +# 1240| m1240_4(unknown) = Chi : total:m1240_2, partial:m1240_3 +# 1240| r1240_5(glval<int>) = VariableAddress[x] : +# 1240| m1240_6(int) = InitializeParameter[x] : &:r1240_5 +# 1241| r1241_1(glval<int>) = VariableAddress[y] : +# 1241| r1241_2(int) = Constant[0] : +# 1241| m1241_3(int) = Store[y] : &:r1241_1, r1241_2 +# 1242| r1242_1(glval<int>) = VariableAddress[x] : +# 1242| r1242_2(int) = Load[x] : &:r1242_1, m1240_6 +# 1242| v1242_3(void) = Switch : r1242_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1196| Block 1 -# 1196| v1196_1(void) = NoOp : -# 1197| r1197_1(int) = Constant[2] : -# 1197| r1197_2(glval<int>) = VariableAddress[y] : -# 1197| m1197_3(int) = Store[y] : &:r1197_2, r1197_1 +# 1243| Block 1 +# 1243| v1243_1(void) = NoOp : +# 1244| r1244_1(int) = Constant[2] : +# 1244| r1244_2(glval<int>) = VariableAddress[y] : +# 1244| m1244_3(int) = Store[y] : &:r1244_2, r1244_1 #-----| Goto -> Block 2 -# 1198| Block 2 -# 1198| v1198_1(void) = NoOp : -# 1199| r1199_1(int) = Constant[3] : -# 1199| r1199_2(glval<int>) = VariableAddress[y] : -# 1199| m1199_3(int) = Store[y] : &:r1199_2, r1199_1 +# 1245| Block 2 +# 1245| v1245_1(void) = NoOp : +# 1246| r1246_1(int) = Constant[3] : +# 1246| r1246_2(glval<int>) = VariableAddress[y] : +# 1246| m1246_3(int) = Store[y] : &:r1246_2, r1246_1 #-----| Goto -> Block 3 -# 1201| Block 3 -# 1201| m1201_1(int) = Phi : from 0:m1194_3, from 2:m1199_3 -# 1201| r1201_2(glval<int>) = VariableAddress[z] : -# 1201| r1201_3(glval<int>) = VariableAddress[y] : -# 1201| r1201_4(int) = Load[y] : &:r1201_3, m1201_1 -# 1201| m1201_5(int) = Store[z] : &:r1201_2, r1201_4 -# 1202| v1202_1(void) = NoOp : -# 1193| v1193_7(void) = ReturnVoid : -# 1193| v1193_8(void) = AliasedUse : m1193_3 -# 1193| v1193_9(void) = ExitFunction : - -# 1204| void switch2Case(int) -# 1204| Block 0 -# 1204| v1204_1(void) = EnterFunction : -# 1204| m1204_2(unknown) = AliasedDefinition : -# 1204| m1204_3(unknown) = InitializeNonLocal : -# 1204| m1204_4(unknown) = Chi : total:m1204_2, partial:m1204_3 -# 1204| r1204_5(glval<int>) = VariableAddress[x] : -# 1204| m1204_6(int) = InitializeParameter[x] : &:r1204_5 -# 1205| r1205_1(glval<int>) = VariableAddress[y] : -# 1205| r1205_2(int) = Constant[0] : -# 1205| m1205_3(int) = Store[y] : &:r1205_1, r1205_2 -# 1206| r1206_1(glval<int>) = VariableAddress[x] : -# 1206| r1206_2(int) = Load[x] : &:r1206_1, m1204_6 -# 1206| v1206_3(void) = Switch : r1206_2 +# 1248| Block 3 +# 1248| m1248_1(int) = Phi : from 0:m1241_3, from 2:m1246_3 +# 1248| r1248_2(glval<int>) = VariableAddress[z] : +# 1248| r1248_3(glval<int>) = VariableAddress[y] : +# 1248| r1248_4(int) = Load[y] : &:r1248_3, m1248_1 +# 1248| m1248_5(int) = Store[z] : &:r1248_2, r1248_4 +# 1249| v1249_1(void) = NoOp : +# 1240| v1240_7(void) = ReturnVoid : +# 1240| v1240_8(void) = AliasedUse : m1240_3 +# 1240| v1240_9(void) = ExitFunction : + +# 1251| void switch2Case(int) +# 1251| Block 0 +# 1251| v1251_1(void) = EnterFunction : +# 1251| m1251_2(unknown) = AliasedDefinition : +# 1251| m1251_3(unknown) = InitializeNonLocal : +# 1251| m1251_4(unknown) = Chi : total:m1251_2, partial:m1251_3 +# 1251| r1251_5(glval<int>) = VariableAddress[x] : +# 1251| m1251_6(int) = InitializeParameter[x] : &:r1251_5 +# 1252| r1252_1(glval<int>) = VariableAddress[y] : +# 1252| r1252_2(int) = Constant[0] : +# 1252| m1252_3(int) = Store[y] : &:r1252_1, r1252_2 +# 1253| r1253_1(glval<int>) = VariableAddress[x] : +# 1253| r1253_2(int) = Load[x] : &:r1253_1, m1251_6 +# 1253| v1253_3(void) = Switch : r1253_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1207| Block 1 -# 1207| v1207_1(void) = NoOp : -# 1208| r1208_1(int) = Constant[2] : -# 1208| r1208_2(glval<int>) = VariableAddress[y] : -# 1208| m1208_3(int) = Store[y] : &:r1208_2, r1208_1 -# 1209| v1209_1(void) = NoOp : +# 1254| Block 1 +# 1254| v1254_1(void) = NoOp : +# 1255| r1255_1(int) = Constant[2] : +# 1255| r1255_2(glval<int>) = VariableAddress[y] : +# 1255| m1255_3(int) = Store[y] : &:r1255_2, r1255_1 +# 1256| v1256_1(void) = NoOp : #-----| Goto -> Block 3 -# 1210| Block 2 -# 1210| v1210_1(void) = NoOp : -# 1211| r1211_1(int) = Constant[3] : -# 1211| r1211_2(glval<int>) = VariableAddress[y] : -# 1211| m1211_3(int) = Store[y] : &:r1211_2, r1211_1 +# 1257| Block 2 +# 1257| v1257_1(void) = NoOp : +# 1258| r1258_1(int) = Constant[3] : +# 1258| r1258_2(glval<int>) = VariableAddress[y] : +# 1258| m1258_3(int) = Store[y] : &:r1258_2, r1258_1 #-----| Goto -> Block 3 -# 1212| Block 3 -# 1212| m1212_1(int) = Phi : from 0:m1205_3, from 1:m1208_3, from 2:m1211_3 -# 1212| v1212_2(void) = NoOp : -# 1213| r1213_1(glval<int>) = VariableAddress[z] : -# 1213| r1213_2(glval<int>) = VariableAddress[y] : -# 1213| r1213_3(int) = Load[y] : &:r1213_2, m1212_1 -# 1213| m1213_4(int) = Store[z] : &:r1213_1, r1213_3 -# 1214| v1214_1(void) = NoOp : -# 1204| v1204_7(void) = ReturnVoid : -# 1204| v1204_8(void) = AliasedUse : m1204_3 -# 1204| v1204_9(void) = ExitFunction : - -# 1216| void switch2Case_default(int) -# 1216| Block 0 -# 1216| v1216_1(void) = EnterFunction : -# 1216| m1216_2(unknown) = AliasedDefinition : -# 1216| m1216_3(unknown) = InitializeNonLocal : -# 1216| m1216_4(unknown) = Chi : total:m1216_2, partial:m1216_3 -# 1216| r1216_5(glval<int>) = VariableAddress[x] : -# 1216| m1216_6(int) = InitializeParameter[x] : &:r1216_5 -# 1217| r1217_1(glval<int>) = VariableAddress[y] : -# 1217| r1217_2(int) = Constant[0] : -# 1217| m1217_3(int) = Store[y] : &:r1217_1, r1217_2 -# 1218| r1218_1(glval<int>) = VariableAddress[x] : -# 1218| r1218_2(int) = Load[x] : &:r1218_1, m1216_6 -# 1218| v1218_3(void) = Switch : r1218_2 +# 1259| Block 3 +# 1259| m1259_1(int) = Phi : from 0:m1252_3, from 1:m1255_3, from 2:m1258_3 +# 1259| v1259_2(void) = NoOp : +# 1260| r1260_1(glval<int>) = VariableAddress[z] : +# 1260| r1260_2(glval<int>) = VariableAddress[y] : +# 1260| r1260_3(int) = Load[y] : &:r1260_2, m1259_1 +# 1260| m1260_4(int) = Store[z] : &:r1260_1, r1260_3 +# 1261| v1261_1(void) = NoOp : +# 1251| v1251_7(void) = ReturnVoid : +# 1251| v1251_8(void) = AliasedUse : m1251_3 +# 1251| v1251_9(void) = ExitFunction : + +# 1263| void switch2Case_default(int) +# 1263| Block 0 +# 1263| v1263_1(void) = EnterFunction : +# 1263| m1263_2(unknown) = AliasedDefinition : +# 1263| m1263_3(unknown) = InitializeNonLocal : +# 1263| m1263_4(unknown) = Chi : total:m1263_2, partial:m1263_3 +# 1263| r1263_5(glval<int>) = VariableAddress[x] : +# 1263| m1263_6(int) = InitializeParameter[x] : &:r1263_5 +# 1264| r1264_1(glval<int>) = VariableAddress[y] : +# 1264| r1264_2(int) = Constant[0] : +# 1264| m1264_3(int) = Store[y] : &:r1264_1, r1264_2 +# 1265| r1265_1(glval<int>) = VariableAddress[x] : +# 1265| r1265_2(int) = Load[x] : &:r1265_1, m1263_6 +# 1265| v1265_3(void) = Switch : r1265_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1219| Block 1 -# 1219| v1219_1(void) = NoOp : -# 1220| r1220_1(int) = Constant[2] : -# 1220| r1220_2(glval<int>) = VariableAddress[y] : -# 1220| m1220_3(int) = Store[y] : &:r1220_2, r1220_1 -# 1221| v1221_1(void) = NoOp : +# 1266| Block 1 +# 1266| v1266_1(void) = NoOp : +# 1267| r1267_1(int) = Constant[2] : +# 1267| r1267_2(glval<int>) = VariableAddress[y] : +# 1267| m1267_3(int) = Store[y] : &:r1267_2, r1267_1 +# 1268| v1268_1(void) = NoOp : #-----| Goto -> Block 4 -# 1223| Block 2 -# 1223| v1223_1(void) = NoOp : -# 1224| r1224_1(int) = Constant[3] : -# 1224| r1224_2(glval<int>) = VariableAddress[y] : -# 1224| m1224_3(int) = Store[y] : &:r1224_2, r1224_1 -# 1225| v1225_1(void) = NoOp : +# 1270| Block 2 +# 1270| v1270_1(void) = NoOp : +# 1271| r1271_1(int) = Constant[3] : +# 1271| r1271_2(glval<int>) = VariableAddress[y] : +# 1271| m1271_3(int) = Store[y] : &:r1271_2, r1271_1 +# 1272| v1272_1(void) = NoOp : #-----| Goto -> Block 4 -# 1227| Block 3 -# 1227| v1227_1(void) = NoOp : -# 1228| r1228_1(int) = Constant[4] : -# 1228| r1228_2(glval<int>) = VariableAddress[y] : -# 1228| m1228_3(int) = Store[y] : &:r1228_2, r1228_1 +# 1274| Block 3 +# 1274| v1274_1(void) = NoOp : +# 1275| r1275_1(int) = Constant[4] : +# 1275| r1275_2(glval<int>) = VariableAddress[y] : +# 1275| m1275_3(int) = Store[y] : &:r1275_2, r1275_1 #-----| Goto -> Block 4 -# 1229| Block 4 -# 1229| m1229_1(int) = Phi : from 1:m1220_3, from 2:m1224_3, from 3:m1228_3 -# 1229| v1229_2(void) = NoOp : -# 1230| r1230_1(glval<int>) = VariableAddress[z] : -# 1230| r1230_2(glval<int>) = VariableAddress[y] : -# 1230| r1230_3(int) = Load[y] : &:r1230_2, m1229_1 -# 1230| m1230_4(int) = Store[z] : &:r1230_1, r1230_3 -# 1231| v1231_1(void) = NoOp : -# 1216| v1216_7(void) = ReturnVoid : -# 1216| v1216_8(void) = AliasedUse : m1216_3 -# 1216| v1216_9(void) = ExitFunction : - -# 1233| int staticLocalInit(int) -# 1233| Block 0 -# 1233| v1233_1(void) = EnterFunction : -# 1233| m1233_2(unknown) = AliasedDefinition : -# 1233| m1233_3(unknown) = InitializeNonLocal : -# 1233| m1233_4(unknown) = Chi : total:m1233_2, partial:m1233_3 -# 1233| r1233_5(glval<int>) = VariableAddress[x] : -# 1233| m1233_6(int) = InitializeParameter[x] : &:r1233_5 -# 1236| r1236_1(glval<bool>) = VariableAddress[c#init] : -# 1236| r1236_2(bool) = Load[c#init] : &:r1236_1, ~m1233_3 -# 1236| v1236_3(void) = ConditionalBranch : r1236_2 +# 1276| Block 4 +# 1276| m1276_1(int) = Phi : from 1:m1267_3, from 2:m1271_3, from 3:m1275_3 +# 1276| v1276_2(void) = NoOp : +# 1277| r1277_1(glval<int>) = VariableAddress[z] : +# 1277| r1277_2(glval<int>) = VariableAddress[y] : +# 1277| r1277_3(int) = Load[y] : &:r1277_2, m1276_1 +# 1277| m1277_4(int) = Store[z] : &:r1277_1, r1277_3 +# 1278| v1278_1(void) = NoOp : +# 1263| v1263_7(void) = ReturnVoid : +# 1263| v1263_8(void) = AliasedUse : m1263_3 +# 1263| v1263_9(void) = ExitFunction : + +# 1280| int staticLocalInit(int) +# 1280| Block 0 +# 1280| v1280_1(void) = EnterFunction : +# 1280| m1280_2(unknown) = AliasedDefinition : +# 1280| m1280_3(unknown) = InitializeNonLocal : +# 1280| m1280_4(unknown) = Chi : total:m1280_2, partial:m1280_3 +# 1280| r1280_5(glval<int>) = VariableAddress[x] : +# 1280| m1280_6(int) = InitializeParameter[x] : &:r1280_5 +# 1283| r1283_1(glval<bool>) = VariableAddress[c#init] : +# 1283| r1283_2(bool) = Load[c#init] : &:r1283_1, ~m1280_3 +# 1283| v1283_3(void) = ConditionalBranch : r1283_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1236| Block 1 -# 1236| r1236_4(glval<int>) = VariableAddress[c] : -# 1236| r1236_5(glval<int>) = VariableAddress[x] : -# 1236| r1236_6(int) = Load[x] : &:r1236_5, m1233_6 -# 1236| m1236_7(int) = Store[c] : &:r1236_4, r1236_6 -# 1236| m1236_8(unknown) = Chi : total:m1233_4, partial:m1236_7 -# 1236| r1236_9(bool) = Constant[1] : -# 1236| m1236_10(bool) = Store[c#init] : &:r1236_1, r1236_9 -# 1236| m1236_11(unknown) = Chi : total:m1236_8, partial:m1236_10 +# 1283| Block 1 +# 1283| r1283_4(glval<int>) = VariableAddress[c] : +# 1283| r1283_5(glval<int>) = VariableAddress[x] : +# 1283| r1283_6(int) = Load[x] : &:r1283_5, m1280_6 +# 1283| m1283_7(int) = Store[c] : &:r1283_4, r1283_6 +# 1283| m1283_8(unknown) = Chi : total:m1280_4, partial:m1283_7 +# 1283| r1283_9(bool) = Constant[1] : +# 1283| m1283_10(bool) = Store[c#init] : &:r1283_1, r1283_9 +# 1283| m1283_11(unknown) = Chi : total:m1283_8, partial:m1283_10 #-----| Goto -> Block 2 -# 1239| Block 2 -# 1239| m1239_1(int) = Phi : from 0:~m1233_3, from 1:m1236_7 -# 1239| m1239_2(unknown) = Phi : from 0:~m1233_4, from 1:~m1236_11 -# 1239| r1239_3(glval<int>) = VariableAddress[#return] : -# 1239| r1239_4(glval<int>) = VariableAddress[a] : -# 1239| r1239_5(int) = Load[a] : &:r1239_4, ~m1239_2 -# 1239| r1239_6(glval<int>) = VariableAddress[b] : -# 1239| r1239_7(int) = Load[b] : &:r1239_6, ~m1239_2 -# 1239| r1239_8(int) = Add : r1239_5, r1239_7 -# 1239| r1239_9(glval<int>) = VariableAddress[c] : -# 1239| r1239_10(int) = Load[c] : &:r1239_9, m1239_1 -# 1239| r1239_11(int) = Add : r1239_8, r1239_10 -# 1239| r1239_12(glval<int>) = VariableAddress[d] : -# 1239| r1239_13(int) = Load[d] : &:r1239_12, ~m1239_2 -# 1239| r1239_14(int) = Add : r1239_11, r1239_13 -# 1239| m1239_15(int) = Store[#return] : &:r1239_3, r1239_14 -# 1233| r1233_7(glval<int>) = VariableAddress[#return] : -# 1233| v1233_8(void) = ReturnValue : &:r1233_7, m1239_15 -# 1233| v1233_9(void) = AliasedUse : ~m1239_2 -# 1233| v1233_10(void) = ExitFunction : - -# 1234| int a -# 1234| Block 0 -# 1234| v1234_1(void) = EnterFunction : -# 1234| m1234_2(unknown) = AliasedDefinition : -# 1234| r1234_3(glval<int>) = VariableAddress[a] : -# 1234| r1234_4(int) = Constant[0] : -# 1234| m1234_5(int) = Store[a] : &:r1234_3, r1234_4 -# 1234| m1234_6(unknown) = Chi : total:m1234_2, partial:m1234_5 -# 1234| v1234_7(void) = ReturnVoid : -# 1234| v1234_8(void) = AliasedUse : ~m1234_6 -# 1234| v1234_9(void) = ExitFunction : - -# 1235| int b -# 1235| Block 0 -# 1235| v1235_1(void) = EnterFunction : -# 1235| m1235_2(unknown) = AliasedDefinition : -# 1235| r1235_3(glval<int>) = VariableAddress[b] : -# 1235| r1235_4(int) = Constant[4] : -# 1235| m1235_5(int) = Store[b] : &:r1235_3, r1235_4 -# 1235| m1235_6(unknown) = Chi : total:m1235_2, partial:m1235_5 -# 1235| v1235_7(void) = ReturnVoid : -# 1235| v1235_8(void) = AliasedUse : ~m1235_6 -# 1235| v1235_9(void) = ExitFunction : - -# 1242| void staticLocalWithConstructor(char const*) -# 1242| Block 0 -# 1242| v1242_1(void) = EnterFunction : -# 1242| m1242_2(unknown) = AliasedDefinition : -# 1242| m1242_3(unknown) = InitializeNonLocal : -# 1242| m1242_4(unknown) = Chi : total:m1242_2, partial:m1242_3 -# 1242| r1242_5(glval<char *>) = VariableAddress[dynamic] : -# 1242| m1242_6(char *) = InitializeParameter[dynamic] : &:r1242_5 -# 1242| r1242_7(char *) = Load[dynamic] : &:r1242_5, m1242_6 -# 1242| m1242_8(unknown) = InitializeIndirection[dynamic] : &:r1242_7 -# 1243| r1243_1(glval<bool>) = VariableAddress[a#init] : -# 1243| r1243_2(bool) = Load[a#init] : &:r1243_1, ~m1242_3 -# 1243| v1243_3(void) = ConditionalBranch : r1243_2 +# 1286| Block 2 +# 1286| m1286_1(int) = Phi : from 0:~m1280_3, from 1:m1283_7 +# 1286| m1286_2(unknown) = Phi : from 0:~m1280_4, from 1:~m1283_11 +# 1286| r1286_3(glval<int>) = VariableAddress[#return] : +# 1286| r1286_4(glval<int>) = VariableAddress[a] : +# 1286| r1286_5(int) = Load[a] : &:r1286_4, ~m1286_2 +# 1286| r1286_6(glval<int>) = VariableAddress[b] : +# 1286| r1286_7(int) = Load[b] : &:r1286_6, ~m1286_2 +# 1286| r1286_8(int) = Add : r1286_5, r1286_7 +# 1286| r1286_9(glval<int>) = VariableAddress[c] : +# 1286| r1286_10(int) = Load[c] : &:r1286_9, m1286_1 +# 1286| r1286_11(int) = Add : r1286_8, r1286_10 +# 1286| r1286_12(glval<int>) = VariableAddress[d] : +# 1286| r1286_13(int) = Load[d] : &:r1286_12, ~m1286_2 +# 1286| r1286_14(int) = Add : r1286_11, r1286_13 +# 1286| m1286_15(int) = Store[#return] : &:r1286_3, r1286_14 +# 1280| r1280_7(glval<int>) = VariableAddress[#return] : +# 1280| v1280_8(void) = ReturnValue : &:r1280_7, m1286_15 +# 1280| v1280_9(void) = AliasedUse : ~m1286_2 +# 1280| v1280_10(void) = ExitFunction : + +# 1281| int a +# 1281| Block 0 +# 1281| v1281_1(void) = EnterFunction : +# 1281| m1281_2(unknown) = AliasedDefinition : +# 1281| r1281_3(glval<int>) = VariableAddress[a] : +# 1281| r1281_4(int) = Constant[0] : +# 1281| m1281_5(int) = Store[a] : &:r1281_3, r1281_4 +# 1281| m1281_6(unknown) = Chi : total:m1281_2, partial:m1281_5 +# 1281| v1281_7(void) = ReturnVoid : +# 1281| v1281_8(void) = AliasedUse : ~m1281_6 +# 1281| v1281_9(void) = ExitFunction : + +# 1282| int b +# 1282| Block 0 +# 1282| v1282_1(void) = EnterFunction : +# 1282| m1282_2(unknown) = AliasedDefinition : +# 1282| r1282_3(glval<int>) = VariableAddress[b] : +# 1282| r1282_4(int) = Constant[4] : +# 1282| m1282_5(int) = Store[b] : &:r1282_3, r1282_4 +# 1282| m1282_6(unknown) = Chi : total:m1282_2, partial:m1282_5 +# 1282| v1282_7(void) = ReturnVoid : +# 1282| v1282_8(void) = AliasedUse : ~m1282_6 +# 1282| v1282_9(void) = ExitFunction : + +# 1289| void staticLocalWithConstructor(char const*) +# 1289| Block 0 +# 1289| v1289_1(void) = EnterFunction : +# 1289| m1289_2(unknown) = AliasedDefinition : +# 1289| m1289_3(unknown) = InitializeNonLocal : +# 1289| m1289_4(unknown) = Chi : total:m1289_2, partial:m1289_3 +# 1289| r1289_5(glval<char *>) = VariableAddress[dynamic] : +# 1289| m1289_6(char *) = InitializeParameter[dynamic] : &:r1289_5 +# 1289| r1289_7(char *) = Load[dynamic] : &:r1289_5, m1289_6 +# 1289| m1289_8(unknown) = InitializeIndirection[dynamic] : &:r1289_7 +# 1290| r1290_1(glval<bool>) = VariableAddress[a#init] : +# 1290| r1290_2(bool) = Load[a#init] : &:r1290_1, ~m1289_3 +# 1290| v1290_3(void) = ConditionalBranch : r1290_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1243| Block 1 -# 1243| r1243_4(glval<String>) = VariableAddress[a] : +# 1290| Block 1 +# 1290| r1290_4(glval<String>) = VariableAddress[a] : #-----| r0_1(glval<unknown>) = FunctionAddress[String] : -#-----| v0_2(void) = Call[String] : func:r0_1, this:r1243_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m1242_4 -#-----| m0_4(unknown) = Chi : total:m1242_4, partial:m0_3 -#-----| m0_5(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_4 +#-----| v0_2(void) = Call[String] : func:r0_1, this:r1290_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m1289_4 +#-----| m0_4(unknown) = Chi : total:m1289_4, partial:m0_3 +#-----| m0_5(String) = ^IndirectMayWriteSideEffect[-1] : &:r1290_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 1243| r1243_5(bool) = Constant[1] : -# 1243| m1243_6(bool) = Store[a#init] : &:r1243_1, r1243_5 -# 1243| m1243_7(unknown) = Chi : total:m0_6, partial:m1243_6 +# 1290| r1290_5(bool) = Constant[1] : +# 1290| m1290_6(bool) = Store[a#init] : &:r1290_1, r1290_5 +# 1290| m1290_7(unknown) = Chi : total:m0_6, partial:m1290_6 #-----| Goto -> Block 2 -# 1244| Block 2 -# 1244| m1244_1(unknown) = Phi : from 0:~m1242_4, from 1:~m1243_7 -# 1244| r1244_2(glval<bool>) = VariableAddress[b#init] : -# 1244| r1244_3(bool) = Load[b#init] : &:r1244_2, ~m1244_1 -# 1244| v1244_4(void) = ConditionalBranch : r1244_3 +# 1291| Block 2 +# 1291| m1291_1(unknown) = Phi : from 0:~m1289_4, from 1:~m1290_7 +# 1291| r1291_2(glval<bool>) = VariableAddress[b#init] : +# 1291| r1291_3(bool) = Load[b#init] : &:r1291_2, ~m1291_1 +# 1291| v1291_4(void) = ConditionalBranch : r1291_3 #-----| False -> Block 3 #-----| True -> Block 4 -# 1244| Block 3 -# 1244| r1244_5(glval<String>) = VariableAddress[b] : -# 1244| r1244_6(glval<unknown>) = FunctionAddress[String] : -# 1244| r1244_7(glval<char[7]>) = StringConstant["static"] : -# 1244| r1244_8(char *) = Convert : r1244_7 -# 1244| v1244_9(void) = Call[String] : func:r1244_6, this:r1244_5, 0:r1244_8 -# 1244| m1244_10(unknown) = ^CallSideEffect : ~m1244_1 -# 1244| m1244_11(unknown) = Chi : total:m1244_1, partial:m1244_10 -# 1244| v1244_12(void) = ^BufferReadSideEffect[0] : &:r1244_8, ~m1242_3 -# 1244| m1244_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1244_5 -# 1244| m1244_14(unknown) = Chi : total:m1244_11, partial:m1244_13 -# 1244| r1244_15(bool) = Constant[1] : -# 1244| m1244_16(bool) = Store[b#init] : &:r1244_2, r1244_15 -# 1244| m1244_17(unknown) = Chi : total:m1244_14, partial:m1244_16 +# 1291| Block 3 +# 1291| r1291_5(glval<String>) = VariableAddress[b] : +# 1291| r1291_6(glval<unknown>) = FunctionAddress[String] : +# 1291| r1291_7(glval<char[7]>) = StringConstant["static"] : +# 1291| r1291_8(char *) = Convert : r1291_7 +# 1291| v1291_9(void) = Call[String] : func:r1291_6, this:r1291_5, 0:r1291_8 +# 1291| m1291_10(unknown) = ^CallSideEffect : ~m1291_1 +# 1291| m1291_11(unknown) = Chi : total:m1291_1, partial:m1291_10 +# 1291| v1291_12(void) = ^BufferReadSideEffect[0] : &:r1291_8, ~m1289_3 +# 1291| m1291_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1291_5 +# 1291| m1291_14(unknown) = Chi : total:m1291_11, partial:m1291_13 +# 1291| r1291_15(bool) = Constant[1] : +# 1291| m1291_16(bool) = Store[b#init] : &:r1291_2, r1291_15 +# 1291| m1291_17(unknown) = Chi : total:m1291_14, partial:m1291_16 #-----| Goto -> Block 4 -# 1245| Block 4 -# 1245| m1245_1(unknown) = Phi : from 2:~m1244_1, from 3:~m1244_17 -# 1245| r1245_2(glval<bool>) = VariableAddress[c#init] : -# 1245| r1245_3(bool) = Load[c#init] : &:r1245_2, ~m1245_1 -# 1245| v1245_4(void) = ConditionalBranch : r1245_3 +# 1292| Block 4 +# 1292| m1292_1(unknown) = Phi : from 2:~m1291_1, from 3:~m1291_17 +# 1292| r1292_2(glval<bool>) = VariableAddress[c#init] : +# 1292| r1292_3(bool) = Load[c#init] : &:r1292_2, ~m1292_1 +# 1292| v1292_4(void) = ConditionalBranch : r1292_3 #-----| False -> Block 5 #-----| True -> Block 6 -# 1245| Block 5 -# 1245| r1245_5(glval<String>) = VariableAddress[c] : -# 1245| r1245_6(glval<unknown>) = FunctionAddress[String] : -# 1245| r1245_7(glval<char *>) = VariableAddress[dynamic] : -# 1245| r1245_8(char *) = Load[dynamic] : &:r1245_7, m1242_6 -# 1245| v1245_9(void) = Call[String] : func:r1245_6, this:r1245_5, 0:r1245_8 -# 1245| m1245_10(unknown) = ^CallSideEffect : ~m1245_1 -# 1245| m1245_11(unknown) = Chi : total:m1245_1, partial:m1245_10 -# 1245| v1245_12(void) = ^BufferReadSideEffect[0] : &:r1245_8, ~m1242_8 -# 1245| m1245_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1245_5 -# 1245| m1245_14(unknown) = Chi : total:m1245_11, partial:m1245_13 -# 1245| r1245_15(bool) = Constant[1] : -# 1245| m1245_16(bool) = Store[c#init] : &:r1245_2, r1245_15 -# 1245| m1245_17(unknown) = Chi : total:m1245_14, partial:m1245_16 +# 1292| Block 5 +# 1292| r1292_5(glval<String>) = VariableAddress[c] : +# 1292| r1292_6(glval<unknown>) = FunctionAddress[String] : +# 1292| r1292_7(glval<char *>) = VariableAddress[dynamic] : +# 1292| r1292_8(char *) = Load[dynamic] : &:r1292_7, m1289_6 +# 1292| v1292_9(void) = Call[String] : func:r1292_6, this:r1292_5, 0:r1292_8 +# 1292| m1292_10(unknown) = ^CallSideEffect : ~m1292_1 +# 1292| m1292_11(unknown) = Chi : total:m1292_1, partial:m1292_10 +# 1292| v1292_12(void) = ^BufferReadSideEffect[0] : &:r1292_8, ~m1289_8 +# 1292| m1292_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_5 +# 1292| m1292_14(unknown) = Chi : total:m1292_11, partial:m1292_13 +# 1292| r1292_15(bool) = Constant[1] : +# 1292| m1292_16(bool) = Store[c#init] : &:r1292_2, r1292_15 +# 1292| m1292_17(unknown) = Chi : total:m1292_14, partial:m1292_16 #-----| Goto -> Block 6 -# 1246| Block 6 -# 1246| m1246_1(unknown) = Phi : from 4:~m1245_1, from 5:~m1245_17 -# 1246| v1246_2(void) = NoOp : -# 1242| v1242_9(void) = ReturnIndirection[dynamic] : &:r1242_7, m1242_8 -# 1242| v1242_10(void) = ReturnVoid : -# 1242| v1242_11(void) = AliasedUse : ~m1246_1 -# 1242| v1242_12(void) = ExitFunction : - -# 1253| void test_strings(char*, char*) -# 1253| Block 0 -# 1253| v1253_1(void) = EnterFunction : -# 1253| m1253_2(unknown) = AliasedDefinition : -# 1253| m1253_3(unknown) = InitializeNonLocal : -# 1253| m1253_4(unknown) = Chi : total:m1253_2, partial:m1253_3 -# 1253| r1253_5(glval<char *>) = VariableAddress[s1] : -# 1253| m1253_6(char *) = InitializeParameter[s1] : &:r1253_5 -# 1253| r1253_7(char *) = Load[s1] : &:r1253_5, m1253_6 -# 1253| m1253_8(unknown) = InitializeIndirection[s1] : &:r1253_7 -# 1253| r1253_9(glval<char *>) = VariableAddress[s2] : -# 1253| m1253_10(char *) = InitializeParameter[s2] : &:r1253_9 -# 1253| r1253_11(char *) = Load[s2] : &:r1253_9, m1253_10 -# 1253| m1253_12(unknown) = InitializeIndirection[s2] : &:r1253_11 -# 1254| r1254_1(glval<char[1024]>) = VariableAddress[buffer] : -# 1254| m1254_2(char[1024]) = Uninitialized[buffer] : &:r1254_1 -# 1254| r1254_3(int) = Constant[0] : -# 1254| r1254_4(glval<char>) = PointerAdd[1] : r1254_1, r1254_3 -# 1254| r1254_5(char) = Constant[0] : -# 1254| m1254_6(char) = Store[?] : &:r1254_4, r1254_5 -# 1254| m1254_7(char[1024]) = Chi : total:m1254_2, partial:m1254_6 -# 1254| r1254_8(int) = Constant[1] : -# 1254| r1254_9(glval<char>) = PointerAdd[1] : r1254_1, r1254_8 -# 1254| r1254_10(unknown[1023]) = Constant[0] : -# 1254| m1254_11(unknown[1023]) = Store[?] : &:r1254_9, r1254_10 -# 1254| m1254_12(char[1024]) = Chi : total:m1254_7, partial:m1254_11 -# 1256| r1256_1(glval<unknown>) = FunctionAddress[strcpy] : -# 1256| r1256_2(glval<char[1024]>) = VariableAddress[buffer] : -# 1256| r1256_3(char *) = Convert : r1256_2 -# 1256| r1256_4(glval<char *>) = VariableAddress[s1] : -# 1256| r1256_5(char *) = Load[s1] : &:r1256_4, m1253_6 -# 1256| r1256_6(char *) = Convert : r1256_5 -# 1256| r1256_7(char *) = Call[strcpy] : func:r1256_1, 0:r1256_3, 1:r1256_6 -# 1256| v1256_8(void) = ^BufferReadSideEffect[1] : &:r1256_6, ~m1253_8 -# 1256| m1256_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1256_3 -# 1256| m1256_10(char[1024]) = Chi : total:m1254_12, partial:m1256_9 -# 1257| r1257_1(glval<unknown>) = FunctionAddress[strcat] : -# 1257| r1257_2(glval<char[1024]>) = VariableAddress[buffer] : -# 1257| r1257_3(char *) = Convert : r1257_2 -# 1257| r1257_4(glval<char *>) = VariableAddress[s2] : -# 1257| r1257_5(char *) = Load[s2] : &:r1257_4, m1253_10 -# 1257| r1257_6(char *) = Convert : r1257_5 -# 1257| r1257_7(char *) = Call[strcat] : func:r1257_1, 0:r1257_3, 1:r1257_6 -# 1257| v1257_8(void) = ^BufferReadSideEffect[0] : &:r1257_3, ~m1256_10 -# 1257| v1257_9(void) = ^BufferReadSideEffect[1] : &:r1257_6, ~m1253_12 -# 1257| m1257_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1257_3 -# 1257| m1257_11(char[1024]) = Chi : total:m1256_10, partial:m1257_10 -# 1258| v1258_1(void) = NoOp : -# 1253| v1253_13(void) = ReturnIndirection[s1] : &:r1253_7, m1253_8 -# 1253| v1253_14(void) = ReturnIndirection[s2] : &:r1253_11, m1253_12 -# 1253| v1253_15(void) = ReturnVoid : -# 1253| v1253_16(void) = AliasedUse : m1253_3 -# 1253| v1253_17(void) = ExitFunction : - -# 1263| void A::static_member(A*, int) -# 1263| Block 0 -# 1263| v1263_1(void) = EnterFunction : -# 1263| m1263_2(unknown) = AliasedDefinition : -# 1263| m1263_3(unknown) = InitializeNonLocal : -# 1263| m1263_4(unknown) = Chi : total:m1263_2, partial:m1263_3 -# 1263| r1263_5(glval<A *>) = VariableAddress[a] : -# 1263| m1263_6(A *) = InitializeParameter[a] : &:r1263_5 -# 1263| r1263_7(A *) = Load[a] : &:r1263_5, m1263_6 -# 1263| m1263_8(unknown) = InitializeIndirection[a] : &:r1263_7 -# 1263| r1263_9(glval<int>) = VariableAddress[x] : -# 1263| m1263_10(int) = InitializeParameter[x] : &:r1263_9 -# 1264| r1264_1(glval<int>) = VariableAddress[x] : -# 1264| r1264_2(int) = Load[x] : &:r1264_1, m1263_10 -# 1264| r1264_3(glval<A *>) = VariableAddress[a] : -# 1264| r1264_4(A *) = Load[a] : &:r1264_3, m1263_6 -# 1264| r1264_5(glval<int>) = FieldAddress[member] : r1264_4 -# 1264| m1264_6(int) = Store[?] : &:r1264_5, r1264_2 -# 1264| m1264_7(unknown) = Chi : total:m1263_8, partial:m1264_6 -# 1265| v1265_1(void) = NoOp : -# 1263| v1263_11(void) = ReturnIndirection[a] : &:r1263_7, m1264_7 -# 1263| v1263_12(void) = ReturnVoid : -# 1263| v1263_13(void) = AliasedUse : m1263_3 -# 1263| v1263_14(void) = ExitFunction : - -# 1272| void test_static_member_functions(int, A*) -# 1272| Block 0 -# 1272| v1272_1(void) = EnterFunction : -# 1272| m1272_2(unknown) = AliasedDefinition : -# 1272| m1272_3(unknown) = InitializeNonLocal : -# 1272| m1272_4(unknown) = Chi : total:m1272_2, partial:m1272_3 -# 1272| r1272_5(glval<int>) = VariableAddress[int_arg] : -# 1272| m1272_6(int) = InitializeParameter[int_arg] : &:r1272_5 -# 1272| r1272_7(glval<A *>) = VariableAddress[a_arg] : -# 1272| m1272_8(A *) = InitializeParameter[a_arg] : &:r1272_7 -# 1272| r1272_9(A *) = Load[a_arg] : &:r1272_7, m1272_8 -# 1272| m1272_10(unknown) = InitializeIndirection[a_arg] : &:r1272_9 -# 1273| r1273_1(glval<C>) = VariableAddress[c] : -# 1273| m1273_2(C) = Uninitialized[c] : &:r1273_1 -# 1273| r1273_3(glval<unknown>) = FunctionAddress[C] : -# 1273| v1273_4(void) = Call[C] : func:r1273_3, this:r1273_1 -# 1273| m1273_5(unknown) = ^CallSideEffect : ~m1272_4 -# 1273| m1273_6(unknown) = Chi : total:m1272_4, partial:m1273_5 -# 1273| m1273_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1273_1 -# 1273| m1273_8(C) = Chi : total:m1273_2, partial:m1273_7 -# 1274| r1274_1(glval<C>) = VariableAddress[c] : -# 1274| r1274_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1274| r1274_3(int) = Constant[10] : -# 1274| r1274_4(int) = Call[StaticMemberFunction] : func:r1274_2, 0:r1274_3 -# 1274| m1274_5(unknown) = ^CallSideEffect : ~m1273_6 -# 1274| m1274_6(unknown) = Chi : total:m1273_6, partial:m1274_5 -# 1275| r1275_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1275| r1275_2(int) = Constant[10] : -# 1275| r1275_3(int) = Call[StaticMemberFunction] : func:r1275_1, 0:r1275_2 -# 1275| m1275_4(unknown) = ^CallSideEffect : ~m1274_6 -# 1275| m1275_5(unknown) = Chi : total:m1274_6, partial:m1275_4 -# 1277| r1277_1(glval<A>) = VariableAddress[a] : -# 1277| m1277_2(A) = Uninitialized[a] : &:r1277_1 -# 1278| r1278_1(glval<A>) = VariableAddress[a] : -# 1278| r1278_2(glval<unknown>) = FunctionAddress[static_member] : -# 1278| r1278_3(glval<A>) = VariableAddress[a] : -# 1278| r1278_4(A *) = CopyValue : r1278_3 -# 1278| r1278_5(glval<int>) = VariableAddress[int_arg] : -# 1278| r1278_6(int) = Load[int_arg] : &:r1278_5, m1272_6 -# 1278| v1278_7(void) = Call[static_member] : func:r1278_2, 0:r1278_4, 1:r1278_6 -# 1278| m1278_8(unknown) = ^CallSideEffect : ~m1275_5 -# 1278| m1278_9(unknown) = Chi : total:m1275_5, partial:m1278_8 -# 1278| v1278_10(void) = ^BufferReadSideEffect[0] : &:r1278_4, ~m1277_2 -# 1278| m1278_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1278_4 -# 1278| m1278_12(A) = Chi : total:m1277_2, partial:m1278_11 -# 1279| r1279_1(glval<unknown>) = FunctionAddress[static_member] : -# 1279| r1279_2(glval<A>) = VariableAddress[a] : -# 1279| r1279_3(A *) = CopyValue : r1279_2 -# 1279| r1279_4(glval<int>) = VariableAddress[int_arg] : -# 1279| r1279_5(int) = Load[int_arg] : &:r1279_4, m1272_6 -# 1279| v1279_6(void) = Call[static_member] : func:r1279_1, 0:r1279_3, 1:r1279_5 -# 1279| m1279_7(unknown) = ^CallSideEffect : ~m1278_9 -# 1279| m1279_8(unknown) = Chi : total:m1278_9, partial:m1279_7 -# 1279| v1279_9(void) = ^BufferReadSideEffect[0] : &:r1279_3, ~m1278_12 -# 1279| m1279_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1279_3 -# 1279| m1279_11(A) = Chi : total:m1278_12, partial:m1279_10 -# 1281| r1281_1(glval<A>) = VariableAddress[a] : -# 1281| r1281_2(A *) = CopyValue : r1281_1 -# 1281| r1281_3(glval<unknown>) = FunctionAddress[static_member] : -# 1281| r1281_4(glval<A *>) = VariableAddress[a_arg] : -# 1281| r1281_5(A *) = Load[a_arg] : &:r1281_4, m1272_8 -# 1281| r1281_6(glval<int>) = VariableAddress[int_arg] : -# 1281| r1281_7(int) = Load[int_arg] : &:r1281_6, m1272_6 -# 1281| r1281_8(int) = Constant[2] : -# 1281| r1281_9(int) = Add : r1281_7, r1281_8 -# 1281| v1281_10(void) = Call[static_member] : func:r1281_3, 0:r1281_5, 1:r1281_9 -# 1281| m1281_11(unknown) = ^CallSideEffect : ~m1279_8 -# 1281| m1281_12(unknown) = Chi : total:m1279_8, partial:m1281_11 -# 1281| v1281_13(void) = ^BufferReadSideEffect[0] : &:r1281_5, ~m1272_10 -# 1281| m1281_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1281_5 -# 1281| m1281_15(unknown) = Chi : total:m1272_10, partial:m1281_14 -# 1282| r1282_1(glval<A *>) = VariableAddress[a_arg] : -# 1282| r1282_2(A *) = Load[a_arg] : &:r1282_1, m1272_8 -# 1282| r1282_3(glval<A>) = CopyValue : r1282_2 -# 1282| r1282_4(glval<unknown>) = FunctionAddress[static_member] : -# 1282| r1282_5(glval<A>) = VariableAddress[a] : -# 1282| r1282_6(A *) = CopyValue : r1282_5 -# 1282| r1282_7(int) = Constant[99] : -# 1282| v1282_8(void) = Call[static_member] : func:r1282_4, 0:r1282_6, 1:r1282_7 -# 1282| m1282_9(unknown) = ^CallSideEffect : ~m1281_12 -# 1282| m1282_10(unknown) = Chi : total:m1281_12, partial:m1282_9 -# 1282| v1282_11(void) = ^BufferReadSideEffect[0] : &:r1282_6, ~m1279_11 -# 1282| m1282_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1282_6 -# 1282| m1282_13(A) = Chi : total:m1279_11, partial:m1282_12 -# 1283| r1283_1(glval<A *>) = VariableAddress[a_arg] : -# 1283| r1283_2(A *) = Load[a_arg] : &:r1283_1, m1272_8 -# 1283| r1283_3(glval<unknown>) = FunctionAddress[static_member] : -# 1283| r1283_4(glval<A *>) = VariableAddress[a_arg] : -# 1283| r1283_5(A *) = Load[a_arg] : &:r1283_4, m1272_8 -# 1283| r1283_6(int) = Constant[-1] : -# 1283| v1283_7(void) = Call[static_member] : func:r1283_3, 0:r1283_5, 1:r1283_6 -# 1283| m1283_8(unknown) = ^CallSideEffect : ~m1282_10 -# 1283| m1283_9(unknown) = Chi : total:m1282_10, partial:m1283_8 -# 1283| v1283_10(void) = ^BufferReadSideEffect[0] : &:r1283_5, ~m1281_15 -# 1283| m1283_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1283_5 -# 1283| m1283_12(unknown) = Chi : total:m1281_15, partial:m1283_11 -# 1285| r1285_1(glval<A>) = VariableAddress[a] : -# 1285| r1285_2(glval<unknown>) = FunctionAddress[static_member_without_def] : -# 1285| v1285_3(void) = Call[static_member_without_def] : func:r1285_2 -# 1285| m1285_4(unknown) = ^CallSideEffect : ~m1283_9 -# 1285| m1285_5(unknown) = Chi : total:m1283_9, partial:m1285_4 -# 1286| r1286_1(glval<unknown>) = FunctionAddress[static_member_without_def] : -# 1286| v1286_2(void) = Call[static_member_without_def] : func:r1286_1 -# 1286| m1286_3(unknown) = ^CallSideEffect : ~m1285_5 -# 1286| m1286_4(unknown) = Chi : total:m1285_5, partial:m1286_3 -# 1288| r1288_1(glval<unknown>) = FunctionAddress[getAnInstanceOfA] : -# 1288| r1288_2(A *) = Call[getAnInstanceOfA] : func:r1288_1 -# 1288| m1288_3(unknown) = ^CallSideEffect : ~m1286_4 -# 1288| m1288_4(unknown) = Chi : total:m1286_4, partial:m1288_3 -# 1288| r1288_5(glval<unknown>) = FunctionAddress[static_member_without_def] : -# 1288| v1288_6(void) = Call[static_member_without_def] : func:r1288_5 -# 1288| m1288_7(unknown) = ^CallSideEffect : ~m1288_4 -# 1288| m1288_8(unknown) = Chi : total:m1288_4, partial:m1288_7 -# 1289| v1289_1(void) = NoOp : -# 1289| r1289_2(glval<C>) = VariableAddress[c] : -# 1289| r1289_3(glval<unknown>) = FunctionAddress[~C] : -# 1289| v1289_4(void) = Call[~C] : func:r1289_3, this:r1289_2 -# 1289| m1289_5(unknown) = ^CallSideEffect : ~m1288_8 -# 1289| m1289_6(unknown) = Chi : total:m1288_8, partial:m1289_5 -# 1289| v1289_7(void) = ^IndirectReadSideEffect[-1] : &:r1289_2, m1273_8 -# 1289| m1289_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1289_2 -# 1289| m1289_9(C) = Chi : total:m1273_8, partial:m1289_8 -# 1272| v1272_11(void) = ReturnIndirection[a_arg] : &:r1272_9, m1283_12 -# 1272| v1272_12(void) = ReturnVoid : -# 1272| v1272_13(void) = AliasedUse : ~m1289_6 -# 1272| v1272_14(void) = ExitFunction : - -# 1291| int missingReturnValue(bool, int) -# 1291| Block 0 -# 1291| v1291_1(void) = EnterFunction : -# 1291| m1291_2(unknown) = AliasedDefinition : -# 1291| m1291_3(unknown) = InitializeNonLocal : -# 1291| m1291_4(unknown) = Chi : total:m1291_2, partial:m1291_3 -# 1291| r1291_5(glval<bool>) = VariableAddress[b] : -# 1291| m1291_6(bool) = InitializeParameter[b] : &:r1291_5 -# 1291| r1291_7(glval<int>) = VariableAddress[x] : -# 1291| m1291_8(int) = InitializeParameter[x] : &:r1291_7 -# 1292| r1292_1(glval<bool>) = VariableAddress[b] : -# 1292| r1292_2(bool) = Load[b] : &:r1292_1, m1291_6 -# 1292| v1292_3(void) = ConditionalBranch : r1292_2 +# 1293| Block 6 +# 1293| m1293_1(unknown) = Phi : from 4:~m1292_1, from 5:~m1292_17 +# 1293| v1293_2(void) = NoOp : +# 1289| v1289_9(void) = ReturnIndirection[dynamic] : &:r1289_7, m1289_8 +# 1289| v1289_10(void) = ReturnVoid : +# 1289| v1289_11(void) = AliasedUse : ~m1293_1 +# 1289| v1289_12(void) = ExitFunction : + +# 1300| void test_strings(char*, char*) +# 1300| Block 0 +# 1300| v1300_1(void) = EnterFunction : +# 1300| m1300_2(unknown) = AliasedDefinition : +# 1300| m1300_3(unknown) = InitializeNonLocal : +# 1300| m1300_4(unknown) = Chi : total:m1300_2, partial:m1300_3 +# 1300| r1300_5(glval<char *>) = VariableAddress[s1] : +# 1300| m1300_6(char *) = InitializeParameter[s1] : &:r1300_5 +# 1300| r1300_7(char *) = Load[s1] : &:r1300_5, m1300_6 +# 1300| m1300_8(unknown) = InitializeIndirection[s1] : &:r1300_7 +# 1300| r1300_9(glval<char *>) = VariableAddress[s2] : +# 1300| m1300_10(char *) = InitializeParameter[s2] : &:r1300_9 +# 1300| r1300_11(char *) = Load[s2] : &:r1300_9, m1300_10 +# 1300| m1300_12(unknown) = InitializeIndirection[s2] : &:r1300_11 +# 1301| r1301_1(glval<char[1024]>) = VariableAddress[buffer] : +# 1301| m1301_2(char[1024]) = Uninitialized[buffer] : &:r1301_1 +# 1301| r1301_3(int) = Constant[0] : +# 1301| r1301_4(glval<char>) = PointerAdd[1] : r1301_1, r1301_3 +# 1301| r1301_5(char) = Constant[0] : +# 1301| m1301_6(char) = Store[?] : &:r1301_4, r1301_5 +# 1301| m1301_7(char[1024]) = Chi : total:m1301_2, partial:m1301_6 +# 1301| r1301_8(int) = Constant[1] : +# 1301| r1301_9(glval<char>) = PointerAdd[1] : r1301_1, r1301_8 +# 1301| r1301_10(unknown[1023]) = Constant[0] : +# 1301| m1301_11(unknown[1023]) = Store[?] : &:r1301_9, r1301_10 +# 1301| m1301_12(char[1024]) = Chi : total:m1301_7, partial:m1301_11 +# 1303| r1303_1(glval<unknown>) = FunctionAddress[strcpy] : +# 1303| r1303_2(glval<char[1024]>) = VariableAddress[buffer] : +# 1303| r1303_3(char *) = Convert : r1303_2 +# 1303| r1303_4(glval<char *>) = VariableAddress[s1] : +# 1303| r1303_5(char *) = Load[s1] : &:r1303_4, m1300_6 +# 1303| r1303_6(char *) = Convert : r1303_5 +# 1303| r1303_7(char *) = Call[strcpy] : func:r1303_1, 0:r1303_3, 1:r1303_6 +# 1303| v1303_8(void) = ^BufferReadSideEffect[1] : &:r1303_6, ~m1300_8 +# 1303| m1303_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1303_3 +# 1303| m1303_10(char[1024]) = Chi : total:m1301_12, partial:m1303_9 +# 1304| r1304_1(glval<unknown>) = FunctionAddress[strcat] : +# 1304| r1304_2(glval<char[1024]>) = VariableAddress[buffer] : +# 1304| r1304_3(char *) = Convert : r1304_2 +# 1304| r1304_4(glval<char *>) = VariableAddress[s2] : +# 1304| r1304_5(char *) = Load[s2] : &:r1304_4, m1300_10 +# 1304| r1304_6(char *) = Convert : r1304_5 +# 1304| r1304_7(char *) = Call[strcat] : func:r1304_1, 0:r1304_3, 1:r1304_6 +# 1304| v1304_8(void) = ^BufferReadSideEffect[0] : &:r1304_3, ~m1303_10 +# 1304| v1304_9(void) = ^BufferReadSideEffect[1] : &:r1304_6, ~m1300_12 +# 1304| m1304_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1304_3 +# 1304| m1304_11(char[1024]) = Chi : total:m1303_10, partial:m1304_10 +# 1305| v1305_1(void) = NoOp : +# 1300| v1300_13(void) = ReturnIndirection[s1] : &:r1300_7, m1300_8 +# 1300| v1300_14(void) = ReturnIndirection[s2] : &:r1300_11, m1300_12 +# 1300| v1300_15(void) = ReturnVoid : +# 1300| v1300_16(void) = AliasedUse : m1300_3 +# 1300| v1300_17(void) = ExitFunction : + +# 1310| void A::static_member(A*, int) +# 1310| Block 0 +# 1310| v1310_1(void) = EnterFunction : +# 1310| m1310_2(unknown) = AliasedDefinition : +# 1310| m1310_3(unknown) = InitializeNonLocal : +# 1310| m1310_4(unknown) = Chi : total:m1310_2, partial:m1310_3 +# 1310| r1310_5(glval<A *>) = VariableAddress[a] : +# 1310| m1310_6(A *) = InitializeParameter[a] : &:r1310_5 +# 1310| r1310_7(A *) = Load[a] : &:r1310_5, m1310_6 +# 1310| m1310_8(unknown) = InitializeIndirection[a] : &:r1310_7 +# 1310| r1310_9(glval<int>) = VariableAddress[x] : +# 1310| m1310_10(int) = InitializeParameter[x] : &:r1310_9 +# 1311| r1311_1(glval<int>) = VariableAddress[x] : +# 1311| r1311_2(int) = Load[x] : &:r1311_1, m1310_10 +# 1311| r1311_3(glval<A *>) = VariableAddress[a] : +# 1311| r1311_4(A *) = Load[a] : &:r1311_3, m1310_6 +# 1311| r1311_5(glval<int>) = FieldAddress[member] : r1311_4 +# 1311| m1311_6(int) = Store[?] : &:r1311_5, r1311_2 +# 1311| m1311_7(unknown) = Chi : total:m1310_8, partial:m1311_6 +# 1312| v1312_1(void) = NoOp : +# 1310| v1310_11(void) = ReturnIndirection[a] : &:r1310_7, m1311_7 +# 1310| v1310_12(void) = ReturnVoid : +# 1310| v1310_13(void) = AliasedUse : m1310_3 +# 1310| v1310_14(void) = ExitFunction : + +# 1319| void test_static_member_functions(int, A*) +# 1319| Block 0 +# 1319| v1319_1(void) = EnterFunction : +# 1319| m1319_2(unknown) = AliasedDefinition : +# 1319| m1319_3(unknown) = InitializeNonLocal : +# 1319| m1319_4(unknown) = Chi : total:m1319_2, partial:m1319_3 +# 1319| r1319_5(glval<int>) = VariableAddress[int_arg] : +# 1319| m1319_6(int) = InitializeParameter[int_arg] : &:r1319_5 +# 1319| r1319_7(glval<A *>) = VariableAddress[a_arg] : +# 1319| m1319_8(A *) = InitializeParameter[a_arg] : &:r1319_7 +# 1319| r1319_9(A *) = Load[a_arg] : &:r1319_7, m1319_8 +# 1319| m1319_10(unknown) = InitializeIndirection[a_arg] : &:r1319_9 +# 1320| r1320_1(glval<C>) = VariableAddress[c] : +# 1320| m1320_2(C) = Uninitialized[c] : &:r1320_1 +# 1320| r1320_3(glval<unknown>) = FunctionAddress[C] : +# 1320| v1320_4(void) = Call[C] : func:r1320_3, this:r1320_1 +# 1320| m1320_5(unknown) = ^CallSideEffect : ~m1319_4 +# 1320| m1320_6(unknown) = Chi : total:m1319_4, partial:m1320_5 +# 1320| m1320_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1320_1 +# 1320| m1320_8(C) = Chi : total:m1320_2, partial:m1320_7 +# 1321| r1321_1(glval<C>) = VariableAddress[c] : +# 1321| r1321_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1321| r1321_3(int) = Constant[10] : +# 1321| r1321_4(int) = Call[StaticMemberFunction] : func:r1321_2, 0:r1321_3 +# 1321| m1321_5(unknown) = ^CallSideEffect : ~m1320_6 +# 1321| m1321_6(unknown) = Chi : total:m1320_6, partial:m1321_5 +# 1322| r1322_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1322| r1322_2(int) = Constant[10] : +# 1322| r1322_3(int) = Call[StaticMemberFunction] : func:r1322_1, 0:r1322_2 +# 1322| m1322_4(unknown) = ^CallSideEffect : ~m1321_6 +# 1322| m1322_5(unknown) = Chi : total:m1321_6, partial:m1322_4 +# 1324| r1324_1(glval<A>) = VariableAddress[a] : +# 1324| m1324_2(A) = Uninitialized[a] : &:r1324_1 +# 1325| r1325_1(glval<A>) = VariableAddress[a] : +# 1325| r1325_2(glval<unknown>) = FunctionAddress[static_member] : +# 1325| r1325_3(glval<A>) = VariableAddress[a] : +# 1325| r1325_4(A *) = CopyValue : r1325_3 +# 1325| r1325_5(glval<int>) = VariableAddress[int_arg] : +# 1325| r1325_6(int) = Load[int_arg] : &:r1325_5, m1319_6 +# 1325| v1325_7(void) = Call[static_member] : func:r1325_2, 0:r1325_4, 1:r1325_6 +# 1325| m1325_8(unknown) = ^CallSideEffect : ~m1322_5 +# 1325| m1325_9(unknown) = Chi : total:m1322_5, partial:m1325_8 +# 1325| v1325_10(void) = ^BufferReadSideEffect[0] : &:r1325_4, ~m1324_2 +# 1325| m1325_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1325_4 +# 1325| m1325_12(A) = Chi : total:m1324_2, partial:m1325_11 +# 1326| r1326_1(glval<unknown>) = FunctionAddress[static_member] : +# 1326| r1326_2(glval<A>) = VariableAddress[a] : +# 1326| r1326_3(A *) = CopyValue : r1326_2 +# 1326| r1326_4(glval<int>) = VariableAddress[int_arg] : +# 1326| r1326_5(int) = Load[int_arg] : &:r1326_4, m1319_6 +# 1326| v1326_6(void) = Call[static_member] : func:r1326_1, 0:r1326_3, 1:r1326_5 +# 1326| m1326_7(unknown) = ^CallSideEffect : ~m1325_9 +# 1326| m1326_8(unknown) = Chi : total:m1325_9, partial:m1326_7 +# 1326| v1326_9(void) = ^BufferReadSideEffect[0] : &:r1326_3, ~m1325_12 +# 1326| m1326_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1326_3 +# 1326| m1326_11(A) = Chi : total:m1325_12, partial:m1326_10 +# 1328| r1328_1(glval<A>) = VariableAddress[a] : +# 1328| r1328_2(A *) = CopyValue : r1328_1 +# 1328| r1328_3(glval<unknown>) = FunctionAddress[static_member] : +# 1328| r1328_4(glval<A *>) = VariableAddress[a_arg] : +# 1328| r1328_5(A *) = Load[a_arg] : &:r1328_4, m1319_8 +# 1328| r1328_6(glval<int>) = VariableAddress[int_arg] : +# 1328| r1328_7(int) = Load[int_arg] : &:r1328_6, m1319_6 +# 1328| r1328_8(int) = Constant[2] : +# 1328| r1328_9(int) = Add : r1328_7, r1328_8 +# 1328| v1328_10(void) = Call[static_member] : func:r1328_3, 0:r1328_5, 1:r1328_9 +# 1328| m1328_11(unknown) = ^CallSideEffect : ~m1326_8 +# 1328| m1328_12(unknown) = Chi : total:m1326_8, partial:m1328_11 +# 1328| v1328_13(void) = ^BufferReadSideEffect[0] : &:r1328_5, ~m1319_10 +# 1328| m1328_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1328_5 +# 1328| m1328_15(unknown) = Chi : total:m1319_10, partial:m1328_14 +# 1329| r1329_1(glval<A *>) = VariableAddress[a_arg] : +# 1329| r1329_2(A *) = Load[a_arg] : &:r1329_1, m1319_8 +# 1329| r1329_3(glval<A>) = CopyValue : r1329_2 +# 1329| r1329_4(glval<unknown>) = FunctionAddress[static_member] : +# 1329| r1329_5(glval<A>) = VariableAddress[a] : +# 1329| r1329_6(A *) = CopyValue : r1329_5 +# 1329| r1329_7(int) = Constant[99] : +# 1329| v1329_8(void) = Call[static_member] : func:r1329_4, 0:r1329_6, 1:r1329_7 +# 1329| m1329_9(unknown) = ^CallSideEffect : ~m1328_12 +# 1329| m1329_10(unknown) = Chi : total:m1328_12, partial:m1329_9 +# 1329| v1329_11(void) = ^BufferReadSideEffect[0] : &:r1329_6, ~m1326_11 +# 1329| m1329_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1329_6 +# 1329| m1329_13(A) = Chi : total:m1326_11, partial:m1329_12 +# 1330| r1330_1(glval<A *>) = VariableAddress[a_arg] : +# 1330| r1330_2(A *) = Load[a_arg] : &:r1330_1, m1319_8 +# 1330| r1330_3(glval<unknown>) = FunctionAddress[static_member] : +# 1330| r1330_4(glval<A *>) = VariableAddress[a_arg] : +# 1330| r1330_5(A *) = Load[a_arg] : &:r1330_4, m1319_8 +# 1330| r1330_6(int) = Constant[-1] : +# 1330| v1330_7(void) = Call[static_member] : func:r1330_3, 0:r1330_5, 1:r1330_6 +# 1330| m1330_8(unknown) = ^CallSideEffect : ~m1329_10 +# 1330| m1330_9(unknown) = Chi : total:m1329_10, partial:m1330_8 +# 1330| v1330_10(void) = ^BufferReadSideEffect[0] : &:r1330_5, ~m1328_15 +# 1330| m1330_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1330_5 +# 1330| m1330_12(unknown) = Chi : total:m1328_15, partial:m1330_11 +# 1332| r1332_1(glval<A>) = VariableAddress[a] : +# 1332| r1332_2(glval<unknown>) = FunctionAddress[static_member_without_def] : +# 1332| v1332_3(void) = Call[static_member_without_def] : func:r1332_2 +# 1332| m1332_4(unknown) = ^CallSideEffect : ~m1330_9 +# 1332| m1332_5(unknown) = Chi : total:m1330_9, partial:m1332_4 +# 1333| r1333_1(glval<unknown>) = FunctionAddress[static_member_without_def] : +# 1333| v1333_2(void) = Call[static_member_without_def] : func:r1333_1 +# 1333| m1333_3(unknown) = ^CallSideEffect : ~m1332_5 +# 1333| m1333_4(unknown) = Chi : total:m1332_5, partial:m1333_3 +# 1335| r1335_1(glval<unknown>) = FunctionAddress[getAnInstanceOfA] : +# 1335| r1335_2(A *) = Call[getAnInstanceOfA] : func:r1335_1 +# 1335| m1335_3(unknown) = ^CallSideEffect : ~m1333_4 +# 1335| m1335_4(unknown) = Chi : total:m1333_4, partial:m1335_3 +# 1335| r1335_5(glval<unknown>) = FunctionAddress[static_member_without_def] : +# 1335| v1335_6(void) = Call[static_member_without_def] : func:r1335_5 +# 1335| m1335_7(unknown) = ^CallSideEffect : ~m1335_4 +# 1335| m1335_8(unknown) = Chi : total:m1335_4, partial:m1335_7 +# 1336| v1336_1(void) = NoOp : +# 1336| r1336_2(glval<C>) = VariableAddress[c] : +# 1336| r1336_3(glval<unknown>) = FunctionAddress[~C] : +# 1336| v1336_4(void) = Call[~C] : func:r1336_3, this:r1336_2 +# 1336| m1336_5(unknown) = ^CallSideEffect : ~m1335_8 +# 1336| m1336_6(unknown) = Chi : total:m1335_8, partial:m1336_5 +# 1336| v1336_7(void) = ^IndirectReadSideEffect[-1] : &:r1336_2, m1320_8 +# 1336| m1336_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1336_2 +# 1336| m1336_9(C) = Chi : total:m1320_8, partial:m1336_8 +# 1319| v1319_11(void) = ReturnIndirection[a_arg] : &:r1319_9, m1330_12 +# 1319| v1319_12(void) = ReturnVoid : +# 1319| v1319_13(void) = AliasedUse : ~m1336_6 +# 1319| v1319_14(void) = ExitFunction : + +# 1338| int missingReturnValue(bool, int) +# 1338| Block 0 +# 1338| v1338_1(void) = EnterFunction : +# 1338| m1338_2(unknown) = AliasedDefinition : +# 1338| m1338_3(unknown) = InitializeNonLocal : +# 1338| m1338_4(unknown) = Chi : total:m1338_2, partial:m1338_3 +# 1338| r1338_5(glval<bool>) = VariableAddress[b] : +# 1338| m1338_6(bool) = InitializeParameter[b] : &:r1338_5 +# 1338| r1338_7(glval<int>) = VariableAddress[x] : +# 1338| m1338_8(int) = InitializeParameter[x] : &:r1338_7 +# 1339| r1339_1(glval<bool>) = VariableAddress[b] : +# 1339| r1339_2(bool) = Load[b] : &:r1339_1, m1338_6 +# 1339| v1339_3(void) = ConditionalBranch : r1339_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1291| Block 1 -# 1291| m1291_9(int) = Phi : from 2:m1293_4, from 3:m1295_2 -# 1291| r1291_10(glval<int>) = VariableAddress[#return] : -# 1291| v1291_11(void) = ReturnValue : &:r1291_10, m1291_9 -# 1291| v1291_12(void) = AliasedUse : m1291_3 -# 1291| v1291_13(void) = ExitFunction : - -# 1293| Block 2 -# 1293| r1293_1(glval<int>) = VariableAddress[#return] : -# 1293| r1293_2(glval<int>) = VariableAddress[x] : -# 1293| r1293_3(int) = Load[x] : &:r1293_2, m1291_8 -# 1293| m1293_4(int) = Store[#return] : &:r1293_1, r1293_3 +# 1338| Block 1 +# 1338| m1338_9(int) = Phi : from 2:m1340_4, from 3:m1342_2 +# 1338| r1338_10(glval<int>) = VariableAddress[#return] : +# 1338| v1338_11(void) = ReturnValue : &:r1338_10, m1338_9 +# 1338| v1338_12(void) = AliasedUse : m1338_3 +# 1338| v1338_13(void) = ExitFunction : + +# 1340| Block 2 +# 1340| r1340_1(glval<int>) = VariableAddress[#return] : +# 1340| r1340_2(glval<int>) = VariableAddress[x] : +# 1340| r1340_3(int) = Load[x] : &:r1340_2, m1338_8 +# 1340| m1340_4(int) = Store[#return] : &:r1340_1, r1340_3 #-----| Goto -> Block 1 -# 1295| Block 3 -# 1295| r1295_1(glval<int>) = VariableAddress[#return] : -# 1295| m1295_2(int) = Uninitialized[#return] : &:r1295_1 +# 1342| Block 3 +# 1342| r1342_1(glval<int>) = VariableAddress[#return] : +# 1342| m1342_2(int) = Uninitialized[#return] : &:r1342_1 #-----| Goto -> Block 1 -# 1297| void returnVoid(int, int) -# 1297| Block 0 -# 1297| v1297_1(void) = EnterFunction : -# 1297| m1297_2(unknown) = AliasedDefinition : -# 1297| m1297_3(unknown) = InitializeNonLocal : -# 1297| m1297_4(unknown) = Chi : total:m1297_2, partial:m1297_3 -# 1297| r1297_5(glval<int>) = VariableAddress[x] : -# 1297| m1297_6(int) = InitializeParameter[x] : &:r1297_5 -# 1297| r1297_7(glval<int>) = VariableAddress[y] : -# 1297| m1297_8(int) = InitializeParameter[y] : &:r1297_7 -# 1298| r1298_1(glval<unknown>) = FunctionAddress[IntegerOps] : -# 1298| r1298_2(glval<int>) = VariableAddress[x] : -# 1298| r1298_3(int) = Load[x] : &:r1298_2, m1297_6 -# 1298| r1298_4(glval<int>) = VariableAddress[y] : -# 1298| r1298_5(int) = Load[y] : &:r1298_4, m1297_8 -# 1298| v1298_6(void) = Call[IntegerOps] : func:r1298_1, 0:r1298_3, 1:r1298_5 -# 1298| m1298_7(unknown) = ^CallSideEffect : ~m1297_4 -# 1298| m1298_8(unknown) = Chi : total:m1297_4, partial:m1298_7 -# 1298| v1298_9(void) = NoOp : -# 1297| v1297_9(void) = ReturnVoid : -# 1297| v1297_10(void) = AliasedUse : ~m1298_8 -# 1297| v1297_11(void) = ExitFunction : - -# 1301| void gccBinaryConditional(bool, int, long) -# 1301| Block 0 -# 1301| v1301_1(void) = EnterFunction : -# 1301| m1301_2(unknown) = AliasedDefinition : -# 1301| m1301_3(unknown) = InitializeNonLocal : -# 1301| m1301_4(unknown) = Chi : total:m1301_2, partial:m1301_3 -# 1301| r1301_5(glval<bool>) = VariableAddress[b] : -# 1301| m1301_6(bool) = InitializeParameter[b] : &:r1301_5 -# 1301| r1301_7(glval<int>) = VariableAddress[x] : -# 1301| m1301_8(int) = InitializeParameter[x] : &:r1301_7 -# 1301| r1301_9(glval<long>) = VariableAddress[y] : -# 1301| m1301_10(long) = InitializeParameter[y] : &:r1301_9 -# 1302| r1302_1(glval<int>) = VariableAddress[z] : -# 1302| r1302_2(glval<int>) = VariableAddress[x] : -# 1302| r1302_3(int) = Load[x] : &:r1302_2, m1301_8 -# 1302| m1302_4(int) = Store[z] : &:r1302_1, r1302_3 -# 1303| r1303_1(glval<bool>) = VariableAddress[b] : -# 1303| r1303_2(bool) = Load[b] : &:r1303_1, m1301_6 -# 1303| v1303_3(void) = ConditionalBranch : r1303_2 +# 1344| void returnVoid(int, int) +# 1344| Block 0 +# 1344| v1344_1(void) = EnterFunction : +# 1344| m1344_2(unknown) = AliasedDefinition : +# 1344| m1344_3(unknown) = InitializeNonLocal : +# 1344| m1344_4(unknown) = Chi : total:m1344_2, partial:m1344_3 +# 1344| r1344_5(glval<int>) = VariableAddress[x] : +# 1344| m1344_6(int) = InitializeParameter[x] : &:r1344_5 +# 1344| r1344_7(glval<int>) = VariableAddress[y] : +# 1344| m1344_8(int) = InitializeParameter[y] : &:r1344_7 +# 1345| r1345_1(glval<unknown>) = FunctionAddress[IntegerOps] : +# 1345| r1345_2(glval<int>) = VariableAddress[x] : +# 1345| r1345_3(int) = Load[x] : &:r1345_2, m1344_6 +# 1345| r1345_4(glval<int>) = VariableAddress[y] : +# 1345| r1345_5(int) = Load[y] : &:r1345_4, m1344_8 +# 1345| v1345_6(void) = Call[IntegerOps] : func:r1345_1, 0:r1345_3, 1:r1345_5 +# 1345| m1345_7(unknown) = ^CallSideEffect : ~m1344_4 +# 1345| m1345_8(unknown) = Chi : total:m1344_4, partial:m1345_7 +# 1345| v1345_9(void) = NoOp : +# 1344| v1344_9(void) = ReturnVoid : +# 1344| v1344_10(void) = AliasedUse : ~m1345_8 +# 1344| v1344_11(void) = ExitFunction : + +# 1348| void gccBinaryConditional(bool, int, long) +# 1348| Block 0 +# 1348| v1348_1(void) = EnterFunction : +# 1348| m1348_2(unknown) = AliasedDefinition : +# 1348| m1348_3(unknown) = InitializeNonLocal : +# 1348| m1348_4(unknown) = Chi : total:m1348_2, partial:m1348_3 +# 1348| r1348_5(glval<bool>) = VariableAddress[b] : +# 1348| m1348_6(bool) = InitializeParameter[b] : &:r1348_5 +# 1348| r1348_7(glval<int>) = VariableAddress[x] : +# 1348| m1348_8(int) = InitializeParameter[x] : &:r1348_7 +# 1348| r1348_9(glval<long>) = VariableAddress[y] : +# 1348| m1348_10(long) = InitializeParameter[y] : &:r1348_9 +# 1349| r1349_1(glval<int>) = VariableAddress[z] : +# 1349| r1349_2(glval<int>) = VariableAddress[x] : +# 1349| r1349_3(int) = Load[x] : &:r1349_2, m1348_8 +# 1349| m1349_4(int) = Store[z] : &:r1349_1, r1349_3 +# 1350| r1350_1(glval<bool>) = VariableAddress[b] : +# 1350| r1350_2(bool) = Load[b] : &:r1350_1, m1348_6 +# 1350| v1350_3(void) = ConditionalBranch : r1350_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1303| Block 1 -# 1303| m1303_4(int) = Phi : from 2:m1303_10, from 3:m1303_14 -# 1303| r1303_5(glval<int>) = VariableAddress[#temp1303:9] : -# 1303| r1303_6(int) = Load[#temp1303:9] : &:r1303_5, m1303_4 -# 1303| r1303_7(glval<int>) = VariableAddress[z] : -# 1303| m1303_8(int) = Store[z] : &:r1303_7, r1303_6 -# 1304| r1304_1(glval<bool>) = VariableAddress[b] : -# 1304| r1304_2(bool) = Load[b] : &:r1304_1, m1301_6 -# 1304| v1304_3(void) = ConditionalBranch : r1304_2 +# 1350| Block 1 +# 1350| m1350_4(int) = Phi : from 2:m1350_10, from 3:m1350_14 +# 1350| r1350_5(glval<int>) = VariableAddress[#temp1350:9] : +# 1350| r1350_6(int) = Load[#temp1350:9] : &:r1350_5, m1350_4 +# 1350| r1350_7(glval<int>) = VariableAddress[z] : +# 1350| m1350_8(int) = Store[z] : &:r1350_7, r1350_6 +# 1351| r1351_1(glval<bool>) = VariableAddress[b] : +# 1351| r1351_2(bool) = Load[b] : &:r1351_1, m1348_6 +# 1351| v1351_3(void) = ConditionalBranch : r1351_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1303| Block 2 -# 1303| r1303_9(glval<int>) = VariableAddress[#temp1303:9] : -# 1303| m1303_10(int) = Store[#temp1303:9] : &:r1303_9, r1303_2 +# 1350| Block 2 +# 1350| r1350_9(glval<int>) = VariableAddress[#temp1350:9] : +# 1350| m1350_10(int) = Store[#temp1350:9] : &:r1350_9, r1350_2 #-----| Goto -> Block 1 -# 1303| Block 3 -# 1303| r1303_11(glval<int>) = VariableAddress[x] : -# 1303| r1303_12(int) = Load[x] : &:r1303_11, m1301_8 -# 1303| r1303_13(glval<int>) = VariableAddress[#temp1303:9] : -# 1303| m1303_14(int) = Store[#temp1303:9] : &:r1303_13, r1303_12 +# 1350| Block 3 +# 1350| r1350_11(glval<int>) = VariableAddress[x] : +# 1350| r1350_12(int) = Load[x] : &:r1350_11, m1348_8 +# 1350| r1350_13(glval<int>) = VariableAddress[#temp1350:9] : +# 1350| m1350_14(int) = Store[#temp1350:9] : &:r1350_13, r1350_12 #-----| Goto -> Block 1 -# 1304| Block 4 -# 1304| m1304_4(long) = Phi : from 5:m1304_11, from 6:m1304_15 -# 1304| r1304_5(glval<long>) = VariableAddress[#temp1304:9] : -# 1304| r1304_6(long) = Load[#temp1304:9] : &:r1304_5, m1304_4 -# 1304| r1304_7(int) = Convert : r1304_6 -# 1304| r1304_8(glval<int>) = VariableAddress[z] : -# 1304| m1304_9(int) = Store[z] : &:r1304_8, r1304_7 -# 1305| r1305_1(glval<int>) = VariableAddress[x] : -# 1305| r1305_2(int) = Load[x] : &:r1305_1, m1301_8 -# 1305| r1305_3(int) = Constant[0] : -# 1305| r1305_4(bool) = CompareNE : r1305_2, r1305_3 -# 1305| v1305_5(void) = ConditionalBranch : r1305_4 +# 1351| Block 4 +# 1351| m1351_4(long) = Phi : from 5:m1351_11, from 6:m1351_15 +# 1351| r1351_5(glval<long>) = VariableAddress[#temp1351:9] : +# 1351| r1351_6(long) = Load[#temp1351:9] : &:r1351_5, m1351_4 +# 1351| r1351_7(int) = Convert : r1351_6 +# 1351| r1351_8(glval<int>) = VariableAddress[z] : +# 1351| m1351_9(int) = Store[z] : &:r1351_8, r1351_7 +# 1352| r1352_1(glval<int>) = VariableAddress[x] : +# 1352| r1352_2(int) = Load[x] : &:r1352_1, m1348_8 +# 1352| r1352_3(int) = Constant[0] : +# 1352| r1352_4(bool) = CompareNE : r1352_2, r1352_3 +# 1352| v1352_5(void) = ConditionalBranch : r1352_4 #-----| False -> Block 9 #-----| True -> Block 8 -# 1304| Block 5 -# 1304| r1304_10(glval<long>) = VariableAddress[#temp1304:9] : -# 1304| m1304_11(long) = Store[#temp1304:9] : &:r1304_10, r1304_2 +# 1351| Block 5 +# 1351| r1351_10(glval<long>) = VariableAddress[#temp1351:9] : +# 1351| m1351_11(long) = Store[#temp1351:9] : &:r1351_10, r1351_2 #-----| Goto -> Block 4 -# 1304| Block 6 -# 1304| r1304_12(glval<long>) = VariableAddress[y] : -# 1304| r1304_13(long) = Load[y] : &:r1304_12, m1301_10 -# 1304| r1304_14(glval<long>) = VariableAddress[#temp1304:9] : -# 1304| m1304_15(long) = Store[#temp1304:9] : &:r1304_14, r1304_13 +# 1351| Block 6 +# 1351| r1351_12(glval<long>) = VariableAddress[y] : +# 1351| r1351_13(long) = Load[y] : &:r1351_12, m1348_10 +# 1351| r1351_14(glval<long>) = VariableAddress[#temp1351:9] : +# 1351| m1351_15(long) = Store[#temp1351:9] : &:r1351_14, r1351_13 #-----| Goto -> Block 4 -# 1305| Block 7 -# 1305| m1305_6(int) = Phi : from 8:m1305_12, from 9:m1305_16 -# 1305| r1305_7(glval<int>) = VariableAddress[#temp1305:9] : -# 1305| r1305_8(int) = Load[#temp1305:9] : &:r1305_7, m1305_6 -# 1305| r1305_9(glval<int>) = VariableAddress[z] : -# 1305| m1305_10(int) = Store[z] : &:r1305_9, r1305_8 -# 1306| r1306_1(glval<int>) = VariableAddress[x] : -# 1306| r1306_2(int) = Load[x] : &:r1306_1, m1301_8 -# 1306| r1306_3(int) = Constant[0] : -# 1306| r1306_4(bool) = CompareNE : r1306_2, r1306_3 -# 1306| v1306_5(void) = ConditionalBranch : r1306_4 +# 1352| Block 7 +# 1352| m1352_6(int) = Phi : from 8:m1352_12, from 9:m1352_16 +# 1352| r1352_7(glval<int>) = VariableAddress[#temp1352:9] : +# 1352| r1352_8(int) = Load[#temp1352:9] : &:r1352_7, m1352_6 +# 1352| r1352_9(glval<int>) = VariableAddress[z] : +# 1352| m1352_10(int) = Store[z] : &:r1352_9, r1352_8 +# 1353| r1353_1(glval<int>) = VariableAddress[x] : +# 1353| r1353_2(int) = Load[x] : &:r1353_1, m1348_8 +# 1353| r1353_3(int) = Constant[0] : +# 1353| r1353_4(bool) = CompareNE : r1353_2, r1353_3 +# 1353| v1353_5(void) = ConditionalBranch : r1353_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 1305| Block 8 -# 1305| r1305_11(glval<int>) = VariableAddress[#temp1305:9] : -# 1305| m1305_12(int) = Store[#temp1305:9] : &:r1305_11, r1305_2 +# 1352| Block 8 +# 1352| r1352_11(glval<int>) = VariableAddress[#temp1352:9] : +# 1352| m1352_12(int) = Store[#temp1352:9] : &:r1352_11, r1352_2 #-----| Goto -> Block 7 -# 1305| Block 9 -# 1305| r1305_13(glval<int>) = VariableAddress[x] : -# 1305| r1305_14(int) = Load[x] : &:r1305_13, m1301_8 -# 1305| r1305_15(glval<int>) = VariableAddress[#temp1305:9] : -# 1305| m1305_16(int) = Store[#temp1305:9] : &:r1305_15, r1305_14 +# 1352| Block 9 +# 1352| r1352_13(glval<int>) = VariableAddress[x] : +# 1352| r1352_14(int) = Load[x] : &:r1352_13, m1348_8 +# 1352| r1352_15(glval<int>) = VariableAddress[#temp1352:9] : +# 1352| m1352_16(int) = Store[#temp1352:9] : &:r1352_15, r1352_14 #-----| Goto -> Block 7 -# 1306| Block 10 -# 1306| m1306_6(long) = Phi : from 11:m1306_13, from 12:m1306_17 -# 1306| r1306_7(glval<long>) = VariableAddress[#temp1306:9] : -# 1306| r1306_8(long) = Load[#temp1306:9] : &:r1306_7, m1306_6 -# 1306| r1306_9(int) = Convert : r1306_8 -# 1306| r1306_10(glval<int>) = VariableAddress[z] : -# 1306| m1306_11(int) = Store[z] : &:r1306_10, r1306_9 -# 1307| r1307_1(glval<long>) = VariableAddress[y] : -# 1307| r1307_2(long) = Load[y] : &:r1307_1, m1301_10 -# 1307| r1307_3(long) = Constant[0] : -# 1307| r1307_4(bool) = CompareNE : r1307_2, r1307_3 -# 1307| v1307_5(void) = ConditionalBranch : r1307_4 +# 1353| Block 10 +# 1353| m1353_6(long) = Phi : from 11:m1353_13, from 12:m1353_17 +# 1353| r1353_7(glval<long>) = VariableAddress[#temp1353:9] : +# 1353| r1353_8(long) = Load[#temp1353:9] : &:r1353_7, m1353_6 +# 1353| r1353_9(int) = Convert : r1353_8 +# 1353| r1353_10(glval<int>) = VariableAddress[z] : +# 1353| m1353_11(int) = Store[z] : &:r1353_10, r1353_9 +# 1354| r1354_1(glval<long>) = VariableAddress[y] : +# 1354| r1354_2(long) = Load[y] : &:r1354_1, m1348_10 +# 1354| r1354_3(long) = Constant[0] : +# 1354| r1354_4(bool) = CompareNE : r1354_2, r1354_3 +# 1354| v1354_5(void) = ConditionalBranch : r1354_4 #-----| False -> Block 15 #-----| True -> Block 14 -# 1306| Block 11 -# 1306| r1306_12(glval<long>) = VariableAddress[#temp1306:9] : -# 1306| m1306_13(long) = Store[#temp1306:9] : &:r1306_12, r1306_2 +# 1353| Block 11 +# 1353| r1353_12(glval<long>) = VariableAddress[#temp1353:9] : +# 1353| m1353_13(long) = Store[#temp1353:9] : &:r1353_12, r1353_2 #-----| Goto -> Block 10 -# 1306| Block 12 -# 1306| r1306_14(glval<long>) = VariableAddress[y] : -# 1306| r1306_15(long) = Load[y] : &:r1306_14, m1301_10 -# 1306| r1306_16(glval<long>) = VariableAddress[#temp1306:9] : -# 1306| m1306_17(long) = Store[#temp1306:9] : &:r1306_16, r1306_15 +# 1353| Block 12 +# 1353| r1353_14(glval<long>) = VariableAddress[y] : +# 1353| r1353_15(long) = Load[y] : &:r1353_14, m1348_10 +# 1353| r1353_16(glval<long>) = VariableAddress[#temp1353:9] : +# 1353| m1353_17(long) = Store[#temp1353:9] : &:r1353_16, r1353_15 #-----| Goto -> Block 10 -# 1307| Block 13 -# 1307| m1307_6(long) = Phi : from 14:m1307_13, from 15:m1307_18 -# 1307| r1307_7(glval<long>) = VariableAddress[#temp1307:9] : -# 1307| r1307_8(long) = Load[#temp1307:9] : &:r1307_7, m1307_6 -# 1307| r1307_9(int) = Convert : r1307_8 -# 1307| r1307_10(glval<int>) = VariableAddress[z] : -# 1307| m1307_11(int) = Store[z] : &:r1307_10, r1307_9 -# 1308| r1308_1(glval<long>) = VariableAddress[y] : -# 1308| r1308_2(long) = Load[y] : &:r1308_1, m1301_10 -# 1308| r1308_3(long) = Constant[0] : -# 1308| r1308_4(bool) = CompareNE : r1308_2, r1308_3 -# 1308| v1308_5(void) = ConditionalBranch : r1308_4 +# 1354| Block 13 +# 1354| m1354_6(long) = Phi : from 14:m1354_13, from 15:m1354_18 +# 1354| r1354_7(glval<long>) = VariableAddress[#temp1354:9] : +# 1354| r1354_8(long) = Load[#temp1354:9] : &:r1354_7, m1354_6 +# 1354| r1354_9(int) = Convert : r1354_8 +# 1354| r1354_10(glval<int>) = VariableAddress[z] : +# 1354| m1354_11(int) = Store[z] : &:r1354_10, r1354_9 +# 1355| r1355_1(glval<long>) = VariableAddress[y] : +# 1355| r1355_2(long) = Load[y] : &:r1355_1, m1348_10 +# 1355| r1355_3(long) = Constant[0] : +# 1355| r1355_4(bool) = CompareNE : r1355_2, r1355_3 +# 1355| v1355_5(void) = ConditionalBranch : r1355_4 #-----| False -> Block 18 #-----| True -> Block 17 -# 1307| Block 14 -# 1307| r1307_12(glval<long>) = VariableAddress[#temp1307:9] : -# 1307| m1307_13(long) = Store[#temp1307:9] : &:r1307_12, r1307_2 +# 1354| Block 14 +# 1354| r1354_12(glval<long>) = VariableAddress[#temp1354:9] : +# 1354| m1354_13(long) = Store[#temp1354:9] : &:r1354_12, r1354_2 #-----| Goto -> Block 13 -# 1307| Block 15 -# 1307| r1307_14(glval<int>) = VariableAddress[x] : -# 1307| r1307_15(int) = Load[x] : &:r1307_14, m1301_8 -# 1307| r1307_16(long) = Convert : r1307_15 -# 1307| r1307_17(glval<long>) = VariableAddress[#temp1307:9] : -# 1307| m1307_18(long) = Store[#temp1307:9] : &:r1307_17, r1307_16 +# 1354| Block 15 +# 1354| r1354_14(glval<int>) = VariableAddress[x] : +# 1354| r1354_15(int) = Load[x] : &:r1354_14, m1348_8 +# 1354| r1354_16(long) = Convert : r1354_15 +# 1354| r1354_17(glval<long>) = VariableAddress[#temp1354:9] : +# 1354| m1354_18(long) = Store[#temp1354:9] : &:r1354_17, r1354_16 #-----| Goto -> Block 13 -# 1308| Block 16 -# 1308| m1308_6(long) = Phi : from 17:m1308_13, from 18:m1308_17 -# 1308| r1308_7(glval<long>) = VariableAddress[#temp1308:9] : -# 1308| r1308_8(long) = Load[#temp1308:9] : &:r1308_7, m1308_6 -# 1308| r1308_9(int) = Convert : r1308_8 -# 1308| r1308_10(glval<int>) = VariableAddress[z] : -# 1308| m1308_11(int) = Store[z] : &:r1308_10, r1308_9 -# 1310| r1310_1(glval<int>) = VariableAddress[x] : -# 1310| r1310_2(int) = Load[x] : &:r1310_1, m1301_8 -# 1310| r1310_3(int) = Constant[0] : -# 1310| r1310_4(bool) = CompareNE : r1310_2, r1310_3 -# 1310| v1310_5(void) = ConditionalBranch : r1310_4 +# 1355| Block 16 +# 1355| m1355_6(long) = Phi : from 17:m1355_13, from 18:m1355_17 +# 1355| r1355_7(glval<long>) = VariableAddress[#temp1355:9] : +# 1355| r1355_8(long) = Load[#temp1355:9] : &:r1355_7, m1355_6 +# 1355| r1355_9(int) = Convert : r1355_8 +# 1355| r1355_10(glval<int>) = VariableAddress[z] : +# 1355| m1355_11(int) = Store[z] : &:r1355_10, r1355_9 +# 1357| r1357_1(glval<int>) = VariableAddress[x] : +# 1357| r1357_2(int) = Load[x] : &:r1357_1, m1348_8 +# 1357| r1357_3(int) = Constant[0] : +# 1357| r1357_4(bool) = CompareNE : r1357_2, r1357_3 +# 1357| v1357_5(void) = ConditionalBranch : r1357_4 #-----| False -> Block 25 #-----| True -> Block 24 -# 1308| Block 17 -# 1308| r1308_12(glval<long>) = VariableAddress[#temp1308:9] : -# 1308| m1308_13(long) = Store[#temp1308:9] : &:r1308_12, r1308_2 +# 1355| Block 17 +# 1355| r1355_12(glval<long>) = VariableAddress[#temp1355:9] : +# 1355| m1355_13(long) = Store[#temp1355:9] : &:r1355_12, r1355_2 #-----| Goto -> Block 16 -# 1308| Block 18 -# 1308| r1308_14(glval<long>) = VariableAddress[y] : -# 1308| r1308_15(long) = Load[y] : &:r1308_14, m1301_10 -# 1308| r1308_16(glval<long>) = VariableAddress[#temp1308:9] : -# 1308| m1308_17(long) = Store[#temp1308:9] : &:r1308_16, r1308_15 +# 1355| Block 18 +# 1355| r1355_14(glval<long>) = VariableAddress[y] : +# 1355| r1355_15(long) = Load[y] : &:r1355_14, m1348_10 +# 1355| r1355_16(glval<long>) = VariableAddress[#temp1355:9] : +# 1355| m1355_17(long) = Store[#temp1355:9] : &:r1355_16, r1355_15 #-----| Goto -> Block 16 -# 1310| Block 19 -# 1310| m1310_6(int) = Phi : from 20:m1310_12, from 26:m1310_34 -# 1310| r1310_7(glval<int>) = VariableAddress[#temp1310:9] : -# 1310| r1310_8(int) = Load[#temp1310:9] : &:r1310_7, m1310_6 -# 1310| r1310_9(glval<int>) = VariableAddress[z] : -# 1310| m1310_10(int) = Store[z] : &:r1310_9, r1310_8 -# 1311| v1311_1(void) = NoOp : -# 1301| v1301_11(void) = ReturnVoid : -# 1301| v1301_12(void) = AliasedUse : m1301_3 -# 1301| v1301_13(void) = ExitFunction : - -# 1310| Block 20 -# 1310| r1310_11(glval<int>) = VariableAddress[#temp1310:9] : -# 1310| m1310_12(int) = Store[#temp1310:9] : &:r1310_11, r1310_18 +# 1357| Block 19 +# 1357| m1357_6(int) = Phi : from 20:m1357_12, from 26:m1357_34 +# 1357| r1357_7(glval<int>) = VariableAddress[#temp1357:9] : +# 1357| r1357_8(int) = Load[#temp1357:9] : &:r1357_7, m1357_6 +# 1357| r1357_9(glval<int>) = VariableAddress[z] : +# 1357| m1357_10(int) = Store[z] : &:r1357_9, r1357_8 +# 1358| v1358_1(void) = NoOp : +# 1348| v1348_11(void) = ReturnVoid : +# 1348| v1348_12(void) = AliasedUse : m1348_3 +# 1348| v1348_13(void) = ExitFunction : + +# 1357| Block 20 +# 1357| r1357_11(glval<int>) = VariableAddress[#temp1357:9] : +# 1357| m1357_12(int) = Store[#temp1357:9] : &:r1357_11, r1357_18 #-----| Goto -> Block 19 -# 1310| Block 21 -# 1310| r1310_13(glval<bool>) = VariableAddress[#temp1310:10] : -# 1310| r1310_14(bool) = Constant[0] : -# 1310| m1310_15(bool) = Store[#temp1310:10] : &:r1310_13, r1310_14 +# 1357| Block 21 +# 1357| r1357_13(glval<bool>) = VariableAddress[#temp1357:10] : +# 1357| r1357_14(bool) = Constant[0] : +# 1357| m1357_15(bool) = Store[#temp1357:10] : &:r1357_13, r1357_14 #-----| Goto -> Block 22 -# 1310| Block 22 -# 1310| m1310_16(bool) = Phi : from 21:m1310_15, from 23:m1310_22 -# 1310| r1310_17(glval<bool>) = VariableAddress[#temp1310:10] : -# 1310| r1310_18(bool) = Load[#temp1310:10] : &:r1310_17, m1310_16 -# 1310| v1310_19(void) = ConditionalBranch : r1310_18 +# 1357| Block 22 +# 1357| m1357_16(bool) = Phi : from 21:m1357_15, from 23:m1357_22 +# 1357| r1357_17(glval<bool>) = VariableAddress[#temp1357:10] : +# 1357| r1357_18(bool) = Load[#temp1357:10] : &:r1357_17, m1357_16 +# 1357| v1357_19(void) = ConditionalBranch : r1357_18 #-----| False -> Block 26 #-----| True -> Block 20 -# 1310| Block 23 -# 1310| r1310_20(glval<bool>) = VariableAddress[#temp1310:10] : -# 1310| r1310_21(bool) = Constant[1] : -# 1310| m1310_22(bool) = Store[#temp1310:10] : &:r1310_20, r1310_21 +# 1357| Block 23 +# 1357| r1357_20(glval<bool>) = VariableAddress[#temp1357:10] : +# 1357| r1357_21(bool) = Constant[1] : +# 1357| m1357_22(bool) = Store[#temp1357:10] : &:r1357_20, r1357_21 #-----| Goto -> Block 22 -# 1310| Block 24 -# 1310| r1310_23(glval<bool>) = VariableAddress[b] : -# 1310| r1310_24(bool) = Load[b] : &:r1310_23, m1301_6 -# 1310| v1310_25(void) = ConditionalBranch : r1310_24 +# 1357| Block 24 +# 1357| r1357_23(glval<bool>) = VariableAddress[b] : +# 1357| r1357_24(bool) = Load[b] : &:r1357_23, m1348_6 +# 1357| v1357_25(void) = ConditionalBranch : r1357_24 #-----| False -> Block 25 #-----| True -> Block 23 -# 1310| Block 25 -# 1310| r1310_26(glval<long>) = VariableAddress[y] : -# 1310| r1310_27(long) = Load[y] : &:r1310_26, m1301_10 -# 1310| r1310_28(long) = Constant[0] : -# 1310| r1310_29(bool) = CompareNE : r1310_27, r1310_28 -# 1310| v1310_30(void) = ConditionalBranch : r1310_29 +# 1357| Block 25 +# 1357| r1357_26(glval<long>) = VariableAddress[y] : +# 1357| r1357_27(long) = Load[y] : &:r1357_26, m1348_10 +# 1357| r1357_28(long) = Constant[0] : +# 1357| r1357_29(bool) = CompareNE : r1357_27, r1357_28 +# 1357| v1357_30(void) = ConditionalBranch : r1357_29 #-----| False -> Block 21 #-----| True -> Block 23 -# 1310| Block 26 -# 1310| r1310_31(glval<int>) = VariableAddress[x] : -# 1310| r1310_32(int) = Load[x] : &:r1310_31, m1301_8 -# 1310| r1310_33(glval<int>) = VariableAddress[#temp1310:9] : -# 1310| m1310_34(int) = Store[#temp1310:9] : &:r1310_33, r1310_32 +# 1357| Block 26 +# 1357| r1357_31(glval<int>) = VariableAddress[x] : +# 1357| r1357_32(int) = Load[x] : &:r1357_31, m1348_8 +# 1357| r1357_33(glval<int>) = VariableAddress[#temp1357:9] : +# 1357| m1357_34(int) = Store[#temp1357:9] : &:r1357_33, r1357_32 #-----| Goto -> Block 19 -# 1316| int shortCircuitConditional(int, int) -# 1316| Block 0 -# 1316| v1316_1(void) = EnterFunction : -# 1316| m1316_2(unknown) = AliasedDefinition : -# 1316| m1316_3(unknown) = InitializeNonLocal : -# 1316| m1316_4(unknown) = Chi : total:m1316_2, partial:m1316_3 -# 1316| r1316_5(glval<int>) = VariableAddress[x] : -# 1316| m1316_6(int) = InitializeParameter[x] : &:r1316_5 -# 1316| r1316_7(glval<int>) = VariableAddress[y] : -# 1316| m1316_8(int) = InitializeParameter[y] : &:r1316_7 -# 1317| r1317_1(glval<int>) = VariableAddress[#return] : -# 1317| r1317_2(glval<unknown>) = FunctionAddress[predicateA] : -# 1317| r1317_3(bool) = Call[predicateA] : func:r1317_2 -# 1317| m1317_4(unknown) = ^CallSideEffect : ~m1316_4 -# 1317| m1317_5(unknown) = Chi : total:m1316_4, partial:m1317_4 -# 1317| v1317_6(void) = ConditionalBranch : r1317_3 +# 1363| int shortCircuitConditional(int, int) +# 1363| Block 0 +# 1363| v1363_1(void) = EnterFunction : +# 1363| m1363_2(unknown) = AliasedDefinition : +# 1363| m1363_3(unknown) = InitializeNonLocal : +# 1363| m1363_4(unknown) = Chi : total:m1363_2, partial:m1363_3 +# 1363| r1363_5(glval<int>) = VariableAddress[x] : +# 1363| m1363_6(int) = InitializeParameter[x] : &:r1363_5 +# 1363| r1363_7(glval<int>) = VariableAddress[y] : +# 1363| m1363_8(int) = InitializeParameter[y] : &:r1363_7 +# 1364| r1364_1(glval<int>) = VariableAddress[#return] : +# 1364| r1364_2(glval<unknown>) = FunctionAddress[predicateA] : +# 1364| r1364_3(bool) = Call[predicateA] : func:r1364_2 +# 1364| m1364_4(unknown) = ^CallSideEffect : ~m1363_4 +# 1364| m1364_5(unknown) = Chi : total:m1363_4, partial:m1364_4 +# 1364| v1364_6(void) = ConditionalBranch : r1364_3 #-----| False -> Block 4 #-----| True -> Block 2 -# 1317| Block 1 -# 1317| m1317_7(unknown) = Phi : from 3:~m1317_15, from 4:~m1317_21 -# 1317| m1317_8(int) = Phi : from 3:m1317_20, from 4:m1317_25 -# 1317| r1317_9(glval<int>) = VariableAddress[#temp1317:12] : -# 1317| r1317_10(int) = Load[#temp1317:12] : &:r1317_9, m1317_8 -# 1317| m1317_11(int) = Store[#return] : &:r1317_1, r1317_10 -# 1316| r1316_9(glval<int>) = VariableAddress[#return] : -# 1316| v1316_10(void) = ReturnValue : &:r1316_9, m1317_11 -# 1316| v1316_11(void) = AliasedUse : ~m1317_7 -# 1316| v1316_12(void) = ExitFunction : - -# 1317| Block 2 -# 1317| r1317_12(glval<unknown>) = FunctionAddress[predicateB] : -# 1317| r1317_13(bool) = Call[predicateB] : func:r1317_12 -# 1317| m1317_14(unknown) = ^CallSideEffect : ~m1317_5 -# 1317| m1317_15(unknown) = Chi : total:m1317_5, partial:m1317_14 -# 1317| v1317_16(void) = ConditionalBranch : r1317_13 +# 1364| Block 1 +# 1364| m1364_7(unknown) = Phi : from 3:~m1364_15, from 4:~m1364_21 +# 1364| m1364_8(int) = Phi : from 3:m1364_20, from 4:m1364_25 +# 1364| r1364_9(glval<int>) = VariableAddress[#temp1364:12] : +# 1364| r1364_10(int) = Load[#temp1364:12] : &:r1364_9, m1364_8 +# 1364| m1364_11(int) = Store[#return] : &:r1364_1, r1364_10 +# 1363| r1363_9(glval<int>) = VariableAddress[#return] : +# 1363| v1363_10(void) = ReturnValue : &:r1363_9, m1364_11 +# 1363| v1363_11(void) = AliasedUse : ~m1364_7 +# 1363| v1363_12(void) = ExitFunction : + +# 1364| Block 2 +# 1364| r1364_12(glval<unknown>) = FunctionAddress[predicateB] : +# 1364| r1364_13(bool) = Call[predicateB] : func:r1364_12 +# 1364| m1364_14(unknown) = ^CallSideEffect : ~m1364_5 +# 1364| m1364_15(unknown) = Chi : total:m1364_5, partial:m1364_14 +# 1364| v1364_16(void) = ConditionalBranch : r1364_13 #-----| False -> Block 4 #-----| True -> Block 3 -# 1317| Block 3 -# 1317| r1317_17(glval<int>) = VariableAddress[x] : -# 1317| r1317_18(int) = Load[x] : &:r1317_17, m1316_6 -# 1317| r1317_19(glval<int>) = VariableAddress[#temp1317:12] : -# 1317| m1317_20(int) = Store[#temp1317:12] : &:r1317_19, r1317_18 +# 1364| Block 3 +# 1364| r1364_17(glval<int>) = VariableAddress[x] : +# 1364| r1364_18(int) = Load[x] : &:r1364_17, m1363_6 +# 1364| r1364_19(glval<int>) = VariableAddress[#temp1364:12] : +# 1364| m1364_20(int) = Store[#temp1364:12] : &:r1364_19, r1364_18 #-----| Goto -> Block 1 -# 1317| Block 4 -# 1317| m1317_21(unknown) = Phi : from 0:~m1317_5, from 2:~m1317_15 -# 1317| r1317_22(glval<int>) = VariableAddress[y] : -# 1317| r1317_23(int) = Load[y] : &:r1317_22, m1316_8 -# 1317| r1317_24(glval<int>) = VariableAddress[#temp1317:12] : -# 1317| m1317_25(int) = Store[#temp1317:12] : &:r1317_24, r1317_23 +# 1364| Block 4 +# 1364| m1364_21(unknown) = Phi : from 0:~m1364_5, from 2:~m1364_15 +# 1364| r1364_22(glval<int>) = VariableAddress[y] : +# 1364| r1364_23(int) = Load[y] : &:r1364_22, m1363_8 +# 1364| r1364_24(glval<int>) = VariableAddress[#temp1364:12] : +# 1364| m1364_25(int) = Store[#temp1364:12] : &:r1364_24, r1364_23 #-----| Goto -> Block 1 -# 1322| void f(int*) -# 1322| Block 0 -# 1322| v1322_1(void) = EnterFunction : -# 1322| m1322_2(unknown) = AliasedDefinition : -# 1322| m1322_3(unknown) = InitializeNonLocal : -# 1322| m1322_4(unknown) = Chi : total:m1322_2, partial:m1322_3 -# 1322| r1322_5(glval<int *>) = VariableAddress[p] : -# 1322| m1322_6(int *) = InitializeParameter[p] : &:r1322_5 -# 1322| r1322_7(int *) = Load[p] : &:r1322_5, m1322_6 -# 1322| m1322_8(unknown) = InitializeIndirection[p] : &:r1322_7 -# 1324| r1324_1(glval<unknown>) = FunctionAddress[operator new] : -# 1324| r1324_2(unsigned long) = Constant[4] : -# 1324| r1324_3(glval<int *>) = VariableAddress[p] : -# 1324| r1324_4(int *) = Load[p] : &:r1324_3, m1322_6 -# 1324| r1324_5(void *) = Convert : r1324_4 -# 1324| r1324_6(void *) = Call[operator new] : func:r1324_1, 0:r1324_2, 1:r1324_5 -# 1324| m1324_7(unknown) = ^CallSideEffect : ~m1322_4 -# 1324| m1324_8(unknown) = Chi : total:m1322_4, partial:m1324_7 -# 1324| m1324_9(unknown) = ^InitializeDynamicAllocation : &:r1324_6 -# 1324| r1324_10(int *) = Convert : r1324_6 -# 1325| v1325_1(void) = NoOp : -# 1322| v1322_9(void) = ReturnIndirection[p] : &:r1322_7, m1322_8 -# 1322| v1322_10(void) = ReturnVoid : -# 1322| v1322_11(void) = AliasedUse : ~m1324_8 -# 1322| v1322_12(void) = ExitFunction : - -# 1328| Point defaultConstruct<Point>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| m1328_2(unknown) = AliasedDefinition : -# 1328| m1328_3(unknown) = InitializeNonLocal : -# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 -# 1329| r1329_1(glval<Point>) = VariableAddress[#return] : -# 1329| r1329_2(Point) = Constant[0] : -# 1329| m1329_3(Point) = Store[#return] : &:r1329_1, r1329_2 -# 1328| r1328_5(glval<Point>) = VariableAddress[#return] : -# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_3 -# 1328| v1328_7(void) = AliasedUse : m1328_3 -# 1328| v1328_8(void) = ExitFunction : - -# 1328| String defaultConstruct<String>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| m1328_2(unknown) = AliasedDefinition : -# 1328| m1328_3(unknown) = InitializeNonLocal : -# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 -# 1329| r1329_1(glval<String>) = VariableAddress[#return] : -# 1329| m1329_2(String) = Uninitialized[#return] : &:r1329_1 -# 1329| r1329_3(glval<unknown>) = FunctionAddress[String] : -# 1329| v1329_4(void) = Call[String] : func:r1329_3, this:r1329_1 -# 1329| m1329_5(unknown) = ^CallSideEffect : ~m1328_4 -# 1329| m1329_6(unknown) = Chi : total:m1328_4, partial:m1329_5 -# 1329| m1329_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 -# 1329| m1329_8(String) = Chi : total:m1329_2, partial:m1329_7 -# 1328| r1328_5(glval<String>) = VariableAddress[#return] : -# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_8 -# 1328| v1328_7(void) = AliasedUse : ~m1329_6 -# 1328| v1328_8(void) = ExitFunction : - -# 1328| copy_constructor defaultConstruct<copy_constructor>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| m1328_2(unknown) = AliasedDefinition : -# 1328| m1328_3(unknown) = InitializeNonLocal : -# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 -# 1329| r1329_1(glval<copy_constructor>) = VariableAddress[#return] : -# 1329| m1329_2(copy_constructor) = Uninitialized[#return] : &:r1329_1 -# 1329| r1329_3(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1329| v1329_4(void) = Call[copy_constructor] : func:r1329_3, this:r1329_1 -# 1329| m1329_5(unknown) = ^CallSideEffect : ~m1328_4 -# 1329| m1329_6(unknown) = Chi : total:m1328_4, partial:m1329_5 -# 1329| m1329_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 -# 1329| m1329_8(copy_constructor) = Chi : total:m1329_2, partial:m1329_7 -# 1328| r1328_5(glval<copy_constructor>) = VariableAddress[#return] : -# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_8 -# 1328| v1328_7(void) = AliasedUse : ~m1329_6 -# 1328| v1328_8(void) = ExitFunction : - -# 1328| destructor_only defaultConstruct<destructor_only>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| m1328_2(unknown) = AliasedDefinition : -# 1328| m1328_3(unknown) = InitializeNonLocal : -# 1328| m1328_4(unknown) = Chi : total:m1328_2, partial:m1328_3 -# 1329| r1329_1(glval<destructor_only>) = VariableAddress[#return] : -# 1329| r1329_2(destructor_only) = Constant[0] : -# 1329| m1329_3(destructor_only) = Store[#return] : &:r1329_1, r1329_2 -# 1328| r1328_5(glval<destructor_only>) = VariableAddress[#return] : -# 1328| v1328_6(void) = ReturnValue : &:r1328_5, m1329_3 -# 1328| v1328_7(void) = AliasedUse : m1328_3 -# 1328| v1328_8(void) = ExitFunction : - -# 1367| void temporary_string() -# 1367| Block 0 -# 1367| v1367_1(void) = EnterFunction : -# 1367| m1367_2(unknown) = AliasedDefinition : -# 1367| m1367_3(unknown) = InitializeNonLocal : -# 1367| m1367_4(unknown) = Chi : total:m1367_2, partial:m1367_3 -# 1368| r1368_1(glval<String>) = VariableAddress[s] : -# 1368| r1368_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1368| r1368_3(String) = Call[returnValue] : func:r1368_2 -# 1368| m1368_4(unknown) = ^CallSideEffect : ~m1367_4 -# 1368| m1368_5(unknown) = Chi : total:m1367_4, partial:m1368_4 -# 1368| m1368_6(String) = Store[s] : &:r1368_1, r1368_3 -# 1369| r1369_1(glval<String &>) = VariableAddress[rs] : -# 1369| r1369_2(glval<String>) = VariableAddress[#temp1369:24] : -# 1369| r1369_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1369| r1369_4(String) = Call[returnValue] : func:r1369_3 -# 1369| m1369_5(unknown) = ^CallSideEffect : ~m1368_5 -# 1369| m1369_6(unknown) = Chi : total:m1368_5, partial:m1369_5 -# 1369| m1369_7(String) = Store[#temp1369:24] : &:r1369_2, r1369_4 -# 1369| r1369_8(glval<String>) = Convert : r1369_2 -# 1369| r1369_9(String &) = CopyValue : r1369_8 -# 1369| m1369_10(String &) = Store[rs] : &:r1369_1, r1369_9 -# 1371| r1371_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1371| r1371_2(glval<String>) = VariableAddress[s] : -# 1371| r1371_3(glval<String>) = Convert : r1371_2 -# 1371| r1371_4(String &) = CopyValue : r1371_3 -# 1371| v1371_5(void) = Call[acceptRef] : func:r1371_1, 0:r1371_4 -# 1371| m1371_6(unknown) = ^CallSideEffect : ~m1369_6 -# 1371| m1371_7(unknown) = Chi : total:m1369_6, partial:m1371_6 -# 1371| v1371_8(void) = ^BufferReadSideEffect[0] : &:r1371_4, ~m1368_6 -# 1372| r1372_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1372| r1372_2(glval<String>) = VariableAddress[#temp1372:23] : -# 1372| m1372_3(String) = Uninitialized[#temp1372:23] : &:r1372_2 -# 1372| r1372_4(glval<unknown>) = FunctionAddress[String] : -# 1372| r1372_5(glval<char[4]>) = StringConstant["foo"] : -# 1372| r1372_6(char *) = Convert : r1372_5 -# 1372| v1372_7(void) = Call[String] : func:r1372_4, this:r1372_2, 0:r1372_6 -# 1372| m1372_8(unknown) = ^CallSideEffect : ~m1371_7 -# 1372| m1372_9(unknown) = Chi : total:m1371_7, partial:m1372_8 -# 1372| v1372_10(void) = ^BufferReadSideEffect[0] : &:r1372_6, ~m1367_3 -# 1372| m1372_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1372_2 -# 1372| m1372_12(String) = Chi : total:m1372_3, partial:m1372_11 -# 1372| r1372_13(String &) = CopyValue : r1372_2 -# 1372| v1372_14(void) = Call[acceptRef] : func:r1372_1, 0:r1372_13 -# 1372| m1372_15(unknown) = ^CallSideEffect : ~m1372_9 -# 1372| m1372_16(unknown) = Chi : total:m1372_9, partial:m1372_15 -# 1372| v1372_17(void) = ^BufferReadSideEffect[0] : &:r1372_13, ~m1372_12 -# 1373| r1373_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1373| r1373_2(glval<String>) = VariableAddress[#temp1373:17] : -# 1373| m1373_3(String) = Uninitialized[#temp1373:17] : &:r1373_2 -# 1373| r1373_4(glval<unknown>) = FunctionAddress[String] : -# 1373| r1373_5(glval<String>) = VariableAddress[s] : -# 1373| r1373_6(glval<String>) = Convert : r1373_5 -# 1373| r1373_7(String &) = CopyValue : r1373_6 -# 1373| v1373_8(void) = Call[String] : func:r1373_4, this:r1373_2, 0:r1373_7 -# 1373| m1373_9(unknown) = ^CallSideEffect : ~m1372_16 -# 1373| m1373_10(unknown) = Chi : total:m1372_16, partial:m1373_9 -# 1373| v1373_11(void) = ^BufferReadSideEffect[0] : &:r1373_7, ~m1368_6 -# 1373| m1373_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_2 -# 1373| m1373_13(String) = Chi : total:m1373_3, partial:m1373_12 -# 1373| r1373_14(String) = Load[#temp1373:17] : &:r1373_2, m1373_13 -# 1373| v1373_15(void) = Call[acceptValue] : func:r1373_1, 0:r1373_14 -# 1373| m1373_16(unknown) = ^CallSideEffect : ~m1373_10 -# 1373| m1373_17(unknown) = Chi : total:m1373_10, partial:m1373_16 -# 1374| r1374_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1374| r1374_2(glval<String>) = VariableAddress[#temp1374:25] : -# 1374| m1374_3(String) = Uninitialized[#temp1374:25] : &:r1374_2 -# 1374| r1374_4(glval<unknown>) = FunctionAddress[String] : -# 1374| r1374_5(glval<char[4]>) = StringConstant["foo"] : -# 1374| r1374_6(char *) = Convert : r1374_5 -# 1374| v1374_7(void) = Call[String] : func:r1374_4, this:r1374_2, 0:r1374_6 -# 1374| m1374_8(unknown) = ^CallSideEffect : ~m1373_17 -# 1374| m1374_9(unknown) = Chi : total:m1373_17, partial:m1374_8 -# 1374| v1374_10(void) = ^BufferReadSideEffect[0] : &:r1374_6, ~m1367_3 -# 1374| m1374_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1374_2 -# 1374| m1374_12(String) = Chi : total:m1374_3, partial:m1374_11 -# 1374| r1374_13(String) = Load[#temp1374:25] : &:r1374_2, m1374_12 -# 1374| v1374_14(void) = Call[acceptValue] : func:r1374_1, 0:r1374_13 -# 1374| m1374_15(unknown) = ^CallSideEffect : ~m1374_9 -# 1374| m1374_16(unknown) = Chi : total:m1374_9, partial:m1374_15 -# 1375| r1375_1(glval<String>) = VariableAddress[#temp1375:5] : -# 1375| m1375_2(String) = Uninitialized[#temp1375:5] : &:r1375_1 -# 1375| r1375_3(glval<unknown>) = FunctionAddress[String] : -# 1375| v1375_4(void) = Call[String] : func:r1375_3, this:r1375_1 -# 1375| m1375_5(unknown) = ^CallSideEffect : ~m1374_16 -# 1375| m1375_6(unknown) = Chi : total:m1374_16, partial:m1375_5 -# 1375| m1375_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1375_1 -# 1375| m1375_8(String) = Chi : total:m1375_2, partial:m1375_7 -# 1375| r1375_9(glval<String>) = Convert : r1375_1 -# 1375| r1375_10(glval<unknown>) = FunctionAddress[c_str] : -# 1375| r1375_11(char *) = Call[c_str] : func:r1375_10, this:r1375_9 -# 1375| m1375_12(unknown) = ^CallSideEffect : ~m1375_6 -# 1375| m1375_13(unknown) = Chi : total:m1375_6, partial:m1375_12 -# 1375| v1375_14(void) = ^IndirectReadSideEffect[-1] : &:r1375_9, m1375_8 -# 1376| r1376_1(glval<String>) = VariableAddress[#temp1376:5] : -# 1376| r1376_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1376| r1376_3(String) = Call[returnValue] : func:r1376_2 -# 1376| m1376_4(unknown) = ^CallSideEffect : ~m1375_13 -# 1376| m1376_5(unknown) = Chi : total:m1375_13, partial:m1376_4 -# 1376| m1376_6(String) = Store[#temp1376:5] : &:r1376_1, r1376_3 -# 1376| r1376_7(glval<String>) = Convert : r1376_1 -# 1376| r1376_8(glval<unknown>) = FunctionAddress[c_str] : -# 1376| r1376_9(char *) = Call[c_str] : func:r1376_8, this:r1376_7 -# 1376| m1376_10(unknown) = ^CallSideEffect : ~m1376_5 -# 1376| m1376_11(unknown) = Chi : total:m1376_5, partial:m1376_10 -# 1376| v1376_12(void) = ^IndirectReadSideEffect[-1] : &:r1376_7, m1376_6 -# 1378| r1378_1(glval<String>) = VariableAddress[#temp1378:5] : -# 1378| r1378_2(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1378| r1378_3(String) = Call[defaultConstruct] : func:r1378_2 -# 1378| m1378_4(unknown) = ^CallSideEffect : ~m1376_11 -# 1378| m1378_5(unknown) = Chi : total:m1376_11, partial:m1378_4 -# 1378| m1378_6(String) = Store[#temp1378:5] : &:r1378_1, r1378_3 -# 1379| v1379_1(void) = NoOp : -# 1379| r1379_2(glval<String>) = VariableAddress[s] : -# 1379| r1379_3(glval<unknown>) = FunctionAddress[~String] : -# 1379| v1379_4(void) = Call[~String] : func:r1379_3, this:r1379_2 -# 1379| m1379_5(unknown) = ^CallSideEffect : ~m1378_5 -# 1379| m1379_6(unknown) = Chi : total:m1378_5, partial:m1379_5 -# 1379| v1379_7(void) = ^IndirectReadSideEffect[-1] : &:r1379_2, m1368_6 -# 1379| m1379_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1379_2 -# 1379| m1379_9(String) = Chi : total:m1368_6, partial:m1379_8 -# 1367| v1367_5(void) = ReturnVoid : -# 1367| v1367_6(void) = AliasedUse : ~m1379_6 -# 1367| v1367_7(void) = ExitFunction : - -# 1381| void temporary_destructor_only() -# 1381| Block 0 -# 1381| v1381_1(void) = EnterFunction : -# 1381| m1381_2(unknown) = AliasedDefinition : -# 1381| m1381_3(unknown) = InitializeNonLocal : -# 1381| m1381_4(unknown) = Chi : total:m1381_2, partial:m1381_3 -# 1382| r1382_1(glval<destructor_only>) = VariableAddress[d] : -# 1382| r1382_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1382| r1382_3(destructor_only) = Call[returnValue] : func:r1382_2 -# 1382| m1382_4(unknown) = ^CallSideEffect : ~m1381_4 -# 1382| m1382_5(unknown) = Chi : total:m1381_4, partial:m1382_4 -# 1382| m1382_6(destructor_only) = Store[d] : &:r1382_1, r1382_3 -# 1383| r1383_1(glval<destructor_only &>) = VariableAddress[rd] : -# 1383| r1383_2(glval<destructor_only>) = VariableAddress[#temp1383:33] : -# 1383| r1383_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1383| r1383_4(destructor_only) = Call[returnValue] : func:r1383_3 -# 1383| m1383_5(unknown) = ^CallSideEffect : ~m1382_5 -# 1383| m1383_6(unknown) = Chi : total:m1382_5, partial:m1383_5 -# 1383| m1383_7(destructor_only) = Store[#temp1383:33] : &:r1383_2, r1383_4 -# 1383| r1383_8(glval<destructor_only>) = Convert : r1383_2 -# 1383| r1383_9(destructor_only &) = CopyValue : r1383_8 -# 1383| m1383_10(destructor_only &) = Store[rd] : &:r1383_1, r1383_9 -# 1384| r1384_1(glval<destructor_only>) = VariableAddress[d2] : -# 1384| m1384_2(destructor_only) = Uninitialized[d2] : &:r1384_1 -# 1385| r1385_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1385| r1385_2(glval<destructor_only>) = VariableAddress[d] : -# 1385| r1385_3(glval<destructor_only>) = Convert : r1385_2 -# 1385| r1385_4(destructor_only &) = CopyValue : r1385_3 -# 1385| v1385_5(void) = Call[acceptRef] : func:r1385_1, 0:r1385_4 -# 1385| m1385_6(unknown) = ^CallSideEffect : ~m1383_6 -# 1385| m1385_7(unknown) = Chi : total:m1383_6, partial:m1385_6 -# 1385| v1385_8(void) = ^BufferReadSideEffect[0] : &:r1385_4, ~m1382_6 -# 1386| r1386_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1386| r1386_2(glval<destructor_only>) = VariableAddress[#temp1386:17] : -# 1386| r1386_3(glval<destructor_only>) = VariableAddress[d] : -# 1386| r1386_4(destructor_only) = Load[d] : &:r1386_3, m1382_6 -# 1386| m1386_5(destructor_only) = Store[#temp1386:17] : &:r1386_2, r1386_4 -# 1386| r1386_6(destructor_only) = Load[#temp1386:17] : &:r1386_2, m1386_5 -# 1386| v1386_7(void) = Call[acceptValue] : func:r1386_1, 0:r1386_6 -# 1386| m1386_8(unknown) = ^CallSideEffect : ~m1385_7 -# 1386| m1386_9(unknown) = Chi : total:m1385_7, partial:m1386_8 -# 1387| r1387_1(glval<destructor_only>) = VariableAddress[#temp1387:5] : -# 1387| r1387_2(destructor_only) = Constant[0] : -# 1387| m1387_3(destructor_only) = Store[#temp1387:5] : &:r1387_1, r1387_2 -# 1387| r1387_4(glval<unknown>) = FunctionAddress[method] : -# 1387| v1387_5(void) = Call[method] : func:r1387_4, this:r1387_1 -# 1387| m1387_6(unknown) = ^CallSideEffect : ~m1386_9 -# 1387| m1387_7(unknown) = Chi : total:m1386_9, partial:m1387_6 -# 1387| v1387_8(void) = ^IndirectReadSideEffect[-1] : &:r1387_1, m1387_3 -# 1387| m1387_9(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1387_1 -# 1387| m1387_10(destructor_only) = Chi : total:m1387_3, partial:m1387_9 -# 1388| r1388_1(glval<destructor_only>) = VariableAddress[#temp1388:5] : -# 1388| r1388_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1388| r1388_3(destructor_only) = Call[returnValue] : func:r1388_2 -# 1388| m1388_4(unknown) = ^CallSideEffect : ~m1387_7 -# 1388| m1388_5(unknown) = Chi : total:m1387_7, partial:m1388_4 -# 1388| m1388_6(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3 -# 1388| r1388_7(glval<unknown>) = FunctionAddress[method] : -# 1388| v1388_8(void) = Call[method] : func:r1388_7, this:r1388_1 -# 1388| m1388_9(unknown) = ^CallSideEffect : ~m1388_5 -# 1388| m1388_10(unknown) = Chi : total:m1388_5, partial:m1388_9 -# 1388| v1388_11(void) = ^IndirectReadSideEffect[-1] : &:r1388_1, m1388_6 -# 1388| m1388_12(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1388_1 -# 1388| m1388_13(destructor_only) = Chi : total:m1388_6, partial:m1388_12 -# 1390| r1390_1(glval<destructor_only>) = VariableAddress[#temp1390:5] : -# 1390| r1390_2(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1390| r1390_3(destructor_only) = Call[defaultConstruct] : func:r1390_2 -# 1390| m1390_4(unknown) = ^CallSideEffect : ~m1388_10 -# 1390| m1390_5(unknown) = Chi : total:m1388_10, partial:m1390_4 -# 1390| m1390_6(destructor_only) = Store[#temp1390:5] : &:r1390_1, r1390_3 -# 1391| v1391_1(void) = NoOp : -# 1391| r1391_2(glval<destructor_only>) = VariableAddress[d2] : -# 1391| r1391_3(glval<unknown>) = FunctionAddress[~destructor_only] : -# 1391| v1391_4(void) = Call[~destructor_only] : func:r1391_3, this:r1391_2 -# 1391| m1391_5(unknown) = ^CallSideEffect : ~m1390_5 -# 1391| m1391_6(unknown) = Chi : total:m1390_5, partial:m1391_5 -# 1391| v1391_7(void) = ^IndirectReadSideEffect[-1] : &:r1391_2, m1384_2 -# 1391| m1391_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1391_2 -# 1391| m1391_9(destructor_only) = Chi : total:m1384_2, partial:m1391_8 -# 1391| r1391_10(glval<destructor_only>) = VariableAddress[d] : -# 1391| r1391_11(glval<unknown>) = FunctionAddress[~destructor_only] : -# 1391| v1391_12(void) = Call[~destructor_only] : func:r1391_11, this:r1391_10 -# 1391| m1391_13(unknown) = ^CallSideEffect : ~m1391_6 -# 1391| m1391_14(unknown) = Chi : total:m1391_6, partial:m1391_13 -# 1391| v1391_15(void) = ^IndirectReadSideEffect[-1] : &:r1391_10, m1382_6 -# 1391| m1391_16(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1391_10 -# 1391| m1391_17(destructor_only) = Chi : total:m1382_6, partial:m1391_16 -# 1381| v1381_5(void) = ReturnVoid : -# 1381| v1381_6(void) = AliasedUse : ~m1391_14 -# 1381| v1381_7(void) = ExitFunction : - -# 1393| void temporary_copy_constructor() -# 1393| Block 0 -# 1393| v1393_1(void) = EnterFunction : -# 1393| m1393_2(unknown) = AliasedDefinition : -# 1393| m1393_3(unknown) = InitializeNonLocal : -# 1393| m1393_4(unknown) = Chi : total:m1393_2, partial:m1393_3 -# 1394| r1394_1(glval<copy_constructor>) = VariableAddress[d] : -# 1394| r1394_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1394| r1394_3(copy_constructor) = Call[returnValue] : func:r1394_2 -# 1394| m1394_4(unknown) = ^CallSideEffect : ~m1393_4 -# 1394| m1394_5(unknown) = Chi : total:m1393_4, partial:m1394_4 -# 1394| m1394_6(copy_constructor) = Store[d] : &:r1394_1, r1394_3 -# 1395| r1395_1(glval<copy_constructor &>) = VariableAddress[rd] : -# 1395| r1395_2(glval<copy_constructor>) = VariableAddress[#temp1395:34] : -# 1395| r1395_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1395| r1395_4(copy_constructor) = Call[returnValue] : func:r1395_3 -# 1395| m1395_5(unknown) = ^CallSideEffect : ~m1394_5 -# 1395| m1395_6(unknown) = Chi : total:m1394_5, partial:m1395_5 -# 1395| m1395_7(copy_constructor) = Store[#temp1395:34] : &:r1395_2, r1395_4 -# 1395| r1395_8(glval<copy_constructor>) = Convert : r1395_2 -# 1395| r1395_9(copy_constructor &) = CopyValue : r1395_8 -# 1395| m1395_10(copy_constructor &) = Store[rd] : &:r1395_1, r1395_9 -# 1396| r1396_1(glval<copy_constructor>) = VariableAddress[d2] : -# 1396| m1396_2(copy_constructor) = Uninitialized[d2] : &:r1396_1 -# 1396| r1396_3(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1396| v1396_4(void) = Call[copy_constructor] : func:r1396_3, this:r1396_1 -# 1396| m1396_5(unknown) = ^CallSideEffect : ~m1395_6 -# 1396| m1396_6(unknown) = Chi : total:m1395_6, partial:m1396_5 -# 1396| m1396_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1396_1 -# 1396| m1396_8(copy_constructor) = Chi : total:m1396_2, partial:m1396_7 -# 1397| r1397_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1397| r1397_2(glval<copy_constructor>) = VariableAddress[d] : -# 1397| r1397_3(glval<copy_constructor>) = Convert : r1397_2 -# 1397| r1397_4(copy_constructor &) = CopyValue : r1397_3 -# 1397| v1397_5(void) = Call[acceptRef] : func:r1397_1, 0:r1397_4 -# 1397| m1397_6(unknown) = ^CallSideEffect : ~m1396_6 -# 1397| m1397_7(unknown) = Chi : total:m1396_6, partial:m1397_6 -# 1397| v1397_8(void) = ^BufferReadSideEffect[0] : &:r1397_4, ~m1394_6 -# 1398| r1398_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1398| r1398_2(glval<copy_constructor>) = VariableAddress[#temp1398:17] : -# 1398| m1398_3(copy_constructor) = Uninitialized[#temp1398:17] : &:r1398_2 -# 1398| r1398_4(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1398| r1398_5(glval<copy_constructor>) = VariableAddress[d] : -# 1398| r1398_6(glval<copy_constructor>) = Convert : r1398_5 -# 1398| r1398_7(copy_constructor &) = CopyValue : r1398_6 -# 1398| v1398_8(void) = Call[copy_constructor] : func:r1398_4, this:r1398_2, 0:r1398_7 -# 1398| m1398_9(unknown) = ^CallSideEffect : ~m1397_7 -# 1398| m1398_10(unknown) = Chi : total:m1397_7, partial:m1398_9 -# 1398| v1398_11(void) = ^BufferReadSideEffect[0] : &:r1398_7, ~m1394_6 -# 1398| m1398_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1398_2 -# 1398| m1398_13(copy_constructor) = Chi : total:m1398_3, partial:m1398_12 -# 1398| r1398_14(copy_constructor) = Load[#temp1398:17] : &:r1398_2, m1398_13 -# 1398| v1398_15(void) = Call[acceptValue] : func:r1398_1, 0:r1398_14 -# 1398| m1398_16(unknown) = ^CallSideEffect : ~m1398_10 -# 1398| m1398_17(unknown) = Chi : total:m1398_10, partial:m1398_16 -# 1399| r1399_1(glval<copy_constructor>) = VariableAddress[#temp1399:5] : -# 1399| m1399_2(copy_constructor) = Uninitialized[#temp1399:5] : &:r1399_1 -# 1399| r1399_3(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1399| v1399_4(void) = Call[copy_constructor] : func:r1399_3, this:r1399_1 -# 1399| m1399_5(unknown) = ^CallSideEffect : ~m1398_17 -# 1399| m1399_6(unknown) = Chi : total:m1398_17, partial:m1399_5 -# 1399| m1399_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 -# 1399| m1399_8(copy_constructor) = Chi : total:m1399_2, partial:m1399_7 -# 1399| r1399_9(glval<unknown>) = FunctionAddress[method] : -# 1399| v1399_10(void) = Call[method] : func:r1399_9, this:r1399_1 -# 1399| m1399_11(unknown) = ^CallSideEffect : ~m1399_6 -# 1399| m1399_12(unknown) = Chi : total:m1399_6, partial:m1399_11 -# 1399| v1399_13(void) = ^IndirectReadSideEffect[-1] : &:r1399_1, m1399_8 -# 1399| m1399_14(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 -# 1399| m1399_15(copy_constructor) = Chi : total:m1399_8, partial:m1399_14 -# 1400| r1400_1(glval<copy_constructor>) = VariableAddress[#temp1400:5] : -# 1400| r1400_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1400| r1400_3(copy_constructor) = Call[returnValue] : func:r1400_2 -# 1400| m1400_4(unknown) = ^CallSideEffect : ~m1399_12 -# 1400| m1400_5(unknown) = Chi : total:m1399_12, partial:m1400_4 -# 1400| m1400_6(copy_constructor) = Store[#temp1400:5] : &:r1400_1, r1400_3 -# 1400| r1400_7(glval<unknown>) = FunctionAddress[method] : -# 1400| v1400_8(void) = Call[method] : func:r1400_7, this:r1400_1 -# 1400| m1400_9(unknown) = ^CallSideEffect : ~m1400_5 -# 1400| m1400_10(unknown) = Chi : total:m1400_5, partial:m1400_9 -# 1400| v1400_11(void) = ^IndirectReadSideEffect[-1] : &:r1400_1, m1400_6 -# 1400| m1400_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1400_1 -# 1400| m1400_13(copy_constructor) = Chi : total:m1400_6, partial:m1400_12 -# 1401| r1401_1(glval<copy_constructor>) = VariableAddress[#temp1401:5] : -# 1401| r1401_2(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1401| r1401_3(copy_constructor) = Call[defaultConstruct] : func:r1401_2 -# 1401| m1401_4(unknown) = ^CallSideEffect : ~m1400_10 -# 1401| m1401_5(unknown) = Chi : total:m1400_10, partial:m1401_4 -# 1401| m1401_6(copy_constructor) = Store[#temp1401:5] : &:r1401_1, r1401_3 -# 1403| r1403_1(glval<int>) = VariableAddress[y] : -# 1403| r1403_2(glval<copy_constructor>) = VariableAddress[#temp1403:13] : -# 1403| r1403_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1403| r1403_4(copy_constructor) = Call[returnValue] : func:r1403_3 -# 1403| m1403_5(unknown) = ^CallSideEffect : ~m1401_5 -# 1403| m1403_6(unknown) = Chi : total:m1401_5, partial:m1403_5 -# 1403| m1403_7(copy_constructor) = Store[#temp1403:13] : &:r1403_2, r1403_4 -# 1403| r1403_8(glval<int>) = FieldAddress[y] : r1403_2 -# 1403| r1403_9(int) = Load[?] : &:r1403_8, ~m1403_7 -# 1403| m1403_10(int) = Store[y] : &:r1403_1, r1403_9 -# 1404| v1404_1(void) = NoOp : -# 1393| v1393_5(void) = ReturnVoid : -# 1393| v1393_6(void) = AliasedUse : ~m1403_6 -# 1393| v1393_7(void) = ExitFunction : - -# 1406| void temporary_point() -# 1406| Block 0 -# 1406| v1406_1(void) = EnterFunction : -# 1406| m1406_2(unknown) = AliasedDefinition : -# 1406| m1406_3(unknown) = InitializeNonLocal : -# 1406| m1406_4(unknown) = Chi : total:m1406_2, partial:m1406_3 -# 1407| r1407_1(glval<Point>) = VariableAddress[p] : -# 1407| r1407_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1407| r1407_3(Point) = Call[returnValue] : func:r1407_2 -# 1407| m1407_4(unknown) = ^CallSideEffect : ~m1406_4 -# 1407| m1407_5(unknown) = Chi : total:m1406_4, partial:m1407_4 -# 1407| m1407_6(Point) = Store[p] : &:r1407_1, r1407_3 -# 1408| r1408_1(glval<Point &>) = VariableAddress[rp] : -# 1408| r1408_2(glval<Point>) = VariableAddress[#temp1408:23] : -# 1408| r1408_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1408| r1408_4(Point) = Call[returnValue] : func:r1408_3 -# 1408| m1408_5(unknown) = ^CallSideEffect : ~m1407_5 -# 1408| m1408_6(unknown) = Chi : total:m1407_5, partial:m1408_5 -# 1408| m1408_7(Point) = Store[#temp1408:23] : &:r1408_2, r1408_4 -# 1408| r1408_8(glval<Point>) = Convert : r1408_2 -# 1408| r1408_9(Point &) = CopyValue : r1408_8 -# 1408| m1408_10(Point &) = Store[rp] : &:r1408_1, r1408_9 -# 1410| r1410_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1410| r1410_2(glval<Point>) = VariableAddress[p] : -# 1410| r1410_3(glval<Point>) = Convert : r1410_2 -# 1410| r1410_4(Point &) = CopyValue : r1410_3 -# 1410| v1410_5(void) = Call[acceptRef] : func:r1410_1, 0:r1410_4 -# 1410| m1410_6(unknown) = ^CallSideEffect : ~m1408_6 -# 1410| m1410_7(unknown) = Chi : total:m1408_6, partial:m1410_6 -# 1410| v1410_8(void) = ^BufferReadSideEffect[0] : &:r1410_4, ~m1407_6 -# 1411| r1411_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1411| r1411_2(glval<Point>) = VariableAddress[p] : -# 1411| r1411_3(Point) = Load[p] : &:r1411_2, m1407_6 -# 1411| v1411_4(void) = Call[acceptValue] : func:r1411_1, 0:r1411_3 -# 1411| m1411_5(unknown) = ^CallSideEffect : ~m1410_7 -# 1411| m1411_6(unknown) = Chi : total:m1410_7, partial:m1411_5 -# 1412| r1412_1(int) = Constant[0] : -# 1413| r1413_1(glval<int>) = VariableAddress[y] : -# 1413| r1413_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1413| r1413_3(Point) = Call[returnValue] : func:r1413_2 -# 1413| m1413_4(unknown) = ^CallSideEffect : ~m1411_6 -# 1413| m1413_5(unknown) = Chi : total:m1411_6, partial:m1413_4 -# 1413| r1413_6(glval<Point>) = VariableAddress[#temp1413:13] : -# 1413| m1413_7(Point) = Store[#temp1413:13] : &:r1413_6, r1413_3 -# 1413| r1413_8(glval<int>) = FieldAddress[y] : r1413_6 -# 1413| r1413_9(int) = Load[?] : &:r1413_8, ~m1413_7 -# 1413| m1413_10(int) = Store[y] : &:r1413_1, r1413_9 -# 1415| r1415_1(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1415| r1415_2(Point) = Call[defaultConstruct] : func:r1415_1 -# 1415| m1415_3(unknown) = ^CallSideEffect : ~m1413_5 -# 1415| m1415_4(unknown) = Chi : total:m1413_5, partial:m1415_3 -# 1416| v1416_1(void) = NoOp : -# 1406| v1406_5(void) = ReturnVoid : -# 1406| v1406_6(void) = AliasedUse : ~m1415_4 -# 1406| v1406_7(void) = ExitFunction : - -# 1423| void temporary_unusual_fields() -# 1423| Block 0 -# 1423| v1423_1(void) = EnterFunction : -# 1423| m1423_2(unknown) = AliasedDefinition : -# 1423| m1423_3(unknown) = InitializeNonLocal : -# 1423| m1423_4(unknown) = Chi : total:m1423_2, partial:m1423_3 -# 1424| r1424_1(glval<int &>) = VariableAddress[rx] : -# 1424| r1424_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1424| r1424_3(UnusualFields) = Call[returnValue] : func:r1424_2 -# 1424| m1424_4(unknown) = ^CallSideEffect : ~m1423_4 -# 1424| m1424_5(unknown) = Chi : total:m1423_4, partial:m1424_4 -# 1424| r1424_6(glval<UnusualFields>) = VariableAddress[#temp1424:21] : -# 1424| m1424_7(UnusualFields) = Store[#temp1424:21] : &:r1424_6, r1424_3 -# 1424| r1424_8(glval<int &>) = FieldAddress[r] : r1424_6 -# 1424| r1424_9(int &) = Load[?] : &:r1424_8, ~m1424_7 -# 1424| r1424_10(glval<int>) = CopyValue : r1424_9 -# 1424| r1424_11(glval<int>) = Convert : r1424_10 -# 1424| r1424_12(int &) = CopyValue : r1424_11 -# 1424| m1424_13(int &) = Store[rx] : &:r1424_1, r1424_12 -# 1425| r1425_1(glval<int>) = VariableAddress[x] : -# 1425| r1425_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1425| r1425_3(UnusualFields) = Call[returnValue] : func:r1425_2 -# 1425| m1425_4(unknown) = ^CallSideEffect : ~m1424_5 -# 1425| m1425_5(unknown) = Chi : total:m1424_5, partial:m1425_4 -# 1425| r1425_6(glval<UnusualFields>) = VariableAddress[#temp1425:13] : -# 1425| m1425_7(UnusualFields) = Store[#temp1425:13] : &:r1425_6, r1425_3 -# 1425| r1425_8(glval<int &>) = FieldAddress[r] : r1425_6 -# 1425| r1425_9(int &) = Load[?] : &:r1425_8, ~m1425_7 -# 1425| r1425_10(int) = Load[?] : &:r1425_9, ~m1425_5 -# 1425| m1425_11(int) = Store[x] : &:r1425_1, r1425_10 -# 1427| r1427_1(glval<float &>) = VariableAddress[rf] : -# 1427| r1427_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1427| r1427_3(UnusualFields) = Call[returnValue] : func:r1427_2 -# 1427| m1427_4(unknown) = ^CallSideEffect : ~m1425_5 -# 1427| m1427_5(unknown) = Chi : total:m1425_5, partial:m1427_4 -# 1427| r1427_6(glval<UnusualFields>) = VariableAddress[#temp1427:23] : -# 1427| m1427_7(UnusualFields) = Store[#temp1427:23] : &:r1427_6, r1427_3 -# 1427| r1427_8(glval<float[10]>) = FieldAddress[a] : r1427_6 -# 1427| r1427_9(float *) = Convert : r1427_8 -# 1427| r1427_10(int) = Constant[3] : -# 1427| r1427_11(glval<float>) = PointerAdd[4] : r1427_9, r1427_10 -# 1427| r1427_12(glval<float>) = Convert : r1427_11 -# 1427| r1427_13(float &) = CopyValue : r1427_12 -# 1427| m1427_14(float &) = Store[rf] : &:r1427_1, r1427_13 -# 1428| r1428_1(glval<float>) = VariableAddress[f] : -# 1428| r1428_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1428| r1428_3(UnusualFields) = Call[returnValue] : func:r1428_2 -# 1428| m1428_4(unknown) = ^CallSideEffect : ~m1427_5 -# 1428| m1428_5(unknown) = Chi : total:m1427_5, partial:m1428_4 -# 1428| r1428_6(glval<UnusualFields>) = VariableAddress[#temp1428:15] : -# 1428| m1428_7(UnusualFields) = Store[#temp1428:15] : &:r1428_6, r1428_3 -# 1428| r1428_8(glval<float[10]>) = FieldAddress[a] : r1428_6 -# 1428| r1428_9(float *) = Convert : r1428_8 -# 1428| r1428_10(int) = Constant[5] : -# 1428| r1428_11(glval<float>) = PointerAdd[4] : r1428_9, r1428_10 -# 1428| r1428_12(float) = Load[?] : &:r1428_11, ~m1428_7 -# 1428| m1428_13(float) = Store[f] : &:r1428_1, r1428_12 -# 1429| v1429_1(void) = NoOp : -# 1423| v1423_5(void) = ReturnVoid : -# 1423| v1423_6(void) = AliasedUse : ~m1428_5 -# 1423| v1423_7(void) = ExitFunction : - -# 1445| void temporary_hierarchy() -# 1445| Block 0 -# 1445| v1445_1(void) = EnterFunction : -# 1445| m1445_2(unknown) = AliasedDefinition : -# 1445| m1445_3(unknown) = InitializeNonLocal : -# 1445| m1445_4(unknown) = Chi : total:m1445_2, partial:m1445_3 -# 1446| r1446_1(glval<POD_Base>) = VariableAddress[b] : +# 1369| void f(int*) +# 1369| Block 0 +# 1369| v1369_1(void) = EnterFunction : +# 1369| m1369_2(unknown) = AliasedDefinition : +# 1369| m1369_3(unknown) = InitializeNonLocal : +# 1369| m1369_4(unknown) = Chi : total:m1369_2, partial:m1369_3 +# 1369| r1369_5(glval<int *>) = VariableAddress[p] : +# 1369| m1369_6(int *) = InitializeParameter[p] : &:r1369_5 +# 1369| r1369_7(int *) = Load[p] : &:r1369_5, m1369_6 +# 1369| m1369_8(unknown) = InitializeIndirection[p] : &:r1369_7 +# 1371| r1371_1(glval<unknown>) = FunctionAddress[operator new] : +# 1371| r1371_2(unsigned long) = Constant[4] : +# 1371| r1371_3(glval<int *>) = VariableAddress[p] : +# 1371| r1371_4(int *) = Load[p] : &:r1371_3, m1369_6 +# 1371| r1371_5(void *) = Convert : r1371_4 +# 1371| r1371_6(void *) = Call[operator new] : func:r1371_1, 0:r1371_2, 1:r1371_5 +# 1371| m1371_7(unknown) = ^CallSideEffect : ~m1369_4 +# 1371| m1371_8(unknown) = Chi : total:m1369_4, partial:m1371_7 +# 1371| m1371_9(unknown) = ^InitializeDynamicAllocation : &:r1371_6 +# 1371| r1371_10(int *) = Convert : r1371_6 +# 1372| v1372_1(void) = NoOp : +# 1369| v1369_9(void) = ReturnIndirection[p] : &:r1369_7, m1369_8 +# 1369| v1369_10(void) = ReturnVoid : +# 1369| v1369_11(void) = AliasedUse : ~m1371_8 +# 1369| v1369_12(void) = ExitFunction : + +# 1375| Point defaultConstruct<Point>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| m1375_2(unknown) = AliasedDefinition : +# 1375| m1375_3(unknown) = InitializeNonLocal : +# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 +# 1376| r1376_1(glval<Point>) = VariableAddress[#return] : +# 1376| r1376_2(Point) = Constant[0] : +# 1376| m1376_3(Point) = Store[#return] : &:r1376_1, r1376_2 +# 1375| r1375_5(glval<Point>) = VariableAddress[#return] : +# 1375| v1375_6(void) = ReturnValue : &:r1375_5, m1376_3 +# 1375| v1375_7(void) = AliasedUse : m1375_3 +# 1375| v1375_8(void) = ExitFunction : + +# 1375| String defaultConstruct<String>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| m1375_2(unknown) = AliasedDefinition : +# 1375| m1375_3(unknown) = InitializeNonLocal : +# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 +# 1376| r1376_1(glval<String>) = VariableAddress[#return] : +# 1376| m1376_2(String) = Uninitialized[#return] : &:r1376_1 +# 1376| r1376_3(glval<unknown>) = FunctionAddress[String] : +# 1376| v1376_4(void) = Call[String] : func:r1376_3, this:r1376_1 +# 1376| m1376_5(unknown) = ^CallSideEffect : ~m1375_4 +# 1376| m1376_6(unknown) = Chi : total:m1375_4, partial:m1376_5 +# 1376| m1376_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 +# 1376| m1376_8(String) = Chi : total:m1376_2, partial:m1376_7 +# 1375| r1375_5(glval<String>) = VariableAddress[#return] : +# 1375| v1375_6(void) = ReturnValue : &:r1375_5, m1376_8 +# 1375| v1375_7(void) = AliasedUse : ~m1376_6 +# 1375| v1375_8(void) = ExitFunction : + +# 1375| copy_constructor defaultConstruct<copy_constructor>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| m1375_2(unknown) = AliasedDefinition : +# 1375| m1375_3(unknown) = InitializeNonLocal : +# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 +# 1376| r1376_1(glval<copy_constructor>) = VariableAddress[#return] : +# 1376| m1376_2(copy_constructor) = Uninitialized[#return] : &:r1376_1 +# 1376| r1376_3(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1376| v1376_4(void) = Call[copy_constructor] : func:r1376_3, this:r1376_1 +# 1376| m1376_5(unknown) = ^CallSideEffect : ~m1375_4 +# 1376| m1376_6(unknown) = Chi : total:m1375_4, partial:m1376_5 +# 1376| m1376_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 +# 1376| m1376_8(copy_constructor) = Chi : total:m1376_2, partial:m1376_7 +# 1375| r1375_5(glval<copy_constructor>) = VariableAddress[#return] : +# 1375| v1375_6(void) = ReturnValue : &:r1375_5, m1376_8 +# 1375| v1375_7(void) = AliasedUse : ~m1376_6 +# 1375| v1375_8(void) = ExitFunction : + +# 1375| destructor_only defaultConstruct<destructor_only>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| m1375_2(unknown) = AliasedDefinition : +# 1375| m1375_3(unknown) = InitializeNonLocal : +# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 +# 1376| r1376_1(glval<destructor_only>) = VariableAddress[#return] : +# 1376| r1376_2(destructor_only) = Constant[0] : +# 1376| m1376_3(destructor_only) = Store[#return] : &:r1376_1, r1376_2 +# 1375| r1375_5(glval<destructor_only>) = VariableAddress[#return] : +# 1375| v1375_6(void) = ReturnValue : &:r1375_5, m1376_3 +# 1375| v1375_7(void) = AliasedUse : m1375_3 +# 1375| v1375_8(void) = ExitFunction : + +# 1414| void temporary_string() +# 1414| Block 0 +# 1414| v1414_1(void) = EnterFunction : +# 1414| m1414_2(unknown) = AliasedDefinition : +# 1414| m1414_3(unknown) = InitializeNonLocal : +# 1414| m1414_4(unknown) = Chi : total:m1414_2, partial:m1414_3 +# 1415| r1415_1(glval<String>) = VariableAddress[s] : +# 1415| r1415_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1415| r1415_3(String) = Call[returnValue] : func:r1415_2 +# 1415| m1415_4(unknown) = ^CallSideEffect : ~m1414_4 +# 1415| m1415_5(unknown) = Chi : total:m1414_4, partial:m1415_4 +# 1415| m1415_6(String) = Store[s] : &:r1415_1, r1415_3 +# 1416| r1416_1(glval<String &>) = VariableAddress[rs] : +# 1416| r1416_2(glval<String>) = VariableAddress[#temp1416:24] : +# 1416| r1416_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1416| r1416_4(String) = Call[returnValue] : func:r1416_3 +# 1416| m1416_5(unknown) = ^CallSideEffect : ~m1415_5 +# 1416| m1416_6(unknown) = Chi : total:m1415_5, partial:m1416_5 +# 1416| m1416_7(String) = Store[#temp1416:24] : &:r1416_2, r1416_4 +# 1416| r1416_8(glval<String>) = Convert : r1416_2 +# 1416| r1416_9(String &) = CopyValue : r1416_8 +# 1416| m1416_10(String &) = Store[rs] : &:r1416_1, r1416_9 +# 1418| r1418_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1418| r1418_2(glval<String>) = VariableAddress[s] : +# 1418| r1418_3(glval<String>) = Convert : r1418_2 +# 1418| r1418_4(String &) = CopyValue : r1418_3 +# 1418| v1418_5(void) = Call[acceptRef] : func:r1418_1, 0:r1418_4 +# 1418| m1418_6(unknown) = ^CallSideEffect : ~m1416_6 +# 1418| m1418_7(unknown) = Chi : total:m1416_6, partial:m1418_6 +# 1418| v1418_8(void) = ^BufferReadSideEffect[0] : &:r1418_4, ~m1415_6 +# 1419| r1419_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1419| r1419_2(glval<String>) = VariableAddress[#temp1419:23] : +# 1419| m1419_3(String) = Uninitialized[#temp1419:23] : &:r1419_2 +# 1419| r1419_4(glval<unknown>) = FunctionAddress[String] : +# 1419| r1419_5(glval<char[4]>) = StringConstant["foo"] : +# 1419| r1419_6(char *) = Convert : r1419_5 +# 1419| v1419_7(void) = Call[String] : func:r1419_4, this:r1419_2, 0:r1419_6 +# 1419| m1419_8(unknown) = ^CallSideEffect : ~m1418_7 +# 1419| m1419_9(unknown) = Chi : total:m1418_7, partial:m1419_8 +# 1419| v1419_10(void) = ^BufferReadSideEffect[0] : &:r1419_6, ~m1414_3 +# 1419| m1419_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1419_2 +# 1419| m1419_12(String) = Chi : total:m1419_3, partial:m1419_11 +# 1419| r1419_13(String &) = CopyValue : r1419_2 +# 1419| v1419_14(void) = Call[acceptRef] : func:r1419_1, 0:r1419_13 +# 1419| m1419_15(unknown) = ^CallSideEffect : ~m1419_9 +# 1419| m1419_16(unknown) = Chi : total:m1419_9, partial:m1419_15 +# 1419| v1419_17(void) = ^BufferReadSideEffect[0] : &:r1419_13, ~m1419_12 +# 1420| r1420_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1420| r1420_2(glval<String>) = VariableAddress[#temp1420:17] : +# 1420| m1420_3(String) = Uninitialized[#temp1420:17] : &:r1420_2 +# 1420| r1420_4(glval<unknown>) = FunctionAddress[String] : +# 1420| r1420_5(glval<String>) = VariableAddress[s] : +# 1420| r1420_6(glval<String>) = Convert : r1420_5 +# 1420| r1420_7(String &) = CopyValue : r1420_6 +# 1420| v1420_8(void) = Call[String] : func:r1420_4, this:r1420_2, 0:r1420_7 +# 1420| m1420_9(unknown) = ^CallSideEffect : ~m1419_16 +# 1420| m1420_10(unknown) = Chi : total:m1419_16, partial:m1420_9 +# 1420| v1420_11(void) = ^BufferReadSideEffect[0] : &:r1420_7, ~m1415_6 +# 1420| m1420_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_2 +# 1420| m1420_13(String) = Chi : total:m1420_3, partial:m1420_12 +# 1420| r1420_14(String) = Load[#temp1420:17] : &:r1420_2, m1420_13 +# 1420| v1420_15(void) = Call[acceptValue] : func:r1420_1, 0:r1420_14 +# 1420| m1420_16(unknown) = ^CallSideEffect : ~m1420_10 +# 1420| m1420_17(unknown) = Chi : total:m1420_10, partial:m1420_16 +# 1421| r1421_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1421| r1421_2(glval<String>) = VariableAddress[#temp1421:25] : +# 1421| m1421_3(String) = Uninitialized[#temp1421:25] : &:r1421_2 +# 1421| r1421_4(glval<unknown>) = FunctionAddress[String] : +# 1421| r1421_5(glval<char[4]>) = StringConstant["foo"] : +# 1421| r1421_6(char *) = Convert : r1421_5 +# 1421| v1421_7(void) = Call[String] : func:r1421_4, this:r1421_2, 0:r1421_6 +# 1421| m1421_8(unknown) = ^CallSideEffect : ~m1420_17 +# 1421| m1421_9(unknown) = Chi : total:m1420_17, partial:m1421_8 +# 1421| v1421_10(void) = ^BufferReadSideEffect[0] : &:r1421_6, ~m1414_3 +# 1421| m1421_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_2 +# 1421| m1421_12(String) = Chi : total:m1421_3, partial:m1421_11 +# 1421| r1421_13(String) = Load[#temp1421:25] : &:r1421_2, m1421_12 +# 1421| v1421_14(void) = Call[acceptValue] : func:r1421_1, 0:r1421_13 +# 1421| m1421_15(unknown) = ^CallSideEffect : ~m1421_9 +# 1421| m1421_16(unknown) = Chi : total:m1421_9, partial:m1421_15 +# 1422| r1422_1(glval<String>) = VariableAddress[#temp1422:5] : +# 1422| m1422_2(String) = Uninitialized[#temp1422:5] : &:r1422_1 +# 1422| r1422_3(glval<unknown>) = FunctionAddress[String] : +# 1422| v1422_4(void) = Call[String] : func:r1422_3, this:r1422_1 +# 1422| m1422_5(unknown) = ^CallSideEffect : ~m1421_16 +# 1422| m1422_6(unknown) = Chi : total:m1421_16, partial:m1422_5 +# 1422| m1422_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_1 +# 1422| m1422_8(String) = Chi : total:m1422_2, partial:m1422_7 +# 1422| r1422_9(glval<String>) = Convert : r1422_1 +# 1422| r1422_10(glval<unknown>) = FunctionAddress[c_str] : +# 1422| r1422_11(char *) = Call[c_str] : func:r1422_10, this:r1422_9 +# 1422| m1422_12(unknown) = ^CallSideEffect : ~m1422_6 +# 1422| m1422_13(unknown) = Chi : total:m1422_6, partial:m1422_12 +# 1422| v1422_14(void) = ^IndirectReadSideEffect[-1] : &:r1422_9, m1422_8 +# 1423| r1423_1(glval<String>) = VariableAddress[#temp1423:5] : +# 1423| r1423_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1423| r1423_3(String) = Call[returnValue] : func:r1423_2 +# 1423| m1423_4(unknown) = ^CallSideEffect : ~m1422_13 +# 1423| m1423_5(unknown) = Chi : total:m1422_13, partial:m1423_4 +# 1423| m1423_6(String) = Store[#temp1423:5] : &:r1423_1, r1423_3 +# 1423| r1423_7(glval<String>) = Convert : r1423_1 +# 1423| r1423_8(glval<unknown>) = FunctionAddress[c_str] : +# 1423| r1423_9(char *) = Call[c_str] : func:r1423_8, this:r1423_7 +# 1423| m1423_10(unknown) = ^CallSideEffect : ~m1423_5 +# 1423| m1423_11(unknown) = Chi : total:m1423_5, partial:m1423_10 +# 1423| v1423_12(void) = ^IndirectReadSideEffect[-1] : &:r1423_7, m1423_6 +# 1425| r1425_1(glval<String>) = VariableAddress[#temp1425:5] : +# 1425| r1425_2(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1425| r1425_3(String) = Call[defaultConstruct] : func:r1425_2 +# 1425| m1425_4(unknown) = ^CallSideEffect : ~m1423_11 +# 1425| m1425_5(unknown) = Chi : total:m1423_11, partial:m1425_4 +# 1425| m1425_6(String) = Store[#temp1425:5] : &:r1425_1, r1425_3 +# 1426| v1426_1(void) = NoOp : +# 1426| r1426_2(glval<String>) = VariableAddress[s] : +# 1426| r1426_3(glval<unknown>) = FunctionAddress[~String] : +# 1426| v1426_4(void) = Call[~String] : func:r1426_3, this:r1426_2 +# 1426| m1426_5(unknown) = ^CallSideEffect : ~m1425_5 +# 1426| m1426_6(unknown) = Chi : total:m1425_5, partial:m1426_5 +# 1426| v1426_7(void) = ^IndirectReadSideEffect[-1] : &:r1426_2, m1415_6 +# 1426| m1426_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_2 +# 1426| m1426_9(String) = Chi : total:m1415_6, partial:m1426_8 +# 1414| v1414_5(void) = ReturnVoid : +# 1414| v1414_6(void) = AliasedUse : ~m1426_6 +# 1414| v1414_7(void) = ExitFunction : + +# 1428| void temporary_destructor_only() +# 1428| Block 0 +# 1428| v1428_1(void) = EnterFunction : +# 1428| m1428_2(unknown) = AliasedDefinition : +# 1428| m1428_3(unknown) = InitializeNonLocal : +# 1428| m1428_4(unknown) = Chi : total:m1428_2, partial:m1428_3 +# 1429| r1429_1(glval<destructor_only>) = VariableAddress[d] : +# 1429| r1429_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1429| r1429_3(destructor_only) = Call[returnValue] : func:r1429_2 +# 1429| m1429_4(unknown) = ^CallSideEffect : ~m1428_4 +# 1429| m1429_5(unknown) = Chi : total:m1428_4, partial:m1429_4 +# 1429| m1429_6(destructor_only) = Store[d] : &:r1429_1, r1429_3 +# 1430| r1430_1(glval<destructor_only &>) = VariableAddress[rd] : +# 1430| r1430_2(glval<destructor_only>) = VariableAddress[#temp1430:33] : +# 1430| r1430_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1430| r1430_4(destructor_only) = Call[returnValue] : func:r1430_3 +# 1430| m1430_5(unknown) = ^CallSideEffect : ~m1429_5 +# 1430| m1430_6(unknown) = Chi : total:m1429_5, partial:m1430_5 +# 1430| m1430_7(destructor_only) = Store[#temp1430:33] : &:r1430_2, r1430_4 +# 1430| r1430_8(glval<destructor_only>) = Convert : r1430_2 +# 1430| r1430_9(destructor_only &) = CopyValue : r1430_8 +# 1430| m1430_10(destructor_only &) = Store[rd] : &:r1430_1, r1430_9 +# 1431| r1431_1(glval<destructor_only>) = VariableAddress[d2] : +# 1431| m1431_2(destructor_only) = Uninitialized[d2] : &:r1431_1 +# 1432| r1432_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1432| r1432_2(glval<destructor_only>) = VariableAddress[d] : +# 1432| r1432_3(glval<destructor_only>) = Convert : r1432_2 +# 1432| r1432_4(destructor_only &) = CopyValue : r1432_3 +# 1432| v1432_5(void) = Call[acceptRef] : func:r1432_1, 0:r1432_4 +# 1432| m1432_6(unknown) = ^CallSideEffect : ~m1430_6 +# 1432| m1432_7(unknown) = Chi : total:m1430_6, partial:m1432_6 +# 1432| v1432_8(void) = ^BufferReadSideEffect[0] : &:r1432_4, ~m1429_6 +# 1433| r1433_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1433| r1433_2(glval<destructor_only>) = VariableAddress[#temp1433:17] : +# 1433| r1433_3(glval<destructor_only>) = VariableAddress[d] : +# 1433| r1433_4(destructor_only) = Load[d] : &:r1433_3, m1429_6 +# 1433| m1433_5(destructor_only) = Store[#temp1433:17] : &:r1433_2, r1433_4 +# 1433| r1433_6(destructor_only) = Load[#temp1433:17] : &:r1433_2, m1433_5 +# 1433| v1433_7(void) = Call[acceptValue] : func:r1433_1, 0:r1433_6 +# 1433| m1433_8(unknown) = ^CallSideEffect : ~m1432_7 +# 1433| m1433_9(unknown) = Chi : total:m1432_7, partial:m1433_8 +# 1434| r1434_1(glval<destructor_only>) = VariableAddress[#temp1434:5] : +# 1434| r1434_2(destructor_only) = Constant[0] : +# 1434| m1434_3(destructor_only) = Store[#temp1434:5] : &:r1434_1, r1434_2 +# 1434| r1434_4(glval<unknown>) = FunctionAddress[method] : +# 1434| v1434_5(void) = Call[method] : func:r1434_4, this:r1434_1 +# 1434| m1434_6(unknown) = ^CallSideEffect : ~m1433_9 +# 1434| m1434_7(unknown) = Chi : total:m1433_9, partial:m1434_6 +# 1434| v1434_8(void) = ^IndirectReadSideEffect[-1] : &:r1434_1, m1434_3 +# 1434| m1434_9(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1434_1 +# 1434| m1434_10(destructor_only) = Chi : total:m1434_3, partial:m1434_9 +# 1435| r1435_1(glval<destructor_only>) = VariableAddress[#temp1435:5] : +# 1435| r1435_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1435| r1435_3(destructor_only) = Call[returnValue] : func:r1435_2 +# 1435| m1435_4(unknown) = ^CallSideEffect : ~m1434_7 +# 1435| m1435_5(unknown) = Chi : total:m1434_7, partial:m1435_4 +# 1435| m1435_6(destructor_only) = Store[#temp1435:5] : &:r1435_1, r1435_3 +# 1435| r1435_7(glval<unknown>) = FunctionAddress[method] : +# 1435| v1435_8(void) = Call[method] : func:r1435_7, this:r1435_1 +# 1435| m1435_9(unknown) = ^CallSideEffect : ~m1435_5 +# 1435| m1435_10(unknown) = Chi : total:m1435_5, partial:m1435_9 +# 1435| v1435_11(void) = ^IndirectReadSideEffect[-1] : &:r1435_1, m1435_6 +# 1435| m1435_12(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_1 +# 1435| m1435_13(destructor_only) = Chi : total:m1435_6, partial:m1435_12 +# 1437| r1437_1(glval<destructor_only>) = VariableAddress[#temp1437:5] : +# 1437| r1437_2(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1437| r1437_3(destructor_only) = Call[defaultConstruct] : func:r1437_2 +# 1437| m1437_4(unknown) = ^CallSideEffect : ~m1435_10 +# 1437| m1437_5(unknown) = Chi : total:m1435_10, partial:m1437_4 +# 1437| m1437_6(destructor_only) = Store[#temp1437:5] : &:r1437_1, r1437_3 +# 1438| v1438_1(void) = NoOp : +# 1438| r1438_2(glval<destructor_only>) = VariableAddress[d2] : +# 1438| r1438_3(glval<unknown>) = FunctionAddress[~destructor_only] : +# 1438| v1438_4(void) = Call[~destructor_only] : func:r1438_3, this:r1438_2 +# 1438| m1438_5(unknown) = ^CallSideEffect : ~m1437_5 +# 1438| m1438_6(unknown) = Chi : total:m1437_5, partial:m1438_5 +# 1438| v1438_7(void) = ^IndirectReadSideEffect[-1] : &:r1438_2, m1431_2 +# 1438| m1438_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_2 +# 1438| m1438_9(destructor_only) = Chi : total:m1431_2, partial:m1438_8 +# 1438| r1438_10(glval<destructor_only>) = VariableAddress[d] : +# 1438| r1438_11(glval<unknown>) = FunctionAddress[~destructor_only] : +# 1438| v1438_12(void) = Call[~destructor_only] : func:r1438_11, this:r1438_10 +# 1438| m1438_13(unknown) = ^CallSideEffect : ~m1438_6 +# 1438| m1438_14(unknown) = Chi : total:m1438_6, partial:m1438_13 +# 1438| v1438_15(void) = ^IndirectReadSideEffect[-1] : &:r1438_10, m1429_6 +# 1438| m1438_16(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_10 +# 1438| m1438_17(destructor_only) = Chi : total:m1429_6, partial:m1438_16 +# 1428| v1428_5(void) = ReturnVoid : +# 1428| v1428_6(void) = AliasedUse : ~m1438_14 +# 1428| v1428_7(void) = ExitFunction : + +# 1440| void temporary_copy_constructor() +# 1440| Block 0 +# 1440| v1440_1(void) = EnterFunction : +# 1440| m1440_2(unknown) = AliasedDefinition : +# 1440| m1440_3(unknown) = InitializeNonLocal : +# 1440| m1440_4(unknown) = Chi : total:m1440_2, partial:m1440_3 +# 1441| r1441_1(glval<copy_constructor>) = VariableAddress[d] : +# 1441| r1441_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1441| r1441_3(copy_constructor) = Call[returnValue] : func:r1441_2 +# 1441| m1441_4(unknown) = ^CallSideEffect : ~m1440_4 +# 1441| m1441_5(unknown) = Chi : total:m1440_4, partial:m1441_4 +# 1441| m1441_6(copy_constructor) = Store[d] : &:r1441_1, r1441_3 +# 1442| r1442_1(glval<copy_constructor &>) = VariableAddress[rd] : +# 1442| r1442_2(glval<copy_constructor>) = VariableAddress[#temp1442:34] : +# 1442| r1442_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1442| r1442_4(copy_constructor) = Call[returnValue] : func:r1442_3 +# 1442| m1442_5(unknown) = ^CallSideEffect : ~m1441_5 +# 1442| m1442_6(unknown) = Chi : total:m1441_5, partial:m1442_5 +# 1442| m1442_7(copy_constructor) = Store[#temp1442:34] : &:r1442_2, r1442_4 +# 1442| r1442_8(glval<copy_constructor>) = Convert : r1442_2 +# 1442| r1442_9(copy_constructor &) = CopyValue : r1442_8 +# 1442| m1442_10(copy_constructor &) = Store[rd] : &:r1442_1, r1442_9 +# 1443| r1443_1(glval<copy_constructor>) = VariableAddress[d2] : +# 1443| m1443_2(copy_constructor) = Uninitialized[d2] : &:r1443_1 +# 1443| r1443_3(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1443| v1443_4(void) = Call[copy_constructor] : func:r1443_3, this:r1443_1 +# 1443| m1443_5(unknown) = ^CallSideEffect : ~m1442_6 +# 1443| m1443_6(unknown) = Chi : total:m1442_6, partial:m1443_5 +# 1443| m1443_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1443_1 +# 1443| m1443_8(copy_constructor) = Chi : total:m1443_2, partial:m1443_7 +# 1444| r1444_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1444| r1444_2(glval<copy_constructor>) = VariableAddress[d] : +# 1444| r1444_3(glval<copy_constructor>) = Convert : r1444_2 +# 1444| r1444_4(copy_constructor &) = CopyValue : r1444_3 +# 1444| v1444_5(void) = Call[acceptRef] : func:r1444_1, 0:r1444_4 +# 1444| m1444_6(unknown) = ^CallSideEffect : ~m1443_6 +# 1444| m1444_7(unknown) = Chi : total:m1443_6, partial:m1444_6 +# 1444| v1444_8(void) = ^BufferReadSideEffect[0] : &:r1444_4, ~m1441_6 +# 1445| r1445_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1445| r1445_2(glval<copy_constructor>) = VariableAddress[#temp1445:17] : +# 1445| m1445_3(copy_constructor) = Uninitialized[#temp1445:17] : &:r1445_2 +# 1445| r1445_4(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1445| r1445_5(glval<copy_constructor>) = VariableAddress[d] : +# 1445| r1445_6(glval<copy_constructor>) = Convert : r1445_5 +# 1445| r1445_7(copy_constructor &) = CopyValue : r1445_6 +# 1445| v1445_8(void) = Call[copy_constructor] : func:r1445_4, this:r1445_2, 0:r1445_7 +# 1445| m1445_9(unknown) = ^CallSideEffect : ~m1444_7 +# 1445| m1445_10(unknown) = Chi : total:m1444_7, partial:m1445_9 +# 1445| v1445_11(void) = ^BufferReadSideEffect[0] : &:r1445_7, ~m1441_6 +# 1445| m1445_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1445_2 +# 1445| m1445_13(copy_constructor) = Chi : total:m1445_3, partial:m1445_12 +# 1445| r1445_14(copy_constructor) = Load[#temp1445:17] : &:r1445_2, m1445_13 +# 1445| v1445_15(void) = Call[acceptValue] : func:r1445_1, 0:r1445_14 +# 1445| m1445_16(unknown) = ^CallSideEffect : ~m1445_10 +# 1445| m1445_17(unknown) = Chi : total:m1445_10, partial:m1445_16 +# 1446| r1446_1(glval<copy_constructor>) = VariableAddress[#temp1446:5] : +# 1446| m1446_2(copy_constructor) = Uninitialized[#temp1446:5] : &:r1446_1 +# 1446| r1446_3(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1446| v1446_4(void) = Call[copy_constructor] : func:r1446_3, this:r1446_1 +# 1446| m1446_5(unknown) = ^CallSideEffect : ~m1445_17 +# 1446| m1446_6(unknown) = Chi : total:m1445_17, partial:m1446_5 +# 1446| m1446_7(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 +# 1446| m1446_8(copy_constructor) = Chi : total:m1446_2, partial:m1446_7 +# 1446| r1446_9(glval<unknown>) = FunctionAddress[method] : +# 1446| v1446_10(void) = Call[method] : func:r1446_9, this:r1446_1 +# 1446| m1446_11(unknown) = ^CallSideEffect : ~m1446_6 +# 1446| m1446_12(unknown) = Chi : total:m1446_6, partial:m1446_11 +# 1446| v1446_13(void) = ^IndirectReadSideEffect[-1] : &:r1446_1, m1446_8 +# 1446| m1446_14(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 +# 1446| m1446_15(copy_constructor) = Chi : total:m1446_8, partial:m1446_14 +# 1447| r1447_1(glval<copy_constructor>) = VariableAddress[#temp1447:5] : +# 1447| r1447_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1447| r1447_3(copy_constructor) = Call[returnValue] : func:r1447_2 +# 1447| m1447_4(unknown) = ^CallSideEffect : ~m1446_12 +# 1447| m1447_5(unknown) = Chi : total:m1446_12, partial:m1447_4 +# 1447| m1447_6(copy_constructor) = Store[#temp1447:5] : &:r1447_1, r1447_3 +# 1447| r1447_7(glval<unknown>) = FunctionAddress[method] : +# 1447| v1447_8(void) = Call[method] : func:r1447_7, this:r1447_1 +# 1447| m1447_9(unknown) = ^CallSideEffect : ~m1447_5 +# 1447| m1447_10(unknown) = Chi : total:m1447_5, partial:m1447_9 +# 1447| v1447_11(void) = ^IndirectReadSideEffect[-1] : &:r1447_1, m1447_6 +# 1447| m1447_12(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1447_1 +# 1447| m1447_13(copy_constructor) = Chi : total:m1447_6, partial:m1447_12 +# 1448| r1448_1(glval<copy_constructor>) = VariableAddress[#temp1448:5] : +# 1448| r1448_2(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1448| r1448_3(copy_constructor) = Call[defaultConstruct] : func:r1448_2 +# 1448| m1448_4(unknown) = ^CallSideEffect : ~m1447_10 +# 1448| m1448_5(unknown) = Chi : total:m1447_10, partial:m1448_4 +# 1448| m1448_6(copy_constructor) = Store[#temp1448:5] : &:r1448_1, r1448_3 +# 1450| r1450_1(glval<int>) = VariableAddress[y] : +# 1450| r1450_2(glval<copy_constructor>) = VariableAddress[#temp1450:13] : +# 1450| r1450_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1450| r1450_4(copy_constructor) = Call[returnValue] : func:r1450_3 +# 1450| m1450_5(unknown) = ^CallSideEffect : ~m1448_5 +# 1450| m1450_6(unknown) = Chi : total:m1448_5, partial:m1450_5 +# 1450| m1450_7(copy_constructor) = Store[#temp1450:13] : &:r1450_2, r1450_4 +# 1450| r1450_8(glval<int>) = FieldAddress[y] : r1450_2 +# 1450| r1450_9(int) = Load[?] : &:r1450_8, ~m1450_7 +# 1450| m1450_10(int) = Store[y] : &:r1450_1, r1450_9 +# 1451| v1451_1(void) = NoOp : +# 1440| v1440_5(void) = ReturnVoid : +# 1440| v1440_6(void) = AliasedUse : ~m1450_6 +# 1440| v1440_7(void) = ExitFunction : + +# 1453| void temporary_point() +# 1453| Block 0 +# 1453| v1453_1(void) = EnterFunction : +# 1453| m1453_2(unknown) = AliasedDefinition : +# 1453| m1453_3(unknown) = InitializeNonLocal : +# 1453| m1453_4(unknown) = Chi : total:m1453_2, partial:m1453_3 +# 1454| r1454_1(glval<Point>) = VariableAddress[p] : +# 1454| r1454_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1454| r1454_3(Point) = Call[returnValue] : func:r1454_2 +# 1454| m1454_4(unknown) = ^CallSideEffect : ~m1453_4 +# 1454| m1454_5(unknown) = Chi : total:m1453_4, partial:m1454_4 +# 1454| m1454_6(Point) = Store[p] : &:r1454_1, r1454_3 +# 1455| r1455_1(glval<Point &>) = VariableAddress[rp] : +# 1455| r1455_2(glval<Point>) = VariableAddress[#temp1455:23] : +# 1455| r1455_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1455| r1455_4(Point) = Call[returnValue] : func:r1455_3 +# 1455| m1455_5(unknown) = ^CallSideEffect : ~m1454_5 +# 1455| m1455_6(unknown) = Chi : total:m1454_5, partial:m1455_5 +# 1455| m1455_7(Point) = Store[#temp1455:23] : &:r1455_2, r1455_4 +# 1455| r1455_8(glval<Point>) = Convert : r1455_2 +# 1455| r1455_9(Point &) = CopyValue : r1455_8 +# 1455| m1455_10(Point &) = Store[rp] : &:r1455_1, r1455_9 +# 1457| r1457_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1457| r1457_2(glval<Point>) = VariableAddress[p] : +# 1457| r1457_3(glval<Point>) = Convert : r1457_2 +# 1457| r1457_4(Point &) = CopyValue : r1457_3 +# 1457| v1457_5(void) = Call[acceptRef] : func:r1457_1, 0:r1457_4 +# 1457| m1457_6(unknown) = ^CallSideEffect : ~m1455_6 +# 1457| m1457_7(unknown) = Chi : total:m1455_6, partial:m1457_6 +# 1457| v1457_8(void) = ^BufferReadSideEffect[0] : &:r1457_4, ~m1454_6 +# 1458| r1458_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1458| r1458_2(glval<Point>) = VariableAddress[p] : +# 1458| r1458_3(Point) = Load[p] : &:r1458_2, m1454_6 +# 1458| v1458_4(void) = Call[acceptValue] : func:r1458_1, 0:r1458_3 +# 1458| m1458_5(unknown) = ^CallSideEffect : ~m1457_7 +# 1458| m1458_6(unknown) = Chi : total:m1457_7, partial:m1458_5 +# 1459| r1459_1(int) = Constant[0] : +# 1460| r1460_1(glval<int>) = VariableAddress[y] : +# 1460| r1460_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1460| r1460_3(Point) = Call[returnValue] : func:r1460_2 +# 1460| m1460_4(unknown) = ^CallSideEffect : ~m1458_6 +# 1460| m1460_5(unknown) = Chi : total:m1458_6, partial:m1460_4 +# 1460| r1460_6(glval<Point>) = VariableAddress[#temp1460:13] : +# 1460| m1460_7(Point) = Store[#temp1460:13] : &:r1460_6, r1460_3 +# 1460| r1460_8(glval<int>) = FieldAddress[y] : r1460_6 +# 1460| r1460_9(int) = Load[?] : &:r1460_8, ~m1460_7 +# 1460| m1460_10(int) = Store[y] : &:r1460_1, r1460_9 +# 1462| r1462_1(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1462| r1462_2(Point) = Call[defaultConstruct] : func:r1462_1 +# 1462| m1462_3(unknown) = ^CallSideEffect : ~m1460_5 +# 1462| m1462_4(unknown) = Chi : total:m1460_5, partial:m1462_3 +# 1463| v1463_1(void) = NoOp : +# 1453| v1453_5(void) = ReturnVoid : +# 1453| v1453_6(void) = AliasedUse : ~m1462_4 +# 1453| v1453_7(void) = ExitFunction : + +# 1470| void temporary_unusual_fields() +# 1470| Block 0 +# 1470| v1470_1(void) = EnterFunction : +# 1470| m1470_2(unknown) = AliasedDefinition : +# 1470| m1470_3(unknown) = InitializeNonLocal : +# 1470| m1470_4(unknown) = Chi : total:m1470_2, partial:m1470_3 +# 1471| r1471_1(glval<int &>) = VariableAddress[rx] : +# 1471| r1471_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1471| r1471_3(UnusualFields) = Call[returnValue] : func:r1471_2 +# 1471| m1471_4(unknown) = ^CallSideEffect : ~m1470_4 +# 1471| m1471_5(unknown) = Chi : total:m1470_4, partial:m1471_4 +# 1471| r1471_6(glval<UnusualFields>) = VariableAddress[#temp1471:21] : +# 1471| m1471_7(UnusualFields) = Store[#temp1471:21] : &:r1471_6, r1471_3 +# 1471| r1471_8(glval<int &>) = FieldAddress[r] : r1471_6 +# 1471| r1471_9(int &) = Load[?] : &:r1471_8, ~m1471_7 +# 1471| r1471_10(glval<int>) = CopyValue : r1471_9 +# 1471| r1471_11(glval<int>) = Convert : r1471_10 +# 1471| r1471_12(int &) = CopyValue : r1471_11 +# 1471| m1471_13(int &) = Store[rx] : &:r1471_1, r1471_12 +# 1472| r1472_1(glval<int>) = VariableAddress[x] : +# 1472| r1472_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1472| r1472_3(UnusualFields) = Call[returnValue] : func:r1472_2 +# 1472| m1472_4(unknown) = ^CallSideEffect : ~m1471_5 +# 1472| m1472_5(unknown) = Chi : total:m1471_5, partial:m1472_4 +# 1472| r1472_6(glval<UnusualFields>) = VariableAddress[#temp1472:13] : +# 1472| m1472_7(UnusualFields) = Store[#temp1472:13] : &:r1472_6, r1472_3 +# 1472| r1472_8(glval<int &>) = FieldAddress[r] : r1472_6 +# 1472| r1472_9(int &) = Load[?] : &:r1472_8, ~m1472_7 +# 1472| r1472_10(int) = Load[?] : &:r1472_9, ~m1472_5 +# 1472| m1472_11(int) = Store[x] : &:r1472_1, r1472_10 +# 1474| r1474_1(glval<float &>) = VariableAddress[rf] : +# 1474| r1474_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1474| r1474_3(UnusualFields) = Call[returnValue] : func:r1474_2 +# 1474| m1474_4(unknown) = ^CallSideEffect : ~m1472_5 +# 1474| m1474_5(unknown) = Chi : total:m1472_5, partial:m1474_4 +# 1474| r1474_6(glval<UnusualFields>) = VariableAddress[#temp1474:23] : +# 1474| m1474_7(UnusualFields) = Store[#temp1474:23] : &:r1474_6, r1474_3 +# 1474| r1474_8(glval<float[10]>) = FieldAddress[a] : r1474_6 +# 1474| r1474_9(float *) = Convert : r1474_8 +# 1474| r1474_10(int) = Constant[3] : +# 1474| r1474_11(glval<float>) = PointerAdd[4] : r1474_9, r1474_10 +# 1474| r1474_12(glval<float>) = Convert : r1474_11 +# 1474| r1474_13(float &) = CopyValue : r1474_12 +# 1474| m1474_14(float &) = Store[rf] : &:r1474_1, r1474_13 +# 1475| r1475_1(glval<float>) = VariableAddress[f] : +# 1475| r1475_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1475| r1475_3(UnusualFields) = Call[returnValue] : func:r1475_2 +# 1475| m1475_4(unknown) = ^CallSideEffect : ~m1474_5 +# 1475| m1475_5(unknown) = Chi : total:m1474_5, partial:m1475_4 +# 1475| r1475_6(glval<UnusualFields>) = VariableAddress[#temp1475:15] : +# 1475| m1475_7(UnusualFields) = Store[#temp1475:15] : &:r1475_6, r1475_3 +# 1475| r1475_8(glval<float[10]>) = FieldAddress[a] : r1475_6 +# 1475| r1475_9(float *) = Convert : r1475_8 +# 1475| r1475_10(int) = Constant[5] : +# 1475| r1475_11(glval<float>) = PointerAdd[4] : r1475_9, r1475_10 +# 1475| r1475_12(float) = Load[?] : &:r1475_11, ~m1475_7 +# 1475| m1475_13(float) = Store[f] : &:r1475_1, r1475_12 +# 1476| v1476_1(void) = NoOp : +# 1470| v1470_5(void) = ReturnVoid : +# 1470| v1470_6(void) = AliasedUse : ~m1475_5 +# 1470| v1470_7(void) = ExitFunction : + +# 1492| void temporary_hierarchy() +# 1492| Block 0 +# 1492| v1492_1(void) = EnterFunction : +# 1492| m1492_2(unknown) = AliasedDefinition : +# 1492| m1492_3(unknown) = InitializeNonLocal : +# 1492| m1492_4(unknown) = Chi : total:m1492_2, partial:m1492_3 +# 1493| r1493_1(glval<POD_Base>) = VariableAddress[b] : #-----| r0_1(glval<POD_Middle>) = VariableAddress[#temp0:0] : -# 1446| r1446_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1446| r1446_3(POD_Middle) = Call[returnValue] : func:r1446_2 -# 1446| m1446_4(unknown) = ^CallSideEffect : ~m1445_4 -# 1446| m1446_5(unknown) = Chi : total:m1445_4, partial:m1446_4 -# 1446| m1446_6(POD_Middle) = Store[#temp0:0] : &:r0_1, r1446_3 +# 1493| r1493_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1493| r1493_3(POD_Middle) = Call[returnValue] : func:r1493_2 +# 1493| m1493_4(unknown) = ^CallSideEffect : ~m1492_4 +# 1493| m1493_5(unknown) = Chi : total:m1492_4, partial:m1493_4 +# 1493| m1493_6(POD_Middle) = Store[#temp0:0] : &:r0_1, r1493_3 #-----| r0_2(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 -#-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m1446_6 -#-----| m0_4(POD_Base) = Store[b] : &:r1446_1, r0_3 -# 1447| r1447_1(glval<POD_Derived>) = VariableAddress[#temp1447:9] : -# 1447| r1447_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1447| r1447_3(POD_Derived) = Call[returnValue] : func:r1447_2 -# 1447| m1447_4(unknown) = ^CallSideEffect : ~m1446_5 -# 1447| m1447_5(unknown) = Chi : total:m1446_5, partial:m1447_4 -# 1447| m1447_6(POD_Derived) = Store[#temp1447:9] : &:r1447_1, r1447_3 -# 1447| r1447_7(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1447_1 -# 1447| r1447_8(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1447_7 -# 1447| r1447_9(POD_Base) = Load[?] : &:r1447_8, ~m1447_6 -# 1447| r1447_10(glval<POD_Base>) = VariableAddress[b] : -# 1447| m1447_11(POD_Base) = Store[b] : &:r1447_10, r1447_9 -# 1448| r1448_1(glval<int>) = VariableAddress[x] : +#-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m1493_6 +#-----| m0_4(POD_Base) = Store[b] : &:r1493_1, r0_3 +# 1494| r1494_1(glval<POD_Derived>) = VariableAddress[#temp1494:9] : +# 1494| r1494_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1494| r1494_3(POD_Derived) = Call[returnValue] : func:r1494_2 +# 1494| m1494_4(unknown) = ^CallSideEffect : ~m1493_5 +# 1494| m1494_5(unknown) = Chi : total:m1493_5, partial:m1494_4 +# 1494| m1494_6(POD_Derived) = Store[#temp1494:9] : &:r1494_1, r1494_3 +# 1494| r1494_7(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1494_1 +# 1494| r1494_8(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1494_7 +# 1494| r1494_9(POD_Base) = Load[?] : &:r1494_8, ~m1494_6 +# 1494| r1494_10(glval<POD_Base>) = VariableAddress[b] : +# 1494| m1494_11(POD_Base) = Store[b] : &:r1494_10, r1494_9 +# 1495| r1495_1(glval<int>) = VariableAddress[x] : #-----| r0_5(glval<POD_Derived>) = VariableAddress[#temp0:0] : -# 1448| r1448_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1448| r1448_3(POD_Derived) = Call[returnValue] : func:r1448_2 -# 1448| m1448_4(unknown) = ^CallSideEffect : ~m1447_5 -# 1448| m1448_5(unknown) = Chi : total:m1447_5, partial:m1448_4 -# 1448| m1448_6(POD_Derived) = Store[#temp0:0] : &:r0_5, r1448_3 +# 1495| r1495_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1495| r1495_3(POD_Derived) = Call[returnValue] : func:r1495_2 +# 1495| m1495_4(unknown) = ^CallSideEffect : ~m1494_5 +# 1495| m1495_5(unknown) = Chi : total:m1494_5, partial:m1495_4 +# 1495| m1495_6(POD_Derived) = Store[#temp0:0] : &:r0_5, r1495_3 #-----| r0_6(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 #-----| r0_7(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 -# 1448| r1448_7(glval<int>) = FieldAddress[x] : r0_7 -# 1448| r1448_8(int) = Load[?] : &:r1448_7, ~m1448_6 -# 1448| m1448_9(int) = Store[x] : &:r1448_1, r1448_8 -# 1449| r1449_1(glval<float>) = VariableAddress[f] : +# 1495| r1495_7(glval<int>) = FieldAddress[x] : r0_7 +# 1495| r1495_8(int) = Load[?] : &:r1495_7, ~m1495_6 +# 1495| m1495_9(int) = Store[x] : &:r1495_1, r1495_8 +# 1496| r1496_1(glval<float>) = VariableAddress[f] : #-----| r0_8(glval<POD_Derived>) = VariableAddress[#temp0:0] : -# 1449| r1449_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1449| r1449_3(POD_Derived) = Call[returnValue] : func:r1449_2 -# 1449| m1449_4(unknown) = ^CallSideEffect : ~m1448_5 -# 1449| m1449_5(unknown) = Chi : total:m1448_5, partial:m1449_4 -# 1449| m1449_6(POD_Derived) = Store[#temp0:0] : &:r0_8, r1449_3 +# 1496| r1496_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1496| r1496_3(POD_Derived) = Call[returnValue] : func:r1496_2 +# 1496| m1496_4(unknown) = ^CallSideEffect : ~m1495_5 +# 1496| m1496_5(unknown) = Chi : total:m1495_5, partial:m1496_4 +# 1496| m1496_6(POD_Derived) = Store[#temp0:0] : &:r0_8, r1496_3 #-----| r0_9(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_8 #-----| r0_10(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_9 #-----| r0_11(glval<POD_Base>) = Convert : r0_10 -# 1449| r1449_7(glval<unknown>) = FunctionAddress[f] : -# 1449| r1449_8(float) = Call[f] : func:r1449_7, this:r0_11 -# 1449| m1449_9(unknown) = ^CallSideEffect : ~m1449_5 -# 1449| m1449_10(unknown) = Chi : total:m1449_5, partial:m1449_9 -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1449_6 -# 1449| m1449_11(float) = Store[f] : &:r1449_1, r1449_8 -# 1450| v1450_1(void) = NoOp : -# 1445| v1445_5(void) = ReturnVoid : -# 1445| v1445_6(void) = AliasedUse : ~m1449_10 -# 1445| v1445_7(void) = ExitFunction : - -# 1453| void Inheritance_Test_B::~Inheritance_Test_B() -# 1453| Block 0 -# 1453| v1453_1(void) = EnterFunction : -# 1453| m1453_2(unknown) = AliasedDefinition : -# 1453| m1453_3(unknown) = InitializeNonLocal : -# 1453| m1453_4(unknown) = Chi : total:m1453_2, partial:m1453_3 -# 1453| r1453_5(glval<unknown>) = VariableAddress[#this] : -# 1453| m1453_6(glval<Inheritance_Test_B>) = InitializeParameter[#this] : &:r1453_5 -# 1453| r1453_7(glval<Inheritance_Test_B>) = Load[#this] : &:r1453_5, m1453_6 -# 1453| m1453_8(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1453_7 -# 1453| v1453_9(void) = NoOp : -# 1453| v1453_10(void) = ReturnIndirection[#this] : &:r1453_7, m1453_8 -# 1453| v1453_11(void) = ReturnVoid : -# 1453| v1453_12(void) = AliasedUse : m1453_3 -# 1453| v1453_13(void) = ExitFunction : - -# 1459| void Inheritance_Test_A::Inheritance_Test_A() -# 1459| Block 0 -# 1459| v1459_1(void) = EnterFunction : -# 1459| m1459_2(unknown) = AliasedDefinition : -# 1459| m1459_3(unknown) = InitializeNonLocal : -# 1459| m1459_4(unknown) = Chi : total:m1459_2, partial:m1459_3 -# 1459| r1459_5(glval<unknown>) = VariableAddress[#this] : -# 1459| m1459_6(glval<Inheritance_Test_A>) = InitializeParameter[#this] : &:r1459_5 -# 1459| r1459_7(glval<Inheritance_Test_A>) = Load[#this] : &:r1459_5, m1459_6 -# 1459| m1459_8(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1459_7 -# 1459| r1459_9(glval<int>) = FieldAddress[x] : m1459_6 -# 1459| r1459_10(int) = Constant[42] : -# 1459| m1459_11(int) = Store[?] : &:r1459_9, r1459_10 -# 1459| m1459_12(unknown) = Chi : total:m1459_8, partial:m1459_11 -# 1460| r1460_1(int) = Constant[3] : -# 1460| r1460_2(glval<unknown>) = VariableAddress[#this] : -# 1460| r1460_3(Inheritance_Test_A *) = Load[#this] : &:r1460_2, m1459_6 -# 1460| r1460_4(glval<int>) = FieldAddress[y] : r1460_3 -# 1460| m1460_5(int) = Store[?] : &:r1460_4, r1460_1 -# 1460| m1460_6(unknown) = Chi : total:m1459_12, partial:m1460_5 -# 1461| v1461_1(void) = NoOp : -# 1459| v1459_13(void) = ReturnIndirection[#this] : &:r1459_7, m1460_6 -# 1459| v1459_14(void) = ReturnVoid : -# 1459| v1459_15(void) = AliasedUse : m1459_3 -# 1459| v1459_16(void) = ExitFunction : - -# 1464| void array_structured_binding() -# 1464| Block 0 -# 1464| v1464_1(void) = EnterFunction : -# 1464| m1464_2(unknown) = AliasedDefinition : -# 1464| m1464_3(unknown) = InitializeNonLocal : -# 1464| m1464_4(unknown) = Chi : total:m1464_2, partial:m1464_3 -# 1465| r1465_1(glval<int[2]>) = VariableAddress[xs] : -# 1465| m1465_2(int[2]) = Uninitialized[xs] : &:r1465_1 -# 1465| r1465_3(int) = Constant[0] : -# 1465| r1465_4(glval<int>) = PointerAdd[4] : r1465_1, r1465_3 -# 1465| r1465_5(int) = Constant[1] : -# 1465| m1465_6(int) = Store[?] : &:r1465_4, r1465_5 -# 1465| m1465_7(int[2]) = Chi : total:m1465_2, partial:m1465_6 -# 1465| r1465_8(int) = Constant[1] : -# 1465| r1465_9(glval<int>) = PointerAdd[4] : r1465_1, r1465_8 -# 1465| r1465_10(int) = Constant[2] : -# 1465| m1465_11(int) = Store[?] : &:r1465_9, r1465_10 -# 1465| m1465_12(int[2]) = Chi : total:m1465_7, partial:m1465_11 -# 1468| r1468_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : -# 1468| r1468_2(glval<int[2]>) = VariableAddress[xs] : -# 1468| r1468_3(int(&)[2]) = CopyValue : r1468_2 -# 1468| m1468_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1468_1, r1468_3 -# 1468| r1468_5(glval<int &>) = VariableAddress[x0] : +# 1496| r1496_7(glval<unknown>) = FunctionAddress[f] : +# 1496| r1496_8(float) = Call[f] : func:r1496_7, this:r0_11 +# 1496| m1496_9(unknown) = ^CallSideEffect : ~m1496_5 +# 1496| m1496_10(unknown) = Chi : total:m1496_5, partial:m1496_9 +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1496_6 +# 1496| m1496_11(float) = Store[f] : &:r1496_1, r1496_8 +# 1497| v1497_1(void) = NoOp : +# 1492| v1492_5(void) = ReturnVoid : +# 1492| v1492_6(void) = AliasedUse : ~m1496_10 +# 1492| v1492_7(void) = ExitFunction : + +# 1500| void Inheritance_Test_B::~Inheritance_Test_B() +# 1500| Block 0 +# 1500| v1500_1(void) = EnterFunction : +# 1500| m1500_2(unknown) = AliasedDefinition : +# 1500| m1500_3(unknown) = InitializeNonLocal : +# 1500| m1500_4(unknown) = Chi : total:m1500_2, partial:m1500_3 +# 1500| r1500_5(glval<unknown>) = VariableAddress[#this] : +# 1500| m1500_6(glval<Inheritance_Test_B>) = InitializeParameter[#this] : &:r1500_5 +# 1500| r1500_7(glval<Inheritance_Test_B>) = Load[#this] : &:r1500_5, m1500_6 +# 1500| m1500_8(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1500_7 +# 1500| v1500_9(void) = NoOp : +# 1500| v1500_10(void) = ReturnIndirection[#this] : &:r1500_7, m1500_8 +# 1500| v1500_11(void) = ReturnVoid : +# 1500| v1500_12(void) = AliasedUse : m1500_3 +# 1500| v1500_13(void) = ExitFunction : + +# 1506| void Inheritance_Test_A::Inheritance_Test_A() +# 1506| Block 0 +# 1506| v1506_1(void) = EnterFunction : +# 1506| m1506_2(unknown) = AliasedDefinition : +# 1506| m1506_3(unknown) = InitializeNonLocal : +# 1506| m1506_4(unknown) = Chi : total:m1506_2, partial:m1506_3 +# 1506| r1506_5(glval<unknown>) = VariableAddress[#this] : +# 1506| m1506_6(glval<Inheritance_Test_A>) = InitializeParameter[#this] : &:r1506_5 +# 1506| r1506_7(glval<Inheritance_Test_A>) = Load[#this] : &:r1506_5, m1506_6 +# 1506| m1506_8(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1506_7 +# 1506| r1506_9(glval<int>) = FieldAddress[x] : m1506_6 +# 1506| r1506_10(int) = Constant[42] : +# 1506| m1506_11(int) = Store[?] : &:r1506_9, r1506_10 +# 1506| m1506_12(unknown) = Chi : total:m1506_8, partial:m1506_11 +# 1507| r1507_1(int) = Constant[3] : +# 1507| r1507_2(glval<unknown>) = VariableAddress[#this] : +# 1507| r1507_3(Inheritance_Test_A *) = Load[#this] : &:r1507_2, m1506_6 +# 1507| r1507_4(glval<int>) = FieldAddress[y] : r1507_3 +# 1507| m1507_5(int) = Store[?] : &:r1507_4, r1507_1 +# 1507| m1507_6(unknown) = Chi : total:m1506_12, partial:m1507_5 +# 1508| v1508_1(void) = NoOp : +# 1506| v1506_13(void) = ReturnIndirection[#this] : &:r1506_7, m1507_6 +# 1506| v1506_14(void) = ReturnVoid : +# 1506| v1506_15(void) = AliasedUse : m1506_3 +# 1506| v1506_16(void) = ExitFunction : + +# 1511| void array_structured_binding() +# 1511| Block 0 +# 1511| v1511_1(void) = EnterFunction : +# 1511| m1511_2(unknown) = AliasedDefinition : +# 1511| m1511_3(unknown) = InitializeNonLocal : +# 1511| m1511_4(unknown) = Chi : total:m1511_2, partial:m1511_3 +# 1512| r1512_1(glval<int[2]>) = VariableAddress[xs] : +# 1512| m1512_2(int[2]) = Uninitialized[xs] : &:r1512_1 +# 1512| r1512_3(int) = Constant[0] : +# 1512| r1512_4(glval<int>) = PointerAdd[4] : r1512_1, r1512_3 +# 1512| r1512_5(int) = Constant[1] : +# 1512| m1512_6(int) = Store[?] : &:r1512_4, r1512_5 +# 1512| m1512_7(int[2]) = Chi : total:m1512_2, partial:m1512_6 +# 1512| r1512_8(int) = Constant[1] : +# 1512| r1512_9(glval<int>) = PointerAdd[4] : r1512_1, r1512_8 +# 1512| r1512_10(int) = Constant[2] : +# 1512| m1512_11(int) = Store[?] : &:r1512_9, r1512_10 +# 1512| m1512_12(int[2]) = Chi : total:m1512_7, partial:m1512_11 +# 1515| r1515_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : +# 1515| r1515_2(glval<int[2]>) = VariableAddress[xs] : +# 1515| r1515_3(int(&)[2]) = CopyValue : r1515_2 +# 1515| m1515_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1515_1, r1515_3 +# 1515| r1515_5(glval<int &>) = VariableAddress[x0] : #-----| r0_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : -#-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, m1468_4 +#-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, m1515_4 #-----| r0_3(glval<int[2]>) = CopyValue : r0_2 #-----| r0_4(int *) = Convert : r0_3 #-----| r0_5(unsigned long) = Constant[0] : #-----| r0_6(glval<int>) = PointerAdd[4] : r0_4, r0_5 -#-----| m0_7(int &) = Store[x0] : &:r1468_5, r0_6 -# 1468| r1468_6(glval<int &>) = VariableAddress[x1] : +#-----| m0_7(int &) = Store[x0] : &:r1515_5, r0_6 +# 1515| r1515_6(glval<int &>) = VariableAddress[x1] : #-----| r0_8(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : -#-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, m1468_4 +#-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, m1515_4 #-----| r0_10(glval<int[2]>) = CopyValue : r0_9 #-----| r0_11(int *) = Convert : r0_10 #-----| r0_12(unsigned long) = Constant[1] : #-----| r0_13(glval<int>) = PointerAdd[4] : r0_11, r0_12 -#-----| m0_14(int &) = Store[x1] : &:r1468_6, r0_13 -# 1469| r1469_1(int) = Constant[3] : -# 1469| r1469_2(glval<int &>) = VariableAddress[x1] : -# 1469| r1469_3(int &) = Load[x1] : &:r1469_2, m0_14 -# 1469| m1469_4(int) = Store[?] : &:r1469_3, r1469_1 -# 1469| m1469_5(int[2]) = Chi : total:m1465_12, partial:m1469_4 -# 1470| r1470_1(glval<int &>) = VariableAddress[rx1] : -# 1470| r1470_2(glval<int &>) = VariableAddress[x1] : -# 1470| r1470_3(int &) = Load[x1] : &:r1470_2, m0_14 -# 1470| r1470_4(int &) = CopyValue : r1470_3 -# 1470| m1470_5(int &) = Store[rx1] : &:r1470_1, r1470_4 -# 1471| r1471_1(glval<int>) = VariableAddress[x] : -# 1471| r1471_2(glval<int &>) = VariableAddress[x1] : -# 1471| r1471_3(int &) = Load[x1] : &:r1471_2, m0_14 -# 1471| r1471_4(int) = Load[?] : &:r1471_3, m1469_4 -# 1471| m1471_5(int) = Store[x] : &:r1471_1, r1471_4 -# 1475| r1475_1(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : -# 1475| r1475_2(glval<int[2]>) = VariableAddress[xs] : -# 1475| r1475_3(int(&)[2]) = CopyValue : r1475_2 -# 1475| m1475_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1475_1, r1475_3 -# 1476| r1476_1(glval<int &>) = VariableAddress[x0] : -# 1476| r1476_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : -# 1476| r1476_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1476_2, m1475_4 -# 1476| r1476_4(glval<int[2]>) = CopyValue : r1476_3 -# 1476| r1476_5(int *) = Convert : r1476_4 -# 1476| r1476_6(int) = Constant[0] : -# 1476| r1476_7(glval<int>) = PointerAdd[4] : r1476_5, r1476_6 -# 1476| r1476_8(int &) = CopyValue : r1476_7 -# 1476| m1476_9(int &) = Store[x0] : &:r1476_1, r1476_8 -# 1477| r1477_1(glval<int &>) = VariableAddress[x1] : -# 1477| r1477_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : -# 1477| r1477_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1477_2, m1475_4 -# 1477| r1477_4(glval<int[2]>) = CopyValue : r1477_3 -# 1477| r1477_5(int *) = Convert : r1477_4 -# 1477| r1477_6(int) = Constant[1] : -# 1477| r1477_7(glval<int>) = PointerAdd[4] : r1477_5, r1477_6 -# 1477| r1477_8(int &) = CopyValue : r1477_7 -# 1477| m1477_9(int &) = Store[x1] : &:r1477_1, r1477_8 -# 1478| r1478_1(int) = Constant[3] : -# 1478| r1478_2(glval<int &>) = VariableAddress[x1] : -# 1478| r1478_3(int &) = Load[x1] : &:r1478_2, m1477_9 -# 1478| r1478_4(glval<int>) = CopyValue : r1478_3 -# 1478| m1478_5(int) = Store[?] : &:r1478_4, r1478_1 -# 1478| m1478_6(int[2]) = Chi : total:m1469_5, partial:m1478_5 -# 1479| r1479_1(glval<int &>) = VariableAddress[rx1] : -# 1479| r1479_2(glval<int &>) = VariableAddress[x1] : -# 1479| r1479_3(int &) = Load[x1] : &:r1479_2, m1477_9 -# 1479| r1479_4(glval<int>) = CopyValue : r1479_3 -# 1479| r1479_5(int &) = CopyValue : r1479_4 -# 1479| m1479_6(int &) = Store[rx1] : &:r1479_1, r1479_5 -# 1480| r1480_1(glval<int>) = VariableAddress[x] : -# 1480| r1480_2(glval<int &>) = VariableAddress[x1] : -# 1480| r1480_3(int &) = Load[x1] : &:r1480_2, m1477_9 -# 1480| r1480_4(int) = Load[?] : &:r1480_3, m1478_5 -# 1480| m1480_5(int) = Store[x] : &:r1480_1, r1480_4 -# 1482| v1482_1(void) = NoOp : -# 1464| v1464_5(void) = ReturnVoid : -# 1464| v1464_6(void) = AliasedUse : m1464_3 -# 1464| v1464_7(void) = ExitFunction : - -# 1484| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1484| Block 0 -# 1484| v1484_1(void) = EnterFunction : -# 1484| m1484_2(unknown) = AliasedDefinition : -# 1484| m1484_3(unknown) = InitializeNonLocal : -# 1484| m1484_4(unknown) = Chi : total:m1484_2, partial:m1484_3 -# 1484| r1484_5(glval<unknown>) = VariableAddress[#this] : -# 1484| m1484_6(glval<StructuredBindingDataMemberMemberStruct>) = InitializeParameter[#this] : &:r1484_5 -# 1484| r1484_7(glval<StructuredBindingDataMemberMemberStruct>) = Load[#this] : &:r1484_5, m1484_6 -# 1484| m1484_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1484_7 -# 1484| v1484_9(void) = NoOp : -# 1484| v1484_10(void) = ReturnIndirection[#this] : &:r1484_7, m1484_8 -# 1484| v1484_11(void) = ReturnVoid : -# 1484| v1484_12(void) = AliasedUse : m1484_3 -# 1484| v1484_13(void) = ExitFunction : - -# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1488| Block 0 -# 1488| v1488_1(void) = EnterFunction : -# 1488| m1488_2(unknown) = AliasedDefinition : -# 1488| m1488_3(unknown) = InitializeNonLocal : -# 1488| m1488_4(unknown) = Chi : total:m1488_2, partial:m1488_3 -# 1488| r1488_5(glval<unknown>) = VariableAddress[#this] : -# 1488| m1488_6(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1488_5 -# 1488| r1488_7(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1488_5, m1488_6 -# 1488| m1488_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_7 -# 1488| v1488_9(void) = NoOp : -# 1488| v1488_10(void) = ReturnIndirection[#this] : &:r1488_7, m1488_8 -# 1488| v1488_11(void) = ReturnVoid : -# 1488| v1488_12(void) = AliasedUse : m1488_3 -# 1488| v1488_13(void) = ExitFunction : - -# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1488| Block 0 -# 1488| v1488_1(void) = EnterFunction : -# 1488| m1488_2(unknown) = AliasedDefinition : -# 1488| m1488_3(unknown) = InitializeNonLocal : -# 1488| m1488_4(unknown) = Chi : total:m1488_2, partial:m1488_3 -# 1488| r1488_5(glval<unknown>) = VariableAddress[#this] : -# 1488| m1488_6(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1488_5 -# 1488| r1488_7(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1488_5, m1488_6 -# 1488| m1488_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_7 +#-----| m0_14(int &) = Store[x1] : &:r1515_6, r0_13 +# 1516| r1516_1(int) = Constant[3] : +# 1516| r1516_2(glval<int &>) = VariableAddress[x1] : +# 1516| r1516_3(int &) = Load[x1] : &:r1516_2, m0_14 +# 1516| m1516_4(int) = Store[?] : &:r1516_3, r1516_1 +# 1516| m1516_5(int[2]) = Chi : total:m1512_12, partial:m1516_4 +# 1517| r1517_1(glval<int &>) = VariableAddress[rx1] : +# 1517| r1517_2(glval<int &>) = VariableAddress[x1] : +# 1517| r1517_3(int &) = Load[x1] : &:r1517_2, m0_14 +# 1517| r1517_4(int &) = CopyValue : r1517_3 +# 1517| m1517_5(int &) = Store[rx1] : &:r1517_1, r1517_4 +# 1518| r1518_1(glval<int>) = VariableAddress[x] : +# 1518| r1518_2(glval<int &>) = VariableAddress[x1] : +# 1518| r1518_3(int &) = Load[x1] : &:r1518_2, m0_14 +# 1518| r1518_4(int) = Load[?] : &:r1518_3, m1516_4 +# 1518| m1518_5(int) = Store[x] : &:r1518_1, r1518_4 +# 1522| r1522_1(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : +# 1522| r1522_2(glval<int[2]>) = VariableAddress[xs] : +# 1522| r1522_3(int(&)[2]) = CopyValue : r1522_2 +# 1522| m1522_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1522_1, r1522_3 +# 1523| r1523_1(glval<int &>) = VariableAddress[x0] : +# 1523| r1523_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : +# 1523| r1523_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1523_2, m1522_4 +# 1523| r1523_4(glval<int[2]>) = CopyValue : r1523_3 +# 1523| r1523_5(int *) = Convert : r1523_4 +# 1523| r1523_6(int) = Constant[0] : +# 1523| r1523_7(glval<int>) = PointerAdd[4] : r1523_5, r1523_6 +# 1523| r1523_8(int &) = CopyValue : r1523_7 +# 1523| m1523_9(int &) = Store[x0] : &:r1523_1, r1523_8 +# 1524| r1524_1(glval<int &>) = VariableAddress[x1] : +# 1524| r1524_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : +# 1524| r1524_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1524_2, m1522_4 +# 1524| r1524_4(glval<int[2]>) = CopyValue : r1524_3 +# 1524| r1524_5(int *) = Convert : r1524_4 +# 1524| r1524_6(int) = Constant[1] : +# 1524| r1524_7(glval<int>) = PointerAdd[4] : r1524_5, r1524_6 +# 1524| r1524_8(int &) = CopyValue : r1524_7 +# 1524| m1524_9(int &) = Store[x1] : &:r1524_1, r1524_8 +# 1525| r1525_1(int) = Constant[3] : +# 1525| r1525_2(glval<int &>) = VariableAddress[x1] : +# 1525| r1525_3(int &) = Load[x1] : &:r1525_2, m1524_9 +# 1525| r1525_4(glval<int>) = CopyValue : r1525_3 +# 1525| m1525_5(int) = Store[?] : &:r1525_4, r1525_1 +# 1525| m1525_6(int[2]) = Chi : total:m1516_5, partial:m1525_5 +# 1526| r1526_1(glval<int &>) = VariableAddress[rx1] : +# 1526| r1526_2(glval<int &>) = VariableAddress[x1] : +# 1526| r1526_3(int &) = Load[x1] : &:r1526_2, m1524_9 +# 1526| r1526_4(glval<int>) = CopyValue : r1526_3 +# 1526| r1526_5(int &) = CopyValue : r1526_4 +# 1526| m1526_6(int &) = Store[rx1] : &:r1526_1, r1526_5 +# 1527| r1527_1(glval<int>) = VariableAddress[x] : +# 1527| r1527_2(glval<int &>) = VariableAddress[x1] : +# 1527| r1527_3(int &) = Load[x1] : &:r1527_2, m1524_9 +# 1527| r1527_4(int) = Load[?] : &:r1527_3, m1525_5 +# 1527| m1527_5(int) = Store[x] : &:r1527_1, r1527_4 +# 1529| v1529_1(void) = NoOp : +# 1511| v1511_5(void) = ReturnVoid : +# 1511| v1511_6(void) = AliasedUse : m1511_3 +# 1511| v1511_7(void) = ExitFunction : + +# 1531| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1531| Block 0 +# 1531| v1531_1(void) = EnterFunction : +# 1531| m1531_2(unknown) = AliasedDefinition : +# 1531| m1531_3(unknown) = InitializeNonLocal : +# 1531| m1531_4(unknown) = Chi : total:m1531_2, partial:m1531_3 +# 1531| r1531_5(glval<unknown>) = VariableAddress[#this] : +# 1531| m1531_6(glval<StructuredBindingDataMemberMemberStruct>) = InitializeParameter[#this] : &:r1531_5 +# 1531| r1531_7(glval<StructuredBindingDataMemberMemberStruct>) = Load[#this] : &:r1531_5, m1531_6 +# 1531| m1531_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1531_7 +# 1531| v1531_9(void) = NoOp : +# 1531| v1531_10(void) = ReturnIndirection[#this] : &:r1531_7, m1531_8 +# 1531| v1531_11(void) = ReturnVoid : +# 1531| v1531_12(void) = AliasedUse : m1531_3 +# 1531| v1531_13(void) = ExitFunction : + +# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1535| Block 0 +# 1535| v1535_1(void) = EnterFunction : +# 1535| m1535_2(unknown) = AliasedDefinition : +# 1535| m1535_3(unknown) = InitializeNonLocal : +# 1535| m1535_4(unknown) = Chi : total:m1535_2, partial:m1535_3 +# 1535| r1535_5(glval<unknown>) = VariableAddress[#this] : +# 1535| m1535_6(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1535_5 +# 1535| r1535_7(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1535_5, m1535_6 +# 1535| m1535_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_7 +# 1535| v1535_9(void) = NoOp : +# 1535| v1535_10(void) = ReturnIndirection[#this] : &:r1535_7, m1535_8 +# 1535| v1535_11(void) = ReturnVoid : +# 1535| v1535_12(void) = AliasedUse : m1535_3 +# 1535| v1535_13(void) = ExitFunction : + +# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1535| Block 0 +# 1535| v1535_1(void) = EnterFunction : +# 1535| m1535_2(unknown) = AliasedDefinition : +# 1535| m1535_3(unknown) = InitializeNonLocal : +# 1535| m1535_4(unknown) = Chi : total:m1535_2, partial:m1535_3 +# 1535| r1535_5(glval<unknown>) = VariableAddress[#this] : +# 1535| m1535_6(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1535_5 +# 1535| r1535_7(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1535_5, m1535_6 +# 1535| m1535_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_7 #-----| r0_1(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(StructuredBindingDataMemberStruct &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1488| r1488_9(glval<int>) = FieldAddress[i] : m1488_6 -# 1488| r1488_10(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_11(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_10, m0_2 -# 1488| r1488_12(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_11 -# 1488| r1488_13(glval<int>) = FieldAddress[i] : r1488_12 -# 1488| r1488_14(int) = Load[?] : &:r1488_13, ~m0_4 -# 1488| m1488_15(int) = Store[?] : &:r1488_9, r1488_14 -# 1488| m1488_16(unknown) = Chi : total:m1488_8, partial:m1488_15 -# 1488| r1488_17(glval<double>) = FieldAddress[d] : m1488_6 -# 1488| r1488_18(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_19(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_18, m0_2 -# 1488| r1488_20(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_19 -# 1488| r1488_21(glval<double>) = FieldAddress[d] : r1488_20 -# 1488| r1488_22(double) = Load[?] : &:r1488_21, ~m0_4 -# 1488| m1488_23(double) = Store[?] : &:r1488_17, r1488_22 -# 1488| m1488_24(unknown) = Chi : total:m1488_16, partial:m1488_23 -# 1488| r1488_25(glval<unsigned int>) = FieldAddress[b] : m1488_6 -# 1488| r1488_26(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_27(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_26, m0_2 -# 1488| r1488_28(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_27 -# 1488| r1488_29(glval<unsigned int>) = FieldAddress[b] : r1488_28 -# 1488| r1488_30(unsigned int) = Load[?] : &:r1488_29, ~m0_4 -# 1488| m1488_31(unsigned int) = Store[?] : &:r1488_25, r1488_30 -# 1488| m1488_32(unknown) = Chi : total:m1488_24, partial:m1488_31 -# 1488| r1488_33(glval<int &>) = FieldAddress[r] : m1488_6 -# 1488| r1488_34(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_35(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_34, m0_2 -# 1488| r1488_36(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_35 -# 1488| r1488_37(glval<int &>) = FieldAddress[r] : r1488_36 -# 1488| r1488_38(int &) = Load[?] : &:r1488_37, ~m0_4 -# 1488| m1488_39(int &) = Store[?] : &:r1488_33, r1488_38 -# 1488| m1488_40(unknown) = Chi : total:m1488_32, partial:m1488_39 -# 1488| r1488_41(glval<int *>) = FieldAddress[p] : m1488_6 -# 1488| r1488_42(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_43(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_42, m0_2 -# 1488| r1488_44(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_43 -# 1488| r1488_45(glval<int *>) = FieldAddress[p] : r1488_44 -# 1488| r1488_46(int *) = Load[?] : &:r1488_45, ~m0_4 -# 1488| m1488_47(int *) = Store[?] : &:r1488_41, r1488_46 -# 1488| m1488_48(unknown) = Chi : total:m1488_40, partial:m1488_47 -# 1488| r1488_49(glval<int[2]>) = FieldAddress[xs] : m1488_6 -# 1488| r1488_50(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_51(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_50, m0_2 -# 1488| r1488_52(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_51 -# 1488| r1488_53(glval<int[2]>) = FieldAddress[xs] : r1488_52 -# 1488| r1488_54(int[2]) = Load[?] : &:r1488_53, ~m0_4 -# 1488| m1488_55(int[2]) = Store[?] : &:r1488_49, r1488_54 -# 1488| m1488_56(unknown) = Chi : total:m1488_48, partial:m1488_55 -# 1488| r1488_57(glval<int &>) = FieldAddress[r_alt] : m1488_6 -# 1488| r1488_58(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_58, m0_2 -# 1488| r1488_60(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_59 -# 1488| r1488_61(glval<int &>) = FieldAddress[r_alt] : r1488_60 -# 1488| r1488_62(int &) = Load[?] : &:r1488_61, ~m0_4 -# 1488| m1488_63(int &) = Store[?] : &:r1488_57, r1488_62 -# 1488| m1488_64(unknown) = Chi : total:m1488_56, partial:m1488_63 -# 1488| r1488_65(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : m1488_6 -# 1488| r1488_66(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_67(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_66, m0_2 -# 1488| r1488_68(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_67 -# 1488| r1488_69(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1488_68 -# 1488| r1488_70(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1488_69, ~m0_4 -# 1488| m1488_71(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1488_65, r1488_70 -# 1488| m1488_72(unknown) = Chi : total:m1488_64, partial:m1488_71 -# 1488| v1488_73(void) = NoOp : -# 1488| v1488_74(void) = ReturnIndirection[#this] : &:r1488_7, m1488_72 +# 1535| r1535_9(glval<int>) = FieldAddress[i] : m1535_6 +# 1535| r1535_10(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_11(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_10, m0_2 +# 1535| r1535_12(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_11 +# 1535| r1535_13(glval<int>) = FieldAddress[i] : r1535_12 +# 1535| r1535_14(int) = Load[?] : &:r1535_13, ~m0_4 +# 1535| m1535_15(int) = Store[?] : &:r1535_9, r1535_14 +# 1535| m1535_16(unknown) = Chi : total:m1535_8, partial:m1535_15 +# 1535| r1535_17(glval<double>) = FieldAddress[d] : m1535_6 +# 1535| r1535_18(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_19(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_18, m0_2 +# 1535| r1535_20(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_19 +# 1535| r1535_21(glval<double>) = FieldAddress[d] : r1535_20 +# 1535| r1535_22(double) = Load[?] : &:r1535_21, ~m0_4 +# 1535| m1535_23(double) = Store[?] : &:r1535_17, r1535_22 +# 1535| m1535_24(unknown) = Chi : total:m1535_16, partial:m1535_23 +# 1535| r1535_25(glval<unsigned int>) = FieldAddress[b] : m1535_6 +# 1535| r1535_26(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_27(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_26, m0_2 +# 1535| r1535_28(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_27 +# 1535| r1535_29(glval<unsigned int>) = FieldAddress[b] : r1535_28 +# 1535| r1535_30(unsigned int) = Load[?] : &:r1535_29, ~m0_4 +# 1535| m1535_31(unsigned int) = Store[?] : &:r1535_25, r1535_30 +# 1535| m1535_32(unknown) = Chi : total:m1535_24, partial:m1535_31 +# 1535| r1535_33(glval<int &>) = FieldAddress[r] : m1535_6 +# 1535| r1535_34(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_35(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_34, m0_2 +# 1535| r1535_36(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_35 +# 1535| r1535_37(glval<int &>) = FieldAddress[r] : r1535_36 +# 1535| r1535_38(int &) = Load[?] : &:r1535_37, ~m0_4 +# 1535| m1535_39(int &) = Store[?] : &:r1535_33, r1535_38 +# 1535| m1535_40(unknown) = Chi : total:m1535_32, partial:m1535_39 +# 1535| r1535_41(glval<int *>) = FieldAddress[p] : m1535_6 +# 1535| r1535_42(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_43(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_42, m0_2 +# 1535| r1535_44(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_43 +# 1535| r1535_45(glval<int *>) = FieldAddress[p] : r1535_44 +# 1535| r1535_46(int *) = Load[?] : &:r1535_45, ~m0_4 +# 1535| m1535_47(int *) = Store[?] : &:r1535_41, r1535_46 +# 1535| m1535_48(unknown) = Chi : total:m1535_40, partial:m1535_47 +# 1535| r1535_49(glval<int[2]>) = FieldAddress[xs] : m1535_6 +# 1535| r1535_50(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_51(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_50, m0_2 +# 1535| r1535_52(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_51 +# 1535| r1535_53(glval<int[2]>) = FieldAddress[xs] : r1535_52 +# 1535| r1535_54(int[2]) = Load[?] : &:r1535_53, ~m0_4 +# 1535| m1535_55(int[2]) = Store[?] : &:r1535_49, r1535_54 +# 1535| m1535_56(unknown) = Chi : total:m1535_48, partial:m1535_55 +# 1535| r1535_57(glval<int &>) = FieldAddress[r_alt] : m1535_6 +# 1535| r1535_58(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_58, m0_2 +# 1535| r1535_60(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_59 +# 1535| r1535_61(glval<int &>) = FieldAddress[r_alt] : r1535_60 +# 1535| r1535_62(int &) = Load[?] : &:r1535_61, ~m0_4 +# 1535| m1535_63(int &) = Store[?] : &:r1535_57, r1535_62 +# 1535| m1535_64(unknown) = Chi : total:m1535_56, partial:m1535_63 +# 1535| r1535_65(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : m1535_6 +# 1535| r1535_66(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_67(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_66, m0_2 +# 1535| r1535_68(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_67 +# 1535| r1535_69(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1535_68 +# 1535| r1535_70(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1535_69, ~m0_4 +# 1535| m1535_71(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1535_65, r1535_70 +# 1535| m1535_72(unknown) = Chi : total:m1535_64, partial:m1535_71 +# 1535| v1535_73(void) = NoOp : +# 1535| v1535_74(void) = ReturnIndirection[#this] : &:r1535_7, m1535_72 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1488| v1488_75(void) = ReturnVoid : -# 1488| v1488_76(void) = AliasedUse : m1488_3 -# 1488| v1488_77(void) = ExitFunction : - -# 1501| void data_member_structured_binding() -# 1501| Block 0 -# 1501| v1501_1(void) = EnterFunction : -# 1501| m1501_2(unknown) = AliasedDefinition : -# 1501| m1501_3(unknown) = InitializeNonLocal : -# 1501| m1501_4(unknown) = Chi : total:m1501_2, partial:m1501_3 -# 1502| r1502_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : -# 1502| m1502_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1502_1 -# 1502| r1502_3(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] : -# 1502| v1502_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1502_3, this:r1502_1 -# 1502| m1502_5(unknown) = ^CallSideEffect : ~m1501_4 -# 1502| m1502_6(unknown) = Chi : total:m1501_4, partial:m1502_5 -# 1502| m1502_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1502_1 -# 1502| m1502_8(StructuredBindingDataMemberStruct) = Chi : total:m1502_2, partial:m1502_7 -# 1505| r1505_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : -# 1505| r1505_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1505_2, m1502_8 -# 1505| m1505_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1505_1, r1505_3 -# 1505| r1505_5(glval<int &>) = VariableAddress[i] : -# 1505| r1505_6(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_7(glval<int>) = FieldAddress[i] : r1505_6 -# 1505| m1505_8(int &) = Store[i] : &:r1505_5, r1505_7 -# 1505| r1505_9(glval<double &>) = VariableAddress[d] : -# 1505| r1505_10(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_11(glval<double>) = FieldAddress[d] : r1505_10 -# 1505| m1505_12(double &) = Store[d] : &:r1505_9, r1505_11 -# 1505| r1505_13(glval<unsigned int &>) = VariableAddress[b] : -# 1505| r1505_14(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_15(glval<unsigned int>) = FieldAddress[b] : r1505_14 -# 1505| m1505_16(unsigned int &) = Store[b] : &:r1505_13, r1505_15 -# 1505| r1505_17(glval<int &>) = VariableAddress[r] : -# 1505| r1505_18(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_19(glval<int &>) = FieldAddress[r] : r1505_18 -# 1505| r1505_20(int &) = Load[?] : &:r1505_19, ~m1505_4 -# 1505| r1505_21(glval<int>) = CopyValue : r1505_20 -# 1505| m1505_22(int &) = Store[r] : &:r1505_17, r1505_21 -# 1505| r1505_23(glval<int *&>) = VariableAddress[p] : -# 1505| r1505_24(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_25(glval<int *>) = FieldAddress[p] : r1505_24 -# 1505| m1505_26(int *&) = Store[p] : &:r1505_23, r1505_25 -# 1505| r1505_27(glval<int(&)[2]>) = VariableAddress[xs] : -# 1505| r1505_28(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_29(glval<int[2]>) = FieldAddress[xs] : r1505_28 -# 1505| m1505_30(int(&)[2]) = Store[xs] : &:r1505_27, r1505_29 -# 1505| r1505_31(glval<int &>) = VariableAddress[r_alt] : -# 1505| r1505_32(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_33(glval<int &>) = FieldAddress[r_alt] : r1505_32 -# 1505| r1505_34(int &) = Load[?] : &:r1505_33, ~m1505_4 -# 1505| r1505_35(glval<int>) = CopyValue : r1505_34 -# 1505| m1505_36(int &) = Store[r_alt] : &:r1505_31, r1505_35 -# 1505| r1505_37(glval<StructuredBindingDataMemberMemberStruct &>) = VariableAddress[m] : -# 1505| r1505_38(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_39(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1505_38 -# 1505| m1505_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1505_37, r1505_39 -# 1506| r1506_1(double) = Constant[4.0] : -# 1506| r1506_2(glval<double &>) = VariableAddress[d] : -# 1506| r1506_3(double &) = Load[d] : &:r1506_2, m1505_12 -# 1506| m1506_4(double) = Store[?] : &:r1506_3, r1506_1 -# 1506| m1506_5(StructuredBindingDataMemberStruct) = Chi : total:m1505_4, partial:m1506_4 -# 1507| r1507_1(glval<double &>) = VariableAddress[rd] : -# 1507| r1507_2(glval<double &>) = VariableAddress[d] : -# 1507| r1507_3(double &) = Load[d] : &:r1507_2, m1505_12 -# 1507| r1507_4(double &) = CopyValue : r1507_3 -# 1507| m1507_5(double &) = Store[rd] : &:r1507_1, r1507_4 -# 1508| r1508_1(glval<int>) = VariableAddress[v] : -# 1508| r1508_2(glval<int &>) = VariableAddress[i] : -# 1508| r1508_3(int &) = Load[i] : &:r1508_2, m1505_8 -# 1508| r1508_4(int) = Load[?] : &:r1508_3, ~m1505_4 -# 1508| m1508_5(int) = Store[v] : &:r1508_1, r1508_4 -# 1509| r1509_1(int) = Constant[5] : -# 1509| r1509_2(glval<int &>) = VariableAddress[r] : -# 1509| r1509_3(int &) = Load[r] : &:r1509_2, m1505_22 -# 1509| m1509_4(int) = Store[?] : &:r1509_3, r1509_1 -# 1509| m1509_5(unknown) = Chi : total:m1502_6, partial:m1509_4 -# 1510| r1510_1(int) = Constant[6] : -# 1510| r1510_2(glval<int *&>) = VariableAddress[p] : -# 1510| r1510_3(int *&) = Load[p] : &:r1510_2, m1505_26 -# 1510| r1510_4(int *) = Load[?] : &:r1510_3, ~m1505_4 -# 1510| r1510_5(glval<int>) = CopyValue : r1510_4 -# 1510| m1510_6(int) = Store[?] : &:r1510_5, r1510_1 -# 1510| m1510_7(unknown) = Chi : total:m1509_5, partial:m1510_6 -# 1511| r1511_1(glval<int &>) = VariableAddress[rr] : -# 1511| r1511_2(glval<int &>) = VariableAddress[r] : -# 1511| r1511_3(int &) = Load[r] : &:r1511_2, m1505_22 -# 1511| r1511_4(int &) = CopyValue : r1511_3 -# 1511| m1511_5(int &) = Store[rr] : &:r1511_1, r1511_4 -# 1512| r1512_1(glval<int *>) = VariableAddress[pr] : -# 1512| r1512_2(glval<int &>) = VariableAddress[r] : -# 1512| r1512_3(int &) = Load[r] : &:r1512_2, m1505_22 -# 1512| r1512_4(int *) = CopyValue : r1512_3 -# 1512| m1512_5(int *) = Store[pr] : &:r1512_1, r1512_4 -# 1513| r1513_1(glval<int>) = VariableAddress[w] : -# 1513| r1513_2(glval<int &>) = VariableAddress[r] : -# 1513| r1513_3(int &) = Load[r] : &:r1513_2, m1505_22 -# 1513| r1513_4(int) = Load[?] : &:r1513_3, ~m1510_7 -# 1513| m1513_5(int) = Store[w] : &:r1513_1, r1513_4 -# 1517| r1517_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1517| r1517_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : -# 1517| r1517_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1517_2, m1502_8 -# 1517| m1517_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1517_1, r1517_3 -# 1518| r1518_1(glval<int &>) = VariableAddress[i] : -# 1518| r1518_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1518| r1518_3(glval<int>) = FieldAddress[i] : r1518_2 -# 1518| r1518_4(int &) = CopyValue : r1518_3 -# 1518| m1518_5(int &) = Store[i] : &:r1518_1, r1518_4 -# 1519| r1519_1(glval<double &>) = VariableAddress[d] : -# 1519| r1519_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1519| r1519_3(glval<double>) = FieldAddress[d] : r1519_2 -# 1519| r1519_4(double &) = CopyValue : r1519_3 -# 1519| m1519_5(double &) = Store[d] : &:r1519_1, r1519_4 -# 1521| r1521_1(glval<int &>) = VariableAddress[r] : -# 1521| r1521_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1521| r1521_3(glval<int &>) = FieldAddress[r] : r1521_2 -# 1521| r1521_4(int &) = Load[?] : &:r1521_3, ~m1517_4 -# 1521| r1521_5(glval<int>) = CopyValue : r1521_4 -# 1521| r1521_6(int &) = CopyValue : r1521_5 -# 1521| m1521_7(int &) = Store[r] : &:r1521_1, r1521_6 -# 1522| r1522_1(glval<int *&>) = VariableAddress[p] : -# 1522| r1522_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1522| r1522_3(glval<int *>) = FieldAddress[p] : r1522_2 -# 1522| r1522_4(int *&) = CopyValue : r1522_3 -# 1522| m1522_5(int *&) = Store[p] : &:r1522_1, r1522_4 -# 1523| r1523_1(double) = Constant[4.0] : -# 1523| r1523_2(glval<double &>) = VariableAddress[d] : -# 1523| r1523_3(double &) = Load[d] : &:r1523_2, m1519_5 -# 1523| r1523_4(glval<double>) = CopyValue : r1523_3 -# 1523| m1523_5(double) = Store[?] : &:r1523_4, r1523_1 -# 1523| m1523_6(StructuredBindingDataMemberStruct) = Chi : total:m1517_4, partial:m1523_5 -# 1524| r1524_1(glval<double &>) = VariableAddress[rd] : -# 1524| r1524_2(glval<double &>) = VariableAddress[d] : -# 1524| r1524_3(double &) = Load[d] : &:r1524_2, m1519_5 -# 1524| r1524_4(glval<double>) = CopyValue : r1524_3 -# 1524| r1524_5(double &) = CopyValue : r1524_4 -# 1524| m1524_6(double &) = Store[rd] : &:r1524_1, r1524_5 -# 1525| r1525_1(glval<int>) = VariableAddress[v] : -# 1525| r1525_2(glval<int &>) = VariableAddress[i] : -# 1525| r1525_3(int &) = Load[i] : &:r1525_2, m1518_5 -# 1525| r1525_4(int) = Load[?] : &:r1525_3, ~m1517_4 -# 1525| m1525_5(int) = Store[v] : &:r1525_1, r1525_4 -# 1526| r1526_1(int) = Constant[5] : -# 1526| r1526_2(glval<int &>) = VariableAddress[r] : -# 1526| r1526_3(int &) = Load[r] : &:r1526_2, m1521_7 -# 1526| r1526_4(glval<int>) = CopyValue : r1526_3 -# 1526| m1526_5(int) = Store[?] : &:r1526_4, r1526_1 -# 1526| m1526_6(unknown) = Chi : total:m1510_7, partial:m1526_5 -# 1527| r1527_1(int) = Constant[6] : -# 1527| r1527_2(glval<int *&>) = VariableAddress[p] : -# 1527| r1527_3(int *&) = Load[p] : &:r1527_2, m1522_5 -# 1527| r1527_4(int *) = Load[?] : &:r1527_3, ~m1517_4 -# 1527| r1527_5(glval<int>) = CopyValue : r1527_4 -# 1527| m1527_6(int) = Store[?] : &:r1527_5, r1527_1 -# 1527| m1527_7(unknown) = Chi : total:m1526_6, partial:m1527_6 -# 1528| r1528_1(glval<int &>) = VariableAddress[rr] : -# 1528| r1528_2(glval<int &>) = VariableAddress[r] : -# 1528| r1528_3(int &) = Load[r] : &:r1528_2, m1521_7 -# 1528| r1528_4(glval<int>) = CopyValue : r1528_3 -# 1528| r1528_5(int &) = CopyValue : r1528_4 -# 1528| m1528_6(int &) = Store[rr] : &:r1528_1, r1528_5 -# 1529| r1529_1(glval<int *>) = VariableAddress[pr] : -# 1529| r1529_2(glval<int &>) = VariableAddress[r] : -# 1529| r1529_3(int &) = Load[r] : &:r1529_2, m1521_7 -# 1529| r1529_4(glval<int>) = CopyValue : r1529_3 -# 1529| r1529_5(int *) = CopyValue : r1529_4 -# 1529| m1529_6(int *) = Store[pr] : &:r1529_1, r1529_5 -# 1530| r1530_1(glval<int>) = VariableAddress[w] : -# 1530| r1530_2(glval<int &>) = VariableAddress[r] : -# 1530| r1530_3(int &) = Load[r] : &:r1530_2, m1521_7 -# 1530| r1530_4(int) = Load[?] : &:r1530_3, ~m1527_7 -# 1530| m1530_5(int) = Store[w] : &:r1530_1, r1530_4 -# 1532| v1532_1(void) = NoOp : -# 1501| v1501_5(void) = ReturnVoid : -# 1501| v1501_6(void) = AliasedUse : ~m1527_7 -# 1501| v1501_7(void) = ExitFunction : - -# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1541| Block 0 -# 1541| v1541_1(void) = EnterFunction : -# 1541| m1541_2(unknown) = AliasedDefinition : -# 1541| m1541_3(unknown) = InitializeNonLocal : -# 1541| m1541_4(unknown) = Chi : total:m1541_2, partial:m1541_3 -# 1541| r1541_5(glval<unknown>) = VariableAddress[#this] : -# 1541| m1541_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1541_5 -# 1541| r1541_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1541_5, m1541_6 -# 1541| m1541_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_7 -# 1541| v1541_9(void) = NoOp : -# 1541| v1541_10(void) = ReturnIndirection[#this] : &:r1541_7, m1541_8 -# 1541| v1541_11(void) = ReturnVoid : -# 1541| v1541_12(void) = AliasedUse : m1541_3 -# 1541| v1541_13(void) = ExitFunction : - -# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1541| Block 0 -# 1541| v1541_1(void) = EnterFunction : -# 1541| m1541_2(unknown) = AliasedDefinition : -# 1541| m1541_3(unknown) = InitializeNonLocal : -# 1541| m1541_4(unknown) = Chi : total:m1541_2, partial:m1541_3 -# 1541| r1541_5(glval<unknown>) = VariableAddress[#this] : -# 1541| m1541_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1541_5 -# 1541| r1541_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1541_5, m1541_6 -# 1541| m1541_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_7 +# 1535| v1535_75(void) = ReturnVoid : +# 1535| v1535_76(void) = AliasedUse : m1535_3 +# 1535| v1535_77(void) = ExitFunction : + +# 1548| void data_member_structured_binding() +# 1548| Block 0 +# 1548| v1548_1(void) = EnterFunction : +# 1548| m1548_2(unknown) = AliasedDefinition : +# 1548| m1548_3(unknown) = InitializeNonLocal : +# 1548| m1548_4(unknown) = Chi : total:m1548_2, partial:m1548_3 +# 1549| r1549_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : +# 1549| m1549_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1549_1 +# 1549| r1549_3(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] : +# 1549| v1549_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1549_3, this:r1549_1 +# 1549| m1549_5(unknown) = ^CallSideEffect : ~m1548_4 +# 1549| m1549_6(unknown) = Chi : total:m1548_4, partial:m1549_5 +# 1549| m1549_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1549_1 +# 1549| m1549_8(StructuredBindingDataMemberStruct) = Chi : total:m1549_2, partial:m1549_7 +# 1552| r1552_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : +# 1552| r1552_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1552_2, m1549_8 +# 1552| m1552_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1552_1, r1552_3 +# 1552| r1552_5(glval<int &>) = VariableAddress[i] : +# 1552| r1552_6(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_7(glval<int>) = FieldAddress[i] : r1552_6 +# 1552| m1552_8(int &) = Store[i] : &:r1552_5, r1552_7 +# 1552| r1552_9(glval<double &>) = VariableAddress[d] : +# 1552| r1552_10(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_11(glval<double>) = FieldAddress[d] : r1552_10 +# 1552| m1552_12(double &) = Store[d] : &:r1552_9, r1552_11 +# 1552| r1552_13(glval<unsigned int &>) = VariableAddress[b] : +# 1552| r1552_14(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_15(glval<unsigned int>) = FieldAddress[b] : r1552_14 +# 1552| m1552_16(unsigned int &) = Store[b] : &:r1552_13, r1552_15 +# 1552| r1552_17(glval<int &>) = VariableAddress[r] : +# 1552| r1552_18(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_19(glval<int &>) = FieldAddress[r] : r1552_18 +# 1552| r1552_20(int &) = Load[?] : &:r1552_19, ~m1552_4 +# 1552| r1552_21(glval<int>) = CopyValue : r1552_20 +# 1552| m1552_22(int &) = Store[r] : &:r1552_17, r1552_21 +# 1552| r1552_23(glval<int *&>) = VariableAddress[p] : +# 1552| r1552_24(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_25(glval<int *>) = FieldAddress[p] : r1552_24 +# 1552| m1552_26(int *&) = Store[p] : &:r1552_23, r1552_25 +# 1552| r1552_27(glval<int(&)[2]>) = VariableAddress[xs] : +# 1552| r1552_28(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_29(glval<int[2]>) = FieldAddress[xs] : r1552_28 +# 1552| m1552_30(int(&)[2]) = Store[xs] : &:r1552_27, r1552_29 +# 1552| r1552_31(glval<int &>) = VariableAddress[r_alt] : +# 1552| r1552_32(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_33(glval<int &>) = FieldAddress[r_alt] : r1552_32 +# 1552| r1552_34(int &) = Load[?] : &:r1552_33, ~m1552_4 +# 1552| r1552_35(glval<int>) = CopyValue : r1552_34 +# 1552| m1552_36(int &) = Store[r_alt] : &:r1552_31, r1552_35 +# 1552| r1552_37(glval<StructuredBindingDataMemberMemberStruct &>) = VariableAddress[m] : +# 1552| r1552_38(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_39(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1552_38 +# 1552| m1552_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1552_37, r1552_39 +# 1553| r1553_1(double) = Constant[4.0] : +# 1553| r1553_2(glval<double &>) = VariableAddress[d] : +# 1553| r1553_3(double &) = Load[d] : &:r1553_2, m1552_12 +# 1553| m1553_4(double) = Store[?] : &:r1553_3, r1553_1 +# 1553| m1553_5(StructuredBindingDataMemberStruct) = Chi : total:m1552_4, partial:m1553_4 +# 1554| r1554_1(glval<double &>) = VariableAddress[rd] : +# 1554| r1554_2(glval<double &>) = VariableAddress[d] : +# 1554| r1554_3(double &) = Load[d] : &:r1554_2, m1552_12 +# 1554| r1554_4(double &) = CopyValue : r1554_3 +# 1554| m1554_5(double &) = Store[rd] : &:r1554_1, r1554_4 +# 1555| r1555_1(glval<int>) = VariableAddress[v] : +# 1555| r1555_2(glval<int &>) = VariableAddress[i] : +# 1555| r1555_3(int &) = Load[i] : &:r1555_2, m1552_8 +# 1555| r1555_4(int) = Load[?] : &:r1555_3, ~m1552_4 +# 1555| m1555_5(int) = Store[v] : &:r1555_1, r1555_4 +# 1556| r1556_1(int) = Constant[5] : +# 1556| r1556_2(glval<int &>) = VariableAddress[r] : +# 1556| r1556_3(int &) = Load[r] : &:r1556_2, m1552_22 +# 1556| m1556_4(int) = Store[?] : &:r1556_3, r1556_1 +# 1556| m1556_5(unknown) = Chi : total:m1549_6, partial:m1556_4 +# 1557| r1557_1(int) = Constant[6] : +# 1557| r1557_2(glval<int *&>) = VariableAddress[p] : +# 1557| r1557_3(int *&) = Load[p] : &:r1557_2, m1552_26 +# 1557| r1557_4(int *) = Load[?] : &:r1557_3, ~m1552_4 +# 1557| r1557_5(glval<int>) = CopyValue : r1557_4 +# 1557| m1557_6(int) = Store[?] : &:r1557_5, r1557_1 +# 1557| m1557_7(unknown) = Chi : total:m1556_5, partial:m1557_6 +# 1558| r1558_1(glval<int &>) = VariableAddress[rr] : +# 1558| r1558_2(glval<int &>) = VariableAddress[r] : +# 1558| r1558_3(int &) = Load[r] : &:r1558_2, m1552_22 +# 1558| r1558_4(int &) = CopyValue : r1558_3 +# 1558| m1558_5(int &) = Store[rr] : &:r1558_1, r1558_4 +# 1559| r1559_1(glval<int *>) = VariableAddress[pr] : +# 1559| r1559_2(glval<int &>) = VariableAddress[r] : +# 1559| r1559_3(int &) = Load[r] : &:r1559_2, m1552_22 +# 1559| r1559_4(int *) = CopyValue : r1559_3 +# 1559| m1559_5(int *) = Store[pr] : &:r1559_1, r1559_4 +# 1560| r1560_1(glval<int>) = VariableAddress[w] : +# 1560| r1560_2(glval<int &>) = VariableAddress[r] : +# 1560| r1560_3(int &) = Load[r] : &:r1560_2, m1552_22 +# 1560| r1560_4(int) = Load[?] : &:r1560_3, ~m1557_7 +# 1560| m1560_5(int) = Store[w] : &:r1560_1, r1560_4 +# 1564| r1564_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1564| r1564_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : +# 1564| r1564_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1564_2, m1549_8 +# 1564| m1564_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1564_1, r1564_3 +# 1565| r1565_1(glval<int &>) = VariableAddress[i] : +# 1565| r1565_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1565| r1565_3(glval<int>) = FieldAddress[i] : r1565_2 +# 1565| r1565_4(int &) = CopyValue : r1565_3 +# 1565| m1565_5(int &) = Store[i] : &:r1565_1, r1565_4 +# 1566| r1566_1(glval<double &>) = VariableAddress[d] : +# 1566| r1566_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1566| r1566_3(glval<double>) = FieldAddress[d] : r1566_2 +# 1566| r1566_4(double &) = CopyValue : r1566_3 +# 1566| m1566_5(double &) = Store[d] : &:r1566_1, r1566_4 +# 1568| r1568_1(glval<int &>) = VariableAddress[r] : +# 1568| r1568_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1568| r1568_3(glval<int &>) = FieldAddress[r] : r1568_2 +# 1568| r1568_4(int &) = Load[?] : &:r1568_3, ~m1564_4 +# 1568| r1568_5(glval<int>) = CopyValue : r1568_4 +# 1568| r1568_6(int &) = CopyValue : r1568_5 +# 1568| m1568_7(int &) = Store[r] : &:r1568_1, r1568_6 +# 1569| r1569_1(glval<int *&>) = VariableAddress[p] : +# 1569| r1569_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1569| r1569_3(glval<int *>) = FieldAddress[p] : r1569_2 +# 1569| r1569_4(int *&) = CopyValue : r1569_3 +# 1569| m1569_5(int *&) = Store[p] : &:r1569_1, r1569_4 +# 1570| r1570_1(double) = Constant[4.0] : +# 1570| r1570_2(glval<double &>) = VariableAddress[d] : +# 1570| r1570_3(double &) = Load[d] : &:r1570_2, m1566_5 +# 1570| r1570_4(glval<double>) = CopyValue : r1570_3 +# 1570| m1570_5(double) = Store[?] : &:r1570_4, r1570_1 +# 1570| m1570_6(StructuredBindingDataMemberStruct) = Chi : total:m1564_4, partial:m1570_5 +# 1571| r1571_1(glval<double &>) = VariableAddress[rd] : +# 1571| r1571_2(glval<double &>) = VariableAddress[d] : +# 1571| r1571_3(double &) = Load[d] : &:r1571_2, m1566_5 +# 1571| r1571_4(glval<double>) = CopyValue : r1571_3 +# 1571| r1571_5(double &) = CopyValue : r1571_4 +# 1571| m1571_6(double &) = Store[rd] : &:r1571_1, r1571_5 +# 1572| r1572_1(glval<int>) = VariableAddress[v] : +# 1572| r1572_2(glval<int &>) = VariableAddress[i] : +# 1572| r1572_3(int &) = Load[i] : &:r1572_2, m1565_5 +# 1572| r1572_4(int) = Load[?] : &:r1572_3, ~m1564_4 +# 1572| m1572_5(int) = Store[v] : &:r1572_1, r1572_4 +# 1573| r1573_1(int) = Constant[5] : +# 1573| r1573_2(glval<int &>) = VariableAddress[r] : +# 1573| r1573_3(int &) = Load[r] : &:r1573_2, m1568_7 +# 1573| r1573_4(glval<int>) = CopyValue : r1573_3 +# 1573| m1573_5(int) = Store[?] : &:r1573_4, r1573_1 +# 1573| m1573_6(unknown) = Chi : total:m1557_7, partial:m1573_5 +# 1574| r1574_1(int) = Constant[6] : +# 1574| r1574_2(glval<int *&>) = VariableAddress[p] : +# 1574| r1574_3(int *&) = Load[p] : &:r1574_2, m1569_5 +# 1574| r1574_4(int *) = Load[?] : &:r1574_3, ~m1564_4 +# 1574| r1574_5(glval<int>) = CopyValue : r1574_4 +# 1574| m1574_6(int) = Store[?] : &:r1574_5, r1574_1 +# 1574| m1574_7(unknown) = Chi : total:m1573_6, partial:m1574_6 +# 1575| r1575_1(glval<int &>) = VariableAddress[rr] : +# 1575| r1575_2(glval<int &>) = VariableAddress[r] : +# 1575| r1575_3(int &) = Load[r] : &:r1575_2, m1568_7 +# 1575| r1575_4(glval<int>) = CopyValue : r1575_3 +# 1575| r1575_5(int &) = CopyValue : r1575_4 +# 1575| m1575_6(int &) = Store[rr] : &:r1575_1, r1575_5 +# 1576| r1576_1(glval<int *>) = VariableAddress[pr] : +# 1576| r1576_2(glval<int &>) = VariableAddress[r] : +# 1576| r1576_3(int &) = Load[r] : &:r1576_2, m1568_7 +# 1576| r1576_4(glval<int>) = CopyValue : r1576_3 +# 1576| r1576_5(int *) = CopyValue : r1576_4 +# 1576| m1576_6(int *) = Store[pr] : &:r1576_1, r1576_5 +# 1577| r1577_1(glval<int>) = VariableAddress[w] : +# 1577| r1577_2(glval<int &>) = VariableAddress[r] : +# 1577| r1577_3(int &) = Load[r] : &:r1577_2, m1568_7 +# 1577| r1577_4(int) = Load[?] : &:r1577_3, ~m1574_7 +# 1577| m1577_5(int) = Store[w] : &:r1577_1, r1577_4 +# 1579| v1579_1(void) = NoOp : +# 1548| v1548_5(void) = ReturnVoid : +# 1548| v1548_6(void) = AliasedUse : ~m1574_7 +# 1548| v1548_7(void) = ExitFunction : + +# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1588| Block 0 +# 1588| v1588_1(void) = EnterFunction : +# 1588| m1588_2(unknown) = AliasedDefinition : +# 1588| m1588_3(unknown) = InitializeNonLocal : +# 1588| m1588_4(unknown) = Chi : total:m1588_2, partial:m1588_3 +# 1588| r1588_5(glval<unknown>) = VariableAddress[#this] : +# 1588| m1588_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1588_5 +# 1588| r1588_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1588_5, m1588_6 +# 1588| m1588_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_7 +# 1588| v1588_9(void) = NoOp : +# 1588| v1588_10(void) = ReturnIndirection[#this] : &:r1588_7, m1588_8 +# 1588| v1588_11(void) = ReturnVoid : +# 1588| v1588_12(void) = AliasedUse : m1588_3 +# 1588| v1588_13(void) = ExitFunction : + +# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1588| Block 0 +# 1588| v1588_1(void) = EnterFunction : +# 1588| m1588_2(unknown) = AliasedDefinition : +# 1588| m1588_3(unknown) = InitializeNonLocal : +# 1588| m1588_4(unknown) = Chi : total:m1588_2, partial:m1588_3 +# 1588| r1588_5(glval<unknown>) = VariableAddress[#this] : +# 1588| m1588_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1588_5 +# 1588| r1588_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1588_5, m1588_6 +# 1588| m1588_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_7 #-----| r0_1(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(StructuredBindingTupleRefGet &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1541| r1541_9(glval<int>) = FieldAddress[i] : m1541_6 -# 1541| r1541_10(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : -# 1541| r1541_11(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_10, m0_2 -# 1541| r1541_12(glval<StructuredBindingTupleRefGet>) = CopyValue : r1541_11 -# 1541| r1541_13(glval<int>) = FieldAddress[i] : r1541_12 -# 1541| r1541_14(int) = Load[?] : &:r1541_13, ~m0_4 -# 1541| m1541_15(int) = Store[?] : &:r1541_9, r1541_14 -# 1541| m1541_16(unknown) = Chi : total:m1541_8, partial:m1541_15 -# 1541| r1541_17(glval<double>) = FieldAddress[d] : m1541_6 -# 1541| r1541_18(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : -# 1541| r1541_19(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_18, m0_2 -# 1541| r1541_20(glval<StructuredBindingTupleRefGet>) = CopyValue : r1541_19 -# 1541| r1541_21(glval<double>) = FieldAddress[d] : r1541_20 -# 1541| r1541_22(double) = Load[?] : &:r1541_21, ~m0_4 -# 1541| m1541_23(double) = Store[?] : &:r1541_17, r1541_22 -# 1541| m1541_24(unknown) = Chi : total:m1541_16, partial:m1541_23 -# 1541| r1541_25(glval<int &>) = FieldAddress[r] : m1541_6 -# 1541| r1541_26(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : -# 1541| r1541_27(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_26, m0_2 -# 1541| r1541_28(glval<StructuredBindingTupleRefGet>) = CopyValue : r1541_27 -# 1541| r1541_29(glval<int &>) = FieldAddress[r] : r1541_28 -# 1541| r1541_30(int &) = Load[?] : &:r1541_29, ~m0_4 -# 1541| m1541_31(int &) = Store[?] : &:r1541_25, r1541_30 -# 1541| m1541_32(unknown) = Chi : total:m1541_24, partial:m1541_31 -# 1541| v1541_33(void) = NoOp : -# 1541| v1541_34(void) = ReturnIndirection[#this] : &:r1541_7, m1541_32 +# 1588| r1588_9(glval<int>) = FieldAddress[i] : m1588_6 +# 1588| r1588_10(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : +# 1588| r1588_11(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_10, m0_2 +# 1588| r1588_12(glval<StructuredBindingTupleRefGet>) = CopyValue : r1588_11 +# 1588| r1588_13(glval<int>) = FieldAddress[i] : r1588_12 +# 1588| r1588_14(int) = Load[?] : &:r1588_13, ~m0_4 +# 1588| m1588_15(int) = Store[?] : &:r1588_9, r1588_14 +# 1588| m1588_16(unknown) = Chi : total:m1588_8, partial:m1588_15 +# 1588| r1588_17(glval<double>) = FieldAddress[d] : m1588_6 +# 1588| r1588_18(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : +# 1588| r1588_19(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_18, m0_2 +# 1588| r1588_20(glval<StructuredBindingTupleRefGet>) = CopyValue : r1588_19 +# 1588| r1588_21(glval<double>) = FieldAddress[d] : r1588_20 +# 1588| r1588_22(double) = Load[?] : &:r1588_21, ~m0_4 +# 1588| m1588_23(double) = Store[?] : &:r1588_17, r1588_22 +# 1588| m1588_24(unknown) = Chi : total:m1588_16, partial:m1588_23 +# 1588| r1588_25(glval<int &>) = FieldAddress[r] : m1588_6 +# 1588| r1588_26(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : +# 1588| r1588_27(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_26, m0_2 +# 1588| r1588_28(glval<StructuredBindingTupleRefGet>) = CopyValue : r1588_27 +# 1588| r1588_29(glval<int &>) = FieldAddress[r] : r1588_28 +# 1588| r1588_30(int &) = Load[?] : &:r1588_29, ~m0_4 +# 1588| m1588_31(int &) = Store[?] : &:r1588_25, r1588_30 +# 1588| m1588_32(unknown) = Chi : total:m1588_24, partial:m1588_31 +# 1588| v1588_33(void) = NoOp : +# 1588| v1588_34(void) = ReturnIndirection[#this] : &:r1588_7, m1588_32 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1541| v1541_35(void) = ReturnVoid : -# 1541| v1541_36(void) = AliasedUse : m1541_3 -# 1541| v1541_37(void) = ExitFunction : - -# 1569| std::tuple_element<int 0, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 0>() -# 1569| Block 0 -# 1569| v1569_1(void) = EnterFunction : -# 1569| m1569_2(unknown) = AliasedDefinition : -# 1569| m1569_3(unknown) = InitializeNonLocal : -# 1569| m1569_4(unknown) = Chi : total:m1569_2, partial:m1569_3 -# 1569| r1569_5(glval<unknown>) = VariableAddress[#this] : -# 1569| m1569_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1569_5 -# 1569| r1569_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1569_5, m1569_6 -# 1569| m1569_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1569_7 -# 1570| r1570_1(glval<int &>) = VariableAddress[#return] : -# 1570| r1570_2(glval<unknown>) = VariableAddress[#this] : -# 1570| r1570_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1570_2, m1569_6 -# 1570| r1570_4(glval<int>) = FieldAddress[i] : r1570_3 -#-----| r0_1(int &) = CopyValue : r1570_4 -#-----| m0_2(int &) = Store[#return] : &:r1570_1, r0_1 -# 1569| v1569_9(void) = ReturnIndirection[#this] : &:r1569_7, m1569_8 -# 1569| r1569_10(glval<int &>) = VariableAddress[#return] : -# 1569| v1569_11(void) = ReturnValue : &:r1569_10, m0_2 -# 1569| v1569_12(void) = AliasedUse : m1569_3 -# 1569| v1569_13(void) = ExitFunction : - -# 1573| std::tuple_element<int 1, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 1>() -# 1573| Block 0 -# 1573| v1573_1(void) = EnterFunction : -# 1573| m1573_2(unknown) = AliasedDefinition : -# 1573| m1573_3(unknown) = InitializeNonLocal : -# 1573| m1573_4(unknown) = Chi : total:m1573_2, partial:m1573_3 -# 1573| r1573_5(glval<unknown>) = VariableAddress[#this] : -# 1573| m1573_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1573_5 -# 1573| r1573_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1573_5, m1573_6 -# 1573| m1573_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1573_7 -# 1574| r1574_1(glval<double &>) = VariableAddress[#return] : -# 1574| r1574_2(glval<unknown>) = VariableAddress[#this] : -# 1574| r1574_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1574_2, m1573_6 -# 1574| r1574_4(glval<double>) = FieldAddress[d] : r1574_3 -#-----| r0_1(double &) = CopyValue : r1574_4 -#-----| m0_2(double &) = Store[#return] : &:r1574_1, r0_1 -# 1573| v1573_9(void) = ReturnIndirection[#this] : &:r1573_7, m1573_8 -# 1573| r1573_10(glval<double &>) = VariableAddress[#return] : -# 1573| v1573_11(void) = ReturnValue : &:r1573_10, m0_2 -# 1573| v1573_12(void) = AliasedUse : m1573_3 -# 1573| v1573_13(void) = ExitFunction : - -# 1577| std::tuple_element<int 2, StructuredBindingTupleRefGet>::type StructuredBindingTupleRefGet::get<int 2>() -# 1577| Block 0 -# 1577| v1577_1(void) = EnterFunction : -# 1577| m1577_2(unknown) = AliasedDefinition : -# 1577| m1577_3(unknown) = InitializeNonLocal : -# 1577| m1577_4(unknown) = Chi : total:m1577_2, partial:m1577_3 -# 1577| r1577_5(glval<unknown>) = VariableAddress[#this] : -# 1577| m1577_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1577_5 -# 1577| r1577_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1577_5, m1577_6 -# 1577| m1577_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1577_7 -# 1578| r1578_1(glval<int &>) = VariableAddress[#return] : -# 1578| r1578_2(glval<unknown>) = VariableAddress[#this] : -# 1578| r1578_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1578_2, m1577_6 -# 1578| r1578_4(glval<int &>) = FieldAddress[r] : r1578_3 -# 1578| r1578_5(int &) = Load[?] : &:r1578_4, ~m1577_8 -# 1578| r1578_6(glval<int>) = CopyValue : r1578_5 -# 1578| r1578_7(int &) = CopyValue : r1578_6 -# 1578| m1578_8(int &) = Store[#return] : &:r1578_1, r1578_7 -# 1577| v1577_9(void) = ReturnIndirection[#this] : &:r1577_7, m1577_8 -# 1577| r1577_10(glval<int &>) = VariableAddress[#return] : -# 1577| v1577_11(void) = ReturnValue : &:r1577_10, m1578_8 -# 1577| v1577_12(void) = AliasedUse : m1577_3 -# 1577| v1577_13(void) = ExitFunction : - -# 1581| void tuple_structured_binding_ref_get() -# 1581| Block 0 -# 1581| v1581_1(void) = EnterFunction : -# 1581| m1581_2(unknown) = AliasedDefinition : -# 1581| m1581_3(unknown) = InitializeNonLocal : -# 1581| m1581_4(unknown) = Chi : total:m1581_2, partial:m1581_3 -# 1582| r1582_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : -# 1582| m1582_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1582_1 -# 1582| r1582_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleRefGet] : -# 1582| v1582_4(void) = Call[StructuredBindingTupleRefGet] : func:r1582_3, this:r1582_1 -# 1582| m1582_5(unknown) = ^CallSideEffect : ~m1581_4 -# 1582| m1582_6(unknown) = Chi : total:m1581_4, partial:m1582_5 -# 1582| m1582_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1582_1 -# 1582| m1582_8(StructuredBindingTupleRefGet) = Chi : total:m1582_2, partial:m1582_7 -# 1585| r1585_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : -# 1585| r1585_3(StructuredBindingTupleRefGet) = Load[t] : &:r1585_2, m1582_8 -# 1585| m1585_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1585_1, r1585_3 -# 1585| r1585_5(glval<int &>) = VariableAddress[i] : -# 1585| r1585_6(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_7(glval<unknown>) = FunctionAddress[get] : -# 1585| r1585_8(int &) = Call[get] : func:r1585_7, this:r1585_6 -# 1585| m1585_9(unknown) = ^CallSideEffect : ~m1582_6 -# 1585| m1585_10(unknown) = Chi : total:m1582_6, partial:m1585_9 -# 1585| v1585_11(void) = ^IndirectReadSideEffect[-1] : &:r1585_6, m1585_4 -# 1585| m1585_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_6 -# 1585| m1585_13(StructuredBindingTupleRefGet) = Chi : total:m1585_4, partial:m1585_12 -# 1585| r1585_14(glval<int>) = CopyValue : r1585_8 -# 1585| r1585_15(int &) = CopyValue : r1585_14 -# 1585| m1585_16(int &) = Store[i] : &:r1585_5, r1585_15 -# 1585| r1585_17(glval<double &>) = VariableAddress[d] : -# 1585| r1585_18(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_19(glval<unknown>) = FunctionAddress[get] : -# 1585| r1585_20(double &) = Call[get] : func:r1585_19, this:r1585_18 -# 1585| m1585_21(unknown) = ^CallSideEffect : ~m1585_10 -# 1585| m1585_22(unknown) = Chi : total:m1585_10, partial:m1585_21 -# 1585| v1585_23(void) = ^IndirectReadSideEffect[-1] : &:r1585_18, m1585_13 -# 1585| m1585_24(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_18 -# 1585| m1585_25(StructuredBindingTupleRefGet) = Chi : total:m1585_13, partial:m1585_24 -# 1585| r1585_26(glval<double>) = CopyValue : r1585_20 -# 1585| r1585_27(double &) = CopyValue : r1585_26 -# 1585| m1585_28(double &) = Store[d] : &:r1585_17, r1585_27 -# 1585| r1585_29(glval<int &>) = VariableAddress[r] : -# 1585| r1585_30(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_31(glval<unknown>) = FunctionAddress[get] : -# 1585| r1585_32(int &) = Call[get] : func:r1585_31, this:r1585_30 -# 1585| m1585_33(unknown) = ^CallSideEffect : ~m1585_22 -# 1585| m1585_34(unknown) = Chi : total:m1585_22, partial:m1585_33 -# 1585| v1585_35(void) = ^IndirectReadSideEffect[-1] : &:r1585_30, m1585_25 -# 1585| m1585_36(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_30 -# 1585| m1585_37(StructuredBindingTupleRefGet) = Chi : total:m1585_25, partial:m1585_36 -# 1585| r1585_38(glval<int>) = CopyValue : r1585_32 -# 1585| r1585_39(int &) = CopyValue : r1585_38 -# 1585| m1585_40(int &) = Store[r] : &:r1585_29, r1585_39 -# 1586| r1586_1(double) = Constant[4.0] : -# 1586| r1586_2(glval<double &>) = VariableAddress[d] : -# 1586| r1586_3(double &) = Load[d] : &:r1586_2, m1585_28 -# 1586| r1586_4(glval<double>) = CopyValue : r1586_3 -# 1586| m1586_5(double) = Store[?] : &:r1586_4, r1586_1 -# 1586| m1586_6(StructuredBindingTupleRefGet) = Chi : total:m1585_37, partial:m1586_5 -# 1587| r1587_1(glval<double &>) = VariableAddress[rd] : -# 1587| r1587_2(glval<double &>) = VariableAddress[d] : -# 1587| r1587_3(double &) = Load[d] : &:r1587_2, m1585_28 -# 1587| r1587_4(glval<double>) = CopyValue : r1587_3 -# 1587| r1587_5(double &) = CopyValue : r1587_4 -# 1587| m1587_6(double &) = Store[rd] : &:r1587_1, r1587_5 -# 1588| r1588_1(glval<int>) = VariableAddress[v] : -# 1588| r1588_2(glval<int &>) = VariableAddress[i] : -# 1588| r1588_3(int &) = Load[i] : &:r1588_2, m1585_16 -# 1588| r1588_4(int) = Load[?] : &:r1588_3, ~m1585_37 -# 1588| m1588_5(int) = Store[v] : &:r1588_1, r1588_4 -# 1589| r1589_1(int) = Constant[5] : -# 1589| r1589_2(glval<int &>) = VariableAddress[r] : -# 1589| r1589_3(int &) = Load[r] : &:r1589_2, m1585_40 -# 1589| r1589_4(glval<int>) = CopyValue : r1589_3 -# 1589| m1589_5(int) = Store[?] : &:r1589_4, r1589_1 -# 1589| m1589_6(unknown) = Chi : total:m1585_34, partial:m1589_5 -# 1590| r1590_1(glval<int &>) = VariableAddress[rr] : -# 1590| r1590_2(glval<int &>) = VariableAddress[r] : -# 1590| r1590_3(int &) = Load[r] : &:r1590_2, m1585_40 -# 1590| r1590_4(glval<int>) = CopyValue : r1590_3 -# 1590| r1590_5(int &) = CopyValue : r1590_4 -# 1590| m1590_6(int &) = Store[rr] : &:r1590_1, r1590_5 -# 1591| r1591_1(glval<int>) = VariableAddress[w] : -# 1591| r1591_2(glval<int &>) = VariableAddress[r] : -# 1591| r1591_3(int &) = Load[r] : &:r1591_2, m1585_40 -# 1591| r1591_4(int) = Load[?] : &:r1591_3, ~m1589_6 -# 1591| m1591_5(int) = Store[w] : &:r1591_1, r1591_4 -# 1595| r1595_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1595| r1595_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : -# 1595| r1595_3(StructuredBindingTupleRefGet) = Load[t] : &:r1595_2, m1582_8 -# 1595| m1595_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1595_1, r1595_3 -# 1596| r1596_1(glval<int &>) = VariableAddress[i] : -# 1596| r1596_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1596| r1596_3(glval<unknown>) = FunctionAddress[get] : -# 1596| r1596_4(int &) = Call[get] : func:r1596_3, this:r1596_2 -# 1596| m1596_5(unknown) = ^CallSideEffect : ~m1589_6 -# 1596| m1596_6(unknown) = Chi : total:m1589_6, partial:m1596_5 -# 1596| v1596_7(void) = ^IndirectReadSideEffect[-1] : &:r1596_2, m1595_4 -# 1596| m1596_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1596_2 -# 1596| m1596_9(StructuredBindingTupleRefGet) = Chi : total:m1595_4, partial:m1596_8 -# 1596| r1596_10(glval<int>) = CopyValue : r1596_4 -# 1596| r1596_11(int &) = CopyValue : r1596_10 -# 1596| m1596_12(int &) = Store[i] : &:r1596_1, r1596_11 -# 1597| r1597_1(glval<double &>) = VariableAddress[d] : -# 1597| r1597_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1597| r1597_3(glval<unknown>) = FunctionAddress[get] : -# 1597| r1597_4(double &) = Call[get] : func:r1597_3, this:r1597_2 -# 1597| m1597_5(unknown) = ^CallSideEffect : ~m1596_6 -# 1597| m1597_6(unknown) = Chi : total:m1596_6, partial:m1597_5 -# 1597| v1597_7(void) = ^IndirectReadSideEffect[-1] : &:r1597_2, m1596_9 -# 1597| m1597_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1597_2 -# 1597| m1597_9(StructuredBindingTupleRefGet) = Chi : total:m1596_9, partial:m1597_8 -# 1597| r1597_10(glval<double>) = CopyValue : r1597_4 -# 1597| r1597_11(double &) = CopyValue : r1597_10 -# 1597| m1597_12(double &) = Store[d] : &:r1597_1, r1597_11 -# 1598| r1598_1(glval<int &>) = VariableAddress[r] : -# 1598| r1598_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1598| r1598_3(glval<unknown>) = FunctionAddress[get] : -# 1598| r1598_4(int &) = Call[get] : func:r1598_3, this:r1598_2 -# 1598| m1598_5(unknown) = ^CallSideEffect : ~m1597_6 -# 1598| m1598_6(unknown) = Chi : total:m1597_6, partial:m1598_5 -# 1598| v1598_7(void) = ^IndirectReadSideEffect[-1] : &:r1598_2, m1597_9 -# 1598| m1598_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1598_2 -# 1598| m1598_9(StructuredBindingTupleRefGet) = Chi : total:m1597_9, partial:m1598_8 -# 1598| r1598_10(glval<int>) = CopyValue : r1598_4 -# 1598| r1598_11(int &) = CopyValue : r1598_10 -# 1598| m1598_12(int &) = Store[r] : &:r1598_1, r1598_11 -# 1599| r1599_1(double) = Constant[4.0] : -# 1599| r1599_2(glval<double &>) = VariableAddress[d] : -# 1599| r1599_3(double &) = Load[d] : &:r1599_2, m1597_12 -# 1599| r1599_4(glval<double>) = CopyValue : r1599_3 -# 1599| m1599_5(double) = Store[?] : &:r1599_4, r1599_1 -# 1599| m1599_6(StructuredBindingTupleRefGet) = Chi : total:m1598_9, partial:m1599_5 -# 1600| r1600_1(glval<double &>) = VariableAddress[rd] : -# 1600| r1600_2(glval<double &>) = VariableAddress[d] : -# 1600| r1600_3(double &) = Load[d] : &:r1600_2, m1597_12 -# 1600| r1600_4(glval<double>) = CopyValue : r1600_3 -# 1600| r1600_5(double &) = CopyValue : r1600_4 -# 1600| m1600_6(double &) = Store[rd] : &:r1600_1, r1600_5 -# 1601| r1601_1(glval<int>) = VariableAddress[v] : -# 1601| r1601_2(glval<int &>) = VariableAddress[i] : -# 1601| r1601_3(int &) = Load[i] : &:r1601_2, m1596_12 -# 1601| r1601_4(int) = Load[?] : &:r1601_3, ~m1598_9 -# 1601| m1601_5(int) = Store[v] : &:r1601_1, r1601_4 -# 1602| r1602_1(int) = Constant[5] : -# 1602| r1602_2(glval<int &>) = VariableAddress[r] : -# 1602| r1602_3(int &) = Load[r] : &:r1602_2, m1598_12 -# 1602| r1602_4(glval<int>) = CopyValue : r1602_3 -# 1602| m1602_5(int) = Store[?] : &:r1602_4, r1602_1 -# 1602| m1602_6(unknown) = Chi : total:m1598_6, partial:m1602_5 -# 1603| r1603_1(glval<int &>) = VariableAddress[rr] : -# 1603| r1603_2(glval<int &>) = VariableAddress[r] : -# 1603| r1603_3(int &) = Load[r] : &:r1603_2, m1598_12 -# 1603| r1603_4(glval<int>) = CopyValue : r1603_3 -# 1603| r1603_5(int &) = CopyValue : r1603_4 -# 1603| m1603_6(int &) = Store[rr] : &:r1603_1, r1603_5 -# 1604| r1604_1(glval<int>) = VariableAddress[w] : -# 1604| r1604_2(glval<int &>) = VariableAddress[r] : -# 1604| r1604_3(int &) = Load[r] : &:r1604_2, m1598_12 -# 1604| r1604_4(int) = Load[?] : &:r1604_3, ~m1602_6 -# 1604| m1604_5(int) = Store[w] : &:r1604_1, r1604_4 -# 1606| v1606_1(void) = NoOp : -# 1581| v1581_5(void) = ReturnVoid : -# 1581| v1581_6(void) = AliasedUse : ~m1602_6 -# 1581| v1581_7(void) = ExitFunction : - -# 1608| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1608| Block 0 -# 1608| v1608_1(void) = EnterFunction : -# 1608| m1608_2(unknown) = AliasedDefinition : -# 1608| m1608_3(unknown) = InitializeNonLocal : -# 1608| m1608_4(unknown) = Chi : total:m1608_2, partial:m1608_3 -# 1608| r1608_5(glval<unknown>) = VariableAddress[#this] : -# 1608| m1608_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1608_5 -# 1608| r1608_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1608_5, m1608_6 -# 1608| m1608_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1608_7 -# 1608| v1608_9(void) = NoOp : -# 1608| v1608_10(void) = ReturnIndirection[#this] : &:r1608_7, m1608_8 -# 1608| v1608_11(void) = ReturnVoid : -# 1608| v1608_12(void) = AliasedUse : m1608_3 -# 1608| v1608_13(void) = ExitFunction : - -# 1635| std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>() -# 1635| Block 0 -# 1635| v1635_1(void) = EnterFunction : -# 1635| m1635_2(unknown) = AliasedDefinition : -# 1635| m1635_3(unknown) = InitializeNonLocal : -# 1635| m1635_4(unknown) = Chi : total:m1635_2, partial:m1635_3 -# 1635| r1635_5(glval<unknown>) = VariableAddress[#this] : -# 1635| m1635_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1635_5 -# 1635| r1635_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1635_5, m1635_6 -# 1635| m1635_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1635_7 -# 1636| r1636_1(glval<int>) = VariableAddress[#return] : -# 1636| r1636_2(glval<unknown>) = VariableAddress[#this] : -# 1636| r1636_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1636_2, m1635_6 -# 1636| r1636_4(glval<int>) = FieldAddress[i] : r1636_3 -# 1636| r1636_5(int) = Load[?] : &:r1636_4, ~m1635_8 -# 1636| m1636_6(int) = Store[#return] : &:r1636_1, r1636_5 -# 1635| v1635_9(void) = ReturnIndirection[#this] : &:r1635_7, m1635_8 -# 1635| r1635_10(glval<int>) = VariableAddress[#return] : -# 1635| v1635_11(void) = ReturnValue : &:r1635_10, m1636_6 -# 1635| v1635_12(void) = AliasedUse : m1635_3 -# 1635| v1635_13(void) = ExitFunction : - -# 1639| std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>() -# 1639| Block 0 -# 1639| v1639_1(void) = EnterFunction : -# 1639| m1639_2(unknown) = AliasedDefinition : -# 1639| m1639_3(unknown) = InitializeNonLocal : -# 1639| m1639_4(unknown) = Chi : total:m1639_2, partial:m1639_3 -# 1639| r1639_5(glval<unknown>) = VariableAddress[#this] : -# 1639| m1639_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1639_5 -# 1639| r1639_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1639_5, m1639_6 -# 1639| m1639_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1639_7 -# 1640| r1640_1(glval<int &>) = VariableAddress[#return] : -# 1640| r1640_2(glval<unknown>) = VariableAddress[#this] : -# 1640| r1640_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1640_2, m1639_6 -# 1640| r1640_4(glval<int &>) = FieldAddress[r] : r1640_3 -# 1640| r1640_5(int &) = Load[?] : &:r1640_4, ~m1639_8 -# 1640| r1640_6(glval<int>) = CopyValue : r1640_5 -# 1640| r1640_7(int &) = CopyValue : r1640_6 -# 1640| m1640_8(int &) = Store[#return] : &:r1640_1, r1640_7 -# 1639| v1639_9(void) = ReturnIndirection[#this] : &:r1639_7, m1639_8 -# 1639| r1639_10(glval<int &>) = VariableAddress[#return] : -# 1639| v1639_11(void) = ReturnValue : &:r1639_10, m1640_8 -# 1639| v1639_12(void) = AliasedUse : m1639_3 -# 1639| v1639_13(void) = ExitFunction : - -# 1643| std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>() -# 1643| Block 0 -# 1643| v1643_1(void) = EnterFunction : -# 1643| m1643_2(unknown) = AliasedDefinition : -# 1643| m1643_3(unknown) = InitializeNonLocal : -# 1643| m1643_4(unknown) = Chi : total:m1643_2, partial:m1643_3 -# 1643| r1643_5(glval<unknown>) = VariableAddress[#this] : -# 1643| m1643_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1643_5 -# 1643| r1643_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1643_5, m1643_6 -# 1643| m1643_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1643_7 -# 1644| r1644_1(glval<int &&>) = VariableAddress[#return] : -# 1644| r1644_2(glval<int>) = VariableAddress[#temp1644:12] : -# 1644| r1644_3(int) = Constant[5] : -# 1644| m1644_4(int) = Store[#temp1644:12] : &:r1644_2, r1644_3 -# 1644| r1644_5(int &) = CopyValue : r1644_2 -# 1644| m1644_6(int &&) = Store[#return] : &:r1644_1, r1644_5 -# 1643| v1643_9(void) = ReturnIndirection[#this] : &:r1643_7, m1643_8 -# 1643| r1643_10(glval<int &&>) = VariableAddress[#return] : -# 1643| v1643_11(void) = ReturnValue : &:r1643_10, m1644_6 -# 1643| v1643_12(void) = AliasedUse : m1643_3 -# 1643| v1643_13(void) = ExitFunction : - -# 1647| void tuple_structured_binding_no_ref_get() -# 1647| Block 0 -# 1647| v1647_1(void) = EnterFunction : -# 1647| m1647_2(unknown) = AliasedDefinition : -# 1647| m1647_3(unknown) = InitializeNonLocal : -# 1647| m1647_4(unknown) = Chi : total:m1647_2, partial:m1647_3 -# 1648| r1648_1(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : -# 1648| m1648_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1648_1 -# 1648| r1648_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleNoRefGet] : -# 1648| v1648_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1648_3, this:r1648_1 -# 1648| m1648_5(unknown) = ^CallSideEffect : ~m1647_4 -# 1648| m1648_6(unknown) = Chi : total:m1647_4, partial:m1648_5 -# 1648| m1648_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1648_1 -# 1648| m1648_8(StructuredBindingTupleNoRefGet) = Chi : total:m1648_2, partial:m1648_7 -# 1651| r1651_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : -# 1651| r1651_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1651_2 -# 1651| m1651_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1651_1, r1651_3 -# 1651| r1651_5(glval<int &&>) = VariableAddress[i] : -# 1651| r1651_6(glval<int>) = VariableAddress[#temp1651:16] : -# 1651| r1651_7(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_7, m1651_4 -# 1651| r1651_9(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1651_8 -# 1651| r1651_10(glval<unknown>) = FunctionAddress[get] : -# 1651| r1651_11(int) = Call[get] : func:r1651_10, this:r1651_9 -# 1651| m1651_12(unknown) = ^CallSideEffect : ~m1648_6 -# 1651| m1651_13(unknown) = Chi : total:m1648_6, partial:m1651_12 -# 1651| v1651_14(void) = ^IndirectReadSideEffect[-1] : &:r1651_9, m1648_8 -# 1651| m1651_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_9 -# 1651| m1651_16(StructuredBindingTupleNoRefGet) = Chi : total:m1648_8, partial:m1651_15 -# 1651| m1651_17(int) = Store[#temp1651:16] : &:r1651_6, r1651_11 -# 1651| r1651_18(int &) = CopyValue : r1651_6 -# 1651| m1651_19(int &&) = Store[i] : &:r1651_5, r1651_18 -# 1651| r1651_20(glval<int &>) = VariableAddress[r] : -# 1651| r1651_21(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_22(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_21, m1651_4 -# 1651| r1651_23(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1651_22 -# 1651| r1651_24(glval<unknown>) = FunctionAddress[get] : -# 1651| r1651_25(int &) = Call[get] : func:r1651_24, this:r1651_23 -# 1651| m1651_26(unknown) = ^CallSideEffect : ~m1651_13 -# 1651| m1651_27(unknown) = Chi : total:m1651_13, partial:m1651_26 -# 1651| v1651_28(void) = ^IndirectReadSideEffect[-1] : &:r1651_23, m1651_16 -# 1651| m1651_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_23 -# 1651| m1651_30(StructuredBindingTupleNoRefGet) = Chi : total:m1651_16, partial:m1651_29 -# 1651| r1651_31(glval<int>) = CopyValue : r1651_25 -# 1651| r1651_32(int &) = CopyValue : r1651_31 -# 1651| m1651_33(int &) = Store[r] : &:r1651_20, r1651_32 -# 1651| r1651_34(glval<int &&>) = VariableAddress[rv] : -# 1651| r1651_35(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_36(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_35, m1651_4 -# 1651| r1651_37(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1651_36 -# 1651| r1651_38(glval<unknown>) = FunctionAddress[get] : -# 1651| r1651_39(int &&) = Call[get] : func:r1651_38, this:r1651_37 -# 1651| m1651_40(unknown) = ^CallSideEffect : ~m1651_27 -# 1651| m1651_41(unknown) = Chi : total:m1651_27, partial:m1651_40 -# 1651| v1651_42(void) = ^IndirectReadSideEffect[-1] : &:r1651_37, m1651_30 -# 1651| m1651_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_37 -# 1651| m1651_44(StructuredBindingTupleNoRefGet) = Chi : total:m1651_30, partial:m1651_43 -# 1651| r1651_45(glval<int>) = CopyValue : r1651_39 -# 1651| r1651_46(int &) = CopyValue : r1651_45 -# 1651| m1651_47(int &&) = Store[rv] : &:r1651_34, r1651_46 -# 1652| r1652_1(int) = Constant[4] : -# 1652| r1652_2(glval<int &&>) = VariableAddress[i] : -# 1652| r1652_3(int &&) = Load[i] : &:r1652_2, m1651_19 -# 1652| r1652_4(glval<int>) = CopyValue : r1652_3 -# 1652| m1652_5(int) = Store[?] : &:r1652_4, r1652_1 -# 1653| r1653_1(glval<int &>) = VariableAddress[ri] : -# 1653| r1653_2(glval<int &&>) = VariableAddress[i] : -# 1653| r1653_3(int &&) = Load[i] : &:r1653_2, m1651_19 -# 1653| r1653_4(glval<int>) = CopyValue : r1653_3 -# 1653| r1653_5(int &) = CopyValue : r1653_4 -# 1653| m1653_6(int &) = Store[ri] : &:r1653_1, r1653_5 -# 1654| r1654_1(glval<int>) = VariableAddress[v] : -# 1654| r1654_2(glval<int &&>) = VariableAddress[i] : -# 1654| r1654_3(int &&) = Load[i] : &:r1654_2, m1651_19 -# 1654| r1654_4(int) = Load[?] : &:r1654_3, m1652_5 -# 1654| m1654_5(int) = Store[v] : &:r1654_1, r1654_4 -# 1655| r1655_1(int) = Constant[5] : -# 1655| r1655_2(glval<int &>) = VariableAddress[r] : -# 1655| r1655_3(int &) = Load[r] : &:r1655_2, m1651_33 -# 1655| r1655_4(glval<int>) = CopyValue : r1655_3 -# 1655| m1655_5(int) = Store[?] : &:r1655_4, r1655_1 -# 1655| m1655_6(unknown) = Chi : total:m1651_41, partial:m1655_5 -# 1656| r1656_1(glval<int &>) = VariableAddress[rr] : -# 1656| r1656_2(glval<int &>) = VariableAddress[r] : -# 1656| r1656_3(int &) = Load[r] : &:r1656_2, m1651_33 -# 1656| r1656_4(glval<int>) = CopyValue : r1656_3 -# 1656| r1656_5(int &) = CopyValue : r1656_4 -# 1656| m1656_6(int &) = Store[rr] : &:r1656_1, r1656_5 -# 1657| r1657_1(glval<int>) = VariableAddress[w] : -# 1657| r1657_2(glval<int &>) = VariableAddress[r] : -# 1657| r1657_3(int &) = Load[r] : &:r1657_2, m1651_33 -# 1657| r1657_4(int) = Load[?] : &:r1657_3, ~m1655_6 -# 1657| m1657_5(int) = Store[w] : &:r1657_1, r1657_4 -# 1661| r1661_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1661| r1661_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : -# 1661| r1661_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1661_2 -# 1661| m1661_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1661_1, r1661_3 -# 1662| r1662_1(glval<int &&>) = VariableAddress[i] : -# 1662| r1662_2(glval<int>) = VariableAddress[#temp1662:20] : -# 1662| r1662_3(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1662| r1662_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1662_3, m1661_4 -# 1662| r1662_5(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1662_4 -# 1662| r1662_6(glval<unknown>) = FunctionAddress[get] : -# 1662| r1662_7(int) = Call[get] : func:r1662_6, this:r1662_5 -# 1662| m1662_8(unknown) = ^CallSideEffect : ~m1655_6 -# 1662| m1662_9(unknown) = Chi : total:m1655_6, partial:m1662_8 -# 1662| v1662_10(void) = ^IndirectReadSideEffect[-1] : &:r1662_5, m1651_44 -# 1662| m1662_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1662_5 -# 1662| m1662_12(StructuredBindingTupleNoRefGet) = Chi : total:m1651_44, partial:m1662_11 -# 1662| m1662_13(int) = Store[#temp1662:20] : &:r1662_2, r1662_7 -# 1662| r1662_14(int &) = CopyValue : r1662_2 -# 1662| m1662_15(int &&) = Store[i] : &:r1662_1, r1662_14 -# 1663| r1663_1(glval<int &>) = VariableAddress[r] : -# 1663| r1663_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1663| r1663_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1663_2, m1661_4 -# 1663| r1663_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1663_3 -# 1663| r1663_5(glval<unknown>) = FunctionAddress[get] : -# 1663| r1663_6(int &) = Call[get] : func:r1663_5, this:r1663_4 -# 1663| m1663_7(unknown) = ^CallSideEffect : ~m1662_9 -# 1663| m1663_8(unknown) = Chi : total:m1662_9, partial:m1663_7 -# 1663| v1663_9(void) = ^IndirectReadSideEffect[-1] : &:r1663_4, m1662_12 -# 1663| m1663_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1663_4 -# 1663| m1663_11(StructuredBindingTupleNoRefGet) = Chi : total:m1662_12, partial:m1663_10 -# 1663| r1663_12(glval<int>) = CopyValue : r1663_6 -# 1663| r1663_13(int &) = CopyValue : r1663_12 -# 1663| m1663_14(int &) = Store[r] : &:r1663_1, r1663_13 -# 1664| r1664_1(glval<int &&>) = VariableAddress[rv] : -# 1664| r1664_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1664| r1664_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1664_2, m1661_4 -# 1664| r1664_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1664_3 -# 1664| r1664_5(glval<unknown>) = FunctionAddress[get] : -# 1664| r1664_6(int &&) = Call[get] : func:r1664_5, this:r1664_4 -# 1664| m1664_7(unknown) = ^CallSideEffect : ~m1663_8 -# 1664| m1664_8(unknown) = Chi : total:m1663_8, partial:m1664_7 -# 1664| v1664_9(void) = ^IndirectReadSideEffect[-1] : &:r1664_4, m1663_11 -# 1664| m1664_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1664_4 -# 1664| m1664_11(StructuredBindingTupleNoRefGet) = Chi : total:m1663_11, partial:m1664_10 -# 1664| r1664_12(glval<int>) = CopyValue : r1664_6 -# 1664| r1664_13(int &) = CopyValue : r1664_12 -# 1664| m1664_14(int &&) = Store[rv] : &:r1664_1, r1664_13 -# 1665| r1665_1(int) = Constant[4] : -# 1665| r1665_2(glval<int &&>) = VariableAddress[i] : -# 1665| r1665_3(int &&) = Load[i] : &:r1665_2, m1662_15 -# 1665| r1665_4(glval<int>) = CopyValue : r1665_3 -# 1665| m1665_5(int) = Store[?] : &:r1665_4, r1665_1 -# 1666| r1666_1(glval<int &>) = VariableAddress[ri] : -# 1666| r1666_2(glval<int &&>) = VariableAddress[i] : -# 1666| r1666_3(int &&) = Load[i] : &:r1666_2, m1662_15 -# 1666| r1666_4(glval<int>) = CopyValue : r1666_3 -# 1666| r1666_5(int &) = CopyValue : r1666_4 -# 1666| m1666_6(int &) = Store[ri] : &:r1666_1, r1666_5 -# 1667| r1667_1(glval<int>) = VariableAddress[v] : -# 1667| r1667_2(glval<int &&>) = VariableAddress[i] : -# 1667| r1667_3(int &&) = Load[i] : &:r1667_2, m1662_15 -# 1667| r1667_4(int) = Load[?] : &:r1667_3, m1665_5 -# 1667| m1667_5(int) = Store[v] : &:r1667_1, r1667_4 -# 1668| r1668_1(int) = Constant[5] : -# 1668| r1668_2(glval<int &>) = VariableAddress[r] : -# 1668| r1668_3(int &) = Load[r] : &:r1668_2, m1663_14 -# 1668| r1668_4(glval<int>) = CopyValue : r1668_3 -# 1668| m1668_5(int) = Store[?] : &:r1668_4, r1668_1 -# 1668| m1668_6(unknown) = Chi : total:m1664_8, partial:m1668_5 -# 1669| r1669_1(glval<int &>) = VariableAddress[rr] : -# 1669| r1669_2(glval<int &>) = VariableAddress[r] : -# 1669| r1669_3(int &) = Load[r] : &:r1669_2, m1663_14 -# 1669| r1669_4(glval<int>) = CopyValue : r1669_3 -# 1669| r1669_5(int &) = CopyValue : r1669_4 -# 1669| m1669_6(int &) = Store[rr] : &:r1669_1, r1669_5 -# 1670| r1670_1(glval<int>) = VariableAddress[w] : -# 1670| r1670_2(glval<int &>) = VariableAddress[r] : -# 1670| r1670_3(int &) = Load[r] : &:r1670_2, m1663_14 -# 1670| r1670_4(int) = Load[?] : &:r1670_3, ~m1668_6 -# 1670| m1670_5(int) = Store[w] : &:r1670_1, r1670_4 -# 1672| v1672_1(void) = NoOp : -# 1647| v1647_5(void) = ReturnVoid : -# 1647| v1647_6(void) = AliasedUse : ~m1668_6 -# 1647| v1647_7(void) = ExitFunction : - -# 1674| void array_structured_binding_non_ref_init() -# 1674| Block 0 -# 1674| v1674_1(void) = EnterFunction : -# 1674| m1674_2(unknown) = AliasedDefinition : -# 1674| m1674_3(unknown) = InitializeNonLocal : -# 1674| m1674_4(unknown) = Chi : total:m1674_2, partial:m1674_3 -# 1675| r1675_1(glval<int[2]>) = VariableAddress[xs] : -# 1675| m1675_2(int[2]) = Uninitialized[xs] : &:r1675_1 -# 1675| r1675_3(int) = Constant[0] : -# 1675| r1675_4(glval<int>) = PointerAdd[4] : r1675_1, r1675_3 -# 1675| r1675_5(int) = Constant[1] : -# 1675| m1675_6(int) = Store[?] : &:r1675_4, r1675_5 -# 1675| m1675_7(int[2]) = Chi : total:m1675_2, partial:m1675_6 -# 1675| r1675_8(int) = Constant[1] : -# 1675| r1675_9(glval<int>) = PointerAdd[4] : r1675_1, r1675_8 -# 1675| r1675_10(int) = Constant[2] : -# 1675| m1675_11(int) = Store[?] : &:r1675_9, r1675_10 -# 1675| m1675_12(int[2]) = Chi : total:m1675_7, partial:m1675_11 -# 1676| r1676_1(glval<int[2]>) = VariableAddress[(unnamed local variable)] : -# 1676| r1676_2(glval<int[2]>) = VariableAddress[xs] : -# 1676| r1676_3(int[2]) = Load[xs] : &:r1676_2, m1675_12 -# 1676| m1676_4(int[2]) = Store[(unnamed local variable)] : &:r1676_1, r1676_3 -# 1676| r1676_5(glval<int &>) = VariableAddress[x0] : +# 1588| v1588_35(void) = ReturnVoid : +# 1588| v1588_36(void) = AliasedUse : m1588_3 +# 1588| v1588_37(void) = ExitFunction : + +# 1616| std::tuple_element<int 0, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 0>() +# 1616| Block 0 +# 1616| v1616_1(void) = EnterFunction : +# 1616| m1616_2(unknown) = AliasedDefinition : +# 1616| m1616_3(unknown) = InitializeNonLocal : +# 1616| m1616_4(unknown) = Chi : total:m1616_2, partial:m1616_3 +# 1616| r1616_5(glval<unknown>) = VariableAddress[#this] : +# 1616| m1616_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1616_5 +# 1616| r1616_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1616_5, m1616_6 +# 1616| m1616_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1616_7 +# 1617| r1617_1(glval<int &>) = VariableAddress[#return] : +# 1617| r1617_2(glval<unknown>) = VariableAddress[#this] : +# 1617| r1617_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1617_2, m1616_6 +# 1617| r1617_4(glval<int>) = FieldAddress[i] : r1617_3 +#-----| r0_1(int &) = CopyValue : r1617_4 +#-----| m0_2(int &) = Store[#return] : &:r1617_1, r0_1 +# 1616| v1616_9(void) = ReturnIndirection[#this] : &:r1616_7, m1616_8 +# 1616| r1616_10(glval<int &>) = VariableAddress[#return] : +# 1616| v1616_11(void) = ReturnValue : &:r1616_10, m0_2 +# 1616| v1616_12(void) = AliasedUse : m1616_3 +# 1616| v1616_13(void) = ExitFunction : + +# 1620| std::tuple_element<int 1, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 1>() +# 1620| Block 0 +# 1620| v1620_1(void) = EnterFunction : +# 1620| m1620_2(unknown) = AliasedDefinition : +# 1620| m1620_3(unknown) = InitializeNonLocal : +# 1620| m1620_4(unknown) = Chi : total:m1620_2, partial:m1620_3 +# 1620| r1620_5(glval<unknown>) = VariableAddress[#this] : +# 1620| m1620_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1620_5 +# 1620| r1620_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1620_5, m1620_6 +# 1620| m1620_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1620_7 +# 1621| r1621_1(glval<double &>) = VariableAddress[#return] : +# 1621| r1621_2(glval<unknown>) = VariableAddress[#this] : +# 1621| r1621_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1621_2, m1620_6 +# 1621| r1621_4(glval<double>) = FieldAddress[d] : r1621_3 +#-----| r0_1(double &) = CopyValue : r1621_4 +#-----| m0_2(double &) = Store[#return] : &:r1621_1, r0_1 +# 1620| v1620_9(void) = ReturnIndirection[#this] : &:r1620_7, m1620_8 +# 1620| r1620_10(glval<double &>) = VariableAddress[#return] : +# 1620| v1620_11(void) = ReturnValue : &:r1620_10, m0_2 +# 1620| v1620_12(void) = AliasedUse : m1620_3 +# 1620| v1620_13(void) = ExitFunction : + +# 1624| std::tuple_element<int 2, StructuredBindingTupleRefGet>::type StructuredBindingTupleRefGet::get<int 2>() +# 1624| Block 0 +# 1624| v1624_1(void) = EnterFunction : +# 1624| m1624_2(unknown) = AliasedDefinition : +# 1624| m1624_3(unknown) = InitializeNonLocal : +# 1624| m1624_4(unknown) = Chi : total:m1624_2, partial:m1624_3 +# 1624| r1624_5(glval<unknown>) = VariableAddress[#this] : +# 1624| m1624_6(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1624_5 +# 1624| r1624_7(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1624_5, m1624_6 +# 1624| m1624_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1624_7 +# 1625| r1625_1(glval<int &>) = VariableAddress[#return] : +# 1625| r1625_2(glval<unknown>) = VariableAddress[#this] : +# 1625| r1625_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1625_2, m1624_6 +# 1625| r1625_4(glval<int &>) = FieldAddress[r] : r1625_3 +# 1625| r1625_5(int &) = Load[?] : &:r1625_4, ~m1624_8 +# 1625| r1625_6(glval<int>) = CopyValue : r1625_5 +# 1625| r1625_7(int &) = CopyValue : r1625_6 +# 1625| m1625_8(int &) = Store[#return] : &:r1625_1, r1625_7 +# 1624| v1624_9(void) = ReturnIndirection[#this] : &:r1624_7, m1624_8 +# 1624| r1624_10(glval<int &>) = VariableAddress[#return] : +# 1624| v1624_11(void) = ReturnValue : &:r1624_10, m1625_8 +# 1624| v1624_12(void) = AliasedUse : m1624_3 +# 1624| v1624_13(void) = ExitFunction : + +# 1628| void tuple_structured_binding_ref_get() +# 1628| Block 0 +# 1628| v1628_1(void) = EnterFunction : +# 1628| m1628_2(unknown) = AliasedDefinition : +# 1628| m1628_3(unknown) = InitializeNonLocal : +# 1628| m1628_4(unknown) = Chi : total:m1628_2, partial:m1628_3 +# 1629| r1629_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : +# 1629| m1629_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1629_1 +# 1629| r1629_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleRefGet] : +# 1629| v1629_4(void) = Call[StructuredBindingTupleRefGet] : func:r1629_3, this:r1629_1 +# 1629| m1629_5(unknown) = ^CallSideEffect : ~m1628_4 +# 1629| m1629_6(unknown) = Chi : total:m1628_4, partial:m1629_5 +# 1629| m1629_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1629_1 +# 1629| m1629_8(StructuredBindingTupleRefGet) = Chi : total:m1629_2, partial:m1629_7 +# 1632| r1632_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : +# 1632| r1632_3(StructuredBindingTupleRefGet) = Load[t] : &:r1632_2, m1629_8 +# 1632| m1632_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1632_1, r1632_3 +# 1632| r1632_5(glval<int &>) = VariableAddress[i] : +# 1632| r1632_6(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_7(glval<unknown>) = FunctionAddress[get] : +# 1632| r1632_8(int &) = Call[get] : func:r1632_7, this:r1632_6 +# 1632| m1632_9(unknown) = ^CallSideEffect : ~m1629_6 +# 1632| m1632_10(unknown) = Chi : total:m1629_6, partial:m1632_9 +# 1632| v1632_11(void) = ^IndirectReadSideEffect[-1] : &:r1632_6, m1632_4 +# 1632| m1632_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_6 +# 1632| m1632_13(StructuredBindingTupleRefGet) = Chi : total:m1632_4, partial:m1632_12 +# 1632| r1632_14(glval<int>) = CopyValue : r1632_8 +# 1632| r1632_15(int &) = CopyValue : r1632_14 +# 1632| m1632_16(int &) = Store[i] : &:r1632_5, r1632_15 +# 1632| r1632_17(glval<double &>) = VariableAddress[d] : +# 1632| r1632_18(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_19(glval<unknown>) = FunctionAddress[get] : +# 1632| r1632_20(double &) = Call[get] : func:r1632_19, this:r1632_18 +# 1632| m1632_21(unknown) = ^CallSideEffect : ~m1632_10 +# 1632| m1632_22(unknown) = Chi : total:m1632_10, partial:m1632_21 +# 1632| v1632_23(void) = ^IndirectReadSideEffect[-1] : &:r1632_18, m1632_13 +# 1632| m1632_24(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_18 +# 1632| m1632_25(StructuredBindingTupleRefGet) = Chi : total:m1632_13, partial:m1632_24 +# 1632| r1632_26(glval<double>) = CopyValue : r1632_20 +# 1632| r1632_27(double &) = CopyValue : r1632_26 +# 1632| m1632_28(double &) = Store[d] : &:r1632_17, r1632_27 +# 1632| r1632_29(glval<int &>) = VariableAddress[r] : +# 1632| r1632_30(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_31(glval<unknown>) = FunctionAddress[get] : +# 1632| r1632_32(int &) = Call[get] : func:r1632_31, this:r1632_30 +# 1632| m1632_33(unknown) = ^CallSideEffect : ~m1632_22 +# 1632| m1632_34(unknown) = Chi : total:m1632_22, partial:m1632_33 +# 1632| v1632_35(void) = ^IndirectReadSideEffect[-1] : &:r1632_30, m1632_25 +# 1632| m1632_36(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_30 +# 1632| m1632_37(StructuredBindingTupleRefGet) = Chi : total:m1632_25, partial:m1632_36 +# 1632| r1632_38(glval<int>) = CopyValue : r1632_32 +# 1632| r1632_39(int &) = CopyValue : r1632_38 +# 1632| m1632_40(int &) = Store[r] : &:r1632_29, r1632_39 +# 1633| r1633_1(double) = Constant[4.0] : +# 1633| r1633_2(glval<double &>) = VariableAddress[d] : +# 1633| r1633_3(double &) = Load[d] : &:r1633_2, m1632_28 +# 1633| r1633_4(glval<double>) = CopyValue : r1633_3 +# 1633| m1633_5(double) = Store[?] : &:r1633_4, r1633_1 +# 1633| m1633_6(StructuredBindingTupleRefGet) = Chi : total:m1632_37, partial:m1633_5 +# 1634| r1634_1(glval<double &>) = VariableAddress[rd] : +# 1634| r1634_2(glval<double &>) = VariableAddress[d] : +# 1634| r1634_3(double &) = Load[d] : &:r1634_2, m1632_28 +# 1634| r1634_4(glval<double>) = CopyValue : r1634_3 +# 1634| r1634_5(double &) = CopyValue : r1634_4 +# 1634| m1634_6(double &) = Store[rd] : &:r1634_1, r1634_5 +# 1635| r1635_1(glval<int>) = VariableAddress[v] : +# 1635| r1635_2(glval<int &>) = VariableAddress[i] : +# 1635| r1635_3(int &) = Load[i] : &:r1635_2, m1632_16 +# 1635| r1635_4(int) = Load[?] : &:r1635_3, ~m1632_37 +# 1635| m1635_5(int) = Store[v] : &:r1635_1, r1635_4 +# 1636| r1636_1(int) = Constant[5] : +# 1636| r1636_2(glval<int &>) = VariableAddress[r] : +# 1636| r1636_3(int &) = Load[r] : &:r1636_2, m1632_40 +# 1636| r1636_4(glval<int>) = CopyValue : r1636_3 +# 1636| m1636_5(int) = Store[?] : &:r1636_4, r1636_1 +# 1636| m1636_6(unknown) = Chi : total:m1632_34, partial:m1636_5 +# 1637| r1637_1(glval<int &>) = VariableAddress[rr] : +# 1637| r1637_2(glval<int &>) = VariableAddress[r] : +# 1637| r1637_3(int &) = Load[r] : &:r1637_2, m1632_40 +# 1637| r1637_4(glval<int>) = CopyValue : r1637_3 +# 1637| r1637_5(int &) = CopyValue : r1637_4 +# 1637| m1637_6(int &) = Store[rr] : &:r1637_1, r1637_5 +# 1638| r1638_1(glval<int>) = VariableAddress[w] : +# 1638| r1638_2(glval<int &>) = VariableAddress[r] : +# 1638| r1638_3(int &) = Load[r] : &:r1638_2, m1632_40 +# 1638| r1638_4(int) = Load[?] : &:r1638_3, ~m1636_6 +# 1638| m1638_5(int) = Store[w] : &:r1638_1, r1638_4 +# 1642| r1642_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1642| r1642_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : +# 1642| r1642_3(StructuredBindingTupleRefGet) = Load[t] : &:r1642_2, m1629_8 +# 1642| m1642_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1642_1, r1642_3 +# 1643| r1643_1(glval<int &>) = VariableAddress[i] : +# 1643| r1643_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1643| r1643_3(glval<unknown>) = FunctionAddress[get] : +# 1643| r1643_4(int &) = Call[get] : func:r1643_3, this:r1643_2 +# 1643| m1643_5(unknown) = ^CallSideEffect : ~m1636_6 +# 1643| m1643_6(unknown) = Chi : total:m1636_6, partial:m1643_5 +# 1643| v1643_7(void) = ^IndirectReadSideEffect[-1] : &:r1643_2, m1642_4 +# 1643| m1643_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1643_2 +# 1643| m1643_9(StructuredBindingTupleRefGet) = Chi : total:m1642_4, partial:m1643_8 +# 1643| r1643_10(glval<int>) = CopyValue : r1643_4 +# 1643| r1643_11(int &) = CopyValue : r1643_10 +# 1643| m1643_12(int &) = Store[i] : &:r1643_1, r1643_11 +# 1644| r1644_1(glval<double &>) = VariableAddress[d] : +# 1644| r1644_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1644| r1644_3(glval<unknown>) = FunctionAddress[get] : +# 1644| r1644_4(double &) = Call[get] : func:r1644_3, this:r1644_2 +# 1644| m1644_5(unknown) = ^CallSideEffect : ~m1643_6 +# 1644| m1644_6(unknown) = Chi : total:m1643_6, partial:m1644_5 +# 1644| v1644_7(void) = ^IndirectReadSideEffect[-1] : &:r1644_2, m1643_9 +# 1644| m1644_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1644_2 +# 1644| m1644_9(StructuredBindingTupleRefGet) = Chi : total:m1643_9, partial:m1644_8 +# 1644| r1644_10(glval<double>) = CopyValue : r1644_4 +# 1644| r1644_11(double &) = CopyValue : r1644_10 +# 1644| m1644_12(double &) = Store[d] : &:r1644_1, r1644_11 +# 1645| r1645_1(glval<int &>) = VariableAddress[r] : +# 1645| r1645_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1645| r1645_3(glval<unknown>) = FunctionAddress[get] : +# 1645| r1645_4(int &) = Call[get] : func:r1645_3, this:r1645_2 +# 1645| m1645_5(unknown) = ^CallSideEffect : ~m1644_6 +# 1645| m1645_6(unknown) = Chi : total:m1644_6, partial:m1645_5 +# 1645| v1645_7(void) = ^IndirectReadSideEffect[-1] : &:r1645_2, m1644_9 +# 1645| m1645_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1645_2 +# 1645| m1645_9(StructuredBindingTupleRefGet) = Chi : total:m1644_9, partial:m1645_8 +# 1645| r1645_10(glval<int>) = CopyValue : r1645_4 +# 1645| r1645_11(int &) = CopyValue : r1645_10 +# 1645| m1645_12(int &) = Store[r] : &:r1645_1, r1645_11 +# 1646| r1646_1(double) = Constant[4.0] : +# 1646| r1646_2(glval<double &>) = VariableAddress[d] : +# 1646| r1646_3(double &) = Load[d] : &:r1646_2, m1644_12 +# 1646| r1646_4(glval<double>) = CopyValue : r1646_3 +# 1646| m1646_5(double) = Store[?] : &:r1646_4, r1646_1 +# 1646| m1646_6(StructuredBindingTupleRefGet) = Chi : total:m1645_9, partial:m1646_5 +# 1647| r1647_1(glval<double &>) = VariableAddress[rd] : +# 1647| r1647_2(glval<double &>) = VariableAddress[d] : +# 1647| r1647_3(double &) = Load[d] : &:r1647_2, m1644_12 +# 1647| r1647_4(glval<double>) = CopyValue : r1647_3 +# 1647| r1647_5(double &) = CopyValue : r1647_4 +# 1647| m1647_6(double &) = Store[rd] : &:r1647_1, r1647_5 +# 1648| r1648_1(glval<int>) = VariableAddress[v] : +# 1648| r1648_2(glval<int &>) = VariableAddress[i] : +# 1648| r1648_3(int &) = Load[i] : &:r1648_2, m1643_12 +# 1648| r1648_4(int) = Load[?] : &:r1648_3, ~m1645_9 +# 1648| m1648_5(int) = Store[v] : &:r1648_1, r1648_4 +# 1649| r1649_1(int) = Constant[5] : +# 1649| r1649_2(glval<int &>) = VariableAddress[r] : +# 1649| r1649_3(int &) = Load[r] : &:r1649_2, m1645_12 +# 1649| r1649_4(glval<int>) = CopyValue : r1649_3 +# 1649| m1649_5(int) = Store[?] : &:r1649_4, r1649_1 +# 1649| m1649_6(unknown) = Chi : total:m1645_6, partial:m1649_5 +# 1650| r1650_1(glval<int &>) = VariableAddress[rr] : +# 1650| r1650_2(glval<int &>) = VariableAddress[r] : +# 1650| r1650_3(int &) = Load[r] : &:r1650_2, m1645_12 +# 1650| r1650_4(glval<int>) = CopyValue : r1650_3 +# 1650| r1650_5(int &) = CopyValue : r1650_4 +# 1650| m1650_6(int &) = Store[rr] : &:r1650_1, r1650_5 +# 1651| r1651_1(glval<int>) = VariableAddress[w] : +# 1651| r1651_2(glval<int &>) = VariableAddress[r] : +# 1651| r1651_3(int &) = Load[r] : &:r1651_2, m1645_12 +# 1651| r1651_4(int) = Load[?] : &:r1651_3, ~m1649_6 +# 1651| m1651_5(int) = Store[w] : &:r1651_1, r1651_4 +# 1653| v1653_1(void) = NoOp : +# 1628| v1628_5(void) = ReturnVoid : +# 1628| v1628_6(void) = AliasedUse : ~m1649_6 +# 1628| v1628_7(void) = ExitFunction : + +# 1655| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1655| Block 0 +# 1655| v1655_1(void) = EnterFunction : +# 1655| m1655_2(unknown) = AliasedDefinition : +# 1655| m1655_3(unknown) = InitializeNonLocal : +# 1655| m1655_4(unknown) = Chi : total:m1655_2, partial:m1655_3 +# 1655| r1655_5(glval<unknown>) = VariableAddress[#this] : +# 1655| m1655_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1655_5 +# 1655| r1655_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1655_5, m1655_6 +# 1655| m1655_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1655_7 +# 1655| v1655_9(void) = NoOp : +# 1655| v1655_10(void) = ReturnIndirection[#this] : &:r1655_7, m1655_8 +# 1655| v1655_11(void) = ReturnVoid : +# 1655| v1655_12(void) = AliasedUse : m1655_3 +# 1655| v1655_13(void) = ExitFunction : + +# 1682| std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>() +# 1682| Block 0 +# 1682| v1682_1(void) = EnterFunction : +# 1682| m1682_2(unknown) = AliasedDefinition : +# 1682| m1682_3(unknown) = InitializeNonLocal : +# 1682| m1682_4(unknown) = Chi : total:m1682_2, partial:m1682_3 +# 1682| r1682_5(glval<unknown>) = VariableAddress[#this] : +# 1682| m1682_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1682_5 +# 1682| r1682_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1682_5, m1682_6 +# 1682| m1682_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1682_7 +# 1683| r1683_1(glval<int>) = VariableAddress[#return] : +# 1683| r1683_2(glval<unknown>) = VariableAddress[#this] : +# 1683| r1683_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1683_2, m1682_6 +# 1683| r1683_4(glval<int>) = FieldAddress[i] : r1683_3 +# 1683| r1683_5(int) = Load[?] : &:r1683_4, ~m1682_8 +# 1683| m1683_6(int) = Store[#return] : &:r1683_1, r1683_5 +# 1682| v1682_9(void) = ReturnIndirection[#this] : &:r1682_7, m1682_8 +# 1682| r1682_10(glval<int>) = VariableAddress[#return] : +# 1682| v1682_11(void) = ReturnValue : &:r1682_10, m1683_6 +# 1682| v1682_12(void) = AliasedUse : m1682_3 +# 1682| v1682_13(void) = ExitFunction : + +# 1686| std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>() +# 1686| Block 0 +# 1686| v1686_1(void) = EnterFunction : +# 1686| m1686_2(unknown) = AliasedDefinition : +# 1686| m1686_3(unknown) = InitializeNonLocal : +# 1686| m1686_4(unknown) = Chi : total:m1686_2, partial:m1686_3 +# 1686| r1686_5(glval<unknown>) = VariableAddress[#this] : +# 1686| m1686_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1686_5 +# 1686| r1686_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1686_5, m1686_6 +# 1686| m1686_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1686_7 +# 1687| r1687_1(glval<int &>) = VariableAddress[#return] : +# 1687| r1687_2(glval<unknown>) = VariableAddress[#this] : +# 1687| r1687_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1687_2, m1686_6 +# 1687| r1687_4(glval<int &>) = FieldAddress[r] : r1687_3 +# 1687| r1687_5(int &) = Load[?] : &:r1687_4, ~m1686_8 +# 1687| r1687_6(glval<int>) = CopyValue : r1687_5 +# 1687| r1687_7(int &) = CopyValue : r1687_6 +# 1687| m1687_8(int &) = Store[#return] : &:r1687_1, r1687_7 +# 1686| v1686_9(void) = ReturnIndirection[#this] : &:r1686_7, m1686_8 +# 1686| r1686_10(glval<int &>) = VariableAddress[#return] : +# 1686| v1686_11(void) = ReturnValue : &:r1686_10, m1687_8 +# 1686| v1686_12(void) = AliasedUse : m1686_3 +# 1686| v1686_13(void) = ExitFunction : + +# 1690| std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>() +# 1690| Block 0 +# 1690| v1690_1(void) = EnterFunction : +# 1690| m1690_2(unknown) = AliasedDefinition : +# 1690| m1690_3(unknown) = InitializeNonLocal : +# 1690| m1690_4(unknown) = Chi : total:m1690_2, partial:m1690_3 +# 1690| r1690_5(glval<unknown>) = VariableAddress[#this] : +# 1690| m1690_6(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1690_5 +# 1690| r1690_7(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1690_5, m1690_6 +# 1690| m1690_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1690_7 +# 1691| r1691_1(glval<int &&>) = VariableAddress[#return] : +# 1691| r1691_2(glval<int>) = VariableAddress[#temp1691:12] : +# 1691| r1691_3(int) = Constant[5] : +# 1691| m1691_4(int) = Store[#temp1691:12] : &:r1691_2, r1691_3 +# 1691| r1691_5(int &) = CopyValue : r1691_2 +# 1691| m1691_6(int &&) = Store[#return] : &:r1691_1, r1691_5 +# 1690| v1690_9(void) = ReturnIndirection[#this] : &:r1690_7, m1690_8 +# 1690| r1690_10(glval<int &&>) = VariableAddress[#return] : +# 1690| v1690_11(void) = ReturnValue : &:r1690_10, m1691_6 +# 1690| v1690_12(void) = AliasedUse : m1690_3 +# 1690| v1690_13(void) = ExitFunction : + +# 1694| void tuple_structured_binding_no_ref_get() +# 1694| Block 0 +# 1694| v1694_1(void) = EnterFunction : +# 1694| m1694_2(unknown) = AliasedDefinition : +# 1694| m1694_3(unknown) = InitializeNonLocal : +# 1694| m1694_4(unknown) = Chi : total:m1694_2, partial:m1694_3 +# 1695| r1695_1(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : +# 1695| m1695_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1695_1 +# 1695| r1695_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleNoRefGet] : +# 1695| v1695_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1695_3, this:r1695_1 +# 1695| m1695_5(unknown) = ^CallSideEffect : ~m1694_4 +# 1695| m1695_6(unknown) = Chi : total:m1694_4, partial:m1695_5 +# 1695| m1695_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1695_1 +# 1695| m1695_8(StructuredBindingTupleNoRefGet) = Chi : total:m1695_2, partial:m1695_7 +# 1698| r1698_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : +# 1698| r1698_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1698_2 +# 1698| m1698_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1698_1, r1698_3 +# 1698| r1698_5(glval<int &&>) = VariableAddress[i] : +# 1698| r1698_6(glval<int>) = VariableAddress[#temp1698:16] : +# 1698| r1698_7(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_7, m1698_4 +# 1698| r1698_9(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1698_8 +# 1698| r1698_10(glval<unknown>) = FunctionAddress[get] : +# 1698| r1698_11(int) = Call[get] : func:r1698_10, this:r1698_9 +# 1698| m1698_12(unknown) = ^CallSideEffect : ~m1695_6 +# 1698| m1698_13(unknown) = Chi : total:m1695_6, partial:m1698_12 +# 1698| v1698_14(void) = ^IndirectReadSideEffect[-1] : &:r1698_9, m1695_8 +# 1698| m1698_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_9 +# 1698| m1698_16(StructuredBindingTupleNoRefGet) = Chi : total:m1695_8, partial:m1698_15 +# 1698| m1698_17(int) = Store[#temp1698:16] : &:r1698_6, r1698_11 +# 1698| r1698_18(int &) = CopyValue : r1698_6 +# 1698| m1698_19(int &&) = Store[i] : &:r1698_5, r1698_18 +# 1698| r1698_20(glval<int &>) = VariableAddress[r] : +# 1698| r1698_21(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_22(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_21, m1698_4 +# 1698| r1698_23(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1698_22 +# 1698| r1698_24(glval<unknown>) = FunctionAddress[get] : +# 1698| r1698_25(int &) = Call[get] : func:r1698_24, this:r1698_23 +# 1698| m1698_26(unknown) = ^CallSideEffect : ~m1698_13 +# 1698| m1698_27(unknown) = Chi : total:m1698_13, partial:m1698_26 +# 1698| v1698_28(void) = ^IndirectReadSideEffect[-1] : &:r1698_23, m1698_16 +# 1698| m1698_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_23 +# 1698| m1698_30(StructuredBindingTupleNoRefGet) = Chi : total:m1698_16, partial:m1698_29 +# 1698| r1698_31(glval<int>) = CopyValue : r1698_25 +# 1698| r1698_32(int &) = CopyValue : r1698_31 +# 1698| m1698_33(int &) = Store[r] : &:r1698_20, r1698_32 +# 1698| r1698_34(glval<int &&>) = VariableAddress[rv] : +# 1698| r1698_35(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_36(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_35, m1698_4 +# 1698| r1698_37(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1698_36 +# 1698| r1698_38(glval<unknown>) = FunctionAddress[get] : +# 1698| r1698_39(int &&) = Call[get] : func:r1698_38, this:r1698_37 +# 1698| m1698_40(unknown) = ^CallSideEffect : ~m1698_27 +# 1698| m1698_41(unknown) = Chi : total:m1698_27, partial:m1698_40 +# 1698| v1698_42(void) = ^IndirectReadSideEffect[-1] : &:r1698_37, m1698_30 +# 1698| m1698_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_37 +# 1698| m1698_44(StructuredBindingTupleNoRefGet) = Chi : total:m1698_30, partial:m1698_43 +# 1698| r1698_45(glval<int>) = CopyValue : r1698_39 +# 1698| r1698_46(int &) = CopyValue : r1698_45 +# 1698| m1698_47(int &&) = Store[rv] : &:r1698_34, r1698_46 +# 1699| r1699_1(int) = Constant[4] : +# 1699| r1699_2(glval<int &&>) = VariableAddress[i] : +# 1699| r1699_3(int &&) = Load[i] : &:r1699_2, m1698_19 +# 1699| r1699_4(glval<int>) = CopyValue : r1699_3 +# 1699| m1699_5(int) = Store[?] : &:r1699_4, r1699_1 +# 1700| r1700_1(glval<int &>) = VariableAddress[ri] : +# 1700| r1700_2(glval<int &&>) = VariableAddress[i] : +# 1700| r1700_3(int &&) = Load[i] : &:r1700_2, m1698_19 +# 1700| r1700_4(glval<int>) = CopyValue : r1700_3 +# 1700| r1700_5(int &) = CopyValue : r1700_4 +# 1700| m1700_6(int &) = Store[ri] : &:r1700_1, r1700_5 +# 1701| r1701_1(glval<int>) = VariableAddress[v] : +# 1701| r1701_2(glval<int &&>) = VariableAddress[i] : +# 1701| r1701_3(int &&) = Load[i] : &:r1701_2, m1698_19 +# 1701| r1701_4(int) = Load[?] : &:r1701_3, m1699_5 +# 1701| m1701_5(int) = Store[v] : &:r1701_1, r1701_4 +# 1702| r1702_1(int) = Constant[5] : +# 1702| r1702_2(glval<int &>) = VariableAddress[r] : +# 1702| r1702_3(int &) = Load[r] : &:r1702_2, m1698_33 +# 1702| r1702_4(glval<int>) = CopyValue : r1702_3 +# 1702| m1702_5(int) = Store[?] : &:r1702_4, r1702_1 +# 1702| m1702_6(unknown) = Chi : total:m1698_41, partial:m1702_5 +# 1703| r1703_1(glval<int &>) = VariableAddress[rr] : +# 1703| r1703_2(glval<int &>) = VariableAddress[r] : +# 1703| r1703_3(int &) = Load[r] : &:r1703_2, m1698_33 +# 1703| r1703_4(glval<int>) = CopyValue : r1703_3 +# 1703| r1703_5(int &) = CopyValue : r1703_4 +# 1703| m1703_6(int &) = Store[rr] : &:r1703_1, r1703_5 +# 1704| r1704_1(glval<int>) = VariableAddress[w] : +# 1704| r1704_2(glval<int &>) = VariableAddress[r] : +# 1704| r1704_3(int &) = Load[r] : &:r1704_2, m1698_33 +# 1704| r1704_4(int) = Load[?] : &:r1704_3, ~m1702_6 +# 1704| m1704_5(int) = Store[w] : &:r1704_1, r1704_4 +# 1708| r1708_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1708| r1708_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : +# 1708| r1708_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1708_2 +# 1708| m1708_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1708_1, r1708_3 +# 1709| r1709_1(glval<int &&>) = VariableAddress[i] : +# 1709| r1709_2(glval<int>) = VariableAddress[#temp1709:20] : +# 1709| r1709_3(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1709| r1709_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1709_3, m1708_4 +# 1709| r1709_5(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1709_4 +# 1709| r1709_6(glval<unknown>) = FunctionAddress[get] : +# 1709| r1709_7(int) = Call[get] : func:r1709_6, this:r1709_5 +# 1709| m1709_8(unknown) = ^CallSideEffect : ~m1702_6 +# 1709| m1709_9(unknown) = Chi : total:m1702_6, partial:m1709_8 +# 1709| v1709_10(void) = ^IndirectReadSideEffect[-1] : &:r1709_5, m1698_44 +# 1709| m1709_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1709_5 +# 1709| m1709_12(StructuredBindingTupleNoRefGet) = Chi : total:m1698_44, partial:m1709_11 +# 1709| m1709_13(int) = Store[#temp1709:20] : &:r1709_2, r1709_7 +# 1709| r1709_14(int &) = CopyValue : r1709_2 +# 1709| m1709_15(int &&) = Store[i] : &:r1709_1, r1709_14 +# 1710| r1710_1(glval<int &>) = VariableAddress[r] : +# 1710| r1710_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1710| r1710_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1710_2, m1708_4 +# 1710| r1710_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1710_3 +# 1710| r1710_5(glval<unknown>) = FunctionAddress[get] : +# 1710| r1710_6(int &) = Call[get] : func:r1710_5, this:r1710_4 +# 1710| m1710_7(unknown) = ^CallSideEffect : ~m1709_9 +# 1710| m1710_8(unknown) = Chi : total:m1709_9, partial:m1710_7 +# 1710| v1710_9(void) = ^IndirectReadSideEffect[-1] : &:r1710_4, m1709_12 +# 1710| m1710_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1710_4 +# 1710| m1710_11(StructuredBindingTupleNoRefGet) = Chi : total:m1709_12, partial:m1710_10 +# 1710| r1710_12(glval<int>) = CopyValue : r1710_6 +# 1710| r1710_13(int &) = CopyValue : r1710_12 +# 1710| m1710_14(int &) = Store[r] : &:r1710_1, r1710_13 +# 1711| r1711_1(glval<int &&>) = VariableAddress[rv] : +# 1711| r1711_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1711| r1711_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1711_2, m1708_4 +# 1711| r1711_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1711_3 +# 1711| r1711_5(glval<unknown>) = FunctionAddress[get] : +# 1711| r1711_6(int &&) = Call[get] : func:r1711_5, this:r1711_4 +# 1711| m1711_7(unknown) = ^CallSideEffect : ~m1710_8 +# 1711| m1711_8(unknown) = Chi : total:m1710_8, partial:m1711_7 +# 1711| v1711_9(void) = ^IndirectReadSideEffect[-1] : &:r1711_4, m1710_11 +# 1711| m1711_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_4 +# 1711| m1711_11(StructuredBindingTupleNoRefGet) = Chi : total:m1710_11, partial:m1711_10 +# 1711| r1711_12(glval<int>) = CopyValue : r1711_6 +# 1711| r1711_13(int &) = CopyValue : r1711_12 +# 1711| m1711_14(int &&) = Store[rv] : &:r1711_1, r1711_13 +# 1712| r1712_1(int) = Constant[4] : +# 1712| r1712_2(glval<int &&>) = VariableAddress[i] : +# 1712| r1712_3(int &&) = Load[i] : &:r1712_2, m1709_15 +# 1712| r1712_4(glval<int>) = CopyValue : r1712_3 +# 1712| m1712_5(int) = Store[?] : &:r1712_4, r1712_1 +# 1713| r1713_1(glval<int &>) = VariableAddress[ri] : +# 1713| r1713_2(glval<int &&>) = VariableAddress[i] : +# 1713| r1713_3(int &&) = Load[i] : &:r1713_2, m1709_15 +# 1713| r1713_4(glval<int>) = CopyValue : r1713_3 +# 1713| r1713_5(int &) = CopyValue : r1713_4 +# 1713| m1713_6(int &) = Store[ri] : &:r1713_1, r1713_5 +# 1714| r1714_1(glval<int>) = VariableAddress[v] : +# 1714| r1714_2(glval<int &&>) = VariableAddress[i] : +# 1714| r1714_3(int &&) = Load[i] : &:r1714_2, m1709_15 +# 1714| r1714_4(int) = Load[?] : &:r1714_3, m1712_5 +# 1714| m1714_5(int) = Store[v] : &:r1714_1, r1714_4 +# 1715| r1715_1(int) = Constant[5] : +# 1715| r1715_2(glval<int &>) = VariableAddress[r] : +# 1715| r1715_3(int &) = Load[r] : &:r1715_2, m1710_14 +# 1715| r1715_4(glval<int>) = CopyValue : r1715_3 +# 1715| m1715_5(int) = Store[?] : &:r1715_4, r1715_1 +# 1715| m1715_6(unknown) = Chi : total:m1711_8, partial:m1715_5 +# 1716| r1716_1(glval<int &>) = VariableAddress[rr] : +# 1716| r1716_2(glval<int &>) = VariableAddress[r] : +# 1716| r1716_3(int &) = Load[r] : &:r1716_2, m1710_14 +# 1716| r1716_4(glval<int>) = CopyValue : r1716_3 +# 1716| r1716_5(int &) = CopyValue : r1716_4 +# 1716| m1716_6(int &) = Store[rr] : &:r1716_1, r1716_5 +# 1717| r1717_1(glval<int>) = VariableAddress[w] : +# 1717| r1717_2(glval<int &>) = VariableAddress[r] : +# 1717| r1717_3(int &) = Load[r] : &:r1717_2, m1710_14 +# 1717| r1717_4(int) = Load[?] : &:r1717_3, ~m1715_6 +# 1717| m1717_5(int) = Store[w] : &:r1717_1, r1717_4 +# 1719| v1719_1(void) = NoOp : +# 1694| v1694_5(void) = ReturnVoid : +# 1694| v1694_6(void) = AliasedUse : ~m1715_6 +# 1694| v1694_7(void) = ExitFunction : + +# 1721| void array_structured_binding_non_ref_init() +# 1721| Block 0 +# 1721| v1721_1(void) = EnterFunction : +# 1721| m1721_2(unknown) = AliasedDefinition : +# 1721| m1721_3(unknown) = InitializeNonLocal : +# 1721| m1721_4(unknown) = Chi : total:m1721_2, partial:m1721_3 +# 1722| r1722_1(glval<int[2]>) = VariableAddress[xs] : +# 1722| m1722_2(int[2]) = Uninitialized[xs] : &:r1722_1 +# 1722| r1722_3(int) = Constant[0] : +# 1722| r1722_4(glval<int>) = PointerAdd[4] : r1722_1, r1722_3 +# 1722| r1722_5(int) = Constant[1] : +# 1722| m1722_6(int) = Store[?] : &:r1722_4, r1722_5 +# 1722| m1722_7(int[2]) = Chi : total:m1722_2, partial:m1722_6 +# 1722| r1722_8(int) = Constant[1] : +# 1722| r1722_9(glval<int>) = PointerAdd[4] : r1722_1, r1722_8 +# 1722| r1722_10(int) = Constant[2] : +# 1722| m1722_11(int) = Store[?] : &:r1722_9, r1722_10 +# 1722| m1722_12(int[2]) = Chi : total:m1722_7, partial:m1722_11 +# 1723| r1723_1(glval<int[2]>) = VariableAddress[(unnamed local variable)] : +# 1723| r1723_2(glval<int[2]>) = VariableAddress[xs] : +# 1723| r1723_3(int[2]) = Load[xs] : &:r1723_2, m1722_12 +# 1723| m1723_4(int[2]) = Store[(unnamed local variable)] : &:r1723_1, r1723_3 +# 1723| r1723_5(glval<int &>) = VariableAddress[x0] : #-----| r0_1(glval<int[2]>) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int *) = Convert : r0_1 #-----| r0_3(unsigned long) = Constant[0] : #-----| r0_4(glval<int>) = PointerAdd[4] : r0_2, r0_3 -#-----| m0_5(int &) = Store[x0] : &:r1676_5, r0_4 -# 1676| r1676_6(glval<int &>) = VariableAddress[x1] : +#-----| m0_5(int &) = Store[x0] : &:r1723_5, r0_4 +# 1723| r1723_6(glval<int &>) = VariableAddress[x1] : #-----| r0_6(glval<int[2]>) = VariableAddress[(unnamed local variable)] : #-----| r0_7(int *) = Convert : r0_6 #-----| r0_8(unsigned long) = Constant[1] : #-----| r0_9(glval<int>) = PointerAdd[4] : r0_7, r0_8 -#-----| m0_10(int &) = Store[x1] : &:r1676_6, r0_9 -# 1677| v1677_1(void) = NoOp : -# 1674| v1674_5(void) = ReturnVoid : -# 1674| v1674_6(void) = AliasedUse : m1674_3 -# 1674| v1674_7(void) = ExitFunction : - -# 1682| void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1682| Block 0 -# 1682| v1682_1(void) = EnterFunction : -# 1682| m1682_2(unknown) = AliasedDefinition : -# 1682| m1682_3(unknown) = InitializeNonLocal : -# 1682| m1682_4(unknown) = Chi : total:m1682_2, partial:m1682_3 -# 1682| r1682_5(glval<unknown>) = VariableAddress[#this] : -# 1682| m1682_6(glval<CapturedLambdaMyObj>) = InitializeParameter[#this] : &:r1682_5 -# 1682| r1682_7(glval<CapturedLambdaMyObj>) = Load[#this] : &:r1682_5, m1682_6 -# 1682| m1682_8(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1682_7 -# 1682| v1682_9(void) = NoOp : -# 1682| v1682_10(void) = ReturnIndirection[#this] : &:r1682_7, m1682_8 -# 1682| v1682_11(void) = ReturnVoid : -# 1682| v1682_12(void) = AliasedUse : m1682_3 -# 1682| v1682_13(void) = ExitFunction : - -# 1685| void captured_lambda(int, int&, int&&) -# 1685| Block 0 -# 1685| v1685_1(void) = EnterFunction : -# 1685| m1685_2(unknown) = AliasedDefinition : -# 1685| m1685_3(unknown) = InitializeNonLocal : -# 1685| m1685_4(unknown) = Chi : total:m1685_2, partial:m1685_3 -# 1685| r1685_5(glval<int>) = VariableAddress[x] : -# 1685| m1685_6(int) = InitializeParameter[x] : &:r1685_5 -# 1685| r1685_7(glval<int &>) = VariableAddress[y] : -# 1685| m1685_8(int &) = InitializeParameter[y] : &:r1685_7 -# 1685| r1685_9(int &) = Load[y] : &:r1685_7, m1685_8 -# 1685| m1685_10(unknown) = InitializeIndirection[y] : &:r1685_9 -# 1685| r1685_11(glval<int &&>) = VariableAddress[z] : -# 1685| m1685_12(int &&) = InitializeParameter[z] : &:r1685_11 -# 1685| r1685_13(int &&) = Load[z] : &:r1685_11, m1685_12 -# 1685| m1685_14(unknown) = InitializeIndirection[z] : &:r1685_13 -# 1687| r1687_1(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : -# 1687| r1687_2(glval<CapturedLambdaMyObj>) = VariableAddress[#temp1687:24] : -# 1687| m1687_3(CapturedLambdaMyObj) = Uninitialized[#temp1687:24] : &:r1687_2 -# 1687| r1687_4(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : -# 1687| v1687_5(void) = Call[CapturedLambdaMyObj] : func:r1687_4, this:r1687_2 -# 1687| m1687_6(unknown) = ^CallSideEffect : ~m1685_4 -# 1687| m1687_7(unknown) = Chi : total:m1685_4, partial:m1687_6 -# 1687| m1687_8(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1687_2 -# 1687| m1687_9(CapturedLambdaMyObj) = Chi : total:m1687_3, partial:m1687_8 -# 1687| r1687_10(glval<CapturedLambdaMyObj>) = Convert : r1687_2 -# 1687| r1687_11(CapturedLambdaMyObj &) = CopyValue : r1687_10 -# 1687| m1687_12(CapturedLambdaMyObj &) = Store[obj1] : &:r1687_1, r1687_11 -# 1688| r1688_1(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : -# 1688| m1688_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1688_1 -# 1688| r1688_3(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : -# 1688| v1688_4(void) = Call[CapturedLambdaMyObj] : func:r1688_3, this:r1688_1 -# 1688| m1688_5(unknown) = ^CallSideEffect : ~m1687_7 -# 1688| m1688_6(unknown) = Chi : total:m1687_7, partial:m1688_5 -# 1688| m1688_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1688_1 -# 1688| m1688_8(CapturedLambdaMyObj) = Chi : total:m1688_2, partial:m1688_7 -# 1690| r1690_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_outer] : -# 1690| r1690_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1690:24] : -# 1690| m1690_3(decltype([...](...){...})) = Uninitialized[#temp1690:24] : &:r1690_2 -# 1690| r1690_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1690_2 -# 1690| r1690_5(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : -# 1690| r1690_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1690_5, m1687_12 -#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1690_6, m1687_9 -#-----| m0_2(CapturedLambdaMyObj) = Store[?] : &:r1690_4, r0_1 -#-----| m0_3(decltype([...](...){...})) = Chi : total:m1690_3, partial:m0_2 -# 1690| r1690_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1690_2 -# 1690| r1690_8(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : -# 1690| r1690_9(CapturedLambdaMyObj) = Load[obj2] : &:r1690_8, m1688_8 -# 1690| m1690_10(CapturedLambdaMyObj) = Store[?] : &:r1690_7, r1690_9 -# 1690| m1690_11(decltype([...](...){...})) = Chi : total:m0_3, partial:m1690_10 -# 1690| r1690_12(glval<int>) = FieldAddress[x] : r1690_2 -# 1690| r1690_13(glval<int>) = VariableAddress[x] : -# 1690| r1690_14(int) = Load[x] : &:r1690_13, m1685_6 -# 1690| m1690_15(int) = Store[?] : &:r1690_12, r1690_14 -# 1690| m1690_16(decltype([...](...){...})) = Chi : total:m1690_11, partial:m1690_15 -# 1690| r1690_17(glval<int>) = FieldAddress[y] : r1690_2 -# 1690| r1690_18(glval<int &>) = VariableAddress[y] : -# 1690| r1690_19(int &) = Load[y] : &:r1690_18, m1685_8 -# 1692| r1692_1(int) = Load[?] : &:r1690_19, ~m1685_10 -# 1692| m1692_2(int) = Store[?] : &:r1690_17, r1692_1 -# 1692| m1692_3(decltype([...](...){...})) = Chi : total:m1690_16, partial:m1692_2 -# 1690| r1690_20(glval<int>) = FieldAddress[z] : r1690_2 -# 1690| r1690_21(glval<int &&>) = VariableAddress[z] : -# 1690| r1690_22(int &&) = Load[z] : &:r1690_21, m1685_12 -# 1692| r1692_4(int) = Load[?] : &:r1690_22, ~m1685_14 -# 1692| m1692_5(int) = Store[?] : &:r1690_20, r1692_4 -# 1692| m1692_6(decltype([...](...){...})) = Chi : total:m1692_3, partial:m1692_5 -# 1690| r1690_23(decltype([...](...){...})) = Load[#temp1690:24] : &:r1690_2, m1692_6 -# 1690| m1690_24(decltype([...](...){...})) = Store[lambda_outer] : &:r1690_1, r1690_23 -# 1693| v1693_1(void) = NoOp : -# 1685| v1685_15(void) = ReturnIndirection[y] : &:r1685_9, m1685_10 -# 1685| v1685_16(void) = ReturnIndirection[z] : &:r1685_13, m1685_14 -# 1685| v1685_17(void) = ReturnVoid : -# 1685| v1685_18(void) = AliasedUse : ~m1688_6 -# 1685| v1685_19(void) = ExitFunction : - -# 1690| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const -# 1690| Block 0 -# 1690| v1690_1(void) = EnterFunction : -# 1690| m1690_2(unknown) = AliasedDefinition : -# 1690| m1690_3(unknown) = InitializeNonLocal : -# 1690| m1690_4(unknown) = Chi : total:m1690_2, partial:m1690_3 -# 1690| r1690_5(glval<unknown>) = VariableAddress[#this] : -# 1690| m1690_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1690_5 -# 1690| r1690_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1690_5, m1690_6 -# 1690| m1690_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1690_7 -# 1691| r1691_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_inner] : -# 1691| r1691_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1691:28] : -# 1691| m1691_3(decltype([...](...){...})) = Uninitialized[#temp1691:28] : &:r1691_2 -# 1691| r1691_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1691_2 -# 1691| r1691_5(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_6(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_5, m1690_6 -# 1691| r1691_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1691_6 -# 1691| r1691_8(CapturedLambdaMyObj) = Load[?] : &:r1691_7, ~m1690_8 -# 1691| m1691_9(CapturedLambdaMyObj) = Store[?] : &:r1691_4, r1691_8 -# 1691| m1691_10(decltype([...](...){...})) = Chi : total:m1691_3, partial:m1691_9 -# 1691| r1691_11(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1691_2 -# 1691| r1691_12(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_13(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_12, m1690_6 -# 1691| r1691_14(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1691_13 -# 1691| r1691_15(CapturedLambdaMyObj) = Load[?] : &:r1691_14, ~m1690_8 -# 1691| m1691_16(CapturedLambdaMyObj) = Store[?] : &:r1691_11, r1691_15 -# 1691| m1691_17(decltype([...](...){...})) = Chi : total:m1691_10, partial:m1691_16 -# 1691| r1691_18(glval<int>) = FieldAddress[x] : r1691_2 -# 1691| r1691_19(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_20(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_19, m1690_6 -# 1691| r1691_21(glval<int>) = FieldAddress[x] : r1691_20 -# 1691| r1691_22(int) = Load[?] : &:r1691_21, ~m1690_8 -# 1691| m1691_23(int) = Store[?] : &:r1691_18, r1691_22 -# 1691| m1691_24(decltype([...](...){...})) = Chi : total:m1691_17, partial:m1691_23 -# 1691| r1691_25(glval<int>) = FieldAddress[y] : r1691_2 -# 1691| r1691_26(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_27(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_26, m1690_6 -# 1691| r1691_28(glval<int>) = FieldAddress[y] : r1691_27 -# 1691| r1691_29(int) = Load[?] : &:r1691_28, ~m1690_8 -# 1691| m1691_30(int) = Store[?] : &:r1691_25, r1691_29 -# 1691| m1691_31(decltype([...](...){...})) = Chi : total:m1691_24, partial:m1691_30 -# 1691| r1691_32(glval<int>) = FieldAddress[z] : r1691_2 -# 1691| r1691_33(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_34(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_33, m1690_6 -# 1691| r1691_35(glval<int>) = FieldAddress[z] : r1691_34 -# 1691| r1691_36(int) = Load[?] : &:r1691_35, ~m1690_8 -# 1691| m1691_37(int) = Store[?] : &:r1691_32, r1691_36 -# 1691| m1691_38(decltype([...](...){...})) = Chi : total:m1691_31, partial:m1691_37 -# 1691| r1691_39(decltype([...](...){...})) = Load[#temp1691:28] : &:r1691_2, m1691_38 -# 1691| m1691_40(decltype([...](...){...})) = Store[lambda_inner] : &:r1691_1, r1691_39 -# 1692| v1692_1(void) = NoOp : -# 1690| v1690_9(void) = ReturnIndirection[#this] : &:r1690_7, m1690_8 -# 1690| v1690_10(void) = ReturnVoid : -# 1690| v1690_11(void) = AliasedUse : m1690_3 -# 1690| v1690_12(void) = ExitFunction : - -# 1691| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator()() const -# 1691| Block 0 -# 1691| v1691_1(void) = EnterFunction : -# 1691| m1691_2(unknown) = AliasedDefinition : -# 1691| m1691_3(unknown) = InitializeNonLocal : -# 1691| m1691_4(unknown) = Chi : total:m1691_2, partial:m1691_3 -# 1691| r1691_5(glval<unknown>) = VariableAddress[#this] : -# 1691| m1691_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1691_5 -# 1691| r1691_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1691_5, m1691_6 -# 1691| m1691_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1691_7 -# 1691| v1691_9(void) = NoOp : -# 1691| v1691_10(void) = NoOp : -# 1691| v1691_11(void) = ReturnIndirection[#this] : &:r1691_7, m1691_8 -# 1691| v1691_12(void) = ReturnVoid : -# 1691| v1691_13(void) = AliasedUse : m1691_3 -# 1691| v1691_14(void) = ExitFunction : - -# 1695| int goto_on_same_line() -# 1695| Block 0 -# 1695| v1695_1(void) = EnterFunction : -# 1695| m1695_2(unknown) = AliasedDefinition : -# 1695| m1695_3(unknown) = InitializeNonLocal : -# 1695| m1695_4(unknown) = Chi : total:m1695_2, partial:m1695_3 -# 1696| r1696_1(glval<int>) = VariableAddress[x] : -# 1696| r1696_2(int) = Constant[42] : -# 1696| m1696_3(int) = Store[x] : &:r1696_1, r1696_2 -# 1697| v1697_1(void) = NoOp : -# 1697| v1697_2(void) = NoOp : -# 1698| r1698_1(glval<int>) = VariableAddress[#return] : -# 1698| r1698_2(glval<int>) = VariableAddress[x] : -# 1698| r1698_3(int) = Load[x] : &:r1698_2, m1696_3 -# 1698| m1698_4(int) = Store[#return] : &:r1698_1, r1698_3 -# 1695| r1695_5(glval<int>) = VariableAddress[#return] : -# 1695| v1695_6(void) = ReturnValue : &:r1695_5, m1698_4 -# 1695| v1695_7(void) = AliasedUse : m1695_3 -# 1695| v1695_8(void) = ExitFunction : - -# 1703| void TrivialLambdaClass::m() const -# 1703| Block 0 -# 1703| v1703_1(void) = EnterFunction : -# 1703| m1703_2(unknown) = AliasedDefinition : -# 1703| m1703_3(unknown) = InitializeNonLocal : -# 1703| m1703_4(unknown) = Chi : total:m1703_2, partial:m1703_3 -# 1703| r1703_5(glval<unknown>) = VariableAddress[#this] : -# 1703| m1703_6(glval<TrivialLambdaClass>) = InitializeParameter[#this] : &:r1703_5 -# 1703| r1703_7(glval<TrivialLambdaClass>) = Load[#this] : &:r1703_5, m1703_6 -# 1703| m1703_8(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1703_7 -# 1704| r1704_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_outer] : -# 1704| r1704_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1704:25] : -# 1704| m1704_3(decltype([...](...){...})) = Uninitialized[#temp1704:25] : &:r1704_2 -# 1704| r1704_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1704_2 -# 1704| r1704_5(glval<unknown>) = VariableAddress[#this] : -# 1704| r1704_6(TrivialLambdaClass *) = Load[#this] : &:r1704_5, m1703_6 -# 1704| r1704_7(TrivialLambdaClass) = Load[?] : &:r1704_6, ~m1703_8 -# 1704| m1704_8(TrivialLambdaClass) = Store[?] : &:r1704_4, r1704_7 -# 1704| r1704_9(decltype([...](...){...})) = Load[#temp1704:25] : &:r1704_2, ~m1704_8 -# 1704| m1704_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1704_1, r1704_9 -# 1711| v1711_1(void) = NoOp : -# 1703| v1703_9(void) = ReturnIndirection[#this] : &:r1703_7, m1703_8 -# 1703| v1703_10(void) = ReturnVoid : -# 1703| v1703_11(void) = AliasedUse : m1703_3 -# 1703| v1703_12(void) = ExitFunction : - -# 1704| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const -# 1704| Block 0 -# 1704| v1704_1(void) = EnterFunction : -# 1704| m1704_2(unknown) = AliasedDefinition : -# 1704| m1704_3(unknown) = InitializeNonLocal : -# 1704| m1704_4(unknown) = Chi : total:m1704_2, partial:m1704_3 -# 1704| r1704_5(glval<unknown>) = VariableAddress[#this] : -# 1704| m1704_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1704_5 -# 1704| r1704_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1704_5, m1704_6 -# 1704| m1704_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1704_7 -# 1705| r1705_1(glval<unknown>) = VariableAddress[#this] : -# 1705| r1705_2(lambda [] type at line 1704, col. 26 *) = Load[#this] : &:r1705_1, m1704_6 -# 1705| r1705_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1705_2 -# 1705| r1705_4(TrivialLambdaClass *) = CopyValue : r1705_3 -# 1705| r1705_5(glval<unknown>) = FunctionAddress[m] : -# 1705| v1705_6(void) = Call[m] : func:r1705_5, this:r1705_4 -# 1705| m1705_7(unknown) = ^CallSideEffect : ~m1704_4 -# 1705| m1705_8(unknown) = Chi : total:m1704_4, partial:m1705_7 -# 1705| v1705_9(void) = ^IndirectReadSideEffect[-1] : &:r1705_4, ~m1704_8 -# 1707| r1707_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_inner] : -# 1707| r1707_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1707:29] : -# 1707| m1707_3(decltype([...](...){...})) = Uninitialized[#temp1707:29] : &:r1707_2 -# 1707| r1707_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1707_2 -# 1707| r1707_5(glval<unknown>) = VariableAddress[#this] : -# 1707| r1707_6(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1707_5, m1704_6 -# 1707| r1707_7(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1707_6 -# 1707| r1707_8(TrivialLambdaClass) = Load[?] : &:r1707_7, ~m1704_8 -# 1707| m1707_9(TrivialLambdaClass) = Store[?] : &:r1707_4, r1707_8 -# 1707| r1707_10(decltype([...](...){...})) = Load[#temp1707:29] : &:r1707_2, ~m1707_9 -# 1707| m1707_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1707_1, r1707_10 -# 1710| v1710_1(void) = NoOp : -# 1704| v1704_9(void) = ReturnIndirection[#this] : &:r1704_7, m1704_8 -# 1704| v1704_10(void) = ReturnVoid : -# 1704| v1704_11(void) = AliasedUse : ~m1705_8 -# 1704| v1704_12(void) = ExitFunction : - -# 1707| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator()() const -# 1707| Block 0 -# 1707| v1707_1(void) = EnterFunction : -# 1707| m1707_2(unknown) = AliasedDefinition : -# 1707| m1707_3(unknown) = InitializeNonLocal : -# 1707| m1707_4(unknown) = Chi : total:m1707_2, partial:m1707_3 -# 1707| r1707_5(glval<unknown>) = VariableAddress[#this] : -# 1707| m1707_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1707_5 -# 1707| r1707_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1707_5, m1707_6 -# 1707| m1707_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1707_7 -# 1708| r1708_1(glval<unknown>) = VariableAddress[#this] : -# 1708| r1708_2(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1708_1, m1707_6 -# 1708| r1708_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1708_2 -# 1708| r1708_4(TrivialLambdaClass *) = CopyValue : r1708_3 -# 1708| r1708_5(glval<unknown>) = FunctionAddress[m] : -# 1708| v1708_6(void) = Call[m] : func:r1708_5, this:r1708_4 -# 1708| m1708_7(unknown) = ^CallSideEffect : ~m1707_4 -# 1708| m1708_8(unknown) = Chi : total:m1707_4, partial:m1708_7 -# 1708| v1708_9(void) = ^IndirectReadSideEffect[-1] : &:r1708_4, ~m1707_8 -# 1709| v1709_1(void) = NoOp : -# 1707| v1707_9(void) = ReturnIndirection[#this] : &:r1707_7, m1707_8 -# 1707| v1707_10(void) = ReturnVoid : -# 1707| v1707_11(void) = AliasedUse : ~m1708_8 -# 1707| v1707_12(void) = ExitFunction : - -# 1714| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1714| Block 0 -# 1714| v1714_1(void) = EnterFunction : -# 1714| m1714_2(unknown) = AliasedDefinition : -# 1714| m1714_3(unknown) = InitializeNonLocal : -# 1714| m1714_4(unknown) = Chi : total:m1714_2, partial:m1714_3 -# 1714| r1714_5(glval<TrivialLambdaClass>) = VariableAddress[p1] : -# 1714| m1714_6(TrivialLambdaClass) = InitializeParameter[p1] : &:r1714_5 -# 1714| r1714_7(glval<TrivialLambdaClass &>) = VariableAddress[p2] : -# 1714| m1714_8(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1714_7 -# 1714| r1714_9(TrivialLambdaClass &) = Load[p2] : &:r1714_7, m1714_8 -# 1714| m1714_10(unknown) = InitializeIndirection[p2] : &:r1714_9 -# 1714| r1714_11(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : -# 1714| m1714_12(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1714_11 -# 1714| r1714_13(TrivialLambdaClass &&) = Load[p3] : &:r1714_11, m1714_12 -# 1714| m1714_14(unknown) = InitializeIndirection[p3] : &:r1714_13 -# 1715| r1715_1(glval<TrivialLambdaClass>) = VariableAddress[l1] : -# 1715| m1715_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1715_1 -# 1716| r1716_1(glval<TrivialLambdaClass &>) = VariableAddress[l2] : -# 1716| r1716_2(glval<TrivialLambdaClass>) = VariableAddress[#temp1716:36] : -# 1716| r1716_3(TrivialLambdaClass) = Constant[0] : -# 1716| m1716_4(TrivialLambdaClass) = Store[#temp1716:36] : &:r1716_2, r1716_3 -# 1716| r1716_5(glval<TrivialLambdaClass>) = Convert : r1716_2 -# 1716| r1716_6(TrivialLambdaClass &) = CopyValue : r1716_5 -# 1716| m1716_7(TrivialLambdaClass &) = Store[l2] : &:r1716_1, r1716_6 -# 1718| r1718_1(glval<decltype([...](...){...})>) = VariableAddress[l_outer1] : -# 1718| r1718_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1718:20] : -# 1718| m1718_3(decltype([...](...){...})) = Uninitialized[#temp1718:20] : &:r1718_2 -# 1718| r1718_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1718_2 -# 1718| r1718_5(glval<TrivialLambdaClass>) = VariableAddress[p1] : -# 1718| r1718_6(TrivialLambdaClass) = Load[p1] : &:r1718_5, m1714_6 -# 1718| m1718_7(TrivialLambdaClass) = Store[?] : &:r1718_4, r1718_6 -# 1718| m1718_8(decltype([...](...){...})) = Chi : total:m1718_3, partial:m1718_7 -# 1718| r1718_9(glval<TrivialLambdaClass>) = FieldAddress[p2] : r1718_2 -# 1718| r1718_10(glval<TrivialLambdaClass &>) = VariableAddress[p2] : -# 1718| r1718_11(TrivialLambdaClass &) = Load[p2] : &:r1718_10, m1714_8 -#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1718_11, ~m1714_10 -#-----| m0_2(TrivialLambdaClass) = Store[?] : &:r1718_9, r0_1 -#-----| m0_3(decltype([...](...){...})) = Chi : total:m1718_8, partial:m0_2 -# 1718| r1718_12(glval<TrivialLambdaClass>) = FieldAddress[p3] : r1718_2 -# 1718| r1718_13(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : -# 1718| r1718_14(TrivialLambdaClass &&) = Load[p3] : &:r1718_13, m1714_12 -#-----| r0_4(TrivialLambdaClass) = Load[?] : &:r1718_14, ~m1714_14 -#-----| m0_5(TrivialLambdaClass) = Store[?] : &:r1718_12, r0_4 -#-----| m0_6(decltype([...](...){...})) = Chi : total:m0_3, partial:m0_5 -# 1718| r1718_15(glval<TrivialLambdaClass>) = FieldAddress[l1] : r1718_2 -# 1718| r1718_16(glval<TrivialLambdaClass>) = VariableAddress[l1] : -# 1718| r1718_17(TrivialLambdaClass) = Load[l1] : &:r1718_16, m1715_2 -# 1718| m1718_18(TrivialLambdaClass) = Store[?] : &:r1718_15, r1718_17 -# 1718| m1718_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1718_18 -# 1718| r1718_20(glval<TrivialLambdaClass>) = FieldAddress[l2] : r1718_2 -# 1718| r1718_21(glval<TrivialLambdaClass &>) = VariableAddress[l2] : -# 1718| r1718_22(TrivialLambdaClass &) = Load[l2] : &:r1718_21, m1716_7 -#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1718_22, m1716_4 -#-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1718_20, r0_7 -#-----| m0_9(decltype([...](...){...})) = Chi : total:m1718_19, partial:m0_8 -# 1718| r1718_23(decltype([...](...){...})) = Load[#temp1718:20] : &:r1718_2, m0_9 -# 1718| m1718_24(decltype([...](...){...})) = Store[l_outer1] : &:r1718_1, r1718_23 -# 1721| v1721_1(void) = NoOp : -# 1714| v1714_15(void) = ReturnIndirection[p2] : &:r1714_9, m1714_10 -# 1714| v1714_16(void) = ReturnIndirection[p3] : &:r1714_13, m1714_14 -# 1714| v1714_17(void) = ReturnVoid : -# 1714| v1714_18(void) = AliasedUse : m1714_3 -# 1714| v1714_19(void) = ExitFunction : - -# 1718| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const -# 1718| Block 0 -# 1718| v1718_1(void) = EnterFunction : -# 1718| m1718_2(unknown) = AliasedDefinition : -# 1718| m1718_3(unknown) = InitializeNonLocal : -# 1718| m1718_4(unknown) = Chi : total:m1718_2, partial:m1718_3 -# 1718| r1718_5(glval<unknown>) = VariableAddress[#this] : -# 1718| m1718_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1718_5 -# 1718| r1718_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1718_5, m1718_6 -# 1718| m1718_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1718_7 -# 1719| r1719_1(glval<decltype([...](...){...})>) = VariableAddress[l_inner1] : -# 1719| r1719_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1719:24] : -# 1719| m1719_3(decltype([...](...){...})) = Uninitialized[#temp1719:24] : &:r1719_2 -# 1719| r1719_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1719_2 -# 1719| r1719_5(glval<unknown>) = VariableAddress[#this] : -# 1719| r1719_6(lambda [] type at line 1719, col. 25 *) = Load[#this] : &:r1719_5, m1718_6 -# 1719| r1719_7(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1719_6 -# 1719| r1719_8(TrivialLambdaClass) = Load[?] : &:r1719_7, ~m1718_8 -# 1719| m1719_9(TrivialLambdaClass) = Store[?] : &:r1719_4, r1719_8 -# 1719| r1719_10(decltype([...](...){...})) = Load[#temp1719:24] : &:r1719_2, ~m1719_9 -# 1719| m1719_11(decltype([...](...){...})) = Store[l_inner1] : &:r1719_1, r1719_10 -# 1720| v1720_1(void) = NoOp : -# 1718| v1718_9(void) = ReturnIndirection[#this] : &:r1718_7, m1718_8 -# 1718| v1718_10(void) = ReturnVoid : -# 1718| v1718_11(void) = AliasedUse : m1718_3 -# 1718| v1718_12(void) = ExitFunction : - -# 1719| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator()() const -# 1719| Block 0 -# 1719| v1719_1(void) = EnterFunction : -# 1719| m1719_2(unknown) = AliasedDefinition : -# 1719| m1719_3(unknown) = InitializeNonLocal : -# 1719| m1719_4(unknown) = Chi : total:m1719_2, partial:m1719_3 -# 1719| r1719_5(glval<unknown>) = VariableAddress[#this] : -# 1719| m1719_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1719_5 -# 1719| r1719_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1719_5, m1719_6 -# 1719| m1719_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1719_7 -# 1719| v1719_9(void) = NoOp : -# 1719| v1719_10(void) = ReturnIndirection[#this] : &:r1719_7, m1719_8 -# 1719| v1719_11(void) = ReturnVoid : -# 1719| v1719_12(void) = AliasedUse : m1719_3 -# 1719| v1719_13(void) = ExitFunction : - -# 1726| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1726| Block 0 -# 1726| v1726_1(void) = EnterFunction : -# 1726| m1726_2(unknown) = AliasedDefinition : -# 1726| m1726_3(unknown) = InitializeNonLocal : -# 1726| m1726_4(unknown) = Chi : total:m1726_2, partial:m1726_3 -# 1726| r1726_5(glval<unknown>) = VariableAddress[#this] : -# 1726| m1726_6(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1726_5 -# 1726| r1726_7(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1726_5, m1726_6 -# 1726| m1726_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1726_7 -# 1726| v1726_9(void) = NoOp : -# 1726| v1726_10(void) = ReturnIndirection[#this] : &:r1726_7, m1726_8 -# 1726| v1726_11(void) = ReturnVoid : -# 1726| v1726_12(void) = AliasedUse : m1726_3 -# 1726| v1726_13(void) = ExitFunction : - -# 1727| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1727| Block 0 -# 1727| v1727_1(void) = EnterFunction : -# 1727| m1727_2(unknown) = AliasedDefinition : -# 1727| m1727_3(unknown) = InitializeNonLocal : -# 1727| m1727_4(unknown) = Chi : total:m1727_2, partial:m1727_3 -# 1727| r1727_5(glval<unknown>) = VariableAddress[#this] : -# 1727| m1727_6(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1727_5 -# 1727| r1727_7(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1727_5, m1727_6 -# 1727| m1727_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1727_7 -# 1727| r1727_9(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : -# 1727| m1727_10(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1727_9 -# 1727| r1727_11(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1727_9, m1727_10 -# 1727| m1727_12(unknown) = InitializeIndirection[c] : &:r1727_11 -# 1728| r1728_1(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : -# 1728| r1728_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1728_1, m1727_10 -# 1728| r1728_3(glval<CopyConstructorWithImplicitArgumentClass>) = CopyValue : r1728_2 -# 1728| r1728_4(glval<int>) = FieldAddress[x] : r1728_3 -# 1728| r1728_5(int) = Load[?] : &:r1728_4, ~m1727_12 -# 1728| r1728_6(glval<unknown>) = VariableAddress[#this] : -# 1728| r1728_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1728_6, m1727_6 -# 1728| r1728_8(glval<int>) = FieldAddress[x] : r1728_7 -# 1728| m1728_9(int) = Store[?] : &:r1728_8, r1728_5 -# 1728| m1728_10(unknown) = Chi : total:m1727_8, partial:m1728_9 -# 1729| v1729_1(void) = NoOp : -# 1727| v1727_13(void) = ReturnIndirection[#this] : &:r1727_7, m1728_10 -# 1727| v1727_14(void) = ReturnIndirection[c] : &:r1727_11, m1727_12 -# 1727| v1727_15(void) = ReturnVoid : -# 1727| v1727_16(void) = AliasedUse : m1727_3 -# 1727| v1727_17(void) = ExitFunction : - -# 1735| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1735| Block 0 -# 1735| v1735_1(void) = EnterFunction : -# 1735| m1735_2(unknown) = AliasedDefinition : -# 1735| m1735_3(unknown) = InitializeNonLocal : -# 1735| m1735_4(unknown) = Chi : total:m1735_2, partial:m1735_3 -# 1735| r1735_5(glval<unknown>) = VariableAddress[#this] : -# 1735| m1735_6(glval<CopyConstructorWithBitwiseCopyClass>) = InitializeParameter[#this] : &:r1735_5 -# 1735| r1735_7(glval<CopyConstructorWithBitwiseCopyClass>) = Load[#this] : &:r1735_5, m1735_6 -# 1735| m1735_8(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1735_7 -# 1735| v1735_9(void) = NoOp : -# 1735| v1735_10(void) = ReturnIndirection[#this] : &:r1735_7, m1735_8 -# 1735| v1735_11(void) = ReturnVoid : -# 1735| v1735_12(void) = AliasedUse : m1735_3 -# 1735| v1735_13(void) = ExitFunction : - -# 1738| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +#-----| m0_10(int &) = Store[x1] : &:r1723_6, r0_9 +# 1724| v1724_1(void) = NoOp : +# 1721| v1721_5(void) = ReturnVoid : +# 1721| v1721_6(void) = AliasedUse : m1721_3 +# 1721| v1721_7(void) = ExitFunction : + +# 1729| void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1729| Block 0 +# 1729| v1729_1(void) = EnterFunction : +# 1729| m1729_2(unknown) = AliasedDefinition : +# 1729| m1729_3(unknown) = InitializeNonLocal : +# 1729| m1729_4(unknown) = Chi : total:m1729_2, partial:m1729_3 +# 1729| r1729_5(glval<unknown>) = VariableAddress[#this] : +# 1729| m1729_6(glval<CapturedLambdaMyObj>) = InitializeParameter[#this] : &:r1729_5 +# 1729| r1729_7(glval<CapturedLambdaMyObj>) = Load[#this] : &:r1729_5, m1729_6 +# 1729| m1729_8(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1729_7 +# 1729| v1729_9(void) = NoOp : +# 1729| v1729_10(void) = ReturnIndirection[#this] : &:r1729_7, m1729_8 +# 1729| v1729_11(void) = ReturnVoid : +# 1729| v1729_12(void) = AliasedUse : m1729_3 +# 1729| v1729_13(void) = ExitFunction : + +# 1732| void captured_lambda(int, int&, int&&) +# 1732| Block 0 +# 1732| v1732_1(void) = EnterFunction : +# 1732| m1732_2(unknown) = AliasedDefinition : +# 1732| m1732_3(unknown) = InitializeNonLocal : +# 1732| m1732_4(unknown) = Chi : total:m1732_2, partial:m1732_3 +# 1732| r1732_5(glval<int>) = VariableAddress[x] : +# 1732| m1732_6(int) = InitializeParameter[x] : &:r1732_5 +# 1732| r1732_7(glval<int &>) = VariableAddress[y] : +# 1732| m1732_8(int &) = InitializeParameter[y] : &:r1732_7 +# 1732| r1732_9(int &) = Load[y] : &:r1732_7, m1732_8 +# 1732| m1732_10(unknown) = InitializeIndirection[y] : &:r1732_9 +# 1732| r1732_11(glval<int &&>) = VariableAddress[z] : +# 1732| m1732_12(int &&) = InitializeParameter[z] : &:r1732_11 +# 1732| r1732_13(int &&) = Load[z] : &:r1732_11, m1732_12 +# 1732| m1732_14(unknown) = InitializeIndirection[z] : &:r1732_13 +# 1734| r1734_1(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : +# 1734| r1734_2(glval<CapturedLambdaMyObj>) = VariableAddress[#temp1734:24] : +# 1734| m1734_3(CapturedLambdaMyObj) = Uninitialized[#temp1734:24] : &:r1734_2 +# 1734| r1734_4(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : +# 1734| v1734_5(void) = Call[CapturedLambdaMyObj] : func:r1734_4, this:r1734_2 +# 1734| m1734_6(unknown) = ^CallSideEffect : ~m1732_4 +# 1734| m1734_7(unknown) = Chi : total:m1732_4, partial:m1734_6 +# 1734| m1734_8(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1734_2 +# 1734| m1734_9(CapturedLambdaMyObj) = Chi : total:m1734_3, partial:m1734_8 +# 1734| r1734_10(glval<CapturedLambdaMyObj>) = Convert : r1734_2 +# 1734| r1734_11(CapturedLambdaMyObj &) = CopyValue : r1734_10 +# 1734| m1734_12(CapturedLambdaMyObj &) = Store[obj1] : &:r1734_1, r1734_11 +# 1735| r1735_1(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : +# 1735| m1735_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1735_1 +# 1735| r1735_3(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : +# 1735| v1735_4(void) = Call[CapturedLambdaMyObj] : func:r1735_3, this:r1735_1 +# 1735| m1735_5(unknown) = ^CallSideEffect : ~m1734_7 +# 1735| m1735_6(unknown) = Chi : total:m1734_7, partial:m1735_5 +# 1735| m1735_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1735_1 +# 1735| m1735_8(CapturedLambdaMyObj) = Chi : total:m1735_2, partial:m1735_7 +# 1737| r1737_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_outer] : +# 1737| r1737_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1737:24] : +# 1737| m1737_3(decltype([...](...){...})) = Uninitialized[#temp1737:24] : &:r1737_2 +# 1737| r1737_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1737_2 +# 1737| r1737_5(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : +# 1737| r1737_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1737_5, m1734_12 +#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1737_6, m1734_9 +#-----| m0_2(CapturedLambdaMyObj) = Store[?] : &:r1737_4, r0_1 +#-----| m0_3(decltype([...](...){...})) = Chi : total:m1737_3, partial:m0_2 +# 1737| r1737_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1737_2 +# 1737| r1737_8(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : +# 1737| r1737_9(CapturedLambdaMyObj) = Load[obj2] : &:r1737_8, m1735_8 +# 1737| m1737_10(CapturedLambdaMyObj) = Store[?] : &:r1737_7, r1737_9 +# 1737| m1737_11(decltype([...](...){...})) = Chi : total:m0_3, partial:m1737_10 +# 1737| r1737_12(glval<int>) = FieldAddress[x] : r1737_2 +# 1737| r1737_13(glval<int>) = VariableAddress[x] : +# 1737| r1737_14(int) = Load[x] : &:r1737_13, m1732_6 +# 1737| m1737_15(int) = Store[?] : &:r1737_12, r1737_14 +# 1737| m1737_16(decltype([...](...){...})) = Chi : total:m1737_11, partial:m1737_15 +# 1737| r1737_17(glval<int>) = FieldAddress[y] : r1737_2 +# 1737| r1737_18(glval<int &>) = VariableAddress[y] : +# 1737| r1737_19(int &) = Load[y] : &:r1737_18, m1732_8 +# 1739| r1739_1(int) = Load[?] : &:r1737_19, ~m1732_10 +# 1739| m1739_2(int) = Store[?] : &:r1737_17, r1739_1 +# 1739| m1739_3(decltype([...](...){...})) = Chi : total:m1737_16, partial:m1739_2 +# 1737| r1737_20(glval<int>) = FieldAddress[z] : r1737_2 +# 1737| r1737_21(glval<int &&>) = VariableAddress[z] : +# 1737| r1737_22(int &&) = Load[z] : &:r1737_21, m1732_12 +# 1739| r1739_4(int) = Load[?] : &:r1737_22, ~m1732_14 +# 1739| m1739_5(int) = Store[?] : &:r1737_20, r1739_4 +# 1739| m1739_6(decltype([...](...){...})) = Chi : total:m1739_3, partial:m1739_5 +# 1737| r1737_23(decltype([...](...){...})) = Load[#temp1737:24] : &:r1737_2, m1739_6 +# 1737| m1737_24(decltype([...](...){...})) = Store[lambda_outer] : &:r1737_1, r1737_23 +# 1740| v1740_1(void) = NoOp : +# 1732| v1732_15(void) = ReturnIndirection[y] : &:r1732_9, m1732_10 +# 1732| v1732_16(void) = ReturnIndirection[z] : &:r1732_13, m1732_14 +# 1732| v1732_17(void) = ReturnVoid : +# 1732| v1732_18(void) = AliasedUse : ~m1735_6 +# 1732| v1732_19(void) = ExitFunction : + +# 1737| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const +# 1737| Block 0 +# 1737| v1737_1(void) = EnterFunction : +# 1737| m1737_2(unknown) = AliasedDefinition : +# 1737| m1737_3(unknown) = InitializeNonLocal : +# 1737| m1737_4(unknown) = Chi : total:m1737_2, partial:m1737_3 +# 1737| r1737_5(glval<unknown>) = VariableAddress[#this] : +# 1737| m1737_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1737_5 +# 1737| r1737_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1737_5, m1737_6 +# 1737| m1737_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1737_7 +# 1738| r1738_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_inner] : +# 1738| r1738_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1738:28] : +# 1738| m1738_3(decltype([...](...){...})) = Uninitialized[#temp1738:28] : &:r1738_2 +# 1738| r1738_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1738_2 +# 1738| r1738_5(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_6(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_5, m1737_6 +# 1738| r1738_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1738_6 +# 1738| r1738_8(CapturedLambdaMyObj) = Load[?] : &:r1738_7, ~m1737_8 +# 1738| m1738_9(CapturedLambdaMyObj) = Store[?] : &:r1738_4, r1738_8 +# 1738| m1738_10(decltype([...](...){...})) = Chi : total:m1738_3, partial:m1738_9 +# 1738| r1738_11(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1738_2 +# 1738| r1738_12(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_13(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_12, m1737_6 +# 1738| r1738_14(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1738_13 +# 1738| r1738_15(CapturedLambdaMyObj) = Load[?] : &:r1738_14, ~m1737_8 +# 1738| m1738_16(CapturedLambdaMyObj) = Store[?] : &:r1738_11, r1738_15 +# 1738| m1738_17(decltype([...](...){...})) = Chi : total:m1738_10, partial:m1738_16 +# 1738| r1738_18(glval<int>) = FieldAddress[x] : r1738_2 +# 1738| r1738_19(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_20(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_19, m1737_6 +# 1738| r1738_21(glval<int>) = FieldAddress[x] : r1738_20 +# 1738| r1738_22(int) = Load[?] : &:r1738_21, ~m1737_8 +# 1738| m1738_23(int) = Store[?] : &:r1738_18, r1738_22 +# 1738| m1738_24(decltype([...](...){...})) = Chi : total:m1738_17, partial:m1738_23 +# 1738| r1738_25(glval<int>) = FieldAddress[y] : r1738_2 +# 1738| r1738_26(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_27(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_26, m1737_6 +# 1738| r1738_28(glval<int>) = FieldAddress[y] : r1738_27 +# 1738| r1738_29(int) = Load[?] : &:r1738_28, ~m1737_8 +# 1738| m1738_30(int) = Store[?] : &:r1738_25, r1738_29 +# 1738| m1738_31(decltype([...](...){...})) = Chi : total:m1738_24, partial:m1738_30 +# 1738| r1738_32(glval<int>) = FieldAddress[z] : r1738_2 +# 1738| r1738_33(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_34(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_33, m1737_6 +# 1738| r1738_35(glval<int>) = FieldAddress[z] : r1738_34 +# 1738| r1738_36(int) = Load[?] : &:r1738_35, ~m1737_8 +# 1738| m1738_37(int) = Store[?] : &:r1738_32, r1738_36 +# 1738| m1738_38(decltype([...](...){...})) = Chi : total:m1738_31, partial:m1738_37 +# 1738| r1738_39(decltype([...](...){...})) = Load[#temp1738:28] : &:r1738_2, m1738_38 +# 1738| m1738_40(decltype([...](...){...})) = Store[lambda_inner] : &:r1738_1, r1738_39 +# 1739| v1739_1(void) = NoOp : +# 1737| v1737_9(void) = ReturnIndirection[#this] : &:r1737_7, m1737_8 +# 1737| v1737_10(void) = ReturnVoid : +# 1737| v1737_11(void) = AliasedUse : m1737_3 +# 1737| v1737_12(void) = ExitFunction : + +# 1738| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator()() const # 1738| Block 0 -# 1738| v1738_1(void) = EnterFunction : -# 1738| m1738_2(unknown) = AliasedDefinition : -# 1738| m1738_3(unknown) = InitializeNonLocal : -# 1738| m1738_4(unknown) = Chi : total:m1738_2, partial:m1738_3 -# 1738| r1738_5(glval<unknown>) = VariableAddress[#this] : -# 1738| m1738_6(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1738_5 -# 1738| r1738_7(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1738_5, m1738_6 -# 1738| m1738_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1738_7 +# 1738| v1738_1(void) = EnterFunction : +# 1738| m1738_2(unknown) = AliasedDefinition : +# 1738| m1738_3(unknown) = InitializeNonLocal : +# 1738| m1738_4(unknown) = Chi : total:m1738_2, partial:m1738_3 +# 1738| r1738_5(glval<unknown>) = VariableAddress[#this] : +# 1738| m1738_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1738_5 +# 1738| r1738_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1738_5, m1738_6 +# 1738| m1738_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1738_7 +# 1738| v1738_9(void) = NoOp : +# 1738| v1738_10(void) = NoOp : +# 1738| v1738_11(void) = ReturnIndirection[#this] : &:r1738_7, m1738_8 +# 1738| v1738_12(void) = ReturnVoid : +# 1738| v1738_13(void) = AliasedUse : m1738_3 +# 1738| v1738_14(void) = ExitFunction : + +# 1742| int goto_on_same_line() +# 1742| Block 0 +# 1742| v1742_1(void) = EnterFunction : +# 1742| m1742_2(unknown) = AliasedDefinition : +# 1742| m1742_3(unknown) = InitializeNonLocal : +# 1742| m1742_4(unknown) = Chi : total:m1742_2, partial:m1742_3 +# 1743| r1743_1(glval<int>) = VariableAddress[x] : +# 1743| r1743_2(int) = Constant[42] : +# 1743| m1743_3(int) = Store[x] : &:r1743_1, r1743_2 +# 1744| v1744_1(void) = NoOp : +# 1744| v1744_2(void) = NoOp : +# 1745| r1745_1(glval<int>) = VariableAddress[#return] : +# 1745| r1745_2(glval<int>) = VariableAddress[x] : +# 1745| r1745_3(int) = Load[x] : &:r1745_2, m1743_3 +# 1745| m1745_4(int) = Store[#return] : &:r1745_1, r1745_3 +# 1742| r1742_5(glval<int>) = VariableAddress[#return] : +# 1742| v1742_6(void) = ReturnValue : &:r1742_5, m1745_4 +# 1742| v1742_7(void) = AliasedUse : m1742_3 +# 1742| v1742_8(void) = ExitFunction : + +# 1750| void TrivialLambdaClass::m() const +# 1750| Block 0 +# 1750| v1750_1(void) = EnterFunction : +# 1750| m1750_2(unknown) = AliasedDefinition : +# 1750| m1750_3(unknown) = InitializeNonLocal : +# 1750| m1750_4(unknown) = Chi : total:m1750_2, partial:m1750_3 +# 1750| r1750_5(glval<unknown>) = VariableAddress[#this] : +# 1750| m1750_6(glval<TrivialLambdaClass>) = InitializeParameter[#this] : &:r1750_5 +# 1750| r1750_7(glval<TrivialLambdaClass>) = Load[#this] : &:r1750_5, m1750_6 +# 1750| m1750_8(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1750_7 +# 1751| r1751_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_outer] : +# 1751| r1751_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1751:25] : +# 1751| m1751_3(decltype([...](...){...})) = Uninitialized[#temp1751:25] : &:r1751_2 +# 1751| r1751_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1751_2 +# 1751| r1751_5(glval<unknown>) = VariableAddress[#this] : +# 1751| r1751_6(TrivialLambdaClass *) = Load[#this] : &:r1751_5, m1750_6 +# 1751| r1751_7(TrivialLambdaClass) = Load[?] : &:r1751_6, ~m1750_8 +# 1751| m1751_8(TrivialLambdaClass) = Store[?] : &:r1751_4, r1751_7 +# 1751| r1751_9(decltype([...](...){...})) = Load[#temp1751:25] : &:r1751_2, ~m1751_8 +# 1751| m1751_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1751_1, r1751_9 +# 1758| v1758_1(void) = NoOp : +# 1750| v1750_9(void) = ReturnIndirection[#this] : &:r1750_7, m1750_8 +# 1750| v1750_10(void) = ReturnVoid : +# 1750| v1750_11(void) = AliasedUse : m1750_3 +# 1750| v1750_12(void) = ExitFunction : + +# 1751| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const +# 1751| Block 0 +# 1751| v1751_1(void) = EnterFunction : +# 1751| m1751_2(unknown) = AliasedDefinition : +# 1751| m1751_3(unknown) = InitializeNonLocal : +# 1751| m1751_4(unknown) = Chi : total:m1751_2, partial:m1751_3 +# 1751| r1751_5(glval<unknown>) = VariableAddress[#this] : +# 1751| m1751_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1751_5 +# 1751| r1751_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1751_5, m1751_6 +# 1751| m1751_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1751_7 +# 1752| r1752_1(glval<unknown>) = VariableAddress[#this] : +# 1752| r1752_2(lambda [] type at line 1751, col. 26 *) = Load[#this] : &:r1752_1, m1751_6 +# 1752| r1752_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1752_2 +# 1752| r1752_4(TrivialLambdaClass *) = CopyValue : r1752_3 +# 1752| r1752_5(glval<unknown>) = FunctionAddress[m] : +# 1752| v1752_6(void) = Call[m] : func:r1752_5, this:r1752_4 +# 1752| m1752_7(unknown) = ^CallSideEffect : ~m1751_4 +# 1752| m1752_8(unknown) = Chi : total:m1751_4, partial:m1752_7 +# 1752| v1752_9(void) = ^IndirectReadSideEffect[-1] : &:r1752_4, ~m1751_8 +# 1754| r1754_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_inner] : +# 1754| r1754_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1754:29] : +# 1754| m1754_3(decltype([...](...){...})) = Uninitialized[#temp1754:29] : &:r1754_2 +# 1754| r1754_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1754_2 +# 1754| r1754_5(glval<unknown>) = VariableAddress[#this] : +# 1754| r1754_6(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1754_5, m1751_6 +# 1754| r1754_7(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1754_6 +# 1754| r1754_8(TrivialLambdaClass) = Load[?] : &:r1754_7, ~m1751_8 +# 1754| m1754_9(TrivialLambdaClass) = Store[?] : &:r1754_4, r1754_8 +# 1754| r1754_10(decltype([...](...){...})) = Load[#temp1754:29] : &:r1754_2, ~m1754_9 +# 1754| m1754_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1754_1, r1754_10 +# 1757| v1757_1(void) = NoOp : +# 1751| v1751_9(void) = ReturnIndirection[#this] : &:r1751_7, m1751_8 +# 1751| v1751_10(void) = ReturnVoid : +# 1751| v1751_11(void) = AliasedUse : ~m1752_8 +# 1751| v1751_12(void) = ExitFunction : + +# 1754| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator()() const +# 1754| Block 0 +# 1754| v1754_1(void) = EnterFunction : +# 1754| m1754_2(unknown) = AliasedDefinition : +# 1754| m1754_3(unknown) = InitializeNonLocal : +# 1754| m1754_4(unknown) = Chi : total:m1754_2, partial:m1754_3 +# 1754| r1754_5(glval<unknown>) = VariableAddress[#this] : +# 1754| m1754_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1754_5 +# 1754| r1754_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1754_5, m1754_6 +# 1754| m1754_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1754_7 +# 1755| r1755_1(glval<unknown>) = VariableAddress[#this] : +# 1755| r1755_2(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1755_1, m1754_6 +# 1755| r1755_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1755_2 +# 1755| r1755_4(TrivialLambdaClass *) = CopyValue : r1755_3 +# 1755| r1755_5(glval<unknown>) = FunctionAddress[m] : +# 1755| v1755_6(void) = Call[m] : func:r1755_5, this:r1755_4 +# 1755| m1755_7(unknown) = ^CallSideEffect : ~m1754_4 +# 1755| m1755_8(unknown) = Chi : total:m1754_4, partial:m1755_7 +# 1755| v1755_9(void) = ^IndirectReadSideEffect[-1] : &:r1755_4, ~m1754_8 +# 1756| v1756_1(void) = NoOp : +# 1754| v1754_9(void) = ReturnIndirection[#this] : &:r1754_7, m1754_8 +# 1754| v1754_10(void) = ReturnVoid : +# 1754| v1754_11(void) = AliasedUse : ~m1755_8 +# 1754| v1754_12(void) = ExitFunction : + +# 1761| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1761| Block 0 +# 1761| v1761_1(void) = EnterFunction : +# 1761| m1761_2(unknown) = AliasedDefinition : +# 1761| m1761_3(unknown) = InitializeNonLocal : +# 1761| m1761_4(unknown) = Chi : total:m1761_2, partial:m1761_3 +# 1761| r1761_5(glval<TrivialLambdaClass>) = VariableAddress[p1] : +# 1761| m1761_6(TrivialLambdaClass) = InitializeParameter[p1] : &:r1761_5 +# 1761| r1761_7(glval<TrivialLambdaClass &>) = VariableAddress[p2] : +# 1761| m1761_8(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1761_7 +# 1761| r1761_9(TrivialLambdaClass &) = Load[p2] : &:r1761_7, m1761_8 +# 1761| m1761_10(unknown) = InitializeIndirection[p2] : &:r1761_9 +# 1761| r1761_11(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : +# 1761| m1761_12(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1761_11 +# 1761| r1761_13(TrivialLambdaClass &&) = Load[p3] : &:r1761_11, m1761_12 +# 1761| m1761_14(unknown) = InitializeIndirection[p3] : &:r1761_13 +# 1762| r1762_1(glval<TrivialLambdaClass>) = VariableAddress[l1] : +# 1762| m1762_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1762_1 +# 1763| r1763_1(glval<TrivialLambdaClass &>) = VariableAddress[l2] : +# 1763| r1763_2(glval<TrivialLambdaClass>) = VariableAddress[#temp1763:36] : +# 1763| r1763_3(TrivialLambdaClass) = Constant[0] : +# 1763| m1763_4(TrivialLambdaClass) = Store[#temp1763:36] : &:r1763_2, r1763_3 +# 1763| r1763_5(glval<TrivialLambdaClass>) = Convert : r1763_2 +# 1763| r1763_6(TrivialLambdaClass &) = CopyValue : r1763_5 +# 1763| m1763_7(TrivialLambdaClass &) = Store[l2] : &:r1763_1, r1763_6 +# 1765| r1765_1(glval<decltype([...](...){...})>) = VariableAddress[l_outer1] : +# 1765| r1765_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1765:20] : +# 1765| m1765_3(decltype([...](...){...})) = Uninitialized[#temp1765:20] : &:r1765_2 +# 1765| r1765_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1765_2 +# 1765| r1765_5(glval<TrivialLambdaClass>) = VariableAddress[p1] : +# 1765| r1765_6(TrivialLambdaClass) = Load[p1] : &:r1765_5, m1761_6 +# 1765| m1765_7(TrivialLambdaClass) = Store[?] : &:r1765_4, r1765_6 +# 1765| m1765_8(decltype([...](...){...})) = Chi : total:m1765_3, partial:m1765_7 +# 1765| r1765_9(glval<TrivialLambdaClass>) = FieldAddress[p2] : r1765_2 +# 1765| r1765_10(glval<TrivialLambdaClass &>) = VariableAddress[p2] : +# 1765| r1765_11(TrivialLambdaClass &) = Load[p2] : &:r1765_10, m1761_8 +#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1765_11, ~m1761_10 +#-----| m0_2(TrivialLambdaClass) = Store[?] : &:r1765_9, r0_1 +#-----| m0_3(decltype([...](...){...})) = Chi : total:m1765_8, partial:m0_2 +# 1765| r1765_12(glval<TrivialLambdaClass>) = FieldAddress[p3] : r1765_2 +# 1765| r1765_13(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : +# 1765| r1765_14(TrivialLambdaClass &&) = Load[p3] : &:r1765_13, m1761_12 +#-----| r0_4(TrivialLambdaClass) = Load[?] : &:r1765_14, ~m1761_14 +#-----| m0_5(TrivialLambdaClass) = Store[?] : &:r1765_12, r0_4 +#-----| m0_6(decltype([...](...){...})) = Chi : total:m0_3, partial:m0_5 +# 1765| r1765_15(glval<TrivialLambdaClass>) = FieldAddress[l1] : r1765_2 +# 1765| r1765_16(glval<TrivialLambdaClass>) = VariableAddress[l1] : +# 1765| r1765_17(TrivialLambdaClass) = Load[l1] : &:r1765_16, m1762_2 +# 1765| m1765_18(TrivialLambdaClass) = Store[?] : &:r1765_15, r1765_17 +# 1765| m1765_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1765_18 +# 1765| r1765_20(glval<TrivialLambdaClass>) = FieldAddress[l2] : r1765_2 +# 1765| r1765_21(glval<TrivialLambdaClass &>) = VariableAddress[l2] : +# 1765| r1765_22(TrivialLambdaClass &) = Load[l2] : &:r1765_21, m1763_7 +#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1765_22, m1763_4 +#-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1765_20, r0_7 +#-----| m0_9(decltype([...](...){...})) = Chi : total:m1765_19, partial:m0_8 +# 1765| r1765_23(decltype([...](...){...})) = Load[#temp1765:20] : &:r1765_2, m0_9 +# 1765| m1765_24(decltype([...](...){...})) = Store[l_outer1] : &:r1765_1, r1765_23 +# 1768| v1768_1(void) = NoOp : +# 1761| v1761_15(void) = ReturnIndirection[p2] : &:r1761_9, m1761_10 +# 1761| v1761_16(void) = ReturnIndirection[p3] : &:r1761_13, m1761_14 +# 1761| v1761_17(void) = ReturnVoid : +# 1761| v1761_18(void) = AliasedUse : m1761_3 +# 1761| v1761_19(void) = ExitFunction : + +# 1765| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const +# 1765| Block 0 +# 1765| v1765_1(void) = EnterFunction : +# 1765| m1765_2(unknown) = AliasedDefinition : +# 1765| m1765_3(unknown) = InitializeNonLocal : +# 1765| m1765_4(unknown) = Chi : total:m1765_2, partial:m1765_3 +# 1765| r1765_5(glval<unknown>) = VariableAddress[#this] : +# 1765| m1765_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1765_5 +# 1765| r1765_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1765_5, m1765_6 +# 1765| m1765_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1765_7 +# 1766| r1766_1(glval<decltype([...](...){...})>) = VariableAddress[l_inner1] : +# 1766| r1766_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1766:24] : +# 1766| m1766_3(decltype([...](...){...})) = Uninitialized[#temp1766:24] : &:r1766_2 +# 1766| r1766_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1766_2 +# 1766| r1766_5(glval<unknown>) = VariableAddress[#this] : +# 1766| r1766_6(lambda [] type at line 1766, col. 25 *) = Load[#this] : &:r1766_5, m1765_6 +# 1766| r1766_7(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1766_6 +# 1766| r1766_8(TrivialLambdaClass) = Load[?] : &:r1766_7, ~m1765_8 +# 1766| m1766_9(TrivialLambdaClass) = Store[?] : &:r1766_4, r1766_8 +# 1766| r1766_10(decltype([...](...){...})) = Load[#temp1766:24] : &:r1766_2, ~m1766_9 +# 1766| m1766_11(decltype([...](...){...})) = Store[l_inner1] : &:r1766_1, r1766_10 +# 1767| v1767_1(void) = NoOp : +# 1765| v1765_9(void) = ReturnIndirection[#this] : &:r1765_7, m1765_8 +# 1765| v1765_10(void) = ReturnVoid : +# 1765| v1765_11(void) = AliasedUse : m1765_3 +# 1765| v1765_12(void) = ExitFunction : + +# 1766| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator()() const +# 1766| Block 0 +# 1766| v1766_1(void) = EnterFunction : +# 1766| m1766_2(unknown) = AliasedDefinition : +# 1766| m1766_3(unknown) = InitializeNonLocal : +# 1766| m1766_4(unknown) = Chi : total:m1766_2, partial:m1766_3 +# 1766| r1766_5(glval<unknown>) = VariableAddress[#this] : +# 1766| m1766_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1766_5 +# 1766| r1766_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1766_5, m1766_6 +# 1766| m1766_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1766_7 +# 1766| v1766_9(void) = NoOp : +# 1766| v1766_10(void) = ReturnIndirection[#this] : &:r1766_7, m1766_8 +# 1766| v1766_11(void) = ReturnVoid : +# 1766| v1766_12(void) = AliasedUse : m1766_3 +# 1766| v1766_13(void) = ExitFunction : + +# 1773| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1773| Block 0 +# 1773| v1773_1(void) = EnterFunction : +# 1773| m1773_2(unknown) = AliasedDefinition : +# 1773| m1773_3(unknown) = InitializeNonLocal : +# 1773| m1773_4(unknown) = Chi : total:m1773_2, partial:m1773_3 +# 1773| r1773_5(glval<unknown>) = VariableAddress[#this] : +# 1773| m1773_6(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1773_5 +# 1773| r1773_7(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1773_5, m1773_6 +# 1773| m1773_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1773_7 +# 1773| v1773_9(void) = NoOp : +# 1773| v1773_10(void) = ReturnIndirection[#this] : &:r1773_7, m1773_8 +# 1773| v1773_11(void) = ReturnVoid : +# 1773| v1773_12(void) = AliasedUse : m1773_3 +# 1773| v1773_13(void) = ExitFunction : + +# 1774| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1774| Block 0 +# 1774| v1774_1(void) = EnterFunction : +# 1774| m1774_2(unknown) = AliasedDefinition : +# 1774| m1774_3(unknown) = InitializeNonLocal : +# 1774| m1774_4(unknown) = Chi : total:m1774_2, partial:m1774_3 +# 1774| r1774_5(glval<unknown>) = VariableAddress[#this] : +# 1774| m1774_6(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1774_5 +# 1774| r1774_7(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1774_5, m1774_6 +# 1774| m1774_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1774_7 +# 1774| r1774_9(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : +# 1774| m1774_10(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1774_9 +# 1774| r1774_11(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1774_9, m1774_10 +# 1774| m1774_12(unknown) = InitializeIndirection[c] : &:r1774_11 +# 1775| r1775_1(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : +# 1775| r1775_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1775_1, m1774_10 +# 1775| r1775_3(glval<CopyConstructorWithImplicitArgumentClass>) = CopyValue : r1775_2 +# 1775| r1775_4(glval<int>) = FieldAddress[x] : r1775_3 +# 1775| r1775_5(int) = Load[?] : &:r1775_4, ~m1774_12 +# 1775| r1775_6(glval<unknown>) = VariableAddress[#this] : +# 1775| r1775_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1775_6, m1774_6 +# 1775| r1775_8(glval<int>) = FieldAddress[x] : r1775_7 +# 1775| m1775_9(int) = Store[?] : &:r1775_8, r1775_5 +# 1775| m1775_10(unknown) = Chi : total:m1774_8, partial:m1775_9 +# 1776| v1776_1(void) = NoOp : +# 1774| v1774_13(void) = ReturnIndirection[#this] : &:r1774_7, m1775_10 +# 1774| v1774_14(void) = ReturnIndirection[c] : &:r1774_11, m1774_12 +# 1774| v1774_15(void) = ReturnVoid : +# 1774| v1774_16(void) = AliasedUse : m1774_3 +# 1774| v1774_17(void) = ExitFunction : + +# 1782| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1782| Block 0 +# 1782| v1782_1(void) = EnterFunction : +# 1782| m1782_2(unknown) = AliasedDefinition : +# 1782| m1782_3(unknown) = InitializeNonLocal : +# 1782| m1782_4(unknown) = Chi : total:m1782_2, partial:m1782_3 +# 1782| r1782_5(glval<unknown>) = VariableAddress[#this] : +# 1782| m1782_6(glval<CopyConstructorWithBitwiseCopyClass>) = InitializeParameter[#this] : &:r1782_5 +# 1782| r1782_7(glval<CopyConstructorWithBitwiseCopyClass>) = Load[#this] : &:r1782_5, m1782_6 +# 1782| m1782_8(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1782_7 +# 1782| v1782_9(void) = NoOp : +# 1782| v1782_10(void) = ReturnIndirection[#this] : &:r1782_7, m1782_8 +# 1782| v1782_11(void) = ReturnVoid : +# 1782| v1782_12(void) = AliasedUse : m1782_3 +# 1782| v1782_13(void) = ExitFunction : + +# 1785| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1785| Block 0 +# 1785| v1785_1(void) = EnterFunction : +# 1785| m1785_2(unknown) = AliasedDefinition : +# 1785| m1785_3(unknown) = InitializeNonLocal : +# 1785| m1785_4(unknown) = Chi : total:m1785_2, partial:m1785_3 +# 1785| r1785_5(glval<unknown>) = VariableAddress[#this] : +# 1785| m1785_6(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1785_5 +# 1785| r1785_7(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1785_5, m1785_6 +# 1785| m1785_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1785_7 #-----| r0_1(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1738| r1738_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1738_6 -# 1738| r1738_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1738| r1738_11(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : -# 1738| r1738_12(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1738_11, m0_2 -# 1738| r1738_13(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1738_12 -# 1738| r1738_14(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1738_13 -# 1738| r1738_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1738_14 -# 1738| v1738_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1738_10, this:r1738_9, 0:r1738_15 -# 1738| m1738_17(unknown) = ^CallSideEffect : ~m1738_4 -# 1738| m1738_18(unknown) = Chi : total:m1738_4, partial:m1738_17 -# 1738| v1738_19(void) = ^BufferReadSideEffect[0] : &:r1738_15, ~m0_4 -# 1738| m1738_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1738_9 -# 1738| m1738_21(unknown) = Chi : total:m1738_8, partial:m1738_20 -# 1738| v1738_22(void) = NoOp : -# 1738| v1738_23(void) = ReturnIndirection[#this] : &:r1738_7, m1738_21 +# 1785| r1785_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1785_6 +# 1785| r1785_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1785| r1785_11(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : +# 1785| r1785_12(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1785_11, m0_2 +# 1785| r1785_13(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1785_12 +# 1785| r1785_14(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1785_13 +# 1785| r1785_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1785_14 +# 1785| v1785_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1785_10, this:r1785_9, 0:r1785_15 +# 1785| m1785_17(unknown) = ^CallSideEffect : ~m1785_4 +# 1785| m1785_18(unknown) = Chi : total:m1785_4, partial:m1785_17 +# 1785| v1785_19(void) = ^BufferReadSideEffect[0] : &:r1785_15, ~m0_4 +# 1785| m1785_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1785_9 +# 1785| m1785_21(unknown) = Chi : total:m1785_8, partial:m1785_20 +# 1785| v1785_22(void) = NoOp : +# 1785| v1785_23(void) = ReturnIndirection[#this] : &:r1785_7, m1785_21 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1738| v1738_24(void) = ReturnVoid : -# 1738| v1738_25(void) = AliasedUse : ~m1738_18 -# 1738| v1738_26(void) = ExitFunction : - -# 1742| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1742| Block 0 -# 1742| v1742_1(void) = EnterFunction : -# 1742| m1742_2(unknown) = AliasedDefinition : -# 1742| m1742_3(unknown) = InitializeNonLocal : -# 1742| m1742_4(unknown) = Chi : total:m1742_2, partial:m1742_3 -# 1742| r1742_5(glval<unknown>) = VariableAddress[#this] : -# 1742| m1742_6(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1742_5 -# 1742| r1742_7(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1742_5, m1742_6 -# 1742| m1742_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1742_7 -# 1742| r1742_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1742_6 -# 1742| r1742_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1742| v1742_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1742_10, this:r1742_9 -# 1742| m1742_12(unknown) = ^CallSideEffect : ~m1742_4 -# 1742| m1742_13(unknown) = Chi : total:m1742_4, partial:m1742_12 -# 1742| m1742_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_9 -# 1742| m1742_15(unknown) = Chi : total:m1742_8, partial:m1742_14 -# 1742| r1742_16(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1742_6 -# 1742| r1742_17(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1742| v1742_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1742_17, this:r1742_16 -# 1742| m1742_19(unknown) = ^CallSideEffect : ~m1742_13 -# 1742| m1742_20(unknown) = Chi : total:m1742_13, partial:m1742_19 -# 1742| m1742_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_16 -# 1742| m1742_22(unknown) = Chi : total:m1742_15, partial:m1742_21 -# 1742| v1742_23(void) = NoOp : -# 1742| v1742_24(void) = ReturnIndirection[#this] : &:r1742_7, m1742_22 -# 1742| v1742_25(void) = ReturnVoid : -# 1742| v1742_26(void) = AliasedUse : ~m1742_20 -# 1742| v1742_27(void) = ExitFunction : - -# 1745| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1745| Block 0 -# 1745| v1745_1(void) = EnterFunction : -# 1745| m1745_2(unknown) = AliasedDefinition : -# 1745| m1745_3(unknown) = InitializeNonLocal : -# 1745| m1745_4(unknown) = Chi : total:m1745_2, partial:m1745_3 -# 1745| r1745_5(glval<unknown>) = VariableAddress[#this] : -# 1745| m1745_6(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1745_5 -# 1745| r1745_7(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1745_5, m1745_6 -# 1745| m1745_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1745_7 +# 1785| v1785_24(void) = ReturnVoid : +# 1785| v1785_25(void) = AliasedUse : ~m1785_18 +# 1785| v1785_26(void) = ExitFunction : + +# 1789| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1789| Block 0 +# 1789| v1789_1(void) = EnterFunction : +# 1789| m1789_2(unknown) = AliasedDefinition : +# 1789| m1789_3(unknown) = InitializeNonLocal : +# 1789| m1789_4(unknown) = Chi : total:m1789_2, partial:m1789_3 +# 1789| r1789_5(glval<unknown>) = VariableAddress[#this] : +# 1789| m1789_6(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1789_5 +# 1789| r1789_7(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1789_5, m1789_6 +# 1789| m1789_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1789_7 +# 1789| r1789_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1789_6 +# 1789| r1789_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1789| v1789_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1789_10, this:r1789_9 +# 1789| m1789_12(unknown) = ^CallSideEffect : ~m1789_4 +# 1789| m1789_13(unknown) = Chi : total:m1789_4, partial:m1789_12 +# 1789| m1789_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_9 +# 1789| m1789_15(unknown) = Chi : total:m1789_8, partial:m1789_14 +# 1789| r1789_16(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1789_6 +# 1789| r1789_17(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1789| v1789_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1789_17, this:r1789_16 +# 1789| m1789_19(unknown) = ^CallSideEffect : ~m1789_13 +# 1789| m1789_20(unknown) = Chi : total:m1789_13, partial:m1789_19 +# 1789| m1789_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_16 +# 1789| m1789_22(unknown) = Chi : total:m1789_15, partial:m1789_21 +# 1789| v1789_23(void) = NoOp : +# 1789| v1789_24(void) = ReturnIndirection[#this] : &:r1789_7, m1789_22 +# 1789| v1789_25(void) = ReturnVoid : +# 1789| v1789_26(void) = AliasedUse : ~m1789_20 +# 1789| v1789_27(void) = ExitFunction : + +# 1792| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1792| Block 0 +# 1792| v1792_1(void) = EnterFunction : +# 1792| m1792_2(unknown) = AliasedDefinition : +# 1792| m1792_3(unknown) = InitializeNonLocal : +# 1792| m1792_4(unknown) = Chi : total:m1792_2, partial:m1792_3 +# 1792| r1792_5(glval<unknown>) = VariableAddress[#this] : +# 1792| m1792_6(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1792_5 +# 1792| r1792_7(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1792_5, m1792_6 +# 1792| m1792_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1792_7 #-----| r0_1(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(CopyConstructorTestVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1745| r1745_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1745_6 -# 1745| r1745_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1745| r1745_11(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : -# 1745| r1745_12(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1745_11, m0_2 -# 1745| r1745_13(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1745_12 -# 1745| r1745_14(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1745_13 -# 1745| r1745_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1745_14 -# 1745| v1745_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1745_10, this:r1745_9, 0:r1745_15 -# 1745| m1745_17(unknown) = ^CallSideEffect : ~m1745_4 -# 1745| m1745_18(unknown) = Chi : total:m1745_4, partial:m1745_17 -# 1745| v1745_19(void) = ^BufferReadSideEffect[0] : &:r1745_15, ~m0_4 -# 1745| m1745_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1745_9 -# 1745| m1745_21(unknown) = Chi : total:m1745_18, partial:m1745_20 -# 1745| v1745_22(void) = NoOp : -# 1745| v1745_23(void) = ReturnIndirection[#this] : &:r1745_7, m1745_8 +# 1792| r1792_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1792_6 +# 1792| r1792_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1792| r1792_11(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : +# 1792| r1792_12(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1792_11, m0_2 +# 1792| r1792_13(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1792_12 +# 1792| r1792_14(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1792_13 +# 1792| r1792_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1792_14 +# 1792| v1792_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1792_10, this:r1792_9, 0:r1792_15 +# 1792| m1792_17(unknown) = ^CallSideEffect : ~m1792_4 +# 1792| m1792_18(unknown) = Chi : total:m1792_4, partial:m1792_17 +# 1792| v1792_19(void) = ^BufferReadSideEffect[0] : &:r1792_15, ~m0_4 +# 1792| m1792_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1792_9 +# 1792| m1792_21(unknown) = Chi : total:m1792_18, partial:m1792_20 +# 1792| v1792_22(void) = NoOp : +# 1792| v1792_23(void) = ReturnIndirection[#this] : &:r1792_7, m1792_8 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1745| v1745_24(void) = ReturnVoid : -# 1745| v1745_25(void) = AliasedUse : ~m1745_21 -# 1745| v1745_26(void) = ExitFunction : - -# 1749| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1749| Block 0 -# 1749| v1749_1(void) = EnterFunction : -# 1749| m1749_2(unknown) = AliasedDefinition : -# 1749| m1749_3(unknown) = InitializeNonLocal : -# 1749| m1749_4(unknown) = Chi : total:m1749_2, partial:m1749_3 -# 1749| r1749_5(glval<unknown>) = VariableAddress[#this] : -# 1749| m1749_6(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1749_5 -# 1749| r1749_7(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1749_5, m1749_6 -# 1749| m1749_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1749_7 -# 1749| r1749_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1749_6 -# 1749| r1749_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1749| v1749_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1749_10, this:r1749_9 -# 1749| m1749_12(unknown) = ^CallSideEffect : ~m1749_4 -# 1749| m1749_13(unknown) = Chi : total:m1749_4, partial:m1749_12 -# 1749| m1749_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_9 -# 1749| m1749_15(unknown) = Chi : total:m1749_13, partial:m1749_14 -# 1749| r1749_16(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1749_6 -# 1749| r1749_17(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1749| v1749_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1749_17, this:r1749_16 -# 1749| m1749_19(unknown) = ^CallSideEffect : ~m1749_15 -# 1749| m1749_20(unknown) = Chi : total:m1749_15, partial:m1749_19 -# 1749| m1749_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_16 -# 1749| m1749_22(unknown) = Chi : total:m1749_20, partial:m1749_21 -# 1749| v1749_23(void) = NoOp : -# 1749| v1749_24(void) = ReturnIndirection[#this] : &:r1749_7, m1749_8 -# 1749| v1749_25(void) = ReturnVoid : -# 1749| v1749_26(void) = AliasedUse : ~m1749_22 -# 1749| v1749_27(void) = ExitFunction : - -# 1752| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1752| Block 0 -# 1752| v1752_1(void) = EnterFunction : -# 1752| m1752_2(unknown) = AliasedDefinition : -# 1752| m1752_3(unknown) = InitializeNonLocal : -# 1752| m1752_4(unknown) = Chi : total:m1752_2, partial:m1752_3 -# 1753| r1753_1(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : -# 1753| m1753_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1753_1 -# 1753| r1753_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1753_1, m1753_2 -# 1753| m1753_4(unknown) = InitializeIndirection[x] : &:r1753_3 -# 1754| r1754_1(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : -# 1754| m1754_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1754_1 -# 1754| r1754_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1754_1, m1754_2 -# 1754| m1754_4(unknown) = InitializeIndirection[y] : &:r1754_3 -# 1755| r1755_1(glval<CopyConstructorTestNonVirtualClass>) = VariableAddress[cx] : -# 1755| m1755_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1755_1 -# 1755| r1755_3(glval<unknown>) = FunctionAddress[CopyConstructorTestNonVirtualClass] : -# 1755| r1755_4(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : -# 1755| r1755_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1755_4, m1753_2 -# 1755| r1755_6(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1755_5 -# 1755| r1755_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1755_6 -# 1755| v1755_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1755_3, this:r1755_1, 0:r1755_7 -# 1755| m1755_9(unknown) = ^CallSideEffect : ~m1752_4 -# 1755| m1755_10(unknown) = Chi : total:m1752_4, partial:m1755_9 -# 1755| v1755_11(void) = ^BufferReadSideEffect[0] : &:r1755_7, ~m1753_4 -# 1755| m1755_12(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1755_1 -# 1755| m1755_13(CopyConstructorTestNonVirtualClass) = Chi : total:m1755_2, partial:m1755_12 -# 1756| r1756_1(glval<CopyConstructorTestVirtualClass>) = VariableAddress[cy] : -# 1756| m1756_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1756_1 -# 1756| r1756_3(glval<unknown>) = FunctionAddress[CopyConstructorTestVirtualClass] : -# 1756| r1756_4(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : -# 1756| r1756_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1756_4, m1754_2 -# 1756| r1756_6(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1756_5 -# 1756| r1756_7(CopyConstructorTestVirtualClass &) = CopyValue : r1756_6 -# 1756| v1756_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1756_3, this:r1756_1, 0:r1756_7 -# 1756| m1756_9(unknown) = ^CallSideEffect : ~m1755_10 -# 1756| m1756_10(unknown) = Chi : total:m1755_10, partial:m1756_9 -# 1756| v1756_11(void) = ^BufferReadSideEffect[0] : &:r1756_7, ~m1754_4 -# 1756| m1756_12(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1756_1 -# 1756| m1756_13(CopyConstructorTestVirtualClass) = Chi : total:m1756_2, partial:m1756_12 -# 1757| r1757_1(glval<int>) = VariableAddress[#return] : -# 1757| m1757_2(int) = Uninitialized[#return] : &:r1757_1 -# 1753| v1753_5(void) = ReturnIndirection[x] : &:r1753_3, m1753_4 -# 1754| v1754_5(void) = ReturnIndirection[y] : &:r1754_3, m1754_4 -# 1752| r1752_5(glval<int>) = VariableAddress[#return] : -# 1752| v1752_6(void) = ReturnValue : &:r1752_5, m1757_2 -# 1752| v1752_7(void) = AliasedUse : ~m1756_10 -# 1752| v1752_8(void) = ExitFunction : - -# 1759| void if_initialization(int) -# 1759| Block 0 -# 1759| v1759_1(void) = EnterFunction : -# 1759| m1759_2(unknown) = AliasedDefinition : -# 1759| m1759_3(unknown) = InitializeNonLocal : -# 1759| m1759_4(unknown) = Chi : total:m1759_2, partial:m1759_3 -# 1759| r1759_5(glval<int>) = VariableAddress[x] : -# 1759| m1759_6(int) = InitializeParameter[x] : &:r1759_5 -# 1760| r1760_1(glval<int>) = VariableAddress[y] : -# 1760| r1760_2(glval<int>) = VariableAddress[x] : -# 1760| r1760_3(int) = Load[x] : &:r1760_2, m1759_6 -# 1760| m1760_4(int) = Store[y] : &:r1760_1, r1760_3 -# 1760| r1760_5(glval<int>) = VariableAddress[x] : -# 1760| r1760_6(int) = Load[x] : &:r1760_5, m1759_6 -# 1760| r1760_7(int) = Constant[1] : -# 1760| r1760_8(int) = Add : r1760_6, r1760_7 -# 1760| r1760_9(int) = Constant[0] : -# 1760| r1760_10(bool) = CompareNE : r1760_8, r1760_9 -# 1760| v1760_11(void) = ConditionalBranch : r1760_10 +# 1792| v1792_24(void) = ReturnVoid : +# 1792| v1792_25(void) = AliasedUse : ~m1792_21 +# 1792| v1792_26(void) = ExitFunction : + +# 1796| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1796| Block 0 +# 1796| v1796_1(void) = EnterFunction : +# 1796| m1796_2(unknown) = AliasedDefinition : +# 1796| m1796_3(unknown) = InitializeNonLocal : +# 1796| m1796_4(unknown) = Chi : total:m1796_2, partial:m1796_3 +# 1796| r1796_5(glval<unknown>) = VariableAddress[#this] : +# 1796| m1796_6(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1796_5 +# 1796| r1796_7(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1796_5, m1796_6 +# 1796| m1796_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1796_7 +# 1796| r1796_9(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : m1796_6 +# 1796| r1796_10(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1796| v1796_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1796_10, this:r1796_9 +# 1796| m1796_12(unknown) = ^CallSideEffect : ~m1796_4 +# 1796| m1796_13(unknown) = Chi : total:m1796_4, partial:m1796_12 +# 1796| m1796_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_9 +# 1796| m1796_15(unknown) = Chi : total:m1796_13, partial:m1796_14 +# 1796| r1796_16(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : m1796_6 +# 1796| r1796_17(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1796| v1796_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1796_17, this:r1796_16 +# 1796| m1796_19(unknown) = ^CallSideEffect : ~m1796_15 +# 1796| m1796_20(unknown) = Chi : total:m1796_15, partial:m1796_19 +# 1796| m1796_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_16 +# 1796| m1796_22(unknown) = Chi : total:m1796_20, partial:m1796_21 +# 1796| v1796_23(void) = NoOp : +# 1796| v1796_24(void) = ReturnIndirection[#this] : &:r1796_7, m1796_8 +# 1796| v1796_25(void) = ReturnVoid : +# 1796| v1796_26(void) = AliasedUse : ~m1796_22 +# 1796| v1796_27(void) = ExitFunction : + +# 1799| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1799| Block 0 +# 1799| v1799_1(void) = EnterFunction : +# 1799| m1799_2(unknown) = AliasedDefinition : +# 1799| m1799_3(unknown) = InitializeNonLocal : +# 1799| m1799_4(unknown) = Chi : total:m1799_2, partial:m1799_3 +# 1800| r1800_1(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : +# 1800| m1800_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1800_1 +# 1800| r1800_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1800_1, m1800_2 +# 1800| m1800_4(unknown) = InitializeIndirection[x] : &:r1800_3 +# 1801| r1801_1(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : +# 1801| m1801_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1801_1 +# 1801| r1801_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1801_1, m1801_2 +# 1801| m1801_4(unknown) = InitializeIndirection[y] : &:r1801_3 +# 1802| r1802_1(glval<CopyConstructorTestNonVirtualClass>) = VariableAddress[cx] : +# 1802| m1802_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1802_1 +# 1802| r1802_3(glval<unknown>) = FunctionAddress[CopyConstructorTestNonVirtualClass] : +# 1802| r1802_4(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : +# 1802| r1802_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1802_4, m1800_2 +# 1802| r1802_6(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1802_5 +# 1802| r1802_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1802_6 +# 1802| v1802_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1802_3, this:r1802_1, 0:r1802_7 +# 1802| m1802_9(unknown) = ^CallSideEffect : ~m1799_4 +# 1802| m1802_10(unknown) = Chi : total:m1799_4, partial:m1802_9 +# 1802| v1802_11(void) = ^BufferReadSideEffect[0] : &:r1802_7, ~m1800_4 +# 1802| m1802_12(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1802_1 +# 1802| m1802_13(CopyConstructorTestNonVirtualClass) = Chi : total:m1802_2, partial:m1802_12 +# 1803| r1803_1(glval<CopyConstructorTestVirtualClass>) = VariableAddress[cy] : +# 1803| m1803_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1803_1 +# 1803| r1803_3(glval<unknown>) = FunctionAddress[CopyConstructorTestVirtualClass] : +# 1803| r1803_4(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : +# 1803| r1803_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1803_4, m1801_2 +# 1803| r1803_6(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1803_5 +# 1803| r1803_7(CopyConstructorTestVirtualClass &) = CopyValue : r1803_6 +# 1803| v1803_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1803_3, this:r1803_1, 0:r1803_7 +# 1803| m1803_9(unknown) = ^CallSideEffect : ~m1802_10 +# 1803| m1803_10(unknown) = Chi : total:m1802_10, partial:m1803_9 +# 1803| v1803_11(void) = ^BufferReadSideEffect[0] : &:r1803_7, ~m1801_4 +# 1803| m1803_12(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1803_1 +# 1803| m1803_13(CopyConstructorTestVirtualClass) = Chi : total:m1803_2, partial:m1803_12 +# 1804| r1804_1(glval<int>) = VariableAddress[#return] : +# 1804| m1804_2(int) = Uninitialized[#return] : &:r1804_1 +# 1800| v1800_5(void) = ReturnIndirection[x] : &:r1800_3, m1800_4 +# 1801| v1801_5(void) = ReturnIndirection[y] : &:r1801_3, m1801_4 +# 1799| r1799_5(glval<int>) = VariableAddress[#return] : +# 1799| v1799_6(void) = ReturnValue : &:r1799_5, m1804_2 +# 1799| v1799_7(void) = AliasedUse : ~m1803_10 +# 1799| v1799_8(void) = ExitFunction : + +# 1806| void if_initialization(int) +# 1806| Block 0 +# 1806| v1806_1(void) = EnterFunction : +# 1806| m1806_2(unknown) = AliasedDefinition : +# 1806| m1806_3(unknown) = InitializeNonLocal : +# 1806| m1806_4(unknown) = Chi : total:m1806_2, partial:m1806_3 +# 1806| r1806_5(glval<int>) = VariableAddress[x] : +# 1806| m1806_6(int) = InitializeParameter[x] : &:r1806_5 +# 1807| r1807_1(glval<int>) = VariableAddress[y] : +# 1807| r1807_2(glval<int>) = VariableAddress[x] : +# 1807| r1807_3(int) = Load[x] : &:r1807_2, m1806_6 +# 1807| m1807_4(int) = Store[y] : &:r1807_1, r1807_3 +# 1807| r1807_5(glval<int>) = VariableAddress[x] : +# 1807| r1807_6(int) = Load[x] : &:r1807_5, m1806_6 +# 1807| r1807_7(int) = Constant[1] : +# 1807| r1807_8(int) = Add : r1807_6, r1807_7 +# 1807| r1807_9(int) = Constant[0] : +# 1807| r1807_10(bool) = CompareNE : r1807_8, r1807_9 +# 1807| v1807_11(void) = ConditionalBranch : r1807_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 1761| Block 1 -# 1761| r1761_1(glval<int>) = VariableAddress[x] : -# 1761| r1761_2(int) = Load[x] : &:r1761_1, m1759_6 -# 1761| r1761_3(glval<int>) = VariableAddress[y] : -# 1761| r1761_4(int) = Load[y] : &:r1761_3, m1760_4 -# 1761| r1761_5(int) = Add : r1761_2, r1761_4 -# 1761| r1761_6(glval<int>) = VariableAddress[x] : -# 1761| m1761_7(int) = Store[x] : &:r1761_6, r1761_5 +# 1808| Block 1 +# 1808| r1808_1(glval<int>) = VariableAddress[x] : +# 1808| r1808_2(int) = Load[x] : &:r1808_1, m1806_6 +# 1808| r1808_3(glval<int>) = VariableAddress[y] : +# 1808| r1808_4(int) = Load[y] : &:r1808_3, m1807_4 +# 1808| r1808_5(int) = Add : r1808_2, r1808_4 +# 1808| r1808_6(glval<int>) = VariableAddress[x] : +# 1808| m1808_7(int) = Store[x] : &:r1808_6, r1808_5 #-----| Goto -> Block 2 -# 1764| Block 2 -# 1764| m1764_1(int) = Phi : from 0:m1759_6, from 1:m1761_7 -# 1764| r1764_2(glval<int>) = VariableAddress[w] : -# 1764| m1764_3(int) = Uninitialized[w] : &:r1764_2 -# 1765| r1765_1(glval<int>) = VariableAddress[x] : -# 1765| r1765_2(int) = Load[x] : &:r1765_1, m1764_1 -# 1765| r1765_3(glval<int>) = VariableAddress[w] : -# 1765| m1765_4(int) = Store[w] : &:r1765_3, r1765_2 -# 1765| r1765_5(glval<int>) = VariableAddress[x] : -# 1765| r1765_6(int) = Load[x] : &:r1765_5, m1764_1 -# 1765| r1765_7(int) = Constant[1] : -# 1765| r1765_8(int) = Add : r1765_6, r1765_7 -# 1765| r1765_9(int) = Constant[0] : -# 1765| r1765_10(bool) = CompareNE : r1765_8, r1765_9 -# 1765| v1765_11(void) = ConditionalBranch : r1765_10 +# 1811| Block 2 +# 1811| m1811_1(int) = Phi : from 0:m1806_6, from 1:m1808_7 +# 1811| r1811_2(glval<int>) = VariableAddress[w] : +# 1811| m1811_3(int) = Uninitialized[w] : &:r1811_2 +# 1812| r1812_1(glval<int>) = VariableAddress[x] : +# 1812| r1812_2(int) = Load[x] : &:r1812_1, m1811_1 +# 1812| r1812_3(glval<int>) = VariableAddress[w] : +# 1812| m1812_4(int) = Store[w] : &:r1812_3, r1812_2 +# 1812| r1812_5(glval<int>) = VariableAddress[x] : +# 1812| r1812_6(int) = Load[x] : &:r1812_5, m1811_1 +# 1812| r1812_7(int) = Constant[1] : +# 1812| r1812_8(int) = Add : r1812_6, r1812_7 +# 1812| r1812_9(int) = Constant[0] : +# 1812| r1812_10(bool) = CompareNE : r1812_8, r1812_9 +# 1812| v1812_11(void) = ConditionalBranch : r1812_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1766| Block 3 -# 1766| r1766_1(glval<int>) = VariableAddress[x] : -# 1766| r1766_2(int) = Load[x] : &:r1766_1, m1764_1 -# 1766| r1766_3(glval<int>) = VariableAddress[w] : -# 1766| r1766_4(int) = Load[w] : &:r1766_3, m1765_4 -# 1766| r1766_5(int) = Add : r1766_2, r1766_4 -# 1766| r1766_6(glval<int>) = VariableAddress[x] : -# 1766| m1766_7(int) = Store[x] : &:r1766_6, r1766_5 +# 1813| Block 3 +# 1813| r1813_1(glval<int>) = VariableAddress[x] : +# 1813| r1813_2(int) = Load[x] : &:r1813_1, m1811_1 +# 1813| r1813_3(glval<int>) = VariableAddress[w] : +# 1813| r1813_4(int) = Load[w] : &:r1813_3, m1812_4 +# 1813| r1813_5(int) = Add : r1813_2, r1813_4 +# 1813| r1813_6(glval<int>) = VariableAddress[x] : +# 1813| m1813_7(int) = Store[x] : &:r1813_6, r1813_5 #-----| Goto -> Block 4 -# 1769| Block 4 -# 1769| m1769_1(int) = Phi : from 2:m1764_1, from 3:m1766_7 -# 1769| r1769_2(glval<int>) = VariableAddress[x] : -# 1769| r1769_3(int) = Load[x] : &:r1769_2, m1769_1 -# 1769| r1769_4(glval<int>) = VariableAddress[w] : -# 1769| m1769_5(int) = Store[w] : &:r1769_4, r1769_3 -# 1769| r1769_6(glval<int>) = VariableAddress[w2] : -# 1769| r1769_7(glval<int>) = VariableAddress[w] : -# 1769| r1769_8(int) = Load[w] : &:r1769_7, m1769_5 -# 1769| m1769_9(int) = Store[w2] : &:r1769_6, r1769_8 -# 1769| r1769_10(glval<int>) = VariableAddress[w2] : -# 1769| r1769_11(int) = Load[w2] : &:r1769_10, m1769_9 -# 1769| r1769_12(int) = Constant[0] : -# 1769| r1769_13(bool) = CompareNE : r1769_11, r1769_12 -# 1769| r1769_14(bool) = CopyValue : r1769_13 -# 1769| v1769_15(void) = ConditionalBranch : r1769_14 +# 1816| Block 4 +# 1816| m1816_1(int) = Phi : from 2:m1811_1, from 3:m1813_7 +# 1816| r1816_2(glval<int>) = VariableAddress[x] : +# 1816| r1816_3(int) = Load[x] : &:r1816_2, m1816_1 +# 1816| r1816_4(glval<int>) = VariableAddress[w] : +# 1816| m1816_5(int) = Store[w] : &:r1816_4, r1816_3 +# 1816| r1816_6(glval<int>) = VariableAddress[w2] : +# 1816| r1816_7(glval<int>) = VariableAddress[w] : +# 1816| r1816_8(int) = Load[w] : &:r1816_7, m1816_5 +# 1816| m1816_9(int) = Store[w2] : &:r1816_6, r1816_8 +# 1816| r1816_10(glval<int>) = VariableAddress[w2] : +# 1816| r1816_11(int) = Load[w2] : &:r1816_10, m1816_9 +# 1816| r1816_12(int) = Constant[0] : +# 1816| r1816_13(bool) = CompareNE : r1816_11, r1816_12 +# 1816| r1816_14(bool) = CopyValue : r1816_13 +# 1816| v1816_15(void) = ConditionalBranch : r1816_14 #-----| False -> Block 6 #-----| True -> Block 5 -# 1770| Block 5 -# 1770| r1770_1(glval<int>) = VariableAddress[x] : -# 1770| r1770_2(int) = Load[x] : &:r1770_1, m1769_1 -# 1770| r1770_3(glval<int>) = VariableAddress[w] : -# 1770| r1770_4(int) = Load[w] : &:r1770_3, m1769_5 -# 1770| r1770_5(int) = Add : r1770_2, r1770_4 -# 1770| r1770_6(glval<int>) = VariableAddress[x] : -# 1770| m1770_7(int) = Store[x] : &:r1770_6, r1770_5 +# 1817| Block 5 +# 1817| r1817_1(glval<int>) = VariableAddress[x] : +# 1817| r1817_2(int) = Load[x] : &:r1817_1, m1816_1 +# 1817| r1817_3(glval<int>) = VariableAddress[w] : +# 1817| r1817_4(int) = Load[w] : &:r1817_3, m1816_5 +# 1817| r1817_5(int) = Add : r1817_2, r1817_4 +# 1817| r1817_6(glval<int>) = VariableAddress[x] : +# 1817| m1817_7(int) = Store[x] : &:r1817_6, r1817_5 #-----| Goto -> Block 6 -# 1773| Block 6 -# 1773| m1773_1(int) = Phi : from 4:m1769_1, from 5:m1770_7 -# 1773| r1773_2(glval<int>) = VariableAddress[v] : -# 1773| r1773_3(glval<int>) = VariableAddress[x] : -# 1773| r1773_4(int) = Load[x] : &:r1773_3, m1773_1 -# 1773| m1773_5(int) = Store[v] : &:r1773_2, r1773_4 -# 1773| r1773_6(glval<int>) = VariableAddress[v2] : -# 1773| r1773_7(glval<int>) = VariableAddress[v] : -# 1773| r1773_8(int) = Load[v] : &:r1773_7, m1773_5 -# 1773| m1773_9(int) = Store[v2] : &:r1773_6, r1773_8 -# 1773| r1773_10(glval<int>) = VariableAddress[v2] : -# 1773| r1773_11(int) = Load[v2] : &:r1773_10, m1773_9 -# 1773| r1773_12(int) = Constant[0] : -# 1773| r1773_13(bool) = CompareNE : r1773_11, r1773_12 -# 1773| r1773_14(bool) = CopyValue : r1773_13 -# 1773| v1773_15(void) = ConditionalBranch : r1773_14 +# 1820| Block 6 +# 1820| m1820_1(int) = Phi : from 4:m1816_1, from 5:m1817_7 +# 1820| r1820_2(glval<int>) = VariableAddress[v] : +# 1820| r1820_3(glval<int>) = VariableAddress[x] : +# 1820| r1820_4(int) = Load[x] : &:r1820_3, m1820_1 +# 1820| m1820_5(int) = Store[v] : &:r1820_2, r1820_4 +# 1820| r1820_6(glval<int>) = VariableAddress[v2] : +# 1820| r1820_7(glval<int>) = VariableAddress[v] : +# 1820| r1820_8(int) = Load[v] : &:r1820_7, m1820_5 +# 1820| m1820_9(int) = Store[v2] : &:r1820_6, r1820_8 +# 1820| r1820_10(glval<int>) = VariableAddress[v2] : +# 1820| r1820_11(int) = Load[v2] : &:r1820_10, m1820_9 +# 1820| r1820_12(int) = Constant[0] : +# 1820| r1820_13(bool) = CompareNE : r1820_11, r1820_12 +# 1820| r1820_14(bool) = CopyValue : r1820_13 +# 1820| v1820_15(void) = ConditionalBranch : r1820_14 #-----| False -> Block 8 #-----| True -> Block 7 -# 1774| Block 7 -# 1774| r1774_1(glval<int>) = VariableAddress[x] : -# 1774| r1774_2(int) = Load[x] : &:r1774_1, m1773_1 -# 1774| r1774_3(glval<int>) = VariableAddress[v] : -# 1774| r1774_4(int) = Load[v] : &:r1774_3, m1773_5 -# 1774| r1774_5(int) = Add : r1774_2, r1774_4 -# 1774| r1774_6(glval<int>) = VariableAddress[x] : -# 1774| m1774_7(int) = Store[x] : &:r1774_6, r1774_5 +# 1821| Block 7 +# 1821| r1821_1(glval<int>) = VariableAddress[x] : +# 1821| r1821_2(int) = Load[x] : &:r1821_1, m1820_1 +# 1821| r1821_3(glval<int>) = VariableAddress[v] : +# 1821| r1821_4(int) = Load[v] : &:r1821_3, m1820_5 +# 1821| r1821_5(int) = Add : r1821_2, r1821_4 +# 1821| r1821_6(glval<int>) = VariableAddress[x] : +# 1821| m1821_7(int) = Store[x] : &:r1821_6, r1821_5 #-----| Goto -> Block 8 -# 1777| Block 8 -# 1777| m1777_1(int) = Phi : from 6:m1773_1, from 7:m1774_7 -# 1777| r1777_2(glval<int>) = VariableAddress[z] : -# 1777| r1777_3(glval<int>) = VariableAddress[x] : -# 1777| r1777_4(int) = Load[x] : &:r1777_3, m1777_1 -# 1777| m1777_5(int) = Store[z] : &:r1777_2, r1777_4 -# 1778| r1778_1(glval<int>) = VariableAddress[z] : -# 1778| r1778_2(int) = Load[z] : &:r1778_1, m1777_5 -# 1778| r1778_3(int) = Constant[0] : -# 1778| r1778_4(bool) = CompareNE : r1778_2, r1778_3 -# 1778| v1778_5(void) = ConditionalBranch : r1778_4 +# 1824| Block 8 +# 1824| m1824_1(int) = Phi : from 6:m1820_1, from 7:m1821_7 +# 1824| r1824_2(glval<int>) = VariableAddress[z] : +# 1824| r1824_3(glval<int>) = VariableAddress[x] : +# 1824| r1824_4(int) = Load[x] : &:r1824_3, m1824_1 +# 1824| m1824_5(int) = Store[z] : &:r1824_2, r1824_4 +# 1825| r1825_1(glval<int>) = VariableAddress[z] : +# 1825| r1825_2(int) = Load[z] : &:r1825_1, m1824_5 +# 1825| r1825_3(int) = Constant[0] : +# 1825| r1825_4(bool) = CompareNE : r1825_2, r1825_3 +# 1825| v1825_5(void) = ConditionalBranch : r1825_4 #-----| False -> Block 10 #-----| True -> Block 9 -# 1779| Block 9 -# 1779| r1779_1(glval<int>) = VariableAddress[x] : -# 1779| r1779_2(int) = Load[x] : &:r1779_1, m1777_1 -# 1779| r1779_3(glval<int>) = VariableAddress[z] : -# 1779| r1779_4(int) = Load[z] : &:r1779_3, m1777_5 -# 1779| r1779_5(int) = Add : r1779_2, r1779_4 -# 1779| r1779_6(glval<int>) = VariableAddress[x] : -# 1779| m1779_7(int) = Store[x] : &:r1779_6, r1779_5 +# 1826| Block 9 +# 1826| r1826_1(glval<int>) = VariableAddress[x] : +# 1826| r1826_2(int) = Load[x] : &:r1826_1, m1824_1 +# 1826| r1826_3(glval<int>) = VariableAddress[z] : +# 1826| r1826_4(int) = Load[z] : &:r1826_3, m1824_5 +# 1826| r1826_5(int) = Add : r1826_2, r1826_4 +# 1826| r1826_6(glval<int>) = VariableAddress[x] : +# 1826| m1826_7(int) = Store[x] : &:r1826_6, r1826_5 #-----| Goto -> Block 10 -# 1782| Block 10 -# 1782| m1782_1(int) = Phi : from 8:m1777_1, from 9:m1779_7 -# 1782| r1782_2(glval<int>) = VariableAddress[z2] : -# 1782| r1782_3(glval<int>) = VariableAddress[z] : -# 1782| r1782_4(int) = Load[z] : &:r1782_3, m1777_5 -# 1782| m1782_5(int) = Store[z2] : &:r1782_2, r1782_4 -# 1782| r1782_6(glval<int>) = VariableAddress[z2] : -# 1782| r1782_7(int) = Load[z2] : &:r1782_6, m1782_5 -# 1782| r1782_8(int) = Constant[0] : -# 1782| r1782_9(bool) = CompareNE : r1782_7, r1782_8 -# 1782| r1782_10(bool) = CopyValue : r1782_9 -# 1782| v1782_11(void) = ConditionalBranch : r1782_10 +# 1829| Block 10 +# 1829| m1829_1(int) = Phi : from 8:m1824_1, from 9:m1826_7 +# 1829| r1829_2(glval<int>) = VariableAddress[z2] : +# 1829| r1829_3(glval<int>) = VariableAddress[z] : +# 1829| r1829_4(int) = Load[z] : &:r1829_3, m1824_5 +# 1829| m1829_5(int) = Store[z2] : &:r1829_2, r1829_4 +# 1829| r1829_6(glval<int>) = VariableAddress[z2] : +# 1829| r1829_7(int) = Load[z2] : &:r1829_6, m1829_5 +# 1829| r1829_8(int) = Constant[0] : +# 1829| r1829_9(bool) = CompareNE : r1829_7, r1829_8 +# 1829| r1829_10(bool) = CopyValue : r1829_9 +# 1829| v1829_11(void) = ConditionalBranch : r1829_10 #-----| False -> Block 12 #-----| True -> Block 11 -# 1783| Block 11 -# 1783| r1783_1(glval<int>) = VariableAddress[z2] : -# 1783| r1783_2(int) = Load[z2] : &:r1783_1, m1782_5 -# 1783| r1783_3(glval<int>) = VariableAddress[x] : -# 1783| r1783_4(int) = Load[x] : &:r1783_3, m1782_1 -# 1783| r1783_5(int) = Add : r1783_4, r1783_2 -# 1783| m1783_6(int) = Store[x] : &:r1783_3, r1783_5 +# 1830| Block 11 +# 1830| r1830_1(glval<int>) = VariableAddress[z2] : +# 1830| r1830_2(int) = Load[z2] : &:r1830_1, m1829_5 +# 1830| r1830_3(glval<int>) = VariableAddress[x] : +# 1830| r1830_4(int) = Load[x] : &:r1830_3, m1829_1 +# 1830| r1830_5(int) = Add : r1830_4, r1830_2 +# 1830| m1830_6(int) = Store[x] : &:r1830_3, r1830_5 #-----| Goto -> Block 12 -# 1785| Block 12 -# 1785| v1785_1(void) = NoOp : -# 1759| v1759_7(void) = ReturnVoid : -# 1759| v1759_8(void) = AliasedUse : m1759_3 -# 1759| v1759_9(void) = ExitFunction : - -# 1787| void switch_initialization(int) -# 1787| Block 0 -# 1787| v1787_1(void) = EnterFunction : -# 1787| m1787_2(unknown) = AliasedDefinition : -# 1787| m1787_3(unknown) = InitializeNonLocal : -# 1787| m1787_4(unknown) = Chi : total:m1787_2, partial:m1787_3 -# 1787| r1787_5(glval<int>) = VariableAddress[x] : -# 1787| m1787_6(int) = InitializeParameter[x] : &:r1787_5 -# 1788| r1788_1(glval<int>) = VariableAddress[y] : -# 1788| r1788_2(glval<int>) = VariableAddress[x] : -# 1788| r1788_3(int) = Load[x] : &:r1788_2, m1787_6 -# 1788| m1788_4(int) = Store[y] : &:r1788_1, r1788_3 -# 1788| r1788_5(glval<int>) = VariableAddress[x] : -# 1788| r1788_6(int) = Load[x] : &:r1788_5, m1787_6 -# 1788| r1788_7(int) = Constant[1] : -# 1788| r1788_8(int) = Add : r1788_6, r1788_7 -# 1788| v1788_9(void) = Switch : r1788_8 +# 1832| Block 12 +# 1832| v1832_1(void) = NoOp : +# 1806| v1806_7(void) = ReturnVoid : +# 1806| v1806_8(void) = AliasedUse : m1806_3 +# 1806| v1806_9(void) = ExitFunction : + +# 1834| void switch_initialization(int) +# 1834| Block 0 +# 1834| v1834_1(void) = EnterFunction : +# 1834| m1834_2(unknown) = AliasedDefinition : +# 1834| m1834_3(unknown) = InitializeNonLocal : +# 1834| m1834_4(unknown) = Chi : total:m1834_2, partial:m1834_3 +# 1834| r1834_5(glval<int>) = VariableAddress[x] : +# 1834| m1834_6(int) = InitializeParameter[x] : &:r1834_5 +# 1835| r1835_1(glval<int>) = VariableAddress[y] : +# 1835| r1835_2(glval<int>) = VariableAddress[x] : +# 1835| r1835_3(int) = Load[x] : &:r1835_2, m1834_6 +# 1835| m1835_4(int) = Store[y] : &:r1835_1, r1835_3 +# 1835| r1835_5(glval<int>) = VariableAddress[x] : +# 1835| r1835_6(int) = Load[x] : &:r1835_5, m1834_6 +# 1835| r1835_7(int) = Constant[1] : +# 1835| r1835_8(int) = Add : r1835_6, r1835_7 +# 1835| v1835_9(void) = Switch : r1835_8 #-----| Default -> Block 1 -# 1789| Block 1 -# 1789| v1789_1(void) = NoOp : -# 1790| r1790_1(glval<int>) = VariableAddress[x] : -# 1790| r1790_2(int) = Load[x] : &:r1790_1, m1787_6 -# 1790| r1790_3(glval<int>) = VariableAddress[y] : -# 1790| r1790_4(int) = Load[y] : &:r1790_3, m1788_4 -# 1790| r1790_5(int) = Add : r1790_2, r1790_4 -# 1790| r1790_6(glval<int>) = VariableAddress[x] : -# 1790| m1790_7(int) = Store[x] : &:r1790_6, r1790_5 -# 1793| r1793_1(glval<int>) = VariableAddress[w] : -# 1793| m1793_2(int) = Uninitialized[w] : &:r1793_1 -# 1794| r1794_1(glval<int>) = VariableAddress[x] : -# 1794| r1794_2(int) = Load[x] : &:r1794_1, m1790_7 -# 1794| r1794_3(glval<int>) = VariableAddress[w] : -# 1794| m1794_4(int) = Store[w] : &:r1794_3, r1794_2 -# 1794| r1794_5(glval<int>) = VariableAddress[x] : -# 1794| r1794_6(int) = Load[x] : &:r1794_5, m1790_7 -# 1794| r1794_7(int) = Constant[1] : -# 1794| r1794_8(int) = Add : r1794_6, r1794_7 -# 1794| v1794_9(void) = Switch : r1794_8 +# 1836| Block 1 +# 1836| v1836_1(void) = NoOp : +# 1837| r1837_1(glval<int>) = VariableAddress[x] : +# 1837| r1837_2(int) = Load[x] : &:r1837_1, m1834_6 +# 1837| r1837_3(glval<int>) = VariableAddress[y] : +# 1837| r1837_4(int) = Load[y] : &:r1837_3, m1835_4 +# 1837| r1837_5(int) = Add : r1837_2, r1837_4 +# 1837| r1837_6(glval<int>) = VariableAddress[x] : +# 1837| m1837_7(int) = Store[x] : &:r1837_6, r1837_5 +# 1840| r1840_1(glval<int>) = VariableAddress[w] : +# 1840| m1840_2(int) = Uninitialized[w] : &:r1840_1 +# 1841| r1841_1(glval<int>) = VariableAddress[x] : +# 1841| r1841_2(int) = Load[x] : &:r1841_1, m1837_7 +# 1841| r1841_3(glval<int>) = VariableAddress[w] : +# 1841| m1841_4(int) = Store[w] : &:r1841_3, r1841_2 +# 1841| r1841_5(glval<int>) = VariableAddress[x] : +# 1841| r1841_6(int) = Load[x] : &:r1841_5, m1837_7 +# 1841| r1841_7(int) = Constant[1] : +# 1841| r1841_8(int) = Add : r1841_6, r1841_7 +# 1841| v1841_9(void) = Switch : r1841_8 #-----| Default -> Block 2 -# 1795| Block 2 -# 1795| v1795_1(void) = NoOp : -# 1796| r1796_1(glval<int>) = VariableAddress[x] : -# 1796| r1796_2(int) = Load[x] : &:r1796_1, m1790_7 -# 1796| r1796_3(glval<int>) = VariableAddress[w] : -# 1796| r1796_4(int) = Load[w] : &:r1796_3, m1794_4 -# 1796| r1796_5(int) = Add : r1796_2, r1796_4 -# 1796| r1796_6(glval<int>) = VariableAddress[x] : -# 1796| m1796_7(int) = Store[x] : &:r1796_6, r1796_5 -# 1799| r1799_1(glval<int>) = VariableAddress[x] : -# 1799| r1799_2(int) = Load[x] : &:r1799_1, m1796_7 -# 1799| r1799_3(glval<int>) = VariableAddress[w] : -# 1799| m1799_4(int) = Store[w] : &:r1799_3, r1799_2 -# 1799| r1799_5(glval<int>) = VariableAddress[w2] : -# 1799| r1799_6(glval<int>) = VariableAddress[w] : -# 1799| r1799_7(int) = Load[w] : &:r1799_6, m1799_4 -# 1799| m1799_8(int) = Store[w2] : &:r1799_5, r1799_7 -# 1799| r1799_9(glval<int>) = VariableAddress[w2] : -# 1799| r1799_10(int) = Load[w2] : &:r1799_9, m1799_8 -# 1799| r1799_11(int) = CopyValue : r1799_10 -# 1799| v1799_12(void) = Switch : r1799_11 +# 1842| Block 2 +# 1842| v1842_1(void) = NoOp : +# 1843| r1843_1(glval<int>) = VariableAddress[x] : +# 1843| r1843_2(int) = Load[x] : &:r1843_1, m1837_7 +# 1843| r1843_3(glval<int>) = VariableAddress[w] : +# 1843| r1843_4(int) = Load[w] : &:r1843_3, m1841_4 +# 1843| r1843_5(int) = Add : r1843_2, r1843_4 +# 1843| r1843_6(glval<int>) = VariableAddress[x] : +# 1843| m1843_7(int) = Store[x] : &:r1843_6, r1843_5 +# 1846| r1846_1(glval<int>) = VariableAddress[x] : +# 1846| r1846_2(int) = Load[x] : &:r1846_1, m1843_7 +# 1846| r1846_3(glval<int>) = VariableAddress[w] : +# 1846| m1846_4(int) = Store[w] : &:r1846_3, r1846_2 +# 1846| r1846_5(glval<int>) = VariableAddress[w2] : +# 1846| r1846_6(glval<int>) = VariableAddress[w] : +# 1846| r1846_7(int) = Load[w] : &:r1846_6, m1846_4 +# 1846| m1846_8(int) = Store[w2] : &:r1846_5, r1846_7 +# 1846| r1846_9(glval<int>) = VariableAddress[w2] : +# 1846| r1846_10(int) = Load[w2] : &:r1846_9, m1846_8 +# 1846| r1846_11(int) = CopyValue : r1846_10 +# 1846| v1846_12(void) = Switch : r1846_11 #-----| Default -> Block 3 -# 1800| Block 3 -# 1800| v1800_1(void) = NoOp : -# 1801| r1801_1(glval<int>) = VariableAddress[x] : -# 1801| r1801_2(int) = Load[x] : &:r1801_1, m1796_7 -# 1801| r1801_3(glval<int>) = VariableAddress[w] : -# 1801| r1801_4(int) = Load[w] : &:r1801_3, m1799_4 -# 1801| r1801_5(int) = Add : r1801_2, r1801_4 -# 1801| r1801_6(glval<int>) = VariableAddress[x] : -# 1801| m1801_7(int) = Store[x] : &:r1801_6, r1801_5 -# 1804| r1804_1(glval<int>) = VariableAddress[v] : -# 1804| r1804_2(glval<int>) = VariableAddress[x] : -# 1804| r1804_3(int) = Load[x] : &:r1804_2, m1801_7 -# 1804| m1804_4(int) = Store[v] : &:r1804_1, r1804_3 -# 1804| r1804_5(glval<int>) = VariableAddress[v2] : -# 1804| r1804_6(glval<int>) = VariableAddress[v] : -# 1804| r1804_7(int) = Load[v] : &:r1804_6, m1804_4 -# 1804| m1804_8(int) = Store[v2] : &:r1804_5, r1804_7 -# 1804| r1804_9(glval<int>) = VariableAddress[v2] : -# 1804| r1804_10(int) = Load[v2] : &:r1804_9, m1804_8 -# 1804| r1804_11(int) = CopyValue : r1804_10 -# 1804| v1804_12(void) = Switch : r1804_11 +# 1847| Block 3 +# 1847| v1847_1(void) = NoOp : +# 1848| r1848_1(glval<int>) = VariableAddress[x] : +# 1848| r1848_2(int) = Load[x] : &:r1848_1, m1843_7 +# 1848| r1848_3(glval<int>) = VariableAddress[w] : +# 1848| r1848_4(int) = Load[w] : &:r1848_3, m1846_4 +# 1848| r1848_5(int) = Add : r1848_2, r1848_4 +# 1848| r1848_6(glval<int>) = VariableAddress[x] : +# 1848| m1848_7(int) = Store[x] : &:r1848_6, r1848_5 +# 1851| r1851_1(glval<int>) = VariableAddress[v] : +# 1851| r1851_2(glval<int>) = VariableAddress[x] : +# 1851| r1851_3(int) = Load[x] : &:r1851_2, m1848_7 +# 1851| m1851_4(int) = Store[v] : &:r1851_1, r1851_3 +# 1851| r1851_5(glval<int>) = VariableAddress[v2] : +# 1851| r1851_6(glval<int>) = VariableAddress[v] : +# 1851| r1851_7(int) = Load[v] : &:r1851_6, m1851_4 +# 1851| m1851_8(int) = Store[v2] : &:r1851_5, r1851_7 +# 1851| r1851_9(glval<int>) = VariableAddress[v2] : +# 1851| r1851_10(int) = Load[v2] : &:r1851_9, m1851_8 +# 1851| r1851_11(int) = CopyValue : r1851_10 +# 1851| v1851_12(void) = Switch : r1851_11 #-----| Default -> Block 4 -# 1805| Block 4 -# 1805| v1805_1(void) = NoOp : -# 1806| r1806_1(glval<int>) = VariableAddress[x] : -# 1806| r1806_2(int) = Load[x] : &:r1806_1, m1801_7 -# 1806| r1806_3(glval<int>) = VariableAddress[v] : -# 1806| r1806_4(int) = Load[v] : &:r1806_3, m1804_4 -# 1806| r1806_5(int) = Add : r1806_2, r1806_4 -# 1806| r1806_6(glval<int>) = VariableAddress[x] : -# 1806| m1806_7(int) = Store[x] : &:r1806_6, r1806_5 -# 1809| r1809_1(glval<int>) = VariableAddress[z] : -# 1809| r1809_2(glval<int>) = VariableAddress[x] : -# 1809| r1809_3(int) = Load[x] : &:r1809_2, m1806_7 -# 1809| m1809_4(int) = Store[z] : &:r1809_1, r1809_3 -# 1810| r1810_1(glval<int>) = VariableAddress[z] : -# 1810| r1810_2(int) = Load[z] : &:r1810_1, m1809_4 -# 1810| v1810_3(void) = Switch : r1810_2 +# 1852| Block 4 +# 1852| v1852_1(void) = NoOp : +# 1853| r1853_1(glval<int>) = VariableAddress[x] : +# 1853| r1853_2(int) = Load[x] : &:r1853_1, m1848_7 +# 1853| r1853_3(glval<int>) = VariableAddress[v] : +# 1853| r1853_4(int) = Load[v] : &:r1853_3, m1851_4 +# 1853| r1853_5(int) = Add : r1853_2, r1853_4 +# 1853| r1853_6(glval<int>) = VariableAddress[x] : +# 1853| m1853_7(int) = Store[x] : &:r1853_6, r1853_5 +# 1856| r1856_1(glval<int>) = VariableAddress[z] : +# 1856| r1856_2(glval<int>) = VariableAddress[x] : +# 1856| r1856_3(int) = Load[x] : &:r1856_2, m1853_7 +# 1856| m1856_4(int) = Store[z] : &:r1856_1, r1856_3 +# 1857| r1857_1(glval<int>) = VariableAddress[z] : +# 1857| r1857_2(int) = Load[z] : &:r1857_1, m1856_4 +# 1857| v1857_3(void) = Switch : r1857_2 #-----| Default -> Block 5 -# 1811| Block 5 -# 1811| v1811_1(void) = NoOp : -# 1812| r1812_1(glval<int>) = VariableAddress[x] : -# 1812| r1812_2(int) = Load[x] : &:r1812_1, m1806_7 -# 1812| r1812_3(glval<int>) = VariableAddress[z] : -# 1812| r1812_4(int) = Load[z] : &:r1812_3, m1809_4 -# 1812| r1812_5(int) = Add : r1812_2, r1812_4 -# 1812| r1812_6(glval<int>) = VariableAddress[x] : -# 1812| m1812_7(int) = Store[x] : &:r1812_6, r1812_5 -# 1815| r1815_1(glval<int>) = VariableAddress[z2] : -# 1815| r1815_2(glval<int>) = VariableAddress[z] : -# 1815| r1815_3(int) = Load[z] : &:r1815_2, m1809_4 -# 1815| m1815_4(int) = Store[z2] : &:r1815_1, r1815_3 -# 1815| r1815_5(glval<int>) = VariableAddress[z2] : -# 1815| r1815_6(int) = Load[z2] : &:r1815_5, m1815_4 -# 1815| r1815_7(int) = CopyValue : r1815_6 -# 1815| v1815_8(void) = Switch : r1815_7 +# 1858| Block 5 +# 1858| v1858_1(void) = NoOp : +# 1859| r1859_1(glval<int>) = VariableAddress[x] : +# 1859| r1859_2(int) = Load[x] : &:r1859_1, m1853_7 +# 1859| r1859_3(glval<int>) = VariableAddress[z] : +# 1859| r1859_4(int) = Load[z] : &:r1859_3, m1856_4 +# 1859| r1859_5(int) = Add : r1859_2, r1859_4 +# 1859| r1859_6(glval<int>) = VariableAddress[x] : +# 1859| m1859_7(int) = Store[x] : &:r1859_6, r1859_5 +# 1862| r1862_1(glval<int>) = VariableAddress[z2] : +# 1862| r1862_2(glval<int>) = VariableAddress[z] : +# 1862| r1862_3(int) = Load[z] : &:r1862_2, m1856_4 +# 1862| m1862_4(int) = Store[z2] : &:r1862_1, r1862_3 +# 1862| r1862_5(glval<int>) = VariableAddress[z2] : +# 1862| r1862_6(int) = Load[z2] : &:r1862_5, m1862_4 +# 1862| r1862_7(int) = CopyValue : r1862_6 +# 1862| v1862_8(void) = Switch : r1862_7 #-----| Default -> Block 6 -# 1816| Block 6 -# 1816| v1816_1(void) = NoOp : -# 1817| r1817_1(glval<int>) = VariableAddress[z2] : -# 1817| r1817_2(int) = Load[z2] : &:r1817_1, m1815_4 -# 1817| r1817_3(glval<int>) = VariableAddress[x] : -# 1817| r1817_4(int) = Load[x] : &:r1817_3, m1812_7 -# 1817| r1817_5(int) = Add : r1817_4, r1817_2 -# 1817| m1817_6(int) = Store[x] : &:r1817_3, r1817_5 -# 1819| v1819_1(void) = NoOp : -# 1787| v1787_7(void) = ReturnVoid : -# 1787| v1787_8(void) = AliasedUse : m1787_3 -# 1787| v1787_9(void) = ExitFunction : - -# 1823| int global_2 -# 1823| Block 0 -# 1823| v1823_1(void) = EnterFunction : -# 1823| m1823_2(unknown) = AliasedDefinition : -# 1823| r1823_3(glval<int>) = VariableAddress[global_2] : -# 1823| r1823_4(int) = Constant[1] : -# 1823| m1823_5(int) = Store[global_2] : &:r1823_3, r1823_4 -# 1823| m1823_6(unknown) = Chi : total:m1823_2, partial:m1823_5 -# 1823| v1823_7(void) = ReturnVoid : -# 1823| v1823_8(void) = AliasedUse : ~m1823_6 -# 1823| v1823_9(void) = ExitFunction : - -# 1827| constructor_only global_4 -# 1827| Block 0 -# 1827| v1827_1(void) = EnterFunction : -# 1827| m1827_2(unknown) = AliasedDefinition : -# 1827| r1827_3(glval<constructor_only>) = VariableAddress[global_4] : -# 1827| r1827_4(glval<unknown>) = FunctionAddress[constructor_only] : -# 1827| r1827_5(int) = Constant[1] : -# 1827| v1827_6(void) = Call[constructor_only] : func:r1827_4, this:r1827_3, 0:r1827_5 -# 1827| m1827_7(unknown) = ^CallSideEffect : ~m1827_2 -# 1827| m1827_8(unknown) = Chi : total:m1827_2, partial:m1827_7 -# 1827| m1827_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1827_3 -# 1827| m1827_10(unknown) = Chi : total:m1827_8, partial:m1827_9 -# 1827| v1827_11(void) = ReturnVoid : -# 1827| v1827_12(void) = AliasedUse : ~m1827_10 -# 1827| v1827_13(void) = ExitFunction : - -# 1829| constructor_only global_5 -# 1829| Block 0 -# 1829| v1829_1(void) = EnterFunction : -# 1829| m1829_2(unknown) = AliasedDefinition : -# 1829| r1829_3(glval<constructor_only>) = VariableAddress[global_5] : -# 1829| r1829_4(glval<unknown>) = FunctionAddress[constructor_only] : -# 1829| r1829_5(int) = Constant[2] : -# 1829| v1829_6(void) = Call[constructor_only] : func:r1829_4, this:r1829_3, 0:r1829_5 -# 1829| m1829_7(unknown) = ^CallSideEffect : ~m1829_2 -# 1829| m1829_8(unknown) = Chi : total:m1829_2, partial:m1829_7 -# 1829| m1829_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1829_3 -# 1829| m1829_10(unknown) = Chi : total:m1829_8, partial:m1829_9 -# 1829| v1829_11(void) = ReturnVoid : -# 1829| v1829_12(void) = AliasedUse : ~m1829_10 -# 1829| v1829_13(void) = ExitFunction : - -# 1831| char* global_string -# 1831| Block 0 -# 1831| v1831_1(void) = EnterFunction : -# 1831| m1831_2(unknown) = AliasedDefinition : -# 1831| r1831_3(glval<char *>) = VariableAddress[global_string] : -# 1831| r1831_4(glval<char[14]>) = StringConstant["global string"] : -# 1831| r1831_5(char *) = Convert : r1831_4 -# 1831| r1831_6(char *) = Convert : r1831_5 -# 1831| m1831_7(char *) = Store[global_string] : &:r1831_3, r1831_6 -# 1831| m1831_8(unknown) = Chi : total:m1831_2, partial:m1831_7 -# 1831| v1831_9(void) = ReturnVoid : -# 1831| v1831_10(void) = AliasedUse : ~m1831_8 -# 1831| v1831_11(void) = ExitFunction : - -# 1833| int global_6 -# 1833| Block 0 -# 1833| v1833_1(void) = EnterFunction : -# 1833| m1833_2(unknown) = AliasedDefinition : -# 1833| r1833_3(glval<int>) = VariableAddress[global_6] : -# 1833| r1833_4(glval<int>) = VariableAddress[global_2] : -# 1833| r1833_5(int) = Load[global_2] : &:r1833_4, ~m1833_2 -# 1833| m1833_6(int) = Store[global_6] : &:r1833_3, r1833_5 -# 1833| m1833_7(unknown) = Chi : total:m1833_2, partial:m1833_6 -# 1833| v1833_8(void) = ReturnVoid : -# 1833| v1833_9(void) = AliasedUse : ~m1833_7 -# 1833| v1833_10(void) = ExitFunction : - -# 1836| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1836| Block 0 -# 1836| v1836_1(void) = EnterFunction : -# 1836| m1836_2(unknown) = AliasedDefinition : -# 1836| m1836_3(unknown) = InitializeNonLocal : -# 1836| m1836_4(unknown) = Chi : total:m1836_2, partial:m1836_3 -# 1836| r1836_5(glval<unknown>) = VariableAddress[#this] : -# 1836| m1836_6(glval<A>) = InitializeParameter[#this] : &:r1836_5 -# 1836| r1836_7(glval<A>) = Load[#this] : &:r1836_5, m1836_6 -# 1836| m1836_8(A) = InitializeIndirection[#this] : &:r1836_7 +# 1863| Block 6 +# 1863| v1863_1(void) = NoOp : +# 1864| r1864_1(glval<int>) = VariableAddress[z2] : +# 1864| r1864_2(int) = Load[z2] : &:r1864_1, m1862_4 +# 1864| r1864_3(glval<int>) = VariableAddress[x] : +# 1864| r1864_4(int) = Load[x] : &:r1864_3, m1859_7 +# 1864| r1864_5(int) = Add : r1864_4, r1864_2 +# 1864| m1864_6(int) = Store[x] : &:r1864_3, r1864_5 +# 1866| v1866_1(void) = NoOp : +# 1834| v1834_7(void) = ReturnVoid : +# 1834| v1834_8(void) = AliasedUse : m1834_3 +# 1834| v1834_9(void) = ExitFunction : + +# 1870| int global_2 +# 1870| Block 0 +# 1870| v1870_1(void) = EnterFunction : +# 1870| m1870_2(unknown) = AliasedDefinition : +# 1870| r1870_3(glval<int>) = VariableAddress[global_2] : +# 1870| r1870_4(int) = Constant[1] : +# 1870| m1870_5(int) = Store[global_2] : &:r1870_3, r1870_4 +# 1870| m1870_6(unknown) = Chi : total:m1870_2, partial:m1870_5 +# 1870| v1870_7(void) = ReturnVoid : +# 1870| v1870_8(void) = AliasedUse : ~m1870_6 +# 1870| v1870_9(void) = ExitFunction : + +# 1874| constructor_only global_4 +# 1874| Block 0 +# 1874| v1874_1(void) = EnterFunction : +# 1874| m1874_2(unknown) = AliasedDefinition : +# 1874| r1874_3(glval<constructor_only>) = VariableAddress[global_4] : +# 1874| r1874_4(glval<unknown>) = FunctionAddress[constructor_only] : +# 1874| r1874_5(int) = Constant[1] : +# 1874| v1874_6(void) = Call[constructor_only] : func:r1874_4, this:r1874_3, 0:r1874_5 +# 1874| m1874_7(unknown) = ^CallSideEffect : ~m1874_2 +# 1874| m1874_8(unknown) = Chi : total:m1874_2, partial:m1874_7 +# 1874| m1874_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1874_3 +# 1874| m1874_10(unknown) = Chi : total:m1874_8, partial:m1874_9 +# 1874| v1874_11(void) = ReturnVoid : +# 1874| v1874_12(void) = AliasedUse : ~m1874_10 +# 1874| v1874_13(void) = ExitFunction : + +# 1876| constructor_only global_5 +# 1876| Block 0 +# 1876| v1876_1(void) = EnterFunction : +# 1876| m1876_2(unknown) = AliasedDefinition : +# 1876| r1876_3(glval<constructor_only>) = VariableAddress[global_5] : +# 1876| r1876_4(glval<unknown>) = FunctionAddress[constructor_only] : +# 1876| r1876_5(int) = Constant[2] : +# 1876| v1876_6(void) = Call[constructor_only] : func:r1876_4, this:r1876_3, 0:r1876_5 +# 1876| m1876_7(unknown) = ^CallSideEffect : ~m1876_2 +# 1876| m1876_8(unknown) = Chi : total:m1876_2, partial:m1876_7 +# 1876| m1876_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1876_3 +# 1876| m1876_10(unknown) = Chi : total:m1876_8, partial:m1876_9 +# 1876| v1876_11(void) = ReturnVoid : +# 1876| v1876_12(void) = AliasedUse : ~m1876_10 +# 1876| v1876_13(void) = ExitFunction : + +# 1878| char* global_string +# 1878| Block 0 +# 1878| v1878_1(void) = EnterFunction : +# 1878| m1878_2(unknown) = AliasedDefinition : +# 1878| r1878_3(glval<char *>) = VariableAddress[global_string] : +# 1878| r1878_4(glval<char[14]>) = StringConstant["global string"] : +# 1878| r1878_5(char *) = Convert : r1878_4 +# 1878| r1878_6(char *) = Convert : r1878_5 +# 1878| m1878_7(char *) = Store[global_string] : &:r1878_3, r1878_6 +# 1878| m1878_8(unknown) = Chi : total:m1878_2, partial:m1878_7 +# 1878| v1878_9(void) = ReturnVoid : +# 1878| v1878_10(void) = AliasedUse : ~m1878_8 +# 1878| v1878_11(void) = ExitFunction : + +# 1880| int global_6 +# 1880| Block 0 +# 1880| v1880_1(void) = EnterFunction : +# 1880| m1880_2(unknown) = AliasedDefinition : +# 1880| r1880_3(glval<int>) = VariableAddress[global_6] : +# 1880| r1880_4(glval<int>) = VariableAddress[global_2] : +# 1880| r1880_5(int) = Load[global_2] : &:r1880_4, ~m1880_2 +# 1880| m1880_6(int) = Store[global_6] : &:r1880_3, r1880_5 +# 1880| m1880_7(unknown) = Chi : total:m1880_2, partial:m1880_6 +# 1880| v1880_8(void) = ReturnVoid : +# 1880| v1880_9(void) = AliasedUse : ~m1880_7 +# 1880| v1880_10(void) = ExitFunction : + +# 1883| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1883| Block 0 +# 1883| v1883_1(void) = EnterFunction : +# 1883| m1883_2(unknown) = AliasedDefinition : +# 1883| m1883_3(unknown) = InitializeNonLocal : +# 1883| m1883_4(unknown) = Chi : total:m1883_2, partial:m1883_3 +# 1883| r1883_5(glval<unknown>) = VariableAddress[#this] : +# 1883| m1883_6(glval<A>) = InitializeParameter[#this] : &:r1883_5 +# 1883| r1883_7(glval<A>) = Load[#this] : &:r1883_5, m1883_6 +# 1883| m1883_8(A) = InitializeIndirection[#this] : &:r1883_7 #-----| r0_1(glval<A &&>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(A &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(A &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 #-----| r0_5(glval<unknown>) = VariableAddress[#this] : -#-----| r0_6(A *) = Load[#this] : &:r0_5, m1836_6 +#-----| r0_6(A *) = Load[#this] : &:r0_5, m1883_6 #-----| r0_7(glval<enum <unnamed>[1]>) = FieldAddress[e] : r0_6 #-----| r0_8(glval<A &&>) = VariableAddress[(unnamed parameter 0)] : #-----| r0_9(A &&) = Load[(unnamed parameter 0)] : &:r0_8, m0_2 @@ -11304,3787 +11326,3842 @@ ir.cpp: #-----| r0_11(glval<enum <unnamed>[1]>) = FieldAddress[e] : r0_10 #-----| r0_12(enum <unnamed>[1]) = Load[?] : &:r0_11, ~m0_4 #-----| m0_13(enum <unnamed>[1]) = Store[?] : &:r0_7, r0_12 -#-----| m0_14(unknown) = Chi : total:m1836_8, partial:m0_13 +#-----| m0_14(unknown) = Chi : total:m1883_8, partial:m0_13 #-----| r0_15(glval<A &>) = VariableAddress[#return] : #-----| r0_16(glval<unknown>) = VariableAddress[#this] : -#-----| r0_17(A *) = Load[#this] : &:r0_16, m1836_6 +#-----| r0_17(A *) = Load[#this] : &:r0_16, m1883_6 #-----| r0_18(glval<A>) = CopyValue : r0_17 #-----| r0_19(A &) = CopyValue : r0_18 #-----| m0_20(A &) = Store[#return] : &:r0_15, r0_19 -# 1836| v1836_9(void) = ReturnIndirection[#this] : &:r1836_7, m0_14 +# 1883| v1883_9(void) = ReturnIndirection[#this] : &:r1883_7, m0_14 #-----| v0_21(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1836| r1836_10(glval<A &>) = VariableAddress[#return] : -# 1836| v1836_11(void) = ReturnValue : &:r1836_10, m0_20 -# 1836| v1836_12(void) = AliasedUse : m1836_3 -# 1836| v1836_13(void) = ExitFunction : - -# 1841| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1841| Block 0 -# 1841| v1841_1(void) = EnterFunction : -# 1841| m1841_2(unknown) = AliasedDefinition : -# 1841| m1841_3(unknown) = InitializeNonLocal : -# 1841| m1841_4(unknown) = Chi : total:m1841_2, partial:m1841_3 -# 1841| r1841_5(glval<unknown>) = VariableAddress[#this] : -# 1841| m1841_6(glval<B>) = InitializeParameter[#this] : &:r1841_5 -# 1841| r1841_7(glval<B>) = Load[#this] : &:r1841_5, m1841_6 -# 1841| m1841_8(B) = InitializeIndirection[#this] : &:r1841_7 +# 1883| r1883_10(glval<A &>) = VariableAddress[#return] : +# 1883| v1883_11(void) = ReturnValue : &:r1883_10, m0_20 +# 1883| v1883_12(void) = AliasedUse : m1883_3 +# 1883| v1883_13(void) = ExitFunction : + +# 1888| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1888| Block 0 +# 1888| v1888_1(void) = EnterFunction : +# 1888| m1888_2(unknown) = AliasedDefinition : +# 1888| m1888_3(unknown) = InitializeNonLocal : +# 1888| m1888_4(unknown) = Chi : total:m1888_2, partial:m1888_3 +# 1888| r1888_5(glval<unknown>) = VariableAddress[#this] : +# 1888| m1888_6(glval<B>) = InitializeParameter[#this] : &:r1888_5 +# 1888| r1888_7(glval<B>) = Load[#this] : &:r1888_5, m1888_6 +# 1888| m1888_8(B) = InitializeIndirection[#this] : &:r1888_7 #-----| r0_1(glval<B &&>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(B &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(B &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1841| r1841_9(glval<unknown>) = VariableAddress[#this] : -# 1841| r1841_10(B *) = Load[#this] : &:r1841_9, m1841_6 -#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1841_10 -# 1841| r1841_11(glval<unknown>) = FunctionAddress[operator=] : -# 1841| r1841_12(glval<B &&>) = VariableAddress[(unnamed parameter 0)] : -# 1841| r1841_13(B &&) = Load[(unnamed parameter 0)] : &:r1841_12, m0_2 -#-----| r0_6(glval<B>) = CopyValue : r1841_13 -# 1841| r1841_14(B *) = CopyValue : r0_6 -#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1841_14 -# 1841| r1841_15(glval<A>) = CopyValue : r0_7 -#-----| r0_8(A &) = CopyValue : r1841_15 -# 1841| r1841_16(A &) = Call[operator=] : func:r1841_11, this:r0_5, 0:r0_8 -# 1841| m1841_17(unknown) = ^CallSideEffect : ~m1841_4 -# 1841| m1841_18(unknown) = Chi : total:m1841_4, partial:m1841_17 -#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m1841_8 +# 1888| r1888_9(glval<unknown>) = VariableAddress[#this] : +# 1888| r1888_10(B *) = Load[#this] : &:r1888_9, m1888_6 +#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1888_10 +# 1888| r1888_11(glval<unknown>) = FunctionAddress[operator=] : +# 1888| r1888_12(glval<B &&>) = VariableAddress[(unnamed parameter 0)] : +# 1888| r1888_13(B &&) = Load[(unnamed parameter 0)] : &:r1888_12, m0_2 +#-----| r0_6(glval<B>) = CopyValue : r1888_13 +# 1888| r1888_14(B *) = CopyValue : r0_6 +#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1888_14 +# 1888| r1888_15(glval<A>) = CopyValue : r0_7 +#-----| r0_8(A &) = CopyValue : r1888_15 +# 1888| r1888_16(A &) = Call[operator=] : func:r1888_11, this:r0_5, 0:r0_8 +# 1888| m1888_17(unknown) = ^CallSideEffect : ~m1888_4 +# 1888| m1888_18(unknown) = Chi : total:m1888_4, partial:m1888_17 +#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m1888_8 #-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_8, ~m0_4 #-----| m0_11(A) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 -#-----| m0_12(unknown) = Chi : total:m1841_8, partial:m0_11 +#-----| m0_12(unknown) = Chi : total:m1888_8, partial:m0_11 #-----| m0_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_8 #-----| m0_14(unknown) = Chi : total:m0_4, partial:m0_13 -#-----| r0_15(glval<A>) = CopyValue : r1841_16 +#-----| r0_15(glval<A>) = CopyValue : r1888_16 #-----| r0_16(glval<B &>) = VariableAddress[#return] : #-----| r0_17(glval<unknown>) = VariableAddress[#this] : -#-----| r0_18(B *) = Load[#this] : &:r0_17, m1841_6 +#-----| r0_18(B *) = Load[#this] : &:r0_17, m1888_6 #-----| r0_19(glval<B>) = CopyValue : r0_18 #-----| r0_20(B &) = CopyValue : r0_19 #-----| m0_21(B &) = Store[#return] : &:r0_16, r0_20 -# 1841| v1841_19(void) = ReturnIndirection[#this] : &:r1841_7, m0_12 +# 1888| v1888_19(void) = ReturnIndirection[#this] : &:r1888_7, m0_12 #-----| v0_22(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_14 -# 1841| r1841_20(glval<B &>) = VariableAddress[#return] : -# 1841| v1841_21(void) = ReturnValue : &:r1841_20, m0_21 -# 1841| v1841_22(void) = AliasedUse : ~m1841_18 -# 1841| v1841_23(void) = ExitFunction : - -# 1845| void block_assignment::foo() -# 1845| Block 0 -# 1845| v1845_1(void) = EnterFunction : -# 1845| m1845_2(unknown) = AliasedDefinition : -# 1845| m1845_3(unknown) = InitializeNonLocal : -# 1845| m1845_4(unknown) = Chi : total:m1845_2, partial:m1845_3 -# 1846| r1846_1(glval<B>) = VariableAddress[v] : -# 1846| m1846_2(B) = Uninitialized[v] : &:r1846_1 -# 1846| r1846_3(glval<unknown>) = FunctionAddress[B] : -# 1846| r1846_4(A *) = Constant[0] : -# 1846| v1846_5(void) = Call[B] : func:r1846_3, this:r1846_1, 0:r1846_4 -# 1846| m1846_6(unknown) = ^CallSideEffect : ~m1845_4 -# 1846| m1846_7(unknown) = Chi : total:m1845_4, partial:m1846_6 -# 1846| v1846_8(void) = ^BufferReadSideEffect[0] : &:r1846_4, ~m1846_7 -# 1846| m1846_9(B) = ^IndirectMayWriteSideEffect[-1] : &:r1846_1 -# 1846| m1846_10(B) = Chi : total:m1846_2, partial:m1846_9 -# 1846| m1846_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1846_4 -# 1846| m1846_12(unknown) = Chi : total:m1846_7, partial:m1846_11 -# 1847| r1847_1(glval<B>) = VariableAddress[v] : -# 1847| r1847_2(glval<unknown>) = FunctionAddress[operator=] : -# 1847| r1847_3(glval<B>) = VariableAddress[#temp1847:13] : -# 1847| m1847_4(B) = Uninitialized[#temp1847:13] : &:r1847_3 -# 1847| r1847_5(glval<unknown>) = FunctionAddress[B] : -# 1847| r1847_6(A *) = Constant[0] : -# 1847| v1847_7(void) = Call[B] : func:r1847_5, this:r1847_3, 0:r1847_6 -# 1847| m1847_8(unknown) = ^CallSideEffect : ~m1846_12 -# 1847| m1847_9(unknown) = Chi : total:m1846_12, partial:m1847_8 -# 1847| v1847_10(void) = ^BufferReadSideEffect[0] : &:r1847_6, ~m1847_9 -# 1847| m1847_11(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_3 -# 1847| m1847_12(B) = Chi : total:m1847_4, partial:m1847_11 -# 1847| m1847_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_6 -# 1847| m1847_14(unknown) = Chi : total:m1847_9, partial:m1847_13 -# 1847| r1847_15(B &) = CopyValue : r1847_3 -# 1847| r1847_16(B &) = Call[operator=] : func:r1847_2, this:r1847_1, 0:r1847_15 -# 1847| m1847_17(unknown) = ^CallSideEffect : ~m1847_14 -# 1847| m1847_18(unknown) = Chi : total:m1847_14, partial:m1847_17 -# 1847| v1847_19(void) = ^IndirectReadSideEffect[-1] : &:r1847_1, m1846_10 -# 1847| v1847_20(void) = ^BufferReadSideEffect[0] : &:r1847_15, ~m1847_12 -# 1847| m1847_21(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_1 -# 1847| m1847_22(B) = Chi : total:m1846_10, partial:m1847_21 -# 1847| m1847_23(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_15 -# 1847| m1847_24(B) = Chi : total:m1847_12, partial:m1847_23 -# 1847| r1847_25(glval<B>) = CopyValue : r1847_16 -# 1848| v1848_1(void) = NoOp : -# 1845| v1845_5(void) = ReturnVoid : -# 1845| v1845_6(void) = AliasedUse : ~m1847_18 -# 1845| v1845_7(void) = ExitFunction : - -# 1851| void magicvars() -# 1851| Block 0 -# 1851| v1851_1(void) = EnterFunction : -# 1851| m1851_2(unknown) = AliasedDefinition : -# 1851| m1851_3(unknown) = InitializeNonLocal : -# 1851| m1851_4(unknown) = Chi : total:m1851_2, partial:m1851_3 -# 1852| r1852_1(glval<char *>) = VariableAddress[pf] : -# 1852| r1852_2(glval<char[17]>) = VariableAddress[__PRETTY_FUNCTION__] : -# 1852| r1852_3(char *) = Convert : r1852_2 -# 1852| m1852_4(char *) = Store[pf] : &:r1852_1, r1852_3 -# 1853| r1853_1(glval<char *>) = VariableAddress[strfunc] : -# 1853| r1853_2(glval<char[10]>) = VariableAddress[__func__] : -# 1853| r1853_3(char *) = Convert : r1853_2 -# 1853| m1853_4(char *) = Store[strfunc] : &:r1853_1, r1853_3 -# 1854| v1854_1(void) = NoOp : -# 1851| v1851_5(void) = ReturnVoid : -# 1851| v1851_6(void) = AliasedUse : m1851_3 -# 1851| v1851_7(void) = ExitFunction : - -# 1864| void* missing_declaration_entries::Bar1<int>::missing_type_decl_entry(missing_declaration_entries::Bar1<int>::pointer) -# 1864| Block 0 -# 1864| v1864_1(void) = EnterFunction : -# 1864| m1864_2(unknown) = AliasedDefinition : -# 1864| m1864_3(unknown) = InitializeNonLocal : -# 1864| m1864_4(unknown) = Chi : total:m1864_2, partial:m1864_3 -# 1864| r1864_5(glval<unknown>) = VariableAddress[#this] : -# 1864| m1864_6(glval<Bar1<int>>) = InitializeParameter[#this] : &:r1864_5 -# 1864| r1864_7(glval<Bar1<int>>) = Load[#this] : &:r1864_5, m1864_6 -# 1864| m1864_8(Bar1<int>) = InitializeIndirection[#this] : &:r1864_7 -# 1864| r1864_9(glval<S *>) = VariableAddress[p] : -# 1864| m1864_10(S *) = InitializeParameter[p] : &:r1864_9 -# 1864| r1864_11(S *) = Load[p] : &:r1864_9, m1864_10 -# 1864| m1864_12(unknown) = InitializeIndirection[p] : &:r1864_11 -# 1866| r1866_1(glval<void *>) = VariableAddress[#return] : -# 1866| r1866_2(glval<S *>) = VariableAddress[p] : -# 1866| r1866_3(S *) = Load[p] : &:r1866_2, m1864_10 -# 1866| r1866_4(void *) = Convert : r1866_3 -# 1866| m1866_5(void *) = Store[#return] : &:r1866_1, r1866_4 -# 1864| v1864_13(void) = ReturnIndirection[#this] : &:r1864_7, m1864_8 -# 1864| v1864_14(void) = ReturnIndirection[p] : &:r1864_11, m1864_12 -# 1864| r1864_15(glval<void *>) = VariableAddress[#return] : -# 1864| v1864_16(void) = ReturnValue : &:r1864_15, m1866_5 -# 1864| v1864_17(void) = AliasedUse : m1864_3 -# 1864| v1864_18(void) = ExitFunction : - -# 1870| void missing_declaration_entries::test1() -# 1870| Block 0 -# 1870| v1870_1(void) = EnterFunction : -# 1870| m1870_2(unknown) = AliasedDefinition : -# 1870| m1870_3(unknown) = InitializeNonLocal : -# 1870| m1870_4(unknown) = Chi : total:m1870_2, partial:m1870_3 -# 1871| r1871_1(glval<Bar1<int>>) = VariableAddress[b] : -# 1871| m1871_2(Bar1<int>) = Uninitialized[b] : &:r1871_1 -# 1872| r1872_1(glval<Bar1<int>>) = VariableAddress[b] : -# 1872| r1872_2(glval<unknown>) = FunctionAddress[missing_type_decl_entry] : -# 1872| r1872_3(S *) = Constant[0] : -# 1872| r1872_4(void *) = Call[missing_type_decl_entry] : func:r1872_2, this:r1872_1, 0:r1872_3 -# 1872| m1872_5(unknown) = ^CallSideEffect : ~m1870_4 -# 1872| m1872_6(unknown) = Chi : total:m1870_4, partial:m1872_5 -# 1872| v1872_7(void) = ^IndirectReadSideEffect[-1] : &:r1872_1, m1871_2 -# 1872| v1872_8(void) = ^BufferReadSideEffect[0] : &:r1872_3, ~m1872_6 -# 1872| m1872_9(Bar1<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1872_1 -# 1872| m1872_10(Bar1<int>) = Chi : total:m1871_2, partial:m1872_9 -# 1872| m1872_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1872_3 -# 1872| m1872_12(unknown) = Chi : total:m1872_6, partial:m1872_11 -# 1873| v1873_1(void) = NoOp : -# 1870| v1870_5(void) = ReturnVoid : -# 1870| v1870_6(void) = AliasedUse : ~m1872_12 -# 1870| v1870_7(void) = ExitFunction : - -# 1877| int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() -# 1877| Block 0 -# 1877| v1877_1(void) = EnterFunction : -# 1877| m1877_2(unknown) = AliasedDefinition : -# 1877| m1877_3(unknown) = InitializeNonLocal : -# 1877| m1877_4(unknown) = Chi : total:m1877_2, partial:m1877_3 -# 1877| r1877_5(glval<unknown>) = VariableAddress[#this] : -# 1877| m1877_6(glval<Bar2<int>>) = InitializeParameter[#this] : &:r1877_5 -# 1877| r1877_7(glval<Bar2<int>>) = Load[#this] : &:r1877_5, m1877_6 -# 1877| m1877_8(Bar2<int>) = InitializeIndirection[#this] : &:r1877_7 -# 1878| r1878_1(glval<int[10]>) = VariableAddress[x] : -# 1878| m1878_2(int[10]) = Uninitialized[x] : &:r1878_1 -# 1878| r1878_3(glval<int[10]>) = VariableAddress[y] : -# 1878| m1878_4(int[10]) = Uninitialized[y] : &:r1878_3 -# 1879| r1879_1(int) = Constant[10] : -# 1879| r1879_2(glval<int[10]>) = VariableAddress[x] : -# 1879| r1879_3(int *) = Convert : r1879_2 -# 1879| r1879_4(glval<int>) = CopyValue : r1879_3 -# 1879| m1879_5(int) = Store[?] : &:r1879_4, r1879_1 -# 1879| m1879_6(int[10]) = Chi : total:m1878_2, partial:m1879_5 -# 1880| r1880_1(int) = Constant[10] : -# 1880| r1880_2(glval<int[10]>) = VariableAddress[y] : -# 1880| r1880_3(int *) = Convert : r1880_2 -# 1880| r1880_4(glval<int>) = CopyValue : r1880_3 -# 1880| m1880_5(int) = Store[?] : &:r1880_4, r1880_1 -# 1880| m1880_6(int[10]) = Chi : total:m1878_4, partial:m1880_5 -# 1881| r1881_1(glval<int>) = VariableAddress[#return] : -# 1881| r1881_2(glval<int[10]>) = VariableAddress[x] : -# 1881| r1881_3(int *) = Convert : r1881_2 -# 1881| r1881_4(int) = Load[?] : &:r1881_3, m1879_5 -# 1881| r1881_5(glval<int[10]>) = VariableAddress[y] : -# 1881| r1881_6(int *) = Convert : r1881_5 -# 1881| r1881_7(int) = Load[?] : &:r1881_6, m1880_5 -# 1881| r1881_8(int) = Add : r1881_4, r1881_7 -# 1881| m1881_9(int) = Store[#return] : &:r1881_1, r1881_8 -# 1877| v1877_9(void) = ReturnIndirection[#this] : &:r1877_7, m1877_8 -# 1877| r1877_10(glval<int>) = VariableAddress[#return] : -# 1877| v1877_11(void) = ReturnValue : &:r1877_10, m1881_9 -# 1877| v1877_12(void) = AliasedUse : m1877_3 -# 1877| v1877_13(void) = ExitFunction : - -# 1885| void missing_declaration_entries::test2() -# 1885| Block 0 -# 1885| v1885_1(void) = EnterFunction : -# 1885| m1885_2(unknown) = AliasedDefinition : -# 1885| m1885_3(unknown) = InitializeNonLocal : -# 1885| m1885_4(unknown) = Chi : total:m1885_2, partial:m1885_3 -# 1886| r1886_1(glval<Bar2<int>>) = VariableAddress[b] : -# 1886| m1886_2(Bar2<int>) = Uninitialized[b] : &:r1886_1 -# 1887| r1887_1(glval<Bar2<int>>) = VariableAddress[b] : -# 1887| r1887_2(glval<unknown>) = FunctionAddress[two_missing_variable_declaration_entries] : -# 1887| r1887_3(int) = Call[two_missing_variable_declaration_entries] : func:r1887_2, this:r1887_1 -# 1887| m1887_4(unknown) = ^CallSideEffect : ~m1885_4 -# 1887| m1887_5(unknown) = Chi : total:m1885_4, partial:m1887_4 -# 1887| v1887_6(void) = ^IndirectReadSideEffect[-1] : &:r1887_1, m1886_2 -# 1887| m1887_7(Bar2<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1887_1 -# 1887| m1887_8(Bar2<int>) = Chi : total:m1886_2, partial:m1887_7 -# 1888| v1888_1(void) = NoOp : -# 1885| v1885_5(void) = ReturnVoid : -# 1885| v1885_6(void) = AliasedUse : ~m1887_5 -# 1885| v1885_7(void) = ExitFunction : - -# 1891| char global_template<char> -# 1891| Block 0 -# 1891| v1891_1(void) = EnterFunction : -# 1891| m1891_2(unknown) = AliasedDefinition : -# 1891| r1891_3(glval<char>) = VariableAddress[global_template] : -# 1891| r1891_4(char) = Constant[42] : -# 1891| m1891_5(char) = Store[global_template] : &:r1891_3, r1891_4 -# 1891| m1891_6(unknown) = Chi : total:m1891_2, partial:m1891_5 -# 1891| v1891_7(void) = ReturnVoid : -# 1891| v1891_8(void) = AliasedUse : ~m1891_6 -# 1891| v1891_9(void) = ExitFunction : - -# 1891| int global_template<int> -# 1891| Block 0 -# 1891| v1891_1(void) = EnterFunction : -# 1891| m1891_2(unknown) = AliasedDefinition : -# 1891| r1891_3(glval<int>) = VariableAddress[global_template] : -# 1891| r1891_4(int) = Constant[42] : -# 1891| m1891_5(int) = Store[global_template] : &:r1891_3, r1891_4 -# 1891| m1891_6(unknown) = Chi : total:m1891_2, partial:m1891_5 -# 1891| v1891_7(void) = ReturnVoid : -# 1891| v1891_8(void) = AliasedUse : ~m1891_6 -# 1891| v1891_9(void) = ExitFunction : - -# 1893| int test_global_template_int() -# 1893| Block 0 -# 1893| v1893_1(void) = EnterFunction : -# 1893| m1893_2(unknown) = AliasedDefinition : -# 1893| m1893_3(unknown) = InitializeNonLocal : -# 1893| m1893_4(unknown) = Chi : total:m1893_2, partial:m1893_3 -# 1894| r1894_1(glval<int>) = VariableAddress[local_int] : -# 1894| r1894_2(glval<int>) = VariableAddress[global_template] : -# 1894| r1894_3(int) = Load[global_template] : &:r1894_2, ~m1893_3 -# 1894| m1894_4(int) = Store[local_int] : &:r1894_1, r1894_3 -# 1895| r1895_1(glval<char>) = VariableAddress[local_char] : -# 1895| r1895_2(glval<char>) = VariableAddress[global_template] : -# 1895| r1895_3(char) = Load[global_template] : &:r1895_2, ~m1893_3 -# 1895| m1895_4(char) = Store[local_char] : &:r1895_1, r1895_3 -# 1896| r1896_1(glval<int>) = VariableAddress[#return] : -# 1896| r1896_2(glval<int>) = VariableAddress[local_int] : -# 1896| r1896_3(int) = Load[local_int] : &:r1896_2, m1894_4 -# 1896| r1896_4(glval<char>) = VariableAddress[local_char] : -# 1896| r1896_5(char) = Load[local_char] : &:r1896_4, m1895_4 -# 1896| r1896_6(int) = Convert : r1896_5 -# 1896| r1896_7(int) = Add : r1896_3, r1896_6 -# 1896| m1896_8(int) = Store[#return] : &:r1896_1, r1896_7 -# 1893| r1893_5(glval<int>) = VariableAddress[#return] : -# 1893| v1893_6(void) = ReturnValue : &:r1893_5, m1896_8 -# 1893| v1893_7(void) = AliasedUse : m1893_3 -# 1893| v1893_8(void) = ExitFunction : - -# 1901| int noreturnTest(int) -# 1901| Block 0 -# 1901| v1901_1(void) = EnterFunction : -# 1901| m1901_2(unknown) = AliasedDefinition : -# 1901| m1901_3(unknown) = InitializeNonLocal : -# 1901| m1901_4(unknown) = Chi : total:m1901_2, partial:m1901_3 -# 1901| r1901_5(glval<int>) = VariableAddress[x] : -# 1901| m1901_6(int) = InitializeParameter[x] : &:r1901_5 -# 1902| r1902_1(glval<int>) = VariableAddress[x] : -# 1902| r1902_2(int) = Load[x] : &:r1902_1, m1901_6 -# 1902| r1902_3(int) = Constant[10] : -# 1902| r1902_4(bool) = CompareLT : r1902_2, r1902_3 -# 1902| v1902_5(void) = ConditionalBranch : r1902_4 +# 1888| r1888_20(glval<B &>) = VariableAddress[#return] : +# 1888| v1888_21(void) = ReturnValue : &:r1888_20, m0_21 +# 1888| v1888_22(void) = AliasedUse : ~m1888_18 +# 1888| v1888_23(void) = ExitFunction : + +# 1892| void block_assignment::foo() +# 1892| Block 0 +# 1892| v1892_1(void) = EnterFunction : +# 1892| m1892_2(unknown) = AliasedDefinition : +# 1892| m1892_3(unknown) = InitializeNonLocal : +# 1892| m1892_4(unknown) = Chi : total:m1892_2, partial:m1892_3 +# 1893| r1893_1(glval<B>) = VariableAddress[v] : +# 1893| m1893_2(B) = Uninitialized[v] : &:r1893_1 +# 1893| r1893_3(glval<unknown>) = FunctionAddress[B] : +# 1893| r1893_4(A *) = Constant[0] : +# 1893| v1893_5(void) = Call[B] : func:r1893_3, this:r1893_1, 0:r1893_4 +# 1893| m1893_6(unknown) = ^CallSideEffect : ~m1892_4 +# 1893| m1893_7(unknown) = Chi : total:m1892_4, partial:m1893_6 +# 1893| v1893_8(void) = ^BufferReadSideEffect[0] : &:r1893_4, ~m1893_7 +# 1893| m1893_9(B) = ^IndirectMayWriteSideEffect[-1] : &:r1893_1 +# 1893| m1893_10(B) = Chi : total:m1893_2, partial:m1893_9 +# 1893| m1893_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1893_4 +# 1893| m1893_12(unknown) = Chi : total:m1893_7, partial:m1893_11 +# 1894| r1894_1(glval<B>) = VariableAddress[v] : +# 1894| r1894_2(glval<unknown>) = FunctionAddress[operator=] : +# 1894| r1894_3(glval<B>) = VariableAddress[#temp1894:13] : +# 1894| m1894_4(B) = Uninitialized[#temp1894:13] : &:r1894_3 +# 1894| r1894_5(glval<unknown>) = FunctionAddress[B] : +# 1894| r1894_6(A *) = Constant[0] : +# 1894| v1894_7(void) = Call[B] : func:r1894_5, this:r1894_3, 0:r1894_6 +# 1894| m1894_8(unknown) = ^CallSideEffect : ~m1893_12 +# 1894| m1894_9(unknown) = Chi : total:m1893_12, partial:m1894_8 +# 1894| v1894_10(void) = ^BufferReadSideEffect[0] : &:r1894_6, ~m1894_9 +# 1894| m1894_11(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_3 +# 1894| m1894_12(B) = Chi : total:m1894_4, partial:m1894_11 +# 1894| m1894_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_6 +# 1894| m1894_14(unknown) = Chi : total:m1894_9, partial:m1894_13 +# 1894| r1894_15(B &) = CopyValue : r1894_3 +# 1894| r1894_16(B &) = Call[operator=] : func:r1894_2, this:r1894_1, 0:r1894_15 +# 1894| m1894_17(unknown) = ^CallSideEffect : ~m1894_14 +# 1894| m1894_18(unknown) = Chi : total:m1894_14, partial:m1894_17 +# 1894| v1894_19(void) = ^IndirectReadSideEffect[-1] : &:r1894_1, m1893_10 +# 1894| v1894_20(void) = ^BufferReadSideEffect[0] : &:r1894_15, ~m1894_12 +# 1894| m1894_21(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_1 +# 1894| m1894_22(B) = Chi : total:m1893_10, partial:m1894_21 +# 1894| m1894_23(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_15 +# 1894| m1894_24(B) = Chi : total:m1894_12, partial:m1894_23 +# 1894| r1894_25(glval<B>) = CopyValue : r1894_16 +# 1895| v1895_1(void) = NoOp : +# 1892| v1892_5(void) = ReturnVoid : +# 1892| v1892_6(void) = AliasedUse : ~m1894_18 +# 1892| v1892_7(void) = ExitFunction : + +# 1898| void magicvars() +# 1898| Block 0 +# 1898| v1898_1(void) = EnterFunction : +# 1898| m1898_2(unknown) = AliasedDefinition : +# 1898| m1898_3(unknown) = InitializeNonLocal : +# 1898| m1898_4(unknown) = Chi : total:m1898_2, partial:m1898_3 +# 1899| r1899_1(glval<char *>) = VariableAddress[pf] : +# 1899| r1899_2(glval<char[17]>) = VariableAddress[__PRETTY_FUNCTION__] : +# 1899| r1899_3(char *) = Convert : r1899_2 +# 1899| m1899_4(char *) = Store[pf] : &:r1899_1, r1899_3 +# 1900| r1900_1(glval<char *>) = VariableAddress[strfunc] : +# 1900| r1900_2(glval<char[10]>) = VariableAddress[__func__] : +# 1900| r1900_3(char *) = Convert : r1900_2 +# 1900| m1900_4(char *) = Store[strfunc] : &:r1900_1, r1900_3 +# 1901| v1901_1(void) = NoOp : +# 1898| v1898_5(void) = ReturnVoid : +# 1898| v1898_6(void) = AliasedUse : m1898_3 +# 1898| v1898_7(void) = ExitFunction : + +# 1911| void* missing_declaration_entries::Bar1<int>::missing_type_decl_entry(missing_declaration_entries::Bar1<int>::pointer) +# 1911| Block 0 +# 1911| v1911_1(void) = EnterFunction : +# 1911| m1911_2(unknown) = AliasedDefinition : +# 1911| m1911_3(unknown) = InitializeNonLocal : +# 1911| m1911_4(unknown) = Chi : total:m1911_2, partial:m1911_3 +# 1911| r1911_5(glval<unknown>) = VariableAddress[#this] : +# 1911| m1911_6(glval<Bar1<int>>) = InitializeParameter[#this] : &:r1911_5 +# 1911| r1911_7(glval<Bar1<int>>) = Load[#this] : &:r1911_5, m1911_6 +# 1911| m1911_8(Bar1<int>) = InitializeIndirection[#this] : &:r1911_7 +# 1911| r1911_9(glval<S *>) = VariableAddress[p] : +# 1911| m1911_10(S *) = InitializeParameter[p] : &:r1911_9 +# 1911| r1911_11(S *) = Load[p] : &:r1911_9, m1911_10 +# 1911| m1911_12(unknown) = InitializeIndirection[p] : &:r1911_11 +# 1913| r1913_1(glval<void *>) = VariableAddress[#return] : +# 1913| r1913_2(glval<S *>) = VariableAddress[p] : +# 1913| r1913_3(S *) = Load[p] : &:r1913_2, m1911_10 +# 1913| r1913_4(void *) = Convert : r1913_3 +# 1913| m1913_5(void *) = Store[#return] : &:r1913_1, r1913_4 +# 1911| v1911_13(void) = ReturnIndirection[#this] : &:r1911_7, m1911_8 +# 1911| v1911_14(void) = ReturnIndirection[p] : &:r1911_11, m1911_12 +# 1911| r1911_15(glval<void *>) = VariableAddress[#return] : +# 1911| v1911_16(void) = ReturnValue : &:r1911_15, m1913_5 +# 1911| v1911_17(void) = AliasedUse : m1911_3 +# 1911| v1911_18(void) = ExitFunction : + +# 1917| void missing_declaration_entries::test1() +# 1917| Block 0 +# 1917| v1917_1(void) = EnterFunction : +# 1917| m1917_2(unknown) = AliasedDefinition : +# 1917| m1917_3(unknown) = InitializeNonLocal : +# 1917| m1917_4(unknown) = Chi : total:m1917_2, partial:m1917_3 +# 1918| r1918_1(glval<Bar1<int>>) = VariableAddress[b] : +# 1918| m1918_2(Bar1<int>) = Uninitialized[b] : &:r1918_1 +# 1919| r1919_1(glval<Bar1<int>>) = VariableAddress[b] : +# 1919| r1919_2(glval<unknown>) = FunctionAddress[missing_type_decl_entry] : +# 1919| r1919_3(S *) = Constant[0] : +# 1919| r1919_4(void *) = Call[missing_type_decl_entry] : func:r1919_2, this:r1919_1, 0:r1919_3 +# 1919| m1919_5(unknown) = ^CallSideEffect : ~m1917_4 +# 1919| m1919_6(unknown) = Chi : total:m1917_4, partial:m1919_5 +# 1919| v1919_7(void) = ^IndirectReadSideEffect[-1] : &:r1919_1, m1918_2 +# 1919| v1919_8(void) = ^BufferReadSideEffect[0] : &:r1919_3, ~m1919_6 +# 1919| m1919_9(Bar1<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 +# 1919| m1919_10(Bar1<int>) = Chi : total:m1918_2, partial:m1919_9 +# 1919| m1919_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1919_3 +# 1919| m1919_12(unknown) = Chi : total:m1919_6, partial:m1919_11 +# 1920| v1920_1(void) = NoOp : +# 1917| v1917_5(void) = ReturnVoid : +# 1917| v1917_6(void) = AliasedUse : ~m1919_12 +# 1917| v1917_7(void) = ExitFunction : + +# 1924| int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() +# 1924| Block 0 +# 1924| v1924_1(void) = EnterFunction : +# 1924| m1924_2(unknown) = AliasedDefinition : +# 1924| m1924_3(unknown) = InitializeNonLocal : +# 1924| m1924_4(unknown) = Chi : total:m1924_2, partial:m1924_3 +# 1924| r1924_5(glval<unknown>) = VariableAddress[#this] : +# 1924| m1924_6(glval<Bar2<int>>) = InitializeParameter[#this] : &:r1924_5 +# 1924| r1924_7(glval<Bar2<int>>) = Load[#this] : &:r1924_5, m1924_6 +# 1924| m1924_8(Bar2<int>) = InitializeIndirection[#this] : &:r1924_7 +# 1925| r1925_1(glval<int[10]>) = VariableAddress[x] : +# 1925| m1925_2(int[10]) = Uninitialized[x] : &:r1925_1 +# 1925| r1925_3(glval<int[10]>) = VariableAddress[y] : +# 1925| m1925_4(int[10]) = Uninitialized[y] : &:r1925_3 +# 1926| r1926_1(int) = Constant[10] : +# 1926| r1926_2(glval<int[10]>) = VariableAddress[x] : +# 1926| r1926_3(int *) = Convert : r1926_2 +# 1926| r1926_4(glval<int>) = CopyValue : r1926_3 +# 1926| m1926_5(int) = Store[?] : &:r1926_4, r1926_1 +# 1926| m1926_6(int[10]) = Chi : total:m1925_2, partial:m1926_5 +# 1927| r1927_1(int) = Constant[10] : +# 1927| r1927_2(glval<int[10]>) = VariableAddress[y] : +# 1927| r1927_3(int *) = Convert : r1927_2 +# 1927| r1927_4(glval<int>) = CopyValue : r1927_3 +# 1927| m1927_5(int) = Store[?] : &:r1927_4, r1927_1 +# 1927| m1927_6(int[10]) = Chi : total:m1925_4, partial:m1927_5 +# 1928| r1928_1(glval<int>) = VariableAddress[#return] : +# 1928| r1928_2(glval<int[10]>) = VariableAddress[x] : +# 1928| r1928_3(int *) = Convert : r1928_2 +# 1928| r1928_4(int) = Load[?] : &:r1928_3, m1926_5 +# 1928| r1928_5(glval<int[10]>) = VariableAddress[y] : +# 1928| r1928_6(int *) = Convert : r1928_5 +# 1928| r1928_7(int) = Load[?] : &:r1928_6, m1927_5 +# 1928| r1928_8(int) = Add : r1928_4, r1928_7 +# 1928| m1928_9(int) = Store[#return] : &:r1928_1, r1928_8 +# 1924| v1924_9(void) = ReturnIndirection[#this] : &:r1924_7, m1924_8 +# 1924| r1924_10(glval<int>) = VariableAddress[#return] : +# 1924| v1924_11(void) = ReturnValue : &:r1924_10, m1928_9 +# 1924| v1924_12(void) = AliasedUse : m1924_3 +# 1924| v1924_13(void) = ExitFunction : + +# 1932| void missing_declaration_entries::test2() +# 1932| Block 0 +# 1932| v1932_1(void) = EnterFunction : +# 1932| m1932_2(unknown) = AliasedDefinition : +# 1932| m1932_3(unknown) = InitializeNonLocal : +# 1932| m1932_4(unknown) = Chi : total:m1932_2, partial:m1932_3 +# 1933| r1933_1(glval<Bar2<int>>) = VariableAddress[b] : +# 1933| m1933_2(Bar2<int>) = Uninitialized[b] : &:r1933_1 +# 1934| r1934_1(glval<Bar2<int>>) = VariableAddress[b] : +# 1934| r1934_2(glval<unknown>) = FunctionAddress[two_missing_variable_declaration_entries] : +# 1934| r1934_3(int) = Call[two_missing_variable_declaration_entries] : func:r1934_2, this:r1934_1 +# 1934| m1934_4(unknown) = ^CallSideEffect : ~m1932_4 +# 1934| m1934_5(unknown) = Chi : total:m1932_4, partial:m1934_4 +# 1934| v1934_6(void) = ^IndirectReadSideEffect[-1] : &:r1934_1, m1933_2 +# 1934| m1934_7(Bar2<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1934_1 +# 1934| m1934_8(Bar2<int>) = Chi : total:m1933_2, partial:m1934_7 +# 1935| v1935_1(void) = NoOp : +# 1932| v1932_5(void) = ReturnVoid : +# 1932| v1932_6(void) = AliasedUse : ~m1934_5 +# 1932| v1932_7(void) = ExitFunction : + +# 1938| char global_template<char> +# 1938| Block 0 +# 1938| v1938_1(void) = EnterFunction : +# 1938| m1938_2(unknown) = AliasedDefinition : +# 1938| r1938_3(glval<char>) = VariableAddress[global_template] : +# 1938| r1938_4(char) = Constant[42] : +# 1938| m1938_5(char) = Store[global_template] : &:r1938_3, r1938_4 +# 1938| m1938_6(unknown) = Chi : total:m1938_2, partial:m1938_5 +# 1938| v1938_7(void) = ReturnVoid : +# 1938| v1938_8(void) = AliasedUse : ~m1938_6 +# 1938| v1938_9(void) = ExitFunction : + +# 1938| int global_template<int> +# 1938| Block 0 +# 1938| v1938_1(void) = EnterFunction : +# 1938| m1938_2(unknown) = AliasedDefinition : +# 1938| r1938_3(glval<int>) = VariableAddress[global_template] : +# 1938| r1938_4(int) = Constant[42] : +# 1938| m1938_5(int) = Store[global_template] : &:r1938_3, r1938_4 +# 1938| m1938_6(unknown) = Chi : total:m1938_2, partial:m1938_5 +# 1938| v1938_7(void) = ReturnVoid : +# 1938| v1938_8(void) = AliasedUse : ~m1938_6 +# 1938| v1938_9(void) = ExitFunction : + +# 1940| int test_global_template_int() +# 1940| Block 0 +# 1940| v1940_1(void) = EnterFunction : +# 1940| m1940_2(unknown) = AliasedDefinition : +# 1940| m1940_3(unknown) = InitializeNonLocal : +# 1940| m1940_4(unknown) = Chi : total:m1940_2, partial:m1940_3 +# 1941| r1941_1(glval<int>) = VariableAddress[local_int] : +# 1941| r1941_2(glval<int>) = VariableAddress[global_template] : +# 1941| r1941_3(int) = Load[global_template] : &:r1941_2, ~m1940_3 +# 1941| m1941_4(int) = Store[local_int] : &:r1941_1, r1941_3 +# 1942| r1942_1(glval<char>) = VariableAddress[local_char] : +# 1942| r1942_2(glval<char>) = VariableAddress[global_template] : +# 1942| r1942_3(char) = Load[global_template] : &:r1942_2, ~m1940_3 +# 1942| m1942_4(char) = Store[local_char] : &:r1942_1, r1942_3 +# 1943| r1943_1(glval<int>) = VariableAddress[#return] : +# 1943| r1943_2(glval<int>) = VariableAddress[local_int] : +# 1943| r1943_3(int) = Load[local_int] : &:r1943_2, m1941_4 +# 1943| r1943_4(glval<char>) = VariableAddress[local_char] : +# 1943| r1943_5(char) = Load[local_char] : &:r1943_4, m1942_4 +# 1943| r1943_6(int) = Convert : r1943_5 +# 1943| r1943_7(int) = Add : r1943_3, r1943_6 +# 1943| m1943_8(int) = Store[#return] : &:r1943_1, r1943_7 +# 1940| r1940_5(glval<int>) = VariableAddress[#return] : +# 1940| v1940_6(void) = ReturnValue : &:r1940_5, m1943_8 +# 1940| v1940_7(void) = AliasedUse : m1940_3 +# 1940| v1940_8(void) = ExitFunction : + +# 1948| int noreturnTest(int) +# 1948| Block 0 +# 1948| v1948_1(void) = EnterFunction : +# 1948| m1948_2(unknown) = AliasedDefinition : +# 1948| m1948_3(unknown) = InitializeNonLocal : +# 1948| m1948_4(unknown) = Chi : total:m1948_2, partial:m1948_3 +# 1948| r1948_5(glval<int>) = VariableAddress[x] : +# 1948| m1948_6(int) = InitializeParameter[x] : &:r1948_5 +# 1949| r1949_1(glval<int>) = VariableAddress[x] : +# 1949| r1949_2(int) = Load[x] : &:r1949_1, m1948_6 +# 1949| r1949_3(int) = Constant[10] : +# 1949| r1949_4(bool) = CompareLT : r1949_2, r1949_3 +# 1949| v1949_5(void) = ConditionalBranch : r1949_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1903| Block 1 -# 1903| r1903_1(glval<int>) = VariableAddress[#return] : -# 1903| r1903_2(glval<int>) = VariableAddress[x] : -# 1903| r1903_3(int) = Load[x] : &:r1903_2, m1901_6 -# 1903| m1903_4(int) = Store[#return] : &:r1903_1, r1903_3 -# 1901| r1901_7(glval<int>) = VariableAddress[#return] : -# 1901| v1901_8(void) = ReturnValue : &:r1901_7, m1903_4 -# 1901| v1901_9(void) = AliasedUse : m1901_3 -# 1901| v1901_10(void) = ExitFunction : - -# 1905| Block 2 -# 1905| r1905_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1905| v1905_2(void) = Call[noreturnFunc] : func:r1905_1 -# 1905| m1905_3(unknown) = ^CallSideEffect : ~m1901_4 -# 1905| m1905_4(unknown) = Chi : total:m1901_4, partial:m1905_3 -# 1901| v1901_11(void) = Unreached : - -# 1909| int noreturnTest2(int) -# 1909| Block 0 -# 1909| v1909_1(void) = EnterFunction : -# 1909| m1909_2(unknown) = AliasedDefinition : -# 1909| m1909_3(unknown) = InitializeNonLocal : -# 1909| m1909_4(unknown) = Chi : total:m1909_2, partial:m1909_3 -# 1909| r1909_5(glval<int>) = VariableAddress[x] : -# 1909| m1909_6(int) = InitializeParameter[x] : &:r1909_5 -# 1910| r1910_1(glval<int>) = VariableAddress[x] : -# 1910| r1910_2(int) = Load[x] : &:r1910_1, m1909_6 -# 1910| r1910_3(int) = Constant[10] : -# 1910| r1910_4(bool) = CompareLT : r1910_2, r1910_3 -# 1910| v1910_5(void) = ConditionalBranch : r1910_4 +# 1950| Block 1 +# 1950| r1950_1(glval<int>) = VariableAddress[#return] : +# 1950| r1950_2(glval<int>) = VariableAddress[x] : +# 1950| r1950_3(int) = Load[x] : &:r1950_2, m1948_6 +# 1950| m1950_4(int) = Store[#return] : &:r1950_1, r1950_3 +# 1948| r1948_7(glval<int>) = VariableAddress[#return] : +# 1948| v1948_8(void) = ReturnValue : &:r1948_7, m1950_4 +# 1948| v1948_9(void) = AliasedUse : m1948_3 +# 1948| v1948_10(void) = ExitFunction : + +# 1952| Block 2 +# 1952| r1952_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1952| v1952_2(void) = Call[noreturnFunc] : func:r1952_1 +# 1952| m1952_3(unknown) = ^CallSideEffect : ~m1948_4 +# 1952| m1952_4(unknown) = Chi : total:m1948_4, partial:m1952_3 +# 1948| v1948_11(void) = Unreached : + +# 1956| int noreturnTest2(int) +# 1956| Block 0 +# 1956| v1956_1(void) = EnterFunction : +# 1956| m1956_2(unknown) = AliasedDefinition : +# 1956| m1956_3(unknown) = InitializeNonLocal : +# 1956| m1956_4(unknown) = Chi : total:m1956_2, partial:m1956_3 +# 1956| r1956_5(glval<int>) = VariableAddress[x] : +# 1956| m1956_6(int) = InitializeParameter[x] : &:r1956_5 +# 1957| r1957_1(glval<int>) = VariableAddress[x] : +# 1957| r1957_2(int) = Load[x] : &:r1957_1, m1956_6 +# 1957| r1957_3(int) = Constant[10] : +# 1957| r1957_4(bool) = CompareLT : r1957_2, r1957_3 +# 1957| v1957_5(void) = ConditionalBranch : r1957_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1911| Block 1 -# 1911| r1911_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1911| v1911_2(void) = Call[noreturnFunc] : func:r1911_1 -# 1911| m1911_3(unknown) = ^CallSideEffect : ~m1909_4 -# 1911| m1911_4(unknown) = Chi : total:m1909_4, partial:m1911_3 -# 1909| v1909_7(void) = Unreached : - -# 1913| Block 2 -# 1913| r1913_1(glval<int>) = VariableAddress[#return] : -# 1913| r1913_2(glval<int>) = VariableAddress[x] : -# 1913| r1913_3(int) = Load[x] : &:r1913_2, m1909_6 -# 1913| m1913_4(int) = Store[#return] : &:r1913_1, r1913_3 -# 1909| r1909_8(glval<int>) = VariableAddress[#return] : -# 1909| v1909_9(void) = ReturnValue : &:r1909_8, m1913_4 -# 1909| v1909_10(void) = AliasedUse : m1909_3 -# 1909| v1909_11(void) = ExitFunction : - -# 1916| int static_function(int) -# 1916| Block 0 -# 1916| v1916_1(void) = EnterFunction : -# 1916| m1916_2(unknown) = AliasedDefinition : -# 1916| m1916_3(unknown) = InitializeNonLocal : -# 1916| m1916_4(unknown) = Chi : total:m1916_2, partial:m1916_3 -# 1916| r1916_5(glval<int>) = VariableAddress[x] : -# 1916| m1916_6(int) = InitializeParameter[x] : &:r1916_5 -# 1917| r1917_1(glval<int>) = VariableAddress[#return] : -# 1917| r1917_2(glval<int>) = VariableAddress[x] : -# 1917| r1917_3(int) = Load[x] : &:r1917_2, m1916_6 -# 1917| m1917_4(int) = Store[#return] : &:r1917_1, r1917_3 -# 1916| r1916_7(glval<int>) = VariableAddress[#return] : -# 1916| v1916_8(void) = ReturnValue : &:r1916_7, m1917_4 -# 1916| v1916_9(void) = AliasedUse : m1916_3 -# 1916| v1916_10(void) = ExitFunction : - -# 1920| void test_static_functions_with_assignments() -# 1920| Block 0 -# 1920| v1920_1(void) = EnterFunction : -# 1920| m1920_2(unknown) = AliasedDefinition : -# 1920| m1920_3(unknown) = InitializeNonLocal : -# 1920| m1920_4(unknown) = Chi : total:m1920_2, partial:m1920_3 -# 1921| r1921_1(glval<C>) = VariableAddress[c] : -# 1921| m1921_2(C) = Uninitialized[c] : &:r1921_1 -# 1921| r1921_3(glval<unknown>) = FunctionAddress[C] : -# 1921| v1921_4(void) = Call[C] : func:r1921_3, this:r1921_1 -# 1921| m1921_5(unknown) = ^CallSideEffect : ~m1920_4 -# 1921| m1921_6(unknown) = Chi : total:m1920_4, partial:m1921_5 -# 1921| m1921_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 -# 1921| m1921_8(C) = Chi : total:m1921_2, partial:m1921_7 -# 1922| r1922_1(glval<int>) = VariableAddress[x] : -# 1922| m1922_2(int) = Uninitialized[x] : &:r1922_1 -# 1923| r1923_1(glval<C>) = VariableAddress[c] : -# 1923| r1923_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1923| r1923_3(int) = Constant[10] : -# 1923| r1923_4(int) = Call[StaticMemberFunction] : func:r1923_2, 0:r1923_3 -# 1923| m1923_5(unknown) = ^CallSideEffect : ~m1921_6 -# 1923| m1923_6(unknown) = Chi : total:m1921_6, partial:m1923_5 -# 1923| r1923_7(glval<int>) = VariableAddress[x] : -# 1923| m1923_8(int) = Store[x] : &:r1923_7, r1923_4 -# 1924| r1924_1(glval<int>) = VariableAddress[y] : -# 1924| m1924_2(int) = Uninitialized[y] : &:r1924_1 -# 1925| r1925_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1925| r1925_2(int) = Constant[10] : -# 1925| r1925_3(int) = Call[StaticMemberFunction] : func:r1925_1, 0:r1925_2 -# 1925| m1925_4(unknown) = ^CallSideEffect : ~m1923_6 -# 1925| m1925_5(unknown) = Chi : total:m1923_6, partial:m1925_4 -# 1925| r1925_6(glval<int>) = VariableAddress[y] : -# 1925| m1925_7(int) = Store[y] : &:r1925_6, r1925_3 -# 1926| r1926_1(glval<int>) = VariableAddress[z] : -# 1926| m1926_2(int) = Uninitialized[z] : &:r1926_1 -# 1927| r1927_1(glval<unknown>) = FunctionAddress[static_function] : -# 1927| r1927_2(int) = Constant[10] : -# 1927| r1927_3(int) = Call[static_function] : func:r1927_1, 0:r1927_2 -# 1927| m1927_4(unknown) = ^CallSideEffect : ~m1925_5 -# 1927| m1927_5(unknown) = Chi : total:m1925_5, partial:m1927_4 -# 1927| r1927_6(glval<int>) = VariableAddress[z] : -# 1927| m1927_7(int) = Store[z] : &:r1927_6, r1927_3 -# 1928| v1928_1(void) = NoOp : -# 1928| r1928_2(glval<C>) = VariableAddress[c] : -# 1928| r1928_3(glval<unknown>) = FunctionAddress[~C] : -# 1928| v1928_4(void) = Call[~C] : func:r1928_3, this:r1928_2 -# 1928| m1928_5(unknown) = ^CallSideEffect : ~m1927_5 -# 1928| m1928_6(unknown) = Chi : total:m1927_5, partial:m1928_5 -# 1928| v1928_7(void) = ^IndirectReadSideEffect[-1] : &:r1928_2, m1921_8 -# 1928| m1928_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1928_2 -# 1928| m1928_9(C) = Chi : total:m1921_8, partial:m1928_8 -# 1920| v1920_5(void) = ReturnVoid : -# 1920| v1920_6(void) = AliasedUse : ~m1928_6 -# 1920| v1920_7(void) = ExitFunction : - -# 1930| void test_double_assign() -# 1930| Block 0 -# 1930| v1930_1(void) = EnterFunction : -# 1930| m1930_2(unknown) = AliasedDefinition : -# 1930| m1930_3(unknown) = InitializeNonLocal : -# 1930| m1930_4(unknown) = Chi : total:m1930_2, partial:m1930_3 -# 1931| r1931_1(glval<int>) = VariableAddress[i] : -# 1931| m1931_2(int) = Uninitialized[i] : &:r1931_1 -# 1931| r1931_3(glval<int>) = VariableAddress[j] : -# 1931| m1931_4(int) = Uninitialized[j] : &:r1931_3 -# 1932| r1932_1(int) = Constant[40] : -# 1932| r1932_2(glval<int>) = VariableAddress[j] : -# 1932| m1932_3(int) = Store[j] : &:r1932_2, r1932_1 -# 1932| r1932_4(int) = Load[j] : &:r1932_2, m1932_3 -# 1932| r1932_5(glval<int>) = VariableAddress[i] : -# 1932| m1932_6(int) = Store[i] : &:r1932_5, r1932_4 -# 1933| v1933_1(void) = NoOp : -# 1930| v1930_5(void) = ReturnVoid : -# 1930| v1930_6(void) = AliasedUse : m1930_3 -# 1930| v1930_7(void) = ExitFunction : - -# 1935| void test_assign_with_assign_operation() -# 1935| Block 0 -# 1935| v1935_1(void) = EnterFunction : -# 1935| m1935_2(unknown) = AliasedDefinition : -# 1935| m1935_3(unknown) = InitializeNonLocal : -# 1935| m1935_4(unknown) = Chi : total:m1935_2, partial:m1935_3 -# 1936| r1936_1(glval<int>) = VariableAddress[i] : -# 1936| m1936_2(int) = Uninitialized[i] : &:r1936_1 -# 1936| r1936_3(glval<int>) = VariableAddress[j] : -# 1936| r1936_4(int) = Constant[0] : -# 1936| m1936_5(int) = Store[j] : &:r1936_3, r1936_4 -# 1937| r1937_1(int) = Constant[40] : -# 1937| r1937_2(glval<int>) = VariableAddress[j] : -# 1937| r1937_3(int) = Load[j] : &:r1937_2, m1936_5 -# 1937| r1937_4(int) = Add : r1937_3, r1937_1 -# 1937| m1937_5(int) = Store[j] : &:r1937_2, r1937_4 -# 1937| r1937_6(int) = Load[j] : &:r1937_2, m1937_5 -# 1937| r1937_7(glval<int>) = VariableAddress[i] : -# 1937| m1937_8(int) = Store[i] : &:r1937_7, r1937_6 -# 1938| v1938_1(void) = NoOp : -# 1935| v1935_5(void) = ReturnVoid : -# 1935| v1935_6(void) = AliasedUse : m1935_3 -# 1935| v1935_7(void) = ExitFunction : - -# 1944| D& D::ReferenceStaticMemberFunction() -# 1944| Block 0 -# 1944| v1944_1(void) = EnterFunction : -# 1944| m1944_2(unknown) = AliasedDefinition : -# 1944| m1944_3(unknown) = InitializeNonLocal : -# 1944| m1944_4(unknown) = Chi : total:m1944_2, partial:m1944_3 -# 1945| r1945_1(glval<D &>) = VariableAddress[#return] : -# 1945| r1945_2(glval<D>) = VariableAddress[x] : -# 1945| r1945_3(D &) = CopyValue : r1945_2 -# 1945| m1945_4(D &) = Store[#return] : &:r1945_1, r1945_3 -# 1944| r1944_5(glval<D &>) = VariableAddress[#return] : -# 1944| v1944_6(void) = ReturnValue : &:r1944_5, m1945_4 -# 1944| v1944_7(void) = AliasedUse : m1944_3 -# 1944| v1944_8(void) = ExitFunction : - -# 1947| D D::ObjectStaticMemberFunction() -# 1947| Block 0 -# 1947| v1947_1(void) = EnterFunction : -# 1947| m1947_2(unknown) = AliasedDefinition : -# 1947| m1947_3(unknown) = InitializeNonLocal : -# 1947| m1947_4(unknown) = Chi : total:m1947_2, partial:m1947_3 -# 1948| r1948_1(glval<D>) = VariableAddress[#return] : -# 1948| r1948_2(glval<D>) = VariableAddress[x] : -# 1948| r1948_3(D) = Load[x] : &:r1948_2, ~m1947_3 -# 1948| m1948_4(D) = Store[#return] : &:r1948_1, r1948_3 -# 1947| r1947_5(glval<D>) = VariableAddress[#return] : -# 1947| v1947_6(void) = ReturnValue : &:r1947_5, m1948_4 -# 1947| v1947_7(void) = AliasedUse : m1947_3 -# 1947| v1947_8(void) = ExitFunction : - -# 1952| void test_static_member_functions_with_reference_return() -# 1952| Block 0 -# 1952| v1952_1(void) = EnterFunction : -# 1952| m1952_2(unknown) = AliasedDefinition : -# 1952| m1952_3(unknown) = InitializeNonLocal : -# 1952| m1952_4(unknown) = Chi : total:m1952_2, partial:m1952_3 -# 1953| r1953_1(glval<D>) = VariableAddress[d] : -# 1953| m1953_2(D) = Uninitialized[d] : &:r1953_1 -# 1955| r1955_1(glval<D>) = VariableAddress[d] : -# 1955| r1955_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1955| r1955_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1955_2 -# 1955| m1955_4(unknown) = ^CallSideEffect : ~m1952_4 -# 1955| m1955_5(unknown) = Chi : total:m1952_4, partial:m1955_4 -# 1955| r1955_6(glval<D>) = CopyValue : r1955_3 -# 1956| r1956_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1956| r1956_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1956_1 -# 1956| m1956_3(unknown) = ^CallSideEffect : ~m1955_5 -# 1956| m1956_4(unknown) = Chi : total:m1955_5, partial:m1956_3 -# 1956| r1956_5(glval<D>) = CopyValue : r1956_2 -# 1957| r1957_1(glval<D>) = VariableAddress[d] : -# 1957| r1957_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1957| r1957_3(D) = Call[ObjectStaticMemberFunction] : func:r1957_2 -# 1957| m1957_4(unknown) = ^CallSideEffect : ~m1956_4 -# 1957| m1957_5(unknown) = Chi : total:m1956_4, partial:m1957_4 -# 1958| r1958_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1958| r1958_2(D) = Call[ObjectStaticMemberFunction] : func:r1958_1 -# 1958| m1958_3(unknown) = ^CallSideEffect : ~m1957_5 -# 1958| m1958_4(unknown) = Chi : total:m1957_5, partial:m1958_3 -# 1960| r1960_1(glval<D>) = VariableAddress[x] : -# 1960| m1960_2(D) = Uninitialized[x] : &:r1960_1 -# 1961| r1961_1(glval<D>) = VariableAddress[d] : -# 1961| r1961_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1961| r1961_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1961_2 -# 1961| m1961_4(unknown) = ^CallSideEffect : ~m1958_4 -# 1961| m1961_5(unknown) = Chi : total:m1958_4, partial:m1961_4 -# 1961| r1961_6(D) = Load[?] : &:r1961_3, ~m1961_5 -# 1961| r1961_7(glval<D>) = VariableAddress[x] : -# 1961| m1961_8(D) = Store[x] : &:r1961_7, r1961_6 -# 1962| r1962_1(glval<D>) = VariableAddress[y] : -# 1962| m1962_2(D) = Uninitialized[y] : &:r1962_1 -# 1963| r1963_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1963| r1963_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1963_1 -# 1963| m1963_3(unknown) = ^CallSideEffect : ~m1961_5 -# 1963| m1963_4(unknown) = Chi : total:m1961_5, partial:m1963_3 -# 1963| r1963_5(D) = Load[?] : &:r1963_2, ~m1963_4 -# 1963| r1963_6(glval<D>) = VariableAddress[y] : -# 1963| m1963_7(D) = Store[y] : &:r1963_6, r1963_5 -# 1964| r1964_1(glval<D>) = VariableAddress[j] : -# 1964| m1964_2(D) = Uninitialized[j] : &:r1964_1 -# 1965| r1965_1(glval<D>) = VariableAddress[d] : -# 1965| r1965_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1965| r1965_3(D) = Call[ObjectStaticMemberFunction] : func:r1965_2 -# 1965| m1965_4(unknown) = ^CallSideEffect : ~m1963_4 -# 1965| m1965_5(unknown) = Chi : total:m1963_4, partial:m1965_4 -# 1965| r1965_6(glval<D>) = VariableAddress[j] : -# 1965| m1965_7(D) = Store[j] : &:r1965_6, r1965_3 -# 1966| r1966_1(glval<D>) = VariableAddress[k] : -# 1966| m1966_2(D) = Uninitialized[k] : &:r1966_1 -# 1967| r1967_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1967| r1967_2(D) = Call[ObjectStaticMemberFunction] : func:r1967_1 -# 1967| m1967_3(unknown) = ^CallSideEffect : ~m1965_5 -# 1967| m1967_4(unknown) = Chi : total:m1965_5, partial:m1967_3 -# 1967| r1967_5(glval<D>) = VariableAddress[k] : -# 1967| m1967_6(D) = Store[k] : &:r1967_5, r1967_2 -# 1968| v1968_1(void) = NoOp : -# 1952| v1952_5(void) = ReturnVoid : -# 1952| v1952_6(void) = AliasedUse : ~m1967_4 -# 1952| v1952_7(void) = ExitFunction : - -# 1970| void test_volatile() -# 1970| Block 0 -# 1970| v1970_1(void) = EnterFunction : -# 1970| m1970_2(unknown) = AliasedDefinition : -# 1970| m1970_3(unknown) = InitializeNonLocal : -# 1970| m1970_4(unknown) = Chi : total:m1970_2, partial:m1970_3 -# 1971| r1971_1(glval<int>) = VariableAddress[x] : -# 1971| m1971_2(int) = Uninitialized[x] : &:r1971_1 -# 1972| r1972_1(glval<int>) = VariableAddress[x] : -# 1972| r1972_2(int) = Load[x] : &:r1972_1, m1971_2 -# 1973| v1973_1(void) = NoOp : -# 1970| v1970_5(void) = ReturnVoid : -# 1970| v1970_6(void) = AliasedUse : m1970_3 -# 1970| v1970_7(void) = ExitFunction : - -# 1981| void value_category_test() -# 1981| Block 0 -# 1981| v1981_1(void) = EnterFunction : -# 1981| m1981_2(unknown) = AliasedDefinition : -# 1981| m1981_3(unknown) = InitializeNonLocal : -# 1981| m1981_4(unknown) = Chi : total:m1981_2, partial:m1981_3 -# 1982| r1982_1(glval<ValCat>) = VariableAddress[c] : -# 1982| m1982_2(ValCat) = Uninitialized[c] : &:r1982_1 +# 1958| Block 1 +# 1958| r1958_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1958| v1958_2(void) = Call[noreturnFunc] : func:r1958_1 +# 1958| m1958_3(unknown) = ^CallSideEffect : ~m1956_4 +# 1958| m1958_4(unknown) = Chi : total:m1956_4, partial:m1958_3 +# 1956| v1956_7(void) = Unreached : + +# 1960| Block 2 +# 1960| r1960_1(glval<int>) = VariableAddress[#return] : +# 1960| r1960_2(glval<int>) = VariableAddress[x] : +# 1960| r1960_3(int) = Load[x] : &:r1960_2, m1956_6 +# 1960| m1960_4(int) = Store[#return] : &:r1960_1, r1960_3 +# 1956| r1956_8(glval<int>) = VariableAddress[#return] : +# 1956| v1956_9(void) = ReturnValue : &:r1956_8, m1960_4 +# 1956| v1956_10(void) = AliasedUse : m1956_3 +# 1956| v1956_11(void) = ExitFunction : + +# 1963| int static_function(int) +# 1963| Block 0 +# 1963| v1963_1(void) = EnterFunction : +# 1963| m1963_2(unknown) = AliasedDefinition : +# 1963| m1963_3(unknown) = InitializeNonLocal : +# 1963| m1963_4(unknown) = Chi : total:m1963_2, partial:m1963_3 +# 1963| r1963_5(glval<int>) = VariableAddress[x] : +# 1963| m1963_6(int) = InitializeParameter[x] : &:r1963_5 +# 1964| r1964_1(glval<int>) = VariableAddress[#return] : +# 1964| r1964_2(glval<int>) = VariableAddress[x] : +# 1964| r1964_3(int) = Load[x] : &:r1964_2, m1963_6 +# 1964| m1964_4(int) = Store[#return] : &:r1964_1, r1964_3 +# 1963| r1963_7(glval<int>) = VariableAddress[#return] : +# 1963| v1963_8(void) = ReturnValue : &:r1963_7, m1964_4 +# 1963| v1963_9(void) = AliasedUse : m1963_3 +# 1963| v1963_10(void) = ExitFunction : + +# 1967| void test_static_functions_with_assignments() +# 1967| Block 0 +# 1967| v1967_1(void) = EnterFunction : +# 1967| m1967_2(unknown) = AliasedDefinition : +# 1967| m1967_3(unknown) = InitializeNonLocal : +# 1967| m1967_4(unknown) = Chi : total:m1967_2, partial:m1967_3 +# 1968| r1968_1(glval<C>) = VariableAddress[c] : +# 1968| m1968_2(C) = Uninitialized[c] : &:r1968_1 +# 1968| r1968_3(glval<unknown>) = FunctionAddress[C] : +# 1968| v1968_4(void) = Call[C] : func:r1968_3, this:r1968_1 +# 1968| m1968_5(unknown) = ^CallSideEffect : ~m1967_4 +# 1968| m1968_6(unknown) = Chi : total:m1967_4, partial:m1968_5 +# 1968| m1968_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1968_1 +# 1968| m1968_8(C) = Chi : total:m1968_2, partial:m1968_7 +# 1969| r1969_1(glval<int>) = VariableAddress[x] : +# 1969| m1969_2(int) = Uninitialized[x] : &:r1969_1 +# 1970| r1970_1(glval<C>) = VariableAddress[c] : +# 1970| r1970_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1970| r1970_3(int) = Constant[10] : +# 1970| r1970_4(int) = Call[StaticMemberFunction] : func:r1970_2, 0:r1970_3 +# 1970| m1970_5(unknown) = ^CallSideEffect : ~m1968_6 +# 1970| m1970_6(unknown) = Chi : total:m1968_6, partial:m1970_5 +# 1970| r1970_7(glval<int>) = VariableAddress[x] : +# 1970| m1970_8(int) = Store[x] : &:r1970_7, r1970_4 +# 1971| r1971_1(glval<int>) = VariableAddress[y] : +# 1971| m1971_2(int) = Uninitialized[y] : &:r1971_1 +# 1972| r1972_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1972| r1972_2(int) = Constant[10] : +# 1972| r1972_3(int) = Call[StaticMemberFunction] : func:r1972_1, 0:r1972_2 +# 1972| m1972_4(unknown) = ^CallSideEffect : ~m1970_6 +# 1972| m1972_5(unknown) = Chi : total:m1970_6, partial:m1972_4 +# 1972| r1972_6(glval<int>) = VariableAddress[y] : +# 1972| m1972_7(int) = Store[y] : &:r1972_6, r1972_3 +# 1973| r1973_1(glval<int>) = VariableAddress[z] : +# 1973| m1973_2(int) = Uninitialized[z] : &:r1973_1 +# 1974| r1974_1(glval<unknown>) = FunctionAddress[static_function] : +# 1974| r1974_2(int) = Constant[10] : +# 1974| r1974_3(int) = Call[static_function] : func:r1974_1, 0:r1974_2 +# 1974| m1974_4(unknown) = ^CallSideEffect : ~m1972_5 +# 1974| m1974_5(unknown) = Chi : total:m1972_5, partial:m1974_4 +# 1974| r1974_6(glval<int>) = VariableAddress[z] : +# 1974| m1974_7(int) = Store[z] : &:r1974_6, r1974_3 +# 1975| v1975_1(void) = NoOp : +# 1975| r1975_2(glval<C>) = VariableAddress[c] : +# 1975| r1975_3(glval<unknown>) = FunctionAddress[~C] : +# 1975| v1975_4(void) = Call[~C] : func:r1975_3, this:r1975_2 +# 1975| m1975_5(unknown) = ^CallSideEffect : ~m1974_5 +# 1975| m1975_6(unknown) = Chi : total:m1974_5, partial:m1975_5 +# 1975| v1975_7(void) = ^IndirectReadSideEffect[-1] : &:r1975_2, m1968_8 +# 1975| m1975_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1975_2 +# 1975| m1975_9(C) = Chi : total:m1968_8, partial:m1975_8 +# 1967| v1967_5(void) = ReturnVoid : +# 1967| v1967_6(void) = AliasedUse : ~m1975_6 +# 1967| v1967_7(void) = ExitFunction : + +# 1977| void test_double_assign() +# 1977| Block 0 +# 1977| v1977_1(void) = EnterFunction : +# 1977| m1977_2(unknown) = AliasedDefinition : +# 1977| m1977_3(unknown) = InitializeNonLocal : +# 1977| m1977_4(unknown) = Chi : total:m1977_2, partial:m1977_3 +# 1978| r1978_1(glval<int>) = VariableAddress[i] : +# 1978| m1978_2(int) = Uninitialized[i] : &:r1978_1 +# 1978| r1978_3(glval<int>) = VariableAddress[j] : +# 1978| m1978_4(int) = Uninitialized[j] : &:r1978_3 +# 1979| r1979_1(int) = Constant[40] : +# 1979| r1979_2(glval<int>) = VariableAddress[j] : +# 1979| m1979_3(int) = Store[j] : &:r1979_2, r1979_1 +# 1979| r1979_4(int) = Load[j] : &:r1979_2, m1979_3 +# 1979| r1979_5(glval<int>) = VariableAddress[i] : +# 1979| m1979_6(int) = Store[i] : &:r1979_5, r1979_4 +# 1980| v1980_1(void) = NoOp : +# 1977| v1977_5(void) = ReturnVoid : +# 1977| v1977_6(void) = AliasedUse : m1977_3 +# 1977| v1977_7(void) = ExitFunction : + +# 1982| void test_assign_with_assign_operation() +# 1982| Block 0 +# 1982| v1982_1(void) = EnterFunction : +# 1982| m1982_2(unknown) = AliasedDefinition : +# 1982| m1982_3(unknown) = InitializeNonLocal : +# 1982| m1982_4(unknown) = Chi : total:m1982_2, partial:m1982_3 +# 1983| r1983_1(glval<int>) = VariableAddress[i] : +# 1983| m1983_2(int) = Uninitialized[i] : &:r1983_1 +# 1983| r1983_3(glval<int>) = VariableAddress[j] : +# 1983| r1983_4(int) = Constant[0] : +# 1983| m1983_5(int) = Store[j] : &:r1983_3, r1983_4 +# 1984| r1984_1(int) = Constant[40] : +# 1984| r1984_2(glval<int>) = VariableAddress[j] : +# 1984| r1984_3(int) = Load[j] : &:r1984_2, m1983_5 +# 1984| r1984_4(int) = Add : r1984_3, r1984_1 +# 1984| m1984_5(int) = Store[j] : &:r1984_2, r1984_4 +# 1984| r1984_6(int) = Load[j] : &:r1984_2, m1984_5 +# 1984| r1984_7(glval<int>) = VariableAddress[i] : +# 1984| m1984_8(int) = Store[i] : &:r1984_7, r1984_6 +# 1985| v1985_1(void) = NoOp : +# 1982| v1982_5(void) = ReturnVoid : +# 1982| v1982_6(void) = AliasedUse : m1982_3 +# 1982| v1982_7(void) = ExitFunction : + +# 1991| D& D::ReferenceStaticMemberFunction() +# 1991| Block 0 +# 1991| v1991_1(void) = EnterFunction : +# 1991| m1991_2(unknown) = AliasedDefinition : +# 1991| m1991_3(unknown) = InitializeNonLocal : +# 1991| m1991_4(unknown) = Chi : total:m1991_2, partial:m1991_3 +# 1992| r1992_1(glval<D &>) = VariableAddress[#return] : +# 1992| r1992_2(glval<D>) = VariableAddress[x] : +# 1992| r1992_3(D &) = CopyValue : r1992_2 +# 1992| m1992_4(D &) = Store[#return] : &:r1992_1, r1992_3 +# 1991| r1991_5(glval<D &>) = VariableAddress[#return] : +# 1991| v1991_6(void) = ReturnValue : &:r1991_5, m1992_4 +# 1991| v1991_7(void) = AliasedUse : m1991_3 +# 1991| v1991_8(void) = ExitFunction : + +# 1994| D D::ObjectStaticMemberFunction() +# 1994| Block 0 +# 1994| v1994_1(void) = EnterFunction : +# 1994| m1994_2(unknown) = AliasedDefinition : +# 1994| m1994_3(unknown) = InitializeNonLocal : +# 1994| m1994_4(unknown) = Chi : total:m1994_2, partial:m1994_3 +# 1995| r1995_1(glval<D>) = VariableAddress[#return] : +# 1995| r1995_2(glval<D>) = VariableAddress[x] : +# 1995| r1995_3(D) = Load[x] : &:r1995_2, ~m1994_3 +# 1995| m1995_4(D) = Store[#return] : &:r1995_1, r1995_3 +# 1994| r1994_5(glval<D>) = VariableAddress[#return] : +# 1994| v1994_6(void) = ReturnValue : &:r1994_5, m1995_4 +# 1994| v1994_7(void) = AliasedUse : m1994_3 +# 1994| v1994_8(void) = ExitFunction : + +# 1999| void test_static_member_functions_with_reference_return() +# 1999| Block 0 +# 1999| v1999_1(void) = EnterFunction : +# 1999| m1999_2(unknown) = AliasedDefinition : +# 1999| m1999_3(unknown) = InitializeNonLocal : +# 1999| m1999_4(unknown) = Chi : total:m1999_2, partial:m1999_3 +# 2000| r2000_1(glval<D>) = VariableAddress[d] : +# 2000| m2000_2(D) = Uninitialized[d] : &:r2000_1 +# 2002| r2002_1(glval<D>) = VariableAddress[d] : +# 2002| r2002_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2002| r2002_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2002_2 +# 2002| m2002_4(unknown) = ^CallSideEffect : ~m1999_4 +# 2002| m2002_5(unknown) = Chi : total:m1999_4, partial:m2002_4 +# 2002| r2002_6(glval<D>) = CopyValue : r2002_3 +# 2003| r2003_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2003| r2003_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2003_1 +# 2003| m2003_3(unknown) = ^CallSideEffect : ~m2002_5 +# 2003| m2003_4(unknown) = Chi : total:m2002_5, partial:m2003_3 +# 2003| r2003_5(glval<D>) = CopyValue : r2003_2 +# 2004| r2004_1(glval<D>) = VariableAddress[d] : +# 2004| r2004_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2004| r2004_3(D) = Call[ObjectStaticMemberFunction] : func:r2004_2 +# 2004| m2004_4(unknown) = ^CallSideEffect : ~m2003_4 +# 2004| m2004_5(unknown) = Chi : total:m2003_4, partial:m2004_4 +# 2005| r2005_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2005| r2005_2(D) = Call[ObjectStaticMemberFunction] : func:r2005_1 +# 2005| m2005_3(unknown) = ^CallSideEffect : ~m2004_5 +# 2005| m2005_4(unknown) = Chi : total:m2004_5, partial:m2005_3 +# 2007| r2007_1(glval<D>) = VariableAddress[x] : +# 2007| m2007_2(D) = Uninitialized[x] : &:r2007_1 +# 2008| r2008_1(glval<D>) = VariableAddress[d] : +# 2008| r2008_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2008| r2008_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2008_2 +# 2008| m2008_4(unknown) = ^CallSideEffect : ~m2005_4 +# 2008| m2008_5(unknown) = Chi : total:m2005_4, partial:m2008_4 +# 2008| r2008_6(D) = Load[?] : &:r2008_3, ~m2008_5 +# 2008| r2008_7(glval<D>) = VariableAddress[x] : +# 2008| m2008_8(D) = Store[x] : &:r2008_7, r2008_6 +# 2009| r2009_1(glval<D>) = VariableAddress[y] : +# 2009| m2009_2(D) = Uninitialized[y] : &:r2009_1 +# 2010| r2010_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2010| r2010_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2010_1 +# 2010| m2010_3(unknown) = ^CallSideEffect : ~m2008_5 +# 2010| m2010_4(unknown) = Chi : total:m2008_5, partial:m2010_3 +# 2010| r2010_5(D) = Load[?] : &:r2010_2, ~m2010_4 +# 2010| r2010_6(glval<D>) = VariableAddress[y] : +# 2010| m2010_7(D) = Store[y] : &:r2010_6, r2010_5 +# 2011| r2011_1(glval<D>) = VariableAddress[j] : +# 2011| m2011_2(D) = Uninitialized[j] : &:r2011_1 +# 2012| r2012_1(glval<D>) = VariableAddress[d] : +# 2012| r2012_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2012| r2012_3(D) = Call[ObjectStaticMemberFunction] : func:r2012_2 +# 2012| m2012_4(unknown) = ^CallSideEffect : ~m2010_4 +# 2012| m2012_5(unknown) = Chi : total:m2010_4, partial:m2012_4 +# 2012| r2012_6(glval<D>) = VariableAddress[j] : +# 2012| m2012_7(D) = Store[j] : &:r2012_6, r2012_3 +# 2013| r2013_1(glval<D>) = VariableAddress[k] : +# 2013| m2013_2(D) = Uninitialized[k] : &:r2013_1 +# 2014| r2014_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2014| r2014_2(D) = Call[ObjectStaticMemberFunction] : func:r2014_1 +# 2014| m2014_3(unknown) = ^CallSideEffect : ~m2012_5 +# 2014| m2014_4(unknown) = Chi : total:m2012_5, partial:m2014_3 +# 2014| r2014_5(glval<D>) = VariableAddress[k] : +# 2014| m2014_6(D) = Store[k] : &:r2014_5, r2014_2 +# 2015| v2015_1(void) = NoOp : +# 1999| v1999_5(void) = ReturnVoid : +# 1999| v1999_6(void) = AliasedUse : ~m2014_4 +# 1999| v1999_7(void) = ExitFunction : + +# 2017| void test_volatile() +# 2017| Block 0 +# 2017| v2017_1(void) = EnterFunction : +# 2017| m2017_2(unknown) = AliasedDefinition : +# 2017| m2017_3(unknown) = InitializeNonLocal : +# 2017| m2017_4(unknown) = Chi : total:m2017_2, partial:m2017_3 +# 2018| r2018_1(glval<int>) = VariableAddress[x] : +# 2018| m2018_2(int) = Uninitialized[x] : &:r2018_1 +# 2019| r2019_1(glval<int>) = VariableAddress[x] : +# 2019| r2019_2(int) = Load[x] : &:r2019_1, m2018_2 +# 2020| v2020_1(void) = NoOp : +# 2017| v2017_5(void) = ReturnVoid : +# 2017| v2017_6(void) = AliasedUse : m2017_3 +# 2017| v2017_7(void) = ExitFunction : + +# 2028| void value_category_test() +# 2028| Block 0 +# 2028| v2028_1(void) = EnterFunction : +# 2028| m2028_2(unknown) = AliasedDefinition : +# 2028| m2028_3(unknown) = InitializeNonLocal : +# 2028| m2028_4(unknown) = Chi : total:m2028_2, partial:m2028_3 +# 2029| r2029_1(glval<ValCat>) = VariableAddress[c] : +# 2029| m2029_2(ValCat) = Uninitialized[c] : &:r2029_1 #-----| r0_1(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, m0_2 -# 1984| r1984_1(glval<ValCat>) = VariableAddress[c] : -# 1984| r1984_2(glval<unknown>) = FunctionAddress[lvalue] : -# 1984| r1984_3(ValCat &) = Call[lvalue] : func:r1984_2 -# 1984| m1984_4(unknown) = ^CallSideEffect : ~m1981_4 -# 1984| m1984_5(unknown) = Chi : total:m1981_4, partial:m1984_4 -# 1984| r1984_6(glval<ValCat>) = CopyValue : r1984_3 -# 1984| m1984_7(ValCat) = Store[?] : &:r1984_6, r0_3 -# 1984| m1984_8(unknown) = Chi : total:m1984_5, partial:m1984_7 +# 2031| r2031_1(glval<ValCat>) = VariableAddress[c] : +# 2031| r2031_2(glval<unknown>) = FunctionAddress[lvalue] : +# 2031| r2031_3(ValCat &) = Call[lvalue] : func:r2031_2 +# 2031| m2031_4(unknown) = ^CallSideEffect : ~m2028_4 +# 2031| m2031_5(unknown) = Chi : total:m2028_4, partial:m2031_4 +# 2031| r2031_6(glval<ValCat>) = CopyValue : r2031_3 +# 2031| m2031_7(ValCat) = Store[?] : &:r2031_6, r0_3 +# 2031| m2031_8(unknown) = Chi : total:m2031_5, partial:m2031_7 #-----| r0_4(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, m0_5 -# 1985| r1985_1(glval<ValCat>) = VariableAddress[c] : -# 1985| r1985_2(glval<unknown>) = FunctionAddress[xvalue] : -# 1985| r1985_3(ValCat &&) = Call[xvalue] : func:r1985_2 -# 1985| m1985_4(unknown) = ^CallSideEffect : ~m1984_8 -# 1985| m1985_5(unknown) = Chi : total:m1984_8, partial:m1985_4 -# 1985| r1985_6(glval<ValCat>) = CopyValue : r1985_3 -# 1985| m1985_7(ValCat) = Store[?] : &:r1985_6, r0_6 -# 1985| m1985_8(unknown) = Chi : total:m1985_5, partial:m1985_7 +# 2032| r2032_1(glval<ValCat>) = VariableAddress[c] : +# 2032| r2032_2(glval<unknown>) = FunctionAddress[xvalue] : +# 2032| r2032_3(ValCat &&) = Call[xvalue] : func:r2032_2 +# 2032| m2032_4(unknown) = ^CallSideEffect : ~m2031_8 +# 2032| m2032_5(unknown) = Chi : total:m2031_8, partial:m2032_4 +# 2032| r2032_6(glval<ValCat>) = CopyValue : r2032_3 +# 2032| m2032_7(ValCat) = Store[?] : &:r2032_6, r0_6 +# 2032| m2032_8(unknown) = Chi : total:m2032_5, partial:m2032_7 #-----| r0_7(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, m0_8 -# 1986| r1986_1(glval<ValCat>) = VariableAddress[#temp1986:5] : -# 1986| r1986_2(glval<ValCat>) = VariableAddress[c] : -# 1986| r1986_3(glval<unknown>) = FunctionAddress[prvalue] : -# 1986| r1986_4(ValCat) = Call[prvalue] : func:r1986_3 -# 1986| m1986_5(unknown) = ^CallSideEffect : ~m1985_8 -# 1986| m1986_6(unknown) = Chi : total:m1985_8, partial:m1986_5 -# 1986| m1986_7(ValCat) = Store[#temp1986:5] : &:r1986_1, r1986_4 -# 1986| m1986_8(ValCat) = Store[#temp1986:5] : &:r1986_1, r0_9 +# 2033| r2033_1(glval<ValCat>) = VariableAddress[#temp2033:5] : +# 2033| r2033_2(glval<ValCat>) = VariableAddress[c] : +# 2033| r2033_3(glval<unknown>) = FunctionAddress[prvalue] : +# 2033| r2033_4(ValCat) = Call[prvalue] : func:r2033_3 +# 2033| m2033_5(unknown) = ^CallSideEffect : ~m2032_8 +# 2033| m2033_6(unknown) = Chi : total:m2032_8, partial:m2033_5 +# 2033| m2033_7(ValCat) = Store[#temp2033:5] : &:r2033_1, r2033_4 +# 2033| m2033_8(ValCat) = Store[#temp2033:5] : &:r2033_1, r0_9 #-----| r0_10(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, m0_11 -# 1987| r1987_1(glval<unknown>) = FunctionAddress[lvalue] : -# 1987| r1987_2(ValCat &) = Call[lvalue] : func:r1987_1 -# 1987| m1987_3(unknown) = ^CallSideEffect : ~m1986_6 -# 1987| m1987_4(unknown) = Chi : total:m1986_6, partial:m1987_3 -# 1987| r1987_5(glval<ValCat>) = CopyValue : r1987_2 -# 1987| m1987_6(ValCat) = Store[?] : &:r1987_5, r0_12 -# 1987| m1987_7(unknown) = Chi : total:m1987_4, partial:m1987_6 +# 2034| r2034_1(glval<unknown>) = FunctionAddress[lvalue] : +# 2034| r2034_2(ValCat &) = Call[lvalue] : func:r2034_1 +# 2034| m2034_3(unknown) = ^CallSideEffect : ~m2033_6 +# 2034| m2034_4(unknown) = Chi : total:m2033_6, partial:m2034_3 +# 2034| r2034_5(glval<ValCat>) = CopyValue : r2034_2 +# 2034| m2034_6(ValCat) = Store[?] : &:r2034_5, r0_12 +# 2034| m2034_7(unknown) = Chi : total:m2034_4, partial:m2034_6 #-----| r0_13(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, m0_14 -# 1988| r1988_1(glval<unknown>) = FunctionAddress[xvalue] : -# 1988| r1988_2(ValCat &&) = Call[xvalue] : func:r1988_1 -# 1988| m1988_3(unknown) = ^CallSideEffect : ~m1987_7 -# 1988| m1988_4(unknown) = Chi : total:m1987_7, partial:m1988_3 -# 1988| r1988_5(glval<ValCat>) = CopyValue : r1988_2 -# 1988| m1988_6(ValCat) = Store[?] : &:r1988_5, r0_15 -# 1988| m1988_7(unknown) = Chi : total:m1988_4, partial:m1988_6 +# 2035| r2035_1(glval<unknown>) = FunctionAddress[xvalue] : +# 2035| r2035_2(ValCat &&) = Call[xvalue] : func:r2035_1 +# 2035| m2035_3(unknown) = ^CallSideEffect : ~m2034_7 +# 2035| m2035_4(unknown) = Chi : total:m2034_7, partial:m2035_3 +# 2035| r2035_5(glval<ValCat>) = CopyValue : r2035_2 +# 2035| m2035_6(ValCat) = Store[?] : &:r2035_5, r0_15 +# 2035| m2035_7(unknown) = Chi : total:m2035_4, partial:m2035_6 #-----| r0_16(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, m0_17 -# 1989| r1989_1(glval<ValCat>) = VariableAddress[#temp1989:5] : -# 1989| r1989_2(glval<unknown>) = FunctionAddress[prvalue] : -# 1989| r1989_3(ValCat) = Call[prvalue] : func:r1989_2 -# 1989| m1989_4(unknown) = ^CallSideEffect : ~m1988_7 -# 1989| m1989_5(unknown) = Chi : total:m1988_7, partial:m1989_4 -# 1989| m1989_6(ValCat) = Store[#temp1989:5] : &:r1989_1, r1989_3 -# 1989| m1989_7(ValCat) = Store[#temp1989:5] : &:r1989_1, r0_18 -# 1990| v1990_1(void) = NoOp : -# 1981| v1981_5(void) = ReturnVoid : -# 1981| v1981_6(void) = AliasedUse : ~m1989_5 -# 1981| v1981_7(void) = ExitFunction : - -# 1992| void SetStaticFuncPtr() -# 1992| Block 0 -# 1992| v1992_1(void) = EnterFunction : -# 1992| m1992_2(unknown) = AliasedDefinition : -# 1992| m1992_3(unknown) = InitializeNonLocal : -# 1992| m1992_4(unknown) = Chi : total:m1992_2, partial:m1992_3 -# 1993| r1993_1(glval<C>) = VariableAddress[c] : -# 1993| m1993_2(C) = Uninitialized[c] : &:r1993_1 -# 1993| r1993_3(glval<unknown>) = FunctionAddress[C] : -# 1993| v1993_4(void) = Call[C] : func:r1993_3, this:r1993_1 -# 1993| m1993_5(unknown) = ^CallSideEffect : ~m1992_4 -# 1993| m1993_6(unknown) = Chi : total:m1992_4, partial:m1993_5 -# 1993| m1993_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1993_1 -# 1993| m1993_8(C) = Chi : total:m1993_2, partial:m1993_7 -# 1994| r1994_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1994| r1994_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1994| m1994_3(..(*)(..)) = Store[pfn] : &:r1994_1, r1994_2 -# 1995| r1995_1(glval<C>) = VariableAddress[c] : -# 1995| r1995_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1995| r1995_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1995| m1995_4(..(*)(..)) = Store[pfn] : &:r1995_3, r1995_2 -# 1996| v1996_1(void) = NoOp : -# 1996| r1996_2(glval<C>) = VariableAddress[c] : -# 1996| r1996_3(glval<unknown>) = FunctionAddress[~C] : -# 1996| v1996_4(void) = Call[~C] : func:r1996_3, this:r1996_2 -# 1996| m1996_5(unknown) = ^CallSideEffect : ~m1993_6 -# 1996| m1996_6(unknown) = Chi : total:m1993_6, partial:m1996_5 -# 1996| v1996_7(void) = ^IndirectReadSideEffect[-1] : &:r1996_2, m1993_8 -# 1996| m1996_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1996_2 -# 1996| m1996_9(C) = Chi : total:m1993_8, partial:m1996_8 -# 1992| v1992_5(void) = ReturnVoid : -# 1992| v1992_6(void) = AliasedUse : ~m1996_6 -# 1992| v1992_7(void) = ExitFunction : - -# 1998| void TernaryTestInt(bool, int, int, int) -# 1998| Block 0 -# 1998| v1998_1(void) = EnterFunction : -# 1998| m1998_2(unknown) = AliasedDefinition : -# 1998| m1998_3(unknown) = InitializeNonLocal : -# 1998| m1998_4(unknown) = Chi : total:m1998_2, partial:m1998_3 -# 1998| r1998_5(glval<bool>) = VariableAddress[a] : -# 1998| m1998_6(bool) = InitializeParameter[a] : &:r1998_5 -# 1998| r1998_7(glval<int>) = VariableAddress[x] : -# 1998| m1998_8(int) = InitializeParameter[x] : &:r1998_7 -# 1998| r1998_9(glval<int>) = VariableAddress[y] : -# 1998| m1998_10(int) = InitializeParameter[y] : &:r1998_9 -# 1998| r1998_11(glval<int>) = VariableAddress[z] : -# 1998| m1998_12(int) = InitializeParameter[z] : &:r1998_11 -# 1999| r1999_1(glval<bool>) = VariableAddress[a] : -# 1999| r1999_2(bool) = Load[a] : &:r1999_1, m1998_6 -# 1999| v1999_3(void) = ConditionalBranch : r1999_2 +# 2036| r2036_1(glval<ValCat>) = VariableAddress[#temp2036:5] : +# 2036| r2036_2(glval<unknown>) = FunctionAddress[prvalue] : +# 2036| r2036_3(ValCat) = Call[prvalue] : func:r2036_2 +# 2036| m2036_4(unknown) = ^CallSideEffect : ~m2035_7 +# 2036| m2036_5(unknown) = Chi : total:m2035_7, partial:m2036_4 +# 2036| m2036_6(ValCat) = Store[#temp2036:5] : &:r2036_1, r2036_3 +# 2036| m2036_7(ValCat) = Store[#temp2036:5] : &:r2036_1, r0_18 +# 2037| v2037_1(void) = NoOp : +# 2028| v2028_5(void) = ReturnVoid : +# 2028| v2028_6(void) = AliasedUse : ~m2036_5 +# 2028| v2028_7(void) = ExitFunction : + +# 2039| void SetStaticFuncPtr() +# 2039| Block 0 +# 2039| v2039_1(void) = EnterFunction : +# 2039| m2039_2(unknown) = AliasedDefinition : +# 2039| m2039_3(unknown) = InitializeNonLocal : +# 2039| m2039_4(unknown) = Chi : total:m2039_2, partial:m2039_3 +# 2040| r2040_1(glval<C>) = VariableAddress[c] : +# 2040| m2040_2(C) = Uninitialized[c] : &:r2040_1 +# 2040| r2040_3(glval<unknown>) = FunctionAddress[C] : +# 2040| v2040_4(void) = Call[C] : func:r2040_3, this:r2040_1 +# 2040| m2040_5(unknown) = ^CallSideEffect : ~m2039_4 +# 2040| m2040_6(unknown) = Chi : total:m2039_4, partial:m2040_5 +# 2040| m2040_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2040_1 +# 2040| m2040_8(C) = Chi : total:m2040_2, partial:m2040_7 +# 2041| r2041_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2041| r2041_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2041| m2041_3(..(*)(..)) = Store[pfn] : &:r2041_1, r2041_2 +# 2042| r2042_1(glval<C>) = VariableAddress[c] : +# 2042| r2042_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2042| r2042_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2042| m2042_4(..(*)(..)) = Store[pfn] : &:r2042_3, r2042_2 +# 2043| v2043_1(void) = NoOp : +# 2043| r2043_2(glval<C>) = VariableAddress[c] : +# 2043| r2043_3(glval<unknown>) = FunctionAddress[~C] : +# 2043| v2043_4(void) = Call[~C] : func:r2043_3, this:r2043_2 +# 2043| m2043_5(unknown) = ^CallSideEffect : ~m2040_6 +# 2043| m2043_6(unknown) = Chi : total:m2040_6, partial:m2043_5 +# 2043| v2043_7(void) = ^IndirectReadSideEffect[-1] : &:r2043_2, m2040_8 +# 2043| m2043_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r2043_2 +# 2043| m2043_9(C) = Chi : total:m2040_8, partial:m2043_8 +# 2039| v2039_5(void) = ReturnVoid : +# 2039| v2039_6(void) = AliasedUse : ~m2043_6 +# 2039| v2039_7(void) = ExitFunction : + +# 2045| void TernaryTestInt(bool, int, int, int) +# 2045| Block 0 +# 2045| v2045_1(void) = EnterFunction : +# 2045| m2045_2(unknown) = AliasedDefinition : +# 2045| m2045_3(unknown) = InitializeNonLocal : +# 2045| m2045_4(unknown) = Chi : total:m2045_2, partial:m2045_3 +# 2045| r2045_5(glval<bool>) = VariableAddress[a] : +# 2045| m2045_6(bool) = InitializeParameter[a] : &:r2045_5 +# 2045| r2045_7(glval<int>) = VariableAddress[x] : +# 2045| m2045_8(int) = InitializeParameter[x] : &:r2045_7 +# 2045| r2045_9(glval<int>) = VariableAddress[y] : +# 2045| m2045_10(int) = InitializeParameter[y] : &:r2045_9 +# 2045| r2045_11(glval<int>) = VariableAddress[z] : +# 2045| m2045_12(int) = InitializeParameter[z] : &:r2045_11 +# 2046| r2046_1(glval<bool>) = VariableAddress[a] : +# 2046| r2046_2(bool) = Load[a] : &:r2046_1, m2045_6 +# 2046| v2046_3(void) = ConditionalBranch : r2046_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1999| Block 1 -# 1999| m1999_4(int) = Phi : from 2:m1999_12, from 3:m1999_16 -# 1999| r1999_5(glval<int>) = VariableAddress[#temp1999:9] : -# 1999| r1999_6(int) = Load[#temp1999:9] : &:r1999_5, m1999_4 -# 1999| r1999_7(glval<int>) = VariableAddress[z] : -# 1999| m1999_8(int) = Store[z] : &:r1999_7, r1999_6 -# 2000| r2000_1(glval<bool>) = VariableAddress[a] : -# 2000| r2000_2(bool) = Load[a] : &:r2000_1, m1998_6 -# 2000| v2000_3(void) = ConditionalBranch : r2000_2 +# 2046| Block 1 +# 2046| m2046_4(int) = Phi : from 2:m2046_12, from 3:m2046_16 +# 2046| r2046_5(glval<int>) = VariableAddress[#temp2046:9] : +# 2046| r2046_6(int) = Load[#temp2046:9] : &:r2046_5, m2046_4 +# 2046| r2046_7(glval<int>) = VariableAddress[z] : +# 2046| m2046_8(int) = Store[z] : &:r2046_7, r2046_6 +# 2047| r2047_1(glval<bool>) = VariableAddress[a] : +# 2047| r2047_2(bool) = Load[a] : &:r2047_1, m2045_6 +# 2047| v2047_3(void) = ConditionalBranch : r2047_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1999| Block 2 -# 1999| r1999_9(glval<int>) = VariableAddress[x] : -# 1999| r1999_10(int) = Load[x] : &:r1999_9, m1998_8 -# 1999| r1999_11(glval<int>) = VariableAddress[#temp1999:9] : -# 1999| m1999_12(int) = Store[#temp1999:9] : &:r1999_11, r1999_10 +# 2046| Block 2 +# 2046| r2046_9(glval<int>) = VariableAddress[x] : +# 2046| r2046_10(int) = Load[x] : &:r2046_9, m2045_8 +# 2046| r2046_11(glval<int>) = VariableAddress[#temp2046:9] : +# 2046| m2046_12(int) = Store[#temp2046:9] : &:r2046_11, r2046_10 #-----| Goto -> Block 1 -# 1999| Block 3 -# 1999| r1999_13(glval<int>) = VariableAddress[y] : -# 1999| r1999_14(int) = Load[y] : &:r1999_13, m1998_10 -# 1999| r1999_15(glval<int>) = VariableAddress[#temp1999:9] : -# 1999| m1999_16(int) = Store[#temp1999:9] : &:r1999_15, r1999_14 +# 2046| Block 3 +# 2046| r2046_13(glval<int>) = VariableAddress[y] : +# 2046| r2046_14(int) = Load[y] : &:r2046_13, m2045_10 +# 2046| r2046_15(glval<int>) = VariableAddress[#temp2046:9] : +# 2046| m2046_16(int) = Store[#temp2046:9] : &:r2046_15, r2046_14 #-----| Goto -> Block 1 -# 2000| Block 4 -# 2000| m2000_4(int) = Phi : from 5:m2000_12, from 6:m2000_15 -# 2000| r2000_5(glval<int>) = VariableAddress[#temp2000:9] : -# 2000| r2000_6(int) = Load[#temp2000:9] : &:r2000_5, m2000_4 -# 2000| r2000_7(glval<int>) = VariableAddress[z] : -# 2000| m2000_8(int) = Store[z] : &:r2000_7, r2000_6 -# 2001| r2001_1(glval<bool>) = VariableAddress[a] : -# 2001| r2001_2(bool) = Load[a] : &:r2001_1, m1998_6 -# 2001| v2001_3(void) = ConditionalBranch : r2001_2 +# 2047| Block 4 +# 2047| m2047_4(int) = Phi : from 5:m2047_12, from 6:m2047_15 +# 2047| r2047_5(glval<int>) = VariableAddress[#temp2047:9] : +# 2047| r2047_6(int) = Load[#temp2047:9] : &:r2047_5, m2047_4 +# 2047| r2047_7(glval<int>) = VariableAddress[z] : +# 2047| m2047_8(int) = Store[z] : &:r2047_7, r2047_6 +# 2048| r2048_1(glval<bool>) = VariableAddress[a] : +# 2048| r2048_2(bool) = Load[a] : &:r2048_1, m2045_6 +# 2048| v2048_3(void) = ConditionalBranch : r2048_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 2000| Block 5 -# 2000| r2000_9(glval<int>) = VariableAddress[x] : -# 2000| r2000_10(int) = Load[x] : &:r2000_9, m1998_8 -# 2000| r2000_11(glval<int>) = VariableAddress[#temp2000:9] : -# 2000| m2000_12(int) = Store[#temp2000:9] : &:r2000_11, r2000_10 +# 2047| Block 5 +# 2047| r2047_9(glval<int>) = VariableAddress[x] : +# 2047| r2047_10(int) = Load[x] : &:r2047_9, m2045_8 +# 2047| r2047_11(glval<int>) = VariableAddress[#temp2047:9] : +# 2047| m2047_12(int) = Store[#temp2047:9] : &:r2047_11, r2047_10 #-----| Goto -> Block 4 -# 2000| Block 6 -# 2000| r2000_13(int) = Constant[5] : -# 2000| r2000_14(glval<int>) = VariableAddress[#temp2000:9] : -# 2000| m2000_15(int) = Store[#temp2000:9] : &:r2000_14, r2000_13 +# 2047| Block 6 +# 2047| r2047_13(int) = Constant[5] : +# 2047| r2047_14(glval<int>) = VariableAddress[#temp2047:9] : +# 2047| m2047_15(int) = Store[#temp2047:9] : &:r2047_14, r2047_13 #-----| Goto -> Block 4 -# 2001| Block 7 -# 2001| m2001_4(int) = Phi : from 8:m2001_11, from 9:m2001_14 -# 2001| r2001_5(glval<int>) = VariableAddress[#temp2001:9] : -# 2001| r2001_6(int) = Load[#temp2001:9] : &:r2001_5, m2001_4 -# 2001| r2001_7(glval<int>) = VariableAddress[z] : -# 2001| m2001_8(int) = Store[z] : &:r2001_7, r2001_6 -# 2002| r2002_1(int) = Constant[7] : -# 2002| r2002_2(glval<bool>) = VariableAddress[a] : -# 2002| r2002_3(bool) = Load[a] : &:r2002_2, m1998_6 -# 2002| v2002_4(void) = ConditionalBranch : r2002_3 +# 2048| Block 7 +# 2048| m2048_4(int) = Phi : from 8:m2048_11, from 9:m2048_14 +# 2048| r2048_5(glval<int>) = VariableAddress[#temp2048:9] : +# 2048| r2048_6(int) = Load[#temp2048:9] : &:r2048_5, m2048_4 +# 2048| r2048_7(glval<int>) = VariableAddress[z] : +# 2048| m2048_8(int) = Store[z] : &:r2048_7, r2048_6 +# 2049| r2049_1(int) = Constant[7] : +# 2049| r2049_2(glval<bool>) = VariableAddress[a] : +# 2049| r2049_3(bool) = Load[a] : &:r2049_2, m2045_6 +# 2049| v2049_4(void) = ConditionalBranch : r2049_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 2001| Block 8 -# 2001| r2001_9(int) = Constant[3] : -# 2001| r2001_10(glval<int>) = VariableAddress[#temp2001:9] : -# 2001| m2001_11(int) = Store[#temp2001:9] : &:r2001_10, r2001_9 +# 2048| Block 8 +# 2048| r2048_9(int) = Constant[3] : +# 2048| r2048_10(glval<int>) = VariableAddress[#temp2048:9] : +# 2048| m2048_11(int) = Store[#temp2048:9] : &:r2048_10, r2048_9 #-----| Goto -> Block 7 -# 2001| Block 9 -# 2001| r2001_12(int) = Constant[5] : -# 2001| r2001_13(glval<int>) = VariableAddress[#temp2001:9] : -# 2001| m2001_14(int) = Store[#temp2001:9] : &:r2001_13, r2001_12 +# 2048| Block 9 +# 2048| r2048_12(int) = Constant[5] : +# 2048| r2048_13(glval<int>) = VariableAddress[#temp2048:9] : +# 2048| m2048_14(int) = Store[#temp2048:9] : &:r2048_13, r2048_12 #-----| Goto -> Block 7 -# 2002| Block 10 -# 2002| m2002_5(glval<int>) = Phi : from 11:m2002_12, from 12:m2002_15 -# 2002| r2002_6(glval<unknown>) = VariableAddress[#temp2002:6] : -# 2002| r2002_7(glval<int>) = Load[#temp2002:6] : &:r2002_6, m2002_5 -# 2002| m2002_8(int) = Store[?] : &:r2002_7, r2002_1 -# 2002| m2002_9(unknown) = Chi : total:m1998_4, partial:m2002_8 -# 2003| v2003_1(void) = NoOp : -# 1998| v1998_13(void) = ReturnVoid : -# 1998| v1998_14(void) = AliasedUse : ~m2002_9 -# 1998| v1998_15(void) = ExitFunction : - -# 2002| Block 11 -# 2002| r2002_10(glval<int>) = VariableAddress[x] : -# 2002| r2002_11(glval<unknown>) = VariableAddress[#temp2002:6] : -# 2002| m2002_12(glval<int>) = Store[#temp2002:6] : &:r2002_11, r2002_10 +# 2049| Block 10 +# 2049| m2049_5(glval<int>) = Phi : from 11:m2049_12, from 12:m2049_15 +# 2049| r2049_6(glval<unknown>) = VariableAddress[#temp2049:6] : +# 2049| r2049_7(glval<int>) = Load[#temp2049:6] : &:r2049_6, m2049_5 +# 2049| m2049_8(int) = Store[?] : &:r2049_7, r2049_1 +# 2049| m2049_9(unknown) = Chi : total:m2045_4, partial:m2049_8 +# 2050| v2050_1(void) = NoOp : +# 2045| v2045_13(void) = ReturnVoid : +# 2045| v2045_14(void) = AliasedUse : ~m2049_9 +# 2045| v2045_15(void) = ExitFunction : + +# 2049| Block 11 +# 2049| r2049_10(glval<int>) = VariableAddress[x] : +# 2049| r2049_11(glval<unknown>) = VariableAddress[#temp2049:6] : +# 2049| m2049_12(glval<int>) = Store[#temp2049:6] : &:r2049_11, r2049_10 #-----| Goto -> Block 10 -# 2002| Block 12 -# 2002| r2002_13(glval<int>) = VariableAddress[y] : -# 2002| r2002_14(glval<unknown>) = VariableAddress[#temp2002:6] : -# 2002| m2002_15(glval<int>) = Store[#temp2002:6] : &:r2002_14, r2002_13 +# 2049| Block 12 +# 2049| r2049_13(glval<int>) = VariableAddress[y] : +# 2049| r2049_14(glval<unknown>) = VariableAddress[#temp2049:6] : +# 2049| m2049_15(glval<int>) = Store[#temp2049:6] : &:r2049_14, r2049_13 #-----| Goto -> Block 10 -# 2008| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2008| Block 0 -# 2008| v2008_1(void) = EnterFunction : -# 2008| m2008_2(unknown) = AliasedDefinition : -# 2008| m2008_3(unknown) = InitializeNonLocal : -# 2008| m2008_4(unknown) = Chi : total:m2008_2, partial:m2008_3 -# 2008| r2008_5(glval<bool>) = VariableAddress[a] : -# 2008| m2008_6(bool) = InitializeParameter[a] : &:r2008_5 -# 2008| r2008_7(glval<TernaryPodObj>) = VariableAddress[x] : -# 2008| m2008_8(TernaryPodObj) = InitializeParameter[x] : &:r2008_7 -# 2008| r2008_9(glval<TernaryPodObj>) = VariableAddress[y] : -# 2008| m2008_10(TernaryPodObj) = InitializeParameter[y] : &:r2008_9 -# 2008| r2008_11(glval<TernaryPodObj>) = VariableAddress[z] : -# 2008| m2008_12(TernaryPodObj) = InitializeParameter[z] : &:r2008_11 -# 2009| r2009_1(glval<bool>) = VariableAddress[a] : -# 2009| r2009_2(bool) = Load[a] : &:r2009_1, m2008_6 -# 2009| v2009_3(void) = ConditionalBranch : r2009_2 +# 2055| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2055| Block 0 +# 2055| v2055_1(void) = EnterFunction : +# 2055| m2055_2(unknown) = AliasedDefinition : +# 2055| m2055_3(unknown) = InitializeNonLocal : +# 2055| m2055_4(unknown) = Chi : total:m2055_2, partial:m2055_3 +# 2055| r2055_5(glval<bool>) = VariableAddress[a] : +# 2055| m2055_6(bool) = InitializeParameter[a] : &:r2055_5 +# 2055| r2055_7(glval<TernaryPodObj>) = VariableAddress[x] : +# 2055| m2055_8(TernaryPodObj) = InitializeParameter[x] : &:r2055_7 +# 2055| r2055_9(glval<TernaryPodObj>) = VariableAddress[y] : +# 2055| m2055_10(TernaryPodObj) = InitializeParameter[y] : &:r2055_9 +# 2055| r2055_11(glval<TernaryPodObj>) = VariableAddress[z] : +# 2055| m2055_12(TernaryPodObj) = InitializeParameter[z] : &:r2055_11 +# 2056| r2056_1(glval<bool>) = VariableAddress[a] : +# 2056| r2056_2(bool) = Load[a] : &:r2056_1, m2055_6 +# 2056| v2056_3(void) = ConditionalBranch : r2056_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2009| Block 1 -# 2009| m2009_4(TernaryPodObj) = Phi : from 2:m2009_12, from 3:m2009_16 -# 2009| r2009_5(glval<TernaryPodObj>) = VariableAddress[#temp2009:9] : -# 2009| r2009_6(TernaryPodObj) = Load[#temp2009:9] : &:r2009_5, m2009_4 -# 2009| r2009_7(glval<TernaryPodObj>) = VariableAddress[z] : -# 2009| m2009_8(TernaryPodObj) = Store[z] : &:r2009_7, r2009_6 -# 2010| r2010_1(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| r2010_2(glval<bool>) = VariableAddress[a] : -# 2010| r2010_3(bool) = Load[a] : &:r2010_2, m2008_6 -# 2010| v2010_4(void) = ConditionalBranch : r2010_3 +# 2056| Block 1 +# 2056| m2056_4(TernaryPodObj) = Phi : from 2:m2056_12, from 3:m2056_16 +# 2056| r2056_5(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : +# 2056| r2056_6(TernaryPodObj) = Load[#temp2056:9] : &:r2056_5, m2056_4 +# 2056| r2056_7(glval<TernaryPodObj>) = VariableAddress[z] : +# 2056| m2056_8(TernaryPodObj) = Store[z] : &:r2056_7, r2056_6 +# 2057| r2057_1(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| r2057_2(glval<bool>) = VariableAddress[a] : +# 2057| r2057_3(bool) = Load[a] : &:r2057_2, m2055_6 +# 2057| v2057_4(void) = ConditionalBranch : r2057_3 #-----| False -> Block 6 #-----| True -> Block 5 -# 2009| Block 2 -# 2009| r2009_9(glval<TernaryPodObj>) = VariableAddress[x] : -# 2009| r2009_10(TernaryPodObj) = Load[x] : &:r2009_9, m2008_8 -# 2009| r2009_11(glval<TernaryPodObj>) = VariableAddress[#temp2009:9] : -# 2009| m2009_12(TernaryPodObj) = Store[#temp2009:9] : &:r2009_11, r2009_10 +# 2056| Block 2 +# 2056| r2056_9(glval<TernaryPodObj>) = VariableAddress[x] : +# 2056| r2056_10(TernaryPodObj) = Load[x] : &:r2056_9, m2055_8 +# 2056| r2056_11(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : +# 2056| m2056_12(TernaryPodObj) = Store[#temp2056:9] : &:r2056_11, r2056_10 #-----| Goto -> Block 1 -# 2009| Block 3 -# 2009| r2009_13(glval<TernaryPodObj>) = VariableAddress[y] : -# 2009| r2009_14(TernaryPodObj) = Load[y] : &:r2009_13, m2008_10 -# 2009| r2009_15(glval<TernaryPodObj>) = VariableAddress[#temp2009:9] : -# 2009| m2009_16(TernaryPodObj) = Store[#temp2009:9] : &:r2009_15, r2009_14 +# 2056| Block 3 +# 2056| r2056_13(glval<TernaryPodObj>) = VariableAddress[y] : +# 2056| r2056_14(TernaryPodObj) = Load[y] : &:r2056_13, m2055_10 +# 2056| r2056_15(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : +# 2056| m2056_16(TernaryPodObj) = Store[#temp2056:9] : &:r2056_15, r2056_14 #-----| Goto -> Block 1 -# 2010| Block 4 -# 2010| m2010_5(TernaryPodObj) = Phi : from 5:m2010_18, from 6:m2010_24 -# 2010| r2010_6(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| r2010_7(TernaryPodObj) = Load[#temp2010:9] : &:r2010_6, m2010_5 -# 2010| m2010_8(TernaryPodObj) = Store[#temp2010:9] : &:r2010_1, r2010_7 -# 2010| r2010_9(TernaryPodObj) = Load[#temp2010:9] : &:r2010_1, m2010_8 -# 2010| r2010_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2010| m2010_11(TernaryPodObj) = Store[z] : &:r2010_10, r2010_9 -# 2011| r2011_1(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| r2011_2(glval<bool>) = VariableAddress[a] : -# 2011| r2011_3(bool) = Load[a] : &:r2011_2, m2008_6 -# 2011| v2011_4(void) = ConditionalBranch : r2011_3 +# 2057| Block 4 +# 2057| m2057_5(TernaryPodObj) = Phi : from 5:m2057_18, from 6:m2057_24 +# 2057| r2057_6(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| r2057_7(TernaryPodObj) = Load[#temp2057:9] : &:r2057_6, m2057_5 +# 2057| m2057_8(TernaryPodObj) = Store[#temp2057:9] : &:r2057_1, r2057_7 +# 2057| r2057_9(TernaryPodObj) = Load[#temp2057:9] : &:r2057_1, m2057_8 +# 2057| r2057_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2057| m2057_11(TernaryPodObj) = Store[z] : &:r2057_10, r2057_9 +# 2058| r2058_1(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| r2058_2(glval<bool>) = VariableAddress[a] : +# 2058| r2058_3(bool) = Load[a] : &:r2058_2, m2055_6 +# 2058| v2058_4(void) = ConditionalBranch : r2058_3 #-----| False -> Block 9 #-----| True -> Block 8 -# 2010| Block 5 -# 2010| r2010_12(glval<TernaryPodObj>) = VariableAddress[#temp2010:13] : -# 2010| r2010_13(glval<TernaryPodObj>) = VariableAddress[x] : -# 2010| r2010_14(TernaryPodObj) = Load[x] : &:r2010_13, m2008_8 -# 2010| m2010_15(TernaryPodObj) = Store[#temp2010:13] : &:r2010_12, r2010_14 -# 2010| r2010_16(TernaryPodObj) = Load[#temp2010:13] : &:r2010_12, m2010_15 -# 2010| r2010_17(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| m2010_18(TernaryPodObj) = Store[#temp2010:9] : &:r2010_17, r2010_16 +# 2057| Block 5 +# 2057| r2057_12(glval<TernaryPodObj>) = VariableAddress[#temp2057:13] : +# 2057| r2057_13(glval<TernaryPodObj>) = VariableAddress[x] : +# 2057| r2057_14(TernaryPodObj) = Load[x] : &:r2057_13, m2055_8 +# 2057| m2057_15(TernaryPodObj) = Store[#temp2057:13] : &:r2057_12, r2057_14 +# 2057| r2057_16(TernaryPodObj) = Load[#temp2057:13] : &:r2057_12, m2057_15 +# 2057| r2057_17(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| m2057_18(TernaryPodObj) = Store[#temp2057:9] : &:r2057_17, r2057_16 #-----| Goto -> Block 4 -# 2010| Block 6 -# 2010| r2010_19(glval<TernaryPodObj>) = VariableAddress[#temp2010:17] : -# 2010| r2010_20(TernaryPodObj) = Constant[0] : -# 2010| m2010_21(TernaryPodObj) = Store[#temp2010:17] : &:r2010_19, r2010_20 -# 2010| r2010_22(TernaryPodObj) = Load[#temp2010:17] : &:r2010_19, m2010_21 -# 2010| r2010_23(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| m2010_24(TernaryPodObj) = Store[#temp2010:9] : &:r2010_23, r2010_22 +# 2057| Block 6 +# 2057| r2057_19(glval<TernaryPodObj>) = VariableAddress[#temp2057:17] : +# 2057| r2057_20(TernaryPodObj) = Constant[0] : +# 2057| m2057_21(TernaryPodObj) = Store[#temp2057:17] : &:r2057_19, r2057_20 +# 2057| r2057_22(TernaryPodObj) = Load[#temp2057:17] : &:r2057_19, m2057_21 +# 2057| r2057_23(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| m2057_24(TernaryPodObj) = Store[#temp2057:9] : &:r2057_23, r2057_22 #-----| Goto -> Block 4 -# 2011| Block 7 -# 2011| m2011_5(TernaryPodObj) = Phi : from 8:m2011_17, from 9:m2011_23 -# 2011| r2011_6(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| r2011_7(TernaryPodObj) = Load[#temp2011:9] : &:r2011_6, m2011_5 -# 2011| m2011_8(TernaryPodObj) = Store[#temp2011:9] : &:r2011_1, r2011_7 -# 2011| r2011_9(TernaryPodObj) = Load[#temp2011:9] : &:r2011_1, m2011_8 -# 2011| r2011_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2011| m2011_11(TernaryPodObj) = Store[z] : &:r2011_10, r2011_9 -# 2012| r2012_1(glval<TernaryPodObj>) = VariableAddress[#temp2012:23] : -# 2012| r2012_2(TernaryPodObj) = Constant[0] : -# 2012| m2012_3(TernaryPodObj) = Store[#temp2012:23] : &:r2012_1, r2012_2 -# 2012| r2012_4(TernaryPodObj) = Load[#temp2012:23] : &:r2012_1, m2012_3 -# 2012| r2012_5(glval<bool>) = VariableAddress[a] : -# 2012| r2012_6(bool) = Load[a] : &:r2012_5, m2008_6 -# 2012| v2012_7(void) = ConditionalBranch : r2012_6 +# 2058| Block 7 +# 2058| m2058_5(TernaryPodObj) = Phi : from 8:m2058_17, from 9:m2058_23 +# 2058| r2058_6(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| r2058_7(TernaryPodObj) = Load[#temp2058:9] : &:r2058_6, m2058_5 +# 2058| m2058_8(TernaryPodObj) = Store[#temp2058:9] : &:r2058_1, r2058_7 +# 2058| r2058_9(TernaryPodObj) = Load[#temp2058:9] : &:r2058_1, m2058_8 +# 2058| r2058_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2058| m2058_11(TernaryPodObj) = Store[z] : &:r2058_10, r2058_9 +# 2059| r2059_1(glval<TernaryPodObj>) = VariableAddress[#temp2059:23] : +# 2059| r2059_2(TernaryPodObj) = Constant[0] : +# 2059| m2059_3(TernaryPodObj) = Store[#temp2059:23] : &:r2059_1, r2059_2 +# 2059| r2059_4(TernaryPodObj) = Load[#temp2059:23] : &:r2059_1, m2059_3 +# 2059| r2059_5(glval<bool>) = VariableAddress[a] : +# 2059| r2059_6(bool) = Load[a] : &:r2059_5, m2055_6 +# 2059| v2059_7(void) = ConditionalBranch : r2059_6 #-----| False -> Block 12 #-----| True -> Block 11 -# 2011| Block 8 -# 2011| r2011_12(glval<TernaryPodObj>) = VariableAddress[#temp2011:13] : -# 2011| r2011_13(TernaryPodObj) = Constant[0] : -# 2011| m2011_14(TernaryPodObj) = Store[#temp2011:13] : &:r2011_12, r2011_13 -# 2011| r2011_15(TernaryPodObj) = Load[#temp2011:13] : &:r2011_12, m2011_14 -# 2011| r2011_16(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| m2011_17(TernaryPodObj) = Store[#temp2011:9] : &:r2011_16, r2011_15 +# 2058| Block 8 +# 2058| r2058_12(glval<TernaryPodObj>) = VariableAddress[#temp2058:13] : +# 2058| r2058_13(TernaryPodObj) = Constant[0] : +# 2058| m2058_14(TernaryPodObj) = Store[#temp2058:13] : &:r2058_12, r2058_13 +# 2058| r2058_15(TernaryPodObj) = Load[#temp2058:13] : &:r2058_12, m2058_14 +# 2058| r2058_16(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| m2058_17(TernaryPodObj) = Store[#temp2058:9] : &:r2058_16, r2058_15 #-----| Goto -> Block 7 -# 2011| Block 9 -# 2011| r2011_18(glval<TernaryPodObj>) = VariableAddress[#temp2011:31] : -# 2011| r2011_19(TernaryPodObj) = Constant[0] : -# 2011| m2011_20(TernaryPodObj) = Store[#temp2011:31] : &:r2011_18, r2011_19 -# 2011| r2011_21(TernaryPodObj) = Load[#temp2011:31] : &:r2011_18, m2011_20 -# 2011| r2011_22(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| m2011_23(TernaryPodObj) = Store[#temp2011:9] : &:r2011_22, r2011_21 +# 2058| Block 9 +# 2058| r2058_18(glval<TernaryPodObj>) = VariableAddress[#temp2058:31] : +# 2058| r2058_19(TernaryPodObj) = Constant[0] : +# 2058| m2058_20(TernaryPodObj) = Store[#temp2058:31] : &:r2058_18, r2058_19 +# 2058| r2058_21(TernaryPodObj) = Load[#temp2058:31] : &:r2058_18, m2058_20 +# 2058| r2058_22(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| m2058_23(TernaryPodObj) = Store[#temp2058:9] : &:r2058_22, r2058_21 #-----| Goto -> Block 7 -# 2012| Block 10 -# 2012| m2012_8(TernaryPodObj) = Phi : from 11:m2012_18, from 12:m2012_22 -# 2012| r2012_9(glval<TernaryPodObj>) = VariableAddress[#temp2012:10] : -# 2012| r2012_10(TernaryPodObj) = Load[#temp2012:10] : &:r2012_9, m2012_8 -# 2012| r2012_11(glval<TernaryPodObj>) = VariableAddress[z] : -# 2012| m2012_12(TernaryPodObj) = Store[z] : &:r2012_11, r2012_10 -# 2012| r2012_13(glval<TernaryPodObj>) = CopyValue : r2012_11 -# 2012| m2012_14(TernaryPodObj) = Store[?] : &:r2012_13, r2012_4 -# 2013| v2013_1(void) = NoOp : -# 2008| v2008_13(void) = ReturnVoid : -# 2008| v2008_14(void) = AliasedUse : m2008_3 -# 2008| v2008_15(void) = ExitFunction : - -# 2012| Block 11 -# 2012| r2012_15(glval<TernaryPodObj>) = VariableAddress[x] : -# 2012| r2012_16(TernaryPodObj) = Load[x] : &:r2012_15, m2008_8 -# 2012| r2012_17(glval<TernaryPodObj>) = VariableAddress[#temp2012:10] : -# 2012| m2012_18(TernaryPodObj) = Store[#temp2012:10] : &:r2012_17, r2012_16 +# 2059| Block 10 +# 2059| m2059_8(TernaryPodObj) = Phi : from 11:m2059_18, from 12:m2059_22 +# 2059| r2059_9(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : +# 2059| r2059_10(TernaryPodObj) = Load[#temp2059:10] : &:r2059_9, m2059_8 +# 2059| r2059_11(glval<TernaryPodObj>) = VariableAddress[z] : +# 2059| m2059_12(TernaryPodObj) = Store[z] : &:r2059_11, r2059_10 +# 2059| r2059_13(glval<TernaryPodObj>) = CopyValue : r2059_11 +# 2059| m2059_14(TernaryPodObj) = Store[?] : &:r2059_13, r2059_4 +# 2060| v2060_1(void) = NoOp : +# 2055| v2055_13(void) = ReturnVoid : +# 2055| v2055_14(void) = AliasedUse : m2055_3 +# 2055| v2055_15(void) = ExitFunction : + +# 2059| Block 11 +# 2059| r2059_15(glval<TernaryPodObj>) = VariableAddress[x] : +# 2059| r2059_16(TernaryPodObj) = Load[x] : &:r2059_15, m2055_8 +# 2059| r2059_17(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : +# 2059| m2059_18(TernaryPodObj) = Store[#temp2059:10] : &:r2059_17, r2059_16 #-----| Goto -> Block 10 -# 2012| Block 12 -# 2012| r2012_19(glval<TernaryPodObj>) = VariableAddress[y] : -# 2012| r2012_20(TernaryPodObj) = Load[y] : &:r2012_19, m2008_10 -# 2012| r2012_21(glval<TernaryPodObj>) = VariableAddress[#temp2012:10] : -# 2012| m2012_22(TernaryPodObj) = Store[#temp2012:10] : &:r2012_21, r2012_20 +# 2059| Block 12 +# 2059| r2059_19(glval<TernaryPodObj>) = VariableAddress[y] : +# 2059| r2059_20(TernaryPodObj) = Load[y] : &:r2059_19, m2055_10 +# 2059| r2059_21(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : +# 2059| m2059_22(TernaryPodObj) = Store[#temp2059:10] : &:r2059_21, r2059_20 #-----| Goto -> Block 10 -# 2015| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2015| Block 0 -# 2015| v2015_1(void) = EnterFunction : -# 2015| m2015_2(unknown) = AliasedDefinition : -# 2015| m2015_3(unknown) = InitializeNonLocal : -# 2015| m2015_4(unknown) = Chi : total:m2015_2, partial:m2015_3 -# 2015| r2015_5(glval<unknown>) = VariableAddress[#this] : -# 2015| m2015_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2015_5 -# 2015| r2015_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2015_5, m2015_6 -# 2015| m2015_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_7 +# 2062| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2062| Block 0 +# 2062| v2062_1(void) = EnterFunction : +# 2062| m2062_2(unknown) = AliasedDefinition : +# 2062| m2062_3(unknown) = InitializeNonLocal : +# 2062| m2062_4(unknown) = Chi : total:m2062_2, partial:m2062_3 +# 2062| r2062_5(glval<unknown>) = VariableAddress[#this] : +# 2062| m2062_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_5 +# 2062| r2062_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_5, m2062_6 +# 2062| m2062_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_7 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 #-----| r0_5(glval<TernaryNonPodObj &>) = VariableAddress[#return] : #-----| r0_6(glval<unknown>) = VariableAddress[#this] : -#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2015_6 +#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2062_6 #-----| r0_8(glval<TernaryNonPodObj>) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| m0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2015| v2015_9(void) = ReturnIndirection[#this] : &:r2015_7, m2015_8 +# 2062| v2062_9(void) = ReturnIndirection[#this] : &:r2062_7, m2062_8 #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2015| r2015_10(glval<TernaryNonPodObj &>) = VariableAddress[#return] : -# 2015| v2015_11(void) = ReturnValue : &:r2015_10, m0_10 -# 2015| v2015_12(void) = AliasedUse : m2015_3 -# 2015| v2015_13(void) = ExitFunction : - -# 2015| void TernaryNonPodObj::TernaryNonPodObj() -# 2015| Block 0 -# 2015| v2015_1(void) = EnterFunction : -# 2015| m2015_2(unknown) = AliasedDefinition : -# 2015| m2015_3(unknown) = InitializeNonLocal : -# 2015| m2015_4(unknown) = Chi : total:m2015_2, partial:m2015_3 -# 2015| r2015_5(glval<unknown>) = VariableAddress[#this] : -# 2015| m2015_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2015_5 -# 2015| r2015_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2015_5, m2015_6 -# 2015| m2015_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_7 -# 2015| v2015_9(void) = NoOp : -# 2015| v2015_10(void) = ReturnIndirection[#this] : &:r2015_7, m2015_8 -# 2015| v2015_11(void) = ReturnVoid : -# 2015| v2015_12(void) = AliasedUse : m2015_3 -# 2015| v2015_13(void) = ExitFunction : - -# 2015| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2015| Block 0 -# 2015| v2015_1(void) = EnterFunction : -# 2015| m2015_2(unknown) = AliasedDefinition : -# 2015| m2015_3(unknown) = InitializeNonLocal : -# 2015| m2015_4(unknown) = Chi : total:m2015_2, partial:m2015_3 -# 2015| r2015_5(glval<unknown>) = VariableAddress[#this] : -# 2015| m2015_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2015_5 -# 2015| r2015_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2015_5, m2015_6 -# 2015| m2015_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_7 +# 2062| r2062_10(glval<TernaryNonPodObj &>) = VariableAddress[#return] : +# 2062| v2062_11(void) = ReturnValue : &:r2062_10, m0_10 +# 2062| v2062_12(void) = AliasedUse : m2062_3 +# 2062| v2062_13(void) = ExitFunction : + +# 2062| void TernaryNonPodObj::TernaryNonPodObj() +# 2062| Block 0 +# 2062| v2062_1(void) = EnterFunction : +# 2062| m2062_2(unknown) = AliasedDefinition : +# 2062| m2062_3(unknown) = InitializeNonLocal : +# 2062| m2062_4(unknown) = Chi : total:m2062_2, partial:m2062_3 +# 2062| r2062_5(glval<unknown>) = VariableAddress[#this] : +# 2062| m2062_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_5 +# 2062| r2062_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_5, m2062_6 +# 2062| m2062_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_7 +# 2062| v2062_9(void) = NoOp : +# 2062| v2062_10(void) = ReturnIndirection[#this] : &:r2062_7, m2062_8 +# 2062| v2062_11(void) = ReturnVoid : +# 2062| v2062_12(void) = AliasedUse : m2062_3 +# 2062| v2062_13(void) = ExitFunction : + +# 2062| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2062| Block 0 +# 2062| v2062_1(void) = EnterFunction : +# 2062| m2062_2(unknown) = AliasedDefinition : +# 2062| m2062_3(unknown) = InitializeNonLocal : +# 2062| m2062_4(unknown) = Chi : total:m2062_2, partial:m2062_3 +# 2062| r2062_5(glval<unknown>) = VariableAddress[#this] : +# 2062| m2062_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_5 +# 2062| r2062_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_5, m2062_6 +# 2062| m2062_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_7 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2015| v2015_9(void) = NoOp : -# 2015| v2015_10(void) = ReturnIndirection[#this] : &:r2015_7, m2015_8 +# 2062| v2062_9(void) = NoOp : +# 2062| v2062_10(void) = ReturnIndirection[#this] : &:r2062_7, m2062_8 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2015| v2015_11(void) = ReturnVoid : -# 2015| v2015_12(void) = AliasedUse : m2015_3 -# 2015| v2015_13(void) = ExitFunction : - -# 2016| void TernaryNonPodObj::~TernaryNonPodObj() -# 2016| Block 0 -# 2016| v2016_1(void) = EnterFunction : -# 2016| m2016_2(unknown) = AliasedDefinition : -# 2016| m2016_3(unknown) = InitializeNonLocal : -# 2016| m2016_4(unknown) = Chi : total:m2016_2, partial:m2016_3 -# 2016| r2016_5(glval<unknown>) = VariableAddress[#this] : -# 2016| m2016_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2016_5 -# 2016| r2016_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2016_5, m2016_6 -# 2016| m2016_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2016_7 -# 2016| v2016_9(void) = NoOp : -# 2016| v2016_10(void) = ReturnIndirection[#this] : &:r2016_7, m2016_8 -# 2016| v2016_11(void) = ReturnVoid : -# 2016| v2016_12(void) = AliasedUse : m2016_3 -# 2016| v2016_13(void) = ExitFunction : - -# 2019| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2019| Block 0 -# 2019| v2019_1(void) = EnterFunction : -# 2019| m2019_2(unknown) = AliasedDefinition : -# 2019| m2019_3(unknown) = InitializeNonLocal : -# 2019| m2019_4(unknown) = Chi : total:m2019_2, partial:m2019_3 -# 2019| r2019_5(glval<bool>) = VariableAddress[a] : -# 2019| m2019_6(bool) = InitializeParameter[a] : &:r2019_5 -# 2019| r2019_7(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2019| m2019_8(TernaryNonPodObj) = InitializeParameter[x] : &:r2019_7 -# 2019| r2019_9(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2019| m2019_10(TernaryNonPodObj) = InitializeParameter[y] : &:r2019_9 -# 2019| r2019_11(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2019| m2019_12(TernaryNonPodObj) = InitializeParameter[z] : &:r2019_11 -# 2020| r2020_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2020| r2020_2(glval<unknown>) = FunctionAddress[operator=] : -# 2020| r2020_3(glval<bool>) = VariableAddress[a] : -# 2020| r2020_4(bool) = Load[a] : &:r2020_3, m2019_6 -# 2020| v2020_5(void) = ConditionalBranch : r2020_4 +# 2062| v2062_11(void) = ReturnVoid : +# 2062| v2062_12(void) = AliasedUse : m2062_3 +# 2062| v2062_13(void) = ExitFunction : + +# 2063| void TernaryNonPodObj::~TernaryNonPodObj() +# 2063| Block 0 +# 2063| v2063_1(void) = EnterFunction : +# 2063| m2063_2(unknown) = AliasedDefinition : +# 2063| m2063_3(unknown) = InitializeNonLocal : +# 2063| m2063_4(unknown) = Chi : total:m2063_2, partial:m2063_3 +# 2063| r2063_5(glval<unknown>) = VariableAddress[#this] : +# 2063| m2063_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2063_5 +# 2063| r2063_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2063_5, m2063_6 +# 2063| m2063_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2063_7 +# 2063| v2063_9(void) = NoOp : +# 2063| v2063_10(void) = ReturnIndirection[#this] : &:r2063_7, m2063_8 +# 2063| v2063_11(void) = ReturnVoid : +# 2063| v2063_12(void) = AliasedUse : m2063_3 +# 2063| v2063_13(void) = ExitFunction : + +# 2066| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2066| Block 0 +# 2066| v2066_1(void) = EnterFunction : +# 2066| m2066_2(unknown) = AliasedDefinition : +# 2066| m2066_3(unknown) = InitializeNonLocal : +# 2066| m2066_4(unknown) = Chi : total:m2066_2, partial:m2066_3 +# 2066| r2066_5(glval<bool>) = VariableAddress[a] : +# 2066| m2066_6(bool) = InitializeParameter[a] : &:r2066_5 +# 2066| r2066_7(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2066| m2066_8(TernaryNonPodObj) = InitializeParameter[x] : &:r2066_7 +# 2066| r2066_9(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2066| m2066_10(TernaryNonPodObj) = InitializeParameter[y] : &:r2066_9 +# 2066| r2066_11(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2066| m2066_12(TernaryNonPodObj) = InitializeParameter[z] : &:r2066_11 +# 2067| r2067_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2067| r2067_2(glval<unknown>) = FunctionAddress[operator=] : +# 2067| r2067_3(glval<bool>) = VariableAddress[a] : +# 2067| r2067_4(bool) = Load[a] : &:r2067_3, m2066_6 +# 2067| v2067_5(void) = ConditionalBranch : r2067_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2020| Block 1 -# 2020| m2020_6(glval<TernaryNonPodObj>) = Phi : from 2:m2020_21, from 3:m2020_24 -# 2020| r2020_7(glval<unknown>) = VariableAddress[#temp2020:9] : -# 2020| r2020_8(glval<TernaryNonPodObj>) = Load[#temp2020:9] : &:r2020_7, m2020_6 -# 2020| r2020_9(glval<TernaryNonPodObj>) = Convert : r2020_8 -# 2020| r2020_10(TernaryNonPodObj &) = CopyValue : r2020_9 -# 2020| r2020_11(TernaryNonPodObj &) = Call[operator=] : func:r2020_2, this:r2020_1, 0:r2020_10 -# 2020| m2020_12(unknown) = ^CallSideEffect : ~m2019_4 -# 2020| m2020_13(unknown) = Chi : total:m2019_4, partial:m2020_12 -# 2020| v2020_14(void) = ^IndirectReadSideEffect[-1] : &:r2020_1, m2019_12 -# 2020| v2020_15(void) = ^BufferReadSideEffect[0] : &:r2020_10, ~m2020_13 -# 2020| m2020_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 -# 2020| m2020_17(TernaryNonPodObj) = Chi : total:m2019_12, partial:m2020_16 -# 2020| r2020_18(glval<TernaryNonPodObj>) = CopyValue : r2020_11 -# 2021| r2021_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2021| r2021_2(glval<unknown>) = FunctionAddress[operator=] : -# 2021| r2021_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| r2021_4(glval<bool>) = VariableAddress[a] : -# 2021| r2021_5(bool) = Load[a] : &:r2021_4, m2019_6 -# 2021| v2021_6(void) = ConditionalBranch : r2021_5 +# 2067| Block 1 +# 2067| m2067_6(glval<TernaryNonPodObj>) = Phi : from 2:m2067_21, from 3:m2067_24 +# 2067| r2067_7(glval<unknown>) = VariableAddress[#temp2067:9] : +# 2067| r2067_8(glval<TernaryNonPodObj>) = Load[#temp2067:9] : &:r2067_7, m2067_6 +# 2067| r2067_9(glval<TernaryNonPodObj>) = Convert : r2067_8 +# 2067| r2067_10(TernaryNonPodObj &) = CopyValue : r2067_9 +# 2067| r2067_11(TernaryNonPodObj &) = Call[operator=] : func:r2067_2, this:r2067_1, 0:r2067_10 +# 2067| m2067_12(unknown) = ^CallSideEffect : ~m2066_4 +# 2067| m2067_13(unknown) = Chi : total:m2066_4, partial:m2067_12 +# 2067| v2067_14(void) = ^IndirectReadSideEffect[-1] : &:r2067_1, m2066_12 +# 2067| v2067_15(void) = ^BufferReadSideEffect[0] : &:r2067_10, ~m2067_13 +# 2067| m2067_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2067_1 +# 2067| m2067_17(TernaryNonPodObj) = Chi : total:m2066_12, partial:m2067_16 +# 2067| r2067_18(glval<TernaryNonPodObj>) = CopyValue : r2067_11 +# 2068| r2068_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2068| r2068_2(glval<unknown>) = FunctionAddress[operator=] : +# 2068| r2068_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| r2068_4(glval<bool>) = VariableAddress[a] : +# 2068| r2068_5(bool) = Load[a] : &:r2068_4, m2066_6 +# 2068| v2068_6(void) = ConditionalBranch : r2068_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2020| Block 2 -# 2020| r2020_19(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2020| r2020_20(glval<unknown>) = VariableAddress[#temp2020:9] : -# 2020| m2020_21(glval<TernaryNonPodObj>) = Store[#temp2020:9] : &:r2020_20, r2020_19 +# 2067| Block 2 +# 2067| r2067_19(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2067| r2067_20(glval<unknown>) = VariableAddress[#temp2067:9] : +# 2067| m2067_21(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_20, r2067_19 #-----| Goto -> Block 1 -# 2020| Block 3 -# 2020| r2020_22(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2020| r2020_23(glval<unknown>) = VariableAddress[#temp2020:9] : -# 2020| m2020_24(glval<TernaryNonPodObj>) = Store[#temp2020:9] : &:r2020_23, r2020_22 +# 2067| Block 3 +# 2067| r2067_22(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2067| r2067_23(glval<unknown>) = VariableAddress[#temp2067:9] : +# 2067| m2067_24(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_23, r2067_22 #-----| Goto -> Block 1 -# 2021| Block 4 -# 2021| m2021_7(unknown) = Phi : from 5:~m2021_30, from 6:~m2021_42 -# 2021| m2021_8(TernaryNonPodObj) = Phi : from 5:m2021_36, from 6:m2021_47 -# 2021| r2021_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| r2021_10(TernaryNonPodObj) = Load[#temp2021:9] : &:r2021_9, m2021_8 -# 2021| m2021_11(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_3, r2021_10 -# 2021| r2021_12(glval<TernaryNonPodObj>) = Convert : r2021_3 -# 2021| r2021_13(TernaryNonPodObj &) = CopyValue : r2021_12 -# 2021| r2021_14(TernaryNonPodObj &) = Call[operator=] : func:r2021_2, this:r2021_1, 0:r2021_13 -# 2021| m2021_15(unknown) = ^CallSideEffect : ~m2021_7 -# 2021| m2021_16(unknown) = Chi : total:m2021_7, partial:m2021_15 -# 2021| v2021_17(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, m2020_17 -# 2021| v2021_18(void) = ^BufferReadSideEffect[0] : &:r2021_13, ~m2021_11 -# 2021| m2021_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 -# 2021| m2021_20(TernaryNonPodObj) = Chi : total:m2020_17, partial:m2021_19 -# 2021| r2021_21(glval<TernaryNonPodObj>) = CopyValue : r2021_14 -# 2022| r2022_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2022| r2022_2(glval<unknown>) = FunctionAddress[operator=] : -# 2022| r2022_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| r2022_4(glval<bool>) = VariableAddress[a] : -# 2022| r2022_5(bool) = Load[a] : &:r2022_4, m2019_6 -# 2022| v2022_6(void) = ConditionalBranch : r2022_5 +# 2068| Block 4 +# 2068| m2068_7(unknown) = Phi : from 5:~m2068_30, from 6:~m2068_42 +# 2068| m2068_8(TernaryNonPodObj) = Phi : from 5:m2068_36, from 6:m2068_47 +# 2068| r2068_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| r2068_10(TernaryNonPodObj) = Load[#temp2068:9] : &:r2068_9, m2068_8 +# 2068| m2068_11(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_3, r2068_10 +# 2068| r2068_12(glval<TernaryNonPodObj>) = Convert : r2068_3 +# 2068| r2068_13(TernaryNonPodObj &) = CopyValue : r2068_12 +# 2068| r2068_14(TernaryNonPodObj &) = Call[operator=] : func:r2068_2, this:r2068_1, 0:r2068_13 +# 2068| m2068_15(unknown) = ^CallSideEffect : ~m2068_7 +# 2068| m2068_16(unknown) = Chi : total:m2068_7, partial:m2068_15 +# 2068| v2068_17(void) = ^IndirectReadSideEffect[-1] : &:r2068_1, m2067_17 +# 2068| v2068_18(void) = ^BufferReadSideEffect[0] : &:r2068_13, ~m2068_11 +# 2068| m2068_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_1 +# 2068| m2068_20(TernaryNonPodObj) = Chi : total:m2067_17, partial:m2068_19 +# 2068| r2068_21(glval<TernaryNonPodObj>) = CopyValue : r2068_14 +# 2069| r2069_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2069| r2069_2(glval<unknown>) = FunctionAddress[operator=] : +# 2069| r2069_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| r2069_4(glval<bool>) = VariableAddress[a] : +# 2069| r2069_5(bool) = Load[a] : &:r2069_4, m2066_6 +# 2069| v2069_6(void) = ConditionalBranch : r2069_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2021| Block 5 -# 2021| r2021_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:13] : -# 2021| m2021_23(TernaryNonPodObj) = Uninitialized[#temp2021:13] : &:r2021_22 -# 2021| r2021_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2021| r2021_25(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2021| r2021_26(glval<TernaryNonPodObj>) = Convert : r2021_25 -# 2021| r2021_27(TernaryNonPodObj &) = CopyValue : r2021_26 -# 2021| v2021_28(void) = Call[TernaryNonPodObj] : func:r2021_24, this:r2021_22, 0:r2021_27 -# 2021| m2021_29(unknown) = ^CallSideEffect : ~m2020_13 -# 2021| m2021_30(unknown) = Chi : total:m2020_13, partial:m2021_29 -# 2021| v2021_31(void) = ^BufferReadSideEffect[0] : &:r2021_27, ~m2019_8 -# 2021| m2021_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_22 -# 2021| m2021_33(TernaryNonPodObj) = Chi : total:m2021_23, partial:m2021_32 -# 2021| r2021_34(TernaryNonPodObj) = Load[#temp2021:13] : &:r2021_22, m2021_33 -# 2021| r2021_35(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| m2021_36(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_35, r2021_34 +# 2068| Block 5 +# 2068| r2068_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:13] : +# 2068| m2068_23(TernaryNonPodObj) = Uninitialized[#temp2068:13] : &:r2068_22 +# 2068| r2068_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2068| r2068_25(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2068| r2068_26(glval<TernaryNonPodObj>) = Convert : r2068_25 +# 2068| r2068_27(TernaryNonPodObj &) = CopyValue : r2068_26 +# 2068| v2068_28(void) = Call[TernaryNonPodObj] : func:r2068_24, this:r2068_22, 0:r2068_27 +# 2068| m2068_29(unknown) = ^CallSideEffect : ~m2067_13 +# 2068| m2068_30(unknown) = Chi : total:m2067_13, partial:m2068_29 +# 2068| v2068_31(void) = ^BufferReadSideEffect[0] : &:r2068_27, ~m2066_8 +# 2068| m2068_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_22 +# 2068| m2068_33(TernaryNonPodObj) = Chi : total:m2068_23, partial:m2068_32 +# 2068| r2068_34(TernaryNonPodObj) = Load[#temp2068:13] : &:r2068_22, m2068_33 +# 2068| r2068_35(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| m2068_36(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_35, r2068_34 #-----| Goto -> Block 4 -# 2021| Block 6 -# 2021| r2021_37(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:17] : -# 2021| m2021_38(TernaryNonPodObj) = Uninitialized[#temp2021:17] : &:r2021_37 -# 2021| r2021_39(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2021| v2021_40(void) = Call[TernaryNonPodObj] : func:r2021_39, this:r2021_37 -# 2021| m2021_41(unknown) = ^CallSideEffect : ~m2020_13 -# 2021| m2021_42(unknown) = Chi : total:m2020_13, partial:m2021_41 -# 2021| m2021_43(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_37 -# 2021| m2021_44(TernaryNonPodObj) = Chi : total:m2021_38, partial:m2021_43 -# 2021| r2021_45(TernaryNonPodObj) = Load[#temp2021:17] : &:r2021_37, m2021_44 -# 2021| r2021_46(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| m2021_47(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_46, r2021_45 +# 2068| Block 6 +# 2068| r2068_37(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:17] : +# 2068| m2068_38(TernaryNonPodObj) = Uninitialized[#temp2068:17] : &:r2068_37 +# 2068| r2068_39(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2068| v2068_40(void) = Call[TernaryNonPodObj] : func:r2068_39, this:r2068_37 +# 2068| m2068_41(unknown) = ^CallSideEffect : ~m2067_13 +# 2068| m2068_42(unknown) = Chi : total:m2067_13, partial:m2068_41 +# 2068| m2068_43(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_37 +# 2068| m2068_44(TernaryNonPodObj) = Chi : total:m2068_38, partial:m2068_43 +# 2068| r2068_45(TernaryNonPodObj) = Load[#temp2068:17] : &:r2068_37, m2068_44 +# 2068| r2068_46(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| m2068_47(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_46, r2068_45 #-----| Goto -> Block 4 -# 2022| Block 7 -# 2022| m2022_7(unknown) = Phi : from 8:~m2022_27, from 9:~m2022_38 -# 2022| m2022_8(TernaryNonPodObj) = Phi : from 8:m2022_32, from 9:m2022_43 -# 2022| r2022_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| r2022_10(TernaryNonPodObj) = Load[#temp2022:9] : &:r2022_9, m2022_8 -# 2022| m2022_11(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_3, r2022_10 -# 2022| r2022_12(glval<TernaryNonPodObj>) = Convert : r2022_3 -# 2022| r2022_13(TernaryNonPodObj &) = CopyValue : r2022_12 -# 2022| r2022_14(TernaryNonPodObj &) = Call[operator=] : func:r2022_2, this:r2022_1, 0:r2022_13 -# 2022| m2022_15(unknown) = ^CallSideEffect : ~m2022_7 -# 2022| m2022_16(unknown) = Chi : total:m2022_7, partial:m2022_15 -# 2022| v2022_17(void) = ^IndirectReadSideEffect[-1] : &:r2022_1, m2021_20 -# 2022| v2022_18(void) = ^BufferReadSideEffect[0] : &:r2022_13, ~m2022_11 -# 2022| m2022_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_1 -# 2022| m2022_20(TernaryNonPodObj) = Chi : total:m2021_20, partial:m2022_19 -# 2022| r2022_21(glval<TernaryNonPodObj>) = CopyValue : r2022_14 -# 2023| r2023_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2023| r2023_2(glval<unknown>) = FunctionAddress[operator=] : -# 2023| r2023_3(glval<bool>) = VariableAddress[a] : -# 2023| r2023_4(bool) = Load[a] : &:r2023_3, m2019_6 -# 2023| v2023_5(void) = ConditionalBranch : r2023_4 +# 2069| Block 7 +# 2069| m2069_7(unknown) = Phi : from 8:~m2069_27, from 9:~m2069_38 +# 2069| m2069_8(TernaryNonPodObj) = Phi : from 8:m2069_32, from 9:m2069_43 +# 2069| r2069_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| r2069_10(TernaryNonPodObj) = Load[#temp2069:9] : &:r2069_9, m2069_8 +# 2069| m2069_11(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_3, r2069_10 +# 2069| r2069_12(glval<TernaryNonPodObj>) = Convert : r2069_3 +# 2069| r2069_13(TernaryNonPodObj &) = CopyValue : r2069_12 +# 2069| r2069_14(TernaryNonPodObj &) = Call[operator=] : func:r2069_2, this:r2069_1, 0:r2069_13 +# 2069| m2069_15(unknown) = ^CallSideEffect : ~m2069_7 +# 2069| m2069_16(unknown) = Chi : total:m2069_7, partial:m2069_15 +# 2069| v2069_17(void) = ^IndirectReadSideEffect[-1] : &:r2069_1, m2068_20 +# 2069| v2069_18(void) = ^BufferReadSideEffect[0] : &:r2069_13, ~m2069_11 +# 2069| m2069_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_1 +# 2069| m2069_20(TernaryNonPodObj) = Chi : total:m2068_20, partial:m2069_19 +# 2069| r2069_21(glval<TernaryNonPodObj>) = CopyValue : r2069_14 +# 2070| r2070_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2070| r2070_2(glval<unknown>) = FunctionAddress[operator=] : +# 2070| r2070_3(glval<bool>) = VariableAddress[a] : +# 2070| r2070_4(bool) = Load[a] : &:r2070_3, m2066_6 +# 2070| v2070_5(void) = ConditionalBranch : r2070_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2022| Block 8 -# 2022| r2022_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:13] : -# 2022| m2022_23(TernaryNonPodObj) = Uninitialized[#temp2022:13] : &:r2022_22 -# 2022| r2022_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2022| v2022_25(void) = Call[TernaryNonPodObj] : func:r2022_24, this:r2022_22 -# 2022| m2022_26(unknown) = ^CallSideEffect : ~m2021_16 -# 2022| m2022_27(unknown) = Chi : total:m2021_16, partial:m2022_26 -# 2022| m2022_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_22 -# 2022| m2022_29(TernaryNonPodObj) = Chi : total:m2022_23, partial:m2022_28 -# 2022| r2022_30(TernaryNonPodObj) = Load[#temp2022:13] : &:r2022_22, m2022_29 -# 2022| r2022_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| m2022_32(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_31, r2022_30 +# 2069| Block 8 +# 2069| r2069_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:13] : +# 2069| m2069_23(TernaryNonPodObj) = Uninitialized[#temp2069:13] : &:r2069_22 +# 2069| r2069_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2069| v2069_25(void) = Call[TernaryNonPodObj] : func:r2069_24, this:r2069_22 +# 2069| m2069_26(unknown) = ^CallSideEffect : ~m2068_16 +# 2069| m2069_27(unknown) = Chi : total:m2068_16, partial:m2069_26 +# 2069| m2069_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_22 +# 2069| m2069_29(TernaryNonPodObj) = Chi : total:m2069_23, partial:m2069_28 +# 2069| r2069_30(TernaryNonPodObj) = Load[#temp2069:13] : &:r2069_22, m2069_29 +# 2069| r2069_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| m2069_32(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_31, r2069_30 #-----| Goto -> Block 7 -# 2022| Block 9 -# 2022| r2022_33(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:34] : -# 2022| m2022_34(TernaryNonPodObj) = Uninitialized[#temp2022:34] : &:r2022_33 -# 2022| r2022_35(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2022| v2022_36(void) = Call[TernaryNonPodObj] : func:r2022_35, this:r2022_33 -# 2022| m2022_37(unknown) = ^CallSideEffect : ~m2021_16 -# 2022| m2022_38(unknown) = Chi : total:m2021_16, partial:m2022_37 -# 2022| m2022_39(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_33 -# 2022| m2022_40(TernaryNonPodObj) = Chi : total:m2022_34, partial:m2022_39 -# 2022| r2022_41(TernaryNonPodObj) = Load[#temp2022:34] : &:r2022_33, m2022_40 -# 2022| r2022_42(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| m2022_43(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_42, r2022_41 +# 2069| Block 9 +# 2069| r2069_33(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:34] : +# 2069| m2069_34(TernaryNonPodObj) = Uninitialized[#temp2069:34] : &:r2069_33 +# 2069| r2069_35(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2069| v2069_36(void) = Call[TernaryNonPodObj] : func:r2069_35, this:r2069_33 +# 2069| m2069_37(unknown) = ^CallSideEffect : ~m2068_16 +# 2069| m2069_38(unknown) = Chi : total:m2068_16, partial:m2069_37 +# 2069| m2069_39(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_33 +# 2069| m2069_40(TernaryNonPodObj) = Chi : total:m2069_34, partial:m2069_39 +# 2069| r2069_41(TernaryNonPodObj) = Load[#temp2069:34] : &:r2069_33, m2069_40 +# 2069| r2069_42(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| m2069_43(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_42, r2069_41 #-----| Goto -> Block 7 -# 2023| Block 10 -# 2023| m2023_6(glval<TernaryNonPodObj>) = Phi : from 11:m2023_40, from 12:m2023_43 -# 2023| r2023_7(glval<unknown>) = VariableAddress[#temp2023:10] : -# 2023| r2023_8(glval<TernaryNonPodObj>) = Load[#temp2023:10] : &:r2023_7, m2023_6 -# 2023| r2023_9(glval<TernaryNonPodObj>) = Convert : r2023_8 -# 2023| r2023_10(TernaryNonPodObj &) = CopyValue : r2023_9 -# 2023| r2023_11(TernaryNonPodObj &) = Call[operator=] : func:r2023_2, this:r2023_1, 0:r2023_10 -# 2023| m2023_12(unknown) = ^CallSideEffect : ~m2022_16 -# 2023| m2023_13(unknown) = Chi : total:m2022_16, partial:m2023_12 -# 2023| v2023_14(void) = ^IndirectReadSideEffect[-1] : &:r2023_1, m2022_20 -# 2023| v2023_15(void) = ^BufferReadSideEffect[0] : &:r2023_10, ~m2023_13 -# 2023| m2023_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_1 -# 2023| m2023_17(TernaryNonPodObj) = Chi : total:m2022_20, partial:m2023_16 -# 2023| r2023_18(glval<TernaryNonPodObj>) = CopyValue : r2023_11 -# 2023| r2023_19(glval<unknown>) = FunctionAddress[operator=] : -# 2023| r2023_20(glval<TernaryNonPodObj>) = VariableAddress[#temp2023:23] : -# 2023| m2023_21(TernaryNonPodObj) = Uninitialized[#temp2023:23] : &:r2023_20 -# 2023| r2023_22(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2023| v2023_23(void) = Call[TernaryNonPodObj] : func:r2023_22, this:r2023_20 -# 2023| m2023_24(unknown) = ^CallSideEffect : ~m2023_13 -# 2023| m2023_25(unknown) = Chi : total:m2023_13, partial:m2023_24 -# 2023| m2023_26(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_20 -# 2023| m2023_27(TernaryNonPodObj) = Chi : total:m2023_21, partial:m2023_26 -# 2023| r2023_28(glval<TernaryNonPodObj>) = Convert : r2023_20 -# 2023| r2023_29(TernaryNonPodObj &) = CopyValue : r2023_28 -# 2023| r2023_30(TernaryNonPodObj &) = Call[operator=] : func:r2023_19, this:r2023_18, 0:r2023_29 -# 2023| m2023_31(unknown) = ^CallSideEffect : ~m2023_25 -# 2023| m2023_32(unknown) = Chi : total:m2023_25, partial:m2023_31 -# 2023| v2023_33(void) = ^IndirectReadSideEffect[-1] : &:r2023_18, m2023_17 -# 2023| v2023_34(void) = ^BufferReadSideEffect[0] : &:r2023_29, ~m2023_27 -# 2023| m2023_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_18 -# 2023| m2023_36(TernaryNonPodObj) = Chi : total:m2023_17, partial:m2023_35 -# 2023| r2023_37(glval<TernaryNonPodObj>) = CopyValue : r2023_30 -# 2024| v2024_1(void) = NoOp : -# 2019| v2019_13(void) = ReturnVoid : -# 2019| v2019_14(void) = AliasedUse : ~m2023_32 -# 2019| v2019_15(void) = ExitFunction : - -# 2023| Block 11 -# 2023| r2023_38(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2023| r2023_39(glval<unknown>) = VariableAddress[#temp2023:10] : -# 2023| m2023_40(glval<TernaryNonPodObj>) = Store[#temp2023:10] : &:r2023_39, r2023_38 +# 2070| Block 10 +# 2070| m2070_6(glval<TernaryNonPodObj>) = Phi : from 11:m2070_40, from 12:m2070_43 +# 2070| r2070_7(glval<unknown>) = VariableAddress[#temp2070:10] : +# 2070| r2070_8(glval<TernaryNonPodObj>) = Load[#temp2070:10] : &:r2070_7, m2070_6 +# 2070| r2070_9(glval<TernaryNonPodObj>) = Convert : r2070_8 +# 2070| r2070_10(TernaryNonPodObj &) = CopyValue : r2070_9 +# 2070| r2070_11(TernaryNonPodObj &) = Call[operator=] : func:r2070_2, this:r2070_1, 0:r2070_10 +# 2070| m2070_12(unknown) = ^CallSideEffect : ~m2069_16 +# 2070| m2070_13(unknown) = Chi : total:m2069_16, partial:m2070_12 +# 2070| v2070_14(void) = ^IndirectReadSideEffect[-1] : &:r2070_1, m2069_20 +# 2070| v2070_15(void) = ^BufferReadSideEffect[0] : &:r2070_10, ~m2070_13 +# 2070| m2070_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_1 +# 2070| m2070_17(TernaryNonPodObj) = Chi : total:m2069_20, partial:m2070_16 +# 2070| r2070_18(glval<TernaryNonPodObj>) = CopyValue : r2070_11 +# 2070| r2070_19(glval<unknown>) = FunctionAddress[operator=] : +# 2070| r2070_20(glval<TernaryNonPodObj>) = VariableAddress[#temp2070:23] : +# 2070| m2070_21(TernaryNonPodObj) = Uninitialized[#temp2070:23] : &:r2070_20 +# 2070| r2070_22(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2070| v2070_23(void) = Call[TernaryNonPodObj] : func:r2070_22, this:r2070_20 +# 2070| m2070_24(unknown) = ^CallSideEffect : ~m2070_13 +# 2070| m2070_25(unknown) = Chi : total:m2070_13, partial:m2070_24 +# 2070| m2070_26(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_20 +# 2070| m2070_27(TernaryNonPodObj) = Chi : total:m2070_21, partial:m2070_26 +# 2070| r2070_28(glval<TernaryNonPodObj>) = Convert : r2070_20 +# 2070| r2070_29(TernaryNonPodObj &) = CopyValue : r2070_28 +# 2070| r2070_30(TernaryNonPodObj &) = Call[operator=] : func:r2070_19, this:r2070_18, 0:r2070_29 +# 2070| m2070_31(unknown) = ^CallSideEffect : ~m2070_25 +# 2070| m2070_32(unknown) = Chi : total:m2070_25, partial:m2070_31 +# 2070| v2070_33(void) = ^IndirectReadSideEffect[-1] : &:r2070_18, m2070_17 +# 2070| v2070_34(void) = ^BufferReadSideEffect[0] : &:r2070_29, ~m2070_27 +# 2070| m2070_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_18 +# 2070| m2070_36(TernaryNonPodObj) = Chi : total:m2070_17, partial:m2070_35 +# 2070| r2070_37(glval<TernaryNonPodObj>) = CopyValue : r2070_30 +# 2071| v2071_1(void) = NoOp : +# 2066| v2066_13(void) = ReturnVoid : +# 2066| v2066_14(void) = AliasedUse : ~m2070_32 +# 2066| v2066_15(void) = ExitFunction : + +# 2070| Block 11 +# 2070| r2070_38(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2070| r2070_39(glval<unknown>) = VariableAddress[#temp2070:10] : +# 2070| m2070_40(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_39, r2070_38 #-----| Goto -> Block 10 -# 2023| Block 12 -# 2023| r2023_41(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2023| r2023_42(glval<unknown>) = VariableAddress[#temp2023:10] : -# 2023| m2023_43(glval<TernaryNonPodObj>) = Store[#temp2023:10] : &:r2023_42, r2023_41 +# 2070| Block 12 +# 2070| r2070_41(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2070| r2070_42(glval<unknown>) = VariableAddress[#temp2070:10] : +# 2070| m2070_43(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_42, r2070_41 #-----| Goto -> Block 10 -# 2028| unsigned int CommaTest(unsigned int) -# 2028| Block 0 -# 2028| v2028_1(void) = EnterFunction : -# 2028| m2028_2(unknown) = AliasedDefinition : -# 2028| m2028_3(unknown) = InitializeNonLocal : -# 2028| m2028_4(unknown) = Chi : total:m2028_2, partial:m2028_3 -# 2028| r2028_5(glval<unsigned int>) = VariableAddress[x] : -# 2028| m2028_6(unsigned int) = InitializeParameter[x] : &:r2028_5 -# 2029| r2029_1(glval<unsigned int>) = VariableAddress[y] : -# 2029| m2029_2(unsigned int) = Uninitialized[y] : &:r2029_1 -# 2030| r2030_1(glval<unsigned int>) = VariableAddress[x] : -# 2030| r2030_2(unsigned int) = Load[x] : &:r2030_1, m2028_6 -# 2030| r2030_3(unsigned int) = Constant[100] : -# 2030| r2030_4(bool) = CompareLT : r2030_2, r2030_3 -# 2030| v2030_5(void) = ConditionalBranch : r2030_4 +# 2075| unsigned int CommaTest(unsigned int) +# 2075| Block 0 +# 2075| v2075_1(void) = EnterFunction : +# 2075| m2075_2(unknown) = AliasedDefinition : +# 2075| m2075_3(unknown) = InitializeNonLocal : +# 2075| m2075_4(unknown) = Chi : total:m2075_2, partial:m2075_3 +# 2075| r2075_5(glval<unsigned int>) = VariableAddress[x] : +# 2075| m2075_6(unsigned int) = InitializeParameter[x] : &:r2075_5 +# 2076| r2076_1(glval<unsigned int>) = VariableAddress[y] : +# 2076| m2076_2(unsigned int) = Uninitialized[y] : &:r2076_1 +# 2077| r2077_1(glval<unsigned int>) = VariableAddress[x] : +# 2077| r2077_2(unsigned int) = Load[x] : &:r2077_1, m2075_6 +# 2077| r2077_3(unsigned int) = Constant[100] : +# 2077| r2077_4(bool) = CompareLT : r2077_2, r2077_3 +# 2077| v2077_5(void) = ConditionalBranch : r2077_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2030| Block 1 -# 2030| m2030_6(unknown) = Phi : from 2:~m2031_6, from 3:~m2032_6 -# 2030| m2030_7(unsigned int) = Phi : from 2:m2030_13, from 3:m2030_15 -# 2030| r2030_8(glval<unsigned int>) = VariableAddress[#temp2030:7] : -# 2030| r2030_9(unsigned int) = Load[#temp2030:7] : &:r2030_8, m2030_7 -# 2030| r2030_10(glval<unsigned int>) = VariableAddress[y] : -# 2030| m2030_11(unsigned int) = Store[y] : &:r2030_10, r2030_9 -# 2033| r2033_1(glval<unsigned int>) = VariableAddress[#return] : -# 2033| m2033_2(unsigned int) = Uninitialized[#return] : &:r2033_1 -# 2028| r2028_7(glval<unsigned int>) = VariableAddress[#return] : -# 2028| v2028_8(void) = ReturnValue : &:r2028_7, m2033_2 -# 2028| v2028_9(void) = AliasedUse : ~m2030_6 -# 2028| v2028_10(void) = ExitFunction : - -# 2031| Block 2 -# 2031| r2031_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2031| r2031_2(glval<unsigned int>) = VariableAddress[x] : -# 2031| r2031_3(unsigned int) = Load[x] : &:r2031_2, m2028_6 -# 2031| v2031_4(void) = Call[CommaTestHelper] : func:r2031_1, 0:r2031_3 -# 2031| m2031_5(unknown) = ^CallSideEffect : ~m2028_4 -# 2031| m2031_6(unknown) = Chi : total:m2028_4, partial:m2031_5 -# 2031| r2031_7(glval<unsigned int>) = VariableAddress[x] : -# 2031| r2031_8(unsigned int) = Load[x] : &:r2031_7, m2028_6 -# 2031| r2031_9(unsigned int) = CopyValue : r2031_8 -# 2030| r2030_12(glval<unsigned int>) = VariableAddress[#temp2030:7] : -# 2030| m2030_13(unsigned int) = Store[#temp2030:7] : &:r2030_12, r2031_9 +# 2077| Block 1 +# 2077| m2077_6(unknown) = Phi : from 2:~m2078_6, from 3:~m2079_6 +# 2077| m2077_7(unsigned int) = Phi : from 2:m2077_13, from 3:m2077_15 +# 2077| r2077_8(glval<unsigned int>) = VariableAddress[#temp2077:7] : +# 2077| r2077_9(unsigned int) = Load[#temp2077:7] : &:r2077_8, m2077_7 +# 2077| r2077_10(glval<unsigned int>) = VariableAddress[y] : +# 2077| m2077_11(unsigned int) = Store[y] : &:r2077_10, r2077_9 +# 2080| r2080_1(glval<unsigned int>) = VariableAddress[#return] : +# 2080| m2080_2(unsigned int) = Uninitialized[#return] : &:r2080_1 +# 2075| r2075_7(glval<unsigned int>) = VariableAddress[#return] : +# 2075| v2075_8(void) = ReturnValue : &:r2075_7, m2080_2 +# 2075| v2075_9(void) = AliasedUse : ~m2077_6 +# 2075| v2075_10(void) = ExitFunction : + +# 2078| Block 2 +# 2078| r2078_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2078| r2078_2(glval<unsigned int>) = VariableAddress[x] : +# 2078| r2078_3(unsigned int) = Load[x] : &:r2078_2, m2075_6 +# 2078| v2078_4(void) = Call[CommaTestHelper] : func:r2078_1, 0:r2078_3 +# 2078| m2078_5(unknown) = ^CallSideEffect : ~m2075_4 +# 2078| m2078_6(unknown) = Chi : total:m2075_4, partial:m2078_5 +# 2078| r2078_7(glval<unsigned int>) = VariableAddress[x] : +# 2078| r2078_8(unsigned int) = Load[x] : &:r2078_7, m2075_6 +# 2078| r2078_9(unsigned int) = CopyValue : r2078_8 +# 2077| r2077_12(glval<unsigned int>) = VariableAddress[#temp2077:7] : +# 2077| m2077_13(unsigned int) = Store[#temp2077:7] : &:r2077_12, r2078_9 #-----| Goto -> Block 1 -# 2032| Block 3 -# 2032| r2032_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2032| r2032_2(glval<unsigned int>) = VariableAddress[x] : -# 2032| r2032_3(unsigned int) = Load[x] : &:r2032_2, m2028_6 -# 2032| v2032_4(void) = Call[CommaTestHelper] : func:r2032_1, 0:r2032_3 -# 2032| m2032_5(unknown) = ^CallSideEffect : ~m2028_4 -# 2032| m2032_6(unknown) = Chi : total:m2028_4, partial:m2032_5 -# 2032| r2032_7(int) = Constant[10] : -# 2032| r2032_8(int) = CopyValue : r2032_7 -# 2032| r2032_9(unsigned int) = Convert : r2032_8 -# 2030| r2030_14(glval<unsigned int>) = VariableAddress[#temp2030:7] : -# 2030| m2030_15(unsigned int) = Store[#temp2030:7] : &:r2030_14, r2032_9 +# 2079| Block 3 +# 2079| r2079_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2079| r2079_2(glval<unsigned int>) = VariableAddress[x] : +# 2079| r2079_3(unsigned int) = Load[x] : &:r2079_2, m2075_6 +# 2079| v2079_4(void) = Call[CommaTestHelper] : func:r2079_1, 0:r2079_3 +# 2079| m2079_5(unknown) = ^CallSideEffect : ~m2075_4 +# 2079| m2079_6(unknown) = Chi : total:m2075_4, partial:m2079_5 +# 2079| r2079_7(int) = Constant[10] : +# 2079| r2079_8(int) = CopyValue : r2079_7 +# 2079| r2079_9(unsigned int) = Convert : r2079_8 +# 2077| r2077_14(glval<unsigned int>) = VariableAddress[#temp2077:7] : +# 2077| m2077_15(unsigned int) = Store[#temp2077:7] : &:r2077_14, r2079_9 #-----| Goto -> Block 1 -# 2035| void NewDeleteMem() -# 2035| Block 0 -# 2035| v2035_1(void) = EnterFunction : -# 2035| m2035_2(unknown) = AliasedDefinition : -# 2035| m2035_3(unknown) = InitializeNonLocal : -# 2035| m2035_4(unknown) = Chi : total:m2035_2, partial:m2035_3 -# 2036| r2036_1(glval<int *>) = VariableAddress[x] : -# 2036| r2036_2(glval<unknown>) = FunctionAddress[operator new] : -# 2036| r2036_3(unsigned long) = Constant[4] : -# 2036| r2036_4(void *) = Call[operator new] : func:r2036_2, 0:r2036_3 -# 2036| m2036_5(unknown) = ^CallSideEffect : ~m2035_4 -# 2036| m2036_6(unknown) = Chi : total:m2035_4, partial:m2036_5 -# 2036| m2036_7(unknown) = ^InitializeDynamicAllocation : &:r2036_4 -# 2036| r2036_8(int *) = Convert : r2036_4 -# 2036| m2036_9(int *) = Store[x] : &:r2036_1, r2036_8 -# 2037| r2037_1(int) = Constant[6] : -# 2037| r2037_2(glval<int *>) = VariableAddress[x] : -# 2037| r2037_3(int *) = Load[x] : &:r2037_2, m2036_9 -# 2037| r2037_4(glval<int>) = CopyValue : r2037_3 -# 2037| m2037_5(int) = Store[?] : &:r2037_4, r2037_1 -# 2037| m2037_6(unknown) = Chi : total:m2036_7, partial:m2037_5 -# 2038| r2038_1(glval<unknown>) = FunctionAddress[operator delete] : -# 2038| r2038_2(glval<int *>) = VariableAddress[x] : -# 2038| r2038_3(int *) = Load[x] : &:r2038_2, m2036_9 -# 2038| v2038_4(void) = Call[operator delete] : func:r2038_1, 0:r2038_3 -# 2038| m2038_5(unknown) = ^CallSideEffect : ~m2036_6 -# 2038| m2038_6(unknown) = Chi : total:m2036_6, partial:m2038_5 -# 2039| v2039_1(void) = NoOp : -# 2035| v2035_5(void) = ReturnVoid : -# 2035| v2035_6(void) = AliasedUse : ~m2038_6 -# 2035| v2035_7(void) = ExitFunction : - -# 2041| void Base2::Base2() -# 2041| Block 0 -# 2041| v2041_1(void) = EnterFunction : -# 2041| m2041_2(unknown) = AliasedDefinition : -# 2041| m2041_3(unknown) = InitializeNonLocal : -# 2041| m2041_4(unknown) = Chi : total:m2041_2, partial:m2041_3 -# 2041| r2041_5(glval<unknown>) = VariableAddress[#this] : -# 2041| m2041_6(glval<Base2>) = InitializeParameter[#this] : &:r2041_5 -# 2041| r2041_7(glval<Base2>) = Load[#this] : &:r2041_5, m2041_6 -# 2041| m2041_8(Base2) = InitializeIndirection[#this] : &:r2041_7 -# 2041| v2041_9(void) = NoOp : -# 2041| v2041_10(void) = ReturnIndirection[#this] : &:r2041_7, m2041_8 -# 2041| v2041_11(void) = ReturnVoid : -# 2041| v2041_12(void) = AliasedUse : m2041_3 -# 2041| v2041_13(void) = ExitFunction : - -# 2043| void Base2::operator delete(void*) -# 2043| Block 0 -# 2043| v2043_1(void) = EnterFunction : -# 2043| m2043_2(unknown) = AliasedDefinition : -# 2043| m2043_3(unknown) = InitializeNonLocal : -# 2043| m2043_4(unknown) = Chi : total:m2043_2, partial:m2043_3 -# 2043| r2043_5(glval<void *>) = VariableAddress[p] : -# 2043| m2043_6(void *) = InitializeParameter[p] : &:r2043_5 -# 2043| r2043_7(void *) = Load[p] : &:r2043_5, m2043_6 -# 2043| m2043_8(unknown) = InitializeIndirection[p] : &:r2043_7 -# 2044| v2044_1(void) = NoOp : -# 2043| v2043_9(void) = ReturnIndirection[p] : &:r2043_7, m2043_8 -# 2043| v2043_10(void) = ReturnVoid : -# 2043| v2043_11(void) = AliasedUse : m2043_3 -# 2043| v2043_12(void) = ExitFunction : - -# 2045| void Base2::~Base2() -# 2045| Block 0 -# 2045| v2045_1(void) = EnterFunction : -# 2045| m2045_2(unknown) = AliasedDefinition : -# 2045| m2045_3(unknown) = InitializeNonLocal : -# 2045| m2045_4(unknown) = Chi : total:m2045_2, partial:m2045_3 -# 2045| r2045_5(glval<unknown>) = VariableAddress[#this] : -# 2045| m2045_6(glval<Base2>) = InitializeParameter[#this] : &:r2045_5 -# 2045| r2045_7(glval<Base2>) = Load[#this] : &:r2045_5, m2045_6 -# 2045| m2045_8(Base2) = InitializeIndirection[#this] : &:r2045_7 -# 2045| v2045_9(void) = NoOp : -# 2045| v2045_10(void) = ReturnIndirection[#this] : &:r2045_7, m2045_8 -# 2045| v2045_11(void) = ReturnVoid : -# 2045| v2045_12(void) = AliasedUse : m2045_3 -# 2045| v2045_13(void) = ExitFunction : - -# 2048| void Derived2::Derived2() -# 2048| Block 0 -# 2048| v2048_1(void) = EnterFunction : -# 2048| m2048_2(unknown) = AliasedDefinition : -# 2048| m2048_3(unknown) = InitializeNonLocal : -# 2048| m2048_4(unknown) = Chi : total:m2048_2, partial:m2048_3 -# 2048| r2048_5(glval<unknown>) = VariableAddress[#this] : -# 2048| m2048_6(glval<Derived2>) = InitializeParameter[#this] : &:r2048_5 -# 2048| r2048_7(glval<Derived2>) = Load[#this] : &:r2048_5, m2048_6 -# 2048| m2048_8(Derived2) = InitializeIndirection[#this] : &:r2048_7 -# 2048| r2048_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2048_6 -# 2048| r2048_10(glval<unknown>) = FunctionAddress[Base2] : -# 2048| v2048_11(void) = Call[Base2] : func:r2048_10, this:r2048_9 -# 2048| m2048_12(unknown) = ^CallSideEffect : ~m2048_4 -# 2048| m2048_13(unknown) = Chi : total:m2048_4, partial:m2048_12 -# 2048| m2048_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2048_9 -# 2048| m2048_15(unknown) = Chi : total:m2048_8, partial:m2048_14 -# 2048| v2048_16(void) = NoOp : -# 2048| v2048_17(void) = ReturnIndirection[#this] : &:r2048_7, m2048_15 -# 2048| v2048_18(void) = ReturnVoid : -# 2048| v2048_19(void) = AliasedUse : ~m2048_13 -# 2048| v2048_20(void) = ExitFunction : - -# 2051| void Derived2::~Derived2() -# 2051| Block 0 -# 2051| v2051_1(void) = EnterFunction : -# 2051| m2051_2(unknown) = AliasedDefinition : -# 2051| m2051_3(unknown) = InitializeNonLocal : -# 2051| m2051_4(unknown) = Chi : total:m2051_2, partial:m2051_3 -# 2051| r2051_5(glval<unknown>) = VariableAddress[#this] : -# 2051| m2051_6(glval<Derived2>) = InitializeParameter[#this] : &:r2051_5 -# 2051| r2051_7(glval<Derived2>) = Load[#this] : &:r2051_5, m2051_6 -# 2051| m2051_8(Derived2) = InitializeIndirection[#this] : &:r2051_7 -# 2051| v2051_9(void) = NoOp : -# 2051| r2051_10(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2051_6 -# 2051| r2051_11(glval<unknown>) = FunctionAddress[~Base2] : -# 2051| v2051_12(void) = Call[~Base2] : func:r2051_11, this:r2051_10 -# 2051| m2051_13(unknown) = ^CallSideEffect : ~m2051_4 -# 2051| m2051_14(unknown) = Chi : total:m2051_4, partial:m2051_13 -# 2051| v2051_15(void) = ReturnIndirection[#this] : &:r2051_7, m2051_8 -# 2051| v2051_16(void) = ReturnVoid : -# 2051| v2051_17(void) = AliasedUse : ~m2051_14 -# 2051| v2051_18(void) = ExitFunction : - -# 2053| void Derived2::operator delete(void*) -# 2053| Block 0 -# 2053| v2053_1(void) = EnterFunction : -# 2053| m2053_2(unknown) = AliasedDefinition : -# 2053| m2053_3(unknown) = InitializeNonLocal : -# 2053| m2053_4(unknown) = Chi : total:m2053_2, partial:m2053_3 -# 2053| r2053_5(glval<void *>) = VariableAddress[p] : -# 2053| m2053_6(void *) = InitializeParameter[p] : &:r2053_5 -# 2053| r2053_7(void *) = Load[p] : &:r2053_5, m2053_6 -# 2053| m2053_8(unknown) = InitializeIndirection[p] : &:r2053_7 -# 2054| v2054_1(void) = NoOp : -# 2053| v2053_9(void) = ReturnIndirection[p] : &:r2053_7, m2053_8 -# 2053| v2053_10(void) = ReturnVoid : -# 2053| v2053_11(void) = AliasedUse : m2053_3 -# 2053| v2053_12(void) = ExitFunction : - -# 2058| int virtual_delete() -# 2058| Block 0 -# 2058| v2058_1(void) = EnterFunction : -# 2058| m2058_2(unknown) = AliasedDefinition : -# 2058| m2058_3(unknown) = InitializeNonLocal : -# 2058| m2058_4(unknown) = Chi : total:m2058_2, partial:m2058_3 -# 2060| r2060_1(glval<Base2 *>) = VariableAddress[b1] : -# 2060| r2060_2(glval<unknown>) = FunctionAddress[operator new] : -# 2060| r2060_3(unsigned long) = Constant[8] : -# 2060| r2060_4(void *) = Call[operator new] : func:r2060_2, 0:r2060_3 -# 2060| m2060_5(unknown) = ^CallSideEffect : ~m2058_4 -# 2060| m2060_6(unknown) = Chi : total:m2058_4, partial:m2060_5 -# 2060| m2060_7(unknown) = ^InitializeDynamicAllocation : &:r2060_4 -# 2060| r2060_8(Base2 *) = Convert : r2060_4 -# 2060| r2060_9(glval<unknown>) = FunctionAddress[Base2] : -# 2060| v2060_10(void) = Call[Base2] : func:r2060_9, this:r2060_8 -# 2060| m2060_11(unknown) = ^CallSideEffect : ~m2060_6 -# 2060| m2060_12(unknown) = Chi : total:m2060_6, partial:m2060_11 -# 2060| m2060_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2060_8 -# 2060| m2060_14(unknown) = Chi : total:m2060_7, partial:m2060_13 -# 2060| m2060_15(Base2 *) = Store[b1] : &:r2060_1, r2060_8 -# 2061| r2061_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2061| r2061_2(glval<Base2 *>) = VariableAddress[b1] : -# 2061| r2061_3(Base2 *) = Load[b1] : &:r2061_2, m2060_15 -# 2061| v2061_4(void) = Call[?] : func:r2061_1, 0:r2061_3 -# 2061| m2061_5(unknown) = ^CallSideEffect : ~m2060_12 -# 2061| m2061_6(unknown) = Chi : total:m2060_12, partial:m2061_5 -# 2063| r2063_1(glval<Base2 *>) = VariableAddress[b2] : -# 2063| r2063_2(glval<unknown>) = FunctionAddress[operator new] : -# 2063| r2063_3(unsigned long) = Constant[16] : -# 2063| r2063_4(void *) = Call[operator new] : func:r2063_2, 0:r2063_3 -# 2063| m2063_5(unknown) = ^CallSideEffect : ~m2061_6 -# 2063| m2063_6(unknown) = Chi : total:m2061_6, partial:m2063_5 -# 2063| m2063_7(unknown) = ^InitializeDynamicAllocation : &:r2063_4 -# 2063| r2063_8(Derived2 *) = Convert : r2063_4 -# 2063| r2063_9(glval<unknown>) = FunctionAddress[Derived2] : -# 2063| v2063_10(void) = Call[Derived2] : func:r2063_9, this:r2063_8 -# 2063| m2063_11(unknown) = ^CallSideEffect : ~m2063_6 -# 2063| m2063_12(unknown) = Chi : total:m2063_6, partial:m2063_11 -# 2063| m2063_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2063_8 -# 2063| m2063_14(unknown) = Chi : total:m2063_7, partial:m2063_13 -# 2063| r2063_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2063_8 -# 2063| m2063_16(Base2 *) = Store[b2] : &:r2063_1, r2063_15 -# 2064| r2064_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2064| r2064_2(glval<Base2 *>) = VariableAddress[b2] : -# 2064| r2064_3(Base2 *) = Load[b2] : &:r2064_2, m2063_16 -# 2064| v2064_4(void) = Call[?] : func:r2064_1, 0:r2064_3 -# 2064| m2064_5(unknown) = ^CallSideEffect : ~m2063_12 -# 2064| m2064_6(unknown) = Chi : total:m2063_12, partial:m2064_5 -# 2066| r2066_1(glval<Derived2 *>) = VariableAddress[d] : -# 2066| r2066_2(glval<unknown>) = FunctionAddress[operator new] : -# 2066| r2066_3(unsigned long) = Constant[16] : -# 2066| r2066_4(void *) = Call[operator new] : func:r2066_2, 0:r2066_3 -# 2066| m2066_5(unknown) = ^CallSideEffect : ~m2064_6 -# 2066| m2066_6(unknown) = Chi : total:m2064_6, partial:m2066_5 -# 2066| m2066_7(unknown) = ^InitializeDynamicAllocation : &:r2066_4 -# 2066| r2066_8(Derived2 *) = Convert : r2066_4 -# 2066| r2066_9(glval<unknown>) = FunctionAddress[Derived2] : -# 2066| v2066_10(void) = Call[Derived2] : func:r2066_9, this:r2066_8 -# 2066| m2066_11(unknown) = ^CallSideEffect : ~m2066_6 -# 2066| m2066_12(unknown) = Chi : total:m2066_6, partial:m2066_11 -# 2066| m2066_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2066_8 -# 2066| m2066_14(unknown) = Chi : total:m2066_7, partial:m2066_13 -# 2066| m2066_15(Derived2 *) = Store[d] : &:r2066_1, r2066_8 -# 2067| r2067_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2067| r2067_2(glval<Derived2 *>) = VariableAddress[d] : -# 2067| r2067_3(Derived2 *) = Load[d] : &:r2067_2, m2066_15 -# 2067| v2067_4(void) = Call[?] : func:r2067_1, 0:r2067_3 -# 2067| m2067_5(unknown) = ^CallSideEffect : ~m2066_12 -# 2067| m2067_6(unknown) = Chi : total:m2066_12, partial:m2067_5 -# 2068| r2068_1(glval<int>) = VariableAddress[#return] : -# 2068| m2068_2(int) = Uninitialized[#return] : &:r2068_1 -# 2058| r2058_5(glval<int>) = VariableAddress[#return] : -# 2058| v2058_6(void) = ReturnValue : &:r2058_5, m2068_2 -# 2058| v2058_7(void) = AliasedUse : ~m2067_6 -# 2058| v2058_8(void) = ExitFunction : - -# 2072| void test_constant_folding() -# 2072| Block 0 -# 2072| v2072_1(void) = EnterFunction : -# 2072| m2072_2(unknown) = AliasedDefinition : -# 2072| m2072_3(unknown) = InitializeNonLocal : -# 2072| m2072_4(unknown) = Chi : total:m2072_2, partial:m2072_3 -# 2073| r2073_1(glval<int>) = VariableAddress[x] : -# 2073| r2073_2(int) = Constant[116] : -# 2073| m2073_3(int) = Store[x] : &:r2073_1, r2073_2 -# 2074| r2074_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : -# 2074| r2074_2(int) = Constant[116] : -# 2074| v2074_3(void) = Call[test_constant_folding_use] : func:r2074_1, 0:r2074_2 -# 2074| m2074_4(unknown) = ^CallSideEffect : ~m2072_4 -# 2074| m2074_5(unknown) = Chi : total:m2072_4, partial:m2074_4 -# 2075| v2075_1(void) = NoOp : -# 2072| v2072_5(void) = ReturnVoid : -# 2072| v2072_6(void) = AliasedUse : ~m2074_5 -# 2072| v2072_7(void) = ExitFunction : - -# 2079| int NonExit() -# 2079| Block 0 -# 2079| v2079_1(void) = EnterFunction : -# 2079| m2079_2(unknown) = AliasedDefinition : -# 2079| m2079_3(unknown) = InitializeNonLocal : -# 2079| m2079_4(unknown) = Chi : total:m2079_2, partial:m2079_3 -# 2080| r2080_1(glval<int>) = VariableAddress[x] : -# 2080| r2080_2(glval<unknown>) = FunctionAddress[Add] : -# 2080| r2080_3(int) = Constant[3] : -# 2080| r2080_4(int) = Constant[4] : -# 2080| r2080_5(int) = Call[Add] : func:r2080_2, 0:r2080_3, 1:r2080_4 -# 2080| m2080_6(unknown) = ^CallSideEffect : ~m2079_4 -# 2080| m2080_7(unknown) = Chi : total:m2079_4, partial:m2080_6 -# 2080| m2080_8(int) = Store[x] : &:r2080_1, r2080_5 -# 2081| r2081_1(glval<int>) = VariableAddress[x] : -# 2081| r2081_2(int) = Load[x] : &:r2081_1, m2080_8 -# 2081| r2081_3(int) = Constant[7] : -# 2081| r2081_4(bool) = CompareEQ : r2081_2, r2081_3 -# 2081| v2081_5(void) = ConditionalBranch : r2081_4 +# 2082| void NewDeleteMem() +# 2082| Block 0 +# 2082| v2082_1(void) = EnterFunction : +# 2082| m2082_2(unknown) = AliasedDefinition : +# 2082| m2082_3(unknown) = InitializeNonLocal : +# 2082| m2082_4(unknown) = Chi : total:m2082_2, partial:m2082_3 +# 2083| r2083_1(glval<int *>) = VariableAddress[x] : +# 2083| r2083_2(glval<unknown>) = FunctionAddress[operator new] : +# 2083| r2083_3(unsigned long) = Constant[4] : +# 2083| r2083_4(void *) = Call[operator new] : func:r2083_2, 0:r2083_3 +# 2083| m2083_5(unknown) = ^CallSideEffect : ~m2082_4 +# 2083| m2083_6(unknown) = Chi : total:m2082_4, partial:m2083_5 +# 2083| m2083_7(unknown) = ^InitializeDynamicAllocation : &:r2083_4 +# 2083| r2083_8(int *) = Convert : r2083_4 +# 2083| m2083_9(int *) = Store[x] : &:r2083_1, r2083_8 +# 2084| r2084_1(int) = Constant[6] : +# 2084| r2084_2(glval<int *>) = VariableAddress[x] : +# 2084| r2084_3(int *) = Load[x] : &:r2084_2, m2083_9 +# 2084| r2084_4(glval<int>) = CopyValue : r2084_3 +# 2084| m2084_5(int) = Store[?] : &:r2084_4, r2084_1 +# 2084| m2084_6(unknown) = Chi : total:m2083_7, partial:m2084_5 +# 2085| r2085_1(glval<unknown>) = FunctionAddress[operator delete] : +# 2085| r2085_2(glval<int *>) = VariableAddress[x] : +# 2085| r2085_3(int *) = Load[x] : &:r2085_2, m2083_9 +# 2085| v2085_4(void) = Call[operator delete] : func:r2085_1, 0:r2085_3 +# 2085| m2085_5(unknown) = ^CallSideEffect : ~m2083_6 +# 2085| m2085_6(unknown) = Chi : total:m2083_6, partial:m2085_5 +# 2086| v2086_1(void) = NoOp : +# 2082| v2082_5(void) = ReturnVoid : +# 2082| v2082_6(void) = AliasedUse : ~m2085_6 +# 2082| v2082_7(void) = ExitFunction : + +# 2088| void Base2::Base2() +# 2088| Block 0 +# 2088| v2088_1(void) = EnterFunction : +# 2088| m2088_2(unknown) = AliasedDefinition : +# 2088| m2088_3(unknown) = InitializeNonLocal : +# 2088| m2088_4(unknown) = Chi : total:m2088_2, partial:m2088_3 +# 2088| r2088_5(glval<unknown>) = VariableAddress[#this] : +# 2088| m2088_6(glval<Base2>) = InitializeParameter[#this] : &:r2088_5 +# 2088| r2088_7(glval<Base2>) = Load[#this] : &:r2088_5, m2088_6 +# 2088| m2088_8(Base2) = InitializeIndirection[#this] : &:r2088_7 +# 2088| v2088_9(void) = NoOp : +# 2088| v2088_10(void) = ReturnIndirection[#this] : &:r2088_7, m2088_8 +# 2088| v2088_11(void) = ReturnVoid : +# 2088| v2088_12(void) = AliasedUse : m2088_3 +# 2088| v2088_13(void) = ExitFunction : + +# 2090| void Base2::operator delete(void*) +# 2090| Block 0 +# 2090| v2090_1(void) = EnterFunction : +# 2090| m2090_2(unknown) = AliasedDefinition : +# 2090| m2090_3(unknown) = InitializeNonLocal : +# 2090| m2090_4(unknown) = Chi : total:m2090_2, partial:m2090_3 +# 2090| r2090_5(glval<void *>) = VariableAddress[p] : +# 2090| m2090_6(void *) = InitializeParameter[p] : &:r2090_5 +# 2090| r2090_7(void *) = Load[p] : &:r2090_5, m2090_6 +# 2090| m2090_8(unknown) = InitializeIndirection[p] : &:r2090_7 +# 2091| v2091_1(void) = NoOp : +# 2090| v2090_9(void) = ReturnIndirection[p] : &:r2090_7, m2090_8 +# 2090| v2090_10(void) = ReturnVoid : +# 2090| v2090_11(void) = AliasedUse : m2090_3 +# 2090| v2090_12(void) = ExitFunction : + +# 2092| void Base2::~Base2() +# 2092| Block 0 +# 2092| v2092_1(void) = EnterFunction : +# 2092| m2092_2(unknown) = AliasedDefinition : +# 2092| m2092_3(unknown) = InitializeNonLocal : +# 2092| m2092_4(unknown) = Chi : total:m2092_2, partial:m2092_3 +# 2092| r2092_5(glval<unknown>) = VariableAddress[#this] : +# 2092| m2092_6(glval<Base2>) = InitializeParameter[#this] : &:r2092_5 +# 2092| r2092_7(glval<Base2>) = Load[#this] : &:r2092_5, m2092_6 +# 2092| m2092_8(Base2) = InitializeIndirection[#this] : &:r2092_7 +# 2092| v2092_9(void) = NoOp : +# 2092| v2092_10(void) = ReturnIndirection[#this] : &:r2092_7, m2092_8 +# 2092| v2092_11(void) = ReturnVoid : +# 2092| v2092_12(void) = AliasedUse : m2092_3 +# 2092| v2092_13(void) = ExitFunction : + +# 2095| void Derived2::Derived2() +# 2095| Block 0 +# 2095| v2095_1(void) = EnterFunction : +# 2095| m2095_2(unknown) = AliasedDefinition : +# 2095| m2095_3(unknown) = InitializeNonLocal : +# 2095| m2095_4(unknown) = Chi : total:m2095_2, partial:m2095_3 +# 2095| r2095_5(glval<unknown>) = VariableAddress[#this] : +# 2095| m2095_6(glval<Derived2>) = InitializeParameter[#this] : &:r2095_5 +# 2095| r2095_7(glval<Derived2>) = Load[#this] : &:r2095_5, m2095_6 +# 2095| m2095_8(Derived2) = InitializeIndirection[#this] : &:r2095_7 +# 2095| r2095_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2095_6 +# 2095| r2095_10(glval<unknown>) = FunctionAddress[Base2] : +# 2095| v2095_11(void) = Call[Base2] : func:r2095_10, this:r2095_9 +# 2095| m2095_12(unknown) = ^CallSideEffect : ~m2095_4 +# 2095| m2095_13(unknown) = Chi : total:m2095_4, partial:m2095_12 +# 2095| m2095_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2095_9 +# 2095| m2095_15(unknown) = Chi : total:m2095_8, partial:m2095_14 +# 2095| v2095_16(void) = NoOp : +# 2095| v2095_17(void) = ReturnIndirection[#this] : &:r2095_7, m2095_15 +# 2095| v2095_18(void) = ReturnVoid : +# 2095| v2095_19(void) = AliasedUse : ~m2095_13 +# 2095| v2095_20(void) = ExitFunction : + +# 2098| void Derived2::~Derived2() +# 2098| Block 0 +# 2098| v2098_1(void) = EnterFunction : +# 2098| m2098_2(unknown) = AliasedDefinition : +# 2098| m2098_3(unknown) = InitializeNonLocal : +# 2098| m2098_4(unknown) = Chi : total:m2098_2, partial:m2098_3 +# 2098| r2098_5(glval<unknown>) = VariableAddress[#this] : +# 2098| m2098_6(glval<Derived2>) = InitializeParameter[#this] : &:r2098_5 +# 2098| r2098_7(glval<Derived2>) = Load[#this] : &:r2098_5, m2098_6 +# 2098| m2098_8(Derived2) = InitializeIndirection[#this] : &:r2098_7 +# 2098| v2098_9(void) = NoOp : +# 2098| r2098_10(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2098_6 +# 2098| r2098_11(glval<unknown>) = FunctionAddress[~Base2] : +# 2098| v2098_12(void) = Call[~Base2] : func:r2098_11, this:r2098_10 +# 2098| m2098_13(unknown) = ^CallSideEffect : ~m2098_4 +# 2098| m2098_14(unknown) = Chi : total:m2098_4, partial:m2098_13 +# 2098| v2098_15(void) = ReturnIndirection[#this] : &:r2098_7, m2098_8 +# 2098| v2098_16(void) = ReturnVoid : +# 2098| v2098_17(void) = AliasedUse : ~m2098_14 +# 2098| v2098_18(void) = ExitFunction : + +# 2100| void Derived2::operator delete(void*) +# 2100| Block 0 +# 2100| v2100_1(void) = EnterFunction : +# 2100| m2100_2(unknown) = AliasedDefinition : +# 2100| m2100_3(unknown) = InitializeNonLocal : +# 2100| m2100_4(unknown) = Chi : total:m2100_2, partial:m2100_3 +# 2100| r2100_5(glval<void *>) = VariableAddress[p] : +# 2100| m2100_6(void *) = InitializeParameter[p] : &:r2100_5 +# 2100| r2100_7(void *) = Load[p] : &:r2100_5, m2100_6 +# 2100| m2100_8(unknown) = InitializeIndirection[p] : &:r2100_7 +# 2101| v2101_1(void) = NoOp : +# 2100| v2100_9(void) = ReturnIndirection[p] : &:r2100_7, m2100_8 +# 2100| v2100_10(void) = ReturnVoid : +# 2100| v2100_11(void) = AliasedUse : m2100_3 +# 2100| v2100_12(void) = ExitFunction : + +# 2105| int virtual_delete() +# 2105| Block 0 +# 2105| v2105_1(void) = EnterFunction : +# 2105| m2105_2(unknown) = AliasedDefinition : +# 2105| m2105_3(unknown) = InitializeNonLocal : +# 2105| m2105_4(unknown) = Chi : total:m2105_2, partial:m2105_3 +# 2107| r2107_1(glval<Base2 *>) = VariableAddress[b1] : +# 2107| r2107_2(glval<unknown>) = FunctionAddress[operator new] : +# 2107| r2107_3(unsigned long) = Constant[8] : +# 2107| r2107_4(void *) = Call[operator new] : func:r2107_2, 0:r2107_3 +# 2107| m2107_5(unknown) = ^CallSideEffect : ~m2105_4 +# 2107| m2107_6(unknown) = Chi : total:m2105_4, partial:m2107_5 +# 2107| m2107_7(unknown) = ^InitializeDynamicAllocation : &:r2107_4 +# 2107| r2107_8(Base2 *) = Convert : r2107_4 +# 2107| r2107_9(glval<unknown>) = FunctionAddress[Base2] : +# 2107| v2107_10(void) = Call[Base2] : func:r2107_9, this:r2107_8 +# 2107| m2107_11(unknown) = ^CallSideEffect : ~m2107_6 +# 2107| m2107_12(unknown) = Chi : total:m2107_6, partial:m2107_11 +# 2107| m2107_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_8 +# 2107| m2107_14(unknown) = Chi : total:m2107_7, partial:m2107_13 +# 2107| m2107_15(Base2 *) = Store[b1] : &:r2107_1, r2107_8 +# 2108| r2108_1(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2108| r2108_2(glval<Base2 *>) = VariableAddress[b1] : +# 2108| r2108_3(Base2 *) = Load[b1] : &:r2108_2, m2107_15 +# 2108| v2108_4(void) = Call[?] : func:r2108_1, 0:r2108_3 +# 2108| m2108_5(unknown) = ^CallSideEffect : ~m2107_12 +# 2108| m2108_6(unknown) = Chi : total:m2107_12, partial:m2108_5 +# 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] : +# 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] : +# 2110| r2110_3(unsigned long) = Constant[16] : +# 2110| r2110_4(void *) = Call[operator new] : func:r2110_2, 0:r2110_3 +# 2110| m2110_5(unknown) = ^CallSideEffect : ~m2108_6 +# 2110| m2110_6(unknown) = Chi : total:m2108_6, partial:m2110_5 +# 2110| m2110_7(unknown) = ^InitializeDynamicAllocation : &:r2110_4 +# 2110| r2110_8(Derived2 *) = Convert : r2110_4 +# 2110| r2110_9(glval<unknown>) = FunctionAddress[Derived2] : +# 2110| v2110_10(void) = Call[Derived2] : func:r2110_9, this:r2110_8 +# 2110| m2110_11(unknown) = ^CallSideEffect : ~m2110_6 +# 2110| m2110_12(unknown) = Chi : total:m2110_6, partial:m2110_11 +# 2110| m2110_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2110_8 +# 2110| m2110_14(unknown) = Chi : total:m2110_7, partial:m2110_13 +# 2110| r2110_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_8 +# 2110| m2110_16(Base2 *) = Store[b2] : &:r2110_1, r2110_15 +# 2111| r2111_1(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2111| r2111_2(glval<Base2 *>) = VariableAddress[b2] : +# 2111| r2111_3(Base2 *) = Load[b2] : &:r2111_2, m2110_16 +# 2111| v2111_4(void) = Call[?] : func:r2111_1, 0:r2111_3 +# 2111| m2111_5(unknown) = ^CallSideEffect : ~m2110_12 +# 2111| m2111_6(unknown) = Chi : total:m2110_12, partial:m2111_5 +# 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] : +# 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] : +# 2113| r2113_3(unsigned long) = Constant[16] : +# 2113| r2113_4(void *) = Call[operator new] : func:r2113_2, 0:r2113_3 +# 2113| m2113_5(unknown) = ^CallSideEffect : ~m2111_6 +# 2113| m2113_6(unknown) = Chi : total:m2111_6, partial:m2113_5 +# 2113| m2113_7(unknown) = ^InitializeDynamicAllocation : &:r2113_4 +# 2113| r2113_8(Derived2 *) = Convert : r2113_4 +# 2113| r2113_9(glval<unknown>) = FunctionAddress[Derived2] : +# 2113| v2113_10(void) = Call[Derived2] : func:r2113_9, this:r2113_8 +# 2113| m2113_11(unknown) = ^CallSideEffect : ~m2113_6 +# 2113| m2113_12(unknown) = Chi : total:m2113_6, partial:m2113_11 +# 2113| m2113_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_8 +# 2113| m2113_14(unknown) = Chi : total:m2113_7, partial:m2113_13 +# 2113| m2113_15(Derived2 *) = Store[d] : &:r2113_1, r2113_8 +# 2114| r2114_1(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2114| r2114_2(glval<Derived2 *>) = VariableAddress[d] : +# 2114| r2114_3(Derived2 *) = Load[d] : &:r2114_2, m2113_15 +# 2114| v2114_4(void) = Call[?] : func:r2114_1, 0:r2114_3 +# 2114| m2114_5(unknown) = ^CallSideEffect : ~m2113_12 +# 2114| m2114_6(unknown) = Chi : total:m2113_12, partial:m2114_5 +# 2115| r2115_1(glval<int>) = VariableAddress[#return] : +# 2115| m2115_2(int) = Uninitialized[#return] : &:r2115_1 +# 2105| r2105_5(glval<int>) = VariableAddress[#return] : +# 2105| v2105_6(void) = ReturnValue : &:r2105_5, m2115_2 +# 2105| v2105_7(void) = AliasedUse : ~m2114_6 +# 2105| v2105_8(void) = ExitFunction : + +# 2119| void test_constant_folding() +# 2119| Block 0 +# 2119| v2119_1(void) = EnterFunction : +# 2119| m2119_2(unknown) = AliasedDefinition : +# 2119| m2119_3(unknown) = InitializeNonLocal : +# 2119| m2119_4(unknown) = Chi : total:m2119_2, partial:m2119_3 +# 2120| r2120_1(glval<int>) = VariableAddress[x] : +# 2120| r2120_2(int) = Constant[116] : +# 2120| m2120_3(int) = Store[x] : &:r2120_1, r2120_2 +# 2121| r2121_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : +# 2121| r2121_2(int) = Constant[116] : +# 2121| v2121_3(void) = Call[test_constant_folding_use] : func:r2121_1, 0:r2121_2 +# 2121| m2121_4(unknown) = ^CallSideEffect : ~m2119_4 +# 2121| m2121_5(unknown) = Chi : total:m2119_4, partial:m2121_4 +# 2122| v2122_1(void) = NoOp : +# 2119| v2119_5(void) = ReturnVoid : +# 2119| v2119_6(void) = AliasedUse : ~m2121_5 +# 2119| v2119_7(void) = ExitFunction : + +# 2126| int NonExit() +# 2126| Block 0 +# 2126| v2126_1(void) = EnterFunction : +# 2126| m2126_2(unknown) = AliasedDefinition : +# 2126| m2126_3(unknown) = InitializeNonLocal : +# 2126| m2126_4(unknown) = Chi : total:m2126_2, partial:m2126_3 +# 2127| r2127_1(glval<int>) = VariableAddress[x] : +# 2127| r2127_2(glval<unknown>) = FunctionAddress[Add] : +# 2127| r2127_3(int) = Constant[3] : +# 2127| r2127_4(int) = Constant[4] : +# 2127| r2127_5(int) = Call[Add] : func:r2127_2, 0:r2127_3, 1:r2127_4 +# 2127| m2127_6(unknown) = ^CallSideEffect : ~m2126_4 +# 2127| m2127_7(unknown) = Chi : total:m2126_4, partial:m2127_6 +# 2127| m2127_8(int) = Store[x] : &:r2127_1, r2127_5 +# 2128| r2128_1(glval<int>) = VariableAddress[x] : +# 2128| r2128_2(int) = Load[x] : &:r2128_1, m2127_8 +# 2128| r2128_3(int) = Constant[7] : +# 2128| r2128_4(bool) = CompareEQ : r2128_2, r2128_3 +# 2128| v2128_5(void) = ConditionalBranch : r2128_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2082| Block 1 -# 2082| r2082_1(glval<unknown>) = FunctionAddress[exit] : -# 2082| r2082_2(int) = Constant[3] : -# 2082| v2082_3(void) = Call[exit] : func:r2082_1, 0:r2082_2 -# 2082| m2082_4(unknown) = ^CallSideEffect : ~m2080_7 -# 2082| m2082_5(unknown) = Chi : total:m2080_7, partial:m2082_4 -# 2079| v2079_5(void) = Unreached : - -# 2083| Block 2 -# 2083| r2083_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2083| v2083_2(void) = Call[VoidFunc] : func:r2083_1 -# 2083| m2083_3(unknown) = ^CallSideEffect : ~m2080_7 -# 2083| m2083_4(unknown) = Chi : total:m2080_7, partial:m2083_3 -# 2084| r2084_1(glval<int>) = VariableAddress[#return] : -# 2084| r2084_2(glval<int>) = VariableAddress[x] : -# 2084| r2084_3(int) = Load[x] : &:r2084_2, m2080_8 -# 2084| m2084_4(int) = Store[#return] : &:r2084_1, r2084_3 -# 2079| r2079_6(glval<int>) = VariableAddress[#return] : -# 2079| v2079_7(void) = ReturnValue : &:r2079_6, m2084_4 -# 2079| v2079_8(void) = AliasedUse : ~m2083_4 -# 2079| v2079_9(void) = ExitFunction : - -# 2087| void CallsNonExit() -# 2087| Block 0 -# 2087| v2087_1(void) = EnterFunction : -# 2087| m2087_2(unknown) = AliasedDefinition : -# 2087| m2087_3(unknown) = InitializeNonLocal : -# 2087| m2087_4(unknown) = Chi : total:m2087_2, partial:m2087_3 -# 2088| r2088_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2088| v2088_2(void) = Call[VoidFunc] : func:r2088_1 -# 2088| m2088_3(unknown) = ^CallSideEffect : ~m2087_4 -# 2088| m2088_4(unknown) = Chi : total:m2087_4, partial:m2088_3 -# 2089| r2089_1(glval<unknown>) = FunctionAddress[exit] : -# 2089| r2089_2(int) = Constant[3] : -# 2089| v2089_3(void) = Call[exit] : func:r2089_1, 0:r2089_2 -# 2089| m2089_4(unknown) = ^CallSideEffect : ~m2088_4 -# 2089| m2089_5(unknown) = Chi : total:m2088_4, partial:m2089_4 -# 2087| v2087_5(void) = Unreached : - -# 2092| int TransNonExit() -# 2092| Block 0 -# 2092| v2092_1(void) = EnterFunction : -# 2092| m2092_2(unknown) = AliasedDefinition : -# 2092| m2092_3(unknown) = InitializeNonLocal : -# 2092| m2092_4(unknown) = Chi : total:m2092_2, partial:m2092_3 -# 2093| r2093_1(glval<int>) = VariableAddress[x] : -# 2093| r2093_2(glval<unknown>) = FunctionAddress[Add] : -# 2093| r2093_3(int) = Constant[3] : -# 2093| r2093_4(int) = Constant[4] : -# 2093| r2093_5(int) = Call[Add] : func:r2093_2, 0:r2093_3, 1:r2093_4 -# 2093| m2093_6(unknown) = ^CallSideEffect : ~m2092_4 -# 2093| m2093_7(unknown) = Chi : total:m2092_4, partial:m2093_6 -# 2093| m2093_8(int) = Store[x] : &:r2093_1, r2093_5 -# 2094| r2094_1(glval<int>) = VariableAddress[x] : -# 2094| r2094_2(int) = Load[x] : &:r2094_1, m2093_8 -# 2094| r2094_3(int) = Constant[7] : -# 2094| r2094_4(bool) = CompareEQ : r2094_2, r2094_3 -# 2094| v2094_5(void) = ConditionalBranch : r2094_4 +# 2129| Block 1 +# 2129| r2129_1(glval<unknown>) = FunctionAddress[exit] : +# 2129| r2129_2(int) = Constant[3] : +# 2129| v2129_3(void) = Call[exit] : func:r2129_1, 0:r2129_2 +# 2129| m2129_4(unknown) = ^CallSideEffect : ~m2127_7 +# 2129| m2129_5(unknown) = Chi : total:m2127_7, partial:m2129_4 +# 2126| v2126_5(void) = Unreached : + +# 2130| Block 2 +# 2130| r2130_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2130| v2130_2(void) = Call[VoidFunc] : func:r2130_1 +# 2130| m2130_3(unknown) = ^CallSideEffect : ~m2127_7 +# 2130| m2130_4(unknown) = Chi : total:m2127_7, partial:m2130_3 +# 2131| r2131_1(glval<int>) = VariableAddress[#return] : +# 2131| r2131_2(glval<int>) = VariableAddress[x] : +# 2131| r2131_3(int) = Load[x] : &:r2131_2, m2127_8 +# 2131| m2131_4(int) = Store[#return] : &:r2131_1, r2131_3 +# 2126| r2126_6(glval<int>) = VariableAddress[#return] : +# 2126| v2126_7(void) = ReturnValue : &:r2126_6, m2131_4 +# 2126| v2126_8(void) = AliasedUse : ~m2130_4 +# 2126| v2126_9(void) = ExitFunction : + +# 2134| void CallsNonExit() +# 2134| Block 0 +# 2134| v2134_1(void) = EnterFunction : +# 2134| m2134_2(unknown) = AliasedDefinition : +# 2134| m2134_3(unknown) = InitializeNonLocal : +# 2134| m2134_4(unknown) = Chi : total:m2134_2, partial:m2134_3 +# 2135| r2135_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2135| v2135_2(void) = Call[VoidFunc] : func:r2135_1 +# 2135| m2135_3(unknown) = ^CallSideEffect : ~m2134_4 +# 2135| m2135_4(unknown) = Chi : total:m2134_4, partial:m2135_3 +# 2136| r2136_1(glval<unknown>) = FunctionAddress[exit] : +# 2136| r2136_2(int) = Constant[3] : +# 2136| v2136_3(void) = Call[exit] : func:r2136_1, 0:r2136_2 +# 2136| m2136_4(unknown) = ^CallSideEffect : ~m2135_4 +# 2136| m2136_5(unknown) = Chi : total:m2135_4, partial:m2136_4 +# 2134| v2134_5(void) = Unreached : + +# 2139| int TransNonExit() +# 2139| Block 0 +# 2139| v2139_1(void) = EnterFunction : +# 2139| m2139_2(unknown) = AliasedDefinition : +# 2139| m2139_3(unknown) = InitializeNonLocal : +# 2139| m2139_4(unknown) = Chi : total:m2139_2, partial:m2139_3 +# 2140| r2140_1(glval<int>) = VariableAddress[x] : +# 2140| r2140_2(glval<unknown>) = FunctionAddress[Add] : +# 2140| r2140_3(int) = Constant[3] : +# 2140| r2140_4(int) = Constant[4] : +# 2140| r2140_5(int) = Call[Add] : func:r2140_2, 0:r2140_3, 1:r2140_4 +# 2140| m2140_6(unknown) = ^CallSideEffect : ~m2139_4 +# 2140| m2140_7(unknown) = Chi : total:m2139_4, partial:m2140_6 +# 2140| m2140_8(int) = Store[x] : &:r2140_1, r2140_5 +# 2141| r2141_1(glval<int>) = VariableAddress[x] : +# 2141| r2141_2(int) = Load[x] : &:r2141_1, m2140_8 +# 2141| r2141_3(int) = Constant[7] : +# 2141| r2141_4(bool) = CompareEQ : r2141_2, r2141_3 +# 2141| v2141_5(void) = ConditionalBranch : r2141_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2095| Block 1 -# 2095| r2095_1(glval<unknown>) = FunctionAddress[CallsNonExit] : -# 2095| v2095_2(void) = Call[CallsNonExit] : func:r2095_1 -# 2092| v2092_5(void) = Unreached : - -# 2096| Block 2 -# 2096| r2096_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2096| v2096_2(void) = Call[VoidFunc] : func:r2096_1 -# 2096| m2096_3(unknown) = ^CallSideEffect : ~m2093_7 -# 2096| m2096_4(unknown) = Chi : total:m2093_7, partial:m2096_3 -# 2097| r2097_1(glval<int>) = VariableAddress[#return] : -# 2097| r2097_2(glval<int>) = VariableAddress[x] : -# 2097| r2097_3(int) = Load[x] : &:r2097_2, m2093_8 -# 2097| m2097_4(int) = Store[#return] : &:r2097_1, r2097_3 -# 2092| r2092_6(glval<int>) = VariableAddress[#return] : -# 2092| v2092_7(void) = ReturnValue : &:r2092_6, m2097_4 -# 2092| v2092_8(void) = AliasedUse : ~m2096_4 -# 2092| v2092_9(void) = ExitFunction : - -# 2100| void newArrayCorrectType(size_t) -# 2100| Block 0 -# 2100| v2100_1(void) = EnterFunction : -# 2100| m2100_2(unknown) = AliasedDefinition : -# 2100| m2100_3(unknown) = InitializeNonLocal : -# 2100| m2100_4(unknown) = Chi : total:m2100_2, partial:m2100_3 -# 2100| r2100_5(glval<unsigned long>) = VariableAddress[n] : -# 2100| m2100_6(unsigned long) = InitializeParameter[n] : &:r2100_5 -# 2101| r2101_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2101| r2101_2(glval<unsigned long>) = VariableAddress[n] : -# 2101| r2101_3(unsigned long) = Load[n] : &:r2101_2, m2100_6 -# 2101| r2101_4(unsigned long) = Constant[4] : -# 2101| r2101_5(unsigned long) = Mul : r2101_3, r2101_4 -# 2101| r2101_6(void *) = Call[operator new[]] : func:r2101_1, 0:r2101_5 -# 2101| m2101_7(unknown) = ^CallSideEffect : ~m2100_4 -# 2101| m2101_8(unknown) = Chi : total:m2100_4, partial:m2101_7 -# 2101| m2101_9(unknown) = ^InitializeDynamicAllocation : &:r2101_6 -# 2101| r2101_10(int *) = Convert : r2101_6 -# 2102| r2102_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2102| r2102_2(glval<unsigned long>) = VariableAddress[n] : -# 2102| r2102_3(unsigned long) = Load[n] : &:r2102_2, m2100_6 -# 2102| r2102_4(unsigned long) = Constant[4] : -# 2102| r2102_5(unsigned long) = Mul : r2102_3, r2102_4 -# 2102| r2102_6(float) = Constant[1.0] : -# 2102| r2102_7(void *) = Call[operator new[]] : func:r2102_1, 0:r2102_5, 1:r2102_6 -# 2102| m2102_8(unknown) = ^CallSideEffect : ~m2101_8 -# 2102| m2102_9(unknown) = Chi : total:m2101_8, partial:m2102_8 -# 2102| m2102_10(unknown) = ^InitializeDynamicAllocation : &:r2102_7 -# 2102| r2102_11(int *) = Convert : r2102_7 -# 2103| r2103_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2103| r2103_2(glval<unsigned long>) = VariableAddress[n] : -# 2103| r2103_3(unsigned long) = Load[n] : &:r2103_2, m2100_6 -# 2103| r2103_4(unsigned long) = Constant[8] : -# 2103| r2103_5(unsigned long) = Mul : r2103_3, r2103_4 -# 2103| r2103_6(void *) = Call[operator new[]] : func:r2103_1, 0:r2103_5 -# 2103| m2103_7(unknown) = ^CallSideEffect : ~m2102_9 -# 2103| m2103_8(unknown) = Chi : total:m2102_9, partial:m2103_7 -# 2103| m2103_9(unknown) = ^InitializeDynamicAllocation : &:r2103_6 -# 2103| r2103_10(String *) = Convert : r2103_6 -# 2104| r2104_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2104| r2104_2(glval<unsigned long>) = VariableAddress[n] : -# 2104| r2104_3(unsigned long) = Load[n] : &:r2104_2, m2100_6 -# 2104| r2104_4(unsigned long) = Constant[256] : -# 2104| r2104_5(unsigned long) = Mul : r2104_3, r2104_4 -# 2104| r2104_6(align_val_t) = Constant[128] : -# 2104| r2104_7(void *) = Call[operator new[]] : func:r2104_1, 0:r2104_5, 1:r2104_6 -# 2104| m2104_8(unknown) = ^CallSideEffect : ~m2103_8 -# 2104| m2104_9(unknown) = Chi : total:m2103_8, partial:m2104_8 -# 2104| m2104_10(unknown) = ^InitializeDynamicAllocation : &:r2104_7 -# 2104| r2104_11(Overaligned *) = Convert : r2104_7 -# 2105| r2105_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2105| r2105_2(glval<unsigned long>) = VariableAddress[n] : -# 2105| r2105_3(unsigned long) = Load[n] : &:r2105_2, m2100_6 -# 2105| r2105_4(unsigned long) = Constant[1] : -# 2105| r2105_5(unsigned long) = Mul : r2105_3, r2105_4 -# 2105| r2105_6(void *) = Call[operator new[]] : func:r2105_1, 0:r2105_5 -# 2105| m2105_7(unknown) = ^CallSideEffect : ~m2104_9 -# 2105| m2105_8(unknown) = Chi : total:m2104_9, partial:m2105_7 -# 2105| m2105_9(unknown) = ^InitializeDynamicAllocation : &:r2105_6 -# 2105| r2105_10(DefaultCtorWithDefaultParam *) = Convert : r2105_6 -# 2106| r2106_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2106| r2106_2(glval<unsigned long>) = VariableAddress[n] : -# 2106| r2106_3(unsigned long) = Load[n] : &:r2106_2, m2100_6 -# 2106| r2106_4(unsigned long) = Constant[4] : -# 2106| r2106_5(unsigned long) = Mul : r2106_3, r2106_4 -# 2106| r2106_6(void *) = Call[operator new[]] : func:r2106_1, 0:r2106_5 -# 2106| m2106_7(unknown) = ^CallSideEffect : ~m2105_8 -# 2106| m2106_8(unknown) = Chi : total:m2105_8, partial:m2106_7 -# 2106| m2106_9(unknown) = ^InitializeDynamicAllocation : &:r2106_6 -# 2106| r2106_10(int *) = Convert : r2106_6 -# 2107| v2107_1(void) = NoOp : -# 2100| v2100_7(void) = ReturnVoid : -# 2100| v2100_8(void) = AliasedUse : ~m2106_8 -# 2100| v2100_9(void) = ExitFunction : - -# 2111| char* test_strtod(char*) -# 2111| Block 0 -# 2111| v2111_1(void) = EnterFunction : -# 2111| m2111_2(unknown) = AliasedDefinition : -# 2111| m2111_3(unknown) = InitializeNonLocal : -# 2111| m2111_4(unknown) = Chi : total:m2111_2, partial:m2111_3 -# 2111| r2111_5(glval<char *>) = VariableAddress[s] : -# 2111| m2111_6(char *) = InitializeParameter[s] : &:r2111_5 -# 2111| r2111_7(char *) = Load[s] : &:r2111_5, m2111_6 -# 2111| m2111_8(unknown) = InitializeIndirection[s] : &:r2111_7 -# 2112| r2112_1(glval<char *>) = VariableAddress[end] : -# 2112| m2112_2(char *) = Uninitialized[end] : &:r2112_1 -# 2113| r2113_1(glval<double>) = VariableAddress[d] : -# 2113| r2113_2(glval<unknown>) = FunctionAddress[strtod] : -# 2113| r2113_3(glval<char *>) = VariableAddress[s] : -# 2113| r2113_4(char *) = Load[s] : &:r2113_3, m2111_6 -# 2113| r2113_5(char *) = Convert : r2113_4 -# 2113| r2113_6(glval<char *>) = VariableAddress[end] : -# 2113| r2113_7(char **) = CopyValue : r2113_6 -# 2113| r2113_8(double) = Call[strtod] : func:r2113_2, 0:r2113_5, 1:r2113_7 -# 2113| v2113_9(void) = ^BufferReadSideEffect[0] : &:r2113_5, ~m2111_8 -# 2113| m2113_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2113_7 -# 2113| m2113_11(char *) = Chi : total:m2112_2, partial:m2113_10 -# 2113| m2113_12(double) = Store[d] : &:r2113_1, r2113_8 -# 2114| r2114_1(glval<char *>) = VariableAddress[#return] : -# 2114| r2114_2(glval<char *>) = VariableAddress[end] : -# 2114| r2114_3(char *) = Load[end] : &:r2114_2, m2113_11 -# 2114| m2114_4(char *) = Store[#return] : &:r2114_1, r2114_3 -# 2111| v2111_9(void) = ReturnIndirection[s] : &:r2111_7, m2111_8 -# 2111| r2111_10(glval<char *>) = VariableAddress[#return] : -# 2111| v2111_11(void) = ReturnValue : &:r2111_10, m2114_4 -# 2111| v2111_12(void) = AliasedUse : m2111_3 -# 2111| v2111_13(void) = ExitFunction : - -# 2121| void call_as_child_of_ConditionDeclExpr() -# 2121| Block 0 -# 2121| v2121_1(void) = EnterFunction : -# 2121| m2121_2(unknown) = AliasedDefinition : -# 2121| m2121_3(unknown) = InitializeNonLocal : -# 2121| m2121_4(unknown) = Chi : total:m2121_2, partial:m2121_3 -# 2122| r2122_1(glval<HasOperatorBool>) = VariableAddress[b] : -# 2122| r2122_2(HasOperatorBool) = Constant[0] : -# 2122| m2122_3(HasOperatorBool) = Store[b] : &:r2122_1, r2122_2 -# 2122| r2122_4(glval<HasOperatorBool>) = VariableAddress[b] : -# 2122| r2122_5(glval<unknown>) = FunctionAddress[operator bool] : -# 2122| r2122_6(bool) = Call[operator bool] : func:r2122_5, this:r2122_4 -# 2122| m2122_7(unknown) = ^CallSideEffect : ~m2121_4 -# 2122| m2122_8(unknown) = Chi : total:m2121_4, partial:m2122_7 -# 2122| v2122_9(void) = ^IndirectReadSideEffect[-1] : &:r2122_4, m2122_3 -# 2122| m2122_10(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2122_4 -# 2122| m2122_11(HasOperatorBool) = Chi : total:m2122_3, partial:m2122_10 -# 2122| r2122_12(bool) = CopyValue : r2122_6 -# 2122| v2122_13(void) = ConditionalBranch : r2122_12 +# 2142| Block 1 +# 2142| r2142_1(glval<unknown>) = FunctionAddress[CallsNonExit] : +# 2142| v2142_2(void) = Call[CallsNonExit] : func:r2142_1 +# 2139| v2139_5(void) = Unreached : + +# 2143| Block 2 +# 2143| r2143_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2143| v2143_2(void) = Call[VoidFunc] : func:r2143_1 +# 2143| m2143_3(unknown) = ^CallSideEffect : ~m2140_7 +# 2143| m2143_4(unknown) = Chi : total:m2140_7, partial:m2143_3 +# 2144| r2144_1(glval<int>) = VariableAddress[#return] : +# 2144| r2144_2(glval<int>) = VariableAddress[x] : +# 2144| r2144_3(int) = Load[x] : &:r2144_2, m2140_8 +# 2144| m2144_4(int) = Store[#return] : &:r2144_1, r2144_3 +# 2139| r2139_6(glval<int>) = VariableAddress[#return] : +# 2139| v2139_7(void) = ReturnValue : &:r2139_6, m2144_4 +# 2139| v2139_8(void) = AliasedUse : ~m2143_4 +# 2139| v2139_9(void) = ExitFunction : + +# 2147| void newArrayCorrectType(size_t) +# 2147| Block 0 +# 2147| v2147_1(void) = EnterFunction : +# 2147| m2147_2(unknown) = AliasedDefinition : +# 2147| m2147_3(unknown) = InitializeNonLocal : +# 2147| m2147_4(unknown) = Chi : total:m2147_2, partial:m2147_3 +# 2147| r2147_5(glval<unsigned long>) = VariableAddress[n] : +# 2147| m2147_6(unsigned long) = InitializeParameter[n] : &:r2147_5 +# 2148| r2148_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2148| r2148_2(glval<unsigned long>) = VariableAddress[n] : +# 2148| r2148_3(unsigned long) = Load[n] : &:r2148_2, m2147_6 +# 2148| r2148_4(unsigned long) = Constant[4] : +# 2148| r2148_5(unsigned long) = Mul : r2148_3, r2148_4 +# 2148| r2148_6(void *) = Call[operator new[]] : func:r2148_1, 0:r2148_5 +# 2148| m2148_7(unknown) = ^CallSideEffect : ~m2147_4 +# 2148| m2148_8(unknown) = Chi : total:m2147_4, partial:m2148_7 +# 2148| m2148_9(unknown) = ^InitializeDynamicAllocation : &:r2148_6 +# 2148| r2148_10(int *) = Convert : r2148_6 +# 2149| r2149_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2149| r2149_2(glval<unsigned long>) = VariableAddress[n] : +# 2149| r2149_3(unsigned long) = Load[n] : &:r2149_2, m2147_6 +# 2149| r2149_4(unsigned long) = Constant[4] : +# 2149| r2149_5(unsigned long) = Mul : r2149_3, r2149_4 +# 2149| r2149_6(float) = Constant[1.0] : +# 2149| r2149_7(void *) = Call[operator new[]] : func:r2149_1, 0:r2149_5, 1:r2149_6 +# 2149| m2149_8(unknown) = ^CallSideEffect : ~m2148_8 +# 2149| m2149_9(unknown) = Chi : total:m2148_8, partial:m2149_8 +# 2149| m2149_10(unknown) = ^InitializeDynamicAllocation : &:r2149_7 +# 2149| r2149_11(int *) = Convert : r2149_7 +# 2150| r2150_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2150| r2150_2(glval<unsigned long>) = VariableAddress[n] : +# 2150| r2150_3(unsigned long) = Load[n] : &:r2150_2, m2147_6 +# 2150| r2150_4(unsigned long) = Constant[8] : +# 2150| r2150_5(unsigned long) = Mul : r2150_3, r2150_4 +# 2150| r2150_6(void *) = Call[operator new[]] : func:r2150_1, 0:r2150_5 +# 2150| m2150_7(unknown) = ^CallSideEffect : ~m2149_9 +# 2150| m2150_8(unknown) = Chi : total:m2149_9, partial:m2150_7 +# 2150| m2150_9(unknown) = ^InitializeDynamicAllocation : &:r2150_6 +# 2150| r2150_10(String *) = Convert : r2150_6 +# 2151| r2151_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2151| r2151_2(glval<unsigned long>) = VariableAddress[n] : +# 2151| r2151_3(unsigned long) = Load[n] : &:r2151_2, m2147_6 +# 2151| r2151_4(unsigned long) = Constant[256] : +# 2151| r2151_5(unsigned long) = Mul : r2151_3, r2151_4 +# 2151| r2151_6(align_val_t) = Constant[128] : +# 2151| r2151_7(void *) = Call[operator new[]] : func:r2151_1, 0:r2151_5, 1:r2151_6 +# 2151| m2151_8(unknown) = ^CallSideEffect : ~m2150_8 +# 2151| m2151_9(unknown) = Chi : total:m2150_8, partial:m2151_8 +# 2151| m2151_10(unknown) = ^InitializeDynamicAllocation : &:r2151_7 +# 2151| r2151_11(Overaligned *) = Convert : r2151_7 +# 2152| r2152_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2152| r2152_2(glval<unsigned long>) = VariableAddress[n] : +# 2152| r2152_3(unsigned long) = Load[n] : &:r2152_2, m2147_6 +# 2152| r2152_4(unsigned long) = Constant[1] : +# 2152| r2152_5(unsigned long) = Mul : r2152_3, r2152_4 +# 2152| r2152_6(void *) = Call[operator new[]] : func:r2152_1, 0:r2152_5 +# 2152| m2152_7(unknown) = ^CallSideEffect : ~m2151_9 +# 2152| m2152_8(unknown) = Chi : total:m2151_9, partial:m2152_7 +# 2152| m2152_9(unknown) = ^InitializeDynamicAllocation : &:r2152_6 +# 2152| r2152_10(DefaultCtorWithDefaultParam *) = Convert : r2152_6 +# 2153| r2153_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2153| r2153_2(glval<unsigned long>) = VariableAddress[n] : +# 2153| r2153_3(unsigned long) = Load[n] : &:r2153_2, m2147_6 +# 2153| r2153_4(unsigned long) = Constant[4] : +# 2153| r2153_5(unsigned long) = Mul : r2153_3, r2153_4 +# 2153| r2153_6(void *) = Call[operator new[]] : func:r2153_1, 0:r2153_5 +# 2153| m2153_7(unknown) = ^CallSideEffect : ~m2152_8 +# 2153| m2153_8(unknown) = Chi : total:m2152_8, partial:m2153_7 +# 2153| m2153_9(unknown) = ^InitializeDynamicAllocation : &:r2153_6 +# 2153| r2153_10(int *) = Convert : r2153_6 +# 2154| v2154_1(void) = NoOp : +# 2147| v2147_7(void) = ReturnVoid : +# 2147| v2147_8(void) = AliasedUse : ~m2153_8 +# 2147| v2147_9(void) = ExitFunction : + +# 2158| char* test_strtod(char*) +# 2158| Block 0 +# 2158| v2158_1(void) = EnterFunction : +# 2158| m2158_2(unknown) = AliasedDefinition : +# 2158| m2158_3(unknown) = InitializeNonLocal : +# 2158| m2158_4(unknown) = Chi : total:m2158_2, partial:m2158_3 +# 2158| r2158_5(glval<char *>) = VariableAddress[s] : +# 2158| m2158_6(char *) = InitializeParameter[s] : &:r2158_5 +# 2158| r2158_7(char *) = Load[s] : &:r2158_5, m2158_6 +# 2158| m2158_8(unknown) = InitializeIndirection[s] : &:r2158_7 +# 2159| r2159_1(glval<char *>) = VariableAddress[end] : +# 2159| m2159_2(char *) = Uninitialized[end] : &:r2159_1 +# 2160| r2160_1(glval<double>) = VariableAddress[d] : +# 2160| r2160_2(glval<unknown>) = FunctionAddress[strtod] : +# 2160| r2160_3(glval<char *>) = VariableAddress[s] : +# 2160| r2160_4(char *) = Load[s] : &:r2160_3, m2158_6 +# 2160| r2160_5(char *) = Convert : r2160_4 +# 2160| r2160_6(glval<char *>) = VariableAddress[end] : +# 2160| r2160_7(char **) = CopyValue : r2160_6 +# 2160| r2160_8(double) = Call[strtod] : func:r2160_2, 0:r2160_5, 1:r2160_7 +# 2160| v2160_9(void) = ^BufferReadSideEffect[0] : &:r2160_5, ~m2158_8 +# 2160| m2160_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2160_7 +# 2160| m2160_11(char *) = Chi : total:m2159_2, partial:m2160_10 +# 2160| m2160_12(double) = Store[d] : &:r2160_1, r2160_8 +# 2161| r2161_1(glval<char *>) = VariableAddress[#return] : +# 2161| r2161_2(glval<char *>) = VariableAddress[end] : +# 2161| r2161_3(char *) = Load[end] : &:r2161_2, m2160_11 +# 2161| m2161_4(char *) = Store[#return] : &:r2161_1, r2161_3 +# 2158| v2158_9(void) = ReturnIndirection[s] : &:r2158_7, m2158_8 +# 2158| r2158_10(glval<char *>) = VariableAddress[#return] : +# 2158| v2158_11(void) = ReturnValue : &:r2158_10, m2161_4 +# 2158| v2158_12(void) = AliasedUse : m2158_3 +# 2158| v2158_13(void) = ExitFunction : + +# 2168| void call_as_child_of_ConditionDeclExpr() +# 2168| Block 0 +# 2168| v2168_1(void) = EnterFunction : +# 2168| m2168_2(unknown) = AliasedDefinition : +# 2168| m2168_3(unknown) = InitializeNonLocal : +# 2168| m2168_4(unknown) = Chi : total:m2168_2, partial:m2168_3 +# 2169| r2169_1(glval<HasOperatorBool>) = VariableAddress[b] : +# 2169| r2169_2(HasOperatorBool) = Constant[0] : +# 2169| m2169_3(HasOperatorBool) = Store[b] : &:r2169_1, r2169_2 +# 2169| r2169_4(glval<HasOperatorBool>) = VariableAddress[b] : +# 2169| r2169_5(glval<unknown>) = FunctionAddress[operator bool] : +# 2169| r2169_6(bool) = Call[operator bool] : func:r2169_5, this:r2169_4 +# 2169| m2169_7(unknown) = ^CallSideEffect : ~m2168_4 +# 2169| m2169_8(unknown) = Chi : total:m2168_4, partial:m2169_7 +# 2169| v2169_9(void) = ^IndirectReadSideEffect[-1] : &:r2169_4, m2169_3 +# 2169| m2169_10(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2169_4 +# 2169| m2169_11(HasOperatorBool) = Chi : total:m2169_3, partial:m2169_10 +# 2169| r2169_12(bool) = CopyValue : r2169_6 +# 2169| v2169_13(void) = ConditionalBranch : r2169_12 #-----| False -> Block 2 #-----| True -> Block 1 -# 2122| Block 1 -# 2122| v2122_14(void) = NoOp : +# 2169| Block 1 +# 2169| v2169_14(void) = NoOp : #-----| Goto -> Block 2 -# 2123| Block 2 -# 2123| v2123_1(void) = NoOp : -# 2121| v2121_5(void) = ReturnVoid : -# 2121| v2121_6(void) = AliasedUse : ~m2122_8 -# 2121| v2121_7(void) = ExitFunction : - -# 2125| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2125| Block 0 -# 2125| v2125_1(void) = EnterFunction : -# 2125| m2125_2(unknown) = AliasedDefinition : -# 2125| m2125_3(unknown) = InitializeNonLocal : -# 2125| m2125_4(unknown) = Chi : total:m2125_2, partial:m2125_3 -# 2125| r2125_5(glval<unknown>) = VariableAddress[#this] : -# 2125| m2125_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2125_5 -# 2125| r2125_7(glval<ClassWithDestructor>) = Load[#this] : &:r2125_5, m2125_6 -# 2125| m2125_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2125_7 +# 2170| Block 2 +# 2170| v2170_1(void) = NoOp : +# 2168| v2168_5(void) = ReturnVoid : +# 2168| v2168_6(void) = AliasedUse : ~m2169_8 +# 2168| v2168_7(void) = ExitFunction : + +# 2172| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2172| Block 0 +# 2172| v2172_1(void) = EnterFunction : +# 2172| m2172_2(unknown) = AliasedDefinition : +# 2172| m2172_3(unknown) = InitializeNonLocal : +# 2172| m2172_4(unknown) = Chi : total:m2172_2, partial:m2172_3 +# 2172| r2172_5(glval<unknown>) = VariableAddress[#this] : +# 2172| m2172_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2172_5 +# 2172| r2172_7(glval<ClassWithDestructor>) = Load[#this] : &:r2172_5, m2172_6 +# 2172| m2172_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2172_7 #-----| r0_1(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2125| r2125_9(glval<char *>) = FieldAddress[x] : m2125_6 -# 2125| r2125_10(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : -# 2125| r2125_11(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2125_10, m0_2 -# 2125| r2125_12(glval<ClassWithDestructor>) = CopyValue : r2125_11 -# 2125| r2125_13(glval<char *>) = FieldAddress[x] : r2125_12 -# 2125| r2125_14(char *) = Load[?] : &:r2125_13, ~m0_4 -# 2125| m2125_15(char *) = Store[?] : &:r2125_9, r2125_14 -# 2125| m2125_16(unknown) = Chi : total:m2125_8, partial:m2125_15 -# 2125| v2125_17(void) = NoOp : -# 2125| v2125_18(void) = ReturnIndirection[#this] : &:r2125_7, m2125_16 +# 2172| r2172_9(glval<char *>) = FieldAddress[x] : m2172_6 +# 2172| r2172_10(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : +# 2172| r2172_11(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2172_10, m0_2 +# 2172| r2172_12(glval<ClassWithDestructor>) = CopyValue : r2172_11 +# 2172| r2172_13(glval<char *>) = FieldAddress[x] : r2172_12 +# 2172| r2172_14(char *) = Load[?] : &:r2172_13, ~m0_4 +# 2172| m2172_15(char *) = Store[?] : &:r2172_9, r2172_14 +# 2172| m2172_16(unknown) = Chi : total:m2172_8, partial:m2172_15 +# 2172| v2172_17(void) = NoOp : +# 2172| v2172_18(void) = ReturnIndirection[#this] : &:r2172_7, m2172_16 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2125| v2125_19(void) = ReturnVoid : -# 2125| v2125_20(void) = AliasedUse : m2125_3 -# 2125| v2125_21(void) = ExitFunction : - -# 2128| void ClassWithDestructor::ClassWithDestructor() -# 2128| Block 0 -# 2128| v2128_1(void) = EnterFunction : -# 2128| m2128_2(unknown) = AliasedDefinition : -# 2128| m2128_3(unknown) = InitializeNonLocal : -# 2128| m2128_4(unknown) = Chi : total:m2128_2, partial:m2128_3 -# 2128| r2128_5(glval<unknown>) = VariableAddress[#this] : -# 2128| m2128_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2128_5 -# 2128| r2128_7(glval<ClassWithDestructor>) = Load[#this] : &:r2128_5, m2128_6 -# 2128| m2128_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2128_7 -# 2128| r2128_9(glval<unknown>) = FunctionAddress[operator new] : -# 2128| r2128_10(unsigned long) = Constant[1] : -# 2128| r2128_11(void *) = Call[operator new] : func:r2128_9, 0:r2128_10 -# 2128| m2128_12(unknown) = ^CallSideEffect : ~m2128_4 -# 2128| m2128_13(unknown) = Chi : total:m2128_4, partial:m2128_12 -# 2128| m2128_14(unknown) = ^InitializeDynamicAllocation : &:r2128_11 -# 2128| r2128_15(char *) = Convert : r2128_11 -# 2128| r2128_16(glval<unknown>) = VariableAddress[#this] : -# 2128| r2128_17(ClassWithDestructor *) = Load[#this] : &:r2128_16, m2128_6 -# 2128| r2128_18(glval<char *>) = FieldAddress[x] : r2128_17 -# 2128| m2128_19(char *) = Store[?] : &:r2128_18, r2128_15 -# 2128| m2128_20(unknown) = Chi : total:m2128_8, partial:m2128_19 -# 2128| v2128_21(void) = NoOp : -# 2128| v2128_22(void) = ReturnIndirection[#this] : &:r2128_7, m2128_20 -# 2128| v2128_23(void) = ReturnVoid : -# 2128| v2128_24(void) = AliasedUse : ~m2128_13 -# 2128| v2128_25(void) = ExitFunction : - -# 2129| void ClassWithDestructor::~ClassWithDestructor() -# 2129| Block 0 -# 2129| v2129_1(void) = EnterFunction : -# 2129| m2129_2(unknown) = AliasedDefinition : -# 2129| m2129_3(unknown) = InitializeNonLocal : -# 2129| m2129_4(unknown) = Chi : total:m2129_2, partial:m2129_3 -# 2129| r2129_5(glval<unknown>) = VariableAddress[#this] : -# 2129| m2129_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2129_5 -# 2129| r2129_7(glval<ClassWithDestructor>) = Load[#this] : &:r2129_5, m2129_6 -# 2129| m2129_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2129_7 -# 2129| r2129_9(glval<unknown>) = FunctionAddress[operator delete] : -# 2129| r2129_10(glval<unknown>) = VariableAddress[#this] : -# 2129| r2129_11(ClassWithDestructor *) = Load[#this] : &:r2129_10, m2129_6 -# 2129| r2129_12(glval<char *>) = FieldAddress[x] : r2129_11 -# 2129| r2129_13(char *) = Load[?] : &:r2129_12, ~m2129_8 -# 2129| v2129_14(void) = Call[operator delete] : func:r2129_9, 0:r2129_13 -# 2129| m2129_15(unknown) = ^CallSideEffect : ~m2129_4 -# 2129| m2129_16(unknown) = Chi : total:m2129_4, partial:m2129_15 -# 2129| v2129_17(void) = NoOp : -# 2129| v2129_18(void) = ReturnIndirection[#this] : &:r2129_7, m2129_8 -# 2129| v2129_19(void) = ReturnVoid : -# 2129| v2129_20(void) = AliasedUse : ~m2129_16 -# 2129| v2129_21(void) = ExitFunction : - -# 2131| void ClassWithDestructor::set_x(char) -# 2131| Block 0 -# 2131| v2131_1(void) = EnterFunction : -# 2131| m2131_2(unknown) = AliasedDefinition : -# 2131| m2131_3(unknown) = InitializeNonLocal : -# 2131| m2131_4(unknown) = Chi : total:m2131_2, partial:m2131_3 -# 2131| r2131_5(glval<unknown>) = VariableAddress[#this] : -# 2131| m2131_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2131_5 -# 2131| r2131_7(glval<ClassWithDestructor>) = Load[#this] : &:r2131_5, m2131_6 -# 2131| m2131_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2131_7 -# 2131| r2131_9(glval<char>) = VariableAddress[y] : -# 2131| m2131_10(char) = InitializeParameter[y] : &:r2131_9 -# 2131| r2131_11(glval<char>) = VariableAddress[y] : -# 2131| r2131_12(char) = Load[y] : &:r2131_11, m2131_10 -# 2131| r2131_13(glval<unknown>) = VariableAddress[#this] : -# 2131| r2131_14(ClassWithDestructor *) = Load[#this] : &:r2131_13, m2131_6 -# 2131| r2131_15(glval<char *>) = FieldAddress[x] : r2131_14 -# 2131| r2131_16(char *) = Load[?] : &:r2131_15, ~m2131_8 -# 2131| r2131_17(glval<char>) = CopyValue : r2131_16 -# 2131| m2131_18(char) = Store[?] : &:r2131_17, r2131_12 -# 2131| m2131_19(unknown) = Chi : total:m2131_4, partial:m2131_18 -# 2131| v2131_20(void) = NoOp : -# 2131| v2131_21(void) = ReturnIndirection[#this] : &:r2131_7, m2131_8 -# 2131| v2131_22(void) = ReturnVoid : -# 2131| v2131_23(void) = AliasedUse : ~m2131_19 -# 2131| v2131_24(void) = ExitFunction : - -# 2132| char ClassWithDestructor::get_x() -# 2132| Block 0 -# 2132| v2132_1(void) = EnterFunction : -# 2132| m2132_2(unknown) = AliasedDefinition : -# 2132| m2132_3(unknown) = InitializeNonLocal : -# 2132| m2132_4(unknown) = Chi : total:m2132_2, partial:m2132_3 -# 2132| r2132_5(glval<unknown>) = VariableAddress[#this] : -# 2132| m2132_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2132_5 -# 2132| r2132_7(glval<ClassWithDestructor>) = Load[#this] : &:r2132_5, m2132_6 -# 2132| m2132_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2132_7 -# 2132| r2132_9(glval<char>) = VariableAddress[#return] : -# 2132| r2132_10(glval<unknown>) = VariableAddress[#this] : -# 2132| r2132_11(ClassWithDestructor *) = Load[#this] : &:r2132_10, m2132_6 -# 2132| r2132_12(glval<char *>) = FieldAddress[x] : r2132_11 -# 2132| r2132_13(char *) = Load[?] : &:r2132_12, ~m2132_8 -# 2132| r2132_14(char) = Load[?] : &:r2132_13, ~m2132_4 -# 2132| m2132_15(char) = Store[#return] : &:r2132_9, r2132_14 -# 2132| v2132_16(void) = ReturnIndirection[#this] : &:r2132_7, m2132_8 -# 2132| r2132_17(glval<char>) = VariableAddress[#return] : -# 2132| v2132_18(void) = ReturnValue : &:r2132_17, m2132_15 -# 2132| v2132_19(void) = AliasedUse : m2132_3 -# 2132| v2132_20(void) = ExitFunction : - -# 2135| bool initialization_with_destructor_bool -# 2135| Block 0 -# 2135| v2135_1(void) = EnterFunction : -# 2135| m2135_2(unknown) = AliasedDefinition : -# 2135| r2135_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : -# 2135| r2135_4(bool) = Constant[1] : -# 2135| m2135_5(bool) = Store[initialization_with_destructor_bool] : &:r2135_3, r2135_4 -# 2135| m2135_6(unknown) = Chi : total:m2135_2, partial:m2135_5 -# 2135| v2135_7(void) = ReturnVoid : -# 2135| v2135_8(void) = AliasedUse : ~m2135_6 -# 2135| v2135_9(void) = ExitFunction : - -# 2137| void initialization_with_destructor(bool, char) -# 2137| Block 0 -# 2137| v2137_1(void) = EnterFunction : -# 2137| m2137_2(unknown) = AliasedDefinition : -# 2137| m2137_3(unknown) = InitializeNonLocal : -# 2137| m2137_4(unknown) = Chi : total:m2137_2, partial:m2137_3 -# 2137| r2137_5(glval<bool>) = VariableAddress[b] : -# 2137| m2137_6(bool) = InitializeParameter[b] : &:r2137_5 -# 2137| r2137_7(glval<char>) = VariableAddress[c] : -# 2137| m2137_8(char) = InitializeParameter[c] : &:r2137_7 -# 2138| r2138_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2138| m2138_2(ClassWithDestructor) = Uninitialized[x] : &:r2138_1 -# 2138| r2138_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2138| v2138_4(void) = Call[ClassWithDestructor] : func:r2138_3, this:r2138_1 -# 2138| m2138_5(unknown) = ^CallSideEffect : ~m2137_4 -# 2138| m2138_6(unknown) = Chi : total:m2137_4, partial:m2138_5 -# 2138| m2138_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2138_1 -# 2138| m2138_8(ClassWithDestructor) = Chi : total:m2138_2, partial:m2138_7 -# 2138| r2138_9(glval<bool>) = VariableAddress[b] : -# 2138| r2138_10(bool) = Load[b] : &:r2138_9, m2137_6 -# 2138| v2138_11(void) = ConditionalBranch : r2138_10 +# 2172| v2172_19(void) = ReturnVoid : +# 2172| v2172_20(void) = AliasedUse : m2172_3 +# 2172| v2172_21(void) = ExitFunction : + +# 2175| void ClassWithDestructor::ClassWithDestructor() +# 2175| Block 0 +# 2175| v2175_1(void) = EnterFunction : +# 2175| m2175_2(unknown) = AliasedDefinition : +# 2175| m2175_3(unknown) = InitializeNonLocal : +# 2175| m2175_4(unknown) = Chi : total:m2175_2, partial:m2175_3 +# 2175| r2175_5(glval<unknown>) = VariableAddress[#this] : +# 2175| m2175_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2175_5 +# 2175| r2175_7(glval<ClassWithDestructor>) = Load[#this] : &:r2175_5, m2175_6 +# 2175| m2175_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2175_7 +# 2175| r2175_9(glval<unknown>) = FunctionAddress[operator new] : +# 2175| r2175_10(unsigned long) = Constant[1] : +# 2175| r2175_11(void *) = Call[operator new] : func:r2175_9, 0:r2175_10 +# 2175| m2175_12(unknown) = ^CallSideEffect : ~m2175_4 +# 2175| m2175_13(unknown) = Chi : total:m2175_4, partial:m2175_12 +# 2175| m2175_14(unknown) = ^InitializeDynamicAllocation : &:r2175_11 +# 2175| r2175_15(char *) = Convert : r2175_11 +# 2175| r2175_16(glval<unknown>) = VariableAddress[#this] : +# 2175| r2175_17(ClassWithDestructor *) = Load[#this] : &:r2175_16, m2175_6 +# 2175| r2175_18(glval<char *>) = FieldAddress[x] : r2175_17 +# 2175| m2175_19(char *) = Store[?] : &:r2175_18, r2175_15 +# 2175| m2175_20(unknown) = Chi : total:m2175_8, partial:m2175_19 +# 2175| v2175_21(void) = NoOp : +# 2175| v2175_22(void) = ReturnIndirection[#this] : &:r2175_7, m2175_20 +# 2175| v2175_23(void) = ReturnVoid : +# 2175| v2175_24(void) = AliasedUse : ~m2175_13 +# 2175| v2175_25(void) = ExitFunction : + +# 2176| void ClassWithDestructor::~ClassWithDestructor() +# 2176| Block 0 +# 2176| v2176_1(void) = EnterFunction : +# 2176| m2176_2(unknown) = AliasedDefinition : +# 2176| m2176_3(unknown) = InitializeNonLocal : +# 2176| m2176_4(unknown) = Chi : total:m2176_2, partial:m2176_3 +# 2176| r2176_5(glval<unknown>) = VariableAddress[#this] : +# 2176| m2176_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2176_5 +# 2176| r2176_7(glval<ClassWithDestructor>) = Load[#this] : &:r2176_5, m2176_6 +# 2176| m2176_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2176_7 +# 2176| r2176_9(glval<unknown>) = FunctionAddress[operator delete] : +# 2176| r2176_10(glval<unknown>) = VariableAddress[#this] : +# 2176| r2176_11(ClassWithDestructor *) = Load[#this] : &:r2176_10, m2176_6 +# 2176| r2176_12(glval<char *>) = FieldAddress[x] : r2176_11 +# 2176| r2176_13(char *) = Load[?] : &:r2176_12, ~m2176_8 +# 2176| v2176_14(void) = Call[operator delete] : func:r2176_9, 0:r2176_13 +# 2176| m2176_15(unknown) = ^CallSideEffect : ~m2176_4 +# 2176| m2176_16(unknown) = Chi : total:m2176_4, partial:m2176_15 +# 2176| v2176_17(void) = NoOp : +# 2176| v2176_18(void) = ReturnIndirection[#this] : &:r2176_7, m2176_8 +# 2176| v2176_19(void) = ReturnVoid : +# 2176| v2176_20(void) = AliasedUse : ~m2176_16 +# 2176| v2176_21(void) = ExitFunction : + +# 2178| void ClassWithDestructor::set_x(char) +# 2178| Block 0 +# 2178| v2178_1(void) = EnterFunction : +# 2178| m2178_2(unknown) = AliasedDefinition : +# 2178| m2178_3(unknown) = InitializeNonLocal : +# 2178| m2178_4(unknown) = Chi : total:m2178_2, partial:m2178_3 +# 2178| r2178_5(glval<unknown>) = VariableAddress[#this] : +# 2178| m2178_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2178_5 +# 2178| r2178_7(glval<ClassWithDestructor>) = Load[#this] : &:r2178_5, m2178_6 +# 2178| m2178_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2178_7 +# 2178| r2178_9(glval<char>) = VariableAddress[y] : +# 2178| m2178_10(char) = InitializeParameter[y] : &:r2178_9 +# 2178| r2178_11(glval<char>) = VariableAddress[y] : +# 2178| r2178_12(char) = Load[y] : &:r2178_11, m2178_10 +# 2178| r2178_13(glval<unknown>) = VariableAddress[#this] : +# 2178| r2178_14(ClassWithDestructor *) = Load[#this] : &:r2178_13, m2178_6 +# 2178| r2178_15(glval<char *>) = FieldAddress[x] : r2178_14 +# 2178| r2178_16(char *) = Load[?] : &:r2178_15, ~m2178_8 +# 2178| r2178_17(glval<char>) = CopyValue : r2178_16 +# 2178| m2178_18(char) = Store[?] : &:r2178_17, r2178_12 +# 2178| m2178_19(unknown) = Chi : total:m2178_4, partial:m2178_18 +# 2178| v2178_20(void) = NoOp : +# 2178| v2178_21(void) = ReturnIndirection[#this] : &:r2178_7, m2178_8 +# 2178| v2178_22(void) = ReturnVoid : +# 2178| v2178_23(void) = AliasedUse : ~m2178_19 +# 2178| v2178_24(void) = ExitFunction : + +# 2179| char ClassWithDestructor::get_x() +# 2179| Block 0 +# 2179| v2179_1(void) = EnterFunction : +# 2179| m2179_2(unknown) = AliasedDefinition : +# 2179| m2179_3(unknown) = InitializeNonLocal : +# 2179| m2179_4(unknown) = Chi : total:m2179_2, partial:m2179_3 +# 2179| r2179_5(glval<unknown>) = VariableAddress[#this] : +# 2179| m2179_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2179_5 +# 2179| r2179_7(glval<ClassWithDestructor>) = Load[#this] : &:r2179_5, m2179_6 +# 2179| m2179_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2179_7 +# 2179| r2179_9(glval<char>) = VariableAddress[#return] : +# 2179| r2179_10(glval<unknown>) = VariableAddress[#this] : +# 2179| r2179_11(ClassWithDestructor *) = Load[#this] : &:r2179_10, m2179_6 +# 2179| r2179_12(glval<char *>) = FieldAddress[x] : r2179_11 +# 2179| r2179_13(char *) = Load[?] : &:r2179_12, ~m2179_8 +# 2179| r2179_14(char) = Load[?] : &:r2179_13, ~m2179_4 +# 2179| m2179_15(char) = Store[#return] : &:r2179_9, r2179_14 +# 2179| v2179_16(void) = ReturnIndirection[#this] : &:r2179_7, m2179_8 +# 2179| r2179_17(glval<char>) = VariableAddress[#return] : +# 2179| v2179_18(void) = ReturnValue : &:r2179_17, m2179_15 +# 2179| v2179_19(void) = AliasedUse : m2179_3 +# 2179| v2179_20(void) = ExitFunction : + +# 2182| bool initialization_with_destructor_bool +# 2182| Block 0 +# 2182| v2182_1(void) = EnterFunction : +# 2182| m2182_2(unknown) = AliasedDefinition : +# 2182| r2182_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : +# 2182| r2182_4(bool) = Constant[1] : +# 2182| m2182_5(bool) = Store[initialization_with_destructor_bool] : &:r2182_3, r2182_4 +# 2182| m2182_6(unknown) = Chi : total:m2182_2, partial:m2182_5 +# 2182| v2182_7(void) = ReturnVoid : +# 2182| v2182_8(void) = AliasedUse : ~m2182_6 +# 2182| v2182_9(void) = ExitFunction : + +# 2184| void initialization_with_destructor(bool, char) +# 2184| Block 0 +# 2184| v2184_1(void) = EnterFunction : +# 2184| m2184_2(unknown) = AliasedDefinition : +# 2184| m2184_3(unknown) = InitializeNonLocal : +# 2184| m2184_4(unknown) = Chi : total:m2184_2, partial:m2184_3 +# 2184| r2184_5(glval<bool>) = VariableAddress[b] : +# 2184| m2184_6(bool) = InitializeParameter[b] : &:r2184_5 +# 2184| r2184_7(glval<char>) = VariableAddress[c] : +# 2184| m2184_8(char) = InitializeParameter[c] : &:r2184_7 +# 2185| r2185_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2185| m2185_2(ClassWithDestructor) = Uninitialized[x] : &:r2185_1 +# 2185| r2185_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2185| v2185_4(void) = Call[ClassWithDestructor] : func:r2185_3, this:r2185_1 +# 2185| m2185_5(unknown) = ^CallSideEffect : ~m2184_4 +# 2185| m2185_6(unknown) = Chi : total:m2184_4, partial:m2185_5 +# 2185| m2185_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 +# 2185| m2185_8(ClassWithDestructor) = Chi : total:m2185_2, partial:m2185_7 +# 2185| r2185_9(glval<bool>) = VariableAddress[b] : +# 2185| r2185_10(bool) = Load[b] : &:r2185_9, m2184_6 +# 2185| v2185_11(void) = ConditionalBranch : r2185_10 #-----| False -> Block 3 #-----| True -> Block 2 -# 2137| Block 1 -# 2137| m2137_9(unknown) = Phi : from 13:~m2172_5, from 19:~m2172_13, from 23:~m2172_22 -# 2137| v2137_10(void) = ReturnVoid : -# 2137| v2137_11(void) = AliasedUse : ~m2137_9 -# 2137| v2137_12(void) = ExitFunction : - -# 2139| Block 2 -# 2139| r2139_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2139| r2139_2(glval<unknown>) = FunctionAddress[set_x] : -# 2139| r2139_3(char) = Constant[97] : -# 2139| v2139_4(void) = Call[set_x] : func:r2139_2, this:r2139_1, 0:r2139_3 -# 2139| m2139_5(unknown) = ^CallSideEffect : ~m2138_6 -# 2139| m2139_6(unknown) = Chi : total:m2138_6, partial:m2139_5 -# 2139| v2139_7(void) = ^IndirectReadSideEffect[-1] : &:r2139_1, m2138_8 -# 2139| m2139_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2139_1 -# 2139| m2139_9(ClassWithDestructor) = Chi : total:m2138_8, partial:m2139_8 -# 2139| r2139_10(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2139| r2139_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2139| v2139_12(void) = Call[~ClassWithDestructor] : func:r2139_11, this:r2139_10 -# 2139| m2139_13(unknown) = ^CallSideEffect : ~m2139_6 -# 2139| m2139_14(unknown) = Chi : total:m2139_6, partial:m2139_13 -# 2139| v2139_15(void) = ^IndirectReadSideEffect[-1] : &:r2139_10, m2139_9 -# 2139| m2139_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2139_10 -# 2139| m2139_17(ClassWithDestructor) = Chi : total:m2139_9, partial:m2139_16 +# 2184| Block 1 +# 2184| m2184_9(unknown) = Phi : from 13:~m2219_5, from 19:~m2219_13, from 23:~m2219_22 +# 2184| v2184_10(void) = ReturnVoid : +# 2184| v2184_11(void) = AliasedUse : ~m2184_9 +# 2184| v2184_12(void) = ExitFunction : + +# 2186| Block 2 +# 2186| r2186_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2186| r2186_2(glval<unknown>) = FunctionAddress[set_x] : +# 2186| r2186_3(char) = Constant[97] : +# 2186| v2186_4(void) = Call[set_x] : func:r2186_2, this:r2186_1, 0:r2186_3 +# 2186| m2186_5(unknown) = ^CallSideEffect : ~m2185_6 +# 2186| m2186_6(unknown) = Chi : total:m2185_6, partial:m2186_5 +# 2186| v2186_7(void) = ^IndirectReadSideEffect[-1] : &:r2186_1, m2185_8 +# 2186| m2186_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 +# 2186| m2186_9(ClassWithDestructor) = Chi : total:m2185_8, partial:m2186_8 +# 2186| r2186_10(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2186| r2186_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2186| v2186_12(void) = Call[~ClassWithDestructor] : func:r2186_11, this:r2186_10 +# 2186| m2186_13(unknown) = ^CallSideEffect : ~m2186_6 +# 2186| m2186_14(unknown) = Chi : total:m2186_6, partial:m2186_13 +# 2186| v2186_15(void) = ^IndirectReadSideEffect[-1] : &:r2186_10, m2186_9 +# 2186| m2186_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_10 +# 2186| m2186_17(ClassWithDestructor) = Chi : total:m2186_9, partial:m2186_16 #-----| Goto -> Block 3 -# 2141| Block 3 -# 2141| m2141_1(unknown) = Phi : from 0:~m2138_6, from 2:~m2139_14 -# 2141| r2141_2(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2141| m2141_3(ClassWithDestructor) = Uninitialized[x] : &:r2141_2 -# 2141| r2141_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2141| v2141_5(void) = Call[ClassWithDestructor] : func:r2141_4, this:r2141_2 -# 2141| m2141_6(unknown) = ^CallSideEffect : ~m2141_1 -# 2141| m2141_7(unknown) = Chi : total:m2141_1, partial:m2141_6 -# 2141| m2141_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2141_2 -# 2141| m2141_9(ClassWithDestructor) = Chi : total:m2141_3, partial:m2141_8 -# 2141| r2141_10(bool) = Constant[1] : -# 2141| v2141_11(void) = ConditionalBranch : r2141_10 +# 2188| Block 3 +# 2188| m2188_1(unknown) = Phi : from 0:~m2185_6, from 2:~m2186_14 +# 2188| r2188_2(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2188| m2188_3(ClassWithDestructor) = Uninitialized[x] : &:r2188_2 +# 2188| r2188_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2188| v2188_5(void) = Call[ClassWithDestructor] : func:r2188_4, this:r2188_2 +# 2188| m2188_6(unknown) = ^CallSideEffect : ~m2188_1 +# 2188| m2188_7(unknown) = Chi : total:m2188_1, partial:m2188_6 +# 2188| m2188_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_2 +# 2188| m2188_9(ClassWithDestructor) = Chi : total:m2188_3, partial:m2188_8 +# 2188| r2188_10(bool) = Constant[1] : +# 2188| v2188_11(void) = ConditionalBranch : r2188_10 #-----| False -> Block 24 #-----| True -> Block 4 -# 2142| Block 4 -# 2142| r2142_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2142| r2142_2(glval<unknown>) = FunctionAddress[set_x] : -# 2142| r2142_3(char) = Constant[97] : -# 2142| v2142_4(void) = Call[set_x] : func:r2142_2, this:r2142_1, 0:r2142_3 -# 2142| m2142_5(unknown) = ^CallSideEffect : ~m2141_7 -# 2142| m2142_6(unknown) = Chi : total:m2141_7, partial:m2142_5 -# 2142| v2142_7(void) = ^IndirectReadSideEffect[-1] : &:r2142_1, m2141_9 -# 2142| m2142_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2142_1 -# 2142| m2142_9(ClassWithDestructor) = Chi : total:m2141_9, partial:m2142_8 -# 2144| r2144_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2144| m2144_2(ClassWithDestructor) = Uninitialized[x] : &:r2144_1 -# 2144| r2144_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2144| v2144_4(void) = Call[ClassWithDestructor] : func:r2144_3, this:r2144_1 -# 2144| m2144_5(unknown) = ^CallSideEffect : ~m2142_6 -# 2144| m2144_6(unknown) = Chi : total:m2142_6, partial:m2144_5 -# 2144| m2144_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2144_1 -# 2144| m2144_8(ClassWithDestructor) = Chi : total:m2144_2, partial:m2144_7 -# 2144| r2144_9(glval<char>) = VariableAddress[c] : -# 2144| r2144_10(char) = Load[c] : &:r2144_9, m2137_8 -# 2144| r2144_11(int) = Convert : r2144_10 -# 2144| v2144_12(void) = Switch : r2144_11 +# 2189| Block 4 +# 2189| r2189_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2189| r2189_2(glval<unknown>) = FunctionAddress[set_x] : +# 2189| r2189_3(char) = Constant[97] : +# 2189| v2189_4(void) = Call[set_x] : func:r2189_2, this:r2189_1, 0:r2189_3 +# 2189| m2189_5(unknown) = ^CallSideEffect : ~m2188_7 +# 2189| m2189_6(unknown) = Chi : total:m2188_7, partial:m2189_5 +# 2189| v2189_7(void) = ^IndirectReadSideEffect[-1] : &:r2189_1, m2188_9 +# 2189| m2189_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2189_1 +# 2189| m2189_9(ClassWithDestructor) = Chi : total:m2188_9, partial:m2189_8 +# 2191| r2191_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2191| m2191_2(ClassWithDestructor) = Uninitialized[x] : &:r2191_1 +# 2191| r2191_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2191| v2191_4(void) = Call[ClassWithDestructor] : func:r2191_3, this:r2191_1 +# 2191| m2191_5(unknown) = ^CallSideEffect : ~m2189_6 +# 2191| m2191_6(unknown) = Chi : total:m2189_6, partial:m2191_5 +# 2191| m2191_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2191_1 +# 2191| m2191_8(ClassWithDestructor) = Chi : total:m2191_2, partial:m2191_7 +# 2191| r2191_9(glval<char>) = VariableAddress[c] : +# 2191| r2191_10(char) = Load[c] : &:r2191_9, m2184_8 +# 2191| r2191_11(int) = Convert : r2191_10 +# 2191| v2191_12(void) = Switch : r2191_11 #-----| Case[97] -> Block 5 #-----| Default -> Block 6 -# 2145| Block 5 -# 2145| v2145_1(void) = NoOp : -# 2146| r2146_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2146| r2146_2(glval<unknown>) = FunctionAddress[set_x] : -# 2146| r2146_3(char) = Constant[97] : -# 2146| v2146_4(void) = Call[set_x] : func:r2146_2, this:r2146_1, 0:r2146_3 -# 2146| m2146_5(unknown) = ^CallSideEffect : ~m2144_6 -# 2146| m2146_6(unknown) = Chi : total:m2144_6, partial:m2146_5 -# 2146| v2146_7(void) = ^IndirectReadSideEffect[-1] : &:r2146_1, m2144_8 -# 2146| m2146_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2146_1 -# 2146| m2146_9(ClassWithDestructor) = Chi : total:m2144_8, partial:m2146_8 -# 2147| v2147_1(void) = NoOp : +# 2192| Block 5 +# 2192| v2192_1(void) = NoOp : +# 2193| r2193_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2193| r2193_2(glval<unknown>) = FunctionAddress[set_x] : +# 2193| r2193_3(char) = Constant[97] : +# 2193| v2193_4(void) = Call[set_x] : func:r2193_2, this:r2193_1, 0:r2193_3 +# 2193| m2193_5(unknown) = ^CallSideEffect : ~m2191_6 +# 2193| m2193_6(unknown) = Chi : total:m2191_6, partial:m2193_5 +# 2193| v2193_7(void) = ^IndirectReadSideEffect[-1] : &:r2193_1, m2191_8 +# 2193| m2193_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2193_1 +# 2193| m2193_9(ClassWithDestructor) = Chi : total:m2191_8, partial:m2193_8 +# 2194| v2194_1(void) = NoOp : #-----| Goto -> Block 7 -# 2148| Block 6 -# 2148| v2148_1(void) = NoOp : -# 2149| r2149_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2149| r2149_2(glval<unknown>) = FunctionAddress[set_x] : -# 2149| r2149_3(char) = Constant[98] : -# 2149| v2149_4(void) = Call[set_x] : func:r2149_2, this:r2149_1, 0:r2149_3 -# 2149| m2149_5(unknown) = ^CallSideEffect : ~m2144_6 -# 2149| m2149_6(unknown) = Chi : total:m2144_6, partial:m2149_5 -# 2149| v2149_7(void) = ^IndirectReadSideEffect[-1] : &:r2149_1, m2144_8 -# 2149| m2149_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2149_1 -# 2149| m2149_9(ClassWithDestructor) = Chi : total:m2144_8, partial:m2149_8 -# 2150| v2150_1(void) = NoOp : +# 2195| Block 6 +# 2195| v2195_1(void) = NoOp : +# 2196| r2196_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2196| r2196_2(glval<unknown>) = FunctionAddress[set_x] : +# 2196| r2196_3(char) = Constant[98] : +# 2196| v2196_4(void) = Call[set_x] : func:r2196_2, this:r2196_1, 0:r2196_3 +# 2196| m2196_5(unknown) = ^CallSideEffect : ~m2191_6 +# 2196| m2196_6(unknown) = Chi : total:m2191_6, partial:m2196_5 +# 2196| v2196_7(void) = ^IndirectReadSideEffect[-1] : &:r2196_1, m2191_8 +# 2196| m2196_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2196_1 +# 2196| m2196_9(ClassWithDestructor) = Chi : total:m2191_8, partial:m2196_8 +# 2197| v2197_1(void) = NoOp : #-----| Goto -> Block 7 -# 2151| Block 7 -# 2151| m2151_1(unknown) = Phi : from 5:~m2146_6, from 6:~m2149_6 -# 2151| v2151_2(void) = NoOp : -# 2153| r2153_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2153| m2153_2(ClassWithDestructor) = Uninitialized[x] : &:r2153_1 -# 2153| r2153_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2153| v2153_4(void) = Call[ClassWithDestructor] : func:r2153_3, this:r2153_1 -# 2153| m2153_5(unknown) = ^CallSideEffect : ~m2151_1 -# 2153| m2153_6(unknown) = Chi : total:m2151_1, partial:m2153_5 -# 2153| m2153_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2153_1 -# 2153| m2153_8(ClassWithDestructor) = Chi : total:m2153_2, partial:m2153_7 -# 2154| r2154_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2154| m2154_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2154_1 -# 2154| r2154_3(glval<unknown>) = FunctionAddress[vector] : -# 2154| r2154_4(glval<ClassWithDestructor>) = VariableAddress[#temp2154:40] : -# 2154| r2154_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2154| r2154_6(ClassWithDestructor) = Load[x] : &:r2154_5, m2153_8 -# 2154| m2154_7(ClassWithDestructor) = Store[#temp2154:40] : &:r2154_4, r2154_6 -# 2154| r2154_8(ClassWithDestructor) = Load[#temp2154:40] : &:r2154_4, m2154_7 -# 2154| v2154_9(void) = Call[vector] : func:r2154_3, this:r2154_1, 0:r2154_8 -# 2154| m2154_10(unknown) = ^CallSideEffect : ~m2153_6 -# 2154| m2154_11(unknown) = Chi : total:m2153_6, partial:m2154_10 -# 2154| m2154_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2154_1 -# 2154| m2154_13(vector<ClassWithDestructor>) = Chi : total:m2154_2, partial:m2154_12 -# 2154| r2154_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2154| r2154_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2154| r2154_16(vector<ClassWithDestructor> &) = CopyValue : r2154_15 -# 2154| m2154_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2154_14, r2154_16 -# 2154| r2154_18(glval<iterator>) = VariableAddress[(__begin)] : -# 2154| r2154_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2154| r2154_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2154_19, m2154_17 -#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2154_20 -#-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 -# 2154| r2154_21(glval<unknown>) = FunctionAddress[begin] : -# 2154| r2154_22(iterator) = Call[begin] : func:r2154_21, this:r0_2 -# 2154| m2154_23(unknown) = ^CallSideEffect : ~m2154_11 -# 2154| m2154_24(unknown) = Chi : total:m2154_11, partial:m2154_23 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2154_13 -# 2154| m2154_25(iterator) = Store[(__begin)] : &:r2154_18, r2154_22 -# 2154| r2154_26(glval<iterator>) = VariableAddress[(__end)] : -# 2154| r2154_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2154| r2154_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2154_27, m2154_17 -#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2154_28 -#-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 -# 2154| r2154_29(glval<unknown>) = FunctionAddress[end] : -# 2154| r2154_30(iterator) = Call[end] : func:r2154_29, this:r0_5 -# 2154| m2154_31(unknown) = ^CallSideEffect : ~m2154_24 -# 2154| m2154_32(unknown) = Chi : total:m2154_24, partial:m2154_31 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2154_13 -# 2154| m2154_33(iterator) = Store[(__end)] : &:r2154_26, r2154_30 +# 2198| Block 7 +# 2198| m2198_1(unknown) = Phi : from 5:~m2193_6, from 6:~m2196_6 +# 2198| v2198_2(void) = NoOp : +# 2200| r2200_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2200| m2200_2(ClassWithDestructor) = Uninitialized[x] : &:r2200_1 +# 2200| r2200_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2200| v2200_4(void) = Call[ClassWithDestructor] : func:r2200_3, this:r2200_1 +# 2200| m2200_5(unknown) = ^CallSideEffect : ~m2198_1 +# 2200| m2200_6(unknown) = Chi : total:m2198_1, partial:m2200_5 +# 2200| m2200_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 +# 2200| m2200_8(ClassWithDestructor) = Chi : total:m2200_2, partial:m2200_7 +# 2201| r2201_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2201| m2201_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2201_1 +# 2201| r2201_3(glval<unknown>) = FunctionAddress[vector] : +# 2201| r2201_4(glval<ClassWithDestructor>) = VariableAddress[#temp2201:45] : +# 2201| r2201_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2201| r2201_6(ClassWithDestructor) = Load[x] : &:r2201_5, m2200_8 +# 2201| m2201_7(ClassWithDestructor) = Store[#temp2201:45] : &:r2201_4, r2201_6 +# 2201| r2201_8(ClassWithDestructor) = Load[#temp2201:45] : &:r2201_4, m2201_7 +# 2201| v2201_9(void) = Call[vector] : func:r2201_3, this:r2201_1, 0:r2201_8 +# 2201| m2201_10(unknown) = ^CallSideEffect : ~m2200_6 +# 2201| m2201_11(unknown) = Chi : total:m2200_6, partial:m2201_10 +# 2201| m2201_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 +# 2201| m2201_13(vector<ClassWithDestructor>) = Chi : total:m2201_2, partial:m2201_12 +# 2201| r2201_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2201| r2201_16(vector<ClassWithDestructor> &) = CopyValue : r2201_15 +# 2201| m2201_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2201_14, r2201_16 +# 2201| r2201_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2201| r2201_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_19, m2201_17 +#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_20 +#-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 +# 2201| r2201_21(glval<unknown>) = FunctionAddress[begin] : +# 2201| r2201_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2201_21, this:r0_2 +# 2201| m2201_23(unknown) = ^CallSideEffect : ~m2201_11 +# 2201| m2201_24(unknown) = Chi : total:m2201_11, partial:m2201_23 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2201_13 +# 2201| m2201_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_18, r2201_22 +# 2201| r2201_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2201| r2201_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_27, m2201_17 +#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_28 +#-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 +# 2201| r2201_29(glval<unknown>) = FunctionAddress[end] : +# 2201| r2201_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_29, this:r0_5 +# 2201| m2201_31(unknown) = ^CallSideEffect : ~m2201_24 +# 2201| m2201_32(unknown) = Chi : total:m2201_24, partial:m2201_31 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2201_13 +# 2201| m2201_33(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_26, r2201_30 #-----| Goto -> Block 8 -# 2154| Block 8 -# 2154| m2154_34(iterator) = Phi : from 7:m2154_25, from 9:m2154_67 -# 2154| m2154_35(unknown) = Phi : from 7:~m2154_32, from 9:~m2154_64 -# 2154| r2154_36(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator>) = Convert : r2154_36 -# 2154| r2154_37(glval<unknown>) = FunctionAddress[operator!=] : -# 2154| r2154_38(glval<iterator>) = VariableAddress[(__end)] : -# 2154| r2154_39(iterator) = Load[(__end)] : &:r2154_38, m2154_33 -# 2154| r2154_40(bool) = Call[operator!=] : func:r2154_37, this:r0_7, 0:r2154_39 -# 2154| m2154_41(unknown) = ^CallSideEffect : ~m2154_35 -# 2154| m2154_42(unknown) = Chi : total:m2154_35, partial:m2154_41 -#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2154_34 -# 2154| v2154_43(void) = ConditionalBranch : r2154_40 +# 2201| Block 8 +# 2201| m2201_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 7:m2201_25, from 9:m2201_72 +# 2201| m2201_35(unknown) = Phi : from 7:~m2201_32, from 9:~m2201_69 +# 2201| r2201_36(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_36 +# 2201| r2201_37(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : +#-----| m0_9(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_8 +# 2201| r2201_38(glval<unknown>) = FunctionAddress[iterator] : +# 2201| r2201_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_39 +#-----| r0_11(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_10 +# 2201| v2201_40(void) = Call[iterator] : func:r2201_38, this:r0_8, 0:r0_11 +# 2201| m2201_41(unknown) = ^CallSideEffect : ~m2201_35 +# 2201| m2201_42(unknown) = Chi : total:m2201_35, partial:m2201_41 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2201_33 +# 2201| m2201_43(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2201| m2201_44(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_9, partial:m2201_43 +#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, m2201_44 +# 2201| r2201_45(bool) = Call[operator!=] : func:r2201_37, this:r0_7, 0:r0_13 +# 2201| m2201_46(unknown) = ^CallSideEffect : ~m2201_42 +# 2201| m2201_47(unknown) = Chi : total:m2201_42, partial:m2201_46 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2201_34 +# 2201| v2201_48(void) = ConditionalBranch : r2201_45 #-----| False -> Block 10 #-----| True -> Block 9 -# 2154| Block 9 -# 2154| r2154_44(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2154| r2154_45(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_9(glval<iterator>) = Convert : r2154_45 -# 2154| r2154_46(glval<unknown>) = FunctionAddress[operator*] : -# 2154| r2154_47(ClassWithDestructor &) = Call[operator*] : func:r2154_46, this:r0_9 -# 2154| m2154_48(unknown) = ^CallSideEffect : ~m2154_42 -# 2154| m2154_49(unknown) = Chi : total:m2154_42, partial:m2154_48 -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, m2154_34 -# 2154| r2154_50(ClassWithDestructor) = Load[?] : &:r2154_47, ~m2154_49 -# 2154| m2154_51(ClassWithDestructor) = Store[y] : &:r2154_44, r2154_50 -# 2155| r2155_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2155| r2155_2(glval<unknown>) = FunctionAddress[set_x] : -# 2155| r2155_3(char) = Constant[97] : -# 2155| v2155_4(void) = Call[set_x] : func:r2155_2, this:r2155_1, 0:r2155_3 -# 2155| m2155_5(unknown) = ^CallSideEffect : ~m2154_49 -# 2155| m2155_6(unknown) = Chi : total:m2154_49, partial:m2155_5 -# 2155| v2155_7(void) = ^IndirectReadSideEffect[-1] : &:r2155_1, m2154_51 -# 2155| m2155_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2155_1 -# 2155| m2155_9(ClassWithDestructor) = Chi : total:m2154_51, partial:m2155_8 -# 2154| r2154_52(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2154| r2154_53(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2154| v2154_54(void) = Call[~ClassWithDestructor] : func:r2154_53, this:r2154_52 -# 2154| m2154_55(unknown) = ^CallSideEffect : ~m2155_6 -# 2154| m2154_56(unknown) = Chi : total:m2155_6, partial:m2154_55 -# 2154| v2154_57(void) = ^IndirectReadSideEffect[-1] : &:r2154_52, m2155_9 -# 2154| m2154_58(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2154_52 -# 2154| m2154_59(ClassWithDestructor) = Chi : total:m2155_9, partial:m2154_58 -# 2154| r2154_60(glval<iterator>) = VariableAddress[(__begin)] : -# 2154| r2154_61(glval<unknown>) = FunctionAddress[operator++] : -# 2154| r2154_62(iterator &) = Call[operator++] : func:r2154_61, this:r2154_60 -# 2154| m2154_63(unknown) = ^CallSideEffect : ~m2154_56 -# 2154| m2154_64(unknown) = Chi : total:m2154_56, partial:m2154_63 -# 2154| v2154_65(void) = ^IndirectReadSideEffect[-1] : &:r2154_60, m2154_34 -# 2154| m2154_66(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2154_60 -# 2154| m2154_67(iterator) = Chi : total:m2154_34, partial:m2154_66 -# 2154| r2154_68(glval<iterator>) = CopyValue : r2154_62 +# 2201| Block 9 +# 2201| r2201_49(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_50(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_50 +# 2201| r2201_51(glval<unknown>) = FunctionAddress[operator*] : +# 2201| r2201_52(ClassWithDestructor &) = Call[operator*] : func:r2201_51, this:r0_15 +# 2201| m2201_53(unknown) = ^CallSideEffect : ~m2201_47 +# 2201| m2201_54(unknown) = Chi : total:m2201_47, partial:m2201_53 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2201_34 +# 2201| r2201_55(ClassWithDestructor) = Load[?] : &:r2201_52, ~m2201_54 +# 2201| m2201_56(ClassWithDestructor) = Store[y] : &:r2201_49, r2201_55 +# 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2202| r2202_2(glval<unknown>) = FunctionAddress[set_x] : +# 2202| r2202_3(char) = Constant[97] : +# 2202| v2202_4(void) = Call[set_x] : func:r2202_2, this:r2202_1, 0:r2202_3 +# 2202| m2202_5(unknown) = ^CallSideEffect : ~m2201_54 +# 2202| m2202_6(unknown) = Chi : total:m2201_54, partial:m2202_5 +# 2202| v2202_7(void) = ^IndirectReadSideEffect[-1] : &:r2202_1, m2201_56 +# 2202| m2202_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 +# 2202| m2202_9(ClassWithDestructor) = Chi : total:m2201_56, partial:m2202_8 +# 2201| r2201_57(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2201| v2201_59(void) = Call[~ClassWithDestructor] : func:r2201_58, this:r2201_57 +# 2201| m2201_60(unknown) = ^CallSideEffect : ~m2202_6 +# 2201| m2201_61(unknown) = Chi : total:m2202_6, partial:m2201_60 +# 2201| v2201_62(void) = ^IndirectReadSideEffect[-1] : &:r2201_57, m2202_9 +# 2201| m2201_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_57 +# 2201| m2201_64(ClassWithDestructor) = Chi : total:m2202_9, partial:m2201_63 +# 2201| r2201_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2201| r2201_66(glval<unknown>) = FunctionAddress[operator++] : +# 2201| r2201_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_66, this:r2201_65 +# 2201| m2201_68(unknown) = ^CallSideEffect : ~m2201_61 +# 2201| m2201_69(unknown) = Chi : total:m2201_61, partial:m2201_68 +# 2201| v2201_70(void) = ^IndirectReadSideEffect[-1] : &:r2201_65, m2201_34 +# 2201| m2201_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_65 +# 2201| m2201_72(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2201_34, partial:m2201_71 +# 2201| r2201_73(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_67 #-----| Goto (back edge) -> Block 8 -# 2157| Block 10 -# 2157| r2157_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2157| m2157_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2157_1 -# 2157| r2157_3(glval<unknown>) = FunctionAddress[vector] : -# 2157| r2157_4(glval<ClassWithDestructor>) = VariableAddress[#temp2157:40] : -# 2157| r2157_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2157| r2157_6(ClassWithDestructor) = Load[x] : &:r2157_5, m2153_8 -# 2157| m2157_7(ClassWithDestructor) = Store[#temp2157:40] : &:r2157_4, r2157_6 -# 2157| r2157_8(ClassWithDestructor) = Load[#temp2157:40] : &:r2157_4, m2157_7 -# 2157| v2157_9(void) = Call[vector] : func:r2157_3, this:r2157_1, 0:r2157_8 -# 2157| m2157_10(unknown) = ^CallSideEffect : ~m2154_42 -# 2157| m2157_11(unknown) = Chi : total:m2154_42, partial:m2157_10 -# 2157| m2157_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2157_1 -# 2157| m2157_13(vector<ClassWithDestructor>) = Chi : total:m2157_2, partial:m2157_12 -# 2157| r2157_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2157| r2157_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2157| r2157_16(vector<ClassWithDestructor> &) = CopyValue : r2157_15 -# 2157| m2157_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2157_14, r2157_16 -# 2157| r2157_18(glval<iterator>) = VariableAddress[(__begin)] : -# 2157| r2157_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2157| r2157_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2157_19, m2157_17 -#-----| r0_11(glval<vector<ClassWithDestructor>>) = CopyValue : r2157_20 -#-----| r0_12(glval<vector<ClassWithDestructor>>) = Convert : r0_11 -# 2157| r2157_21(glval<unknown>) = FunctionAddress[begin] : -# 2157| r2157_22(iterator) = Call[begin] : func:r2157_21, this:r0_12 -# 2157| m2157_23(unknown) = ^CallSideEffect : ~m2157_11 -# 2157| m2157_24(unknown) = Chi : total:m2157_11, partial:m2157_23 -#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, m2157_13 -# 2157| m2157_25(iterator) = Store[(__begin)] : &:r2157_18, r2157_22 -# 2157| r2157_26(glval<iterator>) = VariableAddress[(__end)] : -# 2157| r2157_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2157| r2157_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2157_27, m2157_17 -#-----| r0_14(glval<vector<ClassWithDestructor>>) = CopyValue : r2157_28 -#-----| r0_15(glval<vector<ClassWithDestructor>>) = Convert : r0_14 -# 2157| r2157_29(glval<unknown>) = FunctionAddress[end] : -# 2157| r2157_30(iterator) = Call[end] : func:r2157_29, this:r0_15 -# 2157| m2157_31(unknown) = ^CallSideEffect : ~m2157_24 -# 2157| m2157_32(unknown) = Chi : total:m2157_24, partial:m2157_31 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2157_13 -# 2157| m2157_33(iterator) = Store[(__end)] : &:r2157_26, r2157_30 +# 2204| Block 10 +# 2204| r2204_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| m2204_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2204_1 +# 2204| r2204_3(glval<unknown>) = FunctionAddress[vector] : +# 2204| r2204_4(glval<ClassWithDestructor>) = VariableAddress[#temp2204:45] : +# 2204| r2204_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2204| r2204_6(ClassWithDestructor) = Load[x] : &:r2204_5, m2200_8 +# 2204| m2204_7(ClassWithDestructor) = Store[#temp2204:45] : &:r2204_4, r2204_6 +# 2204| r2204_8(ClassWithDestructor) = Load[#temp2204:45] : &:r2204_4, m2204_7 +# 2204| v2204_9(void) = Call[vector] : func:r2204_3, this:r2204_1, 0:r2204_8 +# 2204| m2204_10(unknown) = ^CallSideEffect : ~m2201_47 +# 2204| m2204_11(unknown) = Chi : total:m2201_47, partial:m2204_10 +# 2204| m2204_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 +# 2204| m2204_13(vector<ClassWithDestructor>) = Chi : total:m2204_2, partial:m2204_12 +# 2204| r2204_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_16(vector<ClassWithDestructor> &) = CopyValue : r2204_15 +# 2204| m2204_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2204_14, r2204_16 +# 2204| r2204_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2204| r2204_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_19, m2204_17 +#-----| r0_17(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_20 +#-----| r0_18(glval<vector<ClassWithDestructor>>) = Convert : r0_17 +# 2204| r2204_21(glval<unknown>) = FunctionAddress[begin] : +# 2204| r2204_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2204_21, this:r0_18 +# 2204| m2204_23(unknown) = ^CallSideEffect : ~m2204_11 +# 2204| m2204_24(unknown) = Chi : total:m2204_11, partial:m2204_23 +#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, m2204_13 +# 2204| m2204_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_18, r2204_22 +# 2204| r2204_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2204| r2204_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_27, m2204_17 +#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_28 +#-----| r0_21(glval<vector<ClassWithDestructor>>) = Convert : r0_20 +# 2204| r2204_29(glval<unknown>) = FunctionAddress[end] : +# 2204| r2204_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_29, this:r0_21 +# 2204| m2204_31(unknown) = ^CallSideEffect : ~m2204_24 +# 2204| m2204_32(unknown) = Chi : total:m2204_24, partial:m2204_31 +#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, m2204_13 +# 2204| m2204_33(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_26, r2204_30 #-----| Goto -> Block 11 -# 2157| Block 11 -# 2157| m2157_34(iterator) = Phi : from 10:m2157_25, from 14:m2157_83 -# 2157| m2157_35(unknown) = Phi : from 10:~m2157_32, from 14:~m2157_80 -# 2157| r2157_36(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_17(glval<iterator>) = Convert : r2157_36 -# 2157| r2157_37(glval<unknown>) = FunctionAddress[operator!=] : -# 2157| r2157_38(glval<iterator>) = VariableAddress[(__end)] : -# 2157| r2157_39(iterator) = Load[(__end)] : &:r2157_38, m2157_33 -# 2157| r2157_40(bool) = Call[operator!=] : func:r2157_37, this:r0_17, 0:r2157_39 -# 2157| m2157_41(unknown) = ^CallSideEffect : ~m2157_35 -# 2157| m2157_42(unknown) = Chi : total:m2157_35, partial:m2157_41 -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, m2157_34 -# 2157| v2157_43(void) = ConditionalBranch : r2157_40 +# 2204| Block 11 +# 2204| m2204_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 10:m2204_25, from 14:m2204_88 +# 2204| m2204_35(unknown) = Phi : from 10:~m2204_32, from 14:~m2204_85 +# 2204| r2204_36(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_36 +# 2204| r2204_37(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : +#-----| m0_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_24 +# 2204| r2204_38(glval<unknown>) = FunctionAddress[iterator] : +# 2204| r2204_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_39 +#-----| r0_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_26 +# 2204| v2204_40(void) = Call[iterator] : func:r2204_38, this:r0_24, 0:r0_27 +# 2204| m2204_41(unknown) = ^CallSideEffect : ~m2204_35 +# 2204| m2204_42(unknown) = Chi : total:m2204_35, partial:m2204_41 +#-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m2204_33 +# 2204| m2204_43(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 +# 2204| m2204_44(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_25, partial:m2204_43 +#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, m2204_44 +# 2204| r2204_45(bool) = Call[operator!=] : func:r2204_37, this:r0_23, 0:r0_29 +# 2204| m2204_46(unknown) = ^CallSideEffect : ~m2204_42 +# 2204| m2204_47(unknown) = Chi : total:m2204_42, partial:m2204_46 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, m2204_34 +# 2204| v2204_48(void) = ConditionalBranch : r2204_45 #-----| False -> Block 15 #-----| True -> Block 12 -# 2157| Block 12 -# 2157| r2157_44(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2157| r2157_45(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_19(glval<iterator>) = Convert : r2157_45 -# 2157| r2157_46(glval<unknown>) = FunctionAddress[operator*] : -# 2157| r2157_47(ClassWithDestructor &) = Call[operator*] : func:r2157_46, this:r0_19 -# 2157| m2157_48(unknown) = ^CallSideEffect : ~m2157_42 -# 2157| m2157_49(unknown) = Chi : total:m2157_42, partial:m2157_48 -#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m2157_34 -# 2157| r2157_50(ClassWithDestructor) = Load[?] : &:r2157_47, ~m2157_49 -# 2157| m2157_51(ClassWithDestructor) = Store[y] : &:r2157_44, r2157_50 -# 2158| r2158_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2158| r2158_2(glval<unknown>) = FunctionAddress[set_x] : -# 2158| r2158_3(char) = Constant[97] : -# 2158| v2158_4(void) = Call[set_x] : func:r2158_2, this:r2158_1, 0:r2158_3 -# 2158| m2158_5(unknown) = ^CallSideEffect : ~m2157_49 -# 2158| m2158_6(unknown) = Chi : total:m2157_49, partial:m2158_5 -# 2158| v2158_7(void) = ^IndirectReadSideEffect[-1] : &:r2158_1, m2157_51 -# 2158| m2158_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2158_1 -# 2158| m2158_9(ClassWithDestructor) = Chi : total:m2157_51, partial:m2158_8 -# 2159| r2159_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2159| r2159_2(glval<unknown>) = FunctionAddress[get_x] : -# 2159| r2159_3(char) = Call[get_x] : func:r2159_2, this:r2159_1 -# 2159| m2159_4(unknown) = ^CallSideEffect : ~m2158_6 -# 2159| m2159_5(unknown) = Chi : total:m2158_6, partial:m2159_4 -# 2159| v2159_6(void) = ^IndirectReadSideEffect[-1] : &:r2159_1, m2158_9 -# 2159| m2159_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2159_1 -# 2159| m2159_8(ClassWithDestructor) = Chi : total:m2158_9, partial:m2159_7 -# 2159| r2159_9(int) = Convert : r2159_3 -# 2159| r2159_10(int) = Constant[98] : -# 2159| r2159_11(bool) = CompareEQ : r2159_9, r2159_10 -# 2159| v2159_12(void) = ConditionalBranch : r2159_11 +# 2204| Block 12 +# 2204| r2204_49(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_50(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_50 +# 2204| r2204_51(glval<unknown>) = FunctionAddress[operator*] : +# 2204| r2204_52(ClassWithDestructor &) = Call[operator*] : func:r2204_51, this:r0_31 +# 2204| m2204_53(unknown) = ^CallSideEffect : ~m2204_47 +# 2204| m2204_54(unknown) = Chi : total:m2204_47, partial:m2204_53 +#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, m2204_34 +# 2204| r2204_55(ClassWithDestructor) = Load[?] : &:r2204_52, ~m2204_54 +# 2204| m2204_56(ClassWithDestructor) = Store[y] : &:r2204_49, r2204_55 +# 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2205| r2205_2(glval<unknown>) = FunctionAddress[set_x] : +# 2205| r2205_3(char) = Constant[97] : +# 2205| v2205_4(void) = Call[set_x] : func:r2205_2, this:r2205_1, 0:r2205_3 +# 2205| m2205_5(unknown) = ^CallSideEffect : ~m2204_54 +# 2205| m2205_6(unknown) = Chi : total:m2204_54, partial:m2205_5 +# 2205| v2205_7(void) = ^IndirectReadSideEffect[-1] : &:r2205_1, m2204_56 +# 2205| m2205_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 +# 2205| m2205_9(ClassWithDestructor) = Chi : total:m2204_56, partial:m2205_8 +# 2206| r2206_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2206| r2206_2(glval<unknown>) = FunctionAddress[get_x] : +# 2206| r2206_3(char) = Call[get_x] : func:r2206_2, this:r2206_1 +# 2206| m2206_4(unknown) = ^CallSideEffect : ~m2205_6 +# 2206| m2206_5(unknown) = Chi : total:m2205_6, partial:m2206_4 +# 2206| v2206_6(void) = ^IndirectReadSideEffect[-1] : &:r2206_1, m2205_9 +# 2206| m2206_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 +# 2206| m2206_8(ClassWithDestructor) = Chi : total:m2205_9, partial:m2206_7 +# 2206| r2206_9(int) = Convert : r2206_3 +# 2206| r2206_10(int) = Constant[98] : +# 2206| r2206_11(bool) = CompareEQ : r2206_9, r2206_10 +# 2206| v2206_12(void) = ConditionalBranch : r2206_11 #-----| False -> Block 14 #-----| True -> Block 13 -# 2160| Block 13 -# 2160| v2160_1(void) = NoOp : -# 2157| r2157_52(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2157| r2157_53(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2157| v2157_54(void) = Call[~ClassWithDestructor] : func:r2157_53, this:r2157_52 -# 2157| m2157_55(unknown) = ^CallSideEffect : ~m2159_5 -# 2157| m2157_56(unknown) = Chi : total:m2159_5, partial:m2157_55 -# 2157| v2157_57(void) = ^IndirectReadSideEffect[-1] : &:r2157_52, m2159_8 -# 2157| m2157_58(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2157_52 -# 2157| m2157_59(ClassWithDestructor) = Chi : total:m2159_8, partial:m2157_58 -# 2157| r2157_60(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2157| r2157_61(glval<unknown>) = FunctionAddress[~vector] : -# 2157| v2157_62(void) = Call[~vector] : func:r2157_61, this:r2157_60 -# 2157| m2157_63(unknown) = ^CallSideEffect : ~m2157_56 -# 2157| m2157_64(unknown) = Chi : total:m2157_56, partial:m2157_63 -# 2157| v2157_65(void) = ^IndirectReadSideEffect[-1] : &:r2157_60, m2157_13 -# 2157| m2157_66(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2157_60 -# 2157| m2157_67(vector<ClassWithDestructor>) = Chi : total:m2157_13, partial:m2157_66 -# 2172| r2172_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2172| r2172_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2172| v2172_3(void) = Call[~ClassWithDestructor] : func:r2172_2, this:r2172_1 -# 2172| m2172_4(unknown) = ^CallSideEffect : ~m2157_64 -# 2172| m2172_5(unknown) = Chi : total:m2157_64, partial:m2172_4 -# 2172| v2172_6(void) = ^IndirectReadSideEffect[-1] : &:r2172_1, m2153_8 -# 2172| m2172_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2172_1 -# 2172| m2172_8(ClassWithDestructor) = Chi : total:m2153_8, partial:m2172_7 +# 2207| Block 13 +# 2207| v2207_1(void) = NoOp : +# 2204| r2204_57(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_59(void) = Call[~ClassWithDestructor] : func:r2204_58, this:r2204_57 +# 2204| m2204_60(unknown) = ^CallSideEffect : ~m2206_5 +# 2204| m2204_61(unknown) = Chi : total:m2206_5, partial:m2204_60 +# 2204| v2204_62(void) = ^IndirectReadSideEffect[-1] : &:r2204_57, m2206_8 +# 2204| m2204_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_57 +# 2204| m2204_64(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_63 +# 2204| r2204_65(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_66(glval<unknown>) = FunctionAddress[~vector] : +# 2204| v2204_67(void) = Call[~vector] : func:r2204_66, this:r2204_65 +# 2204| m2204_68(unknown) = ^CallSideEffect : ~m2204_61 +# 2204| m2204_69(unknown) = Chi : total:m2204_61, partial:m2204_68 +# 2204| v2204_70(void) = ^IndirectReadSideEffect[-1] : &:r2204_65, m2204_13 +# 2204| m2204_71(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_65 +# 2204| m2204_72(vector<ClassWithDestructor>) = Chi : total:m2204_13, partial:m2204_71 +# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2219| r2219_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2219| v2219_3(void) = Call[~ClassWithDestructor] : func:r2219_2, this:r2219_1 +# 2219| m2219_4(unknown) = ^CallSideEffect : ~m2204_69 +# 2219| m2219_5(unknown) = Chi : total:m2204_69, partial:m2219_4 +# 2219| v2219_6(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2200_8 +# 2219| m2219_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 +# 2219| m2219_8(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_7 #-----| Goto -> Block 1 -# 2157| Block 14 -# 2157| r2157_68(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2157| r2157_69(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2157| v2157_70(void) = Call[~ClassWithDestructor] : func:r2157_69, this:r2157_68 -# 2157| m2157_71(unknown) = ^CallSideEffect : ~m2159_5 -# 2157| m2157_72(unknown) = Chi : total:m2159_5, partial:m2157_71 -# 2157| v2157_73(void) = ^IndirectReadSideEffect[-1] : &:r2157_68, m2159_8 -# 2157| m2157_74(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2157_68 -# 2157| m2157_75(ClassWithDestructor) = Chi : total:m2159_8, partial:m2157_74 -# 2157| r2157_76(glval<iterator>) = VariableAddress[(__begin)] : -# 2157| r2157_77(glval<unknown>) = FunctionAddress[operator++] : -# 2157| r2157_78(iterator &) = Call[operator++] : func:r2157_77, this:r2157_76 -# 2157| m2157_79(unknown) = ^CallSideEffect : ~m2157_72 -# 2157| m2157_80(unknown) = Chi : total:m2157_72, partial:m2157_79 -# 2157| v2157_81(void) = ^IndirectReadSideEffect[-1] : &:r2157_76, m2157_34 -# 2157| m2157_82(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2157_76 -# 2157| m2157_83(iterator) = Chi : total:m2157_34, partial:m2157_82 -# 2157| r2157_84(glval<iterator>) = CopyValue : r2157_78 +# 2204| Block 14 +# 2204| r2204_73(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_74(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_75(void) = Call[~ClassWithDestructor] : func:r2204_74, this:r2204_73 +# 2204| m2204_76(unknown) = ^CallSideEffect : ~m2206_5 +# 2204| m2204_77(unknown) = Chi : total:m2206_5, partial:m2204_76 +# 2204| v2204_78(void) = ^IndirectReadSideEffect[-1] : &:r2204_73, m2206_8 +# 2204| m2204_79(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_73 +# 2204| m2204_80(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_79 +# 2204| r2204_81(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2204| r2204_82(glval<unknown>) = FunctionAddress[operator++] : +# 2204| r2204_83(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_82, this:r2204_81 +# 2204| m2204_84(unknown) = ^CallSideEffect : ~m2204_77 +# 2204| m2204_85(unknown) = Chi : total:m2204_77, partial:m2204_84 +# 2204| v2204_86(void) = ^IndirectReadSideEffect[-1] : &:r2204_81, m2204_34 +# 2204| m2204_87(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_81 +# 2204| m2204_88(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2204_34, partial:m2204_87 +# 2204| r2204_89(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_83 #-----| Goto (back edge) -> Block 11 -# 2163| Block 15 -# 2163| r2163_1(glval<vector<int>>) = VariableAddress[ys] : -# 2163| m2163_2(vector<int>) = Uninitialized[ys] : &:r2163_1 -# 2163| r2163_3(glval<unknown>) = FunctionAddress[vector] : -# 2163| r2163_4(int) = Constant[1] : -# 2163| v2163_5(void) = Call[vector] : func:r2163_3, this:r2163_1, 0:r2163_4 -# 2163| m2163_6(unknown) = ^CallSideEffect : ~m2157_42 -# 2163| m2163_7(unknown) = Chi : total:m2157_42, partial:m2163_6 -# 2163| m2163_8(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2163_1 -# 2163| m2163_9(vector<int>) = Chi : total:m2163_2, partial:m2163_8 -# 2163| r2163_10(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2163| r2163_11(glval<vector<int>>) = VariableAddress[ys] : -# 2163| r2163_12(vector<int> &) = CopyValue : r2163_11 -# 2163| m2163_13(vector<int> &) = Store[(__range)] : &:r2163_10, r2163_12 -# 2163| r2163_14(glval<iterator>) = VariableAddress[(__begin)] : -# 2163| r2163_15(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2163| r2163_16(vector<int> &) = Load[(__range)] : &:r2163_15, m2163_13 -#-----| r0_21(glval<vector<int>>) = CopyValue : r2163_16 -#-----| r0_22(glval<vector<int>>) = Convert : r0_21 -# 2163| r2163_17(glval<unknown>) = FunctionAddress[begin] : -# 2163| r2163_18(iterator) = Call[begin] : func:r2163_17, this:r0_22 -# 2163| m2163_19(unknown) = ^CallSideEffect : ~m2163_7 -# 2163| m2163_20(unknown) = Chi : total:m2163_7, partial:m2163_19 -#-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_22, m2163_9 -# 2163| m2163_21(iterator) = Store[(__begin)] : &:r2163_14, r2163_18 -# 2163| r2163_22(glval<iterator>) = VariableAddress[(__end)] : -# 2163| r2163_23(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2163| r2163_24(vector<int> &) = Load[(__range)] : &:r2163_23, m2163_13 -#-----| r0_24(glval<vector<int>>) = CopyValue : r2163_24 -#-----| r0_25(glval<vector<int>>) = Convert : r0_24 -# 2163| r2163_25(glval<unknown>) = FunctionAddress[end] : -# 2163| r2163_26(iterator) = Call[end] : func:r2163_25, this:r0_25 -# 2163| m2163_27(unknown) = ^CallSideEffect : ~m2163_20 -# 2163| m2163_28(unknown) = Chi : total:m2163_20, partial:m2163_27 -#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_25, m2163_9 -# 2163| m2163_29(iterator) = Store[(__end)] : &:r2163_22, r2163_26 +# 2210| Block 15 +# 2210| r2210_1(glval<vector<int>>) = VariableAddress[ys] : +# 2210| m2210_2(vector<int>) = Uninitialized[ys] : &:r2210_1 +# 2210| r2210_3(glval<unknown>) = FunctionAddress[vector] : +# 2210| r2210_4(int) = Constant[1] : +# 2210| v2210_5(void) = Call[vector] : func:r2210_3, this:r2210_1, 0:r2210_4 +# 2210| m2210_6(unknown) = ^CallSideEffect : ~m2204_47 +# 2210| m2210_7(unknown) = Chi : total:m2204_47, partial:m2210_6 +# 2210| m2210_8(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 +# 2210| m2210_9(vector<int>) = Chi : total:m2210_2, partial:m2210_8 +# 2210| r2210_10(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_11(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_12(vector<int> &) = CopyValue : r2210_11 +# 2210| m2210_13(vector<int> &) = Store[(__range)] : &:r2210_10, r2210_12 +# 2210| r2210_14(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2210| r2210_15(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_16(vector<int> &) = Load[(__range)] : &:r2210_15, m2210_13 +#-----| r0_33(glval<vector<int>>) = CopyValue : r2210_16 +#-----| r0_34(glval<vector<int>>) = Convert : r0_33 +# 2210| r2210_17(glval<unknown>) = FunctionAddress[begin] : +# 2210| r2210_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2210_17, this:r0_34 +# 2210| m2210_19(unknown) = ^CallSideEffect : ~m2210_7 +# 2210| m2210_20(unknown) = Chi : total:m2210_7, partial:m2210_19 +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, m2210_9 +# 2210| m2210_21(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_14, r2210_18 +# 2210| r2210_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 2210| r2210_23(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_24(vector<int> &) = Load[(__range)] : &:r2210_23, m2210_13 +#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_24 +#-----| r0_37(glval<vector<int>>) = Convert : r0_36 +# 2210| r2210_25(glval<unknown>) = FunctionAddress[end] : +# 2210| r2210_26(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_25, this:r0_37 +# 2210| m2210_27(unknown) = ^CallSideEffect : ~m2210_20 +# 2210| m2210_28(unknown) = Chi : total:m2210_20, partial:m2210_27 +#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, m2210_9 +# 2210| m2210_29(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_22, r2210_26 #-----| Goto -> Block 16 -# 2163| Block 16 -# 2163| m2163_30(iterator) = Phi : from 15:m2163_21, from 17:m2163_47 -# 2163| m2163_31(unknown) = Phi : from 15:~m2163_28, from 17:~m2163_44 -# 2163| r2163_32(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_27(glval<iterator>) = Convert : r2163_32 -# 2163| r2163_33(glval<unknown>) = FunctionAddress[operator!=] : -# 2163| r2163_34(glval<iterator>) = VariableAddress[(__end)] : -# 2163| r2163_35(iterator) = Load[(__end)] : &:r2163_34, m2163_29 -# 2163| r2163_36(bool) = Call[operator!=] : func:r2163_33, this:r0_27, 0:r2163_35 -# 2163| m2163_37(unknown) = ^CallSideEffect : ~m2163_31 -# 2163| m2163_38(unknown) = Chi : total:m2163_31, partial:m2163_37 -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, m2163_30 -# 2163| v2163_39(void) = ConditionalBranch : r2163_36 +# 2210| Block 16 +# 2210| m2210_30(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 15:m2210_21, from 17:m2210_52 +# 2210| m2210_31(unknown) = Phi : from 15:~m2210_28, from 17:~m2210_49 +# 2210| r2210_32(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_32 +# 2210| r2210_33(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : +#-----| m0_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_40 +# 2210| r2210_34(glval<unknown>) = FunctionAddress[iterator] : +# 2210| r2210_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_35 +#-----| r0_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_42 +# 2210| v2210_36(void) = Call[iterator] : func:r2210_34, this:r0_40, 0:r0_43 +# 2210| m2210_37(unknown) = ^CallSideEffect : ~m2210_31 +# 2210| m2210_38(unknown) = Chi : total:m2210_31, partial:m2210_37 +#-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m2210_29 +# 2210| m2210_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 +# 2210| m2210_40(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_41, partial:m2210_39 +#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, m2210_40 +# 2210| r2210_41(bool) = Call[operator!=] : func:r2210_33, this:r0_39, 0:r0_45 +# 2210| m2210_42(unknown) = ^CallSideEffect : ~m2210_38 +# 2210| m2210_43(unknown) = Chi : total:m2210_38, partial:m2210_42 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2210_30 +# 2210| v2210_44(void) = ConditionalBranch : r2210_41 #-----| False -> Block 20 #-----| True -> Block 18 -# 2163| Block 17 -# 2163| r2163_40(glval<iterator>) = VariableAddress[(__begin)] : -# 2163| r2163_41(glval<unknown>) = FunctionAddress[operator++] : -# 2163| r2163_42(iterator &) = Call[operator++] : func:r2163_41, this:r2163_40 -# 2163| m2163_43(unknown) = ^CallSideEffect : ~m2163_54 -# 2163| m2163_44(unknown) = Chi : total:m2163_54, partial:m2163_43 -# 2163| v2163_45(void) = ^IndirectReadSideEffect[-1] : &:r2163_40, m2163_30 -# 2163| m2163_46(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2163_40 -# 2163| m2163_47(iterator) = Chi : total:m2163_30, partial:m2163_46 -# 2163| r2163_48(glval<iterator>) = CopyValue : r2163_42 +# 2210| Block 17 +# 2210| r2210_45(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2210| r2210_46(glval<unknown>) = FunctionAddress[operator++] : +# 2210| r2210_47(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_46, this:r2210_45 +# 2210| m2210_48(unknown) = ^CallSideEffect : ~m2210_59 +# 2210| m2210_49(unknown) = Chi : total:m2210_59, partial:m2210_48 +# 2210| v2210_50(void) = ^IndirectReadSideEffect[-1] : &:r2210_45, m2210_30 +# 2210| m2210_51(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_45 +# 2210| m2210_52(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m2210_30, partial:m2210_51 +# 2210| r2210_53(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_47 #-----| Goto (back edge) -> Block 16 -# 2163| Block 18 -# 2163| r2163_49(glval<int>) = VariableAddress[y] : -# 2163| r2163_50(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_29(glval<iterator>) = Convert : r2163_50 -# 2163| r2163_51(glval<unknown>) = FunctionAddress[operator*] : -# 2163| r2163_52(int &) = Call[operator*] : func:r2163_51, this:r0_29 -# 2163| m2163_53(unknown) = ^CallSideEffect : ~m2163_38 -# 2163| m2163_54(unknown) = Chi : total:m2163_38, partial:m2163_53 -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, m2163_30 -# 2163| r2163_55(int) = Load[?] : &:r2163_52, ~m2163_54 -# 2163| m2163_56(int) = Store[y] : &:r2163_49, r2163_55 -# 2164| r2164_1(glval<int>) = VariableAddress[y] : -# 2164| r2164_2(int) = Load[y] : &:r2164_1, m2163_56 -# 2164| r2164_3(int) = Constant[1] : -# 2164| r2164_4(bool) = CompareEQ : r2164_2, r2164_3 -# 2164| v2164_5(void) = ConditionalBranch : r2164_4 +# 2210| Block 18 +# 2210| r2210_54(glval<int>) = VariableAddress[y] : +# 2210| r2210_55(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_55 +# 2210| r2210_56(glval<unknown>) = FunctionAddress[operator*] : +# 2210| r2210_57(int &) = Call[operator*] : func:r2210_56, this:r0_47 +# 2210| m2210_58(unknown) = ^CallSideEffect : ~m2210_43 +# 2210| m2210_59(unknown) = Chi : total:m2210_43, partial:m2210_58 +#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, m2210_30 +# 2210| r2210_60(int) = Load[?] : &:r2210_57, ~m2210_59 +# 2210| m2210_61(int) = Store[y] : &:r2210_54, r2210_60 +# 2211| r2211_1(glval<int>) = VariableAddress[y] : +# 2211| r2211_2(int) = Load[y] : &:r2211_1, m2210_61 +# 2211| r2211_3(int) = Constant[1] : +# 2211| r2211_4(bool) = CompareEQ : r2211_2, r2211_3 +# 2211| v2211_5(void) = ConditionalBranch : r2211_4 #-----| False -> Block 17 #-----| True -> Block 19 -# 2165| Block 19 -# 2165| v2165_1(void) = NoOp : -# 2163| r2163_57(glval<vector<int>>) = VariableAddress[ys] : -# 2163| r2163_58(glval<unknown>) = FunctionAddress[~vector] : -# 2163| v2163_59(void) = Call[~vector] : func:r2163_58, this:r2163_57 -# 2163| m2163_60(unknown) = ^CallSideEffect : ~m2163_54 -# 2163| m2163_61(unknown) = Chi : total:m2163_54, partial:m2163_60 -# 2163| v2163_62(void) = ^IndirectReadSideEffect[-1] : &:r2163_57, m2163_9 -# 2163| m2163_63(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2163_57 -# 2163| m2163_64(vector<int>) = Chi : total:m2163_9, partial:m2163_63 -# 2172| r2172_9(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2172| r2172_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2172| v2172_11(void) = Call[~ClassWithDestructor] : func:r2172_10, this:r2172_9 -# 2172| m2172_12(unknown) = ^CallSideEffect : ~m2163_61 -# 2172| m2172_13(unknown) = Chi : total:m2163_61, partial:m2172_12 -# 2172| v2172_14(void) = ^IndirectReadSideEffect[-1] : &:r2172_9, m2153_8 -# 2172| m2172_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2172_9 -# 2172| m2172_16(ClassWithDestructor) = Chi : total:m2153_8, partial:m2172_15 +# 2212| Block 19 +# 2212| v2212_1(void) = NoOp : +# 2210| r2210_62(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_63(glval<unknown>) = FunctionAddress[~vector] : +# 2210| v2210_64(void) = Call[~vector] : func:r2210_63, this:r2210_62 +# 2210| m2210_65(unknown) = ^CallSideEffect : ~m2210_59 +# 2210| m2210_66(unknown) = Chi : total:m2210_59, partial:m2210_65 +# 2210| v2210_67(void) = ^IndirectReadSideEffect[-1] : &:r2210_62, m2210_9 +# 2210| m2210_68(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_62 +# 2210| m2210_69(vector<int>) = Chi : total:m2210_9, partial:m2210_68 +# 2219| r2219_9(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2219| r2219_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2219| v2219_11(void) = Call[~ClassWithDestructor] : func:r2219_10, this:r2219_9 +# 2219| m2219_12(unknown) = ^CallSideEffect : ~m2210_66 +# 2219| m2219_13(unknown) = Chi : total:m2210_66, partial:m2219_12 +# 2219| v2219_14(void) = ^IndirectReadSideEffect[-1] : &:r2219_9, m2200_8 +# 2219| m2219_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_9 +# 2219| m2219_16(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_15 #-----| Goto -> Block 1 -# 2168| Block 20 -# 2168| r2168_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2168| m2168_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2168_1 -# 2168| r2168_3(glval<unknown>) = FunctionAddress[vector] : -# 2168| r2168_4(glval<ClassWithDestructor>) = VariableAddress[#temp2168:40] : -# 2168| r2168_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2168| r2168_6(ClassWithDestructor) = Load[x] : &:r2168_5, m2153_8 -# 2168| m2168_7(ClassWithDestructor) = Store[#temp2168:40] : &:r2168_4, r2168_6 -# 2168| r2168_8(ClassWithDestructor) = Load[#temp2168:40] : &:r2168_4, m2168_7 -# 2168| v2168_9(void) = Call[vector] : func:r2168_3, this:r2168_1, 0:r2168_8 -# 2168| m2168_10(unknown) = ^CallSideEffect : ~m2163_38 -# 2168| m2168_11(unknown) = Chi : total:m2163_38, partial:m2168_10 -# 2168| m2168_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2168_1 -# 2168| m2168_13(vector<ClassWithDestructor>) = Chi : total:m2168_2, partial:m2168_12 -# 2168| r2168_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2168| r2168_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2168| r2168_16(vector<ClassWithDestructor> &) = CopyValue : r2168_15 -# 2168| m2168_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2168_14, r2168_16 -# 2168| r2168_18(glval<iterator>) = VariableAddress[(__begin)] : -# 2168| r2168_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2168| r2168_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2168_19, m2168_17 -#-----| r0_31(glval<vector<ClassWithDestructor>>) = CopyValue : r2168_20 -#-----| r0_32(glval<vector<ClassWithDestructor>>) = Convert : r0_31 -# 2168| r2168_21(glval<unknown>) = FunctionAddress[begin] : -# 2168| r2168_22(iterator) = Call[begin] : func:r2168_21, this:r0_32 -# 2168| m2168_23(unknown) = ^CallSideEffect : ~m2168_11 -# 2168| m2168_24(unknown) = Chi : total:m2168_11, partial:m2168_23 -#-----| v0_33(void) = ^IndirectReadSideEffect[-1] : &:r0_32, m2168_13 -# 2168| m2168_25(iterator) = Store[(__begin)] : &:r2168_18, r2168_22 -# 2168| r2168_26(glval<iterator>) = VariableAddress[(__end)] : -# 2168| r2168_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2168| r2168_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2168_27, m2168_17 -#-----| r0_34(glval<vector<ClassWithDestructor>>) = CopyValue : r2168_28 -#-----| r0_35(glval<vector<ClassWithDestructor>>) = Convert : r0_34 -# 2168| r2168_29(glval<unknown>) = FunctionAddress[end] : -# 2168| r2168_30(iterator) = Call[end] : func:r2168_29, this:r0_35 -# 2168| m2168_31(unknown) = ^CallSideEffect : ~m2168_24 -# 2168| m2168_32(unknown) = Chi : total:m2168_24, partial:m2168_31 -#-----| v0_36(void) = ^IndirectReadSideEffect[-1] : &:r0_35, m2168_13 -# 2168| m2168_33(iterator) = Store[(__end)] : &:r2168_26, r2168_30 +# 2215| Block 20 +# 2215| r2215_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| m2215_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2215_1 +# 2215| r2215_3(glval<unknown>) = FunctionAddress[vector] : +# 2215| r2215_4(glval<ClassWithDestructor>) = VariableAddress[#temp2215:45] : +# 2215| r2215_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2215| r2215_6(ClassWithDestructor) = Load[x] : &:r2215_5, m2200_8 +# 2215| m2215_7(ClassWithDestructor) = Store[#temp2215:45] : &:r2215_4, r2215_6 +# 2215| r2215_8(ClassWithDestructor) = Load[#temp2215:45] : &:r2215_4, m2215_7 +# 2215| v2215_9(void) = Call[vector] : func:r2215_3, this:r2215_1, 0:r2215_8 +# 2215| m2215_10(unknown) = ^CallSideEffect : ~m2210_43 +# 2215| m2215_11(unknown) = Chi : total:m2210_43, partial:m2215_10 +# 2215| m2215_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 +# 2215| m2215_13(vector<ClassWithDestructor>) = Chi : total:m2215_2, partial:m2215_12 +# 2215| r2215_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| r2215_16(vector<ClassWithDestructor> &) = CopyValue : r2215_15 +# 2215| m2215_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2215_14, r2215_16 +# 2215| r2215_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_19, m2215_17 +#-----| r0_49(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_20 +#-----| r0_50(glval<vector<ClassWithDestructor>>) = Convert : r0_49 +# 2215| r2215_21(glval<unknown>) = FunctionAddress[begin] : +# 2215| r2215_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_21, this:r0_50 +# 2215| m2215_23(unknown) = ^CallSideEffect : ~m2215_11 +# 2215| m2215_24(unknown) = Chi : total:m2215_11, partial:m2215_23 +#-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, m2215_13 +# 2215| m2215_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_18, r2215_22 +# 2215| r2215_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2215| r2215_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_27, m2215_17 +#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_28 +#-----| r0_53(glval<vector<ClassWithDestructor>>) = Convert : r0_52 +# 2215| r2215_29(glval<unknown>) = FunctionAddress[end] : +# 2215| r2215_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_29, this:r0_53 +# 2215| m2215_31(unknown) = ^CallSideEffect : ~m2215_24 +# 2215| m2215_32(unknown) = Chi : total:m2215_24, partial:m2215_31 +#-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, m2215_13 +# 2215| m2215_33(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_26, r2215_30 #-----| Goto -> Block 21 -# 2168| Block 21 -# 2168| m2168_34(iterator) = Phi : from 20:m2168_25, from 22:m2168_67 -# 2168| m2168_35(unknown) = Phi : from 20:~m2168_32, from 22:~m2168_64 -# 2168| r2168_36(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_37(glval<iterator>) = Convert : r2168_36 -# 2168| r2168_37(glval<unknown>) = FunctionAddress[operator!=] : -# 2168| r2168_38(glval<iterator>) = VariableAddress[(__end)] : -# 2168| r2168_39(iterator) = Load[(__end)] : &:r2168_38, m2168_33 -# 2168| r2168_40(bool) = Call[operator!=] : func:r2168_37, this:r0_37, 0:r2168_39 -# 2168| m2168_41(unknown) = ^CallSideEffect : ~m2168_35 -# 2168| m2168_42(unknown) = Chi : total:m2168_35, partial:m2168_41 -#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, m2168_34 -# 2168| v2168_43(void) = ConditionalBranch : r2168_40 +# 2215| Block 21 +# 2215| m2215_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 20:m2215_25, from 22:m2215_72 +# 2215| m2215_35(unknown) = Phi : from 20:~m2215_32, from 22:~m2215_69 +# 2215| r2215_36(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_36 +# 2215| r2215_37(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_56(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : +#-----| m0_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_56 +# 2215| r2215_38(glval<unknown>) = FunctionAddress[iterator] : +# 2215| r2215_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_39 +#-----| r0_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_58 +# 2215| v2215_40(void) = Call[iterator] : func:r2215_38, this:r0_56, 0:r0_59 +# 2215| m2215_41(unknown) = ^CallSideEffect : ~m2215_35 +# 2215| m2215_42(unknown) = Chi : total:m2215_35, partial:m2215_41 +#-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m2215_33 +# 2215| m2215_43(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 +# 2215| m2215_44(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_57, partial:m2215_43 +#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, m2215_44 +# 2215| r2215_45(bool) = Call[operator!=] : func:r2215_37, this:r0_55, 0:r0_61 +# 2215| m2215_46(unknown) = ^CallSideEffect : ~m2215_42 +# 2215| m2215_47(unknown) = Chi : total:m2215_42, partial:m2215_46 +#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, m2215_34 +# 2215| v2215_48(void) = ConditionalBranch : r2215_45 #-----| False -> Block 23 #-----| True -> Block 22 -# 2168| Block 22 -# 2168| r2168_44(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2168| r2168_45(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_39(glval<iterator>) = Convert : r2168_45 -# 2168| r2168_46(glval<unknown>) = FunctionAddress[operator*] : -# 2168| r2168_47(ClassWithDestructor &) = Call[operator*] : func:r2168_46, this:r0_39 -# 2168| m2168_48(unknown) = ^CallSideEffect : ~m2168_42 -# 2168| m2168_49(unknown) = Chi : total:m2168_42, partial:m2168_48 -#-----| v0_40(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2168_34 -# 2168| r2168_50(ClassWithDestructor) = Load[?] : &:r2168_47, ~m2168_49 -# 2168| m2168_51(ClassWithDestructor) = Store[y] : &:r2168_44, r2168_50 -# 2169| r2169_1(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2169| m2169_2(ClassWithDestructor) = Uninitialized[z1] : &:r2169_1 -# 2169| r2169_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2169| v2169_4(void) = Call[ClassWithDestructor] : func:r2169_3, this:r2169_1 -# 2169| m2169_5(unknown) = ^CallSideEffect : ~m2168_49 -# 2169| m2169_6(unknown) = Chi : total:m2168_49, partial:m2169_5 -# 2169| m2169_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2169_1 -# 2169| m2169_8(ClassWithDestructor) = Chi : total:m2169_2, partial:m2169_7 -# 2170| r2170_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2170| m2170_2(ClassWithDestructor) = Uninitialized[z2] : &:r2170_1 -# 2170| r2170_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2170| v2170_4(void) = Call[ClassWithDestructor] : func:r2170_3, this:r2170_1 -# 2170| m2170_5(unknown) = ^CallSideEffect : ~m2169_6 -# 2170| m2170_6(unknown) = Chi : total:m2169_6, partial:m2170_5 -# 2170| m2170_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2170_1 -# 2170| m2170_8(ClassWithDestructor) = Chi : total:m2170_2, partial:m2170_7 -# 2171| r2171_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2171| r2171_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2171| v2171_3(void) = Call[~ClassWithDestructor] : func:r2171_2, this:r2171_1 -# 2171| m2171_4(unknown) = ^CallSideEffect : ~m2170_6 -# 2171| m2171_5(unknown) = Chi : total:m2170_6, partial:m2171_4 -# 2171| v2171_6(void) = ^IndirectReadSideEffect[-1] : &:r2171_1, m2170_8 -# 2171| m2171_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2171_1 -# 2171| m2171_8(ClassWithDestructor) = Chi : total:m2170_8, partial:m2171_7 -# 2171| r2171_9(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2171| r2171_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2171| v2171_11(void) = Call[~ClassWithDestructor] : func:r2171_10, this:r2171_9 -# 2171| m2171_12(unknown) = ^CallSideEffect : ~m2171_5 -# 2171| m2171_13(unknown) = Chi : total:m2171_5, partial:m2171_12 -# 2171| v2171_14(void) = ^IndirectReadSideEffect[-1] : &:r2171_9, m2169_8 -# 2171| m2171_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2171_9 -# 2171| m2171_16(ClassWithDestructor) = Chi : total:m2169_8, partial:m2171_15 -# 2168| r2168_52(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2168| r2168_53(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2168| v2168_54(void) = Call[~ClassWithDestructor] : func:r2168_53, this:r2168_52 -# 2168| m2168_55(unknown) = ^CallSideEffect : ~m2171_13 -# 2168| m2168_56(unknown) = Chi : total:m2171_13, partial:m2168_55 -# 2168| v2168_57(void) = ^IndirectReadSideEffect[-1] : &:r2168_52, m2168_51 -# 2168| m2168_58(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2168_52 -# 2168| m2168_59(ClassWithDestructor) = Chi : total:m2168_51, partial:m2168_58 -# 2168| r2168_60(glval<iterator>) = VariableAddress[(__begin)] : -# 2168| r2168_61(glval<unknown>) = FunctionAddress[operator++] : -# 2168| r2168_62(iterator &) = Call[operator++] : func:r2168_61, this:r2168_60 -# 2168| m2168_63(unknown) = ^CallSideEffect : ~m2168_56 -# 2168| m2168_64(unknown) = Chi : total:m2168_56, partial:m2168_63 -# 2168| v2168_65(void) = ^IndirectReadSideEffect[-1] : &:r2168_60, m2168_34 -# 2168| m2168_66(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2168_60 -# 2168| m2168_67(iterator) = Chi : total:m2168_34, partial:m2168_66 -# 2168| r2168_68(glval<iterator>) = CopyValue : r2168_62 +# 2215| Block 22 +# 2215| r2215_49(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_50(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_50 +# 2215| r2215_51(glval<unknown>) = FunctionAddress[operator*] : +# 2215| r2215_52(ClassWithDestructor &) = Call[operator*] : func:r2215_51, this:r0_63 +# 2215| m2215_53(unknown) = ^CallSideEffect : ~m2215_47 +# 2215| m2215_54(unknown) = Chi : total:m2215_47, partial:m2215_53 +#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, m2215_34 +# 2215| r2215_55(ClassWithDestructor) = Load[?] : &:r2215_52, ~m2215_54 +# 2215| m2215_56(ClassWithDestructor) = Store[y] : &:r2215_49, r2215_55 +# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2216| m2216_2(ClassWithDestructor) = Uninitialized[z1] : &:r2216_1 +# 2216| r2216_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2216| v2216_4(void) = Call[ClassWithDestructor] : func:r2216_3, this:r2216_1 +# 2216| m2216_5(unknown) = ^CallSideEffect : ~m2215_54 +# 2216| m2216_6(unknown) = Chi : total:m2215_54, partial:m2216_5 +# 2216| m2216_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 +# 2216| m2216_8(ClassWithDestructor) = Chi : total:m2216_2, partial:m2216_7 +# 2217| r2217_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2217| m2217_2(ClassWithDestructor) = Uninitialized[z2] : &:r2217_1 +# 2217| r2217_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2217| v2217_4(void) = Call[ClassWithDestructor] : func:r2217_3, this:r2217_1 +# 2217| m2217_5(unknown) = ^CallSideEffect : ~m2216_6 +# 2217| m2217_6(unknown) = Chi : total:m2216_6, partial:m2217_5 +# 2217| m2217_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 +# 2217| m2217_8(ClassWithDestructor) = Chi : total:m2217_2, partial:m2217_7 +# 2218| r2218_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2218| r2218_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_3(void) = Call[~ClassWithDestructor] : func:r2218_2, this:r2218_1 +# 2218| m2218_4(unknown) = ^CallSideEffect : ~m2217_6 +# 2218| m2218_5(unknown) = Chi : total:m2217_6, partial:m2218_4 +# 2218| v2218_6(void) = ^IndirectReadSideEffect[-1] : &:r2218_1, m2217_8 +# 2218| m2218_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 +# 2218| m2218_8(ClassWithDestructor) = Chi : total:m2217_8, partial:m2218_7 +# 2218| r2218_9(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2218| r2218_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_11(void) = Call[~ClassWithDestructor] : func:r2218_10, this:r2218_9 +# 2218| m2218_12(unknown) = ^CallSideEffect : ~m2218_5 +# 2218| m2218_13(unknown) = Chi : total:m2218_5, partial:m2218_12 +# 2218| v2218_14(void) = ^IndirectReadSideEffect[-1] : &:r2218_9, m2216_8 +# 2218| m2218_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_9 +# 2218| m2218_16(ClassWithDestructor) = Chi : total:m2216_8, partial:m2218_15 +# 2215| r2215_57(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_59(void) = Call[~ClassWithDestructor] : func:r2215_58, this:r2215_57 +# 2215| m2215_60(unknown) = ^CallSideEffect : ~m2218_13 +# 2215| m2215_61(unknown) = Chi : total:m2218_13, partial:m2215_60 +# 2215| v2215_62(void) = ^IndirectReadSideEffect[-1] : &:r2215_57, m2215_56 +# 2215| m2215_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_57 +# 2215| m2215_64(ClassWithDestructor) = Chi : total:m2215_56, partial:m2215_63 +# 2215| r2215_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_66(glval<unknown>) = FunctionAddress[operator++] : +# 2215| r2215_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_66, this:r2215_65 +# 2215| m2215_68(unknown) = ^CallSideEffect : ~m2215_61 +# 2215| m2215_69(unknown) = Chi : total:m2215_61, partial:m2215_68 +# 2215| v2215_70(void) = ^IndirectReadSideEffect[-1] : &:r2215_65, m2215_34 +# 2215| m2215_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_65 +# 2215| m2215_72(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2215_34, partial:m2215_71 +# 2215| r2215_73(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_67 #-----| Goto (back edge) -> Block 21 -# 2172| Block 23 -# 2172| v2172_17(void) = NoOp : -# 2172| r2172_18(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2172| r2172_19(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2172| v2172_20(void) = Call[~ClassWithDestructor] : func:r2172_19, this:r2172_18 -# 2172| m2172_21(unknown) = ^CallSideEffect : ~m2168_42 -# 2172| m2172_22(unknown) = Chi : total:m2168_42, partial:m2172_21 -# 2172| v2172_23(void) = ^IndirectReadSideEffect[-1] : &:r2172_18, m2153_8 -# 2172| m2172_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2172_18 -# 2172| m2172_25(ClassWithDestructor) = Chi : total:m2153_8, partial:m2172_24 +# 2219| Block 23 +# 2219| v2219_17(void) = NoOp : +# 2219| r2219_18(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2219| r2219_19(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2219| v2219_20(void) = Call[~ClassWithDestructor] : func:r2219_19, this:r2219_18 +# 2219| m2219_21(unknown) = ^CallSideEffect : ~m2215_47 +# 2219| m2219_22(unknown) = Chi : total:m2215_47, partial:m2219_21 +# 2219| v2219_23(void) = ^IndirectReadSideEffect[-1] : &:r2219_18, m2200_8 +# 2219| m2219_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_18 +# 2219| m2219_25(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_24 #-----| Goto -> Block 1 -# 2137| Block 24 -# 2137| v2137_13(void) = Unreached : - -# 2174| void static_variable_with_destructor_1() -# 2174| Block 0 -# 2174| v2174_1(void) = EnterFunction : -# 2174| m2174_2(unknown) = AliasedDefinition : -# 2174| m2174_3(unknown) = InitializeNonLocal : -# 2174| m2174_4(unknown) = Chi : total:m2174_2, partial:m2174_3 -# 2175| r2175_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2175| m2175_2(ClassWithDestructor) = Uninitialized[a] : &:r2175_1 -# 2175| r2175_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2175| v2175_4(void) = Call[ClassWithDestructor] : func:r2175_3, this:r2175_1 -# 2175| m2175_5(unknown) = ^CallSideEffect : ~m2174_4 -# 2175| m2175_6(unknown) = Chi : total:m2174_4, partial:m2175_5 -# 2175| m2175_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2175_1 -# 2175| m2175_8(ClassWithDestructor) = Chi : total:m2175_2, partial:m2175_7 -# 2176| r2176_1(glval<bool>) = VariableAddress[b#init] : -# 2176| r2176_2(bool) = Load[b#init] : &:r2176_1, ~m2175_6 -# 2176| v2176_3(void) = ConditionalBranch : r2176_2 +# 2184| Block 24 +# 2184| v2184_13(void) = Unreached : + +# 2221| void static_variable_with_destructor_1() +# 2221| Block 0 +# 2221| v2221_1(void) = EnterFunction : +# 2221| m2221_2(unknown) = AliasedDefinition : +# 2221| m2221_3(unknown) = InitializeNonLocal : +# 2221| m2221_4(unknown) = Chi : total:m2221_2, partial:m2221_3 +# 2222| r2222_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2222| m2222_2(ClassWithDestructor) = Uninitialized[a] : &:r2222_1 +# 2222| r2222_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2222| v2222_4(void) = Call[ClassWithDestructor] : func:r2222_3, this:r2222_1 +# 2222| m2222_5(unknown) = ^CallSideEffect : ~m2221_4 +# 2222| m2222_6(unknown) = Chi : total:m2221_4, partial:m2222_5 +# 2222| m2222_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 +# 2222| m2222_8(ClassWithDestructor) = Chi : total:m2222_2, partial:m2222_7 +# 2223| r2223_1(glval<bool>) = VariableAddress[b#init] : +# 2223| r2223_2(bool) = Load[b#init] : &:r2223_1, ~m2222_6 +# 2223| v2223_3(void) = ConditionalBranch : r2223_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2176| Block 1 -# 2176| r2176_4(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2223| Block 1 +# 2223| r2223_4(glval<ClassWithDestructor>) = VariableAddress[b] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2176_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2175_6 -#-----| m0_4(unknown) = Chi : total:m2175_6, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2176_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2223_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2222_6 +#-----| m0_4(unknown) = Chi : total:m2222_6, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2223_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2176| r2176_5(bool) = Constant[1] : -# 2176| m2176_6(bool) = Store[b#init] : &:r2176_1, r2176_5 -# 2176| m2176_7(unknown) = Chi : total:m0_6, partial:m2176_6 +# 2223| r2223_5(bool) = Constant[1] : +# 2223| m2223_6(bool) = Store[b#init] : &:r2223_1, r2223_5 +# 2223| m2223_7(unknown) = Chi : total:m0_6, partial:m2223_6 #-----| Goto -> Block 2 -# 2177| Block 2 -# 2177| m2177_1(unknown) = Phi : from 0:~m2175_6, from 1:~m2176_7 -# 2177| v2177_2(void) = NoOp : -# 2177| r2177_3(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2177| r2177_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2177| v2177_5(void) = Call[~ClassWithDestructor] : func:r2177_4, this:r2177_3 -# 2177| m2177_6(unknown) = ^CallSideEffect : ~m2177_1 -# 2177| m2177_7(unknown) = Chi : total:m2177_1, partial:m2177_6 -# 2177| v2177_8(void) = ^IndirectReadSideEffect[-1] : &:r2177_3, m2175_8 -# 2177| m2177_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2177_3 -# 2177| m2177_10(ClassWithDestructor) = Chi : total:m2175_8, partial:m2177_9 -# 2174| v2174_5(void) = ReturnVoid : -# 2174| v2174_6(void) = AliasedUse : ~m2177_7 -# 2174| v2174_7(void) = ExitFunction : - -# 2179| void static_variable_with_destructor_2() -# 2179| Block 0 -# 2179| v2179_1(void) = EnterFunction : -# 2179| m2179_2(unknown) = AliasedDefinition : -# 2179| m2179_3(unknown) = InitializeNonLocal : -# 2179| m2179_4(unknown) = Chi : total:m2179_2, partial:m2179_3 -# 2180| r2180_1(glval<bool>) = VariableAddress[a#init] : -# 2180| r2180_2(bool) = Load[a#init] : &:r2180_1, ~m2179_3 -# 2180| v2180_3(void) = ConditionalBranch : r2180_2 +# 2224| Block 2 +# 2224| m2224_1(unknown) = Phi : from 0:~m2222_6, from 1:~m2223_7 +# 2224| v2224_2(void) = NoOp : +# 2224| r2224_3(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2224| r2224_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2224| v2224_5(void) = Call[~ClassWithDestructor] : func:r2224_4, this:r2224_3 +# 2224| m2224_6(unknown) = ^CallSideEffect : ~m2224_1 +# 2224| m2224_7(unknown) = Chi : total:m2224_1, partial:m2224_6 +# 2224| v2224_8(void) = ^IndirectReadSideEffect[-1] : &:r2224_3, m2222_8 +# 2224| m2224_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2224_3 +# 2224| m2224_10(ClassWithDestructor) = Chi : total:m2222_8, partial:m2224_9 +# 2221| v2221_5(void) = ReturnVoid : +# 2221| v2221_6(void) = AliasedUse : ~m2224_7 +# 2221| v2221_7(void) = ExitFunction : + +# 2226| void static_variable_with_destructor_2() +# 2226| Block 0 +# 2226| v2226_1(void) = EnterFunction : +# 2226| m2226_2(unknown) = AliasedDefinition : +# 2226| m2226_3(unknown) = InitializeNonLocal : +# 2226| m2226_4(unknown) = Chi : total:m2226_2, partial:m2226_3 +# 2227| r2227_1(glval<bool>) = VariableAddress[a#init] : +# 2227| r2227_2(bool) = Load[a#init] : &:r2227_1, ~m2226_3 +# 2227| v2227_3(void) = ConditionalBranch : r2227_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2180| Block 1 -# 2180| r2180_4(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2227| Block 1 +# 2227| r2227_4(glval<ClassWithDestructor>) = VariableAddress[a] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2180_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2179_4 -#-----| m0_4(unknown) = Chi : total:m2179_4, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2180_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2227_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2226_4 +#-----| m0_4(unknown) = Chi : total:m2226_4, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2227_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2180| r2180_5(bool) = Constant[1] : -# 2180| m2180_6(bool) = Store[a#init] : &:r2180_1, r2180_5 -# 2180| m2180_7(unknown) = Chi : total:m0_6, partial:m2180_6 +# 2227| r2227_5(bool) = Constant[1] : +# 2227| m2227_6(bool) = Store[a#init] : &:r2227_1, r2227_5 +# 2227| m2227_7(unknown) = Chi : total:m0_6, partial:m2227_6 #-----| Goto -> Block 2 -# 2181| Block 2 -# 2181| m2181_1(unknown) = Phi : from 0:~m2179_4, from 1:~m2180_7 -# 2181| r2181_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2181| m2181_3(ClassWithDestructor) = Uninitialized[b] : &:r2181_2 -# 2181| r2181_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2181| v2181_5(void) = Call[ClassWithDestructor] : func:r2181_4, this:r2181_2 -# 2181| m2181_6(unknown) = ^CallSideEffect : ~m2181_1 -# 2181| m2181_7(unknown) = Chi : total:m2181_1, partial:m2181_6 -# 2181| m2181_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2181_2 -# 2181| m2181_9(ClassWithDestructor) = Chi : total:m2181_3, partial:m2181_8 -# 2182| v2182_1(void) = NoOp : -# 2182| r2182_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2182| r2182_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2182| v2182_4(void) = Call[~ClassWithDestructor] : func:r2182_3, this:r2182_2 -# 2182| m2182_5(unknown) = ^CallSideEffect : ~m2181_7 -# 2182| m2182_6(unknown) = Chi : total:m2181_7, partial:m2182_5 -# 2182| v2182_7(void) = ^IndirectReadSideEffect[-1] : &:r2182_2, m2181_9 -# 2182| m2182_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2182_2 -# 2182| m2182_9(ClassWithDestructor) = Chi : total:m2181_9, partial:m2182_8 -# 2179| v2179_5(void) = ReturnVoid : -# 2179| v2179_6(void) = AliasedUse : ~m2182_6 -# 2179| v2179_7(void) = ExitFunction : - -# 2184| void static_variable_with_destructor_3() -# 2184| Block 0 -# 2184| v2184_1(void) = EnterFunction : -# 2184| m2184_2(unknown) = AliasedDefinition : -# 2184| m2184_3(unknown) = InitializeNonLocal : -# 2184| m2184_4(unknown) = Chi : total:m2184_2, partial:m2184_3 -# 2185| r2185_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2185| m2185_2(ClassWithDestructor) = Uninitialized[a] : &:r2185_1 -# 2185| r2185_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2185| v2185_4(void) = Call[ClassWithDestructor] : func:r2185_3, this:r2185_1 -# 2185| m2185_5(unknown) = ^CallSideEffect : ~m2184_4 -# 2185| m2185_6(unknown) = Chi : total:m2184_4, partial:m2185_5 -# 2185| m2185_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 -# 2185| m2185_8(ClassWithDestructor) = Chi : total:m2185_2, partial:m2185_7 -# 2186| r2186_1(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2186| m2186_2(ClassWithDestructor) = Uninitialized[b] : &:r2186_1 -# 2186| r2186_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2186| v2186_4(void) = Call[ClassWithDestructor] : func:r2186_3, this:r2186_1 -# 2186| m2186_5(unknown) = ^CallSideEffect : ~m2185_6 -# 2186| m2186_6(unknown) = Chi : total:m2185_6, partial:m2186_5 -# 2186| m2186_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 -# 2186| m2186_8(ClassWithDestructor) = Chi : total:m2186_2, partial:m2186_7 -# 2187| r2187_1(glval<bool>) = VariableAddress[c#init] : -# 2187| r2187_2(bool) = Load[c#init] : &:r2187_1, ~m2186_6 -# 2187| v2187_3(void) = ConditionalBranch : r2187_2 +# 2228| Block 2 +# 2228| m2228_1(unknown) = Phi : from 0:~m2226_4, from 1:~m2227_7 +# 2228| r2228_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2228| m2228_3(ClassWithDestructor) = Uninitialized[b] : &:r2228_2 +# 2228| r2228_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2228| v2228_5(void) = Call[ClassWithDestructor] : func:r2228_4, this:r2228_2 +# 2228| m2228_6(unknown) = ^CallSideEffect : ~m2228_1 +# 2228| m2228_7(unknown) = Chi : total:m2228_1, partial:m2228_6 +# 2228| m2228_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2228_2 +# 2228| m2228_9(ClassWithDestructor) = Chi : total:m2228_3, partial:m2228_8 +# 2229| v2229_1(void) = NoOp : +# 2229| r2229_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2229| r2229_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2229| v2229_4(void) = Call[~ClassWithDestructor] : func:r2229_3, this:r2229_2 +# 2229| m2229_5(unknown) = ^CallSideEffect : ~m2228_7 +# 2229| m2229_6(unknown) = Chi : total:m2228_7, partial:m2229_5 +# 2229| v2229_7(void) = ^IndirectReadSideEffect[-1] : &:r2229_2, m2228_9 +# 2229| m2229_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_2 +# 2229| m2229_9(ClassWithDestructor) = Chi : total:m2228_9, partial:m2229_8 +# 2226| v2226_5(void) = ReturnVoid : +# 2226| v2226_6(void) = AliasedUse : ~m2229_6 +# 2226| v2226_7(void) = ExitFunction : + +# 2231| void static_variable_with_destructor_3() +# 2231| Block 0 +# 2231| v2231_1(void) = EnterFunction : +# 2231| m2231_2(unknown) = AliasedDefinition : +# 2231| m2231_3(unknown) = InitializeNonLocal : +# 2231| m2231_4(unknown) = Chi : total:m2231_2, partial:m2231_3 +# 2232| r2232_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2232| m2232_2(ClassWithDestructor) = Uninitialized[a] : &:r2232_1 +# 2232| r2232_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2232| v2232_4(void) = Call[ClassWithDestructor] : func:r2232_3, this:r2232_1 +# 2232| m2232_5(unknown) = ^CallSideEffect : ~m2231_4 +# 2232| m2232_6(unknown) = Chi : total:m2231_4, partial:m2232_5 +# 2232| m2232_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 +# 2232| m2232_8(ClassWithDestructor) = Chi : total:m2232_2, partial:m2232_7 +# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2233| m2233_2(ClassWithDestructor) = Uninitialized[b] : &:r2233_1 +# 2233| r2233_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2233| v2233_4(void) = Call[ClassWithDestructor] : func:r2233_3, this:r2233_1 +# 2233| m2233_5(unknown) = ^CallSideEffect : ~m2232_6 +# 2233| m2233_6(unknown) = Chi : total:m2232_6, partial:m2233_5 +# 2233| m2233_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 +# 2233| m2233_8(ClassWithDestructor) = Chi : total:m2233_2, partial:m2233_7 +# 2234| r2234_1(glval<bool>) = VariableAddress[c#init] : +# 2234| r2234_2(bool) = Load[c#init] : &:r2234_1, ~m2233_6 +# 2234| v2234_3(void) = ConditionalBranch : r2234_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2187| Block 1 -# 2187| r2187_4(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2234| Block 1 +# 2234| r2234_4(glval<ClassWithDestructor>) = VariableAddress[c] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2187_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2186_6 -#-----| m0_4(unknown) = Chi : total:m2186_6, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2187_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2234_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2233_6 +#-----| m0_4(unknown) = Chi : total:m2233_6, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2187| r2187_5(bool) = Constant[1] : -# 2187| m2187_6(bool) = Store[c#init] : &:r2187_1, r2187_5 -# 2187| m2187_7(unknown) = Chi : total:m0_6, partial:m2187_6 +# 2234| r2234_5(bool) = Constant[1] : +# 2234| m2234_6(bool) = Store[c#init] : &:r2234_1, r2234_5 +# 2234| m2234_7(unknown) = Chi : total:m0_6, partial:m2234_6 #-----| Goto -> Block 2 -# 2188| Block 2 -# 2188| m2188_1(unknown) = Phi : from 0:~m2186_6, from 1:~m2187_7 -# 2188| v2188_2(void) = NoOp : -# 2188| r2188_3(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2188| r2188_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2188| v2188_5(void) = Call[~ClassWithDestructor] : func:r2188_4, this:r2188_3 -# 2188| m2188_6(unknown) = ^CallSideEffect : ~m2188_1 -# 2188| m2188_7(unknown) = Chi : total:m2188_1, partial:m2188_6 -# 2188| v2188_8(void) = ^IndirectReadSideEffect[-1] : &:r2188_3, m2186_8 -# 2188| m2188_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_3 -# 2188| m2188_10(ClassWithDestructor) = Chi : total:m2186_8, partial:m2188_9 -# 2188| r2188_11(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2188| r2188_12(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2188| v2188_13(void) = Call[~ClassWithDestructor] : func:r2188_12, this:r2188_11 -# 2188| m2188_14(unknown) = ^CallSideEffect : ~m2188_7 -# 2188| m2188_15(unknown) = Chi : total:m2188_7, partial:m2188_14 -# 2188| v2188_16(void) = ^IndirectReadSideEffect[-1] : &:r2188_11, m2185_8 -# 2188| m2188_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_11 -# 2188| m2188_18(ClassWithDestructor) = Chi : total:m2185_8, partial:m2188_17 -# 2184| v2184_5(void) = ReturnVoid : -# 2184| v2184_6(void) = AliasedUse : ~m2188_15 -# 2184| v2184_7(void) = ExitFunction : - -# 2190| ClassWithDestructor global_class_with_destructor -# 2190| Block 0 -# 2190| v2190_1(void) = EnterFunction : -# 2190| m2190_2(unknown) = AliasedDefinition : -# 2190| r2190_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : -# 2190| r2190_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2190| v2190_5(void) = Call[ClassWithDestructor] : func:r2190_4, this:r2190_3 -# 2190| m2190_6(unknown) = ^CallSideEffect : ~m2190_2 -# 2190| m2190_7(unknown) = Chi : total:m2190_2, partial:m2190_6 -# 2190| m2190_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2190_3 -# 2190| m2190_9(unknown) = Chi : total:m2190_7, partial:m2190_8 -# 2190| v2190_10(void) = ReturnVoid : -# 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 -# 2198| r2198_1(glval<unknown>) = FunctionAddress[get] : -# 2198| r2198_2(glval<int &>) = VariableAddress[t] : -# 2198| r2198_3(int &) = Load[t] : &:r2198_2, m2197_6 -# 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| 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<int>) = CopyValue : r2198_6 -# 2199| v2199_1(void) = NoOp : -# 2197| v2197_9(void) = ReturnIndirection[t] : &:r2197_7, m2198_11 -# 2197| v2197_10(void) = ReturnVoid : -# 2197| v2197_11(void) = AliasedUse : ~m2198_8 -# 2197| v2197_12(void) = ExitFunction : - -# 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 : -# 2204| r2204_2(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2204| r2204_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_4(void) = Call[~ClassWithDestructor] : func:r2204_3, this:r2204_2 -# 2204| m2204_5(unknown) = ^CallSideEffect : ~m2203_6 -# 2204| m2204_6(unknown) = Chi : total:m2203_6, partial:m2204_5 -# 2204| v2204_7(void) = ^IndirectReadSideEffect[-1] : &:r2204_2, m2203_9 -# 2204| m2204_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_2 -# 2204| m2204_9(ClassWithDestructor) = Chi : total:m2203_9, partial:m2204_8 -# 2201| v2201_5(void) = ReturnVoid : -# 2201| v2201_6(void) = AliasedUse : ~m2204_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 : - -# 2212| void TryCatchDestructors(bool) -# 2212| Block 0 -# 2212| v2212_1(void) = EnterFunction : -# 2212| m2212_2(unknown) = AliasedDefinition : -# 2212| m2212_3(unknown) = InitializeNonLocal : -# 2212| m2212_4(unknown) = Chi : total:m2212_2, partial:m2212_3 -# 2212| r2212_5(glval<bool>) = VariableAddress[b] : -# 2212| m2212_6(bool) = InitializeParameter[b] : &:r2212_5 -# 2214| r2214_1(glval<String>) = VariableAddress[s] : -# 2214| m2214_2(String) = Uninitialized[s] : &:r2214_1 -# 2214| r2214_3(glval<unknown>) = FunctionAddress[String] : -# 2214| v2214_4(void) = Call[String] : func:r2214_3, this:r2214_1 -# 2214| m2214_5(unknown) = ^CallSideEffect : ~m2212_4 -# 2214| m2214_6(unknown) = Chi : total:m2212_4, partial:m2214_5 -# 2214| m2214_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2214_1 -# 2214| m2214_8(String) = Chi : total:m2214_2, partial:m2214_7 -# 2215| r2215_1(glval<bool>) = VariableAddress[b] : -# 2215| r2215_2(bool) = Load[b] : &:r2215_1, m2212_6 -# 2215| v2215_3(void) = ConditionalBranch : r2215_2 +# 2235| Block 2 +# 2235| m2235_1(unknown) = Phi : from 0:~m2233_6, from 1:~m2234_7 +# 2235| v2235_2(void) = NoOp : +# 2235| r2235_3(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2235| r2235_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_5(void) = Call[~ClassWithDestructor] : func:r2235_4, this:r2235_3 +# 2235| m2235_6(unknown) = ^CallSideEffect : ~m2235_1 +# 2235| m2235_7(unknown) = Chi : total:m2235_1, partial:m2235_6 +# 2235| v2235_8(void) = ^IndirectReadSideEffect[-1] : &:r2235_3, m2233_8 +# 2235| m2235_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_3 +# 2235| m2235_10(ClassWithDestructor) = Chi : total:m2233_8, partial:m2235_9 +# 2235| r2235_11(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2235| r2235_12(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_13(void) = Call[~ClassWithDestructor] : func:r2235_12, this:r2235_11 +# 2235| m2235_14(unknown) = ^CallSideEffect : ~m2235_7 +# 2235| m2235_15(unknown) = Chi : total:m2235_7, partial:m2235_14 +# 2235| v2235_16(void) = ^IndirectReadSideEffect[-1] : &:r2235_11, m2232_8 +# 2235| m2235_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_11 +# 2235| m2235_18(ClassWithDestructor) = Chi : total:m2232_8, partial:m2235_17 +# 2231| v2231_5(void) = ReturnVoid : +# 2231| v2231_6(void) = AliasedUse : ~m2235_15 +# 2231| v2231_7(void) = ExitFunction : + +# 2237| ClassWithDestructor global_class_with_destructor +# 2237| Block 0 +# 2237| v2237_1(void) = EnterFunction : +# 2237| m2237_2(unknown) = AliasedDefinition : +# 2237| r2237_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : +# 2237| r2237_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2237| v2237_5(void) = Call[ClassWithDestructor] : func:r2237_4, this:r2237_3 +# 2237| m2237_6(unknown) = ^CallSideEffect : ~m2237_2 +# 2237| m2237_7(unknown) = Chi : total:m2237_2, partial:m2237_6 +# 2237| m2237_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_3 +# 2237| m2237_9(unknown) = Chi : total:m2237_7, partial:m2237_8 +# 2237| v2237_10(void) = ReturnVoid : +# 2237| v2237_11(void) = AliasedUse : ~m2237_9 +# 2237| v2237_12(void) = ExitFunction : + +# 2241| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) +# 2241| Block 0 +# 2241| v2241_1(void) = EnterFunction : +# 2241| m2241_2(unknown) = AliasedDefinition : +# 2241| m2241_3(unknown) = InitializeNonLocal : +# 2241| m2241_4(unknown) = Chi : total:m2241_2, partial:m2241_3 +# 2241| r2241_5(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2241| m2241_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2241_5 +# 2241| r2241_7(ClassWithDestructor &) = Load[t] : &:r2241_5, m2241_6 +# 2241| m2241_8(unknown) = InitializeIndirection[t] : &:r2241_7 +# 2241| r2241_9(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2241| r2241_10(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2241| r2241_11(ClassWithDestructor &) = Load[t] : &:r2241_10, m2241_6 +# 2241| r2241_12(glval<ClassWithDestructor>) = CopyValue : r2241_11 +# 2241| r2241_13(ClassWithDestructor &) = CopyValue : r2241_12 +# 2241| m2241_14(ClassWithDestructor &) = Store[#return] : &:r2241_9, r2241_13 +# 2241| v2241_15(void) = ReturnIndirection[t] : &:r2241_7, m2241_8 +# 2241| r2241_16(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2241| v2241_17(void) = ReturnValue : &:r2241_16, m2241_14 +# 2241| v2241_18(void) = AliasedUse : m2241_3 +# 2241| v2241_19(void) = ExitFunction : + +# 2241| int& vacuous_destructor_call::get<int>(int&) +# 2241| Block 0 +# 2241| v2241_1(void) = EnterFunction : +# 2241| m2241_2(unknown) = AliasedDefinition : +# 2241| m2241_3(unknown) = InitializeNonLocal : +# 2241| m2241_4(unknown) = Chi : total:m2241_2, partial:m2241_3 +# 2241| r2241_5(glval<int &>) = VariableAddress[t] : +# 2241| m2241_6(int &) = InitializeParameter[t] : &:r2241_5 +# 2241| r2241_7(int &) = Load[t] : &:r2241_5, m2241_6 +# 2241| m2241_8(unknown) = InitializeIndirection[t] : &:r2241_7 +# 2241| r2241_9(glval<int &>) = VariableAddress[#return] : +# 2241| r2241_10(glval<int &>) = VariableAddress[t] : +# 2241| r2241_11(int &) = Load[t] : &:r2241_10, m2241_6 +# 2241| r2241_12(glval<int>) = CopyValue : r2241_11 +# 2241| r2241_13(int &) = CopyValue : r2241_12 +# 2241| m2241_14(int &) = Store[#return] : &:r2241_9, r2241_13 +# 2241| v2241_15(void) = ReturnIndirection[t] : &:r2241_7, m2241_8 +# 2241| r2241_16(glval<int &>) = VariableAddress[#return] : +# 2241| v2241_17(void) = ReturnValue : &:r2241_16, m2241_14 +# 2241| v2241_18(void) = AliasedUse : m2241_3 +# 2241| v2241_19(void) = ExitFunction : + +# 2244| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) +# 2244| Block 0 +# 2244| v2244_1(void) = EnterFunction : +# 2244| m2244_2(unknown) = AliasedDefinition : +# 2244| m2244_3(unknown) = InitializeNonLocal : +# 2244| m2244_4(unknown) = Chi : total:m2244_2, partial:m2244_3 +# 2244| r2244_5(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2244| m2244_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2244_5 +# 2244| r2244_7(ClassWithDestructor &) = Load[t] : &:r2244_5, m2244_6 +# 2244| m2244_8(unknown) = InitializeIndirection[t] : &:r2244_7 +# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : +# 2245| r2245_2(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2245| r2245_3(ClassWithDestructor &) = Load[t] : &:r2245_2, m2244_6 +# 2245| r2245_4(glval<ClassWithDestructor>) = CopyValue : r2245_3 +# 2245| r2245_5(ClassWithDestructor &) = CopyValue : r2245_4 +# 2245| r2245_6(ClassWithDestructor &) = Call[get] : func:r2245_1, 0:r2245_5 +# 2245| m2245_7(unknown) = ^CallSideEffect : ~m2244_4 +# 2245| m2245_8(unknown) = Chi : total:m2244_4, partial:m2245_7 +# 2245| v2245_9(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m2244_8 +# 2245| m2245_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 +# 2245| m2245_11(unknown) = Chi : total:m2244_8, partial:m2245_10 +# 2245| r2245_12(glval<ClassWithDestructor>) = CopyValue : r2245_6 +# 2245| r2245_13(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2245| v2245_14(void) = Call[~ClassWithDestructor] : func:r2245_13 +# 2245| m2245_15(unknown) = ^CallSideEffect : ~m2245_8 +# 2245| m2245_16(unknown) = Chi : total:m2245_8, partial:m2245_15 +# 2245| v2245_17(void) = ^IndirectReadSideEffect[-1] : &:r2245_12, ~m2245_11 +# 2245| m2245_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2245_12 +# 2245| m2245_19(unknown) = Chi : total:m2245_11, partial:m2245_18 +# 2246| v2246_1(void) = NoOp : +# 2244| v2244_9(void) = ReturnIndirection[t] : &:r2244_7, m2245_19 +# 2244| v2244_10(void) = ReturnVoid : +# 2244| v2244_11(void) = AliasedUse : ~m2245_16 +# 2244| v2244_12(void) = ExitFunction : + +# 2244| void vacuous_destructor_call::call_destructor<int>(int&) +# 2244| Block 0 +# 2244| v2244_1(void) = EnterFunction : +# 2244| m2244_2(unknown) = AliasedDefinition : +# 2244| m2244_3(unknown) = InitializeNonLocal : +# 2244| m2244_4(unknown) = Chi : total:m2244_2, partial:m2244_3 +# 2244| r2244_5(glval<int &>) = VariableAddress[t] : +# 2244| m2244_6(int &) = InitializeParameter[t] : &:r2244_5 +# 2244| r2244_7(int &) = Load[t] : &:r2244_5, m2244_6 +# 2244| m2244_8(unknown) = InitializeIndirection[t] : &:r2244_7 +# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : +# 2245| r2245_2(glval<int &>) = VariableAddress[t] : +# 2245| r2245_3(int &) = Load[t] : &:r2245_2, m2244_6 +# 2245| r2245_4(glval<int>) = CopyValue : r2245_3 +# 2245| r2245_5(int &) = CopyValue : r2245_4 +# 2245| r2245_6(int &) = Call[get] : func:r2245_1, 0:r2245_5 +# 2245| m2245_7(unknown) = ^CallSideEffect : ~m2244_4 +# 2245| m2245_8(unknown) = Chi : total:m2244_4, partial:m2245_7 +# 2245| v2245_9(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m2244_8 +# 2245| m2245_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 +# 2245| m2245_11(unknown) = Chi : total:m2244_8, partial:m2245_10 +# 2245| r2245_12(glval<int>) = CopyValue : r2245_6 +# 2246| v2246_1(void) = NoOp : +# 2244| v2244_9(void) = ReturnIndirection[t] : &:r2244_7, m2245_11 +# 2244| v2244_10(void) = ReturnVoid : +# 2244| v2244_11(void) = AliasedUse : ~m2245_8 +# 2244| v2244_12(void) = ExitFunction : + +# 2248| void vacuous_destructor_call::non_vacuous_destructor_call() +# 2248| Block 0 +# 2248| v2248_1(void) = EnterFunction : +# 2248| m2248_2(unknown) = AliasedDefinition : +# 2248| m2248_3(unknown) = InitializeNonLocal : +# 2248| m2248_4(unknown) = Chi : total:m2248_2, partial:m2248_3 +# 2249| r2249_1(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2249| m2249_2(ClassWithDestructor) = Uninitialized[c] : &:r2249_1 +# 2249| r2249_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2249| v2249_4(void) = Call[ClassWithDestructor] : func:r2249_3, this:r2249_1 +# 2249| m2249_5(unknown) = ^CallSideEffect : ~m2248_4 +# 2249| m2249_6(unknown) = Chi : total:m2248_4, partial:m2249_5 +# 2249| m2249_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 +# 2249| m2249_8(ClassWithDestructor) = Chi : total:m2249_2, partial:m2249_7 +# 2250| r2250_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2250| r2250_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2250| r2250_3(ClassWithDestructor &) = CopyValue : r2250_2 +# 2250| v2250_4(void) = Call[call_destructor] : func:r2250_1, 0:r2250_3 +# 2250| m2250_5(unknown) = ^CallSideEffect : ~m2249_6 +# 2250| m2250_6(unknown) = Chi : total:m2249_6, partial:m2250_5 +# 2250| v2250_7(void) = ^BufferReadSideEffect[0] : &:r2250_3, ~m2249_8 +# 2250| m2250_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2250_3 +# 2250| m2250_9(ClassWithDestructor) = Chi : total:m2249_8, partial:m2250_8 +# 2251| v2251_1(void) = NoOp : +# 2251| r2251_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2251| r2251_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2251| v2251_4(void) = Call[~ClassWithDestructor] : func:r2251_3, this:r2251_2 +# 2251| m2251_5(unknown) = ^CallSideEffect : ~m2250_6 +# 2251| m2251_6(unknown) = Chi : total:m2250_6, partial:m2251_5 +# 2251| v2251_7(void) = ^IndirectReadSideEffect[-1] : &:r2251_2, m2250_9 +# 2251| m2251_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_2 +# 2251| m2251_9(ClassWithDestructor) = Chi : total:m2250_9, partial:m2251_8 +# 2248| v2248_5(void) = ReturnVoid : +# 2248| v2248_6(void) = AliasedUse : ~m2251_6 +# 2248| v2248_7(void) = ExitFunction : + +# 2253| void vacuous_destructor_call::vacuous_destructor_call() +# 2253| Block 0 +# 2253| v2253_1(void) = EnterFunction : +# 2253| m2253_2(unknown) = AliasedDefinition : +# 2253| m2253_3(unknown) = InitializeNonLocal : +# 2253| m2253_4(unknown) = Chi : total:m2253_2, partial:m2253_3 +# 2254| r2254_1(glval<int>) = VariableAddress[i] : +# 2254| m2254_2(int) = Uninitialized[i] : &:r2254_1 +# 2255| r2255_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2255| r2255_2(glval<int>) = VariableAddress[i] : +# 2255| r2255_3(int &) = CopyValue : r2255_2 +# 2255| v2255_4(void) = Call[call_destructor] : func:r2255_1, 0:r2255_3 +# 2255| m2255_5(unknown) = ^CallSideEffect : ~m2253_4 +# 2255| m2255_6(unknown) = Chi : total:m2253_4, partial:m2255_5 +# 2255| v2255_7(void) = ^BufferReadSideEffect[0] : &:r2255_3, ~m2254_2 +# 2255| m2255_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2255_3 +# 2255| m2255_9(int) = Chi : total:m2254_2, partial:m2255_8 +# 2256| v2256_1(void) = NoOp : +# 2253| v2253_5(void) = ReturnVoid : +# 2253| v2253_6(void) = AliasedUse : ~m2255_6 +# 2253| v2253_7(void) = ExitFunction : + +# 2259| void TryCatchDestructors(bool) +# 2259| Block 0 +# 2259| v2259_1(void) = EnterFunction : +# 2259| m2259_2(unknown) = AliasedDefinition : +# 2259| m2259_3(unknown) = InitializeNonLocal : +# 2259| m2259_4(unknown) = Chi : total:m2259_2, partial:m2259_3 +# 2259| r2259_5(glval<bool>) = VariableAddress[b] : +# 2259| m2259_6(bool) = InitializeParameter[b] : &:r2259_5 +# 2261| r2261_1(glval<String>) = VariableAddress[s] : +# 2261| m2261_2(String) = Uninitialized[s] : &:r2261_1 +# 2261| r2261_3(glval<unknown>) = FunctionAddress[String] : +# 2261| v2261_4(void) = Call[String] : func:r2261_3, this:r2261_1 +# 2261| m2261_5(unknown) = ^CallSideEffect : ~m2259_4 +# 2261| m2261_6(unknown) = Chi : total:m2259_4, partial:m2261_5 +# 2261| m2261_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2261_1 +# 2261| m2261_8(String) = Chi : total:m2261_2, partial:m2261_7 +# 2262| r2262_1(glval<bool>) = VariableAddress[b] : +# 2262| r2262_2(bool) = Load[b] : &:r2262_1, m2259_6 +# 2262| v2262_3(void) = ConditionalBranch : r2262_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 2212| Block 1 -# 2212| m2212_7(unknown) = Phi : from 2:~m2212_10, from 10:~m2228_1 -# 2212| v2212_8(void) = AliasedUse : ~m2212_7 -# 2212| v2212_9(void) = ExitFunction : +# 2259| Block 1 +# 2259| m2259_7(unknown) = Phi : from 2:~m2259_10, from 10:~m2275_1 +# 2259| v2259_8(void) = AliasedUse : ~m2259_7 +# 2259| v2259_9(void) = ExitFunction : -# 2212| Block 2 -# 2212| m2212_10(unknown) = Phi : from 6:~m2221_8, from 9:~m2214_6 -# 2212| v2212_11(void) = Unwind : +# 2259| Block 2 +# 2259| m2259_10(unknown) = Phi : from 6:~m2268_8, from 9:~m2261_6 +# 2259| v2259_11(void) = Unwind : #-----| Goto -> Block 1 -# 2216| Block 3 -# 2216| r2216_1(glval<char *>) = VariableAddress[#throw2216:7] : -# 2216| r2216_2(glval<char[15]>) = StringConstant["string literal"] : -# 2216| r2216_3(char *) = Convert : r2216_2 -# 2216| m2216_4(char *) = Store[#throw2216:7] : &:r2216_1, r2216_3 -# 2216| v2216_5(void) = ThrowValue : &:r2216_1, m2216_4 +# 2263| Block 3 +# 2263| r2263_1(glval<char *>) = VariableAddress[#throw2263:7] : +# 2263| r2263_2(glval<char[15]>) = StringConstant["string literal"] : +# 2263| r2263_3(char *) = Convert : r2263_2 +# 2263| m2263_4(char *) = Store[#throw2263:7] : &:r2263_1, r2263_3 +# 2263| v2263_5(void) = ThrowValue : &:r2263_1, m2263_4 #-----| Exception -> Block 5 -# 2218| Block 4 -# 2218| r2218_1(glval<String>) = VariableAddress[s2] : -# 2218| m2218_2(String) = Uninitialized[s2] : &:r2218_1 -# 2218| r2218_3(glval<unknown>) = FunctionAddress[String] : -# 2218| v2218_4(void) = Call[String] : func:r2218_3, this:r2218_1 -# 2218| m2218_5(unknown) = ^CallSideEffect : ~m2214_6 -# 2218| m2218_6(unknown) = Chi : total:m2214_6, partial:m2218_5 -# 2218| m2218_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 -# 2218| m2218_8(String) = Chi : total:m2218_2, partial:m2218_7 -# 2219| r2219_1(glval<String>) = VariableAddress[s2] : -# 2219| r2219_2(glval<unknown>) = FunctionAddress[~String] : -# 2219| v2219_3(void) = Call[~String] : func:r2219_2, this:r2219_1 -# 2219| m2219_4(unknown) = ^CallSideEffect : ~m2218_6 -# 2219| m2219_5(unknown) = Chi : total:m2218_6, partial:m2219_4 -# 2219| v2219_6(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2218_8 -# 2219| m2219_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 -# 2219| m2219_8(String) = Chi : total:m2218_8, partial:m2219_7 -# 2219| r2219_9(glval<String>) = VariableAddress[s] : -# 2219| r2219_10(glval<unknown>) = FunctionAddress[~String] : -# 2219| v2219_11(void) = Call[~String] : func:r2219_10, this:r2219_9 -# 2219| m2219_12(unknown) = ^CallSideEffect : ~m2219_5 -# 2219| m2219_13(unknown) = Chi : total:m2219_5, partial:m2219_12 -# 2219| v2219_14(void) = ^IndirectReadSideEffect[-1] : &:r2219_9, m2214_8 -# 2219| m2219_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2219_9 -# 2219| m2219_16(String) = Chi : total:m2214_8, partial:m2219_15 +# 2265| Block 4 +# 2265| r2265_1(glval<String>) = VariableAddress[s2] : +# 2265| m2265_2(String) = Uninitialized[s2] : &:r2265_1 +# 2265| r2265_3(glval<unknown>) = FunctionAddress[String] : +# 2265| v2265_4(void) = Call[String] : func:r2265_3, this:r2265_1 +# 2265| m2265_5(unknown) = ^CallSideEffect : ~m2261_6 +# 2265| m2265_6(unknown) = Chi : total:m2261_6, partial:m2265_5 +# 2265| m2265_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2265_1 +# 2265| m2265_8(String) = Chi : total:m2265_2, partial:m2265_7 +# 2266| r2266_1(glval<String>) = VariableAddress[s2] : +# 2266| r2266_2(glval<unknown>) = FunctionAddress[~String] : +# 2266| v2266_3(void) = Call[~String] : func:r2266_2, this:r2266_1 +# 2266| m2266_4(unknown) = ^CallSideEffect : ~m2265_6 +# 2266| m2266_5(unknown) = Chi : total:m2265_6, partial:m2266_4 +# 2266| v2266_6(void) = ^IndirectReadSideEffect[-1] : &:r2266_1, m2265_8 +# 2266| m2266_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 +# 2266| m2266_8(String) = Chi : total:m2265_8, partial:m2266_7 +# 2266| r2266_9(glval<String>) = VariableAddress[s] : +# 2266| r2266_10(glval<unknown>) = FunctionAddress[~String] : +# 2266| v2266_11(void) = Call[~String] : func:r2266_10, this:r2266_9 +# 2266| m2266_12(unknown) = ^CallSideEffect : ~m2266_5 +# 2266| m2266_13(unknown) = Chi : total:m2266_5, partial:m2266_12 +# 2266| v2266_14(void) = ^IndirectReadSideEffect[-1] : &:r2266_9, m2261_8 +# 2266| m2266_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_9 +# 2266| m2266_16(String) = Chi : total:m2261_8, partial:m2266_15 #-----| Goto -> Block 10 -# 2220| Block 5 -# 2220| v2220_1(void) = CatchByType[const char *] : +# 2267| Block 5 +# 2267| v2267_1(void) = CatchByType[const char *] : #-----| Exception -> Block 7 #-----| Goto -> Block 6 -# 2220| Block 6 -# 2220| r2220_2(glval<char *>) = VariableAddress[s] : -# 2220| m2220_3(char *) = InitializeParameter[s] : &:r2220_2 -# 2220| r2220_4(char *) = Load[s] : &:r2220_2, m2220_3 -# 2220| m2220_5(unknown) = InitializeIndirection[s] : &:r2220_4 -# 2221| r2221_1(glval<String>) = VariableAddress[#throw2221:5] : -# 2221| m2221_2(String) = Uninitialized[#throw2221:5] : &:r2221_1 -# 2221| r2221_3(glval<unknown>) = FunctionAddress[String] : -# 2221| r2221_4(glval<char *>) = VariableAddress[s] : -# 2221| r2221_5(char *) = Load[s] : &:r2221_4, m2220_3 -# 2221| v2221_6(void) = Call[String] : func:r2221_3, this:r2221_1, 0:r2221_5 -# 2221| m2221_7(unknown) = ^CallSideEffect : ~m2214_6 -# 2221| m2221_8(unknown) = Chi : total:m2214_6, partial:m2221_7 -# 2221| v2221_9(void) = ^BufferReadSideEffect[0] : &:r2221_5, ~m2220_5 -# 2221| m2221_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2221_1 -# 2221| m2221_11(String) = Chi : total:m2221_2, partial:m2221_10 -# 2221| v2221_12(void) = ThrowValue : &:r2221_1, m2221_11 +# 2267| Block 6 +# 2267| r2267_2(glval<char *>) = VariableAddress[s] : +# 2267| m2267_3(char *) = InitializeParameter[s] : &:r2267_2 +# 2267| r2267_4(char *) = Load[s] : &:r2267_2, m2267_3 +# 2267| m2267_5(unknown) = InitializeIndirection[s] : &:r2267_4 +# 2268| r2268_1(glval<String>) = VariableAddress[#throw2268:5] : +# 2268| m2268_2(String) = Uninitialized[#throw2268:5] : &:r2268_1 +# 2268| r2268_3(glval<unknown>) = FunctionAddress[String] : +# 2268| r2268_4(glval<char *>) = VariableAddress[s] : +# 2268| r2268_5(char *) = Load[s] : &:r2268_4, m2267_3 +# 2268| v2268_6(void) = Call[String] : func:r2268_3, this:r2268_1, 0:r2268_5 +# 2268| m2268_7(unknown) = ^CallSideEffect : ~m2261_6 +# 2268| m2268_8(unknown) = Chi : total:m2261_6, partial:m2268_7 +# 2268| v2268_9(void) = ^BufferReadSideEffect[0] : &:r2268_5, ~m2267_5 +# 2268| m2268_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2268_1 +# 2268| m2268_11(String) = Chi : total:m2268_2, partial:m2268_10 +# 2268| v2268_12(void) = ThrowValue : &:r2268_1, m2268_11 #-----| Exception -> Block 2 -# 2223| Block 7 -# 2223| v2223_1(void) = CatchByType[const String &] : +# 2270| Block 7 +# 2270| v2270_1(void) = CatchByType[const String &] : #-----| Exception -> Block 9 #-----| Goto -> Block 8 -# 2223| Block 8 -# 2223| r2223_2(glval<String &>) = VariableAddress[e] : -# 2223| m2223_3(String &) = InitializeParameter[e] : &:r2223_2 -# 2223| r2223_4(String &) = Load[e] : &:r2223_2, m2223_3 -# 2223| m2223_5(unknown) = InitializeIndirection[e] : &:r2223_4 -# 2223| v2223_6(void) = NoOp : +# 2270| Block 8 +# 2270| r2270_2(glval<String &>) = VariableAddress[e] : +# 2270| m2270_3(String &) = InitializeParameter[e] : &:r2270_2 +# 2270| r2270_4(String &) = Load[e] : &:r2270_2, m2270_3 +# 2270| m2270_5(unknown) = InitializeIndirection[e] : &:r2270_4 +# 2270| v2270_6(void) = NoOp : #-----| Goto -> Block 10 -# 2225| Block 9 -# 2225| v2225_1(void) = CatchAny : -# 2226| v2226_1(void) = ReThrow : +# 2272| Block 9 +# 2272| v2272_1(void) = CatchAny : +# 2273| v2273_1(void) = ReThrow : #-----| Exception -> Block 2 -# 2228| Block 10 -# 2228| m2228_1(unknown) = Phi : from 4:~m2219_13, from 8:~m2214_6 -# 2228| v2228_2(void) = NoOp : -# 2212| v2212_12(void) = ReturnVoid : +# 2275| Block 10 +# 2275| m2275_1(unknown) = Phi : from 4:~m2266_13, from 8:~m2261_6 +# 2275| v2275_2(void) = NoOp : +# 2259| v2259_12(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2230| void IfDestructors(bool) -# 2230| Block 0 -# 2230| v2230_1(void) = EnterFunction : -# 2230| m2230_2(unknown) = AliasedDefinition : -# 2230| m2230_3(unknown) = InitializeNonLocal : -# 2230| m2230_4(unknown) = Chi : total:m2230_2, partial:m2230_3 -# 2230| r2230_5(glval<bool>) = VariableAddress[b] : -# 2230| m2230_6(bool) = InitializeParameter[b] : &:r2230_5 -# 2231| r2231_1(glval<String>) = VariableAddress[s1] : -# 2231| m2231_2(String) = Uninitialized[s1] : &:r2231_1 -# 2231| r2231_3(glval<unknown>) = FunctionAddress[String] : -# 2231| v2231_4(void) = Call[String] : func:r2231_3, this:r2231_1 -# 2231| m2231_5(unknown) = ^CallSideEffect : ~m2230_4 -# 2231| m2231_6(unknown) = Chi : total:m2230_4, partial:m2231_5 -# 2231| m2231_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 -# 2231| m2231_8(String) = Chi : total:m2231_2, partial:m2231_7 -# 2232| r2232_1(glval<bool>) = VariableAddress[b] : -# 2232| r2232_2(bool) = Load[b] : &:r2232_1, m2230_6 -# 2232| v2232_3(void) = ConditionalBranch : r2232_2 +# 2277| void IfDestructors(bool) +# 2277| Block 0 +# 2277| v2277_1(void) = EnterFunction : +# 2277| m2277_2(unknown) = AliasedDefinition : +# 2277| m2277_3(unknown) = InitializeNonLocal : +# 2277| m2277_4(unknown) = Chi : total:m2277_2, partial:m2277_3 +# 2277| r2277_5(glval<bool>) = VariableAddress[b] : +# 2277| m2277_6(bool) = InitializeParameter[b] : &:r2277_5 +# 2278| r2278_1(glval<String>) = VariableAddress[s1] : +# 2278| m2278_2(String) = Uninitialized[s1] : &:r2278_1 +# 2278| r2278_3(glval<unknown>) = FunctionAddress[String] : +# 2278| v2278_4(void) = Call[String] : func:r2278_3, this:r2278_1 +# 2278| m2278_5(unknown) = ^CallSideEffect : ~m2277_4 +# 2278| m2278_6(unknown) = Chi : total:m2277_4, partial:m2278_5 +# 2278| m2278_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 +# 2278| m2278_8(String) = Chi : total:m2278_2, partial:m2278_7 +# 2279| r2279_1(glval<bool>) = VariableAddress[b] : +# 2279| r2279_2(bool) = Load[b] : &:r2279_1, m2277_6 +# 2279| v2279_3(void) = ConditionalBranch : r2279_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2233| Block 1 -# 2233| r2233_1(glval<String>) = VariableAddress[s2] : -# 2233| m2233_2(String) = Uninitialized[s2] : &:r2233_1 -# 2233| r2233_3(glval<unknown>) = FunctionAddress[String] : -# 2233| v2233_4(void) = Call[String] : func:r2233_3, this:r2233_1 -# 2233| m2233_5(unknown) = ^CallSideEffect : ~m2231_6 -# 2233| m2233_6(unknown) = Chi : total:m2231_6, partial:m2233_5 -# 2233| m2233_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2233| m2233_8(String) = Chi : total:m2233_2, partial:m2233_7 -# 2234| r2234_1(glval<String>) = VariableAddress[s2] : -# 2234| r2234_2(glval<unknown>) = FunctionAddress[~String] : -# 2234| v2234_3(void) = Call[~String] : func:r2234_2, this:r2234_1 -# 2234| m2234_4(unknown) = ^CallSideEffect : ~m2233_6 -# 2234| m2234_5(unknown) = Chi : total:m2233_6, partial:m2234_4 -# 2234| v2234_6(void) = ^IndirectReadSideEffect[-1] : &:r2234_1, m2233_8 -# 2234| m2234_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 -# 2234| m2234_8(String) = Chi : total:m2233_8, partial:m2234_7 +# 2280| Block 1 +# 2280| r2280_1(glval<String>) = VariableAddress[s2] : +# 2280| m2280_2(String) = Uninitialized[s2] : &:r2280_1 +# 2280| r2280_3(glval<unknown>) = FunctionAddress[String] : +# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 +# 2280| m2280_5(unknown) = ^CallSideEffect : ~m2278_6 +# 2280| m2280_6(unknown) = Chi : total:m2278_6, partial:m2280_5 +# 2280| m2280_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2280| m2280_8(String) = Chi : total:m2280_2, partial:m2280_7 +# 2281| r2281_1(glval<String>) = VariableAddress[s2] : +# 2281| r2281_2(glval<unknown>) = FunctionAddress[~String] : +# 2281| v2281_3(void) = Call[~String] : func:r2281_2, this:r2281_1 +# 2281| m2281_4(unknown) = ^CallSideEffect : ~m2280_6 +# 2281| m2281_5(unknown) = Chi : total:m2280_6, partial:m2281_4 +# 2281| v2281_6(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, m2280_8 +# 2281| m2281_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 +# 2281| m2281_8(String) = Chi : total:m2280_8, partial:m2281_7 #-----| Goto -> Block 3 -# 2235| Block 2 -# 2235| r2235_1(glval<String>) = VariableAddress[s3] : -# 2235| m2235_2(String) = Uninitialized[s3] : &:r2235_1 -# 2235| r2235_3(glval<unknown>) = FunctionAddress[String] : -# 2235| v2235_4(void) = Call[String] : func:r2235_3, this:r2235_1 -# 2235| m2235_5(unknown) = ^CallSideEffect : ~m2231_6 -# 2235| m2235_6(unknown) = Chi : total:m2231_6, partial:m2235_5 -# 2235| m2235_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2235_1 -# 2235| m2235_8(String) = Chi : total:m2235_2, partial:m2235_7 -# 2236| r2236_1(glval<String>) = VariableAddress[s3] : -# 2236| r2236_2(glval<unknown>) = FunctionAddress[~String] : -# 2236| v2236_3(void) = Call[~String] : func:r2236_2, this:r2236_1 -# 2236| m2236_4(unknown) = ^CallSideEffect : ~m2235_6 -# 2236| m2236_5(unknown) = Chi : total:m2235_6, partial:m2236_4 -# 2236| v2236_6(void) = ^IndirectReadSideEffect[-1] : &:r2236_1, m2235_8 -# 2236| m2236_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 -# 2236| m2236_8(String) = Chi : total:m2235_8, partial:m2236_7 +# 2282| Block 2 +# 2282| r2282_1(glval<String>) = VariableAddress[s3] : +# 2282| m2282_2(String) = Uninitialized[s3] : &:r2282_1 +# 2282| r2282_3(glval<unknown>) = FunctionAddress[String] : +# 2282| v2282_4(void) = Call[String] : func:r2282_3, this:r2282_1 +# 2282| m2282_5(unknown) = ^CallSideEffect : ~m2278_6 +# 2282| m2282_6(unknown) = Chi : total:m2278_6, partial:m2282_5 +# 2282| m2282_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 +# 2282| m2282_8(String) = Chi : total:m2282_2, partial:m2282_7 +# 2283| r2283_1(glval<String>) = VariableAddress[s3] : +# 2283| r2283_2(glval<unknown>) = FunctionAddress[~String] : +# 2283| v2283_3(void) = Call[~String] : func:r2283_2, this:r2283_1 +# 2283| m2283_4(unknown) = ^CallSideEffect : ~m2282_6 +# 2283| m2283_5(unknown) = Chi : total:m2282_6, partial:m2283_4 +# 2283| v2283_6(void) = ^IndirectReadSideEffect[-1] : &:r2283_1, m2282_8 +# 2283| m2283_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 +# 2283| m2283_8(String) = Chi : total:m2282_8, partial:m2283_7 #-----| Goto -> Block 3 -# 2237| Block 3 -# 2237| m2237_1(unknown) = Phi : from 1:~m2234_5, from 2:~m2236_5 -# 2237| r2237_2(glval<String>) = VariableAddress[s4] : -# 2237| m2237_3(String) = Uninitialized[s4] : &:r2237_2 -# 2237| r2237_4(glval<unknown>) = FunctionAddress[String] : -# 2237| v2237_5(void) = Call[String] : func:r2237_4, this:r2237_2 -# 2237| m2237_6(unknown) = ^CallSideEffect : ~m2237_1 -# 2237| m2237_7(unknown) = Chi : total:m2237_1, partial:m2237_6 -# 2237| m2237_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2237_2 -# 2237| m2237_9(String) = Chi : total:m2237_3, partial:m2237_8 -# 2238| v2238_1(void) = NoOp : -# 2238| r2238_2(glval<String>) = VariableAddress[s4] : -# 2238| r2238_3(glval<unknown>) = FunctionAddress[~String] : -# 2238| v2238_4(void) = Call[~String] : func:r2238_3, this:r2238_2 -# 2238| m2238_5(unknown) = ^CallSideEffect : ~m2237_7 -# 2238| m2238_6(unknown) = Chi : total:m2237_7, partial:m2238_5 -# 2238| v2238_7(void) = ^IndirectReadSideEffect[-1] : &:r2238_2, m2237_9 -# 2238| m2238_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2238_2 -# 2238| m2238_9(String) = Chi : total:m2237_9, partial:m2238_8 -# 2238| r2238_10(glval<String>) = VariableAddress[s1] : -# 2238| r2238_11(glval<unknown>) = FunctionAddress[~String] : -# 2238| v2238_12(void) = Call[~String] : func:r2238_11, this:r2238_10 -# 2238| m2238_13(unknown) = ^CallSideEffect : ~m2238_6 -# 2238| m2238_14(unknown) = Chi : total:m2238_6, partial:m2238_13 -# 2238| v2238_15(void) = ^IndirectReadSideEffect[-1] : &:r2238_10, m2231_8 -# 2238| m2238_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r2238_10 -# 2238| m2238_17(String) = Chi : total:m2231_8, partial:m2238_16 -# 2230| v2230_7(void) = ReturnVoid : -# 2230| v2230_8(void) = AliasedUse : ~m2238_14 -# 2230| v2230_9(void) = ExitFunction : - -# 2240| void ForDestructors() -# 2240| Block 0 -# 2240| v2240_1(void) = EnterFunction : -# 2240| m2240_2(unknown) = AliasedDefinition : -# 2240| m2240_3(unknown) = InitializeNonLocal : -# 2240| m2240_4(unknown) = Chi : total:m2240_2, partial:m2240_3 -# 2241| r2241_1(glval<char>) = VariableAddress[c] : -# 2241| r2241_2(char) = Constant[97] : -# 2241| m2241_3(char) = Store[c] : &:r2241_1, r2241_2 -# 2242| r2242_1(glval<String>) = VariableAddress[s] : -# 2242| m2242_2(String) = Uninitialized[s] : &:r2242_1 -# 2242| r2242_3(glval<unknown>) = FunctionAddress[String] : -# 2242| r2242_4(glval<char[6]>) = StringConstant["hello"] : -# 2242| r2242_5(char *) = Convert : r2242_4 -# 2242| v2242_6(void) = Call[String] : func:r2242_3, this:r2242_1, 0:r2242_5 -# 2242| m2242_7(unknown) = ^CallSideEffect : ~m2240_4 -# 2242| m2242_8(unknown) = Chi : total:m2240_4, partial:m2242_7 -# 2242| v2242_9(void) = ^BufferReadSideEffect[0] : &:r2242_5, ~m2240_3 -# 2242| m2242_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_1 -# 2242| m2242_11(String) = Chi : total:m2242_2, partial:m2242_10 +# 2284| Block 3 +# 2284| m2284_1(unknown) = Phi : from 1:~m2281_5, from 2:~m2283_5 +# 2284| r2284_2(glval<String>) = VariableAddress[s4] : +# 2284| m2284_3(String) = Uninitialized[s4] : &:r2284_2 +# 2284| r2284_4(glval<unknown>) = FunctionAddress[String] : +# 2284| v2284_5(void) = Call[String] : func:r2284_4, this:r2284_2 +# 2284| m2284_6(unknown) = ^CallSideEffect : ~m2284_1 +# 2284| m2284_7(unknown) = Chi : total:m2284_1, partial:m2284_6 +# 2284| m2284_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_2 +# 2284| m2284_9(String) = Chi : total:m2284_3, partial:m2284_8 +# 2285| v2285_1(void) = NoOp : +# 2285| r2285_2(glval<String>) = VariableAddress[s4] : +# 2285| r2285_3(glval<unknown>) = FunctionAddress[~String] : +# 2285| v2285_4(void) = Call[~String] : func:r2285_3, this:r2285_2 +# 2285| m2285_5(unknown) = ^CallSideEffect : ~m2284_7 +# 2285| m2285_6(unknown) = Chi : total:m2284_7, partial:m2285_5 +# 2285| v2285_7(void) = ^IndirectReadSideEffect[-1] : &:r2285_2, m2284_9 +# 2285| m2285_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_2 +# 2285| m2285_9(String) = Chi : total:m2284_9, partial:m2285_8 +# 2285| r2285_10(glval<String>) = VariableAddress[s1] : +# 2285| r2285_11(glval<unknown>) = FunctionAddress[~String] : +# 2285| v2285_12(void) = Call[~String] : func:r2285_11, this:r2285_10 +# 2285| m2285_13(unknown) = ^CallSideEffect : ~m2285_6 +# 2285| m2285_14(unknown) = Chi : total:m2285_6, partial:m2285_13 +# 2285| v2285_15(void) = ^IndirectReadSideEffect[-1] : &:r2285_10, m2278_8 +# 2285| m2285_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_10 +# 2285| m2285_17(String) = Chi : total:m2278_8, partial:m2285_16 +# 2277| v2277_7(void) = ReturnVoid : +# 2277| v2277_8(void) = AliasedUse : ~m2285_14 +# 2277| v2277_9(void) = ExitFunction : + +# 2287| void ForDestructors() +# 2287| Block 0 +# 2287| v2287_1(void) = EnterFunction : +# 2287| m2287_2(unknown) = AliasedDefinition : +# 2287| m2287_3(unknown) = InitializeNonLocal : +# 2287| m2287_4(unknown) = Chi : total:m2287_2, partial:m2287_3 +# 2288| r2288_1(glval<char>) = VariableAddress[c] : +# 2288| r2288_2(char) = Constant[97] : +# 2288| m2288_3(char) = Store[c] : &:r2288_1, r2288_2 +# 2289| r2289_1(glval<String>) = VariableAddress[s] : +# 2289| m2289_2(String) = Uninitialized[s] : &:r2289_1 +# 2289| r2289_3(glval<unknown>) = FunctionAddress[String] : +# 2289| r2289_4(glval<char[6]>) = StringConstant["hello"] : +# 2289| r2289_5(char *) = Convert : r2289_4 +# 2289| v2289_6(void) = Call[String] : func:r2289_3, this:r2289_1, 0:r2289_5 +# 2289| m2289_7(unknown) = ^CallSideEffect : ~m2287_4 +# 2289| m2289_8(unknown) = Chi : total:m2287_4, partial:m2289_7 +# 2289| v2289_9(void) = ^BufferReadSideEffect[0] : &:r2289_5, ~m2287_3 +# 2289| m2289_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_1 +# 2289| m2289_11(String) = Chi : total:m2289_2, partial:m2289_10 #-----| Goto -> Block 1 -# 2242| Block 1 -# 2242| m2242_12(String) = Phi : from 0:m2242_11, from 2:m2242_28 -# 2242| m2242_13(unknown) = Phi : from 0:~m2242_8, from 2:~m2242_25 -# 2242| m2242_14(char) = Phi : from 0:m2241_3, from 2:m2242_30 -# 2242| r2242_15(glval<char>) = VariableAddress[c] : -# 2242| r2242_16(char) = Load[c] : &:r2242_15, m2242_14 -# 2242| r2242_17(int) = Convert : r2242_16 -# 2242| r2242_18(int) = Constant[0] : -# 2242| r2242_19(bool) = CompareNE : r2242_17, r2242_18 -# 2242| v2242_20(void) = ConditionalBranch : r2242_19 +# 2289| Block 1 +# 2289| m2289_12(String) = Phi : from 0:m2289_11, from 2:m2289_28 +# 2289| m2289_13(unknown) = Phi : from 0:~m2289_8, from 2:~m2289_25 +# 2289| m2289_14(char) = Phi : from 0:m2288_3, from 2:m2289_30 +# 2289| r2289_15(glval<char>) = VariableAddress[c] : +# 2289| r2289_16(char) = Load[c] : &:r2289_15, m2289_14 +# 2289| r2289_17(int) = Convert : r2289_16 +# 2289| r2289_18(int) = Constant[0] : +# 2289| r2289_19(bool) = CompareNE : r2289_17, r2289_18 +# 2289| v2289_20(void) = ConditionalBranch : r2289_19 #-----| False -> Block 3 #-----| True -> Block 2 -# 2243| Block 2 -# 2243| r2243_1(glval<String>) = VariableAddress[s2] : -# 2243| m2243_2(String) = Uninitialized[s2] : &:r2243_1 -# 2243| r2243_3(glval<unknown>) = FunctionAddress[String] : -# 2243| v2243_4(void) = Call[String] : func:r2243_3, this:r2243_1 -# 2243| m2243_5(unknown) = ^CallSideEffect : ~m2242_13 -# 2243| m2243_6(unknown) = Chi : total:m2242_13, partial:m2243_5 -# 2243| m2243_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2243_1 -# 2243| m2243_8(String) = Chi : total:m2243_2, partial:m2243_7 -# 2244| r2244_1(glval<String>) = VariableAddress[s2] : -# 2244| r2244_2(glval<unknown>) = FunctionAddress[~String] : -# 2244| v2244_3(void) = Call[~String] : func:r2244_2, this:r2244_1 -# 2244| m2244_4(unknown) = ^CallSideEffect : ~m2243_6 -# 2244| m2244_5(unknown) = Chi : total:m2243_6, partial:m2244_4 -# 2244| v2244_6(void) = ^IndirectReadSideEffect[-1] : &:r2244_1, m2243_8 -# 2244| m2244_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2244_1 -# 2244| m2244_8(String) = Chi : total:m2243_8, partial:m2244_7 -# 2242| r2242_21(glval<String>) = VariableAddress[s] : -# 2242| r2242_22(glval<unknown>) = FunctionAddress[pop_back] : -# 2242| r2242_23(char) = Call[pop_back] : func:r2242_22, this:r2242_21 -# 2242| m2242_24(unknown) = ^CallSideEffect : ~m2244_5 -# 2242| m2242_25(unknown) = Chi : total:m2244_5, partial:m2242_24 -# 2242| v2242_26(void) = ^IndirectReadSideEffect[-1] : &:r2242_21, m2242_12 -# 2242| m2242_27(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_21 -# 2242| m2242_28(String) = Chi : total:m2242_12, partial:m2242_27 -# 2242| r2242_29(glval<char>) = VariableAddress[c] : -# 2242| m2242_30(char) = Store[c] : &:r2242_29, r2242_23 +# 2290| Block 2 +# 2290| r2290_1(glval<String>) = VariableAddress[s2] : +# 2290| m2290_2(String) = Uninitialized[s2] : &:r2290_1 +# 2290| r2290_3(glval<unknown>) = FunctionAddress[String] : +# 2290| v2290_4(void) = Call[String] : func:r2290_3, this:r2290_1 +# 2290| m2290_5(unknown) = ^CallSideEffect : ~m2289_13 +# 2290| m2290_6(unknown) = Chi : total:m2289_13, partial:m2290_5 +# 2290| m2290_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2290_1 +# 2290| m2290_8(String) = Chi : total:m2290_2, partial:m2290_7 +# 2291| r2291_1(glval<String>) = VariableAddress[s2] : +# 2291| r2291_2(glval<unknown>) = FunctionAddress[~String] : +# 2291| v2291_3(void) = Call[~String] : func:r2291_2, this:r2291_1 +# 2291| m2291_4(unknown) = ^CallSideEffect : ~m2290_6 +# 2291| m2291_5(unknown) = Chi : total:m2290_6, partial:m2291_4 +# 2291| v2291_6(void) = ^IndirectReadSideEffect[-1] : &:r2291_1, m2290_8 +# 2291| m2291_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2291_1 +# 2291| m2291_8(String) = Chi : total:m2290_8, partial:m2291_7 +# 2289| r2289_21(glval<String>) = VariableAddress[s] : +# 2289| r2289_22(glval<unknown>) = FunctionAddress[pop_back] : +# 2289| r2289_23(char) = Call[pop_back] : func:r2289_22, this:r2289_21 +# 2289| m2289_24(unknown) = ^CallSideEffect : ~m2291_5 +# 2289| m2289_25(unknown) = Chi : total:m2291_5, partial:m2289_24 +# 2289| v2289_26(void) = ^IndirectReadSideEffect[-1] : &:r2289_21, m2289_12 +# 2289| m2289_27(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_21 +# 2289| m2289_28(String) = Chi : total:m2289_12, partial:m2289_27 +# 2289| r2289_29(glval<char>) = VariableAddress[c] : +# 2289| m2289_30(char) = Store[c] : &:r2289_29, r2289_23 #-----| Goto (back edge) -> Block 1 -# 2242| Block 3 -# 2242| r2242_31(glval<String>) = VariableAddress[s] : -# 2242| r2242_32(glval<unknown>) = FunctionAddress[~String] : -# 2242| v2242_33(void) = Call[~String] : func:r2242_32, this:r2242_31 -# 2242| m2242_34(unknown) = ^CallSideEffect : ~m2242_13 -# 2242| m2242_35(unknown) = Chi : total:m2242_13, partial:m2242_34 -# 2242| v2242_36(void) = ^IndirectReadSideEffect[-1] : &:r2242_31, m2242_12 -# 2242| m2242_37(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_31 -# 2242| m2242_38(String) = Chi : total:m2242_12, partial:m2242_37 -# 2246| r2246_1(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2246| r2246_2(glval<vector<String>>) = VariableAddress[#temp2246:20] : -# 2246| m2246_3(vector<String>) = Uninitialized[#temp2246:20] : &:r2246_2 -# 2246| r2246_4(glval<unknown>) = FunctionAddress[vector] : -# 2246| r2246_5(glval<String>) = VariableAddress[#temp2246:35] : -# 2246| m2246_6(String) = Uninitialized[#temp2246:35] : &:r2246_5 -# 2246| r2246_7(glval<unknown>) = FunctionAddress[String] : -# 2246| r2246_8(glval<char[6]>) = StringConstant["hello"] : -# 2246| r2246_9(char *) = Convert : r2246_8 -# 2246| v2246_10(void) = Call[String] : func:r2246_7, this:r2246_5, 0:r2246_9 -# 2246| m2246_11(unknown) = ^CallSideEffect : ~m2242_35 -# 2246| m2246_12(unknown) = Chi : total:m2242_35, partial:m2246_11 -# 2246| v2246_13(void) = ^BufferReadSideEffect[0] : &:r2246_9, ~m2240_3 -# 2246| m2246_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_5 -# 2246| m2246_15(String) = Chi : total:m2246_6, partial:m2246_14 -# 2246| r2246_16(String) = Load[#temp2246:35] : &:r2246_5, m2246_15 -# 2246| v2246_17(void) = Call[vector] : func:r2246_4, this:r2246_2, 0:r2246_16 -# 2246| m2246_18(unknown) = ^CallSideEffect : ~m2246_12 -# 2246| m2246_19(unknown) = Chi : total:m2246_12, partial:m2246_18 -# 2246| m2246_20(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2246_2 -# 2246| m2246_21(vector<String>) = Chi : total:m2246_3, partial:m2246_20 -# 2246| r2246_22(vector<String> &) = CopyValue : r2246_2 -# 2246| m2246_23(vector<String> &&) = Store[(__range)] : &:r2246_1, r2246_22 -# 2246| r2246_24(glval<iterator>) = VariableAddress[(__begin)] : -# 2246| r2246_25(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2246| r2246_26(vector<String> &&) = Load[(__range)] : &:r2246_25, m2246_23 -#-----| r0_1(glval<vector<String>>) = CopyValue : r2246_26 -#-----| r0_2(glval<vector<String>>) = Convert : r0_1 -# 2246| r2246_27(glval<unknown>) = FunctionAddress[begin] : -# 2246| r2246_28(iterator) = Call[begin] : func:r2246_27, this:r0_2 -# 2246| m2246_29(unknown) = ^CallSideEffect : ~m2246_19 -# 2246| m2246_30(unknown) = Chi : total:m2246_19, partial:m2246_29 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2246_21 -# 2246| m2246_31(iterator) = Store[(__begin)] : &:r2246_24, r2246_28 -# 2246| r2246_32(glval<iterator>) = VariableAddress[(__end)] : -# 2246| r2246_33(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2246| r2246_34(vector<String> &&) = Load[(__range)] : &:r2246_33, m2246_23 -#-----| r0_4(glval<vector<String>>) = CopyValue : r2246_34 -#-----| r0_5(glval<vector<String>>) = Convert : r0_4 -# 2246| r2246_35(glval<unknown>) = FunctionAddress[end] : -# 2246| r2246_36(iterator) = Call[end] : func:r2246_35, this:r0_5 -# 2246| m2246_37(unknown) = ^CallSideEffect : ~m2246_30 -# 2246| m2246_38(unknown) = Chi : total:m2246_30, partial:m2246_37 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2246_21 -# 2246| m2246_39(iterator) = Store[(__end)] : &:r2246_32, r2246_36 +# 2289| Block 3 +# 2289| r2289_31(glval<String>) = VariableAddress[s] : +# 2289| r2289_32(glval<unknown>) = FunctionAddress[~String] : +# 2289| v2289_33(void) = Call[~String] : func:r2289_32, this:r2289_31 +# 2289| m2289_34(unknown) = ^CallSideEffect : ~m2289_13 +# 2289| m2289_35(unknown) = Chi : total:m2289_13, partial:m2289_34 +# 2289| v2289_36(void) = ^IndirectReadSideEffect[-1] : &:r2289_31, m2289_12 +# 2289| m2289_37(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_31 +# 2289| m2289_38(String) = Chi : total:m2289_12, partial:m2289_37 +# 2293| r2293_1(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_2(glval<vector<String>>) = VariableAddress[#temp2293:20] : +# 2293| m2293_3(vector<String>) = Uninitialized[#temp2293:20] : &:r2293_2 +# 2293| r2293_4(glval<unknown>) = FunctionAddress[vector] : +# 2293| r2293_5(glval<String>) = VariableAddress[#temp2293:40] : +# 2293| m2293_6(String) = Uninitialized[#temp2293:40] : &:r2293_5 +# 2293| r2293_7(glval<unknown>) = FunctionAddress[String] : +# 2293| r2293_8(glval<char[6]>) = StringConstant["hello"] : +# 2293| r2293_9(char *) = Convert : r2293_8 +# 2293| v2293_10(void) = Call[String] : func:r2293_7, this:r2293_5, 0:r2293_9 +# 2293| m2293_11(unknown) = ^CallSideEffect : ~m2289_35 +# 2293| m2293_12(unknown) = Chi : total:m2289_35, partial:m2293_11 +# 2293| v2293_13(void) = ^BufferReadSideEffect[0] : &:r2293_9, ~m2287_3 +# 2293| m2293_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_5 +# 2293| m2293_15(String) = Chi : total:m2293_6, partial:m2293_14 +# 2293| r2293_16(String) = Load[#temp2293:40] : &:r2293_5, m2293_15 +# 2293| v2293_17(void) = Call[vector] : func:r2293_4, this:r2293_2, 0:r2293_16 +# 2293| m2293_18(unknown) = ^CallSideEffect : ~m2293_12 +# 2293| m2293_19(unknown) = Chi : total:m2293_12, partial:m2293_18 +# 2293| m2293_20(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_2 +# 2293| m2293_21(vector<String>) = Chi : total:m2293_3, partial:m2293_20 +# 2293| r2293_22(vector<String> &) = CopyValue : r2293_2 +# 2293| m2293_23(vector<String> &&) = Store[(__range)] : &:r2293_1, r2293_22 +# 2293| r2293_24(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2293| r2293_25(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_26(vector<String> &&) = Load[(__range)] : &:r2293_25, m2293_23 +#-----| r0_1(glval<vector<String>>) = CopyValue : r2293_26 +#-----| r0_2(glval<vector<String>>) = Convert : r0_1 +# 2293| r2293_27(glval<unknown>) = FunctionAddress[begin] : +# 2293| r2293_28(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2293_27, this:r0_2 +# 2293| m2293_29(unknown) = ^CallSideEffect : ~m2293_19 +# 2293| m2293_30(unknown) = Chi : total:m2293_19, partial:m2293_29 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2293_21 +# 2293| m2293_31(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_24, r2293_28 +# 2293| r2293_32(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +# 2293| r2293_33(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_34(vector<String> &&) = Load[(__range)] : &:r2293_33, m2293_23 +#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_34 +#-----| r0_5(glval<vector<String>>) = Convert : r0_4 +# 2293| r2293_35(glval<unknown>) = FunctionAddress[end] : +# 2293| r2293_36(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_35, this:r0_5 +# 2293| m2293_37(unknown) = ^CallSideEffect : ~m2293_30 +# 2293| m2293_38(unknown) = Chi : total:m2293_30, partial:m2293_37 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2293_21 +# 2293| m2293_39(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_32, r2293_36 #-----| Goto -> Block 4 -# 2246| Block 4 -# 2246| m2246_40(iterator) = Phi : from 3:m2246_31, from 5:m2246_82 -# 2246| m2246_41(unknown) = Phi : from 3:~m2246_38, from 5:~m2246_79 -# 2246| r2246_42(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator>) = Convert : r2246_42 -# 2246| r2246_43(glval<unknown>) = FunctionAddress[operator!=] : -# 2246| r2246_44(glval<iterator>) = VariableAddress[(__end)] : -# 2246| r2246_45(iterator) = Load[(__end)] : &:r2246_44, m2246_39 -# 2246| r2246_46(bool) = Call[operator!=] : func:r2246_43, this:r0_7, 0:r2246_45 -# 2246| m2246_47(unknown) = ^CallSideEffect : ~m2246_41 -# 2246| m2246_48(unknown) = Chi : total:m2246_41, partial:m2246_47 -#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2246_40 -# 2246| v2246_49(void) = ConditionalBranch : r2246_46 +# 2293| Block 4 +# 2293| m2293_40(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Phi : from 3:m2293_31, from 5:m2293_87 +# 2293| m2293_41(unknown) = Phi : from 3:~m2293_38, from 5:~m2293_84 +# 2293| r2293_42(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_42 +# 2293| r2293_43(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[#temp0:0] : +#-----| m0_9(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Uninitialized[#temp0:0] : &:r0_8 +# 2293| r2293_44(glval<unknown>) = FunctionAddress[iterator] : +# 2293| r2293_45(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_45 +#-----| r0_11(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = CopyValue : r0_10 +# 2293| v2293_46(void) = Call[iterator] : func:r2293_44, this:r0_8, 0:r0_11 +# 2293| m2293_47(unknown) = ^CallSideEffect : ~m2293_41 +# 2293| m2293_48(unknown) = Chi : total:m2293_41, partial:m2293_47 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2293_39 +# 2293| m2293_49(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2293| m2293_50(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m0_9, partial:m2293_49 +#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, m2293_50 +# 2293| r2293_51(bool) = Call[operator!=] : func:r2293_43, this:r0_7, 0:r0_13 +# 2293| m2293_52(unknown) = ^CallSideEffect : ~m2293_48 +# 2293| m2293_53(unknown) = Chi : total:m2293_48, partial:m2293_52 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2293_40 +# 2293| v2293_54(void) = ConditionalBranch : r2293_51 #-----| False -> Block 6 #-----| True -> Block 5 -# 2246| Block 5 -# 2246| r2246_50(glval<String>) = VariableAddress[s] : -# 2246| m2246_51(String) = Uninitialized[s] : &:r2246_50 -# 2246| r2246_52(glval<unknown>) = FunctionAddress[String] : -# 2246| r2246_53(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_9(glval<iterator>) = Convert : r2246_53 -# 2246| r2246_54(glval<unknown>) = FunctionAddress[operator*] : -# 2246| r2246_55(String &) = Call[operator*] : func:r2246_54, this:r0_9 -# 2246| m2246_56(unknown) = ^CallSideEffect : ~m2246_48 -# 2246| m2246_57(unknown) = Chi : total:m2246_48, partial:m2246_56 -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, m2246_40 -# 2246| r2246_58(glval<String>) = CopyValue : r2246_55 -# 2246| r2246_59(glval<String>) = Convert : r2246_58 -# 2246| r2246_60(String &) = CopyValue : r2246_59 -# 2246| v2246_61(void) = Call[String] : func:r2246_52, this:r2246_50, 0:r2246_60 -# 2246| m2246_62(unknown) = ^CallSideEffect : ~m2246_57 -# 2246| m2246_63(unknown) = Chi : total:m2246_57, partial:m2246_62 -# 2246| v2246_64(void) = ^BufferReadSideEffect[0] : &:r2246_60, ~m2246_63 -# 2246| m2246_65(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_50 -# 2246| m2246_66(String) = Chi : total:m2246_51, partial:m2246_65 -# 2247| r2247_1(glval<String>) = VariableAddress[s2] : -# 2247| m2247_2(String) = Uninitialized[s2] : &:r2247_1 -# 2247| r2247_3(glval<unknown>) = FunctionAddress[String] : -# 2247| v2247_4(void) = Call[String] : func:r2247_3, this:r2247_1 -# 2247| m2247_5(unknown) = ^CallSideEffect : ~m2246_63 -# 2247| m2247_6(unknown) = Chi : total:m2246_63, partial:m2247_5 -# 2247| m2247_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2247_1 -# 2247| m2247_8(String) = Chi : total:m2247_2, partial:m2247_7 -# 2248| r2248_1(glval<String>) = VariableAddress[s2] : -# 2248| r2248_2(glval<unknown>) = FunctionAddress[~String] : -# 2248| v2248_3(void) = Call[~String] : func:r2248_2, this:r2248_1 -# 2248| m2248_4(unknown) = ^CallSideEffect : ~m2247_6 -# 2248| m2248_5(unknown) = Chi : total:m2247_6, partial:m2248_4 -# 2248| v2248_6(void) = ^IndirectReadSideEffect[-1] : &:r2248_1, m2247_8 -# 2248| m2248_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2248_1 -# 2248| m2248_8(String) = Chi : total:m2247_8, partial:m2248_7 -# 2246| r2246_67(glval<String>) = VariableAddress[s] : -# 2246| r2246_68(glval<unknown>) = FunctionAddress[~String] : -# 2246| v2246_69(void) = Call[~String] : func:r2246_68, this:r2246_67 -# 2246| m2246_70(unknown) = ^CallSideEffect : ~m2248_5 -# 2246| m2246_71(unknown) = Chi : total:m2248_5, partial:m2246_70 -# 2246| v2246_72(void) = ^IndirectReadSideEffect[-1] : &:r2246_67, m2246_66 -# 2246| m2246_73(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_67 -# 2246| m2246_74(String) = Chi : total:m2246_66, partial:m2246_73 -# 2246| r2246_75(glval<iterator>) = VariableAddress[(__begin)] : -# 2246| r2246_76(glval<unknown>) = FunctionAddress[operator++] : -# 2246| r2246_77(iterator &) = Call[operator++] : func:r2246_76, this:r2246_75 -# 2246| m2246_78(unknown) = ^CallSideEffect : ~m2246_71 -# 2246| m2246_79(unknown) = Chi : total:m2246_71, partial:m2246_78 -# 2246| v2246_80(void) = ^IndirectReadSideEffect[-1] : &:r2246_75, m2246_40 -# 2246| m2246_81(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2246_75 -# 2246| m2246_82(iterator) = Chi : total:m2246_40, partial:m2246_81 -# 2246| r2246_83(glval<iterator>) = CopyValue : r2246_77 +# 2293| Block 5 +# 2293| r2293_55(glval<String>) = VariableAddress[s] : +# 2293| m2293_56(String) = Uninitialized[s] : &:r2293_55 +# 2293| r2293_57(glval<unknown>) = FunctionAddress[String] : +# 2293| r2293_58(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_58 +# 2293| r2293_59(glval<unknown>) = FunctionAddress[operator*] : +# 2293| r2293_60(String &) = Call[operator*] : func:r2293_59, this:r0_15 +# 2293| m2293_61(unknown) = ^CallSideEffect : ~m2293_53 +# 2293| m2293_62(unknown) = Chi : total:m2293_53, partial:m2293_61 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2293_40 +# 2293| r2293_63(glval<String>) = CopyValue : r2293_60 +# 2293| r2293_64(glval<String>) = Convert : r2293_63 +# 2293| r2293_65(String &) = CopyValue : r2293_64 +# 2293| v2293_66(void) = Call[String] : func:r2293_57, this:r2293_55, 0:r2293_65 +# 2293| m2293_67(unknown) = ^CallSideEffect : ~m2293_62 +# 2293| m2293_68(unknown) = Chi : total:m2293_62, partial:m2293_67 +# 2293| v2293_69(void) = ^BufferReadSideEffect[0] : &:r2293_65, ~m2293_68 +# 2293| m2293_70(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_55 +# 2293| m2293_71(String) = Chi : total:m2293_56, partial:m2293_70 +# 2294| r2294_1(glval<String>) = VariableAddress[s2] : +# 2294| m2294_2(String) = Uninitialized[s2] : &:r2294_1 +# 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : +# 2294| v2294_4(void) = Call[String] : func:r2294_3, this:r2294_1 +# 2294| m2294_5(unknown) = ^CallSideEffect : ~m2293_68 +# 2294| m2294_6(unknown) = Chi : total:m2293_68, partial:m2294_5 +# 2294| m2294_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 +# 2294| m2294_8(String) = Chi : total:m2294_2, partial:m2294_7 +# 2295| r2295_1(glval<String>) = VariableAddress[s2] : +# 2295| r2295_2(glval<unknown>) = FunctionAddress[~String] : +# 2295| v2295_3(void) = Call[~String] : func:r2295_2, this:r2295_1 +# 2295| m2295_4(unknown) = ^CallSideEffect : ~m2294_6 +# 2295| m2295_5(unknown) = Chi : total:m2294_6, partial:m2295_4 +# 2295| v2295_6(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, m2294_8 +# 2295| m2295_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 +# 2295| m2295_8(String) = Chi : total:m2294_8, partial:m2295_7 +# 2293| r2293_72(glval<String>) = VariableAddress[s] : +# 2293| r2293_73(glval<unknown>) = FunctionAddress[~String] : +# 2293| v2293_74(void) = Call[~String] : func:r2293_73, this:r2293_72 +# 2293| m2293_75(unknown) = ^CallSideEffect : ~m2295_5 +# 2293| m2293_76(unknown) = Chi : total:m2295_5, partial:m2293_75 +# 2293| v2293_77(void) = ^IndirectReadSideEffect[-1] : &:r2293_72, m2293_71 +# 2293| m2293_78(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_72 +# 2293| m2293_79(String) = Chi : total:m2293_71, partial:m2293_78 +# 2293| r2293_80(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2293| r2293_81(glval<unknown>) = FunctionAddress[operator++] : +# 2293| r2293_82(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_81, this:r2293_80 +# 2293| m2293_83(unknown) = ^CallSideEffect : ~m2293_76 +# 2293| m2293_84(unknown) = Chi : total:m2293_76, partial:m2293_83 +# 2293| v2293_85(void) = ^IndirectReadSideEffect[-1] : &:r2293_80, m2293_40 +# 2293| m2293_86(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_80 +# 2293| m2293_87(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m2293_40, partial:m2293_86 +# 2293| r2293_88(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_82 #-----| Goto (back edge) -> Block 4 -# 2250| Block 6 -# 2250| r2250_1(glval<String>) = VariableAddress[s] : -# 2250| m2250_2(String) = Uninitialized[s] : &:r2250_1 -# 2250| r2250_3(glval<unknown>) = FunctionAddress[String] : -# 2250| r2250_4(glval<char[6]>) = StringConstant["hello"] : -# 2250| r2250_5(char *) = Convert : r2250_4 -# 2250| v2250_6(void) = Call[String] : func:r2250_3, this:r2250_1, 0:r2250_5 -# 2250| m2250_7(unknown) = ^CallSideEffect : ~m2246_48 -# 2250| m2250_8(unknown) = Chi : total:m2246_48, partial:m2250_7 -# 2250| v2250_9(void) = ^BufferReadSideEffect[0] : &:r2250_5, ~m2240_3 -# 2250| m2250_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_1 -# 2250| m2250_11(String) = Chi : total:m2250_2, partial:m2250_10 -# 2250| r2250_12(glval<String>) = VariableAddress[s2] : -# 2250| m2250_13(String) = Uninitialized[s2] : &:r2250_12 -# 2250| r2250_14(glval<unknown>) = FunctionAddress[String] : -# 2250| r2250_15(glval<char[6]>) = StringConstant["world"] : -# 2250| r2250_16(char *) = Convert : r2250_15 -# 2250| v2250_17(void) = Call[String] : func:r2250_14, this:r2250_12, 0:r2250_16 -# 2250| m2250_18(unknown) = ^CallSideEffect : ~m2250_8 -# 2250| m2250_19(unknown) = Chi : total:m2250_8, partial:m2250_18 -# 2250| v2250_20(void) = ^BufferReadSideEffect[0] : &:r2250_16, ~m2240_3 -# 2250| m2250_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_12 -# 2250| m2250_22(String) = Chi : total:m2250_13, partial:m2250_21 +# 2297| Block 6 +# 2297| r2297_1(glval<String>) = VariableAddress[s] : +# 2297| m2297_2(String) = Uninitialized[s] : &:r2297_1 +# 2297| r2297_3(glval<unknown>) = FunctionAddress[String] : +# 2297| r2297_4(glval<char[6]>) = StringConstant["hello"] : +# 2297| r2297_5(char *) = Convert : r2297_4 +# 2297| v2297_6(void) = Call[String] : func:r2297_3, this:r2297_1, 0:r2297_5 +# 2297| m2297_7(unknown) = ^CallSideEffect : ~m2293_53 +# 2297| m2297_8(unknown) = Chi : total:m2293_53, partial:m2297_7 +# 2297| v2297_9(void) = ^BufferReadSideEffect[0] : &:r2297_5, ~m2287_3 +# 2297| m2297_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 +# 2297| m2297_11(String) = Chi : total:m2297_2, partial:m2297_10 +# 2297| r2297_12(glval<String>) = VariableAddress[s2] : +# 2297| m2297_13(String) = Uninitialized[s2] : &:r2297_12 +# 2297| r2297_14(glval<unknown>) = FunctionAddress[String] : +# 2297| r2297_15(glval<char[6]>) = StringConstant["world"] : +# 2297| r2297_16(char *) = Convert : r2297_15 +# 2297| v2297_17(void) = Call[String] : func:r2297_14, this:r2297_12, 0:r2297_16 +# 2297| m2297_18(unknown) = ^CallSideEffect : ~m2297_8 +# 2297| m2297_19(unknown) = Chi : total:m2297_8, partial:m2297_18 +# 2297| v2297_20(void) = ^BufferReadSideEffect[0] : &:r2297_16, ~m2287_3 +# 2297| m2297_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_12 +# 2297| m2297_22(String) = Chi : total:m2297_13, partial:m2297_21 #-----| Goto -> Block 7 -# 2250| Block 7 -# 2250| m2250_23(String) = Phi : from 6:m2250_11, from 8:m2250_39 -# 2250| m2250_24(unknown) = Phi : from 6:~m2250_19, from 8:~m2250_36 -# 2250| m2250_25(char) = Phi : from 6:m2242_14, from 8:m2250_41 -# 2250| r2250_26(glval<char>) = VariableAddress[c] : -# 2250| r2250_27(char) = Load[c] : &:r2250_26, m2250_25 -# 2250| r2250_28(int) = Convert : r2250_27 -# 2250| r2250_29(int) = Constant[0] : -# 2250| r2250_30(bool) = CompareNE : r2250_28, r2250_29 -# 2250| v2250_31(void) = ConditionalBranch : r2250_30 +# 2297| Block 7 +# 2297| m2297_23(String) = Phi : from 6:m2297_11, from 8:m2297_39 +# 2297| m2297_24(unknown) = Phi : from 6:~m2297_19, from 8:~m2297_36 +# 2297| m2297_25(char) = Phi : from 6:m2289_14, from 8:m2297_41 +# 2297| r2297_26(glval<char>) = VariableAddress[c] : +# 2297| r2297_27(char) = Load[c] : &:r2297_26, m2297_25 +# 2297| r2297_28(int) = Convert : r2297_27 +# 2297| r2297_29(int) = Constant[0] : +# 2297| r2297_30(bool) = CompareNE : r2297_28, r2297_29 +# 2297| v2297_31(void) = ConditionalBranch : r2297_30 #-----| False -> Block 9 #-----| True -> Block 8 -# 2251| Block 8 -# 2251| r2251_1(char) = Constant[0] : -# 2251| r2251_2(glval<char>) = VariableAddress[c] : -# 2251| m2251_3(char) = Store[c] : &:r2251_2, r2251_1 -# 2250| r2250_32(glval<String>) = VariableAddress[s] : -# 2250| r2250_33(glval<unknown>) = FunctionAddress[pop_back] : -# 2250| r2250_34(char) = Call[pop_back] : func:r2250_33, this:r2250_32 -# 2250| m2250_35(unknown) = ^CallSideEffect : ~m2250_24 -# 2250| m2250_36(unknown) = Chi : total:m2250_24, partial:m2250_35 -# 2250| v2250_37(void) = ^IndirectReadSideEffect[-1] : &:r2250_32, m2250_23 -# 2250| m2250_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_32 -# 2250| m2250_39(String) = Chi : total:m2250_23, partial:m2250_38 -# 2250| r2250_40(glval<char>) = VariableAddress[c] : -# 2250| m2250_41(char) = Store[c] : &:r2250_40, r2250_34 +# 2298| Block 8 +# 2298| r2298_1(char) = Constant[0] : +# 2298| r2298_2(glval<char>) = VariableAddress[c] : +# 2298| m2298_3(char) = Store[c] : &:r2298_2, r2298_1 +# 2297| r2297_32(glval<String>) = VariableAddress[s] : +# 2297| r2297_33(glval<unknown>) = FunctionAddress[pop_back] : +# 2297| r2297_34(char) = Call[pop_back] : func:r2297_33, this:r2297_32 +# 2297| m2297_35(unknown) = ^CallSideEffect : ~m2297_24 +# 2297| m2297_36(unknown) = Chi : total:m2297_24, partial:m2297_35 +# 2297| v2297_37(void) = ^IndirectReadSideEffect[-1] : &:r2297_32, m2297_23 +# 2297| m2297_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_32 +# 2297| m2297_39(String) = Chi : total:m2297_23, partial:m2297_38 +# 2297| r2297_40(glval<char>) = VariableAddress[c] : +# 2297| m2297_41(char) = Store[c] : &:r2297_40, r2297_34 #-----| Goto (back edge) -> Block 7 -# 2250| Block 9 -# 2250| r2250_42(glval<String>) = VariableAddress[s2] : -# 2250| r2250_43(glval<unknown>) = FunctionAddress[~String] : -# 2250| v2250_44(void) = Call[~String] : func:r2250_43, this:r2250_42 -# 2250| m2250_45(unknown) = ^CallSideEffect : ~m2250_24 -# 2250| m2250_46(unknown) = Chi : total:m2250_24, partial:m2250_45 -# 2250| v2250_47(void) = ^IndirectReadSideEffect[-1] : &:r2250_42, m2250_22 -# 2250| m2250_48(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_42 -# 2250| m2250_49(String) = Chi : total:m2250_22, partial:m2250_48 -# 2250| r2250_50(glval<String>) = VariableAddress[s] : -# 2250| r2250_51(glval<unknown>) = FunctionAddress[~String] : -# 2250| v2250_52(void) = Call[~String] : func:r2250_51, this:r2250_50 -# 2250| m2250_53(unknown) = ^CallSideEffect : ~m2250_46 -# 2250| m2250_54(unknown) = Chi : total:m2250_46, partial:m2250_53 -# 2250| v2250_55(void) = ^IndirectReadSideEffect[-1] : &:r2250_50, m2250_23 -# 2250| m2250_56(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_50 -# 2250| m2250_57(String) = Chi : total:m2250_23, partial:m2250_56 -# 2253| v2253_1(void) = NoOp : -# 2240| v2240_5(void) = ReturnVoid : -# 2240| v2240_6(void) = AliasedUse : ~m2250_54 -# 2240| v2240_7(void) = ExitFunction : - -# 2255| void IfDestructors2(bool) -# 2255| Block 0 -# 2255| v2255_1(void) = EnterFunction : -# 2255| m2255_2(unknown) = AliasedDefinition : -# 2255| m2255_3(unknown) = InitializeNonLocal : -# 2255| m2255_4(unknown) = Chi : total:m2255_2, partial:m2255_3 -# 2255| r2255_5(glval<bool>) = VariableAddress[b] : -# 2255| m2255_6(bool) = InitializeParameter[b] : &:r2255_5 -# 2256| r2256_1(glval<String>) = VariableAddress[s] : -# 2256| m2256_2(String) = Uninitialized[s] : &:r2256_1 -# 2256| r2256_3(glval<unknown>) = FunctionAddress[String] : -# 2256| r2256_4(glval<char[6]>) = StringConstant["hello"] : -# 2256| r2256_5(char *) = Convert : r2256_4 -# 2256| v2256_6(void) = Call[String] : func:r2256_3, this:r2256_1, 0:r2256_5 -# 2256| m2256_7(unknown) = ^CallSideEffect : ~m2255_4 -# 2256| m2256_8(unknown) = Chi : total:m2255_4, partial:m2256_7 -# 2256| v2256_9(void) = ^BufferReadSideEffect[0] : &:r2256_5, ~m2255_3 -# 2256| m2256_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2256_1 -# 2256| m2256_11(String) = Chi : total:m2256_2, partial:m2256_10 -# 2256| r2256_12(glval<bool>) = VariableAddress[b] : -# 2256| r2256_13(bool) = Load[b] : &:r2256_12, m2255_6 -# 2256| v2256_14(void) = ConditionalBranch : r2256_13 +# 2297| Block 9 +# 2297| r2297_42(glval<String>) = VariableAddress[s2] : +# 2297| r2297_43(glval<unknown>) = FunctionAddress[~String] : +# 2297| v2297_44(void) = Call[~String] : func:r2297_43, this:r2297_42 +# 2297| m2297_45(unknown) = ^CallSideEffect : ~m2297_24 +# 2297| m2297_46(unknown) = Chi : total:m2297_24, partial:m2297_45 +# 2297| v2297_47(void) = ^IndirectReadSideEffect[-1] : &:r2297_42, m2297_22 +# 2297| m2297_48(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_42 +# 2297| m2297_49(String) = Chi : total:m2297_22, partial:m2297_48 +# 2297| r2297_50(glval<String>) = VariableAddress[s] : +# 2297| r2297_51(glval<unknown>) = FunctionAddress[~String] : +# 2297| v2297_52(void) = Call[~String] : func:r2297_51, this:r2297_50 +# 2297| m2297_53(unknown) = ^CallSideEffect : ~m2297_46 +# 2297| m2297_54(unknown) = Chi : total:m2297_46, partial:m2297_53 +# 2297| v2297_55(void) = ^IndirectReadSideEffect[-1] : &:r2297_50, m2297_23 +# 2297| m2297_56(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_50 +# 2297| m2297_57(String) = Chi : total:m2297_23, partial:m2297_56 +# 2300| v2300_1(void) = NoOp : +# 2287| v2287_5(void) = ReturnVoid : +# 2287| v2287_6(void) = AliasedUse : ~m2297_54 +# 2287| v2287_7(void) = ExitFunction : + +# 2302| void IfDestructors2(bool) +# 2302| Block 0 +# 2302| v2302_1(void) = EnterFunction : +# 2302| m2302_2(unknown) = AliasedDefinition : +# 2302| m2302_3(unknown) = InitializeNonLocal : +# 2302| m2302_4(unknown) = Chi : total:m2302_2, partial:m2302_3 +# 2302| r2302_5(glval<bool>) = VariableAddress[b] : +# 2302| m2302_6(bool) = InitializeParameter[b] : &:r2302_5 +# 2303| r2303_1(glval<String>) = VariableAddress[s] : +# 2303| m2303_2(String) = Uninitialized[s] : &:r2303_1 +# 2303| r2303_3(glval<unknown>) = FunctionAddress[String] : +# 2303| r2303_4(glval<char[6]>) = StringConstant["hello"] : +# 2303| r2303_5(char *) = Convert : r2303_4 +# 2303| v2303_6(void) = Call[String] : func:r2303_3, this:r2303_1, 0:r2303_5 +# 2303| m2303_7(unknown) = ^CallSideEffect : ~m2302_4 +# 2303| m2303_8(unknown) = Chi : total:m2302_4, partial:m2303_7 +# 2303| v2303_9(void) = ^BufferReadSideEffect[0] : &:r2303_5, ~m2302_3 +# 2303| m2303_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 +# 2303| m2303_11(String) = Chi : total:m2303_2, partial:m2303_10 +# 2303| r2303_12(glval<bool>) = VariableAddress[b] : +# 2303| r2303_13(bool) = Load[b] : &:r2303_12, m2302_6 +# 2303| v2303_14(void) = ConditionalBranch : r2303_13 #-----| False -> Block 2 #-----| True -> Block 1 -# 2257| Block 1 -# 2257| r2257_1(glval<int>) = VariableAddress[x] : -# 2257| r2257_2(int) = Constant[0] : -# 2257| m2257_3(int) = Store[x] : &:r2257_1, r2257_2 +# 2304| Block 1 +# 2304| r2304_1(glval<int>) = VariableAddress[x] : +# 2304| r2304_2(int) = Constant[0] : +# 2304| m2304_3(int) = Store[x] : &:r2304_1, r2304_2 #-----| Goto -> Block 3 -# 2259| Block 2 -# 2259| r2259_1(glval<int>) = VariableAddress[y] : -# 2259| r2259_2(int) = Constant[0] : -# 2259| m2259_3(int) = Store[y] : &:r2259_1, r2259_2 +# 2306| Block 2 +# 2306| r2306_1(glval<int>) = VariableAddress[y] : +# 2306| r2306_2(int) = Constant[0] : +# 2306| m2306_3(int) = Store[y] : &:r2306_1, r2306_2 #-----| Goto -> Block 3 -# 2260| Block 3 -# 2260| r2260_1(glval<String>) = VariableAddress[s] : -# 2260| r2260_2(glval<unknown>) = FunctionAddress[~String] : -# 2260| v2260_3(void) = Call[~String] : func:r2260_2, this:r2260_1 -# 2260| m2260_4(unknown) = ^CallSideEffect : ~m2256_8 -# 2260| m2260_5(unknown) = Chi : total:m2256_8, partial:m2260_4 -# 2260| v2260_6(void) = ^IndirectReadSideEffect[-1] : &:r2260_1, m2256_11 -# 2260| m2260_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2260_1 -# 2260| m2260_8(String) = Chi : total:m2256_11, partial:m2260_7 -# 2261| v2261_1(void) = NoOp : -# 2255| v2255_7(void) = ReturnVoid : -# 2255| v2255_8(void) = AliasedUse : ~m2260_5 -# 2255| v2255_9(void) = ExitFunction : - -# 2270| void IfDestructors3(bool) -# 2270| Block 0 -# 2270| v2270_1(void) = EnterFunction : -# 2270| m2270_2(unknown) = AliasedDefinition : -# 2270| m2270_3(unknown) = InitializeNonLocal : -# 2270| m2270_4(unknown) = Chi : total:m2270_2, partial:m2270_3 -# 2270| r2270_5(glval<bool>) = VariableAddress[b] : -# 2270| m2270_6(bool) = InitializeParameter[b] : &:r2270_5 -# 2271| r2271_1(glval<Bool>) = VariableAddress[B] : -# 2271| m2271_2(Bool) = Uninitialized[B] : &:r2271_1 -# 2271| r2271_3(glval<unknown>) = FunctionAddress[Bool] : -# 2271| r2271_4(glval<bool>) = VariableAddress[b] : -# 2271| r2271_5(bool) = Load[b] : &:r2271_4, m2270_6 -# 2271| v2271_6(void) = Call[Bool] : func:r2271_3, this:r2271_1, 0:r2271_5 -# 2271| m2271_7(unknown) = ^CallSideEffect : ~m2270_4 -# 2271| m2271_8(unknown) = Chi : total:m2270_4, partial:m2271_7 -# 2271| m2271_9(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2271_1 -# 2271| m2271_10(Bool) = Chi : total:m2271_2, partial:m2271_9 -# 2271| r2271_11(glval<Bool>) = VariableAddress[B] : -# 2271| r2271_12(glval<unknown>) = FunctionAddress[operator bool] : -# 2271| r2271_13(bool) = Call[operator bool] : func:r2271_12, this:r2271_11 -# 2271| m2271_14(unknown) = ^CallSideEffect : ~m2271_8 -# 2271| m2271_15(unknown) = Chi : total:m2271_8, partial:m2271_14 -# 2271| v2271_16(void) = ^IndirectReadSideEffect[-1] : &:r2271_11, m2271_10 -# 2271| m2271_17(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2271_11 -# 2271| m2271_18(Bool) = Chi : total:m2271_10, partial:m2271_17 -# 2271| r2271_19(bool) = CopyValue : r2271_13 -# 2271| v2271_20(void) = ConditionalBranch : r2271_19 +# 2307| Block 3 +# 2307| r2307_1(glval<String>) = VariableAddress[s] : +# 2307| r2307_2(glval<unknown>) = FunctionAddress[~String] : +# 2307| v2307_3(void) = Call[~String] : func:r2307_2, this:r2307_1 +# 2307| m2307_4(unknown) = ^CallSideEffect : ~m2303_8 +# 2307| m2307_5(unknown) = Chi : total:m2303_8, partial:m2307_4 +# 2307| v2307_6(void) = ^IndirectReadSideEffect[-1] : &:r2307_1, m2303_11 +# 2307| m2307_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 +# 2307| m2307_8(String) = Chi : total:m2303_11, partial:m2307_7 +# 2308| v2308_1(void) = NoOp : +# 2302| v2302_7(void) = ReturnVoid : +# 2302| v2302_8(void) = AliasedUse : ~m2307_5 +# 2302| v2302_9(void) = ExitFunction : + +# 2317| void IfDestructors3(bool) +# 2317| Block 0 +# 2317| v2317_1(void) = EnterFunction : +# 2317| m2317_2(unknown) = AliasedDefinition : +# 2317| m2317_3(unknown) = InitializeNonLocal : +# 2317| m2317_4(unknown) = Chi : total:m2317_2, partial:m2317_3 +# 2317| r2317_5(glval<bool>) = VariableAddress[b] : +# 2317| m2317_6(bool) = InitializeParameter[b] : &:r2317_5 +# 2318| r2318_1(glval<Bool>) = VariableAddress[B] : +# 2318| m2318_2(Bool) = Uninitialized[B] : &:r2318_1 +# 2318| r2318_3(glval<unknown>) = FunctionAddress[Bool] : +# 2318| r2318_4(glval<bool>) = VariableAddress[b] : +# 2318| r2318_5(bool) = Load[b] : &:r2318_4, m2317_6 +# 2318| v2318_6(void) = Call[Bool] : func:r2318_3, this:r2318_1, 0:r2318_5 +# 2318| m2318_7(unknown) = ^CallSideEffect : ~m2317_4 +# 2318| m2318_8(unknown) = Chi : total:m2317_4, partial:m2318_7 +# 2318| m2318_9(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 +# 2318| m2318_10(Bool) = Chi : total:m2318_2, partial:m2318_9 +# 2318| r2318_11(glval<Bool>) = VariableAddress[B] : +# 2318| r2318_12(glval<unknown>) = FunctionAddress[operator bool] : +# 2318| r2318_13(bool) = Call[operator bool] : func:r2318_12, this:r2318_11 +# 2318| m2318_14(unknown) = ^CallSideEffect : ~m2318_8 +# 2318| m2318_15(unknown) = Chi : total:m2318_8, partial:m2318_14 +# 2318| v2318_16(void) = ^IndirectReadSideEffect[-1] : &:r2318_11, m2318_10 +# 2318| m2318_17(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_11 +# 2318| m2318_18(Bool) = Chi : total:m2318_10, partial:m2318_17 +# 2318| r2318_19(bool) = CopyValue : r2318_13 +# 2318| v2318_20(void) = ConditionalBranch : r2318_19 #-----| False -> Block 2 #-----| True -> Block 1 -# 2272| Block 1 -# 2272| r2272_1(glval<String>) = VariableAddress[s1] : -# 2272| m2272_2(String) = Uninitialized[s1] : &:r2272_1 -# 2272| r2272_3(glval<unknown>) = FunctionAddress[String] : -# 2272| v2272_4(void) = Call[String] : func:r2272_3, this:r2272_1 -# 2272| m2272_5(unknown) = ^CallSideEffect : ~m2271_15 -# 2272| m2272_6(unknown) = Chi : total:m2271_15, partial:m2272_5 -# 2272| m2272_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2272_1 -# 2272| m2272_8(String) = Chi : total:m2272_2, partial:m2272_7 -# 2273| r2273_1(glval<String>) = VariableAddress[s1] : -# 2273| r2273_2(glval<unknown>) = FunctionAddress[~String] : -# 2273| v2273_3(void) = Call[~String] : func:r2273_2, this:r2273_1 -# 2273| m2273_4(unknown) = ^CallSideEffect : ~m2272_6 -# 2273| m2273_5(unknown) = Chi : total:m2272_6, partial:m2273_4 -# 2273| v2273_6(void) = ^IndirectReadSideEffect[-1] : &:r2273_1, m2272_8 -# 2273| m2273_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2273_1 -# 2273| m2273_8(String) = Chi : total:m2272_8, partial:m2273_7 +# 2319| Block 1 +# 2319| r2319_1(glval<String>) = VariableAddress[s1] : +# 2319| m2319_2(String) = Uninitialized[s1] : &:r2319_1 +# 2319| r2319_3(glval<unknown>) = FunctionAddress[String] : +# 2319| v2319_4(void) = Call[String] : func:r2319_3, this:r2319_1 +# 2319| m2319_5(unknown) = ^CallSideEffect : ~m2318_15 +# 2319| m2319_6(unknown) = Chi : total:m2318_15, partial:m2319_5 +# 2319| m2319_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2319_1 +# 2319| m2319_8(String) = Chi : total:m2319_2, partial:m2319_7 +# 2320| r2320_1(glval<String>) = VariableAddress[s1] : +# 2320| r2320_2(glval<unknown>) = FunctionAddress[~String] : +# 2320| v2320_3(void) = Call[~String] : func:r2320_2, this:r2320_1 +# 2320| m2320_4(unknown) = ^CallSideEffect : ~m2319_6 +# 2320| m2320_5(unknown) = Chi : total:m2319_6, partial:m2320_4 +# 2320| v2320_6(void) = ^IndirectReadSideEffect[-1] : &:r2320_1, m2319_8 +# 2320| m2320_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 +# 2320| m2320_8(String) = Chi : total:m2319_8, partial:m2320_7 #-----| Goto -> Block 3 -# 2274| Block 2 -# 2274| r2274_1(glval<String>) = VariableAddress[s2] : -# 2274| m2274_2(String) = Uninitialized[s2] : &:r2274_1 -# 2274| r2274_3(glval<unknown>) = FunctionAddress[String] : -# 2274| v2274_4(void) = Call[String] : func:r2274_3, this:r2274_1 -# 2274| m2274_5(unknown) = ^CallSideEffect : ~m2271_15 -# 2274| m2274_6(unknown) = Chi : total:m2271_15, partial:m2274_5 -# 2274| m2274_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2274_1 -# 2274| m2274_8(String) = Chi : total:m2274_2, partial:m2274_7 -# 2275| r2275_1(glval<String>) = VariableAddress[s2] : -# 2275| r2275_2(glval<unknown>) = FunctionAddress[~String] : -# 2275| v2275_3(void) = Call[~String] : func:r2275_2, this:r2275_1 -# 2275| m2275_4(unknown) = ^CallSideEffect : ~m2274_6 -# 2275| m2275_5(unknown) = Chi : total:m2274_6, partial:m2275_4 -# 2275| v2275_6(void) = ^IndirectReadSideEffect[-1] : &:r2275_1, m2274_8 -# 2275| m2275_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2275_1 -# 2275| m2275_8(String) = Chi : total:m2274_8, partial:m2275_7 +# 2321| Block 2 +# 2321| r2321_1(glval<String>) = VariableAddress[s2] : +# 2321| m2321_2(String) = Uninitialized[s2] : &:r2321_1 +# 2321| r2321_3(glval<unknown>) = FunctionAddress[String] : +# 2321| v2321_4(void) = Call[String] : func:r2321_3, this:r2321_1 +# 2321| m2321_5(unknown) = ^CallSideEffect : ~m2318_15 +# 2321| m2321_6(unknown) = Chi : total:m2318_15, partial:m2321_5 +# 2321| m2321_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 +# 2321| m2321_8(String) = Chi : total:m2321_2, partial:m2321_7 +# 2322| r2322_1(glval<String>) = VariableAddress[s2] : +# 2322| r2322_2(glval<unknown>) = FunctionAddress[~String] : +# 2322| v2322_3(void) = Call[~String] : func:r2322_2, this:r2322_1 +# 2322| m2322_4(unknown) = ^CallSideEffect : ~m2321_6 +# 2322| m2322_5(unknown) = Chi : total:m2321_6, partial:m2322_4 +# 2322| v2322_6(void) = ^IndirectReadSideEffect[-1] : &:r2322_1, m2321_8 +# 2322| m2322_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2322_1 +# 2322| m2322_8(String) = Chi : total:m2321_8, partial:m2322_7 #-----| Goto -> Block 3 -# 2275| Block 3 -# 2275| m2275_9(unknown) = Phi : from 1:~m2273_5, from 2:~m2275_5 -# 2275| r2275_10(glval<Bool>) = VariableAddress[B] : -# 2275| r2275_11(glval<unknown>) = FunctionAddress[~Bool] : -# 2275| v2275_12(void) = Call[~Bool] : func:r2275_11, this:r2275_10 -# 2275| m2275_13(unknown) = ^CallSideEffect : ~m2275_9 -# 2275| m2275_14(unknown) = Chi : total:m2275_9, partial:m2275_13 -# 2275| v2275_15(void) = ^IndirectReadSideEffect[-1] : &:r2275_10, m2271_18 -# 2275| m2275_16(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2275_10 -# 2275| m2275_17(Bool) = Chi : total:m2271_18, partial:m2275_16 -# 2276| v2276_1(void) = NoOp : -# 2270| v2270_7(void) = ReturnVoid : -# 2270| v2270_8(void) = AliasedUse : ~m2275_14 -# 2270| v2270_9(void) = ExitFunction : - -# 2278| void WhileLoopDestructors(bool) -# 2278| Block 0 -# 2278| v2278_1(void) = EnterFunction : -# 2278| m2278_2(unknown) = AliasedDefinition : -# 2278| m2278_3(unknown) = InitializeNonLocal : -# 2278| m2278_4(unknown) = Chi : total:m2278_2, partial:m2278_3 -# 2278| r2278_5(glval<bool>) = VariableAddress[b] : -# 2278| m2278_6(bool) = InitializeParameter[b] : &:r2278_5 -# 2280| r2280_1(glval<String>) = VariableAddress[s] : -# 2280| m2280_2(String) = Uninitialized[s] : &:r2280_1 -# 2280| r2280_3(glval<unknown>) = FunctionAddress[String] : -# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 -# 2280| m2280_5(unknown) = ^CallSideEffect : ~m2278_4 -# 2280| m2280_6(unknown) = Chi : total:m2278_4, partial:m2280_5 -# 2280| m2280_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 -# 2280| m2280_8(String) = Chi : total:m2280_2, partial:m2280_7 +# 2322| Block 3 +# 2322| m2322_9(unknown) = Phi : from 1:~m2320_5, from 2:~m2322_5 +# 2322| r2322_10(glval<Bool>) = VariableAddress[B] : +# 2322| r2322_11(glval<unknown>) = FunctionAddress[~Bool] : +# 2322| v2322_12(void) = Call[~Bool] : func:r2322_11, this:r2322_10 +# 2322| m2322_13(unknown) = ^CallSideEffect : ~m2322_9 +# 2322| m2322_14(unknown) = Chi : total:m2322_9, partial:m2322_13 +# 2322| v2322_15(void) = ^IndirectReadSideEffect[-1] : &:r2322_10, m2318_18 +# 2322| m2322_16(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2322_10 +# 2322| m2322_17(Bool) = Chi : total:m2318_18, partial:m2322_16 +# 2323| v2323_1(void) = NoOp : +# 2317| v2317_7(void) = ReturnVoid : +# 2317| v2317_8(void) = AliasedUse : ~m2322_14 +# 2317| v2317_9(void) = ExitFunction : + +# 2325| void WhileLoopDestructors(bool) +# 2325| Block 0 +# 2325| v2325_1(void) = EnterFunction : +# 2325| m2325_2(unknown) = AliasedDefinition : +# 2325| m2325_3(unknown) = InitializeNonLocal : +# 2325| m2325_4(unknown) = Chi : total:m2325_2, partial:m2325_3 +# 2325| r2325_5(glval<bool>) = VariableAddress[b] : +# 2325| m2325_6(bool) = InitializeParameter[b] : &:r2325_5 +# 2327| r2327_1(glval<String>) = VariableAddress[s] : +# 2327| m2327_2(String) = Uninitialized[s] : &:r2327_1 +# 2327| r2327_3(glval<unknown>) = FunctionAddress[String] : +# 2327| v2327_4(void) = Call[String] : func:r2327_3, this:r2327_1 +# 2327| m2327_5(unknown) = ^CallSideEffect : ~m2325_4 +# 2327| m2327_6(unknown) = Chi : total:m2325_4, partial:m2327_5 +# 2327| m2327_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2327_1 +# 2327| m2327_8(String) = Chi : total:m2327_2, partial:m2327_7 #-----| Goto -> Block 1 -# 2281| Block 1 -# 2281| m2281_1(bool) = Phi : from 0:m2278_6, from 2:m2282_3 -# 2281| r2281_2(glval<bool>) = VariableAddress[b] : -# 2281| r2281_3(bool) = Load[b] : &:r2281_2, m2281_1 -# 2281| v2281_4(void) = ConditionalBranch : r2281_3 +# 2328| Block 1 +# 2328| m2328_1(bool) = Phi : from 0:m2325_6, from 2:m2329_3 +# 2328| r2328_2(glval<bool>) = VariableAddress[b] : +# 2328| r2328_3(bool) = Load[b] : &:r2328_2, m2328_1 +# 2328| v2328_4(void) = ConditionalBranch : r2328_3 #-----| False -> Block 3 #-----| True -> Block 2 -# 2282| Block 2 -# 2282| r2282_1(bool) = Constant[0] : -# 2282| r2282_2(glval<bool>) = VariableAddress[b] : -# 2282| m2282_3(bool) = Store[b] : &:r2282_2, r2282_1 +# 2329| Block 2 +# 2329| r2329_1(bool) = Constant[0] : +# 2329| r2329_2(glval<bool>) = VariableAddress[b] : +# 2329| m2329_3(bool) = Store[b] : &:r2329_2, r2329_1 #-----| Goto (back edge) -> Block 1 -# 2284| Block 3 -# 2284| r2284_1(glval<String>) = VariableAddress[s] : -# 2284| r2284_2(glval<unknown>) = FunctionAddress[~String] : -# 2284| v2284_3(void) = Call[~String] : func:r2284_2, this:r2284_1 -# 2284| m2284_4(unknown) = ^CallSideEffect : ~m2280_6 -# 2284| m2284_5(unknown) = Chi : total:m2280_6, partial:m2284_4 -# 2284| v2284_6(void) = ^IndirectReadSideEffect[-1] : &:r2284_1, m2280_8 -# 2284| m2284_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_1 -# 2284| m2284_8(String) = Chi : total:m2280_8, partial:m2284_7 +# 2331| Block 3 +# 2331| r2331_1(glval<String>) = VariableAddress[s] : +# 2331| r2331_2(glval<unknown>) = FunctionAddress[~String] : +# 2331| v2331_3(void) = Call[~String] : func:r2331_2, this:r2331_1 +# 2331| m2331_4(unknown) = ^CallSideEffect : ~m2327_6 +# 2331| m2331_5(unknown) = Chi : total:m2327_6, partial:m2331_4 +# 2331| v2331_6(void) = ^IndirectReadSideEffect[-1] : &:r2331_1, m2327_8 +# 2331| m2331_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2331_1 +# 2331| m2331_8(String) = Chi : total:m2327_8, partial:m2331_7 #-----| Goto -> Block 4 -# 2287| Block 4 -# 2287| m2287_1(unknown) = Phi : from 3:~m2284_5, from 5:~m2289_5 -# 2287| m2287_2(bool) = Phi : from 3:m2281_1, from 5:m2288_3 -# 2287| r2287_3(glval<Bool>) = VariableAddress[B] : -# 2287| m2287_4(Bool) = Uninitialized[B] : &:r2287_3 -# 2287| r2287_5(glval<unknown>) = FunctionAddress[Bool] : -# 2287| r2287_6(glval<bool>) = VariableAddress[b] : -# 2287| r2287_7(bool) = Load[b] : &:r2287_6, m2287_2 -# 2287| v2287_8(void) = Call[Bool] : func:r2287_5, this:r2287_3, 0:r2287_7 -# 2287| m2287_9(unknown) = ^CallSideEffect : ~m2287_1 -# 2287| m2287_10(unknown) = Chi : total:m2287_1, partial:m2287_9 -# 2287| m2287_11(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2287_3 -# 2287| m2287_12(Bool) = Chi : total:m2287_4, partial:m2287_11 -# 2287| r2287_13(glval<Bool>) = VariableAddress[B] : -# 2287| r2287_14(glval<unknown>) = FunctionAddress[operator bool] : -# 2287| r2287_15(bool) = Call[operator bool] : func:r2287_14, this:r2287_13 -# 2287| m2287_16(unknown) = ^CallSideEffect : ~m2287_10 -# 2287| m2287_17(unknown) = Chi : total:m2287_10, partial:m2287_16 -# 2287| v2287_18(void) = ^IndirectReadSideEffect[-1] : &:r2287_13, m2287_12 -# 2287| m2287_19(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2287_13 -# 2287| m2287_20(Bool) = Chi : total:m2287_12, partial:m2287_19 -# 2287| r2287_21(bool) = CopyValue : r2287_15 -# 2287| v2287_22(void) = ConditionalBranch : r2287_21 +# 2334| Block 4 +# 2334| m2334_1(unknown) = Phi : from 3:~m2331_5, from 5:~m2336_5 +# 2334| m2334_2(bool) = Phi : from 3:m2328_1, from 5:m2335_3 +# 2334| r2334_3(glval<Bool>) = VariableAddress[B] : +# 2334| m2334_4(Bool) = Uninitialized[B] : &:r2334_3 +# 2334| r2334_5(glval<unknown>) = FunctionAddress[Bool] : +# 2334| r2334_6(glval<bool>) = VariableAddress[b] : +# 2334| r2334_7(bool) = Load[b] : &:r2334_6, m2334_2 +# 2334| v2334_8(void) = Call[Bool] : func:r2334_5, this:r2334_3, 0:r2334_7 +# 2334| m2334_9(unknown) = ^CallSideEffect : ~m2334_1 +# 2334| m2334_10(unknown) = Chi : total:m2334_1, partial:m2334_9 +# 2334| m2334_11(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_3 +# 2334| m2334_12(Bool) = Chi : total:m2334_4, partial:m2334_11 +# 2334| r2334_13(glval<Bool>) = VariableAddress[B] : +# 2334| r2334_14(glval<unknown>) = FunctionAddress[operator bool] : +# 2334| r2334_15(bool) = Call[operator bool] : func:r2334_14, this:r2334_13 +# 2334| m2334_16(unknown) = ^CallSideEffect : ~m2334_10 +# 2334| m2334_17(unknown) = Chi : total:m2334_10, partial:m2334_16 +# 2334| v2334_18(void) = ^IndirectReadSideEffect[-1] : &:r2334_13, m2334_12 +# 2334| m2334_19(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_13 +# 2334| m2334_20(Bool) = Chi : total:m2334_12, partial:m2334_19 +# 2334| r2334_21(bool) = CopyValue : r2334_15 +# 2334| v2334_22(void) = ConditionalBranch : r2334_21 #-----| False -> Block 6 #-----| True -> Block 5 -# 2288| Block 5 -# 2288| r2288_1(bool) = Constant[0] : -# 2288| r2288_2(glval<bool>) = VariableAddress[b] : -# 2288| m2288_3(bool) = Store[b] : &:r2288_2, r2288_1 -# 2289| r2289_1(glval<Bool>) = VariableAddress[B] : -# 2289| r2289_2(glval<unknown>) = FunctionAddress[~Bool] : -# 2289| v2289_3(void) = Call[~Bool] : func:r2289_2, this:r2289_1 -# 2289| m2289_4(unknown) = ^CallSideEffect : ~m2287_17 -# 2289| m2289_5(unknown) = Chi : total:m2287_17, partial:m2289_4 -# 2289| v2289_6(void) = ^IndirectReadSideEffect[-1] : &:r2289_1, m2287_20 -# 2289| m2289_7(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2289_1 -# 2289| m2289_8(Bool) = Chi : total:m2287_20, partial:m2289_7 +# 2335| Block 5 +# 2335| r2335_1(bool) = Constant[0] : +# 2335| r2335_2(glval<bool>) = VariableAddress[b] : +# 2335| m2335_3(bool) = Store[b] : &:r2335_2, r2335_1 +# 2336| r2336_1(glval<Bool>) = VariableAddress[B] : +# 2336| r2336_2(glval<unknown>) = FunctionAddress[~Bool] : +# 2336| v2336_3(void) = Call[~Bool] : func:r2336_2, this:r2336_1 +# 2336| m2336_4(unknown) = ^CallSideEffect : ~m2334_17 +# 2336| m2336_5(unknown) = Chi : total:m2334_17, partial:m2336_4 +# 2336| v2336_6(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, m2334_20 +# 2336| m2336_7(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 +# 2336| m2336_8(Bool) = Chi : total:m2334_20, partial:m2336_7 #-----| Goto (back edge) -> Block 4 -# 2289| Block 6 -# 2289| r2289_9(glval<Bool>) = VariableAddress[B] : -# 2289| r2289_10(glval<unknown>) = FunctionAddress[~Bool] : -# 2289| v2289_11(void) = Call[~Bool] : func:r2289_10, this:r2289_9 -# 2289| m2289_12(unknown) = ^CallSideEffect : ~m2287_17 -# 2289| m2289_13(unknown) = Chi : total:m2287_17, partial:m2289_12 -# 2289| v2289_14(void) = ^IndirectReadSideEffect[-1] : &:r2289_9, m2287_20 -# 2289| m2289_15(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2289_9 -# 2289| m2289_16(Bool) = Chi : total:m2287_20, partial:m2289_15 -# 2291| v2291_1(void) = NoOp : -# 2278| v2278_7(void) = ReturnVoid : -# 2278| v2278_8(void) = AliasedUse : ~m2289_13 -# 2278| v2278_9(void) = ExitFunction : - -# 2293| void VoidFunc() -# 2293| Block 0 -# 2293| v2293_1(void) = EnterFunction : -# 2293| m2293_2(unknown) = AliasedDefinition : -# 2293| m2293_3(unknown) = InitializeNonLocal : -# 2293| m2293_4(unknown) = Chi : total:m2293_2, partial:m2293_3 -# 2293| v2293_5(void) = NoOp : -# 2293| v2293_6(void) = ReturnVoid : -# 2293| v2293_7(void) = AliasedUse : m2293_3 -# 2293| v2293_8(void) = ExitFunction : - -# 2295| void IfReturnDestructors(bool) -# 2295| Block 0 -# 2295| v2295_1(void) = EnterFunction : -# 2295| m2295_2(unknown) = AliasedDefinition : -# 2295| m2295_3(unknown) = InitializeNonLocal : -# 2295| m2295_4(unknown) = Chi : total:m2295_2, partial:m2295_3 -# 2295| r2295_5(glval<bool>) = VariableAddress[b] : -# 2295| m2295_6(bool) = InitializeParameter[b] : &:r2295_5 -# 2296| r2296_1(glval<String>) = VariableAddress[s] : -# 2296| m2296_2(String) = Uninitialized[s] : &:r2296_1 -# 2296| r2296_3(glval<unknown>) = FunctionAddress[String] : -# 2296| v2296_4(void) = Call[String] : func:r2296_3, this:r2296_1 -# 2296| m2296_5(unknown) = ^CallSideEffect : ~m2295_4 -# 2296| m2296_6(unknown) = Chi : total:m2295_4, partial:m2296_5 -# 2296| m2296_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 -# 2296| m2296_8(String) = Chi : total:m2296_2, partial:m2296_7 -# 2297| r2297_1(glval<bool>) = VariableAddress[b] : -# 2297| r2297_2(bool) = Load[b] : &:r2297_1, m2295_6 -# 2297| v2297_3(void) = ConditionalBranch : r2297_2 +# 2336| Block 6 +# 2336| r2336_9(glval<Bool>) = VariableAddress[B] : +# 2336| r2336_10(glval<unknown>) = FunctionAddress[~Bool] : +# 2336| v2336_11(void) = Call[~Bool] : func:r2336_10, this:r2336_9 +# 2336| m2336_12(unknown) = ^CallSideEffect : ~m2334_17 +# 2336| m2336_13(unknown) = Chi : total:m2334_17, partial:m2336_12 +# 2336| v2336_14(void) = ^IndirectReadSideEffect[-1] : &:r2336_9, m2334_20 +# 2336| m2336_15(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_9 +# 2336| m2336_16(Bool) = Chi : total:m2334_20, partial:m2336_15 +# 2338| v2338_1(void) = NoOp : +# 2325| v2325_7(void) = ReturnVoid : +# 2325| v2325_8(void) = AliasedUse : ~m2336_13 +# 2325| v2325_9(void) = ExitFunction : + +# 2340| void VoidFunc() +# 2340| Block 0 +# 2340| v2340_1(void) = EnterFunction : +# 2340| m2340_2(unknown) = AliasedDefinition : +# 2340| m2340_3(unknown) = InitializeNonLocal : +# 2340| m2340_4(unknown) = Chi : total:m2340_2, partial:m2340_3 +# 2340| v2340_5(void) = NoOp : +# 2340| v2340_6(void) = ReturnVoid : +# 2340| v2340_7(void) = AliasedUse : m2340_3 +# 2340| v2340_8(void) = ExitFunction : + +# 2342| void IfReturnDestructors(bool) +# 2342| Block 0 +# 2342| v2342_1(void) = EnterFunction : +# 2342| m2342_2(unknown) = AliasedDefinition : +# 2342| m2342_3(unknown) = InitializeNonLocal : +# 2342| m2342_4(unknown) = Chi : total:m2342_2, partial:m2342_3 +# 2342| r2342_5(glval<bool>) = VariableAddress[b] : +# 2342| m2342_6(bool) = InitializeParameter[b] : &:r2342_5 +# 2343| r2343_1(glval<String>) = VariableAddress[s] : +# 2343| m2343_2(String) = Uninitialized[s] : &:r2343_1 +# 2343| r2343_3(glval<unknown>) = FunctionAddress[String] : +# 2343| v2343_4(void) = Call[String] : func:r2343_3, this:r2343_1 +# 2343| m2343_5(unknown) = ^CallSideEffect : ~m2342_4 +# 2343| m2343_6(unknown) = Chi : total:m2342_4, partial:m2343_5 +# 2343| m2343_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2343_1 +# 2343| m2343_8(String) = Chi : total:m2343_2, partial:m2343_7 +# 2344| r2344_1(glval<bool>) = VariableAddress[b] : +# 2344| r2344_2(bool) = Load[b] : &:r2344_1, m2342_6 +# 2344| v2344_3(void) = ConditionalBranch : r2344_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2295| Block 1 -# 2295| m2295_7(unknown) = Phi : from 2:~m2304_5, from 4:~m2304_13, from 5:~m2304_22 -# 2295| v2295_8(void) = ReturnVoid : -# 2295| v2295_9(void) = AliasedUse : ~m2295_7 -# 2295| v2295_10(void) = ExitFunction : - -# 2298| Block 2 -# 2298| v2298_1(void) = NoOp : -# 2304| r2304_1(glval<String>) = VariableAddress[s] : -# 2304| r2304_2(glval<unknown>) = FunctionAddress[~String] : -# 2304| v2304_3(void) = Call[~String] : func:r2304_2, this:r2304_1 -# 2304| m2304_4(unknown) = ^CallSideEffect : ~m2296_6 -# 2304| m2304_5(unknown) = Chi : total:m2296_6, partial:m2304_4 -# 2304| v2304_6(void) = ^IndirectReadSideEffect[-1] : &:r2304_1, m2296_8 -# 2304| m2304_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_1 -# 2304| m2304_8(String) = Chi : total:m2296_8, partial:m2304_7 +# 2342| Block 1 +# 2342| m2342_7(unknown) = Phi : from 2:~m2351_5, from 4:~m2351_13, from 5:~m2351_22 +# 2342| v2342_8(void) = ReturnVoid : +# 2342| v2342_9(void) = AliasedUse : ~m2342_7 +# 2342| v2342_10(void) = ExitFunction : + +# 2345| Block 2 +# 2345| v2345_1(void) = NoOp : +# 2351| r2351_1(glval<String>) = VariableAddress[s] : +# 2351| r2351_2(glval<unknown>) = FunctionAddress[~String] : +# 2351| v2351_3(void) = Call[~String] : func:r2351_2, this:r2351_1 +# 2351| m2351_4(unknown) = ^CallSideEffect : ~m2343_6 +# 2351| m2351_5(unknown) = Chi : total:m2343_6, partial:m2351_4 +# 2351| v2351_6(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, m2343_8 +# 2351| m2351_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 +# 2351| m2351_8(String) = Chi : total:m2343_8, partial:m2351_7 #-----| Goto -> Block 1 -# 2300| Block 3 -# 2300| r2300_1(glval<bool>) = VariableAddress[b] : -# 2300| r2300_2(bool) = Load[b] : &:r2300_1, m2295_6 -# 2300| v2300_3(void) = ConditionalBranch : r2300_2 +# 2347| Block 3 +# 2347| r2347_1(glval<bool>) = VariableAddress[b] : +# 2347| r2347_2(bool) = Load[b] : &:r2347_1, m2342_6 +# 2347| v2347_3(void) = ConditionalBranch : r2347_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2301| Block 4 -# 2301| r2301_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2301| v2301_2(void) = Call[VoidFunc] : func:r2301_1 -# 2301| m2301_3(unknown) = ^CallSideEffect : ~m2296_6 -# 2301| m2301_4(unknown) = Chi : total:m2296_6, partial:m2301_3 -# 2301| v2301_5(void) = NoOp : -# 2304| r2304_9(glval<String>) = VariableAddress[s] : -# 2304| r2304_10(glval<unknown>) = FunctionAddress[~String] : -# 2304| v2304_11(void) = Call[~String] : func:r2304_10, this:r2304_9 -# 2304| m2304_12(unknown) = ^CallSideEffect : ~m2301_4 -# 2304| m2304_13(unknown) = Chi : total:m2301_4, partial:m2304_12 -# 2304| v2304_14(void) = ^IndirectReadSideEffect[-1] : &:r2304_9, m2296_8 -# 2304| m2304_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_9 -# 2304| m2304_16(String) = Chi : total:m2296_8, partial:m2304_15 +# 2348| Block 4 +# 2348| r2348_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2348| v2348_2(void) = Call[VoidFunc] : func:r2348_1 +# 2348| m2348_3(unknown) = ^CallSideEffect : ~m2343_6 +# 2348| m2348_4(unknown) = Chi : total:m2343_6, partial:m2348_3 +# 2348| v2348_5(void) = NoOp : +# 2351| r2351_9(glval<String>) = VariableAddress[s] : +# 2351| r2351_10(glval<unknown>) = FunctionAddress[~String] : +# 2351| v2351_11(void) = Call[~String] : func:r2351_10, this:r2351_9 +# 2351| m2351_12(unknown) = ^CallSideEffect : ~m2348_4 +# 2351| m2351_13(unknown) = Chi : total:m2348_4, partial:m2351_12 +# 2351| v2351_14(void) = ^IndirectReadSideEffect[-1] : &:r2351_9, m2343_8 +# 2351| m2351_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_9 +# 2351| m2351_16(String) = Chi : total:m2343_8, partial:m2351_15 #-----| Goto -> Block 1 -# 2303| Block 5 -# 2303| r2303_1(glval<String>) = VariableAddress[s] : -# 2304| v2304_17(void) = NoOp : -# 2304| r2304_18(glval<String>) = VariableAddress[s] : -# 2304| r2304_19(glval<unknown>) = FunctionAddress[~String] : -# 2304| v2304_20(void) = Call[~String] : func:r2304_19, this:r2304_18 -# 2304| m2304_21(unknown) = ^CallSideEffect : ~m2296_6 -# 2304| m2304_22(unknown) = Chi : total:m2296_6, partial:m2304_21 -# 2304| v2304_23(void) = ^IndirectReadSideEffect[-1] : &:r2304_18, m2296_8 -# 2304| m2304_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_18 -# 2304| m2304_25(String) = Chi : total:m2296_8, partial:m2304_24 +# 2350| Block 5 +# 2350| r2350_1(glval<String>) = VariableAddress[s] : +# 2351| v2351_17(void) = NoOp : +# 2351| r2351_18(glval<String>) = VariableAddress[s] : +# 2351| r2351_19(glval<unknown>) = FunctionAddress[~String] : +# 2351| v2351_20(void) = Call[~String] : func:r2351_19, this:r2351_18 +# 2351| m2351_21(unknown) = ^CallSideEffect : ~m2343_6 +# 2351| m2351_22(unknown) = Chi : total:m2343_6, partial:m2351_21 +# 2351| v2351_23(void) = ^IndirectReadSideEffect[-1] : &:r2351_18, m2343_8 +# 2351| m2351_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_18 +# 2351| m2351_25(String) = Chi : total:m2343_8, partial:m2351_24 #-----| Goto -> Block 1 -# 2306| int IfReturnDestructors3(bool) -# 2306| Block 0 -# 2306| v2306_1(void) = EnterFunction : -# 2306| m2306_2(unknown) = AliasedDefinition : -# 2306| m2306_3(unknown) = InitializeNonLocal : -# 2306| m2306_4(unknown) = Chi : total:m2306_2, partial:m2306_3 -# 2306| r2306_5(glval<bool>) = VariableAddress[b] : -# 2306| m2306_6(bool) = InitializeParameter[b] : &:r2306_5 -# 2307| r2307_1(glval<String>) = VariableAddress[s] : -# 2307| m2307_2(String) = Uninitialized[s] : &:r2307_1 -# 2307| r2307_3(glval<unknown>) = FunctionAddress[String] : -# 2307| v2307_4(void) = Call[String] : func:r2307_3, this:r2307_1 -# 2307| m2307_5(unknown) = ^CallSideEffect : ~m2306_4 -# 2307| m2307_6(unknown) = Chi : total:m2306_4, partial:m2307_5 -# 2307| m2307_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 -# 2307| m2307_8(String) = Chi : total:m2307_2, partial:m2307_7 -# 2308| r2308_1(glval<bool>) = VariableAddress[b] : -# 2308| r2308_2(bool) = Load[b] : &:r2308_1, m2306_6 -# 2308| v2308_3(void) = ConditionalBranch : r2308_2 +# 2353| int IfReturnDestructors3(bool) +# 2353| Block 0 +# 2353| v2353_1(void) = EnterFunction : +# 2353| m2353_2(unknown) = AliasedDefinition : +# 2353| m2353_3(unknown) = InitializeNonLocal : +# 2353| m2353_4(unknown) = Chi : total:m2353_2, partial:m2353_3 +# 2353| r2353_5(glval<bool>) = VariableAddress[b] : +# 2353| m2353_6(bool) = InitializeParameter[b] : &:r2353_5 +# 2354| r2354_1(glval<String>) = VariableAddress[s] : +# 2354| m2354_2(String) = Uninitialized[s] : &:r2354_1 +# 2354| r2354_3(glval<unknown>) = FunctionAddress[String] : +# 2354| v2354_4(void) = Call[String] : func:r2354_3, this:r2354_1 +# 2354| m2354_5(unknown) = ^CallSideEffect : ~m2353_4 +# 2354| m2354_6(unknown) = Chi : total:m2353_4, partial:m2354_5 +# 2354| m2354_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2354_1 +# 2354| m2354_8(String) = Chi : total:m2354_2, partial:m2354_7 +# 2355| r2355_1(glval<bool>) = VariableAddress[b] : +# 2355| r2355_2(bool) = Load[b] : &:r2355_1, m2353_6 +# 2355| v2355_3(void) = ConditionalBranch : r2355_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2306| Block 1 -# 2306| m2306_7(unknown) = Phi : from 2:~m2312_5, from 3:~m2312_13 -# 2306| m2306_8(int) = Phi : from 2:m2309_3, from 3:m2311_3 -# 2306| r2306_9(glval<int>) = VariableAddress[#return] : -# 2306| v2306_10(void) = ReturnValue : &:r2306_9, m2306_8 -# 2306| v2306_11(void) = AliasedUse : ~m2306_7 -# 2306| v2306_12(void) = ExitFunction : - -# 2309| Block 2 -# 2309| r2309_1(glval<int>) = VariableAddress[#return] : -# 2309| r2309_2(int) = Constant[1] : -# 2309| m2309_3(int) = Store[#return] : &:r2309_1, r2309_2 -# 2312| r2312_1(glval<String>) = VariableAddress[s] : -# 2312| r2312_2(glval<unknown>) = FunctionAddress[~String] : -# 2312| v2312_3(void) = Call[~String] : func:r2312_2, this:r2312_1 -# 2312| m2312_4(unknown) = ^CallSideEffect : ~m2307_6 -# 2312| m2312_5(unknown) = Chi : total:m2307_6, partial:m2312_4 -# 2312| v2312_6(void) = ^IndirectReadSideEffect[-1] : &:r2312_1, m2307_8 -# 2312| m2312_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 -# 2312| m2312_8(String) = Chi : total:m2307_8, partial:m2312_7 +# 2353| Block 1 +# 2353| m2353_7(unknown) = Phi : from 2:~m2359_5, from 3:~m2359_13 +# 2353| m2353_8(int) = Phi : from 2:m2356_3, from 3:m2358_3 +# 2353| r2353_9(glval<int>) = VariableAddress[#return] : +# 2353| v2353_10(void) = ReturnValue : &:r2353_9, m2353_8 +# 2353| v2353_11(void) = AliasedUse : ~m2353_7 +# 2353| v2353_12(void) = ExitFunction : + +# 2356| Block 2 +# 2356| r2356_1(glval<int>) = VariableAddress[#return] : +# 2356| r2356_2(int) = Constant[1] : +# 2356| m2356_3(int) = Store[#return] : &:r2356_1, r2356_2 +# 2359| r2359_1(glval<String>) = VariableAddress[s] : +# 2359| r2359_2(glval<unknown>) = FunctionAddress[~String] : +# 2359| v2359_3(void) = Call[~String] : func:r2359_2, this:r2359_1 +# 2359| m2359_4(unknown) = ^CallSideEffect : ~m2354_6 +# 2359| m2359_5(unknown) = Chi : total:m2354_6, partial:m2359_4 +# 2359| v2359_6(void) = ^IndirectReadSideEffect[-1] : &:r2359_1, m2354_8 +# 2359| m2359_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_1 +# 2359| m2359_8(String) = Chi : total:m2354_8, partial:m2359_7 #-----| Goto -> Block 1 -# 2311| Block 3 -# 2311| r2311_1(glval<int>) = VariableAddress[#return] : -# 2311| r2311_2(int) = Constant[0] : -# 2311| m2311_3(int) = Store[#return] : &:r2311_1, r2311_2 -# 2312| r2312_9(glval<String>) = VariableAddress[s] : -# 2312| r2312_10(glval<unknown>) = FunctionAddress[~String] : -# 2312| v2312_11(void) = Call[~String] : func:r2312_10, this:r2312_9 -# 2312| m2312_12(unknown) = ^CallSideEffect : ~m2307_6 -# 2312| m2312_13(unknown) = Chi : total:m2307_6, partial:m2312_12 -# 2312| v2312_14(void) = ^IndirectReadSideEffect[-1] : &:r2312_9, m2307_8 -# 2312| m2312_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_9 -# 2312| m2312_16(String) = Chi : total:m2307_8, partial:m2312_15 +# 2358| Block 3 +# 2358| r2358_1(glval<int>) = VariableAddress[#return] : +# 2358| r2358_2(int) = Constant[0] : +# 2358| m2358_3(int) = Store[#return] : &:r2358_1, r2358_2 +# 2359| r2359_9(glval<String>) = VariableAddress[s] : +# 2359| r2359_10(glval<unknown>) = FunctionAddress[~String] : +# 2359| v2359_11(void) = Call[~String] : func:r2359_10, this:r2359_9 +# 2359| m2359_12(unknown) = ^CallSideEffect : ~m2354_6 +# 2359| m2359_13(unknown) = Chi : total:m2354_6, partial:m2359_12 +# 2359| v2359_14(void) = ^IndirectReadSideEffect[-1] : &:r2359_9, m2354_8 +# 2359| m2359_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_9 +# 2359| m2359_16(String) = Chi : total:m2354_8, partial:m2359_15 #-----| Goto -> Block 1 -# 2314| void VoidReturnDestructors() -# 2314| Block 0 -# 2314| v2314_1(void) = EnterFunction : -# 2314| m2314_2(unknown) = AliasedDefinition : -# 2314| m2314_3(unknown) = InitializeNonLocal : -# 2314| m2314_4(unknown) = Chi : total:m2314_2, partial:m2314_3 -# 2315| r2315_1(glval<String>) = VariableAddress[s] : -# 2315| m2315_2(String) = Uninitialized[s] : &:r2315_1 -# 2315| r2315_3(glval<unknown>) = FunctionAddress[String] : -# 2315| v2315_4(void) = Call[String] : func:r2315_3, this:r2315_1 -# 2315| m2315_5(unknown) = ^CallSideEffect : ~m2314_4 -# 2315| m2315_6(unknown) = Chi : total:m2314_4, partial:m2315_5 -# 2315| m2315_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2315_1 -# 2315| m2315_8(String) = Chi : total:m2315_2, partial:m2315_7 -# 2316| r2316_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2316| v2316_2(void) = Call[VoidFunc] : func:r2316_1 -# 2316| m2316_3(unknown) = ^CallSideEffect : ~m2315_6 -# 2316| m2316_4(unknown) = Chi : total:m2315_6, partial:m2316_3 -# 2316| v2316_5(void) = NoOp : -# 2317| r2317_1(glval<String>) = VariableAddress[s] : -# 2317| r2317_2(glval<unknown>) = FunctionAddress[~String] : -# 2317| v2317_3(void) = Call[~String] : func:r2317_2, this:r2317_1 -# 2317| m2317_4(unknown) = ^CallSideEffect : ~m2316_4 -# 2317| m2317_5(unknown) = Chi : total:m2316_4, partial:m2317_4 -# 2317| v2317_6(void) = ^IndirectReadSideEffect[-1] : &:r2317_1, m2315_8 -# 2317| m2317_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2317_1 -# 2317| m2317_8(String) = Chi : total:m2315_8, partial:m2317_7 -# 2314| v2314_5(void) = ReturnVoid : -# 2314| v2314_6(void) = AliasedUse : ~m2317_5 -# 2314| v2314_7(void) = ExitFunction : - -# 2327| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2327| Block 0 -# 2327| v2327_1(void) = EnterFunction : -# 2327| m2327_2(unknown) = AliasedDefinition : -# 2327| m2327_3(unknown) = InitializeNonLocal : -# 2327| m2327_4(unknown) = Chi : total:m2327_2, partial:m2327_3 -# 2329| r2329_1(glval<..:: *>) = VariableAddress[#return] : -# 2329| r2329_2(..()(..)) = FunctionAddress[VoidToInt] : -# 2329| m2329_3(..:: *) = Store[#return] : &:r2329_1, r2329_2 -# 2327| r2327_5(glval<..:: *>) = VariableAddress[#return] : -# 2327| v2327_6(void) = ReturnValue : &:r2327_5, m2329_3 -# 2327| v2327_7(void) = AliasedUse : m2327_3 -# 2327| v2327_8(void) = ExitFunction : +# 2361| void VoidReturnDestructors() +# 2361| Block 0 +# 2361| v2361_1(void) = EnterFunction : +# 2361| m2361_2(unknown) = AliasedDefinition : +# 2361| m2361_3(unknown) = InitializeNonLocal : +# 2361| m2361_4(unknown) = Chi : total:m2361_2, partial:m2361_3 +# 2362| r2362_1(glval<String>) = VariableAddress[s] : +# 2362| m2362_2(String) = Uninitialized[s] : &:r2362_1 +# 2362| r2362_3(glval<unknown>) = FunctionAddress[String] : +# 2362| v2362_4(void) = Call[String] : func:r2362_3, this:r2362_1 +# 2362| m2362_5(unknown) = ^CallSideEffect : ~m2361_4 +# 2362| m2362_6(unknown) = Chi : total:m2361_4, partial:m2362_5 +# 2362| m2362_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2362_1 +# 2362| m2362_8(String) = Chi : total:m2362_2, partial:m2362_7 +# 2363| r2363_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2363| v2363_2(void) = Call[VoidFunc] : func:r2363_1 +# 2363| m2363_3(unknown) = ^CallSideEffect : ~m2362_6 +# 2363| m2363_4(unknown) = Chi : total:m2362_6, partial:m2363_3 +# 2363| v2363_5(void) = NoOp : +# 2364| r2364_1(glval<String>) = VariableAddress[s] : +# 2364| r2364_2(glval<unknown>) = FunctionAddress[~String] : +# 2364| v2364_3(void) = Call[~String] : func:r2364_2, this:r2364_1 +# 2364| m2364_4(unknown) = ^CallSideEffect : ~m2363_4 +# 2364| m2364_5(unknown) = Chi : total:m2363_4, partial:m2364_4 +# 2364| v2364_6(void) = ^IndirectReadSideEffect[-1] : &:r2364_1, m2362_8 +# 2364| m2364_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2364_1 +# 2364| m2364_8(String) = Chi : total:m2362_8, partial:m2364_7 +# 2361| v2361_5(void) = ReturnVoid : +# 2361| v2361_6(void) = AliasedUse : ~m2364_5 +# 2361| v2361_7(void) = ExitFunction : + +# 2374| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2374| Block 0 +# 2374| v2374_1(void) = EnterFunction : +# 2374| m2374_2(unknown) = AliasedDefinition : +# 2374| m2374_3(unknown) = InitializeNonLocal : +# 2374| m2374_4(unknown) = Chi : total:m2374_2, partial:m2374_3 +# 2376| r2376_1(glval<..:: *>) = VariableAddress[#return] : +# 2376| r2376_2(..()(..)) = FunctionAddress[VoidToInt] : +# 2376| m2376_3(..:: *) = Store[#return] : &:r2376_1, r2376_2 +# 2374| r2374_5(glval<..:: *>) = VariableAddress[#return] : +# 2374| v2374_6(void) = ReturnValue : &:r2374_5, m2376_3 +# 2374| v2374_7(void) = AliasedUse : m2374_3 +# 2374| v2374_8(void) = ExitFunction : perf-regression.cpp: # 6| void Big::Big() diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index b63449d96f0c..01d6b2681027 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1055,28 +1055,75 @@ void Lambda(int x, const String& s) { lambda_inits(6); } -template<typename T> -struct vector { - struct iterator { - T* p; - iterator& operator++(); - T& operator*() const; +namespace std { + template<class T> + struct remove_const { typedef T type; }; + + template<class T> + struct remove_const<const T> { typedef T type; }; + + // `remove_const_t<T>` removes any `const` specifier from `T` + template<class T> + using remove_const_t = typename remove_const<T>::type; + + struct ptrdiff_t; + + template<class I> struct iterator_traits; + + template <class Category, + class value_type, + class difference_type = ptrdiff_t, + class pointer_type = value_type*, + class reference_type = value_type&> + struct iterator { + typedef Category iterator_category; + + iterator(); + iterator(iterator<Category, remove_const_t<value_type> > const &other); // non-const -> const conversion constructor + + iterator &operator++(); + iterator operator++(int); + iterator &operator--(); + iterator operator--(int); + bool operator==(iterator other) const; + bool operator!=(iterator other) const; + reference_type operator*() const; + pointer_type operator->() const; + iterator operator+(int); + iterator operator-(int); + iterator &operator+=(int); + iterator &operator-=(int); + int operator-(iterator); + reference_type operator[](int); + }; + + struct input_iterator_tag {}; + struct forward_iterator_tag : public input_iterator_tag {}; + struct bidirectional_iterator_tag : public forward_iterator_tag {}; + struct random_access_iterator_tag : public bidirectional_iterator_tag {}; + + struct output_iterator_tag {}; + + template<typename T> + struct vector { + vector(T); + ~vector(); + + using iterator = std::iterator<random_access_iterator_tag, T>; + using const_iterator = std::iterator<random_access_iterator_tag, const T>; - bool operator!=(iterator right) const; + iterator begin() const; + iterator end() const; }; - vector(T); - ~vector(); - iterator begin() const; - iterator end() const; -}; + template<typename T> + bool operator==(typename vector<T>::iterator left, typename vector<T>::iterator right); + template<typename T> + bool operator!=(typename vector<T>::iterator left, typename vector<T>::iterator right); -template<typename T> -bool operator==(typename vector<T>::iterator left, typename vector<T>::iterator right); -template<typename T> -bool operator!=(typename vector<T>::iterator left, typename vector<T>::iterator right); +} -void RangeBasedFor(const vector<int>& v) { +void RangeBasedFor(const std::vector<int>& v) { for (int e : v) { if (e > 0) { continue; @@ -2151,21 +2198,21 @@ void initialization_with_destructor(bool b, char c) { } ClassWithDestructor x; - for(vector<ClassWithDestructor> ys(x); ClassWithDestructor y : ys) + for(std::vector<ClassWithDestructor> ys(x); ClassWithDestructor y : ys) y.set_x('a'); - for(vector<ClassWithDestructor> ys(x); ClassWithDestructor y : ys) { + for(std::vector<ClassWithDestructor> ys(x); ClassWithDestructor y : ys) { y.set_x('a'); if (y.get_x() == 'b') return; } - for(vector<int> ys(1); int y : ys) { + for(std::vector<int> ys(1); int y : ys) { if (y == 1) return; } - for(vector<ClassWithDestructor> ys(x); ClassWithDestructor y : ys) { + for(std::vector<ClassWithDestructor> ys(x); ClassWithDestructor y : ys) { ClassWithDestructor z1; ClassWithDestructor z2; } @@ -2243,7 +2290,7 @@ void ForDestructors() { String s2; } - for(String s : vector<String>(String("hello"))) { + for(String s : std::vector<String>(String("hello"))) { String s2; } @@ -2331,4 +2378,18 @@ namespace return_routine_type { } + +using size_t = decltype(sizeof(0)); + +template<class T> +struct remove_const { typedef T type; }; + +template<class T> +struct remove_const<const T> { typedef T type; }; + +// `remove_const_t<T>` removes any `const` specifier from `T` +template<class T> +using remove_const_t = typename remove_const<T>::type; + + // semmle-extractor-options: -std=c++20 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 7f606978b585..aa2496f19f29 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -1178,7 +1178,9 @@ | file://:0:0:0:0 | Address | &:r0_5 | | file://:0:0:0:0 | Address | &:r0_6 | | file://:0:0:0:0 | Address | &:r0_6 | -| file://:0:0:0:0 | Address | &:r0_7 | +| file://:0:0:0:0 | Address | &:r0_6 | +| file://:0:0:0:0 | Address | &:r0_6 | +| file://:0:0:0:0 | Address | &:r0_6 | | file://:0:0:0:0 | Address | &:r0_7 | | file://:0:0:0:0 | Address | &:r0_7 | | file://:0:0:0:0 | Address | &:r0_7 | @@ -1191,8 +1193,12 @@ | file://:0:0:0:0 | Address | &:r0_8 | | file://:0:0:0:0 | Address | &:r0_8 | | file://:0:0:0:0 | Address | &:r0_8 | -| file://:0:0:0:0 | Address | &:r0_9 | -| file://:0:0:0:0 | Address | &:r0_9 | +| file://:0:0:0:0 | Address | &:r0_8 | +| file://:0:0:0:0 | Address | &:r0_8 | +| file://:0:0:0:0 | Address | &:r0_8 | +| file://:0:0:0:0 | Address | &:r0_8 | +| file://:0:0:0:0 | Address | &:r0_8 | +| file://:0:0:0:0 | Address | &:r0_8 | | file://:0:0:0:0 | Address | &:r0_9 | | file://:0:0:0:0 | Address | &:r0_9 | | file://:0:0:0:0 | Address | &:r0_10 | @@ -1201,7 +1207,7 @@ | file://:0:0:0:0 | Address | &:r0_11 | | file://:0:0:0:0 | Address | &:r0_11 | | file://:0:0:0:0 | Address | &:r0_11 | -| file://:0:0:0:0 | Address | &:r0_12 | +| file://:0:0:0:0 | Address | &:r0_11 | | file://:0:0:0:0 | Address | &:r0_13 | | file://:0:0:0:0 | Address | &:r0_13 | | file://:0:0:0:0 | Address | &:r0_13 | @@ -1210,6 +1216,7 @@ | file://:0:0:0:0 | Address | &:r0_15 | | file://:0:0:0:0 | Address | &:r0_15 | | file://:0:0:0:0 | Address | &:r0_15 | +| file://:0:0:0:0 | Address | &:r0_15 | | file://:0:0:0:0 | Address | &:r0_16 | | file://:0:0:0:0 | Address | &:r0_16 | | file://:0:0:0:0 | Address | &:r0_16 | @@ -1218,23 +1225,58 @@ | file://:0:0:0:0 | Address | &:r0_17 | | file://:0:0:0:0 | Address | &:r0_18 | | file://:0:0:0:0 | Address | &:r0_18 | +| file://:0:0:0:0 | Address | &:r0_18 | | file://:0:0:0:0 | Address | &:r0_19 | | file://:0:0:0:0 | Address | &:r0_19 | | file://:0:0:0:0 | Address | &:r0_19 | -| file://:0:0:0:0 | Address | &:r0_22 | -| file://:0:0:0:0 | Address | &:r0_25 | +| file://:0:0:0:0 | Address | &:r0_20 | +| file://:0:0:0:0 | Address | &:r0_20 | +| file://:0:0:0:0 | Address | &:r0_20 | +| file://:0:0:0:0 | Address | &:r0_21 | +| file://:0:0:0:0 | Address | &:r0_23 | +| file://:0:0:0:0 | Address | &:r0_23 | +| file://:0:0:0:0 | Address | &:r0_24 | +| file://:0:0:0:0 | Address | &:r0_24 | +| file://:0:0:0:0 | Address | &:r0_24 | | file://:0:0:0:0 | Address | &:r0_27 | -| file://:0:0:0:0 | Address | &:r0_29 | -| file://:0:0:0:0 | Address | &:r0_32 | -| file://:0:0:0:0 | Address | &:r0_35 | +| file://:0:0:0:0 | Address | &:r0_27 | +| file://:0:0:0:0 | Address | &:r0_31 | +| file://:0:0:0:0 | Address | &:r0_34 | | file://:0:0:0:0 | Address | &:r0_37 | | file://:0:0:0:0 | Address | &:r0_39 | +| file://:0:0:0:0 | Address | &:r0_40 | +| file://:0:0:0:0 | Address | &:r0_40 | +| file://:0:0:0:0 | Address | &:r0_40 | +| file://:0:0:0:0 | Address | &:r0_43 | +| file://:0:0:0:0 | Address | &:r0_47 | +| file://:0:0:0:0 | Address | &:r0_50 | +| file://:0:0:0:0 | Address | &:r0_53 | +| file://:0:0:0:0 | Address | &:r0_55 | +| file://:0:0:0:0 | Address | &:r0_56 | +| file://:0:0:0:0 | Address | &:r0_56 | +| file://:0:0:0:0 | Address | &:r0_56 | +| file://:0:0:0:0 | Address | &:r0_59 | +| file://:0:0:0:0 | Address | &:r0_63 | | file://:0:0:0:0 | Arg(0) | 0:r0_6 | | file://:0:0:0:0 | Arg(0) | 0:r0_8 | | file://:0:0:0:0 | Arg(0) | 0:r0_8 | | file://:0:0:0:0 | Arg(0) | 0:r0_8 | +| file://:0:0:0:0 | Arg(0) | 0:r0_9 | +| file://:0:0:0:0 | Arg(0) | 0:r0_11 | +| file://:0:0:0:0 | Arg(0) | 0:r0_11 | +| file://:0:0:0:0 | Arg(0) | 0:r0_11 | +| file://:0:0:0:0 | Arg(0) | 0:r0_13 | +| file://:0:0:0:0 | Arg(0) | 0:r0_13 | | file://:0:0:0:0 | Arg(0) | 0:r0_15 | | file://:0:0:0:0 | Arg(0) | 0:r0_15 | +| file://:0:0:0:0 | Arg(0) | 0:r0_23 | +| file://:0:0:0:0 | Arg(0) | 0:r0_25 | +| file://:0:0:0:0 | Arg(0) | 0:r0_27 | +| file://:0:0:0:0 | Arg(0) | 0:r0_29 | +| file://:0:0:0:0 | Arg(0) | 0:r0_43 | +| file://:0:0:0:0 | Arg(0) | 0:r0_45 | +| file://:0:0:0:0 | Arg(0) | 0:r0_59 | +| file://:0:0:0:0 | Arg(0) | 0:r0_61 | | file://:0:0:0:0 | CallTarget | func:r0_1 | | file://:0:0:0:0 | CallTarget | func:r0_1 | | file://:0:0:0:0 | CallTarget | func:r0_1 | @@ -1266,15 +1308,15 @@ | file://:0:0:0:0 | ChiTotal | total:m754_8 | | file://:0:0:0:0 | ChiTotal | total:m763_8 | | file://:0:0:0:0 | ChiTotal | total:m1043_10 | -| file://:0:0:0:0 | ChiTotal | total:m1242_4 | -| file://:0:0:0:0 | ChiTotal | total:m1690_3 | -| file://:0:0:0:0 | ChiTotal | total:m1718_8 | -| file://:0:0:0:0 | ChiTotal | total:m1718_19 | -| file://:0:0:0:0 | ChiTotal | total:m1836_8 | -| file://:0:0:0:0 | ChiTotal | total:m1841_8 | -| file://:0:0:0:0 | ChiTotal | total:m2175_6 | -| file://:0:0:0:0 | ChiTotal | total:m2179_4 | -| file://:0:0:0:0 | ChiTotal | total:m2186_6 | +| file://:0:0:0:0 | ChiTotal | total:m1289_4 | +| file://:0:0:0:0 | ChiTotal | total:m1737_3 | +| file://:0:0:0:0 | ChiTotal | total:m1765_8 | +| file://:0:0:0:0 | ChiTotal | total:m1765_19 | +| file://:0:0:0:0 | ChiTotal | total:m1883_8 | +| file://:0:0:0:0 | ChiTotal | total:m1888_8 | +| file://:0:0:0:0 | ChiTotal | total:m2222_6 | +| file://:0:0:0:0 | ChiTotal | total:m2226_4 | +| file://:0:0:0:0 | ChiTotal | total:m2233_6 | | file://:0:0:0:0 | Left | r0_2 | | file://:0:0:0:0 | Left | r0_4 | | file://:0:0:0:0 | Left | r0_7 | @@ -1306,18 +1348,25 @@ | file://:0:0:0:0 | Load | m745_6 | | file://:0:0:0:0 | Load | m754_6 | | file://:0:0:0:0 | Load | m763_6 | -| file://:0:0:0:0 | Load | m1468_4 | -| file://:0:0:0:0 | Load | m1468_4 | -| file://:0:0:0:0 | Load | m1687_9 | -| file://:0:0:0:0 | Load | m1716_4 | -| file://:0:0:0:0 | Load | m1836_6 | -| file://:0:0:0:0 | Load | m1836_6 | -| file://:0:0:0:0 | Load | m1841_6 | -| file://:0:0:0:0 | Load | m2015_6 | +| file://:0:0:0:0 | Load | m1127_33 | +| file://:0:0:0:0 | Load | m1133_33 | +| file://:0:0:0:0 | Load | m1515_4 | +| file://:0:0:0:0 | Load | m1515_4 | +| file://:0:0:0:0 | Load | m1734_9 | +| file://:0:0:0:0 | Load | m1763_4 | +| file://:0:0:0:0 | Load | m1883_6 | +| file://:0:0:0:0 | Load | m1883_6 | +| file://:0:0:0:0 | Load | m1888_6 | +| file://:0:0:0:0 | Load | m2062_6 | +| file://:0:0:0:0 | Load | m2201_44 | +| file://:0:0:0:0 | Load | m2204_44 | +| file://:0:0:0:0 | Load | m2210_40 | +| file://:0:0:0:0 | Load | m2215_44 | +| file://:0:0:0:0 | Load | m2293_50 | | file://:0:0:0:0 | Load | ~m0_4 | -| file://:0:0:0:0 | Load | ~m1446_6 | -| file://:0:0:0:0 | Load | ~m1714_10 | -| file://:0:0:0:0 | Load | ~m1714_14 | +| file://:0:0:0:0 | Load | ~m1493_6 | +| file://:0:0:0:0 | Load | ~m1761_10 | +| file://:0:0:0:0 | Load | ~m1761_14 | | file://:0:0:0:0 | Right | r0_3 | | file://:0:0:0:0 | Right | r0_5 | | file://:0:0:0:0 | Right | r0_8 | @@ -1339,30 +1388,30 @@ | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_14 | -| file://:0:0:0:0 | SideEffect | m1080_23 | -| file://:0:0:0:0 | SideEffect | m1080_23 | -| file://:0:0:0:0 | SideEffect | m1086_23 | -| file://:0:0:0:0 | SideEffect | m1086_23 | -| file://:0:0:0:0 | SideEffect | m2154_13 | -| file://:0:0:0:0 | SideEffect | m2154_13 | -| file://:0:0:0:0 | SideEffect | m2154_34 | -| file://:0:0:0:0 | SideEffect | m2154_34 | -| file://:0:0:0:0 | SideEffect | m2157_13 | -| file://:0:0:0:0 | SideEffect | m2157_13 | -| file://:0:0:0:0 | SideEffect | m2157_34 | -| file://:0:0:0:0 | SideEffect | m2157_34 | -| file://:0:0:0:0 | SideEffect | m2163_9 | -| file://:0:0:0:0 | SideEffect | m2163_9 | -| file://:0:0:0:0 | SideEffect | m2163_30 | -| file://:0:0:0:0 | SideEffect | m2163_30 | -| file://:0:0:0:0 | SideEffect | m2168_13 | -| file://:0:0:0:0 | SideEffect | m2168_13 | -| file://:0:0:0:0 | SideEffect | m2168_34 | -| file://:0:0:0:0 | SideEffect | m2168_34 | -| file://:0:0:0:0 | SideEffect | m2246_21 | -| file://:0:0:0:0 | SideEffect | m2246_21 | -| file://:0:0:0:0 | SideEffect | m2246_40 | -| file://:0:0:0:0 | SideEffect | m2246_40 | +| file://:0:0:0:0 | SideEffect | m1127_23 | +| file://:0:0:0:0 | SideEffect | m1127_23 | +| file://:0:0:0:0 | SideEffect | m1133_23 | +| file://:0:0:0:0 | SideEffect | m1133_23 | +| file://:0:0:0:0 | SideEffect | m2201_13 | +| file://:0:0:0:0 | SideEffect | m2201_13 | +| file://:0:0:0:0 | SideEffect | m2201_34 | +| file://:0:0:0:0 | SideEffect | m2201_34 | +| file://:0:0:0:0 | SideEffect | m2204_13 | +| file://:0:0:0:0 | SideEffect | m2204_13 | +| file://:0:0:0:0 | SideEffect | m2204_34 | +| file://:0:0:0:0 | SideEffect | m2204_34 | +| file://:0:0:0:0 | SideEffect | m2210_9 | +| file://:0:0:0:0 | SideEffect | m2210_9 | +| file://:0:0:0:0 | SideEffect | m2210_30 | +| file://:0:0:0:0 | SideEffect | m2210_30 | +| file://:0:0:0:0 | SideEffect | m2215_13 | +| file://:0:0:0:0 | SideEffect | m2215_13 | +| file://:0:0:0:0 | SideEffect | m2215_34 | +| file://:0:0:0:0 | SideEffect | m2215_34 | +| file://:0:0:0:0 | SideEffect | m2293_21 | +| file://:0:0:0:0 | SideEffect | m2293_21 | +| file://:0:0:0:0 | SideEffect | m2293_40 | +| file://:0:0:0:0 | SideEffect | m2293_40 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | @@ -1372,16 +1421,23 @@ | file://:0:0:0:0 | SideEffect | ~m96_8 | | file://:0:0:0:0 | SideEffect | ~m754_8 | | file://:0:0:0:0 | SideEffect | ~m763_8 | -| file://:0:0:0:0 | SideEffect | ~m1079_8 | -| file://:0:0:0:0 | SideEffect | ~m1079_8 | -| file://:0:0:0:0 | SideEffect | ~m1079_8 | -| file://:0:0:0:0 | SideEffect | ~m1079_8 | -| file://:0:0:0:0 | SideEffect | ~m1242_4 | -| file://:0:0:0:0 | SideEffect | ~m1449_6 | -| file://:0:0:0:0 | SideEffect | ~m1841_8 | -| file://:0:0:0:0 | SideEffect | ~m2175_6 | -| file://:0:0:0:0 | SideEffect | ~m2179_4 | -| file://:0:0:0:0 | SideEffect | ~m2186_6 | +| file://:0:0:0:0 | SideEffect | ~m1126_8 | +| file://:0:0:0:0 | SideEffect | ~m1126_8 | +| file://:0:0:0:0 | SideEffect | ~m1126_8 | +| file://:0:0:0:0 | SideEffect | ~m1126_8 | +| file://:0:0:0:0 | SideEffect | ~m1127_22 | +| file://:0:0:0:0 | SideEffect | ~m1133_22 | +| file://:0:0:0:0 | SideEffect | ~m1289_4 | +| file://:0:0:0:0 | SideEffect | ~m1496_6 | +| file://:0:0:0:0 | SideEffect | ~m1888_8 | +| file://:0:0:0:0 | SideEffect | ~m2201_33 | +| file://:0:0:0:0 | SideEffect | ~m2204_33 | +| file://:0:0:0:0 | SideEffect | ~m2210_29 | +| file://:0:0:0:0 | SideEffect | ~m2215_33 | +| file://:0:0:0:0 | SideEffect | ~m2222_6 | +| file://:0:0:0:0 | SideEffect | ~m2226_4 | +| file://:0:0:0:0 | SideEffect | ~m2233_6 | +| file://:0:0:0:0 | SideEffect | ~m2293_39 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | @@ -1432,30 +1488,37 @@ | file://:0:0:0:0 | Unary | r0_7 | | file://:0:0:0:0 | Unary | r0_8 | | file://:0:0:0:0 | Unary | r0_8 | +| file://:0:0:0:0 | Unary | r0_8 | | file://:0:0:0:0 | Unary | r0_9 | | file://:0:0:0:0 | Unary | r0_9 | | file://:0:0:0:0 | Unary | r0_9 | | file://:0:0:0:0 | Unary | r0_10 | | file://:0:0:0:0 | Unary | r0_10 | | file://:0:0:0:0 | Unary | r0_10 | -| file://:0:0:0:0 | Unary | r0_11 | +| file://:0:0:0:0 | Unary | r0_10 | +| file://:0:0:0:0 | Unary | r0_10 | | file://:0:0:0:0 | Unary | r0_11 | | file://:0:0:0:0 | Unary | r0_12 | | file://:0:0:0:0 | Unary | r0_14 | | file://:0:0:0:0 | Unary | r0_14 | -| file://:0:0:0:0 | Unary | r0_14 | +| file://:0:0:0:0 | Unary | r0_17 | | file://:0:0:0:0 | Unary | r0_17 | | file://:0:0:0:0 | Unary | r0_18 | | file://:0:0:0:0 | Unary | r0_18 | | file://:0:0:0:0 | Unary | r0_19 | | file://:0:0:0:0 | Unary | r0_20 | | file://:0:0:0:0 | Unary | r0_20 | +| file://:0:0:0:0 | Unary | r0_20 | | file://:0:0:0:0 | Unary | r0_21 | | file://:0:0:0:0 | Unary | r0_21 | -| file://:0:0:0:0 | Unary | r0_21 | -| file://:0:0:0:0 | Unary | r0_24 | -| file://:0:0:0:0 | Unary | r0_31 | -| file://:0:0:0:0 | Unary | r0_34 | +| file://:0:0:0:0 | Unary | r0_22 | +| file://:0:0:0:0 | Unary | r0_26 | +| file://:0:0:0:0 | Unary | r0_33 | +| file://:0:0:0:0 | Unary | r0_36 | +| file://:0:0:0:0 | Unary | r0_42 | +| file://:0:0:0:0 | Unary | r0_49 | +| file://:0:0:0:0 | Unary | r0_52 | +| file://:0:0:0:0 | Unary | r0_58 | | ir.c:7:6:7:17 | ChiPartial | partial:m7_3 | | ir.c:7:6:7:17 | ChiTotal | total:m7_2 | | ir.c:7:6:7:17 | SideEffect | ~m10_6 | @@ -6147,6333 +6210,6368 @@ | ir.cpp:1056:1:1056:1 | SideEffect | m1049_12 | | ir.cpp:1056:1:1056:1 | SideEffect | ~m1055_7 | | ir.cpp:1056:1:1056:1 | SideEffect | ~m1056_6 | -| ir.cpp:1079:6:1079:18 | ChiPartial | partial:m1079_3 | -| ir.cpp:1079:6:1079:18 | ChiTotal | total:m1079_2 | -| ir.cpp:1079:6:1079:18 | SideEffect | ~m1090_1 | -| ir.cpp:1079:39:1079:39 | Address | &:r1079_5 | -| ir.cpp:1079:39:1079:39 | Address | &:r1079_5 | -| ir.cpp:1079:39:1079:39 | Address | &:r1079_7 | -| ir.cpp:1079:39:1079:39 | Address | &:r1079_7 | -| ir.cpp:1079:39:1079:39 | Load | m1079_6 | -| ir.cpp:1079:39:1079:39 | SideEffect | m1079_8 | -| ir.cpp:1080:5:1080:5 | Address | &:r1080_1 | -| ir.cpp:1080:5:1080:5 | Address | &:r1080_7 | -| ir.cpp:1080:5:1080:5 | Address | &:r1080_15 | -| ir.cpp:1080:14:1080:14 | Address | &:r1080_33 | -| ir.cpp:1080:18:1080:18 | Address | &:r1080_2 | -| ir.cpp:1080:18:1080:18 | Address | &:r1080_8 | -| ir.cpp:1080:18:1080:18 | Address | &:r1080_16 | -| ir.cpp:1080:18:1080:18 | Address | &:r1080_27 | -| ir.cpp:1080:18:1080:18 | Address | &:r1080_36 | -| ir.cpp:1080:18:1080:18 | Address | &:r1080_42 | -| ir.cpp:1080:18:1080:18 | Address | &:r1080_42 | -| ir.cpp:1080:18:1080:18 | Arg(0) | 0:r1080_28 | -| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_1 | -| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_3 | -| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_5 | -| ir.cpp:1080:18:1080:18 | Arg(this) | this:r0_7 | -| ir.cpp:1080:18:1080:18 | Arg(this) | this:r1080_42 | -| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_10 | -| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_18 | -| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_26 | -| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_35 | -| ir.cpp:1080:18:1080:18 | CallTarget | func:r1080_43 | -| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_12 | -| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_20 | -| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_30 | -| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_37 | -| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_45 | -| ir.cpp:1080:18:1080:18 | ChiPartial | partial:m1080_48 | -| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1079_4 | -| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_13 | -| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_23 | -| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_24 | -| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_31 | -| ir.cpp:1080:18:1080:18 | ChiTotal | total:m1080_38 | -| ir.cpp:1080:18:1080:18 | Condition | r1080_29 | -| ir.cpp:1080:18:1080:18 | Load | m1079_6 | -| ir.cpp:1080:18:1080:18 | Load | m1080_6 | -| ir.cpp:1080:18:1080:18 | Load | m1080_6 | -| ir.cpp:1080:18:1080:18 | Load | m1080_22 | -| ir.cpp:1080:18:1080:18 | Phi | from 0:m1080_14 | -| ir.cpp:1080:18:1080:18 | Phi | from 0:~m1080_21 | -| ir.cpp:1080:18:1080:18 | Phi | from 4:m1080_49 | -| ir.cpp:1080:18:1080:18 | Phi | from 4:~m1080_46 | -| ir.cpp:1080:18:1080:18 | SideEffect | m1080_23 | -| ir.cpp:1080:18:1080:18 | SideEffect | ~m1079_4 | -| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_13 | -| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_24 | -| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_31 | -| ir.cpp:1080:18:1080:18 | SideEffect | ~m1080_38 | -| ir.cpp:1080:18:1080:18 | StoreValue | r1080_5 | -| ir.cpp:1080:18:1080:18 | StoreValue | r1080_11 | -| ir.cpp:1080:18:1080:18 | StoreValue | r1080_19 | -| ir.cpp:1080:18:1080:18 | Unary | r1080_3 | -| ir.cpp:1080:18:1080:18 | Unary | r1080_4 | -| ir.cpp:1080:18:1080:18 | Unary | r1080_9 | -| ir.cpp:1080:18:1080:18 | Unary | r1080_17 | -| ir.cpp:1080:18:1080:18 | Unary | r1080_25 | -| ir.cpp:1080:18:1080:18 | Unary | r1080_34 | -| ir.cpp:1080:18:1080:18 | Unary | r1080_44 | -| ir.cpp:1080:18:1080:19 | Load | ~m1080_38 | -| ir.cpp:1080:18:1080:19 | StoreValue | r1080_39 | -| ir.cpp:1081:13:1081:13 | Address | &:r1081_1 | -| ir.cpp:1081:13:1081:13 | Left | r1081_2 | -| ir.cpp:1081:13:1081:13 | Load | m1080_40 | -| ir.cpp:1081:13:1081:17 | Condition | r1081_4 | -| ir.cpp:1081:17:1081:17 | Right | r1081_3 | -| ir.cpp:1086:5:1086:5 | Address | &:r1086_1 | -| ir.cpp:1086:5:1086:5 | Address | &:r1086_7 | -| ir.cpp:1086:5:1086:5 | Address | &:r1086_15 | -| ir.cpp:1086:21:1086:21 | Address | &:r1086_42 | -| ir.cpp:1086:25:1086:25 | Address | &:r1086_2 | -| ir.cpp:1086:25:1086:25 | Address | &:r1086_8 | -| ir.cpp:1086:25:1086:25 | Address | &:r1086_16 | -| ir.cpp:1086:25:1086:25 | Address | &:r1086_27 | -| ir.cpp:1086:25:1086:25 | Address | &:r1086_33 | -| ir.cpp:1086:25:1086:25 | Address | &:r1086_33 | -| ir.cpp:1086:25:1086:25 | Arg(0) | 0:r1086_28 | -| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_9 | -| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_11 | -| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_13 | -| ir.cpp:1086:25:1086:25 | Arg(this) | this:r0_15 | -| ir.cpp:1086:25:1086:25 | Arg(this) | this:r1086_33 | -| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_10 | -| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_18 | -| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_26 | -| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_34 | -| ir.cpp:1086:25:1086:25 | CallTarget | func:r1086_44 | -| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_12 | -| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_20 | -| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_30 | -| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_36 | -| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_39 | -| ir.cpp:1086:25:1086:25 | ChiPartial | partial:m1086_46 | -| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1080_31 | -| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_13 | -| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_23 | -| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_24 | -| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_31 | -| ir.cpp:1086:25:1086:25 | ChiTotal | total:m1086_47 | -| ir.cpp:1086:25:1086:25 | Condition | r1086_29 | -| ir.cpp:1086:25:1086:25 | Load | m1079_6 | -| ir.cpp:1086:25:1086:25 | Load | m1086_6 | -| ir.cpp:1086:25:1086:25 | Load | m1086_6 | -| ir.cpp:1086:25:1086:25 | Load | m1086_22 | -| ir.cpp:1086:25:1086:25 | Phi | from 5:m1086_14 | -| ir.cpp:1086:25:1086:25 | Phi | from 5:~m1086_21 | -| ir.cpp:1086:25:1086:25 | Phi | from 7:m1086_40 | -| ir.cpp:1086:25:1086:25 | Phi | from 7:~m1086_37 | -| ir.cpp:1086:25:1086:25 | SideEffect | m1086_23 | -| ir.cpp:1086:25:1086:25 | SideEffect | ~m1080_31 | -| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_13 | -| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_24 | -| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_31 | -| ir.cpp:1086:25:1086:25 | SideEffect | ~m1086_47 | -| ir.cpp:1086:25:1086:25 | StoreValue | r1086_5 | -| ir.cpp:1086:25:1086:25 | StoreValue | r1086_11 | -| ir.cpp:1086:25:1086:25 | StoreValue | r1086_19 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_3 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_4 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_9 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_17 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_25 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_35 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_43 | -| ir.cpp:1086:25:1086:25 | Unary | r1086_45 | -| ir.cpp:1086:25:1086:26 | StoreValue | r1086_50 | -| ir.cpp:1086:25:1086:26 | Unary | r1086_48 | -| ir.cpp:1086:25:1086:26 | Unary | r1086_49 | -| ir.cpp:1087:13:1087:13 | Address | &:r1087_1 | -| ir.cpp:1087:13:1087:13 | Address | &:r1087_2 | -| ir.cpp:1087:13:1087:13 | Left | r1087_3 | -| ir.cpp:1087:13:1087:13 | Load | m1086_51 | -| ir.cpp:1087:13:1087:13 | Load | ~m1086_47 | -| ir.cpp:1087:13:1087:17 | Condition | r1087_5 | -| ir.cpp:1087:17:1087:17 | Right | r1087_4 | -| ir.cpp:1090:5:1090:5 | Phi | from 6:~m1086_31 | -| ir.cpp:1090:5:1090:5 | Phi | from 9:~m1086_47 | -| ir.cpp:1110:5:1110:11 | Address | &:r1110_7 | -| ir.cpp:1110:5:1110:11 | ChiPartial | partial:m1110_3 | -| ir.cpp:1110:5:1110:11 | ChiTotal | total:m1110_2 | -| ir.cpp:1110:5:1110:11 | Load | m1112_4 | -| ir.cpp:1110:5:1110:11 | SideEffect | ~m1111_2 | -| ir.cpp:1110:17:1110:17 | Address | &:r1110_5 | -| ir.cpp:1111:3:1111:14 | ChiPartial | partial:m1111_1 | -| ir.cpp:1111:3:1111:14 | ChiTotal | total:m1110_4 | -| ir.cpp:1111:3:1111:14 | SideEffect | ~m1110_4 | -| ir.cpp:1112:3:1112:11 | Address | &:r1112_1 | -| ir.cpp:1112:10:1112:10 | Address | &:r1112_2 | -| ir.cpp:1112:10:1112:10 | Load | m1110_6 | -| ir.cpp:1112:10:1112:10 | StoreValue | r1112_3 | -| ir.cpp:1115:13:1115:30 | ChiPartial | partial:m1115_3 | -| ir.cpp:1115:13:1115:30 | ChiTotal | total:m1115_2 | -| ir.cpp:1115:13:1115:30 | SideEffect | ~m1117_2 | -| ir.cpp:1115:46:1115:46 | Address | &:r1115_5 | -| ir.cpp:1115:46:1115:46 | Address | &:r1115_5 | -| ir.cpp:1115:46:1115:46 | Address | &:r1115_7 | -| ir.cpp:1115:46:1115:46 | Address | &:r1115_7 | -| ir.cpp:1115:46:1115:46 | Load | m1115_6 | -| ir.cpp:1115:46:1115:46 | SideEffect | m1115_8 | -| ir.cpp:1115:62:1115:62 | Address | &:r1115_9 | -| ir.cpp:1115:79:1115:79 | Address | &:r1115_11 | -| ir.cpp:1115:79:1115:79 | Address | &:r1115_11 | -| ir.cpp:1115:79:1115:79 | Address | &:r1115_13 | -| ir.cpp:1115:79:1115:79 | Address | &:r1115_13 | -| ir.cpp:1115:79:1115:79 | Load | m1115_12 | -| ir.cpp:1115:79:1115:79 | SideEffect | m1115_14 | -| ir.cpp:1115:95:1115:95 | Address | &:r1115_15 | -| ir.cpp:1117:3:1121:6 | ChiPartial | partial:m1117_1 | -| ir.cpp:1117:3:1121:6 | ChiTotal | total:m1115_4 | -| ir.cpp:1117:3:1121:6 | SideEffect | ~m1115_4 | -| ir.cpp:1120:13:1120:13 | Address | &:r1120_1 | -| ir.cpp:1120:13:1120:13 | AsmOperand(0) | 0:r1120_3 | -| ir.cpp:1120:13:1120:13 | Load | m1115_6 | -| ir.cpp:1120:13:1120:13 | Unary | r1120_2 | -| ir.cpp:1120:23:1120:23 | AsmOperand(1) | 1:r1120_4 | -| ir.cpp:1120:33:1120:33 | Address | &:r1120_5 | -| ir.cpp:1120:33:1120:33 | Address | &:r1120_6 | -| ir.cpp:1120:33:1120:33 | AsmOperand(2) | 2:r1120_7 | -| ir.cpp:1120:33:1120:33 | Load | m1115_12 | -| ir.cpp:1120:33:1120:33 | Load | ~m1115_14 | -| ir.cpp:1120:42:1120:42 | Address | &:r1120_8 | -| ir.cpp:1120:42:1120:42 | AsmOperand(3) | 3:r1120_9 | -| ir.cpp:1120:42:1120:42 | Load | m1115_16 | -| ir.cpp:1124:6:1124:23 | ChiPartial | partial:m1124_3 | -| ir.cpp:1124:6:1124:23 | ChiTotal | total:m1124_2 | -| ir.cpp:1124:6:1124:23 | SideEffect | m1124_3 | -| ir.cpp:1127:9:1127:9 | Address | &:r1127_1 | -| ir.cpp:1128:9:1128:9 | Address | &:r1128_1 | -| ir.cpp:1129:29:1129:29 | Address | &:r1129_1 | -| ir.cpp:1139:6:1139:30 | ChiPartial | partial:m1139_3 | -| ir.cpp:1139:6:1139:30 | ChiTotal | total:m1139_2 | -| ir.cpp:1139:6:1139:30 | SideEffect | m1139_3 | -| ir.cpp:1141:5:1141:20 | Address | &:r1141_1 | -| ir.cpp:1141:5:1141:20 | Address | &:r1141_5 | -| ir.cpp:1141:5:1141:20 | Address | &:r1141_10 | -| ir.cpp:1141:5:1141:20 | Address | &:r1141_10 | -| ir.cpp:1141:5:1141:20 | Condition | r1141_8 | -| ir.cpp:1141:5:1141:20 | Left | r1141_6 | -| ir.cpp:1141:5:1141:20 | Left | r1141_11 | -| ir.cpp:1141:5:1141:20 | Load | m1141_4 | -| ir.cpp:1141:5:1141:20 | Load | m1141_4 | -| ir.cpp:1141:5:1141:20 | Phi | from 0:m1141_3 | -| ir.cpp:1141:5:1141:20 | Phi | from 2:m1141_14 | -| ir.cpp:1141:5:1141:20 | Right | r1141_7 | -| ir.cpp:1141:5:1141:20 | Right | r1141_12 | -| ir.cpp:1141:5:1141:20 | StoreValue | r1141_2 | -| ir.cpp:1141:5:1141:20 | StoreValue | r1141_13 | -| ir.cpp:1144:6:1144:23 | ChiPartial | partial:m1144_3 | -| ir.cpp:1144:6:1144:23 | ChiTotal | total:m1144_2 | -| ir.cpp:1144:6:1144:23 | Phi | from 2:~m1144_10 | -| ir.cpp:1144:6:1144:23 | Phi | from 7:~m1156_8 | -| ir.cpp:1144:6:1144:23 | Phi | from 8:~m1144_4 | -| ir.cpp:1144:6:1144:23 | Phi | from 10:~m1144_4 | -| ir.cpp:1144:6:1144:23 | SideEffect | ~m1144_7 | -| ir.cpp:1144:30:1144:30 | Address | &:r1144_5 | -| ir.cpp:1146:9:1146:9 | Address | &:r1146_1 | -| ir.cpp:1146:12:1146:13 | StoreValue | r1146_2 | -| ir.cpp:1147:9:1147:9 | Address | &:r1147_1 | -| ir.cpp:1147:9:1147:9 | Condition | r1147_2 | -| ir.cpp:1147:9:1147:9 | Load | m1144_6 | -| ir.cpp:1148:7:1148:28 | Address | &:r1148_1 | -| ir.cpp:1148:7:1148:28 | Address | &:r1148_1 | -| ir.cpp:1148:7:1148:28 | Load | m1148_4 | -| ir.cpp:1148:13:1148:28 | StoreValue | r1148_3 | -| ir.cpp:1148:13:1148:28 | Unary | r1148_2 | -| ir.cpp:1150:14:1150:14 | Address | &:r1150_1 | -| ir.cpp:1150:14:1150:14 | Left | r1150_2 | -| ir.cpp:1150:14:1150:14 | Load | m1146_3 | -| ir.cpp:1150:14:1150:18 | Condition | r1150_4 | -| ir.cpp:1150:18:1150:18 | Right | r1150_3 | -| ir.cpp:1153:5:1153:5 | Address | &:r1153_2 | -| ir.cpp:1153:9:1153:9 | StoreValue | r1153_1 | -| ir.cpp:1155:22:1155:22 | Address | &:r1155_2 | -| ir.cpp:1155:22:1155:22 | Address | &:r1155_2 | -| ir.cpp:1155:22:1155:22 | Address | &:r1155_4 | -| ir.cpp:1155:22:1155:22 | Load | m1155_3 | -| ir.cpp:1156:5:1156:19 | Address | &:r1156_1 | -| ir.cpp:1156:5:1156:19 | Address | &:r1156_1 | -| ir.cpp:1156:5:1156:19 | Address | &:r1156_1 | -| ir.cpp:1156:5:1156:19 | Arg(this) | this:r1156_1 | -| ir.cpp:1156:5:1156:19 | CallTarget | func:r1156_3 | -| ir.cpp:1156:5:1156:19 | ChiPartial | partial:m1156_7 | -| ir.cpp:1156:5:1156:19 | ChiPartial | partial:m1156_10 | -| ir.cpp:1156:5:1156:19 | ChiTotal | total:m1144_4 | -| ir.cpp:1156:5:1156:19 | ChiTotal | total:m1156_2 | -| ir.cpp:1156:5:1156:19 | Load | m1156_11 | -| ir.cpp:1156:5:1156:19 | SideEffect | ~m1144_4 | -| ir.cpp:1156:18:1156:18 | Address | &:r1156_4 | -| ir.cpp:1156:18:1156:18 | Address | &:r1156_5 | -| ir.cpp:1156:18:1156:18 | Arg(0) | 0:r1156_5 | -| ir.cpp:1156:18:1156:18 | Load | m1155_3 | -| ir.cpp:1156:18:1156:18 | SideEffect | ~m1155_5 | -| ir.cpp:1158:24:1158:24 | Address | &:r1158_2 | -| ir.cpp:1158:24:1158:24 | Address | &:r1158_2 | -| ir.cpp:1158:24:1158:24 | Address | &:r1158_4 | -| ir.cpp:1158:24:1158:24 | Load | m1158_3 | -| ir.cpp:1164:6:1164:16 | ChiPartial | partial:m1164_3 | -| ir.cpp:1164:6:1164:16 | ChiTotal | total:m1164_2 | -| ir.cpp:1164:6:1164:16 | SideEffect | m1164_3 | -| ir.cpp:1164:22:1164:22 | Address | &:r1164_5 | -| ir.cpp:1165:18:1165:20 | Address | &:r1165_1 | -| ir.cpp:1165:18:1165:20 | Left | r1165_1 | -| ir.cpp:1165:18:1165:20 | Left | r1165_1 | -| ir.cpp:1165:18:1165:20 | Left | r1165_1 | -| ir.cpp:1165:18:1165:20 | Left | r1165_1 | -| ir.cpp:1165:23:1165:37 | Address | &:r1165_4 | -| ir.cpp:1165:23:1165:37 | Address | &:r1165_9 | -| ir.cpp:1165:23:1165:37 | Address | &:r1165_14 | -| ir.cpp:1165:23:1165:37 | Address | &:r1165_19 | -| ir.cpp:1165:23:1165:37 | Right | r1165_3 | -| ir.cpp:1165:23:1165:37 | Right | r1165_8 | -| ir.cpp:1165:23:1165:37 | Right | r1165_13 | -| ir.cpp:1165:23:1165:37 | Right | r1165_18 | -| ir.cpp:1165:26:1165:26 | ChiPartial | partial:m1165_6 | -| ir.cpp:1165:26:1165:26 | ChiTotal | total:m1165_2 | -| ir.cpp:1165:26:1165:26 | StoreValue | r1165_5 | -| ir.cpp:1165:29:1165:29 | ChiPartial | partial:m1165_11 | -| ir.cpp:1165:29:1165:29 | ChiTotal | total:m1165_7 | -| ir.cpp:1165:29:1165:29 | StoreValue | r1165_10 | -| ir.cpp:1165:32:1165:32 | ChiPartial | partial:m1165_16 | -| ir.cpp:1165:32:1165:32 | ChiTotal | total:m1165_12 | -| ir.cpp:1165:32:1165:32 | StoreValue | r1165_15 | -| ir.cpp:1165:35:1165:35 | ChiPartial | partial:m1165_21 | -| ir.cpp:1165:35:1165:35 | ChiTotal | total:m1165_17 | -| ir.cpp:1165:35:1165:35 | StoreValue | r1165_20 | -| ir.cpp:1166:7:1166:7 | Address | &:r1166_1 | -| ir.cpp:1166:11:1166:13 | Left | r1166_2 | -| ir.cpp:1166:11:1166:16 | Address | &:r1166_5 | -| ir.cpp:1166:11:1166:16 | Load | ~m1165_22 | -| ir.cpp:1166:11:1166:16 | StoreValue | r1166_6 | -| ir.cpp:1166:15:1166:15 | Address | &:r1166_3 | -| ir.cpp:1166:15:1166:15 | Load | m1164_6 | -| ir.cpp:1166:15:1166:15 | Right | r1166_4 | -| ir.cpp:1167:3:1167:5 | Left | r1167_3 | -| ir.cpp:1167:3:1167:8 | Address | &:r1167_6 | -| ir.cpp:1167:3:1167:12 | ChiPartial | partial:m1167_7 | -| ir.cpp:1167:3:1167:12 | ChiTotal | total:m1165_22 | -| ir.cpp:1167:7:1167:7 | Address | &:r1167_4 | -| ir.cpp:1167:7:1167:7 | Load | m1164_6 | -| ir.cpp:1167:7:1167:7 | Right | r1167_5 | -| ir.cpp:1167:12:1167:12 | Address | &:r1167_1 | -| ir.cpp:1167:12:1167:12 | Load | m1166_7 | -| ir.cpp:1167:12:1167:12 | StoreValue | r1167_2 | -| ir.cpp:1168:18:1168:28 | Address | &:r1168_1 | -| ir.cpp:1168:32:1168:78 | Arg(2) | 2:r1168_6 | -| ir.cpp:1168:32:1168:78 | StoreValue | r1168_10 | -| ir.cpp:1168:56:1168:58 | Address | &:r1168_2 | -| ir.cpp:1168:56:1168:58 | Arg(0) | 0:r1168_3 | -| ir.cpp:1168:56:1168:58 | Load | m1167_8 | -| ir.cpp:1168:61:1168:63 | Address | &:r1168_4 | -| ir.cpp:1168:61:1168:63 | Arg(1) | 1:r1168_5 | -| ir.cpp:1168:61:1168:63 | Load | m1167_8 | -| ir.cpp:1168:71:1168:71 | Arg(3) | 3:r1168_7 | -| ir.cpp:1168:74:1168:74 | Arg(4) | 4:r1168_8 | -| ir.cpp:1168:77:1168:77 | Arg(5) | 5:r1168_9 | -| ir.cpp:1169:3:1169:5 | Address | &:r1169_6 | -| ir.cpp:1169:9:1169:11 | Address | &:r1169_1 | -| ir.cpp:1169:9:1169:11 | Left | r1169_2 | -| ir.cpp:1169:9:1169:11 | Load | m1167_8 | -| ir.cpp:1169:9:1169:25 | StoreValue | r1169_5 | -| ir.cpp:1169:15:1169:25 | Address | &:r1169_3 | -| ir.cpp:1169:15:1169:25 | Load | m1168_11 | -| ir.cpp:1169:15:1169:25 | Right | r1169_4 | -| ir.cpp:1174:5:1174:21 | Address | &:r1174_7 | -| ir.cpp:1174:5:1174:21 | ChiPartial | partial:m1174_3 | -| ir.cpp:1174:5:1174:21 | ChiTotal | total:m1174_2 | -| ir.cpp:1174:5:1174:21 | Load | m1177_4 | -| ir.cpp:1174:5:1174:21 | SideEffect | m1174_3 | -| ir.cpp:1174:27:1174:27 | Address | &:r1174_5 | -| ir.cpp:1175:7:1175:7 | Address | &:r1175_1 | -| ir.cpp:1176:3:1176:8 | CallTarget | func:r1176_1 | -| ir.cpp:1176:10:1176:11 | Address | &:r1176_4 | -| ir.cpp:1176:10:1176:11 | Arg(0) | 0:r1176_4 | -| ir.cpp:1176:10:1176:11 | ChiPartial | partial:m1176_11 | -| ir.cpp:1176:10:1176:11 | ChiTotal | total:m1175_2 | -| ir.cpp:1176:10:1176:11 | Unary | r1176_3 | -| ir.cpp:1176:11:1176:11 | Unary | r1176_2 | -| ir.cpp:1176:14:1176:15 | Address | &:r1176_7 | -| ir.cpp:1176:14:1176:15 | Arg(1) | 1:r1176_7 | -| ir.cpp:1176:14:1176:15 | SideEffect | ~m1174_6 | -| ir.cpp:1176:14:1176:15 | Unary | r1176_6 | -| ir.cpp:1176:15:1176:15 | Unary | r1176_5 | -| ir.cpp:1176:18:1176:28 | Arg(2) | 2:r1176_8 | -| ir.cpp:1176:18:1176:28 | BufferSize | r1176_8 | -| ir.cpp:1176:18:1176:28 | BufferSize | r1176_8 | -| ir.cpp:1177:3:1177:11 | Address | &:r1177_1 | -| ir.cpp:1177:10:1177:10 | Address | &:r1177_2 | -| ir.cpp:1177:10:1177:10 | Load | m1176_12 | -| ir.cpp:1177:10:1177:10 | StoreValue | r1177_3 | -| ir.cpp:1180:8:1180:23 | Address | &:r1180_5 | -| ir.cpp:1180:8:1180:23 | ChiPartial | partial:m1180_3 | -| ir.cpp:1180:8:1180:23 | ChiTotal | total:m1180_2 | -| ir.cpp:1180:8:1180:23 | Load | m1181_11 | -| ir.cpp:1180:8:1180:23 | SideEffect | ~m1181_8 | -| ir.cpp:1181:3:1181:23 | Address | &:r1181_1 | -| ir.cpp:1181:3:1181:23 | Address | &:r1181_1 | -| ir.cpp:1181:3:1181:23 | Arg(this) | this:r1181_1 | -| ir.cpp:1181:3:1181:23 | CallTarget | func:r1181_3 | -| ir.cpp:1181:3:1181:23 | ChiPartial | partial:m1181_7 | -| ir.cpp:1181:3:1181:23 | ChiPartial | partial:m1181_10 | -| ir.cpp:1181:3:1181:23 | ChiTotal | total:m1180_4 | -| ir.cpp:1181:3:1181:23 | ChiTotal | total:m1181_2 | -| ir.cpp:1181:3:1181:23 | SideEffect | ~m1180_4 | -| ir.cpp:1181:17:1181:21 | Address | &:r1181_5 | -| ir.cpp:1181:17:1181:21 | Arg(0) | 0:r1181_5 | -| ir.cpp:1181:17:1181:21 | SideEffect | ~m1180_3 | -| ir.cpp:1181:17:1181:21 | Unary | r1181_4 | -| ir.cpp:1184:6:1184:16 | ChiPartial | partial:m1184_3 | -| ir.cpp:1184:6:1184:16 | ChiTotal | total:m1184_2 | -| ir.cpp:1184:6:1184:16 | SideEffect | m1184_3 | -| ir.cpp:1184:22:1184:22 | Address | &:r1184_5 | -| ir.cpp:1185:9:1185:9 | Address | &:r1185_1 | -| ir.cpp:1185:12:1185:13 | StoreValue | r1185_2 | -| ir.cpp:1186:12:1186:12 | Address | &:r1186_1 | -| ir.cpp:1186:12:1186:12 | Condition | r1186_2 | -| ir.cpp:1186:12:1186:12 | Load | m1184_6 | -| ir.cpp:1188:9:1188:9 | Address | &:r1188_2 | -| ir.cpp:1188:13:1188:13 | StoreValue | r1188_1 | -| ir.cpp:1190:9:1190:9 | Address | &:r1190_2 | -| ir.cpp:1190:9:1190:9 | Phi | from 0:m1185_3 | -| ir.cpp:1190:9:1190:9 | Phi | from 1:m1188_3 | -| ir.cpp:1190:13:1190:13 | Address | &:r1190_3 | -| ir.cpp:1190:13:1190:13 | Load | m1190_1 | -| ir.cpp:1190:13:1190:13 | StoreValue | r1190_4 | -| ir.cpp:1193:6:1193:28 | ChiPartial | partial:m1193_3 | -| ir.cpp:1193:6:1193:28 | ChiTotal | total:m1193_2 | -| ir.cpp:1193:6:1193:28 | SideEffect | m1193_3 | -| ir.cpp:1193:34:1193:34 | Address | &:r1193_5 | +| ir.cpp:1126:6:1126:18 | ChiPartial | partial:m1126_3 | +| ir.cpp:1126:6:1126:18 | ChiTotal | total:m1126_2 | +| ir.cpp:1126:6:1126:18 | SideEffect | ~m1137_1 | +| ir.cpp:1126:44:1126:44 | Address | &:r1126_5 | +| ir.cpp:1126:44:1126:44 | Address | &:r1126_5 | +| ir.cpp:1126:44:1126:44 | Address | &:r1126_7 | +| ir.cpp:1126:44:1126:44 | Address | &:r1126_7 | +| ir.cpp:1126:44:1126:44 | Load | m1126_6 | +| ir.cpp:1126:44:1126:44 | SideEffect | m1126_8 | +| ir.cpp:1127:5:1127:5 | Address | &:r1127_1 | +| ir.cpp:1127:5:1127:5 | Address | &:r1127_7 | +| ir.cpp:1127:5:1127:5 | Address | &:r1127_15 | +| ir.cpp:1127:14:1127:14 | Address | &:r1127_38 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_2 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_8 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_16 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_41 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_47 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_47 | +| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_1 | +| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_3 | +| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_5 | +| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_6 | +| ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_13 | +| ir.cpp:1127:18:1127:18 | Arg(this) | this:r1127_47 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_10 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_18 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_26 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_27 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_40 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_48 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_12 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_20 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_30 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_32 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_35 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_42 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_50 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_53 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m0_7 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1126_4 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_13 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_23 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_24 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_31 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_36 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_43 | +| ir.cpp:1127:18:1127:18 | Condition | r1127_34 | +| ir.cpp:1127:18:1127:18 | Load | m1126_6 | +| ir.cpp:1127:18:1127:18 | Load | m1127_6 | +| ir.cpp:1127:18:1127:18 | Load | m1127_6 | +| ir.cpp:1127:18:1127:18 | Phi | from 0:m1127_14 | +| ir.cpp:1127:18:1127:18 | Phi | from 0:~m1127_21 | +| ir.cpp:1127:18:1127:18 | Phi | from 4:m1127_54 | +| ir.cpp:1127:18:1127:18 | Phi | from 4:~m1127_51 | +| ir.cpp:1127:18:1127:18 | SideEffect | m1127_23 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1126_4 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_13 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_24 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_31 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_36 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_43 | +| ir.cpp:1127:18:1127:18 | StoreValue | r1127_5 | +| ir.cpp:1127:18:1127:18 | StoreValue | r1127_11 | +| ir.cpp:1127:18:1127:18 | StoreValue | r1127_19 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_3 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_4 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_9 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_17 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_25 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_28 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_39 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_49 | +| ir.cpp:1127:18:1127:19 | Load | ~m1127_43 | +| ir.cpp:1127:18:1127:19 | StoreValue | r1127_44 | +| ir.cpp:1128:13:1128:13 | Address | &:r1128_1 | +| ir.cpp:1128:13:1128:13 | Left | r1128_2 | +| ir.cpp:1128:13:1128:13 | Load | m1127_45 | +| ir.cpp:1128:13:1128:17 | Condition | r1128_4 | +| ir.cpp:1128:17:1128:17 | Right | r1128_3 | +| ir.cpp:1133:5:1133:5 | Address | &:r1133_1 | +| ir.cpp:1133:5:1133:5 | Address | &:r1133_7 | +| ir.cpp:1133:5:1133:5 | Address | &:r1133_15 | +| ir.cpp:1133:21:1133:21 | Address | &:r1133_47 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_2 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_8 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_16 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_38 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_38 | +| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_15 | +| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_17 | +| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_19 | +| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_20 | +| ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_27 | +| ir.cpp:1133:25:1133:25 | Arg(this) | this:r1133_38 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_10 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_18 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_26 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_27 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_39 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_49 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_12 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_20 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_30 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_32 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_35 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_41 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_44 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_51 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m0_21 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1127_36 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_13 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_23 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_24 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_31 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_36 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_52 | +| ir.cpp:1133:25:1133:25 | Condition | r1133_34 | +| ir.cpp:1133:25:1133:25 | Load | m1126_6 | +| ir.cpp:1133:25:1133:25 | Load | m1133_6 | +| ir.cpp:1133:25:1133:25 | Load | m1133_6 | +| ir.cpp:1133:25:1133:25 | Phi | from 5:m1133_14 | +| ir.cpp:1133:25:1133:25 | Phi | from 5:~m1133_21 | +| ir.cpp:1133:25:1133:25 | Phi | from 7:m1133_45 | +| ir.cpp:1133:25:1133:25 | Phi | from 7:~m1133_42 | +| ir.cpp:1133:25:1133:25 | SideEffect | m1133_23 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1127_36 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_13 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_24 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_31 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_36 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_52 | +| ir.cpp:1133:25:1133:25 | StoreValue | r1133_5 | +| ir.cpp:1133:25:1133:25 | StoreValue | r1133_11 | +| ir.cpp:1133:25:1133:25 | StoreValue | r1133_19 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_3 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_4 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_9 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_17 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_25 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_28 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_40 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_48 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_50 | +| ir.cpp:1133:25:1133:26 | StoreValue | r1133_55 | +| ir.cpp:1133:25:1133:26 | Unary | r1133_53 | +| ir.cpp:1133:25:1133:26 | Unary | r1133_54 | +| ir.cpp:1134:13:1134:13 | Address | &:r1134_1 | +| ir.cpp:1134:13:1134:13 | Address | &:r1134_2 | +| ir.cpp:1134:13:1134:13 | Left | r1134_3 | +| ir.cpp:1134:13:1134:13 | Load | m1133_56 | +| ir.cpp:1134:13:1134:13 | Load | ~m1133_52 | +| ir.cpp:1134:13:1134:17 | Condition | r1134_5 | +| ir.cpp:1134:17:1134:17 | Right | r1134_4 | +| ir.cpp:1137:5:1137:5 | Phi | from 6:~m1133_36 | +| ir.cpp:1137:5:1137:5 | Phi | from 9:~m1133_52 | +| ir.cpp:1157:5:1157:11 | Address | &:r1157_7 | +| ir.cpp:1157:5:1157:11 | ChiPartial | partial:m1157_3 | +| ir.cpp:1157:5:1157:11 | ChiTotal | total:m1157_2 | +| ir.cpp:1157:5:1157:11 | Load | m1159_4 | +| ir.cpp:1157:5:1157:11 | SideEffect | ~m1158_2 | +| ir.cpp:1157:17:1157:17 | Address | &:r1157_5 | +| ir.cpp:1158:3:1158:14 | ChiPartial | partial:m1158_1 | +| ir.cpp:1158:3:1158:14 | ChiTotal | total:m1157_4 | +| ir.cpp:1158:3:1158:14 | SideEffect | ~m1157_4 | +| ir.cpp:1159:3:1159:11 | Address | &:r1159_1 | +| ir.cpp:1159:10:1159:10 | Address | &:r1159_2 | +| ir.cpp:1159:10:1159:10 | Load | m1157_6 | +| ir.cpp:1159:10:1159:10 | StoreValue | r1159_3 | +| ir.cpp:1162:13:1162:30 | ChiPartial | partial:m1162_3 | +| ir.cpp:1162:13:1162:30 | ChiTotal | total:m1162_2 | +| ir.cpp:1162:13:1162:30 | SideEffect | ~m1164_2 | +| ir.cpp:1162:46:1162:46 | Address | &:r1162_5 | +| ir.cpp:1162:46:1162:46 | Address | &:r1162_5 | +| ir.cpp:1162:46:1162:46 | Address | &:r1162_7 | +| ir.cpp:1162:46:1162:46 | Address | &:r1162_7 | +| ir.cpp:1162:46:1162:46 | Load | m1162_6 | +| ir.cpp:1162:46:1162:46 | SideEffect | m1162_8 | +| ir.cpp:1162:62:1162:62 | Address | &:r1162_9 | +| ir.cpp:1162:79:1162:79 | Address | &:r1162_11 | +| ir.cpp:1162:79:1162:79 | Address | &:r1162_11 | +| ir.cpp:1162:79:1162:79 | Address | &:r1162_13 | +| ir.cpp:1162:79:1162:79 | Address | &:r1162_13 | +| ir.cpp:1162:79:1162:79 | Load | m1162_12 | +| ir.cpp:1162:79:1162:79 | SideEffect | m1162_14 | +| ir.cpp:1162:95:1162:95 | Address | &:r1162_15 | +| ir.cpp:1164:3:1168:6 | ChiPartial | partial:m1164_1 | +| ir.cpp:1164:3:1168:6 | ChiTotal | total:m1162_4 | +| ir.cpp:1164:3:1168:6 | SideEffect | ~m1162_4 | +| ir.cpp:1167:13:1167:13 | Address | &:r1167_1 | +| ir.cpp:1167:13:1167:13 | AsmOperand(0) | 0:r1167_3 | +| ir.cpp:1167:13:1167:13 | Load | m1162_6 | +| ir.cpp:1167:13:1167:13 | Unary | r1167_2 | +| ir.cpp:1167:23:1167:23 | AsmOperand(1) | 1:r1167_4 | +| ir.cpp:1167:33:1167:33 | Address | &:r1167_5 | +| ir.cpp:1167:33:1167:33 | Address | &:r1167_6 | +| ir.cpp:1167:33:1167:33 | AsmOperand(2) | 2:r1167_7 | +| ir.cpp:1167:33:1167:33 | Load | m1162_12 | +| ir.cpp:1167:33:1167:33 | Load | ~m1162_14 | +| ir.cpp:1167:42:1167:42 | Address | &:r1167_8 | +| ir.cpp:1167:42:1167:42 | AsmOperand(3) | 3:r1167_9 | +| ir.cpp:1167:42:1167:42 | Load | m1162_16 | +| ir.cpp:1171:6:1171:23 | ChiPartial | partial:m1171_3 | +| ir.cpp:1171:6:1171:23 | ChiTotal | total:m1171_2 | +| ir.cpp:1171:6:1171:23 | SideEffect | m1171_3 | +| ir.cpp:1174:9:1174:9 | Address | &:r1174_1 | +| ir.cpp:1175:9:1175:9 | Address | &:r1175_1 | +| ir.cpp:1176:29:1176:29 | Address | &:r1176_1 | +| ir.cpp:1186:6:1186:30 | ChiPartial | partial:m1186_3 | +| ir.cpp:1186:6:1186:30 | ChiTotal | total:m1186_2 | +| ir.cpp:1186:6:1186:30 | SideEffect | m1186_3 | +| ir.cpp:1188:5:1188:20 | Address | &:r1188_1 | +| ir.cpp:1188:5:1188:20 | Address | &:r1188_5 | +| ir.cpp:1188:5:1188:20 | Address | &:r1188_10 | +| ir.cpp:1188:5:1188:20 | Address | &:r1188_10 | +| ir.cpp:1188:5:1188:20 | Condition | r1188_8 | +| ir.cpp:1188:5:1188:20 | Left | r1188_6 | +| ir.cpp:1188:5:1188:20 | Left | r1188_11 | +| ir.cpp:1188:5:1188:20 | Load | m1188_4 | +| ir.cpp:1188:5:1188:20 | Load | m1188_4 | +| ir.cpp:1188:5:1188:20 | Phi | from 0:m1188_3 | +| ir.cpp:1188:5:1188:20 | Phi | from 2:m1188_14 | +| ir.cpp:1188:5:1188:20 | Right | r1188_7 | +| ir.cpp:1188:5:1188:20 | Right | r1188_12 | +| ir.cpp:1188:5:1188:20 | StoreValue | r1188_2 | +| ir.cpp:1188:5:1188:20 | StoreValue | r1188_13 | +| ir.cpp:1191:6:1191:23 | ChiPartial | partial:m1191_3 | +| ir.cpp:1191:6:1191:23 | ChiTotal | total:m1191_2 | +| ir.cpp:1191:6:1191:23 | Phi | from 2:~m1191_10 | +| ir.cpp:1191:6:1191:23 | Phi | from 7:~m1203_8 | +| ir.cpp:1191:6:1191:23 | Phi | from 8:~m1191_4 | +| ir.cpp:1191:6:1191:23 | Phi | from 10:~m1191_4 | +| ir.cpp:1191:6:1191:23 | SideEffect | ~m1191_7 | +| ir.cpp:1191:30:1191:30 | Address | &:r1191_5 | +| ir.cpp:1193:9:1193:9 | Address | &:r1193_1 | +| ir.cpp:1193:12:1193:13 | StoreValue | r1193_2 | | ir.cpp:1194:9:1194:9 | Address | &:r1194_1 | -| ir.cpp:1194:12:1194:13 | StoreValue | r1194_2 | -| ir.cpp:1195:12:1195:12 | Address | &:r1195_1 | -| ir.cpp:1195:12:1195:12 | Condition | r1195_2 | -| ir.cpp:1195:12:1195:12 | Load | m1193_6 | -| ir.cpp:1197:9:1197:9 | Address | &:r1197_2 | -| ir.cpp:1197:13:1197:13 | StoreValue | r1197_1 | -| ir.cpp:1199:9:1199:9 | Address | &:r1199_2 | -| ir.cpp:1199:13:1199:13 | StoreValue | r1199_1 | -| ir.cpp:1201:9:1201:9 | Address | &:r1201_2 | -| ir.cpp:1201:9:1201:9 | Phi | from 0:m1194_3 | -| ir.cpp:1201:9:1201:9 | Phi | from 2:m1199_3 | -| ir.cpp:1201:13:1201:13 | Address | &:r1201_3 | -| ir.cpp:1201:13:1201:13 | Load | m1201_1 | -| ir.cpp:1201:13:1201:13 | StoreValue | r1201_4 | -| ir.cpp:1204:6:1204:16 | ChiPartial | partial:m1204_3 | -| ir.cpp:1204:6:1204:16 | ChiTotal | total:m1204_2 | -| ir.cpp:1204:6:1204:16 | SideEffect | m1204_3 | -| ir.cpp:1204:22:1204:22 | Address | &:r1204_5 | -| ir.cpp:1205:9:1205:9 | Address | &:r1205_1 | -| ir.cpp:1205:12:1205:13 | StoreValue | r1205_2 | -| ir.cpp:1206:12:1206:12 | Address | &:r1206_1 | -| ir.cpp:1206:12:1206:12 | Condition | r1206_2 | -| ir.cpp:1206:12:1206:12 | Load | m1204_6 | -| ir.cpp:1208:9:1208:9 | Address | &:r1208_2 | -| ir.cpp:1208:13:1208:13 | StoreValue | r1208_1 | -| ir.cpp:1211:9:1211:9 | Address | &:r1211_2 | -| ir.cpp:1211:13:1211:13 | StoreValue | r1211_1 | -| ir.cpp:1212:5:1212:5 | Phi | from 0:m1205_3 | -| ir.cpp:1212:5:1212:5 | Phi | from 1:m1208_3 | -| ir.cpp:1212:5:1212:5 | Phi | from 2:m1211_3 | -| ir.cpp:1213:9:1213:9 | Address | &:r1213_1 | -| ir.cpp:1213:13:1213:13 | Address | &:r1213_2 | -| ir.cpp:1213:13:1213:13 | Load | m1212_1 | -| ir.cpp:1213:13:1213:13 | StoreValue | r1213_3 | -| ir.cpp:1216:6:1216:24 | ChiPartial | partial:m1216_3 | -| ir.cpp:1216:6:1216:24 | ChiTotal | total:m1216_2 | -| ir.cpp:1216:6:1216:24 | SideEffect | m1216_3 | -| ir.cpp:1216:30:1216:30 | Address | &:r1216_5 | -| ir.cpp:1217:9:1217:9 | Address | &:r1217_1 | -| ir.cpp:1217:12:1217:13 | StoreValue | r1217_2 | -| ir.cpp:1218:12:1218:12 | Address | &:r1218_1 | -| ir.cpp:1218:12:1218:12 | Condition | r1218_2 | -| ir.cpp:1218:12:1218:12 | Load | m1216_6 | -| ir.cpp:1220:13:1220:13 | Address | &:r1220_2 | -| ir.cpp:1220:17:1220:17 | StoreValue | r1220_1 | -| ir.cpp:1224:13:1224:13 | Address | &:r1224_2 | -| ir.cpp:1224:17:1224:17 | StoreValue | r1224_1 | -| ir.cpp:1228:13:1228:13 | Address | &:r1228_2 | -| ir.cpp:1228:17:1228:17 | StoreValue | r1228_1 | -| ir.cpp:1229:5:1229:5 | Phi | from 1:m1220_3 | -| ir.cpp:1229:5:1229:5 | Phi | from 2:m1224_3 | -| ir.cpp:1229:5:1229:5 | Phi | from 3:m1228_3 | -| ir.cpp:1230:9:1230:9 | Address | &:r1230_1 | -| ir.cpp:1230:13:1230:13 | Address | &:r1230_2 | -| ir.cpp:1230:13:1230:13 | Load | m1229_1 | -| ir.cpp:1230:13:1230:13 | StoreValue | r1230_3 | -| ir.cpp:1233:5:1233:19 | Address | &:r1233_7 | -| ir.cpp:1233:5:1233:19 | ChiPartial | partial:m1233_3 | -| ir.cpp:1233:5:1233:19 | ChiTotal | total:m1233_2 | -| ir.cpp:1233:5:1233:19 | Load | m1239_15 | -| ir.cpp:1233:5:1233:19 | SideEffect | ~m1239_2 | -| ir.cpp:1233:25:1233:25 | Address | &:r1233_5 | -| ir.cpp:1234:16:1234:16 | Address | &:r1234_3 | -| ir.cpp:1234:16:1234:16 | SideEffect | ~m1234_6 | -| ir.cpp:1234:20:1234:20 | ChiPartial | partial:m1234_5 | -| ir.cpp:1234:20:1234:20 | ChiTotal | total:m1234_2 | -| ir.cpp:1234:20:1234:20 | StoreValue | r1234_4 | -| ir.cpp:1235:16:1235:16 | Address | &:r1235_3 | -| ir.cpp:1235:16:1235:16 | SideEffect | ~m1235_6 | -| ir.cpp:1235:20:1235:28 | ChiPartial | partial:m1235_5 | -| ir.cpp:1235:20:1235:28 | ChiTotal | total:m1235_2 | -| ir.cpp:1235:20:1235:28 | StoreValue | r1235_4 | -| ir.cpp:1236:16:1236:16 | Address | &:r1236_1 | -| ir.cpp:1236:16:1236:16 | Address | &:r1236_1 | -| ir.cpp:1236:16:1236:16 | Address | &:r1236_4 | -| ir.cpp:1236:16:1236:16 | ChiPartial | partial:m1236_10 | -| ir.cpp:1236:16:1236:16 | ChiTotal | total:m1236_8 | -| ir.cpp:1236:16:1236:16 | Condition | r1236_2 | -| ir.cpp:1236:16:1236:16 | Load | ~m1233_3 | -| ir.cpp:1236:16:1236:16 | StoreValue | r1236_9 | -| ir.cpp:1236:20:1236:20 | Address | &:r1236_5 | -| ir.cpp:1236:20:1236:20 | ChiPartial | partial:m1236_7 | -| ir.cpp:1236:20:1236:20 | ChiTotal | total:m1233_4 | -| ir.cpp:1236:20:1236:20 | Load | m1233_6 | -| ir.cpp:1236:20:1236:20 | StoreValue | r1236_6 | -| ir.cpp:1239:5:1239:25 | Address | &:r1239_3 | -| ir.cpp:1239:5:1239:25 | Phi | from 0:~m1233_3 | -| ir.cpp:1239:5:1239:25 | Phi | from 0:~m1233_4 | -| ir.cpp:1239:5:1239:25 | Phi | from 1:m1236_7 | -| ir.cpp:1239:5:1239:25 | Phi | from 1:~m1236_11 | -| ir.cpp:1239:12:1239:12 | Address | &:r1239_4 | -| ir.cpp:1239:12:1239:12 | Left | r1239_5 | -| ir.cpp:1239:12:1239:12 | Load | ~m1239_2 | -| ir.cpp:1239:12:1239:16 | Left | r1239_8 | -| ir.cpp:1239:12:1239:20 | Left | r1239_11 | -| ir.cpp:1239:12:1239:24 | StoreValue | r1239_14 | -| ir.cpp:1239:16:1239:16 | Address | &:r1239_6 | -| ir.cpp:1239:16:1239:16 | Load | ~m1239_2 | -| ir.cpp:1239:16:1239:16 | Right | r1239_7 | -| ir.cpp:1239:20:1239:20 | Address | &:r1239_9 | -| ir.cpp:1239:20:1239:20 | Load | m1239_1 | -| ir.cpp:1239:20:1239:20 | Right | r1239_10 | -| ir.cpp:1239:24:1239:24 | Address | &:r1239_12 | -| ir.cpp:1239:24:1239:24 | Load | ~m1239_2 | -| ir.cpp:1239:24:1239:24 | Right | r1239_13 | -| ir.cpp:1242:6:1242:31 | ChiPartial | partial:m1242_3 | -| ir.cpp:1242:6:1242:31 | ChiTotal | total:m1242_2 | -| ir.cpp:1242:6:1242:31 | SideEffect | ~m1246_1 | -| ir.cpp:1242:45:1242:51 | Address | &:r1242_5 | -| ir.cpp:1242:45:1242:51 | Address | &:r1242_5 | -| ir.cpp:1242:45:1242:51 | Address | &:r1242_7 | -| ir.cpp:1242:45:1242:51 | Address | &:r1242_7 | -| ir.cpp:1242:45:1242:51 | Load | m1242_6 | -| ir.cpp:1242:45:1242:51 | SideEffect | m1242_8 | -| ir.cpp:1243:19:1243:19 | Address | &:r1243_1 | -| ir.cpp:1243:19:1243:19 | Address | &:r1243_1 | -| ir.cpp:1243:19:1243:19 | Address | &:r1243_4 | -| ir.cpp:1243:19:1243:19 | Arg(this) | this:r1243_4 | -| ir.cpp:1243:19:1243:19 | ChiPartial | partial:m1243_6 | -| ir.cpp:1243:19:1243:19 | ChiTotal | total:m0_6 | -| ir.cpp:1243:19:1243:19 | Condition | r1243_2 | -| ir.cpp:1243:19:1243:19 | Load | ~m1242_3 | -| ir.cpp:1243:19:1243:19 | StoreValue | r1243_5 | -| ir.cpp:1244:19:1244:19 | Address | &:r1244_2 | -| ir.cpp:1244:19:1244:19 | Address | &:r1244_2 | -| ir.cpp:1244:19:1244:19 | Address | &:r1244_5 | -| ir.cpp:1244:19:1244:19 | Arg(this) | this:r1244_5 | -| ir.cpp:1244:19:1244:19 | ChiPartial | partial:m1244_16 | -| ir.cpp:1244:19:1244:19 | ChiTotal | total:m1244_14 | -| ir.cpp:1244:19:1244:19 | Condition | r1244_3 | -| ir.cpp:1244:19:1244:19 | Load | ~m1244_1 | -| ir.cpp:1244:19:1244:19 | Phi | from 0:~m1242_4 | -| ir.cpp:1244:19:1244:19 | Phi | from 1:~m1243_7 | -| ir.cpp:1244:19:1244:19 | StoreValue | r1244_15 | -| ir.cpp:1244:20:1244:29 | CallTarget | func:r1244_6 | -| ir.cpp:1244:20:1244:29 | ChiPartial | partial:m1244_10 | -| ir.cpp:1244:20:1244:29 | ChiPartial | partial:m1244_13 | -| ir.cpp:1244:20:1244:29 | ChiTotal | total:m1244_1 | -| ir.cpp:1244:20:1244:29 | ChiTotal | total:m1244_11 | -| ir.cpp:1244:20:1244:29 | SideEffect | ~m1244_1 | -| ir.cpp:1244:21:1244:28 | Address | &:r1244_8 | -| ir.cpp:1244:21:1244:28 | Arg(0) | 0:r1244_8 | -| ir.cpp:1244:21:1244:28 | SideEffect | ~m1242_3 | -| ir.cpp:1244:21:1244:28 | Unary | r1244_7 | -| ir.cpp:1245:19:1245:19 | Address | &:r1245_2 | -| ir.cpp:1245:19:1245:19 | Address | &:r1245_2 | -| ir.cpp:1245:19:1245:19 | Address | &:r1245_5 | -| ir.cpp:1245:19:1245:19 | Arg(this) | this:r1245_5 | -| ir.cpp:1245:19:1245:19 | ChiPartial | partial:m1245_16 | -| ir.cpp:1245:19:1245:19 | ChiTotal | total:m1245_14 | -| ir.cpp:1245:19:1245:19 | Condition | r1245_3 | -| ir.cpp:1245:19:1245:19 | Load | ~m1245_1 | -| ir.cpp:1245:19:1245:19 | Phi | from 2:~m1244_1 | -| ir.cpp:1245:19:1245:19 | Phi | from 3:~m1244_17 | -| ir.cpp:1245:19:1245:19 | StoreValue | r1245_15 | -| ir.cpp:1245:20:1245:28 | CallTarget | func:r1245_6 | -| ir.cpp:1245:20:1245:28 | ChiPartial | partial:m1245_10 | -| ir.cpp:1245:20:1245:28 | ChiPartial | partial:m1245_13 | -| ir.cpp:1245:20:1245:28 | ChiTotal | total:m1245_1 | -| ir.cpp:1245:20:1245:28 | ChiTotal | total:m1245_11 | -| ir.cpp:1245:20:1245:28 | SideEffect | ~m1245_1 | -| ir.cpp:1245:21:1245:27 | Address | &:r1245_7 | -| ir.cpp:1245:21:1245:27 | Address | &:r1245_8 | -| ir.cpp:1245:21:1245:27 | Arg(0) | 0:r1245_8 | -| ir.cpp:1245:21:1245:27 | Load | m1242_6 | -| ir.cpp:1245:21:1245:27 | SideEffect | ~m1242_8 | -| ir.cpp:1246:1:1246:1 | Phi | from 4:~m1245_1 | -| ir.cpp:1246:1:1246:1 | Phi | from 5:~m1245_17 | -| ir.cpp:1253:6:1253:17 | ChiPartial | partial:m1253_3 | -| ir.cpp:1253:6:1253:17 | ChiTotal | total:m1253_2 | -| ir.cpp:1253:6:1253:17 | SideEffect | m1253_3 | -| ir.cpp:1253:25:1253:26 | Address | &:r1253_5 | -| ir.cpp:1253:25:1253:26 | Address | &:r1253_5 | -| ir.cpp:1253:25:1253:26 | Address | &:r1253_7 | -| ir.cpp:1253:25:1253:26 | Address | &:r1253_7 | -| ir.cpp:1253:25:1253:26 | Load | m1253_6 | -| ir.cpp:1253:25:1253:26 | SideEffect | m1253_8 | -| ir.cpp:1253:35:1253:36 | Address | &:r1253_9 | -| ir.cpp:1253:35:1253:36 | Address | &:r1253_9 | -| ir.cpp:1253:35:1253:36 | Address | &:r1253_11 | -| ir.cpp:1253:35:1253:36 | Address | &:r1253_11 | -| ir.cpp:1253:35:1253:36 | Load | m1253_10 | -| ir.cpp:1253:35:1253:36 | SideEffect | m1253_12 | -| ir.cpp:1254:10:1254:15 | Address | &:r1254_1 | -| ir.cpp:1254:10:1254:15 | Left | r1254_1 | -| ir.cpp:1254:10:1254:15 | Left | r1254_1 | -| ir.cpp:1254:24:1254:27 | Address | &:r1254_4 | -| ir.cpp:1254:24:1254:27 | Address | &:r1254_9 | -| ir.cpp:1254:24:1254:27 | ChiPartial | partial:m1254_11 | -| ir.cpp:1254:24:1254:27 | ChiTotal | total:m1254_7 | -| ir.cpp:1254:24:1254:27 | Right | r1254_3 | -| ir.cpp:1254:24:1254:27 | Right | r1254_8 | -| ir.cpp:1254:24:1254:27 | StoreValue | r1254_10 | -| ir.cpp:1254:26:1254:26 | ChiPartial | partial:m1254_6 | -| ir.cpp:1254:26:1254:26 | ChiTotal | total:m1254_2 | -| ir.cpp:1254:26:1254:26 | StoreValue | r1254_5 | -| ir.cpp:1256:5:1256:10 | CallTarget | func:r1256_1 | -| ir.cpp:1256:12:1256:17 | Address | &:r1256_3 | -| ir.cpp:1256:12:1256:17 | Arg(0) | 0:r1256_3 | -| ir.cpp:1256:12:1256:17 | ChiPartial | partial:m1256_9 | -| ir.cpp:1256:12:1256:17 | ChiTotal | total:m1254_12 | -| ir.cpp:1256:12:1256:17 | Unary | r1256_2 | -| ir.cpp:1256:20:1256:21 | Address | &:r1256_4 | -| ir.cpp:1256:20:1256:21 | Address | &:r1256_6 | -| ir.cpp:1256:20:1256:21 | Arg(1) | 1:r1256_6 | -| ir.cpp:1256:20:1256:21 | Load | m1253_6 | -| ir.cpp:1256:20:1256:21 | SideEffect | ~m1253_8 | -| ir.cpp:1256:20:1256:21 | Unary | r1256_5 | -| ir.cpp:1257:5:1257:10 | CallTarget | func:r1257_1 | -| ir.cpp:1257:12:1257:17 | Address | &:r1257_3 | -| ir.cpp:1257:12:1257:17 | Address | &:r1257_3 | -| ir.cpp:1257:12:1257:17 | Arg(0) | 0:r1257_3 | -| ir.cpp:1257:12:1257:17 | ChiPartial | partial:m1257_10 | -| ir.cpp:1257:12:1257:17 | ChiTotal | total:m1256_10 | -| ir.cpp:1257:12:1257:17 | SideEffect | ~m1256_10 | -| ir.cpp:1257:12:1257:17 | Unary | r1257_2 | -| ir.cpp:1257:20:1257:21 | Address | &:r1257_4 | -| ir.cpp:1257:20:1257:21 | Address | &:r1257_6 | -| ir.cpp:1257:20:1257:21 | Arg(1) | 1:r1257_6 | -| ir.cpp:1257:20:1257:21 | Load | m1253_10 | -| ir.cpp:1257:20:1257:21 | SideEffect | ~m1253_12 | -| ir.cpp:1257:20:1257:21 | Unary | r1257_5 | -| ir.cpp:1263:17:1263:29 | ChiPartial | partial:m1263_3 | -| ir.cpp:1263:17:1263:29 | ChiTotal | total:m1263_2 | -| ir.cpp:1263:17:1263:29 | SideEffect | m1263_3 | -| ir.cpp:1263:34:1263:34 | Address | &:r1263_5 | -| ir.cpp:1263:34:1263:34 | Address | &:r1263_5 | -| ir.cpp:1263:34:1263:34 | Address | &:r1263_7 | -| ir.cpp:1263:34:1263:34 | Address | &:r1263_7 | -| ir.cpp:1263:34:1263:34 | Load | m1263_6 | -| ir.cpp:1263:34:1263:34 | SideEffect | m1264_7 | -| ir.cpp:1263:41:1263:41 | Address | &:r1263_9 | -| ir.cpp:1264:9:1264:9 | Address | &:r1264_3 | -| ir.cpp:1264:9:1264:9 | Load | m1263_6 | -| ir.cpp:1264:9:1264:9 | Unary | r1264_4 | -| ir.cpp:1264:9:1264:21 | ChiPartial | partial:m1264_6 | -| ir.cpp:1264:9:1264:21 | ChiTotal | total:m1263_8 | -| ir.cpp:1264:12:1264:17 | Address | &:r1264_5 | -| ir.cpp:1264:21:1264:21 | Address | &:r1264_1 | -| ir.cpp:1264:21:1264:21 | Load | m1263_10 | -| ir.cpp:1264:21:1264:21 | StoreValue | r1264_2 | -| ir.cpp:1272:6:1272:33 | ChiPartial | partial:m1272_3 | -| ir.cpp:1272:6:1272:33 | ChiTotal | total:m1272_2 | -| ir.cpp:1272:6:1272:33 | SideEffect | ~m1289_6 | -| ir.cpp:1272:39:1272:45 | Address | &:r1272_5 | -| ir.cpp:1272:51:1272:55 | Address | &:r1272_7 | -| ir.cpp:1272:51:1272:55 | Address | &:r1272_7 | -| ir.cpp:1272:51:1272:55 | Address | &:r1272_9 | -| ir.cpp:1272:51:1272:55 | Address | &:r1272_9 | -| ir.cpp:1272:51:1272:55 | Load | m1272_8 | -| ir.cpp:1272:51:1272:55 | SideEffect | m1283_12 | -| ir.cpp:1273:7:1273:7 | Address | &:r1273_1 | -| ir.cpp:1273:7:1273:7 | Address | &:r1273_1 | -| ir.cpp:1273:7:1273:7 | Arg(this) | this:r1273_1 | -| ir.cpp:1273:7:1273:7 | CallTarget | func:r1273_3 | -| ir.cpp:1273:7:1273:7 | ChiPartial | partial:m1273_5 | -| ir.cpp:1273:7:1273:7 | ChiPartial | partial:m1273_7 | -| ir.cpp:1273:7:1273:7 | ChiTotal | total:m1272_4 | -| ir.cpp:1273:7:1273:7 | ChiTotal | total:m1273_2 | -| ir.cpp:1273:7:1273:7 | SideEffect | ~m1272_4 | -| ir.cpp:1274:7:1274:26 | CallTarget | func:r1274_2 | -| ir.cpp:1274:7:1274:26 | ChiPartial | partial:m1274_5 | -| ir.cpp:1274:7:1274:26 | ChiTotal | total:m1273_6 | -| ir.cpp:1274:7:1274:26 | SideEffect | ~m1273_6 | -| ir.cpp:1274:28:1274:29 | Arg(0) | 0:r1274_3 | -| ir.cpp:1275:5:1275:27 | CallTarget | func:r1275_1 | -| ir.cpp:1275:5:1275:27 | ChiPartial | partial:m1275_4 | -| ir.cpp:1275:5:1275:27 | ChiTotal | total:m1274_6 | -| ir.cpp:1275:5:1275:27 | SideEffect | ~m1274_6 | -| ir.cpp:1275:29:1275:30 | Arg(0) | 0:r1275_2 | -| ir.cpp:1277:7:1277:7 | Address | &:r1277_1 | -| ir.cpp:1278:7:1278:19 | CallTarget | func:r1278_2 | -| ir.cpp:1278:7:1278:19 | ChiPartial | partial:m1278_8 | -| ir.cpp:1278:7:1278:19 | ChiTotal | total:m1275_5 | -| ir.cpp:1278:7:1278:19 | SideEffect | ~m1275_5 | -| ir.cpp:1278:21:1278:22 | Address | &:r1278_4 | -| ir.cpp:1278:21:1278:22 | Address | &:r1278_4 | -| ir.cpp:1278:21:1278:22 | Arg(0) | 0:r1278_4 | -| ir.cpp:1278:21:1278:22 | ChiPartial | partial:m1278_11 | -| ir.cpp:1278:21:1278:22 | ChiTotal | total:m1277_2 | -| ir.cpp:1278:21:1278:22 | SideEffect | ~m1277_2 | -| ir.cpp:1278:22:1278:22 | Unary | r1278_3 | -| ir.cpp:1278:25:1278:31 | Address | &:r1278_5 | -| ir.cpp:1278:25:1278:31 | Arg(1) | 1:r1278_6 | -| ir.cpp:1278:25:1278:31 | Load | m1272_6 | -| ir.cpp:1279:5:1279:20 | CallTarget | func:r1279_1 | -| ir.cpp:1279:5:1279:20 | ChiPartial | partial:m1279_7 | -| ir.cpp:1279:5:1279:20 | ChiTotal | total:m1278_9 | -| ir.cpp:1279:5:1279:20 | SideEffect | ~m1278_9 | -| ir.cpp:1279:22:1279:23 | Address | &:r1279_3 | -| ir.cpp:1279:22:1279:23 | Address | &:r1279_3 | -| ir.cpp:1279:22:1279:23 | Arg(0) | 0:r1279_3 | -| ir.cpp:1279:22:1279:23 | ChiPartial | partial:m1279_10 | -| ir.cpp:1279:22:1279:23 | ChiTotal | total:m1278_12 | -| ir.cpp:1279:22:1279:23 | SideEffect | ~m1278_12 | -| ir.cpp:1279:23:1279:23 | Unary | r1279_2 | -| ir.cpp:1279:26:1279:32 | Address | &:r1279_4 | -| ir.cpp:1279:26:1279:32 | Arg(1) | 1:r1279_5 | -| ir.cpp:1279:26:1279:32 | Load | m1272_6 | -| ir.cpp:1281:7:1281:7 | Unary | r1281_1 | -| ir.cpp:1281:11:1281:23 | CallTarget | func:r1281_3 | -| ir.cpp:1281:11:1281:23 | ChiPartial | partial:m1281_11 | -| ir.cpp:1281:11:1281:23 | ChiTotal | total:m1279_8 | -| ir.cpp:1281:11:1281:23 | SideEffect | ~m1279_8 | -| ir.cpp:1281:25:1281:29 | Address | &:r1281_4 | -| ir.cpp:1281:25:1281:29 | Address | &:r1281_5 | -| ir.cpp:1281:25:1281:29 | Address | &:r1281_5 | -| ir.cpp:1281:25:1281:29 | Arg(0) | 0:r1281_5 | -| ir.cpp:1281:25:1281:29 | ChiPartial | partial:m1281_14 | -| ir.cpp:1281:25:1281:29 | ChiTotal | total:m1272_10 | -| ir.cpp:1281:25:1281:29 | Load | m1272_8 | -| ir.cpp:1281:25:1281:29 | SideEffect | ~m1272_10 | -| ir.cpp:1281:32:1281:38 | Address | &:r1281_6 | -| ir.cpp:1281:32:1281:38 | Left | r1281_7 | -| ir.cpp:1281:32:1281:38 | Load | m1272_6 | -| ir.cpp:1281:32:1281:42 | Arg(1) | 1:r1281_9 | -| ir.cpp:1281:42:1281:42 | Right | r1281_8 | -| ir.cpp:1282:7:1282:11 | Address | &:r1282_1 | -| ir.cpp:1282:7:1282:11 | Load | m1272_8 | -| ir.cpp:1282:7:1282:11 | Unary | r1282_2 | -| ir.cpp:1282:14:1282:26 | CallTarget | func:r1282_4 | -| ir.cpp:1282:14:1282:26 | ChiPartial | partial:m1282_9 | -| ir.cpp:1282:14:1282:26 | ChiTotal | total:m1281_12 | -| ir.cpp:1282:14:1282:26 | SideEffect | ~m1281_12 | -| ir.cpp:1282:28:1282:29 | Address | &:r1282_6 | -| ir.cpp:1282:28:1282:29 | Address | &:r1282_6 | -| ir.cpp:1282:28:1282:29 | Arg(0) | 0:r1282_6 | -| ir.cpp:1282:28:1282:29 | ChiPartial | partial:m1282_12 | -| ir.cpp:1282:28:1282:29 | ChiTotal | total:m1279_11 | -| ir.cpp:1282:28:1282:29 | SideEffect | ~m1279_11 | -| ir.cpp:1282:29:1282:29 | Unary | r1282_5 | -| ir.cpp:1282:32:1282:33 | Arg(1) | 1:r1282_7 | -| ir.cpp:1283:5:1283:9 | Address | &:r1283_1 | -| ir.cpp:1283:5:1283:9 | Load | m1272_8 | -| ir.cpp:1283:12:1283:24 | CallTarget | func:r1283_3 | -| ir.cpp:1283:12:1283:24 | ChiPartial | partial:m1283_8 | -| ir.cpp:1283:12:1283:24 | ChiTotal | total:m1282_10 | -| ir.cpp:1283:12:1283:24 | SideEffect | ~m1282_10 | -| ir.cpp:1283:26:1283:30 | Address | &:r1283_4 | -| ir.cpp:1283:26:1283:30 | Address | &:r1283_5 | -| ir.cpp:1283:26:1283:30 | Address | &:r1283_5 | -| ir.cpp:1283:26:1283:30 | Arg(0) | 0:r1283_5 | -| ir.cpp:1283:26:1283:30 | ChiPartial | partial:m1283_11 | -| ir.cpp:1283:26:1283:30 | ChiTotal | total:m1281_15 | -| ir.cpp:1283:26:1283:30 | Load | m1272_8 | -| ir.cpp:1283:26:1283:30 | SideEffect | ~m1281_15 | -| ir.cpp:1283:33:1283:34 | Arg(1) | 1:r1283_6 | -| ir.cpp:1285:7:1285:31 | CallTarget | func:r1285_2 | -| ir.cpp:1285:7:1285:31 | ChiPartial | partial:m1285_4 | -| ir.cpp:1285:7:1285:31 | ChiTotal | total:m1283_9 | -| ir.cpp:1285:7:1285:31 | SideEffect | ~m1283_9 | -| ir.cpp:1286:5:1286:32 | CallTarget | func:r1286_1 | -| ir.cpp:1286:5:1286:32 | ChiPartial | partial:m1286_3 | -| ir.cpp:1286:5:1286:32 | ChiTotal | total:m1285_5 | -| ir.cpp:1286:5:1286:32 | SideEffect | ~m1285_5 | -| ir.cpp:1288:5:1288:20 | CallTarget | func:r1288_1 | -| ir.cpp:1288:5:1288:20 | ChiPartial | partial:m1288_3 | -| ir.cpp:1288:5:1288:20 | ChiTotal | total:m1286_4 | -| ir.cpp:1288:5:1288:20 | SideEffect | ~m1286_4 | -| ir.cpp:1288:25:1288:49 | CallTarget | func:r1288_5 | -| ir.cpp:1288:25:1288:49 | ChiPartial | partial:m1288_7 | -| ir.cpp:1288:25:1288:49 | ChiTotal | total:m1288_4 | -| ir.cpp:1288:25:1288:49 | SideEffect | ~m1288_4 | -| ir.cpp:1289:1:1289:1 | Address | &:r1289_2 | -| ir.cpp:1289:1:1289:1 | Address | &:r1289_2 | -| ir.cpp:1289:1:1289:1 | Arg(this) | this:r1289_2 | -| ir.cpp:1289:1:1289:1 | CallTarget | func:r1289_3 | -| ir.cpp:1289:1:1289:1 | ChiPartial | partial:m1289_5 | -| ir.cpp:1289:1:1289:1 | ChiPartial | partial:m1289_8 | -| ir.cpp:1289:1:1289:1 | ChiTotal | total:m1273_8 | -| ir.cpp:1289:1:1289:1 | ChiTotal | total:m1288_8 | -| ir.cpp:1289:1:1289:1 | SideEffect | m1273_8 | -| ir.cpp:1289:1:1289:1 | SideEffect | ~m1288_8 | -| ir.cpp:1291:5:1291:22 | Address | &:r1291_10 | -| ir.cpp:1291:5:1291:22 | ChiPartial | partial:m1291_3 | -| ir.cpp:1291:5:1291:22 | ChiTotal | total:m1291_2 | -| ir.cpp:1291:5:1291:22 | Load | m1291_9 | -| ir.cpp:1291:5:1291:22 | Phi | from 2:m1293_4 | -| ir.cpp:1291:5:1291:22 | Phi | from 3:m1295_2 | -| ir.cpp:1291:5:1291:22 | SideEffect | m1291_3 | -| ir.cpp:1291:29:1291:29 | Address | &:r1291_5 | -| ir.cpp:1291:36:1291:36 | Address | &:r1291_7 | -| ir.cpp:1292:9:1292:9 | Address | &:r1292_1 | -| ir.cpp:1292:9:1292:9 | Condition | r1292_2 | -| ir.cpp:1292:9:1292:9 | Load | m1291_6 | -| ir.cpp:1293:9:1293:17 | Address | &:r1293_1 | -| ir.cpp:1293:16:1293:16 | Address | &:r1293_2 | -| ir.cpp:1293:16:1293:16 | Load | m1291_8 | -| ir.cpp:1293:16:1293:16 | StoreValue | r1293_3 | -| ir.cpp:1295:1:1295:1 | Address | &:r1295_1 | -| ir.cpp:1297:6:1297:15 | ChiPartial | partial:m1297_3 | -| ir.cpp:1297:6:1297:15 | ChiTotal | total:m1297_2 | -| ir.cpp:1297:6:1297:15 | SideEffect | ~m1298_8 | -| ir.cpp:1297:21:1297:21 | Address | &:r1297_5 | -| ir.cpp:1297:28:1297:28 | Address | &:r1297_7 | -| ir.cpp:1298:12:1298:21 | CallTarget | func:r1298_1 | -| ir.cpp:1298:12:1298:21 | ChiPartial | partial:m1298_7 | -| ir.cpp:1298:12:1298:21 | ChiTotal | total:m1297_4 | -| ir.cpp:1298:12:1298:21 | SideEffect | ~m1297_4 | -| ir.cpp:1298:23:1298:23 | Address | &:r1298_2 | -| ir.cpp:1298:23:1298:23 | Arg(0) | 0:r1298_3 | -| ir.cpp:1298:23:1298:23 | Load | m1297_6 | -| ir.cpp:1298:26:1298:26 | Address | &:r1298_4 | -| ir.cpp:1298:26:1298:26 | Arg(1) | 1:r1298_5 | -| ir.cpp:1298:26:1298:26 | Load | m1297_8 | -| ir.cpp:1301:6:1301:25 | ChiPartial | partial:m1301_3 | -| ir.cpp:1301:6:1301:25 | ChiTotal | total:m1301_2 | -| ir.cpp:1301:6:1301:25 | SideEffect | m1301_3 | -| ir.cpp:1301:32:1301:32 | Address | &:r1301_5 | -| ir.cpp:1301:39:1301:39 | Address | &:r1301_7 | -| ir.cpp:1301:47:1301:47 | Address | &:r1301_9 | -| ir.cpp:1302:9:1302:9 | Address | &:r1302_1 | -| ir.cpp:1302:13:1302:13 | Address | &:r1302_2 | -| ir.cpp:1302:13:1302:13 | Load | m1301_8 | -| ir.cpp:1302:13:1302:13 | StoreValue | r1302_3 | -| ir.cpp:1303:5:1303:5 | Address | &:r1303_7 | -| ir.cpp:1303:9:1303:9 | Address | &:r1303_1 | -| ir.cpp:1303:9:1303:9 | Condition | r1303_2 | -| ir.cpp:1303:9:1303:9 | Load | m1301_6 | -| ir.cpp:1303:9:1303:9 | StoreValue | r1303_2 | -| ir.cpp:1303:9:1303:14 | Address | &:r1303_5 | -| ir.cpp:1303:9:1303:14 | Address | &:r1303_9 | -| ir.cpp:1303:9:1303:14 | Address | &:r1303_13 | -| ir.cpp:1303:9:1303:14 | Load | m1303_4 | -| ir.cpp:1303:9:1303:14 | Phi | from 2:m1303_10 | -| ir.cpp:1303:9:1303:14 | Phi | from 3:m1303_14 | -| ir.cpp:1303:9:1303:14 | StoreValue | r1303_6 | -| ir.cpp:1303:14:1303:14 | Address | &:r1303_11 | -| ir.cpp:1303:14:1303:14 | Load | m1301_8 | -| ir.cpp:1303:14:1303:14 | StoreValue | r1303_12 | -| ir.cpp:1304:5:1304:5 | Address | &:r1304_8 | -| ir.cpp:1304:9:1304:9 | Address | &:r1304_1 | -| ir.cpp:1304:9:1304:9 | Condition | r1304_2 | -| ir.cpp:1304:9:1304:9 | Load | m1301_6 | -| ir.cpp:1304:9:1304:9 | StoreValue | r1304_2 | -| ir.cpp:1304:9:1304:14 | Address | &:r1304_5 | -| ir.cpp:1304:9:1304:14 | Address | &:r1304_10 | -| ir.cpp:1304:9:1304:14 | Address | &:r1304_14 | -| ir.cpp:1304:9:1304:14 | Load | m1304_4 | -| ir.cpp:1304:9:1304:14 | Phi | from 5:m1304_11 | -| ir.cpp:1304:9:1304:14 | Phi | from 6:m1304_15 | -| ir.cpp:1304:9:1304:14 | StoreValue | r1304_7 | -| ir.cpp:1304:9:1304:14 | Unary | r1304_6 | -| ir.cpp:1304:14:1304:14 | Address | &:r1304_12 | -| ir.cpp:1304:14:1304:14 | Load | m1301_10 | -| ir.cpp:1304:14:1304:14 | StoreValue | r1304_13 | -| ir.cpp:1305:5:1305:5 | Address | &:r1305_9 | -| ir.cpp:1305:9:1305:9 | Address | &:r1305_1 | -| ir.cpp:1305:9:1305:9 | Condition | r1305_4 | -| ir.cpp:1305:9:1305:9 | Left | r1305_2 | -| ir.cpp:1305:9:1305:9 | Load | m1301_8 | -| ir.cpp:1305:9:1305:9 | Right | r1305_3 | -| ir.cpp:1305:9:1305:9 | StoreValue | r1305_2 | -| ir.cpp:1305:9:1305:14 | Address | &:r1305_7 | -| ir.cpp:1305:9:1305:14 | Address | &:r1305_11 | -| ir.cpp:1305:9:1305:14 | Address | &:r1305_15 | -| ir.cpp:1305:9:1305:14 | Load | m1305_6 | -| ir.cpp:1305:9:1305:14 | Phi | from 8:m1305_12 | -| ir.cpp:1305:9:1305:14 | Phi | from 9:m1305_16 | -| ir.cpp:1305:9:1305:14 | StoreValue | r1305_8 | -| ir.cpp:1305:14:1305:14 | Address | &:r1305_13 | -| ir.cpp:1305:14:1305:14 | Load | m1301_8 | -| ir.cpp:1305:14:1305:14 | StoreValue | r1305_14 | -| ir.cpp:1306:5:1306:5 | Address | &:r1306_10 | -| ir.cpp:1306:9:1306:9 | Address | &:r1306_1 | -| ir.cpp:1306:9:1306:9 | Condition | r1306_4 | -| ir.cpp:1306:9:1306:9 | Left | r1306_2 | -| ir.cpp:1306:9:1306:9 | Load | m1301_8 | -| ir.cpp:1306:9:1306:9 | Right | r1306_3 | -| ir.cpp:1306:9:1306:9 | StoreValue | r1306_2 | -| ir.cpp:1306:9:1306:14 | Address | &:r1306_7 | -| ir.cpp:1306:9:1306:14 | Address | &:r1306_12 | -| ir.cpp:1306:9:1306:14 | Address | &:r1306_16 | -| ir.cpp:1306:9:1306:14 | Load | m1306_6 | -| ir.cpp:1306:9:1306:14 | Phi | from 11:m1306_13 | -| ir.cpp:1306:9:1306:14 | Phi | from 12:m1306_17 | -| ir.cpp:1306:9:1306:14 | StoreValue | r1306_9 | -| ir.cpp:1306:9:1306:14 | Unary | r1306_8 | -| ir.cpp:1306:14:1306:14 | Address | &:r1306_14 | -| ir.cpp:1306:14:1306:14 | Load | m1301_10 | -| ir.cpp:1306:14:1306:14 | StoreValue | r1306_15 | -| ir.cpp:1307:5:1307:5 | Address | &:r1307_10 | -| ir.cpp:1307:9:1307:9 | Address | &:r1307_1 | -| ir.cpp:1307:9:1307:9 | Condition | r1307_4 | -| ir.cpp:1307:9:1307:9 | Left | r1307_2 | -| ir.cpp:1307:9:1307:9 | Load | m1301_10 | -| ir.cpp:1307:9:1307:9 | Right | r1307_3 | -| ir.cpp:1307:9:1307:9 | StoreValue | r1307_2 | -| ir.cpp:1307:9:1307:14 | Address | &:r1307_7 | -| ir.cpp:1307:9:1307:14 | Address | &:r1307_12 | -| ir.cpp:1307:9:1307:14 | Address | &:r1307_17 | -| ir.cpp:1307:9:1307:14 | Load | m1307_6 | -| ir.cpp:1307:9:1307:14 | Phi | from 14:m1307_13 | -| ir.cpp:1307:9:1307:14 | Phi | from 15:m1307_18 | -| ir.cpp:1307:9:1307:14 | StoreValue | r1307_9 | -| ir.cpp:1307:9:1307:14 | Unary | r1307_8 | -| ir.cpp:1307:14:1307:14 | Address | &:r1307_14 | -| ir.cpp:1307:14:1307:14 | Load | m1301_8 | -| ir.cpp:1307:14:1307:14 | StoreValue | r1307_16 | -| ir.cpp:1307:14:1307:14 | Unary | r1307_15 | -| ir.cpp:1308:5:1308:5 | Address | &:r1308_10 | -| ir.cpp:1308:9:1308:9 | Address | &:r1308_1 | -| ir.cpp:1308:9:1308:9 | Condition | r1308_4 | -| ir.cpp:1308:9:1308:9 | Left | r1308_2 | -| ir.cpp:1308:9:1308:9 | Load | m1301_10 | -| ir.cpp:1308:9:1308:9 | Right | r1308_3 | -| ir.cpp:1308:9:1308:9 | StoreValue | r1308_2 | -| ir.cpp:1308:9:1308:14 | Address | &:r1308_7 | -| ir.cpp:1308:9:1308:14 | Address | &:r1308_12 | -| ir.cpp:1308:9:1308:14 | Address | &:r1308_16 | -| ir.cpp:1308:9:1308:14 | Load | m1308_6 | -| ir.cpp:1308:9:1308:14 | Phi | from 17:m1308_13 | -| ir.cpp:1308:9:1308:14 | Phi | from 18:m1308_17 | -| ir.cpp:1308:9:1308:14 | StoreValue | r1308_9 | -| ir.cpp:1308:9:1308:14 | Unary | r1308_8 | -| ir.cpp:1308:14:1308:14 | Address | &:r1308_14 | -| ir.cpp:1308:14:1308:14 | Load | m1301_10 | -| ir.cpp:1308:14:1308:14 | StoreValue | r1308_15 | -| ir.cpp:1310:5:1310:5 | Address | &:r1310_9 | -| ir.cpp:1310:9:1310:26 | Address | &:r1310_7 | -| ir.cpp:1310:9:1310:26 | Address | &:r1310_11 | -| ir.cpp:1310:9:1310:26 | Address | &:r1310_33 | -| ir.cpp:1310:9:1310:26 | Load | m1310_6 | -| ir.cpp:1310:9:1310:26 | Phi | from 20:m1310_12 | -| ir.cpp:1310:9:1310:26 | Phi | from 26:m1310_34 | -| ir.cpp:1310:9:1310:26 | StoreValue | r1310_8 | -| ir.cpp:1310:10:1310:10 | Address | &:r1310_1 | -| ir.cpp:1310:10:1310:10 | Condition | r1310_4 | -| ir.cpp:1310:10:1310:10 | Left | r1310_2 | -| ir.cpp:1310:10:1310:10 | Load | m1301_8 | -| ir.cpp:1310:10:1310:10 | Right | r1310_3 | -| ir.cpp:1310:10:1310:20 | Address | &:r1310_13 | -| ir.cpp:1310:10:1310:20 | Address | &:r1310_17 | -| ir.cpp:1310:10:1310:20 | Address | &:r1310_20 | -| ir.cpp:1310:10:1310:20 | Condition | r1310_18 | -| ir.cpp:1310:10:1310:20 | Load | m1310_16 | -| ir.cpp:1310:10:1310:20 | Phi | from 21:m1310_15 | -| ir.cpp:1310:10:1310:20 | Phi | from 23:m1310_22 | -| ir.cpp:1310:10:1310:20 | StoreValue | r1310_14 | -| ir.cpp:1310:10:1310:20 | StoreValue | r1310_18 | -| ir.cpp:1310:10:1310:20 | StoreValue | r1310_21 | -| ir.cpp:1310:15:1310:15 | Address | &:r1310_23 | -| ir.cpp:1310:15:1310:15 | Condition | r1310_24 | -| ir.cpp:1310:15:1310:15 | Load | m1301_6 | -| ir.cpp:1310:20:1310:20 | Address | &:r1310_26 | -| ir.cpp:1310:20:1310:20 | Condition | r1310_29 | -| ir.cpp:1310:20:1310:20 | Left | r1310_27 | -| ir.cpp:1310:20:1310:20 | Load | m1301_10 | -| ir.cpp:1310:20:1310:20 | Right | r1310_28 | -| ir.cpp:1310:26:1310:26 | Address | &:r1310_31 | -| ir.cpp:1310:26:1310:26 | Load | m1301_8 | -| ir.cpp:1310:26:1310:26 | StoreValue | r1310_32 | -| ir.cpp:1316:5:1316:27 | Address | &:r1316_9 | -| ir.cpp:1316:5:1316:27 | ChiPartial | partial:m1316_3 | -| ir.cpp:1316:5:1316:27 | ChiTotal | total:m1316_2 | -| ir.cpp:1316:5:1316:27 | Load | m1317_11 | -| ir.cpp:1316:5:1316:27 | SideEffect | ~m1317_7 | -| ir.cpp:1316:33:1316:33 | Address | &:r1316_5 | -| ir.cpp:1316:40:1316:40 | Address | &:r1316_7 | -| ir.cpp:1317:5:1317:48 | Address | &:r1317_1 | -| ir.cpp:1317:12:1317:21 | CallTarget | func:r1317_2 | -| ir.cpp:1317:12:1317:21 | ChiPartial | partial:m1317_4 | -| ir.cpp:1317:12:1317:21 | ChiTotal | total:m1316_4 | -| ir.cpp:1317:12:1317:21 | Condition | r1317_3 | -| ir.cpp:1317:12:1317:21 | SideEffect | ~m1316_4 | -| ir.cpp:1317:12:1317:47 | Address | &:r1317_9 | -| ir.cpp:1317:12:1317:47 | Address | &:r1317_19 | -| ir.cpp:1317:12:1317:47 | Address | &:r1317_24 | -| ir.cpp:1317:12:1317:47 | Load | m1317_8 | -| ir.cpp:1317:12:1317:47 | Phi | from 3:m1317_20 | -| ir.cpp:1317:12:1317:47 | Phi | from 3:~m1317_15 | -| ir.cpp:1317:12:1317:47 | Phi | from 4:m1317_25 | -| ir.cpp:1317:12:1317:47 | Phi | from 4:~m1317_21 | -| ir.cpp:1317:12:1317:47 | StoreValue | r1317_10 | -| ir.cpp:1317:28:1317:37 | CallTarget | func:r1317_12 | -| ir.cpp:1317:28:1317:37 | ChiPartial | partial:m1317_14 | -| ir.cpp:1317:28:1317:37 | ChiTotal | total:m1317_5 | -| ir.cpp:1317:28:1317:37 | Condition | r1317_13 | -| ir.cpp:1317:28:1317:37 | SideEffect | ~m1317_5 | -| ir.cpp:1317:43:1317:43 | Address | &:r1317_17 | -| ir.cpp:1317:43:1317:43 | Load | m1316_6 | -| ir.cpp:1317:43:1317:43 | StoreValue | r1317_18 | -| ir.cpp:1317:47:1317:47 | Address | &:r1317_22 | -| ir.cpp:1317:47:1317:47 | Load | m1316_8 | -| ir.cpp:1317:47:1317:47 | Phi | from 0:~m1317_5 | -| ir.cpp:1317:47:1317:47 | Phi | from 2:~m1317_15 | -| ir.cpp:1317:47:1317:47 | StoreValue | r1317_23 | -| ir.cpp:1322:6:1322:6 | ChiPartial | partial:m1322_3 | -| ir.cpp:1322:6:1322:6 | ChiTotal | total:m1322_2 | -| ir.cpp:1322:6:1322:6 | SideEffect | ~m1324_8 | -| ir.cpp:1322:13:1322:13 | Address | &:r1322_5 | -| ir.cpp:1322:13:1322:13 | Address | &:r1322_5 | -| ir.cpp:1322:13:1322:13 | Address | &:r1322_7 | -| ir.cpp:1322:13:1322:13 | Address | &:r1322_7 | -| ir.cpp:1322:13:1322:13 | Load | m1322_6 | -| ir.cpp:1322:13:1322:13 | SideEffect | m1322_8 | -| ir.cpp:1324:3:1324:13 | Address | &:r1324_6 | -| ir.cpp:1324:3:1324:13 | Arg(0) | 0:r1324_2 | -| ir.cpp:1324:3:1324:13 | CallTarget | func:r1324_1 | -| ir.cpp:1324:3:1324:13 | ChiPartial | partial:m1324_7 | -| ir.cpp:1324:3:1324:13 | ChiTotal | total:m1322_4 | -| ir.cpp:1324:3:1324:13 | SideEffect | ~m1322_4 | -| ir.cpp:1324:3:1324:13 | Unary | r1324_6 | -| ir.cpp:1324:8:1324:8 | Address | &:r1324_3 | -| ir.cpp:1324:8:1324:8 | Arg(1) | 1:r1324_5 | -| ir.cpp:1324:8:1324:8 | Load | m1322_6 | -| ir.cpp:1324:8:1324:8 | Unary | r1324_4 | -| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | -| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | -| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | -| ir.cpp:1328:3:1328:3 | Address | &:r1328_5 | -| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | -| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | -| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | -| ir.cpp:1328:3:1328:3 | ChiPartial | partial:m1328_3 | -| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | -| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | -| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | -| ir.cpp:1328:3:1328:3 | ChiTotal | total:m1328_2 | -| ir.cpp:1328:3:1328:3 | Load | m1329_3 | -| ir.cpp:1328:3:1328:3 | Load | m1329_3 | -| ir.cpp:1328:3:1328:3 | Load | m1329_8 | -| ir.cpp:1328:3:1328:3 | Load | m1329_8 | -| ir.cpp:1328:3:1328:3 | SideEffect | m1328_3 | -| ir.cpp:1328:3:1328:3 | SideEffect | m1328_3 | -| ir.cpp:1328:3:1328:3 | SideEffect | ~m1329_6 | -| ir.cpp:1328:3:1328:3 | SideEffect | ~m1329_6 | -| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | -| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | -| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | -| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | -| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | -| ir.cpp:1329:5:1329:15 | Address | &:r1329_1 | -| ir.cpp:1329:5:1329:15 | Arg(this) | this:r1329_1 | -| ir.cpp:1329:5:1329:15 | Arg(this) | this:r1329_1 | -| ir.cpp:1329:5:1329:15 | CallTarget | func:r1329_3 | -| ir.cpp:1329:5:1329:15 | CallTarget | func:r1329_3 | -| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_5 | -| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_5 | -| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_7 | -| ir.cpp:1329:5:1329:15 | ChiPartial | partial:m1329_7 | -| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1328_4 | -| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1328_4 | -| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1329_2 | -| ir.cpp:1329:5:1329:15 | ChiTotal | total:m1329_2 | -| ir.cpp:1329:5:1329:15 | SideEffect | ~m1328_4 | -| ir.cpp:1329:5:1329:15 | SideEffect | ~m1328_4 | -| ir.cpp:1329:5:1329:15 | StoreValue | r1329_2 | -| ir.cpp:1329:5:1329:15 | StoreValue | r1329_2 | -| ir.cpp:1367:6:1367:21 | ChiPartial | partial:m1367_3 | -| ir.cpp:1367:6:1367:21 | ChiTotal | total:m1367_2 | -| ir.cpp:1367:6:1367:21 | SideEffect | ~m1379_6 | -| ir.cpp:1368:12:1368:12 | Address | &:r1368_1 | -| ir.cpp:1368:16:1368:34 | CallTarget | func:r1368_2 | -| ir.cpp:1368:16:1368:34 | ChiPartial | partial:m1368_4 | -| ir.cpp:1368:16:1368:34 | ChiTotal | total:m1367_4 | -| ir.cpp:1368:16:1368:34 | SideEffect | ~m1367_4 | -| ir.cpp:1368:16:1368:34 | StoreValue | r1368_3 | -| ir.cpp:1369:19:1369:20 | Address | &:r1369_1 | -| ir.cpp:1369:24:1369:42 | CallTarget | func:r1369_3 | -| ir.cpp:1369:24:1369:42 | ChiPartial | partial:m1369_5 | -| ir.cpp:1369:24:1369:42 | ChiTotal | total:m1368_5 | -| ir.cpp:1369:24:1369:42 | SideEffect | ~m1368_5 | -| ir.cpp:1369:24:1369:42 | StoreValue | r1369_4 | -| ir.cpp:1369:24:1369:44 | Address | &:r1369_2 | -| ir.cpp:1369:24:1369:44 | StoreValue | r1369_9 | -| ir.cpp:1369:24:1369:44 | Unary | r1369_2 | -| ir.cpp:1369:24:1369:44 | Unary | r1369_8 | -| ir.cpp:1371:5:1371:13 | CallTarget | func:r1371_1 | -| ir.cpp:1371:5:1371:13 | ChiPartial | partial:m1371_6 | -| ir.cpp:1371:5:1371:13 | ChiTotal | total:m1369_6 | -| ir.cpp:1371:5:1371:13 | SideEffect | ~m1369_6 | -| ir.cpp:1371:15:1371:15 | Address | &:r1371_4 | -| ir.cpp:1371:15:1371:15 | Arg(0) | 0:r1371_4 | -| ir.cpp:1371:15:1371:15 | SideEffect | ~m1368_6 | -| ir.cpp:1371:15:1371:15 | Unary | r1371_2 | -| ir.cpp:1371:15:1371:15 | Unary | r1371_3 | -| ir.cpp:1372:5:1372:21 | CallTarget | func:r1372_1 | -| ir.cpp:1372:5:1372:21 | ChiPartial | partial:m1372_15 | -| ir.cpp:1372:5:1372:21 | ChiTotal | total:m1372_9 | -| ir.cpp:1372:5:1372:21 | SideEffect | ~m1372_9 | -| ir.cpp:1372:23:1372:27 | Address | &:r1372_2 | -| ir.cpp:1372:23:1372:27 | Address | &:r1372_2 | -| ir.cpp:1372:23:1372:27 | Address | &:r1372_6 | -| ir.cpp:1372:23:1372:27 | Address | &:r1372_13 | -| ir.cpp:1372:23:1372:27 | Arg(0) | 0:r1372_6 | -| ir.cpp:1372:23:1372:27 | Arg(0) | 0:r1372_13 | -| ir.cpp:1372:23:1372:27 | Arg(this) | this:r1372_2 | -| ir.cpp:1372:23:1372:27 | CallTarget | func:r1372_4 | -| ir.cpp:1372:23:1372:27 | ChiPartial | partial:m1372_8 | -| ir.cpp:1372:23:1372:27 | ChiPartial | partial:m1372_11 | -| ir.cpp:1372:23:1372:27 | ChiTotal | total:m1371_7 | -| ir.cpp:1372:23:1372:27 | ChiTotal | total:m1372_3 | -| ir.cpp:1372:23:1372:27 | SideEffect | ~m1367_3 | -| ir.cpp:1372:23:1372:27 | SideEffect | ~m1371_7 | -| ir.cpp:1372:23:1372:27 | SideEffect | ~m1372_12 | -| ir.cpp:1372:23:1372:27 | Unary | r1372_2 | -| ir.cpp:1372:23:1372:27 | Unary | r1372_5 | -| ir.cpp:1373:5:1373:15 | CallTarget | func:r1373_1 | -| ir.cpp:1373:5:1373:15 | ChiPartial | partial:m1373_16 | -| ir.cpp:1373:5:1373:15 | ChiTotal | total:m1373_10 | -| ir.cpp:1373:5:1373:15 | SideEffect | ~m1373_10 | -| ir.cpp:1373:17:1373:17 | Address | &:r1373_2 | -| ir.cpp:1373:17:1373:17 | Address | &:r1373_2 | -| ir.cpp:1373:17:1373:17 | Address | &:r1373_2 | -| ir.cpp:1373:17:1373:17 | Address | &:r1373_7 | -| ir.cpp:1373:17:1373:17 | Arg(0) | 0:r1373_7 | -| ir.cpp:1373:17:1373:17 | Arg(0) | 0:r1373_14 | -| ir.cpp:1373:17:1373:17 | Arg(this) | this:r1373_2 | -| ir.cpp:1373:17:1373:17 | CallTarget | func:r1373_4 | -| ir.cpp:1373:17:1373:17 | ChiPartial | partial:m1373_9 | -| ir.cpp:1373:17:1373:17 | ChiPartial | partial:m1373_12 | -| ir.cpp:1373:17:1373:17 | ChiTotal | total:m1372_16 | -| ir.cpp:1373:17:1373:17 | ChiTotal | total:m1373_3 | -| ir.cpp:1373:17:1373:17 | Load | m1373_13 | -| ir.cpp:1373:17:1373:17 | SideEffect | ~m1368_6 | -| ir.cpp:1373:17:1373:17 | SideEffect | ~m1372_16 | -| ir.cpp:1373:17:1373:17 | Unary | r1373_5 | -| ir.cpp:1373:17:1373:17 | Unary | r1373_6 | -| ir.cpp:1374:5:1374:23 | CallTarget | func:r1374_1 | -| ir.cpp:1374:5:1374:23 | ChiPartial | partial:m1374_15 | -| ir.cpp:1374:5:1374:23 | ChiTotal | total:m1374_9 | -| ir.cpp:1374:5:1374:23 | SideEffect | ~m1374_9 | -| ir.cpp:1374:25:1374:29 | Address | &:r1374_2 | -| ir.cpp:1374:25:1374:29 | Address | &:r1374_2 | -| ir.cpp:1374:25:1374:29 | Address | &:r1374_2 | -| ir.cpp:1374:25:1374:29 | Address | &:r1374_6 | -| ir.cpp:1374:25:1374:29 | Arg(0) | 0:r1374_6 | -| ir.cpp:1374:25:1374:29 | Arg(0) | 0:r1374_13 | -| ir.cpp:1374:25:1374:29 | Arg(this) | this:r1374_2 | -| ir.cpp:1374:25:1374:29 | CallTarget | func:r1374_4 | -| ir.cpp:1374:25:1374:29 | ChiPartial | partial:m1374_8 | -| ir.cpp:1374:25:1374:29 | ChiPartial | partial:m1374_11 | -| ir.cpp:1374:25:1374:29 | ChiTotal | total:m1373_17 | -| ir.cpp:1374:25:1374:29 | ChiTotal | total:m1374_3 | -| ir.cpp:1374:25:1374:29 | Load | m1374_12 | -| ir.cpp:1374:25:1374:29 | SideEffect | ~m1367_3 | -| ir.cpp:1374:25:1374:29 | SideEffect | ~m1373_17 | -| ir.cpp:1374:25:1374:29 | Unary | r1374_5 | -| ir.cpp:1375:5:1375:12 | Address | &:r1375_1 | -| ir.cpp:1375:5:1375:12 | Address | &:r1375_1 | -| ir.cpp:1375:5:1375:12 | Address | &:r1375_9 | -| ir.cpp:1375:5:1375:12 | Arg(this) | this:r1375_1 | -| ir.cpp:1375:5:1375:12 | Arg(this) | this:r1375_9 | -| ir.cpp:1375:5:1375:12 | CallTarget | func:r1375_3 | -| ir.cpp:1375:5:1375:12 | ChiPartial | partial:m1375_5 | -| ir.cpp:1375:5:1375:12 | ChiPartial | partial:m1375_7 | -| ir.cpp:1375:5:1375:12 | ChiTotal | total:m1374_16 | -| ir.cpp:1375:5:1375:12 | ChiTotal | total:m1375_2 | -| ir.cpp:1375:5:1375:12 | SideEffect | m1375_8 | -| ir.cpp:1375:5:1375:12 | SideEffect | ~m1374_16 | -| ir.cpp:1375:5:1375:12 | Unary | r1375_1 | -| ir.cpp:1375:14:1375:18 | CallTarget | func:r1375_10 | -| ir.cpp:1375:14:1375:18 | ChiPartial | partial:m1375_12 | -| ir.cpp:1375:14:1375:18 | ChiTotal | total:m1375_6 | -| ir.cpp:1375:14:1375:18 | SideEffect | ~m1375_6 | -| ir.cpp:1376:5:1376:23 | CallTarget | func:r1376_2 | -| ir.cpp:1376:5:1376:23 | ChiPartial | partial:m1376_4 | -| ir.cpp:1376:5:1376:23 | ChiTotal | total:m1375_13 | -| ir.cpp:1376:5:1376:23 | SideEffect | ~m1375_13 | -| ir.cpp:1376:5:1376:23 | StoreValue | r1376_3 | -| ir.cpp:1376:5:1376:25 | Address | &:r1376_1 | -| ir.cpp:1376:5:1376:25 | Address | &:r1376_7 | -| ir.cpp:1376:5:1376:25 | Arg(this) | this:r1376_7 | -| ir.cpp:1376:5:1376:25 | SideEffect | m1376_6 | -| ir.cpp:1376:5:1376:25 | Unary | r1376_1 | -| ir.cpp:1376:27:1376:31 | CallTarget | func:r1376_8 | -| ir.cpp:1376:27:1376:31 | ChiPartial | partial:m1376_10 | -| ir.cpp:1376:27:1376:31 | ChiTotal | total:m1376_5 | -| ir.cpp:1376:27:1376:31 | SideEffect | ~m1376_5 | -| ir.cpp:1378:5:1378:28 | CallTarget | func:r1378_2 | -| ir.cpp:1378:5:1378:28 | ChiPartial | partial:m1378_4 | -| ir.cpp:1378:5:1378:28 | ChiTotal | total:m1376_11 | -| ir.cpp:1378:5:1378:28 | SideEffect | ~m1376_11 | -| ir.cpp:1378:5:1378:28 | StoreValue | r1378_3 | -| ir.cpp:1378:5:1378:30 | Address | &:r1378_1 | -| ir.cpp:1379:1:1379:1 | Address | &:r1379_2 | -| ir.cpp:1379:1:1379:1 | Address | &:r1379_2 | -| ir.cpp:1379:1:1379:1 | Arg(this) | this:r1379_2 | -| ir.cpp:1379:1:1379:1 | CallTarget | func:r1379_3 | -| ir.cpp:1379:1:1379:1 | ChiPartial | partial:m1379_5 | -| ir.cpp:1379:1:1379:1 | ChiPartial | partial:m1379_8 | -| ir.cpp:1379:1:1379:1 | ChiTotal | total:m1368_6 | -| ir.cpp:1379:1:1379:1 | ChiTotal | total:m1378_5 | -| ir.cpp:1379:1:1379:1 | SideEffect | m1368_6 | -| ir.cpp:1379:1:1379:1 | SideEffect | ~m1378_5 | -| ir.cpp:1381:6:1381:30 | ChiPartial | partial:m1381_3 | -| ir.cpp:1381:6:1381:30 | ChiTotal | total:m1381_2 | -| ir.cpp:1381:6:1381:30 | SideEffect | ~m1391_14 | -| ir.cpp:1382:21:1382:21 | Address | &:r1382_1 | -| ir.cpp:1382:25:1382:52 | CallTarget | func:r1382_2 | -| ir.cpp:1382:25:1382:52 | ChiPartial | partial:m1382_4 | -| ir.cpp:1382:25:1382:52 | ChiTotal | total:m1381_4 | -| ir.cpp:1382:25:1382:52 | SideEffect | ~m1381_4 | -| ir.cpp:1382:25:1382:52 | StoreValue | r1382_3 | -| ir.cpp:1383:28:1383:29 | Address | &:r1383_1 | -| ir.cpp:1383:33:1383:60 | CallTarget | func:r1383_3 | -| ir.cpp:1383:33:1383:60 | ChiPartial | partial:m1383_5 | -| ir.cpp:1383:33:1383:60 | ChiTotal | total:m1382_5 | -| ir.cpp:1383:33:1383:60 | SideEffect | ~m1382_5 | -| ir.cpp:1383:33:1383:60 | StoreValue | r1383_4 | -| ir.cpp:1383:33:1383:62 | Address | &:r1383_2 | -| ir.cpp:1383:33:1383:62 | StoreValue | r1383_9 | -| ir.cpp:1383:33:1383:62 | Unary | r1383_2 | -| ir.cpp:1383:33:1383:62 | Unary | r1383_8 | -| ir.cpp:1384:21:1384:22 | Address | &:r1384_1 | -| ir.cpp:1385:5:1385:13 | CallTarget | func:r1385_1 | -| ir.cpp:1385:5:1385:13 | ChiPartial | partial:m1385_6 | -| ir.cpp:1385:5:1385:13 | ChiTotal | total:m1383_6 | -| ir.cpp:1385:5:1385:13 | SideEffect | ~m1383_6 | -| ir.cpp:1385:15:1385:15 | Address | &:r1385_4 | -| ir.cpp:1385:15:1385:15 | Arg(0) | 0:r1385_4 | -| ir.cpp:1385:15:1385:15 | SideEffect | ~m1382_6 | -| ir.cpp:1385:15:1385:15 | Unary | r1385_2 | -| ir.cpp:1385:15:1385:15 | Unary | r1385_3 | -| ir.cpp:1386:5:1386:15 | CallTarget | func:r1386_1 | -| ir.cpp:1386:5:1386:15 | ChiPartial | partial:m1386_8 | -| ir.cpp:1386:5:1386:15 | ChiTotal | total:m1385_7 | -| ir.cpp:1386:5:1386:15 | SideEffect | ~m1385_7 | -| ir.cpp:1386:17:1386:17 | Address | &:r1386_2 | -| ir.cpp:1386:17:1386:17 | Address | &:r1386_2 | -| ir.cpp:1386:17:1386:17 | Address | &:r1386_3 | -| ir.cpp:1386:17:1386:17 | Arg(0) | 0:r1386_6 | -| ir.cpp:1386:17:1386:17 | Load | m1382_6 | -| ir.cpp:1386:17:1386:17 | Load | m1386_5 | -| ir.cpp:1386:17:1386:17 | StoreValue | r1386_4 | -| ir.cpp:1387:5:1387:21 | Address | &:r1387_1 | -| ir.cpp:1387:5:1387:21 | Address | &:r1387_1 | -| ir.cpp:1387:5:1387:21 | Address | &:r1387_1 | -| ir.cpp:1387:5:1387:21 | Arg(this) | this:r1387_1 | -| ir.cpp:1387:5:1387:21 | ChiPartial | partial:m1387_9 | -| ir.cpp:1387:5:1387:21 | ChiTotal | total:m1387_3 | -| ir.cpp:1387:5:1387:21 | SideEffect | m1387_3 | -| ir.cpp:1387:5:1387:21 | StoreValue | r1387_2 | -| ir.cpp:1387:23:1387:28 | CallTarget | func:r1387_4 | -| ir.cpp:1387:23:1387:28 | ChiPartial | partial:m1387_6 | -| ir.cpp:1387:23:1387:28 | ChiTotal | total:m1386_9 | -| ir.cpp:1387:23:1387:28 | SideEffect | ~m1386_9 | -| ir.cpp:1388:5:1388:32 | CallTarget | func:r1388_2 | -| ir.cpp:1388:5:1388:32 | ChiPartial | partial:m1388_4 | -| ir.cpp:1388:5:1388:32 | ChiTotal | total:m1387_7 | -| ir.cpp:1388:5:1388:32 | SideEffect | ~m1387_7 | -| ir.cpp:1388:5:1388:32 | StoreValue | r1388_3 | -| ir.cpp:1388:5:1388:34 | Address | &:r1388_1 | -| ir.cpp:1388:5:1388:34 | Address | &:r1388_1 | -| ir.cpp:1388:5:1388:34 | Address | &:r1388_1 | -| ir.cpp:1388:5:1388:34 | Arg(this) | this:r1388_1 | -| ir.cpp:1388:5:1388:34 | ChiPartial | partial:m1388_12 | -| ir.cpp:1388:5:1388:34 | ChiTotal | total:m1388_6 | -| ir.cpp:1388:5:1388:34 | SideEffect | m1388_6 | -| ir.cpp:1388:36:1388:41 | CallTarget | func:r1388_7 | -| ir.cpp:1388:36:1388:41 | ChiPartial | partial:m1388_9 | -| ir.cpp:1388:36:1388:41 | ChiTotal | total:m1388_5 | -| ir.cpp:1388:36:1388:41 | SideEffect | ~m1388_5 | -| ir.cpp:1390:5:1390:37 | CallTarget | func:r1390_2 | -| ir.cpp:1390:5:1390:37 | ChiPartial | partial:m1390_4 | -| ir.cpp:1390:5:1390:37 | ChiTotal | total:m1388_10 | -| ir.cpp:1390:5:1390:37 | SideEffect | ~m1388_10 | -| ir.cpp:1390:5:1390:37 | StoreValue | r1390_3 | -| ir.cpp:1390:5:1390:39 | Address | &:r1390_1 | -| ir.cpp:1391:1:1391:1 | Address | &:r1391_2 | -| ir.cpp:1391:1:1391:1 | Address | &:r1391_2 | -| ir.cpp:1391:1:1391:1 | Address | &:r1391_10 | -| ir.cpp:1391:1:1391:1 | Address | &:r1391_10 | -| ir.cpp:1391:1:1391:1 | Arg(this) | this:r1391_2 | -| ir.cpp:1391:1:1391:1 | Arg(this) | this:r1391_10 | -| ir.cpp:1391:1:1391:1 | CallTarget | func:r1391_3 | -| ir.cpp:1391:1:1391:1 | CallTarget | func:r1391_11 | -| ir.cpp:1391:1:1391:1 | ChiPartial | partial:m1391_5 | -| ir.cpp:1391:1:1391:1 | ChiPartial | partial:m1391_8 | -| ir.cpp:1391:1:1391:1 | ChiPartial | partial:m1391_13 | -| ir.cpp:1391:1:1391:1 | ChiPartial | partial:m1391_16 | -| ir.cpp:1391:1:1391:1 | ChiTotal | total:m1382_6 | -| ir.cpp:1391:1:1391:1 | ChiTotal | total:m1384_2 | -| ir.cpp:1391:1:1391:1 | ChiTotal | total:m1390_5 | -| ir.cpp:1391:1:1391:1 | ChiTotal | total:m1391_6 | -| ir.cpp:1391:1:1391:1 | SideEffect | m1382_6 | -| ir.cpp:1391:1:1391:1 | SideEffect | m1384_2 | -| ir.cpp:1391:1:1391:1 | SideEffect | ~m1390_5 | -| ir.cpp:1391:1:1391:1 | SideEffect | ~m1391_6 | -| ir.cpp:1393:6:1393:31 | ChiPartial | partial:m1393_3 | -| ir.cpp:1393:6:1393:31 | ChiTotal | total:m1393_2 | -| ir.cpp:1393:6:1393:31 | SideEffect | ~m1403_6 | -| ir.cpp:1394:22:1394:22 | Address | &:r1394_1 | -| ir.cpp:1394:26:1394:54 | CallTarget | func:r1394_2 | -| ir.cpp:1394:26:1394:54 | ChiPartial | partial:m1394_4 | -| ir.cpp:1394:26:1394:54 | ChiTotal | total:m1393_4 | -| ir.cpp:1394:26:1394:54 | SideEffect | ~m1393_4 | -| ir.cpp:1394:26:1394:54 | StoreValue | r1394_3 | -| ir.cpp:1395:29:1395:30 | Address | &:r1395_1 | -| ir.cpp:1395:34:1395:62 | CallTarget | func:r1395_3 | -| ir.cpp:1395:34:1395:62 | ChiPartial | partial:m1395_5 | -| ir.cpp:1395:34:1395:62 | ChiTotal | total:m1394_5 | -| ir.cpp:1395:34:1395:62 | SideEffect | ~m1394_5 | -| ir.cpp:1395:34:1395:62 | StoreValue | r1395_4 | -| ir.cpp:1395:34:1395:64 | Address | &:r1395_2 | -| ir.cpp:1395:34:1395:64 | StoreValue | r1395_9 | -| ir.cpp:1395:34:1395:64 | Unary | r1395_2 | -| ir.cpp:1395:34:1395:64 | Unary | r1395_8 | -| ir.cpp:1396:22:1396:23 | Address | &:r1396_1 | -| ir.cpp:1396:22:1396:23 | Address | &:r1396_1 | -| ir.cpp:1396:22:1396:23 | Arg(this) | this:r1396_1 | -| ir.cpp:1396:22:1396:23 | CallTarget | func:r1396_3 | -| ir.cpp:1396:22:1396:23 | ChiPartial | partial:m1396_5 | -| ir.cpp:1396:22:1396:23 | ChiPartial | partial:m1396_7 | -| ir.cpp:1396:22:1396:23 | ChiTotal | total:m1395_6 | -| ir.cpp:1396:22:1396:23 | ChiTotal | total:m1396_2 | -| ir.cpp:1396:22:1396:23 | SideEffect | ~m1395_6 | -| ir.cpp:1397:5:1397:13 | CallTarget | func:r1397_1 | -| ir.cpp:1397:5:1397:13 | ChiPartial | partial:m1397_6 | -| ir.cpp:1397:5:1397:13 | ChiTotal | total:m1396_6 | -| ir.cpp:1397:5:1397:13 | SideEffect | ~m1396_6 | -| ir.cpp:1397:15:1397:15 | Address | &:r1397_4 | -| ir.cpp:1397:15:1397:15 | Arg(0) | 0:r1397_4 | -| ir.cpp:1397:15:1397:15 | SideEffect | ~m1394_6 | -| ir.cpp:1397:15:1397:15 | Unary | r1397_2 | -| ir.cpp:1397:15:1397:15 | Unary | r1397_3 | -| ir.cpp:1398:5:1398:15 | CallTarget | func:r1398_1 | -| ir.cpp:1398:5:1398:15 | ChiPartial | partial:m1398_16 | -| ir.cpp:1398:5:1398:15 | ChiTotal | total:m1398_10 | -| ir.cpp:1398:5:1398:15 | SideEffect | ~m1398_10 | -| ir.cpp:1398:17:1398:17 | Address | &:r1398_2 | -| ir.cpp:1398:17:1398:17 | Address | &:r1398_2 | -| ir.cpp:1398:17:1398:17 | Address | &:r1398_2 | -| ir.cpp:1398:17:1398:17 | Address | &:r1398_7 | -| ir.cpp:1398:17:1398:17 | Arg(0) | 0:r1398_7 | -| ir.cpp:1398:17:1398:17 | Arg(0) | 0:r1398_14 | -| ir.cpp:1398:17:1398:17 | Arg(this) | this:r1398_2 | -| ir.cpp:1398:17:1398:17 | CallTarget | func:r1398_4 | -| ir.cpp:1398:17:1398:17 | ChiPartial | partial:m1398_9 | -| ir.cpp:1398:17:1398:17 | ChiPartial | partial:m1398_12 | -| ir.cpp:1398:17:1398:17 | ChiTotal | total:m1397_7 | -| ir.cpp:1398:17:1398:17 | ChiTotal | total:m1398_3 | -| ir.cpp:1398:17:1398:17 | Load | m1398_13 | -| ir.cpp:1398:17:1398:17 | SideEffect | ~m1394_6 | -| ir.cpp:1398:17:1398:17 | SideEffect | ~m1397_7 | -| ir.cpp:1398:17:1398:17 | Unary | r1398_5 | -| ir.cpp:1398:17:1398:17 | Unary | r1398_6 | -| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:22 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:22 | Arg(this) | this:r1399_1 | -| ir.cpp:1399:5:1399:22 | Arg(this) | this:r1399_1 | -| ir.cpp:1399:5:1399:22 | CallTarget | func:r1399_3 | -| ir.cpp:1399:5:1399:22 | ChiPartial | partial:m1399_5 | -| ir.cpp:1399:5:1399:22 | ChiPartial | partial:m1399_7 | -| ir.cpp:1399:5:1399:22 | ChiPartial | partial:m1399_14 | -| ir.cpp:1399:5:1399:22 | ChiTotal | total:m1398_17 | -| ir.cpp:1399:5:1399:22 | ChiTotal | total:m1399_2 | -| ir.cpp:1399:5:1399:22 | ChiTotal | total:m1399_8 | -| ir.cpp:1399:5:1399:22 | SideEffect | m1399_8 | -| ir.cpp:1399:5:1399:22 | SideEffect | ~m1398_17 | -| ir.cpp:1399:24:1399:29 | CallTarget | func:r1399_9 | -| ir.cpp:1399:24:1399:29 | ChiPartial | partial:m1399_11 | -| ir.cpp:1399:24:1399:29 | ChiTotal | total:m1399_6 | -| ir.cpp:1399:24:1399:29 | SideEffect | ~m1399_6 | -| ir.cpp:1400:5:1400:33 | CallTarget | func:r1400_2 | -| ir.cpp:1400:5:1400:33 | ChiPartial | partial:m1400_4 | -| ir.cpp:1400:5:1400:33 | ChiTotal | total:m1399_12 | -| ir.cpp:1400:5:1400:33 | SideEffect | ~m1399_12 | -| ir.cpp:1400:5:1400:33 | StoreValue | r1400_3 | -| ir.cpp:1400:5:1400:35 | Address | &:r1400_1 | -| ir.cpp:1400:5:1400:35 | Address | &:r1400_1 | -| ir.cpp:1400:5:1400:35 | Address | &:r1400_1 | -| ir.cpp:1400:5:1400:35 | Arg(this) | this:r1400_1 | -| ir.cpp:1400:5:1400:35 | ChiPartial | partial:m1400_12 | -| ir.cpp:1400:5:1400:35 | ChiTotal | total:m1400_6 | -| ir.cpp:1400:5:1400:35 | SideEffect | m1400_6 | -| ir.cpp:1400:37:1400:42 | CallTarget | func:r1400_7 | -| ir.cpp:1400:37:1400:42 | ChiPartial | partial:m1400_9 | -| ir.cpp:1400:37:1400:42 | ChiTotal | total:m1400_5 | -| ir.cpp:1400:37:1400:42 | SideEffect | ~m1400_5 | -| ir.cpp:1401:5:1401:38 | CallTarget | func:r1401_2 | -| ir.cpp:1401:5:1401:38 | ChiPartial | partial:m1401_4 | -| ir.cpp:1401:5:1401:38 | ChiTotal | total:m1400_10 | -| ir.cpp:1401:5:1401:38 | SideEffect | ~m1400_10 | -| ir.cpp:1401:5:1401:38 | StoreValue | r1401_3 | -| ir.cpp:1401:5:1401:40 | Address | &:r1401_1 | -| ir.cpp:1403:9:1403:9 | Address | &:r1403_1 | -| ir.cpp:1403:13:1403:41 | CallTarget | func:r1403_3 | -| ir.cpp:1403:13:1403:41 | ChiPartial | partial:m1403_5 | -| ir.cpp:1403:13:1403:41 | ChiTotal | total:m1401_5 | -| ir.cpp:1403:13:1403:41 | SideEffect | ~m1401_5 | -| ir.cpp:1403:13:1403:41 | StoreValue | r1403_4 | -| ir.cpp:1403:13:1403:43 | Address | &:r1403_2 | -| ir.cpp:1403:13:1403:43 | Unary | r1403_2 | -| ir.cpp:1403:45:1403:45 | Address | &:r1403_8 | -| ir.cpp:1403:45:1403:45 | Load | ~m1403_7 | -| ir.cpp:1403:45:1403:45 | StoreValue | r1403_9 | -| ir.cpp:1406:6:1406:20 | ChiPartial | partial:m1406_3 | -| ir.cpp:1406:6:1406:20 | ChiTotal | total:m1406_2 | -| ir.cpp:1406:6:1406:20 | SideEffect | ~m1415_4 | -| ir.cpp:1407:11:1407:11 | Address | &:r1407_1 | -| ir.cpp:1407:15:1407:32 | CallTarget | func:r1407_2 | -| ir.cpp:1407:15:1407:32 | ChiPartial | partial:m1407_4 | -| ir.cpp:1407:15:1407:32 | ChiTotal | total:m1406_4 | -| ir.cpp:1407:15:1407:32 | SideEffect | ~m1406_4 | -| ir.cpp:1407:15:1407:32 | StoreValue | r1407_3 | -| ir.cpp:1408:18:1408:19 | Address | &:r1408_1 | -| ir.cpp:1408:23:1408:40 | CallTarget | func:r1408_3 | -| ir.cpp:1408:23:1408:40 | ChiPartial | partial:m1408_5 | -| ir.cpp:1408:23:1408:40 | ChiTotal | total:m1407_5 | -| ir.cpp:1408:23:1408:40 | SideEffect | ~m1407_5 | -| ir.cpp:1408:23:1408:40 | StoreValue | r1408_4 | -| ir.cpp:1408:23:1408:42 | Address | &:r1408_2 | -| ir.cpp:1408:23:1408:42 | StoreValue | r1408_9 | -| ir.cpp:1408:23:1408:42 | Unary | r1408_2 | -| ir.cpp:1408:23:1408:42 | Unary | r1408_8 | -| ir.cpp:1410:5:1410:13 | CallTarget | func:r1410_1 | -| ir.cpp:1410:5:1410:13 | ChiPartial | partial:m1410_6 | -| ir.cpp:1410:5:1410:13 | ChiTotal | total:m1408_6 | -| ir.cpp:1410:5:1410:13 | SideEffect | ~m1408_6 | -| ir.cpp:1410:15:1410:15 | Address | &:r1410_4 | -| ir.cpp:1410:15:1410:15 | Arg(0) | 0:r1410_4 | -| ir.cpp:1410:15:1410:15 | SideEffect | ~m1407_6 | -| ir.cpp:1410:15:1410:15 | Unary | r1410_2 | -| ir.cpp:1410:15:1410:15 | Unary | r1410_3 | -| ir.cpp:1411:5:1411:15 | CallTarget | func:r1411_1 | -| ir.cpp:1411:5:1411:15 | ChiPartial | partial:m1411_5 | -| ir.cpp:1411:5:1411:15 | ChiTotal | total:m1410_7 | -| ir.cpp:1411:5:1411:15 | SideEffect | ~m1410_7 | -| ir.cpp:1411:17:1411:17 | Address | &:r1411_2 | -| ir.cpp:1411:17:1411:17 | Arg(0) | 0:r1411_3 | -| ir.cpp:1411:17:1411:17 | Load | m1407_6 | -| ir.cpp:1413:9:1413:9 | Address | &:r1413_1 | -| ir.cpp:1413:13:1413:30 | Address | &:r1413_6 | -| ir.cpp:1413:13:1413:30 | CallTarget | func:r1413_2 | -| ir.cpp:1413:13:1413:30 | ChiPartial | partial:m1413_4 | -| ir.cpp:1413:13:1413:30 | ChiTotal | total:m1411_6 | -| ir.cpp:1413:13:1413:30 | SideEffect | ~m1411_6 | -| ir.cpp:1413:13:1413:30 | StoreValue | r1413_3 | -| ir.cpp:1413:13:1413:30 | Unary | r1413_6 | -| ir.cpp:1413:34:1413:34 | Address | &:r1413_8 | -| ir.cpp:1413:34:1413:34 | Load | ~m1413_7 | -| ir.cpp:1413:34:1413:34 | StoreValue | r1413_9 | -| ir.cpp:1415:5:1415:27 | CallTarget | func:r1415_1 | -| ir.cpp:1415:5:1415:27 | ChiPartial | partial:m1415_3 | -| ir.cpp:1415:5:1415:27 | ChiTotal | total:m1413_5 | -| ir.cpp:1415:5:1415:27 | SideEffect | ~m1413_5 | -| ir.cpp:1423:6:1423:29 | ChiPartial | partial:m1423_3 | -| ir.cpp:1423:6:1423:29 | ChiTotal | total:m1423_2 | -| ir.cpp:1423:6:1423:29 | SideEffect | ~m1428_5 | -| ir.cpp:1424:16:1424:17 | Address | &:r1424_1 | -| ir.cpp:1424:21:1424:46 | Address | &:r1424_6 | -| ir.cpp:1424:21:1424:46 | CallTarget | func:r1424_2 | -| ir.cpp:1424:21:1424:46 | ChiPartial | partial:m1424_4 | -| ir.cpp:1424:21:1424:46 | ChiTotal | total:m1423_4 | -| ir.cpp:1424:21:1424:46 | SideEffect | ~m1423_4 | -| ir.cpp:1424:21:1424:46 | StoreValue | r1424_3 | -| ir.cpp:1424:21:1424:46 | Unary | r1424_6 | -| ir.cpp:1424:21:1424:50 | StoreValue | r1424_12 | -| ir.cpp:1424:21:1424:50 | Unary | r1424_10 | -| ir.cpp:1424:21:1424:50 | Unary | r1424_11 | -| ir.cpp:1424:50:1424:50 | Address | &:r1424_8 | -| ir.cpp:1424:50:1424:50 | Load | ~m1424_7 | -| ir.cpp:1424:50:1424:50 | Unary | r1424_9 | -| ir.cpp:1425:9:1425:9 | Address | &:r1425_1 | -| ir.cpp:1425:13:1425:38 | Address | &:r1425_6 | -| ir.cpp:1425:13:1425:38 | CallTarget | func:r1425_2 | -| ir.cpp:1425:13:1425:38 | ChiPartial | partial:m1425_4 | -| ir.cpp:1425:13:1425:38 | ChiTotal | total:m1424_5 | -| ir.cpp:1425:13:1425:38 | SideEffect | ~m1424_5 | -| ir.cpp:1425:13:1425:38 | StoreValue | r1425_3 | -| ir.cpp:1425:13:1425:38 | Unary | r1425_6 | -| ir.cpp:1425:13:1425:42 | Load | ~m1425_5 | -| ir.cpp:1425:13:1425:42 | StoreValue | r1425_10 | -| ir.cpp:1425:42:1425:42 | Address | &:r1425_8 | -| ir.cpp:1425:42:1425:42 | Address | &:r1425_9 | -| ir.cpp:1425:42:1425:42 | Load | ~m1425_7 | -| ir.cpp:1427:18:1427:19 | Address | &:r1427_1 | -| ir.cpp:1427:23:1427:48 | Address | &:r1427_6 | -| ir.cpp:1427:23:1427:48 | CallTarget | func:r1427_2 | -| ir.cpp:1427:23:1427:48 | ChiPartial | partial:m1427_4 | -| ir.cpp:1427:23:1427:48 | ChiTotal | total:m1425_5 | -| ir.cpp:1427:23:1427:48 | SideEffect | ~m1425_5 | -| ir.cpp:1427:23:1427:48 | StoreValue | r1427_3 | -| ir.cpp:1427:23:1427:48 | Unary | r1427_6 | -| ir.cpp:1427:23:1427:52 | Left | r1427_9 | -| ir.cpp:1427:23:1427:55 | StoreValue | r1427_13 | -| ir.cpp:1427:23:1427:55 | Unary | r1427_11 | -| ir.cpp:1427:23:1427:55 | Unary | r1427_12 | -| ir.cpp:1427:52:1427:52 | Unary | r1427_8 | -| ir.cpp:1427:54:1427:54 | Right | r1427_10 | -| ir.cpp:1428:11:1428:11 | Address | &:r1428_1 | -| ir.cpp:1428:15:1428:40 | Address | &:r1428_6 | -| ir.cpp:1428:15:1428:40 | CallTarget | func:r1428_2 | -| ir.cpp:1428:15:1428:40 | ChiPartial | partial:m1428_4 | -| ir.cpp:1428:15:1428:40 | ChiTotal | total:m1427_5 | -| ir.cpp:1428:15:1428:40 | SideEffect | ~m1427_5 | -| ir.cpp:1428:15:1428:40 | StoreValue | r1428_3 | -| ir.cpp:1428:15:1428:40 | Unary | r1428_6 | -| ir.cpp:1428:15:1428:44 | Left | r1428_9 | -| ir.cpp:1428:15:1428:47 | Address | &:r1428_11 | -| ir.cpp:1428:15:1428:47 | Load | ~m1428_7 | -| ir.cpp:1428:15:1428:47 | StoreValue | r1428_12 | -| ir.cpp:1428:44:1428:44 | Unary | r1428_8 | -| ir.cpp:1428:46:1428:46 | Right | r1428_10 | -| ir.cpp:1445:6:1445:24 | ChiPartial | partial:m1445_3 | -| ir.cpp:1445:6:1445:24 | ChiTotal | total:m1445_2 | -| ir.cpp:1445:6:1445:24 | SideEffect | ~m1449_10 | -| ir.cpp:1446:14:1446:14 | Address | &:r1446_1 | -| ir.cpp:1446:18:1446:40 | CallTarget | func:r1446_2 | -| ir.cpp:1446:18:1446:40 | ChiPartial | partial:m1446_4 | -| ir.cpp:1446:18:1446:40 | ChiTotal | total:m1445_4 | -| ir.cpp:1446:18:1446:40 | SideEffect | ~m1445_4 | -| ir.cpp:1446:18:1446:40 | StoreValue | r1446_3 | -| ir.cpp:1447:5:1447:5 | Address | &:r1447_10 | -| ir.cpp:1447:9:1447:36 | Address | &:r1447_1 | -| ir.cpp:1447:9:1447:36 | Address | &:r1447_8 | -| ir.cpp:1447:9:1447:36 | Load | ~m1447_6 | -| ir.cpp:1447:9:1447:36 | StoreValue | r1447_9 | -| ir.cpp:1447:9:1447:36 | Unary | r1447_1 | -| ir.cpp:1447:9:1447:36 | Unary | r1447_7 | -| ir.cpp:1447:10:1447:33 | CallTarget | func:r1447_2 | -| ir.cpp:1447:10:1447:33 | ChiPartial | partial:m1447_4 | -| ir.cpp:1447:10:1447:33 | ChiTotal | total:m1446_5 | -| ir.cpp:1447:10:1447:33 | SideEffect | ~m1446_5 | -| ir.cpp:1447:10:1447:33 | StoreValue | r1447_3 | -| ir.cpp:1448:9:1448:9 | Address | &:r1448_1 | -| ir.cpp:1448:13:1448:36 | CallTarget | func:r1448_2 | -| ir.cpp:1448:13:1448:36 | ChiPartial | partial:m1448_4 | -| ir.cpp:1448:13:1448:36 | ChiTotal | total:m1447_5 | -| ir.cpp:1448:13:1448:36 | SideEffect | ~m1447_5 | -| ir.cpp:1448:13:1448:36 | StoreValue | r1448_3 | -| ir.cpp:1448:40:1448:40 | Address | &:r1448_7 | -| ir.cpp:1448:40:1448:40 | Load | ~m1448_6 | -| ir.cpp:1448:40:1448:40 | StoreValue | r1448_8 | -| ir.cpp:1449:11:1449:11 | Address | &:r1449_1 | -| ir.cpp:1449:16:1449:39 | CallTarget | func:r1449_2 | -| ir.cpp:1449:16:1449:39 | ChiPartial | partial:m1449_4 | -| ir.cpp:1449:16:1449:39 | ChiTotal | total:m1448_5 | -| ir.cpp:1449:16:1449:39 | SideEffect | ~m1448_5 | -| ir.cpp:1449:16:1449:39 | StoreValue | r1449_3 | -| ir.cpp:1449:44:1449:44 | Arg(this) | this:r0_11 | -| ir.cpp:1449:44:1449:44 | CallTarget | func:r1449_7 | -| ir.cpp:1449:44:1449:44 | ChiPartial | partial:m1449_9 | -| ir.cpp:1449:44:1449:44 | ChiTotal | total:m1449_5 | -| ir.cpp:1449:44:1449:44 | SideEffect | ~m1449_5 | -| ir.cpp:1449:44:1449:44 | StoreValue | r1449_8 | -| ir.cpp:1453:3:1453:21 | Address | &:r1453_5 | -| ir.cpp:1453:3:1453:21 | Address | &:r1453_5 | -| ir.cpp:1453:3:1453:21 | Address | &:r1453_7 | -| ir.cpp:1453:3:1453:21 | Address | &:r1453_7 | -| ir.cpp:1453:3:1453:21 | ChiPartial | partial:m1453_3 | -| ir.cpp:1453:3:1453:21 | ChiTotal | total:m1453_2 | -| ir.cpp:1453:3:1453:21 | Load | m1453_6 | -| ir.cpp:1453:3:1453:21 | SideEffect | m1453_3 | -| ir.cpp:1453:3:1453:21 | SideEffect | m1453_8 | -| ir.cpp:1459:3:1459:20 | Address | &:r1459_5 | -| ir.cpp:1459:3:1459:20 | Address | &:r1459_5 | -| ir.cpp:1459:3:1459:20 | Address | &:r1459_7 | -| ir.cpp:1459:3:1459:20 | Address | &:r1459_7 | -| ir.cpp:1459:3:1459:20 | ChiPartial | partial:m1459_3 | -| ir.cpp:1459:3:1459:20 | ChiTotal | total:m1459_2 | -| ir.cpp:1459:3:1459:20 | Load | m1459_6 | -| ir.cpp:1459:3:1459:20 | SideEffect | m1459_3 | -| ir.cpp:1459:3:1459:20 | SideEffect | m1460_6 | -| ir.cpp:1459:3:1459:20 | Unary | m1459_6 | -| ir.cpp:1459:26:1459:30 | Address | &:r1459_9 | -| ir.cpp:1459:26:1459:30 | ChiPartial | partial:m1459_11 | -| ir.cpp:1459:26:1459:30 | ChiTotal | total:m1459_8 | -| ir.cpp:1459:26:1459:30 | StoreValue | r1459_10 | -| ir.cpp:1460:5:1460:5 | Address | &:r1460_2 | -| ir.cpp:1460:5:1460:5 | Address | &:r1460_4 | -| ir.cpp:1460:5:1460:5 | Load | m1459_6 | -| ir.cpp:1460:5:1460:5 | Unary | r1460_3 | -| ir.cpp:1460:5:1460:9 | ChiPartial | partial:m1460_5 | -| ir.cpp:1460:5:1460:9 | ChiTotal | total:m1459_12 | -| ir.cpp:1460:9:1460:9 | StoreValue | r1460_1 | -| ir.cpp:1464:6:1464:29 | ChiPartial | partial:m1464_3 | -| ir.cpp:1464:6:1464:29 | ChiTotal | total:m1464_2 | -| ir.cpp:1464:6:1464:29 | SideEffect | m1464_3 | -| ir.cpp:1465:9:1465:10 | Address | &:r1465_1 | -| ir.cpp:1465:9:1465:10 | Left | r1465_1 | -| ir.cpp:1465:9:1465:10 | Left | r1465_1 | -| ir.cpp:1465:16:1465:22 | Address | &:r1465_4 | -| ir.cpp:1465:16:1465:22 | Address | &:r1465_9 | -| ir.cpp:1465:16:1465:22 | Right | r1465_3 | -| ir.cpp:1465:16:1465:22 | Right | r1465_8 | -| ir.cpp:1465:18:1465:18 | ChiPartial | partial:m1465_6 | -| ir.cpp:1465:18:1465:18 | ChiTotal | total:m1465_2 | -| ir.cpp:1465:18:1465:18 | StoreValue | r1465_5 | -| ir.cpp:1465:21:1465:21 | ChiPartial | partial:m1465_11 | -| ir.cpp:1465:21:1465:21 | ChiTotal | total:m1465_7 | -| ir.cpp:1465:21:1465:21 | StoreValue | r1465_10 | -| ir.cpp:1468:15:1468:15 | Address | &:r1468_1 | -| ir.cpp:1468:16:1468:16 | Address | &:r1468_5 | -| ir.cpp:1468:20:1468:20 | Address | &:r1468_6 | -| ir.cpp:1468:26:1468:27 | StoreValue | r1468_3 | -| ir.cpp:1468:26:1468:27 | Unary | r1468_2 | -| ir.cpp:1469:9:1469:10 | Address | &:r1469_2 | -| ir.cpp:1469:9:1469:10 | Address | &:r1469_3 | -| ir.cpp:1469:9:1469:10 | Load | m0_14 | -| ir.cpp:1469:9:1469:14 | ChiPartial | partial:m1469_4 | -| ir.cpp:1469:9:1469:14 | ChiTotal | total:m1465_12 | -| ir.cpp:1469:14:1469:14 | StoreValue | r1469_1 | -| ir.cpp:1470:14:1470:16 | Address | &:r1470_1 | -| ir.cpp:1470:20:1470:21 | Address | &:r1470_2 | -| ir.cpp:1470:20:1470:21 | Load | m0_14 | -| ir.cpp:1470:20:1470:21 | StoreValue | r1470_4 | -| ir.cpp:1470:20:1470:21 | Unary | r1470_3 | -| ir.cpp:1471:13:1471:13 | Address | &:r1471_1 | -| ir.cpp:1471:17:1471:18 | Address | &:r1471_2 | -| ir.cpp:1471:17:1471:18 | Address | &:r1471_3 | -| ir.cpp:1471:17:1471:18 | Load | m0_14 | -| ir.cpp:1471:17:1471:18 | Load | m1469_4 | -| ir.cpp:1471:17:1471:18 | StoreValue | r1471_4 | -| ir.cpp:1475:15:1475:36 | Address | &:r1475_1 | -| ir.cpp:1475:40:1475:41 | StoreValue | r1475_3 | -| ir.cpp:1475:40:1475:41 | Unary | r1475_2 | -| ir.cpp:1476:15:1476:16 | Address | &:r1476_1 | -| ir.cpp:1476:20:1476:41 | Address | &:r1476_2 | -| ir.cpp:1476:20:1476:41 | Left | r1476_5 | -| ir.cpp:1476:20:1476:41 | Load | m1475_4 | -| ir.cpp:1476:20:1476:41 | Unary | r1476_3 | -| ir.cpp:1476:20:1476:41 | Unary | r1476_4 | -| ir.cpp:1476:20:1476:44 | StoreValue | r1476_8 | -| ir.cpp:1476:20:1476:44 | Unary | r1476_7 | -| ir.cpp:1476:43:1476:43 | Right | r1476_6 | -| ir.cpp:1477:15:1477:16 | Address | &:r1477_1 | -| ir.cpp:1477:20:1477:41 | Address | &:r1477_2 | -| ir.cpp:1477:20:1477:41 | Left | r1477_5 | -| ir.cpp:1477:20:1477:41 | Load | m1475_4 | -| ir.cpp:1477:20:1477:41 | Unary | r1477_3 | -| ir.cpp:1477:20:1477:41 | Unary | r1477_4 | -| ir.cpp:1477:20:1477:44 | StoreValue | r1477_8 | -| ir.cpp:1477:20:1477:44 | Unary | r1477_7 | -| ir.cpp:1477:43:1477:43 | Right | r1477_6 | -| ir.cpp:1478:9:1478:10 | Address | &:r1478_2 | -| ir.cpp:1478:9:1478:10 | Address | &:r1478_4 | -| ir.cpp:1478:9:1478:10 | Load | m1477_9 | -| ir.cpp:1478:9:1478:10 | Unary | r1478_3 | -| ir.cpp:1478:9:1478:14 | ChiPartial | partial:m1478_5 | -| ir.cpp:1478:9:1478:14 | ChiTotal | total:m1469_5 | -| ir.cpp:1478:14:1478:14 | StoreValue | r1478_1 | -| ir.cpp:1479:14:1479:16 | Address | &:r1479_1 | -| ir.cpp:1479:20:1479:21 | Address | &:r1479_2 | -| ir.cpp:1479:20:1479:21 | Load | m1477_9 | -| ir.cpp:1479:20:1479:21 | StoreValue | r1479_5 | -| ir.cpp:1479:20:1479:21 | Unary | r1479_3 | -| ir.cpp:1479:20:1479:21 | Unary | r1479_4 | -| ir.cpp:1480:13:1480:13 | Address | &:r1480_1 | -| ir.cpp:1480:17:1480:18 | Address | &:r1480_2 | -| ir.cpp:1480:17:1480:18 | Address | &:r1480_3 | -| ir.cpp:1480:17:1480:18 | Load | m1477_9 | -| ir.cpp:1480:17:1480:18 | Load | m1478_5 | -| ir.cpp:1480:17:1480:18 | StoreValue | r1480_4 | -| ir.cpp:1484:8:1484:8 | Address | &:r1484_5 | -| ir.cpp:1484:8:1484:8 | Address | &:r1484_5 | -| ir.cpp:1484:8:1484:8 | Address | &:r1484_7 | -| ir.cpp:1484:8:1484:8 | Address | &:r1484_7 | -| ir.cpp:1484:8:1484:8 | ChiPartial | partial:m1484_3 | -| ir.cpp:1484:8:1484:8 | ChiTotal | total:m1484_2 | -| ir.cpp:1484:8:1484:8 | Load | m1484_6 | -| ir.cpp:1484:8:1484:8 | SideEffect | m1484_3 | -| ir.cpp:1484:8:1484:8 | SideEffect | m1484_8 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_5 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_7 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_9 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_10 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_13 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_17 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_18 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_21 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_25 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_26 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_29 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_33 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_34 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_37 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_41 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_42 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_45 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_49 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_50 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_53 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_57 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_58 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_61 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_65 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_66 | -| ir.cpp:1488:8:1488:8 | Address | &:r1488_69 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_3 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_3 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_15 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_23 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_31 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_39 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_47 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_55 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_63 | -| ir.cpp:1488:8:1488:8 | ChiPartial | partial:m1488_71 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_2 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_2 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_8 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_16 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_24 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_32 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_40 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_48 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_56 | -| ir.cpp:1488:8:1488:8 | ChiTotal | total:m1488_64 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m0_2 | -| ir.cpp:1488:8:1488:8 | Load | m1488_6 | -| ir.cpp:1488:8:1488:8 | Load | m1488_6 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | Load | ~m0_4 | -| ir.cpp:1488:8:1488:8 | SideEffect | m1488_3 | -| ir.cpp:1488:8:1488:8 | SideEffect | m1488_3 | -| ir.cpp:1488:8:1488:8 | SideEffect | m1488_8 | -| ir.cpp:1488:8:1488:8 | SideEffect | m1488_72 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_14 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_22 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_30 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_38 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_46 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_54 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_62 | -| ir.cpp:1488:8:1488:8 | StoreValue | r1488_70 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | m1488_6 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_11 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_12 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_19 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_20 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_27 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_28 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_35 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_36 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_43 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_44 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_51 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_52 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_59 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_60 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_67 | -| ir.cpp:1488:8:1488:8 | Unary | r1488_68 | -| ir.cpp:1501:6:1501:35 | ChiPartial | partial:m1501_3 | -| ir.cpp:1501:6:1501:35 | ChiTotal | total:m1501_2 | -| ir.cpp:1501:6:1501:35 | SideEffect | ~m1527_7 | -| ir.cpp:1502:39:1502:39 | Address | &:r1502_1 | -| ir.cpp:1502:39:1502:39 | Address | &:r1502_1 | -| ir.cpp:1502:39:1502:39 | Arg(this) | this:r1502_1 | -| ir.cpp:1502:39:1502:39 | CallTarget | func:r1502_3 | -| ir.cpp:1502:39:1502:39 | ChiPartial | partial:m1502_5 | -| ir.cpp:1502:39:1502:39 | ChiPartial | partial:m1502_7 | -| ir.cpp:1502:39:1502:39 | ChiTotal | total:m1501_4 | -| ir.cpp:1502:39:1502:39 | ChiTotal | total:m1502_2 | -| ir.cpp:1502:39:1502:39 | SideEffect | ~m1501_4 | -| ir.cpp:1505:14:1505:14 | Address | &:r1505_1 | -| ir.cpp:1505:15:1505:15 | Address | &:r1505_5 | -| ir.cpp:1505:18:1505:18 | Address | &:r1505_9 | -| ir.cpp:1505:21:1505:21 | Address | &:r1505_13 | -| ir.cpp:1505:24:1505:24 | Address | &:r1505_17 | -| ir.cpp:1505:27:1505:27 | Address | &:r1505_23 | -| ir.cpp:1505:30:1505:30 | Address | &:r1505_27 | -| ir.cpp:1505:34:1505:34 | Address | &:r1505_31 | -| ir.cpp:1505:41:1505:41 | Address | &:r1505_37 | -| ir.cpp:1505:46:1505:46 | Address | &:r1505_2 | -| ir.cpp:1505:46:1505:46 | Load | m1502_8 | -| ir.cpp:1505:46:1505:46 | StoreValue | r1505_3 | -| ir.cpp:1505:47:1505:47 | Address | &:r1505_19 | -| ir.cpp:1505:47:1505:47 | Address | &:r1505_33 | -| ir.cpp:1505:47:1505:47 | Load | ~m1505_4 | -| ir.cpp:1505:47:1505:47 | Load | ~m1505_4 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_7 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_11 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_15 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_21 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_25 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_29 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_35 | -| ir.cpp:1505:47:1505:47 | StoreValue | r1505_39 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_6 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_10 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_14 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_18 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_20 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_24 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_28 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_32 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_34 | -| ir.cpp:1505:47:1505:47 | Unary | r1505_38 | -| ir.cpp:1506:9:1506:9 | Address | &:r1506_2 | -| ir.cpp:1506:9:1506:9 | Address | &:r1506_3 | -| ir.cpp:1506:9:1506:9 | Load | m1505_12 | -| ir.cpp:1506:9:1506:15 | ChiPartial | partial:m1506_4 | -| ir.cpp:1506:9:1506:15 | ChiTotal | total:m1505_4 | -| ir.cpp:1506:13:1506:15 | StoreValue | r1506_1 | -| ir.cpp:1507:17:1507:18 | Address | &:r1507_1 | -| ir.cpp:1507:22:1507:22 | Address | &:r1507_2 | -| ir.cpp:1507:22:1507:22 | Load | m1505_12 | -| ir.cpp:1507:22:1507:22 | StoreValue | r1507_4 | -| ir.cpp:1507:22:1507:22 | Unary | r1507_3 | -| ir.cpp:1508:13:1508:13 | Address | &:r1508_1 | -| ir.cpp:1508:17:1508:17 | Address | &:r1508_2 | -| ir.cpp:1508:17:1508:17 | Address | &:r1508_3 | -| ir.cpp:1508:17:1508:17 | Load | m1505_8 | -| ir.cpp:1508:17:1508:17 | Load | ~m1505_4 | -| ir.cpp:1508:17:1508:17 | StoreValue | r1508_4 | -| ir.cpp:1509:9:1509:9 | Address | &:r1509_2 | -| ir.cpp:1509:9:1509:9 | Address | &:r1509_3 | -| ir.cpp:1509:9:1509:9 | Load | m1505_22 | -| ir.cpp:1509:9:1509:13 | ChiPartial | partial:m1509_4 | -| ir.cpp:1509:9:1509:13 | ChiTotal | total:m1502_6 | -| ir.cpp:1509:13:1509:13 | StoreValue | r1509_1 | -| ir.cpp:1510:9:1510:10 | Address | &:r1510_5 | -| ir.cpp:1510:9:1510:14 | ChiPartial | partial:m1510_6 | -| ir.cpp:1510:9:1510:14 | ChiTotal | total:m1509_5 | -| ir.cpp:1510:10:1510:10 | Address | &:r1510_2 | -| ir.cpp:1510:10:1510:10 | Address | &:r1510_3 | -| ir.cpp:1510:10:1510:10 | Load | m1505_26 | -| ir.cpp:1510:10:1510:10 | Load | ~m1505_4 | -| ir.cpp:1510:10:1510:10 | Unary | r1510_4 | -| ir.cpp:1510:14:1510:14 | StoreValue | r1510_1 | -| ir.cpp:1511:14:1511:15 | Address | &:r1511_1 | -| ir.cpp:1511:19:1511:19 | Address | &:r1511_2 | -| ir.cpp:1511:19:1511:19 | Load | m1505_22 | -| ir.cpp:1511:19:1511:19 | StoreValue | r1511_4 | -| ir.cpp:1511:19:1511:19 | Unary | r1511_3 | -| ir.cpp:1512:14:1512:15 | Address | &:r1512_1 | -| ir.cpp:1512:19:1512:20 | StoreValue | r1512_4 | -| ir.cpp:1512:20:1512:20 | Address | &:r1512_2 | -| ir.cpp:1512:20:1512:20 | Load | m1505_22 | -| ir.cpp:1512:20:1512:20 | Unary | r1512_3 | -| ir.cpp:1513:13:1513:13 | Address | &:r1513_1 | -| ir.cpp:1513:17:1513:17 | Address | &:r1513_2 | -| ir.cpp:1513:17:1513:17 | Address | &:r1513_3 | -| ir.cpp:1513:17:1513:17 | Load | m1505_22 | -| ir.cpp:1513:17:1513:17 | Load | ~m1510_7 | -| ir.cpp:1513:17:1513:17 | StoreValue | r1513_4 | -| ir.cpp:1517:14:1517:35 | Address | &:r1517_1 | -| ir.cpp:1517:39:1517:39 | Address | &:r1517_2 | -| ir.cpp:1517:39:1517:39 | Load | m1502_8 | -| ir.cpp:1517:39:1517:39 | StoreValue | r1517_3 | -| ir.cpp:1518:15:1518:15 | Address | &:r1518_1 | -| ir.cpp:1518:19:1518:40 | Unary | r1518_2 | -| ir.cpp:1518:19:1518:42 | StoreValue | r1518_4 | -| ir.cpp:1518:42:1518:42 | Unary | r1518_3 | -| ir.cpp:1519:15:1519:15 | Address | &:r1519_1 | -| ir.cpp:1519:19:1519:40 | Unary | r1519_2 | -| ir.cpp:1519:19:1519:42 | StoreValue | r1519_4 | -| ir.cpp:1519:42:1519:42 | Unary | r1519_3 | -| ir.cpp:1521:15:1521:15 | Address | &:r1521_1 | -| ir.cpp:1521:19:1521:40 | Unary | r1521_2 | -| ir.cpp:1521:19:1521:42 | StoreValue | r1521_6 | -| ir.cpp:1521:19:1521:42 | Unary | r1521_5 | -| ir.cpp:1521:42:1521:42 | Address | &:r1521_3 | -| ir.cpp:1521:42:1521:42 | Load | ~m1517_4 | -| ir.cpp:1521:42:1521:42 | Unary | r1521_4 | -| ir.cpp:1522:15:1522:15 | Address | &:r1522_1 | -| ir.cpp:1522:19:1522:40 | Unary | r1522_2 | -| ir.cpp:1522:19:1522:42 | StoreValue | r1522_4 | -| ir.cpp:1522:42:1522:42 | Unary | r1522_3 | -| ir.cpp:1523:9:1523:9 | Address | &:r1523_2 | -| ir.cpp:1523:9:1523:9 | Address | &:r1523_4 | -| ir.cpp:1523:9:1523:9 | Load | m1519_5 | -| ir.cpp:1523:9:1523:9 | Unary | r1523_3 | -| ir.cpp:1523:9:1523:15 | ChiPartial | partial:m1523_5 | -| ir.cpp:1523:9:1523:15 | ChiTotal | total:m1517_4 | -| ir.cpp:1523:13:1523:15 | StoreValue | r1523_1 | -| ir.cpp:1524:17:1524:18 | Address | &:r1524_1 | -| ir.cpp:1524:22:1524:22 | Address | &:r1524_2 | -| ir.cpp:1524:22:1524:22 | Load | m1519_5 | -| ir.cpp:1524:22:1524:22 | StoreValue | r1524_5 | -| ir.cpp:1524:22:1524:22 | Unary | r1524_3 | -| ir.cpp:1524:22:1524:22 | Unary | r1524_4 | -| ir.cpp:1525:13:1525:13 | Address | &:r1525_1 | -| ir.cpp:1525:17:1525:17 | Address | &:r1525_2 | -| ir.cpp:1525:17:1525:17 | Address | &:r1525_3 | -| ir.cpp:1525:17:1525:17 | Load | m1518_5 | -| ir.cpp:1525:17:1525:17 | Load | ~m1517_4 | -| ir.cpp:1525:17:1525:17 | StoreValue | r1525_4 | -| ir.cpp:1526:9:1526:9 | Address | &:r1526_2 | -| ir.cpp:1526:9:1526:9 | Address | &:r1526_4 | -| ir.cpp:1526:9:1526:9 | Load | m1521_7 | -| ir.cpp:1526:9:1526:9 | Unary | r1526_3 | -| ir.cpp:1526:9:1526:13 | ChiPartial | partial:m1526_5 | -| ir.cpp:1526:9:1526:13 | ChiTotal | total:m1510_7 | -| ir.cpp:1526:13:1526:13 | StoreValue | r1526_1 | -| ir.cpp:1527:9:1527:10 | Address | &:r1527_5 | -| ir.cpp:1527:9:1527:14 | ChiPartial | partial:m1527_6 | -| ir.cpp:1527:9:1527:14 | ChiTotal | total:m1526_6 | -| ir.cpp:1527:10:1527:10 | Address | &:r1527_2 | -| ir.cpp:1527:10:1527:10 | Address | &:r1527_3 | -| ir.cpp:1527:10:1527:10 | Load | m1522_5 | -| ir.cpp:1527:10:1527:10 | Load | ~m1517_4 | -| ir.cpp:1527:10:1527:10 | Unary | r1527_4 | -| ir.cpp:1527:14:1527:14 | StoreValue | r1527_1 | -| ir.cpp:1528:14:1528:15 | Address | &:r1528_1 | -| ir.cpp:1528:19:1528:19 | Address | &:r1528_2 | -| ir.cpp:1528:19:1528:19 | Load | m1521_7 | -| ir.cpp:1528:19:1528:19 | StoreValue | r1528_5 | -| ir.cpp:1528:19:1528:19 | Unary | r1528_3 | -| ir.cpp:1528:19:1528:19 | Unary | r1528_4 | -| ir.cpp:1529:14:1529:15 | Address | &:r1529_1 | -| ir.cpp:1529:19:1529:20 | StoreValue | r1529_5 | -| ir.cpp:1529:20:1529:20 | Address | &:r1529_2 | -| ir.cpp:1529:20:1529:20 | Load | m1521_7 | -| ir.cpp:1529:20:1529:20 | Unary | r1529_3 | -| ir.cpp:1529:20:1529:20 | Unary | r1529_4 | -| ir.cpp:1530:13:1530:13 | Address | &:r1530_1 | -| ir.cpp:1530:17:1530:17 | Address | &:r1530_2 | -| ir.cpp:1530:17:1530:17 | Address | &:r1530_3 | -| ir.cpp:1530:17:1530:17 | Load | m1521_7 | -| ir.cpp:1530:17:1530:17 | Load | ~m1527_7 | -| ir.cpp:1530:17:1530:17 | StoreValue | r1530_4 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_5 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_7 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_9 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_10 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_13 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_17 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_18 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_21 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_25 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_26 | -| ir.cpp:1541:8:1541:8 | Address | &:r1541_29 | -| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_3 | -| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_3 | -| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_15 | -| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_23 | -| ir.cpp:1541:8:1541:8 | ChiPartial | partial:m1541_31 | -| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_2 | -| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_2 | -| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_8 | -| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_16 | -| ir.cpp:1541:8:1541:8 | ChiTotal | total:m1541_24 | -| ir.cpp:1541:8:1541:8 | Load | m0_2 | -| ir.cpp:1541:8:1541:8 | Load | m0_2 | -| ir.cpp:1541:8:1541:8 | Load | m0_2 | -| ir.cpp:1541:8:1541:8 | Load | m1541_6 | -| ir.cpp:1541:8:1541:8 | Load | m1541_6 | -| ir.cpp:1541:8:1541:8 | Load | ~m0_4 | -| ir.cpp:1541:8:1541:8 | Load | ~m0_4 | -| ir.cpp:1541:8:1541:8 | Load | ~m0_4 | -| ir.cpp:1541:8:1541:8 | SideEffect | m1541_3 | -| ir.cpp:1541:8:1541:8 | SideEffect | m1541_3 | -| ir.cpp:1541:8:1541:8 | SideEffect | m1541_8 | -| ir.cpp:1541:8:1541:8 | SideEffect | m1541_32 | -| ir.cpp:1541:8:1541:8 | StoreValue | r1541_14 | -| ir.cpp:1541:8:1541:8 | StoreValue | r1541_22 | -| ir.cpp:1541:8:1541:8 | StoreValue | r1541_30 | -| ir.cpp:1541:8:1541:8 | Unary | m1541_6 | -| ir.cpp:1541:8:1541:8 | Unary | m1541_6 | -| ir.cpp:1541:8:1541:8 | Unary | m1541_6 | -| ir.cpp:1541:8:1541:8 | Unary | r1541_11 | -| ir.cpp:1541:8:1541:8 | Unary | r1541_12 | -| ir.cpp:1541:8:1541:8 | Unary | r1541_19 | -| ir.cpp:1541:8:1541:8 | Unary | r1541_20 | -| ir.cpp:1541:8:1541:8 | Unary | r1541_27 | -| ir.cpp:1541:8:1541:8 | Unary | r1541_28 | -| ir.cpp:1569:60:1569:95 | Address | &:r1569_5 | -| ir.cpp:1569:60:1569:95 | Address | &:r1569_5 | -| ir.cpp:1569:60:1569:95 | Address | &:r1569_7 | -| ir.cpp:1569:60:1569:95 | Address | &:r1569_7 | -| ir.cpp:1569:60:1569:95 | Address | &:r1569_10 | -| ir.cpp:1569:60:1569:95 | ChiPartial | partial:m1569_3 | -| ir.cpp:1569:60:1569:95 | ChiTotal | total:m1569_2 | -| ir.cpp:1569:60:1569:95 | Load | m0_2 | -| ir.cpp:1569:60:1569:95 | Load | m1569_6 | -| ir.cpp:1569:60:1569:95 | SideEffect | m1569_3 | -| ir.cpp:1569:60:1569:95 | SideEffect | m1569_8 | -| ir.cpp:1570:5:1570:13 | Address | &:r1570_1 | -| ir.cpp:1570:12:1570:12 | Address | &:r1570_2 | -| ir.cpp:1570:12:1570:12 | Load | m1569_6 | -| ir.cpp:1570:12:1570:12 | Unary | r1570_3 | -| ir.cpp:1570:12:1570:12 | Unary | r1570_4 | -| ir.cpp:1573:60:1573:95 | Address | &:r1573_5 | -| ir.cpp:1573:60:1573:95 | Address | &:r1573_5 | -| ir.cpp:1573:60:1573:95 | Address | &:r1573_7 | -| ir.cpp:1573:60:1573:95 | Address | &:r1573_7 | -| ir.cpp:1573:60:1573:95 | Address | &:r1573_10 | -| ir.cpp:1573:60:1573:95 | ChiPartial | partial:m1573_3 | -| ir.cpp:1573:60:1573:95 | ChiTotal | total:m1573_2 | -| ir.cpp:1573:60:1573:95 | Load | m0_2 | -| ir.cpp:1573:60:1573:95 | Load | m1573_6 | -| ir.cpp:1573:60:1573:95 | SideEffect | m1573_3 | -| ir.cpp:1573:60:1573:95 | SideEffect | m1573_8 | -| ir.cpp:1574:5:1574:13 | Address | &:r1574_1 | -| ir.cpp:1574:12:1574:12 | Address | &:r1574_2 | -| ir.cpp:1574:12:1574:12 | Load | m1573_6 | -| ir.cpp:1574:12:1574:12 | Unary | r1574_3 | -| ir.cpp:1574:12:1574:12 | Unary | r1574_4 | -| ir.cpp:1577:60:1577:95 | Address | &:r1577_5 | -| ir.cpp:1577:60:1577:95 | Address | &:r1577_5 | -| ir.cpp:1577:60:1577:95 | Address | &:r1577_7 | -| ir.cpp:1577:60:1577:95 | Address | &:r1577_7 | -| ir.cpp:1577:60:1577:95 | Address | &:r1577_10 | -| ir.cpp:1577:60:1577:95 | ChiPartial | partial:m1577_3 | -| ir.cpp:1577:60:1577:95 | ChiTotal | total:m1577_2 | -| ir.cpp:1577:60:1577:95 | Load | m1577_6 | -| ir.cpp:1577:60:1577:95 | Load | m1578_8 | -| ir.cpp:1577:60:1577:95 | SideEffect | m1577_3 | -| ir.cpp:1577:60:1577:95 | SideEffect | m1577_8 | -| ir.cpp:1578:5:1578:13 | Address | &:r1578_1 | -| ir.cpp:1578:12:1578:12 | Address | &:r1578_2 | -| ir.cpp:1578:12:1578:12 | Address | &:r1578_4 | -| ir.cpp:1578:12:1578:12 | Load | m1577_6 | -| ir.cpp:1578:12:1578:12 | Load | ~m1577_8 | -| ir.cpp:1578:12:1578:12 | StoreValue | r1578_7 | -| ir.cpp:1578:12:1578:12 | Unary | r1578_3 | -| ir.cpp:1578:12:1578:12 | Unary | r1578_5 | -| ir.cpp:1578:12:1578:12 | Unary | r1578_6 | -| ir.cpp:1581:6:1581:37 | ChiPartial | partial:m1581_3 | -| ir.cpp:1581:6:1581:37 | ChiTotal | total:m1581_2 | -| ir.cpp:1581:6:1581:37 | SideEffect | ~m1602_6 | -| ir.cpp:1582:34:1582:34 | Address | &:r1582_1 | -| ir.cpp:1582:34:1582:34 | Address | &:r1582_1 | -| ir.cpp:1582:34:1582:34 | Arg(this) | this:r1582_1 | -| ir.cpp:1582:34:1582:34 | CallTarget | func:r1582_3 | -| ir.cpp:1582:34:1582:34 | ChiPartial | partial:m1582_5 | -| ir.cpp:1582:34:1582:34 | ChiPartial | partial:m1582_7 | -| ir.cpp:1582:34:1582:34 | ChiTotal | total:m1581_4 | -| ir.cpp:1582:34:1582:34 | ChiTotal | total:m1582_2 | -| ir.cpp:1582:34:1582:34 | SideEffect | ~m1581_4 | -| ir.cpp:1585:14:1585:14 | Address | &:r1585_1 | -| ir.cpp:1585:14:1585:14 | Address | &:r1585_6 | -| ir.cpp:1585:14:1585:14 | Address | &:r1585_6 | -| ir.cpp:1585:14:1585:14 | Address | &:r1585_18 | -| ir.cpp:1585:14:1585:14 | Address | &:r1585_18 | -| ir.cpp:1585:14:1585:14 | Address | &:r1585_30 | -| ir.cpp:1585:14:1585:14 | Address | &:r1585_30 | -| ir.cpp:1585:14:1585:14 | Arg(this) | this:r1585_6 | -| ir.cpp:1585:14:1585:14 | Arg(this) | this:r1585_18 | -| ir.cpp:1585:14:1585:14 | Arg(this) | this:r1585_30 | -| ir.cpp:1585:14:1585:14 | CallTarget | func:r1585_7 | -| ir.cpp:1585:14:1585:14 | CallTarget | func:r1585_19 | -| ir.cpp:1585:14:1585:14 | CallTarget | func:r1585_31 | -| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_9 | -| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_12 | -| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_21 | -| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_24 | -| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_33 | -| ir.cpp:1585:14:1585:14 | ChiPartial | partial:m1585_36 | -| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1582_6 | -| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_4 | -| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_10 | -| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_13 | -| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_22 | -| ir.cpp:1585:14:1585:14 | ChiTotal | total:m1585_25 | -| ir.cpp:1585:14:1585:14 | SideEffect | m1585_4 | -| ir.cpp:1585:14:1585:14 | SideEffect | m1585_13 | -| ir.cpp:1585:14:1585:14 | SideEffect | m1585_25 | -| ir.cpp:1585:14:1585:14 | SideEffect | ~m1582_6 | -| ir.cpp:1585:14:1585:14 | SideEffect | ~m1585_10 | -| ir.cpp:1585:14:1585:14 | SideEffect | ~m1585_22 | -| ir.cpp:1585:14:1585:14 | Unary | r1585_8 | -| ir.cpp:1585:14:1585:14 | Unary | r1585_20 | -| ir.cpp:1585:14:1585:14 | Unary | r1585_32 | -| ir.cpp:1585:14:1585:27 | StoreValue | r1585_15 | -| ir.cpp:1585:14:1585:27 | StoreValue | r1585_27 | -| ir.cpp:1585:14:1585:27 | StoreValue | r1585_39 | -| ir.cpp:1585:14:1585:27 | Unary | r1585_14 | -| ir.cpp:1585:14:1585:27 | Unary | r1585_26 | -| ir.cpp:1585:14:1585:27 | Unary | r1585_38 | -| ir.cpp:1585:15:1585:15 | Address | &:r1585_5 | -| ir.cpp:1585:18:1585:18 | Address | &:r1585_17 | -| ir.cpp:1585:21:1585:21 | Address | &:r1585_29 | -| ir.cpp:1585:26:1585:26 | Address | &:r1585_2 | -| ir.cpp:1585:26:1585:26 | Load | m1582_8 | -| ir.cpp:1585:26:1585:26 | StoreValue | r1585_3 | -| ir.cpp:1586:9:1586:9 | Address | &:r1586_2 | -| ir.cpp:1586:9:1586:9 | Address | &:r1586_4 | -| ir.cpp:1586:9:1586:9 | Load | m1585_28 | -| ir.cpp:1586:9:1586:9 | Unary | r1586_3 | -| ir.cpp:1586:9:1586:15 | ChiPartial | partial:m1586_5 | -| ir.cpp:1586:9:1586:15 | ChiTotal | total:m1585_37 | -| ir.cpp:1586:13:1586:15 | StoreValue | r1586_1 | -| ir.cpp:1587:17:1587:18 | Address | &:r1587_1 | -| ir.cpp:1587:22:1587:22 | Address | &:r1587_2 | -| ir.cpp:1587:22:1587:22 | Load | m1585_28 | -| ir.cpp:1587:22:1587:22 | StoreValue | r1587_5 | -| ir.cpp:1587:22:1587:22 | Unary | r1587_3 | -| ir.cpp:1587:22:1587:22 | Unary | r1587_4 | -| ir.cpp:1588:13:1588:13 | Address | &:r1588_1 | -| ir.cpp:1588:17:1588:17 | Address | &:r1588_2 | -| ir.cpp:1588:17:1588:17 | Address | &:r1588_3 | -| ir.cpp:1588:17:1588:17 | Load | m1585_16 | -| ir.cpp:1588:17:1588:17 | Load | ~m1585_37 | -| ir.cpp:1588:17:1588:17 | StoreValue | r1588_4 | -| ir.cpp:1589:9:1589:9 | Address | &:r1589_2 | -| ir.cpp:1589:9:1589:9 | Address | &:r1589_4 | -| ir.cpp:1589:9:1589:9 | Load | m1585_40 | -| ir.cpp:1589:9:1589:9 | Unary | r1589_3 | -| ir.cpp:1589:9:1589:13 | ChiPartial | partial:m1589_5 | -| ir.cpp:1589:9:1589:13 | ChiTotal | total:m1585_34 | -| ir.cpp:1589:13:1589:13 | StoreValue | r1589_1 | -| ir.cpp:1590:14:1590:15 | Address | &:r1590_1 | -| ir.cpp:1590:19:1590:19 | Address | &:r1590_2 | -| ir.cpp:1590:19:1590:19 | Load | m1585_40 | -| ir.cpp:1590:19:1590:19 | StoreValue | r1590_5 | -| ir.cpp:1590:19:1590:19 | Unary | r1590_3 | -| ir.cpp:1590:19:1590:19 | Unary | r1590_4 | -| ir.cpp:1591:13:1591:13 | Address | &:r1591_1 | -| ir.cpp:1591:17:1591:17 | Address | &:r1591_2 | -| ir.cpp:1591:17:1591:17 | Address | &:r1591_3 | -| ir.cpp:1591:17:1591:17 | Load | m1585_40 | -| ir.cpp:1591:17:1591:17 | Load | ~m1589_6 | -| ir.cpp:1591:17:1591:17 | StoreValue | r1591_4 | -| ir.cpp:1595:14:1595:35 | Address | &:r1595_1 | -| ir.cpp:1595:39:1595:39 | Address | &:r1595_2 | -| ir.cpp:1595:39:1595:39 | Load | m1582_8 | -| ir.cpp:1595:39:1595:39 | StoreValue | r1595_3 | -| ir.cpp:1596:15:1596:15 | Address | &:r1596_1 | -| ir.cpp:1596:19:1596:40 | Address | &:r1596_2 | -| ir.cpp:1596:19:1596:40 | Address | &:r1596_2 | -| ir.cpp:1596:19:1596:40 | Arg(this) | this:r1596_2 | -| ir.cpp:1596:19:1596:40 | ChiPartial | partial:m1596_8 | -| ir.cpp:1596:19:1596:40 | ChiTotal | total:m1595_4 | -| ir.cpp:1596:19:1596:40 | SideEffect | m1595_4 | -| ir.cpp:1596:42:1596:47 | CallTarget | func:r1596_3 | -| ir.cpp:1596:42:1596:47 | ChiPartial | partial:m1596_5 | -| ir.cpp:1596:42:1596:47 | ChiTotal | total:m1589_6 | -| ir.cpp:1596:42:1596:47 | SideEffect | ~m1589_6 | -| ir.cpp:1596:42:1596:47 | Unary | r1596_4 | -| ir.cpp:1596:48:1596:50 | StoreValue | r1596_11 | -| ir.cpp:1596:48:1596:50 | Unary | r1596_10 | -| ir.cpp:1597:15:1597:15 | Address | &:r1597_1 | -| ir.cpp:1597:19:1597:40 | Address | &:r1597_2 | -| ir.cpp:1597:19:1597:40 | Address | &:r1597_2 | -| ir.cpp:1597:19:1597:40 | Arg(this) | this:r1597_2 | -| ir.cpp:1597:19:1597:40 | ChiPartial | partial:m1597_8 | -| ir.cpp:1597:19:1597:40 | ChiTotal | total:m1596_9 | -| ir.cpp:1597:19:1597:40 | SideEffect | m1596_9 | -| ir.cpp:1597:42:1597:47 | CallTarget | func:r1597_3 | -| ir.cpp:1597:42:1597:47 | ChiPartial | partial:m1597_5 | -| ir.cpp:1597:42:1597:47 | ChiTotal | total:m1596_6 | -| ir.cpp:1597:42:1597:47 | SideEffect | ~m1596_6 | -| ir.cpp:1597:42:1597:47 | Unary | r1597_4 | -| ir.cpp:1597:48:1597:50 | StoreValue | r1597_11 | -| ir.cpp:1597:48:1597:50 | Unary | r1597_10 | -| ir.cpp:1598:15:1598:15 | Address | &:r1598_1 | -| ir.cpp:1598:19:1598:40 | Address | &:r1598_2 | -| ir.cpp:1598:19:1598:40 | Address | &:r1598_2 | -| ir.cpp:1598:19:1598:40 | Arg(this) | this:r1598_2 | -| ir.cpp:1598:19:1598:40 | ChiPartial | partial:m1598_8 | -| ir.cpp:1598:19:1598:40 | ChiTotal | total:m1597_9 | -| ir.cpp:1598:19:1598:40 | SideEffect | m1597_9 | -| ir.cpp:1598:42:1598:47 | CallTarget | func:r1598_3 | -| ir.cpp:1598:42:1598:47 | ChiPartial | partial:m1598_5 | -| ir.cpp:1598:42:1598:47 | ChiTotal | total:m1597_6 | -| ir.cpp:1598:42:1598:47 | SideEffect | ~m1597_6 | -| ir.cpp:1598:42:1598:47 | Unary | r1598_4 | -| ir.cpp:1598:48:1598:50 | StoreValue | r1598_11 | -| ir.cpp:1598:48:1598:50 | Unary | r1598_10 | -| ir.cpp:1599:9:1599:9 | Address | &:r1599_2 | -| ir.cpp:1599:9:1599:9 | Address | &:r1599_4 | -| ir.cpp:1599:9:1599:9 | Load | m1597_12 | -| ir.cpp:1599:9:1599:9 | Unary | r1599_3 | -| ir.cpp:1599:9:1599:15 | ChiPartial | partial:m1599_5 | -| ir.cpp:1599:9:1599:15 | ChiTotal | total:m1598_9 | -| ir.cpp:1599:13:1599:15 | StoreValue | r1599_1 | -| ir.cpp:1600:17:1600:18 | Address | &:r1600_1 | -| ir.cpp:1600:22:1600:22 | Address | &:r1600_2 | -| ir.cpp:1600:22:1600:22 | Load | m1597_12 | -| ir.cpp:1600:22:1600:22 | StoreValue | r1600_5 | -| ir.cpp:1600:22:1600:22 | Unary | r1600_3 | -| ir.cpp:1600:22:1600:22 | Unary | r1600_4 | -| ir.cpp:1601:13:1601:13 | Address | &:r1601_1 | -| ir.cpp:1601:17:1601:17 | Address | &:r1601_2 | -| ir.cpp:1601:17:1601:17 | Address | &:r1601_3 | -| ir.cpp:1601:17:1601:17 | Load | m1596_12 | -| ir.cpp:1601:17:1601:17 | Load | ~m1598_9 | -| ir.cpp:1601:17:1601:17 | StoreValue | r1601_4 | -| ir.cpp:1602:9:1602:9 | Address | &:r1602_2 | -| ir.cpp:1602:9:1602:9 | Address | &:r1602_4 | -| ir.cpp:1602:9:1602:9 | Load | m1598_12 | -| ir.cpp:1602:9:1602:9 | Unary | r1602_3 | -| ir.cpp:1602:9:1602:13 | ChiPartial | partial:m1602_5 | -| ir.cpp:1602:9:1602:13 | ChiTotal | total:m1598_6 | -| ir.cpp:1602:13:1602:13 | StoreValue | r1602_1 | -| ir.cpp:1603:14:1603:15 | Address | &:r1603_1 | -| ir.cpp:1603:19:1603:19 | Address | &:r1603_2 | -| ir.cpp:1603:19:1603:19 | Load | m1598_12 | -| ir.cpp:1603:19:1603:19 | StoreValue | r1603_5 | -| ir.cpp:1603:19:1603:19 | Unary | r1603_3 | -| ir.cpp:1603:19:1603:19 | Unary | r1603_4 | -| ir.cpp:1604:13:1604:13 | Address | &:r1604_1 | -| ir.cpp:1604:17:1604:17 | Address | &:r1604_2 | -| ir.cpp:1604:17:1604:17 | Address | &:r1604_3 | -| ir.cpp:1604:17:1604:17 | Load | m1598_12 | -| ir.cpp:1604:17:1604:17 | Load | ~m1602_6 | -| ir.cpp:1604:17:1604:17 | StoreValue | r1604_4 | -| ir.cpp:1608:8:1608:8 | Address | &:r1608_5 | -| ir.cpp:1608:8:1608:8 | Address | &:r1608_5 | -| ir.cpp:1608:8:1608:8 | Address | &:r1608_7 | -| ir.cpp:1608:8:1608:8 | Address | &:r1608_7 | -| ir.cpp:1608:8:1608:8 | ChiPartial | partial:m1608_3 | -| ir.cpp:1608:8:1608:8 | ChiTotal | total:m1608_2 | -| ir.cpp:1608:8:1608:8 | Load | m1608_6 | -| ir.cpp:1608:8:1608:8 | SideEffect | m1608_3 | -| ir.cpp:1608:8:1608:8 | SideEffect | m1608_8 | -| ir.cpp:1635:61:1635:98 | Address | &:r1635_5 | -| ir.cpp:1635:61:1635:98 | Address | &:r1635_5 | -| ir.cpp:1635:61:1635:98 | Address | &:r1635_7 | -| ir.cpp:1635:61:1635:98 | Address | &:r1635_7 | -| ir.cpp:1635:61:1635:98 | Address | &:r1635_10 | -| ir.cpp:1635:61:1635:98 | ChiPartial | partial:m1635_3 | -| ir.cpp:1635:61:1635:98 | ChiTotal | total:m1635_2 | -| ir.cpp:1635:61:1635:98 | Load | m1635_6 | -| ir.cpp:1635:61:1635:98 | Load | m1636_6 | -| ir.cpp:1635:61:1635:98 | SideEffect | m1635_3 | -| ir.cpp:1635:61:1635:98 | SideEffect | m1635_8 | -| ir.cpp:1636:5:1636:13 | Address | &:r1636_1 | -| ir.cpp:1636:12:1636:12 | Address | &:r1636_2 | -| ir.cpp:1636:12:1636:12 | Address | &:r1636_4 | -| ir.cpp:1636:12:1636:12 | Load | m1635_6 | -| ir.cpp:1636:12:1636:12 | Load | ~m1635_8 | -| ir.cpp:1636:12:1636:12 | StoreValue | r1636_5 | -| ir.cpp:1636:12:1636:12 | Unary | r1636_3 | -| ir.cpp:1639:61:1639:98 | Address | &:r1639_5 | -| ir.cpp:1639:61:1639:98 | Address | &:r1639_5 | -| ir.cpp:1639:61:1639:98 | Address | &:r1639_7 | -| ir.cpp:1639:61:1639:98 | Address | &:r1639_7 | -| ir.cpp:1639:61:1639:98 | Address | &:r1639_10 | -| ir.cpp:1639:61:1639:98 | ChiPartial | partial:m1639_3 | -| ir.cpp:1639:61:1639:98 | ChiTotal | total:m1639_2 | -| ir.cpp:1639:61:1639:98 | Load | m1639_6 | -| ir.cpp:1639:61:1639:98 | Load | m1640_8 | -| ir.cpp:1639:61:1639:98 | SideEffect | m1639_3 | -| ir.cpp:1639:61:1639:98 | SideEffect | m1639_8 | -| ir.cpp:1640:5:1640:13 | Address | &:r1640_1 | -| ir.cpp:1640:12:1640:12 | Address | &:r1640_2 | -| ir.cpp:1640:12:1640:12 | Address | &:r1640_4 | -| ir.cpp:1640:12:1640:12 | Load | m1639_6 | -| ir.cpp:1640:12:1640:12 | Load | ~m1639_8 | -| ir.cpp:1640:12:1640:12 | StoreValue | r1640_7 | -| ir.cpp:1640:12:1640:12 | Unary | r1640_3 | -| ir.cpp:1640:12:1640:12 | Unary | r1640_5 | -| ir.cpp:1640:12:1640:12 | Unary | r1640_6 | -| ir.cpp:1643:61:1643:98 | Address | &:r1643_5 | -| ir.cpp:1643:61:1643:98 | Address | &:r1643_5 | -| ir.cpp:1643:61:1643:98 | Address | &:r1643_7 | -| ir.cpp:1643:61:1643:98 | Address | &:r1643_7 | -| ir.cpp:1643:61:1643:98 | Address | &:r1643_10 | -| ir.cpp:1643:61:1643:98 | ChiPartial | partial:m1643_3 | -| ir.cpp:1643:61:1643:98 | ChiTotal | total:m1643_2 | -| ir.cpp:1643:61:1643:98 | Load | m1643_6 | -| ir.cpp:1643:61:1643:98 | Load | m1644_6 | -| ir.cpp:1643:61:1643:98 | SideEffect | m1643_3 | -| ir.cpp:1643:61:1643:98 | SideEffect | m1643_8 | -| ir.cpp:1644:5:1644:13 | Address | &:r1644_1 | -| ir.cpp:1644:12:1644:12 | Address | &:r1644_2 | -| ir.cpp:1644:12:1644:12 | StoreValue | r1644_3 | -| ir.cpp:1644:12:1644:12 | StoreValue | r1644_5 | -| ir.cpp:1644:12:1644:12 | Unary | r1644_2 | -| ir.cpp:1647:6:1647:40 | ChiPartial | partial:m1647_3 | -| ir.cpp:1647:6:1647:40 | ChiTotal | total:m1647_2 | -| ir.cpp:1647:6:1647:40 | SideEffect | ~m1668_6 | -| ir.cpp:1648:36:1648:36 | Address | &:r1648_1 | -| ir.cpp:1648:36:1648:36 | Address | &:r1648_1 | -| ir.cpp:1648:36:1648:36 | Arg(this) | this:r1648_1 | -| ir.cpp:1648:36:1648:36 | CallTarget | func:r1648_3 | -| ir.cpp:1648:36:1648:36 | ChiPartial | partial:m1648_5 | -| ir.cpp:1648:36:1648:36 | ChiPartial | partial:m1648_7 | -| ir.cpp:1648:36:1648:36 | ChiTotal | total:m1647_4 | -| ir.cpp:1648:36:1648:36 | ChiTotal | total:m1648_2 | -| ir.cpp:1648:36:1648:36 | SideEffect | ~m1647_4 | -| ir.cpp:1651:16:1651:16 | Address | &:r1651_1 | -| ir.cpp:1651:16:1651:16 | Address | &:r1651_7 | -| ir.cpp:1651:16:1651:16 | Address | &:r1651_21 | -| ir.cpp:1651:16:1651:16 | Address | &:r1651_35 | -| ir.cpp:1651:16:1651:16 | CallTarget | func:r1651_10 | -| ir.cpp:1651:16:1651:16 | CallTarget | func:r1651_24 | -| ir.cpp:1651:16:1651:16 | CallTarget | func:r1651_38 | -| ir.cpp:1651:16:1651:16 | ChiPartial | partial:m1651_12 | -| ir.cpp:1651:16:1651:16 | ChiPartial | partial:m1651_26 | -| ir.cpp:1651:16:1651:16 | ChiPartial | partial:m1651_40 | -| ir.cpp:1651:16:1651:16 | ChiTotal | total:m1648_6 | -| ir.cpp:1651:16:1651:16 | ChiTotal | total:m1651_13 | -| ir.cpp:1651:16:1651:16 | ChiTotal | total:m1651_27 | -| ir.cpp:1651:16:1651:16 | Load | m1651_4 | -| ir.cpp:1651:16:1651:16 | Load | m1651_4 | -| ir.cpp:1651:16:1651:16 | Load | m1651_4 | -| ir.cpp:1651:16:1651:16 | SideEffect | ~m1648_6 | -| ir.cpp:1651:16:1651:16 | SideEffect | ~m1651_13 | -| ir.cpp:1651:16:1651:16 | SideEffect | ~m1651_27 | -| ir.cpp:1651:16:1651:16 | StoreValue | r1651_11 | -| ir.cpp:1651:16:1651:16 | Unary | r1651_8 | -| ir.cpp:1651:16:1651:16 | Unary | r1651_22 | -| ir.cpp:1651:16:1651:16 | Unary | r1651_25 | -| ir.cpp:1651:16:1651:16 | Unary | r1651_36 | -| ir.cpp:1651:16:1651:16 | Unary | r1651_39 | -| ir.cpp:1651:16:1651:30 | Address | &:r1651_6 | -| ir.cpp:1651:16:1651:30 | StoreValue | r1651_18 | -| ir.cpp:1651:16:1651:30 | StoreValue | r1651_32 | -| ir.cpp:1651:16:1651:30 | StoreValue | r1651_46 | -| ir.cpp:1651:16:1651:30 | Unary | r1651_6 | -| ir.cpp:1651:16:1651:30 | Unary | r1651_31 | -| ir.cpp:1651:16:1651:30 | Unary | r1651_45 | -| ir.cpp:1651:17:1651:17 | Address | &:r1651_5 | -| ir.cpp:1651:20:1651:20 | Address | &:r1651_20 | -| ir.cpp:1651:23:1651:23 | Address | &:r1651_34 | -| ir.cpp:1651:29:1651:29 | StoreValue | r1651_3 | -| ir.cpp:1651:29:1651:29 | Unary | r1651_2 | -| ir.cpp:1651:30:1651:30 | Address | &:r1651_9 | -| ir.cpp:1651:30:1651:30 | Address | &:r1651_9 | -| ir.cpp:1651:30:1651:30 | Address | &:r1651_23 | -| ir.cpp:1651:30:1651:30 | Address | &:r1651_23 | -| ir.cpp:1651:30:1651:30 | Address | &:r1651_37 | -| ir.cpp:1651:30:1651:30 | Address | &:r1651_37 | -| ir.cpp:1651:30:1651:30 | Arg(this) | this:r1651_9 | -| ir.cpp:1651:30:1651:30 | Arg(this) | this:r1651_23 | -| ir.cpp:1651:30:1651:30 | Arg(this) | this:r1651_37 | -| ir.cpp:1651:30:1651:30 | ChiPartial | partial:m1651_15 | -| ir.cpp:1651:30:1651:30 | ChiPartial | partial:m1651_29 | -| ir.cpp:1651:30:1651:30 | ChiPartial | partial:m1651_43 | -| ir.cpp:1651:30:1651:30 | ChiTotal | total:m1648_8 | -| ir.cpp:1651:30:1651:30 | ChiTotal | total:m1651_16 | -| ir.cpp:1651:30:1651:30 | ChiTotal | total:m1651_30 | -| ir.cpp:1651:30:1651:30 | SideEffect | m1648_8 | -| ir.cpp:1651:30:1651:30 | SideEffect | m1651_16 | -| ir.cpp:1651:30:1651:30 | SideEffect | m1651_30 | -| ir.cpp:1652:9:1652:9 | Address | &:r1652_2 | -| ir.cpp:1652:9:1652:9 | Address | &:r1652_4 | -| ir.cpp:1652:9:1652:9 | Load | m1651_19 | -| ir.cpp:1652:9:1652:9 | Unary | r1652_3 | -| ir.cpp:1652:13:1652:13 | StoreValue | r1652_1 | -| ir.cpp:1653:14:1653:15 | Address | &:r1653_1 | -| ir.cpp:1653:19:1653:19 | Address | &:r1653_2 | -| ir.cpp:1653:19:1653:19 | Load | m1651_19 | -| ir.cpp:1653:19:1653:19 | StoreValue | r1653_5 | -| ir.cpp:1653:19:1653:19 | Unary | r1653_3 | -| ir.cpp:1653:19:1653:19 | Unary | r1653_4 | -| ir.cpp:1654:13:1654:13 | Address | &:r1654_1 | -| ir.cpp:1654:17:1654:17 | Address | &:r1654_2 | -| ir.cpp:1654:17:1654:17 | Address | &:r1654_3 | -| ir.cpp:1654:17:1654:17 | Load | m1651_19 | -| ir.cpp:1654:17:1654:17 | Load | m1652_5 | -| ir.cpp:1654:17:1654:17 | StoreValue | r1654_4 | -| ir.cpp:1655:9:1655:9 | Address | &:r1655_2 | -| ir.cpp:1655:9:1655:9 | Address | &:r1655_4 | -| ir.cpp:1655:9:1655:9 | Load | m1651_33 | -| ir.cpp:1655:9:1655:9 | Unary | r1655_3 | -| ir.cpp:1655:9:1655:13 | ChiPartial | partial:m1655_5 | -| ir.cpp:1655:9:1655:13 | ChiTotal | total:m1651_41 | -| ir.cpp:1655:13:1655:13 | StoreValue | r1655_1 | -| ir.cpp:1656:14:1656:15 | Address | &:r1656_1 | -| ir.cpp:1656:19:1656:19 | Address | &:r1656_2 | -| ir.cpp:1656:19:1656:19 | Load | m1651_33 | -| ir.cpp:1656:19:1656:19 | StoreValue | r1656_5 | -| ir.cpp:1656:19:1656:19 | Unary | r1656_3 | -| ir.cpp:1656:19:1656:19 | Unary | r1656_4 | -| ir.cpp:1657:13:1657:13 | Address | &:r1657_1 | -| ir.cpp:1657:17:1657:17 | Address | &:r1657_2 | -| ir.cpp:1657:17:1657:17 | Address | &:r1657_3 | -| ir.cpp:1657:17:1657:17 | Load | m1651_33 | -| ir.cpp:1657:17:1657:17 | Load | ~m1655_6 | -| ir.cpp:1657:17:1657:17 | StoreValue | r1657_4 | -| ir.cpp:1661:16:1661:37 | Address | &:r1661_1 | -| ir.cpp:1661:41:1661:41 | StoreValue | r1661_3 | -| ir.cpp:1661:41:1661:41 | Unary | r1661_2 | -| ir.cpp:1662:16:1662:16 | Address | &:r1662_1 | -| ir.cpp:1662:20:1662:41 | Address | &:r1662_3 | -| ir.cpp:1662:20:1662:41 | Address | &:r1662_5 | -| ir.cpp:1662:20:1662:41 | Address | &:r1662_5 | -| ir.cpp:1662:20:1662:41 | Arg(this) | this:r1662_5 | -| ir.cpp:1662:20:1662:41 | ChiPartial | partial:m1662_11 | -| ir.cpp:1662:20:1662:41 | ChiTotal | total:m1651_44 | -| ir.cpp:1662:20:1662:41 | Load | m1661_4 | -| ir.cpp:1662:20:1662:41 | SideEffect | m1651_44 | -| ir.cpp:1662:20:1662:41 | Unary | r1662_4 | -| ir.cpp:1662:20:1662:50 | Address | &:r1662_2 | -| ir.cpp:1662:20:1662:50 | StoreValue | r1662_14 | -| ir.cpp:1662:20:1662:50 | Unary | r1662_2 | -| ir.cpp:1662:43:1662:48 | CallTarget | func:r1662_6 | -| ir.cpp:1662:43:1662:48 | ChiPartial | partial:m1662_8 | -| ir.cpp:1662:43:1662:48 | ChiTotal | total:m1655_6 | -| ir.cpp:1662:43:1662:48 | SideEffect | ~m1655_6 | -| ir.cpp:1662:43:1662:48 | StoreValue | r1662_7 | -| ir.cpp:1663:15:1663:15 | Address | &:r1663_1 | -| ir.cpp:1663:19:1663:40 | Address | &:r1663_2 | -| ir.cpp:1663:19:1663:40 | Address | &:r1663_4 | -| ir.cpp:1663:19:1663:40 | Address | &:r1663_4 | -| ir.cpp:1663:19:1663:40 | Arg(this) | this:r1663_4 | -| ir.cpp:1663:19:1663:40 | ChiPartial | partial:m1663_10 | -| ir.cpp:1663:19:1663:40 | ChiTotal | total:m1662_12 | -| ir.cpp:1663:19:1663:40 | Load | m1661_4 | -| ir.cpp:1663:19:1663:40 | SideEffect | m1662_12 | -| ir.cpp:1663:19:1663:40 | Unary | r1663_3 | -| ir.cpp:1663:42:1663:47 | CallTarget | func:r1663_5 | -| ir.cpp:1663:42:1663:47 | ChiPartial | partial:m1663_7 | -| ir.cpp:1663:42:1663:47 | ChiTotal | total:m1662_9 | -| ir.cpp:1663:42:1663:47 | SideEffect | ~m1662_9 | -| ir.cpp:1663:42:1663:47 | Unary | r1663_6 | -| ir.cpp:1663:48:1663:50 | StoreValue | r1663_13 | -| ir.cpp:1663:48:1663:50 | Unary | r1663_12 | -| ir.cpp:1664:16:1664:17 | Address | &:r1664_1 | -| ir.cpp:1664:21:1664:42 | Address | &:r1664_2 | -| ir.cpp:1664:21:1664:42 | Address | &:r1664_4 | -| ir.cpp:1664:21:1664:42 | Address | &:r1664_4 | -| ir.cpp:1664:21:1664:42 | Arg(this) | this:r1664_4 | -| ir.cpp:1664:21:1664:42 | ChiPartial | partial:m1664_10 | -| ir.cpp:1664:21:1664:42 | ChiTotal | total:m1663_11 | -| ir.cpp:1664:21:1664:42 | Load | m1661_4 | -| ir.cpp:1664:21:1664:42 | SideEffect | m1663_11 | -| ir.cpp:1664:21:1664:42 | Unary | r1664_3 | -| ir.cpp:1664:44:1664:49 | CallTarget | func:r1664_5 | -| ir.cpp:1664:44:1664:49 | ChiPartial | partial:m1664_7 | -| ir.cpp:1664:44:1664:49 | ChiTotal | total:m1663_8 | -| ir.cpp:1664:44:1664:49 | SideEffect | ~m1663_8 | -| ir.cpp:1664:44:1664:49 | Unary | r1664_6 | -| ir.cpp:1664:50:1664:52 | StoreValue | r1664_13 | -| ir.cpp:1664:50:1664:52 | Unary | r1664_12 | -| ir.cpp:1665:9:1665:9 | Address | &:r1665_2 | -| ir.cpp:1665:9:1665:9 | Address | &:r1665_4 | -| ir.cpp:1665:9:1665:9 | Load | m1662_15 | -| ir.cpp:1665:9:1665:9 | Unary | r1665_3 | -| ir.cpp:1665:13:1665:13 | StoreValue | r1665_1 | -| ir.cpp:1666:14:1666:15 | Address | &:r1666_1 | -| ir.cpp:1666:19:1666:19 | Address | &:r1666_2 | -| ir.cpp:1666:19:1666:19 | Load | m1662_15 | -| ir.cpp:1666:19:1666:19 | StoreValue | r1666_5 | -| ir.cpp:1666:19:1666:19 | Unary | r1666_3 | -| ir.cpp:1666:19:1666:19 | Unary | r1666_4 | -| ir.cpp:1667:13:1667:13 | Address | &:r1667_1 | -| ir.cpp:1667:17:1667:17 | Address | &:r1667_2 | -| ir.cpp:1667:17:1667:17 | Address | &:r1667_3 | -| ir.cpp:1667:17:1667:17 | Load | m1662_15 | -| ir.cpp:1667:17:1667:17 | Load | m1665_5 | -| ir.cpp:1667:17:1667:17 | StoreValue | r1667_4 | -| ir.cpp:1668:9:1668:9 | Address | &:r1668_2 | -| ir.cpp:1668:9:1668:9 | Address | &:r1668_4 | -| ir.cpp:1668:9:1668:9 | Load | m1663_14 | -| ir.cpp:1668:9:1668:9 | Unary | r1668_3 | -| ir.cpp:1668:9:1668:13 | ChiPartial | partial:m1668_5 | -| ir.cpp:1668:9:1668:13 | ChiTotal | total:m1664_8 | -| ir.cpp:1668:13:1668:13 | StoreValue | r1668_1 | -| ir.cpp:1669:14:1669:15 | Address | &:r1669_1 | -| ir.cpp:1669:19:1669:19 | Address | &:r1669_2 | -| ir.cpp:1669:19:1669:19 | Load | m1663_14 | -| ir.cpp:1669:19:1669:19 | StoreValue | r1669_5 | -| ir.cpp:1669:19:1669:19 | Unary | r1669_3 | -| ir.cpp:1669:19:1669:19 | Unary | r1669_4 | -| ir.cpp:1670:13:1670:13 | Address | &:r1670_1 | -| ir.cpp:1670:17:1670:17 | Address | &:r1670_2 | -| ir.cpp:1670:17:1670:17 | Address | &:r1670_3 | -| ir.cpp:1670:17:1670:17 | Load | m1663_14 | -| ir.cpp:1670:17:1670:17 | Load | ~m1668_6 | -| ir.cpp:1670:17:1670:17 | StoreValue | r1670_4 | -| ir.cpp:1674:6:1674:42 | ChiPartial | partial:m1674_3 | -| ir.cpp:1674:6:1674:42 | ChiTotal | total:m1674_2 | -| ir.cpp:1674:6:1674:42 | SideEffect | m1674_3 | -| ir.cpp:1675:9:1675:10 | Address | &:r1675_1 | -| ir.cpp:1675:9:1675:10 | Left | r1675_1 | -| ir.cpp:1675:9:1675:10 | Left | r1675_1 | -| ir.cpp:1675:16:1675:22 | Address | &:r1675_4 | -| ir.cpp:1675:16:1675:22 | Address | &:r1675_9 | -| ir.cpp:1675:16:1675:22 | Right | r1675_3 | -| ir.cpp:1675:16:1675:22 | Right | r1675_8 | -| ir.cpp:1675:18:1675:18 | ChiPartial | partial:m1675_6 | -| ir.cpp:1675:18:1675:18 | ChiTotal | total:m1675_2 | -| ir.cpp:1675:18:1675:18 | StoreValue | r1675_5 | -| ir.cpp:1675:21:1675:21 | ChiPartial | partial:m1675_11 | -| ir.cpp:1675:21:1675:21 | ChiTotal | total:m1675_7 | -| ir.cpp:1675:21:1675:21 | StoreValue | r1675_10 | -| ir.cpp:1676:10:1676:10 | Address | &:r1676_1 | -| ir.cpp:1676:11:1676:11 | Address | &:r1676_5 | -| ir.cpp:1676:15:1676:15 | Address | &:r1676_6 | -| ir.cpp:1676:21:1676:22 | Address | &:r1676_2 | -| ir.cpp:1676:21:1676:22 | Load | m1675_12 | -| ir.cpp:1676:21:1676:22 | StoreValue | r1676_3 | -| ir.cpp:1682:5:1682:23 | Address | &:r1682_5 | -| ir.cpp:1682:5:1682:23 | Address | &:r1682_5 | -| ir.cpp:1682:5:1682:23 | Address | &:r1682_7 | -| ir.cpp:1682:5:1682:23 | Address | &:r1682_7 | -| ir.cpp:1682:5:1682:23 | ChiPartial | partial:m1682_3 | -| ir.cpp:1682:5:1682:23 | ChiTotal | total:m1682_2 | -| ir.cpp:1682:5:1682:23 | Load | m1682_6 | -| ir.cpp:1682:5:1682:23 | SideEffect | m1682_3 | -| ir.cpp:1682:5:1682:23 | SideEffect | m1682_8 | -| ir.cpp:1685:6:1685:20 | ChiPartial | partial:m1685_3 | -| ir.cpp:1685:6:1685:20 | ChiTotal | total:m1685_2 | -| ir.cpp:1685:6:1685:20 | SideEffect | ~m1688_6 | -| ir.cpp:1685:26:1685:26 | Address | &:r1685_5 | -| ir.cpp:1685:34:1685:34 | Address | &:r1685_7 | -| ir.cpp:1685:34:1685:34 | Address | &:r1685_7 | -| ir.cpp:1685:34:1685:34 | Address | &:r1685_9 | -| ir.cpp:1685:34:1685:34 | Address | &:r1685_9 | -| ir.cpp:1685:34:1685:34 | Load | m1685_8 | -| ir.cpp:1685:34:1685:34 | SideEffect | m1685_10 | -| ir.cpp:1685:43:1685:43 | Address | &:r1685_11 | -| ir.cpp:1685:43:1685:43 | Address | &:r1685_11 | -| ir.cpp:1685:43:1685:43 | Address | &:r1685_13 | -| ir.cpp:1685:43:1685:43 | Address | &:r1685_13 | -| ir.cpp:1685:43:1685:43 | Load | m1685_12 | -| ir.cpp:1685:43:1685:43 | SideEffect | m1685_14 | -| ir.cpp:1687:17:1687:20 | Address | &:r1687_1 | -| ir.cpp:1687:24:1687:44 | Address | &:r1687_2 | -| ir.cpp:1687:24:1687:44 | Address | &:r1687_2 | -| ir.cpp:1687:24:1687:44 | Arg(this) | this:r1687_2 | -| ir.cpp:1687:24:1687:44 | CallTarget | func:r1687_4 | -| ir.cpp:1687:24:1687:44 | ChiPartial | partial:m1687_6 | -| ir.cpp:1687:24:1687:44 | ChiPartial | partial:m1687_8 | -| ir.cpp:1687:24:1687:44 | ChiTotal | total:m1685_4 | -| ir.cpp:1687:24:1687:44 | ChiTotal | total:m1687_3 | -| ir.cpp:1687:24:1687:44 | SideEffect | ~m1685_4 | -| ir.cpp:1687:24:1687:44 | StoreValue | r1687_11 | -| ir.cpp:1687:24:1687:44 | Unary | r1687_2 | -| ir.cpp:1687:24:1687:44 | Unary | r1687_10 | -| ir.cpp:1688:10:1688:13 | Address | &:r1688_1 | -| ir.cpp:1688:10:1688:13 | Address | &:r1688_1 | -| ir.cpp:1688:10:1688:13 | Arg(this) | this:r1688_1 | -| ir.cpp:1688:16:1688:37 | CallTarget | func:r1688_3 | -| ir.cpp:1688:16:1688:37 | ChiPartial | partial:m1688_5 | -| ir.cpp:1688:16:1688:37 | ChiPartial | partial:m1688_7 | -| ir.cpp:1688:16:1688:37 | ChiTotal | total:m1687_7 | -| ir.cpp:1688:16:1688:37 | ChiTotal | total:m1688_2 | -| ir.cpp:1688:16:1688:37 | SideEffect | ~m1687_7 | -| ir.cpp:1690:10:1690:21 | Address | &:r1690_1 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_2 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_2 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_4 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_5 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_6 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_7 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_8 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_12 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_17 | -| ir.cpp:1690:24:1692:5 | Address | &:r1690_20 | -| ir.cpp:1690:24:1692:5 | ChiPartial | partial:m1690_10 | -| ir.cpp:1690:24:1692:5 | ChiTotal | total:m0_3 | -| ir.cpp:1690:24:1692:5 | Load | m1687_12 | -| ir.cpp:1690:24:1692:5 | Load | m1688_8 | -| ir.cpp:1690:24:1692:5 | Load | m1692_6 | -| ir.cpp:1690:24:1692:5 | StoreValue | r1690_9 | -| ir.cpp:1690:24:1692:5 | StoreValue | r1690_23 | -| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | -| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | -| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | -| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | -| ir.cpp:1690:24:1692:5 | Unary | r1690_2 | -| ir.cpp:1690:38:1690:38 | Address | &:r1690_13 | -| ir.cpp:1690:38:1690:38 | ChiPartial | partial:m1690_15 | -| ir.cpp:1690:38:1690:38 | ChiTotal | total:m1690_11 | -| ir.cpp:1690:38:1690:38 | Load | m1685_6 | -| ir.cpp:1690:38:1690:38 | StoreValue | r1690_14 | -| ir.cpp:1690:41:1690:41 | Address | &:r1690_18 | -| ir.cpp:1690:41:1690:41 | Address | &:r1690_19 | -| ir.cpp:1690:41:1690:41 | Load | m1685_8 | -| ir.cpp:1690:44:1690:44 | Address | &:r1690_21 | -| ir.cpp:1690:44:1690:44 | Address | &:r1690_22 | -| ir.cpp:1690:44:1690:44 | Load | m1685_12 | -| ir.cpp:1690:46:1690:46 | Address | &:r1690_5 | -| ir.cpp:1690:46:1690:46 | Address | &:r1690_5 | -| ir.cpp:1690:46:1690:46 | Address | &:r1690_7 | -| ir.cpp:1690:46:1690:46 | Address | &:r1690_7 | -| ir.cpp:1690:46:1690:46 | ChiPartial | partial:m1690_3 | -| ir.cpp:1690:46:1690:46 | ChiTotal | total:m1690_2 | -| ir.cpp:1690:46:1690:46 | Load | m1690_6 | -| ir.cpp:1690:46:1690:46 | SideEffect | m1690_3 | -| ir.cpp:1690:46:1690:46 | SideEffect | m1690_8 | -| ir.cpp:1691:14:1691:25 | Address | &:r1691_1 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_2 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_2 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_4 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_5 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_7 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_11 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_12 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_14 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_18 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_19 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_21 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_25 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_26 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_28 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_32 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_33 | -| ir.cpp:1691:28:1691:54 | Address | &:r1691_35 | -| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_9 | -| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_16 | -| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_23 | -| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_30 | -| ir.cpp:1691:28:1691:54 | ChiPartial | partial:m1691_37 | -| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_3 | -| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_10 | -| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_17 | -| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_24 | -| ir.cpp:1691:28:1691:54 | ChiTotal | total:m1691_31 | -| ir.cpp:1691:28:1691:54 | Load | m1690_6 | -| ir.cpp:1691:28:1691:54 | Load | m1690_6 | -| ir.cpp:1691:28:1691:54 | Load | m1690_6 | -| ir.cpp:1691:28:1691:54 | Load | m1690_6 | -| ir.cpp:1691:28:1691:54 | Load | m1690_6 | -| ir.cpp:1691:28:1691:54 | Load | m1691_38 | -| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | -| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | -| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | -| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | -| ir.cpp:1691:28:1691:54 | Load | ~m1690_8 | -| ir.cpp:1691:28:1691:54 | StoreValue | r1691_8 | -| ir.cpp:1691:28:1691:54 | StoreValue | r1691_15 | -| ir.cpp:1691:28:1691:54 | StoreValue | r1691_22 | -| ir.cpp:1691:28:1691:54 | StoreValue | r1691_29 | -| ir.cpp:1691:28:1691:54 | StoreValue | r1691_36 | -| ir.cpp:1691:28:1691:54 | StoreValue | r1691_39 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_2 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_6 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_13 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_20 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_27 | -| ir.cpp:1691:28:1691:54 | Unary | r1691_34 | -| ir.cpp:1691:50:1691:50 | Address | &:r1691_5 | -| ir.cpp:1691:50:1691:50 | Address | &:r1691_5 | -| ir.cpp:1691:50:1691:50 | Address | &:r1691_7 | -| ir.cpp:1691:50:1691:50 | Address | &:r1691_7 | -| ir.cpp:1691:50:1691:50 | ChiPartial | partial:m1691_3 | -| ir.cpp:1691:50:1691:50 | ChiTotal | total:m1691_2 | -| ir.cpp:1691:50:1691:50 | Load | m1691_6 | -| ir.cpp:1691:50:1691:50 | SideEffect | m1691_3 | -| ir.cpp:1691:50:1691:50 | SideEffect | m1691_8 | -| ir.cpp:1692:6:1692:6 | ChiPartial | partial:m1692_2 | -| ir.cpp:1692:6:1692:6 | ChiPartial | partial:m1692_5 | -| ir.cpp:1692:6:1692:6 | ChiTotal | total:m1690_16 | -| ir.cpp:1692:6:1692:6 | ChiTotal | total:m1692_3 | -| ir.cpp:1692:6:1692:6 | Load | ~m1685_10 | -| ir.cpp:1692:6:1692:6 | Load | ~m1685_14 | -| ir.cpp:1692:6:1692:6 | StoreValue | r1692_1 | -| ir.cpp:1692:6:1692:6 | StoreValue | r1692_4 | -| ir.cpp:1695:5:1695:21 | Address | &:r1695_5 | -| ir.cpp:1695:5:1695:21 | ChiPartial | partial:m1695_3 | -| ir.cpp:1695:5:1695:21 | ChiTotal | total:m1695_2 | -| ir.cpp:1695:5:1695:21 | Load | m1698_4 | -| ir.cpp:1695:5:1695:21 | SideEffect | m1695_3 | -| ir.cpp:1696:7:1696:7 | Address | &:r1696_1 | -| ir.cpp:1696:10:1696:12 | StoreValue | r1696_2 | -| ir.cpp:1698:3:1698:11 | Address | &:r1698_1 | -| ir.cpp:1698:10:1698:10 | Address | &:r1698_2 | -| ir.cpp:1698:10:1698:10 | Load | m1696_3 | -| ir.cpp:1698:10:1698:10 | StoreValue | r1698_3 | -| ir.cpp:1703:10:1703:10 | Address | &:r1703_5 | -| ir.cpp:1703:10:1703:10 | Address | &:r1703_5 | -| ir.cpp:1703:10:1703:10 | Address | &:r1703_7 | -| ir.cpp:1703:10:1703:10 | Address | &:r1703_7 | -| ir.cpp:1703:10:1703:10 | ChiPartial | partial:m1703_3 | -| ir.cpp:1703:10:1703:10 | ChiTotal | total:m1703_2 | -| ir.cpp:1703:10:1703:10 | Load | m1703_6 | -| ir.cpp:1703:10:1703:10 | SideEffect | m1703_3 | -| ir.cpp:1703:10:1703:10 | SideEffect | m1703_8 | -| ir.cpp:1704:14:1704:22 | Address | &:r1704_1 | -| ir.cpp:1704:25:1710:9 | Address | &:r1704_2 | -| ir.cpp:1704:25:1710:9 | Address | &:r1704_2 | -| ir.cpp:1704:25:1710:9 | Address | &:r1704_4 | -| ir.cpp:1704:25:1710:9 | Address | &:r1704_5 | -| ir.cpp:1704:25:1710:9 | Address | &:r1704_6 | -| ir.cpp:1704:25:1710:9 | Load | m1703_6 | -| ir.cpp:1704:25:1710:9 | Load | ~m1703_8 | -| ir.cpp:1704:25:1710:9 | Load | ~m1704_8 | -| ir.cpp:1704:25:1710:9 | StoreValue | r1704_7 | -| ir.cpp:1704:25:1710:9 | StoreValue | r1704_9 | -| ir.cpp:1704:25:1710:9 | Unary | r1704_2 | -| ir.cpp:1704:34:1704:34 | Address | &:r1704_5 | -| ir.cpp:1704:34:1704:34 | Address | &:r1704_5 | -| ir.cpp:1704:34:1704:34 | Address | &:r1704_7 | -| ir.cpp:1704:34:1704:34 | Address | &:r1704_7 | -| ir.cpp:1704:34:1704:34 | ChiPartial | partial:m1704_3 | -| ir.cpp:1704:34:1704:34 | ChiTotal | total:m1704_2 | -| ir.cpp:1704:34:1704:34 | Load | m1704_6 | -| ir.cpp:1704:34:1704:34 | SideEffect | m1704_8 | -| ir.cpp:1704:34:1704:34 | SideEffect | ~m1705_8 | -| ir.cpp:1705:13:1705:13 | Address | &:r1705_1 | -| ir.cpp:1705:13:1705:13 | Address | &:r1705_4 | -| ir.cpp:1705:13:1705:13 | Arg(this) | this:r1705_4 | -| ir.cpp:1705:13:1705:13 | CallTarget | func:r1705_5 | -| ir.cpp:1705:13:1705:13 | ChiPartial | partial:m1705_7 | -| ir.cpp:1705:13:1705:13 | ChiTotal | total:m1704_4 | -| ir.cpp:1705:13:1705:13 | Load | m1704_6 | -| ir.cpp:1705:13:1705:13 | SideEffect | ~m1704_4 | -| ir.cpp:1705:13:1705:13 | SideEffect | ~m1704_8 | -| ir.cpp:1705:13:1705:13 | Unary | r1705_2 | -| ir.cpp:1705:13:1705:13 | Unary | r1705_3 | -| ir.cpp:1707:18:1707:26 | Address | &:r1707_1 | -| ir.cpp:1707:29:1709:13 | Address | &:r1707_2 | -| ir.cpp:1707:29:1709:13 | Address | &:r1707_2 | -| ir.cpp:1707:29:1709:13 | Address | &:r1707_4 | -| ir.cpp:1707:29:1709:13 | Address | &:r1707_5 | -| ir.cpp:1707:29:1709:13 | Address | &:r1707_7 | -| ir.cpp:1707:29:1709:13 | Load | m1704_6 | -| ir.cpp:1707:29:1709:13 | Load | ~m1704_8 | -| ir.cpp:1707:29:1709:13 | Load | ~m1707_9 | -| ir.cpp:1707:29:1709:13 | StoreValue | r1707_8 | -| ir.cpp:1707:29:1709:13 | StoreValue | r1707_10 | -| ir.cpp:1707:29:1709:13 | Unary | r1707_2 | -| ir.cpp:1707:29:1709:13 | Unary | r1707_6 | -| ir.cpp:1707:38:1707:38 | Address | &:r1707_5 | -| ir.cpp:1707:38:1707:38 | Address | &:r1707_5 | -| ir.cpp:1707:38:1707:38 | Address | &:r1707_7 | -| ir.cpp:1707:38:1707:38 | Address | &:r1707_7 | -| ir.cpp:1707:38:1707:38 | ChiPartial | partial:m1707_3 | -| ir.cpp:1707:38:1707:38 | ChiTotal | total:m1707_2 | -| ir.cpp:1707:38:1707:38 | Load | m1707_6 | -| ir.cpp:1707:38:1707:38 | SideEffect | m1707_8 | -| ir.cpp:1707:38:1707:38 | SideEffect | ~m1708_8 | -| ir.cpp:1708:17:1708:17 | Address | &:r1708_1 | -| ir.cpp:1708:17:1708:17 | Address | &:r1708_4 | -| ir.cpp:1708:17:1708:17 | Arg(this) | this:r1708_4 | -| ir.cpp:1708:17:1708:17 | CallTarget | func:r1708_5 | -| ir.cpp:1708:17:1708:17 | ChiPartial | partial:m1708_7 | -| ir.cpp:1708:17:1708:17 | ChiTotal | total:m1707_4 | -| ir.cpp:1708:17:1708:17 | Load | m1707_6 | -| ir.cpp:1708:17:1708:17 | SideEffect | ~m1707_4 | -| ir.cpp:1708:17:1708:17 | SideEffect | ~m1707_8 | -| ir.cpp:1708:17:1708:17 | Unary | r1708_2 | -| ir.cpp:1708:17:1708:17 | Unary | r1708_3 | -| ir.cpp:1714:6:1714:21 | ChiPartial | partial:m1714_3 | -| ir.cpp:1714:6:1714:21 | ChiTotal | total:m1714_2 | -| ir.cpp:1714:6:1714:21 | SideEffect | m1714_3 | -| ir.cpp:1714:42:1714:43 | Address | &:r1714_5 | -| ir.cpp:1714:66:1714:67 | Address | &:r1714_7 | -| ir.cpp:1714:66:1714:67 | Address | &:r1714_7 | -| ir.cpp:1714:66:1714:67 | Address | &:r1714_9 | -| ir.cpp:1714:66:1714:67 | Address | &:r1714_9 | -| ir.cpp:1714:66:1714:67 | Load | m1714_8 | -| ir.cpp:1714:66:1714:67 | SideEffect | m1714_10 | -| ir.cpp:1714:91:1714:92 | Address | &:r1714_11 | -| ir.cpp:1714:91:1714:92 | Address | &:r1714_11 | -| ir.cpp:1714:91:1714:92 | Address | &:r1714_13 | -| ir.cpp:1714:91:1714:92 | Address | &:r1714_13 | -| ir.cpp:1714:91:1714:92 | Load | m1714_12 | -| ir.cpp:1714:91:1714:92 | SideEffect | m1714_14 | -| ir.cpp:1715:30:1715:31 | Address | &:r1715_1 | -| ir.cpp:1716:31:1716:32 | Address | &:r1716_1 | -| ir.cpp:1716:36:1716:55 | Address | &:r1716_2 | -| ir.cpp:1716:36:1716:55 | StoreValue | r1716_3 | -| ir.cpp:1716:36:1716:55 | StoreValue | r1716_6 | -| ir.cpp:1716:36:1716:55 | Unary | r1716_2 | -| ir.cpp:1716:36:1716:55 | Unary | r1716_5 | -| ir.cpp:1718:10:1718:17 | Address | &:r1718_1 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_2 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_2 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_4 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_5 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_9 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_10 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_11 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_12 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_13 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_14 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_15 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_16 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_20 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_21 | -| ir.cpp:1718:20:1720:5 | Address | &:r1718_22 | -| ir.cpp:1718:20:1720:5 | ChiPartial | partial:m1718_7 | -| ir.cpp:1718:20:1720:5 | ChiPartial | partial:m1718_18 | -| ir.cpp:1718:20:1720:5 | ChiTotal | total:m0_6 | -| ir.cpp:1718:20:1720:5 | ChiTotal | total:m1718_3 | -| ir.cpp:1718:20:1720:5 | Load | m0_9 | -| ir.cpp:1718:20:1720:5 | Load | m1714_6 | -| ir.cpp:1718:20:1720:5 | Load | m1714_8 | -| ir.cpp:1718:20:1720:5 | Load | m1714_12 | -| ir.cpp:1718:20:1720:5 | Load | m1715_2 | -| ir.cpp:1718:20:1720:5 | Load | m1716_7 | -| ir.cpp:1718:20:1720:5 | StoreValue | r1718_6 | -| ir.cpp:1718:20:1720:5 | StoreValue | r1718_17 | -| ir.cpp:1718:20:1720:5 | StoreValue | r1718_23 | -| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | -| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | -| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | -| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | -| ir.cpp:1718:20:1720:5 | Unary | r1718_2 | -| ir.cpp:1718:42:1718:42 | Address | &:r1718_5 | -| ir.cpp:1718:42:1718:42 | Address | &:r1718_5 | -| ir.cpp:1718:42:1718:42 | Address | &:r1718_7 | -| ir.cpp:1718:42:1718:42 | Address | &:r1718_7 | -| ir.cpp:1718:42:1718:42 | ChiPartial | partial:m1718_3 | -| ir.cpp:1718:42:1718:42 | ChiTotal | total:m1718_2 | -| ir.cpp:1718:42:1718:42 | Load | m1718_6 | -| ir.cpp:1718:42:1718:42 | SideEffect | m1718_3 | -| ir.cpp:1718:42:1718:42 | SideEffect | m1718_8 | -| ir.cpp:1719:14:1719:21 | Address | &:r1719_1 | -| ir.cpp:1719:24:1719:31 | Address | &:r1719_2 | -| ir.cpp:1719:24:1719:31 | Address | &:r1719_2 | -| ir.cpp:1719:24:1719:31 | Address | &:r1719_4 | -| ir.cpp:1719:24:1719:31 | Address | &:r1719_5 | -| ir.cpp:1719:24:1719:31 | Address | &:r1719_7 | -| ir.cpp:1719:24:1719:31 | Load | m1718_6 | -| ir.cpp:1719:24:1719:31 | Load | ~m1718_8 | -| ir.cpp:1719:24:1719:31 | Load | ~m1719_9 | -| ir.cpp:1719:24:1719:31 | StoreValue | r1719_8 | -| ir.cpp:1719:24:1719:31 | StoreValue | r1719_10 | -| ir.cpp:1719:24:1719:31 | Unary | r1719_2 | -| ir.cpp:1719:24:1719:31 | Unary | r1719_6 | -| ir.cpp:1719:30:1719:30 | Address | &:r1719_5 | -| ir.cpp:1719:30:1719:30 | Address | &:r1719_5 | -| ir.cpp:1719:30:1719:30 | Address | &:r1719_7 | -| ir.cpp:1719:30:1719:30 | Address | &:r1719_7 | -| ir.cpp:1719:30:1719:30 | ChiPartial | partial:m1719_3 | -| ir.cpp:1719:30:1719:30 | ChiTotal | total:m1719_2 | -| ir.cpp:1719:30:1719:30 | Load | m1719_6 | -| ir.cpp:1719:30:1719:30 | SideEffect | m1719_3 | -| ir.cpp:1719:30:1719:30 | SideEffect | m1719_8 | -| ir.cpp:1726:5:1726:44 | Address | &:r1726_5 | -| ir.cpp:1726:5:1726:44 | Address | &:r1726_5 | -| ir.cpp:1726:5:1726:44 | Address | &:r1726_7 | -| ir.cpp:1726:5:1726:44 | Address | &:r1726_7 | -| ir.cpp:1726:5:1726:44 | ChiPartial | partial:m1726_3 | -| ir.cpp:1726:5:1726:44 | ChiTotal | total:m1726_2 | -| ir.cpp:1726:5:1726:44 | Load | m1726_6 | -| ir.cpp:1726:5:1726:44 | SideEffect | m1726_3 | -| ir.cpp:1726:5:1726:44 | SideEffect | m1726_8 | -| ir.cpp:1727:5:1727:44 | Address | &:r1727_5 | -| ir.cpp:1727:5:1727:44 | Address | &:r1727_5 | -| ir.cpp:1727:5:1727:44 | Address | &:r1727_7 | -| ir.cpp:1727:5:1727:44 | Address | &:r1727_7 | -| ir.cpp:1727:5:1727:44 | ChiPartial | partial:m1727_3 | -| ir.cpp:1727:5:1727:44 | ChiTotal | total:m1727_2 | -| ir.cpp:1727:5:1727:44 | Load | m1727_6 | -| ir.cpp:1727:5:1727:44 | SideEffect | m1727_3 | -| ir.cpp:1727:5:1727:44 | SideEffect | m1728_10 | -| ir.cpp:1727:94:1727:94 | Address | &:r1727_9 | -| ir.cpp:1727:94:1727:94 | Address | &:r1727_9 | -| ir.cpp:1727:94:1727:94 | Address | &:r1727_11 | -| ir.cpp:1727:94:1727:94 | Address | &:r1727_11 | -| ir.cpp:1727:94:1727:94 | Load | m1727_10 | -| ir.cpp:1727:94:1727:94 | SideEffect | m1727_12 | -| ir.cpp:1728:9:1728:9 | Address | &:r1728_6 | -| ir.cpp:1728:9:1728:9 | Address | &:r1728_8 | -| ir.cpp:1728:9:1728:9 | Load | m1727_6 | -| ir.cpp:1728:9:1728:9 | Unary | r1728_7 | -| ir.cpp:1728:9:1728:15 | ChiPartial | partial:m1728_9 | -| ir.cpp:1728:9:1728:15 | ChiTotal | total:m1727_8 | -| ir.cpp:1728:13:1728:13 | Address | &:r1728_1 | -| ir.cpp:1728:13:1728:13 | Load | m1727_10 | -| ir.cpp:1728:13:1728:13 | Unary | r1728_2 | -| ir.cpp:1728:13:1728:13 | Unary | r1728_3 | -| ir.cpp:1728:15:1728:15 | Address | &:r1728_4 | -| ir.cpp:1728:15:1728:15 | Load | ~m1727_12 | -| ir.cpp:1728:15:1728:15 | StoreValue | r1728_5 | -| ir.cpp:1735:5:1735:39 | Address | &:r1735_5 | -| ir.cpp:1735:5:1735:39 | Address | &:r1735_5 | -| ir.cpp:1735:5:1735:39 | Address | &:r1735_7 | -| ir.cpp:1735:5:1735:39 | Address | &:r1735_7 | -| ir.cpp:1735:5:1735:39 | ChiPartial | partial:m1735_3 | -| ir.cpp:1735:5:1735:39 | ChiTotal | total:m1735_2 | -| ir.cpp:1735:5:1735:39 | Load | m1735_6 | -| ir.cpp:1735:5:1735:39 | SideEffect | m1735_3 | -| ir.cpp:1735:5:1735:39 | SideEffect | m1735_8 | -| ir.cpp:1738:7:1738:7 | Address | &:r1738_5 | -| ir.cpp:1738:7:1738:7 | Address | &:r1738_5 | -| ir.cpp:1738:7:1738:7 | Address | &:r1738_7 | -| ir.cpp:1738:7:1738:7 | Address | &:r1738_7 | -| ir.cpp:1738:7:1738:7 | Address | &:r1738_9 | -| ir.cpp:1738:7:1738:7 | Address | &:r1738_11 | -| ir.cpp:1738:7:1738:7 | Address | &:r1738_15 | -| ir.cpp:1738:7:1738:7 | Arg(0) | 0:r1738_15 | -| ir.cpp:1738:7:1738:7 | Arg(this) | this:r1738_9 | -| ir.cpp:1738:7:1738:7 | CallTarget | func:r1738_10 | -| ir.cpp:1738:7:1738:7 | ChiPartial | partial:m1738_3 | -| ir.cpp:1738:7:1738:7 | ChiPartial | partial:m1738_17 | -| ir.cpp:1738:7:1738:7 | ChiPartial | partial:m1738_20 | -| ir.cpp:1738:7:1738:7 | ChiTotal | total:m1738_2 | -| ir.cpp:1738:7:1738:7 | ChiTotal | total:m1738_4 | -| ir.cpp:1738:7:1738:7 | ChiTotal | total:m1738_8 | -| ir.cpp:1738:7:1738:7 | Load | m0_2 | -| ir.cpp:1738:7:1738:7 | Load | m1738_6 | -| ir.cpp:1738:7:1738:7 | SideEffect | m1738_21 | -| ir.cpp:1738:7:1738:7 | SideEffect | ~m0_4 | -| ir.cpp:1738:7:1738:7 | SideEffect | ~m1738_4 | -| ir.cpp:1738:7:1738:7 | SideEffect | ~m1738_18 | -| ir.cpp:1738:7:1738:7 | Unary | m1738_6 | -| ir.cpp:1738:7:1738:7 | Unary | r1738_12 | -| ir.cpp:1738:7:1738:7 | Unary | r1738_13 | -| ir.cpp:1738:7:1738:7 | Unary | r1738_14 | -| ir.cpp:1742:5:1742:38 | Address | &:r1742_5 | -| ir.cpp:1742:5:1742:38 | Address | &:r1742_5 | -| ir.cpp:1742:5:1742:38 | Address | &:r1742_7 | -| ir.cpp:1742:5:1742:38 | Address | &:r1742_7 | -| ir.cpp:1742:5:1742:38 | ChiPartial | partial:m1742_3 | -| ir.cpp:1742:5:1742:38 | ChiTotal | total:m1742_2 | -| ir.cpp:1742:5:1742:38 | Load | m1742_6 | -| ir.cpp:1742:5:1742:38 | SideEffect | m1742_22 | -| ir.cpp:1742:5:1742:38 | SideEffect | ~m1742_20 | -| ir.cpp:1742:5:1742:38 | Unary | m1742_6 | -| ir.cpp:1742:5:1742:38 | Unary | m1742_6 | -| ir.cpp:1742:42:1742:42 | Address | &:r1742_9 | -| ir.cpp:1742:42:1742:42 | Address | &:r1742_16 | -| ir.cpp:1742:42:1742:42 | Arg(this) | this:r1742_9 | -| ir.cpp:1742:42:1742:42 | Arg(this) | this:r1742_16 | -| ir.cpp:1742:42:1742:42 | CallTarget | func:r1742_10 | -| ir.cpp:1742:42:1742:42 | CallTarget | func:r1742_17 | -| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_12 | -| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_14 | -| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_19 | -| ir.cpp:1742:42:1742:42 | ChiPartial | partial:m1742_21 | -| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_4 | -| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_8 | -| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_13 | -| ir.cpp:1742:42:1742:42 | ChiTotal | total:m1742_15 | -| ir.cpp:1742:42:1742:42 | SideEffect | ~m1742_4 | -| ir.cpp:1742:42:1742:42 | SideEffect | ~m1742_13 | -| ir.cpp:1745:7:1745:7 | Address | &:r1745_5 | -| ir.cpp:1745:7:1745:7 | Address | &:r1745_5 | -| ir.cpp:1745:7:1745:7 | Address | &:r1745_7 | -| ir.cpp:1745:7:1745:7 | Address | &:r1745_7 | -| ir.cpp:1745:7:1745:7 | Address | &:r1745_9 | -| ir.cpp:1745:7:1745:7 | Address | &:r1745_11 | -| ir.cpp:1745:7:1745:7 | Address | &:r1745_15 | -| ir.cpp:1745:7:1745:7 | Arg(0) | 0:r1745_15 | -| ir.cpp:1745:7:1745:7 | Arg(this) | this:r1745_9 | -| ir.cpp:1745:7:1745:7 | CallTarget | func:r1745_10 | -| ir.cpp:1745:7:1745:7 | ChiPartial | partial:m1745_3 | -| ir.cpp:1745:7:1745:7 | ChiPartial | partial:m1745_17 | -| ir.cpp:1745:7:1745:7 | ChiPartial | partial:m1745_20 | -| ir.cpp:1745:7:1745:7 | ChiTotal | total:m1745_2 | -| ir.cpp:1745:7:1745:7 | ChiTotal | total:m1745_4 | -| ir.cpp:1745:7:1745:7 | ChiTotal | total:m1745_18 | -| ir.cpp:1745:7:1745:7 | Load | m0_2 | -| ir.cpp:1745:7:1745:7 | Load | m1745_6 | -| ir.cpp:1745:7:1745:7 | SideEffect | m1745_8 | -| ir.cpp:1745:7:1745:7 | SideEffect | ~m0_4 | -| ir.cpp:1745:7:1745:7 | SideEffect | ~m1745_4 | -| ir.cpp:1745:7:1745:7 | SideEffect | ~m1745_21 | -| ir.cpp:1745:7:1745:7 | Unary | m1745_6 | -| ir.cpp:1745:7:1745:7 | Unary | r1745_12 | -| ir.cpp:1745:7:1745:7 | Unary | r1745_13 | -| ir.cpp:1745:7:1745:7 | Unary | r1745_14 | -| ir.cpp:1749:5:1749:35 | Address | &:r1749_5 | -| ir.cpp:1749:5:1749:35 | Address | &:r1749_5 | -| ir.cpp:1749:5:1749:35 | Address | &:r1749_7 | -| ir.cpp:1749:5:1749:35 | Address | &:r1749_7 | -| ir.cpp:1749:5:1749:35 | ChiPartial | partial:m1749_3 | -| ir.cpp:1749:5:1749:35 | ChiTotal | total:m1749_2 | -| ir.cpp:1749:5:1749:35 | Load | m1749_6 | -| ir.cpp:1749:5:1749:35 | SideEffect | m1749_8 | -| ir.cpp:1749:5:1749:35 | SideEffect | ~m1749_22 | -| ir.cpp:1749:5:1749:35 | Unary | m1749_6 | -| ir.cpp:1749:5:1749:35 | Unary | m1749_6 | -| ir.cpp:1749:39:1749:39 | Address | &:r1749_9 | -| ir.cpp:1749:39:1749:39 | Address | &:r1749_16 | -| ir.cpp:1749:39:1749:39 | Arg(this) | this:r1749_9 | -| ir.cpp:1749:39:1749:39 | Arg(this) | this:r1749_16 | -| ir.cpp:1749:39:1749:39 | CallTarget | func:r1749_10 | -| ir.cpp:1749:39:1749:39 | CallTarget | func:r1749_17 | -| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_12 | -| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_14 | -| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_19 | -| ir.cpp:1749:39:1749:39 | ChiPartial | partial:m1749_21 | -| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_4 | -| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_13 | -| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_15 | -| ir.cpp:1749:39:1749:39 | ChiTotal | total:m1749_20 | -| ir.cpp:1749:39:1749:39 | SideEffect | ~m1749_4 | -| ir.cpp:1749:39:1749:39 | SideEffect | ~m1749_15 | -| ir.cpp:1752:5:1752:34 | Address | &:r1752_5 | -| ir.cpp:1752:5:1752:34 | ChiPartial | partial:m1752_3 | -| ir.cpp:1752:5:1752:34 | ChiTotal | total:m1752_2 | -| ir.cpp:1752:5:1752:34 | Load | m1757_2 | -| ir.cpp:1752:5:1752:34 | SideEffect | ~m1756_10 | -| ir.cpp:1753:51:1753:51 | Address | &:r1753_1 | -| ir.cpp:1753:51:1753:51 | Address | &:r1753_1 | -| ir.cpp:1753:51:1753:51 | Address | &:r1753_3 | -| ir.cpp:1753:51:1753:51 | Address | &:r1753_3 | -| ir.cpp:1753:51:1753:51 | Load | m1753_2 | -| ir.cpp:1753:51:1753:51 | SideEffect | m1753_4 | -| ir.cpp:1754:48:1754:48 | Address | &:r1754_1 | -| ir.cpp:1754:48:1754:48 | Address | &:r1754_1 | -| ir.cpp:1754:48:1754:48 | Address | &:r1754_3 | -| ir.cpp:1754:48:1754:48 | Address | &:r1754_3 | -| ir.cpp:1754:48:1754:48 | Load | m1754_2 | -| ir.cpp:1754:48:1754:48 | SideEffect | m1754_4 | -| ir.cpp:1755:40:1755:41 | Address | &:r1755_1 | -| ir.cpp:1755:40:1755:41 | Address | &:r1755_1 | -| ir.cpp:1755:40:1755:41 | Arg(this) | this:r1755_1 | -| ir.cpp:1755:44:1755:45 | CallTarget | func:r1755_3 | -| ir.cpp:1755:44:1755:45 | ChiPartial | partial:m1755_9 | -| ir.cpp:1755:44:1755:45 | ChiPartial | partial:m1755_12 | -| ir.cpp:1755:44:1755:45 | ChiTotal | total:m1752_4 | -| ir.cpp:1755:44:1755:45 | ChiTotal | total:m1755_2 | -| ir.cpp:1755:44:1755:45 | SideEffect | ~m1752_4 | -| ir.cpp:1755:45:1755:45 | Address | &:r1755_4 | -| ir.cpp:1755:45:1755:45 | Address | &:r1755_7 | -| ir.cpp:1755:45:1755:45 | Arg(0) | 0:r1755_7 | -| ir.cpp:1755:45:1755:45 | Load | m1753_2 | -| ir.cpp:1755:45:1755:45 | SideEffect | ~m1753_4 | -| ir.cpp:1755:45:1755:45 | Unary | r1755_5 | -| ir.cpp:1755:45:1755:45 | Unary | r1755_6 | -| ir.cpp:1756:37:1756:38 | Address | &:r1756_1 | -| ir.cpp:1756:37:1756:38 | Address | &:r1756_1 | -| ir.cpp:1756:37:1756:38 | Arg(this) | this:r1756_1 | -| ir.cpp:1756:41:1756:42 | CallTarget | func:r1756_3 | -| ir.cpp:1756:41:1756:42 | ChiPartial | partial:m1756_9 | -| ir.cpp:1756:41:1756:42 | ChiPartial | partial:m1756_12 | -| ir.cpp:1756:41:1756:42 | ChiTotal | total:m1755_10 | -| ir.cpp:1756:41:1756:42 | ChiTotal | total:m1756_2 | -| ir.cpp:1756:41:1756:42 | SideEffect | ~m1755_10 | -| ir.cpp:1756:42:1756:42 | Address | &:r1756_4 | -| ir.cpp:1756:42:1756:42 | Address | &:r1756_7 | -| ir.cpp:1756:42:1756:42 | Arg(0) | 0:r1756_7 | -| ir.cpp:1756:42:1756:42 | Load | m1754_2 | -| ir.cpp:1756:42:1756:42 | SideEffect | ~m1754_4 | -| ir.cpp:1756:42:1756:42 | Unary | r1756_5 | -| ir.cpp:1756:42:1756:42 | Unary | r1756_6 | -| ir.cpp:1757:1:1757:1 | Address | &:r1757_1 | -| ir.cpp:1759:6:1759:22 | ChiPartial | partial:m1759_3 | -| ir.cpp:1759:6:1759:22 | ChiTotal | total:m1759_2 | -| ir.cpp:1759:6:1759:22 | SideEffect | m1759_3 | -| ir.cpp:1759:28:1759:28 | Address | &:r1759_5 | -| ir.cpp:1760:13:1760:13 | Address | &:r1760_1 | -| ir.cpp:1760:17:1760:17 | Address | &:r1760_2 | -| ir.cpp:1760:17:1760:17 | Load | m1759_6 | -| ir.cpp:1760:17:1760:17 | StoreValue | r1760_3 | -| ir.cpp:1760:20:1760:20 | Address | &:r1760_5 | -| ir.cpp:1760:20:1760:20 | Left | r1760_6 | -| ir.cpp:1760:20:1760:20 | Load | m1759_6 | -| ir.cpp:1760:20:1760:24 | Condition | r1760_10 | -| ir.cpp:1760:20:1760:24 | Left | r1760_8 | -| ir.cpp:1760:20:1760:24 | Right | r1760_9 | -| ir.cpp:1760:24:1760:24 | Right | r1760_7 | -| ir.cpp:1761:9:1761:9 | Address | &:r1761_6 | -| ir.cpp:1761:13:1761:13 | Address | &:r1761_1 | -| ir.cpp:1761:13:1761:13 | Left | r1761_2 | -| ir.cpp:1761:13:1761:13 | Load | m1759_6 | -| ir.cpp:1761:13:1761:17 | StoreValue | r1761_5 | -| ir.cpp:1761:17:1761:17 | Address | &:r1761_3 | -| ir.cpp:1761:17:1761:17 | Load | m1760_4 | -| ir.cpp:1761:17:1761:17 | Right | r1761_4 | -| ir.cpp:1764:9:1764:9 | Address | &:r1764_2 | -| ir.cpp:1764:9:1764:9 | Phi | from 0:m1759_6 | -| ir.cpp:1764:9:1764:9 | Phi | from 1:m1761_7 | -| ir.cpp:1765:9:1765:9 | Address | &:r1765_3 | -| ir.cpp:1765:13:1765:13 | Address | &:r1765_1 | -| ir.cpp:1765:13:1765:13 | Load | m1764_1 | -| ir.cpp:1765:13:1765:13 | StoreValue | r1765_2 | -| ir.cpp:1765:16:1765:16 | Address | &:r1765_5 | -| ir.cpp:1765:16:1765:16 | Left | r1765_6 | -| ir.cpp:1765:16:1765:16 | Load | m1764_1 | -| ir.cpp:1765:16:1765:20 | Condition | r1765_10 | -| ir.cpp:1765:16:1765:20 | Left | r1765_8 | -| ir.cpp:1765:16:1765:20 | Right | r1765_9 | -| ir.cpp:1765:20:1765:20 | Right | r1765_7 | -| ir.cpp:1766:9:1766:9 | Address | &:r1766_6 | -| ir.cpp:1766:13:1766:13 | Address | &:r1766_1 | -| ir.cpp:1766:13:1766:13 | Left | r1766_2 | -| ir.cpp:1766:13:1766:13 | Load | m1764_1 | -| ir.cpp:1766:13:1766:17 | StoreValue | r1766_5 | -| ir.cpp:1766:17:1766:17 | Address | &:r1766_3 | -| ir.cpp:1766:17:1766:17 | Load | m1765_4 | -| ir.cpp:1766:17:1766:17 | Right | r1766_4 | -| ir.cpp:1769:9:1769:9 | Address | &:r1769_4 | -| ir.cpp:1769:13:1769:13 | Address | &:r1769_2 | -| ir.cpp:1769:13:1769:13 | Load | m1769_1 | -| ir.cpp:1769:13:1769:13 | Phi | from 2:m1764_1 | -| ir.cpp:1769:13:1769:13 | Phi | from 3:m1766_7 | -| ir.cpp:1769:13:1769:13 | StoreValue | r1769_3 | -| ir.cpp:1769:14:1769:25 | Address | &:r1769_6 | -| ir.cpp:1769:14:1769:25 | Condition | r1769_14 | -| ir.cpp:1769:20:1769:21 | Address | &:r1769_10 | -| ir.cpp:1769:20:1769:21 | Left | r1769_11 | -| ir.cpp:1769:20:1769:21 | Load | m1769_9 | -| ir.cpp:1769:20:1769:21 | Right | r1769_12 | -| ir.cpp:1769:20:1769:21 | Unary | r1769_13 | -| ir.cpp:1769:25:1769:25 | Address | &:r1769_7 | -| ir.cpp:1769:25:1769:25 | Load | m1769_5 | -| ir.cpp:1769:25:1769:25 | StoreValue | r1769_8 | -| ir.cpp:1770:9:1770:9 | Address | &:r1770_6 | -| ir.cpp:1770:13:1770:13 | Address | &:r1770_1 | -| ir.cpp:1770:13:1770:13 | Left | r1770_2 | -| ir.cpp:1770:13:1770:13 | Load | m1769_1 | -| ir.cpp:1770:13:1770:17 | StoreValue | r1770_5 | -| ir.cpp:1770:17:1770:17 | Address | &:r1770_3 | -| ir.cpp:1770:17:1770:17 | Load | m1769_5 | -| ir.cpp:1770:17:1770:17 | Right | r1770_4 | -| ir.cpp:1773:9:1773:29 | Address | &:r1773_6 | -| ir.cpp:1773:9:1773:29 | Condition | r1773_14 | -| ir.cpp:1773:13:1773:13 | Address | &:r1773_2 | -| ir.cpp:1773:13:1773:13 | Phi | from 4:m1769_1 | -| ir.cpp:1773:13:1773:13 | Phi | from 5:m1770_7 | -| ir.cpp:1773:17:1773:17 | Address | &:r1773_3 | -| ir.cpp:1773:17:1773:17 | Load | m1773_1 | -| ir.cpp:1773:17:1773:17 | StoreValue | r1773_4 | -| ir.cpp:1773:24:1773:25 | Address | &:r1773_10 | -| ir.cpp:1773:24:1773:25 | Left | r1773_11 | -| ir.cpp:1773:24:1773:25 | Load | m1773_9 | -| ir.cpp:1773:24:1773:25 | Right | r1773_12 | -| ir.cpp:1773:24:1773:25 | Unary | r1773_13 | -| ir.cpp:1773:29:1773:29 | Address | &:r1773_7 | -| ir.cpp:1773:29:1773:29 | Load | m1773_5 | -| ir.cpp:1773:29:1773:29 | StoreValue | r1773_8 | -| ir.cpp:1774:9:1774:9 | Address | &:r1774_6 | -| ir.cpp:1774:13:1774:13 | Address | &:r1774_1 | -| ir.cpp:1774:13:1774:13 | Left | r1774_2 | -| ir.cpp:1774:13:1774:13 | Load | m1773_1 | -| ir.cpp:1774:13:1774:17 | StoreValue | r1774_5 | -| ir.cpp:1774:17:1774:17 | Address | &:r1774_3 | -| ir.cpp:1774:17:1774:17 | Load | m1773_5 | -| ir.cpp:1774:17:1774:17 | Right | r1774_4 | -| ir.cpp:1777:9:1777:9 | Address | &:r1777_2 | -| ir.cpp:1777:9:1777:9 | Phi | from 6:m1773_1 | -| ir.cpp:1777:9:1777:9 | Phi | from 7:m1774_7 | -| ir.cpp:1777:13:1777:13 | Address | &:r1777_3 | -| ir.cpp:1777:13:1777:13 | Load | m1777_1 | -| ir.cpp:1777:13:1777:13 | StoreValue | r1777_4 | -| ir.cpp:1778:9:1778:9 | Address | &:r1778_1 | -| ir.cpp:1778:9:1778:9 | Condition | r1778_4 | -| ir.cpp:1778:9:1778:9 | Left | r1778_2 | -| ir.cpp:1778:9:1778:9 | Load | m1777_5 | -| ir.cpp:1778:9:1778:9 | Right | r1778_3 | -| ir.cpp:1779:9:1779:9 | Address | &:r1779_6 | -| ir.cpp:1779:13:1779:13 | Address | &:r1779_1 | -| ir.cpp:1779:13:1779:13 | Left | r1779_2 | -| ir.cpp:1779:13:1779:13 | Load | m1777_1 | -| ir.cpp:1779:13:1779:17 | StoreValue | r1779_5 | -| ir.cpp:1779:17:1779:17 | Address | &:r1779_3 | -| ir.cpp:1779:17:1779:17 | Load | m1777_5 | -| ir.cpp:1779:17:1779:17 | Right | r1779_4 | -| ir.cpp:1782:9:1782:18 | Address | &:r1782_2 | -| ir.cpp:1782:9:1782:18 | Condition | r1782_10 | -| ir.cpp:1782:9:1782:18 | Phi | from 8:m1777_1 | -| ir.cpp:1782:9:1782:18 | Phi | from 9:m1779_7 | -| ir.cpp:1782:13:1782:14 | Address | &:r1782_6 | -| ir.cpp:1782:13:1782:14 | Left | r1782_7 | -| ir.cpp:1782:13:1782:14 | Load | m1782_5 | -| ir.cpp:1782:13:1782:14 | Right | r1782_8 | -| ir.cpp:1782:13:1782:14 | Unary | r1782_9 | -| ir.cpp:1782:18:1782:18 | Address | &:r1782_3 | -| ir.cpp:1782:18:1782:18 | Load | m1777_5 | -| ir.cpp:1782:18:1782:18 | StoreValue | r1782_4 | -| ir.cpp:1783:9:1783:9 | Address | &:r1783_3 | -| ir.cpp:1783:9:1783:9 | Address | &:r1783_3 | -| ir.cpp:1783:9:1783:9 | Left | r1783_4 | -| ir.cpp:1783:9:1783:9 | Load | m1782_1 | -| ir.cpp:1783:9:1783:15 | StoreValue | r1783_5 | -| ir.cpp:1783:14:1783:15 | Address | &:r1783_1 | -| ir.cpp:1783:14:1783:15 | Load | m1782_5 | -| ir.cpp:1783:14:1783:15 | Right | r1783_2 | -| ir.cpp:1787:6:1787:26 | ChiPartial | partial:m1787_3 | -| ir.cpp:1787:6:1787:26 | ChiTotal | total:m1787_2 | -| ir.cpp:1787:6:1787:26 | SideEffect | m1787_3 | -| ir.cpp:1787:32:1787:32 | Address | &:r1787_5 | -| ir.cpp:1788:17:1788:17 | Address | &:r1788_1 | -| ir.cpp:1788:21:1788:21 | Address | &:r1788_2 | -| ir.cpp:1788:21:1788:21 | Load | m1787_6 | -| ir.cpp:1788:21:1788:21 | StoreValue | r1788_3 | -| ir.cpp:1788:24:1788:24 | Address | &:r1788_5 | -| ir.cpp:1788:24:1788:24 | Left | r1788_6 | -| ir.cpp:1788:24:1788:24 | Load | m1787_6 | -| ir.cpp:1788:24:1788:28 | Condition | r1788_8 | -| ir.cpp:1788:28:1788:28 | Right | r1788_7 | -| ir.cpp:1790:9:1790:9 | Address | &:r1790_6 | -| ir.cpp:1790:13:1790:13 | Address | &:r1790_1 | -| ir.cpp:1790:13:1790:13 | Left | r1790_2 | -| ir.cpp:1790:13:1790:13 | Load | m1787_6 | -| ir.cpp:1790:13:1790:17 | StoreValue | r1790_5 | -| ir.cpp:1790:17:1790:17 | Address | &:r1790_3 | -| ir.cpp:1790:17:1790:17 | Load | m1788_4 | -| ir.cpp:1790:17:1790:17 | Right | r1790_4 | -| ir.cpp:1793:9:1793:9 | Address | &:r1793_1 | -| ir.cpp:1794:13:1794:13 | Address | &:r1794_3 | -| ir.cpp:1794:17:1794:17 | Address | &:r1794_1 | -| ir.cpp:1794:17:1794:17 | Load | m1790_7 | -| ir.cpp:1794:17:1794:17 | StoreValue | r1794_2 | -| ir.cpp:1794:20:1794:20 | Address | &:r1794_5 | -| ir.cpp:1794:20:1794:20 | Left | r1794_6 | -| ir.cpp:1794:20:1794:20 | Load | m1790_7 | -| ir.cpp:1794:20:1794:24 | Condition | r1794_8 | -| ir.cpp:1794:24:1794:24 | Right | r1794_7 | -| ir.cpp:1796:9:1796:9 | Address | &:r1796_6 | -| ir.cpp:1796:13:1796:13 | Address | &:r1796_1 | -| ir.cpp:1796:13:1796:13 | Left | r1796_2 | -| ir.cpp:1796:13:1796:13 | Load | m1790_7 | -| ir.cpp:1796:13:1796:17 | StoreValue | r1796_5 | -| ir.cpp:1796:17:1796:17 | Address | &:r1796_3 | -| ir.cpp:1796:17:1796:17 | Load | m1794_4 | -| ir.cpp:1796:17:1796:17 | Right | r1796_4 | -| ir.cpp:1799:13:1799:13 | Address | &:r1799_3 | -| ir.cpp:1799:17:1799:17 | Address | &:r1799_1 | -| ir.cpp:1799:17:1799:17 | Load | m1796_7 | -| ir.cpp:1799:17:1799:17 | StoreValue | r1799_2 | -| ir.cpp:1799:18:1799:29 | Address | &:r1799_5 | -| ir.cpp:1799:18:1799:29 | Condition | r1799_11 | -| ir.cpp:1799:24:1799:25 | Address | &:r1799_9 | -| ir.cpp:1799:24:1799:25 | Load | m1799_8 | -| ir.cpp:1799:24:1799:25 | Unary | r1799_10 | -| ir.cpp:1799:29:1799:29 | Address | &:r1799_6 | -| ir.cpp:1799:29:1799:29 | Load | m1799_4 | -| ir.cpp:1799:29:1799:29 | StoreValue | r1799_7 | -| ir.cpp:1801:9:1801:9 | Address | &:r1801_6 | -| ir.cpp:1801:13:1801:13 | Address | &:r1801_1 | -| ir.cpp:1801:13:1801:13 | Left | r1801_2 | -| ir.cpp:1801:13:1801:13 | Load | m1796_7 | -| ir.cpp:1801:13:1801:17 | StoreValue | r1801_5 | -| ir.cpp:1801:17:1801:17 | Address | &:r1801_3 | -| ir.cpp:1801:17:1801:17 | Load | m1799_4 | -| ir.cpp:1801:17:1801:17 | Right | r1801_4 | -| ir.cpp:1804:13:1804:33 | Address | &:r1804_5 | -| ir.cpp:1804:13:1804:33 | Condition | r1804_11 | -| ir.cpp:1804:17:1804:17 | Address | &:r1804_1 | -| ir.cpp:1804:21:1804:21 | Address | &:r1804_2 | -| ir.cpp:1804:21:1804:21 | Load | m1801_7 | -| ir.cpp:1804:21:1804:21 | StoreValue | r1804_3 | -| ir.cpp:1804:28:1804:29 | Address | &:r1804_9 | -| ir.cpp:1804:28:1804:29 | Load | m1804_8 | -| ir.cpp:1804:28:1804:29 | Unary | r1804_10 | -| ir.cpp:1804:33:1804:33 | Address | &:r1804_6 | -| ir.cpp:1804:33:1804:33 | Load | m1804_4 | -| ir.cpp:1804:33:1804:33 | StoreValue | r1804_7 | -| ir.cpp:1806:9:1806:9 | Address | &:r1806_6 | -| ir.cpp:1806:13:1806:13 | Address | &:r1806_1 | -| ir.cpp:1806:13:1806:13 | Left | r1806_2 | -| ir.cpp:1806:13:1806:13 | Load | m1801_7 | -| ir.cpp:1806:13:1806:17 | StoreValue | r1806_5 | -| ir.cpp:1806:17:1806:17 | Address | &:r1806_3 | -| ir.cpp:1806:17:1806:17 | Load | m1804_4 | -| ir.cpp:1806:17:1806:17 | Right | r1806_4 | -| ir.cpp:1809:9:1809:9 | Address | &:r1809_1 | -| ir.cpp:1809:13:1809:13 | Address | &:r1809_2 | -| ir.cpp:1809:13:1809:13 | Load | m1806_7 | -| ir.cpp:1809:13:1809:13 | StoreValue | r1809_3 | -| ir.cpp:1810:13:1810:13 | Address | &:r1810_1 | -| ir.cpp:1810:13:1810:13 | Condition | r1810_2 | -| ir.cpp:1810:13:1810:13 | Load | m1809_4 | -| ir.cpp:1812:9:1812:9 | Address | &:r1812_6 | +| ir.cpp:1194:9:1194:9 | Condition | r1194_2 | +| ir.cpp:1194:9:1194:9 | Load | m1191_6 | +| ir.cpp:1195:7:1195:28 | Address | &:r1195_1 | +| ir.cpp:1195:7:1195:28 | Address | &:r1195_1 | +| ir.cpp:1195:7:1195:28 | Load | m1195_4 | +| ir.cpp:1195:13:1195:28 | StoreValue | r1195_3 | +| ir.cpp:1195:13:1195:28 | Unary | r1195_2 | +| ir.cpp:1197:14:1197:14 | Address | &:r1197_1 | +| ir.cpp:1197:14:1197:14 | Left | r1197_2 | +| ir.cpp:1197:14:1197:14 | Load | m1193_3 | +| ir.cpp:1197:14:1197:18 | Condition | r1197_4 | +| ir.cpp:1197:18:1197:18 | Right | r1197_3 | +| ir.cpp:1200:5:1200:5 | Address | &:r1200_2 | +| ir.cpp:1200:9:1200:9 | StoreValue | r1200_1 | +| ir.cpp:1202:22:1202:22 | Address | &:r1202_2 | +| ir.cpp:1202:22:1202:22 | Address | &:r1202_2 | +| ir.cpp:1202:22:1202:22 | Address | &:r1202_4 | +| ir.cpp:1202:22:1202:22 | Load | m1202_3 | +| ir.cpp:1203:5:1203:19 | Address | &:r1203_1 | +| ir.cpp:1203:5:1203:19 | Address | &:r1203_1 | +| ir.cpp:1203:5:1203:19 | Address | &:r1203_1 | +| ir.cpp:1203:5:1203:19 | Arg(this) | this:r1203_1 | +| ir.cpp:1203:5:1203:19 | CallTarget | func:r1203_3 | +| ir.cpp:1203:5:1203:19 | ChiPartial | partial:m1203_7 | +| ir.cpp:1203:5:1203:19 | ChiPartial | partial:m1203_10 | +| ir.cpp:1203:5:1203:19 | ChiTotal | total:m1191_4 | +| ir.cpp:1203:5:1203:19 | ChiTotal | total:m1203_2 | +| ir.cpp:1203:5:1203:19 | Load | m1203_11 | +| ir.cpp:1203:5:1203:19 | SideEffect | ~m1191_4 | +| ir.cpp:1203:18:1203:18 | Address | &:r1203_4 | +| ir.cpp:1203:18:1203:18 | Address | &:r1203_5 | +| ir.cpp:1203:18:1203:18 | Arg(0) | 0:r1203_5 | +| ir.cpp:1203:18:1203:18 | Load | m1202_3 | +| ir.cpp:1203:18:1203:18 | SideEffect | ~m1202_5 | +| ir.cpp:1205:24:1205:24 | Address | &:r1205_2 | +| ir.cpp:1205:24:1205:24 | Address | &:r1205_2 | +| ir.cpp:1205:24:1205:24 | Address | &:r1205_4 | +| ir.cpp:1205:24:1205:24 | Load | m1205_3 | +| ir.cpp:1211:6:1211:16 | ChiPartial | partial:m1211_3 | +| ir.cpp:1211:6:1211:16 | ChiTotal | total:m1211_2 | +| ir.cpp:1211:6:1211:16 | SideEffect | m1211_3 | +| ir.cpp:1211:22:1211:22 | Address | &:r1211_5 | +| ir.cpp:1212:18:1212:20 | Address | &:r1212_1 | +| ir.cpp:1212:18:1212:20 | Left | r1212_1 | +| ir.cpp:1212:18:1212:20 | Left | r1212_1 | +| ir.cpp:1212:18:1212:20 | Left | r1212_1 | +| ir.cpp:1212:18:1212:20 | Left | r1212_1 | +| ir.cpp:1212:23:1212:37 | Address | &:r1212_4 | +| ir.cpp:1212:23:1212:37 | Address | &:r1212_9 | +| ir.cpp:1212:23:1212:37 | Address | &:r1212_14 | +| ir.cpp:1212:23:1212:37 | Address | &:r1212_19 | +| ir.cpp:1212:23:1212:37 | Right | r1212_3 | +| ir.cpp:1212:23:1212:37 | Right | r1212_8 | +| ir.cpp:1212:23:1212:37 | Right | r1212_13 | +| ir.cpp:1212:23:1212:37 | Right | r1212_18 | +| ir.cpp:1212:26:1212:26 | ChiPartial | partial:m1212_6 | +| ir.cpp:1212:26:1212:26 | ChiTotal | total:m1212_2 | +| ir.cpp:1212:26:1212:26 | StoreValue | r1212_5 | +| ir.cpp:1212:29:1212:29 | ChiPartial | partial:m1212_11 | +| ir.cpp:1212:29:1212:29 | ChiTotal | total:m1212_7 | +| ir.cpp:1212:29:1212:29 | StoreValue | r1212_10 | +| ir.cpp:1212:32:1212:32 | ChiPartial | partial:m1212_16 | +| ir.cpp:1212:32:1212:32 | ChiTotal | total:m1212_12 | +| ir.cpp:1212:32:1212:32 | StoreValue | r1212_15 | +| ir.cpp:1212:35:1212:35 | ChiPartial | partial:m1212_21 | +| ir.cpp:1212:35:1212:35 | ChiTotal | total:m1212_17 | +| ir.cpp:1212:35:1212:35 | StoreValue | r1212_20 | +| ir.cpp:1213:7:1213:7 | Address | &:r1213_1 | +| ir.cpp:1213:11:1213:13 | Left | r1213_2 | +| ir.cpp:1213:11:1213:16 | Address | &:r1213_5 | +| ir.cpp:1213:11:1213:16 | Load | ~m1212_22 | +| ir.cpp:1213:11:1213:16 | StoreValue | r1213_6 | +| ir.cpp:1213:15:1213:15 | Address | &:r1213_3 | +| ir.cpp:1213:15:1213:15 | Load | m1211_6 | +| ir.cpp:1213:15:1213:15 | Right | r1213_4 | +| ir.cpp:1214:3:1214:5 | Left | r1214_3 | +| ir.cpp:1214:3:1214:8 | Address | &:r1214_6 | +| ir.cpp:1214:3:1214:12 | ChiPartial | partial:m1214_7 | +| ir.cpp:1214:3:1214:12 | ChiTotal | total:m1212_22 | +| ir.cpp:1214:7:1214:7 | Address | &:r1214_4 | +| ir.cpp:1214:7:1214:7 | Load | m1211_6 | +| ir.cpp:1214:7:1214:7 | Right | r1214_5 | +| ir.cpp:1214:12:1214:12 | Address | &:r1214_1 | +| ir.cpp:1214:12:1214:12 | Load | m1213_7 | +| ir.cpp:1214:12:1214:12 | StoreValue | r1214_2 | +| ir.cpp:1215:18:1215:28 | Address | &:r1215_1 | +| ir.cpp:1215:32:1215:78 | Arg(2) | 2:r1215_6 | +| ir.cpp:1215:32:1215:78 | StoreValue | r1215_10 | +| ir.cpp:1215:56:1215:58 | Address | &:r1215_2 | +| ir.cpp:1215:56:1215:58 | Arg(0) | 0:r1215_3 | +| ir.cpp:1215:56:1215:58 | Load | m1214_8 | +| ir.cpp:1215:61:1215:63 | Address | &:r1215_4 | +| ir.cpp:1215:61:1215:63 | Arg(1) | 1:r1215_5 | +| ir.cpp:1215:61:1215:63 | Load | m1214_8 | +| ir.cpp:1215:71:1215:71 | Arg(3) | 3:r1215_7 | +| ir.cpp:1215:74:1215:74 | Arg(4) | 4:r1215_8 | +| ir.cpp:1215:77:1215:77 | Arg(5) | 5:r1215_9 | +| ir.cpp:1216:3:1216:5 | Address | &:r1216_6 | +| ir.cpp:1216:9:1216:11 | Address | &:r1216_1 | +| ir.cpp:1216:9:1216:11 | Left | r1216_2 | +| ir.cpp:1216:9:1216:11 | Load | m1214_8 | +| ir.cpp:1216:9:1216:25 | StoreValue | r1216_5 | +| ir.cpp:1216:15:1216:25 | Address | &:r1216_3 | +| ir.cpp:1216:15:1216:25 | Load | m1215_11 | +| ir.cpp:1216:15:1216:25 | Right | r1216_4 | +| ir.cpp:1221:5:1221:21 | Address | &:r1221_7 | +| ir.cpp:1221:5:1221:21 | ChiPartial | partial:m1221_3 | +| ir.cpp:1221:5:1221:21 | ChiTotal | total:m1221_2 | +| ir.cpp:1221:5:1221:21 | Load | m1224_4 | +| ir.cpp:1221:5:1221:21 | SideEffect | m1221_3 | +| ir.cpp:1221:27:1221:27 | Address | &:r1221_5 | +| ir.cpp:1222:7:1222:7 | Address | &:r1222_1 | +| ir.cpp:1223:3:1223:8 | CallTarget | func:r1223_1 | +| ir.cpp:1223:10:1223:11 | Address | &:r1223_4 | +| ir.cpp:1223:10:1223:11 | Arg(0) | 0:r1223_4 | +| ir.cpp:1223:10:1223:11 | ChiPartial | partial:m1223_11 | +| ir.cpp:1223:10:1223:11 | ChiTotal | total:m1222_2 | +| ir.cpp:1223:10:1223:11 | Unary | r1223_3 | +| ir.cpp:1223:11:1223:11 | Unary | r1223_2 | +| ir.cpp:1223:14:1223:15 | Address | &:r1223_7 | +| ir.cpp:1223:14:1223:15 | Arg(1) | 1:r1223_7 | +| ir.cpp:1223:14:1223:15 | SideEffect | ~m1221_6 | +| ir.cpp:1223:14:1223:15 | Unary | r1223_6 | +| ir.cpp:1223:15:1223:15 | Unary | r1223_5 | +| ir.cpp:1223:18:1223:28 | Arg(2) | 2:r1223_8 | +| ir.cpp:1223:18:1223:28 | BufferSize | r1223_8 | +| ir.cpp:1223:18:1223:28 | BufferSize | r1223_8 | +| ir.cpp:1224:3:1224:11 | Address | &:r1224_1 | +| ir.cpp:1224:10:1224:10 | Address | &:r1224_2 | +| ir.cpp:1224:10:1224:10 | Load | m1223_12 | +| ir.cpp:1224:10:1224:10 | StoreValue | r1224_3 | +| ir.cpp:1227:8:1227:23 | Address | &:r1227_5 | +| ir.cpp:1227:8:1227:23 | ChiPartial | partial:m1227_3 | +| ir.cpp:1227:8:1227:23 | ChiTotal | total:m1227_2 | +| ir.cpp:1227:8:1227:23 | Load | m1228_11 | +| ir.cpp:1227:8:1227:23 | SideEffect | ~m1228_8 | +| ir.cpp:1228:3:1228:23 | Address | &:r1228_1 | +| ir.cpp:1228:3:1228:23 | Address | &:r1228_1 | +| ir.cpp:1228:3:1228:23 | Arg(this) | this:r1228_1 | +| ir.cpp:1228:3:1228:23 | CallTarget | func:r1228_3 | +| ir.cpp:1228:3:1228:23 | ChiPartial | partial:m1228_7 | +| ir.cpp:1228:3:1228:23 | ChiPartial | partial:m1228_10 | +| ir.cpp:1228:3:1228:23 | ChiTotal | total:m1227_4 | +| ir.cpp:1228:3:1228:23 | ChiTotal | total:m1228_2 | +| ir.cpp:1228:3:1228:23 | SideEffect | ~m1227_4 | +| ir.cpp:1228:17:1228:21 | Address | &:r1228_5 | +| ir.cpp:1228:17:1228:21 | Arg(0) | 0:r1228_5 | +| ir.cpp:1228:17:1228:21 | SideEffect | ~m1227_3 | +| ir.cpp:1228:17:1228:21 | Unary | r1228_4 | +| ir.cpp:1231:6:1231:16 | ChiPartial | partial:m1231_3 | +| ir.cpp:1231:6:1231:16 | ChiTotal | total:m1231_2 | +| ir.cpp:1231:6:1231:16 | SideEffect | m1231_3 | +| ir.cpp:1231:22:1231:22 | Address | &:r1231_5 | +| ir.cpp:1232:9:1232:9 | Address | &:r1232_1 | +| ir.cpp:1232:12:1232:13 | StoreValue | r1232_2 | +| ir.cpp:1233:12:1233:12 | Address | &:r1233_1 | +| ir.cpp:1233:12:1233:12 | Condition | r1233_2 | +| ir.cpp:1233:12:1233:12 | Load | m1231_6 | +| ir.cpp:1235:9:1235:9 | Address | &:r1235_2 | +| ir.cpp:1235:13:1235:13 | StoreValue | r1235_1 | +| ir.cpp:1237:9:1237:9 | Address | &:r1237_2 | +| ir.cpp:1237:9:1237:9 | Phi | from 0:m1232_3 | +| ir.cpp:1237:9:1237:9 | Phi | from 1:m1235_3 | +| ir.cpp:1237:13:1237:13 | Address | &:r1237_3 | +| ir.cpp:1237:13:1237:13 | Load | m1237_1 | +| ir.cpp:1237:13:1237:13 | StoreValue | r1237_4 | +| ir.cpp:1240:6:1240:28 | ChiPartial | partial:m1240_3 | +| ir.cpp:1240:6:1240:28 | ChiTotal | total:m1240_2 | +| ir.cpp:1240:6:1240:28 | SideEffect | m1240_3 | +| ir.cpp:1240:34:1240:34 | Address | &:r1240_5 | +| ir.cpp:1241:9:1241:9 | Address | &:r1241_1 | +| ir.cpp:1241:12:1241:13 | StoreValue | r1241_2 | +| ir.cpp:1242:12:1242:12 | Address | &:r1242_1 | +| ir.cpp:1242:12:1242:12 | Condition | r1242_2 | +| ir.cpp:1242:12:1242:12 | Load | m1240_6 | +| ir.cpp:1244:9:1244:9 | Address | &:r1244_2 | +| ir.cpp:1244:13:1244:13 | StoreValue | r1244_1 | +| ir.cpp:1246:9:1246:9 | Address | &:r1246_2 | +| ir.cpp:1246:13:1246:13 | StoreValue | r1246_1 | +| ir.cpp:1248:9:1248:9 | Address | &:r1248_2 | +| ir.cpp:1248:9:1248:9 | Phi | from 0:m1241_3 | +| ir.cpp:1248:9:1248:9 | Phi | from 2:m1246_3 | +| ir.cpp:1248:13:1248:13 | Address | &:r1248_3 | +| ir.cpp:1248:13:1248:13 | Load | m1248_1 | +| ir.cpp:1248:13:1248:13 | StoreValue | r1248_4 | +| ir.cpp:1251:6:1251:16 | ChiPartial | partial:m1251_3 | +| ir.cpp:1251:6:1251:16 | ChiTotal | total:m1251_2 | +| ir.cpp:1251:6:1251:16 | SideEffect | m1251_3 | +| ir.cpp:1251:22:1251:22 | Address | &:r1251_5 | +| ir.cpp:1252:9:1252:9 | Address | &:r1252_1 | +| ir.cpp:1252:12:1252:13 | StoreValue | r1252_2 | +| ir.cpp:1253:12:1253:12 | Address | &:r1253_1 | +| ir.cpp:1253:12:1253:12 | Condition | r1253_2 | +| ir.cpp:1253:12:1253:12 | Load | m1251_6 | +| ir.cpp:1255:9:1255:9 | Address | &:r1255_2 | +| ir.cpp:1255:13:1255:13 | StoreValue | r1255_1 | +| ir.cpp:1258:9:1258:9 | Address | &:r1258_2 | +| ir.cpp:1258:13:1258:13 | StoreValue | r1258_1 | +| ir.cpp:1259:5:1259:5 | Phi | from 0:m1252_3 | +| ir.cpp:1259:5:1259:5 | Phi | from 1:m1255_3 | +| ir.cpp:1259:5:1259:5 | Phi | from 2:m1258_3 | +| ir.cpp:1260:9:1260:9 | Address | &:r1260_1 | +| ir.cpp:1260:13:1260:13 | Address | &:r1260_2 | +| ir.cpp:1260:13:1260:13 | Load | m1259_1 | +| ir.cpp:1260:13:1260:13 | StoreValue | r1260_3 | +| ir.cpp:1263:6:1263:24 | ChiPartial | partial:m1263_3 | +| ir.cpp:1263:6:1263:24 | ChiTotal | total:m1263_2 | +| ir.cpp:1263:6:1263:24 | SideEffect | m1263_3 | +| ir.cpp:1263:30:1263:30 | Address | &:r1263_5 | +| ir.cpp:1264:9:1264:9 | Address | &:r1264_1 | +| ir.cpp:1264:12:1264:13 | StoreValue | r1264_2 | +| ir.cpp:1265:12:1265:12 | Address | &:r1265_1 | +| ir.cpp:1265:12:1265:12 | Condition | r1265_2 | +| ir.cpp:1265:12:1265:12 | Load | m1263_6 | +| ir.cpp:1267:13:1267:13 | Address | &:r1267_2 | +| ir.cpp:1267:17:1267:17 | StoreValue | r1267_1 | +| ir.cpp:1271:13:1271:13 | Address | &:r1271_2 | +| ir.cpp:1271:17:1271:17 | StoreValue | r1271_1 | +| ir.cpp:1275:13:1275:13 | Address | &:r1275_2 | +| ir.cpp:1275:17:1275:17 | StoreValue | r1275_1 | +| ir.cpp:1276:5:1276:5 | Phi | from 1:m1267_3 | +| ir.cpp:1276:5:1276:5 | Phi | from 2:m1271_3 | +| ir.cpp:1276:5:1276:5 | Phi | from 3:m1275_3 | +| ir.cpp:1277:9:1277:9 | Address | &:r1277_1 | +| ir.cpp:1277:13:1277:13 | Address | &:r1277_2 | +| ir.cpp:1277:13:1277:13 | Load | m1276_1 | +| ir.cpp:1277:13:1277:13 | StoreValue | r1277_3 | +| ir.cpp:1280:5:1280:19 | Address | &:r1280_7 | +| ir.cpp:1280:5:1280:19 | ChiPartial | partial:m1280_3 | +| ir.cpp:1280:5:1280:19 | ChiTotal | total:m1280_2 | +| ir.cpp:1280:5:1280:19 | Load | m1286_15 | +| ir.cpp:1280:5:1280:19 | SideEffect | ~m1286_2 | +| ir.cpp:1280:25:1280:25 | Address | &:r1280_5 | +| ir.cpp:1281:16:1281:16 | Address | &:r1281_3 | +| ir.cpp:1281:16:1281:16 | SideEffect | ~m1281_6 | +| ir.cpp:1281:20:1281:20 | ChiPartial | partial:m1281_5 | +| ir.cpp:1281:20:1281:20 | ChiTotal | total:m1281_2 | +| ir.cpp:1281:20:1281:20 | StoreValue | r1281_4 | +| ir.cpp:1282:16:1282:16 | Address | &:r1282_3 | +| ir.cpp:1282:16:1282:16 | SideEffect | ~m1282_6 | +| ir.cpp:1282:20:1282:28 | ChiPartial | partial:m1282_5 | +| ir.cpp:1282:20:1282:28 | ChiTotal | total:m1282_2 | +| ir.cpp:1282:20:1282:28 | StoreValue | r1282_4 | +| ir.cpp:1283:16:1283:16 | Address | &:r1283_1 | +| ir.cpp:1283:16:1283:16 | Address | &:r1283_1 | +| ir.cpp:1283:16:1283:16 | Address | &:r1283_4 | +| ir.cpp:1283:16:1283:16 | ChiPartial | partial:m1283_10 | +| ir.cpp:1283:16:1283:16 | ChiTotal | total:m1283_8 | +| ir.cpp:1283:16:1283:16 | Condition | r1283_2 | +| ir.cpp:1283:16:1283:16 | Load | ~m1280_3 | +| ir.cpp:1283:16:1283:16 | StoreValue | r1283_9 | +| ir.cpp:1283:20:1283:20 | Address | &:r1283_5 | +| ir.cpp:1283:20:1283:20 | ChiPartial | partial:m1283_7 | +| ir.cpp:1283:20:1283:20 | ChiTotal | total:m1280_4 | +| ir.cpp:1283:20:1283:20 | Load | m1280_6 | +| ir.cpp:1283:20:1283:20 | StoreValue | r1283_6 | +| ir.cpp:1286:5:1286:25 | Address | &:r1286_3 | +| ir.cpp:1286:5:1286:25 | Phi | from 0:~m1280_3 | +| ir.cpp:1286:5:1286:25 | Phi | from 0:~m1280_4 | +| ir.cpp:1286:5:1286:25 | Phi | from 1:m1283_7 | +| ir.cpp:1286:5:1286:25 | Phi | from 1:~m1283_11 | +| ir.cpp:1286:12:1286:12 | Address | &:r1286_4 | +| ir.cpp:1286:12:1286:12 | Left | r1286_5 | +| ir.cpp:1286:12:1286:12 | Load | ~m1286_2 | +| ir.cpp:1286:12:1286:16 | Left | r1286_8 | +| ir.cpp:1286:12:1286:20 | Left | r1286_11 | +| ir.cpp:1286:12:1286:24 | StoreValue | r1286_14 | +| ir.cpp:1286:16:1286:16 | Address | &:r1286_6 | +| ir.cpp:1286:16:1286:16 | Load | ~m1286_2 | +| ir.cpp:1286:16:1286:16 | Right | r1286_7 | +| ir.cpp:1286:20:1286:20 | Address | &:r1286_9 | +| ir.cpp:1286:20:1286:20 | Load | m1286_1 | +| ir.cpp:1286:20:1286:20 | Right | r1286_10 | +| ir.cpp:1286:24:1286:24 | Address | &:r1286_12 | +| ir.cpp:1286:24:1286:24 | Load | ~m1286_2 | +| ir.cpp:1286:24:1286:24 | Right | r1286_13 | +| ir.cpp:1289:6:1289:31 | ChiPartial | partial:m1289_3 | +| ir.cpp:1289:6:1289:31 | ChiTotal | total:m1289_2 | +| ir.cpp:1289:6:1289:31 | SideEffect | ~m1293_1 | +| ir.cpp:1289:45:1289:51 | Address | &:r1289_5 | +| ir.cpp:1289:45:1289:51 | Address | &:r1289_5 | +| ir.cpp:1289:45:1289:51 | Address | &:r1289_7 | +| ir.cpp:1289:45:1289:51 | Address | &:r1289_7 | +| ir.cpp:1289:45:1289:51 | Load | m1289_6 | +| ir.cpp:1289:45:1289:51 | SideEffect | m1289_8 | +| ir.cpp:1290:19:1290:19 | Address | &:r1290_1 | +| ir.cpp:1290:19:1290:19 | Address | &:r1290_1 | +| ir.cpp:1290:19:1290:19 | Address | &:r1290_4 | +| ir.cpp:1290:19:1290:19 | Arg(this) | this:r1290_4 | +| ir.cpp:1290:19:1290:19 | ChiPartial | partial:m1290_6 | +| ir.cpp:1290:19:1290:19 | ChiTotal | total:m0_6 | +| ir.cpp:1290:19:1290:19 | Condition | r1290_2 | +| ir.cpp:1290:19:1290:19 | Load | ~m1289_3 | +| ir.cpp:1290:19:1290:19 | StoreValue | r1290_5 | +| ir.cpp:1291:19:1291:19 | Address | &:r1291_2 | +| ir.cpp:1291:19:1291:19 | Address | &:r1291_2 | +| ir.cpp:1291:19:1291:19 | Address | &:r1291_5 | +| ir.cpp:1291:19:1291:19 | Arg(this) | this:r1291_5 | +| ir.cpp:1291:19:1291:19 | ChiPartial | partial:m1291_16 | +| ir.cpp:1291:19:1291:19 | ChiTotal | total:m1291_14 | +| ir.cpp:1291:19:1291:19 | Condition | r1291_3 | +| ir.cpp:1291:19:1291:19 | Load | ~m1291_1 | +| ir.cpp:1291:19:1291:19 | Phi | from 0:~m1289_4 | +| ir.cpp:1291:19:1291:19 | Phi | from 1:~m1290_7 | +| ir.cpp:1291:19:1291:19 | StoreValue | r1291_15 | +| ir.cpp:1291:20:1291:29 | CallTarget | func:r1291_6 | +| ir.cpp:1291:20:1291:29 | ChiPartial | partial:m1291_10 | +| ir.cpp:1291:20:1291:29 | ChiPartial | partial:m1291_13 | +| ir.cpp:1291:20:1291:29 | ChiTotal | total:m1291_1 | +| ir.cpp:1291:20:1291:29 | ChiTotal | total:m1291_11 | +| ir.cpp:1291:20:1291:29 | SideEffect | ~m1291_1 | +| ir.cpp:1291:21:1291:28 | Address | &:r1291_8 | +| ir.cpp:1291:21:1291:28 | Arg(0) | 0:r1291_8 | +| ir.cpp:1291:21:1291:28 | SideEffect | ~m1289_3 | +| ir.cpp:1291:21:1291:28 | Unary | r1291_7 | +| ir.cpp:1292:19:1292:19 | Address | &:r1292_2 | +| ir.cpp:1292:19:1292:19 | Address | &:r1292_2 | +| ir.cpp:1292:19:1292:19 | Address | &:r1292_5 | +| ir.cpp:1292:19:1292:19 | Arg(this) | this:r1292_5 | +| ir.cpp:1292:19:1292:19 | ChiPartial | partial:m1292_16 | +| ir.cpp:1292:19:1292:19 | ChiTotal | total:m1292_14 | +| ir.cpp:1292:19:1292:19 | Condition | r1292_3 | +| ir.cpp:1292:19:1292:19 | Load | ~m1292_1 | +| ir.cpp:1292:19:1292:19 | Phi | from 2:~m1291_1 | +| ir.cpp:1292:19:1292:19 | Phi | from 3:~m1291_17 | +| ir.cpp:1292:19:1292:19 | StoreValue | r1292_15 | +| ir.cpp:1292:20:1292:28 | CallTarget | func:r1292_6 | +| ir.cpp:1292:20:1292:28 | ChiPartial | partial:m1292_10 | +| ir.cpp:1292:20:1292:28 | ChiPartial | partial:m1292_13 | +| ir.cpp:1292:20:1292:28 | ChiTotal | total:m1292_1 | +| ir.cpp:1292:20:1292:28 | ChiTotal | total:m1292_11 | +| ir.cpp:1292:20:1292:28 | SideEffect | ~m1292_1 | +| ir.cpp:1292:21:1292:27 | Address | &:r1292_7 | +| ir.cpp:1292:21:1292:27 | Address | &:r1292_8 | +| ir.cpp:1292:21:1292:27 | Arg(0) | 0:r1292_8 | +| ir.cpp:1292:21:1292:27 | Load | m1289_6 | +| ir.cpp:1292:21:1292:27 | SideEffect | ~m1289_8 | +| ir.cpp:1293:1:1293:1 | Phi | from 4:~m1292_1 | +| ir.cpp:1293:1:1293:1 | Phi | from 5:~m1292_17 | +| ir.cpp:1300:6:1300:17 | ChiPartial | partial:m1300_3 | +| ir.cpp:1300:6:1300:17 | ChiTotal | total:m1300_2 | +| ir.cpp:1300:6:1300:17 | SideEffect | m1300_3 | +| ir.cpp:1300:25:1300:26 | Address | &:r1300_5 | +| ir.cpp:1300:25:1300:26 | Address | &:r1300_5 | +| ir.cpp:1300:25:1300:26 | Address | &:r1300_7 | +| ir.cpp:1300:25:1300:26 | Address | &:r1300_7 | +| ir.cpp:1300:25:1300:26 | Load | m1300_6 | +| ir.cpp:1300:25:1300:26 | SideEffect | m1300_8 | +| ir.cpp:1300:35:1300:36 | Address | &:r1300_9 | +| ir.cpp:1300:35:1300:36 | Address | &:r1300_9 | +| ir.cpp:1300:35:1300:36 | Address | &:r1300_11 | +| ir.cpp:1300:35:1300:36 | Address | &:r1300_11 | +| ir.cpp:1300:35:1300:36 | Load | m1300_10 | +| ir.cpp:1300:35:1300:36 | SideEffect | m1300_12 | +| ir.cpp:1301:10:1301:15 | Address | &:r1301_1 | +| ir.cpp:1301:10:1301:15 | Left | r1301_1 | +| ir.cpp:1301:10:1301:15 | Left | r1301_1 | +| ir.cpp:1301:24:1301:27 | Address | &:r1301_4 | +| ir.cpp:1301:24:1301:27 | Address | &:r1301_9 | +| ir.cpp:1301:24:1301:27 | ChiPartial | partial:m1301_11 | +| ir.cpp:1301:24:1301:27 | ChiTotal | total:m1301_7 | +| ir.cpp:1301:24:1301:27 | Right | r1301_3 | +| ir.cpp:1301:24:1301:27 | Right | r1301_8 | +| ir.cpp:1301:24:1301:27 | StoreValue | r1301_10 | +| ir.cpp:1301:26:1301:26 | ChiPartial | partial:m1301_6 | +| ir.cpp:1301:26:1301:26 | ChiTotal | total:m1301_2 | +| ir.cpp:1301:26:1301:26 | StoreValue | r1301_5 | +| ir.cpp:1303:5:1303:10 | CallTarget | func:r1303_1 | +| ir.cpp:1303:12:1303:17 | Address | &:r1303_3 | +| ir.cpp:1303:12:1303:17 | Arg(0) | 0:r1303_3 | +| ir.cpp:1303:12:1303:17 | ChiPartial | partial:m1303_9 | +| ir.cpp:1303:12:1303:17 | ChiTotal | total:m1301_12 | +| ir.cpp:1303:12:1303:17 | Unary | r1303_2 | +| ir.cpp:1303:20:1303:21 | Address | &:r1303_4 | +| ir.cpp:1303:20:1303:21 | Address | &:r1303_6 | +| ir.cpp:1303:20:1303:21 | Arg(1) | 1:r1303_6 | +| ir.cpp:1303:20:1303:21 | Load | m1300_6 | +| ir.cpp:1303:20:1303:21 | SideEffect | ~m1300_8 | +| ir.cpp:1303:20:1303:21 | Unary | r1303_5 | +| ir.cpp:1304:5:1304:10 | CallTarget | func:r1304_1 | +| ir.cpp:1304:12:1304:17 | Address | &:r1304_3 | +| ir.cpp:1304:12:1304:17 | Address | &:r1304_3 | +| ir.cpp:1304:12:1304:17 | Arg(0) | 0:r1304_3 | +| ir.cpp:1304:12:1304:17 | ChiPartial | partial:m1304_10 | +| ir.cpp:1304:12:1304:17 | ChiTotal | total:m1303_10 | +| ir.cpp:1304:12:1304:17 | SideEffect | ~m1303_10 | +| ir.cpp:1304:12:1304:17 | Unary | r1304_2 | +| ir.cpp:1304:20:1304:21 | Address | &:r1304_4 | +| ir.cpp:1304:20:1304:21 | Address | &:r1304_6 | +| ir.cpp:1304:20:1304:21 | Arg(1) | 1:r1304_6 | +| ir.cpp:1304:20:1304:21 | Load | m1300_10 | +| ir.cpp:1304:20:1304:21 | SideEffect | ~m1300_12 | +| ir.cpp:1304:20:1304:21 | Unary | r1304_5 | +| ir.cpp:1310:17:1310:29 | ChiPartial | partial:m1310_3 | +| ir.cpp:1310:17:1310:29 | ChiTotal | total:m1310_2 | +| ir.cpp:1310:17:1310:29 | SideEffect | m1310_3 | +| ir.cpp:1310:34:1310:34 | Address | &:r1310_5 | +| ir.cpp:1310:34:1310:34 | Address | &:r1310_5 | +| ir.cpp:1310:34:1310:34 | Address | &:r1310_7 | +| ir.cpp:1310:34:1310:34 | Address | &:r1310_7 | +| ir.cpp:1310:34:1310:34 | Load | m1310_6 | +| ir.cpp:1310:34:1310:34 | SideEffect | m1311_7 | +| ir.cpp:1310:41:1310:41 | Address | &:r1310_9 | +| ir.cpp:1311:9:1311:9 | Address | &:r1311_3 | +| ir.cpp:1311:9:1311:9 | Load | m1310_6 | +| ir.cpp:1311:9:1311:9 | Unary | r1311_4 | +| ir.cpp:1311:9:1311:21 | ChiPartial | partial:m1311_6 | +| ir.cpp:1311:9:1311:21 | ChiTotal | total:m1310_8 | +| ir.cpp:1311:12:1311:17 | Address | &:r1311_5 | +| ir.cpp:1311:21:1311:21 | Address | &:r1311_1 | +| ir.cpp:1311:21:1311:21 | Load | m1310_10 | +| ir.cpp:1311:21:1311:21 | StoreValue | r1311_2 | +| ir.cpp:1319:6:1319:33 | ChiPartial | partial:m1319_3 | +| ir.cpp:1319:6:1319:33 | ChiTotal | total:m1319_2 | +| ir.cpp:1319:6:1319:33 | SideEffect | ~m1336_6 | +| ir.cpp:1319:39:1319:45 | Address | &:r1319_5 | +| ir.cpp:1319:51:1319:55 | Address | &:r1319_7 | +| ir.cpp:1319:51:1319:55 | Address | &:r1319_7 | +| ir.cpp:1319:51:1319:55 | Address | &:r1319_9 | +| ir.cpp:1319:51:1319:55 | Address | &:r1319_9 | +| ir.cpp:1319:51:1319:55 | Load | m1319_8 | +| ir.cpp:1319:51:1319:55 | SideEffect | m1330_12 | +| ir.cpp:1320:7:1320:7 | Address | &:r1320_1 | +| ir.cpp:1320:7:1320:7 | Address | &:r1320_1 | +| ir.cpp:1320:7:1320:7 | Arg(this) | this:r1320_1 | +| ir.cpp:1320:7:1320:7 | CallTarget | func:r1320_3 | +| ir.cpp:1320:7:1320:7 | ChiPartial | partial:m1320_5 | +| ir.cpp:1320:7:1320:7 | ChiPartial | partial:m1320_7 | +| ir.cpp:1320:7:1320:7 | ChiTotal | total:m1319_4 | +| ir.cpp:1320:7:1320:7 | ChiTotal | total:m1320_2 | +| ir.cpp:1320:7:1320:7 | SideEffect | ~m1319_4 | +| ir.cpp:1321:7:1321:26 | CallTarget | func:r1321_2 | +| ir.cpp:1321:7:1321:26 | ChiPartial | partial:m1321_5 | +| ir.cpp:1321:7:1321:26 | ChiTotal | total:m1320_6 | +| ir.cpp:1321:7:1321:26 | SideEffect | ~m1320_6 | +| ir.cpp:1321:28:1321:29 | Arg(0) | 0:r1321_3 | +| ir.cpp:1322:5:1322:27 | CallTarget | func:r1322_1 | +| ir.cpp:1322:5:1322:27 | ChiPartial | partial:m1322_4 | +| ir.cpp:1322:5:1322:27 | ChiTotal | total:m1321_6 | +| ir.cpp:1322:5:1322:27 | SideEffect | ~m1321_6 | +| ir.cpp:1322:29:1322:30 | Arg(0) | 0:r1322_2 | +| ir.cpp:1324:7:1324:7 | Address | &:r1324_1 | +| ir.cpp:1325:7:1325:19 | CallTarget | func:r1325_2 | +| ir.cpp:1325:7:1325:19 | ChiPartial | partial:m1325_8 | +| ir.cpp:1325:7:1325:19 | ChiTotal | total:m1322_5 | +| ir.cpp:1325:7:1325:19 | SideEffect | ~m1322_5 | +| ir.cpp:1325:21:1325:22 | Address | &:r1325_4 | +| ir.cpp:1325:21:1325:22 | Address | &:r1325_4 | +| ir.cpp:1325:21:1325:22 | Arg(0) | 0:r1325_4 | +| ir.cpp:1325:21:1325:22 | ChiPartial | partial:m1325_11 | +| ir.cpp:1325:21:1325:22 | ChiTotal | total:m1324_2 | +| ir.cpp:1325:21:1325:22 | SideEffect | ~m1324_2 | +| ir.cpp:1325:22:1325:22 | Unary | r1325_3 | +| ir.cpp:1325:25:1325:31 | Address | &:r1325_5 | +| ir.cpp:1325:25:1325:31 | Arg(1) | 1:r1325_6 | +| ir.cpp:1325:25:1325:31 | Load | m1319_6 | +| ir.cpp:1326:5:1326:20 | CallTarget | func:r1326_1 | +| ir.cpp:1326:5:1326:20 | ChiPartial | partial:m1326_7 | +| ir.cpp:1326:5:1326:20 | ChiTotal | total:m1325_9 | +| ir.cpp:1326:5:1326:20 | SideEffect | ~m1325_9 | +| ir.cpp:1326:22:1326:23 | Address | &:r1326_3 | +| ir.cpp:1326:22:1326:23 | Address | &:r1326_3 | +| ir.cpp:1326:22:1326:23 | Arg(0) | 0:r1326_3 | +| ir.cpp:1326:22:1326:23 | ChiPartial | partial:m1326_10 | +| ir.cpp:1326:22:1326:23 | ChiTotal | total:m1325_12 | +| ir.cpp:1326:22:1326:23 | SideEffect | ~m1325_12 | +| ir.cpp:1326:23:1326:23 | Unary | r1326_2 | +| ir.cpp:1326:26:1326:32 | Address | &:r1326_4 | +| ir.cpp:1326:26:1326:32 | Arg(1) | 1:r1326_5 | +| ir.cpp:1326:26:1326:32 | Load | m1319_6 | +| ir.cpp:1328:7:1328:7 | Unary | r1328_1 | +| ir.cpp:1328:11:1328:23 | CallTarget | func:r1328_3 | +| ir.cpp:1328:11:1328:23 | ChiPartial | partial:m1328_11 | +| ir.cpp:1328:11:1328:23 | ChiTotal | total:m1326_8 | +| ir.cpp:1328:11:1328:23 | SideEffect | ~m1326_8 | +| ir.cpp:1328:25:1328:29 | Address | &:r1328_4 | +| ir.cpp:1328:25:1328:29 | Address | &:r1328_5 | +| ir.cpp:1328:25:1328:29 | Address | &:r1328_5 | +| ir.cpp:1328:25:1328:29 | Arg(0) | 0:r1328_5 | +| ir.cpp:1328:25:1328:29 | ChiPartial | partial:m1328_14 | +| ir.cpp:1328:25:1328:29 | ChiTotal | total:m1319_10 | +| ir.cpp:1328:25:1328:29 | Load | m1319_8 | +| ir.cpp:1328:25:1328:29 | SideEffect | ~m1319_10 | +| ir.cpp:1328:32:1328:38 | Address | &:r1328_6 | +| ir.cpp:1328:32:1328:38 | Left | r1328_7 | +| ir.cpp:1328:32:1328:38 | Load | m1319_6 | +| ir.cpp:1328:32:1328:42 | Arg(1) | 1:r1328_9 | +| ir.cpp:1328:42:1328:42 | Right | r1328_8 | +| ir.cpp:1329:7:1329:11 | Address | &:r1329_1 | +| ir.cpp:1329:7:1329:11 | Load | m1319_8 | +| ir.cpp:1329:7:1329:11 | Unary | r1329_2 | +| ir.cpp:1329:14:1329:26 | CallTarget | func:r1329_4 | +| ir.cpp:1329:14:1329:26 | ChiPartial | partial:m1329_9 | +| ir.cpp:1329:14:1329:26 | ChiTotal | total:m1328_12 | +| ir.cpp:1329:14:1329:26 | SideEffect | ~m1328_12 | +| ir.cpp:1329:28:1329:29 | Address | &:r1329_6 | +| ir.cpp:1329:28:1329:29 | Address | &:r1329_6 | +| ir.cpp:1329:28:1329:29 | Arg(0) | 0:r1329_6 | +| ir.cpp:1329:28:1329:29 | ChiPartial | partial:m1329_12 | +| ir.cpp:1329:28:1329:29 | ChiTotal | total:m1326_11 | +| ir.cpp:1329:28:1329:29 | SideEffect | ~m1326_11 | +| ir.cpp:1329:29:1329:29 | Unary | r1329_5 | +| ir.cpp:1329:32:1329:33 | Arg(1) | 1:r1329_7 | +| ir.cpp:1330:5:1330:9 | Address | &:r1330_1 | +| ir.cpp:1330:5:1330:9 | Load | m1319_8 | +| ir.cpp:1330:12:1330:24 | CallTarget | func:r1330_3 | +| ir.cpp:1330:12:1330:24 | ChiPartial | partial:m1330_8 | +| ir.cpp:1330:12:1330:24 | ChiTotal | total:m1329_10 | +| ir.cpp:1330:12:1330:24 | SideEffect | ~m1329_10 | +| ir.cpp:1330:26:1330:30 | Address | &:r1330_4 | +| ir.cpp:1330:26:1330:30 | Address | &:r1330_5 | +| ir.cpp:1330:26:1330:30 | Address | &:r1330_5 | +| ir.cpp:1330:26:1330:30 | Arg(0) | 0:r1330_5 | +| ir.cpp:1330:26:1330:30 | ChiPartial | partial:m1330_11 | +| ir.cpp:1330:26:1330:30 | ChiTotal | total:m1328_15 | +| ir.cpp:1330:26:1330:30 | Load | m1319_8 | +| ir.cpp:1330:26:1330:30 | SideEffect | ~m1328_15 | +| ir.cpp:1330:33:1330:34 | Arg(1) | 1:r1330_6 | +| ir.cpp:1332:7:1332:31 | CallTarget | func:r1332_2 | +| ir.cpp:1332:7:1332:31 | ChiPartial | partial:m1332_4 | +| ir.cpp:1332:7:1332:31 | ChiTotal | total:m1330_9 | +| ir.cpp:1332:7:1332:31 | SideEffect | ~m1330_9 | +| ir.cpp:1333:5:1333:32 | CallTarget | func:r1333_1 | +| ir.cpp:1333:5:1333:32 | ChiPartial | partial:m1333_3 | +| ir.cpp:1333:5:1333:32 | ChiTotal | total:m1332_5 | +| ir.cpp:1333:5:1333:32 | SideEffect | ~m1332_5 | +| ir.cpp:1335:5:1335:20 | CallTarget | func:r1335_1 | +| ir.cpp:1335:5:1335:20 | ChiPartial | partial:m1335_3 | +| ir.cpp:1335:5:1335:20 | ChiTotal | total:m1333_4 | +| ir.cpp:1335:5:1335:20 | SideEffect | ~m1333_4 | +| ir.cpp:1335:25:1335:49 | CallTarget | func:r1335_5 | +| ir.cpp:1335:25:1335:49 | ChiPartial | partial:m1335_7 | +| ir.cpp:1335:25:1335:49 | ChiTotal | total:m1335_4 | +| ir.cpp:1335:25:1335:49 | SideEffect | ~m1335_4 | +| ir.cpp:1336:1:1336:1 | Address | &:r1336_2 | +| ir.cpp:1336:1:1336:1 | Address | &:r1336_2 | +| ir.cpp:1336:1:1336:1 | Arg(this) | this:r1336_2 | +| ir.cpp:1336:1:1336:1 | CallTarget | func:r1336_3 | +| ir.cpp:1336:1:1336:1 | ChiPartial | partial:m1336_5 | +| ir.cpp:1336:1:1336:1 | ChiPartial | partial:m1336_8 | +| ir.cpp:1336:1:1336:1 | ChiTotal | total:m1320_8 | +| ir.cpp:1336:1:1336:1 | ChiTotal | total:m1335_8 | +| ir.cpp:1336:1:1336:1 | SideEffect | m1320_8 | +| ir.cpp:1336:1:1336:1 | SideEffect | ~m1335_8 | +| ir.cpp:1338:5:1338:22 | Address | &:r1338_10 | +| ir.cpp:1338:5:1338:22 | ChiPartial | partial:m1338_3 | +| ir.cpp:1338:5:1338:22 | ChiTotal | total:m1338_2 | +| ir.cpp:1338:5:1338:22 | Load | m1338_9 | +| ir.cpp:1338:5:1338:22 | Phi | from 2:m1340_4 | +| ir.cpp:1338:5:1338:22 | Phi | from 3:m1342_2 | +| ir.cpp:1338:5:1338:22 | SideEffect | m1338_3 | +| ir.cpp:1338:29:1338:29 | Address | &:r1338_5 | +| ir.cpp:1338:36:1338:36 | Address | &:r1338_7 | +| ir.cpp:1339:9:1339:9 | Address | &:r1339_1 | +| ir.cpp:1339:9:1339:9 | Condition | r1339_2 | +| ir.cpp:1339:9:1339:9 | Load | m1338_6 | +| ir.cpp:1340:9:1340:17 | Address | &:r1340_1 | +| ir.cpp:1340:16:1340:16 | Address | &:r1340_2 | +| ir.cpp:1340:16:1340:16 | Load | m1338_8 | +| ir.cpp:1340:16:1340:16 | StoreValue | r1340_3 | +| ir.cpp:1342:1:1342:1 | Address | &:r1342_1 | +| ir.cpp:1344:6:1344:15 | ChiPartial | partial:m1344_3 | +| ir.cpp:1344:6:1344:15 | ChiTotal | total:m1344_2 | +| ir.cpp:1344:6:1344:15 | SideEffect | ~m1345_8 | +| ir.cpp:1344:21:1344:21 | Address | &:r1344_5 | +| ir.cpp:1344:28:1344:28 | Address | &:r1344_7 | +| ir.cpp:1345:12:1345:21 | CallTarget | func:r1345_1 | +| ir.cpp:1345:12:1345:21 | ChiPartial | partial:m1345_7 | +| ir.cpp:1345:12:1345:21 | ChiTotal | total:m1344_4 | +| ir.cpp:1345:12:1345:21 | SideEffect | ~m1344_4 | +| ir.cpp:1345:23:1345:23 | Address | &:r1345_2 | +| ir.cpp:1345:23:1345:23 | Arg(0) | 0:r1345_3 | +| ir.cpp:1345:23:1345:23 | Load | m1344_6 | +| ir.cpp:1345:26:1345:26 | Address | &:r1345_4 | +| ir.cpp:1345:26:1345:26 | Arg(1) | 1:r1345_5 | +| ir.cpp:1345:26:1345:26 | Load | m1344_8 | +| ir.cpp:1348:6:1348:25 | ChiPartial | partial:m1348_3 | +| ir.cpp:1348:6:1348:25 | ChiTotal | total:m1348_2 | +| ir.cpp:1348:6:1348:25 | SideEffect | m1348_3 | +| ir.cpp:1348:32:1348:32 | Address | &:r1348_5 | +| ir.cpp:1348:39:1348:39 | Address | &:r1348_7 | +| ir.cpp:1348:47:1348:47 | Address | &:r1348_9 | +| ir.cpp:1349:9:1349:9 | Address | &:r1349_1 | +| ir.cpp:1349:13:1349:13 | Address | &:r1349_2 | +| ir.cpp:1349:13:1349:13 | Load | m1348_8 | +| ir.cpp:1349:13:1349:13 | StoreValue | r1349_3 | +| ir.cpp:1350:5:1350:5 | Address | &:r1350_7 | +| ir.cpp:1350:9:1350:9 | Address | &:r1350_1 | +| ir.cpp:1350:9:1350:9 | Condition | r1350_2 | +| ir.cpp:1350:9:1350:9 | Load | m1348_6 | +| ir.cpp:1350:9:1350:9 | StoreValue | r1350_2 | +| ir.cpp:1350:9:1350:14 | Address | &:r1350_5 | +| ir.cpp:1350:9:1350:14 | Address | &:r1350_9 | +| ir.cpp:1350:9:1350:14 | Address | &:r1350_13 | +| ir.cpp:1350:9:1350:14 | Load | m1350_4 | +| ir.cpp:1350:9:1350:14 | Phi | from 2:m1350_10 | +| ir.cpp:1350:9:1350:14 | Phi | from 3:m1350_14 | +| ir.cpp:1350:9:1350:14 | StoreValue | r1350_6 | +| ir.cpp:1350:14:1350:14 | Address | &:r1350_11 | +| ir.cpp:1350:14:1350:14 | Load | m1348_8 | +| ir.cpp:1350:14:1350:14 | StoreValue | r1350_12 | +| ir.cpp:1351:5:1351:5 | Address | &:r1351_8 | +| ir.cpp:1351:9:1351:9 | Address | &:r1351_1 | +| ir.cpp:1351:9:1351:9 | Condition | r1351_2 | +| ir.cpp:1351:9:1351:9 | Load | m1348_6 | +| ir.cpp:1351:9:1351:9 | StoreValue | r1351_2 | +| ir.cpp:1351:9:1351:14 | Address | &:r1351_5 | +| ir.cpp:1351:9:1351:14 | Address | &:r1351_10 | +| ir.cpp:1351:9:1351:14 | Address | &:r1351_14 | +| ir.cpp:1351:9:1351:14 | Load | m1351_4 | +| ir.cpp:1351:9:1351:14 | Phi | from 5:m1351_11 | +| ir.cpp:1351:9:1351:14 | Phi | from 6:m1351_15 | +| ir.cpp:1351:9:1351:14 | StoreValue | r1351_7 | +| ir.cpp:1351:9:1351:14 | Unary | r1351_6 | +| ir.cpp:1351:14:1351:14 | Address | &:r1351_12 | +| ir.cpp:1351:14:1351:14 | Load | m1348_10 | +| ir.cpp:1351:14:1351:14 | StoreValue | r1351_13 | +| ir.cpp:1352:5:1352:5 | Address | &:r1352_9 | +| ir.cpp:1352:9:1352:9 | Address | &:r1352_1 | +| ir.cpp:1352:9:1352:9 | Condition | r1352_4 | +| ir.cpp:1352:9:1352:9 | Left | r1352_2 | +| ir.cpp:1352:9:1352:9 | Load | m1348_8 | +| ir.cpp:1352:9:1352:9 | Right | r1352_3 | +| ir.cpp:1352:9:1352:9 | StoreValue | r1352_2 | +| ir.cpp:1352:9:1352:14 | Address | &:r1352_7 | +| ir.cpp:1352:9:1352:14 | Address | &:r1352_11 | +| ir.cpp:1352:9:1352:14 | Address | &:r1352_15 | +| ir.cpp:1352:9:1352:14 | Load | m1352_6 | +| ir.cpp:1352:9:1352:14 | Phi | from 8:m1352_12 | +| ir.cpp:1352:9:1352:14 | Phi | from 9:m1352_16 | +| ir.cpp:1352:9:1352:14 | StoreValue | r1352_8 | +| ir.cpp:1352:14:1352:14 | Address | &:r1352_13 | +| ir.cpp:1352:14:1352:14 | Load | m1348_8 | +| ir.cpp:1352:14:1352:14 | StoreValue | r1352_14 | +| ir.cpp:1353:5:1353:5 | Address | &:r1353_10 | +| ir.cpp:1353:9:1353:9 | Address | &:r1353_1 | +| ir.cpp:1353:9:1353:9 | Condition | r1353_4 | +| ir.cpp:1353:9:1353:9 | Left | r1353_2 | +| ir.cpp:1353:9:1353:9 | Load | m1348_8 | +| ir.cpp:1353:9:1353:9 | Right | r1353_3 | +| ir.cpp:1353:9:1353:9 | StoreValue | r1353_2 | +| ir.cpp:1353:9:1353:14 | Address | &:r1353_7 | +| ir.cpp:1353:9:1353:14 | Address | &:r1353_12 | +| ir.cpp:1353:9:1353:14 | Address | &:r1353_16 | +| ir.cpp:1353:9:1353:14 | Load | m1353_6 | +| ir.cpp:1353:9:1353:14 | Phi | from 11:m1353_13 | +| ir.cpp:1353:9:1353:14 | Phi | from 12:m1353_17 | +| ir.cpp:1353:9:1353:14 | StoreValue | r1353_9 | +| ir.cpp:1353:9:1353:14 | Unary | r1353_8 | +| ir.cpp:1353:14:1353:14 | Address | &:r1353_14 | +| ir.cpp:1353:14:1353:14 | Load | m1348_10 | +| ir.cpp:1353:14:1353:14 | StoreValue | r1353_15 | +| ir.cpp:1354:5:1354:5 | Address | &:r1354_10 | +| ir.cpp:1354:9:1354:9 | Address | &:r1354_1 | +| ir.cpp:1354:9:1354:9 | Condition | r1354_4 | +| ir.cpp:1354:9:1354:9 | Left | r1354_2 | +| ir.cpp:1354:9:1354:9 | Load | m1348_10 | +| ir.cpp:1354:9:1354:9 | Right | r1354_3 | +| ir.cpp:1354:9:1354:9 | StoreValue | r1354_2 | +| ir.cpp:1354:9:1354:14 | Address | &:r1354_7 | +| ir.cpp:1354:9:1354:14 | Address | &:r1354_12 | +| ir.cpp:1354:9:1354:14 | Address | &:r1354_17 | +| ir.cpp:1354:9:1354:14 | Load | m1354_6 | +| ir.cpp:1354:9:1354:14 | Phi | from 14:m1354_13 | +| ir.cpp:1354:9:1354:14 | Phi | from 15:m1354_18 | +| ir.cpp:1354:9:1354:14 | StoreValue | r1354_9 | +| ir.cpp:1354:9:1354:14 | Unary | r1354_8 | +| ir.cpp:1354:14:1354:14 | Address | &:r1354_14 | +| ir.cpp:1354:14:1354:14 | Load | m1348_8 | +| ir.cpp:1354:14:1354:14 | StoreValue | r1354_16 | +| ir.cpp:1354:14:1354:14 | Unary | r1354_15 | +| ir.cpp:1355:5:1355:5 | Address | &:r1355_10 | +| ir.cpp:1355:9:1355:9 | Address | &:r1355_1 | +| ir.cpp:1355:9:1355:9 | Condition | r1355_4 | +| ir.cpp:1355:9:1355:9 | Left | r1355_2 | +| ir.cpp:1355:9:1355:9 | Load | m1348_10 | +| ir.cpp:1355:9:1355:9 | Right | r1355_3 | +| ir.cpp:1355:9:1355:9 | StoreValue | r1355_2 | +| ir.cpp:1355:9:1355:14 | Address | &:r1355_7 | +| ir.cpp:1355:9:1355:14 | Address | &:r1355_12 | +| ir.cpp:1355:9:1355:14 | Address | &:r1355_16 | +| ir.cpp:1355:9:1355:14 | Load | m1355_6 | +| ir.cpp:1355:9:1355:14 | Phi | from 17:m1355_13 | +| ir.cpp:1355:9:1355:14 | Phi | from 18:m1355_17 | +| ir.cpp:1355:9:1355:14 | StoreValue | r1355_9 | +| ir.cpp:1355:9:1355:14 | Unary | r1355_8 | +| ir.cpp:1355:14:1355:14 | Address | &:r1355_14 | +| ir.cpp:1355:14:1355:14 | Load | m1348_10 | +| ir.cpp:1355:14:1355:14 | StoreValue | r1355_15 | +| ir.cpp:1357:5:1357:5 | Address | &:r1357_9 | +| ir.cpp:1357:9:1357:26 | Address | &:r1357_7 | +| ir.cpp:1357:9:1357:26 | Address | &:r1357_11 | +| ir.cpp:1357:9:1357:26 | Address | &:r1357_33 | +| ir.cpp:1357:9:1357:26 | Load | m1357_6 | +| ir.cpp:1357:9:1357:26 | Phi | from 20:m1357_12 | +| ir.cpp:1357:9:1357:26 | Phi | from 26:m1357_34 | +| ir.cpp:1357:9:1357:26 | StoreValue | r1357_8 | +| ir.cpp:1357:10:1357:10 | Address | &:r1357_1 | +| ir.cpp:1357:10:1357:10 | Condition | r1357_4 | +| ir.cpp:1357:10:1357:10 | Left | r1357_2 | +| ir.cpp:1357:10:1357:10 | Load | m1348_8 | +| ir.cpp:1357:10:1357:10 | Right | r1357_3 | +| ir.cpp:1357:10:1357:20 | Address | &:r1357_13 | +| ir.cpp:1357:10:1357:20 | Address | &:r1357_17 | +| ir.cpp:1357:10:1357:20 | Address | &:r1357_20 | +| ir.cpp:1357:10:1357:20 | Condition | r1357_18 | +| ir.cpp:1357:10:1357:20 | Load | m1357_16 | +| ir.cpp:1357:10:1357:20 | Phi | from 21:m1357_15 | +| ir.cpp:1357:10:1357:20 | Phi | from 23:m1357_22 | +| ir.cpp:1357:10:1357:20 | StoreValue | r1357_14 | +| ir.cpp:1357:10:1357:20 | StoreValue | r1357_18 | +| ir.cpp:1357:10:1357:20 | StoreValue | r1357_21 | +| ir.cpp:1357:15:1357:15 | Address | &:r1357_23 | +| ir.cpp:1357:15:1357:15 | Condition | r1357_24 | +| ir.cpp:1357:15:1357:15 | Load | m1348_6 | +| ir.cpp:1357:20:1357:20 | Address | &:r1357_26 | +| ir.cpp:1357:20:1357:20 | Condition | r1357_29 | +| ir.cpp:1357:20:1357:20 | Left | r1357_27 | +| ir.cpp:1357:20:1357:20 | Load | m1348_10 | +| ir.cpp:1357:20:1357:20 | Right | r1357_28 | +| ir.cpp:1357:26:1357:26 | Address | &:r1357_31 | +| ir.cpp:1357:26:1357:26 | Load | m1348_8 | +| ir.cpp:1357:26:1357:26 | StoreValue | r1357_32 | +| ir.cpp:1363:5:1363:27 | Address | &:r1363_9 | +| ir.cpp:1363:5:1363:27 | ChiPartial | partial:m1363_3 | +| ir.cpp:1363:5:1363:27 | ChiTotal | total:m1363_2 | +| ir.cpp:1363:5:1363:27 | Load | m1364_11 | +| ir.cpp:1363:5:1363:27 | SideEffect | ~m1364_7 | +| ir.cpp:1363:33:1363:33 | Address | &:r1363_5 | +| ir.cpp:1363:40:1363:40 | Address | &:r1363_7 | +| ir.cpp:1364:5:1364:48 | Address | &:r1364_1 | +| ir.cpp:1364:12:1364:21 | CallTarget | func:r1364_2 | +| ir.cpp:1364:12:1364:21 | ChiPartial | partial:m1364_4 | +| ir.cpp:1364:12:1364:21 | ChiTotal | total:m1363_4 | +| ir.cpp:1364:12:1364:21 | Condition | r1364_3 | +| ir.cpp:1364:12:1364:21 | SideEffect | ~m1363_4 | +| ir.cpp:1364:12:1364:47 | Address | &:r1364_9 | +| ir.cpp:1364:12:1364:47 | Address | &:r1364_19 | +| ir.cpp:1364:12:1364:47 | Address | &:r1364_24 | +| ir.cpp:1364:12:1364:47 | Load | m1364_8 | +| ir.cpp:1364:12:1364:47 | Phi | from 3:m1364_20 | +| ir.cpp:1364:12:1364:47 | Phi | from 3:~m1364_15 | +| ir.cpp:1364:12:1364:47 | Phi | from 4:m1364_25 | +| ir.cpp:1364:12:1364:47 | Phi | from 4:~m1364_21 | +| ir.cpp:1364:12:1364:47 | StoreValue | r1364_10 | +| ir.cpp:1364:28:1364:37 | CallTarget | func:r1364_12 | +| ir.cpp:1364:28:1364:37 | ChiPartial | partial:m1364_14 | +| ir.cpp:1364:28:1364:37 | ChiTotal | total:m1364_5 | +| ir.cpp:1364:28:1364:37 | Condition | r1364_13 | +| ir.cpp:1364:28:1364:37 | SideEffect | ~m1364_5 | +| ir.cpp:1364:43:1364:43 | Address | &:r1364_17 | +| ir.cpp:1364:43:1364:43 | Load | m1363_6 | +| ir.cpp:1364:43:1364:43 | StoreValue | r1364_18 | +| ir.cpp:1364:47:1364:47 | Address | &:r1364_22 | +| ir.cpp:1364:47:1364:47 | Load | m1363_8 | +| ir.cpp:1364:47:1364:47 | Phi | from 0:~m1364_5 | +| ir.cpp:1364:47:1364:47 | Phi | from 2:~m1364_15 | +| ir.cpp:1364:47:1364:47 | StoreValue | r1364_23 | +| ir.cpp:1369:6:1369:6 | ChiPartial | partial:m1369_3 | +| ir.cpp:1369:6:1369:6 | ChiTotal | total:m1369_2 | +| ir.cpp:1369:6:1369:6 | SideEffect | ~m1371_8 | +| ir.cpp:1369:13:1369:13 | Address | &:r1369_5 | +| ir.cpp:1369:13:1369:13 | Address | &:r1369_5 | +| ir.cpp:1369:13:1369:13 | Address | &:r1369_7 | +| ir.cpp:1369:13:1369:13 | Address | &:r1369_7 | +| ir.cpp:1369:13:1369:13 | Load | m1369_6 | +| ir.cpp:1369:13:1369:13 | SideEffect | m1369_8 | +| ir.cpp:1371:3:1371:13 | Address | &:r1371_6 | +| ir.cpp:1371:3:1371:13 | Arg(0) | 0:r1371_2 | +| ir.cpp:1371:3:1371:13 | CallTarget | func:r1371_1 | +| ir.cpp:1371:3:1371:13 | ChiPartial | partial:m1371_7 | +| ir.cpp:1371:3:1371:13 | ChiTotal | total:m1369_4 | +| ir.cpp:1371:3:1371:13 | SideEffect | ~m1369_4 | +| ir.cpp:1371:3:1371:13 | Unary | r1371_6 | +| ir.cpp:1371:8:1371:8 | Address | &:r1371_3 | +| ir.cpp:1371:8:1371:8 | Arg(1) | 1:r1371_5 | +| ir.cpp:1371:8:1371:8 | Load | m1369_6 | +| ir.cpp:1371:8:1371:8 | Unary | r1371_4 | +| ir.cpp:1375:3:1375:3 | Address | &:r1375_5 | +| ir.cpp:1375:3:1375:3 | Address | &:r1375_5 | +| ir.cpp:1375:3:1375:3 | Address | &:r1375_5 | +| ir.cpp:1375:3:1375:3 | Address | &:r1375_5 | +| ir.cpp:1375:3:1375:3 | ChiPartial | partial:m1375_3 | +| ir.cpp:1375:3:1375:3 | ChiPartial | partial:m1375_3 | +| ir.cpp:1375:3:1375:3 | ChiPartial | partial:m1375_3 | +| ir.cpp:1375:3:1375:3 | ChiPartial | partial:m1375_3 | +| ir.cpp:1375:3:1375:3 | ChiTotal | total:m1375_2 | +| ir.cpp:1375:3:1375:3 | ChiTotal | total:m1375_2 | +| ir.cpp:1375:3:1375:3 | ChiTotal | total:m1375_2 | +| ir.cpp:1375:3:1375:3 | ChiTotal | total:m1375_2 | +| ir.cpp:1375:3:1375:3 | Load | m1376_3 | +| ir.cpp:1375:3:1375:3 | Load | m1376_3 | +| ir.cpp:1375:3:1375:3 | Load | m1376_8 | +| ir.cpp:1375:3:1375:3 | Load | m1376_8 | +| ir.cpp:1375:3:1375:3 | SideEffect | m1375_3 | +| ir.cpp:1375:3:1375:3 | SideEffect | m1375_3 | +| ir.cpp:1375:3:1375:3 | SideEffect | ~m1376_6 | +| ir.cpp:1375:3:1375:3 | SideEffect | ~m1376_6 | +| ir.cpp:1376:5:1376:15 | Address | &:r1376_1 | +| ir.cpp:1376:5:1376:15 | Address | &:r1376_1 | +| ir.cpp:1376:5:1376:15 | Address | &:r1376_1 | +| ir.cpp:1376:5:1376:15 | Address | &:r1376_1 | +| ir.cpp:1376:5:1376:15 | Address | &:r1376_1 | +| ir.cpp:1376:5:1376:15 | Address | &:r1376_1 | +| ir.cpp:1376:5:1376:15 | Arg(this) | this:r1376_1 | +| ir.cpp:1376:5:1376:15 | Arg(this) | this:r1376_1 | +| ir.cpp:1376:5:1376:15 | CallTarget | func:r1376_3 | +| ir.cpp:1376:5:1376:15 | CallTarget | func:r1376_3 | +| ir.cpp:1376:5:1376:15 | ChiPartial | partial:m1376_5 | +| ir.cpp:1376:5:1376:15 | ChiPartial | partial:m1376_5 | +| ir.cpp:1376:5:1376:15 | ChiPartial | partial:m1376_7 | +| ir.cpp:1376:5:1376:15 | ChiPartial | partial:m1376_7 | +| ir.cpp:1376:5:1376:15 | ChiTotal | total:m1375_4 | +| ir.cpp:1376:5:1376:15 | ChiTotal | total:m1375_4 | +| ir.cpp:1376:5:1376:15 | ChiTotal | total:m1376_2 | +| ir.cpp:1376:5:1376:15 | ChiTotal | total:m1376_2 | +| ir.cpp:1376:5:1376:15 | SideEffect | ~m1375_4 | +| ir.cpp:1376:5:1376:15 | SideEffect | ~m1375_4 | +| ir.cpp:1376:5:1376:15 | StoreValue | r1376_2 | +| ir.cpp:1376:5:1376:15 | StoreValue | r1376_2 | +| ir.cpp:1414:6:1414:21 | ChiPartial | partial:m1414_3 | +| ir.cpp:1414:6:1414:21 | ChiTotal | total:m1414_2 | +| ir.cpp:1414:6:1414:21 | SideEffect | ~m1426_6 | +| ir.cpp:1415:12:1415:12 | Address | &:r1415_1 | +| ir.cpp:1415:16:1415:34 | CallTarget | func:r1415_2 | +| ir.cpp:1415:16:1415:34 | ChiPartial | partial:m1415_4 | +| ir.cpp:1415:16:1415:34 | ChiTotal | total:m1414_4 | +| ir.cpp:1415:16:1415:34 | SideEffect | ~m1414_4 | +| ir.cpp:1415:16:1415:34 | StoreValue | r1415_3 | +| ir.cpp:1416:19:1416:20 | Address | &:r1416_1 | +| ir.cpp:1416:24:1416:42 | CallTarget | func:r1416_3 | +| ir.cpp:1416:24:1416:42 | ChiPartial | partial:m1416_5 | +| ir.cpp:1416:24:1416:42 | ChiTotal | total:m1415_5 | +| ir.cpp:1416:24:1416:42 | SideEffect | ~m1415_5 | +| ir.cpp:1416:24:1416:42 | StoreValue | r1416_4 | +| ir.cpp:1416:24:1416:44 | Address | &:r1416_2 | +| ir.cpp:1416:24:1416:44 | StoreValue | r1416_9 | +| ir.cpp:1416:24:1416:44 | Unary | r1416_2 | +| ir.cpp:1416:24:1416:44 | Unary | r1416_8 | +| ir.cpp:1418:5:1418:13 | CallTarget | func:r1418_1 | +| ir.cpp:1418:5:1418:13 | ChiPartial | partial:m1418_6 | +| ir.cpp:1418:5:1418:13 | ChiTotal | total:m1416_6 | +| ir.cpp:1418:5:1418:13 | SideEffect | ~m1416_6 | +| ir.cpp:1418:15:1418:15 | Address | &:r1418_4 | +| ir.cpp:1418:15:1418:15 | Arg(0) | 0:r1418_4 | +| ir.cpp:1418:15:1418:15 | SideEffect | ~m1415_6 | +| ir.cpp:1418:15:1418:15 | Unary | r1418_2 | +| ir.cpp:1418:15:1418:15 | Unary | r1418_3 | +| ir.cpp:1419:5:1419:21 | CallTarget | func:r1419_1 | +| ir.cpp:1419:5:1419:21 | ChiPartial | partial:m1419_15 | +| ir.cpp:1419:5:1419:21 | ChiTotal | total:m1419_9 | +| ir.cpp:1419:5:1419:21 | SideEffect | ~m1419_9 | +| ir.cpp:1419:23:1419:27 | Address | &:r1419_2 | +| ir.cpp:1419:23:1419:27 | Address | &:r1419_2 | +| ir.cpp:1419:23:1419:27 | Address | &:r1419_6 | +| ir.cpp:1419:23:1419:27 | Address | &:r1419_13 | +| ir.cpp:1419:23:1419:27 | Arg(0) | 0:r1419_6 | +| ir.cpp:1419:23:1419:27 | Arg(0) | 0:r1419_13 | +| ir.cpp:1419:23:1419:27 | Arg(this) | this:r1419_2 | +| ir.cpp:1419:23:1419:27 | CallTarget | func:r1419_4 | +| ir.cpp:1419:23:1419:27 | ChiPartial | partial:m1419_8 | +| ir.cpp:1419:23:1419:27 | ChiPartial | partial:m1419_11 | +| ir.cpp:1419:23:1419:27 | ChiTotal | total:m1418_7 | +| ir.cpp:1419:23:1419:27 | ChiTotal | total:m1419_3 | +| ir.cpp:1419:23:1419:27 | SideEffect | ~m1414_3 | +| ir.cpp:1419:23:1419:27 | SideEffect | ~m1418_7 | +| ir.cpp:1419:23:1419:27 | SideEffect | ~m1419_12 | +| ir.cpp:1419:23:1419:27 | Unary | r1419_2 | +| ir.cpp:1419:23:1419:27 | Unary | r1419_5 | +| ir.cpp:1420:5:1420:15 | CallTarget | func:r1420_1 | +| ir.cpp:1420:5:1420:15 | ChiPartial | partial:m1420_16 | +| ir.cpp:1420:5:1420:15 | ChiTotal | total:m1420_10 | +| ir.cpp:1420:5:1420:15 | SideEffect | ~m1420_10 | +| ir.cpp:1420:17:1420:17 | Address | &:r1420_2 | +| ir.cpp:1420:17:1420:17 | Address | &:r1420_2 | +| ir.cpp:1420:17:1420:17 | Address | &:r1420_2 | +| ir.cpp:1420:17:1420:17 | Address | &:r1420_7 | +| ir.cpp:1420:17:1420:17 | Arg(0) | 0:r1420_7 | +| ir.cpp:1420:17:1420:17 | Arg(0) | 0:r1420_14 | +| ir.cpp:1420:17:1420:17 | Arg(this) | this:r1420_2 | +| ir.cpp:1420:17:1420:17 | CallTarget | func:r1420_4 | +| ir.cpp:1420:17:1420:17 | ChiPartial | partial:m1420_9 | +| ir.cpp:1420:17:1420:17 | ChiPartial | partial:m1420_12 | +| ir.cpp:1420:17:1420:17 | ChiTotal | total:m1419_16 | +| ir.cpp:1420:17:1420:17 | ChiTotal | total:m1420_3 | +| ir.cpp:1420:17:1420:17 | Load | m1420_13 | +| ir.cpp:1420:17:1420:17 | SideEffect | ~m1415_6 | +| ir.cpp:1420:17:1420:17 | SideEffect | ~m1419_16 | +| ir.cpp:1420:17:1420:17 | Unary | r1420_5 | +| ir.cpp:1420:17:1420:17 | Unary | r1420_6 | +| ir.cpp:1421:5:1421:23 | CallTarget | func:r1421_1 | +| ir.cpp:1421:5:1421:23 | ChiPartial | partial:m1421_15 | +| ir.cpp:1421:5:1421:23 | ChiTotal | total:m1421_9 | +| ir.cpp:1421:5:1421:23 | SideEffect | ~m1421_9 | +| ir.cpp:1421:25:1421:29 | Address | &:r1421_2 | +| ir.cpp:1421:25:1421:29 | Address | &:r1421_2 | +| ir.cpp:1421:25:1421:29 | Address | &:r1421_2 | +| ir.cpp:1421:25:1421:29 | Address | &:r1421_6 | +| ir.cpp:1421:25:1421:29 | Arg(0) | 0:r1421_6 | +| ir.cpp:1421:25:1421:29 | Arg(0) | 0:r1421_13 | +| ir.cpp:1421:25:1421:29 | Arg(this) | this:r1421_2 | +| ir.cpp:1421:25:1421:29 | CallTarget | func:r1421_4 | +| ir.cpp:1421:25:1421:29 | ChiPartial | partial:m1421_8 | +| ir.cpp:1421:25:1421:29 | ChiPartial | partial:m1421_11 | +| ir.cpp:1421:25:1421:29 | ChiTotal | total:m1420_17 | +| ir.cpp:1421:25:1421:29 | ChiTotal | total:m1421_3 | +| ir.cpp:1421:25:1421:29 | Load | m1421_12 | +| ir.cpp:1421:25:1421:29 | SideEffect | ~m1414_3 | +| ir.cpp:1421:25:1421:29 | SideEffect | ~m1420_17 | +| ir.cpp:1421:25:1421:29 | Unary | r1421_5 | +| ir.cpp:1422:5:1422:12 | Address | &:r1422_1 | +| ir.cpp:1422:5:1422:12 | Address | &:r1422_1 | +| ir.cpp:1422:5:1422:12 | Address | &:r1422_9 | +| ir.cpp:1422:5:1422:12 | Arg(this) | this:r1422_1 | +| ir.cpp:1422:5:1422:12 | Arg(this) | this:r1422_9 | +| ir.cpp:1422:5:1422:12 | CallTarget | func:r1422_3 | +| ir.cpp:1422:5:1422:12 | ChiPartial | partial:m1422_5 | +| ir.cpp:1422:5:1422:12 | ChiPartial | partial:m1422_7 | +| ir.cpp:1422:5:1422:12 | ChiTotal | total:m1421_16 | +| ir.cpp:1422:5:1422:12 | ChiTotal | total:m1422_2 | +| ir.cpp:1422:5:1422:12 | SideEffect | m1422_8 | +| ir.cpp:1422:5:1422:12 | SideEffect | ~m1421_16 | +| ir.cpp:1422:5:1422:12 | Unary | r1422_1 | +| ir.cpp:1422:14:1422:18 | CallTarget | func:r1422_10 | +| ir.cpp:1422:14:1422:18 | ChiPartial | partial:m1422_12 | +| ir.cpp:1422:14:1422:18 | ChiTotal | total:m1422_6 | +| ir.cpp:1422:14:1422:18 | SideEffect | ~m1422_6 | +| ir.cpp:1423:5:1423:23 | CallTarget | func:r1423_2 | +| ir.cpp:1423:5:1423:23 | ChiPartial | partial:m1423_4 | +| ir.cpp:1423:5:1423:23 | ChiTotal | total:m1422_13 | +| ir.cpp:1423:5:1423:23 | SideEffect | ~m1422_13 | +| ir.cpp:1423:5:1423:23 | StoreValue | r1423_3 | +| ir.cpp:1423:5:1423:25 | Address | &:r1423_1 | +| ir.cpp:1423:5:1423:25 | Address | &:r1423_7 | +| ir.cpp:1423:5:1423:25 | Arg(this) | this:r1423_7 | +| ir.cpp:1423:5:1423:25 | SideEffect | m1423_6 | +| ir.cpp:1423:5:1423:25 | Unary | r1423_1 | +| ir.cpp:1423:27:1423:31 | CallTarget | func:r1423_8 | +| ir.cpp:1423:27:1423:31 | ChiPartial | partial:m1423_10 | +| ir.cpp:1423:27:1423:31 | ChiTotal | total:m1423_5 | +| ir.cpp:1423:27:1423:31 | SideEffect | ~m1423_5 | +| ir.cpp:1425:5:1425:28 | CallTarget | func:r1425_2 | +| ir.cpp:1425:5:1425:28 | ChiPartial | partial:m1425_4 | +| ir.cpp:1425:5:1425:28 | ChiTotal | total:m1423_11 | +| ir.cpp:1425:5:1425:28 | SideEffect | ~m1423_11 | +| ir.cpp:1425:5:1425:28 | StoreValue | r1425_3 | +| ir.cpp:1425:5:1425:30 | Address | &:r1425_1 | +| ir.cpp:1426:1:1426:1 | Address | &:r1426_2 | +| ir.cpp:1426:1:1426:1 | Address | &:r1426_2 | +| ir.cpp:1426:1:1426:1 | Arg(this) | this:r1426_2 | +| ir.cpp:1426:1:1426:1 | CallTarget | func:r1426_3 | +| ir.cpp:1426:1:1426:1 | ChiPartial | partial:m1426_5 | +| ir.cpp:1426:1:1426:1 | ChiPartial | partial:m1426_8 | +| ir.cpp:1426:1:1426:1 | ChiTotal | total:m1415_6 | +| ir.cpp:1426:1:1426:1 | ChiTotal | total:m1425_5 | +| ir.cpp:1426:1:1426:1 | SideEffect | m1415_6 | +| ir.cpp:1426:1:1426:1 | SideEffect | ~m1425_5 | +| ir.cpp:1428:6:1428:30 | ChiPartial | partial:m1428_3 | +| ir.cpp:1428:6:1428:30 | ChiTotal | total:m1428_2 | +| ir.cpp:1428:6:1428:30 | SideEffect | ~m1438_14 | +| ir.cpp:1429:21:1429:21 | Address | &:r1429_1 | +| ir.cpp:1429:25:1429:52 | CallTarget | func:r1429_2 | +| ir.cpp:1429:25:1429:52 | ChiPartial | partial:m1429_4 | +| ir.cpp:1429:25:1429:52 | ChiTotal | total:m1428_4 | +| ir.cpp:1429:25:1429:52 | SideEffect | ~m1428_4 | +| ir.cpp:1429:25:1429:52 | StoreValue | r1429_3 | +| ir.cpp:1430:28:1430:29 | Address | &:r1430_1 | +| ir.cpp:1430:33:1430:60 | CallTarget | func:r1430_3 | +| ir.cpp:1430:33:1430:60 | ChiPartial | partial:m1430_5 | +| ir.cpp:1430:33:1430:60 | ChiTotal | total:m1429_5 | +| ir.cpp:1430:33:1430:60 | SideEffect | ~m1429_5 | +| ir.cpp:1430:33:1430:60 | StoreValue | r1430_4 | +| ir.cpp:1430:33:1430:62 | Address | &:r1430_2 | +| ir.cpp:1430:33:1430:62 | StoreValue | r1430_9 | +| ir.cpp:1430:33:1430:62 | Unary | r1430_2 | +| ir.cpp:1430:33:1430:62 | Unary | r1430_8 | +| ir.cpp:1431:21:1431:22 | Address | &:r1431_1 | +| ir.cpp:1432:5:1432:13 | CallTarget | func:r1432_1 | +| ir.cpp:1432:5:1432:13 | ChiPartial | partial:m1432_6 | +| ir.cpp:1432:5:1432:13 | ChiTotal | total:m1430_6 | +| ir.cpp:1432:5:1432:13 | SideEffect | ~m1430_6 | +| ir.cpp:1432:15:1432:15 | Address | &:r1432_4 | +| ir.cpp:1432:15:1432:15 | Arg(0) | 0:r1432_4 | +| ir.cpp:1432:15:1432:15 | SideEffect | ~m1429_6 | +| ir.cpp:1432:15:1432:15 | Unary | r1432_2 | +| ir.cpp:1432:15:1432:15 | Unary | r1432_3 | +| ir.cpp:1433:5:1433:15 | CallTarget | func:r1433_1 | +| ir.cpp:1433:5:1433:15 | ChiPartial | partial:m1433_8 | +| ir.cpp:1433:5:1433:15 | ChiTotal | total:m1432_7 | +| ir.cpp:1433:5:1433:15 | SideEffect | ~m1432_7 | +| ir.cpp:1433:17:1433:17 | Address | &:r1433_2 | +| ir.cpp:1433:17:1433:17 | Address | &:r1433_2 | +| ir.cpp:1433:17:1433:17 | Address | &:r1433_3 | +| ir.cpp:1433:17:1433:17 | Arg(0) | 0:r1433_6 | +| ir.cpp:1433:17:1433:17 | Load | m1429_6 | +| ir.cpp:1433:17:1433:17 | Load | m1433_5 | +| ir.cpp:1433:17:1433:17 | StoreValue | r1433_4 | +| ir.cpp:1434:5:1434:21 | Address | &:r1434_1 | +| ir.cpp:1434:5:1434:21 | Address | &:r1434_1 | +| ir.cpp:1434:5:1434:21 | Address | &:r1434_1 | +| ir.cpp:1434:5:1434:21 | Arg(this) | this:r1434_1 | +| ir.cpp:1434:5:1434:21 | ChiPartial | partial:m1434_9 | +| ir.cpp:1434:5:1434:21 | ChiTotal | total:m1434_3 | +| ir.cpp:1434:5:1434:21 | SideEffect | m1434_3 | +| ir.cpp:1434:5:1434:21 | StoreValue | r1434_2 | +| ir.cpp:1434:23:1434:28 | CallTarget | func:r1434_4 | +| ir.cpp:1434:23:1434:28 | ChiPartial | partial:m1434_6 | +| ir.cpp:1434:23:1434:28 | ChiTotal | total:m1433_9 | +| ir.cpp:1434:23:1434:28 | SideEffect | ~m1433_9 | +| ir.cpp:1435:5:1435:32 | CallTarget | func:r1435_2 | +| ir.cpp:1435:5:1435:32 | ChiPartial | partial:m1435_4 | +| ir.cpp:1435:5:1435:32 | ChiTotal | total:m1434_7 | +| ir.cpp:1435:5:1435:32 | SideEffect | ~m1434_7 | +| ir.cpp:1435:5:1435:32 | StoreValue | r1435_3 | +| ir.cpp:1435:5:1435:34 | Address | &:r1435_1 | +| ir.cpp:1435:5:1435:34 | Address | &:r1435_1 | +| ir.cpp:1435:5:1435:34 | Address | &:r1435_1 | +| ir.cpp:1435:5:1435:34 | Arg(this) | this:r1435_1 | +| ir.cpp:1435:5:1435:34 | ChiPartial | partial:m1435_12 | +| ir.cpp:1435:5:1435:34 | ChiTotal | total:m1435_6 | +| ir.cpp:1435:5:1435:34 | SideEffect | m1435_6 | +| ir.cpp:1435:36:1435:41 | CallTarget | func:r1435_7 | +| ir.cpp:1435:36:1435:41 | ChiPartial | partial:m1435_9 | +| ir.cpp:1435:36:1435:41 | ChiTotal | total:m1435_5 | +| ir.cpp:1435:36:1435:41 | SideEffect | ~m1435_5 | +| ir.cpp:1437:5:1437:37 | CallTarget | func:r1437_2 | +| ir.cpp:1437:5:1437:37 | ChiPartial | partial:m1437_4 | +| ir.cpp:1437:5:1437:37 | ChiTotal | total:m1435_10 | +| ir.cpp:1437:5:1437:37 | SideEffect | ~m1435_10 | +| ir.cpp:1437:5:1437:37 | StoreValue | r1437_3 | +| ir.cpp:1437:5:1437:39 | Address | &:r1437_1 | +| ir.cpp:1438:1:1438:1 | Address | &:r1438_2 | +| ir.cpp:1438:1:1438:1 | Address | &:r1438_2 | +| ir.cpp:1438:1:1438:1 | Address | &:r1438_10 | +| ir.cpp:1438:1:1438:1 | Address | &:r1438_10 | +| ir.cpp:1438:1:1438:1 | Arg(this) | this:r1438_2 | +| ir.cpp:1438:1:1438:1 | Arg(this) | this:r1438_10 | +| ir.cpp:1438:1:1438:1 | CallTarget | func:r1438_3 | +| ir.cpp:1438:1:1438:1 | CallTarget | func:r1438_11 | +| ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_5 | +| ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_8 | +| ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_13 | +| ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_16 | +| ir.cpp:1438:1:1438:1 | ChiTotal | total:m1429_6 | +| ir.cpp:1438:1:1438:1 | ChiTotal | total:m1431_2 | +| ir.cpp:1438:1:1438:1 | ChiTotal | total:m1437_5 | +| ir.cpp:1438:1:1438:1 | ChiTotal | total:m1438_6 | +| ir.cpp:1438:1:1438:1 | SideEffect | m1429_6 | +| ir.cpp:1438:1:1438:1 | SideEffect | m1431_2 | +| ir.cpp:1438:1:1438:1 | SideEffect | ~m1437_5 | +| ir.cpp:1438:1:1438:1 | SideEffect | ~m1438_6 | +| ir.cpp:1440:6:1440:31 | ChiPartial | partial:m1440_3 | +| ir.cpp:1440:6:1440:31 | ChiTotal | total:m1440_2 | +| ir.cpp:1440:6:1440:31 | SideEffect | ~m1450_6 | +| ir.cpp:1441:22:1441:22 | Address | &:r1441_1 | +| ir.cpp:1441:26:1441:54 | CallTarget | func:r1441_2 | +| ir.cpp:1441:26:1441:54 | ChiPartial | partial:m1441_4 | +| ir.cpp:1441:26:1441:54 | ChiTotal | total:m1440_4 | +| ir.cpp:1441:26:1441:54 | SideEffect | ~m1440_4 | +| ir.cpp:1441:26:1441:54 | StoreValue | r1441_3 | +| ir.cpp:1442:29:1442:30 | Address | &:r1442_1 | +| ir.cpp:1442:34:1442:62 | CallTarget | func:r1442_3 | +| ir.cpp:1442:34:1442:62 | ChiPartial | partial:m1442_5 | +| ir.cpp:1442:34:1442:62 | ChiTotal | total:m1441_5 | +| ir.cpp:1442:34:1442:62 | SideEffect | ~m1441_5 | +| ir.cpp:1442:34:1442:62 | StoreValue | r1442_4 | +| ir.cpp:1442:34:1442:64 | Address | &:r1442_2 | +| ir.cpp:1442:34:1442:64 | StoreValue | r1442_9 | +| ir.cpp:1442:34:1442:64 | Unary | r1442_2 | +| ir.cpp:1442:34:1442:64 | Unary | r1442_8 | +| ir.cpp:1443:22:1443:23 | Address | &:r1443_1 | +| ir.cpp:1443:22:1443:23 | Address | &:r1443_1 | +| ir.cpp:1443:22:1443:23 | Arg(this) | this:r1443_1 | +| ir.cpp:1443:22:1443:23 | CallTarget | func:r1443_3 | +| ir.cpp:1443:22:1443:23 | ChiPartial | partial:m1443_5 | +| ir.cpp:1443:22:1443:23 | ChiPartial | partial:m1443_7 | +| ir.cpp:1443:22:1443:23 | ChiTotal | total:m1442_6 | +| ir.cpp:1443:22:1443:23 | ChiTotal | total:m1443_2 | +| ir.cpp:1443:22:1443:23 | SideEffect | ~m1442_6 | +| ir.cpp:1444:5:1444:13 | CallTarget | func:r1444_1 | +| ir.cpp:1444:5:1444:13 | ChiPartial | partial:m1444_6 | +| ir.cpp:1444:5:1444:13 | ChiTotal | total:m1443_6 | +| ir.cpp:1444:5:1444:13 | SideEffect | ~m1443_6 | +| ir.cpp:1444:15:1444:15 | Address | &:r1444_4 | +| ir.cpp:1444:15:1444:15 | Arg(0) | 0:r1444_4 | +| ir.cpp:1444:15:1444:15 | SideEffect | ~m1441_6 | +| ir.cpp:1444:15:1444:15 | Unary | r1444_2 | +| ir.cpp:1444:15:1444:15 | Unary | r1444_3 | +| ir.cpp:1445:5:1445:15 | CallTarget | func:r1445_1 | +| ir.cpp:1445:5:1445:15 | ChiPartial | partial:m1445_16 | +| ir.cpp:1445:5:1445:15 | ChiTotal | total:m1445_10 | +| ir.cpp:1445:5:1445:15 | SideEffect | ~m1445_10 | +| ir.cpp:1445:17:1445:17 | Address | &:r1445_2 | +| ir.cpp:1445:17:1445:17 | Address | &:r1445_2 | +| ir.cpp:1445:17:1445:17 | Address | &:r1445_2 | +| ir.cpp:1445:17:1445:17 | Address | &:r1445_7 | +| ir.cpp:1445:17:1445:17 | Arg(0) | 0:r1445_7 | +| ir.cpp:1445:17:1445:17 | Arg(0) | 0:r1445_14 | +| ir.cpp:1445:17:1445:17 | Arg(this) | this:r1445_2 | +| ir.cpp:1445:17:1445:17 | CallTarget | func:r1445_4 | +| ir.cpp:1445:17:1445:17 | ChiPartial | partial:m1445_9 | +| ir.cpp:1445:17:1445:17 | ChiPartial | partial:m1445_12 | +| ir.cpp:1445:17:1445:17 | ChiTotal | total:m1444_7 | +| ir.cpp:1445:17:1445:17 | ChiTotal | total:m1445_3 | +| ir.cpp:1445:17:1445:17 | Load | m1445_13 | +| ir.cpp:1445:17:1445:17 | SideEffect | ~m1441_6 | +| ir.cpp:1445:17:1445:17 | SideEffect | ~m1444_7 | +| ir.cpp:1445:17:1445:17 | Unary | r1445_5 | +| ir.cpp:1445:17:1445:17 | Unary | r1445_6 | +| ir.cpp:1446:5:1446:22 | Address | &:r1446_1 | +| ir.cpp:1446:5:1446:22 | Address | &:r1446_1 | +| ir.cpp:1446:5:1446:22 | Address | &:r1446_1 | +| ir.cpp:1446:5:1446:22 | Address | &:r1446_1 | +| ir.cpp:1446:5:1446:22 | Arg(this) | this:r1446_1 | +| ir.cpp:1446:5:1446:22 | Arg(this) | this:r1446_1 | +| ir.cpp:1446:5:1446:22 | CallTarget | func:r1446_3 | +| ir.cpp:1446:5:1446:22 | ChiPartial | partial:m1446_5 | +| ir.cpp:1446:5:1446:22 | ChiPartial | partial:m1446_7 | +| ir.cpp:1446:5:1446:22 | ChiPartial | partial:m1446_14 | +| ir.cpp:1446:5:1446:22 | ChiTotal | total:m1445_17 | +| ir.cpp:1446:5:1446:22 | ChiTotal | total:m1446_2 | +| ir.cpp:1446:5:1446:22 | ChiTotal | total:m1446_8 | +| ir.cpp:1446:5:1446:22 | SideEffect | m1446_8 | +| ir.cpp:1446:5:1446:22 | SideEffect | ~m1445_17 | +| ir.cpp:1446:24:1446:29 | CallTarget | func:r1446_9 | +| ir.cpp:1446:24:1446:29 | ChiPartial | partial:m1446_11 | +| ir.cpp:1446:24:1446:29 | ChiTotal | total:m1446_6 | +| ir.cpp:1446:24:1446:29 | SideEffect | ~m1446_6 | +| ir.cpp:1447:5:1447:33 | CallTarget | func:r1447_2 | +| ir.cpp:1447:5:1447:33 | ChiPartial | partial:m1447_4 | +| ir.cpp:1447:5:1447:33 | ChiTotal | total:m1446_12 | +| ir.cpp:1447:5:1447:33 | SideEffect | ~m1446_12 | +| ir.cpp:1447:5:1447:33 | StoreValue | r1447_3 | +| ir.cpp:1447:5:1447:35 | Address | &:r1447_1 | +| ir.cpp:1447:5:1447:35 | Address | &:r1447_1 | +| ir.cpp:1447:5:1447:35 | Address | &:r1447_1 | +| ir.cpp:1447:5:1447:35 | Arg(this) | this:r1447_1 | +| ir.cpp:1447:5:1447:35 | ChiPartial | partial:m1447_12 | +| ir.cpp:1447:5:1447:35 | ChiTotal | total:m1447_6 | +| ir.cpp:1447:5:1447:35 | SideEffect | m1447_6 | +| ir.cpp:1447:37:1447:42 | CallTarget | func:r1447_7 | +| ir.cpp:1447:37:1447:42 | ChiPartial | partial:m1447_9 | +| ir.cpp:1447:37:1447:42 | ChiTotal | total:m1447_5 | +| ir.cpp:1447:37:1447:42 | SideEffect | ~m1447_5 | +| ir.cpp:1448:5:1448:38 | CallTarget | func:r1448_2 | +| ir.cpp:1448:5:1448:38 | ChiPartial | partial:m1448_4 | +| ir.cpp:1448:5:1448:38 | ChiTotal | total:m1447_10 | +| ir.cpp:1448:5:1448:38 | SideEffect | ~m1447_10 | +| ir.cpp:1448:5:1448:38 | StoreValue | r1448_3 | +| ir.cpp:1448:5:1448:40 | Address | &:r1448_1 | +| ir.cpp:1450:9:1450:9 | Address | &:r1450_1 | +| ir.cpp:1450:13:1450:41 | CallTarget | func:r1450_3 | +| ir.cpp:1450:13:1450:41 | ChiPartial | partial:m1450_5 | +| ir.cpp:1450:13:1450:41 | ChiTotal | total:m1448_5 | +| ir.cpp:1450:13:1450:41 | SideEffect | ~m1448_5 | +| ir.cpp:1450:13:1450:41 | StoreValue | r1450_4 | +| ir.cpp:1450:13:1450:43 | Address | &:r1450_2 | +| ir.cpp:1450:13:1450:43 | Unary | r1450_2 | +| ir.cpp:1450:45:1450:45 | Address | &:r1450_8 | +| ir.cpp:1450:45:1450:45 | Load | ~m1450_7 | +| ir.cpp:1450:45:1450:45 | StoreValue | r1450_9 | +| ir.cpp:1453:6:1453:20 | ChiPartial | partial:m1453_3 | +| ir.cpp:1453:6:1453:20 | ChiTotal | total:m1453_2 | +| ir.cpp:1453:6:1453:20 | SideEffect | ~m1462_4 | +| ir.cpp:1454:11:1454:11 | Address | &:r1454_1 | +| ir.cpp:1454:15:1454:32 | CallTarget | func:r1454_2 | +| ir.cpp:1454:15:1454:32 | ChiPartial | partial:m1454_4 | +| ir.cpp:1454:15:1454:32 | ChiTotal | total:m1453_4 | +| ir.cpp:1454:15:1454:32 | SideEffect | ~m1453_4 | +| ir.cpp:1454:15:1454:32 | StoreValue | r1454_3 | +| ir.cpp:1455:18:1455:19 | Address | &:r1455_1 | +| ir.cpp:1455:23:1455:40 | CallTarget | func:r1455_3 | +| ir.cpp:1455:23:1455:40 | ChiPartial | partial:m1455_5 | +| ir.cpp:1455:23:1455:40 | ChiTotal | total:m1454_5 | +| ir.cpp:1455:23:1455:40 | SideEffect | ~m1454_5 | +| ir.cpp:1455:23:1455:40 | StoreValue | r1455_4 | +| ir.cpp:1455:23:1455:42 | Address | &:r1455_2 | +| ir.cpp:1455:23:1455:42 | StoreValue | r1455_9 | +| ir.cpp:1455:23:1455:42 | Unary | r1455_2 | +| ir.cpp:1455:23:1455:42 | Unary | r1455_8 | +| ir.cpp:1457:5:1457:13 | CallTarget | func:r1457_1 | +| ir.cpp:1457:5:1457:13 | ChiPartial | partial:m1457_6 | +| ir.cpp:1457:5:1457:13 | ChiTotal | total:m1455_6 | +| ir.cpp:1457:5:1457:13 | SideEffect | ~m1455_6 | +| ir.cpp:1457:15:1457:15 | Address | &:r1457_4 | +| ir.cpp:1457:15:1457:15 | Arg(0) | 0:r1457_4 | +| ir.cpp:1457:15:1457:15 | SideEffect | ~m1454_6 | +| ir.cpp:1457:15:1457:15 | Unary | r1457_2 | +| ir.cpp:1457:15:1457:15 | Unary | r1457_3 | +| ir.cpp:1458:5:1458:15 | CallTarget | func:r1458_1 | +| ir.cpp:1458:5:1458:15 | ChiPartial | partial:m1458_5 | +| ir.cpp:1458:5:1458:15 | ChiTotal | total:m1457_7 | +| ir.cpp:1458:5:1458:15 | SideEffect | ~m1457_7 | +| ir.cpp:1458:17:1458:17 | Address | &:r1458_2 | +| ir.cpp:1458:17:1458:17 | Arg(0) | 0:r1458_3 | +| ir.cpp:1458:17:1458:17 | Load | m1454_6 | +| ir.cpp:1460:9:1460:9 | Address | &:r1460_1 | +| ir.cpp:1460:13:1460:30 | Address | &:r1460_6 | +| ir.cpp:1460:13:1460:30 | CallTarget | func:r1460_2 | +| ir.cpp:1460:13:1460:30 | ChiPartial | partial:m1460_4 | +| ir.cpp:1460:13:1460:30 | ChiTotal | total:m1458_6 | +| ir.cpp:1460:13:1460:30 | SideEffect | ~m1458_6 | +| ir.cpp:1460:13:1460:30 | StoreValue | r1460_3 | +| ir.cpp:1460:13:1460:30 | Unary | r1460_6 | +| ir.cpp:1460:34:1460:34 | Address | &:r1460_8 | +| ir.cpp:1460:34:1460:34 | Load | ~m1460_7 | +| ir.cpp:1460:34:1460:34 | StoreValue | r1460_9 | +| ir.cpp:1462:5:1462:27 | CallTarget | func:r1462_1 | +| ir.cpp:1462:5:1462:27 | ChiPartial | partial:m1462_3 | +| ir.cpp:1462:5:1462:27 | ChiTotal | total:m1460_5 | +| ir.cpp:1462:5:1462:27 | SideEffect | ~m1460_5 | +| ir.cpp:1470:6:1470:29 | ChiPartial | partial:m1470_3 | +| ir.cpp:1470:6:1470:29 | ChiTotal | total:m1470_2 | +| ir.cpp:1470:6:1470:29 | SideEffect | ~m1475_5 | +| ir.cpp:1471:16:1471:17 | Address | &:r1471_1 | +| ir.cpp:1471:21:1471:46 | Address | &:r1471_6 | +| ir.cpp:1471:21:1471:46 | CallTarget | func:r1471_2 | +| ir.cpp:1471:21:1471:46 | ChiPartial | partial:m1471_4 | +| ir.cpp:1471:21:1471:46 | ChiTotal | total:m1470_4 | +| ir.cpp:1471:21:1471:46 | SideEffect | ~m1470_4 | +| ir.cpp:1471:21:1471:46 | StoreValue | r1471_3 | +| ir.cpp:1471:21:1471:46 | Unary | r1471_6 | +| ir.cpp:1471:21:1471:50 | StoreValue | r1471_12 | +| ir.cpp:1471:21:1471:50 | Unary | r1471_10 | +| ir.cpp:1471:21:1471:50 | Unary | r1471_11 | +| ir.cpp:1471:50:1471:50 | Address | &:r1471_8 | +| ir.cpp:1471:50:1471:50 | Load | ~m1471_7 | +| ir.cpp:1471:50:1471:50 | Unary | r1471_9 | +| ir.cpp:1472:9:1472:9 | Address | &:r1472_1 | +| ir.cpp:1472:13:1472:38 | Address | &:r1472_6 | +| ir.cpp:1472:13:1472:38 | CallTarget | func:r1472_2 | +| ir.cpp:1472:13:1472:38 | ChiPartial | partial:m1472_4 | +| ir.cpp:1472:13:1472:38 | ChiTotal | total:m1471_5 | +| ir.cpp:1472:13:1472:38 | SideEffect | ~m1471_5 | +| ir.cpp:1472:13:1472:38 | StoreValue | r1472_3 | +| ir.cpp:1472:13:1472:38 | Unary | r1472_6 | +| ir.cpp:1472:13:1472:42 | Load | ~m1472_5 | +| ir.cpp:1472:13:1472:42 | StoreValue | r1472_10 | +| ir.cpp:1472:42:1472:42 | Address | &:r1472_8 | +| ir.cpp:1472:42:1472:42 | Address | &:r1472_9 | +| ir.cpp:1472:42:1472:42 | Load | ~m1472_7 | +| ir.cpp:1474:18:1474:19 | Address | &:r1474_1 | +| ir.cpp:1474:23:1474:48 | Address | &:r1474_6 | +| ir.cpp:1474:23:1474:48 | CallTarget | func:r1474_2 | +| ir.cpp:1474:23:1474:48 | ChiPartial | partial:m1474_4 | +| ir.cpp:1474:23:1474:48 | ChiTotal | total:m1472_5 | +| ir.cpp:1474:23:1474:48 | SideEffect | ~m1472_5 | +| ir.cpp:1474:23:1474:48 | StoreValue | r1474_3 | +| ir.cpp:1474:23:1474:48 | Unary | r1474_6 | +| ir.cpp:1474:23:1474:52 | Left | r1474_9 | +| ir.cpp:1474:23:1474:55 | StoreValue | r1474_13 | +| ir.cpp:1474:23:1474:55 | Unary | r1474_11 | +| ir.cpp:1474:23:1474:55 | Unary | r1474_12 | +| ir.cpp:1474:52:1474:52 | Unary | r1474_8 | +| ir.cpp:1474:54:1474:54 | Right | r1474_10 | +| ir.cpp:1475:11:1475:11 | Address | &:r1475_1 | +| ir.cpp:1475:15:1475:40 | Address | &:r1475_6 | +| ir.cpp:1475:15:1475:40 | CallTarget | func:r1475_2 | +| ir.cpp:1475:15:1475:40 | ChiPartial | partial:m1475_4 | +| ir.cpp:1475:15:1475:40 | ChiTotal | total:m1474_5 | +| ir.cpp:1475:15:1475:40 | SideEffect | ~m1474_5 | +| ir.cpp:1475:15:1475:40 | StoreValue | r1475_3 | +| ir.cpp:1475:15:1475:40 | Unary | r1475_6 | +| ir.cpp:1475:15:1475:44 | Left | r1475_9 | +| ir.cpp:1475:15:1475:47 | Address | &:r1475_11 | +| ir.cpp:1475:15:1475:47 | Load | ~m1475_7 | +| ir.cpp:1475:15:1475:47 | StoreValue | r1475_12 | +| ir.cpp:1475:44:1475:44 | Unary | r1475_8 | +| ir.cpp:1475:46:1475:46 | Right | r1475_10 | +| ir.cpp:1492:6:1492:24 | ChiPartial | partial:m1492_3 | +| ir.cpp:1492:6:1492:24 | ChiTotal | total:m1492_2 | +| ir.cpp:1492:6:1492:24 | SideEffect | ~m1496_10 | +| ir.cpp:1493:14:1493:14 | Address | &:r1493_1 | +| ir.cpp:1493:18:1493:40 | CallTarget | func:r1493_2 | +| ir.cpp:1493:18:1493:40 | ChiPartial | partial:m1493_4 | +| ir.cpp:1493:18:1493:40 | ChiTotal | total:m1492_4 | +| ir.cpp:1493:18:1493:40 | SideEffect | ~m1492_4 | +| ir.cpp:1493:18:1493:40 | StoreValue | r1493_3 | +| ir.cpp:1494:5:1494:5 | Address | &:r1494_10 | +| ir.cpp:1494:9:1494:36 | Address | &:r1494_1 | +| ir.cpp:1494:9:1494:36 | Address | &:r1494_8 | +| ir.cpp:1494:9:1494:36 | Load | ~m1494_6 | +| ir.cpp:1494:9:1494:36 | StoreValue | r1494_9 | +| ir.cpp:1494:9:1494:36 | Unary | r1494_1 | +| ir.cpp:1494:9:1494:36 | Unary | r1494_7 | +| ir.cpp:1494:10:1494:33 | CallTarget | func:r1494_2 | +| ir.cpp:1494:10:1494:33 | ChiPartial | partial:m1494_4 | +| ir.cpp:1494:10:1494:33 | ChiTotal | total:m1493_5 | +| ir.cpp:1494:10:1494:33 | SideEffect | ~m1493_5 | +| ir.cpp:1494:10:1494:33 | StoreValue | r1494_3 | +| ir.cpp:1495:9:1495:9 | Address | &:r1495_1 | +| ir.cpp:1495:13:1495:36 | CallTarget | func:r1495_2 | +| ir.cpp:1495:13:1495:36 | ChiPartial | partial:m1495_4 | +| ir.cpp:1495:13:1495:36 | ChiTotal | total:m1494_5 | +| ir.cpp:1495:13:1495:36 | SideEffect | ~m1494_5 | +| ir.cpp:1495:13:1495:36 | StoreValue | r1495_3 | +| ir.cpp:1495:40:1495:40 | Address | &:r1495_7 | +| ir.cpp:1495:40:1495:40 | Load | ~m1495_6 | +| ir.cpp:1495:40:1495:40 | StoreValue | r1495_8 | +| ir.cpp:1496:11:1496:11 | Address | &:r1496_1 | +| ir.cpp:1496:16:1496:39 | CallTarget | func:r1496_2 | +| ir.cpp:1496:16:1496:39 | ChiPartial | partial:m1496_4 | +| ir.cpp:1496:16:1496:39 | ChiTotal | total:m1495_5 | +| ir.cpp:1496:16:1496:39 | SideEffect | ~m1495_5 | +| ir.cpp:1496:16:1496:39 | StoreValue | r1496_3 | +| ir.cpp:1496:44:1496:44 | Arg(this) | this:r0_11 | +| ir.cpp:1496:44:1496:44 | CallTarget | func:r1496_7 | +| ir.cpp:1496:44:1496:44 | ChiPartial | partial:m1496_9 | +| ir.cpp:1496:44:1496:44 | ChiTotal | total:m1496_5 | +| ir.cpp:1496:44:1496:44 | SideEffect | ~m1496_5 | +| ir.cpp:1496:44:1496:44 | StoreValue | r1496_8 | +| ir.cpp:1500:3:1500:21 | Address | &:r1500_5 | +| ir.cpp:1500:3:1500:21 | Address | &:r1500_5 | +| ir.cpp:1500:3:1500:21 | Address | &:r1500_7 | +| ir.cpp:1500:3:1500:21 | Address | &:r1500_7 | +| ir.cpp:1500:3:1500:21 | ChiPartial | partial:m1500_3 | +| ir.cpp:1500:3:1500:21 | ChiTotal | total:m1500_2 | +| ir.cpp:1500:3:1500:21 | Load | m1500_6 | +| ir.cpp:1500:3:1500:21 | SideEffect | m1500_3 | +| ir.cpp:1500:3:1500:21 | SideEffect | m1500_8 | +| ir.cpp:1506:3:1506:20 | Address | &:r1506_5 | +| ir.cpp:1506:3:1506:20 | Address | &:r1506_5 | +| ir.cpp:1506:3:1506:20 | Address | &:r1506_7 | +| ir.cpp:1506:3:1506:20 | Address | &:r1506_7 | +| ir.cpp:1506:3:1506:20 | ChiPartial | partial:m1506_3 | +| ir.cpp:1506:3:1506:20 | ChiTotal | total:m1506_2 | +| ir.cpp:1506:3:1506:20 | Load | m1506_6 | +| ir.cpp:1506:3:1506:20 | SideEffect | m1506_3 | +| ir.cpp:1506:3:1506:20 | SideEffect | m1507_6 | +| ir.cpp:1506:3:1506:20 | Unary | m1506_6 | +| ir.cpp:1506:26:1506:30 | Address | &:r1506_9 | +| ir.cpp:1506:26:1506:30 | ChiPartial | partial:m1506_11 | +| ir.cpp:1506:26:1506:30 | ChiTotal | total:m1506_8 | +| ir.cpp:1506:26:1506:30 | StoreValue | r1506_10 | +| ir.cpp:1507:5:1507:5 | Address | &:r1507_2 | +| ir.cpp:1507:5:1507:5 | Address | &:r1507_4 | +| ir.cpp:1507:5:1507:5 | Load | m1506_6 | +| ir.cpp:1507:5:1507:5 | Unary | r1507_3 | +| ir.cpp:1507:5:1507:9 | ChiPartial | partial:m1507_5 | +| ir.cpp:1507:5:1507:9 | ChiTotal | total:m1506_12 | +| ir.cpp:1507:9:1507:9 | StoreValue | r1507_1 | +| ir.cpp:1511:6:1511:29 | ChiPartial | partial:m1511_3 | +| ir.cpp:1511:6:1511:29 | ChiTotal | total:m1511_2 | +| ir.cpp:1511:6:1511:29 | SideEffect | m1511_3 | +| ir.cpp:1512:9:1512:10 | Address | &:r1512_1 | +| ir.cpp:1512:9:1512:10 | Left | r1512_1 | +| ir.cpp:1512:9:1512:10 | Left | r1512_1 | +| ir.cpp:1512:16:1512:22 | Address | &:r1512_4 | +| ir.cpp:1512:16:1512:22 | Address | &:r1512_9 | +| ir.cpp:1512:16:1512:22 | Right | r1512_3 | +| ir.cpp:1512:16:1512:22 | Right | r1512_8 | +| ir.cpp:1512:18:1512:18 | ChiPartial | partial:m1512_6 | +| ir.cpp:1512:18:1512:18 | ChiTotal | total:m1512_2 | +| ir.cpp:1512:18:1512:18 | StoreValue | r1512_5 | +| ir.cpp:1512:21:1512:21 | ChiPartial | partial:m1512_11 | +| ir.cpp:1512:21:1512:21 | ChiTotal | total:m1512_7 | +| ir.cpp:1512:21:1512:21 | StoreValue | r1512_10 | +| ir.cpp:1515:15:1515:15 | Address | &:r1515_1 | +| ir.cpp:1515:16:1515:16 | Address | &:r1515_5 | +| ir.cpp:1515:20:1515:20 | Address | &:r1515_6 | +| ir.cpp:1515:26:1515:27 | StoreValue | r1515_3 | +| ir.cpp:1515:26:1515:27 | Unary | r1515_2 | +| ir.cpp:1516:9:1516:10 | Address | &:r1516_2 | +| ir.cpp:1516:9:1516:10 | Address | &:r1516_3 | +| ir.cpp:1516:9:1516:10 | Load | m0_14 | +| ir.cpp:1516:9:1516:14 | ChiPartial | partial:m1516_4 | +| ir.cpp:1516:9:1516:14 | ChiTotal | total:m1512_12 | +| ir.cpp:1516:14:1516:14 | StoreValue | r1516_1 | +| ir.cpp:1517:14:1517:16 | Address | &:r1517_1 | +| ir.cpp:1517:20:1517:21 | Address | &:r1517_2 | +| ir.cpp:1517:20:1517:21 | Load | m0_14 | +| ir.cpp:1517:20:1517:21 | StoreValue | r1517_4 | +| ir.cpp:1517:20:1517:21 | Unary | r1517_3 | +| ir.cpp:1518:13:1518:13 | Address | &:r1518_1 | +| ir.cpp:1518:17:1518:18 | Address | &:r1518_2 | +| ir.cpp:1518:17:1518:18 | Address | &:r1518_3 | +| ir.cpp:1518:17:1518:18 | Load | m0_14 | +| ir.cpp:1518:17:1518:18 | Load | m1516_4 | +| ir.cpp:1518:17:1518:18 | StoreValue | r1518_4 | +| ir.cpp:1522:15:1522:36 | Address | &:r1522_1 | +| ir.cpp:1522:40:1522:41 | StoreValue | r1522_3 | +| ir.cpp:1522:40:1522:41 | Unary | r1522_2 | +| ir.cpp:1523:15:1523:16 | Address | &:r1523_1 | +| ir.cpp:1523:20:1523:41 | Address | &:r1523_2 | +| ir.cpp:1523:20:1523:41 | Left | r1523_5 | +| ir.cpp:1523:20:1523:41 | Load | m1522_4 | +| ir.cpp:1523:20:1523:41 | Unary | r1523_3 | +| ir.cpp:1523:20:1523:41 | Unary | r1523_4 | +| ir.cpp:1523:20:1523:44 | StoreValue | r1523_8 | +| ir.cpp:1523:20:1523:44 | Unary | r1523_7 | +| ir.cpp:1523:43:1523:43 | Right | r1523_6 | +| ir.cpp:1524:15:1524:16 | Address | &:r1524_1 | +| ir.cpp:1524:20:1524:41 | Address | &:r1524_2 | +| ir.cpp:1524:20:1524:41 | Left | r1524_5 | +| ir.cpp:1524:20:1524:41 | Load | m1522_4 | +| ir.cpp:1524:20:1524:41 | Unary | r1524_3 | +| ir.cpp:1524:20:1524:41 | Unary | r1524_4 | +| ir.cpp:1524:20:1524:44 | StoreValue | r1524_8 | +| ir.cpp:1524:20:1524:44 | Unary | r1524_7 | +| ir.cpp:1524:43:1524:43 | Right | r1524_6 | +| ir.cpp:1525:9:1525:10 | Address | &:r1525_2 | +| ir.cpp:1525:9:1525:10 | Address | &:r1525_4 | +| ir.cpp:1525:9:1525:10 | Load | m1524_9 | +| ir.cpp:1525:9:1525:10 | Unary | r1525_3 | +| ir.cpp:1525:9:1525:14 | ChiPartial | partial:m1525_5 | +| ir.cpp:1525:9:1525:14 | ChiTotal | total:m1516_5 | +| ir.cpp:1525:14:1525:14 | StoreValue | r1525_1 | +| ir.cpp:1526:14:1526:16 | Address | &:r1526_1 | +| ir.cpp:1526:20:1526:21 | Address | &:r1526_2 | +| ir.cpp:1526:20:1526:21 | Load | m1524_9 | +| ir.cpp:1526:20:1526:21 | StoreValue | r1526_5 | +| ir.cpp:1526:20:1526:21 | Unary | r1526_3 | +| ir.cpp:1526:20:1526:21 | Unary | r1526_4 | +| ir.cpp:1527:13:1527:13 | Address | &:r1527_1 | +| ir.cpp:1527:17:1527:18 | Address | &:r1527_2 | +| ir.cpp:1527:17:1527:18 | Address | &:r1527_3 | +| ir.cpp:1527:17:1527:18 | Load | m1524_9 | +| ir.cpp:1527:17:1527:18 | Load | m1525_5 | +| ir.cpp:1527:17:1527:18 | StoreValue | r1527_4 | +| ir.cpp:1531:8:1531:8 | Address | &:r1531_5 | +| ir.cpp:1531:8:1531:8 | Address | &:r1531_5 | +| ir.cpp:1531:8:1531:8 | Address | &:r1531_7 | +| ir.cpp:1531:8:1531:8 | Address | &:r1531_7 | +| ir.cpp:1531:8:1531:8 | ChiPartial | partial:m1531_3 | +| ir.cpp:1531:8:1531:8 | ChiTotal | total:m1531_2 | +| ir.cpp:1531:8:1531:8 | Load | m1531_6 | +| ir.cpp:1531:8:1531:8 | SideEffect | m1531_3 | +| ir.cpp:1531:8:1531:8 | SideEffect | m1531_8 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_5 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_5 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_5 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_5 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_7 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_7 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_7 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_7 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_9 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_10 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_13 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_17 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_18 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_21 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_25 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_26 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_29 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_33 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_34 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_37 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_41 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_42 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_45 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_49 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_50 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_53 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_57 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_58 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_61 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_65 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_66 | +| ir.cpp:1535:8:1535:8 | Address | &:r1535_69 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_3 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_3 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_15 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_23 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_31 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_39 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_47 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_55 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_63 | +| ir.cpp:1535:8:1535:8 | ChiPartial | partial:m1535_71 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_2 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_2 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_8 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_16 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_24 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_32 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_40 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_48 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_56 | +| ir.cpp:1535:8:1535:8 | ChiTotal | total:m1535_64 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m0_2 | +| ir.cpp:1535:8:1535:8 | Load | m1535_6 | +| ir.cpp:1535:8:1535:8 | Load | m1535_6 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | Load | ~m0_4 | +| ir.cpp:1535:8:1535:8 | SideEffect | m1535_3 | +| ir.cpp:1535:8:1535:8 | SideEffect | m1535_3 | +| ir.cpp:1535:8:1535:8 | SideEffect | m1535_8 | +| ir.cpp:1535:8:1535:8 | SideEffect | m1535_72 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_14 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_22 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_30 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_38 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_46 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_54 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_62 | +| ir.cpp:1535:8:1535:8 | StoreValue | r1535_70 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | m1535_6 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_11 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_12 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_19 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_20 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_27 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_28 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_35 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_36 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_43 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_44 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_51 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_52 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_59 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_60 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_67 | +| ir.cpp:1535:8:1535:8 | Unary | r1535_68 | +| ir.cpp:1548:6:1548:35 | ChiPartial | partial:m1548_3 | +| ir.cpp:1548:6:1548:35 | ChiTotal | total:m1548_2 | +| ir.cpp:1548:6:1548:35 | SideEffect | ~m1574_7 | +| ir.cpp:1549:39:1549:39 | Address | &:r1549_1 | +| ir.cpp:1549:39:1549:39 | Address | &:r1549_1 | +| ir.cpp:1549:39:1549:39 | Arg(this) | this:r1549_1 | +| ir.cpp:1549:39:1549:39 | CallTarget | func:r1549_3 | +| ir.cpp:1549:39:1549:39 | ChiPartial | partial:m1549_5 | +| ir.cpp:1549:39:1549:39 | ChiPartial | partial:m1549_7 | +| ir.cpp:1549:39:1549:39 | ChiTotal | total:m1548_4 | +| ir.cpp:1549:39:1549:39 | ChiTotal | total:m1549_2 | +| ir.cpp:1549:39:1549:39 | SideEffect | ~m1548_4 | +| ir.cpp:1552:14:1552:14 | Address | &:r1552_1 | +| ir.cpp:1552:15:1552:15 | Address | &:r1552_5 | +| ir.cpp:1552:18:1552:18 | Address | &:r1552_9 | +| ir.cpp:1552:21:1552:21 | Address | &:r1552_13 | +| ir.cpp:1552:24:1552:24 | Address | &:r1552_17 | +| ir.cpp:1552:27:1552:27 | Address | &:r1552_23 | +| ir.cpp:1552:30:1552:30 | Address | &:r1552_27 | +| ir.cpp:1552:34:1552:34 | Address | &:r1552_31 | +| ir.cpp:1552:41:1552:41 | Address | &:r1552_37 | +| ir.cpp:1552:46:1552:46 | Address | &:r1552_2 | +| ir.cpp:1552:46:1552:46 | Load | m1549_8 | +| ir.cpp:1552:46:1552:46 | StoreValue | r1552_3 | +| ir.cpp:1552:47:1552:47 | Address | &:r1552_19 | +| ir.cpp:1552:47:1552:47 | Address | &:r1552_33 | +| ir.cpp:1552:47:1552:47 | Load | ~m1552_4 | +| ir.cpp:1552:47:1552:47 | Load | ~m1552_4 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_7 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_11 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_15 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_21 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_25 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_29 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_35 | +| ir.cpp:1552:47:1552:47 | StoreValue | r1552_39 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_6 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_10 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_14 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_18 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_20 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_24 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_28 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_32 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_34 | +| ir.cpp:1552:47:1552:47 | Unary | r1552_38 | +| ir.cpp:1553:9:1553:9 | Address | &:r1553_2 | +| ir.cpp:1553:9:1553:9 | Address | &:r1553_3 | +| ir.cpp:1553:9:1553:9 | Load | m1552_12 | +| ir.cpp:1553:9:1553:15 | ChiPartial | partial:m1553_4 | +| ir.cpp:1553:9:1553:15 | ChiTotal | total:m1552_4 | +| ir.cpp:1553:13:1553:15 | StoreValue | r1553_1 | +| ir.cpp:1554:17:1554:18 | Address | &:r1554_1 | +| ir.cpp:1554:22:1554:22 | Address | &:r1554_2 | +| ir.cpp:1554:22:1554:22 | Load | m1552_12 | +| ir.cpp:1554:22:1554:22 | StoreValue | r1554_4 | +| ir.cpp:1554:22:1554:22 | Unary | r1554_3 | +| ir.cpp:1555:13:1555:13 | Address | &:r1555_1 | +| ir.cpp:1555:17:1555:17 | Address | &:r1555_2 | +| ir.cpp:1555:17:1555:17 | Address | &:r1555_3 | +| ir.cpp:1555:17:1555:17 | Load | m1552_8 | +| ir.cpp:1555:17:1555:17 | Load | ~m1552_4 | +| ir.cpp:1555:17:1555:17 | StoreValue | r1555_4 | +| ir.cpp:1556:9:1556:9 | Address | &:r1556_2 | +| ir.cpp:1556:9:1556:9 | Address | &:r1556_3 | +| ir.cpp:1556:9:1556:9 | Load | m1552_22 | +| ir.cpp:1556:9:1556:13 | ChiPartial | partial:m1556_4 | +| ir.cpp:1556:9:1556:13 | ChiTotal | total:m1549_6 | +| ir.cpp:1556:13:1556:13 | StoreValue | r1556_1 | +| ir.cpp:1557:9:1557:10 | Address | &:r1557_5 | +| ir.cpp:1557:9:1557:14 | ChiPartial | partial:m1557_6 | +| ir.cpp:1557:9:1557:14 | ChiTotal | total:m1556_5 | +| ir.cpp:1557:10:1557:10 | Address | &:r1557_2 | +| ir.cpp:1557:10:1557:10 | Address | &:r1557_3 | +| ir.cpp:1557:10:1557:10 | Load | m1552_26 | +| ir.cpp:1557:10:1557:10 | Load | ~m1552_4 | +| ir.cpp:1557:10:1557:10 | Unary | r1557_4 | +| ir.cpp:1557:14:1557:14 | StoreValue | r1557_1 | +| ir.cpp:1558:14:1558:15 | Address | &:r1558_1 | +| ir.cpp:1558:19:1558:19 | Address | &:r1558_2 | +| ir.cpp:1558:19:1558:19 | Load | m1552_22 | +| ir.cpp:1558:19:1558:19 | StoreValue | r1558_4 | +| ir.cpp:1558:19:1558:19 | Unary | r1558_3 | +| ir.cpp:1559:14:1559:15 | Address | &:r1559_1 | +| ir.cpp:1559:19:1559:20 | StoreValue | r1559_4 | +| ir.cpp:1559:20:1559:20 | Address | &:r1559_2 | +| ir.cpp:1559:20:1559:20 | Load | m1552_22 | +| ir.cpp:1559:20:1559:20 | Unary | r1559_3 | +| ir.cpp:1560:13:1560:13 | Address | &:r1560_1 | +| ir.cpp:1560:17:1560:17 | Address | &:r1560_2 | +| ir.cpp:1560:17:1560:17 | Address | &:r1560_3 | +| ir.cpp:1560:17:1560:17 | Load | m1552_22 | +| ir.cpp:1560:17:1560:17 | Load | ~m1557_7 | +| ir.cpp:1560:17:1560:17 | StoreValue | r1560_4 | +| ir.cpp:1564:14:1564:35 | Address | &:r1564_1 | +| ir.cpp:1564:39:1564:39 | Address | &:r1564_2 | +| ir.cpp:1564:39:1564:39 | Load | m1549_8 | +| ir.cpp:1564:39:1564:39 | StoreValue | r1564_3 | +| ir.cpp:1565:15:1565:15 | Address | &:r1565_1 | +| ir.cpp:1565:19:1565:40 | Unary | r1565_2 | +| ir.cpp:1565:19:1565:42 | StoreValue | r1565_4 | +| ir.cpp:1565:42:1565:42 | Unary | r1565_3 | +| ir.cpp:1566:15:1566:15 | Address | &:r1566_1 | +| ir.cpp:1566:19:1566:40 | Unary | r1566_2 | +| ir.cpp:1566:19:1566:42 | StoreValue | r1566_4 | +| ir.cpp:1566:42:1566:42 | Unary | r1566_3 | +| ir.cpp:1568:15:1568:15 | Address | &:r1568_1 | +| ir.cpp:1568:19:1568:40 | Unary | r1568_2 | +| ir.cpp:1568:19:1568:42 | StoreValue | r1568_6 | +| ir.cpp:1568:19:1568:42 | Unary | r1568_5 | +| ir.cpp:1568:42:1568:42 | Address | &:r1568_3 | +| ir.cpp:1568:42:1568:42 | Load | ~m1564_4 | +| ir.cpp:1568:42:1568:42 | Unary | r1568_4 | +| ir.cpp:1569:15:1569:15 | Address | &:r1569_1 | +| ir.cpp:1569:19:1569:40 | Unary | r1569_2 | +| ir.cpp:1569:19:1569:42 | StoreValue | r1569_4 | +| ir.cpp:1569:42:1569:42 | Unary | r1569_3 | +| ir.cpp:1570:9:1570:9 | Address | &:r1570_2 | +| ir.cpp:1570:9:1570:9 | Address | &:r1570_4 | +| ir.cpp:1570:9:1570:9 | Load | m1566_5 | +| ir.cpp:1570:9:1570:9 | Unary | r1570_3 | +| ir.cpp:1570:9:1570:15 | ChiPartial | partial:m1570_5 | +| ir.cpp:1570:9:1570:15 | ChiTotal | total:m1564_4 | +| ir.cpp:1570:13:1570:15 | StoreValue | r1570_1 | +| ir.cpp:1571:17:1571:18 | Address | &:r1571_1 | +| ir.cpp:1571:22:1571:22 | Address | &:r1571_2 | +| ir.cpp:1571:22:1571:22 | Load | m1566_5 | +| ir.cpp:1571:22:1571:22 | StoreValue | r1571_5 | +| ir.cpp:1571:22:1571:22 | Unary | r1571_3 | +| ir.cpp:1571:22:1571:22 | Unary | r1571_4 | +| ir.cpp:1572:13:1572:13 | Address | &:r1572_1 | +| ir.cpp:1572:17:1572:17 | Address | &:r1572_2 | +| ir.cpp:1572:17:1572:17 | Address | &:r1572_3 | +| ir.cpp:1572:17:1572:17 | Load | m1565_5 | +| ir.cpp:1572:17:1572:17 | Load | ~m1564_4 | +| ir.cpp:1572:17:1572:17 | StoreValue | r1572_4 | +| ir.cpp:1573:9:1573:9 | Address | &:r1573_2 | +| ir.cpp:1573:9:1573:9 | Address | &:r1573_4 | +| ir.cpp:1573:9:1573:9 | Load | m1568_7 | +| ir.cpp:1573:9:1573:9 | Unary | r1573_3 | +| ir.cpp:1573:9:1573:13 | ChiPartial | partial:m1573_5 | +| ir.cpp:1573:9:1573:13 | ChiTotal | total:m1557_7 | +| ir.cpp:1573:13:1573:13 | StoreValue | r1573_1 | +| ir.cpp:1574:9:1574:10 | Address | &:r1574_5 | +| ir.cpp:1574:9:1574:14 | ChiPartial | partial:m1574_6 | +| ir.cpp:1574:9:1574:14 | ChiTotal | total:m1573_6 | +| ir.cpp:1574:10:1574:10 | Address | &:r1574_2 | +| ir.cpp:1574:10:1574:10 | Address | &:r1574_3 | +| ir.cpp:1574:10:1574:10 | Load | m1569_5 | +| ir.cpp:1574:10:1574:10 | Load | ~m1564_4 | +| ir.cpp:1574:10:1574:10 | Unary | r1574_4 | +| ir.cpp:1574:14:1574:14 | StoreValue | r1574_1 | +| ir.cpp:1575:14:1575:15 | Address | &:r1575_1 | +| ir.cpp:1575:19:1575:19 | Address | &:r1575_2 | +| ir.cpp:1575:19:1575:19 | Load | m1568_7 | +| ir.cpp:1575:19:1575:19 | StoreValue | r1575_5 | +| ir.cpp:1575:19:1575:19 | Unary | r1575_3 | +| ir.cpp:1575:19:1575:19 | Unary | r1575_4 | +| ir.cpp:1576:14:1576:15 | Address | &:r1576_1 | +| ir.cpp:1576:19:1576:20 | StoreValue | r1576_5 | +| ir.cpp:1576:20:1576:20 | Address | &:r1576_2 | +| ir.cpp:1576:20:1576:20 | Load | m1568_7 | +| ir.cpp:1576:20:1576:20 | Unary | r1576_3 | +| ir.cpp:1576:20:1576:20 | Unary | r1576_4 | +| ir.cpp:1577:13:1577:13 | Address | &:r1577_1 | +| ir.cpp:1577:17:1577:17 | Address | &:r1577_2 | +| ir.cpp:1577:17:1577:17 | Address | &:r1577_3 | +| ir.cpp:1577:17:1577:17 | Load | m1568_7 | +| ir.cpp:1577:17:1577:17 | Load | ~m1574_7 | +| ir.cpp:1577:17:1577:17 | StoreValue | r1577_4 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_5 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_5 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_5 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_5 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_7 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_7 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_7 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_7 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_9 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_10 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_13 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_17 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_18 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_21 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_25 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_26 | +| ir.cpp:1588:8:1588:8 | Address | &:r1588_29 | +| ir.cpp:1588:8:1588:8 | ChiPartial | partial:m1588_3 | +| ir.cpp:1588:8:1588:8 | ChiPartial | partial:m1588_3 | +| ir.cpp:1588:8:1588:8 | ChiPartial | partial:m1588_15 | +| ir.cpp:1588:8:1588:8 | ChiPartial | partial:m1588_23 | +| ir.cpp:1588:8:1588:8 | ChiPartial | partial:m1588_31 | +| ir.cpp:1588:8:1588:8 | ChiTotal | total:m1588_2 | +| ir.cpp:1588:8:1588:8 | ChiTotal | total:m1588_2 | +| ir.cpp:1588:8:1588:8 | ChiTotal | total:m1588_8 | +| ir.cpp:1588:8:1588:8 | ChiTotal | total:m1588_16 | +| ir.cpp:1588:8:1588:8 | ChiTotal | total:m1588_24 | +| ir.cpp:1588:8:1588:8 | Load | m0_2 | +| ir.cpp:1588:8:1588:8 | Load | m0_2 | +| ir.cpp:1588:8:1588:8 | Load | m0_2 | +| ir.cpp:1588:8:1588:8 | Load | m1588_6 | +| ir.cpp:1588:8:1588:8 | Load | m1588_6 | +| ir.cpp:1588:8:1588:8 | Load | ~m0_4 | +| ir.cpp:1588:8:1588:8 | Load | ~m0_4 | +| ir.cpp:1588:8:1588:8 | Load | ~m0_4 | +| ir.cpp:1588:8:1588:8 | SideEffect | m1588_3 | +| ir.cpp:1588:8:1588:8 | SideEffect | m1588_3 | +| ir.cpp:1588:8:1588:8 | SideEffect | m1588_8 | +| ir.cpp:1588:8:1588:8 | SideEffect | m1588_32 | +| ir.cpp:1588:8:1588:8 | StoreValue | r1588_14 | +| ir.cpp:1588:8:1588:8 | StoreValue | r1588_22 | +| ir.cpp:1588:8:1588:8 | StoreValue | r1588_30 | +| ir.cpp:1588:8:1588:8 | Unary | m1588_6 | +| ir.cpp:1588:8:1588:8 | Unary | m1588_6 | +| ir.cpp:1588:8:1588:8 | Unary | m1588_6 | +| ir.cpp:1588:8:1588:8 | Unary | r1588_11 | +| ir.cpp:1588:8:1588:8 | Unary | r1588_12 | +| ir.cpp:1588:8:1588:8 | Unary | r1588_19 | +| ir.cpp:1588:8:1588:8 | Unary | r1588_20 | +| ir.cpp:1588:8:1588:8 | Unary | r1588_27 | +| ir.cpp:1588:8:1588:8 | Unary | r1588_28 | +| ir.cpp:1616:60:1616:95 | Address | &:r1616_5 | +| ir.cpp:1616:60:1616:95 | Address | &:r1616_5 | +| ir.cpp:1616:60:1616:95 | Address | &:r1616_7 | +| ir.cpp:1616:60:1616:95 | Address | &:r1616_7 | +| ir.cpp:1616:60:1616:95 | Address | &:r1616_10 | +| ir.cpp:1616:60:1616:95 | ChiPartial | partial:m1616_3 | +| ir.cpp:1616:60:1616:95 | ChiTotal | total:m1616_2 | +| ir.cpp:1616:60:1616:95 | Load | m0_2 | +| ir.cpp:1616:60:1616:95 | Load | m1616_6 | +| ir.cpp:1616:60:1616:95 | SideEffect | m1616_3 | +| ir.cpp:1616:60:1616:95 | SideEffect | m1616_8 | +| ir.cpp:1617:5:1617:13 | Address | &:r1617_1 | +| ir.cpp:1617:12:1617:12 | Address | &:r1617_2 | +| ir.cpp:1617:12:1617:12 | Load | m1616_6 | +| ir.cpp:1617:12:1617:12 | Unary | r1617_3 | +| ir.cpp:1617:12:1617:12 | Unary | r1617_4 | +| ir.cpp:1620:60:1620:95 | Address | &:r1620_5 | +| ir.cpp:1620:60:1620:95 | Address | &:r1620_5 | +| ir.cpp:1620:60:1620:95 | Address | &:r1620_7 | +| ir.cpp:1620:60:1620:95 | Address | &:r1620_7 | +| ir.cpp:1620:60:1620:95 | Address | &:r1620_10 | +| ir.cpp:1620:60:1620:95 | ChiPartial | partial:m1620_3 | +| ir.cpp:1620:60:1620:95 | ChiTotal | total:m1620_2 | +| ir.cpp:1620:60:1620:95 | Load | m0_2 | +| ir.cpp:1620:60:1620:95 | Load | m1620_6 | +| ir.cpp:1620:60:1620:95 | SideEffect | m1620_3 | +| ir.cpp:1620:60:1620:95 | SideEffect | m1620_8 | +| ir.cpp:1621:5:1621:13 | Address | &:r1621_1 | +| ir.cpp:1621:12:1621:12 | Address | &:r1621_2 | +| ir.cpp:1621:12:1621:12 | Load | m1620_6 | +| ir.cpp:1621:12:1621:12 | Unary | r1621_3 | +| ir.cpp:1621:12:1621:12 | Unary | r1621_4 | +| ir.cpp:1624:60:1624:95 | Address | &:r1624_5 | +| ir.cpp:1624:60:1624:95 | Address | &:r1624_5 | +| ir.cpp:1624:60:1624:95 | Address | &:r1624_7 | +| ir.cpp:1624:60:1624:95 | Address | &:r1624_7 | +| ir.cpp:1624:60:1624:95 | Address | &:r1624_10 | +| ir.cpp:1624:60:1624:95 | ChiPartial | partial:m1624_3 | +| ir.cpp:1624:60:1624:95 | ChiTotal | total:m1624_2 | +| ir.cpp:1624:60:1624:95 | Load | m1624_6 | +| ir.cpp:1624:60:1624:95 | Load | m1625_8 | +| ir.cpp:1624:60:1624:95 | SideEffect | m1624_3 | +| ir.cpp:1624:60:1624:95 | SideEffect | m1624_8 | +| ir.cpp:1625:5:1625:13 | Address | &:r1625_1 | +| ir.cpp:1625:12:1625:12 | Address | &:r1625_2 | +| ir.cpp:1625:12:1625:12 | Address | &:r1625_4 | +| ir.cpp:1625:12:1625:12 | Load | m1624_6 | +| ir.cpp:1625:12:1625:12 | Load | ~m1624_8 | +| ir.cpp:1625:12:1625:12 | StoreValue | r1625_7 | +| ir.cpp:1625:12:1625:12 | Unary | r1625_3 | +| ir.cpp:1625:12:1625:12 | Unary | r1625_5 | +| ir.cpp:1625:12:1625:12 | Unary | r1625_6 | +| ir.cpp:1628:6:1628:37 | ChiPartial | partial:m1628_3 | +| ir.cpp:1628:6:1628:37 | ChiTotal | total:m1628_2 | +| ir.cpp:1628:6:1628:37 | SideEffect | ~m1649_6 | +| ir.cpp:1629:34:1629:34 | Address | &:r1629_1 | +| ir.cpp:1629:34:1629:34 | Address | &:r1629_1 | +| ir.cpp:1629:34:1629:34 | Arg(this) | this:r1629_1 | +| ir.cpp:1629:34:1629:34 | CallTarget | func:r1629_3 | +| ir.cpp:1629:34:1629:34 | ChiPartial | partial:m1629_5 | +| ir.cpp:1629:34:1629:34 | ChiPartial | partial:m1629_7 | +| ir.cpp:1629:34:1629:34 | ChiTotal | total:m1628_4 | +| ir.cpp:1629:34:1629:34 | ChiTotal | total:m1629_2 | +| ir.cpp:1629:34:1629:34 | SideEffect | ~m1628_4 | +| ir.cpp:1632:14:1632:14 | Address | &:r1632_1 | +| ir.cpp:1632:14:1632:14 | Address | &:r1632_6 | +| ir.cpp:1632:14:1632:14 | Address | &:r1632_6 | +| ir.cpp:1632:14:1632:14 | Address | &:r1632_18 | +| ir.cpp:1632:14:1632:14 | Address | &:r1632_18 | +| ir.cpp:1632:14:1632:14 | Address | &:r1632_30 | +| ir.cpp:1632:14:1632:14 | Address | &:r1632_30 | +| ir.cpp:1632:14:1632:14 | Arg(this) | this:r1632_6 | +| ir.cpp:1632:14:1632:14 | Arg(this) | this:r1632_18 | +| ir.cpp:1632:14:1632:14 | Arg(this) | this:r1632_30 | +| ir.cpp:1632:14:1632:14 | CallTarget | func:r1632_7 | +| ir.cpp:1632:14:1632:14 | CallTarget | func:r1632_19 | +| ir.cpp:1632:14:1632:14 | CallTarget | func:r1632_31 | +| ir.cpp:1632:14:1632:14 | ChiPartial | partial:m1632_9 | +| ir.cpp:1632:14:1632:14 | ChiPartial | partial:m1632_12 | +| ir.cpp:1632:14:1632:14 | ChiPartial | partial:m1632_21 | +| ir.cpp:1632:14:1632:14 | ChiPartial | partial:m1632_24 | +| ir.cpp:1632:14:1632:14 | ChiPartial | partial:m1632_33 | +| ir.cpp:1632:14:1632:14 | ChiPartial | partial:m1632_36 | +| ir.cpp:1632:14:1632:14 | ChiTotal | total:m1629_6 | +| ir.cpp:1632:14:1632:14 | ChiTotal | total:m1632_4 | +| ir.cpp:1632:14:1632:14 | ChiTotal | total:m1632_10 | +| ir.cpp:1632:14:1632:14 | ChiTotal | total:m1632_13 | +| ir.cpp:1632:14:1632:14 | ChiTotal | total:m1632_22 | +| ir.cpp:1632:14:1632:14 | ChiTotal | total:m1632_25 | +| ir.cpp:1632:14:1632:14 | SideEffect | m1632_4 | +| ir.cpp:1632:14:1632:14 | SideEffect | m1632_13 | +| ir.cpp:1632:14:1632:14 | SideEffect | m1632_25 | +| ir.cpp:1632:14:1632:14 | SideEffect | ~m1629_6 | +| ir.cpp:1632:14:1632:14 | SideEffect | ~m1632_10 | +| ir.cpp:1632:14:1632:14 | SideEffect | ~m1632_22 | +| ir.cpp:1632:14:1632:14 | Unary | r1632_8 | +| ir.cpp:1632:14:1632:14 | Unary | r1632_20 | +| ir.cpp:1632:14:1632:14 | Unary | r1632_32 | +| ir.cpp:1632:14:1632:27 | StoreValue | r1632_15 | +| ir.cpp:1632:14:1632:27 | StoreValue | r1632_27 | +| ir.cpp:1632:14:1632:27 | StoreValue | r1632_39 | +| ir.cpp:1632:14:1632:27 | Unary | r1632_14 | +| ir.cpp:1632:14:1632:27 | Unary | r1632_26 | +| ir.cpp:1632:14:1632:27 | Unary | r1632_38 | +| ir.cpp:1632:15:1632:15 | Address | &:r1632_5 | +| ir.cpp:1632:18:1632:18 | Address | &:r1632_17 | +| ir.cpp:1632:21:1632:21 | Address | &:r1632_29 | +| ir.cpp:1632:26:1632:26 | Address | &:r1632_2 | +| ir.cpp:1632:26:1632:26 | Load | m1629_8 | +| ir.cpp:1632:26:1632:26 | StoreValue | r1632_3 | +| ir.cpp:1633:9:1633:9 | Address | &:r1633_2 | +| ir.cpp:1633:9:1633:9 | Address | &:r1633_4 | +| ir.cpp:1633:9:1633:9 | Load | m1632_28 | +| ir.cpp:1633:9:1633:9 | Unary | r1633_3 | +| ir.cpp:1633:9:1633:15 | ChiPartial | partial:m1633_5 | +| ir.cpp:1633:9:1633:15 | ChiTotal | total:m1632_37 | +| ir.cpp:1633:13:1633:15 | StoreValue | r1633_1 | +| ir.cpp:1634:17:1634:18 | Address | &:r1634_1 | +| ir.cpp:1634:22:1634:22 | Address | &:r1634_2 | +| ir.cpp:1634:22:1634:22 | Load | m1632_28 | +| ir.cpp:1634:22:1634:22 | StoreValue | r1634_5 | +| ir.cpp:1634:22:1634:22 | Unary | r1634_3 | +| ir.cpp:1634:22:1634:22 | Unary | r1634_4 | +| ir.cpp:1635:13:1635:13 | Address | &:r1635_1 | +| ir.cpp:1635:17:1635:17 | Address | &:r1635_2 | +| ir.cpp:1635:17:1635:17 | Address | &:r1635_3 | +| ir.cpp:1635:17:1635:17 | Load | m1632_16 | +| ir.cpp:1635:17:1635:17 | Load | ~m1632_37 | +| ir.cpp:1635:17:1635:17 | StoreValue | r1635_4 | +| ir.cpp:1636:9:1636:9 | Address | &:r1636_2 | +| ir.cpp:1636:9:1636:9 | Address | &:r1636_4 | +| ir.cpp:1636:9:1636:9 | Load | m1632_40 | +| ir.cpp:1636:9:1636:9 | Unary | r1636_3 | +| ir.cpp:1636:9:1636:13 | ChiPartial | partial:m1636_5 | +| ir.cpp:1636:9:1636:13 | ChiTotal | total:m1632_34 | +| ir.cpp:1636:13:1636:13 | StoreValue | r1636_1 | +| ir.cpp:1637:14:1637:15 | Address | &:r1637_1 | +| ir.cpp:1637:19:1637:19 | Address | &:r1637_2 | +| ir.cpp:1637:19:1637:19 | Load | m1632_40 | +| ir.cpp:1637:19:1637:19 | StoreValue | r1637_5 | +| ir.cpp:1637:19:1637:19 | Unary | r1637_3 | +| ir.cpp:1637:19:1637:19 | Unary | r1637_4 | +| ir.cpp:1638:13:1638:13 | Address | &:r1638_1 | +| ir.cpp:1638:17:1638:17 | Address | &:r1638_2 | +| ir.cpp:1638:17:1638:17 | Address | &:r1638_3 | +| ir.cpp:1638:17:1638:17 | Load | m1632_40 | +| ir.cpp:1638:17:1638:17 | Load | ~m1636_6 | +| ir.cpp:1638:17:1638:17 | StoreValue | r1638_4 | +| ir.cpp:1642:14:1642:35 | Address | &:r1642_1 | +| ir.cpp:1642:39:1642:39 | Address | &:r1642_2 | +| ir.cpp:1642:39:1642:39 | Load | m1629_8 | +| ir.cpp:1642:39:1642:39 | StoreValue | r1642_3 | +| ir.cpp:1643:15:1643:15 | Address | &:r1643_1 | +| ir.cpp:1643:19:1643:40 | Address | &:r1643_2 | +| ir.cpp:1643:19:1643:40 | Address | &:r1643_2 | +| ir.cpp:1643:19:1643:40 | Arg(this) | this:r1643_2 | +| ir.cpp:1643:19:1643:40 | ChiPartial | partial:m1643_8 | +| ir.cpp:1643:19:1643:40 | ChiTotal | total:m1642_4 | +| ir.cpp:1643:19:1643:40 | SideEffect | m1642_4 | +| ir.cpp:1643:42:1643:47 | CallTarget | func:r1643_3 | +| ir.cpp:1643:42:1643:47 | ChiPartial | partial:m1643_5 | +| ir.cpp:1643:42:1643:47 | ChiTotal | total:m1636_6 | +| ir.cpp:1643:42:1643:47 | SideEffect | ~m1636_6 | +| ir.cpp:1643:42:1643:47 | Unary | r1643_4 | +| ir.cpp:1643:48:1643:50 | StoreValue | r1643_11 | +| ir.cpp:1643:48:1643:50 | Unary | r1643_10 | +| ir.cpp:1644:15:1644:15 | Address | &:r1644_1 | +| ir.cpp:1644:19:1644:40 | Address | &:r1644_2 | +| ir.cpp:1644:19:1644:40 | Address | &:r1644_2 | +| ir.cpp:1644:19:1644:40 | Arg(this) | this:r1644_2 | +| ir.cpp:1644:19:1644:40 | ChiPartial | partial:m1644_8 | +| ir.cpp:1644:19:1644:40 | ChiTotal | total:m1643_9 | +| ir.cpp:1644:19:1644:40 | SideEffect | m1643_9 | +| ir.cpp:1644:42:1644:47 | CallTarget | func:r1644_3 | +| ir.cpp:1644:42:1644:47 | ChiPartial | partial:m1644_5 | +| ir.cpp:1644:42:1644:47 | ChiTotal | total:m1643_6 | +| ir.cpp:1644:42:1644:47 | SideEffect | ~m1643_6 | +| ir.cpp:1644:42:1644:47 | Unary | r1644_4 | +| ir.cpp:1644:48:1644:50 | StoreValue | r1644_11 | +| ir.cpp:1644:48:1644:50 | Unary | r1644_10 | +| ir.cpp:1645:15:1645:15 | Address | &:r1645_1 | +| ir.cpp:1645:19:1645:40 | Address | &:r1645_2 | +| ir.cpp:1645:19:1645:40 | Address | &:r1645_2 | +| ir.cpp:1645:19:1645:40 | Arg(this) | this:r1645_2 | +| ir.cpp:1645:19:1645:40 | ChiPartial | partial:m1645_8 | +| ir.cpp:1645:19:1645:40 | ChiTotal | total:m1644_9 | +| ir.cpp:1645:19:1645:40 | SideEffect | m1644_9 | +| ir.cpp:1645:42:1645:47 | CallTarget | func:r1645_3 | +| ir.cpp:1645:42:1645:47 | ChiPartial | partial:m1645_5 | +| ir.cpp:1645:42:1645:47 | ChiTotal | total:m1644_6 | +| ir.cpp:1645:42:1645:47 | SideEffect | ~m1644_6 | +| ir.cpp:1645:42:1645:47 | Unary | r1645_4 | +| ir.cpp:1645:48:1645:50 | StoreValue | r1645_11 | +| ir.cpp:1645:48:1645:50 | Unary | r1645_10 | +| ir.cpp:1646:9:1646:9 | Address | &:r1646_2 | +| ir.cpp:1646:9:1646:9 | Address | &:r1646_4 | +| ir.cpp:1646:9:1646:9 | Load | m1644_12 | +| ir.cpp:1646:9:1646:9 | Unary | r1646_3 | +| ir.cpp:1646:9:1646:15 | ChiPartial | partial:m1646_5 | +| ir.cpp:1646:9:1646:15 | ChiTotal | total:m1645_9 | +| ir.cpp:1646:13:1646:15 | StoreValue | r1646_1 | +| ir.cpp:1647:17:1647:18 | Address | &:r1647_1 | +| ir.cpp:1647:22:1647:22 | Address | &:r1647_2 | +| ir.cpp:1647:22:1647:22 | Load | m1644_12 | +| ir.cpp:1647:22:1647:22 | StoreValue | r1647_5 | +| ir.cpp:1647:22:1647:22 | Unary | r1647_3 | +| ir.cpp:1647:22:1647:22 | Unary | r1647_4 | +| ir.cpp:1648:13:1648:13 | Address | &:r1648_1 | +| ir.cpp:1648:17:1648:17 | Address | &:r1648_2 | +| ir.cpp:1648:17:1648:17 | Address | &:r1648_3 | +| ir.cpp:1648:17:1648:17 | Load | m1643_12 | +| ir.cpp:1648:17:1648:17 | Load | ~m1645_9 | +| ir.cpp:1648:17:1648:17 | StoreValue | r1648_4 | +| ir.cpp:1649:9:1649:9 | Address | &:r1649_2 | +| ir.cpp:1649:9:1649:9 | Address | &:r1649_4 | +| ir.cpp:1649:9:1649:9 | Load | m1645_12 | +| ir.cpp:1649:9:1649:9 | Unary | r1649_3 | +| ir.cpp:1649:9:1649:13 | ChiPartial | partial:m1649_5 | +| ir.cpp:1649:9:1649:13 | ChiTotal | total:m1645_6 | +| ir.cpp:1649:13:1649:13 | StoreValue | r1649_1 | +| ir.cpp:1650:14:1650:15 | Address | &:r1650_1 | +| ir.cpp:1650:19:1650:19 | Address | &:r1650_2 | +| ir.cpp:1650:19:1650:19 | Load | m1645_12 | +| ir.cpp:1650:19:1650:19 | StoreValue | r1650_5 | +| ir.cpp:1650:19:1650:19 | Unary | r1650_3 | +| ir.cpp:1650:19:1650:19 | Unary | r1650_4 | +| ir.cpp:1651:13:1651:13 | Address | &:r1651_1 | +| ir.cpp:1651:17:1651:17 | Address | &:r1651_2 | +| ir.cpp:1651:17:1651:17 | Address | &:r1651_3 | +| ir.cpp:1651:17:1651:17 | Load | m1645_12 | +| ir.cpp:1651:17:1651:17 | Load | ~m1649_6 | +| ir.cpp:1651:17:1651:17 | StoreValue | r1651_4 | +| ir.cpp:1655:8:1655:8 | Address | &:r1655_5 | +| ir.cpp:1655:8:1655:8 | Address | &:r1655_5 | +| ir.cpp:1655:8:1655:8 | Address | &:r1655_7 | +| ir.cpp:1655:8:1655:8 | Address | &:r1655_7 | +| ir.cpp:1655:8:1655:8 | ChiPartial | partial:m1655_3 | +| ir.cpp:1655:8:1655:8 | ChiTotal | total:m1655_2 | +| ir.cpp:1655:8:1655:8 | Load | m1655_6 | +| ir.cpp:1655:8:1655:8 | SideEffect | m1655_3 | +| ir.cpp:1655:8:1655:8 | SideEffect | m1655_8 | +| ir.cpp:1682:61:1682:98 | Address | &:r1682_5 | +| ir.cpp:1682:61:1682:98 | Address | &:r1682_5 | +| ir.cpp:1682:61:1682:98 | Address | &:r1682_7 | +| ir.cpp:1682:61:1682:98 | Address | &:r1682_7 | +| ir.cpp:1682:61:1682:98 | Address | &:r1682_10 | +| ir.cpp:1682:61:1682:98 | ChiPartial | partial:m1682_3 | +| ir.cpp:1682:61:1682:98 | ChiTotal | total:m1682_2 | +| ir.cpp:1682:61:1682:98 | Load | m1682_6 | +| ir.cpp:1682:61:1682:98 | Load | m1683_6 | +| ir.cpp:1682:61:1682:98 | SideEffect | m1682_3 | +| ir.cpp:1682:61:1682:98 | SideEffect | m1682_8 | +| ir.cpp:1683:5:1683:13 | Address | &:r1683_1 | +| ir.cpp:1683:12:1683:12 | Address | &:r1683_2 | +| ir.cpp:1683:12:1683:12 | Address | &:r1683_4 | +| ir.cpp:1683:12:1683:12 | Load | m1682_6 | +| ir.cpp:1683:12:1683:12 | Load | ~m1682_8 | +| ir.cpp:1683:12:1683:12 | StoreValue | r1683_5 | +| ir.cpp:1683:12:1683:12 | Unary | r1683_3 | +| ir.cpp:1686:61:1686:98 | Address | &:r1686_5 | +| ir.cpp:1686:61:1686:98 | Address | &:r1686_5 | +| ir.cpp:1686:61:1686:98 | Address | &:r1686_7 | +| ir.cpp:1686:61:1686:98 | Address | &:r1686_7 | +| ir.cpp:1686:61:1686:98 | Address | &:r1686_10 | +| ir.cpp:1686:61:1686:98 | ChiPartial | partial:m1686_3 | +| ir.cpp:1686:61:1686:98 | ChiTotal | total:m1686_2 | +| ir.cpp:1686:61:1686:98 | Load | m1686_6 | +| ir.cpp:1686:61:1686:98 | Load | m1687_8 | +| ir.cpp:1686:61:1686:98 | SideEffect | m1686_3 | +| ir.cpp:1686:61:1686:98 | SideEffect | m1686_8 | +| ir.cpp:1687:5:1687:13 | Address | &:r1687_1 | +| ir.cpp:1687:12:1687:12 | Address | &:r1687_2 | +| ir.cpp:1687:12:1687:12 | Address | &:r1687_4 | +| ir.cpp:1687:12:1687:12 | Load | m1686_6 | +| ir.cpp:1687:12:1687:12 | Load | ~m1686_8 | +| ir.cpp:1687:12:1687:12 | StoreValue | r1687_7 | +| ir.cpp:1687:12:1687:12 | Unary | r1687_3 | +| ir.cpp:1687:12:1687:12 | Unary | r1687_5 | +| ir.cpp:1687:12:1687:12 | Unary | r1687_6 | +| ir.cpp:1690:61:1690:98 | Address | &:r1690_5 | +| ir.cpp:1690:61:1690:98 | Address | &:r1690_5 | +| ir.cpp:1690:61:1690:98 | Address | &:r1690_7 | +| ir.cpp:1690:61:1690:98 | Address | &:r1690_7 | +| ir.cpp:1690:61:1690:98 | Address | &:r1690_10 | +| ir.cpp:1690:61:1690:98 | ChiPartial | partial:m1690_3 | +| ir.cpp:1690:61:1690:98 | ChiTotal | total:m1690_2 | +| ir.cpp:1690:61:1690:98 | Load | m1690_6 | +| ir.cpp:1690:61:1690:98 | Load | m1691_6 | +| ir.cpp:1690:61:1690:98 | SideEffect | m1690_3 | +| ir.cpp:1690:61:1690:98 | SideEffect | m1690_8 | +| ir.cpp:1691:5:1691:13 | Address | &:r1691_1 | +| ir.cpp:1691:12:1691:12 | Address | &:r1691_2 | +| ir.cpp:1691:12:1691:12 | StoreValue | r1691_3 | +| ir.cpp:1691:12:1691:12 | StoreValue | r1691_5 | +| ir.cpp:1691:12:1691:12 | Unary | r1691_2 | +| ir.cpp:1694:6:1694:40 | ChiPartial | partial:m1694_3 | +| ir.cpp:1694:6:1694:40 | ChiTotal | total:m1694_2 | +| ir.cpp:1694:6:1694:40 | SideEffect | ~m1715_6 | +| ir.cpp:1695:36:1695:36 | Address | &:r1695_1 | +| ir.cpp:1695:36:1695:36 | Address | &:r1695_1 | +| ir.cpp:1695:36:1695:36 | Arg(this) | this:r1695_1 | +| ir.cpp:1695:36:1695:36 | CallTarget | func:r1695_3 | +| ir.cpp:1695:36:1695:36 | ChiPartial | partial:m1695_5 | +| ir.cpp:1695:36:1695:36 | ChiPartial | partial:m1695_7 | +| ir.cpp:1695:36:1695:36 | ChiTotal | total:m1694_4 | +| ir.cpp:1695:36:1695:36 | ChiTotal | total:m1695_2 | +| ir.cpp:1695:36:1695:36 | SideEffect | ~m1694_4 | +| ir.cpp:1698:16:1698:16 | Address | &:r1698_1 | +| ir.cpp:1698:16:1698:16 | Address | &:r1698_7 | +| ir.cpp:1698:16:1698:16 | Address | &:r1698_21 | +| ir.cpp:1698:16:1698:16 | Address | &:r1698_35 | +| ir.cpp:1698:16:1698:16 | CallTarget | func:r1698_10 | +| ir.cpp:1698:16:1698:16 | CallTarget | func:r1698_24 | +| ir.cpp:1698:16:1698:16 | CallTarget | func:r1698_38 | +| ir.cpp:1698:16:1698:16 | ChiPartial | partial:m1698_12 | +| ir.cpp:1698:16:1698:16 | ChiPartial | partial:m1698_26 | +| ir.cpp:1698:16:1698:16 | ChiPartial | partial:m1698_40 | +| ir.cpp:1698:16:1698:16 | ChiTotal | total:m1695_6 | +| ir.cpp:1698:16:1698:16 | ChiTotal | total:m1698_13 | +| ir.cpp:1698:16:1698:16 | ChiTotal | total:m1698_27 | +| ir.cpp:1698:16:1698:16 | Load | m1698_4 | +| ir.cpp:1698:16:1698:16 | Load | m1698_4 | +| ir.cpp:1698:16:1698:16 | Load | m1698_4 | +| ir.cpp:1698:16:1698:16 | SideEffect | ~m1695_6 | +| ir.cpp:1698:16:1698:16 | SideEffect | ~m1698_13 | +| ir.cpp:1698:16:1698:16 | SideEffect | ~m1698_27 | +| ir.cpp:1698:16:1698:16 | StoreValue | r1698_11 | +| ir.cpp:1698:16:1698:16 | Unary | r1698_8 | +| ir.cpp:1698:16:1698:16 | Unary | r1698_22 | +| ir.cpp:1698:16:1698:16 | Unary | r1698_25 | +| ir.cpp:1698:16:1698:16 | Unary | r1698_36 | +| ir.cpp:1698:16:1698:16 | Unary | r1698_39 | +| ir.cpp:1698:16:1698:30 | Address | &:r1698_6 | +| ir.cpp:1698:16:1698:30 | StoreValue | r1698_18 | +| ir.cpp:1698:16:1698:30 | StoreValue | r1698_32 | +| ir.cpp:1698:16:1698:30 | StoreValue | r1698_46 | +| ir.cpp:1698:16:1698:30 | Unary | r1698_6 | +| ir.cpp:1698:16:1698:30 | Unary | r1698_31 | +| ir.cpp:1698:16:1698:30 | Unary | r1698_45 | +| ir.cpp:1698:17:1698:17 | Address | &:r1698_5 | +| ir.cpp:1698:20:1698:20 | Address | &:r1698_20 | +| ir.cpp:1698:23:1698:23 | Address | &:r1698_34 | +| ir.cpp:1698:29:1698:29 | StoreValue | r1698_3 | +| ir.cpp:1698:29:1698:29 | Unary | r1698_2 | +| ir.cpp:1698:30:1698:30 | Address | &:r1698_9 | +| ir.cpp:1698:30:1698:30 | Address | &:r1698_9 | +| ir.cpp:1698:30:1698:30 | Address | &:r1698_23 | +| ir.cpp:1698:30:1698:30 | Address | &:r1698_23 | +| ir.cpp:1698:30:1698:30 | Address | &:r1698_37 | +| ir.cpp:1698:30:1698:30 | Address | &:r1698_37 | +| ir.cpp:1698:30:1698:30 | Arg(this) | this:r1698_9 | +| ir.cpp:1698:30:1698:30 | Arg(this) | this:r1698_23 | +| ir.cpp:1698:30:1698:30 | Arg(this) | this:r1698_37 | +| ir.cpp:1698:30:1698:30 | ChiPartial | partial:m1698_15 | +| ir.cpp:1698:30:1698:30 | ChiPartial | partial:m1698_29 | +| ir.cpp:1698:30:1698:30 | ChiPartial | partial:m1698_43 | +| ir.cpp:1698:30:1698:30 | ChiTotal | total:m1695_8 | +| ir.cpp:1698:30:1698:30 | ChiTotal | total:m1698_16 | +| ir.cpp:1698:30:1698:30 | ChiTotal | total:m1698_30 | +| ir.cpp:1698:30:1698:30 | SideEffect | m1695_8 | +| ir.cpp:1698:30:1698:30 | SideEffect | m1698_16 | +| ir.cpp:1698:30:1698:30 | SideEffect | m1698_30 | +| ir.cpp:1699:9:1699:9 | Address | &:r1699_2 | +| ir.cpp:1699:9:1699:9 | Address | &:r1699_4 | +| ir.cpp:1699:9:1699:9 | Load | m1698_19 | +| ir.cpp:1699:9:1699:9 | Unary | r1699_3 | +| ir.cpp:1699:13:1699:13 | StoreValue | r1699_1 | +| ir.cpp:1700:14:1700:15 | Address | &:r1700_1 | +| ir.cpp:1700:19:1700:19 | Address | &:r1700_2 | +| ir.cpp:1700:19:1700:19 | Load | m1698_19 | +| ir.cpp:1700:19:1700:19 | StoreValue | r1700_5 | +| ir.cpp:1700:19:1700:19 | Unary | r1700_3 | +| ir.cpp:1700:19:1700:19 | Unary | r1700_4 | +| ir.cpp:1701:13:1701:13 | Address | &:r1701_1 | +| ir.cpp:1701:17:1701:17 | Address | &:r1701_2 | +| ir.cpp:1701:17:1701:17 | Address | &:r1701_3 | +| ir.cpp:1701:17:1701:17 | Load | m1698_19 | +| ir.cpp:1701:17:1701:17 | Load | m1699_5 | +| ir.cpp:1701:17:1701:17 | StoreValue | r1701_4 | +| ir.cpp:1702:9:1702:9 | Address | &:r1702_2 | +| ir.cpp:1702:9:1702:9 | Address | &:r1702_4 | +| ir.cpp:1702:9:1702:9 | Load | m1698_33 | +| ir.cpp:1702:9:1702:9 | Unary | r1702_3 | +| ir.cpp:1702:9:1702:13 | ChiPartial | partial:m1702_5 | +| ir.cpp:1702:9:1702:13 | ChiTotal | total:m1698_41 | +| ir.cpp:1702:13:1702:13 | StoreValue | r1702_1 | +| ir.cpp:1703:14:1703:15 | Address | &:r1703_1 | +| ir.cpp:1703:19:1703:19 | Address | &:r1703_2 | +| ir.cpp:1703:19:1703:19 | Load | m1698_33 | +| ir.cpp:1703:19:1703:19 | StoreValue | r1703_5 | +| ir.cpp:1703:19:1703:19 | Unary | r1703_3 | +| ir.cpp:1703:19:1703:19 | Unary | r1703_4 | +| ir.cpp:1704:13:1704:13 | Address | &:r1704_1 | +| ir.cpp:1704:17:1704:17 | Address | &:r1704_2 | +| ir.cpp:1704:17:1704:17 | Address | &:r1704_3 | +| ir.cpp:1704:17:1704:17 | Load | m1698_33 | +| ir.cpp:1704:17:1704:17 | Load | ~m1702_6 | +| ir.cpp:1704:17:1704:17 | StoreValue | r1704_4 | +| ir.cpp:1708:16:1708:37 | Address | &:r1708_1 | +| ir.cpp:1708:41:1708:41 | StoreValue | r1708_3 | +| ir.cpp:1708:41:1708:41 | Unary | r1708_2 | +| ir.cpp:1709:16:1709:16 | Address | &:r1709_1 | +| ir.cpp:1709:20:1709:41 | Address | &:r1709_3 | +| ir.cpp:1709:20:1709:41 | Address | &:r1709_5 | +| ir.cpp:1709:20:1709:41 | Address | &:r1709_5 | +| ir.cpp:1709:20:1709:41 | Arg(this) | this:r1709_5 | +| ir.cpp:1709:20:1709:41 | ChiPartial | partial:m1709_11 | +| ir.cpp:1709:20:1709:41 | ChiTotal | total:m1698_44 | +| ir.cpp:1709:20:1709:41 | Load | m1708_4 | +| ir.cpp:1709:20:1709:41 | SideEffect | m1698_44 | +| ir.cpp:1709:20:1709:41 | Unary | r1709_4 | +| ir.cpp:1709:20:1709:50 | Address | &:r1709_2 | +| ir.cpp:1709:20:1709:50 | StoreValue | r1709_14 | +| ir.cpp:1709:20:1709:50 | Unary | r1709_2 | +| ir.cpp:1709:43:1709:48 | CallTarget | func:r1709_6 | +| ir.cpp:1709:43:1709:48 | ChiPartial | partial:m1709_8 | +| ir.cpp:1709:43:1709:48 | ChiTotal | total:m1702_6 | +| ir.cpp:1709:43:1709:48 | SideEffect | ~m1702_6 | +| ir.cpp:1709:43:1709:48 | StoreValue | r1709_7 | +| ir.cpp:1710:15:1710:15 | Address | &:r1710_1 | +| ir.cpp:1710:19:1710:40 | Address | &:r1710_2 | +| ir.cpp:1710:19:1710:40 | Address | &:r1710_4 | +| ir.cpp:1710:19:1710:40 | Address | &:r1710_4 | +| ir.cpp:1710:19:1710:40 | Arg(this) | this:r1710_4 | +| ir.cpp:1710:19:1710:40 | ChiPartial | partial:m1710_10 | +| ir.cpp:1710:19:1710:40 | ChiTotal | total:m1709_12 | +| ir.cpp:1710:19:1710:40 | Load | m1708_4 | +| ir.cpp:1710:19:1710:40 | SideEffect | m1709_12 | +| ir.cpp:1710:19:1710:40 | Unary | r1710_3 | +| ir.cpp:1710:42:1710:47 | CallTarget | func:r1710_5 | +| ir.cpp:1710:42:1710:47 | ChiPartial | partial:m1710_7 | +| ir.cpp:1710:42:1710:47 | ChiTotal | total:m1709_9 | +| ir.cpp:1710:42:1710:47 | SideEffect | ~m1709_9 | +| ir.cpp:1710:42:1710:47 | Unary | r1710_6 | +| ir.cpp:1710:48:1710:50 | StoreValue | r1710_13 | +| ir.cpp:1710:48:1710:50 | Unary | r1710_12 | +| ir.cpp:1711:16:1711:17 | Address | &:r1711_1 | +| ir.cpp:1711:21:1711:42 | Address | &:r1711_2 | +| ir.cpp:1711:21:1711:42 | Address | &:r1711_4 | +| ir.cpp:1711:21:1711:42 | Address | &:r1711_4 | +| ir.cpp:1711:21:1711:42 | Arg(this) | this:r1711_4 | +| ir.cpp:1711:21:1711:42 | ChiPartial | partial:m1711_10 | +| ir.cpp:1711:21:1711:42 | ChiTotal | total:m1710_11 | +| ir.cpp:1711:21:1711:42 | Load | m1708_4 | +| ir.cpp:1711:21:1711:42 | SideEffect | m1710_11 | +| ir.cpp:1711:21:1711:42 | Unary | r1711_3 | +| ir.cpp:1711:44:1711:49 | CallTarget | func:r1711_5 | +| ir.cpp:1711:44:1711:49 | ChiPartial | partial:m1711_7 | +| ir.cpp:1711:44:1711:49 | ChiTotal | total:m1710_8 | +| ir.cpp:1711:44:1711:49 | SideEffect | ~m1710_8 | +| ir.cpp:1711:44:1711:49 | Unary | r1711_6 | +| ir.cpp:1711:50:1711:52 | StoreValue | r1711_13 | +| ir.cpp:1711:50:1711:52 | Unary | r1711_12 | +| ir.cpp:1712:9:1712:9 | Address | &:r1712_2 | +| ir.cpp:1712:9:1712:9 | Address | &:r1712_4 | +| ir.cpp:1712:9:1712:9 | Load | m1709_15 | +| ir.cpp:1712:9:1712:9 | Unary | r1712_3 | +| ir.cpp:1712:13:1712:13 | StoreValue | r1712_1 | +| ir.cpp:1713:14:1713:15 | Address | &:r1713_1 | +| ir.cpp:1713:19:1713:19 | Address | &:r1713_2 | +| ir.cpp:1713:19:1713:19 | Load | m1709_15 | +| ir.cpp:1713:19:1713:19 | StoreValue | r1713_5 | +| ir.cpp:1713:19:1713:19 | Unary | r1713_3 | +| ir.cpp:1713:19:1713:19 | Unary | r1713_4 | +| ir.cpp:1714:13:1714:13 | Address | &:r1714_1 | +| ir.cpp:1714:17:1714:17 | Address | &:r1714_2 | +| ir.cpp:1714:17:1714:17 | Address | &:r1714_3 | +| ir.cpp:1714:17:1714:17 | Load | m1709_15 | +| ir.cpp:1714:17:1714:17 | Load | m1712_5 | +| ir.cpp:1714:17:1714:17 | StoreValue | r1714_4 | +| ir.cpp:1715:9:1715:9 | Address | &:r1715_2 | +| ir.cpp:1715:9:1715:9 | Address | &:r1715_4 | +| ir.cpp:1715:9:1715:9 | Load | m1710_14 | +| ir.cpp:1715:9:1715:9 | Unary | r1715_3 | +| ir.cpp:1715:9:1715:13 | ChiPartial | partial:m1715_5 | +| ir.cpp:1715:9:1715:13 | ChiTotal | total:m1711_8 | +| ir.cpp:1715:13:1715:13 | StoreValue | r1715_1 | +| ir.cpp:1716:14:1716:15 | Address | &:r1716_1 | +| ir.cpp:1716:19:1716:19 | Address | &:r1716_2 | +| ir.cpp:1716:19:1716:19 | Load | m1710_14 | +| ir.cpp:1716:19:1716:19 | StoreValue | r1716_5 | +| ir.cpp:1716:19:1716:19 | Unary | r1716_3 | +| ir.cpp:1716:19:1716:19 | Unary | r1716_4 | +| ir.cpp:1717:13:1717:13 | Address | &:r1717_1 | +| ir.cpp:1717:17:1717:17 | Address | &:r1717_2 | +| ir.cpp:1717:17:1717:17 | Address | &:r1717_3 | +| ir.cpp:1717:17:1717:17 | Load | m1710_14 | +| ir.cpp:1717:17:1717:17 | Load | ~m1715_6 | +| ir.cpp:1717:17:1717:17 | StoreValue | r1717_4 | +| ir.cpp:1721:6:1721:42 | ChiPartial | partial:m1721_3 | +| ir.cpp:1721:6:1721:42 | ChiTotal | total:m1721_2 | +| ir.cpp:1721:6:1721:42 | SideEffect | m1721_3 | +| ir.cpp:1722:9:1722:10 | Address | &:r1722_1 | +| ir.cpp:1722:9:1722:10 | Left | r1722_1 | +| ir.cpp:1722:9:1722:10 | Left | r1722_1 | +| ir.cpp:1722:16:1722:22 | Address | &:r1722_4 | +| ir.cpp:1722:16:1722:22 | Address | &:r1722_9 | +| ir.cpp:1722:16:1722:22 | Right | r1722_3 | +| ir.cpp:1722:16:1722:22 | Right | r1722_8 | +| ir.cpp:1722:18:1722:18 | ChiPartial | partial:m1722_6 | +| ir.cpp:1722:18:1722:18 | ChiTotal | total:m1722_2 | +| ir.cpp:1722:18:1722:18 | StoreValue | r1722_5 | +| ir.cpp:1722:21:1722:21 | ChiPartial | partial:m1722_11 | +| ir.cpp:1722:21:1722:21 | ChiTotal | total:m1722_7 | +| ir.cpp:1722:21:1722:21 | StoreValue | r1722_10 | +| ir.cpp:1723:10:1723:10 | Address | &:r1723_1 | +| ir.cpp:1723:11:1723:11 | Address | &:r1723_5 | +| ir.cpp:1723:15:1723:15 | Address | &:r1723_6 | +| ir.cpp:1723:21:1723:22 | Address | &:r1723_2 | +| ir.cpp:1723:21:1723:22 | Load | m1722_12 | +| ir.cpp:1723:21:1723:22 | StoreValue | r1723_3 | +| ir.cpp:1729:5:1729:23 | Address | &:r1729_5 | +| ir.cpp:1729:5:1729:23 | Address | &:r1729_5 | +| ir.cpp:1729:5:1729:23 | Address | &:r1729_7 | +| ir.cpp:1729:5:1729:23 | Address | &:r1729_7 | +| ir.cpp:1729:5:1729:23 | ChiPartial | partial:m1729_3 | +| ir.cpp:1729:5:1729:23 | ChiTotal | total:m1729_2 | +| ir.cpp:1729:5:1729:23 | Load | m1729_6 | +| ir.cpp:1729:5:1729:23 | SideEffect | m1729_3 | +| ir.cpp:1729:5:1729:23 | SideEffect | m1729_8 | +| ir.cpp:1732:6:1732:20 | ChiPartial | partial:m1732_3 | +| ir.cpp:1732:6:1732:20 | ChiTotal | total:m1732_2 | +| ir.cpp:1732:6:1732:20 | SideEffect | ~m1735_6 | +| ir.cpp:1732:26:1732:26 | Address | &:r1732_5 | +| ir.cpp:1732:34:1732:34 | Address | &:r1732_7 | +| ir.cpp:1732:34:1732:34 | Address | &:r1732_7 | +| ir.cpp:1732:34:1732:34 | Address | &:r1732_9 | +| ir.cpp:1732:34:1732:34 | Address | &:r1732_9 | +| ir.cpp:1732:34:1732:34 | Load | m1732_8 | +| ir.cpp:1732:34:1732:34 | SideEffect | m1732_10 | +| ir.cpp:1732:43:1732:43 | Address | &:r1732_11 | +| ir.cpp:1732:43:1732:43 | Address | &:r1732_11 | +| ir.cpp:1732:43:1732:43 | Address | &:r1732_13 | +| ir.cpp:1732:43:1732:43 | Address | &:r1732_13 | +| ir.cpp:1732:43:1732:43 | Load | m1732_12 | +| ir.cpp:1732:43:1732:43 | SideEffect | m1732_14 | +| ir.cpp:1734:17:1734:20 | Address | &:r1734_1 | +| ir.cpp:1734:24:1734:44 | Address | &:r1734_2 | +| ir.cpp:1734:24:1734:44 | Address | &:r1734_2 | +| ir.cpp:1734:24:1734:44 | Arg(this) | this:r1734_2 | +| ir.cpp:1734:24:1734:44 | CallTarget | func:r1734_4 | +| ir.cpp:1734:24:1734:44 | ChiPartial | partial:m1734_6 | +| ir.cpp:1734:24:1734:44 | ChiPartial | partial:m1734_8 | +| ir.cpp:1734:24:1734:44 | ChiTotal | total:m1732_4 | +| ir.cpp:1734:24:1734:44 | ChiTotal | total:m1734_3 | +| ir.cpp:1734:24:1734:44 | SideEffect | ~m1732_4 | +| ir.cpp:1734:24:1734:44 | StoreValue | r1734_11 | +| ir.cpp:1734:24:1734:44 | Unary | r1734_2 | +| ir.cpp:1734:24:1734:44 | Unary | r1734_10 | +| ir.cpp:1735:10:1735:13 | Address | &:r1735_1 | +| ir.cpp:1735:10:1735:13 | Address | &:r1735_1 | +| ir.cpp:1735:10:1735:13 | Arg(this) | this:r1735_1 | +| ir.cpp:1735:16:1735:37 | CallTarget | func:r1735_3 | +| ir.cpp:1735:16:1735:37 | ChiPartial | partial:m1735_5 | +| ir.cpp:1735:16:1735:37 | ChiPartial | partial:m1735_7 | +| ir.cpp:1735:16:1735:37 | ChiTotal | total:m1734_7 | +| ir.cpp:1735:16:1735:37 | ChiTotal | total:m1735_2 | +| ir.cpp:1735:16:1735:37 | SideEffect | ~m1734_7 | +| ir.cpp:1737:10:1737:21 | Address | &:r1737_1 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_2 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_2 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_4 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_5 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_6 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_7 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_8 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_12 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_17 | +| ir.cpp:1737:24:1739:5 | Address | &:r1737_20 | +| ir.cpp:1737:24:1739:5 | ChiPartial | partial:m1737_10 | +| ir.cpp:1737:24:1739:5 | ChiTotal | total:m0_3 | +| ir.cpp:1737:24:1739:5 | Load | m1734_12 | +| ir.cpp:1737:24:1739:5 | Load | m1735_8 | +| ir.cpp:1737:24:1739:5 | Load | m1739_6 | +| ir.cpp:1737:24:1739:5 | StoreValue | r1737_9 | +| ir.cpp:1737:24:1739:5 | StoreValue | r1737_23 | +| ir.cpp:1737:24:1739:5 | Unary | r1737_2 | +| ir.cpp:1737:24:1739:5 | Unary | r1737_2 | +| ir.cpp:1737:24:1739:5 | Unary | r1737_2 | +| ir.cpp:1737:24:1739:5 | Unary | r1737_2 | +| ir.cpp:1737:24:1739:5 | Unary | r1737_2 | +| ir.cpp:1737:38:1737:38 | Address | &:r1737_13 | +| ir.cpp:1737:38:1737:38 | ChiPartial | partial:m1737_15 | +| ir.cpp:1737:38:1737:38 | ChiTotal | total:m1737_11 | +| ir.cpp:1737:38:1737:38 | Load | m1732_6 | +| ir.cpp:1737:38:1737:38 | StoreValue | r1737_14 | +| ir.cpp:1737:41:1737:41 | Address | &:r1737_18 | +| ir.cpp:1737:41:1737:41 | Address | &:r1737_19 | +| ir.cpp:1737:41:1737:41 | Load | m1732_8 | +| ir.cpp:1737:44:1737:44 | Address | &:r1737_21 | +| ir.cpp:1737:44:1737:44 | Address | &:r1737_22 | +| ir.cpp:1737:44:1737:44 | Load | m1732_12 | +| ir.cpp:1737:46:1737:46 | Address | &:r1737_5 | +| ir.cpp:1737:46:1737:46 | Address | &:r1737_5 | +| ir.cpp:1737:46:1737:46 | Address | &:r1737_7 | +| ir.cpp:1737:46:1737:46 | Address | &:r1737_7 | +| ir.cpp:1737:46:1737:46 | ChiPartial | partial:m1737_3 | +| ir.cpp:1737:46:1737:46 | ChiTotal | total:m1737_2 | +| ir.cpp:1737:46:1737:46 | Load | m1737_6 | +| ir.cpp:1737:46:1737:46 | SideEffect | m1737_3 | +| ir.cpp:1737:46:1737:46 | SideEffect | m1737_8 | +| ir.cpp:1738:14:1738:25 | Address | &:r1738_1 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_2 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_2 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_4 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_5 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_7 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_11 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_12 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_14 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_18 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_19 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_21 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_25 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_26 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_28 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_32 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_33 | +| ir.cpp:1738:28:1738:54 | Address | &:r1738_35 | +| ir.cpp:1738:28:1738:54 | ChiPartial | partial:m1738_9 | +| ir.cpp:1738:28:1738:54 | ChiPartial | partial:m1738_16 | +| ir.cpp:1738:28:1738:54 | ChiPartial | partial:m1738_23 | +| ir.cpp:1738:28:1738:54 | ChiPartial | partial:m1738_30 | +| ir.cpp:1738:28:1738:54 | ChiPartial | partial:m1738_37 | +| ir.cpp:1738:28:1738:54 | ChiTotal | total:m1738_3 | +| ir.cpp:1738:28:1738:54 | ChiTotal | total:m1738_10 | +| ir.cpp:1738:28:1738:54 | ChiTotal | total:m1738_17 | +| ir.cpp:1738:28:1738:54 | ChiTotal | total:m1738_24 | +| ir.cpp:1738:28:1738:54 | ChiTotal | total:m1738_31 | +| ir.cpp:1738:28:1738:54 | Load | m1737_6 | +| ir.cpp:1738:28:1738:54 | Load | m1737_6 | +| ir.cpp:1738:28:1738:54 | Load | m1737_6 | +| ir.cpp:1738:28:1738:54 | Load | m1737_6 | +| ir.cpp:1738:28:1738:54 | Load | m1737_6 | +| ir.cpp:1738:28:1738:54 | Load | m1738_38 | +| ir.cpp:1738:28:1738:54 | Load | ~m1737_8 | +| ir.cpp:1738:28:1738:54 | Load | ~m1737_8 | +| ir.cpp:1738:28:1738:54 | Load | ~m1737_8 | +| ir.cpp:1738:28:1738:54 | Load | ~m1737_8 | +| ir.cpp:1738:28:1738:54 | Load | ~m1737_8 | +| ir.cpp:1738:28:1738:54 | StoreValue | r1738_8 | +| ir.cpp:1738:28:1738:54 | StoreValue | r1738_15 | +| ir.cpp:1738:28:1738:54 | StoreValue | r1738_22 | +| ir.cpp:1738:28:1738:54 | StoreValue | r1738_29 | +| ir.cpp:1738:28:1738:54 | StoreValue | r1738_36 | +| ir.cpp:1738:28:1738:54 | StoreValue | r1738_39 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_2 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_2 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_2 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_2 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_2 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_6 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_13 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_20 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_27 | +| ir.cpp:1738:28:1738:54 | Unary | r1738_34 | +| ir.cpp:1738:50:1738:50 | Address | &:r1738_5 | +| ir.cpp:1738:50:1738:50 | Address | &:r1738_5 | +| ir.cpp:1738:50:1738:50 | Address | &:r1738_7 | +| ir.cpp:1738:50:1738:50 | Address | &:r1738_7 | +| ir.cpp:1738:50:1738:50 | ChiPartial | partial:m1738_3 | +| ir.cpp:1738:50:1738:50 | ChiTotal | total:m1738_2 | +| ir.cpp:1738:50:1738:50 | Load | m1738_6 | +| ir.cpp:1738:50:1738:50 | SideEffect | m1738_3 | +| ir.cpp:1738:50:1738:50 | SideEffect | m1738_8 | +| ir.cpp:1739:6:1739:6 | ChiPartial | partial:m1739_2 | +| ir.cpp:1739:6:1739:6 | ChiPartial | partial:m1739_5 | +| ir.cpp:1739:6:1739:6 | ChiTotal | total:m1737_16 | +| ir.cpp:1739:6:1739:6 | ChiTotal | total:m1739_3 | +| ir.cpp:1739:6:1739:6 | Load | ~m1732_10 | +| ir.cpp:1739:6:1739:6 | Load | ~m1732_14 | +| ir.cpp:1739:6:1739:6 | StoreValue | r1739_1 | +| ir.cpp:1739:6:1739:6 | StoreValue | r1739_4 | +| ir.cpp:1742:5:1742:21 | Address | &:r1742_5 | +| ir.cpp:1742:5:1742:21 | ChiPartial | partial:m1742_3 | +| ir.cpp:1742:5:1742:21 | ChiTotal | total:m1742_2 | +| ir.cpp:1742:5:1742:21 | Load | m1745_4 | +| ir.cpp:1742:5:1742:21 | SideEffect | m1742_3 | +| ir.cpp:1743:7:1743:7 | Address | &:r1743_1 | +| ir.cpp:1743:10:1743:12 | StoreValue | r1743_2 | +| ir.cpp:1745:3:1745:11 | Address | &:r1745_1 | +| ir.cpp:1745:10:1745:10 | Address | &:r1745_2 | +| ir.cpp:1745:10:1745:10 | Load | m1743_3 | +| ir.cpp:1745:10:1745:10 | StoreValue | r1745_3 | +| ir.cpp:1750:10:1750:10 | Address | &:r1750_5 | +| ir.cpp:1750:10:1750:10 | Address | &:r1750_5 | +| ir.cpp:1750:10:1750:10 | Address | &:r1750_7 | +| ir.cpp:1750:10:1750:10 | Address | &:r1750_7 | +| ir.cpp:1750:10:1750:10 | ChiPartial | partial:m1750_3 | +| ir.cpp:1750:10:1750:10 | ChiTotal | total:m1750_2 | +| ir.cpp:1750:10:1750:10 | Load | m1750_6 | +| ir.cpp:1750:10:1750:10 | SideEffect | m1750_3 | +| ir.cpp:1750:10:1750:10 | SideEffect | m1750_8 | +| ir.cpp:1751:14:1751:22 | Address | &:r1751_1 | +| ir.cpp:1751:25:1757:9 | Address | &:r1751_2 | +| ir.cpp:1751:25:1757:9 | Address | &:r1751_2 | +| ir.cpp:1751:25:1757:9 | Address | &:r1751_4 | +| ir.cpp:1751:25:1757:9 | Address | &:r1751_5 | +| ir.cpp:1751:25:1757:9 | Address | &:r1751_6 | +| ir.cpp:1751:25:1757:9 | Load | m1750_6 | +| ir.cpp:1751:25:1757:9 | Load | ~m1750_8 | +| ir.cpp:1751:25:1757:9 | Load | ~m1751_8 | +| ir.cpp:1751:25:1757:9 | StoreValue | r1751_7 | +| ir.cpp:1751:25:1757:9 | StoreValue | r1751_9 | +| ir.cpp:1751:25:1757:9 | Unary | r1751_2 | +| ir.cpp:1751:34:1751:34 | Address | &:r1751_5 | +| ir.cpp:1751:34:1751:34 | Address | &:r1751_5 | +| ir.cpp:1751:34:1751:34 | Address | &:r1751_7 | +| ir.cpp:1751:34:1751:34 | Address | &:r1751_7 | +| ir.cpp:1751:34:1751:34 | ChiPartial | partial:m1751_3 | +| ir.cpp:1751:34:1751:34 | ChiTotal | total:m1751_2 | +| ir.cpp:1751:34:1751:34 | Load | m1751_6 | +| ir.cpp:1751:34:1751:34 | SideEffect | m1751_8 | +| ir.cpp:1751:34:1751:34 | SideEffect | ~m1752_8 | +| ir.cpp:1752:13:1752:13 | Address | &:r1752_1 | +| ir.cpp:1752:13:1752:13 | Address | &:r1752_4 | +| ir.cpp:1752:13:1752:13 | Arg(this) | this:r1752_4 | +| ir.cpp:1752:13:1752:13 | CallTarget | func:r1752_5 | +| ir.cpp:1752:13:1752:13 | ChiPartial | partial:m1752_7 | +| ir.cpp:1752:13:1752:13 | ChiTotal | total:m1751_4 | +| ir.cpp:1752:13:1752:13 | Load | m1751_6 | +| ir.cpp:1752:13:1752:13 | SideEffect | ~m1751_4 | +| ir.cpp:1752:13:1752:13 | SideEffect | ~m1751_8 | +| ir.cpp:1752:13:1752:13 | Unary | r1752_2 | +| ir.cpp:1752:13:1752:13 | Unary | r1752_3 | +| ir.cpp:1754:18:1754:26 | Address | &:r1754_1 | +| ir.cpp:1754:29:1756:13 | Address | &:r1754_2 | +| ir.cpp:1754:29:1756:13 | Address | &:r1754_2 | +| ir.cpp:1754:29:1756:13 | Address | &:r1754_4 | +| ir.cpp:1754:29:1756:13 | Address | &:r1754_5 | +| ir.cpp:1754:29:1756:13 | Address | &:r1754_7 | +| ir.cpp:1754:29:1756:13 | Load | m1751_6 | +| ir.cpp:1754:29:1756:13 | Load | ~m1751_8 | +| ir.cpp:1754:29:1756:13 | Load | ~m1754_9 | +| ir.cpp:1754:29:1756:13 | StoreValue | r1754_8 | +| ir.cpp:1754:29:1756:13 | StoreValue | r1754_10 | +| ir.cpp:1754:29:1756:13 | Unary | r1754_2 | +| ir.cpp:1754:29:1756:13 | Unary | r1754_6 | +| ir.cpp:1754:38:1754:38 | Address | &:r1754_5 | +| ir.cpp:1754:38:1754:38 | Address | &:r1754_5 | +| ir.cpp:1754:38:1754:38 | Address | &:r1754_7 | +| ir.cpp:1754:38:1754:38 | Address | &:r1754_7 | +| ir.cpp:1754:38:1754:38 | ChiPartial | partial:m1754_3 | +| ir.cpp:1754:38:1754:38 | ChiTotal | total:m1754_2 | +| ir.cpp:1754:38:1754:38 | Load | m1754_6 | +| ir.cpp:1754:38:1754:38 | SideEffect | m1754_8 | +| ir.cpp:1754:38:1754:38 | SideEffect | ~m1755_8 | +| ir.cpp:1755:17:1755:17 | Address | &:r1755_1 | +| ir.cpp:1755:17:1755:17 | Address | &:r1755_4 | +| ir.cpp:1755:17:1755:17 | Arg(this) | this:r1755_4 | +| ir.cpp:1755:17:1755:17 | CallTarget | func:r1755_5 | +| ir.cpp:1755:17:1755:17 | ChiPartial | partial:m1755_7 | +| ir.cpp:1755:17:1755:17 | ChiTotal | total:m1754_4 | +| ir.cpp:1755:17:1755:17 | Load | m1754_6 | +| ir.cpp:1755:17:1755:17 | SideEffect | ~m1754_4 | +| ir.cpp:1755:17:1755:17 | SideEffect | ~m1754_8 | +| ir.cpp:1755:17:1755:17 | Unary | r1755_2 | +| ir.cpp:1755:17:1755:17 | Unary | r1755_3 | +| ir.cpp:1761:6:1761:21 | ChiPartial | partial:m1761_3 | +| ir.cpp:1761:6:1761:21 | ChiTotal | total:m1761_2 | +| ir.cpp:1761:6:1761:21 | SideEffect | m1761_3 | +| ir.cpp:1761:42:1761:43 | Address | &:r1761_5 | +| ir.cpp:1761:66:1761:67 | Address | &:r1761_7 | +| ir.cpp:1761:66:1761:67 | Address | &:r1761_7 | +| ir.cpp:1761:66:1761:67 | Address | &:r1761_9 | +| ir.cpp:1761:66:1761:67 | Address | &:r1761_9 | +| ir.cpp:1761:66:1761:67 | Load | m1761_8 | +| ir.cpp:1761:66:1761:67 | SideEffect | m1761_10 | +| ir.cpp:1761:91:1761:92 | Address | &:r1761_11 | +| ir.cpp:1761:91:1761:92 | Address | &:r1761_11 | +| ir.cpp:1761:91:1761:92 | Address | &:r1761_13 | +| ir.cpp:1761:91:1761:92 | Address | &:r1761_13 | +| ir.cpp:1761:91:1761:92 | Load | m1761_12 | +| ir.cpp:1761:91:1761:92 | SideEffect | m1761_14 | +| ir.cpp:1762:30:1762:31 | Address | &:r1762_1 | +| ir.cpp:1763:31:1763:32 | Address | &:r1763_1 | +| ir.cpp:1763:36:1763:55 | Address | &:r1763_2 | +| ir.cpp:1763:36:1763:55 | StoreValue | r1763_3 | +| ir.cpp:1763:36:1763:55 | StoreValue | r1763_6 | +| ir.cpp:1763:36:1763:55 | Unary | r1763_2 | +| ir.cpp:1763:36:1763:55 | Unary | r1763_5 | +| ir.cpp:1765:10:1765:17 | Address | &:r1765_1 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_2 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_2 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_4 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_5 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_9 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_10 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_11 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_12 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_13 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_14 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_15 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_16 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_20 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_21 | +| ir.cpp:1765:20:1767:5 | Address | &:r1765_22 | +| ir.cpp:1765:20:1767:5 | ChiPartial | partial:m1765_7 | +| ir.cpp:1765:20:1767:5 | ChiPartial | partial:m1765_18 | +| ir.cpp:1765:20:1767:5 | ChiTotal | total:m0_6 | +| ir.cpp:1765:20:1767:5 | ChiTotal | total:m1765_3 | +| ir.cpp:1765:20:1767:5 | Load | m0_9 | +| ir.cpp:1765:20:1767:5 | Load | m1761_6 | +| ir.cpp:1765:20:1767:5 | Load | m1761_8 | +| ir.cpp:1765:20:1767:5 | Load | m1761_12 | +| ir.cpp:1765:20:1767:5 | Load | m1762_2 | +| ir.cpp:1765:20:1767:5 | Load | m1763_7 | +| ir.cpp:1765:20:1767:5 | StoreValue | r1765_6 | +| ir.cpp:1765:20:1767:5 | StoreValue | r1765_17 | +| ir.cpp:1765:20:1767:5 | StoreValue | r1765_23 | +| ir.cpp:1765:20:1767:5 | Unary | r1765_2 | +| ir.cpp:1765:20:1767:5 | Unary | r1765_2 | +| ir.cpp:1765:20:1767:5 | Unary | r1765_2 | +| ir.cpp:1765:20:1767:5 | Unary | r1765_2 | +| ir.cpp:1765:20:1767:5 | Unary | r1765_2 | +| ir.cpp:1765:42:1765:42 | Address | &:r1765_5 | +| ir.cpp:1765:42:1765:42 | Address | &:r1765_5 | +| ir.cpp:1765:42:1765:42 | Address | &:r1765_7 | +| ir.cpp:1765:42:1765:42 | Address | &:r1765_7 | +| ir.cpp:1765:42:1765:42 | ChiPartial | partial:m1765_3 | +| ir.cpp:1765:42:1765:42 | ChiTotal | total:m1765_2 | +| ir.cpp:1765:42:1765:42 | Load | m1765_6 | +| ir.cpp:1765:42:1765:42 | SideEffect | m1765_3 | +| ir.cpp:1765:42:1765:42 | SideEffect | m1765_8 | +| ir.cpp:1766:14:1766:21 | Address | &:r1766_1 | +| ir.cpp:1766:24:1766:31 | Address | &:r1766_2 | +| ir.cpp:1766:24:1766:31 | Address | &:r1766_2 | +| ir.cpp:1766:24:1766:31 | Address | &:r1766_4 | +| ir.cpp:1766:24:1766:31 | Address | &:r1766_5 | +| ir.cpp:1766:24:1766:31 | Address | &:r1766_7 | +| ir.cpp:1766:24:1766:31 | Load | m1765_6 | +| ir.cpp:1766:24:1766:31 | Load | ~m1765_8 | +| ir.cpp:1766:24:1766:31 | Load | ~m1766_9 | +| ir.cpp:1766:24:1766:31 | StoreValue | r1766_8 | +| ir.cpp:1766:24:1766:31 | StoreValue | r1766_10 | +| ir.cpp:1766:24:1766:31 | Unary | r1766_2 | +| ir.cpp:1766:24:1766:31 | Unary | r1766_6 | +| ir.cpp:1766:30:1766:30 | Address | &:r1766_5 | +| ir.cpp:1766:30:1766:30 | Address | &:r1766_5 | +| ir.cpp:1766:30:1766:30 | Address | &:r1766_7 | +| ir.cpp:1766:30:1766:30 | Address | &:r1766_7 | +| ir.cpp:1766:30:1766:30 | ChiPartial | partial:m1766_3 | +| ir.cpp:1766:30:1766:30 | ChiTotal | total:m1766_2 | +| ir.cpp:1766:30:1766:30 | Load | m1766_6 | +| ir.cpp:1766:30:1766:30 | SideEffect | m1766_3 | +| ir.cpp:1766:30:1766:30 | SideEffect | m1766_8 | +| ir.cpp:1773:5:1773:44 | Address | &:r1773_5 | +| ir.cpp:1773:5:1773:44 | Address | &:r1773_5 | +| ir.cpp:1773:5:1773:44 | Address | &:r1773_7 | +| ir.cpp:1773:5:1773:44 | Address | &:r1773_7 | +| ir.cpp:1773:5:1773:44 | ChiPartial | partial:m1773_3 | +| ir.cpp:1773:5:1773:44 | ChiTotal | total:m1773_2 | +| ir.cpp:1773:5:1773:44 | Load | m1773_6 | +| ir.cpp:1773:5:1773:44 | SideEffect | m1773_3 | +| ir.cpp:1773:5:1773:44 | SideEffect | m1773_8 | +| ir.cpp:1774:5:1774:44 | Address | &:r1774_5 | +| ir.cpp:1774:5:1774:44 | Address | &:r1774_5 | +| ir.cpp:1774:5:1774:44 | Address | &:r1774_7 | +| ir.cpp:1774:5:1774:44 | Address | &:r1774_7 | +| ir.cpp:1774:5:1774:44 | ChiPartial | partial:m1774_3 | +| ir.cpp:1774:5:1774:44 | ChiTotal | total:m1774_2 | +| ir.cpp:1774:5:1774:44 | Load | m1774_6 | +| ir.cpp:1774:5:1774:44 | SideEffect | m1774_3 | +| ir.cpp:1774:5:1774:44 | SideEffect | m1775_10 | +| ir.cpp:1774:94:1774:94 | Address | &:r1774_9 | +| ir.cpp:1774:94:1774:94 | Address | &:r1774_9 | +| ir.cpp:1774:94:1774:94 | Address | &:r1774_11 | +| ir.cpp:1774:94:1774:94 | Address | &:r1774_11 | +| ir.cpp:1774:94:1774:94 | Load | m1774_10 | +| ir.cpp:1774:94:1774:94 | SideEffect | m1774_12 | +| ir.cpp:1775:9:1775:9 | Address | &:r1775_6 | +| ir.cpp:1775:9:1775:9 | Address | &:r1775_8 | +| ir.cpp:1775:9:1775:9 | Load | m1774_6 | +| ir.cpp:1775:9:1775:9 | Unary | r1775_7 | +| ir.cpp:1775:9:1775:15 | ChiPartial | partial:m1775_9 | +| ir.cpp:1775:9:1775:15 | ChiTotal | total:m1774_8 | +| ir.cpp:1775:13:1775:13 | Address | &:r1775_1 | +| ir.cpp:1775:13:1775:13 | Load | m1774_10 | +| ir.cpp:1775:13:1775:13 | Unary | r1775_2 | +| ir.cpp:1775:13:1775:13 | Unary | r1775_3 | +| ir.cpp:1775:15:1775:15 | Address | &:r1775_4 | +| ir.cpp:1775:15:1775:15 | Load | ~m1774_12 | +| ir.cpp:1775:15:1775:15 | StoreValue | r1775_5 | +| ir.cpp:1782:5:1782:39 | Address | &:r1782_5 | +| ir.cpp:1782:5:1782:39 | Address | &:r1782_5 | +| ir.cpp:1782:5:1782:39 | Address | &:r1782_7 | +| ir.cpp:1782:5:1782:39 | Address | &:r1782_7 | +| ir.cpp:1782:5:1782:39 | ChiPartial | partial:m1782_3 | +| ir.cpp:1782:5:1782:39 | ChiTotal | total:m1782_2 | +| ir.cpp:1782:5:1782:39 | Load | m1782_6 | +| ir.cpp:1782:5:1782:39 | SideEffect | m1782_3 | +| ir.cpp:1782:5:1782:39 | SideEffect | m1782_8 | +| ir.cpp:1785:7:1785:7 | Address | &:r1785_5 | +| ir.cpp:1785:7:1785:7 | Address | &:r1785_5 | +| ir.cpp:1785:7:1785:7 | Address | &:r1785_7 | +| ir.cpp:1785:7:1785:7 | Address | &:r1785_7 | +| ir.cpp:1785:7:1785:7 | Address | &:r1785_9 | +| ir.cpp:1785:7:1785:7 | Address | &:r1785_11 | +| ir.cpp:1785:7:1785:7 | Address | &:r1785_15 | +| ir.cpp:1785:7:1785:7 | Arg(0) | 0:r1785_15 | +| ir.cpp:1785:7:1785:7 | Arg(this) | this:r1785_9 | +| ir.cpp:1785:7:1785:7 | CallTarget | func:r1785_10 | +| ir.cpp:1785:7:1785:7 | ChiPartial | partial:m1785_3 | +| ir.cpp:1785:7:1785:7 | ChiPartial | partial:m1785_17 | +| ir.cpp:1785:7:1785:7 | ChiPartial | partial:m1785_20 | +| ir.cpp:1785:7:1785:7 | ChiTotal | total:m1785_2 | +| ir.cpp:1785:7:1785:7 | ChiTotal | total:m1785_4 | +| ir.cpp:1785:7:1785:7 | ChiTotal | total:m1785_8 | +| ir.cpp:1785:7:1785:7 | Load | m0_2 | +| ir.cpp:1785:7:1785:7 | Load | m1785_6 | +| ir.cpp:1785:7:1785:7 | SideEffect | m1785_21 | +| ir.cpp:1785:7:1785:7 | SideEffect | ~m0_4 | +| ir.cpp:1785:7:1785:7 | SideEffect | ~m1785_4 | +| ir.cpp:1785:7:1785:7 | SideEffect | ~m1785_18 | +| ir.cpp:1785:7:1785:7 | Unary | m1785_6 | +| ir.cpp:1785:7:1785:7 | Unary | r1785_12 | +| ir.cpp:1785:7:1785:7 | Unary | r1785_13 | +| ir.cpp:1785:7:1785:7 | Unary | r1785_14 | +| ir.cpp:1789:5:1789:38 | Address | &:r1789_5 | +| ir.cpp:1789:5:1789:38 | Address | &:r1789_5 | +| ir.cpp:1789:5:1789:38 | Address | &:r1789_7 | +| ir.cpp:1789:5:1789:38 | Address | &:r1789_7 | +| ir.cpp:1789:5:1789:38 | ChiPartial | partial:m1789_3 | +| ir.cpp:1789:5:1789:38 | ChiTotal | total:m1789_2 | +| ir.cpp:1789:5:1789:38 | Load | m1789_6 | +| ir.cpp:1789:5:1789:38 | SideEffect | m1789_22 | +| ir.cpp:1789:5:1789:38 | SideEffect | ~m1789_20 | +| ir.cpp:1789:5:1789:38 | Unary | m1789_6 | +| ir.cpp:1789:5:1789:38 | Unary | m1789_6 | +| ir.cpp:1789:42:1789:42 | Address | &:r1789_9 | +| ir.cpp:1789:42:1789:42 | Address | &:r1789_16 | +| ir.cpp:1789:42:1789:42 | Arg(this) | this:r1789_9 | +| ir.cpp:1789:42:1789:42 | Arg(this) | this:r1789_16 | +| ir.cpp:1789:42:1789:42 | CallTarget | func:r1789_10 | +| ir.cpp:1789:42:1789:42 | CallTarget | func:r1789_17 | +| ir.cpp:1789:42:1789:42 | ChiPartial | partial:m1789_12 | +| ir.cpp:1789:42:1789:42 | ChiPartial | partial:m1789_14 | +| ir.cpp:1789:42:1789:42 | ChiPartial | partial:m1789_19 | +| ir.cpp:1789:42:1789:42 | ChiPartial | partial:m1789_21 | +| ir.cpp:1789:42:1789:42 | ChiTotal | total:m1789_4 | +| ir.cpp:1789:42:1789:42 | ChiTotal | total:m1789_8 | +| ir.cpp:1789:42:1789:42 | ChiTotal | total:m1789_13 | +| ir.cpp:1789:42:1789:42 | ChiTotal | total:m1789_15 | +| ir.cpp:1789:42:1789:42 | SideEffect | ~m1789_4 | +| ir.cpp:1789:42:1789:42 | SideEffect | ~m1789_13 | +| ir.cpp:1792:7:1792:7 | Address | &:r1792_5 | +| ir.cpp:1792:7:1792:7 | Address | &:r1792_5 | +| ir.cpp:1792:7:1792:7 | Address | &:r1792_7 | +| ir.cpp:1792:7:1792:7 | Address | &:r1792_7 | +| ir.cpp:1792:7:1792:7 | Address | &:r1792_9 | +| ir.cpp:1792:7:1792:7 | Address | &:r1792_11 | +| ir.cpp:1792:7:1792:7 | Address | &:r1792_15 | +| ir.cpp:1792:7:1792:7 | Arg(0) | 0:r1792_15 | +| ir.cpp:1792:7:1792:7 | Arg(this) | this:r1792_9 | +| ir.cpp:1792:7:1792:7 | CallTarget | func:r1792_10 | +| ir.cpp:1792:7:1792:7 | ChiPartial | partial:m1792_3 | +| ir.cpp:1792:7:1792:7 | ChiPartial | partial:m1792_17 | +| ir.cpp:1792:7:1792:7 | ChiPartial | partial:m1792_20 | +| ir.cpp:1792:7:1792:7 | ChiTotal | total:m1792_2 | +| ir.cpp:1792:7:1792:7 | ChiTotal | total:m1792_4 | +| ir.cpp:1792:7:1792:7 | ChiTotal | total:m1792_18 | +| ir.cpp:1792:7:1792:7 | Load | m0_2 | +| ir.cpp:1792:7:1792:7 | Load | m1792_6 | +| ir.cpp:1792:7:1792:7 | SideEffect | m1792_8 | +| ir.cpp:1792:7:1792:7 | SideEffect | ~m0_4 | +| ir.cpp:1792:7:1792:7 | SideEffect | ~m1792_4 | +| ir.cpp:1792:7:1792:7 | SideEffect | ~m1792_21 | +| ir.cpp:1792:7:1792:7 | Unary | m1792_6 | +| ir.cpp:1792:7:1792:7 | Unary | r1792_12 | +| ir.cpp:1792:7:1792:7 | Unary | r1792_13 | +| ir.cpp:1792:7:1792:7 | Unary | r1792_14 | +| ir.cpp:1796:5:1796:35 | Address | &:r1796_5 | +| ir.cpp:1796:5:1796:35 | Address | &:r1796_5 | +| ir.cpp:1796:5:1796:35 | Address | &:r1796_7 | +| ir.cpp:1796:5:1796:35 | Address | &:r1796_7 | +| ir.cpp:1796:5:1796:35 | ChiPartial | partial:m1796_3 | +| ir.cpp:1796:5:1796:35 | ChiTotal | total:m1796_2 | +| ir.cpp:1796:5:1796:35 | Load | m1796_6 | +| ir.cpp:1796:5:1796:35 | SideEffect | m1796_8 | +| ir.cpp:1796:5:1796:35 | SideEffect | ~m1796_22 | +| ir.cpp:1796:5:1796:35 | Unary | m1796_6 | +| ir.cpp:1796:5:1796:35 | Unary | m1796_6 | +| ir.cpp:1796:39:1796:39 | Address | &:r1796_9 | +| ir.cpp:1796:39:1796:39 | Address | &:r1796_16 | +| ir.cpp:1796:39:1796:39 | Arg(this) | this:r1796_9 | +| ir.cpp:1796:39:1796:39 | Arg(this) | this:r1796_16 | +| ir.cpp:1796:39:1796:39 | CallTarget | func:r1796_10 | +| ir.cpp:1796:39:1796:39 | CallTarget | func:r1796_17 | +| ir.cpp:1796:39:1796:39 | ChiPartial | partial:m1796_12 | +| ir.cpp:1796:39:1796:39 | ChiPartial | partial:m1796_14 | +| ir.cpp:1796:39:1796:39 | ChiPartial | partial:m1796_19 | +| ir.cpp:1796:39:1796:39 | ChiPartial | partial:m1796_21 | +| ir.cpp:1796:39:1796:39 | ChiTotal | total:m1796_4 | +| ir.cpp:1796:39:1796:39 | ChiTotal | total:m1796_13 | +| ir.cpp:1796:39:1796:39 | ChiTotal | total:m1796_15 | +| ir.cpp:1796:39:1796:39 | ChiTotal | total:m1796_20 | +| ir.cpp:1796:39:1796:39 | SideEffect | ~m1796_4 | +| ir.cpp:1796:39:1796:39 | SideEffect | ~m1796_15 | +| ir.cpp:1799:5:1799:34 | Address | &:r1799_5 | +| ir.cpp:1799:5:1799:34 | ChiPartial | partial:m1799_3 | +| ir.cpp:1799:5:1799:34 | ChiTotal | total:m1799_2 | +| ir.cpp:1799:5:1799:34 | Load | m1804_2 | +| ir.cpp:1799:5:1799:34 | SideEffect | ~m1803_10 | +| ir.cpp:1800:51:1800:51 | Address | &:r1800_1 | +| ir.cpp:1800:51:1800:51 | Address | &:r1800_1 | +| ir.cpp:1800:51:1800:51 | Address | &:r1800_3 | +| ir.cpp:1800:51:1800:51 | Address | &:r1800_3 | +| ir.cpp:1800:51:1800:51 | Load | m1800_2 | +| ir.cpp:1800:51:1800:51 | SideEffect | m1800_4 | +| ir.cpp:1801:48:1801:48 | Address | &:r1801_1 | +| ir.cpp:1801:48:1801:48 | Address | &:r1801_1 | +| ir.cpp:1801:48:1801:48 | Address | &:r1801_3 | +| ir.cpp:1801:48:1801:48 | Address | &:r1801_3 | +| ir.cpp:1801:48:1801:48 | Load | m1801_2 | +| ir.cpp:1801:48:1801:48 | SideEffect | m1801_4 | +| ir.cpp:1802:40:1802:41 | Address | &:r1802_1 | +| ir.cpp:1802:40:1802:41 | Address | &:r1802_1 | +| ir.cpp:1802:40:1802:41 | Arg(this) | this:r1802_1 | +| ir.cpp:1802:44:1802:45 | CallTarget | func:r1802_3 | +| ir.cpp:1802:44:1802:45 | ChiPartial | partial:m1802_9 | +| ir.cpp:1802:44:1802:45 | ChiPartial | partial:m1802_12 | +| ir.cpp:1802:44:1802:45 | ChiTotal | total:m1799_4 | +| ir.cpp:1802:44:1802:45 | ChiTotal | total:m1802_2 | +| ir.cpp:1802:44:1802:45 | SideEffect | ~m1799_4 | +| ir.cpp:1802:45:1802:45 | Address | &:r1802_4 | +| ir.cpp:1802:45:1802:45 | Address | &:r1802_7 | +| ir.cpp:1802:45:1802:45 | Arg(0) | 0:r1802_7 | +| ir.cpp:1802:45:1802:45 | Load | m1800_2 | +| ir.cpp:1802:45:1802:45 | SideEffect | ~m1800_4 | +| ir.cpp:1802:45:1802:45 | Unary | r1802_5 | +| ir.cpp:1802:45:1802:45 | Unary | r1802_6 | +| ir.cpp:1803:37:1803:38 | Address | &:r1803_1 | +| ir.cpp:1803:37:1803:38 | Address | &:r1803_1 | +| ir.cpp:1803:37:1803:38 | Arg(this) | this:r1803_1 | +| ir.cpp:1803:41:1803:42 | CallTarget | func:r1803_3 | +| ir.cpp:1803:41:1803:42 | ChiPartial | partial:m1803_9 | +| ir.cpp:1803:41:1803:42 | ChiPartial | partial:m1803_12 | +| ir.cpp:1803:41:1803:42 | ChiTotal | total:m1802_10 | +| ir.cpp:1803:41:1803:42 | ChiTotal | total:m1803_2 | +| ir.cpp:1803:41:1803:42 | SideEffect | ~m1802_10 | +| ir.cpp:1803:42:1803:42 | Address | &:r1803_4 | +| ir.cpp:1803:42:1803:42 | Address | &:r1803_7 | +| ir.cpp:1803:42:1803:42 | Arg(0) | 0:r1803_7 | +| ir.cpp:1803:42:1803:42 | Load | m1801_2 | +| ir.cpp:1803:42:1803:42 | SideEffect | ~m1801_4 | +| ir.cpp:1803:42:1803:42 | Unary | r1803_5 | +| ir.cpp:1803:42:1803:42 | Unary | r1803_6 | +| ir.cpp:1804:1:1804:1 | Address | &:r1804_1 | +| ir.cpp:1806:6:1806:22 | ChiPartial | partial:m1806_3 | +| ir.cpp:1806:6:1806:22 | ChiTotal | total:m1806_2 | +| ir.cpp:1806:6:1806:22 | SideEffect | m1806_3 | +| ir.cpp:1806:28:1806:28 | Address | &:r1806_5 | +| ir.cpp:1807:13:1807:13 | Address | &:r1807_1 | +| ir.cpp:1807:17:1807:17 | Address | &:r1807_2 | +| ir.cpp:1807:17:1807:17 | Load | m1806_6 | +| ir.cpp:1807:17:1807:17 | StoreValue | r1807_3 | +| ir.cpp:1807:20:1807:20 | Address | &:r1807_5 | +| ir.cpp:1807:20:1807:20 | Left | r1807_6 | +| ir.cpp:1807:20:1807:20 | Load | m1806_6 | +| ir.cpp:1807:20:1807:24 | Condition | r1807_10 | +| ir.cpp:1807:20:1807:24 | Left | r1807_8 | +| ir.cpp:1807:20:1807:24 | Right | r1807_9 | +| ir.cpp:1807:24:1807:24 | Right | r1807_7 | +| ir.cpp:1808:9:1808:9 | Address | &:r1808_6 | +| ir.cpp:1808:13:1808:13 | Address | &:r1808_1 | +| ir.cpp:1808:13:1808:13 | Left | r1808_2 | +| ir.cpp:1808:13:1808:13 | Load | m1806_6 | +| ir.cpp:1808:13:1808:17 | StoreValue | r1808_5 | +| ir.cpp:1808:17:1808:17 | Address | &:r1808_3 | +| ir.cpp:1808:17:1808:17 | Load | m1807_4 | +| ir.cpp:1808:17:1808:17 | Right | r1808_4 | +| ir.cpp:1811:9:1811:9 | Address | &:r1811_2 | +| ir.cpp:1811:9:1811:9 | Phi | from 0:m1806_6 | +| ir.cpp:1811:9:1811:9 | Phi | from 1:m1808_7 | +| ir.cpp:1812:9:1812:9 | Address | &:r1812_3 | | ir.cpp:1812:13:1812:13 | Address | &:r1812_1 | -| ir.cpp:1812:13:1812:13 | Left | r1812_2 | -| ir.cpp:1812:13:1812:13 | Load | m1806_7 | -| ir.cpp:1812:13:1812:17 | StoreValue | r1812_5 | -| ir.cpp:1812:17:1812:17 | Address | &:r1812_3 | -| ir.cpp:1812:17:1812:17 | Load | m1809_4 | -| ir.cpp:1812:17:1812:17 | Right | r1812_4 | -| ir.cpp:1815:13:1815:22 | Address | &:r1815_1 | -| ir.cpp:1815:13:1815:22 | Condition | r1815_7 | -| ir.cpp:1815:17:1815:18 | Address | &:r1815_5 | -| ir.cpp:1815:17:1815:18 | Load | m1815_4 | -| ir.cpp:1815:17:1815:18 | Unary | r1815_6 | -| ir.cpp:1815:22:1815:22 | Address | &:r1815_2 | -| ir.cpp:1815:22:1815:22 | Load | m1809_4 | -| ir.cpp:1815:22:1815:22 | StoreValue | r1815_3 | -| ir.cpp:1817:9:1817:9 | Address | &:r1817_3 | -| ir.cpp:1817:9:1817:9 | Address | &:r1817_3 | -| ir.cpp:1817:9:1817:9 | Left | r1817_4 | -| ir.cpp:1817:9:1817:9 | Load | m1812_7 | -| ir.cpp:1817:9:1817:15 | StoreValue | r1817_5 | -| ir.cpp:1817:14:1817:15 | Address | &:r1817_1 | -| ir.cpp:1817:14:1817:15 | Load | m1815_4 | -| ir.cpp:1817:14:1817:15 | Right | r1817_2 | -| ir.cpp:1823:5:1823:12 | Address | &:r1823_3 | -| ir.cpp:1823:5:1823:12 | SideEffect | ~m1823_6 | -| ir.cpp:1823:16:1823:16 | ChiPartial | partial:m1823_5 | -| ir.cpp:1823:16:1823:16 | ChiTotal | total:m1823_2 | -| ir.cpp:1823:16:1823:16 | StoreValue | r1823_4 | -| ir.cpp:1827:18:1827:25 | Address | &:r1827_3 | -| ir.cpp:1827:18:1827:25 | Arg(this) | this:r1827_3 | -| ir.cpp:1827:18:1827:25 | SideEffect | ~m1827_10 | -| ir.cpp:1827:27:1827:27 | Arg(0) | 0:r1827_5 | -| ir.cpp:1827:27:1827:28 | CallTarget | func:r1827_4 | -| ir.cpp:1827:27:1827:28 | ChiPartial | partial:m1827_7 | -| ir.cpp:1827:27:1827:28 | ChiPartial | partial:m1827_9 | -| ir.cpp:1827:27:1827:28 | ChiTotal | total:m1827_2 | -| ir.cpp:1827:27:1827:28 | ChiTotal | total:m1827_8 | -| ir.cpp:1827:27:1827:28 | SideEffect | ~m1827_2 | -| ir.cpp:1829:18:1829:25 | Address | &:r1829_3 | -| ir.cpp:1829:18:1829:25 | Arg(this) | this:r1829_3 | -| ir.cpp:1829:18:1829:25 | SideEffect | ~m1829_10 | -| ir.cpp:1829:28:1829:47 | CallTarget | func:r1829_4 | -| ir.cpp:1829:28:1829:47 | ChiPartial | partial:m1829_7 | -| ir.cpp:1829:28:1829:47 | ChiPartial | partial:m1829_9 | -| ir.cpp:1829:28:1829:47 | ChiTotal | total:m1829_2 | -| ir.cpp:1829:28:1829:47 | ChiTotal | total:m1829_8 | -| ir.cpp:1829:28:1829:47 | SideEffect | ~m1829_2 | -| ir.cpp:1829:46:1829:46 | Arg(0) | 0:r1829_5 | -| ir.cpp:1831:7:1831:19 | Address | &:r1831_3 | -| ir.cpp:1831:7:1831:19 | SideEffect | ~m1831_8 | -| ir.cpp:1831:23:1831:37 | ChiPartial | partial:m1831_7 | -| ir.cpp:1831:23:1831:37 | ChiTotal | total:m1831_2 | -| ir.cpp:1831:23:1831:37 | StoreValue | r1831_6 | -| ir.cpp:1831:23:1831:37 | Unary | r1831_4 | -| ir.cpp:1831:23:1831:37 | Unary | r1831_5 | -| ir.cpp:1833:5:1833:12 | Address | &:r1833_3 | -| ir.cpp:1833:5:1833:12 | SideEffect | ~m1833_7 | -| ir.cpp:1833:16:1833:23 | Address | &:r1833_4 | -| ir.cpp:1833:16:1833:23 | ChiPartial | partial:m1833_6 | -| ir.cpp:1833:16:1833:23 | ChiTotal | total:m1833_2 | -| ir.cpp:1833:16:1833:23 | Load | ~m1833_2 | -| ir.cpp:1833:16:1833:23 | StoreValue | r1833_5 | -| ir.cpp:1836:11:1836:11 | Address | &:r1836_5 | -| ir.cpp:1836:11:1836:11 | Address | &:r1836_5 | -| ir.cpp:1836:11:1836:11 | Address | &:r1836_7 | -| ir.cpp:1836:11:1836:11 | Address | &:r1836_7 | -| ir.cpp:1836:11:1836:11 | Address | &:r1836_10 | -| ir.cpp:1836:11:1836:11 | ChiPartial | partial:m1836_3 | -| ir.cpp:1836:11:1836:11 | ChiTotal | total:m1836_2 | -| ir.cpp:1836:11:1836:11 | Load | m0_20 | -| ir.cpp:1836:11:1836:11 | Load | m1836_6 | -| ir.cpp:1836:11:1836:11 | SideEffect | m0_14 | -| ir.cpp:1836:11:1836:11 | SideEffect | m1836_3 | -| ir.cpp:1841:12:1841:12 | Address | &:r1841_5 | -| ir.cpp:1841:12:1841:12 | Address | &:r1841_5 | -| ir.cpp:1841:12:1841:12 | Address | &:r1841_7 | -| ir.cpp:1841:12:1841:12 | Address | &:r1841_7 | -| ir.cpp:1841:12:1841:12 | Address | &:r1841_9 | -| ir.cpp:1841:12:1841:12 | Address | &:r1841_12 | -| ir.cpp:1841:12:1841:12 | Address | &:r1841_20 | -| ir.cpp:1841:12:1841:12 | Arg(this) | this:r0_5 | -| ir.cpp:1841:12:1841:12 | CallTarget | func:r1841_11 | -| ir.cpp:1841:12:1841:12 | ChiPartial | partial:m1841_3 | -| ir.cpp:1841:12:1841:12 | ChiPartial | partial:m1841_17 | -| ir.cpp:1841:12:1841:12 | ChiTotal | total:m1841_2 | -| ir.cpp:1841:12:1841:12 | ChiTotal | total:m1841_4 | -| ir.cpp:1841:12:1841:12 | Load | m0_2 | -| ir.cpp:1841:12:1841:12 | Load | m0_21 | -| ir.cpp:1841:12:1841:12 | Load | m1841_6 | -| ir.cpp:1841:12:1841:12 | Load | m1841_6 | -| ir.cpp:1841:12:1841:12 | SideEffect | m0_12 | -| ir.cpp:1841:12:1841:12 | SideEffect | ~m1841_4 | -| ir.cpp:1841:12:1841:12 | SideEffect | ~m1841_18 | -| ir.cpp:1841:12:1841:12 | Unary | r1841_10 | -| ir.cpp:1841:12:1841:12 | Unary | r1841_13 | -| ir.cpp:1841:12:1841:12 | Unary | r1841_14 | -| ir.cpp:1841:12:1841:12 | Unary | r1841_15 | -| ir.cpp:1841:12:1841:12 | Unary | r1841_16 | -| ir.cpp:1845:10:1845:12 | ChiPartial | partial:m1845_3 | -| ir.cpp:1845:10:1845:12 | ChiTotal | total:m1845_2 | -| ir.cpp:1845:10:1845:12 | SideEffect | ~m1847_18 | -| ir.cpp:1846:11:1846:11 | Address | &:r1846_1 | -| ir.cpp:1846:11:1846:11 | Address | &:r1846_1 | -| ir.cpp:1846:11:1846:11 | Arg(this) | this:r1846_1 | -| ir.cpp:1846:13:1846:13 | Address | &:r1846_4 | -| ir.cpp:1846:13:1846:13 | Address | &:r1846_4 | -| ir.cpp:1846:13:1846:13 | Arg(0) | 0:r1846_4 | -| ir.cpp:1846:13:1846:13 | ChiPartial | partial:m1846_11 | -| ir.cpp:1846:13:1846:13 | ChiTotal | total:m1846_7 | -| ir.cpp:1846:13:1846:13 | SideEffect | ~m1846_7 | -| ir.cpp:1846:13:1846:14 | CallTarget | func:r1846_3 | -| ir.cpp:1846:13:1846:14 | ChiPartial | partial:m1846_6 | -| ir.cpp:1846:13:1846:14 | ChiPartial | partial:m1846_9 | -| ir.cpp:1846:13:1846:14 | ChiTotal | total:m1845_4 | -| ir.cpp:1846:13:1846:14 | ChiTotal | total:m1846_2 | -| ir.cpp:1846:13:1846:14 | SideEffect | ~m1845_4 | -| ir.cpp:1847:9:1847:9 | Address | &:r1847_1 | -| ir.cpp:1847:9:1847:9 | Address | &:r1847_1 | -| ir.cpp:1847:9:1847:9 | Arg(this) | this:r1847_1 | -| ir.cpp:1847:9:1847:9 | ChiPartial | partial:m1847_21 | -| ir.cpp:1847:9:1847:9 | ChiTotal | total:m1846_10 | -| ir.cpp:1847:9:1847:9 | SideEffect | m1846_10 | -| ir.cpp:1847:11:1847:11 | CallTarget | func:r1847_2 | -| ir.cpp:1847:11:1847:11 | ChiPartial | partial:m1847_17 | -| ir.cpp:1847:11:1847:11 | ChiTotal | total:m1847_14 | -| ir.cpp:1847:11:1847:11 | SideEffect | ~m1847_14 | -| ir.cpp:1847:11:1847:11 | Unary | r1847_16 | -| ir.cpp:1847:13:1847:13 | Address | &:r1847_3 | -| ir.cpp:1847:13:1847:13 | Address | &:r1847_3 | -| ir.cpp:1847:13:1847:13 | Address | &:r1847_6 | -| ir.cpp:1847:13:1847:13 | Address | &:r1847_6 | -| ir.cpp:1847:13:1847:13 | Address | &:r1847_15 | -| ir.cpp:1847:13:1847:13 | Address | &:r1847_15 | -| ir.cpp:1847:13:1847:13 | Arg(0) | 0:r1847_6 | -| ir.cpp:1847:13:1847:13 | Arg(0) | 0:r1847_15 | -| ir.cpp:1847:13:1847:13 | Arg(this) | this:r1847_3 | -| ir.cpp:1847:13:1847:13 | CallTarget | func:r1847_5 | -| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_8 | -| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_11 | -| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_13 | -| ir.cpp:1847:13:1847:13 | ChiPartial | partial:m1847_23 | -| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1846_12 | -| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1847_4 | -| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1847_9 | -| ir.cpp:1847:13:1847:13 | ChiTotal | total:m1847_12 | -| ir.cpp:1847:13:1847:13 | SideEffect | ~m1846_12 | -| ir.cpp:1847:13:1847:13 | SideEffect | ~m1847_9 | -| ir.cpp:1847:13:1847:13 | SideEffect | ~m1847_12 | -| ir.cpp:1847:13:1847:13 | Unary | r1847_3 | -| ir.cpp:1851:6:1851:14 | ChiPartial | partial:m1851_3 | -| ir.cpp:1851:6:1851:14 | ChiTotal | total:m1851_2 | -| ir.cpp:1851:6:1851:14 | SideEffect | m1851_3 | -| ir.cpp:1852:17:1852:18 | Address | &:r1852_1 | -| ir.cpp:1852:22:1852:40 | StoreValue | r1852_3 | -| ir.cpp:1852:22:1852:40 | Unary | r1852_2 | -| ir.cpp:1853:17:1853:23 | Address | &:r1853_1 | -| ir.cpp:1853:27:1853:34 | StoreValue | r1853_3 | -| ir.cpp:1853:27:1853:34 | Unary | r1853_2 | -| ir.cpp:1864:15:1864:15 | Address | &:r1864_5 | -| ir.cpp:1864:15:1864:15 | Address | &:r1864_5 | -| ir.cpp:1864:15:1864:15 | Address | &:r1864_7 | -| ir.cpp:1864:15:1864:15 | Address | &:r1864_7 | -| ir.cpp:1864:15:1864:15 | Address | &:r1864_15 | -| ir.cpp:1864:15:1864:15 | ChiPartial | partial:m1864_3 | -| ir.cpp:1864:15:1864:15 | ChiTotal | total:m1864_2 | -| ir.cpp:1864:15:1864:15 | Load | m1864_6 | -| ir.cpp:1864:15:1864:15 | Load | m1866_5 | -| ir.cpp:1864:15:1864:15 | SideEffect | m1864_3 | -| ir.cpp:1864:15:1864:15 | SideEffect | m1864_8 | -| ir.cpp:1864:47:1864:47 | Address | &:r1864_9 | -| ir.cpp:1864:47:1864:47 | Address | &:r1864_9 | -| ir.cpp:1864:47:1864:47 | Address | &:r1864_11 | -| ir.cpp:1864:47:1864:47 | Address | &:r1864_11 | -| ir.cpp:1864:47:1864:47 | Load | m1864_10 | -| ir.cpp:1864:47:1864:47 | SideEffect | m1864_12 | -| ir.cpp:1866:13:1866:21 | Address | &:r1866_1 | -| ir.cpp:1866:20:1866:20 | Address | &:r1866_2 | -| ir.cpp:1866:20:1866:20 | Load | m1864_10 | -| ir.cpp:1866:20:1866:20 | StoreValue | r1866_4 | -| ir.cpp:1866:20:1866:20 | Unary | r1866_3 | -| ir.cpp:1870:10:1870:14 | ChiPartial | partial:m1870_3 | -| ir.cpp:1870:10:1870:14 | ChiTotal | total:m1870_2 | -| ir.cpp:1870:10:1870:14 | SideEffect | ~m1872_12 | -| ir.cpp:1871:19:1871:19 | Address | &:r1871_1 | -| ir.cpp:1872:9:1872:9 | Address | &:r1872_1 | -| ir.cpp:1872:9:1872:9 | Address | &:r1872_1 | -| ir.cpp:1872:9:1872:9 | Arg(this) | this:r1872_1 | -| ir.cpp:1872:9:1872:9 | ChiPartial | partial:m1872_9 | -| ir.cpp:1872:9:1872:9 | ChiTotal | total:m1871_2 | -| ir.cpp:1872:9:1872:9 | SideEffect | m1871_2 | -| ir.cpp:1872:11:1872:33 | CallTarget | func:r1872_2 | -| ir.cpp:1872:11:1872:33 | ChiPartial | partial:m1872_5 | -| ir.cpp:1872:11:1872:33 | ChiTotal | total:m1870_4 | -| ir.cpp:1872:11:1872:33 | SideEffect | ~m1870_4 | -| ir.cpp:1872:35:1872:41 | Address | &:r1872_3 | -| ir.cpp:1872:35:1872:41 | Address | &:r1872_3 | -| ir.cpp:1872:35:1872:41 | Arg(0) | 0:r1872_3 | -| ir.cpp:1872:35:1872:41 | ChiPartial | partial:m1872_11 | -| ir.cpp:1872:35:1872:41 | ChiTotal | total:m1872_6 | -| ir.cpp:1872:35:1872:41 | SideEffect | ~m1872_6 | -| ir.cpp:1877:13:1877:13 | Address | &:r1877_5 | -| ir.cpp:1877:13:1877:13 | Address | &:r1877_5 | -| ir.cpp:1877:13:1877:13 | Address | &:r1877_7 | -| ir.cpp:1877:13:1877:13 | Address | &:r1877_7 | -| ir.cpp:1877:13:1877:13 | Address | &:r1877_10 | -| ir.cpp:1877:13:1877:13 | ChiPartial | partial:m1877_3 | -| ir.cpp:1877:13:1877:13 | ChiTotal | total:m1877_2 | -| ir.cpp:1877:13:1877:13 | Load | m1877_6 | -| ir.cpp:1877:13:1877:13 | Load | m1881_9 | -| ir.cpp:1877:13:1877:13 | SideEffect | m1877_3 | -| ir.cpp:1877:13:1877:13 | SideEffect | m1877_8 | -| ir.cpp:1878:13:1878:29 | Address | &:r1878_1 | -| ir.cpp:1878:13:1878:29 | Address | &:r1878_3 | -| ir.cpp:1879:13:1879:14 | Address | &:r1879_4 | -| ir.cpp:1879:13:1879:19 | ChiPartial | partial:m1879_5 | -| ir.cpp:1879:13:1879:19 | ChiTotal | total:m1878_2 | -| ir.cpp:1879:14:1879:14 | Unary | r1879_2 | -| ir.cpp:1879:14:1879:14 | Unary | r1879_3 | -| ir.cpp:1879:18:1879:19 | StoreValue | r1879_1 | -| ir.cpp:1880:13:1880:14 | Address | &:r1880_4 | -| ir.cpp:1880:13:1880:19 | ChiPartial | partial:m1880_5 | -| ir.cpp:1880:13:1880:19 | ChiTotal | total:m1878_4 | -| ir.cpp:1880:14:1880:14 | Unary | r1880_2 | -| ir.cpp:1880:14:1880:14 | Unary | r1880_3 | -| ir.cpp:1880:18:1880:19 | StoreValue | r1880_1 | -| ir.cpp:1881:13:1881:27 | Address | &:r1881_1 | -| ir.cpp:1881:20:1881:21 | Left | r1881_4 | -| ir.cpp:1881:20:1881:21 | Load | m1879_5 | -| ir.cpp:1881:20:1881:26 | StoreValue | r1881_8 | -| ir.cpp:1881:21:1881:21 | Address | &:r1881_3 | -| ir.cpp:1881:21:1881:21 | Unary | r1881_2 | -| ir.cpp:1881:25:1881:26 | Load | m1880_5 | -| ir.cpp:1881:25:1881:26 | Right | r1881_7 | -| ir.cpp:1881:26:1881:26 | Address | &:r1881_6 | -| ir.cpp:1881:26:1881:26 | Unary | r1881_5 | -| ir.cpp:1885:10:1885:14 | ChiPartial | partial:m1885_3 | -| ir.cpp:1885:10:1885:14 | ChiTotal | total:m1885_2 | -| ir.cpp:1885:10:1885:14 | SideEffect | ~m1887_5 | -| ir.cpp:1886:19:1886:19 | Address | &:r1886_1 | -| ir.cpp:1887:9:1887:9 | Address | &:r1887_1 | -| ir.cpp:1887:9:1887:9 | Address | &:r1887_1 | -| ir.cpp:1887:9:1887:9 | Arg(this) | this:r1887_1 | -| ir.cpp:1887:9:1887:9 | ChiPartial | partial:m1887_7 | -| ir.cpp:1887:9:1887:9 | ChiTotal | total:m1886_2 | -| ir.cpp:1887:9:1887:9 | SideEffect | m1886_2 | -| ir.cpp:1887:11:1887:50 | CallTarget | func:r1887_2 | -| ir.cpp:1887:11:1887:50 | ChiPartial | partial:m1887_4 | -| ir.cpp:1887:11:1887:50 | ChiTotal | total:m1885_4 | -| ir.cpp:1887:11:1887:50 | SideEffect | ~m1885_4 | -| ir.cpp:1891:24:1891:24 | Address | &:r1891_3 | -| ir.cpp:1891:24:1891:24 | Address | &:r1891_3 | -| ir.cpp:1891:24:1891:24 | SideEffect | ~m1891_6 | -| ir.cpp:1891:24:1891:24 | SideEffect | ~m1891_6 | -| ir.cpp:1891:42:1891:43 | ChiPartial | partial:m1891_5 | -| ir.cpp:1891:42:1891:43 | ChiPartial | partial:m1891_5 | -| ir.cpp:1891:42:1891:43 | ChiTotal | total:m1891_2 | -| ir.cpp:1891:42:1891:43 | ChiTotal | total:m1891_2 | -| ir.cpp:1891:42:1891:43 | StoreValue | r1891_4 | -| ir.cpp:1891:42:1891:43 | StoreValue | r1891_4 | -| ir.cpp:1893:5:1893:28 | Address | &:r1893_5 | -| ir.cpp:1893:5:1893:28 | ChiPartial | partial:m1893_3 | -| ir.cpp:1893:5:1893:28 | ChiTotal | total:m1893_2 | -| ir.cpp:1893:5:1893:28 | Load | m1896_8 | -| ir.cpp:1893:5:1893:28 | SideEffect | m1893_3 | -| ir.cpp:1894:9:1894:17 | Address | &:r1894_1 | -| ir.cpp:1894:21:1894:40 | Address | &:r1894_2 | -| ir.cpp:1894:21:1894:40 | Load | ~m1893_3 | -| ir.cpp:1894:21:1894:40 | StoreValue | r1894_3 | -| ir.cpp:1895:10:1895:19 | Address | &:r1895_1 | -| ir.cpp:1895:23:1895:43 | Address | &:r1895_2 | -| ir.cpp:1895:23:1895:43 | Load | ~m1893_3 | -| ir.cpp:1895:23:1895:43 | StoreValue | r1895_3 | -| ir.cpp:1896:5:1896:39 | Address | &:r1896_1 | -| ir.cpp:1896:12:1896:20 | Address | &:r1896_2 | -| ir.cpp:1896:12:1896:20 | Left | r1896_3 | -| ir.cpp:1896:12:1896:20 | Load | m1894_4 | -| ir.cpp:1896:12:1896:38 | StoreValue | r1896_7 | -| ir.cpp:1896:24:1896:38 | Right | r1896_6 | -| ir.cpp:1896:29:1896:38 | Address | &:r1896_4 | -| ir.cpp:1896:29:1896:38 | Load | m1895_4 | -| ir.cpp:1896:29:1896:38 | Unary | r1896_5 | -| ir.cpp:1901:5:1901:16 | Address | &:r1901_7 | -| ir.cpp:1901:5:1901:16 | ChiPartial | partial:m1901_3 | -| ir.cpp:1901:5:1901:16 | ChiTotal | total:m1901_2 | -| ir.cpp:1901:5:1901:16 | Load | m1903_4 | -| ir.cpp:1901:5:1901:16 | SideEffect | m1901_3 | -| ir.cpp:1901:22:1901:22 | Address | &:r1901_5 | -| ir.cpp:1902:9:1902:9 | Address | &:r1902_1 | -| ir.cpp:1902:9:1902:9 | Left | r1902_2 | -| ir.cpp:1902:9:1902:9 | Load | m1901_6 | -| ir.cpp:1902:9:1902:14 | Condition | r1902_4 | -| ir.cpp:1902:13:1902:14 | Right | r1902_3 | -| ir.cpp:1903:9:1903:17 | Address | &:r1903_1 | -| ir.cpp:1903:16:1903:16 | Address | &:r1903_2 | -| ir.cpp:1903:16:1903:16 | Load | m1901_6 | -| ir.cpp:1903:16:1903:16 | StoreValue | r1903_3 | -| ir.cpp:1905:9:1905:20 | CallTarget | func:r1905_1 | -| ir.cpp:1905:9:1905:20 | ChiPartial | partial:m1905_3 | -| ir.cpp:1905:9:1905:20 | ChiTotal | total:m1901_4 | -| ir.cpp:1905:9:1905:20 | SideEffect | ~m1901_4 | -| ir.cpp:1909:5:1909:17 | Address | &:r1909_8 | -| ir.cpp:1909:5:1909:17 | ChiPartial | partial:m1909_3 | -| ir.cpp:1909:5:1909:17 | ChiTotal | total:m1909_2 | -| ir.cpp:1909:5:1909:17 | Load | m1913_4 | -| ir.cpp:1909:5:1909:17 | SideEffect | m1909_3 | -| ir.cpp:1909:23:1909:23 | Address | &:r1909_5 | -| ir.cpp:1910:9:1910:9 | Address | &:r1910_1 | -| ir.cpp:1910:9:1910:9 | Left | r1910_2 | -| ir.cpp:1910:9:1910:9 | Load | m1909_6 | -| ir.cpp:1910:9:1910:14 | Condition | r1910_4 | -| ir.cpp:1910:13:1910:14 | Right | r1910_3 | -| ir.cpp:1911:9:1911:20 | CallTarget | func:r1911_1 | -| ir.cpp:1911:9:1911:20 | ChiPartial | partial:m1911_3 | -| ir.cpp:1911:9:1911:20 | ChiTotal | total:m1909_4 | -| ir.cpp:1911:9:1911:20 | SideEffect | ~m1909_4 | -| ir.cpp:1913:5:1913:13 | Address | &:r1913_1 | -| ir.cpp:1913:12:1913:12 | Address | &:r1913_2 | -| ir.cpp:1913:12:1913:12 | Load | m1909_6 | -| ir.cpp:1913:12:1913:12 | StoreValue | r1913_3 | -| ir.cpp:1916:5:1916:19 | Address | &:r1916_7 | -| ir.cpp:1916:5:1916:19 | ChiPartial | partial:m1916_3 | -| ir.cpp:1916:5:1916:19 | ChiTotal | total:m1916_2 | -| ir.cpp:1916:5:1916:19 | Load | m1917_4 | -| ir.cpp:1916:5:1916:19 | SideEffect | m1916_3 | -| ir.cpp:1916:25:1916:25 | Address | &:r1916_5 | -| ir.cpp:1917:5:1917:13 | Address | &:r1917_1 | -| ir.cpp:1917:12:1917:12 | Address | &:r1917_2 | -| ir.cpp:1917:12:1917:12 | Load | m1916_6 | -| ir.cpp:1917:12:1917:12 | StoreValue | r1917_3 | -| ir.cpp:1920:6:1920:43 | ChiPartial | partial:m1920_3 | -| ir.cpp:1920:6:1920:43 | ChiTotal | total:m1920_2 | -| ir.cpp:1920:6:1920:43 | SideEffect | ~m1928_6 | -| ir.cpp:1921:7:1921:7 | Address | &:r1921_1 | -| ir.cpp:1921:7:1921:7 | Address | &:r1921_1 | -| ir.cpp:1921:7:1921:7 | Arg(this) | this:r1921_1 | -| ir.cpp:1921:7:1921:7 | CallTarget | func:r1921_3 | -| ir.cpp:1921:7:1921:7 | ChiPartial | partial:m1921_5 | -| ir.cpp:1921:7:1921:7 | ChiPartial | partial:m1921_7 | -| ir.cpp:1921:7:1921:7 | ChiTotal | total:m1920_4 | -| ir.cpp:1921:7:1921:7 | ChiTotal | total:m1921_2 | -| ir.cpp:1921:7:1921:7 | SideEffect | ~m1920_4 | -| ir.cpp:1922:9:1922:9 | Address | &:r1922_1 | -| ir.cpp:1923:5:1923:5 | Address | &:r1923_7 | -| ir.cpp:1923:11:1923:30 | CallTarget | func:r1923_2 | -| ir.cpp:1923:11:1923:30 | ChiPartial | partial:m1923_5 | -| ir.cpp:1923:11:1923:30 | ChiTotal | total:m1921_6 | -| ir.cpp:1923:11:1923:30 | SideEffect | ~m1921_6 | -| ir.cpp:1923:11:1923:30 | StoreValue | r1923_4 | -| ir.cpp:1923:32:1923:33 | Arg(0) | 0:r1923_3 | -| ir.cpp:1924:9:1924:9 | Address | &:r1924_1 | -| ir.cpp:1925:5:1925:5 | Address | &:r1925_6 | -| ir.cpp:1925:9:1925:31 | CallTarget | func:r1925_1 | -| ir.cpp:1925:9:1925:31 | ChiPartial | partial:m1925_4 | -| ir.cpp:1925:9:1925:31 | ChiTotal | total:m1923_6 | -| ir.cpp:1925:9:1925:31 | SideEffect | ~m1923_6 | -| ir.cpp:1925:9:1925:31 | StoreValue | r1925_3 | -| ir.cpp:1925:33:1925:34 | Arg(0) | 0:r1925_2 | -| ir.cpp:1926:9:1926:9 | Address | &:r1926_1 | -| ir.cpp:1927:5:1927:5 | Address | &:r1927_6 | -| ir.cpp:1927:9:1927:23 | CallTarget | func:r1927_1 | -| ir.cpp:1927:9:1927:23 | ChiPartial | partial:m1927_4 | -| ir.cpp:1927:9:1927:23 | ChiTotal | total:m1925_5 | -| ir.cpp:1927:9:1927:23 | SideEffect | ~m1925_5 | -| ir.cpp:1927:9:1927:23 | StoreValue | r1927_3 | -| ir.cpp:1927:25:1927:26 | Arg(0) | 0:r1927_2 | -| ir.cpp:1928:1:1928:1 | Address | &:r1928_2 | -| ir.cpp:1928:1:1928:1 | Address | &:r1928_2 | -| ir.cpp:1928:1:1928:1 | Arg(this) | this:r1928_2 | -| ir.cpp:1928:1:1928:1 | CallTarget | func:r1928_3 | -| ir.cpp:1928:1:1928:1 | ChiPartial | partial:m1928_5 | -| ir.cpp:1928:1:1928:1 | ChiPartial | partial:m1928_8 | -| ir.cpp:1928:1:1928:1 | ChiTotal | total:m1921_8 | -| ir.cpp:1928:1:1928:1 | ChiTotal | total:m1927_5 | -| ir.cpp:1928:1:1928:1 | SideEffect | m1921_8 | -| ir.cpp:1928:1:1928:1 | SideEffect | ~m1927_5 | -| ir.cpp:1930:6:1930:23 | ChiPartial | partial:m1930_3 | -| ir.cpp:1930:6:1930:23 | ChiTotal | total:m1930_2 | -| ir.cpp:1930:6:1930:23 | SideEffect | m1930_3 | -| ir.cpp:1931:7:1931:7 | Address | &:r1931_1 | -| ir.cpp:1931:10:1931:10 | Address | &:r1931_3 | -| ir.cpp:1932:3:1932:3 | Address | &:r1932_5 | -| ir.cpp:1932:7:1932:7 | Address | &:r1932_2 | -| ir.cpp:1932:7:1932:7 | Address | &:r1932_2 | -| ir.cpp:1932:7:1932:12 | Load | m1932_3 | -| ir.cpp:1932:7:1932:12 | StoreValue | r1932_4 | -| ir.cpp:1932:11:1932:12 | StoreValue | r1932_1 | -| ir.cpp:1935:6:1935:38 | ChiPartial | partial:m1935_3 | -| ir.cpp:1935:6:1935:38 | ChiTotal | total:m1935_2 | -| ir.cpp:1935:6:1935:38 | SideEffect | m1935_3 | -| ir.cpp:1936:7:1936:7 | Address | &:r1936_1 | -| ir.cpp:1936:10:1936:10 | Address | &:r1936_3 | -| ir.cpp:1936:13:1936:14 | StoreValue | r1936_4 | -| ir.cpp:1937:3:1937:3 | Address | &:r1937_7 | -| ir.cpp:1937:8:1937:8 | Address | &:r1937_2 | -| ir.cpp:1937:8:1937:8 | Address | &:r1937_2 | -| ir.cpp:1937:8:1937:8 | Address | &:r1937_2 | -| ir.cpp:1937:8:1937:8 | Left | r1937_3 | -| ir.cpp:1937:8:1937:8 | Load | m1936_5 | -| ir.cpp:1937:8:1937:14 | Load | m1937_5 | -| ir.cpp:1937:8:1937:14 | StoreValue | r1937_4 | -| ir.cpp:1937:8:1937:14 | StoreValue | r1937_6 | -| ir.cpp:1937:13:1937:14 | Right | r1937_1 | -| ir.cpp:1944:15:1944:43 | Address | &:r1944_5 | -| ir.cpp:1944:15:1944:43 | ChiPartial | partial:m1944_3 | -| ir.cpp:1944:15:1944:43 | ChiTotal | total:m1944_2 | -| ir.cpp:1944:15:1944:43 | Load | m1945_4 | -| ir.cpp:1944:15:1944:43 | SideEffect | m1944_3 | -| ir.cpp:1945:9:1945:17 | Address | &:r1945_1 | -| ir.cpp:1945:16:1945:16 | StoreValue | r1945_3 | -| ir.cpp:1945:16:1945:16 | Unary | r1945_2 | -| ir.cpp:1947:14:1947:39 | Address | &:r1947_5 | -| ir.cpp:1947:14:1947:39 | ChiPartial | partial:m1947_3 | -| ir.cpp:1947:14:1947:39 | ChiTotal | total:m1947_2 | -| ir.cpp:1947:14:1947:39 | Load | m1948_4 | -| ir.cpp:1947:14:1947:39 | SideEffect | m1947_3 | -| ir.cpp:1948:9:1948:17 | Address | &:r1948_1 | -| ir.cpp:1948:16:1948:16 | Address | &:r1948_2 | -| ir.cpp:1948:16:1948:16 | Load | ~m1947_3 | -| ir.cpp:1948:16:1948:16 | StoreValue | r1948_3 | -| ir.cpp:1952:6:1952:55 | ChiPartial | partial:m1952_3 | -| ir.cpp:1952:6:1952:55 | ChiTotal | total:m1952_2 | -| ir.cpp:1952:6:1952:55 | SideEffect | ~m1967_4 | -| ir.cpp:1953:7:1953:7 | Address | &:r1953_1 | -| ir.cpp:1955:7:1955:35 | CallTarget | func:r1955_2 | -| ir.cpp:1955:7:1955:35 | ChiPartial | partial:m1955_4 | -| ir.cpp:1955:7:1955:35 | ChiTotal | total:m1952_4 | -| ir.cpp:1955:7:1955:35 | SideEffect | ~m1952_4 | -| ir.cpp:1955:7:1955:35 | Unary | r1955_3 | -| ir.cpp:1956:5:1956:36 | CallTarget | func:r1956_1 | -| ir.cpp:1956:5:1956:36 | ChiPartial | partial:m1956_3 | -| ir.cpp:1956:5:1956:36 | ChiTotal | total:m1955_5 | -| ir.cpp:1956:5:1956:36 | SideEffect | ~m1955_5 | -| ir.cpp:1956:5:1956:36 | Unary | r1956_2 | -| ir.cpp:1957:7:1957:32 | CallTarget | func:r1957_2 | -| ir.cpp:1957:7:1957:32 | ChiPartial | partial:m1957_4 | -| ir.cpp:1957:7:1957:32 | ChiTotal | total:m1956_4 | -| ir.cpp:1957:7:1957:32 | SideEffect | ~m1956_4 | -| ir.cpp:1958:5:1958:33 | CallTarget | func:r1958_1 | -| ir.cpp:1958:5:1958:33 | ChiPartial | partial:m1958_3 | -| ir.cpp:1958:5:1958:33 | ChiTotal | total:m1957_5 | -| ir.cpp:1958:5:1958:33 | SideEffect | ~m1957_5 | -| ir.cpp:1960:7:1960:7 | Address | &:r1960_1 | -| ir.cpp:1961:5:1961:5 | Address | &:r1961_7 | -| ir.cpp:1961:11:1961:39 | Address | &:r1961_3 | -| ir.cpp:1961:11:1961:39 | CallTarget | func:r1961_2 | -| ir.cpp:1961:11:1961:39 | ChiPartial | partial:m1961_4 | -| ir.cpp:1961:11:1961:39 | ChiTotal | total:m1958_4 | -| ir.cpp:1961:11:1961:39 | SideEffect | ~m1958_4 | -| ir.cpp:1961:40:1961:42 | Load | ~m1961_5 | -| ir.cpp:1961:40:1961:42 | StoreValue | r1961_6 | -| ir.cpp:1962:7:1962:7 | Address | &:r1962_1 | -| ir.cpp:1963:5:1963:5 | Address | &:r1963_6 | -| ir.cpp:1963:9:1963:40 | Address | &:r1963_2 | -| ir.cpp:1963:9:1963:40 | CallTarget | func:r1963_1 | -| ir.cpp:1963:9:1963:40 | ChiPartial | partial:m1963_3 | -| ir.cpp:1963:9:1963:40 | ChiTotal | total:m1961_5 | -| ir.cpp:1963:9:1963:40 | SideEffect | ~m1961_5 | -| ir.cpp:1963:41:1963:43 | Load | ~m1963_4 | -| ir.cpp:1963:41:1963:43 | StoreValue | r1963_5 | -| ir.cpp:1964:7:1964:7 | Address | &:r1964_1 | -| ir.cpp:1965:5:1965:5 | Address | &:r1965_6 | -| ir.cpp:1965:11:1965:36 | CallTarget | func:r1965_2 | -| ir.cpp:1965:11:1965:36 | ChiPartial | partial:m1965_4 | -| ir.cpp:1965:11:1965:36 | ChiTotal | total:m1963_4 | -| ir.cpp:1965:11:1965:36 | SideEffect | ~m1963_4 | -| ir.cpp:1965:11:1965:36 | StoreValue | r1965_3 | -| ir.cpp:1966:7:1966:7 | Address | &:r1966_1 | -| ir.cpp:1967:5:1967:5 | Address | &:r1967_5 | -| ir.cpp:1967:9:1967:37 | CallTarget | func:r1967_1 | -| ir.cpp:1967:9:1967:37 | ChiPartial | partial:m1967_3 | -| ir.cpp:1967:9:1967:37 | ChiTotal | total:m1965_5 | -| ir.cpp:1967:9:1967:37 | SideEffect | ~m1965_5 | -| ir.cpp:1967:9:1967:37 | StoreValue | r1967_2 | -| ir.cpp:1970:6:1970:18 | ChiPartial | partial:m1970_3 | -| ir.cpp:1970:6:1970:18 | ChiTotal | total:m1970_2 | -| ir.cpp:1970:6:1970:18 | SideEffect | m1970_3 | -| ir.cpp:1971:18:1971:18 | Address | &:r1971_1 | -| ir.cpp:1972:5:1972:5 | Address | &:r1972_1 | -| ir.cpp:1972:5:1972:5 | Load | m1971_2 | -| ir.cpp:1981:6:1981:24 | ChiPartial | partial:m1981_3 | -| ir.cpp:1981:6:1981:24 | ChiTotal | total:m1981_2 | -| ir.cpp:1981:6:1981:24 | SideEffect | ~m1989_5 | -| ir.cpp:1982:12:1982:12 | Address | &:r1982_1 | -| ir.cpp:1984:5:1984:19 | ChiPartial | partial:m1984_7 | -| ir.cpp:1984:5:1984:19 | ChiTotal | total:m1984_5 | -| ir.cpp:1984:7:1984:12 | CallTarget | func:r1984_2 | -| ir.cpp:1984:7:1984:12 | ChiPartial | partial:m1984_4 | -| ir.cpp:1984:7:1984:12 | ChiTotal | total:m1981_4 | -| ir.cpp:1984:7:1984:12 | SideEffect | ~m1981_4 | -| ir.cpp:1984:7:1984:12 | Unary | r1984_3 | -| ir.cpp:1984:13:1984:16 | Address | &:r1984_6 | -| ir.cpp:1985:5:1985:19 | ChiPartial | partial:m1985_7 | -| ir.cpp:1985:5:1985:19 | ChiTotal | total:m1985_5 | -| ir.cpp:1985:7:1985:12 | CallTarget | func:r1985_2 | -| ir.cpp:1985:7:1985:12 | ChiPartial | partial:m1985_4 | -| ir.cpp:1985:7:1985:12 | ChiTotal | total:m1984_8 | -| ir.cpp:1985:7:1985:12 | SideEffect | ~m1984_8 | -| ir.cpp:1985:7:1985:12 | Unary | r1985_3 | -| ir.cpp:1985:13:1985:16 | Address | &:r1985_6 | -| ir.cpp:1986:5:1986:15 | Address | &:r1986_1 | -| ir.cpp:1986:5:1986:15 | Address | &:r1986_1 | -| ir.cpp:1986:7:1986:13 | CallTarget | func:r1986_3 | -| ir.cpp:1986:7:1986:13 | ChiPartial | partial:m1986_5 | -| ir.cpp:1986:7:1986:13 | ChiTotal | total:m1985_8 | -| ir.cpp:1986:7:1986:13 | SideEffect | ~m1985_8 | -| ir.cpp:1986:7:1986:13 | StoreValue | r1986_4 | -| ir.cpp:1987:5:1987:18 | CallTarget | func:r1987_1 | -| ir.cpp:1987:5:1987:18 | ChiPartial | partial:m1987_3 | -| ir.cpp:1987:5:1987:18 | ChiTotal | total:m1986_6 | -| ir.cpp:1987:5:1987:18 | SideEffect | ~m1986_6 | -| ir.cpp:1987:5:1987:18 | Unary | r1987_2 | -| ir.cpp:1987:5:1987:25 | ChiPartial | partial:m1987_6 | -| ir.cpp:1987:5:1987:25 | ChiTotal | total:m1987_4 | -| ir.cpp:1987:19:1987:22 | Address | &:r1987_5 | -| ir.cpp:1988:5:1988:18 | CallTarget | func:r1988_1 | -| ir.cpp:1988:5:1988:18 | ChiPartial | partial:m1988_3 | -| ir.cpp:1988:5:1988:18 | ChiTotal | total:m1987_7 | -| ir.cpp:1988:5:1988:18 | SideEffect | ~m1987_7 | -| ir.cpp:1988:5:1988:18 | Unary | r1988_2 | -| ir.cpp:1988:5:1988:25 | ChiPartial | partial:m1988_6 | -| ir.cpp:1988:5:1988:25 | ChiTotal | total:m1988_4 | -| ir.cpp:1988:19:1988:22 | Address | &:r1988_5 | -| ir.cpp:1989:5:1989:19 | CallTarget | func:r1989_2 | -| ir.cpp:1989:5:1989:19 | ChiPartial | partial:m1989_4 | -| ir.cpp:1989:5:1989:19 | ChiTotal | total:m1988_7 | -| ir.cpp:1989:5:1989:19 | SideEffect | ~m1988_7 | -| ir.cpp:1989:5:1989:19 | StoreValue | r1989_3 | -| ir.cpp:1989:5:1989:21 | Address | &:r1989_1 | -| ir.cpp:1989:5:1989:21 | Address | &:r1989_1 | -| ir.cpp:1992:6:1992:21 | ChiPartial | partial:m1992_3 | -| ir.cpp:1992:6:1992:21 | ChiTotal | total:m1992_2 | -| ir.cpp:1992:6:1992:21 | SideEffect | ~m1996_6 | -| ir.cpp:1993:7:1993:7 | Address | &:r1993_1 | -| ir.cpp:1993:7:1993:7 | Address | &:r1993_1 | -| ir.cpp:1993:7:1993:7 | Arg(this) | this:r1993_1 | -| ir.cpp:1993:7:1993:7 | CallTarget | func:r1993_3 | -| ir.cpp:1993:7:1993:7 | ChiPartial | partial:m1993_5 | -| ir.cpp:1993:7:1993:7 | ChiPartial | partial:m1993_7 | -| ir.cpp:1993:7:1993:7 | ChiTotal | total:m1992_4 | -| ir.cpp:1993:7:1993:7 | ChiTotal | total:m1993_2 | -| ir.cpp:1993:7:1993:7 | SideEffect | ~m1992_4 | -| ir.cpp:1994:11:1994:13 | Address | &:r1994_1 | -| ir.cpp:1994:23:1994:45 | StoreValue | r1994_2 | -| ir.cpp:1995:5:1995:7 | Address | &:r1995_3 | -| ir.cpp:1995:13:1995:32 | StoreValue | r1995_2 | -| ir.cpp:1996:1:1996:1 | Address | &:r1996_2 | -| ir.cpp:1996:1:1996:1 | Address | &:r1996_2 | -| ir.cpp:1996:1:1996:1 | Arg(this) | this:r1996_2 | -| ir.cpp:1996:1:1996:1 | CallTarget | func:r1996_3 | -| ir.cpp:1996:1:1996:1 | ChiPartial | partial:m1996_5 | -| ir.cpp:1996:1:1996:1 | ChiPartial | partial:m1996_8 | -| ir.cpp:1996:1:1996:1 | ChiTotal | total:m1993_6 | -| ir.cpp:1996:1:1996:1 | ChiTotal | total:m1993_8 | -| ir.cpp:1996:1:1996:1 | SideEffect | m1993_8 | -| ir.cpp:1996:1:1996:1 | SideEffect | ~m1993_6 | -| ir.cpp:1998:6:1998:19 | ChiPartial | partial:m1998_3 | -| ir.cpp:1998:6:1998:19 | ChiTotal | total:m1998_2 | -| ir.cpp:1998:6:1998:19 | SideEffect | ~m2002_9 | -| ir.cpp:1998:26:1998:26 | Address | &:r1998_5 | -| ir.cpp:1998:33:1998:33 | Address | &:r1998_7 | -| ir.cpp:1998:40:1998:40 | Address | &:r1998_9 | -| ir.cpp:1998:47:1998:47 | Address | &:r1998_11 | -| ir.cpp:1999:5:1999:5 | Address | &:r1999_7 | -| ir.cpp:1999:9:1999:9 | Address | &:r1999_1 | -| ir.cpp:1999:9:1999:9 | Condition | r1999_2 | -| ir.cpp:1999:9:1999:9 | Load | m1998_6 | -| ir.cpp:1999:9:1999:17 | Address | &:r1999_5 | -| ir.cpp:1999:9:1999:17 | Address | &:r1999_11 | -| ir.cpp:1999:9:1999:17 | Address | &:r1999_15 | -| ir.cpp:1999:9:1999:17 | Load | m1999_4 | -| ir.cpp:1999:9:1999:17 | Phi | from 2:m1999_12 | -| ir.cpp:1999:9:1999:17 | Phi | from 3:m1999_16 | -| ir.cpp:1999:9:1999:17 | StoreValue | r1999_6 | -| ir.cpp:1999:13:1999:13 | Address | &:r1999_9 | -| ir.cpp:1999:13:1999:13 | Load | m1998_8 | -| ir.cpp:1999:13:1999:13 | StoreValue | r1999_10 | -| ir.cpp:1999:17:1999:17 | Address | &:r1999_13 | -| ir.cpp:1999:17:1999:17 | Load | m1998_10 | -| ir.cpp:1999:17:1999:17 | StoreValue | r1999_14 | -| ir.cpp:2000:5:2000:5 | Address | &:r2000_7 | -| ir.cpp:2000:9:2000:9 | Address | &:r2000_1 | -| ir.cpp:2000:9:2000:9 | Condition | r2000_2 | -| ir.cpp:2000:9:2000:9 | Load | m1998_6 | -| ir.cpp:2000:9:2000:17 | Address | &:r2000_5 | -| ir.cpp:2000:9:2000:17 | Address | &:r2000_11 | -| ir.cpp:2000:9:2000:17 | Address | &:r2000_14 | -| ir.cpp:2000:9:2000:17 | Load | m2000_4 | -| ir.cpp:2000:9:2000:17 | Phi | from 5:m2000_12 | -| ir.cpp:2000:9:2000:17 | Phi | from 6:m2000_15 | -| ir.cpp:2000:9:2000:17 | StoreValue | r2000_6 | -| ir.cpp:2000:13:2000:13 | Address | &:r2000_9 | -| ir.cpp:2000:13:2000:13 | Load | m1998_8 | -| ir.cpp:2000:13:2000:13 | StoreValue | r2000_10 | -| ir.cpp:2000:17:2000:17 | StoreValue | r2000_13 | -| ir.cpp:2001:5:2001:5 | Address | &:r2001_7 | -| ir.cpp:2001:9:2001:9 | Address | &:r2001_1 | -| ir.cpp:2001:9:2001:9 | Condition | r2001_2 | -| ir.cpp:2001:9:2001:9 | Load | m1998_6 | -| ir.cpp:2001:9:2001:17 | Address | &:r2001_5 | -| ir.cpp:2001:9:2001:17 | Address | &:r2001_10 | -| ir.cpp:2001:9:2001:17 | Address | &:r2001_13 | -| ir.cpp:2001:9:2001:17 | Load | m2001_4 | -| ir.cpp:2001:9:2001:17 | Phi | from 8:m2001_11 | -| ir.cpp:2001:9:2001:17 | Phi | from 9:m2001_14 | -| ir.cpp:2001:9:2001:17 | StoreValue | r2001_6 | -| ir.cpp:2001:13:2001:13 | StoreValue | r2001_9 | -| ir.cpp:2001:17:2001:17 | StoreValue | r2001_12 | -| ir.cpp:2002:5:2002:19 | ChiPartial | partial:m2002_8 | -| ir.cpp:2002:5:2002:19 | ChiTotal | total:m1998_4 | -| ir.cpp:2002:6:2002:6 | Address | &:r2002_2 | -| ir.cpp:2002:6:2002:6 | Condition | r2002_3 | -| ir.cpp:2002:6:2002:6 | Load | m1998_6 | -| ir.cpp:2002:6:2002:14 | Address | &:r2002_6 | -| ir.cpp:2002:6:2002:14 | Address | &:r2002_7 | -| ir.cpp:2002:6:2002:14 | Address | &:r2002_11 | -| ir.cpp:2002:6:2002:14 | Address | &:r2002_14 | -| ir.cpp:2002:6:2002:14 | Load | m2002_5 | -| ir.cpp:2002:6:2002:14 | Phi | from 11:m2002_12 | -| ir.cpp:2002:6:2002:14 | Phi | from 12:m2002_15 | -| ir.cpp:2002:10:2002:10 | StoreValue | r2002_10 | -| ir.cpp:2002:14:2002:14 | StoreValue | r2002_13 | -| ir.cpp:2002:19:2002:19 | StoreValue | r2002_1 | -| ir.cpp:2008:6:2008:22 | ChiPartial | partial:m2008_3 | -| ir.cpp:2008:6:2008:22 | ChiTotal | total:m2008_2 | -| ir.cpp:2008:6:2008:22 | SideEffect | m2008_3 | -| ir.cpp:2008:29:2008:29 | Address | &:r2008_5 | -| ir.cpp:2008:46:2008:46 | Address | &:r2008_7 | -| ir.cpp:2008:63:2008:63 | Address | &:r2008_9 | -| ir.cpp:2008:80:2008:80 | Address | &:r2008_11 | -| ir.cpp:2009:5:2009:5 | Address | &:r2009_7 | -| ir.cpp:2009:9:2009:9 | Address | &:r2009_1 | -| ir.cpp:2009:9:2009:9 | Condition | r2009_2 | -| ir.cpp:2009:9:2009:9 | Load | m2008_6 | -| ir.cpp:2009:9:2009:17 | Address | &:r2009_5 | -| ir.cpp:2009:9:2009:17 | Address | &:r2009_11 | -| ir.cpp:2009:9:2009:17 | Address | &:r2009_15 | -| ir.cpp:2009:9:2009:17 | Load | m2009_4 | -| ir.cpp:2009:9:2009:17 | Phi | from 2:m2009_12 | -| ir.cpp:2009:9:2009:17 | Phi | from 3:m2009_16 | -| ir.cpp:2009:9:2009:17 | StoreValue | r2009_6 | -| ir.cpp:2009:13:2009:13 | Address | &:r2009_9 | -| ir.cpp:2009:13:2009:13 | Load | m2008_8 | -| ir.cpp:2009:13:2009:13 | StoreValue | r2009_10 | -| ir.cpp:2009:17:2009:17 | Address | &:r2009_13 | -| ir.cpp:2009:17:2009:17 | Load | m2008_10 | -| ir.cpp:2009:17:2009:17 | StoreValue | r2009_14 | -| ir.cpp:2010:5:2010:5 | Address | &:r2010_10 | -| ir.cpp:2010:9:2010:9 | Address | &:r2010_2 | -| ir.cpp:2010:9:2010:9 | Address | &:r2010_6 | -| ir.cpp:2010:9:2010:9 | Address | &:r2010_17 | -| ir.cpp:2010:9:2010:9 | Address | &:r2010_23 | -| ir.cpp:2010:9:2010:9 | Condition | r2010_3 | -| ir.cpp:2010:9:2010:9 | Load | m2008_6 | -| ir.cpp:2010:9:2010:9 | Load | m2010_5 | -| ir.cpp:2010:9:2010:9 | Phi | from 5:m2010_18 | -| ir.cpp:2010:9:2010:9 | Phi | from 6:m2010_24 | -| ir.cpp:2010:9:2010:9 | StoreValue | r2010_7 | -| ir.cpp:2010:9:2010:31 | Address | &:r2010_1 | -| ir.cpp:2010:9:2010:31 | Address | &:r2010_1 | -| ir.cpp:2010:9:2010:31 | Load | m2010_8 | -| ir.cpp:2010:9:2010:31 | StoreValue | r2010_9 | -| ir.cpp:2010:13:2010:13 | Address | &:r2010_12 | -| ir.cpp:2010:13:2010:13 | Address | &:r2010_12 | -| ir.cpp:2010:13:2010:13 | Address | &:r2010_13 | -| ir.cpp:2010:13:2010:13 | Load | m2008_8 | -| ir.cpp:2010:13:2010:13 | Load | m2010_15 | -| ir.cpp:2010:13:2010:13 | StoreValue | r2010_14 | -| ir.cpp:2010:13:2010:13 | StoreValue | r2010_16 | -| ir.cpp:2010:17:2010:31 | Address | &:r2010_19 | -| ir.cpp:2010:17:2010:31 | Address | &:r2010_19 | -| ir.cpp:2010:17:2010:31 | Load | m2010_21 | -| ir.cpp:2010:17:2010:31 | StoreValue | r2010_20 | -| ir.cpp:2010:17:2010:31 | StoreValue | r2010_22 | -| ir.cpp:2011:5:2011:5 | Address | &:r2011_10 | -| ir.cpp:2011:9:2011:9 | Address | &:r2011_2 | -| ir.cpp:2011:9:2011:9 | Address | &:r2011_6 | -| ir.cpp:2011:9:2011:9 | Address | &:r2011_16 | -| ir.cpp:2011:9:2011:9 | Address | &:r2011_22 | -| ir.cpp:2011:9:2011:9 | Condition | r2011_3 | -| ir.cpp:2011:9:2011:9 | Load | m2008_6 | -| ir.cpp:2011:9:2011:9 | Load | m2011_5 | -| ir.cpp:2011:9:2011:9 | Phi | from 8:m2011_17 | -| ir.cpp:2011:9:2011:9 | Phi | from 9:m2011_23 | -| ir.cpp:2011:9:2011:9 | StoreValue | r2011_7 | -| ir.cpp:2011:9:2011:45 | Address | &:r2011_1 | -| ir.cpp:2011:9:2011:45 | Address | &:r2011_1 | -| ir.cpp:2011:9:2011:45 | Load | m2011_8 | -| ir.cpp:2011:9:2011:45 | StoreValue | r2011_9 | -| ir.cpp:2011:13:2011:27 | Address | &:r2011_12 | -| ir.cpp:2011:13:2011:27 | Address | &:r2011_12 | -| ir.cpp:2011:13:2011:27 | Load | m2011_14 | -| ir.cpp:2011:13:2011:27 | StoreValue | r2011_13 | -| ir.cpp:2011:13:2011:27 | StoreValue | r2011_15 | -| ir.cpp:2011:31:2011:45 | Address | &:r2011_18 | -| ir.cpp:2011:31:2011:45 | Address | &:r2011_18 | -| ir.cpp:2011:31:2011:45 | Load | m2011_20 | -| ir.cpp:2011:31:2011:45 | StoreValue | r2011_19 | -| ir.cpp:2011:31:2011:45 | StoreValue | r2011_21 | -| ir.cpp:2012:6:2012:6 | Address | &:r2012_11 | -| ir.cpp:2012:6:2012:6 | Unary | r2012_11 | -| ir.cpp:2012:6:2012:18 | Address | &:r2012_13 | -| ir.cpp:2012:10:2012:10 | Address | &:r2012_5 | -| ir.cpp:2012:10:2012:10 | Condition | r2012_6 | -| ir.cpp:2012:10:2012:10 | Load | m2008_6 | -| ir.cpp:2012:10:2012:18 | Address | &:r2012_9 | -| ir.cpp:2012:10:2012:18 | Address | &:r2012_17 | -| ir.cpp:2012:10:2012:18 | Address | &:r2012_21 | -| ir.cpp:2012:10:2012:18 | Load | m2012_8 | -| ir.cpp:2012:10:2012:18 | Phi | from 11:m2012_18 | -| ir.cpp:2012:10:2012:18 | Phi | from 12:m2012_22 | -| ir.cpp:2012:10:2012:18 | StoreValue | r2012_10 | -| ir.cpp:2012:14:2012:14 | Address | &:r2012_15 | -| ir.cpp:2012:14:2012:14 | Load | m2008_8 | -| ir.cpp:2012:14:2012:14 | StoreValue | r2012_16 | -| ir.cpp:2012:18:2012:18 | Address | &:r2012_19 | -| ir.cpp:2012:18:2012:18 | Load | m2008_10 | -| ir.cpp:2012:18:2012:18 | StoreValue | r2012_20 | -| ir.cpp:2012:23:2012:37 | Address | &:r2012_1 | -| ir.cpp:2012:23:2012:37 | Address | &:r2012_1 | -| ir.cpp:2012:23:2012:37 | Load | m2012_3 | -| ir.cpp:2012:23:2012:37 | StoreValue | r2012_2 | -| ir.cpp:2012:23:2012:37 | StoreValue | r2012_4 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_5 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_7 | -| ir.cpp:2015:8:2015:8 | Address | &:r2015_10 | -| ir.cpp:2015:8:2015:8 | ChiPartial | partial:m2015_3 | -| ir.cpp:2015:8:2015:8 | ChiPartial | partial:m2015_3 | -| ir.cpp:2015:8:2015:8 | ChiPartial | partial:m2015_3 | -| ir.cpp:2015:8:2015:8 | ChiTotal | total:m2015_2 | -| ir.cpp:2015:8:2015:8 | ChiTotal | total:m2015_2 | -| ir.cpp:2015:8:2015:8 | ChiTotal | total:m2015_2 | -| ir.cpp:2015:8:2015:8 | Load | m0_10 | -| ir.cpp:2015:8:2015:8 | Load | m2015_6 | -| ir.cpp:2015:8:2015:8 | Load | m2015_6 | -| ir.cpp:2015:8:2015:8 | Load | m2015_6 | -| ir.cpp:2015:8:2015:8 | SideEffect | m2015_3 | -| ir.cpp:2015:8:2015:8 | SideEffect | m2015_3 | -| ir.cpp:2015:8:2015:8 | SideEffect | m2015_3 | -| ir.cpp:2015:8:2015:8 | SideEffect | m2015_8 | -| ir.cpp:2015:8:2015:8 | SideEffect | m2015_8 | -| ir.cpp:2015:8:2015:8 | SideEffect | m2015_8 | -| ir.cpp:2016:13:2016:29 | Address | &:r2016_5 | -| ir.cpp:2016:13:2016:29 | Address | &:r2016_5 | -| ir.cpp:2016:13:2016:29 | Address | &:r2016_7 | -| ir.cpp:2016:13:2016:29 | Address | &:r2016_7 | -| ir.cpp:2016:13:2016:29 | ChiPartial | partial:m2016_3 | -| ir.cpp:2016:13:2016:29 | ChiTotal | total:m2016_2 | -| ir.cpp:2016:13:2016:29 | Load | m2016_6 | -| ir.cpp:2016:13:2016:29 | SideEffect | m2016_3 | -| ir.cpp:2016:13:2016:29 | SideEffect | m2016_8 | -| ir.cpp:2019:6:2019:25 | ChiPartial | partial:m2019_3 | -| ir.cpp:2019:6:2019:25 | ChiTotal | total:m2019_2 | -| ir.cpp:2019:6:2019:25 | SideEffect | ~m2023_32 | -| ir.cpp:2019:32:2019:32 | Address | &:r2019_5 | -| ir.cpp:2019:52:2019:52 | Address | &:r2019_7 | -| ir.cpp:2019:72:2019:72 | Address | &:r2019_9 | -| ir.cpp:2019:92:2019:92 | Address | &:r2019_11 | -| ir.cpp:2020:5:2020:5 | Address | &:r2020_1 | -| ir.cpp:2020:5:2020:5 | Address | &:r2020_1 | -| ir.cpp:2020:5:2020:5 | Arg(this) | this:r2020_1 | -| ir.cpp:2020:5:2020:5 | ChiPartial | partial:m2020_16 | -| ir.cpp:2020:5:2020:5 | ChiTotal | total:m2019_12 | -| ir.cpp:2020:5:2020:5 | SideEffect | m2019_12 | -| ir.cpp:2020:7:2020:7 | CallTarget | func:r2020_2 | -| ir.cpp:2020:7:2020:7 | ChiPartial | partial:m2020_12 | -| ir.cpp:2020:7:2020:7 | ChiTotal | total:m2019_4 | -| ir.cpp:2020:7:2020:7 | SideEffect | ~m2019_4 | -| ir.cpp:2020:7:2020:7 | Unary | r2020_11 | -| ir.cpp:2020:9:2020:9 | Address | &:r2020_3 | -| ir.cpp:2020:9:2020:9 | Condition | r2020_4 | -| ir.cpp:2020:9:2020:9 | Load | m2019_6 | -| ir.cpp:2020:9:2020:17 | Address | &:r2020_7 | -| ir.cpp:2020:9:2020:17 | Address | &:r2020_10 | -| ir.cpp:2020:9:2020:17 | Address | &:r2020_20 | -| ir.cpp:2020:9:2020:17 | Address | &:r2020_23 | -| ir.cpp:2020:9:2020:17 | Arg(0) | 0:r2020_10 | -| ir.cpp:2020:9:2020:17 | Load | m2020_6 | -| ir.cpp:2020:9:2020:17 | Phi | from 2:m2020_21 | -| ir.cpp:2020:9:2020:17 | Phi | from 3:m2020_24 | -| ir.cpp:2020:9:2020:17 | SideEffect | ~m2020_13 | -| ir.cpp:2020:9:2020:17 | Unary | r2020_8 | -| ir.cpp:2020:9:2020:17 | Unary | r2020_9 | -| ir.cpp:2020:13:2020:13 | StoreValue | r2020_19 | -| ir.cpp:2020:17:2020:17 | StoreValue | r2020_22 | -| ir.cpp:2021:5:2021:5 | Address | &:r2021_1 | -| ir.cpp:2021:5:2021:5 | Address | &:r2021_1 | -| ir.cpp:2021:5:2021:5 | Arg(this) | this:r2021_1 | -| ir.cpp:2021:5:2021:5 | ChiPartial | partial:m2021_19 | -| ir.cpp:2021:5:2021:5 | ChiTotal | total:m2020_17 | -| ir.cpp:2021:5:2021:5 | SideEffect | m2020_17 | -| ir.cpp:2021:7:2021:7 | CallTarget | func:r2021_2 | -| ir.cpp:2021:7:2021:7 | ChiPartial | partial:m2021_15 | -| ir.cpp:2021:7:2021:7 | ChiTotal | total:m2021_7 | -| ir.cpp:2021:7:2021:7 | SideEffect | ~m2021_7 | -| ir.cpp:2021:7:2021:7 | Unary | r2021_14 | -| ir.cpp:2021:9:2021:9 | Address | &:r2021_4 | -| ir.cpp:2021:9:2021:9 | Address | &:r2021_9 | -| ir.cpp:2021:9:2021:9 | Address | &:r2021_35 | -| ir.cpp:2021:9:2021:9 | Address | &:r2021_46 | -| ir.cpp:2021:9:2021:9 | Condition | r2021_5 | -| ir.cpp:2021:9:2021:9 | Load | m2019_6 | -| ir.cpp:2021:9:2021:9 | Load | m2021_8 | -| ir.cpp:2021:9:2021:9 | Phi | from 5:m2021_36 | -| ir.cpp:2021:9:2021:9 | Phi | from 5:~m2021_30 | -| ir.cpp:2021:9:2021:9 | Phi | from 6:m2021_47 | -| ir.cpp:2021:9:2021:9 | Phi | from 6:~m2021_42 | -| ir.cpp:2021:9:2021:9 | StoreValue | r2021_10 | -| ir.cpp:2021:9:2021:34 | Address | &:r2021_3 | -| ir.cpp:2021:9:2021:34 | Address | &:r2021_13 | -| ir.cpp:2021:9:2021:34 | Arg(0) | 0:r2021_13 | -| ir.cpp:2021:9:2021:34 | SideEffect | ~m2021_11 | -| ir.cpp:2021:9:2021:34 | Unary | r2021_3 | -| ir.cpp:2021:9:2021:34 | Unary | r2021_12 | -| ir.cpp:2021:13:2021:13 | Address | &:r2021_22 | -| ir.cpp:2021:13:2021:13 | Address | &:r2021_22 | -| ir.cpp:2021:13:2021:13 | Address | &:r2021_22 | -| ir.cpp:2021:13:2021:13 | Address | &:r2021_27 | -| ir.cpp:2021:13:2021:13 | Arg(0) | 0:r2021_27 | -| ir.cpp:2021:13:2021:13 | Arg(this) | this:r2021_22 | -| ir.cpp:2021:13:2021:13 | CallTarget | func:r2021_24 | -| ir.cpp:2021:13:2021:13 | ChiPartial | partial:m2021_29 | -| ir.cpp:2021:13:2021:13 | ChiPartial | partial:m2021_32 | -| ir.cpp:2021:13:2021:13 | ChiTotal | total:m2020_13 | -| ir.cpp:2021:13:2021:13 | ChiTotal | total:m2021_23 | -| ir.cpp:2021:13:2021:13 | Load | m2021_33 | -| ir.cpp:2021:13:2021:13 | SideEffect | ~m2019_8 | -| ir.cpp:2021:13:2021:13 | SideEffect | ~m2020_13 | -| ir.cpp:2021:13:2021:13 | StoreValue | r2021_34 | -| ir.cpp:2021:13:2021:13 | Unary | r2021_25 | -| ir.cpp:2021:13:2021:13 | Unary | r2021_26 | -| ir.cpp:2021:17:2021:34 | Address | &:r2021_37 | -| ir.cpp:2021:17:2021:34 | Address | &:r2021_37 | -| ir.cpp:2021:17:2021:34 | Address | &:r2021_37 | -| ir.cpp:2021:17:2021:34 | Arg(this) | this:r2021_37 | -| ir.cpp:2021:17:2021:34 | CallTarget | func:r2021_39 | -| ir.cpp:2021:17:2021:34 | ChiPartial | partial:m2021_41 | -| ir.cpp:2021:17:2021:34 | ChiPartial | partial:m2021_43 | -| ir.cpp:2021:17:2021:34 | ChiTotal | total:m2020_13 | -| ir.cpp:2021:17:2021:34 | ChiTotal | total:m2021_38 | -| ir.cpp:2021:17:2021:34 | Load | m2021_44 | -| ir.cpp:2021:17:2021:34 | SideEffect | ~m2020_13 | -| ir.cpp:2021:17:2021:34 | StoreValue | r2021_45 | -| ir.cpp:2022:5:2022:5 | Address | &:r2022_1 | -| ir.cpp:2022:5:2022:5 | Address | &:r2022_1 | -| ir.cpp:2022:5:2022:5 | Arg(this) | this:r2022_1 | -| ir.cpp:2022:5:2022:5 | ChiPartial | partial:m2022_19 | -| ir.cpp:2022:5:2022:5 | ChiTotal | total:m2021_20 | -| ir.cpp:2022:5:2022:5 | SideEffect | m2021_20 | -| ir.cpp:2022:7:2022:7 | CallTarget | func:r2022_2 | -| ir.cpp:2022:7:2022:7 | ChiPartial | partial:m2022_15 | -| ir.cpp:2022:7:2022:7 | ChiTotal | total:m2022_7 | -| ir.cpp:2022:7:2022:7 | SideEffect | ~m2022_7 | -| ir.cpp:2022:7:2022:7 | Unary | r2022_14 | -| ir.cpp:2022:9:2022:9 | Address | &:r2022_4 | -| ir.cpp:2022:9:2022:9 | Address | &:r2022_9 | -| ir.cpp:2022:9:2022:9 | Address | &:r2022_31 | -| ir.cpp:2022:9:2022:9 | Address | &:r2022_42 | -| ir.cpp:2022:9:2022:9 | Condition | r2022_5 | -| ir.cpp:2022:9:2022:9 | Load | m2019_6 | -| ir.cpp:2022:9:2022:9 | Load | m2022_8 | -| ir.cpp:2022:9:2022:9 | Phi | from 8:m2022_32 | -| ir.cpp:2022:9:2022:9 | Phi | from 8:~m2022_27 | -| ir.cpp:2022:9:2022:9 | Phi | from 9:m2022_43 | -| ir.cpp:2022:9:2022:9 | Phi | from 9:~m2022_38 | -| ir.cpp:2022:9:2022:9 | StoreValue | r2022_10 | -| ir.cpp:2022:9:2022:51 | Address | &:r2022_3 | -| ir.cpp:2022:9:2022:51 | Address | &:r2022_13 | -| ir.cpp:2022:9:2022:51 | Arg(0) | 0:r2022_13 | -| ir.cpp:2022:9:2022:51 | SideEffect | ~m2022_11 | -| ir.cpp:2022:9:2022:51 | Unary | r2022_3 | -| ir.cpp:2022:9:2022:51 | Unary | r2022_12 | -| ir.cpp:2022:13:2022:30 | Address | &:r2022_22 | -| ir.cpp:2022:13:2022:30 | Address | &:r2022_22 | -| ir.cpp:2022:13:2022:30 | Address | &:r2022_22 | -| ir.cpp:2022:13:2022:30 | Arg(this) | this:r2022_22 | -| ir.cpp:2022:13:2022:30 | CallTarget | func:r2022_24 | -| ir.cpp:2022:13:2022:30 | ChiPartial | partial:m2022_26 | -| ir.cpp:2022:13:2022:30 | ChiPartial | partial:m2022_28 | -| ir.cpp:2022:13:2022:30 | ChiTotal | total:m2021_16 | -| ir.cpp:2022:13:2022:30 | ChiTotal | total:m2022_23 | -| ir.cpp:2022:13:2022:30 | Load | m2022_29 | -| ir.cpp:2022:13:2022:30 | SideEffect | ~m2021_16 | -| ir.cpp:2022:13:2022:30 | StoreValue | r2022_30 | -| ir.cpp:2022:34:2022:51 | Address | &:r2022_33 | -| ir.cpp:2022:34:2022:51 | Address | &:r2022_33 | -| ir.cpp:2022:34:2022:51 | Address | &:r2022_33 | -| ir.cpp:2022:34:2022:51 | Arg(this) | this:r2022_33 | -| ir.cpp:2022:34:2022:51 | CallTarget | func:r2022_35 | -| ir.cpp:2022:34:2022:51 | ChiPartial | partial:m2022_37 | -| ir.cpp:2022:34:2022:51 | ChiPartial | partial:m2022_39 | -| ir.cpp:2022:34:2022:51 | ChiTotal | total:m2021_16 | -| ir.cpp:2022:34:2022:51 | ChiTotal | total:m2022_34 | -| ir.cpp:2022:34:2022:51 | Load | m2022_40 | -| ir.cpp:2022:34:2022:51 | SideEffect | ~m2021_16 | -| ir.cpp:2022:34:2022:51 | StoreValue | r2022_41 | -| ir.cpp:2023:5:2023:19 | ChiPartial | partial:m2023_35 | -| ir.cpp:2023:5:2023:19 | ChiTotal | total:m2023_17 | -| ir.cpp:2023:5:2023:19 | SideEffect | m2023_17 | -| ir.cpp:2023:6:2023:6 | Address | &:r2023_1 | -| ir.cpp:2023:6:2023:6 | Address | &:r2023_1 | -| ir.cpp:2023:6:2023:6 | Arg(this) | this:r2023_1 | -| ir.cpp:2023:6:2023:6 | ChiPartial | partial:m2023_16 | -| ir.cpp:2023:6:2023:6 | ChiTotal | total:m2022_20 | -| ir.cpp:2023:6:2023:6 | SideEffect | m2022_20 | -| ir.cpp:2023:8:2023:8 | CallTarget | func:r2023_2 | -| ir.cpp:2023:8:2023:8 | ChiPartial | partial:m2023_12 | -| ir.cpp:2023:8:2023:8 | ChiTotal | total:m2022_16 | -| ir.cpp:2023:8:2023:8 | SideEffect | ~m2022_16 | -| ir.cpp:2023:8:2023:8 | Unary | r2023_11 | -| ir.cpp:2023:8:2023:19 | Address | &:r2023_18 | -| ir.cpp:2023:8:2023:19 | Address | &:r2023_18 | -| ir.cpp:2023:8:2023:19 | Arg(this) | this:r2023_18 | -| ir.cpp:2023:10:2023:10 | Address | &:r2023_3 | -| ir.cpp:2023:10:2023:10 | Condition | r2023_4 | -| ir.cpp:2023:10:2023:10 | Load | m2019_6 | -| ir.cpp:2023:10:2023:18 | Address | &:r2023_7 | -| ir.cpp:2023:10:2023:18 | Address | &:r2023_10 | -| ir.cpp:2023:10:2023:18 | Address | &:r2023_39 | -| ir.cpp:2023:10:2023:18 | Address | &:r2023_42 | -| ir.cpp:2023:10:2023:18 | Arg(0) | 0:r2023_10 | -| ir.cpp:2023:10:2023:18 | Load | m2023_6 | -| ir.cpp:2023:10:2023:18 | Phi | from 11:m2023_40 | -| ir.cpp:2023:10:2023:18 | Phi | from 12:m2023_43 | -| ir.cpp:2023:10:2023:18 | SideEffect | ~m2023_13 | -| ir.cpp:2023:10:2023:18 | Unary | r2023_8 | -| ir.cpp:2023:10:2023:18 | Unary | r2023_9 | -| ir.cpp:2023:14:2023:14 | StoreValue | r2023_38 | -| ir.cpp:2023:18:2023:18 | StoreValue | r2023_41 | -| ir.cpp:2023:21:2023:21 | CallTarget | func:r2023_19 | -| ir.cpp:2023:21:2023:21 | ChiPartial | partial:m2023_31 | -| ir.cpp:2023:21:2023:21 | ChiTotal | total:m2023_25 | -| ir.cpp:2023:21:2023:21 | SideEffect | ~m2023_25 | -| ir.cpp:2023:21:2023:21 | Unary | r2023_30 | -| ir.cpp:2023:23:2023:40 | Address | &:r2023_20 | -| ir.cpp:2023:23:2023:40 | Address | &:r2023_20 | -| ir.cpp:2023:23:2023:40 | Address | &:r2023_29 | -| ir.cpp:2023:23:2023:40 | Arg(0) | 0:r2023_29 | -| ir.cpp:2023:23:2023:40 | Arg(this) | this:r2023_20 | -| ir.cpp:2023:23:2023:40 | CallTarget | func:r2023_22 | -| ir.cpp:2023:23:2023:40 | ChiPartial | partial:m2023_24 | -| ir.cpp:2023:23:2023:40 | ChiPartial | partial:m2023_26 | -| ir.cpp:2023:23:2023:40 | ChiTotal | total:m2023_13 | -| ir.cpp:2023:23:2023:40 | ChiTotal | total:m2023_21 | -| ir.cpp:2023:23:2023:40 | SideEffect | ~m2023_13 | -| ir.cpp:2023:23:2023:40 | SideEffect | ~m2023_27 | -| ir.cpp:2023:23:2023:40 | Unary | r2023_20 | -| ir.cpp:2023:23:2023:40 | Unary | r2023_28 | -| ir.cpp:2028:14:2028:22 | Address | &:r2028_7 | -| ir.cpp:2028:14:2028:22 | ChiPartial | partial:m2028_3 | -| ir.cpp:2028:14:2028:22 | ChiTotal | total:m2028_2 | -| ir.cpp:2028:14:2028:22 | Load | m2033_2 | -| ir.cpp:2028:14:2028:22 | SideEffect | ~m2030_6 | -| ir.cpp:2028:37:2028:37 | Address | &:r2028_5 | -| ir.cpp:2029:16:2029:16 | Address | &:r2029_1 | -| ir.cpp:2030:3:2030:3 | Address | &:r2030_10 | -| ir.cpp:2030:7:2030:7 | Address | &:r2030_1 | -| ir.cpp:2030:7:2030:7 | Left | r2030_2 | -| ir.cpp:2030:7:2030:7 | Load | m2028_6 | -| ir.cpp:2030:7:2030:13 | Condition | r2030_4 | -| ir.cpp:2030:7:2032:28 | Address | &:r2030_8 | -| ir.cpp:2030:7:2032:28 | Address | &:r2030_12 | -| ir.cpp:2030:7:2032:28 | Address | &:r2030_14 | -| ir.cpp:2030:7:2032:28 | Load | m2030_7 | -| ir.cpp:2030:7:2032:28 | Phi | from 2:m2030_13 | -| ir.cpp:2030:7:2032:28 | Phi | from 2:~m2031_6 | -| ir.cpp:2030:7:2032:28 | Phi | from 3:m2030_15 | -| ir.cpp:2030:7:2032:28 | Phi | from 3:~m2032_6 | -| ir.cpp:2030:7:2032:28 | StoreValue | r2030_9 | -| ir.cpp:2030:11:2030:13 | Right | r2030_3 | -| ir.cpp:2031:6:2031:20 | CallTarget | func:r2031_1 | -| ir.cpp:2031:6:2031:20 | ChiPartial | partial:m2031_5 | -| ir.cpp:2031:6:2031:20 | ChiTotal | total:m2028_4 | -| ir.cpp:2031:6:2031:20 | SideEffect | ~m2028_4 | -| ir.cpp:2031:6:2031:26 | StoreValue | r2031_9 | -| ir.cpp:2031:22:2031:22 | Address | &:r2031_2 | -| ir.cpp:2031:22:2031:22 | Arg(0) | 0:r2031_3 | -| ir.cpp:2031:22:2031:22 | Load | m2028_6 | -| ir.cpp:2031:26:2031:26 | Address | &:r2031_7 | -| ir.cpp:2031:26:2031:26 | Load | m2028_6 | -| ir.cpp:2031:26:2031:26 | Unary | r2031_8 | -| ir.cpp:2032:5:2032:28 | StoreValue | r2032_9 | -| ir.cpp:2032:6:2032:20 | CallTarget | func:r2032_1 | -| ir.cpp:2032:6:2032:20 | ChiPartial | partial:m2032_5 | -| ir.cpp:2032:6:2032:20 | ChiTotal | total:m2028_4 | -| ir.cpp:2032:6:2032:20 | SideEffect | ~m2028_4 | -| ir.cpp:2032:6:2032:27 | Unary | r2032_8 | -| ir.cpp:2032:22:2032:22 | Address | &:r2032_2 | -| ir.cpp:2032:22:2032:22 | Arg(0) | 0:r2032_3 | -| ir.cpp:2032:22:2032:22 | Load | m2028_6 | -| ir.cpp:2032:26:2032:27 | Unary | r2032_7 | -| ir.cpp:2033:1:2033:1 | Address | &:r2033_1 | -| ir.cpp:2035:6:2035:17 | ChiPartial | partial:m2035_3 | -| ir.cpp:2035:6:2035:17 | ChiTotal | total:m2035_2 | -| ir.cpp:2035:6:2035:17 | SideEffect | ~m2038_6 | -| ir.cpp:2036:8:2036:8 | Address | &:r2036_1 | -| ir.cpp:2036:12:2036:18 | Address | &:r2036_4 | -| ir.cpp:2036:12:2036:18 | Arg(0) | 0:r2036_3 | -| ir.cpp:2036:12:2036:18 | CallTarget | func:r2036_2 | -| ir.cpp:2036:12:2036:18 | ChiPartial | partial:m2036_5 | -| ir.cpp:2036:12:2036:18 | ChiTotal | total:m2035_4 | -| ir.cpp:2036:12:2036:18 | SideEffect | ~m2035_4 | -| ir.cpp:2036:12:2036:18 | StoreValue | r2036_8 | -| ir.cpp:2036:12:2036:18 | Unary | r2036_4 | -| ir.cpp:2037:3:2037:4 | Address | &:r2037_4 | -| ir.cpp:2037:3:2037:8 | ChiPartial | partial:m2037_5 | -| ir.cpp:2037:3:2037:8 | ChiTotal | total:m2036_7 | -| ir.cpp:2037:4:2037:4 | Address | &:r2037_2 | -| ir.cpp:2037:4:2037:4 | Load | m2036_9 | -| ir.cpp:2037:4:2037:4 | Unary | r2037_3 | -| ir.cpp:2037:8:2037:8 | StoreValue | r2037_1 | -| ir.cpp:2038:3:2038:10 | CallTarget | func:r2038_1 | -| ir.cpp:2038:3:2038:10 | ChiPartial | partial:m2038_5 | -| ir.cpp:2038:3:2038:10 | ChiTotal | total:m2036_6 | -| ir.cpp:2038:3:2038:10 | SideEffect | ~m2036_6 | -| ir.cpp:2038:10:2038:10 | Address | &:r2038_2 | -| ir.cpp:2038:10:2038:10 | Arg(0) | 0:r2038_3 | -| ir.cpp:2038:10:2038:10 | Load | m2036_9 | -| ir.cpp:2041:7:2041:7 | Address | &:r2041_5 | -| ir.cpp:2041:7:2041:7 | Address | &:r2041_5 | -| ir.cpp:2041:7:2041:7 | Address | &:r2041_7 | -| ir.cpp:2041:7:2041:7 | Address | &:r2041_7 | -| ir.cpp:2041:7:2041:7 | ChiPartial | partial:m2041_3 | -| ir.cpp:2041:7:2041:7 | ChiTotal | total:m2041_2 | -| ir.cpp:2041:7:2041:7 | Load | m2041_6 | -| ir.cpp:2041:7:2041:7 | SideEffect | m2041_3 | -| ir.cpp:2041:7:2041:7 | SideEffect | m2041_8 | -| ir.cpp:2043:10:2043:24 | ChiPartial | partial:m2043_3 | -| ir.cpp:2043:10:2043:24 | ChiTotal | total:m2043_2 | -| ir.cpp:2043:10:2043:24 | SideEffect | m2043_3 | -| ir.cpp:2043:32:2043:32 | Address | &:r2043_5 | -| ir.cpp:2043:32:2043:32 | Address | &:r2043_5 | -| ir.cpp:2043:32:2043:32 | Address | &:r2043_7 | -| ir.cpp:2043:32:2043:32 | Address | &:r2043_7 | -| ir.cpp:2043:32:2043:32 | Load | m2043_6 | -| ir.cpp:2043:32:2043:32 | SideEffect | m2043_8 | -| ir.cpp:2045:13:2045:18 | Address | &:r2045_5 | -| ir.cpp:2045:13:2045:18 | Address | &:r2045_5 | -| ir.cpp:2045:13:2045:18 | Address | &:r2045_7 | -| ir.cpp:2045:13:2045:18 | Address | &:r2045_7 | -| ir.cpp:2045:13:2045:18 | ChiPartial | partial:m2045_3 | -| ir.cpp:2045:13:2045:18 | ChiTotal | total:m2045_2 | -| ir.cpp:2045:13:2045:18 | Load | m2045_6 | -| ir.cpp:2045:13:2045:18 | SideEffect | m2045_3 | -| ir.cpp:2045:13:2045:18 | SideEffect | m2045_8 | -| ir.cpp:2048:7:2048:7 | Address | &:r2048_5 | -| ir.cpp:2048:7:2048:7 | Address | &:r2048_5 | -| ir.cpp:2048:7:2048:7 | Address | &:r2048_7 | -| ir.cpp:2048:7:2048:7 | Address | &:r2048_7 | -| ir.cpp:2048:7:2048:7 | Address | &:r2048_9 | -| ir.cpp:2048:7:2048:7 | Arg(this) | this:r2048_9 | -| ir.cpp:2048:7:2048:7 | CallTarget | func:r2048_10 | -| ir.cpp:2048:7:2048:7 | ChiPartial | partial:m2048_3 | -| ir.cpp:2048:7:2048:7 | ChiPartial | partial:m2048_12 | -| ir.cpp:2048:7:2048:7 | ChiPartial | partial:m2048_14 | -| ir.cpp:2048:7:2048:7 | ChiTotal | total:m2048_2 | -| ir.cpp:2048:7:2048:7 | ChiTotal | total:m2048_4 | -| ir.cpp:2048:7:2048:7 | ChiTotal | total:m2048_8 | -| ir.cpp:2048:7:2048:7 | Load | m2048_6 | -| ir.cpp:2048:7:2048:7 | SideEffect | m2048_15 | -| ir.cpp:2048:7:2048:7 | SideEffect | ~m2048_4 | -| ir.cpp:2048:7:2048:7 | SideEffect | ~m2048_13 | -| ir.cpp:2048:7:2048:7 | Unary | m2048_6 | -| ir.cpp:2051:5:2051:13 | Address | &:r2051_5 | -| ir.cpp:2051:5:2051:13 | Address | &:r2051_5 | -| ir.cpp:2051:5:2051:13 | Address | &:r2051_7 | -| ir.cpp:2051:5:2051:13 | Address | &:r2051_7 | -| ir.cpp:2051:5:2051:13 | ChiPartial | partial:m2051_3 | -| ir.cpp:2051:5:2051:13 | ChiTotal | total:m2051_2 | -| ir.cpp:2051:5:2051:13 | Load | m2051_6 | -| ir.cpp:2051:5:2051:13 | SideEffect | m2051_8 | -| ir.cpp:2051:5:2051:13 | SideEffect | ~m2051_14 | -| ir.cpp:2051:5:2051:13 | Unary | m2051_6 | -| ir.cpp:2051:18:2051:18 | Arg(this) | this:r2051_10 | -| ir.cpp:2051:18:2051:18 | CallTarget | func:r2051_11 | -| ir.cpp:2051:18:2051:18 | ChiPartial | partial:m2051_13 | -| ir.cpp:2051:18:2051:18 | ChiTotal | total:m2051_4 | -| ir.cpp:2051:18:2051:18 | SideEffect | ~m2051_4 | -| ir.cpp:2053:10:2053:24 | ChiPartial | partial:m2053_3 | -| ir.cpp:2053:10:2053:24 | ChiTotal | total:m2053_2 | -| ir.cpp:2053:10:2053:24 | SideEffect | m2053_3 | -| ir.cpp:2053:32:2053:32 | Address | &:r2053_5 | -| ir.cpp:2053:32:2053:32 | Address | &:r2053_5 | -| ir.cpp:2053:32:2053:32 | Address | &:r2053_7 | -| ir.cpp:2053:32:2053:32 | Address | &:r2053_7 | -| ir.cpp:2053:32:2053:32 | Load | m2053_6 | -| ir.cpp:2053:32:2053:32 | SideEffect | m2053_8 | -| ir.cpp:2058:5:2058:18 | Address | &:r2058_5 | -| ir.cpp:2058:5:2058:18 | ChiPartial | partial:m2058_3 | -| ir.cpp:2058:5:2058:18 | ChiTotal | total:m2058_2 | -| ir.cpp:2058:5:2058:18 | Load | m2068_2 | -| ir.cpp:2058:5:2058:18 | SideEffect | ~m2067_6 | -| ir.cpp:2060:12:2060:13 | Address | &:r2060_1 | -| ir.cpp:2060:17:2060:27 | Address | &:r2060_4 | -| ir.cpp:2060:17:2060:27 | Address | &:r2060_8 | -| ir.cpp:2060:17:2060:27 | Arg(0) | 0:r2060_3 | -| ir.cpp:2060:17:2060:27 | Arg(this) | this:r2060_8 | -| ir.cpp:2060:17:2060:27 | CallTarget | func:r2060_2 | -| ir.cpp:2060:17:2060:27 | CallTarget | func:r2060_9 | -| ir.cpp:2060:17:2060:27 | ChiPartial | partial:m2060_5 | -| ir.cpp:2060:17:2060:27 | ChiPartial | partial:m2060_11 | -| ir.cpp:2060:17:2060:27 | ChiPartial | partial:m2060_13 | -| ir.cpp:2060:17:2060:27 | ChiTotal | total:m2058_4 | -| ir.cpp:2060:17:2060:27 | ChiTotal | total:m2060_6 | -| ir.cpp:2060:17:2060:27 | ChiTotal | total:m2060_7 | -| ir.cpp:2060:17:2060:27 | SideEffect | ~m2058_4 | -| ir.cpp:2060:17:2060:27 | SideEffect | ~m2060_6 | -| ir.cpp:2060:17:2060:27 | StoreValue | r2060_8 | -| ir.cpp:2060:17:2060:27 | Unary | r2060_4 | -| ir.cpp:2061:5:2061:13 | CallTarget | func:r2061_1 | -| ir.cpp:2061:5:2061:13 | ChiPartial | partial:m2061_5 | -| ir.cpp:2061:5:2061:13 | ChiTotal | total:m2060_12 | -| ir.cpp:2061:5:2061:13 | SideEffect | ~m2060_12 | -| ir.cpp:2061:12:2061:13 | Address | &:r2061_2 | -| ir.cpp:2061:12:2061:13 | Arg(0) | 0:r2061_3 | -| ir.cpp:2061:12:2061:13 | Load | m2060_15 | -| ir.cpp:2063:12:2063:13 | Address | &:r2063_1 | -| ir.cpp:2063:17:2063:30 | Address | &:r2063_4 | -| ir.cpp:2063:17:2063:30 | Address | &:r2063_8 | -| ir.cpp:2063:17:2063:30 | Arg(0) | 0:r2063_3 | -| ir.cpp:2063:17:2063:30 | Arg(this) | this:r2063_8 | -| ir.cpp:2063:17:2063:30 | CallTarget | func:r2063_2 | -| ir.cpp:2063:17:2063:30 | CallTarget | func:r2063_9 | -| ir.cpp:2063:17:2063:30 | ChiPartial | partial:m2063_5 | -| ir.cpp:2063:17:2063:30 | ChiPartial | partial:m2063_11 | -| ir.cpp:2063:17:2063:30 | ChiPartial | partial:m2063_13 | -| ir.cpp:2063:17:2063:30 | ChiTotal | total:m2061_6 | -| ir.cpp:2063:17:2063:30 | ChiTotal | total:m2063_6 | -| ir.cpp:2063:17:2063:30 | ChiTotal | total:m2063_7 | -| ir.cpp:2063:17:2063:30 | SideEffect | ~m2061_6 | -| ir.cpp:2063:17:2063:30 | SideEffect | ~m2063_6 | -| ir.cpp:2063:17:2063:30 | StoreValue | r2063_15 | -| ir.cpp:2063:17:2063:30 | Unary | r2063_4 | -| ir.cpp:2063:17:2063:30 | Unary | r2063_8 | -| ir.cpp:2064:5:2064:13 | CallTarget | func:r2064_1 | -| ir.cpp:2064:5:2064:13 | ChiPartial | partial:m2064_5 | -| ir.cpp:2064:5:2064:13 | ChiTotal | total:m2063_12 | -| ir.cpp:2064:5:2064:13 | SideEffect | ~m2063_12 | -| ir.cpp:2064:12:2064:13 | Address | &:r2064_2 | -| ir.cpp:2064:12:2064:13 | Arg(0) | 0:r2064_3 | -| ir.cpp:2064:12:2064:13 | Load | m2063_16 | -| ir.cpp:2066:15:2066:15 | Address | &:r2066_1 | -| ir.cpp:2066:19:2066:32 | Address | &:r2066_4 | -| ir.cpp:2066:19:2066:32 | Address | &:r2066_8 | -| ir.cpp:2066:19:2066:32 | Arg(0) | 0:r2066_3 | -| ir.cpp:2066:19:2066:32 | Arg(this) | this:r2066_8 | -| ir.cpp:2066:19:2066:32 | CallTarget | func:r2066_2 | -| ir.cpp:2066:19:2066:32 | CallTarget | func:r2066_9 | -| ir.cpp:2066:19:2066:32 | ChiPartial | partial:m2066_5 | -| ir.cpp:2066:19:2066:32 | ChiPartial | partial:m2066_11 | -| ir.cpp:2066:19:2066:32 | ChiPartial | partial:m2066_13 | -| ir.cpp:2066:19:2066:32 | ChiTotal | total:m2064_6 | -| ir.cpp:2066:19:2066:32 | ChiTotal | total:m2066_6 | -| ir.cpp:2066:19:2066:32 | ChiTotal | total:m2066_7 | -| ir.cpp:2066:19:2066:32 | SideEffect | ~m2064_6 | -| ir.cpp:2066:19:2066:32 | SideEffect | ~m2066_6 | -| ir.cpp:2066:19:2066:32 | StoreValue | r2066_8 | -| ir.cpp:2066:19:2066:32 | Unary | r2066_4 | -| ir.cpp:2067:5:2067:12 | CallTarget | func:r2067_1 | -| ir.cpp:2067:5:2067:12 | ChiPartial | partial:m2067_5 | -| ir.cpp:2067:5:2067:12 | ChiTotal | total:m2066_12 | -| ir.cpp:2067:5:2067:12 | SideEffect | ~m2066_12 | -| ir.cpp:2067:12:2067:12 | Address | &:r2067_2 | -| ir.cpp:2067:12:2067:12 | Arg(0) | 0:r2067_3 | -| ir.cpp:2067:12:2067:12 | Load | m2066_15 | -| ir.cpp:2068:1:2068:1 | Address | &:r2068_1 | -| ir.cpp:2072:6:2072:26 | ChiPartial | partial:m2072_3 | -| ir.cpp:2072:6:2072:26 | ChiTotal | total:m2072_2 | -| ir.cpp:2072:6:2072:26 | SideEffect | ~m2074_5 | -| ir.cpp:2073:13:2073:13 | Address | &:r2073_1 | -| ir.cpp:2073:16:2073:19 | StoreValue | r2073_2 | -| ir.cpp:2074:3:2074:27 | CallTarget | func:r2074_1 | -| ir.cpp:2074:3:2074:27 | ChiPartial | partial:m2074_4 | -| ir.cpp:2074:3:2074:27 | ChiTotal | total:m2072_4 | -| ir.cpp:2074:3:2074:27 | SideEffect | ~m2072_4 | -| ir.cpp:2074:29:2074:29 | Arg(0) | 0:r2074_2 | -| ir.cpp:2079:5:2079:11 | Address | &:r2079_6 | -| ir.cpp:2079:5:2079:11 | ChiPartial | partial:m2079_3 | -| ir.cpp:2079:5:2079:11 | ChiTotal | total:m2079_2 | -| ir.cpp:2079:5:2079:11 | Load | m2084_4 | -| ir.cpp:2079:5:2079:11 | SideEffect | ~m2083_4 | -| ir.cpp:2080:9:2080:9 | Address | &:r2080_1 | -| ir.cpp:2080:13:2080:15 | CallTarget | func:r2080_2 | -| ir.cpp:2080:13:2080:15 | ChiPartial | partial:m2080_6 | -| ir.cpp:2080:13:2080:15 | ChiTotal | total:m2079_4 | -| ir.cpp:2080:13:2080:15 | SideEffect | ~m2079_4 | -| ir.cpp:2080:13:2080:15 | StoreValue | r2080_5 | -| ir.cpp:2080:17:2080:17 | Arg(0) | 0:r2080_3 | -| ir.cpp:2080:19:2080:19 | Arg(1) | 1:r2080_4 | -| ir.cpp:2081:9:2081:9 | Address | &:r2081_1 | -| ir.cpp:2081:9:2081:9 | Left | r2081_2 | -| ir.cpp:2081:9:2081:9 | Load | m2080_8 | -| ir.cpp:2081:9:2081:14 | Condition | r2081_4 | -| ir.cpp:2081:14:2081:14 | Right | r2081_3 | -| ir.cpp:2082:9:2082:12 | CallTarget | func:r2082_1 | -| ir.cpp:2082:9:2082:12 | ChiPartial | partial:m2082_4 | -| ir.cpp:2082:9:2082:12 | ChiTotal | total:m2080_7 | -| ir.cpp:2082:9:2082:12 | SideEffect | ~m2080_7 | -| ir.cpp:2082:14:2082:14 | Arg(0) | 0:r2082_2 | -| ir.cpp:2083:5:2083:12 | CallTarget | func:r2083_1 | -| ir.cpp:2083:5:2083:12 | ChiPartial | partial:m2083_3 | -| ir.cpp:2083:5:2083:12 | ChiTotal | total:m2080_7 | -| ir.cpp:2083:5:2083:12 | SideEffect | ~m2080_7 | -| ir.cpp:2084:5:2084:13 | Address | &:r2084_1 | -| ir.cpp:2084:12:2084:12 | Address | &:r2084_2 | -| ir.cpp:2084:12:2084:12 | Load | m2080_8 | -| ir.cpp:2084:12:2084:12 | StoreValue | r2084_3 | -| ir.cpp:2087:6:2087:17 | ChiPartial | partial:m2087_3 | -| ir.cpp:2087:6:2087:17 | ChiTotal | total:m2087_2 | -| ir.cpp:2088:5:2088:12 | CallTarget | func:r2088_1 | -| ir.cpp:2088:5:2088:12 | ChiPartial | partial:m2088_3 | -| ir.cpp:2088:5:2088:12 | ChiTotal | total:m2087_4 | -| ir.cpp:2088:5:2088:12 | SideEffect | ~m2087_4 | -| ir.cpp:2089:5:2089:8 | CallTarget | func:r2089_1 | -| ir.cpp:2089:5:2089:8 | ChiPartial | partial:m2089_4 | -| ir.cpp:2089:5:2089:8 | ChiTotal | total:m2088_4 | -| ir.cpp:2089:5:2089:8 | SideEffect | ~m2088_4 | -| ir.cpp:2089:10:2089:10 | Arg(0) | 0:r2089_2 | -| ir.cpp:2092:5:2092:16 | Address | &:r2092_6 | -| ir.cpp:2092:5:2092:16 | ChiPartial | partial:m2092_3 | -| ir.cpp:2092:5:2092:16 | ChiTotal | total:m2092_2 | -| ir.cpp:2092:5:2092:16 | Load | m2097_4 | -| ir.cpp:2092:5:2092:16 | SideEffect | ~m2096_4 | -| ir.cpp:2093:9:2093:9 | Address | &:r2093_1 | -| ir.cpp:2093:13:2093:15 | CallTarget | func:r2093_2 | -| ir.cpp:2093:13:2093:15 | ChiPartial | partial:m2093_6 | -| ir.cpp:2093:13:2093:15 | ChiTotal | total:m2092_4 | -| ir.cpp:2093:13:2093:15 | SideEffect | ~m2092_4 | -| ir.cpp:2093:13:2093:15 | StoreValue | r2093_5 | -| ir.cpp:2093:17:2093:17 | Arg(0) | 0:r2093_3 | -| ir.cpp:2093:19:2093:19 | Arg(1) | 1:r2093_4 | -| ir.cpp:2094:9:2094:9 | Address | &:r2094_1 | -| ir.cpp:2094:9:2094:9 | Left | r2094_2 | -| ir.cpp:2094:9:2094:9 | Load | m2093_8 | -| ir.cpp:2094:9:2094:14 | Condition | r2094_4 | -| ir.cpp:2094:14:2094:14 | Right | r2094_3 | -| ir.cpp:2095:9:2095:20 | CallTarget | func:r2095_1 | -| ir.cpp:2096:5:2096:12 | CallTarget | func:r2096_1 | -| ir.cpp:2096:5:2096:12 | ChiPartial | partial:m2096_3 | -| ir.cpp:2096:5:2096:12 | ChiTotal | total:m2093_7 | -| ir.cpp:2096:5:2096:12 | SideEffect | ~m2093_7 | -| ir.cpp:2097:5:2097:13 | Address | &:r2097_1 | -| ir.cpp:2097:12:2097:12 | Address | &:r2097_2 | -| ir.cpp:2097:12:2097:12 | Load | m2093_8 | -| ir.cpp:2097:12:2097:12 | StoreValue | r2097_3 | -| ir.cpp:2100:6:2100:24 | ChiPartial | partial:m2100_3 | -| ir.cpp:2100:6:2100:24 | ChiTotal | total:m2100_2 | -| ir.cpp:2100:6:2100:24 | SideEffect | ~m2106_8 | -| ir.cpp:2100:33:2100:33 | Address | &:r2100_5 | -| ir.cpp:2101:3:2101:12 | Address | &:r2101_6 | -| ir.cpp:2101:3:2101:12 | Arg(0) | 0:r2101_5 | -| ir.cpp:2101:3:2101:12 | CallTarget | func:r2101_1 | -| ir.cpp:2101:3:2101:12 | ChiPartial | partial:m2101_7 | -| ir.cpp:2101:3:2101:12 | ChiTotal | total:m2100_4 | -| ir.cpp:2101:3:2101:12 | Right | r2101_4 | -| ir.cpp:2101:3:2101:12 | SideEffect | ~m2100_4 | -| ir.cpp:2101:3:2101:12 | Unary | r2101_6 | -| ir.cpp:2101:11:2101:11 | Address | &:r2101_2 | -| ir.cpp:2101:11:2101:11 | Left | r2101_3 | -| ir.cpp:2101:11:2101:11 | Load | m2100_6 | -| ir.cpp:2102:3:2102:18 | Address | &:r2102_7 | -| ir.cpp:2102:3:2102:18 | Arg(0) | 0:r2102_5 | -| ir.cpp:2102:3:2102:18 | CallTarget | func:r2102_1 | -| ir.cpp:2102:3:2102:18 | ChiPartial | partial:m2102_8 | -| ir.cpp:2102:3:2102:18 | ChiTotal | total:m2101_8 | -| ir.cpp:2102:3:2102:18 | Right | r2102_4 | -| ir.cpp:2102:3:2102:18 | SideEffect | ~m2101_8 | -| ir.cpp:2102:3:2102:18 | Unary | r2102_7 | -| ir.cpp:2102:7:2102:10 | Arg(1) | 1:r2102_6 | -| ir.cpp:2102:17:2102:17 | Address | &:r2102_2 | -| ir.cpp:2102:17:2102:17 | Left | r2102_3 | -| ir.cpp:2102:17:2102:17 | Load | m2100_6 | -| ir.cpp:2103:3:2103:15 | Address | &:r2103_6 | -| ir.cpp:2103:3:2103:15 | Arg(0) | 0:r2103_5 | -| ir.cpp:2103:3:2103:15 | CallTarget | func:r2103_1 | -| ir.cpp:2103:3:2103:15 | ChiPartial | partial:m2103_7 | -| ir.cpp:2103:3:2103:15 | ChiTotal | total:m2102_9 | -| ir.cpp:2103:3:2103:15 | Right | r2103_4 | -| ir.cpp:2103:3:2103:15 | SideEffect | ~m2102_9 | -| ir.cpp:2103:3:2103:15 | Unary | r2103_6 | -| ir.cpp:2103:14:2103:14 | Address | &:r2103_2 | -| ir.cpp:2103:14:2103:14 | Left | r2103_3 | -| ir.cpp:2103:14:2103:14 | Load | m2100_6 | -| ir.cpp:2104:3:2104:20 | Address | &:r2104_7 | -| ir.cpp:2104:3:2104:20 | Arg(0) | 0:r2104_5 | -| ir.cpp:2104:3:2104:20 | CallTarget | func:r2104_1 | -| ir.cpp:2104:3:2104:20 | ChiPartial | partial:m2104_8 | -| ir.cpp:2104:3:2104:20 | ChiTotal | total:m2103_8 | -| ir.cpp:2104:3:2104:20 | Right | r2104_4 | -| ir.cpp:2104:3:2104:20 | SideEffect | ~m2103_8 | -| ir.cpp:2104:3:2104:20 | Unary | r2104_7 | -| ir.cpp:2104:19:2104:19 | Address | &:r2104_2 | -| ir.cpp:2104:19:2104:19 | Left | r2104_3 | -| ir.cpp:2104:19:2104:19 | Load | m2100_6 | -| ir.cpp:2104:21:2104:21 | Arg(1) | 1:r2104_6 | -| ir.cpp:2105:3:2105:36 | Address | &:r2105_6 | -| ir.cpp:2105:3:2105:36 | Arg(0) | 0:r2105_5 | -| ir.cpp:2105:3:2105:36 | CallTarget | func:r2105_1 | -| ir.cpp:2105:3:2105:36 | ChiPartial | partial:m2105_7 | -| ir.cpp:2105:3:2105:36 | ChiTotal | total:m2104_9 | -| ir.cpp:2105:3:2105:36 | Right | r2105_4 | -| ir.cpp:2105:3:2105:36 | SideEffect | ~m2104_9 | -| ir.cpp:2105:3:2105:36 | Unary | r2105_6 | -| ir.cpp:2105:35:2105:35 | Address | &:r2105_2 | -| ir.cpp:2105:35:2105:35 | Left | r2105_3 | -| ir.cpp:2105:35:2105:35 | Load | m2100_6 | -| ir.cpp:2106:3:2106:24 | Address | &:r2106_6 | -| ir.cpp:2106:3:2106:24 | Arg(0) | 0:r2106_5 | -| ir.cpp:2106:3:2106:24 | CallTarget | func:r2106_1 | -| ir.cpp:2106:3:2106:24 | ChiPartial | partial:m2106_7 | -| ir.cpp:2106:3:2106:24 | ChiTotal | total:m2105_8 | -| ir.cpp:2106:3:2106:24 | Right | r2106_4 | -| ir.cpp:2106:3:2106:24 | SideEffect | ~m2105_8 | -| ir.cpp:2106:3:2106:24 | Unary | r2106_6 | -| ir.cpp:2106:11:2106:11 | Address | &:r2106_2 | -| ir.cpp:2106:11:2106:11 | Left | r2106_3 | -| ir.cpp:2106:11:2106:11 | Load | m2100_6 | -| ir.cpp:2111:7:2111:17 | Address | &:r2111_10 | -| ir.cpp:2111:7:2111:17 | ChiPartial | partial:m2111_3 | -| ir.cpp:2111:7:2111:17 | ChiTotal | total:m2111_2 | -| ir.cpp:2111:7:2111:17 | Load | m2114_4 | -| ir.cpp:2111:7:2111:17 | SideEffect | m2111_3 | -| ir.cpp:2111:25:2111:25 | Address | &:r2111_5 | -| ir.cpp:2111:25:2111:25 | Address | &:r2111_5 | -| ir.cpp:2111:25:2111:25 | Address | &:r2111_7 | -| ir.cpp:2111:25:2111:25 | Address | &:r2111_7 | -| ir.cpp:2111:25:2111:25 | Load | m2111_6 | -| ir.cpp:2111:25:2111:25 | SideEffect | m2111_8 | -| ir.cpp:2112:9:2112:11 | Address | &:r2112_1 | -| ir.cpp:2113:10:2113:10 | Address | &:r2113_1 | -| ir.cpp:2113:14:2113:19 | CallTarget | func:r2113_2 | -| ir.cpp:2113:14:2113:19 | StoreValue | r2113_8 | -| ir.cpp:2113:21:2113:21 | Address | &:r2113_3 | -| ir.cpp:2113:21:2113:21 | Address | &:r2113_5 | -| ir.cpp:2113:21:2113:21 | Arg(0) | 0:r2113_5 | -| ir.cpp:2113:21:2113:21 | Load | m2111_6 | -| ir.cpp:2113:21:2113:21 | SideEffect | ~m2111_8 | -| ir.cpp:2113:21:2113:21 | Unary | r2113_4 | -| ir.cpp:2113:24:2113:27 | Address | &:r2113_7 | -| ir.cpp:2113:24:2113:27 | Arg(1) | 1:r2113_7 | -| ir.cpp:2113:24:2113:27 | ChiPartial | partial:m2113_10 | -| ir.cpp:2113:24:2113:27 | ChiTotal | total:m2112_2 | -| ir.cpp:2113:25:2113:27 | Unary | r2113_6 | -| ir.cpp:2114:3:2114:13 | Address | &:r2114_1 | -| ir.cpp:2114:10:2114:12 | Address | &:r2114_2 | -| ir.cpp:2114:10:2114:12 | Load | m2113_11 | -| ir.cpp:2114:10:2114:12 | StoreValue | r2114_3 | -| ir.cpp:2121:6:2121:39 | ChiPartial | partial:m2121_3 | -| ir.cpp:2121:6:2121:39 | ChiTotal | total:m2121_2 | -| ir.cpp:2121:6:2121:39 | SideEffect | ~m2122_8 | -| ir.cpp:2122:6:2122:42 | Address | &:r2122_1 | -| ir.cpp:2122:6:2122:42 | Condition | r2122_12 | -| ir.cpp:2122:22:2122:22 | Address | &:r2122_4 | -| ir.cpp:2122:22:2122:22 | Address | &:r2122_4 | -| ir.cpp:2122:22:2122:22 | Arg(this) | this:r2122_4 | -| ir.cpp:2122:22:2122:22 | CallTarget | func:r2122_5 | -| ir.cpp:2122:22:2122:22 | ChiPartial | partial:m2122_7 | -| ir.cpp:2122:22:2122:22 | ChiPartial | partial:m2122_10 | -| ir.cpp:2122:22:2122:22 | ChiTotal | total:m2121_4 | -| ir.cpp:2122:22:2122:22 | ChiTotal | total:m2122_3 | -| ir.cpp:2122:22:2122:22 | SideEffect | m2122_3 | -| ir.cpp:2122:22:2122:22 | SideEffect | ~m2121_4 | -| ir.cpp:2122:22:2122:22 | Unary | r2122_6 | -| ir.cpp:2122:25:2122:42 | StoreValue | r2122_2 | -| ir.cpp:2125:7:2125:7 | Address | &:r2125_5 | -| ir.cpp:2125:7:2125:7 | Address | &:r2125_5 | -| ir.cpp:2125:7:2125:7 | Address | &:r2125_7 | -| ir.cpp:2125:7:2125:7 | Address | &:r2125_7 | -| ir.cpp:2125:7:2125:7 | Address | &:r2125_9 | -| ir.cpp:2125:7:2125:7 | Address | &:r2125_10 | -| ir.cpp:2125:7:2125:7 | Address | &:r2125_13 | -| ir.cpp:2125:7:2125:7 | ChiPartial | partial:m2125_3 | -| ir.cpp:2125:7:2125:7 | ChiPartial | partial:m2125_15 | -| ir.cpp:2125:7:2125:7 | ChiTotal | total:m2125_2 | -| ir.cpp:2125:7:2125:7 | ChiTotal | total:m2125_8 | -| ir.cpp:2125:7:2125:7 | Load | m0_2 | -| ir.cpp:2125:7:2125:7 | Load | m2125_6 | -| ir.cpp:2125:7:2125:7 | Load | ~m0_4 | -| ir.cpp:2125:7:2125:7 | SideEffect | m2125_3 | -| ir.cpp:2125:7:2125:7 | SideEffect | m2125_16 | -| ir.cpp:2125:7:2125:7 | StoreValue | r2125_14 | -| ir.cpp:2125:7:2125:7 | Unary | m2125_6 | -| ir.cpp:2125:7:2125:7 | Unary | r2125_11 | -| ir.cpp:2125:7:2125:7 | Unary | r2125_12 | -| ir.cpp:2128:5:2128:23 | Address | &:r2128_5 | -| ir.cpp:2128:5:2128:23 | Address | &:r2128_5 | -| ir.cpp:2128:5:2128:23 | Address | &:r2128_7 | -| ir.cpp:2128:5:2128:23 | Address | &:r2128_7 | -| ir.cpp:2128:5:2128:23 | ChiPartial | partial:m2128_3 | -| ir.cpp:2128:5:2128:23 | ChiTotal | total:m2128_2 | -| ir.cpp:2128:5:2128:23 | Load | m2128_6 | -| ir.cpp:2128:5:2128:23 | SideEffect | m2128_20 | -| ir.cpp:2128:5:2128:23 | SideEffect | ~m2128_13 | -| ir.cpp:2128:29:2128:29 | Address | &:r2128_16 | -| ir.cpp:2128:29:2128:29 | Address | &:r2128_18 | -| ir.cpp:2128:29:2128:29 | Load | m2128_6 | -| ir.cpp:2128:29:2128:29 | Unary | r2128_17 | -| ir.cpp:2128:29:2128:40 | ChiPartial | partial:m2128_19 | -| ir.cpp:2128:29:2128:40 | ChiTotal | total:m2128_8 | -| ir.cpp:2128:33:2128:40 | Address | &:r2128_11 | -| ir.cpp:2128:33:2128:40 | Arg(0) | 0:r2128_10 | -| ir.cpp:2128:33:2128:40 | CallTarget | func:r2128_9 | -| ir.cpp:2128:33:2128:40 | ChiPartial | partial:m2128_12 | -| ir.cpp:2128:33:2128:40 | ChiTotal | total:m2128_4 | -| ir.cpp:2128:33:2128:40 | SideEffect | ~m2128_4 | -| ir.cpp:2128:33:2128:40 | StoreValue | r2128_15 | -| ir.cpp:2128:33:2128:40 | Unary | r2128_11 | -| ir.cpp:2129:5:2129:24 | Address | &:r2129_5 | -| ir.cpp:2129:5:2129:24 | Address | &:r2129_5 | -| ir.cpp:2129:5:2129:24 | Address | &:r2129_7 | -| ir.cpp:2129:5:2129:24 | Address | &:r2129_7 | -| ir.cpp:2129:5:2129:24 | ChiPartial | partial:m2129_3 | -| ir.cpp:2129:5:2129:24 | ChiTotal | total:m2129_2 | -| ir.cpp:2129:5:2129:24 | Load | m2129_6 | -| ir.cpp:2129:5:2129:24 | SideEffect | m2129_8 | -| ir.cpp:2129:5:2129:24 | SideEffect | ~m2129_16 | -| ir.cpp:2129:30:2129:37 | CallTarget | func:r2129_9 | -| ir.cpp:2129:30:2129:37 | ChiPartial | partial:m2129_15 | -| ir.cpp:2129:30:2129:37 | ChiTotal | total:m2129_4 | -| ir.cpp:2129:30:2129:37 | SideEffect | ~m2129_4 | -| ir.cpp:2129:37:2129:37 | Address | &:r2129_10 | -| ir.cpp:2129:37:2129:37 | Address | &:r2129_12 | -| ir.cpp:2129:37:2129:37 | Arg(0) | 0:r2129_13 | -| ir.cpp:2129:37:2129:37 | Load | m2129_6 | -| ir.cpp:2129:37:2129:37 | Load | ~m2129_8 | -| ir.cpp:2129:37:2129:37 | Unary | r2129_11 | -| ir.cpp:2131:10:2131:14 | Address | &:r2131_5 | -| ir.cpp:2131:10:2131:14 | Address | &:r2131_5 | -| ir.cpp:2131:10:2131:14 | Address | &:r2131_7 | -| ir.cpp:2131:10:2131:14 | Address | &:r2131_7 | -| ir.cpp:2131:10:2131:14 | ChiPartial | partial:m2131_3 | -| ir.cpp:2131:10:2131:14 | ChiTotal | total:m2131_2 | -| ir.cpp:2131:10:2131:14 | Load | m2131_6 | -| ir.cpp:2131:10:2131:14 | SideEffect | m2131_8 | -| ir.cpp:2131:10:2131:14 | SideEffect | ~m2131_19 | -| ir.cpp:2131:21:2131:21 | Address | &:r2131_9 | -| ir.cpp:2131:26:2131:27 | Address | &:r2131_17 | -| ir.cpp:2131:26:2131:31 | ChiPartial | partial:m2131_18 | -| ir.cpp:2131:26:2131:31 | ChiTotal | total:m2131_4 | -| ir.cpp:2131:27:2131:27 | Address | &:r2131_13 | -| ir.cpp:2131:27:2131:27 | Address | &:r2131_15 | -| ir.cpp:2131:27:2131:27 | Load | m2131_6 | -| ir.cpp:2131:27:2131:27 | Load | ~m2131_8 | -| ir.cpp:2131:27:2131:27 | Unary | r2131_14 | -| ir.cpp:2131:27:2131:27 | Unary | r2131_16 | -| ir.cpp:2131:31:2131:31 | Address | &:r2131_11 | -| ir.cpp:2131:31:2131:31 | Load | m2131_10 | -| ir.cpp:2131:31:2131:31 | StoreValue | r2131_12 | -| ir.cpp:2132:10:2132:14 | Address | &:r2132_5 | -| ir.cpp:2132:10:2132:14 | Address | &:r2132_5 | -| ir.cpp:2132:10:2132:14 | Address | &:r2132_7 | -| ir.cpp:2132:10:2132:14 | Address | &:r2132_7 | -| ir.cpp:2132:10:2132:14 | Address | &:r2132_17 | -| ir.cpp:2132:10:2132:14 | ChiPartial | partial:m2132_3 | -| ir.cpp:2132:10:2132:14 | ChiTotal | total:m2132_2 | -| ir.cpp:2132:10:2132:14 | Load | m2132_6 | -| ir.cpp:2132:10:2132:14 | Load | m2132_15 | -| ir.cpp:2132:10:2132:14 | SideEffect | m2132_3 | -| ir.cpp:2132:10:2132:14 | SideEffect | m2132_8 | -| ir.cpp:2132:20:2132:29 | Address | &:r2132_9 | -| ir.cpp:2132:27:2132:28 | Load | ~m2132_4 | -| ir.cpp:2132:27:2132:28 | StoreValue | r2132_14 | -| ir.cpp:2132:28:2132:28 | Address | &:r2132_10 | -| ir.cpp:2132:28:2132:28 | Address | &:r2132_12 | -| ir.cpp:2132:28:2132:28 | Address | &:r2132_13 | -| ir.cpp:2132:28:2132:28 | Load | m2132_6 | -| ir.cpp:2132:28:2132:28 | Load | ~m2132_8 | -| ir.cpp:2132:28:2132:28 | Unary | r2132_11 | -| ir.cpp:2135:16:2135:50 | Address | &:r2135_3 | -| ir.cpp:2135:16:2135:50 | SideEffect | ~m2135_6 | -| ir.cpp:2135:54:2135:57 | ChiPartial | partial:m2135_5 | -| ir.cpp:2135:54:2135:57 | ChiTotal | total:m2135_2 | -| ir.cpp:2135:54:2135:57 | StoreValue | r2135_4 | -| ir.cpp:2137:6:2137:35 | ChiPartial | partial:m2137_3 | -| ir.cpp:2137:6:2137:35 | ChiTotal | total:m2137_2 | -| ir.cpp:2137:6:2137:35 | Phi | from 13:~m2172_5 | -| ir.cpp:2137:6:2137:35 | Phi | from 19:~m2172_13 | -| ir.cpp:2137:6:2137:35 | Phi | from 23:~m2172_22 | -| ir.cpp:2137:6:2137:35 | SideEffect | ~m2137_9 | -| ir.cpp:2137:42:2137:42 | Address | &:r2137_5 | -| ir.cpp:2137:50:2137:50 | Address | &:r2137_7 | -| ir.cpp:2138:29:2138:29 | Address | &:r2138_1 | -| ir.cpp:2138:29:2138:29 | Address | &:r2138_1 | -| ir.cpp:2138:29:2138:29 | Arg(this) | this:r2138_1 | -| ir.cpp:2138:29:2138:29 | CallTarget | func:r2138_3 | -| ir.cpp:2138:29:2138:29 | ChiPartial | partial:m2138_5 | -| ir.cpp:2138:29:2138:29 | ChiPartial | partial:m2138_7 | -| ir.cpp:2138:29:2138:29 | ChiTotal | total:m2137_4 | -| ir.cpp:2138:29:2138:29 | ChiTotal | total:m2138_2 | -| ir.cpp:2138:29:2138:29 | SideEffect | ~m2137_4 | -| ir.cpp:2138:32:2138:32 | Address | &:r2138_9 | -| ir.cpp:2138:32:2138:32 | Condition | r2138_10 | -| ir.cpp:2138:32:2138:32 | Load | m2137_6 | -| ir.cpp:2139:9:2139:9 | Address | &:r2139_1 | -| ir.cpp:2139:9:2139:9 | Address | &:r2139_1 | -| ir.cpp:2139:9:2139:9 | Arg(this) | this:r2139_1 | -| ir.cpp:2139:9:2139:9 | ChiPartial | partial:m2139_8 | -| ir.cpp:2139:9:2139:9 | ChiTotal | total:m2138_8 | -| ir.cpp:2139:9:2139:9 | SideEffect | m2138_8 | -| ir.cpp:2139:11:2139:15 | CallTarget | func:r2139_2 | -| ir.cpp:2139:11:2139:15 | ChiPartial | partial:m2139_5 | -| ir.cpp:2139:11:2139:15 | ChiTotal | total:m2138_6 | -| ir.cpp:2139:11:2139:15 | SideEffect | ~m2138_6 | -| ir.cpp:2139:17:2139:19 | Arg(0) | 0:r2139_3 | -| ir.cpp:2139:21:2139:21 | Address | &:r2139_10 | -| ir.cpp:2139:21:2139:21 | Address | &:r2139_10 | -| ir.cpp:2139:21:2139:21 | Arg(this) | this:r2139_10 | -| ir.cpp:2139:21:2139:21 | CallTarget | func:r2139_11 | -| ir.cpp:2139:21:2139:21 | ChiPartial | partial:m2139_13 | -| ir.cpp:2139:21:2139:21 | ChiPartial | partial:m2139_16 | -| ir.cpp:2139:21:2139:21 | ChiTotal | total:m2139_6 | -| ir.cpp:2139:21:2139:21 | ChiTotal | total:m2139_9 | -| ir.cpp:2139:21:2139:21 | SideEffect | m2139_9 | -| ir.cpp:2139:21:2139:21 | SideEffect | ~m2139_6 | -| ir.cpp:2141:39:2141:39 | Address | &:r2141_2 | -| ir.cpp:2141:39:2141:39 | Address | &:r2141_2 | -| ir.cpp:2141:39:2141:39 | Arg(this) | this:r2141_2 | -| ir.cpp:2141:39:2141:39 | CallTarget | func:r2141_4 | -| ir.cpp:2141:39:2141:39 | ChiPartial | partial:m2141_6 | -| ir.cpp:2141:39:2141:39 | ChiPartial | partial:m2141_8 | -| ir.cpp:2141:39:2141:39 | ChiTotal | total:m2141_1 | -| ir.cpp:2141:39:2141:39 | ChiTotal | total:m2141_3 | -| ir.cpp:2141:39:2141:39 | Phi | from 0:~m2138_6 | -| ir.cpp:2141:39:2141:39 | Phi | from 2:~m2139_14 | -| ir.cpp:2141:39:2141:39 | SideEffect | ~m2141_1 | -| ir.cpp:2141:42:2141:76 | Condition | r2141_10 | -| ir.cpp:2142:9:2142:9 | Address | &:r2142_1 | -| ir.cpp:2142:9:2142:9 | Address | &:r2142_1 | -| ir.cpp:2142:9:2142:9 | Arg(this) | this:r2142_1 | -| ir.cpp:2142:9:2142:9 | ChiPartial | partial:m2142_8 | -| ir.cpp:2142:9:2142:9 | ChiTotal | total:m2141_9 | -| ir.cpp:2142:9:2142:9 | SideEffect | m2141_9 | -| ir.cpp:2142:11:2142:15 | CallTarget | func:r2142_2 | -| ir.cpp:2142:11:2142:15 | ChiPartial | partial:m2142_5 | -| ir.cpp:2142:11:2142:15 | ChiTotal | total:m2141_7 | -| ir.cpp:2142:11:2142:15 | SideEffect | ~m2141_7 | -| ir.cpp:2142:17:2142:19 | Arg(0) | 0:r2142_3 | -| ir.cpp:2144:32:2144:32 | Address | &:r2144_1 | -| ir.cpp:2144:32:2144:32 | Address | &:r2144_1 | -| ir.cpp:2144:32:2144:32 | Arg(this) | this:r2144_1 | -| ir.cpp:2144:32:2144:32 | CallTarget | func:r2144_3 | -| ir.cpp:2144:32:2144:32 | ChiPartial | partial:m2144_5 | -| ir.cpp:2144:32:2144:32 | ChiPartial | partial:m2144_7 | -| ir.cpp:2144:32:2144:32 | ChiTotal | total:m2142_6 | -| ir.cpp:2144:32:2144:32 | ChiTotal | total:m2144_2 | -| ir.cpp:2144:32:2144:32 | SideEffect | ~m2142_6 | -| ir.cpp:2144:35:2144:35 | Address | &:r2144_9 | -| ir.cpp:2144:35:2144:35 | Condition | r2144_11 | -| ir.cpp:2144:35:2144:35 | Load | m2137_8 | -| ir.cpp:2144:35:2144:35 | Unary | r2144_10 | -| ir.cpp:2146:11:2146:11 | Address | &:r2146_1 | -| ir.cpp:2146:11:2146:11 | Address | &:r2146_1 | -| ir.cpp:2146:11:2146:11 | Arg(this) | this:r2146_1 | -| ir.cpp:2146:11:2146:11 | ChiPartial | partial:m2146_8 | -| ir.cpp:2146:11:2146:11 | ChiTotal | total:m2144_8 | -| ir.cpp:2146:11:2146:11 | SideEffect | m2144_8 | -| ir.cpp:2146:13:2146:17 | CallTarget | func:r2146_2 | -| ir.cpp:2146:13:2146:17 | ChiPartial | partial:m2146_5 | -| ir.cpp:2146:13:2146:17 | ChiTotal | total:m2144_6 | -| ir.cpp:2146:13:2146:17 | SideEffect | ~m2144_6 | -| ir.cpp:2146:19:2146:21 | Arg(0) | 0:r2146_3 | -| ir.cpp:2149:11:2149:11 | Address | &:r2149_1 | -| ir.cpp:2149:11:2149:11 | Address | &:r2149_1 | -| ir.cpp:2149:11:2149:11 | Arg(this) | this:r2149_1 | -| ir.cpp:2149:11:2149:11 | ChiPartial | partial:m2149_8 | -| ir.cpp:2149:11:2149:11 | ChiTotal | total:m2144_8 | -| ir.cpp:2149:11:2149:11 | SideEffect | m2144_8 | -| ir.cpp:2149:13:2149:17 | CallTarget | func:r2149_2 | -| ir.cpp:2149:13:2149:17 | ChiPartial | partial:m2149_5 | -| ir.cpp:2149:13:2149:17 | ChiTotal | total:m2144_6 | -| ir.cpp:2149:13:2149:17 | SideEffect | ~m2144_6 | -| ir.cpp:2149:19:2149:21 | Arg(0) | 0:r2149_3 | -| ir.cpp:2151:5:2151:5 | Phi | from 5:~m2146_6 | -| ir.cpp:2151:5:2151:5 | Phi | from 6:~m2149_6 | -| ir.cpp:2153:25:2153:25 | Address | &:r2153_1 | -| ir.cpp:2153:25:2153:25 | Address | &:r2153_1 | -| ir.cpp:2153:25:2153:25 | Arg(this) | this:r2153_1 | -| ir.cpp:2153:25:2153:25 | CallTarget | func:r2153_3 | -| ir.cpp:2153:25:2153:25 | ChiPartial | partial:m2153_5 | -| ir.cpp:2153:25:2153:25 | ChiPartial | partial:m2153_7 | -| ir.cpp:2153:25:2153:25 | ChiTotal | total:m2151_1 | -| ir.cpp:2153:25:2153:25 | ChiTotal | total:m2153_2 | -| ir.cpp:2153:25:2153:25 | SideEffect | ~m2151_1 | -| ir.cpp:2154:5:2154:5 | Address | &:r2154_14 | -| ir.cpp:2154:5:2154:5 | Address | &:r2154_18 | -| ir.cpp:2154:5:2154:5 | Address | &:r2154_26 | -| ir.cpp:2154:37:2154:38 | Address | &:r2154_1 | -| ir.cpp:2154:37:2154:38 | Address | &:r2154_1 | -| ir.cpp:2154:37:2154:38 | Arg(this) | this:r2154_1 | -| ir.cpp:2154:40:2154:40 | Address | &:r2154_4 | -| ir.cpp:2154:40:2154:40 | Address | &:r2154_4 | -| ir.cpp:2154:40:2154:40 | Address | &:r2154_5 | -| ir.cpp:2154:40:2154:40 | Arg(0) | 0:r2154_8 | -| ir.cpp:2154:40:2154:40 | Load | m2153_8 | -| ir.cpp:2154:40:2154:40 | Load | m2154_7 | -| ir.cpp:2154:40:2154:40 | StoreValue | r2154_6 | -| ir.cpp:2154:40:2154:41 | CallTarget | func:r2154_3 | -| ir.cpp:2154:40:2154:41 | ChiPartial | partial:m2154_10 | -| ir.cpp:2154:40:2154:41 | ChiPartial | partial:m2154_12 | -| ir.cpp:2154:40:2154:41 | ChiTotal | total:m2153_6 | -| ir.cpp:2154:40:2154:41 | ChiTotal | total:m2154_2 | -| ir.cpp:2154:40:2154:41 | SideEffect | ~m2153_6 | -| ir.cpp:2154:64:2154:64 | Address | &:r2154_44 | -| ir.cpp:2154:64:2154:64 | Address | &:r2154_52 | -| ir.cpp:2154:64:2154:64 | Address | &:r2154_52 | -| ir.cpp:2154:64:2154:64 | Arg(this) | this:r2154_52 | -| ir.cpp:2154:64:2154:64 | CallTarget | func:r2154_53 | -| ir.cpp:2154:64:2154:64 | ChiPartial | partial:m2154_55 | -| ir.cpp:2154:64:2154:64 | ChiPartial | partial:m2154_58 | -| ir.cpp:2154:64:2154:64 | ChiTotal | total:m2155_6 | -| ir.cpp:2154:64:2154:64 | ChiTotal | total:m2155_9 | -| ir.cpp:2154:64:2154:64 | SideEffect | m2155_9 | -| ir.cpp:2154:64:2154:64 | SideEffect | ~m2155_6 | -| ir.cpp:2154:68:2154:68 | Address | &:r2154_19 | -| ir.cpp:2154:68:2154:68 | Address | &:r2154_27 | -| ir.cpp:2154:68:2154:68 | Address | &:r2154_38 | -| ir.cpp:2154:68:2154:68 | Address | &:r2154_47 | -| ir.cpp:2154:68:2154:68 | Address | &:r2154_60 | -| ir.cpp:2154:68:2154:68 | Address | &:r2154_60 | -| ir.cpp:2154:68:2154:68 | Arg(0) | 0:r2154_39 | -| ir.cpp:2154:68:2154:68 | Arg(this) | this:r0_2 | -| ir.cpp:2154:68:2154:68 | Arg(this) | this:r0_5 | -| ir.cpp:2154:68:2154:68 | Arg(this) | this:r0_7 | -| ir.cpp:2154:68:2154:68 | Arg(this) | this:r0_9 | -| ir.cpp:2154:68:2154:68 | Arg(this) | this:r2154_60 | -| ir.cpp:2154:68:2154:68 | CallTarget | func:r2154_21 | -| ir.cpp:2154:68:2154:68 | CallTarget | func:r2154_29 | -| ir.cpp:2154:68:2154:68 | CallTarget | func:r2154_37 | -| ir.cpp:2154:68:2154:68 | CallTarget | func:r2154_46 | -| ir.cpp:2154:68:2154:68 | CallTarget | func:r2154_61 | -| ir.cpp:2154:68:2154:68 | ChiPartial | partial:m2154_23 | -| ir.cpp:2154:68:2154:68 | ChiPartial | partial:m2154_31 | -| ir.cpp:2154:68:2154:68 | ChiPartial | partial:m2154_41 | -| ir.cpp:2154:68:2154:68 | ChiPartial | partial:m2154_48 | -| ir.cpp:2154:68:2154:68 | ChiPartial | partial:m2154_63 | -| ir.cpp:2154:68:2154:68 | ChiPartial | partial:m2154_66 | -| ir.cpp:2154:68:2154:68 | ChiTotal | total:m2154_11 | -| ir.cpp:2154:68:2154:68 | ChiTotal | total:m2154_24 | -| ir.cpp:2154:68:2154:68 | ChiTotal | total:m2154_34 | -| ir.cpp:2154:68:2154:68 | ChiTotal | total:m2154_35 | -| ir.cpp:2154:68:2154:68 | ChiTotal | total:m2154_42 | -| ir.cpp:2154:68:2154:68 | ChiTotal | total:m2154_56 | -| ir.cpp:2154:68:2154:68 | Condition | r2154_40 | -| ir.cpp:2154:68:2154:68 | Load | m2154_17 | -| ir.cpp:2154:68:2154:68 | Load | m2154_17 | -| ir.cpp:2154:68:2154:68 | Load | m2154_33 | -| ir.cpp:2154:68:2154:68 | Phi | from 7:m2154_25 | -| ir.cpp:2154:68:2154:68 | Phi | from 7:~m2154_32 | -| ir.cpp:2154:68:2154:68 | Phi | from 9:m2154_67 | -| ir.cpp:2154:68:2154:68 | Phi | from 9:~m2154_64 | -| ir.cpp:2154:68:2154:68 | SideEffect | m2154_34 | -| ir.cpp:2154:68:2154:68 | SideEffect | ~m2154_11 | -| ir.cpp:2154:68:2154:68 | SideEffect | ~m2154_24 | -| ir.cpp:2154:68:2154:68 | SideEffect | ~m2154_35 | -| ir.cpp:2154:68:2154:68 | SideEffect | ~m2154_42 | -| ir.cpp:2154:68:2154:68 | SideEffect | ~m2154_56 | -| ir.cpp:2154:68:2154:68 | StoreValue | r2154_22 | -| ir.cpp:2154:68:2154:68 | StoreValue | r2154_30 | -| ir.cpp:2154:68:2154:68 | Unary | r2154_20 | -| ir.cpp:2154:68:2154:68 | Unary | r2154_28 | -| ir.cpp:2154:68:2154:68 | Unary | r2154_36 | -| ir.cpp:2154:68:2154:68 | Unary | r2154_45 | -| ir.cpp:2154:68:2154:68 | Unary | r2154_62 | -| ir.cpp:2154:68:2154:69 | StoreValue | r2154_16 | -| ir.cpp:2154:68:2154:69 | Unary | r2154_15 | -| ir.cpp:2154:68:2154:70 | Load | ~m2154_49 | -| ir.cpp:2154:68:2154:70 | StoreValue | r2154_50 | -| ir.cpp:2155:7:2155:7 | Address | &:r2155_1 | -| ir.cpp:2155:7:2155:7 | Address | &:r2155_1 | -| ir.cpp:2155:7:2155:7 | Arg(this) | this:r2155_1 | -| ir.cpp:2155:7:2155:7 | ChiPartial | partial:m2155_8 | -| ir.cpp:2155:7:2155:7 | ChiTotal | total:m2154_51 | -| ir.cpp:2155:7:2155:7 | SideEffect | m2154_51 | -| ir.cpp:2155:9:2155:13 | CallTarget | func:r2155_2 | -| ir.cpp:2155:9:2155:13 | ChiPartial | partial:m2155_5 | -| ir.cpp:2155:9:2155:13 | ChiTotal | total:m2154_49 | -| ir.cpp:2155:9:2155:13 | SideEffect | ~m2154_49 | -| ir.cpp:2155:15:2155:17 | Arg(0) | 0:r2155_3 | -| ir.cpp:2157:5:2157:5 | Address | &:r2157_14 | -| ir.cpp:2157:5:2157:5 | Address | &:r2157_18 | -| ir.cpp:2157:5:2157:5 | Address | &:r2157_26 | -| ir.cpp:2157:37:2157:38 | Address | &:r2157_1 | -| ir.cpp:2157:37:2157:38 | Address | &:r2157_1 | -| ir.cpp:2157:37:2157:38 | Address | &:r2157_60 | -| ir.cpp:2157:37:2157:38 | Address | &:r2157_60 | -| ir.cpp:2157:37:2157:38 | Arg(this) | this:r2157_1 | -| ir.cpp:2157:37:2157:38 | Arg(this) | this:r2157_60 | -| ir.cpp:2157:37:2157:38 | CallTarget | func:r2157_61 | -| ir.cpp:2157:37:2157:38 | ChiPartial | partial:m2157_63 | -| ir.cpp:2157:37:2157:38 | ChiPartial | partial:m2157_66 | -| ir.cpp:2157:37:2157:38 | ChiTotal | total:m2157_13 | -| ir.cpp:2157:37:2157:38 | ChiTotal | total:m2157_56 | -| ir.cpp:2157:37:2157:38 | SideEffect | m2157_13 | -| ir.cpp:2157:37:2157:38 | SideEffect | ~m2157_56 | -| ir.cpp:2157:40:2157:40 | Address | &:r2157_4 | -| ir.cpp:2157:40:2157:40 | Address | &:r2157_4 | -| ir.cpp:2157:40:2157:40 | Address | &:r2157_5 | -| ir.cpp:2157:40:2157:40 | Arg(0) | 0:r2157_8 | -| ir.cpp:2157:40:2157:40 | Load | m2153_8 | -| ir.cpp:2157:40:2157:40 | Load | m2157_7 | -| ir.cpp:2157:40:2157:40 | StoreValue | r2157_6 | -| ir.cpp:2157:40:2157:41 | CallTarget | func:r2157_3 | -| ir.cpp:2157:40:2157:41 | ChiPartial | partial:m2157_10 | -| ir.cpp:2157:40:2157:41 | ChiPartial | partial:m2157_12 | -| ir.cpp:2157:40:2157:41 | ChiTotal | total:m2154_42 | -| ir.cpp:2157:40:2157:41 | ChiTotal | total:m2157_2 | -| ir.cpp:2157:40:2157:41 | SideEffect | ~m2154_42 | -| ir.cpp:2157:64:2157:64 | Address | &:r2157_44 | -| ir.cpp:2157:64:2157:64 | Address | &:r2157_52 | -| ir.cpp:2157:64:2157:64 | Address | &:r2157_52 | -| ir.cpp:2157:64:2157:64 | Address | &:r2157_68 | -| ir.cpp:2157:64:2157:64 | Address | &:r2157_68 | -| ir.cpp:2157:64:2157:64 | Arg(this) | this:r2157_52 | -| ir.cpp:2157:64:2157:64 | Arg(this) | this:r2157_68 | -| ir.cpp:2157:64:2157:64 | CallTarget | func:r2157_53 | -| ir.cpp:2157:64:2157:64 | CallTarget | func:r2157_69 | -| ir.cpp:2157:64:2157:64 | ChiPartial | partial:m2157_55 | -| ir.cpp:2157:64:2157:64 | ChiPartial | partial:m2157_58 | -| ir.cpp:2157:64:2157:64 | ChiPartial | partial:m2157_71 | -| ir.cpp:2157:64:2157:64 | ChiPartial | partial:m2157_74 | -| ir.cpp:2157:64:2157:64 | ChiTotal | total:m2159_5 | -| ir.cpp:2157:64:2157:64 | ChiTotal | total:m2159_5 | -| ir.cpp:2157:64:2157:64 | ChiTotal | total:m2159_8 | -| ir.cpp:2157:64:2157:64 | ChiTotal | total:m2159_8 | -| ir.cpp:2157:64:2157:64 | SideEffect | m2159_8 | -| ir.cpp:2157:64:2157:64 | SideEffect | m2159_8 | -| ir.cpp:2157:64:2157:64 | SideEffect | ~m2159_5 | -| ir.cpp:2157:64:2157:64 | SideEffect | ~m2159_5 | -| ir.cpp:2157:68:2157:68 | Address | &:r2157_19 | -| ir.cpp:2157:68:2157:68 | Address | &:r2157_27 | -| ir.cpp:2157:68:2157:68 | Address | &:r2157_38 | -| ir.cpp:2157:68:2157:68 | Address | &:r2157_47 | -| ir.cpp:2157:68:2157:68 | Address | &:r2157_76 | -| ir.cpp:2157:68:2157:68 | Address | &:r2157_76 | -| ir.cpp:2157:68:2157:68 | Arg(0) | 0:r2157_39 | -| ir.cpp:2157:68:2157:68 | Arg(this) | this:r0_12 | -| ir.cpp:2157:68:2157:68 | Arg(this) | this:r0_15 | -| ir.cpp:2157:68:2157:68 | Arg(this) | this:r0_17 | -| ir.cpp:2157:68:2157:68 | Arg(this) | this:r0_19 | -| ir.cpp:2157:68:2157:68 | Arg(this) | this:r2157_76 | -| ir.cpp:2157:68:2157:68 | CallTarget | func:r2157_21 | -| ir.cpp:2157:68:2157:68 | CallTarget | func:r2157_29 | -| ir.cpp:2157:68:2157:68 | CallTarget | func:r2157_37 | -| ir.cpp:2157:68:2157:68 | CallTarget | func:r2157_46 | -| ir.cpp:2157:68:2157:68 | CallTarget | func:r2157_77 | -| ir.cpp:2157:68:2157:68 | ChiPartial | partial:m2157_23 | -| ir.cpp:2157:68:2157:68 | ChiPartial | partial:m2157_31 | -| ir.cpp:2157:68:2157:68 | ChiPartial | partial:m2157_41 | -| ir.cpp:2157:68:2157:68 | ChiPartial | partial:m2157_48 | -| ir.cpp:2157:68:2157:68 | ChiPartial | partial:m2157_79 | -| ir.cpp:2157:68:2157:68 | ChiPartial | partial:m2157_82 | -| ir.cpp:2157:68:2157:68 | ChiTotal | total:m2157_11 | -| ir.cpp:2157:68:2157:68 | ChiTotal | total:m2157_24 | -| ir.cpp:2157:68:2157:68 | ChiTotal | total:m2157_34 | -| ir.cpp:2157:68:2157:68 | ChiTotal | total:m2157_35 | -| ir.cpp:2157:68:2157:68 | ChiTotal | total:m2157_42 | -| ir.cpp:2157:68:2157:68 | ChiTotal | total:m2157_72 | -| ir.cpp:2157:68:2157:68 | Condition | r2157_40 | -| ir.cpp:2157:68:2157:68 | Load | m2157_17 | -| ir.cpp:2157:68:2157:68 | Load | m2157_17 | -| ir.cpp:2157:68:2157:68 | Load | m2157_33 | -| ir.cpp:2157:68:2157:68 | Phi | from 10:m2157_25 | -| ir.cpp:2157:68:2157:68 | Phi | from 10:~m2157_32 | -| ir.cpp:2157:68:2157:68 | Phi | from 14:m2157_83 | -| ir.cpp:2157:68:2157:68 | Phi | from 14:~m2157_80 | -| ir.cpp:2157:68:2157:68 | SideEffect | m2157_34 | -| ir.cpp:2157:68:2157:68 | SideEffect | ~m2157_11 | -| ir.cpp:2157:68:2157:68 | SideEffect | ~m2157_24 | -| ir.cpp:2157:68:2157:68 | SideEffect | ~m2157_35 | -| ir.cpp:2157:68:2157:68 | SideEffect | ~m2157_42 | -| ir.cpp:2157:68:2157:68 | SideEffect | ~m2157_72 | -| ir.cpp:2157:68:2157:68 | StoreValue | r2157_22 | -| ir.cpp:2157:68:2157:68 | StoreValue | r2157_30 | -| ir.cpp:2157:68:2157:68 | Unary | r2157_20 | -| ir.cpp:2157:68:2157:68 | Unary | r2157_28 | -| ir.cpp:2157:68:2157:68 | Unary | r2157_36 | -| ir.cpp:2157:68:2157:68 | Unary | r2157_45 | -| ir.cpp:2157:68:2157:68 | Unary | r2157_78 | -| ir.cpp:2157:68:2157:69 | StoreValue | r2157_16 | -| ir.cpp:2157:68:2157:69 | Unary | r2157_15 | -| ir.cpp:2157:68:2157:70 | Load | ~m2157_49 | -| ir.cpp:2157:68:2157:70 | StoreValue | r2157_50 | -| ir.cpp:2158:7:2158:7 | Address | &:r2158_1 | -| ir.cpp:2158:7:2158:7 | Address | &:r2158_1 | -| ir.cpp:2158:7:2158:7 | Arg(this) | this:r2158_1 | -| ir.cpp:2158:7:2158:7 | ChiPartial | partial:m2158_8 | -| ir.cpp:2158:7:2158:7 | ChiTotal | total:m2157_51 | -| ir.cpp:2158:7:2158:7 | SideEffect | m2157_51 | -| ir.cpp:2158:9:2158:13 | CallTarget | func:r2158_2 | -| ir.cpp:2158:9:2158:13 | ChiPartial | partial:m2158_5 | -| ir.cpp:2158:9:2158:13 | ChiTotal | total:m2157_49 | -| ir.cpp:2158:9:2158:13 | SideEffect | ~m2157_49 | -| ir.cpp:2158:15:2158:17 | Arg(0) | 0:r2158_3 | -| ir.cpp:2159:11:2159:11 | Address | &:r2159_1 | -| ir.cpp:2159:11:2159:11 | Address | &:r2159_1 | -| ir.cpp:2159:11:2159:11 | Arg(this) | this:r2159_1 | -| ir.cpp:2159:11:2159:11 | ChiPartial | partial:m2159_7 | -| ir.cpp:2159:11:2159:11 | ChiTotal | total:m2158_9 | -| ir.cpp:2159:11:2159:11 | SideEffect | m2158_9 | -| ir.cpp:2159:11:2159:19 | Left | r2159_9 | -| ir.cpp:2159:11:2159:26 | Condition | r2159_11 | -| ir.cpp:2159:13:2159:17 | CallTarget | func:r2159_2 | -| ir.cpp:2159:13:2159:17 | ChiPartial | partial:m2159_4 | -| ir.cpp:2159:13:2159:17 | ChiTotal | total:m2158_6 | -| ir.cpp:2159:13:2159:17 | SideEffect | ~m2158_6 | -| ir.cpp:2159:13:2159:17 | Unary | r2159_3 | -| ir.cpp:2159:24:2159:26 | Right | r2159_10 | -| ir.cpp:2163:5:2163:5 | Address | &:r2163_10 | -| ir.cpp:2163:5:2163:5 | Address | &:r2163_14 | -| ir.cpp:2163:5:2163:5 | Address | &:r2163_22 | -| ir.cpp:2163:21:2163:22 | Address | &:r2163_1 | -| ir.cpp:2163:21:2163:22 | Address | &:r2163_1 | -| ir.cpp:2163:21:2163:22 | Address | &:r2163_57 | -| ir.cpp:2163:21:2163:22 | Address | &:r2163_57 | -| ir.cpp:2163:21:2163:22 | Arg(this) | this:r2163_1 | -| ir.cpp:2163:21:2163:22 | Arg(this) | this:r2163_57 | -| ir.cpp:2163:21:2163:22 | CallTarget | func:r2163_58 | -| ir.cpp:2163:21:2163:22 | ChiPartial | partial:m2163_60 | -| ir.cpp:2163:21:2163:22 | ChiPartial | partial:m2163_63 | -| ir.cpp:2163:21:2163:22 | ChiTotal | total:m2163_9 | -| ir.cpp:2163:21:2163:22 | ChiTotal | total:m2163_54 | -| ir.cpp:2163:21:2163:22 | SideEffect | m2163_9 | -| ir.cpp:2163:21:2163:22 | SideEffect | ~m2163_54 | -| ir.cpp:2163:24:2163:24 | Arg(0) | 0:r2163_4 | -| ir.cpp:2163:24:2163:25 | CallTarget | func:r2163_3 | -| ir.cpp:2163:24:2163:25 | ChiPartial | partial:m2163_6 | -| ir.cpp:2163:24:2163:25 | ChiPartial | partial:m2163_8 | -| ir.cpp:2163:24:2163:25 | ChiTotal | total:m2157_42 | -| ir.cpp:2163:24:2163:25 | ChiTotal | total:m2163_2 | -| ir.cpp:2163:24:2163:25 | SideEffect | ~m2157_42 | -| ir.cpp:2163:32:2163:32 | Address | &:r2163_49 | -| ir.cpp:2163:36:2163:36 | Address | &:r2163_15 | -| ir.cpp:2163:36:2163:36 | Address | &:r2163_23 | -| ir.cpp:2163:36:2163:36 | Address | &:r2163_34 | -| ir.cpp:2163:36:2163:36 | Address | &:r2163_40 | -| ir.cpp:2163:36:2163:36 | Address | &:r2163_40 | -| ir.cpp:2163:36:2163:36 | Address | &:r2163_52 | -| ir.cpp:2163:36:2163:36 | Arg(0) | 0:r2163_35 | -| ir.cpp:2163:36:2163:36 | Arg(this) | this:r0_22 | -| ir.cpp:2163:36:2163:36 | Arg(this) | this:r0_25 | -| ir.cpp:2163:36:2163:36 | Arg(this) | this:r0_27 | -| ir.cpp:2163:36:2163:36 | Arg(this) | this:r0_29 | -| ir.cpp:2163:36:2163:36 | Arg(this) | this:r2163_40 | -| ir.cpp:2163:36:2163:36 | CallTarget | func:r2163_17 | -| ir.cpp:2163:36:2163:36 | CallTarget | func:r2163_25 | -| ir.cpp:2163:36:2163:36 | CallTarget | func:r2163_33 | -| ir.cpp:2163:36:2163:36 | CallTarget | func:r2163_41 | -| ir.cpp:2163:36:2163:36 | CallTarget | func:r2163_51 | -| ir.cpp:2163:36:2163:36 | ChiPartial | partial:m2163_19 | -| ir.cpp:2163:36:2163:36 | ChiPartial | partial:m2163_27 | -| ir.cpp:2163:36:2163:36 | ChiPartial | partial:m2163_37 | -| ir.cpp:2163:36:2163:36 | ChiPartial | partial:m2163_43 | -| ir.cpp:2163:36:2163:36 | ChiPartial | partial:m2163_46 | -| ir.cpp:2163:36:2163:36 | ChiPartial | partial:m2163_53 | -| ir.cpp:2163:36:2163:36 | ChiTotal | total:m2163_7 | -| ir.cpp:2163:36:2163:36 | ChiTotal | total:m2163_20 | -| ir.cpp:2163:36:2163:36 | ChiTotal | total:m2163_30 | -| ir.cpp:2163:36:2163:36 | ChiTotal | total:m2163_31 | -| ir.cpp:2163:36:2163:36 | ChiTotal | total:m2163_38 | -| ir.cpp:2163:36:2163:36 | ChiTotal | total:m2163_54 | -| ir.cpp:2163:36:2163:36 | Condition | r2163_36 | -| ir.cpp:2163:36:2163:36 | Load | m2163_13 | -| ir.cpp:2163:36:2163:36 | Load | m2163_13 | -| ir.cpp:2163:36:2163:36 | Load | m2163_29 | -| ir.cpp:2163:36:2163:36 | Phi | from 15:m2163_21 | -| ir.cpp:2163:36:2163:36 | Phi | from 15:~m2163_28 | -| ir.cpp:2163:36:2163:36 | Phi | from 17:m2163_47 | -| ir.cpp:2163:36:2163:36 | Phi | from 17:~m2163_44 | -| ir.cpp:2163:36:2163:36 | SideEffect | m2163_30 | -| ir.cpp:2163:36:2163:36 | SideEffect | ~m2163_7 | -| ir.cpp:2163:36:2163:36 | SideEffect | ~m2163_20 | -| ir.cpp:2163:36:2163:36 | SideEffect | ~m2163_31 | -| ir.cpp:2163:36:2163:36 | SideEffect | ~m2163_38 | -| ir.cpp:2163:36:2163:36 | SideEffect | ~m2163_54 | -| ir.cpp:2163:36:2163:36 | StoreValue | r2163_18 | -| ir.cpp:2163:36:2163:36 | StoreValue | r2163_26 | -| ir.cpp:2163:36:2163:36 | Unary | r2163_16 | -| ir.cpp:2163:36:2163:36 | Unary | r2163_24 | -| ir.cpp:2163:36:2163:36 | Unary | r2163_32 | -| ir.cpp:2163:36:2163:36 | Unary | r2163_42 | -| ir.cpp:2163:36:2163:36 | Unary | r2163_50 | -| ir.cpp:2163:36:2163:37 | StoreValue | r2163_12 | -| ir.cpp:2163:36:2163:37 | Unary | r2163_11 | -| ir.cpp:2163:36:2163:38 | Load | ~m2163_54 | -| ir.cpp:2163:36:2163:38 | StoreValue | r2163_55 | -| ir.cpp:2164:11:2164:11 | Address | &:r2164_1 | -| ir.cpp:2164:11:2164:11 | Left | r2164_2 | -| ir.cpp:2164:11:2164:11 | Load | m2163_56 | -| ir.cpp:2164:11:2164:16 | Condition | r2164_4 | -| ir.cpp:2164:16:2164:16 | Right | r2164_3 | -| ir.cpp:2168:5:2168:5 | Address | &:r2168_14 | -| ir.cpp:2168:5:2168:5 | Address | &:r2168_18 | -| ir.cpp:2168:5:2168:5 | Address | &:r2168_26 | -| ir.cpp:2168:37:2168:38 | Address | &:r2168_1 | -| ir.cpp:2168:37:2168:38 | Address | &:r2168_1 | -| ir.cpp:2168:37:2168:38 | Arg(this) | this:r2168_1 | -| ir.cpp:2168:40:2168:40 | Address | &:r2168_4 | -| ir.cpp:2168:40:2168:40 | Address | &:r2168_4 | -| ir.cpp:2168:40:2168:40 | Address | &:r2168_5 | -| ir.cpp:2168:40:2168:40 | Arg(0) | 0:r2168_8 | -| ir.cpp:2168:40:2168:40 | Load | m2153_8 | -| ir.cpp:2168:40:2168:40 | Load | m2168_7 | -| ir.cpp:2168:40:2168:40 | StoreValue | r2168_6 | -| ir.cpp:2168:40:2168:41 | CallTarget | func:r2168_3 | -| ir.cpp:2168:40:2168:41 | ChiPartial | partial:m2168_10 | -| ir.cpp:2168:40:2168:41 | ChiPartial | partial:m2168_12 | -| ir.cpp:2168:40:2168:41 | ChiTotal | total:m2163_38 | -| ir.cpp:2168:40:2168:41 | ChiTotal | total:m2168_2 | -| ir.cpp:2168:40:2168:41 | SideEffect | ~m2163_38 | -| ir.cpp:2168:64:2168:64 | Address | &:r2168_44 | -| ir.cpp:2168:64:2168:64 | Address | &:r2168_52 | -| ir.cpp:2168:64:2168:64 | Address | &:r2168_52 | -| ir.cpp:2168:64:2168:64 | Arg(this) | this:r2168_52 | -| ir.cpp:2168:64:2168:64 | CallTarget | func:r2168_53 | -| ir.cpp:2168:64:2168:64 | ChiPartial | partial:m2168_55 | -| ir.cpp:2168:64:2168:64 | ChiPartial | partial:m2168_58 | -| ir.cpp:2168:64:2168:64 | ChiTotal | total:m2168_51 | -| ir.cpp:2168:64:2168:64 | ChiTotal | total:m2171_13 | -| ir.cpp:2168:64:2168:64 | SideEffect | m2168_51 | -| ir.cpp:2168:64:2168:64 | SideEffect | ~m2171_13 | -| ir.cpp:2168:68:2168:68 | Address | &:r2168_19 | -| ir.cpp:2168:68:2168:68 | Address | &:r2168_27 | -| ir.cpp:2168:68:2168:68 | Address | &:r2168_38 | -| ir.cpp:2168:68:2168:68 | Address | &:r2168_47 | -| ir.cpp:2168:68:2168:68 | Address | &:r2168_60 | -| ir.cpp:2168:68:2168:68 | Address | &:r2168_60 | -| ir.cpp:2168:68:2168:68 | Arg(0) | 0:r2168_39 | -| ir.cpp:2168:68:2168:68 | Arg(this) | this:r0_32 | -| ir.cpp:2168:68:2168:68 | Arg(this) | this:r0_35 | -| ir.cpp:2168:68:2168:68 | Arg(this) | this:r0_37 | -| ir.cpp:2168:68:2168:68 | Arg(this) | this:r0_39 | -| ir.cpp:2168:68:2168:68 | Arg(this) | this:r2168_60 | -| ir.cpp:2168:68:2168:68 | CallTarget | func:r2168_21 | -| ir.cpp:2168:68:2168:68 | CallTarget | func:r2168_29 | -| ir.cpp:2168:68:2168:68 | CallTarget | func:r2168_37 | -| ir.cpp:2168:68:2168:68 | CallTarget | func:r2168_46 | -| ir.cpp:2168:68:2168:68 | CallTarget | func:r2168_61 | -| ir.cpp:2168:68:2168:68 | ChiPartial | partial:m2168_23 | -| ir.cpp:2168:68:2168:68 | ChiPartial | partial:m2168_31 | -| ir.cpp:2168:68:2168:68 | ChiPartial | partial:m2168_41 | -| ir.cpp:2168:68:2168:68 | ChiPartial | partial:m2168_48 | -| ir.cpp:2168:68:2168:68 | ChiPartial | partial:m2168_63 | -| ir.cpp:2168:68:2168:68 | ChiPartial | partial:m2168_66 | -| ir.cpp:2168:68:2168:68 | ChiTotal | total:m2168_11 | -| ir.cpp:2168:68:2168:68 | ChiTotal | total:m2168_24 | -| ir.cpp:2168:68:2168:68 | ChiTotal | total:m2168_34 | -| ir.cpp:2168:68:2168:68 | ChiTotal | total:m2168_35 | -| ir.cpp:2168:68:2168:68 | ChiTotal | total:m2168_42 | -| ir.cpp:2168:68:2168:68 | ChiTotal | total:m2168_56 | -| ir.cpp:2168:68:2168:68 | Condition | r2168_40 | -| ir.cpp:2168:68:2168:68 | Load | m2168_17 | -| ir.cpp:2168:68:2168:68 | Load | m2168_17 | -| ir.cpp:2168:68:2168:68 | Load | m2168_33 | -| ir.cpp:2168:68:2168:68 | Phi | from 20:m2168_25 | -| ir.cpp:2168:68:2168:68 | Phi | from 20:~m2168_32 | -| ir.cpp:2168:68:2168:68 | Phi | from 22:m2168_67 | -| ir.cpp:2168:68:2168:68 | Phi | from 22:~m2168_64 | -| ir.cpp:2168:68:2168:68 | SideEffect | m2168_34 | -| ir.cpp:2168:68:2168:68 | SideEffect | ~m2168_11 | -| ir.cpp:2168:68:2168:68 | SideEffect | ~m2168_24 | -| ir.cpp:2168:68:2168:68 | SideEffect | ~m2168_35 | -| ir.cpp:2168:68:2168:68 | SideEffect | ~m2168_42 | -| ir.cpp:2168:68:2168:68 | SideEffect | ~m2168_56 | -| ir.cpp:2168:68:2168:68 | StoreValue | r2168_22 | -| ir.cpp:2168:68:2168:68 | StoreValue | r2168_30 | -| ir.cpp:2168:68:2168:68 | Unary | r2168_20 | -| ir.cpp:2168:68:2168:68 | Unary | r2168_28 | -| ir.cpp:2168:68:2168:68 | Unary | r2168_36 | -| ir.cpp:2168:68:2168:68 | Unary | r2168_45 | -| ir.cpp:2168:68:2168:68 | Unary | r2168_62 | -| ir.cpp:2168:68:2168:69 | StoreValue | r2168_16 | -| ir.cpp:2168:68:2168:69 | Unary | r2168_15 | -| ir.cpp:2168:68:2168:70 | Load | ~m2168_49 | -| ir.cpp:2168:68:2168:70 | StoreValue | r2168_50 | -| ir.cpp:2169:27:2169:28 | Address | &:r2169_1 | -| ir.cpp:2169:27:2169:28 | Address | &:r2169_1 | -| ir.cpp:2169:27:2169:28 | Arg(this) | this:r2169_1 | -| ir.cpp:2169:27:2169:28 | CallTarget | func:r2169_3 | -| ir.cpp:2169:27:2169:28 | ChiPartial | partial:m2169_5 | -| ir.cpp:2169:27:2169:28 | ChiPartial | partial:m2169_7 | -| ir.cpp:2169:27:2169:28 | ChiTotal | total:m2168_49 | -| ir.cpp:2169:27:2169:28 | ChiTotal | total:m2169_2 | -| ir.cpp:2169:27:2169:28 | SideEffect | ~m2168_49 | -| ir.cpp:2170:27:2170:28 | Address | &:r2170_1 | -| ir.cpp:2170:27:2170:28 | Address | &:r2170_1 | -| ir.cpp:2170:27:2170:28 | Arg(this) | this:r2170_1 | -| ir.cpp:2170:27:2170:28 | CallTarget | func:r2170_3 | -| ir.cpp:2170:27:2170:28 | ChiPartial | partial:m2170_5 | -| ir.cpp:2170:27:2170:28 | ChiPartial | partial:m2170_7 | -| ir.cpp:2170:27:2170:28 | ChiTotal | total:m2169_6 | -| ir.cpp:2170:27:2170:28 | ChiTotal | total:m2170_2 | -| ir.cpp:2170:27:2170:28 | SideEffect | ~m2169_6 | -| ir.cpp:2171:5:2171:5 | Address | &:r2171_1 | -| ir.cpp:2171:5:2171:5 | Address | &:r2171_1 | -| ir.cpp:2171:5:2171:5 | Address | &:r2171_9 | -| ir.cpp:2171:5:2171:5 | Address | &:r2171_9 | -| ir.cpp:2171:5:2171:5 | Arg(this) | this:r2171_1 | -| ir.cpp:2171:5:2171:5 | Arg(this) | this:r2171_9 | -| ir.cpp:2171:5:2171:5 | CallTarget | func:r2171_2 | -| ir.cpp:2171:5:2171:5 | CallTarget | func:r2171_10 | -| ir.cpp:2171:5:2171:5 | ChiPartial | partial:m2171_4 | -| ir.cpp:2171:5:2171:5 | ChiPartial | partial:m2171_7 | -| ir.cpp:2171:5:2171:5 | ChiPartial | partial:m2171_12 | -| ir.cpp:2171:5:2171:5 | ChiPartial | partial:m2171_15 | -| ir.cpp:2171:5:2171:5 | ChiTotal | total:m2169_8 | -| ir.cpp:2171:5:2171:5 | ChiTotal | total:m2170_6 | -| ir.cpp:2171:5:2171:5 | ChiTotal | total:m2170_8 | -| ir.cpp:2171:5:2171:5 | ChiTotal | total:m2171_5 | -| ir.cpp:2171:5:2171:5 | SideEffect | m2169_8 | -| ir.cpp:2171:5:2171:5 | SideEffect | m2170_8 | -| ir.cpp:2171:5:2171:5 | SideEffect | ~m2170_6 | -| ir.cpp:2171:5:2171:5 | SideEffect | ~m2171_5 | -| ir.cpp:2172:1:2172:1 | Address | &:r2172_1 | -| ir.cpp:2172:1:2172:1 | Address | &:r2172_1 | -| ir.cpp:2172:1:2172:1 | Address | &:r2172_9 | -| ir.cpp:2172:1:2172:1 | Address | &:r2172_9 | -| ir.cpp:2172:1:2172:1 | Address | &:r2172_18 | -| ir.cpp:2172:1:2172:1 | Address | &:r2172_18 | -| ir.cpp:2172:1:2172:1 | Arg(this) | this:r2172_1 | -| ir.cpp:2172:1:2172:1 | Arg(this) | this:r2172_9 | -| ir.cpp:2172:1:2172:1 | Arg(this) | this:r2172_18 | -| ir.cpp:2172:1:2172:1 | CallTarget | func:r2172_2 | -| ir.cpp:2172:1:2172:1 | CallTarget | func:r2172_10 | -| ir.cpp:2172:1:2172:1 | CallTarget | func:r2172_19 | -| ir.cpp:2172:1:2172:1 | ChiPartial | partial:m2172_4 | -| ir.cpp:2172:1:2172:1 | ChiPartial | partial:m2172_7 | -| ir.cpp:2172:1:2172:1 | ChiPartial | partial:m2172_12 | -| ir.cpp:2172:1:2172:1 | ChiPartial | partial:m2172_15 | -| ir.cpp:2172:1:2172:1 | ChiPartial | partial:m2172_21 | -| ir.cpp:2172:1:2172:1 | ChiPartial | partial:m2172_24 | -| ir.cpp:2172:1:2172:1 | ChiTotal | total:m2153_8 | -| ir.cpp:2172:1:2172:1 | ChiTotal | total:m2153_8 | -| ir.cpp:2172:1:2172:1 | ChiTotal | total:m2153_8 | -| ir.cpp:2172:1:2172:1 | ChiTotal | total:m2157_64 | -| ir.cpp:2172:1:2172:1 | ChiTotal | total:m2163_61 | -| ir.cpp:2172:1:2172:1 | ChiTotal | total:m2168_42 | -| ir.cpp:2172:1:2172:1 | SideEffect | m2153_8 | -| ir.cpp:2172:1:2172:1 | SideEffect | m2153_8 | -| ir.cpp:2172:1:2172:1 | SideEffect | m2153_8 | -| ir.cpp:2172:1:2172:1 | SideEffect | ~m2157_64 | -| ir.cpp:2172:1:2172:1 | SideEffect | ~m2163_61 | -| ir.cpp:2172:1:2172:1 | SideEffect | ~m2168_42 | -| ir.cpp:2174:6:2174:38 | ChiPartial | partial:m2174_3 | -| ir.cpp:2174:6:2174:38 | ChiTotal | total:m2174_2 | -| ir.cpp:2174:6:2174:38 | SideEffect | ~m2177_7 | -| ir.cpp:2175:25:2175:25 | Address | &:r2175_1 | -| ir.cpp:2175:25:2175:25 | Address | &:r2175_1 | -| ir.cpp:2175:25:2175:25 | Arg(this) | this:r2175_1 | -| ir.cpp:2175:25:2175:25 | CallTarget | func:r2175_3 | -| ir.cpp:2175:25:2175:25 | ChiPartial | partial:m2175_5 | -| ir.cpp:2175:25:2175:25 | ChiPartial | partial:m2175_7 | -| ir.cpp:2175:25:2175:25 | ChiTotal | total:m2174_4 | -| ir.cpp:2175:25:2175:25 | ChiTotal | total:m2175_2 | -| ir.cpp:2175:25:2175:25 | SideEffect | ~m2174_4 | -| ir.cpp:2176:32:2176:32 | Address | &:r2176_1 | -| ir.cpp:2176:32:2176:32 | Address | &:r2176_1 | -| ir.cpp:2176:32:2176:32 | Address | &:r2176_4 | -| ir.cpp:2176:32:2176:32 | Arg(this) | this:r2176_4 | -| ir.cpp:2176:32:2176:32 | ChiPartial | partial:m2176_6 | -| ir.cpp:2176:32:2176:32 | ChiTotal | total:m0_6 | -| ir.cpp:2176:32:2176:32 | Condition | r2176_2 | -| ir.cpp:2176:32:2176:32 | Load | ~m2175_6 | -| ir.cpp:2176:32:2176:32 | StoreValue | r2176_5 | -| ir.cpp:2177:1:2177:1 | Address | &:r2177_3 | -| ir.cpp:2177:1:2177:1 | Address | &:r2177_3 | -| ir.cpp:2177:1:2177:1 | Arg(this) | this:r2177_3 | -| ir.cpp:2177:1:2177:1 | CallTarget | func:r2177_4 | -| ir.cpp:2177:1:2177:1 | ChiPartial | partial:m2177_6 | -| ir.cpp:2177:1:2177:1 | ChiPartial | partial:m2177_9 | -| ir.cpp:2177:1:2177:1 | ChiTotal | total:m2175_8 | -| ir.cpp:2177:1:2177:1 | ChiTotal | total:m2177_1 | -| ir.cpp:2177:1:2177:1 | Phi | from 0:~m2175_6 | -| ir.cpp:2177:1:2177:1 | Phi | from 1:~m2176_7 | -| ir.cpp:2177:1:2177:1 | SideEffect | m2175_8 | -| ir.cpp:2177:1:2177:1 | SideEffect | ~m2177_1 | -| ir.cpp:2179:6:2179:38 | ChiPartial | partial:m2179_3 | -| ir.cpp:2179:6:2179:38 | ChiTotal | total:m2179_2 | -| ir.cpp:2179:6:2179:38 | SideEffect | ~m2182_6 | -| ir.cpp:2180:32:2180:32 | Address | &:r2180_1 | -| ir.cpp:2180:32:2180:32 | Address | &:r2180_1 | -| ir.cpp:2180:32:2180:32 | Address | &:r2180_4 | -| ir.cpp:2180:32:2180:32 | Arg(this) | this:r2180_4 | -| ir.cpp:2180:32:2180:32 | ChiPartial | partial:m2180_6 | -| ir.cpp:2180:32:2180:32 | ChiTotal | total:m0_6 | -| ir.cpp:2180:32:2180:32 | Condition | r2180_2 | -| ir.cpp:2180:32:2180:32 | Load | ~m2179_3 | -| ir.cpp:2180:32:2180:32 | StoreValue | r2180_5 | -| ir.cpp:2181:25:2181:25 | Address | &:r2181_2 | -| ir.cpp:2181:25:2181:25 | Address | &:r2181_2 | -| ir.cpp:2181:25:2181:25 | Arg(this) | this:r2181_2 | -| ir.cpp:2181:25:2181:25 | CallTarget | func:r2181_4 | -| ir.cpp:2181:25:2181:25 | ChiPartial | partial:m2181_6 | -| ir.cpp:2181:25:2181:25 | ChiPartial | partial:m2181_8 | -| ir.cpp:2181:25:2181:25 | ChiTotal | total:m2181_1 | -| ir.cpp:2181:25:2181:25 | ChiTotal | total:m2181_3 | -| ir.cpp:2181:25:2181:25 | Phi | from 0:~m2179_4 | -| ir.cpp:2181:25:2181:25 | Phi | from 1:~m2180_7 | -| ir.cpp:2181:25:2181:25 | SideEffect | ~m2181_1 | -| ir.cpp:2182:1:2182:1 | Address | &:r2182_2 | -| ir.cpp:2182:1:2182:1 | Address | &:r2182_2 | -| ir.cpp:2182:1:2182:1 | Arg(this) | this:r2182_2 | -| ir.cpp:2182:1:2182:1 | CallTarget | func:r2182_3 | -| ir.cpp:2182:1:2182:1 | ChiPartial | partial:m2182_5 | -| ir.cpp:2182:1:2182:1 | ChiPartial | partial:m2182_8 | -| ir.cpp:2182:1:2182:1 | ChiTotal | total:m2181_7 | -| ir.cpp:2182:1:2182:1 | ChiTotal | total:m2181_9 | -| ir.cpp:2182:1:2182:1 | SideEffect | m2181_9 | -| ir.cpp:2182:1:2182:1 | SideEffect | ~m2181_7 | -| ir.cpp:2184:6:2184:38 | ChiPartial | partial:m2184_3 | -| ir.cpp:2184:6:2184:38 | ChiTotal | total:m2184_2 | -| ir.cpp:2184:6:2184:38 | SideEffect | ~m2188_15 | -| ir.cpp:2185:25:2185:25 | Address | &:r2185_1 | -| ir.cpp:2185:25:2185:25 | Address | &:r2185_1 | -| ir.cpp:2185:25:2185:25 | Arg(this) | this:r2185_1 | -| ir.cpp:2185:25:2185:25 | CallTarget | func:r2185_3 | -| ir.cpp:2185:25:2185:25 | ChiPartial | partial:m2185_5 | -| ir.cpp:2185:25:2185:25 | ChiPartial | partial:m2185_7 | -| ir.cpp:2185:25:2185:25 | ChiTotal | total:m2184_4 | -| ir.cpp:2185:25:2185:25 | ChiTotal | total:m2185_2 | -| ir.cpp:2185:25:2185:25 | SideEffect | ~m2184_4 | -| ir.cpp:2186:25:2186:25 | Address | &:r2186_1 | -| ir.cpp:2186:25:2186:25 | Address | &:r2186_1 | -| ir.cpp:2186:25:2186:25 | Arg(this) | this:r2186_1 | -| ir.cpp:2186:25:2186:25 | CallTarget | func:r2186_3 | -| ir.cpp:2186:25:2186:25 | ChiPartial | partial:m2186_5 | -| ir.cpp:2186:25:2186:25 | ChiPartial | partial:m2186_7 | -| ir.cpp:2186:25:2186:25 | ChiTotal | total:m2185_6 | -| ir.cpp:2186:25:2186:25 | ChiTotal | total:m2186_2 | -| ir.cpp:2186:25:2186:25 | SideEffect | ~m2185_6 | -| ir.cpp:2187:32:2187:32 | Address | &:r2187_1 | -| ir.cpp:2187:32:2187:32 | Address | &:r2187_1 | -| ir.cpp:2187:32:2187:32 | Address | &:r2187_4 | -| ir.cpp:2187:32:2187:32 | Arg(this) | this:r2187_4 | -| ir.cpp:2187:32:2187:32 | ChiPartial | partial:m2187_6 | -| ir.cpp:2187:32:2187:32 | ChiTotal | total:m0_6 | -| ir.cpp:2187:32:2187:32 | Condition | r2187_2 | -| ir.cpp:2187:32:2187:32 | Load | ~m2186_6 | -| ir.cpp:2187:32:2187:32 | StoreValue | r2187_5 | -| ir.cpp:2188:1:2188:1 | Address | &:r2188_3 | -| ir.cpp:2188:1:2188:1 | Address | &:r2188_3 | -| ir.cpp:2188:1:2188:1 | Address | &:r2188_11 | -| ir.cpp:2188:1:2188:1 | Address | &:r2188_11 | -| ir.cpp:2188:1:2188:1 | Arg(this) | this:r2188_3 | -| ir.cpp:2188:1:2188:1 | Arg(this) | this:r2188_11 | -| ir.cpp:2188:1:2188:1 | CallTarget | func:r2188_4 | -| ir.cpp:2188:1:2188:1 | CallTarget | func:r2188_12 | -| ir.cpp:2188:1:2188:1 | ChiPartial | partial:m2188_6 | -| ir.cpp:2188:1:2188:1 | ChiPartial | partial:m2188_9 | -| ir.cpp:2188:1:2188:1 | ChiPartial | partial:m2188_14 | -| ir.cpp:2188:1:2188:1 | ChiPartial | partial:m2188_17 | -| ir.cpp:2188:1:2188:1 | ChiTotal | total:m2185_8 | -| ir.cpp:2188:1:2188:1 | ChiTotal | total:m2186_8 | -| ir.cpp:2188:1:2188:1 | ChiTotal | total:m2188_1 | -| ir.cpp:2188:1:2188:1 | ChiTotal | total:m2188_7 | -| ir.cpp:2188:1:2188:1 | Phi | from 0:~m2186_6 | -| ir.cpp:2188:1:2188:1 | Phi | from 1:~m2187_7 | -| ir.cpp:2188:1:2188:1 | SideEffect | m2185_8 | -| ir.cpp:2188:1:2188:1 | SideEffect | m2186_8 | -| ir.cpp:2188:1:2188:1 | SideEffect | ~m2188_1 | -| ir.cpp:2188:1:2188:1 | SideEffect | ~m2188_7 | -| ir.cpp:2190:28:2190:55 | Address | &:r2190_3 | -| ir.cpp:2190:28:2190:55 | Arg(this) | this:r2190_3 | -| ir.cpp:2190:28:2190:55 | CallTarget | func:r2190_4 | -| ir.cpp:2190:28:2190:55 | ChiPartial | partial:m2190_6 | -| ir.cpp:2190:28:2190:55 | ChiPartial | partial:m2190_8 | -| ir.cpp:2190:28:2190:55 | ChiTotal | total:m2190_2 | -| 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_8 | -| 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 | 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_11 | -| 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 | CallTarget | func:r2198_1 | -| ir.cpp:2198:9:2198:11 | ChiPartial | partial:m2198_7 | -| 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 | ChiTotal | total:m2197_4 | -| ir.cpp:2198:9:2198:11 | SideEffect | ~m2197_4 | -| ir.cpp:2198:9:2198:11 | SideEffect | ~m2197_4 | -| ir.cpp:2198:9:2198:11 | Unary | r2198_6 | -| 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_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 | 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 | Arg(0) | 0:r2198_5 | -| ir.cpp:2198:13:2198:13 | ChiPartial | partial:m2198_10 | -| 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 | ChiTotal | total:m2197_8 | -| ir.cpp:2198:13:2198:13 | Load | m2197_6 | -| ir.cpp:2198:13:2198:13 | Load | m2197_6 | -| ir.cpp:2198:13:2198:13 | SideEffect | ~m2197_8 | -| 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_3 | -| ir.cpp:2198:13:2198:13 | Unary | r2198_4 | -| 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 | ~m2204_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:2204:5:2204:5 | Address | &:r2204_2 | -| ir.cpp:2204:5:2204:5 | Address | &:r2204_2 | -| ir.cpp:2204:5:2204:5 | Arg(this) | this:r2204_2 | -| ir.cpp:2204:5:2204:5 | CallTarget | func:r2204_3 | -| ir.cpp:2204:5:2204:5 | ChiPartial | partial:m2204_5 | -| ir.cpp:2204:5:2204:5 | ChiPartial | partial:m2204_8 | -| ir.cpp:2204:5:2204:5 | ChiTotal | total:m2203_6 | -| ir.cpp:2204:5:2204:5 | ChiTotal | total:m2203_9 | -| ir.cpp:2204:5:2204:5 | SideEffect | m2203_9 | -| ir.cpp:2204:5:2204:5 | SideEffect | ~m2203_6 | -| 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 | -| ir.cpp:2212:6:2212:24 | ChiPartial | partial:m2212_3 | -| ir.cpp:2212:6:2212:24 | ChiTotal | total:m2212_2 | -| ir.cpp:2212:6:2212:24 | Phi | from 2:~m2212_10 | -| ir.cpp:2212:6:2212:24 | Phi | from 6:~m2221_8 | -| ir.cpp:2212:6:2212:24 | Phi | from 9:~m2214_6 | -| ir.cpp:2212:6:2212:24 | Phi | from 10:~m2228_1 | -| ir.cpp:2212:6:2212:24 | SideEffect | ~m2212_7 | -| ir.cpp:2212:31:2212:31 | Address | &:r2212_5 | -| ir.cpp:2214:12:2214:12 | Address | &:r2214_1 | -| ir.cpp:2214:12:2214:12 | Address | &:r2214_1 | -| ir.cpp:2214:12:2214:12 | Arg(this) | this:r2214_1 | -| ir.cpp:2214:12:2214:12 | CallTarget | func:r2214_3 | -| ir.cpp:2214:12:2214:12 | ChiPartial | partial:m2214_5 | -| ir.cpp:2214:12:2214:12 | ChiPartial | partial:m2214_7 | -| ir.cpp:2214:12:2214:12 | ChiTotal | total:m2212_4 | -| ir.cpp:2214:12:2214:12 | ChiTotal | total:m2214_2 | -| ir.cpp:2214:12:2214:12 | SideEffect | ~m2212_4 | -| ir.cpp:2215:9:2215:9 | Address | &:r2215_1 | -| ir.cpp:2215:9:2215:9 | Condition | r2215_2 | -| ir.cpp:2215:9:2215:9 | Load | m2212_6 | -| ir.cpp:2216:7:2216:28 | Address | &:r2216_1 | -| ir.cpp:2216:7:2216:28 | Address | &:r2216_1 | -| ir.cpp:2216:7:2216:28 | Load | m2216_4 | -| ir.cpp:2216:13:2216:28 | StoreValue | r2216_3 | -| ir.cpp:2216:13:2216:28 | Unary | r2216_2 | -| ir.cpp:2218:12:2218:13 | Address | &:r2218_1 | -| ir.cpp:2218:12:2218:13 | Address | &:r2218_1 | -| ir.cpp:2218:12:2218:13 | Arg(this) | this:r2218_1 | -| ir.cpp:2218:12:2218:13 | CallTarget | func:r2218_3 | -| ir.cpp:2218:12:2218:13 | ChiPartial | partial:m2218_5 | -| ir.cpp:2218:12:2218:13 | ChiPartial | partial:m2218_7 | -| ir.cpp:2218:12:2218:13 | ChiTotal | total:m2214_6 | -| ir.cpp:2218:12:2218:13 | ChiTotal | total:m2218_2 | -| ir.cpp:2218:12:2218:13 | SideEffect | ~m2214_6 | -| ir.cpp:2219:3:2219:3 | Address | &:r2219_1 | -| ir.cpp:2219:3:2219:3 | Address | &:r2219_1 | -| ir.cpp:2219:3:2219:3 | Address | &:r2219_9 | -| ir.cpp:2219:3:2219:3 | Address | &:r2219_9 | -| ir.cpp:2219:3:2219:3 | Arg(this) | this:r2219_1 | -| ir.cpp:2219:3:2219:3 | Arg(this) | this:r2219_9 | -| ir.cpp:2219:3:2219:3 | CallTarget | func:r2219_2 | -| ir.cpp:2219:3:2219:3 | CallTarget | func:r2219_10 | -| ir.cpp:2219:3:2219:3 | ChiPartial | partial:m2219_4 | -| ir.cpp:2219:3:2219:3 | ChiPartial | partial:m2219_7 | -| ir.cpp:2219:3:2219:3 | ChiPartial | partial:m2219_12 | -| ir.cpp:2219:3:2219:3 | ChiPartial | partial:m2219_15 | -| ir.cpp:2219:3:2219:3 | ChiTotal | total:m2214_8 | -| ir.cpp:2219:3:2219:3 | ChiTotal | total:m2218_6 | -| ir.cpp:2219:3:2219:3 | ChiTotal | total:m2218_8 | -| ir.cpp:2219:3:2219:3 | ChiTotal | total:m2219_5 | -| ir.cpp:2219:3:2219:3 | SideEffect | m2214_8 | -| ir.cpp:2219:3:2219:3 | SideEffect | m2218_8 | -| ir.cpp:2219:3:2219:3 | SideEffect | ~m2218_6 | -| ir.cpp:2219:3:2219:3 | SideEffect | ~m2219_5 | -| ir.cpp:2220:22:2220:22 | Address | &:r2220_2 | -| ir.cpp:2220:22:2220:22 | Address | &:r2220_2 | -| ir.cpp:2220:22:2220:22 | Address | &:r2220_4 | -| ir.cpp:2220:22:2220:22 | Load | m2220_3 | -| ir.cpp:2221:5:2221:19 | Address | &:r2221_1 | -| ir.cpp:2221:5:2221:19 | Address | &:r2221_1 | -| ir.cpp:2221:5:2221:19 | Address | &:r2221_1 | -| ir.cpp:2221:5:2221:19 | Arg(this) | this:r2221_1 | -| ir.cpp:2221:5:2221:19 | CallTarget | func:r2221_3 | -| ir.cpp:2221:5:2221:19 | ChiPartial | partial:m2221_7 | -| ir.cpp:2221:5:2221:19 | ChiPartial | partial:m2221_10 | -| ir.cpp:2221:5:2221:19 | ChiTotal | total:m2214_6 | -| ir.cpp:2221:5:2221:19 | ChiTotal | total:m2221_2 | -| ir.cpp:2221:5:2221:19 | Load | m2221_11 | -| ir.cpp:2221:5:2221:19 | SideEffect | ~m2214_6 | -| ir.cpp:2221:18:2221:18 | Address | &:r2221_4 | -| ir.cpp:2221:18:2221:18 | Address | &:r2221_5 | -| ir.cpp:2221:18:2221:18 | Arg(0) | 0:r2221_5 | -| ir.cpp:2221:18:2221:18 | Load | m2220_3 | -| ir.cpp:2221:18:2221:18 | SideEffect | ~m2220_5 | -| ir.cpp:2223:24:2223:24 | Address | &:r2223_2 | -| ir.cpp:2223:24:2223:24 | Address | &:r2223_2 | -| ir.cpp:2223:24:2223:24 | Address | &:r2223_4 | -| ir.cpp:2223:24:2223:24 | Load | m2223_3 | -| ir.cpp:2228:1:2228:1 | Phi | from 4:~m2219_13 | -| ir.cpp:2228:1:2228:1 | Phi | from 8:~m2214_6 | -| ir.cpp:2230:6:2230:18 | ChiPartial | partial:m2230_3 | -| ir.cpp:2230:6:2230:18 | ChiTotal | total:m2230_2 | -| ir.cpp:2230:6:2230:18 | SideEffect | ~m2238_14 | -| ir.cpp:2230:25:2230:25 | Address | &:r2230_5 | -| ir.cpp:2231:12:2231:13 | Address | &:r2231_1 | -| ir.cpp:2231:12:2231:13 | Address | &:r2231_1 | -| ir.cpp:2231:12:2231:13 | Arg(this) | this:r2231_1 | -| ir.cpp:2231:12:2231:13 | CallTarget | func:r2231_3 | -| ir.cpp:2231:12:2231:13 | ChiPartial | partial:m2231_5 | -| ir.cpp:2231:12:2231:13 | ChiPartial | partial:m2231_7 | -| ir.cpp:2231:12:2231:13 | ChiTotal | total:m2230_4 | -| ir.cpp:2231:12:2231:13 | ChiTotal | total:m2231_2 | -| ir.cpp:2231:12:2231:13 | SideEffect | ~m2230_4 | -| ir.cpp:2232:8:2232:8 | Address | &:r2232_1 | -| ir.cpp:2232:8:2232:8 | Condition | r2232_2 | -| ir.cpp:2232:8:2232:8 | Load | m2230_6 | -| ir.cpp:2233:16:2233:17 | Address | &:r2233_1 | -| ir.cpp:2233:16:2233:17 | Address | &:r2233_1 | -| ir.cpp:2233:16:2233:17 | Arg(this) | this:r2233_1 | -| ir.cpp:2233:16:2233:17 | CallTarget | func:r2233_3 | -| ir.cpp:2233:16:2233:17 | ChiPartial | partial:m2233_5 | -| ir.cpp:2233:16:2233:17 | ChiPartial | partial:m2233_7 | -| ir.cpp:2233:16:2233:17 | ChiTotal | total:m2231_6 | -| ir.cpp:2233:16:2233:17 | ChiTotal | total:m2233_2 | -| ir.cpp:2233:16:2233:17 | SideEffect | ~m2231_6 | -| ir.cpp:2234:5:2234:5 | Address | &:r2234_1 | -| ir.cpp:2234:5:2234:5 | Address | &:r2234_1 | -| ir.cpp:2234:5:2234:5 | Arg(this) | this:r2234_1 | -| ir.cpp:2234:5:2234:5 | CallTarget | func:r2234_2 | -| ir.cpp:2234:5:2234:5 | ChiPartial | partial:m2234_4 | -| ir.cpp:2234:5:2234:5 | ChiPartial | partial:m2234_7 | -| ir.cpp:2234:5:2234:5 | ChiTotal | total:m2233_6 | -| ir.cpp:2234:5:2234:5 | ChiTotal | total:m2233_8 | -| ir.cpp:2234:5:2234:5 | SideEffect | m2233_8 | -| ir.cpp:2234:5:2234:5 | SideEffect | ~m2233_6 | -| ir.cpp:2235:16:2235:17 | Address | &:r2235_1 | -| ir.cpp:2235:16:2235:17 | Address | &:r2235_1 | -| ir.cpp:2235:16:2235:17 | Arg(this) | this:r2235_1 | -| ir.cpp:2235:16:2235:17 | CallTarget | func:r2235_3 | -| ir.cpp:2235:16:2235:17 | ChiPartial | partial:m2235_5 | -| ir.cpp:2235:16:2235:17 | ChiPartial | partial:m2235_7 | -| ir.cpp:2235:16:2235:17 | ChiTotal | total:m2231_6 | -| ir.cpp:2235:16:2235:17 | ChiTotal | total:m2235_2 | -| ir.cpp:2235:16:2235:17 | SideEffect | ~m2231_6 | -| ir.cpp:2236:5:2236:5 | Address | &:r2236_1 | -| ir.cpp:2236:5:2236:5 | Address | &:r2236_1 | -| ir.cpp:2236:5:2236:5 | Arg(this) | this:r2236_1 | -| ir.cpp:2236:5:2236:5 | CallTarget | func:r2236_2 | -| ir.cpp:2236:5:2236:5 | ChiPartial | partial:m2236_4 | -| ir.cpp:2236:5:2236:5 | ChiPartial | partial:m2236_7 | -| ir.cpp:2236:5:2236:5 | ChiTotal | total:m2235_6 | -| ir.cpp:2236:5:2236:5 | ChiTotal | total:m2235_8 | -| ir.cpp:2236:5:2236:5 | SideEffect | m2235_8 | -| ir.cpp:2236:5:2236:5 | SideEffect | ~m2235_6 | -| ir.cpp:2237:12:2237:13 | Address | &:r2237_2 | -| ir.cpp:2237:12:2237:13 | Address | &:r2237_2 | -| ir.cpp:2237:12:2237:13 | Arg(this) | this:r2237_2 | -| ir.cpp:2237:12:2237:13 | CallTarget | func:r2237_4 | -| ir.cpp:2237:12:2237:13 | ChiPartial | partial:m2237_6 | -| ir.cpp:2237:12:2237:13 | ChiPartial | partial:m2237_8 | -| ir.cpp:2237:12:2237:13 | ChiTotal | total:m2237_1 | -| ir.cpp:2237:12:2237:13 | ChiTotal | total:m2237_3 | -| ir.cpp:2237:12:2237:13 | Phi | from 1:~m2234_5 | -| ir.cpp:2237:12:2237:13 | Phi | from 2:~m2236_5 | -| ir.cpp:2237:12:2237:13 | SideEffect | ~m2237_1 | -| ir.cpp:2238:1:2238:1 | Address | &:r2238_2 | -| ir.cpp:2238:1:2238:1 | Address | &:r2238_2 | -| ir.cpp:2238:1:2238:1 | Address | &:r2238_10 | -| ir.cpp:2238:1:2238:1 | Address | &:r2238_10 | -| ir.cpp:2238:1:2238:1 | Arg(this) | this:r2238_2 | -| ir.cpp:2238:1:2238:1 | Arg(this) | this:r2238_10 | -| ir.cpp:2238:1:2238:1 | CallTarget | func:r2238_3 | -| ir.cpp:2238:1:2238:1 | CallTarget | func:r2238_11 | -| ir.cpp:2238:1:2238:1 | ChiPartial | partial:m2238_5 | -| ir.cpp:2238:1:2238:1 | ChiPartial | partial:m2238_8 | -| ir.cpp:2238:1:2238:1 | ChiPartial | partial:m2238_13 | -| ir.cpp:2238:1:2238:1 | ChiPartial | partial:m2238_16 | -| ir.cpp:2238:1:2238:1 | ChiTotal | total:m2231_8 | -| ir.cpp:2238:1:2238:1 | ChiTotal | total:m2237_7 | -| ir.cpp:2238:1:2238:1 | ChiTotal | total:m2237_9 | -| ir.cpp:2238:1:2238:1 | ChiTotal | total:m2238_6 | -| ir.cpp:2238:1:2238:1 | SideEffect | m2231_8 | -| ir.cpp:2238:1:2238:1 | SideEffect | m2237_9 | -| ir.cpp:2238:1:2238:1 | SideEffect | ~m2237_7 | -| ir.cpp:2238:1:2238:1 | SideEffect | ~m2238_6 | -| ir.cpp:2240:6:2240:19 | ChiPartial | partial:m2240_3 | -| ir.cpp:2240:6:2240:19 | ChiTotal | total:m2240_2 | -| ir.cpp:2240:6:2240:19 | SideEffect | ~m2250_54 | -| ir.cpp:2241:10:2241:10 | Address | &:r2241_1 | -| ir.cpp:2241:13:2241:16 | StoreValue | r2241_2 | -| ir.cpp:2242:16:2242:16 | Address | &:r2242_1 | -| ir.cpp:2242:16:2242:16 | Address | &:r2242_1 | -| ir.cpp:2242:16:2242:16 | Address | &:r2242_31 | -| ir.cpp:2242:16:2242:16 | Address | &:r2242_31 | -| ir.cpp:2242:16:2242:16 | Arg(this) | this:r2242_1 | -| ir.cpp:2242:16:2242:16 | Arg(this) | this:r2242_31 | -| ir.cpp:2242:16:2242:16 | CallTarget | func:r2242_32 | -| ir.cpp:2242:16:2242:16 | ChiPartial | partial:m2242_34 | -| ir.cpp:2242:16:2242:16 | ChiPartial | partial:m2242_37 | -| ir.cpp:2242:16:2242:16 | ChiTotal | total:m2242_12 | -| ir.cpp:2242:16:2242:16 | ChiTotal | total:m2242_13 | -| ir.cpp:2242:16:2242:16 | SideEffect | m2242_12 | -| ir.cpp:2242:16:2242:16 | SideEffect | ~m2242_13 | -| ir.cpp:2242:18:2242:24 | Address | &:r2242_5 | -| ir.cpp:2242:18:2242:24 | Arg(0) | 0:r2242_5 | -| ir.cpp:2242:18:2242:24 | SideEffect | ~m2240_3 | -| ir.cpp:2242:18:2242:24 | Unary | r2242_4 | -| ir.cpp:2242:18:2242:25 | CallTarget | func:r2242_3 | -| ir.cpp:2242:18:2242:25 | ChiPartial | partial:m2242_7 | -| ir.cpp:2242:18:2242:25 | ChiPartial | partial:m2242_10 | -| ir.cpp:2242:18:2242:25 | ChiTotal | total:m2240_4 | -| ir.cpp:2242:18:2242:25 | ChiTotal | total:m2242_2 | -| ir.cpp:2242:18:2242:25 | SideEffect | ~m2240_4 | -| ir.cpp:2242:28:2242:28 | Address | &:r2242_15 | -| ir.cpp:2242:28:2242:28 | Left | r2242_17 | -| ir.cpp:2242:28:2242:28 | Load | m2242_14 | -| ir.cpp:2242:28:2242:28 | Phi | from 0:m2241_3 | -| ir.cpp:2242:28:2242:28 | Phi | from 0:m2242_11 | -| ir.cpp:2242:28:2242:28 | Phi | from 0:~m2242_8 | -| ir.cpp:2242:28:2242:28 | Phi | from 2:m2242_28 | -| ir.cpp:2242:28:2242:28 | Phi | from 2:m2242_30 | -| ir.cpp:2242:28:2242:28 | Phi | from 2:~m2242_25 | -| ir.cpp:2242:28:2242:28 | Unary | r2242_16 | -| ir.cpp:2242:28:2242:33 | Condition | r2242_19 | -| ir.cpp:2242:33:2242:33 | Right | r2242_18 | -| ir.cpp:2242:36:2242:36 | Address | &:r2242_29 | -| ir.cpp:2242:40:2242:40 | Address | &:r2242_21 | -| ir.cpp:2242:40:2242:40 | Address | &:r2242_21 | -| ir.cpp:2242:40:2242:40 | Arg(this) | this:r2242_21 | -| ir.cpp:2242:40:2242:40 | ChiPartial | partial:m2242_27 | -| ir.cpp:2242:40:2242:40 | ChiTotal | total:m2242_12 | -| ir.cpp:2242:40:2242:40 | SideEffect | m2242_12 | -| ir.cpp:2242:42:2242:49 | CallTarget | func:r2242_22 | -| ir.cpp:2242:42:2242:49 | ChiPartial | partial:m2242_24 | -| ir.cpp:2242:42:2242:49 | ChiTotal | total:m2244_5 | -| ir.cpp:2242:42:2242:49 | SideEffect | ~m2244_5 | -| ir.cpp:2242:42:2242:49 | StoreValue | r2242_23 | -| ir.cpp:2243:16:2243:17 | Address | &:r2243_1 | -| ir.cpp:2243:16:2243:17 | Address | &:r2243_1 | -| ir.cpp:2243:16:2243:17 | Arg(this) | this:r2243_1 | -| ir.cpp:2243:16:2243:17 | CallTarget | func:r2243_3 | -| ir.cpp:2243:16:2243:17 | ChiPartial | partial:m2243_5 | -| ir.cpp:2243:16:2243:17 | ChiPartial | partial:m2243_7 | -| ir.cpp:2243:16:2243:17 | ChiTotal | total:m2242_13 | -| ir.cpp:2243:16:2243:17 | ChiTotal | total:m2243_2 | -| ir.cpp:2243:16:2243:17 | SideEffect | ~m2242_13 | -| ir.cpp:2244:5:2244:5 | Address | &:r2244_1 | -| ir.cpp:2244:5:2244:5 | Address | &:r2244_1 | -| ir.cpp:2244:5:2244:5 | Arg(this) | this:r2244_1 | -| ir.cpp:2244:5:2244:5 | CallTarget | func:r2244_2 | -| ir.cpp:2244:5:2244:5 | ChiPartial | partial:m2244_4 | -| ir.cpp:2244:5:2244:5 | ChiPartial | partial:m2244_7 | -| ir.cpp:2244:5:2244:5 | ChiTotal | total:m2243_6 | -| ir.cpp:2244:5:2244:5 | ChiTotal | total:m2243_8 | -| ir.cpp:2244:5:2244:5 | SideEffect | m2243_8 | -| ir.cpp:2244:5:2244:5 | SideEffect | ~m2243_6 | -| ir.cpp:2246:5:2246:5 | Address | &:r2246_1 | -| ir.cpp:2246:5:2246:5 | Address | &:r2246_24 | -| ir.cpp:2246:5:2246:5 | Address | &:r2246_32 | -| ir.cpp:2246:16:2246:16 | Address | &:r2246_50 | -| ir.cpp:2246:16:2246:16 | Address | &:r2246_50 | -| ir.cpp:2246:16:2246:16 | Address | &:r2246_67 | -| ir.cpp:2246:16:2246:16 | Address | &:r2246_67 | -| ir.cpp:2246:16:2246:16 | Arg(this) | this:r2246_50 | -| ir.cpp:2246:16:2246:16 | Arg(this) | this:r2246_67 | -| ir.cpp:2246:16:2246:16 | CallTarget | func:r2246_52 | -| ir.cpp:2246:16:2246:16 | CallTarget | func:r2246_68 | -| ir.cpp:2246:16:2246:16 | ChiPartial | partial:m2246_62 | -| ir.cpp:2246:16:2246:16 | ChiPartial | partial:m2246_65 | -| ir.cpp:2246:16:2246:16 | ChiPartial | partial:m2246_70 | -| ir.cpp:2246:16:2246:16 | ChiPartial | partial:m2246_73 | -| ir.cpp:2246:16:2246:16 | ChiTotal | total:m2246_51 | -| ir.cpp:2246:16:2246:16 | ChiTotal | total:m2246_57 | -| ir.cpp:2246:16:2246:16 | ChiTotal | total:m2246_66 | -| ir.cpp:2246:16:2246:16 | ChiTotal | total:m2248_5 | -| ir.cpp:2246:16:2246:16 | SideEffect | m2246_66 | -| ir.cpp:2246:16:2246:16 | SideEffect | ~m2246_57 | -| ir.cpp:2246:16:2246:16 | SideEffect | ~m2248_5 | -| ir.cpp:2246:20:2246:20 | Address | &:r2246_25 | -| ir.cpp:2246:20:2246:20 | Address | &:r2246_33 | -| ir.cpp:2246:20:2246:20 | Address | &:r2246_44 | -| ir.cpp:2246:20:2246:20 | Address | &:r2246_75 | -| ir.cpp:2246:20:2246:20 | Address | &:r2246_75 | -| ir.cpp:2246:20:2246:20 | Arg(0) | 0:r2246_45 | -| ir.cpp:2246:20:2246:20 | Arg(this) | this:r0_2 | -| ir.cpp:2246:20:2246:20 | Arg(this) | this:r0_5 | -| ir.cpp:2246:20:2246:20 | Arg(this) | this:r0_7 | -| ir.cpp:2246:20:2246:20 | Arg(this) | this:r0_9 | -| ir.cpp:2246:20:2246:20 | Arg(this) | this:r2246_75 | -| ir.cpp:2246:20:2246:20 | CallTarget | func:r2246_27 | -| ir.cpp:2246:20:2246:20 | CallTarget | func:r2246_35 | -| ir.cpp:2246:20:2246:20 | CallTarget | func:r2246_43 | -| ir.cpp:2246:20:2246:20 | CallTarget | func:r2246_54 | -| ir.cpp:2246:20:2246:20 | CallTarget | func:r2246_76 | -| ir.cpp:2246:20:2246:20 | ChiPartial | partial:m2246_29 | -| ir.cpp:2246:20:2246:20 | ChiPartial | partial:m2246_37 | -| ir.cpp:2246:20:2246:20 | ChiPartial | partial:m2246_47 | -| ir.cpp:2246:20:2246:20 | ChiPartial | partial:m2246_56 | -| ir.cpp:2246:20:2246:20 | ChiPartial | partial:m2246_78 | -| ir.cpp:2246:20:2246:20 | ChiPartial | partial:m2246_81 | -| ir.cpp:2246:20:2246:20 | ChiTotal | total:m2246_19 | -| ir.cpp:2246:20:2246:20 | ChiTotal | total:m2246_30 | -| ir.cpp:2246:20:2246:20 | ChiTotal | total:m2246_40 | -| ir.cpp:2246:20:2246:20 | ChiTotal | total:m2246_41 | -| ir.cpp:2246:20:2246:20 | ChiTotal | total:m2246_48 | -| ir.cpp:2246:20:2246:20 | ChiTotal | total:m2246_71 | -| ir.cpp:2246:20:2246:20 | Condition | r2246_46 | -| ir.cpp:2246:20:2246:20 | Load | m2246_23 | -| ir.cpp:2246:20:2246:20 | Load | m2246_23 | -| ir.cpp:2246:20:2246:20 | Load | m2246_39 | -| ir.cpp:2246:20:2246:20 | Phi | from 3:m2246_31 | -| ir.cpp:2246:20:2246:20 | Phi | from 3:~m2246_38 | -| ir.cpp:2246:20:2246:20 | Phi | from 5:m2246_82 | -| ir.cpp:2246:20:2246:20 | Phi | from 5:~m2246_79 | -| ir.cpp:2246:20:2246:20 | SideEffect | m2246_40 | -| ir.cpp:2246:20:2246:20 | SideEffect | ~m2246_19 | -| ir.cpp:2246:20:2246:20 | SideEffect | ~m2246_30 | -| ir.cpp:2246:20:2246:20 | SideEffect | ~m2246_41 | -| ir.cpp:2246:20:2246:20 | SideEffect | ~m2246_48 | -| ir.cpp:2246:20:2246:20 | SideEffect | ~m2246_71 | -| ir.cpp:2246:20:2246:20 | StoreValue | r2246_28 | -| ir.cpp:2246:20:2246:20 | StoreValue | r2246_36 | -| ir.cpp:2246:20:2246:20 | Unary | r2246_26 | -| ir.cpp:2246:20:2246:20 | Unary | r2246_34 | -| ir.cpp:2246:20:2246:20 | Unary | r2246_42 | -| ir.cpp:2246:20:2246:20 | Unary | r2246_53 | -| ir.cpp:2246:20:2246:20 | Unary | r2246_55 | -| ir.cpp:2246:20:2246:20 | Unary | r2246_77 | -| ir.cpp:2246:20:2246:50 | Address | &:r2246_2 | -| ir.cpp:2246:20:2246:50 | Address | &:r2246_2 | -| ir.cpp:2246:20:2246:50 | Arg(this) | this:r2246_2 | -| ir.cpp:2246:20:2246:50 | CallTarget | func:r2246_4 | -| ir.cpp:2246:20:2246:50 | ChiPartial | partial:m2246_18 | -| ir.cpp:2246:20:2246:50 | ChiPartial | partial:m2246_20 | -| ir.cpp:2246:20:2246:50 | ChiTotal | total:m2246_3 | -| ir.cpp:2246:20:2246:50 | ChiTotal | total:m2246_12 | -| ir.cpp:2246:20:2246:50 | SideEffect | ~m2246_12 | -| ir.cpp:2246:20:2246:50 | StoreValue | r2246_22 | -| ir.cpp:2246:20:2246:50 | Unary | r2246_2 | -| ir.cpp:2246:20:2246:51 | Address | &:r2246_60 | -| ir.cpp:2246:20:2246:51 | Arg(0) | 0:r2246_60 | -| ir.cpp:2246:20:2246:51 | SideEffect | ~m2246_63 | -| ir.cpp:2246:20:2246:51 | Unary | r2246_58 | -| ir.cpp:2246:20:2246:51 | Unary | r2246_59 | -| ir.cpp:2246:35:2246:49 | Address | &:r2246_5 | -| ir.cpp:2246:35:2246:49 | Address | &:r2246_5 | -| ir.cpp:2246:35:2246:49 | Address | &:r2246_5 | -| ir.cpp:2246:35:2246:49 | Arg(0) | 0:r2246_16 | -| ir.cpp:2246:35:2246:49 | Arg(this) | this:r2246_5 | -| ir.cpp:2246:35:2246:49 | CallTarget | func:r2246_7 | -| ir.cpp:2246:35:2246:49 | ChiPartial | partial:m2246_11 | -| ir.cpp:2246:35:2246:49 | ChiPartial | partial:m2246_14 | -| ir.cpp:2246:35:2246:49 | ChiTotal | total:m2242_35 | -| ir.cpp:2246:35:2246:49 | ChiTotal | total:m2246_6 | -| ir.cpp:2246:35:2246:49 | Load | m2246_15 | -| ir.cpp:2246:35:2246:49 | SideEffect | ~m2242_35 | -| ir.cpp:2246:42:2246:48 | Address | &:r2246_9 | -| ir.cpp:2246:42:2246:48 | Arg(0) | 0:r2246_9 | -| ir.cpp:2246:42:2246:48 | SideEffect | ~m2240_3 | -| ir.cpp:2246:42:2246:48 | Unary | r2246_8 | -| ir.cpp:2247:16:2247:17 | Address | &:r2247_1 | -| ir.cpp:2247:16:2247:17 | Address | &:r2247_1 | -| ir.cpp:2247:16:2247:17 | Arg(this) | this:r2247_1 | -| ir.cpp:2247:16:2247:17 | CallTarget | func:r2247_3 | -| ir.cpp:2247:16:2247:17 | ChiPartial | partial:m2247_5 | -| ir.cpp:2247:16:2247:17 | ChiPartial | partial:m2247_7 | -| ir.cpp:2247:16:2247:17 | ChiTotal | total:m2246_63 | -| ir.cpp:2247:16:2247:17 | ChiTotal | total:m2247_2 | -| ir.cpp:2247:16:2247:17 | SideEffect | ~m2246_63 | -| ir.cpp:2248:5:2248:5 | Address | &:r2248_1 | -| ir.cpp:2248:5:2248:5 | Address | &:r2248_1 | -| ir.cpp:2248:5:2248:5 | Arg(this) | this:r2248_1 | -| ir.cpp:2248:5:2248:5 | CallTarget | func:r2248_2 | -| ir.cpp:2248:5:2248:5 | ChiPartial | partial:m2248_4 | -| ir.cpp:2248:5:2248:5 | ChiPartial | partial:m2248_7 | -| ir.cpp:2248:5:2248:5 | ChiTotal | total:m2247_6 | -| ir.cpp:2248:5:2248:5 | ChiTotal | total:m2247_8 | -| ir.cpp:2248:5:2248:5 | SideEffect | m2247_8 | -| ir.cpp:2248:5:2248:5 | SideEffect | ~m2247_6 | -| ir.cpp:2250:16:2250:16 | Address | &:r2250_1 | -| ir.cpp:2250:16:2250:16 | Address | &:r2250_1 | -| ir.cpp:2250:16:2250:16 | Address | &:r2250_50 | -| ir.cpp:2250:16:2250:16 | Address | &:r2250_50 | -| ir.cpp:2250:16:2250:16 | Arg(this) | this:r2250_1 | -| ir.cpp:2250:16:2250:16 | Arg(this) | this:r2250_50 | -| ir.cpp:2250:16:2250:16 | CallTarget | func:r2250_51 | -| ir.cpp:2250:16:2250:16 | ChiPartial | partial:m2250_53 | -| ir.cpp:2250:16:2250:16 | ChiPartial | partial:m2250_56 | -| ir.cpp:2250:16:2250:16 | ChiTotal | total:m2250_23 | -| ir.cpp:2250:16:2250:16 | ChiTotal | total:m2250_46 | -| ir.cpp:2250:16:2250:16 | SideEffect | m2250_23 | -| ir.cpp:2250:16:2250:16 | SideEffect | ~m2250_46 | -| ir.cpp:2250:18:2250:24 | Address | &:r2250_5 | -| ir.cpp:2250:18:2250:24 | Arg(0) | 0:r2250_5 | -| ir.cpp:2250:18:2250:24 | SideEffect | ~m2240_3 | -| ir.cpp:2250:18:2250:24 | Unary | r2250_4 | -| ir.cpp:2250:18:2250:25 | CallTarget | func:r2250_3 | -| ir.cpp:2250:18:2250:25 | ChiPartial | partial:m2250_7 | -| ir.cpp:2250:18:2250:25 | ChiPartial | partial:m2250_10 | -| ir.cpp:2250:18:2250:25 | ChiTotal | total:m2246_48 | -| ir.cpp:2250:18:2250:25 | ChiTotal | total:m2250_2 | -| ir.cpp:2250:18:2250:25 | SideEffect | ~m2246_48 | -| ir.cpp:2250:28:2250:29 | Address | &:r2250_12 | -| ir.cpp:2250:28:2250:29 | Address | &:r2250_12 | -| ir.cpp:2250:28:2250:29 | Address | &:r2250_42 | -| ir.cpp:2250:28:2250:29 | Address | &:r2250_42 | -| ir.cpp:2250:28:2250:29 | Arg(this) | this:r2250_12 | -| ir.cpp:2250:28:2250:29 | Arg(this) | this:r2250_42 | -| ir.cpp:2250:28:2250:29 | CallTarget | func:r2250_43 | -| ir.cpp:2250:28:2250:29 | ChiPartial | partial:m2250_45 | -| ir.cpp:2250:28:2250:29 | ChiPartial | partial:m2250_48 | -| ir.cpp:2250:28:2250:29 | ChiTotal | total:m2250_22 | -| ir.cpp:2250:28:2250:29 | ChiTotal | total:m2250_24 | -| ir.cpp:2250:28:2250:29 | SideEffect | m2250_22 | -| ir.cpp:2250:28:2250:29 | SideEffect | ~m2250_24 | -| ir.cpp:2250:31:2250:37 | Address | &:r2250_16 | -| ir.cpp:2250:31:2250:37 | Arg(0) | 0:r2250_16 | -| ir.cpp:2250:31:2250:37 | SideEffect | ~m2240_3 | -| ir.cpp:2250:31:2250:37 | Unary | r2250_15 | -| ir.cpp:2250:31:2250:38 | CallTarget | func:r2250_14 | -| ir.cpp:2250:31:2250:38 | ChiPartial | partial:m2250_18 | -| ir.cpp:2250:31:2250:38 | ChiPartial | partial:m2250_21 | -| ir.cpp:2250:31:2250:38 | ChiTotal | total:m2250_8 | -| ir.cpp:2250:31:2250:38 | ChiTotal | total:m2250_13 | -| ir.cpp:2250:31:2250:38 | SideEffect | ~m2250_8 | -| ir.cpp:2250:41:2250:41 | Address | &:r2250_26 | -| ir.cpp:2250:41:2250:41 | Left | r2250_28 | -| ir.cpp:2250:41:2250:41 | Load | m2250_25 | -| ir.cpp:2250:41:2250:41 | Phi | from 6:m2242_14 | -| ir.cpp:2250:41:2250:41 | Phi | from 6:m2250_11 | -| ir.cpp:2250:41:2250:41 | Phi | from 6:~m2250_19 | -| ir.cpp:2250:41:2250:41 | Phi | from 8:m2250_39 | -| ir.cpp:2250:41:2250:41 | Phi | from 8:m2250_41 | -| ir.cpp:2250:41:2250:41 | Phi | from 8:~m2250_36 | -| ir.cpp:2250:41:2250:41 | Unary | r2250_27 | -| ir.cpp:2250:41:2250:46 | Condition | r2250_30 | -| ir.cpp:2250:46:2250:46 | Right | r2250_29 | -| ir.cpp:2250:49:2250:49 | Address | &:r2250_40 | -| ir.cpp:2250:53:2250:53 | Address | &:r2250_32 | -| ir.cpp:2250:53:2250:53 | Address | &:r2250_32 | -| ir.cpp:2250:53:2250:53 | Arg(this) | this:r2250_32 | -| ir.cpp:2250:53:2250:53 | ChiPartial | partial:m2250_38 | -| ir.cpp:2250:53:2250:53 | ChiTotal | total:m2250_23 | -| ir.cpp:2250:53:2250:53 | SideEffect | m2250_23 | -| ir.cpp:2250:55:2250:62 | CallTarget | func:r2250_33 | -| ir.cpp:2250:55:2250:62 | ChiPartial | partial:m2250_35 | -| ir.cpp:2250:55:2250:62 | ChiTotal | total:m2250_24 | -| ir.cpp:2250:55:2250:62 | SideEffect | ~m2250_24 | -| ir.cpp:2250:55:2250:62 | StoreValue | r2250_34 | -| ir.cpp:2251:9:2251:9 | Address | &:r2251_2 | -| ir.cpp:2251:13:2251:13 | StoreValue | r2251_1 | -| ir.cpp:2255:6:2255:19 | ChiPartial | partial:m2255_3 | -| ir.cpp:2255:6:2255:19 | ChiTotal | total:m2255_2 | -| ir.cpp:2255:6:2255:19 | SideEffect | ~m2260_5 | -| ir.cpp:2255:26:2255:26 | Address | &:r2255_5 | -| ir.cpp:2256:15:2256:15 | Address | &:r2256_1 | -| ir.cpp:2256:15:2256:15 | Address | &:r2256_1 | -| ir.cpp:2256:15:2256:15 | Arg(this) | this:r2256_1 | -| ir.cpp:2256:18:2256:33 | CallTarget | func:r2256_3 | -| ir.cpp:2256:18:2256:33 | ChiPartial | partial:m2256_7 | -| ir.cpp:2256:18:2256:33 | ChiPartial | partial:m2256_10 | -| ir.cpp:2256:18:2256:33 | ChiTotal | total:m2255_4 | -| ir.cpp:2256:18:2256:33 | ChiTotal | total:m2256_2 | -| ir.cpp:2256:18:2256:33 | SideEffect | ~m2255_4 | -| ir.cpp:2256:26:2256:32 | Address | &:r2256_5 | -| ir.cpp:2256:26:2256:32 | Arg(0) | 0:r2256_5 | -| ir.cpp:2256:26:2256:32 | SideEffect | ~m2255_3 | -| ir.cpp:2256:26:2256:32 | Unary | r2256_4 | -| ir.cpp:2256:36:2256:36 | Address | &:r2256_12 | -| ir.cpp:2256:36:2256:36 | Condition | r2256_13 | -| ir.cpp:2256:36:2256:36 | Load | m2255_6 | -| ir.cpp:2257:13:2257:13 | Address | &:r2257_1 | -| ir.cpp:2257:16:2257:17 | StoreValue | r2257_2 | -| ir.cpp:2259:13:2259:13 | Address | &:r2259_1 | -| ir.cpp:2259:16:2259:17 | StoreValue | r2259_2 | -| ir.cpp:2260:5:2260:5 | Address | &:r2260_1 | -| ir.cpp:2260:5:2260:5 | Address | &:r2260_1 | -| ir.cpp:2260:5:2260:5 | Arg(this) | this:r2260_1 | -| ir.cpp:2260:5:2260:5 | CallTarget | func:r2260_2 | -| ir.cpp:2260:5:2260:5 | ChiPartial | partial:m2260_4 | -| ir.cpp:2260:5:2260:5 | ChiPartial | partial:m2260_7 | -| ir.cpp:2260:5:2260:5 | ChiTotal | total:m2256_8 | -| ir.cpp:2260:5:2260:5 | ChiTotal | total:m2256_11 | -| ir.cpp:2260:5:2260:5 | SideEffect | m2256_11 | -| ir.cpp:2260:5:2260:5 | SideEffect | ~m2256_8 | -| ir.cpp:2270:6:2270:19 | ChiPartial | partial:m2270_3 | -| ir.cpp:2270:6:2270:19 | ChiTotal | total:m2270_2 | -| ir.cpp:2270:6:2270:19 | SideEffect | ~m2275_14 | -| ir.cpp:2270:26:2270:26 | Address | &:r2270_5 | -| ir.cpp:2271:8:2271:23 | Address | &:r2271_1 | -| ir.cpp:2271:8:2271:23 | Address | &:r2271_1 | -| ir.cpp:2271:8:2271:23 | Arg(this) | this:r2271_1 | -| ir.cpp:2271:8:2271:23 | Condition | r2271_19 | -| ir.cpp:2271:13:2271:13 | Address | &:r2271_11 | -| ir.cpp:2271:13:2271:13 | Address | &:r2271_11 | -| ir.cpp:2271:13:2271:13 | Arg(this) | this:r2271_11 | -| ir.cpp:2271:13:2271:13 | CallTarget | func:r2271_12 | -| ir.cpp:2271:13:2271:13 | ChiPartial | partial:m2271_14 | -| ir.cpp:2271:13:2271:13 | ChiPartial | partial:m2271_17 | -| ir.cpp:2271:13:2271:13 | ChiTotal | total:m2271_8 | -| ir.cpp:2271:13:2271:13 | ChiTotal | total:m2271_10 | -| ir.cpp:2271:13:2271:13 | SideEffect | m2271_10 | -| ir.cpp:2271:13:2271:13 | SideEffect | ~m2271_8 | -| ir.cpp:2271:13:2271:13 | Unary | r2271_13 | -| ir.cpp:2271:16:2271:23 | CallTarget | func:r2271_3 | -| ir.cpp:2271:16:2271:23 | ChiPartial | partial:m2271_7 | -| ir.cpp:2271:16:2271:23 | ChiPartial | partial:m2271_9 | -| ir.cpp:2271:16:2271:23 | ChiTotal | total:m2270_4 | -| ir.cpp:2271:16:2271:23 | ChiTotal | total:m2271_2 | -| ir.cpp:2271:16:2271:23 | SideEffect | ~m2270_4 | -| ir.cpp:2271:22:2271:22 | Address | &:r2271_4 | -| ir.cpp:2271:22:2271:22 | Arg(0) | 0:r2271_5 | -| ir.cpp:2271:22:2271:22 | Load | m2270_6 | -| ir.cpp:2272:16:2272:17 | Address | &:r2272_1 | -| ir.cpp:2272:16:2272:17 | Address | &:r2272_1 | -| ir.cpp:2272:16:2272:17 | Arg(this) | this:r2272_1 | -| ir.cpp:2272:16:2272:17 | CallTarget | func:r2272_3 | -| ir.cpp:2272:16:2272:17 | ChiPartial | partial:m2272_5 | -| ir.cpp:2272:16:2272:17 | ChiPartial | partial:m2272_7 | -| ir.cpp:2272:16:2272:17 | ChiTotal | total:m2271_15 | -| ir.cpp:2272:16:2272:17 | ChiTotal | total:m2272_2 | -| ir.cpp:2272:16:2272:17 | SideEffect | ~m2271_15 | -| ir.cpp:2273:5:2273:5 | Address | &:r2273_1 | -| ir.cpp:2273:5:2273:5 | Address | &:r2273_1 | -| ir.cpp:2273:5:2273:5 | Arg(this) | this:r2273_1 | -| ir.cpp:2273:5:2273:5 | CallTarget | func:r2273_2 | -| ir.cpp:2273:5:2273:5 | ChiPartial | partial:m2273_4 | -| ir.cpp:2273:5:2273:5 | ChiPartial | partial:m2273_7 | -| ir.cpp:2273:5:2273:5 | ChiTotal | total:m2272_6 | -| ir.cpp:2273:5:2273:5 | ChiTotal | total:m2272_8 | -| ir.cpp:2273:5:2273:5 | SideEffect | m2272_8 | -| ir.cpp:2273:5:2273:5 | SideEffect | ~m2272_6 | -| ir.cpp:2274:16:2274:17 | Address | &:r2274_1 | -| ir.cpp:2274:16:2274:17 | Address | &:r2274_1 | -| ir.cpp:2274:16:2274:17 | Arg(this) | this:r2274_1 | -| ir.cpp:2274:16:2274:17 | CallTarget | func:r2274_3 | -| ir.cpp:2274:16:2274:17 | ChiPartial | partial:m2274_5 | -| ir.cpp:2274:16:2274:17 | ChiPartial | partial:m2274_7 | -| ir.cpp:2274:16:2274:17 | ChiTotal | total:m2271_15 | -| ir.cpp:2274:16:2274:17 | ChiTotal | total:m2274_2 | -| ir.cpp:2274:16:2274:17 | SideEffect | ~m2271_15 | -| ir.cpp:2275:5:2275:5 | Address | &:r2275_1 | -| ir.cpp:2275:5:2275:5 | Address | &:r2275_1 | -| ir.cpp:2275:5:2275:5 | Address | &:r2275_10 | -| ir.cpp:2275:5:2275:5 | Address | &:r2275_10 | -| ir.cpp:2275:5:2275:5 | Arg(this) | this:r2275_1 | -| ir.cpp:2275:5:2275:5 | Arg(this) | this:r2275_10 | -| ir.cpp:2275:5:2275:5 | CallTarget | func:r2275_2 | -| ir.cpp:2275:5:2275:5 | CallTarget | func:r2275_11 | -| ir.cpp:2275:5:2275:5 | ChiPartial | partial:m2275_4 | -| ir.cpp:2275:5:2275:5 | ChiPartial | partial:m2275_7 | -| ir.cpp:2275:5:2275:5 | ChiPartial | partial:m2275_13 | -| ir.cpp:2275:5:2275:5 | ChiPartial | partial:m2275_16 | -| ir.cpp:2275:5:2275:5 | ChiTotal | total:m2271_18 | -| ir.cpp:2275:5:2275:5 | ChiTotal | total:m2274_6 | -| ir.cpp:2275:5:2275:5 | ChiTotal | total:m2274_8 | -| ir.cpp:2275:5:2275:5 | ChiTotal | total:m2275_9 | -| ir.cpp:2275:5:2275:5 | Phi | from 1:~m2273_5 | -| ir.cpp:2275:5:2275:5 | Phi | from 2:~m2275_5 | -| ir.cpp:2275:5:2275:5 | SideEffect | m2271_18 | -| ir.cpp:2275:5:2275:5 | SideEffect | m2274_8 | -| ir.cpp:2275:5:2275:5 | SideEffect | ~m2274_6 | -| ir.cpp:2275:5:2275:5 | SideEffect | ~m2275_9 | -| ir.cpp:2278:6:2278:25 | ChiPartial | partial:m2278_3 | -| ir.cpp:2278:6:2278:25 | ChiTotal | total:m2278_2 | -| ir.cpp:2278:6:2278:25 | SideEffect | ~m2289_13 | -| ir.cpp:2278:32:2278:32 | Address | &:r2278_5 | -| ir.cpp:2280:16:2280:16 | Address | &:r2280_1 | -| ir.cpp:2280:16:2280:16 | Address | &:r2280_1 | -| ir.cpp:2280:16:2280:16 | Arg(this) | this:r2280_1 | -| ir.cpp:2280:16:2280:16 | CallTarget | func:r2280_3 | -| ir.cpp:2280:16:2280:16 | ChiPartial | partial:m2280_5 | -| ir.cpp:2280:16:2280:16 | ChiPartial | partial:m2280_7 | -| ir.cpp:2280:16:2280:16 | ChiTotal | total:m2278_4 | -| ir.cpp:2280:16:2280:16 | ChiTotal | total:m2280_2 | -| ir.cpp:2280:16:2280:16 | SideEffect | ~m2278_4 | -| ir.cpp:2281:15:2281:15 | Address | &:r2281_2 | -| ir.cpp:2281:15:2281:15 | Condition | r2281_3 | -| ir.cpp:2281:15:2281:15 | Load | m2281_1 | -| ir.cpp:2281:15:2281:15 | Phi | from 0:m2278_6 | -| ir.cpp:2281:15:2281:15 | Phi | from 2:m2282_3 | -| ir.cpp:2282:13:2282:13 | Address | &:r2282_2 | -| ir.cpp:2282:17:2282:21 | StoreValue | r2282_1 | -| ir.cpp:2284:5:2284:5 | Address | &:r2284_1 | -| ir.cpp:2284:5:2284:5 | Address | &:r2284_1 | -| ir.cpp:2284:5:2284:5 | Arg(this) | this:r2284_1 | -| ir.cpp:2284:5:2284:5 | CallTarget | func:r2284_2 | -| ir.cpp:2284:5:2284:5 | ChiPartial | partial:m2284_4 | -| ir.cpp:2284:5:2284:5 | ChiPartial | partial:m2284_7 | -| ir.cpp:2284:5:2284:5 | ChiTotal | total:m2280_6 | -| ir.cpp:2284:5:2284:5 | ChiTotal | total:m2280_8 | -| ir.cpp:2284:5:2284:5 | SideEffect | m2280_8 | -| ir.cpp:2284:5:2284:5 | SideEffect | ~m2280_6 | -| ir.cpp:2287:16:2287:31 | Address | &:r2287_3 | -| ir.cpp:2287:16:2287:31 | Address | &:r2287_3 | -| ir.cpp:2287:16:2287:31 | Arg(this) | this:r2287_3 | -| ir.cpp:2287:16:2287:31 | Condition | r2287_21 | -| ir.cpp:2287:16:2287:31 | Phi | from 3:m2281_1 | -| ir.cpp:2287:16:2287:31 | Phi | from 3:~m2284_5 | -| ir.cpp:2287:16:2287:31 | Phi | from 5:m2288_3 | -| ir.cpp:2287:16:2287:31 | Phi | from 5:~m2289_5 | -| ir.cpp:2287:21:2287:21 | Address | &:r2287_13 | -| ir.cpp:2287:21:2287:21 | Address | &:r2287_13 | -| ir.cpp:2287:21:2287:21 | Arg(this) | this:r2287_13 | -| ir.cpp:2287:21:2287:21 | CallTarget | func:r2287_14 | -| ir.cpp:2287:21:2287:21 | ChiPartial | partial:m2287_16 | -| ir.cpp:2287:21:2287:21 | ChiPartial | partial:m2287_19 | -| ir.cpp:2287:21:2287:21 | ChiTotal | total:m2287_10 | -| ir.cpp:2287:21:2287:21 | ChiTotal | total:m2287_12 | -| ir.cpp:2287:21:2287:21 | SideEffect | m2287_12 | -| ir.cpp:2287:21:2287:21 | SideEffect | ~m2287_10 | -| ir.cpp:2287:21:2287:21 | Unary | r2287_15 | -| ir.cpp:2287:24:2287:31 | CallTarget | func:r2287_5 | -| ir.cpp:2287:24:2287:31 | ChiPartial | partial:m2287_9 | -| ir.cpp:2287:24:2287:31 | ChiPartial | partial:m2287_11 | -| ir.cpp:2287:24:2287:31 | ChiTotal | total:m2287_1 | -| ir.cpp:2287:24:2287:31 | ChiTotal | total:m2287_4 | -| ir.cpp:2287:24:2287:31 | SideEffect | ~m2287_1 | -| ir.cpp:2287:30:2287:30 | Address | &:r2287_6 | -| ir.cpp:2287:30:2287:30 | Arg(0) | 0:r2287_7 | -| ir.cpp:2287:30:2287:30 | Load | m2287_2 | -| ir.cpp:2288:13:2288:13 | Address | &:r2288_2 | -| ir.cpp:2288:17:2288:21 | StoreValue | r2288_1 | -| ir.cpp:2289:9:2289:9 | Address | &:r2289_1 | -| ir.cpp:2289:9:2289:9 | Address | &:r2289_1 | -| ir.cpp:2289:9:2289:9 | Address | &:r2289_9 | -| ir.cpp:2289:9:2289:9 | Address | &:r2289_9 | -| ir.cpp:2289:9:2289:9 | Arg(this) | this:r2289_1 | -| ir.cpp:2289:9:2289:9 | Arg(this) | this:r2289_9 | -| ir.cpp:2289:9:2289:9 | CallTarget | func:r2289_2 | -| ir.cpp:2289:9:2289:9 | CallTarget | func:r2289_10 | -| ir.cpp:2289:9:2289:9 | ChiPartial | partial:m2289_4 | -| ir.cpp:2289:9:2289:9 | ChiPartial | partial:m2289_7 | -| ir.cpp:2289:9:2289:9 | ChiPartial | partial:m2289_12 | -| ir.cpp:2289:9:2289:9 | ChiPartial | partial:m2289_15 | -| ir.cpp:2289:9:2289:9 | ChiTotal | total:m2287_17 | -| ir.cpp:2289:9:2289:9 | ChiTotal | total:m2287_17 | -| ir.cpp:2289:9:2289:9 | ChiTotal | total:m2287_20 | -| ir.cpp:2289:9:2289:9 | ChiTotal | total:m2287_20 | -| ir.cpp:2289:9:2289:9 | SideEffect | m2287_20 | -| ir.cpp:2289:9:2289:9 | SideEffect | m2287_20 | -| ir.cpp:2289:9:2289:9 | SideEffect | ~m2287_17 | -| ir.cpp:2289:9:2289:9 | SideEffect | ~m2287_17 | -| ir.cpp:2293:6:2293:13 | ChiPartial | partial:m2293_3 | -| ir.cpp:2293:6:2293:13 | ChiTotal | total:m2293_2 | -| ir.cpp:2293:6:2293:13 | SideEffect | m2293_3 | -| ir.cpp:2295:6:2295:24 | ChiPartial | partial:m2295_3 | -| ir.cpp:2295:6:2295:24 | ChiTotal | total:m2295_2 | -| ir.cpp:2295:6:2295:24 | Phi | from 2:~m2304_5 | -| ir.cpp:2295:6:2295:24 | Phi | from 4:~m2304_13 | -| ir.cpp:2295:6:2295:24 | Phi | from 5:~m2304_22 | -| ir.cpp:2295:6:2295:24 | SideEffect | ~m2295_7 | -| ir.cpp:2295:31:2295:31 | Address | &:r2295_5 | -| ir.cpp:2296:12:2296:12 | Address | &:r2296_1 | -| ir.cpp:2296:12:2296:12 | Address | &:r2296_1 | -| ir.cpp:2296:12:2296:12 | Arg(this) | this:r2296_1 | -| ir.cpp:2296:12:2296:12 | CallTarget | func:r2296_3 | -| ir.cpp:2296:12:2296:12 | ChiPartial | partial:m2296_5 | -| ir.cpp:2296:12:2296:12 | ChiPartial | partial:m2296_7 | -| ir.cpp:2296:12:2296:12 | ChiTotal | total:m2295_4 | -| ir.cpp:2296:12:2296:12 | ChiTotal | total:m2296_2 | -| ir.cpp:2296:12:2296:12 | SideEffect | ~m2295_4 | -| ir.cpp:2297:8:2297:8 | Address | &:r2297_1 | -| ir.cpp:2297:8:2297:8 | Condition | r2297_2 | -| ir.cpp:2297:8:2297:8 | Load | m2295_6 | -| ir.cpp:2300:8:2300:8 | Address | &:r2300_1 | -| ir.cpp:2300:8:2300:8 | Condition | r2300_2 | -| ir.cpp:2300:8:2300:8 | Load | m2295_6 | -| ir.cpp:2301:16:2301:23 | CallTarget | func:r2301_1 | -| ir.cpp:2301:16:2301:23 | ChiPartial | partial:m2301_3 | -| ir.cpp:2301:16:2301:23 | ChiTotal | total:m2296_6 | -| ir.cpp:2301:16:2301:23 | SideEffect | ~m2296_6 | -| ir.cpp:2304:1:2304:1 | Address | &:r2304_1 | -| ir.cpp:2304:1:2304:1 | Address | &:r2304_1 | -| ir.cpp:2304:1:2304:1 | Address | &:r2304_9 | -| ir.cpp:2304:1:2304:1 | Address | &:r2304_9 | -| ir.cpp:2304:1:2304:1 | Address | &:r2304_18 | -| ir.cpp:2304:1:2304:1 | Address | &:r2304_18 | -| ir.cpp:2304:1:2304:1 | Arg(this) | this:r2304_1 | -| ir.cpp:2304:1:2304:1 | Arg(this) | this:r2304_9 | -| ir.cpp:2304:1:2304:1 | Arg(this) | this:r2304_18 | -| ir.cpp:2304:1:2304:1 | CallTarget | func:r2304_2 | -| ir.cpp:2304:1:2304:1 | CallTarget | func:r2304_10 | -| ir.cpp:2304:1:2304:1 | CallTarget | func:r2304_19 | -| ir.cpp:2304:1:2304:1 | ChiPartial | partial:m2304_4 | -| ir.cpp:2304:1:2304:1 | ChiPartial | partial:m2304_7 | -| ir.cpp:2304:1:2304:1 | ChiPartial | partial:m2304_12 | -| ir.cpp:2304:1:2304:1 | ChiPartial | partial:m2304_15 | -| ir.cpp:2304:1:2304:1 | ChiPartial | partial:m2304_21 | -| ir.cpp:2304:1:2304:1 | ChiPartial | partial:m2304_24 | -| ir.cpp:2304:1:2304:1 | ChiTotal | total:m2296_6 | -| ir.cpp:2304:1:2304:1 | ChiTotal | total:m2296_6 | -| ir.cpp:2304:1:2304:1 | ChiTotal | total:m2296_8 | -| ir.cpp:2304:1:2304:1 | ChiTotal | total:m2296_8 | -| ir.cpp:2304:1:2304:1 | ChiTotal | total:m2296_8 | -| ir.cpp:2304:1:2304:1 | ChiTotal | total:m2301_4 | -| ir.cpp:2304:1:2304:1 | SideEffect | m2296_8 | -| ir.cpp:2304:1:2304:1 | SideEffect | m2296_8 | -| ir.cpp:2304:1:2304:1 | SideEffect | m2296_8 | -| ir.cpp:2304:1:2304:1 | SideEffect | ~m2296_6 | -| ir.cpp:2304:1:2304:1 | SideEffect | ~m2296_6 | -| ir.cpp:2304:1:2304:1 | SideEffect | ~m2301_4 | -| ir.cpp:2306:5:2306:24 | Address | &:r2306_9 | -| ir.cpp:2306:5:2306:24 | ChiPartial | partial:m2306_3 | -| ir.cpp:2306:5:2306:24 | ChiTotal | total:m2306_2 | -| ir.cpp:2306:5:2306:24 | Load | m2306_8 | -| ir.cpp:2306:5:2306:24 | Phi | from 2:m2309_3 | -| ir.cpp:2306:5:2306:24 | Phi | from 2:~m2312_5 | -| ir.cpp:2306:5:2306:24 | Phi | from 3:m2311_3 | -| ir.cpp:2306:5:2306:24 | Phi | from 3:~m2312_13 | -| ir.cpp:2306:5:2306:24 | SideEffect | ~m2306_7 | -| ir.cpp:2306:31:2306:31 | Address | &:r2306_5 | -| ir.cpp:2307:12:2307:12 | Address | &:r2307_1 | -| ir.cpp:2307:12:2307:12 | Address | &:r2307_1 | -| ir.cpp:2307:12:2307:12 | Arg(this) | this:r2307_1 | -| ir.cpp:2307:12:2307:12 | CallTarget | func:r2307_3 | -| ir.cpp:2307:12:2307:12 | ChiPartial | partial:m2307_5 | -| ir.cpp:2307:12:2307:12 | ChiPartial | partial:m2307_7 | -| ir.cpp:2307:12:2307:12 | ChiTotal | total:m2306_4 | -| ir.cpp:2307:12:2307:12 | ChiTotal | total:m2307_2 | -| ir.cpp:2307:12:2307:12 | SideEffect | ~m2306_4 | -| ir.cpp:2308:8:2308:8 | Address | &:r2308_1 | -| ir.cpp:2308:8:2308:8 | Condition | r2308_2 | -| ir.cpp:2308:8:2308:8 | Load | m2306_6 | -| ir.cpp:2309:9:2309:17 | Address | &:r2309_1 | -| ir.cpp:2309:16:2309:16 | StoreValue | r2309_2 | -| ir.cpp:2311:5:2311:13 | Address | &:r2311_1 | -| ir.cpp:2311:12:2311:12 | StoreValue | r2311_2 | -| ir.cpp:2312:1:2312:1 | Address | &:r2312_1 | -| ir.cpp:2312:1:2312:1 | Address | &:r2312_1 | -| ir.cpp:2312:1:2312:1 | Address | &:r2312_9 | -| ir.cpp:2312:1:2312:1 | Address | &:r2312_9 | -| ir.cpp:2312:1:2312:1 | Arg(this) | this:r2312_1 | -| ir.cpp:2312:1:2312:1 | Arg(this) | this:r2312_9 | -| ir.cpp:2312:1:2312:1 | CallTarget | func:r2312_2 | -| ir.cpp:2312:1:2312:1 | CallTarget | func:r2312_10 | -| ir.cpp:2312:1:2312:1 | ChiPartial | partial:m2312_4 | -| ir.cpp:2312:1:2312:1 | ChiPartial | partial:m2312_7 | -| ir.cpp:2312:1:2312:1 | ChiPartial | partial:m2312_12 | -| ir.cpp:2312:1:2312:1 | ChiPartial | partial:m2312_15 | -| ir.cpp:2312:1:2312:1 | ChiTotal | total:m2307_6 | -| ir.cpp:2312:1:2312:1 | ChiTotal | total:m2307_6 | -| ir.cpp:2312:1:2312:1 | ChiTotal | total:m2307_8 | -| ir.cpp:2312:1:2312:1 | ChiTotal | total:m2307_8 | -| ir.cpp:2312:1:2312:1 | SideEffect | m2307_8 | -| ir.cpp:2312:1:2312:1 | SideEffect | m2307_8 | -| ir.cpp:2312:1:2312:1 | SideEffect | ~m2307_6 | -| ir.cpp:2312:1:2312:1 | SideEffect | ~m2307_6 | -| ir.cpp:2314:6:2314:26 | ChiPartial | partial:m2314_3 | -| ir.cpp:2314:6:2314:26 | ChiTotal | total:m2314_2 | -| ir.cpp:2314:6:2314:26 | SideEffect | ~m2317_5 | -| ir.cpp:2315:12:2315:12 | Address | &:r2315_1 | -| ir.cpp:2315:12:2315:12 | Address | &:r2315_1 | -| ir.cpp:2315:12:2315:12 | Arg(this) | this:r2315_1 | -| ir.cpp:2315:12:2315:12 | CallTarget | func:r2315_3 | -| ir.cpp:2315:12:2315:12 | ChiPartial | partial:m2315_5 | -| ir.cpp:2315:12:2315:12 | ChiPartial | partial:m2315_7 | -| ir.cpp:2315:12:2315:12 | ChiTotal | total:m2314_4 | -| ir.cpp:2315:12:2315:12 | ChiTotal | total:m2315_2 | -| ir.cpp:2315:12:2315:12 | SideEffect | ~m2314_4 | -| ir.cpp:2316:12:2316:19 | CallTarget | func:r2316_1 | -| ir.cpp:2316:12:2316:19 | ChiPartial | partial:m2316_3 | -| ir.cpp:2316:12:2316:19 | ChiTotal | total:m2315_6 | -| ir.cpp:2316:12:2316:19 | SideEffect | ~m2315_6 | -| ir.cpp:2317:1:2317:1 | Address | &:r2317_1 | -| ir.cpp:2317:1:2317:1 | Address | &:r2317_1 | -| ir.cpp:2317:1:2317:1 | Arg(this) | this:r2317_1 | -| ir.cpp:2317:1:2317:1 | CallTarget | func:r2317_2 | -| ir.cpp:2317:1:2317:1 | ChiPartial | partial:m2317_4 | -| ir.cpp:2317:1:2317:1 | ChiPartial | partial:m2317_7 | -| ir.cpp:2317:1:2317:1 | ChiTotal | total:m2315_8 | -| ir.cpp:2317:1:2317:1 | ChiTotal | total:m2316_4 | -| ir.cpp:2317:1:2317:1 | SideEffect | m2315_8 | -| ir.cpp:2317:1:2317:1 | SideEffect | ~m2316_4 | -| ir.cpp:2327:32:2327:47 | Address | &:r2327_5 | -| ir.cpp:2327:32:2327:47 | ChiPartial | partial:m2327_3 | -| ir.cpp:2327:32:2327:47 | ChiTotal | total:m2327_2 | -| ir.cpp:2327:32:2327:47 | Load | m2329_3 | -| ir.cpp:2327:32:2327:47 | SideEffect | m2327_3 | -| ir.cpp:2329:9:2329:44 | Address | &:r2329_1 | -| ir.cpp:2329:16:2329:43 | StoreValue | r2329_2 | +| ir.cpp:1812:13:1812:13 | Load | m1811_1 | +| ir.cpp:1812:13:1812:13 | StoreValue | r1812_2 | +| ir.cpp:1812:16:1812:16 | Address | &:r1812_5 | +| ir.cpp:1812:16:1812:16 | Left | r1812_6 | +| ir.cpp:1812:16:1812:16 | Load | m1811_1 | +| ir.cpp:1812:16:1812:20 | Condition | r1812_10 | +| ir.cpp:1812:16:1812:20 | Left | r1812_8 | +| ir.cpp:1812:16:1812:20 | Right | r1812_9 | +| ir.cpp:1812:20:1812:20 | Right | r1812_7 | +| ir.cpp:1813:9:1813:9 | Address | &:r1813_6 | +| ir.cpp:1813:13:1813:13 | Address | &:r1813_1 | +| ir.cpp:1813:13:1813:13 | Left | r1813_2 | +| ir.cpp:1813:13:1813:13 | Load | m1811_1 | +| ir.cpp:1813:13:1813:17 | StoreValue | r1813_5 | +| ir.cpp:1813:17:1813:17 | Address | &:r1813_3 | +| ir.cpp:1813:17:1813:17 | Load | m1812_4 | +| ir.cpp:1813:17:1813:17 | Right | r1813_4 | +| ir.cpp:1816:9:1816:9 | Address | &:r1816_4 | +| ir.cpp:1816:13:1816:13 | Address | &:r1816_2 | +| ir.cpp:1816:13:1816:13 | Load | m1816_1 | +| ir.cpp:1816:13:1816:13 | Phi | from 2:m1811_1 | +| ir.cpp:1816:13:1816:13 | Phi | from 3:m1813_7 | +| ir.cpp:1816:13:1816:13 | StoreValue | r1816_3 | +| ir.cpp:1816:14:1816:25 | Address | &:r1816_6 | +| ir.cpp:1816:14:1816:25 | Condition | r1816_14 | +| ir.cpp:1816:20:1816:21 | Address | &:r1816_10 | +| ir.cpp:1816:20:1816:21 | Left | r1816_11 | +| ir.cpp:1816:20:1816:21 | Load | m1816_9 | +| ir.cpp:1816:20:1816:21 | Right | r1816_12 | +| ir.cpp:1816:20:1816:21 | Unary | r1816_13 | +| ir.cpp:1816:25:1816:25 | Address | &:r1816_7 | +| ir.cpp:1816:25:1816:25 | Load | m1816_5 | +| ir.cpp:1816:25:1816:25 | StoreValue | r1816_8 | +| ir.cpp:1817:9:1817:9 | Address | &:r1817_6 | +| ir.cpp:1817:13:1817:13 | Address | &:r1817_1 | +| ir.cpp:1817:13:1817:13 | Left | r1817_2 | +| ir.cpp:1817:13:1817:13 | Load | m1816_1 | +| ir.cpp:1817:13:1817:17 | StoreValue | r1817_5 | +| ir.cpp:1817:17:1817:17 | Address | &:r1817_3 | +| ir.cpp:1817:17:1817:17 | Load | m1816_5 | +| ir.cpp:1817:17:1817:17 | Right | r1817_4 | +| ir.cpp:1820:9:1820:29 | Address | &:r1820_6 | +| ir.cpp:1820:9:1820:29 | Condition | r1820_14 | +| ir.cpp:1820:13:1820:13 | Address | &:r1820_2 | +| ir.cpp:1820:13:1820:13 | Phi | from 4:m1816_1 | +| ir.cpp:1820:13:1820:13 | Phi | from 5:m1817_7 | +| ir.cpp:1820:17:1820:17 | Address | &:r1820_3 | +| ir.cpp:1820:17:1820:17 | Load | m1820_1 | +| ir.cpp:1820:17:1820:17 | StoreValue | r1820_4 | +| ir.cpp:1820:24:1820:25 | Address | &:r1820_10 | +| ir.cpp:1820:24:1820:25 | Left | r1820_11 | +| ir.cpp:1820:24:1820:25 | Load | m1820_9 | +| ir.cpp:1820:24:1820:25 | Right | r1820_12 | +| ir.cpp:1820:24:1820:25 | Unary | r1820_13 | +| ir.cpp:1820:29:1820:29 | Address | &:r1820_7 | +| ir.cpp:1820:29:1820:29 | Load | m1820_5 | +| ir.cpp:1820:29:1820:29 | StoreValue | r1820_8 | +| ir.cpp:1821:9:1821:9 | Address | &:r1821_6 | +| ir.cpp:1821:13:1821:13 | Address | &:r1821_1 | +| ir.cpp:1821:13:1821:13 | Left | r1821_2 | +| ir.cpp:1821:13:1821:13 | Load | m1820_1 | +| ir.cpp:1821:13:1821:17 | StoreValue | r1821_5 | +| ir.cpp:1821:17:1821:17 | Address | &:r1821_3 | +| ir.cpp:1821:17:1821:17 | Load | m1820_5 | +| ir.cpp:1821:17:1821:17 | Right | r1821_4 | +| ir.cpp:1824:9:1824:9 | Address | &:r1824_2 | +| ir.cpp:1824:9:1824:9 | Phi | from 6:m1820_1 | +| ir.cpp:1824:9:1824:9 | Phi | from 7:m1821_7 | +| ir.cpp:1824:13:1824:13 | Address | &:r1824_3 | +| ir.cpp:1824:13:1824:13 | Load | m1824_1 | +| ir.cpp:1824:13:1824:13 | StoreValue | r1824_4 | +| ir.cpp:1825:9:1825:9 | Address | &:r1825_1 | +| ir.cpp:1825:9:1825:9 | Condition | r1825_4 | +| ir.cpp:1825:9:1825:9 | Left | r1825_2 | +| ir.cpp:1825:9:1825:9 | Load | m1824_5 | +| ir.cpp:1825:9:1825:9 | Right | r1825_3 | +| ir.cpp:1826:9:1826:9 | Address | &:r1826_6 | +| ir.cpp:1826:13:1826:13 | Address | &:r1826_1 | +| ir.cpp:1826:13:1826:13 | Left | r1826_2 | +| ir.cpp:1826:13:1826:13 | Load | m1824_1 | +| ir.cpp:1826:13:1826:17 | StoreValue | r1826_5 | +| ir.cpp:1826:17:1826:17 | Address | &:r1826_3 | +| ir.cpp:1826:17:1826:17 | Load | m1824_5 | +| ir.cpp:1826:17:1826:17 | Right | r1826_4 | +| ir.cpp:1829:9:1829:18 | Address | &:r1829_2 | +| ir.cpp:1829:9:1829:18 | Condition | r1829_10 | +| ir.cpp:1829:9:1829:18 | Phi | from 8:m1824_1 | +| ir.cpp:1829:9:1829:18 | Phi | from 9:m1826_7 | +| ir.cpp:1829:13:1829:14 | Address | &:r1829_6 | +| ir.cpp:1829:13:1829:14 | Left | r1829_7 | +| ir.cpp:1829:13:1829:14 | Load | m1829_5 | +| ir.cpp:1829:13:1829:14 | Right | r1829_8 | +| ir.cpp:1829:13:1829:14 | Unary | r1829_9 | +| ir.cpp:1829:18:1829:18 | Address | &:r1829_3 | +| ir.cpp:1829:18:1829:18 | Load | m1824_5 | +| ir.cpp:1829:18:1829:18 | StoreValue | r1829_4 | +| ir.cpp:1830:9:1830:9 | Address | &:r1830_3 | +| ir.cpp:1830:9:1830:9 | Address | &:r1830_3 | +| ir.cpp:1830:9:1830:9 | Left | r1830_4 | +| ir.cpp:1830:9:1830:9 | Load | m1829_1 | +| ir.cpp:1830:9:1830:15 | StoreValue | r1830_5 | +| ir.cpp:1830:14:1830:15 | Address | &:r1830_1 | +| ir.cpp:1830:14:1830:15 | Load | m1829_5 | +| ir.cpp:1830:14:1830:15 | Right | r1830_2 | +| ir.cpp:1834:6:1834:26 | ChiPartial | partial:m1834_3 | +| ir.cpp:1834:6:1834:26 | ChiTotal | total:m1834_2 | +| ir.cpp:1834:6:1834:26 | SideEffect | m1834_3 | +| ir.cpp:1834:32:1834:32 | Address | &:r1834_5 | +| ir.cpp:1835:17:1835:17 | Address | &:r1835_1 | +| ir.cpp:1835:21:1835:21 | Address | &:r1835_2 | +| ir.cpp:1835:21:1835:21 | Load | m1834_6 | +| ir.cpp:1835:21:1835:21 | StoreValue | r1835_3 | +| ir.cpp:1835:24:1835:24 | Address | &:r1835_5 | +| ir.cpp:1835:24:1835:24 | Left | r1835_6 | +| ir.cpp:1835:24:1835:24 | Load | m1834_6 | +| ir.cpp:1835:24:1835:28 | Condition | r1835_8 | +| ir.cpp:1835:28:1835:28 | Right | r1835_7 | +| ir.cpp:1837:9:1837:9 | Address | &:r1837_6 | +| ir.cpp:1837:13:1837:13 | Address | &:r1837_1 | +| ir.cpp:1837:13:1837:13 | Left | r1837_2 | +| ir.cpp:1837:13:1837:13 | Load | m1834_6 | +| ir.cpp:1837:13:1837:17 | StoreValue | r1837_5 | +| ir.cpp:1837:17:1837:17 | Address | &:r1837_3 | +| ir.cpp:1837:17:1837:17 | Load | m1835_4 | +| ir.cpp:1837:17:1837:17 | Right | r1837_4 | +| ir.cpp:1840:9:1840:9 | Address | &:r1840_1 | +| ir.cpp:1841:13:1841:13 | Address | &:r1841_3 | +| ir.cpp:1841:17:1841:17 | Address | &:r1841_1 | +| ir.cpp:1841:17:1841:17 | Load | m1837_7 | +| ir.cpp:1841:17:1841:17 | StoreValue | r1841_2 | +| ir.cpp:1841:20:1841:20 | Address | &:r1841_5 | +| ir.cpp:1841:20:1841:20 | Left | r1841_6 | +| ir.cpp:1841:20:1841:20 | Load | m1837_7 | +| ir.cpp:1841:20:1841:24 | Condition | r1841_8 | +| ir.cpp:1841:24:1841:24 | Right | r1841_7 | +| ir.cpp:1843:9:1843:9 | Address | &:r1843_6 | +| ir.cpp:1843:13:1843:13 | Address | &:r1843_1 | +| ir.cpp:1843:13:1843:13 | Left | r1843_2 | +| ir.cpp:1843:13:1843:13 | Load | m1837_7 | +| ir.cpp:1843:13:1843:17 | StoreValue | r1843_5 | +| ir.cpp:1843:17:1843:17 | Address | &:r1843_3 | +| ir.cpp:1843:17:1843:17 | Load | m1841_4 | +| ir.cpp:1843:17:1843:17 | Right | r1843_4 | +| ir.cpp:1846:13:1846:13 | Address | &:r1846_3 | +| ir.cpp:1846:17:1846:17 | Address | &:r1846_1 | +| ir.cpp:1846:17:1846:17 | Load | m1843_7 | +| ir.cpp:1846:17:1846:17 | StoreValue | r1846_2 | +| ir.cpp:1846:18:1846:29 | Address | &:r1846_5 | +| ir.cpp:1846:18:1846:29 | Condition | r1846_11 | +| ir.cpp:1846:24:1846:25 | Address | &:r1846_9 | +| ir.cpp:1846:24:1846:25 | Load | m1846_8 | +| ir.cpp:1846:24:1846:25 | Unary | r1846_10 | +| ir.cpp:1846:29:1846:29 | Address | &:r1846_6 | +| ir.cpp:1846:29:1846:29 | Load | m1846_4 | +| ir.cpp:1846:29:1846:29 | StoreValue | r1846_7 | +| ir.cpp:1848:9:1848:9 | Address | &:r1848_6 | +| ir.cpp:1848:13:1848:13 | Address | &:r1848_1 | +| ir.cpp:1848:13:1848:13 | Left | r1848_2 | +| ir.cpp:1848:13:1848:13 | Load | m1843_7 | +| ir.cpp:1848:13:1848:17 | StoreValue | r1848_5 | +| ir.cpp:1848:17:1848:17 | Address | &:r1848_3 | +| ir.cpp:1848:17:1848:17 | Load | m1846_4 | +| ir.cpp:1848:17:1848:17 | Right | r1848_4 | +| ir.cpp:1851:13:1851:33 | Address | &:r1851_5 | +| ir.cpp:1851:13:1851:33 | Condition | r1851_11 | +| ir.cpp:1851:17:1851:17 | Address | &:r1851_1 | +| ir.cpp:1851:21:1851:21 | Address | &:r1851_2 | +| ir.cpp:1851:21:1851:21 | Load | m1848_7 | +| ir.cpp:1851:21:1851:21 | StoreValue | r1851_3 | +| ir.cpp:1851:28:1851:29 | Address | &:r1851_9 | +| ir.cpp:1851:28:1851:29 | Load | m1851_8 | +| ir.cpp:1851:28:1851:29 | Unary | r1851_10 | +| ir.cpp:1851:33:1851:33 | Address | &:r1851_6 | +| ir.cpp:1851:33:1851:33 | Load | m1851_4 | +| ir.cpp:1851:33:1851:33 | StoreValue | r1851_7 | +| ir.cpp:1853:9:1853:9 | Address | &:r1853_6 | +| ir.cpp:1853:13:1853:13 | Address | &:r1853_1 | +| ir.cpp:1853:13:1853:13 | Left | r1853_2 | +| ir.cpp:1853:13:1853:13 | Load | m1848_7 | +| ir.cpp:1853:13:1853:17 | StoreValue | r1853_5 | +| ir.cpp:1853:17:1853:17 | Address | &:r1853_3 | +| ir.cpp:1853:17:1853:17 | Load | m1851_4 | +| ir.cpp:1853:17:1853:17 | Right | r1853_4 | +| ir.cpp:1856:9:1856:9 | Address | &:r1856_1 | +| ir.cpp:1856:13:1856:13 | Address | &:r1856_2 | +| ir.cpp:1856:13:1856:13 | Load | m1853_7 | +| ir.cpp:1856:13:1856:13 | StoreValue | r1856_3 | +| ir.cpp:1857:13:1857:13 | Address | &:r1857_1 | +| ir.cpp:1857:13:1857:13 | Condition | r1857_2 | +| ir.cpp:1857:13:1857:13 | Load | m1856_4 | +| ir.cpp:1859:9:1859:9 | Address | &:r1859_6 | +| ir.cpp:1859:13:1859:13 | Address | &:r1859_1 | +| ir.cpp:1859:13:1859:13 | Left | r1859_2 | +| ir.cpp:1859:13:1859:13 | Load | m1853_7 | +| ir.cpp:1859:13:1859:17 | StoreValue | r1859_5 | +| ir.cpp:1859:17:1859:17 | Address | &:r1859_3 | +| ir.cpp:1859:17:1859:17 | Load | m1856_4 | +| ir.cpp:1859:17:1859:17 | Right | r1859_4 | +| ir.cpp:1862:13:1862:22 | Address | &:r1862_1 | +| ir.cpp:1862:13:1862:22 | Condition | r1862_7 | +| ir.cpp:1862:17:1862:18 | Address | &:r1862_5 | +| ir.cpp:1862:17:1862:18 | Load | m1862_4 | +| ir.cpp:1862:17:1862:18 | Unary | r1862_6 | +| ir.cpp:1862:22:1862:22 | Address | &:r1862_2 | +| ir.cpp:1862:22:1862:22 | Load | m1856_4 | +| ir.cpp:1862:22:1862:22 | StoreValue | r1862_3 | +| ir.cpp:1864:9:1864:9 | Address | &:r1864_3 | +| ir.cpp:1864:9:1864:9 | Address | &:r1864_3 | +| ir.cpp:1864:9:1864:9 | Left | r1864_4 | +| ir.cpp:1864:9:1864:9 | Load | m1859_7 | +| ir.cpp:1864:9:1864:15 | StoreValue | r1864_5 | +| ir.cpp:1864:14:1864:15 | Address | &:r1864_1 | +| ir.cpp:1864:14:1864:15 | Load | m1862_4 | +| ir.cpp:1864:14:1864:15 | Right | r1864_2 | +| ir.cpp:1870:5:1870:12 | Address | &:r1870_3 | +| ir.cpp:1870:5:1870:12 | SideEffect | ~m1870_6 | +| ir.cpp:1870:16:1870:16 | ChiPartial | partial:m1870_5 | +| ir.cpp:1870:16:1870:16 | ChiTotal | total:m1870_2 | +| ir.cpp:1870:16:1870:16 | StoreValue | r1870_4 | +| ir.cpp:1874:18:1874:25 | Address | &:r1874_3 | +| ir.cpp:1874:18:1874:25 | Arg(this) | this:r1874_3 | +| ir.cpp:1874:18:1874:25 | SideEffect | ~m1874_10 | +| ir.cpp:1874:27:1874:27 | Arg(0) | 0:r1874_5 | +| ir.cpp:1874:27:1874:28 | CallTarget | func:r1874_4 | +| ir.cpp:1874:27:1874:28 | ChiPartial | partial:m1874_7 | +| ir.cpp:1874:27:1874:28 | ChiPartial | partial:m1874_9 | +| ir.cpp:1874:27:1874:28 | ChiTotal | total:m1874_2 | +| ir.cpp:1874:27:1874:28 | ChiTotal | total:m1874_8 | +| ir.cpp:1874:27:1874:28 | SideEffect | ~m1874_2 | +| ir.cpp:1876:18:1876:25 | Address | &:r1876_3 | +| ir.cpp:1876:18:1876:25 | Arg(this) | this:r1876_3 | +| ir.cpp:1876:18:1876:25 | SideEffect | ~m1876_10 | +| ir.cpp:1876:28:1876:47 | CallTarget | func:r1876_4 | +| ir.cpp:1876:28:1876:47 | ChiPartial | partial:m1876_7 | +| ir.cpp:1876:28:1876:47 | ChiPartial | partial:m1876_9 | +| ir.cpp:1876:28:1876:47 | ChiTotal | total:m1876_2 | +| ir.cpp:1876:28:1876:47 | ChiTotal | total:m1876_8 | +| ir.cpp:1876:28:1876:47 | SideEffect | ~m1876_2 | +| ir.cpp:1876:46:1876:46 | Arg(0) | 0:r1876_5 | +| ir.cpp:1878:7:1878:19 | Address | &:r1878_3 | +| ir.cpp:1878:7:1878:19 | SideEffect | ~m1878_8 | +| ir.cpp:1878:23:1878:37 | ChiPartial | partial:m1878_7 | +| ir.cpp:1878:23:1878:37 | ChiTotal | total:m1878_2 | +| ir.cpp:1878:23:1878:37 | StoreValue | r1878_6 | +| ir.cpp:1878:23:1878:37 | Unary | r1878_4 | +| ir.cpp:1878:23:1878:37 | Unary | r1878_5 | +| ir.cpp:1880:5:1880:12 | Address | &:r1880_3 | +| ir.cpp:1880:5:1880:12 | SideEffect | ~m1880_7 | +| ir.cpp:1880:16:1880:23 | Address | &:r1880_4 | +| ir.cpp:1880:16:1880:23 | ChiPartial | partial:m1880_6 | +| ir.cpp:1880:16:1880:23 | ChiTotal | total:m1880_2 | +| ir.cpp:1880:16:1880:23 | Load | ~m1880_2 | +| ir.cpp:1880:16:1880:23 | StoreValue | r1880_5 | +| ir.cpp:1883:11:1883:11 | Address | &:r1883_5 | +| ir.cpp:1883:11:1883:11 | Address | &:r1883_5 | +| ir.cpp:1883:11:1883:11 | Address | &:r1883_7 | +| ir.cpp:1883:11:1883:11 | Address | &:r1883_7 | +| ir.cpp:1883:11:1883:11 | Address | &:r1883_10 | +| ir.cpp:1883:11:1883:11 | ChiPartial | partial:m1883_3 | +| ir.cpp:1883:11:1883:11 | ChiTotal | total:m1883_2 | +| ir.cpp:1883:11:1883:11 | Load | m0_20 | +| ir.cpp:1883:11:1883:11 | Load | m1883_6 | +| ir.cpp:1883:11:1883:11 | SideEffect | m0_14 | +| ir.cpp:1883:11:1883:11 | SideEffect | m1883_3 | +| ir.cpp:1888:12:1888:12 | Address | &:r1888_5 | +| ir.cpp:1888:12:1888:12 | Address | &:r1888_5 | +| ir.cpp:1888:12:1888:12 | Address | &:r1888_7 | +| ir.cpp:1888:12:1888:12 | Address | &:r1888_7 | +| ir.cpp:1888:12:1888:12 | Address | &:r1888_9 | +| ir.cpp:1888:12:1888:12 | Address | &:r1888_12 | +| ir.cpp:1888:12:1888:12 | Address | &:r1888_20 | +| ir.cpp:1888:12:1888:12 | Arg(this) | this:r0_5 | +| ir.cpp:1888:12:1888:12 | CallTarget | func:r1888_11 | +| ir.cpp:1888:12:1888:12 | ChiPartial | partial:m1888_3 | +| ir.cpp:1888:12:1888:12 | ChiPartial | partial:m1888_17 | +| ir.cpp:1888:12:1888:12 | ChiTotal | total:m1888_2 | +| ir.cpp:1888:12:1888:12 | ChiTotal | total:m1888_4 | +| ir.cpp:1888:12:1888:12 | Load | m0_2 | +| ir.cpp:1888:12:1888:12 | Load | m0_21 | +| ir.cpp:1888:12:1888:12 | Load | m1888_6 | +| ir.cpp:1888:12:1888:12 | Load | m1888_6 | +| ir.cpp:1888:12:1888:12 | SideEffect | m0_12 | +| ir.cpp:1888:12:1888:12 | SideEffect | ~m1888_4 | +| ir.cpp:1888:12:1888:12 | SideEffect | ~m1888_18 | +| ir.cpp:1888:12:1888:12 | Unary | r1888_10 | +| ir.cpp:1888:12:1888:12 | Unary | r1888_13 | +| ir.cpp:1888:12:1888:12 | Unary | r1888_14 | +| ir.cpp:1888:12:1888:12 | Unary | r1888_15 | +| ir.cpp:1888:12:1888:12 | Unary | r1888_16 | +| ir.cpp:1892:10:1892:12 | ChiPartial | partial:m1892_3 | +| ir.cpp:1892:10:1892:12 | ChiTotal | total:m1892_2 | +| ir.cpp:1892:10:1892:12 | SideEffect | ~m1894_18 | +| ir.cpp:1893:11:1893:11 | Address | &:r1893_1 | +| ir.cpp:1893:11:1893:11 | Address | &:r1893_1 | +| ir.cpp:1893:11:1893:11 | Arg(this) | this:r1893_1 | +| ir.cpp:1893:13:1893:13 | Address | &:r1893_4 | +| ir.cpp:1893:13:1893:13 | Address | &:r1893_4 | +| ir.cpp:1893:13:1893:13 | Arg(0) | 0:r1893_4 | +| ir.cpp:1893:13:1893:13 | ChiPartial | partial:m1893_11 | +| ir.cpp:1893:13:1893:13 | ChiTotal | total:m1893_7 | +| ir.cpp:1893:13:1893:13 | SideEffect | ~m1893_7 | +| ir.cpp:1893:13:1893:14 | CallTarget | func:r1893_3 | +| ir.cpp:1893:13:1893:14 | ChiPartial | partial:m1893_6 | +| ir.cpp:1893:13:1893:14 | ChiPartial | partial:m1893_9 | +| ir.cpp:1893:13:1893:14 | ChiTotal | total:m1892_4 | +| ir.cpp:1893:13:1893:14 | ChiTotal | total:m1893_2 | +| ir.cpp:1893:13:1893:14 | SideEffect | ~m1892_4 | +| ir.cpp:1894:9:1894:9 | Address | &:r1894_1 | +| ir.cpp:1894:9:1894:9 | Address | &:r1894_1 | +| ir.cpp:1894:9:1894:9 | Arg(this) | this:r1894_1 | +| ir.cpp:1894:9:1894:9 | ChiPartial | partial:m1894_21 | +| ir.cpp:1894:9:1894:9 | ChiTotal | total:m1893_10 | +| ir.cpp:1894:9:1894:9 | SideEffect | m1893_10 | +| ir.cpp:1894:11:1894:11 | CallTarget | func:r1894_2 | +| ir.cpp:1894:11:1894:11 | ChiPartial | partial:m1894_17 | +| ir.cpp:1894:11:1894:11 | ChiTotal | total:m1894_14 | +| ir.cpp:1894:11:1894:11 | SideEffect | ~m1894_14 | +| ir.cpp:1894:11:1894:11 | Unary | r1894_16 | +| ir.cpp:1894:13:1894:13 | Address | &:r1894_3 | +| ir.cpp:1894:13:1894:13 | Address | &:r1894_3 | +| ir.cpp:1894:13:1894:13 | Address | &:r1894_6 | +| ir.cpp:1894:13:1894:13 | Address | &:r1894_6 | +| ir.cpp:1894:13:1894:13 | Address | &:r1894_15 | +| ir.cpp:1894:13:1894:13 | Address | &:r1894_15 | +| ir.cpp:1894:13:1894:13 | Arg(0) | 0:r1894_6 | +| ir.cpp:1894:13:1894:13 | Arg(0) | 0:r1894_15 | +| ir.cpp:1894:13:1894:13 | Arg(this) | this:r1894_3 | +| ir.cpp:1894:13:1894:13 | CallTarget | func:r1894_5 | +| ir.cpp:1894:13:1894:13 | ChiPartial | partial:m1894_8 | +| ir.cpp:1894:13:1894:13 | ChiPartial | partial:m1894_11 | +| ir.cpp:1894:13:1894:13 | ChiPartial | partial:m1894_13 | +| ir.cpp:1894:13:1894:13 | ChiPartial | partial:m1894_23 | +| ir.cpp:1894:13:1894:13 | ChiTotal | total:m1893_12 | +| ir.cpp:1894:13:1894:13 | ChiTotal | total:m1894_4 | +| ir.cpp:1894:13:1894:13 | ChiTotal | total:m1894_9 | +| ir.cpp:1894:13:1894:13 | ChiTotal | total:m1894_12 | +| ir.cpp:1894:13:1894:13 | SideEffect | ~m1893_12 | +| ir.cpp:1894:13:1894:13 | SideEffect | ~m1894_9 | +| ir.cpp:1894:13:1894:13 | SideEffect | ~m1894_12 | +| ir.cpp:1894:13:1894:13 | Unary | r1894_3 | +| ir.cpp:1898:6:1898:14 | ChiPartial | partial:m1898_3 | +| ir.cpp:1898:6:1898:14 | ChiTotal | total:m1898_2 | +| ir.cpp:1898:6:1898:14 | SideEffect | m1898_3 | +| ir.cpp:1899:17:1899:18 | Address | &:r1899_1 | +| ir.cpp:1899:22:1899:40 | StoreValue | r1899_3 | +| ir.cpp:1899:22:1899:40 | Unary | r1899_2 | +| ir.cpp:1900:17:1900:23 | Address | &:r1900_1 | +| ir.cpp:1900:27:1900:34 | StoreValue | r1900_3 | +| ir.cpp:1900:27:1900:34 | Unary | r1900_2 | +| ir.cpp:1911:15:1911:15 | Address | &:r1911_5 | +| ir.cpp:1911:15:1911:15 | Address | &:r1911_5 | +| ir.cpp:1911:15:1911:15 | Address | &:r1911_7 | +| ir.cpp:1911:15:1911:15 | Address | &:r1911_7 | +| ir.cpp:1911:15:1911:15 | Address | &:r1911_15 | +| ir.cpp:1911:15:1911:15 | ChiPartial | partial:m1911_3 | +| ir.cpp:1911:15:1911:15 | ChiTotal | total:m1911_2 | +| ir.cpp:1911:15:1911:15 | Load | m1911_6 | +| ir.cpp:1911:15:1911:15 | Load | m1913_5 | +| ir.cpp:1911:15:1911:15 | SideEffect | m1911_3 | +| ir.cpp:1911:15:1911:15 | SideEffect | m1911_8 | +| ir.cpp:1911:47:1911:47 | Address | &:r1911_9 | +| ir.cpp:1911:47:1911:47 | Address | &:r1911_9 | +| ir.cpp:1911:47:1911:47 | Address | &:r1911_11 | +| ir.cpp:1911:47:1911:47 | Address | &:r1911_11 | +| ir.cpp:1911:47:1911:47 | Load | m1911_10 | +| ir.cpp:1911:47:1911:47 | SideEffect | m1911_12 | +| ir.cpp:1913:13:1913:21 | Address | &:r1913_1 | +| ir.cpp:1913:20:1913:20 | Address | &:r1913_2 | +| ir.cpp:1913:20:1913:20 | Load | m1911_10 | +| ir.cpp:1913:20:1913:20 | StoreValue | r1913_4 | +| ir.cpp:1913:20:1913:20 | Unary | r1913_3 | +| ir.cpp:1917:10:1917:14 | ChiPartial | partial:m1917_3 | +| ir.cpp:1917:10:1917:14 | ChiTotal | total:m1917_2 | +| ir.cpp:1917:10:1917:14 | SideEffect | ~m1919_12 | +| ir.cpp:1918:19:1918:19 | Address | &:r1918_1 | +| ir.cpp:1919:9:1919:9 | Address | &:r1919_1 | +| ir.cpp:1919:9:1919:9 | Address | &:r1919_1 | +| ir.cpp:1919:9:1919:9 | Arg(this) | this:r1919_1 | +| ir.cpp:1919:9:1919:9 | ChiPartial | partial:m1919_9 | +| ir.cpp:1919:9:1919:9 | ChiTotal | total:m1918_2 | +| ir.cpp:1919:9:1919:9 | SideEffect | m1918_2 | +| ir.cpp:1919:11:1919:33 | CallTarget | func:r1919_2 | +| ir.cpp:1919:11:1919:33 | ChiPartial | partial:m1919_5 | +| ir.cpp:1919:11:1919:33 | ChiTotal | total:m1917_4 | +| ir.cpp:1919:11:1919:33 | SideEffect | ~m1917_4 | +| ir.cpp:1919:35:1919:41 | Address | &:r1919_3 | +| ir.cpp:1919:35:1919:41 | Address | &:r1919_3 | +| ir.cpp:1919:35:1919:41 | Arg(0) | 0:r1919_3 | +| ir.cpp:1919:35:1919:41 | ChiPartial | partial:m1919_11 | +| ir.cpp:1919:35:1919:41 | ChiTotal | total:m1919_6 | +| ir.cpp:1919:35:1919:41 | SideEffect | ~m1919_6 | +| ir.cpp:1924:13:1924:13 | Address | &:r1924_5 | +| ir.cpp:1924:13:1924:13 | Address | &:r1924_5 | +| ir.cpp:1924:13:1924:13 | Address | &:r1924_7 | +| ir.cpp:1924:13:1924:13 | Address | &:r1924_7 | +| ir.cpp:1924:13:1924:13 | Address | &:r1924_10 | +| ir.cpp:1924:13:1924:13 | ChiPartial | partial:m1924_3 | +| ir.cpp:1924:13:1924:13 | ChiTotal | total:m1924_2 | +| ir.cpp:1924:13:1924:13 | Load | m1924_6 | +| ir.cpp:1924:13:1924:13 | Load | m1928_9 | +| ir.cpp:1924:13:1924:13 | SideEffect | m1924_3 | +| ir.cpp:1924:13:1924:13 | SideEffect | m1924_8 | +| ir.cpp:1925:13:1925:29 | Address | &:r1925_1 | +| ir.cpp:1925:13:1925:29 | Address | &:r1925_3 | +| ir.cpp:1926:13:1926:14 | Address | &:r1926_4 | +| ir.cpp:1926:13:1926:19 | ChiPartial | partial:m1926_5 | +| ir.cpp:1926:13:1926:19 | ChiTotal | total:m1925_2 | +| ir.cpp:1926:14:1926:14 | Unary | r1926_2 | +| ir.cpp:1926:14:1926:14 | Unary | r1926_3 | +| ir.cpp:1926:18:1926:19 | StoreValue | r1926_1 | +| ir.cpp:1927:13:1927:14 | Address | &:r1927_4 | +| ir.cpp:1927:13:1927:19 | ChiPartial | partial:m1927_5 | +| ir.cpp:1927:13:1927:19 | ChiTotal | total:m1925_4 | +| ir.cpp:1927:14:1927:14 | Unary | r1927_2 | +| ir.cpp:1927:14:1927:14 | Unary | r1927_3 | +| ir.cpp:1927:18:1927:19 | StoreValue | r1927_1 | +| ir.cpp:1928:13:1928:27 | Address | &:r1928_1 | +| ir.cpp:1928:20:1928:21 | Left | r1928_4 | +| ir.cpp:1928:20:1928:21 | Load | m1926_5 | +| ir.cpp:1928:20:1928:26 | StoreValue | r1928_8 | +| ir.cpp:1928:21:1928:21 | Address | &:r1928_3 | +| ir.cpp:1928:21:1928:21 | Unary | r1928_2 | +| ir.cpp:1928:25:1928:26 | Load | m1927_5 | +| ir.cpp:1928:25:1928:26 | Right | r1928_7 | +| ir.cpp:1928:26:1928:26 | Address | &:r1928_6 | +| ir.cpp:1928:26:1928:26 | Unary | r1928_5 | +| ir.cpp:1932:10:1932:14 | ChiPartial | partial:m1932_3 | +| ir.cpp:1932:10:1932:14 | ChiTotal | total:m1932_2 | +| ir.cpp:1932:10:1932:14 | SideEffect | ~m1934_5 | +| ir.cpp:1933:19:1933:19 | Address | &:r1933_1 | +| ir.cpp:1934:9:1934:9 | Address | &:r1934_1 | +| ir.cpp:1934:9:1934:9 | Address | &:r1934_1 | +| ir.cpp:1934:9:1934:9 | Arg(this) | this:r1934_1 | +| ir.cpp:1934:9:1934:9 | ChiPartial | partial:m1934_7 | +| ir.cpp:1934:9:1934:9 | ChiTotal | total:m1933_2 | +| ir.cpp:1934:9:1934:9 | SideEffect | m1933_2 | +| ir.cpp:1934:11:1934:50 | CallTarget | func:r1934_2 | +| ir.cpp:1934:11:1934:50 | ChiPartial | partial:m1934_4 | +| ir.cpp:1934:11:1934:50 | ChiTotal | total:m1932_4 | +| ir.cpp:1934:11:1934:50 | SideEffect | ~m1932_4 | +| ir.cpp:1938:24:1938:24 | Address | &:r1938_3 | +| ir.cpp:1938:24:1938:24 | Address | &:r1938_3 | +| ir.cpp:1938:24:1938:24 | SideEffect | ~m1938_6 | +| ir.cpp:1938:24:1938:24 | SideEffect | ~m1938_6 | +| ir.cpp:1938:42:1938:43 | ChiPartial | partial:m1938_5 | +| ir.cpp:1938:42:1938:43 | ChiPartial | partial:m1938_5 | +| ir.cpp:1938:42:1938:43 | ChiTotal | total:m1938_2 | +| ir.cpp:1938:42:1938:43 | ChiTotal | total:m1938_2 | +| ir.cpp:1938:42:1938:43 | StoreValue | r1938_4 | +| ir.cpp:1938:42:1938:43 | StoreValue | r1938_4 | +| ir.cpp:1940:5:1940:28 | Address | &:r1940_5 | +| ir.cpp:1940:5:1940:28 | ChiPartial | partial:m1940_3 | +| ir.cpp:1940:5:1940:28 | ChiTotal | total:m1940_2 | +| ir.cpp:1940:5:1940:28 | Load | m1943_8 | +| ir.cpp:1940:5:1940:28 | SideEffect | m1940_3 | +| ir.cpp:1941:9:1941:17 | Address | &:r1941_1 | +| ir.cpp:1941:21:1941:40 | Address | &:r1941_2 | +| ir.cpp:1941:21:1941:40 | Load | ~m1940_3 | +| ir.cpp:1941:21:1941:40 | StoreValue | r1941_3 | +| ir.cpp:1942:10:1942:19 | Address | &:r1942_1 | +| ir.cpp:1942:23:1942:43 | Address | &:r1942_2 | +| ir.cpp:1942:23:1942:43 | Load | ~m1940_3 | +| ir.cpp:1942:23:1942:43 | StoreValue | r1942_3 | +| ir.cpp:1943:5:1943:39 | Address | &:r1943_1 | +| ir.cpp:1943:12:1943:20 | Address | &:r1943_2 | +| ir.cpp:1943:12:1943:20 | Left | r1943_3 | +| ir.cpp:1943:12:1943:20 | Load | m1941_4 | +| ir.cpp:1943:12:1943:38 | StoreValue | r1943_7 | +| ir.cpp:1943:24:1943:38 | Right | r1943_6 | +| ir.cpp:1943:29:1943:38 | Address | &:r1943_4 | +| ir.cpp:1943:29:1943:38 | Load | m1942_4 | +| ir.cpp:1943:29:1943:38 | Unary | r1943_5 | +| ir.cpp:1948:5:1948:16 | Address | &:r1948_7 | +| ir.cpp:1948:5:1948:16 | ChiPartial | partial:m1948_3 | +| ir.cpp:1948:5:1948:16 | ChiTotal | total:m1948_2 | +| ir.cpp:1948:5:1948:16 | Load | m1950_4 | +| ir.cpp:1948:5:1948:16 | SideEffect | m1948_3 | +| ir.cpp:1948:22:1948:22 | Address | &:r1948_5 | +| ir.cpp:1949:9:1949:9 | Address | &:r1949_1 | +| ir.cpp:1949:9:1949:9 | Left | r1949_2 | +| ir.cpp:1949:9:1949:9 | Load | m1948_6 | +| ir.cpp:1949:9:1949:14 | Condition | r1949_4 | +| ir.cpp:1949:13:1949:14 | Right | r1949_3 | +| ir.cpp:1950:9:1950:17 | Address | &:r1950_1 | +| ir.cpp:1950:16:1950:16 | Address | &:r1950_2 | +| ir.cpp:1950:16:1950:16 | Load | m1948_6 | +| ir.cpp:1950:16:1950:16 | StoreValue | r1950_3 | +| ir.cpp:1952:9:1952:20 | CallTarget | func:r1952_1 | +| ir.cpp:1952:9:1952:20 | ChiPartial | partial:m1952_3 | +| ir.cpp:1952:9:1952:20 | ChiTotal | total:m1948_4 | +| ir.cpp:1952:9:1952:20 | SideEffect | ~m1948_4 | +| ir.cpp:1956:5:1956:17 | Address | &:r1956_8 | +| ir.cpp:1956:5:1956:17 | ChiPartial | partial:m1956_3 | +| ir.cpp:1956:5:1956:17 | ChiTotal | total:m1956_2 | +| ir.cpp:1956:5:1956:17 | Load | m1960_4 | +| ir.cpp:1956:5:1956:17 | SideEffect | m1956_3 | +| ir.cpp:1956:23:1956:23 | Address | &:r1956_5 | +| ir.cpp:1957:9:1957:9 | Address | &:r1957_1 | +| ir.cpp:1957:9:1957:9 | Left | r1957_2 | +| ir.cpp:1957:9:1957:9 | Load | m1956_6 | +| ir.cpp:1957:9:1957:14 | Condition | r1957_4 | +| ir.cpp:1957:13:1957:14 | Right | r1957_3 | +| ir.cpp:1958:9:1958:20 | CallTarget | func:r1958_1 | +| ir.cpp:1958:9:1958:20 | ChiPartial | partial:m1958_3 | +| ir.cpp:1958:9:1958:20 | ChiTotal | total:m1956_4 | +| ir.cpp:1958:9:1958:20 | SideEffect | ~m1956_4 | +| ir.cpp:1960:5:1960:13 | Address | &:r1960_1 | +| ir.cpp:1960:12:1960:12 | Address | &:r1960_2 | +| ir.cpp:1960:12:1960:12 | Load | m1956_6 | +| ir.cpp:1960:12:1960:12 | StoreValue | r1960_3 | +| ir.cpp:1963:5:1963:19 | Address | &:r1963_7 | +| ir.cpp:1963:5:1963:19 | ChiPartial | partial:m1963_3 | +| ir.cpp:1963:5:1963:19 | ChiTotal | total:m1963_2 | +| ir.cpp:1963:5:1963:19 | Load | m1964_4 | +| ir.cpp:1963:5:1963:19 | SideEffect | m1963_3 | +| ir.cpp:1963:25:1963:25 | Address | &:r1963_5 | +| ir.cpp:1964:5:1964:13 | Address | &:r1964_1 | +| ir.cpp:1964:12:1964:12 | Address | &:r1964_2 | +| ir.cpp:1964:12:1964:12 | Load | m1963_6 | +| ir.cpp:1964:12:1964:12 | StoreValue | r1964_3 | +| ir.cpp:1967:6:1967:43 | ChiPartial | partial:m1967_3 | +| ir.cpp:1967:6:1967:43 | ChiTotal | total:m1967_2 | +| ir.cpp:1967:6:1967:43 | SideEffect | ~m1975_6 | +| ir.cpp:1968:7:1968:7 | Address | &:r1968_1 | +| ir.cpp:1968:7:1968:7 | Address | &:r1968_1 | +| ir.cpp:1968:7:1968:7 | Arg(this) | this:r1968_1 | +| ir.cpp:1968:7:1968:7 | CallTarget | func:r1968_3 | +| ir.cpp:1968:7:1968:7 | ChiPartial | partial:m1968_5 | +| ir.cpp:1968:7:1968:7 | ChiPartial | partial:m1968_7 | +| ir.cpp:1968:7:1968:7 | ChiTotal | total:m1967_4 | +| ir.cpp:1968:7:1968:7 | ChiTotal | total:m1968_2 | +| ir.cpp:1968:7:1968:7 | SideEffect | ~m1967_4 | +| ir.cpp:1969:9:1969:9 | Address | &:r1969_1 | +| ir.cpp:1970:5:1970:5 | Address | &:r1970_7 | +| ir.cpp:1970:11:1970:30 | CallTarget | func:r1970_2 | +| ir.cpp:1970:11:1970:30 | ChiPartial | partial:m1970_5 | +| ir.cpp:1970:11:1970:30 | ChiTotal | total:m1968_6 | +| ir.cpp:1970:11:1970:30 | SideEffect | ~m1968_6 | +| ir.cpp:1970:11:1970:30 | StoreValue | r1970_4 | +| ir.cpp:1970:32:1970:33 | Arg(0) | 0:r1970_3 | +| ir.cpp:1971:9:1971:9 | Address | &:r1971_1 | +| ir.cpp:1972:5:1972:5 | Address | &:r1972_6 | +| ir.cpp:1972:9:1972:31 | CallTarget | func:r1972_1 | +| ir.cpp:1972:9:1972:31 | ChiPartial | partial:m1972_4 | +| ir.cpp:1972:9:1972:31 | ChiTotal | total:m1970_6 | +| ir.cpp:1972:9:1972:31 | SideEffect | ~m1970_6 | +| ir.cpp:1972:9:1972:31 | StoreValue | r1972_3 | +| ir.cpp:1972:33:1972:34 | Arg(0) | 0:r1972_2 | +| ir.cpp:1973:9:1973:9 | Address | &:r1973_1 | +| ir.cpp:1974:5:1974:5 | Address | &:r1974_6 | +| ir.cpp:1974:9:1974:23 | CallTarget | func:r1974_1 | +| ir.cpp:1974:9:1974:23 | ChiPartial | partial:m1974_4 | +| ir.cpp:1974:9:1974:23 | ChiTotal | total:m1972_5 | +| ir.cpp:1974:9:1974:23 | SideEffect | ~m1972_5 | +| ir.cpp:1974:9:1974:23 | StoreValue | r1974_3 | +| ir.cpp:1974:25:1974:26 | Arg(0) | 0:r1974_2 | +| ir.cpp:1975:1:1975:1 | Address | &:r1975_2 | +| ir.cpp:1975:1:1975:1 | Address | &:r1975_2 | +| ir.cpp:1975:1:1975:1 | Arg(this) | this:r1975_2 | +| ir.cpp:1975:1:1975:1 | CallTarget | func:r1975_3 | +| ir.cpp:1975:1:1975:1 | ChiPartial | partial:m1975_5 | +| ir.cpp:1975:1:1975:1 | ChiPartial | partial:m1975_8 | +| ir.cpp:1975:1:1975:1 | ChiTotal | total:m1968_8 | +| ir.cpp:1975:1:1975:1 | ChiTotal | total:m1974_5 | +| ir.cpp:1975:1:1975:1 | SideEffect | m1968_8 | +| ir.cpp:1975:1:1975:1 | SideEffect | ~m1974_5 | +| ir.cpp:1977:6:1977:23 | ChiPartial | partial:m1977_3 | +| ir.cpp:1977:6:1977:23 | ChiTotal | total:m1977_2 | +| ir.cpp:1977:6:1977:23 | SideEffect | m1977_3 | +| ir.cpp:1978:7:1978:7 | Address | &:r1978_1 | +| ir.cpp:1978:10:1978:10 | Address | &:r1978_3 | +| ir.cpp:1979:3:1979:3 | Address | &:r1979_5 | +| ir.cpp:1979:7:1979:7 | Address | &:r1979_2 | +| ir.cpp:1979:7:1979:7 | Address | &:r1979_2 | +| ir.cpp:1979:7:1979:12 | Load | m1979_3 | +| ir.cpp:1979:7:1979:12 | StoreValue | r1979_4 | +| ir.cpp:1979:11:1979:12 | StoreValue | r1979_1 | +| ir.cpp:1982:6:1982:38 | ChiPartial | partial:m1982_3 | +| ir.cpp:1982:6:1982:38 | ChiTotal | total:m1982_2 | +| ir.cpp:1982:6:1982:38 | SideEffect | m1982_3 | +| ir.cpp:1983:7:1983:7 | Address | &:r1983_1 | +| ir.cpp:1983:10:1983:10 | Address | &:r1983_3 | +| ir.cpp:1983:13:1983:14 | StoreValue | r1983_4 | +| ir.cpp:1984:3:1984:3 | Address | &:r1984_7 | +| ir.cpp:1984:8:1984:8 | Address | &:r1984_2 | +| ir.cpp:1984:8:1984:8 | Address | &:r1984_2 | +| ir.cpp:1984:8:1984:8 | Address | &:r1984_2 | +| ir.cpp:1984:8:1984:8 | Left | r1984_3 | +| ir.cpp:1984:8:1984:8 | Load | m1983_5 | +| ir.cpp:1984:8:1984:14 | Load | m1984_5 | +| ir.cpp:1984:8:1984:14 | StoreValue | r1984_4 | +| ir.cpp:1984:8:1984:14 | StoreValue | r1984_6 | +| ir.cpp:1984:13:1984:14 | Right | r1984_1 | +| ir.cpp:1991:15:1991:43 | Address | &:r1991_5 | +| ir.cpp:1991:15:1991:43 | ChiPartial | partial:m1991_3 | +| ir.cpp:1991:15:1991:43 | ChiTotal | total:m1991_2 | +| ir.cpp:1991:15:1991:43 | Load | m1992_4 | +| ir.cpp:1991:15:1991:43 | SideEffect | m1991_3 | +| ir.cpp:1992:9:1992:17 | Address | &:r1992_1 | +| ir.cpp:1992:16:1992:16 | StoreValue | r1992_3 | +| ir.cpp:1992:16:1992:16 | Unary | r1992_2 | +| ir.cpp:1994:14:1994:39 | Address | &:r1994_5 | +| ir.cpp:1994:14:1994:39 | ChiPartial | partial:m1994_3 | +| ir.cpp:1994:14:1994:39 | ChiTotal | total:m1994_2 | +| ir.cpp:1994:14:1994:39 | Load | m1995_4 | +| ir.cpp:1994:14:1994:39 | SideEffect | m1994_3 | +| ir.cpp:1995:9:1995:17 | Address | &:r1995_1 | +| ir.cpp:1995:16:1995:16 | Address | &:r1995_2 | +| ir.cpp:1995:16:1995:16 | Load | ~m1994_3 | +| ir.cpp:1995:16:1995:16 | StoreValue | r1995_3 | +| ir.cpp:1999:6:1999:55 | ChiPartial | partial:m1999_3 | +| ir.cpp:1999:6:1999:55 | ChiTotal | total:m1999_2 | +| ir.cpp:1999:6:1999:55 | SideEffect | ~m2014_4 | +| ir.cpp:2000:7:2000:7 | Address | &:r2000_1 | +| ir.cpp:2002:7:2002:35 | CallTarget | func:r2002_2 | +| ir.cpp:2002:7:2002:35 | ChiPartial | partial:m2002_4 | +| ir.cpp:2002:7:2002:35 | ChiTotal | total:m1999_4 | +| ir.cpp:2002:7:2002:35 | SideEffect | ~m1999_4 | +| ir.cpp:2002:7:2002:35 | Unary | r2002_3 | +| ir.cpp:2003:5:2003:36 | CallTarget | func:r2003_1 | +| ir.cpp:2003:5:2003:36 | ChiPartial | partial:m2003_3 | +| ir.cpp:2003:5:2003:36 | ChiTotal | total:m2002_5 | +| ir.cpp:2003:5:2003:36 | SideEffect | ~m2002_5 | +| ir.cpp:2003:5:2003:36 | Unary | r2003_2 | +| ir.cpp:2004:7:2004:32 | CallTarget | func:r2004_2 | +| ir.cpp:2004:7:2004:32 | ChiPartial | partial:m2004_4 | +| ir.cpp:2004:7:2004:32 | ChiTotal | total:m2003_4 | +| ir.cpp:2004:7:2004:32 | SideEffect | ~m2003_4 | +| ir.cpp:2005:5:2005:33 | CallTarget | func:r2005_1 | +| ir.cpp:2005:5:2005:33 | ChiPartial | partial:m2005_3 | +| ir.cpp:2005:5:2005:33 | ChiTotal | total:m2004_5 | +| ir.cpp:2005:5:2005:33 | SideEffect | ~m2004_5 | +| ir.cpp:2007:7:2007:7 | Address | &:r2007_1 | +| ir.cpp:2008:5:2008:5 | Address | &:r2008_7 | +| ir.cpp:2008:11:2008:39 | Address | &:r2008_3 | +| ir.cpp:2008:11:2008:39 | CallTarget | func:r2008_2 | +| ir.cpp:2008:11:2008:39 | ChiPartial | partial:m2008_4 | +| ir.cpp:2008:11:2008:39 | ChiTotal | total:m2005_4 | +| ir.cpp:2008:11:2008:39 | SideEffect | ~m2005_4 | +| ir.cpp:2008:40:2008:42 | Load | ~m2008_5 | +| ir.cpp:2008:40:2008:42 | StoreValue | r2008_6 | +| ir.cpp:2009:7:2009:7 | Address | &:r2009_1 | +| ir.cpp:2010:5:2010:5 | Address | &:r2010_6 | +| ir.cpp:2010:9:2010:40 | Address | &:r2010_2 | +| ir.cpp:2010:9:2010:40 | CallTarget | func:r2010_1 | +| ir.cpp:2010:9:2010:40 | ChiPartial | partial:m2010_3 | +| ir.cpp:2010:9:2010:40 | ChiTotal | total:m2008_5 | +| ir.cpp:2010:9:2010:40 | SideEffect | ~m2008_5 | +| ir.cpp:2010:41:2010:43 | Load | ~m2010_4 | +| ir.cpp:2010:41:2010:43 | StoreValue | r2010_5 | +| ir.cpp:2011:7:2011:7 | Address | &:r2011_1 | +| ir.cpp:2012:5:2012:5 | Address | &:r2012_6 | +| ir.cpp:2012:11:2012:36 | CallTarget | func:r2012_2 | +| ir.cpp:2012:11:2012:36 | ChiPartial | partial:m2012_4 | +| ir.cpp:2012:11:2012:36 | ChiTotal | total:m2010_4 | +| ir.cpp:2012:11:2012:36 | SideEffect | ~m2010_4 | +| ir.cpp:2012:11:2012:36 | StoreValue | r2012_3 | +| ir.cpp:2013:7:2013:7 | Address | &:r2013_1 | +| ir.cpp:2014:5:2014:5 | Address | &:r2014_5 | +| ir.cpp:2014:9:2014:37 | CallTarget | func:r2014_1 | +| ir.cpp:2014:9:2014:37 | ChiPartial | partial:m2014_3 | +| ir.cpp:2014:9:2014:37 | ChiTotal | total:m2012_5 | +| ir.cpp:2014:9:2014:37 | SideEffect | ~m2012_5 | +| ir.cpp:2014:9:2014:37 | StoreValue | r2014_2 | +| ir.cpp:2017:6:2017:18 | ChiPartial | partial:m2017_3 | +| ir.cpp:2017:6:2017:18 | ChiTotal | total:m2017_2 | +| ir.cpp:2017:6:2017:18 | SideEffect | m2017_3 | +| ir.cpp:2018:18:2018:18 | Address | &:r2018_1 | +| ir.cpp:2019:5:2019:5 | Address | &:r2019_1 | +| ir.cpp:2019:5:2019:5 | Load | m2018_2 | +| ir.cpp:2028:6:2028:24 | ChiPartial | partial:m2028_3 | +| ir.cpp:2028:6:2028:24 | ChiTotal | total:m2028_2 | +| ir.cpp:2028:6:2028:24 | SideEffect | ~m2036_5 | +| ir.cpp:2029:12:2029:12 | Address | &:r2029_1 | +| ir.cpp:2031:5:2031:19 | ChiPartial | partial:m2031_7 | +| ir.cpp:2031:5:2031:19 | ChiTotal | total:m2031_5 | +| ir.cpp:2031:7:2031:12 | CallTarget | func:r2031_2 | +| ir.cpp:2031:7:2031:12 | ChiPartial | partial:m2031_4 | +| ir.cpp:2031:7:2031:12 | ChiTotal | total:m2028_4 | +| ir.cpp:2031:7:2031:12 | SideEffect | ~m2028_4 | +| ir.cpp:2031:7:2031:12 | Unary | r2031_3 | +| ir.cpp:2031:13:2031:16 | Address | &:r2031_6 | +| ir.cpp:2032:5:2032:19 | ChiPartial | partial:m2032_7 | +| ir.cpp:2032:5:2032:19 | ChiTotal | total:m2032_5 | +| ir.cpp:2032:7:2032:12 | CallTarget | func:r2032_2 | +| ir.cpp:2032:7:2032:12 | ChiPartial | partial:m2032_4 | +| ir.cpp:2032:7:2032:12 | ChiTotal | total:m2031_8 | +| ir.cpp:2032:7:2032:12 | SideEffect | ~m2031_8 | +| ir.cpp:2032:7:2032:12 | Unary | r2032_3 | +| ir.cpp:2032:13:2032:16 | Address | &:r2032_6 | +| ir.cpp:2033:5:2033:15 | Address | &:r2033_1 | +| ir.cpp:2033:5:2033:15 | Address | &:r2033_1 | +| ir.cpp:2033:7:2033:13 | CallTarget | func:r2033_3 | +| ir.cpp:2033:7:2033:13 | ChiPartial | partial:m2033_5 | +| ir.cpp:2033:7:2033:13 | ChiTotal | total:m2032_8 | +| ir.cpp:2033:7:2033:13 | SideEffect | ~m2032_8 | +| ir.cpp:2033:7:2033:13 | StoreValue | r2033_4 | +| ir.cpp:2034:5:2034:18 | CallTarget | func:r2034_1 | +| ir.cpp:2034:5:2034:18 | ChiPartial | partial:m2034_3 | +| ir.cpp:2034:5:2034:18 | ChiTotal | total:m2033_6 | +| ir.cpp:2034:5:2034:18 | SideEffect | ~m2033_6 | +| ir.cpp:2034:5:2034:18 | Unary | r2034_2 | +| ir.cpp:2034:5:2034:25 | ChiPartial | partial:m2034_6 | +| ir.cpp:2034:5:2034:25 | ChiTotal | total:m2034_4 | +| ir.cpp:2034:19:2034:22 | Address | &:r2034_5 | +| ir.cpp:2035:5:2035:18 | CallTarget | func:r2035_1 | +| ir.cpp:2035:5:2035:18 | ChiPartial | partial:m2035_3 | +| ir.cpp:2035:5:2035:18 | ChiTotal | total:m2034_7 | +| ir.cpp:2035:5:2035:18 | SideEffect | ~m2034_7 | +| ir.cpp:2035:5:2035:18 | Unary | r2035_2 | +| ir.cpp:2035:5:2035:25 | ChiPartial | partial:m2035_6 | +| ir.cpp:2035:5:2035:25 | ChiTotal | total:m2035_4 | +| ir.cpp:2035:19:2035:22 | Address | &:r2035_5 | +| ir.cpp:2036:5:2036:19 | CallTarget | func:r2036_2 | +| ir.cpp:2036:5:2036:19 | ChiPartial | partial:m2036_4 | +| ir.cpp:2036:5:2036:19 | ChiTotal | total:m2035_7 | +| ir.cpp:2036:5:2036:19 | SideEffect | ~m2035_7 | +| ir.cpp:2036:5:2036:19 | StoreValue | r2036_3 | +| ir.cpp:2036:5:2036:21 | Address | &:r2036_1 | +| ir.cpp:2036:5:2036:21 | Address | &:r2036_1 | +| ir.cpp:2039:6:2039:21 | ChiPartial | partial:m2039_3 | +| ir.cpp:2039:6:2039:21 | ChiTotal | total:m2039_2 | +| ir.cpp:2039:6:2039:21 | SideEffect | ~m2043_6 | +| ir.cpp:2040:7:2040:7 | Address | &:r2040_1 | +| ir.cpp:2040:7:2040:7 | Address | &:r2040_1 | +| ir.cpp:2040:7:2040:7 | Arg(this) | this:r2040_1 | +| ir.cpp:2040:7:2040:7 | CallTarget | func:r2040_3 | +| ir.cpp:2040:7:2040:7 | ChiPartial | partial:m2040_5 | +| ir.cpp:2040:7:2040:7 | ChiPartial | partial:m2040_7 | +| ir.cpp:2040:7:2040:7 | ChiTotal | total:m2039_4 | +| ir.cpp:2040:7:2040:7 | ChiTotal | total:m2040_2 | +| ir.cpp:2040:7:2040:7 | SideEffect | ~m2039_4 | +| ir.cpp:2041:11:2041:13 | Address | &:r2041_1 | +| ir.cpp:2041:23:2041:45 | StoreValue | r2041_2 | +| ir.cpp:2042:5:2042:7 | Address | &:r2042_3 | +| ir.cpp:2042:13:2042:32 | StoreValue | r2042_2 | +| ir.cpp:2043:1:2043:1 | Address | &:r2043_2 | +| ir.cpp:2043:1:2043:1 | Address | &:r2043_2 | +| ir.cpp:2043:1:2043:1 | Arg(this) | this:r2043_2 | +| ir.cpp:2043:1:2043:1 | CallTarget | func:r2043_3 | +| ir.cpp:2043:1:2043:1 | ChiPartial | partial:m2043_5 | +| ir.cpp:2043:1:2043:1 | ChiPartial | partial:m2043_8 | +| ir.cpp:2043:1:2043:1 | ChiTotal | total:m2040_6 | +| ir.cpp:2043:1:2043:1 | ChiTotal | total:m2040_8 | +| ir.cpp:2043:1:2043:1 | SideEffect | m2040_8 | +| ir.cpp:2043:1:2043:1 | SideEffect | ~m2040_6 | +| ir.cpp:2045:6:2045:19 | ChiPartial | partial:m2045_3 | +| ir.cpp:2045:6:2045:19 | ChiTotal | total:m2045_2 | +| ir.cpp:2045:6:2045:19 | SideEffect | ~m2049_9 | +| ir.cpp:2045:26:2045:26 | Address | &:r2045_5 | +| ir.cpp:2045:33:2045:33 | Address | &:r2045_7 | +| ir.cpp:2045:40:2045:40 | Address | &:r2045_9 | +| ir.cpp:2045:47:2045:47 | Address | &:r2045_11 | +| ir.cpp:2046:5:2046:5 | Address | &:r2046_7 | +| ir.cpp:2046:9:2046:9 | Address | &:r2046_1 | +| ir.cpp:2046:9:2046:9 | Condition | r2046_2 | +| ir.cpp:2046:9:2046:9 | Load | m2045_6 | +| ir.cpp:2046:9:2046:17 | Address | &:r2046_5 | +| ir.cpp:2046:9:2046:17 | Address | &:r2046_11 | +| ir.cpp:2046:9:2046:17 | Address | &:r2046_15 | +| ir.cpp:2046:9:2046:17 | Load | m2046_4 | +| ir.cpp:2046:9:2046:17 | Phi | from 2:m2046_12 | +| ir.cpp:2046:9:2046:17 | Phi | from 3:m2046_16 | +| ir.cpp:2046:9:2046:17 | StoreValue | r2046_6 | +| ir.cpp:2046:13:2046:13 | Address | &:r2046_9 | +| ir.cpp:2046:13:2046:13 | Load | m2045_8 | +| ir.cpp:2046:13:2046:13 | StoreValue | r2046_10 | +| ir.cpp:2046:17:2046:17 | Address | &:r2046_13 | +| ir.cpp:2046:17:2046:17 | Load | m2045_10 | +| ir.cpp:2046:17:2046:17 | StoreValue | r2046_14 | +| ir.cpp:2047:5:2047:5 | Address | &:r2047_7 | +| ir.cpp:2047:9:2047:9 | Address | &:r2047_1 | +| ir.cpp:2047:9:2047:9 | Condition | r2047_2 | +| ir.cpp:2047:9:2047:9 | Load | m2045_6 | +| ir.cpp:2047:9:2047:17 | Address | &:r2047_5 | +| ir.cpp:2047:9:2047:17 | Address | &:r2047_11 | +| ir.cpp:2047:9:2047:17 | Address | &:r2047_14 | +| ir.cpp:2047:9:2047:17 | Load | m2047_4 | +| ir.cpp:2047:9:2047:17 | Phi | from 5:m2047_12 | +| ir.cpp:2047:9:2047:17 | Phi | from 6:m2047_15 | +| ir.cpp:2047:9:2047:17 | StoreValue | r2047_6 | +| ir.cpp:2047:13:2047:13 | Address | &:r2047_9 | +| ir.cpp:2047:13:2047:13 | Load | m2045_8 | +| ir.cpp:2047:13:2047:13 | StoreValue | r2047_10 | +| ir.cpp:2047:17:2047:17 | StoreValue | r2047_13 | +| ir.cpp:2048:5:2048:5 | Address | &:r2048_7 | +| ir.cpp:2048:9:2048:9 | Address | &:r2048_1 | +| ir.cpp:2048:9:2048:9 | Condition | r2048_2 | +| ir.cpp:2048:9:2048:9 | Load | m2045_6 | +| ir.cpp:2048:9:2048:17 | Address | &:r2048_5 | +| ir.cpp:2048:9:2048:17 | Address | &:r2048_10 | +| ir.cpp:2048:9:2048:17 | Address | &:r2048_13 | +| ir.cpp:2048:9:2048:17 | Load | m2048_4 | +| ir.cpp:2048:9:2048:17 | Phi | from 8:m2048_11 | +| ir.cpp:2048:9:2048:17 | Phi | from 9:m2048_14 | +| ir.cpp:2048:9:2048:17 | StoreValue | r2048_6 | +| ir.cpp:2048:13:2048:13 | StoreValue | r2048_9 | +| ir.cpp:2048:17:2048:17 | StoreValue | r2048_12 | +| ir.cpp:2049:5:2049:19 | ChiPartial | partial:m2049_8 | +| ir.cpp:2049:5:2049:19 | ChiTotal | total:m2045_4 | +| ir.cpp:2049:6:2049:6 | Address | &:r2049_2 | +| ir.cpp:2049:6:2049:6 | Condition | r2049_3 | +| ir.cpp:2049:6:2049:6 | Load | m2045_6 | +| ir.cpp:2049:6:2049:14 | Address | &:r2049_6 | +| ir.cpp:2049:6:2049:14 | Address | &:r2049_7 | +| ir.cpp:2049:6:2049:14 | Address | &:r2049_11 | +| ir.cpp:2049:6:2049:14 | Address | &:r2049_14 | +| ir.cpp:2049:6:2049:14 | Load | m2049_5 | +| ir.cpp:2049:6:2049:14 | Phi | from 11:m2049_12 | +| ir.cpp:2049:6:2049:14 | Phi | from 12:m2049_15 | +| ir.cpp:2049:10:2049:10 | StoreValue | r2049_10 | +| ir.cpp:2049:14:2049:14 | StoreValue | r2049_13 | +| ir.cpp:2049:19:2049:19 | StoreValue | r2049_1 | +| ir.cpp:2055:6:2055:22 | ChiPartial | partial:m2055_3 | +| ir.cpp:2055:6:2055:22 | ChiTotal | total:m2055_2 | +| ir.cpp:2055:6:2055:22 | SideEffect | m2055_3 | +| ir.cpp:2055:29:2055:29 | Address | &:r2055_5 | +| ir.cpp:2055:46:2055:46 | Address | &:r2055_7 | +| ir.cpp:2055:63:2055:63 | Address | &:r2055_9 | +| ir.cpp:2055:80:2055:80 | Address | &:r2055_11 | +| ir.cpp:2056:5:2056:5 | Address | &:r2056_7 | +| ir.cpp:2056:9:2056:9 | Address | &:r2056_1 | +| ir.cpp:2056:9:2056:9 | Condition | r2056_2 | +| ir.cpp:2056:9:2056:9 | Load | m2055_6 | +| ir.cpp:2056:9:2056:17 | Address | &:r2056_5 | +| ir.cpp:2056:9:2056:17 | Address | &:r2056_11 | +| ir.cpp:2056:9:2056:17 | Address | &:r2056_15 | +| ir.cpp:2056:9:2056:17 | Load | m2056_4 | +| ir.cpp:2056:9:2056:17 | Phi | from 2:m2056_12 | +| ir.cpp:2056:9:2056:17 | Phi | from 3:m2056_16 | +| ir.cpp:2056:9:2056:17 | StoreValue | r2056_6 | +| ir.cpp:2056:13:2056:13 | Address | &:r2056_9 | +| ir.cpp:2056:13:2056:13 | Load | m2055_8 | +| ir.cpp:2056:13:2056:13 | StoreValue | r2056_10 | +| ir.cpp:2056:17:2056:17 | Address | &:r2056_13 | +| ir.cpp:2056:17:2056:17 | Load | m2055_10 | +| ir.cpp:2056:17:2056:17 | StoreValue | r2056_14 | +| ir.cpp:2057:5:2057:5 | Address | &:r2057_10 | +| ir.cpp:2057:9:2057:9 | Address | &:r2057_2 | +| ir.cpp:2057:9:2057:9 | Address | &:r2057_6 | +| ir.cpp:2057:9:2057:9 | Address | &:r2057_17 | +| ir.cpp:2057:9:2057:9 | Address | &:r2057_23 | +| ir.cpp:2057:9:2057:9 | Condition | r2057_3 | +| ir.cpp:2057:9:2057:9 | Load | m2055_6 | +| ir.cpp:2057:9:2057:9 | Load | m2057_5 | +| ir.cpp:2057:9:2057:9 | Phi | from 5:m2057_18 | +| ir.cpp:2057:9:2057:9 | Phi | from 6:m2057_24 | +| ir.cpp:2057:9:2057:9 | StoreValue | r2057_7 | +| ir.cpp:2057:9:2057:31 | Address | &:r2057_1 | +| ir.cpp:2057:9:2057:31 | Address | &:r2057_1 | +| ir.cpp:2057:9:2057:31 | Load | m2057_8 | +| ir.cpp:2057:9:2057:31 | StoreValue | r2057_9 | +| ir.cpp:2057:13:2057:13 | Address | &:r2057_12 | +| ir.cpp:2057:13:2057:13 | Address | &:r2057_12 | +| ir.cpp:2057:13:2057:13 | Address | &:r2057_13 | +| ir.cpp:2057:13:2057:13 | Load | m2055_8 | +| ir.cpp:2057:13:2057:13 | Load | m2057_15 | +| ir.cpp:2057:13:2057:13 | StoreValue | r2057_14 | +| ir.cpp:2057:13:2057:13 | StoreValue | r2057_16 | +| ir.cpp:2057:17:2057:31 | Address | &:r2057_19 | +| ir.cpp:2057:17:2057:31 | Address | &:r2057_19 | +| ir.cpp:2057:17:2057:31 | Load | m2057_21 | +| ir.cpp:2057:17:2057:31 | StoreValue | r2057_20 | +| ir.cpp:2057:17:2057:31 | StoreValue | r2057_22 | +| ir.cpp:2058:5:2058:5 | Address | &:r2058_10 | +| ir.cpp:2058:9:2058:9 | Address | &:r2058_2 | +| ir.cpp:2058:9:2058:9 | Address | &:r2058_6 | +| ir.cpp:2058:9:2058:9 | Address | &:r2058_16 | +| ir.cpp:2058:9:2058:9 | Address | &:r2058_22 | +| ir.cpp:2058:9:2058:9 | Condition | r2058_3 | +| ir.cpp:2058:9:2058:9 | Load | m2055_6 | +| ir.cpp:2058:9:2058:9 | Load | m2058_5 | +| ir.cpp:2058:9:2058:9 | Phi | from 8:m2058_17 | +| ir.cpp:2058:9:2058:9 | Phi | from 9:m2058_23 | +| ir.cpp:2058:9:2058:9 | StoreValue | r2058_7 | +| ir.cpp:2058:9:2058:45 | Address | &:r2058_1 | +| ir.cpp:2058:9:2058:45 | Address | &:r2058_1 | +| ir.cpp:2058:9:2058:45 | Load | m2058_8 | +| ir.cpp:2058:9:2058:45 | StoreValue | r2058_9 | +| ir.cpp:2058:13:2058:27 | Address | &:r2058_12 | +| ir.cpp:2058:13:2058:27 | Address | &:r2058_12 | +| ir.cpp:2058:13:2058:27 | Load | m2058_14 | +| ir.cpp:2058:13:2058:27 | StoreValue | r2058_13 | +| ir.cpp:2058:13:2058:27 | StoreValue | r2058_15 | +| ir.cpp:2058:31:2058:45 | Address | &:r2058_18 | +| ir.cpp:2058:31:2058:45 | Address | &:r2058_18 | +| ir.cpp:2058:31:2058:45 | Load | m2058_20 | +| ir.cpp:2058:31:2058:45 | StoreValue | r2058_19 | +| ir.cpp:2058:31:2058:45 | StoreValue | r2058_21 | +| ir.cpp:2059:6:2059:6 | Address | &:r2059_11 | +| ir.cpp:2059:6:2059:6 | Unary | r2059_11 | +| ir.cpp:2059:6:2059:18 | Address | &:r2059_13 | +| ir.cpp:2059:10:2059:10 | Address | &:r2059_5 | +| ir.cpp:2059:10:2059:10 | Condition | r2059_6 | +| ir.cpp:2059:10:2059:10 | Load | m2055_6 | +| ir.cpp:2059:10:2059:18 | Address | &:r2059_9 | +| ir.cpp:2059:10:2059:18 | Address | &:r2059_17 | +| ir.cpp:2059:10:2059:18 | Address | &:r2059_21 | +| ir.cpp:2059:10:2059:18 | Load | m2059_8 | +| ir.cpp:2059:10:2059:18 | Phi | from 11:m2059_18 | +| ir.cpp:2059:10:2059:18 | Phi | from 12:m2059_22 | +| ir.cpp:2059:10:2059:18 | StoreValue | r2059_10 | +| ir.cpp:2059:14:2059:14 | Address | &:r2059_15 | +| ir.cpp:2059:14:2059:14 | Load | m2055_8 | +| ir.cpp:2059:14:2059:14 | StoreValue | r2059_16 | +| ir.cpp:2059:18:2059:18 | Address | &:r2059_19 | +| ir.cpp:2059:18:2059:18 | Load | m2055_10 | +| ir.cpp:2059:18:2059:18 | StoreValue | r2059_20 | +| ir.cpp:2059:23:2059:37 | Address | &:r2059_1 | +| ir.cpp:2059:23:2059:37 | Address | &:r2059_1 | +| ir.cpp:2059:23:2059:37 | Load | m2059_3 | +| ir.cpp:2059:23:2059:37 | StoreValue | r2059_2 | +| ir.cpp:2059:23:2059:37 | StoreValue | r2059_4 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | +| ir.cpp:2062:8:2062:8 | Address | &:r2062_10 | +| ir.cpp:2062:8:2062:8 | ChiPartial | partial:m2062_3 | +| ir.cpp:2062:8:2062:8 | ChiPartial | partial:m2062_3 | +| ir.cpp:2062:8:2062:8 | ChiPartial | partial:m2062_3 | +| ir.cpp:2062:8:2062:8 | ChiTotal | total:m2062_2 | +| ir.cpp:2062:8:2062:8 | ChiTotal | total:m2062_2 | +| ir.cpp:2062:8:2062:8 | ChiTotal | total:m2062_2 | +| ir.cpp:2062:8:2062:8 | Load | m0_10 | +| ir.cpp:2062:8:2062:8 | Load | m2062_6 | +| ir.cpp:2062:8:2062:8 | Load | m2062_6 | +| ir.cpp:2062:8:2062:8 | Load | m2062_6 | +| ir.cpp:2062:8:2062:8 | SideEffect | m2062_3 | +| ir.cpp:2062:8:2062:8 | SideEffect | m2062_3 | +| ir.cpp:2062:8:2062:8 | SideEffect | m2062_3 | +| ir.cpp:2062:8:2062:8 | SideEffect | m2062_8 | +| ir.cpp:2062:8:2062:8 | SideEffect | m2062_8 | +| ir.cpp:2062:8:2062:8 | SideEffect | m2062_8 | +| ir.cpp:2063:13:2063:29 | Address | &:r2063_5 | +| ir.cpp:2063:13:2063:29 | Address | &:r2063_5 | +| ir.cpp:2063:13:2063:29 | Address | &:r2063_7 | +| ir.cpp:2063:13:2063:29 | Address | &:r2063_7 | +| ir.cpp:2063:13:2063:29 | ChiPartial | partial:m2063_3 | +| ir.cpp:2063:13:2063:29 | ChiTotal | total:m2063_2 | +| ir.cpp:2063:13:2063:29 | Load | m2063_6 | +| ir.cpp:2063:13:2063:29 | SideEffect | m2063_3 | +| ir.cpp:2063:13:2063:29 | SideEffect | m2063_8 | +| ir.cpp:2066:6:2066:25 | ChiPartial | partial:m2066_3 | +| ir.cpp:2066:6:2066:25 | ChiTotal | total:m2066_2 | +| ir.cpp:2066:6:2066:25 | SideEffect | ~m2070_32 | +| ir.cpp:2066:32:2066:32 | Address | &:r2066_5 | +| ir.cpp:2066:52:2066:52 | Address | &:r2066_7 | +| ir.cpp:2066:72:2066:72 | Address | &:r2066_9 | +| ir.cpp:2066:92:2066:92 | Address | &:r2066_11 | +| ir.cpp:2067:5:2067:5 | Address | &:r2067_1 | +| ir.cpp:2067:5:2067:5 | Address | &:r2067_1 | +| ir.cpp:2067:5:2067:5 | Arg(this) | this:r2067_1 | +| ir.cpp:2067:5:2067:5 | ChiPartial | partial:m2067_16 | +| ir.cpp:2067:5:2067:5 | ChiTotal | total:m2066_12 | +| ir.cpp:2067:5:2067:5 | SideEffect | m2066_12 | +| ir.cpp:2067:7:2067:7 | CallTarget | func:r2067_2 | +| ir.cpp:2067:7:2067:7 | ChiPartial | partial:m2067_12 | +| ir.cpp:2067:7:2067:7 | ChiTotal | total:m2066_4 | +| ir.cpp:2067:7:2067:7 | SideEffect | ~m2066_4 | +| ir.cpp:2067:7:2067:7 | Unary | r2067_11 | +| ir.cpp:2067:9:2067:9 | Address | &:r2067_3 | +| ir.cpp:2067:9:2067:9 | Condition | r2067_4 | +| ir.cpp:2067:9:2067:9 | Load | m2066_6 | +| ir.cpp:2067:9:2067:17 | Address | &:r2067_7 | +| ir.cpp:2067:9:2067:17 | Address | &:r2067_10 | +| ir.cpp:2067:9:2067:17 | Address | &:r2067_20 | +| ir.cpp:2067:9:2067:17 | Address | &:r2067_23 | +| ir.cpp:2067:9:2067:17 | Arg(0) | 0:r2067_10 | +| ir.cpp:2067:9:2067:17 | Load | m2067_6 | +| ir.cpp:2067:9:2067:17 | Phi | from 2:m2067_21 | +| ir.cpp:2067:9:2067:17 | Phi | from 3:m2067_24 | +| ir.cpp:2067:9:2067:17 | SideEffect | ~m2067_13 | +| ir.cpp:2067:9:2067:17 | Unary | r2067_8 | +| ir.cpp:2067:9:2067:17 | Unary | r2067_9 | +| ir.cpp:2067:13:2067:13 | StoreValue | r2067_19 | +| ir.cpp:2067:17:2067:17 | StoreValue | r2067_22 | +| ir.cpp:2068:5:2068:5 | Address | &:r2068_1 | +| ir.cpp:2068:5:2068:5 | Address | &:r2068_1 | +| ir.cpp:2068:5:2068:5 | Arg(this) | this:r2068_1 | +| ir.cpp:2068:5:2068:5 | ChiPartial | partial:m2068_19 | +| ir.cpp:2068:5:2068:5 | ChiTotal | total:m2067_17 | +| ir.cpp:2068:5:2068:5 | SideEffect | m2067_17 | +| ir.cpp:2068:7:2068:7 | CallTarget | func:r2068_2 | +| ir.cpp:2068:7:2068:7 | ChiPartial | partial:m2068_15 | +| ir.cpp:2068:7:2068:7 | ChiTotal | total:m2068_7 | +| ir.cpp:2068:7:2068:7 | SideEffect | ~m2068_7 | +| ir.cpp:2068:7:2068:7 | Unary | r2068_14 | +| ir.cpp:2068:9:2068:9 | Address | &:r2068_4 | +| ir.cpp:2068:9:2068:9 | Address | &:r2068_9 | +| ir.cpp:2068:9:2068:9 | Address | &:r2068_35 | +| ir.cpp:2068:9:2068:9 | Address | &:r2068_46 | +| ir.cpp:2068:9:2068:9 | Condition | r2068_5 | +| ir.cpp:2068:9:2068:9 | Load | m2066_6 | +| ir.cpp:2068:9:2068:9 | Load | m2068_8 | +| ir.cpp:2068:9:2068:9 | Phi | from 5:m2068_36 | +| ir.cpp:2068:9:2068:9 | Phi | from 5:~m2068_30 | +| ir.cpp:2068:9:2068:9 | Phi | from 6:m2068_47 | +| ir.cpp:2068:9:2068:9 | Phi | from 6:~m2068_42 | +| ir.cpp:2068:9:2068:9 | StoreValue | r2068_10 | +| ir.cpp:2068:9:2068:34 | Address | &:r2068_3 | +| ir.cpp:2068:9:2068:34 | Address | &:r2068_13 | +| ir.cpp:2068:9:2068:34 | Arg(0) | 0:r2068_13 | +| ir.cpp:2068:9:2068:34 | SideEffect | ~m2068_11 | +| ir.cpp:2068:9:2068:34 | Unary | r2068_3 | +| ir.cpp:2068:9:2068:34 | Unary | r2068_12 | +| ir.cpp:2068:13:2068:13 | Address | &:r2068_22 | +| ir.cpp:2068:13:2068:13 | Address | &:r2068_22 | +| ir.cpp:2068:13:2068:13 | Address | &:r2068_22 | +| ir.cpp:2068:13:2068:13 | Address | &:r2068_27 | +| ir.cpp:2068:13:2068:13 | Arg(0) | 0:r2068_27 | +| ir.cpp:2068:13:2068:13 | Arg(this) | this:r2068_22 | +| ir.cpp:2068:13:2068:13 | CallTarget | func:r2068_24 | +| ir.cpp:2068:13:2068:13 | ChiPartial | partial:m2068_29 | +| ir.cpp:2068:13:2068:13 | ChiPartial | partial:m2068_32 | +| ir.cpp:2068:13:2068:13 | ChiTotal | total:m2067_13 | +| ir.cpp:2068:13:2068:13 | ChiTotal | total:m2068_23 | +| ir.cpp:2068:13:2068:13 | Load | m2068_33 | +| ir.cpp:2068:13:2068:13 | SideEffect | ~m2066_8 | +| ir.cpp:2068:13:2068:13 | SideEffect | ~m2067_13 | +| ir.cpp:2068:13:2068:13 | StoreValue | r2068_34 | +| ir.cpp:2068:13:2068:13 | Unary | r2068_25 | +| ir.cpp:2068:13:2068:13 | Unary | r2068_26 | +| ir.cpp:2068:17:2068:34 | Address | &:r2068_37 | +| ir.cpp:2068:17:2068:34 | Address | &:r2068_37 | +| ir.cpp:2068:17:2068:34 | Address | &:r2068_37 | +| ir.cpp:2068:17:2068:34 | Arg(this) | this:r2068_37 | +| ir.cpp:2068:17:2068:34 | CallTarget | func:r2068_39 | +| ir.cpp:2068:17:2068:34 | ChiPartial | partial:m2068_41 | +| ir.cpp:2068:17:2068:34 | ChiPartial | partial:m2068_43 | +| ir.cpp:2068:17:2068:34 | ChiTotal | total:m2067_13 | +| ir.cpp:2068:17:2068:34 | ChiTotal | total:m2068_38 | +| ir.cpp:2068:17:2068:34 | Load | m2068_44 | +| ir.cpp:2068:17:2068:34 | SideEffect | ~m2067_13 | +| ir.cpp:2068:17:2068:34 | StoreValue | r2068_45 | +| ir.cpp:2069:5:2069:5 | Address | &:r2069_1 | +| ir.cpp:2069:5:2069:5 | Address | &:r2069_1 | +| ir.cpp:2069:5:2069:5 | Arg(this) | this:r2069_1 | +| ir.cpp:2069:5:2069:5 | ChiPartial | partial:m2069_19 | +| ir.cpp:2069:5:2069:5 | ChiTotal | total:m2068_20 | +| ir.cpp:2069:5:2069:5 | SideEffect | m2068_20 | +| ir.cpp:2069:7:2069:7 | CallTarget | func:r2069_2 | +| ir.cpp:2069:7:2069:7 | ChiPartial | partial:m2069_15 | +| ir.cpp:2069:7:2069:7 | ChiTotal | total:m2069_7 | +| ir.cpp:2069:7:2069:7 | SideEffect | ~m2069_7 | +| ir.cpp:2069:7:2069:7 | Unary | r2069_14 | +| ir.cpp:2069:9:2069:9 | Address | &:r2069_4 | +| ir.cpp:2069:9:2069:9 | Address | &:r2069_9 | +| ir.cpp:2069:9:2069:9 | Address | &:r2069_31 | +| ir.cpp:2069:9:2069:9 | Address | &:r2069_42 | +| ir.cpp:2069:9:2069:9 | Condition | r2069_5 | +| ir.cpp:2069:9:2069:9 | Load | m2066_6 | +| ir.cpp:2069:9:2069:9 | Load | m2069_8 | +| ir.cpp:2069:9:2069:9 | Phi | from 8:m2069_32 | +| ir.cpp:2069:9:2069:9 | Phi | from 8:~m2069_27 | +| ir.cpp:2069:9:2069:9 | Phi | from 9:m2069_43 | +| ir.cpp:2069:9:2069:9 | Phi | from 9:~m2069_38 | +| ir.cpp:2069:9:2069:9 | StoreValue | r2069_10 | +| ir.cpp:2069:9:2069:51 | Address | &:r2069_3 | +| ir.cpp:2069:9:2069:51 | Address | &:r2069_13 | +| ir.cpp:2069:9:2069:51 | Arg(0) | 0:r2069_13 | +| ir.cpp:2069:9:2069:51 | SideEffect | ~m2069_11 | +| ir.cpp:2069:9:2069:51 | Unary | r2069_3 | +| ir.cpp:2069:9:2069:51 | Unary | r2069_12 | +| ir.cpp:2069:13:2069:30 | Address | &:r2069_22 | +| ir.cpp:2069:13:2069:30 | Address | &:r2069_22 | +| ir.cpp:2069:13:2069:30 | Address | &:r2069_22 | +| ir.cpp:2069:13:2069:30 | Arg(this) | this:r2069_22 | +| ir.cpp:2069:13:2069:30 | CallTarget | func:r2069_24 | +| ir.cpp:2069:13:2069:30 | ChiPartial | partial:m2069_26 | +| ir.cpp:2069:13:2069:30 | ChiPartial | partial:m2069_28 | +| ir.cpp:2069:13:2069:30 | ChiTotal | total:m2068_16 | +| ir.cpp:2069:13:2069:30 | ChiTotal | total:m2069_23 | +| ir.cpp:2069:13:2069:30 | Load | m2069_29 | +| ir.cpp:2069:13:2069:30 | SideEffect | ~m2068_16 | +| ir.cpp:2069:13:2069:30 | StoreValue | r2069_30 | +| ir.cpp:2069:34:2069:51 | Address | &:r2069_33 | +| ir.cpp:2069:34:2069:51 | Address | &:r2069_33 | +| ir.cpp:2069:34:2069:51 | Address | &:r2069_33 | +| ir.cpp:2069:34:2069:51 | Arg(this) | this:r2069_33 | +| ir.cpp:2069:34:2069:51 | CallTarget | func:r2069_35 | +| ir.cpp:2069:34:2069:51 | ChiPartial | partial:m2069_37 | +| ir.cpp:2069:34:2069:51 | ChiPartial | partial:m2069_39 | +| ir.cpp:2069:34:2069:51 | ChiTotal | total:m2068_16 | +| ir.cpp:2069:34:2069:51 | ChiTotal | total:m2069_34 | +| ir.cpp:2069:34:2069:51 | Load | m2069_40 | +| ir.cpp:2069:34:2069:51 | SideEffect | ~m2068_16 | +| ir.cpp:2069:34:2069:51 | StoreValue | r2069_41 | +| ir.cpp:2070:5:2070:19 | ChiPartial | partial:m2070_35 | +| ir.cpp:2070:5:2070:19 | ChiTotal | total:m2070_17 | +| ir.cpp:2070:5:2070:19 | SideEffect | m2070_17 | +| ir.cpp:2070:6:2070:6 | Address | &:r2070_1 | +| ir.cpp:2070:6:2070:6 | Address | &:r2070_1 | +| ir.cpp:2070:6:2070:6 | Arg(this) | this:r2070_1 | +| ir.cpp:2070:6:2070:6 | ChiPartial | partial:m2070_16 | +| ir.cpp:2070:6:2070:6 | ChiTotal | total:m2069_20 | +| ir.cpp:2070:6:2070:6 | SideEffect | m2069_20 | +| ir.cpp:2070:8:2070:8 | CallTarget | func:r2070_2 | +| ir.cpp:2070:8:2070:8 | ChiPartial | partial:m2070_12 | +| ir.cpp:2070:8:2070:8 | ChiTotal | total:m2069_16 | +| ir.cpp:2070:8:2070:8 | SideEffect | ~m2069_16 | +| ir.cpp:2070:8:2070:8 | Unary | r2070_11 | +| ir.cpp:2070:8:2070:19 | Address | &:r2070_18 | +| ir.cpp:2070:8:2070:19 | Address | &:r2070_18 | +| ir.cpp:2070:8:2070:19 | Arg(this) | this:r2070_18 | +| ir.cpp:2070:10:2070:10 | Address | &:r2070_3 | +| ir.cpp:2070:10:2070:10 | Condition | r2070_4 | +| ir.cpp:2070:10:2070:10 | Load | m2066_6 | +| ir.cpp:2070:10:2070:18 | Address | &:r2070_7 | +| ir.cpp:2070:10:2070:18 | Address | &:r2070_10 | +| ir.cpp:2070:10:2070:18 | Address | &:r2070_39 | +| ir.cpp:2070:10:2070:18 | Address | &:r2070_42 | +| ir.cpp:2070:10:2070:18 | Arg(0) | 0:r2070_10 | +| ir.cpp:2070:10:2070:18 | Load | m2070_6 | +| ir.cpp:2070:10:2070:18 | Phi | from 11:m2070_40 | +| ir.cpp:2070:10:2070:18 | Phi | from 12:m2070_43 | +| ir.cpp:2070:10:2070:18 | SideEffect | ~m2070_13 | +| ir.cpp:2070:10:2070:18 | Unary | r2070_8 | +| ir.cpp:2070:10:2070:18 | Unary | r2070_9 | +| ir.cpp:2070:14:2070:14 | StoreValue | r2070_38 | +| ir.cpp:2070:18:2070:18 | StoreValue | r2070_41 | +| ir.cpp:2070:21:2070:21 | CallTarget | func:r2070_19 | +| ir.cpp:2070:21:2070:21 | ChiPartial | partial:m2070_31 | +| ir.cpp:2070:21:2070:21 | ChiTotal | total:m2070_25 | +| ir.cpp:2070:21:2070:21 | SideEffect | ~m2070_25 | +| ir.cpp:2070:21:2070:21 | Unary | r2070_30 | +| ir.cpp:2070:23:2070:40 | Address | &:r2070_20 | +| ir.cpp:2070:23:2070:40 | Address | &:r2070_20 | +| ir.cpp:2070:23:2070:40 | Address | &:r2070_29 | +| ir.cpp:2070:23:2070:40 | Arg(0) | 0:r2070_29 | +| ir.cpp:2070:23:2070:40 | Arg(this) | this:r2070_20 | +| ir.cpp:2070:23:2070:40 | CallTarget | func:r2070_22 | +| ir.cpp:2070:23:2070:40 | ChiPartial | partial:m2070_24 | +| ir.cpp:2070:23:2070:40 | ChiPartial | partial:m2070_26 | +| ir.cpp:2070:23:2070:40 | ChiTotal | total:m2070_13 | +| ir.cpp:2070:23:2070:40 | ChiTotal | total:m2070_21 | +| ir.cpp:2070:23:2070:40 | SideEffect | ~m2070_13 | +| ir.cpp:2070:23:2070:40 | SideEffect | ~m2070_27 | +| ir.cpp:2070:23:2070:40 | Unary | r2070_20 | +| ir.cpp:2070:23:2070:40 | Unary | r2070_28 | +| ir.cpp:2075:14:2075:22 | Address | &:r2075_7 | +| ir.cpp:2075:14:2075:22 | ChiPartial | partial:m2075_3 | +| ir.cpp:2075:14:2075:22 | ChiTotal | total:m2075_2 | +| ir.cpp:2075:14:2075:22 | Load | m2080_2 | +| ir.cpp:2075:14:2075:22 | SideEffect | ~m2077_6 | +| ir.cpp:2075:37:2075:37 | Address | &:r2075_5 | +| ir.cpp:2076:16:2076:16 | Address | &:r2076_1 | +| ir.cpp:2077:3:2077:3 | Address | &:r2077_10 | +| ir.cpp:2077:7:2077:7 | Address | &:r2077_1 | +| ir.cpp:2077:7:2077:7 | Left | r2077_2 | +| ir.cpp:2077:7:2077:7 | Load | m2075_6 | +| ir.cpp:2077:7:2077:13 | Condition | r2077_4 | +| ir.cpp:2077:7:2079:28 | Address | &:r2077_8 | +| ir.cpp:2077:7:2079:28 | Address | &:r2077_12 | +| ir.cpp:2077:7:2079:28 | Address | &:r2077_14 | +| ir.cpp:2077:7:2079:28 | Load | m2077_7 | +| ir.cpp:2077:7:2079:28 | Phi | from 2:m2077_13 | +| ir.cpp:2077:7:2079:28 | Phi | from 2:~m2078_6 | +| ir.cpp:2077:7:2079:28 | Phi | from 3:m2077_15 | +| ir.cpp:2077:7:2079:28 | Phi | from 3:~m2079_6 | +| ir.cpp:2077:7:2079:28 | StoreValue | r2077_9 | +| ir.cpp:2077:11:2077:13 | Right | r2077_3 | +| ir.cpp:2078:6:2078:20 | CallTarget | func:r2078_1 | +| ir.cpp:2078:6:2078:20 | ChiPartial | partial:m2078_5 | +| ir.cpp:2078:6:2078:20 | ChiTotal | total:m2075_4 | +| ir.cpp:2078:6:2078:20 | SideEffect | ~m2075_4 | +| ir.cpp:2078:6:2078:26 | StoreValue | r2078_9 | +| ir.cpp:2078:22:2078:22 | Address | &:r2078_2 | +| ir.cpp:2078:22:2078:22 | Arg(0) | 0:r2078_3 | +| ir.cpp:2078:22:2078:22 | Load | m2075_6 | +| ir.cpp:2078:26:2078:26 | Address | &:r2078_7 | +| ir.cpp:2078:26:2078:26 | Load | m2075_6 | +| ir.cpp:2078:26:2078:26 | Unary | r2078_8 | +| ir.cpp:2079:5:2079:28 | StoreValue | r2079_9 | +| ir.cpp:2079:6:2079:20 | CallTarget | func:r2079_1 | +| ir.cpp:2079:6:2079:20 | ChiPartial | partial:m2079_5 | +| ir.cpp:2079:6:2079:20 | ChiTotal | total:m2075_4 | +| ir.cpp:2079:6:2079:20 | SideEffect | ~m2075_4 | +| ir.cpp:2079:6:2079:27 | Unary | r2079_8 | +| ir.cpp:2079:22:2079:22 | Address | &:r2079_2 | +| ir.cpp:2079:22:2079:22 | Arg(0) | 0:r2079_3 | +| ir.cpp:2079:22:2079:22 | Load | m2075_6 | +| ir.cpp:2079:26:2079:27 | Unary | r2079_7 | +| ir.cpp:2080:1:2080:1 | Address | &:r2080_1 | +| ir.cpp:2082:6:2082:17 | ChiPartial | partial:m2082_3 | +| ir.cpp:2082:6:2082:17 | ChiTotal | total:m2082_2 | +| ir.cpp:2082:6:2082:17 | SideEffect | ~m2085_6 | +| ir.cpp:2083:8:2083:8 | Address | &:r2083_1 | +| ir.cpp:2083:12:2083:18 | Address | &:r2083_4 | +| ir.cpp:2083:12:2083:18 | Arg(0) | 0:r2083_3 | +| ir.cpp:2083:12:2083:18 | CallTarget | func:r2083_2 | +| ir.cpp:2083:12:2083:18 | ChiPartial | partial:m2083_5 | +| ir.cpp:2083:12:2083:18 | ChiTotal | total:m2082_4 | +| ir.cpp:2083:12:2083:18 | SideEffect | ~m2082_4 | +| ir.cpp:2083:12:2083:18 | StoreValue | r2083_8 | +| ir.cpp:2083:12:2083:18 | Unary | r2083_4 | +| ir.cpp:2084:3:2084:4 | Address | &:r2084_4 | +| ir.cpp:2084:3:2084:8 | ChiPartial | partial:m2084_5 | +| ir.cpp:2084:3:2084:8 | ChiTotal | total:m2083_7 | +| ir.cpp:2084:4:2084:4 | Address | &:r2084_2 | +| ir.cpp:2084:4:2084:4 | Load | m2083_9 | +| ir.cpp:2084:4:2084:4 | Unary | r2084_3 | +| ir.cpp:2084:8:2084:8 | StoreValue | r2084_1 | +| ir.cpp:2085:3:2085:10 | CallTarget | func:r2085_1 | +| ir.cpp:2085:3:2085:10 | ChiPartial | partial:m2085_5 | +| ir.cpp:2085:3:2085:10 | ChiTotal | total:m2083_6 | +| ir.cpp:2085:3:2085:10 | SideEffect | ~m2083_6 | +| ir.cpp:2085:10:2085:10 | Address | &:r2085_2 | +| ir.cpp:2085:10:2085:10 | Arg(0) | 0:r2085_3 | +| ir.cpp:2085:10:2085:10 | Load | m2083_9 | +| ir.cpp:2088:7:2088:7 | Address | &:r2088_5 | +| ir.cpp:2088:7:2088:7 | Address | &:r2088_5 | +| ir.cpp:2088:7:2088:7 | Address | &:r2088_7 | +| ir.cpp:2088:7:2088:7 | Address | &:r2088_7 | +| ir.cpp:2088:7:2088:7 | ChiPartial | partial:m2088_3 | +| ir.cpp:2088:7:2088:7 | ChiTotal | total:m2088_2 | +| ir.cpp:2088:7:2088:7 | Load | m2088_6 | +| ir.cpp:2088:7:2088:7 | SideEffect | m2088_3 | +| ir.cpp:2088:7:2088:7 | SideEffect | m2088_8 | +| ir.cpp:2090:10:2090:24 | ChiPartial | partial:m2090_3 | +| ir.cpp:2090:10:2090:24 | ChiTotal | total:m2090_2 | +| ir.cpp:2090:10:2090:24 | SideEffect | m2090_3 | +| ir.cpp:2090:32:2090:32 | Address | &:r2090_5 | +| ir.cpp:2090:32:2090:32 | Address | &:r2090_5 | +| ir.cpp:2090:32:2090:32 | Address | &:r2090_7 | +| ir.cpp:2090:32:2090:32 | Address | &:r2090_7 | +| ir.cpp:2090:32:2090:32 | Load | m2090_6 | +| ir.cpp:2090:32:2090:32 | SideEffect | m2090_8 | +| ir.cpp:2092:13:2092:18 | Address | &:r2092_5 | +| ir.cpp:2092:13:2092:18 | Address | &:r2092_5 | +| ir.cpp:2092:13:2092:18 | Address | &:r2092_7 | +| ir.cpp:2092:13:2092:18 | Address | &:r2092_7 | +| ir.cpp:2092:13:2092:18 | ChiPartial | partial:m2092_3 | +| ir.cpp:2092:13:2092:18 | ChiTotal | total:m2092_2 | +| ir.cpp:2092:13:2092:18 | Load | m2092_6 | +| ir.cpp:2092:13:2092:18 | SideEffect | m2092_3 | +| ir.cpp:2092:13:2092:18 | SideEffect | m2092_8 | +| ir.cpp:2095:7:2095:7 | Address | &:r2095_5 | +| ir.cpp:2095:7:2095:7 | Address | &:r2095_5 | +| ir.cpp:2095:7:2095:7 | Address | &:r2095_7 | +| ir.cpp:2095:7:2095:7 | Address | &:r2095_7 | +| ir.cpp:2095:7:2095:7 | Address | &:r2095_9 | +| ir.cpp:2095:7:2095:7 | Arg(this) | this:r2095_9 | +| ir.cpp:2095:7:2095:7 | CallTarget | func:r2095_10 | +| ir.cpp:2095:7:2095:7 | ChiPartial | partial:m2095_3 | +| ir.cpp:2095:7:2095:7 | ChiPartial | partial:m2095_12 | +| ir.cpp:2095:7:2095:7 | ChiPartial | partial:m2095_14 | +| ir.cpp:2095:7:2095:7 | ChiTotal | total:m2095_2 | +| ir.cpp:2095:7:2095:7 | ChiTotal | total:m2095_4 | +| ir.cpp:2095:7:2095:7 | ChiTotal | total:m2095_8 | +| ir.cpp:2095:7:2095:7 | Load | m2095_6 | +| ir.cpp:2095:7:2095:7 | SideEffect | m2095_15 | +| ir.cpp:2095:7:2095:7 | SideEffect | ~m2095_4 | +| ir.cpp:2095:7:2095:7 | SideEffect | ~m2095_13 | +| ir.cpp:2095:7:2095:7 | Unary | m2095_6 | +| ir.cpp:2098:5:2098:13 | Address | &:r2098_5 | +| ir.cpp:2098:5:2098:13 | Address | &:r2098_5 | +| ir.cpp:2098:5:2098:13 | Address | &:r2098_7 | +| ir.cpp:2098:5:2098:13 | Address | &:r2098_7 | +| ir.cpp:2098:5:2098:13 | ChiPartial | partial:m2098_3 | +| ir.cpp:2098:5:2098:13 | ChiTotal | total:m2098_2 | +| ir.cpp:2098:5:2098:13 | Load | m2098_6 | +| ir.cpp:2098:5:2098:13 | SideEffect | m2098_8 | +| ir.cpp:2098:5:2098:13 | SideEffect | ~m2098_14 | +| ir.cpp:2098:5:2098:13 | Unary | m2098_6 | +| ir.cpp:2098:18:2098:18 | Arg(this) | this:r2098_10 | +| ir.cpp:2098:18:2098:18 | CallTarget | func:r2098_11 | +| ir.cpp:2098:18:2098:18 | ChiPartial | partial:m2098_13 | +| ir.cpp:2098:18:2098:18 | ChiTotal | total:m2098_4 | +| ir.cpp:2098:18:2098:18 | SideEffect | ~m2098_4 | +| ir.cpp:2100:10:2100:24 | ChiPartial | partial:m2100_3 | +| ir.cpp:2100:10:2100:24 | ChiTotal | total:m2100_2 | +| ir.cpp:2100:10:2100:24 | SideEffect | m2100_3 | +| ir.cpp:2100:32:2100:32 | Address | &:r2100_5 | +| ir.cpp:2100:32:2100:32 | Address | &:r2100_5 | +| ir.cpp:2100:32:2100:32 | Address | &:r2100_7 | +| ir.cpp:2100:32:2100:32 | Address | &:r2100_7 | +| ir.cpp:2100:32:2100:32 | Load | m2100_6 | +| ir.cpp:2100:32:2100:32 | SideEffect | m2100_8 | +| ir.cpp:2105:5:2105:18 | Address | &:r2105_5 | +| ir.cpp:2105:5:2105:18 | ChiPartial | partial:m2105_3 | +| ir.cpp:2105:5:2105:18 | ChiTotal | total:m2105_2 | +| ir.cpp:2105:5:2105:18 | Load | m2115_2 | +| ir.cpp:2105:5:2105:18 | SideEffect | ~m2114_6 | +| ir.cpp:2107:12:2107:13 | Address | &:r2107_1 | +| ir.cpp:2107:17:2107:27 | Address | &:r2107_4 | +| ir.cpp:2107:17:2107:27 | Address | &:r2107_8 | +| ir.cpp:2107:17:2107:27 | Arg(0) | 0:r2107_3 | +| ir.cpp:2107:17:2107:27 | Arg(this) | this:r2107_8 | +| ir.cpp:2107:17:2107:27 | CallTarget | func:r2107_2 | +| ir.cpp:2107:17:2107:27 | CallTarget | func:r2107_9 | +| ir.cpp:2107:17:2107:27 | ChiPartial | partial:m2107_5 | +| ir.cpp:2107:17:2107:27 | ChiPartial | partial:m2107_11 | +| ir.cpp:2107:17:2107:27 | ChiPartial | partial:m2107_13 | +| ir.cpp:2107:17:2107:27 | ChiTotal | total:m2105_4 | +| ir.cpp:2107:17:2107:27 | ChiTotal | total:m2107_6 | +| ir.cpp:2107:17:2107:27 | ChiTotal | total:m2107_7 | +| ir.cpp:2107:17:2107:27 | SideEffect | ~m2105_4 | +| ir.cpp:2107:17:2107:27 | SideEffect | ~m2107_6 | +| ir.cpp:2107:17:2107:27 | StoreValue | r2107_8 | +| ir.cpp:2107:17:2107:27 | Unary | r2107_4 | +| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_1 | +| ir.cpp:2108:5:2108:13 | ChiPartial | partial:m2108_5 | +| ir.cpp:2108:5:2108:13 | ChiTotal | total:m2107_12 | +| ir.cpp:2108:5:2108:13 | SideEffect | ~m2107_12 | +| ir.cpp:2108:12:2108:13 | Address | &:r2108_2 | +| ir.cpp:2108:12:2108:13 | Arg(0) | 0:r2108_3 | +| ir.cpp:2108:12:2108:13 | Load | m2107_15 | +| ir.cpp:2110:12:2110:13 | Address | &:r2110_1 | +| ir.cpp:2110:17:2110:30 | Address | &:r2110_4 | +| ir.cpp:2110:17:2110:30 | Address | &:r2110_8 | +| ir.cpp:2110:17:2110:30 | Arg(0) | 0:r2110_3 | +| ir.cpp:2110:17:2110:30 | Arg(this) | this:r2110_8 | +| ir.cpp:2110:17:2110:30 | CallTarget | func:r2110_2 | +| ir.cpp:2110:17:2110:30 | CallTarget | func:r2110_9 | +| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_5 | +| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_11 | +| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_13 | +| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2108_6 | +| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_6 | +| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_7 | +| ir.cpp:2110:17:2110:30 | SideEffect | ~m2108_6 | +| ir.cpp:2110:17:2110:30 | SideEffect | ~m2110_6 | +| ir.cpp:2110:17:2110:30 | StoreValue | r2110_15 | +| ir.cpp:2110:17:2110:30 | Unary | r2110_4 | +| ir.cpp:2110:17:2110:30 | Unary | r2110_8 | +| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_1 | +| ir.cpp:2111:5:2111:13 | ChiPartial | partial:m2111_5 | +| ir.cpp:2111:5:2111:13 | ChiTotal | total:m2110_12 | +| ir.cpp:2111:5:2111:13 | SideEffect | ~m2110_12 | +| ir.cpp:2111:12:2111:13 | Address | &:r2111_2 | +| ir.cpp:2111:12:2111:13 | Arg(0) | 0:r2111_3 | +| ir.cpp:2111:12:2111:13 | Load | m2110_16 | +| ir.cpp:2113:15:2113:15 | Address | &:r2113_1 | +| ir.cpp:2113:19:2113:32 | Address | &:r2113_4 | +| ir.cpp:2113:19:2113:32 | Address | &:r2113_8 | +| ir.cpp:2113:19:2113:32 | Arg(0) | 0:r2113_3 | +| ir.cpp:2113:19:2113:32 | Arg(this) | this:r2113_8 | +| ir.cpp:2113:19:2113:32 | CallTarget | func:r2113_2 | +| ir.cpp:2113:19:2113:32 | CallTarget | func:r2113_9 | +| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_5 | +| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_11 | +| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_13 | +| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2111_6 | +| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_6 | +| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_7 | +| ir.cpp:2113:19:2113:32 | SideEffect | ~m2111_6 | +| ir.cpp:2113:19:2113:32 | SideEffect | ~m2113_6 | +| ir.cpp:2113:19:2113:32 | StoreValue | r2113_8 | +| ir.cpp:2113:19:2113:32 | Unary | r2113_4 | +| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_1 | +| ir.cpp:2114:5:2114:12 | ChiPartial | partial:m2114_5 | +| ir.cpp:2114:5:2114:12 | ChiTotal | total:m2113_12 | +| ir.cpp:2114:5:2114:12 | SideEffect | ~m2113_12 | +| ir.cpp:2114:12:2114:12 | Address | &:r2114_2 | +| ir.cpp:2114:12:2114:12 | Arg(0) | 0:r2114_3 | +| ir.cpp:2114:12:2114:12 | Load | m2113_15 | +| ir.cpp:2115:1:2115:1 | Address | &:r2115_1 | +| ir.cpp:2119:6:2119:26 | ChiPartial | partial:m2119_3 | +| ir.cpp:2119:6:2119:26 | ChiTotal | total:m2119_2 | +| ir.cpp:2119:6:2119:26 | SideEffect | ~m2121_5 | +| ir.cpp:2120:13:2120:13 | Address | &:r2120_1 | +| ir.cpp:2120:16:2120:19 | StoreValue | r2120_2 | +| ir.cpp:2121:3:2121:27 | CallTarget | func:r2121_1 | +| ir.cpp:2121:3:2121:27 | ChiPartial | partial:m2121_4 | +| ir.cpp:2121:3:2121:27 | ChiTotal | total:m2119_4 | +| ir.cpp:2121:3:2121:27 | SideEffect | ~m2119_4 | +| ir.cpp:2121:29:2121:29 | Arg(0) | 0:r2121_2 | +| ir.cpp:2126:5:2126:11 | Address | &:r2126_6 | +| ir.cpp:2126:5:2126:11 | ChiPartial | partial:m2126_3 | +| ir.cpp:2126:5:2126:11 | ChiTotal | total:m2126_2 | +| ir.cpp:2126:5:2126:11 | Load | m2131_4 | +| ir.cpp:2126:5:2126:11 | SideEffect | ~m2130_4 | +| ir.cpp:2127:9:2127:9 | Address | &:r2127_1 | +| ir.cpp:2127:13:2127:15 | CallTarget | func:r2127_2 | +| ir.cpp:2127:13:2127:15 | ChiPartial | partial:m2127_6 | +| ir.cpp:2127:13:2127:15 | ChiTotal | total:m2126_4 | +| ir.cpp:2127:13:2127:15 | SideEffect | ~m2126_4 | +| ir.cpp:2127:13:2127:15 | StoreValue | r2127_5 | +| ir.cpp:2127:17:2127:17 | Arg(0) | 0:r2127_3 | +| ir.cpp:2127:19:2127:19 | Arg(1) | 1:r2127_4 | +| ir.cpp:2128:9:2128:9 | Address | &:r2128_1 | +| ir.cpp:2128:9:2128:9 | Left | r2128_2 | +| ir.cpp:2128:9:2128:9 | Load | m2127_8 | +| ir.cpp:2128:9:2128:14 | Condition | r2128_4 | +| ir.cpp:2128:14:2128:14 | Right | r2128_3 | +| ir.cpp:2129:9:2129:12 | CallTarget | func:r2129_1 | +| ir.cpp:2129:9:2129:12 | ChiPartial | partial:m2129_4 | +| ir.cpp:2129:9:2129:12 | ChiTotal | total:m2127_7 | +| ir.cpp:2129:9:2129:12 | SideEffect | ~m2127_7 | +| ir.cpp:2129:14:2129:14 | Arg(0) | 0:r2129_2 | +| ir.cpp:2130:5:2130:12 | CallTarget | func:r2130_1 | +| ir.cpp:2130:5:2130:12 | ChiPartial | partial:m2130_3 | +| ir.cpp:2130:5:2130:12 | ChiTotal | total:m2127_7 | +| ir.cpp:2130:5:2130:12 | SideEffect | ~m2127_7 | +| ir.cpp:2131:5:2131:13 | Address | &:r2131_1 | +| ir.cpp:2131:12:2131:12 | Address | &:r2131_2 | +| ir.cpp:2131:12:2131:12 | Load | m2127_8 | +| ir.cpp:2131:12:2131:12 | StoreValue | r2131_3 | +| ir.cpp:2134:6:2134:17 | ChiPartial | partial:m2134_3 | +| ir.cpp:2134:6:2134:17 | ChiTotal | total:m2134_2 | +| ir.cpp:2135:5:2135:12 | CallTarget | func:r2135_1 | +| ir.cpp:2135:5:2135:12 | ChiPartial | partial:m2135_3 | +| ir.cpp:2135:5:2135:12 | ChiTotal | total:m2134_4 | +| ir.cpp:2135:5:2135:12 | SideEffect | ~m2134_4 | +| ir.cpp:2136:5:2136:8 | CallTarget | func:r2136_1 | +| ir.cpp:2136:5:2136:8 | ChiPartial | partial:m2136_4 | +| ir.cpp:2136:5:2136:8 | ChiTotal | total:m2135_4 | +| ir.cpp:2136:5:2136:8 | SideEffect | ~m2135_4 | +| ir.cpp:2136:10:2136:10 | Arg(0) | 0:r2136_2 | +| ir.cpp:2139:5:2139:16 | Address | &:r2139_6 | +| ir.cpp:2139:5:2139:16 | ChiPartial | partial:m2139_3 | +| ir.cpp:2139:5:2139:16 | ChiTotal | total:m2139_2 | +| ir.cpp:2139:5:2139:16 | Load | m2144_4 | +| ir.cpp:2139:5:2139:16 | SideEffect | ~m2143_4 | +| ir.cpp:2140:9:2140:9 | Address | &:r2140_1 | +| ir.cpp:2140:13:2140:15 | CallTarget | func:r2140_2 | +| ir.cpp:2140:13:2140:15 | ChiPartial | partial:m2140_6 | +| ir.cpp:2140:13:2140:15 | ChiTotal | total:m2139_4 | +| ir.cpp:2140:13:2140:15 | SideEffect | ~m2139_4 | +| ir.cpp:2140:13:2140:15 | StoreValue | r2140_5 | +| ir.cpp:2140:17:2140:17 | Arg(0) | 0:r2140_3 | +| ir.cpp:2140:19:2140:19 | Arg(1) | 1:r2140_4 | +| ir.cpp:2141:9:2141:9 | Address | &:r2141_1 | +| ir.cpp:2141:9:2141:9 | Left | r2141_2 | +| ir.cpp:2141:9:2141:9 | Load | m2140_8 | +| ir.cpp:2141:9:2141:14 | Condition | r2141_4 | +| ir.cpp:2141:14:2141:14 | Right | r2141_3 | +| ir.cpp:2142:9:2142:20 | CallTarget | func:r2142_1 | +| ir.cpp:2143:5:2143:12 | CallTarget | func:r2143_1 | +| ir.cpp:2143:5:2143:12 | ChiPartial | partial:m2143_3 | +| ir.cpp:2143:5:2143:12 | ChiTotal | total:m2140_7 | +| ir.cpp:2143:5:2143:12 | SideEffect | ~m2140_7 | +| ir.cpp:2144:5:2144:13 | Address | &:r2144_1 | +| ir.cpp:2144:12:2144:12 | Address | &:r2144_2 | +| ir.cpp:2144:12:2144:12 | Load | m2140_8 | +| ir.cpp:2144:12:2144:12 | StoreValue | r2144_3 | +| ir.cpp:2147:6:2147:24 | ChiPartial | partial:m2147_3 | +| ir.cpp:2147:6:2147:24 | ChiTotal | total:m2147_2 | +| ir.cpp:2147:6:2147:24 | SideEffect | ~m2153_8 | +| ir.cpp:2147:33:2147:33 | Address | &:r2147_5 | +| ir.cpp:2148:3:2148:12 | Address | &:r2148_6 | +| ir.cpp:2148:3:2148:12 | Arg(0) | 0:r2148_5 | +| ir.cpp:2148:3:2148:12 | CallTarget | func:r2148_1 | +| ir.cpp:2148:3:2148:12 | ChiPartial | partial:m2148_7 | +| ir.cpp:2148:3:2148:12 | ChiTotal | total:m2147_4 | +| ir.cpp:2148:3:2148:12 | Right | r2148_4 | +| ir.cpp:2148:3:2148:12 | SideEffect | ~m2147_4 | +| ir.cpp:2148:3:2148:12 | Unary | r2148_6 | +| ir.cpp:2148:11:2148:11 | Address | &:r2148_2 | +| ir.cpp:2148:11:2148:11 | Left | r2148_3 | +| ir.cpp:2148:11:2148:11 | Load | m2147_6 | +| ir.cpp:2149:3:2149:18 | Address | &:r2149_7 | +| ir.cpp:2149:3:2149:18 | Arg(0) | 0:r2149_5 | +| ir.cpp:2149:3:2149:18 | CallTarget | func:r2149_1 | +| ir.cpp:2149:3:2149:18 | ChiPartial | partial:m2149_8 | +| ir.cpp:2149:3:2149:18 | ChiTotal | total:m2148_8 | +| ir.cpp:2149:3:2149:18 | Right | r2149_4 | +| ir.cpp:2149:3:2149:18 | SideEffect | ~m2148_8 | +| ir.cpp:2149:3:2149:18 | Unary | r2149_7 | +| ir.cpp:2149:7:2149:10 | Arg(1) | 1:r2149_6 | +| ir.cpp:2149:17:2149:17 | Address | &:r2149_2 | +| ir.cpp:2149:17:2149:17 | Left | r2149_3 | +| ir.cpp:2149:17:2149:17 | Load | m2147_6 | +| ir.cpp:2150:3:2150:15 | Address | &:r2150_6 | +| ir.cpp:2150:3:2150:15 | Arg(0) | 0:r2150_5 | +| ir.cpp:2150:3:2150:15 | CallTarget | func:r2150_1 | +| ir.cpp:2150:3:2150:15 | ChiPartial | partial:m2150_7 | +| ir.cpp:2150:3:2150:15 | ChiTotal | total:m2149_9 | +| ir.cpp:2150:3:2150:15 | Right | r2150_4 | +| ir.cpp:2150:3:2150:15 | SideEffect | ~m2149_9 | +| ir.cpp:2150:3:2150:15 | Unary | r2150_6 | +| ir.cpp:2150:14:2150:14 | Address | &:r2150_2 | +| ir.cpp:2150:14:2150:14 | Left | r2150_3 | +| ir.cpp:2150:14:2150:14 | Load | m2147_6 | +| ir.cpp:2151:3:2151:20 | Address | &:r2151_7 | +| ir.cpp:2151:3:2151:20 | Arg(0) | 0:r2151_5 | +| ir.cpp:2151:3:2151:20 | CallTarget | func:r2151_1 | +| ir.cpp:2151:3:2151:20 | ChiPartial | partial:m2151_8 | +| ir.cpp:2151:3:2151:20 | ChiTotal | total:m2150_8 | +| ir.cpp:2151:3:2151:20 | Right | r2151_4 | +| ir.cpp:2151:3:2151:20 | SideEffect | ~m2150_8 | +| ir.cpp:2151:3:2151:20 | Unary | r2151_7 | +| ir.cpp:2151:19:2151:19 | Address | &:r2151_2 | +| ir.cpp:2151:19:2151:19 | Left | r2151_3 | +| ir.cpp:2151:19:2151:19 | Load | m2147_6 | +| ir.cpp:2151:21:2151:21 | Arg(1) | 1:r2151_6 | +| ir.cpp:2152:3:2152:36 | Address | &:r2152_6 | +| ir.cpp:2152:3:2152:36 | Arg(0) | 0:r2152_5 | +| ir.cpp:2152:3:2152:36 | CallTarget | func:r2152_1 | +| ir.cpp:2152:3:2152:36 | ChiPartial | partial:m2152_7 | +| ir.cpp:2152:3:2152:36 | ChiTotal | total:m2151_9 | +| ir.cpp:2152:3:2152:36 | Right | r2152_4 | +| ir.cpp:2152:3:2152:36 | SideEffect | ~m2151_9 | +| ir.cpp:2152:3:2152:36 | Unary | r2152_6 | +| ir.cpp:2152:35:2152:35 | Address | &:r2152_2 | +| ir.cpp:2152:35:2152:35 | Left | r2152_3 | +| ir.cpp:2152:35:2152:35 | Load | m2147_6 | +| ir.cpp:2153:3:2153:24 | Address | &:r2153_6 | +| ir.cpp:2153:3:2153:24 | Arg(0) | 0:r2153_5 | +| ir.cpp:2153:3:2153:24 | CallTarget | func:r2153_1 | +| ir.cpp:2153:3:2153:24 | ChiPartial | partial:m2153_7 | +| ir.cpp:2153:3:2153:24 | ChiTotal | total:m2152_8 | +| ir.cpp:2153:3:2153:24 | Right | r2153_4 | +| ir.cpp:2153:3:2153:24 | SideEffect | ~m2152_8 | +| ir.cpp:2153:3:2153:24 | Unary | r2153_6 | +| ir.cpp:2153:11:2153:11 | Address | &:r2153_2 | +| ir.cpp:2153:11:2153:11 | Left | r2153_3 | +| ir.cpp:2153:11:2153:11 | Load | m2147_6 | +| ir.cpp:2158:7:2158:17 | Address | &:r2158_10 | +| ir.cpp:2158:7:2158:17 | ChiPartial | partial:m2158_3 | +| ir.cpp:2158:7:2158:17 | ChiTotal | total:m2158_2 | +| ir.cpp:2158:7:2158:17 | Load | m2161_4 | +| ir.cpp:2158:7:2158:17 | SideEffect | m2158_3 | +| ir.cpp:2158:25:2158:25 | Address | &:r2158_5 | +| ir.cpp:2158:25:2158:25 | Address | &:r2158_5 | +| ir.cpp:2158:25:2158:25 | Address | &:r2158_7 | +| ir.cpp:2158:25:2158:25 | Address | &:r2158_7 | +| ir.cpp:2158:25:2158:25 | Load | m2158_6 | +| ir.cpp:2158:25:2158:25 | SideEffect | m2158_8 | +| ir.cpp:2159:9:2159:11 | Address | &:r2159_1 | +| ir.cpp:2160:10:2160:10 | Address | &:r2160_1 | +| ir.cpp:2160:14:2160:19 | CallTarget | func:r2160_2 | +| ir.cpp:2160:14:2160:19 | StoreValue | r2160_8 | +| ir.cpp:2160:21:2160:21 | Address | &:r2160_3 | +| ir.cpp:2160:21:2160:21 | Address | &:r2160_5 | +| ir.cpp:2160:21:2160:21 | Arg(0) | 0:r2160_5 | +| ir.cpp:2160:21:2160:21 | Load | m2158_6 | +| ir.cpp:2160:21:2160:21 | SideEffect | ~m2158_8 | +| ir.cpp:2160:21:2160:21 | Unary | r2160_4 | +| ir.cpp:2160:24:2160:27 | Address | &:r2160_7 | +| ir.cpp:2160:24:2160:27 | Arg(1) | 1:r2160_7 | +| ir.cpp:2160:24:2160:27 | ChiPartial | partial:m2160_10 | +| ir.cpp:2160:24:2160:27 | ChiTotal | total:m2159_2 | +| ir.cpp:2160:25:2160:27 | Unary | r2160_6 | +| ir.cpp:2161:3:2161:13 | Address | &:r2161_1 | +| ir.cpp:2161:10:2161:12 | Address | &:r2161_2 | +| ir.cpp:2161:10:2161:12 | Load | m2160_11 | +| ir.cpp:2161:10:2161:12 | StoreValue | r2161_3 | +| ir.cpp:2168:6:2168:39 | ChiPartial | partial:m2168_3 | +| ir.cpp:2168:6:2168:39 | ChiTotal | total:m2168_2 | +| ir.cpp:2168:6:2168:39 | SideEffect | ~m2169_8 | +| ir.cpp:2169:6:2169:42 | Address | &:r2169_1 | +| ir.cpp:2169:6:2169:42 | Condition | r2169_12 | +| ir.cpp:2169:22:2169:22 | Address | &:r2169_4 | +| ir.cpp:2169:22:2169:22 | Address | &:r2169_4 | +| ir.cpp:2169:22:2169:22 | Arg(this) | this:r2169_4 | +| ir.cpp:2169:22:2169:22 | CallTarget | func:r2169_5 | +| ir.cpp:2169:22:2169:22 | ChiPartial | partial:m2169_7 | +| ir.cpp:2169:22:2169:22 | ChiPartial | partial:m2169_10 | +| ir.cpp:2169:22:2169:22 | ChiTotal | total:m2168_4 | +| ir.cpp:2169:22:2169:22 | ChiTotal | total:m2169_3 | +| ir.cpp:2169:22:2169:22 | SideEffect | m2169_3 | +| ir.cpp:2169:22:2169:22 | SideEffect | ~m2168_4 | +| ir.cpp:2169:22:2169:22 | Unary | r2169_6 | +| ir.cpp:2169:25:2169:42 | StoreValue | r2169_2 | +| ir.cpp:2172:7:2172:7 | Address | &:r2172_5 | +| ir.cpp:2172:7:2172:7 | Address | &:r2172_5 | +| ir.cpp:2172:7:2172:7 | Address | &:r2172_7 | +| ir.cpp:2172:7:2172:7 | Address | &:r2172_7 | +| ir.cpp:2172:7:2172:7 | Address | &:r2172_9 | +| ir.cpp:2172:7:2172:7 | Address | &:r2172_10 | +| ir.cpp:2172:7:2172:7 | Address | &:r2172_13 | +| ir.cpp:2172:7:2172:7 | ChiPartial | partial:m2172_3 | +| ir.cpp:2172:7:2172:7 | ChiPartial | partial:m2172_15 | +| ir.cpp:2172:7:2172:7 | ChiTotal | total:m2172_2 | +| ir.cpp:2172:7:2172:7 | ChiTotal | total:m2172_8 | +| ir.cpp:2172:7:2172:7 | Load | m0_2 | +| ir.cpp:2172:7:2172:7 | Load | m2172_6 | +| ir.cpp:2172:7:2172:7 | Load | ~m0_4 | +| ir.cpp:2172:7:2172:7 | SideEffect | m2172_3 | +| ir.cpp:2172:7:2172:7 | SideEffect | m2172_16 | +| ir.cpp:2172:7:2172:7 | StoreValue | r2172_14 | +| ir.cpp:2172:7:2172:7 | Unary | m2172_6 | +| ir.cpp:2172:7:2172:7 | Unary | r2172_11 | +| ir.cpp:2172:7:2172:7 | Unary | r2172_12 | +| ir.cpp:2175:5:2175:23 | Address | &:r2175_5 | +| ir.cpp:2175:5:2175:23 | Address | &:r2175_5 | +| ir.cpp:2175:5:2175:23 | Address | &:r2175_7 | +| ir.cpp:2175:5:2175:23 | Address | &:r2175_7 | +| ir.cpp:2175:5:2175:23 | ChiPartial | partial:m2175_3 | +| ir.cpp:2175:5:2175:23 | ChiTotal | total:m2175_2 | +| ir.cpp:2175:5:2175:23 | Load | m2175_6 | +| ir.cpp:2175:5:2175:23 | SideEffect | m2175_20 | +| ir.cpp:2175:5:2175:23 | SideEffect | ~m2175_13 | +| ir.cpp:2175:29:2175:29 | Address | &:r2175_16 | +| ir.cpp:2175:29:2175:29 | Address | &:r2175_18 | +| ir.cpp:2175:29:2175:29 | Load | m2175_6 | +| ir.cpp:2175:29:2175:29 | Unary | r2175_17 | +| ir.cpp:2175:29:2175:40 | ChiPartial | partial:m2175_19 | +| ir.cpp:2175:29:2175:40 | ChiTotal | total:m2175_8 | +| ir.cpp:2175:33:2175:40 | Address | &:r2175_11 | +| ir.cpp:2175:33:2175:40 | Arg(0) | 0:r2175_10 | +| ir.cpp:2175:33:2175:40 | CallTarget | func:r2175_9 | +| ir.cpp:2175:33:2175:40 | ChiPartial | partial:m2175_12 | +| ir.cpp:2175:33:2175:40 | ChiTotal | total:m2175_4 | +| ir.cpp:2175:33:2175:40 | SideEffect | ~m2175_4 | +| ir.cpp:2175:33:2175:40 | StoreValue | r2175_15 | +| ir.cpp:2175:33:2175:40 | Unary | r2175_11 | +| ir.cpp:2176:5:2176:24 | Address | &:r2176_5 | +| ir.cpp:2176:5:2176:24 | Address | &:r2176_5 | +| ir.cpp:2176:5:2176:24 | Address | &:r2176_7 | +| ir.cpp:2176:5:2176:24 | Address | &:r2176_7 | +| ir.cpp:2176:5:2176:24 | ChiPartial | partial:m2176_3 | +| ir.cpp:2176:5:2176:24 | ChiTotal | total:m2176_2 | +| ir.cpp:2176:5:2176:24 | Load | m2176_6 | +| ir.cpp:2176:5:2176:24 | SideEffect | m2176_8 | +| ir.cpp:2176:5:2176:24 | SideEffect | ~m2176_16 | +| ir.cpp:2176:30:2176:37 | CallTarget | func:r2176_9 | +| ir.cpp:2176:30:2176:37 | ChiPartial | partial:m2176_15 | +| ir.cpp:2176:30:2176:37 | ChiTotal | total:m2176_4 | +| ir.cpp:2176:30:2176:37 | SideEffect | ~m2176_4 | +| ir.cpp:2176:37:2176:37 | Address | &:r2176_10 | +| ir.cpp:2176:37:2176:37 | Address | &:r2176_12 | +| ir.cpp:2176:37:2176:37 | Arg(0) | 0:r2176_13 | +| ir.cpp:2176:37:2176:37 | Load | m2176_6 | +| ir.cpp:2176:37:2176:37 | Load | ~m2176_8 | +| ir.cpp:2176:37:2176:37 | Unary | r2176_11 | +| ir.cpp:2178:10:2178:14 | Address | &:r2178_5 | +| ir.cpp:2178:10:2178:14 | Address | &:r2178_5 | +| ir.cpp:2178:10:2178:14 | Address | &:r2178_7 | +| ir.cpp:2178:10:2178:14 | Address | &:r2178_7 | +| ir.cpp:2178:10:2178:14 | ChiPartial | partial:m2178_3 | +| ir.cpp:2178:10:2178:14 | ChiTotal | total:m2178_2 | +| ir.cpp:2178:10:2178:14 | Load | m2178_6 | +| ir.cpp:2178:10:2178:14 | SideEffect | m2178_8 | +| ir.cpp:2178:10:2178:14 | SideEffect | ~m2178_19 | +| ir.cpp:2178:21:2178:21 | Address | &:r2178_9 | +| ir.cpp:2178:26:2178:27 | Address | &:r2178_17 | +| ir.cpp:2178:26:2178:31 | ChiPartial | partial:m2178_18 | +| ir.cpp:2178:26:2178:31 | ChiTotal | total:m2178_4 | +| ir.cpp:2178:27:2178:27 | Address | &:r2178_13 | +| ir.cpp:2178:27:2178:27 | Address | &:r2178_15 | +| ir.cpp:2178:27:2178:27 | Load | m2178_6 | +| ir.cpp:2178:27:2178:27 | Load | ~m2178_8 | +| ir.cpp:2178:27:2178:27 | Unary | r2178_14 | +| ir.cpp:2178:27:2178:27 | Unary | r2178_16 | +| ir.cpp:2178:31:2178:31 | Address | &:r2178_11 | +| ir.cpp:2178:31:2178:31 | Load | m2178_10 | +| ir.cpp:2178:31:2178:31 | StoreValue | r2178_12 | +| ir.cpp:2179:10:2179:14 | Address | &:r2179_5 | +| ir.cpp:2179:10:2179:14 | Address | &:r2179_5 | +| ir.cpp:2179:10:2179:14 | Address | &:r2179_7 | +| ir.cpp:2179:10:2179:14 | Address | &:r2179_7 | +| ir.cpp:2179:10:2179:14 | Address | &:r2179_17 | +| ir.cpp:2179:10:2179:14 | ChiPartial | partial:m2179_3 | +| ir.cpp:2179:10:2179:14 | ChiTotal | total:m2179_2 | +| ir.cpp:2179:10:2179:14 | Load | m2179_6 | +| ir.cpp:2179:10:2179:14 | Load | m2179_15 | +| ir.cpp:2179:10:2179:14 | SideEffect | m2179_3 | +| ir.cpp:2179:10:2179:14 | SideEffect | m2179_8 | +| ir.cpp:2179:20:2179:29 | Address | &:r2179_9 | +| ir.cpp:2179:27:2179:28 | Load | ~m2179_4 | +| ir.cpp:2179:27:2179:28 | StoreValue | r2179_14 | +| ir.cpp:2179:28:2179:28 | Address | &:r2179_10 | +| ir.cpp:2179:28:2179:28 | Address | &:r2179_12 | +| ir.cpp:2179:28:2179:28 | Address | &:r2179_13 | +| ir.cpp:2179:28:2179:28 | Load | m2179_6 | +| ir.cpp:2179:28:2179:28 | Load | ~m2179_8 | +| ir.cpp:2179:28:2179:28 | Unary | r2179_11 | +| ir.cpp:2182:16:2182:50 | Address | &:r2182_3 | +| ir.cpp:2182:16:2182:50 | SideEffect | ~m2182_6 | +| ir.cpp:2182:54:2182:57 | ChiPartial | partial:m2182_5 | +| ir.cpp:2182:54:2182:57 | ChiTotal | total:m2182_2 | +| ir.cpp:2182:54:2182:57 | StoreValue | r2182_4 | +| ir.cpp:2184:6:2184:35 | ChiPartial | partial:m2184_3 | +| ir.cpp:2184:6:2184:35 | ChiTotal | total:m2184_2 | +| ir.cpp:2184:6:2184:35 | Phi | from 13:~m2219_5 | +| ir.cpp:2184:6:2184:35 | Phi | from 19:~m2219_13 | +| ir.cpp:2184:6:2184:35 | Phi | from 23:~m2219_22 | +| ir.cpp:2184:6:2184:35 | SideEffect | ~m2184_9 | +| ir.cpp:2184:42:2184:42 | Address | &:r2184_5 | +| ir.cpp:2184:50:2184:50 | Address | &:r2184_7 | +| ir.cpp:2185:29:2185:29 | Address | &:r2185_1 | +| ir.cpp:2185:29:2185:29 | Address | &:r2185_1 | +| ir.cpp:2185:29:2185:29 | Arg(this) | this:r2185_1 | +| ir.cpp:2185:29:2185:29 | CallTarget | func:r2185_3 | +| ir.cpp:2185:29:2185:29 | ChiPartial | partial:m2185_5 | +| ir.cpp:2185:29:2185:29 | ChiPartial | partial:m2185_7 | +| ir.cpp:2185:29:2185:29 | ChiTotal | total:m2184_4 | +| ir.cpp:2185:29:2185:29 | ChiTotal | total:m2185_2 | +| ir.cpp:2185:29:2185:29 | SideEffect | ~m2184_4 | +| ir.cpp:2185:32:2185:32 | Address | &:r2185_9 | +| ir.cpp:2185:32:2185:32 | Condition | r2185_10 | +| ir.cpp:2185:32:2185:32 | Load | m2184_6 | +| ir.cpp:2186:9:2186:9 | Address | &:r2186_1 | +| ir.cpp:2186:9:2186:9 | Address | &:r2186_1 | +| ir.cpp:2186:9:2186:9 | Arg(this) | this:r2186_1 | +| ir.cpp:2186:9:2186:9 | ChiPartial | partial:m2186_8 | +| ir.cpp:2186:9:2186:9 | ChiTotal | total:m2185_8 | +| ir.cpp:2186:9:2186:9 | SideEffect | m2185_8 | +| ir.cpp:2186:11:2186:15 | CallTarget | func:r2186_2 | +| ir.cpp:2186:11:2186:15 | ChiPartial | partial:m2186_5 | +| ir.cpp:2186:11:2186:15 | ChiTotal | total:m2185_6 | +| ir.cpp:2186:11:2186:15 | SideEffect | ~m2185_6 | +| ir.cpp:2186:17:2186:19 | Arg(0) | 0:r2186_3 | +| ir.cpp:2186:21:2186:21 | Address | &:r2186_10 | +| ir.cpp:2186:21:2186:21 | Address | &:r2186_10 | +| ir.cpp:2186:21:2186:21 | Arg(this) | this:r2186_10 | +| ir.cpp:2186:21:2186:21 | CallTarget | func:r2186_11 | +| ir.cpp:2186:21:2186:21 | ChiPartial | partial:m2186_13 | +| ir.cpp:2186:21:2186:21 | ChiPartial | partial:m2186_16 | +| ir.cpp:2186:21:2186:21 | ChiTotal | total:m2186_6 | +| ir.cpp:2186:21:2186:21 | ChiTotal | total:m2186_9 | +| ir.cpp:2186:21:2186:21 | SideEffect | m2186_9 | +| ir.cpp:2186:21:2186:21 | SideEffect | ~m2186_6 | +| ir.cpp:2188:39:2188:39 | Address | &:r2188_2 | +| ir.cpp:2188:39:2188:39 | Address | &:r2188_2 | +| ir.cpp:2188:39:2188:39 | Arg(this) | this:r2188_2 | +| ir.cpp:2188:39:2188:39 | CallTarget | func:r2188_4 | +| ir.cpp:2188:39:2188:39 | ChiPartial | partial:m2188_6 | +| ir.cpp:2188:39:2188:39 | ChiPartial | partial:m2188_8 | +| ir.cpp:2188:39:2188:39 | ChiTotal | total:m2188_1 | +| ir.cpp:2188:39:2188:39 | ChiTotal | total:m2188_3 | +| ir.cpp:2188:39:2188:39 | Phi | from 0:~m2185_6 | +| ir.cpp:2188:39:2188:39 | Phi | from 2:~m2186_14 | +| ir.cpp:2188:39:2188:39 | SideEffect | ~m2188_1 | +| ir.cpp:2188:42:2188:76 | Condition | r2188_10 | +| ir.cpp:2189:9:2189:9 | Address | &:r2189_1 | +| ir.cpp:2189:9:2189:9 | Address | &:r2189_1 | +| ir.cpp:2189:9:2189:9 | Arg(this) | this:r2189_1 | +| ir.cpp:2189:9:2189:9 | ChiPartial | partial:m2189_8 | +| ir.cpp:2189:9:2189:9 | ChiTotal | total:m2188_9 | +| ir.cpp:2189:9:2189:9 | SideEffect | m2188_9 | +| ir.cpp:2189:11:2189:15 | CallTarget | func:r2189_2 | +| ir.cpp:2189:11:2189:15 | ChiPartial | partial:m2189_5 | +| ir.cpp:2189:11:2189:15 | ChiTotal | total:m2188_7 | +| ir.cpp:2189:11:2189:15 | SideEffect | ~m2188_7 | +| ir.cpp:2189:17:2189:19 | Arg(0) | 0:r2189_3 | +| ir.cpp:2191:32:2191:32 | Address | &:r2191_1 | +| ir.cpp:2191:32:2191:32 | Address | &:r2191_1 | +| ir.cpp:2191:32:2191:32 | Arg(this) | this:r2191_1 | +| ir.cpp:2191:32:2191:32 | CallTarget | func:r2191_3 | +| ir.cpp:2191:32:2191:32 | ChiPartial | partial:m2191_5 | +| ir.cpp:2191:32:2191:32 | ChiPartial | partial:m2191_7 | +| ir.cpp:2191:32:2191:32 | ChiTotal | total:m2189_6 | +| ir.cpp:2191:32:2191:32 | ChiTotal | total:m2191_2 | +| ir.cpp:2191:32:2191:32 | SideEffect | ~m2189_6 | +| ir.cpp:2191:35:2191:35 | Address | &:r2191_9 | +| ir.cpp:2191:35:2191:35 | Condition | r2191_11 | +| ir.cpp:2191:35:2191:35 | Load | m2184_8 | +| ir.cpp:2191:35:2191:35 | Unary | r2191_10 | +| ir.cpp:2193:11:2193:11 | Address | &:r2193_1 | +| ir.cpp:2193:11:2193:11 | Address | &:r2193_1 | +| ir.cpp:2193:11:2193:11 | Arg(this) | this:r2193_1 | +| ir.cpp:2193:11:2193:11 | ChiPartial | partial:m2193_8 | +| ir.cpp:2193:11:2193:11 | ChiTotal | total:m2191_8 | +| ir.cpp:2193:11:2193:11 | SideEffect | m2191_8 | +| ir.cpp:2193:13:2193:17 | CallTarget | func:r2193_2 | +| ir.cpp:2193:13:2193:17 | ChiPartial | partial:m2193_5 | +| ir.cpp:2193:13:2193:17 | ChiTotal | total:m2191_6 | +| ir.cpp:2193:13:2193:17 | SideEffect | ~m2191_6 | +| ir.cpp:2193:19:2193:21 | Arg(0) | 0:r2193_3 | +| ir.cpp:2196:11:2196:11 | Address | &:r2196_1 | +| ir.cpp:2196:11:2196:11 | Address | &:r2196_1 | +| ir.cpp:2196:11:2196:11 | Arg(this) | this:r2196_1 | +| ir.cpp:2196:11:2196:11 | ChiPartial | partial:m2196_8 | +| ir.cpp:2196:11:2196:11 | ChiTotal | total:m2191_8 | +| ir.cpp:2196:11:2196:11 | SideEffect | m2191_8 | +| ir.cpp:2196:13:2196:17 | CallTarget | func:r2196_2 | +| ir.cpp:2196:13:2196:17 | ChiPartial | partial:m2196_5 | +| ir.cpp:2196:13:2196:17 | ChiTotal | total:m2191_6 | +| ir.cpp:2196:13:2196:17 | SideEffect | ~m2191_6 | +| ir.cpp:2196:19:2196:21 | Arg(0) | 0:r2196_3 | +| ir.cpp:2198:5:2198:5 | Phi | from 5:~m2193_6 | +| ir.cpp:2198:5:2198:5 | Phi | from 6:~m2196_6 | +| ir.cpp:2200:25:2200:25 | Address | &:r2200_1 | +| ir.cpp:2200:25:2200:25 | Address | &:r2200_1 | +| ir.cpp:2200:25:2200:25 | Arg(this) | this:r2200_1 | +| ir.cpp:2200:25:2200:25 | CallTarget | func:r2200_3 | +| ir.cpp:2200:25:2200:25 | ChiPartial | partial:m2200_5 | +| ir.cpp:2200:25:2200:25 | ChiPartial | partial:m2200_7 | +| ir.cpp:2200:25:2200:25 | ChiTotal | total:m2198_1 | +| ir.cpp:2200:25:2200:25 | ChiTotal | total:m2200_2 | +| ir.cpp:2200:25:2200:25 | SideEffect | ~m2198_1 | +| ir.cpp:2201:5:2201:5 | Address | &:r2201_14 | +| ir.cpp:2201:5:2201:5 | Address | &:r2201_18 | +| ir.cpp:2201:5:2201:5 | Address | &:r2201_26 | +| ir.cpp:2201:42:2201:43 | Address | &:r2201_1 | +| ir.cpp:2201:42:2201:43 | Address | &:r2201_1 | +| ir.cpp:2201:42:2201:43 | Arg(this) | this:r2201_1 | +| ir.cpp:2201:45:2201:45 | Address | &:r2201_4 | +| ir.cpp:2201:45:2201:45 | Address | &:r2201_4 | +| ir.cpp:2201:45:2201:45 | Address | &:r2201_5 | +| ir.cpp:2201:45:2201:45 | Arg(0) | 0:r2201_8 | +| ir.cpp:2201:45:2201:45 | Load | m2200_8 | +| ir.cpp:2201:45:2201:45 | Load | m2201_7 | +| ir.cpp:2201:45:2201:45 | StoreValue | r2201_6 | +| ir.cpp:2201:45:2201:46 | CallTarget | func:r2201_3 | +| ir.cpp:2201:45:2201:46 | ChiPartial | partial:m2201_10 | +| ir.cpp:2201:45:2201:46 | ChiPartial | partial:m2201_12 | +| ir.cpp:2201:45:2201:46 | ChiTotal | total:m2200_6 | +| ir.cpp:2201:45:2201:46 | ChiTotal | total:m2201_2 | +| ir.cpp:2201:45:2201:46 | SideEffect | ~m2200_6 | +| ir.cpp:2201:69:2201:69 | Address | &:r2201_49 | +| ir.cpp:2201:69:2201:69 | Address | &:r2201_57 | +| ir.cpp:2201:69:2201:69 | Address | &:r2201_57 | +| ir.cpp:2201:69:2201:69 | Arg(this) | this:r2201_57 | +| ir.cpp:2201:69:2201:69 | CallTarget | func:r2201_58 | +| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_60 | +| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_63 | +| ir.cpp:2201:69:2201:69 | ChiTotal | total:m2202_6 | +| ir.cpp:2201:69:2201:69 | ChiTotal | total:m2202_9 | +| ir.cpp:2201:69:2201:69 | SideEffect | m2202_9 | +| ir.cpp:2201:69:2201:69 | SideEffect | ~m2202_6 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_19 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_27 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_52 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_65 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_65 | +| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_2 | +| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_5 | +| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_7 | +| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_8 | +| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_15 | +| ir.cpp:2201:73:2201:73 | Arg(this) | this:r2201_65 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_21 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_29 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_37 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_38 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_51 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_66 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_23 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_31 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_41 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_43 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_46 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_53 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_68 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_71 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m0_9 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_11 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_24 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_34 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_35 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_42 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_47 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_61 | +| ir.cpp:2201:73:2201:73 | Condition | r2201_45 | +| ir.cpp:2201:73:2201:73 | Load | m2201_17 | +| ir.cpp:2201:73:2201:73 | Load | m2201_17 | +| ir.cpp:2201:73:2201:73 | Phi | from 7:m2201_25 | +| ir.cpp:2201:73:2201:73 | Phi | from 7:~m2201_32 | +| ir.cpp:2201:73:2201:73 | Phi | from 9:m2201_72 | +| ir.cpp:2201:73:2201:73 | Phi | from 9:~m2201_69 | +| ir.cpp:2201:73:2201:73 | SideEffect | m2201_34 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_11 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_24 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_35 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_42 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_47 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_61 | +| ir.cpp:2201:73:2201:73 | StoreValue | r2201_22 | +| ir.cpp:2201:73:2201:73 | StoreValue | r2201_30 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_20 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_28 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_36 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_39 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_50 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_67 | +| ir.cpp:2201:73:2201:74 | StoreValue | r2201_16 | +| ir.cpp:2201:73:2201:74 | Unary | r2201_15 | +| ir.cpp:2201:73:2201:75 | Load | ~m2201_54 | +| ir.cpp:2201:73:2201:75 | StoreValue | r2201_55 | +| ir.cpp:2202:7:2202:7 | Address | &:r2202_1 | +| ir.cpp:2202:7:2202:7 | Address | &:r2202_1 | +| ir.cpp:2202:7:2202:7 | Arg(this) | this:r2202_1 | +| ir.cpp:2202:7:2202:7 | ChiPartial | partial:m2202_8 | +| ir.cpp:2202:7:2202:7 | ChiTotal | total:m2201_56 | +| ir.cpp:2202:7:2202:7 | SideEffect | m2201_56 | +| ir.cpp:2202:9:2202:13 | CallTarget | func:r2202_2 | +| ir.cpp:2202:9:2202:13 | ChiPartial | partial:m2202_5 | +| ir.cpp:2202:9:2202:13 | ChiTotal | total:m2201_54 | +| ir.cpp:2202:9:2202:13 | SideEffect | ~m2201_54 | +| ir.cpp:2202:15:2202:17 | Arg(0) | 0:r2202_3 | +| ir.cpp:2204:5:2204:5 | Address | &:r2204_14 | +| ir.cpp:2204:5:2204:5 | Address | &:r2204_18 | +| ir.cpp:2204:5:2204:5 | Address | &:r2204_26 | +| ir.cpp:2204:42:2204:43 | Address | &:r2204_1 | +| ir.cpp:2204:42:2204:43 | Address | &:r2204_1 | +| ir.cpp:2204:42:2204:43 | Address | &:r2204_65 | +| ir.cpp:2204:42:2204:43 | Address | &:r2204_65 | +| ir.cpp:2204:42:2204:43 | Arg(this) | this:r2204_1 | +| ir.cpp:2204:42:2204:43 | Arg(this) | this:r2204_65 | +| ir.cpp:2204:42:2204:43 | CallTarget | func:r2204_66 | +| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_68 | +| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_71 | +| ir.cpp:2204:42:2204:43 | ChiTotal | total:m2204_13 | +| ir.cpp:2204:42:2204:43 | ChiTotal | total:m2204_61 | +| ir.cpp:2204:42:2204:43 | SideEffect | m2204_13 | +| ir.cpp:2204:42:2204:43 | SideEffect | ~m2204_61 | +| ir.cpp:2204:45:2204:45 | Address | &:r2204_4 | +| ir.cpp:2204:45:2204:45 | Address | &:r2204_4 | +| ir.cpp:2204:45:2204:45 | Address | &:r2204_5 | +| ir.cpp:2204:45:2204:45 | Arg(0) | 0:r2204_8 | +| ir.cpp:2204:45:2204:45 | Load | m2200_8 | +| ir.cpp:2204:45:2204:45 | Load | m2204_7 | +| ir.cpp:2204:45:2204:45 | StoreValue | r2204_6 | +| ir.cpp:2204:45:2204:46 | CallTarget | func:r2204_3 | +| ir.cpp:2204:45:2204:46 | ChiPartial | partial:m2204_10 | +| ir.cpp:2204:45:2204:46 | ChiPartial | partial:m2204_12 | +| ir.cpp:2204:45:2204:46 | ChiTotal | total:m2201_47 | +| ir.cpp:2204:45:2204:46 | ChiTotal | total:m2204_2 | +| ir.cpp:2204:45:2204:46 | SideEffect | ~m2201_47 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_49 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_57 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_57 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_73 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_73 | +| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_57 | +| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_73 | +| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_58 | +| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_74 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_60 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_63 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_76 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_79 | +| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_5 | +| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_5 | +| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_8 | +| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_8 | +| ir.cpp:2204:69:2204:69 | SideEffect | m2206_8 | +| ir.cpp:2204:69:2204:69 | SideEffect | m2206_8 | +| ir.cpp:2204:69:2204:69 | SideEffect | ~m2206_5 | +| ir.cpp:2204:69:2204:69 | SideEffect | ~m2206_5 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_19 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_27 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_52 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_81 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_81 | +| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_18 | +| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_21 | +| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_23 | +| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_24 | +| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_31 | +| ir.cpp:2204:73:2204:73 | Arg(this) | this:r2204_81 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_21 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_29 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_37 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_38 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_51 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_82 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_23 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_31 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_41 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_43 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_46 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_53 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_84 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_87 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m0_25 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_11 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_24 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_34 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_35 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_42 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_47 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_77 | +| ir.cpp:2204:73:2204:73 | Condition | r2204_45 | +| ir.cpp:2204:73:2204:73 | Load | m2204_17 | +| ir.cpp:2204:73:2204:73 | Load | m2204_17 | +| ir.cpp:2204:73:2204:73 | Phi | from 10:m2204_25 | +| ir.cpp:2204:73:2204:73 | Phi | from 10:~m2204_32 | +| ir.cpp:2204:73:2204:73 | Phi | from 14:m2204_88 | +| ir.cpp:2204:73:2204:73 | Phi | from 14:~m2204_85 | +| ir.cpp:2204:73:2204:73 | SideEffect | m2204_34 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_11 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_24 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_35 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_42 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_47 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_77 | +| ir.cpp:2204:73:2204:73 | StoreValue | r2204_22 | +| ir.cpp:2204:73:2204:73 | StoreValue | r2204_30 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_20 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_28 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_36 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_39 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_50 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_83 | +| ir.cpp:2204:73:2204:74 | StoreValue | r2204_16 | +| ir.cpp:2204:73:2204:74 | Unary | r2204_15 | +| ir.cpp:2204:73:2204:75 | Load | ~m2204_54 | +| ir.cpp:2204:73:2204:75 | StoreValue | r2204_55 | +| ir.cpp:2205:7:2205:7 | Address | &:r2205_1 | +| ir.cpp:2205:7:2205:7 | Address | &:r2205_1 | +| ir.cpp:2205:7:2205:7 | Arg(this) | this:r2205_1 | +| ir.cpp:2205:7:2205:7 | ChiPartial | partial:m2205_8 | +| ir.cpp:2205:7:2205:7 | ChiTotal | total:m2204_56 | +| ir.cpp:2205:7:2205:7 | SideEffect | m2204_56 | +| ir.cpp:2205:9:2205:13 | CallTarget | func:r2205_2 | +| ir.cpp:2205:9:2205:13 | ChiPartial | partial:m2205_5 | +| ir.cpp:2205:9:2205:13 | ChiTotal | total:m2204_54 | +| ir.cpp:2205:9:2205:13 | SideEffect | ~m2204_54 | +| ir.cpp:2205:15:2205:17 | Arg(0) | 0:r2205_3 | +| ir.cpp:2206:11:2206:11 | Address | &:r2206_1 | +| ir.cpp:2206:11:2206:11 | Address | &:r2206_1 | +| ir.cpp:2206:11:2206:11 | Arg(this) | this:r2206_1 | +| ir.cpp:2206:11:2206:11 | ChiPartial | partial:m2206_7 | +| ir.cpp:2206:11:2206:11 | ChiTotal | total:m2205_9 | +| ir.cpp:2206:11:2206:11 | SideEffect | m2205_9 | +| ir.cpp:2206:11:2206:19 | Left | r2206_9 | +| ir.cpp:2206:11:2206:26 | Condition | r2206_11 | +| ir.cpp:2206:13:2206:17 | CallTarget | func:r2206_2 | +| ir.cpp:2206:13:2206:17 | ChiPartial | partial:m2206_4 | +| ir.cpp:2206:13:2206:17 | ChiTotal | total:m2205_6 | +| ir.cpp:2206:13:2206:17 | SideEffect | ~m2205_6 | +| ir.cpp:2206:13:2206:17 | Unary | r2206_3 | +| ir.cpp:2206:24:2206:26 | Right | r2206_10 | +| ir.cpp:2210:5:2210:5 | Address | &:r2210_10 | +| ir.cpp:2210:5:2210:5 | Address | &:r2210_14 | +| ir.cpp:2210:5:2210:5 | Address | &:r2210_22 | +| ir.cpp:2210:26:2210:27 | Address | &:r2210_1 | +| ir.cpp:2210:26:2210:27 | Address | &:r2210_1 | +| ir.cpp:2210:26:2210:27 | Address | &:r2210_62 | +| ir.cpp:2210:26:2210:27 | Address | &:r2210_62 | +| ir.cpp:2210:26:2210:27 | Arg(this) | this:r2210_1 | +| ir.cpp:2210:26:2210:27 | Arg(this) | this:r2210_62 | +| ir.cpp:2210:26:2210:27 | CallTarget | func:r2210_63 | +| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_65 | +| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_68 | +| ir.cpp:2210:26:2210:27 | ChiTotal | total:m2210_9 | +| ir.cpp:2210:26:2210:27 | ChiTotal | total:m2210_59 | +| ir.cpp:2210:26:2210:27 | SideEffect | m2210_9 | +| ir.cpp:2210:26:2210:27 | SideEffect | ~m2210_59 | +| ir.cpp:2210:29:2210:29 | Arg(0) | 0:r2210_4 | +| ir.cpp:2210:29:2210:30 | CallTarget | func:r2210_3 | +| ir.cpp:2210:29:2210:30 | ChiPartial | partial:m2210_6 | +| ir.cpp:2210:29:2210:30 | ChiPartial | partial:m2210_8 | +| ir.cpp:2210:29:2210:30 | ChiTotal | total:m2204_47 | +| ir.cpp:2210:29:2210:30 | ChiTotal | total:m2210_2 | +| ir.cpp:2210:29:2210:30 | SideEffect | ~m2204_47 | +| ir.cpp:2210:37:2210:37 | Address | &:r2210_54 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_15 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_23 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_45 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_45 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_57 | +| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_34 | +| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_37 | +| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_39 | +| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_40 | +| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_47 | +| ir.cpp:2210:41:2210:41 | Arg(this) | this:r2210_45 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_17 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_25 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_33 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_34 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_46 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_56 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_19 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_27 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_37 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_39 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_42 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_48 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_51 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_58 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m0_41 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_7 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_20 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_30 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_31 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_38 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_43 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_59 | +| ir.cpp:2210:41:2210:41 | Condition | r2210_41 | +| ir.cpp:2210:41:2210:41 | Load | m2210_13 | +| ir.cpp:2210:41:2210:41 | Load | m2210_13 | +| ir.cpp:2210:41:2210:41 | Phi | from 15:m2210_21 | +| ir.cpp:2210:41:2210:41 | Phi | from 15:~m2210_28 | +| ir.cpp:2210:41:2210:41 | Phi | from 17:m2210_52 | +| ir.cpp:2210:41:2210:41 | Phi | from 17:~m2210_49 | +| ir.cpp:2210:41:2210:41 | SideEffect | m2210_30 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_7 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_20 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_31 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_38 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_43 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_59 | +| ir.cpp:2210:41:2210:41 | StoreValue | r2210_18 | +| ir.cpp:2210:41:2210:41 | StoreValue | r2210_26 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_16 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_24 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_32 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_35 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_47 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_55 | +| ir.cpp:2210:41:2210:42 | StoreValue | r2210_12 | +| ir.cpp:2210:41:2210:42 | Unary | r2210_11 | +| ir.cpp:2210:41:2210:43 | Load | ~m2210_59 | +| ir.cpp:2210:41:2210:43 | StoreValue | r2210_60 | +| ir.cpp:2211:11:2211:11 | Address | &:r2211_1 | +| ir.cpp:2211:11:2211:11 | Left | r2211_2 | +| ir.cpp:2211:11:2211:11 | Load | m2210_61 | +| ir.cpp:2211:11:2211:16 | Condition | r2211_4 | +| ir.cpp:2211:16:2211:16 | Right | r2211_3 | +| ir.cpp:2215:5:2215:5 | Address | &:r2215_14 | +| ir.cpp:2215:5:2215:5 | Address | &:r2215_18 | +| ir.cpp:2215:5:2215:5 | Address | &:r2215_26 | +| ir.cpp:2215:42:2215:43 | Address | &:r2215_1 | +| ir.cpp:2215:42:2215:43 | Address | &:r2215_1 | +| ir.cpp:2215:42:2215:43 | Arg(this) | this:r2215_1 | +| ir.cpp:2215:45:2215:45 | Address | &:r2215_4 | +| ir.cpp:2215:45:2215:45 | Address | &:r2215_4 | +| ir.cpp:2215:45:2215:45 | Address | &:r2215_5 | +| ir.cpp:2215:45:2215:45 | Arg(0) | 0:r2215_8 | +| ir.cpp:2215:45:2215:45 | Load | m2200_8 | +| ir.cpp:2215:45:2215:45 | Load | m2215_7 | +| ir.cpp:2215:45:2215:45 | StoreValue | r2215_6 | +| ir.cpp:2215:45:2215:46 | CallTarget | func:r2215_3 | +| ir.cpp:2215:45:2215:46 | ChiPartial | partial:m2215_10 | +| ir.cpp:2215:45:2215:46 | ChiPartial | partial:m2215_12 | +| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2210_43 | +| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2215_2 | +| ir.cpp:2215:45:2215:46 | SideEffect | ~m2210_43 | +| ir.cpp:2215:69:2215:69 | Address | &:r2215_49 | +| ir.cpp:2215:69:2215:69 | Address | &:r2215_57 | +| ir.cpp:2215:69:2215:69 | Address | &:r2215_57 | +| ir.cpp:2215:69:2215:69 | Arg(this) | this:r2215_57 | +| ir.cpp:2215:69:2215:69 | CallTarget | func:r2215_58 | +| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_60 | +| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_63 | +| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2215_56 | +| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2218_13 | +| ir.cpp:2215:69:2215:69 | SideEffect | m2215_56 | +| ir.cpp:2215:69:2215:69 | SideEffect | ~m2218_13 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_19 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_27 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_52 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_65 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_65 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_50 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_53 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_55 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_56 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_63 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r2215_65 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_21 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_29 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_37 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_38 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_51 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_66 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_23 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_31 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_41 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_43 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_46 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_53 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_68 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_71 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m0_57 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_11 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_24 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_34 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_35 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_42 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_47 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_61 | +| ir.cpp:2215:73:2215:73 | Condition | r2215_45 | +| ir.cpp:2215:73:2215:73 | Load | m2215_17 | +| ir.cpp:2215:73:2215:73 | Load | m2215_17 | +| ir.cpp:2215:73:2215:73 | Phi | from 20:m2215_25 | +| ir.cpp:2215:73:2215:73 | Phi | from 20:~m2215_32 | +| ir.cpp:2215:73:2215:73 | Phi | from 22:m2215_72 | +| ir.cpp:2215:73:2215:73 | Phi | from 22:~m2215_69 | +| ir.cpp:2215:73:2215:73 | SideEffect | m2215_34 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_11 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_24 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_35 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_42 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_47 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_61 | +| ir.cpp:2215:73:2215:73 | StoreValue | r2215_22 | +| ir.cpp:2215:73:2215:73 | StoreValue | r2215_30 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_20 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_28 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_36 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_39 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_50 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_67 | +| ir.cpp:2215:73:2215:74 | StoreValue | r2215_16 | +| ir.cpp:2215:73:2215:74 | Unary | r2215_15 | +| ir.cpp:2215:73:2215:75 | Load | ~m2215_54 | +| ir.cpp:2215:73:2215:75 | StoreValue | r2215_55 | +| ir.cpp:2216:27:2216:28 | Address | &:r2216_1 | +| ir.cpp:2216:27:2216:28 | Address | &:r2216_1 | +| ir.cpp:2216:27:2216:28 | Arg(this) | this:r2216_1 | +| ir.cpp:2216:27:2216:28 | CallTarget | func:r2216_3 | +| ir.cpp:2216:27:2216:28 | ChiPartial | partial:m2216_5 | +| ir.cpp:2216:27:2216:28 | ChiPartial | partial:m2216_7 | +| ir.cpp:2216:27:2216:28 | ChiTotal | total:m2215_54 | +| ir.cpp:2216:27:2216:28 | ChiTotal | total:m2216_2 | +| ir.cpp:2216:27:2216:28 | SideEffect | ~m2215_54 | +| ir.cpp:2217:27:2217:28 | Address | &:r2217_1 | +| ir.cpp:2217:27:2217:28 | Address | &:r2217_1 | +| ir.cpp:2217:27:2217:28 | Arg(this) | this:r2217_1 | +| ir.cpp:2217:27:2217:28 | CallTarget | func:r2217_3 | +| ir.cpp:2217:27:2217:28 | ChiPartial | partial:m2217_5 | +| ir.cpp:2217:27:2217:28 | ChiPartial | partial:m2217_7 | +| ir.cpp:2217:27:2217:28 | ChiTotal | total:m2216_6 | +| ir.cpp:2217:27:2217:28 | ChiTotal | total:m2217_2 | +| ir.cpp:2217:27:2217:28 | SideEffect | ~m2216_6 | +| ir.cpp:2218:5:2218:5 | Address | &:r2218_1 | +| ir.cpp:2218:5:2218:5 | Address | &:r2218_1 | +| ir.cpp:2218:5:2218:5 | Address | &:r2218_9 | +| ir.cpp:2218:5:2218:5 | Address | &:r2218_9 | +| ir.cpp:2218:5:2218:5 | Arg(this) | this:r2218_1 | +| ir.cpp:2218:5:2218:5 | Arg(this) | this:r2218_9 | +| ir.cpp:2218:5:2218:5 | CallTarget | func:r2218_2 | +| ir.cpp:2218:5:2218:5 | CallTarget | func:r2218_10 | +| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_4 | +| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_7 | +| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_12 | +| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_15 | +| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2216_8 | +| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2217_6 | +| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2217_8 | +| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2218_5 | +| ir.cpp:2218:5:2218:5 | SideEffect | m2216_8 | +| ir.cpp:2218:5:2218:5 | SideEffect | m2217_8 | +| ir.cpp:2218:5:2218:5 | SideEffect | ~m2217_6 | +| ir.cpp:2218:5:2218:5 | SideEffect | ~m2218_5 | +| ir.cpp:2219:1:2219:1 | Address | &:r2219_1 | +| ir.cpp:2219:1:2219:1 | Address | &:r2219_1 | +| ir.cpp:2219:1:2219:1 | Address | &:r2219_9 | +| ir.cpp:2219:1:2219:1 | Address | &:r2219_9 | +| ir.cpp:2219:1:2219:1 | Address | &:r2219_18 | +| ir.cpp:2219:1:2219:1 | Address | &:r2219_18 | +| ir.cpp:2219:1:2219:1 | Arg(this) | this:r2219_1 | +| ir.cpp:2219:1:2219:1 | Arg(this) | this:r2219_9 | +| ir.cpp:2219:1:2219:1 | Arg(this) | this:r2219_18 | +| ir.cpp:2219:1:2219:1 | CallTarget | func:r2219_2 | +| ir.cpp:2219:1:2219:1 | CallTarget | func:r2219_10 | +| ir.cpp:2219:1:2219:1 | CallTarget | func:r2219_19 | +| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_4 | +| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_7 | +| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_12 | +| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_15 | +| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_21 | +| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_24 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2204_69 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2210_66 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2215_47 | +| ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | +| ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | +| ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | +| ir.cpp:2219:1:2219:1 | SideEffect | ~m2204_69 | +| ir.cpp:2219:1:2219:1 | SideEffect | ~m2210_66 | +| ir.cpp:2219:1:2219:1 | SideEffect | ~m2215_47 | +| ir.cpp:2221:6:2221:38 | ChiPartial | partial:m2221_3 | +| ir.cpp:2221:6:2221:38 | ChiTotal | total:m2221_2 | +| ir.cpp:2221:6:2221:38 | SideEffect | ~m2224_7 | +| ir.cpp:2222:25:2222:25 | Address | &:r2222_1 | +| ir.cpp:2222:25:2222:25 | Address | &:r2222_1 | +| ir.cpp:2222:25:2222:25 | Arg(this) | this:r2222_1 | +| ir.cpp:2222:25:2222:25 | CallTarget | func:r2222_3 | +| ir.cpp:2222:25:2222:25 | ChiPartial | partial:m2222_5 | +| ir.cpp:2222:25:2222:25 | ChiPartial | partial:m2222_7 | +| ir.cpp:2222:25:2222:25 | ChiTotal | total:m2221_4 | +| ir.cpp:2222:25:2222:25 | ChiTotal | total:m2222_2 | +| ir.cpp:2222:25:2222:25 | SideEffect | ~m2221_4 | +| ir.cpp:2223:32:2223:32 | Address | &:r2223_1 | +| ir.cpp:2223:32:2223:32 | Address | &:r2223_1 | +| ir.cpp:2223:32:2223:32 | Address | &:r2223_4 | +| ir.cpp:2223:32:2223:32 | Arg(this) | this:r2223_4 | +| ir.cpp:2223:32:2223:32 | ChiPartial | partial:m2223_6 | +| ir.cpp:2223:32:2223:32 | ChiTotal | total:m0_6 | +| ir.cpp:2223:32:2223:32 | Condition | r2223_2 | +| ir.cpp:2223:32:2223:32 | Load | ~m2222_6 | +| ir.cpp:2223:32:2223:32 | StoreValue | r2223_5 | +| ir.cpp:2224:1:2224:1 | Address | &:r2224_3 | +| ir.cpp:2224:1:2224:1 | Address | &:r2224_3 | +| ir.cpp:2224:1:2224:1 | Arg(this) | this:r2224_3 | +| ir.cpp:2224:1:2224:1 | CallTarget | func:r2224_4 | +| ir.cpp:2224:1:2224:1 | ChiPartial | partial:m2224_6 | +| ir.cpp:2224:1:2224:1 | ChiPartial | partial:m2224_9 | +| ir.cpp:2224:1:2224:1 | ChiTotal | total:m2222_8 | +| ir.cpp:2224:1:2224:1 | ChiTotal | total:m2224_1 | +| ir.cpp:2224:1:2224:1 | Phi | from 0:~m2222_6 | +| ir.cpp:2224:1:2224:1 | Phi | from 1:~m2223_7 | +| ir.cpp:2224:1:2224:1 | SideEffect | m2222_8 | +| ir.cpp:2224:1:2224:1 | SideEffect | ~m2224_1 | +| ir.cpp:2226:6:2226:38 | ChiPartial | partial:m2226_3 | +| ir.cpp:2226:6:2226:38 | ChiTotal | total:m2226_2 | +| ir.cpp:2226:6:2226:38 | SideEffect | ~m2229_6 | +| ir.cpp:2227:32:2227:32 | Address | &:r2227_1 | +| ir.cpp:2227:32:2227:32 | Address | &:r2227_1 | +| ir.cpp:2227:32:2227:32 | Address | &:r2227_4 | +| ir.cpp:2227:32:2227:32 | Arg(this) | this:r2227_4 | +| ir.cpp:2227:32:2227:32 | ChiPartial | partial:m2227_6 | +| ir.cpp:2227:32:2227:32 | ChiTotal | total:m0_6 | +| ir.cpp:2227:32:2227:32 | Condition | r2227_2 | +| ir.cpp:2227:32:2227:32 | Load | ~m2226_3 | +| ir.cpp:2227:32:2227:32 | StoreValue | r2227_5 | +| ir.cpp:2228:25:2228:25 | Address | &:r2228_2 | +| ir.cpp:2228:25:2228:25 | Address | &:r2228_2 | +| ir.cpp:2228:25:2228:25 | Arg(this) | this:r2228_2 | +| ir.cpp:2228:25:2228:25 | CallTarget | func:r2228_4 | +| ir.cpp:2228:25:2228:25 | ChiPartial | partial:m2228_6 | +| ir.cpp:2228:25:2228:25 | ChiPartial | partial:m2228_8 | +| ir.cpp:2228:25:2228:25 | ChiTotal | total:m2228_1 | +| ir.cpp:2228:25:2228:25 | ChiTotal | total:m2228_3 | +| ir.cpp:2228:25:2228:25 | Phi | from 0:~m2226_4 | +| ir.cpp:2228:25:2228:25 | Phi | from 1:~m2227_7 | +| ir.cpp:2228:25:2228:25 | SideEffect | ~m2228_1 | +| ir.cpp:2229:1:2229:1 | Address | &:r2229_2 | +| ir.cpp:2229:1:2229:1 | Address | &:r2229_2 | +| ir.cpp:2229:1:2229:1 | Arg(this) | this:r2229_2 | +| ir.cpp:2229:1:2229:1 | CallTarget | func:r2229_3 | +| ir.cpp:2229:1:2229:1 | ChiPartial | partial:m2229_5 | +| ir.cpp:2229:1:2229:1 | ChiPartial | partial:m2229_8 | +| ir.cpp:2229:1:2229:1 | ChiTotal | total:m2228_7 | +| ir.cpp:2229:1:2229:1 | ChiTotal | total:m2228_9 | +| ir.cpp:2229:1:2229:1 | SideEffect | m2228_9 | +| ir.cpp:2229:1:2229:1 | SideEffect | ~m2228_7 | +| ir.cpp:2231:6:2231:38 | ChiPartial | partial:m2231_3 | +| ir.cpp:2231:6:2231:38 | ChiTotal | total:m2231_2 | +| ir.cpp:2231:6:2231:38 | SideEffect | ~m2235_15 | +| ir.cpp:2232:25:2232:25 | Address | &:r2232_1 | +| ir.cpp:2232:25:2232:25 | Address | &:r2232_1 | +| ir.cpp:2232:25:2232:25 | Arg(this) | this:r2232_1 | +| ir.cpp:2232:25:2232:25 | CallTarget | func:r2232_3 | +| ir.cpp:2232:25:2232:25 | ChiPartial | partial:m2232_5 | +| ir.cpp:2232:25:2232:25 | ChiPartial | partial:m2232_7 | +| ir.cpp:2232:25:2232:25 | ChiTotal | total:m2231_4 | +| ir.cpp:2232:25:2232:25 | ChiTotal | total:m2232_2 | +| ir.cpp:2232:25:2232:25 | SideEffect | ~m2231_4 | +| ir.cpp:2233:25:2233:25 | Address | &:r2233_1 | +| ir.cpp:2233:25:2233:25 | Address | &:r2233_1 | +| ir.cpp:2233:25:2233:25 | Arg(this) | this:r2233_1 | +| ir.cpp:2233:25:2233:25 | CallTarget | func:r2233_3 | +| ir.cpp:2233:25:2233:25 | ChiPartial | partial:m2233_5 | +| ir.cpp:2233:25:2233:25 | ChiPartial | partial:m2233_7 | +| ir.cpp:2233:25:2233:25 | ChiTotal | total:m2232_6 | +| ir.cpp:2233:25:2233:25 | ChiTotal | total:m2233_2 | +| ir.cpp:2233:25:2233:25 | SideEffect | ~m2232_6 | +| ir.cpp:2234:32:2234:32 | Address | &:r2234_1 | +| ir.cpp:2234:32:2234:32 | Address | &:r2234_1 | +| ir.cpp:2234:32:2234:32 | Address | &:r2234_4 | +| ir.cpp:2234:32:2234:32 | Arg(this) | this:r2234_4 | +| ir.cpp:2234:32:2234:32 | ChiPartial | partial:m2234_6 | +| ir.cpp:2234:32:2234:32 | ChiTotal | total:m0_6 | +| ir.cpp:2234:32:2234:32 | Condition | r2234_2 | +| ir.cpp:2234:32:2234:32 | Load | ~m2233_6 | +| ir.cpp:2234:32:2234:32 | StoreValue | r2234_5 | +| ir.cpp:2235:1:2235:1 | Address | &:r2235_3 | +| ir.cpp:2235:1:2235:1 | Address | &:r2235_3 | +| ir.cpp:2235:1:2235:1 | Address | &:r2235_11 | +| ir.cpp:2235:1:2235:1 | Address | &:r2235_11 | +| ir.cpp:2235:1:2235:1 | Arg(this) | this:r2235_3 | +| ir.cpp:2235:1:2235:1 | Arg(this) | this:r2235_11 | +| ir.cpp:2235:1:2235:1 | CallTarget | func:r2235_4 | +| ir.cpp:2235:1:2235:1 | CallTarget | func:r2235_12 | +| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_6 | +| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_9 | +| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_14 | +| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_17 | +| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2232_8 | +| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2233_8 | +| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2235_1 | +| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2235_7 | +| ir.cpp:2235:1:2235:1 | Phi | from 0:~m2233_6 | +| ir.cpp:2235:1:2235:1 | Phi | from 1:~m2234_7 | +| ir.cpp:2235:1:2235:1 | SideEffect | m2232_8 | +| ir.cpp:2235:1:2235:1 | SideEffect | m2233_8 | +| ir.cpp:2235:1:2235:1 | SideEffect | ~m2235_1 | +| ir.cpp:2235:1:2235:1 | SideEffect | ~m2235_7 | +| ir.cpp:2237:28:2237:55 | Address | &:r2237_3 | +| ir.cpp:2237:28:2237:55 | Arg(this) | this:r2237_3 | +| ir.cpp:2237:28:2237:55 | CallTarget | func:r2237_4 | +| ir.cpp:2237:28:2237:55 | ChiPartial | partial:m2237_6 | +| ir.cpp:2237:28:2237:55 | ChiPartial | partial:m2237_8 | +| ir.cpp:2237:28:2237:55 | ChiTotal | total:m2237_2 | +| ir.cpp:2237:28:2237:55 | ChiTotal | total:m2237_7 | +| ir.cpp:2237:28:2237:55 | SideEffect | ~m2237_2 | +| ir.cpp:2237:28:2237:55 | SideEffect | ~m2237_9 | +| ir.cpp:2241:8:2241:8 | Address | &:r2241_16 | +| ir.cpp:2241:8:2241:8 | Address | &:r2241_16 | +| ir.cpp:2241:8:2241:8 | ChiPartial | partial:m2241_3 | +| ir.cpp:2241:8:2241:8 | ChiPartial | partial:m2241_3 | +| ir.cpp:2241:8:2241:8 | ChiTotal | total:m2241_2 | +| ir.cpp:2241:8:2241:8 | ChiTotal | total:m2241_2 | +| ir.cpp:2241:8:2241:8 | Load | m2241_14 | +| ir.cpp:2241:8:2241:8 | Load | m2241_14 | +| ir.cpp:2241:8:2241:8 | SideEffect | m2241_3 | +| ir.cpp:2241:8:2241:8 | SideEffect | m2241_3 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | +| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | +| ir.cpp:2241:15:2241:15 | Load | m2241_6 | +| ir.cpp:2241:15:2241:15 | Load | m2241_6 | +| ir.cpp:2241:15:2241:15 | SideEffect | m2241_8 | +| ir.cpp:2241:15:2241:15 | SideEffect | m2241_8 | +| ir.cpp:2241:20:2241:28 | Address | &:r2241_9 | +| ir.cpp:2241:20:2241:28 | Address | &:r2241_9 | +| ir.cpp:2241:27:2241:27 | Address | &:r2241_10 | +| ir.cpp:2241:27:2241:27 | Address | &:r2241_10 | +| ir.cpp:2241:27:2241:27 | Load | m2241_6 | +| ir.cpp:2241:27:2241:27 | Load | m2241_6 | +| ir.cpp:2241:27:2241:27 | StoreValue | r2241_13 | +| ir.cpp:2241:27:2241:27 | StoreValue | r2241_13 | +| ir.cpp:2241:27:2241:27 | Unary | r2241_11 | +| ir.cpp:2241:27:2241:27 | Unary | r2241_11 | +| ir.cpp:2241:27:2241:27 | Unary | r2241_12 | +| ir.cpp:2241:27:2241:27 | Unary | r2241_12 | +| ir.cpp:2244:10:2244:10 | ChiPartial | partial:m2244_3 | +| ir.cpp:2244:10:2244:10 | ChiPartial | partial:m2244_3 | +| ir.cpp:2244:10:2244:10 | ChiTotal | total:m2244_2 | +| ir.cpp:2244:10:2244:10 | ChiTotal | total:m2244_2 | +| ir.cpp:2244:10:2244:10 | SideEffect | ~m2245_8 | +| ir.cpp:2244:10:2244:10 | SideEffect | ~m2245_16 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | +| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | +| ir.cpp:2244:29:2244:29 | Load | m2244_6 | +| ir.cpp:2244:29:2244:29 | Load | m2244_6 | +| ir.cpp:2244:29:2244:29 | SideEffect | m2245_11 | +| ir.cpp:2244:29:2244:29 | SideEffect | m2245_19 | +| ir.cpp:2245:9:2245:11 | CallTarget | func:r2245_1 | +| ir.cpp:2245:9:2245:11 | CallTarget | func:r2245_1 | +| ir.cpp:2245:9:2245:11 | ChiPartial | partial:m2245_7 | +| ir.cpp:2245:9:2245:11 | ChiPartial | partial:m2245_7 | +| ir.cpp:2245:9:2245:11 | ChiTotal | total:m2244_4 | +| ir.cpp:2245:9:2245:11 | ChiTotal | total:m2244_4 | +| ir.cpp:2245:9:2245:11 | SideEffect | ~m2244_4 | +| ir.cpp:2245:9:2245:11 | SideEffect | ~m2244_4 | +| ir.cpp:2245:9:2245:11 | Unary | r2245_6 | +| ir.cpp:2245:9:2245:11 | Unary | r2245_6 | +| ir.cpp:2245:12:2245:15 | Address | &:r2245_12 | +| ir.cpp:2245:12:2245:15 | Address | &:r2245_12 | +| ir.cpp:2245:12:2245:15 | ChiPartial | partial:m2245_18 | +| ir.cpp:2245:12:2245:15 | ChiTotal | total:m2245_11 | +| ir.cpp:2245:12:2245:15 | SideEffect | ~m2245_11 | +| ir.cpp:2245:13:2245:13 | Address | &:r2245_2 | +| ir.cpp:2245:13:2245:13 | Address | &:r2245_2 | +| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | +| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | +| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | +| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | +| ir.cpp:2245:13:2245:13 | Arg(0) | 0:r2245_5 | +| ir.cpp:2245:13:2245:13 | Arg(0) | 0:r2245_5 | +| ir.cpp:2245:13:2245:13 | ChiPartial | partial:m2245_10 | +| ir.cpp:2245:13:2245:13 | ChiPartial | partial:m2245_10 | +| ir.cpp:2245:13:2245:13 | ChiTotal | total:m2244_8 | +| ir.cpp:2245:13:2245:13 | ChiTotal | total:m2244_8 | +| ir.cpp:2245:13:2245:13 | Load | m2244_6 | +| ir.cpp:2245:13:2245:13 | Load | m2244_6 | +| ir.cpp:2245:13:2245:13 | SideEffect | ~m2244_8 | +| ir.cpp:2245:13:2245:13 | SideEffect | ~m2244_8 | +| ir.cpp:2245:13:2245:13 | Unary | r2245_3 | +| ir.cpp:2245:13:2245:13 | Unary | r2245_3 | +| ir.cpp:2245:13:2245:13 | Unary | r2245_4 | +| ir.cpp:2245:13:2245:13 | Unary | r2245_4 | +| ir.cpp:2245:16:2245:17 | CallTarget | func:r2245_13 | +| ir.cpp:2245:16:2245:17 | ChiPartial | partial:m2245_15 | +| ir.cpp:2245:16:2245:17 | ChiTotal | total:m2245_8 | +| ir.cpp:2245:16:2245:17 | SideEffect | ~m2245_8 | +| ir.cpp:2248:10:2248:36 | ChiPartial | partial:m2248_3 | +| ir.cpp:2248:10:2248:36 | ChiTotal | total:m2248_2 | +| ir.cpp:2248:10:2248:36 | SideEffect | ~m2251_6 | +| ir.cpp:2249:29:2249:29 | Address | &:r2249_1 | +| ir.cpp:2249:29:2249:29 | Address | &:r2249_1 | +| ir.cpp:2249:29:2249:29 | Arg(this) | this:r2249_1 | +| ir.cpp:2249:29:2249:29 | CallTarget | func:r2249_3 | +| ir.cpp:2249:29:2249:29 | ChiPartial | partial:m2249_5 | +| ir.cpp:2249:29:2249:29 | ChiPartial | partial:m2249_7 | +| ir.cpp:2249:29:2249:29 | ChiTotal | total:m2248_4 | +| ir.cpp:2249:29:2249:29 | ChiTotal | total:m2249_2 | +| ir.cpp:2249:29:2249:29 | SideEffect | ~m2248_4 | +| ir.cpp:2250:9:2250:23 | CallTarget | func:r2250_1 | +| ir.cpp:2250:9:2250:23 | ChiPartial | partial:m2250_5 | +| ir.cpp:2250:9:2250:23 | ChiTotal | total:m2249_6 | +| ir.cpp:2250:9:2250:23 | SideEffect | ~m2249_6 | +| ir.cpp:2250:25:2250:25 | Address | &:r2250_3 | +| ir.cpp:2250:25:2250:25 | Address | &:r2250_3 | +| ir.cpp:2250:25:2250:25 | Arg(0) | 0:r2250_3 | +| ir.cpp:2250:25:2250:25 | ChiPartial | partial:m2250_8 | +| ir.cpp:2250:25:2250:25 | ChiTotal | total:m2249_8 | +| ir.cpp:2250:25:2250:25 | SideEffect | ~m2249_8 | +| ir.cpp:2250:25:2250:25 | Unary | r2250_2 | +| ir.cpp:2251:5:2251:5 | Address | &:r2251_2 | +| ir.cpp:2251:5:2251:5 | Address | &:r2251_2 | +| ir.cpp:2251:5:2251:5 | Arg(this) | this:r2251_2 | +| ir.cpp:2251:5:2251:5 | CallTarget | func:r2251_3 | +| ir.cpp:2251:5:2251:5 | ChiPartial | partial:m2251_5 | +| ir.cpp:2251:5:2251:5 | ChiPartial | partial:m2251_8 | +| ir.cpp:2251:5:2251:5 | ChiTotal | total:m2250_6 | +| ir.cpp:2251:5:2251:5 | ChiTotal | total:m2250_9 | +| ir.cpp:2251:5:2251:5 | SideEffect | m2250_9 | +| ir.cpp:2251:5:2251:5 | SideEffect | ~m2250_6 | +| ir.cpp:2253:10:2253:32 | ChiPartial | partial:m2253_3 | +| ir.cpp:2253:10:2253:32 | ChiTotal | total:m2253_2 | +| ir.cpp:2253:10:2253:32 | SideEffect | ~m2255_6 | +| ir.cpp:2254:13:2254:13 | Address | &:r2254_1 | +| ir.cpp:2255:9:2255:23 | CallTarget | func:r2255_1 | +| ir.cpp:2255:9:2255:23 | ChiPartial | partial:m2255_5 | +| ir.cpp:2255:9:2255:23 | ChiTotal | total:m2253_4 | +| ir.cpp:2255:9:2255:23 | SideEffect | ~m2253_4 | +| ir.cpp:2255:25:2255:25 | Address | &:r2255_3 | +| ir.cpp:2255:25:2255:25 | Address | &:r2255_3 | +| ir.cpp:2255:25:2255:25 | Arg(0) | 0:r2255_3 | +| ir.cpp:2255:25:2255:25 | ChiPartial | partial:m2255_8 | +| ir.cpp:2255:25:2255:25 | ChiTotal | total:m2254_2 | +| ir.cpp:2255:25:2255:25 | SideEffect | ~m2254_2 | +| ir.cpp:2255:25:2255:25 | Unary | r2255_2 | +| ir.cpp:2259:6:2259:24 | ChiPartial | partial:m2259_3 | +| ir.cpp:2259:6:2259:24 | ChiTotal | total:m2259_2 | +| ir.cpp:2259:6:2259:24 | Phi | from 2:~m2259_10 | +| ir.cpp:2259:6:2259:24 | Phi | from 6:~m2268_8 | +| ir.cpp:2259:6:2259:24 | Phi | from 9:~m2261_6 | +| ir.cpp:2259:6:2259:24 | Phi | from 10:~m2275_1 | +| ir.cpp:2259:6:2259:24 | SideEffect | ~m2259_7 | +| ir.cpp:2259:31:2259:31 | Address | &:r2259_5 | +| ir.cpp:2261:12:2261:12 | Address | &:r2261_1 | +| ir.cpp:2261:12:2261:12 | Address | &:r2261_1 | +| ir.cpp:2261:12:2261:12 | Arg(this) | this:r2261_1 | +| ir.cpp:2261:12:2261:12 | CallTarget | func:r2261_3 | +| ir.cpp:2261:12:2261:12 | ChiPartial | partial:m2261_5 | +| ir.cpp:2261:12:2261:12 | ChiPartial | partial:m2261_7 | +| ir.cpp:2261:12:2261:12 | ChiTotal | total:m2259_4 | +| ir.cpp:2261:12:2261:12 | ChiTotal | total:m2261_2 | +| ir.cpp:2261:12:2261:12 | SideEffect | ~m2259_4 | +| ir.cpp:2262:9:2262:9 | Address | &:r2262_1 | +| ir.cpp:2262:9:2262:9 | Condition | r2262_2 | +| ir.cpp:2262:9:2262:9 | Load | m2259_6 | +| ir.cpp:2263:7:2263:28 | Address | &:r2263_1 | +| ir.cpp:2263:7:2263:28 | Address | &:r2263_1 | +| ir.cpp:2263:7:2263:28 | Load | m2263_4 | +| ir.cpp:2263:13:2263:28 | StoreValue | r2263_3 | +| ir.cpp:2263:13:2263:28 | Unary | r2263_2 | +| ir.cpp:2265:12:2265:13 | Address | &:r2265_1 | +| ir.cpp:2265:12:2265:13 | Address | &:r2265_1 | +| ir.cpp:2265:12:2265:13 | Arg(this) | this:r2265_1 | +| ir.cpp:2265:12:2265:13 | CallTarget | func:r2265_3 | +| ir.cpp:2265:12:2265:13 | ChiPartial | partial:m2265_5 | +| ir.cpp:2265:12:2265:13 | ChiPartial | partial:m2265_7 | +| ir.cpp:2265:12:2265:13 | ChiTotal | total:m2261_6 | +| ir.cpp:2265:12:2265:13 | ChiTotal | total:m2265_2 | +| ir.cpp:2265:12:2265:13 | SideEffect | ~m2261_6 | +| ir.cpp:2266:3:2266:3 | Address | &:r2266_1 | +| ir.cpp:2266:3:2266:3 | Address | &:r2266_1 | +| ir.cpp:2266:3:2266:3 | Address | &:r2266_9 | +| ir.cpp:2266:3:2266:3 | Address | &:r2266_9 | +| ir.cpp:2266:3:2266:3 | Arg(this) | this:r2266_1 | +| ir.cpp:2266:3:2266:3 | Arg(this) | this:r2266_9 | +| ir.cpp:2266:3:2266:3 | CallTarget | func:r2266_2 | +| ir.cpp:2266:3:2266:3 | CallTarget | func:r2266_10 | +| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_4 | +| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_7 | +| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_12 | +| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_15 | +| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2261_8 | +| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2265_6 | +| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2265_8 | +| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2266_5 | +| ir.cpp:2266:3:2266:3 | SideEffect | m2261_8 | +| ir.cpp:2266:3:2266:3 | SideEffect | m2265_8 | +| ir.cpp:2266:3:2266:3 | SideEffect | ~m2265_6 | +| ir.cpp:2266:3:2266:3 | SideEffect | ~m2266_5 | +| ir.cpp:2267:22:2267:22 | Address | &:r2267_2 | +| ir.cpp:2267:22:2267:22 | Address | &:r2267_2 | +| ir.cpp:2267:22:2267:22 | Address | &:r2267_4 | +| ir.cpp:2267:22:2267:22 | Load | m2267_3 | +| ir.cpp:2268:5:2268:19 | Address | &:r2268_1 | +| ir.cpp:2268:5:2268:19 | Address | &:r2268_1 | +| ir.cpp:2268:5:2268:19 | Address | &:r2268_1 | +| ir.cpp:2268:5:2268:19 | Arg(this) | this:r2268_1 | +| ir.cpp:2268:5:2268:19 | CallTarget | func:r2268_3 | +| ir.cpp:2268:5:2268:19 | ChiPartial | partial:m2268_7 | +| ir.cpp:2268:5:2268:19 | ChiPartial | partial:m2268_10 | +| ir.cpp:2268:5:2268:19 | ChiTotal | total:m2261_6 | +| ir.cpp:2268:5:2268:19 | ChiTotal | total:m2268_2 | +| ir.cpp:2268:5:2268:19 | Load | m2268_11 | +| ir.cpp:2268:5:2268:19 | SideEffect | ~m2261_6 | +| ir.cpp:2268:18:2268:18 | Address | &:r2268_4 | +| ir.cpp:2268:18:2268:18 | Address | &:r2268_5 | +| ir.cpp:2268:18:2268:18 | Arg(0) | 0:r2268_5 | +| ir.cpp:2268:18:2268:18 | Load | m2267_3 | +| ir.cpp:2268:18:2268:18 | SideEffect | ~m2267_5 | +| ir.cpp:2270:24:2270:24 | Address | &:r2270_2 | +| ir.cpp:2270:24:2270:24 | Address | &:r2270_2 | +| ir.cpp:2270:24:2270:24 | Address | &:r2270_4 | +| ir.cpp:2270:24:2270:24 | Load | m2270_3 | +| ir.cpp:2275:1:2275:1 | Phi | from 4:~m2266_13 | +| ir.cpp:2275:1:2275:1 | Phi | from 8:~m2261_6 | +| ir.cpp:2277:6:2277:18 | ChiPartial | partial:m2277_3 | +| ir.cpp:2277:6:2277:18 | ChiTotal | total:m2277_2 | +| ir.cpp:2277:6:2277:18 | SideEffect | ~m2285_14 | +| ir.cpp:2277:25:2277:25 | Address | &:r2277_5 | +| ir.cpp:2278:12:2278:13 | Address | &:r2278_1 | +| ir.cpp:2278:12:2278:13 | Address | &:r2278_1 | +| ir.cpp:2278:12:2278:13 | Arg(this) | this:r2278_1 | +| ir.cpp:2278:12:2278:13 | CallTarget | func:r2278_3 | +| ir.cpp:2278:12:2278:13 | ChiPartial | partial:m2278_5 | +| ir.cpp:2278:12:2278:13 | ChiPartial | partial:m2278_7 | +| ir.cpp:2278:12:2278:13 | ChiTotal | total:m2277_4 | +| ir.cpp:2278:12:2278:13 | ChiTotal | total:m2278_2 | +| ir.cpp:2278:12:2278:13 | SideEffect | ~m2277_4 | +| ir.cpp:2279:8:2279:8 | Address | &:r2279_1 | +| ir.cpp:2279:8:2279:8 | Condition | r2279_2 | +| ir.cpp:2279:8:2279:8 | Load | m2277_6 | +| ir.cpp:2280:16:2280:17 | Address | &:r2280_1 | +| ir.cpp:2280:16:2280:17 | Address | &:r2280_1 | +| ir.cpp:2280:16:2280:17 | Arg(this) | this:r2280_1 | +| ir.cpp:2280:16:2280:17 | CallTarget | func:r2280_3 | +| ir.cpp:2280:16:2280:17 | ChiPartial | partial:m2280_5 | +| ir.cpp:2280:16:2280:17 | ChiPartial | partial:m2280_7 | +| ir.cpp:2280:16:2280:17 | ChiTotal | total:m2278_6 | +| ir.cpp:2280:16:2280:17 | ChiTotal | total:m2280_2 | +| ir.cpp:2280:16:2280:17 | SideEffect | ~m2278_6 | +| ir.cpp:2281:5:2281:5 | Address | &:r2281_1 | +| ir.cpp:2281:5:2281:5 | Address | &:r2281_1 | +| ir.cpp:2281:5:2281:5 | Arg(this) | this:r2281_1 | +| ir.cpp:2281:5:2281:5 | CallTarget | func:r2281_2 | +| ir.cpp:2281:5:2281:5 | ChiPartial | partial:m2281_4 | +| ir.cpp:2281:5:2281:5 | ChiPartial | partial:m2281_7 | +| ir.cpp:2281:5:2281:5 | ChiTotal | total:m2280_6 | +| ir.cpp:2281:5:2281:5 | ChiTotal | total:m2280_8 | +| ir.cpp:2281:5:2281:5 | SideEffect | m2280_8 | +| ir.cpp:2281:5:2281:5 | SideEffect | ~m2280_6 | +| ir.cpp:2282:16:2282:17 | Address | &:r2282_1 | +| ir.cpp:2282:16:2282:17 | Address | &:r2282_1 | +| ir.cpp:2282:16:2282:17 | Arg(this) | this:r2282_1 | +| ir.cpp:2282:16:2282:17 | CallTarget | func:r2282_3 | +| ir.cpp:2282:16:2282:17 | ChiPartial | partial:m2282_5 | +| ir.cpp:2282:16:2282:17 | ChiPartial | partial:m2282_7 | +| ir.cpp:2282:16:2282:17 | ChiTotal | total:m2278_6 | +| ir.cpp:2282:16:2282:17 | ChiTotal | total:m2282_2 | +| ir.cpp:2282:16:2282:17 | SideEffect | ~m2278_6 | +| ir.cpp:2283:5:2283:5 | Address | &:r2283_1 | +| ir.cpp:2283:5:2283:5 | Address | &:r2283_1 | +| ir.cpp:2283:5:2283:5 | Arg(this) | this:r2283_1 | +| ir.cpp:2283:5:2283:5 | CallTarget | func:r2283_2 | +| ir.cpp:2283:5:2283:5 | ChiPartial | partial:m2283_4 | +| ir.cpp:2283:5:2283:5 | ChiPartial | partial:m2283_7 | +| ir.cpp:2283:5:2283:5 | ChiTotal | total:m2282_6 | +| ir.cpp:2283:5:2283:5 | ChiTotal | total:m2282_8 | +| ir.cpp:2283:5:2283:5 | SideEffect | m2282_8 | +| ir.cpp:2283:5:2283:5 | SideEffect | ~m2282_6 | +| ir.cpp:2284:12:2284:13 | Address | &:r2284_2 | +| ir.cpp:2284:12:2284:13 | Address | &:r2284_2 | +| ir.cpp:2284:12:2284:13 | Arg(this) | this:r2284_2 | +| ir.cpp:2284:12:2284:13 | CallTarget | func:r2284_4 | +| ir.cpp:2284:12:2284:13 | ChiPartial | partial:m2284_6 | +| ir.cpp:2284:12:2284:13 | ChiPartial | partial:m2284_8 | +| ir.cpp:2284:12:2284:13 | ChiTotal | total:m2284_1 | +| ir.cpp:2284:12:2284:13 | ChiTotal | total:m2284_3 | +| ir.cpp:2284:12:2284:13 | Phi | from 1:~m2281_5 | +| ir.cpp:2284:12:2284:13 | Phi | from 2:~m2283_5 | +| ir.cpp:2284:12:2284:13 | SideEffect | ~m2284_1 | +| ir.cpp:2285:1:2285:1 | Address | &:r2285_2 | +| ir.cpp:2285:1:2285:1 | Address | &:r2285_2 | +| ir.cpp:2285:1:2285:1 | Address | &:r2285_10 | +| ir.cpp:2285:1:2285:1 | Address | &:r2285_10 | +| ir.cpp:2285:1:2285:1 | Arg(this) | this:r2285_2 | +| ir.cpp:2285:1:2285:1 | Arg(this) | this:r2285_10 | +| ir.cpp:2285:1:2285:1 | CallTarget | func:r2285_3 | +| ir.cpp:2285:1:2285:1 | CallTarget | func:r2285_11 | +| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_5 | +| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_8 | +| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_13 | +| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_16 | +| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2278_8 | +| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2284_7 | +| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2284_9 | +| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2285_6 | +| ir.cpp:2285:1:2285:1 | SideEffect | m2278_8 | +| ir.cpp:2285:1:2285:1 | SideEffect | m2284_9 | +| ir.cpp:2285:1:2285:1 | SideEffect | ~m2284_7 | +| ir.cpp:2285:1:2285:1 | SideEffect | ~m2285_6 | +| ir.cpp:2287:6:2287:19 | ChiPartial | partial:m2287_3 | +| ir.cpp:2287:6:2287:19 | ChiTotal | total:m2287_2 | +| ir.cpp:2287:6:2287:19 | SideEffect | ~m2297_54 | +| ir.cpp:2288:10:2288:10 | Address | &:r2288_1 | +| ir.cpp:2288:13:2288:16 | StoreValue | r2288_2 | +| ir.cpp:2289:16:2289:16 | Address | &:r2289_1 | +| ir.cpp:2289:16:2289:16 | Address | &:r2289_1 | +| ir.cpp:2289:16:2289:16 | Address | &:r2289_31 | +| ir.cpp:2289:16:2289:16 | Address | &:r2289_31 | +| ir.cpp:2289:16:2289:16 | Arg(this) | this:r2289_1 | +| ir.cpp:2289:16:2289:16 | Arg(this) | this:r2289_31 | +| ir.cpp:2289:16:2289:16 | CallTarget | func:r2289_32 | +| ir.cpp:2289:16:2289:16 | ChiPartial | partial:m2289_34 | +| ir.cpp:2289:16:2289:16 | ChiPartial | partial:m2289_37 | +| ir.cpp:2289:16:2289:16 | ChiTotal | total:m2289_12 | +| ir.cpp:2289:16:2289:16 | ChiTotal | total:m2289_13 | +| ir.cpp:2289:16:2289:16 | SideEffect | m2289_12 | +| ir.cpp:2289:16:2289:16 | SideEffect | ~m2289_13 | +| ir.cpp:2289:18:2289:24 | Address | &:r2289_5 | +| ir.cpp:2289:18:2289:24 | Arg(0) | 0:r2289_5 | +| ir.cpp:2289:18:2289:24 | SideEffect | ~m2287_3 | +| ir.cpp:2289:18:2289:24 | Unary | r2289_4 | +| ir.cpp:2289:18:2289:25 | CallTarget | func:r2289_3 | +| ir.cpp:2289:18:2289:25 | ChiPartial | partial:m2289_7 | +| ir.cpp:2289:18:2289:25 | ChiPartial | partial:m2289_10 | +| ir.cpp:2289:18:2289:25 | ChiTotal | total:m2287_4 | +| ir.cpp:2289:18:2289:25 | ChiTotal | total:m2289_2 | +| ir.cpp:2289:18:2289:25 | SideEffect | ~m2287_4 | +| ir.cpp:2289:28:2289:28 | Address | &:r2289_15 | +| ir.cpp:2289:28:2289:28 | Left | r2289_17 | +| ir.cpp:2289:28:2289:28 | Load | m2289_14 | +| ir.cpp:2289:28:2289:28 | Phi | from 0:m2288_3 | +| ir.cpp:2289:28:2289:28 | Phi | from 0:m2289_11 | +| ir.cpp:2289:28:2289:28 | Phi | from 0:~m2289_8 | +| ir.cpp:2289:28:2289:28 | Phi | from 2:m2289_28 | +| ir.cpp:2289:28:2289:28 | Phi | from 2:m2289_30 | +| ir.cpp:2289:28:2289:28 | Phi | from 2:~m2289_25 | +| ir.cpp:2289:28:2289:28 | Unary | r2289_16 | +| ir.cpp:2289:28:2289:33 | Condition | r2289_19 | +| ir.cpp:2289:33:2289:33 | Right | r2289_18 | +| ir.cpp:2289:36:2289:36 | Address | &:r2289_29 | +| ir.cpp:2289:40:2289:40 | Address | &:r2289_21 | +| ir.cpp:2289:40:2289:40 | Address | &:r2289_21 | +| ir.cpp:2289:40:2289:40 | Arg(this) | this:r2289_21 | +| ir.cpp:2289:40:2289:40 | ChiPartial | partial:m2289_27 | +| ir.cpp:2289:40:2289:40 | ChiTotal | total:m2289_12 | +| ir.cpp:2289:40:2289:40 | SideEffect | m2289_12 | +| ir.cpp:2289:42:2289:49 | CallTarget | func:r2289_22 | +| ir.cpp:2289:42:2289:49 | ChiPartial | partial:m2289_24 | +| ir.cpp:2289:42:2289:49 | ChiTotal | total:m2291_5 | +| ir.cpp:2289:42:2289:49 | SideEffect | ~m2291_5 | +| ir.cpp:2289:42:2289:49 | StoreValue | r2289_23 | +| ir.cpp:2290:16:2290:17 | Address | &:r2290_1 | +| ir.cpp:2290:16:2290:17 | Address | &:r2290_1 | +| ir.cpp:2290:16:2290:17 | Arg(this) | this:r2290_1 | +| ir.cpp:2290:16:2290:17 | CallTarget | func:r2290_3 | +| ir.cpp:2290:16:2290:17 | ChiPartial | partial:m2290_5 | +| ir.cpp:2290:16:2290:17 | ChiPartial | partial:m2290_7 | +| ir.cpp:2290:16:2290:17 | ChiTotal | total:m2289_13 | +| ir.cpp:2290:16:2290:17 | ChiTotal | total:m2290_2 | +| ir.cpp:2290:16:2290:17 | SideEffect | ~m2289_13 | +| ir.cpp:2291:5:2291:5 | Address | &:r2291_1 | +| ir.cpp:2291:5:2291:5 | Address | &:r2291_1 | +| ir.cpp:2291:5:2291:5 | Arg(this) | this:r2291_1 | +| ir.cpp:2291:5:2291:5 | CallTarget | func:r2291_2 | +| ir.cpp:2291:5:2291:5 | ChiPartial | partial:m2291_4 | +| ir.cpp:2291:5:2291:5 | ChiPartial | partial:m2291_7 | +| ir.cpp:2291:5:2291:5 | ChiTotal | total:m2290_6 | +| ir.cpp:2291:5:2291:5 | ChiTotal | total:m2290_8 | +| ir.cpp:2291:5:2291:5 | SideEffect | m2290_8 | +| ir.cpp:2291:5:2291:5 | SideEffect | ~m2290_6 | +| ir.cpp:2293:5:2293:5 | Address | &:r2293_1 | +| ir.cpp:2293:5:2293:5 | Address | &:r2293_24 | +| ir.cpp:2293:5:2293:5 | Address | &:r2293_32 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_55 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_55 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_72 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_72 | +| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_55 | +| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_72 | +| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_57 | +| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_73 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_67 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_70 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_75 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_78 | +| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_56 | +| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_62 | +| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_71 | +| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2295_5 | +| ir.cpp:2293:16:2293:16 | SideEffect | m2293_71 | +| ir.cpp:2293:16:2293:16 | SideEffect | ~m2293_62 | +| ir.cpp:2293:16:2293:16 | SideEffect | ~m2295_5 | +| ir.cpp:2293:20:2293:20 | Address | &:r2293_25 | +| ir.cpp:2293:20:2293:20 | Address | &:r2293_33 | +| ir.cpp:2293:20:2293:20 | Address | &:r2293_80 | +| ir.cpp:2293:20:2293:20 | Address | &:r2293_80 | +| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_2 | +| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_5 | +| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_7 | +| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_8 | +| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_15 | +| ir.cpp:2293:20:2293:20 | Arg(this) | this:r2293_80 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_27 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_35 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_43 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_44 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_59 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_81 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_29 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_37 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_47 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_49 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_52 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_61 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_83 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_86 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m0_9 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_19 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_30 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_40 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_41 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_48 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_53 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_76 | +| ir.cpp:2293:20:2293:20 | Condition | r2293_51 | +| ir.cpp:2293:20:2293:20 | Load | m2293_23 | +| ir.cpp:2293:20:2293:20 | Load | m2293_23 | +| ir.cpp:2293:20:2293:20 | Phi | from 3:m2293_31 | +| ir.cpp:2293:20:2293:20 | Phi | from 3:~m2293_38 | +| ir.cpp:2293:20:2293:20 | Phi | from 5:m2293_87 | +| ir.cpp:2293:20:2293:20 | Phi | from 5:~m2293_84 | +| ir.cpp:2293:20:2293:20 | SideEffect | m2293_40 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_19 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_30 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_41 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_48 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_53 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_76 | +| ir.cpp:2293:20:2293:20 | StoreValue | r2293_28 | +| ir.cpp:2293:20:2293:20 | StoreValue | r2293_36 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_26 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_34 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_42 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_45 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_58 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_60 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_82 | +| ir.cpp:2293:20:2293:55 | Address | &:r2293_2 | +| ir.cpp:2293:20:2293:55 | Address | &:r2293_2 | +| ir.cpp:2293:20:2293:55 | Arg(this) | this:r2293_2 | +| ir.cpp:2293:20:2293:55 | CallTarget | func:r2293_4 | +| ir.cpp:2293:20:2293:55 | ChiPartial | partial:m2293_18 | +| ir.cpp:2293:20:2293:55 | ChiPartial | partial:m2293_20 | +| ir.cpp:2293:20:2293:55 | ChiTotal | total:m2293_3 | +| ir.cpp:2293:20:2293:55 | ChiTotal | total:m2293_12 | +| ir.cpp:2293:20:2293:55 | SideEffect | ~m2293_12 | +| ir.cpp:2293:20:2293:55 | StoreValue | r2293_22 | +| ir.cpp:2293:20:2293:55 | Unary | r2293_2 | +| ir.cpp:2293:20:2293:56 | Address | &:r2293_65 | +| ir.cpp:2293:20:2293:56 | Arg(0) | 0:r2293_65 | +| ir.cpp:2293:20:2293:56 | SideEffect | ~m2293_68 | +| ir.cpp:2293:20:2293:56 | Unary | r2293_63 | +| ir.cpp:2293:20:2293:56 | Unary | r2293_64 | +| ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | +| ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | +| ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | +| ir.cpp:2293:40:2293:54 | Arg(0) | 0:r2293_16 | +| ir.cpp:2293:40:2293:54 | Arg(this) | this:r2293_5 | +| ir.cpp:2293:40:2293:54 | CallTarget | func:r2293_7 | +| ir.cpp:2293:40:2293:54 | ChiPartial | partial:m2293_11 | +| ir.cpp:2293:40:2293:54 | ChiPartial | partial:m2293_14 | +| ir.cpp:2293:40:2293:54 | ChiTotal | total:m2289_35 | +| ir.cpp:2293:40:2293:54 | ChiTotal | total:m2293_6 | +| ir.cpp:2293:40:2293:54 | Load | m2293_15 | +| ir.cpp:2293:40:2293:54 | SideEffect | ~m2289_35 | +| ir.cpp:2293:47:2293:53 | Address | &:r2293_9 | +| ir.cpp:2293:47:2293:53 | Arg(0) | 0:r2293_9 | +| ir.cpp:2293:47:2293:53 | SideEffect | ~m2287_3 | +| ir.cpp:2293:47:2293:53 | Unary | r2293_8 | +| ir.cpp:2294:16:2294:17 | Address | &:r2294_1 | +| ir.cpp:2294:16:2294:17 | Address | &:r2294_1 | +| ir.cpp:2294:16:2294:17 | Arg(this) | this:r2294_1 | +| ir.cpp:2294:16:2294:17 | CallTarget | func:r2294_3 | +| ir.cpp:2294:16:2294:17 | ChiPartial | partial:m2294_5 | +| ir.cpp:2294:16:2294:17 | ChiPartial | partial:m2294_7 | +| ir.cpp:2294:16:2294:17 | ChiTotal | total:m2293_68 | +| ir.cpp:2294:16:2294:17 | ChiTotal | total:m2294_2 | +| ir.cpp:2294:16:2294:17 | SideEffect | ~m2293_68 | +| ir.cpp:2295:5:2295:5 | Address | &:r2295_1 | +| ir.cpp:2295:5:2295:5 | Address | &:r2295_1 | +| ir.cpp:2295:5:2295:5 | Arg(this) | this:r2295_1 | +| ir.cpp:2295:5:2295:5 | CallTarget | func:r2295_2 | +| ir.cpp:2295:5:2295:5 | ChiPartial | partial:m2295_4 | +| ir.cpp:2295:5:2295:5 | ChiPartial | partial:m2295_7 | +| ir.cpp:2295:5:2295:5 | ChiTotal | total:m2294_6 | +| ir.cpp:2295:5:2295:5 | ChiTotal | total:m2294_8 | +| ir.cpp:2295:5:2295:5 | SideEffect | m2294_8 | +| ir.cpp:2295:5:2295:5 | SideEffect | ~m2294_6 | +| ir.cpp:2297:16:2297:16 | Address | &:r2297_1 | +| ir.cpp:2297:16:2297:16 | Address | &:r2297_1 | +| ir.cpp:2297:16:2297:16 | Address | &:r2297_50 | +| ir.cpp:2297:16:2297:16 | Address | &:r2297_50 | +| ir.cpp:2297:16:2297:16 | Arg(this) | this:r2297_1 | +| ir.cpp:2297:16:2297:16 | Arg(this) | this:r2297_50 | +| ir.cpp:2297:16:2297:16 | CallTarget | func:r2297_51 | +| ir.cpp:2297:16:2297:16 | ChiPartial | partial:m2297_53 | +| ir.cpp:2297:16:2297:16 | ChiPartial | partial:m2297_56 | +| ir.cpp:2297:16:2297:16 | ChiTotal | total:m2297_23 | +| ir.cpp:2297:16:2297:16 | ChiTotal | total:m2297_46 | +| ir.cpp:2297:16:2297:16 | SideEffect | m2297_23 | +| ir.cpp:2297:16:2297:16 | SideEffect | ~m2297_46 | +| ir.cpp:2297:18:2297:24 | Address | &:r2297_5 | +| ir.cpp:2297:18:2297:24 | Arg(0) | 0:r2297_5 | +| ir.cpp:2297:18:2297:24 | SideEffect | ~m2287_3 | +| ir.cpp:2297:18:2297:24 | Unary | r2297_4 | +| ir.cpp:2297:18:2297:25 | CallTarget | func:r2297_3 | +| ir.cpp:2297:18:2297:25 | ChiPartial | partial:m2297_7 | +| ir.cpp:2297:18:2297:25 | ChiPartial | partial:m2297_10 | +| ir.cpp:2297:18:2297:25 | ChiTotal | total:m2293_53 | +| ir.cpp:2297:18:2297:25 | ChiTotal | total:m2297_2 | +| ir.cpp:2297:18:2297:25 | SideEffect | ~m2293_53 | +| ir.cpp:2297:28:2297:29 | Address | &:r2297_12 | +| ir.cpp:2297:28:2297:29 | Address | &:r2297_12 | +| ir.cpp:2297:28:2297:29 | Address | &:r2297_42 | +| ir.cpp:2297:28:2297:29 | Address | &:r2297_42 | +| ir.cpp:2297:28:2297:29 | Arg(this) | this:r2297_12 | +| ir.cpp:2297:28:2297:29 | Arg(this) | this:r2297_42 | +| ir.cpp:2297:28:2297:29 | CallTarget | func:r2297_43 | +| ir.cpp:2297:28:2297:29 | ChiPartial | partial:m2297_45 | +| ir.cpp:2297:28:2297:29 | ChiPartial | partial:m2297_48 | +| ir.cpp:2297:28:2297:29 | ChiTotal | total:m2297_22 | +| ir.cpp:2297:28:2297:29 | ChiTotal | total:m2297_24 | +| ir.cpp:2297:28:2297:29 | SideEffect | m2297_22 | +| ir.cpp:2297:28:2297:29 | SideEffect | ~m2297_24 | +| ir.cpp:2297:31:2297:37 | Address | &:r2297_16 | +| ir.cpp:2297:31:2297:37 | Arg(0) | 0:r2297_16 | +| ir.cpp:2297:31:2297:37 | SideEffect | ~m2287_3 | +| ir.cpp:2297:31:2297:37 | Unary | r2297_15 | +| ir.cpp:2297:31:2297:38 | CallTarget | func:r2297_14 | +| ir.cpp:2297:31:2297:38 | ChiPartial | partial:m2297_18 | +| ir.cpp:2297:31:2297:38 | ChiPartial | partial:m2297_21 | +| ir.cpp:2297:31:2297:38 | ChiTotal | total:m2297_8 | +| ir.cpp:2297:31:2297:38 | ChiTotal | total:m2297_13 | +| ir.cpp:2297:31:2297:38 | SideEffect | ~m2297_8 | +| ir.cpp:2297:41:2297:41 | Address | &:r2297_26 | +| ir.cpp:2297:41:2297:41 | Left | r2297_28 | +| ir.cpp:2297:41:2297:41 | Load | m2297_25 | +| ir.cpp:2297:41:2297:41 | Phi | from 6:m2289_14 | +| ir.cpp:2297:41:2297:41 | Phi | from 6:m2297_11 | +| ir.cpp:2297:41:2297:41 | Phi | from 6:~m2297_19 | +| ir.cpp:2297:41:2297:41 | Phi | from 8:m2297_39 | +| ir.cpp:2297:41:2297:41 | Phi | from 8:m2297_41 | +| ir.cpp:2297:41:2297:41 | Phi | from 8:~m2297_36 | +| ir.cpp:2297:41:2297:41 | Unary | r2297_27 | +| ir.cpp:2297:41:2297:46 | Condition | r2297_30 | +| ir.cpp:2297:46:2297:46 | Right | r2297_29 | +| ir.cpp:2297:49:2297:49 | Address | &:r2297_40 | +| ir.cpp:2297:53:2297:53 | Address | &:r2297_32 | +| ir.cpp:2297:53:2297:53 | Address | &:r2297_32 | +| ir.cpp:2297:53:2297:53 | Arg(this) | this:r2297_32 | +| ir.cpp:2297:53:2297:53 | ChiPartial | partial:m2297_38 | +| ir.cpp:2297:53:2297:53 | ChiTotal | total:m2297_23 | +| ir.cpp:2297:53:2297:53 | SideEffect | m2297_23 | +| ir.cpp:2297:55:2297:62 | CallTarget | func:r2297_33 | +| ir.cpp:2297:55:2297:62 | ChiPartial | partial:m2297_35 | +| ir.cpp:2297:55:2297:62 | ChiTotal | total:m2297_24 | +| ir.cpp:2297:55:2297:62 | SideEffect | ~m2297_24 | +| ir.cpp:2297:55:2297:62 | StoreValue | r2297_34 | +| ir.cpp:2298:9:2298:9 | Address | &:r2298_2 | +| ir.cpp:2298:13:2298:13 | StoreValue | r2298_1 | +| ir.cpp:2302:6:2302:19 | ChiPartial | partial:m2302_3 | +| ir.cpp:2302:6:2302:19 | ChiTotal | total:m2302_2 | +| ir.cpp:2302:6:2302:19 | SideEffect | ~m2307_5 | +| ir.cpp:2302:26:2302:26 | Address | &:r2302_5 | +| ir.cpp:2303:15:2303:15 | Address | &:r2303_1 | +| ir.cpp:2303:15:2303:15 | Address | &:r2303_1 | +| ir.cpp:2303:15:2303:15 | Arg(this) | this:r2303_1 | +| ir.cpp:2303:18:2303:33 | CallTarget | func:r2303_3 | +| ir.cpp:2303:18:2303:33 | ChiPartial | partial:m2303_7 | +| ir.cpp:2303:18:2303:33 | ChiPartial | partial:m2303_10 | +| ir.cpp:2303:18:2303:33 | ChiTotal | total:m2302_4 | +| ir.cpp:2303:18:2303:33 | ChiTotal | total:m2303_2 | +| ir.cpp:2303:18:2303:33 | SideEffect | ~m2302_4 | +| ir.cpp:2303:26:2303:32 | Address | &:r2303_5 | +| ir.cpp:2303:26:2303:32 | Arg(0) | 0:r2303_5 | +| ir.cpp:2303:26:2303:32 | SideEffect | ~m2302_3 | +| ir.cpp:2303:26:2303:32 | Unary | r2303_4 | +| ir.cpp:2303:36:2303:36 | Address | &:r2303_12 | +| ir.cpp:2303:36:2303:36 | Condition | r2303_13 | +| ir.cpp:2303:36:2303:36 | Load | m2302_6 | +| ir.cpp:2304:13:2304:13 | Address | &:r2304_1 | +| ir.cpp:2304:16:2304:17 | StoreValue | r2304_2 | +| ir.cpp:2306:13:2306:13 | Address | &:r2306_1 | +| ir.cpp:2306:16:2306:17 | StoreValue | r2306_2 | +| ir.cpp:2307:5:2307:5 | Address | &:r2307_1 | +| ir.cpp:2307:5:2307:5 | Address | &:r2307_1 | +| ir.cpp:2307:5:2307:5 | Arg(this) | this:r2307_1 | +| ir.cpp:2307:5:2307:5 | CallTarget | func:r2307_2 | +| ir.cpp:2307:5:2307:5 | ChiPartial | partial:m2307_4 | +| ir.cpp:2307:5:2307:5 | ChiPartial | partial:m2307_7 | +| ir.cpp:2307:5:2307:5 | ChiTotal | total:m2303_8 | +| ir.cpp:2307:5:2307:5 | ChiTotal | total:m2303_11 | +| ir.cpp:2307:5:2307:5 | SideEffect | m2303_11 | +| ir.cpp:2307:5:2307:5 | SideEffect | ~m2303_8 | +| ir.cpp:2317:6:2317:19 | ChiPartial | partial:m2317_3 | +| ir.cpp:2317:6:2317:19 | ChiTotal | total:m2317_2 | +| ir.cpp:2317:6:2317:19 | SideEffect | ~m2322_14 | +| ir.cpp:2317:26:2317:26 | Address | &:r2317_5 | +| ir.cpp:2318:8:2318:23 | Address | &:r2318_1 | +| ir.cpp:2318:8:2318:23 | Address | &:r2318_1 | +| ir.cpp:2318:8:2318:23 | Arg(this) | this:r2318_1 | +| ir.cpp:2318:8:2318:23 | Condition | r2318_19 | +| ir.cpp:2318:13:2318:13 | Address | &:r2318_11 | +| ir.cpp:2318:13:2318:13 | Address | &:r2318_11 | +| ir.cpp:2318:13:2318:13 | Arg(this) | this:r2318_11 | +| ir.cpp:2318:13:2318:13 | CallTarget | func:r2318_12 | +| ir.cpp:2318:13:2318:13 | ChiPartial | partial:m2318_14 | +| ir.cpp:2318:13:2318:13 | ChiPartial | partial:m2318_17 | +| ir.cpp:2318:13:2318:13 | ChiTotal | total:m2318_8 | +| ir.cpp:2318:13:2318:13 | ChiTotal | total:m2318_10 | +| ir.cpp:2318:13:2318:13 | SideEffect | m2318_10 | +| ir.cpp:2318:13:2318:13 | SideEffect | ~m2318_8 | +| ir.cpp:2318:13:2318:13 | Unary | r2318_13 | +| ir.cpp:2318:16:2318:23 | CallTarget | func:r2318_3 | +| ir.cpp:2318:16:2318:23 | ChiPartial | partial:m2318_7 | +| ir.cpp:2318:16:2318:23 | ChiPartial | partial:m2318_9 | +| ir.cpp:2318:16:2318:23 | ChiTotal | total:m2317_4 | +| ir.cpp:2318:16:2318:23 | ChiTotal | total:m2318_2 | +| ir.cpp:2318:16:2318:23 | SideEffect | ~m2317_4 | +| ir.cpp:2318:22:2318:22 | Address | &:r2318_4 | +| ir.cpp:2318:22:2318:22 | Arg(0) | 0:r2318_5 | +| ir.cpp:2318:22:2318:22 | Load | m2317_6 | +| ir.cpp:2319:16:2319:17 | Address | &:r2319_1 | +| ir.cpp:2319:16:2319:17 | Address | &:r2319_1 | +| ir.cpp:2319:16:2319:17 | Arg(this) | this:r2319_1 | +| ir.cpp:2319:16:2319:17 | CallTarget | func:r2319_3 | +| ir.cpp:2319:16:2319:17 | ChiPartial | partial:m2319_5 | +| ir.cpp:2319:16:2319:17 | ChiPartial | partial:m2319_7 | +| ir.cpp:2319:16:2319:17 | ChiTotal | total:m2318_15 | +| ir.cpp:2319:16:2319:17 | ChiTotal | total:m2319_2 | +| ir.cpp:2319:16:2319:17 | SideEffect | ~m2318_15 | +| ir.cpp:2320:5:2320:5 | Address | &:r2320_1 | +| ir.cpp:2320:5:2320:5 | Address | &:r2320_1 | +| ir.cpp:2320:5:2320:5 | Arg(this) | this:r2320_1 | +| ir.cpp:2320:5:2320:5 | CallTarget | func:r2320_2 | +| ir.cpp:2320:5:2320:5 | ChiPartial | partial:m2320_4 | +| ir.cpp:2320:5:2320:5 | ChiPartial | partial:m2320_7 | +| ir.cpp:2320:5:2320:5 | ChiTotal | total:m2319_6 | +| ir.cpp:2320:5:2320:5 | ChiTotal | total:m2319_8 | +| ir.cpp:2320:5:2320:5 | SideEffect | m2319_8 | +| ir.cpp:2320:5:2320:5 | SideEffect | ~m2319_6 | +| ir.cpp:2321:16:2321:17 | Address | &:r2321_1 | +| ir.cpp:2321:16:2321:17 | Address | &:r2321_1 | +| ir.cpp:2321:16:2321:17 | Arg(this) | this:r2321_1 | +| ir.cpp:2321:16:2321:17 | CallTarget | func:r2321_3 | +| ir.cpp:2321:16:2321:17 | ChiPartial | partial:m2321_5 | +| ir.cpp:2321:16:2321:17 | ChiPartial | partial:m2321_7 | +| ir.cpp:2321:16:2321:17 | ChiTotal | total:m2318_15 | +| ir.cpp:2321:16:2321:17 | ChiTotal | total:m2321_2 | +| ir.cpp:2321:16:2321:17 | SideEffect | ~m2318_15 | +| ir.cpp:2322:5:2322:5 | Address | &:r2322_1 | +| ir.cpp:2322:5:2322:5 | Address | &:r2322_1 | +| ir.cpp:2322:5:2322:5 | Address | &:r2322_10 | +| ir.cpp:2322:5:2322:5 | Address | &:r2322_10 | +| ir.cpp:2322:5:2322:5 | Arg(this) | this:r2322_1 | +| ir.cpp:2322:5:2322:5 | Arg(this) | this:r2322_10 | +| ir.cpp:2322:5:2322:5 | CallTarget | func:r2322_2 | +| ir.cpp:2322:5:2322:5 | CallTarget | func:r2322_11 | +| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_4 | +| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_7 | +| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_13 | +| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_16 | +| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2318_18 | +| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2321_6 | +| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2321_8 | +| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2322_9 | +| ir.cpp:2322:5:2322:5 | Phi | from 1:~m2320_5 | +| ir.cpp:2322:5:2322:5 | Phi | from 2:~m2322_5 | +| ir.cpp:2322:5:2322:5 | SideEffect | m2318_18 | +| ir.cpp:2322:5:2322:5 | SideEffect | m2321_8 | +| ir.cpp:2322:5:2322:5 | SideEffect | ~m2321_6 | +| ir.cpp:2322:5:2322:5 | SideEffect | ~m2322_9 | +| ir.cpp:2325:6:2325:25 | ChiPartial | partial:m2325_3 | +| ir.cpp:2325:6:2325:25 | ChiTotal | total:m2325_2 | +| ir.cpp:2325:6:2325:25 | SideEffect | ~m2336_13 | +| ir.cpp:2325:32:2325:32 | Address | &:r2325_5 | +| ir.cpp:2327:16:2327:16 | Address | &:r2327_1 | +| ir.cpp:2327:16:2327:16 | Address | &:r2327_1 | +| ir.cpp:2327:16:2327:16 | Arg(this) | this:r2327_1 | +| ir.cpp:2327:16:2327:16 | CallTarget | func:r2327_3 | +| ir.cpp:2327:16:2327:16 | ChiPartial | partial:m2327_5 | +| ir.cpp:2327:16:2327:16 | ChiPartial | partial:m2327_7 | +| ir.cpp:2327:16:2327:16 | ChiTotal | total:m2325_4 | +| ir.cpp:2327:16:2327:16 | ChiTotal | total:m2327_2 | +| ir.cpp:2327:16:2327:16 | SideEffect | ~m2325_4 | +| ir.cpp:2328:15:2328:15 | Address | &:r2328_2 | +| ir.cpp:2328:15:2328:15 | Condition | r2328_3 | +| ir.cpp:2328:15:2328:15 | Load | m2328_1 | +| ir.cpp:2328:15:2328:15 | Phi | from 0:m2325_6 | +| ir.cpp:2328:15:2328:15 | Phi | from 2:m2329_3 | +| ir.cpp:2329:13:2329:13 | Address | &:r2329_2 | +| ir.cpp:2329:17:2329:21 | StoreValue | r2329_1 | +| ir.cpp:2331:5:2331:5 | Address | &:r2331_1 | +| ir.cpp:2331:5:2331:5 | Address | &:r2331_1 | +| ir.cpp:2331:5:2331:5 | Arg(this) | this:r2331_1 | +| ir.cpp:2331:5:2331:5 | CallTarget | func:r2331_2 | +| ir.cpp:2331:5:2331:5 | ChiPartial | partial:m2331_4 | +| ir.cpp:2331:5:2331:5 | ChiPartial | partial:m2331_7 | +| ir.cpp:2331:5:2331:5 | ChiTotal | total:m2327_6 | +| ir.cpp:2331:5:2331:5 | ChiTotal | total:m2327_8 | +| ir.cpp:2331:5:2331:5 | SideEffect | m2327_8 | +| ir.cpp:2331:5:2331:5 | SideEffect | ~m2327_6 | +| ir.cpp:2334:16:2334:31 | Address | &:r2334_3 | +| ir.cpp:2334:16:2334:31 | Address | &:r2334_3 | +| ir.cpp:2334:16:2334:31 | Arg(this) | this:r2334_3 | +| ir.cpp:2334:16:2334:31 | Condition | r2334_21 | +| ir.cpp:2334:16:2334:31 | Phi | from 3:m2328_1 | +| ir.cpp:2334:16:2334:31 | Phi | from 3:~m2331_5 | +| ir.cpp:2334:16:2334:31 | Phi | from 5:m2335_3 | +| ir.cpp:2334:16:2334:31 | Phi | from 5:~m2336_5 | +| ir.cpp:2334:21:2334:21 | Address | &:r2334_13 | +| ir.cpp:2334:21:2334:21 | Address | &:r2334_13 | +| ir.cpp:2334:21:2334:21 | Arg(this) | this:r2334_13 | +| ir.cpp:2334:21:2334:21 | CallTarget | func:r2334_14 | +| ir.cpp:2334:21:2334:21 | ChiPartial | partial:m2334_16 | +| ir.cpp:2334:21:2334:21 | ChiPartial | partial:m2334_19 | +| ir.cpp:2334:21:2334:21 | ChiTotal | total:m2334_10 | +| ir.cpp:2334:21:2334:21 | ChiTotal | total:m2334_12 | +| ir.cpp:2334:21:2334:21 | SideEffect | m2334_12 | +| ir.cpp:2334:21:2334:21 | SideEffect | ~m2334_10 | +| ir.cpp:2334:21:2334:21 | Unary | r2334_15 | +| ir.cpp:2334:24:2334:31 | CallTarget | func:r2334_5 | +| ir.cpp:2334:24:2334:31 | ChiPartial | partial:m2334_9 | +| ir.cpp:2334:24:2334:31 | ChiPartial | partial:m2334_11 | +| ir.cpp:2334:24:2334:31 | ChiTotal | total:m2334_1 | +| ir.cpp:2334:24:2334:31 | ChiTotal | total:m2334_4 | +| ir.cpp:2334:24:2334:31 | SideEffect | ~m2334_1 | +| ir.cpp:2334:30:2334:30 | Address | &:r2334_6 | +| ir.cpp:2334:30:2334:30 | Arg(0) | 0:r2334_7 | +| ir.cpp:2334:30:2334:30 | Load | m2334_2 | +| ir.cpp:2335:13:2335:13 | Address | &:r2335_2 | +| ir.cpp:2335:17:2335:21 | StoreValue | r2335_1 | +| ir.cpp:2336:9:2336:9 | Address | &:r2336_1 | +| ir.cpp:2336:9:2336:9 | Address | &:r2336_1 | +| ir.cpp:2336:9:2336:9 | Address | &:r2336_9 | +| ir.cpp:2336:9:2336:9 | Address | &:r2336_9 | +| ir.cpp:2336:9:2336:9 | Arg(this) | this:r2336_1 | +| ir.cpp:2336:9:2336:9 | Arg(this) | this:r2336_9 | +| ir.cpp:2336:9:2336:9 | CallTarget | func:r2336_2 | +| ir.cpp:2336:9:2336:9 | CallTarget | func:r2336_10 | +| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_4 | +| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_7 | +| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_12 | +| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_15 | +| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_17 | +| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_17 | +| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_20 | +| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_20 | +| ir.cpp:2336:9:2336:9 | SideEffect | m2334_20 | +| ir.cpp:2336:9:2336:9 | SideEffect | m2334_20 | +| ir.cpp:2336:9:2336:9 | SideEffect | ~m2334_17 | +| ir.cpp:2336:9:2336:9 | SideEffect | ~m2334_17 | +| ir.cpp:2340:6:2340:13 | ChiPartial | partial:m2340_3 | +| ir.cpp:2340:6:2340:13 | ChiTotal | total:m2340_2 | +| ir.cpp:2340:6:2340:13 | SideEffect | m2340_3 | +| ir.cpp:2342:6:2342:24 | ChiPartial | partial:m2342_3 | +| ir.cpp:2342:6:2342:24 | ChiTotal | total:m2342_2 | +| ir.cpp:2342:6:2342:24 | Phi | from 2:~m2351_5 | +| ir.cpp:2342:6:2342:24 | Phi | from 4:~m2351_13 | +| ir.cpp:2342:6:2342:24 | Phi | from 5:~m2351_22 | +| ir.cpp:2342:6:2342:24 | SideEffect | ~m2342_7 | +| ir.cpp:2342:31:2342:31 | Address | &:r2342_5 | +| ir.cpp:2343:12:2343:12 | Address | &:r2343_1 | +| ir.cpp:2343:12:2343:12 | Address | &:r2343_1 | +| ir.cpp:2343:12:2343:12 | Arg(this) | this:r2343_1 | +| ir.cpp:2343:12:2343:12 | CallTarget | func:r2343_3 | +| ir.cpp:2343:12:2343:12 | ChiPartial | partial:m2343_5 | +| ir.cpp:2343:12:2343:12 | ChiPartial | partial:m2343_7 | +| ir.cpp:2343:12:2343:12 | ChiTotal | total:m2342_4 | +| ir.cpp:2343:12:2343:12 | ChiTotal | total:m2343_2 | +| ir.cpp:2343:12:2343:12 | SideEffect | ~m2342_4 | +| ir.cpp:2344:8:2344:8 | Address | &:r2344_1 | +| ir.cpp:2344:8:2344:8 | Condition | r2344_2 | +| ir.cpp:2344:8:2344:8 | Load | m2342_6 | +| ir.cpp:2347:8:2347:8 | Address | &:r2347_1 | +| ir.cpp:2347:8:2347:8 | Condition | r2347_2 | +| ir.cpp:2347:8:2347:8 | Load | m2342_6 | +| ir.cpp:2348:16:2348:23 | CallTarget | func:r2348_1 | +| ir.cpp:2348:16:2348:23 | ChiPartial | partial:m2348_3 | +| ir.cpp:2348:16:2348:23 | ChiTotal | total:m2343_6 | +| ir.cpp:2348:16:2348:23 | SideEffect | ~m2343_6 | +| ir.cpp:2351:1:2351:1 | Address | &:r2351_1 | +| ir.cpp:2351:1:2351:1 | Address | &:r2351_1 | +| ir.cpp:2351:1:2351:1 | Address | &:r2351_9 | +| ir.cpp:2351:1:2351:1 | Address | &:r2351_9 | +| ir.cpp:2351:1:2351:1 | Address | &:r2351_18 | +| ir.cpp:2351:1:2351:1 | Address | &:r2351_18 | +| ir.cpp:2351:1:2351:1 | Arg(this) | this:r2351_1 | +| ir.cpp:2351:1:2351:1 | Arg(this) | this:r2351_9 | +| ir.cpp:2351:1:2351:1 | Arg(this) | this:r2351_18 | +| ir.cpp:2351:1:2351:1 | CallTarget | func:r2351_2 | +| ir.cpp:2351:1:2351:1 | CallTarget | func:r2351_10 | +| ir.cpp:2351:1:2351:1 | CallTarget | func:r2351_19 | +| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_4 | +| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_7 | +| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_12 | +| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_15 | +| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_21 | +| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_24 | +| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_6 | +| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_6 | +| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_8 | +| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_8 | +| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_8 | +| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2348_4 | +| ir.cpp:2351:1:2351:1 | SideEffect | m2343_8 | +| ir.cpp:2351:1:2351:1 | SideEffect | m2343_8 | +| ir.cpp:2351:1:2351:1 | SideEffect | m2343_8 | +| ir.cpp:2351:1:2351:1 | SideEffect | ~m2343_6 | +| ir.cpp:2351:1:2351:1 | SideEffect | ~m2343_6 | +| ir.cpp:2351:1:2351:1 | SideEffect | ~m2348_4 | +| ir.cpp:2353:5:2353:24 | Address | &:r2353_9 | +| ir.cpp:2353:5:2353:24 | ChiPartial | partial:m2353_3 | +| ir.cpp:2353:5:2353:24 | ChiTotal | total:m2353_2 | +| ir.cpp:2353:5:2353:24 | Load | m2353_8 | +| ir.cpp:2353:5:2353:24 | Phi | from 2:m2356_3 | +| ir.cpp:2353:5:2353:24 | Phi | from 2:~m2359_5 | +| ir.cpp:2353:5:2353:24 | Phi | from 3:m2358_3 | +| ir.cpp:2353:5:2353:24 | Phi | from 3:~m2359_13 | +| ir.cpp:2353:5:2353:24 | SideEffect | ~m2353_7 | +| ir.cpp:2353:31:2353:31 | Address | &:r2353_5 | +| ir.cpp:2354:12:2354:12 | Address | &:r2354_1 | +| ir.cpp:2354:12:2354:12 | Address | &:r2354_1 | +| ir.cpp:2354:12:2354:12 | Arg(this) | this:r2354_1 | +| ir.cpp:2354:12:2354:12 | CallTarget | func:r2354_3 | +| ir.cpp:2354:12:2354:12 | ChiPartial | partial:m2354_5 | +| ir.cpp:2354:12:2354:12 | ChiPartial | partial:m2354_7 | +| ir.cpp:2354:12:2354:12 | ChiTotal | total:m2353_4 | +| ir.cpp:2354:12:2354:12 | ChiTotal | total:m2354_2 | +| ir.cpp:2354:12:2354:12 | SideEffect | ~m2353_4 | +| ir.cpp:2355:8:2355:8 | Address | &:r2355_1 | +| ir.cpp:2355:8:2355:8 | Condition | r2355_2 | +| ir.cpp:2355:8:2355:8 | Load | m2353_6 | +| ir.cpp:2356:9:2356:17 | Address | &:r2356_1 | +| ir.cpp:2356:16:2356:16 | StoreValue | r2356_2 | +| ir.cpp:2358:5:2358:13 | Address | &:r2358_1 | +| ir.cpp:2358:12:2358:12 | StoreValue | r2358_2 | +| ir.cpp:2359:1:2359:1 | Address | &:r2359_1 | +| ir.cpp:2359:1:2359:1 | Address | &:r2359_1 | +| ir.cpp:2359:1:2359:1 | Address | &:r2359_9 | +| ir.cpp:2359:1:2359:1 | Address | &:r2359_9 | +| ir.cpp:2359:1:2359:1 | Arg(this) | this:r2359_1 | +| ir.cpp:2359:1:2359:1 | Arg(this) | this:r2359_9 | +| ir.cpp:2359:1:2359:1 | CallTarget | func:r2359_2 | +| ir.cpp:2359:1:2359:1 | CallTarget | func:r2359_10 | +| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_4 | +| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_7 | +| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_12 | +| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_15 | +| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_6 | +| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_6 | +| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_8 | +| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_8 | +| ir.cpp:2359:1:2359:1 | SideEffect | m2354_8 | +| ir.cpp:2359:1:2359:1 | SideEffect | m2354_8 | +| ir.cpp:2359:1:2359:1 | SideEffect | ~m2354_6 | +| ir.cpp:2359:1:2359:1 | SideEffect | ~m2354_6 | +| ir.cpp:2361:6:2361:26 | ChiPartial | partial:m2361_3 | +| ir.cpp:2361:6:2361:26 | ChiTotal | total:m2361_2 | +| ir.cpp:2361:6:2361:26 | SideEffect | ~m2364_5 | +| ir.cpp:2362:12:2362:12 | Address | &:r2362_1 | +| ir.cpp:2362:12:2362:12 | Address | &:r2362_1 | +| ir.cpp:2362:12:2362:12 | Arg(this) | this:r2362_1 | +| ir.cpp:2362:12:2362:12 | CallTarget | func:r2362_3 | +| ir.cpp:2362:12:2362:12 | ChiPartial | partial:m2362_5 | +| ir.cpp:2362:12:2362:12 | ChiPartial | partial:m2362_7 | +| ir.cpp:2362:12:2362:12 | ChiTotal | total:m2361_4 | +| ir.cpp:2362:12:2362:12 | ChiTotal | total:m2362_2 | +| ir.cpp:2362:12:2362:12 | SideEffect | ~m2361_4 | +| ir.cpp:2363:12:2363:19 | CallTarget | func:r2363_1 | +| ir.cpp:2363:12:2363:19 | ChiPartial | partial:m2363_3 | +| ir.cpp:2363:12:2363:19 | ChiTotal | total:m2362_6 | +| ir.cpp:2363:12:2363:19 | SideEffect | ~m2362_6 | +| ir.cpp:2364:1:2364:1 | Address | &:r2364_1 | +| ir.cpp:2364:1:2364:1 | Address | &:r2364_1 | +| ir.cpp:2364:1:2364:1 | Arg(this) | this:r2364_1 | +| ir.cpp:2364:1:2364:1 | CallTarget | func:r2364_2 | +| ir.cpp:2364:1:2364:1 | ChiPartial | partial:m2364_4 | +| ir.cpp:2364:1:2364:1 | ChiPartial | partial:m2364_7 | +| ir.cpp:2364:1:2364:1 | ChiTotal | total:m2362_8 | +| ir.cpp:2364:1:2364:1 | ChiTotal | total:m2363_4 | +| ir.cpp:2364:1:2364:1 | SideEffect | m2362_8 | +| ir.cpp:2364:1:2364:1 | SideEffect | ~m2363_4 | +| ir.cpp:2374:32:2374:47 | Address | &:r2374_5 | +| ir.cpp:2374:32:2374:47 | ChiPartial | partial:m2374_3 | +| ir.cpp:2374:32:2374:47 | ChiTotal | total:m2374_2 | +| ir.cpp:2374:32:2374:47 | Load | m2376_3 | +| ir.cpp:2374:32:2374:47 | SideEffect | m2374_3 | +| ir.cpp:2376:9:2376:44 | Address | &:r2376_1 | +| ir.cpp:2376:16:2376:43 | StoreValue | r2376_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 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index aefdbf9d1340..356390f9b4ff 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -20,7 +20,7 @@ multipleIRTypes 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: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() | | 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) | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 671a9f6a0d3c..1ac2a6c9f8aa 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -6825,3717 +6825,3735 @@ ir.cpp: # 1054| v1054_41(void) = AliasedUse : ~m? # 1054| v1054_42(void) = ExitFunction : -# 1079| void RangeBasedFor(vector<int> const&) -# 1079| Block 0 -# 1079| v1079_1(void) = EnterFunction : -# 1079| mu1079_2(unknown) = AliasedDefinition : -# 1079| mu1079_3(unknown) = InitializeNonLocal : -# 1079| r1079_4(glval<vector<int> &>) = VariableAddress[v] : -# 1079| mu1079_5(vector<int> &) = InitializeParameter[v] : &:r1079_4 -# 1079| r1079_6(vector<int> &) = Load[v] : &:r1079_4, ~m? -# 1079| mu1079_7(unknown) = InitializeIndirection[v] : &:r1079_6 -# 1080| r1080_1(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1080| r1080_2(glval<vector<int> &>) = VariableAddress[v] : -# 1080| r1080_3(vector<int> &) = Load[v] : &:r1080_2, ~m? -# 1080| r1080_4(glval<vector<int>>) = CopyValue : r1080_3 -# 1080| r1080_5(vector<int> &) = CopyValue : r1080_4 -# 1080| mu1080_6(vector<int> &) = Store[(__range)] : &:r1080_1, r1080_5 -# 1080| r1080_7(glval<iterator>) = VariableAddress[(__begin)] : -# 1080| r1080_8(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1080| r1080_9(vector<int> &) = Load[(__range)] : &:r1080_8, ~m? -#-----| r0_1(glval<vector<int>>) = CopyValue : r1080_9 -# 1080| r1080_10(glval<unknown>) = FunctionAddress[begin] : -# 1080| r1080_11(iterator) = Call[begin] : func:r1080_10, this:r0_1 -# 1080| mu1080_12(unknown) = ^CallSideEffect : ~m? -#-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m? -# 1080| mu1080_13(iterator) = Store[(__begin)] : &:r1080_7, r1080_11 -# 1080| r1080_14(glval<iterator>) = VariableAddress[(__end)] : -# 1080| r1080_15(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1080| r1080_16(vector<int> &) = Load[(__range)] : &:r1080_15, ~m? -#-----| r0_3(glval<vector<int>>) = CopyValue : r1080_16 -# 1080| r1080_17(glval<unknown>) = FunctionAddress[end] : -# 1080| r1080_18(iterator) = Call[end] : func:r1080_17, this:r0_3 -# 1080| mu1080_19(unknown) = ^CallSideEffect : ~m? -#-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m? -# 1080| mu1080_20(iterator) = Store[(__end)] : &:r1080_14, r1080_18 +# 1126| void RangeBasedFor(std::vector<int> const&) +# 1126| Block 0 +# 1126| v1126_1(void) = EnterFunction : +# 1126| mu1126_2(unknown) = AliasedDefinition : +# 1126| mu1126_3(unknown) = InitializeNonLocal : +# 1126| r1126_4(glval<vector<int> &>) = VariableAddress[v] : +# 1126| mu1126_5(vector<int> &) = InitializeParameter[v] : &:r1126_4 +# 1126| r1126_6(vector<int> &) = Load[v] : &:r1126_4, ~m? +# 1126| mu1126_7(unknown) = InitializeIndirection[v] : &:r1126_6 +# 1127| r1127_1(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_2(glval<vector<int> &>) = VariableAddress[v] : +# 1127| r1127_3(vector<int> &) = Load[v] : &:r1127_2, ~m? +# 1127| r1127_4(glval<vector<int>>) = CopyValue : r1127_3 +# 1127| r1127_5(vector<int> &) = CopyValue : r1127_4 +# 1127| mu1127_6(vector<int> &) = Store[(__range)] : &:r1127_1, r1127_5 +# 1127| r1127_7(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1127| r1127_8(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_9(vector<int> &) = Load[(__range)] : &:r1127_8, ~m? +#-----| r0_1(glval<vector<int>>) = CopyValue : r1127_9 +# 1127| r1127_10(glval<unknown>) = FunctionAddress[begin] : +# 1127| r1127_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1127_10, this:r0_1 +# 1127| mu1127_12(unknown) = ^CallSideEffect : ~m? +#-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m? +# 1127| mu1127_13(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1127_7, r1127_11 +# 1127| r1127_14(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1127| r1127_15(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_16(vector<int> &) = Load[(__range)] : &:r1127_15, ~m? +#-----| r0_3(glval<vector<int>>) = CopyValue : r1127_16 +# 1127| r1127_17(glval<unknown>) = FunctionAddress[end] : +# 1127| r1127_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1127_17, this:r0_3 +# 1127| mu1127_19(unknown) = ^CallSideEffect : ~m? +#-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m? +# 1127| mu1127_20(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1127_14, r1127_18 #-----| Goto -> Block 1 -# 1080| Block 1 -# 1080| r1080_21(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_5(glval<iterator>) = Convert : r1080_21 -# 1080| r1080_22(glval<unknown>) = FunctionAddress[operator!=] : -# 1080| r1080_23(glval<iterator>) = VariableAddress[(__end)] : -# 1080| r1080_24(iterator) = Load[(__end)] : &:r1080_23, ~m? -# 1080| r1080_25(bool) = Call[operator!=] : func:r1080_22, this:r0_5, 0:r1080_24 -# 1080| mu1080_26(unknown) = ^CallSideEffect : ~m? -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 1080| v1080_27(void) = ConditionalBranch : r1080_25 +# 1127| Block 1 +# 1127| r1127_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_5(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_21 +# 1127| r1127_22(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_6(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : +#-----| mu0_7(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_6 +# 1127| r1127_23(glval<unknown>) = FunctionAddress[iterator] : +# 1127| r1127_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_24 +#-----| r0_9(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_8 +# 1127| v1127_25(void) = Call[iterator] : func:r1127_23, this:r0_6, 0:r0_9 +# 1127| mu1127_26(unknown) = ^CallSideEffect : ~m? +#-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_9, ~m? +# 1127| mu1127_27(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +#-----| r0_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_6, ~m? +# 1127| r1127_28(bool) = Call[operator!=] : func:r1127_22, this:r0_5, 0:r0_11 +# 1127| mu1127_29(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? +# 1127| v1127_30(void) = ConditionalBranch : r1127_28 #-----| False -> Block 5 #-----| True -> Block 2 -# 1080| Block 2 -# 1080| r1080_28(glval<int>) = VariableAddress[e] : -# 1080| r1080_29(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator>) = Convert : r1080_29 -# 1080| r1080_30(glval<unknown>) = FunctionAddress[operator*] : -# 1080| r1080_31(int &) = Call[operator*] : func:r1080_30, this:r0_7 -# 1080| mu1080_32(unknown) = ^CallSideEffect : ~m? -#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 1080| r1080_33(int) = Load[?] : &:r1080_31, ~m? -# 1080| mu1080_34(int) = Store[e] : &:r1080_28, r1080_33 -# 1081| r1081_1(glval<int>) = VariableAddress[e] : -# 1081| r1081_2(int) = Load[e] : &:r1081_1, ~m? -# 1081| r1081_3(int) = Constant[0] : -# 1081| r1081_4(bool) = CompareGT : r1081_2, r1081_3 -# 1081| v1081_5(void) = ConditionalBranch : r1081_4 +# 1127| Block 2 +# 1127| r1127_31(glval<int>) = VariableAddress[e] : +# 1127| r1127_32(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_32 +# 1127| r1127_33(glval<unknown>) = FunctionAddress[operator*] : +# 1127| r1127_34(int &) = Call[operator*] : func:r1127_33, this:r0_13 +# 1127| mu1127_35(unknown) = ^CallSideEffect : ~m? +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m? +# 1127| r1127_36(int) = Load[?] : &:r1127_34, ~m? +# 1127| mu1127_37(int) = Store[e] : &:r1127_31, r1127_36 +# 1128| r1128_1(glval<int>) = VariableAddress[e] : +# 1128| r1128_2(int) = Load[e] : &:r1128_1, ~m? +# 1128| r1128_3(int) = Constant[0] : +# 1128| r1128_4(bool) = CompareGT : r1128_2, r1128_3 +# 1128| v1128_5(void) = ConditionalBranch : r1128_4 #-----| False -> Block 4 #-----| True -> Block 3 -# 1082| Block 3 -# 1082| v1082_1(void) = NoOp : +# 1129| Block 3 +# 1129| v1129_1(void) = NoOp : #-----| Goto -> Block 4 -# 1080| Block 4 -# 1080| v1080_35(void) = NoOp : -# 1080| r1080_36(glval<iterator>) = VariableAddress[(__begin)] : -# 1080| r1080_37(glval<unknown>) = FunctionAddress[operator++] : -# 1080| r1080_38(iterator &) = Call[operator++] : func:r1080_37, this:r1080_36 -# 1080| mu1080_39(unknown) = ^CallSideEffect : ~m? -# 1080| v1080_40(void) = ^IndirectReadSideEffect[-1] : &:r1080_36, ~m? -# 1080| mu1080_41(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1080_36 -# 1080| r1080_42(glval<iterator>) = CopyValue : r1080_38 +# 1127| Block 4 +# 1127| v1127_38(void) = NoOp : +# 1127| r1127_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1127| r1127_40(glval<unknown>) = FunctionAddress[operator++] : +# 1127| r1127_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_40, this:r1127_39 +# 1127| mu1127_42(unknown) = ^CallSideEffect : ~m? +# 1127| v1127_43(void) = ^IndirectReadSideEffect[-1] : &:r1127_39, ~m? +# 1127| mu1127_44(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_39 +# 1127| r1127_45(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_41 #-----| Goto (back edge) -> Block 1 -# 1086| Block 5 -# 1086| r1086_1(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1086| r1086_2(glval<vector<int> &>) = VariableAddress[v] : -# 1086| r1086_3(vector<int> &) = Load[v] : &:r1086_2, ~m? -# 1086| r1086_4(glval<vector<int>>) = CopyValue : r1086_3 -# 1086| r1086_5(vector<int> &) = CopyValue : r1086_4 -# 1086| mu1086_6(vector<int> &) = Store[(__range)] : &:r1086_1, r1086_5 -# 1086| r1086_7(glval<iterator>) = VariableAddress[(__begin)] : -# 1086| r1086_8(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1086| r1086_9(vector<int> &) = Load[(__range)] : &:r1086_8, ~m? -#-----| r0_9(glval<vector<int>>) = CopyValue : r1086_9 -# 1086| r1086_10(glval<unknown>) = FunctionAddress[begin] : -# 1086| r1086_11(iterator) = Call[begin] : func:r1086_10, this:r0_9 -# 1086| mu1086_12(unknown) = ^CallSideEffect : ~m? -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m? -# 1086| mu1086_13(iterator) = Store[(__begin)] : &:r1086_7, r1086_11 -# 1086| r1086_14(glval<iterator>) = VariableAddress[(__end)] : -# 1086| r1086_15(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1086| r1086_16(vector<int> &) = Load[(__range)] : &:r1086_15, ~m? -#-----| r0_11(glval<vector<int>>) = CopyValue : r1086_16 -# 1086| r1086_17(glval<unknown>) = FunctionAddress[end] : -# 1086| r1086_18(iterator) = Call[end] : func:r1086_17, this:r0_11 -# 1086| mu1086_19(unknown) = ^CallSideEffect : ~m? -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -# 1086| mu1086_20(iterator) = Store[(__end)] : &:r1086_14, r1086_18 +# 1133| Block 5 +# 1133| r1133_1(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_2(glval<vector<int> &>) = VariableAddress[v] : +# 1133| r1133_3(vector<int> &) = Load[v] : &:r1133_2, ~m? +# 1133| r1133_4(glval<vector<int>>) = CopyValue : r1133_3 +# 1133| r1133_5(vector<int> &) = CopyValue : r1133_4 +# 1133| mu1133_6(vector<int> &) = Store[(__range)] : &:r1133_1, r1133_5 +# 1133| r1133_7(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1133| r1133_8(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_9(vector<int> &) = Load[(__range)] : &:r1133_8, ~m? +#-----| r0_15(glval<vector<int>>) = CopyValue : r1133_9 +# 1133| r1133_10(glval<unknown>) = FunctionAddress[begin] : +# 1133| r1133_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1133_10, this:r0_15 +# 1133| mu1133_12(unknown) = ^CallSideEffect : ~m? +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? +# 1133| mu1133_13(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1133_7, r1133_11 +# 1133| r1133_14(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1133| r1133_15(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_16(vector<int> &) = Load[(__range)] : &:r1133_15, ~m? +#-----| r0_17(glval<vector<int>>) = CopyValue : r1133_16 +# 1133| r1133_17(glval<unknown>) = FunctionAddress[end] : +# 1133| r1133_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1133_17, this:r0_17 +# 1133| mu1133_19(unknown) = ^CallSideEffect : ~m? +#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m? +# 1133| mu1133_20(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1133_14, r1133_18 #-----| Goto -> Block 6 -# 1086| Block 6 -# 1086| r1086_21(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_13(glval<iterator>) = Convert : r1086_21 -# 1086| r1086_22(glval<unknown>) = FunctionAddress[operator!=] : -# 1086| r1086_23(glval<iterator>) = VariableAddress[(__end)] : -# 1086| r1086_24(iterator) = Load[(__end)] : &:r1086_23, ~m? -# 1086| r1086_25(bool) = Call[operator!=] : func:r1086_22, this:r0_13, 0:r1086_24 -# 1086| mu1086_26(unknown) = ^CallSideEffect : ~m? -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m? -# 1086| v1086_27(void) = ConditionalBranch : r1086_25 +# 1133| Block 6 +# 1133| r1133_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_21 +# 1133| r1133_22(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_20(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : +#-----| mu0_21(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_20 +# 1133| r1133_23(glval<unknown>) = FunctionAddress[iterator] : +# 1133| r1133_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_24 +#-----| r0_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_22 +# 1133| v1133_25(void) = Call[iterator] : func:r1133_23, this:r0_20, 0:r0_23 +# 1133| mu1133_26(unknown) = ^CallSideEffect : ~m? +#-----| v0_24(void) = ^BufferReadSideEffect[0] : &:r0_23, ~m? +# 1133| mu1133_27(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 +#-----| r0_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_20, ~m? +# 1133| r1133_28(bool) = Call[operator!=] : func:r1133_22, this:r0_19, 0:r0_25 +# 1133| mu1133_29(unknown) = ^CallSideEffect : ~m? +#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m? +# 1133| v1133_30(void) = ConditionalBranch : r1133_28 #-----| False -> Block 10 #-----| True -> Block 8 -# 1086| Block 7 -# 1086| r1086_28(glval<iterator>) = VariableAddress[(__begin)] : -# 1086| r1086_29(glval<unknown>) = FunctionAddress[operator++] : -# 1086| r1086_30(iterator &) = Call[operator++] : func:r1086_29, this:r1086_28 -# 1086| mu1086_31(unknown) = ^CallSideEffect : ~m? -# 1086| v1086_32(void) = ^IndirectReadSideEffect[-1] : &:r1086_28, ~m? -# 1086| mu1086_33(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1086_28 -# 1086| r1086_34(glval<iterator>) = CopyValue : r1086_30 +# 1133| Block 7 +# 1133| r1133_31(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1133| r1133_32(glval<unknown>) = FunctionAddress[operator++] : +# 1133| r1133_33(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_32, this:r1133_31 +# 1133| mu1133_34(unknown) = ^CallSideEffect : ~m? +# 1133| v1133_35(void) = ^IndirectReadSideEffect[-1] : &:r1133_31, ~m? +# 1133| mu1133_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_31 +# 1133| r1133_37(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_33 #-----| Goto (back edge) -> Block 6 -# 1086| Block 8 -# 1086| r1086_35(glval<int &>) = VariableAddress[e] : -# 1086| r1086_36(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator>) = Convert : r1086_36 -# 1086| r1086_37(glval<unknown>) = FunctionAddress[operator*] : -# 1086| r1086_38(int &) = Call[operator*] : func:r1086_37, this:r0_15 -# 1086| mu1086_39(unknown) = ^CallSideEffect : ~m? -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 1086| r1086_40(glval<int>) = CopyValue : r1086_38 -# 1086| r1086_41(glval<int>) = Convert : r1086_40 -# 1086| r1086_42(int &) = CopyValue : r1086_41 -# 1086| mu1086_43(int &) = Store[e] : &:r1086_35, r1086_42 -# 1087| r1087_1(glval<int &>) = VariableAddress[e] : -# 1087| r1087_2(int &) = Load[e] : &:r1087_1, ~m? -# 1087| r1087_3(int) = Load[?] : &:r1087_2, ~m? -# 1087| r1087_4(int) = Constant[5] : -# 1087| r1087_5(bool) = CompareLT : r1087_3, r1087_4 -# 1087| v1087_6(void) = ConditionalBranch : r1087_5 +# 1133| Block 8 +# 1133| r1133_38(glval<int &>) = VariableAddress[e] : +# 1133| r1133_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_39 +# 1133| r1133_40(glval<unknown>) = FunctionAddress[operator*] : +# 1133| r1133_41(int &) = Call[operator*] : func:r1133_40, this:r0_27 +# 1133| mu1133_42(unknown) = ^CallSideEffect : ~m? +#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? +# 1133| r1133_43(glval<int>) = CopyValue : r1133_41 +# 1133| r1133_44(glval<int>) = Convert : r1133_43 +# 1133| r1133_45(int &) = CopyValue : r1133_44 +# 1133| mu1133_46(int &) = Store[e] : &:r1133_38, r1133_45 +# 1134| r1134_1(glval<int &>) = VariableAddress[e] : +# 1134| r1134_2(int &) = Load[e] : &:r1134_1, ~m? +# 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m? +# 1134| r1134_4(int) = Constant[5] : +# 1134| r1134_5(bool) = CompareLT : r1134_3, r1134_4 +# 1134| v1134_6(void) = ConditionalBranch : r1134_5 #-----| False -> Block 7 #-----| True -> Block 9 -# 1088| Block 9 -# 1088| v1088_1(void) = NoOp : +# 1135| Block 9 +# 1135| v1135_1(void) = NoOp : #-----| Goto -> Block 10 -# 1090| Block 10 -# 1090| v1090_1(void) = NoOp : -# 1091| v1091_1(void) = NoOp : -# 1079| v1079_8(void) = ReturnIndirection[v] : &:r1079_6, ~m? -# 1079| v1079_9(void) = ReturnVoid : -# 1079| v1079_10(void) = AliasedUse : ~m? -# 1079| v1079_11(void) = ExitFunction : - -# 1110| int AsmStmt(int) -# 1110| Block 0 -# 1110| v1110_1(void) = EnterFunction : -# 1110| mu1110_2(unknown) = AliasedDefinition : -# 1110| mu1110_3(unknown) = InitializeNonLocal : -# 1110| r1110_4(glval<int>) = VariableAddress[x] : -# 1110| mu1110_5(int) = InitializeParameter[x] : &:r1110_4 -# 1111| mu1111_1(unknown) = InlineAsm : ~m? -# 1112| r1112_1(glval<int>) = VariableAddress[#return] : -# 1112| r1112_2(glval<int>) = VariableAddress[x] : -# 1112| r1112_3(int) = Load[x] : &:r1112_2, ~m? -# 1112| mu1112_4(int) = Store[#return] : &:r1112_1, r1112_3 -# 1110| r1110_6(glval<int>) = VariableAddress[#return] : -# 1110| v1110_7(void) = ReturnValue : &:r1110_6, ~m? -# 1110| v1110_8(void) = AliasedUse : ~m? -# 1110| v1110_9(void) = ExitFunction : - -# 1115| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) -# 1115| Block 0 -# 1115| v1115_1(void) = EnterFunction : -# 1115| mu1115_2(unknown) = AliasedDefinition : -# 1115| mu1115_3(unknown) = InitializeNonLocal : -# 1115| r1115_4(glval<unsigned int &>) = VariableAddress[a] : -# 1115| mu1115_5(unsigned int &) = InitializeParameter[a] : &:r1115_4 -# 1115| r1115_6(unsigned int &) = Load[a] : &:r1115_4, ~m? -# 1115| mu1115_7(unknown) = InitializeIndirection[a] : &:r1115_6 -# 1115| r1115_8(glval<unsigned int>) = VariableAddress[b] : -# 1115| mu1115_9(unsigned int) = InitializeParameter[b] : &:r1115_8 -# 1115| r1115_10(glval<unsigned int &>) = VariableAddress[c] : -# 1115| mu1115_11(unsigned int &) = InitializeParameter[c] : &:r1115_10 -# 1115| r1115_12(unsigned int &) = Load[c] : &:r1115_10, ~m? -# 1115| mu1115_13(unknown) = InitializeIndirection[c] : &:r1115_12 -# 1115| r1115_14(glval<unsigned int>) = VariableAddress[d] : -# 1115| mu1115_15(unsigned int) = InitializeParameter[d] : &:r1115_14 -# 1120| r1120_1(glval<unsigned int &>) = VariableAddress[a] : -# 1120| r1120_2(unsigned int &) = Load[a] : &:r1120_1, ~m? -# 1120| r1120_3(glval<unsigned int>) = CopyValue : r1120_2 -# 1120| r1120_4(glval<unsigned int>) = VariableAddress[b] : -# 1120| r1120_5(glval<unsigned int &>) = VariableAddress[c] : -# 1120| r1120_6(unsigned int &) = Load[c] : &:r1120_5, ~m? -# 1120| r1120_7(unsigned int) = Load[?] : &:r1120_6, ~m? -# 1120| r1120_8(glval<unsigned int>) = VariableAddress[d] : -# 1120| r1120_9(unsigned int) = Load[d] : &:r1120_8, ~m? -# 1117| mu1117_1(unknown) = InlineAsm : ~m?, 0:r1120_3, 1:r1120_4, 2:r1120_7, 3:r1120_9 -# 1122| v1122_1(void) = NoOp : -# 1115| v1115_16(void) = ReturnIndirection[a] : &:r1115_6, ~m? -# 1115| v1115_17(void) = ReturnIndirection[c] : &:r1115_12, ~m? -# 1115| v1115_18(void) = ReturnVoid : -# 1115| v1115_19(void) = AliasedUse : ~m? -# 1115| v1115_20(void) = ExitFunction : - -# 1124| void ExternDeclarations() -# 1124| Block 0 -# 1124| v1124_1(void) = EnterFunction : -# 1124| mu1124_2(unknown) = AliasedDefinition : -# 1124| mu1124_3(unknown) = InitializeNonLocal : -# 1127| r1127_1(glval<int>) = VariableAddress[x] : -# 1127| mu1127_2(int) = Uninitialized[x] : &:r1127_1 -# 1128| r1128_1(glval<int>) = VariableAddress[y] : -# 1128| mu1128_2(int) = Uninitialized[y] : &:r1128_1 -# 1129| r1129_1(glval<int>) = VariableAddress[h] : -# 1129| mu1129_2(int) = Uninitialized[h] : &:r1129_1 -# 1131| v1131_1(void) = NoOp : -# 1124| v1124_4(void) = ReturnVoid : -# 1124| v1124_5(void) = AliasedUse : ~m? -# 1124| v1124_6(void) = ExitFunction : - -# 1139| void ExternDeclarationsInMacro() -# 1139| Block 0 -# 1139| v1139_1(void) = EnterFunction : -# 1139| mu1139_2(unknown) = AliasedDefinition : -# 1139| mu1139_3(unknown) = InitializeNonLocal : -# 1141| r1141_1(glval<int>) = VariableAddress[i] : -# 1141| r1141_2(int) = Constant[0] : -# 1141| mu1141_3(int) = Store[i] : &:r1141_1, r1141_2 +# 1137| Block 10 +# 1137| v1137_1(void) = NoOp : +# 1138| v1138_1(void) = NoOp : +# 1126| v1126_8(void) = ReturnIndirection[v] : &:r1126_6, ~m? +# 1126| v1126_9(void) = ReturnVoid : +# 1126| v1126_10(void) = AliasedUse : ~m? +# 1126| v1126_11(void) = ExitFunction : + +# 1157| int AsmStmt(int) +# 1157| Block 0 +# 1157| v1157_1(void) = EnterFunction : +# 1157| mu1157_2(unknown) = AliasedDefinition : +# 1157| mu1157_3(unknown) = InitializeNonLocal : +# 1157| r1157_4(glval<int>) = VariableAddress[x] : +# 1157| mu1157_5(int) = InitializeParameter[x] : &:r1157_4 +# 1158| mu1158_1(unknown) = InlineAsm : ~m? +# 1159| r1159_1(glval<int>) = VariableAddress[#return] : +# 1159| r1159_2(glval<int>) = VariableAddress[x] : +# 1159| r1159_3(int) = Load[x] : &:r1159_2, ~m? +# 1159| mu1159_4(int) = Store[#return] : &:r1159_1, r1159_3 +# 1157| r1157_6(glval<int>) = VariableAddress[#return] : +# 1157| v1157_7(void) = ReturnValue : &:r1157_6, ~m? +# 1157| v1157_8(void) = AliasedUse : ~m? +# 1157| v1157_9(void) = ExitFunction : + +# 1162| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) +# 1162| Block 0 +# 1162| v1162_1(void) = EnterFunction : +# 1162| mu1162_2(unknown) = AliasedDefinition : +# 1162| mu1162_3(unknown) = InitializeNonLocal : +# 1162| r1162_4(glval<unsigned int &>) = VariableAddress[a] : +# 1162| mu1162_5(unsigned int &) = InitializeParameter[a] : &:r1162_4 +# 1162| r1162_6(unsigned int &) = Load[a] : &:r1162_4, ~m? +# 1162| mu1162_7(unknown) = InitializeIndirection[a] : &:r1162_6 +# 1162| r1162_8(glval<unsigned int>) = VariableAddress[b] : +# 1162| mu1162_9(unsigned int) = InitializeParameter[b] : &:r1162_8 +# 1162| r1162_10(glval<unsigned int &>) = VariableAddress[c] : +# 1162| mu1162_11(unsigned int &) = InitializeParameter[c] : &:r1162_10 +# 1162| r1162_12(unsigned int &) = Load[c] : &:r1162_10, ~m? +# 1162| mu1162_13(unknown) = InitializeIndirection[c] : &:r1162_12 +# 1162| r1162_14(glval<unsigned int>) = VariableAddress[d] : +# 1162| mu1162_15(unsigned int) = InitializeParameter[d] : &:r1162_14 +# 1167| r1167_1(glval<unsigned int &>) = VariableAddress[a] : +# 1167| r1167_2(unsigned int &) = Load[a] : &:r1167_1, ~m? +# 1167| r1167_3(glval<unsigned int>) = CopyValue : r1167_2 +# 1167| r1167_4(glval<unsigned int>) = VariableAddress[b] : +# 1167| r1167_5(glval<unsigned int &>) = VariableAddress[c] : +# 1167| r1167_6(unsigned int &) = Load[c] : &:r1167_5, ~m? +# 1167| r1167_7(unsigned int) = Load[?] : &:r1167_6, ~m? +# 1167| r1167_8(glval<unsigned int>) = VariableAddress[d] : +# 1167| r1167_9(unsigned int) = Load[d] : &:r1167_8, ~m? +# 1164| mu1164_1(unknown) = InlineAsm : ~m?, 0:r1167_3, 1:r1167_4, 2:r1167_7, 3:r1167_9 +# 1169| v1169_1(void) = NoOp : +# 1162| v1162_16(void) = ReturnIndirection[a] : &:r1162_6, ~m? +# 1162| v1162_17(void) = ReturnIndirection[c] : &:r1162_12, ~m? +# 1162| v1162_18(void) = ReturnVoid : +# 1162| v1162_19(void) = AliasedUse : ~m? +# 1162| v1162_20(void) = ExitFunction : + +# 1171| void ExternDeclarations() +# 1171| Block 0 +# 1171| v1171_1(void) = EnterFunction : +# 1171| mu1171_2(unknown) = AliasedDefinition : +# 1171| mu1171_3(unknown) = InitializeNonLocal : +# 1174| r1174_1(glval<int>) = VariableAddress[x] : +# 1174| mu1174_2(int) = Uninitialized[x] : &:r1174_1 +# 1175| r1175_1(glval<int>) = VariableAddress[y] : +# 1175| mu1175_2(int) = Uninitialized[y] : &:r1175_1 +# 1176| r1176_1(glval<int>) = VariableAddress[h] : +# 1176| mu1176_2(int) = Uninitialized[h] : &:r1176_1 +# 1178| v1178_1(void) = NoOp : +# 1171| v1171_4(void) = ReturnVoid : +# 1171| v1171_5(void) = AliasedUse : ~m? +# 1171| v1171_6(void) = ExitFunction : + +# 1186| void ExternDeclarationsInMacro() +# 1186| Block 0 +# 1186| v1186_1(void) = EnterFunction : +# 1186| mu1186_2(unknown) = AliasedDefinition : +# 1186| mu1186_3(unknown) = InitializeNonLocal : +# 1188| r1188_1(glval<int>) = VariableAddress[i] : +# 1188| r1188_2(int) = Constant[0] : +# 1188| mu1188_3(int) = Store[i] : &:r1188_1, r1188_2 #-----| Goto -> Block 1 -# 1141| Block 1 -# 1141| r1141_4(glval<int>) = VariableAddress[i] : -# 1141| r1141_5(int) = Load[i] : &:r1141_4, ~m? -# 1141| r1141_6(int) = Constant[10] : -# 1141| r1141_7(bool) = CompareLT : r1141_5, r1141_6 -# 1141| v1141_8(void) = ConditionalBranch : r1141_7 +# 1188| Block 1 +# 1188| r1188_4(glval<int>) = VariableAddress[i] : +# 1188| r1188_5(int) = Load[i] : &:r1188_4, ~m? +# 1188| r1188_6(int) = Constant[10] : +# 1188| r1188_7(bool) = CompareLT : r1188_5, r1188_6 +# 1188| v1188_8(void) = ConditionalBranch : r1188_7 #-----| False -> Block 3 #-----| True -> Block 2 -# 1141| Block 2 -# 1141| r1141_9(glval<int>) = VariableAddress[i] : -# 1141| r1141_10(int) = Load[i] : &:r1141_9, ~m? -# 1141| r1141_11(int) = Constant[1] : -# 1141| r1141_12(int) = Add : r1141_10, r1141_11 -# 1141| mu1141_13(int) = Store[i] : &:r1141_9, r1141_12 +# 1188| Block 2 +# 1188| r1188_9(glval<int>) = VariableAddress[i] : +# 1188| r1188_10(int) = Load[i] : &:r1188_9, ~m? +# 1188| r1188_11(int) = Constant[1] : +# 1188| r1188_12(int) = Add : r1188_10, r1188_11 +# 1188| mu1188_13(int) = Store[i] : &:r1188_9, r1188_12 #-----| Goto (back edge) -> Block 1 -# 1141| Block 3 -# 1141| v1141_14(void) = NoOp : -# 1142| v1142_1(void) = NoOp : -# 1139| v1139_4(void) = ReturnVoid : -# 1139| v1139_5(void) = AliasedUse : ~m? -# 1139| v1139_6(void) = ExitFunction : - -# 1144| void TryCatchNoCatchAny(bool) -# 1144| Block 0 -# 1144| v1144_1(void) = EnterFunction : -# 1144| mu1144_2(unknown) = AliasedDefinition : -# 1144| mu1144_3(unknown) = InitializeNonLocal : -# 1144| r1144_4(glval<bool>) = VariableAddress[b] : -# 1144| mu1144_5(bool) = InitializeParameter[b] : &:r1144_4 -# 1146| r1146_1(glval<int>) = VariableAddress[x] : -# 1146| r1146_2(int) = Constant[5] : -# 1146| mu1146_3(int) = Store[x] : &:r1146_1, r1146_2 -# 1147| r1147_1(glval<bool>) = VariableAddress[b] : -# 1147| r1147_2(bool) = Load[b] : &:r1147_1, ~m? -# 1147| v1147_3(void) = ConditionalBranch : r1147_2 +# 1188| Block 3 +# 1188| v1188_14(void) = NoOp : +# 1189| v1189_1(void) = NoOp : +# 1186| v1186_4(void) = ReturnVoid : +# 1186| v1186_5(void) = AliasedUse : ~m? +# 1186| v1186_6(void) = ExitFunction : + +# 1191| void TryCatchNoCatchAny(bool) +# 1191| Block 0 +# 1191| v1191_1(void) = EnterFunction : +# 1191| mu1191_2(unknown) = AliasedDefinition : +# 1191| mu1191_3(unknown) = InitializeNonLocal : +# 1191| r1191_4(glval<bool>) = VariableAddress[b] : +# 1191| mu1191_5(bool) = InitializeParameter[b] : &:r1191_4 +# 1193| r1193_1(glval<int>) = VariableAddress[x] : +# 1193| r1193_2(int) = Constant[5] : +# 1193| mu1193_3(int) = Store[x] : &:r1193_1, r1193_2 +# 1194| r1194_1(glval<bool>) = VariableAddress[b] : +# 1194| r1194_2(bool) = Load[b] : &:r1194_1, ~m? +# 1194| v1194_3(void) = ConditionalBranch : r1194_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 1144| Block 1 -# 1144| v1144_6(void) = AliasedUse : ~m? -# 1144| v1144_7(void) = ExitFunction : +# 1191| Block 1 +# 1191| v1191_6(void) = AliasedUse : ~m? +# 1191| v1191_7(void) = ExitFunction : -# 1144| Block 2 -# 1144| v1144_8(void) = Unwind : +# 1191| Block 2 +# 1191| v1191_8(void) = Unwind : #-----| Goto -> Block 1 -# 1148| Block 3 -# 1148| r1148_1(glval<char *>) = VariableAddress[#throw1148:7] : -# 1148| r1148_2(glval<char[15]>) = StringConstant["string literal"] : -# 1148| r1148_3(char *) = Convert : r1148_2 -# 1148| mu1148_4(char *) = Store[#throw1148:7] : &:r1148_1, r1148_3 -# 1148| v1148_5(void) = ThrowValue : &:r1148_1, ~m? +# 1195| Block 3 +# 1195| r1195_1(glval<char *>) = VariableAddress[#throw1195:7] : +# 1195| r1195_2(glval<char[15]>) = StringConstant["string literal"] : +# 1195| r1195_3(char *) = Convert : r1195_2 +# 1195| mu1195_4(char *) = Store[#throw1195:7] : &:r1195_1, r1195_3 +# 1195| v1195_5(void) = ThrowValue : &:r1195_1, ~m? #-----| Exception -> Block 9 -# 1150| Block 4 -# 1150| r1150_1(glval<int>) = VariableAddress[x] : -# 1150| r1150_2(int) = Load[x] : &:r1150_1, ~m? -# 1150| r1150_3(int) = Constant[2] : -# 1150| r1150_4(bool) = CompareLT : r1150_2, r1150_3 -# 1150| v1150_5(void) = ConditionalBranch : r1150_4 +# 1197| Block 4 +# 1197| r1197_1(glval<int>) = VariableAddress[x] : +# 1197| r1197_2(int) = Load[x] : &:r1197_1, ~m? +# 1197| r1197_3(int) = Constant[2] : +# 1197| r1197_4(bool) = CompareLT : r1197_2, r1197_3 +# 1197| v1197_5(void) = ConditionalBranch : r1197_4 #-----| False -> Block 8 #-----| True -> Block 5 -# 1151| Block 5 -# 1151| r1151_1(glval<bool>) = VariableAddress[b] : -# 1151| r1151_2(bool) = Load[b] : &:r1151_1, ~m? -# 1151| v1151_3(void) = ConditionalBranch : r1151_2 +# 1198| Block 5 +# 1198| r1198_1(glval<bool>) = VariableAddress[b] : +# 1198| r1198_2(bool) = Load[b] : &:r1198_1, ~m? +# 1198| v1198_3(void) = ConditionalBranch : r1198_2 #-----| False -> Block 7 #-----| True -> Block 6 -# 1151| Block 6 -# 1151| r1151_4(int) = Constant[7] : -# 1151| r1151_5(glval<int>) = VariableAddress[#temp1151:11] : -# 1151| mu1151_6(int) = Store[#temp1151:11] : &:r1151_5, r1151_4 -# 1151| r1151_7(glval<int>) = VariableAddress[#temp1151:11] : -# 1151| r1151_8(int) = Load[#temp1151:11] : &:r1151_7, ~m? -# 1151| r1151_9(glval<int>) = VariableAddress[x] : -# 1151| mu1151_10(int) = Store[x] : &:r1151_9, r1151_8 +# 1198| Block 6 +# 1198| r1198_4(int) = Constant[7] : +# 1198| r1198_5(glval<int>) = VariableAddress[#temp1198:11] : +# 1198| mu1198_6(int) = Store[#temp1198:11] : &:r1198_5, r1198_4 +# 1198| r1198_7(glval<int>) = VariableAddress[#temp1198:11] : +# 1198| r1198_8(int) = Load[#temp1198:11] : &:r1198_7, ~m? +# 1198| r1198_9(glval<int>) = VariableAddress[x] : +# 1198| mu1198_10(int) = Store[x] : &:r1198_9, r1198_8 #-----| Goto -> Block 8 -# 1151| Block 7 -# 1151| r1151_11(glval<String>) = VariableAddress[#throw1151:19] : -# 1151| mu1151_12(String) = Uninitialized[#throw1151:19] : &:r1151_11 -# 1151| r1151_13(glval<unknown>) = FunctionAddress[String] : -# 1151| r1151_14(glval<char[14]>) = StringConstant["String object"] : -# 1151| r1151_15(char *) = Convert : r1151_14 -# 1151| v1151_16(void) = Call[String] : func:r1151_13, this:r1151_11, 0:r1151_15 -# 1151| mu1151_17(unknown) = ^CallSideEffect : ~m? -# 1151| v1151_18(void) = ^BufferReadSideEffect[0] : &:r1151_15, ~m? -# 1151| mu1151_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1151_11 -# 1151| v1151_20(void) = ThrowValue : &:r1151_11, ~m? +# 1198| Block 7 +# 1198| r1198_11(glval<String>) = VariableAddress[#throw1198:19] : +# 1198| mu1198_12(String) = Uninitialized[#throw1198:19] : &:r1198_11 +# 1198| r1198_13(glval<unknown>) = FunctionAddress[String] : +# 1198| r1198_14(glval<char[14]>) = StringConstant["String object"] : +# 1198| r1198_15(char *) = Convert : r1198_14 +# 1198| v1198_16(void) = Call[String] : func:r1198_13, this:r1198_11, 0:r1198_15 +# 1198| mu1198_17(unknown) = ^CallSideEffect : ~m? +# 1198| v1198_18(void) = ^BufferReadSideEffect[0] : &:r1198_15, ~m? +# 1198| mu1198_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1198_11 +# 1198| v1198_20(void) = ThrowValue : &:r1198_11, ~m? #-----| Exception -> Block 9 -# 1153| Block 8 -# 1153| r1153_1(int) = Constant[7] : -# 1153| r1153_2(glval<int>) = VariableAddress[x] : -# 1153| mu1153_3(int) = Store[x] : &:r1153_2, r1153_1 +# 1200| Block 8 +# 1200| r1200_1(int) = Constant[7] : +# 1200| r1200_2(glval<int>) = VariableAddress[x] : +# 1200| mu1200_3(int) = Store[x] : &:r1200_2, r1200_1 #-----| Goto -> Block 13 -# 1155| Block 9 -# 1155| v1155_1(void) = CatchByType[const char *] : +# 1202| Block 9 +# 1202| v1202_1(void) = CatchByType[const char *] : #-----| Exception -> Block 11 #-----| Goto -> Block 10 -# 1155| Block 10 -# 1155| r1155_2(glval<char *>) = VariableAddress[s] : -# 1155| mu1155_3(char *) = InitializeParameter[s] : &:r1155_2 -# 1155| r1155_4(char *) = Load[s] : &:r1155_2, ~m? -# 1155| mu1155_5(unknown) = InitializeIndirection[s] : &:r1155_4 -# 1156| r1156_1(glval<String>) = VariableAddress[#throw1156:5] : -# 1156| mu1156_2(String) = Uninitialized[#throw1156:5] : &:r1156_1 -# 1156| r1156_3(glval<unknown>) = FunctionAddress[String] : -# 1156| r1156_4(glval<char *>) = VariableAddress[s] : -# 1156| r1156_5(char *) = Load[s] : &:r1156_4, ~m? -# 1156| v1156_6(void) = Call[String] : func:r1156_3, this:r1156_1, 0:r1156_5 -# 1156| mu1156_7(unknown) = ^CallSideEffect : ~m? -# 1156| v1156_8(void) = ^BufferReadSideEffect[0] : &:r1156_5, ~m? -# 1156| mu1156_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1156_1 -# 1156| v1156_10(void) = ThrowValue : &:r1156_1, ~m? +# 1202| Block 10 +# 1202| r1202_2(glval<char *>) = VariableAddress[s] : +# 1202| mu1202_3(char *) = InitializeParameter[s] : &:r1202_2 +# 1202| r1202_4(char *) = Load[s] : &:r1202_2, ~m? +# 1202| mu1202_5(unknown) = InitializeIndirection[s] : &:r1202_4 +# 1203| r1203_1(glval<String>) = VariableAddress[#throw1203:5] : +# 1203| mu1203_2(String) = Uninitialized[#throw1203:5] : &:r1203_1 +# 1203| r1203_3(glval<unknown>) = FunctionAddress[String] : +# 1203| r1203_4(glval<char *>) = VariableAddress[s] : +# 1203| r1203_5(char *) = Load[s] : &:r1203_4, ~m? +# 1203| v1203_6(void) = Call[String] : func:r1203_3, this:r1203_1, 0:r1203_5 +# 1203| mu1203_7(unknown) = ^CallSideEffect : ~m? +# 1203| v1203_8(void) = ^BufferReadSideEffect[0] : &:r1203_5, ~m? +# 1203| mu1203_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1203_1 +# 1203| v1203_10(void) = ThrowValue : &:r1203_1, ~m? #-----| Exception -> Block 2 -# 1158| Block 11 -# 1158| v1158_1(void) = CatchByType[const String &] : +# 1205| Block 11 +# 1205| v1205_1(void) = CatchByType[const String &] : #-----| Exception -> Block 2 #-----| Goto -> Block 12 -# 1158| Block 12 -# 1158| r1158_2(glval<String &>) = VariableAddress[e] : -# 1158| mu1158_3(String &) = InitializeParameter[e] : &:r1158_2 -# 1158| r1158_4(String &) = Load[e] : &:r1158_2, ~m? -# 1158| mu1158_5(unknown) = InitializeIndirection[e] : &:r1158_4 -# 1158| v1158_6(void) = NoOp : +# 1205| Block 12 +# 1205| r1205_2(glval<String &>) = VariableAddress[e] : +# 1205| mu1205_3(String &) = InitializeParameter[e] : &:r1205_2 +# 1205| r1205_4(String &) = Load[e] : &:r1205_2, ~m? +# 1205| mu1205_5(unknown) = InitializeIndirection[e] : &:r1205_4 +# 1205| v1205_6(void) = NoOp : #-----| Goto -> Block 13 -# 1160| Block 13 -# 1160| v1160_1(void) = NoOp : -# 1144| v1144_9(void) = ReturnVoid : +# 1207| Block 13 +# 1207| v1207_1(void) = NoOp : +# 1191| v1191_9(void) = ReturnVoid : #-----| Goto -> Block 1 -# 1164| void VectorTypes(int) -# 1164| Block 0 -# 1164| v1164_1(void) = EnterFunction : -# 1164| mu1164_2(unknown) = AliasedDefinition : -# 1164| mu1164_3(unknown) = InitializeNonLocal : -# 1164| r1164_4(glval<int>) = VariableAddress[i] : -# 1164| mu1164_5(int) = InitializeParameter[i] : &:r1164_4 -# 1165| r1165_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1165| mu1165_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1165_1 -# 1165| r1165_3(int) = Constant[0] : -# 1165| r1165_4(glval<int>) = PointerAdd[4] : r1165_1, r1165_3 -# 1165| r1165_5(int) = Constant[0] : -# 1165| mu1165_6(int) = Store[?] : &:r1165_4, r1165_5 -# 1165| r1165_7(int) = Constant[1] : -# 1165| r1165_8(glval<int>) = PointerAdd[4] : r1165_1, r1165_7 -# 1165| r1165_9(int) = Constant[1] : -# 1165| mu1165_10(int) = Store[?] : &:r1165_8, r1165_9 -# 1165| r1165_11(int) = Constant[2] : -# 1165| r1165_12(glval<int>) = PointerAdd[4] : r1165_1, r1165_11 -# 1165| r1165_13(int) = Constant[2] : -# 1165| mu1165_14(int) = Store[?] : &:r1165_12, r1165_13 -# 1165| r1165_15(int) = Constant[3] : -# 1165| r1165_16(glval<int>) = PointerAdd[4] : r1165_1, r1165_15 -# 1165| r1165_17(int) = Constant[3] : -# 1165| mu1165_18(int) = Store[?] : &:r1165_16, r1165_17 -# 1166| r1166_1(glval<int>) = VariableAddress[x] : -# 1166| r1166_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1166| r1166_3(glval<int>) = VariableAddress[i] : -# 1166| r1166_4(int) = Load[i] : &:r1166_3, ~m? -# 1166| r1166_5(glval<int>) = PointerAdd[4] : r1166_2, r1166_4 -# 1166| r1166_6(int) = Load[?] : &:r1166_5, ~m? -# 1166| mu1166_7(int) = Store[x] : &:r1166_1, r1166_6 -# 1167| r1167_1(glval<int>) = VariableAddress[x] : -# 1167| r1167_2(int) = Load[x] : &:r1167_1, ~m? -# 1167| r1167_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1167| r1167_4(glval<int>) = VariableAddress[i] : -# 1167| r1167_5(int) = Load[i] : &:r1167_4, ~m? -# 1167| r1167_6(glval<int>) = PointerAdd[4] : r1167_3, r1167_5 -# 1167| mu1167_7(int) = Store[?] : &:r1167_6, r1167_2 -# 1168| r1168_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1168| r1168_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1168| r1168_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_2, ~m? -# 1168| r1168_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1168| r1168_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1168_4, ~m? -# 1168| r1168_6(int) = Constant[3] : -# 1168| r1168_7(int) = Constant[2] : -# 1168| r1168_8(int) = Constant[1] : -# 1168| r1168_9(int) = Constant[0] : -# 1168| r1168_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1168_3, 1:r1168_5, 2:r1168_6, 3:r1168_7, 4:r1168_8, 5:r1168_9 -# 1168| mu1168_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1168_1, r1168_10 -# 1169| r1169_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1169| r1169_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1169_1, ~m? -# 1169| r1169_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1169| r1169_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1169_3, ~m? -# 1169| r1169_5(__attribute((vector_size(16UL))) int) = Add : r1169_2, r1169_4 -# 1169| r1169_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1169| mu1169_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1169_6, r1169_5 -# 1170| v1170_1(void) = NoOp : -# 1164| v1164_6(void) = ReturnVoid : -# 1164| v1164_7(void) = AliasedUse : ~m? -# 1164| v1164_8(void) = ExitFunction : - -# 1174| int ModeledCallTarget(int) -# 1174| Block 0 -# 1174| v1174_1(void) = EnterFunction : -# 1174| mu1174_2(unknown) = AliasedDefinition : -# 1174| mu1174_3(unknown) = InitializeNonLocal : -# 1174| r1174_4(glval<int>) = VariableAddress[x] : -# 1174| mu1174_5(int) = InitializeParameter[x] : &:r1174_4 -# 1175| r1175_1(glval<int>) = VariableAddress[y] : -# 1175| mu1175_2(int) = Uninitialized[y] : &:r1175_1 -# 1176| r1176_1(glval<unknown>) = FunctionAddress[memcpy] : -# 1176| r1176_2(glval<int>) = VariableAddress[y] : -# 1176| r1176_3(int *) = CopyValue : r1176_2 -# 1176| r1176_4(void *) = Convert : r1176_3 -# 1176| r1176_5(glval<int>) = VariableAddress[x] : -# 1176| r1176_6(int *) = CopyValue : r1176_5 -# 1176| r1176_7(void *) = Convert : r1176_6 -# 1176| r1176_8(int) = Constant[4] : -# 1176| r1176_9(void *) = Call[memcpy] : func:r1176_1, 0:r1176_4, 1:r1176_7, 2:r1176_8 -# 1176| v1176_10(void) = ^SizedBufferReadSideEffect[1] : &:r1176_7, r1176_8, ~m? -# 1176| mu1176_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1176_4, r1176_8 -# 1177| r1177_1(glval<int>) = VariableAddress[#return] : -# 1177| r1177_2(glval<int>) = VariableAddress[y] : -# 1177| r1177_3(int) = Load[y] : &:r1177_2, ~m? -# 1177| mu1177_4(int) = Store[#return] : &:r1177_1, r1177_3 -# 1174| r1174_6(glval<int>) = VariableAddress[#return] : -# 1174| v1174_7(void) = ReturnValue : &:r1174_6, ~m? -# 1174| v1174_8(void) = AliasedUse : ~m? -# 1174| v1174_9(void) = ExitFunction : - -# 1180| String ReturnObjectImpl() -# 1180| Block 0 -# 1180| v1180_1(void) = EnterFunction : -# 1180| mu1180_2(unknown) = AliasedDefinition : -# 1180| mu1180_3(unknown) = InitializeNonLocal : -# 1181| r1181_1(glval<String>) = VariableAddress[#return] : -# 1181| mu1181_2(String) = Uninitialized[#return] : &:r1181_1 -# 1181| r1181_3(glval<unknown>) = FunctionAddress[String] : -# 1181| r1181_4(glval<char[4]>) = StringConstant["foo"] : -# 1181| r1181_5(char *) = Convert : r1181_4 -# 1181| v1181_6(void) = Call[String] : func:r1181_3, this:r1181_1, 0:r1181_5 -# 1181| mu1181_7(unknown) = ^CallSideEffect : ~m? -# 1181| v1181_8(void) = ^BufferReadSideEffect[0] : &:r1181_5, ~m? -# 1181| mu1181_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1181_1 -# 1180| r1180_4(glval<String>) = VariableAddress[#return] : -# 1180| v1180_5(void) = ReturnValue : &:r1180_4, ~m? -# 1180| v1180_6(void) = AliasedUse : ~m? -# 1180| v1180_7(void) = ExitFunction : - -# 1184| void switch1Case(int) -# 1184| Block 0 -# 1184| v1184_1(void) = EnterFunction : -# 1184| mu1184_2(unknown) = AliasedDefinition : -# 1184| mu1184_3(unknown) = InitializeNonLocal : -# 1184| r1184_4(glval<int>) = VariableAddress[x] : -# 1184| mu1184_5(int) = InitializeParameter[x] : &:r1184_4 -# 1185| r1185_1(glval<int>) = VariableAddress[y] : -# 1185| r1185_2(int) = Constant[0] : -# 1185| mu1185_3(int) = Store[y] : &:r1185_1, r1185_2 -# 1186| r1186_1(glval<int>) = VariableAddress[x] : -# 1186| r1186_2(int) = Load[x] : &:r1186_1, ~m? -# 1186| v1186_3(void) = Switch : r1186_2 +# 1211| void VectorTypes(int) +# 1211| Block 0 +# 1211| v1211_1(void) = EnterFunction : +# 1211| mu1211_2(unknown) = AliasedDefinition : +# 1211| mu1211_3(unknown) = InitializeNonLocal : +# 1211| r1211_4(glval<int>) = VariableAddress[i] : +# 1211| mu1211_5(int) = InitializeParameter[i] : &:r1211_4 +# 1212| r1212_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1212| mu1212_2(__attribute((vector_size(16UL))) int) = Uninitialized[vi4] : &:r1212_1 +# 1212| r1212_3(int) = Constant[0] : +# 1212| r1212_4(glval<int>) = PointerAdd[4] : r1212_1, r1212_3 +# 1212| r1212_5(int) = Constant[0] : +# 1212| mu1212_6(int) = Store[?] : &:r1212_4, r1212_5 +# 1212| r1212_7(int) = Constant[1] : +# 1212| r1212_8(glval<int>) = PointerAdd[4] : r1212_1, r1212_7 +# 1212| r1212_9(int) = Constant[1] : +# 1212| mu1212_10(int) = Store[?] : &:r1212_8, r1212_9 +# 1212| r1212_11(int) = Constant[2] : +# 1212| r1212_12(glval<int>) = PointerAdd[4] : r1212_1, r1212_11 +# 1212| r1212_13(int) = Constant[2] : +# 1212| mu1212_14(int) = Store[?] : &:r1212_12, r1212_13 +# 1212| r1212_15(int) = Constant[3] : +# 1212| r1212_16(glval<int>) = PointerAdd[4] : r1212_1, r1212_15 +# 1212| r1212_17(int) = Constant[3] : +# 1212| mu1212_18(int) = Store[?] : &:r1212_16, r1212_17 +# 1213| r1213_1(glval<int>) = VariableAddress[x] : +# 1213| r1213_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1213| r1213_3(glval<int>) = VariableAddress[i] : +# 1213| r1213_4(int) = Load[i] : &:r1213_3, ~m? +# 1213| r1213_5(glval<int>) = PointerAdd[4] : r1213_2, r1213_4 +# 1213| r1213_6(int) = Load[?] : &:r1213_5, ~m? +# 1213| mu1213_7(int) = Store[x] : &:r1213_1, r1213_6 +# 1214| r1214_1(glval<int>) = VariableAddress[x] : +# 1214| r1214_2(int) = Load[x] : &:r1214_1, ~m? +# 1214| r1214_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1214| r1214_4(glval<int>) = VariableAddress[i] : +# 1214| r1214_5(int) = Load[i] : &:r1214_4, ~m? +# 1214| r1214_6(glval<int>) = PointerAdd[4] : r1214_3, r1214_5 +# 1214| mu1214_7(int) = Store[?] : &:r1214_6, r1214_2 +# 1215| r1215_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1215| r1215_2(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1215| r1215_3(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_2, ~m? +# 1215| r1215_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1215| r1215_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_4, ~m? +# 1215| r1215_6(int) = Constant[3] : +# 1215| r1215_7(int) = Constant[2] : +# 1215| r1215_8(int) = Constant[1] : +# 1215| r1215_9(int) = Constant[0] : +# 1215| r1215_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_6, 3:r1215_7, 4:r1215_8, 5:r1215_9 +# 1215| mu1215_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_10 +# 1216| r1216_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1216| r1216_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1216_1, ~m? +# 1216| r1216_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1216| r1216_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1216_3, ~m? +# 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 +# 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1216| mu1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 +# 1217| v1217_1(void) = NoOp : +# 1211| v1211_6(void) = ReturnVoid : +# 1211| v1211_7(void) = AliasedUse : ~m? +# 1211| v1211_8(void) = ExitFunction : + +# 1221| int ModeledCallTarget(int) +# 1221| Block 0 +# 1221| v1221_1(void) = EnterFunction : +# 1221| mu1221_2(unknown) = AliasedDefinition : +# 1221| mu1221_3(unknown) = InitializeNonLocal : +# 1221| r1221_4(glval<int>) = VariableAddress[x] : +# 1221| mu1221_5(int) = InitializeParameter[x] : &:r1221_4 +# 1222| r1222_1(glval<int>) = VariableAddress[y] : +# 1222| mu1222_2(int) = Uninitialized[y] : &:r1222_1 +# 1223| r1223_1(glval<unknown>) = FunctionAddress[memcpy] : +# 1223| r1223_2(glval<int>) = VariableAddress[y] : +# 1223| r1223_3(int *) = CopyValue : r1223_2 +# 1223| r1223_4(void *) = Convert : r1223_3 +# 1223| r1223_5(glval<int>) = VariableAddress[x] : +# 1223| r1223_6(int *) = CopyValue : r1223_5 +# 1223| r1223_7(void *) = Convert : r1223_6 +# 1223| r1223_8(int) = Constant[4] : +# 1223| r1223_9(void *) = Call[memcpy] : func:r1223_1, 0:r1223_4, 1:r1223_7, 2:r1223_8 +# 1223| v1223_10(void) = ^SizedBufferReadSideEffect[1] : &:r1223_7, r1223_8, ~m? +# 1223| mu1223_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1223_4, r1223_8 +# 1224| r1224_1(glval<int>) = VariableAddress[#return] : +# 1224| r1224_2(glval<int>) = VariableAddress[y] : +# 1224| r1224_3(int) = Load[y] : &:r1224_2, ~m? +# 1224| mu1224_4(int) = Store[#return] : &:r1224_1, r1224_3 +# 1221| r1221_6(glval<int>) = VariableAddress[#return] : +# 1221| v1221_7(void) = ReturnValue : &:r1221_6, ~m? +# 1221| v1221_8(void) = AliasedUse : ~m? +# 1221| v1221_9(void) = ExitFunction : + +# 1227| String ReturnObjectImpl() +# 1227| Block 0 +# 1227| v1227_1(void) = EnterFunction : +# 1227| mu1227_2(unknown) = AliasedDefinition : +# 1227| mu1227_3(unknown) = InitializeNonLocal : +# 1228| r1228_1(glval<String>) = VariableAddress[#return] : +# 1228| mu1228_2(String) = Uninitialized[#return] : &:r1228_1 +# 1228| r1228_3(glval<unknown>) = FunctionAddress[String] : +# 1228| r1228_4(glval<char[4]>) = StringConstant["foo"] : +# 1228| r1228_5(char *) = Convert : r1228_4 +# 1228| v1228_6(void) = Call[String] : func:r1228_3, this:r1228_1, 0:r1228_5 +# 1228| mu1228_7(unknown) = ^CallSideEffect : ~m? +# 1228| v1228_8(void) = ^BufferReadSideEffect[0] : &:r1228_5, ~m? +# 1228| mu1228_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1228_1 +# 1227| r1227_4(glval<String>) = VariableAddress[#return] : +# 1227| v1227_5(void) = ReturnValue : &:r1227_4, ~m? +# 1227| v1227_6(void) = AliasedUse : ~m? +# 1227| v1227_7(void) = ExitFunction : + +# 1231| void switch1Case(int) +# 1231| Block 0 +# 1231| v1231_1(void) = EnterFunction : +# 1231| mu1231_2(unknown) = AliasedDefinition : +# 1231| mu1231_3(unknown) = InitializeNonLocal : +# 1231| r1231_4(glval<int>) = VariableAddress[x] : +# 1231| mu1231_5(int) = InitializeParameter[x] : &:r1231_4 +# 1232| r1232_1(glval<int>) = VariableAddress[y] : +# 1232| r1232_2(int) = Constant[0] : +# 1232| mu1232_3(int) = Store[y] : &:r1232_1, r1232_2 +# 1233| r1233_1(glval<int>) = VariableAddress[x] : +# 1233| r1233_2(int) = Load[x] : &:r1233_1, ~m? +# 1233| v1233_3(void) = Switch : r1233_2 #-----| Case[1] -> Block 1 #-----| Default -> Block 2 -# 1187| Block 1 -# 1187| v1187_1(void) = NoOp : -# 1188| r1188_1(int) = Constant[2] : -# 1188| r1188_2(glval<int>) = VariableAddress[y] : -# 1188| mu1188_3(int) = Store[y] : &:r1188_2, r1188_1 +# 1234| Block 1 +# 1234| v1234_1(void) = NoOp : +# 1235| r1235_1(int) = Constant[2] : +# 1235| r1235_2(glval<int>) = VariableAddress[y] : +# 1235| mu1235_3(int) = Store[y] : &:r1235_2, r1235_1 #-----| Goto -> Block 2 -# 1190| Block 2 -# 1190| r1190_1(glval<int>) = VariableAddress[z] : -# 1190| r1190_2(glval<int>) = VariableAddress[y] : -# 1190| r1190_3(int) = Load[y] : &:r1190_2, ~m? -# 1190| mu1190_4(int) = Store[z] : &:r1190_1, r1190_3 -# 1191| v1191_1(void) = NoOp : -# 1184| v1184_6(void) = ReturnVoid : -# 1184| v1184_7(void) = AliasedUse : ~m? -# 1184| v1184_8(void) = ExitFunction : - -# 1193| void switch2Case_fallthrough(int) -# 1193| Block 0 -# 1193| v1193_1(void) = EnterFunction : -# 1193| mu1193_2(unknown) = AliasedDefinition : -# 1193| mu1193_3(unknown) = InitializeNonLocal : -# 1193| r1193_4(glval<int>) = VariableAddress[x] : -# 1193| mu1193_5(int) = InitializeParameter[x] : &:r1193_4 -# 1194| r1194_1(glval<int>) = VariableAddress[y] : -# 1194| r1194_2(int) = Constant[0] : -# 1194| mu1194_3(int) = Store[y] : &:r1194_1, r1194_2 -# 1195| r1195_1(glval<int>) = VariableAddress[x] : -# 1195| r1195_2(int) = Load[x] : &:r1195_1, ~m? -# 1195| v1195_3(void) = Switch : r1195_2 +# 1237| Block 2 +# 1237| r1237_1(glval<int>) = VariableAddress[z] : +# 1237| r1237_2(glval<int>) = VariableAddress[y] : +# 1237| r1237_3(int) = Load[y] : &:r1237_2, ~m? +# 1237| mu1237_4(int) = Store[z] : &:r1237_1, r1237_3 +# 1238| v1238_1(void) = NoOp : +# 1231| v1231_6(void) = ReturnVoid : +# 1231| v1231_7(void) = AliasedUse : ~m? +# 1231| v1231_8(void) = ExitFunction : + +# 1240| void switch2Case_fallthrough(int) +# 1240| Block 0 +# 1240| v1240_1(void) = EnterFunction : +# 1240| mu1240_2(unknown) = AliasedDefinition : +# 1240| mu1240_3(unknown) = InitializeNonLocal : +# 1240| r1240_4(glval<int>) = VariableAddress[x] : +# 1240| mu1240_5(int) = InitializeParameter[x] : &:r1240_4 +# 1241| r1241_1(glval<int>) = VariableAddress[y] : +# 1241| r1241_2(int) = Constant[0] : +# 1241| mu1241_3(int) = Store[y] : &:r1241_1, r1241_2 +# 1242| r1242_1(glval<int>) = VariableAddress[x] : +# 1242| r1242_2(int) = Load[x] : &:r1242_1, ~m? +# 1242| v1242_3(void) = Switch : r1242_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1196| Block 1 -# 1196| v1196_1(void) = NoOp : -# 1197| r1197_1(int) = Constant[2] : -# 1197| r1197_2(glval<int>) = VariableAddress[y] : -# 1197| mu1197_3(int) = Store[y] : &:r1197_2, r1197_1 +# 1243| Block 1 +# 1243| v1243_1(void) = NoOp : +# 1244| r1244_1(int) = Constant[2] : +# 1244| r1244_2(glval<int>) = VariableAddress[y] : +# 1244| mu1244_3(int) = Store[y] : &:r1244_2, r1244_1 #-----| Goto -> Block 2 -# 1198| Block 2 -# 1198| v1198_1(void) = NoOp : -# 1199| r1199_1(int) = Constant[3] : -# 1199| r1199_2(glval<int>) = VariableAddress[y] : -# 1199| mu1199_3(int) = Store[y] : &:r1199_2, r1199_1 +# 1245| Block 2 +# 1245| v1245_1(void) = NoOp : +# 1246| r1246_1(int) = Constant[3] : +# 1246| r1246_2(glval<int>) = VariableAddress[y] : +# 1246| mu1246_3(int) = Store[y] : &:r1246_2, r1246_1 #-----| Goto -> Block 3 -# 1201| Block 3 -# 1201| r1201_1(glval<int>) = VariableAddress[z] : -# 1201| r1201_2(glval<int>) = VariableAddress[y] : -# 1201| r1201_3(int) = Load[y] : &:r1201_2, ~m? -# 1201| mu1201_4(int) = Store[z] : &:r1201_1, r1201_3 -# 1202| v1202_1(void) = NoOp : -# 1193| v1193_6(void) = ReturnVoid : -# 1193| v1193_7(void) = AliasedUse : ~m? -# 1193| v1193_8(void) = ExitFunction : - -# 1204| void switch2Case(int) -# 1204| Block 0 -# 1204| v1204_1(void) = EnterFunction : -# 1204| mu1204_2(unknown) = AliasedDefinition : -# 1204| mu1204_3(unknown) = InitializeNonLocal : -# 1204| r1204_4(glval<int>) = VariableAddress[x] : -# 1204| mu1204_5(int) = InitializeParameter[x] : &:r1204_4 -# 1205| r1205_1(glval<int>) = VariableAddress[y] : -# 1205| r1205_2(int) = Constant[0] : -# 1205| mu1205_3(int) = Store[y] : &:r1205_1, r1205_2 -# 1206| r1206_1(glval<int>) = VariableAddress[x] : -# 1206| r1206_2(int) = Load[x] : &:r1206_1, ~m? -# 1206| v1206_3(void) = Switch : r1206_2 +# 1248| Block 3 +# 1248| r1248_1(glval<int>) = VariableAddress[z] : +# 1248| r1248_2(glval<int>) = VariableAddress[y] : +# 1248| r1248_3(int) = Load[y] : &:r1248_2, ~m? +# 1248| mu1248_4(int) = Store[z] : &:r1248_1, r1248_3 +# 1249| v1249_1(void) = NoOp : +# 1240| v1240_6(void) = ReturnVoid : +# 1240| v1240_7(void) = AliasedUse : ~m? +# 1240| v1240_8(void) = ExitFunction : + +# 1251| void switch2Case(int) +# 1251| Block 0 +# 1251| v1251_1(void) = EnterFunction : +# 1251| mu1251_2(unknown) = AliasedDefinition : +# 1251| mu1251_3(unknown) = InitializeNonLocal : +# 1251| r1251_4(glval<int>) = VariableAddress[x] : +# 1251| mu1251_5(int) = InitializeParameter[x] : &:r1251_4 +# 1252| r1252_1(glval<int>) = VariableAddress[y] : +# 1252| r1252_2(int) = Constant[0] : +# 1252| mu1252_3(int) = Store[y] : &:r1252_1, r1252_2 +# 1253| r1253_1(glval<int>) = VariableAddress[x] : +# 1253| r1253_2(int) = Load[x] : &:r1253_1, ~m? +# 1253| v1253_3(void) = Switch : r1253_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1207| Block 1 -# 1207| v1207_1(void) = NoOp : -# 1208| r1208_1(int) = Constant[2] : -# 1208| r1208_2(glval<int>) = VariableAddress[y] : -# 1208| mu1208_3(int) = Store[y] : &:r1208_2, r1208_1 -# 1209| v1209_1(void) = NoOp : +# 1254| Block 1 +# 1254| v1254_1(void) = NoOp : +# 1255| r1255_1(int) = Constant[2] : +# 1255| r1255_2(glval<int>) = VariableAddress[y] : +# 1255| mu1255_3(int) = Store[y] : &:r1255_2, r1255_1 +# 1256| v1256_1(void) = NoOp : #-----| Goto -> Block 3 -# 1210| Block 2 -# 1210| v1210_1(void) = NoOp : -# 1211| r1211_1(int) = Constant[3] : -# 1211| r1211_2(glval<int>) = VariableAddress[y] : -# 1211| mu1211_3(int) = Store[y] : &:r1211_2, r1211_1 +# 1257| Block 2 +# 1257| v1257_1(void) = NoOp : +# 1258| r1258_1(int) = Constant[3] : +# 1258| r1258_2(glval<int>) = VariableAddress[y] : +# 1258| mu1258_3(int) = Store[y] : &:r1258_2, r1258_1 #-----| Goto -> Block 3 -# 1212| Block 3 -# 1212| v1212_1(void) = NoOp : -# 1213| r1213_1(glval<int>) = VariableAddress[z] : -# 1213| r1213_2(glval<int>) = VariableAddress[y] : -# 1213| r1213_3(int) = Load[y] : &:r1213_2, ~m? -# 1213| mu1213_4(int) = Store[z] : &:r1213_1, r1213_3 -# 1214| v1214_1(void) = NoOp : -# 1204| v1204_6(void) = ReturnVoid : -# 1204| v1204_7(void) = AliasedUse : ~m? -# 1204| v1204_8(void) = ExitFunction : - -# 1216| void switch2Case_default(int) -# 1216| Block 0 -# 1216| v1216_1(void) = EnterFunction : -# 1216| mu1216_2(unknown) = AliasedDefinition : -# 1216| mu1216_3(unknown) = InitializeNonLocal : -# 1216| r1216_4(glval<int>) = VariableAddress[x] : -# 1216| mu1216_5(int) = InitializeParameter[x] : &:r1216_4 -# 1217| r1217_1(glval<int>) = VariableAddress[y] : -# 1217| r1217_2(int) = Constant[0] : -# 1217| mu1217_3(int) = Store[y] : &:r1217_1, r1217_2 -# 1218| r1218_1(glval<int>) = VariableAddress[x] : -# 1218| r1218_2(int) = Load[x] : &:r1218_1, ~m? -# 1218| v1218_3(void) = Switch : r1218_2 +# 1259| Block 3 +# 1259| v1259_1(void) = NoOp : +# 1260| r1260_1(glval<int>) = VariableAddress[z] : +# 1260| r1260_2(glval<int>) = VariableAddress[y] : +# 1260| r1260_3(int) = Load[y] : &:r1260_2, ~m? +# 1260| mu1260_4(int) = Store[z] : &:r1260_1, r1260_3 +# 1261| v1261_1(void) = NoOp : +# 1251| v1251_6(void) = ReturnVoid : +# 1251| v1251_7(void) = AliasedUse : ~m? +# 1251| v1251_8(void) = ExitFunction : + +# 1263| void switch2Case_default(int) +# 1263| Block 0 +# 1263| v1263_1(void) = EnterFunction : +# 1263| mu1263_2(unknown) = AliasedDefinition : +# 1263| mu1263_3(unknown) = InitializeNonLocal : +# 1263| r1263_4(glval<int>) = VariableAddress[x] : +# 1263| mu1263_5(int) = InitializeParameter[x] : &:r1263_4 +# 1264| r1264_1(glval<int>) = VariableAddress[y] : +# 1264| r1264_2(int) = Constant[0] : +# 1264| mu1264_3(int) = Store[y] : &:r1264_1, r1264_2 +# 1265| r1265_1(glval<int>) = VariableAddress[x] : +# 1265| r1265_2(int) = Load[x] : &:r1265_1, ~m? +# 1265| v1265_3(void) = Switch : r1265_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1219| Block 1 -# 1219| v1219_1(void) = NoOp : -# 1220| r1220_1(int) = Constant[2] : -# 1220| r1220_2(glval<int>) = VariableAddress[y] : -# 1220| mu1220_3(int) = Store[y] : &:r1220_2, r1220_1 -# 1221| v1221_1(void) = NoOp : +# 1266| Block 1 +# 1266| v1266_1(void) = NoOp : +# 1267| r1267_1(int) = Constant[2] : +# 1267| r1267_2(glval<int>) = VariableAddress[y] : +# 1267| mu1267_3(int) = Store[y] : &:r1267_2, r1267_1 +# 1268| v1268_1(void) = NoOp : #-----| Goto -> Block 4 -# 1223| Block 2 -# 1223| v1223_1(void) = NoOp : -# 1224| r1224_1(int) = Constant[3] : -# 1224| r1224_2(glval<int>) = VariableAddress[y] : -# 1224| mu1224_3(int) = Store[y] : &:r1224_2, r1224_1 -# 1225| v1225_1(void) = NoOp : +# 1270| Block 2 +# 1270| v1270_1(void) = NoOp : +# 1271| r1271_1(int) = Constant[3] : +# 1271| r1271_2(glval<int>) = VariableAddress[y] : +# 1271| mu1271_3(int) = Store[y] : &:r1271_2, r1271_1 +# 1272| v1272_1(void) = NoOp : #-----| Goto -> Block 4 -# 1227| Block 3 -# 1227| v1227_1(void) = NoOp : -# 1228| r1228_1(int) = Constant[4] : -# 1228| r1228_2(glval<int>) = VariableAddress[y] : -# 1228| mu1228_3(int) = Store[y] : &:r1228_2, r1228_1 +# 1274| Block 3 +# 1274| v1274_1(void) = NoOp : +# 1275| r1275_1(int) = Constant[4] : +# 1275| r1275_2(glval<int>) = VariableAddress[y] : +# 1275| mu1275_3(int) = Store[y] : &:r1275_2, r1275_1 #-----| Goto -> Block 4 -# 1229| Block 4 -# 1229| v1229_1(void) = NoOp : -# 1230| r1230_1(glval<int>) = VariableAddress[z] : -# 1230| r1230_2(glval<int>) = VariableAddress[y] : -# 1230| r1230_3(int) = Load[y] : &:r1230_2, ~m? -# 1230| mu1230_4(int) = Store[z] : &:r1230_1, r1230_3 -# 1231| v1231_1(void) = NoOp : -# 1216| v1216_6(void) = ReturnVoid : -# 1216| v1216_7(void) = AliasedUse : ~m? -# 1216| v1216_8(void) = ExitFunction : - -# 1233| int staticLocalInit(int) -# 1233| Block 0 -# 1233| v1233_1(void) = EnterFunction : -# 1233| mu1233_2(unknown) = AliasedDefinition : -# 1233| mu1233_3(unknown) = InitializeNonLocal : -# 1233| r1233_4(glval<int>) = VariableAddress[x] : -# 1233| mu1233_5(int) = InitializeParameter[x] : &:r1233_4 -# 1236| r1236_1(glval<bool>) = VariableAddress[c#init] : -# 1236| r1236_2(bool) = Load[c#init] : &:r1236_1, ~m? -# 1236| v1236_3(void) = ConditionalBranch : r1236_2 +# 1276| Block 4 +# 1276| v1276_1(void) = NoOp : +# 1277| r1277_1(glval<int>) = VariableAddress[z] : +# 1277| r1277_2(glval<int>) = VariableAddress[y] : +# 1277| r1277_3(int) = Load[y] : &:r1277_2, ~m? +# 1277| mu1277_4(int) = Store[z] : &:r1277_1, r1277_3 +# 1278| v1278_1(void) = NoOp : +# 1263| v1263_6(void) = ReturnVoid : +# 1263| v1263_7(void) = AliasedUse : ~m? +# 1263| v1263_8(void) = ExitFunction : + +# 1280| int staticLocalInit(int) +# 1280| Block 0 +# 1280| v1280_1(void) = EnterFunction : +# 1280| mu1280_2(unknown) = AliasedDefinition : +# 1280| mu1280_3(unknown) = InitializeNonLocal : +# 1280| r1280_4(glval<int>) = VariableAddress[x] : +# 1280| mu1280_5(int) = InitializeParameter[x] : &:r1280_4 +# 1283| r1283_1(glval<bool>) = VariableAddress[c#init] : +# 1283| r1283_2(bool) = Load[c#init] : &:r1283_1, ~m? +# 1283| v1283_3(void) = ConditionalBranch : r1283_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1236| Block 1 -# 1236| r1236_4(glval<int>) = VariableAddress[c] : -# 1236| r1236_5(glval<int>) = VariableAddress[x] : -# 1236| r1236_6(int) = Load[x] : &:r1236_5, ~m? -# 1236| mu1236_7(int) = Store[c] : &:r1236_4, r1236_6 -# 1236| r1236_8(bool) = Constant[1] : -# 1236| mu1236_9(bool) = Store[c#init] : &:r1236_1, r1236_8 +# 1283| Block 1 +# 1283| r1283_4(glval<int>) = VariableAddress[c] : +# 1283| r1283_5(glval<int>) = VariableAddress[x] : +# 1283| r1283_6(int) = Load[x] : &:r1283_5, ~m? +# 1283| mu1283_7(int) = Store[c] : &:r1283_4, r1283_6 +# 1283| r1283_8(bool) = Constant[1] : +# 1283| mu1283_9(bool) = Store[c#init] : &:r1283_1, r1283_8 #-----| Goto -> Block 2 -# 1239| Block 2 -# 1239| r1239_1(glval<int>) = VariableAddress[#return] : -# 1239| r1239_2(glval<int>) = VariableAddress[a] : -# 1239| r1239_3(int) = Load[a] : &:r1239_2, ~m? -# 1239| r1239_4(glval<int>) = VariableAddress[b] : -# 1239| r1239_5(int) = Load[b] : &:r1239_4, ~m? -# 1239| r1239_6(int) = Add : r1239_3, r1239_5 -# 1239| r1239_7(glval<int>) = VariableAddress[c] : -# 1239| r1239_8(int) = Load[c] : &:r1239_7, ~m? -# 1239| r1239_9(int) = Add : r1239_6, r1239_8 -# 1239| r1239_10(glval<int>) = VariableAddress[d] : -# 1239| r1239_11(int) = Load[d] : &:r1239_10, ~m? -# 1239| r1239_12(int) = Add : r1239_9, r1239_11 -# 1239| mu1239_13(int) = Store[#return] : &:r1239_1, r1239_12 -# 1233| r1233_6(glval<int>) = VariableAddress[#return] : -# 1233| v1233_7(void) = ReturnValue : &:r1233_6, ~m? -# 1233| v1233_8(void) = AliasedUse : ~m? -# 1233| v1233_9(void) = ExitFunction : - -# 1234| int a -# 1234| Block 0 -# 1234| v1234_1(void) = EnterFunction : -# 1234| mu1234_2(unknown) = AliasedDefinition : -# 1234| r1234_3(glval<int>) = VariableAddress[a] : -# 1234| r1234_4(int) = Constant[0] : -# 1234| mu1234_5(int) = Store[a] : &:r1234_3, r1234_4 -# 1234| v1234_6(void) = ReturnVoid : -# 1234| v1234_7(void) = AliasedUse : ~m? -# 1234| v1234_8(void) = ExitFunction : - -# 1235| int b -# 1235| Block 0 -# 1235| v1235_1(void) = EnterFunction : -# 1235| mu1235_2(unknown) = AliasedDefinition : -# 1235| r1235_3(glval<int>) = VariableAddress[b] : -# 1235| r1235_4(int) = Constant[4] : -# 1235| mu1235_5(int) = Store[b] : &:r1235_3, r1235_4 -# 1235| v1235_6(void) = ReturnVoid : -# 1235| v1235_7(void) = AliasedUse : ~m? -# 1235| v1235_8(void) = ExitFunction : - -# 1242| void staticLocalWithConstructor(char const*) -# 1242| Block 0 -# 1242| v1242_1(void) = EnterFunction : -# 1242| mu1242_2(unknown) = AliasedDefinition : -# 1242| mu1242_3(unknown) = InitializeNonLocal : -# 1242| r1242_4(glval<char *>) = VariableAddress[dynamic] : -# 1242| mu1242_5(char *) = InitializeParameter[dynamic] : &:r1242_4 -# 1242| r1242_6(char *) = Load[dynamic] : &:r1242_4, ~m? -# 1242| mu1242_7(unknown) = InitializeIndirection[dynamic] : &:r1242_6 -# 1243| r1243_1(glval<bool>) = VariableAddress[a#init] : -# 1243| r1243_2(bool) = Load[a#init] : &:r1243_1, ~m? -# 1243| v1243_3(void) = ConditionalBranch : r1243_2 +# 1286| Block 2 +# 1286| r1286_1(glval<int>) = VariableAddress[#return] : +# 1286| r1286_2(glval<int>) = VariableAddress[a] : +# 1286| r1286_3(int) = Load[a] : &:r1286_2, ~m? +# 1286| r1286_4(glval<int>) = VariableAddress[b] : +# 1286| r1286_5(int) = Load[b] : &:r1286_4, ~m? +# 1286| r1286_6(int) = Add : r1286_3, r1286_5 +# 1286| r1286_7(glval<int>) = VariableAddress[c] : +# 1286| r1286_8(int) = Load[c] : &:r1286_7, ~m? +# 1286| r1286_9(int) = Add : r1286_6, r1286_8 +# 1286| r1286_10(glval<int>) = VariableAddress[d] : +# 1286| r1286_11(int) = Load[d] : &:r1286_10, ~m? +# 1286| r1286_12(int) = Add : r1286_9, r1286_11 +# 1286| mu1286_13(int) = Store[#return] : &:r1286_1, r1286_12 +# 1280| r1280_6(glval<int>) = VariableAddress[#return] : +# 1280| v1280_7(void) = ReturnValue : &:r1280_6, ~m? +# 1280| v1280_8(void) = AliasedUse : ~m? +# 1280| v1280_9(void) = ExitFunction : + +# 1281| int a +# 1281| Block 0 +# 1281| v1281_1(void) = EnterFunction : +# 1281| mu1281_2(unknown) = AliasedDefinition : +# 1281| r1281_3(glval<int>) = VariableAddress[a] : +# 1281| r1281_4(int) = Constant[0] : +# 1281| mu1281_5(int) = Store[a] : &:r1281_3, r1281_4 +# 1281| v1281_6(void) = ReturnVoid : +# 1281| v1281_7(void) = AliasedUse : ~m? +# 1281| v1281_8(void) = ExitFunction : + +# 1282| int b +# 1282| Block 0 +# 1282| v1282_1(void) = EnterFunction : +# 1282| mu1282_2(unknown) = AliasedDefinition : +# 1282| r1282_3(glval<int>) = VariableAddress[b] : +# 1282| r1282_4(int) = Constant[4] : +# 1282| mu1282_5(int) = Store[b] : &:r1282_3, r1282_4 +# 1282| v1282_6(void) = ReturnVoid : +# 1282| v1282_7(void) = AliasedUse : ~m? +# 1282| v1282_8(void) = ExitFunction : + +# 1289| void staticLocalWithConstructor(char const*) +# 1289| Block 0 +# 1289| v1289_1(void) = EnterFunction : +# 1289| mu1289_2(unknown) = AliasedDefinition : +# 1289| mu1289_3(unknown) = InitializeNonLocal : +# 1289| r1289_4(glval<char *>) = VariableAddress[dynamic] : +# 1289| mu1289_5(char *) = InitializeParameter[dynamic] : &:r1289_4 +# 1289| r1289_6(char *) = Load[dynamic] : &:r1289_4, ~m? +# 1289| mu1289_7(unknown) = InitializeIndirection[dynamic] : &:r1289_6 +# 1290| r1290_1(glval<bool>) = VariableAddress[a#init] : +# 1290| r1290_2(bool) = Load[a#init] : &:r1290_1, ~m? +# 1290| v1290_3(void) = ConditionalBranch : r1290_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1243| Block 1 -# 1243| r1243_4(glval<String>) = VariableAddress[a] : +# 1290| Block 1 +# 1290| r1290_4(glval<String>) = VariableAddress[a] : #-----| r0_1(glval<unknown>) = FunctionAddress[String] : -#-----| v0_2(void) = Call[String] : func:r0_1, this:r1243_4 +#-----| v0_2(void) = Call[String] : func:r0_1, this:r1290_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(String) = ^IndirectMayWriteSideEffect[-1] : &:r1243_4 -# 1243| r1243_5(bool) = Constant[1] : -# 1243| mu1243_6(bool) = Store[a#init] : &:r1243_1, r1243_5 +#-----| mu0_4(String) = ^IndirectMayWriteSideEffect[-1] : &:r1290_4 +# 1290| r1290_5(bool) = Constant[1] : +# 1290| mu1290_6(bool) = Store[a#init] : &:r1290_1, r1290_5 #-----| Goto -> Block 2 -# 1244| Block 2 -# 1244| r1244_1(glval<bool>) = VariableAddress[b#init] : -# 1244| r1244_2(bool) = Load[b#init] : &:r1244_1, ~m? -# 1244| v1244_3(void) = ConditionalBranch : r1244_2 +# 1291| Block 2 +# 1291| r1291_1(glval<bool>) = VariableAddress[b#init] : +# 1291| r1291_2(bool) = Load[b#init] : &:r1291_1, ~m? +# 1291| v1291_3(void) = ConditionalBranch : r1291_2 #-----| False -> Block 3 #-----| True -> Block 4 -# 1244| Block 3 -# 1244| r1244_4(glval<String>) = VariableAddress[b] : -# 1244| r1244_5(glval<unknown>) = FunctionAddress[String] : -# 1244| r1244_6(glval<char[7]>) = StringConstant["static"] : -# 1244| r1244_7(char *) = Convert : r1244_6 -# 1244| v1244_8(void) = Call[String] : func:r1244_5, this:r1244_4, 0:r1244_7 -# 1244| mu1244_9(unknown) = ^CallSideEffect : ~m? -# 1244| v1244_10(void) = ^BufferReadSideEffect[0] : &:r1244_7, ~m? -# 1244| mu1244_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1244_4 -# 1244| r1244_12(bool) = Constant[1] : -# 1244| mu1244_13(bool) = Store[b#init] : &:r1244_1, r1244_12 +# 1291| Block 3 +# 1291| r1291_4(glval<String>) = VariableAddress[b] : +# 1291| r1291_5(glval<unknown>) = FunctionAddress[String] : +# 1291| r1291_6(glval<char[7]>) = StringConstant["static"] : +# 1291| r1291_7(char *) = Convert : r1291_6 +# 1291| v1291_8(void) = Call[String] : func:r1291_5, this:r1291_4, 0:r1291_7 +# 1291| mu1291_9(unknown) = ^CallSideEffect : ~m? +# 1291| v1291_10(void) = ^BufferReadSideEffect[0] : &:r1291_7, ~m? +# 1291| mu1291_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1291_4 +# 1291| r1291_12(bool) = Constant[1] : +# 1291| mu1291_13(bool) = Store[b#init] : &:r1291_1, r1291_12 #-----| Goto -> Block 4 -# 1245| Block 4 -# 1245| r1245_1(glval<bool>) = VariableAddress[c#init] : -# 1245| r1245_2(bool) = Load[c#init] : &:r1245_1, ~m? -# 1245| v1245_3(void) = ConditionalBranch : r1245_2 +# 1292| Block 4 +# 1292| r1292_1(glval<bool>) = VariableAddress[c#init] : +# 1292| r1292_2(bool) = Load[c#init] : &:r1292_1, ~m? +# 1292| v1292_3(void) = ConditionalBranch : r1292_2 #-----| False -> Block 5 #-----| True -> Block 6 -# 1245| Block 5 -# 1245| r1245_4(glval<String>) = VariableAddress[c] : -# 1245| r1245_5(glval<unknown>) = FunctionAddress[String] : -# 1245| r1245_6(glval<char *>) = VariableAddress[dynamic] : -# 1245| r1245_7(char *) = Load[dynamic] : &:r1245_6, ~m? -# 1245| v1245_8(void) = Call[String] : func:r1245_5, this:r1245_4, 0:r1245_7 -# 1245| mu1245_9(unknown) = ^CallSideEffect : ~m? -# 1245| v1245_10(void) = ^BufferReadSideEffect[0] : &:r1245_7, ~m? -# 1245| mu1245_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1245_4 -# 1245| r1245_12(bool) = Constant[1] : -# 1245| mu1245_13(bool) = Store[c#init] : &:r1245_1, r1245_12 +# 1292| Block 5 +# 1292| r1292_4(glval<String>) = VariableAddress[c] : +# 1292| r1292_5(glval<unknown>) = FunctionAddress[String] : +# 1292| r1292_6(glval<char *>) = VariableAddress[dynamic] : +# 1292| r1292_7(char *) = Load[dynamic] : &:r1292_6, ~m? +# 1292| v1292_8(void) = Call[String] : func:r1292_5, this:r1292_4, 0:r1292_7 +# 1292| mu1292_9(unknown) = ^CallSideEffect : ~m? +# 1292| v1292_10(void) = ^BufferReadSideEffect[0] : &:r1292_7, ~m? +# 1292| mu1292_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_4 +# 1292| r1292_12(bool) = Constant[1] : +# 1292| mu1292_13(bool) = Store[c#init] : &:r1292_1, r1292_12 #-----| Goto -> Block 6 -# 1246| Block 6 -# 1246| v1246_1(void) = NoOp : -# 1242| v1242_8(void) = ReturnIndirection[dynamic] : &:r1242_6, ~m? -# 1242| v1242_9(void) = ReturnVoid : -# 1242| v1242_10(void) = AliasedUse : ~m? -# 1242| v1242_11(void) = ExitFunction : - -# 1253| void test_strings(char*, char*) -# 1253| Block 0 -# 1253| v1253_1(void) = EnterFunction : -# 1253| mu1253_2(unknown) = AliasedDefinition : -# 1253| mu1253_3(unknown) = InitializeNonLocal : -# 1253| r1253_4(glval<char *>) = VariableAddress[s1] : -# 1253| mu1253_5(char *) = InitializeParameter[s1] : &:r1253_4 -# 1253| r1253_6(char *) = Load[s1] : &:r1253_4, ~m? -# 1253| mu1253_7(unknown) = InitializeIndirection[s1] : &:r1253_6 -# 1253| r1253_8(glval<char *>) = VariableAddress[s2] : -# 1253| mu1253_9(char *) = InitializeParameter[s2] : &:r1253_8 -# 1253| r1253_10(char *) = Load[s2] : &:r1253_8, ~m? -# 1253| mu1253_11(unknown) = InitializeIndirection[s2] : &:r1253_10 -# 1254| r1254_1(glval<char[1024]>) = VariableAddress[buffer] : -# 1254| mu1254_2(char[1024]) = Uninitialized[buffer] : &:r1254_1 -# 1254| r1254_3(int) = Constant[0] : -# 1254| r1254_4(glval<char>) = PointerAdd[1] : r1254_1, r1254_3 -# 1254| r1254_5(char) = Constant[0] : -# 1254| mu1254_6(char) = Store[?] : &:r1254_4, r1254_5 -# 1254| r1254_7(int) = Constant[1] : -# 1254| r1254_8(glval<char>) = PointerAdd[1] : r1254_1, r1254_7 -# 1254| r1254_9(unknown[1023]) = Constant[0] : -# 1254| mu1254_10(unknown[1023]) = Store[?] : &:r1254_8, r1254_9 -# 1256| r1256_1(glval<unknown>) = FunctionAddress[strcpy] : -# 1256| r1256_2(glval<char[1024]>) = VariableAddress[buffer] : -# 1256| r1256_3(char *) = Convert : r1256_2 -# 1256| r1256_4(glval<char *>) = VariableAddress[s1] : -# 1256| r1256_5(char *) = Load[s1] : &:r1256_4, ~m? -# 1256| r1256_6(char *) = Convert : r1256_5 -# 1256| r1256_7(char *) = Call[strcpy] : func:r1256_1, 0:r1256_3, 1:r1256_6 -# 1256| v1256_8(void) = ^BufferReadSideEffect[1] : &:r1256_6, ~m? -# 1256| mu1256_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1256_3 -# 1257| r1257_1(glval<unknown>) = FunctionAddress[strcat] : -# 1257| r1257_2(glval<char[1024]>) = VariableAddress[buffer] : -# 1257| r1257_3(char *) = Convert : r1257_2 -# 1257| r1257_4(glval<char *>) = VariableAddress[s2] : -# 1257| r1257_5(char *) = Load[s2] : &:r1257_4, ~m? -# 1257| r1257_6(char *) = Convert : r1257_5 -# 1257| r1257_7(char *) = Call[strcat] : func:r1257_1, 0:r1257_3, 1:r1257_6 -# 1257| v1257_8(void) = ^BufferReadSideEffect[0] : &:r1257_3, ~m? -# 1257| v1257_9(void) = ^BufferReadSideEffect[1] : &:r1257_6, ~m? -# 1257| mu1257_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1257_3 -# 1258| v1258_1(void) = NoOp : -# 1253| v1253_12(void) = ReturnIndirection[s1] : &:r1253_6, ~m? -# 1253| v1253_13(void) = ReturnIndirection[s2] : &:r1253_10, ~m? -# 1253| v1253_14(void) = ReturnVoid : -# 1253| v1253_15(void) = AliasedUse : ~m? -# 1253| v1253_16(void) = ExitFunction : - -# 1263| void A::static_member(A*, int) -# 1263| Block 0 -# 1263| v1263_1(void) = EnterFunction : -# 1263| mu1263_2(unknown) = AliasedDefinition : -# 1263| mu1263_3(unknown) = InitializeNonLocal : -# 1263| r1263_4(glval<A *>) = VariableAddress[a] : -# 1263| mu1263_5(A *) = InitializeParameter[a] : &:r1263_4 -# 1263| r1263_6(A *) = Load[a] : &:r1263_4, ~m? -# 1263| mu1263_7(unknown) = InitializeIndirection[a] : &:r1263_6 -# 1263| r1263_8(glval<int>) = VariableAddress[x] : -# 1263| mu1263_9(int) = InitializeParameter[x] : &:r1263_8 -# 1264| r1264_1(glval<int>) = VariableAddress[x] : -# 1264| r1264_2(int) = Load[x] : &:r1264_1, ~m? -# 1264| r1264_3(glval<A *>) = VariableAddress[a] : -# 1264| r1264_4(A *) = Load[a] : &:r1264_3, ~m? -# 1264| r1264_5(glval<int>) = FieldAddress[member] : r1264_4 -# 1264| mu1264_6(int) = Store[?] : &:r1264_5, r1264_2 -# 1265| v1265_1(void) = NoOp : -# 1263| v1263_10(void) = ReturnIndirection[a] : &:r1263_6, ~m? -# 1263| v1263_11(void) = ReturnVoid : -# 1263| v1263_12(void) = AliasedUse : ~m? -# 1263| v1263_13(void) = ExitFunction : - -# 1272| void test_static_member_functions(int, A*) -# 1272| Block 0 -# 1272| v1272_1(void) = EnterFunction : -# 1272| mu1272_2(unknown) = AliasedDefinition : -# 1272| mu1272_3(unknown) = InitializeNonLocal : -# 1272| r1272_4(glval<int>) = VariableAddress[int_arg] : -# 1272| mu1272_5(int) = InitializeParameter[int_arg] : &:r1272_4 -# 1272| r1272_6(glval<A *>) = VariableAddress[a_arg] : -# 1272| mu1272_7(A *) = InitializeParameter[a_arg] : &:r1272_6 -# 1272| r1272_8(A *) = Load[a_arg] : &:r1272_6, ~m? -# 1272| mu1272_9(unknown) = InitializeIndirection[a_arg] : &:r1272_8 -# 1273| r1273_1(glval<C>) = VariableAddress[c] : -# 1273| mu1273_2(C) = Uninitialized[c] : &:r1273_1 -# 1273| r1273_3(glval<unknown>) = FunctionAddress[C] : -# 1273| v1273_4(void) = Call[C] : func:r1273_3, this:r1273_1 -# 1273| mu1273_5(unknown) = ^CallSideEffect : ~m? -# 1273| mu1273_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1273_1 -# 1274| r1274_1(glval<C>) = VariableAddress[c] : -# 1274| r1274_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1274| r1274_3(int) = Constant[10] : -# 1274| r1274_4(int) = Call[StaticMemberFunction] : func:r1274_2, 0:r1274_3 -# 1274| mu1274_5(unknown) = ^CallSideEffect : ~m? -# 1275| r1275_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1275| r1275_2(int) = Constant[10] : -# 1275| r1275_3(int) = Call[StaticMemberFunction] : func:r1275_1, 0:r1275_2 -# 1275| mu1275_4(unknown) = ^CallSideEffect : ~m? -# 1277| r1277_1(glval<A>) = VariableAddress[a] : -# 1277| mu1277_2(A) = Uninitialized[a] : &:r1277_1 -# 1278| r1278_1(glval<A>) = VariableAddress[a] : -# 1278| r1278_2(glval<unknown>) = FunctionAddress[static_member] : -# 1278| r1278_3(glval<A>) = VariableAddress[a] : -# 1278| r1278_4(A *) = CopyValue : r1278_3 -# 1278| r1278_5(glval<int>) = VariableAddress[int_arg] : -# 1278| r1278_6(int) = Load[int_arg] : &:r1278_5, ~m? -# 1278| v1278_7(void) = Call[static_member] : func:r1278_2, 0:r1278_4, 1:r1278_6 -# 1278| mu1278_8(unknown) = ^CallSideEffect : ~m? -# 1278| v1278_9(void) = ^BufferReadSideEffect[0] : &:r1278_4, ~m? -# 1278| mu1278_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1278_4 -# 1279| r1279_1(glval<unknown>) = FunctionAddress[static_member] : -# 1279| r1279_2(glval<A>) = VariableAddress[a] : -# 1279| r1279_3(A *) = CopyValue : r1279_2 -# 1279| r1279_4(glval<int>) = VariableAddress[int_arg] : -# 1279| r1279_5(int) = Load[int_arg] : &:r1279_4, ~m? -# 1279| v1279_6(void) = Call[static_member] : func:r1279_1, 0:r1279_3, 1:r1279_5 -# 1279| mu1279_7(unknown) = ^CallSideEffect : ~m? -# 1279| v1279_8(void) = ^BufferReadSideEffect[0] : &:r1279_3, ~m? -# 1279| mu1279_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1279_3 -# 1281| r1281_1(glval<A>) = VariableAddress[a] : -# 1281| r1281_2(A *) = CopyValue : r1281_1 -# 1281| r1281_3(glval<unknown>) = FunctionAddress[static_member] : -# 1281| r1281_4(glval<A *>) = VariableAddress[a_arg] : -# 1281| r1281_5(A *) = Load[a_arg] : &:r1281_4, ~m? -# 1281| r1281_6(glval<int>) = VariableAddress[int_arg] : -# 1281| r1281_7(int) = Load[int_arg] : &:r1281_6, ~m? -# 1281| r1281_8(int) = Constant[2] : -# 1281| r1281_9(int) = Add : r1281_7, r1281_8 -# 1281| v1281_10(void) = Call[static_member] : func:r1281_3, 0:r1281_5, 1:r1281_9 -# 1281| mu1281_11(unknown) = ^CallSideEffect : ~m? -# 1281| v1281_12(void) = ^BufferReadSideEffect[0] : &:r1281_5, ~m? -# 1281| mu1281_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1281_5 -# 1282| r1282_1(glval<A *>) = VariableAddress[a_arg] : -# 1282| r1282_2(A *) = Load[a_arg] : &:r1282_1, ~m? -# 1282| r1282_3(glval<A>) = CopyValue : r1282_2 -# 1282| r1282_4(glval<unknown>) = FunctionAddress[static_member] : -# 1282| r1282_5(glval<A>) = VariableAddress[a] : -# 1282| r1282_6(A *) = CopyValue : r1282_5 -# 1282| r1282_7(int) = Constant[99] : -# 1282| v1282_8(void) = Call[static_member] : func:r1282_4, 0:r1282_6, 1:r1282_7 -# 1282| mu1282_9(unknown) = ^CallSideEffect : ~m? -# 1282| v1282_10(void) = ^BufferReadSideEffect[0] : &:r1282_6, ~m? -# 1282| mu1282_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1282_6 -# 1283| r1283_1(glval<A *>) = VariableAddress[a_arg] : -# 1283| r1283_2(A *) = Load[a_arg] : &:r1283_1, ~m? -# 1283| r1283_3(glval<unknown>) = FunctionAddress[static_member] : -# 1283| r1283_4(glval<A *>) = VariableAddress[a_arg] : -# 1283| r1283_5(A *) = Load[a_arg] : &:r1283_4, ~m? -# 1283| r1283_6(int) = Constant[-1] : -# 1283| v1283_7(void) = Call[static_member] : func:r1283_3, 0:r1283_5, 1:r1283_6 -# 1283| mu1283_8(unknown) = ^CallSideEffect : ~m? -# 1283| v1283_9(void) = ^BufferReadSideEffect[0] : &:r1283_5, ~m? -# 1283| mu1283_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1283_5 -# 1285| r1285_1(glval<A>) = VariableAddress[a] : -# 1285| r1285_2(glval<unknown>) = FunctionAddress[static_member_without_def] : -# 1285| v1285_3(void) = Call[static_member_without_def] : func:r1285_2 -# 1285| mu1285_4(unknown) = ^CallSideEffect : ~m? -# 1286| r1286_1(glval<unknown>) = FunctionAddress[static_member_without_def] : -# 1286| v1286_2(void) = Call[static_member_without_def] : func:r1286_1 -# 1286| mu1286_3(unknown) = ^CallSideEffect : ~m? -# 1288| r1288_1(glval<unknown>) = FunctionAddress[getAnInstanceOfA] : -# 1288| r1288_2(A *) = Call[getAnInstanceOfA] : func:r1288_1 -# 1288| mu1288_3(unknown) = ^CallSideEffect : ~m? -# 1288| r1288_4(glval<unknown>) = FunctionAddress[static_member_without_def] : -# 1288| v1288_5(void) = Call[static_member_without_def] : func:r1288_4 -# 1288| mu1288_6(unknown) = ^CallSideEffect : ~m? -# 1289| v1289_1(void) = NoOp : -# 1289| r1289_2(glval<C>) = VariableAddress[c] : -# 1289| r1289_3(glval<unknown>) = FunctionAddress[~C] : -# 1289| v1289_4(void) = Call[~C] : func:r1289_3, this:r1289_2 -# 1289| mu1289_5(unknown) = ^CallSideEffect : ~m? -# 1289| v1289_6(void) = ^IndirectReadSideEffect[-1] : &:r1289_2, ~m? -# 1289| mu1289_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1289_2 -# 1272| v1272_10(void) = ReturnIndirection[a_arg] : &:r1272_8, ~m? -# 1272| v1272_11(void) = ReturnVoid : -# 1272| v1272_12(void) = AliasedUse : ~m? -# 1272| v1272_13(void) = ExitFunction : - -# 1291| int missingReturnValue(bool, int) -# 1291| Block 0 -# 1291| v1291_1(void) = EnterFunction : -# 1291| mu1291_2(unknown) = AliasedDefinition : -# 1291| mu1291_3(unknown) = InitializeNonLocal : -# 1291| r1291_4(glval<bool>) = VariableAddress[b] : -# 1291| mu1291_5(bool) = InitializeParameter[b] : &:r1291_4 -# 1291| r1291_6(glval<int>) = VariableAddress[x] : -# 1291| mu1291_7(int) = InitializeParameter[x] : &:r1291_6 -# 1292| r1292_1(glval<bool>) = VariableAddress[b] : -# 1292| r1292_2(bool) = Load[b] : &:r1292_1, ~m? -# 1292| v1292_3(void) = ConditionalBranch : r1292_2 +# 1293| Block 6 +# 1293| v1293_1(void) = NoOp : +# 1289| v1289_8(void) = ReturnIndirection[dynamic] : &:r1289_6, ~m? +# 1289| v1289_9(void) = ReturnVoid : +# 1289| v1289_10(void) = AliasedUse : ~m? +# 1289| v1289_11(void) = ExitFunction : + +# 1300| void test_strings(char*, char*) +# 1300| Block 0 +# 1300| v1300_1(void) = EnterFunction : +# 1300| mu1300_2(unknown) = AliasedDefinition : +# 1300| mu1300_3(unknown) = InitializeNonLocal : +# 1300| r1300_4(glval<char *>) = VariableAddress[s1] : +# 1300| mu1300_5(char *) = InitializeParameter[s1] : &:r1300_4 +# 1300| r1300_6(char *) = Load[s1] : &:r1300_4, ~m? +# 1300| mu1300_7(unknown) = InitializeIndirection[s1] : &:r1300_6 +# 1300| r1300_8(glval<char *>) = VariableAddress[s2] : +# 1300| mu1300_9(char *) = InitializeParameter[s2] : &:r1300_8 +# 1300| r1300_10(char *) = Load[s2] : &:r1300_8, ~m? +# 1300| mu1300_11(unknown) = InitializeIndirection[s2] : &:r1300_10 +# 1301| r1301_1(glval<char[1024]>) = VariableAddress[buffer] : +# 1301| mu1301_2(char[1024]) = Uninitialized[buffer] : &:r1301_1 +# 1301| r1301_3(int) = Constant[0] : +# 1301| r1301_4(glval<char>) = PointerAdd[1] : r1301_1, r1301_3 +# 1301| r1301_5(char) = Constant[0] : +# 1301| mu1301_6(char) = Store[?] : &:r1301_4, r1301_5 +# 1301| r1301_7(int) = Constant[1] : +# 1301| r1301_8(glval<char>) = PointerAdd[1] : r1301_1, r1301_7 +# 1301| r1301_9(unknown[1023]) = Constant[0] : +# 1301| mu1301_10(unknown[1023]) = Store[?] : &:r1301_8, r1301_9 +# 1303| r1303_1(glval<unknown>) = FunctionAddress[strcpy] : +# 1303| r1303_2(glval<char[1024]>) = VariableAddress[buffer] : +# 1303| r1303_3(char *) = Convert : r1303_2 +# 1303| r1303_4(glval<char *>) = VariableAddress[s1] : +# 1303| r1303_5(char *) = Load[s1] : &:r1303_4, ~m? +# 1303| r1303_6(char *) = Convert : r1303_5 +# 1303| r1303_7(char *) = Call[strcpy] : func:r1303_1, 0:r1303_3, 1:r1303_6 +# 1303| v1303_8(void) = ^BufferReadSideEffect[1] : &:r1303_6, ~m? +# 1303| mu1303_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1303_3 +# 1304| r1304_1(glval<unknown>) = FunctionAddress[strcat] : +# 1304| r1304_2(glval<char[1024]>) = VariableAddress[buffer] : +# 1304| r1304_3(char *) = Convert : r1304_2 +# 1304| r1304_4(glval<char *>) = VariableAddress[s2] : +# 1304| r1304_5(char *) = Load[s2] : &:r1304_4, ~m? +# 1304| r1304_6(char *) = Convert : r1304_5 +# 1304| r1304_7(char *) = Call[strcat] : func:r1304_1, 0:r1304_3, 1:r1304_6 +# 1304| v1304_8(void) = ^BufferReadSideEffect[0] : &:r1304_3, ~m? +# 1304| v1304_9(void) = ^BufferReadSideEffect[1] : &:r1304_6, ~m? +# 1304| mu1304_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1304_3 +# 1305| v1305_1(void) = NoOp : +# 1300| v1300_12(void) = ReturnIndirection[s1] : &:r1300_6, ~m? +# 1300| v1300_13(void) = ReturnIndirection[s2] : &:r1300_10, ~m? +# 1300| v1300_14(void) = ReturnVoid : +# 1300| v1300_15(void) = AliasedUse : ~m? +# 1300| v1300_16(void) = ExitFunction : + +# 1310| void A::static_member(A*, int) +# 1310| Block 0 +# 1310| v1310_1(void) = EnterFunction : +# 1310| mu1310_2(unknown) = AliasedDefinition : +# 1310| mu1310_3(unknown) = InitializeNonLocal : +# 1310| r1310_4(glval<A *>) = VariableAddress[a] : +# 1310| mu1310_5(A *) = InitializeParameter[a] : &:r1310_4 +# 1310| r1310_6(A *) = Load[a] : &:r1310_4, ~m? +# 1310| mu1310_7(unknown) = InitializeIndirection[a] : &:r1310_6 +# 1310| r1310_8(glval<int>) = VariableAddress[x] : +# 1310| mu1310_9(int) = InitializeParameter[x] : &:r1310_8 +# 1311| r1311_1(glval<int>) = VariableAddress[x] : +# 1311| r1311_2(int) = Load[x] : &:r1311_1, ~m? +# 1311| r1311_3(glval<A *>) = VariableAddress[a] : +# 1311| r1311_4(A *) = Load[a] : &:r1311_3, ~m? +# 1311| r1311_5(glval<int>) = FieldAddress[member] : r1311_4 +# 1311| mu1311_6(int) = Store[?] : &:r1311_5, r1311_2 +# 1312| v1312_1(void) = NoOp : +# 1310| v1310_10(void) = ReturnIndirection[a] : &:r1310_6, ~m? +# 1310| v1310_11(void) = ReturnVoid : +# 1310| v1310_12(void) = AliasedUse : ~m? +# 1310| v1310_13(void) = ExitFunction : + +# 1319| void test_static_member_functions(int, A*) +# 1319| Block 0 +# 1319| v1319_1(void) = EnterFunction : +# 1319| mu1319_2(unknown) = AliasedDefinition : +# 1319| mu1319_3(unknown) = InitializeNonLocal : +# 1319| r1319_4(glval<int>) = VariableAddress[int_arg] : +# 1319| mu1319_5(int) = InitializeParameter[int_arg] : &:r1319_4 +# 1319| r1319_6(glval<A *>) = VariableAddress[a_arg] : +# 1319| mu1319_7(A *) = InitializeParameter[a_arg] : &:r1319_6 +# 1319| r1319_8(A *) = Load[a_arg] : &:r1319_6, ~m? +# 1319| mu1319_9(unknown) = InitializeIndirection[a_arg] : &:r1319_8 +# 1320| r1320_1(glval<C>) = VariableAddress[c] : +# 1320| mu1320_2(C) = Uninitialized[c] : &:r1320_1 +# 1320| r1320_3(glval<unknown>) = FunctionAddress[C] : +# 1320| v1320_4(void) = Call[C] : func:r1320_3, this:r1320_1 +# 1320| mu1320_5(unknown) = ^CallSideEffect : ~m? +# 1320| mu1320_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1320_1 +# 1321| r1321_1(glval<C>) = VariableAddress[c] : +# 1321| r1321_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1321| r1321_3(int) = Constant[10] : +# 1321| r1321_4(int) = Call[StaticMemberFunction] : func:r1321_2, 0:r1321_3 +# 1321| mu1321_5(unknown) = ^CallSideEffect : ~m? +# 1322| r1322_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1322| r1322_2(int) = Constant[10] : +# 1322| r1322_3(int) = Call[StaticMemberFunction] : func:r1322_1, 0:r1322_2 +# 1322| mu1322_4(unknown) = ^CallSideEffect : ~m? +# 1324| r1324_1(glval<A>) = VariableAddress[a] : +# 1324| mu1324_2(A) = Uninitialized[a] : &:r1324_1 +# 1325| r1325_1(glval<A>) = VariableAddress[a] : +# 1325| r1325_2(glval<unknown>) = FunctionAddress[static_member] : +# 1325| r1325_3(glval<A>) = VariableAddress[a] : +# 1325| r1325_4(A *) = CopyValue : r1325_3 +# 1325| r1325_5(glval<int>) = VariableAddress[int_arg] : +# 1325| r1325_6(int) = Load[int_arg] : &:r1325_5, ~m? +# 1325| v1325_7(void) = Call[static_member] : func:r1325_2, 0:r1325_4, 1:r1325_6 +# 1325| mu1325_8(unknown) = ^CallSideEffect : ~m? +# 1325| v1325_9(void) = ^BufferReadSideEffect[0] : &:r1325_4, ~m? +# 1325| mu1325_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1325_4 +# 1326| r1326_1(glval<unknown>) = FunctionAddress[static_member] : +# 1326| r1326_2(glval<A>) = VariableAddress[a] : +# 1326| r1326_3(A *) = CopyValue : r1326_2 +# 1326| r1326_4(glval<int>) = VariableAddress[int_arg] : +# 1326| r1326_5(int) = Load[int_arg] : &:r1326_4, ~m? +# 1326| v1326_6(void) = Call[static_member] : func:r1326_1, 0:r1326_3, 1:r1326_5 +# 1326| mu1326_7(unknown) = ^CallSideEffect : ~m? +# 1326| v1326_8(void) = ^BufferReadSideEffect[0] : &:r1326_3, ~m? +# 1326| mu1326_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1326_3 +# 1328| r1328_1(glval<A>) = VariableAddress[a] : +# 1328| r1328_2(A *) = CopyValue : r1328_1 +# 1328| r1328_3(glval<unknown>) = FunctionAddress[static_member] : +# 1328| r1328_4(glval<A *>) = VariableAddress[a_arg] : +# 1328| r1328_5(A *) = Load[a_arg] : &:r1328_4, ~m? +# 1328| r1328_6(glval<int>) = VariableAddress[int_arg] : +# 1328| r1328_7(int) = Load[int_arg] : &:r1328_6, ~m? +# 1328| r1328_8(int) = Constant[2] : +# 1328| r1328_9(int) = Add : r1328_7, r1328_8 +# 1328| v1328_10(void) = Call[static_member] : func:r1328_3, 0:r1328_5, 1:r1328_9 +# 1328| mu1328_11(unknown) = ^CallSideEffect : ~m? +# 1328| v1328_12(void) = ^BufferReadSideEffect[0] : &:r1328_5, ~m? +# 1328| mu1328_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1328_5 +# 1329| r1329_1(glval<A *>) = VariableAddress[a_arg] : +# 1329| r1329_2(A *) = Load[a_arg] : &:r1329_1, ~m? +# 1329| r1329_3(glval<A>) = CopyValue : r1329_2 +# 1329| r1329_4(glval<unknown>) = FunctionAddress[static_member] : +# 1329| r1329_5(glval<A>) = VariableAddress[a] : +# 1329| r1329_6(A *) = CopyValue : r1329_5 +# 1329| r1329_7(int) = Constant[99] : +# 1329| v1329_8(void) = Call[static_member] : func:r1329_4, 0:r1329_6, 1:r1329_7 +# 1329| mu1329_9(unknown) = ^CallSideEffect : ~m? +# 1329| v1329_10(void) = ^BufferReadSideEffect[0] : &:r1329_6, ~m? +# 1329| mu1329_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1329_6 +# 1330| r1330_1(glval<A *>) = VariableAddress[a_arg] : +# 1330| r1330_2(A *) = Load[a_arg] : &:r1330_1, ~m? +# 1330| r1330_3(glval<unknown>) = FunctionAddress[static_member] : +# 1330| r1330_4(glval<A *>) = VariableAddress[a_arg] : +# 1330| r1330_5(A *) = Load[a_arg] : &:r1330_4, ~m? +# 1330| r1330_6(int) = Constant[-1] : +# 1330| v1330_7(void) = Call[static_member] : func:r1330_3, 0:r1330_5, 1:r1330_6 +# 1330| mu1330_8(unknown) = ^CallSideEffect : ~m? +# 1330| v1330_9(void) = ^BufferReadSideEffect[0] : &:r1330_5, ~m? +# 1330| mu1330_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1330_5 +# 1332| r1332_1(glval<A>) = VariableAddress[a] : +# 1332| r1332_2(glval<unknown>) = FunctionAddress[static_member_without_def] : +# 1332| v1332_3(void) = Call[static_member_without_def] : func:r1332_2 +# 1332| mu1332_4(unknown) = ^CallSideEffect : ~m? +# 1333| r1333_1(glval<unknown>) = FunctionAddress[static_member_without_def] : +# 1333| v1333_2(void) = Call[static_member_without_def] : func:r1333_1 +# 1333| mu1333_3(unknown) = ^CallSideEffect : ~m? +# 1335| r1335_1(glval<unknown>) = FunctionAddress[getAnInstanceOfA] : +# 1335| r1335_2(A *) = Call[getAnInstanceOfA] : func:r1335_1 +# 1335| mu1335_3(unknown) = ^CallSideEffect : ~m? +# 1335| r1335_4(glval<unknown>) = FunctionAddress[static_member_without_def] : +# 1335| v1335_5(void) = Call[static_member_without_def] : func:r1335_4 +# 1335| mu1335_6(unknown) = ^CallSideEffect : ~m? +# 1336| v1336_1(void) = NoOp : +# 1336| r1336_2(glval<C>) = VariableAddress[c] : +# 1336| r1336_3(glval<unknown>) = FunctionAddress[~C] : +# 1336| v1336_4(void) = Call[~C] : func:r1336_3, this:r1336_2 +# 1336| mu1336_5(unknown) = ^CallSideEffect : ~m? +# 1336| v1336_6(void) = ^IndirectReadSideEffect[-1] : &:r1336_2, ~m? +# 1336| mu1336_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1336_2 +# 1319| v1319_10(void) = ReturnIndirection[a_arg] : &:r1319_8, ~m? +# 1319| v1319_11(void) = ReturnVoid : +# 1319| v1319_12(void) = AliasedUse : ~m? +# 1319| v1319_13(void) = ExitFunction : + +# 1338| int missingReturnValue(bool, int) +# 1338| Block 0 +# 1338| v1338_1(void) = EnterFunction : +# 1338| mu1338_2(unknown) = AliasedDefinition : +# 1338| mu1338_3(unknown) = InitializeNonLocal : +# 1338| r1338_4(glval<bool>) = VariableAddress[b] : +# 1338| mu1338_5(bool) = InitializeParameter[b] : &:r1338_4 +# 1338| r1338_6(glval<int>) = VariableAddress[x] : +# 1338| mu1338_7(int) = InitializeParameter[x] : &:r1338_6 +# 1339| r1339_1(glval<bool>) = VariableAddress[b] : +# 1339| r1339_2(bool) = Load[b] : &:r1339_1, ~m? +# 1339| v1339_3(void) = ConditionalBranch : r1339_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1291| Block 1 -# 1291| r1291_8(glval<int>) = VariableAddress[#return] : -# 1291| v1291_9(void) = ReturnValue : &:r1291_8, ~m? -# 1291| v1291_10(void) = AliasedUse : ~m? -# 1291| v1291_11(void) = ExitFunction : - -# 1293| Block 2 -# 1293| r1293_1(glval<int>) = VariableAddress[#return] : -# 1293| r1293_2(glval<int>) = VariableAddress[x] : -# 1293| r1293_3(int) = Load[x] : &:r1293_2, ~m? -# 1293| mu1293_4(int) = Store[#return] : &:r1293_1, r1293_3 +# 1338| Block 1 +# 1338| r1338_8(glval<int>) = VariableAddress[#return] : +# 1338| v1338_9(void) = ReturnValue : &:r1338_8, ~m? +# 1338| v1338_10(void) = AliasedUse : ~m? +# 1338| v1338_11(void) = ExitFunction : + +# 1340| Block 2 +# 1340| r1340_1(glval<int>) = VariableAddress[#return] : +# 1340| r1340_2(glval<int>) = VariableAddress[x] : +# 1340| r1340_3(int) = Load[x] : &:r1340_2, ~m? +# 1340| mu1340_4(int) = Store[#return] : &:r1340_1, r1340_3 #-----| Goto -> Block 1 -# 1295| Block 3 -# 1295| r1295_1(glval<int>) = VariableAddress[#return] : -# 1295| mu1295_2(int) = Uninitialized[#return] : &:r1295_1 +# 1342| Block 3 +# 1342| r1342_1(glval<int>) = VariableAddress[#return] : +# 1342| mu1342_2(int) = Uninitialized[#return] : &:r1342_1 #-----| Goto -> Block 1 -# 1297| void returnVoid(int, int) -# 1297| Block 0 -# 1297| v1297_1(void) = EnterFunction : -# 1297| mu1297_2(unknown) = AliasedDefinition : -# 1297| mu1297_3(unknown) = InitializeNonLocal : -# 1297| r1297_4(glval<int>) = VariableAddress[x] : -# 1297| mu1297_5(int) = InitializeParameter[x] : &:r1297_4 -# 1297| r1297_6(glval<int>) = VariableAddress[y] : -# 1297| mu1297_7(int) = InitializeParameter[y] : &:r1297_6 -# 1298| r1298_1(glval<unknown>) = FunctionAddress[IntegerOps] : -# 1298| r1298_2(glval<int>) = VariableAddress[x] : -# 1298| r1298_3(int) = Load[x] : &:r1298_2, ~m? -# 1298| r1298_4(glval<int>) = VariableAddress[y] : -# 1298| r1298_5(int) = Load[y] : &:r1298_4, ~m? -# 1298| v1298_6(void) = Call[IntegerOps] : func:r1298_1, 0:r1298_3, 1:r1298_5 -# 1298| mu1298_7(unknown) = ^CallSideEffect : ~m? -# 1298| v1298_8(void) = NoOp : -# 1297| v1297_8(void) = ReturnVoid : -# 1297| v1297_9(void) = AliasedUse : ~m? -# 1297| v1297_10(void) = ExitFunction : - -# 1301| void gccBinaryConditional(bool, int, long) -# 1301| Block 0 -# 1301| v1301_1(void) = EnterFunction : -# 1301| mu1301_2(unknown) = AliasedDefinition : -# 1301| mu1301_3(unknown) = InitializeNonLocal : -# 1301| r1301_4(glval<bool>) = VariableAddress[b] : -# 1301| mu1301_5(bool) = InitializeParameter[b] : &:r1301_4 -# 1301| r1301_6(glval<int>) = VariableAddress[x] : -# 1301| mu1301_7(int) = InitializeParameter[x] : &:r1301_6 -# 1301| r1301_8(glval<long>) = VariableAddress[y] : -# 1301| mu1301_9(long) = InitializeParameter[y] : &:r1301_8 -# 1302| r1302_1(glval<int>) = VariableAddress[z] : -# 1302| r1302_2(glval<int>) = VariableAddress[x] : -# 1302| r1302_3(int) = Load[x] : &:r1302_2, ~m? -# 1302| mu1302_4(int) = Store[z] : &:r1302_1, r1302_3 -# 1303| r1303_1(glval<bool>) = VariableAddress[b] : -# 1303| r1303_2(bool) = Load[b] : &:r1303_1, ~m? -# 1303| v1303_3(void) = ConditionalBranch : r1303_2 +# 1344| void returnVoid(int, int) +# 1344| Block 0 +# 1344| v1344_1(void) = EnterFunction : +# 1344| mu1344_2(unknown) = AliasedDefinition : +# 1344| mu1344_3(unknown) = InitializeNonLocal : +# 1344| r1344_4(glval<int>) = VariableAddress[x] : +# 1344| mu1344_5(int) = InitializeParameter[x] : &:r1344_4 +# 1344| r1344_6(glval<int>) = VariableAddress[y] : +# 1344| mu1344_7(int) = InitializeParameter[y] : &:r1344_6 +# 1345| r1345_1(glval<unknown>) = FunctionAddress[IntegerOps] : +# 1345| r1345_2(glval<int>) = VariableAddress[x] : +# 1345| r1345_3(int) = Load[x] : &:r1345_2, ~m? +# 1345| r1345_4(glval<int>) = VariableAddress[y] : +# 1345| r1345_5(int) = Load[y] : &:r1345_4, ~m? +# 1345| v1345_6(void) = Call[IntegerOps] : func:r1345_1, 0:r1345_3, 1:r1345_5 +# 1345| mu1345_7(unknown) = ^CallSideEffect : ~m? +# 1345| v1345_8(void) = NoOp : +# 1344| v1344_8(void) = ReturnVoid : +# 1344| v1344_9(void) = AliasedUse : ~m? +# 1344| v1344_10(void) = ExitFunction : + +# 1348| void gccBinaryConditional(bool, int, long) +# 1348| Block 0 +# 1348| v1348_1(void) = EnterFunction : +# 1348| mu1348_2(unknown) = AliasedDefinition : +# 1348| mu1348_3(unknown) = InitializeNonLocal : +# 1348| r1348_4(glval<bool>) = VariableAddress[b] : +# 1348| mu1348_5(bool) = InitializeParameter[b] : &:r1348_4 +# 1348| r1348_6(glval<int>) = VariableAddress[x] : +# 1348| mu1348_7(int) = InitializeParameter[x] : &:r1348_6 +# 1348| r1348_8(glval<long>) = VariableAddress[y] : +# 1348| mu1348_9(long) = InitializeParameter[y] : &:r1348_8 +# 1349| r1349_1(glval<int>) = VariableAddress[z] : +# 1349| r1349_2(glval<int>) = VariableAddress[x] : +# 1349| r1349_3(int) = Load[x] : &:r1349_2, ~m? +# 1349| mu1349_4(int) = Store[z] : &:r1349_1, r1349_3 +# 1350| r1350_1(glval<bool>) = VariableAddress[b] : +# 1350| r1350_2(bool) = Load[b] : &:r1350_1, ~m? +# 1350| v1350_3(void) = ConditionalBranch : r1350_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1303| Block 1 -# 1303| r1303_4(glval<int>) = VariableAddress[#temp1303:9] : -# 1303| r1303_5(int) = Load[#temp1303:9] : &:r1303_4, ~m? -# 1303| r1303_6(glval<int>) = VariableAddress[z] : -# 1303| mu1303_7(int) = Store[z] : &:r1303_6, r1303_5 -# 1304| r1304_1(glval<bool>) = VariableAddress[b] : -# 1304| r1304_2(bool) = Load[b] : &:r1304_1, ~m? -# 1304| v1304_3(void) = ConditionalBranch : r1304_2 +# 1350| Block 1 +# 1350| r1350_4(glval<int>) = VariableAddress[#temp1350:9] : +# 1350| r1350_5(int) = Load[#temp1350:9] : &:r1350_4, ~m? +# 1350| r1350_6(glval<int>) = VariableAddress[z] : +# 1350| mu1350_7(int) = Store[z] : &:r1350_6, r1350_5 +# 1351| r1351_1(glval<bool>) = VariableAddress[b] : +# 1351| r1351_2(bool) = Load[b] : &:r1351_1, ~m? +# 1351| v1351_3(void) = ConditionalBranch : r1351_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1303| Block 2 -# 1303| r1303_8(glval<int>) = VariableAddress[#temp1303:9] : -# 1303| mu1303_9(int) = Store[#temp1303:9] : &:r1303_8, r1303_2 +# 1350| Block 2 +# 1350| r1350_8(glval<int>) = VariableAddress[#temp1350:9] : +# 1350| mu1350_9(int) = Store[#temp1350:9] : &:r1350_8, r1350_2 #-----| Goto -> Block 1 -# 1303| Block 3 -# 1303| r1303_10(glval<int>) = VariableAddress[x] : -# 1303| r1303_11(int) = Load[x] : &:r1303_10, ~m? -# 1303| r1303_12(glval<int>) = VariableAddress[#temp1303:9] : -# 1303| mu1303_13(int) = Store[#temp1303:9] : &:r1303_12, r1303_11 +# 1350| Block 3 +# 1350| r1350_10(glval<int>) = VariableAddress[x] : +# 1350| r1350_11(int) = Load[x] : &:r1350_10, ~m? +# 1350| r1350_12(glval<int>) = VariableAddress[#temp1350:9] : +# 1350| mu1350_13(int) = Store[#temp1350:9] : &:r1350_12, r1350_11 #-----| Goto -> Block 1 -# 1304| Block 4 -# 1304| r1304_4(glval<long>) = VariableAddress[#temp1304:9] : -# 1304| r1304_5(long) = Load[#temp1304:9] : &:r1304_4, ~m? -# 1304| r1304_6(int) = Convert : r1304_5 -# 1304| r1304_7(glval<int>) = VariableAddress[z] : -# 1304| mu1304_8(int) = Store[z] : &:r1304_7, r1304_6 -# 1305| r1305_1(glval<int>) = VariableAddress[x] : -# 1305| r1305_2(int) = Load[x] : &:r1305_1, ~m? -# 1305| r1305_3(int) = Constant[0] : -# 1305| r1305_4(bool) = CompareNE : r1305_2, r1305_3 -# 1305| v1305_5(void) = ConditionalBranch : r1305_4 +# 1351| Block 4 +# 1351| r1351_4(glval<long>) = VariableAddress[#temp1351:9] : +# 1351| r1351_5(long) = Load[#temp1351:9] : &:r1351_4, ~m? +# 1351| r1351_6(int) = Convert : r1351_5 +# 1351| r1351_7(glval<int>) = VariableAddress[z] : +# 1351| mu1351_8(int) = Store[z] : &:r1351_7, r1351_6 +# 1352| r1352_1(glval<int>) = VariableAddress[x] : +# 1352| r1352_2(int) = Load[x] : &:r1352_1, ~m? +# 1352| r1352_3(int) = Constant[0] : +# 1352| r1352_4(bool) = CompareNE : r1352_2, r1352_3 +# 1352| v1352_5(void) = ConditionalBranch : r1352_4 #-----| False -> Block 9 #-----| True -> Block 8 -# 1304| Block 5 -# 1304| r1304_9(glval<long>) = VariableAddress[#temp1304:9] : -# 1304| mu1304_10(long) = Store[#temp1304:9] : &:r1304_9, r1304_2 +# 1351| Block 5 +# 1351| r1351_9(glval<long>) = VariableAddress[#temp1351:9] : +# 1351| mu1351_10(long) = Store[#temp1351:9] : &:r1351_9, r1351_2 #-----| Goto -> Block 4 -# 1304| Block 6 -# 1304| r1304_11(glval<long>) = VariableAddress[y] : -# 1304| r1304_12(long) = Load[y] : &:r1304_11, ~m? -# 1304| r1304_13(glval<long>) = VariableAddress[#temp1304:9] : -# 1304| mu1304_14(long) = Store[#temp1304:9] : &:r1304_13, r1304_12 +# 1351| Block 6 +# 1351| r1351_11(glval<long>) = VariableAddress[y] : +# 1351| r1351_12(long) = Load[y] : &:r1351_11, ~m? +# 1351| r1351_13(glval<long>) = VariableAddress[#temp1351:9] : +# 1351| mu1351_14(long) = Store[#temp1351:9] : &:r1351_13, r1351_12 #-----| Goto -> Block 4 -# 1305| Block 7 -# 1305| r1305_6(glval<int>) = VariableAddress[#temp1305:9] : -# 1305| r1305_7(int) = Load[#temp1305:9] : &:r1305_6, ~m? -# 1305| r1305_8(glval<int>) = VariableAddress[z] : -# 1305| mu1305_9(int) = Store[z] : &:r1305_8, r1305_7 -# 1306| r1306_1(glval<int>) = VariableAddress[x] : -# 1306| r1306_2(int) = Load[x] : &:r1306_1, ~m? -# 1306| r1306_3(int) = Constant[0] : -# 1306| r1306_4(bool) = CompareNE : r1306_2, r1306_3 -# 1306| v1306_5(void) = ConditionalBranch : r1306_4 +# 1352| Block 7 +# 1352| r1352_6(glval<int>) = VariableAddress[#temp1352:9] : +# 1352| r1352_7(int) = Load[#temp1352:9] : &:r1352_6, ~m? +# 1352| r1352_8(glval<int>) = VariableAddress[z] : +# 1352| mu1352_9(int) = Store[z] : &:r1352_8, r1352_7 +# 1353| r1353_1(glval<int>) = VariableAddress[x] : +# 1353| r1353_2(int) = Load[x] : &:r1353_1, ~m? +# 1353| r1353_3(int) = Constant[0] : +# 1353| r1353_4(bool) = CompareNE : r1353_2, r1353_3 +# 1353| v1353_5(void) = ConditionalBranch : r1353_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 1305| Block 8 -# 1305| r1305_10(glval<int>) = VariableAddress[#temp1305:9] : -# 1305| mu1305_11(int) = Store[#temp1305:9] : &:r1305_10, r1305_2 +# 1352| Block 8 +# 1352| r1352_10(glval<int>) = VariableAddress[#temp1352:9] : +# 1352| mu1352_11(int) = Store[#temp1352:9] : &:r1352_10, r1352_2 #-----| Goto -> Block 7 -# 1305| Block 9 -# 1305| r1305_12(glval<int>) = VariableAddress[x] : -# 1305| r1305_13(int) = Load[x] : &:r1305_12, ~m? -# 1305| r1305_14(glval<int>) = VariableAddress[#temp1305:9] : -# 1305| mu1305_15(int) = Store[#temp1305:9] : &:r1305_14, r1305_13 +# 1352| Block 9 +# 1352| r1352_12(glval<int>) = VariableAddress[x] : +# 1352| r1352_13(int) = Load[x] : &:r1352_12, ~m? +# 1352| r1352_14(glval<int>) = VariableAddress[#temp1352:9] : +# 1352| mu1352_15(int) = Store[#temp1352:9] : &:r1352_14, r1352_13 #-----| Goto -> Block 7 -# 1306| Block 10 -# 1306| r1306_6(glval<long>) = VariableAddress[#temp1306:9] : -# 1306| r1306_7(long) = Load[#temp1306:9] : &:r1306_6, ~m? -# 1306| r1306_8(int) = Convert : r1306_7 -# 1306| r1306_9(glval<int>) = VariableAddress[z] : -# 1306| mu1306_10(int) = Store[z] : &:r1306_9, r1306_8 -# 1307| r1307_1(glval<long>) = VariableAddress[y] : -# 1307| r1307_2(long) = Load[y] : &:r1307_1, ~m? -# 1307| r1307_3(long) = Constant[0] : -# 1307| r1307_4(bool) = CompareNE : r1307_2, r1307_3 -# 1307| v1307_5(void) = ConditionalBranch : r1307_4 +# 1353| Block 10 +# 1353| r1353_6(glval<long>) = VariableAddress[#temp1353:9] : +# 1353| r1353_7(long) = Load[#temp1353:9] : &:r1353_6, ~m? +# 1353| r1353_8(int) = Convert : r1353_7 +# 1353| r1353_9(glval<int>) = VariableAddress[z] : +# 1353| mu1353_10(int) = Store[z] : &:r1353_9, r1353_8 +# 1354| r1354_1(glval<long>) = VariableAddress[y] : +# 1354| r1354_2(long) = Load[y] : &:r1354_1, ~m? +# 1354| r1354_3(long) = Constant[0] : +# 1354| r1354_4(bool) = CompareNE : r1354_2, r1354_3 +# 1354| v1354_5(void) = ConditionalBranch : r1354_4 #-----| False -> Block 15 #-----| True -> Block 14 -# 1306| Block 11 -# 1306| r1306_11(glval<long>) = VariableAddress[#temp1306:9] : -# 1306| mu1306_12(long) = Store[#temp1306:9] : &:r1306_11, r1306_2 +# 1353| Block 11 +# 1353| r1353_11(glval<long>) = VariableAddress[#temp1353:9] : +# 1353| mu1353_12(long) = Store[#temp1353:9] : &:r1353_11, r1353_2 #-----| Goto -> Block 10 -# 1306| Block 12 -# 1306| r1306_13(glval<long>) = VariableAddress[y] : -# 1306| r1306_14(long) = Load[y] : &:r1306_13, ~m? -# 1306| r1306_15(glval<long>) = VariableAddress[#temp1306:9] : -# 1306| mu1306_16(long) = Store[#temp1306:9] : &:r1306_15, r1306_14 +# 1353| Block 12 +# 1353| r1353_13(glval<long>) = VariableAddress[y] : +# 1353| r1353_14(long) = Load[y] : &:r1353_13, ~m? +# 1353| r1353_15(glval<long>) = VariableAddress[#temp1353:9] : +# 1353| mu1353_16(long) = Store[#temp1353:9] : &:r1353_15, r1353_14 #-----| Goto -> Block 10 -# 1307| Block 13 -# 1307| r1307_6(glval<long>) = VariableAddress[#temp1307:9] : -# 1307| r1307_7(long) = Load[#temp1307:9] : &:r1307_6, ~m? -# 1307| r1307_8(int) = Convert : r1307_7 -# 1307| r1307_9(glval<int>) = VariableAddress[z] : -# 1307| mu1307_10(int) = Store[z] : &:r1307_9, r1307_8 -# 1308| r1308_1(glval<long>) = VariableAddress[y] : -# 1308| r1308_2(long) = Load[y] : &:r1308_1, ~m? -# 1308| r1308_3(long) = Constant[0] : -# 1308| r1308_4(bool) = CompareNE : r1308_2, r1308_3 -# 1308| v1308_5(void) = ConditionalBranch : r1308_4 +# 1354| Block 13 +# 1354| r1354_6(glval<long>) = VariableAddress[#temp1354:9] : +# 1354| r1354_7(long) = Load[#temp1354:9] : &:r1354_6, ~m? +# 1354| r1354_8(int) = Convert : r1354_7 +# 1354| r1354_9(glval<int>) = VariableAddress[z] : +# 1354| mu1354_10(int) = Store[z] : &:r1354_9, r1354_8 +# 1355| r1355_1(glval<long>) = VariableAddress[y] : +# 1355| r1355_2(long) = Load[y] : &:r1355_1, ~m? +# 1355| r1355_3(long) = Constant[0] : +# 1355| r1355_4(bool) = CompareNE : r1355_2, r1355_3 +# 1355| v1355_5(void) = ConditionalBranch : r1355_4 #-----| False -> Block 18 #-----| True -> Block 17 -# 1307| Block 14 -# 1307| r1307_11(glval<long>) = VariableAddress[#temp1307:9] : -# 1307| mu1307_12(long) = Store[#temp1307:9] : &:r1307_11, r1307_2 +# 1354| Block 14 +# 1354| r1354_11(glval<long>) = VariableAddress[#temp1354:9] : +# 1354| mu1354_12(long) = Store[#temp1354:9] : &:r1354_11, r1354_2 #-----| Goto -> Block 13 -# 1307| Block 15 -# 1307| r1307_13(glval<int>) = VariableAddress[x] : -# 1307| r1307_14(int) = Load[x] : &:r1307_13, ~m? -# 1307| r1307_15(long) = Convert : r1307_14 -# 1307| r1307_16(glval<long>) = VariableAddress[#temp1307:9] : -# 1307| mu1307_17(long) = Store[#temp1307:9] : &:r1307_16, r1307_15 +# 1354| Block 15 +# 1354| r1354_13(glval<int>) = VariableAddress[x] : +# 1354| r1354_14(int) = Load[x] : &:r1354_13, ~m? +# 1354| r1354_15(long) = Convert : r1354_14 +# 1354| r1354_16(glval<long>) = VariableAddress[#temp1354:9] : +# 1354| mu1354_17(long) = Store[#temp1354:9] : &:r1354_16, r1354_15 #-----| Goto -> Block 13 -# 1308| Block 16 -# 1308| r1308_6(glval<long>) = VariableAddress[#temp1308:9] : -# 1308| r1308_7(long) = Load[#temp1308:9] : &:r1308_6, ~m? -# 1308| r1308_8(int) = Convert : r1308_7 -# 1308| r1308_9(glval<int>) = VariableAddress[z] : -# 1308| mu1308_10(int) = Store[z] : &:r1308_9, r1308_8 -# 1310| r1310_1(glval<int>) = VariableAddress[x] : -# 1310| r1310_2(int) = Load[x] : &:r1310_1, ~m? -# 1310| r1310_3(int) = Constant[0] : -# 1310| r1310_4(bool) = CompareNE : r1310_2, r1310_3 -# 1310| v1310_5(void) = ConditionalBranch : r1310_4 +# 1355| Block 16 +# 1355| r1355_6(glval<long>) = VariableAddress[#temp1355:9] : +# 1355| r1355_7(long) = Load[#temp1355:9] : &:r1355_6, ~m? +# 1355| r1355_8(int) = Convert : r1355_7 +# 1355| r1355_9(glval<int>) = VariableAddress[z] : +# 1355| mu1355_10(int) = Store[z] : &:r1355_9, r1355_8 +# 1357| r1357_1(glval<int>) = VariableAddress[x] : +# 1357| r1357_2(int) = Load[x] : &:r1357_1, ~m? +# 1357| r1357_3(int) = Constant[0] : +# 1357| r1357_4(bool) = CompareNE : r1357_2, r1357_3 +# 1357| v1357_5(void) = ConditionalBranch : r1357_4 #-----| False -> Block 25 #-----| True -> Block 24 -# 1308| Block 17 -# 1308| r1308_11(glval<long>) = VariableAddress[#temp1308:9] : -# 1308| mu1308_12(long) = Store[#temp1308:9] : &:r1308_11, r1308_2 +# 1355| Block 17 +# 1355| r1355_11(glval<long>) = VariableAddress[#temp1355:9] : +# 1355| mu1355_12(long) = Store[#temp1355:9] : &:r1355_11, r1355_2 #-----| Goto -> Block 16 -# 1308| Block 18 -# 1308| r1308_13(glval<long>) = VariableAddress[y] : -# 1308| r1308_14(long) = Load[y] : &:r1308_13, ~m? -# 1308| r1308_15(glval<long>) = VariableAddress[#temp1308:9] : -# 1308| mu1308_16(long) = Store[#temp1308:9] : &:r1308_15, r1308_14 +# 1355| Block 18 +# 1355| r1355_13(glval<long>) = VariableAddress[y] : +# 1355| r1355_14(long) = Load[y] : &:r1355_13, ~m? +# 1355| r1355_15(glval<long>) = VariableAddress[#temp1355:9] : +# 1355| mu1355_16(long) = Store[#temp1355:9] : &:r1355_15, r1355_14 #-----| Goto -> Block 16 -# 1310| Block 19 -# 1310| r1310_6(glval<int>) = VariableAddress[#temp1310:9] : -# 1310| r1310_7(int) = Load[#temp1310:9] : &:r1310_6, ~m? -# 1310| r1310_8(glval<int>) = VariableAddress[z] : -# 1310| mu1310_9(int) = Store[z] : &:r1310_8, r1310_7 -# 1311| v1311_1(void) = NoOp : -# 1301| v1301_10(void) = ReturnVoid : -# 1301| v1301_11(void) = AliasedUse : ~m? -# 1301| v1301_12(void) = ExitFunction : - -# 1310| Block 20 -# 1310| r1310_10(glval<int>) = VariableAddress[#temp1310:9] : -# 1310| mu1310_11(int) = Store[#temp1310:9] : &:r1310_10, r1310_16 +# 1357| Block 19 +# 1357| r1357_6(glval<int>) = VariableAddress[#temp1357:9] : +# 1357| r1357_7(int) = Load[#temp1357:9] : &:r1357_6, ~m? +# 1357| r1357_8(glval<int>) = VariableAddress[z] : +# 1357| mu1357_9(int) = Store[z] : &:r1357_8, r1357_7 +# 1358| v1358_1(void) = NoOp : +# 1348| v1348_10(void) = ReturnVoid : +# 1348| v1348_11(void) = AliasedUse : ~m? +# 1348| v1348_12(void) = ExitFunction : + +# 1357| Block 20 +# 1357| r1357_10(glval<int>) = VariableAddress[#temp1357:9] : +# 1357| mu1357_11(int) = Store[#temp1357:9] : &:r1357_10, r1357_16 #-----| Goto -> Block 19 -# 1310| Block 21 -# 1310| r1310_12(glval<bool>) = VariableAddress[#temp1310:10] : -# 1310| r1310_13(bool) = Constant[0] : -# 1310| mu1310_14(bool) = Store[#temp1310:10] : &:r1310_12, r1310_13 +# 1357| Block 21 +# 1357| r1357_12(glval<bool>) = VariableAddress[#temp1357:10] : +# 1357| r1357_13(bool) = Constant[0] : +# 1357| mu1357_14(bool) = Store[#temp1357:10] : &:r1357_12, r1357_13 #-----| Goto -> Block 22 -# 1310| Block 22 -# 1310| r1310_15(glval<bool>) = VariableAddress[#temp1310:10] : -# 1310| r1310_16(bool) = Load[#temp1310:10] : &:r1310_15, ~m? -# 1310| v1310_17(void) = ConditionalBranch : r1310_16 +# 1357| Block 22 +# 1357| r1357_15(glval<bool>) = VariableAddress[#temp1357:10] : +# 1357| r1357_16(bool) = Load[#temp1357:10] : &:r1357_15, ~m? +# 1357| v1357_17(void) = ConditionalBranch : r1357_16 #-----| False -> Block 26 #-----| True -> Block 20 -# 1310| Block 23 -# 1310| r1310_18(glval<bool>) = VariableAddress[#temp1310:10] : -# 1310| r1310_19(bool) = Constant[1] : -# 1310| mu1310_20(bool) = Store[#temp1310:10] : &:r1310_18, r1310_19 +# 1357| Block 23 +# 1357| r1357_18(glval<bool>) = VariableAddress[#temp1357:10] : +# 1357| r1357_19(bool) = Constant[1] : +# 1357| mu1357_20(bool) = Store[#temp1357:10] : &:r1357_18, r1357_19 #-----| Goto -> Block 22 -# 1310| Block 24 -# 1310| r1310_21(glval<bool>) = VariableAddress[b] : -# 1310| r1310_22(bool) = Load[b] : &:r1310_21, ~m? -# 1310| v1310_23(void) = ConditionalBranch : r1310_22 +# 1357| Block 24 +# 1357| r1357_21(glval<bool>) = VariableAddress[b] : +# 1357| r1357_22(bool) = Load[b] : &:r1357_21, ~m? +# 1357| v1357_23(void) = ConditionalBranch : r1357_22 #-----| False -> Block 25 #-----| True -> Block 23 -# 1310| Block 25 -# 1310| r1310_24(glval<long>) = VariableAddress[y] : -# 1310| r1310_25(long) = Load[y] : &:r1310_24, ~m? -# 1310| r1310_26(long) = Constant[0] : -# 1310| r1310_27(bool) = CompareNE : r1310_25, r1310_26 -# 1310| v1310_28(void) = ConditionalBranch : r1310_27 +# 1357| Block 25 +# 1357| r1357_24(glval<long>) = VariableAddress[y] : +# 1357| r1357_25(long) = Load[y] : &:r1357_24, ~m? +# 1357| r1357_26(long) = Constant[0] : +# 1357| r1357_27(bool) = CompareNE : r1357_25, r1357_26 +# 1357| v1357_28(void) = ConditionalBranch : r1357_27 #-----| False -> Block 21 #-----| True -> Block 23 -# 1310| Block 26 -# 1310| r1310_29(glval<int>) = VariableAddress[x] : -# 1310| r1310_30(int) = Load[x] : &:r1310_29, ~m? -# 1310| r1310_31(glval<int>) = VariableAddress[#temp1310:9] : -# 1310| mu1310_32(int) = Store[#temp1310:9] : &:r1310_31, r1310_30 +# 1357| Block 26 +# 1357| r1357_29(glval<int>) = VariableAddress[x] : +# 1357| r1357_30(int) = Load[x] : &:r1357_29, ~m? +# 1357| r1357_31(glval<int>) = VariableAddress[#temp1357:9] : +# 1357| mu1357_32(int) = Store[#temp1357:9] : &:r1357_31, r1357_30 #-----| Goto -> Block 19 -# 1316| int shortCircuitConditional(int, int) -# 1316| Block 0 -# 1316| v1316_1(void) = EnterFunction : -# 1316| mu1316_2(unknown) = AliasedDefinition : -# 1316| mu1316_3(unknown) = InitializeNonLocal : -# 1316| r1316_4(glval<int>) = VariableAddress[x] : -# 1316| mu1316_5(int) = InitializeParameter[x] : &:r1316_4 -# 1316| r1316_6(glval<int>) = VariableAddress[y] : -# 1316| mu1316_7(int) = InitializeParameter[y] : &:r1316_6 -# 1317| r1317_1(glval<int>) = VariableAddress[#return] : -# 1317| r1317_2(glval<unknown>) = FunctionAddress[predicateA] : -# 1317| r1317_3(bool) = Call[predicateA] : func:r1317_2 -# 1317| mu1317_4(unknown) = ^CallSideEffect : ~m? -# 1317| v1317_5(void) = ConditionalBranch : r1317_3 +# 1363| int shortCircuitConditional(int, int) +# 1363| Block 0 +# 1363| v1363_1(void) = EnterFunction : +# 1363| mu1363_2(unknown) = AliasedDefinition : +# 1363| mu1363_3(unknown) = InitializeNonLocal : +# 1363| r1363_4(glval<int>) = VariableAddress[x] : +# 1363| mu1363_5(int) = InitializeParameter[x] : &:r1363_4 +# 1363| r1363_6(glval<int>) = VariableAddress[y] : +# 1363| mu1363_7(int) = InitializeParameter[y] : &:r1363_6 +# 1364| r1364_1(glval<int>) = VariableAddress[#return] : +# 1364| r1364_2(glval<unknown>) = FunctionAddress[predicateA] : +# 1364| r1364_3(bool) = Call[predicateA] : func:r1364_2 +# 1364| mu1364_4(unknown) = ^CallSideEffect : ~m? +# 1364| v1364_5(void) = ConditionalBranch : r1364_3 #-----| False -> Block 4 #-----| True -> Block 2 -# 1317| Block 1 -# 1317| r1317_6(glval<int>) = VariableAddress[#temp1317:12] : -# 1317| r1317_7(int) = Load[#temp1317:12] : &:r1317_6, ~m? -# 1317| mu1317_8(int) = Store[#return] : &:r1317_1, r1317_7 -# 1316| r1316_8(glval<int>) = VariableAddress[#return] : -# 1316| v1316_9(void) = ReturnValue : &:r1316_8, ~m? -# 1316| v1316_10(void) = AliasedUse : ~m? -# 1316| v1316_11(void) = ExitFunction : - -# 1317| Block 2 -# 1317| r1317_9(glval<unknown>) = FunctionAddress[predicateB] : -# 1317| r1317_10(bool) = Call[predicateB] : func:r1317_9 -# 1317| mu1317_11(unknown) = ^CallSideEffect : ~m? -# 1317| v1317_12(void) = ConditionalBranch : r1317_10 +# 1364| Block 1 +# 1364| r1364_6(glval<int>) = VariableAddress[#temp1364:12] : +# 1364| r1364_7(int) = Load[#temp1364:12] : &:r1364_6, ~m? +# 1364| mu1364_8(int) = Store[#return] : &:r1364_1, r1364_7 +# 1363| r1363_8(glval<int>) = VariableAddress[#return] : +# 1363| v1363_9(void) = ReturnValue : &:r1363_8, ~m? +# 1363| v1363_10(void) = AliasedUse : ~m? +# 1363| v1363_11(void) = ExitFunction : + +# 1364| Block 2 +# 1364| r1364_9(glval<unknown>) = FunctionAddress[predicateB] : +# 1364| r1364_10(bool) = Call[predicateB] : func:r1364_9 +# 1364| mu1364_11(unknown) = ^CallSideEffect : ~m? +# 1364| v1364_12(void) = ConditionalBranch : r1364_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1317| Block 3 -# 1317| r1317_13(glval<int>) = VariableAddress[x] : -# 1317| r1317_14(int) = Load[x] : &:r1317_13, ~m? -# 1317| r1317_15(glval<int>) = VariableAddress[#temp1317:12] : -# 1317| mu1317_16(int) = Store[#temp1317:12] : &:r1317_15, r1317_14 +# 1364| Block 3 +# 1364| r1364_13(glval<int>) = VariableAddress[x] : +# 1364| r1364_14(int) = Load[x] : &:r1364_13, ~m? +# 1364| r1364_15(glval<int>) = VariableAddress[#temp1364:12] : +# 1364| mu1364_16(int) = Store[#temp1364:12] : &:r1364_15, r1364_14 #-----| Goto -> Block 1 -# 1317| Block 4 -# 1317| r1317_17(glval<int>) = VariableAddress[y] : -# 1317| r1317_18(int) = Load[y] : &:r1317_17, ~m? -# 1317| r1317_19(glval<int>) = VariableAddress[#temp1317:12] : -# 1317| mu1317_20(int) = Store[#temp1317:12] : &:r1317_19, r1317_18 +# 1364| Block 4 +# 1364| r1364_17(glval<int>) = VariableAddress[y] : +# 1364| r1364_18(int) = Load[y] : &:r1364_17, ~m? +# 1364| r1364_19(glval<int>) = VariableAddress[#temp1364:12] : +# 1364| mu1364_20(int) = Store[#temp1364:12] : &:r1364_19, r1364_18 #-----| Goto -> Block 1 -# 1322| void f(int*) -# 1322| Block 0 -# 1322| v1322_1(void) = EnterFunction : -# 1322| mu1322_2(unknown) = AliasedDefinition : -# 1322| mu1322_3(unknown) = InitializeNonLocal : -# 1322| r1322_4(glval<int *>) = VariableAddress[p] : -# 1322| mu1322_5(int *) = InitializeParameter[p] : &:r1322_4 -# 1322| r1322_6(int *) = Load[p] : &:r1322_4, ~m? -# 1322| mu1322_7(unknown) = InitializeIndirection[p] : &:r1322_6 -# 1324| r1324_1(glval<unknown>) = FunctionAddress[operator new] : -# 1324| r1324_2(unsigned long) = Constant[4] : -# 1324| r1324_3(glval<int *>) = VariableAddress[p] : -# 1324| r1324_4(int *) = Load[p] : &:r1324_3, ~m? -# 1324| r1324_5(void *) = Convert : r1324_4 -# 1324| r1324_6(void *) = Call[operator new] : func:r1324_1, 0:r1324_2, 1:r1324_5 -# 1324| mu1324_7(unknown) = ^CallSideEffect : ~m? -# 1324| mu1324_8(unknown) = ^InitializeDynamicAllocation : &:r1324_6 -# 1324| r1324_9(int *) = Convert : r1324_6 -# 1325| v1325_1(void) = NoOp : -# 1322| v1322_8(void) = ReturnIndirection[p] : &:r1322_6, ~m? -# 1322| v1322_9(void) = ReturnVoid : -# 1322| v1322_10(void) = AliasedUse : ~m? -# 1322| v1322_11(void) = ExitFunction : - -# 1328| Point defaultConstruct<Point>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| mu1328_2(unknown) = AliasedDefinition : -# 1328| mu1328_3(unknown) = InitializeNonLocal : -# 1329| r1329_1(glval<Point>) = VariableAddress[#return] : -# 1329| r1329_2(Point) = Constant[0] : -# 1329| mu1329_3(Point) = Store[#return] : &:r1329_1, r1329_2 -# 1328| r1328_4(glval<Point>) = VariableAddress[#return] : -# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? -# 1328| v1328_6(void) = AliasedUse : ~m? -# 1328| v1328_7(void) = ExitFunction : - -# 1328| String defaultConstruct<String>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| mu1328_2(unknown) = AliasedDefinition : -# 1328| mu1328_3(unknown) = InitializeNonLocal : -# 1329| r1329_1(glval<String>) = VariableAddress[#return] : -# 1329| mu1329_2(String) = Uninitialized[#return] : &:r1329_1 -# 1329| r1329_3(glval<unknown>) = FunctionAddress[String] : -# 1329| v1329_4(void) = Call[String] : func:r1329_3, this:r1329_1 -# 1329| mu1329_5(unknown) = ^CallSideEffect : ~m? -# 1329| mu1329_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 -# 1328| r1328_4(glval<String>) = VariableAddress[#return] : -# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? -# 1328| v1328_6(void) = AliasedUse : ~m? -# 1328| v1328_7(void) = ExitFunction : - -# 1328| copy_constructor defaultConstruct<copy_constructor>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| mu1328_2(unknown) = AliasedDefinition : -# 1328| mu1328_3(unknown) = InitializeNonLocal : -# 1329| r1329_1(glval<copy_constructor>) = VariableAddress[#return] : -# 1329| mu1329_2(copy_constructor) = Uninitialized[#return] : &:r1329_1 -# 1329| r1329_3(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1329| v1329_4(void) = Call[copy_constructor] : func:r1329_3, this:r1329_1 -# 1329| mu1329_5(unknown) = ^CallSideEffect : ~m? -# 1329| mu1329_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1329_1 -# 1328| r1328_4(glval<copy_constructor>) = VariableAddress[#return] : -# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? -# 1328| v1328_6(void) = AliasedUse : ~m? -# 1328| v1328_7(void) = ExitFunction : - -# 1328| destructor_only defaultConstruct<destructor_only>() -# 1328| Block 0 -# 1328| v1328_1(void) = EnterFunction : -# 1328| mu1328_2(unknown) = AliasedDefinition : -# 1328| mu1328_3(unknown) = InitializeNonLocal : -# 1329| r1329_1(glval<destructor_only>) = VariableAddress[#return] : -# 1329| r1329_2(destructor_only) = Constant[0] : -# 1329| mu1329_3(destructor_only) = Store[#return] : &:r1329_1, r1329_2 -# 1328| r1328_4(glval<destructor_only>) = VariableAddress[#return] : -# 1328| v1328_5(void) = ReturnValue : &:r1328_4, ~m? -# 1328| v1328_6(void) = AliasedUse : ~m? -# 1328| v1328_7(void) = ExitFunction : - -# 1367| void temporary_string() -# 1367| Block 0 -# 1367| v1367_1(void) = EnterFunction : -# 1367| mu1367_2(unknown) = AliasedDefinition : -# 1367| mu1367_3(unknown) = InitializeNonLocal : -# 1368| r1368_1(glval<String>) = VariableAddress[s] : -# 1368| r1368_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1368| r1368_3(String) = Call[returnValue] : func:r1368_2 -# 1368| mu1368_4(unknown) = ^CallSideEffect : ~m? -# 1368| mu1368_5(String) = Store[s] : &:r1368_1, r1368_3 -# 1369| r1369_1(glval<String &>) = VariableAddress[rs] : -# 1369| r1369_2(glval<String>) = VariableAddress[#temp1369:24] : -# 1369| r1369_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1369| r1369_4(String) = Call[returnValue] : func:r1369_3 -# 1369| mu1369_5(unknown) = ^CallSideEffect : ~m? -# 1369| mu1369_6(String) = Store[#temp1369:24] : &:r1369_2, r1369_4 -# 1369| r1369_7(glval<String>) = Convert : r1369_2 -# 1369| r1369_8(String &) = CopyValue : r1369_7 -# 1369| mu1369_9(String &) = Store[rs] : &:r1369_1, r1369_8 -# 1371| r1371_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1371| r1371_2(glval<String>) = VariableAddress[s] : -# 1371| r1371_3(glval<String>) = Convert : r1371_2 -# 1371| r1371_4(String &) = CopyValue : r1371_3 -# 1371| v1371_5(void) = Call[acceptRef] : func:r1371_1, 0:r1371_4 -# 1371| mu1371_6(unknown) = ^CallSideEffect : ~m? -# 1371| v1371_7(void) = ^BufferReadSideEffect[0] : &:r1371_4, ~m? -# 1372| r1372_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1372| r1372_2(glval<String>) = VariableAddress[#temp1372:23] : -# 1372| mu1372_3(String) = Uninitialized[#temp1372:23] : &:r1372_2 -# 1372| r1372_4(glval<unknown>) = FunctionAddress[String] : -# 1372| r1372_5(glval<char[4]>) = StringConstant["foo"] : -# 1372| r1372_6(char *) = Convert : r1372_5 -# 1372| v1372_7(void) = Call[String] : func:r1372_4, this:r1372_2, 0:r1372_6 -# 1372| mu1372_8(unknown) = ^CallSideEffect : ~m? -# 1372| v1372_9(void) = ^BufferReadSideEffect[0] : &:r1372_6, ~m? -# 1372| mu1372_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1372_2 -# 1372| r1372_11(String &) = CopyValue : r1372_2 -# 1372| v1372_12(void) = Call[acceptRef] : func:r1372_1, 0:r1372_11 -# 1372| mu1372_13(unknown) = ^CallSideEffect : ~m? -# 1372| v1372_14(void) = ^BufferReadSideEffect[0] : &:r1372_11, ~m? -# 1373| r1373_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1373| r1373_2(glval<String>) = VariableAddress[#temp1373:17] : -# 1373| mu1373_3(String) = Uninitialized[#temp1373:17] : &:r1373_2 -# 1373| r1373_4(glval<unknown>) = FunctionAddress[String] : -# 1373| r1373_5(glval<String>) = VariableAddress[s] : -# 1373| r1373_6(glval<String>) = Convert : r1373_5 -# 1373| r1373_7(String &) = CopyValue : r1373_6 -# 1373| v1373_8(void) = Call[String] : func:r1373_4, this:r1373_2, 0:r1373_7 -# 1373| mu1373_9(unknown) = ^CallSideEffect : ~m? -# 1373| v1373_10(void) = ^BufferReadSideEffect[0] : &:r1373_7, ~m? -# 1373| mu1373_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1373_2 -# 1373| r1373_12(String) = Load[#temp1373:17] : &:r1373_2, ~m? -# 1373| v1373_13(void) = Call[acceptValue] : func:r1373_1, 0:r1373_12 -# 1373| mu1373_14(unknown) = ^CallSideEffect : ~m? -# 1374| r1374_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1374| r1374_2(glval<String>) = VariableAddress[#temp1374:25] : -# 1374| mu1374_3(String) = Uninitialized[#temp1374:25] : &:r1374_2 -# 1374| r1374_4(glval<unknown>) = FunctionAddress[String] : -# 1374| r1374_5(glval<char[4]>) = StringConstant["foo"] : -# 1374| r1374_6(char *) = Convert : r1374_5 -# 1374| v1374_7(void) = Call[String] : func:r1374_4, this:r1374_2, 0:r1374_6 -# 1374| mu1374_8(unknown) = ^CallSideEffect : ~m? -# 1374| v1374_9(void) = ^BufferReadSideEffect[0] : &:r1374_6, ~m? -# 1374| mu1374_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1374_2 -# 1374| r1374_11(String) = Load[#temp1374:25] : &:r1374_2, ~m? -# 1374| v1374_12(void) = Call[acceptValue] : func:r1374_1, 0:r1374_11 -# 1374| mu1374_13(unknown) = ^CallSideEffect : ~m? -# 1375| r1375_1(glval<String>) = VariableAddress[#temp1375:5] : -# 1375| mu1375_2(String) = Uninitialized[#temp1375:5] : &:r1375_1 -# 1375| r1375_3(glval<unknown>) = FunctionAddress[String] : -# 1375| v1375_4(void) = Call[String] : func:r1375_3, this:r1375_1 -# 1375| mu1375_5(unknown) = ^CallSideEffect : ~m? -# 1375| mu1375_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1375_1 -# 1375| r1375_7(glval<String>) = Convert : r1375_1 -# 1375| r1375_8(glval<unknown>) = FunctionAddress[c_str] : -# 1375| r1375_9(char *) = Call[c_str] : func:r1375_8, this:r1375_7 -# 1375| mu1375_10(unknown) = ^CallSideEffect : ~m? -# 1375| v1375_11(void) = ^IndirectReadSideEffect[-1] : &:r1375_7, ~m? -# 1376| r1376_1(glval<String>) = VariableAddress[#temp1376:5] : -# 1376| r1376_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1376| r1376_3(String) = Call[returnValue] : func:r1376_2 -# 1376| mu1376_4(unknown) = ^CallSideEffect : ~m? -# 1376| mu1376_5(String) = Store[#temp1376:5] : &:r1376_1, r1376_3 -# 1376| r1376_6(glval<String>) = Convert : r1376_1 -# 1376| r1376_7(glval<unknown>) = FunctionAddress[c_str] : -# 1376| r1376_8(char *) = Call[c_str] : func:r1376_7, this:r1376_6 -# 1376| mu1376_9(unknown) = ^CallSideEffect : ~m? -# 1376| v1376_10(void) = ^IndirectReadSideEffect[-1] : &:r1376_6, ~m? -# 1378| r1378_1(glval<String>) = VariableAddress[#temp1378:5] : -# 1378| r1378_2(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1378| r1378_3(String) = Call[defaultConstruct] : func:r1378_2 -# 1378| mu1378_4(unknown) = ^CallSideEffect : ~m? -# 1378| mu1378_5(String) = Store[#temp1378:5] : &:r1378_1, r1378_3 -# 1379| v1379_1(void) = NoOp : -# 1379| r1379_2(glval<String>) = VariableAddress[s] : -# 1379| r1379_3(glval<unknown>) = FunctionAddress[~String] : -# 1379| v1379_4(void) = Call[~String] : func:r1379_3, this:r1379_2 -# 1379| mu1379_5(unknown) = ^CallSideEffect : ~m? -# 1379| v1379_6(void) = ^IndirectReadSideEffect[-1] : &:r1379_2, ~m? -# 1379| mu1379_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1379_2 -# 1367| v1367_4(void) = ReturnVoid : -# 1367| v1367_5(void) = AliasedUse : ~m? -# 1367| v1367_6(void) = ExitFunction : - -# 1381| void temporary_destructor_only() -# 1381| Block 0 -# 1381| v1381_1(void) = EnterFunction : -# 1381| mu1381_2(unknown) = AliasedDefinition : -# 1381| mu1381_3(unknown) = InitializeNonLocal : -# 1382| r1382_1(glval<destructor_only>) = VariableAddress[d] : -# 1382| r1382_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1382| r1382_3(destructor_only) = Call[returnValue] : func:r1382_2 -# 1382| mu1382_4(unknown) = ^CallSideEffect : ~m? -# 1382| mu1382_5(destructor_only) = Store[d] : &:r1382_1, r1382_3 -# 1383| r1383_1(glval<destructor_only &>) = VariableAddress[rd] : -# 1383| r1383_2(glval<destructor_only>) = VariableAddress[#temp1383:33] : -# 1383| r1383_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1383| r1383_4(destructor_only) = Call[returnValue] : func:r1383_3 -# 1383| mu1383_5(unknown) = ^CallSideEffect : ~m? -# 1383| mu1383_6(destructor_only) = Store[#temp1383:33] : &:r1383_2, r1383_4 -# 1383| r1383_7(glval<destructor_only>) = Convert : r1383_2 -# 1383| r1383_8(destructor_only &) = CopyValue : r1383_7 -# 1383| mu1383_9(destructor_only &) = Store[rd] : &:r1383_1, r1383_8 -# 1384| r1384_1(glval<destructor_only>) = VariableAddress[d2] : -# 1384| mu1384_2(destructor_only) = Uninitialized[d2] : &:r1384_1 -# 1385| r1385_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1385| r1385_2(glval<destructor_only>) = VariableAddress[d] : -# 1385| r1385_3(glval<destructor_only>) = Convert : r1385_2 -# 1385| r1385_4(destructor_only &) = CopyValue : r1385_3 -# 1385| v1385_5(void) = Call[acceptRef] : func:r1385_1, 0:r1385_4 -# 1385| mu1385_6(unknown) = ^CallSideEffect : ~m? -# 1385| v1385_7(void) = ^BufferReadSideEffect[0] : &:r1385_4, ~m? -# 1386| r1386_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1386| r1386_2(glval<destructor_only>) = VariableAddress[#temp1386:17] : -# 1386| r1386_3(glval<destructor_only>) = VariableAddress[d] : -# 1386| r1386_4(destructor_only) = Load[d] : &:r1386_3, ~m? -# 1386| mu1386_5(destructor_only) = Store[#temp1386:17] : &:r1386_2, r1386_4 -# 1386| r1386_6(destructor_only) = Load[#temp1386:17] : &:r1386_2, ~m? -# 1386| v1386_7(void) = Call[acceptValue] : func:r1386_1, 0:r1386_6 -# 1386| mu1386_8(unknown) = ^CallSideEffect : ~m? -# 1387| r1387_1(glval<destructor_only>) = VariableAddress[#temp1387:5] : -# 1387| r1387_2(destructor_only) = Constant[0] : -# 1387| mu1387_3(destructor_only) = Store[#temp1387:5] : &:r1387_1, r1387_2 -# 1387| r1387_4(glval<unknown>) = FunctionAddress[method] : -# 1387| v1387_5(void) = Call[method] : func:r1387_4, this:r1387_1 -# 1387| mu1387_6(unknown) = ^CallSideEffect : ~m? -# 1387| v1387_7(void) = ^IndirectReadSideEffect[-1] : &:r1387_1, ~m? -# 1387| mu1387_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1387_1 -# 1388| r1388_1(glval<destructor_only>) = VariableAddress[#temp1388:5] : -# 1388| r1388_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1388| r1388_3(destructor_only) = Call[returnValue] : func:r1388_2 -# 1388| mu1388_4(unknown) = ^CallSideEffect : ~m? -# 1388| mu1388_5(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3 -# 1388| r1388_6(glval<unknown>) = FunctionAddress[method] : -# 1388| v1388_7(void) = Call[method] : func:r1388_6, this:r1388_1 -# 1388| mu1388_8(unknown) = ^CallSideEffect : ~m? -# 1388| v1388_9(void) = ^IndirectReadSideEffect[-1] : &:r1388_1, ~m? -# 1388| mu1388_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1388_1 -# 1390| r1390_1(glval<destructor_only>) = VariableAddress[#temp1390:5] : -# 1390| r1390_2(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1390| r1390_3(destructor_only) = Call[defaultConstruct] : func:r1390_2 -# 1390| mu1390_4(unknown) = ^CallSideEffect : ~m? -# 1390| mu1390_5(destructor_only) = Store[#temp1390:5] : &:r1390_1, r1390_3 -# 1391| v1391_1(void) = NoOp : -# 1391| r1391_2(glval<destructor_only>) = VariableAddress[d2] : -# 1391| r1391_3(glval<unknown>) = FunctionAddress[~destructor_only] : -# 1391| v1391_4(void) = Call[~destructor_only] : func:r1391_3, this:r1391_2 -# 1391| mu1391_5(unknown) = ^CallSideEffect : ~m? -# 1391| v1391_6(void) = ^IndirectReadSideEffect[-1] : &:r1391_2, ~m? -# 1391| mu1391_7(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1391_2 -# 1391| r1391_8(glval<destructor_only>) = VariableAddress[d] : -# 1391| r1391_9(glval<unknown>) = FunctionAddress[~destructor_only] : -# 1391| v1391_10(void) = Call[~destructor_only] : func:r1391_9, this:r1391_8 -# 1391| mu1391_11(unknown) = ^CallSideEffect : ~m? -# 1391| v1391_12(void) = ^IndirectReadSideEffect[-1] : &:r1391_8, ~m? -# 1391| mu1391_13(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1391_8 -# 1381| v1381_4(void) = ReturnVoid : -# 1381| v1381_5(void) = AliasedUse : ~m? -# 1381| v1381_6(void) = ExitFunction : - -# 1393| void temporary_copy_constructor() -# 1393| Block 0 -# 1393| v1393_1(void) = EnterFunction : -# 1393| mu1393_2(unknown) = AliasedDefinition : -# 1393| mu1393_3(unknown) = InitializeNonLocal : -# 1394| r1394_1(glval<copy_constructor>) = VariableAddress[d] : -# 1394| r1394_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1394| r1394_3(copy_constructor) = Call[returnValue] : func:r1394_2 -# 1394| mu1394_4(unknown) = ^CallSideEffect : ~m? -# 1394| mu1394_5(copy_constructor) = Store[d] : &:r1394_1, r1394_3 -# 1395| r1395_1(glval<copy_constructor &>) = VariableAddress[rd] : -# 1395| r1395_2(glval<copy_constructor>) = VariableAddress[#temp1395:34] : -# 1395| r1395_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1395| r1395_4(copy_constructor) = Call[returnValue] : func:r1395_3 -# 1395| mu1395_5(unknown) = ^CallSideEffect : ~m? -# 1395| mu1395_6(copy_constructor) = Store[#temp1395:34] : &:r1395_2, r1395_4 -# 1395| r1395_7(glval<copy_constructor>) = Convert : r1395_2 -# 1395| r1395_8(copy_constructor &) = CopyValue : r1395_7 -# 1395| mu1395_9(copy_constructor &) = Store[rd] : &:r1395_1, r1395_8 -# 1396| r1396_1(glval<copy_constructor>) = VariableAddress[d2] : -# 1396| mu1396_2(copy_constructor) = Uninitialized[d2] : &:r1396_1 -# 1396| r1396_3(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1396| v1396_4(void) = Call[copy_constructor] : func:r1396_3, this:r1396_1 -# 1396| mu1396_5(unknown) = ^CallSideEffect : ~m? -# 1396| mu1396_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1396_1 -# 1397| r1397_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1397| r1397_2(glval<copy_constructor>) = VariableAddress[d] : -# 1397| r1397_3(glval<copy_constructor>) = Convert : r1397_2 -# 1397| r1397_4(copy_constructor &) = CopyValue : r1397_3 -# 1397| v1397_5(void) = Call[acceptRef] : func:r1397_1, 0:r1397_4 -# 1397| mu1397_6(unknown) = ^CallSideEffect : ~m? -# 1397| v1397_7(void) = ^BufferReadSideEffect[0] : &:r1397_4, ~m? -# 1398| r1398_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1398| r1398_2(glval<copy_constructor>) = VariableAddress[#temp1398:17] : -# 1398| mu1398_3(copy_constructor) = Uninitialized[#temp1398:17] : &:r1398_2 -# 1398| r1398_4(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1398| r1398_5(glval<copy_constructor>) = VariableAddress[d] : -# 1398| r1398_6(glval<copy_constructor>) = Convert : r1398_5 -# 1398| r1398_7(copy_constructor &) = CopyValue : r1398_6 -# 1398| v1398_8(void) = Call[copy_constructor] : func:r1398_4, this:r1398_2, 0:r1398_7 -# 1398| mu1398_9(unknown) = ^CallSideEffect : ~m? -# 1398| v1398_10(void) = ^BufferReadSideEffect[0] : &:r1398_7, ~m? -# 1398| mu1398_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1398_2 -# 1398| r1398_12(copy_constructor) = Load[#temp1398:17] : &:r1398_2, ~m? -# 1398| v1398_13(void) = Call[acceptValue] : func:r1398_1, 0:r1398_12 -# 1398| mu1398_14(unknown) = ^CallSideEffect : ~m? -# 1399| r1399_1(glval<copy_constructor>) = VariableAddress[#temp1399:5] : -# 1399| mu1399_2(copy_constructor) = Uninitialized[#temp1399:5] : &:r1399_1 -# 1399| r1399_3(glval<unknown>) = FunctionAddress[copy_constructor] : -# 1399| v1399_4(void) = Call[copy_constructor] : func:r1399_3, this:r1399_1 -# 1399| mu1399_5(unknown) = ^CallSideEffect : ~m? -# 1399| mu1399_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 -# 1399| r1399_7(glval<unknown>) = FunctionAddress[method] : -# 1399| v1399_8(void) = Call[method] : func:r1399_7, this:r1399_1 -# 1399| mu1399_9(unknown) = ^CallSideEffect : ~m? -# 1399| v1399_10(void) = ^IndirectReadSideEffect[-1] : &:r1399_1, ~m? -# 1399| mu1399_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1399_1 -# 1400| r1400_1(glval<copy_constructor>) = VariableAddress[#temp1400:5] : -# 1400| r1400_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1400| r1400_3(copy_constructor) = Call[returnValue] : func:r1400_2 -# 1400| mu1400_4(unknown) = ^CallSideEffect : ~m? -# 1400| mu1400_5(copy_constructor) = Store[#temp1400:5] : &:r1400_1, r1400_3 -# 1400| r1400_6(glval<unknown>) = FunctionAddress[method] : -# 1400| v1400_7(void) = Call[method] : func:r1400_6, this:r1400_1 -# 1400| mu1400_8(unknown) = ^CallSideEffect : ~m? -# 1400| v1400_9(void) = ^IndirectReadSideEffect[-1] : &:r1400_1, ~m? -# 1400| mu1400_10(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1400_1 -# 1401| r1401_1(glval<copy_constructor>) = VariableAddress[#temp1401:5] : -# 1401| r1401_2(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1401| r1401_3(copy_constructor) = Call[defaultConstruct] : func:r1401_2 -# 1401| mu1401_4(unknown) = ^CallSideEffect : ~m? -# 1401| mu1401_5(copy_constructor) = Store[#temp1401:5] : &:r1401_1, r1401_3 -# 1403| r1403_1(glval<int>) = VariableAddress[y] : -# 1403| r1403_2(glval<copy_constructor>) = VariableAddress[#temp1403:13] : -# 1403| r1403_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1403| r1403_4(copy_constructor) = Call[returnValue] : func:r1403_3 -# 1403| mu1403_5(unknown) = ^CallSideEffect : ~m? -# 1403| mu1403_6(copy_constructor) = Store[#temp1403:13] : &:r1403_2, r1403_4 -# 1403| r1403_7(glval<int>) = FieldAddress[y] : r1403_2 -# 1403| r1403_8(int) = Load[?] : &:r1403_7, ~m? -# 1403| mu1403_9(int) = Store[y] : &:r1403_1, r1403_8 -# 1404| v1404_1(void) = NoOp : -# 1393| v1393_4(void) = ReturnVoid : -# 1393| v1393_5(void) = AliasedUse : ~m? -# 1393| v1393_6(void) = ExitFunction : - -# 1406| void temporary_point() -# 1406| Block 0 -# 1406| v1406_1(void) = EnterFunction : -# 1406| mu1406_2(unknown) = AliasedDefinition : -# 1406| mu1406_3(unknown) = InitializeNonLocal : -# 1407| r1407_1(glval<Point>) = VariableAddress[p] : -# 1407| r1407_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1407| r1407_3(Point) = Call[returnValue] : func:r1407_2 -# 1407| mu1407_4(unknown) = ^CallSideEffect : ~m? -# 1407| mu1407_5(Point) = Store[p] : &:r1407_1, r1407_3 -# 1408| r1408_1(glval<Point &>) = VariableAddress[rp] : -# 1408| r1408_2(glval<Point>) = VariableAddress[#temp1408:23] : -# 1408| r1408_3(glval<unknown>) = FunctionAddress[returnValue] : -# 1408| r1408_4(Point) = Call[returnValue] : func:r1408_3 -# 1408| mu1408_5(unknown) = ^CallSideEffect : ~m? -# 1408| mu1408_6(Point) = Store[#temp1408:23] : &:r1408_2, r1408_4 -# 1408| r1408_7(glval<Point>) = Convert : r1408_2 -# 1408| r1408_8(Point &) = CopyValue : r1408_7 -# 1408| mu1408_9(Point &) = Store[rp] : &:r1408_1, r1408_8 -# 1410| r1410_1(glval<unknown>) = FunctionAddress[acceptRef] : -# 1410| r1410_2(glval<Point>) = VariableAddress[p] : -# 1410| r1410_3(glval<Point>) = Convert : r1410_2 -# 1410| r1410_4(Point &) = CopyValue : r1410_3 -# 1410| v1410_5(void) = Call[acceptRef] : func:r1410_1, 0:r1410_4 -# 1410| mu1410_6(unknown) = ^CallSideEffect : ~m? -# 1410| v1410_7(void) = ^BufferReadSideEffect[0] : &:r1410_4, ~m? -# 1411| r1411_1(glval<unknown>) = FunctionAddress[acceptValue] : -# 1411| r1411_2(glval<Point>) = VariableAddress[p] : -# 1411| r1411_3(Point) = Load[p] : &:r1411_2, ~m? -# 1411| v1411_4(void) = Call[acceptValue] : func:r1411_1, 0:r1411_3 -# 1411| mu1411_5(unknown) = ^CallSideEffect : ~m? -# 1412| r1412_1(int) = Constant[0] : -# 1413| r1413_1(glval<int>) = VariableAddress[y] : -# 1413| r1413_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1413| r1413_3(Point) = Call[returnValue] : func:r1413_2 -# 1413| mu1413_4(unknown) = ^CallSideEffect : ~m? -# 1413| r1413_5(glval<Point>) = VariableAddress[#temp1413:13] : -# 1413| mu1413_6(Point) = Store[#temp1413:13] : &:r1413_5, r1413_3 -# 1413| r1413_7(glval<int>) = FieldAddress[y] : r1413_5 -# 1413| r1413_8(int) = Load[?] : &:r1413_7, ~m? -# 1413| mu1413_9(int) = Store[y] : &:r1413_1, r1413_8 -# 1415| r1415_1(glval<unknown>) = FunctionAddress[defaultConstruct] : -# 1415| r1415_2(Point) = Call[defaultConstruct] : func:r1415_1 -# 1415| mu1415_3(unknown) = ^CallSideEffect : ~m? -# 1416| v1416_1(void) = NoOp : -# 1406| v1406_4(void) = ReturnVoid : -# 1406| v1406_5(void) = AliasedUse : ~m? -# 1406| v1406_6(void) = ExitFunction : - -# 1423| void temporary_unusual_fields() -# 1423| Block 0 -# 1423| v1423_1(void) = EnterFunction : -# 1423| mu1423_2(unknown) = AliasedDefinition : -# 1423| mu1423_3(unknown) = InitializeNonLocal : -# 1424| r1424_1(glval<int &>) = VariableAddress[rx] : -# 1424| r1424_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1424| r1424_3(UnusualFields) = Call[returnValue] : func:r1424_2 -# 1424| mu1424_4(unknown) = ^CallSideEffect : ~m? -# 1424| r1424_5(glval<UnusualFields>) = VariableAddress[#temp1424:21] : -# 1424| mu1424_6(UnusualFields) = Store[#temp1424:21] : &:r1424_5, r1424_3 -# 1424| r1424_7(glval<int &>) = FieldAddress[r] : r1424_5 -# 1424| r1424_8(int &) = Load[?] : &:r1424_7, ~m? -# 1424| r1424_9(glval<int>) = CopyValue : r1424_8 -# 1424| r1424_10(glval<int>) = Convert : r1424_9 -# 1424| r1424_11(int &) = CopyValue : r1424_10 -# 1424| mu1424_12(int &) = Store[rx] : &:r1424_1, r1424_11 -# 1425| r1425_1(glval<int>) = VariableAddress[x] : -# 1425| r1425_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1425| r1425_3(UnusualFields) = Call[returnValue] : func:r1425_2 -# 1425| mu1425_4(unknown) = ^CallSideEffect : ~m? -# 1425| r1425_5(glval<UnusualFields>) = VariableAddress[#temp1425:13] : -# 1425| mu1425_6(UnusualFields) = Store[#temp1425:13] : &:r1425_5, r1425_3 -# 1425| r1425_7(glval<int &>) = FieldAddress[r] : r1425_5 -# 1425| r1425_8(int &) = Load[?] : &:r1425_7, ~m? -# 1425| r1425_9(int) = Load[?] : &:r1425_8, ~m? -# 1425| mu1425_10(int) = Store[x] : &:r1425_1, r1425_9 -# 1427| r1427_1(glval<float &>) = VariableAddress[rf] : -# 1427| r1427_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1427| r1427_3(UnusualFields) = Call[returnValue] : func:r1427_2 -# 1427| mu1427_4(unknown) = ^CallSideEffect : ~m? -# 1427| r1427_5(glval<UnusualFields>) = VariableAddress[#temp1427:23] : -# 1427| mu1427_6(UnusualFields) = Store[#temp1427:23] : &:r1427_5, r1427_3 -# 1427| r1427_7(glval<float[10]>) = FieldAddress[a] : r1427_5 -# 1427| r1427_8(float *) = Convert : r1427_7 -# 1427| r1427_9(int) = Constant[3] : -# 1427| r1427_10(glval<float>) = PointerAdd[4] : r1427_8, r1427_9 -# 1427| r1427_11(glval<float>) = Convert : r1427_10 -# 1427| r1427_12(float &) = CopyValue : r1427_11 -# 1427| mu1427_13(float &) = Store[rf] : &:r1427_1, r1427_12 -# 1428| r1428_1(glval<float>) = VariableAddress[f] : -# 1428| r1428_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1428| r1428_3(UnusualFields) = Call[returnValue] : func:r1428_2 -# 1428| mu1428_4(unknown) = ^CallSideEffect : ~m? -# 1428| r1428_5(glval<UnusualFields>) = VariableAddress[#temp1428:15] : -# 1428| mu1428_6(UnusualFields) = Store[#temp1428:15] : &:r1428_5, r1428_3 -# 1428| r1428_7(glval<float[10]>) = FieldAddress[a] : r1428_5 -# 1428| r1428_8(float *) = Convert : r1428_7 -# 1428| r1428_9(int) = Constant[5] : -# 1428| r1428_10(glval<float>) = PointerAdd[4] : r1428_8, r1428_9 -# 1428| r1428_11(float) = Load[?] : &:r1428_10, ~m? -# 1428| mu1428_12(float) = Store[f] : &:r1428_1, r1428_11 -# 1429| v1429_1(void) = NoOp : -# 1423| v1423_4(void) = ReturnVoid : -# 1423| v1423_5(void) = AliasedUse : ~m? -# 1423| v1423_6(void) = ExitFunction : - -# 1445| void temporary_hierarchy() -# 1445| Block 0 -# 1445| v1445_1(void) = EnterFunction : -# 1445| mu1445_2(unknown) = AliasedDefinition : -# 1445| mu1445_3(unknown) = InitializeNonLocal : -# 1446| r1446_1(glval<POD_Base>) = VariableAddress[b] : +# 1369| void f(int*) +# 1369| Block 0 +# 1369| v1369_1(void) = EnterFunction : +# 1369| mu1369_2(unknown) = AliasedDefinition : +# 1369| mu1369_3(unknown) = InitializeNonLocal : +# 1369| r1369_4(glval<int *>) = VariableAddress[p] : +# 1369| mu1369_5(int *) = InitializeParameter[p] : &:r1369_4 +# 1369| r1369_6(int *) = Load[p] : &:r1369_4, ~m? +# 1369| mu1369_7(unknown) = InitializeIndirection[p] : &:r1369_6 +# 1371| r1371_1(glval<unknown>) = FunctionAddress[operator new] : +# 1371| r1371_2(unsigned long) = Constant[4] : +# 1371| r1371_3(glval<int *>) = VariableAddress[p] : +# 1371| r1371_4(int *) = Load[p] : &:r1371_3, ~m? +# 1371| r1371_5(void *) = Convert : r1371_4 +# 1371| r1371_6(void *) = Call[operator new] : func:r1371_1, 0:r1371_2, 1:r1371_5 +# 1371| mu1371_7(unknown) = ^CallSideEffect : ~m? +# 1371| mu1371_8(unknown) = ^InitializeDynamicAllocation : &:r1371_6 +# 1371| r1371_9(int *) = Convert : r1371_6 +# 1372| v1372_1(void) = NoOp : +# 1369| v1369_8(void) = ReturnIndirection[p] : &:r1369_6, ~m? +# 1369| v1369_9(void) = ReturnVoid : +# 1369| v1369_10(void) = AliasedUse : ~m? +# 1369| v1369_11(void) = ExitFunction : + +# 1375| Point defaultConstruct<Point>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| mu1375_2(unknown) = AliasedDefinition : +# 1375| mu1375_3(unknown) = InitializeNonLocal : +# 1376| r1376_1(glval<Point>) = VariableAddress[#return] : +# 1376| r1376_2(Point) = Constant[0] : +# 1376| mu1376_3(Point) = Store[#return] : &:r1376_1, r1376_2 +# 1375| r1375_4(glval<Point>) = VariableAddress[#return] : +# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? +# 1375| v1375_6(void) = AliasedUse : ~m? +# 1375| v1375_7(void) = ExitFunction : + +# 1375| String defaultConstruct<String>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| mu1375_2(unknown) = AliasedDefinition : +# 1375| mu1375_3(unknown) = InitializeNonLocal : +# 1376| r1376_1(glval<String>) = VariableAddress[#return] : +# 1376| mu1376_2(String) = Uninitialized[#return] : &:r1376_1 +# 1376| r1376_3(glval<unknown>) = FunctionAddress[String] : +# 1376| v1376_4(void) = Call[String] : func:r1376_3, this:r1376_1 +# 1376| mu1376_5(unknown) = ^CallSideEffect : ~m? +# 1376| mu1376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 +# 1375| r1375_4(glval<String>) = VariableAddress[#return] : +# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? +# 1375| v1375_6(void) = AliasedUse : ~m? +# 1375| v1375_7(void) = ExitFunction : + +# 1375| copy_constructor defaultConstruct<copy_constructor>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| mu1375_2(unknown) = AliasedDefinition : +# 1375| mu1375_3(unknown) = InitializeNonLocal : +# 1376| r1376_1(glval<copy_constructor>) = VariableAddress[#return] : +# 1376| mu1376_2(copy_constructor) = Uninitialized[#return] : &:r1376_1 +# 1376| r1376_3(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1376| v1376_4(void) = Call[copy_constructor] : func:r1376_3, this:r1376_1 +# 1376| mu1376_5(unknown) = ^CallSideEffect : ~m? +# 1376| mu1376_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 +# 1375| r1375_4(glval<copy_constructor>) = VariableAddress[#return] : +# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? +# 1375| v1375_6(void) = AliasedUse : ~m? +# 1375| v1375_7(void) = ExitFunction : + +# 1375| destructor_only defaultConstruct<destructor_only>() +# 1375| Block 0 +# 1375| v1375_1(void) = EnterFunction : +# 1375| mu1375_2(unknown) = AliasedDefinition : +# 1375| mu1375_3(unknown) = InitializeNonLocal : +# 1376| r1376_1(glval<destructor_only>) = VariableAddress[#return] : +# 1376| r1376_2(destructor_only) = Constant[0] : +# 1376| mu1376_3(destructor_only) = Store[#return] : &:r1376_1, r1376_2 +# 1375| r1375_4(glval<destructor_only>) = VariableAddress[#return] : +# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? +# 1375| v1375_6(void) = AliasedUse : ~m? +# 1375| v1375_7(void) = ExitFunction : + +# 1414| void temporary_string() +# 1414| Block 0 +# 1414| v1414_1(void) = EnterFunction : +# 1414| mu1414_2(unknown) = AliasedDefinition : +# 1414| mu1414_3(unknown) = InitializeNonLocal : +# 1415| r1415_1(glval<String>) = VariableAddress[s] : +# 1415| r1415_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1415| r1415_3(String) = Call[returnValue] : func:r1415_2 +# 1415| mu1415_4(unknown) = ^CallSideEffect : ~m? +# 1415| mu1415_5(String) = Store[s] : &:r1415_1, r1415_3 +# 1416| r1416_1(glval<String &>) = VariableAddress[rs] : +# 1416| r1416_2(glval<String>) = VariableAddress[#temp1416:24] : +# 1416| r1416_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1416| r1416_4(String) = Call[returnValue] : func:r1416_3 +# 1416| mu1416_5(unknown) = ^CallSideEffect : ~m? +# 1416| mu1416_6(String) = Store[#temp1416:24] : &:r1416_2, r1416_4 +# 1416| r1416_7(glval<String>) = Convert : r1416_2 +# 1416| r1416_8(String &) = CopyValue : r1416_7 +# 1416| mu1416_9(String &) = Store[rs] : &:r1416_1, r1416_8 +# 1418| r1418_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1418| r1418_2(glval<String>) = VariableAddress[s] : +# 1418| r1418_3(glval<String>) = Convert : r1418_2 +# 1418| r1418_4(String &) = CopyValue : r1418_3 +# 1418| v1418_5(void) = Call[acceptRef] : func:r1418_1, 0:r1418_4 +# 1418| mu1418_6(unknown) = ^CallSideEffect : ~m? +# 1418| v1418_7(void) = ^BufferReadSideEffect[0] : &:r1418_4, ~m? +# 1419| r1419_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1419| r1419_2(glval<String>) = VariableAddress[#temp1419:23] : +# 1419| mu1419_3(String) = Uninitialized[#temp1419:23] : &:r1419_2 +# 1419| r1419_4(glval<unknown>) = FunctionAddress[String] : +# 1419| r1419_5(glval<char[4]>) = StringConstant["foo"] : +# 1419| r1419_6(char *) = Convert : r1419_5 +# 1419| v1419_7(void) = Call[String] : func:r1419_4, this:r1419_2, 0:r1419_6 +# 1419| mu1419_8(unknown) = ^CallSideEffect : ~m? +# 1419| v1419_9(void) = ^BufferReadSideEffect[0] : &:r1419_6, ~m? +# 1419| mu1419_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1419_2 +# 1419| r1419_11(String &) = CopyValue : r1419_2 +# 1419| v1419_12(void) = Call[acceptRef] : func:r1419_1, 0:r1419_11 +# 1419| mu1419_13(unknown) = ^CallSideEffect : ~m? +# 1419| v1419_14(void) = ^BufferReadSideEffect[0] : &:r1419_11, ~m? +# 1420| r1420_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1420| r1420_2(glval<String>) = VariableAddress[#temp1420:17] : +# 1420| mu1420_3(String) = Uninitialized[#temp1420:17] : &:r1420_2 +# 1420| r1420_4(glval<unknown>) = FunctionAddress[String] : +# 1420| r1420_5(glval<String>) = VariableAddress[s] : +# 1420| r1420_6(glval<String>) = Convert : r1420_5 +# 1420| r1420_7(String &) = CopyValue : r1420_6 +# 1420| v1420_8(void) = Call[String] : func:r1420_4, this:r1420_2, 0:r1420_7 +# 1420| mu1420_9(unknown) = ^CallSideEffect : ~m? +# 1420| v1420_10(void) = ^BufferReadSideEffect[0] : &:r1420_7, ~m? +# 1420| mu1420_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_2 +# 1420| r1420_12(String) = Load[#temp1420:17] : &:r1420_2, ~m? +# 1420| v1420_13(void) = Call[acceptValue] : func:r1420_1, 0:r1420_12 +# 1420| mu1420_14(unknown) = ^CallSideEffect : ~m? +# 1421| r1421_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1421| r1421_2(glval<String>) = VariableAddress[#temp1421:25] : +# 1421| mu1421_3(String) = Uninitialized[#temp1421:25] : &:r1421_2 +# 1421| r1421_4(glval<unknown>) = FunctionAddress[String] : +# 1421| r1421_5(glval<char[4]>) = StringConstant["foo"] : +# 1421| r1421_6(char *) = Convert : r1421_5 +# 1421| v1421_7(void) = Call[String] : func:r1421_4, this:r1421_2, 0:r1421_6 +# 1421| mu1421_8(unknown) = ^CallSideEffect : ~m? +# 1421| v1421_9(void) = ^BufferReadSideEffect[0] : &:r1421_6, ~m? +# 1421| mu1421_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_2 +# 1421| r1421_11(String) = Load[#temp1421:25] : &:r1421_2, ~m? +# 1421| v1421_12(void) = Call[acceptValue] : func:r1421_1, 0:r1421_11 +# 1421| mu1421_13(unknown) = ^CallSideEffect : ~m? +# 1422| r1422_1(glval<String>) = VariableAddress[#temp1422:5] : +# 1422| mu1422_2(String) = Uninitialized[#temp1422:5] : &:r1422_1 +# 1422| r1422_3(glval<unknown>) = FunctionAddress[String] : +# 1422| v1422_4(void) = Call[String] : func:r1422_3, this:r1422_1 +# 1422| mu1422_5(unknown) = ^CallSideEffect : ~m? +# 1422| mu1422_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_1 +# 1422| r1422_7(glval<String>) = Convert : r1422_1 +# 1422| r1422_8(glval<unknown>) = FunctionAddress[c_str] : +# 1422| r1422_9(char *) = Call[c_str] : func:r1422_8, this:r1422_7 +# 1422| mu1422_10(unknown) = ^CallSideEffect : ~m? +# 1422| v1422_11(void) = ^IndirectReadSideEffect[-1] : &:r1422_7, ~m? +# 1423| r1423_1(glval<String>) = VariableAddress[#temp1423:5] : +# 1423| r1423_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1423| r1423_3(String) = Call[returnValue] : func:r1423_2 +# 1423| mu1423_4(unknown) = ^CallSideEffect : ~m? +# 1423| mu1423_5(String) = Store[#temp1423:5] : &:r1423_1, r1423_3 +# 1423| r1423_6(glval<String>) = Convert : r1423_1 +# 1423| r1423_7(glval<unknown>) = FunctionAddress[c_str] : +# 1423| r1423_8(char *) = Call[c_str] : func:r1423_7, this:r1423_6 +# 1423| mu1423_9(unknown) = ^CallSideEffect : ~m? +# 1423| v1423_10(void) = ^IndirectReadSideEffect[-1] : &:r1423_6, ~m? +# 1425| r1425_1(glval<String>) = VariableAddress[#temp1425:5] : +# 1425| r1425_2(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1425| r1425_3(String) = Call[defaultConstruct] : func:r1425_2 +# 1425| mu1425_4(unknown) = ^CallSideEffect : ~m? +# 1425| mu1425_5(String) = Store[#temp1425:5] : &:r1425_1, r1425_3 +# 1426| v1426_1(void) = NoOp : +# 1426| r1426_2(glval<String>) = VariableAddress[s] : +# 1426| r1426_3(glval<unknown>) = FunctionAddress[~String] : +# 1426| v1426_4(void) = Call[~String] : func:r1426_3, this:r1426_2 +# 1426| mu1426_5(unknown) = ^CallSideEffect : ~m? +# 1426| v1426_6(void) = ^IndirectReadSideEffect[-1] : &:r1426_2, ~m? +# 1426| mu1426_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_2 +# 1414| v1414_4(void) = ReturnVoid : +# 1414| v1414_5(void) = AliasedUse : ~m? +# 1414| v1414_6(void) = ExitFunction : + +# 1428| void temporary_destructor_only() +# 1428| Block 0 +# 1428| v1428_1(void) = EnterFunction : +# 1428| mu1428_2(unknown) = AliasedDefinition : +# 1428| mu1428_3(unknown) = InitializeNonLocal : +# 1429| r1429_1(glval<destructor_only>) = VariableAddress[d] : +# 1429| r1429_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1429| r1429_3(destructor_only) = Call[returnValue] : func:r1429_2 +# 1429| mu1429_4(unknown) = ^CallSideEffect : ~m? +# 1429| mu1429_5(destructor_only) = Store[d] : &:r1429_1, r1429_3 +# 1430| r1430_1(glval<destructor_only &>) = VariableAddress[rd] : +# 1430| r1430_2(glval<destructor_only>) = VariableAddress[#temp1430:33] : +# 1430| r1430_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1430| r1430_4(destructor_only) = Call[returnValue] : func:r1430_3 +# 1430| mu1430_5(unknown) = ^CallSideEffect : ~m? +# 1430| mu1430_6(destructor_only) = Store[#temp1430:33] : &:r1430_2, r1430_4 +# 1430| r1430_7(glval<destructor_only>) = Convert : r1430_2 +# 1430| r1430_8(destructor_only &) = CopyValue : r1430_7 +# 1430| mu1430_9(destructor_only &) = Store[rd] : &:r1430_1, r1430_8 +# 1431| r1431_1(glval<destructor_only>) = VariableAddress[d2] : +# 1431| mu1431_2(destructor_only) = Uninitialized[d2] : &:r1431_1 +# 1432| r1432_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1432| r1432_2(glval<destructor_only>) = VariableAddress[d] : +# 1432| r1432_3(glval<destructor_only>) = Convert : r1432_2 +# 1432| r1432_4(destructor_only &) = CopyValue : r1432_3 +# 1432| v1432_5(void) = Call[acceptRef] : func:r1432_1, 0:r1432_4 +# 1432| mu1432_6(unknown) = ^CallSideEffect : ~m? +# 1432| v1432_7(void) = ^BufferReadSideEffect[0] : &:r1432_4, ~m? +# 1433| r1433_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1433| r1433_2(glval<destructor_only>) = VariableAddress[#temp1433:17] : +# 1433| r1433_3(glval<destructor_only>) = VariableAddress[d] : +# 1433| r1433_4(destructor_only) = Load[d] : &:r1433_3, ~m? +# 1433| mu1433_5(destructor_only) = Store[#temp1433:17] : &:r1433_2, r1433_4 +# 1433| r1433_6(destructor_only) = Load[#temp1433:17] : &:r1433_2, ~m? +# 1433| v1433_7(void) = Call[acceptValue] : func:r1433_1, 0:r1433_6 +# 1433| mu1433_8(unknown) = ^CallSideEffect : ~m? +# 1434| r1434_1(glval<destructor_only>) = VariableAddress[#temp1434:5] : +# 1434| r1434_2(destructor_only) = Constant[0] : +# 1434| mu1434_3(destructor_only) = Store[#temp1434:5] : &:r1434_1, r1434_2 +# 1434| r1434_4(glval<unknown>) = FunctionAddress[method] : +# 1434| v1434_5(void) = Call[method] : func:r1434_4, this:r1434_1 +# 1434| mu1434_6(unknown) = ^CallSideEffect : ~m? +# 1434| v1434_7(void) = ^IndirectReadSideEffect[-1] : &:r1434_1, ~m? +# 1434| mu1434_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1434_1 +# 1435| r1435_1(glval<destructor_only>) = VariableAddress[#temp1435:5] : +# 1435| r1435_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1435| r1435_3(destructor_only) = Call[returnValue] : func:r1435_2 +# 1435| mu1435_4(unknown) = ^CallSideEffect : ~m? +# 1435| mu1435_5(destructor_only) = Store[#temp1435:5] : &:r1435_1, r1435_3 +# 1435| r1435_6(glval<unknown>) = FunctionAddress[method] : +# 1435| v1435_7(void) = Call[method] : func:r1435_6, this:r1435_1 +# 1435| mu1435_8(unknown) = ^CallSideEffect : ~m? +# 1435| v1435_9(void) = ^IndirectReadSideEffect[-1] : &:r1435_1, ~m? +# 1435| mu1435_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_1 +# 1437| r1437_1(glval<destructor_only>) = VariableAddress[#temp1437:5] : +# 1437| r1437_2(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1437| r1437_3(destructor_only) = Call[defaultConstruct] : func:r1437_2 +# 1437| mu1437_4(unknown) = ^CallSideEffect : ~m? +# 1437| mu1437_5(destructor_only) = Store[#temp1437:5] : &:r1437_1, r1437_3 +# 1438| v1438_1(void) = NoOp : +# 1438| r1438_2(glval<destructor_only>) = VariableAddress[d2] : +# 1438| r1438_3(glval<unknown>) = FunctionAddress[~destructor_only] : +# 1438| v1438_4(void) = Call[~destructor_only] : func:r1438_3, this:r1438_2 +# 1438| mu1438_5(unknown) = ^CallSideEffect : ~m? +# 1438| v1438_6(void) = ^IndirectReadSideEffect[-1] : &:r1438_2, ~m? +# 1438| mu1438_7(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_2 +# 1438| r1438_8(glval<destructor_only>) = VariableAddress[d] : +# 1438| r1438_9(glval<unknown>) = FunctionAddress[~destructor_only] : +# 1438| v1438_10(void) = Call[~destructor_only] : func:r1438_9, this:r1438_8 +# 1438| mu1438_11(unknown) = ^CallSideEffect : ~m? +# 1438| v1438_12(void) = ^IndirectReadSideEffect[-1] : &:r1438_8, ~m? +# 1438| mu1438_13(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_8 +# 1428| v1428_4(void) = ReturnVoid : +# 1428| v1428_5(void) = AliasedUse : ~m? +# 1428| v1428_6(void) = ExitFunction : + +# 1440| void temporary_copy_constructor() +# 1440| Block 0 +# 1440| v1440_1(void) = EnterFunction : +# 1440| mu1440_2(unknown) = AliasedDefinition : +# 1440| mu1440_3(unknown) = InitializeNonLocal : +# 1441| r1441_1(glval<copy_constructor>) = VariableAddress[d] : +# 1441| r1441_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1441| r1441_3(copy_constructor) = Call[returnValue] : func:r1441_2 +# 1441| mu1441_4(unknown) = ^CallSideEffect : ~m? +# 1441| mu1441_5(copy_constructor) = Store[d] : &:r1441_1, r1441_3 +# 1442| r1442_1(glval<copy_constructor &>) = VariableAddress[rd] : +# 1442| r1442_2(glval<copy_constructor>) = VariableAddress[#temp1442:34] : +# 1442| r1442_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1442| r1442_4(copy_constructor) = Call[returnValue] : func:r1442_3 +# 1442| mu1442_5(unknown) = ^CallSideEffect : ~m? +# 1442| mu1442_6(copy_constructor) = Store[#temp1442:34] : &:r1442_2, r1442_4 +# 1442| r1442_7(glval<copy_constructor>) = Convert : r1442_2 +# 1442| r1442_8(copy_constructor &) = CopyValue : r1442_7 +# 1442| mu1442_9(copy_constructor &) = Store[rd] : &:r1442_1, r1442_8 +# 1443| r1443_1(glval<copy_constructor>) = VariableAddress[d2] : +# 1443| mu1443_2(copy_constructor) = Uninitialized[d2] : &:r1443_1 +# 1443| r1443_3(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1443| v1443_4(void) = Call[copy_constructor] : func:r1443_3, this:r1443_1 +# 1443| mu1443_5(unknown) = ^CallSideEffect : ~m? +# 1443| mu1443_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1443_1 +# 1444| r1444_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1444| r1444_2(glval<copy_constructor>) = VariableAddress[d] : +# 1444| r1444_3(glval<copy_constructor>) = Convert : r1444_2 +# 1444| r1444_4(copy_constructor &) = CopyValue : r1444_3 +# 1444| v1444_5(void) = Call[acceptRef] : func:r1444_1, 0:r1444_4 +# 1444| mu1444_6(unknown) = ^CallSideEffect : ~m? +# 1444| v1444_7(void) = ^BufferReadSideEffect[0] : &:r1444_4, ~m? +# 1445| r1445_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1445| r1445_2(glval<copy_constructor>) = VariableAddress[#temp1445:17] : +# 1445| mu1445_3(copy_constructor) = Uninitialized[#temp1445:17] : &:r1445_2 +# 1445| r1445_4(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1445| r1445_5(glval<copy_constructor>) = VariableAddress[d] : +# 1445| r1445_6(glval<copy_constructor>) = Convert : r1445_5 +# 1445| r1445_7(copy_constructor &) = CopyValue : r1445_6 +# 1445| v1445_8(void) = Call[copy_constructor] : func:r1445_4, this:r1445_2, 0:r1445_7 +# 1445| mu1445_9(unknown) = ^CallSideEffect : ~m? +# 1445| v1445_10(void) = ^BufferReadSideEffect[0] : &:r1445_7, ~m? +# 1445| mu1445_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1445_2 +# 1445| r1445_12(copy_constructor) = Load[#temp1445:17] : &:r1445_2, ~m? +# 1445| v1445_13(void) = Call[acceptValue] : func:r1445_1, 0:r1445_12 +# 1445| mu1445_14(unknown) = ^CallSideEffect : ~m? +# 1446| r1446_1(glval<copy_constructor>) = VariableAddress[#temp1446:5] : +# 1446| mu1446_2(copy_constructor) = Uninitialized[#temp1446:5] : &:r1446_1 +# 1446| r1446_3(glval<unknown>) = FunctionAddress[copy_constructor] : +# 1446| v1446_4(void) = Call[copy_constructor] : func:r1446_3, this:r1446_1 +# 1446| mu1446_5(unknown) = ^CallSideEffect : ~m? +# 1446| mu1446_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 +# 1446| r1446_7(glval<unknown>) = FunctionAddress[method] : +# 1446| v1446_8(void) = Call[method] : func:r1446_7, this:r1446_1 +# 1446| mu1446_9(unknown) = ^CallSideEffect : ~m? +# 1446| v1446_10(void) = ^IndirectReadSideEffect[-1] : &:r1446_1, ~m? +# 1446| mu1446_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 +# 1447| r1447_1(glval<copy_constructor>) = VariableAddress[#temp1447:5] : +# 1447| r1447_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1447| r1447_3(copy_constructor) = Call[returnValue] : func:r1447_2 +# 1447| mu1447_4(unknown) = ^CallSideEffect : ~m? +# 1447| mu1447_5(copy_constructor) = Store[#temp1447:5] : &:r1447_1, r1447_3 +# 1447| r1447_6(glval<unknown>) = FunctionAddress[method] : +# 1447| v1447_7(void) = Call[method] : func:r1447_6, this:r1447_1 +# 1447| mu1447_8(unknown) = ^CallSideEffect : ~m? +# 1447| v1447_9(void) = ^IndirectReadSideEffect[-1] : &:r1447_1, ~m? +# 1447| mu1447_10(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1447_1 +# 1448| r1448_1(glval<copy_constructor>) = VariableAddress[#temp1448:5] : +# 1448| r1448_2(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1448| r1448_3(copy_constructor) = Call[defaultConstruct] : func:r1448_2 +# 1448| mu1448_4(unknown) = ^CallSideEffect : ~m? +# 1448| mu1448_5(copy_constructor) = Store[#temp1448:5] : &:r1448_1, r1448_3 +# 1450| r1450_1(glval<int>) = VariableAddress[y] : +# 1450| r1450_2(glval<copy_constructor>) = VariableAddress[#temp1450:13] : +# 1450| r1450_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1450| r1450_4(copy_constructor) = Call[returnValue] : func:r1450_3 +# 1450| mu1450_5(unknown) = ^CallSideEffect : ~m? +# 1450| mu1450_6(copy_constructor) = Store[#temp1450:13] : &:r1450_2, r1450_4 +# 1450| r1450_7(glval<int>) = FieldAddress[y] : r1450_2 +# 1450| r1450_8(int) = Load[?] : &:r1450_7, ~m? +# 1450| mu1450_9(int) = Store[y] : &:r1450_1, r1450_8 +# 1451| v1451_1(void) = NoOp : +# 1440| v1440_4(void) = ReturnVoid : +# 1440| v1440_5(void) = AliasedUse : ~m? +# 1440| v1440_6(void) = ExitFunction : + +# 1453| void temporary_point() +# 1453| Block 0 +# 1453| v1453_1(void) = EnterFunction : +# 1453| mu1453_2(unknown) = AliasedDefinition : +# 1453| mu1453_3(unknown) = InitializeNonLocal : +# 1454| r1454_1(glval<Point>) = VariableAddress[p] : +# 1454| r1454_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1454| r1454_3(Point) = Call[returnValue] : func:r1454_2 +# 1454| mu1454_4(unknown) = ^CallSideEffect : ~m? +# 1454| mu1454_5(Point) = Store[p] : &:r1454_1, r1454_3 +# 1455| r1455_1(glval<Point &>) = VariableAddress[rp] : +# 1455| r1455_2(glval<Point>) = VariableAddress[#temp1455:23] : +# 1455| r1455_3(glval<unknown>) = FunctionAddress[returnValue] : +# 1455| r1455_4(Point) = Call[returnValue] : func:r1455_3 +# 1455| mu1455_5(unknown) = ^CallSideEffect : ~m? +# 1455| mu1455_6(Point) = Store[#temp1455:23] : &:r1455_2, r1455_4 +# 1455| r1455_7(glval<Point>) = Convert : r1455_2 +# 1455| r1455_8(Point &) = CopyValue : r1455_7 +# 1455| mu1455_9(Point &) = Store[rp] : &:r1455_1, r1455_8 +# 1457| r1457_1(glval<unknown>) = FunctionAddress[acceptRef] : +# 1457| r1457_2(glval<Point>) = VariableAddress[p] : +# 1457| r1457_3(glval<Point>) = Convert : r1457_2 +# 1457| r1457_4(Point &) = CopyValue : r1457_3 +# 1457| v1457_5(void) = Call[acceptRef] : func:r1457_1, 0:r1457_4 +# 1457| mu1457_6(unknown) = ^CallSideEffect : ~m? +# 1457| v1457_7(void) = ^BufferReadSideEffect[0] : &:r1457_4, ~m? +# 1458| r1458_1(glval<unknown>) = FunctionAddress[acceptValue] : +# 1458| r1458_2(glval<Point>) = VariableAddress[p] : +# 1458| r1458_3(Point) = Load[p] : &:r1458_2, ~m? +# 1458| v1458_4(void) = Call[acceptValue] : func:r1458_1, 0:r1458_3 +# 1458| mu1458_5(unknown) = ^CallSideEffect : ~m? +# 1459| r1459_1(int) = Constant[0] : +# 1460| r1460_1(glval<int>) = VariableAddress[y] : +# 1460| r1460_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1460| r1460_3(Point) = Call[returnValue] : func:r1460_2 +# 1460| mu1460_4(unknown) = ^CallSideEffect : ~m? +# 1460| r1460_5(glval<Point>) = VariableAddress[#temp1460:13] : +# 1460| mu1460_6(Point) = Store[#temp1460:13] : &:r1460_5, r1460_3 +# 1460| r1460_7(glval<int>) = FieldAddress[y] : r1460_5 +# 1460| r1460_8(int) = Load[?] : &:r1460_7, ~m? +# 1460| mu1460_9(int) = Store[y] : &:r1460_1, r1460_8 +# 1462| r1462_1(glval<unknown>) = FunctionAddress[defaultConstruct] : +# 1462| r1462_2(Point) = Call[defaultConstruct] : func:r1462_1 +# 1462| mu1462_3(unknown) = ^CallSideEffect : ~m? +# 1463| v1463_1(void) = NoOp : +# 1453| v1453_4(void) = ReturnVoid : +# 1453| v1453_5(void) = AliasedUse : ~m? +# 1453| v1453_6(void) = ExitFunction : + +# 1470| void temporary_unusual_fields() +# 1470| Block 0 +# 1470| v1470_1(void) = EnterFunction : +# 1470| mu1470_2(unknown) = AliasedDefinition : +# 1470| mu1470_3(unknown) = InitializeNonLocal : +# 1471| r1471_1(glval<int &>) = VariableAddress[rx] : +# 1471| r1471_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1471| r1471_3(UnusualFields) = Call[returnValue] : func:r1471_2 +# 1471| mu1471_4(unknown) = ^CallSideEffect : ~m? +# 1471| r1471_5(glval<UnusualFields>) = VariableAddress[#temp1471:21] : +# 1471| mu1471_6(UnusualFields) = Store[#temp1471:21] : &:r1471_5, r1471_3 +# 1471| r1471_7(glval<int &>) = FieldAddress[r] : r1471_5 +# 1471| r1471_8(int &) = Load[?] : &:r1471_7, ~m? +# 1471| r1471_9(glval<int>) = CopyValue : r1471_8 +# 1471| r1471_10(glval<int>) = Convert : r1471_9 +# 1471| r1471_11(int &) = CopyValue : r1471_10 +# 1471| mu1471_12(int &) = Store[rx] : &:r1471_1, r1471_11 +# 1472| r1472_1(glval<int>) = VariableAddress[x] : +# 1472| r1472_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1472| r1472_3(UnusualFields) = Call[returnValue] : func:r1472_2 +# 1472| mu1472_4(unknown) = ^CallSideEffect : ~m? +# 1472| r1472_5(glval<UnusualFields>) = VariableAddress[#temp1472:13] : +# 1472| mu1472_6(UnusualFields) = Store[#temp1472:13] : &:r1472_5, r1472_3 +# 1472| r1472_7(glval<int &>) = FieldAddress[r] : r1472_5 +# 1472| r1472_8(int &) = Load[?] : &:r1472_7, ~m? +# 1472| r1472_9(int) = Load[?] : &:r1472_8, ~m? +# 1472| mu1472_10(int) = Store[x] : &:r1472_1, r1472_9 +# 1474| r1474_1(glval<float &>) = VariableAddress[rf] : +# 1474| r1474_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1474| r1474_3(UnusualFields) = Call[returnValue] : func:r1474_2 +# 1474| mu1474_4(unknown) = ^CallSideEffect : ~m? +# 1474| r1474_5(glval<UnusualFields>) = VariableAddress[#temp1474:23] : +# 1474| mu1474_6(UnusualFields) = Store[#temp1474:23] : &:r1474_5, r1474_3 +# 1474| r1474_7(glval<float[10]>) = FieldAddress[a] : r1474_5 +# 1474| r1474_8(float *) = Convert : r1474_7 +# 1474| r1474_9(int) = Constant[3] : +# 1474| r1474_10(glval<float>) = PointerAdd[4] : r1474_8, r1474_9 +# 1474| r1474_11(glval<float>) = Convert : r1474_10 +# 1474| r1474_12(float &) = CopyValue : r1474_11 +# 1474| mu1474_13(float &) = Store[rf] : &:r1474_1, r1474_12 +# 1475| r1475_1(glval<float>) = VariableAddress[f] : +# 1475| r1475_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1475| r1475_3(UnusualFields) = Call[returnValue] : func:r1475_2 +# 1475| mu1475_4(unknown) = ^CallSideEffect : ~m? +# 1475| r1475_5(glval<UnusualFields>) = VariableAddress[#temp1475:15] : +# 1475| mu1475_6(UnusualFields) = Store[#temp1475:15] : &:r1475_5, r1475_3 +# 1475| r1475_7(glval<float[10]>) = FieldAddress[a] : r1475_5 +# 1475| r1475_8(float *) = Convert : r1475_7 +# 1475| r1475_9(int) = Constant[5] : +# 1475| r1475_10(glval<float>) = PointerAdd[4] : r1475_8, r1475_9 +# 1475| r1475_11(float) = Load[?] : &:r1475_10, ~m? +# 1475| mu1475_12(float) = Store[f] : &:r1475_1, r1475_11 +# 1476| v1476_1(void) = NoOp : +# 1470| v1470_4(void) = ReturnVoid : +# 1470| v1470_5(void) = AliasedUse : ~m? +# 1470| v1470_6(void) = ExitFunction : + +# 1492| void temporary_hierarchy() +# 1492| Block 0 +# 1492| v1492_1(void) = EnterFunction : +# 1492| mu1492_2(unknown) = AliasedDefinition : +# 1492| mu1492_3(unknown) = InitializeNonLocal : +# 1493| r1493_1(glval<POD_Base>) = VariableAddress[b] : #-----| r0_1(glval<POD_Middle>) = VariableAddress[#temp0:0] : -# 1446| r1446_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1446| r1446_3(POD_Middle) = Call[returnValue] : func:r1446_2 -# 1446| mu1446_4(unknown) = ^CallSideEffect : ~m? -# 1446| mu1446_5(POD_Middle) = Store[#temp0:0] : &:r0_1, r1446_3 +# 1493| r1493_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1493| r1493_3(POD_Middle) = Call[returnValue] : func:r1493_2 +# 1493| mu1493_4(unknown) = ^CallSideEffect : ~m? +# 1493| mu1493_5(POD_Middle) = Store[#temp0:0] : &:r0_1, r1493_3 #-----| r0_2(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 #-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m? -#-----| mu0_4(POD_Base) = Store[b] : &:r1446_1, r0_3 -# 1447| r1447_1(glval<POD_Derived>) = VariableAddress[#temp1447:9] : -# 1447| r1447_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1447| r1447_3(POD_Derived) = Call[returnValue] : func:r1447_2 -# 1447| mu1447_4(unknown) = ^CallSideEffect : ~m? -# 1447| mu1447_5(POD_Derived) = Store[#temp1447:9] : &:r1447_1, r1447_3 -# 1447| r1447_6(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1447_1 -# 1447| r1447_7(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1447_6 -# 1447| r1447_8(POD_Base) = Load[?] : &:r1447_7, ~m? -# 1447| r1447_9(glval<POD_Base>) = VariableAddress[b] : -# 1447| mu1447_10(POD_Base) = Store[b] : &:r1447_9, r1447_8 -# 1448| r1448_1(glval<int>) = VariableAddress[x] : +#-----| mu0_4(POD_Base) = Store[b] : &:r1493_1, r0_3 +# 1494| r1494_1(glval<POD_Derived>) = VariableAddress[#temp1494:9] : +# 1494| r1494_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1494| r1494_3(POD_Derived) = Call[returnValue] : func:r1494_2 +# 1494| mu1494_4(unknown) = ^CallSideEffect : ~m? +# 1494| mu1494_5(POD_Derived) = Store[#temp1494:9] : &:r1494_1, r1494_3 +# 1494| r1494_6(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1494_1 +# 1494| r1494_7(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1494_6 +# 1494| r1494_8(POD_Base) = Load[?] : &:r1494_7, ~m? +# 1494| r1494_9(glval<POD_Base>) = VariableAddress[b] : +# 1494| mu1494_10(POD_Base) = Store[b] : &:r1494_9, r1494_8 +# 1495| r1495_1(glval<int>) = VariableAddress[x] : #-----| r0_5(glval<POD_Derived>) = VariableAddress[#temp0:0] : -# 1448| r1448_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1448| r1448_3(POD_Derived) = Call[returnValue] : func:r1448_2 -# 1448| mu1448_4(unknown) = ^CallSideEffect : ~m? -# 1448| mu1448_5(POD_Derived) = Store[#temp0:0] : &:r0_5, r1448_3 +# 1495| r1495_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1495| r1495_3(POD_Derived) = Call[returnValue] : func:r1495_2 +# 1495| mu1495_4(unknown) = ^CallSideEffect : ~m? +# 1495| mu1495_5(POD_Derived) = Store[#temp0:0] : &:r0_5, r1495_3 #-----| r0_6(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 #-----| r0_7(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 -# 1448| r1448_6(glval<int>) = FieldAddress[x] : r0_7 -# 1448| r1448_7(int) = Load[?] : &:r1448_6, ~m? -# 1448| mu1448_8(int) = Store[x] : &:r1448_1, r1448_7 -# 1449| r1449_1(glval<float>) = VariableAddress[f] : +# 1495| r1495_6(glval<int>) = FieldAddress[x] : r0_7 +# 1495| r1495_7(int) = Load[?] : &:r1495_6, ~m? +# 1495| mu1495_8(int) = Store[x] : &:r1495_1, r1495_7 +# 1496| r1496_1(glval<float>) = VariableAddress[f] : #-----| r0_8(glval<POD_Derived>) = VariableAddress[#temp0:0] : -# 1449| r1449_2(glval<unknown>) = FunctionAddress[returnValue] : -# 1449| r1449_3(POD_Derived) = Call[returnValue] : func:r1449_2 -# 1449| mu1449_4(unknown) = ^CallSideEffect : ~m? -# 1449| mu1449_5(POD_Derived) = Store[#temp0:0] : &:r0_8, r1449_3 +# 1496| r1496_2(glval<unknown>) = FunctionAddress[returnValue] : +# 1496| r1496_3(POD_Derived) = Call[returnValue] : func:r1496_2 +# 1496| mu1496_4(unknown) = ^CallSideEffect : ~m? +# 1496| mu1496_5(POD_Derived) = Store[#temp0:0] : &:r0_8, r1496_3 #-----| r0_9(glval<POD_Middle>) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_8 #-----| r0_10(glval<POD_Base>) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_9 #-----| r0_11(glval<POD_Base>) = Convert : r0_10 -# 1449| r1449_6(glval<unknown>) = FunctionAddress[f] : -# 1449| r1449_7(float) = Call[f] : func:r1449_6, this:r0_11 -# 1449| mu1449_8(unknown) = ^CallSideEffect : ~m? +# 1496| r1496_6(glval<unknown>) = FunctionAddress[f] : +# 1496| r1496_7(float) = Call[f] : func:r1496_6, this:r0_11 +# 1496| mu1496_8(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -# 1449| mu1449_9(float) = Store[f] : &:r1449_1, r1449_7 -# 1450| v1450_1(void) = NoOp : -# 1445| v1445_4(void) = ReturnVoid : -# 1445| v1445_5(void) = AliasedUse : ~m? -# 1445| v1445_6(void) = ExitFunction : - -# 1453| void Inheritance_Test_B::~Inheritance_Test_B() -# 1453| Block 0 -# 1453| v1453_1(void) = EnterFunction : -# 1453| mu1453_2(unknown) = AliasedDefinition : -# 1453| mu1453_3(unknown) = InitializeNonLocal : -# 1453| r1453_4(glval<unknown>) = VariableAddress[#this] : -# 1453| mu1453_5(glval<Inheritance_Test_B>) = InitializeParameter[#this] : &:r1453_4 -# 1453| r1453_6(glval<Inheritance_Test_B>) = Load[#this] : &:r1453_4, ~m? -# 1453| mu1453_7(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1453_6 -# 1453| v1453_8(void) = NoOp : -# 1453| v1453_9(void) = ReturnIndirection[#this] : &:r1453_6, ~m? -# 1453| v1453_10(void) = ReturnVoid : -# 1453| v1453_11(void) = AliasedUse : ~m? -# 1453| v1453_12(void) = ExitFunction : - -# 1459| void Inheritance_Test_A::Inheritance_Test_A() -# 1459| Block 0 -# 1459| v1459_1(void) = EnterFunction : -# 1459| mu1459_2(unknown) = AliasedDefinition : -# 1459| mu1459_3(unknown) = InitializeNonLocal : -# 1459| r1459_4(glval<unknown>) = VariableAddress[#this] : -# 1459| mu1459_5(glval<Inheritance_Test_A>) = InitializeParameter[#this] : &:r1459_4 -# 1459| r1459_6(glval<Inheritance_Test_A>) = Load[#this] : &:r1459_4, ~m? -# 1459| mu1459_7(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1459_6 -# 1459| r1459_8(glval<int>) = FieldAddress[x] : mu1459_5 -# 1459| r1459_9(int) = Constant[42] : -# 1459| mu1459_10(int) = Store[?] : &:r1459_8, r1459_9 -# 1460| r1460_1(int) = Constant[3] : -# 1460| r1460_2(glval<unknown>) = VariableAddress[#this] : -# 1460| r1460_3(Inheritance_Test_A *) = Load[#this] : &:r1460_2, ~m? -# 1460| r1460_4(glval<int>) = FieldAddress[y] : r1460_3 -# 1460| mu1460_5(int) = Store[?] : &:r1460_4, r1460_1 -# 1461| v1461_1(void) = NoOp : -# 1459| v1459_11(void) = ReturnIndirection[#this] : &:r1459_6, ~m? -# 1459| v1459_12(void) = ReturnVoid : -# 1459| v1459_13(void) = AliasedUse : ~m? -# 1459| v1459_14(void) = ExitFunction : - -# 1464| void array_structured_binding() -# 1464| Block 0 -# 1464| v1464_1(void) = EnterFunction : -# 1464| mu1464_2(unknown) = AliasedDefinition : -# 1464| mu1464_3(unknown) = InitializeNonLocal : -# 1465| r1465_1(glval<int[2]>) = VariableAddress[xs] : -# 1465| mu1465_2(int[2]) = Uninitialized[xs] : &:r1465_1 -# 1465| r1465_3(int) = Constant[0] : -# 1465| r1465_4(glval<int>) = PointerAdd[4] : r1465_1, r1465_3 -# 1465| r1465_5(int) = Constant[1] : -# 1465| mu1465_6(int) = Store[?] : &:r1465_4, r1465_5 -# 1465| r1465_7(int) = Constant[1] : -# 1465| r1465_8(glval<int>) = PointerAdd[4] : r1465_1, r1465_7 -# 1465| r1465_9(int) = Constant[2] : -# 1465| mu1465_10(int) = Store[?] : &:r1465_8, r1465_9 -# 1468| r1468_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : -# 1468| r1468_2(glval<int[2]>) = VariableAddress[xs] : -# 1468| r1468_3(int(&)[2]) = CopyValue : r1468_2 -# 1468| mu1468_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1468_1, r1468_3 -# 1468| r1468_5(glval<int &>) = VariableAddress[x0] : +# 1496| mu1496_9(float) = Store[f] : &:r1496_1, r1496_7 +# 1497| v1497_1(void) = NoOp : +# 1492| v1492_4(void) = ReturnVoid : +# 1492| v1492_5(void) = AliasedUse : ~m? +# 1492| v1492_6(void) = ExitFunction : + +# 1500| void Inheritance_Test_B::~Inheritance_Test_B() +# 1500| Block 0 +# 1500| v1500_1(void) = EnterFunction : +# 1500| mu1500_2(unknown) = AliasedDefinition : +# 1500| mu1500_3(unknown) = InitializeNonLocal : +# 1500| r1500_4(glval<unknown>) = VariableAddress[#this] : +# 1500| mu1500_5(glval<Inheritance_Test_B>) = InitializeParameter[#this] : &:r1500_4 +# 1500| r1500_6(glval<Inheritance_Test_B>) = Load[#this] : &:r1500_4, ~m? +# 1500| mu1500_7(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1500_6 +# 1500| v1500_8(void) = NoOp : +# 1500| v1500_9(void) = ReturnIndirection[#this] : &:r1500_6, ~m? +# 1500| v1500_10(void) = ReturnVoid : +# 1500| v1500_11(void) = AliasedUse : ~m? +# 1500| v1500_12(void) = ExitFunction : + +# 1506| void Inheritance_Test_A::Inheritance_Test_A() +# 1506| Block 0 +# 1506| v1506_1(void) = EnterFunction : +# 1506| mu1506_2(unknown) = AliasedDefinition : +# 1506| mu1506_3(unknown) = InitializeNonLocal : +# 1506| r1506_4(glval<unknown>) = VariableAddress[#this] : +# 1506| mu1506_5(glval<Inheritance_Test_A>) = InitializeParameter[#this] : &:r1506_4 +# 1506| r1506_6(glval<Inheritance_Test_A>) = Load[#this] : &:r1506_4, ~m? +# 1506| mu1506_7(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1506_6 +# 1506| r1506_8(glval<int>) = FieldAddress[x] : mu1506_5 +# 1506| r1506_9(int) = Constant[42] : +# 1506| mu1506_10(int) = Store[?] : &:r1506_8, r1506_9 +# 1507| r1507_1(int) = Constant[3] : +# 1507| r1507_2(glval<unknown>) = VariableAddress[#this] : +# 1507| r1507_3(Inheritance_Test_A *) = Load[#this] : &:r1507_2, ~m? +# 1507| r1507_4(glval<int>) = FieldAddress[y] : r1507_3 +# 1507| mu1507_5(int) = Store[?] : &:r1507_4, r1507_1 +# 1508| v1508_1(void) = NoOp : +# 1506| v1506_11(void) = ReturnIndirection[#this] : &:r1506_6, ~m? +# 1506| v1506_12(void) = ReturnVoid : +# 1506| v1506_13(void) = AliasedUse : ~m? +# 1506| v1506_14(void) = ExitFunction : + +# 1511| void array_structured_binding() +# 1511| Block 0 +# 1511| v1511_1(void) = EnterFunction : +# 1511| mu1511_2(unknown) = AliasedDefinition : +# 1511| mu1511_3(unknown) = InitializeNonLocal : +# 1512| r1512_1(glval<int[2]>) = VariableAddress[xs] : +# 1512| mu1512_2(int[2]) = Uninitialized[xs] : &:r1512_1 +# 1512| r1512_3(int) = Constant[0] : +# 1512| r1512_4(glval<int>) = PointerAdd[4] : r1512_1, r1512_3 +# 1512| r1512_5(int) = Constant[1] : +# 1512| mu1512_6(int) = Store[?] : &:r1512_4, r1512_5 +# 1512| r1512_7(int) = Constant[1] : +# 1512| r1512_8(glval<int>) = PointerAdd[4] : r1512_1, r1512_7 +# 1512| r1512_9(int) = Constant[2] : +# 1512| mu1512_10(int) = Store[?] : &:r1512_8, r1512_9 +# 1515| r1515_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : +# 1515| r1515_2(glval<int[2]>) = VariableAddress[xs] : +# 1515| r1515_3(int(&)[2]) = CopyValue : r1515_2 +# 1515| mu1515_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1515_1, r1515_3 +# 1515| r1515_5(glval<int &>) = VariableAddress[x0] : #-----| r0_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, ~m? #-----| r0_3(glval<int[2]>) = CopyValue : r0_2 #-----| r0_4(int *) = Convert : r0_3 #-----| r0_5(unsigned long) = Constant[0] : #-----| r0_6(glval<int>) = PointerAdd[4] : r0_4, r0_5 -#-----| mu0_7(int &) = Store[x0] : &:r1468_5, r0_6 -# 1468| r1468_6(glval<int &>) = VariableAddress[x1] : +#-----| mu0_7(int &) = Store[x0] : &:r1515_5, r0_6 +# 1515| r1515_6(glval<int &>) = VariableAddress[x1] : #-----| r0_8(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] : #-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, ~m? #-----| r0_10(glval<int[2]>) = CopyValue : r0_9 #-----| r0_11(int *) = Convert : r0_10 #-----| r0_12(unsigned long) = Constant[1] : #-----| r0_13(glval<int>) = PointerAdd[4] : r0_11, r0_12 -#-----| mu0_14(int &) = Store[x1] : &:r1468_6, r0_13 -# 1469| r1469_1(int) = Constant[3] : -# 1469| r1469_2(glval<int &>) = VariableAddress[x1] : -# 1469| r1469_3(int &) = Load[x1] : &:r1469_2, ~m? -# 1469| mu1469_4(int) = Store[?] : &:r1469_3, r1469_1 -# 1470| r1470_1(glval<int &>) = VariableAddress[rx1] : -# 1470| r1470_2(glval<int &>) = VariableAddress[x1] : -# 1470| r1470_3(int &) = Load[x1] : &:r1470_2, ~m? -# 1470| r1470_4(int &) = CopyValue : r1470_3 -# 1470| mu1470_5(int &) = Store[rx1] : &:r1470_1, r1470_4 -# 1471| r1471_1(glval<int>) = VariableAddress[x] : -# 1471| r1471_2(glval<int &>) = VariableAddress[x1] : -# 1471| r1471_3(int &) = Load[x1] : &:r1471_2, ~m? -# 1471| r1471_4(int) = Load[?] : &:r1471_3, ~m? -# 1471| mu1471_5(int) = Store[x] : &:r1471_1, r1471_4 -# 1475| r1475_1(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : -# 1475| r1475_2(glval<int[2]>) = VariableAddress[xs] : -# 1475| r1475_3(int(&)[2]) = CopyValue : r1475_2 -# 1475| mu1475_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1475_1, r1475_3 -# 1476| r1476_1(glval<int &>) = VariableAddress[x0] : -# 1476| r1476_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : -# 1476| r1476_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1476_2, ~m? -# 1476| r1476_4(glval<int[2]>) = CopyValue : r1476_3 -# 1476| r1476_5(int *) = Convert : r1476_4 -# 1476| r1476_6(int) = Constant[0] : -# 1476| r1476_7(glval<int>) = PointerAdd[4] : r1476_5, r1476_6 -# 1476| r1476_8(int &) = CopyValue : r1476_7 -# 1476| mu1476_9(int &) = Store[x0] : &:r1476_1, r1476_8 -# 1477| r1477_1(glval<int &>) = VariableAddress[x1] : -# 1477| r1477_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : -# 1477| r1477_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1477_2, ~m? -# 1477| r1477_4(glval<int[2]>) = CopyValue : r1477_3 -# 1477| r1477_5(int *) = Convert : r1477_4 -# 1477| r1477_6(int) = Constant[1] : -# 1477| r1477_7(glval<int>) = PointerAdd[4] : r1477_5, r1477_6 -# 1477| r1477_8(int &) = CopyValue : r1477_7 -# 1477| mu1477_9(int &) = Store[x1] : &:r1477_1, r1477_8 -# 1478| r1478_1(int) = Constant[3] : -# 1478| r1478_2(glval<int &>) = VariableAddress[x1] : -# 1478| r1478_3(int &) = Load[x1] : &:r1478_2, ~m? -# 1478| r1478_4(glval<int>) = CopyValue : r1478_3 -# 1478| mu1478_5(int) = Store[?] : &:r1478_4, r1478_1 -# 1479| r1479_1(glval<int &>) = VariableAddress[rx1] : -# 1479| r1479_2(glval<int &>) = VariableAddress[x1] : -# 1479| r1479_3(int &) = Load[x1] : &:r1479_2, ~m? -# 1479| r1479_4(glval<int>) = CopyValue : r1479_3 -# 1479| r1479_5(int &) = CopyValue : r1479_4 -# 1479| mu1479_6(int &) = Store[rx1] : &:r1479_1, r1479_5 -# 1480| r1480_1(glval<int>) = VariableAddress[x] : -# 1480| r1480_2(glval<int &>) = VariableAddress[x1] : -# 1480| r1480_3(int &) = Load[x1] : &:r1480_2, ~m? -# 1480| r1480_4(int) = Load[?] : &:r1480_3, ~m? -# 1480| mu1480_5(int) = Store[x] : &:r1480_1, r1480_4 -# 1482| v1482_1(void) = NoOp : -# 1464| v1464_4(void) = ReturnVoid : -# 1464| v1464_5(void) = AliasedUse : ~m? -# 1464| v1464_6(void) = ExitFunction : - -# 1484| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1484| Block 0 -# 1484| v1484_1(void) = EnterFunction : -# 1484| mu1484_2(unknown) = AliasedDefinition : -# 1484| mu1484_3(unknown) = InitializeNonLocal : -# 1484| r1484_4(glval<unknown>) = VariableAddress[#this] : -# 1484| mu1484_5(glval<StructuredBindingDataMemberMemberStruct>) = InitializeParameter[#this] : &:r1484_4 -# 1484| r1484_6(glval<StructuredBindingDataMemberMemberStruct>) = Load[#this] : &:r1484_4, ~m? -# 1484| mu1484_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1484_6 -# 1484| v1484_8(void) = NoOp : -# 1484| v1484_9(void) = ReturnIndirection[#this] : &:r1484_6, ~m? -# 1484| v1484_10(void) = ReturnVoid : -# 1484| v1484_11(void) = AliasedUse : ~m? -# 1484| v1484_12(void) = ExitFunction : - -# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1488| Block 0 -# 1488| v1488_1(void) = EnterFunction : -# 1488| mu1488_2(unknown) = AliasedDefinition : -# 1488| mu1488_3(unknown) = InitializeNonLocal : -# 1488| r1488_4(glval<unknown>) = VariableAddress[#this] : -# 1488| mu1488_5(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1488_4 -# 1488| r1488_6(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1488_4, ~m? -# 1488| mu1488_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_6 +#-----| mu0_14(int &) = Store[x1] : &:r1515_6, r0_13 +# 1516| r1516_1(int) = Constant[3] : +# 1516| r1516_2(glval<int &>) = VariableAddress[x1] : +# 1516| r1516_3(int &) = Load[x1] : &:r1516_2, ~m? +# 1516| mu1516_4(int) = Store[?] : &:r1516_3, r1516_1 +# 1517| r1517_1(glval<int &>) = VariableAddress[rx1] : +# 1517| r1517_2(glval<int &>) = VariableAddress[x1] : +# 1517| r1517_3(int &) = Load[x1] : &:r1517_2, ~m? +# 1517| r1517_4(int &) = CopyValue : r1517_3 +# 1517| mu1517_5(int &) = Store[rx1] : &:r1517_1, r1517_4 +# 1518| r1518_1(glval<int>) = VariableAddress[x] : +# 1518| r1518_2(glval<int &>) = VariableAddress[x1] : +# 1518| r1518_3(int &) = Load[x1] : &:r1518_2, ~m? +# 1518| r1518_4(int) = Load[?] : &:r1518_3, ~m? +# 1518| mu1518_5(int) = Store[x] : &:r1518_1, r1518_4 +# 1522| r1522_1(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : +# 1522| r1522_2(glval<int[2]>) = VariableAddress[xs] : +# 1522| r1522_3(int(&)[2]) = CopyValue : r1522_2 +# 1522| mu1522_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1522_1, r1522_3 +# 1523| r1523_1(glval<int &>) = VariableAddress[x0] : +# 1523| r1523_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : +# 1523| r1523_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1523_2, ~m? +# 1523| r1523_4(glval<int[2]>) = CopyValue : r1523_3 +# 1523| r1523_5(int *) = Convert : r1523_4 +# 1523| r1523_6(int) = Constant[0] : +# 1523| r1523_7(glval<int>) = PointerAdd[4] : r1523_5, r1523_6 +# 1523| r1523_8(int &) = CopyValue : r1523_7 +# 1523| mu1523_9(int &) = Store[x0] : &:r1523_1, r1523_8 +# 1524| r1524_1(glval<int &>) = VariableAddress[x1] : +# 1524| r1524_2(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] : +# 1524| r1524_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1524_2, ~m? +# 1524| r1524_4(glval<int[2]>) = CopyValue : r1524_3 +# 1524| r1524_5(int *) = Convert : r1524_4 +# 1524| r1524_6(int) = Constant[1] : +# 1524| r1524_7(glval<int>) = PointerAdd[4] : r1524_5, r1524_6 +# 1524| r1524_8(int &) = CopyValue : r1524_7 +# 1524| mu1524_9(int &) = Store[x1] : &:r1524_1, r1524_8 +# 1525| r1525_1(int) = Constant[3] : +# 1525| r1525_2(glval<int &>) = VariableAddress[x1] : +# 1525| r1525_3(int &) = Load[x1] : &:r1525_2, ~m? +# 1525| r1525_4(glval<int>) = CopyValue : r1525_3 +# 1525| mu1525_5(int) = Store[?] : &:r1525_4, r1525_1 +# 1526| r1526_1(glval<int &>) = VariableAddress[rx1] : +# 1526| r1526_2(glval<int &>) = VariableAddress[x1] : +# 1526| r1526_3(int &) = Load[x1] : &:r1526_2, ~m? +# 1526| r1526_4(glval<int>) = CopyValue : r1526_3 +# 1526| r1526_5(int &) = CopyValue : r1526_4 +# 1526| mu1526_6(int &) = Store[rx1] : &:r1526_1, r1526_5 +# 1527| r1527_1(glval<int>) = VariableAddress[x] : +# 1527| r1527_2(glval<int &>) = VariableAddress[x1] : +# 1527| r1527_3(int &) = Load[x1] : &:r1527_2, ~m? +# 1527| r1527_4(int) = Load[?] : &:r1527_3, ~m? +# 1527| mu1527_5(int) = Store[x] : &:r1527_1, r1527_4 +# 1529| v1529_1(void) = NoOp : +# 1511| v1511_4(void) = ReturnVoid : +# 1511| v1511_5(void) = AliasedUse : ~m? +# 1511| v1511_6(void) = ExitFunction : + +# 1531| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1531| Block 0 +# 1531| v1531_1(void) = EnterFunction : +# 1531| mu1531_2(unknown) = AliasedDefinition : +# 1531| mu1531_3(unknown) = InitializeNonLocal : +# 1531| r1531_4(glval<unknown>) = VariableAddress[#this] : +# 1531| mu1531_5(glval<StructuredBindingDataMemberMemberStruct>) = InitializeParameter[#this] : &:r1531_4 +# 1531| r1531_6(glval<StructuredBindingDataMemberMemberStruct>) = Load[#this] : &:r1531_4, ~m? +# 1531| mu1531_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1531_6 +# 1531| v1531_8(void) = NoOp : +# 1531| v1531_9(void) = ReturnIndirection[#this] : &:r1531_6, ~m? +# 1531| v1531_10(void) = ReturnVoid : +# 1531| v1531_11(void) = AliasedUse : ~m? +# 1531| v1531_12(void) = ExitFunction : + +# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1535| Block 0 +# 1535| v1535_1(void) = EnterFunction : +# 1535| mu1535_2(unknown) = AliasedDefinition : +# 1535| mu1535_3(unknown) = InitializeNonLocal : +# 1535| r1535_4(glval<unknown>) = VariableAddress[#this] : +# 1535| mu1535_5(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1535_4 +# 1535| r1535_6(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1535_4, ~m? +# 1535| mu1535_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_6 #-----| Goto -> Block 2 -# 1488| Block 1 -# 1488| r1488_8(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : mu1488_5 -# 1488| r1488_9(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : -# 1488| v1488_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1488_9, this:r1488_8 -# 1488| mu1488_11(unknown) = ^CallSideEffect : ~m? -# 1488| mu1488_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1488_8 +# 1535| Block 1 +# 1535| r1535_8(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : mu1535_5 +# 1535| r1535_9(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : +# 1535| v1535_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1535_9, this:r1535_8 +# 1535| mu1535_11(unknown) = ^CallSideEffect : ~m? +# 1535| mu1535_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1535_8 #-----| Goto -> Block 2 -# 1488| Block 2 -# 1488| v1488_13(void) = NoOp : -# 1488| v1488_14(void) = ReturnIndirection[#this] : &:r1488_6, ~m? -# 1488| v1488_15(void) = ReturnVoid : -# 1488| v1488_16(void) = AliasedUse : ~m? -# 1488| v1488_17(void) = ExitFunction : - -# 1488| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1488| Block 0 -# 1488| v1488_1(void) = EnterFunction : -# 1488| mu1488_2(unknown) = AliasedDefinition : -# 1488| mu1488_3(unknown) = InitializeNonLocal : -# 1488| r1488_4(glval<unknown>) = VariableAddress[#this] : -# 1488| mu1488_5(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1488_4 -# 1488| r1488_6(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1488_4, ~m? -# 1488| mu1488_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1488_6 +# 1535| Block 2 +# 1535| v1535_13(void) = NoOp : +# 1535| v1535_14(void) = ReturnIndirection[#this] : &:r1535_6, ~m? +# 1535| v1535_15(void) = ReturnVoid : +# 1535| v1535_16(void) = AliasedUse : ~m? +# 1535| v1535_17(void) = ExitFunction : + +# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1535| Block 0 +# 1535| v1535_1(void) = EnterFunction : +# 1535| mu1535_2(unknown) = AliasedDefinition : +# 1535| mu1535_3(unknown) = InitializeNonLocal : +# 1535| r1535_4(glval<unknown>) = VariableAddress[#this] : +# 1535| mu1535_5(glval<StructuredBindingDataMemberStruct>) = InitializeParameter[#this] : &:r1535_4 +# 1535| r1535_6(glval<StructuredBindingDataMemberStruct>) = Load[#this] : &:r1535_4, ~m? +# 1535| mu1535_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_6 #-----| r0_1(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(StructuredBindingDataMemberStruct &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1488| r1488_8(glval<int>) = FieldAddress[i] : mu1488_5 -# 1488| r1488_9(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_10(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_9, ~m? -# 1488| r1488_11(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_10 -# 1488| r1488_12(glval<int>) = FieldAddress[i] : r1488_11 -# 1488| r1488_13(int) = Load[?] : &:r1488_12, ~m? -# 1488| mu1488_14(int) = Store[?] : &:r1488_8, r1488_13 -# 1488| r1488_15(glval<double>) = FieldAddress[d] : mu1488_5 -# 1488| r1488_16(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_17(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_16, ~m? -# 1488| r1488_18(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_17 -# 1488| r1488_19(glval<double>) = FieldAddress[d] : r1488_18 -# 1488| r1488_20(double) = Load[?] : &:r1488_19, ~m? -# 1488| mu1488_21(double) = Store[?] : &:r1488_15, r1488_20 -# 1488| r1488_22(glval<unsigned int>) = FieldAddress[b] : mu1488_5 -# 1488| r1488_23(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_24(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_23, ~m? -# 1488| r1488_25(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_24 -# 1488| r1488_26(glval<unsigned int>) = FieldAddress[b] : r1488_25 -# 1488| r1488_27(unsigned int) = Load[?] : &:r1488_26, ~m? -# 1488| mu1488_28(unsigned int) = Store[?] : &:r1488_22, r1488_27 -# 1488| r1488_29(glval<int &>) = FieldAddress[r] : mu1488_5 -# 1488| r1488_30(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_31(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_30, ~m? -# 1488| r1488_32(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_31 -# 1488| r1488_33(glval<int &>) = FieldAddress[r] : r1488_32 -# 1488| r1488_34(int &) = Load[?] : &:r1488_33, ~m? -# 1488| mu1488_35(int &) = Store[?] : &:r1488_29, r1488_34 -# 1488| r1488_36(glval<int *>) = FieldAddress[p] : mu1488_5 -# 1488| r1488_37(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_38(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_37, ~m? -# 1488| r1488_39(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_38 -# 1488| r1488_40(glval<int *>) = FieldAddress[p] : r1488_39 -# 1488| r1488_41(int *) = Load[?] : &:r1488_40, ~m? -# 1488| mu1488_42(int *) = Store[?] : &:r1488_36, r1488_41 -# 1488| r1488_43(glval<int[2]>) = FieldAddress[xs] : mu1488_5 -# 1488| r1488_44(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_45(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_44, ~m? -# 1488| r1488_46(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_45 -# 1488| r1488_47(glval<int[2]>) = FieldAddress[xs] : r1488_46 -# 1488| r1488_48(int[2]) = Load[?] : &:r1488_47, ~m? -# 1488| mu1488_49(int[2]) = Store[?] : &:r1488_43, r1488_48 -# 1488| r1488_50(glval<int &>) = FieldAddress[r_alt] : mu1488_5 -# 1488| r1488_51(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_52(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_51, ~m? -# 1488| r1488_53(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_52 -# 1488| r1488_54(glval<int &>) = FieldAddress[r_alt] : r1488_53 -# 1488| r1488_55(int &) = Load[?] : &:r1488_54, ~m? -# 1488| mu1488_56(int &) = Store[?] : &:r1488_50, r1488_55 -# 1488| r1488_57(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : mu1488_5 -# 1488| r1488_58(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : -# 1488| r1488_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1488_58, ~m? -# 1488| r1488_60(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1488_59 -# 1488| r1488_61(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1488_60 -# 1488| r1488_62(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1488_61, ~m? -# 1488| mu1488_63(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1488_57, r1488_62 -# 1488| v1488_64(void) = NoOp : -# 1488| v1488_65(void) = ReturnIndirection[#this] : &:r1488_6, ~m? +# 1535| r1535_8(glval<int>) = FieldAddress[i] : mu1535_5 +# 1535| r1535_9(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_10(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_9, ~m? +# 1535| r1535_11(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_10 +# 1535| r1535_12(glval<int>) = FieldAddress[i] : r1535_11 +# 1535| r1535_13(int) = Load[?] : &:r1535_12, ~m? +# 1535| mu1535_14(int) = Store[?] : &:r1535_8, r1535_13 +# 1535| r1535_15(glval<double>) = FieldAddress[d] : mu1535_5 +# 1535| r1535_16(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_17(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_16, ~m? +# 1535| r1535_18(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_17 +# 1535| r1535_19(glval<double>) = FieldAddress[d] : r1535_18 +# 1535| r1535_20(double) = Load[?] : &:r1535_19, ~m? +# 1535| mu1535_21(double) = Store[?] : &:r1535_15, r1535_20 +# 1535| r1535_22(glval<unsigned int>) = FieldAddress[b] : mu1535_5 +# 1535| r1535_23(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_24(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_23, ~m? +# 1535| r1535_25(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_24 +# 1535| r1535_26(glval<unsigned int>) = FieldAddress[b] : r1535_25 +# 1535| r1535_27(unsigned int) = Load[?] : &:r1535_26, ~m? +# 1535| mu1535_28(unsigned int) = Store[?] : &:r1535_22, r1535_27 +# 1535| r1535_29(glval<int &>) = FieldAddress[r] : mu1535_5 +# 1535| r1535_30(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_31(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_30, ~m? +# 1535| r1535_32(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_31 +# 1535| r1535_33(glval<int &>) = FieldAddress[r] : r1535_32 +# 1535| r1535_34(int &) = Load[?] : &:r1535_33, ~m? +# 1535| mu1535_35(int &) = Store[?] : &:r1535_29, r1535_34 +# 1535| r1535_36(glval<int *>) = FieldAddress[p] : mu1535_5 +# 1535| r1535_37(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_38(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_37, ~m? +# 1535| r1535_39(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_38 +# 1535| r1535_40(glval<int *>) = FieldAddress[p] : r1535_39 +# 1535| r1535_41(int *) = Load[?] : &:r1535_40, ~m? +# 1535| mu1535_42(int *) = Store[?] : &:r1535_36, r1535_41 +# 1535| r1535_43(glval<int[2]>) = FieldAddress[xs] : mu1535_5 +# 1535| r1535_44(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_45(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_44, ~m? +# 1535| r1535_46(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_45 +# 1535| r1535_47(glval<int[2]>) = FieldAddress[xs] : r1535_46 +# 1535| r1535_48(int[2]) = Load[?] : &:r1535_47, ~m? +# 1535| mu1535_49(int[2]) = Store[?] : &:r1535_43, r1535_48 +# 1535| r1535_50(glval<int &>) = FieldAddress[r_alt] : mu1535_5 +# 1535| r1535_51(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_52(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_51, ~m? +# 1535| r1535_53(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_52 +# 1535| r1535_54(glval<int &>) = FieldAddress[r_alt] : r1535_53 +# 1535| r1535_55(int &) = Load[?] : &:r1535_54, ~m? +# 1535| mu1535_56(int &) = Store[?] : &:r1535_50, r1535_55 +# 1535| r1535_57(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : mu1535_5 +# 1535| r1535_58(glval<StructuredBindingDataMemberStruct &>) = VariableAddress[(unnamed parameter 0)] : +# 1535| r1535_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_58, ~m? +# 1535| r1535_60(glval<StructuredBindingDataMemberStruct>) = CopyValue : r1535_59 +# 1535| r1535_61(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1535_60 +# 1535| r1535_62(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1535_61, ~m? +# 1535| mu1535_63(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1535_57, r1535_62 +# 1535| v1535_64(void) = NoOp : +# 1535| v1535_65(void) = ReturnIndirection[#this] : &:r1535_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1488| v1488_66(void) = ReturnVoid : -# 1488| v1488_67(void) = AliasedUse : ~m? -# 1488| v1488_68(void) = ExitFunction : - -# 1501| void data_member_structured_binding() -# 1501| Block 0 -# 1501| v1501_1(void) = EnterFunction : -# 1501| mu1501_2(unknown) = AliasedDefinition : -# 1501| mu1501_3(unknown) = InitializeNonLocal : -# 1502| r1502_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : -# 1502| mu1502_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1502_1 -# 1502| r1502_3(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] : -# 1502| v1502_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1502_3, this:r1502_1 -# 1502| mu1502_5(unknown) = ^CallSideEffect : ~m? -# 1502| mu1502_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1502_1 -# 1505| r1505_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : -# 1505| r1505_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1505_2, ~m? -# 1505| mu1505_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1505_1, r1505_3 -# 1505| r1505_5(glval<int &>) = VariableAddress[i] : -# 1505| r1505_6(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_7(glval<int>) = FieldAddress[i] : r1505_6 -# 1505| mu1505_8(int &) = Store[i] : &:r1505_5, r1505_7 -# 1505| r1505_9(glval<double &>) = VariableAddress[d] : -# 1505| r1505_10(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_11(glval<double>) = FieldAddress[d] : r1505_10 -# 1505| mu1505_12(double &) = Store[d] : &:r1505_9, r1505_11 -# 1505| r1505_13(glval<unsigned int &>) = VariableAddress[b] : -# 1505| r1505_14(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_15(glval<unsigned int>) = FieldAddress[b] : r1505_14 -# 1505| mu1505_16(unsigned int &) = Store[b] : &:r1505_13, r1505_15 -# 1505| r1505_17(glval<int &>) = VariableAddress[r] : -# 1505| r1505_18(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_19(glval<int &>) = FieldAddress[r] : r1505_18 -# 1505| r1505_20(int &) = Load[?] : &:r1505_19, ~m? -# 1505| r1505_21(glval<int>) = CopyValue : r1505_20 -# 1505| mu1505_22(int &) = Store[r] : &:r1505_17, r1505_21 -# 1505| r1505_23(glval<int *&>) = VariableAddress[p] : -# 1505| r1505_24(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_25(glval<int *>) = FieldAddress[p] : r1505_24 -# 1505| mu1505_26(int *&) = Store[p] : &:r1505_23, r1505_25 -# 1505| r1505_27(glval<int(&)[2]>) = VariableAddress[xs] : -# 1505| r1505_28(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_29(glval<int[2]>) = FieldAddress[xs] : r1505_28 -# 1505| mu1505_30(int(&)[2]) = Store[xs] : &:r1505_27, r1505_29 -# 1505| r1505_31(glval<int &>) = VariableAddress[r_alt] : -# 1505| r1505_32(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_33(glval<int &>) = FieldAddress[r_alt] : r1505_32 -# 1505| r1505_34(int &) = Load[?] : &:r1505_33, ~m? -# 1505| r1505_35(glval<int>) = CopyValue : r1505_34 -# 1505| mu1505_36(int &) = Store[r_alt] : &:r1505_31, r1505_35 -# 1505| r1505_37(glval<StructuredBindingDataMemberMemberStruct &>) = VariableAddress[m] : -# 1505| r1505_38(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : -# 1505| r1505_39(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1505_38 -# 1505| mu1505_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1505_37, r1505_39 -# 1506| r1506_1(double) = Constant[4.0] : -# 1506| r1506_2(glval<double &>) = VariableAddress[d] : -# 1506| r1506_3(double &) = Load[d] : &:r1506_2, ~m? -# 1506| mu1506_4(double) = Store[?] : &:r1506_3, r1506_1 -# 1507| r1507_1(glval<double &>) = VariableAddress[rd] : -# 1507| r1507_2(glval<double &>) = VariableAddress[d] : -# 1507| r1507_3(double &) = Load[d] : &:r1507_2, ~m? -# 1507| r1507_4(double &) = CopyValue : r1507_3 -# 1507| mu1507_5(double &) = Store[rd] : &:r1507_1, r1507_4 -# 1508| r1508_1(glval<int>) = VariableAddress[v] : -# 1508| r1508_2(glval<int &>) = VariableAddress[i] : -# 1508| r1508_3(int &) = Load[i] : &:r1508_2, ~m? -# 1508| r1508_4(int) = Load[?] : &:r1508_3, ~m? -# 1508| mu1508_5(int) = Store[v] : &:r1508_1, r1508_4 -# 1509| r1509_1(int) = Constant[5] : -# 1509| r1509_2(glval<int &>) = VariableAddress[r] : -# 1509| r1509_3(int &) = Load[r] : &:r1509_2, ~m? -# 1509| mu1509_4(int) = Store[?] : &:r1509_3, r1509_1 -# 1510| r1510_1(int) = Constant[6] : -# 1510| r1510_2(glval<int *&>) = VariableAddress[p] : -# 1510| r1510_3(int *&) = Load[p] : &:r1510_2, ~m? -# 1510| r1510_4(int *) = Load[?] : &:r1510_3, ~m? -# 1510| r1510_5(glval<int>) = CopyValue : r1510_4 -# 1510| mu1510_6(int) = Store[?] : &:r1510_5, r1510_1 -# 1511| r1511_1(glval<int &>) = VariableAddress[rr] : -# 1511| r1511_2(glval<int &>) = VariableAddress[r] : -# 1511| r1511_3(int &) = Load[r] : &:r1511_2, ~m? -# 1511| r1511_4(int &) = CopyValue : r1511_3 -# 1511| mu1511_5(int &) = Store[rr] : &:r1511_1, r1511_4 -# 1512| r1512_1(glval<int *>) = VariableAddress[pr] : -# 1512| r1512_2(glval<int &>) = VariableAddress[r] : -# 1512| r1512_3(int &) = Load[r] : &:r1512_2, ~m? -# 1512| r1512_4(int *) = CopyValue : r1512_3 -# 1512| mu1512_5(int *) = Store[pr] : &:r1512_1, r1512_4 -# 1513| r1513_1(glval<int>) = VariableAddress[w] : -# 1513| r1513_2(glval<int &>) = VariableAddress[r] : -# 1513| r1513_3(int &) = Load[r] : &:r1513_2, ~m? -# 1513| r1513_4(int) = Load[?] : &:r1513_3, ~m? -# 1513| mu1513_5(int) = Store[w] : &:r1513_1, r1513_4 -# 1517| r1517_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1517| r1517_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : -# 1517| r1517_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1517_2, ~m? -# 1517| mu1517_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1517_1, r1517_3 -# 1518| r1518_1(glval<int &>) = VariableAddress[i] : -# 1518| r1518_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1518| r1518_3(glval<int>) = FieldAddress[i] : r1518_2 -# 1518| r1518_4(int &) = CopyValue : r1518_3 -# 1518| mu1518_5(int &) = Store[i] : &:r1518_1, r1518_4 -# 1519| r1519_1(glval<double &>) = VariableAddress[d] : -# 1519| r1519_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1519| r1519_3(glval<double>) = FieldAddress[d] : r1519_2 -# 1519| r1519_4(double &) = CopyValue : r1519_3 -# 1519| mu1519_5(double &) = Store[d] : &:r1519_1, r1519_4 -# 1521| r1521_1(glval<int &>) = VariableAddress[r] : -# 1521| r1521_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1521| r1521_3(glval<int &>) = FieldAddress[r] : r1521_2 -# 1521| r1521_4(int &) = Load[?] : &:r1521_3, ~m? -# 1521| r1521_5(glval<int>) = CopyValue : r1521_4 -# 1521| r1521_6(int &) = CopyValue : r1521_5 -# 1521| mu1521_7(int &) = Store[r] : &:r1521_1, r1521_6 -# 1522| r1522_1(glval<int *&>) = VariableAddress[p] : -# 1522| r1522_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : -# 1522| r1522_3(glval<int *>) = FieldAddress[p] : r1522_2 -# 1522| r1522_4(int *&) = CopyValue : r1522_3 -# 1522| mu1522_5(int *&) = Store[p] : &:r1522_1, r1522_4 -# 1523| r1523_1(double) = Constant[4.0] : -# 1523| r1523_2(glval<double &>) = VariableAddress[d] : -# 1523| r1523_3(double &) = Load[d] : &:r1523_2, ~m? -# 1523| r1523_4(glval<double>) = CopyValue : r1523_3 -# 1523| mu1523_5(double) = Store[?] : &:r1523_4, r1523_1 -# 1524| r1524_1(glval<double &>) = VariableAddress[rd] : -# 1524| r1524_2(glval<double &>) = VariableAddress[d] : -# 1524| r1524_3(double &) = Load[d] : &:r1524_2, ~m? -# 1524| r1524_4(glval<double>) = CopyValue : r1524_3 -# 1524| r1524_5(double &) = CopyValue : r1524_4 -# 1524| mu1524_6(double &) = Store[rd] : &:r1524_1, r1524_5 -# 1525| r1525_1(glval<int>) = VariableAddress[v] : -# 1525| r1525_2(glval<int &>) = VariableAddress[i] : -# 1525| r1525_3(int &) = Load[i] : &:r1525_2, ~m? -# 1525| r1525_4(int) = Load[?] : &:r1525_3, ~m? -# 1525| mu1525_5(int) = Store[v] : &:r1525_1, r1525_4 -# 1526| r1526_1(int) = Constant[5] : -# 1526| r1526_2(glval<int &>) = VariableAddress[r] : -# 1526| r1526_3(int &) = Load[r] : &:r1526_2, ~m? -# 1526| r1526_4(glval<int>) = CopyValue : r1526_3 -# 1526| mu1526_5(int) = Store[?] : &:r1526_4, r1526_1 -# 1527| r1527_1(int) = Constant[6] : -# 1527| r1527_2(glval<int *&>) = VariableAddress[p] : -# 1527| r1527_3(int *&) = Load[p] : &:r1527_2, ~m? -# 1527| r1527_4(int *) = Load[?] : &:r1527_3, ~m? -# 1527| r1527_5(glval<int>) = CopyValue : r1527_4 -# 1527| mu1527_6(int) = Store[?] : &:r1527_5, r1527_1 -# 1528| r1528_1(glval<int &>) = VariableAddress[rr] : -# 1528| r1528_2(glval<int &>) = VariableAddress[r] : -# 1528| r1528_3(int &) = Load[r] : &:r1528_2, ~m? -# 1528| r1528_4(glval<int>) = CopyValue : r1528_3 -# 1528| r1528_5(int &) = CopyValue : r1528_4 -# 1528| mu1528_6(int &) = Store[rr] : &:r1528_1, r1528_5 -# 1529| r1529_1(glval<int *>) = VariableAddress[pr] : -# 1529| r1529_2(glval<int &>) = VariableAddress[r] : -# 1529| r1529_3(int &) = Load[r] : &:r1529_2, ~m? -# 1529| r1529_4(glval<int>) = CopyValue : r1529_3 -# 1529| r1529_5(int *) = CopyValue : r1529_4 -# 1529| mu1529_6(int *) = Store[pr] : &:r1529_1, r1529_5 -# 1530| r1530_1(glval<int>) = VariableAddress[w] : -# 1530| r1530_2(glval<int &>) = VariableAddress[r] : -# 1530| r1530_3(int &) = Load[r] : &:r1530_2, ~m? -# 1530| r1530_4(int) = Load[?] : &:r1530_3, ~m? -# 1530| mu1530_5(int) = Store[w] : &:r1530_1, r1530_4 -# 1532| v1532_1(void) = NoOp : -# 1501| v1501_4(void) = ReturnVoid : -# 1501| v1501_5(void) = AliasedUse : ~m? -# 1501| v1501_6(void) = ExitFunction : - -# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1541| Block 0 -# 1541| v1541_1(void) = EnterFunction : -# 1541| mu1541_2(unknown) = AliasedDefinition : -# 1541| mu1541_3(unknown) = InitializeNonLocal : -# 1541| r1541_4(glval<unknown>) = VariableAddress[#this] : -# 1541| mu1541_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1541_4 -# 1541| r1541_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1541_4, ~m? -# 1541| mu1541_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_6 -# 1541| v1541_8(void) = NoOp : -# 1541| v1541_9(void) = ReturnIndirection[#this] : &:r1541_6, ~m? -# 1541| v1541_10(void) = ReturnVoid : -# 1541| v1541_11(void) = AliasedUse : ~m? -# 1541| v1541_12(void) = ExitFunction : - -# 1541| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1541| Block 0 -# 1541| v1541_1(void) = EnterFunction : -# 1541| mu1541_2(unknown) = AliasedDefinition : -# 1541| mu1541_3(unknown) = InitializeNonLocal : -# 1541| r1541_4(glval<unknown>) = VariableAddress[#this] : -# 1541| mu1541_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1541_4 -# 1541| r1541_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1541_4, ~m? -# 1541| mu1541_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1541_6 +# 1535| v1535_66(void) = ReturnVoid : +# 1535| v1535_67(void) = AliasedUse : ~m? +# 1535| v1535_68(void) = ExitFunction : + +# 1548| void data_member_structured_binding() +# 1548| Block 0 +# 1548| v1548_1(void) = EnterFunction : +# 1548| mu1548_2(unknown) = AliasedDefinition : +# 1548| mu1548_3(unknown) = InitializeNonLocal : +# 1549| r1549_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : +# 1549| mu1549_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1549_1 +# 1549| r1549_3(glval<unknown>) = FunctionAddress[StructuredBindingDataMemberStruct] : +# 1549| v1549_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1549_3, this:r1549_1 +# 1549| mu1549_5(unknown) = ^CallSideEffect : ~m? +# 1549| mu1549_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1549_1 +# 1552| r1552_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : +# 1552| r1552_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1552_2, ~m? +# 1552| mu1552_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1552_1, r1552_3 +# 1552| r1552_5(glval<int &>) = VariableAddress[i] : +# 1552| r1552_6(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_7(glval<int>) = FieldAddress[i] : r1552_6 +# 1552| mu1552_8(int &) = Store[i] : &:r1552_5, r1552_7 +# 1552| r1552_9(glval<double &>) = VariableAddress[d] : +# 1552| r1552_10(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_11(glval<double>) = FieldAddress[d] : r1552_10 +# 1552| mu1552_12(double &) = Store[d] : &:r1552_9, r1552_11 +# 1552| r1552_13(glval<unsigned int &>) = VariableAddress[b] : +# 1552| r1552_14(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_15(glval<unsigned int>) = FieldAddress[b] : r1552_14 +# 1552| mu1552_16(unsigned int &) = Store[b] : &:r1552_13, r1552_15 +# 1552| r1552_17(glval<int &>) = VariableAddress[r] : +# 1552| r1552_18(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_19(glval<int &>) = FieldAddress[r] : r1552_18 +# 1552| r1552_20(int &) = Load[?] : &:r1552_19, ~m? +# 1552| r1552_21(glval<int>) = CopyValue : r1552_20 +# 1552| mu1552_22(int &) = Store[r] : &:r1552_17, r1552_21 +# 1552| r1552_23(glval<int *&>) = VariableAddress[p] : +# 1552| r1552_24(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_25(glval<int *>) = FieldAddress[p] : r1552_24 +# 1552| mu1552_26(int *&) = Store[p] : &:r1552_23, r1552_25 +# 1552| r1552_27(glval<int(&)[2]>) = VariableAddress[xs] : +# 1552| r1552_28(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_29(glval<int[2]>) = FieldAddress[xs] : r1552_28 +# 1552| mu1552_30(int(&)[2]) = Store[xs] : &:r1552_27, r1552_29 +# 1552| r1552_31(glval<int &>) = VariableAddress[r_alt] : +# 1552| r1552_32(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_33(glval<int &>) = FieldAddress[r_alt] : r1552_32 +# 1552| r1552_34(int &) = Load[?] : &:r1552_33, ~m? +# 1552| r1552_35(glval<int>) = CopyValue : r1552_34 +# 1552| mu1552_36(int &) = Store[r_alt] : &:r1552_31, r1552_35 +# 1552| r1552_37(glval<StructuredBindingDataMemberMemberStruct &>) = VariableAddress[m] : +# 1552| r1552_38(glval<StructuredBindingDataMemberStruct>) = VariableAddress[(unnamed local variable)] : +# 1552| r1552_39(glval<StructuredBindingDataMemberMemberStruct>) = FieldAddress[m] : r1552_38 +# 1552| mu1552_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1552_37, r1552_39 +# 1553| r1553_1(double) = Constant[4.0] : +# 1553| r1553_2(glval<double &>) = VariableAddress[d] : +# 1553| r1553_3(double &) = Load[d] : &:r1553_2, ~m? +# 1553| mu1553_4(double) = Store[?] : &:r1553_3, r1553_1 +# 1554| r1554_1(glval<double &>) = VariableAddress[rd] : +# 1554| r1554_2(glval<double &>) = VariableAddress[d] : +# 1554| r1554_3(double &) = Load[d] : &:r1554_2, ~m? +# 1554| r1554_4(double &) = CopyValue : r1554_3 +# 1554| mu1554_5(double &) = Store[rd] : &:r1554_1, r1554_4 +# 1555| r1555_1(glval<int>) = VariableAddress[v] : +# 1555| r1555_2(glval<int &>) = VariableAddress[i] : +# 1555| r1555_3(int &) = Load[i] : &:r1555_2, ~m? +# 1555| r1555_4(int) = Load[?] : &:r1555_3, ~m? +# 1555| mu1555_5(int) = Store[v] : &:r1555_1, r1555_4 +# 1556| r1556_1(int) = Constant[5] : +# 1556| r1556_2(glval<int &>) = VariableAddress[r] : +# 1556| r1556_3(int &) = Load[r] : &:r1556_2, ~m? +# 1556| mu1556_4(int) = Store[?] : &:r1556_3, r1556_1 +# 1557| r1557_1(int) = Constant[6] : +# 1557| r1557_2(glval<int *&>) = VariableAddress[p] : +# 1557| r1557_3(int *&) = Load[p] : &:r1557_2, ~m? +# 1557| r1557_4(int *) = Load[?] : &:r1557_3, ~m? +# 1557| r1557_5(glval<int>) = CopyValue : r1557_4 +# 1557| mu1557_6(int) = Store[?] : &:r1557_5, r1557_1 +# 1558| r1558_1(glval<int &>) = VariableAddress[rr] : +# 1558| r1558_2(glval<int &>) = VariableAddress[r] : +# 1558| r1558_3(int &) = Load[r] : &:r1558_2, ~m? +# 1558| r1558_4(int &) = CopyValue : r1558_3 +# 1558| mu1558_5(int &) = Store[rr] : &:r1558_1, r1558_4 +# 1559| r1559_1(glval<int *>) = VariableAddress[pr] : +# 1559| r1559_2(glval<int &>) = VariableAddress[r] : +# 1559| r1559_3(int &) = Load[r] : &:r1559_2, ~m? +# 1559| r1559_4(int *) = CopyValue : r1559_3 +# 1559| mu1559_5(int *) = Store[pr] : &:r1559_1, r1559_4 +# 1560| r1560_1(glval<int>) = VariableAddress[w] : +# 1560| r1560_2(glval<int &>) = VariableAddress[r] : +# 1560| r1560_3(int &) = Load[r] : &:r1560_2, ~m? +# 1560| r1560_4(int) = Load[?] : &:r1560_3, ~m? +# 1560| mu1560_5(int) = Store[w] : &:r1560_1, r1560_4 +# 1564| r1564_1(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1564| r1564_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[s] : +# 1564| r1564_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1564_2, ~m? +# 1564| mu1564_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1564_1, r1564_3 +# 1565| r1565_1(glval<int &>) = VariableAddress[i] : +# 1565| r1565_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1565| r1565_3(glval<int>) = FieldAddress[i] : r1565_2 +# 1565| r1565_4(int &) = CopyValue : r1565_3 +# 1565| mu1565_5(int &) = Store[i] : &:r1565_1, r1565_4 +# 1566| r1566_1(glval<double &>) = VariableAddress[d] : +# 1566| r1566_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1566| r1566_3(glval<double>) = FieldAddress[d] : r1566_2 +# 1566| r1566_4(double &) = CopyValue : r1566_3 +# 1566| mu1566_5(double &) = Store[d] : &:r1566_1, r1566_4 +# 1568| r1568_1(glval<int &>) = VariableAddress[r] : +# 1568| r1568_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1568| r1568_3(glval<int &>) = FieldAddress[r] : r1568_2 +# 1568| r1568_4(int &) = Load[?] : &:r1568_3, ~m? +# 1568| r1568_5(glval<int>) = CopyValue : r1568_4 +# 1568| r1568_6(int &) = CopyValue : r1568_5 +# 1568| mu1568_7(int &) = Store[r] : &:r1568_1, r1568_6 +# 1569| r1569_1(glval<int *&>) = VariableAddress[p] : +# 1569| r1569_2(glval<StructuredBindingDataMemberStruct>) = VariableAddress[unnamed_local_variable] : +# 1569| r1569_3(glval<int *>) = FieldAddress[p] : r1569_2 +# 1569| r1569_4(int *&) = CopyValue : r1569_3 +# 1569| mu1569_5(int *&) = Store[p] : &:r1569_1, r1569_4 +# 1570| r1570_1(double) = Constant[4.0] : +# 1570| r1570_2(glval<double &>) = VariableAddress[d] : +# 1570| r1570_3(double &) = Load[d] : &:r1570_2, ~m? +# 1570| r1570_4(glval<double>) = CopyValue : r1570_3 +# 1570| mu1570_5(double) = Store[?] : &:r1570_4, r1570_1 +# 1571| r1571_1(glval<double &>) = VariableAddress[rd] : +# 1571| r1571_2(glval<double &>) = VariableAddress[d] : +# 1571| r1571_3(double &) = Load[d] : &:r1571_2, ~m? +# 1571| r1571_4(glval<double>) = CopyValue : r1571_3 +# 1571| r1571_5(double &) = CopyValue : r1571_4 +# 1571| mu1571_6(double &) = Store[rd] : &:r1571_1, r1571_5 +# 1572| r1572_1(glval<int>) = VariableAddress[v] : +# 1572| r1572_2(glval<int &>) = VariableAddress[i] : +# 1572| r1572_3(int &) = Load[i] : &:r1572_2, ~m? +# 1572| r1572_4(int) = Load[?] : &:r1572_3, ~m? +# 1572| mu1572_5(int) = Store[v] : &:r1572_1, r1572_4 +# 1573| r1573_1(int) = Constant[5] : +# 1573| r1573_2(glval<int &>) = VariableAddress[r] : +# 1573| r1573_3(int &) = Load[r] : &:r1573_2, ~m? +# 1573| r1573_4(glval<int>) = CopyValue : r1573_3 +# 1573| mu1573_5(int) = Store[?] : &:r1573_4, r1573_1 +# 1574| r1574_1(int) = Constant[6] : +# 1574| r1574_2(glval<int *&>) = VariableAddress[p] : +# 1574| r1574_3(int *&) = Load[p] : &:r1574_2, ~m? +# 1574| r1574_4(int *) = Load[?] : &:r1574_3, ~m? +# 1574| r1574_5(glval<int>) = CopyValue : r1574_4 +# 1574| mu1574_6(int) = Store[?] : &:r1574_5, r1574_1 +# 1575| r1575_1(glval<int &>) = VariableAddress[rr] : +# 1575| r1575_2(glval<int &>) = VariableAddress[r] : +# 1575| r1575_3(int &) = Load[r] : &:r1575_2, ~m? +# 1575| r1575_4(glval<int>) = CopyValue : r1575_3 +# 1575| r1575_5(int &) = CopyValue : r1575_4 +# 1575| mu1575_6(int &) = Store[rr] : &:r1575_1, r1575_5 +# 1576| r1576_1(glval<int *>) = VariableAddress[pr] : +# 1576| r1576_2(glval<int &>) = VariableAddress[r] : +# 1576| r1576_3(int &) = Load[r] : &:r1576_2, ~m? +# 1576| r1576_4(glval<int>) = CopyValue : r1576_3 +# 1576| r1576_5(int *) = CopyValue : r1576_4 +# 1576| mu1576_6(int *) = Store[pr] : &:r1576_1, r1576_5 +# 1577| r1577_1(glval<int>) = VariableAddress[w] : +# 1577| r1577_2(glval<int &>) = VariableAddress[r] : +# 1577| r1577_3(int &) = Load[r] : &:r1577_2, ~m? +# 1577| r1577_4(int) = Load[?] : &:r1577_3, ~m? +# 1577| mu1577_5(int) = Store[w] : &:r1577_1, r1577_4 +# 1579| v1579_1(void) = NoOp : +# 1548| v1548_4(void) = ReturnVoid : +# 1548| v1548_5(void) = AliasedUse : ~m? +# 1548| v1548_6(void) = ExitFunction : + +# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1588| Block 0 +# 1588| v1588_1(void) = EnterFunction : +# 1588| mu1588_2(unknown) = AliasedDefinition : +# 1588| mu1588_3(unknown) = InitializeNonLocal : +# 1588| r1588_4(glval<unknown>) = VariableAddress[#this] : +# 1588| mu1588_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1588_4 +# 1588| r1588_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1588_4, ~m? +# 1588| mu1588_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_6 +# 1588| v1588_8(void) = NoOp : +# 1588| v1588_9(void) = ReturnIndirection[#this] : &:r1588_6, ~m? +# 1588| v1588_10(void) = ReturnVoid : +# 1588| v1588_11(void) = AliasedUse : ~m? +# 1588| v1588_12(void) = ExitFunction : + +# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1588| Block 0 +# 1588| v1588_1(void) = EnterFunction : +# 1588| mu1588_2(unknown) = AliasedDefinition : +# 1588| mu1588_3(unknown) = InitializeNonLocal : +# 1588| r1588_4(glval<unknown>) = VariableAddress[#this] : +# 1588| mu1588_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1588_4 +# 1588| r1588_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1588_4, ~m? +# 1588| mu1588_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_6 #-----| r0_1(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(StructuredBindingTupleRefGet &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1541| r1541_8(glval<int>) = FieldAddress[i] : mu1541_5 -# 1541| r1541_9(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : -# 1541| r1541_10(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_9, ~m? -# 1541| r1541_11(glval<StructuredBindingTupleRefGet>) = CopyValue : r1541_10 -# 1541| r1541_12(glval<int>) = FieldAddress[i] : r1541_11 -# 1541| r1541_13(int) = Load[?] : &:r1541_12, ~m? -# 1541| mu1541_14(int) = Store[?] : &:r1541_8, r1541_13 -# 1541| r1541_15(glval<double>) = FieldAddress[d] : mu1541_5 -# 1541| r1541_16(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : -# 1541| r1541_17(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_16, ~m? -# 1541| r1541_18(glval<StructuredBindingTupleRefGet>) = CopyValue : r1541_17 -# 1541| r1541_19(glval<double>) = FieldAddress[d] : r1541_18 -# 1541| r1541_20(double) = Load[?] : &:r1541_19, ~m? -# 1541| mu1541_21(double) = Store[?] : &:r1541_15, r1541_20 -# 1541| r1541_22(glval<int &>) = FieldAddress[r] : mu1541_5 -# 1541| r1541_23(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : -# 1541| r1541_24(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1541_23, ~m? -# 1541| r1541_25(glval<StructuredBindingTupleRefGet>) = CopyValue : r1541_24 -# 1541| r1541_26(glval<int &>) = FieldAddress[r] : r1541_25 -# 1541| r1541_27(int &) = Load[?] : &:r1541_26, ~m? -# 1541| mu1541_28(int &) = Store[?] : &:r1541_22, r1541_27 -# 1541| v1541_29(void) = NoOp : -# 1541| v1541_30(void) = ReturnIndirection[#this] : &:r1541_6, ~m? +# 1588| r1588_8(glval<int>) = FieldAddress[i] : mu1588_5 +# 1588| r1588_9(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : +# 1588| r1588_10(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_9, ~m? +# 1588| r1588_11(glval<StructuredBindingTupleRefGet>) = CopyValue : r1588_10 +# 1588| r1588_12(glval<int>) = FieldAddress[i] : r1588_11 +# 1588| r1588_13(int) = Load[?] : &:r1588_12, ~m? +# 1588| mu1588_14(int) = Store[?] : &:r1588_8, r1588_13 +# 1588| r1588_15(glval<double>) = FieldAddress[d] : mu1588_5 +# 1588| r1588_16(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : +# 1588| r1588_17(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_16, ~m? +# 1588| r1588_18(glval<StructuredBindingTupleRefGet>) = CopyValue : r1588_17 +# 1588| r1588_19(glval<double>) = FieldAddress[d] : r1588_18 +# 1588| r1588_20(double) = Load[?] : &:r1588_19, ~m? +# 1588| mu1588_21(double) = Store[?] : &:r1588_15, r1588_20 +# 1588| r1588_22(glval<int &>) = FieldAddress[r] : mu1588_5 +# 1588| r1588_23(glval<StructuredBindingTupleRefGet &>) = VariableAddress[(unnamed parameter 0)] : +# 1588| r1588_24(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_23, ~m? +# 1588| r1588_25(glval<StructuredBindingTupleRefGet>) = CopyValue : r1588_24 +# 1588| r1588_26(glval<int &>) = FieldAddress[r] : r1588_25 +# 1588| r1588_27(int &) = Load[?] : &:r1588_26, ~m? +# 1588| mu1588_28(int &) = Store[?] : &:r1588_22, r1588_27 +# 1588| v1588_29(void) = NoOp : +# 1588| v1588_30(void) = ReturnIndirection[#this] : &:r1588_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1541| v1541_31(void) = ReturnVoid : -# 1541| v1541_32(void) = AliasedUse : ~m? -# 1541| v1541_33(void) = ExitFunction : - -# 1569| std::tuple_element<int 0, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 0>() -# 1569| Block 0 -# 1569| v1569_1(void) = EnterFunction : -# 1569| mu1569_2(unknown) = AliasedDefinition : -# 1569| mu1569_3(unknown) = InitializeNonLocal : -# 1569| r1569_4(glval<unknown>) = VariableAddress[#this] : -# 1569| mu1569_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1569_4 -# 1569| r1569_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1569_4, ~m? -# 1569| mu1569_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1569_6 -# 1570| r1570_1(glval<int &>) = VariableAddress[#return] : -# 1570| r1570_2(glval<unknown>) = VariableAddress[#this] : -# 1570| r1570_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1570_2, ~m? -# 1570| r1570_4(glval<int>) = FieldAddress[i] : r1570_3 -#-----| r0_1(int &) = CopyValue : r1570_4 -#-----| mu0_2(int &) = Store[#return] : &:r1570_1, r0_1 -# 1569| v1569_8(void) = ReturnIndirection[#this] : &:r1569_6, ~m? -# 1569| r1569_9(glval<int &>) = VariableAddress[#return] : -# 1569| v1569_10(void) = ReturnValue : &:r1569_9, ~m? -# 1569| v1569_11(void) = AliasedUse : ~m? -# 1569| v1569_12(void) = ExitFunction : - -# 1573| std::tuple_element<int 1, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 1>() -# 1573| Block 0 -# 1573| v1573_1(void) = EnterFunction : -# 1573| mu1573_2(unknown) = AliasedDefinition : -# 1573| mu1573_3(unknown) = InitializeNonLocal : -# 1573| r1573_4(glval<unknown>) = VariableAddress[#this] : -# 1573| mu1573_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1573_4 -# 1573| r1573_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1573_4, ~m? -# 1573| mu1573_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1573_6 -# 1574| r1574_1(glval<double &>) = VariableAddress[#return] : -# 1574| r1574_2(glval<unknown>) = VariableAddress[#this] : -# 1574| r1574_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1574_2, ~m? -# 1574| r1574_4(glval<double>) = FieldAddress[d] : r1574_3 -#-----| r0_1(double &) = CopyValue : r1574_4 -#-----| mu0_2(double &) = Store[#return] : &:r1574_1, r0_1 -# 1573| v1573_8(void) = ReturnIndirection[#this] : &:r1573_6, ~m? -# 1573| r1573_9(glval<double &>) = VariableAddress[#return] : -# 1573| v1573_10(void) = ReturnValue : &:r1573_9, ~m? -# 1573| v1573_11(void) = AliasedUse : ~m? -# 1573| v1573_12(void) = ExitFunction : - -# 1577| std::tuple_element<int 2, StructuredBindingTupleRefGet>::type StructuredBindingTupleRefGet::get<int 2>() -# 1577| Block 0 -# 1577| v1577_1(void) = EnterFunction : -# 1577| mu1577_2(unknown) = AliasedDefinition : -# 1577| mu1577_3(unknown) = InitializeNonLocal : -# 1577| r1577_4(glval<unknown>) = VariableAddress[#this] : -# 1577| mu1577_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1577_4 -# 1577| r1577_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1577_4, ~m? -# 1577| mu1577_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1577_6 -# 1578| r1578_1(glval<int &>) = VariableAddress[#return] : -# 1578| r1578_2(glval<unknown>) = VariableAddress[#this] : -# 1578| r1578_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1578_2, ~m? -# 1578| r1578_4(glval<int &>) = FieldAddress[r] : r1578_3 -# 1578| r1578_5(int &) = Load[?] : &:r1578_4, ~m? -# 1578| r1578_6(glval<int>) = CopyValue : r1578_5 -# 1578| r1578_7(int &) = CopyValue : r1578_6 -# 1578| mu1578_8(int &) = Store[#return] : &:r1578_1, r1578_7 -# 1577| v1577_8(void) = ReturnIndirection[#this] : &:r1577_6, ~m? -# 1577| r1577_9(glval<int &>) = VariableAddress[#return] : -# 1577| v1577_10(void) = ReturnValue : &:r1577_9, ~m? -# 1577| v1577_11(void) = AliasedUse : ~m? -# 1577| v1577_12(void) = ExitFunction : - -# 1581| void tuple_structured_binding_ref_get() -# 1581| Block 0 -# 1581| v1581_1(void) = EnterFunction : -# 1581| mu1581_2(unknown) = AliasedDefinition : -# 1581| mu1581_3(unknown) = InitializeNonLocal : -# 1582| r1582_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : -# 1582| mu1582_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1582_1 -# 1582| r1582_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleRefGet] : -# 1582| v1582_4(void) = Call[StructuredBindingTupleRefGet] : func:r1582_3, this:r1582_1 -# 1582| mu1582_5(unknown) = ^CallSideEffect : ~m? -# 1582| mu1582_6(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1582_1 -# 1585| r1585_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : -# 1585| r1585_3(StructuredBindingTupleRefGet) = Load[t] : &:r1585_2, ~m? -# 1585| mu1585_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1585_1, r1585_3 -# 1585| r1585_5(glval<int &>) = VariableAddress[i] : -# 1585| r1585_6(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_7(glval<unknown>) = FunctionAddress[get] : -# 1585| r1585_8(int &) = Call[get] : func:r1585_7, this:r1585_6 -# 1585| mu1585_9(unknown) = ^CallSideEffect : ~m? -# 1585| v1585_10(void) = ^IndirectReadSideEffect[-1] : &:r1585_6, ~m? -# 1585| mu1585_11(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_6 -# 1585| r1585_12(glval<int>) = CopyValue : r1585_8 -# 1585| r1585_13(int &) = CopyValue : r1585_12 -# 1585| mu1585_14(int &) = Store[i] : &:r1585_5, r1585_13 -# 1585| r1585_15(glval<double &>) = VariableAddress[d] : -# 1585| r1585_16(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_17(glval<unknown>) = FunctionAddress[get] : -# 1585| r1585_18(double &) = Call[get] : func:r1585_17, this:r1585_16 -# 1585| mu1585_19(unknown) = ^CallSideEffect : ~m? -# 1585| v1585_20(void) = ^IndirectReadSideEffect[-1] : &:r1585_16, ~m? -# 1585| mu1585_21(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_16 -# 1585| r1585_22(glval<double>) = CopyValue : r1585_18 -# 1585| r1585_23(double &) = CopyValue : r1585_22 -# 1585| mu1585_24(double &) = Store[d] : &:r1585_15, r1585_23 -# 1585| r1585_25(glval<int &>) = VariableAddress[r] : -# 1585| r1585_26(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : -# 1585| r1585_27(glval<unknown>) = FunctionAddress[get] : -# 1585| r1585_28(int &) = Call[get] : func:r1585_27, this:r1585_26 -# 1585| mu1585_29(unknown) = ^CallSideEffect : ~m? -# 1585| v1585_30(void) = ^IndirectReadSideEffect[-1] : &:r1585_26, ~m? -# 1585| mu1585_31(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1585_26 -# 1585| r1585_32(glval<int>) = CopyValue : r1585_28 -# 1585| r1585_33(int &) = CopyValue : r1585_32 -# 1585| mu1585_34(int &) = Store[r] : &:r1585_25, r1585_33 -# 1586| r1586_1(double) = Constant[4.0] : -# 1586| r1586_2(glval<double &>) = VariableAddress[d] : -# 1586| r1586_3(double &) = Load[d] : &:r1586_2, ~m? -# 1586| r1586_4(glval<double>) = CopyValue : r1586_3 -# 1586| mu1586_5(double) = Store[?] : &:r1586_4, r1586_1 -# 1587| r1587_1(glval<double &>) = VariableAddress[rd] : -# 1587| r1587_2(glval<double &>) = VariableAddress[d] : -# 1587| r1587_3(double &) = Load[d] : &:r1587_2, ~m? -# 1587| r1587_4(glval<double>) = CopyValue : r1587_3 -# 1587| r1587_5(double &) = CopyValue : r1587_4 -# 1587| mu1587_6(double &) = Store[rd] : &:r1587_1, r1587_5 -# 1588| r1588_1(glval<int>) = VariableAddress[v] : -# 1588| r1588_2(glval<int &>) = VariableAddress[i] : -# 1588| r1588_3(int &) = Load[i] : &:r1588_2, ~m? -# 1588| r1588_4(int) = Load[?] : &:r1588_3, ~m? -# 1588| mu1588_5(int) = Store[v] : &:r1588_1, r1588_4 -# 1589| r1589_1(int) = Constant[5] : -# 1589| r1589_2(glval<int &>) = VariableAddress[r] : -# 1589| r1589_3(int &) = Load[r] : &:r1589_2, ~m? -# 1589| r1589_4(glval<int>) = CopyValue : r1589_3 -# 1589| mu1589_5(int) = Store[?] : &:r1589_4, r1589_1 -# 1590| r1590_1(glval<int &>) = VariableAddress[rr] : -# 1590| r1590_2(glval<int &>) = VariableAddress[r] : -# 1590| r1590_3(int &) = Load[r] : &:r1590_2, ~m? -# 1590| r1590_4(glval<int>) = CopyValue : r1590_3 -# 1590| r1590_5(int &) = CopyValue : r1590_4 -# 1590| mu1590_6(int &) = Store[rr] : &:r1590_1, r1590_5 -# 1591| r1591_1(glval<int>) = VariableAddress[w] : -# 1591| r1591_2(glval<int &>) = VariableAddress[r] : -# 1591| r1591_3(int &) = Load[r] : &:r1591_2, ~m? -# 1591| r1591_4(int) = Load[?] : &:r1591_3, ~m? -# 1591| mu1591_5(int) = Store[w] : &:r1591_1, r1591_4 -# 1595| r1595_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1595| r1595_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : -# 1595| r1595_3(StructuredBindingTupleRefGet) = Load[t] : &:r1595_2, ~m? -# 1595| mu1595_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1595_1, r1595_3 -# 1596| r1596_1(glval<int &>) = VariableAddress[i] : -# 1596| r1596_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1596| r1596_3(glval<unknown>) = FunctionAddress[get] : -# 1596| r1596_4(int &) = Call[get] : func:r1596_3, this:r1596_2 -# 1596| mu1596_5(unknown) = ^CallSideEffect : ~m? -# 1596| v1596_6(void) = ^IndirectReadSideEffect[-1] : &:r1596_2, ~m? -# 1596| mu1596_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1596_2 -# 1596| r1596_8(glval<int>) = CopyValue : r1596_4 -# 1596| r1596_9(int &) = CopyValue : r1596_8 -# 1596| mu1596_10(int &) = Store[i] : &:r1596_1, r1596_9 -# 1597| r1597_1(glval<double &>) = VariableAddress[d] : -# 1597| r1597_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1597| r1597_3(glval<unknown>) = FunctionAddress[get] : -# 1597| r1597_4(double &) = Call[get] : func:r1597_3, this:r1597_2 -# 1597| mu1597_5(unknown) = ^CallSideEffect : ~m? -# 1597| v1597_6(void) = ^IndirectReadSideEffect[-1] : &:r1597_2, ~m? -# 1597| mu1597_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1597_2 -# 1597| r1597_8(glval<double>) = CopyValue : r1597_4 -# 1597| r1597_9(double &) = CopyValue : r1597_8 -# 1597| mu1597_10(double &) = Store[d] : &:r1597_1, r1597_9 -# 1598| r1598_1(glval<int &>) = VariableAddress[r] : -# 1598| r1598_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : -# 1598| r1598_3(glval<unknown>) = FunctionAddress[get] : -# 1598| r1598_4(int &) = Call[get] : func:r1598_3, this:r1598_2 -# 1598| mu1598_5(unknown) = ^CallSideEffect : ~m? -# 1598| v1598_6(void) = ^IndirectReadSideEffect[-1] : &:r1598_2, ~m? -# 1598| mu1598_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1598_2 -# 1598| r1598_8(glval<int>) = CopyValue : r1598_4 -# 1598| r1598_9(int &) = CopyValue : r1598_8 -# 1598| mu1598_10(int &) = Store[r] : &:r1598_1, r1598_9 -# 1599| r1599_1(double) = Constant[4.0] : -# 1599| r1599_2(glval<double &>) = VariableAddress[d] : -# 1599| r1599_3(double &) = Load[d] : &:r1599_2, ~m? -# 1599| r1599_4(glval<double>) = CopyValue : r1599_3 -# 1599| mu1599_5(double) = Store[?] : &:r1599_4, r1599_1 -# 1600| r1600_1(glval<double &>) = VariableAddress[rd] : -# 1600| r1600_2(glval<double &>) = VariableAddress[d] : -# 1600| r1600_3(double &) = Load[d] : &:r1600_2, ~m? -# 1600| r1600_4(glval<double>) = CopyValue : r1600_3 -# 1600| r1600_5(double &) = CopyValue : r1600_4 -# 1600| mu1600_6(double &) = Store[rd] : &:r1600_1, r1600_5 -# 1601| r1601_1(glval<int>) = VariableAddress[v] : -# 1601| r1601_2(glval<int &>) = VariableAddress[i] : -# 1601| r1601_3(int &) = Load[i] : &:r1601_2, ~m? -# 1601| r1601_4(int) = Load[?] : &:r1601_3, ~m? -# 1601| mu1601_5(int) = Store[v] : &:r1601_1, r1601_4 -# 1602| r1602_1(int) = Constant[5] : -# 1602| r1602_2(glval<int &>) = VariableAddress[r] : -# 1602| r1602_3(int &) = Load[r] : &:r1602_2, ~m? -# 1602| r1602_4(glval<int>) = CopyValue : r1602_3 -# 1602| mu1602_5(int) = Store[?] : &:r1602_4, r1602_1 -# 1603| r1603_1(glval<int &>) = VariableAddress[rr] : -# 1603| r1603_2(glval<int &>) = VariableAddress[r] : -# 1603| r1603_3(int &) = Load[r] : &:r1603_2, ~m? -# 1603| r1603_4(glval<int>) = CopyValue : r1603_3 -# 1603| r1603_5(int &) = CopyValue : r1603_4 -# 1603| mu1603_6(int &) = Store[rr] : &:r1603_1, r1603_5 -# 1604| r1604_1(glval<int>) = VariableAddress[w] : -# 1604| r1604_2(glval<int &>) = VariableAddress[r] : -# 1604| r1604_3(int &) = Load[r] : &:r1604_2, ~m? -# 1604| r1604_4(int) = Load[?] : &:r1604_3, ~m? -# 1604| mu1604_5(int) = Store[w] : &:r1604_1, r1604_4 -# 1606| v1606_1(void) = NoOp : -# 1581| v1581_4(void) = ReturnVoid : -# 1581| v1581_5(void) = AliasedUse : ~m? -# 1581| v1581_6(void) = ExitFunction : - -# 1608| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1608| Block 0 -# 1608| v1608_1(void) = EnterFunction : -# 1608| mu1608_2(unknown) = AliasedDefinition : -# 1608| mu1608_3(unknown) = InitializeNonLocal : -# 1608| r1608_4(glval<unknown>) = VariableAddress[#this] : -# 1608| mu1608_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1608_4 -# 1608| r1608_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1608_4, ~m? -# 1608| mu1608_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1608_6 -# 1608| v1608_8(void) = NoOp : -# 1608| v1608_9(void) = ReturnIndirection[#this] : &:r1608_6, ~m? -# 1608| v1608_10(void) = ReturnVoid : -# 1608| v1608_11(void) = AliasedUse : ~m? -# 1608| v1608_12(void) = ExitFunction : - -# 1635| std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>() -# 1635| Block 0 -# 1635| v1635_1(void) = EnterFunction : -# 1635| mu1635_2(unknown) = AliasedDefinition : -# 1635| mu1635_3(unknown) = InitializeNonLocal : -# 1635| r1635_4(glval<unknown>) = VariableAddress[#this] : -# 1635| mu1635_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1635_4 -# 1635| r1635_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1635_4, ~m? -# 1635| mu1635_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1635_6 -# 1636| r1636_1(glval<int>) = VariableAddress[#return] : -# 1636| r1636_2(glval<unknown>) = VariableAddress[#this] : -# 1636| r1636_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1636_2, ~m? -# 1636| r1636_4(glval<int>) = FieldAddress[i] : r1636_3 -# 1636| r1636_5(int) = Load[?] : &:r1636_4, ~m? -# 1636| mu1636_6(int) = Store[#return] : &:r1636_1, r1636_5 -# 1635| v1635_8(void) = ReturnIndirection[#this] : &:r1635_6, ~m? -# 1635| r1635_9(glval<int>) = VariableAddress[#return] : -# 1635| v1635_10(void) = ReturnValue : &:r1635_9, ~m? -# 1635| v1635_11(void) = AliasedUse : ~m? -# 1635| v1635_12(void) = ExitFunction : - -# 1639| std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>() -# 1639| Block 0 -# 1639| v1639_1(void) = EnterFunction : -# 1639| mu1639_2(unknown) = AliasedDefinition : -# 1639| mu1639_3(unknown) = InitializeNonLocal : -# 1639| r1639_4(glval<unknown>) = VariableAddress[#this] : -# 1639| mu1639_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1639_4 -# 1639| r1639_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1639_4, ~m? -# 1639| mu1639_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1639_6 -# 1640| r1640_1(glval<int &>) = VariableAddress[#return] : -# 1640| r1640_2(glval<unknown>) = VariableAddress[#this] : -# 1640| r1640_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1640_2, ~m? -# 1640| r1640_4(glval<int &>) = FieldAddress[r] : r1640_3 -# 1640| r1640_5(int &) = Load[?] : &:r1640_4, ~m? -# 1640| r1640_6(glval<int>) = CopyValue : r1640_5 -# 1640| r1640_7(int &) = CopyValue : r1640_6 -# 1640| mu1640_8(int &) = Store[#return] : &:r1640_1, r1640_7 -# 1639| v1639_8(void) = ReturnIndirection[#this] : &:r1639_6, ~m? -# 1639| r1639_9(glval<int &>) = VariableAddress[#return] : -# 1639| v1639_10(void) = ReturnValue : &:r1639_9, ~m? -# 1639| v1639_11(void) = AliasedUse : ~m? -# 1639| v1639_12(void) = ExitFunction : - -# 1643| std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>() -# 1643| Block 0 -# 1643| v1643_1(void) = EnterFunction : -# 1643| mu1643_2(unknown) = AliasedDefinition : -# 1643| mu1643_3(unknown) = InitializeNonLocal : -# 1643| r1643_4(glval<unknown>) = VariableAddress[#this] : -# 1643| mu1643_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1643_4 -# 1643| r1643_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1643_4, ~m? -# 1643| mu1643_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1643_6 -# 1644| r1644_1(glval<int &&>) = VariableAddress[#return] : -# 1644| r1644_2(glval<int>) = VariableAddress[#temp1644:12] : -# 1644| r1644_3(int) = Constant[5] : -# 1644| mu1644_4(int) = Store[#temp1644:12] : &:r1644_2, r1644_3 -# 1644| r1644_5(int &) = CopyValue : r1644_2 -# 1644| mu1644_6(int &&) = Store[#return] : &:r1644_1, r1644_5 -# 1643| v1643_8(void) = ReturnIndirection[#this] : &:r1643_6, ~m? -# 1643| r1643_9(glval<int &&>) = VariableAddress[#return] : -# 1643| v1643_10(void) = ReturnValue : &:r1643_9, ~m? -# 1643| v1643_11(void) = AliasedUse : ~m? -# 1643| v1643_12(void) = ExitFunction : - -# 1647| void tuple_structured_binding_no_ref_get() -# 1647| Block 0 -# 1647| v1647_1(void) = EnterFunction : -# 1647| mu1647_2(unknown) = AliasedDefinition : -# 1647| mu1647_3(unknown) = InitializeNonLocal : -# 1648| r1648_1(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : -# 1648| mu1648_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1648_1 -# 1648| r1648_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleNoRefGet] : -# 1648| v1648_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1648_3, this:r1648_1 -# 1648| mu1648_5(unknown) = ^CallSideEffect : ~m? -# 1648| mu1648_6(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1648_1 -# 1651| r1651_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : -# 1651| r1651_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1651_2 -# 1651| mu1651_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1651_1, r1651_3 -# 1651| r1651_5(glval<int &&>) = VariableAddress[i] : -# 1651| r1651_6(glval<int>) = VariableAddress[#temp1651:16] : -# 1651| r1651_7(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_7, ~m? -# 1651| r1651_9(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1651_8 -# 1651| r1651_10(glval<unknown>) = FunctionAddress[get] : -# 1651| r1651_11(int) = Call[get] : func:r1651_10, this:r1651_9 -# 1651| mu1651_12(unknown) = ^CallSideEffect : ~m? -# 1651| v1651_13(void) = ^IndirectReadSideEffect[-1] : &:r1651_9, ~m? -# 1651| mu1651_14(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_9 -# 1651| mu1651_15(int) = Store[#temp1651:16] : &:r1651_6, r1651_11 -# 1651| r1651_16(int &) = CopyValue : r1651_6 -# 1651| mu1651_17(int &&) = Store[i] : &:r1651_5, r1651_16 -# 1651| r1651_18(glval<int &>) = VariableAddress[r] : -# 1651| r1651_19(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_20(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_19, ~m? -# 1651| r1651_21(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1651_20 -# 1651| r1651_22(glval<unknown>) = FunctionAddress[get] : -# 1651| r1651_23(int &) = Call[get] : func:r1651_22, this:r1651_21 -# 1651| mu1651_24(unknown) = ^CallSideEffect : ~m? -# 1651| v1651_25(void) = ^IndirectReadSideEffect[-1] : &:r1651_21, ~m? -# 1651| mu1651_26(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_21 -# 1651| r1651_27(glval<int>) = CopyValue : r1651_23 -# 1651| r1651_28(int &) = CopyValue : r1651_27 -# 1651| mu1651_29(int &) = Store[r] : &:r1651_18, r1651_28 -# 1651| r1651_30(glval<int &&>) = VariableAddress[rv] : -# 1651| r1651_31(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : -# 1651| r1651_32(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1651_31, ~m? -# 1651| r1651_33(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1651_32 -# 1651| r1651_34(glval<unknown>) = FunctionAddress[get] : -# 1651| r1651_35(int &&) = Call[get] : func:r1651_34, this:r1651_33 -# 1651| mu1651_36(unknown) = ^CallSideEffect : ~m? -# 1651| v1651_37(void) = ^IndirectReadSideEffect[-1] : &:r1651_33, ~m? -# 1651| mu1651_38(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1651_33 -# 1651| r1651_39(glval<int>) = CopyValue : r1651_35 -# 1651| r1651_40(int &) = CopyValue : r1651_39 -# 1651| mu1651_41(int &&) = Store[rv] : &:r1651_30, r1651_40 -# 1652| r1652_1(int) = Constant[4] : -# 1652| r1652_2(glval<int &&>) = VariableAddress[i] : -# 1652| r1652_3(int &&) = Load[i] : &:r1652_2, ~m? -# 1652| r1652_4(glval<int>) = CopyValue : r1652_3 -# 1652| mu1652_5(int) = Store[?] : &:r1652_4, r1652_1 -# 1653| r1653_1(glval<int &>) = VariableAddress[ri] : -# 1653| r1653_2(glval<int &&>) = VariableAddress[i] : -# 1653| r1653_3(int &&) = Load[i] : &:r1653_2, ~m? -# 1653| r1653_4(glval<int>) = CopyValue : r1653_3 -# 1653| r1653_5(int &) = CopyValue : r1653_4 -# 1653| mu1653_6(int &) = Store[ri] : &:r1653_1, r1653_5 -# 1654| r1654_1(glval<int>) = VariableAddress[v] : -# 1654| r1654_2(glval<int &&>) = VariableAddress[i] : -# 1654| r1654_3(int &&) = Load[i] : &:r1654_2, ~m? -# 1654| r1654_4(int) = Load[?] : &:r1654_3, ~m? -# 1654| mu1654_5(int) = Store[v] : &:r1654_1, r1654_4 -# 1655| r1655_1(int) = Constant[5] : -# 1655| r1655_2(glval<int &>) = VariableAddress[r] : -# 1655| r1655_3(int &) = Load[r] : &:r1655_2, ~m? -# 1655| r1655_4(glval<int>) = CopyValue : r1655_3 -# 1655| mu1655_5(int) = Store[?] : &:r1655_4, r1655_1 -# 1656| r1656_1(glval<int &>) = VariableAddress[rr] : -# 1656| r1656_2(glval<int &>) = VariableAddress[r] : -# 1656| r1656_3(int &) = Load[r] : &:r1656_2, ~m? -# 1656| r1656_4(glval<int>) = CopyValue : r1656_3 -# 1656| r1656_5(int &) = CopyValue : r1656_4 -# 1656| mu1656_6(int &) = Store[rr] : &:r1656_1, r1656_5 -# 1657| r1657_1(glval<int>) = VariableAddress[w] : -# 1657| r1657_2(glval<int &>) = VariableAddress[r] : -# 1657| r1657_3(int &) = Load[r] : &:r1657_2, ~m? -# 1657| r1657_4(int) = Load[?] : &:r1657_3, ~m? -# 1657| mu1657_5(int) = Store[w] : &:r1657_1, r1657_4 -# 1661| r1661_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1661| r1661_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : -# 1661| r1661_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1661_2 -# 1661| mu1661_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1661_1, r1661_3 -# 1662| r1662_1(glval<int &&>) = VariableAddress[i] : -# 1662| r1662_2(glval<int>) = VariableAddress[#temp1662:20] : -# 1662| r1662_3(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1662| r1662_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1662_3, ~m? -# 1662| r1662_5(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1662_4 -# 1662| r1662_6(glval<unknown>) = FunctionAddress[get] : -# 1662| r1662_7(int) = Call[get] : func:r1662_6, this:r1662_5 -# 1662| mu1662_8(unknown) = ^CallSideEffect : ~m? -# 1662| v1662_9(void) = ^IndirectReadSideEffect[-1] : &:r1662_5, ~m? -# 1662| mu1662_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1662_5 -# 1662| mu1662_11(int) = Store[#temp1662:20] : &:r1662_2, r1662_7 -# 1662| r1662_12(int &) = CopyValue : r1662_2 -# 1662| mu1662_13(int &&) = Store[i] : &:r1662_1, r1662_12 -# 1663| r1663_1(glval<int &>) = VariableAddress[r] : -# 1663| r1663_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1663| r1663_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1663_2, ~m? -# 1663| r1663_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1663_3 -# 1663| r1663_5(glval<unknown>) = FunctionAddress[get] : -# 1663| r1663_6(int &) = Call[get] : func:r1663_5, this:r1663_4 -# 1663| mu1663_7(unknown) = ^CallSideEffect : ~m? -# 1663| v1663_8(void) = ^IndirectReadSideEffect[-1] : &:r1663_4, ~m? -# 1663| mu1663_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1663_4 -# 1663| r1663_10(glval<int>) = CopyValue : r1663_6 -# 1663| r1663_11(int &) = CopyValue : r1663_10 -# 1663| mu1663_12(int &) = Store[r] : &:r1663_1, r1663_11 -# 1664| r1664_1(glval<int &&>) = VariableAddress[rv] : -# 1664| r1664_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : -# 1664| r1664_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1664_2, ~m? -# 1664| r1664_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1664_3 -# 1664| r1664_5(glval<unknown>) = FunctionAddress[get] : -# 1664| r1664_6(int &&) = Call[get] : func:r1664_5, this:r1664_4 -# 1664| mu1664_7(unknown) = ^CallSideEffect : ~m? -# 1664| v1664_8(void) = ^IndirectReadSideEffect[-1] : &:r1664_4, ~m? -# 1664| mu1664_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1664_4 -# 1664| r1664_10(glval<int>) = CopyValue : r1664_6 -# 1664| r1664_11(int &) = CopyValue : r1664_10 -# 1664| mu1664_12(int &&) = Store[rv] : &:r1664_1, r1664_11 -# 1665| r1665_1(int) = Constant[4] : -# 1665| r1665_2(glval<int &&>) = VariableAddress[i] : -# 1665| r1665_3(int &&) = Load[i] : &:r1665_2, ~m? -# 1665| r1665_4(glval<int>) = CopyValue : r1665_3 -# 1665| mu1665_5(int) = Store[?] : &:r1665_4, r1665_1 -# 1666| r1666_1(glval<int &>) = VariableAddress[ri] : -# 1666| r1666_2(glval<int &&>) = VariableAddress[i] : -# 1666| r1666_3(int &&) = Load[i] : &:r1666_2, ~m? -# 1666| r1666_4(glval<int>) = CopyValue : r1666_3 -# 1666| r1666_5(int &) = CopyValue : r1666_4 -# 1666| mu1666_6(int &) = Store[ri] : &:r1666_1, r1666_5 -# 1667| r1667_1(glval<int>) = VariableAddress[v] : -# 1667| r1667_2(glval<int &&>) = VariableAddress[i] : -# 1667| r1667_3(int &&) = Load[i] : &:r1667_2, ~m? -# 1667| r1667_4(int) = Load[?] : &:r1667_3, ~m? -# 1667| mu1667_5(int) = Store[v] : &:r1667_1, r1667_4 -# 1668| r1668_1(int) = Constant[5] : -# 1668| r1668_2(glval<int &>) = VariableAddress[r] : -# 1668| r1668_3(int &) = Load[r] : &:r1668_2, ~m? -# 1668| r1668_4(glval<int>) = CopyValue : r1668_3 -# 1668| mu1668_5(int) = Store[?] : &:r1668_4, r1668_1 -# 1669| r1669_1(glval<int &>) = VariableAddress[rr] : -# 1669| r1669_2(glval<int &>) = VariableAddress[r] : -# 1669| r1669_3(int &) = Load[r] : &:r1669_2, ~m? -# 1669| r1669_4(glval<int>) = CopyValue : r1669_3 -# 1669| r1669_5(int &) = CopyValue : r1669_4 -# 1669| mu1669_6(int &) = Store[rr] : &:r1669_1, r1669_5 -# 1670| r1670_1(glval<int>) = VariableAddress[w] : -# 1670| r1670_2(glval<int &>) = VariableAddress[r] : -# 1670| r1670_3(int &) = Load[r] : &:r1670_2, ~m? -# 1670| r1670_4(int) = Load[?] : &:r1670_3, ~m? -# 1670| mu1670_5(int) = Store[w] : &:r1670_1, r1670_4 -# 1672| v1672_1(void) = NoOp : -# 1647| v1647_4(void) = ReturnVoid : -# 1647| v1647_5(void) = AliasedUse : ~m? -# 1647| v1647_6(void) = ExitFunction : - -# 1674| void array_structured_binding_non_ref_init() -# 1674| Block 0 -# 1674| v1674_1(void) = EnterFunction : -# 1674| mu1674_2(unknown) = AliasedDefinition : -# 1674| mu1674_3(unknown) = InitializeNonLocal : -# 1675| r1675_1(glval<int[2]>) = VariableAddress[xs] : -# 1675| mu1675_2(int[2]) = Uninitialized[xs] : &:r1675_1 -# 1675| r1675_3(int) = Constant[0] : -# 1675| r1675_4(glval<int>) = PointerAdd[4] : r1675_1, r1675_3 -# 1675| r1675_5(int) = Constant[1] : -# 1675| mu1675_6(int) = Store[?] : &:r1675_4, r1675_5 -# 1675| r1675_7(int) = Constant[1] : -# 1675| r1675_8(glval<int>) = PointerAdd[4] : r1675_1, r1675_7 -# 1675| r1675_9(int) = Constant[2] : -# 1675| mu1675_10(int) = Store[?] : &:r1675_8, r1675_9 -# 1676| r1676_1(glval<int[2]>) = VariableAddress[(unnamed local variable)] : -# 1676| r1676_2(glval<int[2]>) = VariableAddress[xs] : -# 1676| r1676_3(int[2]) = Load[xs] : &:r1676_2, ~m? -# 1676| mu1676_4(int[2]) = Store[(unnamed local variable)] : &:r1676_1, r1676_3 -# 1676| r1676_5(glval<int &>) = VariableAddress[x0] : +# 1588| v1588_31(void) = ReturnVoid : +# 1588| v1588_32(void) = AliasedUse : ~m? +# 1588| v1588_33(void) = ExitFunction : + +# 1616| std::tuple_element<int 0, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 0>() +# 1616| Block 0 +# 1616| v1616_1(void) = EnterFunction : +# 1616| mu1616_2(unknown) = AliasedDefinition : +# 1616| mu1616_3(unknown) = InitializeNonLocal : +# 1616| r1616_4(glval<unknown>) = VariableAddress[#this] : +# 1616| mu1616_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1616_4 +# 1616| r1616_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1616_4, ~m? +# 1616| mu1616_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1616_6 +# 1617| r1617_1(glval<int &>) = VariableAddress[#return] : +# 1617| r1617_2(glval<unknown>) = VariableAddress[#this] : +# 1617| r1617_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1617_2, ~m? +# 1617| r1617_4(glval<int>) = FieldAddress[i] : r1617_3 +#-----| r0_1(int &) = CopyValue : r1617_4 +#-----| mu0_2(int &) = Store[#return] : &:r1617_1, r0_1 +# 1616| v1616_8(void) = ReturnIndirection[#this] : &:r1616_6, ~m? +# 1616| r1616_9(glval<int &>) = VariableAddress[#return] : +# 1616| v1616_10(void) = ReturnValue : &:r1616_9, ~m? +# 1616| v1616_11(void) = AliasedUse : ~m? +# 1616| v1616_12(void) = ExitFunction : + +# 1620| std::tuple_element<int 1, StructuredBindingTupleRefGet>::type& StructuredBindingTupleRefGet::get<int 1>() +# 1620| Block 0 +# 1620| v1620_1(void) = EnterFunction : +# 1620| mu1620_2(unknown) = AliasedDefinition : +# 1620| mu1620_3(unknown) = InitializeNonLocal : +# 1620| r1620_4(glval<unknown>) = VariableAddress[#this] : +# 1620| mu1620_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1620_4 +# 1620| r1620_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1620_4, ~m? +# 1620| mu1620_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1620_6 +# 1621| r1621_1(glval<double &>) = VariableAddress[#return] : +# 1621| r1621_2(glval<unknown>) = VariableAddress[#this] : +# 1621| r1621_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1621_2, ~m? +# 1621| r1621_4(glval<double>) = FieldAddress[d] : r1621_3 +#-----| r0_1(double &) = CopyValue : r1621_4 +#-----| mu0_2(double &) = Store[#return] : &:r1621_1, r0_1 +# 1620| v1620_8(void) = ReturnIndirection[#this] : &:r1620_6, ~m? +# 1620| r1620_9(glval<double &>) = VariableAddress[#return] : +# 1620| v1620_10(void) = ReturnValue : &:r1620_9, ~m? +# 1620| v1620_11(void) = AliasedUse : ~m? +# 1620| v1620_12(void) = ExitFunction : + +# 1624| std::tuple_element<int 2, StructuredBindingTupleRefGet>::type StructuredBindingTupleRefGet::get<int 2>() +# 1624| Block 0 +# 1624| v1624_1(void) = EnterFunction : +# 1624| mu1624_2(unknown) = AliasedDefinition : +# 1624| mu1624_3(unknown) = InitializeNonLocal : +# 1624| r1624_4(glval<unknown>) = VariableAddress[#this] : +# 1624| mu1624_5(glval<StructuredBindingTupleRefGet>) = InitializeParameter[#this] : &:r1624_4 +# 1624| r1624_6(glval<StructuredBindingTupleRefGet>) = Load[#this] : &:r1624_4, ~m? +# 1624| mu1624_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1624_6 +# 1625| r1625_1(glval<int &>) = VariableAddress[#return] : +# 1625| r1625_2(glval<unknown>) = VariableAddress[#this] : +# 1625| r1625_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1625_2, ~m? +# 1625| r1625_4(glval<int &>) = FieldAddress[r] : r1625_3 +# 1625| r1625_5(int &) = Load[?] : &:r1625_4, ~m? +# 1625| r1625_6(glval<int>) = CopyValue : r1625_5 +# 1625| r1625_7(int &) = CopyValue : r1625_6 +# 1625| mu1625_8(int &) = Store[#return] : &:r1625_1, r1625_7 +# 1624| v1624_8(void) = ReturnIndirection[#this] : &:r1624_6, ~m? +# 1624| r1624_9(glval<int &>) = VariableAddress[#return] : +# 1624| v1624_10(void) = ReturnValue : &:r1624_9, ~m? +# 1624| v1624_11(void) = AliasedUse : ~m? +# 1624| v1624_12(void) = ExitFunction : + +# 1628| void tuple_structured_binding_ref_get() +# 1628| Block 0 +# 1628| v1628_1(void) = EnterFunction : +# 1628| mu1628_2(unknown) = AliasedDefinition : +# 1628| mu1628_3(unknown) = InitializeNonLocal : +# 1629| r1629_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : +# 1629| mu1629_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1629_1 +# 1629| r1629_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleRefGet] : +# 1629| v1629_4(void) = Call[StructuredBindingTupleRefGet] : func:r1629_3, this:r1629_1 +# 1629| mu1629_5(unknown) = ^CallSideEffect : ~m? +# 1629| mu1629_6(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1629_1 +# 1632| r1632_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : +# 1632| r1632_3(StructuredBindingTupleRefGet) = Load[t] : &:r1632_2, ~m? +# 1632| mu1632_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1632_1, r1632_3 +# 1632| r1632_5(glval<int &>) = VariableAddress[i] : +# 1632| r1632_6(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_7(glval<unknown>) = FunctionAddress[get] : +# 1632| r1632_8(int &) = Call[get] : func:r1632_7, this:r1632_6 +# 1632| mu1632_9(unknown) = ^CallSideEffect : ~m? +# 1632| v1632_10(void) = ^IndirectReadSideEffect[-1] : &:r1632_6, ~m? +# 1632| mu1632_11(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_6 +# 1632| r1632_12(glval<int>) = CopyValue : r1632_8 +# 1632| r1632_13(int &) = CopyValue : r1632_12 +# 1632| mu1632_14(int &) = Store[i] : &:r1632_5, r1632_13 +# 1632| r1632_15(glval<double &>) = VariableAddress[d] : +# 1632| r1632_16(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_17(glval<unknown>) = FunctionAddress[get] : +# 1632| r1632_18(double &) = Call[get] : func:r1632_17, this:r1632_16 +# 1632| mu1632_19(unknown) = ^CallSideEffect : ~m? +# 1632| v1632_20(void) = ^IndirectReadSideEffect[-1] : &:r1632_16, ~m? +# 1632| mu1632_21(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_16 +# 1632| r1632_22(glval<double>) = CopyValue : r1632_18 +# 1632| r1632_23(double &) = CopyValue : r1632_22 +# 1632| mu1632_24(double &) = Store[d] : &:r1632_15, r1632_23 +# 1632| r1632_25(glval<int &>) = VariableAddress[r] : +# 1632| r1632_26(glval<StructuredBindingTupleRefGet>) = VariableAddress[(unnamed local variable)] : +# 1632| r1632_27(glval<unknown>) = FunctionAddress[get] : +# 1632| r1632_28(int &) = Call[get] : func:r1632_27, this:r1632_26 +# 1632| mu1632_29(unknown) = ^CallSideEffect : ~m? +# 1632| v1632_30(void) = ^IndirectReadSideEffect[-1] : &:r1632_26, ~m? +# 1632| mu1632_31(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_26 +# 1632| r1632_32(glval<int>) = CopyValue : r1632_28 +# 1632| r1632_33(int &) = CopyValue : r1632_32 +# 1632| mu1632_34(int &) = Store[r] : &:r1632_25, r1632_33 +# 1633| r1633_1(double) = Constant[4.0] : +# 1633| r1633_2(glval<double &>) = VariableAddress[d] : +# 1633| r1633_3(double &) = Load[d] : &:r1633_2, ~m? +# 1633| r1633_4(glval<double>) = CopyValue : r1633_3 +# 1633| mu1633_5(double) = Store[?] : &:r1633_4, r1633_1 +# 1634| r1634_1(glval<double &>) = VariableAddress[rd] : +# 1634| r1634_2(glval<double &>) = VariableAddress[d] : +# 1634| r1634_3(double &) = Load[d] : &:r1634_2, ~m? +# 1634| r1634_4(glval<double>) = CopyValue : r1634_3 +# 1634| r1634_5(double &) = CopyValue : r1634_4 +# 1634| mu1634_6(double &) = Store[rd] : &:r1634_1, r1634_5 +# 1635| r1635_1(glval<int>) = VariableAddress[v] : +# 1635| r1635_2(glval<int &>) = VariableAddress[i] : +# 1635| r1635_3(int &) = Load[i] : &:r1635_2, ~m? +# 1635| r1635_4(int) = Load[?] : &:r1635_3, ~m? +# 1635| mu1635_5(int) = Store[v] : &:r1635_1, r1635_4 +# 1636| r1636_1(int) = Constant[5] : +# 1636| r1636_2(glval<int &>) = VariableAddress[r] : +# 1636| r1636_3(int &) = Load[r] : &:r1636_2, ~m? +# 1636| r1636_4(glval<int>) = CopyValue : r1636_3 +# 1636| mu1636_5(int) = Store[?] : &:r1636_4, r1636_1 +# 1637| r1637_1(glval<int &>) = VariableAddress[rr] : +# 1637| r1637_2(glval<int &>) = VariableAddress[r] : +# 1637| r1637_3(int &) = Load[r] : &:r1637_2, ~m? +# 1637| r1637_4(glval<int>) = CopyValue : r1637_3 +# 1637| r1637_5(int &) = CopyValue : r1637_4 +# 1637| mu1637_6(int &) = Store[rr] : &:r1637_1, r1637_5 +# 1638| r1638_1(glval<int>) = VariableAddress[w] : +# 1638| r1638_2(glval<int &>) = VariableAddress[r] : +# 1638| r1638_3(int &) = Load[r] : &:r1638_2, ~m? +# 1638| r1638_4(int) = Load[?] : &:r1638_3, ~m? +# 1638| mu1638_5(int) = Store[w] : &:r1638_1, r1638_4 +# 1642| r1642_1(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1642| r1642_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[t] : +# 1642| r1642_3(StructuredBindingTupleRefGet) = Load[t] : &:r1642_2, ~m? +# 1642| mu1642_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1642_1, r1642_3 +# 1643| r1643_1(glval<int &>) = VariableAddress[i] : +# 1643| r1643_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1643| r1643_3(glval<unknown>) = FunctionAddress[get] : +# 1643| r1643_4(int &) = Call[get] : func:r1643_3, this:r1643_2 +# 1643| mu1643_5(unknown) = ^CallSideEffect : ~m? +# 1643| v1643_6(void) = ^IndirectReadSideEffect[-1] : &:r1643_2, ~m? +# 1643| mu1643_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1643_2 +# 1643| r1643_8(glval<int>) = CopyValue : r1643_4 +# 1643| r1643_9(int &) = CopyValue : r1643_8 +# 1643| mu1643_10(int &) = Store[i] : &:r1643_1, r1643_9 +# 1644| r1644_1(glval<double &>) = VariableAddress[d] : +# 1644| r1644_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1644| r1644_3(glval<unknown>) = FunctionAddress[get] : +# 1644| r1644_4(double &) = Call[get] : func:r1644_3, this:r1644_2 +# 1644| mu1644_5(unknown) = ^CallSideEffect : ~m? +# 1644| v1644_6(void) = ^IndirectReadSideEffect[-1] : &:r1644_2, ~m? +# 1644| mu1644_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1644_2 +# 1644| r1644_8(glval<double>) = CopyValue : r1644_4 +# 1644| r1644_9(double &) = CopyValue : r1644_8 +# 1644| mu1644_10(double &) = Store[d] : &:r1644_1, r1644_9 +# 1645| r1645_1(glval<int &>) = VariableAddress[r] : +# 1645| r1645_2(glval<StructuredBindingTupleRefGet>) = VariableAddress[unnamed_local_variable] : +# 1645| r1645_3(glval<unknown>) = FunctionAddress[get] : +# 1645| r1645_4(int &) = Call[get] : func:r1645_3, this:r1645_2 +# 1645| mu1645_5(unknown) = ^CallSideEffect : ~m? +# 1645| v1645_6(void) = ^IndirectReadSideEffect[-1] : &:r1645_2, ~m? +# 1645| mu1645_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1645_2 +# 1645| r1645_8(glval<int>) = CopyValue : r1645_4 +# 1645| r1645_9(int &) = CopyValue : r1645_8 +# 1645| mu1645_10(int &) = Store[r] : &:r1645_1, r1645_9 +# 1646| r1646_1(double) = Constant[4.0] : +# 1646| r1646_2(glval<double &>) = VariableAddress[d] : +# 1646| r1646_3(double &) = Load[d] : &:r1646_2, ~m? +# 1646| r1646_4(glval<double>) = CopyValue : r1646_3 +# 1646| mu1646_5(double) = Store[?] : &:r1646_4, r1646_1 +# 1647| r1647_1(glval<double &>) = VariableAddress[rd] : +# 1647| r1647_2(glval<double &>) = VariableAddress[d] : +# 1647| r1647_3(double &) = Load[d] : &:r1647_2, ~m? +# 1647| r1647_4(glval<double>) = CopyValue : r1647_3 +# 1647| r1647_5(double &) = CopyValue : r1647_4 +# 1647| mu1647_6(double &) = Store[rd] : &:r1647_1, r1647_5 +# 1648| r1648_1(glval<int>) = VariableAddress[v] : +# 1648| r1648_2(glval<int &>) = VariableAddress[i] : +# 1648| r1648_3(int &) = Load[i] : &:r1648_2, ~m? +# 1648| r1648_4(int) = Load[?] : &:r1648_3, ~m? +# 1648| mu1648_5(int) = Store[v] : &:r1648_1, r1648_4 +# 1649| r1649_1(int) = Constant[5] : +# 1649| r1649_2(glval<int &>) = VariableAddress[r] : +# 1649| r1649_3(int &) = Load[r] : &:r1649_2, ~m? +# 1649| r1649_4(glval<int>) = CopyValue : r1649_3 +# 1649| mu1649_5(int) = Store[?] : &:r1649_4, r1649_1 +# 1650| r1650_1(glval<int &>) = VariableAddress[rr] : +# 1650| r1650_2(glval<int &>) = VariableAddress[r] : +# 1650| r1650_3(int &) = Load[r] : &:r1650_2, ~m? +# 1650| r1650_4(glval<int>) = CopyValue : r1650_3 +# 1650| r1650_5(int &) = CopyValue : r1650_4 +# 1650| mu1650_6(int &) = Store[rr] : &:r1650_1, r1650_5 +# 1651| r1651_1(glval<int>) = VariableAddress[w] : +# 1651| r1651_2(glval<int &>) = VariableAddress[r] : +# 1651| r1651_3(int &) = Load[r] : &:r1651_2, ~m? +# 1651| r1651_4(int) = Load[?] : &:r1651_3, ~m? +# 1651| mu1651_5(int) = Store[w] : &:r1651_1, r1651_4 +# 1653| v1653_1(void) = NoOp : +# 1628| v1628_4(void) = ReturnVoid : +# 1628| v1628_5(void) = AliasedUse : ~m? +# 1628| v1628_6(void) = ExitFunction : + +# 1655| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1655| Block 0 +# 1655| v1655_1(void) = EnterFunction : +# 1655| mu1655_2(unknown) = AliasedDefinition : +# 1655| mu1655_3(unknown) = InitializeNonLocal : +# 1655| r1655_4(glval<unknown>) = VariableAddress[#this] : +# 1655| mu1655_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1655_4 +# 1655| r1655_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1655_4, ~m? +# 1655| mu1655_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1655_6 +# 1655| v1655_8(void) = NoOp : +# 1655| v1655_9(void) = ReturnIndirection[#this] : &:r1655_6, ~m? +# 1655| v1655_10(void) = ReturnVoid : +# 1655| v1655_11(void) = AliasedUse : ~m? +# 1655| v1655_12(void) = ExitFunction : + +# 1682| std::tuple_element<int 0, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 0>() +# 1682| Block 0 +# 1682| v1682_1(void) = EnterFunction : +# 1682| mu1682_2(unknown) = AliasedDefinition : +# 1682| mu1682_3(unknown) = InitializeNonLocal : +# 1682| r1682_4(glval<unknown>) = VariableAddress[#this] : +# 1682| mu1682_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1682_4 +# 1682| r1682_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1682_4, ~m? +# 1682| mu1682_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1682_6 +# 1683| r1683_1(glval<int>) = VariableAddress[#return] : +# 1683| r1683_2(glval<unknown>) = VariableAddress[#this] : +# 1683| r1683_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1683_2, ~m? +# 1683| r1683_4(glval<int>) = FieldAddress[i] : r1683_3 +# 1683| r1683_5(int) = Load[?] : &:r1683_4, ~m? +# 1683| mu1683_6(int) = Store[#return] : &:r1683_1, r1683_5 +# 1682| v1682_8(void) = ReturnIndirection[#this] : &:r1682_6, ~m? +# 1682| r1682_9(glval<int>) = VariableAddress[#return] : +# 1682| v1682_10(void) = ReturnValue : &:r1682_9, ~m? +# 1682| v1682_11(void) = AliasedUse : ~m? +# 1682| v1682_12(void) = ExitFunction : + +# 1686| std::tuple_element<int 1, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 1>() +# 1686| Block 0 +# 1686| v1686_1(void) = EnterFunction : +# 1686| mu1686_2(unknown) = AliasedDefinition : +# 1686| mu1686_3(unknown) = InitializeNonLocal : +# 1686| r1686_4(glval<unknown>) = VariableAddress[#this] : +# 1686| mu1686_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1686_4 +# 1686| r1686_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1686_4, ~m? +# 1686| mu1686_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1686_6 +# 1687| r1687_1(glval<int &>) = VariableAddress[#return] : +# 1687| r1687_2(glval<unknown>) = VariableAddress[#this] : +# 1687| r1687_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1687_2, ~m? +# 1687| r1687_4(glval<int &>) = FieldAddress[r] : r1687_3 +# 1687| r1687_5(int &) = Load[?] : &:r1687_4, ~m? +# 1687| r1687_6(glval<int>) = CopyValue : r1687_5 +# 1687| r1687_7(int &) = CopyValue : r1687_6 +# 1687| mu1687_8(int &) = Store[#return] : &:r1687_1, r1687_7 +# 1686| v1686_8(void) = ReturnIndirection[#this] : &:r1686_6, ~m? +# 1686| r1686_9(glval<int &>) = VariableAddress[#return] : +# 1686| v1686_10(void) = ReturnValue : &:r1686_9, ~m? +# 1686| v1686_11(void) = AliasedUse : ~m? +# 1686| v1686_12(void) = ExitFunction : + +# 1690| std::tuple_element<int 2, StructuredBindingTupleNoRefGet>::type StructuredBindingTupleNoRefGet::get<int 2>() +# 1690| Block 0 +# 1690| v1690_1(void) = EnterFunction : +# 1690| mu1690_2(unknown) = AliasedDefinition : +# 1690| mu1690_3(unknown) = InitializeNonLocal : +# 1690| r1690_4(glval<unknown>) = VariableAddress[#this] : +# 1690| mu1690_5(glval<StructuredBindingTupleNoRefGet>) = InitializeParameter[#this] : &:r1690_4 +# 1690| r1690_6(glval<StructuredBindingTupleNoRefGet>) = Load[#this] : &:r1690_4, ~m? +# 1690| mu1690_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1690_6 +# 1691| r1691_1(glval<int &&>) = VariableAddress[#return] : +# 1691| r1691_2(glval<int>) = VariableAddress[#temp1691:12] : +# 1691| r1691_3(int) = Constant[5] : +# 1691| mu1691_4(int) = Store[#temp1691:12] : &:r1691_2, r1691_3 +# 1691| r1691_5(int &) = CopyValue : r1691_2 +# 1691| mu1691_6(int &&) = Store[#return] : &:r1691_1, r1691_5 +# 1690| v1690_8(void) = ReturnIndirection[#this] : &:r1690_6, ~m? +# 1690| r1690_9(glval<int &&>) = VariableAddress[#return] : +# 1690| v1690_10(void) = ReturnValue : &:r1690_9, ~m? +# 1690| v1690_11(void) = AliasedUse : ~m? +# 1690| v1690_12(void) = ExitFunction : + +# 1694| void tuple_structured_binding_no_ref_get() +# 1694| Block 0 +# 1694| v1694_1(void) = EnterFunction : +# 1694| mu1694_2(unknown) = AliasedDefinition : +# 1694| mu1694_3(unknown) = InitializeNonLocal : +# 1695| r1695_1(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : +# 1695| mu1695_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1695_1 +# 1695| r1695_3(glval<unknown>) = FunctionAddress[StructuredBindingTupleNoRefGet] : +# 1695| v1695_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1695_3, this:r1695_1 +# 1695| mu1695_5(unknown) = ^CallSideEffect : ~m? +# 1695| mu1695_6(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1695_1 +# 1698| r1698_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : +# 1698| r1698_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1698_2 +# 1698| mu1698_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1698_1, r1698_3 +# 1698| r1698_5(glval<int &&>) = VariableAddress[i] : +# 1698| r1698_6(glval<int>) = VariableAddress[#temp1698:16] : +# 1698| r1698_7(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_7, ~m? +# 1698| r1698_9(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1698_8 +# 1698| r1698_10(glval<unknown>) = FunctionAddress[get] : +# 1698| r1698_11(int) = Call[get] : func:r1698_10, this:r1698_9 +# 1698| mu1698_12(unknown) = ^CallSideEffect : ~m? +# 1698| v1698_13(void) = ^IndirectReadSideEffect[-1] : &:r1698_9, ~m? +# 1698| mu1698_14(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_9 +# 1698| mu1698_15(int) = Store[#temp1698:16] : &:r1698_6, r1698_11 +# 1698| r1698_16(int &) = CopyValue : r1698_6 +# 1698| mu1698_17(int &&) = Store[i] : &:r1698_5, r1698_16 +# 1698| r1698_18(glval<int &>) = VariableAddress[r] : +# 1698| r1698_19(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_20(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_19, ~m? +# 1698| r1698_21(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1698_20 +# 1698| r1698_22(glval<unknown>) = FunctionAddress[get] : +# 1698| r1698_23(int &) = Call[get] : func:r1698_22, this:r1698_21 +# 1698| mu1698_24(unknown) = ^CallSideEffect : ~m? +# 1698| v1698_25(void) = ^IndirectReadSideEffect[-1] : &:r1698_21, ~m? +# 1698| mu1698_26(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_21 +# 1698| r1698_27(glval<int>) = CopyValue : r1698_23 +# 1698| r1698_28(int &) = CopyValue : r1698_27 +# 1698| mu1698_29(int &) = Store[r] : &:r1698_18, r1698_28 +# 1698| r1698_30(glval<int &&>) = VariableAddress[rv] : +# 1698| r1698_31(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[(unnamed local variable)] : +# 1698| r1698_32(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_31, ~m? +# 1698| r1698_33(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1698_32 +# 1698| r1698_34(glval<unknown>) = FunctionAddress[get] : +# 1698| r1698_35(int &&) = Call[get] : func:r1698_34, this:r1698_33 +# 1698| mu1698_36(unknown) = ^CallSideEffect : ~m? +# 1698| v1698_37(void) = ^IndirectReadSideEffect[-1] : &:r1698_33, ~m? +# 1698| mu1698_38(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_33 +# 1698| r1698_39(glval<int>) = CopyValue : r1698_35 +# 1698| r1698_40(int &) = CopyValue : r1698_39 +# 1698| mu1698_41(int &&) = Store[rv] : &:r1698_30, r1698_40 +# 1699| r1699_1(int) = Constant[4] : +# 1699| r1699_2(glval<int &&>) = VariableAddress[i] : +# 1699| r1699_3(int &&) = Load[i] : &:r1699_2, ~m? +# 1699| r1699_4(glval<int>) = CopyValue : r1699_3 +# 1699| mu1699_5(int) = Store[?] : &:r1699_4, r1699_1 +# 1700| r1700_1(glval<int &>) = VariableAddress[ri] : +# 1700| r1700_2(glval<int &&>) = VariableAddress[i] : +# 1700| r1700_3(int &&) = Load[i] : &:r1700_2, ~m? +# 1700| r1700_4(glval<int>) = CopyValue : r1700_3 +# 1700| r1700_5(int &) = CopyValue : r1700_4 +# 1700| mu1700_6(int &) = Store[ri] : &:r1700_1, r1700_5 +# 1701| r1701_1(glval<int>) = VariableAddress[v] : +# 1701| r1701_2(glval<int &&>) = VariableAddress[i] : +# 1701| r1701_3(int &&) = Load[i] : &:r1701_2, ~m? +# 1701| r1701_4(int) = Load[?] : &:r1701_3, ~m? +# 1701| mu1701_5(int) = Store[v] : &:r1701_1, r1701_4 +# 1702| r1702_1(int) = Constant[5] : +# 1702| r1702_2(glval<int &>) = VariableAddress[r] : +# 1702| r1702_3(int &) = Load[r] : &:r1702_2, ~m? +# 1702| r1702_4(glval<int>) = CopyValue : r1702_3 +# 1702| mu1702_5(int) = Store[?] : &:r1702_4, r1702_1 +# 1703| r1703_1(glval<int &>) = VariableAddress[rr] : +# 1703| r1703_2(glval<int &>) = VariableAddress[r] : +# 1703| r1703_3(int &) = Load[r] : &:r1703_2, ~m? +# 1703| r1703_4(glval<int>) = CopyValue : r1703_3 +# 1703| r1703_5(int &) = CopyValue : r1703_4 +# 1703| mu1703_6(int &) = Store[rr] : &:r1703_1, r1703_5 +# 1704| r1704_1(glval<int>) = VariableAddress[w] : +# 1704| r1704_2(glval<int &>) = VariableAddress[r] : +# 1704| r1704_3(int &) = Load[r] : &:r1704_2, ~m? +# 1704| r1704_4(int) = Load[?] : &:r1704_3, ~m? +# 1704| mu1704_5(int) = Store[w] : &:r1704_1, r1704_4 +# 1708| r1708_1(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1708| r1708_2(glval<StructuredBindingTupleNoRefGet>) = VariableAddress[t] : +# 1708| r1708_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1708_2 +# 1708| mu1708_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1708_1, r1708_3 +# 1709| r1709_1(glval<int &&>) = VariableAddress[i] : +# 1709| r1709_2(glval<int>) = VariableAddress[#temp1709:20] : +# 1709| r1709_3(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1709| r1709_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1709_3, ~m? +# 1709| r1709_5(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1709_4 +# 1709| r1709_6(glval<unknown>) = FunctionAddress[get] : +# 1709| r1709_7(int) = Call[get] : func:r1709_6, this:r1709_5 +# 1709| mu1709_8(unknown) = ^CallSideEffect : ~m? +# 1709| v1709_9(void) = ^IndirectReadSideEffect[-1] : &:r1709_5, ~m? +# 1709| mu1709_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1709_5 +# 1709| mu1709_11(int) = Store[#temp1709:20] : &:r1709_2, r1709_7 +# 1709| r1709_12(int &) = CopyValue : r1709_2 +# 1709| mu1709_13(int &&) = Store[i] : &:r1709_1, r1709_12 +# 1710| r1710_1(glval<int &>) = VariableAddress[r] : +# 1710| r1710_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1710| r1710_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1710_2, ~m? +# 1710| r1710_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1710_3 +# 1710| r1710_5(glval<unknown>) = FunctionAddress[get] : +# 1710| r1710_6(int &) = Call[get] : func:r1710_5, this:r1710_4 +# 1710| mu1710_7(unknown) = ^CallSideEffect : ~m? +# 1710| v1710_8(void) = ^IndirectReadSideEffect[-1] : &:r1710_4, ~m? +# 1710| mu1710_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1710_4 +# 1710| r1710_10(glval<int>) = CopyValue : r1710_6 +# 1710| r1710_11(int &) = CopyValue : r1710_10 +# 1710| mu1710_12(int &) = Store[r] : &:r1710_1, r1710_11 +# 1711| r1711_1(glval<int &&>) = VariableAddress[rv] : +# 1711| r1711_2(glval<StructuredBindingTupleNoRefGet &>) = VariableAddress[unnamed_local_variable] : +# 1711| r1711_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1711_2, ~m? +# 1711| r1711_4(glval<StructuredBindingTupleNoRefGet>) = CopyValue : r1711_3 +# 1711| r1711_5(glval<unknown>) = FunctionAddress[get] : +# 1711| r1711_6(int &&) = Call[get] : func:r1711_5, this:r1711_4 +# 1711| mu1711_7(unknown) = ^CallSideEffect : ~m? +# 1711| v1711_8(void) = ^IndirectReadSideEffect[-1] : &:r1711_4, ~m? +# 1711| mu1711_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_4 +# 1711| r1711_10(glval<int>) = CopyValue : r1711_6 +# 1711| r1711_11(int &) = CopyValue : r1711_10 +# 1711| mu1711_12(int &&) = Store[rv] : &:r1711_1, r1711_11 +# 1712| r1712_1(int) = Constant[4] : +# 1712| r1712_2(glval<int &&>) = VariableAddress[i] : +# 1712| r1712_3(int &&) = Load[i] : &:r1712_2, ~m? +# 1712| r1712_4(glval<int>) = CopyValue : r1712_3 +# 1712| mu1712_5(int) = Store[?] : &:r1712_4, r1712_1 +# 1713| r1713_1(glval<int &>) = VariableAddress[ri] : +# 1713| r1713_2(glval<int &&>) = VariableAddress[i] : +# 1713| r1713_3(int &&) = Load[i] : &:r1713_2, ~m? +# 1713| r1713_4(glval<int>) = CopyValue : r1713_3 +# 1713| r1713_5(int &) = CopyValue : r1713_4 +# 1713| mu1713_6(int &) = Store[ri] : &:r1713_1, r1713_5 +# 1714| r1714_1(glval<int>) = VariableAddress[v] : +# 1714| r1714_2(glval<int &&>) = VariableAddress[i] : +# 1714| r1714_3(int &&) = Load[i] : &:r1714_2, ~m? +# 1714| r1714_4(int) = Load[?] : &:r1714_3, ~m? +# 1714| mu1714_5(int) = Store[v] : &:r1714_1, r1714_4 +# 1715| r1715_1(int) = Constant[5] : +# 1715| r1715_2(glval<int &>) = VariableAddress[r] : +# 1715| r1715_3(int &) = Load[r] : &:r1715_2, ~m? +# 1715| r1715_4(glval<int>) = CopyValue : r1715_3 +# 1715| mu1715_5(int) = Store[?] : &:r1715_4, r1715_1 +# 1716| r1716_1(glval<int &>) = VariableAddress[rr] : +# 1716| r1716_2(glval<int &>) = VariableAddress[r] : +# 1716| r1716_3(int &) = Load[r] : &:r1716_2, ~m? +# 1716| r1716_4(glval<int>) = CopyValue : r1716_3 +# 1716| r1716_5(int &) = CopyValue : r1716_4 +# 1716| mu1716_6(int &) = Store[rr] : &:r1716_1, r1716_5 +# 1717| r1717_1(glval<int>) = VariableAddress[w] : +# 1717| r1717_2(glval<int &>) = VariableAddress[r] : +# 1717| r1717_3(int &) = Load[r] : &:r1717_2, ~m? +# 1717| r1717_4(int) = Load[?] : &:r1717_3, ~m? +# 1717| mu1717_5(int) = Store[w] : &:r1717_1, r1717_4 +# 1719| v1719_1(void) = NoOp : +# 1694| v1694_4(void) = ReturnVoid : +# 1694| v1694_5(void) = AliasedUse : ~m? +# 1694| v1694_6(void) = ExitFunction : + +# 1721| void array_structured_binding_non_ref_init() +# 1721| Block 0 +# 1721| v1721_1(void) = EnterFunction : +# 1721| mu1721_2(unknown) = AliasedDefinition : +# 1721| mu1721_3(unknown) = InitializeNonLocal : +# 1722| r1722_1(glval<int[2]>) = VariableAddress[xs] : +# 1722| mu1722_2(int[2]) = Uninitialized[xs] : &:r1722_1 +# 1722| r1722_3(int) = Constant[0] : +# 1722| r1722_4(glval<int>) = PointerAdd[4] : r1722_1, r1722_3 +# 1722| r1722_5(int) = Constant[1] : +# 1722| mu1722_6(int) = Store[?] : &:r1722_4, r1722_5 +# 1722| r1722_7(int) = Constant[1] : +# 1722| r1722_8(glval<int>) = PointerAdd[4] : r1722_1, r1722_7 +# 1722| r1722_9(int) = Constant[2] : +# 1722| mu1722_10(int) = Store[?] : &:r1722_8, r1722_9 +# 1723| r1723_1(glval<int[2]>) = VariableAddress[(unnamed local variable)] : +# 1723| r1723_2(glval<int[2]>) = VariableAddress[xs] : +# 1723| r1723_3(int[2]) = Load[xs] : &:r1723_2, ~m? +# 1723| mu1723_4(int[2]) = Store[(unnamed local variable)] : &:r1723_1, r1723_3 +# 1723| r1723_5(glval<int &>) = VariableAddress[x0] : #-----| r0_1(glval<int[2]>) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int *) = Convert : r0_1 #-----| r0_3(unsigned long) = Constant[0] : #-----| r0_4(glval<int>) = PointerAdd[4] : r0_2, r0_3 -#-----| mu0_5(int &) = Store[x0] : &:r1676_5, r0_4 -# 1676| r1676_6(glval<int &>) = VariableAddress[x1] : +#-----| mu0_5(int &) = Store[x0] : &:r1723_5, r0_4 +# 1723| r1723_6(glval<int &>) = VariableAddress[x1] : #-----| r0_6(glval<int[2]>) = VariableAddress[(unnamed local variable)] : #-----| r0_7(int *) = Convert : r0_6 #-----| r0_8(unsigned long) = Constant[1] : #-----| r0_9(glval<int>) = PointerAdd[4] : r0_7, r0_8 -#-----| mu0_10(int &) = Store[x1] : &:r1676_6, r0_9 -# 1677| v1677_1(void) = NoOp : -# 1674| v1674_4(void) = ReturnVoid : -# 1674| v1674_5(void) = AliasedUse : ~m? -# 1674| v1674_6(void) = ExitFunction : - -# 1682| void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1682| Block 0 -# 1682| v1682_1(void) = EnterFunction : -# 1682| mu1682_2(unknown) = AliasedDefinition : -# 1682| mu1682_3(unknown) = InitializeNonLocal : -# 1682| r1682_4(glval<unknown>) = VariableAddress[#this] : -# 1682| mu1682_5(glval<CapturedLambdaMyObj>) = InitializeParameter[#this] : &:r1682_4 -# 1682| r1682_6(glval<CapturedLambdaMyObj>) = Load[#this] : &:r1682_4, ~m? -# 1682| mu1682_7(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1682_6 -# 1682| v1682_8(void) = NoOp : -# 1682| v1682_9(void) = ReturnIndirection[#this] : &:r1682_6, ~m? -# 1682| v1682_10(void) = ReturnVoid : -# 1682| v1682_11(void) = AliasedUse : ~m? -# 1682| v1682_12(void) = ExitFunction : - -# 1685| void captured_lambda(int, int&, int&&) -# 1685| Block 0 -# 1685| v1685_1(void) = EnterFunction : -# 1685| mu1685_2(unknown) = AliasedDefinition : -# 1685| mu1685_3(unknown) = InitializeNonLocal : -# 1685| r1685_4(glval<int>) = VariableAddress[x] : -# 1685| mu1685_5(int) = InitializeParameter[x] : &:r1685_4 -# 1685| r1685_6(glval<int &>) = VariableAddress[y] : -# 1685| mu1685_7(int &) = InitializeParameter[y] : &:r1685_6 -# 1685| r1685_8(int &) = Load[y] : &:r1685_6, ~m? -# 1685| mu1685_9(unknown) = InitializeIndirection[y] : &:r1685_8 -# 1685| r1685_10(glval<int &&>) = VariableAddress[z] : -# 1685| mu1685_11(int &&) = InitializeParameter[z] : &:r1685_10 -# 1685| r1685_12(int &&) = Load[z] : &:r1685_10, ~m? -# 1685| mu1685_13(unknown) = InitializeIndirection[z] : &:r1685_12 -# 1687| r1687_1(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : -# 1687| r1687_2(glval<CapturedLambdaMyObj>) = VariableAddress[#temp1687:24] : -# 1687| mu1687_3(CapturedLambdaMyObj) = Uninitialized[#temp1687:24] : &:r1687_2 -# 1687| r1687_4(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : -# 1687| v1687_5(void) = Call[CapturedLambdaMyObj] : func:r1687_4, this:r1687_2 -# 1687| mu1687_6(unknown) = ^CallSideEffect : ~m? -# 1687| mu1687_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1687_2 -# 1687| r1687_8(glval<CapturedLambdaMyObj>) = Convert : r1687_2 -# 1687| r1687_9(CapturedLambdaMyObj &) = CopyValue : r1687_8 -# 1687| mu1687_10(CapturedLambdaMyObj &) = Store[obj1] : &:r1687_1, r1687_9 -# 1688| r1688_1(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : -# 1688| mu1688_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1688_1 -# 1688| r1688_3(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : -# 1688| v1688_4(void) = Call[CapturedLambdaMyObj] : func:r1688_3, this:r1688_1 -# 1688| mu1688_5(unknown) = ^CallSideEffect : ~m? -# 1688| mu1688_6(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1688_1 -# 1690| r1690_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_outer] : -# 1690| r1690_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1690:24] : -# 1690| mu1690_3(decltype([...](...){...})) = Uninitialized[#temp1690:24] : &:r1690_2 -# 1690| r1690_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1690_2 -# 1690| r1690_5(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : -# 1690| r1690_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1690_5, ~m? -#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1690_6, ~m? -#-----| mu0_2(CapturedLambdaMyObj) = Store[?] : &:r1690_4, r0_1 -# 1690| r1690_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1690_2 -# 1690| r1690_8(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : -# 1690| r1690_9(CapturedLambdaMyObj) = Load[obj2] : &:r1690_8, ~m? -# 1690| mu1690_10(CapturedLambdaMyObj) = Store[?] : &:r1690_7, r1690_9 -# 1690| r1690_11(glval<int>) = FieldAddress[x] : r1690_2 -# 1690| r1690_12(glval<int>) = VariableAddress[x] : -# 1690| r1690_13(int) = Load[x] : &:r1690_12, ~m? -# 1690| mu1690_14(int) = Store[?] : &:r1690_11, r1690_13 -# 1690| r1690_15(glval<int>) = FieldAddress[y] : r1690_2 -# 1690| r1690_16(glval<int &>) = VariableAddress[y] : -# 1690| r1690_17(int &) = Load[y] : &:r1690_16, ~m? -# 1692| r1692_1(int) = Load[?] : &:r1690_17, ~m? -# 1692| mu1692_2(int) = Store[?] : &:r1690_15, r1692_1 -# 1690| r1690_18(glval<int>) = FieldAddress[z] : r1690_2 -# 1690| r1690_19(glval<int &&>) = VariableAddress[z] : -# 1690| r1690_20(int &&) = Load[z] : &:r1690_19, ~m? -# 1692| r1692_3(int) = Load[?] : &:r1690_20, ~m? -# 1692| mu1692_4(int) = Store[?] : &:r1690_18, r1692_3 -# 1690| r1690_21(decltype([...](...){...})) = Load[#temp1690:24] : &:r1690_2, ~m? -# 1690| mu1690_22(decltype([...](...){...})) = Store[lambda_outer] : &:r1690_1, r1690_21 -# 1693| v1693_1(void) = NoOp : -# 1685| v1685_14(void) = ReturnIndirection[y] : &:r1685_8, ~m? -# 1685| v1685_15(void) = ReturnIndirection[z] : &:r1685_12, ~m? -# 1685| v1685_16(void) = ReturnVoid : -# 1685| v1685_17(void) = AliasedUse : ~m? -# 1685| v1685_18(void) = ExitFunction : - -# 1690| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const -# 1690| Block 0 -# 1690| v1690_1(void) = EnterFunction : -# 1690| mu1690_2(unknown) = AliasedDefinition : -# 1690| mu1690_3(unknown) = InitializeNonLocal : -# 1690| r1690_4(glval<unknown>) = VariableAddress[#this] : -# 1690| mu1690_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1690_4 -# 1690| r1690_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1690_4, ~m? -# 1690| mu1690_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1690_6 -# 1691| r1691_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_inner] : -# 1691| r1691_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1691:28] : -# 1691| mu1691_3(decltype([...](...){...})) = Uninitialized[#temp1691:28] : &:r1691_2 -# 1691| r1691_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1691_2 -# 1691| r1691_5(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_6(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_5, ~m? -# 1691| r1691_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1691_6 -# 1691| r1691_8(CapturedLambdaMyObj) = Load[?] : &:r1691_7, ~m? -# 1691| mu1691_9(CapturedLambdaMyObj) = Store[?] : &:r1691_4, r1691_8 -# 1691| r1691_10(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1691_2 -# 1691| r1691_11(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_12(lambda [] type at line 1691, col. 29 *) = Load[#this] : &:r1691_11, ~m? -# 1691| r1691_13(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1691_12 -# 1691| r1691_14(CapturedLambdaMyObj) = Load[?] : &:r1691_13, ~m? -# 1691| mu1691_15(CapturedLambdaMyObj) = Store[?] : &:r1691_10, r1691_14 -# 1691| r1691_16(glval<int>) = FieldAddress[x] : r1691_2 -# 1691| r1691_17(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_18(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_17, ~m? -# 1691| r1691_19(glval<int>) = FieldAddress[x] : r1691_18 -# 1691| r1691_20(int) = Load[?] : &:r1691_19, ~m? -# 1691| mu1691_21(int) = Store[?] : &:r1691_16, r1691_20 -# 1691| r1691_22(glval<int>) = FieldAddress[y] : r1691_2 -# 1691| r1691_23(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_24(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_23, ~m? -# 1691| r1691_25(glval<int>) = FieldAddress[y] : r1691_24 -# 1691| r1691_26(int) = Load[?] : &:r1691_25, ~m? -# 1691| mu1691_27(int) = Store[?] : &:r1691_22, r1691_26 -# 1691| r1691_28(glval<int>) = FieldAddress[z] : r1691_2 -# 1691| r1691_29(glval<unknown>) = VariableAddress[#this] : -# 1691| r1691_30(lambda [] type at line 1690, col. 25 *) = Load[#this] : &:r1691_29, ~m? -# 1691| r1691_31(glval<int>) = FieldAddress[z] : r1691_30 -# 1691| r1691_32(int) = Load[?] : &:r1691_31, ~m? -# 1691| mu1691_33(int) = Store[?] : &:r1691_28, r1691_32 -# 1691| r1691_34(decltype([...](...){...})) = Load[#temp1691:28] : &:r1691_2, ~m? -# 1691| mu1691_35(decltype([...](...){...})) = Store[lambda_inner] : &:r1691_1, r1691_34 -# 1692| v1692_1(void) = NoOp : -# 1690| v1690_8(void) = ReturnIndirection[#this] : &:r1690_6, ~m? -# 1690| v1690_9(void) = ReturnVoid : -# 1690| v1690_10(void) = AliasedUse : ~m? -# 1690| v1690_11(void) = ExitFunction : - -# 1691| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1690, col. 25)::operator()() const)::(lambda [] type at line 1691, col. 29)::operator()() const -# 1691| Block 0 -# 1691| v1691_1(void) = EnterFunction : -# 1691| mu1691_2(unknown) = AliasedDefinition : -# 1691| mu1691_3(unknown) = InitializeNonLocal : -# 1691| r1691_4(glval<unknown>) = VariableAddress[#this] : -# 1691| mu1691_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1691_4 -# 1691| r1691_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1691_4, ~m? -# 1691| mu1691_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1691_6 -# 1691| v1691_8(void) = NoOp : -# 1691| v1691_9(void) = NoOp : -# 1691| v1691_10(void) = ReturnIndirection[#this] : &:r1691_6, ~m? -# 1691| v1691_11(void) = ReturnVoid : -# 1691| v1691_12(void) = AliasedUse : ~m? -# 1691| v1691_13(void) = ExitFunction : - -# 1695| int goto_on_same_line() -# 1695| Block 0 -# 1695| v1695_1(void) = EnterFunction : -# 1695| mu1695_2(unknown) = AliasedDefinition : -# 1695| mu1695_3(unknown) = InitializeNonLocal : -# 1696| r1696_1(glval<int>) = VariableAddress[x] : -# 1696| r1696_2(int) = Constant[42] : -# 1696| mu1696_3(int) = Store[x] : &:r1696_1, r1696_2 -# 1697| v1697_1(void) = NoOp : -# 1697| v1697_2(void) = NoOp : -# 1698| r1698_1(glval<int>) = VariableAddress[#return] : -# 1698| r1698_2(glval<int>) = VariableAddress[x] : -# 1698| r1698_3(int) = Load[x] : &:r1698_2, ~m? -# 1698| mu1698_4(int) = Store[#return] : &:r1698_1, r1698_3 -# 1695| r1695_4(glval<int>) = VariableAddress[#return] : -# 1695| v1695_5(void) = ReturnValue : &:r1695_4, ~m? -# 1695| v1695_6(void) = AliasedUse : ~m? -# 1695| v1695_7(void) = ExitFunction : - -# 1703| void TrivialLambdaClass::m() const -# 1703| Block 0 -# 1703| v1703_1(void) = EnterFunction : -# 1703| mu1703_2(unknown) = AliasedDefinition : -# 1703| mu1703_3(unknown) = InitializeNonLocal : -# 1703| r1703_4(glval<unknown>) = VariableAddress[#this] : -# 1703| mu1703_5(glval<TrivialLambdaClass>) = InitializeParameter[#this] : &:r1703_4 -# 1703| r1703_6(glval<TrivialLambdaClass>) = Load[#this] : &:r1703_4, ~m? -# 1703| mu1703_7(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1703_6 -# 1704| r1704_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_outer] : -# 1704| r1704_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1704:25] : -# 1704| mu1704_3(decltype([...](...){...})) = Uninitialized[#temp1704:25] : &:r1704_2 -# 1704| r1704_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1704_2 -# 1704| r1704_5(glval<unknown>) = VariableAddress[#this] : -# 1704| r1704_6(TrivialLambdaClass *) = Load[#this] : &:r1704_5, ~m? -# 1704| r1704_7(TrivialLambdaClass) = Load[?] : &:r1704_6, ~m? -# 1704| mu1704_8(TrivialLambdaClass) = Store[?] : &:r1704_4, r1704_7 -# 1704| r1704_9(decltype([...](...){...})) = Load[#temp1704:25] : &:r1704_2, ~m? -# 1704| mu1704_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1704_1, r1704_9 -# 1711| v1711_1(void) = NoOp : -# 1703| v1703_8(void) = ReturnIndirection[#this] : &:r1703_6, ~m? -# 1703| v1703_9(void) = ReturnVoid : -# 1703| v1703_10(void) = AliasedUse : ~m? -# 1703| v1703_11(void) = ExitFunction : - -# 1704| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const -# 1704| Block 0 -# 1704| v1704_1(void) = EnterFunction : -# 1704| mu1704_2(unknown) = AliasedDefinition : -# 1704| mu1704_3(unknown) = InitializeNonLocal : -# 1704| r1704_4(glval<unknown>) = VariableAddress[#this] : -# 1704| mu1704_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1704_4 -# 1704| r1704_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1704_4, ~m? -# 1704| mu1704_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1704_6 -# 1705| r1705_1(glval<unknown>) = VariableAddress[#this] : -# 1705| r1705_2(lambda [] type at line 1704, col. 26 *) = Load[#this] : &:r1705_1, ~m? -# 1705| r1705_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1705_2 -# 1705| r1705_4(TrivialLambdaClass *) = CopyValue : r1705_3 -# 1705| r1705_5(glval<unknown>) = FunctionAddress[m] : -# 1705| v1705_6(void) = Call[m] : func:r1705_5, this:r1705_4 -# 1705| mu1705_7(unknown) = ^CallSideEffect : ~m? -# 1705| v1705_8(void) = ^IndirectReadSideEffect[-1] : &:r1705_4, ~m? -# 1707| r1707_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_inner] : -# 1707| r1707_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1707:29] : -# 1707| mu1707_3(decltype([...](...){...})) = Uninitialized[#temp1707:29] : &:r1707_2 -# 1707| r1707_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1707_2 -# 1707| r1707_5(glval<unknown>) = VariableAddress[#this] : -# 1707| r1707_6(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1707_5, ~m? -# 1707| r1707_7(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1707_6 -# 1707| r1707_8(TrivialLambdaClass) = Load[?] : &:r1707_7, ~m? -# 1707| mu1707_9(TrivialLambdaClass) = Store[?] : &:r1707_4, r1707_8 -# 1707| r1707_10(decltype([...](...){...})) = Load[#temp1707:29] : &:r1707_2, ~m? -# 1707| mu1707_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1707_1, r1707_10 -# 1710| v1710_1(void) = NoOp : -# 1704| v1704_8(void) = ReturnIndirection[#this] : &:r1704_6, ~m? -# 1704| v1704_9(void) = ReturnVoid : -# 1704| v1704_10(void) = AliasedUse : ~m? -# 1704| v1704_11(void) = ExitFunction : - -# 1707| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1704, col. 26)::operator()() const)::(lambda [] type at line 1707, col. 30)::operator()() const -# 1707| Block 0 -# 1707| v1707_1(void) = EnterFunction : -# 1707| mu1707_2(unknown) = AliasedDefinition : -# 1707| mu1707_3(unknown) = InitializeNonLocal : -# 1707| r1707_4(glval<unknown>) = VariableAddress[#this] : -# 1707| mu1707_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1707_4 -# 1707| r1707_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1707_4, ~m? -# 1707| mu1707_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1707_6 -# 1708| r1708_1(glval<unknown>) = VariableAddress[#this] : -# 1708| r1708_2(lambda [] type at line 1707, col. 30 *) = Load[#this] : &:r1708_1, ~m? -# 1708| r1708_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1708_2 -# 1708| r1708_4(TrivialLambdaClass *) = CopyValue : r1708_3 -# 1708| r1708_5(glval<unknown>) = FunctionAddress[m] : -# 1708| v1708_6(void) = Call[m] : func:r1708_5, this:r1708_4 -# 1708| mu1708_7(unknown) = ^CallSideEffect : ~m? -# 1708| v1708_8(void) = ^IndirectReadSideEffect[-1] : &:r1708_4, ~m? -# 1709| v1709_1(void) = NoOp : -# 1707| v1707_8(void) = ReturnIndirection[#this] : &:r1707_6, ~m? -# 1707| v1707_9(void) = ReturnVoid : -# 1707| v1707_10(void) = AliasedUse : ~m? -# 1707| v1707_11(void) = ExitFunction : - -# 1714| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1714| Block 0 -# 1714| v1714_1(void) = EnterFunction : -# 1714| mu1714_2(unknown) = AliasedDefinition : -# 1714| mu1714_3(unknown) = InitializeNonLocal : -# 1714| r1714_4(glval<TrivialLambdaClass>) = VariableAddress[p1] : -# 1714| mu1714_5(TrivialLambdaClass) = InitializeParameter[p1] : &:r1714_4 -# 1714| r1714_6(glval<TrivialLambdaClass &>) = VariableAddress[p2] : -# 1714| mu1714_7(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1714_6 -# 1714| r1714_8(TrivialLambdaClass &) = Load[p2] : &:r1714_6, ~m? -# 1714| mu1714_9(unknown) = InitializeIndirection[p2] : &:r1714_8 -# 1714| r1714_10(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : -# 1714| mu1714_11(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1714_10 -# 1714| r1714_12(TrivialLambdaClass &&) = Load[p3] : &:r1714_10, ~m? -# 1714| mu1714_13(unknown) = InitializeIndirection[p3] : &:r1714_12 -# 1715| r1715_1(glval<TrivialLambdaClass>) = VariableAddress[l1] : -# 1715| mu1715_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1715_1 -# 1716| r1716_1(glval<TrivialLambdaClass &>) = VariableAddress[l2] : -# 1716| r1716_2(glval<TrivialLambdaClass>) = VariableAddress[#temp1716:36] : -# 1716| r1716_3(TrivialLambdaClass) = Constant[0] : -# 1716| mu1716_4(TrivialLambdaClass) = Store[#temp1716:36] : &:r1716_2, r1716_3 -# 1716| r1716_5(glval<TrivialLambdaClass>) = Convert : r1716_2 -# 1716| r1716_6(TrivialLambdaClass &) = CopyValue : r1716_5 -# 1716| mu1716_7(TrivialLambdaClass &) = Store[l2] : &:r1716_1, r1716_6 -# 1718| r1718_1(glval<decltype([...](...){...})>) = VariableAddress[l_outer1] : -# 1718| r1718_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1718:20] : -# 1718| mu1718_3(decltype([...](...){...})) = Uninitialized[#temp1718:20] : &:r1718_2 -# 1718| r1718_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1718_2 -# 1718| r1718_5(glval<TrivialLambdaClass>) = VariableAddress[p1] : -# 1718| r1718_6(TrivialLambdaClass) = Load[p1] : &:r1718_5, ~m? -# 1718| mu1718_7(TrivialLambdaClass) = Store[?] : &:r1718_4, r1718_6 -# 1718| r1718_8(glval<TrivialLambdaClass>) = FieldAddress[p2] : r1718_2 -# 1718| r1718_9(glval<TrivialLambdaClass &>) = VariableAddress[p2] : -# 1718| r1718_10(TrivialLambdaClass &) = Load[p2] : &:r1718_9, ~m? -#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1718_10, ~m? -#-----| mu0_2(TrivialLambdaClass) = Store[?] : &:r1718_8, r0_1 -# 1718| r1718_11(glval<TrivialLambdaClass>) = FieldAddress[p3] : r1718_2 -# 1718| r1718_12(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : -# 1718| r1718_13(TrivialLambdaClass &&) = Load[p3] : &:r1718_12, ~m? -#-----| r0_3(TrivialLambdaClass) = Load[?] : &:r1718_13, ~m? -#-----| mu0_4(TrivialLambdaClass) = Store[?] : &:r1718_11, r0_3 -# 1718| r1718_14(glval<TrivialLambdaClass>) = FieldAddress[l1] : r1718_2 -# 1718| r1718_15(glval<TrivialLambdaClass>) = VariableAddress[l1] : -# 1718| r1718_16(TrivialLambdaClass) = Load[l1] : &:r1718_15, ~m? -# 1718| mu1718_17(TrivialLambdaClass) = Store[?] : &:r1718_14, r1718_16 -# 1718| r1718_18(glval<TrivialLambdaClass>) = FieldAddress[l2] : r1718_2 -# 1718| r1718_19(glval<TrivialLambdaClass &>) = VariableAddress[l2] : -# 1718| r1718_20(TrivialLambdaClass &) = Load[l2] : &:r1718_19, ~m? -#-----| r0_5(TrivialLambdaClass) = Load[?] : &:r1718_20, ~m? -#-----| mu0_6(TrivialLambdaClass) = Store[?] : &:r1718_18, r0_5 -# 1718| r1718_21(decltype([...](...){...})) = Load[#temp1718:20] : &:r1718_2, ~m? -# 1718| mu1718_22(decltype([...](...){...})) = Store[l_outer1] : &:r1718_1, r1718_21 -# 1721| v1721_1(void) = NoOp : -# 1714| v1714_14(void) = ReturnIndirection[p2] : &:r1714_8, ~m? -# 1714| v1714_15(void) = ReturnIndirection[p3] : &:r1714_12, ~m? -# 1714| v1714_16(void) = ReturnVoid : -# 1714| v1714_17(void) = AliasedUse : ~m? -# 1714| v1714_18(void) = ExitFunction : - -# 1718| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const -# 1718| Block 0 -# 1718| v1718_1(void) = EnterFunction : -# 1718| mu1718_2(unknown) = AliasedDefinition : -# 1718| mu1718_3(unknown) = InitializeNonLocal : -# 1718| r1718_4(glval<unknown>) = VariableAddress[#this] : -# 1718| mu1718_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1718_4 -# 1718| r1718_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1718_4, ~m? -# 1718| mu1718_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1718_6 -# 1719| r1719_1(glval<decltype([...](...){...})>) = VariableAddress[l_inner1] : -# 1719| r1719_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1719:24] : -# 1719| mu1719_3(decltype([...](...){...})) = Uninitialized[#temp1719:24] : &:r1719_2 -# 1719| r1719_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1719_2 -# 1719| r1719_5(glval<unknown>) = VariableAddress[#this] : -# 1719| r1719_6(lambda [] type at line 1719, col. 25 *) = Load[#this] : &:r1719_5, ~m? -# 1719| r1719_7(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1719_6 -# 1719| r1719_8(TrivialLambdaClass) = Load[?] : &:r1719_7, ~m? -# 1719| mu1719_9(TrivialLambdaClass) = Store[?] : &:r1719_4, r1719_8 -# 1719| r1719_10(decltype([...](...){...})) = Load[#temp1719:24] : &:r1719_2, ~m? -# 1719| mu1719_11(decltype([...](...){...})) = Store[l_inner1] : &:r1719_1, r1719_10 -# 1720| v1720_1(void) = NoOp : -# 1718| v1718_8(void) = ReturnIndirection[#this] : &:r1718_6, ~m? -# 1718| v1718_9(void) = ReturnVoid : -# 1718| v1718_10(void) = AliasedUse : ~m? -# 1718| v1718_11(void) = ExitFunction : - -# 1719| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1718, col. 21)::operator()() const)::(lambda [] type at line 1719, col. 25)::operator()() const -# 1719| Block 0 -# 1719| v1719_1(void) = EnterFunction : -# 1719| mu1719_2(unknown) = AliasedDefinition : -# 1719| mu1719_3(unknown) = InitializeNonLocal : -# 1719| r1719_4(glval<unknown>) = VariableAddress[#this] : -# 1719| mu1719_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1719_4 -# 1719| r1719_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1719_4, ~m? -# 1719| mu1719_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1719_6 -# 1719| v1719_8(void) = NoOp : -# 1719| v1719_9(void) = ReturnIndirection[#this] : &:r1719_6, ~m? -# 1719| v1719_10(void) = ReturnVoid : -# 1719| v1719_11(void) = AliasedUse : ~m? -# 1719| v1719_12(void) = ExitFunction : - -# 1726| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1726| Block 0 -# 1726| v1726_1(void) = EnterFunction : -# 1726| mu1726_2(unknown) = AliasedDefinition : -# 1726| mu1726_3(unknown) = InitializeNonLocal : -# 1726| r1726_4(glval<unknown>) = VariableAddress[#this] : -# 1726| mu1726_5(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1726_4 -# 1726| r1726_6(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1726_4, ~m? -# 1726| mu1726_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1726_6 -# 1726| v1726_8(void) = NoOp : -# 1726| v1726_9(void) = ReturnIndirection[#this] : &:r1726_6, ~m? -# 1726| v1726_10(void) = ReturnVoid : -# 1726| v1726_11(void) = AliasedUse : ~m? -# 1726| v1726_12(void) = ExitFunction : - -# 1727| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1727| Block 0 -# 1727| v1727_1(void) = EnterFunction : -# 1727| mu1727_2(unknown) = AliasedDefinition : -# 1727| mu1727_3(unknown) = InitializeNonLocal : -# 1727| r1727_4(glval<unknown>) = VariableAddress[#this] : -# 1727| mu1727_5(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1727_4 -# 1727| r1727_6(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1727_4, ~m? -# 1727| mu1727_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1727_6 -# 1727| r1727_8(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : -# 1727| mu1727_9(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1727_8 -# 1727| r1727_10(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1727_8, ~m? -# 1727| mu1727_11(unknown) = InitializeIndirection[c] : &:r1727_10 -# 1728| r1728_1(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : -# 1728| r1728_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1728_1, ~m? -# 1728| r1728_3(glval<CopyConstructorWithImplicitArgumentClass>) = CopyValue : r1728_2 -# 1728| r1728_4(glval<int>) = FieldAddress[x] : r1728_3 -# 1728| r1728_5(int) = Load[?] : &:r1728_4, ~m? -# 1728| r1728_6(glval<unknown>) = VariableAddress[#this] : -# 1728| r1728_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1728_6, ~m? -# 1728| r1728_8(glval<int>) = FieldAddress[x] : r1728_7 -# 1728| mu1728_9(int) = Store[?] : &:r1728_8, r1728_5 -# 1729| v1729_1(void) = NoOp : -# 1727| v1727_12(void) = ReturnIndirection[#this] : &:r1727_6, ~m? -# 1727| v1727_13(void) = ReturnIndirection[c] : &:r1727_10, ~m? -# 1727| v1727_14(void) = ReturnVoid : -# 1727| v1727_15(void) = AliasedUse : ~m? -# 1727| v1727_16(void) = ExitFunction : - -# 1735| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1735| Block 0 -# 1735| v1735_1(void) = EnterFunction : -# 1735| mu1735_2(unknown) = AliasedDefinition : -# 1735| mu1735_3(unknown) = InitializeNonLocal : -# 1735| r1735_4(glval<unknown>) = VariableAddress[#this] : -# 1735| mu1735_5(glval<CopyConstructorWithBitwiseCopyClass>) = InitializeParameter[#this] : &:r1735_4 -# 1735| r1735_6(glval<CopyConstructorWithBitwiseCopyClass>) = Load[#this] : &:r1735_4, ~m? -# 1735| mu1735_7(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1735_6 -# 1735| v1735_8(void) = NoOp : -# 1735| v1735_9(void) = ReturnIndirection[#this] : &:r1735_6, ~m? -# 1735| v1735_10(void) = ReturnVoid : -# 1735| v1735_11(void) = AliasedUse : ~m? -# 1735| v1735_12(void) = ExitFunction : - -# 1738| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +#-----| mu0_10(int &) = Store[x1] : &:r1723_6, r0_9 +# 1724| v1724_1(void) = NoOp : +# 1721| v1721_4(void) = ReturnVoid : +# 1721| v1721_5(void) = AliasedUse : ~m? +# 1721| v1721_6(void) = ExitFunction : + +# 1729| void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1729| Block 0 +# 1729| v1729_1(void) = EnterFunction : +# 1729| mu1729_2(unknown) = AliasedDefinition : +# 1729| mu1729_3(unknown) = InitializeNonLocal : +# 1729| r1729_4(glval<unknown>) = VariableAddress[#this] : +# 1729| mu1729_5(glval<CapturedLambdaMyObj>) = InitializeParameter[#this] : &:r1729_4 +# 1729| r1729_6(glval<CapturedLambdaMyObj>) = Load[#this] : &:r1729_4, ~m? +# 1729| mu1729_7(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1729_6 +# 1729| v1729_8(void) = NoOp : +# 1729| v1729_9(void) = ReturnIndirection[#this] : &:r1729_6, ~m? +# 1729| v1729_10(void) = ReturnVoid : +# 1729| v1729_11(void) = AliasedUse : ~m? +# 1729| v1729_12(void) = ExitFunction : + +# 1732| void captured_lambda(int, int&, int&&) +# 1732| Block 0 +# 1732| v1732_1(void) = EnterFunction : +# 1732| mu1732_2(unknown) = AliasedDefinition : +# 1732| mu1732_3(unknown) = InitializeNonLocal : +# 1732| r1732_4(glval<int>) = VariableAddress[x] : +# 1732| mu1732_5(int) = InitializeParameter[x] : &:r1732_4 +# 1732| r1732_6(glval<int &>) = VariableAddress[y] : +# 1732| mu1732_7(int &) = InitializeParameter[y] : &:r1732_6 +# 1732| r1732_8(int &) = Load[y] : &:r1732_6, ~m? +# 1732| mu1732_9(unknown) = InitializeIndirection[y] : &:r1732_8 +# 1732| r1732_10(glval<int &&>) = VariableAddress[z] : +# 1732| mu1732_11(int &&) = InitializeParameter[z] : &:r1732_10 +# 1732| r1732_12(int &&) = Load[z] : &:r1732_10, ~m? +# 1732| mu1732_13(unknown) = InitializeIndirection[z] : &:r1732_12 +# 1734| r1734_1(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : +# 1734| r1734_2(glval<CapturedLambdaMyObj>) = VariableAddress[#temp1734:24] : +# 1734| mu1734_3(CapturedLambdaMyObj) = Uninitialized[#temp1734:24] : &:r1734_2 +# 1734| r1734_4(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : +# 1734| v1734_5(void) = Call[CapturedLambdaMyObj] : func:r1734_4, this:r1734_2 +# 1734| mu1734_6(unknown) = ^CallSideEffect : ~m? +# 1734| mu1734_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1734_2 +# 1734| r1734_8(glval<CapturedLambdaMyObj>) = Convert : r1734_2 +# 1734| r1734_9(CapturedLambdaMyObj &) = CopyValue : r1734_8 +# 1734| mu1734_10(CapturedLambdaMyObj &) = Store[obj1] : &:r1734_1, r1734_9 +# 1735| r1735_1(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : +# 1735| mu1735_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1735_1 +# 1735| r1735_3(glval<unknown>) = FunctionAddress[CapturedLambdaMyObj] : +# 1735| v1735_4(void) = Call[CapturedLambdaMyObj] : func:r1735_3, this:r1735_1 +# 1735| mu1735_5(unknown) = ^CallSideEffect : ~m? +# 1735| mu1735_6(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1735_1 +# 1737| r1737_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_outer] : +# 1737| r1737_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1737:24] : +# 1737| mu1737_3(decltype([...](...){...})) = Uninitialized[#temp1737:24] : &:r1737_2 +# 1737| r1737_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1737_2 +# 1737| r1737_5(glval<CapturedLambdaMyObj &>) = VariableAddress[obj1] : +# 1737| r1737_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1737_5, ~m? +#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1737_6, ~m? +#-----| mu0_2(CapturedLambdaMyObj) = Store[?] : &:r1737_4, r0_1 +# 1737| r1737_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1737_2 +# 1737| r1737_8(glval<CapturedLambdaMyObj>) = VariableAddress[obj2] : +# 1737| r1737_9(CapturedLambdaMyObj) = Load[obj2] : &:r1737_8, ~m? +# 1737| mu1737_10(CapturedLambdaMyObj) = Store[?] : &:r1737_7, r1737_9 +# 1737| r1737_11(glval<int>) = FieldAddress[x] : r1737_2 +# 1737| r1737_12(glval<int>) = VariableAddress[x] : +# 1737| r1737_13(int) = Load[x] : &:r1737_12, ~m? +# 1737| mu1737_14(int) = Store[?] : &:r1737_11, r1737_13 +# 1737| r1737_15(glval<int>) = FieldAddress[y] : r1737_2 +# 1737| r1737_16(glval<int &>) = VariableAddress[y] : +# 1737| r1737_17(int &) = Load[y] : &:r1737_16, ~m? +# 1739| r1739_1(int) = Load[?] : &:r1737_17, ~m? +# 1739| mu1739_2(int) = Store[?] : &:r1737_15, r1739_1 +# 1737| r1737_18(glval<int>) = FieldAddress[z] : r1737_2 +# 1737| r1737_19(glval<int &&>) = VariableAddress[z] : +# 1737| r1737_20(int &&) = Load[z] : &:r1737_19, ~m? +# 1739| r1739_3(int) = Load[?] : &:r1737_20, ~m? +# 1739| mu1739_4(int) = Store[?] : &:r1737_18, r1739_3 +# 1737| r1737_21(decltype([...](...){...})) = Load[#temp1737:24] : &:r1737_2, ~m? +# 1737| mu1737_22(decltype([...](...){...})) = Store[lambda_outer] : &:r1737_1, r1737_21 +# 1740| v1740_1(void) = NoOp : +# 1732| v1732_14(void) = ReturnIndirection[y] : &:r1732_8, ~m? +# 1732| v1732_15(void) = ReturnIndirection[z] : &:r1732_12, ~m? +# 1732| v1732_16(void) = ReturnVoid : +# 1732| v1732_17(void) = AliasedUse : ~m? +# 1732| v1732_18(void) = ExitFunction : + +# 1737| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const +# 1737| Block 0 +# 1737| v1737_1(void) = EnterFunction : +# 1737| mu1737_2(unknown) = AliasedDefinition : +# 1737| mu1737_3(unknown) = InitializeNonLocal : +# 1737| r1737_4(glval<unknown>) = VariableAddress[#this] : +# 1737| mu1737_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1737_4 +# 1737| r1737_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1737_4, ~m? +# 1737| mu1737_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1737_6 +# 1738| r1738_1(glval<decltype([...](...){...})>) = VariableAddress[lambda_inner] : +# 1738| r1738_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1738:28] : +# 1738| mu1738_3(decltype([...](...){...})) = Uninitialized[#temp1738:28] : &:r1738_2 +# 1738| r1738_4(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1738_2 +# 1738| r1738_5(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_6(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_5, ~m? +# 1738| r1738_7(glval<CapturedLambdaMyObj>) = FieldAddress[obj1] : r1738_6 +# 1738| r1738_8(CapturedLambdaMyObj) = Load[?] : &:r1738_7, ~m? +# 1738| mu1738_9(CapturedLambdaMyObj) = Store[?] : &:r1738_4, r1738_8 +# 1738| r1738_10(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1738_2 +# 1738| r1738_11(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_12(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_11, ~m? +# 1738| r1738_13(glval<CapturedLambdaMyObj>) = FieldAddress[obj2] : r1738_12 +# 1738| r1738_14(CapturedLambdaMyObj) = Load[?] : &:r1738_13, ~m? +# 1738| mu1738_15(CapturedLambdaMyObj) = Store[?] : &:r1738_10, r1738_14 +# 1738| r1738_16(glval<int>) = FieldAddress[x] : r1738_2 +# 1738| r1738_17(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_18(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_17, ~m? +# 1738| r1738_19(glval<int>) = FieldAddress[x] : r1738_18 +# 1738| r1738_20(int) = Load[?] : &:r1738_19, ~m? +# 1738| mu1738_21(int) = Store[?] : &:r1738_16, r1738_20 +# 1738| r1738_22(glval<int>) = FieldAddress[y] : r1738_2 +# 1738| r1738_23(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_24(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_23, ~m? +# 1738| r1738_25(glval<int>) = FieldAddress[y] : r1738_24 +# 1738| r1738_26(int) = Load[?] : &:r1738_25, ~m? +# 1738| mu1738_27(int) = Store[?] : &:r1738_22, r1738_26 +# 1738| r1738_28(glval<int>) = FieldAddress[z] : r1738_2 +# 1738| r1738_29(glval<unknown>) = VariableAddress[#this] : +# 1738| r1738_30(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_29, ~m? +# 1738| r1738_31(glval<int>) = FieldAddress[z] : r1738_30 +# 1738| r1738_32(int) = Load[?] : &:r1738_31, ~m? +# 1738| mu1738_33(int) = Store[?] : &:r1738_28, r1738_32 +# 1738| r1738_34(decltype([...](...){...})) = Load[#temp1738:28] : &:r1738_2, ~m? +# 1738| mu1738_35(decltype([...](...){...})) = Store[lambda_inner] : &:r1738_1, r1738_34 +# 1739| v1739_1(void) = NoOp : +# 1737| v1737_8(void) = ReturnIndirection[#this] : &:r1737_6, ~m? +# 1737| v1737_9(void) = ReturnVoid : +# 1737| v1737_10(void) = AliasedUse : ~m? +# 1737| v1737_11(void) = ExitFunction : + +# 1738| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator()() const # 1738| Block 0 -# 1738| v1738_1(void) = EnterFunction : -# 1738| mu1738_2(unknown) = AliasedDefinition : -# 1738| mu1738_3(unknown) = InitializeNonLocal : -# 1738| r1738_4(glval<unknown>) = VariableAddress[#this] : -# 1738| mu1738_5(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1738_4 -# 1738| r1738_6(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1738_4, ~m? -# 1738| mu1738_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1738_6 +# 1738| v1738_1(void) = EnterFunction : +# 1738| mu1738_2(unknown) = AliasedDefinition : +# 1738| mu1738_3(unknown) = InitializeNonLocal : +# 1738| r1738_4(glval<unknown>) = VariableAddress[#this] : +# 1738| mu1738_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1738_4 +# 1738| r1738_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1738_4, ~m? +# 1738| mu1738_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1738_6 +# 1738| v1738_8(void) = NoOp : +# 1738| v1738_9(void) = NoOp : +# 1738| v1738_10(void) = ReturnIndirection[#this] : &:r1738_6, ~m? +# 1738| v1738_11(void) = ReturnVoid : +# 1738| v1738_12(void) = AliasedUse : ~m? +# 1738| v1738_13(void) = ExitFunction : + +# 1742| int goto_on_same_line() +# 1742| Block 0 +# 1742| v1742_1(void) = EnterFunction : +# 1742| mu1742_2(unknown) = AliasedDefinition : +# 1742| mu1742_3(unknown) = InitializeNonLocal : +# 1743| r1743_1(glval<int>) = VariableAddress[x] : +# 1743| r1743_2(int) = Constant[42] : +# 1743| mu1743_3(int) = Store[x] : &:r1743_1, r1743_2 +# 1744| v1744_1(void) = NoOp : +# 1744| v1744_2(void) = NoOp : +# 1745| r1745_1(glval<int>) = VariableAddress[#return] : +# 1745| r1745_2(glval<int>) = VariableAddress[x] : +# 1745| r1745_3(int) = Load[x] : &:r1745_2, ~m? +# 1745| mu1745_4(int) = Store[#return] : &:r1745_1, r1745_3 +# 1742| r1742_4(glval<int>) = VariableAddress[#return] : +# 1742| v1742_5(void) = ReturnValue : &:r1742_4, ~m? +# 1742| v1742_6(void) = AliasedUse : ~m? +# 1742| v1742_7(void) = ExitFunction : + +# 1750| void TrivialLambdaClass::m() const +# 1750| Block 0 +# 1750| v1750_1(void) = EnterFunction : +# 1750| mu1750_2(unknown) = AliasedDefinition : +# 1750| mu1750_3(unknown) = InitializeNonLocal : +# 1750| r1750_4(glval<unknown>) = VariableAddress[#this] : +# 1750| mu1750_5(glval<TrivialLambdaClass>) = InitializeParameter[#this] : &:r1750_4 +# 1750| r1750_6(glval<TrivialLambdaClass>) = Load[#this] : &:r1750_4, ~m? +# 1750| mu1750_7(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1750_6 +# 1751| r1751_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_outer] : +# 1751| r1751_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1751:25] : +# 1751| mu1751_3(decltype([...](...){...})) = Uninitialized[#temp1751:25] : &:r1751_2 +# 1751| r1751_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1751_2 +# 1751| r1751_5(glval<unknown>) = VariableAddress[#this] : +# 1751| r1751_6(TrivialLambdaClass *) = Load[#this] : &:r1751_5, ~m? +# 1751| r1751_7(TrivialLambdaClass) = Load[?] : &:r1751_6, ~m? +# 1751| mu1751_8(TrivialLambdaClass) = Store[?] : &:r1751_4, r1751_7 +# 1751| r1751_9(decltype([...](...){...})) = Load[#temp1751:25] : &:r1751_2, ~m? +# 1751| mu1751_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1751_1, r1751_9 +# 1758| v1758_1(void) = NoOp : +# 1750| v1750_8(void) = ReturnIndirection[#this] : &:r1750_6, ~m? +# 1750| v1750_9(void) = ReturnVoid : +# 1750| v1750_10(void) = AliasedUse : ~m? +# 1750| v1750_11(void) = ExitFunction : + +# 1751| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const +# 1751| Block 0 +# 1751| v1751_1(void) = EnterFunction : +# 1751| mu1751_2(unknown) = AliasedDefinition : +# 1751| mu1751_3(unknown) = InitializeNonLocal : +# 1751| r1751_4(glval<unknown>) = VariableAddress[#this] : +# 1751| mu1751_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1751_4 +# 1751| r1751_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1751_4, ~m? +# 1751| mu1751_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1751_6 +# 1752| r1752_1(glval<unknown>) = VariableAddress[#this] : +# 1752| r1752_2(lambda [] type at line 1751, col. 26 *) = Load[#this] : &:r1752_1, ~m? +# 1752| r1752_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1752_2 +# 1752| r1752_4(TrivialLambdaClass *) = CopyValue : r1752_3 +# 1752| r1752_5(glval<unknown>) = FunctionAddress[m] : +# 1752| v1752_6(void) = Call[m] : func:r1752_5, this:r1752_4 +# 1752| mu1752_7(unknown) = ^CallSideEffect : ~m? +# 1752| v1752_8(void) = ^IndirectReadSideEffect[-1] : &:r1752_4, ~m? +# 1754| r1754_1(glval<decltype([...](...){...})>) = VariableAddress[l_m_inner] : +# 1754| r1754_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1754:29] : +# 1754| mu1754_3(decltype([...](...){...})) = Uninitialized[#temp1754:29] : &:r1754_2 +# 1754| r1754_4(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1754_2 +# 1754| r1754_5(glval<unknown>) = VariableAddress[#this] : +# 1754| r1754_6(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1754_5, ~m? +# 1754| r1754_7(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1754_6 +# 1754| r1754_8(TrivialLambdaClass) = Load[?] : &:r1754_7, ~m? +# 1754| mu1754_9(TrivialLambdaClass) = Store[?] : &:r1754_4, r1754_8 +# 1754| r1754_10(decltype([...](...){...})) = Load[#temp1754:29] : &:r1754_2, ~m? +# 1754| mu1754_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1754_1, r1754_10 +# 1757| v1757_1(void) = NoOp : +# 1751| v1751_8(void) = ReturnIndirection[#this] : &:r1751_6, ~m? +# 1751| v1751_9(void) = ReturnVoid : +# 1751| v1751_10(void) = AliasedUse : ~m? +# 1751| v1751_11(void) = ExitFunction : + +# 1754| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator()() const +# 1754| Block 0 +# 1754| v1754_1(void) = EnterFunction : +# 1754| mu1754_2(unknown) = AliasedDefinition : +# 1754| mu1754_3(unknown) = InitializeNonLocal : +# 1754| r1754_4(glval<unknown>) = VariableAddress[#this] : +# 1754| mu1754_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1754_4 +# 1754| r1754_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1754_4, ~m? +# 1754| mu1754_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1754_6 +# 1755| r1755_1(glval<unknown>) = VariableAddress[#this] : +# 1755| r1755_2(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1755_1, ~m? +# 1755| r1755_3(glval<TrivialLambdaClass>) = FieldAddress[(captured this)] : r1755_2 +# 1755| r1755_4(TrivialLambdaClass *) = CopyValue : r1755_3 +# 1755| r1755_5(glval<unknown>) = FunctionAddress[m] : +# 1755| v1755_6(void) = Call[m] : func:r1755_5, this:r1755_4 +# 1755| mu1755_7(unknown) = ^CallSideEffect : ~m? +# 1755| v1755_8(void) = ^IndirectReadSideEffect[-1] : &:r1755_4, ~m? +# 1756| v1756_1(void) = NoOp : +# 1754| v1754_8(void) = ReturnIndirection[#this] : &:r1754_6, ~m? +# 1754| v1754_9(void) = ReturnVoid : +# 1754| v1754_10(void) = AliasedUse : ~m? +# 1754| v1754_11(void) = ExitFunction : + +# 1761| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1761| Block 0 +# 1761| v1761_1(void) = EnterFunction : +# 1761| mu1761_2(unknown) = AliasedDefinition : +# 1761| mu1761_3(unknown) = InitializeNonLocal : +# 1761| r1761_4(glval<TrivialLambdaClass>) = VariableAddress[p1] : +# 1761| mu1761_5(TrivialLambdaClass) = InitializeParameter[p1] : &:r1761_4 +# 1761| r1761_6(glval<TrivialLambdaClass &>) = VariableAddress[p2] : +# 1761| mu1761_7(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1761_6 +# 1761| r1761_8(TrivialLambdaClass &) = Load[p2] : &:r1761_6, ~m? +# 1761| mu1761_9(unknown) = InitializeIndirection[p2] : &:r1761_8 +# 1761| r1761_10(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : +# 1761| mu1761_11(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1761_10 +# 1761| r1761_12(TrivialLambdaClass &&) = Load[p3] : &:r1761_10, ~m? +# 1761| mu1761_13(unknown) = InitializeIndirection[p3] : &:r1761_12 +# 1762| r1762_1(glval<TrivialLambdaClass>) = VariableAddress[l1] : +# 1762| mu1762_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1762_1 +# 1763| r1763_1(glval<TrivialLambdaClass &>) = VariableAddress[l2] : +# 1763| r1763_2(glval<TrivialLambdaClass>) = VariableAddress[#temp1763:36] : +# 1763| r1763_3(TrivialLambdaClass) = Constant[0] : +# 1763| mu1763_4(TrivialLambdaClass) = Store[#temp1763:36] : &:r1763_2, r1763_3 +# 1763| r1763_5(glval<TrivialLambdaClass>) = Convert : r1763_2 +# 1763| r1763_6(TrivialLambdaClass &) = CopyValue : r1763_5 +# 1763| mu1763_7(TrivialLambdaClass &) = Store[l2] : &:r1763_1, r1763_6 +# 1765| r1765_1(glval<decltype([...](...){...})>) = VariableAddress[l_outer1] : +# 1765| r1765_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1765:20] : +# 1765| mu1765_3(decltype([...](...){...})) = Uninitialized[#temp1765:20] : &:r1765_2 +# 1765| r1765_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1765_2 +# 1765| r1765_5(glval<TrivialLambdaClass>) = VariableAddress[p1] : +# 1765| r1765_6(TrivialLambdaClass) = Load[p1] : &:r1765_5, ~m? +# 1765| mu1765_7(TrivialLambdaClass) = Store[?] : &:r1765_4, r1765_6 +# 1765| r1765_8(glval<TrivialLambdaClass>) = FieldAddress[p2] : r1765_2 +# 1765| r1765_9(glval<TrivialLambdaClass &>) = VariableAddress[p2] : +# 1765| r1765_10(TrivialLambdaClass &) = Load[p2] : &:r1765_9, ~m? +#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1765_10, ~m? +#-----| mu0_2(TrivialLambdaClass) = Store[?] : &:r1765_8, r0_1 +# 1765| r1765_11(glval<TrivialLambdaClass>) = FieldAddress[p3] : r1765_2 +# 1765| r1765_12(glval<TrivialLambdaClass &&>) = VariableAddress[p3] : +# 1765| r1765_13(TrivialLambdaClass &&) = Load[p3] : &:r1765_12, ~m? +#-----| r0_3(TrivialLambdaClass) = Load[?] : &:r1765_13, ~m? +#-----| mu0_4(TrivialLambdaClass) = Store[?] : &:r1765_11, r0_3 +# 1765| r1765_14(glval<TrivialLambdaClass>) = FieldAddress[l1] : r1765_2 +# 1765| r1765_15(glval<TrivialLambdaClass>) = VariableAddress[l1] : +# 1765| r1765_16(TrivialLambdaClass) = Load[l1] : &:r1765_15, ~m? +# 1765| mu1765_17(TrivialLambdaClass) = Store[?] : &:r1765_14, r1765_16 +# 1765| r1765_18(glval<TrivialLambdaClass>) = FieldAddress[l2] : r1765_2 +# 1765| r1765_19(glval<TrivialLambdaClass &>) = VariableAddress[l2] : +# 1765| r1765_20(TrivialLambdaClass &) = Load[l2] : &:r1765_19, ~m? +#-----| r0_5(TrivialLambdaClass) = Load[?] : &:r1765_20, ~m? +#-----| mu0_6(TrivialLambdaClass) = Store[?] : &:r1765_18, r0_5 +# 1765| r1765_21(decltype([...](...){...})) = Load[#temp1765:20] : &:r1765_2, ~m? +# 1765| mu1765_22(decltype([...](...){...})) = Store[l_outer1] : &:r1765_1, r1765_21 +# 1768| v1768_1(void) = NoOp : +# 1761| v1761_14(void) = ReturnIndirection[p2] : &:r1761_8, ~m? +# 1761| v1761_15(void) = ReturnIndirection[p3] : &:r1761_12, ~m? +# 1761| v1761_16(void) = ReturnVoid : +# 1761| v1761_17(void) = AliasedUse : ~m? +# 1761| v1761_18(void) = ExitFunction : + +# 1765| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const +# 1765| Block 0 +# 1765| v1765_1(void) = EnterFunction : +# 1765| mu1765_2(unknown) = AliasedDefinition : +# 1765| mu1765_3(unknown) = InitializeNonLocal : +# 1765| r1765_4(glval<unknown>) = VariableAddress[#this] : +# 1765| mu1765_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1765_4 +# 1765| r1765_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1765_4, ~m? +# 1765| mu1765_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1765_6 +# 1766| r1766_1(glval<decltype([...](...){...})>) = VariableAddress[l_inner1] : +# 1766| r1766_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1766:24] : +# 1766| mu1766_3(decltype([...](...){...})) = Uninitialized[#temp1766:24] : &:r1766_2 +# 1766| r1766_4(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1766_2 +# 1766| r1766_5(glval<unknown>) = VariableAddress[#this] : +# 1766| r1766_6(lambda [] type at line 1766, col. 25 *) = Load[#this] : &:r1766_5, ~m? +# 1766| r1766_7(glval<TrivialLambdaClass>) = FieldAddress[p1] : r1766_6 +# 1766| r1766_8(TrivialLambdaClass) = Load[?] : &:r1766_7, ~m? +# 1766| mu1766_9(TrivialLambdaClass) = Store[?] : &:r1766_4, r1766_8 +# 1766| r1766_10(decltype([...](...){...})) = Load[#temp1766:24] : &:r1766_2, ~m? +# 1766| mu1766_11(decltype([...](...){...})) = Store[l_inner1] : &:r1766_1, r1766_10 +# 1767| v1767_1(void) = NoOp : +# 1765| v1765_8(void) = ReturnIndirection[#this] : &:r1765_6, ~m? +# 1765| v1765_9(void) = ReturnVoid : +# 1765| v1765_10(void) = AliasedUse : ~m? +# 1765| v1765_11(void) = ExitFunction : + +# 1766| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator()() const +# 1766| Block 0 +# 1766| v1766_1(void) = EnterFunction : +# 1766| mu1766_2(unknown) = AliasedDefinition : +# 1766| mu1766_3(unknown) = InitializeNonLocal : +# 1766| r1766_4(glval<unknown>) = VariableAddress[#this] : +# 1766| mu1766_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1766_4 +# 1766| r1766_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1766_4, ~m? +# 1766| mu1766_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1766_6 +# 1766| v1766_8(void) = NoOp : +# 1766| v1766_9(void) = ReturnIndirection[#this] : &:r1766_6, ~m? +# 1766| v1766_10(void) = ReturnVoid : +# 1766| v1766_11(void) = AliasedUse : ~m? +# 1766| v1766_12(void) = ExitFunction : + +# 1773| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1773| Block 0 +# 1773| v1773_1(void) = EnterFunction : +# 1773| mu1773_2(unknown) = AliasedDefinition : +# 1773| mu1773_3(unknown) = InitializeNonLocal : +# 1773| r1773_4(glval<unknown>) = VariableAddress[#this] : +# 1773| mu1773_5(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1773_4 +# 1773| r1773_6(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1773_4, ~m? +# 1773| mu1773_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1773_6 +# 1773| v1773_8(void) = NoOp : +# 1773| v1773_9(void) = ReturnIndirection[#this] : &:r1773_6, ~m? +# 1773| v1773_10(void) = ReturnVoid : +# 1773| v1773_11(void) = AliasedUse : ~m? +# 1773| v1773_12(void) = ExitFunction : + +# 1774| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1774| Block 0 +# 1774| v1774_1(void) = EnterFunction : +# 1774| mu1774_2(unknown) = AliasedDefinition : +# 1774| mu1774_3(unknown) = InitializeNonLocal : +# 1774| r1774_4(glval<unknown>) = VariableAddress[#this] : +# 1774| mu1774_5(glval<CopyConstructorWithImplicitArgumentClass>) = InitializeParameter[#this] : &:r1774_4 +# 1774| r1774_6(glval<CopyConstructorWithImplicitArgumentClass>) = Load[#this] : &:r1774_4, ~m? +# 1774| mu1774_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1774_6 +# 1774| r1774_8(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : +# 1774| mu1774_9(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1774_8 +# 1774| r1774_10(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1774_8, ~m? +# 1774| mu1774_11(unknown) = InitializeIndirection[c] : &:r1774_10 +# 1775| r1775_1(glval<CopyConstructorWithImplicitArgumentClass &>) = VariableAddress[c] : +# 1775| r1775_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1775_1, ~m? +# 1775| r1775_3(glval<CopyConstructorWithImplicitArgumentClass>) = CopyValue : r1775_2 +# 1775| r1775_4(glval<int>) = FieldAddress[x] : r1775_3 +# 1775| r1775_5(int) = Load[?] : &:r1775_4, ~m? +# 1775| r1775_6(glval<unknown>) = VariableAddress[#this] : +# 1775| r1775_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1775_6, ~m? +# 1775| r1775_8(glval<int>) = FieldAddress[x] : r1775_7 +# 1775| mu1775_9(int) = Store[?] : &:r1775_8, r1775_5 +# 1776| v1776_1(void) = NoOp : +# 1774| v1774_12(void) = ReturnIndirection[#this] : &:r1774_6, ~m? +# 1774| v1774_13(void) = ReturnIndirection[c] : &:r1774_10, ~m? +# 1774| v1774_14(void) = ReturnVoid : +# 1774| v1774_15(void) = AliasedUse : ~m? +# 1774| v1774_16(void) = ExitFunction : + +# 1782| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1782| Block 0 +# 1782| v1782_1(void) = EnterFunction : +# 1782| mu1782_2(unknown) = AliasedDefinition : +# 1782| mu1782_3(unknown) = InitializeNonLocal : +# 1782| r1782_4(glval<unknown>) = VariableAddress[#this] : +# 1782| mu1782_5(glval<CopyConstructorWithBitwiseCopyClass>) = InitializeParameter[#this] : &:r1782_4 +# 1782| r1782_6(glval<CopyConstructorWithBitwiseCopyClass>) = Load[#this] : &:r1782_4, ~m? +# 1782| mu1782_7(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1782_6 +# 1782| v1782_8(void) = NoOp : +# 1782| v1782_9(void) = ReturnIndirection[#this] : &:r1782_6, ~m? +# 1782| v1782_10(void) = ReturnVoid : +# 1782| v1782_11(void) = AliasedUse : ~m? +# 1782| v1782_12(void) = ExitFunction : + +# 1785| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1785| Block 0 +# 1785| v1785_1(void) = EnterFunction : +# 1785| mu1785_2(unknown) = AliasedDefinition : +# 1785| mu1785_3(unknown) = InitializeNonLocal : +# 1785| r1785_4(glval<unknown>) = VariableAddress[#this] : +# 1785| mu1785_5(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1785_4 +# 1785| r1785_6(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1785_4, ~m? +# 1785| mu1785_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1785_6 #-----| r0_1(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1738| r1738_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1738_5 -# 1738| r1738_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1738| r1738_10(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : -# 1738| r1738_11(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1738_10, ~m? -# 1738| r1738_12(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1738_11 -# 1738| r1738_13(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1738_12 -# 1738| r1738_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1738_13 -# 1738| v1738_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1738_9, this:r1738_8, 0:r1738_14 -# 1738| mu1738_16(unknown) = ^CallSideEffect : ~m? -# 1738| v1738_17(void) = ^BufferReadSideEffect[0] : &:r1738_14, ~m? -# 1738| mu1738_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1738_8 -# 1738| v1738_19(void) = NoOp : -# 1738| v1738_20(void) = ReturnIndirection[#this] : &:r1738_6, ~m? +# 1785| r1785_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1785_5 +# 1785| r1785_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1785| r1785_10(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : +# 1785| r1785_11(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1785_10, ~m? +# 1785| r1785_12(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1785_11 +# 1785| r1785_13(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1785_12 +# 1785| r1785_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1785_13 +# 1785| v1785_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1785_9, this:r1785_8, 0:r1785_14 +# 1785| mu1785_16(unknown) = ^CallSideEffect : ~m? +# 1785| v1785_17(void) = ^BufferReadSideEffect[0] : &:r1785_14, ~m? +# 1785| mu1785_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1785_8 +# 1785| v1785_19(void) = NoOp : +# 1785| v1785_20(void) = ReturnIndirection[#this] : &:r1785_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1738| v1738_21(void) = ReturnVoid : -# 1738| v1738_22(void) = AliasedUse : ~m? -# 1738| v1738_23(void) = ExitFunction : - -# 1742| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1742| Block 0 -# 1742| v1742_1(void) = EnterFunction : -# 1742| mu1742_2(unknown) = AliasedDefinition : -# 1742| mu1742_3(unknown) = InitializeNonLocal : -# 1742| r1742_4(glval<unknown>) = VariableAddress[#this] : -# 1742| mu1742_5(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1742_4 -# 1742| r1742_6(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1742_4, ~m? -# 1742| mu1742_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1742_6 -# 1742| r1742_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1742_5 -# 1742| r1742_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1742| v1742_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1742_9, this:r1742_8 -# 1742| mu1742_11(unknown) = ^CallSideEffect : ~m? -# 1742| mu1742_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_8 -# 1742| r1742_13(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1742_5 -# 1742| r1742_14(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1742| v1742_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1742_14, this:r1742_13 -# 1742| mu1742_16(unknown) = ^CallSideEffect : ~m? -# 1742| mu1742_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1742_13 -# 1742| v1742_18(void) = NoOp : -# 1742| v1742_19(void) = ReturnIndirection[#this] : &:r1742_6, ~m? -# 1742| v1742_20(void) = ReturnVoid : -# 1742| v1742_21(void) = AliasedUse : ~m? -# 1742| v1742_22(void) = ExitFunction : - -# 1745| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1745| Block 0 -# 1745| v1745_1(void) = EnterFunction : -# 1745| mu1745_2(unknown) = AliasedDefinition : -# 1745| mu1745_3(unknown) = InitializeNonLocal : -# 1745| r1745_4(glval<unknown>) = VariableAddress[#this] : -# 1745| mu1745_5(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1745_4 -# 1745| r1745_6(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1745_4, ~m? -# 1745| mu1745_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1745_6 +# 1785| v1785_21(void) = ReturnVoid : +# 1785| v1785_22(void) = AliasedUse : ~m? +# 1785| v1785_23(void) = ExitFunction : + +# 1789| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1789| Block 0 +# 1789| v1789_1(void) = EnterFunction : +# 1789| mu1789_2(unknown) = AliasedDefinition : +# 1789| mu1789_3(unknown) = InitializeNonLocal : +# 1789| r1789_4(glval<unknown>) = VariableAddress[#this] : +# 1789| mu1789_5(glval<CopyConstructorTestNonVirtualClass>) = InitializeParameter[#this] : &:r1789_4 +# 1789| r1789_6(glval<CopyConstructorTestNonVirtualClass>) = Load[#this] : &:r1789_4, ~m? +# 1789| mu1789_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1789_6 +# 1789| r1789_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1789_5 +# 1789| r1789_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1789| v1789_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1789_9, this:r1789_8 +# 1789| mu1789_11(unknown) = ^CallSideEffect : ~m? +# 1789| mu1789_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_8 +# 1789| r1789_13(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1789_5 +# 1789| r1789_14(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1789| v1789_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1789_14, this:r1789_13 +# 1789| mu1789_16(unknown) = ^CallSideEffect : ~m? +# 1789| mu1789_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_13 +# 1789| v1789_18(void) = NoOp : +# 1789| v1789_19(void) = ReturnIndirection[#this] : &:r1789_6, ~m? +# 1789| v1789_20(void) = ReturnVoid : +# 1789| v1789_21(void) = AliasedUse : ~m? +# 1789| v1789_22(void) = ExitFunction : + +# 1792| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1792| Block 0 +# 1792| v1792_1(void) = EnterFunction : +# 1792| mu1792_2(unknown) = AliasedDefinition : +# 1792| mu1792_3(unknown) = InitializeNonLocal : +# 1792| r1792_4(glval<unknown>) = VariableAddress[#this] : +# 1792| mu1792_5(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1792_4 +# 1792| r1792_6(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1792_4, ~m? +# 1792| mu1792_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1792_6 #-----| r0_1(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(CopyConstructorTestVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1745| r1745_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1745_5 -# 1745| r1745_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1745| r1745_10(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : -# 1745| r1745_11(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1745_10, ~m? -# 1745| r1745_12(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1745_11 -# 1745| r1745_13(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1745_12 -# 1745| r1745_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1745_13 -# 1745| v1745_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1745_9, this:r1745_8, 0:r1745_14 -# 1745| mu1745_16(unknown) = ^CallSideEffect : ~m? -# 1745| v1745_17(void) = ^BufferReadSideEffect[0] : &:r1745_14, ~m? -# 1745| mu1745_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1745_8 -# 1745| v1745_19(void) = NoOp : -# 1745| v1745_20(void) = ReturnIndirection[#this] : &:r1745_6, ~m? +# 1792| r1792_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1792_5 +# 1792| r1792_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1792| r1792_10(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[(unnamed parameter 0)] : +# 1792| r1792_11(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1792_10, ~m? +# 1792| r1792_12(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1792_11 +# 1792| r1792_13(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1792_12 +# 1792| r1792_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1792_13 +# 1792| v1792_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1792_9, this:r1792_8, 0:r1792_14 +# 1792| mu1792_16(unknown) = ^CallSideEffect : ~m? +# 1792| v1792_17(void) = ^BufferReadSideEffect[0] : &:r1792_14, ~m? +# 1792| mu1792_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1792_8 +# 1792| v1792_19(void) = NoOp : +# 1792| v1792_20(void) = ReturnIndirection[#this] : &:r1792_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1745| v1745_21(void) = ReturnVoid : -# 1745| v1745_22(void) = AliasedUse : ~m? -# 1745| v1745_23(void) = ExitFunction : - -# 1749| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1749| Block 0 -# 1749| v1749_1(void) = EnterFunction : -# 1749| mu1749_2(unknown) = AliasedDefinition : -# 1749| mu1749_3(unknown) = InitializeNonLocal : -# 1749| r1749_4(glval<unknown>) = VariableAddress[#this] : -# 1749| mu1749_5(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1749_4 -# 1749| r1749_6(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1749_4, ~m? -# 1749| mu1749_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1749_6 -# 1749| r1749_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1749_5 -# 1749| r1749_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1749| v1749_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1749_9, this:r1749_8 -# 1749| mu1749_11(unknown) = ^CallSideEffect : ~m? -# 1749| mu1749_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_8 -# 1749| r1749_13(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1749_5 -# 1749| r1749_14(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1749| v1749_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1749_14, this:r1749_13 -# 1749| mu1749_16(unknown) = ^CallSideEffect : ~m? -# 1749| mu1749_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1749_13 -# 1749| v1749_18(void) = NoOp : -# 1749| v1749_19(void) = ReturnIndirection[#this] : &:r1749_6, ~m? -# 1749| v1749_20(void) = ReturnVoid : -# 1749| v1749_21(void) = AliasedUse : ~m? -# 1749| v1749_22(void) = ExitFunction : - -# 1752| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1752| Block 0 -# 1752| v1752_1(void) = EnterFunction : -# 1752| mu1752_2(unknown) = AliasedDefinition : -# 1752| mu1752_3(unknown) = InitializeNonLocal : -# 1753| r1753_1(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : -# 1753| mu1753_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1753_1 -# 1753| r1753_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1753_1, ~m? -# 1753| mu1753_4(unknown) = InitializeIndirection[x] : &:r1753_3 -# 1754| r1754_1(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : -# 1754| mu1754_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1754_1 -# 1754| r1754_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1754_1, ~m? -# 1754| mu1754_4(unknown) = InitializeIndirection[y] : &:r1754_3 -# 1755| r1755_1(glval<CopyConstructorTestNonVirtualClass>) = VariableAddress[cx] : -# 1755| mu1755_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1755_1 -# 1755| r1755_3(glval<unknown>) = FunctionAddress[CopyConstructorTestNonVirtualClass] : -# 1755| r1755_4(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : -# 1755| r1755_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1755_4, ~m? -# 1755| r1755_6(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1755_5 -# 1755| r1755_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1755_6 -# 1755| v1755_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1755_3, this:r1755_1, 0:r1755_7 -# 1755| mu1755_9(unknown) = ^CallSideEffect : ~m? -# 1755| v1755_10(void) = ^BufferReadSideEffect[0] : &:r1755_7, ~m? -# 1755| mu1755_11(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1755_1 -# 1756| r1756_1(glval<CopyConstructorTestVirtualClass>) = VariableAddress[cy] : -# 1756| mu1756_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1756_1 -# 1756| r1756_3(glval<unknown>) = FunctionAddress[CopyConstructorTestVirtualClass] : -# 1756| r1756_4(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : -# 1756| r1756_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1756_4, ~m? -# 1756| r1756_6(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1756_5 -# 1756| r1756_7(CopyConstructorTestVirtualClass &) = CopyValue : r1756_6 -# 1756| v1756_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1756_3, this:r1756_1, 0:r1756_7 -# 1756| mu1756_9(unknown) = ^CallSideEffect : ~m? -# 1756| v1756_10(void) = ^BufferReadSideEffect[0] : &:r1756_7, ~m? -# 1756| mu1756_11(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1756_1 -# 1757| r1757_1(glval<int>) = VariableAddress[#return] : -# 1757| mu1757_2(int) = Uninitialized[#return] : &:r1757_1 -# 1753| v1753_5(void) = ReturnIndirection[x] : &:r1753_3, ~m? -# 1754| v1754_5(void) = ReturnIndirection[y] : &:r1754_3, ~m? -# 1752| r1752_4(glval<int>) = VariableAddress[#return] : -# 1752| v1752_5(void) = ReturnValue : &:r1752_4, ~m? -# 1752| v1752_6(void) = AliasedUse : ~m? -# 1752| v1752_7(void) = ExitFunction : - -# 1759| void if_initialization(int) -# 1759| Block 0 -# 1759| v1759_1(void) = EnterFunction : -# 1759| mu1759_2(unknown) = AliasedDefinition : -# 1759| mu1759_3(unknown) = InitializeNonLocal : -# 1759| r1759_4(glval<int>) = VariableAddress[x] : -# 1759| mu1759_5(int) = InitializeParameter[x] : &:r1759_4 -# 1760| r1760_1(glval<int>) = VariableAddress[y] : -# 1760| r1760_2(glval<int>) = VariableAddress[x] : -# 1760| r1760_3(int) = Load[x] : &:r1760_2, ~m? -# 1760| mu1760_4(int) = Store[y] : &:r1760_1, r1760_3 -# 1760| r1760_5(glval<int>) = VariableAddress[x] : -# 1760| r1760_6(int) = Load[x] : &:r1760_5, ~m? -# 1760| r1760_7(int) = Constant[1] : -# 1760| r1760_8(int) = Add : r1760_6, r1760_7 -# 1760| r1760_9(int) = Constant[0] : -# 1760| r1760_10(bool) = CompareNE : r1760_8, r1760_9 -# 1760| v1760_11(void) = ConditionalBranch : r1760_10 +# 1792| v1792_21(void) = ReturnVoid : +# 1792| v1792_22(void) = AliasedUse : ~m? +# 1792| v1792_23(void) = ExitFunction : + +# 1796| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1796| Block 0 +# 1796| v1796_1(void) = EnterFunction : +# 1796| mu1796_2(unknown) = AliasedDefinition : +# 1796| mu1796_3(unknown) = InitializeNonLocal : +# 1796| r1796_4(glval<unknown>) = VariableAddress[#this] : +# 1796| mu1796_5(glval<CopyConstructorTestVirtualClass>) = InitializeParameter[#this] : &:r1796_4 +# 1796| r1796_6(glval<CopyConstructorTestVirtualClass>) = Load[#this] : &:r1796_4, ~m? +# 1796| mu1796_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1796_6 +# 1796| r1796_8(glval<CopyConstructorWithImplicitArgumentClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : mu1796_5 +# 1796| r1796_9(glval<unknown>) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1796| v1796_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1796_9, this:r1796_8 +# 1796| mu1796_11(unknown) = ^CallSideEffect : ~m? +# 1796| mu1796_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_8 +# 1796| r1796_13(glval<CopyConstructorWithBitwiseCopyClass>) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : mu1796_5 +# 1796| r1796_14(glval<unknown>) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1796| v1796_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1796_14, this:r1796_13 +# 1796| mu1796_16(unknown) = ^CallSideEffect : ~m? +# 1796| mu1796_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_13 +# 1796| v1796_18(void) = NoOp : +# 1796| v1796_19(void) = ReturnIndirection[#this] : &:r1796_6, ~m? +# 1796| v1796_20(void) = ReturnVoid : +# 1796| v1796_21(void) = AliasedUse : ~m? +# 1796| v1796_22(void) = ExitFunction : + +# 1799| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1799| Block 0 +# 1799| v1799_1(void) = EnterFunction : +# 1799| mu1799_2(unknown) = AliasedDefinition : +# 1799| mu1799_3(unknown) = InitializeNonLocal : +# 1800| r1800_1(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : +# 1800| mu1800_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1800_1 +# 1800| r1800_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1800_1, ~m? +# 1800| mu1800_4(unknown) = InitializeIndirection[x] : &:r1800_3 +# 1801| r1801_1(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : +# 1801| mu1801_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1801_1 +# 1801| r1801_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1801_1, ~m? +# 1801| mu1801_4(unknown) = InitializeIndirection[y] : &:r1801_3 +# 1802| r1802_1(glval<CopyConstructorTestNonVirtualClass>) = VariableAddress[cx] : +# 1802| mu1802_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1802_1 +# 1802| r1802_3(glval<unknown>) = FunctionAddress[CopyConstructorTestNonVirtualClass] : +# 1802| r1802_4(glval<CopyConstructorTestNonVirtualClass &>) = VariableAddress[x] : +# 1802| r1802_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1802_4, ~m? +# 1802| r1802_6(glval<CopyConstructorTestNonVirtualClass>) = CopyValue : r1802_5 +# 1802| r1802_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1802_6 +# 1802| v1802_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1802_3, this:r1802_1, 0:r1802_7 +# 1802| mu1802_9(unknown) = ^CallSideEffect : ~m? +# 1802| v1802_10(void) = ^BufferReadSideEffect[0] : &:r1802_7, ~m? +# 1802| mu1802_11(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1802_1 +# 1803| r1803_1(glval<CopyConstructorTestVirtualClass>) = VariableAddress[cy] : +# 1803| mu1803_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1803_1 +# 1803| r1803_3(glval<unknown>) = FunctionAddress[CopyConstructorTestVirtualClass] : +# 1803| r1803_4(glval<CopyConstructorTestVirtualClass &>) = VariableAddress[y] : +# 1803| r1803_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1803_4, ~m? +# 1803| r1803_6(glval<CopyConstructorTestVirtualClass>) = CopyValue : r1803_5 +# 1803| r1803_7(CopyConstructorTestVirtualClass &) = CopyValue : r1803_6 +# 1803| v1803_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1803_3, this:r1803_1, 0:r1803_7 +# 1803| mu1803_9(unknown) = ^CallSideEffect : ~m? +# 1803| v1803_10(void) = ^BufferReadSideEffect[0] : &:r1803_7, ~m? +# 1803| mu1803_11(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1803_1 +# 1804| r1804_1(glval<int>) = VariableAddress[#return] : +# 1804| mu1804_2(int) = Uninitialized[#return] : &:r1804_1 +# 1800| v1800_5(void) = ReturnIndirection[x] : &:r1800_3, ~m? +# 1801| v1801_5(void) = ReturnIndirection[y] : &:r1801_3, ~m? +# 1799| r1799_4(glval<int>) = VariableAddress[#return] : +# 1799| v1799_5(void) = ReturnValue : &:r1799_4, ~m? +# 1799| v1799_6(void) = AliasedUse : ~m? +# 1799| v1799_7(void) = ExitFunction : + +# 1806| void if_initialization(int) +# 1806| Block 0 +# 1806| v1806_1(void) = EnterFunction : +# 1806| mu1806_2(unknown) = AliasedDefinition : +# 1806| mu1806_3(unknown) = InitializeNonLocal : +# 1806| r1806_4(glval<int>) = VariableAddress[x] : +# 1806| mu1806_5(int) = InitializeParameter[x] : &:r1806_4 +# 1807| r1807_1(glval<int>) = VariableAddress[y] : +# 1807| r1807_2(glval<int>) = VariableAddress[x] : +# 1807| r1807_3(int) = Load[x] : &:r1807_2, ~m? +# 1807| mu1807_4(int) = Store[y] : &:r1807_1, r1807_3 +# 1807| r1807_5(glval<int>) = VariableAddress[x] : +# 1807| r1807_6(int) = Load[x] : &:r1807_5, ~m? +# 1807| r1807_7(int) = Constant[1] : +# 1807| r1807_8(int) = Add : r1807_6, r1807_7 +# 1807| r1807_9(int) = Constant[0] : +# 1807| r1807_10(bool) = CompareNE : r1807_8, r1807_9 +# 1807| v1807_11(void) = ConditionalBranch : r1807_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 1761| Block 1 -# 1761| r1761_1(glval<int>) = VariableAddress[x] : -# 1761| r1761_2(int) = Load[x] : &:r1761_1, ~m? -# 1761| r1761_3(glval<int>) = VariableAddress[y] : -# 1761| r1761_4(int) = Load[y] : &:r1761_3, ~m? -# 1761| r1761_5(int) = Add : r1761_2, r1761_4 -# 1761| r1761_6(glval<int>) = VariableAddress[x] : -# 1761| mu1761_7(int) = Store[x] : &:r1761_6, r1761_5 +# 1808| Block 1 +# 1808| r1808_1(glval<int>) = VariableAddress[x] : +# 1808| r1808_2(int) = Load[x] : &:r1808_1, ~m? +# 1808| r1808_3(glval<int>) = VariableAddress[y] : +# 1808| r1808_4(int) = Load[y] : &:r1808_3, ~m? +# 1808| r1808_5(int) = Add : r1808_2, r1808_4 +# 1808| r1808_6(glval<int>) = VariableAddress[x] : +# 1808| mu1808_7(int) = Store[x] : &:r1808_6, r1808_5 #-----| Goto -> Block 2 -# 1764| Block 2 -# 1764| r1764_1(glval<int>) = VariableAddress[w] : -# 1764| mu1764_2(int) = Uninitialized[w] : &:r1764_1 -# 1765| r1765_1(glval<int>) = VariableAddress[x] : -# 1765| r1765_2(int) = Load[x] : &:r1765_1, ~m? -# 1765| r1765_3(glval<int>) = VariableAddress[w] : -# 1765| mu1765_4(int) = Store[w] : &:r1765_3, r1765_2 -# 1765| r1765_5(glval<int>) = VariableAddress[x] : -# 1765| r1765_6(int) = Load[x] : &:r1765_5, ~m? -# 1765| r1765_7(int) = Constant[1] : -# 1765| r1765_8(int) = Add : r1765_6, r1765_7 -# 1765| r1765_9(int) = Constant[0] : -# 1765| r1765_10(bool) = CompareNE : r1765_8, r1765_9 -# 1765| v1765_11(void) = ConditionalBranch : r1765_10 +# 1811| Block 2 +# 1811| r1811_1(glval<int>) = VariableAddress[w] : +# 1811| mu1811_2(int) = Uninitialized[w] : &:r1811_1 +# 1812| r1812_1(glval<int>) = VariableAddress[x] : +# 1812| r1812_2(int) = Load[x] : &:r1812_1, ~m? +# 1812| r1812_3(glval<int>) = VariableAddress[w] : +# 1812| mu1812_4(int) = Store[w] : &:r1812_3, r1812_2 +# 1812| r1812_5(glval<int>) = VariableAddress[x] : +# 1812| r1812_6(int) = Load[x] : &:r1812_5, ~m? +# 1812| r1812_7(int) = Constant[1] : +# 1812| r1812_8(int) = Add : r1812_6, r1812_7 +# 1812| r1812_9(int) = Constant[0] : +# 1812| r1812_10(bool) = CompareNE : r1812_8, r1812_9 +# 1812| v1812_11(void) = ConditionalBranch : r1812_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1766| Block 3 -# 1766| r1766_1(glval<int>) = VariableAddress[x] : -# 1766| r1766_2(int) = Load[x] : &:r1766_1, ~m? -# 1766| r1766_3(glval<int>) = VariableAddress[w] : -# 1766| r1766_4(int) = Load[w] : &:r1766_3, ~m? -# 1766| r1766_5(int) = Add : r1766_2, r1766_4 -# 1766| r1766_6(glval<int>) = VariableAddress[x] : -# 1766| mu1766_7(int) = Store[x] : &:r1766_6, r1766_5 +# 1813| Block 3 +# 1813| r1813_1(glval<int>) = VariableAddress[x] : +# 1813| r1813_2(int) = Load[x] : &:r1813_1, ~m? +# 1813| r1813_3(glval<int>) = VariableAddress[w] : +# 1813| r1813_4(int) = Load[w] : &:r1813_3, ~m? +# 1813| r1813_5(int) = Add : r1813_2, r1813_4 +# 1813| r1813_6(glval<int>) = VariableAddress[x] : +# 1813| mu1813_7(int) = Store[x] : &:r1813_6, r1813_5 #-----| Goto -> Block 4 -# 1769| Block 4 -# 1769| r1769_1(glval<int>) = VariableAddress[x] : -# 1769| r1769_2(int) = Load[x] : &:r1769_1, ~m? -# 1769| r1769_3(glval<int>) = VariableAddress[w] : -# 1769| mu1769_4(int) = Store[w] : &:r1769_3, r1769_2 -# 1769| r1769_5(glval<int>) = VariableAddress[w2] : -# 1769| r1769_6(glval<int>) = VariableAddress[w] : -# 1769| r1769_7(int) = Load[w] : &:r1769_6, ~m? -# 1769| mu1769_8(int) = Store[w2] : &:r1769_5, r1769_7 -# 1769| r1769_9(glval<int>) = VariableAddress[w2] : -# 1769| r1769_10(int) = Load[w2] : &:r1769_9, ~m? -# 1769| r1769_11(int) = Constant[0] : -# 1769| r1769_12(bool) = CompareNE : r1769_10, r1769_11 -# 1769| r1769_13(bool) = CopyValue : r1769_12 -# 1769| v1769_14(void) = ConditionalBranch : r1769_13 +# 1816| Block 4 +# 1816| r1816_1(glval<int>) = VariableAddress[x] : +# 1816| r1816_2(int) = Load[x] : &:r1816_1, ~m? +# 1816| r1816_3(glval<int>) = VariableAddress[w] : +# 1816| mu1816_4(int) = Store[w] : &:r1816_3, r1816_2 +# 1816| r1816_5(glval<int>) = VariableAddress[w2] : +# 1816| r1816_6(glval<int>) = VariableAddress[w] : +# 1816| r1816_7(int) = Load[w] : &:r1816_6, ~m? +# 1816| mu1816_8(int) = Store[w2] : &:r1816_5, r1816_7 +# 1816| r1816_9(glval<int>) = VariableAddress[w2] : +# 1816| r1816_10(int) = Load[w2] : &:r1816_9, ~m? +# 1816| r1816_11(int) = Constant[0] : +# 1816| r1816_12(bool) = CompareNE : r1816_10, r1816_11 +# 1816| r1816_13(bool) = CopyValue : r1816_12 +# 1816| v1816_14(void) = ConditionalBranch : r1816_13 #-----| False -> Block 6 #-----| True -> Block 5 -# 1770| Block 5 -# 1770| r1770_1(glval<int>) = VariableAddress[x] : -# 1770| r1770_2(int) = Load[x] : &:r1770_1, ~m? -# 1770| r1770_3(glval<int>) = VariableAddress[w] : -# 1770| r1770_4(int) = Load[w] : &:r1770_3, ~m? -# 1770| r1770_5(int) = Add : r1770_2, r1770_4 -# 1770| r1770_6(glval<int>) = VariableAddress[x] : -# 1770| mu1770_7(int) = Store[x] : &:r1770_6, r1770_5 +# 1817| Block 5 +# 1817| r1817_1(glval<int>) = VariableAddress[x] : +# 1817| r1817_2(int) = Load[x] : &:r1817_1, ~m? +# 1817| r1817_3(glval<int>) = VariableAddress[w] : +# 1817| r1817_4(int) = Load[w] : &:r1817_3, ~m? +# 1817| r1817_5(int) = Add : r1817_2, r1817_4 +# 1817| r1817_6(glval<int>) = VariableAddress[x] : +# 1817| mu1817_7(int) = Store[x] : &:r1817_6, r1817_5 #-----| Goto -> Block 6 -# 1773| Block 6 -# 1773| r1773_1(glval<int>) = VariableAddress[v] : -# 1773| r1773_2(glval<int>) = VariableAddress[x] : -# 1773| r1773_3(int) = Load[x] : &:r1773_2, ~m? -# 1773| mu1773_4(int) = Store[v] : &:r1773_1, r1773_3 -# 1773| r1773_5(glval<int>) = VariableAddress[v2] : -# 1773| r1773_6(glval<int>) = VariableAddress[v] : -# 1773| r1773_7(int) = Load[v] : &:r1773_6, ~m? -# 1773| mu1773_8(int) = Store[v2] : &:r1773_5, r1773_7 -# 1773| r1773_9(glval<int>) = VariableAddress[v2] : -# 1773| r1773_10(int) = Load[v2] : &:r1773_9, ~m? -# 1773| r1773_11(int) = Constant[0] : -# 1773| r1773_12(bool) = CompareNE : r1773_10, r1773_11 -# 1773| r1773_13(bool) = CopyValue : r1773_12 -# 1773| v1773_14(void) = ConditionalBranch : r1773_13 +# 1820| Block 6 +# 1820| r1820_1(glval<int>) = VariableAddress[v] : +# 1820| r1820_2(glval<int>) = VariableAddress[x] : +# 1820| r1820_3(int) = Load[x] : &:r1820_2, ~m? +# 1820| mu1820_4(int) = Store[v] : &:r1820_1, r1820_3 +# 1820| r1820_5(glval<int>) = VariableAddress[v2] : +# 1820| r1820_6(glval<int>) = VariableAddress[v] : +# 1820| r1820_7(int) = Load[v] : &:r1820_6, ~m? +# 1820| mu1820_8(int) = Store[v2] : &:r1820_5, r1820_7 +# 1820| r1820_9(glval<int>) = VariableAddress[v2] : +# 1820| r1820_10(int) = Load[v2] : &:r1820_9, ~m? +# 1820| r1820_11(int) = Constant[0] : +# 1820| r1820_12(bool) = CompareNE : r1820_10, r1820_11 +# 1820| r1820_13(bool) = CopyValue : r1820_12 +# 1820| v1820_14(void) = ConditionalBranch : r1820_13 #-----| False -> Block 8 #-----| True -> Block 7 -# 1774| Block 7 -# 1774| r1774_1(glval<int>) = VariableAddress[x] : -# 1774| r1774_2(int) = Load[x] : &:r1774_1, ~m? -# 1774| r1774_3(glval<int>) = VariableAddress[v] : -# 1774| r1774_4(int) = Load[v] : &:r1774_3, ~m? -# 1774| r1774_5(int) = Add : r1774_2, r1774_4 -# 1774| r1774_6(glval<int>) = VariableAddress[x] : -# 1774| mu1774_7(int) = Store[x] : &:r1774_6, r1774_5 +# 1821| Block 7 +# 1821| r1821_1(glval<int>) = VariableAddress[x] : +# 1821| r1821_2(int) = Load[x] : &:r1821_1, ~m? +# 1821| r1821_3(glval<int>) = VariableAddress[v] : +# 1821| r1821_4(int) = Load[v] : &:r1821_3, ~m? +# 1821| r1821_5(int) = Add : r1821_2, r1821_4 +# 1821| r1821_6(glval<int>) = VariableAddress[x] : +# 1821| mu1821_7(int) = Store[x] : &:r1821_6, r1821_5 #-----| Goto -> Block 8 -# 1777| Block 8 -# 1777| r1777_1(glval<int>) = VariableAddress[z] : -# 1777| r1777_2(glval<int>) = VariableAddress[x] : -# 1777| r1777_3(int) = Load[x] : &:r1777_2, ~m? -# 1777| mu1777_4(int) = Store[z] : &:r1777_1, r1777_3 -# 1778| r1778_1(glval<int>) = VariableAddress[z] : -# 1778| r1778_2(int) = Load[z] : &:r1778_1, ~m? -# 1778| r1778_3(int) = Constant[0] : -# 1778| r1778_4(bool) = CompareNE : r1778_2, r1778_3 -# 1778| v1778_5(void) = ConditionalBranch : r1778_4 +# 1824| Block 8 +# 1824| r1824_1(glval<int>) = VariableAddress[z] : +# 1824| r1824_2(glval<int>) = VariableAddress[x] : +# 1824| r1824_3(int) = Load[x] : &:r1824_2, ~m? +# 1824| mu1824_4(int) = Store[z] : &:r1824_1, r1824_3 +# 1825| r1825_1(glval<int>) = VariableAddress[z] : +# 1825| r1825_2(int) = Load[z] : &:r1825_1, ~m? +# 1825| r1825_3(int) = Constant[0] : +# 1825| r1825_4(bool) = CompareNE : r1825_2, r1825_3 +# 1825| v1825_5(void) = ConditionalBranch : r1825_4 #-----| False -> Block 10 #-----| True -> Block 9 -# 1779| Block 9 -# 1779| r1779_1(glval<int>) = VariableAddress[x] : -# 1779| r1779_2(int) = Load[x] : &:r1779_1, ~m? -# 1779| r1779_3(glval<int>) = VariableAddress[z] : -# 1779| r1779_4(int) = Load[z] : &:r1779_3, ~m? -# 1779| r1779_5(int) = Add : r1779_2, r1779_4 -# 1779| r1779_6(glval<int>) = VariableAddress[x] : -# 1779| mu1779_7(int) = Store[x] : &:r1779_6, r1779_5 +# 1826| Block 9 +# 1826| r1826_1(glval<int>) = VariableAddress[x] : +# 1826| r1826_2(int) = Load[x] : &:r1826_1, ~m? +# 1826| r1826_3(glval<int>) = VariableAddress[z] : +# 1826| r1826_4(int) = Load[z] : &:r1826_3, ~m? +# 1826| r1826_5(int) = Add : r1826_2, r1826_4 +# 1826| r1826_6(glval<int>) = VariableAddress[x] : +# 1826| mu1826_7(int) = Store[x] : &:r1826_6, r1826_5 #-----| Goto -> Block 10 -# 1782| Block 10 -# 1782| r1782_1(glval<int>) = VariableAddress[z2] : -# 1782| r1782_2(glval<int>) = VariableAddress[z] : -# 1782| r1782_3(int) = Load[z] : &:r1782_2, ~m? -# 1782| mu1782_4(int) = Store[z2] : &:r1782_1, r1782_3 -# 1782| r1782_5(glval<int>) = VariableAddress[z2] : -# 1782| r1782_6(int) = Load[z2] : &:r1782_5, ~m? -# 1782| r1782_7(int) = Constant[0] : -# 1782| r1782_8(bool) = CompareNE : r1782_6, r1782_7 -# 1782| r1782_9(bool) = CopyValue : r1782_8 -# 1782| v1782_10(void) = ConditionalBranch : r1782_9 +# 1829| Block 10 +# 1829| r1829_1(glval<int>) = VariableAddress[z2] : +# 1829| r1829_2(glval<int>) = VariableAddress[z] : +# 1829| r1829_3(int) = Load[z] : &:r1829_2, ~m? +# 1829| mu1829_4(int) = Store[z2] : &:r1829_1, r1829_3 +# 1829| r1829_5(glval<int>) = VariableAddress[z2] : +# 1829| r1829_6(int) = Load[z2] : &:r1829_5, ~m? +# 1829| r1829_7(int) = Constant[0] : +# 1829| r1829_8(bool) = CompareNE : r1829_6, r1829_7 +# 1829| r1829_9(bool) = CopyValue : r1829_8 +# 1829| v1829_10(void) = ConditionalBranch : r1829_9 #-----| False -> Block 12 #-----| True -> Block 11 -# 1783| Block 11 -# 1783| r1783_1(glval<int>) = VariableAddress[z2] : -# 1783| r1783_2(int) = Load[z2] : &:r1783_1, ~m? -# 1783| r1783_3(glval<int>) = VariableAddress[x] : -# 1783| r1783_4(int) = Load[x] : &:r1783_3, ~m? -# 1783| r1783_5(int) = Add : r1783_4, r1783_2 -# 1783| mu1783_6(int) = Store[x] : &:r1783_3, r1783_5 +# 1830| Block 11 +# 1830| r1830_1(glval<int>) = VariableAddress[z2] : +# 1830| r1830_2(int) = Load[z2] : &:r1830_1, ~m? +# 1830| r1830_3(glval<int>) = VariableAddress[x] : +# 1830| r1830_4(int) = Load[x] : &:r1830_3, ~m? +# 1830| r1830_5(int) = Add : r1830_4, r1830_2 +# 1830| mu1830_6(int) = Store[x] : &:r1830_3, r1830_5 #-----| Goto -> Block 12 -# 1785| Block 12 -# 1785| v1785_1(void) = NoOp : -# 1759| v1759_6(void) = ReturnVoid : -# 1759| v1759_7(void) = AliasedUse : ~m? -# 1759| v1759_8(void) = ExitFunction : - -# 1787| void switch_initialization(int) -# 1787| Block 0 -# 1787| v1787_1(void) = EnterFunction : -# 1787| mu1787_2(unknown) = AliasedDefinition : -# 1787| mu1787_3(unknown) = InitializeNonLocal : -# 1787| r1787_4(glval<int>) = VariableAddress[x] : -# 1787| mu1787_5(int) = InitializeParameter[x] : &:r1787_4 -# 1788| r1788_1(glval<int>) = VariableAddress[y] : -# 1788| r1788_2(glval<int>) = VariableAddress[x] : -# 1788| r1788_3(int) = Load[x] : &:r1788_2, ~m? -# 1788| mu1788_4(int) = Store[y] : &:r1788_1, r1788_3 -# 1788| r1788_5(glval<int>) = VariableAddress[x] : -# 1788| r1788_6(int) = Load[x] : &:r1788_5, ~m? -# 1788| r1788_7(int) = Constant[1] : -# 1788| r1788_8(int) = Add : r1788_6, r1788_7 -# 1788| v1788_9(void) = Switch : r1788_8 +# 1832| Block 12 +# 1832| v1832_1(void) = NoOp : +# 1806| v1806_6(void) = ReturnVoid : +# 1806| v1806_7(void) = AliasedUse : ~m? +# 1806| v1806_8(void) = ExitFunction : + +# 1834| void switch_initialization(int) +# 1834| Block 0 +# 1834| v1834_1(void) = EnterFunction : +# 1834| mu1834_2(unknown) = AliasedDefinition : +# 1834| mu1834_3(unknown) = InitializeNonLocal : +# 1834| r1834_4(glval<int>) = VariableAddress[x] : +# 1834| mu1834_5(int) = InitializeParameter[x] : &:r1834_4 +# 1835| r1835_1(glval<int>) = VariableAddress[y] : +# 1835| r1835_2(glval<int>) = VariableAddress[x] : +# 1835| r1835_3(int) = Load[x] : &:r1835_2, ~m? +# 1835| mu1835_4(int) = Store[y] : &:r1835_1, r1835_3 +# 1835| r1835_5(glval<int>) = VariableAddress[x] : +# 1835| r1835_6(int) = Load[x] : &:r1835_5, ~m? +# 1835| r1835_7(int) = Constant[1] : +# 1835| r1835_8(int) = Add : r1835_6, r1835_7 +# 1835| v1835_9(void) = Switch : r1835_8 #-----| Default -> Block 1 -# 1789| Block 1 -# 1789| v1789_1(void) = NoOp : -# 1790| r1790_1(glval<int>) = VariableAddress[x] : -# 1790| r1790_2(int) = Load[x] : &:r1790_1, ~m? -# 1790| r1790_3(glval<int>) = VariableAddress[y] : -# 1790| r1790_4(int) = Load[y] : &:r1790_3, ~m? -# 1790| r1790_5(int) = Add : r1790_2, r1790_4 -# 1790| r1790_6(glval<int>) = VariableAddress[x] : -# 1790| mu1790_7(int) = Store[x] : &:r1790_6, r1790_5 -# 1793| r1793_1(glval<int>) = VariableAddress[w] : -# 1793| mu1793_2(int) = Uninitialized[w] : &:r1793_1 -# 1794| r1794_1(glval<int>) = VariableAddress[x] : -# 1794| r1794_2(int) = Load[x] : &:r1794_1, ~m? -# 1794| r1794_3(glval<int>) = VariableAddress[w] : -# 1794| mu1794_4(int) = Store[w] : &:r1794_3, r1794_2 -# 1794| r1794_5(glval<int>) = VariableAddress[x] : -# 1794| r1794_6(int) = Load[x] : &:r1794_5, ~m? -# 1794| r1794_7(int) = Constant[1] : -# 1794| r1794_8(int) = Add : r1794_6, r1794_7 -# 1794| v1794_9(void) = Switch : r1794_8 +# 1836| Block 1 +# 1836| v1836_1(void) = NoOp : +# 1837| r1837_1(glval<int>) = VariableAddress[x] : +# 1837| r1837_2(int) = Load[x] : &:r1837_1, ~m? +# 1837| r1837_3(glval<int>) = VariableAddress[y] : +# 1837| r1837_4(int) = Load[y] : &:r1837_3, ~m? +# 1837| r1837_5(int) = Add : r1837_2, r1837_4 +# 1837| r1837_6(glval<int>) = VariableAddress[x] : +# 1837| mu1837_7(int) = Store[x] : &:r1837_6, r1837_5 +# 1840| r1840_1(glval<int>) = VariableAddress[w] : +# 1840| mu1840_2(int) = Uninitialized[w] : &:r1840_1 +# 1841| r1841_1(glval<int>) = VariableAddress[x] : +# 1841| r1841_2(int) = Load[x] : &:r1841_1, ~m? +# 1841| r1841_3(glval<int>) = VariableAddress[w] : +# 1841| mu1841_4(int) = Store[w] : &:r1841_3, r1841_2 +# 1841| r1841_5(glval<int>) = VariableAddress[x] : +# 1841| r1841_6(int) = Load[x] : &:r1841_5, ~m? +# 1841| r1841_7(int) = Constant[1] : +# 1841| r1841_8(int) = Add : r1841_6, r1841_7 +# 1841| v1841_9(void) = Switch : r1841_8 #-----| Default -> Block 2 -# 1795| Block 2 -# 1795| v1795_1(void) = NoOp : -# 1796| r1796_1(glval<int>) = VariableAddress[x] : -# 1796| r1796_2(int) = Load[x] : &:r1796_1, ~m? -# 1796| r1796_3(glval<int>) = VariableAddress[w] : -# 1796| r1796_4(int) = Load[w] : &:r1796_3, ~m? -# 1796| r1796_5(int) = Add : r1796_2, r1796_4 -# 1796| r1796_6(glval<int>) = VariableAddress[x] : -# 1796| mu1796_7(int) = Store[x] : &:r1796_6, r1796_5 -# 1799| r1799_1(glval<int>) = VariableAddress[x] : -# 1799| r1799_2(int) = Load[x] : &:r1799_1, ~m? -# 1799| r1799_3(glval<int>) = VariableAddress[w] : -# 1799| mu1799_4(int) = Store[w] : &:r1799_3, r1799_2 -# 1799| r1799_5(glval<int>) = VariableAddress[w2] : -# 1799| r1799_6(glval<int>) = VariableAddress[w] : -# 1799| r1799_7(int) = Load[w] : &:r1799_6, ~m? -# 1799| mu1799_8(int) = Store[w2] : &:r1799_5, r1799_7 -# 1799| r1799_9(glval<int>) = VariableAddress[w2] : -# 1799| r1799_10(int) = Load[w2] : &:r1799_9, ~m? -# 1799| r1799_11(int) = CopyValue : r1799_10 -# 1799| v1799_12(void) = Switch : r1799_11 +# 1842| Block 2 +# 1842| v1842_1(void) = NoOp : +# 1843| r1843_1(glval<int>) = VariableAddress[x] : +# 1843| r1843_2(int) = Load[x] : &:r1843_1, ~m? +# 1843| r1843_3(glval<int>) = VariableAddress[w] : +# 1843| r1843_4(int) = Load[w] : &:r1843_3, ~m? +# 1843| r1843_5(int) = Add : r1843_2, r1843_4 +# 1843| r1843_6(glval<int>) = VariableAddress[x] : +# 1843| mu1843_7(int) = Store[x] : &:r1843_6, r1843_5 +# 1846| r1846_1(glval<int>) = VariableAddress[x] : +# 1846| r1846_2(int) = Load[x] : &:r1846_1, ~m? +# 1846| r1846_3(glval<int>) = VariableAddress[w] : +# 1846| mu1846_4(int) = Store[w] : &:r1846_3, r1846_2 +# 1846| r1846_5(glval<int>) = VariableAddress[w2] : +# 1846| r1846_6(glval<int>) = VariableAddress[w] : +# 1846| r1846_7(int) = Load[w] : &:r1846_6, ~m? +# 1846| mu1846_8(int) = Store[w2] : &:r1846_5, r1846_7 +# 1846| r1846_9(glval<int>) = VariableAddress[w2] : +# 1846| r1846_10(int) = Load[w2] : &:r1846_9, ~m? +# 1846| r1846_11(int) = CopyValue : r1846_10 +# 1846| v1846_12(void) = Switch : r1846_11 #-----| Default -> Block 3 -# 1800| Block 3 -# 1800| v1800_1(void) = NoOp : -# 1801| r1801_1(glval<int>) = VariableAddress[x] : -# 1801| r1801_2(int) = Load[x] : &:r1801_1, ~m? -# 1801| r1801_3(glval<int>) = VariableAddress[w] : -# 1801| r1801_4(int) = Load[w] : &:r1801_3, ~m? -# 1801| r1801_5(int) = Add : r1801_2, r1801_4 -# 1801| r1801_6(glval<int>) = VariableAddress[x] : -# 1801| mu1801_7(int) = Store[x] : &:r1801_6, r1801_5 -# 1804| r1804_1(glval<int>) = VariableAddress[v] : -# 1804| r1804_2(glval<int>) = VariableAddress[x] : -# 1804| r1804_3(int) = Load[x] : &:r1804_2, ~m? -# 1804| mu1804_4(int) = Store[v] : &:r1804_1, r1804_3 -# 1804| r1804_5(glval<int>) = VariableAddress[v2] : -# 1804| r1804_6(glval<int>) = VariableAddress[v] : -# 1804| r1804_7(int) = Load[v] : &:r1804_6, ~m? -# 1804| mu1804_8(int) = Store[v2] : &:r1804_5, r1804_7 -# 1804| r1804_9(glval<int>) = VariableAddress[v2] : -# 1804| r1804_10(int) = Load[v2] : &:r1804_9, ~m? -# 1804| r1804_11(int) = CopyValue : r1804_10 -# 1804| v1804_12(void) = Switch : r1804_11 +# 1847| Block 3 +# 1847| v1847_1(void) = NoOp : +# 1848| r1848_1(glval<int>) = VariableAddress[x] : +# 1848| r1848_2(int) = Load[x] : &:r1848_1, ~m? +# 1848| r1848_3(glval<int>) = VariableAddress[w] : +# 1848| r1848_4(int) = Load[w] : &:r1848_3, ~m? +# 1848| r1848_5(int) = Add : r1848_2, r1848_4 +# 1848| r1848_6(glval<int>) = VariableAddress[x] : +# 1848| mu1848_7(int) = Store[x] : &:r1848_6, r1848_5 +# 1851| r1851_1(glval<int>) = VariableAddress[v] : +# 1851| r1851_2(glval<int>) = VariableAddress[x] : +# 1851| r1851_3(int) = Load[x] : &:r1851_2, ~m? +# 1851| mu1851_4(int) = Store[v] : &:r1851_1, r1851_3 +# 1851| r1851_5(glval<int>) = VariableAddress[v2] : +# 1851| r1851_6(glval<int>) = VariableAddress[v] : +# 1851| r1851_7(int) = Load[v] : &:r1851_6, ~m? +# 1851| mu1851_8(int) = Store[v2] : &:r1851_5, r1851_7 +# 1851| r1851_9(glval<int>) = VariableAddress[v2] : +# 1851| r1851_10(int) = Load[v2] : &:r1851_9, ~m? +# 1851| r1851_11(int) = CopyValue : r1851_10 +# 1851| v1851_12(void) = Switch : r1851_11 #-----| Default -> Block 4 -# 1805| Block 4 -# 1805| v1805_1(void) = NoOp : -# 1806| r1806_1(glval<int>) = VariableAddress[x] : -# 1806| r1806_2(int) = Load[x] : &:r1806_1, ~m? -# 1806| r1806_3(glval<int>) = VariableAddress[v] : -# 1806| r1806_4(int) = Load[v] : &:r1806_3, ~m? -# 1806| r1806_5(int) = Add : r1806_2, r1806_4 -# 1806| r1806_6(glval<int>) = VariableAddress[x] : -# 1806| mu1806_7(int) = Store[x] : &:r1806_6, r1806_5 -# 1809| r1809_1(glval<int>) = VariableAddress[z] : -# 1809| r1809_2(glval<int>) = VariableAddress[x] : -# 1809| r1809_3(int) = Load[x] : &:r1809_2, ~m? -# 1809| mu1809_4(int) = Store[z] : &:r1809_1, r1809_3 -# 1810| r1810_1(glval<int>) = VariableAddress[z] : -# 1810| r1810_2(int) = Load[z] : &:r1810_1, ~m? -# 1810| v1810_3(void) = Switch : r1810_2 +# 1852| Block 4 +# 1852| v1852_1(void) = NoOp : +# 1853| r1853_1(glval<int>) = VariableAddress[x] : +# 1853| r1853_2(int) = Load[x] : &:r1853_1, ~m? +# 1853| r1853_3(glval<int>) = VariableAddress[v] : +# 1853| r1853_4(int) = Load[v] : &:r1853_3, ~m? +# 1853| r1853_5(int) = Add : r1853_2, r1853_4 +# 1853| r1853_6(glval<int>) = VariableAddress[x] : +# 1853| mu1853_7(int) = Store[x] : &:r1853_6, r1853_5 +# 1856| r1856_1(glval<int>) = VariableAddress[z] : +# 1856| r1856_2(glval<int>) = VariableAddress[x] : +# 1856| r1856_3(int) = Load[x] : &:r1856_2, ~m? +# 1856| mu1856_4(int) = Store[z] : &:r1856_1, r1856_3 +# 1857| r1857_1(glval<int>) = VariableAddress[z] : +# 1857| r1857_2(int) = Load[z] : &:r1857_1, ~m? +# 1857| v1857_3(void) = Switch : r1857_2 #-----| Default -> Block 5 -# 1811| Block 5 -# 1811| v1811_1(void) = NoOp : -# 1812| r1812_1(glval<int>) = VariableAddress[x] : -# 1812| r1812_2(int) = Load[x] : &:r1812_1, ~m? -# 1812| r1812_3(glval<int>) = VariableAddress[z] : -# 1812| r1812_4(int) = Load[z] : &:r1812_3, ~m? -# 1812| r1812_5(int) = Add : r1812_2, r1812_4 -# 1812| r1812_6(glval<int>) = VariableAddress[x] : -# 1812| mu1812_7(int) = Store[x] : &:r1812_6, r1812_5 -# 1815| r1815_1(glval<int>) = VariableAddress[z2] : -# 1815| r1815_2(glval<int>) = VariableAddress[z] : -# 1815| r1815_3(int) = Load[z] : &:r1815_2, ~m? -# 1815| mu1815_4(int) = Store[z2] : &:r1815_1, r1815_3 -# 1815| r1815_5(glval<int>) = VariableAddress[z2] : -# 1815| r1815_6(int) = Load[z2] : &:r1815_5, ~m? -# 1815| r1815_7(int) = CopyValue : r1815_6 -# 1815| v1815_8(void) = Switch : r1815_7 +# 1858| Block 5 +# 1858| v1858_1(void) = NoOp : +# 1859| r1859_1(glval<int>) = VariableAddress[x] : +# 1859| r1859_2(int) = Load[x] : &:r1859_1, ~m? +# 1859| r1859_3(glval<int>) = VariableAddress[z] : +# 1859| r1859_4(int) = Load[z] : &:r1859_3, ~m? +# 1859| r1859_5(int) = Add : r1859_2, r1859_4 +# 1859| r1859_6(glval<int>) = VariableAddress[x] : +# 1859| mu1859_7(int) = Store[x] : &:r1859_6, r1859_5 +# 1862| r1862_1(glval<int>) = VariableAddress[z2] : +# 1862| r1862_2(glval<int>) = VariableAddress[z] : +# 1862| r1862_3(int) = Load[z] : &:r1862_2, ~m? +# 1862| mu1862_4(int) = Store[z2] : &:r1862_1, r1862_3 +# 1862| r1862_5(glval<int>) = VariableAddress[z2] : +# 1862| r1862_6(int) = Load[z2] : &:r1862_5, ~m? +# 1862| r1862_7(int) = CopyValue : r1862_6 +# 1862| v1862_8(void) = Switch : r1862_7 #-----| Default -> Block 6 -# 1816| Block 6 -# 1816| v1816_1(void) = NoOp : -# 1817| r1817_1(glval<int>) = VariableAddress[z2] : -# 1817| r1817_2(int) = Load[z2] : &:r1817_1, ~m? -# 1817| r1817_3(glval<int>) = VariableAddress[x] : -# 1817| r1817_4(int) = Load[x] : &:r1817_3, ~m? -# 1817| r1817_5(int) = Add : r1817_4, r1817_2 -# 1817| mu1817_6(int) = Store[x] : &:r1817_3, r1817_5 -# 1819| v1819_1(void) = NoOp : -# 1787| v1787_6(void) = ReturnVoid : -# 1787| v1787_7(void) = AliasedUse : ~m? -# 1787| v1787_8(void) = ExitFunction : - -# 1823| int global_2 -# 1823| Block 0 -# 1823| v1823_1(void) = EnterFunction : -# 1823| mu1823_2(unknown) = AliasedDefinition : -# 1823| r1823_3(glval<int>) = VariableAddress[global_2] : -# 1823| r1823_4(int) = Constant[1] : -# 1823| mu1823_5(int) = Store[global_2] : &:r1823_3, r1823_4 -# 1823| v1823_6(void) = ReturnVoid : -# 1823| v1823_7(void) = AliasedUse : ~m? -# 1823| v1823_8(void) = ExitFunction : - -# 1827| constructor_only global_4 -# 1827| Block 0 -# 1827| v1827_1(void) = EnterFunction : -# 1827| mu1827_2(unknown) = AliasedDefinition : -# 1827| r1827_3(glval<constructor_only>) = VariableAddress[global_4] : -# 1827| r1827_4(glval<unknown>) = FunctionAddress[constructor_only] : -# 1827| r1827_5(int) = Constant[1] : -# 1827| v1827_6(void) = Call[constructor_only] : func:r1827_4, this:r1827_3, 0:r1827_5 -# 1827| mu1827_7(unknown) = ^CallSideEffect : ~m? -# 1827| mu1827_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1827_3 -# 1827| v1827_9(void) = ReturnVoid : -# 1827| v1827_10(void) = AliasedUse : ~m? -# 1827| v1827_11(void) = ExitFunction : - -# 1829| constructor_only global_5 -# 1829| Block 0 -# 1829| v1829_1(void) = EnterFunction : -# 1829| mu1829_2(unknown) = AliasedDefinition : -# 1829| r1829_3(glval<constructor_only>) = VariableAddress[global_5] : -# 1829| r1829_4(glval<unknown>) = FunctionAddress[constructor_only] : -# 1829| r1829_5(int) = Constant[2] : -# 1829| v1829_6(void) = Call[constructor_only] : func:r1829_4, this:r1829_3, 0:r1829_5 -# 1829| mu1829_7(unknown) = ^CallSideEffect : ~m? -# 1829| mu1829_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1829_3 -# 1829| v1829_9(void) = ReturnVoid : -# 1829| v1829_10(void) = AliasedUse : ~m? -# 1829| v1829_11(void) = ExitFunction : - -# 1831| char* global_string -# 1831| Block 0 -# 1831| v1831_1(void) = EnterFunction : -# 1831| mu1831_2(unknown) = AliasedDefinition : -# 1831| r1831_3(glval<char *>) = VariableAddress[global_string] : -# 1831| r1831_4(glval<char[14]>) = StringConstant["global string"] : -# 1831| r1831_5(char *) = Convert : r1831_4 -# 1831| r1831_6(char *) = Convert : r1831_5 -# 1831| mu1831_7(char *) = Store[global_string] : &:r1831_3, r1831_6 -# 1831| v1831_8(void) = ReturnVoid : -# 1831| v1831_9(void) = AliasedUse : ~m? -# 1831| v1831_10(void) = ExitFunction : - -# 1833| int global_6 -# 1833| Block 0 -# 1833| v1833_1(void) = EnterFunction : -# 1833| mu1833_2(unknown) = AliasedDefinition : -# 1833| r1833_3(glval<int>) = VariableAddress[global_6] : -# 1833| r1833_4(glval<int>) = VariableAddress[global_2] : -# 1833| r1833_5(int) = Load[global_2] : &:r1833_4, ~m? -# 1833| mu1833_6(int) = Store[global_6] : &:r1833_3, r1833_5 -# 1833| v1833_7(void) = ReturnVoid : -# 1833| v1833_8(void) = AliasedUse : ~m? -# 1833| v1833_9(void) = ExitFunction : - -# 1836| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1836| Block 0 -# 1836| v1836_1(void) = EnterFunction : -# 1836| mu1836_2(unknown) = AliasedDefinition : -# 1836| mu1836_3(unknown) = InitializeNonLocal : -# 1836| r1836_4(glval<unknown>) = VariableAddress[#this] : -# 1836| mu1836_5(glval<A>) = InitializeParameter[#this] : &:r1836_4 -# 1836| r1836_6(glval<A>) = Load[#this] : &:r1836_4, ~m? -# 1836| mu1836_7(A) = InitializeIndirection[#this] : &:r1836_6 +# 1863| Block 6 +# 1863| v1863_1(void) = NoOp : +# 1864| r1864_1(glval<int>) = VariableAddress[z2] : +# 1864| r1864_2(int) = Load[z2] : &:r1864_1, ~m? +# 1864| r1864_3(glval<int>) = VariableAddress[x] : +# 1864| r1864_4(int) = Load[x] : &:r1864_3, ~m? +# 1864| r1864_5(int) = Add : r1864_4, r1864_2 +# 1864| mu1864_6(int) = Store[x] : &:r1864_3, r1864_5 +# 1866| v1866_1(void) = NoOp : +# 1834| v1834_6(void) = ReturnVoid : +# 1834| v1834_7(void) = AliasedUse : ~m? +# 1834| v1834_8(void) = ExitFunction : + +# 1870| int global_2 +# 1870| Block 0 +# 1870| v1870_1(void) = EnterFunction : +# 1870| mu1870_2(unknown) = AliasedDefinition : +# 1870| r1870_3(glval<int>) = VariableAddress[global_2] : +# 1870| r1870_4(int) = Constant[1] : +# 1870| mu1870_5(int) = Store[global_2] : &:r1870_3, r1870_4 +# 1870| v1870_6(void) = ReturnVoid : +# 1870| v1870_7(void) = AliasedUse : ~m? +# 1870| v1870_8(void) = ExitFunction : + +# 1874| constructor_only global_4 +# 1874| Block 0 +# 1874| v1874_1(void) = EnterFunction : +# 1874| mu1874_2(unknown) = AliasedDefinition : +# 1874| r1874_3(glval<constructor_only>) = VariableAddress[global_4] : +# 1874| r1874_4(glval<unknown>) = FunctionAddress[constructor_only] : +# 1874| r1874_5(int) = Constant[1] : +# 1874| v1874_6(void) = Call[constructor_only] : func:r1874_4, this:r1874_3, 0:r1874_5 +# 1874| mu1874_7(unknown) = ^CallSideEffect : ~m? +# 1874| mu1874_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1874_3 +# 1874| v1874_9(void) = ReturnVoid : +# 1874| v1874_10(void) = AliasedUse : ~m? +# 1874| v1874_11(void) = ExitFunction : + +# 1876| constructor_only global_5 +# 1876| Block 0 +# 1876| v1876_1(void) = EnterFunction : +# 1876| mu1876_2(unknown) = AliasedDefinition : +# 1876| r1876_3(glval<constructor_only>) = VariableAddress[global_5] : +# 1876| r1876_4(glval<unknown>) = FunctionAddress[constructor_only] : +# 1876| r1876_5(int) = Constant[2] : +# 1876| v1876_6(void) = Call[constructor_only] : func:r1876_4, this:r1876_3, 0:r1876_5 +# 1876| mu1876_7(unknown) = ^CallSideEffect : ~m? +# 1876| mu1876_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1876_3 +# 1876| v1876_9(void) = ReturnVoid : +# 1876| v1876_10(void) = AliasedUse : ~m? +# 1876| v1876_11(void) = ExitFunction : + +# 1878| char* global_string +# 1878| Block 0 +# 1878| v1878_1(void) = EnterFunction : +# 1878| mu1878_2(unknown) = AliasedDefinition : +# 1878| r1878_3(glval<char *>) = VariableAddress[global_string] : +# 1878| r1878_4(glval<char[14]>) = StringConstant["global string"] : +# 1878| r1878_5(char *) = Convert : r1878_4 +# 1878| r1878_6(char *) = Convert : r1878_5 +# 1878| mu1878_7(char *) = Store[global_string] : &:r1878_3, r1878_6 +# 1878| v1878_8(void) = ReturnVoid : +# 1878| v1878_9(void) = AliasedUse : ~m? +# 1878| v1878_10(void) = ExitFunction : + +# 1880| int global_6 +# 1880| Block 0 +# 1880| v1880_1(void) = EnterFunction : +# 1880| mu1880_2(unknown) = AliasedDefinition : +# 1880| r1880_3(glval<int>) = VariableAddress[global_6] : +# 1880| r1880_4(glval<int>) = VariableAddress[global_2] : +# 1880| r1880_5(int) = Load[global_2] : &:r1880_4, ~m? +# 1880| mu1880_6(int) = Store[global_6] : &:r1880_3, r1880_5 +# 1880| v1880_7(void) = ReturnVoid : +# 1880| v1880_8(void) = AliasedUse : ~m? +# 1880| v1880_9(void) = ExitFunction : + +# 1883| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1883| Block 0 +# 1883| v1883_1(void) = EnterFunction : +# 1883| mu1883_2(unknown) = AliasedDefinition : +# 1883| mu1883_3(unknown) = InitializeNonLocal : +# 1883| r1883_4(glval<unknown>) = VariableAddress[#this] : +# 1883| mu1883_5(glval<A>) = InitializeParameter[#this] : &:r1883_4 +# 1883| r1883_6(glval<A>) = Load[#this] : &:r1883_4, ~m? +# 1883| mu1883_7(A) = InitializeIndirection[#this] : &:r1883_6 #-----| r0_1(glval<A &&>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(A &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(A &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? @@ -10555,896 +10573,896 @@ ir.cpp: #-----| r0_17(glval<A>) = CopyValue : r0_16 #-----| r0_18(A &) = CopyValue : r0_17 #-----| mu0_19(A &) = Store[#return] : &:r0_14, r0_18 -# 1836| v1836_8(void) = ReturnIndirection[#this] : &:r1836_6, ~m? +# 1883| v1883_8(void) = ReturnIndirection[#this] : &:r1883_6, ~m? #-----| v0_20(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1836| r1836_9(glval<A &>) = VariableAddress[#return] : -# 1836| v1836_10(void) = ReturnValue : &:r1836_9, ~m? -# 1836| v1836_11(void) = AliasedUse : ~m? -# 1836| v1836_12(void) = ExitFunction : - -# 1841| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1841| Block 0 -# 1841| v1841_1(void) = EnterFunction : -# 1841| mu1841_2(unknown) = AliasedDefinition : -# 1841| mu1841_3(unknown) = InitializeNonLocal : -# 1841| r1841_4(glval<unknown>) = VariableAddress[#this] : -# 1841| mu1841_5(glval<B>) = InitializeParameter[#this] : &:r1841_4 -# 1841| r1841_6(glval<B>) = Load[#this] : &:r1841_4, ~m? -# 1841| mu1841_7(B) = InitializeIndirection[#this] : &:r1841_6 +# 1883| r1883_9(glval<A &>) = VariableAddress[#return] : +# 1883| v1883_10(void) = ReturnValue : &:r1883_9, ~m? +# 1883| v1883_11(void) = AliasedUse : ~m? +# 1883| v1883_12(void) = ExitFunction : + +# 1888| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1888| Block 0 +# 1888| v1888_1(void) = EnterFunction : +# 1888| mu1888_2(unknown) = AliasedDefinition : +# 1888| mu1888_3(unknown) = InitializeNonLocal : +# 1888| r1888_4(glval<unknown>) = VariableAddress[#this] : +# 1888| mu1888_5(glval<B>) = InitializeParameter[#this] : &:r1888_4 +# 1888| r1888_6(glval<B>) = Load[#this] : &:r1888_4, ~m? +# 1888| mu1888_7(B) = InitializeIndirection[#this] : &:r1888_6 #-----| r0_1(glval<B &&>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(B &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(B &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1841| r1841_8(glval<unknown>) = VariableAddress[#this] : -# 1841| r1841_9(B *) = Load[#this] : &:r1841_8, ~m? -#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1841_9 -# 1841| r1841_10(glval<unknown>) = FunctionAddress[operator=] : -# 1841| r1841_11(glval<B &&>) = VariableAddress[(unnamed parameter 0)] : -# 1841| r1841_12(B &&) = Load[(unnamed parameter 0)] : &:r1841_11, ~m? -#-----| r0_6(glval<B>) = CopyValue : r1841_12 -# 1841| r1841_13(B *) = CopyValue : r0_6 -#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1841_13 -# 1841| r1841_14(glval<A>) = CopyValue : r0_7 -#-----| r0_8(A &) = CopyValue : r1841_14 -# 1841| r1841_15(A &) = Call[operator=] : func:r1841_10, this:r0_5, 0:r0_8 -# 1841| mu1841_16(unknown) = ^CallSideEffect : ~m? +# 1888| r1888_8(glval<unknown>) = VariableAddress[#this] : +# 1888| r1888_9(B *) = Load[#this] : &:r1888_8, ~m? +#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1888_9 +# 1888| r1888_10(glval<unknown>) = FunctionAddress[operator=] : +# 1888| r1888_11(glval<B &&>) = VariableAddress[(unnamed parameter 0)] : +# 1888| r1888_12(B &&) = Load[(unnamed parameter 0)] : &:r1888_11, ~m? +#-----| r0_6(glval<B>) = CopyValue : r1888_12 +# 1888| r1888_13(B *) = CopyValue : r0_6 +#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1888_13 +# 1888| r1888_14(glval<A>) = CopyValue : r0_7 +#-----| r0_8(A &) = CopyValue : r1888_14 +# 1888| r1888_15(A &) = Call[operator=] : func:r1888_10, this:r0_5, 0:r0_8 +# 1888| mu1888_16(unknown) = ^CallSideEffect : ~m? #-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? #-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_8, ~m? #-----| mu0_11(A) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 #-----| mu0_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_8 -#-----| r0_13(glval<A>) = CopyValue : r1841_15 +#-----| r0_13(glval<A>) = CopyValue : r1888_15 #-----| r0_14(glval<B &>) = VariableAddress[#return] : #-----| r0_15(glval<unknown>) = VariableAddress[#this] : #-----| r0_16(B *) = Load[#this] : &:r0_15, ~m? #-----| r0_17(glval<B>) = CopyValue : r0_16 #-----| r0_18(B &) = CopyValue : r0_17 #-----| mu0_19(B &) = Store[#return] : &:r0_14, r0_18 -# 1841| v1841_17(void) = ReturnIndirection[#this] : &:r1841_6, ~m? +# 1888| v1888_17(void) = ReturnIndirection[#this] : &:r1888_6, ~m? #-----| v0_20(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1841| r1841_18(glval<B &>) = VariableAddress[#return] : -# 1841| v1841_19(void) = ReturnValue : &:r1841_18, ~m? -# 1841| v1841_20(void) = AliasedUse : ~m? -# 1841| v1841_21(void) = ExitFunction : - -# 1845| void block_assignment::foo() -# 1845| Block 0 -# 1845| v1845_1(void) = EnterFunction : -# 1845| mu1845_2(unknown) = AliasedDefinition : -# 1845| mu1845_3(unknown) = InitializeNonLocal : -# 1846| r1846_1(glval<B>) = VariableAddress[v] : -# 1846| mu1846_2(B) = Uninitialized[v] : &:r1846_1 -# 1846| r1846_3(glval<unknown>) = FunctionAddress[B] : -# 1846| r1846_4(A *) = Constant[0] : -# 1846| v1846_5(void) = Call[B] : func:r1846_3, this:r1846_1, 0:r1846_4 -# 1846| mu1846_6(unknown) = ^CallSideEffect : ~m? -# 1846| v1846_7(void) = ^BufferReadSideEffect[0] : &:r1846_4, ~m? -# 1846| mu1846_8(B) = ^IndirectMayWriteSideEffect[-1] : &:r1846_1 -# 1846| mu1846_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1846_4 -# 1847| r1847_1(glval<B>) = VariableAddress[v] : -# 1847| r1847_2(glval<unknown>) = FunctionAddress[operator=] : -# 1847| r1847_3(glval<B>) = VariableAddress[#temp1847:13] : -# 1847| mu1847_4(B) = Uninitialized[#temp1847:13] : &:r1847_3 -# 1847| r1847_5(glval<unknown>) = FunctionAddress[B] : -# 1847| r1847_6(A *) = Constant[0] : -# 1847| v1847_7(void) = Call[B] : func:r1847_5, this:r1847_3, 0:r1847_6 -# 1847| mu1847_8(unknown) = ^CallSideEffect : ~m? -# 1847| v1847_9(void) = ^BufferReadSideEffect[0] : &:r1847_6, ~m? -# 1847| mu1847_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_3 -# 1847| mu1847_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_6 -# 1847| r1847_12(B &) = CopyValue : r1847_3 -# 1847| r1847_13(B &) = Call[operator=] : func:r1847_2, this:r1847_1, 0:r1847_12 -# 1847| mu1847_14(unknown) = ^CallSideEffect : ~m? -# 1847| v1847_15(void) = ^IndirectReadSideEffect[-1] : &:r1847_1, ~m? -# 1847| v1847_16(void) = ^BufferReadSideEffect[0] : &:r1847_12, ~m? -# 1847| mu1847_17(B) = ^IndirectMayWriteSideEffect[-1] : &:r1847_1 -# 1847| mu1847_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r1847_12 -# 1847| r1847_19(glval<B>) = CopyValue : r1847_13 -# 1848| v1848_1(void) = NoOp : -# 1845| v1845_4(void) = ReturnVoid : -# 1845| v1845_5(void) = AliasedUse : ~m? -# 1845| v1845_6(void) = ExitFunction : - -# 1851| void magicvars() -# 1851| Block 0 -# 1851| v1851_1(void) = EnterFunction : -# 1851| mu1851_2(unknown) = AliasedDefinition : -# 1851| mu1851_3(unknown) = InitializeNonLocal : -# 1852| r1852_1(glval<char *>) = VariableAddress[pf] : -# 1852| r1852_2(glval<char[17]>) = VariableAddress[__PRETTY_FUNCTION__] : -# 1852| r1852_3(char *) = Convert : r1852_2 -# 1852| mu1852_4(char *) = Store[pf] : &:r1852_1, r1852_3 -# 1853| r1853_1(glval<char *>) = VariableAddress[strfunc] : -# 1853| r1853_2(glval<char[10]>) = VariableAddress[__func__] : -# 1853| r1853_3(char *) = Convert : r1853_2 -# 1853| mu1853_4(char *) = Store[strfunc] : &:r1853_1, r1853_3 -# 1854| v1854_1(void) = NoOp : -# 1851| v1851_4(void) = ReturnVoid : -# 1851| v1851_5(void) = AliasedUse : ~m? -# 1851| v1851_6(void) = ExitFunction : - -# 1864| void* missing_declaration_entries::Bar1<int>::missing_type_decl_entry(missing_declaration_entries::Bar1<int>::pointer) -# 1864| Block 0 -# 1864| v1864_1(void) = EnterFunction : -# 1864| mu1864_2(unknown) = AliasedDefinition : -# 1864| mu1864_3(unknown) = InitializeNonLocal : -# 1864| r1864_4(glval<unknown>) = VariableAddress[#this] : -# 1864| mu1864_5(glval<Bar1<int>>) = InitializeParameter[#this] : &:r1864_4 -# 1864| r1864_6(glval<Bar1<int>>) = Load[#this] : &:r1864_4, ~m? -# 1864| mu1864_7(Bar1<int>) = InitializeIndirection[#this] : &:r1864_6 -# 1864| r1864_8(glval<S *>) = VariableAddress[p] : -# 1864| mu1864_9(S *) = InitializeParameter[p] : &:r1864_8 -# 1864| r1864_10(S *) = Load[p] : &:r1864_8, ~m? -# 1864| mu1864_11(unknown) = InitializeIndirection[p] : &:r1864_10 -# 1866| r1866_1(glval<void *>) = VariableAddress[#return] : -# 1866| r1866_2(glval<S *>) = VariableAddress[p] : -# 1866| r1866_3(S *) = Load[p] : &:r1866_2, ~m? -# 1866| r1866_4(void *) = Convert : r1866_3 -# 1866| mu1866_5(void *) = Store[#return] : &:r1866_1, r1866_4 -# 1864| v1864_12(void) = ReturnIndirection[#this] : &:r1864_6, ~m? -# 1864| v1864_13(void) = ReturnIndirection[p] : &:r1864_10, ~m? -# 1864| r1864_14(glval<void *>) = VariableAddress[#return] : -# 1864| v1864_15(void) = ReturnValue : &:r1864_14, ~m? -# 1864| v1864_16(void) = AliasedUse : ~m? -# 1864| v1864_17(void) = ExitFunction : - -# 1870| void missing_declaration_entries::test1() -# 1870| Block 0 -# 1870| v1870_1(void) = EnterFunction : -# 1870| mu1870_2(unknown) = AliasedDefinition : -# 1870| mu1870_3(unknown) = InitializeNonLocal : -# 1871| r1871_1(glval<Bar1<int>>) = VariableAddress[b] : -# 1871| mu1871_2(Bar1<int>) = Uninitialized[b] : &:r1871_1 -# 1872| r1872_1(glval<Bar1<int>>) = VariableAddress[b] : -# 1872| r1872_2(glval<unknown>) = FunctionAddress[missing_type_decl_entry] : -# 1872| r1872_3(S *) = Constant[0] : -# 1872| r1872_4(void *) = Call[missing_type_decl_entry] : func:r1872_2, this:r1872_1, 0:r1872_3 -# 1872| mu1872_5(unknown) = ^CallSideEffect : ~m? -# 1872| v1872_6(void) = ^IndirectReadSideEffect[-1] : &:r1872_1, ~m? -# 1872| v1872_7(void) = ^BufferReadSideEffect[0] : &:r1872_3, ~m? -# 1872| mu1872_8(Bar1<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1872_1 -# 1872| mu1872_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1872_3 -# 1873| v1873_1(void) = NoOp : -# 1870| v1870_4(void) = ReturnVoid : -# 1870| v1870_5(void) = AliasedUse : ~m? -# 1870| v1870_6(void) = ExitFunction : - -# 1877| int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() -# 1877| Block 0 -# 1877| v1877_1(void) = EnterFunction : -# 1877| mu1877_2(unknown) = AliasedDefinition : -# 1877| mu1877_3(unknown) = InitializeNonLocal : -# 1877| r1877_4(glval<unknown>) = VariableAddress[#this] : -# 1877| mu1877_5(glval<Bar2<int>>) = InitializeParameter[#this] : &:r1877_4 -# 1877| r1877_6(glval<Bar2<int>>) = Load[#this] : &:r1877_4, ~m? -# 1877| mu1877_7(Bar2<int>) = InitializeIndirection[#this] : &:r1877_6 -# 1878| r1878_1(glval<int[10]>) = VariableAddress[x] : -# 1878| mu1878_2(int[10]) = Uninitialized[x] : &:r1878_1 -# 1878| r1878_3(glval<int[10]>) = VariableAddress[y] : -# 1878| mu1878_4(int[10]) = Uninitialized[y] : &:r1878_3 -# 1879| r1879_1(int) = Constant[10] : -# 1879| r1879_2(glval<int[10]>) = VariableAddress[x] : -# 1879| r1879_3(int *) = Convert : r1879_2 -# 1879| r1879_4(glval<int>) = CopyValue : r1879_3 -# 1879| mu1879_5(int) = Store[?] : &:r1879_4, r1879_1 -# 1880| r1880_1(int) = Constant[10] : -# 1880| r1880_2(glval<int[10]>) = VariableAddress[y] : -# 1880| r1880_3(int *) = Convert : r1880_2 -# 1880| r1880_4(glval<int>) = CopyValue : r1880_3 -# 1880| mu1880_5(int) = Store[?] : &:r1880_4, r1880_1 -# 1881| r1881_1(glval<int>) = VariableAddress[#return] : -# 1881| r1881_2(glval<int[10]>) = VariableAddress[x] : -# 1881| r1881_3(int *) = Convert : r1881_2 -# 1881| r1881_4(int) = Load[?] : &:r1881_3, ~m? -# 1881| r1881_5(glval<int[10]>) = VariableAddress[y] : -# 1881| r1881_6(int *) = Convert : r1881_5 -# 1881| r1881_7(int) = Load[?] : &:r1881_6, ~m? -# 1881| r1881_8(int) = Add : r1881_4, r1881_7 -# 1881| mu1881_9(int) = Store[#return] : &:r1881_1, r1881_8 -# 1877| v1877_8(void) = ReturnIndirection[#this] : &:r1877_6, ~m? -# 1877| r1877_9(glval<int>) = VariableAddress[#return] : -# 1877| v1877_10(void) = ReturnValue : &:r1877_9, ~m? -# 1877| v1877_11(void) = AliasedUse : ~m? -# 1877| v1877_12(void) = ExitFunction : - -# 1885| void missing_declaration_entries::test2() -# 1885| Block 0 -# 1885| v1885_1(void) = EnterFunction : -# 1885| mu1885_2(unknown) = AliasedDefinition : -# 1885| mu1885_3(unknown) = InitializeNonLocal : -# 1886| r1886_1(glval<Bar2<int>>) = VariableAddress[b] : -# 1886| mu1886_2(Bar2<int>) = Uninitialized[b] : &:r1886_1 -# 1887| r1887_1(glval<Bar2<int>>) = VariableAddress[b] : -# 1887| r1887_2(glval<unknown>) = FunctionAddress[two_missing_variable_declaration_entries] : -# 1887| r1887_3(int) = Call[two_missing_variable_declaration_entries] : func:r1887_2, this:r1887_1 -# 1887| mu1887_4(unknown) = ^CallSideEffect : ~m? -# 1887| v1887_5(void) = ^IndirectReadSideEffect[-1] : &:r1887_1, ~m? -# 1887| mu1887_6(Bar2<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1887_1 -# 1888| v1888_1(void) = NoOp : -# 1885| v1885_4(void) = ReturnVoid : -# 1885| v1885_5(void) = AliasedUse : ~m? -# 1885| v1885_6(void) = ExitFunction : - -# 1891| char global_template<char> -# 1891| Block 0 -# 1891| v1891_1(void) = EnterFunction : -# 1891| mu1891_2(unknown) = AliasedDefinition : -# 1891| r1891_3(glval<char>) = VariableAddress[global_template] : -# 1891| r1891_4(char) = Constant[42] : -# 1891| mu1891_5(char) = Store[global_template] : &:r1891_3, r1891_4 -# 1891| v1891_6(void) = ReturnVoid : -# 1891| v1891_7(void) = AliasedUse : ~m? -# 1891| v1891_8(void) = ExitFunction : - -# 1891| int global_template<int> -# 1891| Block 0 -# 1891| v1891_1(void) = EnterFunction : -# 1891| mu1891_2(unknown) = AliasedDefinition : -# 1891| r1891_3(glval<int>) = VariableAddress[global_template] : -# 1891| r1891_4(int) = Constant[42] : -# 1891| mu1891_5(int) = Store[global_template] : &:r1891_3, r1891_4 -# 1891| v1891_6(void) = ReturnVoid : -# 1891| v1891_7(void) = AliasedUse : ~m? -# 1891| v1891_8(void) = ExitFunction : - -# 1893| int test_global_template_int() -# 1893| Block 0 -# 1893| v1893_1(void) = EnterFunction : -# 1893| mu1893_2(unknown) = AliasedDefinition : -# 1893| mu1893_3(unknown) = InitializeNonLocal : -# 1894| r1894_1(glval<int>) = VariableAddress[local_int] : -# 1894| r1894_2(glval<int>) = VariableAddress[global_template] : -# 1894| r1894_3(int) = Load[global_template] : &:r1894_2, ~m? -# 1894| mu1894_4(int) = Store[local_int] : &:r1894_1, r1894_3 -# 1895| r1895_1(glval<char>) = VariableAddress[local_char] : -# 1895| r1895_2(glval<char>) = VariableAddress[global_template] : -# 1895| r1895_3(char) = Load[global_template] : &:r1895_2, ~m? -# 1895| mu1895_4(char) = Store[local_char] : &:r1895_1, r1895_3 -# 1896| r1896_1(glval<int>) = VariableAddress[#return] : -# 1896| r1896_2(glval<int>) = VariableAddress[local_int] : -# 1896| r1896_3(int) = Load[local_int] : &:r1896_2, ~m? -# 1896| r1896_4(glval<char>) = VariableAddress[local_char] : -# 1896| r1896_5(char) = Load[local_char] : &:r1896_4, ~m? -# 1896| r1896_6(int) = Convert : r1896_5 -# 1896| r1896_7(int) = Add : r1896_3, r1896_6 -# 1896| mu1896_8(int) = Store[#return] : &:r1896_1, r1896_7 -# 1893| r1893_4(glval<int>) = VariableAddress[#return] : -# 1893| v1893_5(void) = ReturnValue : &:r1893_4, ~m? -# 1893| v1893_6(void) = AliasedUse : ~m? -# 1893| v1893_7(void) = ExitFunction : - -# 1901| int noreturnTest(int) -# 1901| Block 0 -# 1901| v1901_1(void) = EnterFunction : -# 1901| mu1901_2(unknown) = AliasedDefinition : -# 1901| mu1901_3(unknown) = InitializeNonLocal : -# 1901| r1901_4(glval<int>) = VariableAddress[x] : -# 1901| mu1901_5(int) = InitializeParameter[x] : &:r1901_4 -# 1902| r1902_1(glval<int>) = VariableAddress[x] : -# 1902| r1902_2(int) = Load[x] : &:r1902_1, ~m? -# 1902| r1902_3(int) = Constant[10] : -# 1902| r1902_4(bool) = CompareLT : r1902_2, r1902_3 -# 1902| v1902_5(void) = ConditionalBranch : r1902_4 +# 1888| r1888_18(glval<B &>) = VariableAddress[#return] : +# 1888| v1888_19(void) = ReturnValue : &:r1888_18, ~m? +# 1888| v1888_20(void) = AliasedUse : ~m? +# 1888| v1888_21(void) = ExitFunction : + +# 1892| void block_assignment::foo() +# 1892| Block 0 +# 1892| v1892_1(void) = EnterFunction : +# 1892| mu1892_2(unknown) = AliasedDefinition : +# 1892| mu1892_3(unknown) = InitializeNonLocal : +# 1893| r1893_1(glval<B>) = VariableAddress[v] : +# 1893| mu1893_2(B) = Uninitialized[v] : &:r1893_1 +# 1893| r1893_3(glval<unknown>) = FunctionAddress[B] : +# 1893| r1893_4(A *) = Constant[0] : +# 1893| v1893_5(void) = Call[B] : func:r1893_3, this:r1893_1, 0:r1893_4 +# 1893| mu1893_6(unknown) = ^CallSideEffect : ~m? +# 1893| v1893_7(void) = ^BufferReadSideEffect[0] : &:r1893_4, ~m? +# 1893| mu1893_8(B) = ^IndirectMayWriteSideEffect[-1] : &:r1893_1 +# 1893| mu1893_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1893_4 +# 1894| r1894_1(glval<B>) = VariableAddress[v] : +# 1894| r1894_2(glval<unknown>) = FunctionAddress[operator=] : +# 1894| r1894_3(glval<B>) = VariableAddress[#temp1894:13] : +# 1894| mu1894_4(B) = Uninitialized[#temp1894:13] : &:r1894_3 +# 1894| r1894_5(glval<unknown>) = FunctionAddress[B] : +# 1894| r1894_6(A *) = Constant[0] : +# 1894| v1894_7(void) = Call[B] : func:r1894_5, this:r1894_3, 0:r1894_6 +# 1894| mu1894_8(unknown) = ^CallSideEffect : ~m? +# 1894| v1894_9(void) = ^BufferReadSideEffect[0] : &:r1894_6, ~m? +# 1894| mu1894_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_3 +# 1894| mu1894_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_6 +# 1894| r1894_12(B &) = CopyValue : r1894_3 +# 1894| r1894_13(B &) = Call[operator=] : func:r1894_2, this:r1894_1, 0:r1894_12 +# 1894| mu1894_14(unknown) = ^CallSideEffect : ~m? +# 1894| v1894_15(void) = ^IndirectReadSideEffect[-1] : &:r1894_1, ~m? +# 1894| v1894_16(void) = ^BufferReadSideEffect[0] : &:r1894_12, ~m? +# 1894| mu1894_17(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_1 +# 1894| mu1894_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_12 +# 1894| r1894_19(glval<B>) = CopyValue : r1894_13 +# 1895| v1895_1(void) = NoOp : +# 1892| v1892_4(void) = ReturnVoid : +# 1892| v1892_5(void) = AliasedUse : ~m? +# 1892| v1892_6(void) = ExitFunction : + +# 1898| void magicvars() +# 1898| Block 0 +# 1898| v1898_1(void) = EnterFunction : +# 1898| mu1898_2(unknown) = AliasedDefinition : +# 1898| mu1898_3(unknown) = InitializeNonLocal : +# 1899| r1899_1(glval<char *>) = VariableAddress[pf] : +# 1899| r1899_2(glval<char[17]>) = VariableAddress[__PRETTY_FUNCTION__] : +# 1899| r1899_3(char *) = Convert : r1899_2 +# 1899| mu1899_4(char *) = Store[pf] : &:r1899_1, r1899_3 +# 1900| r1900_1(glval<char *>) = VariableAddress[strfunc] : +# 1900| r1900_2(glval<char[10]>) = VariableAddress[__func__] : +# 1900| r1900_3(char *) = Convert : r1900_2 +# 1900| mu1900_4(char *) = Store[strfunc] : &:r1900_1, r1900_3 +# 1901| v1901_1(void) = NoOp : +# 1898| v1898_4(void) = ReturnVoid : +# 1898| v1898_5(void) = AliasedUse : ~m? +# 1898| v1898_6(void) = ExitFunction : + +# 1911| void* missing_declaration_entries::Bar1<int>::missing_type_decl_entry(missing_declaration_entries::Bar1<int>::pointer) +# 1911| Block 0 +# 1911| v1911_1(void) = EnterFunction : +# 1911| mu1911_2(unknown) = AliasedDefinition : +# 1911| mu1911_3(unknown) = InitializeNonLocal : +# 1911| r1911_4(glval<unknown>) = VariableAddress[#this] : +# 1911| mu1911_5(glval<Bar1<int>>) = InitializeParameter[#this] : &:r1911_4 +# 1911| r1911_6(glval<Bar1<int>>) = Load[#this] : &:r1911_4, ~m? +# 1911| mu1911_7(Bar1<int>) = InitializeIndirection[#this] : &:r1911_6 +# 1911| r1911_8(glval<S *>) = VariableAddress[p] : +# 1911| mu1911_9(S *) = InitializeParameter[p] : &:r1911_8 +# 1911| r1911_10(S *) = Load[p] : &:r1911_8, ~m? +# 1911| mu1911_11(unknown) = InitializeIndirection[p] : &:r1911_10 +# 1913| r1913_1(glval<void *>) = VariableAddress[#return] : +# 1913| r1913_2(glval<S *>) = VariableAddress[p] : +# 1913| r1913_3(S *) = Load[p] : &:r1913_2, ~m? +# 1913| r1913_4(void *) = Convert : r1913_3 +# 1913| mu1913_5(void *) = Store[#return] : &:r1913_1, r1913_4 +# 1911| v1911_12(void) = ReturnIndirection[#this] : &:r1911_6, ~m? +# 1911| v1911_13(void) = ReturnIndirection[p] : &:r1911_10, ~m? +# 1911| r1911_14(glval<void *>) = VariableAddress[#return] : +# 1911| v1911_15(void) = ReturnValue : &:r1911_14, ~m? +# 1911| v1911_16(void) = AliasedUse : ~m? +# 1911| v1911_17(void) = ExitFunction : + +# 1917| void missing_declaration_entries::test1() +# 1917| Block 0 +# 1917| v1917_1(void) = EnterFunction : +# 1917| mu1917_2(unknown) = AliasedDefinition : +# 1917| mu1917_3(unknown) = InitializeNonLocal : +# 1918| r1918_1(glval<Bar1<int>>) = VariableAddress[b] : +# 1918| mu1918_2(Bar1<int>) = Uninitialized[b] : &:r1918_1 +# 1919| r1919_1(glval<Bar1<int>>) = VariableAddress[b] : +# 1919| r1919_2(glval<unknown>) = FunctionAddress[missing_type_decl_entry] : +# 1919| r1919_3(S *) = Constant[0] : +# 1919| r1919_4(void *) = Call[missing_type_decl_entry] : func:r1919_2, this:r1919_1, 0:r1919_3 +# 1919| mu1919_5(unknown) = ^CallSideEffect : ~m? +# 1919| v1919_6(void) = ^IndirectReadSideEffect[-1] : &:r1919_1, ~m? +# 1919| v1919_7(void) = ^BufferReadSideEffect[0] : &:r1919_3, ~m? +# 1919| mu1919_8(Bar1<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 +# 1919| mu1919_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1919_3 +# 1920| v1920_1(void) = NoOp : +# 1917| v1917_4(void) = ReturnVoid : +# 1917| v1917_5(void) = AliasedUse : ~m? +# 1917| v1917_6(void) = ExitFunction : + +# 1924| int missing_declaration_entries::Bar2<int>::two_missing_variable_declaration_entries() +# 1924| Block 0 +# 1924| v1924_1(void) = EnterFunction : +# 1924| mu1924_2(unknown) = AliasedDefinition : +# 1924| mu1924_3(unknown) = InitializeNonLocal : +# 1924| r1924_4(glval<unknown>) = VariableAddress[#this] : +# 1924| mu1924_5(glval<Bar2<int>>) = InitializeParameter[#this] : &:r1924_4 +# 1924| r1924_6(glval<Bar2<int>>) = Load[#this] : &:r1924_4, ~m? +# 1924| mu1924_7(Bar2<int>) = InitializeIndirection[#this] : &:r1924_6 +# 1925| r1925_1(glval<int[10]>) = VariableAddress[x] : +# 1925| mu1925_2(int[10]) = Uninitialized[x] : &:r1925_1 +# 1925| r1925_3(glval<int[10]>) = VariableAddress[y] : +# 1925| mu1925_4(int[10]) = Uninitialized[y] : &:r1925_3 +# 1926| r1926_1(int) = Constant[10] : +# 1926| r1926_2(glval<int[10]>) = VariableAddress[x] : +# 1926| r1926_3(int *) = Convert : r1926_2 +# 1926| r1926_4(glval<int>) = CopyValue : r1926_3 +# 1926| mu1926_5(int) = Store[?] : &:r1926_4, r1926_1 +# 1927| r1927_1(int) = Constant[10] : +# 1927| r1927_2(glval<int[10]>) = VariableAddress[y] : +# 1927| r1927_3(int *) = Convert : r1927_2 +# 1927| r1927_4(glval<int>) = CopyValue : r1927_3 +# 1927| mu1927_5(int) = Store[?] : &:r1927_4, r1927_1 +# 1928| r1928_1(glval<int>) = VariableAddress[#return] : +# 1928| r1928_2(glval<int[10]>) = VariableAddress[x] : +# 1928| r1928_3(int *) = Convert : r1928_2 +# 1928| r1928_4(int) = Load[?] : &:r1928_3, ~m? +# 1928| r1928_5(glval<int[10]>) = VariableAddress[y] : +# 1928| r1928_6(int *) = Convert : r1928_5 +# 1928| r1928_7(int) = Load[?] : &:r1928_6, ~m? +# 1928| r1928_8(int) = Add : r1928_4, r1928_7 +# 1928| mu1928_9(int) = Store[#return] : &:r1928_1, r1928_8 +# 1924| v1924_8(void) = ReturnIndirection[#this] : &:r1924_6, ~m? +# 1924| r1924_9(glval<int>) = VariableAddress[#return] : +# 1924| v1924_10(void) = ReturnValue : &:r1924_9, ~m? +# 1924| v1924_11(void) = AliasedUse : ~m? +# 1924| v1924_12(void) = ExitFunction : + +# 1932| void missing_declaration_entries::test2() +# 1932| Block 0 +# 1932| v1932_1(void) = EnterFunction : +# 1932| mu1932_2(unknown) = AliasedDefinition : +# 1932| mu1932_3(unknown) = InitializeNonLocal : +# 1933| r1933_1(glval<Bar2<int>>) = VariableAddress[b] : +# 1933| mu1933_2(Bar2<int>) = Uninitialized[b] : &:r1933_1 +# 1934| r1934_1(glval<Bar2<int>>) = VariableAddress[b] : +# 1934| r1934_2(glval<unknown>) = FunctionAddress[two_missing_variable_declaration_entries] : +# 1934| r1934_3(int) = Call[two_missing_variable_declaration_entries] : func:r1934_2, this:r1934_1 +# 1934| mu1934_4(unknown) = ^CallSideEffect : ~m? +# 1934| v1934_5(void) = ^IndirectReadSideEffect[-1] : &:r1934_1, ~m? +# 1934| mu1934_6(Bar2<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1934_1 +# 1935| v1935_1(void) = NoOp : +# 1932| v1932_4(void) = ReturnVoid : +# 1932| v1932_5(void) = AliasedUse : ~m? +# 1932| v1932_6(void) = ExitFunction : + +# 1938| char global_template<char> +# 1938| Block 0 +# 1938| v1938_1(void) = EnterFunction : +# 1938| mu1938_2(unknown) = AliasedDefinition : +# 1938| r1938_3(glval<char>) = VariableAddress[global_template] : +# 1938| r1938_4(char) = Constant[42] : +# 1938| mu1938_5(char) = Store[global_template] : &:r1938_3, r1938_4 +# 1938| v1938_6(void) = ReturnVoid : +# 1938| v1938_7(void) = AliasedUse : ~m? +# 1938| v1938_8(void) = ExitFunction : + +# 1938| int global_template<int> +# 1938| Block 0 +# 1938| v1938_1(void) = EnterFunction : +# 1938| mu1938_2(unknown) = AliasedDefinition : +# 1938| r1938_3(glval<int>) = VariableAddress[global_template] : +# 1938| r1938_4(int) = Constant[42] : +# 1938| mu1938_5(int) = Store[global_template] : &:r1938_3, r1938_4 +# 1938| v1938_6(void) = ReturnVoid : +# 1938| v1938_7(void) = AliasedUse : ~m? +# 1938| v1938_8(void) = ExitFunction : + +# 1940| int test_global_template_int() +# 1940| Block 0 +# 1940| v1940_1(void) = EnterFunction : +# 1940| mu1940_2(unknown) = AliasedDefinition : +# 1940| mu1940_3(unknown) = InitializeNonLocal : +# 1941| r1941_1(glval<int>) = VariableAddress[local_int] : +# 1941| r1941_2(glval<int>) = VariableAddress[global_template] : +# 1941| r1941_3(int) = Load[global_template] : &:r1941_2, ~m? +# 1941| mu1941_4(int) = Store[local_int] : &:r1941_1, r1941_3 +# 1942| r1942_1(glval<char>) = VariableAddress[local_char] : +# 1942| r1942_2(glval<char>) = VariableAddress[global_template] : +# 1942| r1942_3(char) = Load[global_template] : &:r1942_2, ~m? +# 1942| mu1942_4(char) = Store[local_char] : &:r1942_1, r1942_3 +# 1943| r1943_1(glval<int>) = VariableAddress[#return] : +# 1943| r1943_2(glval<int>) = VariableAddress[local_int] : +# 1943| r1943_3(int) = Load[local_int] : &:r1943_2, ~m? +# 1943| r1943_4(glval<char>) = VariableAddress[local_char] : +# 1943| r1943_5(char) = Load[local_char] : &:r1943_4, ~m? +# 1943| r1943_6(int) = Convert : r1943_5 +# 1943| r1943_7(int) = Add : r1943_3, r1943_6 +# 1943| mu1943_8(int) = Store[#return] : &:r1943_1, r1943_7 +# 1940| r1940_4(glval<int>) = VariableAddress[#return] : +# 1940| v1940_5(void) = ReturnValue : &:r1940_4, ~m? +# 1940| v1940_6(void) = AliasedUse : ~m? +# 1940| v1940_7(void) = ExitFunction : + +# 1948| int noreturnTest(int) +# 1948| Block 0 +# 1948| v1948_1(void) = EnterFunction : +# 1948| mu1948_2(unknown) = AliasedDefinition : +# 1948| mu1948_3(unknown) = InitializeNonLocal : +# 1948| r1948_4(glval<int>) = VariableAddress[x] : +# 1948| mu1948_5(int) = InitializeParameter[x] : &:r1948_4 +# 1949| r1949_1(glval<int>) = VariableAddress[x] : +# 1949| r1949_2(int) = Load[x] : &:r1949_1, ~m? +# 1949| r1949_3(int) = Constant[10] : +# 1949| r1949_4(bool) = CompareLT : r1949_2, r1949_3 +# 1949| v1949_5(void) = ConditionalBranch : r1949_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 1901| Block 1 -# 1901| r1901_6(glval<int>) = VariableAddress[#return] : -# 1901| v1901_7(void) = ReturnValue : &:r1901_6, ~m? -# 1901| v1901_8(void) = AliasedUse : ~m? -# 1901| v1901_9(void) = ExitFunction : - -# 1903| Block 2 -# 1903| r1903_1(glval<int>) = VariableAddress[#return] : -# 1903| r1903_2(glval<int>) = VariableAddress[x] : -# 1903| r1903_3(int) = Load[x] : &:r1903_2, ~m? -# 1903| mu1903_4(int) = Store[#return] : &:r1903_1, r1903_3 +# 1948| Block 1 +# 1948| r1948_6(glval<int>) = VariableAddress[#return] : +# 1948| v1948_7(void) = ReturnValue : &:r1948_6, ~m? +# 1948| v1948_8(void) = AliasedUse : ~m? +# 1948| v1948_9(void) = ExitFunction : + +# 1950| Block 2 +# 1950| r1950_1(glval<int>) = VariableAddress[#return] : +# 1950| r1950_2(glval<int>) = VariableAddress[x] : +# 1950| r1950_3(int) = Load[x] : &:r1950_2, ~m? +# 1950| mu1950_4(int) = Store[#return] : &:r1950_1, r1950_3 #-----| Goto -> Block 1 -# 1905| Block 3 -# 1905| r1905_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1905| v1905_2(void) = Call[noreturnFunc] : func:r1905_1 -# 1905| mu1905_3(unknown) = ^CallSideEffect : ~m? -# 1901| v1901_10(void) = Unreached : +# 1952| Block 3 +# 1952| r1952_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1952| v1952_2(void) = Call[noreturnFunc] : func:r1952_1 +# 1952| mu1952_3(unknown) = ^CallSideEffect : ~m? +# 1948| v1948_10(void) = Unreached : -# 1907| Block 4 -# 1907| r1907_1(glval<int>) = VariableAddress[#return] : -# 1907| mu1907_2(int) = Uninitialized[#return] : &:r1907_1 +# 1954| Block 4 +# 1954| r1954_1(glval<int>) = VariableAddress[#return] : +# 1954| mu1954_2(int) = Uninitialized[#return] : &:r1954_1 #-----| Goto -> Block 1 -# 1909| int noreturnTest2(int) -# 1909| Block 0 -# 1909| v1909_1(void) = EnterFunction : -# 1909| mu1909_2(unknown) = AliasedDefinition : -# 1909| mu1909_3(unknown) = InitializeNonLocal : -# 1909| r1909_4(glval<int>) = VariableAddress[x] : -# 1909| mu1909_5(int) = InitializeParameter[x] : &:r1909_4 -# 1910| r1910_1(glval<int>) = VariableAddress[x] : -# 1910| r1910_2(int) = Load[x] : &:r1910_1, ~m? -# 1910| r1910_3(int) = Constant[10] : -# 1910| r1910_4(bool) = CompareLT : r1910_2, r1910_3 -# 1910| v1910_5(void) = ConditionalBranch : r1910_4 +# 1956| int noreturnTest2(int) +# 1956| Block 0 +# 1956| v1956_1(void) = EnterFunction : +# 1956| mu1956_2(unknown) = AliasedDefinition : +# 1956| mu1956_3(unknown) = InitializeNonLocal : +# 1956| r1956_4(glval<int>) = VariableAddress[x] : +# 1956| mu1956_5(int) = InitializeParameter[x] : &:r1956_4 +# 1957| r1957_1(glval<int>) = VariableAddress[x] : +# 1957| r1957_2(int) = Load[x] : &:r1957_1, ~m? +# 1957| r1957_3(int) = Constant[10] : +# 1957| r1957_4(bool) = CompareLT : r1957_2, r1957_3 +# 1957| v1957_5(void) = ConditionalBranch : r1957_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1911| Block 1 -# 1911| r1911_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1911| v1911_2(void) = Call[noreturnFunc] : func:r1911_1 -# 1911| mu1911_3(unknown) = ^CallSideEffect : ~m? -# 1909| v1909_6(void) = Unreached : - -# 1913| Block 2 -# 1913| r1913_1(glval<int>) = VariableAddress[#return] : -# 1913| r1913_2(glval<int>) = VariableAddress[x] : -# 1913| r1913_3(int) = Load[x] : &:r1913_2, ~m? -# 1913| mu1913_4(int) = Store[#return] : &:r1913_1, r1913_3 -# 1909| r1909_7(glval<int>) = VariableAddress[#return] : -# 1909| v1909_8(void) = ReturnValue : &:r1909_7, ~m? -# 1909| v1909_9(void) = AliasedUse : ~m? -# 1909| v1909_10(void) = ExitFunction : - -# 1916| int static_function(int) -# 1916| Block 0 -# 1916| v1916_1(void) = EnterFunction : -# 1916| mu1916_2(unknown) = AliasedDefinition : -# 1916| mu1916_3(unknown) = InitializeNonLocal : -# 1916| r1916_4(glval<int>) = VariableAddress[x] : -# 1916| mu1916_5(int) = InitializeParameter[x] : &:r1916_4 -# 1917| r1917_1(glval<int>) = VariableAddress[#return] : -# 1917| r1917_2(glval<int>) = VariableAddress[x] : -# 1917| r1917_3(int) = Load[x] : &:r1917_2, ~m? -# 1917| mu1917_4(int) = Store[#return] : &:r1917_1, r1917_3 -# 1916| r1916_6(glval<int>) = VariableAddress[#return] : -# 1916| v1916_7(void) = ReturnValue : &:r1916_6, ~m? -# 1916| v1916_8(void) = AliasedUse : ~m? -# 1916| v1916_9(void) = ExitFunction : - -# 1920| void test_static_functions_with_assignments() -# 1920| Block 0 -# 1920| v1920_1(void) = EnterFunction : -# 1920| mu1920_2(unknown) = AliasedDefinition : -# 1920| mu1920_3(unknown) = InitializeNonLocal : -# 1921| r1921_1(glval<C>) = VariableAddress[c] : -# 1921| mu1921_2(C) = Uninitialized[c] : &:r1921_1 -# 1921| r1921_3(glval<unknown>) = FunctionAddress[C] : -# 1921| v1921_4(void) = Call[C] : func:r1921_3, this:r1921_1 -# 1921| mu1921_5(unknown) = ^CallSideEffect : ~m? -# 1921| mu1921_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 -# 1922| r1922_1(glval<int>) = VariableAddress[x] : -# 1922| mu1922_2(int) = Uninitialized[x] : &:r1922_1 -# 1923| r1923_1(glval<C>) = VariableAddress[c] : -# 1923| r1923_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1923| r1923_3(int) = Constant[10] : -# 1923| r1923_4(int) = Call[StaticMemberFunction] : func:r1923_2, 0:r1923_3 -# 1923| mu1923_5(unknown) = ^CallSideEffect : ~m? -# 1923| r1923_6(glval<int>) = VariableAddress[x] : -# 1923| mu1923_7(int) = Store[x] : &:r1923_6, r1923_4 -# 1924| r1924_1(glval<int>) = VariableAddress[y] : -# 1924| mu1924_2(int) = Uninitialized[y] : &:r1924_1 -# 1925| r1925_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1925| r1925_2(int) = Constant[10] : -# 1925| r1925_3(int) = Call[StaticMemberFunction] : func:r1925_1, 0:r1925_2 -# 1925| mu1925_4(unknown) = ^CallSideEffect : ~m? -# 1925| r1925_5(glval<int>) = VariableAddress[y] : -# 1925| mu1925_6(int) = Store[y] : &:r1925_5, r1925_3 -# 1926| r1926_1(glval<int>) = VariableAddress[z] : -# 1926| mu1926_2(int) = Uninitialized[z] : &:r1926_1 -# 1927| r1927_1(glval<unknown>) = FunctionAddress[static_function] : -# 1927| r1927_2(int) = Constant[10] : -# 1927| r1927_3(int) = Call[static_function] : func:r1927_1, 0:r1927_2 -# 1927| mu1927_4(unknown) = ^CallSideEffect : ~m? -# 1927| r1927_5(glval<int>) = VariableAddress[z] : -# 1927| mu1927_6(int) = Store[z] : &:r1927_5, r1927_3 -# 1928| v1928_1(void) = NoOp : -# 1928| r1928_2(glval<C>) = VariableAddress[c] : -# 1928| r1928_3(glval<unknown>) = FunctionAddress[~C] : -# 1928| v1928_4(void) = Call[~C] : func:r1928_3, this:r1928_2 -# 1928| mu1928_5(unknown) = ^CallSideEffect : ~m? -# 1928| v1928_6(void) = ^IndirectReadSideEffect[-1] : &:r1928_2, ~m? -# 1928| mu1928_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1928_2 -# 1920| v1920_4(void) = ReturnVoid : -# 1920| v1920_5(void) = AliasedUse : ~m? -# 1920| v1920_6(void) = ExitFunction : - -# 1930| void test_double_assign() -# 1930| Block 0 -# 1930| v1930_1(void) = EnterFunction : -# 1930| mu1930_2(unknown) = AliasedDefinition : -# 1930| mu1930_3(unknown) = InitializeNonLocal : -# 1931| r1931_1(glval<int>) = VariableAddress[i] : -# 1931| mu1931_2(int) = Uninitialized[i] : &:r1931_1 -# 1931| r1931_3(glval<int>) = VariableAddress[j] : -# 1931| mu1931_4(int) = Uninitialized[j] : &:r1931_3 -# 1932| r1932_1(int) = Constant[40] : -# 1932| r1932_2(glval<int>) = VariableAddress[j] : -# 1932| mu1932_3(int) = Store[j] : &:r1932_2, r1932_1 -# 1932| r1932_4(int) = Load[j] : &:r1932_2, ~m? -# 1932| r1932_5(glval<int>) = VariableAddress[i] : -# 1932| mu1932_6(int) = Store[i] : &:r1932_5, r1932_4 -# 1933| v1933_1(void) = NoOp : -# 1930| v1930_4(void) = ReturnVoid : -# 1930| v1930_5(void) = AliasedUse : ~m? -# 1930| v1930_6(void) = ExitFunction : - -# 1935| void test_assign_with_assign_operation() -# 1935| Block 0 -# 1935| v1935_1(void) = EnterFunction : -# 1935| mu1935_2(unknown) = AliasedDefinition : -# 1935| mu1935_3(unknown) = InitializeNonLocal : -# 1936| r1936_1(glval<int>) = VariableAddress[i] : -# 1936| mu1936_2(int) = Uninitialized[i] : &:r1936_1 -# 1936| r1936_3(glval<int>) = VariableAddress[j] : -# 1936| r1936_4(int) = Constant[0] : -# 1936| mu1936_5(int) = Store[j] : &:r1936_3, r1936_4 -# 1937| r1937_1(int) = Constant[40] : -# 1937| r1937_2(glval<int>) = VariableAddress[j] : -# 1937| r1937_3(int) = Load[j] : &:r1937_2, ~m? -# 1937| r1937_4(int) = Add : r1937_3, r1937_1 -# 1937| mu1937_5(int) = Store[j] : &:r1937_2, r1937_4 -# 1937| r1937_6(int) = Load[j] : &:r1937_2, ~m? -# 1937| r1937_7(glval<int>) = VariableAddress[i] : -# 1937| mu1937_8(int) = Store[i] : &:r1937_7, r1937_6 -# 1938| v1938_1(void) = NoOp : -# 1935| v1935_4(void) = ReturnVoid : -# 1935| v1935_5(void) = AliasedUse : ~m? -# 1935| v1935_6(void) = ExitFunction : - -# 1944| D& D::ReferenceStaticMemberFunction() -# 1944| Block 0 -# 1944| v1944_1(void) = EnterFunction : -# 1944| mu1944_2(unknown) = AliasedDefinition : -# 1944| mu1944_3(unknown) = InitializeNonLocal : -# 1945| r1945_1(glval<D &>) = VariableAddress[#return] : -# 1945| r1945_2(glval<D>) = VariableAddress[x] : -# 1945| r1945_3(D &) = CopyValue : r1945_2 -# 1945| mu1945_4(D &) = Store[#return] : &:r1945_1, r1945_3 -# 1944| r1944_4(glval<D &>) = VariableAddress[#return] : -# 1944| v1944_5(void) = ReturnValue : &:r1944_4, ~m? -# 1944| v1944_6(void) = AliasedUse : ~m? -# 1944| v1944_7(void) = ExitFunction : - -# 1947| D D::ObjectStaticMemberFunction() -# 1947| Block 0 -# 1947| v1947_1(void) = EnterFunction : -# 1947| mu1947_2(unknown) = AliasedDefinition : -# 1947| mu1947_3(unknown) = InitializeNonLocal : -# 1948| r1948_1(glval<D>) = VariableAddress[#return] : -# 1948| r1948_2(glval<D>) = VariableAddress[x] : -# 1948| r1948_3(D) = Load[x] : &:r1948_2, ~m? -# 1948| mu1948_4(D) = Store[#return] : &:r1948_1, r1948_3 -# 1947| r1947_4(glval<D>) = VariableAddress[#return] : -# 1947| v1947_5(void) = ReturnValue : &:r1947_4, ~m? -# 1947| v1947_6(void) = AliasedUse : ~m? -# 1947| v1947_7(void) = ExitFunction : - -# 1952| void test_static_member_functions_with_reference_return() -# 1952| Block 0 -# 1952| v1952_1(void) = EnterFunction : -# 1952| mu1952_2(unknown) = AliasedDefinition : -# 1952| mu1952_3(unknown) = InitializeNonLocal : -# 1953| r1953_1(glval<D>) = VariableAddress[d] : -# 1953| mu1953_2(D) = Uninitialized[d] : &:r1953_1 -# 1955| r1955_1(glval<D>) = VariableAddress[d] : -# 1955| r1955_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1955| r1955_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1955_2 -# 1955| mu1955_4(unknown) = ^CallSideEffect : ~m? -# 1955| r1955_5(glval<D>) = CopyValue : r1955_3 -# 1956| r1956_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1956| r1956_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1956_1 -# 1956| mu1956_3(unknown) = ^CallSideEffect : ~m? -# 1956| r1956_4(glval<D>) = CopyValue : r1956_2 -# 1957| r1957_1(glval<D>) = VariableAddress[d] : -# 1957| r1957_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1957| r1957_3(D) = Call[ObjectStaticMemberFunction] : func:r1957_2 -# 1957| mu1957_4(unknown) = ^CallSideEffect : ~m? -# 1958| r1958_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1958| r1958_2(D) = Call[ObjectStaticMemberFunction] : func:r1958_1 -# 1958| mu1958_3(unknown) = ^CallSideEffect : ~m? -# 1960| r1960_1(glval<D>) = VariableAddress[x] : -# 1960| mu1960_2(D) = Uninitialized[x] : &:r1960_1 -# 1961| r1961_1(glval<D>) = VariableAddress[d] : -# 1961| r1961_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1961| r1961_3(D &) = Call[ReferenceStaticMemberFunction] : func:r1961_2 -# 1961| mu1961_4(unknown) = ^CallSideEffect : ~m? -# 1961| r1961_5(D) = Load[?] : &:r1961_3, ~m? -# 1961| r1961_6(glval<D>) = VariableAddress[x] : -# 1961| mu1961_7(D) = Store[x] : &:r1961_6, r1961_5 -# 1962| r1962_1(glval<D>) = VariableAddress[y] : -# 1962| mu1962_2(D) = Uninitialized[y] : &:r1962_1 -# 1963| r1963_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 1963| r1963_2(D &) = Call[ReferenceStaticMemberFunction] : func:r1963_1 -# 1963| mu1963_3(unknown) = ^CallSideEffect : ~m? -# 1963| r1963_4(D) = Load[?] : &:r1963_2, ~m? -# 1963| r1963_5(glval<D>) = VariableAddress[y] : -# 1963| mu1963_6(D) = Store[y] : &:r1963_5, r1963_4 -# 1964| r1964_1(glval<D>) = VariableAddress[j] : -# 1964| mu1964_2(D) = Uninitialized[j] : &:r1964_1 -# 1965| r1965_1(glval<D>) = VariableAddress[d] : -# 1965| r1965_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1965| r1965_3(D) = Call[ObjectStaticMemberFunction] : func:r1965_2 -# 1965| mu1965_4(unknown) = ^CallSideEffect : ~m? -# 1965| r1965_5(glval<D>) = VariableAddress[j] : -# 1965| mu1965_6(D) = Store[j] : &:r1965_5, r1965_3 -# 1966| r1966_1(glval<D>) = VariableAddress[k] : -# 1966| mu1966_2(D) = Uninitialized[k] : &:r1966_1 -# 1967| r1967_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 1967| r1967_2(D) = Call[ObjectStaticMemberFunction] : func:r1967_1 -# 1967| mu1967_3(unknown) = ^CallSideEffect : ~m? -# 1967| r1967_4(glval<D>) = VariableAddress[k] : -# 1967| mu1967_5(D) = Store[k] : &:r1967_4, r1967_2 -# 1968| v1968_1(void) = NoOp : -# 1952| v1952_4(void) = ReturnVoid : -# 1952| v1952_5(void) = AliasedUse : ~m? -# 1952| v1952_6(void) = ExitFunction : - -# 1970| void test_volatile() -# 1970| Block 0 -# 1970| v1970_1(void) = EnterFunction : -# 1970| mu1970_2(unknown) = AliasedDefinition : -# 1970| mu1970_3(unknown) = InitializeNonLocal : -# 1971| r1971_1(glval<int>) = VariableAddress[x] : -# 1971| mu1971_2(int) = Uninitialized[x] : &:r1971_1 -# 1972| r1972_1(glval<int>) = VariableAddress[x] : -# 1972| r1972_2(int) = Load[x] : &:r1972_1, ~m? -# 1973| v1973_1(void) = NoOp : -# 1970| v1970_4(void) = ReturnVoid : -# 1970| v1970_5(void) = AliasedUse : ~m? -# 1970| v1970_6(void) = ExitFunction : - -# 1981| void value_category_test() -# 1981| Block 0 -# 1981| v1981_1(void) = EnterFunction : -# 1981| mu1981_2(unknown) = AliasedDefinition : -# 1981| mu1981_3(unknown) = InitializeNonLocal : -# 1982| r1982_1(glval<ValCat>) = VariableAddress[c] : -# 1982| mu1982_2(ValCat) = Uninitialized[c] : &:r1982_1 +# 1958| Block 1 +# 1958| r1958_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1958| v1958_2(void) = Call[noreturnFunc] : func:r1958_1 +# 1958| mu1958_3(unknown) = ^CallSideEffect : ~m? +# 1956| v1956_6(void) = Unreached : + +# 1960| Block 2 +# 1960| r1960_1(glval<int>) = VariableAddress[#return] : +# 1960| r1960_2(glval<int>) = VariableAddress[x] : +# 1960| r1960_3(int) = Load[x] : &:r1960_2, ~m? +# 1960| mu1960_4(int) = Store[#return] : &:r1960_1, r1960_3 +# 1956| r1956_7(glval<int>) = VariableAddress[#return] : +# 1956| v1956_8(void) = ReturnValue : &:r1956_7, ~m? +# 1956| v1956_9(void) = AliasedUse : ~m? +# 1956| v1956_10(void) = ExitFunction : + +# 1963| int static_function(int) +# 1963| Block 0 +# 1963| v1963_1(void) = EnterFunction : +# 1963| mu1963_2(unknown) = AliasedDefinition : +# 1963| mu1963_3(unknown) = InitializeNonLocal : +# 1963| r1963_4(glval<int>) = VariableAddress[x] : +# 1963| mu1963_5(int) = InitializeParameter[x] : &:r1963_4 +# 1964| r1964_1(glval<int>) = VariableAddress[#return] : +# 1964| r1964_2(glval<int>) = VariableAddress[x] : +# 1964| r1964_3(int) = Load[x] : &:r1964_2, ~m? +# 1964| mu1964_4(int) = Store[#return] : &:r1964_1, r1964_3 +# 1963| r1963_6(glval<int>) = VariableAddress[#return] : +# 1963| v1963_7(void) = ReturnValue : &:r1963_6, ~m? +# 1963| v1963_8(void) = AliasedUse : ~m? +# 1963| v1963_9(void) = ExitFunction : + +# 1967| void test_static_functions_with_assignments() +# 1967| Block 0 +# 1967| v1967_1(void) = EnterFunction : +# 1967| mu1967_2(unknown) = AliasedDefinition : +# 1967| mu1967_3(unknown) = InitializeNonLocal : +# 1968| r1968_1(glval<C>) = VariableAddress[c] : +# 1968| mu1968_2(C) = Uninitialized[c] : &:r1968_1 +# 1968| r1968_3(glval<unknown>) = FunctionAddress[C] : +# 1968| v1968_4(void) = Call[C] : func:r1968_3, this:r1968_1 +# 1968| mu1968_5(unknown) = ^CallSideEffect : ~m? +# 1968| mu1968_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1968_1 +# 1969| r1969_1(glval<int>) = VariableAddress[x] : +# 1969| mu1969_2(int) = Uninitialized[x] : &:r1969_1 +# 1970| r1970_1(glval<C>) = VariableAddress[c] : +# 1970| r1970_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1970| r1970_3(int) = Constant[10] : +# 1970| r1970_4(int) = Call[StaticMemberFunction] : func:r1970_2, 0:r1970_3 +# 1970| mu1970_5(unknown) = ^CallSideEffect : ~m? +# 1970| r1970_6(glval<int>) = VariableAddress[x] : +# 1970| mu1970_7(int) = Store[x] : &:r1970_6, r1970_4 +# 1971| r1971_1(glval<int>) = VariableAddress[y] : +# 1971| mu1971_2(int) = Uninitialized[y] : &:r1971_1 +# 1972| r1972_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1972| r1972_2(int) = Constant[10] : +# 1972| r1972_3(int) = Call[StaticMemberFunction] : func:r1972_1, 0:r1972_2 +# 1972| mu1972_4(unknown) = ^CallSideEffect : ~m? +# 1972| r1972_5(glval<int>) = VariableAddress[y] : +# 1972| mu1972_6(int) = Store[y] : &:r1972_5, r1972_3 +# 1973| r1973_1(glval<int>) = VariableAddress[z] : +# 1973| mu1973_2(int) = Uninitialized[z] : &:r1973_1 +# 1974| r1974_1(glval<unknown>) = FunctionAddress[static_function] : +# 1974| r1974_2(int) = Constant[10] : +# 1974| r1974_3(int) = Call[static_function] : func:r1974_1, 0:r1974_2 +# 1974| mu1974_4(unknown) = ^CallSideEffect : ~m? +# 1974| r1974_5(glval<int>) = VariableAddress[z] : +# 1974| mu1974_6(int) = Store[z] : &:r1974_5, r1974_3 +# 1975| v1975_1(void) = NoOp : +# 1975| r1975_2(glval<C>) = VariableAddress[c] : +# 1975| r1975_3(glval<unknown>) = FunctionAddress[~C] : +# 1975| v1975_4(void) = Call[~C] : func:r1975_3, this:r1975_2 +# 1975| mu1975_5(unknown) = ^CallSideEffect : ~m? +# 1975| v1975_6(void) = ^IndirectReadSideEffect[-1] : &:r1975_2, ~m? +# 1975| mu1975_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1975_2 +# 1967| v1967_4(void) = ReturnVoid : +# 1967| v1967_5(void) = AliasedUse : ~m? +# 1967| v1967_6(void) = ExitFunction : + +# 1977| void test_double_assign() +# 1977| Block 0 +# 1977| v1977_1(void) = EnterFunction : +# 1977| mu1977_2(unknown) = AliasedDefinition : +# 1977| mu1977_3(unknown) = InitializeNonLocal : +# 1978| r1978_1(glval<int>) = VariableAddress[i] : +# 1978| mu1978_2(int) = Uninitialized[i] : &:r1978_1 +# 1978| r1978_3(glval<int>) = VariableAddress[j] : +# 1978| mu1978_4(int) = Uninitialized[j] : &:r1978_3 +# 1979| r1979_1(int) = Constant[40] : +# 1979| r1979_2(glval<int>) = VariableAddress[j] : +# 1979| mu1979_3(int) = Store[j] : &:r1979_2, r1979_1 +# 1979| r1979_4(int) = Load[j] : &:r1979_2, ~m? +# 1979| r1979_5(glval<int>) = VariableAddress[i] : +# 1979| mu1979_6(int) = Store[i] : &:r1979_5, r1979_4 +# 1980| v1980_1(void) = NoOp : +# 1977| v1977_4(void) = ReturnVoid : +# 1977| v1977_5(void) = AliasedUse : ~m? +# 1977| v1977_6(void) = ExitFunction : + +# 1982| void test_assign_with_assign_operation() +# 1982| Block 0 +# 1982| v1982_1(void) = EnterFunction : +# 1982| mu1982_2(unknown) = AliasedDefinition : +# 1982| mu1982_3(unknown) = InitializeNonLocal : +# 1983| r1983_1(glval<int>) = VariableAddress[i] : +# 1983| mu1983_2(int) = Uninitialized[i] : &:r1983_1 +# 1983| r1983_3(glval<int>) = VariableAddress[j] : +# 1983| r1983_4(int) = Constant[0] : +# 1983| mu1983_5(int) = Store[j] : &:r1983_3, r1983_4 +# 1984| r1984_1(int) = Constant[40] : +# 1984| r1984_2(glval<int>) = VariableAddress[j] : +# 1984| r1984_3(int) = Load[j] : &:r1984_2, ~m? +# 1984| r1984_4(int) = Add : r1984_3, r1984_1 +# 1984| mu1984_5(int) = Store[j] : &:r1984_2, r1984_4 +# 1984| r1984_6(int) = Load[j] : &:r1984_2, ~m? +# 1984| r1984_7(glval<int>) = VariableAddress[i] : +# 1984| mu1984_8(int) = Store[i] : &:r1984_7, r1984_6 +# 1985| v1985_1(void) = NoOp : +# 1982| v1982_4(void) = ReturnVoid : +# 1982| v1982_5(void) = AliasedUse : ~m? +# 1982| v1982_6(void) = ExitFunction : + +# 1991| D& D::ReferenceStaticMemberFunction() +# 1991| Block 0 +# 1991| v1991_1(void) = EnterFunction : +# 1991| mu1991_2(unknown) = AliasedDefinition : +# 1991| mu1991_3(unknown) = InitializeNonLocal : +# 1992| r1992_1(glval<D &>) = VariableAddress[#return] : +# 1992| r1992_2(glval<D>) = VariableAddress[x] : +# 1992| r1992_3(D &) = CopyValue : r1992_2 +# 1992| mu1992_4(D &) = Store[#return] : &:r1992_1, r1992_3 +# 1991| r1991_4(glval<D &>) = VariableAddress[#return] : +# 1991| v1991_5(void) = ReturnValue : &:r1991_4, ~m? +# 1991| v1991_6(void) = AliasedUse : ~m? +# 1991| v1991_7(void) = ExitFunction : + +# 1994| D D::ObjectStaticMemberFunction() +# 1994| Block 0 +# 1994| v1994_1(void) = EnterFunction : +# 1994| mu1994_2(unknown) = AliasedDefinition : +# 1994| mu1994_3(unknown) = InitializeNonLocal : +# 1995| r1995_1(glval<D>) = VariableAddress[#return] : +# 1995| r1995_2(glval<D>) = VariableAddress[x] : +# 1995| r1995_3(D) = Load[x] : &:r1995_2, ~m? +# 1995| mu1995_4(D) = Store[#return] : &:r1995_1, r1995_3 +# 1994| r1994_4(glval<D>) = VariableAddress[#return] : +# 1994| v1994_5(void) = ReturnValue : &:r1994_4, ~m? +# 1994| v1994_6(void) = AliasedUse : ~m? +# 1994| v1994_7(void) = ExitFunction : + +# 1999| void test_static_member_functions_with_reference_return() +# 1999| Block 0 +# 1999| v1999_1(void) = EnterFunction : +# 1999| mu1999_2(unknown) = AliasedDefinition : +# 1999| mu1999_3(unknown) = InitializeNonLocal : +# 2000| r2000_1(glval<D>) = VariableAddress[d] : +# 2000| mu2000_2(D) = Uninitialized[d] : &:r2000_1 +# 2002| r2002_1(glval<D>) = VariableAddress[d] : +# 2002| r2002_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2002| r2002_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2002_2 +# 2002| mu2002_4(unknown) = ^CallSideEffect : ~m? +# 2002| r2002_5(glval<D>) = CopyValue : r2002_3 +# 2003| r2003_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2003| r2003_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2003_1 +# 2003| mu2003_3(unknown) = ^CallSideEffect : ~m? +# 2003| r2003_4(glval<D>) = CopyValue : r2003_2 +# 2004| r2004_1(glval<D>) = VariableAddress[d] : +# 2004| r2004_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2004| r2004_3(D) = Call[ObjectStaticMemberFunction] : func:r2004_2 +# 2004| mu2004_4(unknown) = ^CallSideEffect : ~m? +# 2005| r2005_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2005| r2005_2(D) = Call[ObjectStaticMemberFunction] : func:r2005_1 +# 2005| mu2005_3(unknown) = ^CallSideEffect : ~m? +# 2007| r2007_1(glval<D>) = VariableAddress[x] : +# 2007| mu2007_2(D) = Uninitialized[x] : &:r2007_1 +# 2008| r2008_1(glval<D>) = VariableAddress[d] : +# 2008| r2008_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2008| r2008_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2008_2 +# 2008| mu2008_4(unknown) = ^CallSideEffect : ~m? +# 2008| r2008_5(D) = Load[?] : &:r2008_3, ~m? +# 2008| r2008_6(glval<D>) = VariableAddress[x] : +# 2008| mu2008_7(D) = Store[x] : &:r2008_6, r2008_5 +# 2009| r2009_1(glval<D>) = VariableAddress[y] : +# 2009| mu2009_2(D) = Uninitialized[y] : &:r2009_1 +# 2010| r2010_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2010| r2010_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2010_1 +# 2010| mu2010_3(unknown) = ^CallSideEffect : ~m? +# 2010| r2010_4(D) = Load[?] : &:r2010_2, ~m? +# 2010| r2010_5(glval<D>) = VariableAddress[y] : +# 2010| mu2010_6(D) = Store[y] : &:r2010_5, r2010_4 +# 2011| r2011_1(glval<D>) = VariableAddress[j] : +# 2011| mu2011_2(D) = Uninitialized[j] : &:r2011_1 +# 2012| r2012_1(glval<D>) = VariableAddress[d] : +# 2012| r2012_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2012| r2012_3(D) = Call[ObjectStaticMemberFunction] : func:r2012_2 +# 2012| mu2012_4(unknown) = ^CallSideEffect : ~m? +# 2012| r2012_5(glval<D>) = VariableAddress[j] : +# 2012| mu2012_6(D) = Store[j] : &:r2012_5, r2012_3 +# 2013| r2013_1(glval<D>) = VariableAddress[k] : +# 2013| mu2013_2(D) = Uninitialized[k] : &:r2013_1 +# 2014| r2014_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2014| r2014_2(D) = Call[ObjectStaticMemberFunction] : func:r2014_1 +# 2014| mu2014_3(unknown) = ^CallSideEffect : ~m? +# 2014| r2014_4(glval<D>) = VariableAddress[k] : +# 2014| mu2014_5(D) = Store[k] : &:r2014_4, r2014_2 +# 2015| v2015_1(void) = NoOp : +# 1999| v1999_4(void) = ReturnVoid : +# 1999| v1999_5(void) = AliasedUse : ~m? +# 1999| v1999_6(void) = ExitFunction : + +# 2017| void test_volatile() +# 2017| Block 0 +# 2017| v2017_1(void) = EnterFunction : +# 2017| mu2017_2(unknown) = AliasedDefinition : +# 2017| mu2017_3(unknown) = InitializeNonLocal : +# 2018| r2018_1(glval<int>) = VariableAddress[x] : +# 2018| mu2018_2(int) = Uninitialized[x] : &:r2018_1 +# 2019| r2019_1(glval<int>) = VariableAddress[x] : +# 2019| r2019_2(int) = Load[x] : &:r2019_1, ~m? +# 2020| v2020_1(void) = NoOp : +# 2017| v2017_4(void) = ReturnVoid : +# 2017| v2017_5(void) = AliasedUse : ~m? +# 2017| v2017_6(void) = ExitFunction : + +# 2028| void value_category_test() +# 2028| Block 0 +# 2028| v2028_1(void) = EnterFunction : +# 2028| mu2028_2(unknown) = AliasedDefinition : +# 2028| mu2028_3(unknown) = InitializeNonLocal : +# 2029| r2029_1(glval<ValCat>) = VariableAddress[c] : +# 2029| mu2029_2(ValCat) = Uninitialized[c] : &:r2029_1 #-----| r0_1(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, ~m? -# 1984| r1984_1(glval<ValCat>) = VariableAddress[c] : -# 1984| r1984_2(glval<unknown>) = FunctionAddress[lvalue] : -# 1984| r1984_3(ValCat &) = Call[lvalue] : func:r1984_2 -# 1984| mu1984_4(unknown) = ^CallSideEffect : ~m? -# 1984| r1984_5(glval<ValCat>) = CopyValue : r1984_3 -# 1984| mu1984_6(ValCat) = Store[?] : &:r1984_5, r0_3 +# 2031| r2031_1(glval<ValCat>) = VariableAddress[c] : +# 2031| r2031_2(glval<unknown>) = FunctionAddress[lvalue] : +# 2031| r2031_3(ValCat &) = Call[lvalue] : func:r2031_2 +# 2031| mu2031_4(unknown) = ^CallSideEffect : ~m? +# 2031| r2031_5(glval<ValCat>) = CopyValue : r2031_3 +# 2031| mu2031_6(ValCat) = Store[?] : &:r2031_5, r0_3 #-----| r0_4(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, ~m? -# 1985| r1985_1(glval<ValCat>) = VariableAddress[c] : -# 1985| r1985_2(glval<unknown>) = FunctionAddress[xvalue] : -# 1985| r1985_3(ValCat &&) = Call[xvalue] : func:r1985_2 -# 1985| mu1985_4(unknown) = ^CallSideEffect : ~m? -# 1985| r1985_5(glval<ValCat>) = CopyValue : r1985_3 -# 1985| mu1985_6(ValCat) = Store[?] : &:r1985_5, r0_6 +# 2032| r2032_1(glval<ValCat>) = VariableAddress[c] : +# 2032| r2032_2(glval<unknown>) = FunctionAddress[xvalue] : +# 2032| r2032_3(ValCat &&) = Call[xvalue] : func:r2032_2 +# 2032| mu2032_4(unknown) = ^CallSideEffect : ~m? +# 2032| r2032_5(glval<ValCat>) = CopyValue : r2032_3 +# 2032| mu2032_6(ValCat) = Store[?] : &:r2032_5, r0_6 #-----| r0_7(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, ~m? -# 1986| r1986_1(glval<ValCat>) = VariableAddress[#temp1986:5] : -# 1986| r1986_2(glval<ValCat>) = VariableAddress[c] : -# 1986| r1986_3(glval<unknown>) = FunctionAddress[prvalue] : -# 1986| r1986_4(ValCat) = Call[prvalue] : func:r1986_3 -# 1986| mu1986_5(unknown) = ^CallSideEffect : ~m? -# 1986| mu1986_6(ValCat) = Store[#temp1986:5] : &:r1986_1, r1986_4 -# 1986| mu1986_7(ValCat) = Store[#temp1986:5] : &:r1986_1, r0_9 +# 2033| r2033_1(glval<ValCat>) = VariableAddress[#temp2033:5] : +# 2033| r2033_2(glval<ValCat>) = VariableAddress[c] : +# 2033| r2033_3(glval<unknown>) = FunctionAddress[prvalue] : +# 2033| r2033_4(ValCat) = Call[prvalue] : func:r2033_3 +# 2033| mu2033_5(unknown) = ^CallSideEffect : ~m? +# 2033| mu2033_6(ValCat) = Store[#temp2033:5] : &:r2033_1, r2033_4 +# 2033| mu2033_7(ValCat) = Store[#temp2033:5] : &:r2033_1, r0_9 #-----| r0_10(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, ~m? -# 1987| r1987_1(glval<unknown>) = FunctionAddress[lvalue] : -# 1987| r1987_2(ValCat &) = Call[lvalue] : func:r1987_1 -# 1987| mu1987_3(unknown) = ^CallSideEffect : ~m? -# 1987| r1987_4(glval<ValCat>) = CopyValue : r1987_2 -# 1987| mu1987_5(ValCat) = Store[?] : &:r1987_4, r0_12 +# 2034| r2034_1(glval<unknown>) = FunctionAddress[lvalue] : +# 2034| r2034_2(ValCat &) = Call[lvalue] : func:r2034_1 +# 2034| mu2034_3(unknown) = ^CallSideEffect : ~m? +# 2034| r2034_4(glval<ValCat>) = CopyValue : r2034_2 +# 2034| mu2034_5(ValCat) = Store[?] : &:r2034_4, r0_12 #-----| r0_13(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, ~m? -# 1988| r1988_1(glval<unknown>) = FunctionAddress[xvalue] : -# 1988| r1988_2(ValCat &&) = Call[xvalue] : func:r1988_1 -# 1988| mu1988_3(unknown) = ^CallSideEffect : ~m? -# 1988| r1988_4(glval<ValCat>) = CopyValue : r1988_2 -# 1988| mu1988_5(ValCat) = Store[?] : &:r1988_4, r0_15 +# 2035| r2035_1(glval<unknown>) = FunctionAddress[xvalue] : +# 2035| r2035_2(ValCat &&) = Call[xvalue] : func:r2035_1 +# 2035| mu2035_3(unknown) = ^CallSideEffect : ~m? +# 2035| r2035_4(glval<ValCat>) = CopyValue : r2035_2 +# 2035| mu2035_5(ValCat) = Store[?] : &:r2035_4, r0_15 #-----| r0_16(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, ~m? -# 1989| r1989_1(glval<ValCat>) = VariableAddress[#temp1989:5] : -# 1989| r1989_2(glval<unknown>) = FunctionAddress[prvalue] : -# 1989| r1989_3(ValCat) = Call[prvalue] : func:r1989_2 -# 1989| mu1989_4(unknown) = ^CallSideEffect : ~m? -# 1989| mu1989_5(ValCat) = Store[#temp1989:5] : &:r1989_1, r1989_3 -# 1989| mu1989_6(ValCat) = Store[#temp1989:5] : &:r1989_1, r0_18 -# 1990| v1990_1(void) = NoOp : -# 1981| v1981_4(void) = ReturnVoid : -# 1981| v1981_5(void) = AliasedUse : ~m? -# 1981| v1981_6(void) = ExitFunction : - -# 1992| void SetStaticFuncPtr() -# 1992| Block 0 -# 1992| v1992_1(void) = EnterFunction : -# 1992| mu1992_2(unknown) = AliasedDefinition : -# 1992| mu1992_3(unknown) = InitializeNonLocal : -# 1993| r1993_1(glval<C>) = VariableAddress[c] : -# 1993| mu1993_2(C) = Uninitialized[c] : &:r1993_1 -# 1993| r1993_3(glval<unknown>) = FunctionAddress[C] : -# 1993| v1993_4(void) = Call[C] : func:r1993_3, this:r1993_1 -# 1993| mu1993_5(unknown) = ^CallSideEffect : ~m? -# 1993| mu1993_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1993_1 -# 1994| r1994_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1994| r1994_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1994| mu1994_3(..(*)(..)) = Store[pfn] : &:r1994_1, r1994_2 -# 1995| r1995_1(glval<C>) = VariableAddress[c] : -# 1995| r1995_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 1995| r1995_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 1995| mu1995_4(..(*)(..)) = Store[pfn] : &:r1995_3, r1995_2 -# 1996| v1996_1(void) = NoOp : -# 1996| r1996_2(glval<C>) = VariableAddress[c] : -# 1996| r1996_3(glval<unknown>) = FunctionAddress[~C] : -# 1996| v1996_4(void) = Call[~C] : func:r1996_3, this:r1996_2 -# 1996| mu1996_5(unknown) = ^CallSideEffect : ~m? -# 1996| v1996_6(void) = ^IndirectReadSideEffect[-1] : &:r1996_2, ~m? -# 1996| mu1996_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1996_2 -# 1992| v1992_4(void) = ReturnVoid : -# 1992| v1992_5(void) = AliasedUse : ~m? -# 1992| v1992_6(void) = ExitFunction : - -# 1998| void TernaryTestInt(bool, int, int, int) -# 1998| Block 0 -# 1998| v1998_1(void) = EnterFunction : -# 1998| mu1998_2(unknown) = AliasedDefinition : -# 1998| mu1998_3(unknown) = InitializeNonLocal : -# 1998| r1998_4(glval<bool>) = VariableAddress[a] : -# 1998| mu1998_5(bool) = InitializeParameter[a] : &:r1998_4 -# 1998| r1998_6(glval<int>) = VariableAddress[x] : -# 1998| mu1998_7(int) = InitializeParameter[x] : &:r1998_6 -# 1998| r1998_8(glval<int>) = VariableAddress[y] : -# 1998| mu1998_9(int) = InitializeParameter[y] : &:r1998_8 -# 1998| r1998_10(glval<int>) = VariableAddress[z] : -# 1998| mu1998_11(int) = InitializeParameter[z] : &:r1998_10 -# 1999| r1999_1(glval<bool>) = VariableAddress[a] : -# 1999| r1999_2(bool) = Load[a] : &:r1999_1, ~m? -# 1999| v1999_3(void) = ConditionalBranch : r1999_2 +# 2036| r2036_1(glval<ValCat>) = VariableAddress[#temp2036:5] : +# 2036| r2036_2(glval<unknown>) = FunctionAddress[prvalue] : +# 2036| r2036_3(ValCat) = Call[prvalue] : func:r2036_2 +# 2036| mu2036_4(unknown) = ^CallSideEffect : ~m? +# 2036| mu2036_5(ValCat) = Store[#temp2036:5] : &:r2036_1, r2036_3 +# 2036| mu2036_6(ValCat) = Store[#temp2036:5] : &:r2036_1, r0_18 +# 2037| v2037_1(void) = NoOp : +# 2028| v2028_4(void) = ReturnVoid : +# 2028| v2028_5(void) = AliasedUse : ~m? +# 2028| v2028_6(void) = ExitFunction : + +# 2039| void SetStaticFuncPtr() +# 2039| Block 0 +# 2039| v2039_1(void) = EnterFunction : +# 2039| mu2039_2(unknown) = AliasedDefinition : +# 2039| mu2039_3(unknown) = InitializeNonLocal : +# 2040| r2040_1(glval<C>) = VariableAddress[c] : +# 2040| mu2040_2(C) = Uninitialized[c] : &:r2040_1 +# 2040| r2040_3(glval<unknown>) = FunctionAddress[C] : +# 2040| v2040_4(void) = Call[C] : func:r2040_3, this:r2040_1 +# 2040| mu2040_5(unknown) = ^CallSideEffect : ~m? +# 2040| mu2040_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r2040_1 +# 2041| r2041_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2041| r2041_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2041| mu2041_3(..(*)(..)) = Store[pfn] : &:r2041_1, r2041_2 +# 2042| r2042_1(glval<C>) = VariableAddress[c] : +# 2042| r2042_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2042| r2042_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2042| mu2042_4(..(*)(..)) = Store[pfn] : &:r2042_3, r2042_2 +# 2043| v2043_1(void) = NoOp : +# 2043| r2043_2(glval<C>) = VariableAddress[c] : +# 2043| r2043_3(glval<unknown>) = FunctionAddress[~C] : +# 2043| v2043_4(void) = Call[~C] : func:r2043_3, this:r2043_2 +# 2043| mu2043_5(unknown) = ^CallSideEffect : ~m? +# 2043| v2043_6(void) = ^IndirectReadSideEffect[-1] : &:r2043_2, ~m? +# 2043| mu2043_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2043_2 +# 2039| v2039_4(void) = ReturnVoid : +# 2039| v2039_5(void) = AliasedUse : ~m? +# 2039| v2039_6(void) = ExitFunction : + +# 2045| void TernaryTestInt(bool, int, int, int) +# 2045| Block 0 +# 2045| v2045_1(void) = EnterFunction : +# 2045| mu2045_2(unknown) = AliasedDefinition : +# 2045| mu2045_3(unknown) = InitializeNonLocal : +# 2045| r2045_4(glval<bool>) = VariableAddress[a] : +# 2045| mu2045_5(bool) = InitializeParameter[a] : &:r2045_4 +# 2045| r2045_6(glval<int>) = VariableAddress[x] : +# 2045| mu2045_7(int) = InitializeParameter[x] : &:r2045_6 +# 2045| r2045_8(glval<int>) = VariableAddress[y] : +# 2045| mu2045_9(int) = InitializeParameter[y] : &:r2045_8 +# 2045| r2045_10(glval<int>) = VariableAddress[z] : +# 2045| mu2045_11(int) = InitializeParameter[z] : &:r2045_10 +# 2046| r2046_1(glval<bool>) = VariableAddress[a] : +# 2046| r2046_2(bool) = Load[a] : &:r2046_1, ~m? +# 2046| v2046_3(void) = ConditionalBranch : r2046_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1999| Block 1 -# 1999| r1999_4(glval<int>) = VariableAddress[#temp1999:9] : -# 1999| r1999_5(int) = Load[#temp1999:9] : &:r1999_4, ~m? -# 1999| r1999_6(glval<int>) = VariableAddress[z] : -# 1999| mu1999_7(int) = Store[z] : &:r1999_6, r1999_5 -# 2000| r2000_1(glval<bool>) = VariableAddress[a] : -# 2000| r2000_2(bool) = Load[a] : &:r2000_1, ~m? -# 2000| v2000_3(void) = ConditionalBranch : r2000_2 +# 2046| Block 1 +# 2046| r2046_4(glval<int>) = VariableAddress[#temp2046:9] : +# 2046| r2046_5(int) = Load[#temp2046:9] : &:r2046_4, ~m? +# 2046| r2046_6(glval<int>) = VariableAddress[z] : +# 2046| mu2046_7(int) = Store[z] : &:r2046_6, r2046_5 +# 2047| r2047_1(glval<bool>) = VariableAddress[a] : +# 2047| r2047_2(bool) = Load[a] : &:r2047_1, ~m? +# 2047| v2047_3(void) = ConditionalBranch : r2047_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1999| Block 2 -# 1999| r1999_8(glval<int>) = VariableAddress[x] : -# 1999| r1999_9(int) = Load[x] : &:r1999_8, ~m? -# 1999| r1999_10(glval<int>) = VariableAddress[#temp1999:9] : -# 1999| mu1999_11(int) = Store[#temp1999:9] : &:r1999_10, r1999_9 +# 2046| Block 2 +# 2046| r2046_8(glval<int>) = VariableAddress[x] : +# 2046| r2046_9(int) = Load[x] : &:r2046_8, ~m? +# 2046| r2046_10(glval<int>) = VariableAddress[#temp2046:9] : +# 2046| mu2046_11(int) = Store[#temp2046:9] : &:r2046_10, r2046_9 #-----| Goto -> Block 1 -# 1999| Block 3 -# 1999| r1999_12(glval<int>) = VariableAddress[y] : -# 1999| r1999_13(int) = Load[y] : &:r1999_12, ~m? -# 1999| r1999_14(glval<int>) = VariableAddress[#temp1999:9] : -# 1999| mu1999_15(int) = Store[#temp1999:9] : &:r1999_14, r1999_13 +# 2046| Block 3 +# 2046| r2046_12(glval<int>) = VariableAddress[y] : +# 2046| r2046_13(int) = Load[y] : &:r2046_12, ~m? +# 2046| r2046_14(glval<int>) = VariableAddress[#temp2046:9] : +# 2046| mu2046_15(int) = Store[#temp2046:9] : &:r2046_14, r2046_13 #-----| Goto -> Block 1 -# 2000| Block 4 -# 2000| r2000_4(glval<int>) = VariableAddress[#temp2000:9] : -# 2000| r2000_5(int) = Load[#temp2000:9] : &:r2000_4, ~m? -# 2000| r2000_6(glval<int>) = VariableAddress[z] : -# 2000| mu2000_7(int) = Store[z] : &:r2000_6, r2000_5 -# 2001| r2001_1(glval<bool>) = VariableAddress[a] : -# 2001| r2001_2(bool) = Load[a] : &:r2001_1, ~m? -# 2001| v2001_3(void) = ConditionalBranch : r2001_2 +# 2047| Block 4 +# 2047| r2047_4(glval<int>) = VariableAddress[#temp2047:9] : +# 2047| r2047_5(int) = Load[#temp2047:9] : &:r2047_4, ~m? +# 2047| r2047_6(glval<int>) = VariableAddress[z] : +# 2047| mu2047_7(int) = Store[z] : &:r2047_6, r2047_5 +# 2048| r2048_1(glval<bool>) = VariableAddress[a] : +# 2048| r2048_2(bool) = Load[a] : &:r2048_1, ~m? +# 2048| v2048_3(void) = ConditionalBranch : r2048_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 2000| Block 5 -# 2000| r2000_8(glval<int>) = VariableAddress[x] : -# 2000| r2000_9(int) = Load[x] : &:r2000_8, ~m? -# 2000| r2000_10(glval<int>) = VariableAddress[#temp2000:9] : -# 2000| mu2000_11(int) = Store[#temp2000:9] : &:r2000_10, r2000_9 +# 2047| Block 5 +# 2047| r2047_8(glval<int>) = VariableAddress[x] : +# 2047| r2047_9(int) = Load[x] : &:r2047_8, ~m? +# 2047| r2047_10(glval<int>) = VariableAddress[#temp2047:9] : +# 2047| mu2047_11(int) = Store[#temp2047:9] : &:r2047_10, r2047_9 #-----| Goto -> Block 4 -# 2000| Block 6 -# 2000| r2000_12(int) = Constant[5] : -# 2000| r2000_13(glval<int>) = VariableAddress[#temp2000:9] : -# 2000| mu2000_14(int) = Store[#temp2000:9] : &:r2000_13, r2000_12 +# 2047| Block 6 +# 2047| r2047_12(int) = Constant[5] : +# 2047| r2047_13(glval<int>) = VariableAddress[#temp2047:9] : +# 2047| mu2047_14(int) = Store[#temp2047:9] : &:r2047_13, r2047_12 #-----| Goto -> Block 4 -# 2001| Block 7 -# 2001| r2001_4(glval<int>) = VariableAddress[#temp2001:9] : -# 2001| r2001_5(int) = Load[#temp2001:9] : &:r2001_4, ~m? -# 2001| r2001_6(glval<int>) = VariableAddress[z] : -# 2001| mu2001_7(int) = Store[z] : &:r2001_6, r2001_5 -# 2002| r2002_1(int) = Constant[7] : -# 2002| r2002_2(glval<bool>) = VariableAddress[a] : -# 2002| r2002_3(bool) = Load[a] : &:r2002_2, ~m? -# 2002| v2002_4(void) = ConditionalBranch : r2002_3 +# 2048| Block 7 +# 2048| r2048_4(glval<int>) = VariableAddress[#temp2048:9] : +# 2048| r2048_5(int) = Load[#temp2048:9] : &:r2048_4, ~m? +# 2048| r2048_6(glval<int>) = VariableAddress[z] : +# 2048| mu2048_7(int) = Store[z] : &:r2048_6, r2048_5 +# 2049| r2049_1(int) = Constant[7] : +# 2049| r2049_2(glval<bool>) = VariableAddress[a] : +# 2049| r2049_3(bool) = Load[a] : &:r2049_2, ~m? +# 2049| v2049_4(void) = ConditionalBranch : r2049_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 2001| Block 8 -# 2001| r2001_8(int) = Constant[3] : -# 2001| r2001_9(glval<int>) = VariableAddress[#temp2001:9] : -# 2001| mu2001_10(int) = Store[#temp2001:9] : &:r2001_9, r2001_8 +# 2048| Block 8 +# 2048| r2048_8(int) = Constant[3] : +# 2048| r2048_9(glval<int>) = VariableAddress[#temp2048:9] : +# 2048| mu2048_10(int) = Store[#temp2048:9] : &:r2048_9, r2048_8 #-----| Goto -> Block 7 -# 2001| Block 9 -# 2001| r2001_11(int) = Constant[5] : -# 2001| r2001_12(glval<int>) = VariableAddress[#temp2001:9] : -# 2001| mu2001_13(int) = Store[#temp2001:9] : &:r2001_12, r2001_11 +# 2048| Block 9 +# 2048| r2048_11(int) = Constant[5] : +# 2048| r2048_12(glval<int>) = VariableAddress[#temp2048:9] : +# 2048| mu2048_13(int) = Store[#temp2048:9] : &:r2048_12, r2048_11 #-----| Goto -> Block 7 -# 2002| Block 10 -# 2002| r2002_5(glval<unknown>) = VariableAddress[#temp2002:6] : -# 2002| r2002_6(glval<int>) = Load[#temp2002:6] : &:r2002_5, ~m? -# 2002| mu2002_7(int) = Store[?] : &:r2002_6, r2002_1 -# 2003| v2003_1(void) = NoOp : -# 1998| v1998_12(void) = ReturnVoid : -# 1998| v1998_13(void) = AliasedUse : ~m? -# 1998| v1998_14(void) = ExitFunction : - -# 2002| Block 11 -# 2002| r2002_8(glval<int>) = VariableAddress[x] : -# 2002| r2002_9(glval<unknown>) = VariableAddress[#temp2002:6] : -# 2002| mu2002_10(glval<int>) = Store[#temp2002:6] : &:r2002_9, r2002_8 +# 2049| Block 10 +# 2049| r2049_5(glval<unknown>) = VariableAddress[#temp2049:6] : +# 2049| r2049_6(glval<int>) = Load[#temp2049:6] : &:r2049_5, ~m? +# 2049| mu2049_7(int) = Store[?] : &:r2049_6, r2049_1 +# 2050| v2050_1(void) = NoOp : +# 2045| v2045_12(void) = ReturnVoid : +# 2045| v2045_13(void) = AliasedUse : ~m? +# 2045| v2045_14(void) = ExitFunction : + +# 2049| Block 11 +# 2049| r2049_8(glval<int>) = VariableAddress[x] : +# 2049| r2049_9(glval<unknown>) = VariableAddress[#temp2049:6] : +# 2049| mu2049_10(glval<int>) = Store[#temp2049:6] : &:r2049_9, r2049_8 #-----| Goto -> Block 10 -# 2002| Block 12 -# 2002| r2002_11(glval<int>) = VariableAddress[y] : -# 2002| r2002_12(glval<unknown>) = VariableAddress[#temp2002:6] : -# 2002| mu2002_13(glval<int>) = Store[#temp2002:6] : &:r2002_12, r2002_11 +# 2049| Block 12 +# 2049| r2049_11(glval<int>) = VariableAddress[y] : +# 2049| r2049_12(glval<unknown>) = VariableAddress[#temp2049:6] : +# 2049| mu2049_13(glval<int>) = Store[#temp2049:6] : &:r2049_12, r2049_11 #-----| Goto -> Block 10 -# 2008| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2008| Block 0 -# 2008| v2008_1(void) = EnterFunction : -# 2008| mu2008_2(unknown) = AliasedDefinition : -# 2008| mu2008_3(unknown) = InitializeNonLocal : -# 2008| r2008_4(glval<bool>) = VariableAddress[a] : -# 2008| mu2008_5(bool) = InitializeParameter[a] : &:r2008_4 -# 2008| r2008_6(glval<TernaryPodObj>) = VariableAddress[x] : -# 2008| mu2008_7(TernaryPodObj) = InitializeParameter[x] : &:r2008_6 -# 2008| r2008_8(glval<TernaryPodObj>) = VariableAddress[y] : -# 2008| mu2008_9(TernaryPodObj) = InitializeParameter[y] : &:r2008_8 -# 2008| r2008_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2008| mu2008_11(TernaryPodObj) = InitializeParameter[z] : &:r2008_10 -# 2009| r2009_1(glval<bool>) = VariableAddress[a] : -# 2009| r2009_2(bool) = Load[a] : &:r2009_1, ~m? -# 2009| v2009_3(void) = ConditionalBranch : r2009_2 +# 2055| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2055| Block 0 +# 2055| v2055_1(void) = EnterFunction : +# 2055| mu2055_2(unknown) = AliasedDefinition : +# 2055| mu2055_3(unknown) = InitializeNonLocal : +# 2055| r2055_4(glval<bool>) = VariableAddress[a] : +# 2055| mu2055_5(bool) = InitializeParameter[a] : &:r2055_4 +# 2055| r2055_6(glval<TernaryPodObj>) = VariableAddress[x] : +# 2055| mu2055_7(TernaryPodObj) = InitializeParameter[x] : &:r2055_6 +# 2055| r2055_8(glval<TernaryPodObj>) = VariableAddress[y] : +# 2055| mu2055_9(TernaryPodObj) = InitializeParameter[y] : &:r2055_8 +# 2055| r2055_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2055| mu2055_11(TernaryPodObj) = InitializeParameter[z] : &:r2055_10 +# 2056| r2056_1(glval<bool>) = VariableAddress[a] : +# 2056| r2056_2(bool) = Load[a] : &:r2056_1, ~m? +# 2056| v2056_3(void) = ConditionalBranch : r2056_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2009| Block 1 -# 2009| r2009_4(glval<TernaryPodObj>) = VariableAddress[#temp2009:9] : -# 2009| r2009_5(TernaryPodObj) = Load[#temp2009:9] : &:r2009_4, ~m? -# 2009| r2009_6(glval<TernaryPodObj>) = VariableAddress[z] : -# 2009| mu2009_7(TernaryPodObj) = Store[z] : &:r2009_6, r2009_5 -# 2010| r2010_1(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| r2010_2(glval<bool>) = VariableAddress[a] : -# 2010| r2010_3(bool) = Load[a] : &:r2010_2, ~m? -# 2010| v2010_4(void) = ConditionalBranch : r2010_3 +# 2056| Block 1 +# 2056| r2056_4(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : +# 2056| r2056_5(TernaryPodObj) = Load[#temp2056:9] : &:r2056_4, ~m? +# 2056| r2056_6(glval<TernaryPodObj>) = VariableAddress[z] : +# 2056| mu2056_7(TernaryPodObj) = Store[z] : &:r2056_6, r2056_5 +# 2057| r2057_1(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| r2057_2(glval<bool>) = VariableAddress[a] : +# 2057| r2057_3(bool) = Load[a] : &:r2057_2, ~m? +# 2057| v2057_4(void) = ConditionalBranch : r2057_3 #-----| False -> Block 6 #-----| True -> Block 5 -# 2009| Block 2 -# 2009| r2009_8(glval<TernaryPodObj>) = VariableAddress[x] : -# 2009| r2009_9(TernaryPodObj) = Load[x] : &:r2009_8, ~m? -# 2009| r2009_10(glval<TernaryPodObj>) = VariableAddress[#temp2009:9] : -# 2009| mu2009_11(TernaryPodObj) = Store[#temp2009:9] : &:r2009_10, r2009_9 +# 2056| Block 2 +# 2056| r2056_8(glval<TernaryPodObj>) = VariableAddress[x] : +# 2056| r2056_9(TernaryPodObj) = Load[x] : &:r2056_8, ~m? +# 2056| r2056_10(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : +# 2056| mu2056_11(TernaryPodObj) = Store[#temp2056:9] : &:r2056_10, r2056_9 #-----| Goto -> Block 1 -# 2009| Block 3 -# 2009| r2009_12(glval<TernaryPodObj>) = VariableAddress[y] : -# 2009| r2009_13(TernaryPodObj) = Load[y] : &:r2009_12, ~m? -# 2009| r2009_14(glval<TernaryPodObj>) = VariableAddress[#temp2009:9] : -# 2009| mu2009_15(TernaryPodObj) = Store[#temp2009:9] : &:r2009_14, r2009_13 +# 2056| Block 3 +# 2056| r2056_12(glval<TernaryPodObj>) = VariableAddress[y] : +# 2056| r2056_13(TernaryPodObj) = Load[y] : &:r2056_12, ~m? +# 2056| r2056_14(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : +# 2056| mu2056_15(TernaryPodObj) = Store[#temp2056:9] : &:r2056_14, r2056_13 #-----| Goto -> Block 1 -# 2010| Block 4 -# 2010| r2010_5(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| r2010_6(TernaryPodObj) = Load[#temp2010:9] : &:r2010_5, ~m? -# 2010| mu2010_7(TernaryPodObj) = Store[#temp2010:9] : &:r2010_1, r2010_6 -# 2010| r2010_8(TernaryPodObj) = Load[#temp2010:9] : &:r2010_1, ~m? -# 2010| r2010_9(glval<TernaryPodObj>) = VariableAddress[z] : -# 2010| mu2010_10(TernaryPodObj) = Store[z] : &:r2010_9, r2010_8 -# 2011| r2011_1(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| r2011_2(glval<bool>) = VariableAddress[a] : -# 2011| r2011_3(bool) = Load[a] : &:r2011_2, ~m? -# 2011| v2011_4(void) = ConditionalBranch : r2011_3 +# 2057| Block 4 +# 2057| r2057_5(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| r2057_6(TernaryPodObj) = Load[#temp2057:9] : &:r2057_5, ~m? +# 2057| mu2057_7(TernaryPodObj) = Store[#temp2057:9] : &:r2057_1, r2057_6 +# 2057| r2057_8(TernaryPodObj) = Load[#temp2057:9] : &:r2057_1, ~m? +# 2057| r2057_9(glval<TernaryPodObj>) = VariableAddress[z] : +# 2057| mu2057_10(TernaryPodObj) = Store[z] : &:r2057_9, r2057_8 +# 2058| r2058_1(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| r2058_2(glval<bool>) = VariableAddress[a] : +# 2058| r2058_3(bool) = Load[a] : &:r2058_2, ~m? +# 2058| v2058_4(void) = ConditionalBranch : r2058_3 #-----| False -> Block 9 #-----| True -> Block 8 -# 2010| Block 5 -# 2010| r2010_11(glval<TernaryPodObj>) = VariableAddress[#temp2010:13] : -# 2010| r2010_12(glval<TernaryPodObj>) = VariableAddress[x] : -# 2010| r2010_13(TernaryPodObj) = Load[x] : &:r2010_12, ~m? -# 2010| mu2010_14(TernaryPodObj) = Store[#temp2010:13] : &:r2010_11, r2010_13 -# 2010| r2010_15(TernaryPodObj) = Load[#temp2010:13] : &:r2010_11, ~m? -# 2010| r2010_16(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| mu2010_17(TernaryPodObj) = Store[#temp2010:9] : &:r2010_16, r2010_15 +# 2057| Block 5 +# 2057| r2057_11(glval<TernaryPodObj>) = VariableAddress[#temp2057:13] : +# 2057| r2057_12(glval<TernaryPodObj>) = VariableAddress[x] : +# 2057| r2057_13(TernaryPodObj) = Load[x] : &:r2057_12, ~m? +# 2057| mu2057_14(TernaryPodObj) = Store[#temp2057:13] : &:r2057_11, r2057_13 +# 2057| r2057_15(TernaryPodObj) = Load[#temp2057:13] : &:r2057_11, ~m? +# 2057| r2057_16(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| mu2057_17(TernaryPodObj) = Store[#temp2057:9] : &:r2057_16, r2057_15 #-----| Goto -> Block 4 -# 2010| Block 6 -# 2010| r2010_18(glval<TernaryPodObj>) = VariableAddress[#temp2010:17] : -# 2010| r2010_19(TernaryPodObj) = Constant[0] : -# 2010| mu2010_20(TernaryPodObj) = Store[#temp2010:17] : &:r2010_18, r2010_19 -# 2010| r2010_21(TernaryPodObj) = Load[#temp2010:17] : &:r2010_18, ~m? -# 2010| r2010_22(glval<TernaryPodObj>) = VariableAddress[#temp2010:9] : -# 2010| mu2010_23(TernaryPodObj) = Store[#temp2010:9] : &:r2010_22, r2010_21 +# 2057| Block 6 +# 2057| r2057_18(glval<TernaryPodObj>) = VariableAddress[#temp2057:17] : +# 2057| r2057_19(TernaryPodObj) = Constant[0] : +# 2057| mu2057_20(TernaryPodObj) = Store[#temp2057:17] : &:r2057_18, r2057_19 +# 2057| r2057_21(TernaryPodObj) = Load[#temp2057:17] : &:r2057_18, ~m? +# 2057| r2057_22(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : +# 2057| mu2057_23(TernaryPodObj) = Store[#temp2057:9] : &:r2057_22, r2057_21 #-----| Goto -> Block 4 -# 2011| Block 7 -# 2011| r2011_5(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| r2011_6(TernaryPodObj) = Load[#temp2011:9] : &:r2011_5, ~m? -# 2011| mu2011_7(TernaryPodObj) = Store[#temp2011:9] : &:r2011_1, r2011_6 -# 2011| r2011_8(TernaryPodObj) = Load[#temp2011:9] : &:r2011_1, ~m? -# 2011| r2011_9(glval<TernaryPodObj>) = VariableAddress[z] : -# 2011| mu2011_10(TernaryPodObj) = Store[z] : &:r2011_9, r2011_8 -# 2012| r2012_1(glval<TernaryPodObj>) = VariableAddress[#temp2012:23] : -# 2012| r2012_2(TernaryPodObj) = Constant[0] : -# 2012| mu2012_3(TernaryPodObj) = Store[#temp2012:23] : &:r2012_1, r2012_2 -# 2012| r2012_4(TernaryPodObj) = Load[#temp2012:23] : &:r2012_1, ~m? -# 2012| r2012_5(glval<bool>) = VariableAddress[a] : -# 2012| r2012_6(bool) = Load[a] : &:r2012_5, ~m? -# 2012| v2012_7(void) = ConditionalBranch : r2012_6 +# 2058| Block 7 +# 2058| r2058_5(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| r2058_6(TernaryPodObj) = Load[#temp2058:9] : &:r2058_5, ~m? +# 2058| mu2058_7(TernaryPodObj) = Store[#temp2058:9] : &:r2058_1, r2058_6 +# 2058| r2058_8(TernaryPodObj) = Load[#temp2058:9] : &:r2058_1, ~m? +# 2058| r2058_9(glval<TernaryPodObj>) = VariableAddress[z] : +# 2058| mu2058_10(TernaryPodObj) = Store[z] : &:r2058_9, r2058_8 +# 2059| r2059_1(glval<TernaryPodObj>) = VariableAddress[#temp2059:23] : +# 2059| r2059_2(TernaryPodObj) = Constant[0] : +# 2059| mu2059_3(TernaryPodObj) = Store[#temp2059:23] : &:r2059_1, r2059_2 +# 2059| r2059_4(TernaryPodObj) = Load[#temp2059:23] : &:r2059_1, ~m? +# 2059| r2059_5(glval<bool>) = VariableAddress[a] : +# 2059| r2059_6(bool) = Load[a] : &:r2059_5, ~m? +# 2059| v2059_7(void) = ConditionalBranch : r2059_6 #-----| False -> Block 12 #-----| True -> Block 11 -# 2011| Block 8 -# 2011| r2011_11(glval<TernaryPodObj>) = VariableAddress[#temp2011:13] : -# 2011| r2011_12(TernaryPodObj) = Constant[0] : -# 2011| mu2011_13(TernaryPodObj) = Store[#temp2011:13] : &:r2011_11, r2011_12 -# 2011| r2011_14(TernaryPodObj) = Load[#temp2011:13] : &:r2011_11, ~m? -# 2011| r2011_15(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| mu2011_16(TernaryPodObj) = Store[#temp2011:9] : &:r2011_15, r2011_14 +# 2058| Block 8 +# 2058| r2058_11(glval<TernaryPodObj>) = VariableAddress[#temp2058:13] : +# 2058| r2058_12(TernaryPodObj) = Constant[0] : +# 2058| mu2058_13(TernaryPodObj) = Store[#temp2058:13] : &:r2058_11, r2058_12 +# 2058| r2058_14(TernaryPodObj) = Load[#temp2058:13] : &:r2058_11, ~m? +# 2058| r2058_15(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| mu2058_16(TernaryPodObj) = Store[#temp2058:9] : &:r2058_15, r2058_14 #-----| Goto -> Block 7 -# 2011| Block 9 -# 2011| r2011_17(glval<TernaryPodObj>) = VariableAddress[#temp2011:31] : -# 2011| r2011_18(TernaryPodObj) = Constant[0] : -# 2011| mu2011_19(TernaryPodObj) = Store[#temp2011:31] : &:r2011_17, r2011_18 -# 2011| r2011_20(TernaryPodObj) = Load[#temp2011:31] : &:r2011_17, ~m? -# 2011| r2011_21(glval<TernaryPodObj>) = VariableAddress[#temp2011:9] : -# 2011| mu2011_22(TernaryPodObj) = Store[#temp2011:9] : &:r2011_21, r2011_20 +# 2058| Block 9 +# 2058| r2058_17(glval<TernaryPodObj>) = VariableAddress[#temp2058:31] : +# 2058| r2058_18(TernaryPodObj) = Constant[0] : +# 2058| mu2058_19(TernaryPodObj) = Store[#temp2058:31] : &:r2058_17, r2058_18 +# 2058| r2058_20(TernaryPodObj) = Load[#temp2058:31] : &:r2058_17, ~m? +# 2058| r2058_21(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : +# 2058| mu2058_22(TernaryPodObj) = Store[#temp2058:9] : &:r2058_21, r2058_20 #-----| Goto -> Block 7 -# 2012| Block 10 -# 2012| r2012_8(glval<TernaryPodObj>) = VariableAddress[#temp2012:10] : -# 2012| r2012_9(TernaryPodObj) = Load[#temp2012:10] : &:r2012_8, ~m? -# 2012| r2012_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2012| mu2012_11(TernaryPodObj) = Store[z] : &:r2012_10, r2012_9 -# 2012| r2012_12(glval<TernaryPodObj>) = CopyValue : r2012_10 -# 2012| mu2012_13(TernaryPodObj) = Store[?] : &:r2012_12, r2012_4 -# 2013| v2013_1(void) = NoOp : -# 2008| v2008_12(void) = ReturnVoid : -# 2008| v2008_13(void) = AliasedUse : ~m? -# 2008| v2008_14(void) = ExitFunction : - -# 2012| Block 11 -# 2012| r2012_14(glval<TernaryPodObj>) = VariableAddress[x] : -# 2012| r2012_15(TernaryPodObj) = Load[x] : &:r2012_14, ~m? -# 2012| r2012_16(glval<TernaryPodObj>) = VariableAddress[#temp2012:10] : -# 2012| mu2012_17(TernaryPodObj) = Store[#temp2012:10] : &:r2012_16, r2012_15 +# 2059| Block 10 +# 2059| r2059_8(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : +# 2059| r2059_9(TernaryPodObj) = Load[#temp2059:10] : &:r2059_8, ~m? +# 2059| r2059_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2059| mu2059_11(TernaryPodObj) = Store[z] : &:r2059_10, r2059_9 +# 2059| r2059_12(glval<TernaryPodObj>) = CopyValue : r2059_10 +# 2059| mu2059_13(TernaryPodObj) = Store[?] : &:r2059_12, r2059_4 +# 2060| v2060_1(void) = NoOp : +# 2055| v2055_12(void) = ReturnVoid : +# 2055| v2055_13(void) = AliasedUse : ~m? +# 2055| v2055_14(void) = ExitFunction : + +# 2059| Block 11 +# 2059| r2059_14(glval<TernaryPodObj>) = VariableAddress[x] : +# 2059| r2059_15(TernaryPodObj) = Load[x] : &:r2059_14, ~m? +# 2059| r2059_16(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : +# 2059| mu2059_17(TernaryPodObj) = Store[#temp2059:10] : &:r2059_16, r2059_15 #-----| Goto -> Block 10 -# 2012| Block 12 -# 2012| r2012_18(glval<TernaryPodObj>) = VariableAddress[y] : -# 2012| r2012_19(TernaryPodObj) = Load[y] : &:r2012_18, ~m? -# 2012| r2012_20(glval<TernaryPodObj>) = VariableAddress[#temp2012:10] : -# 2012| mu2012_21(TernaryPodObj) = Store[#temp2012:10] : &:r2012_20, r2012_19 +# 2059| Block 12 +# 2059| r2059_18(glval<TernaryPodObj>) = VariableAddress[y] : +# 2059| r2059_19(TernaryPodObj) = Load[y] : &:r2059_18, ~m? +# 2059| r2059_20(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : +# 2059| mu2059_21(TernaryPodObj) = Store[#temp2059:10] : &:r2059_20, r2059_19 #-----| Goto -> Block 10 -# 2015| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2015| Block 0 -# 2015| v2015_1(void) = EnterFunction : -# 2015| mu2015_2(unknown) = AliasedDefinition : -# 2015| mu2015_3(unknown) = InitializeNonLocal : -# 2015| r2015_4(glval<unknown>) = VariableAddress[#this] : -# 2015| mu2015_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2015_4 -# 2015| r2015_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2015_4, ~m? -# 2015| mu2015_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_6 +# 2062| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2062| Block 0 +# 2062| v2062_1(void) = EnterFunction : +# 2062| mu2062_2(unknown) = AliasedDefinition : +# 2062| mu2062_3(unknown) = InitializeNonLocal : +# 2062| r2062_4(glval<unknown>) = VariableAddress[#this] : +# 2062| mu2062_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_4 +# 2062| r2062_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_4, ~m? +# 2062| mu2062_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_6 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? @@ -11455,2478 +11473,2523 @@ ir.cpp: #-----| r0_8(glval<TernaryNonPodObj>) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| mu0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2015| v2015_8(void) = ReturnIndirection[#this] : &:r2015_6, ~m? +# 2062| v2062_8(void) = ReturnIndirection[#this] : &:r2062_6, ~m? #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2015| r2015_9(glval<TernaryNonPodObj &>) = VariableAddress[#return] : -# 2015| v2015_10(void) = ReturnValue : &:r2015_9, ~m? -# 2015| v2015_11(void) = AliasedUse : ~m? -# 2015| v2015_12(void) = ExitFunction : - -# 2015| void TernaryNonPodObj::TernaryNonPodObj() -# 2015| Block 0 -# 2015| v2015_1(void) = EnterFunction : -# 2015| mu2015_2(unknown) = AliasedDefinition : -# 2015| mu2015_3(unknown) = InitializeNonLocal : -# 2015| r2015_4(glval<unknown>) = VariableAddress[#this] : -# 2015| mu2015_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2015_4 -# 2015| r2015_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2015_4, ~m? -# 2015| mu2015_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_6 -# 2015| v2015_8(void) = NoOp : -# 2015| v2015_9(void) = ReturnIndirection[#this] : &:r2015_6, ~m? -# 2015| v2015_10(void) = ReturnVoid : -# 2015| v2015_11(void) = AliasedUse : ~m? -# 2015| v2015_12(void) = ExitFunction : - -# 2015| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2015| Block 0 -# 2015| v2015_1(void) = EnterFunction : -# 2015| mu2015_2(unknown) = AliasedDefinition : -# 2015| mu2015_3(unknown) = InitializeNonLocal : -# 2015| r2015_4(glval<unknown>) = VariableAddress[#this] : -# 2015| mu2015_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2015_4 -# 2015| r2015_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2015_4, ~m? -# 2015| mu2015_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2015_6 +# 2062| r2062_9(glval<TernaryNonPodObj &>) = VariableAddress[#return] : +# 2062| v2062_10(void) = ReturnValue : &:r2062_9, ~m? +# 2062| v2062_11(void) = AliasedUse : ~m? +# 2062| v2062_12(void) = ExitFunction : + +# 2062| void TernaryNonPodObj::TernaryNonPodObj() +# 2062| Block 0 +# 2062| v2062_1(void) = EnterFunction : +# 2062| mu2062_2(unknown) = AliasedDefinition : +# 2062| mu2062_3(unknown) = InitializeNonLocal : +# 2062| r2062_4(glval<unknown>) = VariableAddress[#this] : +# 2062| mu2062_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_4 +# 2062| r2062_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_4, ~m? +# 2062| mu2062_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_6 +# 2062| v2062_8(void) = NoOp : +# 2062| v2062_9(void) = ReturnIndirection[#this] : &:r2062_6, ~m? +# 2062| v2062_10(void) = ReturnVoid : +# 2062| v2062_11(void) = AliasedUse : ~m? +# 2062| v2062_12(void) = ExitFunction : + +# 2062| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2062| Block 0 +# 2062| v2062_1(void) = EnterFunction : +# 2062| mu2062_2(unknown) = AliasedDefinition : +# 2062| mu2062_3(unknown) = InitializeNonLocal : +# 2062| r2062_4(glval<unknown>) = VariableAddress[#this] : +# 2062| mu2062_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_4 +# 2062| r2062_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_4, ~m? +# 2062| mu2062_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_6 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2015| v2015_8(void) = NoOp : -# 2015| v2015_9(void) = ReturnIndirection[#this] : &:r2015_6, ~m? +# 2062| v2062_8(void) = NoOp : +# 2062| v2062_9(void) = ReturnIndirection[#this] : &:r2062_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2015| v2015_10(void) = ReturnVoid : -# 2015| v2015_11(void) = AliasedUse : ~m? -# 2015| v2015_12(void) = ExitFunction : - -# 2016| void TernaryNonPodObj::~TernaryNonPodObj() -# 2016| Block 0 -# 2016| v2016_1(void) = EnterFunction : -# 2016| mu2016_2(unknown) = AliasedDefinition : -# 2016| mu2016_3(unknown) = InitializeNonLocal : -# 2016| r2016_4(glval<unknown>) = VariableAddress[#this] : -# 2016| mu2016_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2016_4 -# 2016| r2016_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2016_4, ~m? -# 2016| mu2016_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2016_6 -# 2016| v2016_8(void) = NoOp : -# 2016| v2016_9(void) = ReturnIndirection[#this] : &:r2016_6, ~m? -# 2016| v2016_10(void) = ReturnVoid : -# 2016| v2016_11(void) = AliasedUse : ~m? -# 2016| v2016_12(void) = ExitFunction : - -# 2019| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2019| Block 0 -# 2019| v2019_1(void) = EnterFunction : -# 2019| mu2019_2(unknown) = AliasedDefinition : -# 2019| mu2019_3(unknown) = InitializeNonLocal : -# 2019| r2019_4(glval<bool>) = VariableAddress[a] : -# 2019| mu2019_5(bool) = InitializeParameter[a] : &:r2019_4 -# 2019| r2019_6(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2019| mu2019_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2019_6 -# 2019| r2019_8(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2019| mu2019_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2019_8 -# 2019| r2019_10(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2019| mu2019_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2019_10 -# 2020| r2020_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2020| r2020_2(glval<unknown>) = FunctionAddress[operator=] : -# 2020| r2020_3(glval<bool>) = VariableAddress[a] : -# 2020| r2020_4(bool) = Load[a] : &:r2020_3, ~m? -# 2020| v2020_5(void) = ConditionalBranch : r2020_4 +# 2062| v2062_10(void) = ReturnVoid : +# 2062| v2062_11(void) = AliasedUse : ~m? +# 2062| v2062_12(void) = ExitFunction : + +# 2063| void TernaryNonPodObj::~TernaryNonPodObj() +# 2063| Block 0 +# 2063| v2063_1(void) = EnterFunction : +# 2063| mu2063_2(unknown) = AliasedDefinition : +# 2063| mu2063_3(unknown) = InitializeNonLocal : +# 2063| r2063_4(glval<unknown>) = VariableAddress[#this] : +# 2063| mu2063_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2063_4 +# 2063| r2063_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2063_4, ~m? +# 2063| mu2063_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2063_6 +# 2063| v2063_8(void) = NoOp : +# 2063| v2063_9(void) = ReturnIndirection[#this] : &:r2063_6, ~m? +# 2063| v2063_10(void) = ReturnVoid : +# 2063| v2063_11(void) = AliasedUse : ~m? +# 2063| v2063_12(void) = ExitFunction : + +# 2066| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2066| Block 0 +# 2066| v2066_1(void) = EnterFunction : +# 2066| mu2066_2(unknown) = AliasedDefinition : +# 2066| mu2066_3(unknown) = InitializeNonLocal : +# 2066| r2066_4(glval<bool>) = VariableAddress[a] : +# 2066| mu2066_5(bool) = InitializeParameter[a] : &:r2066_4 +# 2066| r2066_6(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2066| mu2066_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2066_6 +# 2066| r2066_8(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2066| mu2066_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2066_8 +# 2066| r2066_10(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2066| mu2066_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2066_10 +# 2067| r2067_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2067| r2067_2(glval<unknown>) = FunctionAddress[operator=] : +# 2067| r2067_3(glval<bool>) = VariableAddress[a] : +# 2067| r2067_4(bool) = Load[a] : &:r2067_3, ~m? +# 2067| v2067_5(void) = ConditionalBranch : r2067_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2020| Block 1 -# 2020| r2020_6(glval<unknown>) = VariableAddress[#temp2020:9] : -# 2020| r2020_7(glval<TernaryNonPodObj>) = Load[#temp2020:9] : &:r2020_6, ~m? -# 2020| r2020_8(glval<TernaryNonPodObj>) = Convert : r2020_7 -# 2020| r2020_9(TernaryNonPodObj &) = CopyValue : r2020_8 -# 2020| r2020_10(TernaryNonPodObj &) = Call[operator=] : func:r2020_2, this:r2020_1, 0:r2020_9 -# 2020| mu2020_11(unknown) = ^CallSideEffect : ~m? -# 2020| v2020_12(void) = ^IndirectReadSideEffect[-1] : &:r2020_1, ~m? -# 2020| v2020_13(void) = ^BufferReadSideEffect[0] : &:r2020_9, ~m? -# 2020| mu2020_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2020_1 -# 2020| r2020_15(glval<TernaryNonPodObj>) = CopyValue : r2020_10 -# 2021| r2021_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2021| r2021_2(glval<unknown>) = FunctionAddress[operator=] : -# 2021| r2021_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| r2021_4(glval<bool>) = VariableAddress[a] : -# 2021| r2021_5(bool) = Load[a] : &:r2021_4, ~m? -# 2021| v2021_6(void) = ConditionalBranch : r2021_5 +# 2067| Block 1 +# 2067| r2067_6(glval<unknown>) = VariableAddress[#temp2067:9] : +# 2067| r2067_7(glval<TernaryNonPodObj>) = Load[#temp2067:9] : &:r2067_6, ~m? +# 2067| r2067_8(glval<TernaryNonPodObj>) = Convert : r2067_7 +# 2067| r2067_9(TernaryNonPodObj &) = CopyValue : r2067_8 +# 2067| r2067_10(TernaryNonPodObj &) = Call[operator=] : func:r2067_2, this:r2067_1, 0:r2067_9 +# 2067| mu2067_11(unknown) = ^CallSideEffect : ~m? +# 2067| v2067_12(void) = ^IndirectReadSideEffect[-1] : &:r2067_1, ~m? +# 2067| v2067_13(void) = ^BufferReadSideEffect[0] : &:r2067_9, ~m? +# 2067| mu2067_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2067_1 +# 2067| r2067_15(glval<TernaryNonPodObj>) = CopyValue : r2067_10 +# 2068| r2068_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2068| r2068_2(glval<unknown>) = FunctionAddress[operator=] : +# 2068| r2068_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| r2068_4(glval<bool>) = VariableAddress[a] : +# 2068| r2068_5(bool) = Load[a] : &:r2068_4, ~m? +# 2068| v2068_6(void) = ConditionalBranch : r2068_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2020| Block 2 -# 2020| r2020_16(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2020| r2020_17(glval<unknown>) = VariableAddress[#temp2020:9] : -# 2020| mu2020_18(glval<TernaryNonPodObj>) = Store[#temp2020:9] : &:r2020_17, r2020_16 +# 2067| Block 2 +# 2067| r2067_16(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2067| r2067_17(glval<unknown>) = VariableAddress[#temp2067:9] : +# 2067| mu2067_18(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_17, r2067_16 #-----| Goto -> Block 1 -# 2020| Block 3 -# 2020| r2020_19(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2020| r2020_20(glval<unknown>) = VariableAddress[#temp2020:9] : -# 2020| mu2020_21(glval<TernaryNonPodObj>) = Store[#temp2020:9] : &:r2020_20, r2020_19 +# 2067| Block 3 +# 2067| r2067_19(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2067| r2067_20(glval<unknown>) = VariableAddress[#temp2067:9] : +# 2067| mu2067_21(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_20, r2067_19 #-----| Goto -> Block 1 -# 2021| Block 4 -# 2021| r2021_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| r2021_8(TernaryNonPodObj) = Load[#temp2021:9] : &:r2021_7, ~m? -# 2021| mu2021_9(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_3, r2021_8 -# 2021| r2021_10(glval<TernaryNonPodObj>) = Convert : r2021_3 -# 2021| r2021_11(TernaryNonPodObj &) = CopyValue : r2021_10 -# 2021| r2021_12(TernaryNonPodObj &) = Call[operator=] : func:r2021_2, this:r2021_1, 0:r2021_11 -# 2021| mu2021_13(unknown) = ^CallSideEffect : ~m? -# 2021| v2021_14(void) = ^IndirectReadSideEffect[-1] : &:r2021_1, ~m? -# 2021| v2021_15(void) = ^BufferReadSideEffect[0] : &:r2021_11, ~m? -# 2021| mu2021_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_1 -# 2021| r2021_17(glval<TernaryNonPodObj>) = CopyValue : r2021_12 -# 2022| r2022_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2022| r2022_2(glval<unknown>) = FunctionAddress[operator=] : -# 2022| r2022_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| r2022_4(glval<bool>) = VariableAddress[a] : -# 2022| r2022_5(bool) = Load[a] : &:r2022_4, ~m? -# 2022| v2022_6(void) = ConditionalBranch : r2022_5 +# 2068| Block 4 +# 2068| r2068_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| r2068_8(TernaryNonPodObj) = Load[#temp2068:9] : &:r2068_7, ~m? +# 2068| mu2068_9(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_3, r2068_8 +# 2068| r2068_10(glval<TernaryNonPodObj>) = Convert : r2068_3 +# 2068| r2068_11(TernaryNonPodObj &) = CopyValue : r2068_10 +# 2068| r2068_12(TernaryNonPodObj &) = Call[operator=] : func:r2068_2, this:r2068_1, 0:r2068_11 +# 2068| mu2068_13(unknown) = ^CallSideEffect : ~m? +# 2068| v2068_14(void) = ^IndirectReadSideEffect[-1] : &:r2068_1, ~m? +# 2068| v2068_15(void) = ^BufferReadSideEffect[0] : &:r2068_11, ~m? +# 2068| mu2068_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_1 +# 2068| r2068_17(glval<TernaryNonPodObj>) = CopyValue : r2068_12 +# 2069| r2069_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2069| r2069_2(glval<unknown>) = FunctionAddress[operator=] : +# 2069| r2069_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| r2069_4(glval<bool>) = VariableAddress[a] : +# 2069| r2069_5(bool) = Load[a] : &:r2069_4, ~m? +# 2069| v2069_6(void) = ConditionalBranch : r2069_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2021| Block 5 -# 2021| r2021_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:13] : -# 2021| mu2021_19(TernaryNonPodObj) = Uninitialized[#temp2021:13] : &:r2021_18 -# 2021| r2021_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2021| r2021_21(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2021| r2021_22(glval<TernaryNonPodObj>) = Convert : r2021_21 -# 2021| r2021_23(TernaryNonPodObj &) = CopyValue : r2021_22 -# 2021| v2021_24(void) = Call[TernaryNonPodObj] : func:r2021_20, this:r2021_18, 0:r2021_23 -# 2021| mu2021_25(unknown) = ^CallSideEffect : ~m? -# 2021| v2021_26(void) = ^BufferReadSideEffect[0] : &:r2021_23, ~m? -# 2021| mu2021_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_18 -# 2021| r2021_28(TernaryNonPodObj) = Load[#temp2021:13] : &:r2021_18, ~m? -# 2021| r2021_29(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| mu2021_30(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_29, r2021_28 +# 2068| Block 5 +# 2068| r2068_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:13] : +# 2068| mu2068_19(TernaryNonPodObj) = Uninitialized[#temp2068:13] : &:r2068_18 +# 2068| r2068_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2068| r2068_21(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2068| r2068_22(glval<TernaryNonPodObj>) = Convert : r2068_21 +# 2068| r2068_23(TernaryNonPodObj &) = CopyValue : r2068_22 +# 2068| v2068_24(void) = Call[TernaryNonPodObj] : func:r2068_20, this:r2068_18, 0:r2068_23 +# 2068| mu2068_25(unknown) = ^CallSideEffect : ~m? +# 2068| v2068_26(void) = ^BufferReadSideEffect[0] : &:r2068_23, ~m? +# 2068| mu2068_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_18 +# 2068| r2068_28(TernaryNonPodObj) = Load[#temp2068:13] : &:r2068_18, ~m? +# 2068| r2068_29(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| mu2068_30(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_29, r2068_28 #-----| Goto -> Block 4 -# 2021| Block 6 -# 2021| r2021_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:17] : -# 2021| mu2021_32(TernaryNonPodObj) = Uninitialized[#temp2021:17] : &:r2021_31 -# 2021| r2021_33(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2021| v2021_34(void) = Call[TernaryNonPodObj] : func:r2021_33, this:r2021_31 -# 2021| mu2021_35(unknown) = ^CallSideEffect : ~m? -# 2021| mu2021_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2021_31 -# 2021| r2021_37(TernaryNonPodObj) = Load[#temp2021:17] : &:r2021_31, ~m? -# 2021| r2021_38(glval<TernaryNonPodObj>) = VariableAddress[#temp2021:9] : -# 2021| mu2021_39(TernaryNonPodObj) = Store[#temp2021:9] : &:r2021_38, r2021_37 +# 2068| Block 6 +# 2068| r2068_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:17] : +# 2068| mu2068_32(TernaryNonPodObj) = Uninitialized[#temp2068:17] : &:r2068_31 +# 2068| r2068_33(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2068| v2068_34(void) = Call[TernaryNonPodObj] : func:r2068_33, this:r2068_31 +# 2068| mu2068_35(unknown) = ^CallSideEffect : ~m? +# 2068| mu2068_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_31 +# 2068| r2068_37(TernaryNonPodObj) = Load[#temp2068:17] : &:r2068_31, ~m? +# 2068| r2068_38(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : +# 2068| mu2068_39(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_38, r2068_37 #-----| Goto -> Block 4 -# 2022| Block 7 -# 2022| r2022_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| r2022_8(TernaryNonPodObj) = Load[#temp2022:9] : &:r2022_7, ~m? -# 2022| mu2022_9(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_3, r2022_8 -# 2022| r2022_10(glval<TernaryNonPodObj>) = Convert : r2022_3 -# 2022| r2022_11(TernaryNonPodObj &) = CopyValue : r2022_10 -# 2022| r2022_12(TernaryNonPodObj &) = Call[operator=] : func:r2022_2, this:r2022_1, 0:r2022_11 -# 2022| mu2022_13(unknown) = ^CallSideEffect : ~m? -# 2022| v2022_14(void) = ^IndirectReadSideEffect[-1] : &:r2022_1, ~m? -# 2022| v2022_15(void) = ^BufferReadSideEffect[0] : &:r2022_11, ~m? -# 2022| mu2022_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_1 -# 2022| r2022_17(glval<TernaryNonPodObj>) = CopyValue : r2022_12 -# 2023| r2023_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2023| r2023_2(glval<unknown>) = FunctionAddress[operator=] : -# 2023| r2023_3(glval<bool>) = VariableAddress[a] : -# 2023| r2023_4(bool) = Load[a] : &:r2023_3, ~m? -# 2023| v2023_5(void) = ConditionalBranch : r2023_4 +# 2069| Block 7 +# 2069| r2069_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| r2069_8(TernaryNonPodObj) = Load[#temp2069:9] : &:r2069_7, ~m? +# 2069| mu2069_9(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_3, r2069_8 +# 2069| r2069_10(glval<TernaryNonPodObj>) = Convert : r2069_3 +# 2069| r2069_11(TernaryNonPodObj &) = CopyValue : r2069_10 +# 2069| r2069_12(TernaryNonPodObj &) = Call[operator=] : func:r2069_2, this:r2069_1, 0:r2069_11 +# 2069| mu2069_13(unknown) = ^CallSideEffect : ~m? +# 2069| v2069_14(void) = ^IndirectReadSideEffect[-1] : &:r2069_1, ~m? +# 2069| v2069_15(void) = ^BufferReadSideEffect[0] : &:r2069_11, ~m? +# 2069| mu2069_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_1 +# 2069| r2069_17(glval<TernaryNonPodObj>) = CopyValue : r2069_12 +# 2070| r2070_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2070| r2070_2(glval<unknown>) = FunctionAddress[operator=] : +# 2070| r2070_3(glval<bool>) = VariableAddress[a] : +# 2070| r2070_4(bool) = Load[a] : &:r2070_3, ~m? +# 2070| v2070_5(void) = ConditionalBranch : r2070_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2022| Block 8 -# 2022| r2022_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:13] : -# 2022| mu2022_19(TernaryNonPodObj) = Uninitialized[#temp2022:13] : &:r2022_18 -# 2022| r2022_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2022| v2022_21(void) = Call[TernaryNonPodObj] : func:r2022_20, this:r2022_18 -# 2022| mu2022_22(unknown) = ^CallSideEffect : ~m? -# 2022| mu2022_23(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_18 -# 2022| r2022_24(TernaryNonPodObj) = Load[#temp2022:13] : &:r2022_18, ~m? -# 2022| r2022_25(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| mu2022_26(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_25, r2022_24 +# 2069| Block 8 +# 2069| r2069_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:13] : +# 2069| mu2069_19(TernaryNonPodObj) = Uninitialized[#temp2069:13] : &:r2069_18 +# 2069| r2069_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2069| v2069_21(void) = Call[TernaryNonPodObj] : func:r2069_20, this:r2069_18 +# 2069| mu2069_22(unknown) = ^CallSideEffect : ~m? +# 2069| mu2069_23(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_18 +# 2069| r2069_24(TernaryNonPodObj) = Load[#temp2069:13] : &:r2069_18, ~m? +# 2069| r2069_25(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| mu2069_26(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_25, r2069_24 #-----| Goto -> Block 7 -# 2022| Block 9 -# 2022| r2022_27(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:34] : -# 2022| mu2022_28(TernaryNonPodObj) = Uninitialized[#temp2022:34] : &:r2022_27 -# 2022| r2022_29(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2022| v2022_30(void) = Call[TernaryNonPodObj] : func:r2022_29, this:r2022_27 -# 2022| mu2022_31(unknown) = ^CallSideEffect : ~m? -# 2022| mu2022_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2022_27 -# 2022| r2022_33(TernaryNonPodObj) = Load[#temp2022:34] : &:r2022_27, ~m? -# 2022| r2022_34(glval<TernaryNonPodObj>) = VariableAddress[#temp2022:9] : -# 2022| mu2022_35(TernaryNonPodObj) = Store[#temp2022:9] : &:r2022_34, r2022_33 +# 2069| Block 9 +# 2069| r2069_27(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:34] : +# 2069| mu2069_28(TernaryNonPodObj) = Uninitialized[#temp2069:34] : &:r2069_27 +# 2069| r2069_29(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2069| v2069_30(void) = Call[TernaryNonPodObj] : func:r2069_29, this:r2069_27 +# 2069| mu2069_31(unknown) = ^CallSideEffect : ~m? +# 2069| mu2069_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_27 +# 2069| r2069_33(TernaryNonPodObj) = Load[#temp2069:34] : &:r2069_27, ~m? +# 2069| r2069_34(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : +# 2069| mu2069_35(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_34, r2069_33 #-----| Goto -> Block 7 -# 2023| Block 10 -# 2023| r2023_6(glval<unknown>) = VariableAddress[#temp2023:10] : -# 2023| r2023_7(glval<TernaryNonPodObj>) = Load[#temp2023:10] : &:r2023_6, ~m? -# 2023| r2023_8(glval<TernaryNonPodObj>) = Convert : r2023_7 -# 2023| r2023_9(TernaryNonPodObj &) = CopyValue : r2023_8 -# 2023| r2023_10(TernaryNonPodObj &) = Call[operator=] : func:r2023_2, this:r2023_1, 0:r2023_9 -# 2023| mu2023_11(unknown) = ^CallSideEffect : ~m? -# 2023| v2023_12(void) = ^IndirectReadSideEffect[-1] : &:r2023_1, ~m? -# 2023| v2023_13(void) = ^BufferReadSideEffect[0] : &:r2023_9, ~m? -# 2023| mu2023_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_1 -# 2023| r2023_15(glval<TernaryNonPodObj>) = CopyValue : r2023_10 -# 2023| r2023_16(glval<unknown>) = FunctionAddress[operator=] : -# 2023| r2023_17(glval<TernaryNonPodObj>) = VariableAddress[#temp2023:23] : -# 2023| mu2023_18(TernaryNonPodObj) = Uninitialized[#temp2023:23] : &:r2023_17 -# 2023| r2023_19(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2023| v2023_20(void) = Call[TernaryNonPodObj] : func:r2023_19, this:r2023_17 -# 2023| mu2023_21(unknown) = ^CallSideEffect : ~m? -# 2023| mu2023_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_17 -# 2023| r2023_23(glval<TernaryNonPodObj>) = Convert : r2023_17 -# 2023| r2023_24(TernaryNonPodObj &) = CopyValue : r2023_23 -# 2023| r2023_25(TernaryNonPodObj &) = Call[operator=] : func:r2023_16, this:r2023_15, 0:r2023_24 -# 2023| mu2023_26(unknown) = ^CallSideEffect : ~m? -# 2023| v2023_27(void) = ^IndirectReadSideEffect[-1] : &:r2023_15, ~m? -# 2023| v2023_28(void) = ^BufferReadSideEffect[0] : &:r2023_24, ~m? -# 2023| mu2023_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2023_15 -# 2023| r2023_30(glval<TernaryNonPodObj>) = CopyValue : r2023_25 -# 2024| v2024_1(void) = NoOp : -# 2019| v2019_12(void) = ReturnVoid : -# 2019| v2019_13(void) = AliasedUse : ~m? -# 2019| v2019_14(void) = ExitFunction : - -# 2023| Block 11 -# 2023| r2023_31(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2023| r2023_32(glval<unknown>) = VariableAddress[#temp2023:10] : -# 2023| mu2023_33(glval<TernaryNonPodObj>) = Store[#temp2023:10] : &:r2023_32, r2023_31 +# 2070| Block 10 +# 2070| r2070_6(glval<unknown>) = VariableAddress[#temp2070:10] : +# 2070| r2070_7(glval<TernaryNonPodObj>) = Load[#temp2070:10] : &:r2070_6, ~m? +# 2070| r2070_8(glval<TernaryNonPodObj>) = Convert : r2070_7 +# 2070| r2070_9(TernaryNonPodObj &) = CopyValue : r2070_8 +# 2070| r2070_10(TernaryNonPodObj &) = Call[operator=] : func:r2070_2, this:r2070_1, 0:r2070_9 +# 2070| mu2070_11(unknown) = ^CallSideEffect : ~m? +# 2070| v2070_12(void) = ^IndirectReadSideEffect[-1] : &:r2070_1, ~m? +# 2070| v2070_13(void) = ^BufferReadSideEffect[0] : &:r2070_9, ~m? +# 2070| mu2070_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_1 +# 2070| r2070_15(glval<TernaryNonPodObj>) = CopyValue : r2070_10 +# 2070| r2070_16(glval<unknown>) = FunctionAddress[operator=] : +# 2070| r2070_17(glval<TernaryNonPodObj>) = VariableAddress[#temp2070:23] : +# 2070| mu2070_18(TernaryNonPodObj) = Uninitialized[#temp2070:23] : &:r2070_17 +# 2070| r2070_19(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2070| v2070_20(void) = Call[TernaryNonPodObj] : func:r2070_19, this:r2070_17 +# 2070| mu2070_21(unknown) = ^CallSideEffect : ~m? +# 2070| mu2070_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_17 +# 2070| r2070_23(glval<TernaryNonPodObj>) = Convert : r2070_17 +# 2070| r2070_24(TernaryNonPodObj &) = CopyValue : r2070_23 +# 2070| r2070_25(TernaryNonPodObj &) = Call[operator=] : func:r2070_16, this:r2070_15, 0:r2070_24 +# 2070| mu2070_26(unknown) = ^CallSideEffect : ~m? +# 2070| v2070_27(void) = ^IndirectReadSideEffect[-1] : &:r2070_15, ~m? +# 2070| v2070_28(void) = ^BufferReadSideEffect[0] : &:r2070_24, ~m? +# 2070| mu2070_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_15 +# 2070| r2070_30(glval<TernaryNonPodObj>) = CopyValue : r2070_25 +# 2071| v2071_1(void) = NoOp : +# 2066| v2066_12(void) = ReturnVoid : +# 2066| v2066_13(void) = AliasedUse : ~m? +# 2066| v2066_14(void) = ExitFunction : + +# 2070| Block 11 +# 2070| r2070_31(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2070| r2070_32(glval<unknown>) = VariableAddress[#temp2070:10] : +# 2070| mu2070_33(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_32, r2070_31 #-----| Goto -> Block 10 -# 2023| Block 12 -# 2023| r2023_34(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2023| r2023_35(glval<unknown>) = VariableAddress[#temp2023:10] : -# 2023| mu2023_36(glval<TernaryNonPodObj>) = Store[#temp2023:10] : &:r2023_35, r2023_34 +# 2070| Block 12 +# 2070| r2070_34(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2070| r2070_35(glval<unknown>) = VariableAddress[#temp2070:10] : +# 2070| mu2070_36(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_35, r2070_34 #-----| Goto -> Block 10 -# 2028| unsigned int CommaTest(unsigned int) -# 2028| Block 0 -# 2028| v2028_1(void) = EnterFunction : -# 2028| mu2028_2(unknown) = AliasedDefinition : -# 2028| mu2028_3(unknown) = InitializeNonLocal : -# 2028| r2028_4(glval<unsigned int>) = VariableAddress[x] : -# 2028| mu2028_5(unsigned int) = InitializeParameter[x] : &:r2028_4 -# 2029| r2029_1(glval<unsigned int>) = VariableAddress[y] : -# 2029| mu2029_2(unsigned int) = Uninitialized[y] : &:r2029_1 -# 2030| r2030_1(glval<unsigned int>) = VariableAddress[x] : -# 2030| r2030_2(unsigned int) = Load[x] : &:r2030_1, ~m? -# 2030| r2030_3(unsigned int) = Constant[100] : -# 2030| r2030_4(bool) = CompareLT : r2030_2, r2030_3 -# 2030| v2030_5(void) = ConditionalBranch : r2030_4 +# 2075| unsigned int CommaTest(unsigned int) +# 2075| Block 0 +# 2075| v2075_1(void) = EnterFunction : +# 2075| mu2075_2(unknown) = AliasedDefinition : +# 2075| mu2075_3(unknown) = InitializeNonLocal : +# 2075| r2075_4(glval<unsigned int>) = VariableAddress[x] : +# 2075| mu2075_5(unsigned int) = InitializeParameter[x] : &:r2075_4 +# 2076| r2076_1(glval<unsigned int>) = VariableAddress[y] : +# 2076| mu2076_2(unsigned int) = Uninitialized[y] : &:r2076_1 +# 2077| r2077_1(glval<unsigned int>) = VariableAddress[x] : +# 2077| r2077_2(unsigned int) = Load[x] : &:r2077_1, ~m? +# 2077| r2077_3(unsigned int) = Constant[100] : +# 2077| r2077_4(bool) = CompareLT : r2077_2, r2077_3 +# 2077| v2077_5(void) = ConditionalBranch : r2077_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2030| Block 1 -# 2030| r2030_6(glval<unsigned int>) = VariableAddress[#temp2030:7] : -# 2030| r2030_7(unsigned int) = Load[#temp2030:7] : &:r2030_6, ~m? -# 2030| r2030_8(glval<unsigned int>) = VariableAddress[y] : -# 2030| mu2030_9(unsigned int) = Store[y] : &:r2030_8, r2030_7 -# 2033| r2033_1(glval<unsigned int>) = VariableAddress[#return] : -# 2033| mu2033_2(unsigned int) = Uninitialized[#return] : &:r2033_1 -# 2028| r2028_6(glval<unsigned int>) = VariableAddress[#return] : -# 2028| v2028_7(void) = ReturnValue : &:r2028_6, ~m? -# 2028| v2028_8(void) = AliasedUse : ~m? -# 2028| v2028_9(void) = ExitFunction : - -# 2031| Block 2 -# 2031| r2031_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2031| r2031_2(glval<unsigned int>) = VariableAddress[x] : -# 2031| r2031_3(unsigned int) = Load[x] : &:r2031_2, ~m? -# 2031| v2031_4(void) = Call[CommaTestHelper] : func:r2031_1, 0:r2031_3 -# 2031| mu2031_5(unknown) = ^CallSideEffect : ~m? -# 2031| r2031_6(glval<unsigned int>) = VariableAddress[x] : -# 2031| r2031_7(unsigned int) = Load[x] : &:r2031_6, ~m? -# 2031| r2031_8(unsigned int) = CopyValue : r2031_7 -# 2030| r2030_10(glval<unsigned int>) = VariableAddress[#temp2030:7] : -# 2030| mu2030_11(unsigned int) = Store[#temp2030:7] : &:r2030_10, r2031_8 +# 2077| Block 1 +# 2077| r2077_6(glval<unsigned int>) = VariableAddress[#temp2077:7] : +# 2077| r2077_7(unsigned int) = Load[#temp2077:7] : &:r2077_6, ~m? +# 2077| r2077_8(glval<unsigned int>) = VariableAddress[y] : +# 2077| mu2077_9(unsigned int) = Store[y] : &:r2077_8, r2077_7 +# 2080| r2080_1(glval<unsigned int>) = VariableAddress[#return] : +# 2080| mu2080_2(unsigned int) = Uninitialized[#return] : &:r2080_1 +# 2075| r2075_6(glval<unsigned int>) = VariableAddress[#return] : +# 2075| v2075_7(void) = ReturnValue : &:r2075_6, ~m? +# 2075| v2075_8(void) = AliasedUse : ~m? +# 2075| v2075_9(void) = ExitFunction : + +# 2078| Block 2 +# 2078| r2078_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2078| r2078_2(glval<unsigned int>) = VariableAddress[x] : +# 2078| r2078_3(unsigned int) = Load[x] : &:r2078_2, ~m? +# 2078| v2078_4(void) = Call[CommaTestHelper] : func:r2078_1, 0:r2078_3 +# 2078| mu2078_5(unknown) = ^CallSideEffect : ~m? +# 2078| r2078_6(glval<unsigned int>) = VariableAddress[x] : +# 2078| r2078_7(unsigned int) = Load[x] : &:r2078_6, ~m? +# 2078| r2078_8(unsigned int) = CopyValue : r2078_7 +# 2077| r2077_10(glval<unsigned int>) = VariableAddress[#temp2077:7] : +# 2077| mu2077_11(unsigned int) = Store[#temp2077:7] : &:r2077_10, r2078_8 #-----| Goto -> Block 1 -# 2032| Block 3 -# 2032| r2032_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2032| r2032_2(glval<unsigned int>) = VariableAddress[x] : -# 2032| r2032_3(unsigned int) = Load[x] : &:r2032_2, ~m? -# 2032| v2032_4(void) = Call[CommaTestHelper] : func:r2032_1, 0:r2032_3 -# 2032| mu2032_5(unknown) = ^CallSideEffect : ~m? -# 2032| r2032_6(int) = Constant[10] : -# 2032| r2032_7(int) = CopyValue : r2032_6 -# 2032| r2032_8(unsigned int) = Convert : r2032_7 -# 2030| r2030_12(glval<unsigned int>) = VariableAddress[#temp2030:7] : -# 2030| mu2030_13(unsigned int) = Store[#temp2030:7] : &:r2030_12, r2032_8 +# 2079| Block 3 +# 2079| r2079_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2079| r2079_2(glval<unsigned int>) = VariableAddress[x] : +# 2079| r2079_3(unsigned int) = Load[x] : &:r2079_2, ~m? +# 2079| v2079_4(void) = Call[CommaTestHelper] : func:r2079_1, 0:r2079_3 +# 2079| mu2079_5(unknown) = ^CallSideEffect : ~m? +# 2079| r2079_6(int) = Constant[10] : +# 2079| r2079_7(int) = CopyValue : r2079_6 +# 2079| r2079_8(unsigned int) = Convert : r2079_7 +# 2077| r2077_12(glval<unsigned int>) = VariableAddress[#temp2077:7] : +# 2077| mu2077_13(unsigned int) = Store[#temp2077:7] : &:r2077_12, r2079_8 #-----| Goto -> Block 1 -# 2035| void NewDeleteMem() -# 2035| Block 0 -# 2035| v2035_1(void) = EnterFunction : -# 2035| mu2035_2(unknown) = AliasedDefinition : -# 2035| mu2035_3(unknown) = InitializeNonLocal : -# 2036| r2036_1(glval<int *>) = VariableAddress[x] : -# 2036| r2036_2(glval<unknown>) = FunctionAddress[operator new] : -# 2036| r2036_3(unsigned long) = Constant[4] : -# 2036| r2036_4(void *) = Call[operator new] : func:r2036_2, 0:r2036_3 -# 2036| mu2036_5(unknown) = ^CallSideEffect : ~m? -# 2036| mu2036_6(unknown) = ^InitializeDynamicAllocation : &:r2036_4 -# 2036| r2036_7(int *) = Convert : r2036_4 -# 2036| mu2036_8(int *) = Store[x] : &:r2036_1, r2036_7 -# 2037| r2037_1(int) = Constant[6] : -# 2037| r2037_2(glval<int *>) = VariableAddress[x] : -# 2037| r2037_3(int *) = Load[x] : &:r2037_2, ~m? -# 2037| r2037_4(glval<int>) = CopyValue : r2037_3 -# 2037| mu2037_5(int) = Store[?] : &:r2037_4, r2037_1 -# 2038| r2038_1(glval<unknown>) = FunctionAddress[operator delete] : -# 2038| r2038_2(glval<int *>) = VariableAddress[x] : -# 2038| r2038_3(int *) = Load[x] : &:r2038_2, ~m? -# 2038| v2038_4(void) = Call[operator delete] : func:r2038_1, 0:r2038_3 -# 2038| mu2038_5(unknown) = ^CallSideEffect : ~m? -# 2039| v2039_1(void) = NoOp : -# 2035| v2035_4(void) = ReturnVoid : -# 2035| v2035_5(void) = AliasedUse : ~m? -# 2035| v2035_6(void) = ExitFunction : - -# 2041| void Base2::Base2() -# 2041| Block 0 -# 2041| v2041_1(void) = EnterFunction : -# 2041| mu2041_2(unknown) = AliasedDefinition : -# 2041| mu2041_3(unknown) = InitializeNonLocal : -# 2041| r2041_4(glval<unknown>) = VariableAddress[#this] : -# 2041| mu2041_5(glval<Base2>) = InitializeParameter[#this] : &:r2041_4 -# 2041| r2041_6(glval<Base2>) = Load[#this] : &:r2041_4, ~m? -# 2041| mu2041_7(Base2) = InitializeIndirection[#this] : &:r2041_6 -# 2041| v2041_8(void) = NoOp : -# 2041| v2041_9(void) = ReturnIndirection[#this] : &:r2041_6, ~m? -# 2041| v2041_10(void) = ReturnVoid : -# 2041| v2041_11(void) = AliasedUse : ~m? -# 2041| v2041_12(void) = ExitFunction : - -# 2043| void Base2::operator delete(void*) -# 2043| Block 0 -# 2043| v2043_1(void) = EnterFunction : -# 2043| mu2043_2(unknown) = AliasedDefinition : -# 2043| mu2043_3(unknown) = InitializeNonLocal : -# 2043| r2043_4(glval<void *>) = VariableAddress[p] : -# 2043| mu2043_5(void *) = InitializeParameter[p] : &:r2043_4 -# 2043| r2043_6(void *) = Load[p] : &:r2043_4, ~m? -# 2043| mu2043_7(unknown) = InitializeIndirection[p] : &:r2043_6 -# 2044| v2044_1(void) = NoOp : -# 2043| v2043_8(void) = ReturnIndirection[p] : &:r2043_6, ~m? -# 2043| v2043_9(void) = ReturnVoid : -# 2043| v2043_10(void) = AliasedUse : ~m? -# 2043| v2043_11(void) = ExitFunction : - -# 2045| void Base2::~Base2() -# 2045| Block 0 -# 2045| v2045_1(void) = EnterFunction : -# 2045| mu2045_2(unknown) = AliasedDefinition : -# 2045| mu2045_3(unknown) = InitializeNonLocal : -# 2045| r2045_4(glval<unknown>) = VariableAddress[#this] : -# 2045| mu2045_5(glval<Base2>) = InitializeParameter[#this] : &:r2045_4 -# 2045| r2045_6(glval<Base2>) = Load[#this] : &:r2045_4, ~m? -# 2045| mu2045_7(Base2) = InitializeIndirection[#this] : &:r2045_6 -# 2045| v2045_8(void) = NoOp : -# 2045| v2045_9(void) = ReturnIndirection[#this] : &:r2045_6, ~m? -# 2045| v2045_10(void) = ReturnVoid : -# 2045| v2045_11(void) = AliasedUse : ~m? -# 2045| v2045_12(void) = ExitFunction : - -# 2048| void Derived2::Derived2() -# 2048| Block 0 -# 2048| v2048_1(void) = EnterFunction : -# 2048| mu2048_2(unknown) = AliasedDefinition : -# 2048| mu2048_3(unknown) = InitializeNonLocal : -# 2048| r2048_4(glval<unknown>) = VariableAddress[#this] : -# 2048| mu2048_5(glval<Derived2>) = InitializeParameter[#this] : &:r2048_4 -# 2048| r2048_6(glval<Derived2>) = Load[#this] : &:r2048_4, ~m? -# 2048| mu2048_7(Derived2) = InitializeIndirection[#this] : &:r2048_6 -# 2048| r2048_8(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2048_5 -# 2048| r2048_9(glval<unknown>) = FunctionAddress[Base2] : -# 2048| v2048_10(void) = Call[Base2] : func:r2048_9, this:r2048_8 -# 2048| mu2048_11(unknown) = ^CallSideEffect : ~m? -# 2048| mu2048_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2048_8 -# 2048| v2048_13(void) = NoOp : -# 2048| v2048_14(void) = ReturnIndirection[#this] : &:r2048_6, ~m? -# 2048| v2048_15(void) = ReturnVoid : -# 2048| v2048_16(void) = AliasedUse : ~m? -# 2048| v2048_17(void) = ExitFunction : - -# 2051| void Derived2::~Derived2() -# 2051| Block 0 -# 2051| v2051_1(void) = EnterFunction : -# 2051| mu2051_2(unknown) = AliasedDefinition : -# 2051| mu2051_3(unknown) = InitializeNonLocal : -# 2051| r2051_4(glval<unknown>) = VariableAddress[#this] : -# 2051| mu2051_5(glval<Derived2>) = InitializeParameter[#this] : &:r2051_4 -# 2051| r2051_6(glval<Derived2>) = Load[#this] : &:r2051_4, ~m? -# 2051| mu2051_7(Derived2) = InitializeIndirection[#this] : &:r2051_6 -# 2051| v2051_8(void) = NoOp : -# 2051| r2051_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2051_5 -# 2051| r2051_10(glval<unknown>) = FunctionAddress[~Base2] : -# 2051| v2051_11(void) = Call[~Base2] : func:r2051_10, this:r2051_9 -# 2051| mu2051_12(unknown) = ^CallSideEffect : ~m? -# 2051| v2051_13(void) = ReturnIndirection[#this] : &:r2051_6, ~m? -# 2051| v2051_14(void) = ReturnVoid : -# 2051| v2051_15(void) = AliasedUse : ~m? -# 2051| v2051_16(void) = ExitFunction : - -# 2053| void Derived2::operator delete(void*) -# 2053| Block 0 -# 2053| v2053_1(void) = EnterFunction : -# 2053| mu2053_2(unknown) = AliasedDefinition : -# 2053| mu2053_3(unknown) = InitializeNonLocal : -# 2053| r2053_4(glval<void *>) = VariableAddress[p] : -# 2053| mu2053_5(void *) = InitializeParameter[p] : &:r2053_4 -# 2053| r2053_6(void *) = Load[p] : &:r2053_4, ~m? -# 2053| mu2053_7(unknown) = InitializeIndirection[p] : &:r2053_6 -# 2054| v2054_1(void) = NoOp : -# 2053| v2053_8(void) = ReturnIndirection[p] : &:r2053_6, ~m? -# 2053| v2053_9(void) = ReturnVoid : -# 2053| v2053_10(void) = AliasedUse : ~m? -# 2053| v2053_11(void) = ExitFunction : - -# 2058| int virtual_delete() -# 2058| Block 0 -# 2058| v2058_1(void) = EnterFunction : -# 2058| mu2058_2(unknown) = AliasedDefinition : -# 2058| mu2058_3(unknown) = InitializeNonLocal : -# 2060| r2060_1(glval<Base2 *>) = VariableAddress[b1] : -# 2060| r2060_2(glval<unknown>) = FunctionAddress[operator new] : -# 2060| r2060_3(unsigned long) = Constant[8] : -# 2060| r2060_4(void *) = Call[operator new] : func:r2060_2, 0:r2060_3 -# 2060| mu2060_5(unknown) = ^CallSideEffect : ~m? -# 2060| mu2060_6(unknown) = ^InitializeDynamicAllocation : &:r2060_4 -# 2060| r2060_7(Base2 *) = Convert : r2060_4 -# 2060| r2060_8(glval<unknown>) = FunctionAddress[Base2] : -# 2060| v2060_9(void) = Call[Base2] : func:r2060_8, this:r2060_7 -# 2060| mu2060_10(unknown) = ^CallSideEffect : ~m? -# 2060| mu2060_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2060_7 -# 2060| mu2060_12(Base2 *) = Store[b1] : &:r2060_1, r2060_7 -# 2061| r2061_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2061| r2061_2(glval<Base2 *>) = VariableAddress[b1] : -# 2061| r2061_3(Base2 *) = Load[b1] : &:r2061_2, ~m? -# 2061| v2061_4(void) = Call[?] : func:r2061_1, 0:r2061_3 -# 2061| mu2061_5(unknown) = ^CallSideEffect : ~m? -# 2063| r2063_1(glval<Base2 *>) = VariableAddress[b2] : -# 2063| r2063_2(glval<unknown>) = FunctionAddress[operator new] : -# 2063| r2063_3(unsigned long) = Constant[16] : -# 2063| r2063_4(void *) = Call[operator new] : func:r2063_2, 0:r2063_3 -# 2063| mu2063_5(unknown) = ^CallSideEffect : ~m? -# 2063| mu2063_6(unknown) = ^InitializeDynamicAllocation : &:r2063_4 -# 2063| r2063_7(Derived2 *) = Convert : r2063_4 -# 2063| r2063_8(glval<unknown>) = FunctionAddress[Derived2] : -# 2063| v2063_9(void) = Call[Derived2] : func:r2063_8, this:r2063_7 -# 2063| mu2063_10(unknown) = ^CallSideEffect : ~m? -# 2063| mu2063_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2063_7 -# 2063| r2063_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2063_7 -# 2063| mu2063_13(Base2 *) = Store[b2] : &:r2063_1, r2063_12 -# 2064| r2064_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2064| r2064_2(glval<Base2 *>) = VariableAddress[b2] : -# 2064| r2064_3(Base2 *) = Load[b2] : &:r2064_2, ~m? -# 2064| v2064_4(void) = Call[?] : func:r2064_1, 0:r2064_3 -# 2064| mu2064_5(unknown) = ^CallSideEffect : ~m? -# 2066| r2066_1(glval<Derived2 *>) = VariableAddress[d] : -# 2066| r2066_2(glval<unknown>) = FunctionAddress[operator new] : -# 2066| r2066_3(unsigned long) = Constant[16] : -# 2066| r2066_4(void *) = Call[operator new] : func:r2066_2, 0:r2066_3 -# 2066| mu2066_5(unknown) = ^CallSideEffect : ~m? -# 2066| mu2066_6(unknown) = ^InitializeDynamicAllocation : &:r2066_4 -# 2066| r2066_7(Derived2 *) = Convert : r2066_4 -# 2066| r2066_8(glval<unknown>) = FunctionAddress[Derived2] : -# 2066| v2066_9(void) = Call[Derived2] : func:r2066_8, this:r2066_7 -# 2066| mu2066_10(unknown) = ^CallSideEffect : ~m? -# 2066| mu2066_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2066_7 -# 2066| mu2066_12(Derived2 *) = Store[d] : &:r2066_1, r2066_7 -# 2067| r2067_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2067| r2067_2(glval<Derived2 *>) = VariableAddress[d] : -# 2067| r2067_3(Derived2 *) = Load[d] : &:r2067_2, ~m? -# 2067| v2067_4(void) = Call[?] : func:r2067_1, 0:r2067_3 -# 2067| mu2067_5(unknown) = ^CallSideEffect : ~m? -# 2068| r2068_1(glval<int>) = VariableAddress[#return] : -# 2068| mu2068_2(int) = Uninitialized[#return] : &:r2068_1 -# 2058| r2058_4(glval<int>) = VariableAddress[#return] : -# 2058| v2058_5(void) = ReturnValue : &:r2058_4, ~m? -# 2058| v2058_6(void) = AliasedUse : ~m? -# 2058| v2058_7(void) = ExitFunction : - -# 2072| void test_constant_folding() -# 2072| Block 0 -# 2072| v2072_1(void) = EnterFunction : -# 2072| mu2072_2(unknown) = AliasedDefinition : -# 2072| mu2072_3(unknown) = InitializeNonLocal : -# 2073| r2073_1(glval<int>) = VariableAddress[x] : -# 2073| r2073_2(int) = Constant[116] : -# 2073| mu2073_3(int) = Store[x] : &:r2073_1, r2073_2 -# 2074| r2074_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : -# 2074| r2074_2(int) = Constant[116] : -# 2074| v2074_3(void) = Call[test_constant_folding_use] : func:r2074_1, 0:r2074_2 -# 2074| mu2074_4(unknown) = ^CallSideEffect : ~m? -# 2075| v2075_1(void) = NoOp : -# 2072| v2072_4(void) = ReturnVoid : -# 2072| v2072_5(void) = AliasedUse : ~m? -# 2072| v2072_6(void) = ExitFunction : - -# 2079| int NonExit() -# 2079| Block 0 -# 2079| v2079_1(void) = EnterFunction : -# 2079| mu2079_2(unknown) = AliasedDefinition : -# 2079| mu2079_3(unknown) = InitializeNonLocal : -# 2080| r2080_1(glval<int>) = VariableAddress[x] : -# 2080| r2080_2(glval<unknown>) = FunctionAddress[Add] : -# 2080| r2080_3(int) = Constant[3] : -# 2080| r2080_4(int) = Constant[4] : -# 2080| r2080_5(int) = Call[Add] : func:r2080_2, 0:r2080_3, 1:r2080_4 -# 2080| mu2080_6(unknown) = ^CallSideEffect : ~m? -# 2080| mu2080_7(int) = Store[x] : &:r2080_1, r2080_5 -# 2081| r2081_1(glval<int>) = VariableAddress[x] : -# 2081| r2081_2(int) = Load[x] : &:r2081_1, ~m? -# 2081| r2081_3(int) = Constant[7] : -# 2081| r2081_4(bool) = CompareEQ : r2081_2, r2081_3 -# 2081| v2081_5(void) = ConditionalBranch : r2081_4 +# 2082| void NewDeleteMem() +# 2082| Block 0 +# 2082| v2082_1(void) = EnterFunction : +# 2082| mu2082_2(unknown) = AliasedDefinition : +# 2082| mu2082_3(unknown) = InitializeNonLocal : +# 2083| r2083_1(glval<int *>) = VariableAddress[x] : +# 2083| r2083_2(glval<unknown>) = FunctionAddress[operator new] : +# 2083| r2083_3(unsigned long) = Constant[4] : +# 2083| r2083_4(void *) = Call[operator new] : func:r2083_2, 0:r2083_3 +# 2083| mu2083_5(unknown) = ^CallSideEffect : ~m? +# 2083| mu2083_6(unknown) = ^InitializeDynamicAllocation : &:r2083_4 +# 2083| r2083_7(int *) = Convert : r2083_4 +# 2083| mu2083_8(int *) = Store[x] : &:r2083_1, r2083_7 +# 2084| r2084_1(int) = Constant[6] : +# 2084| r2084_2(glval<int *>) = VariableAddress[x] : +# 2084| r2084_3(int *) = Load[x] : &:r2084_2, ~m? +# 2084| r2084_4(glval<int>) = CopyValue : r2084_3 +# 2084| mu2084_5(int) = Store[?] : &:r2084_4, r2084_1 +# 2085| r2085_1(glval<unknown>) = FunctionAddress[operator delete] : +# 2085| r2085_2(glval<int *>) = VariableAddress[x] : +# 2085| r2085_3(int *) = Load[x] : &:r2085_2, ~m? +# 2085| v2085_4(void) = Call[operator delete] : func:r2085_1, 0:r2085_3 +# 2085| mu2085_5(unknown) = ^CallSideEffect : ~m? +# 2086| v2086_1(void) = NoOp : +# 2082| v2082_4(void) = ReturnVoid : +# 2082| v2082_5(void) = AliasedUse : ~m? +# 2082| v2082_6(void) = ExitFunction : + +# 2088| void Base2::Base2() +# 2088| Block 0 +# 2088| v2088_1(void) = EnterFunction : +# 2088| mu2088_2(unknown) = AliasedDefinition : +# 2088| mu2088_3(unknown) = InitializeNonLocal : +# 2088| r2088_4(glval<unknown>) = VariableAddress[#this] : +# 2088| mu2088_5(glval<Base2>) = InitializeParameter[#this] : &:r2088_4 +# 2088| r2088_6(glval<Base2>) = Load[#this] : &:r2088_4, ~m? +# 2088| mu2088_7(Base2) = InitializeIndirection[#this] : &:r2088_6 +# 2088| v2088_8(void) = NoOp : +# 2088| v2088_9(void) = ReturnIndirection[#this] : &:r2088_6, ~m? +# 2088| v2088_10(void) = ReturnVoid : +# 2088| v2088_11(void) = AliasedUse : ~m? +# 2088| v2088_12(void) = ExitFunction : + +# 2090| void Base2::operator delete(void*) +# 2090| Block 0 +# 2090| v2090_1(void) = EnterFunction : +# 2090| mu2090_2(unknown) = AliasedDefinition : +# 2090| mu2090_3(unknown) = InitializeNonLocal : +# 2090| r2090_4(glval<void *>) = VariableAddress[p] : +# 2090| mu2090_5(void *) = InitializeParameter[p] : &:r2090_4 +# 2090| r2090_6(void *) = Load[p] : &:r2090_4, ~m? +# 2090| mu2090_7(unknown) = InitializeIndirection[p] : &:r2090_6 +# 2091| v2091_1(void) = NoOp : +# 2090| v2090_8(void) = ReturnIndirection[p] : &:r2090_6, ~m? +# 2090| v2090_9(void) = ReturnVoid : +# 2090| v2090_10(void) = AliasedUse : ~m? +# 2090| v2090_11(void) = ExitFunction : + +# 2092| void Base2::~Base2() +# 2092| Block 0 +# 2092| v2092_1(void) = EnterFunction : +# 2092| mu2092_2(unknown) = AliasedDefinition : +# 2092| mu2092_3(unknown) = InitializeNonLocal : +# 2092| r2092_4(glval<unknown>) = VariableAddress[#this] : +# 2092| mu2092_5(glval<Base2>) = InitializeParameter[#this] : &:r2092_4 +# 2092| r2092_6(glval<Base2>) = Load[#this] : &:r2092_4, ~m? +# 2092| mu2092_7(Base2) = InitializeIndirection[#this] : &:r2092_6 +# 2092| v2092_8(void) = NoOp : +# 2092| v2092_9(void) = ReturnIndirection[#this] : &:r2092_6, ~m? +# 2092| v2092_10(void) = ReturnVoid : +# 2092| v2092_11(void) = AliasedUse : ~m? +# 2092| v2092_12(void) = ExitFunction : + +# 2095| void Derived2::Derived2() +# 2095| Block 0 +# 2095| v2095_1(void) = EnterFunction : +# 2095| mu2095_2(unknown) = AliasedDefinition : +# 2095| mu2095_3(unknown) = InitializeNonLocal : +# 2095| r2095_4(glval<unknown>) = VariableAddress[#this] : +# 2095| mu2095_5(glval<Derived2>) = InitializeParameter[#this] : &:r2095_4 +# 2095| r2095_6(glval<Derived2>) = Load[#this] : &:r2095_4, ~m? +# 2095| mu2095_7(Derived2) = InitializeIndirection[#this] : &:r2095_6 +# 2095| r2095_8(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2095_5 +# 2095| r2095_9(glval<unknown>) = FunctionAddress[Base2] : +# 2095| v2095_10(void) = Call[Base2] : func:r2095_9, this:r2095_8 +# 2095| mu2095_11(unknown) = ^CallSideEffect : ~m? +# 2095| mu2095_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2095_8 +# 2095| v2095_13(void) = NoOp : +# 2095| v2095_14(void) = ReturnIndirection[#this] : &:r2095_6, ~m? +# 2095| v2095_15(void) = ReturnVoid : +# 2095| v2095_16(void) = AliasedUse : ~m? +# 2095| v2095_17(void) = ExitFunction : + +# 2098| void Derived2::~Derived2() +# 2098| Block 0 +# 2098| v2098_1(void) = EnterFunction : +# 2098| mu2098_2(unknown) = AliasedDefinition : +# 2098| mu2098_3(unknown) = InitializeNonLocal : +# 2098| r2098_4(glval<unknown>) = VariableAddress[#this] : +# 2098| mu2098_5(glval<Derived2>) = InitializeParameter[#this] : &:r2098_4 +# 2098| r2098_6(glval<Derived2>) = Load[#this] : &:r2098_4, ~m? +# 2098| mu2098_7(Derived2) = InitializeIndirection[#this] : &:r2098_6 +# 2098| v2098_8(void) = NoOp : +# 2098| r2098_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2098_5 +# 2098| r2098_10(glval<unknown>) = FunctionAddress[~Base2] : +# 2098| v2098_11(void) = Call[~Base2] : func:r2098_10, this:r2098_9 +# 2098| mu2098_12(unknown) = ^CallSideEffect : ~m? +# 2098| v2098_13(void) = ReturnIndirection[#this] : &:r2098_6, ~m? +# 2098| v2098_14(void) = ReturnVoid : +# 2098| v2098_15(void) = AliasedUse : ~m? +# 2098| v2098_16(void) = ExitFunction : + +# 2100| void Derived2::operator delete(void*) +# 2100| Block 0 +# 2100| v2100_1(void) = EnterFunction : +# 2100| mu2100_2(unknown) = AliasedDefinition : +# 2100| mu2100_3(unknown) = InitializeNonLocal : +# 2100| r2100_4(glval<void *>) = VariableAddress[p] : +# 2100| mu2100_5(void *) = InitializeParameter[p] : &:r2100_4 +# 2100| r2100_6(void *) = Load[p] : &:r2100_4, ~m? +# 2100| mu2100_7(unknown) = InitializeIndirection[p] : &:r2100_6 +# 2101| v2101_1(void) = NoOp : +# 2100| v2100_8(void) = ReturnIndirection[p] : &:r2100_6, ~m? +# 2100| v2100_9(void) = ReturnVoid : +# 2100| v2100_10(void) = AliasedUse : ~m? +# 2100| v2100_11(void) = ExitFunction : + +# 2105| int virtual_delete() +# 2105| Block 0 +# 2105| v2105_1(void) = EnterFunction : +# 2105| mu2105_2(unknown) = AliasedDefinition : +# 2105| mu2105_3(unknown) = InitializeNonLocal : +# 2107| r2107_1(glval<Base2 *>) = VariableAddress[b1] : +# 2107| r2107_2(glval<unknown>) = FunctionAddress[operator new] : +# 2107| r2107_3(unsigned long) = Constant[8] : +# 2107| r2107_4(void *) = Call[operator new] : func:r2107_2, 0:r2107_3 +# 2107| mu2107_5(unknown) = ^CallSideEffect : ~m? +# 2107| mu2107_6(unknown) = ^InitializeDynamicAllocation : &:r2107_4 +# 2107| r2107_7(Base2 *) = Convert : r2107_4 +# 2107| r2107_8(glval<unknown>) = FunctionAddress[Base2] : +# 2107| v2107_9(void) = Call[Base2] : func:r2107_8, this:r2107_7 +# 2107| mu2107_10(unknown) = ^CallSideEffect : ~m? +# 2107| mu2107_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_7 +# 2107| mu2107_12(Base2 *) = Store[b1] : &:r2107_1, r2107_7 +# 2108| r2108_1(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2108| r2108_2(glval<Base2 *>) = VariableAddress[b1] : +# 2108| r2108_3(Base2 *) = Load[b1] : &:r2108_2, ~m? +# 2108| v2108_4(void) = Call[?] : func:r2108_1, 0:r2108_3 +# 2108| mu2108_5(unknown) = ^CallSideEffect : ~m? +# 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] : +# 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] : +# 2110| r2110_3(unsigned long) = Constant[16] : +# 2110| r2110_4(void *) = Call[operator new] : func:r2110_2, 0:r2110_3 +# 2110| mu2110_5(unknown) = ^CallSideEffect : ~m? +# 2110| mu2110_6(unknown) = ^InitializeDynamicAllocation : &:r2110_4 +# 2110| r2110_7(Derived2 *) = Convert : r2110_4 +# 2110| r2110_8(glval<unknown>) = FunctionAddress[Derived2] : +# 2110| v2110_9(void) = Call[Derived2] : func:r2110_8, this:r2110_7 +# 2110| mu2110_10(unknown) = ^CallSideEffect : ~m? +# 2110| mu2110_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2110_7 +# 2110| r2110_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_7 +# 2110| mu2110_13(Base2 *) = Store[b2] : &:r2110_1, r2110_12 +# 2111| r2111_1(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2111| r2111_2(glval<Base2 *>) = VariableAddress[b2] : +# 2111| r2111_3(Base2 *) = Load[b2] : &:r2111_2, ~m? +# 2111| v2111_4(void) = Call[?] : func:r2111_1, 0:r2111_3 +# 2111| mu2111_5(unknown) = ^CallSideEffect : ~m? +# 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] : +# 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] : +# 2113| r2113_3(unsigned long) = Constant[16] : +# 2113| r2113_4(void *) = Call[operator new] : func:r2113_2, 0:r2113_3 +# 2113| mu2113_5(unknown) = ^CallSideEffect : ~m? +# 2113| mu2113_6(unknown) = ^InitializeDynamicAllocation : &:r2113_4 +# 2113| r2113_7(Derived2 *) = Convert : r2113_4 +# 2113| r2113_8(glval<unknown>) = FunctionAddress[Derived2] : +# 2113| v2113_9(void) = Call[Derived2] : func:r2113_8, this:r2113_7 +# 2113| mu2113_10(unknown) = ^CallSideEffect : ~m? +# 2113| mu2113_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_7 +# 2113| mu2113_12(Derived2 *) = Store[d] : &:r2113_1, r2113_7 +# 2114| r2114_1(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2114| r2114_2(glval<Derived2 *>) = VariableAddress[d] : +# 2114| r2114_3(Derived2 *) = Load[d] : &:r2114_2, ~m? +# 2114| v2114_4(void) = Call[?] : func:r2114_1, 0:r2114_3 +# 2114| mu2114_5(unknown) = ^CallSideEffect : ~m? +# 2115| r2115_1(glval<int>) = VariableAddress[#return] : +# 2115| mu2115_2(int) = Uninitialized[#return] : &:r2115_1 +# 2105| r2105_4(glval<int>) = VariableAddress[#return] : +# 2105| v2105_5(void) = ReturnValue : &:r2105_4, ~m? +# 2105| v2105_6(void) = AliasedUse : ~m? +# 2105| v2105_7(void) = ExitFunction : + +# 2119| void test_constant_folding() +# 2119| Block 0 +# 2119| v2119_1(void) = EnterFunction : +# 2119| mu2119_2(unknown) = AliasedDefinition : +# 2119| mu2119_3(unknown) = InitializeNonLocal : +# 2120| r2120_1(glval<int>) = VariableAddress[x] : +# 2120| r2120_2(int) = Constant[116] : +# 2120| mu2120_3(int) = Store[x] : &:r2120_1, r2120_2 +# 2121| r2121_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : +# 2121| r2121_2(int) = Constant[116] : +# 2121| v2121_3(void) = Call[test_constant_folding_use] : func:r2121_1, 0:r2121_2 +# 2121| mu2121_4(unknown) = ^CallSideEffect : ~m? +# 2122| v2122_1(void) = NoOp : +# 2119| v2119_4(void) = ReturnVoid : +# 2119| v2119_5(void) = AliasedUse : ~m? +# 2119| v2119_6(void) = ExitFunction : + +# 2126| int NonExit() +# 2126| Block 0 +# 2126| v2126_1(void) = EnterFunction : +# 2126| mu2126_2(unknown) = AliasedDefinition : +# 2126| mu2126_3(unknown) = InitializeNonLocal : +# 2127| r2127_1(glval<int>) = VariableAddress[x] : +# 2127| r2127_2(glval<unknown>) = FunctionAddress[Add] : +# 2127| r2127_3(int) = Constant[3] : +# 2127| r2127_4(int) = Constant[4] : +# 2127| r2127_5(int) = Call[Add] : func:r2127_2, 0:r2127_3, 1:r2127_4 +# 2127| mu2127_6(unknown) = ^CallSideEffect : ~m? +# 2127| mu2127_7(int) = Store[x] : &:r2127_1, r2127_5 +# 2128| r2128_1(glval<int>) = VariableAddress[x] : +# 2128| r2128_2(int) = Load[x] : &:r2128_1, ~m? +# 2128| r2128_3(int) = Constant[7] : +# 2128| r2128_4(bool) = CompareEQ : r2128_2, r2128_3 +# 2128| v2128_5(void) = ConditionalBranch : r2128_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2082| Block 1 -# 2082| r2082_1(glval<unknown>) = FunctionAddress[exit] : -# 2082| r2082_2(int) = Constant[3] : -# 2082| v2082_3(void) = Call[exit] : func:r2082_1, 0:r2082_2 -# 2082| mu2082_4(unknown) = ^CallSideEffect : ~m? -# 2079| v2079_4(void) = Unreached : - -# 2083| Block 2 -# 2083| r2083_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2083| v2083_2(void) = Call[VoidFunc] : func:r2083_1 -# 2083| mu2083_3(unknown) = ^CallSideEffect : ~m? -# 2084| r2084_1(glval<int>) = VariableAddress[#return] : -# 2084| r2084_2(glval<int>) = VariableAddress[x] : -# 2084| r2084_3(int) = Load[x] : &:r2084_2, ~m? -# 2084| mu2084_4(int) = Store[#return] : &:r2084_1, r2084_3 -# 2079| r2079_5(glval<int>) = VariableAddress[#return] : -# 2079| v2079_6(void) = ReturnValue : &:r2079_5, ~m? -# 2079| v2079_7(void) = AliasedUse : ~m? -# 2079| v2079_8(void) = ExitFunction : - -# 2087| void CallsNonExit() -# 2087| Block 0 -# 2087| v2087_1(void) = EnterFunction : -# 2087| mu2087_2(unknown) = AliasedDefinition : -# 2087| mu2087_3(unknown) = InitializeNonLocal : -# 2088| r2088_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2088| v2088_2(void) = Call[VoidFunc] : func:r2088_1 -# 2088| mu2088_3(unknown) = ^CallSideEffect : ~m? -# 2089| r2089_1(glval<unknown>) = FunctionAddress[exit] : -# 2089| r2089_2(int) = Constant[3] : -# 2089| v2089_3(void) = Call[exit] : func:r2089_1, 0:r2089_2 -# 2089| mu2089_4(unknown) = ^CallSideEffect : ~m? -# 2087| v2087_4(void) = Unreached : - -# 2090| Block 1 -# 2090| v2090_1(void) = NoOp : -# 2087| v2087_5(void) = ReturnVoid : -# 2087| v2087_6(void) = AliasedUse : ~m? -# 2087| v2087_7(void) = ExitFunction : - -# 2092| int TransNonExit() -# 2092| Block 0 -# 2092| v2092_1(void) = EnterFunction : -# 2092| mu2092_2(unknown) = AliasedDefinition : -# 2092| mu2092_3(unknown) = InitializeNonLocal : -# 2093| r2093_1(glval<int>) = VariableAddress[x] : -# 2093| r2093_2(glval<unknown>) = FunctionAddress[Add] : -# 2093| r2093_3(int) = Constant[3] : -# 2093| r2093_4(int) = Constant[4] : -# 2093| r2093_5(int) = Call[Add] : func:r2093_2, 0:r2093_3, 1:r2093_4 -# 2093| mu2093_6(unknown) = ^CallSideEffect : ~m? -# 2093| mu2093_7(int) = Store[x] : &:r2093_1, r2093_5 -# 2094| r2094_1(glval<int>) = VariableAddress[x] : -# 2094| r2094_2(int) = Load[x] : &:r2094_1, ~m? -# 2094| r2094_3(int) = Constant[7] : -# 2094| r2094_4(bool) = CompareEQ : r2094_2, r2094_3 -# 2094| v2094_5(void) = ConditionalBranch : r2094_4 +# 2129| Block 1 +# 2129| r2129_1(glval<unknown>) = FunctionAddress[exit] : +# 2129| r2129_2(int) = Constant[3] : +# 2129| v2129_3(void) = Call[exit] : func:r2129_1, 0:r2129_2 +# 2129| mu2129_4(unknown) = ^CallSideEffect : ~m? +# 2126| v2126_4(void) = Unreached : + +# 2130| Block 2 +# 2130| r2130_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2130| v2130_2(void) = Call[VoidFunc] : func:r2130_1 +# 2130| mu2130_3(unknown) = ^CallSideEffect : ~m? +# 2131| r2131_1(glval<int>) = VariableAddress[#return] : +# 2131| r2131_2(glval<int>) = VariableAddress[x] : +# 2131| r2131_3(int) = Load[x] : &:r2131_2, ~m? +# 2131| mu2131_4(int) = Store[#return] : &:r2131_1, r2131_3 +# 2126| r2126_5(glval<int>) = VariableAddress[#return] : +# 2126| v2126_6(void) = ReturnValue : &:r2126_5, ~m? +# 2126| v2126_7(void) = AliasedUse : ~m? +# 2126| v2126_8(void) = ExitFunction : + +# 2134| void CallsNonExit() +# 2134| Block 0 +# 2134| v2134_1(void) = EnterFunction : +# 2134| mu2134_2(unknown) = AliasedDefinition : +# 2134| mu2134_3(unknown) = InitializeNonLocal : +# 2135| r2135_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2135| v2135_2(void) = Call[VoidFunc] : func:r2135_1 +# 2135| mu2135_3(unknown) = ^CallSideEffect : ~m? +# 2136| r2136_1(glval<unknown>) = FunctionAddress[exit] : +# 2136| r2136_2(int) = Constant[3] : +# 2136| v2136_3(void) = Call[exit] : func:r2136_1, 0:r2136_2 +# 2136| mu2136_4(unknown) = ^CallSideEffect : ~m? +# 2134| v2134_4(void) = Unreached : + +# 2137| Block 1 +# 2137| v2137_1(void) = NoOp : +# 2134| v2134_5(void) = ReturnVoid : +# 2134| v2134_6(void) = AliasedUse : ~m? +# 2134| v2134_7(void) = ExitFunction : + +# 2139| int TransNonExit() +# 2139| Block 0 +# 2139| v2139_1(void) = EnterFunction : +# 2139| mu2139_2(unknown) = AliasedDefinition : +# 2139| mu2139_3(unknown) = InitializeNonLocal : +# 2140| r2140_1(glval<int>) = VariableAddress[x] : +# 2140| r2140_2(glval<unknown>) = FunctionAddress[Add] : +# 2140| r2140_3(int) = Constant[3] : +# 2140| r2140_4(int) = Constant[4] : +# 2140| r2140_5(int) = Call[Add] : func:r2140_2, 0:r2140_3, 1:r2140_4 +# 2140| mu2140_6(unknown) = ^CallSideEffect : ~m? +# 2140| mu2140_7(int) = Store[x] : &:r2140_1, r2140_5 +# 2141| r2141_1(glval<int>) = VariableAddress[x] : +# 2141| r2141_2(int) = Load[x] : &:r2141_1, ~m? +# 2141| r2141_3(int) = Constant[7] : +# 2141| r2141_4(bool) = CompareEQ : r2141_2, r2141_3 +# 2141| v2141_5(void) = ConditionalBranch : r2141_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2095| Block 1 -# 2095| r2095_1(glval<unknown>) = FunctionAddress[CallsNonExit] : -# 2095| v2095_2(void) = Call[CallsNonExit] : func:r2095_1 -# 2095| mu2095_3(unknown) = ^CallSideEffect : ~m? +# 2142| Block 1 +# 2142| r2142_1(glval<unknown>) = FunctionAddress[CallsNonExit] : +# 2142| v2142_2(void) = Call[CallsNonExit] : func:r2142_1 +# 2142| mu2142_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 2 -# 2096| Block 2 -# 2096| r2096_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2096| v2096_2(void) = Call[VoidFunc] : func:r2096_1 -# 2096| mu2096_3(unknown) = ^CallSideEffect : ~m? -# 2097| r2097_1(glval<int>) = VariableAddress[#return] : -# 2097| r2097_2(glval<int>) = VariableAddress[x] : -# 2097| r2097_3(int) = Load[x] : &:r2097_2, ~m? -# 2097| mu2097_4(int) = Store[#return] : &:r2097_1, r2097_3 -# 2092| r2092_4(glval<int>) = VariableAddress[#return] : -# 2092| v2092_5(void) = ReturnValue : &:r2092_4, ~m? -# 2092| v2092_6(void) = AliasedUse : ~m? -# 2092| v2092_7(void) = ExitFunction : - -# 2100| void newArrayCorrectType(size_t) -# 2100| Block 0 -# 2100| v2100_1(void) = EnterFunction : -# 2100| mu2100_2(unknown) = AliasedDefinition : -# 2100| mu2100_3(unknown) = InitializeNonLocal : -# 2100| r2100_4(glval<unsigned long>) = VariableAddress[n] : -# 2100| mu2100_5(unsigned long) = InitializeParameter[n] : &:r2100_4 -# 2101| r2101_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2101| r2101_2(glval<unsigned long>) = VariableAddress[n] : -# 2101| r2101_3(unsigned long) = Load[n] : &:r2101_2, ~m? -# 2101| r2101_4(unsigned long) = Constant[4] : -# 2101| r2101_5(unsigned long) = Mul : r2101_3, r2101_4 -# 2101| r2101_6(void *) = Call[operator new[]] : func:r2101_1, 0:r2101_5 -# 2101| mu2101_7(unknown) = ^CallSideEffect : ~m? -# 2101| mu2101_8(unknown) = ^InitializeDynamicAllocation : &:r2101_6 -# 2101| r2101_9(int *) = Convert : r2101_6 -# 2102| r2102_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2102| r2102_2(glval<unsigned long>) = VariableAddress[n] : -# 2102| r2102_3(unsigned long) = Load[n] : &:r2102_2, ~m? -# 2102| r2102_4(unsigned long) = Constant[4] : -# 2102| r2102_5(unsigned long) = Mul : r2102_3, r2102_4 -# 2102| r2102_6(float) = Constant[1.0] : -# 2102| r2102_7(void *) = Call[operator new[]] : func:r2102_1, 0:r2102_5, 1:r2102_6 -# 2102| mu2102_8(unknown) = ^CallSideEffect : ~m? -# 2102| mu2102_9(unknown) = ^InitializeDynamicAllocation : &:r2102_7 -# 2102| r2102_10(int *) = Convert : r2102_7 -# 2103| r2103_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2103| r2103_2(glval<unsigned long>) = VariableAddress[n] : -# 2103| r2103_3(unsigned long) = Load[n] : &:r2103_2, ~m? -# 2103| r2103_4(unsigned long) = Constant[8] : -# 2103| r2103_5(unsigned long) = Mul : r2103_3, r2103_4 -# 2103| r2103_6(void *) = Call[operator new[]] : func:r2103_1, 0:r2103_5 -# 2103| mu2103_7(unknown) = ^CallSideEffect : ~m? -# 2103| mu2103_8(unknown) = ^InitializeDynamicAllocation : &:r2103_6 -# 2103| r2103_9(String *) = Convert : r2103_6 -# 2104| r2104_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2104| r2104_2(glval<unsigned long>) = VariableAddress[n] : -# 2104| r2104_3(unsigned long) = Load[n] : &:r2104_2, ~m? -# 2104| r2104_4(unsigned long) = Constant[256] : -# 2104| r2104_5(unsigned long) = Mul : r2104_3, r2104_4 -# 2104| r2104_6(align_val_t) = Constant[128] : -# 2104| r2104_7(void *) = Call[operator new[]] : func:r2104_1, 0:r2104_5, 1:r2104_6 -# 2104| mu2104_8(unknown) = ^CallSideEffect : ~m? -# 2104| mu2104_9(unknown) = ^InitializeDynamicAllocation : &:r2104_7 -# 2104| r2104_10(Overaligned *) = Convert : r2104_7 -# 2105| r2105_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2105| r2105_2(glval<unsigned long>) = VariableAddress[n] : -# 2105| r2105_3(unsigned long) = Load[n] : &:r2105_2, ~m? -# 2105| r2105_4(unsigned long) = Constant[1] : -# 2105| r2105_5(unsigned long) = Mul : r2105_3, r2105_4 -# 2105| r2105_6(void *) = Call[operator new[]] : func:r2105_1, 0:r2105_5 -# 2105| mu2105_7(unknown) = ^CallSideEffect : ~m? -# 2105| mu2105_8(unknown) = ^InitializeDynamicAllocation : &:r2105_6 -# 2105| r2105_9(DefaultCtorWithDefaultParam *) = Convert : r2105_6 -# 2106| r2106_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2106| r2106_2(glval<unsigned long>) = VariableAddress[n] : -# 2106| r2106_3(unsigned long) = Load[n] : &:r2106_2, ~m? -# 2106| r2106_4(unsigned long) = Constant[4] : -# 2106| r2106_5(unsigned long) = Mul : r2106_3, r2106_4 -# 2106| r2106_6(void *) = Call[operator new[]] : func:r2106_1, 0:r2106_5 -# 2106| mu2106_7(unknown) = ^CallSideEffect : ~m? -# 2106| mu2106_8(unknown) = ^InitializeDynamicAllocation : &:r2106_6 -# 2106| r2106_9(int *) = Convert : r2106_6 -# 2107| v2107_1(void) = NoOp : -# 2100| v2100_6(void) = ReturnVoid : -# 2100| v2100_7(void) = AliasedUse : ~m? -# 2100| v2100_8(void) = ExitFunction : - -# 2111| char* test_strtod(char*) -# 2111| Block 0 -# 2111| v2111_1(void) = EnterFunction : -# 2111| mu2111_2(unknown) = AliasedDefinition : -# 2111| mu2111_3(unknown) = InitializeNonLocal : -# 2111| r2111_4(glval<char *>) = VariableAddress[s] : -# 2111| mu2111_5(char *) = InitializeParameter[s] : &:r2111_4 -# 2111| r2111_6(char *) = Load[s] : &:r2111_4, ~m? -# 2111| mu2111_7(unknown) = InitializeIndirection[s] : &:r2111_6 -# 2112| r2112_1(glval<char *>) = VariableAddress[end] : -# 2112| mu2112_2(char *) = Uninitialized[end] : &:r2112_1 -# 2113| r2113_1(glval<double>) = VariableAddress[d] : -# 2113| r2113_2(glval<unknown>) = FunctionAddress[strtod] : -# 2113| r2113_3(glval<char *>) = VariableAddress[s] : -# 2113| r2113_4(char *) = Load[s] : &:r2113_3, ~m? -# 2113| r2113_5(char *) = Convert : r2113_4 -# 2113| r2113_6(glval<char *>) = VariableAddress[end] : -# 2113| r2113_7(char **) = CopyValue : r2113_6 -# 2113| r2113_8(double) = Call[strtod] : func:r2113_2, 0:r2113_5, 1:r2113_7 -# 2113| v2113_9(void) = ^BufferReadSideEffect[0] : &:r2113_5, ~m? -# 2113| mu2113_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2113_7 -# 2113| mu2113_11(double) = Store[d] : &:r2113_1, r2113_8 -# 2114| r2114_1(glval<char *>) = VariableAddress[#return] : -# 2114| r2114_2(glval<char *>) = VariableAddress[end] : -# 2114| r2114_3(char *) = Load[end] : &:r2114_2, ~m? -# 2114| mu2114_4(char *) = Store[#return] : &:r2114_1, r2114_3 -# 2111| v2111_8(void) = ReturnIndirection[s] : &:r2111_6, ~m? -# 2111| r2111_9(glval<char *>) = VariableAddress[#return] : -# 2111| v2111_10(void) = ReturnValue : &:r2111_9, ~m? -# 2111| v2111_11(void) = AliasedUse : ~m? -# 2111| v2111_12(void) = ExitFunction : - -# 2121| void call_as_child_of_ConditionDeclExpr() -# 2121| Block 0 -# 2121| v2121_1(void) = EnterFunction : -# 2121| mu2121_2(unknown) = AliasedDefinition : -# 2121| mu2121_3(unknown) = InitializeNonLocal : -# 2122| r2122_1(glval<HasOperatorBool>) = VariableAddress[b] : -# 2122| r2122_2(HasOperatorBool) = Constant[0] : -# 2122| mu2122_3(HasOperatorBool) = Store[b] : &:r2122_1, r2122_2 -# 2122| r2122_4(glval<HasOperatorBool>) = VariableAddress[b] : -# 2122| r2122_5(glval<unknown>) = FunctionAddress[operator bool] : -# 2122| r2122_6(bool) = Call[operator bool] : func:r2122_5, this:r2122_4 -# 2122| mu2122_7(unknown) = ^CallSideEffect : ~m? -# 2122| v2122_8(void) = ^IndirectReadSideEffect[-1] : &:r2122_4, ~m? -# 2122| mu2122_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2122_4 -# 2122| r2122_10(bool) = CopyValue : r2122_6 -# 2122| v2122_11(void) = ConditionalBranch : r2122_10 +# 2143| Block 2 +# 2143| r2143_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2143| v2143_2(void) = Call[VoidFunc] : func:r2143_1 +# 2143| mu2143_3(unknown) = ^CallSideEffect : ~m? +# 2144| r2144_1(glval<int>) = VariableAddress[#return] : +# 2144| r2144_2(glval<int>) = VariableAddress[x] : +# 2144| r2144_3(int) = Load[x] : &:r2144_2, ~m? +# 2144| mu2144_4(int) = Store[#return] : &:r2144_1, r2144_3 +# 2139| r2139_4(glval<int>) = VariableAddress[#return] : +# 2139| v2139_5(void) = ReturnValue : &:r2139_4, ~m? +# 2139| v2139_6(void) = AliasedUse : ~m? +# 2139| v2139_7(void) = ExitFunction : + +# 2147| void newArrayCorrectType(size_t) +# 2147| Block 0 +# 2147| v2147_1(void) = EnterFunction : +# 2147| mu2147_2(unknown) = AliasedDefinition : +# 2147| mu2147_3(unknown) = InitializeNonLocal : +# 2147| r2147_4(glval<unsigned long>) = VariableAddress[n] : +# 2147| mu2147_5(unsigned long) = InitializeParameter[n] : &:r2147_4 +# 2148| r2148_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2148| r2148_2(glval<unsigned long>) = VariableAddress[n] : +# 2148| r2148_3(unsigned long) = Load[n] : &:r2148_2, ~m? +# 2148| r2148_4(unsigned long) = Constant[4] : +# 2148| r2148_5(unsigned long) = Mul : r2148_3, r2148_4 +# 2148| r2148_6(void *) = Call[operator new[]] : func:r2148_1, 0:r2148_5 +# 2148| mu2148_7(unknown) = ^CallSideEffect : ~m? +# 2148| mu2148_8(unknown) = ^InitializeDynamicAllocation : &:r2148_6 +# 2148| r2148_9(int *) = Convert : r2148_6 +# 2149| r2149_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2149| r2149_2(glval<unsigned long>) = VariableAddress[n] : +# 2149| r2149_3(unsigned long) = Load[n] : &:r2149_2, ~m? +# 2149| r2149_4(unsigned long) = Constant[4] : +# 2149| r2149_5(unsigned long) = Mul : r2149_3, r2149_4 +# 2149| r2149_6(float) = Constant[1.0] : +# 2149| r2149_7(void *) = Call[operator new[]] : func:r2149_1, 0:r2149_5, 1:r2149_6 +# 2149| mu2149_8(unknown) = ^CallSideEffect : ~m? +# 2149| mu2149_9(unknown) = ^InitializeDynamicAllocation : &:r2149_7 +# 2149| r2149_10(int *) = Convert : r2149_7 +# 2150| r2150_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2150| r2150_2(glval<unsigned long>) = VariableAddress[n] : +# 2150| r2150_3(unsigned long) = Load[n] : &:r2150_2, ~m? +# 2150| r2150_4(unsigned long) = Constant[8] : +# 2150| r2150_5(unsigned long) = Mul : r2150_3, r2150_4 +# 2150| r2150_6(void *) = Call[operator new[]] : func:r2150_1, 0:r2150_5 +# 2150| mu2150_7(unknown) = ^CallSideEffect : ~m? +# 2150| mu2150_8(unknown) = ^InitializeDynamicAllocation : &:r2150_6 +# 2150| r2150_9(String *) = Convert : r2150_6 +# 2151| r2151_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2151| r2151_2(glval<unsigned long>) = VariableAddress[n] : +# 2151| r2151_3(unsigned long) = Load[n] : &:r2151_2, ~m? +# 2151| r2151_4(unsigned long) = Constant[256] : +# 2151| r2151_5(unsigned long) = Mul : r2151_3, r2151_4 +# 2151| r2151_6(align_val_t) = Constant[128] : +# 2151| r2151_7(void *) = Call[operator new[]] : func:r2151_1, 0:r2151_5, 1:r2151_6 +# 2151| mu2151_8(unknown) = ^CallSideEffect : ~m? +# 2151| mu2151_9(unknown) = ^InitializeDynamicAllocation : &:r2151_7 +# 2151| r2151_10(Overaligned *) = Convert : r2151_7 +# 2152| r2152_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2152| r2152_2(glval<unsigned long>) = VariableAddress[n] : +# 2152| r2152_3(unsigned long) = Load[n] : &:r2152_2, ~m? +# 2152| r2152_4(unsigned long) = Constant[1] : +# 2152| r2152_5(unsigned long) = Mul : r2152_3, r2152_4 +# 2152| r2152_6(void *) = Call[operator new[]] : func:r2152_1, 0:r2152_5 +# 2152| mu2152_7(unknown) = ^CallSideEffect : ~m? +# 2152| mu2152_8(unknown) = ^InitializeDynamicAllocation : &:r2152_6 +# 2152| r2152_9(DefaultCtorWithDefaultParam *) = Convert : r2152_6 +# 2153| r2153_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2153| r2153_2(glval<unsigned long>) = VariableAddress[n] : +# 2153| r2153_3(unsigned long) = Load[n] : &:r2153_2, ~m? +# 2153| r2153_4(unsigned long) = Constant[4] : +# 2153| r2153_5(unsigned long) = Mul : r2153_3, r2153_4 +# 2153| r2153_6(void *) = Call[operator new[]] : func:r2153_1, 0:r2153_5 +# 2153| mu2153_7(unknown) = ^CallSideEffect : ~m? +# 2153| mu2153_8(unknown) = ^InitializeDynamicAllocation : &:r2153_6 +# 2153| r2153_9(int *) = Convert : r2153_6 +# 2154| v2154_1(void) = NoOp : +# 2147| v2147_6(void) = ReturnVoid : +# 2147| v2147_7(void) = AliasedUse : ~m? +# 2147| v2147_8(void) = ExitFunction : + +# 2158| char* test_strtod(char*) +# 2158| Block 0 +# 2158| v2158_1(void) = EnterFunction : +# 2158| mu2158_2(unknown) = AliasedDefinition : +# 2158| mu2158_3(unknown) = InitializeNonLocal : +# 2158| r2158_4(glval<char *>) = VariableAddress[s] : +# 2158| mu2158_5(char *) = InitializeParameter[s] : &:r2158_4 +# 2158| r2158_6(char *) = Load[s] : &:r2158_4, ~m? +# 2158| mu2158_7(unknown) = InitializeIndirection[s] : &:r2158_6 +# 2159| r2159_1(glval<char *>) = VariableAddress[end] : +# 2159| mu2159_2(char *) = Uninitialized[end] : &:r2159_1 +# 2160| r2160_1(glval<double>) = VariableAddress[d] : +# 2160| r2160_2(glval<unknown>) = FunctionAddress[strtod] : +# 2160| r2160_3(glval<char *>) = VariableAddress[s] : +# 2160| r2160_4(char *) = Load[s] : &:r2160_3, ~m? +# 2160| r2160_5(char *) = Convert : r2160_4 +# 2160| r2160_6(glval<char *>) = VariableAddress[end] : +# 2160| r2160_7(char **) = CopyValue : r2160_6 +# 2160| r2160_8(double) = Call[strtod] : func:r2160_2, 0:r2160_5, 1:r2160_7 +# 2160| v2160_9(void) = ^BufferReadSideEffect[0] : &:r2160_5, ~m? +# 2160| mu2160_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2160_7 +# 2160| mu2160_11(double) = Store[d] : &:r2160_1, r2160_8 +# 2161| r2161_1(glval<char *>) = VariableAddress[#return] : +# 2161| r2161_2(glval<char *>) = VariableAddress[end] : +# 2161| r2161_3(char *) = Load[end] : &:r2161_2, ~m? +# 2161| mu2161_4(char *) = Store[#return] : &:r2161_1, r2161_3 +# 2158| v2158_8(void) = ReturnIndirection[s] : &:r2158_6, ~m? +# 2158| r2158_9(glval<char *>) = VariableAddress[#return] : +# 2158| v2158_10(void) = ReturnValue : &:r2158_9, ~m? +# 2158| v2158_11(void) = AliasedUse : ~m? +# 2158| v2158_12(void) = ExitFunction : + +# 2168| void call_as_child_of_ConditionDeclExpr() +# 2168| Block 0 +# 2168| v2168_1(void) = EnterFunction : +# 2168| mu2168_2(unknown) = AliasedDefinition : +# 2168| mu2168_3(unknown) = InitializeNonLocal : +# 2169| r2169_1(glval<HasOperatorBool>) = VariableAddress[b] : +# 2169| r2169_2(HasOperatorBool) = Constant[0] : +# 2169| mu2169_3(HasOperatorBool) = Store[b] : &:r2169_1, r2169_2 +# 2169| r2169_4(glval<HasOperatorBool>) = VariableAddress[b] : +# 2169| r2169_5(glval<unknown>) = FunctionAddress[operator bool] : +# 2169| r2169_6(bool) = Call[operator bool] : func:r2169_5, this:r2169_4 +# 2169| mu2169_7(unknown) = ^CallSideEffect : ~m? +# 2169| v2169_8(void) = ^IndirectReadSideEffect[-1] : &:r2169_4, ~m? +# 2169| mu2169_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2169_4 +# 2169| r2169_10(bool) = CopyValue : r2169_6 +# 2169| v2169_11(void) = ConditionalBranch : r2169_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 2122| Block 1 -# 2122| v2122_12(void) = NoOp : +# 2169| Block 1 +# 2169| v2169_12(void) = NoOp : #-----| Goto -> Block 2 -# 2123| Block 2 -# 2123| v2123_1(void) = NoOp : -# 2121| v2121_4(void) = ReturnVoid : -# 2121| v2121_5(void) = AliasedUse : ~m? -# 2121| v2121_6(void) = ExitFunction : - -# 2125| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2125| Block 0 -# 2125| v2125_1(void) = EnterFunction : -# 2125| mu2125_2(unknown) = AliasedDefinition : -# 2125| mu2125_3(unknown) = InitializeNonLocal : -# 2125| r2125_4(glval<unknown>) = VariableAddress[#this] : -# 2125| mu2125_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2125_4 -# 2125| r2125_6(glval<ClassWithDestructor>) = Load[#this] : &:r2125_4, ~m? -# 2125| mu2125_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2125_6 +# 2170| Block 2 +# 2170| v2170_1(void) = NoOp : +# 2168| v2168_4(void) = ReturnVoid : +# 2168| v2168_5(void) = AliasedUse : ~m? +# 2168| v2168_6(void) = ExitFunction : + +# 2172| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2172| Block 0 +# 2172| v2172_1(void) = EnterFunction : +# 2172| mu2172_2(unknown) = AliasedDefinition : +# 2172| mu2172_3(unknown) = InitializeNonLocal : +# 2172| r2172_4(glval<unknown>) = VariableAddress[#this] : +# 2172| mu2172_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2172_4 +# 2172| r2172_6(glval<ClassWithDestructor>) = Load[#this] : &:r2172_4, ~m? +# 2172| mu2172_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2172_6 #-----| r0_1(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2125| r2125_8(glval<char *>) = FieldAddress[x] : mu2125_5 -# 2125| r2125_9(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : -# 2125| r2125_10(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2125_9, ~m? -# 2125| r2125_11(glval<ClassWithDestructor>) = CopyValue : r2125_10 -# 2125| r2125_12(glval<char *>) = FieldAddress[x] : r2125_11 -# 2125| r2125_13(char *) = Load[?] : &:r2125_12, ~m? -# 2125| mu2125_14(char *) = Store[?] : &:r2125_8, r2125_13 -# 2125| v2125_15(void) = NoOp : -# 2125| v2125_16(void) = ReturnIndirection[#this] : &:r2125_6, ~m? +# 2172| r2172_8(glval<char *>) = FieldAddress[x] : mu2172_5 +# 2172| r2172_9(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : +# 2172| r2172_10(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2172_9, ~m? +# 2172| r2172_11(glval<ClassWithDestructor>) = CopyValue : r2172_10 +# 2172| r2172_12(glval<char *>) = FieldAddress[x] : r2172_11 +# 2172| r2172_13(char *) = Load[?] : &:r2172_12, ~m? +# 2172| mu2172_14(char *) = Store[?] : &:r2172_8, r2172_13 +# 2172| v2172_15(void) = NoOp : +# 2172| v2172_16(void) = ReturnIndirection[#this] : &:r2172_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2125| v2125_17(void) = ReturnVoid : -# 2125| v2125_18(void) = AliasedUse : ~m? -# 2125| v2125_19(void) = ExitFunction : - -# 2128| void ClassWithDestructor::ClassWithDestructor() -# 2128| Block 0 -# 2128| v2128_1(void) = EnterFunction : -# 2128| mu2128_2(unknown) = AliasedDefinition : -# 2128| mu2128_3(unknown) = InitializeNonLocal : -# 2128| r2128_4(glval<unknown>) = VariableAddress[#this] : -# 2128| mu2128_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2128_4 -# 2128| r2128_6(glval<ClassWithDestructor>) = Load[#this] : &:r2128_4, ~m? -# 2128| mu2128_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2128_6 -# 2128| r2128_8(glval<unknown>) = FunctionAddress[operator new] : -# 2128| r2128_9(unsigned long) = Constant[1] : -# 2128| r2128_10(void *) = Call[operator new] : func:r2128_8, 0:r2128_9 -# 2128| mu2128_11(unknown) = ^CallSideEffect : ~m? -# 2128| mu2128_12(unknown) = ^InitializeDynamicAllocation : &:r2128_10 -# 2128| r2128_13(char *) = Convert : r2128_10 -# 2128| r2128_14(glval<unknown>) = VariableAddress[#this] : -# 2128| r2128_15(ClassWithDestructor *) = Load[#this] : &:r2128_14, ~m? -# 2128| r2128_16(glval<char *>) = FieldAddress[x] : r2128_15 -# 2128| mu2128_17(char *) = Store[?] : &:r2128_16, r2128_13 -# 2128| v2128_18(void) = NoOp : -# 2128| v2128_19(void) = ReturnIndirection[#this] : &:r2128_6, ~m? -# 2128| v2128_20(void) = ReturnVoid : -# 2128| v2128_21(void) = AliasedUse : ~m? -# 2128| v2128_22(void) = ExitFunction : - -# 2129| void ClassWithDestructor::~ClassWithDestructor() -# 2129| Block 0 -# 2129| v2129_1(void) = EnterFunction : -# 2129| mu2129_2(unknown) = AliasedDefinition : -# 2129| mu2129_3(unknown) = InitializeNonLocal : -# 2129| r2129_4(glval<unknown>) = VariableAddress[#this] : -# 2129| mu2129_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2129_4 -# 2129| r2129_6(glval<ClassWithDestructor>) = Load[#this] : &:r2129_4, ~m? -# 2129| mu2129_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2129_6 -# 2129| r2129_8(glval<unknown>) = FunctionAddress[operator delete] : -# 2129| r2129_9(glval<unknown>) = VariableAddress[#this] : -# 2129| r2129_10(ClassWithDestructor *) = Load[#this] : &:r2129_9, ~m? -# 2129| r2129_11(glval<char *>) = FieldAddress[x] : r2129_10 -# 2129| r2129_12(char *) = Load[?] : &:r2129_11, ~m? -# 2129| v2129_13(void) = Call[operator delete] : func:r2129_8, 0:r2129_12 -# 2129| mu2129_14(unknown) = ^CallSideEffect : ~m? -# 2129| v2129_15(void) = NoOp : -# 2129| v2129_16(void) = ReturnIndirection[#this] : &:r2129_6, ~m? -# 2129| v2129_17(void) = ReturnVoid : -# 2129| v2129_18(void) = AliasedUse : ~m? -# 2129| v2129_19(void) = ExitFunction : - -# 2131| void ClassWithDestructor::set_x(char) -# 2131| Block 0 -# 2131| v2131_1(void) = EnterFunction : -# 2131| mu2131_2(unknown) = AliasedDefinition : -# 2131| mu2131_3(unknown) = InitializeNonLocal : -# 2131| r2131_4(glval<unknown>) = VariableAddress[#this] : -# 2131| mu2131_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2131_4 -# 2131| r2131_6(glval<ClassWithDestructor>) = Load[#this] : &:r2131_4, ~m? -# 2131| mu2131_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2131_6 -# 2131| r2131_8(glval<char>) = VariableAddress[y] : -# 2131| mu2131_9(char) = InitializeParameter[y] : &:r2131_8 -# 2131| r2131_10(glval<char>) = VariableAddress[y] : -# 2131| r2131_11(char) = Load[y] : &:r2131_10, ~m? -# 2131| r2131_12(glval<unknown>) = VariableAddress[#this] : -# 2131| r2131_13(ClassWithDestructor *) = Load[#this] : &:r2131_12, ~m? -# 2131| r2131_14(glval<char *>) = FieldAddress[x] : r2131_13 -# 2131| r2131_15(char *) = Load[?] : &:r2131_14, ~m? -# 2131| r2131_16(glval<char>) = CopyValue : r2131_15 -# 2131| mu2131_17(char) = Store[?] : &:r2131_16, r2131_11 -# 2131| v2131_18(void) = NoOp : -# 2131| v2131_19(void) = ReturnIndirection[#this] : &:r2131_6, ~m? -# 2131| v2131_20(void) = ReturnVoid : -# 2131| v2131_21(void) = AliasedUse : ~m? -# 2131| v2131_22(void) = ExitFunction : - -# 2132| char ClassWithDestructor::get_x() -# 2132| Block 0 -# 2132| v2132_1(void) = EnterFunction : -# 2132| mu2132_2(unknown) = AliasedDefinition : -# 2132| mu2132_3(unknown) = InitializeNonLocal : -# 2132| r2132_4(glval<unknown>) = VariableAddress[#this] : -# 2132| mu2132_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2132_4 -# 2132| r2132_6(glval<ClassWithDestructor>) = Load[#this] : &:r2132_4, ~m? -# 2132| mu2132_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2132_6 -# 2132| r2132_8(glval<char>) = VariableAddress[#return] : -# 2132| r2132_9(glval<unknown>) = VariableAddress[#this] : -# 2132| r2132_10(ClassWithDestructor *) = Load[#this] : &:r2132_9, ~m? -# 2132| r2132_11(glval<char *>) = FieldAddress[x] : r2132_10 -# 2132| r2132_12(char *) = Load[?] : &:r2132_11, ~m? -# 2132| r2132_13(char) = Load[?] : &:r2132_12, ~m? -# 2132| mu2132_14(char) = Store[#return] : &:r2132_8, r2132_13 -# 2132| v2132_15(void) = ReturnIndirection[#this] : &:r2132_6, ~m? -# 2132| r2132_16(glval<char>) = VariableAddress[#return] : -# 2132| v2132_17(void) = ReturnValue : &:r2132_16, ~m? -# 2132| v2132_18(void) = AliasedUse : ~m? -# 2132| v2132_19(void) = ExitFunction : - -# 2135| bool initialization_with_destructor_bool -# 2135| Block 0 -# 2135| v2135_1(void) = EnterFunction : -# 2135| mu2135_2(unknown) = AliasedDefinition : -# 2135| r2135_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : -# 2135| r2135_4(bool) = Constant[1] : -# 2135| mu2135_5(bool) = Store[initialization_with_destructor_bool] : &:r2135_3, r2135_4 -# 2135| v2135_6(void) = ReturnVoid : -# 2135| v2135_7(void) = AliasedUse : ~m? -# 2135| v2135_8(void) = ExitFunction : - -# 2137| void initialization_with_destructor(bool, char) -# 2137| Block 0 -# 2137| v2137_1(void) = EnterFunction : -# 2137| mu2137_2(unknown) = AliasedDefinition : -# 2137| mu2137_3(unknown) = InitializeNonLocal : -# 2137| r2137_4(glval<bool>) = VariableAddress[b] : -# 2137| mu2137_5(bool) = InitializeParameter[b] : &:r2137_4 -# 2137| r2137_6(glval<char>) = VariableAddress[c] : -# 2137| mu2137_7(char) = InitializeParameter[c] : &:r2137_6 -# 2138| r2138_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2138| mu2138_2(ClassWithDestructor) = Uninitialized[x] : &:r2138_1 -# 2138| r2138_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2138| v2138_4(void) = Call[ClassWithDestructor] : func:r2138_3, this:r2138_1 -# 2138| mu2138_5(unknown) = ^CallSideEffect : ~m? -# 2138| mu2138_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2138_1 -# 2138| r2138_7(glval<bool>) = VariableAddress[b] : -# 2138| r2138_8(bool) = Load[b] : &:r2138_7, ~m? -# 2138| v2138_9(void) = ConditionalBranch : r2138_8 +# 2172| v2172_17(void) = ReturnVoid : +# 2172| v2172_18(void) = AliasedUse : ~m? +# 2172| v2172_19(void) = ExitFunction : + +# 2175| void ClassWithDestructor::ClassWithDestructor() +# 2175| Block 0 +# 2175| v2175_1(void) = EnterFunction : +# 2175| mu2175_2(unknown) = AliasedDefinition : +# 2175| mu2175_3(unknown) = InitializeNonLocal : +# 2175| r2175_4(glval<unknown>) = VariableAddress[#this] : +# 2175| mu2175_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2175_4 +# 2175| r2175_6(glval<ClassWithDestructor>) = Load[#this] : &:r2175_4, ~m? +# 2175| mu2175_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2175_6 +# 2175| r2175_8(glval<unknown>) = FunctionAddress[operator new] : +# 2175| r2175_9(unsigned long) = Constant[1] : +# 2175| r2175_10(void *) = Call[operator new] : func:r2175_8, 0:r2175_9 +# 2175| mu2175_11(unknown) = ^CallSideEffect : ~m? +# 2175| mu2175_12(unknown) = ^InitializeDynamicAllocation : &:r2175_10 +# 2175| r2175_13(char *) = Convert : r2175_10 +# 2175| r2175_14(glval<unknown>) = VariableAddress[#this] : +# 2175| r2175_15(ClassWithDestructor *) = Load[#this] : &:r2175_14, ~m? +# 2175| r2175_16(glval<char *>) = FieldAddress[x] : r2175_15 +# 2175| mu2175_17(char *) = Store[?] : &:r2175_16, r2175_13 +# 2175| v2175_18(void) = NoOp : +# 2175| v2175_19(void) = ReturnIndirection[#this] : &:r2175_6, ~m? +# 2175| v2175_20(void) = ReturnVoid : +# 2175| v2175_21(void) = AliasedUse : ~m? +# 2175| v2175_22(void) = ExitFunction : + +# 2176| void ClassWithDestructor::~ClassWithDestructor() +# 2176| Block 0 +# 2176| v2176_1(void) = EnterFunction : +# 2176| mu2176_2(unknown) = AliasedDefinition : +# 2176| mu2176_3(unknown) = InitializeNonLocal : +# 2176| r2176_4(glval<unknown>) = VariableAddress[#this] : +# 2176| mu2176_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2176_4 +# 2176| r2176_6(glval<ClassWithDestructor>) = Load[#this] : &:r2176_4, ~m? +# 2176| mu2176_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2176_6 +# 2176| r2176_8(glval<unknown>) = FunctionAddress[operator delete] : +# 2176| r2176_9(glval<unknown>) = VariableAddress[#this] : +# 2176| r2176_10(ClassWithDestructor *) = Load[#this] : &:r2176_9, ~m? +# 2176| r2176_11(glval<char *>) = FieldAddress[x] : r2176_10 +# 2176| r2176_12(char *) = Load[?] : &:r2176_11, ~m? +# 2176| v2176_13(void) = Call[operator delete] : func:r2176_8, 0:r2176_12 +# 2176| mu2176_14(unknown) = ^CallSideEffect : ~m? +# 2176| v2176_15(void) = NoOp : +# 2176| v2176_16(void) = ReturnIndirection[#this] : &:r2176_6, ~m? +# 2176| v2176_17(void) = ReturnVoid : +# 2176| v2176_18(void) = AliasedUse : ~m? +# 2176| v2176_19(void) = ExitFunction : + +# 2178| void ClassWithDestructor::set_x(char) +# 2178| Block 0 +# 2178| v2178_1(void) = EnterFunction : +# 2178| mu2178_2(unknown) = AliasedDefinition : +# 2178| mu2178_3(unknown) = InitializeNonLocal : +# 2178| r2178_4(glval<unknown>) = VariableAddress[#this] : +# 2178| mu2178_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2178_4 +# 2178| r2178_6(glval<ClassWithDestructor>) = Load[#this] : &:r2178_4, ~m? +# 2178| mu2178_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2178_6 +# 2178| r2178_8(glval<char>) = VariableAddress[y] : +# 2178| mu2178_9(char) = InitializeParameter[y] : &:r2178_8 +# 2178| r2178_10(glval<char>) = VariableAddress[y] : +# 2178| r2178_11(char) = Load[y] : &:r2178_10, ~m? +# 2178| r2178_12(glval<unknown>) = VariableAddress[#this] : +# 2178| r2178_13(ClassWithDestructor *) = Load[#this] : &:r2178_12, ~m? +# 2178| r2178_14(glval<char *>) = FieldAddress[x] : r2178_13 +# 2178| r2178_15(char *) = Load[?] : &:r2178_14, ~m? +# 2178| r2178_16(glval<char>) = CopyValue : r2178_15 +# 2178| mu2178_17(char) = Store[?] : &:r2178_16, r2178_11 +# 2178| v2178_18(void) = NoOp : +# 2178| v2178_19(void) = ReturnIndirection[#this] : &:r2178_6, ~m? +# 2178| v2178_20(void) = ReturnVoid : +# 2178| v2178_21(void) = AliasedUse : ~m? +# 2178| v2178_22(void) = ExitFunction : + +# 2179| char ClassWithDestructor::get_x() +# 2179| Block 0 +# 2179| v2179_1(void) = EnterFunction : +# 2179| mu2179_2(unknown) = AliasedDefinition : +# 2179| mu2179_3(unknown) = InitializeNonLocal : +# 2179| r2179_4(glval<unknown>) = VariableAddress[#this] : +# 2179| mu2179_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2179_4 +# 2179| r2179_6(glval<ClassWithDestructor>) = Load[#this] : &:r2179_4, ~m? +# 2179| mu2179_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2179_6 +# 2179| r2179_8(glval<char>) = VariableAddress[#return] : +# 2179| r2179_9(glval<unknown>) = VariableAddress[#this] : +# 2179| r2179_10(ClassWithDestructor *) = Load[#this] : &:r2179_9, ~m? +# 2179| r2179_11(glval<char *>) = FieldAddress[x] : r2179_10 +# 2179| r2179_12(char *) = Load[?] : &:r2179_11, ~m? +# 2179| r2179_13(char) = Load[?] : &:r2179_12, ~m? +# 2179| mu2179_14(char) = Store[#return] : &:r2179_8, r2179_13 +# 2179| v2179_15(void) = ReturnIndirection[#this] : &:r2179_6, ~m? +# 2179| r2179_16(glval<char>) = VariableAddress[#return] : +# 2179| v2179_17(void) = ReturnValue : &:r2179_16, ~m? +# 2179| v2179_18(void) = AliasedUse : ~m? +# 2179| v2179_19(void) = ExitFunction : + +# 2182| bool initialization_with_destructor_bool +# 2182| Block 0 +# 2182| v2182_1(void) = EnterFunction : +# 2182| mu2182_2(unknown) = AliasedDefinition : +# 2182| r2182_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : +# 2182| r2182_4(bool) = Constant[1] : +# 2182| mu2182_5(bool) = Store[initialization_with_destructor_bool] : &:r2182_3, r2182_4 +# 2182| v2182_6(void) = ReturnVoid : +# 2182| v2182_7(void) = AliasedUse : ~m? +# 2182| v2182_8(void) = ExitFunction : + +# 2184| void initialization_with_destructor(bool, char) +# 2184| Block 0 +# 2184| v2184_1(void) = EnterFunction : +# 2184| mu2184_2(unknown) = AliasedDefinition : +# 2184| mu2184_3(unknown) = InitializeNonLocal : +# 2184| r2184_4(glval<bool>) = VariableAddress[b] : +# 2184| mu2184_5(bool) = InitializeParameter[b] : &:r2184_4 +# 2184| r2184_6(glval<char>) = VariableAddress[c] : +# 2184| mu2184_7(char) = InitializeParameter[c] : &:r2184_6 +# 2185| r2185_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2185| mu2185_2(ClassWithDestructor) = Uninitialized[x] : &:r2185_1 +# 2185| r2185_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2185| v2185_4(void) = Call[ClassWithDestructor] : func:r2185_3, this:r2185_1 +# 2185| mu2185_5(unknown) = ^CallSideEffect : ~m? +# 2185| mu2185_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 +# 2185| r2185_7(glval<bool>) = VariableAddress[b] : +# 2185| r2185_8(bool) = Load[b] : &:r2185_7, ~m? +# 2185| v2185_9(void) = ConditionalBranch : r2185_8 #-----| False -> Block 3 #-----| True -> Block 2 -# 2137| Block 1 -# 2137| v2137_8(void) = ReturnVoid : -# 2137| v2137_9(void) = AliasedUse : ~m? -# 2137| v2137_10(void) = ExitFunction : - -# 2139| Block 2 -# 2139| r2139_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2139| r2139_2(glval<unknown>) = FunctionAddress[set_x] : -# 2139| r2139_3(char) = Constant[97] : -# 2139| v2139_4(void) = Call[set_x] : func:r2139_2, this:r2139_1, 0:r2139_3 -# 2139| mu2139_5(unknown) = ^CallSideEffect : ~m? -# 2139| v2139_6(void) = ^IndirectReadSideEffect[-1] : &:r2139_1, ~m? -# 2139| mu2139_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2139_1 -# 2139| r2139_8(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2139| r2139_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2139| v2139_10(void) = Call[~ClassWithDestructor] : func:r2139_9, this:r2139_8 -# 2139| mu2139_11(unknown) = ^CallSideEffect : ~m? -# 2139| v2139_12(void) = ^IndirectReadSideEffect[-1] : &:r2139_8, ~m? -# 2139| mu2139_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2139_8 +# 2184| Block 1 +# 2184| v2184_8(void) = ReturnVoid : +# 2184| v2184_9(void) = AliasedUse : ~m? +# 2184| v2184_10(void) = ExitFunction : + +# 2186| Block 2 +# 2186| r2186_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2186| r2186_2(glval<unknown>) = FunctionAddress[set_x] : +# 2186| r2186_3(char) = Constant[97] : +# 2186| v2186_4(void) = Call[set_x] : func:r2186_2, this:r2186_1, 0:r2186_3 +# 2186| mu2186_5(unknown) = ^CallSideEffect : ~m? +# 2186| v2186_6(void) = ^IndirectReadSideEffect[-1] : &:r2186_1, ~m? +# 2186| mu2186_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 +# 2186| r2186_8(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2186| r2186_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2186| v2186_10(void) = Call[~ClassWithDestructor] : func:r2186_9, this:r2186_8 +# 2186| mu2186_11(unknown) = ^CallSideEffect : ~m? +# 2186| v2186_12(void) = ^IndirectReadSideEffect[-1] : &:r2186_8, ~m? +# 2186| mu2186_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_8 #-----| Goto -> Block 3 -# 2141| Block 3 -# 2141| r2141_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2141| mu2141_2(ClassWithDestructor) = Uninitialized[x] : &:r2141_1 -# 2141| r2141_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2141| v2141_4(void) = Call[ClassWithDestructor] : func:r2141_3, this:r2141_1 -# 2141| mu2141_5(unknown) = ^CallSideEffect : ~m? -# 2141| mu2141_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2141_1 -# 2141| r2141_7(bool) = Constant[1] : -# 2141| v2141_8(void) = ConditionalBranch : r2141_7 +# 2188| Block 3 +# 2188| r2188_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2188| mu2188_2(ClassWithDestructor) = Uninitialized[x] : &:r2188_1 +# 2188| r2188_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2188| v2188_4(void) = Call[ClassWithDestructor] : func:r2188_3, this:r2188_1 +# 2188| mu2188_5(unknown) = ^CallSideEffect : ~m? +# 2188| mu2188_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_1 +# 2188| r2188_7(bool) = Constant[1] : +# 2188| v2188_8(void) = ConditionalBranch : r2188_7 #-----| False -> Block 6 #-----| True -> Block 4 -# 2142| Block 4 -# 2142| r2142_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2142| r2142_2(glval<unknown>) = FunctionAddress[set_x] : -# 2142| r2142_3(char) = Constant[97] : -# 2142| v2142_4(void) = Call[set_x] : func:r2142_2, this:r2142_1, 0:r2142_3 -# 2142| mu2142_5(unknown) = ^CallSideEffect : ~m? -# 2142| v2142_6(void) = ^IndirectReadSideEffect[-1] : &:r2142_1, ~m? -# 2142| mu2142_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2142_1 +# 2189| Block 4 +# 2189| r2189_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2189| r2189_2(glval<unknown>) = FunctionAddress[set_x] : +# 2189| r2189_3(char) = Constant[97] : +# 2189| v2189_4(void) = Call[set_x] : func:r2189_2, this:r2189_1, 0:r2189_3 +# 2189| mu2189_5(unknown) = ^CallSideEffect : ~m? +# 2189| v2189_6(void) = ^IndirectReadSideEffect[-1] : &:r2189_1, ~m? +# 2189| mu2189_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2189_1 #-----| Goto -> Block 6 -# 2142| Block 5 -# 2142| r2142_8(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2142| r2142_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2142| v2142_10(void) = Call[~ClassWithDestructor] : func:r2142_9, this:r2142_8 -# 2142| mu2142_11(unknown) = ^CallSideEffect : ~m? -# 2142| v2142_12(void) = ^IndirectReadSideEffect[-1] : &:r2142_8, ~m? -# 2142| mu2142_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2142_8 +# 2189| Block 5 +# 2189| r2189_8(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2189| r2189_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2189| v2189_10(void) = Call[~ClassWithDestructor] : func:r2189_9, this:r2189_8 +# 2189| mu2189_11(unknown) = ^CallSideEffect : ~m? +# 2189| v2189_12(void) = ^IndirectReadSideEffect[-1] : &:r2189_8, ~m? +# 2189| mu2189_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2189_8 #-----| Goto -> Block 6 -# 2144| Block 6 -# 2144| r2144_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2144| mu2144_2(ClassWithDestructor) = Uninitialized[x] : &:r2144_1 -# 2144| r2144_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2144| v2144_4(void) = Call[ClassWithDestructor] : func:r2144_3, this:r2144_1 -# 2144| mu2144_5(unknown) = ^CallSideEffect : ~m? -# 2144| mu2144_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2144_1 -# 2144| r2144_7(glval<char>) = VariableAddress[c] : -# 2144| r2144_8(char) = Load[c] : &:r2144_7, ~m? -# 2144| r2144_9(int) = Convert : r2144_8 -# 2144| v2144_10(void) = Switch : r2144_9 +# 2191| Block 6 +# 2191| r2191_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2191| mu2191_2(ClassWithDestructor) = Uninitialized[x] : &:r2191_1 +# 2191| r2191_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2191| v2191_4(void) = Call[ClassWithDestructor] : func:r2191_3, this:r2191_1 +# 2191| mu2191_5(unknown) = ^CallSideEffect : ~m? +# 2191| mu2191_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2191_1 +# 2191| r2191_7(glval<char>) = VariableAddress[c] : +# 2191| r2191_8(char) = Load[c] : &:r2191_7, ~m? +# 2191| r2191_9(int) = Convert : r2191_8 +# 2191| v2191_10(void) = Switch : r2191_9 #-----| Case[97] -> Block 7 #-----| Default -> Block 8 -# 2145| Block 7 -# 2145| v2145_1(void) = NoOp : -# 2146| r2146_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2146| r2146_2(glval<unknown>) = FunctionAddress[set_x] : -# 2146| r2146_3(char) = Constant[97] : -# 2146| v2146_4(void) = Call[set_x] : func:r2146_2, this:r2146_1, 0:r2146_3 -# 2146| mu2146_5(unknown) = ^CallSideEffect : ~m? -# 2146| v2146_6(void) = ^IndirectReadSideEffect[-1] : &:r2146_1, ~m? -# 2146| mu2146_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2146_1 -# 2147| v2147_1(void) = NoOp : +# 2192| Block 7 +# 2192| v2192_1(void) = NoOp : +# 2193| r2193_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2193| r2193_2(glval<unknown>) = FunctionAddress[set_x] : +# 2193| r2193_3(char) = Constant[97] : +# 2193| v2193_4(void) = Call[set_x] : func:r2193_2, this:r2193_1, 0:r2193_3 +# 2193| mu2193_5(unknown) = ^CallSideEffect : ~m? +# 2193| v2193_6(void) = ^IndirectReadSideEffect[-1] : &:r2193_1, ~m? +# 2193| mu2193_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2193_1 +# 2194| v2194_1(void) = NoOp : #-----| Goto -> Block 10 -# 2148| Block 8 -# 2148| v2148_1(void) = NoOp : -# 2149| r2149_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2149| r2149_2(glval<unknown>) = FunctionAddress[set_x] : -# 2149| r2149_3(char) = Constant[98] : -# 2149| v2149_4(void) = Call[set_x] : func:r2149_2, this:r2149_1, 0:r2149_3 -# 2149| mu2149_5(unknown) = ^CallSideEffect : ~m? -# 2149| v2149_6(void) = ^IndirectReadSideEffect[-1] : &:r2149_1, ~m? -# 2149| mu2149_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2149_1 -# 2150| v2150_1(void) = NoOp : +# 2195| Block 8 +# 2195| v2195_1(void) = NoOp : +# 2196| r2196_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2196| r2196_2(glval<unknown>) = FunctionAddress[set_x] : +# 2196| r2196_3(char) = Constant[98] : +# 2196| v2196_4(void) = Call[set_x] : func:r2196_2, this:r2196_1, 0:r2196_3 +# 2196| mu2196_5(unknown) = ^CallSideEffect : ~m? +# 2196| v2196_6(void) = ^IndirectReadSideEffect[-1] : &:r2196_1, ~m? +# 2196| mu2196_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2196_1 +# 2197| v2197_1(void) = NoOp : #-----| Goto -> Block 10 -# 2151| Block 9 -# 2151| r2151_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2151| r2151_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2151| v2151_3(void) = Call[~ClassWithDestructor] : func:r2151_2, this:r2151_1 -# 2151| mu2151_4(unknown) = ^CallSideEffect : ~m? -# 2151| v2151_5(void) = ^IndirectReadSideEffect[-1] : &:r2151_1, ~m? -# 2151| mu2151_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2151_1 +# 2198| Block 9 +# 2198| r2198_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2198| r2198_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2198| v2198_3(void) = Call[~ClassWithDestructor] : func:r2198_2, this:r2198_1 +# 2198| mu2198_4(unknown) = ^CallSideEffect : ~m? +# 2198| v2198_5(void) = ^IndirectReadSideEffect[-1] : &:r2198_1, ~m? +# 2198| mu2198_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2198_1 #-----| Goto -> Block 10 -# 2151| Block 10 -# 2151| v2151_7(void) = NoOp : -# 2153| r2153_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2153| mu2153_2(ClassWithDestructor) = Uninitialized[x] : &:r2153_1 -# 2153| r2153_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2153| v2153_4(void) = Call[ClassWithDestructor] : func:r2153_3, this:r2153_1 -# 2153| mu2153_5(unknown) = ^CallSideEffect : ~m? -# 2153| mu2153_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2153_1 -# 2154| r2154_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2154| mu2154_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2154_1 -# 2154| r2154_3(glval<unknown>) = FunctionAddress[vector] : -# 2154| r2154_4(glval<ClassWithDestructor>) = VariableAddress[#temp2154:40] : -# 2154| r2154_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2154| r2154_6(ClassWithDestructor) = Load[x] : &:r2154_5, ~m? -# 2154| mu2154_7(ClassWithDestructor) = Store[#temp2154:40] : &:r2154_4, r2154_6 -# 2154| r2154_8(ClassWithDestructor) = Load[#temp2154:40] : &:r2154_4, ~m? -# 2154| v2154_9(void) = Call[vector] : func:r2154_3, this:r2154_1, 0:r2154_8 -# 2154| mu2154_10(unknown) = ^CallSideEffect : ~m? -# 2154| mu2154_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2154_1 -# 2154| r2154_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2154| r2154_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2154| r2154_14(vector<ClassWithDestructor> &) = CopyValue : r2154_13 -# 2154| mu2154_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2154_12, r2154_14 -# 2154| r2154_16(glval<iterator>) = VariableAddress[(__begin)] : -# 2154| r2154_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2154| r2154_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2154_17, ~m? -#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2154_18 -#-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 -# 2154| r2154_19(glval<unknown>) = FunctionAddress[begin] : -# 2154| r2154_20(iterator) = Call[begin] : func:r2154_19, this:r0_2 -# 2154| mu2154_21(unknown) = ^CallSideEffect : ~m? -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2154| mu2154_22(iterator) = Store[(__begin)] : &:r2154_16, r2154_20 -# 2154| r2154_23(glval<iterator>) = VariableAddress[(__end)] : -# 2154| r2154_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2154| r2154_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2154_24, ~m? -#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2154_25 -#-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 -# 2154| r2154_26(glval<unknown>) = FunctionAddress[end] : -# 2154| r2154_27(iterator) = Call[end] : func:r2154_26, this:r0_5 -# 2154| mu2154_28(unknown) = ^CallSideEffect : ~m? -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2154| mu2154_29(iterator) = Store[(__end)] : &:r2154_23, r2154_27 +# 2198| Block 10 +# 2198| v2198_7(void) = NoOp : +# 2200| r2200_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2200| mu2200_2(ClassWithDestructor) = Uninitialized[x] : &:r2200_1 +# 2200| r2200_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2200| v2200_4(void) = Call[ClassWithDestructor] : func:r2200_3, this:r2200_1 +# 2200| mu2200_5(unknown) = ^CallSideEffect : ~m? +# 2200| mu2200_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 +# 2201| r2201_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2201| mu2201_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2201_1 +# 2201| r2201_3(glval<unknown>) = FunctionAddress[vector] : +# 2201| r2201_4(glval<ClassWithDestructor>) = VariableAddress[#temp2201:45] : +# 2201| r2201_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2201| r2201_6(ClassWithDestructor) = Load[x] : &:r2201_5, ~m? +# 2201| mu2201_7(ClassWithDestructor) = Store[#temp2201:45] : &:r2201_4, r2201_6 +# 2201| r2201_8(ClassWithDestructor) = Load[#temp2201:45] : &:r2201_4, ~m? +# 2201| v2201_9(void) = Call[vector] : func:r2201_3, this:r2201_1, 0:r2201_8 +# 2201| mu2201_10(unknown) = ^CallSideEffect : ~m? +# 2201| mu2201_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 +# 2201| r2201_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2201| r2201_14(vector<ClassWithDestructor> &) = CopyValue : r2201_13 +# 2201| mu2201_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2201_12, r2201_14 +# 2201| r2201_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2201| r2201_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_17, ~m? +#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_18 +#-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 +# 2201| r2201_19(glval<unknown>) = FunctionAddress[begin] : +# 2201| r2201_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2201_19, this:r0_2 +# 2201| mu2201_21(unknown) = ^CallSideEffect : ~m? +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? +# 2201| mu2201_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_16, r2201_20 +# 2201| r2201_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2201| r2201_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_24, ~m? +#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_25 +#-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 +# 2201| r2201_26(glval<unknown>) = FunctionAddress[end] : +# 2201| r2201_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_26, this:r0_5 +# 2201| mu2201_28(unknown) = ^CallSideEffect : ~m? +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? +# 2201| mu2201_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_23, r2201_27 #-----| Goto -> Block 11 -# 2154| Block 11 -# 2154| r2154_30(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator>) = Convert : r2154_30 -# 2154| r2154_31(glval<unknown>) = FunctionAddress[operator!=] : -# 2154| r2154_32(glval<iterator>) = VariableAddress[(__end)] : -# 2154| r2154_33(iterator) = Load[(__end)] : &:r2154_32, ~m? -# 2154| r2154_34(bool) = Call[operator!=] : func:r2154_31, this:r0_7, 0:r2154_33 -# 2154| mu2154_35(unknown) = ^CallSideEffect : ~m? -#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2154| v2154_36(void) = ConditionalBranch : r2154_34 +# 2201| Block 11 +# 2201| r2201_30(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_30 +# 2201| r2201_31(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : +#-----| mu0_9(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_8 +# 2201| r2201_32(glval<unknown>) = FunctionAddress[iterator] : +# 2201| r2201_33(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_33 +#-----| r0_11(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_10 +# 2201| v2201_34(void) = Call[iterator] : func:r2201_32, this:r0_8, 0:r0_11 +# 2201| mu2201_35(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? +# 2201| mu2201_36(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, ~m? +# 2201| r2201_37(bool) = Call[operator!=] : func:r2201_31, this:r0_7, 0:r0_13 +# 2201| mu2201_38(unknown) = ^CallSideEffect : ~m? +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? +# 2201| v2201_39(void) = ConditionalBranch : r2201_37 #-----| False -> Block 14 #-----| True -> Block 12 -# 2154| Block 12 -# 2154| r2154_37(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2154| r2154_38(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_9(glval<iterator>) = Convert : r2154_38 -# 2154| r2154_39(glval<unknown>) = FunctionAddress[operator*] : -# 2154| r2154_40(ClassWithDestructor &) = Call[operator*] : func:r2154_39, this:r0_9 -# 2154| mu2154_41(unknown) = ^CallSideEffect : ~m? -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m? -# 2154| r2154_42(ClassWithDestructor) = Load[?] : &:r2154_40, ~m? -# 2154| mu2154_43(ClassWithDestructor) = Store[y] : &:r2154_37, r2154_42 -# 2155| r2155_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2155| r2155_2(glval<unknown>) = FunctionAddress[set_x] : -# 2155| r2155_3(char) = Constant[97] : -# 2155| v2155_4(void) = Call[set_x] : func:r2155_2, this:r2155_1, 0:r2155_3 -# 2155| mu2155_5(unknown) = ^CallSideEffect : ~m? -# 2155| v2155_6(void) = ^IndirectReadSideEffect[-1] : &:r2155_1, ~m? -# 2155| mu2155_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2155_1 -# 2154| r2154_44(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2154| r2154_45(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2154| v2154_46(void) = Call[~ClassWithDestructor] : func:r2154_45, this:r2154_44 -# 2154| mu2154_47(unknown) = ^CallSideEffect : ~m? -# 2154| v2154_48(void) = ^IndirectReadSideEffect[-1] : &:r2154_44, ~m? -# 2154| mu2154_49(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2154_44 -# 2154| r2154_50(glval<iterator>) = VariableAddress[(__begin)] : -# 2154| r2154_51(glval<unknown>) = FunctionAddress[operator++] : -# 2154| r2154_52(iterator &) = Call[operator++] : func:r2154_51, this:r2154_50 -# 2154| mu2154_53(unknown) = ^CallSideEffect : ~m? -# 2154| v2154_54(void) = ^IndirectReadSideEffect[-1] : &:r2154_50, ~m? -# 2154| mu2154_55(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2154_50 -# 2154| r2154_56(glval<iterator>) = CopyValue : r2154_52 +# 2201| Block 12 +# 2201| r2201_40(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_41(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_41 +# 2201| r2201_42(glval<unknown>) = FunctionAddress[operator*] : +# 2201| r2201_43(ClassWithDestructor &) = Call[operator*] : func:r2201_42, this:r0_15 +# 2201| mu2201_44(unknown) = ^CallSideEffect : ~m? +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? +# 2201| r2201_45(ClassWithDestructor) = Load[?] : &:r2201_43, ~m? +# 2201| mu2201_46(ClassWithDestructor) = Store[y] : &:r2201_40, r2201_45 +# 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2202| r2202_2(glval<unknown>) = FunctionAddress[set_x] : +# 2202| r2202_3(char) = Constant[97] : +# 2202| v2202_4(void) = Call[set_x] : func:r2202_2, this:r2202_1, 0:r2202_3 +# 2202| mu2202_5(unknown) = ^CallSideEffect : ~m? +# 2202| v2202_6(void) = ^IndirectReadSideEffect[-1] : &:r2202_1, ~m? +# 2202| mu2202_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 +# 2201| r2201_47(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_48(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2201| v2201_49(void) = Call[~ClassWithDestructor] : func:r2201_48, this:r2201_47 +# 2201| mu2201_50(unknown) = ^CallSideEffect : ~m? +# 2201| v2201_51(void) = ^IndirectReadSideEffect[-1] : &:r2201_47, ~m? +# 2201| mu2201_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_47 +# 2201| r2201_53(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2201| r2201_54(glval<unknown>) = FunctionAddress[operator++] : +# 2201| r2201_55(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_54, this:r2201_53 +# 2201| mu2201_56(unknown) = ^CallSideEffect : ~m? +# 2201| v2201_57(void) = ^IndirectReadSideEffect[-1] : &:r2201_53, ~m? +# 2201| mu2201_58(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_53 +# 2201| r2201_59(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_55 #-----| Goto (back edge) -> Block 11 -# 2154| Block 13 -# 2154| r2154_57(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2154| r2154_58(glval<unknown>) = FunctionAddress[~vector] : -# 2154| v2154_59(void) = Call[~vector] : func:r2154_58, this:r2154_57 -# 2154| mu2154_60(unknown) = ^CallSideEffect : ~m? -# 2154| v2154_61(void) = ^IndirectReadSideEffect[-1] : &:r2154_57, ~m? -# 2154| mu2154_62(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2154_57 +# 2201| Block 13 +# 2201| r2201_60(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2201| r2201_61(glval<unknown>) = FunctionAddress[~vector] : +# 2201| v2201_62(void) = Call[~vector] : func:r2201_61, this:r2201_60 +# 2201| mu2201_63(unknown) = ^CallSideEffect : ~m? +# 2201| v2201_64(void) = ^IndirectReadSideEffect[-1] : &:r2201_60, ~m? +# 2201| mu2201_65(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_60 #-----| Goto -> Block 14 -# 2157| Block 14 -# 2157| r2157_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2157| mu2157_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2157_1 -# 2157| r2157_3(glval<unknown>) = FunctionAddress[vector] : -# 2157| r2157_4(glval<ClassWithDestructor>) = VariableAddress[#temp2157:40] : -# 2157| r2157_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2157| r2157_6(ClassWithDestructor) = Load[x] : &:r2157_5, ~m? -# 2157| mu2157_7(ClassWithDestructor) = Store[#temp2157:40] : &:r2157_4, r2157_6 -# 2157| r2157_8(ClassWithDestructor) = Load[#temp2157:40] : &:r2157_4, ~m? -# 2157| v2157_9(void) = Call[vector] : func:r2157_3, this:r2157_1, 0:r2157_8 -# 2157| mu2157_10(unknown) = ^CallSideEffect : ~m? -# 2157| mu2157_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2157_1 -# 2157| r2157_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2157| r2157_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2157| r2157_14(vector<ClassWithDestructor> &) = CopyValue : r2157_13 -# 2157| mu2157_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2157_12, r2157_14 -# 2157| r2157_16(glval<iterator>) = VariableAddress[(__begin)] : -# 2157| r2157_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2157| r2157_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2157_17, ~m? -#-----| r0_11(glval<vector<ClassWithDestructor>>) = CopyValue : r2157_18 -#-----| r0_12(glval<vector<ClassWithDestructor>>) = Convert : r0_11 -# 2157| r2157_19(glval<unknown>) = FunctionAddress[begin] : -# 2157| r2157_20(iterator) = Call[begin] : func:r2157_19, this:r0_12 -# 2157| mu2157_21(unknown) = ^CallSideEffect : ~m? -#-----| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_12, ~m? -# 2157| mu2157_22(iterator) = Store[(__begin)] : &:r2157_16, r2157_20 -# 2157| r2157_23(glval<iterator>) = VariableAddress[(__end)] : -# 2157| r2157_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2157| r2157_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2157_24, ~m? -#-----| r0_14(glval<vector<ClassWithDestructor>>) = CopyValue : r2157_25 -#-----| r0_15(glval<vector<ClassWithDestructor>>) = Convert : r0_14 -# 2157| r2157_26(glval<unknown>) = FunctionAddress[end] : -# 2157| r2157_27(iterator) = Call[end] : func:r2157_26, this:r0_15 -# 2157| mu2157_28(unknown) = ^CallSideEffect : ~m? -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2157| mu2157_29(iterator) = Store[(__end)] : &:r2157_23, r2157_27 +# 2204| Block 14 +# 2204| r2204_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| mu2204_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2204_1 +# 2204| r2204_3(glval<unknown>) = FunctionAddress[vector] : +# 2204| r2204_4(glval<ClassWithDestructor>) = VariableAddress[#temp2204:45] : +# 2204| r2204_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2204| r2204_6(ClassWithDestructor) = Load[x] : &:r2204_5, ~m? +# 2204| mu2204_7(ClassWithDestructor) = Store[#temp2204:45] : &:r2204_4, r2204_6 +# 2204| r2204_8(ClassWithDestructor) = Load[#temp2204:45] : &:r2204_4, ~m? +# 2204| v2204_9(void) = Call[vector] : func:r2204_3, this:r2204_1, 0:r2204_8 +# 2204| mu2204_10(unknown) = ^CallSideEffect : ~m? +# 2204| mu2204_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 +# 2204| r2204_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_14(vector<ClassWithDestructor> &) = CopyValue : r2204_13 +# 2204| mu2204_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2204_12, r2204_14 +# 2204| r2204_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2204| r2204_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_17, ~m? +#-----| r0_17(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_18 +#-----| r0_18(glval<vector<ClassWithDestructor>>) = Convert : r0_17 +# 2204| r2204_19(glval<unknown>) = FunctionAddress[begin] : +# 2204| r2204_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2204_19, this:r0_18 +# 2204| mu2204_21(unknown) = ^CallSideEffect : ~m? +#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m? +# 2204| mu2204_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_16, r2204_20 +# 2204| r2204_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2204| r2204_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_24, ~m? +#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_25 +#-----| r0_21(glval<vector<ClassWithDestructor>>) = Convert : r0_20 +# 2204| r2204_26(glval<unknown>) = FunctionAddress[end] : +# 2204| r2204_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_26, this:r0_21 +# 2204| mu2204_28(unknown) = ^CallSideEffect : ~m? +#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? +# 2204| mu2204_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_23, r2204_27 #-----| Goto -> Block 15 -# 2157| Block 15 -# 2157| r2157_30(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_17(glval<iterator>) = Convert : r2157_30 -# 2157| r2157_31(glval<unknown>) = FunctionAddress[operator!=] : -# 2157| r2157_32(glval<iterator>) = VariableAddress[(__end)] : -# 2157| r2157_33(iterator) = Load[(__end)] : &:r2157_32, ~m? -# 2157| r2157_34(bool) = Call[operator!=] : func:r2157_31, this:r0_17, 0:r2157_33 -# 2157| mu2157_35(unknown) = ^CallSideEffect : ~m? -#-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m? -# 2157| v2157_36(void) = ConditionalBranch : r2157_34 +# 2204| Block 15 +# 2204| r2204_30(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_30 +# 2204| r2204_31(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : +#-----| mu0_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_24 +# 2204| r2204_32(glval<unknown>) = FunctionAddress[iterator] : +# 2204| r2204_33(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_33 +#-----| r0_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_26 +# 2204| v2204_34(void) = Call[iterator] : func:r2204_32, this:r0_24, 0:r0_27 +# 2204| mu2204_35(unknown) = ^CallSideEffect : ~m? +#-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m? +# 2204| mu2204_36(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 +#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, ~m? +# 2204| r2204_37(bool) = Call[operator!=] : func:r2204_31, this:r0_23, 0:r0_29 +# 2204| mu2204_38(unknown) = ^CallSideEffect : ~m? +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, ~m? +# 2204| v2204_39(void) = ConditionalBranch : r2204_37 #-----| False -> Block 20 #-----| True -> Block 16 -# 2157| Block 16 -# 2157| r2157_37(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2157| r2157_38(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_19(glval<iterator>) = Convert : r2157_38 -# 2157| r2157_39(glval<unknown>) = FunctionAddress[operator*] : -# 2157| r2157_40(ClassWithDestructor &) = Call[operator*] : func:r2157_39, this:r0_19 -# 2157| mu2157_41(unknown) = ^CallSideEffect : ~m? -#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m? -# 2157| r2157_42(ClassWithDestructor) = Load[?] : &:r2157_40, ~m? -# 2157| mu2157_43(ClassWithDestructor) = Store[y] : &:r2157_37, r2157_42 -# 2158| r2158_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2158| r2158_2(glval<unknown>) = FunctionAddress[set_x] : -# 2158| r2158_3(char) = Constant[97] : -# 2158| v2158_4(void) = Call[set_x] : func:r2158_2, this:r2158_1, 0:r2158_3 -# 2158| mu2158_5(unknown) = ^CallSideEffect : ~m? -# 2158| v2158_6(void) = ^IndirectReadSideEffect[-1] : &:r2158_1, ~m? -# 2158| mu2158_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2158_1 -# 2159| r2159_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2159| r2159_2(glval<unknown>) = FunctionAddress[get_x] : -# 2159| r2159_3(char) = Call[get_x] : func:r2159_2, this:r2159_1 -# 2159| mu2159_4(unknown) = ^CallSideEffect : ~m? -# 2159| v2159_5(void) = ^IndirectReadSideEffect[-1] : &:r2159_1, ~m? -# 2159| mu2159_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2159_1 -# 2159| r2159_7(int) = Convert : r2159_3 -# 2159| r2159_8(int) = Constant[98] : -# 2159| r2159_9(bool) = CompareEQ : r2159_7, r2159_8 -# 2159| v2159_10(void) = ConditionalBranch : r2159_9 +# 2204| Block 16 +# 2204| r2204_40(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_41(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_41 +# 2204| r2204_42(glval<unknown>) = FunctionAddress[operator*] : +# 2204| r2204_43(ClassWithDestructor &) = Call[operator*] : func:r2204_42, this:r0_31 +# 2204| mu2204_44(unknown) = ^CallSideEffect : ~m? +#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? +# 2204| r2204_45(ClassWithDestructor) = Load[?] : &:r2204_43, ~m? +# 2204| mu2204_46(ClassWithDestructor) = Store[y] : &:r2204_40, r2204_45 +# 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2205| r2205_2(glval<unknown>) = FunctionAddress[set_x] : +# 2205| r2205_3(char) = Constant[97] : +# 2205| v2205_4(void) = Call[set_x] : func:r2205_2, this:r2205_1, 0:r2205_3 +# 2205| mu2205_5(unknown) = ^CallSideEffect : ~m? +# 2205| v2205_6(void) = ^IndirectReadSideEffect[-1] : &:r2205_1, ~m? +# 2205| mu2205_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 +# 2206| r2206_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2206| r2206_2(glval<unknown>) = FunctionAddress[get_x] : +# 2206| r2206_3(char) = Call[get_x] : func:r2206_2, this:r2206_1 +# 2206| mu2206_4(unknown) = ^CallSideEffect : ~m? +# 2206| v2206_5(void) = ^IndirectReadSideEffect[-1] : &:r2206_1, ~m? +# 2206| mu2206_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 +# 2206| r2206_7(int) = Convert : r2206_3 +# 2206| r2206_8(int) = Constant[98] : +# 2206| r2206_9(bool) = CompareEQ : r2206_7, r2206_8 +# 2206| v2206_10(void) = ConditionalBranch : r2206_9 #-----| False -> Block 18 #-----| True -> Block 17 -# 2160| Block 17 -# 2160| v2160_1(void) = NoOp : -# 2157| r2157_44(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2157| r2157_45(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2157| v2157_46(void) = Call[~ClassWithDestructor] : func:r2157_45, this:r2157_44 -# 2157| mu2157_47(unknown) = ^CallSideEffect : ~m? -# 2157| v2157_48(void) = ^IndirectReadSideEffect[-1] : &:r2157_44, ~m? -# 2157| mu2157_49(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2157_44 -# 2157| r2157_50(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2157| r2157_51(glval<unknown>) = FunctionAddress[~vector] : -# 2157| v2157_52(void) = Call[~vector] : func:r2157_51, this:r2157_50 -# 2157| mu2157_53(unknown) = ^CallSideEffect : ~m? -# 2157| v2157_54(void) = ^IndirectReadSideEffect[-1] : &:r2157_50, ~m? -# 2157| mu2157_55(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2157_50 -# 2172| r2172_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2172| r2172_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2172| v2172_3(void) = Call[~ClassWithDestructor] : func:r2172_2, this:r2172_1 -# 2172| mu2172_4(unknown) = ^CallSideEffect : ~m? -# 2172| v2172_5(void) = ^IndirectReadSideEffect[-1] : &:r2172_1, ~m? -# 2172| mu2172_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2172_1 +# 2207| Block 17 +# 2207| v2207_1(void) = NoOp : +# 2204| r2204_47(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_48(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_49(void) = Call[~ClassWithDestructor] : func:r2204_48, this:r2204_47 +# 2204| mu2204_50(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_51(void) = ^IndirectReadSideEffect[-1] : &:r2204_47, ~m? +# 2204| mu2204_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_47 +# 2204| r2204_53(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_54(glval<unknown>) = FunctionAddress[~vector] : +# 2204| v2204_55(void) = Call[~vector] : func:r2204_54, this:r2204_53 +# 2204| mu2204_56(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_57(void) = ^IndirectReadSideEffect[-1] : &:r2204_53, ~m? +# 2204| mu2204_58(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_53 +# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2219| r2219_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2219| v2219_3(void) = Call[~ClassWithDestructor] : func:r2219_2, this:r2219_1 +# 2219| mu2219_4(unknown) = ^CallSideEffect : ~m? +# 2219| v2219_5(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, ~m? +# 2219| mu2219_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 #-----| Goto -> Block 1 -# 2157| Block 18 -# 2157| r2157_56(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2157| r2157_57(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2157| v2157_58(void) = Call[~ClassWithDestructor] : func:r2157_57, this:r2157_56 -# 2157| mu2157_59(unknown) = ^CallSideEffect : ~m? -# 2157| v2157_60(void) = ^IndirectReadSideEffect[-1] : &:r2157_56, ~m? -# 2157| mu2157_61(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2157_56 -# 2157| r2157_62(glval<iterator>) = VariableAddress[(__begin)] : -# 2157| r2157_63(glval<unknown>) = FunctionAddress[operator++] : -# 2157| r2157_64(iterator &) = Call[operator++] : func:r2157_63, this:r2157_62 -# 2157| mu2157_65(unknown) = ^CallSideEffect : ~m? -# 2157| v2157_66(void) = ^IndirectReadSideEffect[-1] : &:r2157_62, ~m? -# 2157| mu2157_67(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2157_62 -# 2157| r2157_68(glval<iterator>) = CopyValue : r2157_64 +# 2204| Block 18 +# 2204| r2204_59(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_60(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_61(void) = Call[~ClassWithDestructor] : func:r2204_60, this:r2204_59 +# 2204| mu2204_62(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_63(void) = ^IndirectReadSideEffect[-1] : &:r2204_59, ~m? +# 2204| mu2204_64(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_59 +# 2204| r2204_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2204| r2204_66(glval<unknown>) = FunctionAddress[operator++] : +# 2204| r2204_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_66, this:r2204_65 +# 2204| mu2204_68(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_69(void) = ^IndirectReadSideEffect[-1] : &:r2204_65, ~m? +# 2204| mu2204_70(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_65 +# 2204| r2204_71(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_67 #-----| Goto (back edge) -> Block 15 -# 2157| Block 19 -# 2157| r2157_69(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2157| r2157_70(glval<unknown>) = FunctionAddress[~vector] : -# 2157| v2157_71(void) = Call[~vector] : func:r2157_70, this:r2157_69 -# 2157| mu2157_72(unknown) = ^CallSideEffect : ~m? -# 2157| v2157_73(void) = ^IndirectReadSideEffect[-1] : &:r2157_69, ~m? -# 2157| mu2157_74(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2157_69 +# 2204| Block 19 +# 2204| r2204_72(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_73(glval<unknown>) = FunctionAddress[~vector] : +# 2204| v2204_74(void) = Call[~vector] : func:r2204_73, this:r2204_72 +# 2204| mu2204_75(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_76(void) = ^IndirectReadSideEffect[-1] : &:r2204_72, ~m? +# 2204| mu2204_77(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_72 #-----| Goto -> Block 20 -# 2163| Block 20 -# 2163| r2163_1(glval<vector<int>>) = VariableAddress[ys] : -# 2163| mu2163_2(vector<int>) = Uninitialized[ys] : &:r2163_1 -# 2163| r2163_3(glval<unknown>) = FunctionAddress[vector] : -# 2163| r2163_4(int) = Constant[1] : -# 2163| v2163_5(void) = Call[vector] : func:r2163_3, this:r2163_1, 0:r2163_4 -# 2163| mu2163_6(unknown) = ^CallSideEffect : ~m? -# 2163| mu2163_7(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2163_1 -# 2163| r2163_8(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2163| r2163_9(glval<vector<int>>) = VariableAddress[ys] : -# 2163| r2163_10(vector<int> &) = CopyValue : r2163_9 -# 2163| mu2163_11(vector<int> &) = Store[(__range)] : &:r2163_8, r2163_10 -# 2163| r2163_12(glval<iterator>) = VariableAddress[(__begin)] : -# 2163| r2163_13(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2163| r2163_14(vector<int> &) = Load[(__range)] : &:r2163_13, ~m? -#-----| r0_21(glval<vector<int>>) = CopyValue : r2163_14 -#-----| r0_22(glval<vector<int>>) = Convert : r0_21 -# 2163| r2163_15(glval<unknown>) = FunctionAddress[begin] : -# 2163| r2163_16(iterator) = Call[begin] : func:r2163_15, this:r0_22 -# 2163| mu2163_17(unknown) = ^CallSideEffect : ~m? -#-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_22, ~m? -# 2163| mu2163_18(iterator) = Store[(__begin)] : &:r2163_12, r2163_16 -# 2163| r2163_19(glval<iterator>) = VariableAddress[(__end)] : -# 2163| r2163_20(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2163| r2163_21(vector<int> &) = Load[(__range)] : &:r2163_20, ~m? -#-----| r0_24(glval<vector<int>>) = CopyValue : r2163_21 -#-----| r0_25(glval<vector<int>>) = Convert : r0_24 -# 2163| r2163_22(glval<unknown>) = FunctionAddress[end] : -# 2163| r2163_23(iterator) = Call[end] : func:r2163_22, this:r0_25 -# 2163| mu2163_24(unknown) = ^CallSideEffect : ~m? -#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_25, ~m? -# 2163| mu2163_25(iterator) = Store[(__end)] : &:r2163_19, r2163_23 +# 2210| Block 20 +# 2210| r2210_1(glval<vector<int>>) = VariableAddress[ys] : +# 2210| mu2210_2(vector<int>) = Uninitialized[ys] : &:r2210_1 +# 2210| r2210_3(glval<unknown>) = FunctionAddress[vector] : +# 2210| r2210_4(int) = Constant[1] : +# 2210| v2210_5(void) = Call[vector] : func:r2210_3, this:r2210_1, 0:r2210_4 +# 2210| mu2210_6(unknown) = ^CallSideEffect : ~m? +# 2210| mu2210_7(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 +# 2210| r2210_8(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_9(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_10(vector<int> &) = CopyValue : r2210_9 +# 2210| mu2210_11(vector<int> &) = Store[(__range)] : &:r2210_8, r2210_10 +# 2210| r2210_12(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2210| r2210_13(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_14(vector<int> &) = Load[(__range)] : &:r2210_13, ~m? +#-----| r0_33(glval<vector<int>>) = CopyValue : r2210_14 +#-----| r0_34(glval<vector<int>>) = Convert : r0_33 +# 2210| r2210_15(glval<unknown>) = FunctionAddress[begin] : +# 2210| r2210_16(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2210_15, this:r0_34 +# 2210| mu2210_17(unknown) = ^CallSideEffect : ~m? +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? +# 2210| mu2210_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_12, r2210_16 +# 2210| r2210_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 2210| r2210_20(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_21(vector<int> &) = Load[(__range)] : &:r2210_20, ~m? +#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_21 +#-----| r0_37(glval<vector<int>>) = Convert : r0_36 +# 2210| r2210_22(glval<unknown>) = FunctionAddress[end] : +# 2210| r2210_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_22, this:r0_37 +# 2210| mu2210_24(unknown) = ^CallSideEffect : ~m? +#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m? +# 2210| mu2210_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_19, r2210_23 #-----| Goto -> Block 21 -# 2163| Block 21 -# 2163| r2163_26(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_27(glval<iterator>) = Convert : r2163_26 -# 2163| r2163_27(glval<unknown>) = FunctionAddress[operator!=] : -# 2163| r2163_28(glval<iterator>) = VariableAddress[(__end)] : -# 2163| r2163_29(iterator) = Load[(__end)] : &:r2163_28, ~m? -# 2163| r2163_30(bool) = Call[operator!=] : func:r2163_27, this:r0_27, 0:r2163_29 -# 2163| mu2163_31(unknown) = ^CallSideEffect : ~m? -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -# 2163| v2163_32(void) = ConditionalBranch : r2163_30 +# 2210| Block 21 +# 2210| r2210_26(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_26 +# 2210| r2210_27(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : +#-----| mu0_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_40 +# 2210| r2210_28(glval<unknown>) = FunctionAddress[iterator] : +# 2210| r2210_29(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_29 +#-----| r0_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_42 +# 2210| v2210_30(void) = Call[iterator] : func:r2210_28, this:r0_40, 0:r0_43 +# 2210| mu2210_31(unknown) = ^CallSideEffect : ~m? +#-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m? +# 2210| mu2210_32(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 +#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, ~m? +# 2210| r2210_33(bool) = Call[operator!=] : func:r2210_27, this:r0_39, 0:r0_45 +# 2210| mu2210_34(unknown) = ^CallSideEffect : ~m? +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m? +# 2210| v2210_35(void) = ConditionalBranch : r2210_33 #-----| False -> Block 26 #-----| True -> Block 23 -# 2163| Block 22 -# 2163| r2163_33(glval<iterator>) = VariableAddress[(__begin)] : -# 2163| r2163_34(glval<unknown>) = FunctionAddress[operator++] : -# 2163| r2163_35(iterator &) = Call[operator++] : func:r2163_34, this:r2163_33 -# 2163| mu2163_36(unknown) = ^CallSideEffect : ~m? -# 2163| v2163_37(void) = ^IndirectReadSideEffect[-1] : &:r2163_33, ~m? -# 2163| mu2163_38(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2163_33 -# 2163| r2163_39(glval<iterator>) = CopyValue : r2163_35 +# 2210| Block 22 +# 2210| r2210_36(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2210| r2210_37(glval<unknown>) = FunctionAddress[operator++] : +# 2210| r2210_38(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_37, this:r2210_36 +# 2210| mu2210_39(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_40(void) = ^IndirectReadSideEffect[-1] : &:r2210_36, ~m? +# 2210| mu2210_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_36 +# 2210| r2210_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_38 #-----| Goto (back edge) -> Block 21 -# 2163| Block 23 -# 2163| r2163_40(glval<int>) = VariableAddress[y] : -# 2163| r2163_41(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_29(glval<iterator>) = Convert : r2163_41 -# 2163| r2163_42(glval<unknown>) = FunctionAddress[operator*] : -# 2163| r2163_43(int &) = Call[operator*] : func:r2163_42, this:r0_29 -# 2163| mu2163_44(unknown) = ^CallSideEffect : ~m? -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_29, ~m? -# 2163| r2163_45(int) = Load[?] : &:r2163_43, ~m? -# 2163| mu2163_46(int) = Store[y] : &:r2163_40, r2163_45 -# 2164| r2164_1(glval<int>) = VariableAddress[y] : -# 2164| r2164_2(int) = Load[y] : &:r2164_1, ~m? -# 2164| r2164_3(int) = Constant[1] : -# 2164| r2164_4(bool) = CompareEQ : r2164_2, r2164_3 -# 2164| v2164_5(void) = ConditionalBranch : r2164_4 +# 2210| Block 23 +# 2210| r2210_43(glval<int>) = VariableAddress[y] : +# 2210| r2210_44(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_44 +# 2210| r2210_45(glval<unknown>) = FunctionAddress[operator*] : +# 2210| r2210_46(int &) = Call[operator*] : func:r2210_45, this:r0_47 +# 2210| mu2210_47(unknown) = ^CallSideEffect : ~m? +#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, ~m? +# 2210| r2210_48(int) = Load[?] : &:r2210_46, ~m? +# 2210| mu2210_49(int) = Store[y] : &:r2210_43, r2210_48 +# 2211| r2211_1(glval<int>) = VariableAddress[y] : +# 2211| r2211_2(int) = Load[y] : &:r2211_1, ~m? +# 2211| r2211_3(int) = Constant[1] : +# 2211| r2211_4(bool) = CompareEQ : r2211_2, r2211_3 +# 2211| v2211_5(void) = ConditionalBranch : r2211_4 #-----| False -> Block 22 #-----| True -> Block 24 -# 2165| Block 24 -# 2165| v2165_1(void) = NoOp : -# 2163| r2163_47(glval<vector<int>>) = VariableAddress[ys] : -# 2163| r2163_48(glval<unknown>) = FunctionAddress[~vector] : -# 2163| v2163_49(void) = Call[~vector] : func:r2163_48, this:r2163_47 -# 2163| mu2163_50(unknown) = ^CallSideEffect : ~m? -# 2163| v2163_51(void) = ^IndirectReadSideEffect[-1] : &:r2163_47, ~m? -# 2163| mu2163_52(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2163_47 -# 2172| r2172_7(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2172| r2172_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2172| v2172_9(void) = Call[~ClassWithDestructor] : func:r2172_8, this:r2172_7 -# 2172| mu2172_10(unknown) = ^CallSideEffect : ~m? -# 2172| v2172_11(void) = ^IndirectReadSideEffect[-1] : &:r2172_7, ~m? -# 2172| mu2172_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2172_7 +# 2212| Block 24 +# 2212| v2212_1(void) = NoOp : +# 2210| r2210_50(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_51(glval<unknown>) = FunctionAddress[~vector] : +# 2210| v2210_52(void) = Call[~vector] : func:r2210_51, this:r2210_50 +# 2210| mu2210_53(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_54(void) = ^IndirectReadSideEffect[-1] : &:r2210_50, ~m? +# 2210| mu2210_55(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_50 +# 2219| r2219_7(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2219| r2219_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2219| v2219_9(void) = Call[~ClassWithDestructor] : func:r2219_8, this:r2219_7 +# 2219| mu2219_10(unknown) = ^CallSideEffect : ~m? +# 2219| v2219_11(void) = ^IndirectReadSideEffect[-1] : &:r2219_7, ~m? +# 2219| mu2219_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_7 #-----| Goto -> Block 1 -# 2163| Block 25 -# 2163| r2163_53(glval<vector<int>>) = VariableAddress[ys] : -# 2163| r2163_54(glval<unknown>) = FunctionAddress[~vector] : -# 2163| v2163_55(void) = Call[~vector] : func:r2163_54, this:r2163_53 -# 2163| mu2163_56(unknown) = ^CallSideEffect : ~m? -# 2163| v2163_57(void) = ^IndirectReadSideEffect[-1] : &:r2163_53, ~m? -# 2163| mu2163_58(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2163_53 +# 2210| Block 25 +# 2210| r2210_56(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_57(glval<unknown>) = FunctionAddress[~vector] : +# 2210| v2210_58(void) = Call[~vector] : func:r2210_57, this:r2210_56 +# 2210| mu2210_59(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_60(void) = ^IndirectReadSideEffect[-1] : &:r2210_56, ~m? +# 2210| mu2210_61(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_56 #-----| Goto -> Block 26 -# 2168| Block 26 -# 2168| r2168_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2168| mu2168_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2168_1 -# 2168| r2168_3(glval<unknown>) = FunctionAddress[vector] : -# 2168| r2168_4(glval<ClassWithDestructor>) = VariableAddress[#temp2168:40] : -# 2168| r2168_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2168| r2168_6(ClassWithDestructor) = Load[x] : &:r2168_5, ~m? -# 2168| mu2168_7(ClassWithDestructor) = Store[#temp2168:40] : &:r2168_4, r2168_6 -# 2168| r2168_8(ClassWithDestructor) = Load[#temp2168:40] : &:r2168_4, ~m? -# 2168| v2168_9(void) = Call[vector] : func:r2168_3, this:r2168_1, 0:r2168_8 -# 2168| mu2168_10(unknown) = ^CallSideEffect : ~m? -# 2168| mu2168_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2168_1 -# 2168| r2168_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2168| r2168_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2168| r2168_14(vector<ClassWithDestructor> &) = CopyValue : r2168_13 -# 2168| mu2168_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2168_12, r2168_14 -# 2168| r2168_16(glval<iterator>) = VariableAddress[(__begin)] : -# 2168| r2168_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2168| r2168_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2168_17, ~m? -#-----| r0_31(glval<vector<ClassWithDestructor>>) = CopyValue : r2168_18 -#-----| r0_32(glval<vector<ClassWithDestructor>>) = Convert : r0_31 -# 2168| r2168_19(glval<unknown>) = FunctionAddress[begin] : -# 2168| r2168_20(iterator) = Call[begin] : func:r2168_19, this:r0_32 -# 2168| mu2168_21(unknown) = ^CallSideEffect : ~m? -#-----| v0_33(void) = ^IndirectReadSideEffect[-1] : &:r0_32, ~m? -# 2168| mu2168_22(iterator) = Store[(__begin)] : &:r2168_16, r2168_20 -# 2168| r2168_23(glval<iterator>) = VariableAddress[(__end)] : -# 2168| r2168_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2168| r2168_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2168_24, ~m? -#-----| r0_34(glval<vector<ClassWithDestructor>>) = CopyValue : r2168_25 -#-----| r0_35(glval<vector<ClassWithDestructor>>) = Convert : r0_34 -# 2168| r2168_26(glval<unknown>) = FunctionAddress[end] : -# 2168| r2168_27(iterator) = Call[end] : func:r2168_26, this:r0_35 -# 2168| mu2168_28(unknown) = ^CallSideEffect : ~m? -#-----| v0_36(void) = ^IndirectReadSideEffect[-1] : &:r0_35, ~m? -# 2168| mu2168_29(iterator) = Store[(__end)] : &:r2168_23, r2168_27 +# 2215| Block 26 +# 2215| r2215_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| mu2215_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2215_1 +# 2215| r2215_3(glval<unknown>) = FunctionAddress[vector] : +# 2215| r2215_4(glval<ClassWithDestructor>) = VariableAddress[#temp2215:45] : +# 2215| r2215_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2215| r2215_6(ClassWithDestructor) = Load[x] : &:r2215_5, ~m? +# 2215| mu2215_7(ClassWithDestructor) = Store[#temp2215:45] : &:r2215_4, r2215_6 +# 2215| r2215_8(ClassWithDestructor) = Load[#temp2215:45] : &:r2215_4, ~m? +# 2215| v2215_9(void) = Call[vector] : func:r2215_3, this:r2215_1, 0:r2215_8 +# 2215| mu2215_10(unknown) = ^CallSideEffect : ~m? +# 2215| mu2215_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 +# 2215| r2215_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| r2215_14(vector<ClassWithDestructor> &) = CopyValue : r2215_13 +# 2215| mu2215_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2215_12, r2215_14 +# 2215| r2215_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_17, ~m? +#-----| r0_49(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_18 +#-----| r0_50(glval<vector<ClassWithDestructor>>) = Convert : r0_49 +# 2215| r2215_19(glval<unknown>) = FunctionAddress[begin] : +# 2215| r2215_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_19, this:r0_50 +# 2215| mu2215_21(unknown) = ^CallSideEffect : ~m? +#-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, ~m? +# 2215| mu2215_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_16, r2215_20 +# 2215| r2215_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2215| r2215_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_24, ~m? +#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_25 +#-----| r0_53(glval<vector<ClassWithDestructor>>) = Convert : r0_52 +# 2215| r2215_26(glval<unknown>) = FunctionAddress[end] : +# 2215| r2215_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_26, this:r0_53 +# 2215| mu2215_28(unknown) = ^CallSideEffect : ~m? +#-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, ~m? +# 2215| mu2215_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_23, r2215_27 #-----| Goto -> Block 27 -# 2168| Block 27 -# 2168| r2168_30(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_37(glval<iterator>) = Convert : r2168_30 -# 2168| r2168_31(glval<unknown>) = FunctionAddress[operator!=] : -# 2168| r2168_32(glval<iterator>) = VariableAddress[(__end)] : -# 2168| r2168_33(iterator) = Load[(__end)] : &:r2168_32, ~m? -# 2168| r2168_34(bool) = Call[operator!=] : func:r2168_31, this:r0_37, 0:r2168_33 -# 2168| mu2168_35(unknown) = ^CallSideEffect : ~m? -#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m? -# 2168| v2168_36(void) = ConditionalBranch : r2168_34 +# 2215| Block 27 +# 2215| r2215_30(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_30 +# 2215| r2215_31(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_56(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : +#-----| mu0_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_56 +# 2215| r2215_32(glval<unknown>) = FunctionAddress[iterator] : +# 2215| r2215_33(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_33 +#-----| r0_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_58 +# 2215| v2215_34(void) = Call[iterator] : func:r2215_32, this:r0_56, 0:r0_59 +# 2215| mu2215_35(unknown) = ^CallSideEffect : ~m? +#-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m? +# 2215| mu2215_36(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 +#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, ~m? +# 2215| r2215_37(bool) = Call[operator!=] : func:r2215_31, this:r0_55, 0:r0_61 +# 2215| mu2215_38(unknown) = ^CallSideEffect : ~m? +#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, ~m? +# 2215| v2215_39(void) = ConditionalBranch : r2215_37 #-----| False -> Block 30 #-----| True -> Block 28 -# 2168| Block 28 -# 2168| r2168_37(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2168| r2168_38(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_39(glval<iterator>) = Convert : r2168_38 -# 2168| r2168_39(glval<unknown>) = FunctionAddress[operator*] : -# 2168| r2168_40(ClassWithDestructor &) = Call[operator*] : func:r2168_39, this:r0_39 -# 2168| mu2168_41(unknown) = ^CallSideEffect : ~m? -#-----| v0_40(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m? -# 2168| r2168_42(ClassWithDestructor) = Load[?] : &:r2168_40, ~m? -# 2168| mu2168_43(ClassWithDestructor) = Store[y] : &:r2168_37, r2168_42 -# 2169| r2169_1(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2169| mu2169_2(ClassWithDestructor) = Uninitialized[z1] : &:r2169_1 -# 2169| r2169_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2169| v2169_4(void) = Call[ClassWithDestructor] : func:r2169_3, this:r2169_1 -# 2169| mu2169_5(unknown) = ^CallSideEffect : ~m? -# 2169| mu2169_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2169_1 -# 2170| r2170_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2170| mu2170_2(ClassWithDestructor) = Uninitialized[z2] : &:r2170_1 -# 2170| r2170_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2170| v2170_4(void) = Call[ClassWithDestructor] : func:r2170_3, this:r2170_1 -# 2170| mu2170_5(unknown) = ^CallSideEffect : ~m? -# 2170| mu2170_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2170_1 -# 2171| r2171_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2171| r2171_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2171| v2171_3(void) = Call[~ClassWithDestructor] : func:r2171_2, this:r2171_1 -# 2171| mu2171_4(unknown) = ^CallSideEffect : ~m? -# 2171| v2171_5(void) = ^IndirectReadSideEffect[-1] : &:r2171_1, ~m? -# 2171| mu2171_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2171_1 -# 2171| r2171_7(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2171| r2171_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2171| v2171_9(void) = Call[~ClassWithDestructor] : func:r2171_8, this:r2171_7 -# 2171| mu2171_10(unknown) = ^CallSideEffect : ~m? -# 2171| v2171_11(void) = ^IndirectReadSideEffect[-1] : &:r2171_7, ~m? -# 2171| mu2171_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2171_7 -# 2168| r2168_44(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2168| r2168_45(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2168| v2168_46(void) = Call[~ClassWithDestructor] : func:r2168_45, this:r2168_44 -# 2168| mu2168_47(unknown) = ^CallSideEffect : ~m? -# 2168| v2168_48(void) = ^IndirectReadSideEffect[-1] : &:r2168_44, ~m? -# 2168| mu2168_49(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2168_44 -# 2168| r2168_50(glval<iterator>) = VariableAddress[(__begin)] : -# 2168| r2168_51(glval<unknown>) = FunctionAddress[operator++] : -# 2168| r2168_52(iterator &) = Call[operator++] : func:r2168_51, this:r2168_50 -# 2168| mu2168_53(unknown) = ^CallSideEffect : ~m? -# 2168| v2168_54(void) = ^IndirectReadSideEffect[-1] : &:r2168_50, ~m? -# 2168| mu2168_55(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2168_50 -# 2168| r2168_56(glval<iterator>) = CopyValue : r2168_52 +# 2215| Block 28 +# 2215| r2215_40(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_41(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_41 +# 2215| r2215_42(glval<unknown>) = FunctionAddress[operator*] : +# 2215| r2215_43(ClassWithDestructor &) = Call[operator*] : func:r2215_42, this:r0_63 +# 2215| mu2215_44(unknown) = ^CallSideEffect : ~m? +#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, ~m? +# 2215| r2215_45(ClassWithDestructor) = Load[?] : &:r2215_43, ~m? +# 2215| mu2215_46(ClassWithDestructor) = Store[y] : &:r2215_40, r2215_45 +# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2216| mu2216_2(ClassWithDestructor) = Uninitialized[z1] : &:r2216_1 +# 2216| r2216_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2216| v2216_4(void) = Call[ClassWithDestructor] : func:r2216_3, this:r2216_1 +# 2216| mu2216_5(unknown) = ^CallSideEffect : ~m? +# 2216| mu2216_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 +# 2217| r2217_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2217| mu2217_2(ClassWithDestructor) = Uninitialized[z2] : &:r2217_1 +# 2217| r2217_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2217| v2217_4(void) = Call[ClassWithDestructor] : func:r2217_3, this:r2217_1 +# 2217| mu2217_5(unknown) = ^CallSideEffect : ~m? +# 2217| mu2217_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 +# 2218| r2218_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2218| r2218_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_3(void) = Call[~ClassWithDestructor] : func:r2218_2, this:r2218_1 +# 2218| mu2218_4(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_5(void) = ^IndirectReadSideEffect[-1] : &:r2218_1, ~m? +# 2218| mu2218_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 +# 2218| r2218_7(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2218| r2218_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_9(void) = Call[~ClassWithDestructor] : func:r2218_8, this:r2218_7 +# 2218| mu2218_10(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_11(void) = ^IndirectReadSideEffect[-1] : &:r2218_7, ~m? +# 2218| mu2218_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_7 +# 2215| r2215_47(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_48(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_49(void) = Call[~ClassWithDestructor] : func:r2215_48, this:r2215_47 +# 2215| mu2215_50(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_51(void) = ^IndirectReadSideEffect[-1] : &:r2215_47, ~m? +# 2215| mu2215_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_47 +# 2215| r2215_53(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_54(glval<unknown>) = FunctionAddress[operator++] : +# 2215| r2215_55(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_54, this:r2215_53 +# 2215| mu2215_56(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_57(void) = ^IndirectReadSideEffect[-1] : &:r2215_53, ~m? +# 2215| mu2215_58(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_53 +# 2215| r2215_59(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_55 #-----| Goto (back edge) -> Block 27 -# 2168| Block 29 -# 2168| r2168_57(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2168| r2168_58(glval<unknown>) = FunctionAddress[~vector] : -# 2168| v2168_59(void) = Call[~vector] : func:r2168_58, this:r2168_57 -# 2168| mu2168_60(unknown) = ^CallSideEffect : ~m? -# 2168| v2168_61(void) = ^IndirectReadSideEffect[-1] : &:r2168_57, ~m? -# 2168| mu2168_62(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2168_57 +# 2215| Block 29 +# 2215| r2215_60(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| r2215_61(glval<unknown>) = FunctionAddress[~vector] : +# 2215| v2215_62(void) = Call[~vector] : func:r2215_61, this:r2215_60 +# 2215| mu2215_63(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_64(void) = ^IndirectReadSideEffect[-1] : &:r2215_60, ~m? +# 2215| mu2215_65(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_60 #-----| Goto -> Block 30 -# 2172| Block 30 -# 2172| v2172_13(void) = NoOp : -# 2172| r2172_14(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2172| r2172_15(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2172| v2172_16(void) = Call[~ClassWithDestructor] : func:r2172_15, this:r2172_14 -# 2172| mu2172_17(unknown) = ^CallSideEffect : ~m? -# 2172| v2172_18(void) = ^IndirectReadSideEffect[-1] : &:r2172_14, ~m? -# 2172| mu2172_19(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2172_14 +# 2219| Block 30 +# 2219| v2219_13(void) = NoOp : +# 2219| r2219_14(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2219| r2219_15(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2219| v2219_16(void) = Call[~ClassWithDestructor] : func:r2219_15, this:r2219_14 +# 2219| mu2219_17(unknown) = ^CallSideEffect : ~m? +# 2219| v2219_18(void) = ^IndirectReadSideEffect[-1] : &:r2219_14, ~m? +# 2219| mu2219_19(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_14 #-----| Goto -> Block 1 -# 2174| void static_variable_with_destructor_1() -# 2174| Block 0 -# 2174| v2174_1(void) = EnterFunction : -# 2174| mu2174_2(unknown) = AliasedDefinition : -# 2174| mu2174_3(unknown) = InitializeNonLocal : -# 2175| r2175_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2175| mu2175_2(ClassWithDestructor) = Uninitialized[a] : &:r2175_1 -# 2175| r2175_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2175| v2175_4(void) = Call[ClassWithDestructor] : func:r2175_3, this:r2175_1 -# 2175| mu2175_5(unknown) = ^CallSideEffect : ~m? -# 2175| mu2175_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2175_1 -# 2176| r2176_1(glval<bool>) = VariableAddress[b#init] : -# 2176| r2176_2(bool) = Load[b#init] : &:r2176_1, ~m? -# 2176| v2176_3(void) = ConditionalBranch : r2176_2 +# 2221| void static_variable_with_destructor_1() +# 2221| Block 0 +# 2221| v2221_1(void) = EnterFunction : +# 2221| mu2221_2(unknown) = AliasedDefinition : +# 2221| mu2221_3(unknown) = InitializeNonLocal : +# 2222| r2222_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2222| mu2222_2(ClassWithDestructor) = Uninitialized[a] : &:r2222_1 +# 2222| r2222_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2222| v2222_4(void) = Call[ClassWithDestructor] : func:r2222_3, this:r2222_1 +# 2222| mu2222_5(unknown) = ^CallSideEffect : ~m? +# 2222| mu2222_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 +# 2223| r2223_1(glval<bool>) = VariableAddress[b#init] : +# 2223| r2223_2(bool) = Load[b#init] : &:r2223_1, ~m? +# 2223| v2223_3(void) = ConditionalBranch : r2223_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2176| Block 1 -# 2176| r2176_4(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2223| Block 1 +# 2223| r2223_4(glval<ClassWithDestructor>) = VariableAddress[b] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2176_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2223_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2176_4 -# 2176| r2176_5(bool) = Constant[1] : -# 2176| mu2176_6(bool) = Store[b#init] : &:r2176_1, r2176_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2223_4 +# 2223| r2223_5(bool) = Constant[1] : +# 2223| mu2223_6(bool) = Store[b#init] : &:r2223_1, r2223_5 #-----| Goto -> Block 2 -# 2177| Block 2 -# 2177| v2177_1(void) = NoOp : -# 2177| r2177_2(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2177| r2177_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2177| v2177_4(void) = Call[~ClassWithDestructor] : func:r2177_3, this:r2177_2 -# 2177| mu2177_5(unknown) = ^CallSideEffect : ~m? -# 2177| v2177_6(void) = ^IndirectReadSideEffect[-1] : &:r2177_2, ~m? -# 2177| mu2177_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2177_2 -# 2174| v2174_4(void) = ReturnVoid : -# 2174| v2174_5(void) = AliasedUse : ~m? -# 2174| v2174_6(void) = ExitFunction : - -# 2179| void static_variable_with_destructor_2() -# 2179| Block 0 -# 2179| v2179_1(void) = EnterFunction : -# 2179| mu2179_2(unknown) = AliasedDefinition : -# 2179| mu2179_3(unknown) = InitializeNonLocal : -# 2180| r2180_1(glval<bool>) = VariableAddress[a#init] : -# 2180| r2180_2(bool) = Load[a#init] : &:r2180_1, ~m? -# 2180| v2180_3(void) = ConditionalBranch : r2180_2 +# 2224| Block 2 +# 2224| v2224_1(void) = NoOp : +# 2224| r2224_2(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2224| r2224_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2224| v2224_4(void) = Call[~ClassWithDestructor] : func:r2224_3, this:r2224_2 +# 2224| mu2224_5(unknown) = ^CallSideEffect : ~m? +# 2224| v2224_6(void) = ^IndirectReadSideEffect[-1] : &:r2224_2, ~m? +# 2224| mu2224_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2224_2 +# 2221| v2221_4(void) = ReturnVoid : +# 2221| v2221_5(void) = AliasedUse : ~m? +# 2221| v2221_6(void) = ExitFunction : + +# 2226| void static_variable_with_destructor_2() +# 2226| Block 0 +# 2226| v2226_1(void) = EnterFunction : +# 2226| mu2226_2(unknown) = AliasedDefinition : +# 2226| mu2226_3(unknown) = InitializeNonLocal : +# 2227| r2227_1(glval<bool>) = VariableAddress[a#init] : +# 2227| r2227_2(bool) = Load[a#init] : &:r2227_1, ~m? +# 2227| v2227_3(void) = ConditionalBranch : r2227_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2180| Block 1 -# 2180| r2180_4(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2227| Block 1 +# 2227| r2227_4(glval<ClassWithDestructor>) = VariableAddress[a] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2180_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2227_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2180_4 -# 2180| r2180_5(bool) = Constant[1] : -# 2180| mu2180_6(bool) = Store[a#init] : &:r2180_1, r2180_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2227_4 +# 2227| r2227_5(bool) = Constant[1] : +# 2227| mu2227_6(bool) = Store[a#init] : &:r2227_1, r2227_5 #-----| Goto -> Block 2 -# 2181| Block 2 -# 2181| r2181_1(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2181| mu2181_2(ClassWithDestructor) = Uninitialized[b] : &:r2181_1 -# 2181| r2181_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2181| v2181_4(void) = Call[ClassWithDestructor] : func:r2181_3, this:r2181_1 -# 2181| mu2181_5(unknown) = ^CallSideEffect : ~m? -# 2181| mu2181_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2181_1 -# 2182| v2182_1(void) = NoOp : -# 2182| r2182_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2182| r2182_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2182| v2182_4(void) = Call[~ClassWithDestructor] : func:r2182_3, this:r2182_2 -# 2182| mu2182_5(unknown) = ^CallSideEffect : ~m? -# 2182| v2182_6(void) = ^IndirectReadSideEffect[-1] : &:r2182_2, ~m? -# 2182| mu2182_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2182_2 -# 2179| v2179_4(void) = ReturnVoid : -# 2179| v2179_5(void) = AliasedUse : ~m? -# 2179| v2179_6(void) = ExitFunction : - -# 2184| void static_variable_with_destructor_3() -# 2184| Block 0 -# 2184| v2184_1(void) = EnterFunction : -# 2184| mu2184_2(unknown) = AliasedDefinition : -# 2184| mu2184_3(unknown) = InitializeNonLocal : -# 2185| r2185_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2185| mu2185_2(ClassWithDestructor) = Uninitialized[a] : &:r2185_1 -# 2185| r2185_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2185| v2185_4(void) = Call[ClassWithDestructor] : func:r2185_3, this:r2185_1 -# 2185| mu2185_5(unknown) = ^CallSideEffect : ~m? -# 2185| mu2185_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 -# 2186| r2186_1(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2186| mu2186_2(ClassWithDestructor) = Uninitialized[b] : &:r2186_1 -# 2186| r2186_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2186| v2186_4(void) = Call[ClassWithDestructor] : func:r2186_3, this:r2186_1 -# 2186| mu2186_5(unknown) = ^CallSideEffect : ~m? -# 2186| mu2186_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 -# 2187| r2187_1(glval<bool>) = VariableAddress[c#init] : -# 2187| r2187_2(bool) = Load[c#init] : &:r2187_1, ~m? -# 2187| v2187_3(void) = ConditionalBranch : r2187_2 +# 2228| Block 2 +# 2228| r2228_1(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2228| mu2228_2(ClassWithDestructor) = Uninitialized[b] : &:r2228_1 +# 2228| r2228_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2228| v2228_4(void) = Call[ClassWithDestructor] : func:r2228_3, this:r2228_1 +# 2228| mu2228_5(unknown) = ^CallSideEffect : ~m? +# 2228| mu2228_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2228_1 +# 2229| v2229_1(void) = NoOp : +# 2229| r2229_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2229| r2229_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2229| v2229_4(void) = Call[~ClassWithDestructor] : func:r2229_3, this:r2229_2 +# 2229| mu2229_5(unknown) = ^CallSideEffect : ~m? +# 2229| v2229_6(void) = ^IndirectReadSideEffect[-1] : &:r2229_2, ~m? +# 2229| mu2229_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_2 +# 2226| v2226_4(void) = ReturnVoid : +# 2226| v2226_5(void) = AliasedUse : ~m? +# 2226| v2226_6(void) = ExitFunction : + +# 2231| void static_variable_with_destructor_3() +# 2231| Block 0 +# 2231| v2231_1(void) = EnterFunction : +# 2231| mu2231_2(unknown) = AliasedDefinition : +# 2231| mu2231_3(unknown) = InitializeNonLocal : +# 2232| r2232_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2232| mu2232_2(ClassWithDestructor) = Uninitialized[a] : &:r2232_1 +# 2232| r2232_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2232| v2232_4(void) = Call[ClassWithDestructor] : func:r2232_3, this:r2232_1 +# 2232| mu2232_5(unknown) = ^CallSideEffect : ~m? +# 2232| mu2232_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 +# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2233| mu2233_2(ClassWithDestructor) = Uninitialized[b] : &:r2233_1 +# 2233| r2233_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2233| v2233_4(void) = Call[ClassWithDestructor] : func:r2233_3, this:r2233_1 +# 2233| mu2233_5(unknown) = ^CallSideEffect : ~m? +# 2233| mu2233_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 +# 2234| r2234_1(glval<bool>) = VariableAddress[c#init] : +# 2234| r2234_2(bool) = Load[c#init] : &:r2234_1, ~m? +# 2234| v2234_3(void) = ConditionalBranch : r2234_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2187| Block 1 -# 2187| r2187_4(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2234| Block 1 +# 2234| r2234_4(glval<ClassWithDestructor>) = VariableAddress[c] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2187_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2234_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2187_4 -# 2187| r2187_5(bool) = Constant[1] : -# 2187| mu2187_6(bool) = Store[c#init] : &:r2187_1, r2187_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_4 +# 2234| r2234_5(bool) = Constant[1] : +# 2234| mu2234_6(bool) = Store[c#init] : &:r2234_1, r2234_5 #-----| Goto -> Block 2 -# 2188| Block 2 -# 2188| v2188_1(void) = NoOp : -# 2188| r2188_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2188| r2188_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2188| v2188_4(void) = Call[~ClassWithDestructor] : func:r2188_3, this:r2188_2 -# 2188| mu2188_5(unknown) = ^CallSideEffect : ~m? -# 2188| v2188_6(void) = ^IndirectReadSideEffect[-1] : &:r2188_2, ~m? -# 2188| mu2188_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_2 -# 2188| r2188_8(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2188| r2188_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2188| v2188_10(void) = Call[~ClassWithDestructor] : func:r2188_9, this:r2188_8 -# 2188| mu2188_11(unknown) = ^CallSideEffect : ~m? -# 2188| v2188_12(void) = ^IndirectReadSideEffect[-1] : &:r2188_8, ~m? -# 2188| mu2188_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_8 -# 2184| v2184_4(void) = ReturnVoid : -# 2184| v2184_5(void) = AliasedUse : ~m? -# 2184| v2184_6(void) = ExitFunction : - -# 2190| ClassWithDestructor global_class_with_destructor -# 2190| Block 0 -# 2190| v2190_1(void) = EnterFunction : -# 2190| mu2190_2(unknown) = AliasedDefinition : -# 2190| r2190_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : -# 2190| r2190_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2190| v2190_5(void) = Call[ClassWithDestructor] : func:r2190_4, this:r2190_3 -# 2190| mu2190_6(unknown) = ^CallSideEffect : ~m? -# 2190| mu2190_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2190_3 -# 2190| v2190_8(void) = ReturnVoid : -# 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| 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| 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 : -# 2204| r2204_2(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2204| r2204_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_4(void) = Call[~ClassWithDestructor] : func:r2204_3, this:r2204_2 -# 2204| mu2204_5(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_6(void) = ^IndirectReadSideEffect[-1] : &:r2204_2, ~m? -# 2204| mu2204_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_2 -# 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 : - -# 2212| void TryCatchDestructors(bool) -# 2212| Block 0 -# 2212| v2212_1(void) = EnterFunction : -# 2212| mu2212_2(unknown) = AliasedDefinition : -# 2212| mu2212_3(unknown) = InitializeNonLocal : -# 2212| r2212_4(glval<bool>) = VariableAddress[b] : -# 2212| mu2212_5(bool) = InitializeParameter[b] : &:r2212_4 -# 2214| r2214_1(glval<String>) = VariableAddress[s] : -# 2214| mu2214_2(String) = Uninitialized[s] : &:r2214_1 -# 2214| r2214_3(glval<unknown>) = FunctionAddress[String] : -# 2214| v2214_4(void) = Call[String] : func:r2214_3, this:r2214_1 -# 2214| mu2214_5(unknown) = ^CallSideEffect : ~m? -# 2214| mu2214_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2214_1 -# 2215| r2215_1(glval<bool>) = VariableAddress[b] : -# 2215| r2215_2(bool) = Load[b] : &:r2215_1, ~m? -# 2215| v2215_3(void) = ConditionalBranch : r2215_2 +# 2235| Block 2 +# 2235| v2235_1(void) = NoOp : +# 2235| r2235_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2235| r2235_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_4(void) = Call[~ClassWithDestructor] : func:r2235_3, this:r2235_2 +# 2235| mu2235_5(unknown) = ^CallSideEffect : ~m? +# 2235| v2235_6(void) = ^IndirectReadSideEffect[-1] : &:r2235_2, ~m? +# 2235| mu2235_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_2 +# 2235| r2235_8(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2235| r2235_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_10(void) = Call[~ClassWithDestructor] : func:r2235_9, this:r2235_8 +# 2235| mu2235_11(unknown) = ^CallSideEffect : ~m? +# 2235| v2235_12(void) = ^IndirectReadSideEffect[-1] : &:r2235_8, ~m? +# 2235| mu2235_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_8 +# 2231| v2231_4(void) = ReturnVoid : +# 2231| v2231_5(void) = AliasedUse : ~m? +# 2231| v2231_6(void) = ExitFunction : + +# 2237| ClassWithDestructor global_class_with_destructor +# 2237| Block 0 +# 2237| v2237_1(void) = EnterFunction : +# 2237| mu2237_2(unknown) = AliasedDefinition : +# 2237| r2237_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : +# 2237| r2237_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2237| v2237_5(void) = Call[ClassWithDestructor] : func:r2237_4, this:r2237_3 +# 2237| mu2237_6(unknown) = ^CallSideEffect : ~m? +# 2237| mu2237_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_3 +# 2237| v2237_8(void) = ReturnVoid : +# 2237| v2237_9(void) = AliasedUse : ~m? +# 2237| v2237_10(void) = ExitFunction : + +# 2241| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) +# 2241| Block 0 +# 2241| v2241_1(void) = EnterFunction : +# 2241| mu2241_2(unknown) = AliasedDefinition : +# 2241| mu2241_3(unknown) = InitializeNonLocal : +# 2241| r2241_4(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2241| mu2241_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2241_4 +# 2241| r2241_6(ClassWithDestructor &) = Load[t] : &:r2241_4, ~m? +# 2241| mu2241_7(unknown) = InitializeIndirection[t] : &:r2241_6 +# 2241| r2241_8(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2241| r2241_9(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2241| r2241_10(ClassWithDestructor &) = Load[t] : &:r2241_9, ~m? +# 2241| r2241_11(glval<ClassWithDestructor>) = CopyValue : r2241_10 +# 2241| r2241_12(ClassWithDestructor &) = CopyValue : r2241_11 +# 2241| mu2241_13(ClassWithDestructor &) = Store[#return] : &:r2241_8, r2241_12 +# 2241| v2241_14(void) = ReturnIndirection[t] : &:r2241_6, ~m? +# 2241| r2241_15(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2241| v2241_16(void) = ReturnValue : &:r2241_15, ~m? +# 2241| v2241_17(void) = AliasedUse : ~m? +# 2241| v2241_18(void) = ExitFunction : + +# 2241| int& vacuous_destructor_call::get<int>(int&) +# 2241| Block 0 +# 2241| v2241_1(void) = EnterFunction : +# 2241| mu2241_2(unknown) = AliasedDefinition : +# 2241| mu2241_3(unknown) = InitializeNonLocal : +# 2241| r2241_4(glval<int &>) = VariableAddress[t] : +# 2241| mu2241_5(int &) = InitializeParameter[t] : &:r2241_4 +# 2241| r2241_6(int &) = Load[t] : &:r2241_4, ~m? +# 2241| mu2241_7(unknown) = InitializeIndirection[t] : &:r2241_6 +# 2241| r2241_8(glval<int &>) = VariableAddress[#return] : +# 2241| r2241_9(glval<int &>) = VariableAddress[t] : +# 2241| r2241_10(int &) = Load[t] : &:r2241_9, ~m? +# 2241| r2241_11(glval<int>) = CopyValue : r2241_10 +# 2241| r2241_12(int &) = CopyValue : r2241_11 +# 2241| mu2241_13(int &) = Store[#return] : &:r2241_8, r2241_12 +# 2241| v2241_14(void) = ReturnIndirection[t] : &:r2241_6, ~m? +# 2241| r2241_15(glval<int &>) = VariableAddress[#return] : +# 2241| v2241_16(void) = ReturnValue : &:r2241_15, ~m? +# 2241| v2241_17(void) = AliasedUse : ~m? +# 2241| v2241_18(void) = ExitFunction : + +# 2244| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) +# 2244| Block 0 +# 2244| v2244_1(void) = EnterFunction : +# 2244| mu2244_2(unknown) = AliasedDefinition : +# 2244| mu2244_3(unknown) = InitializeNonLocal : +# 2244| r2244_4(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2244| mu2244_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2244_4 +# 2244| r2244_6(ClassWithDestructor &) = Load[t] : &:r2244_4, ~m? +# 2244| mu2244_7(unknown) = InitializeIndirection[t] : &:r2244_6 +# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : +# 2245| r2245_2(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2245| r2245_3(ClassWithDestructor &) = Load[t] : &:r2245_2, ~m? +# 2245| r2245_4(glval<ClassWithDestructor>) = CopyValue : r2245_3 +# 2245| r2245_5(ClassWithDestructor &) = CopyValue : r2245_4 +# 2245| r2245_6(ClassWithDestructor &) = Call[get] : func:r2245_1, 0:r2245_5 +# 2245| mu2245_7(unknown) = ^CallSideEffect : ~m? +# 2245| v2245_8(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m? +# 2245| mu2245_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 +# 2245| r2245_10(glval<ClassWithDestructor>) = CopyValue : r2245_6 +# 2245| r2245_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2245| v2245_12(void) = Call[~ClassWithDestructor] : func:r2245_11 +# 2245| mu2245_13(unknown) = ^CallSideEffect : ~m? +# 2245| v2245_14(void) = ^IndirectReadSideEffect[-1] : &:r2245_10, ~m? +# 2245| mu2245_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2245_10 +# 2246| v2246_1(void) = NoOp : +# 2244| v2244_8(void) = ReturnIndirection[t] : &:r2244_6, ~m? +# 2244| v2244_9(void) = ReturnVoid : +# 2244| v2244_10(void) = AliasedUse : ~m? +# 2244| v2244_11(void) = ExitFunction : + +# 2244| void vacuous_destructor_call::call_destructor<int>(int&) +# 2244| Block 0 +# 2244| v2244_1(void) = EnterFunction : +# 2244| mu2244_2(unknown) = AliasedDefinition : +# 2244| mu2244_3(unknown) = InitializeNonLocal : +# 2244| r2244_4(glval<int &>) = VariableAddress[t] : +# 2244| mu2244_5(int &) = InitializeParameter[t] : &:r2244_4 +# 2244| r2244_6(int &) = Load[t] : &:r2244_4, ~m? +# 2244| mu2244_7(unknown) = InitializeIndirection[t] : &:r2244_6 +# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : +# 2245| r2245_2(glval<int &>) = VariableAddress[t] : +# 2245| r2245_3(int &) = Load[t] : &:r2245_2, ~m? +# 2245| r2245_4(glval<int>) = CopyValue : r2245_3 +# 2245| r2245_5(int &) = CopyValue : r2245_4 +# 2245| r2245_6(int &) = Call[get] : func:r2245_1, 0:r2245_5 +# 2245| mu2245_7(unknown) = ^CallSideEffect : ~m? +# 2245| v2245_8(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m? +# 2245| mu2245_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 +# 2245| r2245_10(glval<int>) = CopyValue : r2245_6 +# 2246| v2246_1(void) = NoOp : +# 2244| v2244_8(void) = ReturnIndirection[t] : &:r2244_6, ~m? +# 2244| v2244_9(void) = ReturnVoid : +# 2244| v2244_10(void) = AliasedUse : ~m? +# 2244| v2244_11(void) = ExitFunction : + +# 2248| void vacuous_destructor_call::non_vacuous_destructor_call() +# 2248| Block 0 +# 2248| v2248_1(void) = EnterFunction : +# 2248| mu2248_2(unknown) = AliasedDefinition : +# 2248| mu2248_3(unknown) = InitializeNonLocal : +# 2249| r2249_1(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2249| mu2249_2(ClassWithDestructor) = Uninitialized[c] : &:r2249_1 +# 2249| r2249_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2249| v2249_4(void) = Call[ClassWithDestructor] : func:r2249_3, this:r2249_1 +# 2249| mu2249_5(unknown) = ^CallSideEffect : ~m? +# 2249| mu2249_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 +# 2250| r2250_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2250| r2250_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2250| r2250_3(ClassWithDestructor &) = CopyValue : r2250_2 +# 2250| v2250_4(void) = Call[call_destructor] : func:r2250_1, 0:r2250_3 +# 2250| mu2250_5(unknown) = ^CallSideEffect : ~m? +# 2250| v2250_6(void) = ^BufferReadSideEffect[0] : &:r2250_3, ~m? +# 2250| mu2250_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2250_3 +# 2251| v2251_1(void) = NoOp : +# 2251| r2251_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2251| r2251_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2251| v2251_4(void) = Call[~ClassWithDestructor] : func:r2251_3, this:r2251_2 +# 2251| mu2251_5(unknown) = ^CallSideEffect : ~m? +# 2251| v2251_6(void) = ^IndirectReadSideEffect[-1] : &:r2251_2, ~m? +# 2251| mu2251_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_2 +# 2248| v2248_4(void) = ReturnVoid : +# 2248| v2248_5(void) = AliasedUse : ~m? +# 2248| v2248_6(void) = ExitFunction : + +# 2253| void vacuous_destructor_call::vacuous_destructor_call() +# 2253| Block 0 +# 2253| v2253_1(void) = EnterFunction : +# 2253| mu2253_2(unknown) = AliasedDefinition : +# 2253| mu2253_3(unknown) = InitializeNonLocal : +# 2254| r2254_1(glval<int>) = VariableAddress[i] : +# 2254| mu2254_2(int) = Uninitialized[i] : &:r2254_1 +# 2255| r2255_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2255| r2255_2(glval<int>) = VariableAddress[i] : +# 2255| r2255_3(int &) = CopyValue : r2255_2 +# 2255| v2255_4(void) = Call[call_destructor] : func:r2255_1, 0:r2255_3 +# 2255| mu2255_5(unknown) = ^CallSideEffect : ~m? +# 2255| v2255_6(void) = ^BufferReadSideEffect[0] : &:r2255_3, ~m? +# 2255| mu2255_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2255_3 +# 2256| v2256_1(void) = NoOp : +# 2253| v2253_4(void) = ReturnVoid : +# 2253| v2253_5(void) = AliasedUse : ~m? +# 2253| v2253_6(void) = ExitFunction : + +# 2259| void TryCatchDestructors(bool) +# 2259| Block 0 +# 2259| v2259_1(void) = EnterFunction : +# 2259| mu2259_2(unknown) = AliasedDefinition : +# 2259| mu2259_3(unknown) = InitializeNonLocal : +# 2259| r2259_4(glval<bool>) = VariableAddress[b] : +# 2259| mu2259_5(bool) = InitializeParameter[b] : &:r2259_4 +# 2261| r2261_1(glval<String>) = VariableAddress[s] : +# 2261| mu2261_2(String) = Uninitialized[s] : &:r2261_1 +# 2261| r2261_3(glval<unknown>) = FunctionAddress[String] : +# 2261| v2261_4(void) = Call[String] : func:r2261_3, this:r2261_1 +# 2261| mu2261_5(unknown) = ^CallSideEffect : ~m? +# 2261| mu2261_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2261_1 +# 2262| r2262_1(glval<bool>) = VariableAddress[b] : +# 2262| r2262_2(bool) = Load[b] : &:r2262_1, ~m? +# 2262| v2262_3(void) = ConditionalBranch : r2262_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 2212| Block 1 -# 2212| v2212_6(void) = AliasedUse : ~m? -# 2212| v2212_7(void) = ExitFunction : +# 2259| Block 1 +# 2259| v2259_6(void) = AliasedUse : ~m? +# 2259| v2259_7(void) = ExitFunction : -# 2212| Block 2 -# 2212| v2212_8(void) = Unwind : +# 2259| Block 2 +# 2259| v2259_8(void) = Unwind : #-----| Goto -> Block 1 -# 2216| Block 3 -# 2216| r2216_1(glval<char *>) = VariableAddress[#throw2216:7] : -# 2216| r2216_2(glval<char[15]>) = StringConstant["string literal"] : -# 2216| r2216_3(char *) = Convert : r2216_2 -# 2216| mu2216_4(char *) = Store[#throw2216:7] : &:r2216_1, r2216_3 -# 2216| v2216_5(void) = ThrowValue : &:r2216_1, ~m? +# 2263| Block 3 +# 2263| r2263_1(glval<char *>) = VariableAddress[#throw2263:7] : +# 2263| r2263_2(glval<char[15]>) = StringConstant["string literal"] : +# 2263| r2263_3(char *) = Convert : r2263_2 +# 2263| mu2263_4(char *) = Store[#throw2263:7] : &:r2263_1, r2263_3 +# 2263| v2263_5(void) = ThrowValue : &:r2263_1, ~m? #-----| Exception -> Block 5 -# 2218| Block 4 -# 2218| r2218_1(glval<String>) = VariableAddress[s2] : -# 2218| mu2218_2(String) = Uninitialized[s2] : &:r2218_1 -# 2218| r2218_3(glval<unknown>) = FunctionAddress[String] : -# 2218| v2218_4(void) = Call[String] : func:r2218_3, this:r2218_1 -# 2218| mu2218_5(unknown) = ^CallSideEffect : ~m? -# 2218| mu2218_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 -# 2219| r2219_1(glval<String>) = VariableAddress[s2] : -# 2219| r2219_2(glval<unknown>) = FunctionAddress[~String] : -# 2219| v2219_3(void) = Call[~String] : func:r2219_2, this:r2219_1 -# 2219| mu2219_4(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_5(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, ~m? -# 2219| mu2219_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 -# 2219| r2219_7(glval<String>) = VariableAddress[s] : -# 2219| r2219_8(glval<unknown>) = FunctionAddress[~String] : -# 2219| v2219_9(void) = Call[~String] : func:r2219_8, this:r2219_7 -# 2219| mu2219_10(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_11(void) = ^IndirectReadSideEffect[-1] : &:r2219_7, ~m? -# 2219| mu2219_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2219_7 +# 2265| Block 4 +# 2265| r2265_1(glval<String>) = VariableAddress[s2] : +# 2265| mu2265_2(String) = Uninitialized[s2] : &:r2265_1 +# 2265| r2265_3(glval<unknown>) = FunctionAddress[String] : +# 2265| v2265_4(void) = Call[String] : func:r2265_3, this:r2265_1 +# 2265| mu2265_5(unknown) = ^CallSideEffect : ~m? +# 2265| mu2265_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2265_1 +# 2266| r2266_1(glval<String>) = VariableAddress[s2] : +# 2266| r2266_2(glval<unknown>) = FunctionAddress[~String] : +# 2266| v2266_3(void) = Call[~String] : func:r2266_2, this:r2266_1 +# 2266| mu2266_4(unknown) = ^CallSideEffect : ~m? +# 2266| v2266_5(void) = ^IndirectReadSideEffect[-1] : &:r2266_1, ~m? +# 2266| mu2266_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 +# 2266| r2266_7(glval<String>) = VariableAddress[s] : +# 2266| r2266_8(glval<unknown>) = FunctionAddress[~String] : +# 2266| v2266_9(void) = Call[~String] : func:r2266_8, this:r2266_7 +# 2266| mu2266_10(unknown) = ^CallSideEffect : ~m? +# 2266| v2266_11(void) = ^IndirectReadSideEffect[-1] : &:r2266_7, ~m? +# 2266| mu2266_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_7 #-----| Goto -> Block 10 -# 2220| Block 5 -# 2220| v2220_1(void) = CatchByType[const char *] : +# 2267| Block 5 +# 2267| v2267_1(void) = CatchByType[const char *] : #-----| Exception -> Block 7 #-----| Goto -> Block 6 -# 2220| Block 6 -# 2220| r2220_2(glval<char *>) = VariableAddress[s] : -# 2220| mu2220_3(char *) = InitializeParameter[s] : &:r2220_2 -# 2220| r2220_4(char *) = Load[s] : &:r2220_2, ~m? -# 2220| mu2220_5(unknown) = InitializeIndirection[s] : &:r2220_4 -# 2221| r2221_1(glval<String>) = VariableAddress[#throw2221:5] : -# 2221| mu2221_2(String) = Uninitialized[#throw2221:5] : &:r2221_1 -# 2221| r2221_3(glval<unknown>) = FunctionAddress[String] : -# 2221| r2221_4(glval<char *>) = VariableAddress[s] : -# 2221| r2221_5(char *) = Load[s] : &:r2221_4, ~m? -# 2221| v2221_6(void) = Call[String] : func:r2221_3, this:r2221_1, 0:r2221_5 -# 2221| mu2221_7(unknown) = ^CallSideEffect : ~m? -# 2221| v2221_8(void) = ^BufferReadSideEffect[0] : &:r2221_5, ~m? -# 2221| mu2221_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2221_1 -# 2221| v2221_10(void) = ThrowValue : &:r2221_1, ~m? +# 2267| Block 6 +# 2267| r2267_2(glval<char *>) = VariableAddress[s] : +# 2267| mu2267_3(char *) = InitializeParameter[s] : &:r2267_2 +# 2267| r2267_4(char *) = Load[s] : &:r2267_2, ~m? +# 2267| mu2267_5(unknown) = InitializeIndirection[s] : &:r2267_4 +# 2268| r2268_1(glval<String>) = VariableAddress[#throw2268:5] : +# 2268| mu2268_2(String) = Uninitialized[#throw2268:5] : &:r2268_1 +# 2268| r2268_3(glval<unknown>) = FunctionAddress[String] : +# 2268| r2268_4(glval<char *>) = VariableAddress[s] : +# 2268| r2268_5(char *) = Load[s] : &:r2268_4, ~m? +# 2268| v2268_6(void) = Call[String] : func:r2268_3, this:r2268_1, 0:r2268_5 +# 2268| mu2268_7(unknown) = ^CallSideEffect : ~m? +# 2268| v2268_8(void) = ^BufferReadSideEffect[0] : &:r2268_5, ~m? +# 2268| mu2268_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2268_1 +# 2268| v2268_10(void) = ThrowValue : &:r2268_1, ~m? #-----| Exception -> Block 2 -# 2223| Block 7 -# 2223| v2223_1(void) = CatchByType[const String &] : +# 2270| Block 7 +# 2270| v2270_1(void) = CatchByType[const String &] : #-----| Exception -> Block 9 #-----| Goto -> Block 8 -# 2223| Block 8 -# 2223| r2223_2(glval<String &>) = VariableAddress[e] : -# 2223| mu2223_3(String &) = InitializeParameter[e] : &:r2223_2 -# 2223| r2223_4(String &) = Load[e] : &:r2223_2, ~m? -# 2223| mu2223_5(unknown) = InitializeIndirection[e] : &:r2223_4 -# 2223| v2223_6(void) = NoOp : +# 2270| Block 8 +# 2270| r2270_2(glval<String &>) = VariableAddress[e] : +# 2270| mu2270_3(String &) = InitializeParameter[e] : &:r2270_2 +# 2270| r2270_4(String &) = Load[e] : &:r2270_2, ~m? +# 2270| mu2270_5(unknown) = InitializeIndirection[e] : &:r2270_4 +# 2270| v2270_6(void) = NoOp : #-----| Goto -> Block 10 -# 2225| Block 9 -# 2225| v2225_1(void) = CatchAny : -# 2226| v2226_1(void) = ReThrow : +# 2272| Block 9 +# 2272| v2272_1(void) = CatchAny : +# 2273| v2273_1(void) = ReThrow : #-----| Exception -> Block 2 -# 2228| Block 10 -# 2228| v2228_1(void) = NoOp : -# 2212| v2212_9(void) = ReturnVoid : +# 2275| Block 10 +# 2275| v2275_1(void) = NoOp : +# 2259| v2259_9(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2230| void IfDestructors(bool) -# 2230| Block 0 -# 2230| v2230_1(void) = EnterFunction : -# 2230| mu2230_2(unknown) = AliasedDefinition : -# 2230| mu2230_3(unknown) = InitializeNonLocal : -# 2230| r2230_4(glval<bool>) = VariableAddress[b] : -# 2230| mu2230_5(bool) = InitializeParameter[b] : &:r2230_4 -# 2231| r2231_1(glval<String>) = VariableAddress[s1] : -# 2231| mu2231_2(String) = Uninitialized[s1] : &:r2231_1 -# 2231| r2231_3(glval<unknown>) = FunctionAddress[String] : -# 2231| v2231_4(void) = Call[String] : func:r2231_3, this:r2231_1 -# 2231| mu2231_5(unknown) = ^CallSideEffect : ~m? -# 2231| mu2231_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 -# 2232| r2232_1(glval<bool>) = VariableAddress[b] : -# 2232| r2232_2(bool) = Load[b] : &:r2232_1, ~m? -# 2232| v2232_3(void) = ConditionalBranch : r2232_2 +# 2277| void IfDestructors(bool) +# 2277| Block 0 +# 2277| v2277_1(void) = EnterFunction : +# 2277| mu2277_2(unknown) = AliasedDefinition : +# 2277| mu2277_3(unknown) = InitializeNonLocal : +# 2277| r2277_4(glval<bool>) = VariableAddress[b] : +# 2277| mu2277_5(bool) = InitializeParameter[b] : &:r2277_4 +# 2278| r2278_1(glval<String>) = VariableAddress[s1] : +# 2278| mu2278_2(String) = Uninitialized[s1] : &:r2278_1 +# 2278| r2278_3(glval<unknown>) = FunctionAddress[String] : +# 2278| v2278_4(void) = Call[String] : func:r2278_3, this:r2278_1 +# 2278| mu2278_5(unknown) = ^CallSideEffect : ~m? +# 2278| mu2278_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 +# 2279| r2279_1(glval<bool>) = VariableAddress[b] : +# 2279| r2279_2(bool) = Load[b] : &:r2279_1, ~m? +# 2279| v2279_3(void) = ConditionalBranch : r2279_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2233| Block 1 -# 2233| r2233_1(glval<String>) = VariableAddress[s2] : -# 2233| mu2233_2(String) = Uninitialized[s2] : &:r2233_1 -# 2233| r2233_3(glval<unknown>) = FunctionAddress[String] : -# 2233| v2233_4(void) = Call[String] : func:r2233_3, this:r2233_1 -# 2233| mu2233_5(unknown) = ^CallSideEffect : ~m? -# 2233| mu2233_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2234| r2234_1(glval<String>) = VariableAddress[s2] : -# 2234| r2234_2(glval<unknown>) = FunctionAddress[~String] : -# 2234| v2234_3(void) = Call[~String] : func:r2234_2, this:r2234_1 -# 2234| mu2234_4(unknown) = ^CallSideEffect : ~m? -# 2234| v2234_5(void) = ^IndirectReadSideEffect[-1] : &:r2234_1, ~m? -# 2234| mu2234_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 +# 2280| Block 1 +# 2280| r2280_1(glval<String>) = VariableAddress[s2] : +# 2280| mu2280_2(String) = Uninitialized[s2] : &:r2280_1 +# 2280| r2280_3(glval<unknown>) = FunctionAddress[String] : +# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 +# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? +# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2281| r2281_1(glval<String>) = VariableAddress[s2] : +# 2281| r2281_2(glval<unknown>) = FunctionAddress[~String] : +# 2281| v2281_3(void) = Call[~String] : func:r2281_2, this:r2281_1 +# 2281| mu2281_4(unknown) = ^CallSideEffect : ~m? +# 2281| v2281_5(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m? +# 2281| mu2281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 #-----| Goto -> Block 3 -# 2235| Block 2 -# 2235| r2235_1(glval<String>) = VariableAddress[s3] : -# 2235| mu2235_2(String) = Uninitialized[s3] : &:r2235_1 -# 2235| r2235_3(glval<unknown>) = FunctionAddress[String] : -# 2235| v2235_4(void) = Call[String] : func:r2235_3, this:r2235_1 -# 2235| mu2235_5(unknown) = ^CallSideEffect : ~m? -# 2235| mu2235_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2235_1 -# 2236| r2236_1(glval<String>) = VariableAddress[s3] : -# 2236| r2236_2(glval<unknown>) = FunctionAddress[~String] : -# 2236| v2236_3(void) = Call[~String] : func:r2236_2, this:r2236_1 -# 2236| mu2236_4(unknown) = ^CallSideEffect : ~m? -# 2236| v2236_5(void) = ^IndirectReadSideEffect[-1] : &:r2236_1, ~m? -# 2236| mu2236_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 +# 2282| Block 2 +# 2282| r2282_1(glval<String>) = VariableAddress[s3] : +# 2282| mu2282_2(String) = Uninitialized[s3] : &:r2282_1 +# 2282| r2282_3(glval<unknown>) = FunctionAddress[String] : +# 2282| v2282_4(void) = Call[String] : func:r2282_3, this:r2282_1 +# 2282| mu2282_5(unknown) = ^CallSideEffect : ~m? +# 2282| mu2282_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 +# 2283| r2283_1(glval<String>) = VariableAddress[s3] : +# 2283| r2283_2(glval<unknown>) = FunctionAddress[~String] : +# 2283| v2283_3(void) = Call[~String] : func:r2283_2, this:r2283_1 +# 2283| mu2283_4(unknown) = ^CallSideEffect : ~m? +# 2283| v2283_5(void) = ^IndirectReadSideEffect[-1] : &:r2283_1, ~m? +# 2283| mu2283_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 #-----| Goto -> Block 3 -# 2237| Block 3 -# 2237| r2237_1(glval<String>) = VariableAddress[s4] : -# 2237| mu2237_2(String) = Uninitialized[s4] : &:r2237_1 -# 2237| r2237_3(glval<unknown>) = FunctionAddress[String] : -# 2237| v2237_4(void) = Call[String] : func:r2237_3, this:r2237_1 -# 2237| mu2237_5(unknown) = ^CallSideEffect : ~m? -# 2237| mu2237_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2237_1 -# 2238| v2238_1(void) = NoOp : -# 2238| r2238_2(glval<String>) = VariableAddress[s4] : -# 2238| r2238_3(glval<unknown>) = FunctionAddress[~String] : -# 2238| v2238_4(void) = Call[~String] : func:r2238_3, this:r2238_2 -# 2238| mu2238_5(unknown) = ^CallSideEffect : ~m? -# 2238| v2238_6(void) = ^IndirectReadSideEffect[-1] : &:r2238_2, ~m? -# 2238| mu2238_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2238_2 -# 2238| r2238_8(glval<String>) = VariableAddress[s1] : -# 2238| r2238_9(glval<unknown>) = FunctionAddress[~String] : -# 2238| v2238_10(void) = Call[~String] : func:r2238_9, this:r2238_8 -# 2238| mu2238_11(unknown) = ^CallSideEffect : ~m? -# 2238| v2238_12(void) = ^IndirectReadSideEffect[-1] : &:r2238_8, ~m? -# 2238| mu2238_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2238_8 -# 2230| v2230_6(void) = ReturnVoid : -# 2230| v2230_7(void) = AliasedUse : ~m? -# 2230| v2230_8(void) = ExitFunction : - -# 2240| void ForDestructors() -# 2240| Block 0 -# 2240| v2240_1(void) = EnterFunction : -# 2240| mu2240_2(unknown) = AliasedDefinition : -# 2240| mu2240_3(unknown) = InitializeNonLocal : -# 2241| r2241_1(glval<char>) = VariableAddress[c] : -# 2241| r2241_2(char) = Constant[97] : -# 2241| mu2241_3(char) = Store[c] : &:r2241_1, r2241_2 -# 2242| r2242_1(glval<String>) = VariableAddress[s] : -# 2242| mu2242_2(String) = Uninitialized[s] : &:r2242_1 -# 2242| r2242_3(glval<unknown>) = FunctionAddress[String] : -# 2242| r2242_4(glval<char[6]>) = StringConstant["hello"] : -# 2242| r2242_5(char *) = Convert : r2242_4 -# 2242| v2242_6(void) = Call[String] : func:r2242_3, this:r2242_1, 0:r2242_5 -# 2242| mu2242_7(unknown) = ^CallSideEffect : ~m? -# 2242| v2242_8(void) = ^BufferReadSideEffect[0] : &:r2242_5, ~m? -# 2242| mu2242_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_1 +# 2284| Block 3 +# 2284| r2284_1(glval<String>) = VariableAddress[s4] : +# 2284| mu2284_2(String) = Uninitialized[s4] : &:r2284_1 +# 2284| r2284_3(glval<unknown>) = FunctionAddress[String] : +# 2284| v2284_4(void) = Call[String] : func:r2284_3, this:r2284_1 +# 2284| mu2284_5(unknown) = ^CallSideEffect : ~m? +# 2284| mu2284_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_1 +# 2285| v2285_1(void) = NoOp : +# 2285| r2285_2(glval<String>) = VariableAddress[s4] : +# 2285| r2285_3(glval<unknown>) = FunctionAddress[~String] : +# 2285| v2285_4(void) = Call[~String] : func:r2285_3, this:r2285_2 +# 2285| mu2285_5(unknown) = ^CallSideEffect : ~m? +# 2285| v2285_6(void) = ^IndirectReadSideEffect[-1] : &:r2285_2, ~m? +# 2285| mu2285_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_2 +# 2285| r2285_8(glval<String>) = VariableAddress[s1] : +# 2285| r2285_9(glval<unknown>) = FunctionAddress[~String] : +# 2285| v2285_10(void) = Call[~String] : func:r2285_9, this:r2285_8 +# 2285| mu2285_11(unknown) = ^CallSideEffect : ~m? +# 2285| v2285_12(void) = ^IndirectReadSideEffect[-1] : &:r2285_8, ~m? +# 2285| mu2285_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_8 +# 2277| v2277_6(void) = ReturnVoid : +# 2277| v2277_7(void) = AliasedUse : ~m? +# 2277| v2277_8(void) = ExitFunction : + +# 2287| void ForDestructors() +# 2287| Block 0 +# 2287| v2287_1(void) = EnterFunction : +# 2287| mu2287_2(unknown) = AliasedDefinition : +# 2287| mu2287_3(unknown) = InitializeNonLocal : +# 2288| r2288_1(glval<char>) = VariableAddress[c] : +# 2288| r2288_2(char) = Constant[97] : +# 2288| mu2288_3(char) = Store[c] : &:r2288_1, r2288_2 +# 2289| r2289_1(glval<String>) = VariableAddress[s] : +# 2289| mu2289_2(String) = Uninitialized[s] : &:r2289_1 +# 2289| r2289_3(glval<unknown>) = FunctionAddress[String] : +# 2289| r2289_4(glval<char[6]>) = StringConstant["hello"] : +# 2289| r2289_5(char *) = Convert : r2289_4 +# 2289| v2289_6(void) = Call[String] : func:r2289_3, this:r2289_1, 0:r2289_5 +# 2289| mu2289_7(unknown) = ^CallSideEffect : ~m? +# 2289| v2289_8(void) = ^BufferReadSideEffect[0] : &:r2289_5, ~m? +# 2289| mu2289_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_1 #-----| Goto -> Block 1 -# 2242| Block 1 -# 2242| r2242_10(glval<char>) = VariableAddress[c] : -# 2242| r2242_11(char) = Load[c] : &:r2242_10, ~m? -# 2242| r2242_12(int) = Convert : r2242_11 -# 2242| r2242_13(int) = Constant[0] : -# 2242| r2242_14(bool) = CompareNE : r2242_12, r2242_13 -# 2242| v2242_15(void) = ConditionalBranch : r2242_14 +# 2289| Block 1 +# 2289| r2289_10(glval<char>) = VariableAddress[c] : +# 2289| r2289_11(char) = Load[c] : &:r2289_10, ~m? +# 2289| r2289_12(int) = Convert : r2289_11 +# 2289| r2289_13(int) = Constant[0] : +# 2289| r2289_14(bool) = CompareNE : r2289_12, r2289_13 +# 2289| v2289_15(void) = ConditionalBranch : r2289_14 #-----| False -> Block 3 #-----| True -> Block 2 -# 2243| Block 2 -# 2243| r2243_1(glval<String>) = VariableAddress[s2] : -# 2243| mu2243_2(String) = Uninitialized[s2] : &:r2243_1 -# 2243| r2243_3(glval<unknown>) = FunctionAddress[String] : -# 2243| v2243_4(void) = Call[String] : func:r2243_3, this:r2243_1 -# 2243| mu2243_5(unknown) = ^CallSideEffect : ~m? -# 2243| mu2243_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2243_1 -# 2244| r2244_1(glval<String>) = VariableAddress[s2] : -# 2244| r2244_2(glval<unknown>) = FunctionAddress[~String] : -# 2244| v2244_3(void) = Call[~String] : func:r2244_2, this:r2244_1 -# 2244| mu2244_4(unknown) = ^CallSideEffect : ~m? -# 2244| v2244_5(void) = ^IndirectReadSideEffect[-1] : &:r2244_1, ~m? -# 2244| mu2244_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2244_1 -# 2242| r2242_16(glval<String>) = VariableAddress[s] : -# 2242| r2242_17(glval<unknown>) = FunctionAddress[pop_back] : -# 2242| r2242_18(char) = Call[pop_back] : func:r2242_17, this:r2242_16 -# 2242| mu2242_19(unknown) = ^CallSideEffect : ~m? -# 2242| v2242_20(void) = ^IndirectReadSideEffect[-1] : &:r2242_16, ~m? -# 2242| mu2242_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_16 -# 2242| r2242_22(glval<char>) = VariableAddress[c] : -# 2242| mu2242_23(char) = Store[c] : &:r2242_22, r2242_18 +# 2290| Block 2 +# 2290| r2290_1(glval<String>) = VariableAddress[s2] : +# 2290| mu2290_2(String) = Uninitialized[s2] : &:r2290_1 +# 2290| r2290_3(glval<unknown>) = FunctionAddress[String] : +# 2290| v2290_4(void) = Call[String] : func:r2290_3, this:r2290_1 +# 2290| mu2290_5(unknown) = ^CallSideEffect : ~m? +# 2290| mu2290_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2290_1 +# 2291| r2291_1(glval<String>) = VariableAddress[s2] : +# 2291| r2291_2(glval<unknown>) = FunctionAddress[~String] : +# 2291| v2291_3(void) = Call[~String] : func:r2291_2, this:r2291_1 +# 2291| mu2291_4(unknown) = ^CallSideEffect : ~m? +# 2291| v2291_5(void) = ^IndirectReadSideEffect[-1] : &:r2291_1, ~m? +# 2291| mu2291_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2291_1 +# 2289| r2289_16(glval<String>) = VariableAddress[s] : +# 2289| r2289_17(glval<unknown>) = FunctionAddress[pop_back] : +# 2289| r2289_18(char) = Call[pop_back] : func:r2289_17, this:r2289_16 +# 2289| mu2289_19(unknown) = ^CallSideEffect : ~m? +# 2289| v2289_20(void) = ^IndirectReadSideEffect[-1] : &:r2289_16, ~m? +# 2289| mu2289_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_16 +# 2289| r2289_22(glval<char>) = VariableAddress[c] : +# 2289| mu2289_23(char) = Store[c] : &:r2289_22, r2289_18 #-----| Goto (back edge) -> Block 1 -# 2242| Block 3 -# 2242| r2242_24(glval<String>) = VariableAddress[s] : -# 2242| r2242_25(glval<unknown>) = FunctionAddress[~String] : -# 2242| v2242_26(void) = Call[~String] : func:r2242_25, this:r2242_24 -# 2242| mu2242_27(unknown) = ^CallSideEffect : ~m? -# 2242| v2242_28(void) = ^IndirectReadSideEffect[-1] : &:r2242_24, ~m? -# 2242| mu2242_29(String) = ^IndirectMayWriteSideEffect[-1] : &:r2242_24 -# 2246| r2246_1(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2246| r2246_2(glval<vector<String>>) = VariableAddress[#temp2246:20] : -# 2246| mu2246_3(vector<String>) = Uninitialized[#temp2246:20] : &:r2246_2 -# 2246| r2246_4(glval<unknown>) = FunctionAddress[vector] : -# 2246| r2246_5(glval<String>) = VariableAddress[#temp2246:35] : -# 2246| mu2246_6(String) = Uninitialized[#temp2246:35] : &:r2246_5 -# 2246| r2246_7(glval<unknown>) = FunctionAddress[String] : -# 2246| r2246_8(glval<char[6]>) = StringConstant["hello"] : -# 2246| r2246_9(char *) = Convert : r2246_8 -# 2246| v2246_10(void) = Call[String] : func:r2246_7, this:r2246_5, 0:r2246_9 -# 2246| mu2246_11(unknown) = ^CallSideEffect : ~m? -# 2246| v2246_12(void) = ^BufferReadSideEffect[0] : &:r2246_9, ~m? -# 2246| mu2246_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_5 -# 2246| r2246_14(String) = Load[#temp2246:35] : &:r2246_5, ~m? -# 2246| v2246_15(void) = Call[vector] : func:r2246_4, this:r2246_2, 0:r2246_14 -# 2246| mu2246_16(unknown) = ^CallSideEffect : ~m? -# 2246| mu2246_17(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2246_2 -# 2246| r2246_18(vector<String> &) = CopyValue : r2246_2 -# 2246| mu2246_19(vector<String> &&) = Store[(__range)] : &:r2246_1, r2246_18 -# 2246| r2246_20(glval<iterator>) = VariableAddress[(__begin)] : -# 2246| r2246_21(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2246| r2246_22(vector<String> &&) = Load[(__range)] : &:r2246_21, ~m? -#-----| r0_1(glval<vector<String>>) = CopyValue : r2246_22 -#-----| r0_2(glval<vector<String>>) = Convert : r0_1 -# 2246| r2246_23(glval<unknown>) = FunctionAddress[begin] : -# 2246| r2246_24(iterator) = Call[begin] : func:r2246_23, this:r0_2 -# 2246| mu2246_25(unknown) = ^CallSideEffect : ~m? -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2246| mu2246_26(iterator) = Store[(__begin)] : &:r2246_20, r2246_24 -# 2246| r2246_27(glval<iterator>) = VariableAddress[(__end)] : -# 2246| r2246_28(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2246| r2246_29(vector<String> &&) = Load[(__range)] : &:r2246_28, ~m? -#-----| r0_4(glval<vector<String>>) = CopyValue : r2246_29 -#-----| r0_5(glval<vector<String>>) = Convert : r0_4 -# 2246| r2246_30(glval<unknown>) = FunctionAddress[end] : -# 2246| r2246_31(iterator) = Call[end] : func:r2246_30, this:r0_5 -# 2246| mu2246_32(unknown) = ^CallSideEffect : ~m? -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2246| mu2246_33(iterator) = Store[(__end)] : &:r2246_27, r2246_31 +# 2289| Block 3 +# 2289| r2289_24(glval<String>) = VariableAddress[s] : +# 2289| r2289_25(glval<unknown>) = FunctionAddress[~String] : +# 2289| v2289_26(void) = Call[~String] : func:r2289_25, this:r2289_24 +# 2289| mu2289_27(unknown) = ^CallSideEffect : ~m? +# 2289| v2289_28(void) = ^IndirectReadSideEffect[-1] : &:r2289_24, ~m? +# 2289| mu2289_29(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_24 +# 2293| r2293_1(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_2(glval<vector<String>>) = VariableAddress[#temp2293:20] : +# 2293| mu2293_3(vector<String>) = Uninitialized[#temp2293:20] : &:r2293_2 +# 2293| r2293_4(glval<unknown>) = FunctionAddress[vector] : +# 2293| r2293_5(glval<String>) = VariableAddress[#temp2293:40] : +# 2293| mu2293_6(String) = Uninitialized[#temp2293:40] : &:r2293_5 +# 2293| r2293_7(glval<unknown>) = FunctionAddress[String] : +# 2293| r2293_8(glval<char[6]>) = StringConstant["hello"] : +# 2293| r2293_9(char *) = Convert : r2293_8 +# 2293| v2293_10(void) = Call[String] : func:r2293_7, this:r2293_5, 0:r2293_9 +# 2293| mu2293_11(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_12(void) = ^BufferReadSideEffect[0] : &:r2293_9, ~m? +# 2293| mu2293_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_5 +# 2293| r2293_14(String) = Load[#temp2293:40] : &:r2293_5, ~m? +# 2293| v2293_15(void) = Call[vector] : func:r2293_4, this:r2293_2, 0:r2293_14 +# 2293| mu2293_16(unknown) = ^CallSideEffect : ~m? +# 2293| mu2293_17(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_2 +# 2293| r2293_18(vector<String> &) = CopyValue : r2293_2 +# 2293| mu2293_19(vector<String> &&) = Store[(__range)] : &:r2293_1, r2293_18 +# 2293| r2293_20(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2293| r2293_21(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_22(vector<String> &&) = Load[(__range)] : &:r2293_21, ~m? +#-----| r0_1(glval<vector<String>>) = CopyValue : r2293_22 +#-----| r0_2(glval<vector<String>>) = Convert : r0_1 +# 2293| r2293_23(glval<unknown>) = FunctionAddress[begin] : +# 2293| r2293_24(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2293_23, this:r0_2 +# 2293| mu2293_25(unknown) = ^CallSideEffect : ~m? +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? +# 2293| mu2293_26(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_20, r2293_24 +# 2293| r2293_27(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +# 2293| r2293_28(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_29(vector<String> &&) = Load[(__range)] : &:r2293_28, ~m? +#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_29 +#-----| r0_5(glval<vector<String>>) = Convert : r0_4 +# 2293| r2293_30(glval<unknown>) = FunctionAddress[end] : +# 2293| r2293_31(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_30, this:r0_5 +# 2293| mu2293_32(unknown) = ^CallSideEffect : ~m? +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? +# 2293| mu2293_33(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_27, r2293_31 #-----| Goto -> Block 4 -# 2246| Block 4 -# 2246| r2246_34(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator>) = Convert : r2246_34 -# 2246| r2246_35(glval<unknown>) = FunctionAddress[operator!=] : -# 2246| r2246_36(glval<iterator>) = VariableAddress[(__end)] : -# 2246| r2246_37(iterator) = Load[(__end)] : &:r2246_36, ~m? -# 2246| r2246_38(bool) = Call[operator!=] : func:r2246_35, this:r0_7, 0:r2246_37 -# 2246| mu2246_39(unknown) = ^CallSideEffect : ~m? -#-----| v0_8(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2246| v2246_40(void) = ConditionalBranch : r2246_38 +# 2293| Block 4 +# 2293| r2293_34(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_34 +# 2293| r2293_35(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[#temp0:0] : +#-----| mu0_9(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Uninitialized[#temp0:0] : &:r0_8 +# 2293| r2293_36(glval<unknown>) = FunctionAddress[iterator] : +# 2293| r2293_37(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_37 +#-----| r0_11(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = CopyValue : r0_10 +# 2293| v2293_38(void) = Call[iterator] : func:r2293_36, this:r0_8, 0:r0_11 +# 2293| mu2293_39(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? +# 2293| mu2293_40(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, ~m? +# 2293| r2293_41(bool) = Call[operator!=] : func:r2293_35, this:r0_7, 0:r0_13 +# 2293| mu2293_42(unknown) = ^CallSideEffect : ~m? +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? +# 2293| v2293_43(void) = ConditionalBranch : r2293_41 #-----| False -> Block 6 #-----| True -> Block 5 -# 2246| Block 5 -# 2246| r2246_41(glval<String>) = VariableAddress[s] : -# 2246| mu2246_42(String) = Uninitialized[s] : &:r2246_41 -# 2246| r2246_43(glval<unknown>) = FunctionAddress[String] : -# 2246| r2246_44(glval<iterator>) = VariableAddress[(__begin)] : -#-----| r0_9(glval<iterator>) = Convert : r2246_44 -# 2246| r2246_45(glval<unknown>) = FunctionAddress[operator*] : -# 2246| r2246_46(String &) = Call[operator*] : func:r2246_45, this:r0_9 -# 2246| mu2246_47(unknown) = ^CallSideEffect : ~m? -#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_9, ~m? -# 2246| r2246_48(glval<String>) = CopyValue : r2246_46 -# 2246| r2246_49(glval<String>) = Convert : r2246_48 -# 2246| r2246_50(String &) = CopyValue : r2246_49 -# 2246| v2246_51(void) = Call[String] : func:r2246_43, this:r2246_41, 0:r2246_50 -# 2246| mu2246_52(unknown) = ^CallSideEffect : ~m? -# 2246| v2246_53(void) = ^BufferReadSideEffect[0] : &:r2246_50, ~m? -# 2246| mu2246_54(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_41 -# 2247| r2247_1(glval<String>) = VariableAddress[s2] : -# 2247| mu2247_2(String) = Uninitialized[s2] : &:r2247_1 -# 2247| r2247_3(glval<unknown>) = FunctionAddress[String] : -# 2247| v2247_4(void) = Call[String] : func:r2247_3, this:r2247_1 -# 2247| mu2247_5(unknown) = ^CallSideEffect : ~m? -# 2247| mu2247_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2247_1 -# 2248| r2248_1(glval<String>) = VariableAddress[s2] : -# 2248| r2248_2(glval<unknown>) = FunctionAddress[~String] : -# 2248| v2248_3(void) = Call[~String] : func:r2248_2, this:r2248_1 -# 2248| mu2248_4(unknown) = ^CallSideEffect : ~m? -# 2248| v2248_5(void) = ^IndirectReadSideEffect[-1] : &:r2248_1, ~m? -# 2248| mu2248_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2248_1 -# 2246| r2246_55(glval<String>) = VariableAddress[s] : -# 2246| r2246_56(glval<unknown>) = FunctionAddress[~String] : -# 2246| v2246_57(void) = Call[~String] : func:r2246_56, this:r2246_55 -# 2246| mu2246_58(unknown) = ^CallSideEffect : ~m? -# 2246| v2246_59(void) = ^IndirectReadSideEffect[-1] : &:r2246_55, ~m? -# 2246| mu2246_60(String) = ^IndirectMayWriteSideEffect[-1] : &:r2246_55 -# 2246| r2246_61(glval<iterator>) = VariableAddress[(__begin)] : -# 2246| r2246_62(glval<unknown>) = FunctionAddress[operator++] : -# 2246| r2246_63(iterator &) = Call[operator++] : func:r2246_62, this:r2246_61 -# 2246| mu2246_64(unknown) = ^CallSideEffect : ~m? -# 2246| v2246_65(void) = ^IndirectReadSideEffect[-1] : &:r2246_61, ~m? -# 2246| mu2246_66(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2246_61 -# 2246| r2246_67(glval<iterator>) = CopyValue : r2246_63 +# 2293| Block 5 +# 2293| r2293_44(glval<String>) = VariableAddress[s] : +# 2293| mu2293_45(String) = Uninitialized[s] : &:r2293_44 +# 2293| r2293_46(glval<unknown>) = FunctionAddress[String] : +# 2293| r2293_47(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_47 +# 2293| r2293_48(glval<unknown>) = FunctionAddress[operator*] : +# 2293| r2293_49(String &) = Call[operator*] : func:r2293_48, this:r0_15 +# 2293| mu2293_50(unknown) = ^CallSideEffect : ~m? +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? +# 2293| r2293_51(glval<String>) = CopyValue : r2293_49 +# 2293| r2293_52(glval<String>) = Convert : r2293_51 +# 2293| r2293_53(String &) = CopyValue : r2293_52 +# 2293| v2293_54(void) = Call[String] : func:r2293_46, this:r2293_44, 0:r2293_53 +# 2293| mu2293_55(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_56(void) = ^BufferReadSideEffect[0] : &:r2293_53, ~m? +# 2293| mu2293_57(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_44 +# 2294| r2294_1(glval<String>) = VariableAddress[s2] : +# 2294| mu2294_2(String) = Uninitialized[s2] : &:r2294_1 +# 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : +# 2294| v2294_4(void) = Call[String] : func:r2294_3, this:r2294_1 +# 2294| mu2294_5(unknown) = ^CallSideEffect : ~m? +# 2294| mu2294_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 +# 2295| r2295_1(glval<String>) = VariableAddress[s2] : +# 2295| r2295_2(glval<unknown>) = FunctionAddress[~String] : +# 2295| v2295_3(void) = Call[~String] : func:r2295_2, this:r2295_1 +# 2295| mu2295_4(unknown) = ^CallSideEffect : ~m? +# 2295| v2295_5(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, ~m? +# 2295| mu2295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 +# 2293| r2293_58(glval<String>) = VariableAddress[s] : +# 2293| r2293_59(glval<unknown>) = FunctionAddress[~String] : +# 2293| v2293_60(void) = Call[~String] : func:r2293_59, this:r2293_58 +# 2293| mu2293_61(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_62(void) = ^IndirectReadSideEffect[-1] : &:r2293_58, ~m? +# 2293| mu2293_63(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_58 +# 2293| r2293_64(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2293| r2293_65(glval<unknown>) = FunctionAddress[operator++] : +# 2293| r2293_66(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_65, this:r2293_64 +# 2293| mu2293_67(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_68(void) = ^IndirectReadSideEffect[-1] : &:r2293_64, ~m? +# 2293| mu2293_69(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_64 +# 2293| r2293_70(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_66 #-----| Goto (back edge) -> Block 4 -# 2250| Block 6 -# 2250| r2250_1(glval<String>) = VariableAddress[s] : -# 2250| mu2250_2(String) = Uninitialized[s] : &:r2250_1 -# 2250| r2250_3(glval<unknown>) = FunctionAddress[String] : -# 2250| r2250_4(glval<char[6]>) = StringConstant["hello"] : -# 2250| r2250_5(char *) = Convert : r2250_4 -# 2250| v2250_6(void) = Call[String] : func:r2250_3, this:r2250_1, 0:r2250_5 -# 2250| mu2250_7(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_8(void) = ^BufferReadSideEffect[0] : &:r2250_5, ~m? -# 2250| mu2250_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_1 -# 2250| r2250_10(glval<String>) = VariableAddress[s2] : -# 2250| mu2250_11(String) = Uninitialized[s2] : &:r2250_10 -# 2250| r2250_12(glval<unknown>) = FunctionAddress[String] : -# 2250| r2250_13(glval<char[6]>) = StringConstant["world"] : -# 2250| r2250_14(char *) = Convert : r2250_13 -# 2250| v2250_15(void) = Call[String] : func:r2250_12, this:r2250_10, 0:r2250_14 -# 2250| mu2250_16(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_17(void) = ^BufferReadSideEffect[0] : &:r2250_14, ~m? -# 2250| mu2250_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_10 +# 2297| Block 6 +# 2297| r2297_1(glval<String>) = VariableAddress[s] : +# 2297| mu2297_2(String) = Uninitialized[s] : &:r2297_1 +# 2297| r2297_3(glval<unknown>) = FunctionAddress[String] : +# 2297| r2297_4(glval<char[6]>) = StringConstant["hello"] : +# 2297| r2297_5(char *) = Convert : r2297_4 +# 2297| v2297_6(void) = Call[String] : func:r2297_3, this:r2297_1, 0:r2297_5 +# 2297| mu2297_7(unknown) = ^CallSideEffect : ~m? +# 2297| v2297_8(void) = ^BufferReadSideEffect[0] : &:r2297_5, ~m? +# 2297| mu2297_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 +# 2297| r2297_10(glval<String>) = VariableAddress[s2] : +# 2297| mu2297_11(String) = Uninitialized[s2] : &:r2297_10 +# 2297| r2297_12(glval<unknown>) = FunctionAddress[String] : +# 2297| r2297_13(glval<char[6]>) = StringConstant["world"] : +# 2297| r2297_14(char *) = Convert : r2297_13 +# 2297| v2297_15(void) = Call[String] : func:r2297_12, this:r2297_10, 0:r2297_14 +# 2297| mu2297_16(unknown) = ^CallSideEffect : ~m? +# 2297| v2297_17(void) = ^BufferReadSideEffect[0] : &:r2297_14, ~m? +# 2297| mu2297_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_10 #-----| Goto -> Block 7 -# 2250| Block 7 -# 2250| r2250_19(glval<char>) = VariableAddress[c] : -# 2250| r2250_20(char) = Load[c] : &:r2250_19, ~m? -# 2250| r2250_21(int) = Convert : r2250_20 -# 2250| r2250_22(int) = Constant[0] : -# 2250| r2250_23(bool) = CompareNE : r2250_21, r2250_22 -# 2250| v2250_24(void) = ConditionalBranch : r2250_23 +# 2297| Block 7 +# 2297| r2297_19(glval<char>) = VariableAddress[c] : +# 2297| r2297_20(char) = Load[c] : &:r2297_19, ~m? +# 2297| r2297_21(int) = Convert : r2297_20 +# 2297| r2297_22(int) = Constant[0] : +# 2297| r2297_23(bool) = CompareNE : r2297_21, r2297_22 +# 2297| v2297_24(void) = ConditionalBranch : r2297_23 #-----| False -> Block 9 #-----| True -> Block 8 -# 2251| Block 8 -# 2251| r2251_1(char) = Constant[0] : -# 2251| r2251_2(glval<char>) = VariableAddress[c] : -# 2251| mu2251_3(char) = Store[c] : &:r2251_2, r2251_1 -# 2250| r2250_25(glval<String>) = VariableAddress[s] : -# 2250| r2250_26(glval<unknown>) = FunctionAddress[pop_back] : -# 2250| r2250_27(char) = Call[pop_back] : func:r2250_26, this:r2250_25 -# 2250| mu2250_28(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_29(void) = ^IndirectReadSideEffect[-1] : &:r2250_25, ~m? -# 2250| mu2250_30(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_25 -# 2250| r2250_31(glval<char>) = VariableAddress[c] : -# 2250| mu2250_32(char) = Store[c] : &:r2250_31, r2250_27 +# 2298| Block 8 +# 2298| r2298_1(char) = Constant[0] : +# 2298| r2298_2(glval<char>) = VariableAddress[c] : +# 2298| mu2298_3(char) = Store[c] : &:r2298_2, r2298_1 +# 2297| r2297_25(glval<String>) = VariableAddress[s] : +# 2297| r2297_26(glval<unknown>) = FunctionAddress[pop_back] : +# 2297| r2297_27(char) = Call[pop_back] : func:r2297_26, this:r2297_25 +# 2297| mu2297_28(unknown) = ^CallSideEffect : ~m? +# 2297| v2297_29(void) = ^IndirectReadSideEffect[-1] : &:r2297_25, ~m? +# 2297| mu2297_30(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_25 +# 2297| r2297_31(glval<char>) = VariableAddress[c] : +# 2297| mu2297_32(char) = Store[c] : &:r2297_31, r2297_27 #-----| Goto (back edge) -> Block 7 -# 2250| Block 9 -# 2250| r2250_33(glval<String>) = VariableAddress[s2] : -# 2250| r2250_34(glval<unknown>) = FunctionAddress[~String] : -# 2250| v2250_35(void) = Call[~String] : func:r2250_34, this:r2250_33 -# 2250| mu2250_36(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_37(void) = ^IndirectReadSideEffect[-1] : &:r2250_33, ~m? -# 2250| mu2250_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_33 -# 2250| r2250_39(glval<String>) = VariableAddress[s] : -# 2250| r2250_40(glval<unknown>) = FunctionAddress[~String] : -# 2250| v2250_41(void) = Call[~String] : func:r2250_40, this:r2250_39 -# 2250| mu2250_42(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_43(void) = ^IndirectReadSideEffect[-1] : &:r2250_39, ~m? -# 2250| mu2250_44(String) = ^IndirectMayWriteSideEffect[-1] : &:r2250_39 -# 2253| v2253_1(void) = NoOp : -# 2240| v2240_4(void) = ReturnVoid : -# 2240| v2240_5(void) = AliasedUse : ~m? -# 2240| v2240_6(void) = ExitFunction : - -# 2255| void IfDestructors2(bool) -# 2255| Block 0 -# 2255| v2255_1(void) = EnterFunction : -# 2255| mu2255_2(unknown) = AliasedDefinition : -# 2255| mu2255_3(unknown) = InitializeNonLocal : -# 2255| r2255_4(glval<bool>) = VariableAddress[b] : -# 2255| mu2255_5(bool) = InitializeParameter[b] : &:r2255_4 -# 2256| r2256_1(glval<String>) = VariableAddress[s] : -# 2256| mu2256_2(String) = Uninitialized[s] : &:r2256_1 -# 2256| r2256_3(glval<unknown>) = FunctionAddress[String] : -# 2256| r2256_4(glval<char[6]>) = StringConstant["hello"] : -# 2256| r2256_5(char *) = Convert : r2256_4 -# 2256| v2256_6(void) = Call[String] : func:r2256_3, this:r2256_1, 0:r2256_5 -# 2256| mu2256_7(unknown) = ^CallSideEffect : ~m? -# 2256| v2256_8(void) = ^BufferReadSideEffect[0] : &:r2256_5, ~m? -# 2256| mu2256_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2256_1 -# 2256| r2256_10(glval<bool>) = VariableAddress[b] : -# 2256| r2256_11(bool) = Load[b] : &:r2256_10, ~m? -# 2256| v2256_12(void) = ConditionalBranch : r2256_11 +# 2297| Block 9 +# 2297| r2297_33(glval<String>) = VariableAddress[s2] : +# 2297| r2297_34(glval<unknown>) = FunctionAddress[~String] : +# 2297| v2297_35(void) = Call[~String] : func:r2297_34, this:r2297_33 +# 2297| mu2297_36(unknown) = ^CallSideEffect : ~m? +# 2297| v2297_37(void) = ^IndirectReadSideEffect[-1] : &:r2297_33, ~m? +# 2297| mu2297_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_33 +# 2297| r2297_39(glval<String>) = VariableAddress[s] : +# 2297| r2297_40(glval<unknown>) = FunctionAddress[~String] : +# 2297| v2297_41(void) = Call[~String] : func:r2297_40, this:r2297_39 +# 2297| mu2297_42(unknown) = ^CallSideEffect : ~m? +# 2297| v2297_43(void) = ^IndirectReadSideEffect[-1] : &:r2297_39, ~m? +# 2297| mu2297_44(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_39 +# 2300| v2300_1(void) = NoOp : +# 2287| v2287_4(void) = ReturnVoid : +# 2287| v2287_5(void) = AliasedUse : ~m? +# 2287| v2287_6(void) = ExitFunction : + +# 2302| void IfDestructors2(bool) +# 2302| Block 0 +# 2302| v2302_1(void) = EnterFunction : +# 2302| mu2302_2(unknown) = AliasedDefinition : +# 2302| mu2302_3(unknown) = InitializeNonLocal : +# 2302| r2302_4(glval<bool>) = VariableAddress[b] : +# 2302| mu2302_5(bool) = InitializeParameter[b] : &:r2302_4 +# 2303| r2303_1(glval<String>) = VariableAddress[s] : +# 2303| mu2303_2(String) = Uninitialized[s] : &:r2303_1 +# 2303| r2303_3(glval<unknown>) = FunctionAddress[String] : +# 2303| r2303_4(glval<char[6]>) = StringConstant["hello"] : +# 2303| r2303_5(char *) = Convert : r2303_4 +# 2303| v2303_6(void) = Call[String] : func:r2303_3, this:r2303_1, 0:r2303_5 +# 2303| mu2303_7(unknown) = ^CallSideEffect : ~m? +# 2303| v2303_8(void) = ^BufferReadSideEffect[0] : &:r2303_5, ~m? +# 2303| mu2303_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 +# 2303| r2303_10(glval<bool>) = VariableAddress[b] : +# 2303| r2303_11(bool) = Load[b] : &:r2303_10, ~m? +# 2303| v2303_12(void) = ConditionalBranch : r2303_11 #-----| False -> Block 2 #-----| True -> Block 1 -# 2257| Block 1 -# 2257| r2257_1(glval<int>) = VariableAddress[x] : -# 2257| r2257_2(int) = Constant[0] : -# 2257| mu2257_3(int) = Store[x] : &:r2257_1, r2257_2 +# 2304| Block 1 +# 2304| r2304_1(glval<int>) = VariableAddress[x] : +# 2304| r2304_2(int) = Constant[0] : +# 2304| mu2304_3(int) = Store[x] : &:r2304_1, r2304_2 #-----| Goto -> Block 3 -# 2259| Block 2 -# 2259| r2259_1(glval<int>) = VariableAddress[y] : -# 2259| r2259_2(int) = Constant[0] : -# 2259| mu2259_3(int) = Store[y] : &:r2259_1, r2259_2 +# 2306| Block 2 +# 2306| r2306_1(glval<int>) = VariableAddress[y] : +# 2306| r2306_2(int) = Constant[0] : +# 2306| mu2306_3(int) = Store[y] : &:r2306_1, r2306_2 #-----| Goto -> Block 3 -# 2260| Block 3 -# 2260| r2260_1(glval<String>) = VariableAddress[s] : -# 2260| r2260_2(glval<unknown>) = FunctionAddress[~String] : -# 2260| v2260_3(void) = Call[~String] : func:r2260_2, this:r2260_1 -# 2260| mu2260_4(unknown) = ^CallSideEffect : ~m? -# 2260| v2260_5(void) = ^IndirectReadSideEffect[-1] : &:r2260_1, ~m? -# 2260| mu2260_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2260_1 -# 2261| v2261_1(void) = NoOp : -# 2255| v2255_6(void) = ReturnVoid : -# 2255| v2255_7(void) = AliasedUse : ~m? -# 2255| v2255_8(void) = ExitFunction : - -# 2270| void IfDestructors3(bool) -# 2270| Block 0 -# 2270| v2270_1(void) = EnterFunction : -# 2270| mu2270_2(unknown) = AliasedDefinition : -# 2270| mu2270_3(unknown) = InitializeNonLocal : -# 2270| r2270_4(glval<bool>) = VariableAddress[b] : -# 2270| mu2270_5(bool) = InitializeParameter[b] : &:r2270_4 -# 2271| r2271_1(glval<Bool>) = VariableAddress[B] : -# 2271| mu2271_2(Bool) = Uninitialized[B] : &:r2271_1 -# 2271| r2271_3(glval<unknown>) = FunctionAddress[Bool] : -# 2271| r2271_4(glval<bool>) = VariableAddress[b] : -# 2271| r2271_5(bool) = Load[b] : &:r2271_4, ~m? -# 2271| v2271_6(void) = Call[Bool] : func:r2271_3, this:r2271_1, 0:r2271_5 -# 2271| mu2271_7(unknown) = ^CallSideEffect : ~m? -# 2271| mu2271_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2271_1 -# 2271| r2271_9(glval<Bool>) = VariableAddress[B] : -# 2271| r2271_10(glval<unknown>) = FunctionAddress[operator bool] : -# 2271| r2271_11(bool) = Call[operator bool] : func:r2271_10, this:r2271_9 -# 2271| mu2271_12(unknown) = ^CallSideEffect : ~m? -# 2271| v2271_13(void) = ^IndirectReadSideEffect[-1] : &:r2271_9, ~m? -# 2271| mu2271_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2271_9 -# 2271| r2271_15(bool) = CopyValue : r2271_11 -# 2271| v2271_16(void) = ConditionalBranch : r2271_15 +# 2307| Block 3 +# 2307| r2307_1(glval<String>) = VariableAddress[s] : +# 2307| r2307_2(glval<unknown>) = FunctionAddress[~String] : +# 2307| v2307_3(void) = Call[~String] : func:r2307_2, this:r2307_1 +# 2307| mu2307_4(unknown) = ^CallSideEffect : ~m? +# 2307| v2307_5(void) = ^IndirectReadSideEffect[-1] : &:r2307_1, ~m? +# 2307| mu2307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 +# 2308| v2308_1(void) = NoOp : +# 2302| v2302_6(void) = ReturnVoid : +# 2302| v2302_7(void) = AliasedUse : ~m? +# 2302| v2302_8(void) = ExitFunction : + +# 2317| void IfDestructors3(bool) +# 2317| Block 0 +# 2317| v2317_1(void) = EnterFunction : +# 2317| mu2317_2(unknown) = AliasedDefinition : +# 2317| mu2317_3(unknown) = InitializeNonLocal : +# 2317| r2317_4(glval<bool>) = VariableAddress[b] : +# 2317| mu2317_5(bool) = InitializeParameter[b] : &:r2317_4 +# 2318| r2318_1(glval<Bool>) = VariableAddress[B] : +# 2318| mu2318_2(Bool) = Uninitialized[B] : &:r2318_1 +# 2318| r2318_3(glval<unknown>) = FunctionAddress[Bool] : +# 2318| r2318_4(glval<bool>) = VariableAddress[b] : +# 2318| r2318_5(bool) = Load[b] : &:r2318_4, ~m? +# 2318| v2318_6(void) = Call[Bool] : func:r2318_3, this:r2318_1, 0:r2318_5 +# 2318| mu2318_7(unknown) = ^CallSideEffect : ~m? +# 2318| mu2318_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 +# 2318| r2318_9(glval<Bool>) = VariableAddress[B] : +# 2318| r2318_10(glval<unknown>) = FunctionAddress[operator bool] : +# 2318| r2318_11(bool) = Call[operator bool] : func:r2318_10, this:r2318_9 +# 2318| mu2318_12(unknown) = ^CallSideEffect : ~m? +# 2318| v2318_13(void) = ^IndirectReadSideEffect[-1] : &:r2318_9, ~m? +# 2318| mu2318_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_9 +# 2318| r2318_15(bool) = CopyValue : r2318_11 +# 2318| v2318_16(void) = ConditionalBranch : r2318_15 #-----| False -> Block 2 #-----| True -> Block 1 -# 2272| Block 1 -# 2272| r2272_1(glval<String>) = VariableAddress[s1] : -# 2272| mu2272_2(String) = Uninitialized[s1] : &:r2272_1 -# 2272| r2272_3(glval<unknown>) = FunctionAddress[String] : -# 2272| v2272_4(void) = Call[String] : func:r2272_3, this:r2272_1 -# 2272| mu2272_5(unknown) = ^CallSideEffect : ~m? -# 2272| mu2272_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2272_1 -# 2273| r2273_1(glval<String>) = VariableAddress[s1] : -# 2273| r2273_2(glval<unknown>) = FunctionAddress[~String] : -# 2273| v2273_3(void) = Call[~String] : func:r2273_2, this:r2273_1 -# 2273| mu2273_4(unknown) = ^CallSideEffect : ~m? -# 2273| v2273_5(void) = ^IndirectReadSideEffect[-1] : &:r2273_1, ~m? -# 2273| mu2273_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2273_1 +# 2319| Block 1 +# 2319| r2319_1(glval<String>) = VariableAddress[s1] : +# 2319| mu2319_2(String) = Uninitialized[s1] : &:r2319_1 +# 2319| r2319_3(glval<unknown>) = FunctionAddress[String] : +# 2319| v2319_4(void) = Call[String] : func:r2319_3, this:r2319_1 +# 2319| mu2319_5(unknown) = ^CallSideEffect : ~m? +# 2319| mu2319_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2319_1 +# 2320| r2320_1(glval<String>) = VariableAddress[s1] : +# 2320| r2320_2(glval<unknown>) = FunctionAddress[~String] : +# 2320| v2320_3(void) = Call[~String] : func:r2320_2, this:r2320_1 +# 2320| mu2320_4(unknown) = ^CallSideEffect : ~m? +# 2320| v2320_5(void) = ^IndirectReadSideEffect[-1] : &:r2320_1, ~m? +# 2320| mu2320_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 #-----| Goto -> Block 3 -# 2274| Block 2 -# 2274| r2274_1(glval<String>) = VariableAddress[s2] : -# 2274| mu2274_2(String) = Uninitialized[s2] : &:r2274_1 -# 2274| r2274_3(glval<unknown>) = FunctionAddress[String] : -# 2274| v2274_4(void) = Call[String] : func:r2274_3, this:r2274_1 -# 2274| mu2274_5(unknown) = ^CallSideEffect : ~m? -# 2274| mu2274_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2274_1 -# 2275| r2275_1(glval<String>) = VariableAddress[s2] : -# 2275| r2275_2(glval<unknown>) = FunctionAddress[~String] : -# 2275| v2275_3(void) = Call[~String] : func:r2275_2, this:r2275_1 -# 2275| mu2275_4(unknown) = ^CallSideEffect : ~m? -# 2275| v2275_5(void) = ^IndirectReadSideEffect[-1] : &:r2275_1, ~m? -# 2275| mu2275_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2275_1 +# 2321| Block 2 +# 2321| r2321_1(glval<String>) = VariableAddress[s2] : +# 2321| mu2321_2(String) = Uninitialized[s2] : &:r2321_1 +# 2321| r2321_3(glval<unknown>) = FunctionAddress[String] : +# 2321| v2321_4(void) = Call[String] : func:r2321_3, this:r2321_1 +# 2321| mu2321_5(unknown) = ^CallSideEffect : ~m? +# 2321| mu2321_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 +# 2322| r2322_1(glval<String>) = VariableAddress[s2] : +# 2322| r2322_2(glval<unknown>) = FunctionAddress[~String] : +# 2322| v2322_3(void) = Call[~String] : func:r2322_2, this:r2322_1 +# 2322| mu2322_4(unknown) = ^CallSideEffect : ~m? +# 2322| v2322_5(void) = ^IndirectReadSideEffect[-1] : &:r2322_1, ~m? +# 2322| mu2322_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2322_1 #-----| Goto -> Block 3 -# 2275| Block 3 -# 2275| r2275_7(glval<Bool>) = VariableAddress[B] : -# 2275| r2275_8(glval<unknown>) = FunctionAddress[~Bool] : -# 2275| v2275_9(void) = Call[~Bool] : func:r2275_8, this:r2275_7 -# 2275| mu2275_10(unknown) = ^CallSideEffect : ~m? -# 2275| v2275_11(void) = ^IndirectReadSideEffect[-1] : &:r2275_7, ~m? -# 2275| mu2275_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2275_7 -# 2276| v2276_1(void) = NoOp : -# 2270| v2270_6(void) = ReturnVoid : -# 2270| v2270_7(void) = AliasedUse : ~m? -# 2270| v2270_8(void) = ExitFunction : - -# 2278| void WhileLoopDestructors(bool) -# 2278| Block 0 -# 2278| v2278_1(void) = EnterFunction : -# 2278| mu2278_2(unknown) = AliasedDefinition : -# 2278| mu2278_3(unknown) = InitializeNonLocal : -# 2278| r2278_4(glval<bool>) = VariableAddress[b] : -# 2278| mu2278_5(bool) = InitializeParameter[b] : &:r2278_4 -# 2280| r2280_1(glval<String>) = VariableAddress[s] : -# 2280| mu2280_2(String) = Uninitialized[s] : &:r2280_1 -# 2280| r2280_3(glval<unknown>) = FunctionAddress[String] : -# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 -# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? -# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2322| Block 3 +# 2322| r2322_7(glval<Bool>) = VariableAddress[B] : +# 2322| r2322_8(glval<unknown>) = FunctionAddress[~Bool] : +# 2322| v2322_9(void) = Call[~Bool] : func:r2322_8, this:r2322_7 +# 2322| mu2322_10(unknown) = ^CallSideEffect : ~m? +# 2322| v2322_11(void) = ^IndirectReadSideEffect[-1] : &:r2322_7, ~m? +# 2322| mu2322_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2322_7 +# 2323| v2323_1(void) = NoOp : +# 2317| v2317_6(void) = ReturnVoid : +# 2317| v2317_7(void) = AliasedUse : ~m? +# 2317| v2317_8(void) = ExitFunction : + +# 2325| void WhileLoopDestructors(bool) +# 2325| Block 0 +# 2325| v2325_1(void) = EnterFunction : +# 2325| mu2325_2(unknown) = AliasedDefinition : +# 2325| mu2325_3(unknown) = InitializeNonLocal : +# 2325| r2325_4(glval<bool>) = VariableAddress[b] : +# 2325| mu2325_5(bool) = InitializeParameter[b] : &:r2325_4 +# 2327| r2327_1(glval<String>) = VariableAddress[s] : +# 2327| mu2327_2(String) = Uninitialized[s] : &:r2327_1 +# 2327| r2327_3(glval<unknown>) = FunctionAddress[String] : +# 2327| v2327_4(void) = Call[String] : func:r2327_3, this:r2327_1 +# 2327| mu2327_5(unknown) = ^CallSideEffect : ~m? +# 2327| mu2327_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2327_1 #-----| Goto -> Block 1 -# 2281| Block 1 -# 2281| r2281_1(glval<bool>) = VariableAddress[b] : -# 2281| r2281_2(bool) = Load[b] : &:r2281_1, ~m? -# 2281| v2281_3(void) = ConditionalBranch : r2281_2 +# 2328| Block 1 +# 2328| r2328_1(glval<bool>) = VariableAddress[b] : +# 2328| r2328_2(bool) = Load[b] : &:r2328_1, ~m? +# 2328| v2328_3(void) = ConditionalBranch : r2328_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2282| Block 2 -# 2282| r2282_1(bool) = Constant[0] : -# 2282| r2282_2(glval<bool>) = VariableAddress[b] : -# 2282| mu2282_3(bool) = Store[b] : &:r2282_2, r2282_1 +# 2329| Block 2 +# 2329| r2329_1(bool) = Constant[0] : +# 2329| r2329_2(glval<bool>) = VariableAddress[b] : +# 2329| mu2329_3(bool) = Store[b] : &:r2329_2, r2329_1 #-----| Goto (back edge) -> Block 1 -# 2284| Block 3 -# 2284| r2284_1(glval<String>) = VariableAddress[s] : -# 2284| r2284_2(glval<unknown>) = FunctionAddress[~String] : -# 2284| v2284_3(void) = Call[~String] : func:r2284_2, this:r2284_1 -# 2284| mu2284_4(unknown) = ^CallSideEffect : ~m? -# 2284| v2284_5(void) = ^IndirectReadSideEffect[-1] : &:r2284_1, ~m? -# 2284| mu2284_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_1 +# 2331| Block 3 +# 2331| r2331_1(glval<String>) = VariableAddress[s] : +# 2331| r2331_2(glval<unknown>) = FunctionAddress[~String] : +# 2331| v2331_3(void) = Call[~String] : func:r2331_2, this:r2331_1 +# 2331| mu2331_4(unknown) = ^CallSideEffect : ~m? +# 2331| v2331_5(void) = ^IndirectReadSideEffect[-1] : &:r2331_1, ~m? +# 2331| mu2331_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2331_1 #-----| Goto -> Block 4 -# 2287| Block 4 -# 2287| r2287_1(glval<Bool>) = VariableAddress[B] : -# 2287| mu2287_2(Bool) = Uninitialized[B] : &:r2287_1 -# 2287| r2287_3(glval<unknown>) = FunctionAddress[Bool] : -# 2287| r2287_4(glval<bool>) = VariableAddress[b] : -# 2287| r2287_5(bool) = Load[b] : &:r2287_4, ~m? -# 2287| v2287_6(void) = Call[Bool] : func:r2287_3, this:r2287_1, 0:r2287_5 -# 2287| mu2287_7(unknown) = ^CallSideEffect : ~m? -# 2287| mu2287_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2287_1 -# 2287| r2287_9(glval<Bool>) = VariableAddress[B] : -# 2287| r2287_10(glval<unknown>) = FunctionAddress[operator bool] : -# 2287| r2287_11(bool) = Call[operator bool] : func:r2287_10, this:r2287_9 -# 2287| mu2287_12(unknown) = ^CallSideEffect : ~m? -# 2287| v2287_13(void) = ^IndirectReadSideEffect[-1] : &:r2287_9, ~m? -# 2287| mu2287_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2287_9 -# 2287| r2287_15(bool) = CopyValue : r2287_11 -# 2287| v2287_16(void) = ConditionalBranch : r2287_15 +# 2334| Block 4 +# 2334| r2334_1(glval<Bool>) = VariableAddress[B] : +# 2334| mu2334_2(Bool) = Uninitialized[B] : &:r2334_1 +# 2334| r2334_3(glval<unknown>) = FunctionAddress[Bool] : +# 2334| r2334_4(glval<bool>) = VariableAddress[b] : +# 2334| r2334_5(bool) = Load[b] : &:r2334_4, ~m? +# 2334| v2334_6(void) = Call[Bool] : func:r2334_3, this:r2334_1, 0:r2334_5 +# 2334| mu2334_7(unknown) = ^CallSideEffect : ~m? +# 2334| mu2334_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_1 +# 2334| r2334_9(glval<Bool>) = VariableAddress[B] : +# 2334| r2334_10(glval<unknown>) = FunctionAddress[operator bool] : +# 2334| r2334_11(bool) = Call[operator bool] : func:r2334_10, this:r2334_9 +# 2334| mu2334_12(unknown) = ^CallSideEffect : ~m? +# 2334| v2334_13(void) = ^IndirectReadSideEffect[-1] : &:r2334_9, ~m? +# 2334| mu2334_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_9 +# 2334| r2334_15(bool) = CopyValue : r2334_11 +# 2334| v2334_16(void) = ConditionalBranch : r2334_15 #-----| False -> Block 6 #-----| True -> Block 5 -# 2288| Block 5 -# 2288| r2288_1(bool) = Constant[0] : -# 2288| r2288_2(glval<bool>) = VariableAddress[b] : -# 2288| mu2288_3(bool) = Store[b] : &:r2288_2, r2288_1 -# 2289| r2289_1(glval<Bool>) = VariableAddress[B] : -# 2289| r2289_2(glval<unknown>) = FunctionAddress[~Bool] : -# 2289| v2289_3(void) = Call[~Bool] : func:r2289_2, this:r2289_1 -# 2289| mu2289_4(unknown) = ^CallSideEffect : ~m? -# 2289| v2289_5(void) = ^IndirectReadSideEffect[-1] : &:r2289_1, ~m? -# 2289| mu2289_6(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2289_1 +# 2335| Block 5 +# 2335| r2335_1(bool) = Constant[0] : +# 2335| r2335_2(glval<bool>) = VariableAddress[b] : +# 2335| mu2335_3(bool) = Store[b] : &:r2335_2, r2335_1 +# 2336| r2336_1(glval<Bool>) = VariableAddress[B] : +# 2336| r2336_2(glval<unknown>) = FunctionAddress[~Bool] : +# 2336| v2336_3(void) = Call[~Bool] : func:r2336_2, this:r2336_1 +# 2336| mu2336_4(unknown) = ^CallSideEffect : ~m? +# 2336| v2336_5(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, ~m? +# 2336| mu2336_6(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 #-----| Goto (back edge) -> Block 4 -# 2289| Block 6 -# 2289| r2289_7(glval<Bool>) = VariableAddress[B] : -# 2289| r2289_8(glval<unknown>) = FunctionAddress[~Bool] : -# 2289| v2289_9(void) = Call[~Bool] : func:r2289_8, this:r2289_7 -# 2289| mu2289_10(unknown) = ^CallSideEffect : ~m? -# 2289| v2289_11(void) = ^IndirectReadSideEffect[-1] : &:r2289_7, ~m? -# 2289| mu2289_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2289_7 -# 2291| v2291_1(void) = NoOp : -# 2278| v2278_6(void) = ReturnVoid : -# 2278| v2278_7(void) = AliasedUse : ~m? -# 2278| v2278_8(void) = ExitFunction : - -# 2293| void VoidFunc() -# 2293| Block 0 -# 2293| v2293_1(void) = EnterFunction : -# 2293| mu2293_2(unknown) = AliasedDefinition : -# 2293| mu2293_3(unknown) = InitializeNonLocal : -# 2293| v2293_4(void) = NoOp : -# 2293| v2293_5(void) = ReturnVoid : -# 2293| v2293_6(void) = AliasedUse : ~m? -# 2293| v2293_7(void) = ExitFunction : - -# 2295| void IfReturnDestructors(bool) -# 2295| Block 0 -# 2295| v2295_1(void) = EnterFunction : -# 2295| mu2295_2(unknown) = AliasedDefinition : -# 2295| mu2295_3(unknown) = InitializeNonLocal : -# 2295| r2295_4(glval<bool>) = VariableAddress[b] : -# 2295| mu2295_5(bool) = InitializeParameter[b] : &:r2295_4 -# 2296| r2296_1(glval<String>) = VariableAddress[s] : -# 2296| mu2296_2(String) = Uninitialized[s] : &:r2296_1 -# 2296| r2296_3(glval<unknown>) = FunctionAddress[String] : -# 2296| v2296_4(void) = Call[String] : func:r2296_3, this:r2296_1 -# 2296| mu2296_5(unknown) = ^CallSideEffect : ~m? -# 2296| mu2296_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 -# 2297| r2297_1(glval<bool>) = VariableAddress[b] : -# 2297| r2297_2(bool) = Load[b] : &:r2297_1, ~m? -# 2297| v2297_3(void) = ConditionalBranch : r2297_2 +# 2336| Block 6 +# 2336| r2336_7(glval<Bool>) = VariableAddress[B] : +# 2336| r2336_8(glval<unknown>) = FunctionAddress[~Bool] : +# 2336| v2336_9(void) = Call[~Bool] : func:r2336_8, this:r2336_7 +# 2336| mu2336_10(unknown) = ^CallSideEffect : ~m? +# 2336| v2336_11(void) = ^IndirectReadSideEffect[-1] : &:r2336_7, ~m? +# 2336| mu2336_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_7 +# 2338| v2338_1(void) = NoOp : +# 2325| v2325_6(void) = ReturnVoid : +# 2325| v2325_7(void) = AliasedUse : ~m? +# 2325| v2325_8(void) = ExitFunction : + +# 2340| void VoidFunc() +# 2340| Block 0 +# 2340| v2340_1(void) = EnterFunction : +# 2340| mu2340_2(unknown) = AliasedDefinition : +# 2340| mu2340_3(unknown) = InitializeNonLocal : +# 2340| v2340_4(void) = NoOp : +# 2340| v2340_5(void) = ReturnVoid : +# 2340| v2340_6(void) = AliasedUse : ~m? +# 2340| v2340_7(void) = ExitFunction : + +# 2342| void IfReturnDestructors(bool) +# 2342| Block 0 +# 2342| v2342_1(void) = EnterFunction : +# 2342| mu2342_2(unknown) = AliasedDefinition : +# 2342| mu2342_3(unknown) = InitializeNonLocal : +# 2342| r2342_4(glval<bool>) = VariableAddress[b] : +# 2342| mu2342_5(bool) = InitializeParameter[b] : &:r2342_4 +# 2343| r2343_1(glval<String>) = VariableAddress[s] : +# 2343| mu2343_2(String) = Uninitialized[s] : &:r2343_1 +# 2343| r2343_3(glval<unknown>) = FunctionAddress[String] : +# 2343| v2343_4(void) = Call[String] : func:r2343_3, this:r2343_1 +# 2343| mu2343_5(unknown) = ^CallSideEffect : ~m? +# 2343| mu2343_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2343_1 +# 2344| r2344_1(glval<bool>) = VariableAddress[b] : +# 2344| r2344_2(bool) = Load[b] : &:r2344_1, ~m? +# 2344| v2344_3(void) = ConditionalBranch : r2344_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2295| Block 1 -# 2295| v2295_6(void) = ReturnVoid : -# 2295| v2295_7(void) = AliasedUse : ~m? -# 2295| v2295_8(void) = ExitFunction : - -# 2298| Block 2 -# 2298| v2298_1(void) = NoOp : -# 2304| r2304_1(glval<String>) = VariableAddress[s] : -# 2304| r2304_2(glval<unknown>) = FunctionAddress[~String] : -# 2304| v2304_3(void) = Call[~String] : func:r2304_2, this:r2304_1 -# 2304| mu2304_4(unknown) = ^CallSideEffect : ~m? -# 2304| v2304_5(void) = ^IndirectReadSideEffect[-1] : &:r2304_1, ~m? -# 2304| mu2304_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_1 +# 2342| Block 1 +# 2342| v2342_6(void) = ReturnVoid : +# 2342| v2342_7(void) = AliasedUse : ~m? +# 2342| v2342_8(void) = ExitFunction : + +# 2345| Block 2 +# 2345| v2345_1(void) = NoOp : +# 2351| r2351_1(glval<String>) = VariableAddress[s] : +# 2351| r2351_2(glval<unknown>) = FunctionAddress[~String] : +# 2351| v2351_3(void) = Call[~String] : func:r2351_2, this:r2351_1 +# 2351| mu2351_4(unknown) = ^CallSideEffect : ~m? +# 2351| v2351_5(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, ~m? +# 2351| mu2351_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 #-----| Goto -> Block 1 -# 2300| Block 3 -# 2300| r2300_1(glval<bool>) = VariableAddress[b] : -# 2300| r2300_2(bool) = Load[b] : &:r2300_1, ~m? -# 2300| v2300_3(void) = ConditionalBranch : r2300_2 +# 2347| Block 3 +# 2347| r2347_1(glval<bool>) = VariableAddress[b] : +# 2347| r2347_2(bool) = Load[b] : &:r2347_1, ~m? +# 2347| v2347_3(void) = ConditionalBranch : r2347_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2301| Block 4 -# 2301| r2301_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2301| v2301_2(void) = Call[VoidFunc] : func:r2301_1 -# 2301| mu2301_3(unknown) = ^CallSideEffect : ~m? -# 2301| v2301_4(void) = NoOp : -# 2304| r2304_7(glval<String>) = VariableAddress[s] : -# 2304| r2304_8(glval<unknown>) = FunctionAddress[~String] : -# 2304| v2304_9(void) = Call[~String] : func:r2304_8, this:r2304_7 -# 2304| mu2304_10(unknown) = ^CallSideEffect : ~m? -# 2304| v2304_11(void) = ^IndirectReadSideEffect[-1] : &:r2304_7, ~m? -# 2304| mu2304_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_7 +# 2348| Block 4 +# 2348| r2348_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2348| v2348_2(void) = Call[VoidFunc] : func:r2348_1 +# 2348| mu2348_3(unknown) = ^CallSideEffect : ~m? +# 2348| v2348_4(void) = NoOp : +# 2351| r2351_7(glval<String>) = VariableAddress[s] : +# 2351| r2351_8(glval<unknown>) = FunctionAddress[~String] : +# 2351| v2351_9(void) = Call[~String] : func:r2351_8, this:r2351_7 +# 2351| mu2351_10(unknown) = ^CallSideEffect : ~m? +# 2351| v2351_11(void) = ^IndirectReadSideEffect[-1] : &:r2351_7, ~m? +# 2351| mu2351_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_7 #-----| Goto -> Block 1 -# 2303| Block 5 -# 2303| r2303_1(glval<String>) = VariableAddress[s] : -# 2304| v2304_13(void) = NoOp : -# 2304| r2304_14(glval<String>) = VariableAddress[s] : -# 2304| r2304_15(glval<unknown>) = FunctionAddress[~String] : -# 2304| v2304_16(void) = Call[~String] : func:r2304_15, this:r2304_14 -# 2304| mu2304_17(unknown) = ^CallSideEffect : ~m? -# 2304| v2304_18(void) = ^IndirectReadSideEffect[-1] : &:r2304_14, ~m? -# 2304| mu2304_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_14 +# 2350| Block 5 +# 2350| r2350_1(glval<String>) = VariableAddress[s] : +# 2351| v2351_13(void) = NoOp : +# 2351| r2351_14(glval<String>) = VariableAddress[s] : +# 2351| r2351_15(glval<unknown>) = FunctionAddress[~String] : +# 2351| v2351_16(void) = Call[~String] : func:r2351_15, this:r2351_14 +# 2351| mu2351_17(unknown) = ^CallSideEffect : ~m? +# 2351| v2351_18(void) = ^IndirectReadSideEffect[-1] : &:r2351_14, ~m? +# 2351| mu2351_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_14 #-----| Goto -> Block 1 -# 2306| int IfReturnDestructors3(bool) -# 2306| Block 0 -# 2306| v2306_1(void) = EnterFunction : -# 2306| mu2306_2(unknown) = AliasedDefinition : -# 2306| mu2306_3(unknown) = InitializeNonLocal : -# 2306| r2306_4(glval<bool>) = VariableAddress[b] : -# 2306| mu2306_5(bool) = InitializeParameter[b] : &:r2306_4 -# 2307| r2307_1(glval<String>) = VariableAddress[s] : -# 2307| mu2307_2(String) = Uninitialized[s] : &:r2307_1 -# 2307| r2307_3(glval<unknown>) = FunctionAddress[String] : -# 2307| v2307_4(void) = Call[String] : func:r2307_3, this:r2307_1 -# 2307| mu2307_5(unknown) = ^CallSideEffect : ~m? -# 2307| mu2307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 -# 2308| r2308_1(glval<bool>) = VariableAddress[b] : -# 2308| r2308_2(bool) = Load[b] : &:r2308_1, ~m? -# 2308| v2308_3(void) = ConditionalBranch : r2308_2 +# 2353| int IfReturnDestructors3(bool) +# 2353| Block 0 +# 2353| v2353_1(void) = EnterFunction : +# 2353| mu2353_2(unknown) = AliasedDefinition : +# 2353| mu2353_3(unknown) = InitializeNonLocal : +# 2353| r2353_4(glval<bool>) = VariableAddress[b] : +# 2353| mu2353_5(bool) = InitializeParameter[b] : &:r2353_4 +# 2354| r2354_1(glval<String>) = VariableAddress[s] : +# 2354| mu2354_2(String) = Uninitialized[s] : &:r2354_1 +# 2354| r2354_3(glval<unknown>) = FunctionAddress[String] : +# 2354| v2354_4(void) = Call[String] : func:r2354_3, this:r2354_1 +# 2354| mu2354_5(unknown) = ^CallSideEffect : ~m? +# 2354| mu2354_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2354_1 +# 2355| r2355_1(glval<bool>) = VariableAddress[b] : +# 2355| r2355_2(bool) = Load[b] : &:r2355_1, ~m? +# 2355| v2355_3(void) = ConditionalBranch : r2355_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2306| Block 1 -# 2306| r2306_6(glval<int>) = VariableAddress[#return] : -# 2306| v2306_7(void) = ReturnValue : &:r2306_6, ~m? -# 2306| v2306_8(void) = AliasedUse : ~m? -# 2306| v2306_9(void) = ExitFunction : - -# 2309| Block 2 -# 2309| r2309_1(glval<int>) = VariableAddress[#return] : -# 2309| r2309_2(int) = Constant[1] : -# 2309| mu2309_3(int) = Store[#return] : &:r2309_1, r2309_2 -# 2312| r2312_1(glval<String>) = VariableAddress[s] : -# 2312| r2312_2(glval<unknown>) = FunctionAddress[~String] : -# 2312| v2312_3(void) = Call[~String] : func:r2312_2, this:r2312_1 -# 2312| mu2312_4(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_5(void) = ^IndirectReadSideEffect[-1] : &:r2312_1, ~m? -# 2312| mu2312_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 +# 2353| Block 1 +# 2353| r2353_6(glval<int>) = VariableAddress[#return] : +# 2353| v2353_7(void) = ReturnValue : &:r2353_6, ~m? +# 2353| v2353_8(void) = AliasedUse : ~m? +# 2353| v2353_9(void) = ExitFunction : + +# 2356| Block 2 +# 2356| r2356_1(glval<int>) = VariableAddress[#return] : +# 2356| r2356_2(int) = Constant[1] : +# 2356| mu2356_3(int) = Store[#return] : &:r2356_1, r2356_2 +# 2359| r2359_1(glval<String>) = VariableAddress[s] : +# 2359| r2359_2(glval<unknown>) = FunctionAddress[~String] : +# 2359| v2359_3(void) = Call[~String] : func:r2359_2, this:r2359_1 +# 2359| mu2359_4(unknown) = ^CallSideEffect : ~m? +# 2359| v2359_5(void) = ^IndirectReadSideEffect[-1] : &:r2359_1, ~m? +# 2359| mu2359_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_1 #-----| Goto -> Block 1 -# 2311| Block 3 -# 2311| r2311_1(glval<int>) = VariableAddress[#return] : -# 2311| r2311_2(int) = Constant[0] : -# 2311| mu2311_3(int) = Store[#return] : &:r2311_1, r2311_2 -# 2312| r2312_7(glval<String>) = VariableAddress[s] : -# 2312| r2312_8(glval<unknown>) = FunctionAddress[~String] : -# 2312| v2312_9(void) = Call[~String] : func:r2312_8, this:r2312_7 -# 2312| mu2312_10(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_11(void) = ^IndirectReadSideEffect[-1] : &:r2312_7, ~m? -# 2312| mu2312_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_7 +# 2358| Block 3 +# 2358| r2358_1(glval<int>) = VariableAddress[#return] : +# 2358| r2358_2(int) = Constant[0] : +# 2358| mu2358_3(int) = Store[#return] : &:r2358_1, r2358_2 +# 2359| r2359_7(glval<String>) = VariableAddress[s] : +# 2359| r2359_8(glval<unknown>) = FunctionAddress[~String] : +# 2359| v2359_9(void) = Call[~String] : func:r2359_8, this:r2359_7 +# 2359| mu2359_10(unknown) = ^CallSideEffect : ~m? +# 2359| v2359_11(void) = ^IndirectReadSideEffect[-1] : &:r2359_7, ~m? +# 2359| mu2359_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_7 #-----| Goto -> Block 1 -# 2314| void VoidReturnDestructors() -# 2314| Block 0 -# 2314| v2314_1(void) = EnterFunction : -# 2314| mu2314_2(unknown) = AliasedDefinition : -# 2314| mu2314_3(unknown) = InitializeNonLocal : -# 2315| r2315_1(glval<String>) = VariableAddress[s] : -# 2315| mu2315_2(String) = Uninitialized[s] : &:r2315_1 -# 2315| r2315_3(glval<unknown>) = FunctionAddress[String] : -# 2315| v2315_4(void) = Call[String] : func:r2315_3, this:r2315_1 -# 2315| mu2315_5(unknown) = ^CallSideEffect : ~m? -# 2315| mu2315_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2315_1 -# 2316| r2316_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2316| v2316_2(void) = Call[VoidFunc] : func:r2316_1 -# 2316| mu2316_3(unknown) = ^CallSideEffect : ~m? -# 2316| v2316_4(void) = NoOp : -# 2317| r2317_1(glval<String>) = VariableAddress[s] : -# 2317| r2317_2(glval<unknown>) = FunctionAddress[~String] : -# 2317| v2317_3(void) = Call[~String] : func:r2317_2, this:r2317_1 -# 2317| mu2317_4(unknown) = ^CallSideEffect : ~m? -# 2317| v2317_5(void) = ^IndirectReadSideEffect[-1] : &:r2317_1, ~m? -# 2317| mu2317_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2317_1 -# 2314| v2314_4(void) = ReturnVoid : -# 2314| v2314_5(void) = AliasedUse : ~m? -# 2314| v2314_6(void) = ExitFunction : - -# 2327| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2327| Block 0 -# 2327| v2327_1(void) = EnterFunction : -# 2327| mu2327_2(unknown) = AliasedDefinition : -# 2327| mu2327_3(unknown) = InitializeNonLocal : -# 2329| r2329_1(glval<..:: *>) = VariableAddress[#return] : -# 2329| r2329_2(..()(..)) = FunctionAddress[VoidToInt] : -# 2329| mu2329_3(..:: *) = Store[#return] : &:r2329_1, r2329_2 -# 2327| r2327_4(glval<..:: *>) = VariableAddress[#return] : -# 2327| v2327_5(void) = ReturnValue : &:r2327_4, ~m? -# 2327| v2327_6(void) = AliasedUse : ~m? -# 2327| v2327_7(void) = ExitFunction : +# 2361| void VoidReturnDestructors() +# 2361| Block 0 +# 2361| v2361_1(void) = EnterFunction : +# 2361| mu2361_2(unknown) = AliasedDefinition : +# 2361| mu2361_3(unknown) = InitializeNonLocal : +# 2362| r2362_1(glval<String>) = VariableAddress[s] : +# 2362| mu2362_2(String) = Uninitialized[s] : &:r2362_1 +# 2362| r2362_3(glval<unknown>) = FunctionAddress[String] : +# 2362| v2362_4(void) = Call[String] : func:r2362_3, this:r2362_1 +# 2362| mu2362_5(unknown) = ^CallSideEffect : ~m? +# 2362| mu2362_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2362_1 +# 2363| r2363_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2363| v2363_2(void) = Call[VoidFunc] : func:r2363_1 +# 2363| mu2363_3(unknown) = ^CallSideEffect : ~m? +# 2363| v2363_4(void) = NoOp : +# 2364| r2364_1(glval<String>) = VariableAddress[s] : +# 2364| r2364_2(glval<unknown>) = FunctionAddress[~String] : +# 2364| v2364_3(void) = Call[~String] : func:r2364_2, this:r2364_1 +# 2364| mu2364_4(unknown) = ^CallSideEffect : ~m? +# 2364| v2364_5(void) = ^IndirectReadSideEffect[-1] : &:r2364_1, ~m? +# 2364| mu2364_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2364_1 +# 2361| v2361_4(void) = ReturnVoid : +# 2361| v2361_5(void) = AliasedUse : ~m? +# 2361| v2361_6(void) = ExitFunction : + +# 2374| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2374| Block 0 +# 2374| v2374_1(void) = EnterFunction : +# 2374| mu2374_2(unknown) = AliasedDefinition : +# 2374| mu2374_3(unknown) = InitializeNonLocal : +# 2376| r2376_1(glval<..:: *>) = VariableAddress[#return] : +# 2376| r2376_2(..()(..)) = FunctionAddress[VoidToInt] : +# 2376| mu2376_3(..:: *) = Store[#return] : &:r2376_1, r2376_2 +# 2374| r2374_4(glval<..:: *>) = VariableAddress[#return] : +# 2374| v2374_5(void) = ReturnValue : &:r2374_4, ~m? +# 2374| v2374_6(void) = AliasedUse : ~m? +# 2374| v2374_7(void) = ExitFunction : perf-regression.cpp: # 6| void Big::Big() From 19c9ea7e207268d7c73cbd4f577a29f4b8a0f4de Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 12:13:43 +0000 Subject: [PATCH 255/731] C++: Implement alias and side effect models for iterators. --- .../cpp/models/implementations/Iterator.qll | 22 +- .../library-tests/ir/ir/aliased_ir.expected | 884 +++++++++--------- .../ir/ir/operand_locations.expected | 860 ++++++++--------- .../test/library-tests/ir/ir/raw_ir.expected | 656 +++++++------ 4 files changed, 1179 insertions(+), 1243 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll index cafd9aeeef05..79d36e77f3dc 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll @@ -9,6 +9,8 @@ import cpp import semmle.code.cpp.models.interfaces.Taint import semmle.code.cpp.models.interfaces.DataFlow import semmle.code.cpp.models.interfaces.Iterator +import semmle.code.cpp.models.interfaces.Alias +import semmle.code.cpp.models.interfaces.SideEffect /** * An instantiation of the `std::iterator_traits` template. @@ -438,7 +440,9 @@ private class IteratorAssignmentMemberOperatorModel extends IteratorAssignmentMe * A `begin` or `end` member function, or a related member function, that * returns an iterator. */ -private class BeginOrEndFunction extends MemberFunction, TaintFunction, GetIteratorFunction { +private class BeginOrEndFunction extends MemberFunction, TaintFunction, GetIteratorFunction, + AliasFunction, SideEffectFunction +{ BeginOrEndFunction() { this.hasName([ "begin", "cbegin", "rbegin", "crbegin", "end", "cend", "rend", "crend", "before_begin", @@ -456,6 +460,22 @@ private class BeginOrEndFunction extends MemberFunction, TaintFunction, GetItera input.isQualifierObject() and output.isReturnValue() } + + override predicate parameterNeverEscapes(int index) { index = -1 } + + override predicate parameterEscapesOnlyViaReturn(int index) { none() } + + override predicate hasOnlySpecificReadSideEffects() { any() } + + override predicate hasOnlySpecificWriteSideEffects() { any() } + + override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) { + none() + } + + override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) { + i = -1 and buffer = false + } } /** diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index a5c45046307f..a5a095787505 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -7290,62 +7290,58 @@ ir.cpp: #-----| r0_1(glval<vector<int>>) = CopyValue : r1127_9 # 1127| r1127_10(glval<unknown>) = FunctionAddress[begin] : # 1127| r1127_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1127_10, this:r0_1 -# 1127| m1127_12(unknown) = ^CallSideEffect : ~m1126_4 -# 1127| m1127_13(unknown) = Chi : total:m1126_4, partial:m1127_12 #-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m1126_8 -# 1127| m1127_14(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1127_7, r1127_11 -# 1127| r1127_15(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 1127| r1127_16(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1127| r1127_17(vector<int> &) = Load[(__range)] : &:r1127_16, m1127_6 -#-----| r0_3(glval<vector<int>>) = CopyValue : r1127_17 -# 1127| r1127_18(glval<unknown>) = FunctionAddress[end] : -# 1127| r1127_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1127_18, this:r0_3 -# 1127| m1127_20(unknown) = ^CallSideEffect : ~m1127_13 -# 1127| m1127_21(unknown) = Chi : total:m1127_13, partial:m1127_20 +# 1127| m1127_12(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1127_7, r1127_11 +# 1127| r1127_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1127| r1127_14(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_15(vector<int> &) = Load[(__range)] : &:r1127_14, m1127_6 +#-----| r0_3(glval<vector<int>>) = CopyValue : r1127_15 +# 1127| r1127_16(glval<unknown>) = FunctionAddress[end] : +# 1127| r1127_17(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1127_16, this:r0_3 #-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m1126_8 -# 1127| m1127_22(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1127_15, r1127_19 +# 1127| m1127_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1127_13, r1127_17 #-----| Goto -> Block 1 # 1127| Block 1 -# 1127| m1127_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 0:m1127_14, from 4:m1127_54 -# 1127| m1127_24(unknown) = Phi : from 0:~m1127_21, from 4:~m1127_51 -# 1127| r1127_25(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_5(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_25 -# 1127| r1127_26(glval<unknown>) = FunctionAddress[operator!=] : +# 1127| m1127_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 0:m1127_12, from 4:m1127_50 +# 1127| m1127_20(unknown) = Phi : from 0:~m1126_4, from 4:~m1127_47 +# 1127| r1127_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_5(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_21 +# 1127| r1127_22(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_6(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| m0_7(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_6 -# 1127| r1127_27(glval<unknown>) = FunctionAddress[iterator] : -# 1127| r1127_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_8(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_28 +# 1127| r1127_23(glval<unknown>) = FunctionAddress[iterator] : +# 1127| r1127_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_24 #-----| r0_9(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_8 -# 1127| v1127_29(void) = Call[iterator] : func:r1127_27, this:r0_6, 0:r0_9 -# 1127| m1127_30(unknown) = ^CallSideEffect : ~m1127_24 -# 1127| m1127_31(unknown) = Chi : total:m1127_24, partial:m1127_30 -#-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_9, ~m1127_22 -# 1127| m1127_32(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 -# 1127| m1127_33(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_7, partial:m1127_32 -#-----| r0_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_6, m1127_33 -# 1127| r1127_34(bool) = Call[operator!=] : func:r1127_26, this:r0_5, 0:r0_11 -# 1127| m1127_35(unknown) = ^CallSideEffect : ~m1127_31 -# 1127| m1127_36(unknown) = Chi : total:m1127_31, partial:m1127_35 -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m1127_23 -# 1127| v1127_37(void) = ConditionalBranch : r1127_34 +# 1127| v1127_25(void) = Call[iterator] : func:r1127_23, this:r0_6, 0:r0_9 +# 1127| m1127_26(unknown) = ^CallSideEffect : ~m1127_20 +# 1127| m1127_27(unknown) = Chi : total:m1127_20, partial:m1127_26 +#-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_9, ~m1127_18 +# 1127| m1127_28(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +# 1127| m1127_29(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_7, partial:m1127_28 +#-----| r0_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_6, m1127_29 +# 1127| r1127_30(bool) = Call[operator!=] : func:r1127_22, this:r0_5, 0:r0_11 +# 1127| m1127_31(unknown) = ^CallSideEffect : ~m1127_27 +# 1127| m1127_32(unknown) = Chi : total:m1127_27, partial:m1127_31 +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m1127_19 +# 1127| v1127_33(void) = ConditionalBranch : r1127_30 #-----| False -> Block 5 #-----| True -> Block 2 # 1127| Block 2 -# 1127| r1127_38(glval<int>) = VariableAddress[e] : -# 1127| r1127_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_39 -# 1127| r1127_40(glval<unknown>) = FunctionAddress[operator*] : -# 1127| r1127_41(int &) = Call[operator*] : func:r1127_40, this:r0_13 -# 1127| m1127_42(unknown) = ^CallSideEffect : ~m1127_36 -# 1127| m1127_43(unknown) = Chi : total:m1127_36, partial:m1127_42 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, m1127_23 -# 1127| r1127_44(int) = Load[?] : &:r1127_41, ~m1127_43 -# 1127| m1127_45(int) = Store[e] : &:r1127_38, r1127_44 +# 1127| r1127_34(glval<int>) = VariableAddress[e] : +# 1127| r1127_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_35 +# 1127| r1127_36(glval<unknown>) = FunctionAddress[operator*] : +# 1127| r1127_37(int &) = Call[operator*] : func:r1127_36, this:r0_13 +# 1127| m1127_38(unknown) = ^CallSideEffect : ~m1127_32 +# 1127| m1127_39(unknown) = Chi : total:m1127_32, partial:m1127_38 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, m1127_19 +# 1127| r1127_40(int) = Load[?] : &:r1127_37, ~m1127_39 +# 1127| m1127_41(int) = Store[e] : &:r1127_34, r1127_40 # 1128| r1128_1(glval<int>) = VariableAddress[e] : -# 1128| r1128_2(int) = Load[e] : &:r1128_1, m1127_45 +# 1128| r1128_2(int) = Load[e] : &:r1128_1, m1127_41 # 1128| r1128_3(int) = Constant[0] : # 1128| r1128_4(bool) = CompareGT : r1128_2, r1128_3 # 1128| v1128_5(void) = ConditionalBranch : r1128_4 @@ -7357,16 +7353,16 @@ ir.cpp: #-----| Goto -> Block 4 # 1127| Block 4 -# 1127| v1127_46(void) = NoOp : -# 1127| r1127_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 1127| r1127_48(glval<unknown>) = FunctionAddress[operator++] : -# 1127| r1127_49(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_48, this:r1127_47 -# 1127| m1127_50(unknown) = ^CallSideEffect : ~m1127_43 -# 1127| m1127_51(unknown) = Chi : total:m1127_43, partial:m1127_50 -# 1127| v1127_52(void) = ^IndirectReadSideEffect[-1] : &:r1127_47, m1127_23 -# 1127| m1127_53(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_47 -# 1127| m1127_54(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1127_23, partial:m1127_53 -# 1127| r1127_55(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_49 +# 1127| v1127_42(void) = NoOp : +# 1127| r1127_43(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1127| r1127_44(glval<unknown>) = FunctionAddress[operator++] : +# 1127| r1127_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_44, this:r1127_43 +# 1127| m1127_46(unknown) = ^CallSideEffect : ~m1127_39 +# 1127| m1127_47(unknown) = Chi : total:m1127_39, partial:m1127_46 +# 1127| v1127_48(void) = ^IndirectReadSideEffect[-1] : &:r1127_43, m1127_19 +# 1127| m1127_49(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_43 +# 1127| m1127_50(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1127_19, partial:m1127_49 +# 1127| r1127_51(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_45 #-----| Goto (back edge) -> Block 1 # 1133| Block 5 @@ -7382,77 +7378,73 @@ ir.cpp: #-----| r0_15(glval<vector<int>>) = CopyValue : r1133_9 # 1133| r1133_10(glval<unknown>) = FunctionAddress[begin] : # 1133| r1133_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1133_10, this:r0_15 -# 1133| m1133_12(unknown) = ^CallSideEffect : ~m1127_36 -# 1133| m1133_13(unknown) = Chi : total:m1127_36, partial:m1133_12 #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m1126_8 -# 1133| m1133_14(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1133_7, r1133_11 -# 1133| r1133_15(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 1133| r1133_16(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1133| r1133_17(vector<int> &) = Load[(__range)] : &:r1133_16, m1133_6 -#-----| r0_17(glval<vector<int>>) = CopyValue : r1133_17 -# 1133| r1133_18(glval<unknown>) = FunctionAddress[end] : -# 1133| r1133_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1133_18, this:r0_17 -# 1133| m1133_20(unknown) = ^CallSideEffect : ~m1133_13 -# 1133| m1133_21(unknown) = Chi : total:m1133_13, partial:m1133_20 +# 1133| m1133_12(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1133_7, r1133_11 +# 1133| r1133_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1133| r1133_14(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_15(vector<int> &) = Load[(__range)] : &:r1133_14, m1133_6 +#-----| r0_17(glval<vector<int>>) = CopyValue : r1133_15 +# 1133| r1133_16(glval<unknown>) = FunctionAddress[end] : +# 1133| r1133_17(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1133_16, this:r0_17 #-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m1126_8 -# 1133| m1133_22(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1133_15, r1133_19 +# 1133| m1133_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1133_13, r1133_17 #-----| Goto -> Block 6 # 1133| Block 6 -# 1133| m1133_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 5:m1133_14, from 7:m1133_45 -# 1133| m1133_24(unknown) = Phi : from 5:~m1133_21, from 7:~m1133_42 -# 1133| r1133_25(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_25 -# 1133| r1133_26(glval<unknown>) = FunctionAddress[operator!=] : +# 1133| m1133_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 5:m1133_12, from 7:m1133_41 +# 1133| m1133_20(unknown) = Phi : from 5:~m1127_32, from 7:~m1133_38 +# 1133| r1133_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_21 +# 1133| r1133_22(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_20(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| m0_21(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_20 -# 1133| r1133_27(glval<unknown>) = FunctionAddress[iterator] : -# 1133| r1133_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_28 +# 1133| r1133_23(glval<unknown>) = FunctionAddress[iterator] : +# 1133| r1133_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_24 #-----| r0_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_22 -# 1133| v1133_29(void) = Call[iterator] : func:r1133_27, this:r0_20, 0:r0_23 -# 1133| m1133_30(unknown) = ^CallSideEffect : ~m1133_24 -# 1133| m1133_31(unknown) = Chi : total:m1133_24, partial:m1133_30 -#-----| v0_24(void) = ^BufferReadSideEffect[0] : &:r0_23, ~m1133_22 -# 1133| m1133_32(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 -# 1133| m1133_33(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_21, partial:m1133_32 -#-----| r0_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_20, m1133_33 -# 1133| r1133_34(bool) = Call[operator!=] : func:r1133_26, this:r0_19, 0:r0_25 -# 1133| m1133_35(unknown) = ^CallSideEffect : ~m1133_31 -# 1133| m1133_36(unknown) = Chi : total:m1133_31, partial:m1133_35 -#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m1133_23 -# 1133| v1133_37(void) = ConditionalBranch : r1133_34 +# 1133| v1133_25(void) = Call[iterator] : func:r1133_23, this:r0_20, 0:r0_23 +# 1133| m1133_26(unknown) = ^CallSideEffect : ~m1133_20 +# 1133| m1133_27(unknown) = Chi : total:m1133_20, partial:m1133_26 +#-----| v0_24(void) = ^BufferReadSideEffect[0] : &:r0_23, ~m1133_18 +# 1133| m1133_28(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 +# 1133| m1133_29(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_21, partial:m1133_28 +#-----| r0_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_20, m1133_29 +# 1133| r1133_30(bool) = Call[operator!=] : func:r1133_22, this:r0_19, 0:r0_25 +# 1133| m1133_31(unknown) = ^CallSideEffect : ~m1133_27 +# 1133| m1133_32(unknown) = Chi : total:m1133_27, partial:m1133_31 +#-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m1133_19 +# 1133| v1133_33(void) = ConditionalBranch : r1133_30 #-----| False -> Block 10 #-----| True -> Block 8 # 1133| Block 7 -# 1133| r1133_38(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 1133| r1133_39(glval<unknown>) = FunctionAddress[operator++] : -# 1133| r1133_40(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_39, this:r1133_38 -# 1133| m1133_41(unknown) = ^CallSideEffect : ~m1133_52 -# 1133| m1133_42(unknown) = Chi : total:m1133_52, partial:m1133_41 -# 1133| v1133_43(void) = ^IndirectReadSideEffect[-1] : &:r1133_38, m1133_23 -# 1133| m1133_44(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_38 -# 1133| m1133_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1133_23, partial:m1133_44 -# 1133| r1133_46(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_40 +# 1133| r1133_34(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1133| r1133_35(glval<unknown>) = FunctionAddress[operator++] : +# 1133| r1133_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_35, this:r1133_34 +# 1133| m1133_37(unknown) = ^CallSideEffect : ~m1133_48 +# 1133| m1133_38(unknown) = Chi : total:m1133_48, partial:m1133_37 +# 1133| v1133_39(void) = ^IndirectReadSideEffect[-1] : &:r1133_34, m1133_19 +# 1133| m1133_40(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_34 +# 1133| m1133_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m1133_19, partial:m1133_40 +# 1133| r1133_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_36 #-----| Goto (back edge) -> Block 6 # 1133| Block 8 -# 1133| r1133_47(glval<int &>) = VariableAddress[e] : -# 1133| r1133_48(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_48 -# 1133| r1133_49(glval<unknown>) = FunctionAddress[operator*] : -# 1133| r1133_50(int &) = Call[operator*] : func:r1133_49, this:r0_27 -# 1133| m1133_51(unknown) = ^CallSideEffect : ~m1133_36 -# 1133| m1133_52(unknown) = Chi : total:m1133_36, partial:m1133_51 -#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, m1133_23 -# 1133| r1133_53(glval<int>) = CopyValue : r1133_50 -# 1133| r1133_54(glval<int>) = Convert : r1133_53 -# 1133| r1133_55(int &) = CopyValue : r1133_54 -# 1133| m1133_56(int &) = Store[e] : &:r1133_47, r1133_55 +# 1133| r1133_43(glval<int &>) = VariableAddress[e] : +# 1133| r1133_44(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_44 +# 1133| r1133_45(glval<unknown>) = FunctionAddress[operator*] : +# 1133| r1133_46(int &) = Call[operator*] : func:r1133_45, this:r0_27 +# 1133| m1133_47(unknown) = ^CallSideEffect : ~m1133_32 +# 1133| m1133_48(unknown) = Chi : total:m1133_32, partial:m1133_47 +#-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, m1133_19 +# 1133| r1133_49(glval<int>) = CopyValue : r1133_46 +# 1133| r1133_50(glval<int>) = Convert : r1133_49 +# 1133| r1133_51(int &) = CopyValue : r1133_50 +# 1133| m1133_52(int &) = Store[e] : &:r1133_43, r1133_51 # 1134| r1134_1(glval<int &>) = VariableAddress[e] : -# 1134| r1134_2(int &) = Load[e] : &:r1134_1, m1133_56 -# 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m1133_52 +# 1134| r1134_2(int &) = Load[e] : &:r1134_1, m1133_52 +# 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m1133_48 # 1134| r1134_4(int) = Constant[5] : # 1134| r1134_5(bool) = CompareLT : r1134_3, r1134_4 # 1134| v1134_6(void) = ConditionalBranch : r1134_5 @@ -7464,7 +7456,7 @@ ir.cpp: #-----| Goto -> Block 10 # 1137| Block 10 -# 1137| m1137_1(unknown) = Phi : from 6:~m1133_36, from 9:~m1133_52 +# 1137| m1137_1(unknown) = Phi : from 6:~m1133_32, from 9:~m1133_48 # 1137| v1137_2(void) = NoOp : # 1138| v1138_1(void) = NoOp : # 1126| v1126_9(void) = ReturnIndirection[v] : &:r1126_7, m1126_8 @@ -13420,87 +13412,83 @@ ir.cpp: #-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 # 2201| r2201_21(glval<unknown>) = FunctionAddress[begin] : # 2201| r2201_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2201_21, this:r0_2 -# 2201| m2201_23(unknown) = ^CallSideEffect : ~m2201_11 -# 2201| m2201_24(unknown) = Chi : total:m2201_11, partial:m2201_23 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2201_13 -# 2201| m2201_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_18, r2201_22 -# 2201| r2201_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2201| r2201_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_27, m2201_17 -#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_28 +# 2201| m2201_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_18, r2201_22 +# 2201| r2201_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2201| r2201_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_25, m2201_17 +#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_26 #-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 -# 2201| r2201_29(glval<unknown>) = FunctionAddress[end] : -# 2201| r2201_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_29, this:r0_5 -# 2201| m2201_31(unknown) = ^CallSideEffect : ~m2201_24 -# 2201| m2201_32(unknown) = Chi : total:m2201_24, partial:m2201_31 +# 2201| r2201_27(glval<unknown>) = FunctionAddress[end] : +# 2201| r2201_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_27, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2201_13 -# 2201| m2201_33(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_26, r2201_30 +# 2201| m2201_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_24, r2201_28 #-----| Goto -> Block 8 # 2201| Block 8 -# 2201| m2201_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 7:m2201_25, from 9:m2201_72 -# 2201| m2201_35(unknown) = Phi : from 7:~m2201_32, from 9:~m2201_69 -# 2201| r2201_36(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_36 -# 2201| r2201_37(glval<unknown>) = FunctionAddress[operator!=] : +# 2201| m2201_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 7:m2201_23, from 9:m2201_68 +# 2201| m2201_31(unknown) = Phi : from 7:~m2201_11, from 9:~m2201_65 +# 2201| r2201_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_32 +# 2201| r2201_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2201| r2201_38(glval<unknown>) = FunctionAddress[iterator] : -# 2201| r2201_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_39 +# 2201| r2201_34(glval<unknown>) = FunctionAddress[iterator] : +# 2201| r2201_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_35 #-----| r0_11(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_10 -# 2201| v2201_40(void) = Call[iterator] : func:r2201_38, this:r0_8, 0:r0_11 -# 2201| m2201_41(unknown) = ^CallSideEffect : ~m2201_35 -# 2201| m2201_42(unknown) = Chi : total:m2201_35, partial:m2201_41 -#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2201_33 -# 2201| m2201_43(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2201| m2201_44(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_9, partial:m2201_43 -#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, m2201_44 -# 2201| r2201_45(bool) = Call[operator!=] : func:r2201_37, this:r0_7, 0:r0_13 -# 2201| m2201_46(unknown) = ^CallSideEffect : ~m2201_42 -# 2201| m2201_47(unknown) = Chi : total:m2201_42, partial:m2201_46 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2201_34 -# 2201| v2201_48(void) = ConditionalBranch : r2201_45 +# 2201| v2201_36(void) = Call[iterator] : func:r2201_34, this:r0_8, 0:r0_11 +# 2201| m2201_37(unknown) = ^CallSideEffect : ~m2201_31 +# 2201| m2201_38(unknown) = Chi : total:m2201_31, partial:m2201_37 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2201_29 +# 2201| m2201_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2201| m2201_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_9, partial:m2201_39 +#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, m2201_40 +# 2201| r2201_41(bool) = Call[operator!=] : func:r2201_33, this:r0_7, 0:r0_13 +# 2201| m2201_42(unknown) = ^CallSideEffect : ~m2201_38 +# 2201| m2201_43(unknown) = Chi : total:m2201_38, partial:m2201_42 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2201_30 +# 2201| v2201_44(void) = ConditionalBranch : r2201_41 #-----| False -> Block 10 #-----| True -> Block 9 # 2201| Block 9 -# 2201| r2201_49(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_50(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_50 -# 2201| r2201_51(glval<unknown>) = FunctionAddress[operator*] : -# 2201| r2201_52(ClassWithDestructor &) = Call[operator*] : func:r2201_51, this:r0_15 -# 2201| m2201_53(unknown) = ^CallSideEffect : ~m2201_47 -# 2201| m2201_54(unknown) = Chi : total:m2201_47, partial:m2201_53 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2201_34 -# 2201| r2201_55(ClassWithDestructor) = Load[?] : &:r2201_52, ~m2201_54 -# 2201| m2201_56(ClassWithDestructor) = Store[y] : &:r2201_49, r2201_55 +# 2201| r2201_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_46 +# 2201| r2201_47(glval<unknown>) = FunctionAddress[operator*] : +# 2201| r2201_48(ClassWithDestructor &) = Call[operator*] : func:r2201_47, this:r0_15 +# 2201| m2201_49(unknown) = ^CallSideEffect : ~m2201_43 +# 2201| m2201_50(unknown) = Chi : total:m2201_43, partial:m2201_49 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2201_30 +# 2201| r2201_51(ClassWithDestructor) = Load[?] : &:r2201_48, ~m2201_50 +# 2201| m2201_52(ClassWithDestructor) = Store[y] : &:r2201_45, r2201_51 # 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[y] : # 2202| r2202_2(glval<unknown>) = FunctionAddress[set_x] : # 2202| r2202_3(char) = Constant[97] : # 2202| v2202_4(void) = Call[set_x] : func:r2202_2, this:r2202_1, 0:r2202_3 -# 2202| m2202_5(unknown) = ^CallSideEffect : ~m2201_54 -# 2202| m2202_6(unknown) = Chi : total:m2201_54, partial:m2202_5 -# 2202| v2202_7(void) = ^IndirectReadSideEffect[-1] : &:r2202_1, m2201_56 +# 2202| m2202_5(unknown) = ^CallSideEffect : ~m2201_50 +# 2202| m2202_6(unknown) = Chi : total:m2201_50, partial:m2202_5 +# 2202| v2202_7(void) = ^IndirectReadSideEffect[-1] : &:r2202_1, m2201_52 # 2202| m2202_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 -# 2202| m2202_9(ClassWithDestructor) = Chi : total:m2201_56, partial:m2202_8 -# 2201| r2201_57(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2201| v2201_59(void) = Call[~ClassWithDestructor] : func:r2201_58, this:r2201_57 -# 2201| m2201_60(unknown) = ^CallSideEffect : ~m2202_6 -# 2201| m2201_61(unknown) = Chi : total:m2202_6, partial:m2201_60 -# 2201| v2201_62(void) = ^IndirectReadSideEffect[-1] : &:r2201_57, m2202_9 -# 2201| m2201_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_57 -# 2201| m2201_64(ClassWithDestructor) = Chi : total:m2202_9, partial:m2201_63 -# 2201| r2201_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2201| r2201_66(glval<unknown>) = FunctionAddress[operator++] : -# 2201| r2201_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_66, this:r2201_65 -# 2201| m2201_68(unknown) = ^CallSideEffect : ~m2201_61 -# 2201| m2201_69(unknown) = Chi : total:m2201_61, partial:m2201_68 -# 2201| v2201_70(void) = ^IndirectReadSideEffect[-1] : &:r2201_65, m2201_34 -# 2201| m2201_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_65 -# 2201| m2201_72(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2201_34, partial:m2201_71 -# 2201| r2201_73(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_67 +# 2202| m2202_9(ClassWithDestructor) = Chi : total:m2201_52, partial:m2202_8 +# 2201| r2201_53(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2201| v2201_55(void) = Call[~ClassWithDestructor] : func:r2201_54, this:r2201_53 +# 2201| m2201_56(unknown) = ^CallSideEffect : ~m2202_6 +# 2201| m2201_57(unknown) = Chi : total:m2202_6, partial:m2201_56 +# 2201| v2201_58(void) = ^IndirectReadSideEffect[-1] : &:r2201_53, m2202_9 +# 2201| m2201_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_53 +# 2201| m2201_60(ClassWithDestructor) = Chi : total:m2202_9, partial:m2201_59 +# 2201| r2201_61(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2201| r2201_62(glval<unknown>) = FunctionAddress[operator++] : +# 2201| r2201_63(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_62, this:r2201_61 +# 2201| m2201_64(unknown) = ^CallSideEffect : ~m2201_57 +# 2201| m2201_65(unknown) = Chi : total:m2201_57, partial:m2201_64 +# 2201| v2201_66(void) = ^IndirectReadSideEffect[-1] : &:r2201_61, m2201_30 +# 2201| m2201_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_61 +# 2201| m2201_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2201_30, partial:m2201_67 +# 2201| r2201_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_63 #-----| Goto (back edge) -> Block 8 # 2204| Block 10 @@ -13513,8 +13501,8 @@ ir.cpp: # 2204| m2204_7(ClassWithDestructor) = Store[#temp2204:45] : &:r2204_4, r2204_6 # 2204| r2204_8(ClassWithDestructor) = Load[#temp2204:45] : &:r2204_4, m2204_7 # 2204| v2204_9(void) = Call[vector] : func:r2204_3, this:r2204_1, 0:r2204_8 -# 2204| m2204_10(unknown) = ^CallSideEffect : ~m2201_47 -# 2204| m2204_11(unknown) = Chi : total:m2201_47, partial:m2204_10 +# 2204| m2204_10(unknown) = ^CallSideEffect : ~m2201_43 +# 2204| m2204_11(unknown) = Chi : total:m2201_43, partial:m2204_10 # 2204| m2204_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 # 2204| m2204_13(vector<ClassWithDestructor>) = Chi : total:m2204_2, partial:m2204_12 # 2204| r2204_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : @@ -13528,70 +13516,66 @@ ir.cpp: #-----| r0_18(glval<vector<ClassWithDestructor>>) = Convert : r0_17 # 2204| r2204_21(glval<unknown>) = FunctionAddress[begin] : # 2204| r2204_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2204_21, this:r0_18 -# 2204| m2204_23(unknown) = ^CallSideEffect : ~m2204_11 -# 2204| m2204_24(unknown) = Chi : total:m2204_11, partial:m2204_23 #-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, m2204_13 -# 2204| m2204_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_18, r2204_22 -# 2204| r2204_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2204| r2204_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_27, m2204_17 -#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_28 +# 2204| m2204_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_18, r2204_22 +# 2204| r2204_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2204| r2204_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_25, m2204_17 +#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_26 #-----| r0_21(glval<vector<ClassWithDestructor>>) = Convert : r0_20 -# 2204| r2204_29(glval<unknown>) = FunctionAddress[end] : -# 2204| r2204_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_29, this:r0_21 -# 2204| m2204_31(unknown) = ^CallSideEffect : ~m2204_24 -# 2204| m2204_32(unknown) = Chi : total:m2204_24, partial:m2204_31 +# 2204| r2204_27(glval<unknown>) = FunctionAddress[end] : +# 2204| r2204_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_27, this:r0_21 #-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, m2204_13 -# 2204| m2204_33(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_26, r2204_30 +# 2204| m2204_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_24, r2204_28 #-----| Goto -> Block 11 # 2204| Block 11 -# 2204| m2204_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 10:m2204_25, from 14:m2204_88 -# 2204| m2204_35(unknown) = Phi : from 10:~m2204_32, from 14:~m2204_85 -# 2204| r2204_36(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_36 -# 2204| r2204_37(glval<unknown>) = FunctionAddress[operator!=] : +# 2204| m2204_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 10:m2204_23, from 14:m2204_84 +# 2204| m2204_31(unknown) = Phi : from 10:~m2204_11, from 14:~m2204_81 +# 2204| r2204_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_32 +# 2204| r2204_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| m0_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_24 -# 2204| r2204_38(glval<unknown>) = FunctionAddress[iterator] : -# 2204| r2204_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_39 +# 2204| r2204_34(glval<unknown>) = FunctionAddress[iterator] : +# 2204| r2204_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_35 #-----| r0_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_26 -# 2204| v2204_40(void) = Call[iterator] : func:r2204_38, this:r0_24, 0:r0_27 -# 2204| m2204_41(unknown) = ^CallSideEffect : ~m2204_35 -# 2204| m2204_42(unknown) = Chi : total:m2204_35, partial:m2204_41 -#-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m2204_33 -# 2204| m2204_43(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 -# 2204| m2204_44(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_25, partial:m2204_43 -#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, m2204_44 -# 2204| r2204_45(bool) = Call[operator!=] : func:r2204_37, this:r0_23, 0:r0_29 -# 2204| m2204_46(unknown) = ^CallSideEffect : ~m2204_42 -# 2204| m2204_47(unknown) = Chi : total:m2204_42, partial:m2204_46 -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, m2204_34 -# 2204| v2204_48(void) = ConditionalBranch : r2204_45 +# 2204| v2204_36(void) = Call[iterator] : func:r2204_34, this:r0_24, 0:r0_27 +# 2204| m2204_37(unknown) = ^CallSideEffect : ~m2204_31 +# 2204| m2204_38(unknown) = Chi : total:m2204_31, partial:m2204_37 +#-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m2204_29 +# 2204| m2204_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 +# 2204| m2204_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_25, partial:m2204_39 +#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, m2204_40 +# 2204| r2204_41(bool) = Call[operator!=] : func:r2204_33, this:r0_23, 0:r0_29 +# 2204| m2204_42(unknown) = ^CallSideEffect : ~m2204_38 +# 2204| m2204_43(unknown) = Chi : total:m2204_38, partial:m2204_42 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, m2204_30 +# 2204| v2204_44(void) = ConditionalBranch : r2204_41 #-----| False -> Block 15 #-----| True -> Block 12 # 2204| Block 12 -# 2204| r2204_49(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_50(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_50 -# 2204| r2204_51(glval<unknown>) = FunctionAddress[operator*] : -# 2204| r2204_52(ClassWithDestructor &) = Call[operator*] : func:r2204_51, this:r0_31 -# 2204| m2204_53(unknown) = ^CallSideEffect : ~m2204_47 -# 2204| m2204_54(unknown) = Chi : total:m2204_47, partial:m2204_53 -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, m2204_34 -# 2204| r2204_55(ClassWithDestructor) = Load[?] : &:r2204_52, ~m2204_54 -# 2204| m2204_56(ClassWithDestructor) = Store[y] : &:r2204_49, r2204_55 +# 2204| r2204_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_46 +# 2204| r2204_47(glval<unknown>) = FunctionAddress[operator*] : +# 2204| r2204_48(ClassWithDestructor &) = Call[operator*] : func:r2204_47, this:r0_31 +# 2204| m2204_49(unknown) = ^CallSideEffect : ~m2204_43 +# 2204| m2204_50(unknown) = Chi : total:m2204_43, partial:m2204_49 +#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, m2204_30 +# 2204| r2204_51(ClassWithDestructor) = Load[?] : &:r2204_48, ~m2204_50 +# 2204| m2204_52(ClassWithDestructor) = Store[y] : &:r2204_45, r2204_51 # 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[y] : # 2205| r2205_2(glval<unknown>) = FunctionAddress[set_x] : # 2205| r2205_3(char) = Constant[97] : # 2205| v2205_4(void) = Call[set_x] : func:r2205_2, this:r2205_1, 0:r2205_3 -# 2205| m2205_5(unknown) = ^CallSideEffect : ~m2204_54 -# 2205| m2205_6(unknown) = Chi : total:m2204_54, partial:m2205_5 -# 2205| v2205_7(void) = ^IndirectReadSideEffect[-1] : &:r2205_1, m2204_56 +# 2205| m2205_5(unknown) = ^CallSideEffect : ~m2204_50 +# 2205| m2205_6(unknown) = Chi : total:m2204_50, partial:m2205_5 +# 2205| v2205_7(void) = ^IndirectReadSideEffect[-1] : &:r2205_1, m2204_52 # 2205| m2205_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 -# 2205| m2205_9(ClassWithDestructor) = Chi : total:m2204_56, partial:m2205_8 +# 2205| m2205_9(ClassWithDestructor) = Chi : total:m2204_52, partial:m2205_8 # 2206| r2206_1(glval<ClassWithDestructor>) = VariableAddress[y] : # 2206| r2206_2(glval<unknown>) = FunctionAddress[get_x] : # 2206| r2206_3(char) = Call[get_x] : func:r2206_2, this:r2206_1 @@ -13609,50 +13593,50 @@ ir.cpp: # 2207| Block 13 # 2207| v2207_1(void) = NoOp : -# 2204| r2204_57(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_59(void) = Call[~ClassWithDestructor] : func:r2204_58, this:r2204_57 -# 2204| m2204_60(unknown) = ^CallSideEffect : ~m2206_5 -# 2204| m2204_61(unknown) = Chi : total:m2206_5, partial:m2204_60 -# 2204| v2204_62(void) = ^IndirectReadSideEffect[-1] : &:r2204_57, m2206_8 -# 2204| m2204_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_57 -# 2204| m2204_64(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_63 -# 2204| r2204_65(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_66(glval<unknown>) = FunctionAddress[~vector] : -# 2204| v2204_67(void) = Call[~vector] : func:r2204_66, this:r2204_65 -# 2204| m2204_68(unknown) = ^CallSideEffect : ~m2204_61 -# 2204| m2204_69(unknown) = Chi : total:m2204_61, partial:m2204_68 -# 2204| v2204_70(void) = ^IndirectReadSideEffect[-1] : &:r2204_65, m2204_13 -# 2204| m2204_71(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_65 -# 2204| m2204_72(vector<ClassWithDestructor>) = Chi : total:m2204_13, partial:m2204_71 +# 2204| r2204_53(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_55(void) = Call[~ClassWithDestructor] : func:r2204_54, this:r2204_53 +# 2204| m2204_56(unknown) = ^CallSideEffect : ~m2206_5 +# 2204| m2204_57(unknown) = Chi : total:m2206_5, partial:m2204_56 +# 2204| v2204_58(void) = ^IndirectReadSideEffect[-1] : &:r2204_53, m2206_8 +# 2204| m2204_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_53 +# 2204| m2204_60(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_59 +# 2204| r2204_61(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_62(glval<unknown>) = FunctionAddress[~vector] : +# 2204| v2204_63(void) = Call[~vector] : func:r2204_62, this:r2204_61 +# 2204| m2204_64(unknown) = ^CallSideEffect : ~m2204_57 +# 2204| m2204_65(unknown) = Chi : total:m2204_57, partial:m2204_64 +# 2204| v2204_66(void) = ^IndirectReadSideEffect[-1] : &:r2204_61, m2204_13 +# 2204| m2204_67(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_61 +# 2204| m2204_68(vector<ClassWithDestructor>) = Chi : total:m2204_13, partial:m2204_67 # 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[x] : # 2219| r2219_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : # 2219| v2219_3(void) = Call[~ClassWithDestructor] : func:r2219_2, this:r2219_1 -# 2219| m2219_4(unknown) = ^CallSideEffect : ~m2204_69 -# 2219| m2219_5(unknown) = Chi : total:m2204_69, partial:m2219_4 +# 2219| m2219_4(unknown) = ^CallSideEffect : ~m2204_65 +# 2219| m2219_5(unknown) = Chi : total:m2204_65, partial:m2219_4 # 2219| v2219_6(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2200_8 # 2219| m2219_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 # 2219| m2219_8(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_7 #-----| Goto -> Block 1 # 2204| Block 14 -# 2204| r2204_73(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_74(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_75(void) = Call[~ClassWithDestructor] : func:r2204_74, this:r2204_73 -# 2204| m2204_76(unknown) = ^CallSideEffect : ~m2206_5 -# 2204| m2204_77(unknown) = Chi : total:m2206_5, partial:m2204_76 -# 2204| v2204_78(void) = ^IndirectReadSideEffect[-1] : &:r2204_73, m2206_8 -# 2204| m2204_79(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_73 -# 2204| m2204_80(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_79 -# 2204| r2204_81(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2204| r2204_82(glval<unknown>) = FunctionAddress[operator++] : -# 2204| r2204_83(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_82, this:r2204_81 -# 2204| m2204_84(unknown) = ^CallSideEffect : ~m2204_77 -# 2204| m2204_85(unknown) = Chi : total:m2204_77, partial:m2204_84 -# 2204| v2204_86(void) = ^IndirectReadSideEffect[-1] : &:r2204_81, m2204_34 -# 2204| m2204_87(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_81 -# 2204| m2204_88(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2204_34, partial:m2204_87 -# 2204| r2204_89(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_83 +# 2204| r2204_69(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_70(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_71(void) = Call[~ClassWithDestructor] : func:r2204_70, this:r2204_69 +# 2204| m2204_72(unknown) = ^CallSideEffect : ~m2206_5 +# 2204| m2204_73(unknown) = Chi : total:m2206_5, partial:m2204_72 +# 2204| v2204_74(void) = ^IndirectReadSideEffect[-1] : &:r2204_69, m2206_8 +# 2204| m2204_75(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_69 +# 2204| m2204_76(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_75 +# 2204| r2204_77(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2204| r2204_78(glval<unknown>) = FunctionAddress[operator++] : +# 2204| r2204_79(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_78, this:r2204_77 +# 2204| m2204_80(unknown) = ^CallSideEffect : ~m2204_73 +# 2204| m2204_81(unknown) = Chi : total:m2204_73, partial:m2204_80 +# 2204| v2204_82(void) = ^IndirectReadSideEffect[-1] : &:r2204_77, m2204_30 +# 2204| m2204_83(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_77 +# 2204| m2204_84(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2204_30, partial:m2204_83 +# 2204| r2204_85(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_79 #-----| Goto (back edge) -> Block 11 # 2210| Block 15 @@ -13661,8 +13645,8 @@ ir.cpp: # 2210| r2210_3(glval<unknown>) = FunctionAddress[vector] : # 2210| r2210_4(int) = Constant[1] : # 2210| v2210_5(void) = Call[vector] : func:r2210_3, this:r2210_1, 0:r2210_4 -# 2210| m2210_6(unknown) = ^CallSideEffect : ~m2204_47 -# 2210| m2210_7(unknown) = Chi : total:m2204_47, partial:m2210_6 +# 2210| m2210_6(unknown) = ^CallSideEffect : ~m2204_43 +# 2210| m2210_7(unknown) = Chi : total:m2204_43, partial:m2210_6 # 2210| m2210_8(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 # 2210| m2210_9(vector<int>) = Chi : total:m2210_2, partial:m2210_8 # 2210| r2210_10(glval<vector<int> &>) = VariableAddress[(__range)] : @@ -13676,75 +13660,71 @@ ir.cpp: #-----| r0_34(glval<vector<int>>) = Convert : r0_33 # 2210| r2210_17(glval<unknown>) = FunctionAddress[begin] : # 2210| r2210_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2210_17, this:r0_34 -# 2210| m2210_19(unknown) = ^CallSideEffect : ~m2210_7 -# 2210| m2210_20(unknown) = Chi : total:m2210_7, partial:m2210_19 #-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, m2210_9 -# 2210| m2210_21(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_14, r2210_18 -# 2210| r2210_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 2210| r2210_23(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_24(vector<int> &) = Load[(__range)] : &:r2210_23, m2210_13 -#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_24 +# 2210| m2210_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_14, r2210_18 +# 2210| r2210_20(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 2210| r2210_21(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_22(vector<int> &) = Load[(__range)] : &:r2210_21, m2210_13 +#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_22 #-----| r0_37(glval<vector<int>>) = Convert : r0_36 -# 2210| r2210_25(glval<unknown>) = FunctionAddress[end] : -# 2210| r2210_26(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_25, this:r0_37 -# 2210| m2210_27(unknown) = ^CallSideEffect : ~m2210_20 -# 2210| m2210_28(unknown) = Chi : total:m2210_20, partial:m2210_27 +# 2210| r2210_23(glval<unknown>) = FunctionAddress[end] : +# 2210| r2210_24(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_23, this:r0_37 #-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, m2210_9 -# 2210| m2210_29(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_22, r2210_26 +# 2210| m2210_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_20, r2210_24 #-----| Goto -> Block 16 # 2210| Block 16 -# 2210| m2210_30(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 15:m2210_21, from 17:m2210_52 -# 2210| m2210_31(unknown) = Phi : from 15:~m2210_28, from 17:~m2210_49 -# 2210| r2210_32(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_32 -# 2210| r2210_33(glval<unknown>) = FunctionAddress[operator!=] : +# 2210| m2210_26(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 15:m2210_19, from 17:m2210_48 +# 2210| m2210_27(unknown) = Phi : from 15:~m2210_7, from 17:~m2210_45 +# 2210| r2210_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_28 +# 2210| r2210_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| m0_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_40 -# 2210| r2210_34(glval<unknown>) = FunctionAddress[iterator] : -# 2210| r2210_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_35 +# 2210| r2210_30(glval<unknown>) = FunctionAddress[iterator] : +# 2210| r2210_31(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_31 #-----| r0_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_42 -# 2210| v2210_36(void) = Call[iterator] : func:r2210_34, this:r0_40, 0:r0_43 -# 2210| m2210_37(unknown) = ^CallSideEffect : ~m2210_31 -# 2210| m2210_38(unknown) = Chi : total:m2210_31, partial:m2210_37 -#-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m2210_29 -# 2210| m2210_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 -# 2210| m2210_40(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_41, partial:m2210_39 -#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, m2210_40 -# 2210| r2210_41(bool) = Call[operator!=] : func:r2210_33, this:r0_39, 0:r0_45 -# 2210| m2210_42(unknown) = ^CallSideEffect : ~m2210_38 -# 2210| m2210_43(unknown) = Chi : total:m2210_38, partial:m2210_42 -#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2210_30 -# 2210| v2210_44(void) = ConditionalBranch : r2210_41 +# 2210| v2210_32(void) = Call[iterator] : func:r2210_30, this:r0_40, 0:r0_43 +# 2210| m2210_33(unknown) = ^CallSideEffect : ~m2210_27 +# 2210| m2210_34(unknown) = Chi : total:m2210_27, partial:m2210_33 +#-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m2210_25 +# 2210| m2210_35(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 +# 2210| m2210_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_41, partial:m2210_35 +#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, m2210_36 +# 2210| r2210_37(bool) = Call[operator!=] : func:r2210_29, this:r0_39, 0:r0_45 +# 2210| m2210_38(unknown) = ^CallSideEffect : ~m2210_34 +# 2210| m2210_39(unknown) = Chi : total:m2210_34, partial:m2210_38 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2210_26 +# 2210| v2210_40(void) = ConditionalBranch : r2210_37 #-----| False -> Block 20 #-----| True -> Block 18 # 2210| Block 17 -# 2210| r2210_45(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 2210| r2210_46(glval<unknown>) = FunctionAddress[operator++] : -# 2210| r2210_47(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_46, this:r2210_45 -# 2210| m2210_48(unknown) = ^CallSideEffect : ~m2210_59 -# 2210| m2210_49(unknown) = Chi : total:m2210_59, partial:m2210_48 -# 2210| v2210_50(void) = ^IndirectReadSideEffect[-1] : &:r2210_45, m2210_30 -# 2210| m2210_51(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_45 -# 2210| m2210_52(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m2210_30, partial:m2210_51 -# 2210| r2210_53(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_47 +# 2210| r2210_41(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2210| r2210_42(glval<unknown>) = FunctionAddress[operator++] : +# 2210| r2210_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_42, this:r2210_41 +# 2210| m2210_44(unknown) = ^CallSideEffect : ~m2210_55 +# 2210| m2210_45(unknown) = Chi : total:m2210_55, partial:m2210_44 +# 2210| v2210_46(void) = ^IndirectReadSideEffect[-1] : &:r2210_41, m2210_26 +# 2210| m2210_47(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_41 +# 2210| m2210_48(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m2210_26, partial:m2210_47 +# 2210| r2210_49(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_43 #-----| Goto (back edge) -> Block 16 # 2210| Block 18 -# 2210| r2210_54(glval<int>) = VariableAddress[y] : -# 2210| r2210_55(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_55 -# 2210| r2210_56(glval<unknown>) = FunctionAddress[operator*] : -# 2210| r2210_57(int &) = Call[operator*] : func:r2210_56, this:r0_47 -# 2210| m2210_58(unknown) = ^CallSideEffect : ~m2210_43 -# 2210| m2210_59(unknown) = Chi : total:m2210_43, partial:m2210_58 -#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, m2210_30 -# 2210| r2210_60(int) = Load[?] : &:r2210_57, ~m2210_59 -# 2210| m2210_61(int) = Store[y] : &:r2210_54, r2210_60 +# 2210| r2210_50(glval<int>) = VariableAddress[y] : +# 2210| r2210_51(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_51 +# 2210| r2210_52(glval<unknown>) = FunctionAddress[operator*] : +# 2210| r2210_53(int &) = Call[operator*] : func:r2210_52, this:r0_47 +# 2210| m2210_54(unknown) = ^CallSideEffect : ~m2210_39 +# 2210| m2210_55(unknown) = Chi : total:m2210_39, partial:m2210_54 +#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, m2210_26 +# 2210| r2210_56(int) = Load[?] : &:r2210_53, ~m2210_55 +# 2210| m2210_57(int) = Store[y] : &:r2210_50, r2210_56 # 2211| r2211_1(glval<int>) = VariableAddress[y] : -# 2211| r2211_2(int) = Load[y] : &:r2211_1, m2210_61 +# 2211| r2211_2(int) = Load[y] : &:r2211_1, m2210_57 # 2211| r2211_3(int) = Constant[1] : # 2211| r2211_4(bool) = CompareEQ : r2211_2, r2211_3 # 2211| v2211_5(void) = ConditionalBranch : r2211_4 @@ -13753,19 +13733,19 @@ ir.cpp: # 2212| Block 19 # 2212| v2212_1(void) = NoOp : -# 2210| r2210_62(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_63(glval<unknown>) = FunctionAddress[~vector] : -# 2210| v2210_64(void) = Call[~vector] : func:r2210_63, this:r2210_62 -# 2210| m2210_65(unknown) = ^CallSideEffect : ~m2210_59 -# 2210| m2210_66(unknown) = Chi : total:m2210_59, partial:m2210_65 -# 2210| v2210_67(void) = ^IndirectReadSideEffect[-1] : &:r2210_62, m2210_9 -# 2210| m2210_68(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_62 -# 2210| m2210_69(vector<int>) = Chi : total:m2210_9, partial:m2210_68 +# 2210| r2210_58(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_59(glval<unknown>) = FunctionAddress[~vector] : +# 2210| v2210_60(void) = Call[~vector] : func:r2210_59, this:r2210_58 +# 2210| m2210_61(unknown) = ^CallSideEffect : ~m2210_55 +# 2210| m2210_62(unknown) = Chi : total:m2210_55, partial:m2210_61 +# 2210| v2210_63(void) = ^IndirectReadSideEffect[-1] : &:r2210_58, m2210_9 +# 2210| m2210_64(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_58 +# 2210| m2210_65(vector<int>) = Chi : total:m2210_9, partial:m2210_64 # 2219| r2219_9(glval<ClassWithDestructor>) = VariableAddress[x] : # 2219| r2219_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : # 2219| v2219_11(void) = Call[~ClassWithDestructor] : func:r2219_10, this:r2219_9 -# 2219| m2219_12(unknown) = ^CallSideEffect : ~m2210_66 -# 2219| m2219_13(unknown) = Chi : total:m2210_66, partial:m2219_12 +# 2219| m2219_12(unknown) = ^CallSideEffect : ~m2210_62 +# 2219| m2219_13(unknown) = Chi : total:m2210_62, partial:m2219_12 # 2219| v2219_14(void) = ^IndirectReadSideEffect[-1] : &:r2219_9, m2200_8 # 2219| m2219_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_9 # 2219| m2219_16(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_15 @@ -13781,8 +13761,8 @@ ir.cpp: # 2215| m2215_7(ClassWithDestructor) = Store[#temp2215:45] : &:r2215_4, r2215_6 # 2215| r2215_8(ClassWithDestructor) = Load[#temp2215:45] : &:r2215_4, m2215_7 # 2215| v2215_9(void) = Call[vector] : func:r2215_3, this:r2215_1, 0:r2215_8 -# 2215| m2215_10(unknown) = ^CallSideEffect : ~m2210_43 -# 2215| m2215_11(unknown) = Chi : total:m2210_43, partial:m2215_10 +# 2215| m2215_10(unknown) = ^CallSideEffect : ~m2210_39 +# 2215| m2215_11(unknown) = Chi : total:m2210_39, partial:m2215_10 # 2215| m2215_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 # 2215| m2215_13(vector<ClassWithDestructor>) = Chi : total:m2215_2, partial:m2215_12 # 2215| r2215_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : @@ -13796,67 +13776,63 @@ ir.cpp: #-----| r0_50(glval<vector<ClassWithDestructor>>) = Convert : r0_49 # 2215| r2215_21(glval<unknown>) = FunctionAddress[begin] : # 2215| r2215_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_21, this:r0_50 -# 2215| m2215_23(unknown) = ^CallSideEffect : ~m2215_11 -# 2215| m2215_24(unknown) = Chi : total:m2215_11, partial:m2215_23 #-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, m2215_13 -# 2215| m2215_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_18, r2215_22 -# 2215| r2215_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2215| r2215_27(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_28(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_27, m2215_17 -#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_28 +# 2215| m2215_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_18, r2215_22 +# 2215| r2215_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2215| r2215_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_25, m2215_17 +#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_26 #-----| r0_53(glval<vector<ClassWithDestructor>>) = Convert : r0_52 -# 2215| r2215_29(glval<unknown>) = FunctionAddress[end] : -# 2215| r2215_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_29, this:r0_53 -# 2215| m2215_31(unknown) = ^CallSideEffect : ~m2215_24 -# 2215| m2215_32(unknown) = Chi : total:m2215_24, partial:m2215_31 +# 2215| r2215_27(glval<unknown>) = FunctionAddress[end] : +# 2215| r2215_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_27, this:r0_53 #-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, m2215_13 -# 2215| m2215_33(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_26, r2215_30 +# 2215| m2215_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_24, r2215_28 #-----| Goto -> Block 21 # 2215| Block 21 -# 2215| m2215_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 20:m2215_25, from 22:m2215_72 -# 2215| m2215_35(unknown) = Phi : from 20:~m2215_32, from 22:~m2215_69 -# 2215| r2215_36(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_36 -# 2215| r2215_37(glval<unknown>) = FunctionAddress[operator!=] : +# 2215| m2215_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 20:m2215_23, from 22:m2215_68 +# 2215| m2215_31(unknown) = Phi : from 20:~m2215_11, from 22:~m2215_65 +# 2215| r2215_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_32 +# 2215| r2215_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_56(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| m0_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_56 -# 2215| r2215_38(glval<unknown>) = FunctionAddress[iterator] : -# 2215| r2215_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_39 +# 2215| r2215_34(glval<unknown>) = FunctionAddress[iterator] : +# 2215| r2215_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_35 #-----| r0_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_58 -# 2215| v2215_40(void) = Call[iterator] : func:r2215_38, this:r0_56, 0:r0_59 -# 2215| m2215_41(unknown) = ^CallSideEffect : ~m2215_35 -# 2215| m2215_42(unknown) = Chi : total:m2215_35, partial:m2215_41 -#-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m2215_33 -# 2215| m2215_43(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 -# 2215| m2215_44(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_57, partial:m2215_43 -#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, m2215_44 -# 2215| r2215_45(bool) = Call[operator!=] : func:r2215_37, this:r0_55, 0:r0_61 -# 2215| m2215_46(unknown) = ^CallSideEffect : ~m2215_42 -# 2215| m2215_47(unknown) = Chi : total:m2215_42, partial:m2215_46 -#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, m2215_34 -# 2215| v2215_48(void) = ConditionalBranch : r2215_45 +# 2215| v2215_36(void) = Call[iterator] : func:r2215_34, this:r0_56, 0:r0_59 +# 2215| m2215_37(unknown) = ^CallSideEffect : ~m2215_31 +# 2215| m2215_38(unknown) = Chi : total:m2215_31, partial:m2215_37 +#-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m2215_29 +# 2215| m2215_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 +# 2215| m2215_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_57, partial:m2215_39 +#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, m2215_40 +# 2215| r2215_41(bool) = Call[operator!=] : func:r2215_33, this:r0_55, 0:r0_61 +# 2215| m2215_42(unknown) = ^CallSideEffect : ~m2215_38 +# 2215| m2215_43(unknown) = Chi : total:m2215_38, partial:m2215_42 +#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, m2215_30 +# 2215| v2215_44(void) = ConditionalBranch : r2215_41 #-----| False -> Block 23 #-----| True -> Block 22 # 2215| Block 22 -# 2215| r2215_49(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_50(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_50 -# 2215| r2215_51(glval<unknown>) = FunctionAddress[operator*] : -# 2215| r2215_52(ClassWithDestructor &) = Call[operator*] : func:r2215_51, this:r0_63 -# 2215| m2215_53(unknown) = ^CallSideEffect : ~m2215_47 -# 2215| m2215_54(unknown) = Chi : total:m2215_47, partial:m2215_53 -#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, m2215_34 -# 2215| r2215_55(ClassWithDestructor) = Load[?] : &:r2215_52, ~m2215_54 -# 2215| m2215_56(ClassWithDestructor) = Store[y] : &:r2215_49, r2215_55 +# 2215| r2215_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_46 +# 2215| r2215_47(glval<unknown>) = FunctionAddress[operator*] : +# 2215| r2215_48(ClassWithDestructor &) = Call[operator*] : func:r2215_47, this:r0_63 +# 2215| m2215_49(unknown) = ^CallSideEffect : ~m2215_43 +# 2215| m2215_50(unknown) = Chi : total:m2215_43, partial:m2215_49 +#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, m2215_30 +# 2215| r2215_51(ClassWithDestructor) = Load[?] : &:r2215_48, ~m2215_50 +# 2215| m2215_52(ClassWithDestructor) = Store[y] : &:r2215_45, r2215_51 # 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[z1] : # 2216| m2216_2(ClassWithDestructor) = Uninitialized[z1] : &:r2216_1 # 2216| r2216_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : # 2216| v2216_4(void) = Call[ClassWithDestructor] : func:r2216_3, this:r2216_1 -# 2216| m2216_5(unknown) = ^CallSideEffect : ~m2215_54 -# 2216| m2216_6(unknown) = Chi : total:m2215_54, partial:m2216_5 +# 2216| m2216_5(unknown) = ^CallSideEffect : ~m2215_50 +# 2216| m2216_6(unknown) = Chi : total:m2215_50, partial:m2216_5 # 2216| m2216_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 # 2216| m2216_8(ClassWithDestructor) = Chi : total:m2216_2, partial:m2216_7 # 2217| r2217_1(glval<ClassWithDestructor>) = VariableAddress[z2] : @@ -13883,23 +13859,23 @@ ir.cpp: # 2218| v2218_14(void) = ^IndirectReadSideEffect[-1] : &:r2218_9, m2216_8 # 2218| m2218_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_9 # 2218| m2218_16(ClassWithDestructor) = Chi : total:m2216_8, partial:m2218_15 -# 2215| r2215_57(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2215| v2215_59(void) = Call[~ClassWithDestructor] : func:r2215_58, this:r2215_57 -# 2215| m2215_60(unknown) = ^CallSideEffect : ~m2218_13 -# 2215| m2215_61(unknown) = Chi : total:m2218_13, partial:m2215_60 -# 2215| v2215_62(void) = ^IndirectReadSideEffect[-1] : &:r2215_57, m2215_56 -# 2215| m2215_63(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_57 -# 2215| m2215_64(ClassWithDestructor) = Chi : total:m2215_56, partial:m2215_63 -# 2215| r2215_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2215| r2215_66(glval<unknown>) = FunctionAddress[operator++] : -# 2215| r2215_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_66, this:r2215_65 -# 2215| m2215_68(unknown) = ^CallSideEffect : ~m2215_61 -# 2215| m2215_69(unknown) = Chi : total:m2215_61, partial:m2215_68 -# 2215| v2215_70(void) = ^IndirectReadSideEffect[-1] : &:r2215_65, m2215_34 -# 2215| m2215_71(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_65 -# 2215| m2215_72(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2215_34, partial:m2215_71 -# 2215| r2215_73(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_67 +# 2215| r2215_53(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_55(void) = Call[~ClassWithDestructor] : func:r2215_54, this:r2215_53 +# 2215| m2215_56(unknown) = ^CallSideEffect : ~m2218_13 +# 2215| m2215_57(unknown) = Chi : total:m2218_13, partial:m2215_56 +# 2215| v2215_58(void) = ^IndirectReadSideEffect[-1] : &:r2215_53, m2215_52 +# 2215| m2215_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_53 +# 2215| m2215_60(ClassWithDestructor) = Chi : total:m2215_52, partial:m2215_59 +# 2215| r2215_61(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_62(glval<unknown>) = FunctionAddress[operator++] : +# 2215| r2215_63(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_62, this:r2215_61 +# 2215| m2215_64(unknown) = ^CallSideEffect : ~m2215_57 +# 2215| m2215_65(unknown) = Chi : total:m2215_57, partial:m2215_64 +# 2215| v2215_66(void) = ^IndirectReadSideEffect[-1] : &:r2215_61, m2215_30 +# 2215| m2215_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_61 +# 2215| m2215_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2215_30, partial:m2215_67 +# 2215| r2215_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_63 #-----| Goto (back edge) -> Block 21 # 2219| Block 23 @@ -13907,8 +13883,8 @@ ir.cpp: # 2219| r2219_18(glval<ClassWithDestructor>) = VariableAddress[x] : # 2219| r2219_19(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : # 2219| v2219_20(void) = Call[~ClassWithDestructor] : func:r2219_19, this:r2219_18 -# 2219| m2219_21(unknown) = ^CallSideEffect : ~m2215_47 -# 2219| m2219_22(unknown) = Chi : total:m2215_47, partial:m2219_21 +# 2219| m2219_21(unknown) = ^CallSideEffect : ~m2215_43 +# 2219| m2219_22(unknown) = Chi : total:m2215_43, partial:m2219_21 # 2219| v2219_23(void) = ^IndirectReadSideEffect[-1] : &:r2219_18, m2200_8 # 2219| m2219_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_18 # 2219| m2219_25(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_24 @@ -14566,76 +14542,72 @@ ir.cpp: #-----| r0_2(glval<vector<String>>) = Convert : r0_1 # 2293| r2293_27(glval<unknown>) = FunctionAddress[begin] : # 2293| r2293_28(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2293_27, this:r0_2 -# 2293| m2293_29(unknown) = ^CallSideEffect : ~m2293_19 -# 2293| m2293_30(unknown) = Chi : total:m2293_19, partial:m2293_29 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2293_21 -# 2293| m2293_31(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_24, r2293_28 -# 2293| r2293_32(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -# 2293| r2293_33(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_34(vector<String> &&) = Load[(__range)] : &:r2293_33, m2293_23 -#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_34 +# 2293| m2293_29(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_24, r2293_28 +# 2293| r2293_30(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +# 2293| r2293_31(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_32(vector<String> &&) = Load[(__range)] : &:r2293_31, m2293_23 +#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_32 #-----| r0_5(glval<vector<String>>) = Convert : r0_4 -# 2293| r2293_35(glval<unknown>) = FunctionAddress[end] : -# 2293| r2293_36(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_35, this:r0_5 -# 2293| m2293_37(unknown) = ^CallSideEffect : ~m2293_30 -# 2293| m2293_38(unknown) = Chi : total:m2293_30, partial:m2293_37 +# 2293| r2293_33(glval<unknown>) = FunctionAddress[end] : +# 2293| r2293_34(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_33, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2293_21 -# 2293| m2293_39(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_32, r2293_36 +# 2293| m2293_35(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_30, r2293_34 #-----| Goto -> Block 4 # 2293| Block 4 -# 2293| m2293_40(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Phi : from 3:m2293_31, from 5:m2293_87 -# 2293| m2293_41(unknown) = Phi : from 3:~m2293_38, from 5:~m2293_84 -# 2293| r2293_42(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_42 -# 2293| r2293_43(glval<unknown>) = FunctionAddress[operator!=] : +# 2293| m2293_36(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Phi : from 3:m2293_29, from 5:m2293_83 +# 2293| m2293_37(unknown) = Phi : from 3:~m2293_19, from 5:~m2293_80 +# 2293| r2293_38(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_38 +# 2293| r2293_39(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2293| r2293_44(glval<unknown>) = FunctionAddress[iterator] : -# 2293| r2293_45(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_45 +# 2293| r2293_40(glval<unknown>) = FunctionAddress[iterator] : +# 2293| r2293_41(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_41 #-----| r0_11(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = CopyValue : r0_10 -# 2293| v2293_46(void) = Call[iterator] : func:r2293_44, this:r0_8, 0:r0_11 -# 2293| m2293_47(unknown) = ^CallSideEffect : ~m2293_41 -# 2293| m2293_48(unknown) = Chi : total:m2293_41, partial:m2293_47 -#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2293_39 -# 2293| m2293_49(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2293| m2293_50(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m0_9, partial:m2293_49 -#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, m2293_50 -# 2293| r2293_51(bool) = Call[operator!=] : func:r2293_43, this:r0_7, 0:r0_13 -# 2293| m2293_52(unknown) = ^CallSideEffect : ~m2293_48 -# 2293| m2293_53(unknown) = Chi : total:m2293_48, partial:m2293_52 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2293_40 -# 2293| v2293_54(void) = ConditionalBranch : r2293_51 +# 2293| v2293_42(void) = Call[iterator] : func:r2293_40, this:r0_8, 0:r0_11 +# 2293| m2293_43(unknown) = ^CallSideEffect : ~m2293_37 +# 2293| m2293_44(unknown) = Chi : total:m2293_37, partial:m2293_43 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2293_35 +# 2293| m2293_45(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2293| m2293_46(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m0_9, partial:m2293_45 +#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, m2293_46 +# 2293| r2293_47(bool) = Call[operator!=] : func:r2293_39, this:r0_7, 0:r0_13 +# 2293| m2293_48(unknown) = ^CallSideEffect : ~m2293_44 +# 2293| m2293_49(unknown) = Chi : total:m2293_44, partial:m2293_48 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2293_36 +# 2293| v2293_50(void) = ConditionalBranch : r2293_47 #-----| False -> Block 6 #-----| True -> Block 5 # 2293| Block 5 -# 2293| r2293_55(glval<String>) = VariableAddress[s] : -# 2293| m2293_56(String) = Uninitialized[s] : &:r2293_55 -# 2293| r2293_57(glval<unknown>) = FunctionAddress[String] : -# 2293| r2293_58(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_58 -# 2293| r2293_59(glval<unknown>) = FunctionAddress[operator*] : -# 2293| r2293_60(String &) = Call[operator*] : func:r2293_59, this:r0_15 -# 2293| m2293_61(unknown) = ^CallSideEffect : ~m2293_53 -# 2293| m2293_62(unknown) = Chi : total:m2293_53, partial:m2293_61 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2293_40 -# 2293| r2293_63(glval<String>) = CopyValue : r2293_60 -# 2293| r2293_64(glval<String>) = Convert : r2293_63 -# 2293| r2293_65(String &) = CopyValue : r2293_64 -# 2293| v2293_66(void) = Call[String] : func:r2293_57, this:r2293_55, 0:r2293_65 -# 2293| m2293_67(unknown) = ^CallSideEffect : ~m2293_62 -# 2293| m2293_68(unknown) = Chi : total:m2293_62, partial:m2293_67 -# 2293| v2293_69(void) = ^BufferReadSideEffect[0] : &:r2293_65, ~m2293_68 -# 2293| m2293_70(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_55 -# 2293| m2293_71(String) = Chi : total:m2293_56, partial:m2293_70 +# 2293| r2293_51(glval<String>) = VariableAddress[s] : +# 2293| m2293_52(String) = Uninitialized[s] : &:r2293_51 +# 2293| r2293_53(glval<unknown>) = FunctionAddress[String] : +# 2293| r2293_54(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_54 +# 2293| r2293_55(glval<unknown>) = FunctionAddress[operator*] : +# 2293| r2293_56(String &) = Call[operator*] : func:r2293_55, this:r0_15 +# 2293| m2293_57(unknown) = ^CallSideEffect : ~m2293_49 +# 2293| m2293_58(unknown) = Chi : total:m2293_49, partial:m2293_57 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2293_36 +# 2293| r2293_59(glval<String>) = CopyValue : r2293_56 +# 2293| r2293_60(glval<String>) = Convert : r2293_59 +# 2293| r2293_61(String &) = CopyValue : r2293_60 +# 2293| v2293_62(void) = Call[String] : func:r2293_53, this:r2293_51, 0:r2293_61 +# 2293| m2293_63(unknown) = ^CallSideEffect : ~m2293_58 +# 2293| m2293_64(unknown) = Chi : total:m2293_58, partial:m2293_63 +# 2293| v2293_65(void) = ^BufferReadSideEffect[0] : &:r2293_61, ~m2293_64 +# 2293| m2293_66(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_51 +# 2293| m2293_67(String) = Chi : total:m2293_52, partial:m2293_66 # 2294| r2294_1(glval<String>) = VariableAddress[s2] : # 2294| m2294_2(String) = Uninitialized[s2] : &:r2294_1 # 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : # 2294| v2294_4(void) = Call[String] : func:r2294_3, this:r2294_1 -# 2294| m2294_5(unknown) = ^CallSideEffect : ~m2293_68 -# 2294| m2294_6(unknown) = Chi : total:m2293_68, partial:m2294_5 +# 2294| m2294_5(unknown) = ^CallSideEffect : ~m2293_64 +# 2294| m2294_6(unknown) = Chi : total:m2293_64, partial:m2294_5 # 2294| m2294_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 # 2294| m2294_8(String) = Chi : total:m2294_2, partial:m2294_7 # 2295| r2295_1(glval<String>) = VariableAddress[s2] : @@ -14646,23 +14618,23 @@ ir.cpp: # 2295| v2295_6(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, m2294_8 # 2295| m2295_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 # 2295| m2295_8(String) = Chi : total:m2294_8, partial:m2295_7 -# 2293| r2293_72(glval<String>) = VariableAddress[s] : -# 2293| r2293_73(glval<unknown>) = FunctionAddress[~String] : -# 2293| v2293_74(void) = Call[~String] : func:r2293_73, this:r2293_72 -# 2293| m2293_75(unknown) = ^CallSideEffect : ~m2295_5 -# 2293| m2293_76(unknown) = Chi : total:m2295_5, partial:m2293_75 -# 2293| v2293_77(void) = ^IndirectReadSideEffect[-1] : &:r2293_72, m2293_71 -# 2293| m2293_78(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_72 -# 2293| m2293_79(String) = Chi : total:m2293_71, partial:m2293_78 -# 2293| r2293_80(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -# 2293| r2293_81(glval<unknown>) = FunctionAddress[operator++] : -# 2293| r2293_82(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_81, this:r2293_80 -# 2293| m2293_83(unknown) = ^CallSideEffect : ~m2293_76 -# 2293| m2293_84(unknown) = Chi : total:m2293_76, partial:m2293_83 -# 2293| v2293_85(void) = ^IndirectReadSideEffect[-1] : &:r2293_80, m2293_40 -# 2293| m2293_86(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_80 -# 2293| m2293_87(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m2293_40, partial:m2293_86 -# 2293| r2293_88(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_82 +# 2293| r2293_68(glval<String>) = VariableAddress[s] : +# 2293| r2293_69(glval<unknown>) = FunctionAddress[~String] : +# 2293| v2293_70(void) = Call[~String] : func:r2293_69, this:r2293_68 +# 2293| m2293_71(unknown) = ^CallSideEffect : ~m2295_5 +# 2293| m2293_72(unknown) = Chi : total:m2295_5, partial:m2293_71 +# 2293| v2293_73(void) = ^IndirectReadSideEffect[-1] : &:r2293_68, m2293_67 +# 2293| m2293_74(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_68 +# 2293| m2293_75(String) = Chi : total:m2293_67, partial:m2293_74 +# 2293| r2293_76(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2293| r2293_77(glval<unknown>) = FunctionAddress[operator++] : +# 2293| r2293_78(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_77, this:r2293_76 +# 2293| m2293_79(unknown) = ^CallSideEffect : ~m2293_72 +# 2293| m2293_80(unknown) = Chi : total:m2293_72, partial:m2293_79 +# 2293| v2293_81(void) = ^IndirectReadSideEffect[-1] : &:r2293_76, m2293_36 +# 2293| m2293_82(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_76 +# 2293| m2293_83(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m2293_36, partial:m2293_82 +# 2293| r2293_84(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_78 #-----| Goto (back edge) -> Block 4 # 2297| Block 6 @@ -14672,8 +14644,8 @@ ir.cpp: # 2297| r2297_4(glval<char[6]>) = StringConstant["hello"] : # 2297| r2297_5(char *) = Convert : r2297_4 # 2297| v2297_6(void) = Call[String] : func:r2297_3, this:r2297_1, 0:r2297_5 -# 2297| m2297_7(unknown) = ^CallSideEffect : ~m2293_53 -# 2297| m2297_8(unknown) = Chi : total:m2293_53, partial:m2297_7 +# 2297| m2297_7(unknown) = ^CallSideEffect : ~m2293_49 +# 2297| m2297_8(unknown) = Chi : total:m2293_49, partial:m2297_7 # 2297| v2297_9(void) = ^BufferReadSideEffect[0] : &:r2297_5, ~m2287_3 # 2297| m2297_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 # 2297| m2297_11(String) = Chi : total:m2297_2, partial:m2297_10 diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index aa2496f19f29..ad4cfdb1e7cd 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -1348,8 +1348,8 @@ | file://:0:0:0:0 | Load | m745_6 | | file://:0:0:0:0 | Load | m754_6 | | file://:0:0:0:0 | Load | m763_6 | -| file://:0:0:0:0 | Load | m1127_33 | -| file://:0:0:0:0 | Load | m1133_33 | +| file://:0:0:0:0 | Load | m1127_29 | +| file://:0:0:0:0 | Load | m1133_29 | | file://:0:0:0:0 | Load | m1515_4 | | file://:0:0:0:0 | Load | m1515_4 | | file://:0:0:0:0 | Load | m1734_9 | @@ -1358,11 +1358,11 @@ | file://:0:0:0:0 | Load | m1883_6 | | file://:0:0:0:0 | Load | m1888_6 | | file://:0:0:0:0 | Load | m2062_6 | -| file://:0:0:0:0 | Load | m2201_44 | -| file://:0:0:0:0 | Load | m2204_44 | -| file://:0:0:0:0 | Load | m2210_40 | -| file://:0:0:0:0 | Load | m2215_44 | -| file://:0:0:0:0 | Load | m2293_50 | +| file://:0:0:0:0 | Load | m2201_40 | +| file://:0:0:0:0 | Load | m2204_40 | +| file://:0:0:0:0 | Load | m2210_36 | +| file://:0:0:0:0 | Load | m2215_40 | +| file://:0:0:0:0 | Load | m2293_46 | | file://:0:0:0:0 | Load | ~m0_4 | | file://:0:0:0:0 | Load | ~m1493_6 | | file://:0:0:0:0 | Load | ~m1761_10 | @@ -1388,30 +1388,30 @@ | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_14 | -| file://:0:0:0:0 | SideEffect | m1127_23 | -| file://:0:0:0:0 | SideEffect | m1127_23 | -| file://:0:0:0:0 | SideEffect | m1133_23 | -| file://:0:0:0:0 | SideEffect | m1133_23 | +| file://:0:0:0:0 | SideEffect | m1127_19 | +| file://:0:0:0:0 | SideEffect | m1127_19 | +| file://:0:0:0:0 | SideEffect | m1133_19 | +| file://:0:0:0:0 | SideEffect | m1133_19 | | file://:0:0:0:0 | SideEffect | m2201_13 | | file://:0:0:0:0 | SideEffect | m2201_13 | -| file://:0:0:0:0 | SideEffect | m2201_34 | -| file://:0:0:0:0 | SideEffect | m2201_34 | +| file://:0:0:0:0 | SideEffect | m2201_30 | +| file://:0:0:0:0 | SideEffect | m2201_30 | | file://:0:0:0:0 | SideEffect | m2204_13 | | file://:0:0:0:0 | SideEffect | m2204_13 | -| file://:0:0:0:0 | SideEffect | m2204_34 | -| file://:0:0:0:0 | SideEffect | m2204_34 | +| file://:0:0:0:0 | SideEffect | m2204_30 | +| file://:0:0:0:0 | SideEffect | m2204_30 | | file://:0:0:0:0 | SideEffect | m2210_9 | | file://:0:0:0:0 | SideEffect | m2210_9 | -| file://:0:0:0:0 | SideEffect | m2210_30 | -| file://:0:0:0:0 | SideEffect | m2210_30 | +| file://:0:0:0:0 | SideEffect | m2210_26 | +| file://:0:0:0:0 | SideEffect | m2210_26 | | file://:0:0:0:0 | SideEffect | m2215_13 | | file://:0:0:0:0 | SideEffect | m2215_13 | -| file://:0:0:0:0 | SideEffect | m2215_34 | -| file://:0:0:0:0 | SideEffect | m2215_34 | +| file://:0:0:0:0 | SideEffect | m2215_30 | +| file://:0:0:0:0 | SideEffect | m2215_30 | | file://:0:0:0:0 | SideEffect | m2293_21 | | file://:0:0:0:0 | SideEffect | m2293_21 | -| file://:0:0:0:0 | SideEffect | m2293_40 | -| file://:0:0:0:0 | SideEffect | m2293_40 | +| file://:0:0:0:0 | SideEffect | m2293_36 | +| file://:0:0:0:0 | SideEffect | m2293_36 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | @@ -1425,19 +1425,19 @@ | file://:0:0:0:0 | SideEffect | ~m1126_8 | | file://:0:0:0:0 | SideEffect | ~m1126_8 | | file://:0:0:0:0 | SideEffect | ~m1126_8 | -| file://:0:0:0:0 | SideEffect | ~m1127_22 | -| file://:0:0:0:0 | SideEffect | ~m1133_22 | +| file://:0:0:0:0 | SideEffect | ~m1127_18 | +| file://:0:0:0:0 | SideEffect | ~m1133_18 | | file://:0:0:0:0 | SideEffect | ~m1289_4 | | file://:0:0:0:0 | SideEffect | ~m1496_6 | | file://:0:0:0:0 | SideEffect | ~m1888_8 | -| file://:0:0:0:0 | SideEffect | ~m2201_33 | -| file://:0:0:0:0 | SideEffect | ~m2204_33 | -| file://:0:0:0:0 | SideEffect | ~m2210_29 | -| file://:0:0:0:0 | SideEffect | ~m2215_33 | +| file://:0:0:0:0 | SideEffect | ~m2201_29 | +| file://:0:0:0:0 | SideEffect | ~m2204_29 | +| file://:0:0:0:0 | SideEffect | ~m2210_25 | +| file://:0:0:0:0 | SideEffect | ~m2215_29 | | file://:0:0:0:0 | SideEffect | ~m2222_6 | | file://:0:0:0:0 | SideEffect | ~m2226_4 | | file://:0:0:0:0 | SideEffect | ~m2233_6 | -| file://:0:0:0:0 | SideEffect | ~m2293_39 | +| file://:0:0:0:0 | SideEffect | ~m2293_35 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | @@ -6221,151 +6221,139 @@ | ir.cpp:1126:44:1126:44 | SideEffect | m1126_8 | | ir.cpp:1127:5:1127:5 | Address | &:r1127_1 | | ir.cpp:1127:5:1127:5 | Address | &:r1127_7 | -| ir.cpp:1127:5:1127:5 | Address | &:r1127_15 | -| ir.cpp:1127:14:1127:14 | Address | &:r1127_38 | +| ir.cpp:1127:5:1127:5 | Address | &:r1127_13 | +| ir.cpp:1127:14:1127:14 | Address | &:r1127_34 | | ir.cpp:1127:18:1127:18 | Address | &:r1127_2 | | ir.cpp:1127:18:1127:18 | Address | &:r1127_8 | -| ir.cpp:1127:18:1127:18 | Address | &:r1127_16 | -| ir.cpp:1127:18:1127:18 | Address | &:r1127_41 | -| ir.cpp:1127:18:1127:18 | Address | &:r1127_47 | -| ir.cpp:1127:18:1127:18 | Address | &:r1127_47 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_14 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_37 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_43 | +| ir.cpp:1127:18:1127:18 | Address | &:r1127_43 | | ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_1 | | ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_3 | | ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_5 | | ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_6 | | ir.cpp:1127:18:1127:18 | Arg(this) | this:r0_13 | -| ir.cpp:1127:18:1127:18 | Arg(this) | this:r1127_47 | +| ir.cpp:1127:18:1127:18 | Arg(this) | this:r1127_43 | | ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_10 | -| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_18 | -| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_26 | -| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_27 | -| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_40 | -| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_48 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_12 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_20 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_30 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_32 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_35 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_42 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_50 | -| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_53 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_16 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_22 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_23 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_36 | +| ir.cpp:1127:18:1127:18 | CallTarget | func:r1127_44 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_26 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_28 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_31 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_38 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_46 | +| ir.cpp:1127:18:1127:18 | ChiPartial | partial:m1127_49 | | ir.cpp:1127:18:1127:18 | ChiTotal | total:m0_7 | -| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1126_4 | -| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_13 | -| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_23 | -| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_24 | -| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_31 | -| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_36 | -| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_43 | -| ir.cpp:1127:18:1127:18 | Condition | r1127_34 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_19 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_20 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_27 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_32 | +| ir.cpp:1127:18:1127:18 | ChiTotal | total:m1127_39 | +| ir.cpp:1127:18:1127:18 | Condition | r1127_30 | | ir.cpp:1127:18:1127:18 | Load | m1126_6 | | ir.cpp:1127:18:1127:18 | Load | m1127_6 | | ir.cpp:1127:18:1127:18 | Load | m1127_6 | -| ir.cpp:1127:18:1127:18 | Phi | from 0:m1127_14 | -| ir.cpp:1127:18:1127:18 | Phi | from 0:~m1127_21 | -| ir.cpp:1127:18:1127:18 | Phi | from 4:m1127_54 | -| ir.cpp:1127:18:1127:18 | Phi | from 4:~m1127_51 | -| ir.cpp:1127:18:1127:18 | SideEffect | m1127_23 | -| ir.cpp:1127:18:1127:18 | SideEffect | ~m1126_4 | -| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_13 | -| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_24 | -| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_31 | -| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_36 | -| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_43 | +| ir.cpp:1127:18:1127:18 | Phi | from 0:m1127_12 | +| ir.cpp:1127:18:1127:18 | Phi | from 0:~m1126_4 | +| ir.cpp:1127:18:1127:18 | Phi | from 4:m1127_50 | +| ir.cpp:1127:18:1127:18 | Phi | from 4:~m1127_47 | +| ir.cpp:1127:18:1127:18 | SideEffect | m1127_19 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_20 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_27 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_32 | +| ir.cpp:1127:18:1127:18 | SideEffect | ~m1127_39 | | ir.cpp:1127:18:1127:18 | StoreValue | r1127_5 | | ir.cpp:1127:18:1127:18 | StoreValue | r1127_11 | -| ir.cpp:1127:18:1127:18 | StoreValue | r1127_19 | +| ir.cpp:1127:18:1127:18 | StoreValue | r1127_17 | | ir.cpp:1127:18:1127:18 | Unary | r1127_3 | | ir.cpp:1127:18:1127:18 | Unary | r1127_4 | | ir.cpp:1127:18:1127:18 | Unary | r1127_9 | -| ir.cpp:1127:18:1127:18 | Unary | r1127_17 | -| ir.cpp:1127:18:1127:18 | Unary | r1127_25 | -| ir.cpp:1127:18:1127:18 | Unary | r1127_28 | -| ir.cpp:1127:18:1127:18 | Unary | r1127_39 | -| ir.cpp:1127:18:1127:18 | Unary | r1127_49 | -| ir.cpp:1127:18:1127:19 | Load | ~m1127_43 | -| ir.cpp:1127:18:1127:19 | StoreValue | r1127_44 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_15 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_21 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_24 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_35 | +| ir.cpp:1127:18:1127:18 | Unary | r1127_45 | +| ir.cpp:1127:18:1127:19 | Load | ~m1127_39 | +| ir.cpp:1127:18:1127:19 | StoreValue | r1127_40 | | ir.cpp:1128:13:1128:13 | Address | &:r1128_1 | | ir.cpp:1128:13:1128:13 | Left | r1128_2 | -| ir.cpp:1128:13:1128:13 | Load | m1127_45 | +| ir.cpp:1128:13:1128:13 | Load | m1127_41 | | ir.cpp:1128:13:1128:17 | Condition | r1128_4 | | ir.cpp:1128:17:1128:17 | Right | r1128_3 | | ir.cpp:1133:5:1133:5 | Address | &:r1133_1 | | ir.cpp:1133:5:1133:5 | Address | &:r1133_7 | -| ir.cpp:1133:5:1133:5 | Address | &:r1133_15 | -| ir.cpp:1133:21:1133:21 | Address | &:r1133_47 | +| ir.cpp:1133:5:1133:5 | Address | &:r1133_13 | +| ir.cpp:1133:21:1133:21 | Address | &:r1133_43 | | ir.cpp:1133:25:1133:25 | Address | &:r1133_2 | | ir.cpp:1133:25:1133:25 | Address | &:r1133_8 | -| ir.cpp:1133:25:1133:25 | Address | &:r1133_16 | -| ir.cpp:1133:25:1133:25 | Address | &:r1133_38 | -| ir.cpp:1133:25:1133:25 | Address | &:r1133_38 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_14 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_34 | +| ir.cpp:1133:25:1133:25 | Address | &:r1133_34 | | ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_15 | | ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_17 | | ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_19 | | ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_20 | | ir.cpp:1133:25:1133:25 | Arg(this) | this:r0_27 | -| ir.cpp:1133:25:1133:25 | Arg(this) | this:r1133_38 | +| ir.cpp:1133:25:1133:25 | Arg(this) | this:r1133_34 | | ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_10 | -| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_18 | -| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_26 | -| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_27 | -| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_39 | -| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_49 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_12 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_20 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_30 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_32 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_35 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_41 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_44 | -| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_51 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_16 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_22 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_23 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_35 | +| ir.cpp:1133:25:1133:25 | CallTarget | func:r1133_45 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_26 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_28 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_31 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_37 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_40 | +| ir.cpp:1133:25:1133:25 | ChiPartial | partial:m1133_47 | | ir.cpp:1133:25:1133:25 | ChiTotal | total:m0_21 | -| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1127_36 | -| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_13 | -| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_23 | -| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_24 | -| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_31 | -| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_36 | -| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_52 | -| ir.cpp:1133:25:1133:25 | Condition | r1133_34 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_19 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_20 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_27 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_32 | +| ir.cpp:1133:25:1133:25 | ChiTotal | total:m1133_48 | +| ir.cpp:1133:25:1133:25 | Condition | r1133_30 | | ir.cpp:1133:25:1133:25 | Load | m1126_6 | | ir.cpp:1133:25:1133:25 | Load | m1133_6 | | ir.cpp:1133:25:1133:25 | Load | m1133_6 | -| ir.cpp:1133:25:1133:25 | Phi | from 5:m1133_14 | -| ir.cpp:1133:25:1133:25 | Phi | from 5:~m1133_21 | -| ir.cpp:1133:25:1133:25 | Phi | from 7:m1133_45 | -| ir.cpp:1133:25:1133:25 | Phi | from 7:~m1133_42 | -| ir.cpp:1133:25:1133:25 | SideEffect | m1133_23 | -| ir.cpp:1133:25:1133:25 | SideEffect | ~m1127_36 | -| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_13 | -| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_24 | -| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_31 | -| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_36 | -| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_52 | +| ir.cpp:1133:25:1133:25 | Phi | from 5:m1133_12 | +| ir.cpp:1133:25:1133:25 | Phi | from 5:~m1127_32 | +| ir.cpp:1133:25:1133:25 | Phi | from 7:m1133_41 | +| ir.cpp:1133:25:1133:25 | Phi | from 7:~m1133_38 | +| ir.cpp:1133:25:1133:25 | SideEffect | m1133_19 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_20 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_27 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_32 | +| ir.cpp:1133:25:1133:25 | SideEffect | ~m1133_48 | | ir.cpp:1133:25:1133:25 | StoreValue | r1133_5 | | ir.cpp:1133:25:1133:25 | StoreValue | r1133_11 | -| ir.cpp:1133:25:1133:25 | StoreValue | r1133_19 | +| ir.cpp:1133:25:1133:25 | StoreValue | r1133_17 | | ir.cpp:1133:25:1133:25 | Unary | r1133_3 | | ir.cpp:1133:25:1133:25 | Unary | r1133_4 | | ir.cpp:1133:25:1133:25 | Unary | r1133_9 | -| ir.cpp:1133:25:1133:25 | Unary | r1133_17 | -| ir.cpp:1133:25:1133:25 | Unary | r1133_25 | -| ir.cpp:1133:25:1133:25 | Unary | r1133_28 | -| ir.cpp:1133:25:1133:25 | Unary | r1133_40 | -| ir.cpp:1133:25:1133:25 | Unary | r1133_48 | -| ir.cpp:1133:25:1133:25 | Unary | r1133_50 | -| ir.cpp:1133:25:1133:26 | StoreValue | r1133_55 | -| ir.cpp:1133:25:1133:26 | Unary | r1133_53 | -| ir.cpp:1133:25:1133:26 | Unary | r1133_54 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_15 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_21 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_24 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_36 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_44 | +| ir.cpp:1133:25:1133:25 | Unary | r1133_46 | +| ir.cpp:1133:25:1133:26 | StoreValue | r1133_51 | +| ir.cpp:1133:25:1133:26 | Unary | r1133_49 | +| ir.cpp:1133:25:1133:26 | Unary | r1133_50 | | ir.cpp:1134:13:1134:13 | Address | &:r1134_1 | | ir.cpp:1134:13:1134:13 | Address | &:r1134_2 | | ir.cpp:1134:13:1134:13 | Left | r1134_3 | -| ir.cpp:1134:13:1134:13 | Load | m1133_56 | -| ir.cpp:1134:13:1134:13 | Load | ~m1133_52 | +| ir.cpp:1134:13:1134:13 | Load | m1133_52 | +| ir.cpp:1134:13:1134:13 | Load | ~m1133_48 | | ir.cpp:1134:13:1134:17 | Condition | r1134_5 | | ir.cpp:1134:17:1134:17 | Right | r1134_4 | -| ir.cpp:1137:5:1137:5 | Phi | from 6:~m1133_36 | -| ir.cpp:1137:5:1137:5 | Phi | from 9:~m1133_52 | +| ir.cpp:1137:5:1137:5 | Phi | from 6:~m1133_32 | +| ir.cpp:1137:5:1137:5 | Phi | from 9:~m1133_48 | | ir.cpp:1157:5:1157:11 | Address | &:r1157_7 | | ir.cpp:1157:5:1157:11 | ChiPartial | partial:m1157_3 | | ir.cpp:1157:5:1157:11 | ChiTotal | total:m1157_2 | @@ -11063,7 +11051,7 @@ | ir.cpp:2200:25:2200:25 | SideEffect | ~m2198_1 | | ir.cpp:2201:5:2201:5 | Address | &:r2201_14 | | ir.cpp:2201:5:2201:5 | Address | &:r2201_18 | -| ir.cpp:2201:5:2201:5 | Address | &:r2201_26 | +| ir.cpp:2201:5:2201:5 | Address | &:r2201_24 | | ir.cpp:2201:42:2201:43 | Address | &:r2201_1 | | ir.cpp:2201:42:2201:43 | Address | &:r2201_1 | | ir.cpp:2201:42:2201:43 | Arg(this) | this:r2201_1 | @@ -11080,103 +11068,97 @@ | ir.cpp:2201:45:2201:46 | ChiTotal | total:m2200_6 | | ir.cpp:2201:45:2201:46 | ChiTotal | total:m2201_2 | | ir.cpp:2201:45:2201:46 | SideEffect | ~m2200_6 | -| ir.cpp:2201:69:2201:69 | Address | &:r2201_49 | -| ir.cpp:2201:69:2201:69 | Address | &:r2201_57 | -| ir.cpp:2201:69:2201:69 | Address | &:r2201_57 | -| ir.cpp:2201:69:2201:69 | Arg(this) | this:r2201_57 | -| ir.cpp:2201:69:2201:69 | CallTarget | func:r2201_58 | -| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_60 | -| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_63 | +| ir.cpp:2201:69:2201:69 | Address | &:r2201_45 | +| ir.cpp:2201:69:2201:69 | Address | &:r2201_53 | +| ir.cpp:2201:69:2201:69 | Address | &:r2201_53 | +| ir.cpp:2201:69:2201:69 | Arg(this) | this:r2201_53 | +| ir.cpp:2201:69:2201:69 | CallTarget | func:r2201_54 | +| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_56 | +| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_59 | | ir.cpp:2201:69:2201:69 | ChiTotal | total:m2202_6 | | ir.cpp:2201:69:2201:69 | ChiTotal | total:m2202_9 | | ir.cpp:2201:69:2201:69 | SideEffect | m2202_9 | | ir.cpp:2201:69:2201:69 | SideEffect | ~m2202_6 | | ir.cpp:2201:73:2201:73 | Address | &:r2201_19 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_27 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_52 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_65 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_65 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_25 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_48 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_61 | +| ir.cpp:2201:73:2201:73 | Address | &:r2201_61 | | ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_2 | | ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_5 | | ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_7 | | ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_8 | | ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_15 | -| ir.cpp:2201:73:2201:73 | Arg(this) | this:r2201_65 | +| ir.cpp:2201:73:2201:73 | Arg(this) | this:r2201_61 | | ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_21 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_29 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_37 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_38 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_51 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_66 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_23 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_31 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_41 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_43 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_46 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_53 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_68 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_71 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_27 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_33 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_34 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_47 | +| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_62 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_37 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_39 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_42 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_49 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_64 | +| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_67 | | ir.cpp:2201:73:2201:73 | ChiTotal | total:m0_9 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_11 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_24 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_34 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_35 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_42 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_47 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_61 | -| ir.cpp:2201:73:2201:73 | Condition | r2201_45 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_30 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_31 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_38 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_43 | +| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_57 | +| ir.cpp:2201:73:2201:73 | Condition | r2201_41 | | ir.cpp:2201:73:2201:73 | Load | m2201_17 | | ir.cpp:2201:73:2201:73 | Load | m2201_17 | -| ir.cpp:2201:73:2201:73 | Phi | from 7:m2201_25 | -| ir.cpp:2201:73:2201:73 | Phi | from 7:~m2201_32 | -| ir.cpp:2201:73:2201:73 | Phi | from 9:m2201_72 | -| ir.cpp:2201:73:2201:73 | Phi | from 9:~m2201_69 | -| ir.cpp:2201:73:2201:73 | SideEffect | m2201_34 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_11 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_24 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_35 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_42 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_47 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_61 | +| ir.cpp:2201:73:2201:73 | Phi | from 7:m2201_23 | +| ir.cpp:2201:73:2201:73 | Phi | from 7:~m2201_11 | +| ir.cpp:2201:73:2201:73 | Phi | from 9:m2201_68 | +| ir.cpp:2201:73:2201:73 | Phi | from 9:~m2201_65 | +| ir.cpp:2201:73:2201:73 | SideEffect | m2201_30 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_31 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_38 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_43 | +| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_57 | | ir.cpp:2201:73:2201:73 | StoreValue | r2201_22 | -| ir.cpp:2201:73:2201:73 | StoreValue | r2201_30 | +| ir.cpp:2201:73:2201:73 | StoreValue | r2201_28 | | ir.cpp:2201:73:2201:73 | Unary | r2201_20 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_28 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_36 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_39 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_50 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_67 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_26 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_32 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_35 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_46 | +| ir.cpp:2201:73:2201:73 | Unary | r2201_63 | | ir.cpp:2201:73:2201:74 | StoreValue | r2201_16 | | ir.cpp:2201:73:2201:74 | Unary | r2201_15 | -| ir.cpp:2201:73:2201:75 | Load | ~m2201_54 | -| ir.cpp:2201:73:2201:75 | StoreValue | r2201_55 | +| ir.cpp:2201:73:2201:75 | Load | ~m2201_50 | +| ir.cpp:2201:73:2201:75 | StoreValue | r2201_51 | | ir.cpp:2202:7:2202:7 | Address | &:r2202_1 | | ir.cpp:2202:7:2202:7 | Address | &:r2202_1 | | ir.cpp:2202:7:2202:7 | Arg(this) | this:r2202_1 | | ir.cpp:2202:7:2202:7 | ChiPartial | partial:m2202_8 | -| ir.cpp:2202:7:2202:7 | ChiTotal | total:m2201_56 | -| ir.cpp:2202:7:2202:7 | SideEffect | m2201_56 | +| ir.cpp:2202:7:2202:7 | ChiTotal | total:m2201_52 | +| ir.cpp:2202:7:2202:7 | SideEffect | m2201_52 | | ir.cpp:2202:9:2202:13 | CallTarget | func:r2202_2 | | ir.cpp:2202:9:2202:13 | ChiPartial | partial:m2202_5 | -| ir.cpp:2202:9:2202:13 | ChiTotal | total:m2201_54 | -| ir.cpp:2202:9:2202:13 | SideEffect | ~m2201_54 | +| ir.cpp:2202:9:2202:13 | ChiTotal | total:m2201_50 | +| ir.cpp:2202:9:2202:13 | SideEffect | ~m2201_50 | | ir.cpp:2202:15:2202:17 | Arg(0) | 0:r2202_3 | | ir.cpp:2204:5:2204:5 | Address | &:r2204_14 | | ir.cpp:2204:5:2204:5 | Address | &:r2204_18 | -| ir.cpp:2204:5:2204:5 | Address | &:r2204_26 | +| ir.cpp:2204:5:2204:5 | Address | &:r2204_24 | | ir.cpp:2204:42:2204:43 | Address | &:r2204_1 | | ir.cpp:2204:42:2204:43 | Address | &:r2204_1 | -| ir.cpp:2204:42:2204:43 | Address | &:r2204_65 | -| ir.cpp:2204:42:2204:43 | Address | &:r2204_65 | +| ir.cpp:2204:42:2204:43 | Address | &:r2204_61 | +| ir.cpp:2204:42:2204:43 | Address | &:r2204_61 | | ir.cpp:2204:42:2204:43 | Arg(this) | this:r2204_1 | -| ir.cpp:2204:42:2204:43 | Arg(this) | this:r2204_65 | -| ir.cpp:2204:42:2204:43 | CallTarget | func:r2204_66 | -| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_68 | -| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_71 | +| ir.cpp:2204:42:2204:43 | Arg(this) | this:r2204_61 | +| ir.cpp:2204:42:2204:43 | CallTarget | func:r2204_62 | +| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_64 | +| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_67 | | ir.cpp:2204:42:2204:43 | ChiTotal | total:m2204_13 | -| ir.cpp:2204:42:2204:43 | ChiTotal | total:m2204_61 | +| ir.cpp:2204:42:2204:43 | ChiTotal | total:m2204_57 | | ir.cpp:2204:42:2204:43 | SideEffect | m2204_13 | -| ir.cpp:2204:42:2204:43 | SideEffect | ~m2204_61 | +| ir.cpp:2204:42:2204:43 | SideEffect | ~m2204_57 | | ir.cpp:2204:45:2204:45 | Address | &:r2204_4 | | ir.cpp:2204:45:2204:45 | Address | &:r2204_4 | | ir.cpp:2204:45:2204:45 | Address | &:r2204_5 | @@ -11187,22 +11169,22 @@ | ir.cpp:2204:45:2204:46 | CallTarget | func:r2204_3 | | ir.cpp:2204:45:2204:46 | ChiPartial | partial:m2204_10 | | ir.cpp:2204:45:2204:46 | ChiPartial | partial:m2204_12 | -| ir.cpp:2204:45:2204:46 | ChiTotal | total:m2201_47 | +| ir.cpp:2204:45:2204:46 | ChiTotal | total:m2201_43 | | ir.cpp:2204:45:2204:46 | ChiTotal | total:m2204_2 | -| ir.cpp:2204:45:2204:46 | SideEffect | ~m2201_47 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_49 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_57 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_57 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_73 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_73 | -| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_57 | -| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_73 | -| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_58 | -| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_74 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_60 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_63 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_76 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_79 | +| ir.cpp:2204:45:2204:46 | SideEffect | ~m2201_43 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_45 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_53 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_53 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_69 | +| ir.cpp:2204:69:2204:69 | Address | &:r2204_69 | +| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_53 | +| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_69 | +| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_54 | +| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_70 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_56 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_59 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_72 | +| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_75 | | ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_5 | | ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_5 | | ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_8 | @@ -11212,74 +11194,68 @@ | ir.cpp:2204:69:2204:69 | SideEffect | ~m2206_5 | | ir.cpp:2204:69:2204:69 | SideEffect | ~m2206_5 | | ir.cpp:2204:73:2204:73 | Address | &:r2204_19 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_27 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_52 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_81 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_81 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_25 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_48 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_77 | +| ir.cpp:2204:73:2204:73 | Address | &:r2204_77 | | ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_18 | | ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_21 | | ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_23 | | ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_24 | | ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_31 | -| ir.cpp:2204:73:2204:73 | Arg(this) | this:r2204_81 | +| ir.cpp:2204:73:2204:73 | Arg(this) | this:r2204_77 | | ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_21 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_29 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_37 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_38 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_51 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_82 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_23 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_31 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_41 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_43 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_46 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_53 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_84 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_87 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_27 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_33 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_34 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_47 | +| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_78 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_37 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_39 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_42 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_49 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_80 | +| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_83 | | ir.cpp:2204:73:2204:73 | ChiTotal | total:m0_25 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_11 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_24 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_34 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_35 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_42 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_47 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_77 | -| ir.cpp:2204:73:2204:73 | Condition | r2204_45 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_30 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_31 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_38 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_43 | +| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_73 | +| ir.cpp:2204:73:2204:73 | Condition | r2204_41 | | ir.cpp:2204:73:2204:73 | Load | m2204_17 | | ir.cpp:2204:73:2204:73 | Load | m2204_17 | -| ir.cpp:2204:73:2204:73 | Phi | from 10:m2204_25 | -| ir.cpp:2204:73:2204:73 | Phi | from 10:~m2204_32 | -| ir.cpp:2204:73:2204:73 | Phi | from 14:m2204_88 | -| ir.cpp:2204:73:2204:73 | Phi | from 14:~m2204_85 | -| ir.cpp:2204:73:2204:73 | SideEffect | m2204_34 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_11 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_24 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_35 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_42 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_47 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_77 | +| ir.cpp:2204:73:2204:73 | Phi | from 10:m2204_23 | +| ir.cpp:2204:73:2204:73 | Phi | from 10:~m2204_11 | +| ir.cpp:2204:73:2204:73 | Phi | from 14:m2204_84 | +| ir.cpp:2204:73:2204:73 | Phi | from 14:~m2204_81 | +| ir.cpp:2204:73:2204:73 | SideEffect | m2204_30 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_31 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_38 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_43 | +| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_73 | | ir.cpp:2204:73:2204:73 | StoreValue | r2204_22 | -| ir.cpp:2204:73:2204:73 | StoreValue | r2204_30 | +| ir.cpp:2204:73:2204:73 | StoreValue | r2204_28 | | ir.cpp:2204:73:2204:73 | Unary | r2204_20 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_28 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_36 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_39 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_50 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_83 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_26 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_32 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_35 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_46 | +| ir.cpp:2204:73:2204:73 | Unary | r2204_79 | | ir.cpp:2204:73:2204:74 | StoreValue | r2204_16 | | ir.cpp:2204:73:2204:74 | Unary | r2204_15 | -| ir.cpp:2204:73:2204:75 | Load | ~m2204_54 | -| ir.cpp:2204:73:2204:75 | StoreValue | r2204_55 | +| ir.cpp:2204:73:2204:75 | Load | ~m2204_50 | +| ir.cpp:2204:73:2204:75 | StoreValue | r2204_51 | | ir.cpp:2205:7:2205:7 | Address | &:r2205_1 | | ir.cpp:2205:7:2205:7 | Address | &:r2205_1 | | ir.cpp:2205:7:2205:7 | Arg(this) | this:r2205_1 | | ir.cpp:2205:7:2205:7 | ChiPartial | partial:m2205_8 | -| ir.cpp:2205:7:2205:7 | ChiTotal | total:m2204_56 | -| ir.cpp:2205:7:2205:7 | SideEffect | m2204_56 | +| ir.cpp:2205:7:2205:7 | ChiTotal | total:m2204_52 | +| ir.cpp:2205:7:2205:7 | SideEffect | m2204_52 | | ir.cpp:2205:9:2205:13 | CallTarget | func:r2205_2 | | ir.cpp:2205:9:2205:13 | ChiPartial | partial:m2205_5 | -| ir.cpp:2205:9:2205:13 | ChiTotal | total:m2204_54 | -| ir.cpp:2205:9:2205:13 | SideEffect | ~m2204_54 | +| ir.cpp:2205:9:2205:13 | ChiTotal | total:m2204_50 | +| ir.cpp:2205:9:2205:13 | SideEffect | ~m2204_50 | | ir.cpp:2205:15:2205:17 | Arg(0) | 0:r2205_3 | | ir.cpp:2206:11:2206:11 | Address | &:r2206_1 | | ir.cpp:2206:11:2206:11 | Address | &:r2206_1 | @@ -11297,95 +11273,89 @@ | ir.cpp:2206:24:2206:26 | Right | r2206_10 | | ir.cpp:2210:5:2210:5 | Address | &:r2210_10 | | ir.cpp:2210:5:2210:5 | Address | &:r2210_14 | -| ir.cpp:2210:5:2210:5 | Address | &:r2210_22 | +| ir.cpp:2210:5:2210:5 | Address | &:r2210_20 | | ir.cpp:2210:26:2210:27 | Address | &:r2210_1 | | ir.cpp:2210:26:2210:27 | Address | &:r2210_1 | -| ir.cpp:2210:26:2210:27 | Address | &:r2210_62 | -| ir.cpp:2210:26:2210:27 | Address | &:r2210_62 | +| ir.cpp:2210:26:2210:27 | Address | &:r2210_58 | +| ir.cpp:2210:26:2210:27 | Address | &:r2210_58 | | ir.cpp:2210:26:2210:27 | Arg(this) | this:r2210_1 | -| ir.cpp:2210:26:2210:27 | Arg(this) | this:r2210_62 | -| ir.cpp:2210:26:2210:27 | CallTarget | func:r2210_63 | -| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_65 | -| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_68 | +| ir.cpp:2210:26:2210:27 | Arg(this) | this:r2210_58 | +| ir.cpp:2210:26:2210:27 | CallTarget | func:r2210_59 | +| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_61 | +| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_64 | | ir.cpp:2210:26:2210:27 | ChiTotal | total:m2210_9 | -| ir.cpp:2210:26:2210:27 | ChiTotal | total:m2210_59 | +| ir.cpp:2210:26:2210:27 | ChiTotal | total:m2210_55 | | ir.cpp:2210:26:2210:27 | SideEffect | m2210_9 | -| ir.cpp:2210:26:2210:27 | SideEffect | ~m2210_59 | +| ir.cpp:2210:26:2210:27 | SideEffect | ~m2210_55 | | ir.cpp:2210:29:2210:29 | Arg(0) | 0:r2210_4 | | ir.cpp:2210:29:2210:30 | CallTarget | func:r2210_3 | | ir.cpp:2210:29:2210:30 | ChiPartial | partial:m2210_6 | | ir.cpp:2210:29:2210:30 | ChiPartial | partial:m2210_8 | -| ir.cpp:2210:29:2210:30 | ChiTotal | total:m2204_47 | +| ir.cpp:2210:29:2210:30 | ChiTotal | total:m2204_43 | | ir.cpp:2210:29:2210:30 | ChiTotal | total:m2210_2 | -| ir.cpp:2210:29:2210:30 | SideEffect | ~m2204_47 | -| ir.cpp:2210:37:2210:37 | Address | &:r2210_54 | +| ir.cpp:2210:29:2210:30 | SideEffect | ~m2204_43 | +| ir.cpp:2210:37:2210:37 | Address | &:r2210_50 | | ir.cpp:2210:41:2210:41 | Address | &:r2210_15 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_23 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_45 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_45 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_57 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_21 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_41 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_41 | +| ir.cpp:2210:41:2210:41 | Address | &:r2210_53 | | ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_34 | | ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_37 | | ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_39 | | ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_40 | | ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_47 | -| ir.cpp:2210:41:2210:41 | Arg(this) | this:r2210_45 | +| ir.cpp:2210:41:2210:41 | Arg(this) | this:r2210_41 | | ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_17 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_25 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_33 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_34 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_46 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_56 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_19 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_27 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_37 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_39 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_42 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_48 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_51 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_58 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_23 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_29 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_30 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_42 | +| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_52 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_33 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_35 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_38 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_44 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_47 | +| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_54 | | ir.cpp:2210:41:2210:41 | ChiTotal | total:m0_41 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_7 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_20 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_30 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_31 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_38 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_43 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_59 | -| ir.cpp:2210:41:2210:41 | Condition | r2210_41 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_26 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_27 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_34 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_39 | +| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_55 | +| ir.cpp:2210:41:2210:41 | Condition | r2210_37 | | ir.cpp:2210:41:2210:41 | Load | m2210_13 | | ir.cpp:2210:41:2210:41 | Load | m2210_13 | -| ir.cpp:2210:41:2210:41 | Phi | from 15:m2210_21 | -| ir.cpp:2210:41:2210:41 | Phi | from 15:~m2210_28 | -| ir.cpp:2210:41:2210:41 | Phi | from 17:m2210_52 | -| ir.cpp:2210:41:2210:41 | Phi | from 17:~m2210_49 | -| ir.cpp:2210:41:2210:41 | SideEffect | m2210_30 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_7 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_20 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_31 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_38 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_43 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_59 | +| ir.cpp:2210:41:2210:41 | Phi | from 15:m2210_19 | +| ir.cpp:2210:41:2210:41 | Phi | from 15:~m2210_7 | +| ir.cpp:2210:41:2210:41 | Phi | from 17:m2210_48 | +| ir.cpp:2210:41:2210:41 | Phi | from 17:~m2210_45 | +| ir.cpp:2210:41:2210:41 | SideEffect | m2210_26 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_27 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_34 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_39 | +| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_55 | | ir.cpp:2210:41:2210:41 | StoreValue | r2210_18 | -| ir.cpp:2210:41:2210:41 | StoreValue | r2210_26 | +| ir.cpp:2210:41:2210:41 | StoreValue | r2210_24 | | ir.cpp:2210:41:2210:41 | Unary | r2210_16 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_24 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_32 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_35 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_47 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_55 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_22 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_28 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_31 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_43 | +| ir.cpp:2210:41:2210:41 | Unary | r2210_51 | | ir.cpp:2210:41:2210:42 | StoreValue | r2210_12 | | ir.cpp:2210:41:2210:42 | Unary | r2210_11 | -| ir.cpp:2210:41:2210:43 | Load | ~m2210_59 | -| ir.cpp:2210:41:2210:43 | StoreValue | r2210_60 | +| ir.cpp:2210:41:2210:43 | Load | ~m2210_55 | +| ir.cpp:2210:41:2210:43 | StoreValue | r2210_56 | | ir.cpp:2211:11:2211:11 | Address | &:r2211_1 | | ir.cpp:2211:11:2211:11 | Left | r2211_2 | -| ir.cpp:2211:11:2211:11 | Load | m2210_61 | +| ir.cpp:2211:11:2211:11 | Load | m2210_57 | | ir.cpp:2211:11:2211:16 | Condition | r2211_4 | | ir.cpp:2211:16:2211:16 | Right | r2211_3 | | ir.cpp:2215:5:2215:5 | Address | &:r2215_14 | | ir.cpp:2215:5:2215:5 | Address | &:r2215_18 | -| ir.cpp:2215:5:2215:5 | Address | &:r2215_26 | +| ir.cpp:2215:5:2215:5 | Address | &:r2215_24 | | ir.cpp:2215:42:2215:43 | Address | &:r2215_1 | | ir.cpp:2215:42:2215:43 | Address | &:r2215_1 | | ir.cpp:2215:42:2215:43 | Arg(this) | this:r2215_1 | @@ -11399,88 +11369,82 @@ | ir.cpp:2215:45:2215:46 | CallTarget | func:r2215_3 | | ir.cpp:2215:45:2215:46 | ChiPartial | partial:m2215_10 | | ir.cpp:2215:45:2215:46 | ChiPartial | partial:m2215_12 | -| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2210_43 | +| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2210_39 | | ir.cpp:2215:45:2215:46 | ChiTotal | total:m2215_2 | -| ir.cpp:2215:45:2215:46 | SideEffect | ~m2210_43 | -| ir.cpp:2215:69:2215:69 | Address | &:r2215_49 | -| ir.cpp:2215:69:2215:69 | Address | &:r2215_57 | -| ir.cpp:2215:69:2215:69 | Address | &:r2215_57 | -| ir.cpp:2215:69:2215:69 | Arg(this) | this:r2215_57 | -| ir.cpp:2215:69:2215:69 | CallTarget | func:r2215_58 | -| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_60 | -| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_63 | -| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2215_56 | +| ir.cpp:2215:45:2215:46 | SideEffect | ~m2210_39 | +| ir.cpp:2215:69:2215:69 | Address | &:r2215_45 | +| ir.cpp:2215:69:2215:69 | Address | &:r2215_53 | +| ir.cpp:2215:69:2215:69 | Address | &:r2215_53 | +| ir.cpp:2215:69:2215:69 | Arg(this) | this:r2215_53 | +| ir.cpp:2215:69:2215:69 | CallTarget | func:r2215_54 | +| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_56 | +| ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_59 | +| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2215_52 | | ir.cpp:2215:69:2215:69 | ChiTotal | total:m2218_13 | -| ir.cpp:2215:69:2215:69 | SideEffect | m2215_56 | +| ir.cpp:2215:69:2215:69 | SideEffect | m2215_52 | | ir.cpp:2215:69:2215:69 | SideEffect | ~m2218_13 | | ir.cpp:2215:73:2215:73 | Address | &:r2215_19 | -| ir.cpp:2215:73:2215:73 | Address | &:r2215_27 | -| ir.cpp:2215:73:2215:73 | Address | &:r2215_52 | -| ir.cpp:2215:73:2215:73 | Address | &:r2215_65 | -| ir.cpp:2215:73:2215:73 | Address | &:r2215_65 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_25 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_48 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_61 | +| ir.cpp:2215:73:2215:73 | Address | &:r2215_61 | | ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_50 | | ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_53 | | ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_55 | | ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_56 | | ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_63 | -| ir.cpp:2215:73:2215:73 | Arg(this) | this:r2215_65 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r2215_61 | | ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_21 | -| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_29 | -| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_37 | -| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_38 | -| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_51 | -| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_66 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_23 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_31 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_41 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_43 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_46 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_53 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_68 | -| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_71 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_27 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_33 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_34 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_47 | +| ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_62 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_37 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_39 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_42 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_49 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_64 | +| ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_67 | | ir.cpp:2215:73:2215:73 | ChiTotal | total:m0_57 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_11 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_24 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_34 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_35 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_42 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_47 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_61 | -| ir.cpp:2215:73:2215:73 | Condition | r2215_45 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_30 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_31 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_38 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_43 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_57 | +| ir.cpp:2215:73:2215:73 | Condition | r2215_41 | | ir.cpp:2215:73:2215:73 | Load | m2215_17 | | ir.cpp:2215:73:2215:73 | Load | m2215_17 | -| ir.cpp:2215:73:2215:73 | Phi | from 20:m2215_25 | -| ir.cpp:2215:73:2215:73 | Phi | from 20:~m2215_32 | -| ir.cpp:2215:73:2215:73 | Phi | from 22:m2215_72 | -| ir.cpp:2215:73:2215:73 | Phi | from 22:~m2215_69 | -| ir.cpp:2215:73:2215:73 | SideEffect | m2215_34 | -| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_11 | -| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_24 | -| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_35 | -| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_42 | -| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_47 | -| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_61 | +| ir.cpp:2215:73:2215:73 | Phi | from 20:m2215_23 | +| ir.cpp:2215:73:2215:73 | Phi | from 20:~m2215_11 | +| ir.cpp:2215:73:2215:73 | Phi | from 22:m2215_68 | +| ir.cpp:2215:73:2215:73 | Phi | from 22:~m2215_65 | +| ir.cpp:2215:73:2215:73 | SideEffect | m2215_30 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_31 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_38 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_43 | +| ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_57 | | ir.cpp:2215:73:2215:73 | StoreValue | r2215_22 | -| ir.cpp:2215:73:2215:73 | StoreValue | r2215_30 | +| ir.cpp:2215:73:2215:73 | StoreValue | r2215_28 | | ir.cpp:2215:73:2215:73 | Unary | r2215_20 | -| ir.cpp:2215:73:2215:73 | Unary | r2215_28 | -| ir.cpp:2215:73:2215:73 | Unary | r2215_36 | -| ir.cpp:2215:73:2215:73 | Unary | r2215_39 | -| ir.cpp:2215:73:2215:73 | Unary | r2215_50 | -| ir.cpp:2215:73:2215:73 | Unary | r2215_67 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_26 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_32 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_35 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_46 | +| ir.cpp:2215:73:2215:73 | Unary | r2215_63 | | ir.cpp:2215:73:2215:74 | StoreValue | r2215_16 | | ir.cpp:2215:73:2215:74 | Unary | r2215_15 | -| ir.cpp:2215:73:2215:75 | Load | ~m2215_54 | -| ir.cpp:2215:73:2215:75 | StoreValue | r2215_55 | +| ir.cpp:2215:73:2215:75 | Load | ~m2215_50 | +| ir.cpp:2215:73:2215:75 | StoreValue | r2215_51 | | ir.cpp:2216:27:2216:28 | Address | &:r2216_1 | | ir.cpp:2216:27:2216:28 | Address | &:r2216_1 | | ir.cpp:2216:27:2216:28 | Arg(this) | this:r2216_1 | | ir.cpp:2216:27:2216:28 | CallTarget | func:r2216_3 | | ir.cpp:2216:27:2216:28 | ChiPartial | partial:m2216_5 | | ir.cpp:2216:27:2216:28 | ChiPartial | partial:m2216_7 | -| ir.cpp:2216:27:2216:28 | ChiTotal | total:m2215_54 | +| ir.cpp:2216:27:2216:28 | ChiTotal | total:m2215_50 | | ir.cpp:2216:27:2216:28 | ChiTotal | total:m2216_2 | -| ir.cpp:2216:27:2216:28 | SideEffect | ~m2215_54 | +| ir.cpp:2216:27:2216:28 | SideEffect | ~m2215_50 | | ir.cpp:2217:27:2217:28 | Address | &:r2217_1 | | ir.cpp:2217:27:2217:28 | Address | &:r2217_1 | | ir.cpp:2217:27:2217:28 | Arg(this) | this:r2217_1 | @@ -11531,15 +11495,15 @@ | ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | | ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | | ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2204_69 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2210_66 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2215_47 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2204_65 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2210_62 | +| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2215_43 | | ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | | ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | | ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | -| ir.cpp:2219:1:2219:1 | SideEffect | ~m2204_69 | -| ir.cpp:2219:1:2219:1 | SideEffect | ~m2210_66 | -| ir.cpp:2219:1:2219:1 | SideEffect | ~m2215_47 | +| ir.cpp:2219:1:2219:1 | SideEffect | ~m2204_65 | +| ir.cpp:2219:1:2219:1 | SideEffect | ~m2210_62 | +| ir.cpp:2219:1:2219:1 | SideEffect | ~m2215_43 | | ir.cpp:2221:6:2221:38 | ChiPartial | partial:m2221_3 | | ir.cpp:2221:6:2221:38 | ChiTotal | total:m2221_2 | | ir.cpp:2221:6:2221:38 | SideEffect | ~m2224_7 | @@ -12044,81 +12008,75 @@ | ir.cpp:2291:5:2291:5 | SideEffect | ~m2290_6 | | ir.cpp:2293:5:2293:5 | Address | &:r2293_1 | | ir.cpp:2293:5:2293:5 | Address | &:r2293_24 | -| ir.cpp:2293:5:2293:5 | Address | &:r2293_32 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_55 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_55 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_72 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_72 | -| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_55 | -| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_72 | -| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_57 | -| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_73 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_67 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_70 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_75 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_78 | -| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_56 | -| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_62 | -| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_71 | +| ir.cpp:2293:5:2293:5 | Address | &:r2293_30 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_51 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_51 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_68 | +| ir.cpp:2293:16:2293:16 | Address | &:r2293_68 | +| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_51 | +| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_68 | +| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_53 | +| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_69 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_63 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_66 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_71 | +| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_74 | +| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_52 | +| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_58 | +| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_67 | | ir.cpp:2293:16:2293:16 | ChiTotal | total:m2295_5 | -| ir.cpp:2293:16:2293:16 | SideEffect | m2293_71 | -| ir.cpp:2293:16:2293:16 | SideEffect | ~m2293_62 | +| ir.cpp:2293:16:2293:16 | SideEffect | m2293_67 | +| ir.cpp:2293:16:2293:16 | SideEffect | ~m2293_58 | | ir.cpp:2293:16:2293:16 | SideEffect | ~m2295_5 | | ir.cpp:2293:20:2293:20 | Address | &:r2293_25 | -| ir.cpp:2293:20:2293:20 | Address | &:r2293_33 | -| ir.cpp:2293:20:2293:20 | Address | &:r2293_80 | -| ir.cpp:2293:20:2293:20 | Address | &:r2293_80 | +| ir.cpp:2293:20:2293:20 | Address | &:r2293_31 | +| ir.cpp:2293:20:2293:20 | Address | &:r2293_76 | +| ir.cpp:2293:20:2293:20 | Address | &:r2293_76 | | ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_2 | | ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_5 | | ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_7 | | ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_8 | | ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_15 | -| ir.cpp:2293:20:2293:20 | Arg(this) | this:r2293_80 | +| ir.cpp:2293:20:2293:20 | Arg(this) | this:r2293_76 | | ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_27 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_35 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_43 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_44 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_59 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_81 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_29 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_37 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_47 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_49 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_52 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_61 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_83 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_86 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_33 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_39 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_40 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_55 | +| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_77 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_43 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_45 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_48 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_57 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_79 | +| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_82 | | ir.cpp:2293:20:2293:20 | ChiTotal | total:m0_9 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_19 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_30 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_40 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_41 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_48 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_53 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_76 | -| ir.cpp:2293:20:2293:20 | Condition | r2293_51 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_36 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_37 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_44 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_49 | +| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_72 | +| ir.cpp:2293:20:2293:20 | Condition | r2293_47 | | ir.cpp:2293:20:2293:20 | Load | m2293_23 | | ir.cpp:2293:20:2293:20 | Load | m2293_23 | -| ir.cpp:2293:20:2293:20 | Phi | from 3:m2293_31 | -| ir.cpp:2293:20:2293:20 | Phi | from 3:~m2293_38 | -| ir.cpp:2293:20:2293:20 | Phi | from 5:m2293_87 | -| ir.cpp:2293:20:2293:20 | Phi | from 5:~m2293_84 | -| ir.cpp:2293:20:2293:20 | SideEffect | m2293_40 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_19 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_30 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_41 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_48 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_53 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_76 | +| ir.cpp:2293:20:2293:20 | Phi | from 3:m2293_29 | +| ir.cpp:2293:20:2293:20 | Phi | from 3:~m2293_19 | +| ir.cpp:2293:20:2293:20 | Phi | from 5:m2293_83 | +| ir.cpp:2293:20:2293:20 | Phi | from 5:~m2293_80 | +| ir.cpp:2293:20:2293:20 | SideEffect | m2293_36 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_37 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_44 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_49 | +| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_72 | | ir.cpp:2293:20:2293:20 | StoreValue | r2293_28 | -| ir.cpp:2293:20:2293:20 | StoreValue | r2293_36 | +| ir.cpp:2293:20:2293:20 | StoreValue | r2293_34 | | ir.cpp:2293:20:2293:20 | Unary | r2293_26 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_34 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_42 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_45 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_58 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_60 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_82 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_32 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_38 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_41 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_54 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_56 | +| ir.cpp:2293:20:2293:20 | Unary | r2293_78 | | ir.cpp:2293:20:2293:55 | Address | &:r2293_2 | | ir.cpp:2293:20:2293:55 | Address | &:r2293_2 | | ir.cpp:2293:20:2293:55 | Arg(this) | this:r2293_2 | @@ -12130,11 +12088,11 @@ | ir.cpp:2293:20:2293:55 | SideEffect | ~m2293_12 | | ir.cpp:2293:20:2293:55 | StoreValue | r2293_22 | | ir.cpp:2293:20:2293:55 | Unary | r2293_2 | -| ir.cpp:2293:20:2293:56 | Address | &:r2293_65 | -| ir.cpp:2293:20:2293:56 | Arg(0) | 0:r2293_65 | -| ir.cpp:2293:20:2293:56 | SideEffect | ~m2293_68 | -| ir.cpp:2293:20:2293:56 | Unary | r2293_63 | -| ir.cpp:2293:20:2293:56 | Unary | r2293_64 | +| ir.cpp:2293:20:2293:56 | Address | &:r2293_61 | +| ir.cpp:2293:20:2293:56 | Arg(0) | 0:r2293_61 | +| ir.cpp:2293:20:2293:56 | SideEffect | ~m2293_64 | +| ir.cpp:2293:20:2293:56 | Unary | r2293_59 | +| ir.cpp:2293:20:2293:56 | Unary | r2293_60 | | ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | | ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | | ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | @@ -12157,9 +12115,9 @@ | ir.cpp:2294:16:2294:17 | CallTarget | func:r2294_3 | | ir.cpp:2294:16:2294:17 | ChiPartial | partial:m2294_5 | | ir.cpp:2294:16:2294:17 | ChiPartial | partial:m2294_7 | -| ir.cpp:2294:16:2294:17 | ChiTotal | total:m2293_68 | +| ir.cpp:2294:16:2294:17 | ChiTotal | total:m2293_64 | | ir.cpp:2294:16:2294:17 | ChiTotal | total:m2294_2 | -| ir.cpp:2294:16:2294:17 | SideEffect | ~m2293_68 | +| ir.cpp:2294:16:2294:17 | SideEffect | ~m2293_64 | | ir.cpp:2295:5:2295:5 | Address | &:r2295_1 | | ir.cpp:2295:5:2295:5 | Address | &:r2295_1 | | ir.cpp:2295:5:2295:5 | Arg(this) | this:r2295_1 | @@ -12190,9 +12148,9 @@ | ir.cpp:2297:18:2297:25 | CallTarget | func:r2297_3 | | ir.cpp:2297:18:2297:25 | ChiPartial | partial:m2297_7 | | ir.cpp:2297:18:2297:25 | ChiPartial | partial:m2297_10 | -| ir.cpp:2297:18:2297:25 | ChiTotal | total:m2293_53 | +| ir.cpp:2297:18:2297:25 | ChiTotal | total:m2293_49 | | ir.cpp:2297:18:2297:25 | ChiTotal | total:m2297_2 | -| ir.cpp:2297:18:2297:25 | SideEffect | ~m2293_53 | +| ir.cpp:2297:18:2297:25 | SideEffect | ~m2293_49 | | ir.cpp:2297:28:2297:29 | Address | &:r2297_12 | | ir.cpp:2297:28:2297:29 | Address | &:r2297_12 | | ir.cpp:2297:28:2297:29 | Address | &:r2297_42 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 1ac2a6c9f8aa..0c42f3d2af6d 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -6846,52 +6846,50 @@ ir.cpp: #-----| r0_1(glval<vector<int>>) = CopyValue : r1127_9 # 1127| r1127_10(glval<unknown>) = FunctionAddress[begin] : # 1127| r1127_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1127_10, this:r0_1 -# 1127| mu1127_12(unknown) = ^CallSideEffect : ~m? #-----| v0_2(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m? -# 1127| mu1127_13(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1127_7, r1127_11 -# 1127| r1127_14(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 1127| r1127_15(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1127| r1127_16(vector<int> &) = Load[(__range)] : &:r1127_15, ~m? -#-----| r0_3(glval<vector<int>>) = CopyValue : r1127_16 -# 1127| r1127_17(glval<unknown>) = FunctionAddress[end] : -# 1127| r1127_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1127_17, this:r0_3 -# 1127| mu1127_19(unknown) = ^CallSideEffect : ~m? +# 1127| mu1127_12(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1127_7, r1127_11 +# 1127| r1127_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1127| r1127_14(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1127| r1127_15(vector<int> &) = Load[(__range)] : &:r1127_14, ~m? +#-----| r0_3(glval<vector<int>>) = CopyValue : r1127_15 +# 1127| r1127_16(glval<unknown>) = FunctionAddress[end] : +# 1127| r1127_17(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1127_16, this:r0_3 #-----| v0_4(void) = ^IndirectReadSideEffect[-1] : &:r0_3, ~m? -# 1127| mu1127_20(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1127_14, r1127_18 +# 1127| mu1127_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1127_13, r1127_17 #-----| Goto -> Block 1 # 1127| Block 1 -# 1127| r1127_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_5(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_21 -# 1127| r1127_22(glval<unknown>) = FunctionAddress[operator!=] : +# 1127| r1127_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_5(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_19 +# 1127| r1127_20(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_6(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| mu0_7(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_6 -# 1127| r1127_23(glval<unknown>) = FunctionAddress[iterator] : -# 1127| r1127_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_8(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_24 +# 1127| r1127_21(glval<unknown>) = FunctionAddress[iterator] : +# 1127| r1127_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_22 #-----| r0_9(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_8 -# 1127| v1127_25(void) = Call[iterator] : func:r1127_23, this:r0_6, 0:r0_9 -# 1127| mu1127_26(unknown) = ^CallSideEffect : ~m? +# 1127| v1127_23(void) = Call[iterator] : func:r1127_21, this:r0_6, 0:r0_9 +# 1127| mu1127_24(unknown) = ^CallSideEffect : ~m? #-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_9, ~m? -# 1127| mu1127_27(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +# 1127| mu1127_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 #-----| r0_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_6, ~m? -# 1127| r1127_28(bool) = Call[operator!=] : func:r1127_22, this:r0_5, 0:r0_11 -# 1127| mu1127_29(unknown) = ^CallSideEffect : ~m? +# 1127| r1127_26(bool) = Call[operator!=] : func:r1127_20, this:r0_5, 0:r0_11 +# 1127| mu1127_27(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 1127| v1127_30(void) = ConditionalBranch : r1127_28 +# 1127| v1127_28(void) = ConditionalBranch : r1127_26 #-----| False -> Block 5 #-----| True -> Block 2 # 1127| Block 2 -# 1127| r1127_31(glval<int>) = VariableAddress[e] : -# 1127| r1127_32(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_32 -# 1127| r1127_33(glval<unknown>) = FunctionAddress[operator*] : -# 1127| r1127_34(int &) = Call[operator*] : func:r1127_33, this:r0_13 -# 1127| mu1127_35(unknown) = ^CallSideEffect : ~m? +# 1127| r1127_29(glval<int>) = VariableAddress[e] : +# 1127| r1127_30(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1127_30 +# 1127| r1127_31(glval<unknown>) = FunctionAddress[operator*] : +# 1127| r1127_32(int &) = Call[operator*] : func:r1127_31, this:r0_13 +# 1127| mu1127_33(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_13, ~m? -# 1127| r1127_36(int) = Load[?] : &:r1127_34, ~m? -# 1127| mu1127_37(int) = Store[e] : &:r1127_31, r1127_36 +# 1127| r1127_34(int) = Load[?] : &:r1127_32, ~m? +# 1127| mu1127_35(int) = Store[e] : &:r1127_29, r1127_34 # 1128| r1128_1(glval<int>) = VariableAddress[e] : # 1128| r1128_2(int) = Load[e] : &:r1128_1, ~m? # 1128| r1128_3(int) = Constant[0] : @@ -6905,14 +6903,14 @@ ir.cpp: #-----| Goto -> Block 4 # 1127| Block 4 -# 1127| v1127_38(void) = NoOp : -# 1127| r1127_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 1127| r1127_40(glval<unknown>) = FunctionAddress[operator++] : -# 1127| r1127_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_40, this:r1127_39 -# 1127| mu1127_42(unknown) = ^CallSideEffect : ~m? -# 1127| v1127_43(void) = ^IndirectReadSideEffect[-1] : &:r1127_39, ~m? -# 1127| mu1127_44(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_39 -# 1127| r1127_45(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_41 +# 1127| v1127_36(void) = NoOp : +# 1127| r1127_37(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1127| r1127_38(glval<unknown>) = FunctionAddress[operator++] : +# 1127| r1127_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1127_38, this:r1127_37 +# 1127| mu1127_40(unknown) = ^CallSideEffect : ~m? +# 1127| v1127_41(void) = ^IndirectReadSideEffect[-1] : &:r1127_37, ~m? +# 1127| mu1127_42(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1127_37 +# 1127| r1127_43(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1127_39 #-----| Goto (back edge) -> Block 1 # 1133| Block 5 @@ -6928,64 +6926,62 @@ ir.cpp: #-----| r0_15(glval<vector<int>>) = CopyValue : r1133_9 # 1133| r1133_10(glval<unknown>) = FunctionAddress[begin] : # 1133| r1133_11(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r1133_10, this:r0_15 -# 1133| mu1133_12(unknown) = ^CallSideEffect : ~m? #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 1133| mu1133_13(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1133_7, r1133_11 -# 1133| r1133_14(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 1133| r1133_15(glval<vector<int> &>) = VariableAddress[(__range)] : -# 1133| r1133_16(vector<int> &) = Load[(__range)] : &:r1133_15, ~m? -#-----| r0_17(glval<vector<int>>) = CopyValue : r1133_16 -# 1133| r1133_17(glval<unknown>) = FunctionAddress[end] : -# 1133| r1133_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1133_17, this:r0_17 -# 1133| mu1133_19(unknown) = ^CallSideEffect : ~m? +# 1133| mu1133_12(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r1133_7, r1133_11 +# 1133| r1133_13(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 1133| r1133_14(glval<vector<int> &>) = VariableAddress[(__range)] : +# 1133| r1133_15(vector<int> &) = Load[(__range)] : &:r1133_14, ~m? +#-----| r0_17(glval<vector<int>>) = CopyValue : r1133_15 +# 1133| r1133_16(glval<unknown>) = FunctionAddress[end] : +# 1133| r1133_17(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r1133_16, this:r0_17 #-----| v0_18(void) = ^IndirectReadSideEffect[-1] : &:r0_17, ~m? -# 1133| mu1133_20(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1133_14, r1133_18 +# 1133| mu1133_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r1133_13, r1133_17 #-----| Goto -> Block 6 # 1133| Block 6 -# 1133| r1133_21(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_21 -# 1133| r1133_22(glval<unknown>) = FunctionAddress[operator!=] : +# 1133| r1133_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_19 +# 1133| r1133_20(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_20(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| mu0_21(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_20 -# 1133| r1133_23(glval<unknown>) = FunctionAddress[iterator] : -# 1133| r1133_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_24 +# 1133| r1133_21(glval<unknown>) = FunctionAddress[iterator] : +# 1133| r1133_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_22(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_22 #-----| r0_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_22 -# 1133| v1133_25(void) = Call[iterator] : func:r1133_23, this:r0_20, 0:r0_23 -# 1133| mu1133_26(unknown) = ^CallSideEffect : ~m? +# 1133| v1133_23(void) = Call[iterator] : func:r1133_21, this:r0_20, 0:r0_23 +# 1133| mu1133_24(unknown) = ^CallSideEffect : ~m? #-----| v0_24(void) = ^BufferReadSideEffect[0] : &:r0_23, ~m? -# 1133| mu1133_27(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 +# 1133| mu1133_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_20 #-----| r0_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_20, ~m? -# 1133| r1133_28(bool) = Call[operator!=] : func:r1133_22, this:r0_19, 0:r0_25 -# 1133| mu1133_29(unknown) = ^CallSideEffect : ~m? +# 1133| r1133_26(bool) = Call[operator!=] : func:r1133_20, this:r0_19, 0:r0_25 +# 1133| mu1133_27(unknown) = ^CallSideEffect : ~m? #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m? -# 1133| v1133_30(void) = ConditionalBranch : r1133_28 +# 1133| v1133_28(void) = ConditionalBranch : r1133_26 #-----| False -> Block 10 #-----| True -> Block 8 # 1133| Block 7 -# 1133| r1133_31(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 1133| r1133_32(glval<unknown>) = FunctionAddress[operator++] : -# 1133| r1133_33(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_32, this:r1133_31 -# 1133| mu1133_34(unknown) = ^CallSideEffect : ~m? -# 1133| v1133_35(void) = ^IndirectReadSideEffect[-1] : &:r1133_31, ~m? -# 1133| mu1133_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_31 -# 1133| r1133_37(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_33 +# 1133| r1133_29(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 1133| r1133_30(glval<unknown>) = FunctionAddress[operator++] : +# 1133| r1133_31(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r1133_30, this:r1133_29 +# 1133| mu1133_32(unknown) = ^CallSideEffect : ~m? +# 1133| v1133_33(void) = ^IndirectReadSideEffect[-1] : &:r1133_29, ~m? +# 1133| mu1133_34(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r1133_29 +# 1133| r1133_35(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r1133_31 #-----| Goto (back edge) -> Block 6 # 1133| Block 8 -# 1133| r1133_38(glval<int &>) = VariableAddress[e] : -# 1133| r1133_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_39 -# 1133| r1133_40(glval<unknown>) = FunctionAddress[operator*] : -# 1133| r1133_41(int &) = Call[operator*] : func:r1133_40, this:r0_27 -# 1133| mu1133_42(unknown) = ^CallSideEffect : ~m? +# 1133| r1133_36(glval<int &>) = VariableAddress[e] : +# 1133| r1133_37(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r1133_37 +# 1133| r1133_38(glval<unknown>) = FunctionAddress[operator*] : +# 1133| r1133_39(int &) = Call[operator*] : func:r1133_38, this:r0_27 +# 1133| mu1133_40(unknown) = ^CallSideEffect : ~m? #-----| v0_28(void) = ^IndirectReadSideEffect[-1] : &:r0_27, ~m? -# 1133| r1133_43(glval<int>) = CopyValue : r1133_41 -# 1133| r1133_44(glval<int>) = Convert : r1133_43 -# 1133| r1133_45(int &) = CopyValue : r1133_44 -# 1133| mu1133_46(int &) = Store[e] : &:r1133_38, r1133_45 +# 1133| r1133_41(glval<int>) = CopyValue : r1133_39 +# 1133| r1133_42(glval<int>) = Convert : r1133_41 +# 1133| r1133_43(int &) = CopyValue : r1133_42 +# 1133| mu1133_44(int &) = Store[e] : &:r1133_36, r1133_43 # 1134| r1134_1(glval<int &>) = VariableAddress[e] : # 1134| r1134_2(int &) = Load[e] : &:r1134_1, ~m? # 1134| r1134_3(int) = Load[?] : &:r1134_2, ~m? @@ -12492,53 +12488,51 @@ ir.cpp: #-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 # 2201| r2201_19(glval<unknown>) = FunctionAddress[begin] : # 2201| r2201_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2201_19, this:r0_2 -# 2201| mu2201_21(unknown) = ^CallSideEffect : ~m? #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2201| mu2201_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_16, r2201_20 -# 2201| r2201_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2201| r2201_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_24, ~m? -#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_25 +# 2201| mu2201_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_16, r2201_20 +# 2201| r2201_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2201| r2201_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2201| r2201_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_23, ~m? +#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_24 #-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 -# 2201| r2201_26(glval<unknown>) = FunctionAddress[end] : -# 2201| r2201_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_26, this:r0_5 -# 2201| mu2201_28(unknown) = ^CallSideEffect : ~m? +# 2201| r2201_25(glval<unknown>) = FunctionAddress[end] : +# 2201| r2201_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_25, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2201| mu2201_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_23, r2201_27 +# 2201| mu2201_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_22, r2201_26 #-----| Goto -> Block 11 # 2201| Block 11 -# 2201| r2201_30(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_30 -# 2201| r2201_31(glval<unknown>) = FunctionAddress[operator!=] : +# 2201| r2201_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_28 +# 2201| r2201_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2201| r2201_32(glval<unknown>) = FunctionAddress[iterator] : -# 2201| r2201_33(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_33 +# 2201| r2201_30(glval<unknown>) = FunctionAddress[iterator] : +# 2201| r2201_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_31 #-----| r0_11(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_10 -# 2201| v2201_34(void) = Call[iterator] : func:r2201_32, this:r0_8, 0:r0_11 -# 2201| mu2201_35(unknown) = ^CallSideEffect : ~m? +# 2201| v2201_32(void) = Call[iterator] : func:r2201_30, this:r0_8, 0:r0_11 +# 2201| mu2201_33(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2201| mu2201_36(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2201| mu2201_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, ~m? -# 2201| r2201_37(bool) = Call[operator!=] : func:r2201_31, this:r0_7, 0:r0_13 -# 2201| mu2201_38(unknown) = ^CallSideEffect : ~m? +# 2201| r2201_35(bool) = Call[operator!=] : func:r2201_29, this:r0_7, 0:r0_13 +# 2201| mu2201_36(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2201| v2201_39(void) = ConditionalBranch : r2201_37 +# 2201| v2201_37(void) = ConditionalBranch : r2201_35 #-----| False -> Block 14 #-----| True -> Block 12 # 2201| Block 12 -# 2201| r2201_40(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_41(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_41 -# 2201| r2201_42(glval<unknown>) = FunctionAddress[operator*] : -# 2201| r2201_43(ClassWithDestructor &) = Call[operator*] : func:r2201_42, this:r0_15 -# 2201| mu2201_44(unknown) = ^CallSideEffect : ~m? +# 2201| r2201_38(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_39 +# 2201| r2201_40(glval<unknown>) = FunctionAddress[operator*] : +# 2201| r2201_41(ClassWithDestructor &) = Call[operator*] : func:r2201_40, this:r0_15 +# 2201| mu2201_42(unknown) = ^CallSideEffect : ~m? #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2201| r2201_45(ClassWithDestructor) = Load[?] : &:r2201_43, ~m? -# 2201| mu2201_46(ClassWithDestructor) = Store[y] : &:r2201_40, r2201_45 +# 2201| r2201_43(ClassWithDestructor) = Load[?] : &:r2201_41, ~m? +# 2201| mu2201_44(ClassWithDestructor) = Store[y] : &:r2201_38, r2201_43 # 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[y] : # 2202| r2202_2(glval<unknown>) = FunctionAddress[set_x] : # 2202| r2202_3(char) = Constant[97] : @@ -12546,28 +12540,28 @@ ir.cpp: # 2202| mu2202_5(unknown) = ^CallSideEffect : ~m? # 2202| v2202_6(void) = ^IndirectReadSideEffect[-1] : &:r2202_1, ~m? # 2202| mu2202_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 -# 2201| r2201_47(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_48(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2201| v2201_49(void) = Call[~ClassWithDestructor] : func:r2201_48, this:r2201_47 -# 2201| mu2201_50(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_51(void) = ^IndirectReadSideEffect[-1] : &:r2201_47, ~m? -# 2201| mu2201_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_47 -# 2201| r2201_53(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2201| r2201_54(glval<unknown>) = FunctionAddress[operator++] : -# 2201| r2201_55(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_54, this:r2201_53 -# 2201| mu2201_56(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_57(void) = ^IndirectReadSideEffect[-1] : &:r2201_53, ~m? -# 2201| mu2201_58(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_53 -# 2201| r2201_59(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_55 +# 2201| r2201_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2201| r2201_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2201| v2201_47(void) = Call[~ClassWithDestructor] : func:r2201_46, this:r2201_45 +# 2201| mu2201_48(unknown) = ^CallSideEffect : ~m? +# 2201| v2201_49(void) = ^IndirectReadSideEffect[-1] : &:r2201_45, ~m? +# 2201| mu2201_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_45 +# 2201| r2201_51(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2201| r2201_52(glval<unknown>) = FunctionAddress[operator++] : +# 2201| r2201_53(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_52, this:r2201_51 +# 2201| mu2201_54(unknown) = ^CallSideEffect : ~m? +# 2201| v2201_55(void) = ^IndirectReadSideEffect[-1] : &:r2201_51, ~m? +# 2201| mu2201_56(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_51 +# 2201| r2201_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_53 #-----| Goto (back edge) -> Block 11 # 2201| Block 13 -# 2201| r2201_60(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2201| r2201_61(glval<unknown>) = FunctionAddress[~vector] : -# 2201| v2201_62(void) = Call[~vector] : func:r2201_61, this:r2201_60 -# 2201| mu2201_63(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_64(void) = ^IndirectReadSideEffect[-1] : &:r2201_60, ~m? -# 2201| mu2201_65(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_60 +# 2201| r2201_58(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2201| r2201_59(glval<unknown>) = FunctionAddress[~vector] : +# 2201| v2201_60(void) = Call[~vector] : func:r2201_59, this:r2201_58 +# 2201| mu2201_61(unknown) = ^CallSideEffect : ~m? +# 2201| v2201_62(void) = ^IndirectReadSideEffect[-1] : &:r2201_58, ~m? +# 2201| mu2201_63(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_58 #-----| Goto -> Block 14 # 2204| Block 14 @@ -12593,53 +12587,51 @@ ir.cpp: #-----| r0_18(glval<vector<ClassWithDestructor>>) = Convert : r0_17 # 2204| r2204_19(glval<unknown>) = FunctionAddress[begin] : # 2204| r2204_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2204_19, this:r0_18 -# 2204| mu2204_21(unknown) = ^CallSideEffect : ~m? #-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m? -# 2204| mu2204_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_16, r2204_20 -# 2204| r2204_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2204| r2204_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_24, ~m? -#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_25 +# 2204| mu2204_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_16, r2204_20 +# 2204| r2204_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2204| r2204_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2204| r2204_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_23, ~m? +#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_24 #-----| r0_21(glval<vector<ClassWithDestructor>>) = Convert : r0_20 -# 2204| r2204_26(glval<unknown>) = FunctionAddress[end] : -# 2204| r2204_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_26, this:r0_21 -# 2204| mu2204_28(unknown) = ^CallSideEffect : ~m? +# 2204| r2204_25(glval<unknown>) = FunctionAddress[end] : +# 2204| r2204_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_25, this:r0_21 #-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? -# 2204| mu2204_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_23, r2204_27 +# 2204| mu2204_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_22, r2204_26 #-----| Goto -> Block 15 # 2204| Block 15 -# 2204| r2204_30(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_30 -# 2204| r2204_31(glval<unknown>) = FunctionAddress[operator!=] : +# 2204| r2204_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_28 +# 2204| r2204_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| mu0_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_24 -# 2204| r2204_32(glval<unknown>) = FunctionAddress[iterator] : -# 2204| r2204_33(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_33 +# 2204| r2204_30(glval<unknown>) = FunctionAddress[iterator] : +# 2204| r2204_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_31 #-----| r0_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_26 -# 2204| v2204_34(void) = Call[iterator] : func:r2204_32, this:r0_24, 0:r0_27 -# 2204| mu2204_35(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_32(void) = Call[iterator] : func:r2204_30, this:r0_24, 0:r0_27 +# 2204| mu2204_33(unknown) = ^CallSideEffect : ~m? #-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m? -# 2204| mu2204_36(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 +# 2204| mu2204_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 #-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, ~m? -# 2204| r2204_37(bool) = Call[operator!=] : func:r2204_31, this:r0_23, 0:r0_29 -# 2204| mu2204_38(unknown) = ^CallSideEffect : ~m? +# 2204| r2204_35(bool) = Call[operator!=] : func:r2204_29, this:r0_23, 0:r0_29 +# 2204| mu2204_36(unknown) = ^CallSideEffect : ~m? #-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, ~m? -# 2204| v2204_39(void) = ConditionalBranch : r2204_37 +# 2204| v2204_37(void) = ConditionalBranch : r2204_35 #-----| False -> Block 20 #-----| True -> Block 16 # 2204| Block 16 -# 2204| r2204_40(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_41(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_41 -# 2204| r2204_42(glval<unknown>) = FunctionAddress[operator*] : -# 2204| r2204_43(ClassWithDestructor &) = Call[operator*] : func:r2204_42, this:r0_31 -# 2204| mu2204_44(unknown) = ^CallSideEffect : ~m? +# 2204| r2204_38(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_39 +# 2204| r2204_40(glval<unknown>) = FunctionAddress[operator*] : +# 2204| r2204_41(ClassWithDestructor &) = Call[operator*] : func:r2204_40, this:r0_31 +# 2204| mu2204_42(unknown) = ^CallSideEffect : ~m? #-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? -# 2204| r2204_45(ClassWithDestructor) = Load[?] : &:r2204_43, ~m? -# 2204| mu2204_46(ClassWithDestructor) = Store[y] : &:r2204_40, r2204_45 +# 2204| r2204_43(ClassWithDestructor) = Load[?] : &:r2204_41, ~m? +# 2204| mu2204_44(ClassWithDestructor) = Store[y] : &:r2204_38, r2204_43 # 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[y] : # 2205| r2205_2(glval<unknown>) = FunctionAddress[set_x] : # 2205| r2205_3(char) = Constant[97] : @@ -12662,18 +12654,18 @@ ir.cpp: # 2207| Block 17 # 2207| v2207_1(void) = NoOp : -# 2204| r2204_47(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_48(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_49(void) = Call[~ClassWithDestructor] : func:r2204_48, this:r2204_47 -# 2204| mu2204_50(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_51(void) = ^IndirectReadSideEffect[-1] : &:r2204_47, ~m? -# 2204| mu2204_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_47 -# 2204| r2204_53(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_54(glval<unknown>) = FunctionAddress[~vector] : -# 2204| v2204_55(void) = Call[~vector] : func:r2204_54, this:r2204_53 -# 2204| mu2204_56(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_57(void) = ^IndirectReadSideEffect[-1] : &:r2204_53, ~m? -# 2204| mu2204_58(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_53 +# 2204| r2204_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_47(void) = Call[~ClassWithDestructor] : func:r2204_46, this:r2204_45 +# 2204| mu2204_48(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_49(void) = ^IndirectReadSideEffect[-1] : &:r2204_45, ~m? +# 2204| mu2204_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_45 +# 2204| r2204_51(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_52(glval<unknown>) = FunctionAddress[~vector] : +# 2204| v2204_53(void) = Call[~vector] : func:r2204_52, this:r2204_51 +# 2204| mu2204_54(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_55(void) = ^IndirectReadSideEffect[-1] : &:r2204_51, ~m? +# 2204| mu2204_56(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_51 # 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[x] : # 2219| r2219_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : # 2219| v2219_3(void) = Call[~ClassWithDestructor] : func:r2219_2, this:r2219_1 @@ -12683,28 +12675,28 @@ ir.cpp: #-----| Goto -> Block 1 # 2204| Block 18 -# 2204| r2204_59(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_60(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_61(void) = Call[~ClassWithDestructor] : func:r2204_60, this:r2204_59 -# 2204| mu2204_62(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_63(void) = ^IndirectReadSideEffect[-1] : &:r2204_59, ~m? -# 2204| mu2204_64(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_59 -# 2204| r2204_65(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2204| r2204_66(glval<unknown>) = FunctionAddress[operator++] : -# 2204| r2204_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_66, this:r2204_65 -# 2204| mu2204_68(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_69(void) = ^IndirectReadSideEffect[-1] : &:r2204_65, ~m? -# 2204| mu2204_70(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_65 -# 2204| r2204_71(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_67 +# 2204| r2204_57(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2204| r2204_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2204| v2204_59(void) = Call[~ClassWithDestructor] : func:r2204_58, this:r2204_57 +# 2204| mu2204_60(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_61(void) = ^IndirectReadSideEffect[-1] : &:r2204_57, ~m? +# 2204| mu2204_62(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_57 +# 2204| r2204_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2204| r2204_64(glval<unknown>) = FunctionAddress[operator++] : +# 2204| r2204_65(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_64, this:r2204_63 +# 2204| mu2204_66(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_67(void) = ^IndirectReadSideEffect[-1] : &:r2204_63, ~m? +# 2204| mu2204_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_63 +# 2204| r2204_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_65 #-----| Goto (back edge) -> Block 15 # 2204| Block 19 -# 2204| r2204_72(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_73(glval<unknown>) = FunctionAddress[~vector] : -# 2204| v2204_74(void) = Call[~vector] : func:r2204_73, this:r2204_72 -# 2204| mu2204_75(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_76(void) = ^IndirectReadSideEffect[-1] : &:r2204_72, ~m? -# 2204| mu2204_77(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_72 +# 2204| r2204_70(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2204| r2204_71(glval<unknown>) = FunctionAddress[~vector] : +# 2204| v2204_72(void) = Call[~vector] : func:r2204_71, this:r2204_70 +# 2204| mu2204_73(unknown) = ^CallSideEffect : ~m? +# 2204| v2204_74(void) = ^IndirectReadSideEffect[-1] : &:r2204_70, ~m? +# 2204| mu2204_75(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_70 #-----| Goto -> Block 20 # 2210| Block 20 @@ -12726,63 +12718,61 @@ ir.cpp: #-----| r0_34(glval<vector<int>>) = Convert : r0_33 # 2210| r2210_15(glval<unknown>) = FunctionAddress[begin] : # 2210| r2210_16(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2210_15, this:r0_34 -# 2210| mu2210_17(unknown) = ^CallSideEffect : ~m? #-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? -# 2210| mu2210_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_12, r2210_16 -# 2210| r2210_19(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 2210| r2210_20(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_21(vector<int> &) = Load[(__range)] : &:r2210_20, ~m? -#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_21 +# 2210| mu2210_17(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_12, r2210_16 +# 2210| r2210_18(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 2210| r2210_19(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2210| r2210_20(vector<int> &) = Load[(__range)] : &:r2210_19, ~m? +#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_20 #-----| r0_37(glval<vector<int>>) = Convert : r0_36 -# 2210| r2210_22(glval<unknown>) = FunctionAddress[end] : -# 2210| r2210_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_22, this:r0_37 -# 2210| mu2210_24(unknown) = ^CallSideEffect : ~m? +# 2210| r2210_21(glval<unknown>) = FunctionAddress[end] : +# 2210| r2210_22(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_21, this:r0_37 #-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m? -# 2210| mu2210_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_19, r2210_23 +# 2210| mu2210_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_18, r2210_22 #-----| Goto -> Block 21 # 2210| Block 21 -# 2210| r2210_26(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_26 -# 2210| r2210_27(glval<unknown>) = FunctionAddress[operator!=] : +# 2210| r2210_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_24 +# 2210| r2210_25(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| mu0_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_40 -# 2210| r2210_28(glval<unknown>) = FunctionAddress[iterator] : -# 2210| r2210_29(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_29 +# 2210| r2210_26(glval<unknown>) = FunctionAddress[iterator] : +# 2210| r2210_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_27 #-----| r0_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_42 -# 2210| v2210_30(void) = Call[iterator] : func:r2210_28, this:r0_40, 0:r0_43 -# 2210| mu2210_31(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_28(void) = Call[iterator] : func:r2210_26, this:r0_40, 0:r0_43 +# 2210| mu2210_29(unknown) = ^CallSideEffect : ~m? #-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m? -# 2210| mu2210_32(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 +# 2210| mu2210_30(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 #-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, ~m? -# 2210| r2210_33(bool) = Call[operator!=] : func:r2210_27, this:r0_39, 0:r0_45 -# 2210| mu2210_34(unknown) = ^CallSideEffect : ~m? +# 2210| r2210_31(bool) = Call[operator!=] : func:r2210_25, this:r0_39, 0:r0_45 +# 2210| mu2210_32(unknown) = ^CallSideEffect : ~m? #-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m? -# 2210| v2210_35(void) = ConditionalBranch : r2210_33 +# 2210| v2210_33(void) = ConditionalBranch : r2210_31 #-----| False -> Block 26 #-----| True -> Block 23 # 2210| Block 22 -# 2210| r2210_36(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 2210| r2210_37(glval<unknown>) = FunctionAddress[operator++] : -# 2210| r2210_38(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_37, this:r2210_36 -# 2210| mu2210_39(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_40(void) = ^IndirectReadSideEffect[-1] : &:r2210_36, ~m? -# 2210| mu2210_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_36 -# 2210| r2210_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_38 +# 2210| r2210_34(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2210| r2210_35(glval<unknown>) = FunctionAddress[operator++] : +# 2210| r2210_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_35, this:r2210_34 +# 2210| mu2210_37(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_38(void) = ^IndirectReadSideEffect[-1] : &:r2210_34, ~m? +# 2210| mu2210_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_34 +# 2210| r2210_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_36 #-----| Goto (back edge) -> Block 21 # 2210| Block 23 -# 2210| r2210_43(glval<int>) = VariableAddress[y] : -# 2210| r2210_44(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_44 -# 2210| r2210_45(glval<unknown>) = FunctionAddress[operator*] : -# 2210| r2210_46(int &) = Call[operator*] : func:r2210_45, this:r0_47 -# 2210| mu2210_47(unknown) = ^CallSideEffect : ~m? +# 2210| r2210_41(glval<int>) = VariableAddress[y] : +# 2210| r2210_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_42 +# 2210| r2210_43(glval<unknown>) = FunctionAddress[operator*] : +# 2210| r2210_44(int &) = Call[operator*] : func:r2210_43, this:r0_47 +# 2210| mu2210_45(unknown) = ^CallSideEffect : ~m? #-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, ~m? -# 2210| r2210_48(int) = Load[?] : &:r2210_46, ~m? -# 2210| mu2210_49(int) = Store[y] : &:r2210_43, r2210_48 +# 2210| r2210_46(int) = Load[?] : &:r2210_44, ~m? +# 2210| mu2210_47(int) = Store[y] : &:r2210_41, r2210_46 # 2211| r2211_1(glval<int>) = VariableAddress[y] : # 2211| r2211_2(int) = Load[y] : &:r2211_1, ~m? # 2211| r2211_3(int) = Constant[1] : @@ -12793,12 +12783,12 @@ ir.cpp: # 2212| Block 24 # 2212| v2212_1(void) = NoOp : -# 2210| r2210_50(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_51(glval<unknown>) = FunctionAddress[~vector] : -# 2210| v2210_52(void) = Call[~vector] : func:r2210_51, this:r2210_50 -# 2210| mu2210_53(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_54(void) = ^IndirectReadSideEffect[-1] : &:r2210_50, ~m? -# 2210| mu2210_55(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_50 +# 2210| r2210_48(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_49(glval<unknown>) = FunctionAddress[~vector] : +# 2210| v2210_50(void) = Call[~vector] : func:r2210_49, this:r2210_48 +# 2210| mu2210_51(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_52(void) = ^IndirectReadSideEffect[-1] : &:r2210_48, ~m? +# 2210| mu2210_53(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_48 # 2219| r2219_7(glval<ClassWithDestructor>) = VariableAddress[x] : # 2219| r2219_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : # 2219| v2219_9(void) = Call[~ClassWithDestructor] : func:r2219_8, this:r2219_7 @@ -12808,12 +12798,12 @@ ir.cpp: #-----| Goto -> Block 1 # 2210| Block 25 -# 2210| r2210_56(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_57(glval<unknown>) = FunctionAddress[~vector] : -# 2210| v2210_58(void) = Call[~vector] : func:r2210_57, this:r2210_56 -# 2210| mu2210_59(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_60(void) = ^IndirectReadSideEffect[-1] : &:r2210_56, ~m? -# 2210| mu2210_61(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_56 +# 2210| r2210_54(glval<vector<int>>) = VariableAddress[ys] : +# 2210| r2210_55(glval<unknown>) = FunctionAddress[~vector] : +# 2210| v2210_56(void) = Call[~vector] : func:r2210_55, this:r2210_54 +# 2210| mu2210_57(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_58(void) = ^IndirectReadSideEffect[-1] : &:r2210_54, ~m? +# 2210| mu2210_59(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_54 #-----| Goto -> Block 26 # 2215| Block 26 @@ -12839,53 +12829,51 @@ ir.cpp: #-----| r0_50(glval<vector<ClassWithDestructor>>) = Convert : r0_49 # 2215| r2215_19(glval<unknown>) = FunctionAddress[begin] : # 2215| r2215_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_19, this:r0_50 -# 2215| mu2215_21(unknown) = ^CallSideEffect : ~m? #-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, ~m? -# 2215| mu2215_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_16, r2215_20 -# 2215| r2215_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2215| r2215_24(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_25(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_24, ~m? -#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_25 +# 2215| mu2215_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_16, r2215_20 +# 2215| r2215_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2215| r2215_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_23, ~m? +#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_24 #-----| r0_53(glval<vector<ClassWithDestructor>>) = Convert : r0_52 -# 2215| r2215_26(glval<unknown>) = FunctionAddress[end] : -# 2215| r2215_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_26, this:r0_53 -# 2215| mu2215_28(unknown) = ^CallSideEffect : ~m? +# 2215| r2215_25(glval<unknown>) = FunctionAddress[end] : +# 2215| r2215_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_25, this:r0_53 #-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, ~m? -# 2215| mu2215_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_23, r2215_27 +# 2215| mu2215_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_22, r2215_26 #-----| Goto -> Block 27 # 2215| Block 27 -# 2215| r2215_30(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_30 -# 2215| r2215_31(glval<unknown>) = FunctionAddress[operator!=] : +# 2215| r2215_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_28 +# 2215| r2215_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_56(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| mu0_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_56 -# 2215| r2215_32(glval<unknown>) = FunctionAddress[iterator] : -# 2215| r2215_33(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_33 +# 2215| r2215_30(glval<unknown>) = FunctionAddress[iterator] : +# 2215| r2215_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_31 #-----| r0_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_58 -# 2215| v2215_34(void) = Call[iterator] : func:r2215_32, this:r0_56, 0:r0_59 -# 2215| mu2215_35(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_32(void) = Call[iterator] : func:r2215_30, this:r0_56, 0:r0_59 +# 2215| mu2215_33(unknown) = ^CallSideEffect : ~m? #-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m? -# 2215| mu2215_36(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 +# 2215| mu2215_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 #-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, ~m? -# 2215| r2215_37(bool) = Call[operator!=] : func:r2215_31, this:r0_55, 0:r0_61 -# 2215| mu2215_38(unknown) = ^CallSideEffect : ~m? +# 2215| r2215_35(bool) = Call[operator!=] : func:r2215_29, this:r0_55, 0:r0_61 +# 2215| mu2215_36(unknown) = ^CallSideEffect : ~m? #-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, ~m? -# 2215| v2215_39(void) = ConditionalBranch : r2215_37 +# 2215| v2215_37(void) = ConditionalBranch : r2215_35 #-----| False -> Block 30 #-----| True -> Block 28 # 2215| Block 28 -# 2215| r2215_40(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_41(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_41 -# 2215| r2215_42(glval<unknown>) = FunctionAddress[operator*] : -# 2215| r2215_43(ClassWithDestructor &) = Call[operator*] : func:r2215_42, this:r0_63 -# 2215| mu2215_44(unknown) = ^CallSideEffect : ~m? +# 2215| r2215_38(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_39 +# 2215| r2215_40(glval<unknown>) = FunctionAddress[operator*] : +# 2215| r2215_41(ClassWithDestructor &) = Call[operator*] : func:r2215_40, this:r0_63 +# 2215| mu2215_42(unknown) = ^CallSideEffect : ~m? #-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, ~m? -# 2215| r2215_45(ClassWithDestructor) = Load[?] : &:r2215_43, ~m? -# 2215| mu2215_46(ClassWithDestructor) = Store[y] : &:r2215_40, r2215_45 +# 2215| r2215_43(ClassWithDestructor) = Load[?] : &:r2215_41, ~m? +# 2215| mu2215_44(ClassWithDestructor) = Store[y] : &:r2215_38, r2215_43 # 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[z1] : # 2216| mu2216_2(ClassWithDestructor) = Uninitialized[z1] : &:r2216_1 # 2216| r2216_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : @@ -12910,28 +12898,28 @@ ir.cpp: # 2218| mu2218_10(unknown) = ^CallSideEffect : ~m? # 2218| v2218_11(void) = ^IndirectReadSideEffect[-1] : &:r2218_7, ~m? # 2218| mu2218_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_7 -# 2215| r2215_47(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_48(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2215| v2215_49(void) = Call[~ClassWithDestructor] : func:r2215_48, this:r2215_47 -# 2215| mu2215_50(unknown) = ^CallSideEffect : ~m? -# 2215| v2215_51(void) = ^IndirectReadSideEffect[-1] : &:r2215_47, ~m? -# 2215| mu2215_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_47 -# 2215| r2215_53(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2215| r2215_54(glval<unknown>) = FunctionAddress[operator++] : -# 2215| r2215_55(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_54, this:r2215_53 -# 2215| mu2215_56(unknown) = ^CallSideEffect : ~m? -# 2215| v2215_57(void) = ^IndirectReadSideEffect[-1] : &:r2215_53, ~m? -# 2215| mu2215_58(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_53 -# 2215| r2215_59(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_55 +# 2215| r2215_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_47(void) = Call[~ClassWithDestructor] : func:r2215_46, this:r2215_45 +# 2215| mu2215_48(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_49(void) = ^IndirectReadSideEffect[-1] : &:r2215_45, ~m? +# 2215| mu2215_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_45 +# 2215| r2215_51(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_52(glval<unknown>) = FunctionAddress[operator++] : +# 2215| r2215_53(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_52, this:r2215_51 +# 2215| mu2215_54(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_55(void) = ^IndirectReadSideEffect[-1] : &:r2215_51, ~m? +# 2215| mu2215_56(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_51 +# 2215| r2215_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_53 #-----| Goto (back edge) -> Block 27 # 2215| Block 29 -# 2215| r2215_60(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2215| r2215_61(glval<unknown>) = FunctionAddress[~vector] : -# 2215| v2215_62(void) = Call[~vector] : func:r2215_61, this:r2215_60 -# 2215| mu2215_63(unknown) = ^CallSideEffect : ~m? -# 2215| v2215_64(void) = ^IndirectReadSideEffect[-1] : &:r2215_60, ~m? -# 2215| mu2215_65(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_60 +# 2215| r2215_58(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| r2215_59(glval<unknown>) = FunctionAddress[~vector] : +# 2215| v2215_60(void) = Call[~vector] : func:r2215_59, this:r2215_58 +# 2215| mu2215_61(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_62(void) = ^IndirectReadSideEffect[-1] : &:r2215_58, ~m? +# 2215| mu2215_63(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_58 #-----| Goto -> Block 30 # 2219| Block 30 @@ -13490,60 +13478,58 @@ ir.cpp: #-----| r0_2(glval<vector<String>>) = Convert : r0_1 # 2293| r2293_23(glval<unknown>) = FunctionAddress[begin] : # 2293| r2293_24(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2293_23, this:r0_2 -# 2293| mu2293_25(unknown) = ^CallSideEffect : ~m? #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2293| mu2293_26(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_20, r2293_24 -# 2293| r2293_27(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -# 2293| r2293_28(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_29(vector<String> &&) = Load[(__range)] : &:r2293_28, ~m? -#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_29 +# 2293| mu2293_25(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_20, r2293_24 +# 2293| r2293_26(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +# 2293| r2293_27(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2293| r2293_28(vector<String> &&) = Load[(__range)] : &:r2293_27, ~m? +#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_28 #-----| r0_5(glval<vector<String>>) = Convert : r0_4 -# 2293| r2293_30(glval<unknown>) = FunctionAddress[end] : -# 2293| r2293_31(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_30, this:r0_5 -# 2293| mu2293_32(unknown) = ^CallSideEffect : ~m? +# 2293| r2293_29(glval<unknown>) = FunctionAddress[end] : +# 2293| r2293_30(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_29, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2293| mu2293_33(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_27, r2293_31 +# 2293| mu2293_31(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_26, r2293_30 #-----| Goto -> Block 4 # 2293| Block 4 -# 2293| r2293_34(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_34 -# 2293| r2293_35(glval<unknown>) = FunctionAddress[operator!=] : +# 2293| r2293_32(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_32 +# 2293| r2293_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2293| r2293_36(glval<unknown>) = FunctionAddress[iterator] : -# 2293| r2293_37(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_37 +# 2293| r2293_34(glval<unknown>) = FunctionAddress[iterator] : +# 2293| r2293_35(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_35 #-----| r0_11(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = CopyValue : r0_10 -# 2293| v2293_38(void) = Call[iterator] : func:r2293_36, this:r0_8, 0:r0_11 -# 2293| mu2293_39(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_36(void) = Call[iterator] : func:r2293_34, this:r0_8, 0:r0_11 +# 2293| mu2293_37(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2293| mu2293_40(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2293| mu2293_38(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, ~m? -# 2293| r2293_41(bool) = Call[operator!=] : func:r2293_35, this:r0_7, 0:r0_13 -# 2293| mu2293_42(unknown) = ^CallSideEffect : ~m? +# 2293| r2293_39(bool) = Call[operator!=] : func:r2293_33, this:r0_7, 0:r0_13 +# 2293| mu2293_40(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2293| v2293_43(void) = ConditionalBranch : r2293_41 +# 2293| v2293_41(void) = ConditionalBranch : r2293_39 #-----| False -> Block 6 #-----| True -> Block 5 # 2293| Block 5 -# 2293| r2293_44(glval<String>) = VariableAddress[s] : -# 2293| mu2293_45(String) = Uninitialized[s] : &:r2293_44 -# 2293| r2293_46(glval<unknown>) = FunctionAddress[String] : -# 2293| r2293_47(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_47 -# 2293| r2293_48(glval<unknown>) = FunctionAddress[operator*] : -# 2293| r2293_49(String &) = Call[operator*] : func:r2293_48, this:r0_15 -# 2293| mu2293_50(unknown) = ^CallSideEffect : ~m? +# 2293| r2293_42(glval<String>) = VariableAddress[s] : +# 2293| mu2293_43(String) = Uninitialized[s] : &:r2293_42 +# 2293| r2293_44(glval<unknown>) = FunctionAddress[String] : +# 2293| r2293_45(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_45 +# 2293| r2293_46(glval<unknown>) = FunctionAddress[operator*] : +# 2293| r2293_47(String &) = Call[operator*] : func:r2293_46, this:r0_15 +# 2293| mu2293_48(unknown) = ^CallSideEffect : ~m? #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2293| r2293_51(glval<String>) = CopyValue : r2293_49 -# 2293| r2293_52(glval<String>) = Convert : r2293_51 -# 2293| r2293_53(String &) = CopyValue : r2293_52 -# 2293| v2293_54(void) = Call[String] : func:r2293_46, this:r2293_44, 0:r2293_53 -# 2293| mu2293_55(unknown) = ^CallSideEffect : ~m? -# 2293| v2293_56(void) = ^BufferReadSideEffect[0] : &:r2293_53, ~m? -# 2293| mu2293_57(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_44 +# 2293| r2293_49(glval<String>) = CopyValue : r2293_47 +# 2293| r2293_50(glval<String>) = Convert : r2293_49 +# 2293| r2293_51(String &) = CopyValue : r2293_50 +# 2293| v2293_52(void) = Call[String] : func:r2293_44, this:r2293_42, 0:r2293_51 +# 2293| mu2293_53(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_54(void) = ^BufferReadSideEffect[0] : &:r2293_51, ~m? +# 2293| mu2293_55(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_42 # 2294| r2294_1(glval<String>) = VariableAddress[s2] : # 2294| mu2294_2(String) = Uninitialized[s2] : &:r2294_1 # 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : @@ -13556,19 +13542,19 @@ ir.cpp: # 2295| mu2295_4(unknown) = ^CallSideEffect : ~m? # 2295| v2295_5(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, ~m? # 2295| mu2295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 -# 2293| r2293_58(glval<String>) = VariableAddress[s] : -# 2293| r2293_59(glval<unknown>) = FunctionAddress[~String] : -# 2293| v2293_60(void) = Call[~String] : func:r2293_59, this:r2293_58 -# 2293| mu2293_61(unknown) = ^CallSideEffect : ~m? -# 2293| v2293_62(void) = ^IndirectReadSideEffect[-1] : &:r2293_58, ~m? -# 2293| mu2293_63(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_58 -# 2293| r2293_64(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -# 2293| r2293_65(glval<unknown>) = FunctionAddress[operator++] : -# 2293| r2293_66(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_65, this:r2293_64 -# 2293| mu2293_67(unknown) = ^CallSideEffect : ~m? -# 2293| v2293_68(void) = ^IndirectReadSideEffect[-1] : &:r2293_64, ~m? -# 2293| mu2293_69(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_64 -# 2293| r2293_70(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_66 +# 2293| r2293_56(glval<String>) = VariableAddress[s] : +# 2293| r2293_57(glval<unknown>) = FunctionAddress[~String] : +# 2293| v2293_58(void) = Call[~String] : func:r2293_57, this:r2293_56 +# 2293| mu2293_59(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_60(void) = ^IndirectReadSideEffect[-1] : &:r2293_56, ~m? +# 2293| mu2293_61(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_56 +# 2293| r2293_62(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2293| r2293_63(glval<unknown>) = FunctionAddress[operator++] : +# 2293| r2293_64(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_63, this:r2293_62 +# 2293| mu2293_65(unknown) = ^CallSideEffect : ~m? +# 2293| v2293_66(void) = ^IndirectReadSideEffect[-1] : &:r2293_62, ~m? +# 2293| mu2293_67(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_62 +# 2293| r2293_68(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_64 #-----| Goto (back edge) -> Block 4 # 2297| Block 6 From 342465057c34e44f0e825d9604338de393a6ef3a Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Sat, 13 Jan 2024 10:29:32 +0100 Subject: [PATCH 256/731] Add Unicode DoS (CWE-770) --- .../Security/CWE-770/UnicodeDoS.qhelp | 38 +++++++ .../Security/CWE-770/UnicodeDoS.ql | 104 ++++++++++++++++++ .../src/experimental/Security/CWE-770/bad.py | 17 +++ .../src/experimental/Security/CWE-770/good.py | 16 +++ .../Security/CWE-770/UnicodeDoS.expected | 55 +++++++++ .../Security/CWE-770/UnicodeDoS.qlref | 1 + .../query-tests/Security/CWE-770/tests.py | 80 ++++++++++++++ 7 files changed, 311 insertions(+) create mode 100644 python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp create mode 100644 python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql create mode 100644 python/ql/src/experimental/Security/CWE-770/bad.py create mode 100644 python/ql/src/experimental/Security/CWE-770/good.py create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.qlref create mode 100644 python/ql/test/experimental/query-tests/Security/CWE-770/tests.py diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp new file mode 100644 index 000000000000..53a19e9bca3f --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp @@ -0,0 +1,38 @@ +<!DOCTYPE qhelp PUBLIC + "-//Semmle//qhelp//EN" + "qhelp.dtd"> +<qhelp> + +<overview> +<p>When a remote user-controlled data can reach a costly Unicode normalization with either form, NFKC or NFKD, an attack such as the One Million Unicode Characters, could lead to a denial of service on Windows OS.</p> + +<p>And, with the use of special Unicode characters, like U+2100 (℀) or U+2105 (℅), the payload size could be tripled after the compatibility normalization. + +</overview> +<recommendation> + +<p>Ensure limiting the size of any incoming data that would go through a costly operations, including a Windows Unicode normalization with NFKC or NFKD. Such a recommandation would avoid a potential denial of service.</p> + +</recommendation> + +<example> +<p> +In this example a simple user-controlled data reaches a Unicode normalization with the form "NFKC". +</p> + +<sample src="bad.py" /> + +<p>To fix this vulnerability, we need restrain the size of the user input.</p> + +<p>For example, we can use the <code>len()</code> builtin function to limit the size of the user input.</p> + +<sample src="good.py" /> + +</example> +<references> + +<li> + <a href="https://hackerone.com/reports/2258758">CVE-2023-46695: Potential denial of service vulnerability in Django UsernameField on Windows.</a> + </li> +</references> +</qhelp> diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql new file mode 100644 index 000000000000..644f8c024df2 --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -0,0 +1,104 @@ +/** + * @name Denial of Service using Unicode Characters + * @description A remote user-controlled data can reach a costly Unicode normalization with either form NFKC or NFKD. On Windows OS, with an attack such as the One Million Unicode Characters, this could lead to a denial of service. And, with the use of special Unicode characters, like U+2100 (℀) or U+2105 (℅), the payload size could be tripled. + * @kind path-problem + * @id py/unicode-dos + * @precision high + * @problem.severity error + * @tags security + * experimental + * external/cwe/cwe-770 + */ + +import python +import semmle.python.ApiGraphs +import semmle.python.Concepts +import semmle.python.dataflow.new.TaintTracking +import semmle.python.dataflow.new.internal.DataFlowPublic +import semmle.python.dataflow.new.RemoteFlowSources + +class UnicodeCompatibilityNormalize extends API::CallNode { + int argIdx; + + UnicodeCompatibilityNormalize() { + exists(API::CallNode cn, DataFlow::Node form | + cn = API::moduleImport("unicodedata").getMember("normalize").getACall() and + form.asExpr().(StrConst).getS() in ["NFKC", "NFKD"] and + TaintTracking::localTaint(form, cn.getArg(0)) and + this = cn and + argIdx = 1 + ) + or + exists(API::CallNode cn | + cn = API::moduleImport("unidecode").getMember("unidecode").getACall() and + this = cn and + argIdx = 0 + ) + or + exists(API::CallNode cn | + cn = API::moduleImport("pyunormalize").getMember(["NFKC", "NFKD"]).getACall() and + this = cn and + argIdx = 0 + ) + or + exists(API::CallNode cn, DataFlow::Node form | + cn = API::moduleImport("pyunormalize").getMember("normalize").getACall() and + form.asExpr().(StrConst).getS() in ["NFKC", "NFKD"] and + TaintTracking::localTaint(form, cn.getArg(0)) and + this = cn and + argIdx = 1 + ) + or + exists(API::CallNode cn, DataFlow::Node form | + cn = API::moduleImport("textnorm").getMember("normalize_unicode").getACall() and + form.asExpr().(StrConst).getS() in ["NFKC", "NFKD"] and + TaintTracking::localTaint(form, cn.getArg(1)) and + this = cn and + argIdx = 0 + ) + } + + DataFlow::Node getPathArg() { result = this.getArg(argIdx) } +} + +predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branch) { + exists(CompareNode cn | cn = g | + exists(API::CallNode lenCall, Cmpop op_gt, Cmpop op_lt, Node n | + lenCall = n.getALocalSource() and + ( + (op_lt = any(LtE lte) or op_lt = any(Lt lt)) and + branch = true and + cn.operands(n.asCfgNode(), op_lt, _) + or + (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and + branch = true and + cn.operands(_, op_gt, n.asCfgNode()) + ) + | + lenCall = API::builtin("len").getACall() and + node = lenCall.getArg(0).asCfgNode() + ) //and + //not cn.getLocation().getFile().inStdlib() + ) +} + +class Configuration extends TaintTracking::Configuration { + Configuration() { this = "RemoteSourcesReachUnicodeCharacters" } + + override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + + override predicate isSanitizer(DataFlow::Node sanitizer) { + sanitizer = DataFlow::BarrierGuard<underAValue/3>::getABarrierNode() + } + + override predicate isSink(DataFlow::Node sink) { + sink = any(UnicodeCompatibilityNormalize ucn).getPathArg() + } +} + +import DataFlow::PathGraph + +from Configuration config, DataFlow::PathNode source, DataFlow::PathNode sink +where config.hasFlowPath(source, sink) +select sink.getNode(), source, sink, "This $@ can reach a $@.", source.getNode(), + "user-provided value", sink.getNode(), "costly Unicode normalization operation" diff --git a/python/ql/src/experimental/Security/CWE-770/bad.py b/python/ql/src/experimental/Security/CWE-770/bad.py new file mode 100644 index 000000000000..92260955431e --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-770/bad.py @@ -0,0 +1,17 @@ +from flask import Flask, jsonify, request +import unicodedata + +app = Flask(__name__) + + +@app.route("/bad_1") +def bad_1(): + # User controlled data + file_path = request.args.get("file_path", "") + + # Normalize the file path using NFKC Unicode normalization + return ( + unicodedata.normalize("NFKC", file_path), + 200, + {"Content-Type": "application/octet-stream"}, + ) diff --git a/python/ql/src/experimental/Security/CWE-770/good.py b/python/ql/src/experimental/Security/CWE-770/good.py new file mode 100644 index 000000000000..ce171a16015f --- /dev/null +++ b/python/ql/src/experimental/Security/CWE-770/good.py @@ -0,0 +1,16 @@ +from flask import Flask, jsonify, request +import unicodedata + +app = Flask(__name__) + + +@app.route("/good_1") +def good_1(): + r = request.args.get("r", "") + + if len(r) <= 1_000: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 diff --git a/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected new file mode 100644 index 000000000000..f05da0006575 --- /dev/null +++ b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected @@ -0,0 +1,55 @@ +WARNING: Module PathGraph has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:99,8-27) +WARNING: Type Configuration has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:85,29-57) +WARNING: Type PathNode has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:101,28-46) +WARNING: Type PathNode has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:101,55-73) +edges +| tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:1:35:1:41 | ControlFlowNode for request | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:12:17:12:23 | ControlFlowNode for request | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:24:9:24:15 | ControlFlowNode for request | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:36:9:36:15 | ControlFlowNode for request | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:48:9:48:15 | ControlFlowNode for request | +| tests.py:12:5:12:13 | ControlFlowNode for file_path | tests.py:16:39:16:47 | ControlFlowNode for file_path | +| tests.py:12:17:12:23 | ControlFlowNode for request | tests.py:12:17:12:28 | ControlFlowNode for Attribute | +| tests.py:12:17:12:28 | ControlFlowNode for Attribute | tests.py:12:17:12:49 | ControlFlowNode for Attribute() | +| tests.py:12:17:12:49 | ControlFlowNode for Attribute() | tests.py:12:5:12:13 | ControlFlowNode for file_path | +| tests.py:24:5:24:5 | ControlFlowNode for r | tests.py:28:43:28:43 | ControlFlowNode for r | +| tests.py:24:9:24:15 | ControlFlowNode for request | tests.py:24:9:24:20 | ControlFlowNode for Attribute | +| tests.py:24:9:24:20 | ControlFlowNode for Attribute | tests.py:24:9:24:33 | ControlFlowNode for Attribute() | +| tests.py:24:9:24:33 | ControlFlowNode for Attribute() | tests.py:24:5:24:5 | ControlFlowNode for r | +| tests.py:36:5:36:5 | ControlFlowNode for r | tests.py:40:43:40:43 | ControlFlowNode for r | +| tests.py:36:9:36:15 | ControlFlowNode for request | tests.py:36:9:36:20 | ControlFlowNode for Attribute | +| tests.py:36:9:36:20 | ControlFlowNode for Attribute | tests.py:36:9:36:33 | ControlFlowNode for Attribute() | +| tests.py:36:9:36:33 | ControlFlowNode for Attribute() | tests.py:36:5:36:5 | ControlFlowNode for r | +| tests.py:48:5:48:5 | ControlFlowNode for r | tests.py:52:43:52:43 | ControlFlowNode for r | +| tests.py:48:9:48:15 | ControlFlowNode for request | tests.py:48:9:48:20 | ControlFlowNode for Attribute | +| tests.py:48:9:48:20 | ControlFlowNode for Attribute | tests.py:48:9:48:33 | ControlFlowNode for Attribute() | +| tests.py:48:9:48:33 | ControlFlowNode for Attribute() | tests.py:48:5:48:5 | ControlFlowNode for r | +nodes +| tests.py:1:35:1:41 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | +| tests.py:1:35:1:41 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| tests.py:12:5:12:13 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| tests.py:12:17:12:23 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| tests.py:12:17:12:28 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| tests.py:12:17:12:49 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| tests.py:16:39:16:47 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| tests.py:24:5:24:5 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:24:9:24:15 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| tests.py:24:9:24:20 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| tests.py:24:9:24:33 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| tests.py:28:43:28:43 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:36:5:36:5 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:36:9:36:15 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| tests.py:36:9:36:20 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| tests.py:36:9:36:33 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| tests.py:40:43:40:43 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:48:5:48:5 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:48:9:48:15 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| tests.py:48:9:48:20 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| tests.py:48:9:48:33 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| tests.py:52:43:52:43 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +subpaths +#select +| tests.py:16:39:16:47 | ControlFlowNode for file_path | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:16:39:16:47 | ControlFlowNode for file_path | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:16:39:16:47 | ControlFlowNode for file_path | costly Unicode normalization operation | +| tests.py:28:43:28:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:28:43:28:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:28:43:28:43 | ControlFlowNode for r | costly Unicode normalization operation | +| tests.py:40:43:40:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:40:43:40:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:40:43:40:43 | ControlFlowNode for r | costly Unicode normalization operation | +| tests.py:52:43:52:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:52:43:52:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:52:43:52:43 | ControlFlowNode for r | costly Unicode normalization operation | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.qlref b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.qlref new file mode 100644 index 000000000000..aff380880ea0 --- /dev/null +++ b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.qlref @@ -0,0 +1 @@ +experimental/Security/CWE-770/UnicodeDoS.ql \ No newline at end of file diff --git a/python/ql/test/experimental/query-tests/Security/CWE-770/tests.py b/python/ql/test/experimental/query-tests/Security/CWE-770/tests.py new file mode 100644 index 000000000000..e941f91fc011 --- /dev/null +++ b/python/ql/test/experimental/query-tests/Security/CWE-770/tests.py @@ -0,0 +1,80 @@ +from flask import Flask, jsonify, request +import unicodedata + +app = Flask(__name__) + +STATIC_DIR = "/home/unknown/" + + +@app.route("/bad_1") +def bad_1(): + # User controlled data + file_path = request.args.get("file_path", "") + + # Normalize the file path using NFKC Unicode normalization + return ( + unicodedata.normalize("NFKC", file_path), + 200, + {"Content-Type": "application/octet-stream"}, + ) + + +@app.route("/bad_2") +def bad_2(): + r = request.args.get("r", "") + + if len(r) >= 10: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 + + +@app.route("/bad_3") +def bad_3(): + r = request.args.get("r", "") + length = len(r) + if length >= 1_000: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 + + +@app.route("/bad_4") +def bad_4(): + r = request.args.get("r", "") + length = len(r) + if 1_000 <= length: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 + + +@app.route("/good_1") +def good_1(): + r = request.args.get("r", "") + + if len(r) <= 1_000: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 + + +@app.route("/good_2") +def good_2(): + r = request.args.get("r", "") + MAX_LENGTH = 1_000 + length = len(r) + if length <= MAX_LENGTH: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 From 5cc9170249772870834580fa3e90bf5703156342 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Tue, 13 Feb 2024 04:21:52 +0100 Subject: [PATCH 257/731] Add UnicodeDoS sink for werkzeug secure_filename --- .../ql/src/experimental/Security/CWE-770/UnicodeDoS.ql | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index 644f8c024df2..bd203877e5ac 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -93,6 +93,16 @@ class Configuration extends TaintTracking::Configuration { override predicate isSink(DataFlow::Node sink) { sink = any(UnicodeCompatibilityNormalize ucn).getPathArg() + or + sink = API::moduleImport("werkzeug").getMember("secure_filename").getACall().getArg(_) + or + sink = + API::moduleImport("werkzeug") + .getMember("utils") + .getMember("secure_filename") + .getACall() + .getArg(_) + } } From 1f767b887eefda279e048f9ae0dd50c1c3e92b81 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Tue, 13 Feb 2024 04:31:07 +0100 Subject: [PATCH 258/731] Add some comments and docs --- .../ql/src/experimental/Security/CWE-770/UnicodeDoS.ql | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index bd203877e5ac..d1f565ab11f8 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -17,6 +17,8 @@ import semmle.python.dataflow.new.TaintTracking import semmle.python.dataflow.new.internal.DataFlowPublic import semmle.python.dataflow.new.RemoteFlowSources +// The Unicode compatibility normalization calls from unicodedata, unidecode, pyunormalize +// and textnorm modules. The use of argIdx is to constraint the argument being normalized. class UnicodeCompatibilityNormalize extends API::CallNode { int argIdx; @@ -66,10 +68,12 @@ predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branc exists(API::CallNode lenCall, Cmpop op_gt, Cmpop op_lt, Node n | lenCall = n.getALocalSource() and ( + // arg <= LIMIT OR arg < LIMIT (op_lt = any(LtE lte) or op_lt = any(Lt lt)) and branch = true and cn.operands(n.asCfgNode(), op_lt, _) or + // LIMIT >= arg OR LIMIT > arg (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and branch = true and cn.operands(_, op_gt, n.asCfgNode()) @@ -88,12 +92,16 @@ class Configuration extends TaintTracking::Configuration { override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } override predicate isSanitizer(DataFlow::Node sanitizer) { + // underAValue is a check to ensure that the length of the user-provided value is limited to a certain amount sanitizer = DataFlow::BarrierGuard<underAValue/3>::getABarrierNode() } override predicate isSink(DataFlow::Node sink) { + // Any call to the Unicode compatibility normalization is a costly operation sink = any(UnicodeCompatibilityNormalize ucn).getPathArg() or + // The call to secure_filename() from pallets/werkzeug uses the Unicode compatibility normalization + // under the hood, https://github.com/pallets/werkzeug/blob/d3dd65a27388fbd39d146caacf2563639ba622f0/src/werkzeug/utils.py#L218 sink = API::moduleImport("werkzeug").getMember("secure_filename").getACall().getArg(_) or sink = @@ -102,7 +110,6 @@ class Configuration extends TaintTracking::Configuration { .getMember("secure_filename") .getACall() .getArg(_) - } } From 658b88e62f129eaf15f075c58b5b517f83f0e3ea Mon Sep 17 00:00:00 2001 From: Sim4n6${{7*'7'}} <sim4n6@gmail.com> Date: Tue, 12 Mar 2024 19:57:46 +0000 Subject: [PATCH 259/731] Update python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql update the Config API Co-authored-by: yoff <lerchedahl@gmail.com> --- .../Security/CWE-770/UnicodeDoS.ql | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index d1f565ab11f8..ea06def1b323 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -86,17 +86,15 @@ predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branc ) } -class Configuration extends TaintTracking::Configuration { - Configuration() { this = "RemoteSourcesReachUnicodeCharacters" } +private module UnicodeDoSConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } - - override predicate isSanitizer(DataFlow::Node sanitizer) { + predicate isBarrier(DataFlow::Node sanitizer) { // underAValue is a check to ensure that the length of the user-provided value is limited to a certain amount sanitizer = DataFlow::BarrierGuard<underAValue/3>::getABarrierNode() } - override predicate isSink(DataFlow::Node sink) { + predicate isSink(DataFlow::Node sink) { // Any call to the Unicode compatibility normalization is a costly operation sink = any(UnicodeCompatibilityNormalize ucn).getPathArg() or @@ -113,9 +111,11 @@ class Configuration extends TaintTracking::Configuration { } } -import DataFlow::PathGraph +module UnicodeDoSFlow = TaintTracking::Global<UnicodeDoSConfig>; + +import UnicodeDoSFlow::PathGraph -from Configuration config, DataFlow::PathNode source, DataFlow::PathNode sink -where config.hasFlowPath(source, sink) +from UnicodeDoSFlow::PathNode source, UnicodeDoSFlow::PathNode sink +where UnicodeDoSFlow::flowPath(source, sink) select sink.getNode(), source, sink, "This $@ can reach a $@.", source.getNode(), "user-provided value", sink.getNode(), "costly Unicode normalization operation" From 3d8868a6c33cf877d4865c6a45dcfb1612db7674 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Tue, 12 Mar 2024 20:03:16 +0000 Subject: [PATCH 260/731] Add routes for bad_5 and bad_6, and fix routes for good_3 and good_4 --- .../query-tests/Security/CWE-770/tests.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/python/ql/test/experimental/query-tests/Security/CWE-770/tests.py b/python/ql/test/experimental/query-tests/Security/CWE-770/tests.py index e941f91fc011..1007bcc89858 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-770/tests.py +++ b/python/ql/test/experimental/query-tests/Security/CWE-770/tests.py @@ -55,6 +55,30 @@ def bad_4(): return jsonify({"error": "File not found"}), 404 +@app.route("/bad_5") +def bad_5(): + r = request.args.get("r", "") + length = len(r) + if not length < 1_000: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 + + +@app.route("/bad_6") +def bad_6(): + r = request.args.get("r", "") + length = len(r) + if not 1_000 > length: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 + + @app.route("/good_1") def good_1(): r = request.args.get("r", "") @@ -78,3 +102,28 @@ def good_2(): return r, 200, {"Content-Type": "application/octet-stream"} else: return jsonify({"error": "File not found"}), 404 + +@app.route("/good_3") +def good_3(): + r = request.args.get("r", "") + MAX_LENGTH = 1_000 + length = len(r) + if not length >= MAX_LENGTH: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 + + +@app.route("/good_4") +def good_4(): + r = request.args.get("r", "") + MAX_LENGTH = 1_000 + length = len(r) + if not MAX_LENGTH <= length: + # Normalize the r using NFKD Unicode normalization + r = unicodedata.normalize("NFKD", r) + return r, 200, {"Content-Type": "application/octet-stream"} + else: + return jsonify({"error": "File not found"}), 404 From 70ebc58b4ce310c7982669418a66d37e88a71979 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Tue, 12 Mar 2024 20:15:07 +0000 Subject: [PATCH 261/731] Refactor Unicode normalization code --- .../Security/CWE-770/UnicodeDoS.ql | 53 +++++++------------ 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index ea06def1b323..0a8241b1f0ba 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -23,41 +23,24 @@ class UnicodeCompatibilityNormalize extends API::CallNode { int argIdx; UnicodeCompatibilityNormalize() { - exists(API::CallNode cn, DataFlow::Node form | - cn = API::moduleImport("unicodedata").getMember("normalize").getACall() and - form.asExpr().(StrConst).getS() in ["NFKC", "NFKD"] and - TaintTracking::localTaint(form, cn.getArg(0)) and - this = cn and - argIdx = 1 - ) + ( + this = API::moduleImport("unicodedata").getMember("normalize").getACall() and + this.getParameter(0).getAValueReachingSink().asExpr().(StrConst).getText() in ["NFKC", "NFKD"] + or + this = API::moduleImport("pyunormalize").getMember("normalize").getACall() and + this.getParameter(0).getAValueReachingSink().asExpr().(StrConst).getText() in ["NFKC", "NFKD"] + ) and + argIdx = 1 or - exists(API::CallNode cn | - cn = API::moduleImport("unidecode").getMember("unidecode").getACall() and - this = cn and - argIdx = 0 - ) - or - exists(API::CallNode cn | - cn = API::moduleImport("pyunormalize").getMember(["NFKC", "NFKD"]).getACall() and - this = cn and - argIdx = 0 - ) - or - exists(API::CallNode cn, DataFlow::Node form | - cn = API::moduleImport("pyunormalize").getMember("normalize").getACall() and - form.asExpr().(StrConst).getS() in ["NFKC", "NFKD"] and - TaintTracking::localTaint(form, cn.getArg(0)) and - this = cn and - argIdx = 1 - ) - or - exists(API::CallNode cn, DataFlow::Node form | - cn = API::moduleImport("textnorm").getMember("normalize_unicode").getACall() and - form.asExpr().(StrConst).getS() in ["NFKC", "NFKD"] and - TaintTracking::localTaint(form, cn.getArg(1)) and - this = cn and - argIdx = 0 - ) + ( + this = API::moduleImport("textnorm").getMember("normalize_unicode").getACall() and + this.getParameter(1).getAValueReachingSink().asExpr().(StrConst).getText() in ["NFKC", "NFKD"] + or + this = API::moduleImport("unidecode").getMember("unidecode").getACall() + or + this = API::moduleImport("pyunormalize").getMember(["NFKC", "NFKD"]).getACall() + ) and + argIdx = 0 } DataFlow::Node getPathArg() { result = this.getArg(argIdx) } @@ -73,7 +56,7 @@ predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branc branch = true and cn.operands(n.asCfgNode(), op_lt, _) or - // LIMIT >= arg OR LIMIT > arg + // LIMIT >= arg OR LIMIT > arg (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and branch = true and cn.operands(_, op_gt, n.asCfgNode()) From 31dc542111bc508c926312206275b8a42535d8db Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Tue, 12 Mar 2024 20:18:18 +0000 Subject: [PATCH 262/731] Update request parameter name in good_1() function --- python/ql/src/experimental/Security/CWE-770/good.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/src/experimental/Security/CWE-770/good.py b/python/ql/src/experimental/Security/CWE-770/good.py index ce171a16015f..4d1ebc315070 100644 --- a/python/ql/src/experimental/Security/CWE-770/good.py +++ b/python/ql/src/experimental/Security/CWE-770/good.py @@ -6,7 +6,7 @@ @app.route("/good_1") def good_1(): - r = request.args.get("r", "") + r = request.args.get("file_path", "") if len(r) <= 1_000: # Normalize the r using NFKD Unicode normalization From 085d803b14fa87ded56c8f8766053794b614360f Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Tue, 12 Mar 2024 20:21:38 +0000 Subject: [PATCH 263/731] Fix UnicodeDoS vulnerability in CWE-770 --- .../ql/src/experimental/Security/CWE-770/UnicodeDoS.ql | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index 0a8241b1f0ba..aaab637ec45a 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -60,6 +60,16 @@ predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branc (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and branch = true and cn.operands(_, op_gt, n.asCfgNode()) + or + // not arg <= LIMIT OR not arg < LIMIT + (op_lt = any(LtE lte) or op_lt = any(Lt lt)) and + branch = false and + cn.operands(n.asCfgNode(), op_lt, _) + or + // not LIMIT >= arg OR not LIMIT > arg + (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and + branch = false and + cn.operands(_, op_gt, n.asCfgNode()) ) | lenCall = API::builtin("len").getACall() and From af19a0342e33dbccb0a2fad50126b1fab49ff153 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Tue, 12 Mar 2024 21:09:10 +0000 Subject: [PATCH 264/731] Fix UnicodeDoS vulnerability in CWE-770 code --- .../src/experimental/Security/CWE-770/UnicodeDoS.ql | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index aaab637ec45a..01e2fe8741dc 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -61,15 +61,15 @@ predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branc branch = true and cn.operands(_, op_gt, n.asCfgNode()) or - // not arg <= LIMIT OR not arg < LIMIT - (op_lt = any(LtE lte) or op_lt = any(Lt lt)) and + // not arg >= LIMIT OR not arg > LIMIT + (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and branch = false and - cn.operands(n.asCfgNode(), op_lt, _) + cn.operands(n.asCfgNode(), op_gt, _) or - // not LIMIT >= arg OR not LIMIT > arg - (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and + // not LIMIT <= arg OR not LIMIT < arg + (op_lt = any(LtE lte) or op_lt = any(Lt lt)) and branch = false and - cn.operands(_, op_gt, n.asCfgNode()) + cn.operands(_, op_lt, n.asCfgNode()) ) | lenCall = API::builtin("len").getACall() and From a717bf1b9ded12c9804b463160c601afda830ece Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Wed, 13 Mar 2024 11:04:15 +0000 Subject: [PATCH 265/731] Fix p tag in UnicodeDoS.qhelp --- python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp index 53a19e9bca3f..9b8fea3cad12 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.qhelp @@ -6,7 +6,7 @@ <overview> <p>When a remote user-controlled data can reach a costly Unicode normalization with either form, NFKC or NFKD, an attack such as the One Million Unicode Characters, could lead to a denial of service on Windows OS.</p> -<p>And, with the use of special Unicode characters, like U+2100 (℀) or U+2105 (℅), the payload size could be tripled after the compatibility normalization. +<p>And, with the use of special Unicode characters, like U+2100 (℀) or U+2105 (℅), the payload size could be tripled after the compatibility normalization.</p> </overview> <recommendation> From 26a16b7857f6e8bb81e52fb9e4628fbec0a63a36 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Wed, 13 Mar 2024 11:07:40 +0000 Subject: [PATCH 266/731] use of a single var "op" of type Cmpop --- .../Security/CWE-770/UnicodeDoS.ql | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql index 01e2fe8741dc..9e0a3a3018ac 100644 --- a/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql +++ b/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql @@ -48,28 +48,28 @@ class UnicodeCompatibilityNormalize extends API::CallNode { predicate underAValue(DataFlow::GuardNode g, ControlFlowNode node, boolean branch) { exists(CompareNode cn | cn = g | - exists(API::CallNode lenCall, Cmpop op_gt, Cmpop op_lt, Node n | + exists(API::CallNode lenCall, Cmpop op, Node n | lenCall = n.getALocalSource() and ( // arg <= LIMIT OR arg < LIMIT - (op_lt = any(LtE lte) or op_lt = any(Lt lt)) and + (op instanceof LtE or op instanceof Lt) and branch = true and - cn.operands(n.asCfgNode(), op_lt, _) + cn.operands(n.asCfgNode(), op, _) or // LIMIT >= arg OR LIMIT > arg - (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and + (op instanceof GtE or op instanceof Gt) and branch = true and - cn.operands(_, op_gt, n.asCfgNode()) + cn.operands(_, op, n.asCfgNode()) or // not arg >= LIMIT OR not arg > LIMIT - (op_gt = any(GtE gte) or op_gt = any(Gt gt)) and + (op instanceof GtE or op instanceof Gt) and branch = false and - cn.operands(n.asCfgNode(), op_gt, _) + cn.operands(n.asCfgNode(), op, _) or // not LIMIT <= arg OR not LIMIT < arg - (op_lt = any(LtE lte) or op_lt = any(Lt lt)) and + (op instanceof LtE or op instanceof Lt) and branch = false and - cn.operands(_, op_lt, n.asCfgNode()) + cn.operands(_, op, n.asCfgNode()) ) | lenCall = API::builtin("len").getACall() and From 3acdd3382c85ad63c578d9afe41049a6882d3013 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Wed, 13 Mar 2024 15:49:58 +0000 Subject: [PATCH 267/731] Update the expected file --- .../Security/CWE-770/UnicodeDoS.expected | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected index f05da0006575..415b94973a50 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected @@ -1,13 +1,11 @@ -WARNING: Module PathGraph has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:99,8-27) -WARNING: Type Configuration has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:85,29-57) -WARNING: Type PathNode has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:101,28-46) -WARNING: Type PathNode has been deprecated and may be removed in future (C:/Users/ab/Desktop/GhSec/Pull-Requests/codeql-PUN/python/ql/src/experimental/Security/CWE-770/UnicodeDoS.ql:101,55-73) edges | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:1:35:1:41 | ControlFlowNode for request | | tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:12:17:12:23 | ControlFlowNode for request | | tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:24:9:24:15 | ControlFlowNode for request | | tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:36:9:36:15 | ControlFlowNode for request | | tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:48:9:48:15 | ControlFlowNode for request | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:60:9:60:15 | ControlFlowNode for request | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:72:9:72:15 | ControlFlowNode for request | | tests.py:12:5:12:13 | ControlFlowNode for file_path | tests.py:16:39:16:47 | ControlFlowNode for file_path | | tests.py:12:17:12:23 | ControlFlowNode for request | tests.py:12:17:12:28 | ControlFlowNode for Attribute | | tests.py:12:17:12:28 | ControlFlowNode for Attribute | tests.py:12:17:12:49 | ControlFlowNode for Attribute() | @@ -24,6 +22,14 @@ edges | tests.py:48:9:48:15 | ControlFlowNode for request | tests.py:48:9:48:20 | ControlFlowNode for Attribute | | tests.py:48:9:48:20 | ControlFlowNode for Attribute | tests.py:48:9:48:33 | ControlFlowNode for Attribute() | | tests.py:48:9:48:33 | ControlFlowNode for Attribute() | tests.py:48:5:48:5 | ControlFlowNode for r | +| tests.py:60:5:60:5 | ControlFlowNode for r | tests.py:64:43:64:43 | ControlFlowNode for r | +| tests.py:60:9:60:15 | ControlFlowNode for request | tests.py:60:9:60:20 | ControlFlowNode for Attribute | +| tests.py:60:9:60:20 | ControlFlowNode for Attribute | tests.py:60:9:60:33 | ControlFlowNode for Attribute() | +| tests.py:60:9:60:33 | ControlFlowNode for Attribute() | tests.py:60:5:60:5 | ControlFlowNode for r | +| tests.py:72:5:72:5 | ControlFlowNode for r | tests.py:76:43:76:43 | ControlFlowNode for r | +| tests.py:72:9:72:15 | ControlFlowNode for request | tests.py:72:9:72:20 | ControlFlowNode for Attribute | +| tests.py:72:9:72:20 | ControlFlowNode for Attribute | tests.py:72:9:72:33 | ControlFlowNode for Attribute() | +| tests.py:72:9:72:33 | ControlFlowNode for Attribute() | tests.py:72:5:72:5 | ControlFlowNode for r | nodes | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | tests.py:1:35:1:41 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | @@ -47,9 +53,21 @@ nodes | tests.py:48:9:48:20 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | | tests.py:48:9:48:33 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | | tests.py:52:43:52:43 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:60:5:60:5 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:60:9:60:15 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| tests.py:60:9:60:20 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| tests.py:60:9:60:33 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| tests.py:64:43:64:43 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:72:5:72:5 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | +| tests.py:72:9:72:15 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | +| tests.py:72:9:72:20 | ControlFlowNode for Attribute | semmle.label | ControlFlowNode for Attribute | +| tests.py:72:9:72:33 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | +| tests.py:76:43:76:43 | ControlFlowNode for r | semmle.label | ControlFlowNode for r | subpaths #select | tests.py:16:39:16:47 | ControlFlowNode for file_path | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:16:39:16:47 | ControlFlowNode for file_path | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:16:39:16:47 | ControlFlowNode for file_path | costly Unicode normalization operation | | tests.py:28:43:28:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:28:43:28:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:28:43:28:43 | ControlFlowNode for r | costly Unicode normalization operation | | tests.py:40:43:40:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:40:43:40:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:40:43:40:43 | ControlFlowNode for r | costly Unicode normalization operation | | tests.py:52:43:52:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:52:43:52:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:52:43:52:43 | ControlFlowNode for r | costly Unicode normalization operation | +| tests.py:64:43:64:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:64:43:64:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:64:43:64:43 | ControlFlowNode for r | costly Unicode normalization operation | +| tests.py:76:43:76:43 | ControlFlowNode for r | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:76:43:76:43 | ControlFlowNode for r | This $@ can reach a $@. | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | user-provided value | tests.py:76:43:76:43 | ControlFlowNode for r | costly Unicode normalization operation | From cfbc3f73ec47a7d8e69311f280019b926f5ffaab Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen <yoff@github.com> Date: Fri, 15 Mar 2024 15:13:39 +0100 Subject: [PATCH 268/731] Pyhton: add test for conflicting summaries We noticed that when - a function has more than one summary (with different charpred) - one summary is subsumed by a subpath (or something happens around the function being extracted) - the function is called multiple times(we needed at least three) one of the summaries would no longer lead to flow. --- .../summaries/InlineTaintTest.expected | 4 + .../dataflow/summaries/InlineTaintTest.ql | 4 + .../dataflow/summaries/TestSummaries.qll | 105 ++++++++++++++++++ .../summaries/conflicting_summaries.py | 18 +++ .../summaries/extracted_package/functions.py | 5 + 5 files changed, 136 insertions(+) create mode 100644 python/ql/test/experimental/dataflow/summaries/InlineTaintTest.expected create mode 100644 python/ql/test/experimental/dataflow/summaries/InlineTaintTest.ql create mode 100644 python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py create mode 100644 python/ql/test/experimental/dataflow/summaries/extracted_package/functions.py diff --git a/python/ql/test/experimental/dataflow/summaries/InlineTaintTest.expected b/python/ql/test/experimental/dataflow/summaries/InlineTaintTest.expected new file mode 100644 index 000000000000..366de37b8677 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/InlineTaintTest.expected @@ -0,0 +1,4 @@ +argumentToEnsureNotTaintedNotMarkedAsSpurious +untaintedArgumentToEnsureTaintedNotMarkedAsMissing +testFailures +failures diff --git a/python/ql/test/experimental/dataflow/summaries/InlineTaintTest.ql b/python/ql/test/experimental/dataflow/summaries/InlineTaintTest.ql new file mode 100644 index 000000000000..96cc5c3e31f4 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/InlineTaintTest.ql @@ -0,0 +1,4 @@ +import python +import experimental.meta.InlineTaintTest +import MakeInlineTaintTest<TestTaintTrackingConfig> +import TestSummaries diff --git a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll index b2e29e9999e4..534fac624914 100644 --- a/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll +++ b/python/ql/test/experimental/dataflow/summaries/TestSummaries.qll @@ -136,3 +136,108 @@ private class SummarizedCallableJsonLoads extends SummarizedCallable { preservesValue = true } } + +// Repeated summaries +private class SummarizedCallableWithSubpath extends SummarizedCallable { + SummarizedCallableWithSubpath() { this = "extracted_package.functions.with_subpath" } + + override DataFlow::CallCfgNode getACall() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("with_subpath") + .getACall() + } + + override DataFlow::ArgumentNode getACallback() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("with_subpath") + .getAValueReachableFromSource() + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue" and + preservesValue = false + } +} + +private class SummarizedCallableWithSubpathAgain extends SummarizedCallable { + SummarizedCallableWithSubpathAgain() { this = "extracted_package.functions.with_subpathII" } + + override DataFlow::CallCfgNode getACall() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("with_subpath") + .getACall() + } + + override DataFlow::ArgumentNode getACallback() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("with_subpath") + .getAValueReachableFromSource() + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue.Attribute[pattern]" and + preservesValue = true + } +} + +private class SummarizedCallableWithoutSubpath extends SummarizedCallable { + SummarizedCallableWithoutSubpath() { this = "extracted_package.functions.without_subpath" } + + override DataFlow::CallCfgNode getACall() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("without_subpath") + .getACall() + } + + override DataFlow::ArgumentNode getACallback() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("without_subpath") + .getAValueReachableFromSource() + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue" and + preservesValue = false + } +} + +private class SummarizedCallableWithoutSubpathAgain extends SummarizedCallable { + SummarizedCallableWithoutSubpathAgain() { this = "extracted_package.functions.without_subpathII" } + + override DataFlow::CallCfgNode getACall() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("without_subpath") + .getACall() + } + + override DataFlow::ArgumentNode getACallback() { + result = + API::moduleImport("extracted_package") + .getMember("functions") + .getMember("without_subpath") + .getAValueReachableFromSource() + } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[0]" and + output = "ReturnValue.Attribute[pattern]" and + preservesValue = true + } +} diff --git a/python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py b/python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py new file mode 100644 index 000000000000..9528e9cdafc2 --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py @@ -0,0 +1,18 @@ +# Bad interaction of two summaries for the same function +ts = TAINTED_STRING + +from extracted_package.functions import with_subpath, without_subpath + +# For the function `with_subpath`, flow from the first argument to the return value +# can be concluded from its definition. This seems to discard all summaries, including +# the one with flow to `ReturnValue.Attribute[pattern]`. +ensure_tainted( + with_subpath(ts).pattern, # $ MISSING: tainted + with_subpath(ts), # $ tainted + with_subpath(ts), # $ tainted +) +ensure_tainted( + without_subpath(ts).pattern, # $ tainted + without_subpath(ts), # $ tainted + without_subpath(ts), # $ tainted +) \ No newline at end of file diff --git a/python/ql/test/experimental/dataflow/summaries/extracted_package/functions.py b/python/ql/test/experimental/dataflow/summaries/extracted_package/functions.py new file mode 100644 index 000000000000..f4780be20a3a --- /dev/null +++ b/python/ql/test/experimental/dataflow/summaries/extracted_package/functions.py @@ -0,0 +1,5 @@ +def with_subpath(x): + return x + +def without_subpath(x): + pass \ No newline at end of file From f7c29e6bfbc3be47b2afdaf1f1c14158ffb0a19f Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 14:21:39 +0000 Subject: [PATCH 269/731] C++: Expose some previously private classes from our models so they can be used in queries. --- .../lib/semmle/code/cpp/models/implementations/Iterator.qll | 6 +++++- .../semmle/code/cpp/models/implementations/StdContainer.qll | 4 +++- .../lib/semmle/code/cpp/models/implementations/StdMap.qll | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll index cafd9aeeef05..2c65ac57aeb8 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll @@ -438,7 +438,7 @@ private class IteratorAssignmentMemberOperatorModel extends IteratorAssignmentMe * A `begin` or `end` member function, or a related member function, that * returns an iterator. */ -private class BeginOrEndFunction extends MemberFunction, TaintFunction, GetIteratorFunction { +class BeginOrEndFunction extends MemberFunction { BeginOrEndFunction() { this.hasName([ "begin", "cbegin", "rbegin", "crbegin", "end", "cend", "rend", "crend", "before_begin", @@ -446,7 +446,11 @@ private class BeginOrEndFunction extends MemberFunction, TaintFunction, GetItera ]) and this.getType().getUnspecifiedType() instanceof Iterator } +} +private class BeginOrEndFunctionModels extends BeginOrEndFunction, TaintFunction, + GetIteratorFunction +{ override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { input.isQualifierObject() and output.isReturnValue() diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll index 877dc5d3ac48..6fb17d80c5d2 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll @@ -253,13 +253,15 @@ private class StdSequenceContainerAssign extends TaintFunction { /** * The standard container functions `at` and `operator[]`. */ -private class StdSequenceContainerAt extends TaintFunction { +class StdSequenceContainerAt extends MemberFunction { StdSequenceContainerAt() { this.getClassAndName(["at", "operator[]"]) instanceof Array or this.getClassAndName(["at", "operator[]"]) instanceof Deque or this.getClassAndName(["at", "operator[]"]) instanceof Vector } +} +private class StdSequenceContainerAtModel extends StdSequenceContainerAt, TaintFunction { override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { // flow from qualifier to referenced return value input.isQualifierObject() and diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll index b6d869d7bea4..ce3c596f308a 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll @@ -129,9 +129,11 @@ private class StdMapMerge extends TaintFunction { /** * The standard map functions `at` and `operator[]`. */ -private class StdMapAt extends TaintFunction { +class StdMapAt extends MemberFunction { StdMapAt() { this.getClassAndName(["at", "operator[]"]) instanceof MapOrUnorderedMap } +} +private class StdMapAtModels extends StdMapAt, TaintFunction { override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { // flow from qualifier to referenced return value input.isQualifierObject() and From 23cf99734af6ad72a0aa9f1bb83c61bdd3c3d379 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 14:29:29 +0000 Subject: [PATCH 270/731] C++: Add a new experimental query ' cpp/iterator-to-expired-container'. --- .../CWE/CWE-416/IteratorToExpiredContainer.ql | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql new file mode 100644 index 000000000000..4c165d197eb4 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql @@ -0,0 +1,89 @@ +/** + * @name Iterator to expired container + * @description Using an iterator owned by a container whose lifetimes has expired may lead to unexpected behavior. + * @kind problem + * @precision high + * @id cpp/iterator-to-expired-container + * @problem.severity warning + * @tags reliability + * security + * external/cwe/cwe-416 + * external/cwe/cwe-664 + */ + +// IMPORTANT: This query does not currently find anything since it relies on extractor and analysis improvements that hasn't yet been released +import cpp +import semmle.code.cpp.ir.IR +import semmle.code.cpp.dataflow.new.DataFlow +import semmle.code.cpp.models.implementations.StdContainer +import semmle.code.cpp.models.implementations.StdMap +import semmle.code.cpp.models.implementations.Iterator + +/** + * A configuration to track flow from a temporary variable to the qualifier of + * a destructor call + */ +module TempToDestructorConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source.asInstruction().(VariableAddressInstruction).getIRVariable() instanceof IRTempVariable + } + + predicate isSink(DataFlow::Node sink) { + sink.asOperand().(ThisArgumentOperand).getCall().getStaticCallTarget() instanceof Destructor + } +} + +module TempToDestructorFlow = DataFlow::Global<TempToDestructorConfig>; + +/** + * Gets a `DataFlow::Node` that represents a temporary that will be destroyed + * by a call to a destructor, or a `DataFlow::Node` that will transitively be + * destroyed by a call to a destructor. + * + * For the latter case, consider something like: + * ``` + * std::vector<std::vector<int>> get_2d_vector(); + * auto& v = get_2d_vector()[0]; + * ``` + * Given the above, this predicate returns the node corresponding + * to `get_2d_vector()[0]` since the temporary `get_2d_vector()` gets + * destroyed by a call to `std::vector<std::vector<int>>::~vector`, + * and thus the result of `get_2d_vector()[0]` is also an invalid reference. + */ +DataFlow::Node getADestroyedNode() { + exists(TempToDestructorFlow::PathNode destroyedTemp | destroyedTemp.isSource() | + result = destroyedTemp.getNode() + or + exists(CallInstruction call | + result.asInstruction() = call and + DataFlow::localFlow(destroyedTemp.getNode(), + DataFlow::operandNode(call.getThisArgumentOperand())) + | + call.getStaticCallTarget() instanceof StdSequenceContainerAt or + call.getStaticCallTarget() instanceof StdMapAt + ) + ) +} + +predicate isSinkImpl(DataFlow::Node sink, FunctionCall fc) { + exists(CallInstruction call | + call = sink.asOperand().(ThisArgumentOperand).getCall() and + fc = call.getUnconvertedResultExpression() and + call.getStaticCallTarget() instanceof BeginOrEndFunction + ) +} + +/** + * Flow from any destroyed object to the qualifier of a `begin` call + */ +module DestroyedToBeginConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source = getADestroyedNode() } + + predicate isSink(DataFlow::Node sink) { isSinkImpl(sink, _) } +} + +module DestroyedToBeginFlow = DataFlow::Global<DestroyedToBeginConfig>; + +from DataFlow::Node source, DataFlow::Node sink, FunctionCall beginOrEnd +where DestroyedToBeginFlow::flow(source, sink) and isSinkImpl(sink, beginOrEnd) +select source, "This object is destroyed before $@ is called.", beginOrEnd, beginOrEnd.toString() From 8c5fff2d110a08257e03a0176b0dd4f9b75d7e40 Mon Sep 17 00:00:00 2001 From: Joe Farebrother <joefarebrother@github.com> Date: Fri, 15 Mar 2024 14:43:29 +0000 Subject: [PATCH 271/731] Update names and qldoc for params taint predicates --- .../ruby/frameworks/ActionController.qll | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll index 19dcb82cfd69..3fcb3eda5f8c 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActionController.qll @@ -506,8 +506,8 @@ private module ParamsSummaries { ] } - /** Gets a field of an instance of `ActionController::Parameters` */ - private DataFlow::LocalSourceNode paramsField() { + /** Gets a node that may be tainted from an `ActionController::Parameters` instance, through field accesses and hash/array element reads. */ + private DataFlow::LocalSourceNode taintFromParamsBase() { result = [ paramsInstance(), @@ -515,16 +515,16 @@ private module ParamsSummaries { ] } - private DataFlow::LocalSourceNode paramsFieldType(TypeTracker t) { + private DataFlow::LocalSourceNode taintFromParamsType(TypeTracker t) { t.start() and - result = paramsField() + result = taintFromParamsBase() or - exists(TypeTracker t2 | result = paramsFieldType(t2).track(t2, t)) + exists(TypeTracker t2 | result = taintFromParamsType(t2).track(t2, t)) } - /** Gets a node with a type that can be a field of `ActionController::Parameters` */ - private DataFlow::LocalSourceNode paramsFieldType() { - paramsFieldType(TypeTracker::end()).flowsTo(result) + /** Gets a node with a type that may be tainted from an `ActionController::Parameters` instance. */ + private DataFlow::LocalSourceNode taintFromParamsType() { + taintFromParamsType(TypeTracker::end()).flowsTo(result) } /** @@ -602,7 +602,7 @@ private module ParamsSummaries { override MethodCall getACall() { result = - paramsFieldType() + taintFromParamsType() .getAMethodCall(["original_filename", "content_type", "headers"]) .asExpr() .getExpr() and @@ -622,7 +622,7 @@ private module ParamsSummaries { UploadedFileReadSummary() { this = "ActionDispatch::Http::UploadedFile#read" } override MethodCall getACall() { - result = paramsFieldType().getAMethodCall("read").asExpr().getExpr() and + result = taintFromParamsType().getAMethodCall("read").asExpr().getExpr() and result.getNumberOfArguments() in [0 .. 2] } From 704f1fad462a5f672eccd9cd784cca8543b4ff19 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 17:02:12 +0000 Subject: [PATCH 272/731] C++: Add switches as testcases for guard conditions. --- .../library-tests/controlflow/guards/test.cpp | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/cpp/ql/test/library-tests/controlflow/guards/test.cpp b/cpp/ql/test/library-tests/controlflow/guards/test.cpp index 46d894813f9b..3a60f5f026e7 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/test.cpp +++ b/cpp/ql/test/library-tests/controlflow/guards/test.cpp @@ -52,3 +52,37 @@ bool testWithCatch0(int v) return false; } + +void use1(int); +void use2(int); +void use3(int); + +void test_switches_simple(int i) { + switch(i) { + case 0: + use1(i); + break; + case 1: + use2(i); + /* NOTE: fallthrough */ + case 2: + use3(i); + } +} + +void test_switches_range(int i) { + switch(i) { + case 0 ... 10: + use1(i); + break; + case 11 ... 20: + use2(i); + } +} + +void test_switches_default(int i) { + switch(i) { + default: + use1(i); + } +} \ No newline at end of file From 2af68d37d02d4ca391b42dfe618b569bb395ae1a Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 15:08:39 +0000 Subject: [PATCH 273/731] C++: Include 'SwitchInstruction's as 'IRGuardCondition's. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 0adba6c1e71f..4598fb0aa3b5 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -249,10 +249,10 @@ private predicate nonExcludedIRAndBasicBlock(IRBlock irb, BasicBlock controlled) */ cached class IRGuardCondition extends Instruction { - ConditionalBranchInstruction branch; + Instruction branch; cached - IRGuardCondition() { branch = get_branch_for_condition(this) } + IRGuardCondition() { branch = getBranchForCondition(this) } /** * Holds if this condition controls `controlled`, meaning that `controlled` is only @@ -302,7 +302,7 @@ class IRGuardCondition extends Instruction { this.controls(pred, testIsTrue) or succ = this.getBranchSuccessor(testIsTrue) and - branch.getCondition() = this and + branch.(ConditionalBranchInstruction).getCondition() = this and branch.getBlock() = pred } @@ -322,13 +322,13 @@ class IRGuardCondition extends Instruction { * ``` */ private IRBlock getBranchSuccessor(boolean testIsTrue) { - branch.getCondition() = this and + branch.(ConditionalBranchInstruction).getCondition() = this and ( testIsTrue = true and - result.getFirstInstruction() = branch.getTrueSuccessor() + result.getFirstInstruction() = branch.(ConditionalBranchInstruction).getTrueSuccessor() or testIsTrue = false and - result.getFirstInstruction() = branch.getFalseSuccessor() + result.getFirstInstruction() = branch.(ConditionalBranchInstruction).getFalseSuccessor() ) } @@ -476,12 +476,14 @@ class IRGuardCondition extends Instruction { private IRBlock getBranchBlock() { result = branch.getBlock() } } -private ConditionalBranchInstruction get_branch_for_condition(Instruction guard) { - result.getCondition() = guard +private Instruction getBranchForCondition(Instruction guard) { + result.(ConditionalBranchInstruction).getCondition() = guard or exists(LogicalNotInstruction cond | - result = get_branch_for_condition(cond) and cond.getUnary() = guard + result = getBranchForCondition(cond) and cond.getUnary() = guard ) + or + result.(SwitchInstruction).getExpression() = guard } /** From b7292fbc67e3037732f9b26ef1e87c716e71d023 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 16:49:39 +0000 Subject: [PATCH 274/731] C++: Introduce 'AbstractValue' similar to what C# has. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 4598fb0aa3b5..83d45840e915 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -20,6 +20,44 @@ private predicate isUnreachedBlock(IRBlock block) { block.getFirstInstruction() instanceof UnreachedInstruction } +private newtype TAbstractValue = + TBooleanValue(boolean b) { b = true or b = false } or + TMatchValue(CaseEdge c) + +/** + * An abstract value. This is either a boolean value, or a `switch` case. + */ +abstract class AbstractValue extends TAbstractValue { + /** Gets an abstract value that represents the dual of this value, if any. */ + abstract AbstractValue getDualValue(); + + /** Gets a textual representation of this abstract value. */ + abstract string toString(); +} + +/** A Boolean value. */ +class BooleanValue extends AbstractValue, TBooleanValue { + /** Gets the underlying Boolean value. */ + boolean getValue() { this = TBooleanValue(result) } + + override BooleanValue getDualValue() { result.getValue() = this.getValue().booleanNot() } + + override string toString() { result = this.getValue().toString() } +} + +/** A value that represents a match against a specific `switch` case. */ +class MatchValue extends AbstractValue, TMatchValue { + /** Gets the case. */ + CaseEdge getCase() { this = TMatchValue(result) } + + override MatchValue getDualValue() { + // A `MatchValue` has no dual. + none() + } + + override string toString() { result = this.getCase().toString() } +} + /** * A Boolean condition in the AST that guards one or more basic blocks. This includes * operands of logical operators but not switch statements. From f4eb5f5a2df063c94f08fd4e6983892dd9e2a5c2 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 16:51:15 +0000 Subject: [PATCH 275/731] C++: Convert 'getBranchSuccessor' to use abstract values. --- .../lib/semmle/code/cpp/controlflow/IRGuards.qll | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 83d45840e915..3566cfa58f3f 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -359,15 +359,21 @@ class IRGuardCondition extends Instruction { * return x; * ``` */ - private IRBlock getBranchSuccessor(boolean testIsTrue) { + private IRBlock getBranchSuccessor(AbstractValue v) { branch.(ConditionalBranchInstruction).getCondition() = this and - ( - testIsTrue = true and + exists(BooleanValue bv | bv = v | + bv.getValue() = true and result.getFirstInstruction() = branch.(ConditionalBranchInstruction).getTrueSuccessor() or - testIsTrue = false and + bv.getValue() = false and result.getFirstInstruction() = branch.(ConditionalBranchInstruction).getFalseSuccessor() ) + or + exists(SwitchInstruction switch, CaseEdge kind | switch = branch | + switch.getExpression() = this and + result.getFirstInstruction() = switch.getSuccessor(kind) and + kind = v.(MatchValue).getCase() + ) } /** Holds if (determined by this guard) `left < right + k` evaluates to `isLessThan` if this expression evaluates to `testIsTrue`. */ From 34decd3cf17be9722fc66236c1e3da0efd093653 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 16:53:11 +0000 Subject: [PATCH 276/731] C++: Add more general public predicates to work with abstract values. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 70 +++++++++++++------ 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 3566cfa58f3f..2d37525de0de 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -72,6 +72,15 @@ class GuardCondition extends Expr { this.(BinaryLogicalOperation).getAnOperand() instanceof GuardCondition } + /** + * Holds if this condition controls `controlled`, meaning that `controlled` is only + * entered if the value of this condition is `v`. + * + * For details on what "controls" mean, see the QLDoc for `controls`. + */ + cached + predicate valueControls(BasicBlock controlled, AbstractValue v) { none() } + /** * Holds if this condition controls `controlled`, meaning that `controlled` is only * entered if the value of this condition is `testIsTrue`. @@ -99,7 +108,9 @@ class GuardCondition extends Expr { * true (for `&&`) or false (for `||`) branch. */ cached - predicate controls(BasicBlock controlled, boolean testIsTrue) { none() } + final predicate controls(BasicBlock controlled, boolean testIsTrue) { + this.valueControls(controlled, any(BooleanValue bv | bv.getValue() = testIsTrue)) + } /** Holds if (determined by this guard) `left < right + k` evaluates to `isLessThan` if this expression evaluates to `testIsTrue`. */ cached @@ -136,13 +147,13 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardCondition { this.(BinaryLogicalOperation).getAnOperand() instanceof GuardCondition } - override predicate controls(BasicBlock controlled, boolean testIsTrue) { + override predicate valueControls(BasicBlock controlled, AbstractValue v) { exists(BinaryLogicalOperation binop, GuardCondition lhs, GuardCondition rhs | this = binop and lhs = binop.getLeftOperand() and rhs = binop.getRightOperand() and - lhs.controls(controlled, testIsTrue) and - rhs.controls(controlled, testIsTrue) + lhs.valueControls(controlled, v) and + rhs.valueControls(controlled, v) ) } @@ -184,10 +195,10 @@ private class GuardConditionFromIR extends GuardCondition { GuardConditionFromIR() { this = ir.getUnconvertedResultExpression() } - override predicate controls(BasicBlock controlled, boolean testIsTrue) { + override predicate valueControls(BasicBlock controlled, AbstractValue v) { // This condition must determine the flow of control; that is, this // node must be a top-level condition. - this.controlsBlock(controlled, testIsTrue) + this.controlsBlock(controlled, v) } /** Holds if (determined by this guard) `left < right + k` evaluates to `isLessThan` if this expression evaluates to `testIsTrue`. */ @@ -240,9 +251,9 @@ private class GuardConditionFromIR extends GuardCondition { * predicate does not necessarily hold for binary logical operations like * `&&` and `||`. See the detailed explanation on predicate `controls`. */ - private predicate controlsBlock(BasicBlock controlled, boolean testIsTrue) { + private predicate controlsBlock(BasicBlock controlled, AbstractValue v) { exists(IRBlock irb | - ir.controls(irb, testIsTrue) and + ir.valueControls(irb, v) and nonExcludedIRAndBasicBlock(irb, controlled) and not isUnreachedBlock(irb) ) @@ -319,29 +330,48 @@ class IRGuardCondition extends Instruction { * true (for `&&`) or false (for `||`) branch. */ cached - predicate controls(IRBlock controlled, boolean testIsTrue) { + predicate valueControls(IRBlock controlled, AbstractValue v) { // This condition must determine the flow of control; that is, this // node must be a top-level condition. - this.controlsBlock(controlled, testIsTrue) + this.controlsBlock(controlled, v) or exists(IRGuardCondition ne | this = ne.(LogicalNotInstruction).getUnary() and - ne.controls(controlled, testIsTrue.booleanNot()) + ne.valueControls(controlled, v.getDualValue()) ) } + cached + predicate controls(IRBlock controlled, boolean testIsTrue) { + this.valueControls(controlled, any(BooleanValue bv | bv.getValue() = testIsTrue)) + } + /** * Holds if the control-flow edge `(pred, succ)` may be taken only if - * the value of this condition is `testIsTrue`. + * the value of this condition is `v`. */ cached - predicate controlsEdge(IRBlock pred, IRBlock succ, boolean testIsTrue) { + predicate valueControlsEdge(IRBlock pred, IRBlock succ, AbstractValue v) { pred.getASuccessor() = succ and - this.controls(pred, testIsTrue) + this.valueControls(pred, v) or - succ = this.getBranchSuccessor(testIsTrue) and - branch.(ConditionalBranchInstruction).getCondition() = this and - branch.getBlock() = pred + succ = this.getBranchSuccessor(v) and + ( + branch.(ConditionalBranchInstruction).getCondition() = this and + branch.getBlock() = pred + or + branch.(SwitchInstruction).getExpression() = this and + branch.getBlock() = pred + ) + } + + /** + * Holds if the control-flow edge `(pred, succ)` may be taken only if + * the value of this condition is `testIsTrue`. + */ + cached + final predicate controlsEdge(IRBlock pred, IRBlock succ, boolean testIsTrue) { + this.valueControlsEdge(pred, succ, any(BooleanValue bv | bv.getValue() = testIsTrue)) } /** @@ -440,11 +470,11 @@ class IRGuardCondition extends Instruction { /** * Holds if this condition controls `block`, meaning that `block` is only - * entered if the value of this condition is `testIsTrue`. This helper + * entered if the value of this condition is `v`. This helper * predicate does not necessarily hold for binary logical operations like * `&&` and `||`. See the detailed explanation on predicate `controls`. */ - private predicate controlsBlock(IRBlock controlled, boolean testIsTrue) { + private predicate controlsBlock(IRBlock controlled, AbstractValue v) { not isUnreachedBlock(controlled) and // // For this block to control the block `controlled` with `testIsTrue` the @@ -485,7 +515,7 @@ class IRGuardCondition extends Instruction { // that `this` strictly dominates `controlled` so that isn't necessary to check // directly. exists(IRBlock succ | - succ = this.getBranchSuccessor(testIsTrue) and + succ = this.getBranchSuccessor(v) and this.hasDominatingEdgeTo(succ) and succ.dominates(controlled) ) From 07ebbb0591ce27eead96b4d43197db0c42a06fca Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 17:04:27 +0000 Subject: [PATCH 277/731] C++: Accept test changes. --- cpp/ql/test/library-tests/controlflow/guards/Guards.expected | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpp/ql/test/library-tests/controlflow/guards/Guards.expected b/cpp/ql/test/library-tests/controlflow/guards/Guards.expected index 4193bd49fef5..6eebc960ce3c 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/Guards.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/Guards.expected @@ -29,3 +29,6 @@ | test.cpp:18:8:18:10 | call to get | | test.cpp:31:7:31:13 | ... == ... | | test.cpp:42:13:42:20 | call to getABool | +| test.cpp:61:10:61:10 | i | +| test.cpp:74:10:74:10 | i | +| test.cpp:84:10:84:10 | i | From fb218150e1c6e7fa2984350cbe55de5efcaa0375 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 17:05:42 +0000 Subject: [PATCH 278/731] C++: Change the testcase so that it outputs the controlling values for switch statements as well. --- .../library-tests/controlflow/guards/GuardsControl.expected | 4 ++++ .../test/library-tests/controlflow/guards/GuardsControl.ql | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected index 1e0aed878bfb..fbfaff9acf6b 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.expected @@ -86,3 +86,7 @@ | test.cpp:31:7:31:13 | ... == ... | true | 31 | 32 | | test.cpp:42:13:42:20 | call to getABool | false | 53 | 53 | | test.cpp:42:13:42:20 | call to getABool | true | 43 | 45 | +| test.cpp:61:10:61:10 | i | Case[0] | 62 | 64 | +| test.cpp:61:10:61:10 | i | Case[1] | 65 | 66 | +| test.cpp:74:10:74:10 | i | Case[0..10] | 75 | 77 | +| test.cpp:74:10:74:10 | i | Case[11..20] | 78 | 79 | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.ql b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.ql index 5101f64a2c55..93ce054cd820 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.ql +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsControl.ql @@ -7,10 +7,10 @@ import cpp import semmle.code.cpp.controlflow.Guards -from GuardCondition guard, boolean sense, int start, int end +from GuardCondition guard, AbstractValue value, int start, int end where exists(BasicBlock block | - guard.controls(block, sense) and + guard.valueControls(block, value) and block.hasLocationInfo(_, start, _, end, _) ) -select guard, sense, start, end +select guard, value, start, end From b5e59492bfeeffbb7d22ea812776abc9b5da6af5 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 17:17:05 +0000 Subject: [PATCH 279/731] C++: Add change note. --- .../change-notes/2024-03-15-switches-in-guard-conditions.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md diff --git a/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md b/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md new file mode 100644 index 000000000000..cf0b920e29dc --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. \ No newline at end of file From f4f417c3f969e1981976c6b32175019e88d8b934 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 17:19:36 +0000 Subject: [PATCH 280/731] C++: Fix QLoc. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 2d37525de0de..e7762fc9fa85 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -247,7 +247,7 @@ private class GuardConditionFromIR extends GuardCondition { /** * Holds if this condition controls `block`, meaning that `block` is only - * entered if the value of this condition is `testIsTrue`. This helper + * entered if the value of this condition is `v`. This helper * predicate does not necessarily hold for binary logical operations like * `&&` and `||`. See the detailed explanation on predicate `controls`. */ @@ -303,6 +303,24 @@ class IRGuardCondition extends Instruction { cached IRGuardCondition() { branch = getBranchForCondition(this) } + /** + * Holds if this condition controls `controlled`, meaning that `controlled` is only + * entered if the value of this condition is `v`. + * + * For details on what "controls" mean, see the QLDoc for `controls`. + */ + cached + predicate valueControls(IRBlock controlled, AbstractValue v) { + // This condition must determine the flow of control; that is, this + // node must be a top-level condition. + this.controlsBlock(controlled, v) + or + exists(IRGuardCondition ne | + this = ne.(LogicalNotInstruction).getUnary() and + ne.valueControls(controlled, v.getDualValue()) + ) + } + /** * Holds if this condition controls `controlled`, meaning that `controlled` is only * entered if the value of this condition is `testIsTrue`. @@ -329,18 +347,6 @@ class IRGuardCondition extends Instruction { * being short-circuited) then it will only control blocks dominated by the * true (for `&&`) or false (for `||`) branch. */ - cached - predicate valueControls(IRBlock controlled, AbstractValue v) { - // This condition must determine the flow of control; that is, this - // node must be a top-level condition. - this.controlsBlock(controlled, v) - or - exists(IRGuardCondition ne | - this = ne.(LogicalNotInstruction).getUnary() and - ne.valueControls(controlled, v.getDualValue()) - ) - } - cached predicate controls(IRBlock controlled, boolean testIsTrue) { this.valueControls(controlled, any(BooleanValue bv | bv.getValue() = testIsTrue)) @@ -375,7 +381,7 @@ class IRGuardCondition extends Instruction { } /** - * Gets the block to which `branch` jumps directly when this condition is `testIsTrue`. + * Gets the block to which `branch` jumps directly when the value of this condition is `v`. * * This predicate is intended to help with situations in which an inference can only be made * based on an edge between a block with multiple successors and a block with multiple From 3a8db49573f6ff79bbb55bc98aafab7b5bd68ef1 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 14:29:47 +0000 Subject: [PATCH 281/731] C++: Add tests for 'cpp/iterator-to-expired-container'. NOTE: This is with the yet-to-be-merged changes to the extractor and IR generation. --- .../IteratorToExpiredContainer.expected | 10 + .../CWE-416/IteratorToExpiredContainer.qlref | 1 + .../query-tests/Security/CWE/CWE-416/test.cpp | 719 ++++++++++++++++++ 3 files changed, 730 insertions(+) create mode 100644 cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected create mode 100644 cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.qlref create mode 100644 cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected new file mode 100644 index 000000000000..39588f865bef --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected @@ -0,0 +1,10 @@ +| test.cpp:680:30:680:30 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:680:17:680:17 | call to begin | call to begin | +| test.cpp:680:30:680:30 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:680:17:680:17 | call to end | call to end | +| test.cpp:683:31:683:32 | call to at | This object is destroyed before $@ is called. | test.cpp:683:17:683:17 | call to begin | call to begin | +| test.cpp:683:31:683:32 | call to at | This object is destroyed before $@ is called. | test.cpp:683:17:683:17 | call to end | call to end | +| test.cpp:689:16:689:28 | temporary object | This object is destroyed before $@ is called. | test.cpp:689:30:689:34 | call to begin | call to begin | +| test.cpp:689:45:689:57 | temporary object | This object is destroyed before $@ is called. | test.cpp:689:59:689:61 | call to end | call to end | +| test.cpp:702:26:702:26 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:703:18:703:22 | call to begin | call to begin | +| test.cpp:702:26:702:26 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:703:35:703:37 | call to end | call to end | +| test.cpp:716:35:716:47 | temporary object | This object is destroyed before $@ is called. | test.cpp:716:16:716:16 | call to begin | call to begin | +| test.cpp:716:35:716:47 | temporary object | This object is destroyed before $@ is called. | test.cpp:716:16:716:16 | call to end | call to end | diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.qlref b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.qlref new file mode 100644 index 000000000000..5f86bb26ff09 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.qlref @@ -0,0 +1 @@ +experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp new file mode 100644 index 000000000000..c035fe203a86 --- /dev/null +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp @@ -0,0 +1,719 @@ + +typedef unsigned long size_t; + +template<class T> +struct remove_const { typedef T type; }; + +template<class T> +struct remove_const<const T> { typedef T type; }; + +// `remove_const_t<T>` removes any `const` specifier from `T` +template<class T> +using remove_const_t = typename remove_const<T>::type; + +template<class T> +struct remove_reference { typedef T type; }; + +template<class T> +struct remove_reference<T &> { typedef T type; }; + +template<class T> +struct remove_reference<T &&> { typedef T type; }; + +// `remove_reference_t<T>` removes any `&` from `T` +template<class T> +using remove_reference_t = typename remove_reference<T>::type; + +template<class T> +struct decay_impl { + typedef T type; +}; + +template<class T, size_t t_size> +struct decay_impl<T[t_size]> { + typedef T* type; +}; + +template<class T> +using decay_t = typename decay_impl<remove_reference_t<T>>::type; + + +namespace std +{ + template<class T> constexpr T&& forward(remove_reference_t<T>& t) noexcept; + template<class T> constexpr T&& forward(remove_reference_t<T>&& t) noexcept; +} + +// --- iterator --- + +namespace std { + struct ptrdiff_t; + + template<class I> struct iterator_traits; + + template <class Category, + class value_type, + class difference_type = ptrdiff_t, + class pointer_type = value_type*, + class reference_type = value_type&> + struct iterator { + typedef Category iterator_category; + + iterator(); + iterator(iterator<Category, remove_const_t<value_type> > const &other); // non-const -> const conversion constructor + + iterator &operator++(); + iterator operator++(int); + iterator &operator--(); + iterator operator--(int); + bool operator==(iterator other) const; + bool operator!=(iterator other) const; + reference_type operator*() const; + pointer_type operator->() const; + iterator operator+(int); + iterator operator-(int); + iterator &operator+=(int); + iterator &operator-=(int); + int operator-(iterator); + reference_type operator[](int); + }; + + struct input_iterator_tag {}; + struct forward_iterator_tag : public input_iterator_tag {}; + struct bidirectional_iterator_tag : public forward_iterator_tag {}; + struct random_access_iterator_tag : public bidirectional_iterator_tag {}; + + struct output_iterator_tag {}; + + template<class Container> + class back_insert_iterator { + protected: + Container* container = nullptr; + public: + using iterator_category = output_iterator_tag; + using value_type = void; + using difference_type = ptrdiff_t; + using pointer = void; + using reference = void; + using container_type = Container; + constexpr back_insert_iterator() noexcept = default; + constexpr explicit back_insert_iterator(Container& x); + back_insert_iterator& operator=(const typename Container::value_type& value); + back_insert_iterator& operator=(typename Container::value_type&& value); + back_insert_iterator& operator*(); + back_insert_iterator& operator++(); + back_insert_iterator operator++(int); + }; + + template<class Container> + constexpr back_insert_iterator<Container> back_inserter(Container& x) { + return back_insert_iterator<Container>(x); + } + + template<class Container> + class front_insert_iterator { + protected: + Container* container = nullptr; + public: + using iterator_category = output_iterator_tag; + using value_type = void; + using difference_type = ptrdiff_t; + using pointer = void; + using reference = void; + using container_type = Container; + constexpr front_insert_iterator() noexcept = default; + constexpr explicit front_insert_iterator(Container& x); + constexpr front_insert_iterator& operator=(const typename Container::value_type& value); + constexpr front_insert_iterator& operator=(typename Container::value_type&& value); + constexpr front_insert_iterator& operator*(); + constexpr front_insert_iterator& operator++(); + constexpr front_insert_iterator operator++(int); + }; + template<class Container> + constexpr front_insert_iterator<Container> front_inserter(Container& x) { + return front_insert_iterator<Container>(x); + } +} + +// --- string --- + +namespace std +{ + template<class charT> struct char_traits; + + typedef size_t streamsize; + + template <class T> class allocator { + public: + allocator() throw(); + typedef size_t size_type; + }; + + template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > + class basic_string { + public: + using value_type = charT; + using reference = value_type&; + using const_reference = const value_type&; + typedef typename Allocator::size_type size_type; + static const size_type npos = -1; + + explicit basic_string(const Allocator& a = Allocator()); + basic_string(const charT* s, const Allocator& a = Allocator()); + template<class InputIterator> basic_string(InputIterator begin, InputIterator end, const Allocator& a = Allocator()); + + const charT* c_str() const; + charT* data() noexcept; + size_t length() const; + + typedef std::iterator<random_access_iterator_tag, charT> iterator; + typedef std::iterator<random_access_iterator_tag, const charT> const_iterator; + + iterator begin(); + iterator end(); + const_iterator begin() const; + const_iterator end() const; + const_iterator cbegin() const; + const_iterator cend() const; + + void push_back(charT c); + + const charT& front() const; + charT& front(); + const charT& back() const; + charT& back(); + + const_reference operator[](size_type pos) const; + reference operator[](size_type pos); + const_reference at(size_type n) const; + reference at(size_type n); + template<class T> basic_string& operator+=(const T& t); + basic_string& operator+=(const charT* s); + basic_string& append(const basic_string& str); + basic_string& append(const charT* s); + basic_string& append(size_type n, charT c); + template<class InputIterator> basic_string& append(InputIterator first, InputIterator last); + basic_string& assign(const basic_string& str); + basic_string& assign(size_type n, charT c); + template<class InputIterator> basic_string& assign(InputIterator first, InputIterator last); + basic_string& insert(size_type pos, const basic_string& str); + basic_string& insert(size_type pos, size_type n, charT c); + basic_string& insert(size_type pos, const charT* s); + iterator insert(const_iterator p, size_type n, charT c); + template<class InputIterator> iterator insert(const_iterator p, InputIterator first, InputIterator last); + basic_string& replace(size_type pos1, size_type n1, const basic_string& str); + basic_string& replace(size_type pos1, size_type n1, size_type n2, charT c); + size_type copy(charT* s, size_type n, size_type pos = 0) const; + void clear() noexcept; + basic_string substr(size_type pos = 0, size_type n = npos) const; + void swap(basic_string& s) noexcept/*(allocator_traits<Allocator>::propagate_on_container_swap::value || allocator_traits<Allocator>::is_always_equal::value)*/; + }; + + template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> operator+(const basic_string<charT, traits, Allocator>& lhs, const basic_string<charT, traits, Allocator>& rhs); + template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> operator+(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs); + + typedef basic_string<char> string; +} + +// --- istring / ostream / stringstream --- + +namespace std +{ + template <class charT, class traits = char_traits<charT> > + class basic_istream /*: virtual public basic_ios<charT,traits> - not needed for this test */ { + public: + using char_type = charT; + using int_type = int; //typename traits::int_type; + + basic_istream<charT, traits>& operator>>(int& n); + + int_type get(); + basic_istream<charT, traits>& get(char_type& c); + basic_istream<charT, traits>& get(char_type* s, streamsize n); + int_type peek(); + basic_istream<charT, traits>& read (char_type* s, streamsize n); + streamsize readsome(char_type* s, streamsize n); + basic_istream<charT, traits>& putback(char_type c); + basic_istream<charT,traits>& unget(); + + basic_istream<charT,traits>& getline(char_type* s, streamsize n); + basic_istream<charT,traits>& getline(char_type* s, streamsize n, char_type delim); + }; + + template<class charT, class traits> basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>&, charT*); + template<class charT, class traits, class Allocator> basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>& is, basic_string<charT, traits, Allocator>& str); + + template<class charT, class traits, class Allocator> basic_istream<charT,traits>& getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str, charT delim); + template<class charT, class traits, class Allocator> basic_istream<charT,traits>& getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str); + + template <class charT, class traits = char_traits<charT> > + class basic_ostream /*: virtual public basic_ios<charT,traits> - not needed for this test */ { + public: + typedef charT char_type; + + basic_ostream<charT, traits>& operator<<(int n); + + basic_ostream<charT, traits>& put(char_type c); + basic_ostream<charT, traits>& write(const char_type* s, streamsize n); + basic_ostream<charT,traits>& flush(); + }; + + template<class charT, class traits> basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*); + template<class charT, class traits, class Allocator> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const basic_string<charT, traits, Allocator>& str); + + template<class charT, class traits = char_traits<charT>> + class basic_iostream : public basic_istream<charT, traits>, public basic_ostream<charT, traits> { + public: + }; + + template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT>> + class basic_stringstream : public basic_iostream<charT, traits> { + public: + explicit basic_stringstream(/*ios_base::openmode which = ios_base::out|ios_base::in - not needed for this test*/); + explicit basic_stringstream( const basic_string<charT, traits, Allocator>& str/*, ios_base::openmode which = ios_base::out | ios_base::in*/); + basic_stringstream(const basic_stringstream& rhs) = delete; + basic_stringstream(basic_stringstream&& rhs); + basic_stringstream& operator=(const basic_stringstream& rhs) = delete; + basic_stringstream& operator=(basic_stringstream&& rhs); + + void swap(basic_stringstream& rhs); + + basic_string<charT, traits, Allocator> str() const; + void str(const basic_string<charT, traits, Allocator>& str); + }; + + typedef basic_istream<char> istream; + typedef basic_ostream<char> ostream; + extern istream cin; + extern ostream cout; + + using stringstream = basic_stringstream<char>; +} + +// --- vector --- + +namespace std { + template<class T, class Allocator = allocator<T>> + class vector { + public: + using value_type = T; + using reference = value_type&; + using const_reference = const value_type&; + using size_type = unsigned int; + using iterator = std::iterator<random_access_iterator_tag, T>; + using const_iterator = std::iterator<random_access_iterator_tag, const T>; + + vector() noexcept(noexcept(Allocator())); + vector(const std::vector<T, Allocator>&); + explicit vector(const Allocator&) noexcept; + explicit vector(size_type n, const Allocator& = Allocator()); + vector(size_type n, const T& value, const Allocator& = Allocator()); + template<class InputIterator, class IteratorCategory = typename InputIterator::iterator_category> vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); + // use of `iterator_category` makes sure InputIterator is (probably) an iterator, and not an `int` or + // similar that should match a different overload (SFINAE). + ~vector(); + + vector& operator=(const vector& x); + vector& operator=(vector&& x) noexcept/*(allocator_traits<Allocator>::propagate_on_container_move_assignment::value || allocator_traits<Allocator>::is_always_equal::value)*/; + template<class InputIterator, class IteratorCategory = typename InputIterator::iterator_category> void assign(InputIterator first, InputIterator last); + // use of `iterator_category` makes sure InputIterator is (probably) an iterator, and not an `int` or + // similar that should match a different overload (SFINAE). + void assign(size_type n, const T& u); + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + size_type size() const noexcept; + + reference operator[](size_type n); + const_reference operator[](size_type n) const; + const_reference at(size_type n) const; + reference at(size_type n); + reference front(); + const_reference front() const; + reference back(); + const_reference back() const; + + T* data() noexcept; + const T* data() const noexcept; + + void push_back(const T& x); + void push_back(T&& x); + + iterator insert(const_iterator position, const T& x); + iterator insert(const_iterator position, T&& x); + iterator insert(const_iterator position, size_type n, const T& x); + template<class InputIterator> iterator insert(const_iterator position, InputIterator first, InputIterator last); + + template <class... Args> iterator emplace (const_iterator position, Args&&... args); + template <class... Args> void emplace_back (Args&&... args); + + void swap(vector&) noexcept/*(allocator_traits<Allocator>::propagate_on_container_swap::value || allocator_traits<Allocator>::is_always_equal::value)*/; + + void clear() noexcept; + }; +} + +// --- make_shared / make_unique --- + +namespace std { + template<typename T> + class shared_ptr { + public: + shared_ptr() noexcept; + explicit shared_ptr(T*); + shared_ptr(const shared_ptr&) noexcept; + template<class U> shared_ptr(const shared_ptr<U>&) noexcept; + template<class U> shared_ptr(shared_ptr<U>&&) noexcept; + + shared_ptr<T>& operator=(const shared_ptr<T>&) noexcept; + shared_ptr<T>& operator=(shared_ptr<T>&&) noexcept; + + T& operator*() const noexcept; + T* operator->() const noexcept; + + T* get() const noexcept; + }; + + template<typename T> + class unique_ptr { + public: + constexpr unique_ptr() noexcept; + explicit unique_ptr(T*) noexcept; + unique_ptr(unique_ptr<T>&&) noexcept; + + unique_ptr<T>& operator=(unique_ptr<T>&&) noexcept; + + T& operator*() const; + T* operator->() const noexcept; + + T* get() const noexcept; + }; + + template<typename T, class... Args> unique_ptr<T> make_unique(Args&&...); + + template<typename T, class... Args> shared_ptr<T> make_shared(Args&&...); +} + +// --- pair --- + +namespace std { + template <class T1, class T2> + struct pair { + typedef T1 first_type; + typedef T2 second_type; + + T1 first; + T2 second; + pair(); + pair(const T1& x, const T2& y); + template<class U, class V> pair(const pair<U, V> &p); + + void swap(pair& p) /*noexcept(...)*/; + }; + + template<class T1, class T2> constexpr pair<decay_t<T1>, decay_t<T2>> make_pair(T1&& x, T2&& y) { + return pair<decay_t<T1>, decay_t<T2>>(std::forward<T1>(x), std::forward<T2>(y)); + } +} + +// --- map --- + +namespace std { + template<class T = void> struct less; + + template<class Key, class T, class Compare = less<Key>, class Allocator = allocator<pair<const Key, T>>> + class map { + public: + using key_type = Key; + using mapped_type = T; + using value_type = pair<const Key, T>; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + map(); + map(const map& x); + map(map&& x); + ~map(); + + map& operator=(const map& x); + map& operator=(map&& x) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Compare>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + T& operator[](const key_type& x); + T& operator[](key_type&& x); + T& at(const key_type& x); + const T& at(const key_type& x) const; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + + pair<iterator, bool> insert(const value_type& x); + pair<iterator, bool> insert(value_type&& x); + iterator insert(const_iterator position, const value_type& x); + iterator insert(const_iterator position, value_type&& x); + + template<class... Args> pair<iterator, bool> try_emplace(const key_type& k, Args&&... args); + template<class... Args> pair<iterator, bool> try_emplace(key_type&& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); + template<class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); + template<class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(map&) /*noexcept(/*==allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Compare>)*/; + void clear() noexcept; + + template<class C2> void merge(map<Key, T, C2, Allocator>& source); + template<class C2> void merge(map<Key, T, C2, Allocator>&& source); + + iterator find(const key_type& x); + const_iterator find(const key_type& x) const; + + iterator lower_bound(const key_type& x); + const_iterator lower_bound(const key_type& x) const; + iterator upper_bound(const key_type& x); + const_iterator upper_bound(const key_type& x) const; + + pair<iterator, iterator> equal_range(const key_type& x); + pair<const_iterator, const_iterator> equal_range(const key_type& x) const; + }; + + template<class T> struct hash; + template<class T = void> struct equal_to; + + template<class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Allocator = allocator<pair<const Key, T>>> + class unordered_map { + public: + using key_type = Key; + using mapped_type = T; + using value_type = pair<const Key, T>; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + unordered_map(); + unordered_map(const unordered_map&); + unordered_map(unordered_map&&); + ~unordered_map(); + + unordered_map& operator=(const unordered_map&); + unordered_map& operator=(unordered_map&&) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Hash> && is_nothrow_move_assignable_v<Pred>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + mapped_type& operator[](const key_type& k); + mapped_type& operator[](key_type&& k); + mapped_type& at(const key_type& k); + const mapped_type& at(const key_type& k) const; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + + pair<iterator, bool> insert(const value_type& obj); + pair<iterator, bool> insert(value_type&& obj); + iterator insert(const_iterator hint, const value_type& obj); + iterator insert(const_iterator hint, value_type&& obj); + + template<class... Args> pair<iterator, bool> try_emplace(const key_type& k, Args&&... args); + template<class... Args> pair<iterator, bool> try_emplace(key_type&& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); + template<class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); + template<class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(unordered_map&) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Hash> && is_nothrow_swappable_v<Pred>)*/; + void clear() noexcept; + + template<class H2, class P2> void merge(unordered_map<Key, T, H2, P2, Allocator>& source); + template<class H2, class P2> void merge(unordered_map<Key, T, H2, P2, Allocator>&& source); + + iterator find(const key_type& k); + const_iterator find(const key_type& k) const; + + pair<iterator, iterator> equal_range(const key_type& k); + pair<const_iterator, const_iterator> equal_range(const key_type& k) const; + }; +}; + +// --- set --- + +namespace std { + template<class Key, class Compare = less<Key>, class Allocator = allocator<Key>> + class set { + public: + using key_type = Key; + using value_type = Key; + using size_type = size_t; + using allocator_type = Allocator; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + set(); + set(const set& x); + set(set&& x); + template<class InputIterator> set(InputIterator first, InputIterator last/*, const Compare& comp = Compare(), const Allocator& = Allocator()*/); + ~set(); + + set& operator=(const set& x); + set& operator=(set&& x) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Compare>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + pair<iterator,bool> insert(const value_type& x); + pair<iterator,bool> insert(value_type&& x); + iterator insert(const_iterator position, const value_type& x); + iterator insert(const_iterator position, value_type&& x); + template<class InputIterator> void insert(InputIterator first, InputIterator last); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(set&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Compare>)*/; + void clear() noexcept; + + template<class C2> void merge(set<Key, C2, Allocator>& source); + template<class C2> void merge(set<Key, C2, Allocator>&& source); + + iterator find(const key_type& x); + const_iterator find(const key_type& x) const; + + iterator lower_bound(const key_type& x); + const_iterator lower_bound(const key_type& x) const; + iterator upper_bound(const key_type& x); + const_iterator upper_bound(const key_type& x) const; + pair<iterator, iterator> equal_range(const key_type& x); + pair<const_iterator, const_iterator> equal_range(const key_type& x) const; + }; + + template<class Key, class Hash = hash<Key>, class Pred = equal_to<Key>, class Allocator = allocator<Key>> + class unordered_set { + public: + using key_type = Key; + using value_type = Key; + using hasher = Hash; + using key_equal = Pred; + using allocator_type = Allocator; + using size_type = size_t; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + unordered_set(); + unordered_set(const unordered_set&); + unordered_set(unordered_set&&); + template<class InputIterator> unordered_set(InputIterator f, InputIterator l, size_type n = 0/*, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()*/); + ~unordered_set(); + + unordered_set& operator=(const unordered_set&); + unordered_set& operator=(unordered_set&&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Hash> && is_nothrow_move_assignable_v<Pred>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + pair<iterator, bool> insert(const value_type& obj); + pair<iterator, bool> insert(value_type&& obj); + iterator insert(const_iterator hint, const value_type& obj); + iterator insert(const_iterator hint, value_type&& obj); + template<class InputIterator> void insert(InputIterator first, InputIterator last); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(unordered_set&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Hash> && is_nothrow_swappable_v<Pred>)*/; + void clear() noexcept; + + template<class H2, class P2> void merge(unordered_set<Key, H2, P2, Allocator>& source); + template<class H2, class P2> void merge(unordered_set<Key, H2, P2, Allocator>&& source); + + iterator find(const key_type& k); + const_iterator find(const key_type& k) const; + pair<iterator, iterator> equal_range(const key_type& k); + pair<const_iterator, const_iterator> equal_range(const key_type& k) const; + }; +} + +std::vector<std::vector<int>> returnValue(); +std::vector<std::vector<int>>& returnRef(); + +std::vector<std::vector<int>> external_by_value(std::vector<std::vector<int>>); + +std::vector<std::vector<int>> external_by_const_ref(const std::vector<std::vector<int>>&); + +// *: Will be detected once extract destruction of unnamed temporaries and generate IR for them + +const std::vector<std::vector<int>>& return_self_by_ref(const std::vector<std::vector<int>>& v) { + return v; +} + +std::vector<std::vector<int>> return_self_by_value(const std::vector<std::vector<int>>& v) { + return v; +} + +void test() { + for (auto x : returnValue()) {} // GOOD + for (auto x : returnValue()[0]) {} // BAD [NOT DETECTED] (see *) + for (auto x : external_by_value(returnValue())) {} // GOOD + for (auto x : external_by_const_ref(returnValue())) {} // GOOD + for (auto x : returnValue().at(0)) {} // BAD [NOT DETECTED] (see *) + + for (auto x : returnRef()) {} // GOOD + for (auto x : returnRef()[0]) {} // GOOD + for (auto x : returnRef().at(0)) {} // GOOD + + for(auto it = returnValue().begin(); it != returnValue().end(); ++it) {} // BAD + + { + auto v = returnValue(); + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } + + { + auto&& v = returnValue(); + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } + + { + auto&& v = returnValue()[0]; + for(auto it = v.begin(); it != v.end(); ++it) {} // BAD [NOT DETECTED] (see *) + } + + { + auto&& v = returnRef(); + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } + + { + auto&& v = returnRef()[0]; + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } + + for (auto x : return_self_by_ref(returnValue())) {} // BAD [NOT DETECTED] (see *) + + for (auto x : return_self_by_value(returnValue())) {} // GOOD +} From a8718f99a1965fdadbc093088aa08428168cb17e Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 14:32:20 +0000 Subject: [PATCH 282/731] C++: Add qhelp for 'cpp/iterator-to-expired-container'. --- .../CWE-416/IteratorToExpiredContainer.qhelp | 53 +++++++++++++++++++ ...atorToExpiredContainerExtendedLifetime.cpp | 20 +++++++ 2 files changed, 73 insertions(+) create mode 100644 cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.qhelp create mode 100644 cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainerExtendedLifetime.cpp diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.qhelp b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.qhelp new file mode 100644 index 000000000000..19975b174932 --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.qhelp @@ -0,0 +1,53 @@ +<!DOCTYPE qhelp PUBLIC + "-//Semmle//qhelp//EN" + "qhelp.dtd"> +<qhelp> +<overview> +<p> +Using an iterator owned by a container after the lifetime of the container has expired can lead to undefined behavior. +This is because the iterator may be invalidated when the container is destroyed, and dereferencing an invalidated iterator is undefined behavior. +These problems can be hard to spot due to C++'s complex rules for temporary object lifetimes and their extensions. +</p> + +</overview> +<recommendation> + +<p> +Never create an iterator to a temporary container when the iterator is expected to be used after the container's lifetime has expired. +</p> + +</recommendation> +<example> +<p> + +</p> + +<p> +The rules for lifetime extension ensures that the code in <code>lifetime_of_temp_extended</code> is well-defined. This is because the +lifetime of the temporary container returned by <code>get_vector</code> is extended to the end of the loop. However, prior to C++23, +the lifetime extension rules do not ensure that the container returned by <code>get_vector</code> is extended in <code>lifetime_of_temp_not_extended</code>. +This is because the temporary container is not bound to a rvalue reference. +</p> +<sample src="IteratorToExpiredContainerExtendedLifetime.cpp" /> + +</example> +<references> + +<li>CERT C Coding Standard: +<a href="https://wiki.sei.cmu.edu/confluence/display/c/MEM30-C.+Do+not+access+freed+memory">MEM30-C. Do not access freed memory</a>.</li> +<li> +OWASP: +<a href="https://owasp.org/www-community/vulnerabilities/Using_freed_memory">Using freed memory</a>. +</li> +<li> +<a href="https://github.com/isocpp/CppCoreGuidelines/blob/master/docs/Lifetime.pdf">Lifetime safety: Preventing common dangling</a> +</li> +<li> +<a href="https://en.cppreference.com/w/cpp/container">Containers library</a> +</li> +<li> +<a href="https://en.cppreference.com/w/cpp/language/range-for">Range-based for loop (since C++11)</a> +</li> + +</references> +</qhelp> diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainerExtendedLifetime.cpp b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainerExtendedLifetime.cpp new file mode 100644 index 000000000000..70232447f05a --- /dev/null +++ b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainerExtendedLifetime.cpp @@ -0,0 +1,20 @@ +#include <vector> + +std::vector<int> get_vector(); + +void use(int); + +void lifetime_of_temp_extended() { + for(auto x : get_vector()) { + use(x); // GOOD: The lifetime of the vector returned by `get_vector()` is extended until the end of the loop. + } +} + +// Writes the the values of `v` to an external log and returns it unchanged. +const std::vector<int>& log_and_return_argument(const std::vector<int>& v); + +void lifetime_of_temp_not_extended() { + for(auto x : log_and_return_argument(get_vector())) { + use(x); // BAD: The lifetime of the vector returned by `get_vector()` is not extended, and the behavior is undefined. + } +} From e23e3d7fb43192e3e24fd4cf36fc4fd8c141de57 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 15 Mar 2024 17:35:01 +0000 Subject: [PATCH 283/731] C++: Run tests without the extractor and analysis changes. --- .../CWE/CWE-416/IteratorToExpiredContainer.expected | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected index 39588f865bef..e69de29bb2d1 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/IteratorToExpiredContainer.expected @@ -1,10 +0,0 @@ -| test.cpp:680:30:680:30 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:680:17:680:17 | call to begin | call to begin | -| test.cpp:680:30:680:30 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:680:17:680:17 | call to end | call to end | -| test.cpp:683:31:683:32 | call to at | This object is destroyed before $@ is called. | test.cpp:683:17:683:17 | call to begin | call to begin | -| test.cpp:683:31:683:32 | call to at | This object is destroyed before $@ is called. | test.cpp:683:17:683:17 | call to end | call to end | -| test.cpp:689:16:689:28 | temporary object | This object is destroyed before $@ is called. | test.cpp:689:30:689:34 | call to begin | call to begin | -| test.cpp:689:45:689:57 | temporary object | This object is destroyed before $@ is called. | test.cpp:689:59:689:61 | call to end | call to end | -| test.cpp:702:26:702:26 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:703:18:703:22 | call to begin | call to begin | -| test.cpp:702:26:702:26 | call to operator[] | This object is destroyed before $@ is called. | test.cpp:703:35:703:37 | call to end | call to end | -| test.cpp:716:35:716:47 | temporary object | This object is destroyed before $@ is called. | test.cpp:716:16:716:16 | call to begin | call to begin | -| test.cpp:716:35:716:47 | temporary object | This object is destroyed before $@ is called. | test.cpp:716:16:716:16 | call to end | call to end | From f4542f6160acc8880b8658e6ba5c20d965741844 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:02:54 +0000 Subject: [PATCH 284/731] Kotlin2 : Accept some more location changes --- .../library-tests/exprs/exprs.expected | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index aa19916593a1..68410f57ce41 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -28,8 +28,6 @@ | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:87:31:87:46 | getExtDelegated | ExtensionReceiverAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:87:31:87:46 | setExtDelegated | ExtensionReceiverAccess | | delegatedProperties.kt:5:5:12:5 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:6:24:9:9 | ...::... | delegatedProperties.kt:6:24:9:9 | <get-prop1> | PropertyRefExpr | -| delegatedProperties.kt:6:24:9:9 | <get-prop1>(...) | delegatedProperties.kt:6:24:9:9 | get | MethodCall | | delegatedProperties.kt:6:24:9:9 | Integer | delegatedProperties.kt:6:24:9:9 | <get-prop1> | TypeAccess | | delegatedProperties.kt:6:24:9:9 | Integer | delegatedProperties.kt:6:24:9:9 | <get-prop1> | TypeAccess | | delegatedProperties.kt:6:24:9:9 | KProperty0<Integer> | delegatedProperties.kt:6:24:9:9 | <get-prop1> | TypeAccess | @@ -42,6 +40,8 @@ | delegatedProperties.kt:6:24:9:9 | prop1$delegate | delegatedProperties.kt:5:5:12:5 | fn | LocalVariableDeclExpr | | delegatedProperties.kt:6:24:9:9 | prop1$delegate | delegatedProperties.kt:6:24:9:9 | <get-prop1> | VarAccess | | delegatedProperties.kt:6:24:9:9 | this | delegatedProperties.kt:6:24:9:9 | invoke | ThisAccess | +| delegatedProperties.kt:6:27:9:9 | ...::... | delegatedProperties.kt:6:24:9:9 | <get-prop1> | PropertyRefExpr | +| delegatedProperties.kt:6:27:9:9 | <get-prop1>(...) | delegatedProperties.kt:6:27:9:9 | get | MethodCall | | delegatedProperties.kt:6:27:9:9 | Integer | delegatedProperties.kt:5:5:12:5 | fn | TypeAccess | | delegatedProperties.kt:6:27:9:9 | LazyKt | delegatedProperties.kt:5:5:12:5 | fn | TypeAccess | | delegatedProperties.kt:6:27:9:9 | lazy(...) | delegatedProperties.kt:5:5:12:5 | fn | MethodCall | @@ -68,41 +68,41 @@ | delegatedProperties.kt:18:12:18:33 | Map<String,? extends Object> | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:18:12:18:33 | Object | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:18:12:18:33 | String | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | ...::... | delegatedProperties.kt:19:31:19:51 | <get-varResource1> | PropertyRefExpr | -| delegatedProperties.kt:19:31:19:51 | ...::... | delegatedProperties.kt:19:31:19:51 | <set-varResource1> | PropertyRefExpr | -| delegatedProperties.kt:19:31:19:51 | <get-varResource1>(...) | delegatedProperties.kt:19:31:19:51 | get | MethodCall | -| delegatedProperties.kt:19:31:19:51 | <get-varResource1>(...) | delegatedProperties.kt:19:31:19:51 | get | MethodCall | -| delegatedProperties.kt:19:31:19:51 | <set-varResource1>(...) | delegatedProperties.kt:19:31:19:51 | set | MethodCall | -| delegatedProperties.kt:19:31:19:51 | <set-varResource1>(...) | delegatedProperties.kt:19:31:19:51 | set | MethodCall | -| delegatedProperties.kt:19:31:19:51 | Integer | delegatedProperties.kt:19:31:19:51 | <get-varResource1> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | Integer | delegatedProperties.kt:19:31:19:51 | <set-varResource1> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:31:19:51 | <get-varResource1> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:31:19:51 | <set-varResource1> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | Object | delegatedProperties.kt:19:31:19:51 | get | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | Object | delegatedProperties.kt:19:31:19:51 | get | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | Object | delegatedProperties.kt:19:31:19:51 | set | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | Object | delegatedProperties.kt:19:31:19:51 | set | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | a0 | delegatedProperties.kt:19:31:19:51 | set | VarAccess | -| delegatedProperties.kt:19:31:19:51 | a0 | delegatedProperties.kt:19:31:19:51 | set | VarAccess | -| delegatedProperties.kt:19:31:19:51 | get(...) | delegatedProperties.kt:19:31:19:51 | invoke | MethodCall | -| delegatedProperties.kt:19:31:19:51 | get(...) | delegatedProperties.kt:19:31:19:51 | invoke | MethodCall | -| delegatedProperties.kt:19:31:19:51 | getValue(...) | delegatedProperties.kt:19:31:19:51 | <get-varResource1> | MethodCall | -| delegatedProperties.kt:19:31:19:51 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:19:31:19:51 | new (...) | delegatedProperties.kt:19:31:19:51 | get | ClassInstanceExpr | -| delegatedProperties.kt:19:31:19:51 | new (...) | delegatedProperties.kt:19:31:19:51 | get | ClassInstanceExpr | -| delegatedProperties.kt:19:31:19:51 | new (...) | delegatedProperties.kt:19:31:19:51 | set | ClassInstanceExpr | -| delegatedProperties.kt:19:31:19:51 | new (...) | delegatedProperties.kt:19:31:19:51 | set | ClassInstanceExpr | -| delegatedProperties.kt:19:31:19:51 | setValue(...) | delegatedProperties.kt:19:31:19:51 | <set-varResource1> | MethodCall | -| delegatedProperties.kt:19:31:19:51 | this | delegatedProperties.kt:19:31:19:51 | invoke | ThisAccess | -| delegatedProperties.kt:19:31:19:51 | this | delegatedProperties.kt:19:31:19:51 | invoke | ThisAccess | -| delegatedProperties.kt:19:31:19:51 | varResource1$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:19:31:19:51 | varResource1$delegate | delegatedProperties.kt:19:31:19:51 | <get-varResource1> | VarAccess | -| delegatedProperties.kt:19:31:19:51 | varResource1$delegate | delegatedProperties.kt:19:31:19:51 | <set-varResource1> | VarAccess | +| delegatedProperties.kt:19:34:19:51 | ...::... | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | PropertyRefExpr | +| delegatedProperties.kt:19:34:19:51 | ...::... | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | PropertyRefExpr | +| delegatedProperties.kt:19:34:19:51 | <get-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | get | MethodCall | +| delegatedProperties.kt:19:34:19:51 | <get-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | get | MethodCall | +| delegatedProperties.kt:19:34:19:51 | <set-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | set | MethodCall | +| delegatedProperties.kt:19:34:19:51 | <set-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | set | MethodCall | +| delegatedProperties.kt:19:34:19:51 | Integer | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Integer | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Object | delegatedProperties.kt:19:34:19:51 | get | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Object | delegatedProperties.kt:19:34:19:51 | get | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Object | delegatedProperties.kt:19:34:19:51 | set | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Object | delegatedProperties.kt:19:34:19:51 | set | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Unit | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | a0 | delegatedProperties.kt:19:34:19:51 | set | VarAccess | +| delegatedProperties.kt:19:34:19:51 | a0 | delegatedProperties.kt:19:34:19:51 | set | VarAccess | +| delegatedProperties.kt:19:34:19:51 | get(...) | delegatedProperties.kt:19:34:19:51 | invoke | MethodCall | +| delegatedProperties.kt:19:34:19:51 | get(...) | delegatedProperties.kt:19:34:19:51 | invoke | MethodCall | +| delegatedProperties.kt:19:34:19:51 | getValue(...) | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | MethodCall | +| delegatedProperties.kt:19:34:19:51 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | get | ClassInstanceExpr | +| delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | get | ClassInstanceExpr | +| delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | set | ClassInstanceExpr | +| delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | set | ClassInstanceExpr | +| delegatedProperties.kt:19:34:19:51 | setValue(...) | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | MethodCall | +| delegatedProperties.kt:19:34:19:51 | this | delegatedProperties.kt:19:34:19:51 | invoke | ThisAccess | +| delegatedProperties.kt:19:34:19:51 | this | delegatedProperties.kt:19:34:19:51 | invoke | ThisAccess | +| delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | +| delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | VarAccess | +| delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | VarAccess | | delegatedProperties.kt:19:34:19:51 | ResourceDelegate | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:19:34:19:51 | new ResourceDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | -| delegatedProperties.kt:19:34:19:51 | value | delegatedProperties.kt:19:31:19:51 | <set-varResource1> | VarAccess | +| delegatedProperties.kt:19:34:19:51 | value | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | VarAccess | | delegatedProperties.kt:20:9:20:29 | ConsoleKt | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:20:9:20:29 | println(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | | delegatedProperties.kt:20:17:20:28 | <get-varResource1>(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | From 354cdf44aa3d3dc5f141fb7042685edd7bc2b947 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:03:55 +0000 Subject: [PATCH 285/731] Kotlin 2: Accept more location changes --- .../library-tests/exprs/exprs.expected | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 68410f57ce41..399591bce605 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -112,21 +112,21 @@ | delegatedProperties.kt:21:9:21:24 | Object | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:21:9:21:24 | new (...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:21:24:21:24 | 2 | delegatedProperties.kt:18:5:40:5 | fn | IntegerLiteral | -| delegatedProperties.kt:23:26:23:31 | ...::... | delegatedProperties.kt:23:26:23:31 | <get-name> | PropertyRefExpr | -| delegatedProperties.kt:23:26:23:31 | <get-name>(...) | delegatedProperties.kt:23:26:23:31 | get | MethodCall | -| delegatedProperties.kt:23:26:23:31 | KProperty0<String> | delegatedProperties.kt:23:26:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:26:23:31 | MapAccessorsKt | delegatedProperties.kt:23:26:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:26:23:31 | Object | delegatedProperties.kt:23:26:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:26:23:31 | Object | delegatedProperties.kt:23:26:23:31 | get | TypeAccess | -| delegatedProperties.kt:23:26:23:31 | String | delegatedProperties.kt:23:26:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:26:23:31 | String | delegatedProperties.kt:23:26:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:26:23:31 | String | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:23:26:23:31 | get(...) | delegatedProperties.kt:23:26:23:31 | invoke | MethodCall | -| delegatedProperties.kt:23:26:23:31 | getValue(...) | delegatedProperties.kt:23:26:23:31 | <get-name> | MethodCall | -| delegatedProperties.kt:23:26:23:31 | name$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:23:26:23:31 | name$delegate | delegatedProperties.kt:23:26:23:31 | <get-name> | VarAccess | -| delegatedProperties.kt:23:26:23:31 | new (...) | delegatedProperties.kt:23:26:23:31 | get | ClassInstanceExpr | -| delegatedProperties.kt:23:26:23:31 | this | delegatedProperties.kt:23:26:23:31 | invoke | ThisAccess | +| delegatedProperties.kt:23:29:23:31 | ...::... | delegatedProperties.kt:23:29:23:31 | <get-name> | PropertyRefExpr | +| delegatedProperties.kt:23:29:23:31 | <get-name>(...) | delegatedProperties.kt:23:29:23:31 | get | MethodCall | +| delegatedProperties.kt:23:29:23:31 | KProperty0<String> | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | MapAccessorsKt | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | Object | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | Object | delegatedProperties.kt:23:29:23:31 | get | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | String | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | get(...) | delegatedProperties.kt:23:29:23:31 | invoke | MethodCall | +| delegatedProperties.kt:23:29:23:31 | getValue(...) | delegatedProperties.kt:23:29:23:31 | <get-name> | MethodCall | +| delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | +| delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:23:29:23:31 | <get-name> | VarAccess | +| delegatedProperties.kt:23:29:23:31 | new (...) | delegatedProperties.kt:23:29:23:31 | get | ClassInstanceExpr | +| delegatedProperties.kt:23:29:23:31 | this | delegatedProperties.kt:23:29:23:31 | invoke | ThisAccess | | delegatedProperties.kt:23:29:23:31 | map | delegatedProperties.kt:18:5:40:5 | fn | VarAccess | | delegatedProperties.kt:25:9:31:9 | Integer | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:25:9:31:9 | Object | file://:0:0:0:0 | <none> | TypeAccess | From 28f98d0344a8ba59827bcf09ca21369bdc9f594e Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:04:28 +0000 Subject: [PATCH 286/731] Kotlin 2: Accept more location changes --- .../library-tests/exprs/exprs.expected | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 399591bce605..ed344e035040 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -161,18 +161,18 @@ | delegatedProperties.kt:29:17:29:24 | setCurValue(...) | delegatedProperties.kt:28:22:30:13 | setValue | MethodCall | | delegatedProperties.kt:29:17:29:24 | this | delegatedProperties.kt:28:22:30:13 | setValue | ThisAccess | | delegatedProperties.kt:29:28:29:32 | value | delegatedProperties.kt:28:22:30:13 | setValue | VarAccess | -| delegatedProperties.kt:33:27:33:47 | ...::... | delegatedProperties.kt:33:27:33:47 | <get-readOnly> | PropertyRefExpr | -| delegatedProperties.kt:33:27:33:47 | <get-readOnly>(...) | delegatedProperties.kt:33:27:33:47 | get | MethodCall | -| delegatedProperties.kt:33:27:33:47 | Integer | delegatedProperties.kt:33:27:33:47 | <get-readOnly> | TypeAccess | -| delegatedProperties.kt:33:27:33:47 | KProperty0<Integer> | delegatedProperties.kt:33:27:33:47 | <get-readOnly> | TypeAccess | -| delegatedProperties.kt:33:27:33:47 | Object | delegatedProperties.kt:33:27:33:47 | get | TypeAccess | -| delegatedProperties.kt:33:27:33:47 | get(...) | delegatedProperties.kt:33:27:33:47 | invoke | MethodCall | -| delegatedProperties.kt:33:27:33:47 | getValue(...) | delegatedProperties.kt:33:27:33:47 | <get-readOnly> | MethodCall | -| delegatedProperties.kt:33:27:33:47 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:33:27:33:47 | new (...) | delegatedProperties.kt:33:27:33:47 | get | ClassInstanceExpr | -| delegatedProperties.kt:33:27:33:47 | readOnly$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:33:27:33:47 | readOnly$delegate | delegatedProperties.kt:33:27:33:47 | <get-readOnly> | VarAccess | -| delegatedProperties.kt:33:27:33:47 | this | delegatedProperties.kt:33:27:33:47 | invoke | ThisAccess | +| delegatedProperties.kt:33:30:33:47 | ...::... | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | PropertyRefExpr | +| delegatedProperties.kt:33:30:33:47 | <get-readOnly>(...) | delegatedProperties.kt:33:30:33:47 | get | MethodCall | +| delegatedProperties.kt:33:30:33:47 | Integer | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | TypeAccess | +| delegatedProperties.kt:33:30:33:47 | KProperty0<Integer> | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | TypeAccess | +| delegatedProperties.kt:33:30:33:47 | Object | delegatedProperties.kt:33:30:33:47 | get | TypeAccess | +| delegatedProperties.kt:33:30:33:47 | get(...) | delegatedProperties.kt:33:30:33:47 | invoke | MethodCall | +| delegatedProperties.kt:33:30:33:47 | getValue(...) | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | MethodCall | +| delegatedProperties.kt:33:30:33:47 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:33:30:33:47 | new (...) | delegatedProperties.kt:33:30:33:47 | get | ClassInstanceExpr | +| delegatedProperties.kt:33:30:33:47 | readOnly$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | +| delegatedProperties.kt:33:30:33:47 | readOnly$delegate | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | VarAccess | +| delegatedProperties.kt:33:30:33:47 | this | delegatedProperties.kt:33:30:33:47 | invoke | ThisAccess | | delegatedProperties.kt:33:30:33:47 | Object | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:33:30:33:47 | new (...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:33:30:33:47 | resourceDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | From 5552fe3c34e76de666f1d8eb08c0ea591b8e413f Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:05:09 +0000 Subject: [PATCH 287/731] Kotlin 2: Accept more loc changes --- .../library-tests/exprs/exprs.expected | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index ed344e035040..43a21a55a8b9 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -176,42 +176,42 @@ | delegatedProperties.kt:33:30:33:47 | Object | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:33:30:33:47 | new (...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:33:30:33:47 | resourceDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | -| delegatedProperties.kt:34:28:34:48 | ...::... | delegatedProperties.kt:34:28:34:48 | <get-readWrite> | PropertyRefExpr | -| delegatedProperties.kt:34:28:34:48 | ...::... | delegatedProperties.kt:34:28:34:48 | <set-readWrite> | PropertyRefExpr | -| delegatedProperties.kt:34:28:34:48 | <get-readWrite>(...) | delegatedProperties.kt:34:28:34:48 | get | MethodCall | -| delegatedProperties.kt:34:28:34:48 | <get-readWrite>(...) | delegatedProperties.kt:34:28:34:48 | get | MethodCall | -| delegatedProperties.kt:34:28:34:48 | <set-readWrite>(...) | delegatedProperties.kt:34:28:34:48 | set | MethodCall | -| delegatedProperties.kt:34:28:34:48 | <set-readWrite>(...) | delegatedProperties.kt:34:28:34:48 | set | MethodCall | -| delegatedProperties.kt:34:28:34:48 | Integer | delegatedProperties.kt:34:28:34:48 | <get-readWrite> | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | Integer | delegatedProperties.kt:34:28:34:48 | <set-readWrite> | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:28:34:48 | <get-readWrite> | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:28:34:48 | <set-readWrite> | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | Object | delegatedProperties.kt:34:28:34:48 | get | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | Object | delegatedProperties.kt:34:28:34:48 | get | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | Object | delegatedProperties.kt:34:28:34:48 | set | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | Object | delegatedProperties.kt:34:28:34:48 | set | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | a0 | delegatedProperties.kt:34:28:34:48 | set | VarAccess | -| delegatedProperties.kt:34:28:34:48 | a0 | delegatedProperties.kt:34:28:34:48 | set | VarAccess | -| delegatedProperties.kt:34:28:34:48 | get(...) | delegatedProperties.kt:34:28:34:48 | invoke | MethodCall | -| delegatedProperties.kt:34:28:34:48 | get(...) | delegatedProperties.kt:34:28:34:48 | invoke | MethodCall | -| delegatedProperties.kt:34:28:34:48 | getValue(...) | delegatedProperties.kt:34:28:34:48 | <get-readWrite> | MethodCall | -| delegatedProperties.kt:34:28:34:48 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:34:28:34:48 | new (...) | delegatedProperties.kt:34:28:34:48 | get | ClassInstanceExpr | -| delegatedProperties.kt:34:28:34:48 | new (...) | delegatedProperties.kt:34:28:34:48 | get | ClassInstanceExpr | -| delegatedProperties.kt:34:28:34:48 | new (...) | delegatedProperties.kt:34:28:34:48 | set | ClassInstanceExpr | -| delegatedProperties.kt:34:28:34:48 | new (...) | delegatedProperties.kt:34:28:34:48 | set | ClassInstanceExpr | -| delegatedProperties.kt:34:28:34:48 | readWrite$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:34:28:34:48 | readWrite$delegate | delegatedProperties.kt:34:28:34:48 | <get-readWrite> | VarAccess | -| delegatedProperties.kt:34:28:34:48 | readWrite$delegate | delegatedProperties.kt:34:28:34:48 | <set-readWrite> | VarAccess | -| delegatedProperties.kt:34:28:34:48 | setValue(...) | delegatedProperties.kt:34:28:34:48 | <set-readWrite> | MethodCall | -| delegatedProperties.kt:34:28:34:48 | this | delegatedProperties.kt:34:28:34:48 | invoke | ThisAccess | -| delegatedProperties.kt:34:28:34:48 | this | delegatedProperties.kt:34:28:34:48 | invoke | ThisAccess | +| delegatedProperties.kt:34:31:34:48 | ...::... | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | PropertyRefExpr | +| delegatedProperties.kt:34:31:34:48 | ...::... | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | PropertyRefExpr | +| delegatedProperties.kt:34:31:34:48 | <get-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | get | MethodCall | +| delegatedProperties.kt:34:31:34:48 | <get-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | get | MethodCall | +| delegatedProperties.kt:34:31:34:48 | <set-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | set | MethodCall | +| delegatedProperties.kt:34:31:34:48 | <set-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | set | MethodCall | +| delegatedProperties.kt:34:31:34:48 | Integer | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Integer | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:34:31:34:48 | get | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:34:31:34:48 | get | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:34:31:34:48 | set | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:34:31:34:48 | set | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Unit | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | a0 | delegatedProperties.kt:34:31:34:48 | set | VarAccess | +| delegatedProperties.kt:34:31:34:48 | a0 | delegatedProperties.kt:34:31:34:48 | set | VarAccess | +| delegatedProperties.kt:34:31:34:48 | get(...) | delegatedProperties.kt:34:31:34:48 | invoke | MethodCall | +| delegatedProperties.kt:34:31:34:48 | get(...) | delegatedProperties.kt:34:31:34:48 | invoke | MethodCall | +| delegatedProperties.kt:34:31:34:48 | getValue(...) | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | MethodCall | +| delegatedProperties.kt:34:31:34:48 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | new (...) | delegatedProperties.kt:34:31:34:48 | get | ClassInstanceExpr | +| delegatedProperties.kt:34:31:34:48 | new (...) | delegatedProperties.kt:34:31:34:48 | get | ClassInstanceExpr | +| delegatedProperties.kt:34:31:34:48 | new (...) | delegatedProperties.kt:34:31:34:48 | set | ClassInstanceExpr | +| delegatedProperties.kt:34:31:34:48 | new (...) | delegatedProperties.kt:34:31:34:48 | set | ClassInstanceExpr | +| delegatedProperties.kt:34:31:34:48 | readWrite$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | +| delegatedProperties.kt:34:31:34:48 | readWrite$delegate | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | VarAccess | +| delegatedProperties.kt:34:31:34:48 | readWrite$delegate | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | VarAccess | +| delegatedProperties.kt:34:31:34:48 | setValue(...) | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | MethodCall | +| delegatedProperties.kt:34:31:34:48 | this | delegatedProperties.kt:34:31:34:48 | invoke | ThisAccess | +| delegatedProperties.kt:34:31:34:48 | this | delegatedProperties.kt:34:31:34:48 | invoke | ThisAccess | | delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:34:31:34:48 | new (...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:34:31:34:48 | resourceDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | -| delegatedProperties.kt:34:31:34:48 | value | delegatedProperties.kt:34:28:34:48 | <set-readWrite> | VarAccess | +| delegatedProperties.kt:34:31:34:48 | value | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | VarAccess | | delegatedProperties.kt:36:9:36:29 | ConsoleKt | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:36:9:36:29 | println(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | | delegatedProperties.kt:36:17:36:28 | getVarResource0(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | From 1d2b31f0be3c1c35ec8a50321c6b131ea893ac7d Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:05:46 +0000 Subject: [PATCH 288/731] Kotlin 2: Accept more loc changes --- .../library-tests/exprs/exprs.expected | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 43a21a55a8b9..48d886b62533 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -219,27 +219,27 @@ | delegatedProperties.kt:37:9:37:24 | setVarResource0(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | | delegatedProperties.kt:37:9:37:24 | this | delegatedProperties.kt:18:5:40:5 | fn | ThisAccess | | delegatedProperties.kt:37:24:37:24 | 3 | delegatedProperties.kt:18:5:40:5 | fn | IntegerLiteral | -| delegatedProperties.kt:39:31:39:51 | ...::... | delegatedProperties.kt:18:5:40:5 | fn | PropertyRefExpr | -| delegatedProperties.kt:39:31:39:51 | ...::... | delegatedProperties.kt:39:31:39:51 | <get-varResource2> | PropertyRefExpr | -| delegatedProperties.kt:39:31:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:31:39:51 | get | MethodCall | -| delegatedProperties.kt:39:31:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:31:39:51 | get | MethodCall | -| delegatedProperties.kt:39:31:39:51 | Integer | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | -| delegatedProperties.kt:39:31:39:51 | Integer | delegatedProperties.kt:39:31:39:51 | <get-varResource2> | TypeAccess | -| delegatedProperties.kt:39:31:39:51 | KProperty0<Integer> | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | -| delegatedProperties.kt:39:31:39:51 | KProperty0<Integer> | delegatedProperties.kt:39:31:39:51 | <get-varResource2> | TypeAccess | -| delegatedProperties.kt:39:31:39:51 | Object | delegatedProperties.kt:39:31:39:51 | get | TypeAccess | -| delegatedProperties.kt:39:31:39:51 | Object | delegatedProperties.kt:39:31:39:51 | get | TypeAccess | -| delegatedProperties.kt:39:31:39:51 | get(...) | delegatedProperties.kt:39:31:39:51 | invoke | MethodCall | -| delegatedProperties.kt:39:31:39:51 | get(...) | delegatedProperties.kt:39:31:39:51 | invoke | MethodCall | -| delegatedProperties.kt:39:31:39:51 | getValue(...) | delegatedProperties.kt:39:31:39:51 | <get-varResource2> | MethodCall | -| delegatedProperties.kt:39:31:39:51 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:39:31:39:51 | new (...) | delegatedProperties.kt:39:31:39:51 | get | ClassInstanceExpr | -| delegatedProperties.kt:39:31:39:51 | new (...) | delegatedProperties.kt:39:31:39:51 | get | ClassInstanceExpr | -| delegatedProperties.kt:39:31:39:51 | provideDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | -| delegatedProperties.kt:39:31:39:51 | this | delegatedProperties.kt:39:31:39:51 | invoke | ThisAccess | -| delegatedProperties.kt:39:31:39:51 | this | delegatedProperties.kt:39:31:39:51 | invoke | ThisAccess | -| delegatedProperties.kt:39:31:39:51 | varResource2$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:39:31:39:51 | varResource2$delegate | delegatedProperties.kt:39:31:39:51 | <get-varResource2> | VarAccess | +| delegatedProperties.kt:39:34:39:51 | ...::... | delegatedProperties.kt:18:5:40:5 | fn | PropertyRefExpr | +| delegatedProperties.kt:39:34:39:51 | ...::... | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | PropertyRefExpr | +| delegatedProperties.kt:39:34:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:34:39:51 | get | MethodCall | +| delegatedProperties.kt:39:34:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:34:39:51 | get | MethodCall | +| delegatedProperties.kt:39:34:39:51 | Integer | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | Integer | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | KProperty0<Integer> | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | KProperty0<Integer> | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | Object | delegatedProperties.kt:39:34:39:51 | get | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | Object | delegatedProperties.kt:39:34:39:51 | get | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | get(...) | delegatedProperties.kt:39:34:39:51 | invoke | MethodCall | +| delegatedProperties.kt:39:34:39:51 | get(...) | delegatedProperties.kt:39:34:39:51 | invoke | MethodCall | +| delegatedProperties.kt:39:34:39:51 | getValue(...) | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | MethodCall | +| delegatedProperties.kt:39:34:39:51 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | new (...) | delegatedProperties.kt:39:34:39:51 | get | ClassInstanceExpr | +| delegatedProperties.kt:39:34:39:51 | new (...) | delegatedProperties.kt:39:34:39:51 | get | ClassInstanceExpr | +| delegatedProperties.kt:39:34:39:51 | provideDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | +| delegatedProperties.kt:39:34:39:51 | this | delegatedProperties.kt:39:34:39:51 | invoke | ThisAccess | +| delegatedProperties.kt:39:34:39:51 | this | delegatedProperties.kt:39:34:39:51 | invoke | ThisAccess | +| delegatedProperties.kt:39:34:39:51 | varResource2$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | +| delegatedProperties.kt:39:34:39:51 | varResource2$delegate | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | VarAccess | | delegatedProperties.kt:39:34:39:51 | DelegateProvider | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:39:34:39:51 | new DelegateProvider(...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:42:27:42:47 | ...::... | delegatedProperties.kt:42:27:42:47 | getVarResource0 | PropertyRefExpr | From 5580daf60e13244248465d23b9f53d7e425de204 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:06:13 +0000 Subject: [PATCH 289/731] Kotlin 2: Accept more loc changes --- .../library-tests/exprs/exprs.expected | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 48d886b62533..791879f23ccd 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -9,8 +9,8 @@ | delegatedProperties.kt:0:0:0:0 | null | delegatedProperties.kt:82:9:82:54 | <get-delegatedToMember3> | NullLiteral | | delegatedProperties.kt:0:0:0:0 | null | delegatedProperties.kt:82:9:82:54 | <set-delegatedToMember3> | NullLiteral | | delegatedProperties.kt:1:9:1:12 | null | delegatedProperties.kt:18:5:40:5 | fn | NullLiteral | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:27:42:47 | getVarResource0 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:27:42:47 | setVarResource0 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:30:42:47 | getVarResource0 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:30:42:47 | setVarResource0 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | ThisAccess | @@ -242,43 +242,43 @@ | delegatedProperties.kt:39:34:39:51 | varResource2$delegate | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | VarAccess | | delegatedProperties.kt:39:34:39:51 | DelegateProvider | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:39:34:39:51 | new DelegateProvider(...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | -| delegatedProperties.kt:42:27:42:47 | ...::... | delegatedProperties.kt:42:27:42:47 | getVarResource0 | PropertyRefExpr | -| delegatedProperties.kt:42:27:42:47 | ...::... | delegatedProperties.kt:42:27:42:47 | setVarResource0 | PropertyRefExpr | -| delegatedProperties.kt:42:27:42:47 | ...=... | delegatedProperties.kt:17:1:43:1 | Owner | KtInitializerAssignExpr | -| delegatedProperties.kt:42:27:42:47 | Integer | delegatedProperties.kt:42:27:42:47 | getVarResource0 | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | Integer | delegatedProperties.kt:42:27:42:47 | setVarResource0 | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | KMutableProperty1<Owner,Integer> | delegatedProperties.kt:42:27:42:47 | getVarResource0 | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | KMutableProperty1<Owner,Integer> | delegatedProperties.kt:42:27:42:47 | setVarResource0 | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | Owner | delegatedProperties.kt:42:27:42:47 | getVarResource0 | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | Owner | delegatedProperties.kt:42:27:42:47 | setVarResource0 | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | ResourceDelegate | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | a0 | delegatedProperties.kt:42:27:42:47 | get | VarAccess | -| delegatedProperties.kt:42:27:42:47 | a0 | delegatedProperties.kt:42:27:42:47 | get | VarAccess | -| delegatedProperties.kt:42:27:42:47 | a0 | delegatedProperties.kt:42:27:42:47 | invoke | VarAccess | -| delegatedProperties.kt:42:27:42:47 | a0 | delegatedProperties.kt:42:27:42:47 | invoke | VarAccess | -| delegatedProperties.kt:42:27:42:47 | a0 | delegatedProperties.kt:42:27:42:47 | set | VarAccess | -| delegatedProperties.kt:42:27:42:47 | a0 | delegatedProperties.kt:42:27:42:47 | set | VarAccess | -| delegatedProperties.kt:42:27:42:47 | a1 | delegatedProperties.kt:42:27:42:47 | set | VarAccess | -| delegatedProperties.kt:42:27:42:47 | a1 | delegatedProperties.kt:42:27:42:47 | set | VarAccess | -| delegatedProperties.kt:42:27:42:47 | get(...) | delegatedProperties.kt:42:27:42:47 | invoke | MethodCall | -| delegatedProperties.kt:42:27:42:47 | get(...) | delegatedProperties.kt:42:27:42:47 | invoke | MethodCall | -| delegatedProperties.kt:42:27:42:47 | getValue(...) | delegatedProperties.kt:42:27:42:47 | getVarResource0 | MethodCall | -| delegatedProperties.kt:42:27:42:47 | getVarResource0(...) | delegatedProperties.kt:42:27:42:47 | get | MethodCall | -| delegatedProperties.kt:42:27:42:47 | getVarResource0(...) | delegatedProperties.kt:42:27:42:47 | get | MethodCall | -| delegatedProperties.kt:42:27:42:47 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:42:27:42:47 | setValue(...) | delegatedProperties.kt:42:27:42:47 | setVarResource0 | MethodCall | -| delegatedProperties.kt:42:27:42:47 | setVarResource0(...) | delegatedProperties.kt:42:27:42:47 | set | MethodCall | -| delegatedProperties.kt:42:27:42:47 | setVarResource0(...) | delegatedProperties.kt:42:27:42:47 | set | MethodCall | -| delegatedProperties.kt:42:27:42:47 | this | delegatedProperties.kt:42:27:42:47 | getVarResource0 | ThisAccess | -| delegatedProperties.kt:42:27:42:47 | this | delegatedProperties.kt:42:27:42:47 | invoke | ThisAccess | -| delegatedProperties.kt:42:27:42:47 | this | delegatedProperties.kt:42:27:42:47 | invoke | ThisAccess | -| delegatedProperties.kt:42:27:42:47 | this | delegatedProperties.kt:42:27:42:47 | setVarResource0 | ThisAccess | -| delegatedProperties.kt:42:27:42:47 | this.varResource0$delegate | delegatedProperties.kt:42:27:42:47 | getVarResource0 | VarAccess | -| delegatedProperties.kt:42:27:42:47 | this.varResource0$delegate | delegatedProperties.kt:42:27:42:47 | setVarResource0 | VarAccess | -| delegatedProperties.kt:42:27:42:47 | varResource0$delegate | delegatedProperties.kt:17:1:43:1 | Owner | VarAccess | -| delegatedProperties.kt:42:30:42:47 | <set-?> | delegatedProperties.kt:42:27:42:47 | setVarResource0 | VarAccess | +| delegatedProperties.kt:42:30:42:47 | ...::... | delegatedProperties.kt:42:30:42:47 | getVarResource0 | PropertyRefExpr | +| delegatedProperties.kt:42:30:42:47 | ...::... | delegatedProperties.kt:42:30:42:47 | setVarResource0 | PropertyRefExpr | +| delegatedProperties.kt:42:30:42:47 | ...=... | delegatedProperties.kt:17:1:43:1 | Owner | KtInitializerAssignExpr | +| delegatedProperties.kt:42:30:42:47 | Integer | delegatedProperties.kt:42:30:42:47 | getVarResource0 | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | Integer | delegatedProperties.kt:42:30:42:47 | setVarResource0 | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | KMutableProperty1<Owner,Integer> | delegatedProperties.kt:42:30:42:47 | getVarResource0 | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | KMutableProperty1<Owner,Integer> | delegatedProperties.kt:42:30:42:47 | setVarResource0 | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | Owner | delegatedProperties.kt:42:30:42:47 | getVarResource0 | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | Owner | delegatedProperties.kt:42:30:42:47 | setVarResource0 | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | ResourceDelegate | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | Unit | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | a0 | delegatedProperties.kt:42:30:42:47 | get | VarAccess | +| delegatedProperties.kt:42:30:42:47 | a0 | delegatedProperties.kt:42:30:42:47 | get | VarAccess | +| delegatedProperties.kt:42:30:42:47 | a0 | delegatedProperties.kt:42:30:42:47 | invoke | VarAccess | +| delegatedProperties.kt:42:30:42:47 | a0 | delegatedProperties.kt:42:30:42:47 | invoke | VarAccess | +| delegatedProperties.kt:42:30:42:47 | a0 | delegatedProperties.kt:42:30:42:47 | set | VarAccess | +| delegatedProperties.kt:42:30:42:47 | a0 | delegatedProperties.kt:42:30:42:47 | set | VarAccess | +| delegatedProperties.kt:42:30:42:47 | a1 | delegatedProperties.kt:42:30:42:47 | set | VarAccess | +| delegatedProperties.kt:42:30:42:47 | a1 | delegatedProperties.kt:42:30:42:47 | set | VarAccess | +| delegatedProperties.kt:42:30:42:47 | get(...) | delegatedProperties.kt:42:30:42:47 | invoke | MethodCall | +| delegatedProperties.kt:42:30:42:47 | get(...) | delegatedProperties.kt:42:30:42:47 | invoke | MethodCall | +| delegatedProperties.kt:42:30:42:47 | getValue(...) | delegatedProperties.kt:42:30:42:47 | getVarResource0 | MethodCall | +| delegatedProperties.kt:42:30:42:47 | getVarResource0(...) | delegatedProperties.kt:42:30:42:47 | get | MethodCall | +| delegatedProperties.kt:42:30:42:47 | getVarResource0(...) | delegatedProperties.kt:42:30:42:47 | get | MethodCall | +| delegatedProperties.kt:42:30:42:47 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | setValue(...) | delegatedProperties.kt:42:30:42:47 | setVarResource0 | MethodCall | +| delegatedProperties.kt:42:30:42:47 | setVarResource0(...) | delegatedProperties.kt:42:30:42:47 | set | MethodCall | +| delegatedProperties.kt:42:30:42:47 | setVarResource0(...) | delegatedProperties.kt:42:30:42:47 | set | MethodCall | +| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | getVarResource0 | ThisAccess | +| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | invoke | ThisAccess | +| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | invoke | ThisAccess | +| delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | setVarResource0 | ThisAccess | +| delegatedProperties.kt:42:30:42:47 | this.varResource0$delegate | delegatedProperties.kt:42:30:42:47 | getVarResource0 | VarAccess | +| delegatedProperties.kt:42:30:42:47 | this.varResource0$delegate | delegatedProperties.kt:42:30:42:47 | setVarResource0 | VarAccess | +| delegatedProperties.kt:42:30:42:47 | varResource0$delegate | delegatedProperties.kt:17:1:43:1 | Owner | VarAccess | +| delegatedProperties.kt:42:30:42:47 | <set-?> | delegatedProperties.kt:42:30:42:47 | setVarResource0 | VarAccess | | delegatedProperties.kt:42:30:42:47 | ResourceDelegate | delegatedProperties.kt:17:1:43:1 | Owner | TypeAccess | | delegatedProperties.kt:42:30:42:47 | new ResourceDelegate(...) | delegatedProperties.kt:17:1:43:1 | Owner | ClassInstanceExpr | | delegatedProperties.kt:46:14:48:5 | int | file://:0:0:0:0 | <none> | TypeAccess | From 55f7369df0d44893dd4cd4d843b7e740cc764854 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Fri, 15 Mar 2024 14:06:36 -0400 Subject: [PATCH 290/731] Java: performance fix --- java/ql/lib/semmle/code/java/security/UrlForward.qll | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index b8cc6821abff..464a125ef758 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -26,10 +26,15 @@ private class DefaultUrlForwardSink extends UrlForwardSink { private class SpringUrlForwardPrefixSink extends UrlForwardSink { SpringUrlForwardPrefixSink() { any(SpringRequestMappingMethod srmm).polyCalls*(this.getEnclosingCallable()) and - this.asExpr() = any(ForwardPrefix fp).getAnAppendedExpression() + appendedToForwardPrefix(this) } } +pragma[nomagic] +private predicate appendedToForwardPrefix(DataFlow::ExprNode exprNode) { + exists(ForwardPrefix fp | exprNode.asExpr() = fp.getAnAppendedExpression()) +} + private class ForwardPrefix extends InterestingPrefix { ForwardPrefix() { this.getStringValue() = "forward:" } From 6c0885c24d3575cce5ebc9be38787366f1a37dd5 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:06:45 +0000 Subject: [PATCH 291/731] Kotlin 2: Accept more loc changes --- .../library-tests/exprs/exprs.expected | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 791879f23ccd..b9be9434b75c 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -11,8 +11,8 @@ | delegatedProperties.kt:1:9:1:12 | null | delegatedProperties.kt:18:5:40:5 | fn | NullLiteral | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:30:42:47 | getVarResource0 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:30:42:47 | setVarResource0 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | ThisAccess | @@ -350,53 +350,53 @@ | delegatedProperties.kt:65:35:65:77 | this | delegatedProperties.kt:65:35:65:77 | getAnotherClassInstance | ThisAccess | | delegatedProperties.kt:65:35:65:77 | this.anotherClassInstance | delegatedProperties.kt:65:35:65:77 | getAnotherClassInstance | VarAccess | | delegatedProperties.kt:65:87:65:95 | memberInt | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | -| delegatedProperties.kt:66:33:66:50 | ...::... | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | PropertyRefExpr | -| delegatedProperties.kt:66:33:66:50 | ...::... | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | PropertyRefExpr | -| delegatedProperties.kt:66:33:66:50 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | -| delegatedProperties.kt:66:33:66:50 | Integer | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | Integer | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | Integer | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | Integer | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | Integer | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | KMutableProperty0<Integer> | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | MyClass | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | MyClass | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | PropertyReferenceDelegatesKt | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | PropertyReferenceDelegatesKt | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | a0 | delegatedProperties.kt:66:33:66:50 | get | VarAccess | -| delegatedProperties.kt:66:33:66:50 | a0 | delegatedProperties.kt:66:33:66:50 | get | VarAccess | -| delegatedProperties.kt:66:33:66:50 | a0 | delegatedProperties.kt:66:33:66:50 | invoke | VarAccess | -| delegatedProperties.kt:66:33:66:50 | a0 | delegatedProperties.kt:66:33:66:50 | invoke | VarAccess | -| delegatedProperties.kt:66:33:66:50 | a0 | delegatedProperties.kt:66:33:66:50 | set | VarAccess | -| delegatedProperties.kt:66:33:66:50 | a0 | delegatedProperties.kt:66:33:66:50 | set | VarAccess | -| delegatedProperties.kt:66:33:66:50 | a1 | delegatedProperties.kt:66:33:66:50 | set | VarAccess | -| delegatedProperties.kt:66:33:66:50 | a1 | delegatedProperties.kt:66:33:66:50 | set | VarAccess | -| delegatedProperties.kt:66:33:66:50 | delegatedToMember1$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | -| delegatedProperties.kt:66:33:66:50 | get(...) | delegatedProperties.kt:66:33:66:50 | invoke | MethodCall | -| delegatedProperties.kt:66:33:66:50 | get(...) | delegatedProperties.kt:66:33:66:50 | invoke | MethodCall | -| delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1(...) | delegatedProperties.kt:66:33:66:50 | get | MethodCall | -| delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1(...) | delegatedProperties.kt:66:33:66:50 | get | MethodCall | -| delegatedProperties.kt:66:33:66:50 | getValue(...) | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | MethodCall | -| delegatedProperties.kt:66:33:66:50 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1(...) | delegatedProperties.kt:66:33:66:50 | set | MethodCall | -| delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1(...) | delegatedProperties.kt:66:33:66:50 | set | MethodCall | -| delegatedProperties.kt:66:33:66:50 | setValue(...) | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | MethodCall | -| delegatedProperties.kt:66:33:66:50 | this | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | ThisAccess | -| delegatedProperties.kt:66:33:66:50 | this | delegatedProperties.kt:66:33:66:50 | invoke | ThisAccess | -| delegatedProperties.kt:66:33:66:50 | this | delegatedProperties.kt:66:33:66:50 | invoke | ThisAccess | -| delegatedProperties.kt:66:33:66:50 | this | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | ThisAccess | -| delegatedProperties.kt:66:33:66:50 | this.delegatedToMember1$delegate | delegatedProperties.kt:66:33:66:50 | getDelegatedToMember1 | VarAccess | -| delegatedProperties.kt:66:33:66:50 | this.delegatedToMember1$delegate | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | VarAccess | +| delegatedProperties.kt:66:36:66:50 | ...::... | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | PropertyRefExpr | +| delegatedProperties.kt:66:36:66:50 | ...::... | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | PropertyRefExpr | +| delegatedProperties.kt:66:36:66:50 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:66:36:66:50 | Integer | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | Integer | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | Integer | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | Integer | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | Integer | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | KMutableProperty0<Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | MyClass | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | MyClass | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | PropertyReferenceDelegatesKt | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | PropertyReferenceDelegatesKt | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | Unit | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | get | VarAccess | +| delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | get | VarAccess | +| delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | invoke | VarAccess | +| delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | invoke | VarAccess | +| delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | set | VarAccess | +| delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | set | VarAccess | +| delegatedProperties.kt:66:36:66:50 | a1 | delegatedProperties.kt:66:36:66:50 | set | VarAccess | +| delegatedProperties.kt:66:36:66:50 | a1 | delegatedProperties.kt:66:36:66:50 | set | VarAccess | +| delegatedProperties.kt:66:36:66:50 | delegatedToMember1$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | +| delegatedProperties.kt:66:36:66:50 | get(...) | delegatedProperties.kt:66:36:66:50 | invoke | MethodCall | +| delegatedProperties.kt:66:36:66:50 | get(...) | delegatedProperties.kt:66:36:66:50 | invoke | MethodCall | +| delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1(...) | delegatedProperties.kt:66:36:66:50 | get | MethodCall | +| delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1(...) | delegatedProperties.kt:66:36:66:50 | get | MethodCall | +| delegatedProperties.kt:66:36:66:50 | getValue(...) | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | MethodCall | +| delegatedProperties.kt:66:36:66:50 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1(...) | delegatedProperties.kt:66:36:66:50 | set | MethodCall | +| delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1(...) | delegatedProperties.kt:66:36:66:50 | set | MethodCall | +| delegatedProperties.kt:66:36:66:50 | setValue(...) | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | MethodCall | +| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | ThisAccess | +| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:36:66:50 | invoke | ThisAccess | +| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:36:66:50 | invoke | ThisAccess | +| delegatedProperties.kt:66:36:66:50 | this | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | ThisAccess | +| delegatedProperties.kt:66:36:66:50 | this.delegatedToMember1$delegate | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | VarAccess | +| delegatedProperties.kt:66:36:66:50 | this.delegatedToMember1$delegate | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | VarAccess | | delegatedProperties.kt:66:36:66:39 | MyClass | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | | delegatedProperties.kt:66:36:66:39 | MyClass.this | delegatedProperties.kt:65:14:65:78 | MyClass | ThisAccess | | delegatedProperties.kt:66:36:66:50 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr | | delegatedProperties.kt:66:36:66:50 | ...=... | delegatedProperties.kt:66:36:66:50 | | AssignExpr | | delegatedProperties.kt:66:36:66:50 | <dispatchReceiver> | delegatedProperties.kt:66:36:66:50 | | VarAccess | -| delegatedProperties.kt:66:36:66:50 | <set-?> | delegatedProperties.kt:66:33:66:50 | setDelegatedToMember1 | VarAccess | +| delegatedProperties.kt:66:36:66:50 | <set-?> | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | VarAccess | | delegatedProperties.kt:66:36:66:50 | Integer | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | | delegatedProperties.kt:66:36:66:50 | KMutableProperty0<Integer> | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | | delegatedProperties.kt:66:36:66:50 | MyClass | file://:0:0:0:0 | <none> | TypeAccess | From 57d17d85f2cb8799d4440337cac9268fef9f4391 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:07:12 +0000 Subject: [PATCH 292/731] Kotlin 2: Accept more loc changes --- .../library-tests/exprs/exprs.expected | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index b9be9434b75c..dd21cf994a45 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -13,8 +13,8 @@ | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:42:30:42:47 | setVarResource0 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | ThisAccess | @@ -411,52 +411,52 @@ | delegatedProperties.kt:66:36:66:50 | this.<dispatchReceiver> | delegatedProperties.kt:66:36:66:50 | | VarAccess | | delegatedProperties.kt:66:36:66:50 | this.<dispatchReceiver> | delegatedProperties.kt:66:36:66:50 | get | VarAccess | | delegatedProperties.kt:66:36:66:50 | this.<dispatchReceiver> | delegatedProperties.kt:66:36:66:50 | set | VarAccess | -| delegatedProperties.kt:67:33:67:53 | ...::... | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | PropertyRefExpr | -| delegatedProperties.kt:67:33:67:53 | ...::... | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | PropertyRefExpr | -| delegatedProperties.kt:67:33:67:53 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | -| delegatedProperties.kt:67:33:67:53 | Integer | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | Integer | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | Integer | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | Integer | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | Integer | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | KMutableProperty1<MyClass,Integer> | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | MyClass | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | MyClass | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | MyClass | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | MyClass | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | MyClass | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | PropertyReferenceDelegatesKt | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | PropertyReferenceDelegatesKt | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | a0 | delegatedProperties.kt:67:33:67:53 | get | VarAccess | -| delegatedProperties.kt:67:33:67:53 | a0 | delegatedProperties.kt:67:33:67:53 | get | VarAccess | -| delegatedProperties.kt:67:33:67:53 | a0 | delegatedProperties.kt:67:33:67:53 | invoke | VarAccess | -| delegatedProperties.kt:67:33:67:53 | a0 | delegatedProperties.kt:67:33:67:53 | invoke | VarAccess | -| delegatedProperties.kt:67:33:67:53 | a0 | delegatedProperties.kt:67:33:67:53 | set | VarAccess | -| delegatedProperties.kt:67:33:67:53 | a0 | delegatedProperties.kt:67:33:67:53 | set | VarAccess | -| delegatedProperties.kt:67:33:67:53 | a1 | delegatedProperties.kt:67:33:67:53 | set | VarAccess | -| delegatedProperties.kt:67:33:67:53 | a1 | delegatedProperties.kt:67:33:67:53 | set | VarAccess | -| delegatedProperties.kt:67:33:67:53 | delegatedToMember2$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | -| delegatedProperties.kt:67:33:67:53 | get(...) | delegatedProperties.kt:67:33:67:53 | invoke | MethodCall | -| delegatedProperties.kt:67:33:67:53 | get(...) | delegatedProperties.kt:67:33:67:53 | invoke | MethodCall | -| delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2(...) | delegatedProperties.kt:67:33:67:53 | get | MethodCall | -| delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2(...) | delegatedProperties.kt:67:33:67:53 | get | MethodCall | -| delegatedProperties.kt:67:33:67:53 | getValue(...) | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | MethodCall | -| delegatedProperties.kt:67:33:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2(...) | delegatedProperties.kt:67:33:67:53 | set | MethodCall | -| delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2(...) | delegatedProperties.kt:67:33:67:53 | set | MethodCall | -| delegatedProperties.kt:67:33:67:53 | setValue(...) | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | MethodCall | -| delegatedProperties.kt:67:33:67:53 | this | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | ThisAccess | -| delegatedProperties.kt:67:33:67:53 | this | delegatedProperties.kt:67:33:67:53 | invoke | ThisAccess | -| delegatedProperties.kt:67:33:67:53 | this | delegatedProperties.kt:67:33:67:53 | invoke | ThisAccess | -| delegatedProperties.kt:67:33:67:53 | this | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | ThisAccess | -| delegatedProperties.kt:67:33:67:53 | this.delegatedToMember2$delegate | delegatedProperties.kt:67:33:67:53 | getDelegatedToMember2 | VarAccess | -| delegatedProperties.kt:67:33:67:53 | this.delegatedToMember2$delegate | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | VarAccess | +| delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | PropertyRefExpr | +| delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | PropertyRefExpr | +| delegatedProperties.kt:67:36:67:53 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | Integer | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | KMutableProperty1<MyClass,Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | MyClass | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | PropertyReferenceDelegatesKt | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | PropertyReferenceDelegatesKt | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | Unit | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | get | VarAccess | +| delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | get | VarAccess | +| delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | invoke | VarAccess | +| delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | invoke | VarAccess | +| delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | set | VarAccess | +| delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | set | VarAccess | +| delegatedProperties.kt:67:36:67:53 | a1 | delegatedProperties.kt:67:36:67:53 | set | VarAccess | +| delegatedProperties.kt:67:36:67:53 | a1 | delegatedProperties.kt:67:36:67:53 | set | VarAccess | +| delegatedProperties.kt:67:36:67:53 | delegatedToMember2$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | +| delegatedProperties.kt:67:36:67:53 | get(...) | delegatedProperties.kt:67:36:67:53 | invoke | MethodCall | +| delegatedProperties.kt:67:36:67:53 | get(...) | delegatedProperties.kt:67:36:67:53 | invoke | MethodCall | +| delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2(...) | delegatedProperties.kt:67:36:67:53 | get | MethodCall | +| delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2(...) | delegatedProperties.kt:67:36:67:53 | get | MethodCall | +| delegatedProperties.kt:67:36:67:53 | getValue(...) | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | MethodCall | +| delegatedProperties.kt:67:36:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2(...) | delegatedProperties.kt:67:36:67:53 | set | MethodCall | +| delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2(...) | delegatedProperties.kt:67:36:67:53 | set | MethodCall | +| delegatedProperties.kt:67:36:67:53 | setValue(...) | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | MethodCall | +| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | ThisAccess | +| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess | +| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess | +| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | ThisAccess | +| delegatedProperties.kt:67:36:67:53 | this.delegatedToMember2$delegate | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | VarAccess | +| delegatedProperties.kt:67:36:67:53 | this.delegatedToMember2$delegate | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | VarAccess | | delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr | -| delegatedProperties.kt:67:36:67:53 | <set-?> | delegatedProperties.kt:67:33:67:53 | setDelegatedToMember2 | VarAccess | +| delegatedProperties.kt:67:36:67:53 | <set-?> | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | VarAccess | | delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | | delegatedProperties.kt:67:36:67:53 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | | delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | From c4c843968e4565d8fa2898c654bc6dd78b3c8972 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:07:39 +0000 Subject: [PATCH 293/731] Kotlin 2: Accept more loc changes --- .../library-tests/exprs/exprs.expected | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index dd21cf994a45..edfa0c3df9b6 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -15,8 +15,8 @@ | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:72:36:72:56 | getDelegatedToBaseClass1 | ThisAccess | @@ -468,53 +468,53 @@ | delegatedProperties.kt:67:36:67:53 | getMemberInt(...) | delegatedProperties.kt:67:36:67:53 | get | MethodCall | | delegatedProperties.kt:67:36:67:53 | setMemberInt(...) | delegatedProperties.kt:67:36:67:53 | set | MethodCall | | delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess | -| delegatedProperties.kt:69:36:69:56 | ...::... | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | PropertyRefExpr | -| delegatedProperties.kt:69:36:69:56 | ...::... | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | PropertyRefExpr | -| delegatedProperties.kt:69:36:69:56 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | -| delegatedProperties.kt:69:36:69:56 | Integer | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | Integer | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | Integer | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | Integer | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | Integer | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | KMutableProperty0<Integer> | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | MyClass | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | MyClass | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | a0 | delegatedProperties.kt:69:36:69:56 | get | VarAccess | -| delegatedProperties.kt:69:36:69:56 | a0 | delegatedProperties.kt:69:36:69:56 | get | VarAccess | -| delegatedProperties.kt:69:36:69:56 | a0 | delegatedProperties.kt:69:36:69:56 | invoke | VarAccess | -| delegatedProperties.kt:69:36:69:56 | a0 | delegatedProperties.kt:69:36:69:56 | invoke | VarAccess | -| delegatedProperties.kt:69:36:69:56 | a0 | delegatedProperties.kt:69:36:69:56 | set | VarAccess | -| delegatedProperties.kt:69:36:69:56 | a0 | delegatedProperties.kt:69:36:69:56 | set | VarAccess | -| delegatedProperties.kt:69:36:69:56 | a1 | delegatedProperties.kt:69:36:69:56 | set | VarAccess | -| delegatedProperties.kt:69:36:69:56 | a1 | delegatedProperties.kt:69:36:69:56 | set | VarAccess | -| delegatedProperties.kt:69:36:69:56 | delegatedToExtMember1$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | -| delegatedProperties.kt:69:36:69:56 | get(...) | delegatedProperties.kt:69:36:69:56 | invoke | MethodCall | -| delegatedProperties.kt:69:36:69:56 | get(...) | delegatedProperties.kt:69:36:69:56 | invoke | MethodCall | -| delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1(...) | delegatedProperties.kt:69:36:69:56 | get | MethodCall | -| delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1(...) | delegatedProperties.kt:69:36:69:56 | get | MethodCall | -| delegatedProperties.kt:69:36:69:56 | getValue(...) | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | MethodCall | -| delegatedProperties.kt:69:36:69:56 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1(...) | delegatedProperties.kt:69:36:69:56 | set | MethodCall | -| delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1(...) | delegatedProperties.kt:69:36:69:56 | set | MethodCall | -| delegatedProperties.kt:69:36:69:56 | setValue(...) | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | MethodCall | -| delegatedProperties.kt:69:36:69:56 | this | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | ThisAccess | -| delegatedProperties.kt:69:36:69:56 | this | delegatedProperties.kt:69:36:69:56 | invoke | ThisAccess | -| delegatedProperties.kt:69:36:69:56 | this | delegatedProperties.kt:69:36:69:56 | invoke | ThisAccess | -| delegatedProperties.kt:69:36:69:56 | this | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | ThisAccess | -| delegatedProperties.kt:69:36:69:56 | this.delegatedToExtMember1$delegate | delegatedProperties.kt:69:36:69:56 | getDelegatedToExtMember1 | VarAccess | -| delegatedProperties.kt:69:36:69:56 | this.delegatedToExtMember1$delegate | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | VarAccess | +| delegatedProperties.kt:69:39:69:56 | ...::... | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | PropertyRefExpr | +| delegatedProperties.kt:69:39:69:56 | ...::... | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | PropertyRefExpr | +| delegatedProperties.kt:69:39:69:56 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | Integer | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | KMutableProperty0<Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | MyClass | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | MyClass | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | Unit | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | get | VarAccess | +| delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | get | VarAccess | +| delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | invoke | VarAccess | +| delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | invoke | VarAccess | +| delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | set | VarAccess | +| delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | set | VarAccess | +| delegatedProperties.kt:69:39:69:56 | a1 | delegatedProperties.kt:69:39:69:56 | set | VarAccess | +| delegatedProperties.kt:69:39:69:56 | a1 | delegatedProperties.kt:69:39:69:56 | set | VarAccess | +| delegatedProperties.kt:69:39:69:56 | delegatedToExtMember1$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | +| delegatedProperties.kt:69:39:69:56 | get(...) | delegatedProperties.kt:69:39:69:56 | invoke | MethodCall | +| delegatedProperties.kt:69:39:69:56 | get(...) | delegatedProperties.kt:69:39:69:56 | invoke | MethodCall | +| delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1(...) | delegatedProperties.kt:69:39:69:56 | get | MethodCall | +| delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1(...) | delegatedProperties.kt:69:39:69:56 | get | MethodCall | +| delegatedProperties.kt:69:39:69:56 | getValue(...) | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | MethodCall | +| delegatedProperties.kt:69:39:69:56 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1(...) | delegatedProperties.kt:69:39:69:56 | set | MethodCall | +| delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1(...) | delegatedProperties.kt:69:39:69:56 | set | MethodCall | +| delegatedProperties.kt:69:39:69:56 | setValue(...) | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | MethodCall | +| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | ThisAccess | +| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:39:69:56 | invoke | ThisAccess | +| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:39:69:56 | invoke | ThisAccess | +| delegatedProperties.kt:69:39:69:56 | this | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | ThisAccess | +| delegatedProperties.kt:69:39:69:56 | this.delegatedToExtMember1$delegate | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | VarAccess | +| delegatedProperties.kt:69:39:69:56 | this.delegatedToExtMember1$delegate | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | VarAccess | | delegatedProperties.kt:69:39:69:42 | MyClass | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | | delegatedProperties.kt:69:39:69:42 | MyClass.this | delegatedProperties.kt:65:14:65:78 | MyClass | ThisAccess | | delegatedProperties.kt:69:39:69:56 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr | | delegatedProperties.kt:69:39:69:56 | ...=... | delegatedProperties.kt:69:39:69:56 | | AssignExpr | | delegatedProperties.kt:69:39:69:56 | <extensionReceiver> | delegatedProperties.kt:69:39:69:56 | | VarAccess | -| delegatedProperties.kt:69:39:69:56 | <set-?> | delegatedProperties.kt:69:36:69:56 | setDelegatedToExtMember1 | VarAccess | +| delegatedProperties.kt:69:39:69:56 | <set-?> | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | VarAccess | | delegatedProperties.kt:69:39:69:56 | DelegatedPropertiesKt | delegatedProperties.kt:69:39:69:56 | get | TypeAccess | | delegatedProperties.kt:69:39:69:56 | DelegatedPropertiesKt | delegatedProperties.kt:69:39:69:56 | set | TypeAccess | | delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | From a53d5d832d4b52142a1fd57fdd2091ad1bcf54e0 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 15 Mar 2024 18:08:53 +0000 Subject: [PATCH 294/731] Kotlin 2: Accept more loc changes --- .../library-tests/exprs/exprs.expected | 138 +++++++++--------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index edfa0c3df9b6..13dfc71b6c3f 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -17,10 +17,10 @@ | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:72:36:72:56 | getDelegatedToBaseClass1 | ThisAccess | -| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | ThisAccess | +| delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:75:39:75:78 | getDelegatedToAnotherClass1 | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:77:34:77:49 | getDelegatedToTopLevel | ThisAccess | | delegatedProperties.kt:1:9:1:12 | this | delegatedProperties.kt:77:34:77:49 | setDelegatedToTopLevel | ThisAccess | @@ -531,52 +531,52 @@ | delegatedProperties.kt:69:39:69:56 | this.<extensionReceiver> | delegatedProperties.kt:69:39:69:56 | | VarAccess | | delegatedProperties.kt:69:39:69:56 | this.<extensionReceiver> | delegatedProperties.kt:69:39:69:56 | get | VarAccess | | delegatedProperties.kt:69:39:69:56 | this.<extensionReceiver> | delegatedProperties.kt:69:39:69:56 | set | VarAccess | -| delegatedProperties.kt:70:36:70:59 | ...::... | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | PropertyRefExpr | -| delegatedProperties.kt:70:36:70:59 | ...::... | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | PropertyRefExpr | -| delegatedProperties.kt:70:36:70:59 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | -| delegatedProperties.kt:70:36:70:59 | Integer | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | Integer | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | Integer | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | Integer | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | Integer | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | KMutableProperty1<MyClass,Integer> | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | MyClass | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | MyClass | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | MyClass | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | MyClass | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | MyClass | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | PropertyReferenceDelegatesKt | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | PropertyReferenceDelegatesKt | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | a0 | delegatedProperties.kt:70:36:70:59 | get | VarAccess | -| delegatedProperties.kt:70:36:70:59 | a0 | delegatedProperties.kt:70:36:70:59 | get | VarAccess | -| delegatedProperties.kt:70:36:70:59 | a0 | delegatedProperties.kt:70:36:70:59 | invoke | VarAccess | -| delegatedProperties.kt:70:36:70:59 | a0 | delegatedProperties.kt:70:36:70:59 | invoke | VarAccess | -| delegatedProperties.kt:70:36:70:59 | a0 | delegatedProperties.kt:70:36:70:59 | set | VarAccess | -| delegatedProperties.kt:70:36:70:59 | a0 | delegatedProperties.kt:70:36:70:59 | set | VarAccess | -| delegatedProperties.kt:70:36:70:59 | a1 | delegatedProperties.kt:70:36:70:59 | set | VarAccess | -| delegatedProperties.kt:70:36:70:59 | a1 | delegatedProperties.kt:70:36:70:59 | set | VarAccess | -| delegatedProperties.kt:70:36:70:59 | delegatedToExtMember2$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | -| delegatedProperties.kt:70:36:70:59 | get(...) | delegatedProperties.kt:70:36:70:59 | invoke | MethodCall | -| delegatedProperties.kt:70:36:70:59 | get(...) | delegatedProperties.kt:70:36:70:59 | invoke | MethodCall | -| delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2(...) | delegatedProperties.kt:70:36:70:59 | get | MethodCall | -| delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2(...) | delegatedProperties.kt:70:36:70:59 | get | MethodCall | -| delegatedProperties.kt:70:36:70:59 | getValue(...) | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | MethodCall | -| delegatedProperties.kt:70:36:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2(...) | delegatedProperties.kt:70:36:70:59 | set | MethodCall | -| delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2(...) | delegatedProperties.kt:70:36:70:59 | set | MethodCall | -| delegatedProperties.kt:70:36:70:59 | setValue(...) | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | MethodCall | -| delegatedProperties.kt:70:36:70:59 | this | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | ThisAccess | -| delegatedProperties.kt:70:36:70:59 | this | delegatedProperties.kt:70:36:70:59 | invoke | ThisAccess | -| delegatedProperties.kt:70:36:70:59 | this | delegatedProperties.kt:70:36:70:59 | invoke | ThisAccess | -| delegatedProperties.kt:70:36:70:59 | this | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | ThisAccess | -| delegatedProperties.kt:70:36:70:59 | this.delegatedToExtMember2$delegate | delegatedProperties.kt:70:36:70:59 | getDelegatedToExtMember2 | VarAccess | -| delegatedProperties.kt:70:36:70:59 | this.delegatedToExtMember2$delegate | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | VarAccess | +| delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | PropertyRefExpr | +| delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | PropertyRefExpr | +| delegatedProperties.kt:70:39:70:59 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | Integer | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | KMutableProperty1<MyClass,Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | MyClass | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | PropertyReferenceDelegatesKt | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | PropertyReferenceDelegatesKt | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | Unit | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | get | VarAccess | +| delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | get | VarAccess | +| delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | invoke | VarAccess | +| delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | invoke | VarAccess | +| delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | set | VarAccess | +| delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | set | VarAccess | +| delegatedProperties.kt:70:39:70:59 | a1 | delegatedProperties.kt:70:39:70:59 | set | VarAccess | +| delegatedProperties.kt:70:39:70:59 | a1 | delegatedProperties.kt:70:39:70:59 | set | VarAccess | +| delegatedProperties.kt:70:39:70:59 | delegatedToExtMember2$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | +| delegatedProperties.kt:70:39:70:59 | get(...) | delegatedProperties.kt:70:39:70:59 | invoke | MethodCall | +| delegatedProperties.kt:70:39:70:59 | get(...) | delegatedProperties.kt:70:39:70:59 | invoke | MethodCall | +| delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2(...) | delegatedProperties.kt:70:39:70:59 | get | MethodCall | +| delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2(...) | delegatedProperties.kt:70:39:70:59 | get | MethodCall | +| delegatedProperties.kt:70:39:70:59 | getValue(...) | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | MethodCall | +| delegatedProperties.kt:70:39:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2(...) | delegatedProperties.kt:70:39:70:59 | set | MethodCall | +| delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2(...) | delegatedProperties.kt:70:39:70:59 | set | MethodCall | +| delegatedProperties.kt:70:39:70:59 | setValue(...) | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | MethodCall | +| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | ThisAccess | +| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | invoke | ThisAccess | +| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | invoke | ThisAccess | +| delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | ThisAccess | +| delegatedProperties.kt:70:39:70:59 | this.delegatedToExtMember2$delegate | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | VarAccess | +| delegatedProperties.kt:70:39:70:59 | this.delegatedToExtMember2$delegate | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | VarAccess | | delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr | -| delegatedProperties.kt:70:39:70:59 | <set-?> | delegatedProperties.kt:70:36:70:59 | setDelegatedToExtMember2 | VarAccess | +| delegatedProperties.kt:70:39:70:59 | <set-?> | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | VarAccess | | delegatedProperties.kt:70:39:70:59 | DelegatedPropertiesKt | delegatedProperties.kt:70:39:70:59 | get | TypeAccess | | delegatedProperties.kt:70:39:70:59 | DelegatedPropertiesKt | delegatedProperties.kt:70:39:70:59 | set | TypeAccess | | delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | @@ -624,27 +624,27 @@ | delegatedProperties.kt:72:39:72:56 | this | delegatedProperties.kt:72:39:72:56 | invoke | ThisAccess | | delegatedProperties.kt:72:39:72:56 | this.<dispatchReceiver> | delegatedProperties.kt:72:39:72:56 | | VarAccess | | delegatedProperties.kt:72:39:72:56 | this.<dispatchReceiver> | delegatedProperties.kt:72:39:72:56 | get | VarAccess | -| delegatedProperties.kt:73:36:73:56 | ...::... | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | PropertyRefExpr | -| delegatedProperties.kt:73:36:73:56 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | -| delegatedProperties.kt:73:36:73:56 | Base | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | Base | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | Integer | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | Integer | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | Integer | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | KProperty1<Base,Integer> | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | KProperty1<MyClass,Integer> | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | MyClass | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | a0 | delegatedProperties.kt:73:36:73:56 | get | VarAccess | -| delegatedProperties.kt:73:36:73:56 | a0 | delegatedProperties.kt:73:36:73:56 | invoke | VarAccess | -| delegatedProperties.kt:73:36:73:56 | delegatedToBaseClass2$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | -| delegatedProperties.kt:73:36:73:56 | get(...) | delegatedProperties.kt:73:36:73:56 | invoke | MethodCall | -| delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2(...) | delegatedProperties.kt:73:36:73:56 | get | MethodCall | -| delegatedProperties.kt:73:36:73:56 | getValue(...) | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | MethodCall | -| delegatedProperties.kt:73:36:73:56 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:73:36:73:56 | this | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | ThisAccess | -| delegatedProperties.kt:73:36:73:56 | this | delegatedProperties.kt:73:36:73:56 | invoke | ThisAccess | -| delegatedProperties.kt:73:36:73:56 | this.delegatedToBaseClass2$delegate | delegatedProperties.kt:73:36:73:56 | getDelegatedToBaseClass2 | VarAccess | +| delegatedProperties.kt:73:39:73:56 | ...::... | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | PropertyRefExpr | +| delegatedProperties.kt:73:39:73:56 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:73:39:73:56 | Base | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | Base | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | Integer | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | Integer | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | Integer | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | KProperty1<Base,Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | KProperty1<MyClass,Integer> | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | MyClass | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | a0 | delegatedProperties.kt:73:39:73:56 | get | VarAccess | +| delegatedProperties.kt:73:39:73:56 | a0 | delegatedProperties.kt:73:39:73:56 | invoke | VarAccess | +| delegatedProperties.kt:73:39:73:56 | delegatedToBaseClass2$delegate | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | +| delegatedProperties.kt:73:39:73:56 | get(...) | delegatedProperties.kt:73:39:73:56 | invoke | MethodCall | +| delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2(...) | delegatedProperties.kt:73:39:73:56 | get | MethodCall | +| delegatedProperties.kt:73:39:73:56 | getValue(...) | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | MethodCall | +| delegatedProperties.kt:73:39:73:56 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:73:39:73:56 | this | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | ThisAccess | +| delegatedProperties.kt:73:39:73:56 | this | delegatedProperties.kt:73:39:73:56 | invoke | ThisAccess | +| delegatedProperties.kt:73:39:73:56 | this.delegatedToBaseClass2$delegate | delegatedProperties.kt:73:39:73:56 | getDelegatedToBaseClass2 | VarAccess | | delegatedProperties.kt:73:39:73:56 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr | | delegatedProperties.kt:73:39:73:56 | Base | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | | delegatedProperties.kt:73:39:73:56 | Integer | delegatedProperties.kt:65:14:65:78 | MyClass | TypeAccess | From fc367042efdba093a21e8d37ac3df1062c93c83f Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Fri, 15 Mar 2024 23:19:25 +0000 Subject: [PATCH 295/731] Fix df-manual model with wrong parameter type --- java/ql/lib/ext/java.nio.file.model.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index fc0648c85aab..8f8db20a0c05 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -91,7 +91,7 @@ extensions: data: # summary neutrals - ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "summary", "manual"] - - ["java.nio.file", "Files", "newInputStream", "(Path,LinkOption[])", "summary", "df-manual"] + - ["java.nio.file", "Files", "newInputStream", "(Path,OpenOption[])", "summary", "df-manual"] # sink neutrals - ["java.nio.file", "Files", "getLastModifiedTime", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "getOwner", "", "sink", "hq-manual"] From 23a58a0835f096e8abba75247203235190ff2963 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Fri, 15 Mar 2024 23:21:29 +0000 Subject: [PATCH 296/731] Add df-manual models related to existing df-manual models --- java/ql/lib/ext/java.io.model.yml | 1 + java/ql/lib/ext/java.net.model.yml | 1 + java/ql/lib/ext/javax.crypto.spec.model.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index e8a14a13e51d..1cbbf4567796 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -120,6 +120,7 @@ extensions: - ["java.io", "File", "listFiles", "", "summary", "df-manual"] - ["java.io", "File", "mkdirs", "()", "summary", "manual"] - ["java.io", "FileInputStream", "FileInputStream", "(File)", "summary", "manual"] + - ["java.io", "FileInputStream", "FileInputStream", "(FileDescriptor)", "summary", "df-manual"] - ["java.io", "FileInputStream", "FileInputStream", "(String)", "summary", "df-manual"] - ["java.io", "InputStream", "close", "()", "summary", "manual"] - ["java.io", "ObjectInput", "readObject", "()", "summary", "df-manual"] # this is a deserialization sink modeled in regular CodeQL diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 19044ec7a402..5884c60e4e73 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -67,4 +67,5 @@ extensions: data: # summary neutrals - ["java.net", "Socket", "getOutputStream", "()", "summary", "df-manual"] + - ["java.net", "Socket", "connect", "(SocketAddress)", "summary", "df-manual"] - ["java.net", "Socket", "connect", "(SocketAddress,int)", "summary", "df-manual"] diff --git a/java/ql/lib/ext/javax.crypto.spec.model.yml b/java/ql/lib/ext/javax.crypto.spec.model.yml index 2a88b6275fd4..d2b7dbc99b8d 100644 --- a/java/ql/lib/ext/javax.crypto.spec.model.yml +++ b/java/ql/lib/ext/javax.crypto.spec.model.yml @@ -31,3 +31,4 @@ extensions: extensible: neutralModel data: - ["javax.crypto.spec", "SecretKeySpec", "SecretKeySpec", "(byte[],String)", "summary", "df-manual"] + - ["javax.crypto.spec", "SecretKeySpec", "SecretKeySpec", "(byte[],int,int,String)", "summary", "df-manual"] From 754d4cd95905f3e0f0cb548ca12091ec5b0f51dd Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sun, 17 Mar 2024 14:36:47 +0000 Subject: [PATCH 297/731] Fix model provenance to df-manual --- java/ql/lib/ext/java.lang.model.yml | 16 +++++++------- java/ql/lib/ext/javax.crypto.model.yml | 30 +++++++++++++------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 0569b4c209c4..9012f7c981fa 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -82,8 +82,8 @@ extensions: - ["java.lang", "Exception", False, "Exception", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] - ["java.lang", "Exception", False, "Exception", "(String,Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] - ["java.lang", "Exception", False, "Exception", "(String,Throwable)", "", "Argument[1]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"] - - ["java.lang", "Exception", False, "Exception", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"] - - ["java.lang", "Exception", False, "Exception", "(Throwable)", "", "Argument[0].SyntheticField[java.lang.Throwable.message]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "taint", "manual"] + - ["java.lang", "Exception", False, "Exception", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "df-manual"] + - ["java.lang", "Exception", False, "Exception", "(Throwable)", "", "Argument[0].SyntheticField[java.lang.Throwable.message]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "taint", "df-manual"] - ["java.lang", "IllegalArgumentException", False, "IllegalArgumentException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] - ["java.lang", "IllegalStateException", False, "IllegalStateException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] - ["java.lang", "IndexOutOfBoundsException", False, "IndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] @@ -148,16 +148,16 @@ extensions: - ["java.lang", "ThreadLocal", True, "set", "(Object)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.ThreadLocal.value]", "value", "manual"] - ["java.lang", "ThreadLocal", False, "withInitial", "(Supplier)", "", "Argument[0].ReturnValue", "ReturnValue.SyntheticField[java.lang.ThreadLocal.value]", "value", "manual"] - ["java.lang", "Throwable", False, "Throwable", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] - - ["java.lang", "Throwable", False, "Throwable", "(String,Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] - - ["java.lang", "Throwable", False, "Throwable", "(String,Throwable)", "", "Argument[1]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"] + - ["java.lang", "Throwable", False, "Throwable", "(String,Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "df-manual"] + - ["java.lang", "Throwable", False, "Throwable", "(String,Throwable)", "", "Argument[1]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "df-manual"] - ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"] - - ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0].SyntheticField[java.lang.Throwable.message]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "taint", "manual"] + - ["java.lang", "Throwable", False, "Throwable", "(Throwable)", "", "Argument[0].SyntheticField[java.lang.Throwable.message]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "taint", "df-manual"] - ["java.lang", "Throwable", True, "getCause", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "ReturnValue", "value", "manual"] - ["java.lang", "Throwable", True, "getMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"] - ["java.lang", "Throwable", True, "getLocalizedMessage", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "value", "manual"] - - ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "manual"] - - ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[0]", "ReturnValue.SyntheticField[java.lang.Throwable.cause]", "value", "manual"] - - ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[this]", "ReturnValue", "value", "manual"] + - ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.cause]", "value", "df-manual"] + - ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[0]", "ReturnValue.SyntheticField[java.lang.Throwable.cause]", "value", "df-manual"] + - ["java.lang", "Throwable", True, "initCause", "(Throwable)", "", "Argument[this]", "ReturnValue", "value", "df-manual"] - ["java.lang", "Throwable", True, "toString", "()", "", "Argument[this].SyntheticField[java.lang.Throwable.message]", "ReturnValue", "taint", "manual"] - ["java.lang", "UnsupportedOperationException", False, "UnsupportedOperationException", "(String)", "", "Argument[0]", "Argument[this].SyntheticField[java.lang.Throwable.message]", "value", "manual"] - addsTo: diff --git a/java/ql/lib/ext/javax.crypto.model.yml b/java/ql/lib/ext/javax.crypto.model.yml index 53b54f1a22db..ecd44af5b565 100644 --- a/java/ql/lib/ext/javax.crypto.model.yml +++ b/java/ql/lib/ext/javax.crypto.model.yml @@ -11,18 +11,18 @@ extensions: pack: codeql/java-all extensible: neutralModel data: - - ["javax.crypto", "Cipher", "doFinal", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "getAlgorithm", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "getExemptionMechanism", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "getInstance", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "getIV", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "getParameters", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "getProvider", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "init", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "toString", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "unwrap", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "update", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "updateAAD", "", "summary", "manual"] - - ["javax.crypto", "Cipher", "wrap", "", "summary", "manual"] - - ["javax.crypto", "Mac", "init", "(Key)", "summary", "df-manual"] - - ["javax.crypto", "Mac", "doFinal", "()", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "doFinal", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "getAlgorithm", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "getExemptionMechanism", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "getInstance", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "getIV", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "getParameters", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "getProvider", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "init", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "toString", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "unwrap", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "update", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "updateAAD", "", "summary", "df-manual"] + - ["javax.crypto", "Cipher", "wrap", "", "summary", "df-manual"] + - ["javax.crypto", "Mac", "init", "(Key)", "summary", "df-df-manual"] + - ["javax.crypto", "Mac", "doFinal", "()", "summary", "df-df-manual"] From 658fffeac1acaf6e3b823635efd27df7f611584f Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 17 Mar 2024 22:03:59 -0400 Subject: [PATCH 298/731] Java: remove experimental files --- ...ndertow.server.handlers.resource.model.yml | 8 - .../jakarta.servlet.http.model.yml | 6 - .../ext/experimental/java.nio.file.model.yml | 10 -- .../java.util.concurrent.model.yml | 1 - .../experimental/javax.servlet.http.model.yml | 6 - .../org.springframework.core.io.model.yml | 16 -- .../CWE/CWE-552/UnsafeLoadSpringResource.java | 21 --- .../CWE/CWE-552/UnsafeResourceGet.java | 18 -- .../CWE-552/UnsafeServletRequestDispatch.java | 11 -- .../CWE/CWE-552/UnsafeUrlForward.java | 38 ---- .../CWE/CWE-552/UnsafeUrlForward.qhelp | 70 -------- .../Security/CWE/CWE-552/UnsafeUrlForward.ql | 64 ------- .../Security/CWE/CWE-552/UnsafeUrlForward.qll | 163 ------------------ 13 files changed, 432 deletions(-) delete mode 100644 java/ql/lib/ext/experimental/io.undertow.server.handlers.resource.model.yml delete mode 100644 java/ql/lib/ext/experimental/jakarta.servlet.http.model.yml delete mode 100644 java/ql/lib/ext/experimental/java.nio.file.model.yml delete mode 100644 java/ql/lib/ext/experimental/org.springframework.core.io.model.yml delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-552/UnsafeLoadSpringResource.java delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-552/UnsafeResourceGet.java delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.java delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qhelp delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql delete mode 100644 java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll diff --git a/java/ql/lib/ext/experimental/io.undertow.server.handlers.resource.model.yml b/java/ql/lib/ext/experimental/io.undertow.server.handlers.resource.model.yml deleted file mode 100644 index 5c86c75522c9..000000000000 --- a/java/ql/lib/ext/experimental/io.undertow.server.handlers.resource.model.yml +++ /dev/null @@ -1,8 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: experimentalSummaryModel - data: - - ["io.undertow.server.handlers.resource", "Resource", True, "getFile", "", "", "Argument[this]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] - - ["io.undertow.server.handlers.resource", "Resource", True, "getFilePath", "", "", "Argument[this]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] - - ["io.undertow.server.handlers.resource", "Resource", True, "getPath", "", "", "Argument[this]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] diff --git a/java/ql/lib/ext/experimental/jakarta.servlet.http.model.yml b/java/ql/lib/ext/experimental/jakarta.servlet.http.model.yml deleted file mode 100644 index 9500beba15b6..000000000000 --- a/java/ql/lib/ext/experimental/jakarta.servlet.http.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: experimentalSourceModel - data: - - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual", "unsafe-url-forward"] diff --git a/java/ql/lib/ext/experimental/java.nio.file.model.yml b/java/ql/lib/ext/experimental/java.nio.file.model.yml deleted file mode 100644 index 647d72329d0b..000000000000 --- a/java/ql/lib/ext/experimental/java.nio.file.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: experimentalSummaryModel - data: - - ["java.nio.file", "Path", True, "normalize", "", "", "Argument[this]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] - - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[this]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] - - ["java.nio.file", "Path", True, "resolve", "", "", "Argument[0]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] - - ["java.nio.file", "Path", True, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] - - ["java.nio.file", "Paths", True, "get", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] diff --git a/java/ql/lib/ext/experimental/java.util.concurrent.model.yml b/java/ql/lib/ext/experimental/java.util.concurrent.model.yml index 82ff0a00570a..9484a5f5eb96 100644 --- a/java/ql/lib/ext/experimental/java.util.concurrent.model.yml +++ b/java/ql/lib/ext/experimental/java.util.concurrent.model.yml @@ -4,4 +4,3 @@ extensions: extensible: experimentalSinkModel data: - ["java.util.concurrent", "TimeUnit", True, "sleep", "", "", "Argument[0]", "thread-pause", "manual", "thread-resource-abuse"] - - ["java.util.concurrent", "TimeUnit", True, "sleep", "", "", "Argument[0]", "thread-pause", "manual", "unsafe-url-forward"] diff --git a/java/ql/lib/ext/experimental/javax.servlet.http.model.yml b/java/ql/lib/ext/experimental/javax.servlet.http.model.yml index db140149a99f..04681b300cab 100644 --- a/java/ql/lib/ext/experimental/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/experimental/javax.servlet.http.model.yml @@ -1,9 +1,4 @@ extensions: - - addsTo: - pack: codeql/java-all - extensible: experimentalSourceModel - data: - - ["javax.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual", "unsafe-url-forward"] - addsTo: pack: codeql/java-all extensible: experimentalSourceModel @@ -13,4 +8,3 @@ extensions: - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURI", "()", "", "ReturnValue", "uri-path", "manual", "permissive-dot-regex-query"] - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURL", "()", "", "ReturnValue", "uri-path", "manual", "permissive-dot-regex-query"] - ["javax.servlet.http", "HttpServletRequest", False, "getServletPath", "()", "", "ReturnValue", "uri-path", "manual", "permissive-dot-regex-query"] - diff --git a/java/ql/lib/ext/experimental/org.springframework.core.io.model.yml b/java/ql/lib/ext/experimental/org.springframework.core.io.model.yml deleted file mode 100644 index e929260f21bf..000000000000 --- a/java/ql/lib/ext/experimental/org.springframework.core.io.model.yml +++ /dev/null @@ -1,16 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: experimentalSinkModel - data: - - ["org.springframework.core.io", "ClassPathResource", True, "getFilename", "", "", "Argument[this]", "get-resource", "manual", "unsafe-url-forward"] - - ["org.springframework.core.io", "ClassPathResource", True, "getPath", "", "", "Argument[this]", "get-resource", "manual", "unsafe-url-forward"] - - ["org.springframework.core.io", "ClassPathResource", True, "getURL", "", "", "Argument[this]", "get-resource", "manual", "unsafe-url-forward"] - - ["org.springframework.core.io", "ClassPathResource", True, "resolveURL", "", "", "Argument[this]", "get-resource", "manual", "unsafe-url-forward"] - - addsTo: - pack: codeql/java-all - extensible: experimentalSummaryModel - data: - - ["org.springframework.core.io", "ClassPathResource", False, "ClassPathResource", "", "", "Argument[0]", "Argument[this]", "taint", "manual", "unsafe-url-forward"] - - ["org.springframework.core.io", "Resource", True, "createRelative", "", "", "Argument[0]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] - - ["org.springframework.core.io", "ResourceLoader", True, "getResource", "", "", "Argument[0]", "ReturnValue", "taint", "manual", "unsafe-url-forward"] diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeLoadSpringResource.java b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeLoadSpringResource.java deleted file mode 100644 index ce462fe490ef..000000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeLoadSpringResource.java +++ /dev/null @@ -1,21 +0,0 @@ -//BAD: no path validation in Spring resource loading -@GetMapping("/file") -public String getFileContent(@RequestParam(name="fileName") String fileName) { - ClassPathResource clr = new ClassPathResource(fileName); - - File file = ResourceUtils.getFile(fileName); - - Resource resource = resourceLoader.getResource(fileName); -} - -//GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix in Spring resource loading: -@GetMapping("/file") -public String getFileContent(@RequestParam(name="fileName") String fileName) { - if (!fileName.contains("..") && fileName.hasPrefix("/public-content")) { - ClassPathResource clr = new ClassPathResource(fileName); - - File file = ResourceUtils.getFile(fileName); - - Resource resource = resourceLoader.getResource(fileName); - } -} diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeResourceGet.java b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeResourceGet.java deleted file mode 100644 index 8b3583bf59e2..000000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeResourceGet.java +++ /dev/null @@ -1,18 +0,0 @@ -// BAD: no URI validation -URL url = request.getServletContext().getResource(requestUrl); -url = getClass().getResource(requestUrl); -InputStream in = url.openStream(); - -InputStream in = request.getServletContext().getResourceAsStream(requestPath); -in = getClass().getClassLoader().getResourceAsStream(requestPath); - -// GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix: -// (alternatively use `Path.normalize` instead of checking for `..`) -if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { - InputStream in = request.getServletContext().getResourceAsStream(requestPath); -} - -Path path = Paths.get(requestUrl).normalize().toRealPath(); -if (path.startsWith("/trusted")) { - URL url = request.getServletContext().getResource(path.toString()); -} diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java deleted file mode 100644 index 88a794ab9c64..000000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java +++ /dev/null @@ -1,11 +0,0 @@ -// BAD: no URI validation -String returnURL = request.getParameter("returnURL"); -RequestDispatcher rd = sc.getRequestDispatcher(returnURL); -rd.forward(request, response); - -// GOOD: check for a trusted prefix, ensuring path traversal is not used to erase that prefix: -// (alternatively use `Path.normalize` instead of checking for `..`) -if (!returnURL.contains("..") && returnURL.hasPrefix("/pages")) { ... } -// Also GOOD: check for a forbidden prefix, ensuring URL-encoding is not used to evade the check: -// (alternatively use `URLDecoder.decode` before `hasPrefix`) -if (returnURL.hasPrefix("/internal") && !returnURL.contains("%")) { ... } \ No newline at end of file diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.java b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.java deleted file mode 100644 index d159c4057362..000000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.java +++ /dev/null @@ -1,38 +0,0 @@ -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class UnsafeUrlForward { - - @GetMapping("/bad1") - public ModelAndView bad1(String url) { - return new ModelAndView(url); - } - - @GetMapping("/bad2") - public void bad2(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @GetMapping("/good1") - public void good1(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qhelp b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qhelp deleted file mode 100644 index 2e425952edc3..000000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qhelp +++ /dev/null @@ -1,70 +0,0 @@ -<!DOCTYPE qhelp PUBLIC - "-//Semmle//qhelp//EN" - "qhelp.dtd"> -<qhelp> - - -<overview> -<p>Constructing a server-side redirect path with user input could allow an attacker to download application binaries -(including application classes or jar files) or view arbitrary files within protected directories.</p> - -</overview> -<recommendation> - -<p>Unsanitized user provided data must not be used to construct the path for URL forwarding. In order to prevent -untrusted URL forwarding, it is recommended to avoid concatenating user input directly into the forwarding URL. -Instead, user input should be checked against allowed (e.g., must come within <code>user_content/</code>) or disallowed -(e.g. must not come within <code>/internal</code>) paths, ensuring that neither path traversal using <code>../</code> -or URL encoding are used to evade these checks. -</p> - -</recommendation> -<example> - -<p>The following examples show the bad case and the good case respectively. -The <code>bad</code> methods show an HTTP request parameter being used directly in a URL forward -without validating the input, which may cause file leakage. In the <code>good1</code> method, -ordinary forwarding requests are shown, which will not cause file leakage. -</p> - -<sample src="UnsafeUrlForward.java" /> - -<p>The following examples show an HTTP request parameter or request path being used directly in a -request dispatcher of Java EE without validating the input, which allows sensitive file exposure -attacks. It also shows how to remedy the problem by validating the user input. -</p> - -<sample src="UnsafeServletRequestDispatch.java" /> - -<p>The following examples show an HTTP request parameter or request path being used directly to -retrieve a resource of a Java EE application without validating the input, which allows sensitive -file exposure attacks. It also shows how to remedy the problem by validating the user input. -</p> - -<sample src="UnsafeResourceGet.java" /> - -<p>The following examples show an HTTP request parameter being used directly to retrieve a resource - of a Java Spring application without validating the input, which allows sensitive file exposure - attacks. It also shows how to remedy the problem by validating the user input. - </p> - - <sample src="UnsafeLoadSpringResource.java" /> -</example> -<references> -<li>File Disclosure: - <a href="https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.file_disclosure_spring">Unsafe Url Forward</a>. -</li> -<li>Jakarta Javadoc: - <a href="https://jakarta.ee/specifications/webprofile/9/apidocs/jakarta/servlet/servletrequest#getRequestDispatcher-java.lang.String-">Security vulnerability with unsafe usage of RequestDispatcher</a>. -</li> -<li>Micro Focus: - <a href="https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.file_disclosure_j2ee">File Disclosure: J2EE</a> -</li> -<li>CVE-2015-5174: - <a href="https://vuldb.com/?id.81084">Apache Tomcat 6.0/7.0/8.0/9.0 Servletcontext getResource/getResourceAsStream/getResourcePaths Path Traversal</a> -</li> -<li>CVE-2019-3799: - <a href="https://github.com/mpgn/CVE-2019-3799">CVE-2019-3799 - Spring-Cloud-Config-Server Directory Traversal < 2.1.2, 2.0.4, 1.4.6</a> -</li> -</references> -</qhelp> diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql deleted file mode 100644 index 15dd04a0a76f..000000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @name Unsafe URL forward, dispatch, or load from remote source - * @description URL forward, dispatch, or load based on unvalidated user-input - * may cause file information disclosure. - * @kind path-problem - * @problem.severity error - * @precision high - * @id java/unsafe-url-forward-dispatch-load - * @tags security - * experimental - * external/cwe/cwe-552 - */ - -import java -import UnsafeUrlForward -import semmle.code.java.dataflow.FlowSources -import semmle.code.java.dataflow.TaintTracking -import experimental.semmle.code.java.frameworks.Jsf -import semmle.code.java.security.PathSanitizer -import UnsafeUrlForwardFlow::PathGraph - -module UnsafeUrlForwardFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - source instanceof ThreatModelFlowSource and - not exists(MethodCall ma, Method m | ma.getMethod() = m | - ( - m instanceof HttpServletRequestGetRequestUriMethod or - m instanceof HttpServletRequestGetRequestUrlMethod or - m instanceof HttpServletRequestGetPathMethod - ) and - ma = source.asExpr() - ) - } - - predicate isSink(DataFlow::Node sink) { sink instanceof UnsafeUrlForwardSink } - - predicate isBarrier(DataFlow::Node node) { - node instanceof UnsafeUrlForwardSanitizer or - node instanceof PathInjectionSanitizer - } - - DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } - - predicate isAdditionalFlowStep(DataFlow::Node prev, DataFlow::Node succ) { - exists(MethodCall ma | - ( - ma.getMethod() instanceof GetServletResourceMethod or - ma.getMethod() instanceof GetFacesResourceMethod or - ma.getMethod() instanceof GetClassResourceMethod or - ma.getMethod() instanceof GetClassLoaderResourceMethod or - ma.getMethod() instanceof GetWildflyResourceMethod - ) and - ma.getArgument(0) = prev.asExpr() and - ma = succ.asExpr() - ) - } -} - -module UnsafeUrlForwardFlow = TaintTracking::Global<UnsafeUrlForwardFlowConfig>; - -from UnsafeUrlForwardFlow::PathNode source, UnsafeUrlForwardFlow::PathNode sink -where UnsafeUrlForwardFlow::flowPath(source, sink) -select sink.getNode(), source, sink, "Potentially untrusted URL forward due to $@.", - source.getNode(), "user-provided value" diff --git a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll b/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll deleted file mode 100644 index 1baec2dd1fa5..000000000000 --- a/java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll +++ /dev/null @@ -1,163 +0,0 @@ -import java -private import experimental.semmle.code.java.frameworks.Jsf -private import semmle.code.java.dataflow.ExternalFlow -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.dataflow.StringPrefixes -private import semmle.code.java.frameworks.javaee.ejb.EJBRestrictions -private import experimental.semmle.code.java.frameworks.SpringResource -private import semmle.code.java.security.Sanitizers - -private class ActiveModels extends ActiveExperimentalModels { - ActiveModels() { this = "unsafe-url-forward" } -} - -/** A sink for unsafe URL forward vulnerabilities. */ -abstract class UnsafeUrlForwardSink extends DataFlow::Node { } - -/** A sanitizer for unsafe URL forward vulnerabilities. */ -abstract class UnsafeUrlForwardSanitizer extends DataFlow::Node { } - -/** An argument to `getRequestDispatcher`. */ -private class RequestDispatcherSink extends UnsafeUrlForwardSink { - RequestDispatcherSink() { - exists(MethodCall ma | - ma.getMethod() instanceof GetRequestDispatcherMethod and - ma.getArgument(0) = this.asExpr() - ) - } -} - -/** The `getResource` method of `Class`. */ -class GetClassResourceMethod extends Method { - GetClassResourceMethod() { - this.getDeclaringType() instanceof TypeClass and - this.hasName("getResource") - } -} - -/** The `getResourceAsStream` method of `Class`. */ -class GetClassResourceAsStreamMethod extends Method { - GetClassResourceAsStreamMethod() { - this.getDeclaringType() instanceof TypeClass and - this.hasName("getResourceAsStream") - } -} - -/** The `getResource` method of `ClassLoader`. */ -class GetClassLoaderResourceMethod extends Method { - GetClassLoaderResourceMethod() { - this.getDeclaringType() instanceof ClassLoaderClass and - this.hasName("getResource") - } -} - -/** The `getResourceAsStream` method of `ClassLoader`. */ -class GetClassLoaderResourceAsStreamMethod extends Method { - GetClassLoaderResourceAsStreamMethod() { - this.getDeclaringType() instanceof ClassLoaderClass and - this.hasName("getResourceAsStream") - } -} - -/** The JBoss class `FileResourceManager`. */ -class FileResourceManager extends RefType { - FileResourceManager() { - this.hasQualifiedName("io.undertow.server.handlers.resource", "FileResourceManager") - } -} - -/** The JBoss method `getResource` of `FileResourceManager`. */ -class GetWildflyResourceMethod extends Method { - GetWildflyResourceMethod() { - this.getDeclaringType().getASupertype*() instanceof FileResourceManager and - this.hasName("getResource") - } -} - -/** The JBoss class `VirtualFile`. */ -class VirtualFile extends RefType { - VirtualFile() { this.hasQualifiedName("org.jboss.vfs", "VirtualFile") } -} - -/** The JBoss method `getChild` of `FileResourceManager`. */ -class GetVirtualFileChildMethod extends Method { - GetVirtualFileChildMethod() { - this.getDeclaringType().getASupertype*() instanceof VirtualFile and - this.hasName("getChild") - } -} - -/** An argument to `getResource()` or `getResourceAsStream()`. */ -private class GetResourceSink extends UnsafeUrlForwardSink { - GetResourceSink() { - sinkNode(this, "request-forgery") - or - sinkNode(this, "get-resource") - or - exists(MethodCall ma | - ( - ma.getMethod() instanceof GetServletResourceAsStreamMethod or - ma.getMethod() instanceof GetFacesResourceAsStreamMethod or - ma.getMethod() instanceof GetClassResourceAsStreamMethod or - ma.getMethod() instanceof GetClassLoaderResourceAsStreamMethod or - ma.getMethod() instanceof GetVirtualFileChildMethod - ) and - ma.getArgument(0) = this.asExpr() - ) - } -} - -/** A sink for methods that load Spring resources. */ -private class SpringResourceSink extends UnsafeUrlForwardSink { - SpringResourceSink() { - exists(MethodCall ma | - ma.getMethod() instanceof GetResourceUtilsMethod and - ma.getArgument(0) = this.asExpr() - ) - } -} - -/** An argument to `new ModelAndView` or `ModelAndView.setViewName`. */ -private class SpringModelAndViewSink extends UnsafeUrlForwardSink { - SpringModelAndViewSink() { - exists(ClassInstanceExpr cie | - cie.getConstructedType() instanceof ModelAndView and - cie.getArgument(0) = this.asExpr() - ) - or - exists(SpringModelAndViewSetViewNameCall smavsvnc | smavsvnc.getArgument(0) = this.asExpr()) - } -} - -private class PrimitiveSanitizer extends UnsafeUrlForwardSanitizer instanceof SimpleTypeSanitizer { -} - -private class SanitizingPrefix extends InterestingPrefix { - SanitizingPrefix() { - not this.getStringValue().matches("/WEB-INF/%") and - not this.getStringValue() = "forward:" - } - - override int getOffset() { result = 0 } -} - -private class FollowsSanitizingPrefix extends UnsafeUrlForwardSanitizer { - FollowsSanitizingPrefix() { this.asExpr() = any(SanitizingPrefix fp).getAnAppendedExpression() } -} - -private class ForwardPrefix extends InterestingPrefix { - ForwardPrefix() { this.getStringValue() = "forward:" } - - override int getOffset() { result = 0 } -} - -/** - * An expression appended (perhaps indirectly) to `"forward:"`, and which - * is reachable from a Spring entry point. - */ -private class SpringUrlForwardSink extends UnsafeUrlForwardSink { - SpringUrlForwardSink() { - any(SpringRequestMappingMethod sqmm).polyCalls*(this.getEnclosingCallable()) and - this.asExpr() = any(ForwardPrefix fp).getAnAppendedExpression() - } -} From a8eb1d10f646c0928dfb97b29d7fe418aadb8bab Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Sun, 17 Mar 2024 22:35:27 -0400 Subject: [PATCH 299/731] Java: remove experimental tests --- .../CWE-552/UnsafeLoadSpringResource.java | 155 ---------- .../security/CWE-552/UnsafeRequestPath.java | 52 ---- .../security/CWE-552/UnsafeResourceGet.java | 270 ------------------ .../security/CWE-552/UnsafeResourceGet2.java | 58 ---- .../CWE-552/UnsafeServletRequestDispatch.java | 131 --------- .../CWE-552/UnsafeUrlForward.expected | 129 --------- .../security/CWE-552/UnsafeUrlForward.java | 78 ----- .../security/CWE-552/UnsafeUrlForward.qlref | 1 - .../query-tests/security/CWE-552/options | 1 - 9 files changed, 875 deletions(-) delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeLoadSpringResource.java delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeRequestPath.java delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet.java delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet2.java delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.java delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.qlref delete mode 100644 java/ql/test/experimental/query-tests/security/CWE-552/options diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeLoadSpringResource.java b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeLoadSpringResource.java deleted file mode 100644 index c7e114aede35..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeLoadSpringResource.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.example; - -import java.io.File; -import java.io.FileReader; -import java.io.InputStreamReader; -import java.io.IOException; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.nio.file.Files; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.ResourceLoader; -import org.springframework.util.ResourceUtils; -import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -/** Sample class of Spring RestController */ -@RestController -public class UnsafeLoadSpringResource { - @GetMapping("/file1") - //BAD: Get resource from ClassPathResource without input validation - public String getFileContent1(@RequestParam(name="fileName") String fileName) { - // A request such as the following can disclose source code and application configuration - // fileName=/../../WEB-INF/views/page.jsp - // fileName=/com/example/package/SampleController.class - ClassPathResource clr = new ClassPathResource(fileName); - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - try { - Reader in = new FileReader(clr.getFilename()); - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - } catch (IOException ie) { - ie.printStackTrace(); - } - return out.toString(); - } - - @GetMapping("/file1a") - //GOOD: Get resource from ClassPathResource with input path validation - public String getFileContent1a(@RequestParam(name="fileName") String fileName) { - String result = null; - if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { - ClassPathResource clr = new ClassPathResource(fileName); - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - try { - Reader in = new InputStreamReader(clr.getInputStream(), "UTF-8"); - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - } catch (IOException ie) { - ie.printStackTrace(); - } - result = out.toString(); - } - return result; - } - - @GetMapping("/file2") - //BAD: Get resource from ResourceUtils without input validation - public String getFileContent2(@RequestParam(name="fileName") String fileName) { - String content = null; - - try { - // A request such as the following can disclose source code and system configuration - // fileName=/etc/hosts - // fileName=file:/etc/hosts - // fileName=/opt/appdir/WEB-INF/views/page.jsp - File file = ResourceUtils.getFile(fileName); - //Read File Content - content = new String(Files.readAllBytes(file.toPath())); - } catch (IOException ie) { - ie.printStackTrace(); - } - return content; - } - - @GetMapping("/file2a") - //GOOD: Get resource from ResourceUtils with input path validation - public String getFileContent2a(@RequestParam(name="fileName") String fileName) { - String content = null; - - if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { - try { - File file = ResourceUtils.getFile(fileName); - //Read File Content - content = new String(Files.readAllBytes(file.toPath())); - } catch (IOException ie) { - ie.printStackTrace(); - } - } - return content; - } - - @Autowired - ResourceLoader resourceLoader; - - @GetMapping("/file3") - //BAD: Get resource from ResourceLoader (same as application context) without input validation - // Note it is not detected without the generic `resource.getInputStream()` check - public String getFileContent3(@RequestParam(name="fileName") String fileName) { - String content = null; - - try { - // A request such as the following can disclose source code and system configuration - // fileName=/WEB-INF/views/page.jsp - // fileName=/WEB-INF/classes/com/example/package/SampleController.class - // fileName=file:/etc/hosts - Resource resource = resourceLoader.getResource(fileName); - - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - - Reader in = new InputStreamReader(resource.getInputStream(), "UTF-8"); - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - content = out.toString(); - } catch (IOException ie) { - ie.printStackTrace(); - } - return content; - } - - @GetMapping("/file3a") - //GOOD: Get resource from ResourceLoader (same as application context) with input path validation - public String getFileContent3a(@RequestParam(name="fileName") String fileName) { - String content = null; - - if (fileName.startsWith("/safe_dir") && !fileName.contains("..")) { - try { - Resource resource = resourceLoader.getResource(fileName); - - char[] buffer = new char[4096]; - StringBuilder out = new StringBuilder(); - - Reader in = new InputStreamReader(resource.getInputStream(), "UTF-8"); - for (int numRead; (numRead = in.read(buffer, 0, buffer.length)) > 0; ) { - out.append(buffer, 0, numRead); - } - content = out.toString(); - } catch (IOException ie) { - ie.printStackTrace(); - } - } - return content; - } -} diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeRequestPath.java b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeRequestPath.java deleted file mode 100644 index 2de0cae0d3c5..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeRequestPath.java +++ /dev/null @@ -1,52 +0,0 @@ -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -// @WebFilter("/*") -public class UnsafeRequestPath implements Filter { - private static final String BASE_PATH = "/pages"; - - @Override - // BAD: Request dispatcher from servlet path without check - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); - // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check - if (path != null && !path.startsWith("/WEB-INF")) { - request.getRequestDispatcher(path).forward(request, response); - } else { - chain.doFilter(request, response); - } - } - - // GOOD: Request dispatcher from servlet path with check - public void doFilter2(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); - - if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getRequestDispatcher(path).forward(request, response); - } else { - chain.doFilter(request, response); - } - } - - // GOOD: Request dispatcher from servlet path with whitelisted string comparison - public void doFilter3(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - String path = ((HttpServletRequest) request).getServletPath(); - - if (path.equals("/comaction")) { - request.getRequestDispatcher(path).forward(request, response); - } else { - chain.doFilter(request, response); - } - } -} diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet.java b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet.java deleted file mode 100644 index 64c23334f187..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.example; - -import java.io.InputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.net.URI; -import java.net.URL; -import java.net.URISyntaxException; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.ServletOutputStream; -import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; - -import io.undertow.server.handlers.resource.FileResourceManager; -import io.undertow.server.handlers.resource.Resource; -import org.jboss.vfs.VFS; -import org.jboss.vfs.VirtualFile; - -public class UnsafeResourceGet extends HttpServlet { - private static final String BASE_PATH = "/pages"; - - @Override - // BAD: getResource constructed from `ServletContext` without input validation - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file - URL url = sc.getResource(requestUrl); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResource constructed from `ServletContext` with input validation - protected void doGetGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - Path path = Paths.get(requestUrl).normalize().toRealPath(); - if (path.startsWith(BASE_PATH)) { - URL url = sc.getResource(path.toString()); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - // GOOD: getResource constructed from `ServletContext` with null check only - protected void doGetGood2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - PrintWriter writer = response.getWriter(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file - URL url = sc.getResource(requestUrl); - if (url == null) { - writer.println("Requested source not found"); - } - } - - // GOOD: getResource constructed from `ServletContext` with `equals` check - protected void doGetGood3(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - ServletContext sc = request.getServletContext(); - - if (requestUrl.equals("/public/crossdomain.xml")) { - URL url = sc.getResource(requestUrl); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - @Override - // BAD: getResourceAsStream constructed from `ServletContext` without input validation - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - // A sample request /fake.jsp/../WEB-INF/web.xml can load the web.xml file - InputStream in = request.getServletContext().getResourceAsStream(requestPath); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResourceAsStream constructed from `ServletContext` with input validation - protected void doPostGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { - InputStream in = request.getServletContext().getResourceAsStream(requestPath); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - @Override - // BAD: getResource constructed from `Class` without input validation - protected void doHead(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file - // Note the class is in two levels of subpackages and `Class.getResource` starts from its own directory - URL url = getClass().getResource(requestUrl); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResource constructed from `Class` with input validation - protected void doHeadGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - Path path = Paths.get(requestUrl).normalize().toRealPath(); - if (path.startsWith(BASE_PATH)) { - URL url = getClass().getResource(path.toString()); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - @Override - // BAD: getResourceAsStream constructed from `ClassLoader` without input validation - protected void doPut(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file - // Note the class is in two levels of subpackages and `ClassLoader.getResourceAsStream` starts from its own directory - InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // GOOD: getResourceAsStream constructed from `ClassLoader` with input validation - protected void doPutGood(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - ServletOutputStream out = response.getOutputStream(); - - ServletConfig cfg = getServletConfig(); - ServletContext sc = cfg.getServletContext(); - - if (!requestPath.contains("..") && requestPath.startsWith("/trusted")) { - InputStream in = getClass().getClassLoader().getResourceAsStream(requestPath); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - } - - // BAD: getResource constructed from `ClassLoader` without input validation - protected void doPutBad(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestUrl = request.getParameter("requestURL"); - ServletOutputStream out = response.getOutputStream(); - - // A sample request /fake.jsp/../../../WEB-INF/web.xml can load the web.xml file - // Note the class is in two levels of subpackages and `ClassLoader.getResource` starts from its own directory - URL url = getClass().getClassLoader().getResource(requestUrl); - - InputStream in = url.openStream(); - byte[] buf = new byte[4 * 1024]; // 4K buffer - int bytesRead; - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - } - - // BAD: getResource constructed using Undertow IO without input validation - protected void doPutBad2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - - try { - FileResourceManager rm = new FileResourceManager(VFS.getChild(new URI("/usr/share")).getPhysicalFile()); - Resource rs = rm.getResource(requestPath); - - VirtualFile overlay = VFS.getChild(new URI("EAP_HOME/modules/")); - // Do file operations - overlay.getChild(rs.getPath()); - } catch (URISyntaxException ue) { - throw new IOException("Cannot parse the URI"); - } - } - - // GOOD: getResource constructed using Undertow IO with input validation - protected void doPutGood2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestPath = request.getParameter("requestPath"); - - try { - FileResourceManager rm = new FileResourceManager(VFS.getChild(new URI("/usr/share")).getPhysicalFile()); - Resource rs = rm.getResource(requestPath); - - VirtualFile overlay = VFS.getChild(new URI("EAP_HOME/modules/")); - String path = rs.getPath(); - if (path.startsWith("/trusted_path") && !path.contains("..")) { - // Do file operations - overlay.getChild(path); - } - } catch (URISyntaxException ue) { - throw new IOException("Cannot parse the URI"); - } - } -} diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet2.java b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet2.java deleted file mode 100644 index b3d041d024cf..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeResourceGet2.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.example; - -import javax.faces.context.FacesContext; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.IOException; -import java.net.URL; -import java.util.Map; - -/** Sample class of JSF managed bean */ -public class UnsafeResourceGet2 { - // BAD: getResourceAsStream constructed from `ExternalContext` without input validation - public String parameterActionBad1() throws IOException { - FacesContext fc = FacesContext.getCurrentInstance(); - Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); - String loadUrl = params.get("loadUrl"); - - InputStreamReader isr = new InputStreamReader(fc.getExternalContext().getResourceAsStream(loadUrl)); - BufferedReader br = new BufferedReader(isr); - if(br.ready()) { - //Do Stuff - return "result"; - } - - return "home"; - } - - // BAD: getResource constructed from `ExternalContext` without input validation - public String parameterActionBad2() throws IOException { - FacesContext fc = FacesContext.getCurrentInstance(); - Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); - String loadUrl = params.get("loadUrl"); - - URL url = fc.getExternalContext().getResource(loadUrl); - - InputStream in = url.openStream(); - //Do Stuff - return "result"; - } - - // GOOD: getResource constructed from `ExternalContext` with input validation - public String parameterActionGood1() throws IOException { - FacesContext fc = FacesContext.getCurrentInstance(); - Map<String, String> params = fc.getExternalContext().getRequestParameterMap(); - String loadUrl = params.get("loadUrl"); - - if (loadUrl.equals("/public/crossdomain.xml")) { - URL url = fc.getExternalContext().getResource(loadUrl); - - InputStream in = url.openStream(); - //Do Stuff - return "result"; - } - - return "home"; - } -} diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java deleted file mode 100644 index ee63939b209e..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeServletRequestDispatch.java +++ /dev/null @@ -1,131 +0,0 @@ -import java.io.IOException; -import java.net.URLDecoder; -import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; - -public class UnsafeServletRequestDispatch extends HttpServlet { - private static final String BASE_PATH = "/pages"; - - @Override - // BAD: Request dispatcher constructed from `ServletContext` without input validation - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String action = request.getParameter("action"); - String returnURL = request.getParameter("returnURL"); - - ServletConfig cfg = getServletConfig(); - if (action.equals("Login")) { - ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher("/Login.jsp"); - rd.forward(request, response); - } else { - ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher(returnURL); - rd.forward(request, response); - } - } - - @Override - // BAD: Request dispatcher constructed from `HttpServletRequest` without input validation - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String action = request.getParameter("action"); - String returnURL = request.getParameter("returnURL"); - - if (action.equals("Login")) { - RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); - rd.forward(request, response); - } else { - RequestDispatcher rd = request.getRequestDispatcher(returnURL); - rd.forward(request, response); - } - } - - @Override - // GOOD: Request dispatcher with a whitelisted URI - protected void doPut(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String action = request.getParameter("action"); - - if (action.equals("Login")) { - RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); - rd.forward(request, response); - } else if (action.equals("Register")) { - RequestDispatcher rd = request.getRequestDispatcher("/Register.jsp"); - rd.forward(request, response); - } - } - - // BAD: Request dispatcher without path traversal check - protected void doHead2(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - - // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check - // The payload "/pages/welcome.jsp/../../%57EB-INF/web.xml" can bypass the check as well since RequestDispatcher will decode `%57` as `W` - if (path.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(path).include(request, response); - } - } - - // GOOD: Request dispatcher with path traversal check - protected void doHead3(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - - if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); - } - } - - // GOOD: Request dispatcher with path normalization and comparison - protected void doHead4(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); - - // /pages/welcome.jsp/../../WEB-INF/web.xml becomes /WEB-INF/web.xml - // /pages/welcome.jsp/../../%57EB-INF/web.xml becomes /%57EB-INF/web.xml - if (requestedPath.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); - } - } - - // FN: Request dispatcher with negation check and path normalization, but without URL decoding - // When promoting this query, consider using FlowStates to make `getRequestDispatcher` a sink - // only if a URL-decoding step has NOT been crossed (i.e. make URLDecoder.decode change the - // state to a different value than the one required at the sink). - protected void doHead5(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); - - if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); - } - } - - // GOOD: Request dispatcher with path traversal check and URL decoding - protected void doHead6(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String path = request.getParameter("path"); - boolean hasEncoding = path.contains("%"); - while (hasEncoding) { - path = URLDecoder.decode(path, "UTF-8"); - hasEncoding = path.contains("%"); - } - - if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); - } - } -} diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected deleted file mode 100644 index 545471868e76..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.expected +++ /dev/null @@ -1,129 +0,0 @@ -edges -| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | provenance | | -| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | UnsafeLoadSpringResource.java:35:31:35:33 | clr | provenance | | -| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | provenance | | -| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | provenance | | -| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | provenance | | -| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | provenance | | -| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:17:20:17:25 | params : Map | provenance | | -| UnsafeResourceGet2.java:17:20:17:25 | params : Map | UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | provenance | | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | provenance | | -| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:33:20:33:25 | params : Map | provenance | | -| UnsafeResourceGet2.java:33:20:33:25 | params : Map | UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | provenance | | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | provenance | | -| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | UnsafeResourceGet2.java:37:20:37:22 | url | provenance | | -| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | provenance | | -| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | provenance | | -| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | UnsafeResourceGet.java:41:20:41:22 | url | provenance | | -| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | provenance | | -| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | provenance | | -| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | provenance | | -| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | UnsafeResourceGet.java:150:20:150:22 | url | provenance | | -| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | provenance | | -| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | provenance | | -| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | provenance | | -| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | UnsafeResourceGet.java:226:20:226:22 | url | provenance | | -| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | provenance | | -| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:241:33:241:43 | requestPath : String | provenance | | -| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | UnsafeResourceGet.java:245:21:245:22 | rs : Resource | provenance | | -| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | provenance | | -| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | provenance | | -| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | provenance | | -| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | provenance | | -| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | provenance | | -| UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | provenance | | -| UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | provenance | | -| UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | provenance | | -| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | provenance | | -| UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | provenance | | -| UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | provenance | | -| UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | provenance | | -| UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | provenance | | -nodes -| UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:31:27:31:57 | new ClassPathResource(...) : ClassPathResource | semmle.label | new ClassPathResource(...) : ClassPathResource | -| UnsafeLoadSpringResource.java:31:49:31:56 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:35:31:35:33 | clr | semmle.label | clr | -| UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:76:38:76:45 | fileName | semmle.label | fileName | -| UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | semmle.label | fileName : String | -| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | semmle.label | fileName | -| UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | semmle.label | getServletPath(...) : String | -| UnsafeRequestPath.java:23:33:23:36 | path | semmle.label | path | -| UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | -| UnsafeResourceGet2.java:17:20:17:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:17:20:17:40 | get(...) : String | semmle.label | get(...) : String | -| UnsafeResourceGet2.java:19:93:19:99 | loadUrl | semmle.label | loadUrl | -| UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | semmle.label | getRequestParameterMap(...) : Map | -| UnsafeResourceGet2.java:33:20:33:25 | params : Map | semmle.label | params : Map | -| UnsafeResourceGet2.java:33:20:33:40 | get(...) : String | semmle.label | get(...) : String | -| UnsafeResourceGet2.java:35:13:35:56 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet2.java:35:49:35:55 | loadUrl : String | semmle.label | loadUrl : String | -| UnsafeResourceGet2.java:37:20:37:22 | url | semmle.label | url | -| UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:39:13:39:38 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet.java:39:28:39:37 | requestUrl : String | semmle.label | requestUrl : String | -| UnsafeResourceGet.java:41:20:41:22 | url | semmle.label | url | -| UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:115:68:115:78 | requestPath | semmle.label | requestPath | -| UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:148:13:148:46 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet.java:148:36:148:45 | requestUrl : String | semmle.label | requestUrl : String | -| UnsafeResourceGet.java:150:20:150:22 | url | semmle.label | url | -| UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:189:68:189:78 | requestPath | semmle.label | requestPath | -| UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:224:13:224:63 | getResource(...) : URL | semmle.label | getResource(...) : URL | -| UnsafeResourceGet.java:224:53:224:62 | requestUrl : String | semmle.label | requestUrl : String | -| UnsafeResourceGet.java:226:20:226:22 | url | semmle.label | url | -| UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeResourceGet.java:241:18:241:44 | getResource(...) : Resource | semmle.label | getResource(...) : Resource | -| UnsafeResourceGet.java:241:33:241:43 | requestPath : String | semmle.label | requestPath : String | -| UnsafeResourceGet.java:245:21:245:22 | rs : Resource | semmle.label | rs : Resource | -| UnsafeResourceGet.java:245:21:245:32 | getPath(...) | semmle.label | getPath(...) | -| UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | semmle.label | returnURL | -| UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | semmle.label | returnURL | -| UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | semmle.label | getParameter(...) : String | -| UnsafeServletRequestDispatch.java:76:53:76:56 | path | semmle.label | path | -| UnsafeUrlForward.java:13:27:13:36 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:14:27:14:29 | url | semmle.label | url | -| UnsafeUrlForward.java:18:27:18:36 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:20:28:20:30 | url | semmle.label | url | -| UnsafeUrlForward.java:25:21:25:30 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:26:23:26:25 | url | semmle.label | url | -| UnsafeUrlForward.java:30:27:30:36 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:31:48:31:63 | ... + ... | semmle.label | ... + ... | -| UnsafeUrlForward.java:31:61:31:63 | url | semmle.label | url | -| UnsafeUrlForward.java:36:19:36:28 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:38:33:38:35 | url | semmle.label | url | -| UnsafeUrlForward.java:47:19:47:28 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:49:33:49:62 | ... + ... | semmle.label | ... + ... | -| UnsafeUrlForward.java:58:19:58:28 | url : String | semmle.label | url : String | -| UnsafeUrlForward.java:60:33:60:62 | ... + ... | semmle.label | ... + ... | -subpaths -#select -| UnsafeLoadSpringResource.java:35:31:35:33 | clr | UnsafeLoadSpringResource.java:27:32:27:77 | fileName : String | UnsafeLoadSpringResource.java:35:31:35:33 | clr | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:27:32:27:77 | fileName | user-provided value | -| UnsafeLoadSpringResource.java:76:38:76:45 | fileName | UnsafeLoadSpringResource.java:68:32:68:77 | fileName : String | UnsafeLoadSpringResource.java:76:38:76:45 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:68:32:68:77 | fileName | user-provided value | -| UnsafeLoadSpringResource.java:116:51:116:58 | fileName | UnsafeLoadSpringResource.java:108:32:108:77 | fileName : String | UnsafeLoadSpringResource.java:116:51:116:58 | fileName | Potentially untrusted URL forward due to $@. | UnsafeLoadSpringResource.java:108:32:108:77 | fileName | user-provided value | -| UnsafeRequestPath.java:23:33:23:36 | path | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) : String | UnsafeRequestPath.java:23:33:23:36 | path | Potentially untrusted URL forward due to $@. | UnsafeRequestPath.java:20:17:20:63 | getServletPath(...) | user-provided value | -| UnsafeResourceGet2.java:19:93:19:99 | loadUrl | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:19:93:19:99 | loadUrl | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:16:32:16:79 | getRequestParameterMap(...) | user-provided value | -| UnsafeResourceGet2.java:37:20:37:22 | url | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) : Map | UnsafeResourceGet2.java:37:20:37:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet2.java:32:32:32:79 | getRequestParameterMap(...) | user-provided value | -| UnsafeResourceGet.java:41:20:41:22 | url | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) : String | UnsafeResourceGet.java:41:20:41:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:32:23:32:56 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:115:68:115:78 | requestPath | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) : String | UnsafeResourceGet.java:115:68:115:78 | requestPath | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:111:24:111:58 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:150:20:150:22 | url | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) : String | UnsafeResourceGet.java:150:20:150:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:143:23:143:56 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:189:68:189:78 | requestPath | UnsafeResourceGet.java:181:24:181:58 | getParameter(...) : String | UnsafeResourceGet.java:189:68:189:78 | requestPath | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:181:24:181:58 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:226:20:226:22 | url | UnsafeResourceGet.java:219:23:219:56 | getParameter(...) : String | UnsafeResourceGet.java:226:20:226:22 | url | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:219:23:219:56 | getParameter(...) | user-provided value | -| UnsafeResourceGet.java:245:21:245:32 | getPath(...) | UnsafeResourceGet.java:237:24:237:58 | getParameter(...) : String | UnsafeResourceGet.java:245:21:245:32 | getPath(...) | Potentially untrusted URL forward due to $@. | UnsafeResourceGet.java:237:24:237:58 | getParameter(...) | user-provided value | -| UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:32:51:32:59 | returnURL | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:23:22:23:54 | getParameter(...) | user-provided value | -| UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) : String | UnsafeServletRequestDispatch.java:48:56:48:64 | returnURL | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:42:22:42:54 | getParameter(...) | user-provided value | -| UnsafeServletRequestDispatch.java:76:53:76:56 | path | UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) : String | UnsafeServletRequestDispatch.java:76:53:76:56 | path | Potentially untrusted URL forward due to $@. | UnsafeServletRequestDispatch.java:71:17:71:44 | getParameter(...) | user-provided value | -| UnsafeUrlForward.java:14:27:14:29 | url | UnsafeUrlForward.java:13:27:13:36 | url : String | UnsafeUrlForward.java:14:27:14:29 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:13:27:13:36 | url | user-provided value | -| UnsafeUrlForward.java:20:28:20:30 | url | UnsafeUrlForward.java:18:27:18:36 | url : String | UnsafeUrlForward.java:20:28:20:30 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:18:27:18:36 | url | user-provided value | -| UnsafeUrlForward.java:26:23:26:25 | url | UnsafeUrlForward.java:25:21:25:30 | url : String | UnsafeUrlForward.java:26:23:26:25 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:25:21:25:30 | url | user-provided value | -| UnsafeUrlForward.java:31:48:31:63 | ... + ... | UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:48:31:63 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:30:27:30:36 | url | user-provided value | -| UnsafeUrlForward.java:31:61:31:63 | url | UnsafeUrlForward.java:30:27:30:36 | url : String | UnsafeUrlForward.java:31:61:31:63 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:30:27:30:36 | url | user-provided value | -| UnsafeUrlForward.java:38:33:38:35 | url | UnsafeUrlForward.java:36:19:36:28 | url : String | UnsafeUrlForward.java:38:33:38:35 | url | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:36:19:36:28 | url | user-provided value | -| UnsafeUrlForward.java:49:33:49:62 | ... + ... | UnsafeUrlForward.java:47:19:47:28 | url : String | UnsafeUrlForward.java:49:33:49:62 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:47:19:47:28 | url | user-provided value | -| UnsafeUrlForward.java:60:33:60:62 | ... + ... | UnsafeUrlForward.java:58:19:58:28 | url : String | UnsafeUrlForward.java:60:33:60:62 | ... + ... | Potentially untrusted URL forward due to $@. | UnsafeUrlForward.java:58:19:58:28 | url | user-provided value | diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.java b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.java deleted file mode 100644 index 4018ed289481..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.java +++ /dev/null @@ -1,78 +0,0 @@ -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.servlet.ModelAndView; - -@Controller -public class UnsafeUrlForward { - - @GetMapping("/bad1") - public ModelAndView bad1(String url) { - return new ModelAndView(url); - } - - @GetMapping("/bad2") - public ModelAndView bad2(String url) { - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName(url); - return modelAndView; - } - - @GetMapping("/bad3") - public String bad3(String url) { - return "forward:" + url + "/swagger-ui/index.html"; - } - - @GetMapping("/bad4") - public ModelAndView bad4(String url) { - ModelAndView modelAndView = new ModelAndView("forward:" + url); - return modelAndView; - } - - @GetMapping("/bad5") - public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher(url).include(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @GetMapping("/bad6") - public void bad6(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @GetMapping("/bad7") - public void bad7(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @GetMapping("/good1") - public void good1(String url, HttpServletRequest request, HttpServletResponse response) { - try { - request.getRequestDispatcher("/index.jsp?token=" + url).forward(request, response); - } catch (ServletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.qlref b/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.qlref deleted file mode 100644 index 2e4cb5e726a9..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/UnsafeUrlForward.qlref +++ /dev/null @@ -1 +0,0 @@ -experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/security/CWE-552/options b/java/ql/test/experimental/query-tests/security/CWE-552/options deleted file mode 100644 index 8fbf23e17dff..000000000000 --- a/java/ql/test/experimental/query-tests/security/CWE-552/options +++ /dev/null @@ -1 +0,0 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/servlet-api-2.4:${testdir}/../../../../stubs/springframework-5.3.8/:${testdir}/../../../../stubs/javax-faces-2.3/:${testdir}/../../../../stubs/undertow-io-2.2/:${testdir}/../../../../stubs/jboss-vfs-3.2/:${testdir}/../../../../stubs/springframework-5.3.8/ From 45c65b48aaa747a3198d59618fa64505af90d4a1 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen <yoff@github.com> Date: Mon, 18 Mar 2024 08:49:31 +0100 Subject: [PATCH 300/731] python: make it a real package so python2 also respects it --- .../experimental/dataflow/summaries/extracted_package/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 python/ql/test/experimental/dataflow/summaries/extracted_package/__init__.py diff --git a/python/ql/test/experimental/dataflow/summaries/extracted_package/__init__.py b/python/ql/test/experimental/dataflow/summaries/extracted_package/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 From 2a0c451d2d3ceeeb4a6d10a619cbe084e0f133bd Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen <yoff@github.com> Date: Mon, 18 Mar 2024 10:29:36 +0100 Subject: [PATCH 301/731] python: No `fieldFlowBranchLimit` for `SummarizedCallable`s Like https://github.com/github/codeql/pull/15689 for Ruby. --- .../python/dataflow/new/internal/DataFlowImplSpecific.qll | 2 ++ .../experimental/dataflow/summaries/conflicting_summaries.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll index cffdefe41ba2..704af5b08e77 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowImplSpecific.qll @@ -22,4 +22,6 @@ module PythonDataFlow implements InputSig { predicate neverSkipInPathGraph = Private::neverSkipInPathGraph/1; Node exprNode(DataFlowExpr e) { result = Public::exprNode(e) } + + predicate ignoreFieldFlowBranchLimit(DataFlowCallable c) { exists(c.asLibraryCallable()) } } diff --git a/python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py b/python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py index 9528e9cdafc2..7b031f37a9fa 100644 --- a/python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py +++ b/python/ql/test/experimental/dataflow/summaries/conflicting_summaries.py @@ -7,7 +7,7 @@ # can be concluded from its definition. This seems to discard all summaries, including # the one with flow to `ReturnValue.Attribute[pattern]`. ensure_tainted( - with_subpath(ts).pattern, # $ MISSING: tainted + with_subpath(ts).pattern, # $ tainted with_subpath(ts), # $ tainted with_subpath(ts), # $ tainted ) From a810165e3576de8e3937db24c7de6173d4a3561e Mon Sep 17 00:00:00 2001 From: Arthur Baars <aibaars@github.com> Date: Mon, 18 Mar 2024 10:55:18 +0100 Subject: [PATCH 302/731] Fix minor formatting issues in changenotes --- .../src/change-notes/2024-03-11-remove-stored-query-variants.md | 2 +- ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md | 2 +- ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md index f86836b1219f..3ca0b14f7b2b 100644 --- a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md +++ b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md @@ -1,5 +1,5 @@ --- category: majorAnalysis --- -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`. `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. diff --git a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md index 56d2dcf5c73c..66a82dd3d3ff 100644 --- a/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md +++ b/ruby/ql/lib/change-notes/2024-02-26-arel-sqlliteral.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. \ No newline at end of file +* Calls to `Arel::Nodes::SqlLiteral.new` are now modeled as instances of the `SqlConstruction` concept, as well as propagating taint from their argument. diff --git a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md index f08bd54efa20..42275fcee7d7 100644 --- a/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md +++ b/ruby/ql/lib/change-notes/2024-02-29-i18n-translate.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. \ No newline at end of file +* Calls to `I18n.translate` as well as Rails helper translate methods now propagate taint from their keyword arguments. The Rails translate methods are also recognized as XSS sanitizers when using keys marked as html safe. From 3a8d4689838bf2acb031a7056ab4c221c50834b0 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 18 Mar 2024 11:02:29 +0100 Subject: [PATCH 303/731] C#: Add logging for source file parsing --- .../Semmle.Extraction.CSharp/Extractor/Extractor.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs index 68d077b15e6b..22a55849a026 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs @@ -284,9 +284,14 @@ public static IEnumerable<Action> ReadSyntaxTrees(IEnumerable<string> sources, A try { using var file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); - var st = CSharpSyntaxTree.ParseText(SourceText.From(file, encoding), parseOptions, path); + analyser.Logger.Log(Severity.Trace, $"Parsing source file: '{path}'"); + var tree = CSharpSyntaxTree.ParseText(SourceText.From(file, encoding), parseOptions, path); + analyser.Logger.Log(Severity.Trace, $"Source file parsed: '{path}'"); + lock (ret) - ret.Add(st); + { + ret.Add(tree); + } } catch (IOException ex) { From 881c42663150ae4b2598a063b916f71d114e8c45 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 18 Mar 2024 11:03:12 +0100 Subject: [PATCH 304/731] C#: Iterate text files only once --- .../DependencyManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index f4ae77c3d338..c4c901a3cc43 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -65,7 +65,7 @@ public DependencyManager(string srcDir, ILogger logger) var allFiles = GetAllFiles().ToList(); var binaryFileExtensions = new HashSet<string>(new[] { ".dll", ".exe" }); // TODO: add more binary file extensions. var allNonBinaryFiles = allFiles.Where(f => !binaryFileExtensions.Contains(f.Extension.ToLowerInvariant())).ToList(); - var smallNonBinaryFiles = allNonBinaryFiles.SelectSmallFiles(logger).SelectFileNames(); + var smallNonBinaryFiles = allNonBinaryFiles.SelectSmallFiles(logger).SelectFileNames().ToList(); this.fileContent = new FileContent(logger, smallNonBinaryFiles); this.nonGeneratedSources = allNonBinaryFiles.SelectFileNamesByExtension(".cs").ToList(); this.generatedSources = new(); From 51db2b0bc4a6f6fbe25cc2f75a1a529a389462ac Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 10:11:37 +0000 Subject: [PATCH 305/731] C++: Convert tabs to spaces in ir.cpp. --- cpp/ql/test/library-tests/ir/ir/ir.cpp | 84 +++++++++++++------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 01d6b2681027..eb31d8cc0704 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1057,52 +1057,52 @@ void Lambda(int x, const String& s) { namespace std { template<class T> - struct remove_const { typedef T type; }; + struct remove_const { typedef T type; }; - template<class T> - struct remove_const<const T> { typedef T type; }; + template<class T> + struct remove_const<const T> { typedef T type; }; - // `remove_const_t<T>` removes any `const` specifier from `T` - template<class T> - using remove_const_t = typename remove_const<T>::type; + // `remove_const_t<T>` removes any `const` specifier from `T` + template<class T> + using remove_const_t = typename remove_const<T>::type; struct ptrdiff_t; - template<class I> struct iterator_traits; - - template <class Category, - class value_type, - class difference_type = ptrdiff_t, - class pointer_type = value_type*, - class reference_type = value_type&> - struct iterator { - typedef Category iterator_category; - - iterator(); - iterator(iterator<Category, remove_const_t<value_type> > const &other); // non-const -> const conversion constructor - - iterator &operator++(); - iterator operator++(int); - iterator &operator--(); - iterator operator--(int); - bool operator==(iterator other) const; - bool operator!=(iterator other) const; - reference_type operator*() const; - pointer_type operator->() const; - iterator operator+(int); - iterator operator-(int); - iterator &operator+=(int); - iterator &operator-=(int); - int operator-(iterator); - reference_type operator[](int); - }; - - struct input_iterator_tag {}; - struct forward_iterator_tag : public input_iterator_tag {}; - struct bidirectional_iterator_tag : public forward_iterator_tag {}; - struct random_access_iterator_tag : public bidirectional_iterator_tag {}; - - struct output_iterator_tag {}; + template<class I> struct iterator_traits; + + template <class Category, + class value_type, + class difference_type = ptrdiff_t, + class pointer_type = value_type*, + class reference_type = value_type&> + struct iterator { + typedef Category iterator_category; + + iterator(); + iterator(iterator<Category, remove_const_t<value_type> > const &other); // non-const -> const conversion constructor + + iterator &operator++(); + iterator operator++(int); + iterator &operator--(); + iterator operator--(int); + bool operator==(iterator other) const; + bool operator!=(iterator other) const; + reference_type operator*() const; + pointer_type operator->() const; + iterator operator+(int); + iterator operator-(int); + iterator &operator+=(int); + iterator &operator-=(int); + int operator-(iterator); + reference_type operator[](int); + }; + + struct input_iterator_tag {}; + struct forward_iterator_tag : public input_iterator_tag {}; + struct bidirectional_iterator_tag : public forward_iterator_tag {}; + struct random_access_iterator_tag : public bidirectional_iterator_tag {}; + + struct output_iterator_tag {}; template<typename T> struct vector { @@ -1110,7 +1110,7 @@ namespace std { ~vector(); using iterator = std::iterator<random_access_iterator_tag, T>; - using const_iterator = std::iterator<random_access_iterator_tag, const T>; + using const_iterator = std::iterator<random_access_iterator_tag, const T>; iterator begin() const; iterator end() const; From 0a6243d07b5cd2ea78b2322a87cce28d7ba16d68 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Mon, 18 Mar 2024 10:14:07 +0000 Subject: [PATCH 306/731] Release preparation for version 2.16.5 --- cpp/ql/lib/CHANGELOG.md | 4 ++++ cpp/ql/lib/change-notes/released/0.12.8.md | 3 +++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 ++++ cpp/ql/src/change-notes/released/0.9.7.md | 3 +++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../campaigns/Solorigate/lib/change-notes/released/1.7.11.md | 3 +++ csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../campaigns/Solorigate/src/change-notes/released/1.7.11.md | 3 +++ csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 4 ++++ csharp/ql/lib/change-notes/released/0.8.11.md | 3 +++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 4 ++++ csharp/ql/src/change-notes/released/0.8.11.md | 3 +++ csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ go/ql/consistency-queries/change-notes/released/0.0.10.md | 3 +++ go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ++++ go/ql/lib/change-notes/released/0.7.11.md | 3 +++ go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ++++ go/ql/src/change-notes/released/0.7.11.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ java/ql/automodel/src/change-notes/released/0.0.18.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 ++++ java/ql/lib/change-notes/released/0.8.11.md | 3 +++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 4 ++++ java/ql/src/change-notes/released/0.8.11.md | 3 +++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ javascript/ql/lib/change-notes/released/0.8.11.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ javascript/ql/src/change-notes/released/0.8.11.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ misc/suite-helpers/change-notes/released/0.7.11.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 4 ++++ python/ql/lib/change-notes/released/0.11.11.md | 3 +++ python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ++++ python/ql/src/change-notes/released/0.9.11.md | 3 +++ python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 ++++ ruby/ql/lib/change-notes/released/0.8.11.md | 3 +++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ++++ ruby/ql/src/change-notes/released/0.8.11.md | 3 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ shared/controlflow/change-notes/released/0.1.11.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ shared/dataflow/change-notes/released/0.2.2.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.11.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ shared/rangeanalysis/change-notes/released/0.0.10.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.11.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.11.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ shared/threat-models/change-notes/released/0.0.10.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ shared/tutorial/change-notes/released/0.2.11.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ shared/typetracking/change-notes/released/0.2.11.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.11.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.11.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.11.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 4 ++++ swift/ql/lib/change-notes/released/0.3.11.md | 3 +++ swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.11.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 132 files changed, 297 insertions(+), 66 deletions(-) create mode 100644 cpp/ql/lib/change-notes/released/0.12.8.md create mode 100644 cpp/ql/src/change-notes/released/0.9.7.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.11.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.11.md create mode 100644 csharp/ql/lib/change-notes/released/0.8.11.md create mode 100644 csharp/ql/src/change-notes/released/0.8.11.md create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.10.md create mode 100644 go/ql/lib/change-notes/released/0.7.11.md create mode 100644 go/ql/src/change-notes/released/0.7.11.md create mode 100644 java/ql/automodel/src/change-notes/released/0.0.18.md create mode 100644 java/ql/lib/change-notes/released/0.8.11.md create mode 100644 java/ql/src/change-notes/released/0.8.11.md create mode 100644 javascript/ql/lib/change-notes/released/0.8.11.md create mode 100644 javascript/ql/src/change-notes/released/0.8.11.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.11.md create mode 100644 python/ql/lib/change-notes/released/0.11.11.md create mode 100644 python/ql/src/change-notes/released/0.9.11.md create mode 100644 ruby/ql/lib/change-notes/released/0.8.11.md create mode 100644 ruby/ql/src/change-notes/released/0.8.11.md create mode 100644 shared/controlflow/change-notes/released/0.1.11.md create mode 100644 shared/dataflow/change-notes/released/0.2.2.md create mode 100644 shared/mad/change-notes/released/0.2.11.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.10.md create mode 100644 shared/regex/change-notes/released/0.2.11.md create mode 100644 shared/ssa/change-notes/released/0.2.11.md create mode 100644 shared/threat-models/change-notes/released/0.0.10.md create mode 100644 shared/tutorial/change-notes/released/0.2.11.md create mode 100644 shared/typetracking/change-notes/released/0.2.11.md create mode 100644 shared/typos/change-notes/released/0.2.11.md create mode 100644 shared/util/change-notes/released/0.2.11.md create mode 100644 shared/yaml/change-notes/released/0.2.11.md create mode 100644 swift/ql/lib/change-notes/released/0.3.11.md create mode 100644 swift/ql/src/change-notes/released/0.3.11.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index e1c0dfbecd9a..3e345c8b327e 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.12.8 + +No user-facing changes. + ## 0.12.7 ### Minor Analysis Improvements diff --git a/cpp/ql/lib/change-notes/released/0.12.8.md b/cpp/ql/lib/change-notes/released/0.12.8.md new file mode 100644 index 000000000000..17f7d3963e24 --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.12.8.md @@ -0,0 +1,3 @@ +## 0.12.8 + +No user-facing changes. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 20419e9c6100..74f4c1a8fa04 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.7 +lastReleaseVersion: 0.12.8 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8b17a050d82a..483b049138c1 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.8-dev +version: 0.12.8 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index f6acd424bb05..69c80b835f3b 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.7 + +No user-facing changes. + ## 0.9.6 ### Minor Analysis Improvements diff --git a/cpp/ql/src/change-notes/released/0.9.7.md b/cpp/ql/src/change-notes/released/0.9.7.md new file mode 100644 index 000000000000..8583b9747e81 --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.9.7.md @@ -0,0 +1,3 @@ +## 0.9.7 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 19139c132b2d..0921a4382544 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.6 +lastReleaseVersion: 0.9.7 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 49eb255cc8f7..87141610f67e 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.7-dev +version: 0.9.7 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 82eacfc84f70..97f22b425341 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.11 + +No user-facing changes. + ## 1.7.10 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.11.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.11.md new file mode 100644 index 000000000000..c2790d68a54d --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.11.md @@ -0,0 +1,3 @@ +## 1.7.11 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 31c7fe07020b..6e5b0b6e2f2b 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.10 +lastReleaseVersion: 1.7.11 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 3e8792bce0ec..d0b814fe5eb8 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.11-dev +version: 1.7.11 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 82eacfc84f70..97f22b425341 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.11 + +No user-facing changes. + ## 1.7.10 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.11.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.11.md new file mode 100644 index 000000000000..c2790d68a54d --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.11.md @@ -0,0 +1,3 @@ +## 1.7.11 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 31c7fe07020b..6e5b0b6e2f2b 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.10 +lastReleaseVersion: 1.7.11 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index c67ab9130a0e..864328b2a5be 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.11-dev +version: 1.7.11 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 16cc14259e19..0444d4eb2bf0 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 ### Major Analysis Improvements diff --git a/csharp/ql/lib/change-notes/released/0.8.11.md b/csharp/ql/lib/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index a67b40f744f1..d202160b8fc7 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.11-dev +version: 0.8.11 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index 46c939e5cee1..e5aaaa31e820 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 ### Minor Analysis Improvements diff --git a/csharp/ql/src/change-notes/released/0.8.11.md b/csharp/ql/src/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index a2148a361570..601609991c93 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.11-dev +version: 0.8.11 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index a59e560c4155..1857b399fe88 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.10 + +No user-facing changes. + ## 0.0.9 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.10.md b/go/ql/consistency-queries/change-notes/released/0.0.10.md new file mode 100644 index 000000000000..22391080fd45 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.10.md @@ -0,0 +1,3 @@ +## 0.0.10 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index ecdd64fbab86..b740014e5aed 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.10 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index e82c98f52cb3..32b42f72d6d4 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.10-dev +version: 0.0.10 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index fee5fd37a267..144be2473c07 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.11 + +No user-facing changes. + ## 0.7.10 ### Major Analysis Improvements diff --git a/go/ql/lib/change-notes/released/0.7.11.md b/go/ql/lib/change-notes/released/0.7.11.md new file mode 100644 index 000000000000..c4d7e2d37751 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.7.11.md @@ -0,0 +1,3 @@ +## 0.7.11 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 675185672974..2610ac0272d1 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.11 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 54b284e7ee58..a0ec22b27afe 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.11-dev +version: 0.7.11 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 24e38b9890e1..0682cd4f0bc5 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.11 + +No user-facing changes. + ## 0.7.10 No user-facing changes. diff --git a/go/ql/src/change-notes/released/0.7.11.md b/go/ql/src/change-notes/released/0.7.11.md new file mode 100644 index 000000000000..c4d7e2d37751 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.11.md @@ -0,0 +1,3 @@ +## 0.7.11 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 675185672974..2610ac0272d1 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.11 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index c89aacb8aa22..c8852c0e76d5 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.11-dev +version: 0.7.11 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index c3282c773a9d..f252098a34f8 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.18 + +No user-facing changes. + ## 0.0.17 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.18.md b/java/ql/automodel/src/change-notes/released/0.0.18.md new file mode 100644 index 000000000000..86c60b8abe73 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.18.md @@ -0,0 +1,3 @@ +## 0.0.18 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index cbc3d3cd4934..a0d2bc59d979 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.17 +lastReleaseVersion: 0.0.18 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 8064163f5ccc..1474661900b7 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.18-dev +version: 0.0.18 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 2a02ccee6abb..e251800c763a 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/released/0.8.11.md b/java/ql/lib/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/java/ql/lib/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index ed83a620d20a..96df63ac9cf3 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.11-dev +version: 0.8.11 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index c61275f5ed84..92ca11112bcb 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 ### New Queries diff --git a/java/ql/src/change-notes/released/0.8.11.md b/java/ql/src/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/java/ql/src/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index d7612d9da676..fcd7096e6ba9 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.11-dev +version: 0.8.11 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index d5edcc005131..ae256e58d6db 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/0.8.11.md b/javascript/ql/lib/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 30fa7de41986..51c8eb875b04 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.11-dev +version: 0.8.11 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index b9627cac5eee..6d837e84747b 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/0.8.11.md b/javascript/ql/src/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 01a3e8a0841d..9ef42d7ca971 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.11-dev +version: 0.8.11 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 1c4455b66c43..db0ccde436ea 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.11 + +No user-facing changes. + ## 0.7.10 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.11.md b/misc/suite-helpers/change-notes/released/0.7.11.md new file mode 100644 index 000000000000..c4d7e2d37751 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.11.md @@ -0,0 +1,3 @@ +## 0.7.11 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 675185672974..2610ac0272d1 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.10 +lastReleaseVersion: 0.7.11 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5d8225b2e0b6..0991ba884158 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.11-dev +version: 0.7.11 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index f095607ca1bf..50a541a2ca2d 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.11 + +No user-facing changes. + ## 0.11.10 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/released/0.11.11.md b/python/ql/lib/change-notes/released/0.11.11.md new file mode 100644 index 000000000000..d4837264b86b --- /dev/null +++ b/python/ql/lib/change-notes/released/0.11.11.md @@ -0,0 +1,3 @@ +## 0.11.11 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index ddddcbe9193d..14dd5ba832df 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.10 +lastReleaseVersion: 0.11.11 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index daab6a412065..2c8625b915b8 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.11-dev +version: 0.11.11 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index d4245aba7a62..ff258db317ac 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.11 + +No user-facing changes. + ## 0.9.10 ### New Queries diff --git a/python/ql/src/change-notes/released/0.9.11.md b/python/ql/src/change-notes/released/0.9.11.md new file mode 100644 index 000000000000..5f0f5649db62 --- /dev/null +++ b/python/ql/src/change-notes/released/0.9.11.md @@ -0,0 +1,3 @@ +## 0.9.11 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index d086ed69541d..47eb8b55bab8 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.10 +lastReleaseVersion: 0.9.11 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 5b641a329cb2..d3cfcb60986c 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.11-dev +version: 0.9.11 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index c61a12e0f4ad..1e0b5dda19a2 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 ### Minor Analysis Improvements diff --git a/ruby/ql/lib/change-notes/released/0.8.11.md b/ruby/ql/lib/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 81695d545ec2..018d918d6c0c 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.11-dev +version: 0.8.11 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index f875b6d16ad4..63f443e0940e 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.11 + +No user-facing changes. + ## 0.8.10 ### Minor Analysis Improvements diff --git a/ruby/ql/src/change-notes/released/0.8.11.md b/ruby/ql/src/change-notes/released/0.8.11.md new file mode 100644 index 000000000000..6f504c5c2076 --- /dev/null +++ b/ruby/ql/src/change-notes/released/0.8.11.md @@ -0,0 +1,3 @@ +## 0.8.11 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 0521f0f75fad..7b42a9d984ca 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.10 +lastReleaseVersion: 0.8.11 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 65e81bf2ba28..c35460534fa5 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.11-dev +version: 0.8.11 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 75f2ca53f987..2e17ef5b94b8 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.11 + +No user-facing changes. + ## 0.1.10 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.11.md b/shared/controlflow/change-notes/released/0.1.11.md new file mode 100644 index 000000000000..ab62c1ac1b3c --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.11.md @@ -0,0 +1,3 @@ +## 0.1.11 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 30f5ca88be0e..1d1688e8d612 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.10 +lastReleaseVersion: 0.1.11 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 19c95747294b..fdcf8a31fe1e 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.11-dev +version: 0.1.11 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index ef80788bded6..4316eb992b24 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.2 + +No user-facing changes. + ## 0.2.1 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/0.2.2.md b/shared/dataflow/change-notes/released/0.2.2.md new file mode 100644 index 000000000000..98e69fd07723 --- /dev/null +++ b/shared/dataflow/change-notes/released/0.2.2.md @@ -0,0 +1,3 @@ +## 0.2.2 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index df29a726bccc..16a06790aa83 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.1 +lastReleaseVersion: 0.2.2 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 4e896e9ae020..2cf6bf8d514c 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.2-dev +version: 0.2.2 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 4730366775ea..7a88a0fb736f 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.11.md b/shared/mad/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/mad/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index e3d2ccaf7483..0306a9ad612b 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 9943dcb79727..55a88fdbb24e 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.10 + +No user-facing changes. + ## 0.0.9 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.10.md b/shared/rangeanalysis/change-notes/released/0.0.10.md new file mode 100644 index 000000000000..22391080fd45 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.10.md @@ -0,0 +1,3 @@ +## 0.0.10 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index ecdd64fbab86..b740014e5aed 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.10 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 6a528c17637e..319e95f260d7 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.10-dev +version: 0.0.10 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index c05869c153d3..fa6faba38235 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.11.md b/shared/regex/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/regex/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 8717c5b8a730..9c8e8df3c77a 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index a9161ff578b0..0eebd3bf43d3 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.11.md b/shared/ssa/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 656662e9061e..1873962984dc 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index a59e560c4155..1857b399fe88 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.10 + +No user-facing changes. + ## 0.0.9 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.10.md b/shared/threat-models/change-notes/released/0.0.10.md new file mode 100644 index 000000000000..22391080fd45 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.10.md @@ -0,0 +1,3 @@ +## 0.0.10 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index ecdd64fbab86..b740014e5aed 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.9 +lastReleaseVersion: 0.0.10 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index ece8f74f701c..8faa7db3528b 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.10-dev +version: 0.0.10 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 560ad058d5b3..12452c35536d 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.11.md b/shared/tutorial/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index b1f2b729a851..579363af41df 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 350f9ecbeae0..557f6b217b82 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.11.md b/shared/typetracking/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index efca17020697..77c88045e8ce 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 54b1eaa4d589..4dd505b626f2 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.11.md b/shared/typos/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/typos/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 76434dcb21cd..a59e78ba2102 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 1ca1f71bcbc2..9803704f4700 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.11.md b/shared/util/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/util/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index f4d51c896ce6..51d3f8cb5e44 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 9fd5ebc26ab2..1beadaccd694 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.11 + +No user-facing changes. + ## 0.2.10 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.11.md b/shared/yaml/change-notes/released/0.2.11.md new file mode 100644 index 000000000000..1037f9194f83 --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.11.md @@ -0,0 +1,3 @@ +## 0.2.11 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index a71167814cb7..2ee635b99371 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.10 +lastReleaseVersion: 0.2.11 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 41f2bc851fd8..d00796a1abde 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.11-dev +version: 0.2.11 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 8f14bfcedc9c..309087eeb32f 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.11 + +No user-facing changes. + ## 0.3.10 ### Bug Fixes diff --git a/swift/ql/lib/change-notes/released/0.3.11.md b/swift/ql/lib/change-notes/released/0.3.11.md new file mode 100644 index 000000000000..10d35144a4a1 --- /dev/null +++ b/swift/ql/lib/change-notes/released/0.3.11.md @@ -0,0 +1,3 @@ +## 0.3.11 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 76ca0ac8ba76..2b6348cc81c1 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.10 +lastReleaseVersion: 0.3.11 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 673004b5172b..e9f1faf0fa6a 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.11-dev +version: 0.3.11 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index bda9834c9bca..33f843bec1cf 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.11 + +No user-facing changes. + ## 0.3.10 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/0.3.11.md b/swift/ql/src/change-notes/released/0.3.11.md new file mode 100644 index 000000000000..10d35144a4a1 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.11.md @@ -0,0 +1,3 @@ +## 0.3.11 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 76ca0ac8ba76..2b6348cc81c1 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.10 +lastReleaseVersion: 0.3.11 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 11192f11d8b8..db7094837ad3 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.11-dev +version: 0.3.11 groups: - swift - queries From 0be329dbdccc742fbd40317c4cf20c612faa37c6 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 10:33:40 +0000 Subject: [PATCH 307/731] C++: Delete duplicated code. --- cpp/ql/test/library-tests/ir/ir/ir.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index eb31d8cc0704..492f8c71c119 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2378,18 +2378,4 @@ namespace return_routine_type { } - -using size_t = decltype(sizeof(0)); - -template<class T> -struct remove_const { typedef T type; }; - -template<class T> -struct remove_const<const T> { typedef T type; }; - -// `remove_const_t<T>` removes any `const` specifier from `T` -template<class T> -using remove_const_t = typename remove_const<T>::type; - - // semmle-extractor-options: -std=c++20 --clang From 7fb05f4a762e2d1d2844096fc90911a376f9ee6e Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Mon, 18 Mar 2024 11:17:55 +0000 Subject: [PATCH 308/731] Fix duplicate "df-" in "df-df-manual" --- java/ql/lib/ext/javax.crypto.model.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/ext/javax.crypto.model.yml b/java/ql/lib/ext/javax.crypto.model.yml index ecd44af5b565..2b3bfc1abe85 100644 --- a/java/ql/lib/ext/javax.crypto.model.yml +++ b/java/ql/lib/ext/javax.crypto.model.yml @@ -24,5 +24,5 @@ extensions: - ["javax.crypto", "Cipher", "update", "", "summary", "df-manual"] - ["javax.crypto", "Cipher", "updateAAD", "", "summary", "df-manual"] - ["javax.crypto", "Cipher", "wrap", "", "summary", "df-manual"] - - ["javax.crypto", "Mac", "init", "(Key)", "summary", "df-df-manual"] - - ["javax.crypto", "Mac", "doFinal", "()", "summary", "df-df-manual"] + - ["javax.crypto", "Mac", "init", "(Key)", "summary", "df-manual"] + - ["javax.crypto", "Mac", "doFinal", "()", "summary", "df-manual"] From 457d71d7bce302ae546a2d3465601f0c92c544c0 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 12:01:44 +0000 Subject: [PATCH 309/731] Update cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com> --- .../Security/CWE/CWE-416/IteratorToExpiredContainer.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql index 4c165d197eb4..ee4c1584e5cb 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql @@ -74,7 +74,7 @@ predicate isSinkImpl(DataFlow::Node sink, FunctionCall fc) { } /** - * Flow from any destroyed object to the qualifier of a `begin` call + * Flow from any destroyed object to the qualifier of a `begin` or `end` call */ module DestroyedToBeginConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source = getADestroyedNode() } From 7b6accd33ab65117ae877cbf425d2c441e6ca15c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 12:01:51 +0000 Subject: [PATCH 310/731] Update cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com> --- .../Security/CWE/CWE-416/IteratorToExpiredContainer.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql index ee4c1584e5cb..cf3a22792fe8 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql @@ -1,6 +1,6 @@ /** * @name Iterator to expired container - * @description Using an iterator owned by a container whose lifetimes has expired may lead to unexpected behavior. + * @description Using an iterator owned by a container whose lifetime has expired may lead to unexpected behavior. * @kind problem * @precision high * @id cpp/iterator-to-expired-container From f9309cec0b015ea25f5e118904934a7af07f4e1e Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 12 Mar 2024 13:29:34 +0100 Subject: [PATCH 311/731] JS: Add tests before #15823 changes --- .../classes/VerifyAssertions.expected | 4 +++ .../ql/test/ApiGraphs/classes/classes.js | 21 +++++++++++++++ .../TypeTracking/TypeTracking.expected | 3 +++ .../TypeTracking/implicit-receiver.js | 27 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 javascript/ql/test/library-tests/TypeTracking/implicit-receiver.js diff --git a/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected b/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected index e69de29bb2d1..03f159832fb6 100644 --- a/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected +++ b/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected @@ -0,0 +1,4 @@ +| classes.js:31:28:31:122 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("MyThirdStream") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | +| classes.js:33:37:33:131 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("MyThirdStream") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | +| classes.js:40:28:40:112 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("bar") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | +| classes.js:45:26:45:110 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("bar") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | diff --git a/javascript/ql/test/ApiGraphs/classes/classes.js b/javascript/ql/test/ApiGraphs/classes/classes.js index f4eb7023262d..29e7d223247b 100644 --- a/javascript/ql/test/ApiGraphs/classes/classes.js +++ b/javascript/ql/test/ApiGraphs/classes/classes.js @@ -25,3 +25,24 @@ MyOtherStream.prototype.instanceProp = 1; /* def=moduleImport("classes").getMemb MyOtherStream.classProp = 1; /* def=moduleImport("classes").getMember("exports").getMember("MyOtherStream").getMember("classProp") */ module.exports.MyOtherStream = MyOtherStream; + + +// function-style class without .prototype reference +function MyThirdStream() { /* use=moduleImport("classes").getMember("exports").getMember("MyThirdStream").getInstance() */ +} +let instance = new MyThirdStream(); /* use=moduleImport("classes").getMember("exports").getMember("MyThirdStream").getInstance() */ + +module.exports.MyThirdStream = MyThirdStream; + + +// function-style class without .prototype reference (through global variable) +(function(f) { + foo.bar = function() { /* use=moduleImport("classes").getMember("exports").getMember("bar").getInstance() */ + } +})(foo = foo || {}); + +(function(f) { + let x = new f.bar(); /* use=moduleImport("classes").getMember("exports").getMember("bar").getInstance() */ +})(foo = foo || {}); + +module.exports.bar = foo.bar; diff --git a/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected b/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected index e69de29bb2d1..4ae2de157b3e 100644 --- a/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected +++ b/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected @@ -0,0 +1,3 @@ +| implicit-receiver.js:8:22:8:52 | // trac ... ver-obj | Failed to track implicit-receiver-obj here. | +| implicit-receiver.js:9:24:9:84 | // trac ... er-prop | Failed to track implicit-receiver-obj here. | +| implicit-receiver.js:9:24:9:84 | // trac ... er-prop | Failed to track implicit-receiver-prop here. | diff --git a/javascript/ql/test/library-tests/TypeTracking/implicit-receiver.js b/javascript/ql/test/library-tests/TypeTracking/implicit-receiver.js new file mode 100644 index 000000000000..447a3eb0e057 --- /dev/null +++ b/javascript/ql/test/library-tests/TypeTracking/implicit-receiver.js @@ -0,0 +1,27 @@ +import 'dummy'; + +let trackedProp = "implicit-receiver-prop"; // name: implicit-receiver-prop + +function factory() { + let obj = unknown(); // name: implicit-receiver-obj + obj.foo = function() { + track(this); // track: implicit-receiver-obj + track(this.x); // track: implicit-receiver-obj track: implicit-receiver-prop + } + return obj; +} +let obj = factory(); +obj.x = trackedProp; + + +function factory2() { + let obj2 = { // name: implicit-receiver-obj2 + foo: function() { + track(this); // track: implicit-receiver-obj2 + track(this.x); // track: implicit-receiver-obj2 track: implicit-receiver-prop + } + } + return obj2; +} +let obj2 = factory2() +obj2.x = trackedProp; From c82f5dad567e2bb5cb10e7ed784bb690fe3b96d6 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 12 Mar 2024 13:36:44 +0100 Subject: [PATCH 312/731] JS: show test changes after #15823 --- .../ql/test/ApiGraphs/classes/VerifyAssertions.expected | 4 ---- .../ql/test/library-tests/TypeTracking/TypeTracking.expected | 4 +--- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected b/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected index 03f159832fb6..e69de29bb2d1 100644 --- a/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected +++ b/javascript/ql/test/ApiGraphs/classes/VerifyAssertions.expected @@ -1,4 +0,0 @@ -| classes.js:31:28:31:122 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("MyThirdStream") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | -| classes.js:33:37:33:131 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("MyThirdStream") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | -| classes.js:40:28:40:112 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("bar") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | -| classes.js:45:26:45:110 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("bar") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). | diff --git a/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected b/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected index 4ae2de157b3e..8b137891791f 100644 --- a/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected +++ b/javascript/ql/test/library-tests/TypeTracking/TypeTracking.expected @@ -1,3 +1 @@ -| implicit-receiver.js:8:22:8:52 | // trac ... ver-obj | Failed to track implicit-receiver-obj here. | -| implicit-receiver.js:9:24:9:84 | // trac ... er-prop | Failed to track implicit-receiver-obj here. | -| implicit-receiver.js:9:24:9:84 | // trac ... er-prop | Failed to track implicit-receiver-prop here. | + From aebe9f69924daa58f95d8bfab60db60284f28a83 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Mon, 18 Mar 2024 12:16:26 +0000 Subject: [PATCH 313/731] Post-release preparation for codeql-cli-2.16.5 --- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 483b049138c1..022cb22884e7 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.8 +version: 0.12.9-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 87141610f67e..cc8476c89d34 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.7 +version: 0.9.8-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index d0b814fe5eb8..31c4092b33fe 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.11 +version: 1.7.12-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 864328b2a5be..dcb2674a19a4 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.11 +version: 1.7.12-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index d202160b8fc7..61dbd30243f9 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.11 +version: 0.8.12-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 601609991c93..da169055d998 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.11 +version: 0.8.12-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 32b42f72d6d4..b6675cca9e13 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.10 +version: 0.0.11-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index a0ec22b27afe..fd6f38cd186f 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.11 +version: 0.7.12-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index c8852c0e76d5..737d9e1b5429 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.11 +version: 0.7.12-dev groups: - go - queries diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 1474661900b7..b9bef7e98a0a 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.18 +version: 0.0.19-dev groups: - java - automodel diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 96df63ac9cf3..83e354a218ff 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.11 +version: 0.8.12-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index fcd7096e6ba9..cf5953276b8a 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.11 +version: 0.8.12-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 51c8eb875b04..6c7d9df15d5c 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.11 +version: 0.8.12-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 9ef42d7ca971..7a62520f88e1 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.11 +version: 0.8.12-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 0991ba884158..b6d9a96049c2 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.11 +version: 0.7.12-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 2c8625b915b8..2b5cb00e405a 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.11 +version: 0.11.12-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index d3cfcb60986c..49eae617df83 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.11 +version: 0.9.12-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 018d918d6c0c..5b1b4a67b004 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.11 +version: 0.8.12-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index c35460534fa5..2ffba7618dd4 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.11 +version: 0.8.12-dev groups: - ruby - queries diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index fdcf8a31fe1e..597af60b98f9 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.11 +version: 0.1.12-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 2cf6bf8d514c..aef3dfc85237 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.2 +version: 0.2.3-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 0306a9ad612b..fb7384339de6 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 319e95f260d7..671da30468e3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.10 +version: 0.0.11-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 9c8e8df3c77a..4170b61806c4 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 1873962984dc..3cb919af4016 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 8faa7db3528b..d7e68330f512 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.10 +version: 0.0.11-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 579363af41df..0e0c8fc0d16b 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 77c88045e8ce..b11e2cee9e49 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index a59e78ba2102..7643692f4827 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 51d3f8cb5e44..d25395642901 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index d00796a1abde..4c6e0680ff2c 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.11 +version: 0.2.12-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index e9f1faf0fa6a..08e0434fbe6f 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.11 +version: 0.3.12-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index db7094837ad3..a4cdbfe7cc16 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.11 +version: 0.3.12-dev groups: - swift - queries From e8e1dc03901193df543c6e1f69353c5cdc995674 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 18 Mar 2024 14:23:40 +0100 Subject: [PATCH 314/731] C#: Add integration test with extraction and compilation messages --- .../all-platforms/standalone/CompilerMessage.expected | 10 ++++++++++ .../all-platforms/standalone/CompilerMessage.ql | 6 ++++++ .../standalone/ExtractortMessages.expected | 8 ++++++++ .../all-platforms/standalone/ExtractortMessages.ql | 6 ++++++ .../all-platforms/standalone/Program.cs | 3 ++- 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected create mode 100644 csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql create mode 100644 csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected create mode 100644 csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql diff --git a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected new file mode 100644 index 000000000000..94606c655478 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected @@ -0,0 +1,10 @@ +| Program.cs:2:9:2:9 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | +| Program.cs:2:15:2:15 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | +| Program.cs:2:21:2:21 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | +| test-db/working/implicitUsings/GlobalUsings.g.cs:3:1:3:28 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | +| test-db/working/implicitUsings/GlobalUsings.g.cs:4:1:4:48 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | +| test-db/working/implicitUsings/GlobalUsings.g.cs:5:1:5:31 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | +| test-db/working/implicitUsings/GlobalUsings.g.cs:6:1:6:33 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | +| test-db/working/implicitUsings/GlobalUsings.g.cs:7:1:7:37 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | +| test-db/working/implicitUsings/GlobalUsings.g.cs:8:1:8:38 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | +| test-db/working/implicitUsings/GlobalUsings.g.cs:9:1:9:44 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql new file mode 100644 index 000000000000..495226cf99a5 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql @@ -0,0 +1,6 @@ +import csharp +import semmle.code.csharp.commons.Diagnostics + +from Diagnostic diagnostic +select diagnostic, + diagnostic.getSeverityText() + " " + diagnostic.getTag() + " " + diagnostic.getFullMessage() diff --git a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected new file mode 100644 index 000000000000..b8a1ea220792 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected @@ -0,0 +1,8 @@ +| Program.cs:2:9:2:11 | Failed to determine type | 5 | M() | +| Program.cs:2:9:2:11 | Unable to resolve target for call. (Compilation error?) | 5 | M() | +| Program.cs:2:9:2:17 | Failed to determine type | 5 | M() + M() | +| Program.cs:2:9:2:23 | Failed to determine type | 5 | M() + M() + M() | +| Program.cs:2:15:2:17 | Failed to determine type | 5 | M() | +| Program.cs:2:15:2:17 | Unable to resolve target for call. (Compilation error?) | 5 | M() | +| Program.cs:2:21:2:23 | Failed to determine type | 5 | M() | +| Program.cs:2:21:2:23 | Unable to resolve target for call. (Compilation error?) | 5 | M() | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql new file mode 100644 index 000000000000..10b9822fc2e6 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql @@ -0,0 +1,6 @@ +import csharp +import semmle.code.csharp.commons.Diagnostics + +query predicate extractorMessages(ExtractorMessage msg, int severity, string elementText) { + msg.getSeverity() = severity and msg.getElementText() = elementText +} diff --git a/csharp/ql/integration-tests/all-platforms/standalone/Program.cs b/csharp/ql/integration-tests/all-platforms/standalone/Program.cs index 47eee48cc791..371ed98c7247 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/Program.cs +++ b/csharp/ql/integration-tests/all-platforms/standalone/Program.cs @@ -1 +1,2 @@ -var dummy = "dummy"; \ No newline at end of file +var dummy = "dummy"; +dummy = M() + M() + M(); \ No newline at end of file From d83500de5d1d6af3b731e3516bd30247310944d4 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Mon, 18 Mar 2024 14:24:07 +0100 Subject: [PATCH 315/731] Address review comments --- .../dataflow/codeql/dataflow/internal/DataFlowImpl.qll | 4 ++++ .../codeql/dataflow/internal/DataFlowImplCommon.qll | 10 ---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 1db7a2581815..86546375798a 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -3932,6 +3932,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> { override predicate isSource() { none() } override string toString() { result = sourceGroup } + + override Location getLocation() { result.hasLocationInfo("", 0, 0, 0, 0) } } private class PathNodeSinkGroup extends PathNodeImpl, TPathNodeSinkGroup { @@ -3948,6 +3950,8 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> { override predicate isSource() { none() } override string toString() { result = sinkGroup } + + override Location getLocation() { result.hasLocationInfo("", 0, 0, 0, 0) } } private predicate pathNode( diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index 1caf76de7bc1..e83752fcced1 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -1650,8 +1650,6 @@ module MakeImplCommon<LocationSig Location, InputSig<Location> Lang> { */ class CastingNode extends NodeFinal { CastingNode() { castingNode(this) } - - string toString() { result = super.toString() } } private predicate readStepWithTypes( @@ -1800,8 +1798,6 @@ module MakeImplCommon<LocationSig Location, InputSig<Location> Lang> { class ParamNode extends NodeFinal { ParamNode() { parameterNode(this, _, _) } - string toString() { result = super.toString() } - /** * Holds if this node is the parameter of callable `c` at the specified * position. @@ -1815,8 +1811,6 @@ module MakeImplCommon<LocationSig Location, InputSig<Location> Lang> { class ArgNode extends NodeFinal { ArgNode() { argumentNode(this, _, _) } - string toString() { result = super.toString() } - /** Holds if this argument occurs at the given position in the given call. */ final predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { argumentNode(this, call, pos) @@ -1830,8 +1824,6 @@ module MakeImplCommon<LocationSig Location, InputSig<Location> Lang> { class ReturnNodeExt extends NodeFinal { ReturnNodeExt() { returnNodeExt(this, _) } - string toString() { result = super.toString() } - /** Gets the kind of this returned value. */ ReturnKindExt getKind() { returnNodeExt(this, result) } } @@ -1842,8 +1834,6 @@ module MakeImplCommon<LocationSig Location, InputSig<Location> Lang> { */ class OutNodeExt extends NodeFinal { OutNodeExt() { outNodeExt(this) } - - string toString() { result = super.toString() } } /** From d749335f54bf5714ead1a2a39376ab1c6c24693e Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 18 Mar 2024 14:24:34 +0100 Subject: [PATCH 316/731] C#: Limit extracted compilation and extraction messages --- .../Entities/Compilations/Compilation.cs | 3 +- .../Compilations/CompilerDiagnostic.cs | 45 +++++++++++++++++++ .../Entities/Compilations/Diagnostic.cs | 21 --------- .../Semmle.Extraction.CSharp/Tuples.cs | 4 +- .../Entities/ExtractionError.cs | 21 --------- .../Entities/ExtractionMessage.cs | 37 +++++++++++++++ .../Semmle.Util/EnvironmentVariables.cs | 12 +++++ .../standalone/CompilerMessage.expected | 6 --- .../standalone/ExtractortMessages.expected | 3 -- .../all-platforms/standalone/test.py | 3 ++ 10 files changed, 100 insertions(+), 55 deletions(-) create mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs delete mode 100644 csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Diagnostic.cs delete mode 100644 csharp/extractor/Semmle.Extraction/Entities/ExtractionError.cs create mode 100644 csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs index a194323c9a61..e9706b3b5795 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs @@ -80,8 +80,7 @@ public override void Populate(TextWriter trapFile) // Diagnostics Context.Compilation .GetDiagnostics() - .Select(d => new Diagnostic(Context, d)) - .ForEach((diag, index) => trapFile.diagnostic_for(diag, this, 0, index)); + .ForEach((diag, index) => new CompilerDiagnostic(Context, diag, this, index)); } public void PopulatePerformance(PerformanceMetrics p) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs new file mode 100644 index 000000000000..8de1442f26ed --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs @@ -0,0 +1,45 @@ +using System.Collections.Concurrent; +using System.IO; +using Semmle.Util; + +namespace Semmle.Extraction.CSharp.Entities +{ + internal class CompilerDiagnostic : FreshEntity + { + private static readonly int limit = EnvironmentVariables.TryGetExtractorOption<int>("COMPILER_DIAGNOSTIC_LIMIT") ?? 1000; + private static readonly ConcurrentDictionary<string, int> messageCounts = new(); + + private readonly Microsoft.CodeAnalysis.Diagnostic diagnostic; + private readonly Compilation compilation; + private readonly int index; + + public CompilerDiagnostic(Context cx, Microsoft.CodeAnalysis.Diagnostic diag, Compilation compilation, int index) : base(cx) + { + diagnostic = diag; + this.compilation = compilation; + this.index = index; + TryPopulate(); + } + + protected override void Populate(TextWriter trapFile) + { + // The below doesn't limit the extractor messages to the exact limit, but it's good enough. + var key = diagnostic.Id; + var messageCount = messageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); + if (messageCount > limit) + { + if (messageCount == limit + 1) + { + Context.Extractor.Logger.LogWarning($"Stopped logging {key} compiler diagnostics after reaching {limit}"); + } + + return; + } + + trapFile.diagnostics(this, (int)diagnostic.Severity, key, diagnostic.Descriptor.Title.ToString(), + diagnostic.GetMessage(), Context.CreateLocation(diagnostic.Location)); + + trapFile.diagnostic_for(this, compilation, 0, index); + } + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Diagnostic.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Diagnostic.cs deleted file mode 100644 index a53ee5797f27..000000000000 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Diagnostic.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.IO; - -namespace Semmle.Extraction.CSharp.Entities -{ - internal class Diagnostic : FreshEntity - { - private readonly Microsoft.CodeAnalysis.Diagnostic diagnostic; - - public Diagnostic(Context cx, Microsoft.CodeAnalysis.Diagnostic diag) : base(cx) - { - diagnostic = diag; - TryPopulate(); - } - - protected override void Populate(TextWriter trapFile) - { - trapFile.diagnostics(this, (int)diagnostic.Severity, diagnostic.Id, diagnostic.Descriptor.Title.ToString(), - diagnostic.GetMessage(), Context.CreateLocation(diagnostic.Location)); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs b/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs index 71ed85cb201c..9d4f913ff9c3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Tuples.cs @@ -122,10 +122,10 @@ internal static void destructor_location(this TextWriter trapFile, Destructor de internal static void destructors(this TextWriter trapFile, Destructor destructor, string name, Type containingType, Destructor original) => trapFile.WriteTuple("destructors", destructor, name, containingType, original); - internal static void diagnostic_for(this TextWriter trapFile, Diagnostic diag, Compilation comp, int fileNo, int index) => + internal static void diagnostic_for(this TextWriter trapFile, CompilerDiagnostic diag, Compilation comp, int fileNo, int index) => trapFile.WriteTuple("diagnostic_for", diag, comp, fileNo, index); - internal static void diagnostics(this TextWriter trapFile, Diagnostic diag, int severity, string errorTag, string errorMessage, string fullErrorMessage, Location location) => + internal static void diagnostics(this TextWriter trapFile, CompilerDiagnostic diag, int severity, string errorTag, string errorMessage, string fullErrorMessage, Location location) => trapFile.WriteTuple("diagnostics", diag, severity, errorTag, errorMessage, fullErrorMessage, location); internal static void dynamic_member_name(this TextWriter trapFile, Expression e, string name) => diff --git a/csharp/extractor/Semmle.Extraction/Entities/ExtractionError.cs b/csharp/extractor/Semmle.Extraction/Entities/ExtractionError.cs deleted file mode 100644 index 99f175377909..000000000000 --- a/csharp/extractor/Semmle.Extraction/Entities/ExtractionError.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.IO; - -namespace Semmle.Extraction.Entities -{ - internal class ExtractionMessage : FreshEntity - { - private readonly Message msg; - - public ExtractionMessage(Context cx, Message msg) : base(cx) - { - this.msg = msg; - TryPopulate(); - } - - protected override void Populate(TextWriter trapFile) - { - trapFile.extractor_messages(this, msg.Severity, "C# extractor", msg.Text, msg.EntityText ?? string.Empty, - msg.Location ?? Context.CreateLocation(), msg.StackTrace ?? string.Empty); - } - } -} diff --git a/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs b/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs new file mode 100644 index 000000000000..35df66a6b0a9 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs @@ -0,0 +1,37 @@ +using System.IO; +using System.Threading; +using Semmle.Util; + +namespace Semmle.Extraction.Entities +{ + internal class ExtractionMessage : FreshEntity + { + private static readonly int limit = EnvironmentVariables.TryGetExtractorOption<int>("MESSAGE_LIMIT") ?? 10000; + private static int messageCount = 0; + + private readonly Message msg; + + public ExtractionMessage(Context cx, Message msg) : base(cx) + { + this.msg = msg; + TryPopulate(); + } + + protected override void Populate(TextWriter trapFile) + { + // The below doesn't limit the extractor messages to the exact limit, but it's good enough. + Interlocked.Increment(ref messageCount); + if (messageCount > limit) + { + if (messageCount == limit + 1) + { + Context.Extractor.Logger.LogWarning($"Stopped logging extractor messages after reaching {limit}"); + } + return; + } + + trapFile.extractor_messages(this, msg.Severity, "C# extractor", msg.Text, msg.EntityText ?? string.Empty, + msg.Location ?? Context.CreateLocation(), msg.StackTrace ?? string.Empty); + } + } +} diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index 9dcccf6d8785..d7bb81440ecd 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -1,4 +1,6 @@ using System; +using System.Globalization; +using System.Numerics; namespace Semmle.Util { @@ -7,6 +9,16 @@ public class EnvironmentVariables public static string? GetExtractorOption(string name) => Environment.GetEnvironmentVariable($"CODEQL_EXTRACTOR_CSHARP_OPTION_{name.ToUpper()}"); + public static T? TryGetExtractorOption<T>(string name) where T : struct, INumberBase<T> + { + var value = GetExtractorOption(name); + if (T.TryParse(value, NumberStyles.Number, CultureInfo.InvariantCulture, out var result)) + { + return result; + } + return null; + } + public static int GetDefaultNumberOfThreads() { if (!int.TryParse(Environment.GetEnvironmentVariable("CODEQL_THREADS"), out var threads) || threads == -1) diff --git a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected index 94606c655478..cd10fe6d1f09 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected @@ -1,10 +1,4 @@ | Program.cs:2:9:2:9 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | | Program.cs:2:15:2:15 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | -| Program.cs:2:21:2:21 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | -| test-db/working/implicitUsings/GlobalUsings.g.cs:3:1:3:28 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | -| test-db/working/implicitUsings/GlobalUsings.g.cs:4:1:4:48 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | -| test-db/working/implicitUsings/GlobalUsings.g.cs:5:1:5:31 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | -| test-db/working/implicitUsings/GlobalUsings.g.cs:6:1:6:33 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | | test-db/working/implicitUsings/GlobalUsings.g.cs:7:1:7:37 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | | test-db/working/implicitUsings/GlobalUsings.g.cs:8:1:8:38 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | -| test-db/working/implicitUsings/GlobalUsings.g.cs:9:1:9:44 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected index b8a1ea220792..02b76fec42a7 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected @@ -1,8 +1,5 @@ | Program.cs:2:9:2:11 | Failed to determine type | 5 | M() | -| Program.cs:2:9:2:11 | Unable to resolve target for call. (Compilation error?) | 5 | M() | | Program.cs:2:9:2:17 | Failed to determine type | 5 | M() + M() | | Program.cs:2:9:2:23 | Failed to determine type | 5 | M() + M() + M() | -| Program.cs:2:15:2:17 | Failed to determine type | 5 | M() | -| Program.cs:2:15:2:17 | Unable to resolve target for call. (Compilation error?) | 5 | M() | | Program.cs:2:21:2:23 | Failed to determine type | 5 | M() | | Program.cs:2:21:2:23 | Unable to resolve target for call. (Compilation error?) | 5 | M() | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/test.py b/csharp/ql/integration-tests/all-platforms/standalone/test.py index a17966e148a9..cd9d65c57410 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/test.py +++ b/csharp/ql/integration-tests/all-platforms/standalone/test.py @@ -1,3 +1,6 @@ +import os from create_database_utils import * +os.environ['CODEQL_EXTRACTOR_CSHARP_OPTION_COMPILER_DIAGNOSTIC_LIMIT'] = '2' +os.environ['CODEQL_EXTRACTOR_CSHARP_OPTION_MESSAGE_LIMIT'] = '5' run_codeql_database_create([], lang="csharp", extra_args=["--build-mode=none"]) From 1af81673543e87b2ce7492d776fd0b0f40d9ded8 Mon Sep 17 00:00:00 2001 From: Sim4n6 <sim4n6@gmail.com> Date: Mon, 18 Mar 2024 13:26:20 +0000 Subject: [PATCH 317/731] updated the .expected file --- .../Security/CWE-770/UnicodeDoS.expected | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected index 415b94973a50..f98487ba7dad 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-770/UnicodeDoS.expected @@ -1,35 +1,35 @@ edges -| tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:1:35:1:41 | ControlFlowNode for request | -| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:12:17:12:23 | ControlFlowNode for request | -| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:24:9:24:15 | ControlFlowNode for request | -| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:36:9:36:15 | ControlFlowNode for request | -| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:48:9:48:15 | ControlFlowNode for request | -| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:60:9:60:15 | ControlFlowNode for request | -| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:72:9:72:15 | ControlFlowNode for request | -| tests.py:12:5:12:13 | ControlFlowNode for file_path | tests.py:16:39:16:47 | ControlFlowNode for file_path | -| tests.py:12:17:12:23 | ControlFlowNode for request | tests.py:12:17:12:28 | ControlFlowNode for Attribute | -| tests.py:12:17:12:28 | ControlFlowNode for Attribute | tests.py:12:17:12:49 | ControlFlowNode for Attribute() | -| tests.py:12:17:12:49 | ControlFlowNode for Attribute() | tests.py:12:5:12:13 | ControlFlowNode for file_path | -| tests.py:24:5:24:5 | ControlFlowNode for r | tests.py:28:43:28:43 | ControlFlowNode for r | -| tests.py:24:9:24:15 | ControlFlowNode for request | tests.py:24:9:24:20 | ControlFlowNode for Attribute | -| tests.py:24:9:24:20 | ControlFlowNode for Attribute | tests.py:24:9:24:33 | ControlFlowNode for Attribute() | -| tests.py:24:9:24:33 | ControlFlowNode for Attribute() | tests.py:24:5:24:5 | ControlFlowNode for r | -| tests.py:36:5:36:5 | ControlFlowNode for r | tests.py:40:43:40:43 | ControlFlowNode for r | -| tests.py:36:9:36:15 | ControlFlowNode for request | tests.py:36:9:36:20 | ControlFlowNode for Attribute | -| tests.py:36:9:36:20 | ControlFlowNode for Attribute | tests.py:36:9:36:33 | ControlFlowNode for Attribute() | -| tests.py:36:9:36:33 | ControlFlowNode for Attribute() | tests.py:36:5:36:5 | ControlFlowNode for r | -| tests.py:48:5:48:5 | ControlFlowNode for r | tests.py:52:43:52:43 | ControlFlowNode for r | -| tests.py:48:9:48:15 | ControlFlowNode for request | tests.py:48:9:48:20 | ControlFlowNode for Attribute | -| tests.py:48:9:48:20 | ControlFlowNode for Attribute | tests.py:48:9:48:33 | ControlFlowNode for Attribute() | -| tests.py:48:9:48:33 | ControlFlowNode for Attribute() | tests.py:48:5:48:5 | ControlFlowNode for r | -| tests.py:60:5:60:5 | ControlFlowNode for r | tests.py:64:43:64:43 | ControlFlowNode for r | -| tests.py:60:9:60:15 | ControlFlowNode for request | tests.py:60:9:60:20 | ControlFlowNode for Attribute | -| tests.py:60:9:60:20 | ControlFlowNode for Attribute | tests.py:60:9:60:33 | ControlFlowNode for Attribute() | -| tests.py:60:9:60:33 | ControlFlowNode for Attribute() | tests.py:60:5:60:5 | ControlFlowNode for r | -| tests.py:72:5:72:5 | ControlFlowNode for r | tests.py:76:43:76:43 | ControlFlowNode for r | -| tests.py:72:9:72:15 | ControlFlowNode for request | tests.py:72:9:72:20 | ControlFlowNode for Attribute | -| tests.py:72:9:72:20 | ControlFlowNode for Attribute | tests.py:72:9:72:33 | ControlFlowNode for Attribute() | -| tests.py:72:9:72:33 | ControlFlowNode for Attribute() | tests.py:72:5:72:5 | ControlFlowNode for r | +| tests.py:1:35:1:41 | ControlFlowNode for ImportMember | tests.py:1:35:1:41 | ControlFlowNode for request | provenance | | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:12:17:12:23 | ControlFlowNode for request | provenance | | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:24:9:24:15 | ControlFlowNode for request | provenance | | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:36:9:36:15 | ControlFlowNode for request | provenance | | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:48:9:48:15 | ControlFlowNode for request | provenance | | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:60:9:60:15 | ControlFlowNode for request | provenance | | +| tests.py:1:35:1:41 | ControlFlowNode for request | tests.py:72:9:72:15 | ControlFlowNode for request | provenance | | +| tests.py:12:5:12:13 | ControlFlowNode for file_path | tests.py:16:39:16:47 | ControlFlowNode for file_path | provenance | | +| tests.py:12:17:12:23 | ControlFlowNode for request | tests.py:12:17:12:28 | ControlFlowNode for Attribute | provenance | | +| tests.py:12:17:12:28 | ControlFlowNode for Attribute | tests.py:12:17:12:49 | ControlFlowNode for Attribute() | provenance | | +| tests.py:12:17:12:49 | ControlFlowNode for Attribute() | tests.py:12:5:12:13 | ControlFlowNode for file_path | provenance | | +| tests.py:24:5:24:5 | ControlFlowNode for r | tests.py:28:43:28:43 | ControlFlowNode for r | provenance | | +| tests.py:24:9:24:15 | ControlFlowNode for request | tests.py:24:9:24:20 | ControlFlowNode for Attribute | provenance | | +| tests.py:24:9:24:20 | ControlFlowNode for Attribute | tests.py:24:9:24:33 | ControlFlowNode for Attribute() | provenance | | +| tests.py:24:9:24:33 | ControlFlowNode for Attribute() | tests.py:24:5:24:5 | ControlFlowNode for r | provenance | | +| tests.py:36:5:36:5 | ControlFlowNode for r | tests.py:40:43:40:43 | ControlFlowNode for r | provenance | | +| tests.py:36:9:36:15 | ControlFlowNode for request | tests.py:36:9:36:20 | ControlFlowNode for Attribute | provenance | | +| tests.py:36:9:36:20 | ControlFlowNode for Attribute | tests.py:36:9:36:33 | ControlFlowNode for Attribute() | provenance | | +| tests.py:36:9:36:33 | ControlFlowNode for Attribute() | tests.py:36:5:36:5 | ControlFlowNode for r | provenance | | +| tests.py:48:5:48:5 | ControlFlowNode for r | tests.py:52:43:52:43 | ControlFlowNode for r | provenance | | +| tests.py:48:9:48:15 | ControlFlowNode for request | tests.py:48:9:48:20 | ControlFlowNode for Attribute | provenance | | +| tests.py:48:9:48:20 | ControlFlowNode for Attribute | tests.py:48:9:48:33 | ControlFlowNode for Attribute() | provenance | | +| tests.py:48:9:48:33 | ControlFlowNode for Attribute() | tests.py:48:5:48:5 | ControlFlowNode for r | provenance | | +| tests.py:60:5:60:5 | ControlFlowNode for r | tests.py:64:43:64:43 | ControlFlowNode for r | provenance | | +| tests.py:60:9:60:15 | ControlFlowNode for request | tests.py:60:9:60:20 | ControlFlowNode for Attribute | provenance | | +| tests.py:60:9:60:20 | ControlFlowNode for Attribute | tests.py:60:9:60:33 | ControlFlowNode for Attribute() | provenance | | +| tests.py:60:9:60:33 | ControlFlowNode for Attribute() | tests.py:60:5:60:5 | ControlFlowNode for r | provenance | | +| tests.py:72:5:72:5 | ControlFlowNode for r | tests.py:76:43:76:43 | ControlFlowNode for r | provenance | | +| tests.py:72:9:72:15 | ControlFlowNode for request | tests.py:72:9:72:20 | ControlFlowNode for Attribute | provenance | | +| tests.py:72:9:72:20 | ControlFlowNode for Attribute | tests.py:72:9:72:33 | ControlFlowNode for Attribute() | provenance | | +| tests.py:72:9:72:33 | ControlFlowNode for Attribute() | tests.py:72:5:72:5 | ControlFlowNode for r | provenance | | nodes | tests.py:1:35:1:41 | ControlFlowNode for ImportMember | semmle.label | ControlFlowNode for ImportMember | | tests.py:1:35:1:41 | ControlFlowNode for request | semmle.label | ControlFlowNode for request | From d7c9bfa08b45841758f428fd11a5ad4e6bc2baac Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 27 Feb 2024 14:47:16 +0100 Subject: [PATCH 318/731] Data flow: Account for hidden `subpath` wrappers --- .../codeql/dataflow/internal/DataFlowImpl.qll | 79 ++++++++++++++++--- 1 file changed, 67 insertions(+), 12 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index e075af108d1c..93b4a344b694 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -4308,8 +4308,7 @@ module MakeImpl<InputSig Lang> { pragma[only_bind_into](apout)) and pathIntoCallable(arg, par, _, _, innercc, sc, _) and paramFlowsThrough(kind, pragma[only_bind_into](sout), innercc, sc, - pragma[only_bind_into](t), pragma[only_bind_into](apout), _) and - not arg.isHidden() + pragma[only_bind_into](t), pragma[only_bind_into](apout), _) } /** @@ -4340,9 +4339,8 @@ module MakeImpl<InputSig Lang> { ) } - private PathNodeImpl localStepToHidden(PathNodeImpl n) { + private PathNodeImpl localStep(PathNodeImpl n) { n.getASuccessorImpl() = result and - result.isHidden() and exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | localFlowBigStep(n1, _, n2, _, _, _, _) or storeEx(n1, _, n2, _, _) or @@ -4350,32 +4348,89 @@ module MakeImpl<InputSig Lang> { ) } + private PathNodeImpl summaryCtxStep(PathNodeImpl n) { + n.getASuccessorImpl() = result and + exists(SummaryCtxSome sc | + pathNode(n, _, _, _, pragma[only_bind_into](sc), _, _, _) and + pathNode(result, _, _, _, pragma[only_bind_into](sc), _, _, _) + ) + } + + private PathNodeImpl localStepToHidden(PathNodeImpl n) { + result = localStep(n) and + result.isHidden() + } + + private PathNodeImpl localStepFromHidden(PathNodeImpl n) { + n = localStep(result) and + result.isHidden() + } + pragma[nomagic] private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getANonHiddenSuccessor() and + succ = pred.getASuccessorImpl() and succNode = succ.getNodeEx() } /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through - * a subpath between `par` and `ret` with the connecting edges `arg -> par` and - * `ret -> out` is summarized as the edge `arg -> out`. + * Holds if `(arg, par, ret, out)` forms a subpath-tuple. + * + * All of the nodes may be hidden. */ - predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out) { + pragma[nomagic] + private predicate subpaths04( + PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out + ) { exists( ParamNodeEx p, NodeEx o, FlowState sout, DataFlowType t, AccessPath apout, PathNodeMid out0 | - pragma[only_bind_into](arg).getANonHiddenSuccessor() = pragma[only_bind_into](out0) and - subpaths03(pragma[only_bind_into](arg), p, localStepToHidden*(ret), o, sout, t, apout) and + pragma[only_bind_into](arg).getASuccessorImpl() = pragma[only_bind_into](out0) and + subpaths03(pragma[only_bind_into](arg), p, ret, o, sout, t, apout) and hasSuccessor(pragma[only_bind_into](arg), par, p) and - not ret.isHidden() and pathNode(out0, o, sout, _, _, t, apout, _) | out = out0 or out = out0.projectToSink() ) } + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple. + * + * `par` and `ret` are not hidden. + */ + pragma[nomagic] + private predicate subpaths05( + PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out + ) { + // direct subpath + subpaths04(arg, localStepFromHidden*(par), localStepToHidden*(ret), out) and + not par.isHidden() and + not ret.isHidden() and + ret = summaryCtxStep*(par) + or + // wrapped subpath using hidden nodes, e.g. flow through a callback inside + // a summarized callable + exists(PathNodeImpl par0, PathNodeImpl ret0 | + subpaths05(localStepToHidden*(par0), par, ret, localStepFromHidden*(ret0)) and + subpaths04(arg, par0, ret0, out) + ) + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through + * a subpath between `par` and `ret` with the connecting edges `arg -> par` and + * `ret -> out` is summarized as the edge `arg -> out`. + * + * None of the nodes are hidden. + */ + pragma[nomagic] + predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out) { + subpaths05(localStepToHidden*(arg), par, ret, localStepFromHidden*(out)) and + not arg.isHidden() and + not out.isHidden() + } + /** * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. */ From e53357d376d8b7fa1a6cc776f73dc383ecd99d1d Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 27 Feb 2024 14:48:15 +0100 Subject: [PATCH 319/731] Update expected test output --- .../external-models/ExternalFlow.expected | 5 +++ .../dataflow/global/DataFlowPath.expected | 45 +++++++++++++++++++ .../global/TaintTrackingPath.expected | 45 +++++++++++++++++++ .../dataflow/summaries/summaries.expected | 15 +++++++ .../dataflow/array-flow/array-flow.expected | 18 ++++++++ .../dataflow/global/Flow.expected | 3 ++ .../dataflow/summaries/Summaries.expected | 12 +++++ 7 files changed, 143 insertions(+) diff --git a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected index c6a600f068a0..42bc2666fc19 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/external-models/ExternalFlow.expected @@ -52,6 +52,8 @@ edges | ExternalFlow.cs:84:17:84:21 | access to local variable objs2 : T[] [element] : Object | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | provenance | | | ExternalFlow.cs:84:25:84:41 | call to method Map<Object,Object> : T[] [element] : Object | ExternalFlow.cs:84:17:84:21 | access to local variable objs2 : T[] [element] : Object | provenance | | | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:25:84:41 | call to method Map<Object,Object> : T[] [element] : Object | provenance | | +| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:35:84:35 | o : Object | provenance | | +| ExternalFlow.cs:84:35:84:35 | o : Object | ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | provenance | | | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | ExternalFlow.cs:85:18:85:25 | access to array element | provenance | | | ExternalFlow.cs:90:17:90:17 | access to local variable s : String | ExternalFlow.cs:91:19:91:19 | access to local variable s : String | provenance | | | ExternalFlow.cs:90:21:90:34 | object creation of type String : String | ExternalFlow.cs:90:17:90:17 | access to local variable s : String | provenance | | @@ -154,6 +156,8 @@ nodes | ExternalFlow.cs:84:17:84:21 | access to local variable objs2 : T[] [element] : Object | semmle.label | access to local variable objs2 : T[] [element] : Object | | ExternalFlow.cs:84:25:84:41 | call to method Map<Object,Object> : T[] [element] : Object | semmle.label | call to method Map<Object,Object> : T[] [element] : Object | | ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | semmle.label | access to local variable objs : null [element] : Object | +| ExternalFlow.cs:84:35:84:35 | o : Object | semmle.label | o : Object | +| ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | semmle.label | access to parameter o : Object | | ExternalFlow.cs:85:18:85:22 | access to local variable objs2 : T[] [element] : Object | semmle.label | access to local variable objs2 : T[] [element] : Object | | ExternalFlow.cs:85:18:85:25 | access to array element | semmle.label | access to array element | | ExternalFlow.cs:90:17:90:17 | access to local variable s : String | semmle.label | access to local variable s : String | @@ -201,6 +205,7 @@ nodes | ExternalFlow.cs:263:30:263:30 | access to parameter a : MyInlineArray [element] : Object | semmle.label | access to parameter a : MyInlineArray [element] : Object | | ExternalFlow.cs:264:18:264:18 | access to local variable b | semmle.label | access to local variable b | subpaths +| ExternalFlow.cs:84:29:84:32 | access to local variable objs : null [element] : Object | ExternalFlow.cs:84:35:84:35 | o : Object | ExternalFlow.cs:84:40:84:40 | access to parameter o : Object | ExternalFlow.cs:84:25:84:41 | call to method Map<Object,Object> : T[] [element] : Object | #select | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | ExternalFlow.cs:10:18:10:33 | call to method StepArgRes | $@ | ExternalFlow.cs:9:27:9:38 | object creation of type Object : Object | object creation of type Object : Object | | ExternalFlow.cs:18:18:18:24 | access to local variable argOut1 | ExternalFlow.cs:15:29:15:40 | object creation of type Object : Object | ExternalFlow.cs:18:18:18:24 | access to local variable argOut1 | $@ | ExternalFlow.cs:15:29:15:40 | object creation of type Object : Object | object creation of type Object : Object | diff --git a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected index 7ebc91938293..67c1d0553b6f 100644 --- a/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected @@ -34,12 +34,18 @@ edges | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:135:15:135:20 | access to local variable sink33 | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:147:15:147:20 | access to local variable sink34 | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:156:15:156:20 | access to local variable sink35 | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | Capture.cs:163:15:163:20 | access to local variable sink36 | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | Capture.cs:162:13:162:18 | access to local variable sink36 : String | provenance | | | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | provenance | | @@ -47,6 +53,7 @@ edges | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | +| Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | Capture.cs:197:15:197:20 | access to local variable sink38 | provenance | | | Capture.cs:196:22:196:32 | call to local function Id : String | Capture.cs:196:13:196:18 | access to local variable sink38 : String | provenance | | @@ -242,14 +249,18 @@ edges | GlobalDataFlow.cs:85:22:85:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First<String> : String | provenance | | | GlobalDataFlow.cs:85:22:85:136 | call to method First<String> : String | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | provenance | | | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | provenance | | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | provenance | | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | provenance | | | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First<String> : String | provenance | | | GlobalDataFlow.cs:87:22:87:136 | call to method First<String> : String | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | provenance | | | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | provenance | | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | provenance | | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc<String,String> : String | provenance | | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | provenance | | @@ -287,7 +298,9 @@ edges | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | provenance | | | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | provenance | | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | provenance | | +| GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | provenance | | | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | provenance | | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | provenance | | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | provenance | | | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | | @@ -332,8 +345,11 @@ edges | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | provenance | | +| GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | provenance | | | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | provenance | | +| GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | provenance | | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | provenance | | +| GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | provenance | | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | provenance | | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy<String> : Lazy<T> [property Value] : String | provenance | | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | GlobalDataFlow.cs:160:20:160:24 | access to local variable sink7 : String | provenance | | @@ -500,15 +516,21 @@ nodes | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | | Capture.cs:124:15:124:20 | access to local variable sink40 | semmle.label | access to local variable sink40 | | Capture.cs:127:25:127:31 | tainted : String | semmle.label | tainted : String | +| Capture.cs:132:22:132:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | | Capture.cs:135:15:135:20 | access to local variable sink33 | semmle.label | access to local variable sink33 | +| Capture.cs:142:26:142:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | semmle.label | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:147:15:147:20 | access to local variable sink34 | semmle.label | access to local variable sink34 | +| Capture.cs:152:22:152:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | semmle.label | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | | Capture.cs:156:15:156:20 | access to local variable sink35 | semmle.label | access to local variable sink35 | +| Capture.cs:160:20:160:26 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | semmle.label | access to local variable sink36 : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | semmle.label | call to local function CaptureThrough4 : String | @@ -519,6 +541,7 @@ nodes | Capture.cs:170:25:170:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:171:15:171:20 | access to local variable sink37 | semmle.label | access to local variable sink37 | | Capture.cs:190:26:190:26 | s : String | semmle.label | s : String | +| Capture.cs:192:27:192:27 | access to parameter s : String | semmle.label | access to parameter s : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | semmle.label | access to local function M : M [captured s] : String | | Capture.cs:193:20:193:22 | call to local function M : String | semmle.label | call to local function M : String | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | semmle.label | access to local variable sink38 : String | @@ -658,6 +681,8 @@ nodes | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:85:118:85:118 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | semmle.label | access to local variable sink15 | | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | semmle.label | access to local variable sink16 : String | | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | semmle.label | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | @@ -665,6 +690,8 @@ nodes | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | semmle.label | access to local variable sink15 : String | +| GlobalDataFlow.cs:87:121:87:121 | y : String | semmle.label | y : String | +| GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | semmle.label | access to parameter y : String | | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | semmle.label | access to local variable sink16 | | GlobalDataFlow.cs:138:40:138:40 | x : String | semmle.label | x : String | | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc<String,String> : String | semmle.label | call to method ApplyFunc<String,String> : String | @@ -709,7 +736,9 @@ nodes | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | semmle.label | sinkParam10 : String | | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | semmle.label | access to parameter sinkParam10 | +| GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | semmle.label | access to parameter sinkParam10 : String | | GlobalDataFlow.cs:215:71:215:71 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | semmle.label | call to method ReturnCheck2<String> : String | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | semmle.label | access to local variable sink24 : String | | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable<T> [element] : String | semmle.label | access to local variable tainted : IQueryable<T> [element] : String | @@ -765,10 +794,13 @@ nodes | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | semmle.label | access to parameter y : String | | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | semmle.label | sinkParam8 : String | | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | semmle.label | access to parameter sinkParam8 | +| GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | semmle.label | access to parameter sinkParam8 : String | | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | semmle.label | sinkParam9 : String | | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | semmle.label | access to parameter sinkParam9 | +| GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | semmle.label | access to parameter sinkParam9 : String | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | semmle.label | sinkParam11 : String | | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | semmle.label | access to parameter sinkParam11 | +| GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | semmle.label | access to parameter sinkParam11 : String | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | semmle.label | "taint source" : String | @@ -903,7 +935,13 @@ nodes | Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s | | Splitting.cs:52:19:52:19 | access to local variable s | semmle.label | access to local variable s | subpaths +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | +| Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:193:20:193:22 | call to local function M : String | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:22 | call to local function M : String | Capture.cs:196:22:196:32 | call to local function Id : String | | Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | | Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | @@ -912,9 +950,16 @@ subpaths | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | GlobalDataFlow.cs:76:30:76:34 | access to local variable sink2 : String | | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | GlobalDataFlow.cs:79:30:79:34 | access to local variable sink3 : String | | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven<String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select<String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc<String,String> : String | | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc<String,String> : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc<String,String> : String | +| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select<String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select<String,String> : IQueryable<T> [element] : String | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select<String,String> : IEnumerable<T> [element] : String | | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc<T,T> : String | | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index a5ceb692695b..de58feb32215 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -34,12 +34,18 @@ edges | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:170:25:170:31 | access to parameter tainted : String | provenance | | | Capture.cs:127:25:127:31 | tainted : String | Capture.cs:196:25:196:31 | access to parameter tainted : String | provenance | | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | Capture.cs:135:15:135:20 | access to local variable sink33 | provenance | | +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | provenance | | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | provenance | | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | provenance | | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | Capture.cs:147:15:147:20 | access to local variable sink34 | provenance | | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | provenance | | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | provenance | | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | Capture.cs:156:15:156:20 | access to local variable sink35 | provenance | | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | provenance | | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | provenance | | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | Capture.cs:163:15:163:20 | access to local variable sink36 | provenance | | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | provenance | | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | provenance | | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | Capture.cs:162:13:162:18 | access to local variable sink36 : String | provenance | | | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | provenance | | @@ -47,6 +53,7 @@ edges | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | provenance | | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | provenance | | | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | provenance | | +| Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | provenance | | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:193:20:193:22 | call to local function M : String | provenance | | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | Capture.cs:197:15:197:20 | access to local variable sink38 | provenance | | | Capture.cs:196:22:196:32 | call to local function Id : String | Capture.cs:196:13:196:18 | access to local variable sink38 : String | provenance | | @@ -244,14 +251,18 @@ edges | GlobalDataFlow.cs:85:22:85:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | GlobalDataFlow.cs:85:22:85:136 | call to method First<String> : String | provenance | | | GlobalDataFlow.cs:85:22:85:136 | call to method First<String> : String | GlobalDataFlow.cs:85:13:85:18 | access to local variable sink15 : String | provenance | | | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | provenance | | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | provenance | | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | provenance | | | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | GlobalDataFlow.cs:87:22:87:136 | call to method First<String> : String | provenance | | | GlobalDataFlow.cs:87:22:87:136 | call to method First<String> : String | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | provenance | | | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | provenance | | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | provenance | | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:89:13:89:18 | access to local variable sink17 : String | GlobalDataFlow.cs:90:15:90:20 | access to local variable sink17 | provenance | | | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate<String,String,String> : String | GlobalDataFlow.cs:89:13:89:18 | access to local variable sink17 : String | provenance | | | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate<String,String,String> : String | provenance | | @@ -306,7 +317,9 @@ edges | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:211:38:211:61 | array creation of type String[] : null [element] : String | provenance | | | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | GlobalDataFlow.cs:211:44:211:61 | { ..., ... } : null [element] : String | provenance | | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | provenance | | +| GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | provenance | | | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | provenance | | +| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | provenance | | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | provenance | | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | GlobalDataFlow.cs:217:15:217:20 | access to local variable sink24 | provenance | | | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | provenance | | @@ -351,8 +364,11 @@ edges | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | provenance | | | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | provenance | | +| GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | provenance | | | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | provenance | | +| GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | provenance | | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | provenance | | +| GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | provenance | | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:157:21:157:25 | call to method Out : String | provenance | | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | GlobalDataFlow.cs:193:22:193:42 | object creation of type Lazy<String> : Lazy<T> [property Value] : String | provenance | | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | GlobalDataFlow.cs:160:20:160:24 | access to local variable sink7 : String | provenance | | @@ -550,15 +566,21 @@ nodes | Capture.cs:123:9:123:33 | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | semmle.label | [post] access to local function CaptureOutMultipleLambdas : CaptureOutMultipleLambdas [captured sink40] : String | | Capture.cs:124:15:124:20 | access to local variable sink40 | semmle.label | access to local variable sink40 | | Capture.cs:127:25:127:31 | tainted : String | semmle.label | tainted : String | +| Capture.cs:132:22:132:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | semmle.label | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | | Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | semmle.label | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | | Capture.cs:135:15:135:20 | access to local variable sink33 | semmle.label | access to local variable sink33 | +| Capture.cs:142:26:142:32 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | +| Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | semmle.label | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | semmle.label | access to local function M : M [captured tainted] : String | | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | semmle.label | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | | Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | semmle.label | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | | Capture.cs:147:15:147:20 | access to local variable sink34 | semmle.label | access to local variable sink34 | +| Capture.cs:152:22:152:28 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | semmle.label | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | | Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | semmle.label | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | | Capture.cs:156:15:156:20 | access to local variable sink35 | semmle.label | access to local variable sink35 | +| Capture.cs:160:20:160:26 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:162:13:162:18 | access to local variable sink36 : String | semmle.label | access to local variable sink36 : String | | Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | semmle.label | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | semmle.label | call to local function CaptureThrough4 : String | @@ -569,6 +591,7 @@ nodes | Capture.cs:170:25:170:31 | access to parameter tainted : String | semmle.label | access to parameter tainted : String | | Capture.cs:171:15:171:20 | access to local variable sink37 | semmle.label | access to local variable sink37 | | Capture.cs:190:26:190:26 | s : String | semmle.label | s : String | +| Capture.cs:192:27:192:27 | access to parameter s : String | semmle.label | access to parameter s : String | | Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | semmle.label | access to local function M : M [captured s] : String | | Capture.cs:193:20:193:22 | call to local function M : String | semmle.label | call to local function M : String | | Capture.cs:196:13:196:18 | access to local variable sink38 : String | semmle.label | access to local variable sink38 : String | @@ -708,6 +731,8 @@ nodes | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:85:57:85:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:85:59:85:64 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:85:118:85:118 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:86:15:86:20 | access to local variable sink15 | semmle.label | access to local variable sink15 | | GlobalDataFlow.cs:87:13:87:18 | access to local variable sink16 : String | semmle.label | access to local variable sink16 : String | | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | semmle.label | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | @@ -715,6 +740,8 @@ nodes | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:87:104:87:113 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:87:106:87:111 | access to local variable sink15 : String | semmle.label | access to local variable sink15 : String | +| GlobalDataFlow.cs:87:121:87:121 | y : String | semmle.label | y : String | +| GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | semmle.label | access to parameter y : String | | GlobalDataFlow.cs:88:15:88:20 | access to local variable sink16 | semmle.label | access to local variable sink16 | | GlobalDataFlow.cs:89:13:89:18 | access to local variable sink17 : String | semmle.label | access to local variable sink17 : String | | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate<String,String,String> : String | semmle.label | call to method Aggregate<String,String,String> : String | @@ -778,7 +805,9 @@ nodes | GlobalDataFlow.cs:211:46:211:59 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | semmle.label | sinkParam10 : String | | GlobalDataFlow.cs:214:58:214:68 | access to parameter sinkParam10 | semmle.label | access to parameter sinkParam10 | +| GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | semmle.label | access to parameter sinkParam10 : String | | GlobalDataFlow.cs:215:71:215:71 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | semmle.label | call to method ReturnCheck2<String> : String | | GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:216:13:216:18 | access to local variable sink24 : String | semmle.label | access to local variable sink24 : String | | GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable<T> [element] : String | semmle.label | access to local variable tainted : IQueryable<T> [element] : String | @@ -834,10 +863,13 @@ nodes | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | semmle.label | access to parameter y : String | | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | semmle.label | sinkParam8 : String | | GlobalDataFlow.cs:317:15:317:24 | access to parameter sinkParam8 | semmle.label | access to parameter sinkParam8 | +| GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | semmle.label | access to parameter sinkParam8 : String | | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | semmle.label | sinkParam9 : String | | GlobalDataFlow.cs:323:15:323:24 | access to parameter sinkParam9 | semmle.label | access to parameter sinkParam9 | +| GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | semmle.label | access to parameter sinkParam9 : String | | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | semmle.label | sinkParam11 : String | | GlobalDataFlow.cs:329:15:329:25 | access to parameter sinkParam11 | semmle.label | access to parameter sinkParam11 | +| GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | semmle.label | access to parameter sinkParam11 : String | | GlobalDataFlow.cs:341:16:341:29 | "taint source" : String | semmle.label | "taint source" : String | | GlobalDataFlow.cs:346:9:346:9 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:346:13:346:26 | "taint source" : String | semmle.label | "taint source" : String | @@ -1006,7 +1038,13 @@ nodes | Splitting.cs:50:19:50:19 | access to local variable s | semmle.label | access to local variable s | | Splitting.cs:52:19:52:19 | access to local variable s | semmle.label | access to local variable s | subpaths +| Capture.cs:134:9:134:23 | access to local function CaptureThrough1 : CaptureThrough1 [captured tainted] : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:132:22:132:28 | access to parameter tainted : String | Capture.cs:134:9:134:23 | [post] access to local function CaptureThrough1 : CaptureThrough1 [captured sink33] : String | +| Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:142:26:142:32 | access to parameter tainted : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | +| Capture.cs:146:9:146:23 | access to local function CaptureThrough2 : CaptureThrough2 [captured tainted] : String | Capture.cs:144:13:144:13 | access to local function M : M [captured tainted] : String | Capture.cs:144:13:144:13 | [post] access to local function M : M [captured sink34] : String | Capture.cs:146:9:146:23 | [post] access to local function CaptureThrough2 : CaptureThrough2 [captured sink34] : String | +| Capture.cs:155:30:155:44 | access to local variable captureThrough3 : Func<String,String> [captured tainted] : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:152:22:152:28 | access to parameter tainted : String | Capture.cs:155:30:155:44 | [post] access to local variable captureThrough3 : (...) => ... [captured sink35] : String | +| Capture.cs:162:22:162:36 | access to local function CaptureThrough4 : CaptureThrough4 [captured tainted] : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:160:20:160:26 | access to parameter tainted : String | Capture.cs:162:22:162:38 | call to local function CaptureThrough4 : String | | Capture.cs:170:25:170:31 | access to parameter tainted : String | Capture.cs:166:37:166:37 | p : String | Capture.cs:168:22:168:22 | access to parameter p : String | Capture.cs:170:9:170:23 | [post] access to local function CaptureThrough5 : CaptureThrough5 [captured sink37] : String | +| Capture.cs:193:20:193:20 | access to local function M : M [captured s] : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:192:27:192:27 | access to parameter s : String | Capture.cs:193:20:193:22 | call to local function M : String | | Capture.cs:196:25:196:31 | access to parameter tainted : String | Capture.cs:190:26:190:26 | s : String | Capture.cs:193:20:193:22 | call to local function M : String | Capture.cs:196:22:196:32 | call to local function Id : String | | Capture.cs:221:21:221:34 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:221:18:221:35 | call to method M3 : (...) => ... [captured s] : String | | Capture.cs:223:31:223:44 | "taint source" : String | Capture.cs:213:22:213:22 | s : String | Capture.cs:215:16:218:9 | (...) => ... : (...) => ... [captured s] : String | Capture.cs:223:28:223:45 | call to method M3 : (...) => ... [captured s] : String | @@ -1015,9 +1053,16 @@ subpaths | GlobalDataFlow.cs:76:19:76:23 | access to local variable sink1 : String | GlobalDataFlow.cs:304:32:304:32 | x : String | GlobalDataFlow.cs:306:9:306:9 | access to parameter y : String | GlobalDataFlow.cs:76:30:76:34 | access to local variable sink2 : String | | GlobalDataFlow.cs:79:19:79:23 | access to local variable sink2 : String | GlobalDataFlow.cs:310:32:310:32 | x : String | GlobalDataFlow.cs:312:9:312:9 | access to parameter y : String | GlobalDataFlow.cs:79:30:79:34 | access to local variable sink3 : String | | GlobalDataFlow.cs:81:23:81:65 | (...) ... : null [element] : String | GlobalDataFlow.cs:553:71:553:71 | e : null [element] : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | GlobalDataFlow.cs:81:22:81:85 | call to method SelectEven<String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select<String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip<String,String,String> : IEnumerable<T> [element] : String | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc<String,String> : String | | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc<String,String> : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc<String,String> : String | +| GlobalDataFlow.cs:215:89:215:89 | access to parameter x : String | GlobalDataFlow.cs:321:32:321:41 | sinkParam9 : String | GlobalDataFlow.cs:324:16:324:25 | access to parameter sinkParam9 : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | +| GlobalDataFlow.cs:216:22:216:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:214:35:214:45 | sinkParam10 : String | GlobalDataFlow.cs:214:79:214:89 | access to parameter sinkParam10 : String | GlobalDataFlow.cs:216:22:216:39 | call to method Select<String,String> : IEnumerable<T> [element] : String | +| GlobalDataFlow.cs:218:22:218:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:215:71:215:71 | x : String | GlobalDataFlow.cs:215:76:215:90 | call to method ReturnCheck2<String> : String | GlobalDataFlow.cs:218:22:218:39 | call to method Select<String,String> : IQueryable<T> [element] : String | +| GlobalDataFlow.cs:220:22:220:28 | access to local variable tainted : IQueryable<T> [element] : String | GlobalDataFlow.cs:327:32:327:42 | sinkParam11 : String | GlobalDataFlow.cs:330:16:330:26 | access to parameter sinkParam11 : String | GlobalDataFlow.cs:220:22:220:49 | call to method Select<String,String> : IEnumerable<T> [element] : String | | GlobalDataFlow.cs:300:37:300:37 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:300:17:300:38 | call to method ApplyFunc<T,T> : String | | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | | GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | diff --git a/python/ql/test/experimental/dataflow/summaries/summaries.expected b/python/ql/test/experimental/dataflow/summaries/summaries.expected index a1f354a654ff..847ec210b3ce 100644 --- a/python/ql/test/experimental/dataflow/summaries/summaries.expected +++ b/python/ql/test/experimental/dataflow/summaries/summaries.expected @@ -4,7 +4,9 @@ edges | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:32:11:32:26 | ControlFlowNode for identity() | provenance | | | summaries.py:36:1:36:14 | ControlFlowNode for tainted_lambda | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | provenance | | | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | summaries.py:36:1:36:14 | ControlFlowNode for tainted_lambda | provenance | | +| summaries.py:36:38:36:38 | ControlFlowNode for x | summaries.py:36:41:36:45 | ControlFlowNode for BinaryExpr | provenance | | | summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | provenance | | +| summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | summaries.py:36:38:36:38 | ControlFlowNode for x | provenance | | | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | provenance | | | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | provenance | | | summaries.py:44:16:44:33 | ControlFlowNode for reversed() | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list | provenance | | @@ -14,13 +16,17 @@ edges | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List | provenance | | | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | summaries.py:44:25:44:32 | ControlFlowNode for List [List element] | provenance | | | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | provenance | | +| summaries.py:48:15:48:15 | ControlFlowNode for x | summaries.py:49:12:49:18 | ControlFlowNode for BinaryExpr | provenance | | | summaries.py:51:1:51:14 | ControlFlowNode for tainted_mapped [List element] | summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | provenance | | | summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | summaries.py:51:1:51:14 | ControlFlowNode for tainted_mapped [List element] | provenance | | +| summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | summaries.py:48:15:48:15 | ControlFlowNode for x | provenance | | | summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | provenance | | | summaries.py:51:39:51:44 | ControlFlowNode for SOURCE | summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | provenance | | | summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | provenance | | +| summaries.py:54:23:54:23 | ControlFlowNode for x | summaries.py:55:12:55:12 | ControlFlowNode for x | provenance | | | summaries.py:57:1:57:23 | ControlFlowNode for tainted_mapped_explicit [List element] | summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | provenance | | | summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | summaries.py:57:1:57:23 | ControlFlowNode for tainted_mapped_explicit [List element] | provenance | | +| summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | summaries.py:54:23:54:23 | ControlFlowNode for x | provenance | | | summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | provenance | | | summaries.py:57:56:57:61 | ControlFlowNode for SOURCE | summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | provenance | | | summaries.py:58:6:58:28 | ControlFlowNode for tainted_mapped_explicit [List element] | summaries.py:58:6:58:31 | ControlFlowNode for Subscript | provenance | | @@ -46,6 +52,8 @@ nodes | summaries.py:33:6:33:12 | ControlFlowNode for tainted | semmle.label | ControlFlowNode for tainted | | summaries.py:36:1:36:14 | ControlFlowNode for tainted_lambda | semmle.label | ControlFlowNode for tainted_lambda | | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | semmle.label | ControlFlowNode for apply_lambda() | +| summaries.py:36:38:36:38 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | +| summaries.py:36:41:36:45 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | | summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | | summaries.py:37:6:37:19 | ControlFlowNode for tainted_lambda | semmle.label | ControlFlowNode for tainted_lambda | | summaries.py:44:1:44:12 | ControlFlowNode for tainted_list | semmle.label | ControlFlowNode for tainted_list | @@ -57,12 +65,16 @@ nodes | summaries.py:44:26:44:31 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | | summaries.py:45:6:45:17 | ControlFlowNode for tainted_list [List element] | semmle.label | ControlFlowNode for tainted_list [List element] | | summaries.py:45:6:45:20 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:48:15:48:15 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | +| summaries.py:49:12:49:18 | ControlFlowNode for BinaryExpr | semmle.label | ControlFlowNode for BinaryExpr | | summaries.py:51:1:51:14 | ControlFlowNode for tainted_mapped [List element] | semmle.label | ControlFlowNode for tainted_mapped [List element] | | summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | semmle.label | ControlFlowNode for list_map() [List element] | | summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] | | summaries.py:51:39:51:44 | ControlFlowNode for SOURCE | semmle.label | ControlFlowNode for SOURCE | | summaries.py:52:6:52:19 | ControlFlowNode for tainted_mapped [List element] | semmle.label | ControlFlowNode for tainted_mapped [List element] | | summaries.py:52:6:52:22 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | +| summaries.py:54:23:54:23 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | +| summaries.py:55:12:55:12 | ControlFlowNode for x | semmle.label | ControlFlowNode for x | | summaries.py:57:1:57:23 | ControlFlowNode for tainted_mapped_explicit [List element] | semmle.label | ControlFlowNode for tainted_mapped_explicit [List element] | | summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | semmle.label | ControlFlowNode for list_map() [List element] | | summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | semmle.label | ControlFlowNode for List [List element] | @@ -87,6 +99,9 @@ nodes | summaries.py:68:6:68:23 | ControlFlowNode for tainted_resultlist [List element] | semmle.label | ControlFlowNode for tainted_resultlist [List element] | | summaries.py:68:6:68:26 | ControlFlowNode for Subscript | semmle.label | ControlFlowNode for Subscript | subpaths +| summaries.py:36:48:36:53 | ControlFlowNode for SOURCE | summaries.py:36:38:36:38 | ControlFlowNode for x | summaries.py:36:41:36:45 | ControlFlowNode for BinaryExpr | summaries.py:36:18:36:54 | ControlFlowNode for apply_lambda() | +| summaries.py:51:38:51:45 | ControlFlowNode for List [List element] | summaries.py:48:15:48:15 | ControlFlowNode for x | summaries.py:49:12:49:18 | ControlFlowNode for BinaryExpr | summaries.py:51:18:51:46 | ControlFlowNode for list_map() [List element] | +| summaries.py:57:55:57:62 | ControlFlowNode for List [List element] | summaries.py:54:23:54:23 | ControlFlowNode for x | summaries.py:55:12:55:12 | ControlFlowNode for x | summaries.py:57:27:57:63 | ControlFlowNode for list_map() [List element] | invalidSpecComponent #select | summaries.py:33:6:33:12 | ControlFlowNode for tainted | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | summaries.py:33:6:33:12 | ControlFlowNode for tainted | $@ | summaries.py:32:20:32:25 | ControlFlowNode for SOURCE | ControlFlowNode for SOURCE | diff --git a/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected b/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected index 94906c18fb54..fb709a9ee570 100644 --- a/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected @@ -298,7 +298,9 @@ edges | array_flow.rb:251:9:251:9 | a [element 2] | array_flow.rb:251:30:251:30 | x | provenance | | | array_flow.rb:251:9:254:7 | call to collect_concat [element] | array_flow.rb:251:5:251:5 | b [element] | provenance | | | array_flow.rb:251:30:251:30 | x | array_flow.rb:252:14:252:14 | x | provenance | | +| array_flow.rb:251:30:251:30 | x | array_flow.rb:253:10:253:10 | x | provenance | | | array_flow.rb:253:9:253:25 | call to [] [element 1] | array_flow.rb:251:9:254:7 | call to collect_concat [element] | provenance | | +| array_flow.rb:253:10:253:10 | x | array_flow.rb:253:9:253:25 | call to [] [element 0] | provenance | | | array_flow.rb:253:13:253:24 | call to source | array_flow.rb:253:9:253:25 | call to [] [element 1] | provenance | | | array_flow.rb:255:10:255:10 | b [element] | array_flow.rb:255:10:255:13 | ...[...] | provenance | | | array_flow.rb:256:5:256:5 | b [element] | array_flow.rb:260:10:260:10 | b [element] | provenance | | @@ -631,6 +633,7 @@ edges | array_flow.rb:507:9:507:9 | a [element 3] | array_flow.rb:507:26:507:26 | x | provenance | | | array_flow.rb:507:9:510:7 | call to filter_map [element] | array_flow.rb:507:5:507:5 | b [element] | provenance | | | array_flow.rb:507:26:507:26 | x | array_flow.rb:508:14:508:14 | x | provenance | | +| array_flow.rb:507:26:507:26 | x | array_flow.rb:509:9:509:9 | x | provenance | | | array_flow.rb:511:10:511:10 | b [element] | array_flow.rb:511:10:511:13 | ...[...] | provenance | | | array_flow.rb:518:5:518:5 | d [element] | array_flow.rb:521:10:521:10 | d [element] | provenance | | | array_flow.rb:518:9:520:7 | call to filter_map [element] | array_flow.rb:518:5:518:5 | d [element] | provenance | | @@ -718,7 +721,9 @@ edges | array_flow.rb:571:9:571:9 | a [element 2] | array_flow.rb:571:24:571:24 | x | provenance | | | array_flow.rb:571:9:574:7 | call to flat_map [element] | array_flow.rb:571:5:571:5 | b [element] | provenance | | | array_flow.rb:571:24:571:24 | x | array_flow.rb:572:14:572:14 | x | provenance | | +| array_flow.rb:571:24:571:24 | x | array_flow.rb:573:10:573:10 | x | provenance | | | array_flow.rb:573:9:573:25 | call to [] [element 1] | array_flow.rb:571:9:574:7 | call to flat_map [element] | provenance | | +| array_flow.rb:573:10:573:10 | x | array_flow.rb:573:9:573:25 | call to [] [element 0] | provenance | | | array_flow.rb:573:13:573:24 | call to source | array_flow.rb:573:9:573:25 | call to [] [element 1] | provenance | | | array_flow.rb:575:10:575:10 | b [element] | array_flow.rb:575:10:575:13 | ...[...] | provenance | | | array_flow.rb:576:5:576:5 | b [element] | array_flow.rb:580:10:580:10 | b [element] | provenance | | @@ -2337,7 +2342,9 @@ edges | array_flow.rb:1677:16:1677:28 | call to source | array_flow.rb:1677:9:1677:29 | call to [] [element 2] | provenance | | | array_flow.rb:1678:5:1678:5 | b [element] | array_flow.rb:1681:10:1681:10 | b [element] | provenance | | | array_flow.rb:1678:9:1678:9 | a [element 2] | array_flow.rb:1678:9:1680:7 | call to map [element] | provenance | | +| array_flow.rb:1678:9:1678:9 | a [element 2] | array_flow.rb:1678:19:1678:19 | x | provenance | | | array_flow.rb:1678:9:1680:7 | call to map [element] | array_flow.rb:1678:5:1678:5 | b [element] | provenance | | +| array_flow.rb:1678:19:1678:19 | x | array_flow.rb:1679:9:1679:9 | x | provenance | | | array_flow.rb:1681:10:1681:10 | b [element] | array_flow.rb:1681:10:1681:13 | ...[...] | provenance | | | array_flow.rb:1685:5:1685:5 | a [element 2] | array_flow.rb:1686:18:1686:18 | a [element 2] | provenance | | | array_flow.rb:1685:5:1685:5 | a [element 3] | array_flow.rb:1686:18:1686:18 | a [element 3] | provenance | | @@ -2674,7 +2681,9 @@ nodes | array_flow.rb:251:9:254:7 | call to collect_concat [element] | semmle.label | call to collect_concat [element] | | array_flow.rb:251:30:251:30 | x | semmle.label | x | | array_flow.rb:252:14:252:14 | x | semmle.label | x | +| array_flow.rb:253:9:253:25 | call to [] [element 0] | semmle.label | call to [] [element 0] | | array_flow.rb:253:9:253:25 | call to [] [element 1] | semmle.label | call to [] [element 1] | +| array_flow.rb:253:10:253:10 | x | semmle.label | x | | array_flow.rb:253:13:253:24 | call to source | semmle.label | call to source | | array_flow.rb:255:10:255:10 | b [element] | semmle.label | b [element] | | array_flow.rb:255:10:255:13 | ...[...] | semmle.label | ...[...] | @@ -3041,6 +3050,7 @@ nodes | array_flow.rb:507:9:510:7 | call to filter_map [element] | semmle.label | call to filter_map [element] | | array_flow.rb:507:26:507:26 | x | semmle.label | x | | array_flow.rb:508:14:508:14 | x | semmle.label | x | +| array_flow.rb:509:9:509:9 | x | semmle.label | x | | array_flow.rb:511:10:511:10 | b [element] | semmle.label | b [element] | | array_flow.rb:511:10:511:13 | ...[...] | semmle.label | ...[...] | | array_flow.rb:518:5:518:5 | d [element] | semmle.label | d [element] | @@ -3132,7 +3142,9 @@ nodes | array_flow.rb:571:9:574:7 | call to flat_map [element] | semmle.label | call to flat_map [element] | | array_flow.rb:571:24:571:24 | x | semmle.label | x | | array_flow.rb:572:14:572:14 | x | semmle.label | x | +| array_flow.rb:573:9:573:25 | call to [] [element 0] | semmle.label | call to [] [element 0] | | array_flow.rb:573:9:573:25 | call to [] [element 1] | semmle.label | call to [] [element 1] | +| array_flow.rb:573:10:573:10 | x | semmle.label | x | | array_flow.rb:573:13:573:24 | call to source | semmle.label | call to source | | array_flow.rb:575:10:575:10 | b [element] | semmle.label | b [element] | | array_flow.rb:575:10:575:13 | ...[...] | semmle.label | ...[...] | @@ -4821,6 +4833,8 @@ nodes | array_flow.rb:1678:5:1678:5 | b [element] | semmle.label | b [element] | | array_flow.rb:1678:9:1678:9 | a [element 2] | semmle.label | a [element 2] | | array_flow.rb:1678:9:1680:7 | call to map [element] | semmle.label | call to map [element] | +| array_flow.rb:1678:19:1678:19 | x | semmle.label | x | +| array_flow.rb:1679:9:1679:9 | x | semmle.label | x | | array_flow.rb:1681:10:1681:10 | b [element] | semmle.label | b [element] | | array_flow.rb:1681:10:1681:13 | ...[...] | semmle.label | ...[...] | | array_flow.rb:1685:5:1685:5 | a [element 2] | semmle.label | a [element 2] | @@ -4836,6 +4850,10 @@ nodes | array_flow.rb:1689:10:1689:10 | z | semmle.label | z | | array_flow.rb:1690:10:1690:10 | w | semmle.label | w | subpaths +| array_flow.rb:251:9:251:9 | a [element 2] | array_flow.rb:251:30:251:30 | x | array_flow.rb:253:9:253:25 | call to [] [element 0] | array_flow.rb:251:9:254:7 | call to collect_concat [element] | +| array_flow.rb:507:9:507:9 | a [element 3] | array_flow.rb:507:26:507:26 | x | array_flow.rb:509:9:509:9 | x | array_flow.rb:507:9:510:7 | call to filter_map [element] | +| array_flow.rb:571:9:571:9 | a [element 2] | array_flow.rb:571:24:571:24 | x | array_flow.rb:573:9:573:25 | call to [] [element 0] | array_flow.rb:571:9:574:7 | call to flat_map [element] | +| array_flow.rb:1678:9:1678:9 | a [element 2] | array_flow.rb:1678:19:1678:19 | x | array_flow.rb:1679:9:1679:9 | x | array_flow.rb:1678:9:1680:7 | call to map [element] | arrayLiteral | array_flow.rb:9:9:9:25 | call to [] | | array_flow.rb:33:9:33:22 | call to [] | diff --git a/ruby/ql/test/library-tests/dataflow/global/Flow.expected b/ruby/ql/test/library-tests/dataflow/global/Flow.expected index 94589e1aafba..22d5fd7d18ba 100644 --- a/ruby/ql/test/library-tests/dataflow/global/Flow.expected +++ b/ruby/ql/test/library-tests/dataflow/global/Flow.expected @@ -100,6 +100,7 @@ edges | captured_variables.rb:206:13:206:21 | call to taint | captured_variables.rb:208:14:208:14 | x | provenance | | | captured_variables.rb:219:9:219:17 | call to taint | captured_variables.rb:226:5:226:7 | fn1 [captured x] | provenance | | | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | captured_variables.rb:227:10:227:10 | y | provenance | | +| captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:223:13:223:13 | x | provenance | | | captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | provenance | | | instance_variables.rb:10:19:10:19 | x | instance_variables.rb:11:18:11:18 | x | provenance | | | instance_variables.rb:11:18:11:18 | x | instance_variables.rb:11:9:11:14 | [post] self [@field] | provenance | | @@ -347,6 +348,7 @@ nodes | captured_variables.rb:206:13:206:21 | call to taint | semmle.label | call to taint | | captured_variables.rb:208:14:208:14 | x | semmle.label | x | | captured_variables.rb:219:9:219:17 | call to taint | semmle.label | call to taint | +| captured_variables.rb:223:13:223:13 | x | semmle.label | x | | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | semmle.label | [post] fn1 [captured y] | | captured_variables.rb:226:5:226:7 | fn1 [captured x] | semmle.label | fn1 [captured x] | | captured_variables.rb:227:10:227:10 | y | semmle.label | y | @@ -470,6 +472,7 @@ subpaths | captured_variables.rb:83:6:83:8 | foo [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | captured_variables.rb:83:6:83:18 | call to get_field | | captured_variables.rb:83:6:83:8 | foo [@field] | instance_variables.rb:13:5:15:7 | self in get_field [@field] | instance_variables.rb:14:9:14:21 | return | captured_variables.rb:83:6:83:18 | call to get_field | | captured_variables.rb:98:13:98:20 | call to taint | captured_variables.rb:93:17:93:17 | x | captured_variables.rb:94:5:96:5 | -> { ... } [captured x] | captured_variables.rb:98:1:98:21 | call to capture_arg [captured x] | +| captured_variables.rb:226:5:226:7 | fn1 [captured x] | captured_variables.rb:223:13:223:13 | x | captured_variables.rb:223:13:223:13 | x | captured_variables.rb:226:5:226:7 | [post] fn1 [captured y] | | instance_variables.rb:28:20:28:24 | field | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:28:9:28:25 | [post] self [@field] | | instance_variables.rb:33:13:33:13 | x | instance_variables.rb:22:20:22:24 | field | instance_variables.rb:23:9:23:14 | [post] self [@field] | instance_variables.rb:33:9:33:14 | call to new [@field] | | instance_variables.rb:36:10:36:23 | call to new [@field] | captured_variables.rb:60:5:62:7 | self in get_field [@field] | captured_variables.rb:61:9:61:21 | return | instance_variables.rb:36:10:36:33 | call to get_field | diff --git a/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected b/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected index 09c9d040e55a..dab6b18e8cfb 100644 --- a/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected +++ b/ruby/ql/test/library-tests/dataflow/summaries/Summaries.expected @@ -65,8 +65,12 @@ edges | summaries.rb:4:24:4:30 | tainted | summaries.rb:4:36:4:36 | x | provenance | | | summaries.rb:4:36:4:36 | x | summaries.rb:5:8:5:8 | x | provenance | | | summaries.rb:4:36:4:36 | x | summaries.rb:5:8:5:8 | x | provenance | | +| summaries.rb:4:36:4:36 | x | summaries.rb:6:3:6:3 | x | provenance | | +| summaries.rb:4:36:4:36 | x | summaries.rb:6:3:6:3 | x | provenance | | | summaries.rb:11:17:11:17 | x | summaries.rb:12:8:12:8 | x | provenance | | | summaries.rb:11:17:11:17 | x | summaries.rb:12:8:12:8 | x | provenance | | +| summaries.rb:11:17:11:17 | x | summaries.rb:13:3:13:3 | x | provenance | | +| summaries.rb:11:17:11:17 | x | summaries.rb:13:3:13:3 | x | provenance | | | summaries.rb:16:1:16:8 | tainted3 | summaries.rb:18:6:18:13 | tainted3 | provenance | | | summaries.rb:16:1:16:8 | tainted3 | summaries.rb:18:6:18:13 | tainted3 | provenance | | | summaries.rb:16:12:16:43 | call to apply_lambda | summaries.rb:16:1:16:8 | tainted3 | provenance | | @@ -275,12 +279,16 @@ nodes | summaries.rb:4:36:4:36 | x | semmle.label | x | | summaries.rb:5:8:5:8 | x | semmle.label | x | | summaries.rb:5:8:5:8 | x | semmle.label | x | +| summaries.rb:6:3:6:3 | x | semmle.label | x | +| summaries.rb:6:3:6:3 | x | semmle.label | x | | summaries.rb:9:6:9:13 | tainted2 | semmle.label | tainted2 | | summaries.rb:9:6:9:13 | tainted2 | semmle.label | tainted2 | | summaries.rb:11:17:11:17 | x | semmle.label | x | | summaries.rb:11:17:11:17 | x | semmle.label | x | | summaries.rb:12:8:12:8 | x | semmle.label | x | | summaries.rb:12:8:12:8 | x | semmle.label | x | +| summaries.rb:13:3:13:3 | x | semmle.label | x | +| summaries.rb:13:3:13:3 | x | semmle.label | x | | summaries.rb:16:1:16:8 | tainted3 | semmle.label | tainted3 | | summaries.rb:16:1:16:8 | tainted3 | semmle.label | tainted3 | | summaries.rb:16:12:16:43 | call to apply_lambda | semmle.label | call to apply_lambda | @@ -514,6 +522,10 @@ nodes | summaries.rb:166:20:166:36 | call to source | semmle.label | call to source | | summaries.rb:166:20:166:36 | call to source | semmle.label | call to source | subpaths +| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:36:4:36 | x | summaries.rb:6:3:6:3 | x | summaries.rb:4:12:7:3 | call to apply_block | +| summaries.rb:4:24:4:30 | tainted | summaries.rb:4:36:4:36 | x | summaries.rb:6:3:6:3 | x | summaries.rb:4:12:7:3 | call to apply_block | +| summaries.rb:16:36:16:42 | tainted | summaries.rb:11:17:11:17 | x | summaries.rb:13:3:13:3 | x | summaries.rb:16:12:16:43 | call to apply_lambda | +| summaries.rb:16:36:16:42 | tainted | summaries.rb:11:17:11:17 | x | summaries.rb:13:3:13:3 | x | summaries.rb:16:12:16:43 | call to apply_lambda | invalidSpecComponent #select | summaries.rb:2:6:2:12 | tainted | summaries.rb:1:20:1:36 | call to source | summaries.rb:2:6:2:12 | tainted | $@ | summaries.rb:1:20:1:36 | call to source | call to source | From 40089e80881996f0132255818bee7a817ea5e4f8 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 28 Feb 2024 08:58:12 +0100 Subject: [PATCH 320/731] Add change note --- shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md diff --git a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md new file mode 100644 index 000000000000..2d5890aee35c --- /dev/null +++ b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead og going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. From 7a3b8ebb3a9528c9602d1adeb51a2137a73d31b7 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Mon, 18 Mar 2024 14:41:09 +0100 Subject: [PATCH 321/731] Address review comments --- .../2024-02-28-hidden-subpaths.md | 2 +- .../codeql/dataflow/internal/DataFlowImpl.qll | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md index 2d5890aee35c..7e8c8b9d85bd 100644 --- a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md +++ b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead og going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. +* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead og going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 93b4a344b694..49478d35ad42 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -4356,14 +4356,14 @@ module MakeImpl<InputSig Lang> { ) } - private PathNodeImpl localStepToHidden(PathNodeImpl n) { - result = localStep(n) and - result.isHidden() + private predicate localStepToHidden(PathNodeImpl n1, PathNodeImpl n2) { + n2 = localStep(n1) and + n2.isHidden() } - private PathNodeImpl localStepFromHidden(PathNodeImpl n) { - n = localStep(result) and - result.isHidden() + private predicate localStepFromHidden(PathNodeImpl n1, PathNodeImpl n2) { + n2 = localStep(n1) and + n1.isHidden() } pragma[nomagic] @@ -4404,7 +4404,8 @@ module MakeImpl<InputSig Lang> { PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out ) { // direct subpath - subpaths04(arg, localStepFromHidden*(par), localStepToHidden*(ret), out) and + subpaths04(arg, any(PathNodeImpl n | localStepFromHidden*(n, par)), + any(PathNodeImpl n | localStepToHidden*(ret, n)), out) and not par.isHidden() and not ret.isHidden() and ret = summaryCtxStep*(par) @@ -4412,7 +4413,8 @@ module MakeImpl<InputSig Lang> { // wrapped subpath using hidden nodes, e.g. flow through a callback inside // a summarized callable exists(PathNodeImpl par0, PathNodeImpl ret0 | - subpaths05(localStepToHidden*(par0), par, ret, localStepFromHidden*(ret0)) and + subpaths05(any(PathNodeImpl n | localStepToHidden*(par0, n)), par, ret, + any(PathNodeImpl n | localStepFromHidden*(n, ret0))) and subpaths04(arg, par0, ret0, out) ) } @@ -4426,7 +4428,8 @@ module MakeImpl<InputSig Lang> { */ pragma[nomagic] predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out) { - subpaths05(localStepToHidden*(arg), par, ret, localStepFromHidden*(out)) and + subpaths05(any(PathNodeImpl n | localStepToHidden*(arg, n)), par, ret, + any(PathNodeImpl n | localStepFromHidden*(n, out))) and not arg.isHidden() and not out.isHidden() } From 322fb6c507aec483de3bd06bba26f6d9304bf406 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 18 Mar 2024 14:53:49 +0100 Subject: [PATCH 322/731] Change integration test to return stable results --- .../all-platforms/standalone/CompilerMessage.expected | 4 ---- .../all-platforms/standalone/CompilerMessage.ql | 6 ------ .../all-platforms/standalone/Diag.expected | 4 ++++ .../ql/integration-tests/all-platforms/standalone/Diag.ql | 6 ++++++ .../all-platforms/standalone/ExtractortMessages.expected | 5 ----- .../all-platforms/standalone/ExtractortMessages.ql | 6 ------ 6 files changed, 10 insertions(+), 21 deletions(-) delete mode 100644 csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected delete mode 100644 csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql create mode 100644 csharp/ql/integration-tests/all-platforms/standalone/Diag.expected create mode 100644 csharp/ql/integration-tests/all-platforms/standalone/Diag.ql delete mode 100644 csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected delete mode 100644 csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql diff --git a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected deleted file mode 100644 index cd10fe6d1f09..000000000000 --- a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.expected +++ /dev/null @@ -1,4 +0,0 @@ -| Program.cs:2:9:2:9 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | -| Program.cs:2:15:2:15 | CS0103: The name 'M' does not exist in the current context | Error CS0103 The name 'M' does not exist in the current context | -| test-db/working/implicitUsings/GlobalUsings.g.cs:7:1:7:37 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | -| test-db/working/implicitUsings/GlobalUsings.g.cs:8:1:8:38 | CS8019: Unnecessary using directive. | Hidden CS8019 Unnecessary using directive. | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql b/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql deleted file mode 100644 index 495226cf99a5..000000000000 --- a/csharp/ql/integration-tests/all-platforms/standalone/CompilerMessage.ql +++ /dev/null @@ -1,6 +0,0 @@ -import csharp -import semmle.code.csharp.commons.Diagnostics - -from Diagnostic diagnostic -select diagnostic, - diagnostic.getSeverityText() + " " + diagnostic.getTag() + " " + diagnostic.getFullMessage() diff --git a/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected b/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected new file mode 100644 index 000000000000..1fcc47687caf --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected @@ -0,0 +1,4 @@ +extractorMessages +| 5 | +compilerDiagnostics +| 4 | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql b/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql new file mode 100644 index 000000000000..bbd142d3af3e --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql @@ -0,0 +1,6 @@ +import csharp +import semmle.code.csharp.commons.Diagnostics + +query predicate extractorMessages(int c) { c = count(ExtractorMessage msg) } + +query predicate compilerDiagnostics(int c) { c = count(Diagnostic diag) } diff --git a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected deleted file mode 100644 index 02b76fec42a7..000000000000 --- a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.expected +++ /dev/null @@ -1,5 +0,0 @@ -| Program.cs:2:9:2:11 | Failed to determine type | 5 | M() | -| Program.cs:2:9:2:17 | Failed to determine type | 5 | M() + M() | -| Program.cs:2:9:2:23 | Failed to determine type | 5 | M() + M() + M() | -| Program.cs:2:21:2:23 | Failed to determine type | 5 | M() | -| Program.cs:2:21:2:23 | Unable to resolve target for call. (Compilation error?) | 5 | M() | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql b/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql deleted file mode 100644 index 10b9822fc2e6..000000000000 --- a/csharp/ql/integration-tests/all-platforms/standalone/ExtractortMessages.ql +++ /dev/null @@ -1,6 +0,0 @@ -import csharp -import semmle.code.csharp.commons.Diagnostics - -query predicate extractorMessages(ExtractorMessage msg, int severity, string elementText) { - msg.getSeverity() = severity and msg.getElementText() = elementText -} From 0cecbf52399e824ee12b8aedc817bdc8accc5600 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Mon, 18 Mar 2024 15:36:01 +0100 Subject: [PATCH 323/731] Update 2024-02-28-hidden-subpaths.md Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com> --- shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md index 7e8c8b9d85bd..05a48eb80508 100644 --- a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md +++ b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead og going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. +* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead of going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. From 80ae017aa1767bc84d1a5ae2282fb546437ff530 Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Tue, 10 Oct 2023 15:21:15 +0100 Subject: [PATCH 324/731] Ruby: Track flow into ActiveRecord scopes --- .../dataflow/internal/DataFlowDispatch.qll | 15 ++++++++++- .../codeql/ruby/frameworks/ActiveRecord.qll | 27 +++++++++++++++++++ .../security/cwe-089/ActiveRecordInjection.rb | 11 ++++++++ .../security/cwe-089/SqlInjection.expected | 8 ++++++ 4 files changed, 60 insertions(+), 1 deletion(-) diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll index e7898a1ec4fc..4ac9031f05cb 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll @@ -429,7 +429,20 @@ private Callable viableSourceCallableInit(RelevantCall call) { result = getIniti /** Holds if `call` may resolve to the returned source-code method. */ private DataFlowCallable viableSourceCallable(DataFlowCall call) { result = viableSourceCallableNonInit(call) or - result.asCfgScope() = viableSourceCallableInit(call.asCall()) + result.asCfgScope() = viableSourceCallableInit(call.asCall()) or + result = any(AdditionalCallTarget t).viableTarget(call.asCall()) +} + +/** + * A unit class for adding additional call steps. + * + * Extend this class to add additional call steps to the data flow graph. + */ +class AdditionalCallTarget extends Unit { + /** + * Gets a viable target for `call`. + */ + abstract DataFlowCallable viableTarget(CfgNodes::ExprNodes::CallCfgNode call); } /** Holds if `call` may resolve to the returned summarized library method. */ diff --git a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll index 7573e099c199..0f30f2146df1 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/ActiveRecord.qll @@ -765,3 +765,30 @@ private class ActiveRecordCollectionProxyModelInstantiation extends ActiveRecord result = this.(ActiveRecordCollectionProxyMethodCall).getAssociation().getTargetClass() } } + +/** + * An additional call step for calls to ActiveRecord scopes. For example, in the following code: + * + * ```rb + * class User < ActiveRecord::Base + * scope :with_role, ->(role) { where(role: role) } + * end + * + * User.with_role(r) + * ``` + * + * the call to `with_role` targets the lambda, and argument `r` flows to the parameter `role`. + */ +class ActiveRecordScopeCallTarget extends AdditionalCallTarget { + override DataFlowCallable viableTarget(ExprNodes::CallCfgNode scopeCall) { + exists(DataFlow::ModuleNode model, string scopeName | + model = activeRecordBaseClass().getADescendentModule() and + exists(DataFlow::CallNode scope | + scope = model.getAModuleLevelCall("scope") and + scope.getArgument(0).getConstantValue().isStringlikeValue(scopeName) and + scope.getArgument(1).asCallable().asCallableAstNode() = result.asCfgScope() + ) and + scopeCall = model.getAnImmediateReference().getAMethodCall(scopeName).asExpr() + ) + } +} diff --git a/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb b/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb index ad074de5e980..f1f8d680b751 100644 --- a/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb +++ b/ruby/ql/test/query-tests/security/cwe-089/ActiveRecordInjection.rb @@ -204,3 +204,14 @@ def show Regression.connection.execute("SELECT * FROM users WHERE id = #{permitted_params[:user_id]}") end end + +class User + scope :with_role, ->(role) { where("role = #{role}") } +end + +class UsersController < ActionController::Base + def index + # BAD: user input passed to scope which uses it without sanitization. + @users = User.with_role(params[:role]) + end +end diff --git a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected index 8b6c5bf4d16f..6593e7606da0 100644 --- a/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected +++ b/ruby/ql/test/query-tests/security/cwe-089/SqlInjection.expected @@ -76,6 +76,9 @@ edges | ActiveRecordInjection.rb:203:77:203:102 | ...[...] | ActiveRecordInjection.rb:203:43:203:104 | "SELECT * FROM users WHERE id ..." | provenance | | | ActiveRecordInjection.rb:204:69:204:84 | call to permitted_params | ActiveRecordInjection.rb:204:69:204:94 | ...[...] | provenance | | | ActiveRecordInjection.rb:204:69:204:94 | ...[...] | ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | provenance | | +| ActiveRecordInjection.rb:209:24:209:27 | role | ActiveRecordInjection.rb:209:38:209:53 | "role = #{...}" | provenance | | +| ActiveRecordInjection.rb:215:29:215:34 | call to params | ActiveRecordInjection.rb:215:29:215:41 | ...[...] | provenance | | +| ActiveRecordInjection.rb:215:29:215:41 | ...[...] | ActiveRecordInjection.rb:209:24:209:27 | role | provenance | | | ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | provenance | | | ArelInjection.rb:4:5:4:8 | name | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | provenance | | | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:4:12:4:29 | ...[...] | provenance | | @@ -201,6 +204,10 @@ nodes | ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | semmle.label | "SELECT * FROM users WHERE id ..." | | ActiveRecordInjection.rb:204:69:204:84 | call to permitted_params | semmle.label | call to permitted_params | | ActiveRecordInjection.rb:204:69:204:94 | ...[...] | semmle.label | ...[...] | +| ActiveRecordInjection.rb:209:24:209:27 | role | semmle.label | role | +| ActiveRecordInjection.rb:209:38:209:53 | "role = #{...}" | semmle.label | "role = #{...}" | +| ActiveRecordInjection.rb:215:29:215:34 | call to params | semmle.label | call to params | +| ActiveRecordInjection.rb:215:29:215:41 | ...[...] | semmle.label | ...[...] | | ArelInjection.rb:4:5:4:8 | name | semmle.label | name | | ArelInjection.rb:4:12:4:17 | call to params | semmle.label | call to params | | ArelInjection.rb:4:12:4:29 | ...[...] | semmle.label | ...[...] | @@ -257,6 +264,7 @@ subpaths | ActiveRecordInjection.rb:194:37:194:41 | query | ActiveRecordInjection.rb:199:5:199:10 | call to params | ActiveRecordInjection.rb:194:37:194:41 | query | This SQL query depends on a $@. | ActiveRecordInjection.rb:199:5:199:10 | call to params | user-provided value | | ActiveRecordInjection.rb:203:43:203:104 | "SELECT * FROM users WHERE id ..." | ActiveRecordInjection.rb:199:5:199:10 | call to params | ActiveRecordInjection.rb:203:43:203:104 | "SELECT * FROM users WHERE id ..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:199:5:199:10 | call to params | user-provided value | | ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | ActiveRecordInjection.rb:199:5:199:10 | call to params | ActiveRecordInjection.rb:204:35:204:96 | "SELECT * FROM users WHERE id ..." | This SQL query depends on a $@. | ActiveRecordInjection.rb:199:5:199:10 | call to params | user-provided value | +| ActiveRecordInjection.rb:209:38:209:53 | "role = #{...}" | ActiveRecordInjection.rb:215:29:215:34 | call to params | ActiveRecordInjection.rb:209:38:209:53 | "role = #{...}" | This SQL query depends on a $@. | ActiveRecordInjection.rb:215:29:215:34 | call to params | user-provided value | | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:6:20:6:61 | "SELECT * FROM users WHERE nam..." | This SQL query depends on a $@. | ArelInjection.rb:4:12:4:17 | call to params | user-provided value | | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | ArelInjection.rb:4:12:4:17 | call to params | ArelInjection.rb:7:39:7:80 | "SELECT * FROM users WHERE nam..." | This SQL query depends on a $@. | ArelInjection.rb:4:12:4:17 | call to params | user-provided value | | PgInjection.rb:14:15:14:18 | qry1 | PgInjection.rb:6:12:6:17 | call to params | PgInjection.rb:14:15:14:18 | qry1 | This SQL query depends on a $@. | PgInjection.rb:6:12:6:17 | call to params | user-provided value | From 4a55b6fbdfcc5c08135c47d945eb43768b8c77f3 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 15:02:33 +0000 Subject: [PATCH 325/731] C++: Make 'cpp/uninitialized-local' a path-problem query. --- .../Memory Management/UninitializedLocal.ql | 5 ++- .../semmle/tests/UninitializedLocal.expected | 42 +++++++++++++------ 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql b/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql index f8bac113eb98..35bee25c9f5f 100644 --- a/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql +++ b/cpp/ql/src/Likely Bugs/Memory Management/UninitializedLocal.ql @@ -2,7 +2,7 @@ * @name Potentially uninitialized local variable * @description Reading from a local variable that has not been assigned to * will typically yield garbage. - * @kind problem + * @kind path-problem * @id cpp/uninitialized-local * @problem.severity warning * @security-severity 7.8 @@ -15,6 +15,7 @@ import cpp import semmle.code.cpp.ir.IR import semmle.code.cpp.ir.dataflow.MustFlow +import PathGraph /** * Auxiliary predicate: Types that don't require initialization @@ -89,4 +90,4 @@ where conf.hasFlowPath(source, sink) and isSinkImpl(sink.getInstruction(), va) and v = va.getTarget() -select va, "The variable $@ may not be initialized at this access.", v, v.getName() +select va, source, sink, "The variable $@ may not be initialized at this access.", v, v.getName() diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected index 7b5233f45b49..d27b2c996b33 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-457/semmle/tests/UninitializedLocal.expected @@ -1,13 +1,29 @@ -| test.cpp:12:6:12:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:11:6:11:8 | foo | foo | -| test.cpp:113:6:113:8 | foo | The variable $@ may not be initialized at this access. | test.cpp:111:6:111:8 | foo | foo | -| test.cpp:219:3:219:3 | x | The variable $@ may not be initialized at this access. | test.cpp:218:7:218:7 | x | x | -| test.cpp:243:13:243:13 | i | The variable $@ may not be initialized at this access. | test.cpp:241:6:241:6 | i | i | -| test.cpp:336:10:336:10 | a | The variable $@ may not be initialized at this access. | test.cpp:333:7:333:7 | a | a | -| test.cpp:369:10:369:10 | a | The variable $@ may not be initialized at this access. | test.cpp:358:7:358:7 | a | a | -| test.cpp:378:9:378:11 | val | The variable $@ may not be initialized at this access. | test.cpp:359:6:359:8 | val | val | -| test.cpp:417:10:417:10 | j | The variable $@ may not be initialized at this access. | test.cpp:414:9:414:9 | j | j | -| test.cpp:436:9:436:9 | j | The variable $@ may not be initialized at this access. | test.cpp:431:9:431:9 | j | j | -| test.cpp:454:2:454:2 | x | The variable $@ may not be initialized at this access. | test.cpp:452:6:452:6 | x | x | -| test.cpp:460:7:460:7 | x | The variable $@ may not be initialized at this access. | test.cpp:458:6:458:6 | x | x | -| test.cpp:467:2:467:2 | x | The variable $@ may not be initialized at this access. | test.cpp:464:6:464:6 | x | x | -| test.cpp:474:7:474:7 | x | The variable $@ may not be initialized at this access. | test.cpp:471:6:471:6 | x | x | +edges +nodes +| test.cpp:11:6:11:8 | definition of foo | semmle.label | definition of foo | +| test.cpp:111:6:111:8 | definition of foo | semmle.label | definition of foo | +| test.cpp:218:7:218:7 | definition of x | semmle.label | definition of x | +| test.cpp:241:6:241:6 | definition of i | semmle.label | definition of i | +| test.cpp:333:7:333:7 | definition of a | semmle.label | definition of a | +| test.cpp:358:7:358:7 | definition of a | semmle.label | definition of a | +| test.cpp:359:6:359:8 | definition of val | semmle.label | definition of val | +| test.cpp:414:9:414:9 | definition of j | semmle.label | definition of j | +| test.cpp:431:9:431:9 | definition of j | semmle.label | definition of j | +| test.cpp:452:6:452:6 | definition of x | semmle.label | definition of x | +| test.cpp:458:6:458:6 | definition of x | semmle.label | definition of x | +| test.cpp:464:6:464:6 | definition of x | semmle.label | definition of x | +| test.cpp:471:6:471:6 | definition of x | semmle.label | definition of x | +#select +| test.cpp:12:6:12:8 | foo | test.cpp:11:6:11:8 | definition of foo | test.cpp:11:6:11:8 | definition of foo | The variable $@ may not be initialized at this access. | test.cpp:11:6:11:8 | foo | foo | +| test.cpp:113:6:113:8 | foo | test.cpp:111:6:111:8 | definition of foo | test.cpp:111:6:111:8 | definition of foo | The variable $@ may not be initialized at this access. | test.cpp:111:6:111:8 | foo | foo | +| test.cpp:219:3:219:3 | x | test.cpp:218:7:218:7 | definition of x | test.cpp:218:7:218:7 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:218:7:218:7 | x | x | +| test.cpp:243:13:243:13 | i | test.cpp:241:6:241:6 | definition of i | test.cpp:241:6:241:6 | definition of i | The variable $@ may not be initialized at this access. | test.cpp:241:6:241:6 | i | i | +| test.cpp:336:10:336:10 | a | test.cpp:333:7:333:7 | definition of a | test.cpp:333:7:333:7 | definition of a | The variable $@ may not be initialized at this access. | test.cpp:333:7:333:7 | a | a | +| test.cpp:369:10:369:10 | a | test.cpp:358:7:358:7 | definition of a | test.cpp:358:7:358:7 | definition of a | The variable $@ may not be initialized at this access. | test.cpp:358:7:358:7 | a | a | +| test.cpp:378:9:378:11 | val | test.cpp:359:6:359:8 | definition of val | test.cpp:359:6:359:8 | definition of val | The variable $@ may not be initialized at this access. | test.cpp:359:6:359:8 | val | val | +| test.cpp:417:10:417:10 | j | test.cpp:414:9:414:9 | definition of j | test.cpp:414:9:414:9 | definition of j | The variable $@ may not be initialized at this access. | test.cpp:414:9:414:9 | j | j | +| test.cpp:436:9:436:9 | j | test.cpp:431:9:431:9 | definition of j | test.cpp:431:9:431:9 | definition of j | The variable $@ may not be initialized at this access. | test.cpp:431:9:431:9 | j | j | +| test.cpp:454:2:454:2 | x | test.cpp:452:6:452:6 | definition of x | test.cpp:452:6:452:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:452:6:452:6 | x | x | +| test.cpp:460:7:460:7 | x | test.cpp:458:6:458:6 | definition of x | test.cpp:458:6:458:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:458:6:458:6 | x | x | +| test.cpp:467:2:467:2 | x | test.cpp:464:6:464:6 | definition of x | test.cpp:464:6:464:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:464:6:464:6 | x | x | +| test.cpp:474:7:474:7 | x | test.cpp:471:6:471:6 | definition of x | test.cpp:471:6:471:6 | definition of x | The variable $@ may not be initialized at this access. | test.cpp:471:6:471:6 | x | x | From bd0969b87b05918dbd2f9883a46daa98bd8cab04 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 15:04:19 +0000 Subject: [PATCH 326/731] C++: Add change note. --- .../2024-03-18-uninitialized-local-path-problem.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md diff --git a/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md b/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md new file mode 100644 index 000000000000..14a8c2e7ce74 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. \ No newline at end of file From 668239f355ea11d21e05fbe272675baca35fb547 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 15:16:10 +0000 Subject: [PATCH 327/731] C++: Convert tabs to spaces. --- .../query-tests/Security/CWE/CWE-416/test.cpp | 1180 ++++++++--------- 1 file changed, 590 insertions(+), 590 deletions(-) diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp index c035fe203a86..3e2d74829758 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp @@ -40,622 +40,622 @@ using decay_t = typename decay_impl<remove_reference_t<T>>::type; namespace std { - template<class T> constexpr T&& forward(remove_reference_t<T>& t) noexcept; - template<class T> constexpr T&& forward(remove_reference_t<T>&& t) noexcept; + template<class T> constexpr T&& forward(remove_reference_t<T>& t) noexcept; + template<class T> constexpr T&& forward(remove_reference_t<T>&& t) noexcept; } // --- iterator --- namespace std { - struct ptrdiff_t; - - template<class I> struct iterator_traits; - - template <class Category, - class value_type, - class difference_type = ptrdiff_t, - class pointer_type = value_type*, - class reference_type = value_type&> - struct iterator { - typedef Category iterator_category; - - iterator(); - iterator(iterator<Category, remove_const_t<value_type> > const &other); // non-const -> const conversion constructor - - iterator &operator++(); - iterator operator++(int); - iterator &operator--(); - iterator operator--(int); - bool operator==(iterator other) const; - bool operator!=(iterator other) const; - reference_type operator*() const; - pointer_type operator->() const; - iterator operator+(int); - iterator operator-(int); - iterator &operator+=(int); - iterator &operator-=(int); - int operator-(iterator); - reference_type operator[](int); - }; - - struct input_iterator_tag {}; - struct forward_iterator_tag : public input_iterator_tag {}; - struct bidirectional_iterator_tag : public forward_iterator_tag {}; - struct random_access_iterator_tag : public bidirectional_iterator_tag {}; - - struct output_iterator_tag {}; - - template<class Container> - class back_insert_iterator { - protected: - Container* container = nullptr; - public: - using iterator_category = output_iterator_tag; - using value_type = void; - using difference_type = ptrdiff_t; - using pointer = void; - using reference = void; - using container_type = Container; - constexpr back_insert_iterator() noexcept = default; - constexpr explicit back_insert_iterator(Container& x); - back_insert_iterator& operator=(const typename Container::value_type& value); - back_insert_iterator& operator=(typename Container::value_type&& value); - back_insert_iterator& operator*(); - back_insert_iterator& operator++(); - back_insert_iterator operator++(int); - }; - - template<class Container> - constexpr back_insert_iterator<Container> back_inserter(Container& x) { - return back_insert_iterator<Container>(x); - } - - template<class Container> - class front_insert_iterator { - protected: - Container* container = nullptr; - public: - using iterator_category = output_iterator_tag; - using value_type = void; - using difference_type = ptrdiff_t; - using pointer = void; - using reference = void; - using container_type = Container; - constexpr front_insert_iterator() noexcept = default; - constexpr explicit front_insert_iterator(Container& x); - constexpr front_insert_iterator& operator=(const typename Container::value_type& value); - constexpr front_insert_iterator& operator=(typename Container::value_type&& value); - constexpr front_insert_iterator& operator*(); - constexpr front_insert_iterator& operator++(); - constexpr front_insert_iterator operator++(int); - }; - template<class Container> - constexpr front_insert_iterator<Container> front_inserter(Container& x) { - return front_insert_iterator<Container>(x); - } + struct ptrdiff_t; + + template<class I> struct iterator_traits; + + template <class Category, + class value_type, + class difference_type = ptrdiff_t, + class pointer_type = value_type*, + class reference_type = value_type&> + struct iterator { + typedef Category iterator_category; + + iterator(); + iterator(iterator<Category, remove_const_t<value_type> > const &other); // non-const -> const conversion constructor + + iterator &operator++(); + iterator operator++(int); + iterator &operator--(); + iterator operator--(int); + bool operator==(iterator other) const; + bool operator!=(iterator other) const; + reference_type operator*() const; + pointer_type operator->() const; + iterator operator+(int); + iterator operator-(int); + iterator &operator+=(int); + iterator &operator-=(int); + int operator-(iterator); + reference_type operator[](int); + }; + + struct input_iterator_tag {}; + struct forward_iterator_tag : public input_iterator_tag {}; + struct bidirectional_iterator_tag : public forward_iterator_tag {}; + struct random_access_iterator_tag : public bidirectional_iterator_tag {}; + + struct output_iterator_tag {}; + + template<class Container> + class back_insert_iterator { + protected: + Container* container = nullptr; + public: + using iterator_category = output_iterator_tag; + using value_type = void; + using difference_type = ptrdiff_t; + using pointer = void; + using reference = void; + using container_type = Container; + constexpr back_insert_iterator() noexcept = default; + constexpr explicit back_insert_iterator(Container& x); + back_insert_iterator& operator=(const typename Container::value_type& value); + back_insert_iterator& operator=(typename Container::value_type&& value); + back_insert_iterator& operator*(); + back_insert_iterator& operator++(); + back_insert_iterator operator++(int); + }; + + template<class Container> + constexpr back_insert_iterator<Container> back_inserter(Container& x) { + return back_insert_iterator<Container>(x); + } + + template<class Container> + class front_insert_iterator { + protected: + Container* container = nullptr; + public: + using iterator_category = output_iterator_tag; + using value_type = void; + using difference_type = ptrdiff_t; + using pointer = void; + using reference = void; + using container_type = Container; + constexpr front_insert_iterator() noexcept = default; + constexpr explicit front_insert_iterator(Container& x); + constexpr front_insert_iterator& operator=(const typename Container::value_type& value); + constexpr front_insert_iterator& operator=(typename Container::value_type&& value); + constexpr front_insert_iterator& operator*(); + constexpr front_insert_iterator& operator++(); + constexpr front_insert_iterator operator++(int); + }; + template<class Container> + constexpr front_insert_iterator<Container> front_inserter(Container& x) { + return front_insert_iterator<Container>(x); + } } // --- string --- namespace std { - template<class charT> struct char_traits; - - typedef size_t streamsize; - - template <class T> class allocator { - public: - allocator() throw(); - typedef size_t size_type; - }; - - template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > - class basic_string { - public: - using value_type = charT; - using reference = value_type&; - using const_reference = const value_type&; - typedef typename Allocator::size_type size_type; - static const size_type npos = -1; - - explicit basic_string(const Allocator& a = Allocator()); - basic_string(const charT* s, const Allocator& a = Allocator()); - template<class InputIterator> basic_string(InputIterator begin, InputIterator end, const Allocator& a = Allocator()); - - const charT* c_str() const; - charT* data() noexcept; - size_t length() const; - - typedef std::iterator<random_access_iterator_tag, charT> iterator; - typedef std::iterator<random_access_iterator_tag, const charT> const_iterator; - - iterator begin(); - iterator end(); - const_iterator begin() const; - const_iterator end() const; - const_iterator cbegin() const; - const_iterator cend() const; - - void push_back(charT c); - - const charT& front() const; - charT& front(); - const charT& back() const; - charT& back(); - - const_reference operator[](size_type pos) const; - reference operator[](size_type pos); - const_reference at(size_type n) const; - reference at(size_type n); - template<class T> basic_string& operator+=(const T& t); - basic_string& operator+=(const charT* s); - basic_string& append(const basic_string& str); - basic_string& append(const charT* s); - basic_string& append(size_type n, charT c); - template<class InputIterator> basic_string& append(InputIterator first, InputIterator last); - basic_string& assign(const basic_string& str); - basic_string& assign(size_type n, charT c); - template<class InputIterator> basic_string& assign(InputIterator first, InputIterator last); - basic_string& insert(size_type pos, const basic_string& str); - basic_string& insert(size_type pos, size_type n, charT c); - basic_string& insert(size_type pos, const charT* s); - iterator insert(const_iterator p, size_type n, charT c); - template<class InputIterator> iterator insert(const_iterator p, InputIterator first, InputIterator last); - basic_string& replace(size_type pos1, size_type n1, const basic_string& str); - basic_string& replace(size_type pos1, size_type n1, size_type n2, charT c); - size_type copy(charT* s, size_type n, size_type pos = 0) const; - void clear() noexcept; - basic_string substr(size_type pos = 0, size_type n = npos) const; - void swap(basic_string& s) noexcept/*(allocator_traits<Allocator>::propagate_on_container_swap::value || allocator_traits<Allocator>::is_always_equal::value)*/; - }; - - template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> operator+(const basic_string<charT, traits, Allocator>& lhs, const basic_string<charT, traits, Allocator>& rhs); - template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> operator+(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs); - - typedef basic_string<char> string; + template<class charT> struct char_traits; + + typedef size_t streamsize; + + template <class T> class allocator { + public: + allocator() throw(); + typedef size_t size_type; + }; + + template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > + class basic_string { + public: + using value_type = charT; + using reference = value_type&; + using const_reference = const value_type&; + typedef typename Allocator::size_type size_type; + static const size_type npos = -1; + + explicit basic_string(const Allocator& a = Allocator()); + basic_string(const charT* s, const Allocator& a = Allocator()); + template<class InputIterator> basic_string(InputIterator begin, InputIterator end, const Allocator& a = Allocator()); + + const charT* c_str() const; + charT* data() noexcept; + size_t length() const; + + typedef std::iterator<random_access_iterator_tag, charT> iterator; + typedef std::iterator<random_access_iterator_tag, const charT> const_iterator; + + iterator begin(); + iterator end(); + const_iterator begin() const; + const_iterator end() const; + const_iterator cbegin() const; + const_iterator cend() const; + + void push_back(charT c); + + const charT& front() const; + charT& front(); + const charT& back() const; + charT& back(); + + const_reference operator[](size_type pos) const; + reference operator[](size_type pos); + const_reference at(size_type n) const; + reference at(size_type n); + template<class T> basic_string& operator+=(const T& t); + basic_string& operator+=(const charT* s); + basic_string& append(const basic_string& str); + basic_string& append(const charT* s); + basic_string& append(size_type n, charT c); + template<class InputIterator> basic_string& append(InputIterator first, InputIterator last); + basic_string& assign(const basic_string& str); + basic_string& assign(size_type n, charT c); + template<class InputIterator> basic_string& assign(InputIterator first, InputIterator last); + basic_string& insert(size_type pos, const basic_string& str); + basic_string& insert(size_type pos, size_type n, charT c); + basic_string& insert(size_type pos, const charT* s); + iterator insert(const_iterator p, size_type n, charT c); + template<class InputIterator> iterator insert(const_iterator p, InputIterator first, InputIterator last); + basic_string& replace(size_type pos1, size_type n1, const basic_string& str); + basic_string& replace(size_type pos1, size_type n1, size_type n2, charT c); + size_type copy(charT* s, size_type n, size_type pos = 0) const; + void clear() noexcept; + basic_string substr(size_type pos = 0, size_type n = npos) const; + void swap(basic_string& s) noexcept/*(allocator_traits<Allocator>::propagate_on_container_swap::value || allocator_traits<Allocator>::is_always_equal::value)*/; + }; + + template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> operator+(const basic_string<charT, traits, Allocator>& lhs, const basic_string<charT, traits, Allocator>& rhs); + template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> operator+(const basic_string<charT, traits, Allocator>& lhs, const charT* rhs); + + typedef basic_string<char> string; } // --- istring / ostream / stringstream --- namespace std { - template <class charT, class traits = char_traits<charT> > - class basic_istream /*: virtual public basic_ios<charT,traits> - not needed for this test */ { - public: - using char_type = charT; - using int_type = int; //typename traits::int_type; - - basic_istream<charT, traits>& operator>>(int& n); - - int_type get(); - basic_istream<charT, traits>& get(char_type& c); - basic_istream<charT, traits>& get(char_type* s, streamsize n); - int_type peek(); - basic_istream<charT, traits>& read (char_type* s, streamsize n); - streamsize readsome(char_type* s, streamsize n); - basic_istream<charT, traits>& putback(char_type c); - basic_istream<charT,traits>& unget(); - - basic_istream<charT,traits>& getline(char_type* s, streamsize n); - basic_istream<charT,traits>& getline(char_type* s, streamsize n, char_type delim); - }; - - template<class charT, class traits> basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>&, charT*); - template<class charT, class traits, class Allocator> basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>& is, basic_string<charT, traits, Allocator>& str); - - template<class charT, class traits, class Allocator> basic_istream<charT,traits>& getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str, charT delim); - template<class charT, class traits, class Allocator> basic_istream<charT,traits>& getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str); - - template <class charT, class traits = char_traits<charT> > - class basic_ostream /*: virtual public basic_ios<charT,traits> - not needed for this test */ { - public: - typedef charT char_type; - - basic_ostream<charT, traits>& operator<<(int n); - - basic_ostream<charT, traits>& put(char_type c); - basic_ostream<charT, traits>& write(const char_type* s, streamsize n); - basic_ostream<charT,traits>& flush(); - }; - - template<class charT, class traits> basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*); - template<class charT, class traits, class Allocator> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const basic_string<charT, traits, Allocator>& str); - - template<class charT, class traits = char_traits<charT>> - class basic_iostream : public basic_istream<charT, traits>, public basic_ostream<charT, traits> { - public: - }; - - template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT>> - class basic_stringstream : public basic_iostream<charT, traits> { - public: - explicit basic_stringstream(/*ios_base::openmode which = ios_base::out|ios_base::in - not needed for this test*/); - explicit basic_stringstream( const basic_string<charT, traits, Allocator>& str/*, ios_base::openmode which = ios_base::out | ios_base::in*/); - basic_stringstream(const basic_stringstream& rhs) = delete; - basic_stringstream(basic_stringstream&& rhs); - basic_stringstream& operator=(const basic_stringstream& rhs) = delete; - basic_stringstream& operator=(basic_stringstream&& rhs); - - void swap(basic_stringstream& rhs); - - basic_string<charT, traits, Allocator> str() const; - void str(const basic_string<charT, traits, Allocator>& str); - }; - - typedef basic_istream<char> istream; - typedef basic_ostream<char> ostream; - extern istream cin; - extern ostream cout; - - using stringstream = basic_stringstream<char>; + template <class charT, class traits = char_traits<charT> > + class basic_istream /*: virtual public basic_ios<charT,traits> - not needed for this test */ { + public: + using char_type = charT; + using int_type = int; //typename traits::int_type; + + basic_istream<charT, traits>& operator>>(int& n); + + int_type get(); + basic_istream<charT, traits>& get(char_type& c); + basic_istream<charT, traits>& get(char_type* s, streamsize n); + int_type peek(); + basic_istream<charT, traits>& read (char_type* s, streamsize n); + streamsize readsome(char_type* s, streamsize n); + basic_istream<charT, traits>& putback(char_type c); + basic_istream<charT,traits>& unget(); + + basic_istream<charT,traits>& getline(char_type* s, streamsize n); + basic_istream<charT,traits>& getline(char_type* s, streamsize n, char_type delim); + }; + + template<class charT, class traits> basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>&, charT*); + template<class charT, class traits, class Allocator> basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>& is, basic_string<charT, traits, Allocator>& str); + + template<class charT, class traits, class Allocator> basic_istream<charT,traits>& getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str, charT delim); + template<class charT, class traits, class Allocator> basic_istream<charT,traits>& getline(basic_istream<charT,traits>& is, basic_string<charT,traits,Allocator>& str); + + template <class charT, class traits = char_traits<charT> > + class basic_ostream /*: virtual public basic_ios<charT,traits> - not needed for this test */ { + public: + typedef charT char_type; + + basic_ostream<charT, traits>& operator<<(int n); + + basic_ostream<charT, traits>& put(char_type c); + basic_ostream<charT, traits>& write(const char_type* s, streamsize n); + basic_ostream<charT,traits>& flush(); + }; + + template<class charT, class traits> basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*); + template<class charT, class traits, class Allocator> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const basic_string<charT, traits, Allocator>& str); + + template<class charT, class traits = char_traits<charT>> + class basic_iostream : public basic_istream<charT, traits>, public basic_ostream<charT, traits> { + public: + }; + + template<class charT, class traits = char_traits<charT>, class Allocator = allocator<charT>> + class basic_stringstream : public basic_iostream<charT, traits> { + public: + explicit basic_stringstream(/*ios_base::openmode which = ios_base::out|ios_base::in - not needed for this test*/); + explicit basic_stringstream( const basic_string<charT, traits, Allocator>& str/*, ios_base::openmode which = ios_base::out | ios_base::in*/); + basic_stringstream(const basic_stringstream& rhs) = delete; + basic_stringstream(basic_stringstream&& rhs); + basic_stringstream& operator=(const basic_stringstream& rhs) = delete; + basic_stringstream& operator=(basic_stringstream&& rhs); + + void swap(basic_stringstream& rhs); + + basic_string<charT, traits, Allocator> str() const; + void str(const basic_string<charT, traits, Allocator>& str); + }; + + typedef basic_istream<char> istream; + typedef basic_ostream<char> ostream; + extern istream cin; + extern ostream cout; + + using stringstream = basic_stringstream<char>; } // --- vector --- namespace std { - template<class T, class Allocator = allocator<T>> - class vector { - public: - using value_type = T; - using reference = value_type&; - using const_reference = const value_type&; - using size_type = unsigned int; - using iterator = std::iterator<random_access_iterator_tag, T>; - using const_iterator = std::iterator<random_access_iterator_tag, const T>; - - vector() noexcept(noexcept(Allocator())); + template<class T, class Allocator = allocator<T>> + class vector { + public: + using value_type = T; + using reference = value_type&; + using const_reference = const value_type&; + using size_type = unsigned int; + using iterator = std::iterator<random_access_iterator_tag, T>; + using const_iterator = std::iterator<random_access_iterator_tag, const T>; + + vector() noexcept(noexcept(Allocator())); vector(const std::vector<T, Allocator>&); - explicit vector(const Allocator&) noexcept; - explicit vector(size_type n, const Allocator& = Allocator()); - vector(size_type n, const T& value, const Allocator& = Allocator()); - template<class InputIterator, class IteratorCategory = typename InputIterator::iterator_category> vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); - // use of `iterator_category` makes sure InputIterator is (probably) an iterator, and not an `int` or - // similar that should match a different overload (SFINAE). - ~vector(); - - vector& operator=(const vector& x); - vector& operator=(vector&& x) noexcept/*(allocator_traits<Allocator>::propagate_on_container_move_assignment::value || allocator_traits<Allocator>::is_always_equal::value)*/; - template<class InputIterator, class IteratorCategory = typename InputIterator::iterator_category> void assign(InputIterator first, InputIterator last); - // use of `iterator_category` makes sure InputIterator is (probably) an iterator, and not an `int` or - // similar that should match a different overload (SFINAE). - void assign(size_type n, const T& u); - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - size_type size() const noexcept; - - reference operator[](size_type n); - const_reference operator[](size_type n) const; - const_reference at(size_type n) const; - reference at(size_type n); - reference front(); - const_reference front() const; - reference back(); - const_reference back() const; - - T* data() noexcept; - const T* data() const noexcept; - - void push_back(const T& x); - void push_back(T&& x); - - iterator insert(const_iterator position, const T& x); - iterator insert(const_iterator position, T&& x); - iterator insert(const_iterator position, size_type n, const T& x); - template<class InputIterator> iterator insert(const_iterator position, InputIterator first, InputIterator last); - - template <class... Args> iterator emplace (const_iterator position, Args&&... args); - template <class... Args> void emplace_back (Args&&... args); - - void swap(vector&) noexcept/*(allocator_traits<Allocator>::propagate_on_container_swap::value || allocator_traits<Allocator>::is_always_equal::value)*/; - - void clear() noexcept; - }; + explicit vector(const Allocator&) noexcept; + explicit vector(size_type n, const Allocator& = Allocator()); + vector(size_type n, const T& value, const Allocator& = Allocator()); + template<class InputIterator, class IteratorCategory = typename InputIterator::iterator_category> vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); + // use of `iterator_category` makes sure InputIterator is (probably) an iterator, and not an `int` or + // similar that should match a different overload (SFINAE). + ~vector(); + + vector& operator=(const vector& x); + vector& operator=(vector&& x) noexcept/*(allocator_traits<Allocator>::propagate_on_container_move_assignment::value || allocator_traits<Allocator>::is_always_equal::value)*/; + template<class InputIterator, class IteratorCategory = typename InputIterator::iterator_category> void assign(InputIterator first, InputIterator last); + // use of `iterator_category` makes sure InputIterator is (probably) an iterator, and not an `int` or + // similar that should match a different overload (SFINAE). + void assign(size_type n, const T& u); + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + size_type size() const noexcept; + + reference operator[](size_type n); + const_reference operator[](size_type n) const; + const_reference at(size_type n) const; + reference at(size_type n); + reference front(); + const_reference front() const; + reference back(); + const_reference back() const; + + T* data() noexcept; + const T* data() const noexcept; + + void push_back(const T& x); + void push_back(T&& x); + + iterator insert(const_iterator position, const T& x); + iterator insert(const_iterator position, T&& x); + iterator insert(const_iterator position, size_type n, const T& x); + template<class InputIterator> iterator insert(const_iterator position, InputIterator first, InputIterator last); + + template <class... Args> iterator emplace (const_iterator position, Args&&... args); + template <class... Args> void emplace_back (Args&&... args); + + void swap(vector&) noexcept/*(allocator_traits<Allocator>::propagate_on_container_swap::value || allocator_traits<Allocator>::is_always_equal::value)*/; + + void clear() noexcept; + }; } // --- make_shared / make_unique --- namespace std { - template<typename T> - class shared_ptr { - public: - shared_ptr() noexcept; - explicit shared_ptr(T*); - shared_ptr(const shared_ptr&) noexcept; - template<class U> shared_ptr(const shared_ptr<U>&) noexcept; - template<class U> shared_ptr(shared_ptr<U>&&) noexcept; + template<typename T> + class shared_ptr { + public: + shared_ptr() noexcept; + explicit shared_ptr(T*); + shared_ptr(const shared_ptr&) noexcept; + template<class U> shared_ptr(const shared_ptr<U>&) noexcept; + template<class U> shared_ptr(shared_ptr<U>&&) noexcept; - shared_ptr<T>& operator=(const shared_ptr<T>&) noexcept; - shared_ptr<T>& operator=(shared_ptr<T>&&) noexcept; + shared_ptr<T>& operator=(const shared_ptr<T>&) noexcept; + shared_ptr<T>& operator=(shared_ptr<T>&&) noexcept; - T& operator*() const noexcept; - T* operator->() const noexcept; + T& operator*() const noexcept; + T* operator->() const noexcept; - T* get() const noexcept; - }; + T* get() const noexcept; + }; - template<typename T> - class unique_ptr { - public: - constexpr unique_ptr() noexcept; - explicit unique_ptr(T*) noexcept; - unique_ptr(unique_ptr<T>&&) noexcept; + template<typename T> + class unique_ptr { + public: + constexpr unique_ptr() noexcept; + explicit unique_ptr(T*) noexcept; + unique_ptr(unique_ptr<T>&&) noexcept; - unique_ptr<T>& operator=(unique_ptr<T>&&) noexcept; + unique_ptr<T>& operator=(unique_ptr<T>&&) noexcept; - T& operator*() const; - T* operator->() const noexcept; + T& operator*() const; + T* operator->() const noexcept; - T* get() const noexcept; - }; + T* get() const noexcept; + }; - template<typename T, class... Args> unique_ptr<T> make_unique(Args&&...); + template<typename T, class... Args> unique_ptr<T> make_unique(Args&&...); - template<typename T, class... Args> shared_ptr<T> make_shared(Args&&...); + template<typename T, class... Args> shared_ptr<T> make_shared(Args&&...); } // --- pair --- namespace std { - template <class T1, class T2> - struct pair { - typedef T1 first_type; - typedef T2 second_type; - - T1 first; - T2 second; - pair(); - pair(const T1& x, const T2& y); - template<class U, class V> pair(const pair<U, V> &p); - - void swap(pair& p) /*noexcept(...)*/; - }; - - template<class T1, class T2> constexpr pair<decay_t<T1>, decay_t<T2>> make_pair(T1&& x, T2&& y) { - return pair<decay_t<T1>, decay_t<T2>>(std::forward<T1>(x), std::forward<T2>(y)); - } + template <class T1, class T2> + struct pair { + typedef T1 first_type; + typedef T2 second_type; + + T1 first; + T2 second; + pair(); + pair(const T1& x, const T2& y); + template<class U, class V> pair(const pair<U, V> &p); + + void swap(pair& p) /*noexcept(...)*/; + }; + + template<class T1, class T2> constexpr pair<decay_t<T1>, decay_t<T2>> make_pair(T1&& x, T2&& y) { + return pair<decay_t<T1>, decay_t<T2>>(std::forward<T1>(x), std::forward<T2>(y)); + } } // --- map --- namespace std { - template<class T = void> struct less; - - template<class Key, class T, class Compare = less<Key>, class Allocator = allocator<pair<const Key, T>>> - class map { - public: - using key_type = Key; - using mapped_type = T; - using value_type = pair<const Key, T>; - using iterator = std::iterator<random_access_iterator_tag, value_type >; - using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; - - map(); - map(const map& x); - map(map&& x); - ~map(); - - map& operator=(const map& x); - map& operator=(map&& x) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Compare>)*/; - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - T& operator[](const key_type& x); - T& operator[](key_type&& x); - T& at(const key_type& x); - const T& at(const key_type& x) const; - - template<class... Args> pair<iterator, bool> emplace(Args&&... args); - template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); - - pair<iterator, bool> insert(const value_type& x); - pair<iterator, bool> insert(value_type&& x); - iterator insert(const_iterator position, const value_type& x); - iterator insert(const_iterator position, value_type&& x); - - template<class... Args> pair<iterator, bool> try_emplace(const key_type& k, Args&&... args); - template<class... Args> pair<iterator, bool> try_emplace(key_type&& k, Args&&... args); - template<class... Args> iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); - template<class... Args> iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); - template<class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); - template<class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); - template<class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); - template<class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); - - iterator erase(iterator position); - iterator erase(const_iterator position); - iterator erase(const_iterator first, const_iterator last); - void swap(map&) /*noexcept(/*==allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Compare>)*/; - void clear() noexcept; - - template<class C2> void merge(map<Key, T, C2, Allocator>& source); - template<class C2> void merge(map<Key, T, C2, Allocator>&& source); - - iterator find(const key_type& x); - const_iterator find(const key_type& x) const; - - iterator lower_bound(const key_type& x); - const_iterator lower_bound(const key_type& x) const; - iterator upper_bound(const key_type& x); - const_iterator upper_bound(const key_type& x) const; - - pair<iterator, iterator> equal_range(const key_type& x); - pair<const_iterator, const_iterator> equal_range(const key_type& x) const; - }; - - template<class T> struct hash; - template<class T = void> struct equal_to; - - template<class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Allocator = allocator<pair<const Key, T>>> - class unordered_map { - public: - using key_type = Key; - using mapped_type = T; - using value_type = pair<const Key, T>; - using iterator = std::iterator<random_access_iterator_tag, value_type >; - using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; - - unordered_map(); - unordered_map(const unordered_map&); - unordered_map(unordered_map&&); - ~unordered_map(); - - unordered_map& operator=(const unordered_map&); - unordered_map& operator=(unordered_map&&) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Hash> && is_nothrow_move_assignable_v<Pred>)*/; - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - mapped_type& operator[](const key_type& k); - mapped_type& operator[](key_type&& k); - mapped_type& at(const key_type& k); - const mapped_type& at(const key_type& k) const; - - template<class... Args> pair<iterator, bool> emplace(Args&&... args); - template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); - - pair<iterator, bool> insert(const value_type& obj); - pair<iterator, bool> insert(value_type&& obj); - iterator insert(const_iterator hint, const value_type& obj); - iterator insert(const_iterator hint, value_type&& obj); - - template<class... Args> pair<iterator, bool> try_emplace(const key_type& k, Args&&... args); - template<class... Args> pair<iterator, bool> try_emplace(key_type&& k, Args&&... args); - template<class... Args> iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); - template<class... Args> iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); - template<class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); - template<class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); - template<class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); - template<class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); - - iterator erase(iterator position); - iterator erase(const_iterator position); - iterator erase(const_iterator first, const_iterator last); - void swap(unordered_map&) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Hash> && is_nothrow_swappable_v<Pred>)*/; - void clear() noexcept; - - template<class H2, class P2> void merge(unordered_map<Key, T, H2, P2, Allocator>& source); - template<class H2, class P2> void merge(unordered_map<Key, T, H2, P2, Allocator>&& source); - - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - - pair<iterator, iterator> equal_range(const key_type& k); - pair<const_iterator, const_iterator> equal_range(const key_type& k) const; - }; + template<class T = void> struct less; + + template<class Key, class T, class Compare = less<Key>, class Allocator = allocator<pair<const Key, T>>> + class map { + public: + using key_type = Key; + using mapped_type = T; + using value_type = pair<const Key, T>; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + map(); + map(const map& x); + map(map&& x); + ~map(); + + map& operator=(const map& x); + map& operator=(map&& x) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Compare>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + T& operator[](const key_type& x); + T& operator[](key_type&& x); + T& at(const key_type& x); + const T& at(const key_type& x) const; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + + pair<iterator, bool> insert(const value_type& x); + pair<iterator, bool> insert(value_type&& x); + iterator insert(const_iterator position, const value_type& x); + iterator insert(const_iterator position, value_type&& x); + + template<class... Args> pair<iterator, bool> try_emplace(const key_type& k, Args&&... args); + template<class... Args> pair<iterator, bool> try_emplace(key_type&& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); + template<class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); + template<class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(map&) /*noexcept(/*==allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Compare>)*/; + void clear() noexcept; + + template<class C2> void merge(map<Key, T, C2, Allocator>& source); + template<class C2> void merge(map<Key, T, C2, Allocator>&& source); + + iterator find(const key_type& x); + const_iterator find(const key_type& x) const; + + iterator lower_bound(const key_type& x); + const_iterator lower_bound(const key_type& x) const; + iterator upper_bound(const key_type& x); + const_iterator upper_bound(const key_type& x) const; + + pair<iterator, iterator> equal_range(const key_type& x); + pair<const_iterator, const_iterator> equal_range(const key_type& x) const; + }; + + template<class T> struct hash; + template<class T = void> struct equal_to; + + template<class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Allocator = allocator<pair<const Key, T>>> + class unordered_map { + public: + using key_type = Key; + using mapped_type = T; + using value_type = pair<const Key, T>; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + unordered_map(); + unordered_map(const unordered_map&); + unordered_map(unordered_map&&); + ~unordered_map(); + + unordered_map& operator=(const unordered_map&); + unordered_map& operator=(unordered_map&&) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Hash> && is_nothrow_move_assignable_v<Pred>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + mapped_type& operator[](const key_type& k); + mapped_type& operator[](key_type&& k); + mapped_type& at(const key_type& k); + const mapped_type& at(const key_type& k) const; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + + pair<iterator, bool> insert(const value_type& obj); + pair<iterator, bool> insert(value_type&& obj); + iterator insert(const_iterator hint, const value_type& obj); + iterator insert(const_iterator hint, value_type&& obj); + + template<class... Args> pair<iterator, bool> try_emplace(const key_type& k, Args&&... args); + template<class... Args> pair<iterator, bool> try_emplace(key_type&& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); + template<class... Args> iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); + template<class M> pair<iterator, bool> insert_or_assign(const key_type& k, M&& obj); + template<class M> pair<iterator, bool> insert_or_assign(key_type&& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); + template<class M> iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(unordered_map&) /*noexcept(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Hash> && is_nothrow_swappable_v<Pred>)*/; + void clear() noexcept; + + template<class H2, class P2> void merge(unordered_map<Key, T, H2, P2, Allocator>& source); + template<class H2, class P2> void merge(unordered_map<Key, T, H2, P2, Allocator>&& source); + + iterator find(const key_type& k); + const_iterator find(const key_type& k) const; + + pair<iterator, iterator> equal_range(const key_type& k); + pair<const_iterator, const_iterator> equal_range(const key_type& k) const; + }; }; // --- set --- namespace std { - template<class Key, class Compare = less<Key>, class Allocator = allocator<Key>> - class set { - public: - using key_type = Key; - using value_type = Key; - using size_type = size_t; - using allocator_type = Allocator; - using iterator = std::iterator<random_access_iterator_tag, value_type >; - using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; - - set(); - set(const set& x); - set(set&& x); - template<class InputIterator> set(InputIterator first, InputIterator last/*, const Compare& comp = Compare(), const Allocator& = Allocator()*/); - ~set(); - - set& operator=(const set& x); - set& operator=(set&& x) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Compare>)*/; - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - template<class... Args> pair<iterator, bool> emplace(Args&&... args); - template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); - pair<iterator,bool> insert(const value_type& x); - pair<iterator,bool> insert(value_type&& x); - iterator insert(const_iterator position, const value_type& x); - iterator insert(const_iterator position, value_type&& x); - template<class InputIterator> void insert(InputIterator first, InputIterator last); - - iterator erase(iterator position); - iterator erase(const_iterator position); - iterator erase(const_iterator first, const_iterator last); - void swap(set&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Compare>)*/; - void clear() noexcept; - - template<class C2> void merge(set<Key, C2, Allocator>& source); - template<class C2> void merge(set<Key, C2, Allocator>&& source); - - iterator find(const key_type& x); - const_iterator find(const key_type& x) const; - - iterator lower_bound(const key_type& x); - const_iterator lower_bound(const key_type& x) const; - iterator upper_bound(const key_type& x); - const_iterator upper_bound(const key_type& x) const; - pair<iterator, iterator> equal_range(const key_type& x); - pair<const_iterator, const_iterator> equal_range(const key_type& x) const; - }; - - template<class Key, class Hash = hash<Key>, class Pred = equal_to<Key>, class Allocator = allocator<Key>> - class unordered_set { - public: - using key_type = Key; - using value_type = Key; - using hasher = Hash; - using key_equal = Pred; - using allocator_type = Allocator; - using size_type = size_t; - using iterator = std::iterator<random_access_iterator_tag, value_type >; - using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; - - unordered_set(); - unordered_set(const unordered_set&); - unordered_set(unordered_set&&); - template<class InputIterator> unordered_set(InputIterator f, InputIterator l, size_type n = 0/*, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()*/); - ~unordered_set(); - - unordered_set& operator=(const unordered_set&); - unordered_set& operator=(unordered_set&&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Hash> && is_nothrow_move_assignable_v<Pred>)*/; - - iterator begin() noexcept; - const_iterator begin() const noexcept; - iterator end() noexcept; - const_iterator end() const noexcept; - - template<class... Args> pair<iterator, bool> emplace(Args&&... args); - template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); - pair<iterator, bool> insert(const value_type& obj); - pair<iterator, bool> insert(value_type&& obj); - iterator insert(const_iterator hint, const value_type& obj); - iterator insert(const_iterator hint, value_type&& obj); - template<class InputIterator> void insert(InputIterator first, InputIterator last); - - iterator erase(iterator position); - iterator erase(const_iterator position); - iterator erase(const_iterator first, const_iterator last); - void swap(unordered_set&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Hash> && is_nothrow_swappable_v<Pred>)*/; - void clear() noexcept; - - template<class H2, class P2> void merge(unordered_set<Key, H2, P2, Allocator>& source); - template<class H2, class P2> void merge(unordered_set<Key, H2, P2, Allocator>&& source); - - iterator find(const key_type& k); - const_iterator find(const key_type& k) const; - pair<iterator, iterator> equal_range(const key_type& k); - pair<const_iterator, const_iterator> equal_range(const key_type& k) const; - }; + template<class Key, class Compare = less<Key>, class Allocator = allocator<Key>> + class set { + public: + using key_type = Key; + using value_type = Key; + using size_type = size_t; + using allocator_type = Allocator; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + set(); + set(const set& x); + set(set&& x); + template<class InputIterator> set(InputIterator first, InputIterator last/*, const Compare& comp = Compare(), const Allocator& = Allocator()*/); + ~set(); + + set& operator=(const set& x); + set& operator=(set&& x) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Compare>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + pair<iterator,bool> insert(const value_type& x); + pair<iterator,bool> insert(value_type&& x); + iterator insert(const_iterator position, const value_type& x); + iterator insert(const_iterator position, value_type&& x); + template<class InputIterator> void insert(InputIterator first, InputIterator last); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(set&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Compare>)*/; + void clear() noexcept; + + template<class C2> void merge(set<Key, C2, Allocator>& source); + template<class C2> void merge(set<Key, C2, Allocator>&& source); + + iterator find(const key_type& x); + const_iterator find(const key_type& x) const; + + iterator lower_bound(const key_type& x); + const_iterator lower_bound(const key_type& x) const; + iterator upper_bound(const key_type& x); + const_iterator upper_bound(const key_type& x) const; + pair<iterator, iterator> equal_range(const key_type& x); + pair<const_iterator, const_iterator> equal_range(const key_type& x) const; + }; + + template<class Key, class Hash = hash<Key>, class Pred = equal_to<Key>, class Allocator = allocator<Key>> + class unordered_set { + public: + using key_type = Key; + using value_type = Key; + using hasher = Hash; + using key_equal = Pred; + using allocator_type = Allocator; + using size_type = size_t; + using iterator = std::iterator<random_access_iterator_tag, value_type >; + using const_iterator = std::iterator<random_access_iterator_tag, const value_type >; + + unordered_set(); + unordered_set(const unordered_set&); + unordered_set(unordered_set&&); + template<class InputIterator> unordered_set(InputIterator f, InputIterator l, size_type n = 0/*, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()*/); + ~unordered_set(); + + unordered_set& operator=(const unordered_set&); + unordered_set& operator=(unordered_set&&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_move_assignable_v<Hash> && is_nothrow_move_assignable_v<Pred>)*/; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + iterator end() noexcept; + const_iterator end() const noexcept; + + template<class... Args> pair<iterator, bool> emplace(Args&&... args); + template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); + pair<iterator, bool> insert(const value_type& obj); + pair<iterator, bool> insert(value_type&& obj); + iterator insert(const_iterator hint, const value_type& obj); + iterator insert(const_iterator hint, value_type&& obj); + template<class InputIterator> void insert(InputIterator first, InputIterator last); + + iterator erase(iterator position); + iterator erase(const_iterator position); + iterator erase(const_iterator first, const_iterator last); + void swap(unordered_set&) noexcept/*(allocator_traits<Allocator>::is_always_equal::value && is_nothrow_swappable_v<Hash> && is_nothrow_swappable_v<Pred>)*/; + void clear() noexcept; + + template<class H2, class P2> void merge(unordered_set<Key, H2, P2, Allocator>& source); + template<class H2, class P2> void merge(unordered_set<Key, H2, P2, Allocator>&& source); + + iterator find(const key_type& k); + const_iterator find(const key_type& k) const; + pair<iterator, iterator> equal_range(const key_type& k); + pair<const_iterator, const_iterator> equal_range(const key_type& k) const; + }; } std::vector<std::vector<int>> returnValue(); @@ -668,11 +668,11 @@ std::vector<std::vector<int>> external_by_const_ref(const std::vector<std::vecto // *: Will be detected once extract destruction of unnamed temporaries and generate IR for them const std::vector<std::vector<int>>& return_self_by_ref(const std::vector<std::vector<int>>& v) { - return v; + return v; } std::vector<std::vector<int>> return_self_by_value(const std::vector<std::vector<int>>& v) { - return v; + return v; } void test() { @@ -686,34 +686,34 @@ void test() { for (auto x : returnRef()[0]) {} // GOOD for (auto x : returnRef().at(0)) {} // GOOD - for(auto it = returnValue().begin(); it != returnValue().end(); ++it) {} // BAD + for(auto it = returnValue().begin(); it != returnValue().end(); ++it) {} // BAD - { - auto v = returnValue(); - for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD - } + { + auto v = returnValue(); + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } - { - auto&& v = returnValue(); - for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD - } + { + auto&& v = returnValue(); + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } - { - auto&& v = returnValue()[0]; - for(auto it = v.begin(); it != v.end(); ++it) {} // BAD [NOT DETECTED] (see *) - } - - { - auto&& v = returnRef(); - for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD - } + { + auto&& v = returnValue()[0]; + for(auto it = v.begin(); it != v.end(); ++it) {} // BAD [NOT DETECTED] (see *) + } + + { + auto&& v = returnRef(); + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } - { - auto&& v = returnRef()[0]; - for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD - } + { + auto&& v = returnRef()[0]; + for(auto it = v.begin(); it != v.end(); ++it) {} // GOOD + } - for (auto x : return_self_by_ref(returnValue())) {} // BAD [NOT DETECTED] (see *) + for (auto x : return_self_by_ref(returnValue())) {} // BAD [NOT DETECTED] (see *) - for (auto x : return_self_by_value(returnValue())) {} // GOOD + for (auto x : return_self_by_value(returnValue())) {} // GOOD } From af7b1bc425ae521df6fda104a693372931d0f357 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Wed, 13 Mar 2024 10:10:23 +0000 Subject: [PATCH 328/731] Java: add test for partial gradle wrapper without gradle on the path Note I had to mimic the actual absence of Gradle by testing the case where it fails, but have manually verified a missing binary works too. --- .../.gitattributes | 6 + .../.gitignore | 5 + .../build.gradle | 30 +++ .../force_sequential_test_execution | 3 + .../gradle/verification-metadata.xml | 7 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../gradlew | 185 ++++++++++++++++++ .../gradlew.bat | 89 +++++++++ .../settings.gradle | 19 ++ .../src/main/java/com/example/App.java | 14 ++ .../src/test/java/com/example/AppTest.java | 14 ++ .../test.expected | 5 + .../test.py | 31 +++ .../test.ql | 7 + 14 files changed, 420 insertions(+) create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitattributes create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitignore create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/build.gradle create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/force_sequential_test_execution create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties create mode 100755 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew.bat create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/settings.gradle create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.expected create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.py create mode 100644 java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.ql diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitattributes b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitattributes new file mode 100644 index 000000000000..00a51aff5e5a --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitattributes @@ -0,0 +1,6 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# These are explicitly windows files and should use crlf +*.bat text eol=crlf + diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitignore b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitignore new file mode 100644 index 000000000000..1b6985c0094c --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/build.gradle b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/build.gradle new file mode 100644 index 000000000000..071a12b7691c --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/build.gradle @@ -0,0 +1,30 @@ +/* + * This build file was auto generated by running the Gradle 'init' task + * by 'arthur' at '28/11/20 22:29' with Gradle 3.0 + * + * This generated file contains a sample Java project to get you started. + * For more details take a look at the Java Quickstart chapter in the Gradle + * user guide available at https://docs.gradle.org/3.0/userguide/tutorial_java_projects.html + */ + +// Apply the java plugin to add support for Java +apply plugin: 'java' + +// In this section you declare where to find the dependencies of your project +repositories { + // Use 'jcenter' for resolving your dependencies. + // You can declare any Maven/Ivy/file repository here. + jcenter() +} + +// In this section you declare the dependencies for your production and test code +dependencies { + // The production code uses the SLF4J logging API at compile time + compile 'org.slf4j:slf4j-api:1.7.21' + + // Declare the dependency for your favourite test framework you want to use in your tests. + // TestNG is also supported by the Gradle Test task. Just change the + // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add + // 'test.useTestNG()' to your build script. + testCompile 'junit:junit:4.12' +} diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/force_sequential_test_execution b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/force_sequential_test_execution new file mode 100644 index 000000000000..b0e2500b259b --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/force_sequential_test_execution @@ -0,0 +1,3 @@ +# We currently have a bug where gradle tests become flaky when executed in parallel +# - sometimes, gradle fails to connect to the gradle daemon. +# Therefore, force this test to run sequentially. diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml new file mode 100644 index 000000000000..14a69b8178b7 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/verification-metadata.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<verification-metadata> + <configuration> + <verify-metadata>true</verify-metadata> + <verify-signatures>false</verify-signatures> + </configuration> +</verification-metadata> \ No newline at end of file diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000000..12d38de6a487 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew new file mode 100755 index 000000000000..4f906e0c811f --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew.bat b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew.bat new file mode 100644 index 000000000000..107acd32c4e6 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/settings.gradle b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/settings.gradle new file mode 100644 index 000000000000..233410459f60 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/settings.gradle @@ -0,0 +1,19 @@ +/* + * This settings file was auto generated by the Gradle buildInit task + * by 'arthur' at '28/11/20 22:29' with Gradle 3.0 + * + * The settings file is used to specify which projects to include in your build. + * In a single project build this file can be empty or even removed. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user guide at https://docs.gradle.org/3.0/userguide/multi_project_builds.html + */ + +/* +// To declare projects as part of a multi-project build use the 'include' method +include 'shared' +include 'api' +include 'services:webservice' +*/ + +rootProject.name = 'gradle-sample' diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java new file mode 100644 index 000000000000..1c13f7d885e5 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/main/java/com/example/App.java @@ -0,0 +1,14 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package com.example; + +public class App { + public String getGreeting() { + return "Hello world."; + } + + public static void main(String[] args) { + System.out.println(new App().getGreeting()); + } +} diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java new file mode 100644 index 000000000000..813bc5e1a2ae --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/src/test/java/com/example/AppTest.java @@ -0,0 +1,14 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package com.example; + +import org.junit.Test; +import static org.junit.Assert.*; + +public class AppTest { + @Test public void testAppHasAGreeting() { + App classUnderTest = new App(); + assertNotNull("app should have a greeting", classUnderTest.getGreeting()); + } +} diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.expected b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.expected new file mode 100644 index 000000000000..82f7ee275a1a --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.expected @@ -0,0 +1,5 @@ +xmlFiles +| gradle/verification-metadata.xml:0:0:0:0 | gradle/verification-metadata.xml | +#select +| src/main/java/com/example/App.java:0:0:0:0 | App | +| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest | diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.py b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.py new file mode 100644 index 000000000000..846a89e87038 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.py @@ -0,0 +1,31 @@ +import sys + +from create_database_utils import * +import shutil +import os.path +import tempfile +import platform + +#The version of gradle used doesn't work on java 17 +try_use_java11() + +gradle_override_dir = tempfile.mkdtemp() +if platform.system() == "Windows": + with open(os.path.join(gradle_override_dir, "gradle.bat"), "w") as f: + f.write("@echo off\nexit /b 2\n") +else: + gradlepath = os.path.join(gradle_override_dir, "gradle") + with open(gradlepath, "w") as f: + f.write("#!/bin/bash\nexit 1\n") + os.chmod(gradlepath, 0o0755) + +oldpath = os.getenv("PATH") +os.environ["PATH"] = gradle_override_dir + os.pathsep + oldpath + +try: + run_codeql_database_create([], lang="java") +finally: + try: + shutil.rmtree(gradle_override_dir) + except Exception as e: + pass diff --git a/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.ql b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.ql new file mode 100644 index 000000000000..c11b8fba7070 --- /dev/null +++ b/java/ql/integration-tests/all-platforms/java/partial-gradle-sample-without-gradle/test.ql @@ -0,0 +1,7 @@ +import java + +from File f +where f.isSourceFile() +select f + +query predicate xmlFiles(XmlFile x) { any() } From 916b1e959e15cee53d99333c8a5d137a68fb1f54 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Mon, 18 Mar 2024 15:56:10 +0000 Subject: [PATCH 329/731] Java: Add a test for MissingEnumInSwitch --- .../MissingEnumInSwitch.expected | 10 + .../MissingEnumInSwitch.qlref | 1 + .../Statements/MissingEnumInSwitch/Test.java | 187 ++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected create mode 100644 java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.qlref create mode 100644 java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/Test.java diff --git a/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected new file mode 100644 index 000000000000..5daf2fc5b8a0 --- /dev/null +++ b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected @@ -0,0 +1,10 @@ +| Test.java:8:5:8:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 22 more. | Test.java:4:27:4:27 | B | B | Test.java:4:25:4:25 | C | C | Test.java:4:45:4:45 | D | D | +| Test.java:11:5:11:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 21 more. | Test.java:4:25:4:25 | C | C | Test.java:4:45:4:45 | D | D | Test.java:4:15:4:15 | E | E | +| Test.java:15:5:15:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 20 more. | Test.java:4:45:4:45 | D | D | Test.java:4:15:4:15 | E | E | Test.java:4:43:4:43 | F | F | +| Test.java:20:5:20:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 19 more. | Test.java:4:15:4:15 | E | E | Test.java:4:43:4:43 | F | F | Test.java:4:49:4:49 | G | G | +| Test.java:26:5:26:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 18 more. | Test.java:4:43:4:43 | F | F | Test.java:4:49:4:49 | G | G | Test.java:4:35:4:35 | H | H | +| Test.java:33:5:33:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 2 more. | Test.java:4:21:4:21 | V | V | Test.java:4:13:4:13 | W | W | Test.java:4:23:4:23 | X | X | +| Test.java:56:5:56:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 1 more. | Test.java:4:13:4:13 | W | W | Test.java:4:23:4:23 | X | X | Test.java:4:11:4:11 | Y | Y | +| Test.java:80:5:80:13 | switch (...) | Switch statement does not have a case for $@, $@ or $@. | Test.java:4:23:4:23 | X | X | Test.java:4:11:4:11 | Y | Y | Test.java:4:33:4:33 | Z | Z | +| Test.java:105:5:105:13 | switch (...) | Switch statement does not have a case for $@ or $@. | Test.java:4:11:4:11 | Y | Y | Test.java:4:33:4:33 | Z | Z | Test.java:4:11:4:11 | Y | Y | +| Test.java:131:5:131:13 | switch (...) | Switch statement does not have a case for $@. | Test.java:4:33:4:33 | Z | Z | Test.java:4:33:4:33 | Z | Z | Test.java:4:33:4:33 | Z | Z | diff --git a/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.qlref b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.qlref new file mode 100644 index 000000000000..10f1b3e8be23 --- /dev/null +++ b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.qlref @@ -0,0 +1 @@ +Likely Bugs/Statements/MissingEnumInSwitch.ql diff --git a/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/Test.java b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/Test.java new file mode 100644 index 000000000000..2f39918ead4c --- /dev/null +++ b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/Test.java @@ -0,0 +1,187 @@ +public class Test { + private enum MyEnum { + // A..Z in random order + N,R,S,Y,W,E,K,I,V,X,C,B,O,J,Z,H,T,P,A,F,D,M,G,U,L,Q + } + + public void use(MyEnum e) { + switch(e) { + case A: break; + } + switch(e) { + case A: break; + case B: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + case E: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + case E: break; + case F: break; + case G: break; + case H: break; + case I: break; + case J: break; + case K: break; + case L: break; + case M: break; + case N: break; + case O: break; + case P: break; + case Q: break; + case R: break; + case S: break; + case T: break; + case U: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + case E: break; + case F: break; + case G: break; + case H: break; + case I: break; + case J: break; + case K: break; + case L: break; + case M: break; + case N: break; + case O: break; + case P: break; + case Q: break; + case R: break; + case S: break; + case T: break; + case U: break; + case V: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + case E: break; + case F: break; + case G: break; + case H: break; + case I: break; + case J: break; + case K: break; + case L: break; + case M: break; + case N: break; + case O: break; + case P: break; + case Q: break; + case R: break; + case S: break; + case T: break; + case U: break; + case V: break; + case W: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + case E: break; + case F: break; + case G: break; + case H: break; + case I: break; + case J: break; + case K: break; + case L: break; + case M: break; + case N: break; + case O: break; + case P: break; + case Q: break; + case R: break; + case S: break; + case T: break; + case U: break; + case V: break; + case W: break; + case X: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + case E: break; + case F: break; + case G: break; + case H: break; + case I: break; + case J: break; + case K: break; + case L: break; + case M: break; + case N: break; + case O: break; + case P: break; + case Q: break; + case R: break; + case S: break; + case T: break; + case U: break; + case V: break; + case W: break; + case X: break; + case Y: break; + } + switch(e) { + case A: break; + case B: break; + case C: break; + case D: break; + case E: break; + case F: break; + case G: break; + case H: break; + case I: break; + case J: break; + case K: break; + case L: break; + case M: break; + case N: break; + case O: break; + case P: break; + case Q: break; + case R: break; + case S: break; + case T: break; + case U: break; + case V: break; + case W: break; + case X: break; + case Y: break; + case Z: break; + } + } +} From 60b5e499050d75587bf65f5e0e3877caccd326a3 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Mon, 18 Mar 2024 15:56:21 +0000 Subject: [PATCH 330/731] Java: Limit the amount of results that MissingEnumInSwitch produces per switch The tool status page warns: An analysis file contained multiple alerts that included more related locations than our allowed limit of 100. These alerts correspond to the rule java/missing-case-in-switch. Only 100 locations were stored for these alerts. --- .../Statements/MissingEnumInSwitch.ql | 53 ++++++++++++++++--- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql index dfea3ad72d95..0ebe0ebb0251 100644 --- a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql +++ b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql @@ -13,10 +13,51 @@ import java -from SwitchStmt switch, EnumType enum, EnumConstant missing -where - switch.getExpr().getType() = enum and - missing.getDeclaringType() = enum and +EnumConstant nthMissing(SwitchStmt switch, int index) { not exists(switch.getDefaultCase()) and - not switch.getAConstCase().getValue() = missing.getAnAccess() -select switch, "Switch statement does not have a case for $@.", missing, missing.getName() + exists(EnumType enum | + switch.getExpr().getType() = enum and + result = + rank[index](EnumConstant ec | + ec.getDeclaringType() = enum and + not switch.getAConstCase().getValue() = ec.getAnAccess() + | + ec order by ec.getName() + ) + ) +} + +predicate first3(string msg, SwitchStmt switch, EnumConstant e1, EnumConstant e2, EnumConstant e3) { + exists(int n | n = strictcount(nthMissing(switch, _)) | + if n > 3 + then msg = "Switch statement does not have a case for $@, $@, $@ or " + (n - 3) + " more." + else msg = "Switch statement does not have a case for $@, $@ or $@." + ) and + e1 = nthMissing(switch, 1) and + e2 = nthMissing(switch, 2) and + e3 = nthMissing(switch, 3) +} + +predicate only2(string msg, SwitchStmt switch, EnumConstant e1, EnumConstant e2) { + msg = "Switch statement does not have a case for $@ or $@." and + e1 = nthMissing(switch, 1) and + e2 = nthMissing(switch, 2) +} + +predicate only1(string msg, SwitchStmt switch, EnumConstant e) { + msg = "Switch statement does not have a case for $@." and + e = nthMissing(switch, 1) +} + +from string msg, SwitchStmt switch, EnumConstant e1, EnumConstant e2, EnumConstant e3 +where + if first3(_, switch, _, _, _) + then first3(msg, switch, e1, e2, e3) + else + if only2(_, switch, _, _) + then ( + only2(msg, switch, e1, e2) and e1 = e3 + ) else ( + only1(msg, switch, e1) and e1 = e2 and e1 = e3 + ) +select switch, msg, e1, e1.getName(), e2, e2.getName(), e3, e3.getName() From e373341f62a133b45a1f86cdc8f730d81d4c468f Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 15:47:38 +0000 Subject: [PATCH 331/731] C++: Add more tests. --- .../query-tests/Security/CWE/CWE-416/test.cpp | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp index 3e2d74829758..506096ae1447 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp @@ -717,3 +717,52 @@ void test() { for (auto x : return_self_by_value(returnValue())) {} // GOOD } + +template<typename T> +void iterate(const std::vector<T>& v) { + for (auto x : v) {} +} + +std::vector<int>& ref_to_first_in_returnValue_1() { + return returnValue()[0]; // BAD [NOT DETECTED] (see *) +} + +std::vector<int>& ref_to_first_in_returnValue_2() { + return returnValue()[0]; // BAD [NOT DETECTED] +} + +std::vector<int>& ref_to_first_in_returnValue_3() { + return returnValue()[0]; // BAD [NOT DETECTED] (see *) +} + +std::vector<int> first_in_returnValue_1() { + return returnValue()[0]; // GOOD +} + +std::vector<int> first_in_returnValue_2() { + return returnValue()[0]; // GOOD +} + +void test2() { + iterate(returnValue()); // GOOD [FALSE POSITIVE] (see *) + iterate(returnValue()[0]); // GOOD [FALSE POSITIVE] (see *) + + for (auto x : ref_to_first_in_returnValue_1()) {} + + { + auto value = ref_to_first_in_returnValue_2(); + for (auto x : value) {} + } + + { + auto& ref = ref_to_first_in_returnValue_3(); + for (auto x : ref) {} + } + + for (auto x : first_in_returnValue_1()) {} + + { + auto value = first_in_returnValue_2(); + for (auto x : value) {} + } +} From b944f3b411f31c704db467696ac8c494bf2ab714 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 15:54:53 +0000 Subject: [PATCH 332/731] C++: Fix FP. --- .../CWE/CWE-416/IteratorToExpiredContainer.ql | 14 ++++++++++++++ .../query-tests/Security/CWE/CWE-416/test.cpp | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql index cf3a22792fe8..15f34aa8d151 100644 --- a/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql +++ b/cpp/ql/src/experimental/Security/CWE/CWE-416/IteratorToExpiredContainer.ql @@ -80,6 +80,20 @@ module DestroyedToBeginConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source = getADestroyedNode() } predicate isSink(DataFlow::Node sink) { isSinkImpl(sink, _) } + + DataFlow::FlowFeature getAFeature() { + // By blocking argument-to-parameter flow we ensure that we don't enter a + // function body where the temporary outlives anything inside the function. + // This prevents false positives in cases like: + // ```cpp + // void foo(const std::vector<int>& v) { + // for(auto x : v) { ... } // this is fine since v outlives the loop + // } + // ... + // foo(create_temporary()) + // ``` + result instanceof DataFlow::FeatureHasSinkCallContext + } } module DestroyedToBeginFlow = DataFlow::Global<DestroyedToBeginConfig>; diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp index 506096ae1447..4e5fcbd21498 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-416/test.cpp @@ -744,8 +744,8 @@ std::vector<int> first_in_returnValue_2() { } void test2() { - iterate(returnValue()); // GOOD [FALSE POSITIVE] (see *) - iterate(returnValue()[0]); // GOOD [FALSE POSITIVE] (see *) + iterate(returnValue()); // GOOD + iterate(returnValue()[0]); // GOOD for (auto x : ref_to_first_in_returnValue_1()) {} From a21eea4ee07134616ede87612c3a4b196ec404fa Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 11:46:55 +0000 Subject: [PATCH 333/731] C++: Generalize more predicates from booleans to abstract values. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 63 ++++++++++--------- .../code/cpp/ir/implementation/EdgeKind.qll | 9 +++ 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index e7762fc9fa85..d714c1ecf30d 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -446,7 +446,10 @@ class IRGuardCondition extends Instruction { /** Holds if (determined by this guard) `left == right + k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ cached predicate comparesEq(Operand left, Operand right, int k, boolean areEqual, boolean testIsTrue) { - compares_eq(this, left, right, k, areEqual, testIsTrue) + exists(BooleanValue value | + compares_eq(this, left, right, k, areEqual, value) and + value.getValue() = testIsTrue + ) } /** @@ -455,8 +458,8 @@ class IRGuardCondition extends Instruction { */ cached predicate ensuresEq(Operand left, Operand right, int k, IRBlock block, boolean areEqual) { - exists(boolean testIsTrue | - compares_eq(this, left, right, k, areEqual, testIsTrue) and this.controls(block, testIsTrue) + exists(AbstractValue value | + compares_eq(this, left, right, k, areEqual, value) and this.valueControls(block, value) ) } @@ -468,9 +471,9 @@ class IRGuardCondition extends Instruction { predicate ensuresEqEdge( Operand left, Operand right, int k, IRBlock pred, IRBlock succ, boolean areEqual ) { - exists(boolean testIsTrue | - compares_eq(this, left, right, k, areEqual, testIsTrue) and - this.controlsEdge(pred, succ, testIsTrue) + exists(AbstractValue value | + compares_eq(this, left, right, k, areEqual, value) and + this.valueControlsEdge(pred, succ, value) ) } @@ -572,52 +575,52 @@ private Instruction getBranchForCondition(Instruction guard) { * Beware making mistaken logical implications here relating `areEqual` and `testIsTrue`. */ private predicate compares_eq( - Instruction test, Operand left, Operand right, int k, boolean areEqual, boolean testIsTrue + Instruction test, Operand left, Operand right, int k, boolean areEqual, AbstractValue value ) { /* The simple case where the test *is* the comparison so areEqual = testIsTrue xor eq. */ - exists(boolean eq | simple_comparison_eq(test, left, right, k, eq) | - areEqual = true and testIsTrue = eq + exists(AbstractValue v | simple_comparison_eq(test, left, right, k, v) | + areEqual = true and value = v or - areEqual = false and testIsTrue = eq.booleanNot() + areEqual = false and value = v.getDualValue() ) or // I think this is handled by forwarding in controlsBlock. //or //logical_comparison_eq(test, left, right, k, areEqual, testIsTrue) /* a == b + k => b == a - k */ - exists(int mk | k = -mk | compares_eq(test, right, left, mk, areEqual, testIsTrue)) + exists(int mk | k = -mk | compares_eq(test, right, left, mk, areEqual, value)) or - complex_eq(test, left, right, k, areEqual, testIsTrue) + complex_eq(test, left, right, k, areEqual, value) or /* (x is true => (left == right + k)) => (!x is false => (left == right + k)) */ - exists(boolean isFalse | testIsTrue = isFalse.booleanNot() | - compares_eq(test.(LogicalNotInstruction).getUnary(), left, right, k, areEqual, isFalse) + exists(AbstractValue dual | value = dual.getDualValue() | + compares_eq(test.(LogicalNotInstruction).getUnary(), left, right, k, areEqual, dual) ) } /** Rearrange various simple comparisons into `left == right + k` form. */ private predicate simple_comparison_eq( - CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual + CompareInstruction cmp, Operand left, Operand right, int k, AbstractValue value ) { left = cmp.getLeftOperand() and cmp instanceof CompareEQInstruction and right = cmp.getRightOperand() and k = 0 and - areEqual = true + value.(BooleanValue).getValue() = true or left = cmp.getLeftOperand() and cmp instanceof CompareNEInstruction and right = cmp.getRightOperand() and k = 0 and - areEqual = false + value.(BooleanValue).getValue() = false } private predicate complex_eq( - CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, boolean testIsTrue + CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value ) { - sub_eq(cmp, left, right, k, areEqual, testIsTrue) + sub_eq(cmp, left, right, k, areEqual, value) or - add_eq(cmp, left, right, k, areEqual, testIsTrue) + add_eq(cmp, left, right, k, areEqual, value) } /* @@ -768,31 +771,31 @@ private predicate add_lt( // left - x == right + c => left == right + (c+x) // left == (right - x) + c => left == right + (c-x) private predicate sub_eq( - CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, boolean testIsTrue + CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value ) { exists(SubInstruction lhs, int c, int x | - compares_eq(cmp, lhs.getAUse(), right, c, areEqual, testIsTrue) and + compares_eq(cmp, lhs.getAUse(), right, c, areEqual, value) and left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) and k = c + x ) or exists(SubInstruction rhs, int c, int x | - compares_eq(cmp, left, rhs.getAUse(), c, areEqual, testIsTrue) and + compares_eq(cmp, left, rhs.getAUse(), c, areEqual, value) and right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) and k = c - x ) or exists(PointerSubInstruction lhs, int c, int x | - compares_eq(cmp, lhs.getAUse(), right, c, areEqual, testIsTrue) and + compares_eq(cmp, lhs.getAUse(), right, c, areEqual, value) and left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) and k = c + x ) or exists(PointerSubInstruction rhs, int c, int x | - compares_eq(cmp, left, rhs.getAUse(), c, areEqual, testIsTrue) and + compares_eq(cmp, left, rhs.getAUse(), c, areEqual, value) and right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) and k = c - x @@ -802,10 +805,10 @@ private predicate sub_eq( // left + x == right + c => left == right + (c-x) // left == (right + x) + c => left == right + (c+x) private predicate add_eq( - CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, boolean testIsTrue + CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value ) { exists(AddInstruction lhs, int c, int x | - compares_eq(cmp, lhs.getAUse(), right, c, areEqual, testIsTrue) and + compares_eq(cmp, lhs.getAUse(), right, c, areEqual, value) and ( left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) or @@ -815,7 +818,7 @@ private predicate add_eq( ) or exists(AddInstruction rhs, int c, int x | - compares_eq(cmp, left, rhs.getAUse(), c, areEqual, testIsTrue) and + compares_eq(cmp, left, rhs.getAUse(), c, areEqual, value) and ( right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) or @@ -825,7 +828,7 @@ private predicate add_eq( ) or exists(PointerAddInstruction lhs, int c, int x | - compares_eq(cmp, lhs.getAUse(), right, c, areEqual, testIsTrue) and + compares_eq(cmp, lhs.getAUse(), right, c, areEqual, value) and ( left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) or @@ -835,7 +838,7 @@ private predicate add_eq( ) or exists(PointerAddInstruction rhs, int c, int x | - compares_eq(cmp, left, rhs.getAUse(), c, areEqual, testIsTrue) and + compares_eq(cmp, left, rhs.getAUse(), c, areEqual, value) and ( right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) or diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll index 91e1fe03e233..81db183fa63e 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/EdgeKind.qll @@ -90,6 +90,15 @@ class CaseEdge extends EdgeKind, TCaseEdge { * Gets the largest value of the switch expression for which control will flow along this edge. */ final string getMaxValue() { result = maxValue } + + /** + * Gets the unique value of the switch expression for which control will + * flow along this edge, if any. + */ + final string getValue() { + minValue = maxValue and + result = minValue + } } /** From 44045d3eed8403aea446f15e25bbfd451fe715e3 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 12:26:15 +0000 Subject: [PATCH 334/731] C++: Add guards logic for constant comparisons. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index d714c1ecf30d..60de332f8471 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -452,6 +452,21 @@ class IRGuardCondition extends Instruction { ) } + /** Holds if (determined by this guard) `op == k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ + cached + predicate comparesEq(Operand op, int k, boolean areEqual, boolean testIsTrue) { + exists(MatchValue mv | + compares_eq(this, op, k, areEqual, mv) and + // A match value cannot be dualized, so `testIsTrue` is always true + testIsTrue = true + ) + or + exists(BooleanValue bv | + compares_eq(this, op, k, areEqual, bv) and + bv.getValue() = testIsTrue + ) + } + /** * Holds if (determined by this guard) `left == right + k` must be `areEqual` in `block`. * If `areEqual = false` then this implies `left != right + k`. @@ -463,6 +478,17 @@ class IRGuardCondition extends Instruction { ) } + /** + * Holds if (determined by this guard) `op == k` must be `areEqual` in `block`. + * If `areEqual = false` then this implies `op != k`. + */ + cached + predicate ensuresEq(Operand op, int k, IRBlock block, boolean areEqual) { + exists(AbstractValue value | + compares_eq(this, op, k, areEqual, value) and this.valueControls(block, value) + ) + } + /** * Holds if (determined by this guard) `left == right + k` must be `areEqual` on the edge from * `pred` to `succ`. If `areEqual = false` then this implies `left != right + k`. @@ -477,6 +503,18 @@ class IRGuardCondition extends Instruction { ) } + /** + * Holds if (determined by this guard) `op == k` must be `areEqual` on the edge from + * `pred` to `succ`. If `areEqual = false` then this implies `op != k`. + */ + cached + predicate ensuresEqEdge(Operand op, int k, IRBlock pred, IRBlock succ, boolean areEqual) { + exists(AbstractValue value | + compares_eq(this, op, k, areEqual, value) and + this.valueControlsEdge(pred, succ, value) + ) + } + /** * Holds if this condition controls `block`, meaning that `block` is only * entered if the value of this condition is `v`. This helper @@ -598,6 +636,33 @@ private predicate compares_eq( ) } +/** Holds if `op == k` is `areEqual` given that `test` is equal to `value`. */ +private predicate compares_eq( + Instruction test, Operand op, int k, boolean areEqual, AbstractValue value +) { + /* The simple case where the test *is* the comparison so areEqual = testIsTrue xor eq. */ + exists(AbstractValue v | simple_comparison_eq(test, op, k, v) | + areEqual = true and value = v + or + areEqual = false and value = v.getDualValue() + ) + or + complex_eq(test, op, k, areEqual, value) + or + /* (x is true => (op == k)) => (!x is false => (op == k)) */ + exists(AbstractValue dual | value = dual.getDualValue() | + compares_eq(test.(LogicalNotInstruction).getUnary(), op, k, areEqual, dual) + ) + or + // ((test is `areEqual` => op == const + k2) and const == `k1`) => + // test is `areEqual` => op == k1 + k2 + exists(int k1, int k2, ConstantInstruction const | + compares_eq(test, op, const.getAUse(), k2, areEqual, value) and + int_value(const) = k1 and + k = k1 + k2 + ) +} + /** Rearrange various simple comparisons into `left == right + k` form. */ private predicate simple_comparison_eq( CompareInstruction cmp, Operand left, Operand right, int k, AbstractValue value @@ -615,6 +680,15 @@ private predicate simple_comparison_eq( value.(BooleanValue).getValue() = false } +/** Rearrange various simple comparisons into `op == k` form. */ +private predicate simple_comparison_eq(Instruction test, Operand op, int k, AbstractValue value) { + exists(SwitchInstruction switch | + test = switch.getExpression() and + op.getDef() = test and + value.(MatchValue).getCase().getValue().toInt() = k + ) +} + private predicate complex_eq( CompareInstruction cmp, Operand left, Operand right, int k, boolean areEqual, AbstractValue value ) { @@ -623,6 +697,14 @@ private predicate complex_eq( add_eq(cmp, left, right, k, areEqual, value) } +private predicate complex_eq( + Instruction test, Operand op, int k, boolean areEqual, AbstractValue value +) { + sub_eq(test, op, k, areEqual, value) + or + add_eq(test, op, k, areEqual, value) +} + /* * Simplification of inequality expressions * Simplify conditions in the source to the canonical form l < r + k. @@ -802,6 +884,23 @@ private predicate sub_eq( ) } +// op - x == c => op == (c+x) +private predicate sub_eq(Instruction test, Operand op, int k, boolean areEqual, AbstractValue value) { + exists(SubInstruction sub, int c, int x | + compares_eq(test, sub.getAUse(), c, areEqual, value) and + op = sub.getLeftOperand() and + x = int_value(sub.getRight()) and + k = c + x + ) + or + exists(PointerSubInstruction sub, int c, int x | + compares_eq(test, sub.getAUse(), c, areEqual, value) and + op = sub.getLeftOperand() and + x = int_value(sub.getRight()) and + k = c + x + ) +} + // left + x == right + c => left == right + (c-x) // left == (right + x) + c => left == right + (c+x) private predicate add_eq( @@ -848,5 +947,30 @@ private predicate add_eq( ) } +// left + x == right + c => left == right + (c-x) +private predicate add_eq( + Instruction test, Operand left, int k, boolean areEqual, AbstractValue value +) { + exists(AddInstruction lhs, int c, int x | + compares_eq(test, lhs.getAUse(), c, areEqual, value) and + ( + left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) + or + left = lhs.getRightOperand() and x = int_value(lhs.getLeft()) + ) and + k = c - x + ) + or + exists(PointerAddInstruction lhs, int c, int x | + compares_eq(test, lhs.getAUse(), c, areEqual, value) and + ( + left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) + or + left = lhs.getRightOperand() and x = int_value(lhs.getLeft()) + ) and + k = c - x + ) +} + /** The int value of integer constant expression. */ private int int_value(Instruction i) { result = i.(IntegerConstantInstruction).getValue().toInt() } From decede51dc1ee2db399631bd80f25aa650213071 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 13:54:30 +0000 Subject: [PATCH 335/731] C++: Use the new predicate in 'ScanfChecks.qll'. --- cpp/ql/src/Critical/ScanfChecks.qll | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cpp/ql/src/Critical/ScanfChecks.qll b/cpp/ql/src/Critical/ScanfChecks.qll index b2464ecc9f48..403df4715f3e 100644 --- a/cpp/ql/src/Critical/ScanfChecks.qll +++ b/cpp/ql/src/Critical/ScanfChecks.qll @@ -11,7 +11,7 @@ private predicate exprInBooleanContext(Expr e) { exists(IRGuardCondition gc | exists(Instruction i | i.getUnconvertedResultExpression() = e and - gc.comparesEq(valueNumber(i).getAUse(), zero(), 0, _, _) + gc.comparesEq(valueNumber(i).getAUse(), 0, _, _) ) or gc.getUnconvertedResultExpression() = e @@ -36,10 +36,6 @@ private string getEofValue() { ) } -private ConstantInstruction getEofInstruction() { result.getValue() = getEofValue() } - -private Operand eof() { result.getDef() = getEofInstruction() } - /** * Holds if the value of `call` has been checked to not equal `EOF`. */ @@ -47,7 +43,7 @@ private predicate checkedForEof(ScanfFunctionCall call) { exists(IRGuardCondition gc | exists(Instruction i | i.getUnconvertedResultExpression() = call | // call == EOF - gc.comparesEq(valueNumber(i).getAUse(), eof(), 0, _, _) + gc.comparesEq(valueNumber(i).getAUse(), getEofValue().toInt(), _, _) or // call < 0 (EOF is guaranteed to be negative) gc.comparesLt(valueNumber(i).getAUse(), zero(), 0, true, _) From dbd47b387afb25bce808877198cb5a2bfb0714de Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 16:26:36 +0000 Subject: [PATCH 336/731] C++: Add AST wrappers for the new predicates. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 60de332f8471..ddc380c304f7 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -137,6 +137,17 @@ class GuardCondition extends Expr { */ cached predicate ensuresEq(Expr left, Expr right, int k, BasicBlock block, boolean areEqual) { none() } + + /** Holds if (determined by this guard) `e == k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ + cached + predicate comparesEq(Expr e, int k, boolean areEqual, boolean testIsTrue) { none() } + + /** + * Holds if (determined by this guard) `e == k` must be `areEqual` in `block`. + * If `areEqual = false` then this implies `e != k`. + */ + cached + predicate ensuresEq(Expr e, int k, BasicBlock block, boolean areEqual) { none() } } /** @@ -184,6 +195,20 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardCondition { this.comparesEq(left, right, k, areEqual, testIsTrue) and this.controls(block, testIsTrue) ) } + + override predicate comparesEq(Expr e, int k, boolean areEqual, boolean testIsTrue) { + exists(boolean partIsTrue, GuardCondition part | + this.(BinaryLogicalOperation).impliesValue(part, partIsTrue, testIsTrue) + | + part.comparesEq(e, k, areEqual, partIsTrue) + ) + } + + override predicate ensuresEq(Expr e, int k, BasicBlock block, boolean areEqual) { + exists(boolean testIsTrue | + this.comparesEq(e, k, areEqual, testIsTrue) and this.controls(block, testIsTrue) + ) + } } /** @@ -245,6 +270,21 @@ private class GuardConditionFromIR extends GuardCondition { ) } + override predicate comparesEq(Expr e, int k, boolean areEqual, boolean testIsTrue) { + exists(Instruction i | + i.getUnconvertedResultExpression() = e and + ir.comparesEq(i.getAUse(), k, areEqual, testIsTrue) + ) + } + + override predicate ensuresEq(Expr e, int k, BasicBlock block, boolean areEqual) { + exists(Instruction i, boolean testIsTrue | + i.getUnconvertedResultExpression() = e and + ir.comparesEq(i.getAUse(), k, areEqual, testIsTrue) and + this.controls(block, testIsTrue) + ) + } + /** * Holds if this condition controls `block`, meaning that `block` is only * entered if the value of this condition is `v`. This helper From 032678a367bc849f55dfa90baba9f2548436212d Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 16:27:10 +0000 Subject: [PATCH 337/731] C++: Extend tests to also test the new predicates. --- .../controlflow/guards-ir/tests.ql | 89 ++++++++++++++----- .../controlflow/guards/GuardsCompare.ql | 28 ++++-- 2 files changed, 87 insertions(+), 30 deletions(-) diff --git a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql index fe3d92d2c2b5..263c30c2fec5 100644 --- a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql +++ b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql @@ -4,22 +4,32 @@ import semmle.code.cpp.controlflow.IRGuards query predicate astGuards(GuardCondition guard) { any() } query predicate astGuardsCompare(int startLine, string msg) { - exists(GuardCondition guard, Expr left, Expr right, int k, string which, string op | + exists(GuardCondition guard, Expr left, int k, string which, string op | exists(boolean sense | sense = true and which = "true" or sense = false and which = "false" | - guard.comparesLt(left, right, k, true, sense) and op = " < " + exists(Expr right | + guard.comparesLt(left, right, k, true, sense) and op = " < " + or + guard.comparesLt(left, right, k, false, sense) and op = " >= " + or + guard.comparesEq(left, right, k, true, sense) and op = " == " + or + guard.comparesEq(left, right, k, false, sense) and op = " != " + | + msg = left + op + right + "+" + k + " when " + guard + " is " + which + ) or - guard.comparesLt(left, right, k, false, sense) and op = " >= " - or - guard.comparesEq(left, right, k, true, sense) and op = " == " - or - guard.comparesEq(left, right, k, false, sense) and op = " != " + ( + guard.comparesEq(left, k, true, sense) and op = " == " + or + guard.comparesEq(left, k, false, sense) and op = " != " + ) and + msg = left + op + k + " when " + guard + " is " + which ) and - startLine = guard.getLocation().getStartLine() and - msg = left + op + right + "+" + k + " when " + guard + " is " + which + startLine = guard.getLocation().getStartLine() ) } @@ -46,28 +56,52 @@ query predicate astGuardsEnsure( ) } +query predicate astGuardsEnsure_const( + GuardCondition guard, Expr left, string op, int k, int start, int end +) { + exists(BasicBlock block | + guard.ensuresEq(left, k, block, true) and op = "==" + or + guard.ensuresEq(left, k, block, false) and op = "!=" + | + block.hasLocationInfo(_, start, _, end, _) + ) +} + query predicate irGuards(IRGuardCondition guard) { any() } query predicate irGuardsCompare(int startLine, string msg) { - exists(IRGuardCondition guard, Operand left, Operand right, int k, string which, string op | + exists(IRGuardCondition guard, Operand left, int k, string which, string op | exists(boolean sense | sense = true and which = "true" or sense = false and which = "false" | - guard.comparesLt(left, right, k, true, sense) and op = " < " + exists(Operand right | + guard.comparesLt(left, right, k, true, sense) and op = " < " + or + guard.comparesLt(left, right, k, false, sense) and op = " >= " + or + guard.comparesEq(left, right, k, true, sense) and op = " == " + or + guard.comparesEq(left, right, k, false, sense) and op = " != " + | + msg = + left.getAnyDef().getUnconvertedResultExpression() + op + + right.getAnyDef().getUnconvertedResultExpression() + "+" + k + " when " + guard + " is " + + which + ) or - guard.comparesLt(left, right, k, false, sense) and op = " >= " - or - guard.comparesEq(left, right, k, true, sense) and op = " == " - or - guard.comparesEq(left, right, k, false, sense) and op = " != " + ( + guard.comparesEq(left, k, true, sense) and op = " == " + or + guard.comparesEq(left, k, false, sense) and op = " != " + ) and + msg = + left.getAnyDef().getUnconvertedResultExpression() + op + k + " when " + guard + " is " + + which ) and - startLine = guard.getLocation().getStartLine() and - msg = - left.getAnyDef().getUnconvertedResultExpression() + op + - right.getAnyDef().getUnconvertedResultExpression() + "+" + k + " when " + guard + " is " + - which + startLine = guard.getLocation().getStartLine() ) } @@ -95,3 +129,16 @@ query predicate irGuardsEnsure( block.getLocation().hasLocationInfo(_, start, _, end, _) ) } + +query predicate irGuardsEnsure_const( + IRGuardCondition guard, Instruction left, string op, int k, int start, int end +) { + exists(IRBlock block, Operand leftOp | + guard.ensuresEq(leftOp, k, block, true) and op = "==" + or + guard.ensuresEq(leftOp, k, block, false) and op = "!=" + | + leftOp = left.getAUse() and + block.getLocation().hasLocationInfo(_, start, _, end, _) + ) +} diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql index a1373b2923b2..17d4fcaae941 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql @@ -7,20 +7,30 @@ import cpp import semmle.code.cpp.controlflow.Guards -from GuardCondition guard, Expr left, Expr right, int k, string which, string op, string msg +from GuardCondition guard, Expr left, int k, string which, string op, string msg where exists(boolean sense | sense = true and which = "true" or sense = false and which = "false" | - guard.comparesLt(left, right, k, true, sense) and op = " < " + exists(Expr right | + guard.comparesLt(left, right, k, true, sense) and op = " < " + or + guard.comparesLt(left, right, k, false, sense) and op = " >= " + or + guard.comparesEq(left, right, k, true, sense) and op = " == " + or + guard.comparesEq(left, right, k, false, sense) and op = " != " + | + msg = left + op + right + "+" + k + " when " + guard + " is " + which + ) or - guard.comparesLt(left, right, k, false, sense) and op = " >= " - or - guard.comparesEq(left, right, k, true, sense) and op = " == " - or - guard.comparesEq(left, right, k, false, sense) and op = " != " - ) and - msg = left + op + right + "+" + k + " when " + guard + " is " + which + ( + guard.comparesEq(left, k, true, sense) and op = " == " + or + guard.comparesEq(left, k, false, sense) and op = " != " + ) and + msg = left + op + k + " when " + guard + " is " + which + ) select guard.getLocation().getStartLine(), msg From 40dbc6fdd9e50c7b8d5cfc49fd741510e9b001e3 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 18 Mar 2024 16:27:18 +0000 Subject: [PATCH 338/731] C++: Accept test changes. --- .../controlflow/guards-ir/tests.expected | 88 +++++++++++++++++++ .../controlflow/guards/GuardsCompare.expected | 27 ++++++ 2 files changed, 115 insertions(+) diff --git a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected index ac8068e768dc..2eb749580b4c 100644 --- a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected +++ b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected @@ -62,7 +62,9 @@ astGuardsCompare | 26 | x >= 0+1 when ... > ... is true | | 31 | - ... != x+0 when ... == ... is false | | 31 | - ... == x+0 when ... == ... is true | +| 31 | x != -1 when ... == ... is false | | 31 | x != - ...+0 when ... == ... is false | +| 31 | x == -1 when ... == ... is true | | 31 | x == - ...+0 when ... == ... is true | | 34 | 10 < j+1 when ... < ... is false | | 34 | 10 >= j+1 when ... < ... is true | @@ -86,15 +88,20 @@ astGuardsCompare | 58 | 0 < y+1 when ... \|\| ... is false | | 58 | 0 == x+0 when ... == ... is true | | 58 | 0 >= y+1 when ... < ... is true | +| 58 | x != 0 when ... == ... is false | +| 58 | x != 0 when ... \|\| ... is false | | 58 | x != 0+0 when ... == ... is false | | 58 | x != 0+0 when ... \|\| ... is false | +| 58 | x == 0 when ... == ... is true | | 58 | x == 0+0 when ... == ... is true | | 58 | y < 0+0 when ... < ... is true | | 58 | y >= 0+0 when ... < ... is false | | 58 | y >= 0+0 when ... \|\| ... is false | | 75 | 0 != x+0 when ... == ... is false | | 75 | 0 == x+0 when ... == ... is true | +| 75 | x != 0 when ... == ... is false | | 75 | x != 0+0 when ... == ... is false | +| 75 | x == 0 when ... == ... is true | | 75 | x == 0+0 when ... == ... is true | | 85 | 0 != x+0 when ... == ... is false | | 85 | 0 != y+0 when ... != ... is true | @@ -102,15 +109,23 @@ astGuardsCompare | 85 | 0 == x+0 when ... && ... is true | | 85 | 0 == x+0 when ... == ... is true | | 85 | 0 == y+0 when ... != ... is false | +| 85 | x != 0 when ... == ... is false | | 85 | x != 0+0 when ... == ... is false | +| 85 | x == 0 when ... && ... is true | +| 85 | x == 0 when ... == ... is true | | 85 | x == 0+0 when ... && ... is true | | 85 | x == 0+0 when ... == ... is true | +| 85 | y != 0 when ... != ... is true | +| 85 | y != 0 when ... && ... is true | | 85 | y != 0+0 when ... != ... is true | | 85 | y != 0+0 when ... && ... is true | +| 85 | y == 0 when ... != ... is false | | 85 | y == 0+0 when ... != ... is false | | 94 | 0 != x+0 when ... != ... is true | | 94 | 0 == x+0 when ... != ... is false | +| 94 | x != 0 when ... != ... is true | | 94 | x != 0+0 when ... != ... is true | +| 94 | x == 0 when ... != ... is false | | 94 | x == 0+0 when ... != ... is false | | 102 | 10 < j+1 when ... < ... is false | | 102 | 10 >= j+1 when ... < ... is true | @@ -122,8 +137,11 @@ astGuardsCompare | 109 | 0 < y+1 when ... \|\| ... is false | | 109 | 0 == x+0 when ... == ... is true | | 109 | 0 >= y+1 when ... < ... is true | +| 109 | x != 0 when ... == ... is false | +| 109 | x != 0 when ... \|\| ... is false | | 109 | x != 0+0 when ... == ... is false | | 109 | x != 0+0 when ... \|\| ... is false | +| 109 | x == 0 when ... == ... is true | | 109 | x == 0+0 when ... == ... is true | | 109 | y < 0+0 when ... < ... is true | | 109 | y >= 0+0 when ... < ... is false | @@ -162,7 +180,9 @@ astGuardsCompare | 165 | y >= x+43 when ... < ... is true | | 175 | 0 != call to foo+0 when ... == ... is false | | 175 | 0 == call to foo+0 when ... == ... is true | +| 175 | call to foo != 0 when ... == ... is false | | 175 | call to foo != 0+0 when ... == ... is false | +| 175 | call to foo == 0 when ... == ... is true | | 175 | call to foo == 0+0 when ... == ... is true | astGuardsControl | test.c:7:9:7:13 | ... > ... | false | 10 | 11 | @@ -443,6 +463,34 @@ astGuardsEnsure | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:12:31:13 | - ... | != | test.cpp:31:7:31:7 | x | 0 | 34 | 34 | | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:12:31:13 | - ... | == | test.cpp:31:7:31:7 | x | 0 | 30 | 30 | | test.cpp:31:7:31:13 | ... == ... | test.cpp:31:12:31:13 | - ... | == | test.cpp:31:7:31:7 | x | 0 | 31 | 32 | +astGuardsEnsure_const +| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:9 | x | != | 0 | 58 | 58 | +| test.c:58:9:58:14 | ... == ... | test.c:58:9:58:9 | x | != | 0 | 62 | 62 | +| test.c:58:9:58:23 | ... \|\| ... | test.c:58:9:58:9 | x | != | 0 | 62 | 62 | +| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | != | 0 | 78 | 79 | +| test.c:75:9:75:14 | ... == ... | test.c:75:9:75:9 | x | == | 0 | 75 | 77 | +| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 85 | 85 | +| test.c:85:8:85:13 | ... == ... | test.c:85:8:85:8 | x | == | 0 | 86 | 86 | +| test.c:85:8:85:23 | ... && ... | test.c:85:8:85:8 | x | == | 0 | 86 | 86 | +| test.c:85:8:85:23 | ... && ... | test.c:85:18:85:18 | y | != | 0 | 86 | 86 | +| test.c:85:18:85:23 | ... != ... | test.c:85:18:85:18 | y | != | 0 | 86 | 86 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | != | 0 | 94 | 96 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 70 | 70 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 99 | 102 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 102 | 102 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 107 | 109 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 109 | 109 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 109 | 117 | +| test.c:94:11:94:16 | ... != ... | test.c:94:11:94:11 | x | == | 0 | 113 | 113 | +| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:9 | x | != | 0 | 109 | 109 | +| test.c:109:9:109:14 | ... == ... | test.c:109:9:109:9 | x | != | 0 | 113 | 113 | +| test.c:109:9:109:23 | ... \|\| ... | test.c:109:9:109:9 | x | != | 0 | 113 | 113 | +| test.c:175:13:175:32 | ... == ... | test.c:175:13:175:15 | call to foo | != | 0 | 175 | 175 | +| test.c:175:13:175:32 | ... == ... | test.c:175:13:175:15 | call to foo | == | 0 | 175 | 175 | +| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | != | -1 | 30 | 30 | +| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | != | -1 | 34 | 34 | +| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | == | -1 | 30 | 30 | +| test.cpp:31:7:31:13 | ... == ... | test.cpp:31:7:31:7 | x | == | -1 | 31 | 32 | irGuards | test.c:7:9:7:13 | CompareGT: ... > ... | | test.c:17:8:17:12 | CompareLT: ... < ... | @@ -497,7 +545,9 @@ irGuardsCompare | 26 | x >= 0+1 when CompareGT: ... > ... is true | | 31 | - ... != x+0 when CompareEQ: ... == ... is false | | 31 | - ... == x+0 when CompareEQ: ... == ... is true | +| 31 | x != -1 when CompareEQ: ... == ... is false | | 31 | x != - ...+0 when CompareEQ: ... == ... is false | +| 31 | x == -1 when CompareEQ: ... == ... is true | | 31 | x == - ...+0 when CompareEQ: ... == ... is true | | 34 | 10 < j+1 when CompareLT: ... < ... is false | | 34 | 10 >= j+1 when CompareLT: ... < ... is true | @@ -519,25 +569,35 @@ irGuardsCompare | 58 | 0 < y+1 when CompareLT: ... < ... is false | | 58 | 0 == x+0 when CompareEQ: ... == ... is true | | 58 | 0 >= y+1 when CompareLT: ... < ... is true | +| 58 | x != 0 when CompareEQ: ... == ... is false | | 58 | x != 0+0 when CompareEQ: ... == ... is false | +| 58 | x == 0 when CompareEQ: ... == ... is true | | 58 | x == 0+0 when CompareEQ: ... == ... is true | | 58 | y < 0+0 when CompareLT: ... < ... is true | | 58 | y >= 0+0 when CompareLT: ... < ... is false | | 75 | 0 != x+0 when CompareEQ: ... == ... is false | | 75 | 0 == x+0 when CompareEQ: ... == ... is true | +| 75 | x != 0 when CompareEQ: ... == ... is false | | 75 | x != 0+0 when CompareEQ: ... == ... is false | +| 75 | x == 0 when CompareEQ: ... == ... is true | | 75 | x == 0+0 when CompareEQ: ... == ... is true | | 85 | 0 != x+0 when CompareEQ: ... == ... is false | | 85 | 0 != y+0 when CompareNE: ... != ... is true | | 85 | 0 == x+0 when CompareEQ: ... == ... is true | | 85 | 0 == y+0 when CompareNE: ... != ... is false | +| 85 | x != 0 when CompareEQ: ... == ... is false | | 85 | x != 0+0 when CompareEQ: ... == ... is false | +| 85 | x == 0 when CompareEQ: ... == ... is true | | 85 | x == 0+0 when CompareEQ: ... == ... is true | +| 85 | y != 0 when CompareNE: ... != ... is true | | 85 | y != 0+0 when CompareNE: ... != ... is true | +| 85 | y == 0 when CompareNE: ... != ... is false | | 85 | y == 0+0 when CompareNE: ... != ... is false | | 94 | 0 != x+0 when CompareNE: ... != ... is true | | 94 | 0 == x+0 when CompareNE: ... != ... is false | +| 94 | x != 0 when CompareNE: ... != ... is true | | 94 | x != 0+0 when CompareNE: ... != ... is true | +| 94 | x == 0 when CompareNE: ... != ... is false | | 94 | x == 0+0 when CompareNE: ... != ... is false | | 102 | 10 < j+1 when CompareLT: ... < ... is false | | 102 | 10 >= j+1 when CompareLT: ... < ... is true | @@ -547,7 +607,9 @@ irGuardsCompare | 109 | 0 < y+1 when CompareLT: ... < ... is false | | 109 | 0 == x+0 when CompareEQ: ... == ... is true | | 109 | 0 >= y+1 when CompareLT: ... < ... is true | +| 109 | x != 0 when CompareEQ: ... == ... is false | | 109 | x != 0+0 when CompareEQ: ... == ... is false | +| 109 | x == 0 when CompareEQ: ... == ... is true | | 109 | x == 0+0 when CompareEQ: ... == ... is true | | 109 | y < 0+0 when CompareLT: ... < ... is true | | 109 | y >= 0+0 when CompareLT: ... < ... is false | @@ -585,7 +647,9 @@ irGuardsCompare | 165 | y >= x+43 when CompareLT: ... < ... is true | | 175 | 0 != call to foo+0 when CompareEQ: ... == ... is false | | 175 | 0 == call to foo+0 when CompareEQ: ... == ... is true | +| 175 | call to foo != 0 when CompareEQ: ... == ... is false | | 175 | call to foo != 0+0 when CompareEQ: ... == ... is false | +| 175 | call to foo == 0 when CompareEQ: ... == ... is true | | 175 | call to foo == 0+0 when CompareEQ: ... == ... is true | irGuardsControl | test.c:7:9:7:13 | CompareGT: ... > ... | false | 11 | 11 | @@ -841,3 +905,27 @@ irGuardsEnsure | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:12:31:13 | Constant: - ... | != | test.cpp:31:7:31:7 | Load: x | 0 | 34 | 34 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:12:31:13 | Constant: - ... | == | test.cpp:31:7:31:7 | Load: x | 0 | 30 | 30 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:12:31:13 | Constant: - ... | == | test.cpp:31:7:31:7 | Load: x | 0 | 32 | 32 | +irGuardsEnsure_const +| test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:9 | Load: x | != | 0 | 58 | 58 | +| test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:9 | Load: x | != | 0 | 62 | 62 | +| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | != | 0 | 79 | 79 | +| test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | 0 | 76 | 76 | +| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | 0 | 85 | 85 | +| test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | 0 | 86 | 86 | +| test.c:85:18:85:23 | CompareNE: ... != ... | test.c:85:18:85:18 | Load: y | != | 0 | 86 | 86 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | != | 0 | 95 | 95 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 70 | 70 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 99 | 99 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 102 | 102 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 103 | 103 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 107 | 107 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 109 | 109 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 110 | 110 | +| test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 113 | 113 | +| test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:9 | Load: x | != | 0 | 109 | 109 | +| test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:9 | Load: x | != | 0 | 113 | 113 | +| test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:15 | Call: call to foo | != | 0 | 175 | 175 | +| test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:15 | Call: call to foo | == | 0 | 175 | 175 | +| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:7 | Load: x | != | -1 | 34 | 34 | +| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:7 | Load: x | == | -1 | 30 | 30 | +| test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:7 | Load: x | == | -1 | 32 | 32 | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected index 58068f3991df..5f714676b5c8 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected @@ -20,7 +20,9 @@ | 26 | x >= 0+1 when ... > ... is true | | 31 | - ... != x+0 when ... == ... is false | | 31 | - ... == x+0 when ... == ... is true | +| 31 | x != -1 when ... == ... is false | | 31 | x != - ...+0 when ... == ... is false | +| 31 | x == -1 when ... == ... is true | | 31 | x == - ...+0 when ... == ... is true | | 34 | 10 < j+1 when ... < ... is false | | 34 | 10 >= j+1 when ... < ... is true | @@ -44,31 +46,53 @@ | 58 | 0 < y+1 when ... \|\| ... is false | | 58 | 0 == x+0 when ... == ... is true | | 58 | 0 >= y+1 when ... < ... is true | +| 58 | x != 0 when ... == ... is false | +| 58 | x != 0 when ... \|\| ... is false | | 58 | x != 0+0 when ... == ... is false | | 58 | x != 0+0 when ... \|\| ... is false | +| 58 | x == 0 when ... == ... is true | | 58 | x == 0+0 when ... == ... is true | | 58 | y < 0+0 when ... < ... is true | | 58 | y >= 0+0 when ... < ... is false | | 58 | y >= 0+0 when ... \|\| ... is false | +| 61 | i == 0 when i is true | +| 61 | i == 1 when i is true | +| 61 | i == 2 when i is true | +| 74 | i == 0 when i is true | +| 74 | i == 1 when i is true | +| 74 | i == 2 when i is true | | 75 | 0 != x+0 when ... == ... is false | | 75 | 0 == x+0 when ... == ... is true | +| 75 | x != 0 when ... == ... is false | | 75 | x != 0+0 when ... == ... is false | +| 75 | x == 0 when ... == ... is true | | 75 | x == 0+0 when ... == ... is true | +| 84 | i == 0 when i is true | +| 84 | i == 1 when i is true | +| 84 | i == 2 when i is true | | 85 | 0 != x+0 when ... == ... is false | | 85 | 0 != y+0 when ... != ... is true | | 85 | 0 != y+0 when ... && ... is true | | 85 | 0 == x+0 when ... && ... is true | | 85 | 0 == x+0 when ... == ... is true | | 85 | 0 == y+0 when ... != ... is false | +| 85 | x != 0 when ... == ... is false | | 85 | x != 0+0 when ... == ... is false | +| 85 | x == 0 when ... && ... is true | +| 85 | x == 0 when ... == ... is true | | 85 | x == 0+0 when ... && ... is true | | 85 | x == 0+0 when ... == ... is true | +| 85 | y != 0 when ... != ... is true | +| 85 | y != 0 when ... && ... is true | | 85 | y != 0+0 when ... != ... is true | | 85 | y != 0+0 when ... && ... is true | +| 85 | y == 0 when ... != ... is false | | 85 | y == 0+0 when ... != ... is false | | 94 | 0 != x+0 when ... != ... is true | | 94 | 0 == x+0 when ... != ... is false | +| 94 | x != 0 when ... != ... is true | | 94 | x != 0+0 when ... != ... is true | +| 94 | x == 0 when ... != ... is false | | 94 | x == 0+0 when ... != ... is false | | 102 | 10 < j+1 when ... < ... is false | | 102 | 10 >= j+1 when ... < ... is true | @@ -80,8 +104,11 @@ | 109 | 0 < y+1 when ... \|\| ... is false | | 109 | 0 == x+0 when ... == ... is true | | 109 | 0 >= y+1 when ... < ... is true | +| 109 | x != 0 when ... == ... is false | +| 109 | x != 0 when ... \|\| ... is false | | 109 | x != 0+0 when ... == ... is false | | 109 | x != 0+0 when ... \|\| ... is false | +| 109 | x == 0 when ... == ... is true | | 109 | x == 0+0 when ... == ... is true | | 109 | y < 0+0 when ... < ... is true | | 109 | y >= 0+0 when ... < ... is false | From 764e99bda75b0e9372c683c0dcf080706a727713 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Mon, 18 Mar 2024 16:56:20 +0000 Subject: [PATCH 339/731] Fix model for `java.util.Scanner#findall(String)` Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com> --- java/ql/lib/ext/java.util.model.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/ext/java.util.model.yml b/java/ql/lib/ext/java.util.model.yml index be4665d4cd7e..fe4958856d30 100644 --- a/java/ql/lib/ext/java.util.model.yml +++ b/java/ql/lib/ext/java.util.model.yml @@ -312,7 +312,7 @@ extensions: - ["java.util", "Queue", True, "remove", "()", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["java.util", "ResourceBundle", True, "getString", "(String)", "", "Argument[this].MapValue", "ReturnValue", "value", "manual"] - ["java.util", "Scanner", True, "findAll", "(Pattern)", "", "Argument[this]", "ReturnValue.Element", "taint", "df-manual"] - - ["java.util", "Scanner", True, "findAll", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] + - ["java.util", "Scanner", True, "findAll", "(String)", "", "Argument[this]", "ReturnValue.Element", "taint", "df-manual"] - ["java.util", "Scanner", True, "match", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] - ["java.util", "Scanner", True, "Scanner", "", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.util", "Scanner", True, "findInLine", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] From e895f96a3a50b740da387fe77e8d8dd6159cc15c Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Mon, 18 Mar 2024 17:55:02 +0000 Subject: [PATCH 340/731] Ruby: Taint flow to second block param in map When `map` is called on a hash, the values in the hash are passed to the second parameter of the block. --- ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll index b2a30beafc3a..d2e51624b4e3 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll @@ -1855,7 +1855,7 @@ module Enumerable { override predicate propagatesFlow(string input, string output, boolean preservesValue) { input = "Argument[self].Element[any]" and - output = "Argument[block].Parameter[0]" and + output = "Argument[block].Parameter[0, 1]" and preservesValue = true or input = "Argument[block].ReturnValue" and From 187a68bf766bf713b5ef93946bc4a1797598f621 Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Mon, 18 Mar 2024 17:56:10 +0000 Subject: [PATCH 341/731] Ruby: Add flow summary for `Hash#keys` --- ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll index 4871d8d99243..ee90c3ee6e4c 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll @@ -523,3 +523,13 @@ private class ValuesSummary extends SimpleSummarizedCallable { preservesValue = true } } + +private class KeysSummary extends SimpleSummarizedCallable { + KeysSummary() { this = "keys" } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[self].Element[any]" and + output = "ReturnValue.Element[?]" and + preservesValue = true + } +} From 3649af3f0568fc544cbeef82f6e4e386aab62003 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Mon, 18 Mar 2024 17:56:59 +0000 Subject: [PATCH 342/731] Go: Add test for `go/autobuilder/invalid-go-toolchain-version` diagnostic --- .../diagnostics.expected | 31 +++++++++++++++++++ .../invalid-toolchain-version/src/go.mod | 3 ++ .../invalid-toolchain-version/src/main.go | 5 +++ .../invalid-toolchain-version/test.py | 19 ++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected create mode 100644 go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/go.mod create mode 100644 go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/main.go create mode 100644 go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/test.py diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected new file mode 100644 index 000000000000..e506cc1e2300 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected @@ -0,0 +1,31 @@ +{ + "location": { + "file": "go.mod" + }, + "markdownMessage": "As of Go 1.21, toolchain versions [must use the 1.N.P syntax](https://tip.golang.org/doc/toolchain#version).\n\n`1.21` in `go.mod` does not match this syntax and there is no additional `toolchain` directive, which may cause some `go` commands to fail.", + "severity": "warning", + "source": { + "extractorName": "go", + "id": "go/autobuilder/invalid-go-toolchain-version", + "name": "`1.21` is not a valid Go toolchain version" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} +{ + "markdownMessage": "A single `go.mod` file was found.\n\n`go.mod`", + "severity": "note", + "source": { + "extractorName": "go", + "id": "go/autobuilder/single-root-go-mod-found", + "name": "A single `go.mod` file was found in the root" + }, + "visibility": { + "cliSummaryTable": false, + "statusPage": false, + "telemetry": true + } +} diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/go.mod b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/go.mod new file mode 100644 index 000000000000..bee3365b8999 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/go.mod @@ -0,0 +1,3 @@ +go 1.21 + +module example diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/main.go b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/main.go new file mode 100644 index 000000000000..79058077776c --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/src/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + +} diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/test.py b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/test.py new file mode 100644 index 000000000000..2824c219d376 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/test.py @@ -0,0 +1,19 @@ +import os +import subprocess + +from create_database_utils import * +from diagnostics_test_utils import * + +# Set up a GOPATH relative to this test's root directory; +# we set os.environ instead of using extra_env because we +# need it to be set for the call to "go clean -modcache" later +goPath = os.path.join(os.path.abspath(os.getcwd()), ".go") +os.environ['GOPATH'] = goPath +os.environ['LGTM_INDEX_IMPORT_PATH'] = "test" +run_codeql_database_create([], lang="go", source="src") + +check_diagnostics() + +# Clean up the temporary GOPATH to prevent Bazel failures next +# time the tests are run; see https://github.com/golang/go/issues/27161 +subprocess.call(["go", "clean", "-modcache"]) From 9a8ec36a4f0e30b6c5b6553180327adaefbb6483 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 8 Mar 2024 14:47:32 +0000 Subject: [PATCH 343/731] Accept test changes --- .../test.expected | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected b/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected index 9ad4eeeadc82..7768a1d28bde 100644 --- a/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected +++ b/java/ql/test-kotlin1/library-tests/java-kotlin-collection-type-generic-methods/test.expected @@ -32,6 +32,14 @@ methodWithDuplicate | AbstractCollection<String> | removeAll | Collection<?> | | AbstractCollection<String> | retainAll | Collection<?> | | AbstractCollection<String> | toArray | T[] | +| AbstractCollection<T> | add | T | +| AbstractCollection<T> | addAll | Collection<? extends T> | +| AbstractCollection<T> | contains | Object | +| AbstractCollection<T> | containsAll | Collection<?> | +| AbstractCollection<T> | remove | Object | +| AbstractCollection<T> | removeAll | Collection<?> | +| AbstractCollection<T> | retainAll | Collection<?> | +| AbstractCollection<T> | toArray | T[] | | AbstractList | add | E | | AbstractList | add | int | | AbstractList | addAll | Collection<? extends E> | @@ -169,6 +177,17 @@ methodWithDuplicate | Collection<String> | retainAll | Collection<?> | | Collection<String> | toArray | IntFunction<T[]> | | Collection<String> | toArray | T[] | +| Collection<T> | add | T | +| Collection<T> | addAll | Collection<? extends T> | +| Collection<T> | contains | Object | +| Collection<T> | containsAll | Collection<?> | +| Collection<T> | equals | Object | +| Collection<T> | remove | Object | +| Collection<T> | removeAll | Collection<?> | +| Collection<T> | removeIf | Predicate<? super T> | +| Collection<T> | retainAll | Collection<?> | +| Collection<T> | toArray | IntFunction<T[]> | +| Collection<T> | toArray | T[] | | Collection<V> | add | V | | Collection<V> | addAll | Collection<? extends V> | | Collection<V> | contains | Object | From 32b80f8cb182163f22370fb6cd3a79619ce37b2b Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Tue, 19 Mar 2024 08:38:14 +0000 Subject: [PATCH 344/731] Ruby: Add tests for hash flow --- .../lib/codeql/ruby/frameworks/core/Array.qll | 1 + .../lib/codeql/ruby/frameworks/core/Hash.qll | 2 ++ .../dataflow/hash-flow/hash-flow.expected | 33 +++++++++++++++++++ .../dataflow/hash-flow/hash_flow.rb | 15 +++++++++ 4 files changed, 51 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll index d2e51624b4e3..2da521e54a1b 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll @@ -1855,6 +1855,7 @@ module Enumerable { override predicate propagatesFlow(string input, string output, boolean preservesValue) { input = "Argument[self].Element[any]" and + // For `Hash#map`, the value flows to parameter 1 output = "Argument[block].Parameter[0, 1]" and preservesValue = true or diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll index ee90c3ee6e4c..7583498ed089 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll @@ -524,6 +524,8 @@ private class ValuesSummary extends SimpleSummarizedCallable { } } +// We don't (yet) track data flow through hash keys, but this is still useful in cases where a +// whole hash(like) object is tainted, such as `ActionController#params`. private class KeysSummary extends SimpleSummarizedCallable { KeysSummary() { this = "keys" } diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected index d2da8837a568..23027a7d73fb 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected @@ -1089,6 +1089,19 @@ edges | hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:994:14:994:47 | ...[...] [element :b] | provenance | | | hash_flow.rb:996:14:996:15 | h2 [element :b] | hash_flow.rb:996:14:996:19 | ...[...] | provenance | | | hash_flow.rb:998:14:998:15 | h2 [element :b] | hash_flow.rb:998:14:998:18 | ...[...] | provenance | | +| hash_flow.rb:1006:5:1006:5 | [post] h [element] | hash_flow.rb:1007:12:1007:12 | h [element] | provenance | | +| hash_flow.rb:1006:14:1006:24 | call to taint | hash_flow.rb:1006:5:1006:5 | [post] h [element] | provenance | | +| hash_flow.rb:1007:5:1007:8 | keys [element] | hash_flow.rb:1008:10:1008:13 | keys [element] | provenance | | +| hash_flow.rb:1007:12:1007:12 | h [element] | hash_flow.rb:1007:12:1007:17 | call to keys [element] | provenance | | +| hash_flow.rb:1007:12:1007:17 | call to keys [element] | hash_flow.rb:1007:5:1007:8 | keys [element] | provenance | | +| hash_flow.rb:1008:10:1008:13 | keys [element] | hash_flow.rb:1008:10:1008:17 | ...[...] | provenance | | +| hash_flow.rb:1012:5:1012:5 | h [element :a] | hash_flow.rb:1013:5:1013:5 | h [element :a] | provenance | | +| hash_flow.rb:1012:9:1012:45 | call to [] [element :a] | hash_flow.rb:1012:5:1012:5 | h [element :a] | provenance | | +| hash_flow.rb:1012:14:1012:24 | call to taint | hash_flow.rb:1012:9:1012:45 | call to [] [element :a] | provenance | | +| hash_flow.rb:1013:5:1013:5 | h [element :a] | hash_flow.rb:1013:15:1013:15 | k | provenance | | +| hash_flow.rb:1013:5:1013:5 | h [element :a] | hash_flow.rb:1013:18:1013:18 | v | provenance | | +| hash_flow.rb:1013:15:1013:15 | k | hash_flow.rb:1015:14:1015:14 | k | provenance | | +| hash_flow.rb:1013:18:1013:18 | v | hash_flow.rb:1014:14:1014:14 | v | provenance | | nodes | hash_flow.rb:10:5:10:8 | hash [element 0] | semmle.label | hash [element 0] | | hash_flow.rb:10:5:10:8 | hash [element :a] | semmle.label | hash [element :a] | @@ -2251,6 +2264,21 @@ nodes | hash_flow.rb:996:14:996:19 | ...[...] | semmle.label | ...[...] | | hash_flow.rb:998:14:998:15 | h2 [element :b] | semmle.label | h2 [element :b] | | hash_flow.rb:998:14:998:18 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:1006:5:1006:5 | [post] h [element] | semmle.label | [post] h [element] | +| hash_flow.rb:1006:14:1006:24 | call to taint | semmle.label | call to taint | +| hash_flow.rb:1007:5:1007:8 | keys [element] | semmle.label | keys [element] | +| hash_flow.rb:1007:12:1007:12 | h [element] | semmle.label | h [element] | +| hash_flow.rb:1007:12:1007:17 | call to keys [element] | semmle.label | call to keys [element] | +| hash_flow.rb:1008:10:1008:13 | keys [element] | semmle.label | keys [element] | +| hash_flow.rb:1008:10:1008:17 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:1012:5:1012:5 | h [element :a] | semmle.label | h [element :a] | +| hash_flow.rb:1012:9:1012:45 | call to [] [element :a] | semmle.label | call to [] [element :a] | +| hash_flow.rb:1012:14:1012:24 | call to taint | semmle.label | call to taint | +| hash_flow.rb:1013:5:1013:5 | h [element :a] | semmle.label | h [element :a] | +| hash_flow.rb:1013:15:1013:15 | k | semmle.label | k | +| hash_flow.rb:1013:18:1013:18 | v | semmle.label | v | +| hash_flow.rb:1014:14:1014:14 | v | semmle.label | v | +| hash_flow.rb:1015:14:1015:14 | k | semmle.label | k | subpaths hashLiteral | hash_flow.rb:10:12:21:5 | call to [] | @@ -2324,6 +2352,8 @@ hashLiteral | hash_flow.rb:946:13:950:5 | call to [] | | hash_flow.rb:971:9:971:38 | ...[...] | | hash_flow.rb:994:14:994:47 | ...[...] | +| hash_flow.rb:1005:9:1005:10 | call to [] | +| hash_flow.rb:1012:9:1012:45 | call to [] | #select | hash_flow.rb:22:10:22:17 | ...[...] | hash_flow.rb:11:15:11:24 | call to taint | hash_flow.rb:22:10:22:17 | ...[...] | $@ | hash_flow.rb:11:15:11:24 | call to taint | call to taint | | hash_flow.rb:24:10:24:17 | ...[...] | hash_flow.rb:13:12:13:21 | call to taint | hash_flow.rb:24:10:24:17 | ...[...] | $@ | hash_flow.rb:13:12:13:21 | call to taint | call to taint | @@ -2569,3 +2599,6 @@ hashLiteral | hash_flow.rb:975:10:975:13 | ...[...] | hash_flow.rb:971:23:971:31 | call to taint | hash_flow.rb:975:10:975:13 | ...[...] | $@ | hash_flow.rb:971:23:971:31 | call to taint | call to taint | | hash_flow.rb:996:14:996:19 | ...[...] | hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:996:14:996:19 | ...[...] | $@ | hash_flow.rb:994:30:994:40 | call to taint | call to taint | | hash_flow.rb:998:14:998:18 | ...[...] | hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:998:14:998:18 | ...[...] | $@ | hash_flow.rb:994:30:994:40 | call to taint | call to taint | +| hash_flow.rb:1008:10:1008:17 | ...[...] | hash_flow.rb:1006:14:1006:24 | call to taint | hash_flow.rb:1008:10:1008:17 | ...[...] | $@ | hash_flow.rb:1006:14:1006:24 | call to taint | call to taint | +| hash_flow.rb:1014:14:1014:14 | v | hash_flow.rb:1012:14:1012:24 | call to taint | hash_flow.rb:1014:14:1014:14 | v | $@ | hash_flow.rb:1012:14:1012:24 | call to taint | call to taint | +| hash_flow.rb:1015:14:1015:14 | k | hash_flow.rb:1012:14:1012:24 | call to taint | hash_flow.rb:1015:14:1015:14 | k | $@ | hash_flow.rb:1012:14:1012:24 | call to taint | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb b/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb index 14c2504f959f..b88f8c3a4d49 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb @@ -1000,3 +1000,18 @@ def m54(i) end M54.new.m54(:b) + +def m55 + h = {} + h[f()] = taint(55.1) + keys = h.keys + sink(keys[:a]) # $ hasValueFlow=55.1 +end + +def m56 + h = { a: taint(56.1), taint(56.2) => :b } + h.map do |k, v| + sink(v) # $ hasValueFlow=56.1 + sink(k) # $ MISSING: hasValueFlow=56.2 SPURIOUS: hasValueFlow=56.1 + end +end From dde148ee7ef4571b3b28b583d3cc76cea8dd377b Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Tue, 19 Mar 2024 08:40:30 +0000 Subject: [PATCH 345/731] Ruby: add changenote --- ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md diff --git a/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md b/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md new file mode 100644 index 000000000000..963479568a0b --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Data flow is now tracked through `ActiveRecord` scopes. From 0c3d9f75f4a48308ee2b40043d541ceee8ce9227 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 09:41:58 +0000 Subject: [PATCH 346/731] C++: Add change note. --- .../2024-03-19-predicates-for-switches-as-guards.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md new file mode 100644 index 000000000000..3dde8805599f --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md @@ -0,0 +1,5 @@ +--- +category: feature +--- +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. \ No newline at end of file From cee6f003fd58c64916c629f7d8b27b870d6f78c5 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 19 Mar 2024 10:01:05 +0100 Subject: [PATCH 347/731] Tree-sitter: Split up `ast_node_info` table into two tables --- .../src/extractor/mod.rs | 59 +++++++++-------- .../src/generator/mod.rs | 64 ++++++++++++------- .../src/generator/ql_gen.rs | 27 ++++---- 3 files changed, 86 insertions(+), 64 deletions(-) diff --git a/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 0d493ebd9e1a..d26e5e45975e 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -209,10 +209,10 @@ struct Visitor<'a> { diagnostics_writer: &'a mut diagnostics::LogWriter, /// A trap::Writer to accumulate trap entries trap_writer: &'a mut trap::Writer, - /// A counter for top-level child nodes - toplevel_child_counter: usize, - /// Language-specific name of the AST info table - ast_node_info_table_name: String, + /// Language-specific name of the AST location table + ast_node_location_table_name: String, + /// Language-specific name of the AST parent table + ast_node_parent_table_name: String, /// Language-specific name of the tokeninfo table tokeninfo_table_name: String, /// A lookup table from type name to node types @@ -242,8 +242,8 @@ impl<'a> Visitor<'a> { source, diagnostics_writer, trap_writer, - toplevel_child_counter: 0, - ast_node_info_table_name: format!("{}_ast_node_info", language_prefix), + ast_node_location_table_name: format!("{}_ast_node_location", language_prefix), + ast_node_parent_table_name: format!("{}_ast_node_parent", language_prefix), tokeninfo_table_name: format!("{}_tokeninfo", language_prefix), schema, stack: Vec::new(), @@ -342,27 +342,29 @@ impl<'a> Visitor<'a> { }) .unwrap(); let mut valid = true; - let (parent_id, parent_index) = match self.stack.last_mut() { + let parent_info = match self.stack.last_mut() { Some(p) if !node.is_extra() => { p.1 += 1; - (p.0, p.1 - 1) - } - _ => { - self.toplevel_child_counter += 1; - (self.file_label, self.toplevel_child_counter - 1) + Some((p.0, p.1 - 1)) } + _ => None, }; match &table.kind { EntryKind::Token { kind_id, .. } => { self.trap_writer.add_tuple( - &self.ast_node_info_table_name, - vec![ - trap::Arg::Label(id), - trap::Arg::Label(parent_id), - trap::Arg::Int(parent_index), - trap::Arg::Label(loc_label), - ], + &self.ast_node_location_table_name, + vec![trap::Arg::Label(id), trap::Arg::Label(loc_label)], ); + if let Some((parent_id, parent_index)) = parent_info { + self.trap_writer.add_tuple( + &self.ast_node_parent_table_name, + vec![ + trap::Arg::Label(id), + trap::Arg::Label(parent_id), + trap::Arg::Int(parent_index), + ], + ); + }; self.trap_writer.add_tuple( &self.tokeninfo_table_name, vec![ @@ -378,14 +380,19 @@ impl<'a> Visitor<'a> { } => { if let Some(args) = self.complex_node(&node, fields, &child_nodes, id) { self.trap_writer.add_tuple( - &self.ast_node_info_table_name, - vec![ - trap::Arg::Label(id), - trap::Arg::Label(parent_id), - trap::Arg::Int(parent_index), - trap::Arg::Label(loc_label), - ], + &self.ast_node_location_table_name, + vec![trap::Arg::Label(id), trap::Arg::Label(loc_label)], ); + if let Some((parent_id, parent_index)) = parent_info { + self.trap_writer.add_tuple( + &self.ast_node_parent_table_name, + vec![ + trap::Arg::Label(id), + trap::Arg::Label(parent_id), + trap::Arg::Int(parent_index), + ], + ); + }; let mut all_args = vec![trap::Arg::Label(id)]; all_args.extend(args); self.trap_writer.add_tuple(table_name, all_args); diff --git a/shared/tree-sitter-extractor/src/generator/mod.rs b/shared/tree-sitter-extractor/src/generator/mod.rs index 0d01deae57fa..ea41f3190e61 100644 --- a/shared/tree-sitter-extractor/src/generator/mod.rs +++ b/shared/tree-sitter-extractor/src/generator/mod.rs @@ -52,8 +52,8 @@ pub fn generate( for language in languages { let prefix = node_types::to_snake_case(&language.name); let ast_node_name = format!("{}_ast_node", &prefix); - let node_info_table_name = format!("{}_ast_node_info", &prefix); - let ast_node_parent_name = format!("{}_ast_node_parent", &prefix); + let node_location_table_name = format!("{}_ast_node_location", &prefix); + let node_parent_table_name = format!("{}_ast_node_parent", &prefix); let token_name = format!("{}_token", &prefix); let tokeninfo_name = format!("{}_tokeninfo", &prefix); let reserved_word_name = format!("{}_reserved_word", &prefix); @@ -72,13 +72,12 @@ pub fn generate( name: &ast_node_name, members: ast_node_members, }), - dbscheme::Entry::Union(dbscheme::Union { - name: &ast_node_parent_name, - members: [&ast_node_name, "file"].iter().cloned().collect(), - }), - dbscheme::Entry::Table(create_ast_node_info_table( - &node_info_table_name, - &ast_node_parent_name, + dbscheme::Entry::Table(create_ast_node_location_table( + &node_location_table_name, + &ast_node_name, + )), + dbscheme::Entry::Table(create_ast_node_parent_table( + &node_parent_table_name, &ast_node_name, )), ], @@ -87,7 +86,8 @@ pub fn generate( let mut body = vec![ ql::TopLevel::Class(ql_gen::create_ast_node_class( &ast_node_name, - &node_info_table_name, + &node_location_table_name, + &node_parent_table_name, )), ql::TopLevel::Class(ql_gen::create_token_class(&token_name, &tokeninfo_name)), ql::TopLevel::Class(ql_gen::create_reserved_word_class(&reserved_word_name)), @@ -335,16 +335,13 @@ fn convert_nodes( (entries, ast_node_members, token_kinds) } -/// Creates a dbscheme table specifying the parent node and location for each -/// AST node. +/// Creates a dbscheme table specifying the location for each AST node. /// /// # Arguments /// - `name` - the name of the table to create. -/// - `parent_name` - the name of the parent type. /// - `ast_node_name` - the name of the node child type. -fn create_ast_node_info_table<'a>( +fn create_ast_node_location_table<'a>( name: &'a str, - parent_name: &'a str, ast_node_name: &'a str, ) -> dbscheme::Table<'a> { dbscheme::Table { @@ -358,24 +355,45 @@ fn create_ast_node_info_table<'a>( ql_type_is_ref: true, }, dbscheme::Column { - db_type: dbscheme::DbColumnType::Int, - name: "parent", unique: false, - ql_type: ql::Type::At(parent_name), + db_type: dbscheme::DbColumnType::Int, + name: "loc", + ql_type: ql::Type::At("location_default"), ql_type_is_ref: true, }, + ], + keysets: None, + } +} + +/// Creates a dbscheme table specifying the parent node for each AST node. +/// +/// # Arguments +/// - `name` - the name of the table to create. +/// - `ast_node_name` - the name of the node child type. +fn create_ast_node_parent_table<'a>(name: &'a str, ast_node_name: &'a str) -> dbscheme::Table<'a> { + dbscheme::Table { + name, + columns: vec![ dbscheme::Column { - unique: false, db_type: dbscheme::DbColumnType::Int, - name: "parent_index", - ql_type: ql::Type::Int, + name: "node", + unique: true, + ql_type: ql::Type::At(ast_node_name), + ql_type_is_ref: true, + }, + dbscheme::Column { + db_type: dbscheme::DbColumnType::Int, + name: "parent", + unique: false, + ql_type: ql::Type::At(ast_node_name), ql_type_is_ref: true, }, dbscheme::Column { unique: false, db_type: dbscheme::DbColumnType::Int, - name: "loc", - ql_type: ql::Type::At("location_default"), + name: "parent_index", + ql_type: ql::Type::Int, ql_type_is_ref: true, }, ], diff --git a/shared/tree-sitter-extractor/src/generator/ql_gen.rs b/shared/tree-sitter-extractor/src/generator/ql_gen.rs index 4407cbdd32eb..919ff43af428 100644 --- a/shared/tree-sitter-extractor/src/generator/ql_gen.rs +++ b/shared/tree-sitter-extractor/src/generator/ql_gen.rs @@ -4,7 +4,11 @@ use crate::{generator::ql, node_types}; /// Creates the hard-coded `AstNode` class that acts as a supertype of all /// classes we generate. -pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) -> ql::Class<'a> { +pub fn create_ast_node_class<'a>( + ast_node: &'a str, + node_location_table: &'a str, + node_parent_table: &'a str, +) -> ql::Class<'a> { // Default implementation of `toString` calls `this.getAPrimaryQlClass()` let to_string = ql::Predicate { qldoc: Some(String::from( @@ -32,13 +36,8 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) -> return_type: Some(ql::Type::Normal("L::Location")), formal_parameters: vec![], body: ql::Expression::Pred( - node_info_table, - vec![ - ql::Expression::Var("this"), - ql::Expression::Var("_"), // parent - ql::Expression::Var("_"), // parent index - ql::Expression::Var("result"), // location - ], + node_location_table, + vec![ql::Expression::Var("this"), ql::Expression::Var("result")], ), }; let get_a_field_or_child = create_none_predicate( @@ -55,12 +54,11 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) -> return_type: Some(ql::Type::Normal("AstNode")), formal_parameters: vec![], body: ql::Expression::Pred( - node_info_table, + node_parent_table, vec![ ql::Expression::Var("this"), ql::Expression::Var("result"), - ql::Expression::Var("_"), // parent index - ql::Expression::Var("_"), // location + ql::Expression::Var("_"), ], ), }; @@ -74,12 +72,11 @@ pub fn create_ast_node_class<'a>(ast_node: &'a str, node_info_table: &'a str) -> return_type: Some(ql::Type::Int), formal_parameters: vec![], body: ql::Expression::Pred( - node_info_table, + node_parent_table, vec![ ql::Expression::Var("this"), - ql::Expression::Var("_"), // parent - ql::Expression::Var("result"), // parent index - ql::Expression::Var("_"), // location + ql::Expression::Var("_"), + ql::Expression::Var("result"), ], ), }; From fd49871b9a69a08ca35dd6da1d0fc0235c971b73 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Fri, 15 Mar 2024 15:13:34 +0100 Subject: [PATCH 348/731] C++: Handle destructors of temporaries with extended lifetimes --- .../library-tests/ir/ir/PrintAST.expected | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 3b369651304b..87179ad8bf8a 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -1883,6 +1883,12 @@ destructors_for_temps.cpp: # 30| Type = [Class] ClassWithDestructor2 # 30| ValueCategory = lvalue # 31| getStmt(1): [ReturnStmt] return ... +# 31| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 31| Type = [VoidType] void +# 31| ValueCategory = prvalue +# 31| getQualifier(): [ReuseExpr] reuse of temporary object +# 31| Type = [Class] ClassWithDestructor2 +# 31| ValueCategory = xvalue # 33| [TopLevelFunction] void temp_test4() # 33| <params>: # 33| getEntryPoint(): [BlockStmt] { ... } @@ -1914,6 +1920,12 @@ destructors_for_temps.cpp: # 36| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 # 36| Type = [VoidType] void # 36| ValueCategory = prvalue +# 36| getQualifier(): [ReuseExpr] reuse of temporary object +# 36| Type = [Class] ClassWithDestructor2 +# 36| ValueCategory = xvalue +# 36| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor2 +# 36| Type = [VoidType] void +# 36| ValueCategory = prvalue # 36| getQualifier(): [VariableAccess] c # 36| Type = [Class] ClassWithDestructor2 # 36| ValueCategory = lvalue @@ -11743,6 +11755,12 @@ ir.cpp: # 1426| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 1426| Type = [VoidType] void # 1426| ValueCategory = prvalue +# 1426| getQualifier(): [ReuseExpr] reuse of temporary object +# 1426| Type = [Struct] String +# 1426| ValueCategory = xvalue +# 1426| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 1426| Type = [VoidType] void +# 1426| ValueCategory = prvalue # 1426| getQualifier(): [VariableAccess] s # 1426| Type = [Struct] String # 1426| ValueCategory = lvalue @@ -11838,6 +11856,12 @@ ir.cpp: # 1438| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only # 1438| Type = [VoidType] void # 1438| ValueCategory = prvalue +# 1438| getQualifier(): [ReuseExpr] reuse of temporary object +# 1438| Type = [Class] destructor_only +# 1438| ValueCategory = xvalue +# 1438| getImplicitDestructorCall(2): [DestructorCall] call to ~destructor_only +# 1438| Type = [VoidType] void +# 1438| ValueCategory = prvalue # 1438| getQualifier(): [VariableAccess] d # 1438| Type = [Class] destructor_only # 1438| ValueCategory = lvalue From d47e2690b89f69e540e5f1c1f39e558c75af22d4 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Mon, 18 Mar 2024 16:14:03 +0100 Subject: [PATCH 349/731] C++: Update test results after extractor changes --- .../test/library-tests/ir/ir/PrintAST.expected | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 87179ad8bf8a..669ec52376f5 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -1781,6 +1781,12 @@ destructors_for_temps.cpp: # 15| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 # 15| Type = [VoidType] void # 15| ValueCategory = prvalue +# 15| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 15| Type = [VoidType] void +# 15| ValueCategory = prvalue +# 15| getQualifier(): [ReuseExpr] reuse of temporary object +# 15| Type = [Class] ClassWithDestructor2 +# 15| ValueCategory = xvalue # 15| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 15| Type = [Class] ClassWithDestructor2 # 15| ValueCategory = prvalue(load) @@ -1804,6 +1810,12 @@ destructors_for_temps.cpp: # 16| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 16| Type = [Class] ClassWithDestructor2 # 16| ValueCategory = prvalue(load) +# 16| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 16| Type = [VoidType] void +# 16| ValueCategory = prvalue +# 16| getQualifier(): [ReuseExpr] reuse of temporary object +# 16| Type = [Class] ClassWithDestructor2 +# 16| ValueCategory = xvalue # 17| getStmt(2): [ReturnStmt] return ... # 17| getExpr(): [FunctionCall] call to get_x # 17| Type = [PlainCharType] char @@ -18145,6 +18157,12 @@ ir.cpp: # 2293| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 2293| Type = [PointerType] const char * # 2293| ValueCategory = prvalue +# 2293| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2293| Type = [VoidType] void +# 2293| ValueCategory = prvalue +# 2293| getQualifier(): [ReuseExpr] reuse of temporary object +# 2293| Type = [Struct] String +# 2293| ValueCategory = xvalue # 2293| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 2293| Type = [Struct] String # 2293| ValueCategory = lvalue From 350b239ed62d5747195bb68c73239f36acbcbfd0 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 10:29:43 +0000 Subject: [PATCH 350/731] C++: Fix cartesian product in 'simple_comparison_eq'. --- cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index ddc380c304f7..ab67d77f5cd0 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -722,10 +722,12 @@ private predicate simple_comparison_eq( /** Rearrange various simple comparisons into `op == k` form. */ private predicate simple_comparison_eq(Instruction test, Operand op, int k, AbstractValue value) { - exists(SwitchInstruction switch | + exists(SwitchInstruction switch, CaseEdge case | test = switch.getExpression() and op.getDef() = test and - value.(MatchValue).getCase().getValue().toInt() = k + case = value.(MatchValue).getCase() and + exists(switch.getSuccessor(case)) and + case.getValue().toInt() = k ) } From d7afd7b2e1d2797528aaf9322cc997b76cb61d23 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 10:54:35 +0000 Subject: [PATCH 351/731] C++: Accept test changes. --- .../library-tests/controlflow/guards/GuardsCompare.expected | 6 ------ 1 file changed, 6 deletions(-) diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected index 5f714676b5c8..1057e8e10466 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected @@ -58,18 +58,12 @@ | 61 | i == 0 when i is true | | 61 | i == 1 when i is true | | 61 | i == 2 when i is true | -| 74 | i == 0 when i is true | -| 74 | i == 1 when i is true | -| 74 | i == 2 when i is true | | 75 | 0 != x+0 when ... == ... is false | | 75 | 0 == x+0 when ... == ... is true | | 75 | x != 0 when ... == ... is false | | 75 | x != 0+0 when ... == ... is false | | 75 | x == 0 when ... == ... is true | | 75 | x == 0+0 when ... == ... is true | -| 84 | i == 0 when i is true | -| 84 | i == 1 when i is true | -| 84 | i == 2 when i is true | | 85 | 0 != x+0 when ... == ... is false | | 85 | 0 != y+0 when ... != ... is true | | 85 | 0 != y+0 when ... && ... is true | From e16e1c7e83f4b71ec670ab19b976661988c26067 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 11:26:32 +0000 Subject: [PATCH 352/731] C++: Add tests. --- .../library-tests/ir/ir/PrintAST.expected | 780 ++++++++++++++++++ .../library-tests/ir/ir/aliased_ir.expected | 28 + cpp/ql/test/library-tests/ir/ir/ir.cpp | 15 + .../ir/ir/operand_locations.expected | 14 + .../test/library-tests/ir/ir/raw_ir.expected | 26 + 5 files changed, 863 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 87179ad8bf8a..11ca89a3b454 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -18670,6 +18670,786 @@ ir.cpp: # 2376| getExpr(): [FunctionAccess] VoidToInt # 2376| Type = [RoutineType] ..()(..) # 2376| ValueCategory = prvalue +# 2381| [TopLevelFunction] int small_operation_should_not_be_constant_folded() +# 2381| <params>: +# 2381| getEntryPoint(): [BlockStmt] { ... } +# 2382| getStmt(0): [ReturnStmt] return ... +# 2382| getExpr(): [AddExpr] ... + ... +# 2382| Type = [IntType] int +# 2382| Value = [AddExpr] 2 +# 2382| ValueCategory = prvalue +# 2382| getLeftOperand(): [Literal] 1 +# 2382| Type = [IntType] int +# 2382| Value = [Literal] 1 +# 2382| ValueCategory = prvalue +# 2382| getRightOperand(): [Literal] 1 +# 2382| Type = [IntType] int +# 2382| Value = [Literal] 1 +# 2382| ValueCategory = prvalue +# 2392| [TopLevelFunction] int large_operation_should_be_constant_folded() +# 2392| <params>: +# 2392| getEntryPoint(): [BlockStmt] { ... } +# 2393| getStmt(0): [ReturnStmt] return ... +# 2393| getExpr(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 64 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 32 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 32 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| Type = [IntType] int +# 2393| Value = [AddExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand(): [Literal] 1 +# 2393| Type = [IntType] int +# 2393| Value = [Literal] 1 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 2 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 4 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 8 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 16 +# 2393| ValueCategory = prvalue +# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 32 +# 2393| ValueCategory = prvalue +# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 32 +# 2393| ValueCategory = prvalue +# 2393| getExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 2393| Type = [IntType] int +# 2393| Value = [ParenthesisExpr] 64 +# 2393| ValueCategory = prvalue perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) # 4| <params>: diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index a5a095787505..f06fefabf3c6 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -15135,6 +15135,34 @@ ir.cpp: # 2374| v2374_7(void) = AliasedUse : m2374_3 # 2374| v2374_8(void) = ExitFunction : +# 2381| int small_operation_should_not_be_constant_folded() +# 2381| Block 0 +# 2381| v2381_1(void) = EnterFunction : +# 2381| m2381_2(unknown) = AliasedDefinition : +# 2381| m2381_3(unknown) = InitializeNonLocal : +# 2381| m2381_4(unknown) = Chi : total:m2381_2, partial:m2381_3 +# 2382| r2382_1(glval<int>) = VariableAddress[#return] : +# 2382| r2382_2(int) = Constant[2] : +# 2382| m2382_3(int) = Store[#return] : &:r2382_1, r2382_2 +# 2381| r2381_5(glval<int>) = VariableAddress[#return] : +# 2381| v2381_6(void) = ReturnValue : &:r2381_5, m2382_3 +# 2381| v2381_7(void) = AliasedUse : m2381_3 +# 2381| v2381_8(void) = ExitFunction : + +# 2392| int large_operation_should_be_constant_folded() +# 2392| Block 0 +# 2392| v2392_1(void) = EnterFunction : +# 2392| m2392_2(unknown) = AliasedDefinition : +# 2392| m2392_3(unknown) = InitializeNonLocal : +# 2392| m2392_4(unknown) = Chi : total:m2392_2, partial:m2392_3 +# 2393| r2393_1(glval<int>) = VariableAddress[#return] : +# 2393| r2393_2(int) = Constant[64] : +# 2393| m2393_3(int) = Store[#return] : &:r2393_1, r2393_2 +# 2392| r2392_5(glval<int>) = VariableAddress[#return] : +# 2392| v2392_6(void) = ReturnValue : &:r2392_5, m2393_3 +# 2392| v2392_7(void) = AliasedUse : m2392_3 +# 2392| v2392_8(void) = ExitFunction : + perf-regression.cpp: # 6| void Big::Big() # 6| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 492f8c71c119..a195dcd5aa42 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2378,4 +2378,19 @@ namespace return_routine_type { } +int small_operation_should_not_be_constant_folded() { + return 1 + 1; +} + +#define BINOP2(x) (x + x) +#define BINOP4(x) (BINOP2(x) + BINOP2(x)) +#define BINOP8(x) (BINOP4(x) + BINOP4(x)) +#define BINOP16(x) (BINOP8(x) + BINOP8(x)) +#define BINOP32(x) (BINOP16(x) + BINOP16(x)) +#define BINOP64(x) (BINOP32(x) + BINOP32(x)) + +int large_operation_should_be_constant_folded() { + return BINOP64(1); +} + // semmle-extractor-options: -std=c++20 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index ad4cfdb1e7cd..778f87f9de94 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -12530,6 +12530,20 @@ | ir.cpp:2374:32:2374:47 | SideEffect | m2374_3 | | ir.cpp:2376:9:2376:44 | Address | &:r2376_1 | | ir.cpp:2376:16:2376:43 | StoreValue | r2376_2 | +| ir.cpp:2381:5:2381:49 | Address | &:r2381_5 | +| ir.cpp:2381:5:2381:49 | ChiPartial | partial:m2381_3 | +| ir.cpp:2381:5:2381:49 | ChiTotal | total:m2381_2 | +| ir.cpp:2381:5:2381:49 | Load | m2382_3 | +| ir.cpp:2381:5:2381:49 | SideEffect | m2381_3 | +| ir.cpp:2382:5:2382:17 | Address | &:r2382_1 | +| ir.cpp:2382:12:2382:16 | StoreValue | r2382_2 | +| ir.cpp:2392:5:2392:45 | Address | &:r2392_5 | +| ir.cpp:2392:5:2392:45 | ChiPartial | partial:m2392_3 | +| ir.cpp:2392:5:2392:45 | ChiTotal | total:m2392_2 | +| ir.cpp:2392:5:2392:45 | Load | m2393_3 | +| ir.cpp:2392:5:2392:45 | SideEffect | m2392_3 | +| ir.cpp:2393:5:2393:22 | Address | &:r2393_1 | +| ir.cpp:2393:12:2393:21 | StoreValue | r2393_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 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 0c42f3d2af6d..ebe05f70d183 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -13977,6 +13977,32 @@ ir.cpp: # 2374| v2374_6(void) = AliasedUse : ~m? # 2374| v2374_7(void) = ExitFunction : +# 2381| int small_operation_should_not_be_constant_folded() +# 2381| Block 0 +# 2381| v2381_1(void) = EnterFunction : +# 2381| mu2381_2(unknown) = AliasedDefinition : +# 2381| mu2381_3(unknown) = InitializeNonLocal : +# 2382| r2382_1(glval<int>) = VariableAddress[#return] : +# 2382| r2382_2(int) = Constant[2] : +# 2382| mu2382_3(int) = Store[#return] : &:r2382_1, r2382_2 +# 2381| r2381_4(glval<int>) = VariableAddress[#return] : +# 2381| v2381_5(void) = ReturnValue : &:r2381_4, ~m? +# 2381| v2381_6(void) = AliasedUse : ~m? +# 2381| v2381_7(void) = ExitFunction : + +# 2392| int large_operation_should_be_constant_folded() +# 2392| Block 0 +# 2392| v2392_1(void) = EnterFunction : +# 2392| mu2392_2(unknown) = AliasedDefinition : +# 2392| mu2392_3(unknown) = InitializeNonLocal : +# 2393| r2393_1(glval<int>) = VariableAddress[#return] : +# 2393| r2393_2(int) = Constant[64] : +# 2393| mu2393_3(int) = Store[#return] : &:r2393_1, r2393_2 +# 2392| r2392_4(glval<int>) = VariableAddress[#return] : +# 2392| v2392_5(void) = ReturnValue : &:r2392_4, ~m? +# 2392| v2392_6(void) = AliasedUse : ~m? +# 2392| v2392_7(void) = ExitFunction : + perf-regression.cpp: # 6| void Big::Big() # 6| Block 0 From 4d3076ae7e94aa3cac7b37b30b8e8aad50c3640d Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 11:30:40 +0000 Subject: [PATCH 353/731] C++: Don't constant fold small binary operations. --- .../raw/internal/TranslatedElement.qll | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 81c704edb8b7..e96959f5a687 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -40,12 +40,28 @@ IRTempVariable getIRTempVariable(Locatable ast, TempVariableTag tag) { result.getTag() = tag } +private Expr getAnOperand(BinaryOperation binOp) { result = binOp.getAnOperand() } + +private int getNumberOfBinaryOperands(BinaryOperation binOp) { + result = count(getAnOperand*(binOp)) +} + /** * Holds if `expr` is a constant of a type that can be replaced directly with * its value in the IR. This does not include address constants as we have no * means to express those as QL values. */ -predicate isIRConstant(Expr expr) { exists(expr.getValue()) } +predicate isIRConstant(Expr expr) { + exists(expr.getValue()) and + // We avoid constant folding binary operations since it's often useful to + // mark one of those as a source in dataflow, and if the operation is + // constant folded it's not possible to mark its operands as a source (or + // sink). + // But to avoid creating an outrageous amount of IR from very large + // constant expressions we fall back to constant folding if the operation + // has more than 50 operands (i.e., 1 + 2 + 3 + 4 + ... + 50) + if expr instanceof BinaryOperation then getNumberOfBinaryOperands(expr) > 50 else any() +} // Pulled out for performance. See // https://github.com/github/codeql-coreql-team/issues/1044. From 1af1ba48a9435c37d03b47b0927c8d34226b63ca Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 11:30:51 +0000 Subject: [PATCH 354/731] C++: Accept test changes. --- .../library-tests/ir/ir/aliased_ir.expected | 62 ++++++++++------ .../ir/ir/operand_locations.expected | 36 ++++++---- .../test/library-tests/ir/ir/raw_ir.expected | 71 +++++++++++++------ 3 files changed, 117 insertions(+), 52 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index f06fefabf3c6..2efc51f1bcd8 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -1457,13 +1457,15 @@ ir.cpp: # 43| m43_3(unknown) = InitializeNonLocal : # 43| m43_4(unknown) = Chi : total:m43_2, partial:m43_3 # 44| r44_1(glval<int>) = VariableAddress[x] : -# 44| r44_2(int) = Constant[17] : -# 44| m44_3(int) = Store[x] : &:r44_1, r44_2 +# 44| r44_2(int) = Constant[5] : +# 44| r44_3(int) = Constant[12] : +# 44| r44_4(int) = Add : r44_2, r44_3 +# 44| m44_5(int) = Store[x] : &:r44_1, r44_4 # 45| r45_1(glval<short>) = VariableAddress[y] : # 45| r45_2(short) = Constant[7] : # 45| m45_3(short) = Store[y] : &:r45_1, r45_2 # 46| r46_1(glval<int>) = VariableAddress[x] : -# 46| r46_2(int) = Load[x] : &:r46_1, m44_3 +# 46| r46_2(int) = Load[x] : &:r46_1, m44_5 # 46| r46_3(glval<short>) = VariableAddress[y] : # 46| r46_4(short) = Load[y] : &:r46_3, m45_3 # 46| r46_5(int) = Convert : r46_4 @@ -1472,7 +1474,7 @@ ir.cpp: # 46| r46_8(glval<short>) = VariableAddress[y] : # 46| m46_9(short) = Store[y] : &:r46_8, r46_7 # 47| r47_1(glval<int>) = VariableAddress[x] : -# 47| r47_2(int) = Load[x] : &:r47_1, m44_3 +# 47| r47_2(int) = Load[x] : &:r47_1, m44_5 # 47| r47_3(glval<short>) = VariableAddress[y] : # 47| r47_4(short) = Load[y] : &:r47_3, m46_9 # 47| r47_5(int) = Convert : r47_4 @@ -6102,14 +6104,30 @@ ir.cpp: # 913| m913_6(int) = InitializeParameter[x] : &:r913_5 # 914| r914_1(glval<bool>) = VariableAddress[a] : # 914| r914_2(bool) = Constant[1] : -# 914| m914_3(bool) = Store[a] : &:r914_1, r914_2 -# 915| r915_1(glval<int>) = VariableAddress[b] : -# 915| r915_2(bool) = Constant[1] : -# 915| v915_3(void) = ConditionalBranch : r915_2 -#-----| False -> Block 2 +# 914| v914_3(void) = ConditionalBranch : r914_2 +#-----| False -> Block 4 +#-----| True -> Block 2 + +# 914| Block 1 +# 914| r914_4(glval<bool>) = VariableAddress[#temp914:12] : +# 914| r914_5(bool) = Constant[1] : +# 914| m914_6(bool) = Store[#temp914:12] : &:r914_4, r914_5 +# 914| r914_7(glval<bool>) = VariableAddress[#temp914:12] : +# 914| r914_8(bool) = Load[#temp914:12] : &:r914_7, m914_6 +# 914| m914_9(bool) = Store[a] : &:r914_1, r914_8 +# 915| r915_1(glval<int>) = VariableAddress[b] : +# 915| r915_2(bool) = Constant[1] : +# 915| v915_3(void) = ConditionalBranch : r915_2 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 914| Block 2 +# 914| r914_10(bool) = Constant[1] : +# 914| v914_11(void) = ConditionalBranch : r914_10 +#-----| False -> Block 4 #-----| True -> Block 1 -# 915| Block 1 +# 915| Block 3 # 915| r915_4(glval<int>) = VariableAddress[x] : # 915| r915_5(int) = Load[x] : &:r915_4, m913_6 # 915| r915_6(glval<int>) = VariableAddress[#temp915:11] : @@ -6122,7 +6140,7 @@ ir.cpp: # 913| v913_8(void) = AliasedUse : m913_3 # 913| v913_9(void) = ExitFunction : -# 913| Block 2 +# 913| Block 4 # 913| v913_10(void) = Unreached : # 949| void OperatorNew() @@ -7718,15 +7736,17 @@ ir.cpp: # 1215| r1215_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1215| r1215_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_4, m1214_8 # 1215| r1215_6(int) = Constant[3] : -# 1215| r1215_7(int) = Constant[2] : -# 1215| r1215_8(int) = Constant[1] : -# 1215| r1215_9(int) = Constant[0] : -# 1215| r1215_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_6, 3:r1215_7, 4:r1215_8, 5:r1215_9 -# 1215| m1215_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_10 +# 1215| r1215_7(int) = Constant[0] : +# 1215| r1215_8(int) = Add : r1215_6, r1215_7 +# 1215| r1215_9(int) = Constant[2] : +# 1215| r1215_10(int) = Constant[1] : +# 1215| r1215_11(int) = Constant[0] : +# 1215| r1215_12(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_8, 3:r1215_9, 4:r1215_10, 5:r1215_11 +# 1215| m1215_13(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_12 # 1216| r1216_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| r1216_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1216_1, m1214_8 # 1216| r1216_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1216| r1216_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1216_3, m1215_11 +# 1216| r1216_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1216_3, m1215_13 # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| m1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 @@ -15142,10 +15162,12 @@ ir.cpp: # 2381| m2381_3(unknown) = InitializeNonLocal : # 2381| m2381_4(unknown) = Chi : total:m2381_2, partial:m2381_3 # 2382| r2382_1(glval<int>) = VariableAddress[#return] : -# 2382| r2382_2(int) = Constant[2] : -# 2382| m2382_3(int) = Store[#return] : &:r2382_1, r2382_2 +# 2382| r2382_2(int) = Constant[1] : +# 2382| r2382_3(int) = Constant[1] : +# 2382| r2382_4(int) = Add : r2382_2, r2382_3 +# 2382| m2382_5(int) = Store[#return] : &:r2382_1, r2382_4 # 2381| r2381_5(glval<int>) = VariableAddress[#return] : -# 2381| v2381_6(void) = ReturnValue : &:r2381_5, m2382_3 +# 2381| v2381_6(void) = ReturnValue : &:r2381_5, m2382_5 # 2381| v2381_7(void) = AliasedUse : m2381_3 # 2381| v2381_8(void) = ExitFunction : diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 778f87f9de94..9b9c4888092b 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -1668,13 +1668,15 @@ | ir.cpp:43:6:43:8 | ChiTotal | total:m43_2 | | ir.cpp:43:6:43:8 | SideEffect | m43_3 | | ir.cpp:44:9:44:9 | Address | &:r44_1 | -| ir.cpp:44:13:44:18 | StoreValue | r44_2 | +| ir.cpp:44:13:44:13 | Left | r44_2 | +| ir.cpp:44:13:44:18 | StoreValue | r44_4 | +| ir.cpp:44:17:44:18 | Right | r44_3 | | ir.cpp:45:11:45:11 | Address | &:r45_1 | | ir.cpp:45:15:45:15 | StoreValue | r45_2 | | ir.cpp:46:5:46:5 | Address | &:r46_8 | | ir.cpp:46:9:46:9 | Address | &:r46_1 | | ir.cpp:46:9:46:9 | Left | r46_2 | -| ir.cpp:46:9:46:9 | Load | m44_3 | +| ir.cpp:46:9:46:9 | Load | m44_5 | | ir.cpp:46:9:46:13 | StoreValue | r46_7 | | ir.cpp:46:9:46:13 | Unary | r46_6 | | ir.cpp:46:13:46:13 | Address | &:r46_3 | @@ -1684,7 +1686,7 @@ | ir.cpp:47:5:47:5 | Address | &:r47_7 | | ir.cpp:47:9:47:9 | Address | &:r47_1 | | ir.cpp:47:9:47:9 | Left | r47_2 | -| ir.cpp:47:9:47:9 | Load | m44_3 | +| ir.cpp:47:9:47:9 | Load | m44_5 | | ir.cpp:47:9:47:13 | StoreValue | r47_6 | | ir.cpp:47:13:47:13 | Address | &:r47_3 | | ir.cpp:47:13:47:13 | Load | m46_9 | @@ -5227,7 +5229,13 @@ | ir.cpp:913:6:913:23 | SideEffect | m913_3 | | ir.cpp:913:29:913:29 | Address | &:r913_5 | | ir.cpp:914:8:914:8 | Address | &:r914_1 | -| ir.cpp:914:12:914:23 | StoreValue | r914_2 | +| ir.cpp:914:12:914:15 | Condition | r914_2 | +| ir.cpp:914:12:914:23 | Address | &:r914_4 | +| ir.cpp:914:12:914:23 | Address | &:r914_7 | +| ir.cpp:914:12:914:23 | Load | m914_6 | +| ir.cpp:914:12:914:23 | StoreValue | r914_5 | +| ir.cpp:914:12:914:23 | StoreValue | r914_8 | +| ir.cpp:914:20:914:23 | Condition | r914_10 | | ir.cpp:915:7:915:7 | Address | &:r915_1 | | ir.cpp:915:11:915:16 | Condition | r915_2 | | ir.cpp:915:11:915:24 | Address | &:r915_6 | @@ -6521,24 +6529,26 @@ | ir.cpp:1214:12:1214:12 | Load | m1213_7 | | ir.cpp:1214:12:1214:12 | StoreValue | r1214_2 | | ir.cpp:1215:18:1215:28 | Address | &:r1215_1 | -| ir.cpp:1215:32:1215:78 | Arg(2) | 2:r1215_6 | -| ir.cpp:1215:32:1215:78 | StoreValue | r1215_10 | +| ir.cpp:1215:32:1215:78 | Arg(2) | 2:r1215_8 | +| ir.cpp:1215:32:1215:78 | StoreValue | r1215_12 | | ir.cpp:1215:56:1215:58 | Address | &:r1215_2 | | ir.cpp:1215:56:1215:58 | Arg(0) | 0:r1215_3 | | ir.cpp:1215:56:1215:58 | Load | m1214_8 | | ir.cpp:1215:61:1215:63 | Address | &:r1215_4 | | ir.cpp:1215:61:1215:63 | Arg(1) | 1:r1215_5 | | ir.cpp:1215:61:1215:63 | Load | m1214_8 | -| ir.cpp:1215:71:1215:71 | Arg(3) | 3:r1215_7 | -| ir.cpp:1215:74:1215:74 | Arg(4) | 4:r1215_8 | -| ir.cpp:1215:77:1215:77 | Arg(5) | 5:r1215_9 | +| ir.cpp:1215:66:1215:66 | Left | r1215_6 | +| ir.cpp:1215:68:1215:68 | Right | r1215_7 | +| ir.cpp:1215:71:1215:71 | Arg(3) | 3:r1215_9 | +| ir.cpp:1215:74:1215:74 | Arg(4) | 4:r1215_10 | +| ir.cpp:1215:77:1215:77 | Arg(5) | 5:r1215_11 | | ir.cpp:1216:3:1216:5 | Address | &:r1216_6 | | ir.cpp:1216:9:1216:11 | Address | &:r1216_1 | | ir.cpp:1216:9:1216:11 | Left | r1216_2 | | ir.cpp:1216:9:1216:11 | Load | m1214_8 | | ir.cpp:1216:9:1216:25 | StoreValue | r1216_5 | | ir.cpp:1216:15:1216:25 | Address | &:r1216_3 | -| ir.cpp:1216:15:1216:25 | Load | m1215_11 | +| ir.cpp:1216:15:1216:25 | Load | m1215_13 | | ir.cpp:1216:15:1216:25 | Right | r1216_4 | | ir.cpp:1221:5:1221:21 | Address | &:r1221_7 | | ir.cpp:1221:5:1221:21 | ChiPartial | partial:m1221_3 | @@ -12533,10 +12543,12 @@ | ir.cpp:2381:5:2381:49 | Address | &:r2381_5 | | ir.cpp:2381:5:2381:49 | ChiPartial | partial:m2381_3 | | ir.cpp:2381:5:2381:49 | ChiTotal | total:m2381_2 | -| ir.cpp:2381:5:2381:49 | Load | m2382_3 | +| ir.cpp:2381:5:2381:49 | Load | m2382_5 | | ir.cpp:2381:5:2381:49 | SideEffect | m2381_3 | | ir.cpp:2382:5:2382:17 | Address | &:r2382_1 | -| ir.cpp:2382:12:2382:16 | StoreValue | r2382_2 | +| ir.cpp:2382:12:2382:12 | Left | r2382_2 | +| ir.cpp:2382:12:2382:16 | StoreValue | r2382_4 | +| ir.cpp:2382:16:2382:16 | Right | r2382_3 | | ir.cpp:2392:5:2392:45 | Address | &:r2392_5 | | ir.cpp:2392:5:2392:45 | ChiPartial | partial:m2392_3 | | ir.cpp:2392:5:2392:45 | ChiTotal | total:m2392_2 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index ebe05f70d183..1a4c34b9fc72 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -1357,8 +1357,10 @@ ir.cpp: # 43| mu43_2(unknown) = AliasedDefinition : # 43| mu43_3(unknown) = InitializeNonLocal : # 44| r44_1(glval<int>) = VariableAddress[x] : -# 44| r44_2(int) = Constant[17] : -# 44| mu44_3(int) = Store[x] : &:r44_1, r44_2 +# 44| r44_2(int) = Constant[5] : +# 44| r44_3(int) = Constant[12] : +# 44| r44_4(int) = Add : r44_2, r44_3 +# 44| mu44_5(int) = Store[x] : &:r44_1, r44_4 # 45| r45_1(glval<short>) = VariableAddress[y] : # 45| r45_2(short) = Constant[7] : # 45| mu45_3(short) = Store[y] : &:r45_1, r45_2 @@ -5747,14 +5749,39 @@ ir.cpp: # 913| mu913_5(int) = InitializeParameter[x] : &:r913_4 # 914| r914_1(glval<bool>) = VariableAddress[a] : # 914| r914_2(bool) = Constant[1] : -# 914| mu914_3(bool) = Store[a] : &:r914_1, r914_2 -# 915| r915_1(glval<int>) = VariableAddress[b] : -# 915| r915_2(bool) = Constant[1] : -# 915| v915_3(void) = ConditionalBranch : r915_2 -#-----| False -> Block 3 -#-----| True -> Block 2 +# 914| v914_3(void) = ConditionalBranch : r914_2 +#-----| False -> Block 1 +#-----| True -> Block 4 + +# 914| Block 1 +# 914| r914_4(glval<bool>) = VariableAddress[#temp914:12] : +# 914| r914_5(bool) = Constant[0] : +# 914| mu914_6(bool) = Store[#temp914:12] : &:r914_4, r914_5 +#-----| Goto -> Block 2 + +# 914| Block 2 +# 914| r914_7(glval<bool>) = VariableAddress[#temp914:12] : +# 914| r914_8(bool) = Load[#temp914:12] : &:r914_7, ~m? +# 914| mu914_9(bool) = Store[a] : &:r914_1, r914_8 +# 915| r915_1(glval<int>) = VariableAddress[b] : +# 915| r915_2(bool) = Constant[1] : +# 915| v915_3(void) = ConditionalBranch : r915_2 +#-----| False -> Block 7 +#-----| True -> Block 6 -# 915| Block 1 +# 914| Block 3 +# 914| r914_10(glval<bool>) = VariableAddress[#temp914:12] : +# 914| r914_11(bool) = Constant[1] : +# 914| mu914_12(bool) = Store[#temp914:12] : &:r914_10, r914_11 +#-----| Goto -> Block 2 + +# 914| Block 4 +# 914| r914_13(bool) = Constant[1] : +# 914| v914_14(void) = ConditionalBranch : r914_13 +#-----| False -> Block 1 +#-----| True -> Block 3 + +# 915| Block 5 # 915| r915_4(glval<int>) = VariableAddress[#temp915:11] : # 915| r915_5(int) = Load[#temp915:11] : &:r915_4, ~m? # 915| mu915_6(int) = Store[b] : &:r915_1, r915_5 @@ -5763,19 +5790,19 @@ ir.cpp: # 913| v913_7(void) = AliasedUse : ~m? # 913| v913_8(void) = ExitFunction : -# 915| Block 2 +# 915| Block 6 # 915| r915_7(glval<int>) = VariableAddress[x] : # 915| r915_8(int) = Load[x] : &:r915_7, ~m? # 915| r915_9(glval<int>) = VariableAddress[#temp915:11] : # 915| mu915_10(int) = Store[#temp915:11] : &:r915_9, r915_8 -#-----| Goto -> Block 1 +#-----| Goto -> Block 5 -# 915| Block 3 +# 915| Block 7 # 915| r915_11(glval<int>) = VariableAddress[x] : # 915| r915_12(int) = Load[x] : &:r915_11, ~m? # 915| r915_13(glval<int>) = VariableAddress[#temp915:11] : # 915| mu915_14(int) = Store[#temp915:11] : &:r915_13, r915_12 -#-----| Goto -> Block 1 +#-----| Goto -> Block 5 # 949| void OperatorNew() # 949| Block 0 @@ -7266,11 +7293,13 @@ ir.cpp: # 1215| r1215_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1215| r1215_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_4, ~m? # 1215| r1215_6(int) = Constant[3] : -# 1215| r1215_7(int) = Constant[2] : -# 1215| r1215_8(int) = Constant[1] : -# 1215| r1215_9(int) = Constant[0] : -# 1215| r1215_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_6, 3:r1215_7, 4:r1215_8, 5:r1215_9 -# 1215| mu1215_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_10 +# 1215| r1215_7(int) = Constant[0] : +# 1215| r1215_8(int) = Add : r1215_6, r1215_7 +# 1215| r1215_9(int) = Constant[2] : +# 1215| r1215_10(int) = Constant[1] : +# 1215| r1215_11(int) = Constant[0] : +# 1215| r1215_12(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_8, 3:r1215_9, 4:r1215_10, 5:r1215_11 +# 1215| mu1215_13(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_12 # 1216| r1216_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| r1216_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1216_1, ~m? # 1216| r1216_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : @@ -13983,8 +14012,10 @@ ir.cpp: # 2381| mu2381_2(unknown) = AliasedDefinition : # 2381| mu2381_3(unknown) = InitializeNonLocal : # 2382| r2382_1(glval<int>) = VariableAddress[#return] : -# 2382| r2382_2(int) = Constant[2] : -# 2382| mu2382_3(int) = Store[#return] : &:r2382_1, r2382_2 +# 2382| r2382_2(int) = Constant[1] : +# 2382| r2382_3(int) = Constant[1] : +# 2382| r2382_4(int) = Add : r2382_2, r2382_3 +# 2382| mu2382_5(int) = Store[#return] : &:r2382_1, r2382_4 # 2381| r2381_4(glval<int>) = VariableAddress[#return] : # 2381| v2381_5(void) = ReturnValue : &:r2381_4, ~m? # 2381| v2381_6(void) = AliasedUse : ~m? From 72ff494739e9d2c93baf6c4359a9180dcdfed20b Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 19 Mar 2024 10:33:12 +0100 Subject: [PATCH 355/731] Ruby: Regenerate dbscheme and stats --- ruby/extractor/Cargo.lock | 2 +- ruby/extractor/Cargo.toml | 2 +- ruby/extractor/cargo-bazel-lock.json | 268 +- ruby/ql/lib/codeql/ruby/AST.qll | 7 +- .../codeql/ruby/ast/internal/TreeSitter.qll | 12 +- ruby/ql/lib/ruby.dbscheme | 24 +- ruby/ql/lib/ruby.dbscheme.stats | 7316 ++++++++--------- 7 files changed, 3693 insertions(+), 3938 deletions(-) diff --git a/ruby/extractor/Cargo.lock b/ruby/extractor/Cargo.lock index d5e8f132f240..750d630402b3 100644 --- a/ruby/extractor/Cargo.lock +++ b/ruby/extractor/Cargo.lock @@ -176,7 +176,7 @@ checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" [[package]] name = "codeql-extractor" version = "0.2.0" -source = "git+https://github.com/github/codeql.git?rev=514a92d5bd1e24e4b7367d64430762ffd1ffbe7f#514a92d5bd1e24e4b7367d64430762ffd1ffbe7f" +source = "git+https://github.com/github/codeql.git?rev=cee6f003fd58c64916c629f7d8b27b870d6f78c5#cee6f003fd58c64916c629f7d8b27b870d6f78c5" dependencies = [ "chrono", "encoding", diff --git a/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index 8bb8cd96dce0..87a9f9f7a802 100644 --- a/ruby/extractor/Cargo.toml +++ b/ruby/extractor/Cargo.toml @@ -34,4 +34,4 @@ lazy_static = "1.4.0" # of lock-file update time, but `rules_rust` pins generates a bazel rule that unconditionally downloads `main`, which # breaks build hermeticity. So, rev-pinning it is. # See also https://github.com/bazelbuild/rules_rust/issues/2502. -codeql-extractor = { git = "https://github.com/github/codeql.git", rev = "514a92d5bd1e24e4b7367d64430762ffd1ffbe7f" } +codeql-extractor = { git = "https://github.com/github/codeql.git", rev = "cee6f003fd58c64916c629f7d8b27b870d6f78c5" } diff --git a/ruby/extractor/cargo-bazel-lock.json b/ruby/extractor/cargo-bazel-lock.json index 76a63d4376d4..15b868806650 100644 --- a/ruby/extractor/cargo-bazel-lock.json +++ b/ruby/extractor/cargo-bazel-lock.json @@ -1,5 +1,5 @@ { - "checksum": "1c460a0aa044e422d51b182416888e0a45d131996cc1821a0fedbab3cd2b07bf", + "checksum": "76aa7a86db3d70a3b257062c5c6b87da62e07258e6f16a487d8c42aa561c0224", "crates": { "adler 1.0.2": { "name": "adler", @@ -7,7 +7,7 @@ "package_url": "https://github.com/jonas-schievink/adler.git", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/adler/1.0.2/download", + "url": "https://static.crates.io/crates/adler/1.0.2/download", "sha256": "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" } }, @@ -44,7 +44,7 @@ "package_url": "https://github.com/BurntSushi/aho-corasick", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/aho-corasick/0.7.20/download", + "url": "https://static.crates.io/crates/aho-corasick/0.7.20/download", "sha256": "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" } }, @@ -96,7 +96,7 @@ "package_url": "https://github.com/BurntSushi/aho-corasick", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/aho-corasick/1.1.2/download", + "url": "https://static.crates.io/crates/aho-corasick/1.1.2/download", "sha256": "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" } }, @@ -149,7 +149,7 @@ "package_url": "https://github.com/nical/android_system_properties", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/android_system_properties/0.1.5/download", + "url": "https://static.crates.io/crates/android_system_properties/0.1.5/download", "sha256": "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" } }, @@ -194,7 +194,7 @@ "package_url": "https://github.com/rust-cli/anstyle.git", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/anstream/0.2.6/download", + "url": "https://static.crates.io/crates/anstream/0.2.6/download", "sha256": "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f" } }, @@ -274,7 +274,7 @@ "package_url": "https://github.com/rust-cli/anstyle.git", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/anstyle/0.3.5/download", + "url": "https://static.crates.io/crates/anstyle/0.3.5/download", "sha256": "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" } }, @@ -317,7 +317,7 @@ "package_url": "https://github.com/rust-cli/anstyle.git", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/anstyle-parse/0.1.1/download", + "url": "https://static.crates.io/crates/anstyle-parse/0.1.1/download", "sha256": "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116" } }, @@ -369,7 +369,7 @@ "package_url": "https://github.com/rust-cli/anstyle.git", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/anstyle-wincon/0.2.0/download", + "url": "https://static.crates.io/crates/anstyle-wincon/0.2.0/download", "sha256": "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa" } }, @@ -421,7 +421,7 @@ "package_url": "https://github.com/cuviper/autocfg", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/autocfg/1.1.0/download", + "url": "https://static.crates.io/crates/autocfg/1.1.0/download", "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" } }, @@ -457,7 +457,7 @@ "package_url": "https://github.com/bitflags/bitflags", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/bitflags/1.3.2/download", + "url": "https://static.crates.io/crates/bitflags/1.3.2/download", "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" } }, @@ -499,7 +499,7 @@ "package_url": "https://github.com/BurntSushi/bstr", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/bstr/1.9.0/download", + "url": "https://static.crates.io/crates/bstr/1.9.0/download", "sha256": "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" } }, @@ -551,7 +551,7 @@ "package_url": "https://github.com/fitzgen/bumpalo", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/bumpalo/3.12.0/download", + "url": "https://static.crates.io/crates/bumpalo/3.12.0/download", "sha256": "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" } }, @@ -593,7 +593,7 @@ "package_url": "https://github.com/rust-lang/cc-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cc/1.0.79/download", + "url": "https://static.crates.io/crates/cc/1.0.79/download", "sha256": "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" } }, @@ -629,7 +629,7 @@ "package_url": "https://github.com/alexcrichton/cfg-if", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cfg-if/1.0.0/download", + "url": "https://static.crates.io/crates/cfg-if/1.0.0/download", "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" } }, @@ -665,7 +665,7 @@ "package_url": "https://github.com/chronotope/chrono", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/chrono/0.4.24/download", + "url": "https://static.crates.io/crates/chrono/0.4.24/download", "sha256": "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" } }, @@ -761,7 +761,7 @@ "package_url": "https://github.com/clap-rs/clap", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap/4.2.1/download", + "url": "https://static.crates.io/crates/clap/4.2.1/download", "sha256": "046ae530c528f252094e4a77886ee1374437744b2bff1497aa898bbddbbb29b3" } }, @@ -832,7 +832,7 @@ "package_url": "https://github.com/clap-rs/clap", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap_builder/4.2.1/download", + "url": "https://static.crates.io/crates/clap_builder/4.2.1/download", "sha256": "223163f58c9a40c3b0a43e1c4b50a9ce09f007ea2cb1ec258a687945b4b7929f" } }, @@ -904,7 +904,7 @@ "package_url": "https://github.com/clap-rs/clap/tree/master/clap_derive", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap_derive/4.2.0/download", + "url": "https://static.crates.io/crates/clap_derive/4.2.0/download", "sha256": "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" } }, @@ -967,7 +967,7 @@ "package_url": "https://github.com/clap-rs/clap/tree/master/clap_lex", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap_lex/0.4.1/download", + "url": "https://static.crates.io/crates/clap_lex/0.4.1/download", "sha256": "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" } }, @@ -1005,7 +1005,7 @@ "Git": { "remote": "https://github.com/github/codeql.git", "commitish": { - "Rev": "514a92d5bd1e24e4b7367d64430762ffd1ffbe7f" + "Rev": "cee6f003fd58c64916c629f7d8b27b870d6f78c5" }, "strip_prefix": "shared/tree-sitter-extractor" } @@ -1159,7 +1159,7 @@ "package_url": "https://github.com/brendanzab/codespan", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/codespan-reporting/0.11.1/download", + "url": "https://static.crates.io/crates/codespan-reporting/0.11.1/download", "sha256": "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" } }, @@ -1207,7 +1207,7 @@ "package_url": "https://github.com/rust-cli/concolor", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/concolor-override/1.0.0/download", + "url": "https://static.crates.io/crates/concolor-override/1.0.0/download", "sha256": "a855d4a1978dc52fb0536a04d384c2c0c1aa273597f08b77c8c4d3b2eec6037f" } }, @@ -1243,7 +1243,7 @@ "package_url": "https://github.com/rust-cli/concolor", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/concolor-query/0.3.3/download", + "url": "https://static.crates.io/crates/concolor-query/0.3.3/download", "sha256": "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf" } }, @@ -1290,7 +1290,7 @@ "package_url": "https://github.com/servo/core-foundation-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/core-foundation-sys/0.8.4/download", + "url": "https://static.crates.io/crates/core-foundation-sys/0.8.4/download", "sha256": "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" } }, @@ -1326,7 +1326,7 @@ "package_url": "https://github.com/srijs/rust-crc32fast", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crc32fast/1.3.2/download", + "url": "https://static.crates.io/crates/crc32fast/1.3.2/download", "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" } }, @@ -1396,7 +1396,7 @@ "package_url": "https://github.com/crossbeam-rs/crossbeam", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crossbeam-channel/0.5.7/download", + "url": "https://static.crates.io/crates/crossbeam-channel/0.5.7/download", "sha256": "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" } }, @@ -1453,7 +1453,7 @@ "package_url": "https://github.com/crossbeam-rs/crossbeam", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crossbeam-deque/0.8.3/download", + "url": "https://static.crates.io/crates/crossbeam-deque/0.8.3/download", "sha256": "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" } }, @@ -1515,7 +1515,7 @@ "package_url": "https://github.com/crossbeam-rs/crossbeam", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crossbeam-epoch/0.9.14/download", + "url": "https://static.crates.io/crates/crossbeam-epoch/0.9.14/download", "sha256": "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" } }, @@ -1606,7 +1606,7 @@ "package_url": "https://github.com/crossbeam-rs/crossbeam", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/crossbeam-utils/0.8.15/download", + "url": "https://static.crates.io/crates/crossbeam-utils/0.8.15/download", "sha256": "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" } }, @@ -1676,7 +1676,7 @@ "package_url": "https://github.com/dtolnay/cxx", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cxx/1.0.94/download", + "url": "https://static.crates.io/crates/cxx/1.0.94/download", "sha256": "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" } }, @@ -1771,7 +1771,7 @@ "package_url": "https://github.com/dtolnay/cxx", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cxx-build/1.0.94/download", + "url": "https://static.crates.io/crates/cxx-build/1.0.94/download", "sha256": "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" } }, @@ -1840,7 +1840,7 @@ "package_url": "https://github.com/dtolnay/cxx", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cxxbridge-flags/1.0.94/download", + "url": "https://static.crates.io/crates/cxxbridge-flags/1.0.94/download", "sha256": "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" } }, @@ -1876,7 +1876,7 @@ "package_url": "https://github.com/dtolnay/cxx", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cxxbridge-macro/1.0.94/download", + "url": "https://static.crates.io/crates/cxxbridge-macro/1.0.94/download", "sha256": "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" } }, @@ -1929,7 +1929,7 @@ "package_url": "https://github.com/bluss/either", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/either/1.8.1/download", + "url": "https://static.crates.io/crates/either/1.8.1/download", "sha256": "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" } }, @@ -1965,7 +1965,7 @@ "package_url": "https://github.com/lifthrasiir/rust-encoding", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/encoding/0.2.33/download", + "url": "https://static.crates.io/crates/encoding/0.2.33/download", "sha256": "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" } }, @@ -2025,7 +2025,7 @@ "package_url": "https://github.com/lifthrasiir/rust-encoding", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/encoding-index-japanese/1.20141219.5/download", + "url": "https://static.crates.io/crates/encoding-index-japanese/1.20141219.5/download", "sha256": "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" } }, @@ -2069,7 +2069,7 @@ "package_url": "https://github.com/lifthrasiir/rust-encoding", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/encoding-index-korean/1.20141219.5/download", + "url": "https://static.crates.io/crates/encoding-index-korean/1.20141219.5/download", "sha256": "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" } }, @@ -2113,7 +2113,7 @@ "package_url": "https://github.com/lifthrasiir/rust-encoding", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/encoding-index-simpchinese/1.20141219.5/download", + "url": "https://static.crates.io/crates/encoding-index-simpchinese/1.20141219.5/download", "sha256": "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" } }, @@ -2157,7 +2157,7 @@ "package_url": "https://github.com/lifthrasiir/rust-encoding", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/encoding-index-singlebyte/1.20141219.5/download", + "url": "https://static.crates.io/crates/encoding-index-singlebyte/1.20141219.5/download", "sha256": "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" } }, @@ -2201,7 +2201,7 @@ "package_url": "https://github.com/lifthrasiir/rust-encoding", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/encoding-index-tradchinese/1.20141219.5/download", + "url": "https://static.crates.io/crates/encoding-index-tradchinese/1.20141219.5/download", "sha256": "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" } }, @@ -2245,7 +2245,7 @@ "package_url": "https://github.com/lifthrasiir/rust-encoding", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/encoding_index_tests/0.1.4/download", + "url": "https://static.crates.io/crates/encoding_index_tests/0.1.4/download", "sha256": "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" } }, @@ -2280,7 +2280,7 @@ "package_url": "https://github.com/lambda-fairy/rust-errno", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/errno/0.3.0/download", + "url": "https://static.crates.io/crates/errno/0.3.0/download", "sha256": "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0" } }, @@ -2351,7 +2351,7 @@ "package_url": "https://github.com/mneumann/errno-dragonfly-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/errno-dragonfly/0.1.2/download", + "url": "https://static.crates.io/crates/errno-dragonfly/0.1.2/download", "sha256": "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" } }, @@ -2422,7 +2422,7 @@ "package_url": "https://github.com/rust-lang/flate2-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/flate2/1.0.25/download", + "url": "https://static.crates.io/crates/flate2/1.0.25/download", "sha256": "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" } }, @@ -2479,7 +2479,7 @@ "package_url": "https://github.com/BurntSushi/ripgrep/tree/master/crates/globset", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/globset/0.4.14/download", + "url": "https://static.crates.io/crates/globset/0.4.14/download", "sha256": "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" } }, @@ -2547,7 +2547,7 @@ "package_url": "https://github.com/withoutboats/heck", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/heck/0.4.1/download", + "url": "https://static.crates.io/crates/heck/0.4.1/download", "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" } }, @@ -2589,7 +2589,7 @@ "package_url": "https://github.com/hermitcore/rusty-hermit", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/hermit-abi/0.2.6/download", + "url": "https://static.crates.io/crates/hermit-abi/0.2.6/download", "sha256": "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" } }, @@ -2634,7 +2634,7 @@ "package_url": "https://github.com/hermitcore/rusty-hermit", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/hermit-abi/0.3.1/download", + "url": "https://static.crates.io/crates/hermit-abi/0.3.1/download", "sha256": "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" } }, @@ -2670,7 +2670,7 @@ "package_url": "https://github.com/strawlab/iana-time-zone", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/iana-time-zone/0.1.56/download", + "url": "https://static.crates.io/crates/iana-time-zone/0.1.56/download", "sha256": "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" } }, @@ -2751,7 +2751,7 @@ "package_url": "https://github.com/strawlab/iana-time-zone", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/iana-time-zone-haiku/0.1.1/download", + "url": "https://static.crates.io/crates/iana-time-zone-haiku/0.1.1/download", "sha256": "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" } }, @@ -2832,7 +2832,7 @@ "package_url": "https://github.com/sunfishcode/io-lifetimes", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/io-lifetimes/1.0.10/download", + "url": "https://static.crates.io/crates/io-lifetimes/1.0.10/download", "sha256": "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" } }, @@ -2920,7 +2920,7 @@ "package_url": "https://github.com/sunfishcode/is-terminal", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/is-terminal/0.4.6/download", + "url": "https://static.crates.io/crates/is-terminal/0.4.6/download", "sha256": "256017f749ab3117e93acb91063009e1f1bb56d03965b14c2c8df4eb02c524d8" } }, @@ -2983,7 +2983,7 @@ "package_url": "https://github.com/dtolnay/itoa", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/itoa/1.0.6/download", + "url": "https://static.crates.io/crates/itoa/1.0.6/download", "sha256": "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" } }, @@ -3019,7 +3019,7 @@ "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/js-sys/0.3.61/download", + "url": "https://static.crates.io/crates/js-sys/0.3.61/download", "sha256": "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" } }, @@ -3064,7 +3064,7 @@ "package_url": "https://github.com/rust-lang-nursery/lazy-static.rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/lazy_static/1.4.0/download", + "url": "https://static.crates.io/crates/lazy_static/1.4.0/download", "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" } }, @@ -3100,7 +3100,7 @@ "package_url": "https://github.com/rust-lang/libc", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/libc/0.2.141/download", + "url": "https://static.crates.io/crates/libc/0.2.141/download", "sha256": "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" } }, @@ -3257,7 +3257,7 @@ "package_url": "https://github.com/dtolnay/link-cplusplus", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/link-cplusplus/1.0.8/download", + "url": "https://static.crates.io/crates/link-cplusplus/1.0.8/download", "sha256": "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" } }, @@ -3326,7 +3326,7 @@ "package_url": "https://github.com/sunfishcode/linux-raw-sys", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/linux-raw-sys/0.3.1/download", + "url": "https://static.crates.io/crates/linux-raw-sys/0.3.1/download", "sha256": "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" } }, @@ -3398,7 +3398,7 @@ "package_url": "https://github.com/rust-lang/log", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/log/0.4.20/download", + "url": "https://static.crates.io/crates/log/0.4.20/download", "sha256": "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" } }, @@ -3440,7 +3440,7 @@ "package_url": "https://github.com/hawkw/matchers", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/matchers/0.1.0/download", + "url": "https://static.crates.io/crates/matchers/0.1.0/download", "sha256": "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" } }, @@ -3484,7 +3484,7 @@ "package_url": "https://github.com/BurntSushi/memchr", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/memchr/2.7.1/download", + "url": "https://static.crates.io/crates/memchr/2.7.1/download", "sha256": "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" } }, @@ -3528,7 +3528,7 @@ "package_url": "https://github.com/Gilnaa/memoffset", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/memoffset/0.8.0/download", + "url": "https://static.crates.io/crates/memoffset/0.8.0/download", "sha256": "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" } }, @@ -3601,7 +3601,7 @@ "package_url": "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/miniz_oxide/0.6.2/download", + "url": "https://static.crates.io/crates/miniz_oxide/0.6.2/download", "sha256": "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" } }, @@ -3653,7 +3653,7 @@ "package_url": "https://github.com/nushell/nu-ansi-term", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/nu-ansi-term/0.46.0/download", + "url": "https://static.crates.io/crates/nu-ansi-term/0.46.0/download", "sha256": "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" } }, @@ -3704,7 +3704,7 @@ "package_url": "https://github.com/rust-num/num-integer", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/num-integer/0.1.45/download", + "url": "https://static.crates.io/crates/num-integer/0.1.45/download", "sha256": "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" } }, @@ -3776,7 +3776,7 @@ "package_url": "https://github.com/rust-num/num-traits", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/num-traits/0.2.15/download", + "url": "https://static.crates.io/crates/num-traits/0.2.15/download", "sha256": "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" } }, @@ -3844,7 +3844,7 @@ "package_url": "https://github.com/seanmonstar/num_cpus", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/num_cpus/1.15.0/download", + "url": "https://static.crates.io/crates/num_cpus/1.15.0/download", "sha256": "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" } }, @@ -3897,7 +3897,7 @@ "package_url": "https://github.com/matklad/once_cell", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/once_cell/1.17.1/download", + "url": "https://static.crates.io/crates/once_cell/1.17.1/download", "sha256": "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" } }, @@ -3942,7 +3942,7 @@ "package_url": "https://github.com/danaugrs/overload", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/overload/0.1.1/download", + "url": "https://static.crates.io/crates/overload/0.1.1/download", "sha256": "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" } }, @@ -3977,7 +3977,7 @@ "package_url": "https://github.com/taiki-e/pin-project-lite", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/pin-project-lite/0.2.9/download", + "url": "https://static.crates.io/crates/pin-project-lite/0.2.9/download", "sha256": "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" } }, @@ -4013,7 +4013,7 @@ "package_url": "https://github.com/dtolnay/proc-macro2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/proc-macro2/1.0.56/download", + "url": "https://static.crates.io/crates/proc-macro2/1.0.56/download", "sha256": "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" } }, @@ -4083,7 +4083,7 @@ "package_url": "https://github.com/dtolnay/quote", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/quote/1.0.26/download", + "url": "https://static.crates.io/crates/quote/1.0.26/download", "sha256": "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" } }, @@ -4153,7 +4153,7 @@ "package_url": "https://github.com/rayon-rs/rayon", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rayon/1.7.0/download", + "url": "https://static.crates.io/crates/rayon/1.7.0/download", "sha256": "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" } }, @@ -4202,7 +4202,7 @@ "package_url": "https://github.com/rayon-rs/rayon", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rayon-core/1.11.0/download", + "url": "https://static.crates.io/crates/rayon-core/1.11.0/download", "sha256": "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" } }, @@ -4278,7 +4278,7 @@ "package_url": "https://github.com/rust-lang/regex", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex/1.7.3/download", + "url": "https://static.crates.io/crates/regex/1.7.3/download", "sha256": "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" } }, @@ -4353,7 +4353,7 @@ "package_url": "https://github.com/BurntSushi/regex-automata", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex-automata/0.1.10/download", + "url": "https://static.crates.io/crates/regex-automata/0.1.10/download", "sha256": "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" } }, @@ -4406,7 +4406,7 @@ "package_url": "https://github.com/rust-lang/regex/tree/master/regex-automata", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex-automata/0.4.3/download", + "url": "https://static.crates.io/crates/regex-automata/0.4.3/download", "sha256": "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" } }, @@ -4478,7 +4478,7 @@ "package_url": "https://github.com/rust-lang/regex", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex-syntax/0.6.29/download", + "url": "https://static.crates.io/crates/regex-syntax/0.6.29/download", "sha256": "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" } }, @@ -4528,7 +4528,7 @@ "package_url": "https://github.com/rust-lang/regex/tree/master/regex-syntax", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex-syntax/0.8.2/download", + "url": "https://static.crates.io/crates/regex-syntax/0.8.2/download", "sha256": "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" } }, @@ -4570,7 +4570,7 @@ "package_url": "https://github.com/bytecodealliance/rustix", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/rustix/0.37.7/download", + "url": "https://static.crates.io/crates/rustix/0.37.7/download", "sha256": "2aae838e49b3d63e9274e1c01833cc8139d3fec468c3b84688c628f44b1ae11d" } }, @@ -4682,7 +4682,7 @@ "package_url": "https://github.com/dtolnay/ryu", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ryu/1.0.13/download", + "url": "https://static.crates.io/crates/ryu/1.0.13/download", "sha256": "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" } }, @@ -4718,7 +4718,7 @@ "package_url": "https://github.com/bluss/scopeguard", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/scopeguard/1.1.0/download", + "url": "https://static.crates.io/crates/scopeguard/1.1.0/download", "sha256": "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" } }, @@ -4754,7 +4754,7 @@ "package_url": "https://github.com/dtolnay/scratch", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/scratch/1.0.5/download", + "url": "https://static.crates.io/crates/scratch/1.0.5/download", "sha256": "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" } }, @@ -4813,7 +4813,7 @@ "package_url": "https://github.com/serde-rs/serde", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/serde/1.0.159/download", + "url": "https://static.crates.io/crates/serde/1.0.159/download", "sha256": "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" } }, @@ -4890,7 +4890,7 @@ "package_url": "https://github.com/serde-rs/serde", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/serde_derive/1.0.159/download", + "url": "https://static.crates.io/crates/serde_derive/1.0.159/download", "sha256": "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" } }, @@ -4967,7 +4967,7 @@ "package_url": "https://github.com/serde-rs/json", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/serde_json/1.0.95/download", + "url": "https://static.crates.io/crates/serde_json/1.0.95/download", "sha256": "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" } }, @@ -5045,7 +5045,7 @@ "package_url": "https://github.com/hawkw/sharded-slab", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/sharded-slab/0.1.4/download", + "url": "https://static.crates.io/crates/sharded-slab/0.1.4/download", "sha256": "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" } }, @@ -5089,7 +5089,7 @@ "package_url": "https://github.com/servo/rust-smallvec", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/smallvec/1.10.0/download", + "url": "https://static.crates.io/crates/smallvec/1.10.0/download", "sha256": "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" } }, @@ -5125,7 +5125,7 @@ "package_url": "https://github.com/dguo/strsim-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/strsim/0.10.0/download", + "url": "https://static.crates.io/crates/strsim/0.10.0/download", "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" } }, @@ -5160,7 +5160,7 @@ "package_url": "https://github.com/dtolnay/syn", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/syn/1.0.109/download", + "url": "https://static.crates.io/crates/syn/1.0.109/download", "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" } }, @@ -5250,7 +5250,7 @@ "package_url": "https://github.com/dtolnay/syn", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/syn/2.0.13/download", + "url": "https://static.crates.io/crates/syn/2.0.13/download", "sha256": "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" } }, @@ -5316,7 +5316,7 @@ "package_url": "https://github.com/BurntSushi/termcolor", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/termcolor/1.2.0/download", + "url": "https://static.crates.io/crates/termcolor/1.2.0/download", "sha256": "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" } }, @@ -5363,7 +5363,7 @@ "package_url": "https://github.com/Amanieu/thread_local-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/thread_local/1.1.7/download", + "url": "https://static.crates.io/crates/thread_local/1.1.7/download", "sha256": "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" } }, @@ -5412,7 +5412,7 @@ "package_url": "https://github.com/time-rs/time", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/time/0.1.45/download", + "url": "https://static.crates.io/crates/time/0.1.45/download", "sha256": "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" } }, @@ -5470,7 +5470,7 @@ "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tracing/0.1.37/download", + "url": "https://static.crates.io/crates/tracing/0.1.37/download", "sha256": "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" } }, @@ -5540,7 +5540,7 @@ "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tracing-attributes/0.1.23/download", + "url": "https://static.crates.io/crates/tracing-attributes/0.1.23/download", "sha256": "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" } }, @@ -5592,7 +5592,7 @@ "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tracing-core/0.1.30/download", + "url": "https://static.crates.io/crates/tracing-core/0.1.30/download", "sha256": "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" } }, @@ -5651,7 +5651,7 @@ "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tracing-log/0.1.3/download", + "url": "https://static.crates.io/crates/tracing-log/0.1.3/download", "sha256": "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" } }, @@ -5710,7 +5710,7 @@ "package_url": "https://github.com/tokio-rs/tracing", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tracing-subscriber/0.3.16/download", + "url": "https://static.crates.io/crates/tracing-subscriber/0.3.16/download", "sha256": "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" } }, @@ -5811,7 +5811,7 @@ "package_url": "https://github.com/tree-sitter/tree-sitter", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tree-sitter/0.20.10/download", + "url": "https://static.crates.io/crates/tree-sitter/0.20.10/download", "sha256": "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d" } }, @@ -6028,7 +6028,7 @@ "package_url": "https://github.com/dtolnay/unicode-ident", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/unicode-ident/1.0.8/download", + "url": "https://static.crates.io/crates/unicode-ident/1.0.8/download", "sha256": "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" } }, @@ -6065,7 +6065,7 @@ "package_url": "https://github.com/unicode-rs/unicode-width", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/unicode-width/0.1.10/download", + "url": "https://static.crates.io/crates/unicode-width/0.1.10/download", "sha256": "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" } }, @@ -6101,7 +6101,7 @@ "package_url": "https://github.com/alacritty/vte", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/utf8parse/0.2.1/download", + "url": "https://static.crates.io/crates/utf8parse/0.2.1/download", "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" } }, @@ -6143,7 +6143,7 @@ "package_url": "https://github.com/tokio-rs/valuable", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/valuable/0.1.0/download", + "url": "https://static.crates.io/crates/valuable/0.1.0/download", "sha256": "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" } }, @@ -6201,7 +6201,7 @@ "package_url": "https://github.com/bytecodealliance/wasi", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/wasi/0.10.0+wasi-snapshot-preview1/download", + "url": "https://static.crates.io/crates/wasi/0.10.0+wasi-snapshot-preview1/download", "sha256": "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" } }, @@ -6244,7 +6244,7 @@ "package_url": "https://github.com/rustwasm/wasm-bindgen", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/wasm-bindgen/0.2.84/download", + "url": "https://static.crates.io/crates/wasm-bindgen/0.2.84/download", "sha256": "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" } }, @@ -6324,7 +6324,7 @@ "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/backend", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/wasm-bindgen-backend/0.2.84/download", + "url": "https://static.crates.io/crates/wasm-bindgen-backend/0.2.84/download", "sha256": "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" } }, @@ -6399,7 +6399,7 @@ "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/wasm-bindgen-macro/0.2.84/download", + "url": "https://static.crates.io/crates/wasm-bindgen-macro/0.2.84/download", "sha256": "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" } }, @@ -6454,7 +6454,7 @@ "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/wasm-bindgen-macro-support/0.2.84/download", + "url": "https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.84/download", "sha256": "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" } }, @@ -6521,7 +6521,7 @@ "package_url": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/wasm-bindgen-shared/0.2.84/download", + "url": "https://static.crates.io/crates/wasm-bindgen-shared/0.2.84/download", "sha256": "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" } }, @@ -6581,7 +6581,7 @@ "package_url": "https://github.com/retep998/winapi-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/winapi/0.3.9/download", + "url": "https://static.crates.io/crates/winapi/0.3.9/download", "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" } }, @@ -6670,7 +6670,7 @@ "package_url": "https://github.com/retep998/winapi-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download", + "url": "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download", "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" } }, @@ -6729,7 +6729,7 @@ "package_url": "https://github.com/BurntSushi/winapi-util", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/winapi-util/0.1.5/download", + "url": "https://static.crates.io/crates/winapi-util/0.1.5/download", "sha256": "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" } }, @@ -6776,7 +6776,7 @@ "package_url": "https://github.com/retep998/winapi-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download", + "url": "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download", "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" } }, @@ -6835,7 +6835,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows/0.48.0/download", + "url": "https://static.crates.io/crates/windows/0.48.0/download", "sha256": "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" } }, @@ -6880,7 +6880,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows-sys/0.45.0/download", + "url": "https://static.crates.io/crates/windows-sys/0.45.0/download", "sha256": "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" } }, @@ -6939,7 +6939,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows-sys/0.48.0/download", + "url": "https://static.crates.io/crates/windows-sys/0.48.0/download", "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" } }, @@ -7000,7 +7000,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows-targets/0.42.2/download", + "url": "https://static.crates.io/crates/windows-targets/0.42.2/download", "sha256": "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" } }, @@ -7113,7 +7113,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows-targets/0.48.0/download", + "url": "https://static.crates.io/crates/windows-targets/0.48.0/download", "sha256": "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" } }, @@ -7196,7 +7196,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.42.2/download", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/0.42.2/download", "sha256": "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" } }, @@ -7255,7 +7255,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_aarch64_gnullvm/0.48.0/download", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.0/download", "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" } }, @@ -7314,7 +7314,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.42.2/download", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/0.42.2/download", "sha256": "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" } }, @@ -7373,7 +7373,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_aarch64_msvc/0.48.0/download", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/0.48.0/download", "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" } }, @@ -7432,7 +7432,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_i686_gnu/0.42.2/download", + "url": "https://static.crates.io/crates/windows_i686_gnu/0.42.2/download", "sha256": "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" } }, @@ -7491,7 +7491,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_i686_gnu/0.48.0/download", + "url": "https://static.crates.io/crates/windows_i686_gnu/0.48.0/download", "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" } }, @@ -7550,7 +7550,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_i686_msvc/0.42.2/download", + "url": "https://static.crates.io/crates/windows_i686_msvc/0.42.2/download", "sha256": "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" } }, @@ -7609,7 +7609,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_i686_msvc/0.48.0/download", + "url": "https://static.crates.io/crates/windows_i686_msvc/0.48.0/download", "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" } }, @@ -7668,7 +7668,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.42.2/download", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/0.42.2/download", "sha256": "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" } }, @@ -7727,7 +7727,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_x86_64_gnu/0.48.0/download", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/0.48.0/download", "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" } }, @@ -7786,7 +7786,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.42.2/download", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/0.42.2/download", "sha256": "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" } }, @@ -7845,7 +7845,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_x86_64_gnullvm/0.48.0/download", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.0/download", "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" } }, @@ -7904,7 +7904,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.42.2/download", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/0.42.2/download", "sha256": "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" } }, @@ -7963,7 +7963,7 @@ "package_url": "https://github.com/microsoft/windows-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/windows_x86_64_msvc/0.48.0/download", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/0.48.0/download", "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" } }, diff --git a/ruby/ql/lib/codeql/ruby/AST.qll b/ruby/ql/lib/codeql/ruby/AST.qll index d517c8f4d44f..e8dc28692c07 100644 --- a/ruby/ql/lib/codeql/ruby/AST.qll +++ b/ruby/ql/lib/codeql/ruby/AST.qll @@ -137,7 +137,12 @@ class AstNode extends TAstNode { /** A Ruby source file */ class RubyFile extends File { - RubyFile() { ruby_ast_node_info(_, this, _, _) } + RubyFile() { + exists(Location loc | + ruby_ast_node_location(_, loc) and + this = loc.getFile() + ) + } /** Gets a token in this file. */ private Ruby::Token getAToken() { result.getLocation().getFile() = this } diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll index ef268f69ded3..441f4ffefcc6 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/TreeSitter.qll @@ -12,13 +12,13 @@ module Ruby { string toString() { result = this.getAPrimaryQlClass() } /** Gets the location of this element. */ - final L::Location getLocation() { ruby_ast_node_info(this, _, _, result) } + final L::Location getLocation() { ruby_ast_node_location(this, result) } /** Gets the parent of this element. */ - final AstNode getParent() { ruby_ast_node_info(this, result, _, _) } + final AstNode getParent() { ruby_ast_node_parent(this, result, _) } /** Gets the index of this node among the children of its parent. */ - final int getParentIndex() { ruby_ast_node_info(this, _, result, _) } + final int getParentIndex() { ruby_ast_node_parent(this, _, result) } /** Gets a field or child node of this node. */ AstNode getAFieldOrChild() { none() } @@ -1929,13 +1929,13 @@ module Erb { string toString() { result = this.getAPrimaryQlClass() } /** Gets the location of this element. */ - final L::Location getLocation() { erb_ast_node_info(this, _, _, result) } + final L::Location getLocation() { erb_ast_node_location(this, result) } /** Gets the parent of this element. */ - final AstNode getParent() { erb_ast_node_info(this, result, _, _) } + final AstNode getParent() { erb_ast_node_parent(this, result, _) } /** Gets the index of this node among the children of its parent. */ - final int getParentIndex() { erb_ast_node_info(this, _, result, _) } + final int getParentIndex() { erb_ast_node_parent(this, _, result) } /** Gets a field or child node of this node. */ AstNode getAFieldOrChild() { none() } diff --git a/ruby/ql/lib/ruby.dbscheme b/ruby/ql/lib/ruby.dbscheme index f9f0f4023e43..440de75c71e9 100644 --- a/ruby/ql/lib/ruby.dbscheme +++ b/ruby/ql/lib/ruby.dbscheme @@ -1421,14 +1421,16 @@ case @ruby_token.kind of @ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield -@ruby_ast_node_parent = @file | @ruby_ast_node +ruby_ast_node_location( + unique int node: @ruby_ast_node ref, + int loc: @location_default ref +); #keyset[parent, parent_index] -ruby_ast_node_info( +ruby_ast_node_parent( unique int node: @ruby_ast_node ref, - int parent: @ruby_ast_node_parent ref, - int parent_index: int ref, - int loc: @location_default ref + int parent: @ruby_ast_node ref, + int parent_index: int ref ); /*- Erb dbscheme -*/ @@ -1497,13 +1499,15 @@ case @erb_token.kind of @erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token -@erb_ast_node_parent = @erb_ast_node | @file +erb_ast_node_location( + unique int node: @erb_ast_node ref, + int loc: @location_default ref +); #keyset[parent, parent_index] -erb_ast_node_info( +erb_ast_node_parent( unique int node: @erb_ast_node ref, - int parent: @erb_ast_node_parent ref, - int parent_index: int ref, - int loc: @location_default ref + int parent: @erb_ast_node ref, + int parent_index: int ref ); diff --git a/ruby/ql/lib/ruby.dbscheme.stats b/ruby/ql/lib/ruby.dbscheme.stats index e7d7f5e27eb7..fd8850293b49 100644 --- a/ruby/ql/lib/ruby.dbscheme.stats +++ b/ruby/ql/lib/ruby.dbscheme.stats @@ -5,7 +5,7 @@ </e> <e> <k>@diagnostic_error</k> - <v>156</v> + <v>0</v> </e> <e> <k>@diagnostic_info</k> @@ -13,15 +13,15 @@ </e> <e> <k>@diagnostic_warning</k> - <v>0</v> + <v>188</v> </e> <e> <k>@erb_comment_directive</k> - <v>40</v> + <v>26</v> </e> <e> <k>@erb_directive</k> - <v>1225</v> + <v>1108</v> </e> <e> <k>@erb_graphql_directive</k> @@ -29,43 +29,43 @@ </e> <e> <k>@erb_output_directive</k> - <v>3555</v> + <v>3270</v> </e> <e> <k>@erb_reserved_word</k> - <v>9567</v> + <v>8756</v> </e> <e> <k>@erb_template</k> - <v>1531</v> + <v>1508</v> </e> <e> <k>@erb_token_code</k> - <v>4781</v> + <v>4378</v> </e> <e> <k>@erb_token_comment</k> - <v>27</v> + <v>26</v> </e> <e> <k>@erb_token_content</k> - <v>4977</v> + <v>4555</v> </e> <e> <k>@file</k> - <v>18245</v> + <v>18724</v> </e> <e> <k>@folder</k> - <v>5002</v> + <v>5165</v> </e> <e> <k>@location_default</k> - <v>9022418</v> + <v>9223392</v> </e> <e> <k>@ruby_alias</k> - <v>1307</v> + <v>1289</v> </e> <e> <k>@ruby_alternative_pattern</k> @@ -73,35 +73,35 @@ </e> <e> <k>@ruby_argument_list</k> - <v>691738</v> + <v>706474</v> </e> <e> <k>@ruby_array</k> - <v>248289</v> + <v>249320</v> </e> <e> <k>@ruby_array_pattern</k> - <v>178</v> + <v>179</v> </e> <e> <k>@ruby_as_pattern</k> - <v>153</v> + <v>156</v> </e> <e> <k>@ruby_assignment</k> - <v>137583</v> + <v>141202</v> </e> <e> <k>@ruby_bare_string</k> - <v>12799</v> + <v>13136</v> </e> <e> <k>@ruby_bare_symbol</k> - <v>7967</v> + <v>8435</v> </e> <e> <k>@ruby_begin</k> - <v>2590</v> + <v>2610</v> </e> <e> <k>@ruby_begin_block</k> @@ -109,143 +109,143 @@ </e> <e> <k>@ruby_binary_ampersand</k> - <v>570</v> + <v>630</v> </e> <e> <k>@ruby_binary_ampersandampersand</k> - <v>8179</v> + <v>8142</v> </e> <e> <k>@ruby_binary_and</k> - <v>1233</v> + <v>1189</v> </e> <e> <k>@ruby_binary_bangequal</k> - <v>1459</v> + <v>1434</v> </e> <e> <k>@ruby_binary_bangtilde</k> - <v>168</v> + <v>176</v> </e> <e> <k>@ruby_binary_caret</k> - <v>160</v> + <v>153</v> </e> <e> <k>@ruby_binary_equalequal</k> - <v>32934</v> + <v>33761</v> </e> <e> <k>@ruby_binary_equalequalequal</k> - <v>656</v> + <v>689</v> </e> <e> <k>@ruby_binary_equaltilde</k> - <v>1800</v> + <v>1823</v> </e> <e> <k>@ruby_binary_langle</k> - <v>1181</v> + <v>1101</v> </e> <e> <k>@ruby_binary_langleequal</k> - <v>407</v> + <v>431</v> </e> <e> <k>@ruby_binary_langleequalrangle</k> - <v>778</v> + <v>764</v> </e> <e> <k>@ruby_binary_langlelangle</k> - <v>10731</v> + <v>10779</v> </e> <e> <k>@ruby_binary_minus</k> - <v>2691</v> + <v>2747</v> </e> <e> <k>@ruby_binary_or</k> - <v>635</v> + <v>647</v> </e> <e> <k>@ruby_binary_percent</k> - <v>979</v> + <v>986</v> </e> <e> <k>@ruby_binary_pipe</k> - <v>1000</v> + <v>1058</v> </e> <e> <k>@ruby_binary_pipepipe</k> - <v>7430</v> + <v>7336</v> </e> <e> <k>@ruby_binary_plus</k> - <v>6453</v> + <v>6593</v> </e> <e> <k>@ruby_binary_rangle</k> - <v>2129</v> + <v>2114</v> </e> <e> <k>@ruby_binary_rangleequal</k> - <v>595</v> + <v>597</v> </e> <e> <k>@ruby_binary_ranglerangle</k> - <v>234</v> + <v>259</v> </e> <e> <k>@ruby_binary_slash</k> - <v>1269</v> + <v>1169</v> </e> <e> <k>@ruby_binary_star</k> - <v>3560</v> + <v>3490</v> </e> <e> <k>@ruby_binary_starstar</k> - <v>1358</v> + <v>1227</v> </e> <e> <k>@ruby_block</k> - <v>101695</v> + <v>104143</v> </e> <e> <k>@ruby_block_argument</k> - <v>6477</v> + <v>6547</v> </e> <e> <k>@ruby_block_body</k> - <v>101379</v> + <v>103820</v> </e> <e> <k>@ruby_block_parameter</k> - <v>2569</v> + <v>2543</v> </e> <e> <k>@ruby_block_parameters</k> - <v>24941</v> + <v>25884</v> </e> <e> <k>@ruby_body_statement</k> - <v>208998</v> + <v>213896</v> </e> <e> <k>@ruby_break</k> - <v>3434</v> + <v>3414</v> </e> <e> <k>@ruby_call</k> - <v>1006605</v> + <v>1027501</v> </e> <e> <k>@ruby_case__</k> - <v>1289</v> + <v>1319</v> </e> <e> <k>@ruby_case_match</k> - <v>234</v> + <v>232</v> </e> <e> <k>@ruby_chained_string</k> @@ -253,47 +253,47 @@ </e> <e> <k>@ruby_class</k> - <v>17258</v> + <v>17441</v> </e> <e> <k>@ruby_complex</k> - <v>66</v> + <v>72</v> </e> <e> <k>@ruby_conditional</k> - <v>2954</v> + <v>2896</v> </e> <e> <k>@ruby_delimited_symbol</k> - <v>1258</v> + <v>1247</v> </e> <e> <k>@ruby_destructured_left_assignment</k> - <v>107</v> + <v>108</v> </e> <e> <k>@ruby_destructured_parameter</k> - <v>194</v> + <v>208</v> </e> <e> <k>@ruby_do</k> - <v>1681</v> + <v>1675</v> </e> <e> <k>@ruby_do_block</k> - <v>142452</v> + <v>145534</v> </e> <e> <k>@ruby_element_reference</k> - <v>80778</v> + <v>82606</v> </e> <e> <k>@ruby_else</k> - <v>7505</v> + <v>7681</v> </e> <e> <k>@ruby_elsif</k> - <v>1510</v> + <v>1583</v> </e> <e> <k>@ruby_end_block</k> @@ -301,15 +301,15 @@ </e> <e> <k>@ruby_ensure</k> - <v>3981</v> + <v>4106</v> </e> <e> <k>@ruby_exception_variable</k> - <v>924</v> + <v>935</v> </e> <e> <k>@ruby_exceptions</k> - <v>1938</v> + <v>1904</v> </e> <e> <k>@ruby_expression_reference_pattern</k> @@ -321,31 +321,31 @@ </e> <e> <k>@ruby_for</k> - <v>158</v> + <v>136</v> </e> <e> <k>@ruby_hash</k> - <v>40888</v> + <v>41915</v> </e> <e> <k>@ruby_hash_pattern</k> - <v>75</v> + <v>73</v> </e> <e> <k>@ruby_hash_splat_argument</k> - <v>1902</v> + <v>1989</v> </e> <e> <k>@ruby_hash_splat_parameter</k> - <v>1596</v> + <v>1574</v> </e> <e> <k>@ruby_heredoc_body</k> - <v>6178</v> + <v>6934</v> </e> <e> <k>@ruby_if</k> - <v>16391</v> + <v>16164</v> </e> <e> <k>@ruby_if_guard</k> @@ -353,39 +353,39 @@ </e> <e> <k>@ruby_if_modifier</k> - <v>14611</v> + <v>14541</v> </e> <e> <k>@ruby_in</k> - <v>158</v> + <v>136</v> </e> <e> <k>@ruby_in_clause</k> - <v>385</v> + <v>381</v> </e> <e> <k>@ruby_interpolation</k> - <v>38305</v> + <v>38493</v> </e> <e> <k>@ruby_keyword_parameter</k> - <v>4144</v> + <v>4763</v> </e> <e> <k>@ruby_keyword_pattern</k> - <v>80</v> + <v>77</v> </e> <e> <k>@ruby_lambda</k> - <v>7948</v> + <v>8187</v> </e> <e> <k>@ruby_lambda_parameters</k> - <v>1762</v> + <v>1811</v> </e> <e> <k>@ruby_left_assignment_list</k> - <v>2994</v> + <v>3100</v> </e> <e> <k>@ruby_match_pattern</k> @@ -393,39 +393,39 @@ </e> <e> <k>@ruby_method</k> - <v>102124</v> + <v>103532</v> </e> <e> <k>@ruby_method_parameters</k> - <v>30832</v> + <v>31208</v> </e> <e> <k>@ruby_module</k> - <v>22353</v> + <v>22962</v> </e> <e> <k>@ruby_next</k> - <v>1902</v> + <v>2020</v> </e> <e> <k>@ruby_operator_assignment_ampersandampersandequal</k> - <v>90</v> + <v>118</v> </e> <e> <k>@ruby_operator_assignment_ampersandequal</k> - <v>18</v> + <v>17</v> </e> <e> <k>@ruby_operator_assignment_caretequal</k> - <v>5</v> + <v>6</v> </e> <e> <k>@ruby_operator_assignment_langlelangleequal</k> - <v>26</v> + <v>19</v> </e> <e> <k>@ruby_operator_assignment_minusequal</k> - <v>300</v> + <v>305</v> </e> <e> <k>@ruby_operator_assignment_percentequal</k> @@ -433,19 +433,19 @@ </e> <e> <k>@ruby_operator_assignment_pipeequal</k> - <v>156</v> + <v>164</v> </e> <e> <k>@ruby_operator_assignment_pipepipeequal</k> - <v>4190</v> + <v>4272</v> </e> <e> <k>@ruby_operator_assignment_plusequal</k> - <v>1647</v> + <v>1732</v> </e> <e> <k>@ruby_operator_assignment_ranglerangleequal</k> - <v>10</v> + <v>11</v> </e> <e> <k>@ruby_operator_assignment_slashequal</k> @@ -453,7 +453,7 @@ </e> <e> <k>@ruby_operator_assignment_starequal</k> - <v>52</v> + <v>42</v> </e> <e> <k>@ruby_operator_assignment_starstarequal</k> @@ -461,11 +461,11 @@ </e> <e> <k>@ruby_optional_parameter</k> - <v>6636</v> + <v>6556</v> </e> <e> <k>@ruby_pair</k> - <v>248347</v> + <v>254198</v> </e> <e> <k>@ruby_parenthesized_pattern</k> @@ -473,27 +473,27 @@ </e> <e> <k>@ruby_parenthesized_statements</k> - <v>10912</v> + <v>11296</v> </e> <e> <k>@ruby_pattern</k> - <v>4153</v> + <v>4745</v> </e> <e> <k>@ruby_program</k> - <v>18219</v> + <v>18697</v> </e> <e> <k>@ruby_range_dotdot</k> - <v>3136</v> + <v>3690</v> </e> <e> <k>@ruby_range_dotdotdot</k> - <v>1634</v> + <v>1376</v> </e> <e> <k>@ruby_rational</k> - <v>138</v> + <v>166</v> </e> <e> <k>@ruby_redo</k> @@ -501,107 +501,107 @@ </e> <e> <k>@ruby_regex</k> - <v>13350</v> + <v>13680</v> </e> <e> <k>@ruby_rescue</k> - <v>2346</v> + <v>2299</v> </e> <e> <k>@ruby_rescue_modifier</k> - <v>448</v> + <v>458</v> </e> <e> <k>@ruby_reserved_word</k> - <v>3820965</v> + <v>3894800</v> </e> <e> <k>@ruby_rest_assignment</k> - <v>401</v> + <v>414</v> </e> <e> <k>@ruby_retry</k> - <v>60</v> + <v>58</v> </e> <e> <k>@ruby_return</k> - <v>8197</v> + <v>7979</v> </e> <e> <k>@ruby_right_assignment_list</k> - <v>1224</v> + <v>1280</v> </e> <e> <k>@ruby_scope_resolution</k> - <v>84884</v> + <v>87113</v> </e> <e> <k>@ruby_setter</k> - <v>653</v> + <v>656</v> </e> <e> <k>@ruby_singleton_class</k> - <v>663</v> + <v>677</v> </e> <e> <k>@ruby_singleton_method</k> - <v>6459</v> + <v>6325</v> </e> <e> <k>@ruby_splat_argument</k> - <v>3454</v> + <v>3606</v> </e> <e> <k>@ruby_splat_parameter</k> - <v>3192</v> + <v>3014</v> </e> <e> <k>@ruby_string__</k> - <v>485218</v> + <v>490602</v> </e> <e> <k>@ruby_string_array</k> - <v>4213</v> + <v>4287</v> </e> <e> <k>@ruby_subshell</k> - <v>365</v> + <v>359</v> </e> <e> <k>@ruby_superclass</k> - <v>13666</v> + <v>13806</v> </e> <e> <k>@ruby_symbol_array</k> - <v>2170</v> + <v>2240</v> </e> <e> <k>@ruby_test_pattern</k> - <v>4</v> + <v>5</v> </e> <e> <k>@ruby_then</k> - <v>22451</v> + <v>22229</v> </e> <e> <k>@ruby_token_character</k> - <v>432</v> + <v>440</v> </e> <e> <k>@ruby_token_class_variable</k> - <v>868</v> + <v>887</v> </e> <e> <k>@ruby_token_comment</k> - <v>190672</v> + <v>194426</v> </e> <e> <k>@ruby_token_constant</k> - <v>294731</v> + <v>302373</v> </e> <e> <k>@ruby_token_empty_statement</k> - <v>55</v> + <v>58</v> </e> <e> <k>@ruby_token_encoding</k> @@ -609,11 +609,11 @@ </e> <e> <k>@ruby_token_escape_sequence</k> - <v>77855</v> + <v>80835</v> </e> <e> <k>@ruby_token_false</k> - <v>17433</v> + <v>17355</v> </e> <e> <k>@ruby_token_file</k> @@ -621,51 +621,51 @@ </e> <e> <k>@ruby_token_float</k> - <v>8491</v> + <v>8689</v> </e> <e> <k>@ruby_token_forward_argument</k> - <v>79</v> + <v>194</v> </e> <e> <k>@ruby_token_forward_parameter</k> - <v>144</v> + <v>287</v> </e> <e> <k>@ruby_token_global_variable</k> - <v>7342</v> + <v>7165</v> </e> <e> <k>@ruby_token_hash_key_symbol</k> - <v>241330</v> + <v>246826</v> </e> <e> <k>@ruby_token_hash_splat_nil</k> - <v>11</v> + <v>14</v> </e> <e> <k>@ruby_token_heredoc_beginning</k> - <v>6177</v> + <v>6933</v> </e> <e> <k>@ruby_token_heredoc_content</k> - <v>12929</v> + <v>12986</v> </e> <e> <k>@ruby_token_heredoc_end</k> - <v>6178</v> + <v>6934</v> </e> <e> <k>@ruby_token_identifier</k> - <v>1551542</v> + <v>1590836</v> </e> <e> <k>@ruby_token_instance_variable</k> - <v>87122</v> + <v>89852</v> </e> <e> <k>@ruby_token_integer</k> - <v>306586</v> + <v>310358</v> </e> <e> <k>@ruby_token_line</k> @@ -673,59 +673,59 @@ </e> <e> <k>@ruby_token_nil</k> - <v>18636</v> + <v>19333</v> </e> <e> <k>@ruby_token_operator</k> - <v>849</v> + <v>878</v> </e> <e> <k>@ruby_token_self</k> - <v>13755</v> + <v>14094</v> </e> <e> <k>@ruby_token_simple_symbol</k> - <v>261524</v> + <v>267609</v> </e> <e> <k>@ruby_token_string_content</k> - <v>502063</v> + <v>510164</v> </e> <e> <k>@ruby_token_super</k> - <v>5313</v> + <v>5329</v> </e> <e> <k>@ruby_token_true</k> - <v>24277</v> + <v>25065</v> </e> <e> <k>@ruby_token_uninterpreted</k> <v>11</v> </e> - <e> + <e> <k>@ruby_unary_bang</k> - <v>5952</v> + <v>5909</v> </e> <e> <k>@ruby_unary_definedquestion</k> - <v>1301</v> + <v>1369</v> </e> <e> <k>@ruby_unary_minus</k> - <v>9633</v> + <v>9830</v> </e> <e> <k>@ruby_unary_not</k> - <v>190</v> + <v>172</v> </e> <e> <k>@ruby_unary_plus</k> - <v>1427</v> + <v>1394</v> </e> <e> <k>@ruby_unary_tilde</k> - <v>98</v> + <v>97</v> </e> <e> <k>@ruby_undef</k> @@ -733,7 +733,7 @@ </e> <e> <k>@ruby_unless</k> - <v>2663</v> + <v>2723</v> </e> <e> <k>@ruby_unless_guard</k> @@ -741,15 +741,15 @@ </e> <e> <k>@ruby_unless_modifier</k> - <v>3505</v> + <v>3416</v> </e> <e> <k>@ruby_until</k> - <v>123</v> + <v>126</v> </e> <e> <k>@ruby_until_modifier</k> - <v>234</v> + <v>238</v> </e> <e> <k>@ruby_variable_reference_pattern</k> @@ -757,19 +757,19 @@ </e> <e> <k>@ruby_when</k> - <v>3392</v> + <v>3882</v> </e> <e> <k>@ruby_while</k> - <v>1400</v> + <v>1413</v> </e> <e> <k>@ruby_while_modifier</k> - <v>194</v> + <v>198</v> </e> <e> <k>@ruby_yield</k> - <v>2477</v> + <v>2450</v> </e> <e> <k>@yaml_alias_node</k> @@ -794,15 +794,15 @@ </typesizes> <stats><relation> <name>containerparent</name> - <cardinality>23222</cardinality> + <cardinality>23863</cardinality> <columnsizes> <e> <k>parent</k> - <v>5002</v> + <v>5165</v> </e> <e> <k>child</k> - <v>23222</v> + <v>23863</v> </e> </columnsizes> <dependencies> @@ -816,37 +816,37 @@ <b> <a>1</a> <b>2</b> - <v>2290</v> + <v>2394</v> </b> <b> <a>2</a> <b>3</b> - <v>934</v> + <v>968</v> </b> <b> <a>3</a> <b>4</b> - <v>421</v> + <v>417</v> </b> <b> <a>4</a> <b>5</b> - <v>315</v> + <v>295</v> </b> <b> <a>5</a> <b>7</b> - <v>408</v> + <v>443</v> </b> <b> <a>7</a> <b>14</b> - <v>408</v> + <v>403</v> </b> <b> <a>14</a> <b>126</b> - <v>223</v> + <v>242</v> </b> </bs> </hist> @@ -862,7 +862,7 @@ <b> <a>1</a> <b>2</b> - <v>23222</v> + <v>23863</v> </b> </bs> </hist> @@ -872,11 +872,11 @@ </relation> <relation> <name>diagnostics</name> - <cardinality>157</cardinality> + <cardinality>188</cardinality> <columnsizes> <e> <k>id</k> - <v>157</v> + <v>188</v> </e> <e> <k>severity</k> @@ -888,15 +888,15 @@ </e> <e> <k>error_message</k> - <v>26</v> + <v>53</v> </e> <e> <k>full_error_message</k> - <v>118</v> + <v>161</v> </e> <e> <k>location</k> - <v>157</v> + <v>174</v> </e> </columnsizes> <dependencies> @@ -910,7 +910,7 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>188</v> </b> </bs> </hist> @@ -926,7 +926,7 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>188</v> </b> </bs> </hist> @@ -942,7 +942,7 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>188</v> </b> </bs> </hist> @@ -958,7 +958,7 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>188</v> </b> </bs> </hist> @@ -974,7 +974,7 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>188</v> </b> </bs> </hist> @@ -988,8 +988,8 @@ <budget>12</budget> <bs> <b> - <a>12</a> - <b>13</b> + <a>14</a> + <b>15</b> <v>13</v> </b> </bs> @@ -1020,8 +1020,8 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>4</a> + <b>5</b> <v>13</v> </b> </bs> @@ -1036,8 +1036,8 @@ <budget>12</budget> <bs> <b> - <a>9</a> - <b>10</b> + <a>12</a> + <b>13</b> <v>13</v> </b> </bs> @@ -1052,8 +1052,8 @@ <budget>12</budget> <bs> <b> - <a>12</a> - <b>13</b> + <a>13</a> + <b>14</b> <v>13</v> </b> </bs> @@ -1068,8 +1068,8 @@ <budget>12</budget> <bs> <b> - <a>12</a> - <b>13</b> + <a>14</a> + <b>15</b> <v>13</v> </b> </bs> @@ -1100,8 +1100,8 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>4</a> + <b>5</b> <v>13</v> </b> </bs> @@ -1116,8 +1116,8 @@ <budget>12</budget> <bs> <b> - <a>9</a> - <b>10</b> + <a>12</a> + <b>13</b> <v>13</v> </b> </bs> @@ -1132,8 +1132,8 @@ <budget>12</budget> <bs> <b> - <a>12</a> - <b>13</b> + <a>13</a> + <b>14</b> <v>13</v> </b> </bs> @@ -1150,11 +1150,16 @@ <b> <a>1</a> <b>2</b> + <v>26</v> + </b> + <b> + <a>2</a> + <b>3</b> <v>13</v> </b> <b> - <a>11</a> - <b>12</b> + <a>10</a> + <b>11</b> <v>13</v> </b> </bs> @@ -1171,7 +1176,7 @@ <b> <a>1</a> <b>2</b> - <v>26</v> + <v>53</v> </b> </bs> </hist> @@ -1187,7 +1192,7 @@ <b> <a>1</a> <b>2</b> - <v>26</v> + <v>53</v> </b> </bs> </hist> @@ -1203,6 +1208,11 @@ <b> <a>1</a> <b>2</b> + <v>26</v> + </b> + <b> + <a>2</a> + <b>3</b> <v>13</v> </b> <b> @@ -1224,11 +1234,16 @@ <b> <a>1</a> <b>2</b> + <v>26</v> + </b> + <b> + <a>2</a> + <b>3</b> <v>13</v> </b> <b> - <a>11</a> - <b>12</b> + <a>10</a> + <b>11</b> <v>13</v> </b> </bs> @@ -1245,12 +1260,12 @@ <b> <a>1</a> <b>2</b> - <v>78</v> + <v>134</v> </b> <b> <a>2</a> <b>3</b> - <v>39</v> + <v>26</v> </b> </bs> </hist> @@ -1266,7 +1281,7 @@ <b> <a>1</a> <b>2</b> - <v>118</v> + <v>161</v> </b> </bs> </hist> @@ -1282,7 +1297,7 @@ <b> <a>1</a> <b>2</b> - <v>118</v> + <v>161</v> </b> </bs> </hist> @@ -1298,7 +1313,7 @@ <b> <a>1</a> <b>2</b> - <v>118</v> + <v>161</v> </b> </bs> </hist> @@ -1314,12 +1329,12 @@ <b> <a>1</a> <b>2</b> - <v>78</v> + <v>134</v> </b> <b> <a>2</a> <b>3</b> - <v>39</v> + <v>26</v> </b> </bs> </hist> @@ -1335,7 +1350,12 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>161</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>13</v> </b> </bs> </hist> @@ -1351,7 +1371,7 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>174</v> </b> </bs> </hist> @@ -1367,7 +1387,7 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>174</v> </b> </bs> </hist> @@ -1383,7 +1403,12 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>161</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>13</v> </b> </bs> </hist> @@ -1399,7 +1424,12 @@ <b> <a>1</a> <b>2</b> - <v>157</v> + <v>161</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>13</v> </b> </bs> </hist> @@ -1408,30 +1438,22 @@ </dependencies> </relation> <relation> - <name>erb_ast_node_info</name> - <cardinality>24486</cardinality> + <name>erb_ast_node_location</name> + <cardinality>22409</cardinality> <columnsizes> <e> <k>node</k> - <v>24486</v> - </e> - <e> - <k>parent</k> - <v>5532</v> - </e> - <e> - <k>parent_index</k> - <v>608</v> + <v>22409</v> </e> <e> <k>loc</k> - <v>24484</v> + <v>22407</v> </e> </columnsizes> <dependencies> <dep> <src>node</src> - <trg>parent</trg> + <trg>loc</trg> <val> <hist> <budget>12</budget> @@ -1439,15 +1461,15 @@ <b> <a>1</a> <b>2</b> - <v>24486</v> + <v>22409</v> </b> </bs> </hist> </val> </dep> <dep> - <src>node</src> - <trg>parent_index</trg> + <src>loc</src> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -1455,15 +1477,40 @@ <b> <a>1</a> <b>2</b> - <v>24486</v> + <v>22404</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>2</v> </b> </bs> </hist> </val> </dep> + </dependencies> + </relation> + <relation> + <name>erb_ast_node_parent</name> + <cardinality>22069</cardinality> + <columnsizes> + <e> + <k>node</k> + <v>22069</v> + </e> + <e> + <k>parent</k> + <v>4718</v> + </e> + <e> + <k>parent_index</k> + <v>564</v> + </e> + </columnsizes> + <dependencies> <dep> <src>node</src> - <trg>loc</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -1471,33 +1518,23 @@ <b> <a>1</a> <b>2</b> - <v>24486</v> + <v>22069</v> </b> </bs> </hist> </val> </dep> <dep> - <src>parent</src> - <trg>node</trg> + <src>node</src> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> <bs> <b> <a>1</a> - <b>3</b> - <v>384</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>4908</v> - </b> - <b> - <a>4</a> - <b>240</b> - <v>239</v> + <b>2</b> + <v>22069</v> </b> </bs> </hist> @@ -1505,7 +1542,7 @@ </dep> <dep> <src>parent</src> - <trg>parent_index</trg> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -1513,17 +1550,17 @@ <b> <a>1</a> <b>3</b> - <v>384</v> + <v>9</v> </b> <b> <a>3</a> <b>4</b> - <v>4908</v> + <v>4494</v> </b> <b> <a>4</a> <b>240</b> - <v>239</v> + <v>215</v> </b> </bs> </hist> @@ -1531,7 +1568,7 @@ </dep> <dep> <src>parent</src> - <trg>loc</trg> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -1539,17 +1576,17 @@ <b> <a>1</a> <b>3</b> - <v>384</v> + <v>9</v> </b> <b> <a>3</a> <b>4</b> - <v>4908</v> + <v>4494</v> </b> <b> <a>4</a> <b>240</b> - <v>239</v> + <v>215</v> </b> </bs> </hist> @@ -1565,62 +1602,57 @@ <b> <a>1</a> <b>2</b> - <v>33</v> + <v>25</v> </b> <b> <a>2</a> <b>3</b> - <v>84</v> + <v>33</v> </b> <b> <a>3</a> <b>4</b> - <v>12</v> + <v>33</v> </b> <b> <a>4</a> <b>5</b> - <v>101</v> + <v>122</v> </b> <b> <a>5</a> <b>6</b> - <v>53</v> + <v>96</v> </b> <b> <a>6</a> - <b>7</b> - <v>50</v> - </b> - <b> - <a>7</a> <b>8</b> - <v>43</v> + <v>40</v> </b> <b> <a>8</a> - <b>14</b> - <v>50</v> + <b>13</b> + <v>42</v> </b> <b> - <a>14</a> - <b>23</b> - <v>53</v> + <a>13</a> + <b>20</b> + <v>44</v> </b> <b> - <a>24</a> - <b>39</b> - <v>45</v> + <a>21</a> + <b>31</b> + <v>42</v> </b> <b> - <a>41</a> - <b>62</b> - <v>45</v> + <a>35</a> + <b>55</b> + <v>44</v> </b> <b> - <a>65</a> - <b>2173</b> - <v>33</v> + <a>55</a> + <b>1998</b> + <v>37</v> </b> </bs> </hist> @@ -1636,191 +1668,57 @@ <b> <a>1</a> <b>2</b> - <v>33</v> + <v>25</v> </b> <b> <a>2</a> <b>3</b> - <v>84</v> + <v>33</v> </b> <b> <a>3</a> <b>4</b> - <v>12</v> + <v>33</v> </b> <b> <a>4</a> <b>5</b> - <v>101</v> + <v>122</v> </b> <b> <a>5</a> <b>6</b> - <v>53</v> + <v>96</v> </b> <b> <a>6</a> - <b>7</b> - <v>50</v> - </b> - <b> - <a>7</a> <b>8</b> - <v>43</v> + <v>40</v> </b> <b> <a>8</a> - <b>14</b> - <v>50</v> + <b>13</b> + <v>42</v> </b> <b> - <a>14</a> - <b>23</b> - <v>53</v> + <a>13</a> + <b>20</b> + <v>44</v> </b> <b> - <a>24</a> - <b>39</b> - <v>45</v> + <a>21</a> + <b>31</b> + <v>42</v> </b> <b> - <a>41</a> - <b>62</b> - <v>45</v> + <a>35</a> + <b>55</b> + <v>44</v> </b> <b> - <a>65</a> - <b>2173</b> - <v>33</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>parent_index</src> - <trg>loc</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>33</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>84</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>12</v> - </b> - <b> - <a>4</a> - <b>5</b> - <v>101</v> - </b> - <b> - <a>5</a> - <b>6</b> - <v>53</v> - </b> - <b> - <a>6</a> - <b>7</b> - <v>50</v> - </b> - <b> - <a>7</a> - <b>8</b> - <v>43</v> - </b> - <b> - <a>8</a> - <b>14</b> - <v>50</v> - </b> - <b> - <a>14</a> - <b>23</b> - <v>53</v> - </b> - <b> - <a>24</a> - <b>39</b> - <v>45</v> - </b> - <b> - <a>41</a> - <b>62</b> - <v>45</v> - </b> - <b> - <a>65</a> - <b>2172</b> - <v>33</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>node</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>24481</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>2</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>24481</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>2</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent_index</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>24484</v> + <a>55</a> + <b>1998</b> + <v>37</v> </b> </bs> </hist> @@ -1830,15 +1728,15 @@ </relation> <relation> <name>erb_comment_directive_child</name> - <cardinality>27</cardinality> + <cardinality>26</cardinality> <columnsizes> <e> <k>erb_comment_directive</k> - <v>27</v> + <v>26</v> </e> <e> <k>child</k> - <v>27</v> + <v>26</v> </e> </columnsizes> <dependencies> @@ -1852,7 +1750,7 @@ <b> <a>1</a> <b>2</b> - <v>27</v> + <v>26</v> </b> </bs> </hist> @@ -1868,7 +1766,7 @@ <b> <a>1</a> <b>2</b> - <v>27</v> + <v>26</v> </b> </bs> </hist> @@ -1878,26 +1776,26 @@ </relation> <relation> <name>erb_comment_directive_def</name> - <cardinality>27</cardinality> + <cardinality>26</cardinality> <columnsizes> <e> <k>id</k> - <v>27</v> + <v>26</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>erb_directive_child</name> - <cardinality>1225</cardinality> + <cardinality>1108</cardinality> <columnsizes> <e> <k>erb_directive</k> - <v>1225</v> + <v>1108</v> </e> <e> <k>child</k> - <v>1225</v> + <v>1108</v> </e> </columnsizes> <dependencies> @@ -1911,7 +1809,7 @@ <b> <a>1</a> <b>2</b> - <v>1225</v> + <v>1108</v> </b> </bs> </hist> @@ -1927,7 +1825,7 @@ <b> <a>1</a> <b>2</b> - <v>1225</v> + <v>1108</v> </b> </bs> </hist> @@ -1937,11 +1835,11 @@ </relation> <relation> <name>erb_directive_def</name> - <cardinality>1225</cardinality> + <cardinality>1108</cardinality> <columnsizes> <e> <k>id</k> - <v>1225</v> + <v>1108</v> </e> </columnsizes> <dependencies/> @@ -2007,15 +1905,15 @@ </relation> <relation> <name>erb_output_directive_child</name> - <cardinality>3555</cardinality> + <cardinality>3270</cardinality> <columnsizes> <e> <k>erb_output_directive</k> - <v>3555</v> + <v>3270</v> </e> <e> <k>child</k> - <v>3555</v> + <v>3270</v> </e> </columnsizes> <dependencies> @@ -2029,7 +1927,7 @@ <b> <a>1</a> <b>2</b> - <v>3555</v> + <v>3270</v> </b> </bs> </hist> @@ -2045,7 +1943,7 @@ <b> <a>1</a> <b>2</b> - <v>3555</v> + <v>3270</v> </b> </bs> </hist> @@ -2055,30 +1953,30 @@ </relation> <relation> <name>erb_output_directive_def</name> - <cardinality>3555</cardinality> + <cardinality>3270</cardinality> <columnsizes> <e> <k>id</k> - <v>3555</v> + <v>3270</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>erb_template_child</name> - <cardinality>9761</cardinality> + <cardinality>8934</cardinality> <columnsizes> <e> <k>erb_template</k> - <v>374</v> + <v>340</v> </e> <e> <k>index</k> - <v>608</v> + <v>564</v> </e> <e> <k>child</k> - <v>9761</v> + <v>8934</v> </e> </columnsizes> <dependencies> @@ -2092,53 +1990,58 @@ <b> <a>1</a> <b>3</b> - <v>10</v> + <v>9</v> </b> <b> <a>3</a> <b>4</b> - <v>124</v> + <v>115</v> </b> <b> <a>4</a> <b>7</b> - <v>25</v> + <v>21</v> </b> <b> <a>7</a> - <b>11</b> - <v>30</v> + <b>10</b> + <v>25</v> </b> <b> - <a>11</a> - <b>15</b> - <v>33</v> + <a>10</a> + <b>14</b> + <v>28</v> </b> <b> - <a>15</a> - <b>26</b> - <v>30</v> + <a>14</a> + <b>24</b> + <v>25</v> </b> <b> - <a>27</a> - <b>35</b> - <v>30</v> + <a>24</a> + <b>33</b> + <v>25</v> </b> <b> - <a>35</a> - <b>50</b> - <v>33</v> + <a>33</a> + <b>44</b> + <v>25</v> </b> <b> - <a>53</a> - <b>78</b> - <v>30</v> + <a>45</a> + <b>64</b> + <v>25</v> </b> <b> - <a>82</a> - <b>240</b> + <a>67</a> + <b>149</b> <v>25</v> </b> + <b> + <a>200</a> + <b>240</b> + <v>9</v> + </b> </bs> </hist> </val> @@ -2153,53 +2056,58 @@ <b> <a>1</a> <b>3</b> - <v>10</v> + <v>9</v> </b> <b> <a>3</a> <b>4</b> - <v>124</v> + <v>115</v> </b> <b> <a>4</a> <b>7</b> - <v>25</v> + <v>21</v> </b> <b> <a>7</a> - <b>11</b> - <v>30</v> + <b>10</b> + <v>25</v> </b> <b> - <a>11</a> - <b>15</b> - <v>33</v> + <a>10</a> + <b>14</b> + <v>28</v> </b> <b> - <a>15</a> - <b>26</b> - <v>30</v> + <a>14</a> + <b>24</b> + <v>25</v> </b> <b> - <a>27</a> - <b>35</b> - <v>30</v> + <a>24</a> + <b>33</b> + <v>25</v> </b> <b> - <a>35</a> - <b>50</b> - <v>33</v> + <a>33</a> + <b>44</b> + <v>25</v> </b> <b> - <a>53</a> - <b>78</b> - <v>30</v> + <a>45</a> + <b>64</b> + <v>25</v> </b> <b> - <a>82</a> - <b>240</b> + <a>67</a> + <b>149</b> <v>25</v> </b> + <b> + <a>200</a> + <b>240</b> + <v>9</v> + </b> </bs> </hist> </val> @@ -2214,62 +2122,57 @@ <b> <a>1</a> <b>2</b> - <v>33</v> + <v>25</v> </b> <b> <a>2</a> <b>3</b> - <v>84</v> + <v>33</v> </b> <b> <a>3</a> <b>4</b> - <v>12</v> + <v>33</v> </b> <b> <a>4</a> <b>5</b> - <v>101</v> + <v>122</v> </b> <b> <a>5</a> <b>6</b> - <v>53</v> + <v>96</v> </b> <b> <a>6</a> - <b>7</b> - <v>50</v> - </b> - <b> - <a>7</a> <b>8</b> - <v>43</v> + <v>40</v> </b> <b> <a>8</a> - <b>14</b> - <v>50</v> + <b>13</b> + <v>42</v> </b> <b> - <a>14</a> - <b>23</b> - <v>53</v> + <a>13</a> + <b>20</b> + <v>44</v> </b> <b> - <a>24</a> - <b>39</b> - <v>45</v> + <a>21</a> + <b>31</b> + <v>42</v> </b> <b> - <a>41</a> - <b>62</b> - <v>45</v> + <a>35</a> + <b>55</b> + <v>44</v> </b> <b> - <a>65</a> - <b>148</b> - <v>33</v> + <a>55</a> + <b>145</b> + <v>37</v> </b> </bs> </hist> @@ -2285,62 +2188,57 @@ <b> <a>1</a> <b>2</b> - <v>33</v> + <v>25</v> </b> <b> <a>2</a> <b>3</b> - <v>84</v> + <v>33</v> </b> <b> <a>3</a> <b>4</b> - <v>12</v> + <v>33</v> </b> <b> <a>4</a> <b>5</b> - <v>101</v> + <v>122</v> </b> <b> <a>5</a> <b>6</b> - <v>53</v> + <v>96</v> </b> <b> <a>6</a> - <b>7</b> - <v>50</v> - </b> - <b> - <a>7</a> <b>8</b> - <v>43</v> + <v>40</v> </b> <b> <a>8</a> - <b>14</b> - <v>50</v> + <b>13</b> + <v>42</v> </b> <b> - <a>14</a> - <b>23</b> - <v>53</v> + <a>13</a> + <b>20</b> + <v>44</v> </b> <b> - <a>24</a> - <b>39</b> - <v>45</v> + <a>21</a> + <b>31</b> + <v>42</v> </b> <b> - <a>41</a> - <b>62</b> - <v>45</v> + <a>35</a> + <b>55</b> + <v>44</v> </b> <b> - <a>65</a> - <b>148</b> - <v>33</v> + <a>55</a> + <b>145</b> + <v>37</v> </b> </bs> </hist> @@ -2356,7 +2254,7 @@ <b> <a>1</a> <b>2</b> - <v>9761</v> + <v>8934</v> </b> </bs> </hist> @@ -2372,7 +2270,7 @@ <b> <a>1</a> <b>2</b> - <v>9761</v> + <v>8934</v> </b> </bs> </hist> @@ -2382,30 +2280,30 @@ </relation> <relation> <name>erb_template_def</name> - <cardinality>1531</cardinality> + <cardinality>1508</cardinality> <columnsizes> <e> <k>id</k> - <v>1531</v> + <v>1508</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>erb_tokeninfo</name> - <cardinality>19328</cardinality> + <cardinality>17690</cardinality> <columnsizes> <e> <k>id</k> - <v>19328</v> + <v>17690</v> </e> <e> <k>kind</k> - <v>10</v> + <v>7</v> </e> <e> <k>value</k> - <v>5305</v> + <v>4822</v> </e> </columnsizes> <dependencies> @@ -2419,7 +2317,7 @@ <b> <a>1</a> <b>2</b> - <v>19328</v> + <v>17690</v> </b> </bs> </hist> @@ -2435,7 +2333,7 @@ <b> <a>1</a> <b>2</b> - <v>19328</v> + <v>17690</v> </b> </bs> </hist> @@ -2449,23 +2347,18 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> - <v>2</v> - </b> - <b> - <a>1877</a> - <b>1878</b> + <a>1853</a> + <b>1854</b> <v>2</v> </b> <b> - <a>1954</a> - <b>1955</b> + <a>1928</a> + <b>1929</b> <v>2</v> </b> <b> - <a>3756</a> - <b>3757</b> + <a>3706</a> + <b>3707</b> <v>2</v> </b> </bs> @@ -2480,23 +2373,18 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> - <v>2</v> - </b> - <b> - <a>6</a> - <b>7</b> + <a>5</a> + <b>6</b> <v>2</v> </b> <b> - <a>992</a> - <b>993</b> + <a>984</a> + <b>985</b> <v>2</v> </b> <b> - <a>1084</a> - <b>1085</b> + <a>1052</a> + <b>1053</b> <v>2</v> </b> </bs> @@ -2513,17 +2401,17 @@ <b> <a>1</a> <b>2</b> - <v>4289</v> + <v>3879</v> </b> <b> <a>2</a> <b>3</b> - <v>636</v> + <v>600</v> </b> <b> <a>3</a> - <b>1811</b> - <v>379</v> + <b>1786</b> + <v>342</v> </b> </bs> </hist> @@ -2539,7 +2427,7 @@ <b> <a>1</a> <b>2</b> - <v>5305</v> + <v>4822</v> </b> </bs> </hist> @@ -2549,15 +2437,15 @@ </relation> <relation> <name>files</name> - <cardinality>18245</cardinality> + <cardinality>18724</cardinality> <columnsizes> <e> <k>id</k> - <v>18245</v> + <v>18724</v> </e> <e> <k>name</k> - <v>18245</v> + <v>18724</v> </e> </columnsizes> <dependencies> @@ -2571,7 +2459,7 @@ <b> <a>1</a> <b>2</b> - <v>18245</v> + <v>18724</v> </b> </bs> </hist> @@ -2587,7 +2475,7 @@ <b> <a>1</a> <b>2</b> - <v>18245</v> + <v>18724</v> </b> </bs> </hist> @@ -2597,15 +2485,15 @@ </relation> <relation> <name>folders</name> - <cardinality>5002</cardinality> + <cardinality>5165</cardinality> <columnsizes> <e> <k>id</k> - <v>5002</v> + <v>5165</v> </e> <e> <k>name</k> - <v>5002</v> + <v>5165</v> </e> </columnsizes> <dependencies> @@ -2619,7 +2507,7 @@ <b> <a>1</a> <b>2</b> - <v>5002</v> + <v>5165</v> </b> </bs> </hist> @@ -2635,7 +2523,7 @@ <b> <a>1</a> <b>2</b> - <v>5002</v> + <v>5165</v> </b> </bs> </hist> @@ -2645,31 +2533,31 @@ </relation> <relation> <name>locations_default</name> - <cardinality>9022418</cardinality> + <cardinality>9223392</cardinality> <columnsizes> <e> <k>id</k> - <v>9022418</v> + <v>9223392</v> </e> <e> <k>file</k> - <v>18245</v> + <v>18724</v> </e> <e> <k>beginLine</k> - <v>31147</v> + <v>31826</v> </e> <e> <k>beginColumn</k> - <v>5186</v> + <v>5300</v> </e> <e> <k>endLine</k> - <v>31147</v> + <v>31826</v> </e> <e> <k>endColumn</k> - <v>5292</v> + <v>5407</v> </e> </columnsizes> <dependencies> @@ -2683,7 +2571,7 @@ <b> <a>1</a> <b>2</b> - <v>9022418</v> + <v>9223392</v> </b> </bs> </hist> @@ -2699,7 +2587,7 @@ <b> <a>1</a> <b>2</b> - <v>9022418</v> + <v>9223392</v> </b> </bs> </hist> @@ -2715,7 +2603,7 @@ <b> <a>1</a> <b>2</b> - <v>9022418</v> + <v>9223392</v> </b> </bs> </hist> @@ -2731,7 +2619,7 @@ <b> <a>1</a> <b>2</b> - <v>9022418</v> + <v>9223392</v> </b> </bs> </hist> @@ -2747,7 +2635,7 @@ <b> <a>1</a> <b>2</b> - <v>9022418</v> + <v>9223392</v> </b> </bs> </hist> @@ -2763,72 +2651,72 @@ <b> <a>1</a> <b>32</b> - <v>1434</v> + <v>1479</v> </b> <b> <a>32</a> <b>47</b> - <v>1382</v> + <v>1412</v> </b> <b> <a>47</a> - <b>70</b> - <v>1369</v> + <b>71</b> + <v>1452</v> </b> <b> - <a>70</a> - <b>91</b> - <v>1369</v> + <a>71</a> + <b>94</b> + <v>1439</v> </b> <b> - <a>91</a> - <b>117</b> - <v>1369</v> + <a>94</a> + <b>119</b> + <v>1412</v> </b> <b> - <a>117</a> - <b>159</b> - <v>1395</v> + <a>119</a> + <b>161</b> + <v>1412</v> </b> <b> - <a>159</a> - <b>208</b> - <v>1408</v> + <a>161</a> + <b>209</b> + <v>1466</v> </b> <b> - <a>208</a> - <b>256</b> - <v>1369</v> + <a>209</a> + <b>260</b> + <v>1439</v> </b> <b> - <a>256</a> - <b>326</b> - <v>1408</v> + <a>260</a> + <b>333</b> + <v>1412</v> </b> <b> - <a>327</a> - <b>444</b> - <v>1382</v> + <a>336</a> + <b>445</b> + <v>1425</v> </b> <b> - <a>444</a> - <b>671</b> - <v>1369</v> + <a>445</a> + <b>679</b> + <v>1412</v> </b> <b> - <a>671</a> - <b>1185</b> - <v>1369</v> + <a>684</a> + <b>1221</b> + <v>1412</v> </b> <b> - <a>1186</a> - <b>4592</b> - <v>1369</v> + <a>1228</a> + <b>5812</b> + <v>1412</v> </b> <b> - <a>4636</a> + <a>7145</a> <b>22841</b> - <v>250</v> + <v>134</v> </b> </bs> </hist> @@ -2844,67 +2732,67 @@ <b> <a>1</a> <b>7</b> - <v>1342</v> + <v>1398</v> </b> <b> <a>7</a> <b>10</b> - <v>1632</v> + <v>1641</v> </b> <b> <a>10</a> <b>13</b> - <v>1434</v> + <v>1479</v> </b> <b> <a>13</a> <b>16</b> - <v>1592</v> + <v>1668</v> </b> <b> <a>16</a> <b>20</b> - <v>1579</v> + <v>1600</v> </b> <b> <a>20</a> - <b>24</b> - <v>1369</v> + <b>25</b> + <v>1587</v> </b> <b> - <a>24</a> - <b>30</b> - <v>1448</v> + <a>25</a> + <b>31</b> + <v>1573</v> </b> <b> - <a>30</a> - <b>37</b> - <v>1487</v> + <a>31</a> + <b>38</b> + <v>1506</v> </b> <b> - <a>37</a> - <b>47</b> - <v>1395</v> + <a>38</a> + <b>49</b> + <v>1506</v> </b> <b> - <a>47</a> - <b>64</b> - <v>1382</v> + <a>49</a> + <b>69</b> + <v>1425</v> </b> <b> - <a>64</a> - <b>99</b> - <v>1382</v> + <a>69</a> + <b>117</b> + <v>1425</v> </b> <b> - <a>100</a> - <b>207</b> - <v>1382</v> + <a>119</a> + <b>275</b> + <v>1412</v> </b> <b> - <a>207</a> + <a>276</a> <b>2339</b> - <v>816</v> + <v>497</v> </b> </bs> </hist> @@ -2920,67 +2808,67 @@ <b> <a>1</a> <b>16</b> - <v>1487</v> + <v>1533</v> </b> <b> <a>16</a> - <b>23</b> - <v>1395</v> + <b>24</b> + <v>1493</v> </b> <b> - <a>23</a> - <b>30</b> - <v>1382</v> + <a>24</a> + <b>31</b> + <v>1412</v> </b> <b> - <a>30</a> - <b>39</b> - <v>1369</v> + <a>31</a> + <b>40</b> + <v>1573</v> </b> <b> - <a>39</a> - <b>45</b> - <v>1527</v> + <a>40</a> + <b>46</b> + <v>1452</v> </b> <b> - <a>45</a> + <a>46</a> <b>52</b> - <v>1566</v> + <v>1533</v> </b> <b> <a>52</a> - <b>59</b> - <v>1369</v> + <b>60</b> + <v>1587</v> </b> <b> - <a>59</a> - <b>67</b> - <v>1566</v> + <a>60</a> + <b>68</b> + <v>1721</v> </b> <b> - <a>67</a> - <b>73</b> - <v>1448</v> + <a>68</a> + <b>76</b> + <v>1533</v> </b> <b> - <a>73</a> - <b>82</b> - <v>1408</v> + <a>76</a> + <b>85</b> + <v>1452</v> </b> <b> - <a>82</a> - <b>94</b> - <v>1448</v> + <a>85</a> + <b>98</b> + <v>1412</v> </b> <b> - <a>94</a> - <b>114</b> - <v>1395</v> + <a>98</a> + <b>122</b> + <v>1412</v> </b> <b> - <a>114</a> + <a>122</a> <b>357</b> - <v>882</v> + <v>605</v> </b> </bs> </hist> @@ -2996,67 +2884,67 @@ <b> <a>1</a> <b>7</b> - <v>1342</v> + <v>1398</v> </b> <b> <a>7</a> <b>10</b> - <v>1592</v> + <v>1600</v> </b> <b> <a>10</a> <b>13</b> - <v>1461</v> + <v>1506</v> </b> <b> <a>13</a> <b>16</b> - <v>1566</v> + <v>1641</v> </b> <b> <a>16</a> <b>20</b> - <v>1592</v> + <v>1614</v> </b> <b> <a>20</a> - <b>24</b> - <v>1382</v> + <b>25</b> + <v>1600</v> </b> <b> - <a>24</a> - <b>30</b> - <v>1461</v> + <a>25</a> + <b>31</b> + <v>1587</v> </b> <b> - <a>30</a> - <b>37</b> - <v>1487</v> + <a>31</a> + <b>38</b> + <v>1506</v> </b> <b> - <a>37</a> - <b>47</b> - <v>1395</v> + <a>38</a> + <b>49</b> + <v>1506</v> </b> <b> - <a>47</a> - <b>64</b> - <v>1382</v> + <a>49</a> + <b>69</b> + <v>1425</v> </b> <b> - <a>64</a> - <b>99</b> - <v>1382</v> + <a>69</a> + <b>117</b> + <v>1425</v> </b> <b> - <a>100</a> - <b>207</b> - <v>1382</v> + <a>119</a> + <b>275</b> + <v>1412</v> </b> <b> - <a>207</a> + <a>276</a> <b>2339</b> - <v>816</v> + <v>497</v> </b> </bs> </hist> @@ -3071,68 +2959,68 @@ <bs> <b> <a>1</a> - <b>20</b> - <v>1632</v> + <b>19</b> + <v>1412</v> </b> <b> - <a>20</a> - <b>28</b> - <v>1395</v> + <a>19</a> + <b>27</b> + <v>1587</v> </b> <b> - <a>28</a> - <b>36</b> - <v>1513</v> + <a>27</a> + <b>35</b> + <v>1425</v> </b> <b> - <a>36</a> - <b>45</b> - <v>1434</v> + <a>35</a> + <b>44</b> + <v>1452</v> </b> <b> - <a>45</a> - <b>51</b> - <v>1487</v> + <a>44</a> + <b>50</b> + <v>1600</v> </b> <b> - <a>51</a> - <b>58</b> - <v>1513</v> + <a>50</a> + <b>57</b> + <v>1533</v> </b> <b> - <a>58</a> - <b>66</b> - <v>1500</v> + <a>57</a> + <b>64</b> + <v>1439</v> </b> <b> - <a>66</a> - <b>73</b> - <v>1500</v> + <a>64</a> + <b>71</b> + <v>1412</v> </b> <b> - <a>73</a> - <b>80</b> - <v>1448</v> + <a>71</a> + <b>78</b> + <v>1533</v> </b> <b> - <a>80</a> - <b>89</b> - <v>1421</v> + <a>78</a> + <b>87</b> + <v>1520</v> </b> <b> - <a>89</a> - <b>102</b> - <v>1474</v> + <a>87</a> + <b>99</b> + <v>1493</v> </b> <b> - <a>102</a> - <b>128</b> - <v>1369</v> + <a>99</a> + <b>118</b> + <v>1425</v> </b> <b> - <a>128</a> + <a>118</a> <b>367</b> - <v>552</v> + <v>887</v> </b> </bs> </hist> @@ -3148,72 +3036,72 @@ <b> <a>1</a> <b>2</b> - <v>1566</v> + <v>1600</v> </b> <b> <a>2</a> <b>5</b> - <v>1592</v> + <v>1627</v> </b> <b> <a>5</a> <b>6</b> - <v>3409</v> + <v>3484</v> </b> <b> <a>6</a> <b>10</b> - <v>2646</v> + <v>2676</v> </b> <b> <a>10</a> <b>17</b> - <v>2804</v> + <v>2878</v> </b> <b> <a>17</a> <b>24</b> - <v>2409</v> + <v>2421</v> </b> <b> <a>24</a> <b>43</b> - <v>2382</v> + <v>2448</v> </b> <b> <a>43</a> <b>78</b> - <v>2369</v> + <v>2394</v> </b> <b> <a>78</a> - <b>118</b> - <v>2395</v> + <b>117</b> + <v>2394</v> </b> <b> - <a>118</a> - <b>174</b> - <v>2343</v> + <a>117</a> + <b>168</b> + <v>2407</v> </b> <b> - <a>174</a> - <b>268</b> - <v>2356</v> + <a>169</a> + <b>262</b> + <v>2421</v> </b> <b> - <a>271</a> - <b>751</b> - <v>2343</v> + <a>262</a> + <b>703</b> + <v>2394</v> </b> <b> - <a>757</a> - <b>7072</b> - <v>2343</v> + <a>708</a> + <b>5999</b> + <v>2394</v> </b> <b> - <a>7434</a> - <b>10856</b> - <v>184</v> + <a>6159</a> + <b>10971</b> + <v>282</v> </b> </bs> </hist> @@ -3229,47 +3117,47 @@ <b> <a>1</a> <b>2</b> - <v>10083</v> + <v>10304</v> </b> <b> <a>2</a> <b>3</b> - <v>5555</v> + <v>5609</v> </b> <b> <a>3</a> - <b>6</b> - <v>2343</v> + <b>7</b> + <v>2838</v> </b> <b> - <a>6</a> - <b>9</b> - <v>2330</v> + <a>7</a> + <b>10</b> + <v>2663</v> </b> <b> - <a>9</a> - <b>14</b> - <v>2501</v> + <a>10</a> + <b>15</b> + <v>2407</v> </b> <b> - <a>14</a> - <b>21</b> - <v>2356</v> + <a>15</a> + <b>23</b> + <v>2394</v> </b> <b> - <a>21</a> - <b>44</b> - <v>2356</v> + <a>23</a> + <b>58</b> + <v>2407</v> </b> <b> - <a>44</a> - <b>179</b> - <v>2356</v> + <a>58</a> + <b>287</b> + <v>2394</v> </b> <b> - <a>180</a> - <b>1386</b> - <v>1263</v> + <a>296</a> + <b>1392</b> + <v>807</v> </b> </bs> </hist> @@ -3285,72 +3173,72 @@ <b> <a>1</a> <b>2</b> - <v>1566</v> + <v>1600</v> </b> <b> <a>2</a> <b>3</b> - <v>1474</v> + <v>1520</v> </b> <b> <a>3</a> <b>4</b> - <v>2356</v> + <v>2394</v> </b> <b> <a>4</a> <b>6</b> - <v>2606</v> + <v>2650</v> </b> <b> <a>6</a> <b>8</b> - <v>1777</v> + <v>1775</v> </b> <b> <a>8</a> <b>13</b> - <v>2711</v> + <v>2811</v> </b> <b> <a>13</a> <b>18</b> - <v>2474</v> + <v>2448</v> </b> <b> <a>18</a> <b>29</b> - <v>2540</v> + <v>2582</v> </b> <b> <a>29</a> <b>44</b> - <v>2343</v> + <v>2475</v> </b> <b> <a>44</a> <b>56</b> - <v>2422</v> + <v>2582</v> </b> <b> <a>56</a> - <b>68</b> - <v>2409</v> + <b>69</b> + <v>2475</v> </b> <b> - <a>68</a> - <b>85</b> - <v>2448</v> + <a>69</a> + <b>86</b> + <v>2461</v> </b> <b> - <a>85</a> - <b>112</b> - <v>2369</v> + <a>86</a> + <b>113</b> + <v>2407</v> </b> <b> - <a>112</a> + <a>113</a> <b>205</b> - <v>1645</v> + <v>1641</v> </b> </bs> </hist> @@ -3366,42 +3254,42 @@ <b> <a>1</a> <b>2</b> - <v>11123</v> + <v>11299</v> </b> <b> <a>2</a> <b>3</b> - <v>6411</v> + <v>6591</v> </b> <b> <a>3</a> <b>4</b> - <v>2369</v> + <v>2380</v> </b> <b> <a>4</a> <b>5</b> - <v>1685</v> + <v>1815</v> </b> <b> <a>5</a> <b>7</b> - <v>2553</v> + <v>2623</v> </b> <b> <a>7</a> - <b>11</b> - <v>2856</v> + <b>10</b> + <v>2367</v> </b> <b> - <a>11</a> - <b>19</b> - <v>2488</v> + <a>10</a> + <b>17</b> + <v>2461</v> </b> <b> - <a>19</a> - <b>242</b> - <v>1658</v> + <a>17</a> + <b>240</b> + <v>2286</v> </b> </bs> </hist> @@ -3417,72 +3305,72 @@ <b> <a>1</a> <b>2</b> - <v>1566</v> + <v>1600</v> </b> <b> <a>2</a> <b>4</b> - <v>1592</v> + <v>1627</v> </b> <b> <a>4</a> <b>5</b> - <v>3462</v> + <v>3537</v> </b> <b> <a>5</a> <b>7</b> - <v>2119</v> + <v>2152</v> </b> <b> <a>7</a> <b>11</b> - <v>2698</v> + <v>2744</v> </b> <b> <a>11</a> <b>15</b> - <v>2409</v> + <v>2461</v> </b> <b> <a>15</a> <b>24</b> - <v>2395</v> + <v>2394</v> </b> <b> <a>24</a> <b>39</b> - <v>2369</v> + <v>2421</v> </b> <b> <a>39</a> <b>52</b> - <v>2409</v> + <v>2448</v> </b> <b> <a>52</a> <b>65</b> - <v>2369</v> + <v>2542</v> </b> <b> <a>65</a> - <b>79</b> - <v>2474</v> + <b>80</b> + <v>2555</v> </b> <b> - <a>79</a> - <b>101</b> - <v>2395</v> + <a>80</a> + <b>102</b> + <v>2434</v> </b> <b> - <a>101</a> - <b>135</b> - <v>2356</v> + <a>102</a> + <b>136</b> + <v>2421</v> </b> <b> - <a>135</a> - <b>208</b> - <v>526</v> + <a>136</a> + <b>209</b> + <v>484</v> </b> </bs> </hist> @@ -3498,72 +3386,72 @@ <b> <a>1</a> <b>2</b> - <v>473</v> + <v>484</v> </b> <b> <a>2</a> <b>3</b> - <v>592</v> + <v>605</v> </b> <b> <a>3</a> <b>4</b> - <v>250</v> + <v>255</v> </b> <b> <a>4</a> <b>5</b> - <v>276</v> + <v>269</v> </b> <b> <a>5</a> <b>6</b> - <v>315</v> + <v>336</v> </b> <b> <a>6</a> <b>9</b> - <v>460</v> + <v>457</v> </b> <b> <a>9</a> <b>16</b> - <v>408</v> + <v>430</v> </b> <b> <a>16</a> - <b>44</b> - <v>394</v> + <b>43</b> + <v>403</v> </b> <b> - <a>45</a> - <b>177</b> - <v>394</v> + <a>46</a> + <b>182</b> + <v>403</v> </b> <b> - <a>180</a> - <b>796</b> - <v>394</v> + <a>184</a> + <b>794</b> + <v>403</v> </b> <b> - <a>816</a> - <b>3017</b> - <v>394</v> + <a>811</a> + <b>3014</b> + <v>403</v> </b> <b> - <a>3017</a> - <b>8160</b> - <v>394</v> + <a>3015</a> + <b>8230</b> + <v>403</v> </b> <b> - <a>8349</a> - <b>25541</b> - <v>394</v> + <a>8347</a> + <b>25670</b> + <v>403</v> </b> <b> - <a>28440</a> - <b>38986</b> - <v>39</v> + <a>28494</a> + <b>38951</b> + <v>40</v> </b> </bs> </hist> @@ -3579,7 +3467,7 @@ <b> <a>1</a> <b>2</b> - <v>1434</v> + <v>1466</v> </b> <b> <a>2</a> @@ -3589,42 +3477,42 @@ <b> <a>3</a> <b>4</b> - <v>473</v> + <v>484</v> </b> <b> <a>4</a> <b>9</b> - <v>394</v> + <v>417</v> </b> <b> <a>9</a> <b>37</b> - <v>394</v> + <v>403</v> </b> <b> <a>37</a> - <b>120</b> - <v>394</v> + <b>118</b> + <v>403</v> </b> <b> - <a>126</a> - <b>378</b> - <v>394</v> + <a>124</a> + <b>381</b> + <v>403</v> </b> <b> - <a>379</a> - <b>730</b> - <v>394</v> + <a>381</a> + <b>728</b> + <v>403</v> </b> <b> - <a>755</a> - <b>982</b> - <v>394</v> + <a>754</a> + <b>985</b> + <v>403</v> </b> <b> - <a>992</a> - <b>1386</b> - <v>302</v> + <a>996</a> + <b>1392</b> + <v>309</v> </b> </bs> </hist> @@ -3640,62 +3528,67 @@ <b> <a>1</a> <b>2</b> - <v>539</v> + <v>551</v> </b> <b> <a>2</a> <b>3</b> - <v>697</v> + <v>712</v> </b> <b> <a>3</a> <b>4</b> - <v>315</v> + <v>322</v> </b> <b> <a>4</a> <b>5</b> - <v>368</v> + <v>363</v> + </b> + <b> + <a>5</a> + <b>7</b> + <v>363</v> </b> <b> - <a>5</a> - <b>8</b> - <v>473</v> + <a>7</a> + <b>13</b> + <v>457</v> </b> <b> - <a>8</a> - <b>15</b> - <v>421</v> + <a>13</a> + <b>35</b> + <v>403</v> </b> <b> - <a>15</a> - <b>45</b> - <v>394</v> + <a>35</a> + <b>103</b> + <v>403</v> </b> <b> - <a>45</a> - <b>125</b> - <v>394</v> + <a>109</a> + <b>281</b> + <v>403</v> </b> <b> - <a>132</a> - <b>341</b> - <v>394</v> + <a>286</a> + <b>583</b> + <v>403</v> </b> <b> - <a>342</a> - <b>667</b> - <v>394</v> + <a>591</a> + <b>927</b> + <v>403</v> </b> <b> - <a>682</a> - <b>1002</b> - <v>394</v> + <a>935</a> + <b>1163</b> + <v>403</v> </b> <b> - <a>1003</a> - <b>1403</b> - <v>394</v> + <a>1198</a> + <b>1405</b> + <v>107</v> </b> </bs> </hist> @@ -3711,62 +3604,67 @@ <b> <a>1</a> <b>2</b> - <v>539</v> + <v>551</v> </b> <b> <a>2</a> <b>3</b> - <v>697</v> + <v>712</v> </b> <b> <a>3</a> <b>4</b> - <v>315</v> + <v>322</v> </b> <b> <a>4</a> <b>5</b> - <v>368</v> + <v>363</v> </b> <b> <a>5</a> - <b>8</b> - <v>473</v> + <b>7</b> + <v>363</v> </b> <b> - <a>8</a> - <b>15</b> - <v>421</v> + <a>7</a> + <b>13</b> + <v>457</v> </b> <b> - <a>15</a> - <b>45</b> - <v>394</v> + <a>13</a> + <b>35</b> + <v>403</v> </b> <b> - <a>48</a> - <b>125</b> - <v>394</v> + <a>35</a> + <b>105</b> + <v>403</v> </b> <b> - <a>133</a> - <b>345</b> - <v>394</v> + <a>108</a> + <b>282</b> + <v>403</v> </b> <b> - <a>346</a> - <b>687</b> - <v>394</v> + <a>287</a> + <b>596</b> + <v>403</v> </b> <b> - <a>694</a> - <b>1029</b> - <v>408</v> + <a>596</a> + <b>945</b> + <v>403</v> </b> <b> - <a>1029</a> - <b>1409</b> - <v>381</v> + <a>956</a> + <b>1202</b> + <v>403</v> + </b> + <b> + <a>1223</a> + <b>1412</b> + <v>107</v> </b> </bs> </hist> @@ -3782,52 +3680,52 @@ <b> <a>1</a> <b>2</b> - <v>1290</v> + <v>1318</v> </b> <b> <a>2</a> <b>3</b> - <v>697</v> + <v>712</v> </b> <b> <a>3</a> <b>4</b> - <v>513</v> + <v>524</v> </b> <b> <a>4</a> <b>6</b> - <v>434</v> + <v>443</v> </b> <b> <a>6</a> <b>15</b> - <v>394</v> + <v>403</v> </b> <b> <a>15</a> <b>37</b> - <v>394</v> + <v>403</v> </b> <b> <a>37</a> <b>66</b> - <v>394</v> + <v>403</v> </b> <b> <a>66</a> <b>98</b> - <v>394</v> + <v>403</v> </b> <b> <a>100</a> - <b>126</b> - <v>394</v> + <b>127</b> + <v>403</v> </b> <b> - <a>126</a> + <a>128</a> <b>180</b> - <v>276</v> + <v>282</v> </b> </bs> </hist> @@ -3843,72 +3741,72 @@ <b> <a>1</a> <b>3</b> - <v>315</v> + <v>322</v> </b> <b> <a>3</a> <b>4</b> - <v>3435</v> + <v>3510</v> </b> <b> <a>4</a> <b>6</b> - <v>2474</v> + <v>2528</v> </b> <b> <a>6</a> <b>9</b> - <v>2356</v> + <v>2394</v> </b> <b> <a>9</a> <b>13</b> - <v>2448</v> + <v>2488</v> </b> <b> <a>13</a> <b>20</b> - <v>2395</v> + <v>2407</v> </b> <b> <a>20</a> - <b>32</b> - <v>2369</v> + <b>33</b> + <v>2461</v> </b> <b> - <a>32</a> - <b>61</b> - <v>2356</v> + <a>33</a> + <b>64</b> + <v>2421</v> </b> <b> - <a>61</a> - <b>102</b> - <v>2356</v> + <a>64</a> + <b>103</b> + <v>2421</v> </b> <b> - <a>102</a> - <b>145</b> - <v>2395</v> + <a>103</a> + <b>143</b> + <v>2448</v> </b> <b> - <a>145</a> - <b>219</b> - <v>2356</v> + <a>143</a> + <b>220</b> + <v>2394</v> </b> <b> - <a>219</a> - <b>436</b> - <v>2343</v> + <a>220</a> + <b>446</b> + <v>2394</v> </b> <b> - <a>443</a> - <b>1758</b> - <v>2343</v> + <a>446</a> + <b>1691</b> + <v>2394</v> </b> <b> - <a>1798</a> - <b>10208</b> - <v>1197</v> + <a>1717</a> + <b>10278</b> + <v>1237</v> </b> </bs> </hist> @@ -3924,47 +3822,47 @@ <b> <a>1</a> <b>2</b> - <v>10083</v> + <v>10304</v> </b> <b> <a>2</a> <b>3</b> - <v>5555</v> + <v>5609</v> </b> <b> <a>3</a> - <b>6</b> - <v>2343</v> + <b>7</b> + <v>2838</v> </b> <b> - <a>6</a> - <b>9</b> - <v>2330</v> + <a>7</a> + <b>10</b> + <v>2663</v> </b> <b> - <a>9</a> - <b>14</b> - <v>2501</v> + <a>10</a> + <b>15</b> + <v>2407</v> </b> <b> - <a>14</a> - <b>21</b> - <v>2343</v> + <a>15</a> + <b>23</b> + <v>2394</v> </b> <b> - <a>21</a> - <b>44</b> - <v>2369</v> + <a>23</a> + <b>58</b> + <v>2407</v> </b> <b> - <a>44</a> - <b>179</b> - <v>2356</v> + <a>58</a> + <b>287</b> + <v>2394</v> </b> <b> - <a>180</a> - <b>1370</b> - <v>1263</v> + <a>296</a> + <b>1376</b> + <v>807</v> </b> </bs> </hist> @@ -3980,42 +3878,47 @@ <b> <a>1</a> <b>2</b> - <v>11202</v> + <v>11420</v> </b> <b> <a>2</a> <b>3</b> - <v>5871</v> + <v>5959</v> </b> <b> <a>3</a> <b>4</b> - <v>2553</v> + <v>2636</v> </b> <b> <a>4</a> <b>5</b> - <v>1658</v> + <v>1654</v> </b> <b> <a>5</a> <b>7</b> - <v>2527</v> + <v>2650</v> </b> <b> <a>7</a> - <b>11</b> - <v>2830</v> + <b>10</b> + <v>2407</v> </b> <b> - <a>11</a> - <b>20</b> - <v>2422</v> + <a>10</a> + <b>17</b> + <v>2394</v> </b> <b> - <a>20</a> + <a>17</a> + <b>34</b> + <v>2434</v> + </b> + <b> + <a>34</a> <b>43</b> - <v>2079</v> + <v>269</v> </b> </bs> </hist> @@ -4031,67 +3934,67 @@ <b> <a>1</a> <b>3</b> - <v>1579</v> + <v>1614</v> </b> <b> <a>3</a> <b>4</b> - <v>3422</v> + <v>3497</v> </b> <b> <a>4</a> <b>6</b> - <v>2764</v> + <v>2824</v> </b> <b> <a>6</a> <b>8</b> - <v>1671</v> + <v>1694</v> </b> <b> <a>8</a> <b>12</b> - <v>2488</v> + <v>2502</v> </b> <b> <a>12</a> <b>17</b> - <v>2711</v> + <v>2771</v> </b> <b> <a>17</a> <b>28</b> - <v>2448</v> + <v>2421</v> </b> <b> <a>28</a> - <b>43</b> - <v>2435</v> + <b>42</b> + <v>2448</v> </b> <b> - <a>43</a> + <a>42</a> <b>55</b> - <v>2409</v> + <v>2650</v> </b> <b> <a>55</a> <b>67</b> - <v>2343</v> + <v>2407</v> </b> <b> <a>67</a> <b>82</b> - <v>2382</v> + <v>2434</v> </b> <b> <a>82</a> - <b>107</b> - <v>2409</v> + <b>108</b> + <v>2461</v> </b> <b> - <a>107</a> + <a>108</a> <b>204</b> - <v>2079</v> + <v>2098</v> </b> </bs> </hist> @@ -4107,72 +4010,72 @@ <b> <a>1</a> <b>2</b> - <v>1553</v> + <v>1587</v> </b> <b> <a>2</a> <b>3</b> - <v>1474</v> + <v>1520</v> </b> <b> <a>3</a> <b>4</b> - <v>2382</v> + <v>2421</v> </b> <b> <a>4</a> <b>6</b> - <v>2606</v> + <v>2650</v> </b> <b> <a>6</a> <b>8</b> - <v>1737</v> + <v>1748</v> </b> <b> <a>8</a> <b>13</b> - <v>2777</v> + <v>2851</v> </b> <b> <a>13</a> <b>18</b> - <v>2435</v> + <v>2448</v> </b> <b> <a>18</a> <b>30</b> - <v>2514</v> + <v>2488</v> </b> <b> <a>30</a> - <b>46</b> - <v>2567</v> + <b>45</b> + <v>2448</v> </b> <b> - <a>46</a> - <b>59</b> - <v>2409</v> + <a>45</a> + <b>58</b> + <v>2542</v> </b> <b> - <a>59</a> - <b>72</b> - <v>2369</v> + <a>58</a> + <b>71</b> + <v>2421</v> </b> <b> - <a>72</a> - <b>89</b> - <v>2409</v> + <a>71</a> + <b>86</b> + <v>2407</v> </b> <b> - <a>89</a> - <b>117</b> - <v>2435</v> + <a>86</a> + <b>113</b> + <v>2394</v> </b> <b> - <a>117</a> - <b>208</b> - <v>1474</v> + <a>113</a> + <b>209</b> + <v>1896</v> </b> </bs> </hist> @@ -4188,72 +4091,72 @@ <b> <a>1</a> <b>2</b> - <v>408</v> + <v>417</v> </b> <b> <a>2</a> <b>3</b> - <v>473</v> + <v>484</v> </b> <b> <a>3</a> <b>5</b> - <v>447</v> + <v>457</v> </b> <b> <a>5</a> <b>6</b> - <v>171</v> + <v>174</v> </b> <b> <a>6</a> <b>8</b> - <v>460</v> + <v>470</v> </b> <b> <a>8</a> <b>12</b> - <v>408</v> + <v>417</v> </b> <b> <a>12</a> <b>24</b> - <v>408</v> + <v>417</v> </b> <b> <a>24</a> <b>72</b> - <v>408</v> + <v>417</v> </b> <b> <a>76</a> - <b>275</b> - <v>408</v> + <b>277</b> + <v>417</v> </b> <b> - <a>277</a> - <b>1197</b> - <v>408</v> + <a>278</a> + <b>1206</b> + <v>417</v> </b> <b> <a>1227</a> - <b>3883</b> - <v>408</v> + <b>3859</b> + <v>417</v> </b> <b> - <a>3987</a> - <b>8621</b> - <v>408</v> + <a>3977</a> + <b>8618</b> + <v>417</v> </b> <b> - <a>9003</a> - <b>11196</b> - <v>408</v> + <a>9094</a> + <b>11251</b> + <v>417</v> </b> <b> - <a>11489</a> - <b>19733</b> - <v>65</v> + <a>11548</a> + <b>19740</b> + <v>67</v> </b> </bs> </hist> @@ -4269,52 +4172,52 @@ <b> <a>1</a> <b>2</b> - <v>1448</v> + <v>1479</v> </b> <b> <a>2</a> <b>3</b> - <v>566</v> + <v>578</v> </b> <b> <a>3</a> <b>4</b> - <v>552</v> + <v>538</v> </b> <b> <a>4</a> - <b>9</b> - <v>447</v> + <b>8</b> + <v>417</v> </b> <b> - <a>9</a> - <b>46</b> - <v>408</v> + <a>8</a> + <b>29</b> + <v>417</v> </b> <b> - <a>46</a> - <b>152</b> - <v>408</v> + <a>35</a> + <b>115</b> + <v>417</v> </b> <b> - <a>159</a> - <b>442</b> - <v>408</v> + <a>115</a> + <b>399</b> + <v>417</v> </b> <b> - <a>454</a> - <b>851</b> - <v>408</v> + <a>427</a> + <b>798</b> + <v>417</v> </b> <b> - <a>868</a> - <b>1055</b> - <v>408</v> + <a>805</a> + <b>1038</b> + <v>417</v> </b> <b> - <a>1055</a> - <b>1353</b> - <v>236</v> + <a>1039</a> + <b>1359</b> + <v>309</v> </b> </bs> </hist> @@ -4330,62 +4233,62 @@ <b> <a>1</a> <b>2</b> - <v>579</v> + <v>591</v> </b> <b> <a>2</a> <b>3</b> - <v>631</v> + <v>645</v> </b> <b> <a>3</a> <b>4</b> - <v>329</v> + <v>336</v> </b> <b> <a>4</a> <b>6</b> - <v>460</v> + <v>470</v> </b> <b> <a>6</a> <b>9</b> - <v>473</v> + <v>470</v> </b> <b> <a>9</a> <b>17</b> - <v>421</v> + <v>443</v> </b> <b> <a>17</a> - <b>45</b> - <v>408</v> + <b>47</b> + <v>417</v> </b> <b> - <a>49</a> - <b>149</b> - <v>408</v> + <a>51</a> + <b>153</b> + <v>417</v> </b> <b> - <a>150</a> - <b>385</b> - <v>421</v> + <a>153</a> + <b>387</b> + <v>417</v> </b> <b> - <a>389</a> - <b>729</b> - <v>408</v> + <a>390</a> + <b>717</b> + <v>417</v> </b> <b> - <a>736</a> - <b>1057</b> - <v>408</v> + <a>730</a> + <b>1059</b> + <v>417</v> </b> <b> - <a>1060</a> - <b>1397</b> - <v>342</v> + <a>1062</a> + <b>1404</b> + <v>363</v> </b> </bs> </hist> @@ -4401,62 +4304,62 @@ <b> <a>1</a> <b>2</b> - <v>908</v> + <v>928</v> </b> <b> <a>2</a> <b>3</b> - <v>381</v> + <v>390</v> </b> <b> <a>3</a> <b>4</b> - <v>487</v> + <v>497</v> </b> <b> <a>4</a> <b>5</b> - <v>355</v> + <v>363</v> </b> <b> <a>5</a> <b>7</b> - <v>368</v> + <v>363</v> </b> <b> <a>7</a> <b>14</b> - <v>434</v> + <v>443</v> </b> <b> <a>15</a> <b>33</b> - <v>447</v> + <v>470</v> </b> <b> <a>33</a> <b>49</b> - <v>408</v> + <v>417</v> </b> <b> <a>49</a> <b>64</b> - <v>434</v> + <v>430</v> </b> <b> - <a>64</a> - <b>82</b> - <v>421</v> + <a>65</a> + <b>81</b> + <v>417</v> </b> <b> - <a>83</a> + <a>81</a> <b>96</b> - <v>421</v> + <v>457</v> </b> <b> <a>97</a> - <b>108</b> - <v>223</v> + <b>109</b> + <v>228</v> </b> </bs> </hist> @@ -4472,62 +4375,62 @@ <b> <a>1</a> <b>2</b> - <v>579</v> + <v>591</v> </b> <b> <a>2</a> <b>3</b> - <v>645</v> + <v>659</v> </b> <b> <a>3</a> <b>4</b> - <v>329</v> + <v>336</v> </b> <b> <a>4</a> <b>6</b> - <v>447</v> + <v>457</v> </b> <b> <a>6</a> <b>9</b> - <v>473</v> + <v>470</v> </b> <b> <a>9</a> - <b>17</b> - <v>447</v> + <b>16</b> + <v>417</v> </b> <b> - <a>17</a> - <b>55</b> - <v>408</v> + <a>16</a> + <b>43</b> + <v>430</v> </b> <b> - <a>55</a> - <b>162</b> - <v>408</v> + <a>45</a> + <b>151</b> + <v>430</v> </b> <b> - <a>171</a> - <b>382</b> - <v>408</v> + <a>161</a> + <b>379</b> + <v>417</v> </b> <b> - <a>396</a> - <b>729</b> - <v>408</v> + <a>384</a> + <b>712</b> + <v>417</v> </b> <b> - <a>767</a> - <b>1048</b> - <v>408</v> + <a>729</a> + <b>1046</b> + <v>417</v> </b> <b> - <a>1056</a> - <b>1390</b> - <v>329</v> + <a>1049</a> + <b>1397</b> + <v>363</v> </b> </bs> </hist> @@ -4537,19 +4440,19 @@ </relation> <relation> <name>ruby_alias_def</name> - <cardinality>1307</cardinality> + <cardinality>1289</cardinality> <columnsizes> <e> <k>id</k> - <v>1307</v> + <v>1289</v> </e> <e> <k>alias</k> - <v>1307</v> + <v>1289</v> </e> <e> <k>name</k> - <v>1307</v> + <v>1289</v> </e> </columnsizes> <dependencies> @@ -4563,7 +4466,7 @@ <b> <a>1</a> <b>2</b> - <v>1307</v> + <v>1289</v> </b> </bs> </hist> @@ -4579,7 +4482,7 @@ <b> <a>1</a> <b>2</b> - <v>1307</v> + <v>1289</v> </b> </bs> </hist> @@ -4595,7 +4498,7 @@ <b> <a>1</a> <b>2</b> - <v>1307</v> + <v>1289</v> </b> </bs> </hist> @@ -4611,7 +4514,7 @@ <b> <a>1</a> <b>2</b> - <v>1307</v> + <v>1289</v> </b> </bs> </hist> @@ -4627,7 +4530,7 @@ <b> <a>1</a> <b>2</b> - <v>1307</v> + <v>1289</v> </b> </bs> </hist> @@ -4643,7 +4546,7 @@ <b> <a>1</a> <b>2</b> - <v>1307</v> + <v>1289</v> </b> </bs> </hist> @@ -4820,19 +4723,19 @@ </relation> <relation> <name>ruby_argument_list_child</name> - <cardinality>861033</cardinality> + <cardinality>879410</cardinality> <columnsizes> <e> <k>ruby_argument_list</k> - <v>691475</v> + <v>706205</v> </e> <e> <k>index</k> - <v>434</v> + <v>443</v> </e> <e> <k>child</k> - <v>861033</v> + <v>879410</v> </e> </columnsizes> <dependencies> @@ -4846,17 +4749,17 @@ <b> <a>1</a> <b>2</b> - <v>584369</v> + <v>596855</v> </b> <b> <a>2</a> <b>3</b> - <v>67125</v> + <v>68483</v> </b> <b> <a>3</a> <b>34</b> - <v>39980</v> + <v>40866</v> </b> </bs> </hist> @@ -4872,17 +4775,17 @@ <b> <a>1</a> <b>2</b> - <v>584369</v> + <v>596855</v> </b> <b> <a>2</a> <b>3</b> - <v>67125</v> + <v>68483</v> </b> <b> <a>3</a> <b>34</b> - <v>39980</v> + <v>40866</v> </b> </bs> </hist> @@ -4898,46 +4801,46 @@ <b> <a>1</a> <b>2</b> - <v>144</v> + <v>147</v> </b> <b> <a>2</a> <b>3</b> - <v>39</v> + <v>40</v> </b> <b> <a>3</a> <b>7</b> - <v>39</v> + <v>40</v> </b> <b> <a>7</a> <b>11</b> - <v>39</v> + <v>40</v> </b> <b> <a>11</a> <b>21</b> - <v>39</v> + <v>40</v> </b> <b> <a>23</a> <b>45</b> - <v>39</v> + <v>40</v> </b> <b> <a>56</a> - <b>386</b> - <v>39</v> + <b>385</b> + <v>40</v> </b> <b> - <a>960</a> - <b>8137</b> - <v>39</v> + <a>963</a> + <b>8130</b> + <v>40</v> </b> <b> - <a>52526</a> - <b>52527</b> + <a>52499</a> + <b>52500</b> <v>13</v> </b> </bs> @@ -4954,46 +4857,46 @@ <b> <a>1</a> <b>2</b> - <v>144</v> + <v>147</v> </b> <b> <a>2</a> <b>3</b> - <v>39</v> + <v>40</v> </b> <b> <a>3</a> <b>7</b> - <v>39</v> + <v>40</v> </b> <b> <a>7</a> <b>11</b> - <v>39</v> + <v>40</v> </b> <b> <a>11</a> <b>21</b> - <v>39</v> + <v>40</v> </b> <b> <a>23</a> <b>45</b> - <v>39</v> + <v>40</v> </b> <b> <a>56</a> - <b>386</b> - <v>39</v> + <b>385</b> + <v>40</v> </b> <b> - <a>960</a> - <b>8137</b> - <v>39</v> + <a>963</a> + <b>8130</b> + <v>40</v> </b> <b> - <a>52526</a> - <b>52527</b> + <a>52499</a> + <b>52500</b> <v>13</v> </b> </bs> @@ -5010,7 +4913,7 @@ <b> <a>1</a> <b>2</b> - <v>861033</v> + <v>879410</v> </b> </bs> </hist> @@ -5026,7 +4929,7 @@ <b> <a>1</a> <b>2</b> - <v>861033</v> + <v>879410</v> </b> </bs> </hist> @@ -5036,22 +4939,22 @@ </relation> <relation> <name>ruby_argument_list_def</name> - <cardinality>691738</cardinality> + <cardinality>706474</cardinality> <columnsizes> <e> <k>id</k> - <v>691738</v> + <v>706474</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_array_child</name> - <cardinality>704712</cardinality> + <cardinality>708919</cardinality> <columnsizes> <e> <k>ruby_array</k> - <v>239714</v> + <v>240456</v> </e> <e> <k>index</k> @@ -5059,7 +4962,7 @@ </e> <e> <k>child</k> - <v>704712</v> + <v>708919</v> </e> </columnsizes> <dependencies> @@ -5073,17 +4976,17 @@ <b> <a>1</a> <b>2</b> - <v>12460</v> + <v>12708</v> </b> <b> <a>2</a> <b>3</b> - <v>213368</v> + <v>213730</v> </b> <b> <a>3</a> <b>63361</b> - <v>13886</v> + <v>14018</v> </b> </bs> </hist> @@ -5099,17 +5002,17 @@ <b> <a>1</a> <b>2</b> - <v>12460</v> + <v>12708</v> </b> <b> <a>2</a> <b>3</b> - <v>213368</v> + <v>213730</v> </b> <b> <a>3</a> <b>63361</b> - <v>13886</v> + <v>14018</v> </b> </bs> </hist> @@ -5149,7 +5052,7 @@ </b> <b> <a>11</a> - <b>239715</b> + <b>240457</b> <v>1294</v> </b> </bs> @@ -5190,7 +5093,7 @@ </b> <b> <a>11</a> - <b>239715</b> + <b>240457</b> <v>1294</v> </b> </bs> @@ -5207,7 +5110,7 @@ <b> <a>1</a> <b>2</b> - <v>704712</v> + <v>708919</v> </b> </bs> </hist> @@ -5223,7 +5126,7 @@ <b> <a>1</a> <b>2</b> - <v>704712</v> + <v>708919</v> </b> </bs> </hist> @@ -5233,22 +5136,22 @@ </relation> <relation> <name>ruby_array_def</name> - <cardinality>248289</cardinality> + <cardinality>249320</cardinality> <columnsizes> <e> <k>id</k> - <v>248289</v> + <v>249320</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_array_pattern_child</name> - <cardinality>334</cardinality> + <cardinality>336</cardinality> <columnsizes> <e> <k>ruby_array_pattern</k> - <v>167</v> + <v>168</v> </e> <e> <k>index</k> @@ -5256,7 +5159,7 @@ </e> <e> <k>child</k> - <v>334</v> + <v>336</v> </e> </columnsizes> <dependencies> @@ -5275,7 +5178,7 @@ <b> <a>2</a> <b>3</b> - <v>96</v> + <v>97</v> </b> <b> <a>3</a> @@ -5306,7 +5209,7 @@ <b> <a>2</a> <b>3</b> - <v>96</v> + <v>97</v> </b> <b> <a>3</a> @@ -5355,13 +5258,13 @@ <v>1</v> </b> <b> - <a>116</a> - <b>117</b> + <a>117</a> + <b>118</b> <v>1</v> </b> <b> - <a>167</a> - <b>168</b> + <a>168</a> + <b>169</b> <v>1</v> </b> </bs> @@ -5401,13 +5304,13 @@ <v>1</v> </b> <b> - <a>116</a> - <b>117</b> + <a>117</a> + <b>118</b> <v>1</v> </b> <b> - <a>167</a> - <b>168</b> + <a>168</a> + <b>169</b> <v>1</v> </b> </bs> @@ -5424,7 +5327,7 @@ <b> <a>1</a> <b>2</b> - <v>334</v> + <v>336</v> </b> </bs> </hist> @@ -5440,7 +5343,7 @@ <b> <a>1</a> <b>2</b> - <v>334</v> + <v>336</v> </b> </bs> </hist> @@ -5450,15 +5353,15 @@ </relation> <relation> <name>ruby_array_pattern_class</name> - <cardinality>50</cardinality> + <cardinality>51</cardinality> <columnsizes> <e> <k>ruby_array_pattern</k> - <v>50</v> + <v>51</v> </e> <e> <k>class</k> - <v>50</v> + <v>51</v> </e> </columnsizes> <dependencies> @@ -5472,7 +5375,7 @@ <b> <a>1</a> <b>2</b> - <v>50</v> + <v>51</v> </b> </bs> </hist> @@ -5488,7 +5391,7 @@ <b> <a>1</a> <b>2</b> - <v>50</v> + <v>51</v> </b> </bs> </hist> @@ -5498,30 +5401,30 @@ </relation> <relation> <name>ruby_array_pattern_def</name> - <cardinality>178</cardinality> + <cardinality>179</cardinality> <columnsizes> <e> <k>id</k> - <v>178</v> + <v>179</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_as_pattern_def</name> - <cardinality>153</cardinality> + <cardinality>156</cardinality> <columnsizes> <e> <k>id</k> - <v>153</v> + <v>156</v> </e> <e> <k>name</k> - <v>153</v> + <v>156</v> </e> <e> <k>value</k> - <v>153</v> + <v>156</v> </e> </columnsizes> <dependencies> @@ -5535,7 +5438,7 @@ <b> <a>1</a> <b>2</b> - <v>153</v> + <v>156</v> </b> </bs> </hist> @@ -5551,7 +5454,7 @@ <b> <a>1</a> <b>2</b> - <v>153</v> + <v>156</v> </b> </bs> </hist> @@ -5567,7 +5470,7 @@ <b> <a>1</a> <b>2</b> - <v>153</v> + <v>156</v> </b> </bs> </hist> @@ -5583,7 +5486,7 @@ <b> <a>1</a> <b>2</b> - <v>153</v> + <v>156</v> </b> </bs> </hist> @@ -5599,7 +5502,7 @@ <b> <a>1</a> <b>2</b> - <v>153</v> + <v>156</v> </b> </bs> </hist> @@ -5615,7 +5518,7 @@ <b> <a>1</a> <b>2</b> - <v>153</v> + <v>156</v> </b> </bs> </hist> @@ -5625,19 +5528,19 @@ </relation> <relation> <name>ruby_assignment_def</name> - <cardinality>137583</cardinality> + <cardinality>141202</cardinality> <columnsizes> <e> <k>id</k> - <v>137583</v> + <v>141202</v> </e> <e> <k>left</k> - <v>137583</v> + <v>141202</v> </e> <e> <k>right</k> - <v>137583</v> + <v>141202</v> </e> </columnsizes> <dependencies> @@ -5651,7 +5554,7 @@ <b> <a>1</a> <b>2</b> - <v>137583</v> + <v>141202</v> </b> </bs> </hist> @@ -5667,7 +5570,7 @@ <b> <a>1</a> <b>2</b> - <v>137583</v> + <v>141202</v> </b> </bs> </hist> @@ -5683,7 +5586,7 @@ <b> <a>1</a> <b>2</b> - <v>137583</v> + <v>141202</v> </b> </bs> </hist> @@ -5699,7 +5602,7 @@ <b> <a>1</a> <b>2</b> - <v>137583</v> + <v>141202</v> </b> </bs> </hist> @@ -5715,7 +5618,7 @@ <b> <a>1</a> <b>2</b> - <v>137583</v> + <v>141202</v> </b> </bs> </hist> @@ -5731,39 +5634,31 @@ <b> <a>1</a> <b>2</b> - <v>137583</v> + <v>141202</v> </b> </bs> </hist> </val> </dep> </dependencies> - </relation> - <relation> - <name>ruby_ast_node_info</name> - <cardinality>9511543</cardinality> - <columnsizes> - <e> - <k>node</k> - <v>9511543</v> - </e> - <e> - <k>parent</k> - <v>3325876</v> - </e> + </relation> + <relation> + <name>ruby_ast_node_location</name> + <cardinality>9723503</cardinality> + <columnsizes> <e> - <k>parent_index</k> - <v>2830</v> + <k>node</k> + <v>9723503</v> </e> <e> <k>loc</k> - <v>9008872</v> + <v>9209550</v> </e> </columnsizes> <dependencies> <dep> <src>node</src> - <trg>parent</trg> + <trg>loc</trg> <val> <hist> <budget>12</budget> @@ -5771,15 +5666,15 @@ <b> <a>1</a> <b>2</b> - <v>9511543</v> + <v>9723503</v> </b> </bs> </hist> </val> </dep> <dep> - <src>node</src> - <trg>parent_index</trg> + <src>loc</src> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -5787,15 +5682,40 @@ <b> <a>1</a> <b>2</b> - <v>9511543</v> + <v>8697279</v> + </b> + <b> + <a>2</a> + <b>4</b> + <v>512270</v> </b> </bs> </hist> </val> </dep> + </dependencies> + </relation> + <relation> + <name>ruby_ast_node_parent</name> + <cardinality>9674605</cardinality> + <columnsizes> + <e> + <k>node</k> + <v>9674605</v> + </e> + <e> + <k>parent</k> + <v>3381025</v> + </e> + <e> + <k>parent_index</k> + <v>2892</v> + </e> + </columnsizes> + <dependencies> <dep> <src>node</src> - <trg>loc</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -5803,15 +5723,15 @@ <b> <a>1</a> <b>2</b> - <v>9511543</v> + <v>9674605</v> </b> </bs> </hist> </val> </dep> <dep> - <src>parent</src> - <trg>node</trg> + <src>node</src> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -5819,27 +5739,7 @@ <b> <a>1</a> <b>2</b> - <v>535595</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>457056</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>1793325</v> - </b> - <b> - <a>4</a> - <b>5</b> - <v>352556</v> - </b> - <b> - <a>5</a> - <b>216</b> - <v>187343</v> + <v>9674605</v> </b> </bs> </hist> @@ -5847,7 +5747,7 @@ </dep> <dep> <src>parent</src> - <trg>parent_index</trg> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -5855,27 +5755,27 @@ <b> <a>1</a> <b>2</b> - <v>535595</v> + <v>533793</v> </b> <b> <a>2</a> <b>3</b> - <v>457056</v> + <v>465418</v> </b> <b> <a>3</a> <b>4</b> - <v>1793325</v> + <v>1832321</v> </b> <b> <a>4</a> <b>5</b> - <v>352556</v> + <v>359620</v> </b> <b> <a>5</a> <b>216</b> - <v>187343</v> + <v>189871</v> </b> </bs> </hist> @@ -5883,7 +5783,7 @@ </dep> <dep> <src>parent</src> - <trg>loc</trg> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -5891,27 +5791,27 @@ <b> <a>1</a> <b>2</b> - <v>535595</v> + <v>533793</v> </b> <b> <a>2</a> <b>3</b> - <v>457056</v> + <v>465418</v> </b> <b> <a>3</a> <b>4</b> - <v>1793325</v> + <v>1832321</v> </b> <b> <a>4</a> <b>5</b> - <v>352556</v> + <v>359620</v> </b> <b> <a>5</a> <b>216</b> - <v>187343</v> + <v>189871</v> </b> </bs> </hist> @@ -5927,57 +5827,52 @@ <b> <a>1</a> <b>2</b> - <v>460</v> + <v>470</v> </b> <b> <a>2</a> <b>3</b> - <v>236</v> + <v>242</v> </b> <b> <a>3</a> <b>4</b> - <v>355</v> + <v>363</v> </b> <b> <a>4</a> <b>6</b> - <v>157</v> + <v>161</v> </b> <b> <a>6</a> <b>7</b> - <v>315</v> + <v>484</v> </b> <b> <a>7</a> - <b>11</b> - <v>250</v> - </b> - <b> - <a>11</a> - <b>21</b> - <v>197</v> + <b>17</b> + <v>255</v> </b> <b> - <a>21</a> - <b>42</b> - <v>223</v> + <a>17</a> + <b>29</b> + <v>228</v> </b> <b> - <a>43</a> - <b>94</b> - <v>223</v> + <a>33</a> + <b>71</b> + <v>228</v> </b> <b> - <a>98</a> - <b>498</b> - <v>223</v> + <a>72</a> + <b>298</b> + <v>228</v> </b> <b> - <a>533</a> - <b>252642</b> - <v>184</v> + <a>358</a> + <b>251345</b> + <v>228</v> </b> </bs> </hist> @@ -5993,186 +5888,52 @@ <b> <a>1</a> <b>2</b> - <v>460</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>236</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>355</v> - </b> - <b> - <a>4</a> - <b>6</b> - <v>157</v> - </b> - <b> - <a>6</a> - <b>7</b> - <v>315</v> - </b> - <b> - <a>7</a> - <b>11</b> - <v>250</v> - </b> - <b> - <a>11</a> - <b>21</b> - <v>197</v> - </b> - <b> - <a>21</a> - <b>42</b> - <v>223</v> - </b> - <b> - <a>43</a> - <b>94</b> - <v>223</v> - </b> - <b> - <a>98</a> - <b>498</b> - <v>223</v> - </b> - <b> - <a>533</a> - <b>252642</b> - <v>184</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>parent_index</src> - <trg>loc</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>460</v> + <v>470</v> </b> <b> <a>2</a> <b>3</b> - <v>236</v> + <v>242</v> </b> <b> <a>3</a> <b>4</b> - <v>355</v> + <v>363</v> </b> <b> <a>4</a> <b>6</b> - <v>157</v> + <v>161</v> </b> <b> <a>6</a> <b>7</b> - <v>315</v> + <v>484</v> </b> <b> <a>7</a> - <b>11</b> - <v>250</v> - </b> - <b> - <a>11</a> - <b>21</b> - <v>197</v> - </b> - <b> - <a>21</a> - <b>42</b> - <v>223</v> - </b> - <b> - <a>43</a> - <b>94</b> - <v>223</v> - </b> - <b> - <a>98</a> - <b>498</b> - <v>223</v> - </b> - <b> - <a>533</a> - <b>252273</b> - <v>184</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>node</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>8507847</v> - </b> - <b> - <a>2</a> - <b>4</b> - <v>501025</v> + <b>17</b> + <v>255</v> </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs> <b> - <a>1</a> - <b>2</b> - <v>8507847</v> + <a>17</a> + <b>29</b> + <v>228</v> </b> <b> - <a>2</a> - <b>4</b> - <v>501025</v> + <a>33</a> + <b>71</b> + <v>228</v> </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent_index</trg> - <val> - <hist> - <budget>12</budget> - <bs> <b> - <a>1</a> - <b>2</b> - <v>8511059</v> + <a>72</a> + <b>298</b> + <v>228</v> </b> <b> - <a>2</a> - <b>3</b> - <v>497813</v> + <a>358</a> + <b>251345</b> + <v>228</v> </b> </bs> </hist> @@ -6182,11 +5943,11 @@ </relation> <relation> <name>ruby_bare_string_child</name> - <cardinality>16385</cardinality> + <cardinality>16784</cardinality> <columnsizes> <e> <k>ruby_bare_string</k> - <v>12799</v> + <v>13136</v> </e> <e> <k>index</k> @@ -6194,7 +5955,7 @@ </e> <e> <k>child</k> - <v>16385</v> + <v>16784</v> </e> </columnsizes> <dependencies> @@ -6208,12 +5969,12 @@ <b> <a>1</a> <b>2</b> - <v>12434</v> + <v>12728</v> </b> <b> <a>2</a> <b>2310</b> - <v>365</v> + <v>408</v> </b> </bs> </hist> @@ -6229,12 +5990,12 @@ <b> <a>1</a> <b>2</b> - <v>12434</v> + <v>12728</v> </b> <b> <a>2</a> <b>2310</b> - <v>365</v> + <v>408</v> </b> </bs> </hist> @@ -6264,7 +6025,7 @@ </b> <b> <a>4</a> - <b>12800</b> + <b>13137</b> <v>19</v> </b> </bs> @@ -6295,7 +6056,7 @@ </b> <b> <a>4</a> - <b>12800</b> + <b>13137</b> <v>19</v> </b> </bs> @@ -6312,7 +6073,7 @@ <b> <a>1</a> <b>2</b> - <v>16385</v> + <v>16784</v> </b> </bs> </hist> @@ -6328,7 +6089,7 @@ <b> <a>1</a> <b>2</b> - <v>16385</v> + <v>16784</v> </b> </bs> </hist> @@ -6338,22 +6099,22 @@ </relation> <relation> <name>ruby_bare_string_def</name> - <cardinality>12799</cardinality> + <cardinality>13136</cardinality> <columnsizes> <e> <k>id</k> - <v>12799</v> + <v>13136</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_bare_symbol_child</name> - <cardinality>7967</cardinality> + <cardinality>8435</cardinality> <columnsizes> <e> <k>ruby_bare_symbol</k> - <v>7967</v> + <v>8435</v> </e> <e> <k>index</k> @@ -6361,7 +6122,7 @@ </e> <e> <k>child</k> - <v>7967</v> + <v>8435</v> </e> </columnsizes> <dependencies> @@ -6375,7 +6136,7 @@ <b> <a>1</a> <b>2</b> - <v>7967</v> + <v>8435</v> </b> </bs> </hist> @@ -6391,7 +6152,7 @@ <b> <a>1</a> <b>2</b> - <v>7967</v> + <v>8435</v> </b> </bs> </hist> @@ -6405,8 +6166,8 @@ <budget>12</budget> <bs> <b> - <a>3128</a> - <b>3129</b> + <a>3570</a> + <b>3571</b> <v>2</v> </b> </bs> @@ -6421,8 +6182,8 @@ <budget>12</budget> <bs> <b> - <a>3128</a> - <b>3129</b> + <a>3570</a> + <b>3571</b> <v>2</v> </b> </bs> @@ -6439,7 +6200,7 @@ <b> <a>1</a> <b>2</b> - <v>7967</v> + <v>8435</v> </b> </bs> </hist> @@ -6455,7 +6216,7 @@ <b> <a>1</a> <b>2</b> - <v>7967</v> + <v>8435</v> </b> </bs> </hist> @@ -6465,18 +6226,18 @@ </relation> <relation> <name>ruby_bare_symbol_def</name> - <cardinality>7967</cardinality> + <cardinality>8435</cardinality> <columnsizes> <e> <k>id</k> - <v>7967</v> + <v>8435</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_begin_block_child</name> - <cardinality>33</cardinality> + <cardinality>39</cardinality> <columnsizes> <e> <k>ruby_begin_block</k> @@ -6488,7 +6249,7 @@ </e> <e> <k>child</k> - <v>33</v> + <v>39</v> </e> </columnsizes> <dependencies> @@ -6502,7 +6263,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>3</v> </b> <b> <a>2</a> @@ -6512,17 +6273,12 @@ <b> <a>3</a> <b>4</b> - <v>1</v> - </b> - <b> - <a>5</a> - <b>6</b> <v>2</v> </b> <b> <a>7</a> <b>8</b> - <v>2</v> + <v>4</v> </b> </bs> </hist> @@ -6538,7 +6294,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>3</v> </b> <b> <a>2</a> @@ -6548,17 +6304,12 @@ <b> <a>3</a> <b>4</b> - <v>1</v> - </b> - <b> - <a>5</a> - <b>6</b> <v>2</v> </b> <b> <a>7</a> <b>8</b> - <v>2</v> + <v>4</v> </b> </bs> </hist> @@ -6571,24 +6322,19 @@ <hist> <budget>12</budget> <bs> - <b> - <a>2</a> - <b>3</b> - <v>2</v> - </b> <b> <a>4</a> <b>5</b> - <v>2</v> + <v>4</v> </b> <b> - <a>5</a> - <b>6</b> + <a>6</a> + <b>7</b> <v>1</v> </b> <b> - <a>6</a> - <b>7</b> + <a>7</a> + <b>8</b> <v>1</v> </b> <b> @@ -6607,26 +6353,21 @@ <hist> <budget>12</budget> <bs> - <b> - <a>2</a> - <b>3</b> - <v>2</v> - </b> <b> <a>4</a> <b>5</b> - <v>2</v> - </b> - <b> - <a>5</a> - <b>6</b> - <v>1</v> + <v>4</v> </b> <b> <a>6</a> <b>7</b> <v>1</v> </b> + <b> + <a>7</a> + <b>8</b> + <v>1</v> + </b> <b> <a>10</a> <b>11</b> @@ -6646,7 +6387,7 @@ <b> <a>1</a> <b>2</b> - <v>33</v> + <v>39</v> </b> </bs> </hist> @@ -6662,7 +6403,7 @@ <b> <a>1</a> <b>2</b> - <v>33</v> + <v>39</v> </b> </bs> </hist> @@ -6683,11 +6424,11 @@ </relation> <relation> <name>ruby_begin_child</name> - <cardinality>7613</cardinality> + <cardinality>7606</cardinality> <columnsizes> <e> <k>ruby_begin</k> - <v>2590</v> + <v>2610</v> </e> <e> <k>index</k> @@ -6695,7 +6436,7 @@ </e> <e> <k>child</k> - <v>7613</v> + <v>7606</v> </e> </columnsizes> <dependencies> @@ -6709,32 +6450,32 @@ <b> <a>1</a> <b>2</b> - <v>163</v> + <v>161</v> </b> <b> <a>2</a> <b>3</b> - <v>1398</v> + <v>1414</v> </b> <b> <a>3</a> <b>4</b> - <v>512</v> + <v>537</v> </b> <b> <a>4</a> <b>5</b> - <v>211</v> + <v>200</v> </b> <b> <a>5</a> <b>8</b> - <v>226</v> + <v>221</v> </b> <b> <a>8</a> <b>40</b> - <v>80</v> + <v>77</v> </b> </bs> </hist> @@ -6750,32 +6491,32 @@ <b> <a>1</a> <b>2</b> - <v>163</v> + <v>161</v> </b> <b> <a>2</a> <b>3</b> - <v>1398</v> + <v>1414</v> </b> <b> <a>3</a> <b>4</b> - <v>512</v> + <v>537</v> </b> <b> <a>4</a> <b>5</b> - <v>211</v> + <v>200</v> </b> <b> <a>5</a> <b>8</b> - <v>226</v> + <v>221</v> </b> <b> <a>8</a> <b>40</b> - <v>80</v> + <v>77</v> </b> </bs> </hist> @@ -6824,23 +6565,23 @@ <v>3</v> </b> <b> - <a>39</a> - <b>62</b> + <a>37</a> + <b>59</b> <v>3</v> </b> <b> - <a>80</a> - <b>175</b> + <a>77</a> + <b>166</b> <v>3</v> </b> <b> - <a>306</a> - <b>1030</b> + <a>298</a> + <b>1036</b> <v>3</v> </b> <b> - <a>2427</a> - <b>2591</b> + <a>2449</a> + <b>2611</b> <v>2</v> </b> </bs> @@ -6890,23 +6631,23 @@ <v>3</v> </b> <b> - <a>39</a> - <b>62</b> + <a>37</a> + <b>59</b> <v>3</v> </b> <b> - <a>80</a> - <b>175</b> + <a>77</a> + <b>166</b> <v>3</v> </b> <b> - <a>306</a> - <b>1030</b> + <a>298</a> + <b>1036</b> <v>3</v> </b> <b> - <a>2427</a> - <b>2591</b> + <a>2449</a> + <b>2611</b> <v>2</v> </b> </bs> @@ -6923,7 +6664,7 @@ <b> <a>1</a> <b>2</b> - <v>7613</v> + <v>7606</v> </b> </bs> </hist> @@ -6939,7 +6680,7 @@ <b> <a>1</a> <b>2</b> - <v>7613</v> + <v>7606</v> </b> </bs> </hist> @@ -6949,26 +6690,26 @@ </relation> <relation> <name>ruby_begin_def</name> - <cardinality>2590</cardinality> + <cardinality>2610</cardinality> <columnsizes> <e> <k>id</k> - <v>2590</v> + <v>2610</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_binary_def</name> - <cardinality>71864</cardinality> + <cardinality>73665</cardinality> <columnsizes> <e> <k>id</k> - <v>71864</v> + <v>73665</v> </e> <e> <k>left</k> - <v>71864</v> + <v>73665</v> </e> <e> <k>operator</k> @@ -6976,7 +6717,7 @@ </e> <e> <k>right</k> - <v>71864</v> + <v>73665</v> </e> </columnsizes> <dependencies> @@ -6990,7 +6731,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7006,7 +6747,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7022,7 +6763,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7038,7 +6779,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7054,7 +6795,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7070,7 +6811,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7084,68 +6825,68 @@ <budget>12</budget> <bs> <b> - <a>160</a> - <b>169</b> + <a>153</a> + <b>177</b> <v>2</v> </b> <b> - <a>234</a> - <b>408</b> + <a>259</a> + <b>432</b> <v>2</v> </b> <b> - <a>570</a> - <b>596</b> + <a>597</a> + <b>631</b> <v>2</v> </b> <b> - <a>635</a> - <b>657</b> + <a>647</a> + <b>690</b> <v>2</v> </b> <b> - <a>778</a> - <b>974</b> + <a>764</a> + <b>987</b> <v>2</v> </b> <b> - <a>979</a> - <b>1001</b> + <a>1026</a> + <b>1033</b> <v>2</v> </b> <b> - <a>1014</a> - <b>1071</b> + <a>1058</a> + <b>1073</b> <v>2</v> </b> <b> - <a>1233</a> - <b>1270</b> + <a>1169</a> + <b>1190</b> <v>2</v> </b> <b> - <a>1358</a> - <b>1801</b> + <a>1227</a> + <b>1824</b> <v>2</v> </b> <b> - <a>1837</a> - <b>2322</b> + <a>2079</a> + <b>2661</b> <v>2</v> </b> <b> - <a>2691</a> - <b>3561</b> + <a>2747</a> + <b>3491</b> <v>2</v> </b> <b> - <a>6453</a> - <b>7170</b> + <a>6593</a> + <b>7408</b> <v>2</v> </b> <b> - <a>32934</a> - <b>32935</b> + <a>33761</a> + <b>33762</b> <v>1</v> </b> </bs> @@ -7160,68 +6901,68 @@ <budget>12</budget> <bs> <b> - <a>160</a> - <b>169</b> + <a>153</a> + <b>177</b> <v>2</v> </b> <b> - <a>234</a> - <b>408</b> + <a>259</a> + <b>432</b> <v>2</v> </b> <b> - <a>570</a> - <b>596</b> + <a>597</a> + <b>631</b> <v>2</v> </b> <b> - <a>635</a> - <b>657</b> + <a>647</a> + <b>690</b> <v>2</v> </b> <b> - <a>778</a> - <b>974</b> + <a>764</a> + <b>987</b> <v>2</v> </b> <b> - <a>979</a> - <b>1001</b> + <a>1026</a> + <b>1033</b> <v>2</v> </b> <b> - <a>1014</a> - <b>1071</b> + <a>1058</a> + <b>1073</b> <v>2</v> </b> <b> - <a>1233</a> - <b>1270</b> + <a>1169</a> + <b>1190</b> <v>2</v> </b> <b> - <a>1358</a> - <b>1801</b> + <a>1227</a> + <b>1824</b> <v>2</v> </b> <b> - <a>1837</a> - <b>2322</b> + <a>2079</a> + <b>2661</b> <v>2</v> </b> <b> - <a>2691</a> - <b>3561</b> + <a>2747</a> + <b>3491</b> <v>2</v> </b> <b> - <a>6453</a> - <b>7170</b> + <a>6593</a> + <b>7408</b> <v>2</v> </b> <b> - <a>32934</a> - <b>32935</b> + <a>33761</a> + <b>33762</b> <v>1</v> </b> </bs> @@ -7236,68 +6977,68 @@ <budget>12</budget> <bs> <b> - <a>160</a> - <b>169</b> + <a>153</a> + <b>177</b> <v>2</v> </b> <b> - <a>234</a> - <b>408</b> + <a>259</a> + <b>432</b> <v>2</v> </b> <b> - <a>570</a> - <b>596</b> + <a>597</a> + <b>631</b> <v>2</v> </b> <b> - <a>635</a> - <b>657</b> + <a>647</a> + <b>690</b> <v>2</v> </b> <b> - <a>778</a> - <b>974</b> + <a>764</a> + <b>987</b> <v>2</v> </b> <b> - <a>979</a> - <b>1001</b> + <a>1026</a> + <b>1033</b> <v>2</v> </b> <b> - <a>1014</a> - <b>1071</b> + <a>1058</a> + <b>1073</b> <v>2</v> </b> <b> - <a>1233</a> - <b>1270</b> + <a>1169</a> + <b>1190</b> <v>2</v> </b> <b> - <a>1358</a> - <b>1801</b> + <a>1227</a> + <b>1824</b> <v>2</v> </b> <b> - <a>1837</a> - <b>2322</b> + <a>2079</a> + <b>2661</b> <v>2</v> </b> <b> - <a>2691</a> - <b>3561</b> + <a>2747</a> + <b>3491</b> <v>2</v> </b> <b> - <a>6453</a> - <b>7170</b> + <a>6593</a> + <b>7408</b> <v>2</v> </b> <b> - <a>32934</a> - <b>32935</b> + <a>33761</a> + <b>33762</b> <v>1</v> </b> </bs> @@ -7314,7 +7055,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7330,7 +7071,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7346,7 +7087,7 @@ <b> <a>1</a> <b>2</b> - <v>71864</v> + <v>73665</v> </b> </bs> </hist> @@ -7356,15 +7097,15 @@ </relation> <relation> <name>ruby_block_argument_child</name> - <cardinality>6477</cardinality> + <cardinality>6541</cardinality> <columnsizes> <e> <k>ruby_block_argument</k> - <v>6477</v> + <v>6541</v> </e> <e> <k>child</k> - <v>6477</v> + <v>6541</v> </e> </columnsizes> <dependencies> @@ -7378,7 +7119,7 @@ <b> <a>1</a> <b>2</b> - <v>6477</v> + <v>6541</v> </b> </bs> </hist> @@ -7394,7 +7135,7 @@ <b> <a>1</a> <b>2</b> - <v>6477</v> + <v>6541</v> </b> </bs> </hist> @@ -7404,26 +7145,26 @@ </relation> <relation> <name>ruby_block_argument_def</name> - <cardinality>6477</cardinality> + <cardinality>6547</cardinality> <columnsizes> <e> <k>id</k> - <v>6477</v> + <v>6547</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_block_body</name> - <cardinality>101379</cardinality> + <cardinality>103820</cardinality> <columnsizes> <e> <k>ruby_block</k> - <v>101379</v> + <v>103820</v> </e> <e> <k>body</k> - <v>101379</v> + <v>103820</v> </e> </columnsizes> <dependencies> @@ -7437,7 +7178,7 @@ <b> <a>1</a> <b>2</b> - <v>101379</v> + <v>103820</v> </b> </bs> </hist> @@ -7453,7 +7194,7 @@ <b> <a>1</a> <b>2</b> - <v>101379</v> + <v>103820</v> </b> </bs> </hist> @@ -7463,19 +7204,19 @@ </relation> <relation> <name>ruby_block_body_child</name> - <cardinality>101550</cardinality> + <cardinality>103995</cardinality> <columnsizes> <e> <k>ruby_block_body</k> - <v>101379</v> + <v>103820</v> </e> <e> <k>index</k> - <v>52</v> + <v>53</v> </e> <e> <k>child</k> - <v>101550</v> + <v>103995</v> </e> </columnsizes> <dependencies> @@ -7489,12 +7230,12 @@ <b> <a>1</a> <b>2</b> - <v>101260</v> + <v>103699</v> </b> <b> <a>2</a> <b>5</b> - <v>118</v> + <v>121</v> </b> </bs> </hist> @@ -7510,12 +7251,12 @@ <b> <a>1</a> <b>2</b> - <v>101260</v> + <v>103699</v> </b> <b> <a>2</a> <b>5</b> - <v>118</v> + <v>121</v> </b> </bs> </hist> @@ -7539,8 +7280,8 @@ <v>13</v> </b> <b> - <a>7701</a> - <b>7702</b> + <a>7718</a> + <b>7719</b> <v>13</v> </b> </bs> @@ -7565,8 +7306,8 @@ <v>13</v> </b> <b> - <a>7701</a> - <b>7702</b> + <a>7718</a> + <b>7719</b> <v>13</v> </b> </bs> @@ -7583,7 +7324,7 @@ <b> <a>1</a> <b>2</b> - <v>101550</v> + <v>103995</v> </b> </bs> </hist> @@ -7599,7 +7340,7 @@ <b> <a>1</a> <b>2</b> - <v>101550</v> + <v>103995</v> </b> </bs> </hist> @@ -7609,48 +7350,48 @@ </relation> <relation> <name>ruby_block_body_def</name> - <cardinality>101379</cardinality> + <cardinality>103820</cardinality> <columnsizes> <e> <k>id</k> - <v>101379</v> + <v>103820</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_block_def</name> - <cardinality>101695</cardinality> + <cardinality>104143</cardinality> <columnsizes> <e> <k>id</k> - <v>101695</v> + <v>104143</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_block_parameter_def</name> - <cardinality>2569</cardinality> + <cardinality>2543</cardinality> <columnsizes> <e> <k>id</k> - <v>2569</v> + <v>2543</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_block_parameter_name</name> - <cardinality>2569</cardinality> + <cardinality>2537</cardinality> <columnsizes> <e> <k>ruby_block_parameter</k> - <v>2569</v> + <v>2537</v> </e> <e> <k>name</k> - <v>2569</v> + <v>2537</v> </e> </columnsizes> <dependencies> @@ -7664,7 +7405,7 @@ <b> <a>1</a> <b>2</b> - <v>2569</v> + <v>2537</v> </b> </bs> </hist> @@ -7680,7 +7421,7 @@ <b> <a>1</a> <b>2</b> - <v>2569</v> + <v>2537</v> </b> </bs> </hist> @@ -7690,15 +7431,15 @@ </relation> <relation> <name>ruby_block_parameters</name> - <cardinality>10585</cardinality> + <cardinality>10767</cardinality> <columnsizes> <e> <k>ruby_block</k> - <v>10585</v> + <v>10767</v> </e> <e> <k>parameters</k> - <v>10585</v> + <v>10767</v> </e> </columnsizes> <dependencies> @@ -7712,7 +7453,7 @@ <b> <a>1</a> <b>2</b> - <v>10585</v> + <v>10767</v> </b> </bs> </hist> @@ -7728,7 +7469,7 @@ <b> <a>1</a> <b>2</b> - <v>10585</v> + <v>10767</v> </b> </bs> </hist> @@ -7738,19 +7479,19 @@ </relation> <relation> <name>ruby_block_parameters_child</name> - <cardinality>28929</cardinality> + <cardinality>30131</cardinality> <columnsizes> <e> <k>ruby_block_parameters</k> - <v>24941</v> + <v>25884</v> </e> <e> <k>index</k> - <v>15</v> + <v>14</v> </e> <e> <k>child</k> - <v>28929</v> + <v>30131</v> </e> </columnsizes> <dependencies> @@ -7764,17 +7505,17 @@ <b> <a>1</a> <b>2</b> - <v>21362</v> + <v>22189</v> </b> <b> <a>2</a> <b>3</b> - <v>3263</v> + <v>3329</v> </b> <b> <a>3</a> <b>6</b> - <v>316</v> + <v>365</v> </b> </bs> </hist> @@ -7790,17 +7531,17 @@ <b> <a>1</a> <b>2</b> - <v>21362</v> + <v>22189</v> </b> <b> <a>2</a> <b>3</b> - <v>3263</v> + <v>3329</v> </b> <b> <a>3</a> <b>6</b> - <v>316</v> + <v>365</v> </b> </bs> </hist> @@ -7814,29 +7555,29 @@ <budget>12</budget> <bs> <b> - <a>11</a> - <b>12</b> - <v>3</v> + <a>27</a> + <b>28</b> + <v>2</v> </b> <b> - <a>19</a> - <b>20</b> - <v>3</v> + <a>35</a> + <b>36</b> + <v>2</v> </b> <b> - <a>103</a> - <b>104</b> - <v>3</v> + <a>122</a> + <b>123</b> + <v>2</v> </b> <b> - <a>1166</a> - <b>1167</b> - <v>3</v> + <a>1232</a> + <b>1233</b> + <v>2</v> </b> <b> - <a>8125</a> - <b>8126</b> - <v>3</v> + <a>8630</a> + <b>8631</b> + <v>2</v> </b> </bs> </hist> @@ -7850,29 +7591,29 @@ <budget>12</budget> <bs> <b> - <a>11</a> - <b>12</b> - <v>3</v> + <a>27</a> + <b>28</b> + <v>2</v> </b> <b> - <a>19</a> - <b>20</b> - <v>3</v> + <a>35</a> + <b>36</b> + <v>2</v> </b> <b> - <a>103</a> - <b>104</b> - <v>3</v> + <a>122</a> + <b>123</b> + <v>2</v> </b> <b> - <a>1166</a> - <b>1167</b> - <v>3</v> + <a>1232</a> + <b>1233</b> + <v>2</v> </b> <b> - <a>8125</a> - <b>8126</b> - <v>3</v> + <a>8630</a> + <b>8631</b> + <v>2</v> </b> </bs> </hist> @@ -7888,7 +7629,7 @@ <b> <a>1</a> <b>2</b> - <v>28929</v> + <v>30131</v> </b> </bs> </hist> @@ -7904,7 +7645,7 @@ <b> <a>1</a> <b>2</b> - <v>28929</v> + <v>30131</v> </b> </bs> </hist> @@ -7914,11 +7655,11 @@ </relation> <relation> <name>ruby_block_parameters_def</name> - <cardinality>24941</cardinality> + <cardinality>25884</cardinality> <columnsizes> <e> <k>id</k> - <v>24941</v> + <v>25884</v> </e> </columnsizes> <dependencies/> @@ -8061,19 +7802,19 @@ </relation> <relation> <name>ruby_body_statement_child</name> - <cardinality>627527</cardinality> + <cardinality>641142</cardinality> <columnsizes> <e> <k>ruby_body_statement</k> - <v>202481</v> + <v>206879</v> </e> <e> <k>index</k> - <v>1135</v> + <v>1187</v> </e> <e> <k>child</k> - <v>627527</v> + <v>641142</v> </e> </columnsizes> <dependencies> @@ -8087,37 +7828,37 @@ <b> <a>1</a> <b>2</b> - <v>93050</v> + <v>95107</v> </b> <b> <a>2</a> <b>3</b> - <v>37058</v> + <v>37693</v> </b> <b> <a>3</a> <b>4</b> - <v>24051</v> + <v>24510</v> </b> <b> <a>4</a> <b>5</b> - <v>15391</v> + <v>15881</v> </b> <b> <a>5</a> <b>7</b> - <v>15925</v> + <v>16388</v> </b> <b> <a>7</a> <b>23</b> - <v>15269</v> + <v>15560</v> </b> <b> <a>23</a> - <b>371</b> - <v>1734</v> + <b>397</b> + <v>1736</v> </b> </bs> </hist> @@ -8133,37 +7874,37 @@ <b> <a>1</a> <b>2</b> - <v>93050</v> + <v>95107</v> </b> <b> <a>2</a> <b>3</b> - <v>37058</v> + <v>37693</v> </b> <b> <a>3</a> <b>4</b> - <v>24051</v> + <v>24510</v> </b> <b> <a>4</a> <b>5</b> - <v>15391</v> + <v>15881</v> </b> <b> <a>5</a> <b>7</b> - <v>15925</v> + <v>16388</v> </b> <b> <a>7</a> <b>23</b> - <v>15269</v> + <v>15560</v> </b> <b> <a>23</a> - <b>371</b> - <v>1734</v> + <b>397</b> + <v>1736</v> </b> </bs> </hist> @@ -8179,67 +7920,67 @@ <b> <a>1</a> <b>2</b> - <v>79</v> + <v>140</v> </b> <b> <a>2</a> <b>3</b> - <v>119</v> + <v>122</v> </b> <b> <a>3</a> <b>4</b> - <v>76</v> + <v>77</v> </b> <b> <a>4</a> <b>5</b> - <v>85</v> + <v>62</v> </b> <b> <a>5</a> <b>7</b> - <v>79</v> + <v>98</v> </b> <b> - <a>7</a> + <a>8</a> <b>10</b> - <v>98</v> + <v>86</v> </b> <b> <a>10</a> - <b>14</b> - <v>92</v> + <b>12</b> + <v>89</v> </b> <b> - <a>14</a> - <b>23</b> - <v>89</v> + <a>12</a> + <b>26</b> + <v>95</v> </b> <b> - <a>24</a> - <b>39</b> - <v>85</v> + <a>26</a> + <b>42</b> + <v>92</v> </b> <b> - <a>39</a> - <b>69</b> + <a>42</a> + <b>77</b> <v>89</v> </b> <b> - <a>69</a> - <b>144</b> - <v>85</v> + <a>80</a> + <b>179</b> + <v>89</v> </b> <b> - <a>144</a> - <b>566</b> - <v>85</v> + <a>184</a> + <b>1016</b> + <v>89</v> </b> <b> - <a>623</a> - <b>65961</b> - <v>67</v> + <a>1134</a> + <b>68975</b> + <v>47</v> </b> </bs> </hist> @@ -8255,67 +7996,67 @@ <b> <a>1</a> <b>2</b> - <v>79</v> + <v>140</v> </b> <b> <a>2</a> <b>3</b> - <v>119</v> + <v>122</v> </b> <b> <a>3</a> <b>4</b> - <v>76</v> + <v>77</v> </b> <b> <a>4</a> <b>5</b> - <v>85</v> + <v>62</v> </b> <b> <a>5</a> <b>7</b> - <v>79</v> + <v>98</v> </b> <b> - <a>7</a> + <a>8</a> <b>10</b> - <v>98</v> + <v>86</v> </b> <b> <a>10</a> - <b>14</b> - <v>92</v> + <b>12</b> + <v>89</v> </b> <b> - <a>14</a> - <b>23</b> - <v>89</v> + <a>12</a> + <b>26</b> + <v>95</v> </b> <b> - <a>24</a> - <b>39</b> - <v>85</v> + <a>26</a> + <b>42</b> + <v>92</v> </b> <b> - <a>39</a> - <b>69</b> + <a>42</a> + <b>77</b> <v>89</v> </b> <b> - <a>69</a> - <b>144</b> - <v>85</v> + <a>80</a> + <b>179</b> + <v>89</v> </b> <b> - <a>144</a> - <b>566</b> - <v>85</v> + <a>184</a> + <b>1016</b> + <v>89</v> </b> <b> - <a>623</a> - <b>65961</b> - <v>67</v> + <a>1134</a> + <b>68975</b> + <v>47</v> </b> </bs> </hist> @@ -8331,7 +8072,7 @@ <b> <a>1</a> <b>2</b> - <v>627527</v> + <v>641142</v> </b> </bs> </hist> @@ -8347,7 +8088,7 @@ <b> <a>1</a> <b>2</b> - <v>627527</v> + <v>641142</v> </b> </bs> </hist> @@ -8357,26 +8098,26 @@ </relation> <relation> <name>ruby_body_statement_def</name> - <cardinality>208998</cardinality> + <cardinality>213896</cardinality> <columnsizes> <e> <k>id</k> - <v>208998</v> + <v>213896</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_break_child</name> - <cardinality>399</cardinality> + <cardinality>394</cardinality> <columnsizes> <e> <k>ruby_break</k> - <v>399</v> + <v>394</v> </e> <e> <k>child</k> - <v>399</v> + <v>394</v> </e> </columnsizes> <dependencies> @@ -8390,7 +8131,7 @@ <b> <a>1</a> <b>2</b> - <v>399</v> + <v>394</v> </b> </bs> </hist> @@ -8406,7 +8147,7 @@ <b> <a>1</a> <b>2</b> - <v>399</v> + <v>394</v> </b> </bs> </hist> @@ -8416,26 +8157,26 @@ </relation> <relation> <name>ruby_break_def</name> - <cardinality>3434</cardinality> + <cardinality>3414</cardinality> <columnsizes> <e> <k>id</k> - <v>3434</v> + <v>3414</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_call_arguments</name> - <cardinality>688552</cardinality> + <cardinality>703178</cardinality> <columnsizes> <e> <k>ruby_call</k> - <v>688552</v> + <v>703178</v> </e> <e> <k>arguments</k> - <v>688552</v> + <v>703178</v> </e> </columnsizes> <dependencies> @@ -8449,7 +8190,7 @@ <b> <a>1</a> <b>2</b> - <v>688552</v> + <v>703178</v> </b> </bs> </hist> @@ -8465,7 +8206,7 @@ <b> <a>1</a> <b>2</b> - <v>688552</v> + <v>703178</v> </b> </bs> </hist> @@ -8475,15 +8216,15 @@ </relation> <relation> <name>ruby_call_block</name> - <cardinality>240751</cardinality> + <cardinality>246208</cardinality> <columnsizes> <e> <k>ruby_call</k> - <v>240751</v> + <v>246208</v> </e> <e> <k>block</k> - <v>240751</v> + <v>246208</v> </e> </columnsizes> <dependencies> @@ -8497,7 +8238,7 @@ <b> <a>1</a> <b>2</b> - <v>240751</v> + <v>246208</v> </b> </bs> </hist> @@ -8513,7 +8254,7 @@ <b> <a>1</a> <b>2</b> - <v>240751</v> + <v>246208</v> </b> </bs> </hist> @@ -8523,26 +8264,26 @@ </relation> <relation> <name>ruby_call_def</name> - <cardinality>1006605</cardinality> + <cardinality>1027501</cardinality> <columnsizes> <e> <k>id</k> - <v>1006605</v> + <v>1027501</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_call_method</name> - <cardinality>1006605</cardinality> + <cardinality>1027501</cardinality> <columnsizes> <e> <k>ruby_call</k> - <v>1006605</v> + <v>1027501</v> </e> <e> <k>method</k> - <v>1006605</v> + <v>1027501</v> </e> </columnsizes> <dependencies> @@ -8556,7 +8297,7 @@ <b> <a>1</a> <b>2</b> - <v>1006605</v> + <v>1027501</v> </b> </bs> </hist> @@ -8572,7 +8313,7 @@ <b> <a>1</a> <b>2</b> - <v>1006605</v> + <v>1027501</v> </b> </bs> </hist> @@ -8582,15 +8323,15 @@ </relation> <relation> <name>ruby_call_operator</name> - <cardinality>562262</cardinality> + <cardinality>571632</cardinality> <columnsizes> <e> <k>ruby_call</k> - <v>562262</v> + <v>571632</v> </e> <e> <k>operator</k> - <v>562262</v> + <v>571632</v> </e> </columnsizes> <dependencies> @@ -8604,7 +8345,7 @@ <b> <a>1</a> <b>2</b> - <v>562262</v> + <v>571632</v> </b> </bs> </hist> @@ -8620,7 +8361,7 @@ <b> <a>1</a> <b>2</b> - <v>562262</v> + <v>571632</v> </b> </bs> </hist> @@ -8630,15 +8371,15 @@ </relation> <relation> <name>ruby_call_receiver</name> - <cardinality>562262</cardinality> + <cardinality>571632</cardinality> <columnsizes> <e> <k>ruby_call</k> - <v>562262</v> + <v>571632</v> </e> <e> <k>receiver</k> - <v>562262</v> + <v>571632</v> </e> </columnsizes> <dependencies> @@ -8652,7 +8393,7 @@ <b> <a>1</a> <b>2</b> - <v>562262</v> + <v>571632</v> </b> </bs> </hist> @@ -8668,7 +8409,7 @@ <b> <a>1</a> <b>2</b> - <v>562262</v> + <v>571632</v> </b> </bs> </hist> @@ -8678,19 +8419,19 @@ </relation> <relation> <name>ruby_case_child</name> - <cardinality>4349</cardinality> + <cardinality>4685</cardinality> <columnsizes> <e> <k>ruby_case__</k> - <v>1289</v> + <v>1267</v> </e> <e> <k>index</k> - <v>67</v> + <v>86</v> </e> <e> <k>child</k> - <v>4349</v> + <v>4685</v> </e> </columnsizes> <dependencies> @@ -8704,32 +8445,37 @@ <b> <a>1</a> <b>2</b> - <v>36</v> + <v>69</v> </b> <b> <a>2</a> <b>3</b> - <v>328</v> + <v>405</v> </b> <b> <a>3</a> <b>4</b> - <v>546</v> + <v>399</v> </b> <b> <a>4</a> <b>5</b> - <v>202</v> + <v>166</v> </b> <b> <a>5</a> - <b>7</b> - <v>110</v> + <b>6</b> + <v>89</v> </b> <b> - <a>7</a> - <b>23</b> - <v>64</v> + <a>6</a> + <b>12</b> + <v>100</v> + </b> + <b> + <a>12</a> + <b>87</b> + <v>39</v> </b> </bs> </hist> @@ -8745,32 +8491,37 @@ <b> <a>1</a> <b>2</b> - <v>36</v> + <v>69</v> </b> <b> <a>2</a> <b>3</b> - <v>328</v> + <v>405</v> </b> <b> <a>3</a> <b>4</b> - <v>546</v> + <v>399</v> </b> <b> <a>4</a> <b>5</b> - <v>202</v> + <v>166</v> </b> <b> <a>5</a> - <b>7</b> - <v>110</v> + <b>6</b> + <v>89</v> </b> <b> - <a>7</a> - <b>23</b> - <v>64</v> + <a>6</a> + <b>12</b> + <v>100</v> + </b> + <b> + <a>12</a> + <b>87</b> + <v>39</v> </b> </bs> </hist> @@ -8786,42 +8537,37 @@ <b> <a>1</a> <b>2</b> - <v>21</v> + <v>42</v> </b> <b> <a>2</a> <b>3</b> - <v>9</v> + <v>12</v> </b> <b> - <a>4</a> + <a>3</a> <b>6</b> <v>6</v> </b> <b> - <a>8</a> - <b>11</b> - <v>6</v> - </b> - <b> - <a>14</a> - <b>22</b> - <v>6</v> + <a>6</a> + <b>9</b> + <v>7</v> </b> <b> - <a>33</a> - <b>58</b> - <v>6</v> + <a>9</a> + <b>31</b> + <v>7</v> </b> <b> - <a>123</a> - <b>302</b> - <v>6</v> + <a>39</a> + <b>140</b> + <v>7</v> </b> <b> - <a>408</a> - <b>421</b> - <v>6</v> + <a>228</a> + <b>1268</b> + <v>5</v> </b> </bs> </hist> @@ -8837,42 +8583,37 @@ <b> <a>1</a> <b>2</b> - <v>21</v> + <v>42</v> </b> <b> <a>2</a> <b>3</b> - <v>9</v> + <v>12</v> </b> <b> - <a>4</a> + <a>3</a> <b>6</b> <v>6</v> </b> <b> - <a>8</a> - <b>11</b> - <v>6</v> - </b> - <b> - <a>14</a> - <b>22</b> - <v>6</v> + <a>6</a> + <b>9</b> + <v>7</v> </b> <b> - <a>33</a> - <b>58</b> - <v>6</v> + <a>9</a> + <b>31</b> + <v>7</v> </b> <b> - <a>123</a> - <b>302</b> - <v>6</v> + <a>39</a> + <b>140</b> + <v>7</v> </b> <b> - <a>408</a> - <b>421</b> - <v>6</v> + <a>228</a> + <b>1268</b> + <v>5</v> </b> </bs> </hist> @@ -8888,7 +8629,7 @@ <b> <a>1</a> <b>2</b> - <v>4349</v> + <v>4685</v> </b> </bs> </hist> @@ -8904,7 +8645,7 @@ <b> <a>1</a> <b>2</b> - <v>4349</v> + <v>4685</v> </b> </bs> </hist> @@ -8914,22 +8655,22 @@ </relation> <relation> <name>ruby_case_def</name> - <cardinality>1289</cardinality> + <cardinality>1319</cardinality> <columnsizes> <e> <k>id</k> - <v>1289</v> + <v>1319</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_case_match_clauses</name> - <cardinality>385</cardinality> + <cardinality>381</cardinality> <columnsizes> <e> <k>ruby_case_match</k> - <v>234</v> + <v>232</v> </e> <e> <k>index</k> @@ -8937,7 +8678,7 @@ </e> <e> <k>clauses</k> - <v>385</v> + <v>381</v> </e> </columnsizes> <dependencies> @@ -8951,12 +8692,12 @@ <b> <a>1</a> <b>2</b> - <v>161</v> + <v>160</v> </b> <b> <a>2</a> <b>3</b> - <v>41</v> + <v>40</v> </b> <b> <a>3</a> @@ -8982,12 +8723,12 @@ <b> <a>1</a> <b>2</b> - <v>161</v> + <v>160</v> </b> <b> <a>2</a> <b>3</b> - <v>41</v> + <v>40</v> </b> <b> <a>3</a> @@ -9013,17 +8754,12 @@ <b> <a>1</a> <b>2</b> - <v>3</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>1</v> - </b> - <b> - <a>4</a> - <b>5</b> - <v>1</v> + <v>2</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>3</v> </b> <b> <a>5</a> @@ -9051,13 +8787,13 @@ <v>1</v> </b> <b> - <a>73</a> - <b>74</b> + <a>72</a> + <b>73</b> <v>1</v> </b> <b> - <a>234</a> - <b>235</b> + <a>232</a> + <b>233</b> <v>1</v> </b> </bs> @@ -9074,17 +8810,12 @@ <b> <a>1</a> <b>2</b> - <v>3</v> + <v>2</v> </b> <b> <a>2</a> <b>3</b> - <v>1</v> - </b> - <b> - <a>4</a> - <b>5</b> - <v>1</v> + <v>3</v> </b> <b> <a>5</a> @@ -9112,13 +8843,13 @@ <v>1</v> </b> <b> - <a>73</a> - <b>74</b> + <a>72</a> + <b>73</b> <v>1</v> </b> <b> - <a>234</a> - <b>235</b> + <a>232</a> + <b>233</b> <v>1</v> </b> </bs> @@ -9135,7 +8866,7 @@ <b> <a>1</a> <b>2</b> - <v>385</v> + <v>381</v> </b> </bs> </hist> @@ -9151,7 +8882,7 @@ <b> <a>1</a> <b>2</b> - <v>385</v> + <v>381</v> </b> </bs> </hist> @@ -9161,15 +8892,15 @@ </relation> <relation> <name>ruby_case_match_def</name> - <cardinality>234</cardinality> + <cardinality>232</cardinality> <columnsizes> <e> <k>id</k> - <v>234</v> + <v>232</v> </e> <e> <k>value</k> - <v>234</v> + <v>232</v> </e> </columnsizes> <dependencies> @@ -9183,7 +8914,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>232</v> </b> </bs> </hist> @@ -9199,7 +8930,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>232</v> </b> </bs> </hist> @@ -9257,15 +8988,15 @@ </relation> <relation> <name>ruby_case_value</name> - <cardinality>1246</cardinality> + <cardinality>1277</cardinality> <columnsizes> <e> <k>ruby_case__</k> - <v>1246</v> + <v>1277</v> </e> <e> <k>value</k> - <v>1246</v> + <v>1277</v> </e> </columnsizes> <dependencies> @@ -9279,7 +9010,7 @@ <b> <a>1</a> <b>2</b> - <v>1246</v> + <v>1277</v> </b> </bs> </hist> @@ -9295,7 +9026,7 @@ <b> <a>1</a> <b>2</b> - <v>1246</v> + <v>1277</v> </b> </bs> </hist> @@ -9305,7 +9036,7 @@ </relation> <relation> <name>ruby_chained_string_child</name> - <cardinality>3346</cardinality> + <cardinality>3320</cardinality> <columnsizes> <e> <k>ruby_chained_string</k> @@ -9313,11 +9044,11 @@ </e> <e> <k>index</k> - <v>36</v> + <v>35</v> </e> <e> <k>child</k> - <v>3346</v> + <v>3320</v> </e> </columnsizes> <dependencies> @@ -9331,32 +9062,32 @@ <b> <a>2</a> <b>3</b> - <v>297</v> + <v>296</v> </b> <b> <a>3</a> <b>4</b> - <v>202</v> + <v>215</v> </b> <b> <a>4</a> <b>5</b> - <v>131</v> + <v>128</v> </b> <b> <a>5</a> <b>6</b> - <v>122</v> + <v>116</v> </b> <b> <a>6</a> <b>8</b> - <v>67</v> + <v>65</v> </b> <b> <a>8</a> <b>13</b> - <v>61</v> + <v>59</v> </b> </bs> </hist> @@ -9372,32 +9103,32 @@ <b> <a>2</a> <b>3</b> - <v>297</v> + <v>296</v> </b> <b> <a>3</a> <b>4</b> - <v>202</v> + <v>215</v> </b> <b> <a>4</a> <b>5</b> - <v>131</v> + <v>128</v> </b> <b> <a>5</a> <b>6</b> - <v>122</v> + <v>116</v> </b> <b> <a>6</a> <b>8</b> - <v>67</v> + <v>65</v> </b> <b> <a>8</a> <b>13</b> - <v>61</v> + <v>59</v> </b> </bs> </hist> @@ -9413,57 +9144,57 @@ <b> <a>2</a> <b>3</b> - <v>3</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> <a>7</a> <b>8</b> - <v>3</v> + <v>2</v> </b> <b> <a>8</a> <b>9</b> - <v>3</v> + <v>2</v> </b> <b> <a>20</a> <b>21</b> - <v>3</v> + <v>2</v> </b> <b> <a>33</a> <b>34</b> - <v>3</v> + <v>2</v> </b> <b> <a>42</a> <b>43</b> - <v>3</v> + <v>2</v> </b> <b> - <a>82</a> - <b>83</b> - <v>3</v> + <a>81</a> + <b>82</b> + <v>2</v> </b> <b> - <a>125</a> - <b>126</b> - <v>3</v> + <a>124</a> + <b>125</b> + <v>2</v> </b> <b> - <a>191</a> - <b>192</b> - <v>3</v> + <a>196</a> + <b>197</b> + <v>2</v> </b> <b> - <a>288</a> - <b>289</b> - <v>6</v> + <a>295</a> + <b>296</b> + <v>5</v> </b> </bs> </hist> @@ -9479,57 +9210,57 @@ <b> <a>2</a> <b>3</b> - <v>3</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> <a>7</a> <b>8</b> - <v>3</v> + <v>2</v> </b> <b> <a>8</a> <b>9</b> - <v>3</v> + <v>2</v> </b> <b> <a>20</a> <b>21</b> - <v>3</v> + <v>2</v> </b> <b> <a>33</a> <b>34</b> - <v>3</v> + <v>2</v> </b> <b> <a>42</a> <b>43</b> - <v>3</v> + <v>2</v> </b> <b> - <a>82</a> - <b>83</b> - <v>3</v> + <a>81</a> + <b>82</b> + <v>2</v> </b> <b> - <a>125</a> - <b>126</b> - <v>3</v> + <a>124</a> + <b>125</b> + <v>2</v> </b> <b> - <a>191</a> - <b>192</b> - <v>3</v> + <a>196</a> + <b>197</b> + <v>2</v> </b> <b> - <a>288</a> - <b>289</b> - <v>6</v> + <a>295</a> + <b>296</b> + <v>5</v> </b> </bs> </hist> @@ -9545,7 +9276,7 @@ <b> <a>1</a> <b>2</b> - <v>3346</v> + <v>3320</v> </b> </bs> </hist> @@ -9561,7 +9292,7 @@ <b> <a>1</a> <b>2</b> - <v>3346</v> + <v>3320</v> </b> </bs> </hist> @@ -9582,15 +9313,15 @@ </relation> <relation> <name>ruby_class_body</name> - <cardinality>15560</cardinality> + <cardinality>15734</cardinality> <columnsizes> <e> <k>ruby_class</k> - <v>15560</v> + <v>15734</v> </e> <e> <k>body</k> - <v>15560</v> + <v>15734</v> </e> </columnsizes> <dependencies> @@ -9604,7 +9335,7 @@ <b> <a>1</a> <b>2</b> - <v>15560</v> + <v>15734</v> </b> </bs> </hist> @@ -9620,7 +9351,7 @@ <b> <a>1</a> <b>2</b> - <v>15560</v> + <v>15734</v> </b> </bs> </hist> @@ -9630,15 +9361,15 @@ </relation> <relation> <name>ruby_class_def</name> - <cardinality>17258</cardinality> + <cardinality>17441</cardinality> <columnsizes> <e> <k>id</k> - <v>17258</v> + <v>17441</v> </e> <e> <k>name</k> - <v>17258</v> + <v>17441</v> </e> </columnsizes> <dependencies> @@ -9652,7 +9383,7 @@ <b> <a>1</a> <b>2</b> - <v>17258</v> + <v>17441</v> </b> </bs> </hist> @@ -9668,7 +9399,7 @@ <b> <a>1</a> <b>2</b> - <v>17258</v> + <v>17441</v> </b> </bs> </hist> @@ -9678,15 +9409,15 @@ </relation> <relation> <name>ruby_class_superclass</name> - <cardinality>13666</cardinality> + <cardinality>13806</cardinality> <columnsizes> <e> <k>ruby_class</k> - <v>13666</v> + <v>13806</v> </e> <e> <k>superclass</k> - <v>13666</v> + <v>13806</v> </e> </columnsizes> <dependencies> @@ -9700,7 +9431,7 @@ <b> <a>1</a> <b>2</b> - <v>13666</v> + <v>13806</v> </b> </bs> </hist> @@ -9716,7 +9447,7 @@ <b> <a>1</a> <b>2</b> - <v>13666</v> + <v>13806</v> </b> </bs> </hist> @@ -9726,15 +9457,15 @@ </relation> <relation> <name>ruby_complex_def</name> - <cardinality>66</cardinality> + <cardinality>72</cardinality> <columnsizes> <e> <k>id</k> - <v>66</v> + <v>72</v> </e> <e> <k>child</k> - <v>66</v> + <v>72</v> </e> </columnsizes> <dependencies> @@ -9748,7 +9479,7 @@ <b> <a>1</a> <b>2</b> - <v>66</v> + <v>72</v> </b> </bs> </hist> @@ -9764,7 +9495,7 @@ <b> <a>1</a> <b>2</b> - <v>66</v> + <v>72</v> </b> </bs> </hist> @@ -9774,23 +9505,23 @@ </relation> <relation> <name>ruby_conditional_def</name> - <cardinality>2954</cardinality> + <cardinality>2896</cardinality> <columnsizes> <e> <k>id</k> - <v>2954</v> + <v>2896</v> </e> <e> <k>alternative</k> - <v>2954</v> + <v>2896</v> </e> <e> <k>condition</k> - <v>2954</v> + <v>2896</v> </e> <e> <k>consequence</k> - <v>2954</v> + <v>2896</v> </e> </columnsizes> <dependencies> @@ -9804,7 +9535,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9820,7 +9551,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9836,7 +9567,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9852,7 +9583,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9868,7 +9599,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9884,7 +9615,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9900,7 +9631,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9916,7 +9647,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9932,7 +9663,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9948,7 +9679,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9964,7 +9695,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9980,7 +9711,7 @@ <b> <a>1</a> <b>2</b> - <v>2954</v> + <v>2896</v> </b> </bs> </hist> @@ -9990,19 +9721,19 @@ </relation> <relation> <name>ruby_delimited_symbol_child</name> - <cardinality>1749</cardinality> + <cardinality>1742</cardinality> <columnsizes> <e> <k>ruby_delimited_symbol</k> - <v>1258</v> + <v>1247</v> </e> <e> <k>index</k> - <v>24</v> + <v>23</v> </e> <e> <k>child</k> - <v>1749</v> + <v>1742</v> </e> </columnsizes> <dependencies> @@ -10016,7 +9747,7 @@ <b> <a>1</a> <b>2</b> - <v>930</v> + <v>920</v> </b> <b> <a>2</a> @@ -10026,7 +9757,7 @@ <b> <a>3</a> <b>9</b> - <v>73</v> + <v>71</v> </b> </bs> </hist> @@ -10042,7 +9773,7 @@ <b> <a>1</a> <b>2</b> - <v>930</v> + <v>920</v> </b> <b> <a>2</a> @@ -10052,7 +9783,7 @@ <b> <a>3</a> <b>9</b> - <v>73</v> + <v>71</v> </b> </bs> </hist> @@ -10068,42 +9799,42 @@ <b> <a>1</a> <b>2</b> - <v>3</v> + <v>2</v> </b> <b> <a>3</a> <b>4</b> - <v>3</v> + <v>2</v> </b> <b> - <a>5</a> - <b>6</b> - <v>3</v> + <a>6</a> + <b>7</b> + <v>2</v> </b> <b> - <a>8</a> - <b>9</b> - <v>3</v> + <a>9</a> + <b>10</b> + <v>2</v> </b> <b> - <a>12</a> - <b>13</b> - <v>3</v> + <a>13</a> + <b>14</b> + <v>2</v> </b> <b> <a>24</a> <b>25</b> - <v>3</v> + <v>2</v> </b> <b> - <a>107</a> - <b>108</b> - <v>3</v> + <a>109</a> + <b>110</b> + <v>2</v> </b> <b> - <a>410</a> - <b>411</b> - <v>3</v> + <a>416</a> + <b>417</b> + <v>2</v> </b> </bs> </hist> @@ -10119,42 +9850,42 @@ <b> <a>1</a> <b>2</b> - <v>3</v> + <v>2</v> </b> <b> <a>3</a> <b>4</b> - <v>3</v> + <v>2</v> </b> <b> - <a>5</a> - <b>6</b> - <v>3</v> + <a>6</a> + <b>7</b> + <v>2</v> </b> <b> - <a>8</a> - <b>9</b> - <v>3</v> + <a>9</a> + <b>10</b> + <v>2</v> </b> <b> - <a>12</a> - <b>13</b> - <v>3</v> + <a>13</a> + <b>14</b> + <v>2</v> </b> <b> <a>24</a> <b>25</b> - <v>3</v> + <v>2</v> </b> <b> - <a>107</a> - <b>108</b> - <v>3</v> + <a>109</a> + <b>110</b> + <v>2</v> </b> <b> - <a>410</a> - <b>411</b> - <v>3</v> + <a>416</a> + <b>417</b> + <v>2</v> </b> </bs> </hist> @@ -10170,7 +9901,7 @@ <b> <a>1</a> <b>2</b> - <v>1749</v> + <v>1742</v> </b> </bs> </hist> @@ -10186,7 +9917,7 @@ <b> <a>1</a> <b>2</b> - <v>1749</v> + <v>1742</v> </b> </bs> </hist> @@ -10196,22 +9927,22 @@ </relation> <relation> <name>ruby_delimited_symbol_def</name> - <cardinality>1258</cardinality> + <cardinality>1247</cardinality> <columnsizes> <e> <k>id</k> - <v>1258</v> + <v>1247</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_destructured_left_assignment_child</name> - <cardinality>222</cardinality> + <cardinality>226</cardinality> <columnsizes> <e> <k>ruby_destructured_left_assignment</k> - <v>107</v> + <v>108</v> </e> <e> <k>index</k> @@ -10219,7 +9950,7 @@ </e> <e> <k>child</k> - <v>222</v> + <v>226</v> </e> </columnsizes> <dependencies> @@ -10248,7 +9979,7 @@ <b> <a>4</a> <b>5</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -10279,7 +10010,7 @@ <b> <a>4</a> <b>5</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -10293,23 +10024,23 @@ <budget>12</budget> <bs> <b> - <a>4</a> - <b>5</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>16</a> - <b>17</b> + <a>17</a> + <b>18</b> <v>1</v> </b> <b> - <a>95</a> - <b>96</b> + <a>96</a> + <b>97</b> <v>1</v> </b> <b> - <a>107</a> - <b>108</b> + <a>108</a> + <b>109</b> <v>1</v> </b> </bs> @@ -10324,23 +10055,23 @@ <budget>12</budget> <bs> <b> - <a>4</a> - <b>5</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>16</a> - <b>17</b> + <a>17</a> + <b>18</b> <v>1</v> </b> <b> - <a>95</a> - <b>96</b> + <a>96</a> + <b>97</b> <v>1</v> </b> <b> - <a>107</a> - <b>108</b> + <a>108</a> + <b>109</b> <v>1</v> </b> </bs> @@ -10357,7 +10088,7 @@ <b> <a>1</a> <b>2</b> - <v>222</v> + <v>226</v> </b> </bs> </hist> @@ -10373,7 +10104,7 @@ <b> <a>1</a> <b>2</b> - <v>222</v> + <v>226</v> </b> </bs> </hist> @@ -10383,22 +10114,22 @@ </relation> <relation> <name>ruby_destructured_left_assignment_def</name> - <cardinality>107</cardinality> + <cardinality>108</cardinality> <columnsizes> <e> <k>id</k> - <v>107</v> + <v>108</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_destructured_parameter_child</name> - <cardinality>424</cardinality> + <cardinality>463</cardinality> <columnsizes> <e> <k>ruby_destructured_parameter</k> - <v>194</v> + <v>208</v> </e> <e> <k>index</k> @@ -10406,7 +10137,7 @@ </e> <e> <k>child</k> - <v>424</v> + <v>463</v> </e> </columnsizes> <dependencies> @@ -10425,7 +10156,7 @@ <b> <a>2</a> <b>3</b> - <v>150</v> + <v>162</v> </b> <b> <a>3</a> @@ -10435,7 +10166,7 @@ <b> <a>4</a> <b>12</b> - <v>9</v> + <v>11</v> </b> </bs> </hist> @@ -10456,7 +10187,7 @@ <b> <a>2</a> <b>3</b> - <v>150</v> + <v>162</v> </b> <b> <a>3</a> @@ -10466,7 +10197,7 @@ <b> <a>4</a> <b>12</b> - <v>9</v> + <v>11</v> </b> </bs> </hist> @@ -10480,38 +10211,38 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>2</a> + <b>3</b> <v>1</v> </b> <b> - <a>2</a> - <b>3</b> + <a>3</a> + <b>4</b> <v>5</v> </b> <b> - <a>4</a> - <b>5</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>9</a> - <b>10</b> + <a>11</a> + <b>12</b> <v>1</v> </b> <b> - <a>28</a> - <b>29</b> + <a>30</a> + <b>31</b> <v>1</v> </b> <b> - <a>178</a> - <b>179</b> + <a>192</a> + <b>193</b> <v>1</v> </b> <b> - <a>194</a> - <b>195</b> + <a>208</a> + <b>209</b> <v>1</v> </b> </bs> @@ -10526,38 +10257,38 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>2</a> + <b>3</b> <v>1</v> </b> <b> - <a>2</a> - <b>3</b> + <a>3</a> + <b>4</b> <v>5</v> </b> <b> - <a>4</a> - <b>5</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>9</a> - <b>10</b> + <a>11</a> + <b>12</b> <v>1</v> </b> <b> - <a>28</a> - <b>29</b> + <a>30</a> + <b>31</b> <v>1</v> </b> <b> - <a>178</a> - <b>179</b> + <a>192</a> + <b>193</b> <v>1</v> </b> <b> - <a>194</a> - <b>195</b> + <a>208</a> + <b>209</b> <v>1</v> </b> </bs> @@ -10574,7 +10305,7 @@ <b> <a>1</a> <b>2</b> - <v>424</v> + <v>463</v> </b> </bs> </hist> @@ -10590,7 +10321,7 @@ <b> <a>1</a> <b>2</b> - <v>424</v> + <v>463</v> </b> </bs> </hist> @@ -10600,26 +10331,26 @@ </relation> <relation> <name>ruby_destructured_parameter_def</name> - <cardinality>194</cardinality> + <cardinality>208</cardinality> <columnsizes> <e> <k>id</k> - <v>194</v> + <v>208</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_do_block_body</name> - <cardinality>142294</cardinality> + <cardinality>145373</cardinality> <columnsizes> <e> <k>ruby_do_block</k> - <v>142294</v> + <v>145373</v> </e> <e> <k>body</k> - <v>142294</v> + <v>145373</v> </e> </columnsizes> <dependencies> @@ -10633,7 +10364,7 @@ <b> <a>1</a> <b>2</b> - <v>142294</v> + <v>145373</v> </b> </bs> </hist> @@ -10649,7 +10380,7 @@ <b> <a>1</a> <b>2</b> - <v>142294</v> + <v>145373</v> </b> </bs> </hist> @@ -10659,26 +10390,26 @@ </relation> <relation> <name>ruby_do_block_def</name> - <cardinality>142452</cardinality> + <cardinality>145534</cardinality> <columnsizes> <e> <k>id</k> - <v>142452</v> + <v>145534</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_do_block_parameters</name> - <cardinality>16036</cardinality> + <cardinality>16724</cardinality> <columnsizes> <e> <k>ruby_do_block</k> - <v>16036</v> + <v>16724</v> </e> <e> <k>parameters</k> - <v>16036</v> + <v>16724</v> </e> </columnsizes> <dependencies> @@ -10692,7 +10423,7 @@ <b> <a>1</a> <b>2</b> - <v>16036</v> + <v>16724</v> </b> </bs> </hist> @@ -10708,7 +10439,7 @@ <b> <a>1</a> <b>2</b> - <v>16036</v> + <v>16724</v> </b> </bs> </hist> @@ -10718,11 +10449,11 @@ </relation> <relation> <name>ruby_do_child</name> - <cardinality>9374</cardinality> + <cardinality>9352</cardinality> <columnsizes> <e> <k>ruby_do</k> - <v>1655</v> + <v>1651</v> </e> <e> <k>index</k> @@ -10730,7 +10461,7 @@ </e> <e> <k>child</k> - <v>9374</v> + <v>9352</v> </e> </columnsizes> <dependencies> @@ -10744,37 +10475,37 @@ <b> <a>1</a> <b>2</b> - <v>350</v> + <v>347</v> </b> <b> <a>2</a> <b>3</b> - <v>296</v> + <v>300</v> </b> <b> <a>3</a> <b>4</b> - <v>200</v> + <v>204</v> </b> <b> <a>4</a> - <b>5</b> - <v>77</v> + <b>6</b> + <v>149</v> </b> <b> - <a>5</a> + <a>6</a> <b>7</b> - <v>106</v> + <v>25</v> </b> <b> <a>7</a> <b>8</b> - <v>140</v> + <v>137</v> </b> <b> <a>8</a> <b>9</b> - <v>206</v> + <v>209</v> </b> <b> <a>9</a> @@ -10805,37 +10536,37 @@ <b> <a>1</a> <b>2</b> - <v>350</v> + <v>347</v> </b> <b> <a>2</a> <b>3</b> - <v>296</v> + <v>300</v> </b> <b> <a>3</a> <b>4</b> - <v>200</v> + <v>204</v> </b> <b> <a>4</a> - <b>5</b> - <v>77</v> + <b>6</b> + <v>149</v> </b> <b> - <a>5</a> + <a>6</a> <b>7</b> - <v>106</v> + <v>25</v> </b> <b> <a>7</a> <b>8</b> - <v>140</v> + <v>137</v> </b> <b> <a>8</a> <b>9</b> - <v>206</v> + <v>209</v> </b> <b> <a>9</a> @@ -10890,7 +10621,7 @@ </b> <b> <a>116</a> - <b>1656</b> + <b>1652</b> <v>15</v> </b> </bs> @@ -10931,7 +10662,7 @@ </b> <b> <a>116</a> - <b>1656</b> + <b>1652</b> <v>15</v> </b> </bs> @@ -10948,7 +10679,7 @@ <b> <a>1</a> <b>2</b> - <v>9374</v> + <v>9352</v> </b> </bs> </hist> @@ -10964,7 +10695,7 @@ <b> <a>1</a> <b>2</b> - <v>9374</v> + <v>9352</v> </b> </bs> </hist> @@ -10974,30 +10705,30 @@ </relation> <relation> <name>ruby_do_def</name> - <cardinality>1681</cardinality> + <cardinality>1675</cardinality> <columnsizes> <e> <k>id</k> - <v>1681</v> + <v>1675</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_element_reference_child</name> - <cardinality>80931</cardinality> + <cardinality>82748</cardinality> <columnsizes> <e> <k>ruby_element_reference</k> - <v>80773</v> + <v>82601</v> </e> <e> <k>index</k> - <v>5</v> + <v>4</v> </e> <e> <k>child</k> - <v>80931</v> + <v>82748</v> </e> </columnsizes> <dependencies> @@ -11011,12 +10742,12 @@ <b> <a>1</a> <b>2</b> - <v>80615</v> + <v>82455</v> </b> <b> <a>2</a> <b>3</b> - <v>157</v> + <v>146</v> </b> </bs> </hist> @@ -11032,12 +10763,12 @@ <b> <a>1</a> <b>2</b> - <v>80615</v> + <v>82455</v> </b> <b> <a>2</a> <b>3</b> - <v>157</v> + <v>146</v> </b> </bs> </hist> @@ -11056,8 +10787,8 @@ <v>2</v> </b> <b> - <a>31710</a> - <b>31711</b> + <a>34958</a> + <b>34959</b> <v>2</v> </b> </bs> @@ -11077,8 +10808,8 @@ <v>2</v> </b> <b> - <a>31710</a> - <b>31711</b> + <a>34958</a> + <b>34959</b> <v>2</v> </b> </bs> @@ -11095,7 +10826,7 @@ <b> <a>1</a> <b>2</b> - <v>80931</v> + <v>82748</v> </b> </bs> </hist> @@ -11111,7 +10842,7 @@ <b> <a>1</a> <b>2</b> - <v>80931</v> + <v>82748</v> </b> </bs> </hist> @@ -11121,15 +10852,15 @@ </relation> <relation> <name>ruby_element_reference_def</name> - <cardinality>80778</cardinality> + <cardinality>82606</cardinality> <columnsizes> <e> <k>id</k> - <v>80778</v> + <v>82606</v> </e> <e> <k>object</k> - <v>80778</v> + <v>82606</v> </e> </columnsizes> <dependencies> @@ -11143,7 +10874,7 @@ <b> <a>1</a> <b>2</b> - <v>80778</v> + <v>82606</v> </b> </bs> </hist> @@ -11159,7 +10890,7 @@ <b> <a>1</a> <b>2</b> - <v>80778</v> + <v>82606</v> </b> </bs> </hist> @@ -11169,19 +10900,19 @@ </relation> <relation> <name>ruby_else_child</name> - <cardinality>9507</cardinality> + <cardinality>9730</cardinality> <columnsizes> <e> <k>ruby_else</k> - <v>7493</v> + <v>7669</v> </e> <e> <k>index</k> - <v>33</v> + <v>32</v> </e> <e> <k>child</k> - <v>9507</v> + <v>9730</v> </e> </columnsizes> <dependencies> @@ -11195,17 +10926,17 @@ <b> <a>1</a> <b>2</b> - <v>6305</v> + <v>6454</v> </b> <b> <a>2</a> <b>3</b> - <v>742</v> + <v>758</v> </b> <b> <a>3</a> <b>12</b> - <v>445</v> + <v>455</v> </b> </bs> </hist> @@ -11221,17 +10952,17 @@ <b> <a>1</a> <b>2</b> - <v>6305</v> + <v>6454</v> </b> <b> <a>2</a> <b>3</b> - <v>742</v> + <v>758</v> </b> <b> <a>3</a> <b>12</b> - <v>445</v> + <v>455</v> </b> </bs> </hist> @@ -11247,57 +10978,57 @@ <b> <a>1</a> <b>2</b> - <v>3</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>3</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> <a>5</a> <b>6</b> - <v>3</v> + <v>2</v> + </b> + <b> + <a>6</a> + <b>7</b> + <v>2</v> </b> <b> <a>9</a> <b>10</b> - <v>3</v> + <v>2</v> </b> <b> <a>15</a> <b>16</b> - <v>3</v> + <v>2</v> </b> <b> <a>26</a> <b>27</b> - <v>3</v> + <v>2</v> </b> <b> - <a>61</a> - <b>62</b> - <v>3</v> + <a>64</a> + <b>65</b> + <v>2</v> </b> <b> - <a>145</a> - <b>146</b> - <v>3</v> + <a>152</a> + <b>153</b> + <v>2</v> </b> <b> - <a>387</a> - <b>388</b> - <v>3</v> + <a>405</a> + <b>406</b> + <v>2</v> </b> <b> - <a>2441</a> - <b>2442</b> - <v>3</v> + <a>2557</a> + <b>2558</b> + <v>2</v> </b> </bs> </hist> @@ -11313,57 +11044,57 @@ <b> <a>1</a> <b>2</b> - <v>3</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>3</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> <a>5</a> <b>6</b> - <v>3</v> + <v>2</v> + </b> + <b> + <a>6</a> + <b>7</b> + <v>2</v> </b> <b> <a>9</a> <b>10</b> - <v>3</v> + <v>2</v> </b> <b> <a>15</a> <b>16</b> - <v>3</v> + <v>2</v> </b> <b> <a>26</a> <b>27</b> - <v>3</v> + <v>2</v> </b> <b> - <a>61</a> - <b>62</b> - <v>3</v> + <a>64</a> + <b>65</b> + <v>2</v> </b> <b> - <a>145</a> - <b>146</b> - <v>3</v> + <a>152</a> + <b>153</b> + <v>2</v> </b> <b> - <a>387</a> - <b>388</b> - <v>3</v> + <a>405</a> + <b>406</b> + <v>2</v> </b> <b> - <a>2441</a> - <b>2442</b> - <v>3</v> + <a>2557</a> + <b>2558</b> + <v>2</v> </b> </bs> </hist> @@ -11379,7 +11110,7 @@ <b> <a>1</a> <b>2</b> - <v>9507</v> + <v>9730</v> </b> </bs> </hist> @@ -11395,7 +11126,7 @@ <b> <a>1</a> <b>2</b> - <v>9507</v> + <v>9730</v> </b> </bs> </hist> @@ -11405,26 +11136,26 @@ </relation> <relation> <name>ruby_else_def</name> - <cardinality>7505</cardinality> + <cardinality>7681</cardinality> <columnsizes> <e> <k>id</k> - <v>7505</v> + <v>7681</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_elsif_alternative</name> - <cardinality>982</cardinality> + <cardinality>1058</cardinality> <columnsizes> <e> <k>ruby_elsif</k> - <v>982</v> + <v>1058</v> </e> <e> <k>alternative</k> - <v>982</v> + <v>1058</v> </e> </columnsizes> <dependencies> @@ -11438,7 +11169,7 @@ <b> <a>1</a> <b>2</b> - <v>982</v> + <v>1058</v> </b> </bs> </hist> @@ -11454,7 +11185,7 @@ <b> <a>1</a> <b>2</b> - <v>982</v> + <v>1058</v> </b> </bs> </hist> @@ -11464,15 +11195,15 @@ </relation> <relation> <name>ruby_elsif_consequence</name> - <cardinality>1505</cardinality> + <cardinality>1571</cardinality> <columnsizes> <e> <k>ruby_elsif</k> - <v>1505</v> + <v>1571</v> </e> <e> <k>consequence</k> - <v>1505</v> + <v>1571</v> </e> </columnsizes> <dependencies> @@ -11486,7 +11217,7 @@ <b> <a>1</a> <b>2</b> - <v>1505</v> + <v>1571</v> </b> </bs> </hist> @@ -11502,7 +11233,7 @@ <b> <a>1</a> <b>2</b> - <v>1505</v> + <v>1571</v> </b> </bs> </hist> @@ -11512,15 +11243,15 @@ </relation> <relation> <name>ruby_elsif_def</name> - <cardinality>1510</cardinality> + <cardinality>1583</cardinality> <columnsizes> <e> <k>id</k> - <v>1510</v> + <v>1583</v> </e> <e> <k>condition</k> - <v>1510</v> + <v>1583</v> </e> </columnsizes> <dependencies> @@ -11534,7 +11265,7 @@ <b> <a>1</a> <b>2</b> - <v>1510</v> + <v>1583</v> </b> </bs> </hist> @@ -11550,7 +11281,7 @@ <b> <a>1</a> <b>2</b> - <v>1510</v> + <v>1583</v> </b> </bs> </hist> @@ -11568,7 +11299,7 @@ </e> <e> <k>index</k> - <v>9</v> + <v>10</v> </e> <e> <k>child</k> @@ -11586,12 +11317,12 @@ <b> <a>1</a> <b>2</b> - <v>7</v> + <v>8</v> </b> <b> <a>2</a> <b>3</b> - <v>4</v> + <v>3</v> </b> <b> <a>3</a> @@ -11599,8 +11330,8 @@ <v>1</v> </b> <b> - <a>9</a> - <b>10</b> + <a>10</a> + <b>11</b> <v>1</v> </b> </bs> @@ -11617,12 +11348,12 @@ <b> <a>1</a> <b>2</b> - <v>7</v> + <v>8</v> </b> <b> <a>2</a> <b>3</b> - <v>4</v> + <v>3</v> </b> <b> <a>3</a> @@ -11630,8 +11361,8 @@ <v>1</v> </b> <b> - <a>9</a> - <b>10</b> + <a>10</a> + <b>11</b> <v>1</v> </b> </bs> @@ -11648,7 +11379,7 @@ <b> <a>1</a> <b>2</b> - <v>6</v> + <v>7</v> </b> <b> <a>2</a> @@ -11656,8 +11387,8 @@ <v>1</v> </b> <b> - <a>6</a> - <b>7</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> @@ -11679,7 +11410,7 @@ <b> <a>1</a> <b>2</b> - <v>6</v> + <v>7</v> </b> <b> <a>2</a> @@ -11687,8 +11418,8 @@ <v>1</v> </b> <b> - <a>6</a> - <b>7</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> @@ -11747,19 +11478,19 @@ </relation> <relation> <name>ruby_ensure_child</name> - <cardinality>5114</cardinality> + <cardinality>5236</cardinality> <columnsizes> <e> <k>ruby_ensure</k> - <v>3981</v> + <v>4106</v> </e> <e> <k>index</k> - <v>49</v> + <v>47</v> </e> <e> <k>child</k> - <v>5114</v> + <v>5236</v> </e> </columnsizes> <dependencies> @@ -11773,17 +11504,17 @@ <b> <a>1</a> <b>2</b> - <v>3204</v> + <v>3323</v> </b> <b> <a>2</a> <b>3</b> - <v>543</v> + <v>554</v> </b> <b> <a>3</a> <b>17</b> - <v>233</v> + <v>227</v> </b> </bs> </hist> @@ -11799,17 +11530,17 @@ <b> <a>1</a> <b>2</b> - <v>3204</v> + <v>3323</v> </b> <b> <a>2</a> <b>3</b> - <v>543</v> + <v>554</v> </b> <b> <a>3</a> <b>17</b> - <v>233</v> + <v>227</v> </b> </bs> </hist> @@ -11825,42 +11556,42 @@ <b> <a>1</a> <b>2</b> - <v>24</v> + <v>23</v> </b> <b> <a>3</a> <b>4</b> - <v>6</v> + <v>5</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> <a>5</a> <b>6</b> - <v>3</v> + <v>2</v> </b> <b> <a>17</a> <b>18</b> - <v>3</v> + <v>2</v> </b> <b> <a>76</a> <b>77</b> - <v>3</v> + <v>2</v> </b> <b> - <a>253</a> - <b>254</b> - <v>3</v> + <a>261</a> + <b>262</b> + <v>2</v> </b> <b> - <a>1297</a> - <b>1298</b> - <v>3</v> + <a>1369</a> + <b>1370</b> + <v>2</v> </b> </bs> </hist> @@ -11876,42 +11607,42 @@ <b> <a>1</a> <b>2</b> - <v>24</v> + <v>23</v> </b> <b> <a>3</a> <b>4</b> - <v>6</v> + <v>5</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> <a>5</a> <b>6</b> - <v>3</v> + <v>2</v> </b> <b> <a>17</a> <b>18</b> - <v>3</v> + <v>2</v> </b> <b> <a>76</a> <b>77</b> - <v>3</v> + <v>2</v> </b> <b> - <a>253</a> - <b>254</b> - <v>3</v> + <a>261</a> + <b>262</b> + <v>2</v> </b> <b> - <a>1297</a> - <b>1298</b> - <v>3</v> + <a>1369</a> + <b>1370</b> + <v>2</v> </b> </bs> </hist> @@ -11927,7 +11658,7 @@ <b> <a>1</a> <b>2</b> - <v>5114</v> + <v>5236</v> </b> </bs> </hist> @@ -11943,7 +11674,7 @@ <b> <a>1</a> <b>2</b> - <v>5114</v> + <v>5236</v> </b> </bs> </hist> @@ -11953,26 +11684,26 @@ </relation> <relation> <name>ruby_ensure_def</name> - <cardinality>3981</cardinality> + <cardinality>4106</cardinality> <columnsizes> <e> <k>id</k> - <v>3981</v> + <v>4106</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_exception_variable_def</name> - <cardinality>924</cardinality> + <cardinality>935</cardinality> <columnsizes> <e> <k>id</k> - <v>924</v> + <v>935</v> </e> <e> <k>child</k> - <v>924</v> + <v>935</v> </e> </columnsizes> <dependencies> @@ -11986,7 +11717,7 @@ <b> <a>1</a> <b>2</b> - <v>924</v> + <v>935</v> </b> </bs> </hist> @@ -12002,7 +11733,7 @@ <b> <a>1</a> <b>2</b> - <v>924</v> + <v>935</v> </b> </bs> </hist> @@ -12012,19 +11743,19 @@ </relation> <relation> <name>ruby_exceptions_child</name> - <cardinality>2188</cardinality> + <cardinality>2128</cardinality> <columnsizes> <e> <k>ruby_exceptions</k> - <v>1938</v> + <v>1904</v> </e> <e> <k>index</k> - <v>20</v> + <v>11</v> </e> <e> <k>child</k> - <v>2188</v> + <v>2128</v> </e> </columnsizes> <dependencies> @@ -12038,17 +11769,17 @@ <b> <a>1</a> <b>2</b> - <v>1770</v> + <v>1748</v> </b> <b> <a>2</a> - <b>4</b> - <v>152</v> + <b>5</b> + <v>153</v> </b> <b> - <a>4</a> - <b>9</b> - <v>15</v> + <a>5</a> + <b>6</b> + <v>2</v> </b> </bs> </hist> @@ -12064,17 +11795,17 @@ <b> <a>1</a> <b>2</b> - <v>1770</v> + <v>1748</v> </b> <b> <a>2</a> - <b>4</b> - <v>152</v> + <b>5</b> + <v>153</v> </b> <b> - <a>4</a> - <b>9</b> - <v>15</v> + <a>5</a> + <b>6</b> + <v>2</v> </b> </bs> </hist> @@ -12090,11 +11821,6 @@ <b> <a>1</a> <b>2</b> - <v>7</v> - </b> - <b> - <a>2</a> - <b>3</b> <v>2</v> </b> <b> @@ -12103,8 +11829,8 @@ <v>2</v> </b> <b> - <a>21</a> - <b>22</b> + <a>22</a> + <b>23</b> <v>2</v> </b> <b> @@ -12113,8 +11839,8 @@ <v>2</v> </b> <b> - <a>761</a> - <b>762</b> + <a>806</a> + <b>807</b> <v>2</v> </b> </bs> @@ -12131,11 +11857,6 @@ <b> <a>1</a> <b>2</b> - <v>7</v> - </b> - <b> - <a>2</a> - <b>3</b> <v>2</v> </b> <b> @@ -12144,8 +11865,8 @@ <v>2</v> </b> <b> - <a>21</a> - <b>22</b> + <a>22</a> + <b>23</b> <v>2</v> </b> <b> @@ -12154,8 +11875,8 @@ <v>2</v> </b> <b> - <a>761</a> - <b>762</b> + <a>806</a> + <b>807</b> <v>2</v> </b> </bs> @@ -12172,7 +11893,7 @@ <b> <a>1</a> <b>2</b> - <v>2188</v> + <v>2128</v> </b> </bs> </hist> @@ -12188,7 +11909,7 @@ <b> <a>1</a> <b>2</b> - <v>2188</v> + <v>2128</v> </b> </bs> </hist> @@ -12198,11 +11919,11 @@ </relation> <relation> <name>ruby_exceptions_def</name> - <cardinality>1938</cardinality> + <cardinality>1904</cardinality> <columnsizes> <e> <k>id</k> - <v>1938</v> + <v>1904</v> </e> </columnsizes> <dependencies/> @@ -12452,23 +12173,23 @@ </relation> <relation> <name>ruby_for_def</name> - <cardinality>158</cardinality> + <cardinality>136</cardinality> <columnsizes> <e> <k>id</k> - <v>158</v> + <v>136</v> </e> <e> <k>body</k> - <v>158</v> + <v>136</v> </e> <e> <k>pattern</k> - <v>158</v> + <v>136</v> </e> <e> <k>value</k> - <v>158</v> + <v>136</v> </e> </columnsizes> <dependencies> @@ -12482,7 +12203,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12498,7 +12219,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12514,7 +12235,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12530,7 +12251,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12546,7 +12267,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12562,7 +12283,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12578,7 +12299,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12594,7 +12315,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12610,7 +12331,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12626,7 +12347,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12642,7 +12363,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12658,7 +12379,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -12668,19 +12389,19 @@ </relation> <relation> <name>ruby_hash_child</name> - <cardinality>93915</cardinality> + <cardinality>96207</cardinality> <columnsizes> <e> <k>ruby_hash</k> - <v>37005</v> + <v>37893</v> </e> <e> <k>index</k> - <v>1408</v> + <v>1439</v> </e> <e> <k>child</k> - <v>93915</v> + <v>96207</v> </e> </columnsizes> <dependencies> @@ -12694,32 +12415,32 @@ <b> <a>1</a> <b>2</b> - <v>15244</v> + <v>15577</v> </b> <b> <a>2</a> <b>3</b> - <v>10347</v> + <v>10573</v> </b> <b> <a>3</a> <b>4</b> - <v>4146</v> + <v>4318</v> </b> <b> <a>4</a> <b>5</b> - <v>4291</v> + <v>4385</v> </b> <b> <a>5</a> <b>20</b> - <v>2817</v> + <v>2878</v> </b> <b> <a>20</a> <b>108</b> - <v>157</v> + <v>161</v> </b> </bs> </hist> @@ -12735,32 +12456,32 @@ <b> <a>1</a> <b>2</b> - <v>15244</v> + <v>15577</v> </b> <b> <a>2</a> <b>3</b> - <v>10347</v> + <v>10573</v> </b> <b> <a>3</a> <b>4</b> - <v>4146</v> + <v>4318</v> </b> <b> <a>4</a> <b>5</b> - <v>4291</v> + <v>4385</v> </b> <b> <a>5</a> <b>20</b> - <v>2817</v> + <v>2878</v> </b> <b> <a>20</a> <b>108</b> - <v>157</v> + <v>161</v> </b> </bs> </hist> @@ -12776,41 +12497,41 @@ <b> <a>1</a> <b>2</b> - <v>355</v> + <v>363</v> </b> <b> <a>2</a> <b>3</b> - <v>250</v> + <v>255</v> </b> <b> <a>3</a> <b>4</b> - <v>329</v> + <v>336</v> </b> <b> <a>5</a> <b>6</b> - <v>105</v> + <v>107</v> </b> <b> <a>7</a> <b>13</b> - <v>118</v> + <v>121</v> </b> <b> <a>16</a> <b>55</b> - <v>118</v> + <v>121</v> </b> <b> <a>59</a> - <b>1654</b> - <v>118</v> + <b>1660</b> + <v>121</v> </b> <b> - <a>2811</a> - <b>2812</b> + <a>2817</a> + <b>2818</b> <v>13</v> </b> </bs> @@ -12827,41 +12548,41 @@ <b> <a>1</a> <b>2</b> - <v>355</v> + <v>363</v> </b> <b> <a>2</a> <b>3</b> - <v>250</v> + <v>255</v> </b> <b> <a>3</a> <b>4</b> - <v>329</v> + <v>336</v> </b> <b> <a>5</a> <b>6</b> - <v>105</v> + <v>107</v> </b> <b> <a>7</a> <b>13</b> - <v>118</v> + <v>121</v> </b> <b> <a>16</a> <b>55</b> - <v>118</v> + <v>121</v> </b> <b> <a>59</a> - <b>1654</b> - <v>118</v> + <b>1660</b> + <v>121</v> </b> <b> - <a>2811</a> - <b>2812</b> + <a>2817</a> + <b>2818</b> <v>13</v> </b> </bs> @@ -12878,7 +12599,7 @@ <b> <a>1</a> <b>2</b> - <v>93915</v> + <v>96207</v> </b> </bs> </hist> @@ -12894,7 +12615,7 @@ <b> <a>1</a> <b>2</b> - <v>93915</v> + <v>96207</v> </b> </bs> </hist> @@ -12904,22 +12625,22 @@ </relation> <relation> <name>ruby_hash_def</name> - <cardinality>40888</cardinality> + <cardinality>41915</cardinality> <columnsizes> <e> <k>id</k> - <v>40888</v> + <v>41915</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_hash_pattern_child</name> - <cardinality>98</cardinality> + <cardinality>94</cardinality> <columnsizes> <e> <k>ruby_hash_pattern</k> - <v>70</v> + <v>68</v> </e> <e> <k>index</k> @@ -12927,7 +12648,7 @@ </e> <e> <k>child</k> - <v>98</v> + <v>94</v> </e> </columnsizes> <dependencies> @@ -12946,7 +12667,7 @@ <b> <a>2</a> <b>3</b> - <v>14</v> + <v>12</v> </b> <b> <a>3</a> @@ -12972,7 +12693,7 @@ <b> <a>2</a> <b>3</b> - <v>14</v> + <v>12</v> </b> <b> <a>3</a> @@ -13001,13 +12722,13 @@ <v>1</v> </b> <b> - <a>20</a> - <b>21</b> + <a>18</a> + <b>19</b> <v>1</v> </b> <b> - <a>70</a> - <b>71</b> + <a>68</a> + <b>69</b> <v>1</v> </b> </bs> @@ -13032,13 +12753,13 @@ <v>1</v> </b> <b> - <a>20</a> - <b>21</b> + <a>18</a> + <b>19</b> <v>1</v> </b> <b> - <a>70</a> - <b>71</b> + <a>68</a> + <b>69</b> <v>1</v> </b> </bs> @@ -13055,7 +12776,7 @@ <b> <a>1</a> <b>2</b> - <v>98</v> + <v>94</v> </b> </bs> </hist> @@ -13071,7 +12792,7 @@ <b> <a>1</a> <b>2</b> - <v>98</v> + <v>94</v> </b> </bs> </hist> @@ -13081,15 +12802,15 @@ </relation> <relation> <name>ruby_hash_pattern_class</name> - <cardinality>9</cardinality> + <cardinality>32</cardinality> <columnsizes> <e> <k>ruby_hash_pattern</k> - <v>9</v> + <v>32</v> </e> <e> <k>class</k> - <v>9</v> + <v>32</v> </e> </columnsizes> <dependencies> @@ -13103,7 +12824,7 @@ <b> <a>1</a> <b>2</b> - <v>9</v> + <v>32</v> </b> </bs> </hist> @@ -13119,7 +12840,7 @@ <b> <a>1</a> <b>2</b> - <v>9</v> + <v>32</v> </b> </bs> </hist> @@ -13129,26 +12850,26 @@ </relation> <relation> <name>ruby_hash_pattern_def</name> - <cardinality>75</cardinality> + <cardinality>73</cardinality> <columnsizes> <e> <k>id</k> - <v>75</v> + <v>73</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_hash_splat_argument_child</name> - <cardinality>1902</cardinality> + <cardinality>1988</cardinality> <columnsizes> <e> <k>ruby_hash_splat_argument</k> - <v>1902</v> + <v>1988</v> </e> <e> <k>child</k> - <v>1902</v> + <v>1988</v> </e> </columnsizes> <dependencies> @@ -13162,7 +12883,7 @@ <b> <a>1</a> <b>2</b> - <v>1902</v> + <v>1988</v> </b> </bs> </hist> @@ -13178,7 +12899,7 @@ <b> <a>1</a> <b>2</b> - <v>1902</v> + <v>1988</v> </b> </bs> </hist> @@ -13188,37 +12909,37 @@ </relation> <relation> <name>ruby_hash_splat_argument_def</name> - <cardinality>1902</cardinality> + <cardinality>1989</cardinality> <columnsizes> <e> <k>id</k> - <v>1902</v> + <v>1989</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_hash_splat_parameter_def</name> - <cardinality>1596</cardinality> + <cardinality>1574</cardinality> <columnsizes> <e> <k>id</k> - <v>1596</v> + <v>1574</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_hash_splat_parameter_name</name> - <cardinality>1366</cardinality> + <cardinality>1352</cardinality> <columnsizes> <e> <k>ruby_hash_splat_parameter</k> - <v>1366</v> + <v>1352</v> </e> <e> <k>name</k> - <v>1366</v> + <v>1352</v> </e> </columnsizes> <dependencies> @@ -13232,7 +12953,7 @@ <b> <a>1</a> <b>2</b> - <v>1366</v> + <v>1352</v> </b> </bs> </hist> @@ -13248,7 +12969,7 @@ <b> <a>1</a> <b>2</b> - <v>1366</v> + <v>1352</v> </b> </bs> </hist> @@ -13258,19 +12979,19 @@ </relation> <relation> <name>ruby_heredoc_body_child</name> - <cardinality>26162</cardinality> + <cardinality>26244</cardinality> <columnsizes> <e> <k>ruby_heredoc_body</k> - <v>5519</v> + <v>5817</v> </e> <e> <k>index</k> - <v>552</v> + <v>512</v> </e> <e> <k>child</k> - <v>26162</v> + <v>26244</v> </e> </columnsizes> <dependencies> @@ -13284,12 +13005,12 @@ <b> <a>2</a> <b>3</b> - <v>3156</v> + <v>3504</v> </b> <b> <a>4</a> <b>5</b> - <v>692</v> + <v>701</v> </b> <b> <a>5</a> @@ -13299,7 +13020,7 @@ <b> <a>6</a> <b>7</b> - <v>720</v> + <v>675</v> </b> <b> <a>7</a> @@ -13308,13 +13029,13 @@ </b> <b> <a>10</a> - <b>15</b> - <v>415</v> + <b>17</b> + <v>467</v> </b> <b> - <a>16</a> + <a>17</a> <b>218</b> - <v>203</v> + <v>137</v> </b> </bs> </hist> @@ -13330,12 +13051,12 @@ <b> <a>2</a> <b>3</b> - <v>3156</v> + <v>3504</v> </b> <b> <a>4</a> <b>5</b> - <v>692</v> + <v>701</v> </b> <b> <a>5</a> @@ -13345,7 +13066,7 @@ <b> <a>6</a> <b>7</b> - <v>720</v> + <v>675</v> </b> <b> <a>7</a> @@ -13354,13 +13075,13 @@ </b> <b> <a>10</a> - <b>15</b> - <v>415</v> + <b>17</b> + <v>467</v> </b> <b> - <a>16</a> + <a>17</a> <b>218</b> - <v>203</v> + <v>137</v> </b> </bs> </hist> @@ -13376,32 +13097,32 @@ <b> <a>1</a> <b>2</b> - <v>326</v> + <v>302</v> </b> <b> <a>2</a> <b>3</b> - <v>43</v> + <v>40</v> </b> <b> <a>3</a> <b>5</b> - <v>50</v> + <v>47</v> </b> <b> <a>5</a> - <b>11</b> - <v>43</v> + <b>13</b> + <v>40</v> </b> <b> - <a>11</a> - <b>46</b> - <v>43</v> + <a>13</a> + <b>43</b> + <v>40</v> </b> <b> - <a>57</a> - <b>2168</b> - <v>45</v> + <a>56</a> + <b>2463</b> + <v>42</v> </b> </bs> </hist> @@ -13417,32 +13138,32 @@ <b> <a>1</a> <b>2</b> - <v>326</v> + <v>302</v> </b> <b> <a>2</a> <b>3</b> - <v>43</v> + <v>40</v> </b> <b> <a>3</a> <b>5</b> - <v>50</v> + <v>47</v> </b> <b> <a>5</a> - <b>11</b> - <v>43</v> + <b>13</b> + <v>40</v> </b> <b> - <a>11</a> - <b>46</b> - <v>43</v> + <a>13</a> + <b>43</b> + <v>40</v> </b> <b> - <a>57</a> - <b>2168</b> - <v>45</v> + <a>56</a> + <b>2463</b> + <v>42</v> </b> </bs> </hist> @@ -13458,7 +13179,7 @@ <b> <a>1</a> <b>2</b> - <v>26162</v> + <v>26244</v> </b> </bs> </hist> @@ -13474,7 +13195,7 @@ <b> <a>1</a> <b>2</b> - <v>26162</v> + <v>26244</v> </b> </bs> </hist> @@ -13484,26 +13205,26 @@ </relation> <relation> <name>ruby_heredoc_body_def</name> - <cardinality>6178</cardinality> + <cardinality>6934</cardinality> <columnsizes> <e> <k>id</k> - <v>6178</v> + <v>6934</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_if_alternative</name> - <cardinality>7005</cardinality> + <cardinality>7192</cardinality> <columnsizes> <e> <k>ruby_if</k> - <v>7005</v> + <v>7192</v> </e> <e> <k>alternative</k> - <v>7005</v> + <v>7192</v> </e> </columnsizes> <dependencies> @@ -13517,7 +13238,7 @@ <b> <a>1</a> <b>2</b> - <v>7005</v> + <v>7192</v> </b> </bs> </hist> @@ -13533,7 +13254,7 @@ <b> <a>1</a> <b>2</b> - <v>7005</v> + <v>7192</v> </b> </bs> </hist> @@ -13543,15 +13264,15 @@ </relation> <relation> <name>ruby_if_consequence</name> - <cardinality>16338</cardinality> + <cardinality>16117</cardinality> <columnsizes> <e> <k>ruby_if</k> - <v>16338</v> + <v>16117</v> </e> <e> <k>consequence</k> - <v>16338</v> + <v>16117</v> </e> </columnsizes> <dependencies> @@ -13565,7 +13286,7 @@ <b> <a>1</a> <b>2</b> - <v>16338</v> + <v>16117</v> </b> </bs> </hist> @@ -13581,7 +13302,7 @@ <b> <a>1</a> <b>2</b> - <v>16338</v> + <v>16117</v> </b> </bs> </hist> @@ -13591,15 +13312,15 @@ </relation> <relation> <name>ruby_if_def</name> - <cardinality>16391</cardinality> + <cardinality>16164</cardinality> <columnsizes> <e> <k>id</k> - <v>16391</v> + <v>16164</v> </e> <e> <k>condition</k> - <v>16391</v> + <v>16164</v> </e> </columnsizes> <dependencies> @@ -13613,7 +13334,7 @@ <b> <a>1</a> <b>2</b> - <v>16391</v> + <v>16164</v> </b> </bs> </hist> @@ -13629,7 +13350,7 @@ <b> <a>1</a> <b>2</b> - <v>16391</v> + <v>16164</v> </b> </bs> </hist> @@ -13687,19 +13408,19 @@ </relation> <relation> <name>ruby_if_modifier_def</name> - <cardinality>14611</cardinality> + <cardinality>14541</cardinality> <columnsizes> <e> <k>id</k> - <v>14611</v> + <v>14541</v> </e> <e> <k>body</k> - <v>14611</v> + <v>14541</v> </e> <e> <k>condition</k> - <v>14611</v> + <v>14541</v> </e> </columnsizes> <dependencies> @@ -13713,7 +13434,7 @@ <b> <a>1</a> <b>2</b> - <v>14611</v> + <v>14541</v> </b> </bs> </hist> @@ -13729,7 +13450,7 @@ <b> <a>1</a> <b>2</b> - <v>14611</v> + <v>14541</v> </b> </bs> </hist> @@ -13745,7 +13466,7 @@ <b> <a>1</a> <b>2</b> - <v>14611</v> + <v>14541</v> </b> </bs> </hist> @@ -13761,7 +13482,7 @@ <b> <a>1</a> <b>2</b> - <v>14611</v> + <v>14541</v> </b> </bs> </hist> @@ -13777,7 +13498,7 @@ <b> <a>1</a> <b>2</b> - <v>14611</v> + <v>14541</v> </b> </bs> </hist> @@ -13793,7 +13514,7 @@ <b> <a>1</a> <b>2</b> - <v>14611</v> + <v>14541</v> </b> </bs> </hist> @@ -13803,15 +13524,15 @@ </relation> <relation> <name>ruby_in_clause_body</name> - <cardinality>345</cardinality> + <cardinality>341</cardinality> <columnsizes> <e> <k>ruby_in_clause</k> - <v>345</v> + <v>341</v> </e> <e> <k>body</k> - <v>345</v> + <v>341</v> </e> </columnsizes> <dependencies> @@ -13825,7 +13546,7 @@ <b> <a>1</a> <b>2</b> - <v>345</v> + <v>341</v> </b> </bs> </hist> @@ -13841,7 +13562,7 @@ <b> <a>1</a> <b>2</b> - <v>345</v> + <v>341</v> </b> </bs> </hist> @@ -13851,15 +13572,15 @@ </relation> <relation> <name>ruby_in_clause_def</name> - <cardinality>385</cardinality> + <cardinality>381</cardinality> <columnsizes> <e> <k>id</k> - <v>385</v> + <v>381</v> </e> <e> <k>pattern</k> - <v>385</v> + <v>381</v> </e> </columnsizes> <dependencies> @@ -13873,7 +13594,7 @@ <b> <a>1</a> <b>2</b> - <v>385</v> + <v>381</v> </b> </bs> </hist> @@ -13889,7 +13610,7 @@ <b> <a>1</a> <b>2</b> - <v>385</v> + <v>381</v> </b> </bs> </hist> @@ -13947,15 +13668,15 @@ </relation> <relation> <name>ruby_in_def</name> - <cardinality>158</cardinality> + <cardinality>136</cardinality> <columnsizes> <e> <k>id</k> - <v>158</v> + <v>136</v> </e> <e> <k>child</k> - <v>158</v> + <v>136</v> </e> </columnsizes> <dependencies> @@ -13969,7 +13690,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -13985,7 +13706,7 @@ <b> <a>1</a> <b>2</b> - <v>158</v> + <v>136</v> </b> </bs> </hist> @@ -13995,11 +13716,11 @@ </relation> <relation> <name>ruby_interpolation_child</name> - <cardinality>38305</cardinality> + <cardinality>38493</cardinality> <columnsizes> <e> <k>ruby_interpolation</k> - <v>38305</v> + <v>38493</v> </e> <e> <k>index</k> @@ -14007,7 +13728,7 @@ </e> <e> <k>child</k> - <v>38305</v> + <v>38493</v> </e> </columnsizes> <dependencies> @@ -14021,7 +13742,7 @@ <b> <a>1</a> <b>2</b> - <v>38305</v> + <v>38493</v> </b> </bs> </hist> @@ -14037,7 +13758,7 @@ <b> <a>1</a> <b>2</b> - <v>38305</v> + <v>38493</v> </b> </bs> </hist> @@ -14051,8 +13772,8 @@ <budget>12</budget> <bs> <b> - <a>15038</a> - <b>15039</b> + <a>16291</a> + <b>16292</b> <v>2</v> </b> </bs> @@ -14067,8 +13788,8 @@ <budget>12</budget> <bs> <b> - <a>15038</a> - <b>15039</b> + <a>16291</a> + <b>16292</b> <v>2</v> </b> </bs> @@ -14085,7 +13806,7 @@ <b> <a>1</a> <b>2</b> - <v>38305</v> + <v>38493</v> </b> </bs> </hist> @@ -14101,7 +13822,7 @@ <b> <a>1</a> <b>2</b> - <v>38305</v> + <v>38493</v> </b> </bs> </hist> @@ -14111,26 +13832,26 @@ </relation> <relation> <name>ruby_interpolation_def</name> - <cardinality>38305</cardinality> + <cardinality>38493</cardinality> <columnsizes> <e> <k>id</k> - <v>38305</v> + <v>38493</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_keyword_parameter_def</name> - <cardinality>4144</cardinality> + <cardinality>4763</cardinality> <columnsizes> <e> <k>id</k> - <v>4144</v> + <v>4763</v> </e> <e> <k>name</k> - <v>4144</v> + <v>4763</v> </e> </columnsizes> <dependencies> @@ -14144,7 +13865,7 @@ <b> <a>1</a> <b>2</b> - <v>4144</v> + <v>4763</v> </b> </bs> </hist> @@ -14160,7 +13881,7 @@ <b> <a>1</a> <b>2</b> - <v>4144</v> + <v>4763</v> </b> </bs> </hist> @@ -14170,15 +13891,15 @@ </relation> <relation> <name>ruby_keyword_parameter_value</name> - <cardinality>3100</cardinality> + <cardinality>3293</cardinality> <columnsizes> <e> <k>ruby_keyword_parameter</k> - <v>3100</v> + <v>3293</v> </e> <e> <k>value</k> - <v>3100</v> + <v>3293</v> </e> </columnsizes> <dependencies> @@ -14192,7 +13913,7 @@ <b> <a>1</a> <b>2</b> - <v>3100</v> + <v>3293</v> </b> </bs> </hist> @@ -14208,7 +13929,7 @@ <b> <a>1</a> <b>2</b> - <v>3100</v> + <v>3293</v> </b> </bs> </hist> @@ -14218,15 +13939,15 @@ </relation> <relation> <name>ruby_keyword_pattern_def</name> - <cardinality>80</cardinality> + <cardinality>77</cardinality> <columnsizes> <e> <k>id</k> - <v>80</v> + <v>77</v> </e> <e> <k>key__</k> - <v>80</v> + <v>77</v> </e> </columnsizes> <dependencies> @@ -14240,7 +13961,7 @@ <b> <a>1</a> <b>2</b> - <v>80</v> + <v>77</v> </b> </bs> </hist> @@ -14256,7 +13977,7 @@ <b> <a>1</a> <b>2</b> - <v>80</v> + <v>77</v> </b> </bs> </hist> @@ -14266,15 +13987,15 @@ </relation> <relation> <name>ruby_keyword_pattern_value</name> - <cardinality>40</cardinality> + <cardinality>56</cardinality> <columnsizes> <e> <k>ruby_keyword_pattern</k> - <v>40</v> + <v>56</v> </e> <e> <k>value</k> - <v>40</v> + <v>56</v> </e> </columnsizes> <dependencies> @@ -14288,7 +14009,7 @@ <b> <a>1</a> <b>2</b> - <v>40</v> + <v>56</v> </b> </bs> </hist> @@ -14304,7 +14025,7 @@ <b> <a>1</a> <b>2</b> - <v>40</v> + <v>56</v> </b> </bs> </hist> @@ -14314,15 +14035,15 @@ </relation> <relation> <name>ruby_lambda_def</name> - <cardinality>7948</cardinality> + <cardinality>8187</cardinality> <columnsizes> <e> <k>id</k> - <v>7948</v> + <v>8187</v> </e> <e> <k>body</k> - <v>7948</v> + <v>8187</v> </e> </columnsizes> <dependencies> @@ -14336,7 +14057,7 @@ <b> <a>1</a> <b>2</b> - <v>7948</v> + <v>8187</v> </b> </bs> </hist> @@ -14352,7 +14073,7 @@ <b> <a>1</a> <b>2</b> - <v>7948</v> + <v>8187</v> </b> </bs> </hist> @@ -14362,15 +14083,15 @@ </relation> <relation> <name>ruby_lambda_parameters</name> - <cardinality>1762</cardinality> + <cardinality>1811</cardinality> <columnsizes> <e> <k>ruby_lambda</k> - <v>1762</v> + <v>1811</v> </e> <e> <k>parameters</k> - <v>1762</v> + <v>1811</v> </e> </columnsizes> <dependencies> @@ -14384,7 +14105,7 @@ <b> <a>1</a> <b>2</b> - <v>1762</v> + <v>1811</v> </b> </bs> </hist> @@ -14400,7 +14121,7 @@ <b> <a>1</a> <b>2</b> - <v>1762</v> + <v>1811</v> </b> </bs> </hist> @@ -14410,11 +14131,11 @@ </relation> <relation> <name>ruby_lambda_parameters_child</name> - <cardinality>2109</cardinality> + <cardinality>2197</cardinality> <columnsizes> <e> <k>ruby_lambda_parameters</k> - <v>1752</v> + <v>1801</v> </e> <e> <k>index</k> @@ -14422,7 +14143,7 @@ </e> <e> <k>child</k> - <v>2109</v> + <v>2197</v> </e> </columnsizes> <dependencies> @@ -14436,17 +14157,17 @@ <b> <a>1</a> <b>2</b> - <v>1514</v> + <v>1545</v> </b> <b> <a>2</a> <b>3</b> - <v>167</v> + <v>164</v> </b> <b> <a>3</a> <b>9</b> - <v>71</v> + <v>92</v> </b> </bs> </hist> @@ -14462,17 +14183,17 @@ <b> <a>1</a> <b>2</b> - <v>1514</v> + <v>1545</v> </b> <b> <a>2</a> <b>3</b> - <v>167</v> + <v>164</v> </b> <b> <a>3</a> <b>9</b> - <v>71</v> + <v>92</v> </b> </bs> </hist> @@ -14511,18 +14232,18 @@ <v>1</v> </b> <b> - <a>71</a> - <b>72</b> + <a>92</a> + <b>93</b> <v>1</v> </b> <b> - <a>238</a> - <b>239</b> + <a>256</a> + <b>257</b> <v>1</v> </b> <b> - <a>1752</a> - <b>1753</b> + <a>1801</a> + <b>1802</b> <v>1</v> </b> </bs> @@ -14562,18 +14283,18 @@ <v>1</v> </b> <b> - <a>71</a> - <b>72</b> + <a>92</a> + <b>93</b> <v>1</v> </b> <b> - <a>238</a> - <b>239</b> + <a>256</a> + <b>257</b> <v>1</v> </b> <b> - <a>1752</a> - <b>1753</b> + <a>1801</a> + <b>1802</b> <v>1</v> </b> </bs> @@ -14590,7 +14311,7 @@ <b> <a>1</a> <b>2</b> - <v>2109</v> + <v>2197</v> </b> </bs> </hist> @@ -14606,7 +14327,7 @@ <b> <a>1</a> <b>2</b> - <v>2109</v> + <v>2197</v> </b> </bs> </hist> @@ -14616,22 +14337,22 @@ </relation> <relation> <name>ruby_lambda_parameters_def</name> - <cardinality>1762</cardinality> + <cardinality>1811</cardinality> <columnsizes> <e> <k>id</k> - <v>1762</v> + <v>1811</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_left_assignment_list_child</name> - <cardinality>6610</cardinality> + <cardinality>6934</cardinality> <columnsizes> <e> <k>ruby_left_assignment_list</k> - <v>2994</v> + <v>3100</v> </e> <e> <k>index</k> @@ -14639,7 +14360,7 @@ </e> <e> <k>child</k> - <v>6610</v> + <v>6934</v> </e> </columnsizes> <dependencies> @@ -14653,22 +14374,22 @@ <b> <a>1</a> <b>2</b> - <v>372</v> + <v>382</v> </b> <b> <a>2</a> <b>3</b> - <v>1951</v> + <v>2002</v> </b> <b> <a>3</a> <b>4</b> - <v>505</v> + <v>531</v> </b> <b> <a>4</a> <b>16</b> - <v>166</v> + <v>185</v> </b> </bs> </hist> @@ -14684,22 +14405,22 @@ <b> <a>1</a> <b>2</b> - <v>372</v> + <v>382</v> </b> <b> <a>2</a> <b>3</b> - <v>1951</v> + <v>2002</v> </b> <b> <a>3</a> <b>4</b> - <v>505</v> + <v>531</v> </b> <b> <a>4</a> <b>16</b> - <v>166</v> + <v>185</v> </b> </bs> </hist> @@ -14713,63 +14434,63 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> - <v>1</v> - </b> - <b> - <a>4</a> - <b>5</b> - <v>2</v> + <a>3</a> + <b>4</b> + <v>1</v> </b> <b> <a>6</a> <b>7</b> - <v>3</v> + <v>2</v> </b> <b> <a>10</a> <b>11</b> + <v>3</v> + </b> + <b> + <a>15</a> + <b>16</b> <v>1</v> </b> <b> - <a>14</a> - <b>15</b> + <a>20</a> + <b>21</b> <v>1</v> </b> <b> - <a>16</a> - <b>17</b> + <a>22</a> + <b>23</b> <v>1</v> </b> <b> - <a>30</a> - <b>31</b> + <a>41</a> + <b>42</b> <v>1</v> </b> <b> - <a>59</a> - <b>60</b> + <a>72</a> + <b>73</b> <v>1</v> </b> <b> - <a>166</a> - <b>167</b> + <a>185</a> + <b>186</b> <v>1</v> </b> <b> - <a>671</a> - <b>672</b> + <a>716</a> + <b>717</b> <v>1</v> </b> <b> - <a>2622</a> - <b>2623</b> + <a>2718</a> + <b>2719</b> <v>1</v> </b> <b> - <a>2994</a> - <b>2995</b> + <a>3100</a> + <b>3101</b> <v>1</v> </b> </bs> @@ -14784,63 +14505,63 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>3</a> + <b>4</b> <v>1</v> </b> - <b> - <a>4</a> - <b>5</b> - <v>2</v> - </b> <b> <a>6</a> <b>7</b> - <v>3</v> + <v>2</v> </b> <b> <a>10</a> <b>11</b> + <v>3</v> + </b> + <b> + <a>15</a> + <b>16</b> <v>1</v> </b> <b> - <a>14</a> - <b>15</b> + <a>20</a> + <b>21</b> <v>1</v> </b> <b> - <a>16</a> - <b>17</b> + <a>22</a> + <b>23</b> <v>1</v> </b> <b> - <a>30</a> - <b>31</b> + <a>41</a> + <b>42</b> <v>1</v> </b> <b> - <a>59</a> - <b>60</b> + <a>72</a> + <b>73</b> <v>1</v> </b> <b> - <a>166</a> - <b>167</b> + <a>185</a> + <b>186</b> <v>1</v> </b> <b> - <a>671</a> - <b>672</b> + <a>716</a> + <b>717</b> <v>1</v> </b> <b> - <a>2622</a> - <b>2623</b> + <a>2718</a> + <b>2719</b> <v>1</v> </b> <b> - <a>2994</a> - <b>2995</b> + <a>3100</a> + <b>3101</b> <v>1</v> </b> </bs> @@ -14857,7 +14578,7 @@ <b> <a>1</a> <b>2</b> - <v>6610</v> + <v>6934</v> </b> </bs> </hist> @@ -14873,7 +14594,7 @@ <b> <a>1</a> <b>2</b> - <v>6610</v> + <v>6934</v> </b> </bs> </hist> @@ -14883,11 +14604,11 @@ </relation> <relation> <name>ruby_left_assignment_list_def</name> - <cardinality>2994</cardinality> + <cardinality>3100</cardinality> <columnsizes> <e> <k>id</k> - <v>2994</v> + <v>3100</v> </e> </columnsizes> <dependencies/> @@ -15010,15 +14731,15 @@ </relation> <relation> <name>ruby_method_body</name> - <cardinality>101013</cardinality> + <cardinality>102401</cardinality> <columnsizes> <e> <k>ruby_method</k> - <v>101013</v> + <v>102401</v> </e> <e> <k>body</k> - <v>101013</v> + <v>102401</v> </e> </columnsizes> <dependencies> @@ -15032,7 +14753,7 @@ <b> <a>1</a> <b>2</b> - <v>101013</v> + <v>102401</v> </b> </bs> </hist> @@ -15048,7 +14769,7 @@ <b> <a>1</a> <b>2</b> - <v>101013</v> + <v>102401</v> </b> </bs> </hist> @@ -15058,15 +14779,15 @@ </relation> <relation> <name>ruby_method_def</name> - <cardinality>102124</cardinality> + <cardinality>103532</cardinality> <columnsizes> <e> <k>id</k> - <v>102124</v> + <v>103532</v> </e> <e> <k>name</k> - <v>102124</v> + <v>103532</v> </e> </columnsizes> <dependencies> @@ -15080,7 +14801,7 @@ <b> <a>1</a> <b>2</b> - <v>102124</v> + <v>103532</v> </b> </bs> </hist> @@ -15096,7 +14817,7 @@ <b> <a>1</a> <b>2</b> - <v>102124</v> + <v>103532</v> </b> </bs> </hist> @@ -15106,15 +14827,15 @@ </relation> <relation> <name>ruby_method_parameters</name> - <cardinality>29141</cardinality> + <cardinality>29519</cardinality> <columnsizes> <e> <k>ruby_method</k> - <v>29141</v> + <v>29519</v> </e> <e> <k>parameters</k> - <v>29141</v> + <v>29519</v> </e> </columnsizes> <dependencies> @@ -15128,7 +14849,7 @@ <b> <a>1</a> <b>2</b> - <v>29141</v> + <v>29519</v> </b> </bs> </hist> @@ -15144,7 +14865,7 @@ <b> <a>1</a> <b>2</b> - <v>29141</v> + <v>29519</v> </b> </bs> </hist> @@ -15154,19 +14875,19 @@ </relation> <relation> <name>ruby_method_parameters_child</name> - <cardinality>50543</cardinality> + <cardinality>51112</cardinality> <columnsizes> <e> <k>ruby_method_parameters</k> - <v>30620</v> + <v>31001</v> </e> <e> <k>index</k> - <v>39</v> + <v>41</v> </e> <e> <k>child</k> - <v>50543</v> + <v>51112</v> </e> </columnsizes> <dependencies> @@ -15180,22 +14901,22 @@ <b> <a>1</a> <b>2</b> - <v>18615</v> + <v>18836</v> </b> <b> <a>2</a> <b>3</b> - <v>7339</v> + <v>7543</v> </b> <b> <a>3</a> <b>4</b> - <v>2903</v> + <v>2840</v> </b> <b> <a>4</a> - <b>14</b> - <v>1762</v> + <b>15</b> + <v>1781</v> </b> </bs> </hist> @@ -15211,22 +14932,22 @@ <b> <a>1</a> <b>2</b> - <v>18615</v> + <v>18836</v> </b> <b> <a>2</a> <b>3</b> - <v>7339</v> + <v>7543</v> </b> <b> <a>3</a> <b>4</b> - <v>2903</v> + <v>2840</v> </b> <b> <a>4</a> - <b>14</b> - <v>1762</v> + <b>15</b> + <v>1781</v> </b> </bs> </hist> @@ -15242,62 +14963,62 @@ <b> <a>1</a> <b>2</b> - <v>6</v> + <v>8</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> - <a>5</a> - <b>6</b> - <v>3</v> + <a>7</a> + <b>8</b> + <v>2</v> </b> <b> - <a>11</a> - <b>12</b> - <v>3</v> + <a>13</a> + <b>14</b> + <v>2</v> </b> <b> - <a>29</a> - <b>30</b> - <v>3</v> + <a>37</a> + <b>38</b> + <v>2</v> </b> <b> - <a>54</a> - <b>55</b> - <v>3</v> + <a>59</a> + <b>60</b> + <v>2</v> </b> <b> - <a>125</a> - <b>126</b> - <v>3</v> + <a>129</a> + <b>130</b> + <v>2</v> </b> <b> - <a>255</a> - <b>256</b> - <v>3</v> + <a>262</a> + <b>263</b> + <v>2</v> </b> <b> - <a>574</a> - <b>575</b> - <v>3</v> + <a>594</a> + <b>595</b> + <v>2</v> </b> <b> - <a>1520</a> - <b>1521</b> - <v>3</v> + <a>1541</a> + <b>1542</b> + <v>2</v> </b> <b> - <a>3911</a> - <b>3912</b> - <v>3</v> + <a>4056</a> + <b>4057</b> + <v>2</v> </b> <b> - <a>9975</a> - <b>9976</b> - <v>3</v> + <a>10336</a> + <b>10337</b> + <v>2</v> </b> </bs> </hist> @@ -15313,62 +15034,62 @@ <b> <a>1</a> <b>2</b> - <v>6</v> + <v>8</v> </b> <b> <a>4</a> <b>5</b> - <v>3</v> + <v>2</v> </b> <b> - <a>5</a> - <b>6</b> - <v>3</v> + <a>7</a> + <b>8</b> + <v>2</v> </b> <b> - <a>11</a> - <b>12</b> - <v>3</v> + <a>13</a> + <b>14</b> + <v>2</v> </b> <b> - <a>29</a> - <b>30</b> - <v>3</v> + <a>37</a> + <b>38</b> + <v>2</v> </b> <b> - <a>54</a> - <b>55</b> - <v>3</v> + <a>59</a> + <b>60</b> + <v>2</v> </b> <b> - <a>125</a> - <b>126</b> - <v>3</v> + <a>129</a> + <b>130</b> + <v>2</v> </b> <b> - <a>255</a> - <b>256</b> - <v>3</v> + <a>262</a> + <b>263</b> + <v>2</v> </b> <b> - <a>574</a> - <b>575</b> - <v>3</v> + <a>594</a> + <b>595</b> + <v>2</v> </b> <b> - <a>1520</a> - <b>1521</b> - <v>3</v> + <a>1541</a> + <b>1542</b> + <v>2</v> </b> <b> - <a>3911</a> - <b>3912</b> - <v>3</v> + <a>4056</a> + <b>4057</b> + <v>2</v> </b> <b> - <a>9975</a> - <b>9976</b> - <v>3</v> + <a>10336</a> + <b>10337</b> + <v>2</v> </b> </bs> </hist> @@ -15384,7 +15105,7 @@ <b> <a>1</a> <b>2</b> - <v>50543</v> + <v>51112</v> </b> </bs> </hist> @@ -15400,7 +15121,7 @@ <b> <a>1</a> <b>2</b> - <v>50543</v> + <v>51112</v> </b> </bs> </hist> @@ -15410,26 +15131,26 @@ </relation> <relation> <name>ruby_method_parameters_def</name> - <cardinality>30832</cardinality> + <cardinality>31208</cardinality> <columnsizes> <e> <k>id</k> - <v>30832</v> + <v>31208</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_module_body</name> - <cardinality>22274</cardinality> + <cardinality>22881</cardinality> <columnsizes> <e> <k>ruby_module</k> - <v>22274</v> + <v>22881</v> </e> <e> <k>body</k> - <v>22274</v> + <v>22881</v> </e> </columnsizes> <dependencies> @@ -15443,7 +15164,7 @@ <b> <a>1</a> <b>2</b> - <v>22274</v> + <v>22881</v> </b> </bs> </hist> @@ -15459,7 +15180,7 @@ <b> <a>1</a> <b>2</b> - <v>22274</v> + <v>22881</v> </b> </bs> </hist> @@ -15469,15 +15190,15 @@ </relation> <relation> <name>ruby_module_def</name> - <cardinality>22353</cardinality> + <cardinality>22962</cardinality> <columnsizes> <e> <k>id</k> - <v>22353</v> + <v>22962</v> </e> <e> <k>name</k> - <v>22353</v> + <v>22962</v> </e> </columnsizes> <dependencies> @@ -15491,7 +15212,7 @@ <b> <a>1</a> <b>2</b> - <v>22353</v> + <v>22962</v> </b> </bs> </hist> @@ -15507,7 +15228,7 @@ <b> <a>1</a> <b>2</b> - <v>22353</v> + <v>22962</v> </b> </bs> </hist> @@ -15517,15 +15238,15 @@ </relation> <relation> <name>ruby_next_child</name> - <cardinality>241</cardinality> + <cardinality>256</cardinality> <columnsizes> <e> <k>ruby_next</k> - <v>241</v> + <v>256</v> </e> <e> <k>child</k> - <v>241</v> + <v>256</v> </e> </columnsizes> <dependencies> @@ -15539,7 +15260,7 @@ <b> <a>1</a> <b>2</b> - <v>241</v> + <v>256</v> </b> </bs> </hist> @@ -15555,7 +15276,7 @@ <b> <a>1</a> <b>2</b> - <v>241</v> + <v>256</v> </b> </bs> </hist> @@ -15565,34 +15286,34 @@ </relation> <relation> <name>ruby_next_def</name> - <cardinality>1902</cardinality> + <cardinality>2020</cardinality> <columnsizes> <e> <k>id</k> - <v>1902</v> + <v>2020</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_operator_assignment_def</name> - <cardinality>6006</cardinality> + <cardinality>6160</cardinality> <columnsizes> <e> <k>id</k> - <v>6006</v> + <v>6160</v> </e> <e> <k>left</k> - <v>6006</v> + <v>6160</v> </e> <e> <k>operator</k> - <v>17</v> + <v>16</v> </e> <e> <k>right</k> - <v>6006</v> + <v>6160</v> </e> </columnsizes> <dependencies> @@ -15606,7 +15327,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15622,7 +15343,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15638,7 +15359,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15654,7 +15375,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15670,7 +15391,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15686,7 +15407,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15700,8 +15421,8 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>3</a> + <b>4</b> <v>2</v> </b> <b> @@ -15710,28 +15431,28 @@ <v>2</v> </b> <b> - <a>8</a> - <b>9</b> + <a>10</a> + <b>11</b> <v>2</v> </b> <b> - <a>9</a> - <b>10</b> + <a>11</a> + <b>12</b> <v>2</v> </b> <b> - <a>60</a> - <b>61</b> + <a>64</a> + <b>65</b> <v>2</v> </b> <b> - <a>630</a> - <b>631</b> + <a>707</a> + <b>708</b> <v>2</v> </b> <b> - <a>1645</a> - <b>1646</b> + <a>1808</a> + <b>1809</b> <v>2</v> </b> </bs> @@ -15746,8 +15467,8 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>3</a> + <b>4</b> <v>2</v> </b> <b> @@ -15756,28 +15477,28 @@ <v>2</v> </b> <b> - <a>8</a> - <b>9</b> + <a>10</a> + <b>11</b> <v>2</v> </b> <b> - <a>9</a> - <b>10</b> + <a>11</a> + <b>12</b> <v>2</v> </b> <b> - <a>60</a> - <b>61</b> + <a>64</a> + <b>65</b> <v>2</v> </b> <b> - <a>630</a> - <b>631</b> + <a>707</a> + <b>708</b> <v>2</v> </b> <b> - <a>1645</a> - <b>1646</b> + <a>1808</a> + <b>1809</b> <v>2</v> </b> </bs> @@ -15792,8 +15513,8 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>3</a> + <b>4</b> <v>2</v> </b> <b> @@ -15802,28 +15523,28 @@ <v>2</v> </b> <b> - <a>8</a> - <b>9</b> + <a>10</a> + <b>11</b> <v>2</v> </b> <b> - <a>9</a> - <b>10</b> + <a>11</a> + <b>12</b> <v>2</v> </b> <b> - <a>60</a> - <b>61</b> + <a>64</a> + <b>65</b> <v>2</v> </b> <b> - <a>630</a> - <b>631</b> + <a>707</a> + <b>708</b> <v>2</v> </b> <b> - <a>1645</a> - <b>1646</b> + <a>1808</a> + <b>1809</b> <v>2</v> </b> </bs> @@ -15840,7 +15561,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15856,7 +15577,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15872,7 +15593,7 @@ <b> <a>1</a> <b>2</b> - <v>6006</v> + <v>6160</v> </b> </bs> </hist> @@ -15882,19 +15603,19 @@ </relation> <relation> <name>ruby_optional_parameter_def</name> - <cardinality>6636</cardinality> + <cardinality>6556</cardinality> <columnsizes> <e> <k>id</k> - <v>6636</v> + <v>6556</v> </e> <e> <k>name</k> - <v>6636</v> + <v>6556</v> </e> <e> <k>value</k> - <v>6636</v> + <v>6556</v> </e> </columnsizes> <dependencies> @@ -15908,7 +15629,7 @@ <b> <a>1</a> <b>2</b> - <v>6636</v> + <v>6556</v> </b> </bs> </hist> @@ -15924,7 +15645,7 @@ <b> <a>1</a> <b>2</b> - <v>6636</v> + <v>6556</v> </b> </bs> </hist> @@ -15940,7 +15661,7 @@ <b> <a>1</a> <b>2</b> - <v>6636</v> + <v>6556</v> </b> </bs> </hist> @@ -15956,7 +15677,7 @@ <b> <a>1</a> <b>2</b> - <v>6636</v> + <v>6556</v> </b> </bs> </hist> @@ -15972,7 +15693,7 @@ <b> <a>1</a> <b>2</b> - <v>6636</v> + <v>6556</v> </b> </bs> </hist> @@ -15988,7 +15709,7 @@ <b> <a>1</a> <b>2</b> - <v>6636</v> + <v>6556</v> </b> </bs> </hist> @@ -15998,15 +15719,15 @@ </relation> <relation> <name>ruby_pair_def</name> - <cardinality>248347</cardinality> + <cardinality>254198</cardinality> <columnsizes> <e> <k>id</k> - <v>248347</v> + <v>254198</v> </e> <e> <k>key__</k> - <v>248347</v> + <v>254198</v> </e> </columnsizes> <dependencies> @@ -16020,7 +15741,7 @@ <b> <a>1</a> <b>2</b> - <v>248347</v> + <v>254198</v> </b> </bs> </hist> @@ -16036,7 +15757,7 @@ <b> <a>1</a> <b>2</b> - <v>248347</v> + <v>254198</v> </b> </bs> </hist> @@ -16046,15 +15767,15 @@ </relation> <relation> <name>ruby_pair_value</name> - <cardinality>248347</cardinality> + <cardinality>254198</cardinality> <columnsizes> <e> <k>ruby_pair</k> - <v>248347</v> + <v>254198</v> </e> <e> <k>value</k> - <v>248347</v> + <v>254198</v> </e> </columnsizes> <dependencies> @@ -16068,7 +15789,7 @@ <b> <a>1</a> <b>2</b> - <v>248347</v> + <v>254198</v> </b> </bs> </hist> @@ -16084,7 +15805,7 @@ <b> <a>1</a> <b>2</b> - <v>248347</v> + <v>254198</v> </b> </bs> </hist> @@ -16142,11 +15863,11 @@ </relation> <relation> <name>ruby_parenthesized_statements_child</name> - <cardinality>10948</cardinality> + <cardinality>11347</cardinality> <columnsizes> <e> <k>ruby_parenthesized_statements</k> - <v>10874</v> + <v>11258</v> </e> <e> <k>index</k> @@ -16154,7 +15875,7 @@ </e> <e> <k>child</k> - <v>10948</v> + <v>11347</v> </e> </columnsizes> <dependencies> @@ -16168,12 +15889,12 @@ <b> <a>1</a> <b>2</b> - <v>10810</v> + <v>11179</v> </b> <b> <a>2</a> <b>5</b> - <v>64</v> + <v>79</v> </b> </bs> </hist> @@ -16189,12 +15910,12 @@ <b> <a>1</a> <b>2</b> - <v>10810</v> + <v>11179</v> </b> <b> <a>2</a> <b>5</b> - <v>64</v> + <v>79</v> </b> </bs> </hist> @@ -16218,13 +15939,13 @@ <v>1</v> </b> <b> - <a>64</a> - <b>65</b> + <a>79</a> + <b>80</b> <v>1</v> </b> <b> - <a>10874</a> - <b>10875</b> + <a>11258</a> + <b>11259</b> <v>1</v> </b> </bs> @@ -16249,13 +15970,13 @@ <v>1</v> </b> <b> - <a>64</a> - <b>65</b> + <a>79</a> + <b>80</b> <v>1</v> </b> <b> - <a>10874</a> - <b>10875</b> + <a>11258</a> + <b>11259</b> <v>1</v> </b> </bs> @@ -16272,7 +15993,7 @@ <b> <a>1</a> <b>2</b> - <v>10948</v> + <v>11347</v> </b> </bs> </hist> @@ -16288,7 +16009,7 @@ <b> <a>1</a> <b>2</b> - <v>10948</v> + <v>11347</v> </b> </bs> </hist> @@ -16298,26 +16019,26 @@ </relation> <relation> <name>ruby_parenthesized_statements_def</name> - <cardinality>10912</cardinality> + <cardinality>11296</cardinality> <columnsizes> <e> <k>id</k> - <v>10912</v> + <v>11296</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_pattern_def</name> - <cardinality>4153</cardinality> + <cardinality>4745</cardinality> <columnsizes> <e> <k>id</k> - <v>4153</v> + <v>4745</v> </e> <e> <k>child</k> - <v>4153</v> + <v>4745</v> </e> </columnsizes> <dependencies> @@ -16331,7 +16052,7 @@ <b> <a>1</a> <b>2</b> - <v>4153</v> + <v>4745</v> </b> </bs> </hist> @@ -16347,7 +16068,7 @@ <b> <a>1</a> <b>2</b> - <v>4153</v> + <v>4745</v> </b> </bs> </hist> @@ -16357,11 +16078,11 @@ </relation> <relation> <name>ruby_program_child</name> - <cardinality>33982</cardinality> + <cardinality>33893</cardinality> <columnsizes> <e> <k>ruby_program</k> - <v>10658</v> + <v>10674</v> </e> <e> <k>index</k> @@ -16369,7 +16090,7 @@ </e> <e> <k>child</k> - <v>33982</v> + <v>33893</v> </e> </columnsizes> <dependencies> @@ -16383,32 +16104,32 @@ <b> <a>1</a> <b>2</b> - <v>3932</v> + <v>3956</v> </b> <b> <a>2</a> <b>3</b> - <v>2514</v> + <v>2531</v> </b> <b> <a>3</a> <b>4</b> - <v>1758</v> + <v>1772</v> </b> <b> <a>4</a> <b>5</b> - <v>801</v> + <v>794</v> </b> <b> <a>5</a> <b>8</b> - <v>917</v> + <v>902</v> </b> <b> <a>8</a> - <b>79</b> - <v>733</v> + <b>81</b> + <v>716</v> </b> </bs> </hist> @@ -16424,32 +16145,32 @@ <b> <a>1</a> <b>2</b> - <v>3932</v> + <v>3956</v> </b> <b> <a>2</a> <b>3</b> - <v>2514</v> + <v>2531</v> </b> <b> <a>3</a> <b>4</b> - <v>1758</v> + <v>1772</v> </b> <b> <a>4</a> <b>5</b> - <v>801</v> + <v>794</v> </b> <b> <a>5</a> <b>8</b> - <v>917</v> + <v>902</v> </b> <b> <a>8</a> - <b>79</b> - <v>733</v> + <b>81</b> + <v>716</v> </b> </bs> </hist> @@ -16465,57 +16186,57 @@ <b> <a>1</a> <b>2</b> - <v>46</v> + <v>50</v> </b> <b> <a>2</a> <b>3</b> - <v>36</v> + <v>29</v> </b> <b> - <a>4</a> - <b>9</b> - <v>21</v> + <a>3</a> + <b>7</b> + <v>17</v> </b> <b> - <a>9</a> - <b>12</b> - <v>18</v> + <a>8</a> + <b>11</b> + <v>17</v> </b> <b> - <a>13</a> - <b>17</b> - <v>18</v> + <a>11</a> + <b>15</b> + <v>17</v> </b> <b> - <a>17</a> - <b>28</b> - <v>18</v> + <a>16</a> + <b>23</b> + <v>17</v> </b> <b> - <a>29</a> - <b>44</b> - <v>18</v> + <a>26</a> + <b>36</b> + <v>17</v> </b> <b> - <a>45</a> - <b>80</b> - <v>18</v> + <a>38</a> + <b>60</b> + <v>17</v> </b> <b> - <a>89</a> - <b>190</b> - <v>18</v> + <a>67</a> + <b>129</b> + <v>17</v> </b> <b> - <a>239</a> - <b>1373</b> - <v>18</v> + <a>145</a> + <b>397</b> + <v>17</v> </b> <b> - <a>2191</a> - <b>3473</b> - <v>6</v> + <a>540</a> + <b>3560</b> + <v>14</v> </b> </bs> </hist> @@ -16531,57 +16252,57 @@ <b> <a>1</a> <b>2</b> - <v>46</v> + <v>50</v> </b> <b> <a>2</a> <b>3</b> - <v>36</v> + <v>29</v> </b> - <b> - <a>4</a> - <b>9</b> - <v>21</v> + <b> + <a>3</a> + <b>7</b> + <v>17</v> </b> <b> - <a>9</a> - <b>12</b> - <v>18</v> + <a>8</a> + <b>11</b> + <v>17</v> </b> <b> - <a>13</a> - <b>17</b> - <v>18</v> + <a>11</a> + <b>15</b> + <v>17</v> </b> <b> - <a>17</a> - <b>28</b> - <v>18</v> + <a>16</a> + <b>23</b> + <v>17</v> </b> <b> - <a>29</a> - <b>44</b> - <v>18</v> + <a>26</a> + <b>36</b> + <v>17</v> </b> <b> - <a>45</a> - <b>80</b> - <v>18</v> + <a>38</a> + <b>60</b> + <v>17</v> </b> <b> - <a>89</a> - <b>190</b> - <v>18</v> + <a>67</a> + <b>129</b> + <v>17</v> </b> <b> - <a>239</a> - <b>1373</b> - <v>18</v> + <a>145</a> + <b>397</b> + <v>17</v> </b> <b> - <a>2191</a> - <b>3473</b> - <v>6</v> + <a>540</a> + <b>3560</b> + <v>14</v> </b> </bs> </hist> @@ -16597,7 +16318,7 @@ <b> <a>1</a> <b>2</b> - <v>33982</v> + <v>33893</v> </b> </bs> </hist> @@ -16613,7 +16334,7 @@ <b> <a>1</a> <b>2</b> - <v>33982</v> + <v>33893</v> </b> </bs> </hist> @@ -16623,26 +16344,26 @@ </relation> <relation> <name>ruby_program_def</name> - <cardinality>18219</cardinality> + <cardinality>18697</cardinality> <columnsizes> <e> <k>id</k> - <v>18219</v> + <v>18697</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_range_begin</name> - <cardinality>4491</cardinality> + <cardinality>4748</cardinality> <columnsizes> <e> <k>ruby_range</k> - <v>4491</v> + <v>4748</v> </e> <e> <k>begin</k> - <v>4491</v> + <v>4748</v> </e> </columnsizes> <dependencies> @@ -16656,7 +16377,7 @@ <b> <a>1</a> <b>2</b> - <v>4491</v> + <v>4748</v> </b> </bs> </hist> @@ -16672,7 +16393,7 @@ <b> <a>1</a> <b>2</b> - <v>4491</v> + <v>4748</v> </b> </bs> </hist> @@ -16682,11 +16403,11 @@ </relation> <relation> <name>ruby_range_def</name> - <cardinality>4770</cardinality> + <cardinality>5066</cardinality> <columnsizes> <e> <k>id</k> - <v>4770</v> + <v>5066</v> </e> <e> <k>operator</k> @@ -16704,7 +16425,7 @@ <b> <a>1</a> <b>2</b> - <v>4770</v> + <v>5066</v> </b> </bs> </hist> @@ -16718,13 +16439,13 @@ <budget>12</budget> <bs> <b> - <a>1634</a> - <b>1635</b> + <a>1376</a> + <b>1377</b> <v>1</v> </b> <b> - <a>3136</a> - <b>3137</b> + <a>3690</a> + <b>3691</b> <v>1</v> </b> </bs> @@ -16735,15 +16456,15 @@ </relation> <relation> <name>ruby_range_end</name> - <cardinality>4576</cardinality> + <cardinality>4818</cardinality> <columnsizes> <e> <k>ruby_range</k> - <v>4576</v> + <v>4818</v> </e> <e> <k>end</k> - <v>4576</v> + <v>4818</v> </e> </columnsizes> <dependencies> @@ -16757,7 +16478,7 @@ <b> <a>1</a> <b>2</b> - <v>4576</v> + <v>4818</v> </b> </bs> </hist> @@ -16773,7 +16494,7 @@ <b> <a>1</a> <b>2</b> - <v>4576</v> + <v>4818</v> </b> </bs> </hist> @@ -16783,15 +16504,15 @@ </relation> <relation> <name>ruby_rational_def</name> - <cardinality>138</cardinality> + <cardinality>166</cardinality> <columnsizes> <e> <k>id</k> - <v>138</v> + <v>166</v> </e> <e> <k>child</k> - <v>138</v> + <v>166</v> </e> </columnsizes> <dependencies> @@ -16805,7 +16526,7 @@ <b> <a>1</a> <b>2</b> - <v>138</v> + <v>166</v> </b> </bs> </hist> @@ -16821,7 +16542,7 @@ <b> <a>1</a> <b>2</b> - <v>138</v> + <v>166</v> </b> </bs> </hist> @@ -16890,19 +16611,19 @@ </relation> <relation> <name>ruby_regex_child</name> - <cardinality>44658</cardinality> + <cardinality>45368</cardinality> <columnsizes> <e> <k>ruby_regex</k> - <v>13335</v> + <v>13665</v> </e> <e> <k>index</k> - <v>150</v> + <v>146</v> </e> <e> <k>child</k> - <v>44658</v> + <v>45368</v> </e> </columnsizes> <dependencies> @@ -16916,42 +16637,42 @@ <b> <a>1</a> <b>2</b> - <v>6808</v> + <v>7006</v> </b> <b> <a>2</a> <b>3</b> - <v>752</v> + <v>800</v> </b> <b> <a>3</a> <b>4</b> - <v>1826</v> + <v>1868</v> </b> <b> <a>4</a> <b>5</b> - <v>506</v> + <v>500</v> </b> <b> <a>5</a> <b>6</b> - <v>1108</v> + <v>1124</v> </b> <b> <a>6</a> <b>8</b> - <v>1034</v> + <v>1031</v> </b> <b> <a>8</a> <b>16</b> - <v>1055</v> + <v>1094</v> </b> <b> <a>16</a> <b>50</b> - <v>242</v> + <v>236</v> </b> </bs> </hist> @@ -16967,42 +16688,42 @@ <b> <a>1</a> <b>2</b> - <v>6808</v> + <v>7006</v> </b> <b> <a>2</a> <b>3</b> - <v>752</v> + <v>800</v> </b> <b> <a>3</a> <b>4</b> - <v>1826</v> + <v>1868</v> </b> <b> <a>4</a> <b>5</b> - <v>506</v> + <v>500</v> </b> <b> <a>5</a> <b>6</b> - <v>1108</v> + <v>1124</v> </b> <b> <a>6</a> <b>8</b> - <v>1034</v> + <v>1031</v> </b> <b> <a>8</a> <b>16</b> - <v>1055</v> + <v>1094</v> </b> <b> <a>16</a> <b>50</b> - <v>242</v> + <v>236</v> </b> </bs> </hist> @@ -17018,67 +16739,67 @@ <b> <a>1</a> <b>2</b> - <v>18</v> + <v>17</v> </b> <b> <a>4</a> <b>5</b> - <v>12</v> + <v>11</v> </b> <b> <a>6</a> <b>7</b> - <v>3</v> + <v>2</v> </b> <b> <a>7</a> <b>8</b> - <v>12</v> + <v>11</v> </b> <b> <a>8</a> <b>15</b> - <v>12</v> + <v>11</v> </b> <b> <a>15</a> - <b>19</b> - <v>12</v> + <b>18</b> + <v>8</v> </b> <b> - <a>19</a> - <b>23</b> - <v>9</v> + <a>18</a> + <b>21</b> + <v>11</v> </b> <b> - <a>23</a> + <a>21</a> <b>31</b> - <v>12</v> + <v>11</v> </b> <b> <a>32</a> <b>80</b> - <v>12</v> + <v>11</v> </b> <b> <a>103</a> - <b>175</b> - <v>12</v> + <b>184</b> + <v>11</v> </b> <b> - <a>239</a> - <b>424</b> - <v>12</v> + <a>249</a> + <b>445</b> + <v>11</v> </b> <b> - <a>671</a> - <b>1287</b> - <v>12</v> + <a>696</a> + <b>1331</b> + <v>11</v> </b> <b> - <a>1881</a> - <b>4345</b> - <v>9</v> + <a>1953</a> + <b>4557</b> + <v>8</v> </b> </bs> </hist> @@ -17094,67 +16815,67 @@ <b> <a>1</a> <b>2</b> - <v>18</v> + <v>17</v> </b> <b> <a>4</a> <b>5</b> - <v>12</v> + <v>11</v> </b> <b> <a>6</a> <b>7</b> - <v>3</v> + <v>2</v> </b> <b> <a>7</a> <b>8</b> - <v>12</v> + <v>11</v> </b> <b> <a>8</a> <b>15</b> - <v>12</v> + <v>11</v> </b> <b> <a>15</a> - <b>19</b> - <v>12</v> + <b>18</b> + <v>8</v> </b> <b> - <a>19</a> - <b>23</b> - <v>9</v> + <a>18</a> + <b>21</b> + <v>11</v> </b> <b> - <a>23</a> + <a>21</a> <b>31</b> - <v>12</v> + <v>11</v> </b> <b> <a>32</a> <b>80</b> - <v>12</v> + <v>11</v> </b> <b> <a>103</a> - <b>175</b> - <v>12</v> + <b>184</b> + <v>11</v> </b> <b> - <a>239</a> - <b>424</b> - <v>12</v> + <a>249</a> + <b>445</b> + <v>11</v> </b> <b> - <a>671</a> - <b>1287</b> - <v>12</v> + <a>696</a> + <b>1331</b> + <v>11</v> </b> <b> - <a>1881</a> - <b>4345</b> - <v>9</v> + <a>1953</a> + <b>4557</b> + <v>8</v> </b> </bs> </hist> @@ -17170,7 +16891,7 @@ <b> <a>1</a> <b>2</b> - <v>44658</v> + <v>45368</v> </b> </bs> </hist> @@ -17186,7 +16907,7 @@ <b> <a>1</a> <b>2</b> - <v>44658</v> + <v>45368</v> </b> </bs> </hist> @@ -17196,26 +16917,26 @@ </relation> <relation> <name>ruby_regex_def</name> - <cardinality>13350</cardinality> + <cardinality>13680</cardinality> <columnsizes> <e> <k>id</k> - <v>13350</v> + <v>13680</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_rescue_body</name> - <cardinality>2083</cardinality> + <cardinality>2050</cardinality> <columnsizes> <e> <k>ruby_rescue</k> - <v>2083</v> + <v>2050</v> </e> <e> <k>body</k> - <v>2083</v> + <v>2050</v> </e> </columnsizes> <dependencies> @@ -17229,7 +16950,7 @@ <b> <a>1</a> <b>2</b> - <v>2083</v> + <v>2050</v> </b> </bs> </hist> @@ -17245,7 +16966,7 @@ <b> <a>1</a> <b>2</b> - <v>2083</v> + <v>2050</v> </b> </bs> </hist> @@ -17255,26 +16976,26 @@ </relation> <relation> <name>ruby_rescue_def</name> - <cardinality>2346</cardinality> + <cardinality>2299</cardinality> <columnsizes> <e> <k>id</k> - <v>2346</v> + <v>2299</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_rescue_exceptions</name> - <cardinality>1938</cardinality> + <cardinality>1904</cardinality> <columnsizes> <e> <k>ruby_rescue</k> - <v>1938</v> + <v>1904</v> </e> <e> <k>exceptions</k> - <v>1938</v> + <v>1904</v> </e> </columnsizes> <dependencies> @@ -17288,7 +17009,7 @@ <b> <a>1</a> <b>2</b> - <v>1938</v> + <v>1904</v> </b> </bs> </hist> @@ -17304,7 +17025,7 @@ <b> <a>1</a> <b>2</b> - <v>1938</v> + <v>1904</v> </b> </bs> </hist> @@ -17314,19 +17035,19 @@ </relation> <relation> <name>ruby_rescue_modifier_def</name> - <cardinality>448</cardinality> + <cardinality>458</cardinality> <columnsizes> <e> <k>id</k> - <v>448</v> + <v>458</v> </e> <e> <k>body</k> - <v>448</v> + <v>458</v> </e> <e> <k>handler</k> - <v>448</v> + <v>458</v> </e> </columnsizes> <dependencies> @@ -17340,7 +17061,7 @@ <b> <a>1</a> <b>2</b> - <v>448</v> + <v>458</v> </b> </bs> </hist> @@ -17356,7 +17077,7 @@ <b> <a>1</a> <b>2</b> - <v>448</v> + <v>458</v> </b> </bs> </hist> @@ -17372,7 +17093,7 @@ <b> <a>1</a> <b>2</b> - <v>448</v> + <v>458</v> </b> </bs> </hist> @@ -17388,7 +17109,7 @@ <b> <a>1</a> <b>2</b> - <v>448</v> + <v>458</v> </b> </bs> </hist> @@ -17404,7 +17125,7 @@ <b> <a>1</a> <b>2</b> - <v>448</v> + <v>458</v> </b> </bs> </hist> @@ -17420,7 +17141,7 @@ <b> <a>1</a> <b>2</b> - <v>448</v> + <v>458</v> </b> </bs> </hist> @@ -17430,15 +17151,15 @@ </relation> <relation> <name>ruby_rescue_variable</name> - <cardinality>924</cardinality> + <cardinality>935</cardinality> <columnsizes> <e> <k>ruby_rescue</k> - <v>924</v> + <v>935</v> </e> <e> <k>variable</k> - <v>924</v> + <v>935</v> </e> </columnsizes> <dependencies> @@ -17452,7 +17173,7 @@ <b> <a>1</a> <b>2</b> - <v>924</v> + <v>935</v> </b> </bs> </hist> @@ -17468,7 +17189,7 @@ <b> <a>1</a> <b>2</b> - <v>924</v> + <v>935</v> </b> </bs> </hist> @@ -17478,15 +17199,15 @@ </relation> <relation> <name>ruby_rest_assignment_child</name> - <cardinality>383</cardinality> + <cardinality>392</cardinality> <columnsizes> <e> <k>ruby_rest_assignment</k> - <v>383</v> + <v>392</v> </e> <e> <k>child</k> - <v>383</v> + <v>392</v> </e> </columnsizes> <dependencies> @@ -17500,7 +17221,7 @@ <b> <a>1</a> <b>2</b> - <v>383</v> + <v>392</v> </b> </bs> </hist> @@ -17516,7 +17237,7 @@ <b> <a>1</a> <b>2</b> - <v>383</v> + <v>392</v> </b> </bs> </hist> @@ -17526,11 +17247,11 @@ </relation> <relation> <name>ruby_rest_assignment_def</name> - <cardinality>401</cardinality> + <cardinality>414</cardinality> <columnsizes> <e> <k>id</k> - <v>401</v> + <v>414</v> </e> </columnsizes> <dependencies/> @@ -17585,26 +17306,26 @@ </relation> <relation> <name>ruby_retry_def</name> - <cardinality>60</cardinality> + <cardinality>58</cardinality> <columnsizes> <e> <k>id</k> - <v>60</v> + <v>58</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_return_child</name> - <cardinality>5084</cardinality> + <cardinality>4938</cardinality> <columnsizes> <e> <k>ruby_return</k> - <v>5084</v> + <v>4938</v> </e> <e> <k>child</k> - <v>5084</v> + <v>4938</v> </e> </columnsizes> <dependencies> @@ -17618,7 +17339,7 @@ <b> <a>1</a> <b>2</b> - <v>5084</v> + <v>4938</v> </b> </bs> </hist> @@ -17634,7 +17355,7 @@ <b> <a>1</a> <b>2</b> - <v>5084</v> + <v>4938</v> </b> </bs> </hist> @@ -17644,30 +17365,30 @@ </relation> <relation> <name>ruby_return_def</name> - <cardinality>8197</cardinality> + <cardinality>7979</cardinality> <columnsizes> <e> <k>id</k> - <v>8197</v> + <v>7979</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_right_assignment_list_child</name> - <cardinality>2600</cardinality> + <cardinality>2741</cardinality> <columnsizes> <e> <k>ruby_right_assignment_list</k> - <v>1224</v> + <v>1280</v> </e> <e> <k>index</k> - <v>15</v> + <v>14</v> </e> <e> <k>child</k> - <v>2600</v> + <v>2741</v> </e> </columnsizes> <dependencies> @@ -17681,17 +17402,17 @@ <b> <a>2</a> <b>3</b> - <v>1098</v> + <v>1136</v> </b> <b> <a>3</a> <b>4</b> - <v>104</v> + <v>113</v> </b> <b> <a>4</a> <b>6</b> - <v>21</v> + <v>29</v> </b> </bs> </hist> @@ -17707,17 +17428,17 @@ <b> <a>2</a> <b>3</b> - <v>1098</v> + <v>1136</v> </b> <b> <a>3</a> <b>4</b> - <v>104</v> + <v>113</v> </b> <b> <a>4</a> <b>6</b> - <v>21</v> + <v>29</v> </b> </bs> </hist> @@ -17731,24 +17452,24 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> - <v>3</v> + <a>2</a> + <b>3</b> + <v>2</v> </b> <b> - <a>7</a> - <b>8</b> - <v>3</v> + <a>10</a> + <b>11</b> + <v>2</v> </b> <b> - <a>41</a> - <b>42</b> - <v>3</v> + <a>48</a> + <b>49</b> + <v>2</v> </b> <b> - <a>399</a> - <b>400</b> - <v>6</v> + <a>427</a> + <b>428</b> + <v>5</v> </b> </bs> </hist> @@ -17762,24 +17483,24 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> - <v>3</v> + <a>2</a> + <b>3</b> + <v>2</v> </b> <b> - <a>7</a> - <b>8</b> - <v>3</v> + <a>10</a> + <b>11</b> + <v>2</v> </b> <b> - <a>41</a> - <b>42</b> - <v>3</v> + <a>48</a> + <b>49</b> + <v>2</v> </b> <b> - <a>399</a> - <b>400</b> - <v>6</v> + <a>427</a> + <b>428</b> + <v>5</v> </b> </bs> </hist> @@ -17795,7 +17516,7 @@ <b> <a>1</a> <b>2</b> - <v>2600</v> + <v>2741</v> </b> </bs> </hist> @@ -17811,7 +17532,7 @@ <b> <a>1</a> <b>2</b> - <v>2600</v> + <v>2741</v> </b> </bs> </hist> @@ -17821,26 +17542,26 @@ </relation> <relation> <name>ruby_right_assignment_list_def</name> - <cardinality>1224</cardinality> + <cardinality>1280</cardinality> <columnsizes> <e> <k>id</k> - <v>1224</v> + <v>1280</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_scope_resolution_def</name> - <cardinality>84884</cardinality> + <cardinality>87113</cardinality> <columnsizes> <e> <k>id</k> - <v>84884</v> + <v>87113</v> </e> <e> <k>name</k> - <v>84884</v> + <v>87113</v> </e> </columnsizes> <dependencies> @@ -17854,7 +17575,7 @@ <b> <a>1</a> <b>2</b> - <v>84884</v> + <v>87113</v> </b> </bs> </hist> @@ -17870,7 +17591,7 @@ <b> <a>1</a> <b>2</b> - <v>84884</v> + <v>87113</v> </b> </bs> </hist> @@ -17880,15 +17601,15 @@ </relation> <relation> <name>ruby_scope_resolution_scope</name> - <cardinality>83028</cardinality> + <cardinality>85203</cardinality> <columnsizes> <e> <k>ruby_scope_resolution</k> - <v>83028</v> + <v>85203</v> </e> <e> <k>scope</k> - <v>83028</v> + <v>85203</v> </e> </columnsizes> <dependencies> @@ -17902,7 +17623,7 @@ <b> <a>1</a> <b>2</b> - <v>83028</v> + <v>85203</v> </b> </bs> </hist> @@ -17918,7 +17639,7 @@ <b> <a>1</a> <b>2</b> - <v>83028</v> + <v>85203</v> </b> </bs> </hist> @@ -17928,15 +17649,15 @@ </relation> <relation> <name>ruby_setter_def</name> - <cardinality>653</cardinality> + <cardinality>656</cardinality> <columnsizes> <e> <k>id</k> - <v>653</v> + <v>656</v> </e> <e> <k>name</k> - <v>653</v> + <v>656</v> </e> </columnsizes> <dependencies> @@ -17950,7 +17671,7 @@ <b> <a>1</a> <b>2</b> - <v>653</v> + <v>656</v> </b> </bs> </hist> @@ -17966,7 +17687,7 @@ <b> <a>1</a> <b>2</b> - <v>653</v> + <v>656</v> </b> </bs> </hist> @@ -17976,15 +17697,15 @@ </relation> <relation> <name>ruby_singleton_class_body</name> - <cardinality>663</cardinality> + <cardinality>677</cardinality> <columnsizes> <e> <k>ruby_singleton_class</k> - <v>663</v> + <v>677</v> </e> <e> <k>body</k> - <v>663</v> + <v>677</v> </e> </columnsizes> <dependencies> @@ -17998,7 +17719,7 @@ <b> <a>1</a> <b>2</b> - <v>663</v> + <v>677</v> </b> </bs> </hist> @@ -18014,7 +17735,7 @@ <b> <a>1</a> <b>2</b> - <v>663</v> + <v>677</v> </b> </bs> </hist> @@ -18024,15 +17745,15 @@ </relation> <relation> <name>ruby_singleton_class_def</name> - <cardinality>663</cardinality> + <cardinality>677</cardinality> <columnsizes> <e> <k>id</k> - <v>663</v> + <v>677</v> </e> <e> <k>value</k> - <v>663</v> + <v>677</v> </e> </columnsizes> <dependencies> @@ -18046,7 +17767,7 @@ <b> <a>1</a> <b>2</b> - <v>663</v> + <v>677</v> </b> </bs> </hist> @@ -18062,7 +17783,7 @@ <b> <a>1</a> <b>2</b> - <v>663</v> + <v>677</v> </b> </bs> </hist> @@ -18072,15 +17793,15 @@ </relation> <relation> <name>ruby_singleton_method_body</name> - <cardinality>6447</cardinality> + <cardinality>6313</cardinality> <columnsizes> <e> <k>ruby_singleton_method</k> - <v>6447</v> + <v>6313</v> </e> <e> <k>body</k> - <v>6447</v> + <v>6313</v> </e> </columnsizes> <dependencies> @@ -18094,7 +17815,7 @@ <b> <a>1</a> <b>2</b> - <v>6447</v> + <v>6313</v> </b> </bs> </hist> @@ -18110,7 +17831,7 @@ <b> <a>1</a> <b>2</b> - <v>6447</v> + <v>6313</v> </b> </bs> </hist> @@ -18120,19 +17841,19 @@ </relation> <relation> <name>ruby_singleton_method_def</name> - <cardinality>6459</cardinality> + <cardinality>6325</cardinality> <columnsizes> <e> <k>id</k> - <v>6459</v> + <v>6325</v> </e> <e> <k>name</k> - <v>6459</v> + <v>6325</v> </e> <e> <k>object</k> - <v>6459</v> + <v>6325</v> </e> </columnsizes> <dependencies> @@ -18146,7 +17867,7 @@ <b> <a>1</a> <b>2</b> - <v>6459</v> + <v>6325</v> </b> </bs> </hist> @@ -18162,7 +17883,7 @@ <b> <a>1</a> <b>2</b> - <v>6459</v> + <v>6325</v> </b> </bs> </hist> @@ -18178,7 +17899,7 @@ <b> <a>1</a> <b>2</b> - <v>6459</v> + <v>6325</v> </b> </bs> </hist> @@ -18194,7 +17915,7 @@ <b> <a>1</a> <b>2</b> - <v>6459</v> + <v>6325</v> </b> </bs> </hist> @@ -18210,7 +17931,7 @@ <b> <a>1</a> <b>2</b> - <v>6459</v> + <v>6325</v> </b> </bs> </hist> @@ -18226,7 +17947,7 @@ <b> <a>1</a> <b>2</b> - <v>6459</v> + <v>6325</v> </b> </bs> </hist> @@ -18236,15 +17957,15 @@ </relation> <relation> <name>ruby_singleton_method_parameters</name> - <cardinality>4073</cardinality> + <cardinality>3929</cardinality> <columnsizes> <e> <k>ruby_singleton_method</k> - <v>4073</v> + <v>3929</v> </e> <e> <k>parameters</k> - <v>4073</v> + <v>3929</v> </e> </columnsizes> <dependencies> @@ -18258,7 +17979,7 @@ <b> <a>1</a> <b>2</b> - <v>4073</v> + <v>3929</v> </b> </bs> </hist> @@ -18274,7 +17995,7 @@ <b> <a>1</a> <b>2</b> - <v>4073</v> + <v>3929</v> </b> </bs> </hist> @@ -18284,15 +18005,15 @@ </relation> <relation> <name>ruby_splat_argument_child</name> - <cardinality>3454</cardinality> + <cardinality>3605</cardinality> <columnsizes> <e> <k>ruby_splat_argument</k> - <v>3454</v> + <v>3605</v> </e> <e> <k>child</k> - <v>3454</v> + <v>3605</v> </e> </columnsizes> <dependencies> @@ -18306,7 +18027,7 @@ <b> <a>1</a> <b>2</b> - <v>3454</v> + <v>3605</v> </b> </bs> </hist> @@ -18322,7 +18043,7 @@ <b> <a>1</a> <b>2</b> - <v>3454</v> + <v>3605</v> </b> </bs> </hist> @@ -18332,37 +18053,37 @@ </relation> <relation> <name>ruby_splat_argument_def</name> - <cardinality>3454</cardinality> + <cardinality>3606</cardinality> <columnsizes> <e> <k>id</k> - <v>3454</v> + <v>3606</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_splat_parameter_def</name> - <cardinality>3192</cardinality> + <cardinality>3014</cardinality> <columnsizes> <e> <k>id</k> - <v>3192</v> + <v>3014</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_splat_parameter_name</name> - <cardinality>2514</cardinality> + <cardinality>2297</cardinality> <columnsizes> <e> <k>ruby_splat_parameter</k> - <v>2514</v> + <v>2297</v> </e> <e> <k>name</k> - <v>2514</v> + <v>2297</v> </e> </columnsizes> <dependencies> @@ -18376,7 +18097,7 @@ <b> <a>1</a> <b>2</b> - <v>2514</v> + <v>2297</v> </b> </bs> </hist> @@ -18392,7 +18113,7 @@ <b> <a>1</a> <b>2</b> - <v>2514</v> + <v>2297</v> </b> </bs> </hist> @@ -18402,19 +18123,19 @@ </relation> <relation> <name>ruby_string_array_child</name> - <cardinality>12799</cardinality> + <cardinality>13136</cardinality> <columnsizes> <e> <k>ruby_string_array</k> - <v>4062</v> + <v>4120</v> </e> <e> <k>index</k> - <v>536</v> + <v>606</v> </e> <e> <k>child</k> - <v>12799</v> + <v>13136</v> </e> </columnsizes> <dependencies> @@ -18428,32 +18149,32 @@ <b> <a>1</a> <b>2</b> - <v>1313</v> + <v>1350</v> </b> <b> <a>2</a> <b>3</b> - <v>1310</v> + <v>1304</v> </b> <b> <a>3</a> <b>4</b> - <v>625</v> + <v>630</v> </b> <b> <a>4</a> <b>5</b> - <v>349</v> + <v>356</v> </b> <b> <a>5</a> <b>10</b> - <v>325</v> + <v>332</v> </b> <b> <a>10</a> - <b>537</b> - <v>140</v> + <b>607</b> + <v>148</v> </b> </bs> </hist> @@ -18469,32 +18190,32 @@ <b> <a>1</a> <b>2</b> - <v>1313</v> + <v>1350</v> </b> <b> <a>2</a> <b>3</b> - <v>1310</v> + <v>1304</v> </b> <b> <a>3</a> <b>4</b> - <v>625</v> + <v>630</v> </b> <b> <a>4</a> <b>5</b> - <v>349</v> + <v>356</v> </b> <b> <a>5</a> <b>10</b> - <v>325</v> + <v>332</v> </b> <b> <a>10</a> - <b>537</b> - <v>140</v> + <b>607</b> + <v>148</v> </b> </bs> </hist> @@ -18510,22 +18231,22 @@ <b> <a>1</a> <b>2</b> - <v>432</v> + <v>506</v> </b> <b> <a>2</a> - <b>7</b> - <v>42</v> + <b>10</b> + <v>48</v> </b> <b> - <a>7</a> - <b>47</b> - <v>41</v> + <a>11</a> + <b>266</b> + <v>46</v> </b> <b> - <a>49</a> - <b>4063</b> - <v>21</v> + <a>344</a> + <b>4121</b> + <v>6</v> </b> </bs> </hist> @@ -18541,22 +18262,22 @@ <b> <a>1</a> <b>2</b> - <v>432</v> + <v>506</v> </b> <b> <a>2</a> - <b>7</b> - <v>42</v> + <b>10</b> + <v>48</v> </b> <b> - <a>7</a> - <b>47</b> - <v>41</v> + <a>11</a> + <b>266</b> + <v>46</v> </b> <b> - <a>49</a> - <b>4063</b> - <v>21</v> + <a>344</a> + <b>4121</b> + <v>6</v> </b> </bs> </hist> @@ -18572,7 +18293,7 @@ <b> <a>1</a> <b>2</b> - <v>12799</v> + <v>13136</v> </b> </bs> </hist> @@ -18588,7 +18309,7 @@ <b> <a>1</a> <b>2</b> - <v>12799</v> + <v>13136</v> </b> </bs> </hist> @@ -18598,22 +18319,22 @@ </relation> <relation> <name>ruby_string_array_def</name> - <cardinality>4213</cardinality> + <cardinality>4287</cardinality> <columnsizes> <e> <k>id</k> - <v>4213</v> + <v>4287</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_string_child</name> - <cardinality>549106</cardinality> + <cardinality>559228</cardinality> <columnsizes> <e> <k>ruby_string__</k> - <v>477859</v> + <v>483542</v> </e> <e> <k>index</k> @@ -18621,7 +18342,7 @@ </e> <e> <k>child</k> - <v>549106</v> + <v>559228</v> </e> </columnsizes> <dependencies> @@ -18635,12 +18356,12 @@ <b> <a>1</a> <b>2</b> - <v>449884</v> + <v>454555</v> </b> <b> <a>2</a> <b>282</b> - <v>27975</v> + <v>28987</v> </b> </bs> </hist> @@ -18656,12 +18377,12 @@ <b> <a>1</a> <b>2</b> - <v>449884</v> + <v>454555</v> </b> <b> <a>2</a> <b>282</b> - <v>27975</v> + <v>28987</v> </b> </bs> </hist> @@ -18677,31 +18398,36 @@ <b> <a>1</a> <b>2</b> - <v>129</v> + <v>95</v> </b> <b> - <a>4</a> - <b>5</b> - <v>64</v> + <a>2</a> + <b>3</b> + <v>34</v> </b> <b> <a>5</a> - <b>7</b> + <b>6</b> + <v>64</v> + </b> + <b> + <a>6</a> + <b>9</b> <v>22</v> </b> <b> - <a>7</a> - <b>27</b> + <a>9</a> + <b>37</b> <v>22</v> </b> <b> - <a>28</a> - <b>83</b> + <a>37</a> + <b>108</b> <v>22</v> </b> <b> - <a>104</a> - <b>477860</b> + <a>129</a> + <b>483543</b> <v>22</v> </b> </bs> @@ -18718,31 +18444,36 @@ <b> <a>1</a> <b>2</b> - <v>129</v> + <v>95</v> </b> <b> - <a>4</a> - <b>5</b> - <v>64</v> + <a>2</a> + <b>3</b> + <v>34</v> </b> <b> <a>5</a> - <b>7</b> + <b>6</b> + <v>64</v> + </b> + <b> + <a>6</a> + <b>9</b> <v>22</v> </b> <b> - <a>7</a> - <b>27</b> + <a>9</a> + <b>37</b> <v>22</v> </b> <b> - <a>28</a> - <b>83</b> + <a>37</a> + <b>108</b> <v>22</v> </b> <b> - <a>104</a> - <b>477860</b> + <a>129</a> + <b>483543</b> <v>22</v> </b> </bs> @@ -18759,7 +18490,7 @@ <b> <a>1</a> <b>2</b> - <v>549106</v> + <v>559228</v> </b> </bs> </hist> @@ -18775,7 +18506,7 @@ <b> <a>1</a> <b>2</b> - <v>549106</v> + <v>559228</v> </b> </bs> </hist> @@ -18785,30 +18516,30 @@ </relation> <relation> <name>ruby_string_def</name> - <cardinality>485218</cardinality> + <cardinality>490602</cardinality> <columnsizes> <e> <k>id</k> - <v>485218</v> + <v>490602</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_subshell_child</name> - <cardinality>561</cardinality> + <cardinality>551</cardinality> <columnsizes> <e> <k>ruby_subshell</k> - <v>365</v> + <v>359</v> </e> <e> <k>index</k> - <v>33</v> + <v>32</v> </e> <e> <k>child</k> - <v>561</v> + <v>551</v> </e> </columnsizes> <dependencies> @@ -18827,17 +18558,17 @@ <b> <a>2</a> <b>3</b> - <v>58</v> + <v>53</v> </b> <b> <a>3</a> <b>5</b> - <v>33</v> + <v>32</v> </b> <b> <a>5</a> <b>12</b> - <v>9</v> + <v>8</v> </b> </bs> </hist> @@ -18858,17 +18589,17 @@ <b> <a>2</a> <b>3</b> - <v>58</v> + <v>53</v> </b> <b> <a>3</a> <b>5</b> - <v>33</v> + <v>32</v> </b> <b> <a>5</a> <b>12</b> - <v>9</v> + <v>8</v> </b> </bs> </hist> @@ -18884,37 +18615,37 @@ <b> <a>1</a> <b>2</b> - <v>12</v> + <v>11</v> </b> <b> <a>2</a> <b>3</b> - <v>6</v> + <v>5</v> </b> <b> <a>3</a> <b>4</b> - <v>3</v> + <v>2</v> </b> <b> - <a>6</a> - <b>7</b> - <v>3</v> + <a>7</a> + <b>8</b> + <v>2</v> </b> <b> <a>14</a> <b>15</b> - <v>3</v> + <v>2</v> </b> <b> - <a>33</a> - <b>34</b> - <v>3</v> + <a>32</a> + <b>33</b> + <v>2</v> </b> <b> - <a>119</a> - <b>120</b> - <v>3</v> + <a>120</a> + <b>121</b> + <v>2</v> </b> </bs> </hist> @@ -18930,37 +18661,37 @@ <b> <a>1</a> <b>2</b> - <v>12</v> + <v>11</v> </b> <b> <a>2</a> <b>3</b> - <v>6</v> + <v>5</v> </b> <b> <a>3</a> <b>4</b> - <v>3</v> + <v>2</v> </b> <b> - <a>6</a> - <b>7</b> - <v>3</v> + <a>7</a> + <b>8</b> + <v>2</v> </b> <b> <a>14</a> <b>15</b> - <v>3</v> + <v>2</v> </b> <b> - <a>33</a> - <b>34</b> - <v>3</v> + <a>32</a> + <b>33</b> + <v>2</v> </b> <b> - <a>119</a> - <b>120</b> - <v>3</v> + <a>120</a> + <b>121</b> + <v>2</v> </b> </bs> </hist> @@ -18976,7 +18707,7 @@ <b> <a>1</a> <b>2</b> - <v>561</v> + <v>551</v> </b> </bs> </hist> @@ -18992,7 +18723,7 @@ <b> <a>1</a> <b>2</b> - <v>561</v> + <v>551</v> </b> </bs> </hist> @@ -19002,26 +18733,26 @@ </relation> <relation> <name>ruby_subshell_def</name> - <cardinality>365</cardinality> + <cardinality>359</cardinality> <columnsizes> <e> <k>id</k> - <v>365</v> + <v>359</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_superclass_def</name> - <cardinality>13666</cardinality> + <cardinality>13806</cardinality> <columnsizes> <e> <k>id</k> - <v>13666</v> + <v>13806</v> </e> <e> <k>child</k> - <v>13666</v> + <v>13806</v> </e> </columnsizes> <dependencies> @@ -19035,7 +18766,7 @@ <b> <a>1</a> <b>2</b> - <v>13666</v> + <v>13806</v> </b> </bs> </hist> @@ -19051,7 +18782,7 @@ <b> <a>1</a> <b>2</b> - <v>13666</v> + <v>13806</v> </b> </bs> </hist> @@ -19061,19 +18792,19 @@ </relation> <relation> <name>ruby_symbol_array_child</name> - <cardinality>7967</cardinality> + <cardinality>8435</cardinality> <columnsizes> <e> <k>ruby_symbol_array</k> - <v>2170</v> + <v>2240</v> </e> <e> <k>index</k> - <v>241</v> + <v>233</v> </e> <e> <k>child</k> - <v>7967</v> + <v>8435</v> </e> </columnsizes> <dependencies> @@ -19087,37 +18818,37 @@ <b> <a>1</a> <b>2</b> - <v>178</v> + <v>219</v> </b> <b> <a>2</a> <b>3</b> - <v>1161</v> + <v>1129</v> </b> <b> <a>3</a> <b>4</b> - <v>354</v> + <v>347</v> </b> <b> <a>4</a> <b>5</b> - <v>127</v> + <v>160</v> </b> <b> <a>5</a> <b>8</b> - <v>183</v> + <v>189</v> </b> <b> <a>8</a> - <b>94</b> - <v>163</v> + <b>24</b> + <v>170</v> </b> <b> - <a>95</a> - <b>96</b> - <v>2</v> + <a>24</a> + <b>100</b> + <v>23</v> </b> </bs> </hist> @@ -19133,37 +18864,37 @@ <b> <a>1</a> <b>2</b> - <v>178</v> + <v>219</v> </b> <b> <a>2</a> <b>3</b> - <v>1161</v> + <v>1129</v> </b> <b> <a>3</a> <b>4</b> - <v>354</v> + <v>347</v> </b> <b> <a>4</a> <b>5</b> - <v>127</v> + <v>160</v> </b> <b> <a>5</a> <b>8</b> - <v>183</v> + <v>189</v> </b> <b> <a>8</a> - <b>94</b> - <v>163</v> + <b>24</b> + <v>170</v> </b> <b> - <a>95</a> - <b>96</b> - <v>2</v> + <a>24</a> + <b>100</b> + <v>23</v> </b> </bs> </hist> @@ -19179,37 +18910,37 @@ <b> <a>1</a> <b>2</b> - <v>5</v> + <v>9</v> </b> <b> <a>2</a> <b>3</b> - <v>152</v> + <v>139</v> </b> <b> <a>4</a> - <b>9</b> - <v>20</v> + <b>8</b> + <v>18</v> </b> <b> - <a>9</a> - <b>20</b> - <v>20</v> + <a>8</a> + <b>17</b> + <v>18</v> </b> <b> - <a>23</a> - <b>47</b> - <v>20</v> + <a>19</a> + <b>41</b> + <v>18</v> </b> <b> - <a>55</a> - <b>783</b> - <v>20</v> + <a>44</a> + <b>163</b> + <v>18</v> </b> <b> - <a>852</a> - <b>853</b> - <v>2</v> + <a>230</a> + <b>949</b> + <v>9</v> </b> </bs> </hist> @@ -19225,37 +18956,37 @@ <b> <a>1</a> <b>2</b> - <v>5</v> + <v>9</v> </b> <b> <a>2</a> <b>3</b> - <v>152</v> + <v>139</v> </b> <b> <a>4</a> - <b>9</b> - <v>20</v> + <b>8</b> + <v>18</v> </b> <b> - <a>9</a> - <b>20</b> - <v>20</v> + <a>8</a> + <b>17</b> + <v>18</v> </b> <b> - <a>23</a> - <b>47</b> - <v>20</v> + <a>19</a> + <b>41</b> + <v>18</v> </b> <b> - <a>55</a> - <b>783</b> - <v>20</v> + <a>44</a> + <b>163</b> + <v>18</v> </b> <b> - <a>852</a> - <b>853</b> - <v>2</v> + <a>230</a> + <b>949</b> + <v>9</v> </b> </bs> </hist> @@ -19271,7 +19002,7 @@ <b> <a>1</a> <b>2</b> - <v>7967</v> + <v>8435</v> </b> </bs> </hist> @@ -19287,7 +19018,7 @@ <b> <a>1</a> <b>2</b> - <v>7967</v> + <v>8435</v> </b> </bs> </hist> @@ -19297,30 +19028,30 @@ </relation> <relation> <name>ruby_symbol_array_def</name> - <cardinality>2170</cardinality> + <cardinality>2240</cardinality> <columnsizes> <e> <k>id</k> - <v>2170</v> + <v>2240</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_test_pattern_def</name> - <cardinality>4</cardinality> + <cardinality>5</cardinality> <columnsizes> <e> <k>id</k> - <v>4</v> + <v>5</v> </e> <e> <k>pattern</k> - <v>4</v> + <v>5</v> </e> <e> <k>value</k> - <v>4</v> + <v>5</v> </e> </columnsizes> <dependencies> @@ -19334,7 +19065,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -19350,7 +19081,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -19366,7 +19097,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -19382,7 +19113,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -19398,7 +19129,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -19414,7 +19145,7 @@ <b> <a>1</a> <b>2</b> - <v>4</v> + <v>5</v> </b> </bs> </hist> @@ -19424,19 +19155,19 @@ </relation> <relation> <name>ruby_then_child</name> - <cardinality>37566</cardinality> + <cardinality>37016</cardinality> <columnsizes> <e> <k>ruby_then</k> - <v>22451</v> + <v>22229</v> </e> <e> <k>index</k> - <v>91</v> + <v>85</v> </e> <e> <k>child</k> - <v>37566</v> + <v>37016</v> </e> </columnsizes> <dependencies> @@ -19450,22 +19181,22 @@ <b> <a>1</a> <b>2</b> - <v>14093</v> + <v>13943</v> </b> <b> <a>2</a> <b>3</b> - <v>5076</v> + <v>5070</v> </b> <b> <a>3</a> <b>4</b> - <v>1811</v> + <v>1817</v> </b> <b> <a>4</a> <b>37</b> - <v>1469</v> + <v>1398</v> </b> </bs> </hist> @@ -19481,22 +19212,22 @@ <b> <a>1</a> <b>2</b> - <v>14093</v> + <v>13943</v> </b> <b> <a>2</a> <b>3</b> - <v>5076</v> + <v>5070</v> </b> <b> <a>3</a> <b>4</b> - <v>1811</v> + <v>1817</v> </b> <b> <a>4</a> <b>37</b> - <v>1469</v> + <v>1398</v> </b> </bs> </hist> @@ -19512,51 +19243,51 @@ <b> <a>1</a> <b>2</b> - <v>35</v> + <v>30</v> </b> <b> - <a>3</a> + <a>2</a> <b>4</b> - <v>2</v> + <v>4</v> </b> <b> <a>4</a> <b>5</b> - <v>10</v> + <v>9</v> </b> <b> - <a>5</a> + <a>6</a> <b>8</b> - <v>5</v> + <v>4</v> </b> <b> - <a>9</a> - <b>10</b> - <v>5</v> + <a>8</a> + <b>9</b> + <v>4</v> </b> <b> <a>10</a> - <b>18</b> + <b>19</b> <v>7</v> </b> <b> - <a>29</a> - <b>60</b> + <a>30</a> + <b>61</b> <v>7</v> </b> <b> - <a>95</a> - <b>309</b> + <a>98</a> + <b>310</b> <v>7</v> </b> <b> - <a>577</a> - <b>3282</b> + <a>592</a> + <b>3508</b> <v>7</v> </b> <b> - <a>8814</a> - <b>8815</b> + <a>9408</a> + <b>9409</b> <v>2</v> </b> </bs> @@ -19573,51 +19304,51 @@ <b> <a>1</a> <b>2</b> - <v>35</v> + <v>30</v> </b> <b> - <a>3</a> + <a>2</a> <b>4</b> - <v>2</v> + <v>4</v> </b> <b> <a>4</a> <b>5</b> - <v>10</v> + <v>9</v> </b> <b> - <a>5</a> + <a>6</a> <b>8</b> - <v>5</v> + <v>4</v> </b> <b> - <a>9</a> - <b>10</b> - <v>5</v> + <a>8</a> + <b>9</b> + <v>4</v> </b> <b> <a>10</a> - <b>18</b> + <b>19</b> <v>7</v> </b> <b> - <a>29</a> - <b>60</b> + <a>30</a> + <b>61</b> <v>7</v> </b> <b> - <a>95</a> - <b>309</b> + <a>98</a> + <b>310</b> <v>7</v> </b> <b> - <a>577</a> - <b>3282</b> + <a>592</a> + <b>3508</b> <v>7</v> </b> <b> - <a>8814</a> - <b>8815</b> + <a>9408</a> + <b>9409</b> <v>2</v> </b> </bs> @@ -19634,7 +19365,7 @@ <b> <a>1</a> <b>2</b> - <v>37566</v> + <v>37016</v> </b> </bs> </hist> @@ -19650,7 +19381,7 @@ <b> <a>1</a> <b>2</b> - <v>37566</v> + <v>37016</v> </b> </bs> </hist> @@ -19660,22 +19391,22 @@ </relation> <relation> <name>ruby_then_def</name> - <cardinality>22451</cardinality> + <cardinality>22229</cardinality> <columnsizes> <e> <k>id</k> - <v>22451</v> + <v>22229</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_tokeninfo</name> - <cardinality>6212759</cardinality> + <cardinality>6351611</cardinality> <columnsizes> <e> <k>id</k> - <v>6212759</v> + <v>6351611</v> </e> <e> <k>kind</k> @@ -19683,7 +19414,7 @@ </e> <e> <k>value</k> - <v>272576</v> + <v>275925</v> </e> </columnsizes> <dependencies> @@ -19697,7 +19428,7 @@ <b> <a>1</a> <b>2</b> - <v>6212759</v> + <v>6351611</v> </b> </bs> </hist> @@ -19713,7 +19444,7 @@ <b> <a>1</a> <b>2</b> - <v>6212759</v> + <v>6351611</v> </b> </bs> </hist> @@ -19727,63 +19458,68 @@ <budget>12</budget> <bs> <b> - <a>42</a> + <a>1</a> + <b>2</b> + <v>4</v> + </b> + <b> + <a>49</a> <b>160</b> - <v>5</v> + <v>4</v> </b> <b> - <a>262</a> - <b>428</b> - <v>5</v> + <a>291</a> + <b>443</b> + <v>4</v> </b> <b> - <a>1906</a> - <b>1907</b> + <a>2054</a> + <b>2055</b> <v>2</v> </b> <b> - <a>2167</a> - <b>2168</b> - <v>5</v> + <a>2462</a> + <b>2463</b> + <v>4</v> </b> <b> - <a>4685</a> - <b>4919</b> - <v>5</v> + <a>5047</a> + <b>5260</b> + <v>4</v> </b> <b> - <a>5076</a> - <b>6845</b> - <v>5</v> + <a>5496</a> + <b>7346</b> + <v>4</v> </b> <b> - <a>9531</a> - <b>10121</b> - <v>5</v> + <a>10365</a> + <b>10609</b> + <v>4</v> </b> <b> - <a>14916</a> - <b>20953</b> - <v>5</v> + <a>15376</a> + <b>22709</b> + <v>4</v> </b> <b> - <a>28887</a> - <b>64458</b> - <v>5</v> + <a>31415</a> + <b>70704</b> + <v>4</v> </b> <b> - <a>69189</a> - <b>98135</b> - <v>5</v> + <a>77014</a> + <b>106932</b> + <v>4</v> </b> <b> - <a>117445</a> - <b>609106</b> - <v>5</v> + <a>129596</a> + <b>673263</b> + <v>4</v> </b> <b> - <a>1367617</a> - <b>1367618</b> + <a>1509036</a> + <b>1509037</b> <v>2</v> </b> </bs> @@ -19800,51 +19536,51 @@ <b> <a>1</a> <b>2</b> - <v>12</v> + <v>16</v> </b> <b> - <a>5</a> + <a>6</a> <b>26</b> - <v>5</v> + <v>4</v> </b> <b> - <a>30</a> - <b>41</b> - <v>5</v> + <a>36</a> + <b>48</b> + <v>4</v> </b> <b> - <a>70</a> - <b>122</b> - <v>5</v> + <a>68</a> + <b>121</b> + <v>4</v> </b> <b> - <a>135</a> - <b>172</b> - <v>5</v> + <a>151</a> + <b>181</b> + <v>4</v> </b> <b> - <a>1500</a> - <b>1951</b> - <v>5</v> + <a>1509</a> + <b>2060</b> + <v>4</v> </b> <b> - <a>3612</a> - <b>4307</b> - <v>5</v> + <a>3983</a> + <b>4628</b> + <v>4</v> </b> <b> - <a>5291</a> - <b>8590</b> - <v>5</v> + <a>5781</a> + <b>9380</b> + <v>4</v> </b> <b> - <a>12176</a> - <b>21807</b> - <v>5</v> + <a>13063</a> + <b>24102</b> + <v>4</v> </b> <b> - <a>53746</a> - <b>53747</b> + <a>58689</a> + <b>58690</b> <v>2</v> </b> </bs> @@ -19861,32 +19597,32 @@ <b> <a>1</a> <b>2</b> - <v>162402</v> + <v>164156</v> </b> <b> <a>2</a> <b>3</b> - <v>39879</v> + <v>41140</v> </b> <b> <a>3</a> <b>4</b> - <v>19155</v> + <v>19333</v> </b> <b> <a>4</a> <b>7</b> - <v>22724</v> + <v>22761</v> </b> <b> <a>7</a> <b>29</b> - <v>20693</v> + <v>20750</v> </b> <b> <a>29</a> - <b>222217</b> - <v>7720</v> + <b>243390</b> + <v>7783</v> </b> </bs> </hist> @@ -19902,12 +19638,12 @@ <b> <a>1</a> <b>2</b> - <v>259340</v> + <v>262839</v> </b> <b> <a>2</a> <b>5</b> - <v>13235</v> + <v>13085</v> </b> </bs> </hist> @@ -19917,15 +19653,15 @@ </relation> <relation> <name>ruby_unary_def</name> - <cardinality>13726</cardinality> + <cardinality>14535</cardinality> <columnsizes> <e> <k>id</k> - <v>13726</v> + <v>14535</v> </e> <e> <k>operand</k> - <v>13726</v> + <v>14535</v> </e> <e> <k>operator</k> @@ -19943,7 +19679,7 @@ <b> <a>1</a> <b>2</b> - <v>13726</v> + <v>14535</v> </b> </bs> </hist> @@ -19959,7 +19695,7 @@ <b> <a>1</a> <b>2</b> - <v>13726</v> + <v>14535</v> </b> </bs> </hist> @@ -19975,7 +19711,7 @@ <b> <a>1</a> <b>2</b> - <v>13726</v> + <v>14535</v> </b> </bs> </hist> @@ -19991,7 +19727,7 @@ <b> <a>1</a> <b>2</b> - <v>13726</v> + <v>14535</v> </b> </bs> </hist> @@ -20005,33 +19741,33 @@ <budget>12</budget> <bs> <b> - <a>98</a> - <b>99</b> + <a>97</a> + <b>98</b> <v>1</v> </b> <b> - <a>190</a> - <b>191</b> + <a>172</a> + <b>173</b> <v>1</v> </b> <b> - <a>566</a> - <b>567</b> + <a>947</a> + <b>948</b> <v>1</v> </b> <b> - <a>1301</a> - <b>1302</b> + <a>1369</a> + <b>1370</b> <v>1</v> </b> <b> - <a>1938</a> - <b>1939</b> + <a>2120</a> + <b>2121</b> <v>1</v> </b> <b> - <a>9633</a> - <b>9634</b> + <a>9830</a> + <b>9831</b> <v>1</v> </b> </bs> @@ -20046,33 +19782,33 @@ <budget>12</budget> <bs> <b> - <a>98</a> - <b>99</b> + <a>97</a> + <b>98</b> <v>1</v> </b> <b> - <a>190</a> - <b>191</b> + <a>172</a> + <b>173</b> <v>1</v> </b> <b> - <a>566</a> - <b>567</b> + <a>947</a> + <b>948</b> <v>1</v> </b> <b> - <a>1301</a> - <b>1302</b> + <a>1369</a> + <b>1370</b> <v>1</v> </b> <b> - <a>1938</a> - <b>1939</b> + <a>2120</a> + <b>2121</b> <v>1</v> </b> <b> - <a>9633</a> - <b>9634</b> + <a>9830</a> + <b>9831</b> <v>1</v> </b> </bs> @@ -20230,15 +19966,15 @@ </relation> <relation> <name>ruby_unless_alternative</name> - <cardinality>42</cardinality> + <cardinality>43</cardinality> <columnsizes> <e> <k>ruby_unless</k> - <v>42</v> + <v>43</v> </e> <e> <k>alternative</k> - <v>42</v> + <v>43</v> </e> </columnsizes> <dependencies> @@ -20252,7 +19988,7 @@ <b> <a>1</a> <b>2</b> - <v>42</v> + <v>43</v> </b> </bs> </hist> @@ -20268,7 +20004,7 @@ <b> <a>1</a> <b>2</b> - <v>42</v> + <v>43</v> </b> </bs> </hist> @@ -20278,15 +20014,15 @@ </relation> <relation> <name>ruby_unless_consequence</name> - <cardinality>2662</cardinality> + <cardinality>2721</cardinality> <columnsizes> <e> <k>ruby_unless</k> - <v>2662</v> + <v>2721</v> </e> <e> <k>consequence</k> - <v>2662</v> + <v>2721</v> </e> </columnsizes> <dependencies> @@ -20300,7 +20036,7 @@ <b> <a>1</a> <b>2</b> - <v>2662</v> + <v>2721</v> </b> </bs> </hist> @@ -20316,7 +20052,7 @@ <b> <a>1</a> <b>2</b> - <v>2662</v> + <v>2721</v> </b> </bs> </hist> @@ -20326,15 +20062,15 @@ </relation> <relation> <name>ruby_unless_def</name> - <cardinality>2663</cardinality> + <cardinality>2723</cardinality> <columnsizes> <e> <k>id</k> - <v>2663</v> + <v>2723</v> </e> <e> <k>condition</k> - <v>2663</v> + <v>2723</v> </e> </columnsizes> <dependencies> @@ -20348,7 +20084,7 @@ <b> <a>1</a> <b>2</b> - <v>2663</v> + <v>2723</v> </b> </bs> </hist> @@ -20364,7 +20100,7 @@ <b> <a>1</a> <b>2</b> - <v>2663</v> + <v>2723</v> </b> </bs> </hist> @@ -20422,19 +20158,19 @@ </relation> <relation> <name>ruby_unless_modifier_def</name> - <cardinality>3505</cardinality> + <cardinality>3416</cardinality> <columnsizes> <e> <k>id</k> - <v>3505</v> + <v>3416</v> </e> <e> <k>body</k> - <v>3505</v> + <v>3416</v> </e> <e> <k>condition</k> - <v>3505</v> + <v>3416</v> </e> </columnsizes> <dependencies> @@ -20448,7 +20184,7 @@ <b> <a>1</a> <b>2</b> - <v>3505</v> + <v>3416</v> </b> </bs> </hist> @@ -20464,7 +20200,7 @@ <b> <a>1</a> <b>2</b> - <v>3505</v> + <v>3416</v> </b> </bs> </hist> @@ -20480,7 +20216,7 @@ <b> <a>1</a> <b>2</b> - <v>3505</v> + <v>3416</v> </b> </bs> </hist> @@ -20496,7 +20232,7 @@ <b> <a>1</a> <b>2</b> - <v>3505</v> + <v>3416</v> </b> </bs> </hist> @@ -20512,7 +20248,7 @@ <b> <a>1</a> <b>2</b> - <v>3505</v> + <v>3416</v> </b> </bs> </hist> @@ -20528,7 +20264,7 @@ <b> <a>1</a> <b>2</b> - <v>3505</v> + <v>3416</v> </b> </bs> </hist> @@ -20538,19 +20274,19 @@ </relation> <relation> <name>ruby_until_def</name> - <cardinality>123</cardinality> + <cardinality>126</cardinality> <columnsizes> <e> <k>id</k> - <v>123</v> + <v>126</v> </e> <e> <k>body</k> - <v>123</v> + <v>126</v> </e> <e> <k>condition</k> - <v>123</v> + <v>126</v> </e> </columnsizes> <dependencies> @@ -20564,7 +20300,7 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>126</v> </b> </bs> </hist> @@ -20580,7 +20316,7 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>126</v> </b> </bs> </hist> @@ -20596,7 +20332,7 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>126</v> </b> </bs> </hist> @@ -20612,7 +20348,7 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>126</v> </b> </bs> </hist> @@ -20628,7 +20364,7 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>126</v> </b> </bs> </hist> @@ -20644,7 +20380,7 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>126</v> </b> </bs> </hist> @@ -20654,19 +20390,19 @@ </relation> <relation> <name>ruby_until_modifier_def</name> - <cardinality>234</cardinality> + <cardinality>238</cardinality> <columnsizes> <e> <k>id</k> - <v>234</v> + <v>238</v> </e> <e> <k>body</k> - <v>234</v> + <v>238</v> </e> <e> <k>condition</k> - <v>234</v> + <v>238</v> </e> </columnsizes> <dependencies> @@ -20680,7 +20416,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>238</v> </b> </bs> </hist> @@ -20696,7 +20432,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>238</v> </b> </bs> </hist> @@ -20712,7 +20448,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>238</v> </b> </bs> </hist> @@ -20728,7 +20464,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>238</v> </b> </bs> </hist> @@ -20744,7 +20480,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>238</v> </b> </bs> </hist> @@ -20760,7 +20496,7 @@ <b> <a>1</a> <b>2</b> - <v>234</v> + <v>238</v> </b> </bs> </hist> @@ -20818,15 +20554,15 @@ </relation> <relation> <name>ruby_when_body</name> - <cardinality>3358</cardinality> + <cardinality>3790</cardinality> <columnsizes> <e> <k>ruby_when</k> - <v>3358</v> + <v>3790</v> </e> <e> <k>body</k> - <v>3358</v> + <v>3790</v> </e> </columnsizes> <dependencies> @@ -20840,7 +20576,7 @@ <b> <a>1</a> <b>2</b> - <v>3358</v> + <v>3790</v> </b> </bs> </hist> @@ -20856,7 +20592,7 @@ <b> <a>1</a> <b>2</b> - <v>3358</v> + <v>3790</v> </b> </bs> </hist> @@ -20866,22 +20602,22 @@ </relation> <relation> <name>ruby_when_def</name> - <cardinality>3392</cardinality> + <cardinality>3882</cardinality> <columnsizes> <e> <k>id</k> - <v>3392</v> + <v>3882</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ruby_when_pattern</name> - <cardinality>4153</cardinality> + <cardinality>4745</cardinality> <columnsizes> <e> <k>ruby_when</k> - <v>3377</v> + <v>3882</v> </e> <e> <k>index</k> @@ -20889,7 +20625,7 @@ </e> <e> <k>pattern</k> - <v>4153</v> + <v>4745</v> </e> </columnsizes> <dependencies> @@ -20903,17 +20639,17 @@ <b> <a>1</a> <b>2</b> - <v>2934</v> + <v>3393</v> </b> <b> <a>2</a> <b>3</b> - <v>293</v> + <v>330</v> </b> <b> <a>3</a> <b>16</b> - <v>150</v> + <v>159</v> </b> </bs> </hist> @@ -20929,17 +20665,17 @@ <b> <a>1</a> <b>2</b> - <v>2934</v> + <v>3393</v> </b> <b> <a>2</a> <b>3</b> - <v>293</v> + <v>330</v> </b> <b> <a>3</a> <b>16</b> - <v>150</v> + <v>159</v> </b> </bs> </hist> @@ -20960,51 +20696,56 @@ <b> <a>3</a> <b>4</b> - <v>4</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> + <v>2</v> + </b> + <b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>6</a> - <b>7</b> + <a>10</a> + <b>11</b> <v>1</v> </b> <b> - <a>14</a> - <b>15</b> + <a>19</a> + <b>20</b> <v>1</v> </b> <b> - <a>25</a> - <b>26</b> + <a>31</a> + <b>32</b> <v>1</v> </b> <b> - <a>35</a> - <b>36</b> + <a>44</a> + <b>45</b> <v>1</v> </b> <b> - <a>85</a> - <b>86</b> + <a>90</a> + <b>91</b> <v>1</v> </b> <b> - <a>150</a> - <b>151</b> + <a>159</a> + <b>160</b> <v>1</v> </b> <b> - <a>443</a> - <b>444</b> + <a>489</a> + <b>490</b> <v>1</v> </b> <b> - <a>3377</a> - <b>3378</b> + <a>3882</a> + <b>3883</b> <v>1</v> </b> </bs> @@ -21026,51 +20767,56 @@ <b> <a>3</a> <b>4</b> - <v>4</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> + <v>2</v> + </b> + <b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>6</a> - <b>7</b> + <a>10</a> + <b>11</b> <v>1</v> </b> <b> - <a>14</a> - <b>15</b> + <a>19</a> + <b>20</b> <v>1</v> </b> <b> - <a>25</a> - <b>26</b> + <a>31</a> + <b>32</b> <v>1</v> </b> <b> - <a>35</a> - <b>36</b> + <a>44</a> + <b>45</b> <v>1</v> </b> <b> - <a>85</a> - <b>86</b> + <a>90</a> + <b>91</b> <v>1</v> </b> <b> - <a>150</a> - <b>151</b> + <a>159</a> + <b>160</b> <v>1</v> </b> <b> - <a>443</a> - <b>444</b> + <a>489</a> + <b>490</b> <v>1</v> </b> <b> - <a>3377</a> - <b>3378</b> + <a>3882</a> + <b>3883</b> <v>1</v> </b> </bs> @@ -21087,7 +20833,7 @@ <b> <a>1</a> <b>2</b> - <v>4153</v> + <v>4745</v> </b> </bs> </hist> @@ -21103,7 +20849,7 @@ <b> <a>1</a> <b>2</b> - <v>4153</v> + <v>4745</v> </b> </bs> </hist> @@ -21113,19 +20859,19 @@ </relation> <relation> <name>ruby_while_def</name> - <cardinality>1400</cardinality> + <cardinality>1413</cardinality> <columnsizes> <e> <k>id</k> - <v>1400</v> + <v>1413</v> </e> <e> <k>body</k> - <v>1400</v> + <v>1413</v> </e> <e> <k>condition</k> - <v>1400</v> + <v>1413</v> </e> </columnsizes> <dependencies> @@ -21139,7 +20885,7 @@ <b> <a>1</a> <b>2</b> - <v>1400</v> + <v>1413</v> </b> </bs> </hist> @@ -21155,7 +20901,7 @@ <b> <a>1</a> <b>2</b> - <v>1400</v> + <v>1413</v> </b> </bs> </hist> @@ -21171,7 +20917,7 @@ <b> <a>1</a> <b>2</b> - <v>1400</v> + <v>1413</v> </b> </bs> </hist> @@ -21187,7 +20933,7 @@ <b> <a>1</a> <b>2</b> - <v>1400</v> + <v>1413</v> </b> </bs> </hist> @@ -21203,7 +20949,7 @@ <b> <a>1</a> <b>2</b> - <v>1400</v> + <v>1413</v> </b> </bs> </hist> @@ -21219,7 +20965,7 @@ <b> <a>1</a> <b>2</b> - <v>1400</v> + <v>1413</v> </b> </bs> </hist> @@ -21229,19 +20975,19 @@ </relation> <relation> <name>ruby_while_modifier_def</name> - <cardinality>194</cardinality> + <cardinality>198</cardinality> <columnsizes> <e> <k>id</k> - <v>194</v> + <v>198</v> </e> <e> <k>body</k> - <v>194</v> + <v>198</v> </e> <e> <k>condition</k> - <v>194</v> + <v>198</v> </e> </columnsizes> <dependencies> @@ -21255,7 +21001,7 @@ <b> <a>1</a> <b>2</b> - <v>194</v> + <v>198</v> </b> </bs> </hist> @@ -21271,7 +21017,7 @@ <b> <a>1</a> <b>2</b> - <v>194</v> + <v>198</v> </b> </bs> </hist> @@ -21287,7 +21033,7 @@ <b> <a>1</a> <b>2</b> - <v>194</v> + <v>198</v> </b> </bs> </hist> @@ -21303,7 +21049,7 @@ <b> <a>1</a> <b>2</b> - <v>194</v> + <v>198</v> </b> </bs> </hist> @@ -21319,7 +21065,7 @@ <b> <a>1</a> <b>2</b> - <v>194</v> + <v>198</v> </b> </bs> </hist> @@ -21335,7 +21081,7 @@ <b> <a>1</a> <b>2</b> - <v>194</v> + <v>198</v> </b> </bs> </hist> @@ -21345,15 +21091,15 @@ </relation> <relation> <name>ruby_yield_child</name> - <cardinality>1111</cardinality> + <cardinality>1103</cardinality> <columnsizes> <e> <k>ruby_yield</k> - <v>1111</v> + <v>1103</v> </e> <e> <k>child</k> - <v>1111</v> + <v>1103</v> </e> </columnsizes> <dependencies> @@ -21367,7 +21113,7 @@ <b> <a>1</a> <b>2</b> - <v>1111</v> + <v>1103</v> </b> </bs> </hist> @@ -21383,7 +21129,7 @@ <b> <a>1</a> <b>2</b> - <v>1111</v> + <v>1103</v> </b> </bs> </hist> @@ -21393,11 +21139,11 @@ </relation> <relation> <name>ruby_yield_def</name> - <cardinality>2477</cardinality> + <cardinality>2450</cardinality> <columnsizes> <e> <k>id</k> - <v>2477</v> + <v>2450</v> </e> </columnsizes> <dependencies/> From 865026f22bbd22226ee8686fb6f4f7eb6f3ee88d Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 19 Mar 2024 10:41:17 +0100 Subject: [PATCH 356/731] Ruby: Add up/downgrade scripts (sigh) --- .../erb_ast_node_info.ql | 44 + .../old.dbscheme | 1513 +++++++++++++++++ .../ruby.dbscheme | 1509 ++++++++++++++++ .../ruby_ast_node_info.ql | 44 + .../upgrade.properties | 8 + .../erb_ast_node_location.ql | 11 + .../erb_ast_node_parent.ql | 7 + .../old.dbscheme | 1509 ++++++++++++++++ .../ruby.dbscheme | 1513 +++++++++++++++++ .../ruby_ast_node_location.ql | 11 + .../ruby_ast_node_parent.ql | 7 + .../upgrade.properties | 8 + 12 files changed, 6184 insertions(+) create mode 100644 ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/erb_ast_node_info.ql create mode 100644 ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/old.dbscheme create mode 100644 ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby.dbscheme create mode 100644 ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby_ast_node_info.ql create mode 100644 ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/upgrade.properties create mode 100644 ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_location.ql create mode 100644 ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_parent.ql create mode 100644 ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/old.dbscheme create mode 100644 ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby.dbscheme create mode 100644 ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_location.ql create mode 100644 ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_parent.ql create mode 100644 ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/upgrade.properties diff --git a/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/erb_ast_node_info.ql b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/erb_ast_node_info.ql new file mode 100644 index 000000000000..ed8cf128f1d5 --- /dev/null +++ b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/erb_ast_node_info.ql @@ -0,0 +1,44 @@ +class TAstNodeParent = @file or @erb_ast_node; + +abstract class AstNodeParent extends TAstNodeParent { + string toString() { none() } +} + +class AstNode extends AstNodeParent, @erb_ast_node { } + +class File extends AstNodeParent, @file { } + +class Location extends @location_default { + string toString() { none() } +} + +pragma[nomagic] +predicate hasFileParent( + AstNode n, File f, int startline, int startcolumn, int endline, int endcolumn +) { + exists(Location loc | + not erb_ast_node_parent(n, _, _) and + erb_ast_node_location(n, loc) and + locations_default(loc, f, startline, startcolumn, endline, endcolumn) + ) +} + +pragma[nomagic] +predicate hasFileParent(AstNode n, File f, int i) { + n = + rank[i + 1](AstNode n0, int startline, int startcolumn, int endline, int endcolumn | + hasFileParent(n0, f, startline, startcolumn, endline, endcolumn) + | + n0 order by startline, startcolumn, endline, endcolumn + ) +} + +from AstNode n, AstNodeParent parent, int i, Location location +where + erb_ast_node_location(n, location) and + ( + erb_ast_node_parent(n, parent, i) + or + hasFileParent(n, parent, i) + ) +select n, parent, i, location diff --git a/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/old.dbscheme b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/old.dbscheme new file mode 100644 index 000000000000..440de75c71e9 --- /dev/null +++ b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/old.dbscheme @@ -0,0 +1,1513 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +ruby_ast_node_location( + unique int node: @ruby_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +ruby_ast_node_parent( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node ref, + int parent_index: int ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +erb_ast_node_location( + unique int node: @erb_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +erb_ast_node_parent( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node ref, + int parent_index: int ref +); + diff --git a/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby.dbscheme b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby.dbscheme new file mode 100644 index 000000000000..f9f0f4023e43 --- /dev/null +++ b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby.dbscheme @@ -0,0 +1,1509 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +@ruby_ast_node_parent = @file | @ruby_ast_node + +#keyset[parent, parent_index] +ruby_ast_node_info( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node_parent ref, + int parent_index: int ref, + int loc: @location_default ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +@erb_ast_node_parent = @erb_ast_node | @file + +#keyset[parent, parent_index] +erb_ast_node_info( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node_parent ref, + int parent_index: int ref, + int loc: @location_default ref +); + diff --git a/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby_ast_node_info.ql b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby_ast_node_info.ql new file mode 100644 index 000000000000..06551527942b --- /dev/null +++ b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/ruby_ast_node_info.ql @@ -0,0 +1,44 @@ +class TAstNodeParent = @file or @ruby_ast_node; + +abstract class AstNodeParent extends TAstNodeParent { + string toString() { none() } +} + +class AstNode extends AstNodeParent, @ruby_ast_node { } + +class File extends AstNodeParent, @file { } + +class Location extends @location_default { + string toString() { none() } +} + +pragma[nomagic] +predicate hasFileParent( + AstNode n, File f, int startline, int startcolumn, int endline, int endcolumn +) { + exists(Location loc | + not ruby_ast_node_parent(n, _, _) and + ruby_ast_node_location(n, loc) and + locations_default(loc, f, startline, startcolumn, endline, endcolumn) + ) +} + +pragma[nomagic] +predicate hasFileParent(AstNode n, File f, int i) { + n = + rank[i + 1](AstNode n0, int startline, int startcolumn, int endline, int endcolumn | + hasFileParent(n0, f, startline, startcolumn, endline, endcolumn) + | + n0 order by startline, startcolumn, endline, endcolumn + ) +} + +from AstNode n, AstNodeParent parent, int i, Location location +where + ruby_ast_node_location(n, location) and + ( + ruby_ast_node_parent(n, parent, i) + or + hasFileParent(n, parent, i) + ) +select n, parent, i, location diff --git a/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/upgrade.properties b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/upgrade.properties new file mode 100644 index 000000000000..b75ccdefc20f --- /dev/null +++ b/ruby/downgrades/440de75c71e9206ce16eed49a22c76e7889b5fc3/upgrade.properties @@ -0,0 +1,8 @@ +description: Merge `ruby_ast_node_location` and `ruby_ast_node_parent` into `ruby_ast_node_info` (and same for `erb`) +compatibility: backwards +erb_ast_node_info.rel: run erb_ast_node_info.qlo +erb_ast_node_location.rel: delete +erb_ast_node_parent.rel: delete +ruby_ast_node_info.rel: run ruby_ast_node_info.qlo +ruby_ast_node_location.rel: delete +ruby_ast_node_parent.rel: delete diff --git a/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_location.ql b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_location.ql new file mode 100644 index 000000000000..add4e3d655cd --- /dev/null +++ b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_location.ql @@ -0,0 +1,11 @@ +class AstNode extends @erb_ast_node { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +from AstNode n, Location location +where erb_ast_node_info(n, _, _, location) +select n, location diff --git a/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_parent.ql b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_parent.ql new file mode 100644 index 000000000000..2a7b6b2ff784 --- /dev/null +++ b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/erb_ast_node_parent.ql @@ -0,0 +1,7 @@ +class AstNode extends @erb_ast_node { + string toString() { none() } +} + +from AstNode n, int i, AstNode parent +where erb_ast_node_info(n, parent, i, _) +select n, parent, i diff --git a/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/old.dbscheme b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/old.dbscheme new file mode 100644 index 000000000000..f9f0f4023e43 --- /dev/null +++ b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/old.dbscheme @@ -0,0 +1,1509 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +@ruby_ast_node_parent = @file | @ruby_ast_node + +#keyset[parent, parent_index] +ruby_ast_node_info( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node_parent ref, + int parent_index: int ref, + int loc: @location_default ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +@erb_ast_node_parent = @erb_ast_node | @file + +#keyset[parent, parent_index] +erb_ast_node_info( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node_parent ref, + int parent_index: int ref, + int loc: @location_default ref +); + diff --git a/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby.dbscheme b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby.dbscheme new file mode 100644 index 000000000000..440de75c71e9 --- /dev/null +++ b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby.dbscheme @@ -0,0 +1,1513 @@ +// CodeQL database schema for Ruby +// Automatically generated from the tree-sitter grammar; do not edit + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Ruby dbscheme -*/ +@ruby_underscore_arg = @ruby_assignment | @ruby_binary | @ruby_conditional | @ruby_operator_assignment | @ruby_range | @ruby_unary | @ruby_underscore_primary + +@ruby_underscore_call_operator = @ruby_reserved_word + +@ruby_underscore_expression = @ruby_assignment | @ruby_binary | @ruby_break | @ruby_call | @ruby_match_pattern | @ruby_next | @ruby_operator_assignment | @ruby_return | @ruby_test_pattern | @ruby_unary | @ruby_underscore_arg | @ruby_yield + +@ruby_underscore_lhs = @ruby_call | @ruby_element_reference | @ruby_scope_resolution | @ruby_token_false | @ruby_token_nil | @ruby_token_true | @ruby_underscore_variable + +@ruby_underscore_method_name = @ruby_delimited_symbol | @ruby_setter | @ruby_token_constant | @ruby_token_identifier | @ruby_token_operator | @ruby_token_simple_symbol | @ruby_underscore_nonlocal_variable + +@ruby_underscore_nonlocal_variable = @ruby_token_class_variable | @ruby_token_global_variable | @ruby_token_instance_variable + +@ruby_underscore_pattern_constant = @ruby_scope_resolution | @ruby_token_constant + +@ruby_underscore_pattern_expr = @ruby_alternative_pattern | @ruby_as_pattern | @ruby_underscore_pattern_expr_basic + +@ruby_underscore_pattern_expr_basic = @ruby_array_pattern | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_parenthesized_pattern | @ruby_range | @ruby_token_identifier | @ruby_underscore_pattern_constant | @ruby_underscore_pattern_primitive | @ruby_variable_reference_pattern + +@ruby_underscore_pattern_primitive = @ruby_delimited_symbol | @ruby_lambda | @ruby_regex | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_encoding | @ruby_token_false | @ruby_token_file | @ruby_token_heredoc_beginning | @ruby_token_line | @ruby_token_nil | @ruby_token_self | @ruby_token_simple_symbol | @ruby_token_true | @ruby_unary | @ruby_underscore_simple_numeric + +@ruby_underscore_pattern_top_expr_body = @ruby_array_pattern | @ruby_find_pattern | @ruby_hash_pattern | @ruby_underscore_pattern_expr + +@ruby_underscore_primary = @ruby_array | @ruby_begin | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_delimited_symbol | @ruby_for | @ruby_hash | @ruby_if | @ruby_lambda | @ruby_method | @ruby_module | @ruby_next | @ruby_parenthesized_statements | @ruby_redo | @ruby_regex | @ruby_retry | @ruby_return | @ruby_singleton_class | @ruby_singleton_method | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_symbol_array | @ruby_token_character | @ruby_token_heredoc_beginning | @ruby_token_simple_symbol | @ruby_unary | @ruby_underscore_lhs | @ruby_underscore_simple_numeric | @ruby_unless | @ruby_until | @ruby_while | @ruby_yield + +@ruby_underscore_simple_numeric = @ruby_complex | @ruby_rational | @ruby_token_float | @ruby_token_integer + +@ruby_underscore_statement = @ruby_alias | @ruby_begin_block | @ruby_end_block | @ruby_if_modifier | @ruby_rescue_modifier | @ruby_undef | @ruby_underscore_expression | @ruby_unless_modifier | @ruby_until_modifier | @ruby_while_modifier + +@ruby_underscore_variable = @ruby_token_constant | @ruby_token_identifier | @ruby_token_self | @ruby_token_super | @ruby_underscore_nonlocal_variable + +ruby_alias_def( + unique int id: @ruby_alias, + int alias: @ruby_underscore_method_name ref, + int name: @ruby_underscore_method_name ref +); + +#keyset[ruby_alternative_pattern, index] +ruby_alternative_pattern_alternatives( + int ruby_alternative_pattern: @ruby_alternative_pattern ref, + int index: int ref, + unique int alternatives: @ruby_underscore_pattern_expr_basic ref +); + +ruby_alternative_pattern_def( + unique int id: @ruby_alternative_pattern +); + +@ruby_argument_list_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_argument_list, index] +ruby_argument_list_child( + int ruby_argument_list: @ruby_argument_list ref, + int index: int ref, + unique int child: @ruby_argument_list_child_type ref +); + +ruby_argument_list_def( + unique int id: @ruby_argument_list +); + +@ruby_array_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_array, index] +ruby_array_child( + int ruby_array: @ruby_array ref, + int index: int ref, + unique int child: @ruby_array_child_type ref +); + +ruby_array_def( + unique int id: @ruby_array +); + +ruby_array_pattern_class( + unique int ruby_array_pattern: @ruby_array_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_array_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_array_pattern, index] +ruby_array_pattern_child( + int ruby_array_pattern: @ruby_array_pattern ref, + int index: int ref, + unique int child: @ruby_array_pattern_child_type ref +); + +ruby_array_pattern_def( + unique int id: @ruby_array_pattern +); + +ruby_as_pattern_def( + unique int id: @ruby_as_pattern, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_pattern_expr ref +); + +@ruby_assignment_left_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +@ruby_assignment_right_type = @ruby_rescue_modifier | @ruby_right_assignment_list | @ruby_splat_argument | @ruby_underscore_expression + +ruby_assignment_def( + unique int id: @ruby_assignment, + int left: @ruby_assignment_left_type ref, + int right: @ruby_assignment_right_type ref +); + +@ruby_bare_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_string, index] +ruby_bare_string_child( + int ruby_bare_string: @ruby_bare_string ref, + int index: int ref, + unique int child: @ruby_bare_string_child_type ref +); + +ruby_bare_string_def( + unique int id: @ruby_bare_string +); + +@ruby_bare_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_bare_symbol, index] +ruby_bare_symbol_child( + int ruby_bare_symbol: @ruby_bare_symbol ref, + int index: int ref, + unique int child: @ruby_bare_symbol_child_type ref +); + +ruby_bare_symbol_def( + unique int id: @ruby_bare_symbol +); + +@ruby_begin_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin, index] +ruby_begin_child( + int ruby_begin: @ruby_begin ref, + int index: int ref, + unique int child: @ruby_begin_child_type ref +); + +ruby_begin_def( + unique int id: @ruby_begin +); + +@ruby_begin_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_begin_block, index] +ruby_begin_block_child( + int ruby_begin_block: @ruby_begin_block ref, + int index: int ref, + unique int child: @ruby_begin_block_child_type ref +); + +ruby_begin_block_def( + unique int id: @ruby_begin_block +); + +@ruby_binary_left_type = @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_binary.operator of + 0 = @ruby_binary_bangequal +| 1 = @ruby_binary_bangtilde +| 2 = @ruby_binary_percent +| 3 = @ruby_binary_ampersand +| 4 = @ruby_binary_ampersandampersand +| 5 = @ruby_binary_star +| 6 = @ruby_binary_starstar +| 7 = @ruby_binary_plus +| 8 = @ruby_binary_minus +| 9 = @ruby_binary_slash +| 10 = @ruby_binary_langle +| 11 = @ruby_binary_langlelangle +| 12 = @ruby_binary_langleequal +| 13 = @ruby_binary_langleequalrangle +| 14 = @ruby_binary_equalequal +| 15 = @ruby_binary_equalequalequal +| 16 = @ruby_binary_equaltilde +| 17 = @ruby_binary_rangle +| 18 = @ruby_binary_rangleequal +| 19 = @ruby_binary_ranglerangle +| 20 = @ruby_binary_caret +| 21 = @ruby_binary_and +| 22 = @ruby_binary_or +| 23 = @ruby_binary_pipe +| 24 = @ruby_binary_pipepipe +; + + +ruby_binary_def( + unique int id: @ruby_binary, + int left: @ruby_binary_left_type ref, + int operator: int ref, + int right: @ruby_underscore_expression ref +); + +ruby_block_body( + unique int ruby_block: @ruby_block ref, + unique int body: @ruby_block_body ref +); + +ruby_block_parameters( + unique int ruby_block: @ruby_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_block_def( + unique int id: @ruby_block +); + +ruby_block_argument_child( + unique int ruby_block_argument: @ruby_block_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_block_argument_def( + unique int id: @ruby_block_argument +); + +@ruby_block_body_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_block_body, index] +ruby_block_body_child( + int ruby_block_body: @ruby_block_body ref, + int index: int ref, + unique int child: @ruby_block_body_child_type ref +); + +ruby_block_body_def( + unique int id: @ruby_block_body +); + +ruby_block_parameter_name( + unique int ruby_block_parameter: @ruby_block_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_block_parameter_def( + unique int id: @ruby_block_parameter +); + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_locals( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int locals: @ruby_token_identifier ref +); + +@ruby_block_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_block_parameters, index] +ruby_block_parameters_child( + int ruby_block_parameters: @ruby_block_parameters ref, + int index: int ref, + unique int child: @ruby_block_parameters_child_type ref +); + +ruby_block_parameters_def( + unique int id: @ruby_block_parameters +); + +@ruby_body_statement_child_type = @ruby_else | @ruby_ensure | @ruby_rescue | @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_body_statement, index] +ruby_body_statement_child( + int ruby_body_statement: @ruby_body_statement ref, + int index: int ref, + unique int child: @ruby_body_statement_child_type ref +); + +ruby_body_statement_def( + unique int id: @ruby_body_statement +); + +ruby_break_child( + unique int ruby_break: @ruby_break ref, + unique int child: @ruby_argument_list ref +); + +ruby_break_def( + unique int id: @ruby_break +); + +ruby_call_arguments( + unique int ruby_call: @ruby_call ref, + unique int arguments: @ruby_argument_list ref +); + +@ruby_call_block_type = @ruby_block | @ruby_do_block + +ruby_call_block( + unique int ruby_call: @ruby_call ref, + unique int block: @ruby_call_block_type ref +); + +@ruby_call_method_type = @ruby_token_operator | @ruby_underscore_variable + +ruby_call_method( + unique int ruby_call: @ruby_call ref, + unique int method: @ruby_call_method_type ref +); + +ruby_call_operator( + unique int ruby_call: @ruby_call ref, + unique int operator: @ruby_underscore_call_operator ref +); + +ruby_call_receiver( + unique int ruby_call: @ruby_call ref, + unique int receiver: @ruby_underscore_primary ref +); + +ruby_call_def( + unique int id: @ruby_call +); + +ruby_case_value( + unique int ruby_case__: @ruby_case__ ref, + unique int value: @ruby_underscore_statement ref +); + +@ruby_case_child_type = @ruby_else | @ruby_when + +#keyset[ruby_case__, index] +ruby_case_child( + int ruby_case__: @ruby_case__ ref, + int index: int ref, + unique int child: @ruby_case_child_type ref +); + +ruby_case_def( + unique int id: @ruby_case__ +); + +#keyset[ruby_case_match, index] +ruby_case_match_clauses( + int ruby_case_match: @ruby_case_match ref, + int index: int ref, + unique int clauses: @ruby_in_clause ref +); + +ruby_case_match_else( + unique int ruby_case_match: @ruby_case_match ref, + unique int else: @ruby_else ref +); + +ruby_case_match_def( + unique int id: @ruby_case_match, + int value: @ruby_underscore_statement ref +); + +#keyset[ruby_chained_string, index] +ruby_chained_string_child( + int ruby_chained_string: @ruby_chained_string ref, + int index: int ref, + unique int child: @ruby_string__ ref +); + +ruby_chained_string_def( + unique int id: @ruby_chained_string +); + +ruby_class_body( + unique int ruby_class: @ruby_class ref, + unique int body: @ruby_body_statement ref +); + +@ruby_class_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_class_superclass( + unique int ruby_class: @ruby_class ref, + unique int superclass: @ruby_superclass ref +); + +ruby_class_def( + unique int id: @ruby_class, + int name: @ruby_class_name_type ref +); + +@ruby_complex_child_type = @ruby_rational | @ruby_token_float | @ruby_token_integer + +ruby_complex_def( + unique int id: @ruby_complex, + int child: @ruby_complex_child_type ref +); + +ruby_conditional_def( + unique int id: @ruby_conditional, + int alternative: @ruby_underscore_arg ref, + int condition: @ruby_underscore_arg ref, + int consequence: @ruby_underscore_arg ref +); + +@ruby_delimited_symbol_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_delimited_symbol, index] +ruby_delimited_symbol_child( + int ruby_delimited_symbol: @ruby_delimited_symbol ref, + int index: int ref, + unique int child: @ruby_delimited_symbol_child_type ref +); + +ruby_delimited_symbol_def( + unique int id: @ruby_delimited_symbol +); + +@ruby_destructured_left_assignment_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_destructured_left_assignment, index] +ruby_destructured_left_assignment_child( + int ruby_destructured_left_assignment: @ruby_destructured_left_assignment ref, + int index: int ref, + unique int child: @ruby_destructured_left_assignment_child_type ref +); + +ruby_destructured_left_assignment_def( + unique int id: @ruby_destructured_left_assignment +); + +@ruby_destructured_parameter_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_destructured_parameter, index] +ruby_destructured_parameter_child( + int ruby_destructured_parameter: @ruby_destructured_parameter ref, + int index: int ref, + unique int child: @ruby_destructured_parameter_child_type ref +); + +ruby_destructured_parameter_def( + unique int id: @ruby_destructured_parameter +); + +@ruby_do_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_do, index] +ruby_do_child( + int ruby_do: @ruby_do ref, + int index: int ref, + unique int child: @ruby_do_child_type ref +); + +ruby_do_def( + unique int id: @ruby_do +); + +ruby_do_block_body( + unique int ruby_do_block: @ruby_do_block ref, + unique int body: @ruby_body_statement ref +); + +ruby_do_block_parameters( + unique int ruby_do_block: @ruby_do_block ref, + unique int parameters: @ruby_block_parameters ref +); + +ruby_do_block_def( + unique int id: @ruby_do_block +); + +@ruby_element_reference_child_type = @ruby_block_argument | @ruby_hash_splat_argument | @ruby_pair | @ruby_splat_argument | @ruby_token_forward_argument | @ruby_underscore_expression + +#keyset[ruby_element_reference, index] +ruby_element_reference_child( + int ruby_element_reference: @ruby_element_reference ref, + int index: int ref, + unique int child: @ruby_element_reference_child_type ref +); + +ruby_element_reference_def( + unique int id: @ruby_element_reference, + int object: @ruby_underscore_primary ref +); + +@ruby_else_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_else, index] +ruby_else_child( + int ruby_else: @ruby_else ref, + int index: int ref, + unique int child: @ruby_else_child_type ref +); + +ruby_else_def( + unique int id: @ruby_else +); + +@ruby_elsif_alternative_type = @ruby_else | @ruby_elsif + +ruby_elsif_alternative( + unique int ruby_elsif: @ruby_elsif ref, + unique int alternative: @ruby_elsif_alternative_type ref +); + +ruby_elsif_consequence( + unique int ruby_elsif: @ruby_elsif ref, + unique int consequence: @ruby_then ref +); + +ruby_elsif_def( + unique int id: @ruby_elsif, + int condition: @ruby_underscore_statement ref +); + +@ruby_end_block_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_end_block, index] +ruby_end_block_child( + int ruby_end_block: @ruby_end_block ref, + int index: int ref, + unique int child: @ruby_end_block_child_type ref +); + +ruby_end_block_def( + unique int id: @ruby_end_block +); + +@ruby_ensure_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_ensure, index] +ruby_ensure_child( + int ruby_ensure: @ruby_ensure ref, + int index: int ref, + unique int child: @ruby_ensure_child_type ref +); + +ruby_ensure_def( + unique int id: @ruby_ensure +); + +ruby_exception_variable_def( + unique int id: @ruby_exception_variable, + int child: @ruby_underscore_lhs ref +); + +@ruby_exceptions_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_exceptions, index] +ruby_exceptions_child( + int ruby_exceptions: @ruby_exceptions ref, + int index: int ref, + unique int child: @ruby_exceptions_child_type ref +); + +ruby_exceptions_def( + unique int id: @ruby_exceptions +); + +ruby_expression_reference_pattern_def( + unique int id: @ruby_expression_reference_pattern, + int value: @ruby_underscore_expression ref +); + +ruby_find_pattern_class( + unique int ruby_find_pattern: @ruby_find_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_find_pattern_child_type = @ruby_splat_parameter | @ruby_underscore_pattern_expr + +#keyset[ruby_find_pattern, index] +ruby_find_pattern_child( + int ruby_find_pattern: @ruby_find_pattern ref, + int index: int ref, + unique int child: @ruby_find_pattern_child_type ref +); + +ruby_find_pattern_def( + unique int id: @ruby_find_pattern +); + +@ruby_for_pattern_type = @ruby_left_assignment_list | @ruby_underscore_lhs + +ruby_for_def( + unique int id: @ruby_for, + int body: @ruby_do ref, + int pattern: @ruby_for_pattern_type ref, + int value: @ruby_in ref +); + +@ruby_hash_child_type = @ruby_hash_splat_argument | @ruby_pair + +#keyset[ruby_hash, index] +ruby_hash_child( + int ruby_hash: @ruby_hash ref, + int index: int ref, + unique int child: @ruby_hash_child_type ref +); + +ruby_hash_def( + unique int id: @ruby_hash +); + +ruby_hash_pattern_class( + unique int ruby_hash_pattern: @ruby_hash_pattern ref, + unique int class: @ruby_underscore_pattern_constant ref +); + +@ruby_hash_pattern_child_type = @ruby_hash_splat_parameter | @ruby_keyword_pattern | @ruby_token_hash_splat_nil + +#keyset[ruby_hash_pattern, index] +ruby_hash_pattern_child( + int ruby_hash_pattern: @ruby_hash_pattern ref, + int index: int ref, + unique int child: @ruby_hash_pattern_child_type ref +); + +ruby_hash_pattern_def( + unique int id: @ruby_hash_pattern +); + +ruby_hash_splat_argument_child( + unique int ruby_hash_splat_argument: @ruby_hash_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_hash_splat_argument_def( + unique int id: @ruby_hash_splat_argument +); + +ruby_hash_splat_parameter_name( + unique int ruby_hash_splat_parameter: @ruby_hash_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_hash_splat_parameter_def( + unique int id: @ruby_hash_splat_parameter +); + +@ruby_heredoc_body_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_heredoc_content | @ruby_token_heredoc_end + +#keyset[ruby_heredoc_body, index] +ruby_heredoc_body_child( + int ruby_heredoc_body: @ruby_heredoc_body ref, + int index: int ref, + unique int child: @ruby_heredoc_body_child_type ref +); + +ruby_heredoc_body_def( + unique int id: @ruby_heredoc_body +); + +@ruby_if_alternative_type = @ruby_else | @ruby_elsif + +ruby_if_alternative( + unique int ruby_if: @ruby_if ref, + unique int alternative: @ruby_if_alternative_type ref +); + +ruby_if_consequence( + unique int ruby_if: @ruby_if ref, + unique int consequence: @ruby_then ref +); + +ruby_if_def( + unique int id: @ruby_if, + int condition: @ruby_underscore_statement ref +); + +ruby_if_guard_def( + unique int id: @ruby_if_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_if_modifier_def( + unique int id: @ruby_if_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_in_def( + unique int id: @ruby_in, + int child: @ruby_underscore_arg ref +); + +ruby_in_clause_body( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int body: @ruby_then ref +); + +@ruby_in_clause_guard_type = @ruby_if_guard | @ruby_unless_guard + +ruby_in_clause_guard( + unique int ruby_in_clause: @ruby_in_clause ref, + unique int guard: @ruby_in_clause_guard_type ref +); + +ruby_in_clause_def( + unique int id: @ruby_in_clause, + int pattern: @ruby_underscore_pattern_top_expr_body ref +); + +@ruby_interpolation_child_type = @ruby_token_empty_statement | @ruby_underscore_nonlocal_variable | @ruby_underscore_statement + +#keyset[ruby_interpolation, index] +ruby_interpolation_child( + int ruby_interpolation: @ruby_interpolation ref, + int index: int ref, + unique int child: @ruby_interpolation_child_type ref +); + +ruby_interpolation_def( + unique int id: @ruby_interpolation +); + +ruby_keyword_parameter_value( + unique int ruby_keyword_parameter: @ruby_keyword_parameter ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_keyword_parameter_def( + unique int id: @ruby_keyword_parameter, + int name: @ruby_token_identifier ref +); + +@ruby_keyword_pattern_key_type = @ruby_string__ | @ruby_token_hash_key_symbol + +ruby_keyword_pattern_value( + unique int ruby_keyword_pattern: @ruby_keyword_pattern ref, + unique int value: @ruby_underscore_pattern_expr ref +); + +ruby_keyword_pattern_def( + unique int id: @ruby_keyword_pattern, + int key__: @ruby_keyword_pattern_key_type ref +); + +@ruby_lambda_body_type = @ruby_block | @ruby_do_block + +ruby_lambda_parameters( + unique int ruby_lambda: @ruby_lambda ref, + unique int parameters: @ruby_lambda_parameters ref +); + +ruby_lambda_def( + unique int id: @ruby_lambda, + int body: @ruby_lambda_body_type ref +); + +@ruby_lambda_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_lambda_parameters, index] +ruby_lambda_parameters_child( + int ruby_lambda_parameters: @ruby_lambda_parameters ref, + int index: int ref, + unique int child: @ruby_lambda_parameters_child_type ref +); + +ruby_lambda_parameters_def( + unique int id: @ruby_lambda_parameters +); + +@ruby_left_assignment_list_child_type = @ruby_destructured_left_assignment | @ruby_rest_assignment | @ruby_underscore_lhs + +#keyset[ruby_left_assignment_list, index] +ruby_left_assignment_list_child( + int ruby_left_assignment_list: @ruby_left_assignment_list ref, + int index: int ref, + unique int child: @ruby_left_assignment_list_child_type ref +); + +ruby_left_assignment_list_def( + unique int id: @ruby_left_assignment_list +); + +ruby_match_pattern_def( + unique int id: @ruby_match_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_method_body( + unique int ruby_method: @ruby_method ref, + unique int body: @ruby_method_body_type ref +); + +ruby_method_parameters( + unique int ruby_method: @ruby_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_method_def( + unique int id: @ruby_method, + int name: @ruby_underscore_method_name ref +); + +@ruby_method_parameters_child_type = @ruby_block_parameter | @ruby_destructured_parameter | @ruby_hash_splat_parameter | @ruby_keyword_parameter | @ruby_optional_parameter | @ruby_splat_parameter | @ruby_token_forward_parameter | @ruby_token_hash_splat_nil | @ruby_token_identifier + +#keyset[ruby_method_parameters, index] +ruby_method_parameters_child( + int ruby_method_parameters: @ruby_method_parameters ref, + int index: int ref, + unique int child: @ruby_method_parameters_child_type ref +); + +ruby_method_parameters_def( + unique int id: @ruby_method_parameters +); + +ruby_module_body( + unique int ruby_module: @ruby_module ref, + unique int body: @ruby_body_statement ref +); + +@ruby_module_name_type = @ruby_scope_resolution | @ruby_token_constant + +ruby_module_def( + unique int id: @ruby_module, + int name: @ruby_module_name_type ref +); + +ruby_next_child( + unique int ruby_next: @ruby_next ref, + unique int child: @ruby_argument_list ref +); + +ruby_next_def( + unique int id: @ruby_next +); + +case @ruby_operator_assignment.operator of + 0 = @ruby_operator_assignment_percentequal +| 1 = @ruby_operator_assignment_ampersandampersandequal +| 2 = @ruby_operator_assignment_ampersandequal +| 3 = @ruby_operator_assignment_starstarequal +| 4 = @ruby_operator_assignment_starequal +| 5 = @ruby_operator_assignment_plusequal +| 6 = @ruby_operator_assignment_minusequal +| 7 = @ruby_operator_assignment_slashequal +| 8 = @ruby_operator_assignment_langlelangleequal +| 9 = @ruby_operator_assignment_ranglerangleequal +| 10 = @ruby_operator_assignment_caretequal +| 11 = @ruby_operator_assignment_pipeequal +| 12 = @ruby_operator_assignment_pipepipeequal +; + + +@ruby_operator_assignment_right_type = @ruby_rescue_modifier | @ruby_underscore_expression + +ruby_operator_assignment_def( + unique int id: @ruby_operator_assignment, + int left: @ruby_underscore_lhs ref, + int operator: int ref, + int right: @ruby_operator_assignment_right_type ref +); + +ruby_optional_parameter_def( + unique int id: @ruby_optional_parameter, + int name: @ruby_token_identifier ref, + int value: @ruby_underscore_arg ref +); + +@ruby_pair_key_type = @ruby_string__ | @ruby_token_hash_key_symbol | @ruby_underscore_arg + +ruby_pair_value( + unique int ruby_pair: @ruby_pair ref, + unique int value: @ruby_underscore_arg ref +); + +ruby_pair_def( + unique int id: @ruby_pair, + int key__: @ruby_pair_key_type ref +); + +ruby_parenthesized_pattern_def( + unique int id: @ruby_parenthesized_pattern, + int child: @ruby_underscore_pattern_expr ref +); + +@ruby_parenthesized_statements_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_parenthesized_statements, index] +ruby_parenthesized_statements_child( + int ruby_parenthesized_statements: @ruby_parenthesized_statements ref, + int index: int ref, + unique int child: @ruby_parenthesized_statements_child_type ref +); + +ruby_parenthesized_statements_def( + unique int id: @ruby_parenthesized_statements +); + +@ruby_pattern_child_type = @ruby_splat_argument | @ruby_underscore_arg + +ruby_pattern_def( + unique int id: @ruby_pattern, + int child: @ruby_pattern_child_type ref +); + +@ruby_program_child_type = @ruby_token_empty_statement | @ruby_token_uninterpreted | @ruby_underscore_statement + +#keyset[ruby_program, index] +ruby_program_child( + int ruby_program: @ruby_program ref, + int index: int ref, + unique int child: @ruby_program_child_type ref +); + +ruby_program_def( + unique int id: @ruby_program +); + +@ruby_range_begin_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_begin( + unique int ruby_range: @ruby_range ref, + unique int begin: @ruby_range_begin_type ref +); + +@ruby_range_end_type = @ruby_underscore_arg | @ruby_underscore_pattern_primitive + +ruby_range_end( + unique int ruby_range: @ruby_range ref, + unique int end: @ruby_range_end_type ref +); + +case @ruby_range.operator of + 0 = @ruby_range_dotdot +| 1 = @ruby_range_dotdotdot +; + + +ruby_range_def( + unique int id: @ruby_range, + int operator: int ref +); + +@ruby_rational_child_type = @ruby_token_float | @ruby_token_integer + +ruby_rational_def( + unique int id: @ruby_rational, + int child: @ruby_rational_child_type ref +); + +ruby_redo_child( + unique int ruby_redo: @ruby_redo ref, + unique int child: @ruby_argument_list ref +); + +ruby_redo_def( + unique int id: @ruby_redo +); + +@ruby_regex_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_regex, index] +ruby_regex_child( + int ruby_regex: @ruby_regex ref, + int index: int ref, + unique int child: @ruby_regex_child_type ref +); + +ruby_regex_def( + unique int id: @ruby_regex +); + +ruby_rescue_body( + unique int ruby_rescue: @ruby_rescue ref, + unique int body: @ruby_then ref +); + +ruby_rescue_exceptions( + unique int ruby_rescue: @ruby_rescue ref, + unique int exceptions: @ruby_exceptions ref +); + +ruby_rescue_variable( + unique int ruby_rescue: @ruby_rescue ref, + unique int variable: @ruby_exception_variable ref +); + +ruby_rescue_def( + unique int id: @ruby_rescue +); + +@ruby_rescue_modifier_body_type = @ruby_underscore_arg | @ruby_underscore_statement + +ruby_rescue_modifier_def( + unique int id: @ruby_rescue_modifier, + int body: @ruby_rescue_modifier_body_type ref, + int handler: @ruby_underscore_expression ref +); + +ruby_rest_assignment_child( + unique int ruby_rest_assignment: @ruby_rest_assignment ref, + unique int child: @ruby_underscore_lhs ref +); + +ruby_rest_assignment_def( + unique int id: @ruby_rest_assignment +); + +ruby_retry_child( + unique int ruby_retry: @ruby_retry ref, + unique int child: @ruby_argument_list ref +); + +ruby_retry_def( + unique int id: @ruby_retry +); + +ruby_return_child( + unique int ruby_return: @ruby_return ref, + unique int child: @ruby_argument_list ref +); + +ruby_return_def( + unique int id: @ruby_return +); + +@ruby_right_assignment_list_child_type = @ruby_splat_argument | @ruby_underscore_arg + +#keyset[ruby_right_assignment_list, index] +ruby_right_assignment_list_child( + int ruby_right_assignment_list: @ruby_right_assignment_list ref, + int index: int ref, + unique int child: @ruby_right_assignment_list_child_type ref +); + +ruby_right_assignment_list_def( + unique int id: @ruby_right_assignment_list +); + +@ruby_scope_resolution_scope_type = @ruby_underscore_pattern_constant | @ruby_underscore_primary + +ruby_scope_resolution_scope( + unique int ruby_scope_resolution: @ruby_scope_resolution ref, + unique int scope: @ruby_scope_resolution_scope_type ref +); + +ruby_scope_resolution_def( + unique int id: @ruby_scope_resolution, + int name: @ruby_token_constant ref +); + +ruby_setter_def( + unique int id: @ruby_setter, + int name: @ruby_token_identifier ref +); + +ruby_singleton_class_body( + unique int ruby_singleton_class: @ruby_singleton_class ref, + unique int body: @ruby_body_statement ref +); + +ruby_singleton_class_def( + unique int id: @ruby_singleton_class, + int value: @ruby_underscore_arg ref +); + +@ruby_singleton_method_body_type = @ruby_body_statement | @ruby_rescue_modifier | @ruby_underscore_arg + +ruby_singleton_method_body( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int body: @ruby_singleton_method_body_type ref +); + +@ruby_singleton_method_object_type = @ruby_underscore_arg | @ruby_underscore_variable + +ruby_singleton_method_parameters( + unique int ruby_singleton_method: @ruby_singleton_method ref, + unique int parameters: @ruby_method_parameters ref +); + +ruby_singleton_method_def( + unique int id: @ruby_singleton_method, + int name: @ruby_underscore_method_name ref, + int object: @ruby_singleton_method_object_type ref +); + +ruby_splat_argument_child( + unique int ruby_splat_argument: @ruby_splat_argument ref, + unique int child: @ruby_underscore_arg ref +); + +ruby_splat_argument_def( + unique int id: @ruby_splat_argument +); + +ruby_splat_parameter_name( + unique int ruby_splat_parameter: @ruby_splat_parameter ref, + unique int name: @ruby_token_identifier ref +); + +ruby_splat_parameter_def( + unique int id: @ruby_splat_parameter +); + +@ruby_string_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_string__, index] +ruby_string_child( + int ruby_string__: @ruby_string__ ref, + int index: int ref, + unique int child: @ruby_string_child_type ref +); + +ruby_string_def( + unique int id: @ruby_string__ +); + +#keyset[ruby_string_array, index] +ruby_string_array_child( + int ruby_string_array: @ruby_string_array ref, + int index: int ref, + unique int child: @ruby_bare_string ref +); + +ruby_string_array_def( + unique int id: @ruby_string_array +); + +@ruby_subshell_child_type = @ruby_interpolation | @ruby_token_escape_sequence | @ruby_token_string_content + +#keyset[ruby_subshell, index] +ruby_subshell_child( + int ruby_subshell: @ruby_subshell ref, + int index: int ref, + unique int child: @ruby_subshell_child_type ref +); + +ruby_subshell_def( + unique int id: @ruby_subshell +); + +ruby_superclass_def( + unique int id: @ruby_superclass, + int child: @ruby_underscore_expression ref +); + +#keyset[ruby_symbol_array, index] +ruby_symbol_array_child( + int ruby_symbol_array: @ruby_symbol_array ref, + int index: int ref, + unique int child: @ruby_bare_symbol ref +); + +ruby_symbol_array_def( + unique int id: @ruby_symbol_array +); + +ruby_test_pattern_def( + unique int id: @ruby_test_pattern, + int pattern: @ruby_underscore_pattern_top_expr_body ref, + int value: @ruby_underscore_arg ref +); + +@ruby_then_child_type = @ruby_token_empty_statement | @ruby_underscore_statement + +#keyset[ruby_then, index] +ruby_then_child( + int ruby_then: @ruby_then ref, + int index: int ref, + unique int child: @ruby_then_child_type ref +); + +ruby_then_def( + unique int id: @ruby_then +); + +@ruby_unary_operand_type = @ruby_parenthesized_statements | @ruby_underscore_expression | @ruby_underscore_simple_numeric + +case @ruby_unary.operator of + 0 = @ruby_unary_bang +| 1 = @ruby_unary_plus +| 2 = @ruby_unary_minus +| 3 = @ruby_unary_definedquestion +| 4 = @ruby_unary_not +| 5 = @ruby_unary_tilde +; + + +ruby_unary_def( + unique int id: @ruby_unary, + int operand: @ruby_unary_operand_type ref, + int operator: int ref +); + +#keyset[ruby_undef, index] +ruby_undef_child( + int ruby_undef: @ruby_undef ref, + int index: int ref, + unique int child: @ruby_underscore_method_name ref +); + +ruby_undef_def( + unique int id: @ruby_undef +); + +@ruby_unless_alternative_type = @ruby_else | @ruby_elsif + +ruby_unless_alternative( + unique int ruby_unless: @ruby_unless ref, + unique int alternative: @ruby_unless_alternative_type ref +); + +ruby_unless_consequence( + unique int ruby_unless: @ruby_unless ref, + unique int consequence: @ruby_then ref +); + +ruby_unless_def( + unique int id: @ruby_unless, + int condition: @ruby_underscore_statement ref +); + +ruby_unless_guard_def( + unique int id: @ruby_unless_guard, + int condition: @ruby_underscore_expression ref +); + +ruby_unless_modifier_def( + unique int id: @ruby_unless_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_until_def( + unique int id: @ruby_until, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_until_modifier_def( + unique int id: @ruby_until_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +@ruby_variable_reference_pattern_name_type = @ruby_token_identifier | @ruby_underscore_nonlocal_variable + +ruby_variable_reference_pattern_def( + unique int id: @ruby_variable_reference_pattern, + int name: @ruby_variable_reference_pattern_name_type ref +); + +ruby_when_body( + unique int ruby_when: @ruby_when ref, + unique int body: @ruby_then ref +); + +#keyset[ruby_when, index] +ruby_when_pattern( + int ruby_when: @ruby_when ref, + int index: int ref, + unique int pattern: @ruby_pattern ref +); + +ruby_when_def( + unique int id: @ruby_when +); + +ruby_while_def( + unique int id: @ruby_while, + int body: @ruby_do ref, + int condition: @ruby_underscore_statement ref +); + +ruby_while_modifier_def( + unique int id: @ruby_while_modifier, + int body: @ruby_underscore_statement ref, + int condition: @ruby_underscore_expression ref +); + +ruby_yield_child( + unique int ruby_yield: @ruby_yield ref, + unique int child: @ruby_argument_list ref +); + +ruby_yield_def( + unique int id: @ruby_yield +); + +ruby_tokeninfo( + unique int id: @ruby_token, + int kind: int ref, + string value: string ref +); + +case @ruby_token.kind of + 0 = @ruby_reserved_word +| 1 = @ruby_token_character +| 2 = @ruby_token_class_variable +| 3 = @ruby_token_comment +| 4 = @ruby_token_constant +| 5 = @ruby_token_empty_statement +| 6 = @ruby_token_encoding +| 7 = @ruby_token_escape_sequence +| 8 = @ruby_token_false +| 9 = @ruby_token_file +| 10 = @ruby_token_float +| 11 = @ruby_token_forward_argument +| 12 = @ruby_token_forward_parameter +| 13 = @ruby_token_global_variable +| 14 = @ruby_token_hash_key_symbol +| 15 = @ruby_token_hash_splat_nil +| 16 = @ruby_token_heredoc_beginning +| 17 = @ruby_token_heredoc_content +| 18 = @ruby_token_heredoc_end +| 19 = @ruby_token_identifier +| 20 = @ruby_token_instance_variable +| 21 = @ruby_token_integer +| 22 = @ruby_token_line +| 23 = @ruby_token_nil +| 24 = @ruby_token_operator +| 25 = @ruby_token_self +| 26 = @ruby_token_simple_symbol +| 27 = @ruby_token_string_content +| 28 = @ruby_token_super +| 29 = @ruby_token_true +| 30 = @ruby_token_uninterpreted +; + + +@ruby_ast_node = @ruby_alias | @ruby_alternative_pattern | @ruby_argument_list | @ruby_array | @ruby_array_pattern | @ruby_as_pattern | @ruby_assignment | @ruby_bare_string | @ruby_bare_symbol | @ruby_begin | @ruby_begin_block | @ruby_binary | @ruby_block | @ruby_block_argument | @ruby_block_body | @ruby_block_parameter | @ruby_block_parameters | @ruby_body_statement | @ruby_break | @ruby_call | @ruby_case__ | @ruby_case_match | @ruby_chained_string | @ruby_class | @ruby_complex | @ruby_conditional | @ruby_delimited_symbol | @ruby_destructured_left_assignment | @ruby_destructured_parameter | @ruby_do | @ruby_do_block | @ruby_element_reference | @ruby_else | @ruby_elsif | @ruby_end_block | @ruby_ensure | @ruby_exception_variable | @ruby_exceptions | @ruby_expression_reference_pattern | @ruby_find_pattern | @ruby_for | @ruby_hash | @ruby_hash_pattern | @ruby_hash_splat_argument | @ruby_hash_splat_parameter | @ruby_heredoc_body | @ruby_if | @ruby_if_guard | @ruby_if_modifier | @ruby_in | @ruby_in_clause | @ruby_interpolation | @ruby_keyword_parameter | @ruby_keyword_pattern | @ruby_lambda | @ruby_lambda_parameters | @ruby_left_assignment_list | @ruby_match_pattern | @ruby_method | @ruby_method_parameters | @ruby_module | @ruby_next | @ruby_operator_assignment | @ruby_optional_parameter | @ruby_pair | @ruby_parenthesized_pattern | @ruby_parenthesized_statements | @ruby_pattern | @ruby_program | @ruby_range | @ruby_rational | @ruby_redo | @ruby_regex | @ruby_rescue | @ruby_rescue_modifier | @ruby_rest_assignment | @ruby_retry | @ruby_return | @ruby_right_assignment_list | @ruby_scope_resolution | @ruby_setter | @ruby_singleton_class | @ruby_singleton_method | @ruby_splat_argument | @ruby_splat_parameter | @ruby_string__ | @ruby_string_array | @ruby_subshell | @ruby_superclass | @ruby_symbol_array | @ruby_test_pattern | @ruby_then | @ruby_token | @ruby_unary | @ruby_undef | @ruby_unless | @ruby_unless_guard | @ruby_unless_modifier | @ruby_until | @ruby_until_modifier | @ruby_variable_reference_pattern | @ruby_when | @ruby_while | @ruby_while_modifier | @ruby_yield + +ruby_ast_node_location( + unique int node: @ruby_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +ruby_ast_node_parent( + unique int node: @ruby_ast_node ref, + int parent: @ruby_ast_node ref, + int parent_index: int ref +); + +/*- Erb dbscheme -*/ +erb_comment_directive_child( + unique int erb_comment_directive: @erb_comment_directive ref, + unique int child: @erb_token_comment ref +); + +erb_comment_directive_def( + unique int id: @erb_comment_directive +); + +erb_directive_child( + unique int erb_directive: @erb_directive ref, + unique int child: @erb_token_code ref +); + +erb_directive_def( + unique int id: @erb_directive +); + +erb_graphql_directive_child( + unique int erb_graphql_directive: @erb_graphql_directive ref, + unique int child: @erb_token_code ref +); + +erb_graphql_directive_def( + unique int id: @erb_graphql_directive +); + +erb_output_directive_child( + unique int erb_output_directive: @erb_output_directive ref, + unique int child: @erb_token_code ref +); + +erb_output_directive_def( + unique int id: @erb_output_directive +); + +@erb_template_child_type = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_token_content + +#keyset[erb_template, index] +erb_template_child( + int erb_template: @erb_template ref, + int index: int ref, + unique int child: @erb_template_child_type ref +); + +erb_template_def( + unique int id: @erb_template +); + +erb_tokeninfo( + unique int id: @erb_token, + int kind: int ref, + string value: string ref +); + +case @erb_token.kind of + 0 = @erb_reserved_word +| 1 = @erb_token_code +| 2 = @erb_token_comment +| 3 = @erb_token_content +; + + +@erb_ast_node = @erb_comment_directive | @erb_directive | @erb_graphql_directive | @erb_output_directive | @erb_template | @erb_token + +erb_ast_node_location( + unique int node: @erb_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +erb_ast_node_parent( + unique int node: @erb_ast_node ref, + int parent: @erb_ast_node ref, + int parent_index: int ref +); + diff --git a/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_location.ql b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_location.ql new file mode 100644 index 000000000000..09f30acf9731 --- /dev/null +++ b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_location.ql @@ -0,0 +1,11 @@ +class AstNode extends @ruby_ast_node { + string toString() { none() } +} + +class Location extends @location_default { + string toString() { none() } +} + +from AstNode n, Location location +where ruby_ast_node_info(n, _, _, location) +select n, location diff --git a/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_parent.ql b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_parent.ql new file mode 100644 index 000000000000..024ed9ee6b77 --- /dev/null +++ b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/ruby_ast_node_parent.ql @@ -0,0 +1,7 @@ +class AstNode extends @ruby_ast_node { + string toString() { none() } +} + +from AstNode n, int i, AstNode parent +where ruby_ast_node_info(n, parent, i, _) +select n, parent, i diff --git a/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/upgrade.properties b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/upgrade.properties new file mode 100644 index 000000000000..ddac0258abe2 --- /dev/null +++ b/ruby/ql/lib/upgrades/f9f0f4023e433184fda76f595247bf448b782135/upgrade.properties @@ -0,0 +1,8 @@ +description: Split up `ruby_ast_node_info` into `ruby_ast_node_location` and `ruby_ast_node_parent` (and same for `erb`) +compatibility: backwards +erb_ast_node_location.rel: run erb_ast_node_location.qlo +erb_ast_node_parent.rel: run erb_ast_node_parent.qlo +erb_ast_node_info.rel: delete +ruby_ast_node_location.rel: run ruby_ast_node_location.qlo +ruby_ast_node_parent.rel: run ruby_ast_node_parent.qlo +ruby_ast_node_info.rel: delete From 31e04631d1dfe4d0c9b3e627a136c3c6ed854120 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 19 Mar 2024 11:25:00 +0100 Subject: [PATCH 357/731] QL4QL: Regenerate DB scheme and stats --- .../src/codeql_ql/ast/internal/TreeSitter.qll | 24 +- ql/ql/src/ql.dbscheme | 48 +- ql/ql/src/ql.dbscheme.stats | 8738 ++++++++--------- 3 files changed, 4352 insertions(+), 4458 deletions(-) diff --git a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll index 76e96979cfda..877f676e3964 100644 --- a/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll +++ b/ql/ql/src/codeql_ql/ast/internal/TreeSitter.qll @@ -12,13 +12,13 @@ module QL { string toString() { result = this.getAPrimaryQlClass() } /** Gets the location of this element. */ - final L::Location getLocation() { ql_ast_node_info(this, _, _, result) } + final L::Location getLocation() { ql_ast_node_location(this, result) } /** Gets the parent of this element. */ - final AstNode getParent() { ql_ast_node_info(this, result, _, _) } + final AstNode getParent() { ql_ast_node_parent(this, result, _) } /** Gets the index of this node among the children of its parent. */ - final int getParentIndex() { ql_ast_node_info(this, _, result, _) } + final int getParentIndex() { ql_ast_node_parent(this, _, result) } /** Gets a field or child node of this node. */ AstNode getAFieldOrChild() { none() } @@ -1282,13 +1282,13 @@ module Dbscheme { string toString() { result = this.getAPrimaryQlClass() } /** Gets the location of this element. */ - final L::Location getLocation() { dbscheme_ast_node_info(this, _, _, result) } + final L::Location getLocation() { dbscheme_ast_node_location(this, result) } /** Gets the parent of this element. */ - final AstNode getParent() { dbscheme_ast_node_info(this, result, _, _) } + final AstNode getParent() { dbscheme_ast_node_parent(this, result, _) } /** Gets the index of this node among the children of its parent. */ - final int getParentIndex() { dbscheme_ast_node_info(this, _, result, _) } + final int getParentIndex() { dbscheme_ast_node_parent(this, _, result) } /** Gets a field or child node of this node. */ AstNode getAFieldOrChild() { none() } @@ -1618,13 +1618,13 @@ module Blame { string toString() { result = this.getAPrimaryQlClass() } /** Gets the location of this element. */ - final L::Location getLocation() { blame_ast_node_info(this, _, _, result) } + final L::Location getLocation() { blame_ast_node_location(this, result) } /** Gets the parent of this element. */ - final AstNode getParent() { blame_ast_node_info(this, result, _, _) } + final AstNode getParent() { blame_ast_node_parent(this, result, _) } /** Gets the index of this node among the children of its parent. */ - final int getParentIndex() { blame_ast_node_info(this, _, result, _) } + final int getParentIndex() { blame_ast_node_parent(this, _, result) } /** Gets a field or child node of this node. */ AstNode getAFieldOrChild() { none() } @@ -1731,13 +1731,13 @@ module JSON { string toString() { result = this.getAPrimaryQlClass() } /** Gets the location of this element. */ - final L::Location getLocation() { json_ast_node_info(this, _, _, result) } + final L::Location getLocation() { json_ast_node_location(this, result) } /** Gets the parent of this element. */ - final AstNode getParent() { json_ast_node_info(this, result, _, _) } + final AstNode getParent() { json_ast_node_parent(this, result, _) } /** Gets the index of this node among the children of its parent. */ - final int getParentIndex() { json_ast_node_info(this, _, result, _) } + final int getParentIndex() { json_ast_node_parent(this, _, result) } /** Gets a field or child node of this node. */ AstNode getAFieldOrChild() { none() } diff --git a/ql/ql/src/ql.dbscheme b/ql/ql/src/ql.dbscheme index 97aa35b9ef51..21aebc3b4313 100644 --- a/ql/ql/src/ql.dbscheme +++ b/ql/ql/src/ql.dbscheme @@ -972,14 +972,16 @@ case @ql_token.kind of @ql_ast_node = @ql_add_expr | @ql_aggregate | @ql_annot_arg | @ql_annotation | @ql_arityless_predicate_expr | @ql_as_expr | @ql_as_exprs | @ql_body | @ql_bool | @ql_call_body | @ql_call_or_unqual_agg_expr | @ql_charpred | @ql_class_member | @ql_classless_predicate | @ql_comp_term | @ql_conjunction | @ql_dataclass | @ql_datatype | @ql_datatype_branch | @ql_datatype_branches | @ql_disjunction | @ql_expr_aggregate_body | @ql_expr_annotation | @ql_field | @ql_full_aggregate_body | @ql_higher_order_term | @ql_if_term | @ql_implication | @ql_import_directive | @ql_import_module_expr | @ql_in_expr | @ql_instance_of | @ql_literal | @ql_member_predicate | @ql_module | @ql_module_alias_body | @ql_module_expr | @ql_module_instantiation | @ql_module_member | @ql_module_name | @ql_module_param | @ql_mul_expr | @ql_negation | @ql_order_by | @ql_order_bys | @ql_par_expr | @ql_predicate_alias_body | @ql_predicate_expr | @ql_prefix_cast | @ql_ql | @ql_qualified_expr | @ql_qualified_rhs | @ql_quantified | @ql_range | @ql_select | @ql_set_literal | @ql_signature_expr | @ql_special_call | @ql_super_ref | @ql_token | @ql_type_alias_body | @ql_type_expr | @ql_type_union_body | @ql_unary_expr | @ql_unqual_agg_body | @ql_var_decl | @ql_var_name | @ql_variable -@ql_ast_node_parent = @file | @ql_ast_node +ql_ast_node_location( + unique int node: @ql_ast_node ref, + int loc: @location_default ref +); #keyset[parent, parent_index] -ql_ast_node_info( +ql_ast_node_parent( unique int node: @ql_ast_node ref, - int parent: @ql_ast_node_parent ref, - int parent_index: int ref, - int loc: @location_default ref + int parent: @ql_ast_node ref, + int parent_index: int ref ); /*- Dbscheme dbscheme -*/ @@ -1159,14 +1161,16 @@ case @dbscheme_token.kind of @dbscheme_ast_node = @dbscheme_annotation | @dbscheme_args_annotation | @dbscheme_branch | @dbscheme_case_decl | @dbscheme_col_type | @dbscheme_column | @dbscheme_dbscheme | @dbscheme_entry | @dbscheme_repr_type | @dbscheme_table | @dbscheme_table_name | @dbscheme_token | @dbscheme_union_decl -@dbscheme_ast_node_parent = @dbscheme_ast_node | @file +dbscheme_ast_node_location( + unique int node: @dbscheme_ast_node ref, + int loc: @location_default ref +); #keyset[parent, parent_index] -dbscheme_ast_node_info( +dbscheme_ast_node_parent( unique int node: @dbscheme_ast_node ref, - int parent: @dbscheme_ast_node_parent ref, - int parent_index: int ref, - int loc: @location_default ref + int parent: @dbscheme_ast_node ref, + int parent_index: int ref ); /*- Blame dbscheme -*/ @@ -1222,14 +1226,16 @@ case @blame_token.kind of @blame_ast_node = @blame_blame_entry | @blame_blame_info | @blame_file_entry | @blame_token -@blame_ast_node_parent = @blame_ast_node | @file +blame_ast_node_location( + unique int node: @blame_ast_node ref, + int loc: @location_default ref +); #keyset[parent, parent_index] -blame_ast_node_info( +blame_ast_node_parent( unique int node: @blame_ast_node ref, - int parent: @blame_ast_node_parent ref, - int parent_index: int ref, - int loc: @location_default ref + int parent: @blame_ast_node ref, + int parent_index: int ref ); /*- JSON dbscheme -*/ @@ -1304,13 +1310,15 @@ case @json_token.kind of @json_ast_node = @json_array | @json_document | @json_object | @json_pair | @json_string__ | @json_token -@json_ast_node_parent = @file | @json_ast_node +json_ast_node_location( + unique int node: @json_ast_node ref, + int loc: @location_default ref +); #keyset[parent, parent_index] -json_ast_node_info( +json_ast_node_parent( unique int node: @json_ast_node ref, - int parent: @json_ast_node_parent ref, - int parent_index: int ref, - int loc: @location_default ref + int parent: @json_ast_node ref, + int parent_index: int ref ); diff --git a/ql/ql/src/ql.dbscheme.stats b/ql/ql/src/ql.dbscheme.stats index 61923351ee97..1e992f7d7a40 100644 --- a/ql/ql/src/ql.dbscheme.stats +++ b/ql/ql/src/ql.dbscheme.stats @@ -29,115 +29,115 @@ </e> <e> <k>@dbscheme_annotation</k> - <v>20670</v> + <v>30564</v> </e> <e> <k>@dbscheme_args_annotation</k> - <v>20661</v> + <v>30555</v> </e> <e> <k>@dbscheme_branch</k> - <v>116911</v> + <v>151025</v> </e> <e> <k>@dbscheme_case_decl</k> - <v>4372</v> + <v>5423</v> </e> <e> <k>@dbscheme_col_type</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>@dbscheme_column</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>@dbscheme_dbscheme</k> - <v>532</v> + <v>686</v> </e> <e> <k>@dbscheme_entry</k> - <v>169630</v> + <v>230044</v> </e> <e> <k>@dbscheme_repr_type</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>@dbscheme_reserved_word</k> - <v>1309648</v> + <v>1756569</v> </e> <e> <k>@dbscheme_table</k> - <v>105934</v> + <v>146537</v> </e> <e> <k>@dbscheme_table_name</k> - <v>105934</v> + <v>146537</v> </e> <e> <k>@dbscheme_token_annot_name</k> - <v>20670</v> + <v>30564</v> </e> <e> <k>@dbscheme_token_block_comment</k> - <v>17513</v> + <v>22060</v> </e> <e> <k>@dbscheme_token_boolean</k> - <v>1440</v> + <v>2146</v> </e> <e> <k>@dbscheme_token_date</k> - <v>1042</v> + <v>1170</v> </e> <e> <k>@dbscheme_token_dbtype</k> - <v>565153</v> + <v>750840</v> </e> <e> <k>@dbscheme_token_float</k> - <v>2354</v> + <v>2962</v> </e> <e> <k>@dbscheme_token_int</k> - <v>258872</v> + <v>350777</v> </e> <e> <k>@dbscheme_token_integer</k> - <v>124608</v> + <v>158986</v> </e> <e> <k>@dbscheme_token_line_comment</k> - <v>37863</v> + <v>62355</v> </e> <e> <k>@dbscheme_token_qldoc</k> - <v>8004</v> + <v>10956</v> </e> <e> <k>@dbscheme_token_ref</k> - <v>210468</v> + <v>281648</v> </e> <e> <k>@dbscheme_token_simple_id</k> - <v>397838</v> + <v>543204</v> </e> <e> <k>@dbscheme_token_string</k> - <v>51435</v> + <v>67865</v> </e> <e> <k>@dbscheme_token_unique</k> - <v>75701</v> + <v>102289</v> </e> <e> <k>@dbscheme_token_varchar</k> - <v>7697</v> + <v>7961</v> </e> <e> <k>@dbscheme_union_decl</k> - <v>51790</v> + <v>67798</v> </e> <e> <k>@diagnostic_debug</k> @@ -157,255 +157,255 @@ </e> <e> <k>@file</k> - <v>11682</v> + <v>12283</v> </e> <e> <k>@folder</k> - <v>3982</v> + <v>4402</v> </e> <e> <k>@json_array</k> - <v>481</v> + <v>2026</v> </e> <e> <k>@json_document</k> - <v>272</v> + <v>324</v> </e> <e> <k>@json_object</k> - <v>787</v> + <v>5034</v> </e> <e> <k>@json_pair</k> - <v>2223</v> + <v>12461</v> </e> <e> <k>@json_reserved_word</k> - <v>19369</v> + <v>82515</v> </e> <e> <k>@json_string__</k> - <v>5469</v> + <v>22176</v> </e> <e> <k>@json_token_comment</k> - <v>18</v> + <v>19</v> </e> <e> <k>@json_token_false</k> - <v>259</v> + <v>607</v> </e> <e> <k>@json_token_null</k> - <v>106</v> + <v>248</v> </e> <e> <k>@json_token_number</k> - <v>27</v> + <v>71</v> </e> <e> <k>@json_token_string_content</k> - <v>5465</v> + <v>22171</v> </e> <e> <k>@json_token_true</k> - <v>246</v> + <v>978</v> </e> <e> <k>@location_default</k> - <v>8479546</v> + <v>9617371</v> </e> <e> <k>@ql_add_expr</k> - <v>14857</v> + <v>13786</v> </e> <e> <k>@ql_aggregate</k> - <v>9694</v> + <v>9053</v> </e> <e> <k>@ql_annot_arg</k> - <v>6094</v> + <v>4043</v> </e> <e> <k>@ql_annotation</k> - <v>72771</v> + <v>65278</v> </e> <e> <k>@ql_arityless_predicate_expr</k> - <v>67354</v> + <v>58107</v> </e> <e> <k>@ql_as_expr</k> - <v>19448</v> + <v>20508</v> </e> <e> <k>@ql_as_exprs</k> - <v>8242</v> + <v>8493</v> </e> <e> <k>@ql_body</k> - <v>70726</v> + <v>65826</v> </e> <e> <k>@ql_bool</k> - <v>5039</v> + <v>4274</v> </e> <e> <k>@ql_call_body</k> - <v>66692</v> + <v>57368</v> </e> <e> <k>@ql_call_or_unqual_agg_expr</k> - <v>66692</v> + <v>57368</v> </e> <e> <k>@ql_charpred</k> - <v>12588</v> + <v>12088</v> </e> <e> <k>@ql_class_member</k> - <v>84646</v> + <v>79133</v> </e> <e> <k>@ql_classless_predicate</k> - <v>24640</v> + <v>23253</v> </e> <e> <k>@ql_comp_term</k> - <v>138784</v> + <v>140334</v> </e> <e> <k>@ql_conjunction</k> - <v>80925</v> + <v>76308</v> </e> <e> <k>@ql_dataclass</k> - <v>23834</v> + <v>22563</v> </e> <e> <k>@ql_datatype</k> - <v>809</v> + <v>548</v> </e> <e> <k>@ql_datatype_branch</k> - <v>3437</v> + <v>2719</v> </e> <e> <k>@ql_datatype_branches</k> - <v>809</v> + <v>548</v> </e> <e> <k>@ql_disjunction</k> - <v>40259</v> + <v>44890</v> </e> <e> <k>@ql_expr_aggregate_body</k> - <v>1293</v> + <v>1216</v> </e> <e> <k>@ql_expr_annotation</k> - <v>1328</v> + <v>601</v> </e> <e> <k>@ql_field</k> - <v>4149</v> + <v>3721</v> </e> <e> <k>@ql_full_aggregate_body</k> - <v>6714</v> + <v>6356</v> </e> <e> <k>@ql_higher_order_term</k> - <v>105</v> + <v>77</v> </e> <e> <k>@ql_if_term</k> - <v>3226</v> + <v>2953</v> </e> <e> <k>@ql_implication</k> - <v>87</v> + <v>101</v> </e> <e> <k>@ql_import_directive</k> - <v>24818</v> + <v>25764</v> </e> <e> <k>@ql_import_module_expr</k> - <v>24818</v> + <v>25764</v> </e> <e> <k>@ql_in_expr</k> - <v>1003</v> + <v>1037</v> </e> <e> <k>@ql_instance_of</k> - <v>17128</v> + <v>15913</v> </e> <e> <k>@ql_literal</k> - <v>98847</v> + <v>109390</v> </e> <e> <k>@ql_member_predicate</k> - <v>47549</v> + <v>43952</v> </e> <e> <k>@ql_module</k> - <v>3916</v> + <v>4567</v> </e> <e> <k>@ql_module_alias_body</k> - <v>725</v> + <v>917</v> </e> <e> <k>@ql_module_expr</k> - <v>72503</v> + <v>76399</v> </e> <e> <k>@ql_module_instantiation</k> - <v>1043</v> + <v>1740</v> </e> <e> <k>@ql_module_member</k> - <v>119591</v> + <v>118178</v> </e> <e> <k>@ql_module_name</k> - <v>6324</v> + <v>7606</v> </e> <e> <k>@ql_module_param</k> - <v>299</v> + <v>266</v> </e> <e> <k>@ql_mul_expr</k> - <v>631</v> + <v>585</v> </e> <e> <k>@ql_negation</k> - <v>12010</v> + <v>11727</v> </e> <e> <k>@ql_order_by</k> - <v>1098</v> + <v>1067</v> </e> <e> <k>@ql_order_bys</k> - <v>674</v> + <v>661</v> </e> <e> <k>@ql_par_expr</k> - <v>6038</v> + <v>5799</v> </e> <e> <k>@ql_predicate_alias_body</k> - <v>329</v> + <v>372</v> </e> <e> <k>@ql_predicate_expr</k> - <v>662</v> + <v>739</v> </e> <e> <k>@ql_prefix_cast</k> @@ -413,183 +413,183 @@ </e> <e> <k>@ql_ql</k> - <v>10785</v> + <v>11167</v> </e> <e> <k>@ql_qualified_expr</k> - <v>168511</v> + <v>165157</v> </e> <e> <k>@ql_qualified_rhs</k> - <v>168511</v> + <v>165157</v> </e> <e> <k>@ql_quantified</k> - <v>26111</v> + <v>24227</v> </e> <e> <k>@ql_range</k> - <v>417</v> + <v>365</v> </e> <e> <k>@ql_reserved_word</k> - <v>1966059</v> + <v>1875319</v> </e> <e> <k>@ql_select</k> - <v>5640</v> + <v>5989</v> </e> <e> <k>@ql_set_literal</k> - <v>3557</v> + <v>4014</v> </e> <e> <k>@ql_signature_expr</k> - <v>2248</v> + <v>3709</v> </e> <e> <k>@ql_special_call</k> - <v>4863</v> + <v>4424</v> </e> <e> <k>@ql_super_ref</k> - <v>2444</v> + <v>2901</v> </e> <e> <k>@ql_token_addop</k> - <v>14857</v> + <v>13786</v> </e> <e> <k>@ql_token_agg_id</k> - <v>9694</v> + <v>9053</v> </e> <e> <k>@ql_token_annot_name</k> - <v>75427</v> + <v>66480</v> </e> <e> <k>@ql_token_block_comment</k> - <v>1061</v> + <v>992</v> </e> <e> <k>@ql_token_class_name</k> - <v>224655</v> + <v>204253</v> </e> <e> <k>@ql_token_closure</k> - <v>2123</v> + <v>2234</v> </e> <e> <k>@ql_token_compop</k> - <v>138784</v> + <v>140334</v> </e> <e> <k>@ql_token_dbtype</k> - <v>3604</v> + <v>3766</v> </e> <e> <k>@ql_token_direction</k> - <v>200</v> + <v>205</v> </e> <e> <k>@ql_token_empty</k> - <v>2683</v> + <v>2344</v> </e> <e> <k>@ql_token_false</k> - <v>2391</v> + <v>1973</v> </e> <e> <k>@ql_token_float</k> - <v>296</v> + <v>305</v> </e> <e> <k>@ql_token_integer</k> - <v>20738</v> + <v>21612</v> </e> <e> <k>@ql_token_line_comment</k> - <v>20706</v> + <v>20888</v> </e> <e> <k>@ql_token_literal_id</k> - <v>67459</v> + <v>58184</v> </e> <e> <k>@ql_token_mulop</k> - <v>631</v> + <v>585</v> </e> <e> <k>@ql_token_predicate</k> - <v>28901</v> + <v>26200</v> </e> <e> <k>@ql_token_predicate_name</k> - <v>229368</v> + <v>221079</v> </e> <e> <k>@ql_token_primitive_type</k> - <v>49384</v> + <v>47956</v> </e> <e> <k>@ql_token_qldoc</k> - <v>56786</v> + <v>55406</v> </e> <e> <k>@ql_token_quantifier</k> - <v>26111</v> + <v>24227</v> </e> <e> <k>@ql_token_result</k> - <v>55181</v> + <v>52493</v> </e> <e> <k>@ql_token_simple_id</k> - <v>542286</v> + <v>512064</v> </e> <e> <k>@ql_token_special_id</k> - <v>4863</v> + <v>4424</v> </e> <e> <k>@ql_token_string</k> - <v>73436</v> + <v>83938</v> </e> <e> <k>@ql_token_super</k> - <v>2444</v> + <v>2901</v> </e> <e> <k>@ql_token_this</k> - <v>53091</v> + <v>50826</v> </e> <e> <k>@ql_token_true</k> - <v>2648</v> + <v>2301</v> </e> <e> <k>@ql_token_underscore</k> - <v>20351</v> + <v>17184</v> </e> <e> <k>@ql_token_unop</k> - <v>1171</v> + <v>1158</v> </e> <e> <k>@ql_type_alias_body</k> - <v>1245</v> + <v>817</v> </e> <e> <k>@ql_type_expr</k> - <v>236975</v> + <v>218057</v> </e> <e> <k>@ql_type_union_body</k> - <v>249</v> + <v>253</v> </e> <e> <k>@ql_unary_expr</k> - <v>1171</v> + <v>1158</v> </e> <e> <k>@ql_unqual_agg_body</k> @@ -597,15 +597,15 @@ </e> <e> <k>@ql_var_decl</k> - <v>129441</v> + <v>114137</v> </e> <e> <k>@ql_var_name</k> - <v>415356</v> + <v>380908</v> </e> <e> <k>@ql_variable</k> - <v>393587</v> + <v>369462</v> </e> <e> <k>@yaml_alias_node</k> @@ -617,33 +617,25 @@ </e> <e> <k>@yaml_mapping_node</k> - <v>160</v> + <v>186</v> </e> <e> <k>@yaml_scalar_node</k> - <v>1136</v> + <v>1481</v> </e> <e> <k>@yaml_sequence_node</k> - <v>52</v> + <v>59</v> </e> </typesizes> <stats><relation> - <name>blame_ast_node_info</name> + <name>blame_ast_node_location</name> <cardinality>0</cardinality> <columnsizes> <e> <k>node</k> <v>0</v> </e> - <e> - <k>parent</k> - <v>0</v> - </e> - <e> - <k>parent_index</k> - <v>0</v> - </e> <e> <k>loc</k> <v>0</v> @@ -652,7 +644,7 @@ <dependencies> <dep> <src>node</src> - <trg>parent</trg> + <trg>loc</trg> <val> <hist> <budget>12</budget> @@ -666,9 +658,39 @@ </hist> </val> </dep> + <dep> + <src>loc</src> + <trg>node</trg> + <val> + <hist> + <budget>12</budget> + <bs/> + </hist> + </val> + </dep> + </dependencies> + </relation> + <relation> + <name>blame_ast_node_parent</name> + <cardinality>0</cardinality> + <columnsizes> + <e> + <k>node</k> + <v>0</v> + </e> + <e> + <k>parent</k> + <v>0</v> + </e> + <e> + <k>parent_index</k> + <v>0</v> + </e> + </columnsizes> + <dependencies> <dep> <src>node</src> - <trg>parent_index</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -684,7 +706,7 @@ </dep> <dep> <src>node</src> - <trg>loc</trg> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -718,16 +740,6 @@ </hist> </val> </dep> - <dep> - <src>parent</src> - <trg>loc</trg> - <val> - <hist> - <budget>12</budget> - <bs/> - </hist> - </val> - </dep> <dep> <src>parent_index</src> <trg>node</trg> @@ -748,46 +760,6 @@ </hist> </val> </dep> - <dep> - <src>parent_index</src> - <trg>loc</trg> - <val> - <hist> - <budget>12</budget> - <bs/> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>node</trg> - <val> - <hist> - <budget>12</budget> - <bs/> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs/> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent_index</trg> - <val> - <hist> - <budget>12</budget> - <bs/> - </hist> - </val> - </dep> </dependencies> </relation> <relation> @@ -1286,15 +1258,15 @@ </relation> <relation> <name>containerparent</name> - <cardinality>15662</cardinality> + <cardinality>16683</cardinality> <columnsizes> <e> <k>parent</k> - <v>3982</v> + <v>4402</v> </e> <e> <k>child</k> - <v>15662</v> + <v>16683</v> </e> </columnsizes> <dependencies> @@ -1308,32 +1280,32 @@ <b> <a>1</a> <b>2</b> - <v>1880</v> + <v>2157</v> </b> <b> <a>2</a> <b>3</b> - <v>882</v> + <v>978</v> </b> <b> <a>3</a> <b>4</b> - <v>354</v> + <v>375</v> </b> <b> <a>4</a> <b>6</b> - <v>334</v> + <v>348</v> </b> <b> <a>6</a> - <b>14</b> - <v>312</v> + <b>15</b> + <v>339</v> </b> <b> - <a>14</a> - <b>240</b> - <v>220</v> + <a>15</a> + <b>255</b> + <v>205</v> </b> </bs> </hist> @@ -1349,7 +1321,7 @@ <b> <a>1</a> <b>2</b> - <v>15662</v> + <v>16683</v> </b> </bs> </hist> @@ -1359,15 +1331,15 @@ </relation> <relation> <name>dbscheme_annotation_args_annotation</name> - <cardinality>20661</cardinality> + <cardinality>30555</cardinality> <columnsizes> <e> <k>dbscheme_annotation</k> - <v>20661</v> + <v>30555</v> </e> <e> <k>args_annotation</k> - <v>20661</v> + <v>30555</v> </e> </columnsizes> <dependencies> @@ -1381,7 +1353,7 @@ <b> <a>1</a> <b>2</b> - <v>20661</v> + <v>30555</v> </b> </bs> </hist> @@ -1397,7 +1369,7 @@ <b> <a>1</a> <b>2</b> - <v>20661</v> + <v>30555</v> </b> </bs> </hist> @@ -1407,11 +1379,11 @@ </relation> <relation> <name>dbscheme_annotation_def</name> - <cardinality>20670</cardinality> + <cardinality>30564</cardinality> <columnsizes> <e> <k>id</k> - <v>20670</v> + <v>30564</v> </e> </columnsizes> <dependencies/> @@ -1466,11 +1438,11 @@ </relation> <relation> <name>dbscheme_args_annotation_child</name> - <cardinality>34968</cardinality> + <cardinality>49845</cardinality> <columnsizes> <e> <k>dbscheme_args_annotation</k> - <v>20661</v> + <v>30555</v> </e> <e> <k>index</k> @@ -1478,7 +1450,7 @@ </e> <e> <k>child</k> - <v>34968</v> + <v>49845</v> </e> </columnsizes> <dependencies> @@ -1492,17 +1464,17 @@ <b> <a>1</a> <b>2</b> - <v>7137</v> + <v>12292</v> </b> <b> <a>2</a> <b>3</b> - <v>12741</v> + <v>17236</v> </b> <b> <a>3</a> <b>4</b> - <v>783</v> + <v>1027</v> </b> </bs> </hist> @@ -1518,17 +1490,17 @@ <b> <a>1</a> <b>2</b> - <v>7137</v> + <v>12292</v> </b> <b> <a>2</a> <b>3</b> - <v>12741</v> + <v>17236</v> </b> <b> <a>3</a> <b>4</b> - <v>783</v> + <v>1027</v> </b> </bs> </hist> @@ -1542,18 +1514,18 @@ <budget>12</budget> <bs> <b> - <a>783</a> - <b>784</b> + <a>1027</a> + <b>1028</b> <v>1</v> </b> <b> - <a>13524</a> - <b>13525</b> + <a>18263</a> + <b>18264</b> <v>1</v> </b> <b> - <a>20661</a> - <b>20662</b> + <a>30555</a> + <b>30556</b> <v>1</v> </b> </bs> @@ -1568,18 +1540,18 @@ <budget>12</budget> <bs> <b> - <a>783</a> - <b>784</b> + <a>1027</a> + <b>1028</b> <v>1</v> </b> <b> - <a>13524</a> - <b>13525</b> + <a>18263</a> + <b>18264</b> <v>1</v> </b> <b> - <a>20661</a> - <b>20662</b> + <a>30555</a> + <b>30556</b> <v>1</v> </b> </bs> @@ -1596,7 +1568,7 @@ <b> <a>1</a> <b>2</b> - <v>34968</v> + <v>49845</v> </b> </bs> </hist> @@ -1612,7 +1584,7 @@ <b> <a>1</a> <b>2</b> - <v>34968</v> + <v>49845</v> </b> </bs> </hist> @@ -1622,15 +1594,15 @@ </relation> <relation> <name>dbscheme_args_annotation_def</name> - <cardinality>20661</cardinality> + <cardinality>30555</cardinality> <columnsizes> <e> <k>id</k> - <v>20661</v> + <v>30555</v> </e> <e> <k>name</k> - <v>20661</v> + <v>30555</v> </e> </columnsizes> <dependencies> @@ -1644,7 +1616,7 @@ <b> <a>1</a> <b>2</b> - <v>20661</v> + <v>30555</v> </b> </bs> </hist> @@ -1660,7 +1632,7 @@ <b> <a>1</a> <b>2</b> - <v>20661</v> + <v>30555</v> </b> </bs> </hist> @@ -1669,30 +1641,22 @@ </dependencies> </relation> <relation> - <name>dbscheme_ast_node_info</name> - <cardinality>4444432</cardinality> + <name>dbscheme_ast_node_location</name> + <cardinality>5985718</cardinality> <columnsizes> <e> <k>node</k> - <v>4444432</v> - </e> - <e> - <k>parent</k> - <v>1354658</v> - </e> - <e> - <k>parent_index</k> - <v>476</v> + <v>5985718</v> </e> <e> <k>loc</k> - <v>3650776</v> + <v>4903745</v> </e> </columnsizes> <dependencies> <dep> <src>node</src> - <trg>parent</trg> + <trg>loc</trg> <val> <hist> <budget>12</budget> @@ -1700,15 +1664,15 @@ <b> <a>1</a> <b>2</b> - <v>4444432</v> + <v>5985718</v> </b> </bs> </hist> </val> </dep> <dep> - <src>node</src> - <trg>parent_index</trg> + <src>loc</src> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -1716,15 +1680,40 @@ <b> <a>1</a> <b>2</b> - <v>4444432</v> + <v>3821772</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>1081973</v> </b> </bs> </hist> </val> </dep> + </dependencies> + </relation> + <relation> + <name>dbscheme_ast_node_parent</name> + <cardinality>5900617</cardinality> + <columnsizes> + <e> + <k>node</k> + <v>5900617</v> + </e> + <e> + <k>parent</k> + <v>1833365</v> + </e> + <e> + <k>parent_index</k> + <v>501</v> + </e> + </columnsizes> + <dependencies> <dep> <src>node</src> - <trg>loc</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -1732,15 +1721,15 @@ <b> <a>1</a> <b>2</b> - <v>4444432</v> + <v>5900617</v> </b> </bs> </hist> </val> </dep> <dep> - <src>parent</src> - <trg>node</trg> + <src>node</src> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -1748,32 +1737,7 @@ <b> <a>1</a> <b>2</b> - <v>793673</v> - </b> - <b> - <a>2</a> - <b>4</b> - <v>117079</v> - </b> - <b> - <a>4</a> - <b>5</b> - <v>11481</v> - </b> - <b> - <a>5</a> - <b>6</b> - <v>247420</v> - </b> - <b> - <a>6</a> - <b>8</b> - <v>112901</v> - </b> - <b> - <a>8</a> - <b>477</b> - <v>72104</v> + <v>5900617</v> </b> </bs> </hist> @@ -1781,7 +1745,7 @@ </dep> <dep> <src>parent</src> - <trg>parent_index</trg> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -1789,32 +1753,32 @@ <b> <a>1</a> <b>2</b> - <v>793673</v> + <v>1081973</v> </b> <b> <a>2</a> <b>4</b> - <v>117079</v> + <v>151168</v> </b> <b> <a>4</a> <b>5</b> - <v>11481</v> + <v>13080</v> </b> <b> <a>5</a> <b>6</b> - <v>247420</v> + <v>341594</v> </b> <b> <a>6</a> <b>8</b> - <v>112901</v> + <v>149771</v> </b> <b> <a>8</a> - <b>477</b> - <v>72104</v> + <b>502</b> + <v>95779</v> </b> </bs> </hist> @@ -1822,7 +1786,7 @@ </dep> <dep> <src>parent</src> - <trg>loc</trg> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -1830,32 +1794,32 @@ <b> <a>1</a> <b>2</b> - <v>793673</v> + <v>1081973</v> </b> <b> <a>2</a> <b>4</b> - <v>117079</v> + <v>151168</v> </b> <b> <a>4</a> <b>5</b> - <v>11481</v> + <v>13080</v> </b> <b> <a>5</a> <b>6</b> - <v>247420</v> + <v>341594</v> </b> <b> <a>6</a> <b>8</b> - <v>112901</v> + <v>149771</v> </b> <b> <a>8</a> - <b>477</b> - <v>72104</v> + <b>502</b> + <v>95779</v> </b> </bs> </hist> @@ -1869,69 +1833,69 @@ <budget>12</budget> <bs> <b> - <a>7</a> - <b>257</b> - <v>39</v> + <a>3</a> + <b>140</b> + <v>38</v> </b> <b> - <a>258</a> - <b>307</b> + <a>147</a> + <b>386</b> <v>38</v> </b> <b> - <a>321</a> - <b>338</b> - <v>42</v> + <a>387</a> + <b>491</b> + <v>31</v> </b> <b> - <a>345</a> - <b>508</b> - <v>37</v> + <a>491</a> + <b>492</b> + <v>49</v> </b> <b> - <a>508</a> - <b>652</b> - <v>37</v> + <a>499</a> + <b>712</b> + <v>38</v> </b> <b> - <a>661</a> - <b>763</b> - <v>36</v> + <a>717</a> + <b>841</b> + <v>42</v> </b> <b> - <a>769</a> - <b>930</b> - <v>36</v> + <a>842</a> + <b>1054</b> + <v>38</v> </b> <b> - <a>936</a> - <b>1034</b> - <v>36</v> + <a>1055</a> + <b>1190</b> + <v>44</v> </b> <b> - <a>1047</a> - <b>1122</b> - <v>36</v> + <a>1192</a> + <b>1357</b> + <v>41</v> </b> <b> - <a>1122</a> - <b>1375</b> - <v>36</v> + <a>1362</a> + <b>1575</b> + <v>39</v> </b> <b> - <a>1381</a> - <b>1960</b> - <v>36</v> + <a>1582</a> + <b>2577</b> + <v>38</v> </b> <b> - <a>2174</a> - <b>3839</b> - <v>36</v> + <a>2626</a> + <b>5260</b> + <v>38</v> </b> <b> - <a>3932</a> - <b>1354659</b> - <v>31</v> + <a>5283</a> + <b>1833366</b> + <v>27</v> </b> </bs> </hist> @@ -1945,260 +1909,121 @@ <budget>12</budget> <bs> <b> - <a>7</a> - <b>257</b> - <v>39</v> + <a>3</a> + <b>140</b> + <v>38</v> </b> <b> - <a>258</a> - <b>307</b> + <a>147</a> + <b>386</b> <v>38</v> </b> <b> - <a>321</a> - <b>338</b> - <v>42</v> + <a>387</a> + <b>491</b> + <v>31</v> </b> <b> - <a>345</a> - <b>508</b> - <v>37</v> + <a>491</a> + <b>492</b> + <v>49</v> </b> <b> - <a>508</a> - <b>652</b> - <v>37</v> + <a>499</a> + <b>712</b> + <v>38</v> </b> <b> - <a>661</a> - <b>763</b> - <v>36</v> + <a>717</a> + <b>841</b> + <v>42</v> </b> <b> - <a>769</a> - <b>930</b> - <v>36</v> + <a>842</a> + <b>1054</b> + <v>38</v> </b> <b> - <a>936</a> - <b>1034</b> - <v>36</v> + <a>1055</a> + <b>1190</b> + <v>44</v> </b> <b> - <a>1047</a> - <b>1122</b> - <v>36</v> + <a>1192</a> + <b>1357</b> + <v>41</v> </b> <b> - <a>1122</a> - <b>1375</b> - <v>36</v> + <a>1362</a> + <b>1575</b> + <v>39</v> </b> <b> - <a>1381</a> - <b>1960</b> - <v>36</v> + <a>1582</a> + <b>2577</b> + <v>38</v> </b> <b> - <a>2174</a> - <b>3839</b> - <v>36</v> + <a>2626</a> + <b>5260</b> + <v>38</v> </b> <b> - <a>3932</a> - <b>1354659</b> - <v>31</v> + <a>5283</a> + <b>1833366</b> + <v>27</v> </b> </bs> </hist> </val> </dep> + </dependencies> + </relation> + <relation> + <name>dbscheme_branch_child</name> + <cardinality>302050</cardinality> + <columnsizes> + <e> + <k>dbscheme_branch</k> + <v>151025</v> + </e> + <e> + <k>index</k> + <v>2</v> + </e> + <e> + <k>child</k> + <v>302050</v> + </e> + </columnsizes> + <dependencies> <dep> - <src>parent_index</src> - <trg>loc</trg> + <src>dbscheme_branch</src> + <trg>index</trg> <val> <hist> <budget>12</budget> <bs> <b> - <a>7</a> - <b>257</b> - <v>39</v> - </b> - <b> - <a>258</a> - <b>307</b> - <v>38</v> + <a>2</a> + <b>3</b> + <v>151025</v> </b> + </bs> + </hist> + </val> + </dep> + <dep> + <src>dbscheme_branch</src> + <trg>child</trg> + <val> + <hist> + <budget>12</budget> + <bs> <b> - <a>321</a> - <b>338</b> - <v>42</v> - </b> - <b> - <a>345</a> - <b>508</b> - <v>37</v> - </b> - <b> - <a>508</a> - <b>652</b> - <v>37</v> - </b> - <b> - <a>661</a> - <b>763</b> - <v>36</v> - </b> - <b> - <a>769</a> - <b>930</b> - <v>36</v> - </b> - <b> - <a>936</a> - <b>1034</b> - <v>36</v> - </b> - <b> - <a>1047</a> - <b>1122</b> - <v>36</v> - </b> - <b> - <a>1122</a> - <b>1375</b> - <v>36</v> - </b> - <b> - <a>1381</a> - <b>1960</b> - <v>36</v> - </b> - <b> - <a>2174</a> - <b>3839</b> - <v>36</v> - </b> - <b> - <a>3932</a> - <b>1079008</b> - <v>31</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>node</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>2857120</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>793656</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>2857120</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>793656</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent_index</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>3132771</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>518005</v> - </b> - </bs> - </hist> - </val> - </dep> - </dependencies> - </relation> - <relation> - <name>dbscheme_branch_child</name> - <cardinality>233822</cardinality> - <columnsizes> - <e> - <k>dbscheme_branch</k> - <v>116911</v> - </e> - <e> - <k>index</k> - <v>2</v> - </e> - <e> - <k>child</k> - <v>233822</v> - </e> - </columnsizes> - <dependencies> - <dep> - <src>dbscheme_branch</src> - <trg>index</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>2</a> - <b>3</b> - <v>116911</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>dbscheme_branch</src> - <trg>child</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>2</a> - <b>3</b> - <v>116911</v> + <a>2</a> + <b>3</b> + <v>151025</v> </b> </bs> </hist> @@ -2212,8 +2037,8 @@ <budget>12</budget> <bs> <b> - <a>116911</a> - <b>116912</b> + <a>151025</a> + <b>151026</b> <v>2</v> </b> </bs> @@ -2228,8 +2053,8 @@ <budget>12</budget> <bs> <b> - <a>116911</a> - <b>116912</b> + <a>151025</a> + <b>151026</b> <v>2</v> </b> </bs> @@ -2246,7 +2071,7 @@ <b> <a>1</a> <b>2</b> - <v>233822</v> + <v>302050</v> </b> </bs> </hist> @@ -2262,7 +2087,7 @@ <b> <a>1</a> <b>2</b> - <v>233822</v> + <v>302050</v> </b> </bs> </hist> @@ -2272,11 +2097,11 @@ </relation> <relation> <name>dbscheme_branch_def</name> - <cardinality>116911</cardinality> + <cardinality>151025</cardinality> <columnsizes> <e> <k>id</k> - <v>116911</v> + <v>151025</v> </e> </columnsizes> <dependencies/> @@ -2331,11 +2156,11 @@ </relation> <relation> <name>dbscheme_case_decl_child</name> - <cardinality>116911</cardinality> + <cardinality>151025</cardinality> <columnsizes> <e> <k>dbscheme_case_decl</k> - <v>4372</v> + <v>5423</v> </e> <e> <k>index</k> @@ -2343,7 +2168,7 @@ </e> <e> <k>child</k> - <v>116911</v> + <v>151025</v> </e> </columnsizes> <dependencies> @@ -2362,57 +2187,57 @@ <b> <a>2</a> <b>3</b> - <v>661</v> + <v>841</v> </b> <b> <a>3</a> <b>4</b> - <v>486</v> + <v>605</v> </b> <b> <a>4</a> <b>5</b> - <v>595</v> + <v>691</v> </b> <b> <a>5</a> <b>6</b> - <v>335</v> + <v>456</v> </b> <b> <a>6</a> <b>8</b> - <v>187</v> + <v>218</v> </b> <b> <a>9</a> - <b>12</b> - <v>335</v> + <b>11</b> + <v>408</v> </b> <b> - <a>12</a> + <a>11</a> <b>18</b> - <v>347</v> + <v>438</v> </b> <b> <a>21</a> <b>29</b> - <v>395</v> + <v>467</v> </b> <b> <a>29</a> <b>38</b> - <v>360</v> + <v>436</v> </b> <b> <a>38</a> - <b>116</b> - <v>335</v> + <b>117</b> + <v>407</v> </b> <b> - <a>116</a> + <a>118</a> <b>219</b> - <v>335</v> + <v>455</v> </b> </bs> </hist> @@ -2433,57 +2258,57 @@ <b> <a>2</a> <b>3</b> - <v>661</v> + <v>841</v> </b> <b> <a>3</a> <b>4</b> - <v>486</v> + <v>605</v> </b> <b> <a>4</a> <b>5</b> - <v>595</v> + <v>691</v> </b> <b> <a>5</a> <b>6</b> - <v>335</v> + <v>456</v> </b> <b> <a>6</a> <b>8</b> - <v>187</v> + <v>218</v> </b> <b> <a>9</a> - <b>12</b> - <v>335</v> + <b>11</b> + <v>408</v> </b> <b> - <a>12</a> + <a>11</a> <b>18</b> - <v>347</v> + <v>438</v> </b> <b> <a>21</a> <b>29</b> - <v>395</v> + <v>467</v> </b> <b> <a>29</a> <b>38</b> - <v>360</v> + <v>436</v> </b> <b> <a>38</a> - <b>116</b> - <v>335</v> + <b>117</b> + <v>407</v> </b> <b> - <a>116</a> + <a>118</a> <b>219</b> - <v>335</v> + <v>455</v> </b> </bs> </hist> @@ -2497,63 +2322,73 @@ <budget>12</budget> <bs> <b> - <a>120</a> - <b>121</b> - <v>21</v> + <a>156</a> + <b>157</b> + <v>20</v> + </b> + <b> + <a>159</a> + <b>160</b> + <v>1</v> </b> <b> - <a>135</a> - <b>136</b> + <a>219</a> + <b>220</b> <v>27</v> </b> <b> - <a>143</a> - <b>210</b> + <a>227</a> + <b>294</b> <v>11</v> </b> <b> - <a>227</a> - <b>228</b> - <v>34</v> + <a>311</a> + <b>312</b> + <v>32</v> </b> <b> - <a>238</a> - <b>404</b> + <a>330</a> + <b>494</b> <v>17</v> </b> <b> - <a>405</a> - <b>421</b> - <v>20</v> + <a>521</a> + <b>544</b> + <v>13</v> </b> <b> - <a>449</a> - <b>452</b> + <a>544</a> + <b>548</b> + <v>9</v> + </b> + <b> + <a>581</a> + <b>584</b> <v>15</v> </b> <b> - <a>466</a> - <b>469</b> + <a>598</a> + <b>601</b> <v>17</v> </b> <b> - <a>472</a> - <b>607</b> + <a>643</a> + <b>795</b> <v>17</v> </b> <b> - <a>614</a> - <b>1424</b> + <a>802</a> + <b>1764</b> <v>17</v> </b> <b> - <a>1424</a> - <b>2295</b> + <a>1764</a> + <b>2830</b> <v>17</v> </b> <b> - <a>2629</a> - <b>4373</b> + <a>3285</a> + <b>5424</b> <v>5</v> </b> </bs> @@ -2568,63 +2403,73 @@ <budget>12</budget> <bs> <b> - <a>120</a> - <b>121</b> - <v>21</v> + <a>156</a> + <b>157</b> + <v>20</v> + </b> + <b> + <a>159</a> + <b>160</b> + <v>1</v> </b> <b> - <a>135</a> - <b>136</b> + <a>219</a> + <b>220</b> <v>27</v> </b> <b> - <a>143</a> - <b>210</b> + <a>227</a> + <b>294</b> <v>11</v> </b> <b> - <a>227</a> - <b>228</b> - <v>34</v> + <a>311</a> + <b>312</b> + <v>32</v> </b> <b> - <a>238</a> - <b>404</b> + <a>330</a> + <b>494</b> <v>17</v> </b> <b> - <a>405</a> - <b>421</b> - <v>20</v> + <a>521</a> + <b>544</b> + <v>13</v> + </b> + <b> + <a>544</a> + <b>548</b> + <v>9</v> </b> <b> - <a>449</a> - <b>452</b> + <a>581</a> + <b>584</b> <v>15</v> </b> <b> - <a>466</a> - <b>469</b> + <a>598</a> + <b>601</b> <v>17</v> </b> <b> - <a>472</a> - <b>607</b> + <a>643</a> + <b>795</b> <v>17</v> </b> <b> - <a>614</a> - <b>1424</b> + <a>802</a> + <b>1764</b> <v>17</v> </b> <b> - <a>1424</a> - <b>2295</b> + <a>1764</a> + <b>2830</b> <v>17</v> </b> <b> - <a>2629</a> - <b>4373</b> + <a>3285</a> + <b>5424</b> <v>5</v> </b> </bs> @@ -2641,7 +2486,7 @@ <b> <a>1</a> <b>2</b> - <v>116911</v> + <v>151025</v> </b> </bs> </hist> @@ -2657,7 +2502,7 @@ <b> <a>1</a> <b>2</b> - <v>116911</v> + <v>151025</v> </b> </bs> </hist> @@ -2667,19 +2512,19 @@ </relation> <relation> <name>dbscheme_case_decl_def</name> - <cardinality>4372</cardinality> + <cardinality>5423</cardinality> <columnsizes> <e> <k>id</k> - <v>4372</v> + <v>5423</v> </e> <e> <k>base</k> - <v>4372</v> + <v>5423</v> </e> <e> <k>discriminator</k> - <v>4372</v> + <v>5423</v> </e> </columnsizes> <dependencies> @@ -2693,7 +2538,7 @@ <b> <a>1</a> <b>2</b> - <v>4372</v> + <v>5423</v> </b> </bs> </hist> @@ -2709,7 +2554,7 @@ <b> <a>1</a> <b>2</b> - <v>4372</v> + <v>5423</v> </b> </bs> </hist> @@ -2725,7 +2570,7 @@ <b> <a>1</a> <b>2</b> - <v>4372</v> + <v>5423</v> </b> </bs> </hist> @@ -2741,7 +2586,7 @@ <b> <a>1</a> <b>2</b> - <v>4372</v> + <v>5423</v> </b> </bs> </hist> @@ -2757,7 +2602,7 @@ <b> <a>1</a> <b>2</b> - <v>4372</v> + <v>5423</v> </b> </bs> </hist> @@ -2773,7 +2618,7 @@ <b> <a>1</a> <b>2</b> - <v>4372</v> + <v>5423</v> </b> </bs> </hist> @@ -2783,15 +2628,15 @@ </relation> <relation> <name>dbscheme_col_type_def</name> - <cardinality>252564</cardinality> + <cardinality>341399</cardinality> <columnsizes> <e> <k>id</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>child</k> - <v>252564</v> + <v>341399</v> </e> </columnsizes> <dependencies> @@ -2805,7 +2650,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2821,7 +2666,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2831,23 +2676,23 @@ </relation> <relation> <name>dbscheme_column_def</name> - <cardinality>252564</cardinality> + <cardinality>341399</cardinality> <columnsizes> <e> <k>id</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>col_name</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>col_type</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>repr_type</k> - <v>252564</v> + <v>341399</v> </e> </columnsizes> <dependencies> @@ -2861,7 +2706,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2877,7 +2722,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2893,7 +2738,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2909,7 +2754,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2925,7 +2770,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2941,7 +2786,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2957,7 +2802,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2973,7 +2818,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -2989,7 +2834,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -3005,7 +2850,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -3021,7 +2866,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -3037,7 +2882,7 @@ <b> <a>1</a> <b>2</b> - <v>252564</v> + <v>341399</v> </b> </bs> </hist> @@ -3047,15 +2892,15 @@ </relation> <relation> <name>dbscheme_column_is_ref</name> - <cardinality>210468</cardinality> + <cardinality>281648</cardinality> <columnsizes> <e> <k>dbscheme_column</k> - <v>210468</v> + <v>281648</v> </e> <e> <k>is_ref</k> - <v>210468</v> + <v>281648</v> </e> </columnsizes> <dependencies> @@ -3069,7 +2914,7 @@ <b> <a>1</a> <b>2</b> - <v>210468</v> + <v>281648</v> </b> </bs> </hist> @@ -3085,7 +2930,7 @@ <b> <a>1</a> <b>2</b> - <v>210468</v> + <v>281648</v> </b> </bs> </hist> @@ -3095,15 +2940,15 @@ </relation> <relation> <name>dbscheme_column_is_unique</name> - <cardinality>75701</cardinality> + <cardinality>102289</cardinality> <columnsizes> <e> <k>dbscheme_column</k> - <v>75701</v> + <v>102289</v> </e> <e> <k>is_unique</k> - <v>75701</v> + <v>102289</v> </e> </columnsizes> <dependencies> @@ -3117,7 +2962,7 @@ <b> <a>1</a> <b>2</b> - <v>75701</v> + <v>102289</v> </b> </bs> </hist> @@ -3133,7 +2978,7 @@ <b> <a>1</a> <b>2</b> - <v>75701</v> + <v>102289</v> </b> </bs> </hist> @@ -3143,15 +2988,15 @@ </relation> <relation> <name>dbscheme_column_qldoc</name> - <cardinality>470</cardinality> + <cardinality>670</cardinality> <columnsizes> <e> <k>dbscheme_column</k> - <v>470</v> + <v>670</v> </e> <e> <k>qldoc</k> - <v>470</v> + <v>670</v> </e> </columnsizes> <dependencies> @@ -3165,7 +3010,7 @@ <b> <a>1</a> <b>2</b> - <v>470</v> + <v>670</v> </b> </bs> </hist> @@ -3181,7 +3026,7 @@ <b> <a>1</a> <b>2</b> - <v>470</v> + <v>670</v> </b> </bs> </hist> @@ -3191,19 +3036,19 @@ </relation> <relation> <name>dbscheme_dbscheme_child</name> - <cardinality>169630</cardinality> + <cardinality>230044</cardinality> <columnsizes> <e> <k>dbscheme_dbscheme</k> - <v>532</v> + <v>685</v> </e> <e> <k>index</k> - <v>476</v> + <v>501</v> </e> <e> <k>child</k> - <v>169630</v> + <v>230044</v> </e> </columnsizes> <dependencies> @@ -3216,68 +3061,68 @@ <bs> <b> <a>2</a> - <b>142</b> - <v>43</v> - </b> - <b> - <a>142</a> - <b>200</b> - <v>40</v> + <b>147</b> + <v>56</v> </b> <b> - <a>200</a> - <b>259</b> - <v>41</v> + <a>148</a> + <b>205</b> + <v>55</v> </b> <b> - <a>260</a> - <b>278</b> - <v>41</v> + <a>205</a> + <b>275</b> + <v>54</v> </b> <b> - <a>278</a> - <b>288</b> - <v>38</v> + <a>275</a> + <b>287</b> + <v>52</v> </b> <b> - <a>290</a> - <b>305</b> - <v>46</v> + <a>287</a> + <b>306</b> + <v>62</v> </b> <b> - <a>305</a> - <b>310</b> - <v>42</v> + <a>307</a> + <b>312</b> + <v>52</v> </b> <b> - <a>310</a> - <b>315</b> - <v>40</v> + <a>313</a> + <b>320</b> + <v>56</v> </b> <b> - <a>316</a> + <a>320</a> <b>418</b> - <v>43</v> + <v>55</v> </b> <b> <a>418</a> - <b>457</b> + <b>460</b> + <v>58</v> + </b> + <b> + <a>460</a> + <b>464</b> <v>46</v> </b> <b> - <a>457</a> - <b>462</b> - <v>28</v> + <a>465</a> + <b>469</b> + <v>59</v> </b> <b> - <a>462</a> - <b>466</b> - <v>45</v> + <a>470</a> + <b>478</b> + <v>57</v> </b> <b> - <a>466</a> - <b>477</b> - <v>39</v> + <a>478</a> + <b>502</b> + <v>23</v> </b> </bs> </hist> @@ -3292,68 +3137,68 @@ <bs> <b> <a>2</a> - <b>142</b> - <v>43</v> - </b> - <b> - <a>142</a> - <b>200</b> - <v>40</v> + <b>147</b> + <v>56</v> </b> <b> - <a>200</a> - <b>259</b> - <v>41</v> + <a>148</a> + <b>205</b> + <v>55</v> </b> <b> - <a>260</a> - <b>278</b> - <v>41</v> + <a>205</a> + <b>275</b> + <v>54</v> </b> <b> - <a>278</a> - <b>288</b> - <v>38</v> + <a>275</a> + <b>287</b> + <v>52</v> </b> <b> - <a>290</a> - <b>305</b> - <v>46</v> + <a>287</a> + <b>306</b> + <v>62</v> </b> <b> - <a>305</a> - <b>310</b> - <v>42</v> + <a>307</a> + <b>312</b> + <v>52</v> </b> <b> - <a>310</a> - <b>315</b> - <v>40</v> + <a>313</a> + <b>320</b> + <v>56</v> </b> <b> - <a>316</a> + <a>320</a> <b>418</b> - <v>43</v> + <v>55</v> </b> <b> <a>418</a> - <b>457</b> + <b>460</b> + <v>58</v> + </b> + <b> + <a>460</a> + <b>464</b> <v>46</v> </b> <b> - <a>457</a> - <b>462</b> - <v>28</v> + <a>465</a> + <b>469</b> + <v>59</v> </b> <b> - <a>462</a> - <b>466</b> - <v>45</v> + <a>470</a> + <b>478</b> + <v>57</v> </b> <b> - <a>466</a> - <b>477</b> - <v>39</v> + <a>478</a> + <b>502</b> + <v>23</v> </b> </bs> </hist> @@ -3367,58 +3212,63 @@ <budget>12</budget> <bs> <b> - <a>7</a> - <b>137</b> - <v>39</v> + <a>3</a> + <b>140</b> + <v>38</v> </b> <b> - <a>138</a> - <b>187</b> - <v>43</v> + <a>147</a> + <b>230</b> + <v>38</v> + </b> + <b> + <a>231</a> + <b>272</b> + <v>31</v> </b> <b> - <a>187</a> - <b>188</b> + <a>272</a> + <b>273</b> <v>70</v> </b> <b> - <a>190</a> - <b>330</b> - <v>37</v> + <a>279</a> + <b>469</b> + <v>38</v> </b> <b> - <a>331</a> - <b>418</b> - <v>36</v> + <a>470</a> + <b>561</b> + <v>37</v> </b> <b> - <a>419</a> - <b>422</b> - <v>42</v> + <a>562</a> + <b>563</b> + <v>40</v> </b> <b> - <a>422</a> - <b>452</b> + <a>563</a> + <b>601</b> <v>40</v> </b> <b> - <a>452</a> - <b>502</b> - <v>36</v> + <a>601</a> + <b>664</b> + <v>41</v> </b> <b> - <a>510</a> - <b>529</b> - <v>32</v> + <a>664</a> + <b>682</b> + <v>27</v> </b> <b> - <a>529</a> - <b>530</b> + <a>682</a> + <b>683</b> <v>76</v> </b> <b> - <a>530</a> - <b>533</b> + <a>683</a> + <b>686</b> <v>25</v> </b> </bs> @@ -3433,58 +3283,63 @@ <budget>12</budget> <bs> <b> - <a>7</a> - <b>137</b> - <v>39</v> + <a>3</a> + <b>140</b> + <v>38</v> </b> <b> - <a>138</a> - <b>187</b> - <v>43</v> + <a>147</a> + <b>230</b> + <v>38</v> </b> <b> - <a>187</a> - <b>188</b> + <a>231</a> + <b>272</b> + <v>31</v> + </b> + <b> + <a>272</a> + <b>273</b> <v>70</v> </b> <b> - <a>190</a> - <b>330</b> - <v>37</v> + <a>279</a> + <b>469</b> + <v>38</v> </b> <b> - <a>331</a> - <b>418</b> - <v>36</v> + <a>470</a> + <b>561</b> + <v>37</v> </b> <b> - <a>419</a> - <b>422</b> - <v>42</v> + <a>562</a> + <b>563</b> + <v>40</v> </b> <b> - <a>422</a> - <b>452</b> + <a>563</a> + <b>601</b> <v>40</v> </b> <b> - <a>452</a> - <b>502</b> - <v>36</v> + <a>601</a> + <b>664</b> + <v>41</v> </b> <b> - <a>510</a> - <b>529</b> - <v>32</v> + <a>664</a> + <b>682</b> + <v>27</v> </b> <b> - <a>529</a> - <b>530</b> + <a>682</a> + <b>683</b> <v>76</v> </b> <b> - <a>530</a> - <b>533</b> + <a>683</a> + <b>686</b> <v>25</v> </b> </bs> @@ -3501,7 +3356,7 @@ <b> <a>1</a> <b>2</b> - <v>169630</v> + <v>230044</v> </b> </bs> </hist> @@ -3517,7 +3372,7 @@ <b> <a>1</a> <b>2</b> - <v>169630</v> + <v>230044</v> </b> </bs> </hist> @@ -3527,26 +3382,26 @@ </relation> <relation> <name>dbscheme_dbscheme_def</name> - <cardinality>532</cardinality> + <cardinality>686</cardinality> <columnsizes> <e> <k>id</k> - <v>532</v> + <v>686</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>dbscheme_entry_def</name> - <cardinality>169630</cardinality> + <cardinality>230044</cardinality> <columnsizes> <e> <k>id</k> - <v>169630</v> + <v>230044</v> </e> <e> <k>child</k> - <v>169630</v> + <v>230044</v> </e> </columnsizes> <dependencies> @@ -3560,7 +3415,7 @@ <b> <a>1</a> <b>2</b> - <v>169630</v> + <v>230044</v> </b> </bs> </hist> @@ -3576,7 +3431,7 @@ <b> <a>1</a> <b>2</b> - <v>169630</v> + <v>230044</v> </b> </bs> </hist> @@ -3586,11 +3441,11 @@ </relation> <relation> <name>dbscheme_repr_type_child</name> - <cardinality>260261</cardinality> + <cardinality>349360</cardinality> <columnsizes> <e> <k>dbscheme_repr_type</k> - <v>252564</v> + <v>341399</v> </e> <e> <k>index</k> @@ -3598,7 +3453,7 @@ </e> <e> <k>child</k> - <v>260261</v> + <v>349360</v> </e> </columnsizes> <dependencies> @@ -3612,12 +3467,12 @@ <b> <a>1</a> <b>2</b> - <v>244867</v> + <v>333438</v> </b> <b> <a>2</a> <b>3</b> - <v>7697</v> + <v>7961</v> </b> </bs> </hist> @@ -3633,12 +3488,12 @@ <b> <a>1</a> <b>2</b> - <v>244867</v> + <v>333438</v> </b> <b> <a>2</a> <b>3</b> - <v>7697</v> + <v>7961</v> </b> </bs> </hist> @@ -3652,13 +3507,13 @@ <budget>12</budget> <bs> <b> - <a>7697</a> - <b>7698</b> + <a>7961</a> + <b>7962</b> <v>1</v> </b> <b> - <a>252564</a> - <b>252565</b> + <a>341399</a> + <b>341400</b> <v>1</v> </b> </bs> @@ -3673,13 +3528,13 @@ <budget>12</budget> <bs> <b> - <a>7697</a> - <b>7698</b> + <a>7961</a> + <b>7962</b> <v>1</v> </b> <b> - <a>252564</a> - <b>252565</b> + <a>341399</a> + <b>341400</b> <v>1</v> </b> </bs> @@ -3696,7 +3551,7 @@ <b> <a>1</a> <b>2</b> - <v>260261</v> + <v>349360</v> </b> </bs> </hist> @@ -3712,7 +3567,7 @@ <b> <a>1</a> <b>2</b> - <v>260261</v> + <v>349360</v> </b> </bs> </hist> @@ -3722,22 +3577,22 @@ </relation> <relation> <name>dbscheme_repr_type_def</name> - <cardinality>252564</cardinality> + <cardinality>341399</cardinality> <columnsizes> <e> <k>id</k> - <v>252564</v> + <v>341399</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>dbscheme_table_child</name> - <cardinality>273234</cardinality> + <cardinality>371963</cardinality> <columnsizes> <e> <k>dbscheme_table</k> - <v>105934</v> + <v>146537</v> </e> <e> <k>index</k> @@ -3745,7 +3600,7 @@ </e> <e> <k>child</k> - <v>273234</v> + <v>371963</v> </e> </columnsizes> <dependencies> @@ -3759,32 +3614,32 @@ <b> <a>1</a> <b>2</b> - <v>22414</v> + <v>32738</v> </b> <b> <a>2</a> <b>3</b> - <v>41141</v> + <v>55828</v> </b> <b> <a>3</a> <b>4</b> - <v>16585</v> + <v>24047</v> </b> <b> <a>4</a> <b>5</b> - <v>16007</v> + <v>21522</v> </b> <b> <a>5</a> <b>7</b> - <v>9023</v> + <v>11405</v> </b> <b> <a>7</a> <b>11</b> - <v>764</v> + <v>997</v> </b> </bs> </hist> @@ -3800,32 +3655,32 @@ <b> <a>1</a> <b>2</b> - <v>22414</v> + <v>32738</v> </b> <b> <a>2</a> <b>3</b> - <v>41141</v> + <v>55828</v> </b> <b> <a>3</a> <b>4</b> - <v>16585</v> + <v>24047</v> </b> <b> <a>4</a> <b>5</b> - <v>16007</v> + <v>21522</v> </b> <b> <a>5</a> <b>7</b> - <v>9023</v> + <v>11405</v> </b> <b> <a>7</a> <b>11</b> - <v>764</v> + <v>997</v> </b> </bs> </hist> @@ -3844,48 +3699,48 @@ <v>1</v> </b> <b> - <a>145</a> - <b>146</b> + <a>181</a> + <b>182</b> <v>1</v> </b> <b> - <a>265</a> - <b>266</b> + <a>337</a> + <b>338</b> <v>1</v> </b> <b> - <a>764</a> - <b>765</b> + <a>997</a> + <b>998</b> <v>1</v> </b> <b> - <a>4621</a> - <b>4622</b> + <a>5790</a> + <b>5791</b> <v>1</v> </b> <b> - <a>9787</a> - <b>9788</b> + <a>12402</a> + <b>12403</b> <v>1</v> </b> <b> - <a>25794</a> - <b>25795</b> + <a>33924</a> + <b>33925</b> <v>1</v> </b> <b> - <a>42379</a> - <b>42380</b> + <a>57971</a> + <b>57972</b> <v>1</v> </b> <b> - <a>83520</a> - <b>83521</b> + <a>113799</a> + <b>113800</b> <v>1</v> </b> <b> - <a>105934</a> - <b>105935</b> + <a>146537</a> + <b>146538</b> <v>1</v> </b> </bs> @@ -3905,48 +3760,48 @@ <v>1</v> </b> <b> - <a>145</a> - <b>146</b> + <a>181</a> + <b>182</b> <v>1</v> </b> <b> - <a>265</a> - <b>266</b> + <a>337</a> + <b>338</b> <v>1</v> </b> <b> - <a>764</a> - <b>765</b> + <a>997</a> + <b>998</b> <v>1</v> </b> <b> - <a>4621</a> - <b>4622</b> + <a>5790</a> + <b>5791</b> <v>1</v> </b> <b> - <a>9787</a> - <b>9788</b> + <a>12402</a> + <b>12403</b> <v>1</v> </b> <b> - <a>25794</a> - <b>25795</b> + <a>33924</a> + <b>33925</b> <v>1</v> </b> <b> - <a>42379</a> - <b>42380</b> + <a>57971</a> + <b>57972</b> <v>1</v> </b> <b> - <a>83520</a> - <b>83521</b> + <a>113799</a> + <b>113800</b> <v>1</v> </b> <b> - <a>105934</a> - <b>105935</b> + <a>146537</a> + <b>146538</b> <v>1</v> </b> </bs> @@ -3963,7 +3818,7 @@ <b> <a>1</a> <b>2</b> - <v>273234</v> + <v>371963</v> </b> </bs> </hist> @@ -3979,7 +3834,7 @@ <b> <a>1</a> <b>2</b> - <v>273234</v> + <v>371963</v> </b> </bs> </hist> @@ -3989,15 +3844,15 @@ </relation> <relation> <name>dbscheme_table_def</name> - <cardinality>105934</cardinality> + <cardinality>146537</cardinality> <columnsizes> <e> <k>id</k> - <v>105934</v> + <v>146537</v> </e> <e> <k>table_name</k> - <v>105934</v> + <v>146537</v> </e> </columnsizes> <dependencies> @@ -4011,7 +3866,7 @@ <b> <a>1</a> <b>2</b> - <v>105934</v> + <v>146537</v> </b> </bs> </hist> @@ -4027,7 +3882,7 @@ <b> <a>1</a> <b>2</b> - <v>105934</v> + <v>146537</v> </b> </bs> </hist> @@ -4037,15 +3892,15 @@ </relation> <relation> <name>dbscheme_table_name_def</name> - <cardinality>105934</cardinality> + <cardinality>146537</cardinality> <columnsizes> <e> <k>id</k> - <v>105934</v> + <v>146537</v> </e> <e> <k>child</k> - <v>105934</v> + <v>146537</v> </e> </columnsizes> <dependencies> @@ -4059,7 +3914,7 @@ <b> <a>1</a> <b>2</b> - <v>105934</v> + <v>146537</v> </b> </bs> </hist> @@ -4075,7 +3930,7 @@ <b> <a>1</a> <b>2</b> - <v>105934</v> + <v>146537</v> </b> </bs> </hist> @@ -4085,11 +3940,11 @@ </relation> <relation> <name>dbscheme_tokeninfo</name> - <cardinality>3090306</cardinality> + <cardinality>4152352</cardinality> <columnsizes> <e> <k>id</k> - <v>3090306</v> + <v>4152352</v> </e> <e> <k>kind</k> @@ -4097,7 +3952,7 @@ </e> <e> <k>value</k> - <v>7109</v> + <v>7232</v> </e> </columnsizes> <dependencies> @@ -4111,7 +3966,7 @@ <b> <a>1</a> <b>2</b> - <v>3090306</v> + <v>4152352</v> </b> </bs> </hist> @@ -4127,7 +3982,7 @@ <b> <a>1</a> <b>2</b> - <v>3090306</v> + <v>4152352</v> </b> </bs> </hist> @@ -4141,83 +3996,83 @@ <budget>12</budget> <bs> <b> - <a>1042</a> - <b>1043</b> + <a>1170</a> + <b>1171</b> <v>1</v> </b> <b> - <a>1440</a> - <b>1441</b> + <a>2146</a> + <b>2147</b> <v>1</v> </b> <b> - <a>2354</a> - <b>2355</b> + <a>2962</a> + <b>2963</b> <v>1</v> </b> <b> - <a>7697</a> - <b>7698</b> + <a>7961</a> + <b>7962</b> <v>1</v> </b> <b> - <a>8004</a> - <b>8005</b> + <a>10956</a> + <b>10957</b> <v>1</v> </b> <b> - <a>17513</a> - <b>17514</b> + <a>22060</a> + <b>22061</b> <v>1</v> </b> <b> - <a>20670</a> - <b>20671</b> + <a>30564</a> + <b>30565</b> <v>1</v> </b> <b> - <a>37863</a> - <b>37864</b> + <a>62355</a> + <b>62356</b> <v>1</v> </b> <b> - <a>51435</a> - <b>51436</b> + <a>67865</a> + <b>67866</b> <v>1</v> </b> <b> - <a>75701</a> - <b>75702</b> + <a>102289</a> + <b>102290</b> <v>1</v> </b> <b> - <a>124608</a> - <b>124609</b> + <a>158986</a> + <b>158987</b> <v>1</v> </b> <b> - <a>210468</a> - <b>210469</b> + <a>281648</a> + <b>281649</b> <v>1</v> </b> <b> - <a>258872</a> - <b>258873</b> + <a>350777</a> + <b>350778</b> <v>1</v> </b> <b> - <a>397838</a> - <b>397839</b> + <a>543204</a> + <b>543205</b> <v>1</v> </b> <b> - <a>565153</a> - <b>565154</b> + <a>750840</a> + <b>750841</b> <v>1</v> </b> <b> - <a>1309648</a> - <b>1309649</b> + <a>1756569</a> + <b>1756570</b> <v>1</v> </b> </bs> @@ -4247,33 +4102,33 @@ <v>1</v> </b> <b> - <a>99</a> - <b>100</b> + <a>100</a> + <b>101</b> <v>1</v> </b> <b> - <a>197</a> - <b>198</b> + <a>207</a> + <b>208</b> <v>1</v> </b> <b> - <a>302</a> - <b>303</b> + <a>303</a> + <b>304</b> <v>1</v> </b> <b> - <a>595</a> - <b>596</b> + <a>616</a> + <b>617</b> <v>1</v> </b> <b> - <a>2601</a> - <b>2602</b> + <a>2655</a> + <b>2656</b> <v>1</v> </b> <b> - <a>3292</a> - <b>3293</b> + <a>3328</a> + <b>3329</b> <v>1</v> </b> </bs> @@ -4294,68 +4149,68 @@ </b> <b> <a>3</a> - <b>9</b> - <v>534</v> + <b>13</b> + <v>575</v> </b> <b> - <a>9</a> - <b>25</b> - <v>543</v> + <a>13</a> + <b>29</b> + <v>422</v> </b> <b> - <a>25</a> - <b>32</b> - <v>544</v> + <a>29</a> + <b>38</b> + <v>546</v> </b> <b> - <a>32</a> - <b>51</b> - <v>471</v> + <a>38</a> + <b>56</b> + <v>638</v> </b> <b> - <a>51</a> - <b>67</b> - <v>534</v> + <a>56</a> + <b>77</b> + <v>597</v> </b> <b> - <a>67</a> - <b>73</b> - <v>567</v> + <a>77</a> + <b>116</b> + <v>541</v> </b> <b> - <a>73</a> - <b>107</b> - <v>611</v> + <a>116</a> + <b>149</b> + <v>543</v> </b> <b> - <a>107</a> - <b>121</b> - <v>590</v> + <a>149</a> + <b>156</b> + <v>481</v> </b> <b> - <a>121</a> - <b>157</b> - <v>534</v> + <a>156</a> + <b>199</b> + <v>544</v> </b> <b> - <a>158</a> - <b>235</b> - <v>412</v> + <a>202</a> + <b>312</b> + <v>540</v> </b> <b> - <a>240</a> - <b>322</b> - <v>544</v> + <a>312</a> + <b>416</b> + <v>543</v> </b> <b> - <a>324</a> - <b>1897</b> - <v>534</v> + <a>416</a> + <b>1685</b> + <v>543</v> </b> <b> - <a>2000</a> - <b>270542</b> - <v>72</v> + <a>1697</a> + <b>354482</b> + <v>100</v> </b> </bs> </hist> @@ -4371,7 +4226,7 @@ <b> <a>1</a> <b>2</b> - <v>7109</v> + <v>7232</v> </b> </bs> </hist> @@ -4381,11 +4236,11 @@ </relation> <relation> <name>dbscheme_union_decl_child</name> - <cardinality>209792</cardinality> + <cardinality>276677</cardinality> <columnsizes> <e> <k>dbscheme_union_decl</k> - <v>51790</v> + <v>67798</v> </e> <e> <k>index</k> @@ -4393,7 +4248,7 @@ </e> <e> <k>child</k> - <v>209792</v> + <v>276677</v> </e> </columnsizes> <dependencies> @@ -4407,37 +4262,42 @@ <b> <a>1</a> <b>2</b> - <v>2156</v> + <v>2870</v> </b> <b> <a>2</a> <b>3</b> - <v>25065</v> + <v>33104</v> </b> <b> <a>3</a> <b>4</b> - <v>7795</v> + <v>10107</v> </b> <b> <a>4</a> <b>5</b> - <v>4896</v> + <v>6309</v> </b> <b> <a>5</a> <b>6</b> - <v>3506</v> + <v>4592</v> </b> <b> <a>6</a> <b>9</b> - <v>4492</v> + <v>5609</v> </b> <b> <a>9</a> + <b>69</b> + <v>5085</v> + </b> + <b> + <a>85</a> <b>106</b> - <v>3880</v> + <v>122</v> </b> </bs> </hist> @@ -4453,37 +4313,42 @@ <b> <a>1</a> <b>2</b> - <v>2156</v> + <v>2870</v> </b> <b> <a>2</a> <b>3</b> - <v>25065</v> + <v>33104</v> </b> <b> <a>3</a> <b>4</b> - <v>7795</v> + <v>10107</v> </b> <b> <a>4</a> <b>5</b> - <v>4896</v> + <v>6309</v> </b> <b> <a>5</a> <b>6</b> - <v>3506</v> + <v>4592</v> </b> <b> <a>6</a> <b>9</b> - <v>4492</v> + <v>5609</v> </b> <b> <a>9</a> + <b>69</b> + <v>5085</v> + </b> + <b> + <a>85</a> <b>106</b> - <v>3880</v> + <v>122</v> </b> </bs> </hist> @@ -4497,63 +4362,68 @@ <budget>12</budget> <bs> <b> - <a>7</a> - <b>40</b> + <a>11</a> + <b>44</b> <v>7</v> </b> <b> - <a>41</a> - <b>42</b> + <a>45</a> + <b>46</b> <v>11</v> </b> <b> - <a>55</a> - <b>56</b> + <a>59</a> + <b>103</b> <v>2</v> </b> <b> - <a>70</a> - <b>71</b> + <a>122</a> + <b>123</b> <v>17</v> </b> <b> - <a>71</a> - <b>72</b> - <v>10</v> + <a>123</a> + <b>124</b> + <v>6</v> </b> <b> - <a>98</a> - <b>147</b> - <v>9</v> + <a>126</a> + <b>166</b> + <v>8</v> </b> <b> - <a>213</a> - <b>223</b> - <v>9</v> + <a>173</a> + <b>319</b> + <v>6</v> + </b> + <b> + <a>327</a> + <b>328</b> + <v>8</v> </b> <b> - <a>223</a> - <b>399</b> + <a>328</a> + <b>544</b> <v>8</v> </b> <b> - <a>453</a> - <b>477</b> + <a>647</a> + <b>671</b> <v>8</v> </b> <b> - <a>505</a> - <b>1059</b> + <a>699</a> + <b>1414</b> <v>8</v> </b> <b> - <a>1142</a> - <b>3881</b> + <a>1501</a> + <b>5208</b> <v>8</v> </b> <b> - <a>4790</a> - <b>51791</b> + <a>6334</a> + <b>67799</b> <v>8</v> </b> </bs> @@ -4568,63 +4438,68 @@ <budget>12</budget> <bs> <b> - <a>7</a> - <b>40</b> + <a>11</a> + <b>44</b> <v>7</v> </b> <b> - <a>41</a> - <b>42</b> + <a>45</a> + <b>46</b> <v>11</v> </b> <b> - <a>55</a> - <b>56</b> + <a>59</a> + <b>103</b> <v>2</v> </b> <b> - <a>70</a> - <b>71</b> + <a>122</a> + <b>123</b> <v>17</v> </b> <b> - <a>71</a> - <b>72</b> - <v>10</v> + <a>123</a> + <b>124</b> + <v>6</v> </b> <b> - <a>98</a> - <b>147</b> - <v>9</v> + <a>126</a> + <b>166</b> + <v>8</v> </b> <b> - <a>213</a> - <b>223</b> - <v>9</v> + <a>173</a> + <b>319</b> + <v>6</v> + </b> + <b> + <a>327</a> + <b>328</b> + <v>8</v> </b> <b> - <a>223</a> - <b>399</b> + <a>328</a> + <b>544</b> <v>8</v> </b> <b> - <a>453</a> - <b>477</b> + <a>647</a> + <b>671</b> <v>8</v> </b> <b> - <a>505</a> - <b>1059</b> + <a>699</a> + <b>1414</b> <v>8</v> </b> <b> - <a>1142</a> - <b>3881</b> + <a>1501</a> + <b>5208</b> <v>8</v> </b> <b> - <a>4790</a> - <b>51791</b> + <a>6334</a> + <b>67799</b> <v>8</v> </b> </bs> @@ -4641,7 +4516,7 @@ <b> <a>1</a> <b>2</b> - <v>209792</v> + <v>276677</v> </b> </bs> </hist> @@ -4657,7 +4532,7 @@ <b> <a>1</a> <b>2</b> - <v>209792</v> + <v>276677</v> </b> </bs> </hist> @@ -4667,15 +4542,15 @@ </relation> <relation> <name>dbscheme_union_decl_def</name> - <cardinality>51790</cardinality> + <cardinality>67798</cardinality> <columnsizes> <e> <k>id</k> - <v>51790</v> + <v>67798</v> </e> <e> <k>base</k> - <v>51790</v> + <v>67798</v> </e> </columnsizes> <dependencies> @@ -4689,7 +4564,7 @@ <b> <a>1</a> <b>2</b> - <v>51790</v> + <v>67798</v> </b> </bs> </hist> @@ -4705,7 +4580,7 @@ <b> <a>1</a> <b>2</b> - <v>51790</v> + <v>67798</v> </b> </bs> </hist> @@ -5242,15 +5117,15 @@ </relation> <relation> <name>files</name> - <cardinality>11682</cardinality> + <cardinality>12283</cardinality> <columnsizes> <e> <k>id</k> - <v>11682</v> + <v>12283</v> </e> <e> <k>name</k> - <v>11682</v> + <v>12283</v> </e> </columnsizes> <dependencies> @@ -5264,7 +5139,7 @@ <b> <a>1</a> <b>2</b> - <v>11682</v> + <v>12283</v> </b> </bs> </hist> @@ -5280,7 +5155,7 @@ <b> <a>1</a> <b>2</b> - <v>11682</v> + <v>12283</v> </b> </bs> </hist> @@ -5290,15 +5165,15 @@ </relation> <relation> <name>folders</name> - <cardinality>3982</cardinality> + <cardinality>4402</cardinality> <columnsizes> <e> <k>id</k> - <v>3982</v> + <v>4402</v> </e> <e> <k>name</k> - <v>3982</v> + <v>4402</v> </e> </columnsizes> <dependencies> @@ -5312,7 +5187,7 @@ <b> <a>1</a> <b>2</b> - <v>3982</v> + <v>4402</v> </b> </bs> </hist> @@ -5328,7 +5203,7 @@ <b> <a>1</a> <b>2</b> - <v>3982</v> + <v>4402</v> </b> </bs> </hist> @@ -5338,11 +5213,11 @@ </relation> <relation> <name>json_array_child</name> - <cardinality>2660</cardinality> + <cardinality>5897</cardinality> <columnsizes> <e> <k>json_array</k> - <v>450</v> + <v>1962</v> </e> <e> <k>index</k> @@ -5350,7 +5225,7 @@ </e> <e> <k>child</k> - <v>2660</v> + <v>5897</v> </e> </columnsizes> <dependencies> @@ -5364,32 +5239,27 @@ <b> <a>1</a> <b>2</b> - <v>129</v> + <v>935</v> </b> <b> <a>2</a> <b>3</b> - <v>136</v> + <v>623</v> </b> <b> <a>3</a> <b>4</b> - <v>78</v> + <v>179</v> </b> <b> <a>4</a> - <b>5</b> - <v>37</v> - </b> - <b> - <a>5</a> <b>7</b> - <v>41</v> + <v>149</v> </b> <b> <a>7</a> <b>612</b> - <v>29</v> + <v>76</v> </b> </bs> </hist> @@ -5405,32 +5275,27 @@ <b> <a>1</a> <b>2</b> - <v>129</v> + <v>935</v> </b> <b> <a>2</a> <b>3</b> - <v>136</v> + <v>623</v> </b> <b> <a>3</a> <b>4</b> - <v>78</v> + <v>179</v> </b> <b> <a>4</a> - <b>5</b> - <v>37</v> - </b> - <b> - <a>5</a> <b>7</b> - <v>41</v> + <v>149</v> </b> <b> <a>7</a> <b>612</b> - <v>29</v> + <v>76</v> </b> </bs> </hist> @@ -5451,26 +5316,31 @@ <b> <a>2</a> <b>3</b> - <v>84</v> + <v>26</v> </b> <b> <a>3</a> <b>4</b> - <v>61</v> + <v>58</v> </b> <b> <a>4</a> - <b>7</b> + <b>5</b> + <v>61</v> + </b> + <b> + <a>5</a> + <b>8</b> <v>48</v> </b> <b> - <a>7</a> - <b>22</b> + <a>8</a> + <b>61</b> <v>46</v> </b> <b> - <a>26</a> - <b>451</b> + <a>69</a> + <b>1963</b> <v>8</v> </b> </bs> @@ -5492,26 +5362,31 @@ <b> <a>2</a> <b>3</b> - <v>84</v> + <v>26</v> </b> <b> <a>3</a> <b>4</b> - <v>61</v> + <v>58</v> </b> <b> <a>4</a> - <b>7</b> + <b>5</b> + <v>61</v> + </b> + <b> + <a>5</a> + <b>8</b> <v>48</v> </b> <b> - <a>7</a> - <b>22</b> + <a>8</a> + <b>61</b> <v>46</v> </b> <b> - <a>26</a> - <b>451</b> + <a>69</a> + <b>1963</b> <v>8</v> </b> </bs> @@ -5528,7 +5403,7 @@ <b> <a>1</a> <b>2</b> - <v>2660</v> + <v>5897</v> </b> </bs> </hist> @@ -5544,7 +5419,7 @@ <b> <a>1</a> <b>2</b> - <v>2660</v> + <v>5897</v> </b> </bs> </hist> @@ -5554,40 +5429,32 @@ </relation> <relation> <name>json_array_def</name> - <cardinality>481</cardinality> + <cardinality>2026</cardinality> <columnsizes> <e> <k>id</k> - <v>481</v> + <v>2026</v> </e> </columnsizes> <dependencies/> </relation> <relation> - <name>json_ast_node_info</name> - <cardinality>34722</cardinality> + <name>json_ast_node_location</name> + <cardinality>148630</cardinality> <columnsizes> <e> <k>node</k> - <v>34722</v> - </e> - <e> - <k>parent</k> - <v>9501</v> - </e> - <e> - <k>parent_index</k> - <v>1223</v> + <v>148630</v> </e> <e> <k>loc</k> - <v>34603</v> + <v>148504</v> </e> </columnsizes> <dependencies> <dep> <src>node</src> - <trg>parent</trg> + <trg>loc</trg> <val> <hist> <budget>12</budget> @@ -5595,15 +5462,15 @@ <b> <a>1</a> <b>2</b> - <v>34722</v> + <v>148630</v> </b> </bs> </hist> </val> </dep> <dep> - <src>node</src> - <trg>parent_index</trg> + <src>loc</src> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -5611,15 +5478,40 @@ <b> <a>1</a> <b>2</b> - <v>34722</v> + <v>148378</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>126</v> </b> </bs> </hist> </val> </dep> + </dependencies> + </relation> + <relation> + <name>json_ast_node_parent</name> + <cardinality>148287</cardinality> + <columnsizes> + <e> + <k>node</k> + <v>148287</v> + </e> + <e> + <k>parent</k> + <v>42018</v> + </e> + <e> + <k>parent_index</k> + <v>1223</v> + </e> + </columnsizes> + <dependencies> <dep> <src>node</src> - <trg>loc</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -5627,38 +5519,23 @@ <b> <a>1</a> <b>2</b> - <v>34722</v> + <v>148287</v> </b> </bs> </hist> </val> </dep> <dep> - <src>parent</src> - <trg>node</trg> + <src>node</src> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> <bs> <b> <a>1</a> - <b>3</b> - <v>597</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>8027</v> - </b> - <b> - <a>4</a> - <b>12</b> - <v>718</v> - </b> - <b> - <a>13</a> - <b>1224</b> - <v>159</v> + <b>2</b> + <v>148287</v> </b> </bs> </hist> @@ -5666,7 +5543,7 @@ </dep> <dep> <src>parent</src> - <trg>parent_index</trg> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -5674,22 +5551,22 @@ <b> <a>1</a> <b>3</b> - <v>597</v> + <v>608</v> </b> <b> <a>3</a> <b>4</b> - <v>8027</v> + <v>36317</v> </b> <b> <a>4</a> - <b>12</b> - <v>718</v> + <b>6</b> + <v>3406</v> </b> <b> - <a>13</a> + <a>7</a> <b>1224</b> - <v>159</v> + <v>1687</v> </b> </bs> </hist> @@ -5697,7 +5574,7 @@ </dep> <dep> <src>parent</src> - <trg>loc</trg> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -5705,22 +5582,22 @@ <b> <a>1</a> <b>3</b> - <v>597</v> + <v>608</v> </b> <b> <a>3</a> <b>4</b> - <v>8027</v> + <v>36317</v> </b> <b> <a>4</a> - <b>12</b> - <v>718</v> + <b>6</b> + <v>3406</v> </b> <b> - <a>13</a> + <a>7</a> <b>1224</b> - <v>159</v> + <v>1687</v> </b> </bs> </hist> @@ -5741,68 +5618,37 @@ <b> <a>2</a> <b>3</b> - <v>168</v> + <v>52</v> </b> <b> <a>3</a> <b>4</b> - <v>106</v> + <v>116</v> </b> <b> <a>4</a> - <b>7</b> - <v>96</v> - </b> - <b> - <a>7</a> - <b>22</b> - <v>94</v> - </b> - <b> - <a>22</a> - <b>9502</b> - <v>31</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>parent_index</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>728</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>168</v> + <b>6</b> + <v>54</v> </b> <b> - <a>3</a> - <b>4</b> - <v>106</v> + <a>6</a> + <b>7</b> + <v>68</v> </b> <b> - <a>4</a> - <b>7</b> + <a>7</a> + <b>12</b> <v>96</v> </b> <b> - <a>7</a> - <b>22</b> - <v>94</v> + <a>12</a> + <b>213</b> + <v>92</v> </b> <b> - <a>22</a> - <b>9502</b> - <v>31</v> + <a>226</a> + <b>42019</b> + <v>17</v> </b> </bs> </hist> @@ -5810,7 +5656,7 @@ </dep> <dep> <src>parent_index</src> - <trg>loc</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -5823,90 +5669,37 @@ <b> <a>2</a> <b>3</b> - <v>168</v> + <v>52</v> </b> <b> <a>3</a> <b>4</b> - <v>106</v> + <v>116</v> </b> <b> <a>4</a> - <b>7</b> - <v>96</v> - </b> - <b> - <a>7</a> - <b>22</b> - <v>94</v> - </b> - <b> - <a>22</a> - <b>9385</b> - <v>31</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>node</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>34484</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>119</v> + <b>6</b> + <v>54</v> </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs> <b> - <a>1</a> - <b>2</b> - <v>34484</v> + <a>6</a> + <b>7</b> + <v>68</v> </b> <b> - <a>2</a> - <b>3</b> - <v>119</v> + <a>7</a> + <b>12</b> + <v>96</v> </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent_index</trg> - <val> - <hist> - <budget>12</budget> - <bs> <b> - <a>1</a> - <b>2</b> - <v>34601</v> + <a>12</a> + <b>213</b> + <v>92</v> </b> <b> - <a>2</a> - <b>3</b> - <v>2</v> + <a>226</a> + <b>42019</b> + <v>17</v> </b> </bs> </hist> @@ -5916,11 +5709,11 @@ </relation> <relation> <name>json_document_child</name> - <cardinality>269</cardinality> + <cardinality>321</cardinality> <columnsizes> <e> <k>json_document</k> - <v>269</v> + <v>321</v> </e> <e> <k>index</k> @@ -5928,7 +5721,7 @@ </e> <e> <k>child</k> - <v>269</v> + <v>321</v> </e> </columnsizes> <dependencies> @@ -5942,7 +5735,7 @@ <b> <a>1</a> <b>2</b> - <v>269</v> + <v>321</v> </b> </bs> </hist> @@ -5958,7 +5751,7 @@ <b> <a>1</a> <b>2</b> - <v>269</v> + <v>321</v> </b> </bs> </hist> @@ -5972,8 +5765,8 @@ <budget>12</budget> <bs> <b> - <a>269</a> - <b>270</b> + <a>321</a> + <b>322</b> <v>1</v> </b> </bs> @@ -5988,8 +5781,8 @@ <budget>12</budget> <bs> <b> - <a>269</a> - <b>270</b> + <a>321</a> + <b>322</b> <v>1</v> </b> </bs> @@ -6006,7 +5799,7 @@ <b> <a>1</a> <b>2</b> - <v>269</v> + <v>321</v> </b> </bs> </hist> @@ -6022,7 +5815,7 @@ <b> <a>1</a> <b>2</b> - <v>269</v> + <v>321</v> </b> </bs> </hist> @@ -6032,30 +5825,30 @@ </relation> <relation> <name>json_document_def</name> - <cardinality>272</cardinality> + <cardinality>324</cardinality> <columnsizes> <e> <k>id</k> - <v>272</v> + <v>324</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>json_object_child</name> - <cardinality>2223</cardinality> + <cardinality>12461</cardinality> <columnsizes> <e> <k>json_object</k> - <v>763</v> + <v>4817</v> </e> <e> <k>index</k> - <v>110</v> + <v>159</v> </e> <e> <k>child</k> - <v>2223</v> + <v>12461</v> </e> </columnsizes> <dependencies> @@ -6069,32 +5862,27 @@ <b> <a>1</a> <b>2</b> - <v>211</v> + <v>754</v> </b> <b> <a>2</a> <b>3</b> - <v>322</v> + <v>2780</v> </b> <b> <a>3</a> <b>4</b> - <v>65</v> + <v>781</v> </b> <b> <a>4</a> - <b>6</b> - <v>44</v> - </b> - <b> - <a>6</a> - <b>7</b> - <v>102</v> + <b>11</b> + <v>445</v> </b> <b> - <a>7</a> - <b>111</b> - <v>19</v> + <a>11</a> + <b>160</b> + <v>57</v> </b> </bs> </hist> @@ -6110,32 +5898,27 @@ <b> <a>1</a> <b>2</b> - <v>211</v> + <v>754</v> </b> <b> <a>2</a> <b>3</b> - <v>322</v> + <v>2780</v> </b> <b> <a>3</a> <b>4</b> - <v>65</v> + <v>781</v> </b> <b> <a>4</a> - <b>6</b> - <v>44</v> - </b> - <b> - <a>6</a> - <b>7</b> - <v>102</v> + <b>11</b> + <v>445</v> </b> <b> - <a>7</a> - <b>111</b> - <v>19</v> + <a>11</a> + <b>160</b> + <v>57</v> </b> </bs> </hist> @@ -6151,37 +5934,42 @@ <b> <a>1</a> <b>2</b> - <v>61</v> + <v>23</v> </b> <b> <a>2</a> <b>3</b> - <v>11</v> + <v>65</v> </b> <b> <a>3</a> <b>4</b> - <v>10</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> - <v>2</v> + <v>20</v> </b> <b> <a>5</a> <b>6</b> - <v>14</v> + <v>11</v> </b> <b> - <a>7</a> - <b>166</b> - <v>9</v> + <a>6</a> + <b>9</b> + <v>12</v> </b> <b> - <a>230</a> - <b>764</b> - <v>3</v> + <a>9</a> + <b>10</b> + <v>14</v> + </b> + <b> + <a>13</a> + <b>4818</b> + <v>12</v> </b> </bs> </hist> @@ -6197,37 +5985,42 @@ <b> <a>1</a> <b>2</b> - <v>61</v> + <v>23</v> </b> <b> <a>2</a> <b>3</b> - <v>11</v> + <v>65</v> </b> <b> <a>3</a> <b>4</b> - <v>10</v> + <v>2</v> </b> <b> <a>4</a> <b>5</b> - <v>2</v> + <v>20</v> </b> <b> <a>5</a> <b>6</b> - <v>14</v> + <v>11</v> </b> <b> - <a>7</a> - <b>166</b> - <v>9</v> + <a>6</a> + <b>9</b> + <v>12</v> </b> <b> - <a>230</a> - <b>764</b> - <v>3</v> + <a>9</a> + <b>10</b> + <v>14</v> + </b> + <b> + <a>13</a> + <b>4818</b> + <v>12</v> </b> </bs> </hist> @@ -6243,7 +6036,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6259,7 +6052,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6269,30 +6062,30 @@ </relation> <relation> <name>json_object_def</name> - <cardinality>787</cardinality> + <cardinality>5034</cardinality> <columnsizes> <e> <k>id</k> - <v>787</v> + <v>5034</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>json_pair_def</name> - <cardinality>2223</cardinality> + <cardinality>12461</cardinality> <columnsizes> <e> <k>id</k> - <v>2223</v> + <v>12461</v> </e> <e> <k>key__</k> - <v>2223</v> + <v>12461</v> </e> <e> <k>value</k> - <v>2223</v> + <v>12461</v> </e> </columnsizes> <dependencies> @@ -6306,7 +6099,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6322,7 +6115,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6338,7 +6131,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6354,7 +6147,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6370,7 +6163,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6386,7 +6179,7 @@ <b> <a>1</a> <b>2</b> - <v>2223</v> + <v>12461</v> </b> </bs> </hist> @@ -6396,15 +6189,15 @@ </relation> <relation> <name>json_string_child</name> - <cardinality>5465</cardinality> + <cardinality>22171</cardinality> <columnsizes> <e> <k>json_string__</k> - <v>5465</v> + <v>22171</v> </e> <e> <k>child</k> - <v>5465</v> + <v>22171</v> </e> </columnsizes> <dependencies> @@ -6418,7 +6211,7 @@ <b> <a>1</a> <b>2</b> - <v>5465</v> + <v>22171</v> </b> </bs> </hist> @@ -6434,7 +6227,7 @@ <b> <a>1</a> <b>2</b> - <v>5465</v> + <v>22171</v> </b> </bs> </hist> @@ -6444,22 +6237,22 @@ </relation> <relation> <name>json_string_def</name> - <cardinality>5469</cardinality> + <cardinality>22176</cardinality> <columnsizes> <e> <k>id</k> - <v>5469</v> + <v>22176</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>json_tokeninfo</name> - <cardinality>25490</cardinality> + <cardinality>106609</cardinality> <columnsizes> <e> <k>id</k> - <v>25490</v> + <v>106609</v> </e> <e> <k>kind</k> @@ -6467,7 +6260,7 @@ </e> <e> <k>value</k> - <v>3153</v> + <v>4324</v> </e> </columnsizes> <dependencies> @@ -6481,7 +6274,7 @@ <b> <a>1</a> <b>2</b> - <v>25490</v> + <v>106609</v> </b> </bs> </hist> @@ -6497,7 +6290,7 @@ <b> <a>1</a> <b>2</b> - <v>25490</v> + <v>106609</v> </b> </bs> </hist> @@ -6511,38 +6304,38 @@ <budget>12</budget> <bs> <b> - <a>18</a> - <b>19</b> + <a>19</a> + <b>20</b> <v>1</v> </b> <b> - <a>27</a> - <b>28</b> + <a>71</a> + <b>72</b> <v>1</v> </b> <b> - <a>106</a> - <b>107</b> + <a>248</a> + <b>249</b> <v>1</v> </b> <b> - <a>246</a> - <b>247</b> + <a>607</a> + <b>608</b> <v>1</v> </b> <b> - <a>259</a> - <b>260</b> + <a>978</a> + <b>979</b> <v>1</v> </b> <b> - <a>5465</a> - <b>5466</b> + <a>22171</a> + <b>22172</b> <v>1</v> </b> <b> - <a>19369</a> - <b>19370</b> + <a>82515</a> + <b>82516</b> <v>1</v> </b> </bs> @@ -6567,18 +6360,18 @@ <v>1</v> </b> <b> - <a>14</a> - <b>15</b> + <a>16</a> + <b>17</b> <v>1</v> </b> <b> - <a>18</a> - <b>19</b> + <a>29</a> + <b>30</b> <v>1</v> </b> <b> - <a>3111</a> - <b>3112</b> + <a>4277</a> + <b>4278</b> <v>1</v> </b> </bs> @@ -6595,17 +6388,27 @@ <b> <a>1</a> <b>2</b> - <v>2832</v> + <v>3160</v> </b> <b> <a>2</a> - <b>7</b> - <v>246</v> + <b>3</b> + <v>406</v> </b> <b> - <a>7</a> - <b>10939</b> - <v>75</v> + <a>3</a> + <b>5</b> + <v>365</v> + </b> + <b> + <a>5</a> + <b>62</b> + <v>326</v> + </b> + <b> + <a>71</a> + <b>44353</b> + <v>67</v> </b> </bs> </hist> @@ -6621,7 +6424,12 @@ <b> <a>1</a> <b>2</b> - <v>3153</v> + <v>4316</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>8</v> </b> </bs> </hist> @@ -6631,31 +6439,31 @@ </relation> <relation> <name>locations_default</name> - <cardinality>8479546</cardinality> + <cardinality>9617371</cardinality> <columnsizes> <e> <k>id</k> - <v>8479546</v> + <v>9617371</v> </e> <e> <k>file</k> - <v>11682</v> + <v>12283</v> </e> <e> <k>beginLine</k> - <v>9036</v> + <v>11293</v> </e> <e> <k>beginColumn</k> - <v>1371</v> + <v>1385</v> </e> <e> <k>endLine</k> - <v>9036</v> + <v>11293</v> </e> <e> <k>endColumn</k> - <v>1376</v> + <v>1389</v> </e> </columnsizes> <dependencies> @@ -6669,7 +6477,7 @@ <b> <a>1</a> <b>2</b> - <v>8479546</v> + <v>9617371</v> </b> </bs> </hist> @@ -6685,7 +6493,7 @@ <b> <a>1</a> <b>2</b> - <v>8479546</v> + <v>9617371</v> </b> </bs> </hist> @@ -6701,7 +6509,7 @@ <b> <a>1</a> <b>2</b> - <v>8479546</v> + <v>9617371</v> </b> </bs> </hist> @@ -6717,7 +6525,7 @@ <b> <a>1</a> <b>2</b> - <v>8479546</v> + <v>9617371</v> </b> </bs> </hist> @@ -6733,7 +6541,7 @@ <b> <a>1</a> <b>2</b> - <v>8479546</v> + <v>9617371</v> </b> </bs> </hist> @@ -6749,72 +6557,72 @@ <b> <a>1</a> <b>21</b> - <v>906</v> + <v>930</v> </b> <b> <a>21</a> <b>32</b> - <v>909</v> + <v>950</v> </b> <b> <a>32</a> <b>40</b> - <v>959</v> + <v>1024</v> </b> <b> <a>40</a> <b>54</b> - <v>882</v> + <v>930</v> </b> <b> <a>54</a> - <b>70</b> - <v>903</v> + <b>72</b> + <v>952</v> </b> <b> - <a>70</a> - <b>88</b> - <v>878</v> + <a>72</a> + <b>89</b> + <v>965</v> </b> <b> - <a>88</a> - <b>117</b> - <v>880</v> - </b> + <a>89</a> + <b>119</b> + <v>929</v> + </b> <b> - <a>117</a> - <b>160</b> - <v>879</v> + <a>119</a> + <b>164</b> + <v>934</v> </b> <b> - <a>160</a> - <b>236</b> - <v>880</v> + <a>164</a> + <b>243</b> + <v>923</v> </b> <b> - <a>236</a> - <b>377</b> - <v>877</v> + <a>243</a> + <b>392</b> + <v>923</v> </b> <b> - <a>377</a> - <b>709</b> - <v>878</v> + <a>392</a> + <b>748</b> + <v>923</v> </b> <b> - <a>709</a> - <b>2101</b> - <v>877</v> + <a>748</a> + <b>2678</b> + <v>922</v> </b> <b> - <a>2102</a> - <b>9785</b> - <v>880</v> + <a>2683</a> + <b>9950</b> + <v>923</v> </b> <b> - <a>9805</a> + <a>9962</a> <b>54160</b> - <v>94</v> + <v>55</v> </b> </bs> </hist> @@ -6830,72 +6638,72 @@ <b> <a>1</a> <b>3</b> - <v>511</v> + <v>434</v> </b> <b> <a>3</a> <b>4</b> - <v>1068</v> + <v>775</v> </b> <b> <a>4</a> <b>5</b> - <v>961</v> + <v>1146</v> </b> <b> <a>5</a> <b>6</b> - <v>680</v> + <v>995</v> </b> <b> <a>6</a> <b>7</b> - <v>632</v> + <v>691</v> </b> <b> <a>7</a> <b>9</b> - <v>946</v> + <v>988</v> </b> <b> <a>9</a> <b>11</b> - <v>969</v> + <v>919</v> </b> <b> <a>11</a> - <b>16</b> - <v>1044</v> + <b>15</b> + <v>992</v> </b> <b> - <a>16</a> - <b>23</b> - <v>907</v> + <a>15</a> + <b>22</b> + <v>1018</v> </b> <b> - <a>23</a> - <b>36</b> - <v>906</v> + <a>22</a> + <b>34</b> + <v>975</v> </b> <b> - <a>36</a> - <b>65</b> - <v>885</v> + <a>34</a> + <b>61</b> + <v>935</v> </b> <b> - <a>65</a> - <b>158</b> - <v>879</v> + <a>61</a> + <b>143</b> + <v>922</v> </b> <b> - <a>158</a> - <b>1002</b> - <v>877</v> + <a>143</a> + <b>975</b> + <v>923</v> </b> <b> - <a>1002</a> - <b>9027</b> - <v>417</v> + <a>977</a> + <b>11284</b> + <v>570</v> </b> </bs> </hist> @@ -6911,67 +6719,67 @@ <b> <a>1</a> <b>11</b> - <v>997</v> + <v>1028</v> </b> <b> <a>11</a> <b>17</b> - <v>858</v> + <v>920</v> </b> <b> <a>17</a> <b>21</b> - <v>876</v> + <v>913</v> </b> <b> <a>21</a> <b>26</b> - <v>967</v> + <v>1027</v> </b> <b> <a>26</a> <b>32</b> - <v>939</v> + <v>987</v> </b> <b> <a>32</a> <b>39</b> - <v>976</v> + <v>994</v> </b> <b> <a>39</a> <b>47</b> - <v>938</v> + <v>1014</v> </b> <b> <a>47</a> - <b>56</b> - <v>928</v> + <b>57</b> + <v>1003</v> </b> <b> - <a>56</a> + <a>57</a> <b>66</b> - <v>908</v> + <v>957</v> </b> <b> <a>66</a> <b>77</b> - <v>925</v> + <v>1001</v> </b> <b> <a>77</a> <b>87</b> - <v>897</v> + <v>934</v> </b> <b> <a>87</a> - <b>98</b> - <v>929</v> + <b>99</b> + <v>1024</v> </b> <b> - <a>98</a> + <a>99</a> <b>512</b> - <v>544</v> + <v>481</v> </b> </bs> </hist> @@ -6987,72 +6795,72 @@ <b> <a>1</a> <b>3</b> - <v>510</v> + <v>434</v> </b> <b> <a>3</a> <b>4</b> - <v>1068</v> + <v>774</v> </b> <b> <a>4</a> <b>5</b> - <v>962</v> + <v>1147</v> </b> <b> <a>5</a> <b>6</b> - <v>680</v> + <v>995</v> </b> <b> <a>6</a> <b>7</b> - <v>632</v> + <v>690</v> </b> <b> <a>7</a> <b>9</b> - <v>946</v> + <v>989</v> </b> <b> <a>9</a> <b>11</b> - <v>969</v> + <v>919</v> </b> <b> <a>11</a> - <b>16</b> - <v>1044</v> + <b>15</b> + <v>992</v> </b> <b> - <a>16</a> - <b>23</b> - <v>907</v> + <a>15</a> + <b>22</b> + <v>1018</v> </b> <b> - <a>23</a> - <b>36</b> - <v>906</v> + <a>22</a> + <b>34</b> + <v>975</v> </b> <b> - <a>36</a> - <b>65</b> - <v>885</v> + <a>34</a> + <b>61</b> + <v>935</v> </b> <b> - <a>65</a> - <b>158</b> - <v>879</v> + <a>61</a> + <b>143</b> + <v>922</v> </b> <b> - <a>158</a> - <b>1002</b> - <v>877</v> + <a>143</a> + <b>975</b> + <v>923</v> </b> <b> - <a>1002</a> - <b>9027</b> - <v>417</v> + <a>977</a> + <b>11284</b> + <v>570</v> </b> </bs> </hist> @@ -7068,67 +6876,67 @@ <b> <a>1</a> <b>14</b> - <v>962</v> + <v>1008</v> </b> <b> <a>14</a> - <b>20</b> - <v>888</v> + <b>21</b> + <v>1081</v> </b> <b> - <a>20</a> - <b>24</b> - <v>908</v> + <a>21</a> + <b>25</b> + <v>958</v> </b> <b> - <a>24</a> - <b>29</b> - <v>942</v> + <a>25</a> + <b>30</b> + <v>950</v> </b> <b> - <a>29</a> - <b>36</b> - <v>942</v> + <a>30</a> + <b>37</b> + <v>999</v> </b> <b> - <a>36</a> - <b>43</b> - <v>953</v> + <a>37</a> + <b>44</b> + <v>1031</v> </b> <b> - <a>43</a> - <b>51</b> - <v>914</v> + <a>44</a> + <b>52</b> + <v>923</v> </b> <b> - <a>51</a> - <b>61</b> - <v>930</v> + <a>52</a> + <b>62</b> + <v>946</v> </b> <b> - <a>61</a> - <b>72</b> - <v>954</v> + <a>62</a> + <b>73</b> + <v>1042</v> </b> <b> - <a>72</a> - <b>82</b> - <v>911</v> + <a>73</a> + <b>83</b> + <v>1006</v> </b> <b> - <a>82</a> - <b>92</b> - <v>914</v> + <a>83</a> + <b>93</b> + <v>934</v> </b> <b> - <a>92</a> - <b>102</b> - <v>933</v> + <a>93</a> + <b>104</b> + <v>945</v> </b> <b> - <a>102</a> + <a>104</a> <b>523</b> - <v>531</v> + <v>460</v> </b> </bs> </hist> @@ -7144,62 +6952,67 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>1130</v> </b> <b> - <a>2</a> - <b>10</b> - <v>621</v> + <a>4</a> + <b>5</b> + <v>1128</v> </b> <b> - <a>10</a> + <a>5</a> <b>11</b> - <v>1424</v> + <v>801</v> </b> <b> <a>11</a> - <b>20</b> - <v>819</v> + <b>16</b> + <v>994</v> </b> <b> - <a>20</a> - <b>38</b> - <v>679</v> + <a>16</a> + <b>22</b> + <v>854</v> </b> <b> - <a>38</a> - <b>92</b> - <v>685</v> + <a>22</a> + <b>30</b> + <v>890</v> </b> <b> - <a>92</a> - <b>170</b> - <v>680</v> + <a>30</a> + <b>41</b> + <v>877</v> </b> <b> - <a>170</a> - <b>595</b> - <v>678</v> + <a>41</a> + <b>56</b> + <v>860</v> </b> <b> - <a>596</a> - <b>1692</b> - <v>679</v> + <a>56</a> + <b>92</b> + <v>854</v> + </b> + <b> + <a>92</a> + <b>1472</b> + <v>847</v> </b> <b> - <a>1692</a> - <b>3137</b> - <v>679</v> + <a>1499</a> + <b>2520</b> + <v>847</v> </b> <b> - <a>3137</a> - <b>12009</b> - <v>678</v> + <a>2527</a> + <b>5340</b> + <v>847</v> </b> <b> - <a>12114</a> - <b>51821</b> - <v>86</v> + <a>5348</a> + <b>46386</b> + <v>364</v> </b> </bs> </hist> @@ -7215,52 +7028,62 @@ <b> <a>1</a> <b>2</b> - <v>2644</v> + <v>2258</v> </b> <b> <a>2</a> <b>3</b> - <v>1456</v> + <v>654</v> </b> <b> <a>3</a> - <b>10</b> - <v>685</v> + <b>4</b> + <v>1191</v> </b> <b> - <a>10</a> - <b>11</b> - <v>354</v> + <a>4</a> + <b>5</b> + <v>1015</v> </b> <b> - <a>11</a> - <b>12</b> - <v>565</v> + <a>5</a> + <b>6</b> + <v>658</v> </b> <b> - <a>12</a> - <b>18</b> - <v>691</v> + <a>6</a> + <b>7</b> + <v>532</v> </b> <b> - <a>18</a> - <b>206</b> - <v>680</v> + <a>7</a> + <b>8</b> + <v>712</v> </b> <b> - <a>206</a> - <b>332</b> - <v>684</v> + <a>8</a> + <b>10</b> + <v>1014</v> + </b> + <b> + <a>10</a> + <b>109</b> + <v>852</v> + </b> + <b> + <a>109</a> + <b>400</b> + <v>847</v> </b> <b> - <a>332</a> - <b>542</b> - <v>679</v> + <a>400</a> + <b>626</b> + <v>849</v> </b> <b> - <a>542</a> - <b>11511</b> - <v>598</v> + <a>626</a> + <b>12065</b> + <v>711</v> </b> </bs> </hist> @@ -7276,57 +7099,62 @@ <b> <a>1</a> <b>2</b> - <v>1516</v> + <v>1130</v> </b> <b> - <a>2</a> - <b>7</b> - <v>524</v> + <a>3</a> + <b>4</b> + <v>1454</v> </b> <b> - <a>7</a> + <a>4</a> <b>8</b> - <v>1697</v> + <v>977</v> </b> <b> <a>8</a> - <b>13</b> - <v>674</v> + <b>11</b> + <v>746</v> </b> <b> - <a>13</a> - <b>18</b> - <v>834</v> + <a>11</a> + <b>15</b> + <v>1029</v> </b> <b> - <a>18</a> - <b>28</b> - <v>695</v> + <a>15</a> + <b>20</b> + <v>966</v> </b> <b> - <a>28</a> - <b>46</b> - <v>696</v> + <a>20</a> + <b>27</b> + <v>942</v> </b> <b> - <a>46</a> - <b>76</b> - <v>685</v> + <a>27</a> + <b>37</b> + <v>854</v> </b> <b> - <a>76</a> - <b>92</b> - <v>692</v> + <a>37</a> + <b>57</b> + <v>853</v> </b> <b> - <a>92</a> - <b>105</b> - <v>687</v> + <a>57</a> + <b>84</b> + <v>882</v> </b> <b> - <a>105</a> - <b>387</b> - <v>336</v> + <a>84</a> + <b>101</b> + <v>895</v> + </b> + <b> + <a>101</a> + <b>397</b> + <v>565</v> </b> </bs> </hist> @@ -7342,42 +7170,42 @@ <b> <a>1</a> <b>2</b> - <v>4164</v> + <v>4809</v> </b> <b> <a>2</a> <b>3</b> - <v>1304</v> + <v>1797</v> </b> <b> <a>3</a> <b>4</b> - <v>500</v> + <v>961</v> </b> <b> <a>4</a> <b>6</b> - <v>624</v> + <v>940</v> </b> <b> <a>6</a> - <b>9</b> - <v>648</v> + <b>10</b> + <v>986</v> </b> <b> - <a>9</a> - <b>14</b> - <v>756</v> + <a>10</a> + <b>16</b> + <v>862</v> </b> <b> - <a>14</a> - <b>26</b> - <v>678</v> + <a>16</a> + <b>45</b> + <v>848</v> </b> <b> - <a>26</a> - <b>4558</b> - <v>362</v> + <a>45</a> + <b>5676</b> + <v>90</v> </b> </bs> </hist> @@ -7393,57 +7221,67 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>1130</v> </b> <b> - <a>2</a> - <b>7</b> - <v>666</v> + <a>3</a> + <b>4</b> + <v>1128</v> </b> <b> - <a>7</a> + <a>4</a> <b>8</b> - <v>1472</v> + <v>710</v> </b> <b> <a>8</a> - <b>13</b> - <v>824</v> + <b>10</b> + <v>808</v> </b> <b> - <a>13</a> - <b>18</b> - <v>712</v> + <a>10</a> + <b>14</b> + <v>1024</v> </b> <b> - <a>18</a> + <a>14</a> + <b>19</b> + <v>1007</v> + </b> + <b> + <a>19</a> <b>26</b> - <v>679</v> + <v>963</v> </b> <b> <a>26</a> - <b>42</b> - <v>690</v> + <b>34</b> + <v>848</v> </b> <b> - <a>42</a> - <b>73</b> - <v>701</v> + <a>34</a> + <b>49</b> + <v>857</v> </b> <b> - <a>73</a> - <b>91</b> - <v>697</v> + <a>49</a> + <b>77</b> + <v>860</v> </b> <b> - <a>91</a> - <b>105</b> - <v>721</v> + <a>77</a> + <b>97</b> + <v>895</v> </b> <b> - <a>105</a> - <b>391</b> - <v>546</v> + <a>97</a> + <b>118</b> + <v>857</v> + </b> + <b> + <a>118</a> + <b>400</b> + <v>206</v> </b> </bs> </hist> @@ -7459,7 +7297,7 @@ <b> <a>1</a> <b>4</b> - <v>92</v> + <v>102</v> </b> <b> <a>4</a> @@ -7469,62 +7307,62 @@ <b> <a>5</a> <b>8</b> - <v>122</v> + <v>65</v> </b> <b> <a>8</a> <b>9</b> - <v>123</v> + <v>122</v> </b> <b> <a>9</a> <b>11</b> - <v>117</v> + <v>110</v> </b> <b> <a>11</a> <b>12</b> - <v>40</v> + <v>73</v> </b> <b> <a>12</a> <b>13</b> - <v>109</v> + <v>114</v> </b> <b> <a>13</a> - <b>17</b> - <v>118</v> + <b>18</b> + <v>106</v> </b> <b> - <a>17</a> - <b>22</b> - <v>108</v> + <a>18</a> + <b>21</b> + <v>115</v> </b> <b> - <a>22</a> - <b>33</b> - <v>106</v> + <a>21</a> + <b>32</b> + <v>118</v> </b> <b> - <a>33</a> - <b>75</b> - <v>103</v> + <a>32</a> + <b>61</b> + <v>104</v> </b> <b> - <a>75</a> - <b>739</b> - <v>103</v> + <a>61</a> + <b>255</b> + <v>104</v> </b> <b> - <a>740</a> - <b>195640</b> - <v>103</v> + <a>261</a> + <b>113805</b> + <v>104</v> </b> <b> - <a>213807</a> - <b>865889</b> - <v>6</v> + <a>114086</a> + <b>1069778</b> + <v>27</v> </b> </bs> </hist> @@ -7540,22 +7378,22 @@ <b> <a>1</a> <b>3</b> - <v>120</v> + <v>118</v> + </b> + <b> + <a>3</a> + <b>4</b> + <v>13</v> </b> <b> <a>4</a> <b>5</b> - <v>120</v> + <v>119</v> </b> <b> <a>5</a> - <b>7</b> - <v>71</v> - </b> - <b> - <a>7</a> <b>8</b> - <v>62</v> + <v>75</v> </b> <b> <a>8</a> @@ -7565,47 +7403,47 @@ <b> <a>9</a> <b>11</b> - <v>109</v> + <v>105</v> </b> <b> <a>11</a> <b>12</b> - <v>40</v> + <v>73</v> </b> <b> <a>12</a> <b>13</b> - <v>112</v> + <v>111</v> </b> <b> <a>13</a> - <b>17</b> - <v>125</v> + <b>19</b> + <v>122</v> </b> <b> - <a>17</a> - <b>23</b> - <v>105</v> + <a>19</a> + <b>22</b> + <v>111</v> </b> <b> - <a>23</a> - <b>34</b> - <v>106</v> + <a>22</a> + <b>33</b> + <v>108</v> </b> <b> - <a>34</a> - <b>79</b> - <v>103</v> + <a>33</a> + <b>66</b> + <v>107</v> </b> <b> - <a>80</a> - <b>3436</b> - <v>103</v> + <a>68</a> + <b>683</b> + <v>104</v> </b> <b> - <a>3468</a> - <b>11682</b> - <v>76</v> + <a>732</a> + <b>12283</b> + <v>100</v> </b> </bs> </hist> @@ -7621,37 +7459,37 @@ <b> <a>1</a> <b>2</b> - <v>215</v> + <v>223</v> </b> <b> <a>2</a> <b>3</b> - <v>318</v> + <v>307</v> </b> <b> <a>3</a> <b>4</b> - <v>126</v> + <v>135</v> </b> <b> <a>4</a> <b>5</b> - <v>141</v> + <v>140</v> </b> <b> <a>5</a> <b>6</b> - <v>75</v> + <v>78</v> </b> <b> <a>6</a> <b>8</b> - <v>103</v> + <v>101</v> </b> <b> <a>8</a> <b>13</b> - <v>117</v> + <v>120</v> </b> <b> <a>13</a> @@ -7660,13 +7498,13 @@ </b> <b> <a>32</a> - <b>2080</b> - <v>103</v> + <b>2144</b> + <v>104</v> </b> <b> - <a>2093</a> - <b>9035</b> - <v>69</v> + <a>2186</a> + <b>11292</b> + <v>73</v> </b> </bs> </hist> @@ -7682,37 +7520,37 @@ <b> <a>1</a> <b>2</b> - <v>215</v> + <v>223</v> </b> <b> <a>2</a> <b>3</b> - <v>318</v> + <v>307</v> </b> <b> <a>3</a> <b>4</b> - <v>126</v> + <v>135</v> </b> <b> <a>4</a> <b>5</b> - <v>141</v> + <v>140</v> </b> <b> <a>5</a> <b>6</b> - <v>75</v> + <v>78</v> </b> <b> <a>6</a> <b>8</b> - <v>103</v> + <v>100</v> </b> <b> <a>8</a> <b>13</b> - <v>117</v> + <v>121</v> </b> <b> <a>13</a> @@ -7721,13 +7559,13 @@ </b> <b> <a>32</a> - <b>2112</b> - <v>103</v> + <b>2158</b> + <v>104</v> </b> <b> - <a>2123</a> - <b>9035</b> - <v>69</v> + <a>2226</a> + <b>11292</b> + <v>73</v> </b> </bs> </hist> @@ -7743,32 +7581,32 @@ <b> <a>1</a> <b>2</b> - <v>693</v> + <v>689</v> </b> <b> <a>2</a> <b>3</b> - <v>314</v> + <v>323</v> </b> <b> <a>3</a> <b>4</b> - <v>112</v> + <v>118</v> </b> <b> <a>4</a> <b>7</b> - <v>114</v> + <v>117</v> </b> <b> <a>7</a> - <b>84</b> - <v>103</v> + <b>88</b> + <v>104</v> </b> <b> - <a>84</a> - <b>263</b> - <v>35</v> + <a>88</a> + <b>266</b> + <v>34</v> </b> </bs> </hist> @@ -7784,62 +7622,72 @@ <b> <a>1</a> <b>2</b> - <v>1323</v> + <v>1129</v> </b> <b> - <a>2</a> - <b>11</b> - <v>675</v> + <a>4</a> + <b>5</b> + <v>1</v> </b> <b> - <a>11</a> + <a>5</a> + <b>6</b> + <v>1128</v> + </b> + <b> + <a>6</a> <b>12</b> - <v>1420</v> + <v>762</v> </b> <b> <a>12</a> - <b>22</b> - <v>806</v> + <b>17</b> + <v>961</v> </b> <b> - <a>22</a> - <b>44</b> - <v>680</v> + <a>17</a> + <b>23</b> + <v>922</v> </b> <b> - <a>44</a> - <b>95</b> - <v>683</v> + <a>23</a> + <b>31</b> + <v>919</v> </b> <b> - <a>95</a> - <b>173</b> - <v>685</v> + <a>31</a> + <b>43</b> + <v>899</v> </b> <b> - <a>173</a> - <b>808</b> - <v>678</v> + <a>43</a> + <b>58</b> + <v>879</v> </b> <b> - <a>823</a> - <b>1711</b> - <v>678</v> + <a>58</a> + <b>100</b> + <v>855</v> </b> <b> - <a>1711</a> - <b>3189</b> - <v>678</v> + <a>100</a> + <b>1721</b> + <v>847</v> </b> <b> - <a>3189</a> - <b>16909</b> - <v>678</v> + <a>1722</a> + <b>2799</b> + <v>847</v> </b> <b> - <a>17178</a> - <b>52390</b> - <v>52</v> + <a>2805</a> + <b>6136</b> + <v>847</v> + </b> + <b> + <a>6136</a> + <b>46393</b> + <v>297</v> </b> </bs> </hist> @@ -7855,52 +7703,62 @@ <b> <a>1</a> <b>2</b> - <v>2641</v> + <v>2258</v> </b> <b> <a>2</a> <b>3</b> - <v>1465</v> + <v>654</v> </b> <b> <a>3</a> - <b>10</b> - <v>673</v> + <b>4</b> + <v>1191</v> </b> <b> - <a>10</a> - <b>11</b> - <v>361</v> + <a>4</a> + <b>5</b> + <v>1017</v> </b> <b> - <a>11</a> - <b>12</b> - <v>555</v> + <a>5</a> + <b>6</b> + <v>652</v> </b> <b> - <a>12</a> - <b>18</b> - <v>699</v> + <a>6</a> + <b>7</b> + <v>522</v> </b> <b> - <a>18</a> - <b>206</b> - <v>680</v> + <a>7</a> + <b>8</b> + <v>735</v> </b> <b> - <a>206</a> - <b>330</b> - <v>682</v> + <a>8</a> + <b>10</b> + <v>1005</v> </b> <b> - <a>330</a> - <b>541</b> - <v>680</v> + <a>10</a> + <b>109</b> + <v>850</v> </b> <b> - <a>541</a> - <b>6341</b> - <v>600</v> + <a>109</a> + <b>400</b> + <v>850</v> + </b> + <b> + <a>400</a> + <b>626</b> + <v>849</v> + </b> + <b> + <a>626</a> + <b>6687</b> + <v>710</v> </b> </bs> </hist> @@ -7916,47 +7774,47 @@ <b> <a>1</a> <b>2</b> - <v>2018</v> + <v>1130</v> </b> <b> <a>2</a> <b>3</b> - <v>2354</v> + <v>3437</v> </b> <b> <a>3</a> <b>4</b> - <v>1144</v> + <v>1709</v> </b> <b> <a>4</a> <b>5</b> - <v>627</v> + <v>1095</v> </b> <b> <a>5</a> - <b>8</b> - <v>797</v> + <b>6</b> + <v>700</v> </b> <b> - <a>8</a> - <b>12</b> - <v>693</v> + <a>6</a> + <b>9</b> + <v>918</v> </b> <b> - <a>12</a> - <b>20</b> - <v>679</v> + <a>9</a> + <b>14</b> + <v>918</v> </b> <b> - <a>20</a> - <b>50</b> - <v>682</v> + <a>14</a> + <b>25</b> + <v>868</v> </b> <b> - <a>50</a> - <b>64</b> - <v>42</v> + <a>25</a> + <b>60</b> + <v>518</v> </b> </bs> </hist> @@ -7972,57 +7830,67 @@ <b> <a>1</a> <b>2</b> - <v>1468</v> + <v>1129</v> </b> <b> <a>2</a> - <b>7</b> - <v>555</v> + <b>3</b> + <v>1</v> </b> <b> - <a>7</a> + <a>3</a> + <b>4</b> + <v>1454</v> + </b> + <b> + <a>4</a> <b>8</b> - <v>1644</v> + <v>926</v> </b> <b> <a>8</a> - <b>13</b> - <v>721</v> + <b>11</b> + <v>708</v> </b> <b> - <a>13</a> - <b>18</b> - <v>825</v> + <a>11</a> + <b>15</b> + <v>1045</v> </b> <b> - <a>18</a> - <b>28</b> - <v>709</v> + <a>15</a> + <b>20</b> + <v>968</v> </b> <b> - <a>28</a> - <b>45</b> - <v>682</v> + <a>20</a> + <b>27</b> + <v>954</v> </b> <b> - <a>45</a> - <b>76</b> - <v>699</v> + <a>27</a> + <b>37</b> + <v>880</v> </b> <b> - <a>76</a> - <b>92</b> - <v>694</v> + <a>37</a> + <b>57</b> + <v>867</v> </b> <b> - <a>92</a> - <b>105</b> - <v>695</v> + <a>57</a> + <b>84</b> + <v>872</v> </b> <b> - <a>105</a> - <b>388</b> - <v>344</v> + <a>84</a> + <b>100</b> + <v>847</v> + </b> + <b> + <a>100</a> + <b>397</b> + <v>642</v> </b> </bs> </hist> @@ -8038,57 +7906,72 @@ <b> <a>1</a> <b>2</b> - <v>1323</v> + <v>1129</v> </b> <b> <a>2</a> - <b>7</b> - <v>691</v> + <b>3</b> + <v>1</v> </b> <b> - <a>7</a> + <a>3</a> + <b>4</b> + <v>1128</v> + </b> + <b> + <a>4</a> <b>8</b> - <v>1491</v> + <v>718</v> </b> <b> <a>8</a> - <b>12</b> - <v>718</v> + <b>10</b> + <v>801</v> </b> <b> - <a>12</a> + <a>10</a> + <b>13</b> + <v>814</v> + </b> + <b> + <a>13</a> <b>17</b> - <v>669</v> + <v>919</v> </b> <b> <a>17</a> - <b>24</b> - <v>732</v> + <b>23</b> + <v>965</v> </b> <b> - <a>24</a> - <b>40</b> - <v>707</v> + <a>23</a> + <b>31</b> + <v>959</v> </b> <b> - <a>40</a> + <a>31</a> + <b>44</b> + <v>879</v> + </b> + <b> + <a>44</a> <b>70</b> - <v>691</v> + <v>851</v> </b> <b> <a>70</a> - <b>90</b> - <v>732</v> + <b>93</b> + <v>878</v> </b> <b> - <a>90</a> - <b>104</b> - <v>704</v> + <a>93</a> + <b>109</b> + <v>849</v> </b> <b> - <a>104</a> - <b>391</b> - <v>578</v> + <a>109</a> + <b>400</b> + <v>402</v> </b> </bs> </hist> @@ -8104,7 +7987,7 @@ <b> <a>1</a> <b>4</b> - <v>87</v> + <v>95</v> </b> <b> <a>4</a> @@ -8114,62 +7997,62 @@ <b> <a>5</a> <b>8</b> - <v>120</v> + <v>64</v> </b> <b> <a>8</a> <b>9</b> - <v>123</v> + <v>120</v> </b> <b> <a>9</a> <b>11</b> - <v>110</v> + <v>105</v> </b> <b> <a>11</a> <b>12</b> - <v>41</v> + <v>76</v> </b> <b> <a>12</a> <b>13</b> - <v>108</v> + <v>113</v> </b> <b> <a>13</a> - <b>17</b> - <v>121</v> + <b>18</b> + <v>109</v> </b> <b> - <a>17</a> - <b>22</b> - <v>105</v> + <a>18</a> + <b>21</b> + <v>111</v> </b> <b> - <a>22</a> - <b>33</b> - <v>107</v> + <a>21</a> + <b>31</b> + <v>106</v> </b> <b> - <a>33</a> - <b>73</b> - <v>104</v> + <a>31</a> + <b>55</b> + <v>106</v> </b> <b> - <a>73</a> - <b>547</b> - <v>104</v> + <a>55</a> + <b>191</b> + <v>105</v> </b> <b> - <a>571</a> - <b>148376</b> - <v>104</v> + <a>192</a> + <b>56899</b> + <v>105</v> </b> <b> - <a>149850</a> - <b>309769</b> - <v>22</v> + <a>58047</a> + <b>407640</b> + <v>54</v> </b> </bs> </hist> @@ -8185,72 +8068,72 @@ <b> <a>1</a> <b>3</b> - <v>113</v> + <v>110</v> </b> <b> <a>3</a> - <b>5</b> - <v>122</v> + <b>4</b> + <v>15</v> </b> <b> - <a>5</a> - <b>7</b> - <v>70</v> + <a>4</a> + <b>5</b> + <v>119</v> </b> <b> - <a>7</a> + <a>5</a> <b>8</b> - <v>63</v> + <v>74</v> </b> <b> <a>8</a> <b>9</b> - <v>117</v> + <v>116</v> </b> <b> <a>9</a> <b>11</b> - <v>108</v> + <v>104</v> </b> <b> <a>11</a> <b>12</b> - <v>38</v> + <v>73</v> </b> <b> <a>12</a> <b>13</b> - <v>112</v> + <v>114</v> </b> <b> <a>13</a> - <b>17</b> - <v>124</v> + <b>19</b> + <v>126</v> </b> <b> - <a>17</a> + <a>19</a> <b>23</b> - <v>105</v> + <v>115</v> </b> <b> <a>23</a> - <b>33</b> - <v>106</v> + <b>34</b> + <v>114</v> </b> <b> - <a>33</a> - <b>71</b> - <v>104</v> + <a>34</a> + <b>72</b> + <v>105</v> </b> <b> - <a>71</a> - <b>2586</b> - <v>104</v> + <a>72</a> + <b>1551</b> + <v>105</v> </b> <b> - <a>2841</a> - <b>10750</b> - <v>90</v> + <a>1727</a> + <b>11266</b> + <v>99</v> </b> </bs> </hist> @@ -8266,52 +8149,52 @@ <b> <a>1</a> <b>2</b> - <v>213</v> + <v>219</v> </b> <b> <a>2</a> <b>3</b> - <v>316</v> + <v>306</v> </b> <b> <a>3</a> <b>4</b> - <v>126</v> + <v>134</v> </b> <b> <a>4</a> <b>5</b> - <v>141</v> + <v>142</v> </b> <b> <a>5</a> <b>6</b> - <v>71</v> + <v>74</v> </b> <b> <a>6</a> <b>8</b> - <v>102</v> + <v>103</v> </b> <b> <a>8</a> - <b>12</b> - <v>106</v> + <b>13</b> + <v>120</v> </b> <b> - <a>12</a> - <b>28</b> - <v>106</v> + <a>13</a> + <b>33</b> + <v>108</v> </b> <b> - <a>28</a> - <b>1632</b> - <v>104</v> + <a>33</a> + <b>2296</b> + <v>105</v> </b> <b> - <a>1663</a> - <b>6417</b> - <v>91</v> + <a>2325</a> + <b>10163</b> + <v>78</v> </b> </bs> </hist> @@ -8327,31 +8210,31 @@ <b> <a>1</a> <b>2</b> - <v>683</v> + <v>676</v> </b> <b> <a>2</a> <b>3</b> - <v>268</v> + <v>276</v> </b> <b> <a>3</a> <b>4</b> - <v>116</v> + <v>124</v> </b> <b> <a>4</a> <b>7</b> - <v>109</v> + <v>112</v> </b> <b> <a>7</a> - <b>34</b> - <v>104</v> + <b>36</b> + <v>105</v> </b> <b> - <a>34</a> - <b>102</b> + <a>36</a> + <b>105</b> <v>96</v> </b> </bs> @@ -8368,52 +8251,52 @@ <b> <a>1</a> <b>2</b> - <v>213</v> + <v>219</v> </b> <b> <a>2</a> <b>3</b> - <v>316</v> + <v>306</v> </b> <b> <a>3</a> <b>4</b> - <v>126</v> + <v>134</v> </b> <b> <a>4</a> <b>5</b> - <v>141</v> + <v>142</v> </b> <b> <a>5</a> <b>6</b> - <v>71</v> + <v>74</v> </b> <b> <a>6</a> <b>8</b> - <v>102</v> + <v>103</v> </b> <b> <a>8</a> - <b>12</b> - <v>107</v> + <b>13</b> + <v>121</v> </b> <b> - <a>12</a> - <b>28</b> + <a>13</a> + <b>33</b> <v>107</v> </b> <b> - <a>28</a> - <b>1640</b> - <v>104</v> + <a>33</a> + <b>2249</b> + <v>105</v> </b> <b> - <a>1670</a> - <b>6384</b> - <v>89</v> + <a>2292</a> + <b>10163</b> + <v>78</v> </b> </bs> </hist> @@ -8423,23 +8306,23 @@ </relation> <relation> <name>ql_add_expr_def</name> - <cardinality>14857</cardinality> + <cardinality>13786</cardinality> <columnsizes> <e> <k>id</k> - <v>14857</v> + <v>13786</v> </e> <e> <k>left</k> - <v>14857</v> + <v>13786</v> </e> <e> <k>right</k> - <v>14857</v> + <v>13786</v> </e> <e> <k>child</k> - <v>14857</v> + <v>13786</v> </e> </columnsizes> <dependencies> @@ -8453,7 +8336,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8469,7 +8352,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8485,7 +8368,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8501,7 +8384,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8517,7 +8400,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8533,7 +8416,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8549,7 +8432,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8565,7 +8448,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8581,7 +8464,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8597,7 +8480,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8613,7 +8496,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8629,7 +8512,7 @@ <b> <a>1</a> <b>2</b> - <v>14857</v> + <v>13786</v> </b> </bs> </hist> @@ -8639,11 +8522,11 @@ </relation> <relation> <name>ql_aggregate_child</name> - <cardinality>17934</cardinality> + <cardinality>16852</cardinality> <columnsizes> <e> <k>ql_aggregate</k> - <v>9694</v> + <v>9053</v> </e> <e> <k>index</k> @@ -8651,7 +8534,7 @@ </e> <e> <k>child</k> - <v>17934</v> + <v>16852</v> </e> </columnsizes> <dependencies> @@ -8665,17 +8548,17 @@ <b> <a>1</a> <b>2</b> - <v>1687</v> + <v>1481</v> </b> <b> <a>2</a> <b>3</b> - <v>7774</v> + <v>7345</v> </b> <b> <a>3</a> <b>4</b> - <v>233</v> + <v>227</v> </b> </bs> </hist> @@ -8691,17 +8574,17 @@ <b> <a>1</a> <b>2</b> - <v>1687</v> + <v>1481</v> </b> <b> <a>2</a> <b>3</b> - <v>7774</v> + <v>7345</v> </b> <b> <a>3</a> <b>4</b> - <v>233</v> + <v>227</v> </b> </bs> </hist> @@ -8715,18 +8598,18 @@ <budget>12</budget> <bs> <b> - <a>233</a> - <b>234</b> + <a>227</a> + <b>228</b> <v>1</v> </b> <b> - <a>8007</a> - <b>8008</b> + <a>7572</a> + <b>7573</b> <v>1</v> </b> <b> - <a>9694</a> - <b>9695</b> + <a>9053</a> + <b>9054</b> <v>1</v> </b> </bs> @@ -8741,18 +8624,18 @@ <budget>12</budget> <bs> <b> - <a>233</a> - <b>234</b> + <a>227</a> + <b>228</b> <v>1</v> </b> <b> - <a>8007</a> - <b>8008</b> + <a>7572</a> + <b>7573</b> <v>1</v> </b> <b> - <a>9694</a> - <b>9695</b> + <a>9053</a> + <b>9054</b> <v>1</v> </b> </bs> @@ -8769,7 +8652,7 @@ <b> <a>1</a> <b>2</b> - <v>17934</v> + <v>16852</v> </b> </bs> </hist> @@ -8785,7 +8668,7 @@ <b> <a>1</a> <b>2</b> - <v>17934</v> + <v>16852</v> </b> </bs> </hist> @@ -8795,26 +8678,26 @@ </relation> <relation> <name>ql_aggregate_def</name> - <cardinality>9694</cardinality> + <cardinality>9053</cardinality> <columnsizes> <e> <k>id</k> - <v>9694</v> + <v>9053</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_annot_arg_def</name> - <cardinality>6094</cardinality> + <cardinality>4043</cardinality> <columnsizes> <e> <k>id</k> - <v>6094</v> + <v>4043</v> </e> <e> <k>child</k> - <v>6094</v> + <v>4043</v> </e> </columnsizes> <dependencies> @@ -8828,7 +8711,7 @@ <b> <a>1</a> <b>2</b> - <v>6094</v> + <v>4043</v> </b> </bs> </hist> @@ -8844,7 +8727,7 @@ <b> <a>1</a> <b>2</b> - <v>6094</v> + <v>4043</v> </b> </bs> </hist> @@ -8854,11 +8737,11 @@ </relation> <relation> <name>ql_annotation_args</name> - <cardinality>6862</cardinality> + <cardinality>4365</cardinality> <columnsizes> <e> <k>ql_annotation</k> - <v>5326</v> + <v>3721</v> </e> <e> <k>index</k> @@ -8866,7 +8749,7 @@ </e> <e> <k>args</k> - <v>6862</v> + <v>4365</v> </e> </columnsizes> <dependencies> @@ -8880,17 +8763,12 @@ <b> <a>1</a> <b>2</b> - <v>4776</v> + <v>3448</v> </b> <b> <a>3</a> - <b>4</b> - <v>382</v> - </b> - <b> - <a>5</a> <b>10</b> - <v>168</v> + <v>273</v> </b> </bs> </hist> @@ -8906,17 +8784,12 @@ <b> <a>1</a> <b>2</b> - <v>4776</v> + <v>3448</v> </b> <b> <a>3</a> - <b>4</b> - <v>382</v> - </b> - <b> - <a>5</a> <b>10</b> - <v>168</v> + <v>273</v> </b> </bs> </hist> @@ -8930,28 +8803,28 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>1</a> + <b>2</b> <v>2</v> </b> <b> - <a>48</a> - <b>49</b> + <a>15</a> + <b>16</b> <v>2</v> </b> <b> - <a>168</a> - <b>169</b> + <a>33</a> + <b>34</b> <v>2</v> </b> <b> - <a>550</a> - <b>551</b> + <a>273</a> + <b>274</b> <v>2</v> </b> <b> - <a>5326</a> - <b>5327</b> + <a>3721</a> + <b>3722</b> <v>1</v> </b> </bs> @@ -8966,28 +8839,28 @@ <budget>12</budget> <bs> <b> - <a>2</a> - <b>3</b> + <a>1</a> + <b>2</b> <v>2</v> </b> <b> - <a>48</a> - <b>49</b> + <a>15</a> + <b>16</b> <v>2</v> </b> <b> - <a>168</a> - <b>169</b> + <a>33</a> + <b>34</b> <v>2</v> </b> <b> - <a>550</a> - <b>551</b> + <a>273</a> + <b>274</b> <v>2</v> </b> <b> - <a>5326</a> - <b>5327</b> + <a>3721</a> + <b>3722</b> <v>1</v> </b> </bs> @@ -9004,7 +8877,7 @@ <b> <a>1</a> <b>2</b> - <v>6862</v> + <v>4365</v> </b> </bs> </hist> @@ -9020,7 +8893,7 @@ <b> <a>1</a> <b>2</b> - <v>6862</v> + <v>4365</v> </b> </bs> </hist> @@ -9030,15 +8903,15 @@ </relation> <relation> <name>ql_annotation_def</name> - <cardinality>72771</cardinality> + <cardinality>65278</cardinality> <columnsizes> <e> <k>id</k> - <v>72771</v> + <v>65278</v> </e> <e> <k>name</k> - <v>72771</v> + <v>65278</v> </e> </columnsizes> <dependencies> @@ -9052,7 +8925,7 @@ <b> <a>1</a> <b>2</b> - <v>72771</v> + <v>65278</v> </b> </bs> </hist> @@ -9068,7 +8941,7 @@ <b> <a>1</a> <b>2</b> - <v>72771</v> + <v>65278</v> </b> </bs> </hist> @@ -9078,15 +8951,15 @@ </relation> <relation> <name>ql_arityless_predicate_expr_def</name> - <cardinality>67354</cardinality> + <cardinality>58107</cardinality> <columnsizes> <e> <k>id</k> - <v>67354</v> + <v>58107</v> </e> <e> <k>name</k> - <v>67354</v> + <v>58107</v> </e> </columnsizes> <dependencies> @@ -9100,7 +8973,7 @@ <b> <a>1</a> <b>2</b> - <v>67354</v> + <v>58107</v> </b> </bs> </hist> @@ -9116,7 +8989,7 @@ <b> <a>1</a> <b>2</b> - <v>67354</v> + <v>58107</v> </b> </bs> </hist> @@ -9126,15 +8999,15 @@ </relation> <relation> <name>ql_arityless_predicate_expr_qualifier</name> - <cardinality>10179</cardinality> + <cardinality>10163</cardinality> <columnsizes> <e> <k>ql_arityless_predicate_expr</k> - <v>10179</v> + <v>10163</v> </e> <e> <k>qualifier</k> - <v>10179</v> + <v>10163</v> </e> </columnsizes> <dependencies> @@ -9148,7 +9021,7 @@ <b> <a>1</a> <b>2</b> - <v>10179</v> + <v>10163</v> </b> </bs> </hist> @@ -9164,7 +9037,7 @@ <b> <a>1</a> <b>2</b> - <v>10179</v> + <v>10163</v> </b> </bs> </hist> @@ -9174,11 +9047,11 @@ </relation> <relation> <name>ql_as_expr_child</name> - <cardinality>19682</cardinality> + <cardinality>20772</cardinality> <columnsizes> <e> <k>ql_as_expr</k> - <v>19448</v> + <v>20508</v> </e> <e> <k>index</k> @@ -9186,7 +9059,7 @@ </e> <e> <k>child</k> - <v>19682</v> + <v>20772</v> </e> </columnsizes> <dependencies> @@ -9200,12 +9073,12 @@ <b> <a>1</a> <b>2</b> - <v>19214</v> + <v>20244</v> </b> <b> <a>2</a> <b>3</b> - <v>234</v> + <v>264</v> </b> </bs> </hist> @@ -9221,12 +9094,12 @@ <b> <a>1</a> <b>2</b> - <v>19214</v> + <v>20244</v> </b> <b> <a>2</a> <b>3</b> - <v>234</v> + <v>264</v> </b> </bs> </hist> @@ -9240,13 +9113,13 @@ <budget>12</budget> <bs> <b> - <a>234</a> - <b>235</b> + <a>264</a> + <b>265</b> <v>1</v> </b> <b> - <a>19448</a> - <b>19449</b> + <a>20508</a> + <b>20509</b> <v>1</v> </b> </bs> @@ -9261,13 +9134,13 @@ <budget>12</budget> <bs> <b> - <a>234</a> - <b>235</b> + <a>264</a> + <b>265</b> <v>1</v> </b> <b> - <a>19448</a> - <b>19449</b> + <a>20508</a> + <b>20509</b> <v>1</v> </b> </bs> @@ -9284,7 +9157,7 @@ <b> <a>1</a> <b>2</b> - <v>19682</v> + <v>20772</v> </b> </bs> </hist> @@ -9300,7 +9173,7 @@ <b> <a>1</a> <b>2</b> - <v>19682</v> + <v>20772</v> </b> </bs> </hist> @@ -9310,22 +9183,22 @@ </relation> <relation> <name>ql_as_expr_def</name> - <cardinality>19448</cardinality> + <cardinality>20508</cardinality> <columnsizes> <e> <k>id</k> - <v>19448</v> + <v>20508</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_as_exprs_child</name> - <cardinality>19448</cardinality> + <cardinality>20508</cardinality> <columnsizes> <e> <k>ql_as_exprs</k> - <v>8242</v> + <v>8493</v> </e> <e> <k>index</k> @@ -9333,7 +9206,7 @@ </e> <e> <k>child</k> - <v>19448</v> + <v>20508</v> </e> </columnsizes> <dependencies> @@ -9347,32 +9220,32 @@ <b> <a>1</a> <b>2</b> - <v>3031</v> + <v>2998</v> </b> <b> <a>2</a> <b>3</b> - <v>2962</v> + <v>3100</v> </b> <b> <a>3</a> <b>4</b> - <v>672</v> + <v>714</v> </b> <b> <a>4</a> <b>5</b> - <v>702</v> + <v>739</v> </b> <b> <a>5</a> <b>7</b> - <v>678</v> + <v>714</v> </b> <b> <a>7</a> <b>36</b> - <v>197</v> + <v>228</v> </b> </bs> </hist> @@ -9388,32 +9261,32 @@ <b> <a>1</a> <b>2</b> - <v>3031</v> + <v>2998</v> </b> <b> <a>2</a> <b>3</b> - <v>2962</v> + <v>3100</v> </b> <b> <a>3</a> <b>4</b> - <v>672</v> + <v>714</v> </b> <b> <a>4</a> <b>5</b> - <v>702</v> + <v>739</v> </b> <b> <a>5</a> <b>7</b> - <v>678</v> + <v>714</v> </b> <b> <a>7</a> <b>36</b> - <v>197</v> + <v>228</v> </b> </bs> </hist> @@ -9438,47 +9311,52 @@ </b> <b> <a>3</a> - <b>4</b> - <v>4</v> - </b> - <b> - <a>4</a> <b>5</b> - <v>6</v> + <v>3</v> </b> <b> - <a>6</a> - <b>10</b> + <a>7</a> + <b>9</b> <v>2</v> </b> <b> <a>10</a> + <b>11</b> + <v>5</v> + </b> + <b> + <a>12</a> <b>13</b> - <v>3</v> + <v>2</v> </b> <b> <a>13</a> - <b>19</b> + <b>17</b> <v>3</v> </b> <b> - <a>26</a> - <b>55</b> + <a>17</a> + <b>23</b> <v>3</v> </b> <b> - <a>123</a> - <b>720</b> + <a>35</a> + <b>67</b> + <v>3</v> + </b> + <b> + <a>145</a> + <b>770</b> <v>3</v> </b> <b> - <a>875</a> - <b>2250</b> + <a>942</a> + <b>2396</b> <v>3</v> </b> <b> - <a>5211</a> - <b>8243</b> + <a>5495</a> + <b>8494</b> <v>2</v> </b> </bs> @@ -9504,47 +9382,52 @@ </b> <b> <a>3</a> - <b>4</b> - <v>4</v> - </b> - <b> - <a>4</a> <b>5</b> - <v>6</v> + <v>3</v> </b> <b> - <a>6</a> - <b>10</b> + <a>7</a> + <b>9</b> <v>2</v> </b> <b> <a>10</a> + <b>11</b> + <v>5</v> + </b> + <b> + <a>12</a> <b>13</b> - <v>3</v> + <v>2</v> </b> <b> <a>13</a> - <b>19</b> + <b>17</b> <v>3</v> </b> <b> - <a>26</a> - <b>55</b> + <a>17</a> + <b>23</b> <v>3</v> </b> <b> - <a>123</a> - <b>720</b> + <a>35</a> + <b>67</b> + <v>3</v> + </b> + <b> + <a>145</a> + <b>770</b> <v>3</v> </b> <b> - <a>875</a> - <b>2250</b> + <a>942</a> + <b>2396</b> <v>3</v> </b> <b> - <a>5211</a> - <b>8243</b> + <a>5495</a> + <b>8494</b> <v>2</v> </b> </bs> @@ -9561,7 +9444,7 @@ <b> <a>1</a> <b>2</b> - <v>19448</v> + <v>20508</v> </b> </bs> </hist> @@ -9577,7 +9460,7 @@ <b> <a>1</a> <b>2</b> - <v>19448</v> + <v>20508</v> </b> </bs> </hist> @@ -9587,40 +9470,48 @@ </relation> <relation> <name>ql_as_exprs_def</name> - <cardinality>8242</cardinality> + <cardinality>8493</cardinality> <columnsizes> <e> <k>id</k> - <v>8242</v> + <v>8493</v> </e> </columnsizes> <dependencies/> </relation> <relation> - <name>ql_ast_node_info</name> - <cardinality>6543748</cardinality> + <name>ql_ast_node_location</name> + <cardinality>6230328</cardinality> <columnsizes> <e> <k>node</k> - <v>6543748</v> - </e> - <e> - <k>parent</k> - <v>3102776</v> - </e> - <e> - <k>parent_index</k> - <v>2057</v> + <v>6230328</v> </e> <e> <k>loc</k> - <v>4792814</v> + <v>4563391</v> </e> </columnsizes> <dependencies> <dep> <src>node</src> - <trg>parent</trg> + <trg>loc</trg> + <val> + <hist> + <budget>12</budget> + <bs> + <b> + <a>1</a> + <b>2</b> + <v>6230328</v> + </b> + </bs> + </hist> + </val> + </dep> + <dep> + <src>loc</src> + <trg>node</trg> <val> <hist> <budget>12</budget> @@ -9628,15 +9519,45 @@ <b> <a>1</a> <b>2</b> - <v>6543748</v> + <v>3246688</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>979956</v> + </b> + <b> + <a>3</a> + <b>6</b> + <v>336747</v> </b> </bs> </hist> </val> </dep> + </dependencies> + </relation> + <relation> + <name>ql_ast_node_parent</name> + <cardinality>6197281</cardinality> + <columnsizes> + <e> + <k>node</k> + <v>6197281</v> + </e> + <e> + <k>parent</k> + <v>2947735</v> + </e> + <e> + <k>parent_index</k> + <v>2057</v> + </e> + </columnsizes> + <dependencies> <dep> <src>node</src> - <trg>parent_index</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -9644,7 +9565,7 @@ <b> <a>1</a> <b>2</b> - <v>6543748</v> + <v>6197281</v> </b> </bs> </hist> @@ -9652,7 +9573,7 @@ </dep> <dep> <src>node</src> - <trg>loc</trg> + <trg>parent_index</trg> <val> <hist> <budget>12</budget> @@ -9660,7 +9581,7 @@ <b> <a>1</a> <b>2</b> - <v>6543748</v> + <v>6197281</v> </b> </bs> </hist> @@ -9676,27 +9597,27 @@ <b> <a>1</a> <b>2</b> - <v>1758472</v> + <v>1667033</v> </b> <b> <a>2</a> <b>3</b> - <v>308336</v> + <v>276121</v> </b> <b> <a>3</a> <b>4</b> - <v>770593</v> + <v>754976</v> </b> <b> <a>4</a> <b>11</b> - <v>240390</v> + <v>228408</v> </b> <b> <a>11</a> <b>2058</b> - <v>24985</v> + <v>21197</v> </b> </bs> </hist> @@ -9712,63 +9633,27 @@ <b> <a>1</a> <b>2</b> - <v>1758472</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>308336</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>770593</v> - </b> - <b> - <a>4</a> - <b>11</b> - <v>240390</v> - </b> - <b> - <a>11</a> - <b>2058</b> - <v>24985</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>parent</src> - <trg>loc</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>1758472</v> + <v>1667033</v> </b> <b> <a>2</a> <b>3</b> - <v>308336</v> + <v>276121</v> </b> <b> <a>3</a> <b>4</b> - <v>770593</v> + <v>754976</v> </b> <b> <a>4</a> <b>11</b> - <v>240390</v> + <v>228408</v> </b> <b> <a>11</a> <b>2058</b> - <v>24985</v> + <v>21197</v> </b> </bs> </hist> @@ -9784,12 +9669,12 @@ <b> <a>1</a> <b>2</b> - <v>805</v> + <v>739</v> </b> <b> <a>2</a> <b>3</b> - <v>251</v> + <v>317</v> </b> <b> <a>3</a> @@ -9798,69 +9683,28 @@ </b> <b> <a>4</a> - <b>9</b> - <v>188</v> - </b> - <b> - <a>9</a> - <b>24</b> - <v>161</v> - </b> - <b> - <a>24</a> - <b>119</b> - <v>155</v> - </b> - <b> - <a>120</a> - <b>3102777</b> - <v>109</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>parent_index</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>805</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>251</v> - </b> - <b> - <a>3</a> - <b>4</b> - <v>388</v> + <b>8</b> + <v>126</v> </b> <b> - <a>4</a> - <b>9</b> - <v>188</v> + <a>8</a> + <b>15</b> + <v>162</v> </b> <b> - <a>9</a> - <b>24</b> - <v>161</v> + <a>15</a> + <b>47</b> + <v>158</v> </b> <b> - <a>24</a> - <b>119</b> + <a>48</a> + <b>11121</b> <v>155</v> </b> <b> - <a>120</a> - <b>3102777</b> - <v>109</v> + <a>16033</a> + <b>2947736</b> + <v>12</v> </b> </bs> </hist> @@ -9868,7 +9712,7 @@ </dep> <dep> <src>parent_index</src> - <trg>loc</trg> + <trg>parent</trg> <val> <hist> <budget>12</budget> @@ -9876,12 +9720,12 @@ <b> <a>1</a> <b>2</b> - <v>805</v> + <v>739</v> </b> <b> <a>2</a> <b>3</b> - <v>251</v> + <v>317</v> </b> <b> <a>3</a> @@ -9890,96 +9734,28 @@ </b> <b> <a>4</a> - <b>9</b> - <v>188</v> - </b> - <b> - <a>9</a> - <b>24</b> - <v>161</v> - </b> - <b> - <a>24</a> - <b>119</b> - <v>155</v> - </b> - <b> - <a>120</a> - <b>2116191</b> - <v>109</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>node</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>3411160</v> - </b> - <b> - <a>2</a> - <b>3</b> - <v>1025095</v> - </b> - <b> - <a>3</a> - <b>6</b> - <v>356559</v> - </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent</trg> - <val> - <hist> - <budget>12</budget> - <bs> - <b> - <a>1</a> - <b>2</b> - <v>3411160</v> + <b>8</b> + <v>126</v> </b> <b> - <a>2</a> - <b>3</b> - <v>1025095</v> + <a>8</a> + <b>15</b> + <v>162</v> </b> <b> - <a>3</a> - <b>6</b> - <v>356559</v> + <a>15</a> + <b>47</b> + <v>158</v> </b> - </bs> - </hist> - </val> - </dep> - <dep> - <src>loc</src> - <trg>parent_index</trg> - <val> - <hist> - <budget>12</budget> - <bs> <b> - <a>1</a> - <b>2</b> - <v>4028466</v> + <a>48</a> + <b>11121</b> + <v>155</v> </b> <b> - <a>2</a> - <b>3</b> - <v>764348</v> + <a>16033</a> + <b>2947736</b> + <v>12</v> </b> </bs> </hist> @@ -9989,15 +9765,15 @@ </relation> <relation> <name>ql_body_def</name> - <cardinality>70726</cardinality> + <cardinality>65826</cardinality> <columnsizes> <e> <k>id</k> - <v>70726</v> + <v>65826</v> </e> <e> <k>child</k> - <v>70726</v> + <v>65826</v> </e> </columnsizes> <dependencies> @@ -10011,7 +9787,7 @@ <b> <a>1</a> <b>2</b> - <v>70726</v> + <v>65826</v> </b> </bs> </hist> @@ -10027,7 +9803,7 @@ <b> <a>1</a> <b>2</b> - <v>70726</v> + <v>65826</v> </b> </bs> </hist> @@ -10037,15 +9813,15 @@ </relation> <relation> <name>ql_bool_def</name> - <cardinality>5039</cardinality> + <cardinality>4274</cardinality> <columnsizes> <e> <k>id</k> - <v>5039</v> + <v>4274</v> </e> <e> <k>child</k> - <v>5039</v> + <v>4274</v> </e> </columnsizes> <dependencies> @@ -10059,7 +9835,7 @@ <b> <a>1</a> <b>2</b> - <v>5039</v> + <v>4274</v> </b> </bs> </hist> @@ -10075,7 +9851,7 @@ <b> <a>1</a> <b>2</b> - <v>5039</v> + <v>4274</v> </b> </bs> </hist> @@ -10085,11 +9861,11 @@ </relation> <relation> <name>ql_call_body_child</name> - <cardinality>122556</cardinality> + <cardinality>99620</cardinality> <columnsizes> <e> <k>ql_call_body</k> - <v>57429</v> + <v>49469</v> </e> <e> <k>index</k> @@ -10097,7 +9873,7 @@ </e> <e> <k>child</k> - <v>122556</v> + <v>99620</v> </e> </columnsizes> <dependencies> @@ -10111,27 +9887,27 @@ <b> <a>1</a> <b>2</b> - <v>25731</v> + <v>23173</v> </b> <b> <a>2</a> <b>3</b> - <v>15265</v> + <v>13151</v> </b> <b> <a>3</a> <b>4</b> - <v>8568</v> + <v>7473</v> </b> <b> <a>4</a> - <b>5</b> - <v>3857</v> + <b>6</b> + <v>4432</v> </b> <b> - <a>5</a> + <a>6</a> <b>16</b> - <v>4008</v> + <v>1240</v> </b> </bs> </hist> @@ -10147,27 +9923,27 @@ <b> <a>1</a> <b>2</b> - <v>25731</v> + <v>23173</v> </b> <b> <a>2</a> <b>3</b> - <v>15265</v> + <v>13151</v> </b> <b> <a>3</a> <b>4</b> - <v>8568</v> + <v>7473</v> </b> <b> <a>4</a> - <b>5</b> - <v>3857</v> + <b>6</b> + <v>4432</v> </b> <b> - <a>5</a> + <a>6</a> <b>16</b> - <v>4008</v> + <v>1240</v> </b> </bs> </hist> @@ -10181,73 +9957,78 @@ <budget>12</budget> <bs> <b> - <a>16</a> - <b>17</b> - <v>2</v> + <a>2</a> + <b>3</b> + <v>1</v> </b> <b> - <a>18</a> - <b>19</b> + <a>4</a> + <b>5</b> <v>1</v> </b> <b> - <a>42</a> - <b>43</b> + <a>10</a> + <b>11</b> <v>1</v> </b> <b> - <a>91</a> - <b>92</b> + <a>17</a> + <b>18</b> <v>1</v> </b> <b> - <a>184</a> - <b>185</b> + <a>46</a> + <b>47</b> + <v>1</v> + </b> + <b> + <a>103</a> + <b>104</b> <v>1</v> </b> <b> - <a>450</a> - <b>451</b> + <a>237</a> + <b>238</b> <v>1</v> </b> <b> - <a>760</a> - <b>761</b> + <a>342</a> + <b>343</b> <v>1</v> </b> <b> - <a>1254</a> - <b>1255</b> + <a>559</a> + <b>560</b> <v>1</v> </b> <b> - <a>2292</a> - <b>2293</b> + <a>1240</a> + <b>1241</b> <v>1</v> </b> <b> - <a>4008</a> - <b>4009</b> + <a>2478</a> + <b>2479</b> <v>1</v> </b> <b> - <a>7865</a> - <b>7866</b> + <a>5672</a> + <b>5673</b> <v>1</v> </b> <b> - <a>16433</a> - <b>16434</b> + <a>13145</a> + <b>13146</b> <v>1</v> </b> <b> - <a>31698</a> - <b>31699</b> + <a>26296</a> + <b>26297</b> <v>1</v> </b> <b> - <a>57429</a> - <b>57430</b> + <a>49469</a> + <b>49470</b> <v>1</v> </b> </bs> @@ -10262,73 +10043,78 @@ <budget>12</budget> <bs> <b> - <a>16</a> - <b>17</b> - <v>2</v> + <a>2</a> + <b>3</b> + <v>1</v> </b> <b> - <a>18</a> - <b>19</b> + <a>4</a> + <b>5</b> <v>1</v> </b> <b> - <a>42</a> - <b>43</b> + <a>10</a> + <b>11</b> <v>1</v> </b> <b> - <a>91</a> - <b>92</b> + <a>17</a> + <b>18</b> <v>1</v> </b> <b> - <a>184</a> - <b>185</b> + <a>46</a> + <b>47</b> <v>1</v> </b> <b> - <a>450</a> - <b>451</b> + <a>103</a> + <b>104</b> <v>1</v> </b> <b> - <a>760</a> - <b>761</b> + <a>237</a> + <b>238</b> <v>1</v> </b> <b> - <a>1254</a> - <b>1255</b> + <a>342</a> + <b>343</b> <v>1</v> </b> <b> - <a>2292</a> - <b>2293</b> + <a>559</a> + <b>560</b> + <v>1</v> + </b> + <b> + <a>1240</a> + <b>1241</b> <v>1</v> </b> <b> - <a>4008</a> - <b>4009</b> + <a>2478</a> + <b>2479</b> <v>1</v> </b> <b> - <a>7865</a> - <b>7866</b> + <a>5672</a> + <b>5673</b> <v>1</v> </b> <b> - <a>16433</a> - <b>16434</b> + <a>13145</a> + <b>13146</b> <v>1</v> </b> <b> - <a>31698</a> - <b>31699</b> + <a>26296</a> + <b>26297</b> <v>1</v> </b> <b> - <a>57429</a> - <b>57430</b> + <a>49469</a> + <b>49470</b> <v>1</v> </b> </bs> @@ -10345,7 +10131,7 @@ <b> <a>1</a> <b>2</b> - <v>122556</v> + <v>99620</v> </b> </bs> </hist> @@ -10361,7 +10147,7 @@ <b> <a>1</a> <b>2</b> - <v>122556</v> + <v>99620</v> </b> </bs> </hist> @@ -10371,22 +10157,22 @@ </relation> <relation> <name>ql_call_body_def</name> - <cardinality>66692</cardinality> + <cardinality>57368</cardinality> <columnsizes> <e> <k>id</k> - <v>66692</v> + <v>57368</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_call_or_unqual_agg_expr_child</name> - <cardinality>133679</cardinality> + <cardinality>115036</cardinality> <columnsizes> <e> <k>ql_call_or_unqual_agg_expr</k> - <v>66692</v> + <v>57368</v> </e> <e> <k>index</k> @@ -10394,7 +10180,7 @@ </e> <e> <k>child</k> - <v>133679</v> + <v>115036</v> </e> </columnsizes> <dependencies> @@ -10408,12 +10194,12 @@ <b> <a>2</a> <b>3</b> - <v>66397</v> + <v>57068</v> </b> <b> <a>3</a> <b>4</b> - <v>295</v> + <v>300</v> </b> </bs> </hist> @@ -10429,12 +10215,12 @@ <b> <a>2</a> <b>3</b> - <v>66397</v> + <v>57068</v> </b> <b> <a>3</a> <b>4</b> - <v>295</v> + <v>300</v> </b> </bs> </hist> @@ -10448,13 +10234,13 @@ <budget>12</budget> <bs> <b> - <a>295</a> - <b>296</b> + <a>300</a> + <b>301</b> <v>1</v> </b> <b> - <a>66692</a> - <b>66693</b> + <a>57368</a> + <b>57369</b> <v>2</v> </b> </bs> @@ -10469,13 +10255,13 @@ <budget>12</budget> <bs> <b> - <a>295</a> - <b>296</b> + <a>300</a> + <b>301</b> <v>1</v> </b> <b> - <a>66692</a> - <b>66693</b> + <a>57368</a> + <b>57369</b> <v>2</v> </b> </bs> @@ -10492,7 +10278,7 @@ <b> <a>1</a> <b>2</b> - <v>133679</v> + <v>115036</v> </b> </bs> </hist> @@ -10508,7 +10294,7 @@ <b> <a>1</a> <b>2</b> - <v>133679</v> + <v>115036</v> </b> </bs> </hist> @@ -10518,30 +10304,30 @@ </relation> <relation> <name>ql_call_or_unqual_agg_expr_def</name> - <cardinality>66692</cardinality> + <cardinality>57368</cardinality> <columnsizes> <e> <k>id</k> - <v>66692</v> + <v>57368</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_charpred_def</name> - <cardinality>12588</cardinality> + <cardinality>12088</cardinality> <columnsizes> <e> <k>id</k> - <v>12588</v> + <v>12088</v> </e> <e> <k>body</k> - <v>12588</v> + <v>12088</v> </e> <e> <k>child</k> - <v>12588</v> + <v>12088</v> </e> </columnsizes> <dependencies> @@ -10555,7 +10341,7 @@ <b> <a>1</a> <b>2</b> - <v>12588</v> + <v>12088</v> </b> </bs> </hist> @@ -10571,7 +10357,7 @@ <b> <a>1</a> <b>2</b> - <v>12588</v> + <v>12088</v> </b> </bs> </hist> @@ -10587,7 +10373,7 @@ <b> <a>1</a> <b>2</b> - <v>12588</v> + <v>12088</v> </b> </bs> </hist> @@ -10603,7 +10389,7 @@ <b> <a>1</a> <b>2</b> - <v>12588</v> + <v>12088</v> </b> </bs> </hist> @@ -10619,7 +10405,7 @@ <b> <a>1</a> <b>2</b> - <v>12588</v> + <v>12088</v> </b> </bs> </hist> @@ -10635,7 +10421,7 @@ <b> <a>1</a> <b>2</b> - <v>12588</v> + <v>12088</v> </b> </bs> </hist> @@ -10645,19 +10431,19 @@ </relation> <relation> <name>ql_class_member_child</name> - <cardinality>121852</cardinality> + <cardinality>112375</cardinality> <columnsizes> <e> <k>ql_class_member</k> - <v>84646</v> + <v>79133</v> </e> <e> <k>index</k> - <v>4</v> + <v>5</v> </e> <e> <k>child</k> - <v>121852</v> + <v>112375</v> </e> </columnsizes> <dependencies> @@ -10671,17 +10457,17 @@ <b> <a>1</a> <b>2</b> - <v>51616</v> + <v>49462</v> </b> <b> <a>2</a> <b>3</b> - <v>28924</v> + <v>26160</v> </b> <b> <a>3</a> - <b>5</b> - <v>4106</v> + <b>6</b> + <v>3511</v> </b> </bs> </hist> @@ -10697,17 +10483,17 @@ <b> <a>1</a> <b>2</b> - <v>51616</v> + <v>49462</v> </b> <b> <a>2</a> <b>3</b> - <v>28924</v> + <v>26160</v> </b> <b> <a>3</a> - <b>5</b> - <v>4106</v> + <b>6</b> + <v>3511</v> </b> </bs> </hist> @@ -10721,23 +10507,28 @@ <budget>12</budget> <bs> <b> - <a>70</a> - <b>71</b> + <a>8</a> + <b>9</b> + <v>1</v> + </b> + <b> + <a>52</a> + <b>53</b> <v>1</v> </b> <b> - <a>4106</a> - <b>4107</b> + <a>3511</a> + <b>3512</b> <v>1</v> </b> <b> - <a>33030</a> - <b>33031</b> + <a>29671</a> + <b>29672</b> <v>1</v> </b> <b> - <a>84646</a> - <b>84647</b> + <a>79133</a> + <b>79134</b> <v>1</v> </b> </bs> @@ -10752,23 +10543,28 @@ <budget>12</budget> <bs> <b> - <a>70</a> - <b>71</b> + <a>8</a> + <b>9</b> + <v>1</v> + </b> + <b> + <a>52</a> + <b>53</b> <v>1</v> </b> <b> - <a>4106</a> - <b>4107</b> + <a>3511</a> + <b>3512</b> <v>1</v> </b> <b> - <a>33030</a> - <b>33031</b> + <a>29671</a> + <b>29672</b> <v>1</v> </b> <b> - <a>84646</a> - <b>84647</b> + <a>79133</a> + <b>79134</b> <v>1</v> </b> </bs> @@ -10785,7 +10581,7 @@ <b> <a>1</a> <b>2</b> - <v>121852</v> + <v>112375</v> </b> </bs> </hist> @@ -10801,7 +10597,7 @@ <b> <a>1</a> <b>2</b> - <v>121852</v> + <v>112375</v> </b> </bs> </hist> @@ -10811,22 +10607,22 @@ </relation> <relation> <name>ql_class_member_def</name> - <cardinality>84646</cardinality> + <cardinality>79133</cardinality> <columnsizes> <e> <k>id</k> - <v>84646</v> + <v>79133</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_classless_predicate_child</name> - <cardinality>72035</cardinality> + <cardinality>63161</cardinality> <columnsizes> <e> <k>ql_classless_predicate</k> - <v>24640</v> + <v>23253</v> </e> <e> <k>index</k> @@ -10834,7 +10630,7 @@ </e> <e> <k>child</k> - <v>72035</v> + <v>63161</v> </e> </columnsizes> <dependencies> @@ -10848,32 +10644,32 @@ <b> <a>1</a> <b>2</b> - <v>2612</v> + <v>2872</v> </b> <b> <a>2</a> <b>3</b> - <v>9441</v> + <v>9678</v> </b> <b> <a>3</a> <b>4</b> - <v>6254</v> + <v>5651</v> </b> <b> <a>4</a> <b>5</b> - <v>3291</v> + <v>2828</v> </b> <b> <a>5</a> <b>7</b> - <v>2183</v> + <v>1868</v> </b> <b> <a>7</a> <b>17</b> - <v>859</v> + <v>356</v> </b> </bs> </hist> @@ -10889,32 +10685,32 @@ <b> <a>1</a> <b>2</b> - <v>2612</v> + <v>2872</v> </b> <b> <a>2</a> <b>3</b> - <v>9441</v> + <v>9678</v> </b> <b> <a>3</a> <b>4</b> - <v>6254</v> + <v>5651</v> </b> <b> <a>4</a> <b>5</b> - <v>3291</v> + <v>2828</v> </b> <b> <a>5</a> <b>7</b> - <v>2183</v> + <v>1868</v> </b> <b> <a>7</a> <b>17</b> - <v>859</v> + <v>356</v> </b> </bs> </hist> @@ -10928,78 +10724,83 @@ <budget>12</budget> <bs> <b> - <a>8</a> - <b>9</b> - <v>2</v> + <a>1</a> + <b>2</b> + <v>1</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>1</v> </b> <b> - <a>9</a> - <b>10</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>25</a> - <b>26</b> + <a>9</a> + <b>10</b> <v>1</v> </b> <b> - <a>43</a> - <b>44</b> + <a>22</a> + <b>23</b> <v>1</v> </b> <b> - <a>83</a> - <b>84</b> + <a>37</a> + <b>38</b> <v>1</v> </b> <b> - <a>164</a> - <b>165</b> + <a>63</a> + <b>64</b> <v>1</v> </b> <b> - <a>269</a> - <b>270</b> + <a>103</a> + <b>104</b> <v>1</v> </b> <b> - <a>491</a> - <b>492</b> + <a>177</a> + <b>178</b> <v>1</v> </b> <b> - <a>859</a> - <b>860</b> + <a>356</a> + <b>357</b> <v>1</v> </b> <b> - <a>1446</a> - <b>1447</b> + <a>773</a> + <b>774</b> <v>1</v> </b> <b> - <a>3042</a> - <b>3043</b> + <a>2224</a> + <b>2225</b> <v>1</v> </b> <b> - <a>6333</a> - <b>6334</b> + <a>5052</a> + <b>5053</b> <v>1</v> </b> <b> - <a>12587</a> - <b>12588</b> + <a>10703</a> + <b>10704</b> <v>1</v> </b> <b> - <a>22028</a> - <b>22029</b> + <a>20381</a> + <b>20382</b> <v>1</v> </b> <b> - <a>24640</a> - <b>24641</b> + <a>23253</a> + <b>23254</b> <v>1</v> </b> </bs> @@ -11014,78 +10815,83 @@ <budget>12</budget> <bs> <b> - <a>8</a> - <b>9</b> - <v>2</v> + <a>1</a> + <b>2</b> + <v>1</v> </b> <b> - <a>9</a> - <b>10</b> + <a>2</a> + <b>3</b> <v>1</v> </b> <b> - <a>25</a> - <b>26</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>43</a> - <b>44</b> + <a>9</a> + <b>10</b> <v>1</v> </b> <b> - <a>83</a> - <b>84</b> + <a>22</a> + <b>23</b> <v>1</v> </b> <b> - <a>164</a> - <b>165</b> + <a>37</a> + <b>38</b> <v>1</v> </b> <b> - <a>269</a> - <b>270</b> + <a>63</a> + <b>64</b> <v>1</v> </b> <b> - <a>491</a> - <b>492</b> + <a>103</a> + <b>104</b> + <v>1</v> + </b> + <b> + <a>177</a> + <b>178</b> <v>1</v> </b> <b> - <a>859</a> - <b>860</b> + <a>356</a> + <b>357</b> <v>1</v> </b> <b> - <a>1446</a> - <b>1447</b> + <a>773</a> + <b>774</b> <v>1</v> </b> <b> - <a>3042</a> - <b>3043</b> + <a>2224</a> + <b>2225</b> <v>1</v> </b> <b> - <a>6333</a> - <b>6334</b> + <a>5052</a> + <b>5053</b> <v>1</v> </b> <b> - <a>12587</a> - <b>12588</b> + <a>10703</a> + <b>10704</b> <v>1</v> </b> <b> - <a>22028</a> - <b>22029</b> + <a>20381</a> + <b>20382</b> <v>1</v> </b> <b> - <a>24640</a> - <b>24641</b> + <a>23253</a> + <b>23254</b> <v>1</v> </b> </bs> @@ -11102,7 +10908,7 @@ <b> <a>1</a> <b>2</b> - <v>72035</v> + <v>63161</v> </b> </bs> </hist> @@ -11118,7 +10924,7 @@ <b> <a>1</a> <b>2</b> - <v>72035</v> + <v>63161</v> </b> </bs> </hist> @@ -11128,19 +10934,19 @@ </relation> <relation> <name>ql_classless_predicate_def</name> - <cardinality>24640</cardinality> + <cardinality>23253</cardinality> <columnsizes> <e> <k>id</k> - <v>24640</v> + <v>23253</v> </e> <e> <k>name</k> - <v>24640</v> + <v>23253</v> </e> <e> <k>return_type</k> - <v>24640</v> + <v>23253</v> </e> </columnsizes> <dependencies> @@ -11154,7 +10960,7 @@ <b> <a>1</a> <b>2</b> - <v>24640</v> + <v>23253</v> </b> </bs> </hist> @@ -11170,7 +10976,7 @@ <b> <a>1</a> <b>2</b> - <v>24640</v> + <v>23253</v> </b> </bs> </hist> @@ -11186,7 +10992,7 @@ <b> <a>1</a> <b>2</b> - <v>24640</v> + <v>23253</v> </b> </bs> </hist> @@ -11202,7 +11008,7 @@ <b> <a>1</a> <b>2</b> - <v>24640</v> + <v>23253</v> </b> </bs> </hist> @@ -11218,7 +11024,7 @@ <b> <a>1</a> <b>2</b> - <v>24640</v> + <v>23253</v> </b> </bs> </hist> @@ -11234,7 +11040,7 @@ <b> <a>1</a> <b>2</b> - <v>24640</v> + <v>23253</v> </b> </bs> </hist> @@ -11244,23 +11050,23 @@ </relation> <relation> <name>ql_comp_term_def</name> - <cardinality>138784</cardinality> + <cardinality>140334</cardinality> <columnsizes> <e> <k>id</k> - <v>138784</v> + <v>140334</v> </e> <e> <k>left</k> - <v>138784</v> + <v>140334</v> </e> <e> <k>right</k> - <v>138784</v> + <v>140334</v> </e> <e> <k>child</k> - <v>138784</v> + <v>140334</v> </e> </columnsizes> <dependencies> @@ -11274,7 +11080,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11290,7 +11096,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11306,7 +11112,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11322,7 +11128,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11338,7 +11144,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11354,7 +11160,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11370,7 +11176,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11386,7 +11192,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11402,7 +11208,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11418,7 +11224,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11434,7 +11240,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11450,7 +11256,7 @@ <b> <a>1</a> <b>2</b> - <v>138784</v> + <v>140334</v> </b> </bs> </hist> @@ -11460,19 +11266,19 @@ </relation> <relation> <name>ql_conjunction_def</name> - <cardinality>80925</cardinality> + <cardinality>76308</cardinality> <columnsizes> <e> <k>id</k> - <v>80925</v> + <v>76308</v> </e> <e> <k>left</k> - <v>80925</v> + <v>76308</v> </e> <e> <k>right</k> - <v>80925</v> + <v>76308</v> </e> </columnsizes> <dependencies> @@ -11486,7 +11292,7 @@ <b> <a>1</a> <b>2</b> - <v>80925</v> + <v>76308</v> </b> </bs> </hist> @@ -11502,7 +11308,7 @@ <b> <a>1</a> <b>2</b> - <v>80925</v> + <v>76308</v> </b> </bs> </hist> @@ -11518,7 +11324,7 @@ <b> <a>1</a> <b>2</b> - <v>80925</v> + <v>76308</v> </b> </bs> </hist> @@ -11534,7 +11340,7 @@ <b> <a>1</a> <b>2</b> - <v>80925</v> + <v>76308</v> </b> </bs> </hist> @@ -11550,7 +11356,7 @@ <b> <a>1</a> <b>2</b> - <v>80925</v> + <v>76308</v> </b> </bs> </hist> @@ -11566,7 +11372,7 @@ <b> <a>1</a> <b>2</b> - <v>80925</v> + <v>76308</v> </b> </bs> </hist> @@ -11576,19 +11382,19 @@ </relation> <relation> <name>ql_dataclass_child</name> - <cardinality>86140</cardinality> + <cardinality>80203</cardinality> <columnsizes> <e> <k>ql_dataclass</k> - <v>21914</v> + <v>20603</v> </e> <e> <k>index</k> - <v>148</v> + <v>160</v> </e> <e> <k>child</k> - <v>86140</v> + <v>80203</v> </e> </columnsizes> <dependencies> @@ -11602,42 +11408,42 @@ <b> <a>1</a> <b>2</b> - <v>8719</v> + <v>8138</v> </b> <b> <a>2</a> <b>3</b> - <v>3611</v> + <v>3631</v> </b> <b> <a>3</a> <b>4</b> - <v>2551</v> + <v>2206</v> </b> <b> <a>4</a> <b>5</b> - <v>1653</v> + <v>1665</v> </b> <b> <a>5</a> <b>6</b> - <v>1289</v> + <v>1187</v> </b> <b> <a>6</a> <b>9</b> - <v>1952</v> + <v>1851</v> </b> <b> <a>9</a> - <b>20</b> - <v>1644</v> + <b>22</b> + <v>1562</v> </b> <b> - <a>20</a> - <b>149</b> - <v>495</v> + <a>22</a> + <b>161</b> + <v>363</v> </b> </bs> </hist> @@ -11653,42 +11459,42 @@ <b> <a>1</a> <b>2</b> - <v>8719</v> + <v>8138</v> </b> <b> <a>2</a> <b>3</b> - <v>3611</v> + <v>3631</v> </b> <b> <a>3</a> <b>4</b> - <v>2551</v> + <v>2206</v> </b> <b> <a>4</a> <b>5</b> - <v>1653</v> + <v>1665</v> </b> <b> <a>5</a> <b>6</b> - <v>1289</v> + <v>1187</v> </b> <b> <a>6</a> <b>9</b> - <v>1952</v> + <v>1851</v> </b> <b> <a>9</a> - <b>20</b> - <v>1644</v> + <b>22</b> + <v>1562</v> </b> <b> - <a>20</a> - <b>149</b> - <v>495</v> + <a>22</a> + <b>161</b> + <v>363</v> </b> </bs> </hist> @@ -11703,68 +11509,73 @@ <bs> <b> <a>1</a> - <b>4</b> - <v>8</v> + <b>3</b> + <v>12</v> </b> <b> <a>4</a> <b>5</b> - <v>14</v> + <v>8</v> </b> <b> <a>5</a> - <b>7</b> - <v>8</v> + <b>6</b> + <v>17</v> </b> <b> - <a>7</a> + <a>6</a> <b>8</b> - <v>21</v> + <v>2</v> </b> <b> <a>8</a> - <b>12</b> - <v>7</v> + <b>9</b> + <v>20</v> </b> <b> - <a>12</a> - <b>18</b> + <a>9</a> + <b>13</b> <v>12</v> </b> <b> - <a>19</a> - <b>25</b> + <a>13</a> + <b>20</b> <v>12</v> </b> <b> - <a>25</a> + <a>20</a> + <b>27</b> + <v>12</v> + </b> + <b> + <a>28</a> <b>36</b> <v>12</v> </b> <b> - <a>37</a> - <b>96</b> + <a>38</a> + <b>98</b> <v>12</v> </b> <b> - <a>101</a> - <b>188</b> + <a>102</a> + <b>193</b> <v>12</v> </b> <b> - <a>198</a> - <b>538</b> + <a>203</a> + <b>541</b> <v>12</v> </b> <b> - <a>592</a> - <b>3240</b> + <a>596</a> + <b>3777</b> <v>12</v> </b> <b> - <a>4091</a> - <b>21915</b> - <v>6</v> + <a>4963</a> + <b>20604</b> + <v>5</v> </b> </bs> </hist> @@ -11779,68 +11590,73 @@ <bs> <b> <a>1</a> - <b>4</b> - <v>8</v> + <b>3</b> + <v>12</v> </b> <b> <a>4</a> <b>5</b> - <v>14</v> + <v>8</v> </b> <b> <a>5</a> - <b>7</b> - <v>8</v> + <b>6</b> + <v>17</v> </b> <b> - <a>7</a> + <a>6</a> <b>8</b> - <v>21</v> + <v>2</v> </b> <b> <a>8</a> - <b>12</b> - <v>7</v> + <b>9</b> + <v>20</v> </b> <b> - <a>12</a> - <b>18</b> + <a>9</a> + <b>13</b> <v>12</v> </b> <b> - <a>19</a> - <b>25</b> + <a>13</a> + <b>20</b> <v>12</v> </b> <b> - <a>25</a> + <a>20</a> + <b>27</b> + <v>12</v> + </b> + <b> + <a>28</a> <b>36</b> <v>12</v> </b> <b> - <a>37</a> - <b>96</b> + <a>38</a> + <b>98</b> <v>12</v> </b> <b> - <a>101</a> - <b>188</b> + <a>102</a> + <b>193</b> <v>12</v> </b> <b> - <a>198</a> - <b>538</b> + <a>203</a> + <b>541</b> <v>12</v> </b> <b> - <a>592</a> - <b>3240</b> + <a>596</a> + <b>3777</b> <v>12</v> </b> <b> - <a>4091</a> - <b>21915</b> - <v>6</v> + <a>4963</a> + <b>20604</b> + <v>5</v> </b> </bs> </hist> @@ -11856,7 +11672,7 @@ <b> <a>1</a> <b>2</b> - <v>86140</v> + <v>80203</v> </b> </bs> </hist> @@ -11872,7 +11688,7 @@ <b> <a>1</a> <b>2</b> - <v>86140</v> + <v>80203</v> </b> </bs> </hist> @@ -11882,15 +11698,15 @@ </relation> <relation> <name>ql_dataclass_def</name> - <cardinality>23834</cardinality> + <cardinality>22563</cardinality> <columnsizes> <e> <k>id</k> - <v>23834</v> + <v>22563</v> </e> <e> <k>name</k> - <v>23834</v> + <v>22563</v> </e> </columnsizes> <dependencies> @@ -11904,7 +11720,7 @@ <b> <a>1</a> <b>2</b> - <v>23834</v> + <v>22563</v> </b> </bs> </hist> @@ -11920,7 +11736,7 @@ <b> <a>1</a> <b>2</b> - <v>23834</v> + <v>22563</v> </b> </bs> </hist> @@ -11930,11 +11746,11 @@ </relation> <relation> <name>ql_dataclass_extends</name> - <cardinality>59928</cardinality> + <cardinality>57708</cardinality> <columnsizes> <e> <k>ql_dataclass</k> - <v>22062</v> + <v>21309</v> </e> <e> <k>index</k> @@ -11942,7 +11758,7 @@ </e> <e> <k>extends</k> - <v>59928</v> + <v>57708</v> </e> </columnsizes> <dependencies> @@ -11956,17 +11772,17 @@ <b> <a>2</a> <b>3</b> - <v>14722</v> + <v>14280</v> </b> <b> <a>4</a> <b>5</b> - <v>6891</v> + <v>6614</v> </b> <b> <a>6</a> <b>17</b> - <v>449</v> + <v>415</v> </b> </bs> </hist> @@ -11982,17 +11798,17 @@ <b> <a>2</a> <b>3</b> - <v>14722</v> + <v>14280</v> </b> <b> <a>4</a> <b>5</b> - <v>6891</v> + <v>6614</v> </b> <b> <a>6</a> <b>17</b> - <v>449</v> + <v>415</v> </b> </bs> </hist> @@ -12011,38 +11827,38 @@ <v>2</v> </b> <b> - <a>4</a> - <b>5</b> + <a>3</a> + <b>4</b> <v>2</v> </b> <b> - <a>9</a> - <b>10</b> + <a>6</a> + <b>7</b> <v>2</v> </b> <b> - <a>19</a> - <b>20</b> + <a>15</a> + <b>16</b> <v>2</v> </b> <b> - <a>80</a> - <b>81</b> + <a>76</a> + <b>77</b> <v>2</v> </b> <b> - <a>449</a> - <b>450</b> + <a>415</a> + <b>416</b> <v>2</v> </b> <b> - <a>7340</a> - <b>7341</b> + <a>7029</a> + <b>7030</b> <v>2</v> </b> <b> - <a>22062</a> - <b>22063</b> + <a>21309</a> + <b>21310</b> <v>2</v> </b> </bs> @@ -12062,38 +11878,38 @@ <v>2</v> </b> <b> - <a>4</a> - <b>5</b> + <a>3</a> + <b>4</b> <v>2</v> </b> <b> - <a>9</a> - <b>10</b> + <a>6</a> + <b>7</b> <v>2</v> </b> <b> - <a>19</a> - <b>20</b> + <a>15</a> + <b>16</b> <v>2</v> </b> <b> - <a>80</a> - <b>81</b> + <a>76</a> + <b>77</b> <v>2</v> </b> <b> - <a>449</a> - <b>450</b> + <a>415</a> + <b>416</b> <v>2</v> </b> <b> - <a>7340</a> - <b>7341</b> + <a>7029</a> + <b>7030</b> <v>2</v> </b> <b> - <a>22062</a> - <b>22063</b> + <a>21309</a> + <b>21310</b> <v>2</v> </b> </bs> @@ -12110,7 +11926,7 @@ <b> <a>1</a> <b>2</b> - <v>59928</v> + <v>57708</v> </b> </bs> </hist> @@ -12126,7 +11942,7 @@ <b> <a>1</a> <b>2</b> - <v>59928</v> + <v>57708</v> </b> </bs> </hist> @@ -12136,11 +11952,11 @@ </relation> <relation> <name>ql_dataclass_instanceof</name> - <cardinality>1584</cardinality> + <cardinality>1896</cardinality> <columnsizes> <e> <k>ql_dataclass</k> - <v>791</v> + <v>942</v> </e> <e> <k>index</k> @@ -12148,7 +11964,7 @@ </e> <e> <k>instanceof</k> - <v>1584</v> + <v>1896</v> </e> </columnsizes> <dependencies> @@ -12162,12 +11978,12 @@ <b> <a>2</a> <b>3</b> - <v>790</v> + <v>936</v> </b> <b> <a>4</a> <b>5</b> - <v>1</v> + <v>6</v> </b> </bs> </hist> @@ -12183,12 +11999,12 @@ <b> <a>2</a> <b>3</b> - <v>790</v> + <v>936</v> </b> <b> <a>4</a> <b>5</b> - <v>1</v> + <v>6</v> </b> </bs> </hist> @@ -12202,13 +12018,13 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>6</a> + <b>7</b> <v>2</v> </b> <b> - <a>791</a> - <b>792</b> + <a>942</a> + <b>943</b> <v>2</v> </b> </bs> @@ -12223,13 +12039,13 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>6</a> + <b>7</b> <v>2</v> </b> <b> - <a>791</a> - <b>792</b> + <a>942</a> + <b>943</b> <v>2</v> </b> </bs> @@ -12246,7 +12062,7 @@ <b> <a>1</a> <b>2</b> - <v>1584</v> + <v>1896</v> </b> </bs> </hist> @@ -12262,7 +12078,7 @@ <b> <a>1</a> <b>2</b> - <v>1584</v> + <v>1896</v> </b> </bs> </hist> @@ -12272,11 +12088,11 @@ </relation> <relation> <name>ql_datatype_branch_child</name> - <cardinality>5604</cardinality> + <cardinality>4787</cardinality> <columnsizes> <e> <k>ql_datatype_branch</k> - <v>2323</v> + <v>1984</v> </e> <e> <k>index</k> @@ -12284,7 +12100,7 @@ </e> <e> <k>child</k> - <v>5604</v> + <v>4787</v> </e> </columnsizes> <dependencies> @@ -12298,27 +12114,27 @@ <b> <a>1</a> <b>2</b> - <v>629</v> + <v>517</v> </b> <b> <a>2</a> <b>3</b> - <v>706</v> + <v>600</v> </b> <b> <a>3</a> <b>4</b> - <v>664</v> + <v>563</v> </b> <b> <a>4</a> <b>5</b> - <v>161</v> + <v>180</v> </b> <b> <a>5</a> <b>11</b> - <v>163</v> + <v>124</v> </b> </bs> </hist> @@ -12334,27 +12150,27 @@ <b> <a>1</a> <b>2</b> - <v>629</v> + <v>517</v> </b> <b> <a>2</a> <b>3</b> - <v>706</v> + <v>600</v> </b> <b> <a>3</a> <b>4</b> - <v>664</v> + <v>563</v> </b> <b> <a>4</a> <b>5</b> - <v>161</v> + <v>180</v> </b> <b> <a>5</a> <b>11</b> - <v>163</v> + <v>124</v> </b> </bs> </hist> @@ -12368,48 +12184,43 @@ <budget>12</budget> <bs> <b> - <a>8</a> - <b>9</b> - <v>2</v> - </b> - <b> - <a>16</a> - <b>17</b> - <v>1</v> + <a>2</a> + <b>3</b> + <v>3</v> </b> <b> - <a>30</a> - <b>31</b> + <a>8</a> + <b>9</b> <v>1</v> </b> <b> - <a>50</a> - <b>51</b> + <a>27</a> + <b>28</b> <v>1</v> </b> <b> - <a>163</a> - <b>164</b> + <a>124</a> + <b>125</b> <v>1</v> </b> <b> - <a>324</a> - <b>325</b> + <a>304</a> + <b>305</b> <v>1</v> </b> <b> - <a>988</a> - <b>989</b> + <a>867</a> + <b>868</b> <v>1</v> </b> <b> - <a>1694</a> - <b>1695</b> + <a>1467</a> + <b>1468</b> <v>1</v> </b> <b> - <a>2323</a> - <b>2324</b> + <a>1984</a> + <b>1985</b> <v>1</v> </b> </bs> @@ -12424,48 +12235,43 @@ <budget>12</budget> <bs> <b> - <a>8</a> - <b>9</b> - <v>2</v> - </b> - <b> - <a>16</a> - <b>17</b> - <v>1</v> + <a>2</a> + <b>3</b> + <v>3</v> </b> <b> - <a>30</a> - <b>31</b> + <a>8</a> + <b>9</b> <v>1</v> </b> <b> - <a>50</a> - <b>51</b> + <a>27</a> + <b>28</b> <v>1</v> </b> <b> - <a>163</a> - <b>164</b> + <a>124</a> + <b>125</b> <v>1</v> </b> <b> - <a>324</a> - <b>325</b> + <a>304</a> + <b>305</b> <v>1</v> </b> <b> - <a>988</a> - <b>989</b> + <a>867</a> + <b>868</b> <v>1</v> </b> <b> - <a>1694</a> - <b>1695</b> + <a>1467</a> + <b>1468</b> <v>1</v> </b> <b> - <a>2323</a> - <b>2324</b> + <a>1984</a> + <b>1985</b> <v>1</v> </b> </bs> @@ -12482,7 +12288,7 @@ <b> <a>1</a> <b>2</b> - <v>5604</v> + <v>4787</v> </b> </bs> </hist> @@ -12498,7 +12304,7 @@ <b> <a>1</a> <b>2</b> - <v>5604</v> + <v>4787</v> </b> </bs> </hist> @@ -12508,15 +12314,15 @@ </relation> <relation> <name>ql_datatype_branch_def</name> - <cardinality>3437</cardinality> + <cardinality>2719</cardinality> <columnsizes> <e> <k>id</k> - <v>3437</v> + <v>2719</v> </e> <e> <k>name</k> - <v>3437</v> + <v>2719</v> </e> </columnsizes> <dependencies> @@ -12530,7 +12336,7 @@ <b> <a>1</a> <b>2</b> - <v>3437</v> + <v>2719</v> </b> </bs> </hist> @@ -12546,7 +12352,7 @@ <b> <a>1</a> <b>2</b> - <v>3437</v> + <v>2719</v> </b> </bs> </hist> @@ -12556,19 +12362,19 @@ </relation> <relation> <name>ql_datatype_branches_child</name> - <cardinality>3437</cardinality> + <cardinality>2719</cardinality> <columnsizes> <e> <k>ql_datatype_branches</k> - <v>809</v> + <v>548</v> </e> <e> <k>index</k> - <v>231</v> + <v>246</v> </e> <e> <k>child</k> - <v>3437</v> + <v>2719</v> </e> </columnsizes> <dependencies> @@ -12582,37 +12388,37 @@ <b> <a>1</a> <b>2</b> - <v>163</v> + <v>132</v> </b> <b> <a>2</a> <b>3</b> - <v>348</v> + <v>182</v> </b> <b> <a>3</a> <b>4</b> - <v>104</v> + <v>81</v> </b> <b> <a>4</a> - <b>5</b> - <v>63</v> + <b>6</b> + <v>49</v> </b> <b> - <a>5</a> + <a>6</a> <b>9</b> - <v>65</v> + <v>43</v> </b> <b> <a>9</a> - <b>61</b> - <v>61</v> + <b>15</b> + <v>42</v> </b> <b> - <a>82</a> - <b>232</b> - <v>5</v> + <a>15</a> + <b>247</b> + <v>19</v> </b> </bs> </hist> @@ -12628,37 +12434,37 @@ <b> <a>1</a> <b>2</b> - <v>163</v> + <v>132</v> </b> <b> <a>2</a> <b>3</b> - <v>348</v> + <v>182</v> </b> <b> <a>3</a> <b>4</b> - <v>104</v> + <v>81</v> </b> <b> <a>4</a> - <b>5</b> - <v>63</v> + <b>6</b> + <v>49</v> </b> <b> - <a>5</a> + <a>6</a> <b>9</b> - <v>65</v> + <v>43</v> </b> <b> <a>9</a> - <b>61</b> - <v>61</v> + <b>15</b> + <v>42</v> </b> <b> - <a>82</a> - <b>232</b> - <v>5</v> + <a>15</a> + <b>247</b> + <v>19</v> </b> </bs> </hist> @@ -12674,42 +12480,37 @@ <b> <a>1</a> <b>2</b> - <v>38</v> + <v>51</v> </b> <b> <a>2</a> <b>3</b> - <v>110</v> + <v>111</v> </b> <b> - <a>4</a> - <b>5</b> + <a>3</a> + <b>4</b> <v>1</v> </b> <b> - <a>5</a> - <b>6</b> - <v>22</v> - </b> - <b> - <a>6</a> - <b>8</b> - <v>21</v> + <a>4</a> + <b>5</b> + <v>32</v> </b> <b> - <a>8</a> - <b>14</b> - <v>15</v> + <a>5</a> + <b>11</b> + <v>18</v> </b> <b> - <a>14</a> - <b>91</b> - <v>18</v> + <a>11</a> + <b>20</b> + <v>19</v> </b> <b> - <a>109</a> - <b>810</b> - <v>6</v> + <a>21</a> + <b>549</b> + <v>14</v> </b> </bs> </hist> @@ -12725,42 +12526,37 @@ <b> <a>1</a> <b>2</b> - <v>38</v> + <v>51</v> </b> <b> <a>2</a> <b>3</b> - <v>110</v> + <v>111</v> </b> <b> - <a>4</a> - <b>5</b> + <a>3</a> + <b>4</b> <v>1</v> </b> <b> - <a>5</a> - <b>6</b> - <v>22</v> - </b> - <b> - <a>6</a> - <b>8</b> - <v>21</v> + <a>4</a> + <b>5</b> + <v>32</v> </b> <b> - <a>8</a> - <b>14</b> - <v>15</v> + <a>5</a> + <b>11</b> + <v>18</v> </b> <b> - <a>14</a> - <b>91</b> - <v>18</v> + <a>11</a> + <b>20</b> + <v>19</v> </b> <b> - <a>109</a> - <b>810</b> - <v>6</v> + <a>21</a> + <b>549</b> + <v>14</v> </b> </bs> </hist> @@ -12776,7 +12572,7 @@ <b> <a>1</a> <b>2</b> - <v>3437</v> + <v>2719</v> </b> </bs> </hist> @@ -12792,7 +12588,7 @@ <b> <a>1</a> <b>2</b> - <v>3437</v> + <v>2719</v> </b> </bs> </hist> @@ -12802,30 +12598,30 @@ </relation> <relation> <name>ql_datatype_branches_def</name> - <cardinality>809</cardinality> + <cardinality>548</cardinality> <columnsizes> <e> <k>id</k> - <v>809</v> + <v>548</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_datatype_def</name> - <cardinality>809</cardinality> + <cardinality>548</cardinality> <columnsizes> <e> <k>id</k> - <v>809</v> + <v>548</v> </e> <e> <k>name</k> - <v>809</v> + <v>548</v> </e> <e> <k>child</k> - <v>809</v> + <v>548</v> </e> </columnsizes> <dependencies> @@ -12839,7 +12635,7 @@ <b> <a>1</a> <b>2</b> - <v>809</v> + <v>548</v> </b> </bs> </hist> @@ -12855,7 +12651,7 @@ <b> <a>1</a> <b>2</b> - <v>809</v> + <v>548</v> </b> </bs> </hist> @@ -12871,7 +12667,7 @@ <b> <a>1</a> <b>2</b> - <v>809</v> + <v>548</v> </b> </bs> </hist> @@ -12887,7 +12683,7 @@ <b> <a>1</a> <b>2</b> - <v>809</v> + <v>548</v> </b> </bs> </hist> @@ -12903,7 +12699,7 @@ <b> <a>1</a> <b>2</b> - <v>809</v> + <v>548</v> </b> </bs> </hist> @@ -12919,7 +12715,7 @@ <b> <a>1</a> <b>2</b> - <v>809</v> + <v>548</v> </b> </bs> </hist> @@ -12929,19 +12725,19 @@ </relation> <relation> <name>ql_disjunction_def</name> - <cardinality>40259</cardinality> + <cardinality>44890</cardinality> <columnsizes> <e> <k>id</k> - <v>40259</v> + <v>44890</v> </e> <e> <k>left</k> - <v>40259</v> + <v>44890</v> </e> <e> <k>right</k> - <v>40259</v> + <v>44890</v> </e> </columnsizes> <dependencies> @@ -12955,7 +12751,7 @@ <b> <a>1</a> <b>2</b> - <v>40259</v> + <v>44890</v> </b> </bs> </hist> @@ -12971,7 +12767,7 @@ <b> <a>1</a> <b>2</b> - <v>40259</v> + <v>44890</v> </b> </bs> </hist> @@ -12987,7 +12783,7 @@ <b> <a>1</a> <b>2</b> - <v>40259</v> + <v>44890</v> </b> </bs> </hist> @@ -13003,7 +12799,7 @@ <b> <a>1</a> <b>2</b> - <v>40259</v> + <v>44890</v> </b> </bs> </hist> @@ -13019,7 +12815,7 @@ <b> <a>1</a> <b>2</b> - <v>40259</v> + <v>44890</v> </b> </bs> </hist> @@ -13035,7 +12831,7 @@ <b> <a>1</a> <b>2</b> - <v>40259</v> + <v>44890</v> </b> </bs> </hist> @@ -13045,15 +12841,15 @@ </relation> <relation> <name>ql_expr_aggregate_body_def</name> - <cardinality>1293</cardinality> + <cardinality>1216</cardinality> <columnsizes> <e> <k>id</k> - <v>1293</v> + <v>1216</v> </e> <e> <k>as_exprs</k> - <v>1293</v> + <v>1216</v> </e> </columnsizes> <dependencies> @@ -13067,7 +12863,7 @@ <b> <a>1</a> <b>2</b> - <v>1293</v> + <v>1216</v> </b> </bs> </hist> @@ -13083,7 +12879,7 @@ <b> <a>1</a> <b>2</b> - <v>1293</v> + <v>1216</v> </b> </bs> </hist> @@ -13141,23 +12937,23 @@ </relation> <relation> <name>ql_expr_annotation_def</name> - <cardinality>1328</cardinality> + <cardinality>601</cardinality> <columnsizes> <e> <k>id</k> - <v>1328</v> + <v>601</v> </e> <e> <k>annot_arg</k> - <v>1328</v> + <v>601</v> </e> <e> <k>name</k> - <v>1328</v> + <v>601</v> </e> <e> <k>child</k> - <v>1328</v> + <v>601</v> </e> </columnsizes> <dependencies> @@ -13171,7 +12967,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13187,7 +12983,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13203,7 +12999,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13219,7 +13015,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13235,7 +13031,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13251,7 +13047,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13267,7 +13063,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13283,7 +13079,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13299,7 +13095,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13315,7 +13111,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13331,7 +13127,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13347,7 +13143,7 @@ <b> <a>1</a> <b>2</b> - <v>1328</v> + <v>601</v> </b> </bs> </hist> @@ -13357,15 +13153,15 @@ </relation> <relation> <name>ql_field_def</name> - <cardinality>4149</cardinality> + <cardinality>3721</cardinality> <columnsizes> <e> <k>id</k> - <v>4149</v> + <v>3721</v> </e> <e> <k>child</k> - <v>4149</v> + <v>3721</v> </e> </columnsizes> <dependencies> @@ -13379,7 +13175,7 @@ <b> <a>1</a> <b>2</b> - <v>4149</v> + <v>3721</v> </b> </bs> </hist> @@ -13395,7 +13191,7 @@ <b> <a>1</a> <b>2</b> - <v>4149</v> + <v>3721</v> </b> </bs> </hist> @@ -13405,15 +13201,15 @@ </relation> <relation> <name>ql_full_aggregate_body_as_exprs</name> - <cardinality>1309</cardinality> + <cardinality>1288</cardinality> <columnsizes> <e> <k>ql_full_aggregate_body</k> - <v>1309</v> + <v>1288</v> </e> <e> <k>as_exprs</k> - <v>1309</v> + <v>1288</v> </e> </columnsizes> <dependencies> @@ -13427,7 +13223,7 @@ <b> <a>1</a> <b>2</b> - <v>1309</v> + <v>1288</v> </b> </bs> </hist> @@ -13443,7 +13239,7 @@ <b> <a>1</a> <b>2</b> - <v>1309</v> + <v>1288</v> </b> </bs> </hist> @@ -13453,11 +13249,11 @@ </relation> <relation> <name>ql_full_aggregate_body_child</name> - <cardinality>7577</cardinality> + <cardinality>7058</cardinality> <columnsizes> <e> <k>ql_full_aggregate_body</k> - <v>6655</v> + <v>6301</v> </e> <e> <k>index</k> @@ -13465,7 +13261,7 @@ </e> <e> <k>child</k> - <v>7577</v> + <v>7058</v> </e> </columnsizes> <dependencies> @@ -13479,17 +13275,17 @@ <b> <a>1</a> <b>2</b> - <v>6061</v> + <v>5788</v> </b> <b> <a>2</a> - <b>4</b> - <v>527</v> + <b>5</b> + <v>480</v> </b> <b> - <a>4</a> + <a>5</a> <b>10</b> - <v>67</v> + <v>33</v> </b> </bs> </hist> @@ -13505,17 +13301,17 @@ <b> <a>1</a> <b>2</b> - <v>6061</v> + <v>5788</v> </b> <b> <a>2</a> - <b>4</b> - <v>527</v> + <b>5</b> + <v>480</v> </b> <b> - <a>4</a> + <a>5</a> <b>10</b> - <v>67</v> + <v>33</v> </b> </bs> </hist> @@ -13534,38 +13330,43 @@ <v>1</v> </b> <b> - <a>20</a> - <b>21</b> - <v>2</v> + <a>13</a> + <b>14</b> + <v>1</v> </b> <b> - <a>22</a> - <b>23</b> + <a>14</a> + <b>15</b> <v>1</v> </b> <b> - <a>48</a> - <b>49</b> + <a>18</a> + <b>19</b> <v>1</v> </b> <b> - <a>67</a> - <b>68</b> + <a>33</a> + <b>34</b> <v>1</v> </b> <b> - <a>147</a> - <b>148</b> + <a>51</a> + <b>52</b> <v>1</v> </b> <b> - <a>594</a> - <b>595</b> + <a>111</a> + <b>112</b> <v>1</v> </b> <b> - <a>6655</a> - <b>6656</b> + <a>513</a> + <b>514</b> + <v>1</v> + </b> + <b> + <a>6301</a> + <b>6302</b> <v>1</v> </b> </bs> @@ -13585,38 +13386,43 @@ <v>1</v> </b> <b> - <a>20</a> - <b>21</b> - <v>2</v> + <a>13</a> + <b>14</b> + <v>1</v> </b> <b> - <a>22</a> - <b>23</b> + <a>14</a> + <b>15</b> <v>1</v> </b> <b> - <a>48</a> - <b>49</b> + <a>18</a> + <b>19</b> <v>1</v> </b> <b> - <a>67</a> - <b>68</b> + <a>33</a> + <b>34</b> <v>1</v> </b> <b> - <a>147</a> - <b>148</b> + <a>51</a> + <b>52</b> + <v>1</v> + </b> + <b> + <a>111</a> + <b>112</b> <v>1</v> </b> <b> - <a>594</a> - <b>595</b> + <a>513</a> + <b>514</b> <v>1</v> </b> <b> - <a>6655</a> - <b>6656</b> + <a>6301</a> + <b>6302</b> <v>1</v> </b> </bs> @@ -13633,7 +13439,7 @@ <b> <a>1</a> <b>2</b> - <v>7577</v> + <v>7058</v> </b> </bs> </hist> @@ -13649,7 +13455,7 @@ <b> <a>1</a> <b>2</b> - <v>7577</v> + <v>7058</v> </b> </bs> </hist> @@ -13659,26 +13465,26 @@ </relation> <relation> <name>ql_full_aggregate_body_def</name> - <cardinality>6714</cardinality> + <cardinality>6356</cardinality> <columnsizes> <e> <k>id</k> - <v>6714</v> + <v>6356</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_full_aggregate_body_guard</name> - <cardinality>3739</cardinality> + <cardinality>3549</cardinality> <columnsizes> <e> <k>ql_full_aggregate_body</k> - <v>3739</v> + <v>3549</v> </e> <e> <k>guard</k> - <v>3739</v> + <v>3549</v> </e> </columnsizes> <dependencies> @@ -13692,7 +13498,7 @@ <b> <a>1</a> <b>2</b> - <v>3739</v> + <v>3549</v> </b> </bs> </hist> @@ -13708,7 +13514,7 @@ <b> <a>1</a> <b>2</b> - <v>3739</v> + <v>3549</v> </b> </bs> </hist> @@ -13718,15 +13524,15 @@ </relation> <relation> <name>ql_full_aggregate_body_order_bys</name> - <cardinality>449</cardinality> + <cardinality>429</cardinality> <columnsizes> <e> <k>ql_full_aggregate_body</k> - <v>449</v> + <v>429</v> </e> <e> <k>order_bys</k> - <v>449</v> + <v>429</v> </e> </columnsizes> <dependencies> @@ -13740,7 +13546,7 @@ <b> <a>1</a> <b>2</b> - <v>449</v> + <v>429</v> </b> </bs> </hist> @@ -13756,7 +13562,7 @@ <b> <a>1</a> <b>2</b> - <v>449</v> + <v>429</v> </b> </bs> </hist> @@ -13766,11 +13572,11 @@ </relation> <relation> <name>ql_higher_order_term_child</name> - <cardinality>469</cardinality> + <cardinality>343</cardinality> <columnsizes> <e> <k>ql_higher_order_term</k> - <v>105</v> + <v>77</v> </e> <e> <k>index</k> @@ -13778,7 +13584,7 @@ </e> <e> <k>child</k> - <v>469</v> + <v>343</v> </e> </columnsizes> <dependencies> @@ -13792,12 +13598,12 @@ <b> <a>3</a> <b>4</b> - <v>31</v> + <v>24</v> </b> <b> <a>5</a> <b>6</b> - <v>72</v> + <v>51</v> </b> <b> <a>8</a> @@ -13818,12 +13624,12 @@ <b> <a>3</a> <b>4</b> - <v>31</v> + <v>24</v> </b> <b> <a>5</a> <b>6</b> - <v>72</v> + <v>51</v> </b> <b> <a>8</a> @@ -13847,13 +13653,13 @@ <v>3</v> </b> <b> - <a>74</a> - <b>75</b> + <a>53</a> + <b>54</b> <v>2</v> </b> <b> - <a>105</a> - <b>106</b> + <a>77</a> + <b>78</b> <v>3</v> </b> </bs> @@ -13873,13 +13679,13 @@ <v>3</v> </b> <b> - <a>74</a> - <b>75</b> + <a>53</a> + <b>54</b> <v>2</v> </b> <b> - <a>105</a> - <b>106</b> + <a>77</a> + <b>78</b> <v>3</v> </b> </bs> @@ -13896,7 +13702,7 @@ <b> <a>1</a> <b>2</b> - <v>469</v> + <v>343</v> </b> </bs> </hist> @@ -13912,7 +13718,7 @@ <b> <a>1</a> <b>2</b> - <v>469</v> + <v>343</v> </b> </bs> </hist> @@ -13922,15 +13728,15 @@ </relation> <relation> <name>ql_higher_order_term_def</name> - <cardinality>105</cardinality> + <cardinality>77</cardinality> <columnsizes> <e> <k>id</k> - <v>105</v> + <v>77</v> </e> <e> <k>name</k> - <v>105</v> + <v>77</v> </e> </columnsizes> <dependencies> @@ -13944,7 +13750,7 @@ <b> <a>1</a> <b>2</b> - <v>105</v> + <v>77</v> </b> </bs> </hist> @@ -13960,7 +13766,7 @@ <b> <a>1</a> <b>2</b> - <v>105</v> + <v>77</v> </b> </bs> </hist> @@ -13970,23 +13776,23 @@ </relation> <relation> <name>ql_if_term_def</name> - <cardinality>3226</cardinality> + <cardinality>2953</cardinality> <columnsizes> <e> <k>id</k> - <v>3226</v> + <v>2953</v> </e> <e> <k>cond</k> - <v>3226</v> + <v>2953</v> </e> <e> <k>first</k> - <v>3226</v> + <v>2953</v> </e> <e> <k>second</k> - <v>3226</v> + <v>2953</v> </e> </columnsizes> <dependencies> @@ -14000,7 +13806,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14016,7 +13822,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14032,7 +13838,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14048,7 +13854,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14064,7 +13870,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14080,7 +13886,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14096,7 +13902,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14112,7 +13918,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14128,7 +13934,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14144,7 +13950,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14160,7 +13966,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14176,7 +13982,7 @@ <b> <a>1</a> <b>2</b> - <v>3226</v> + <v>2953</v> </b> </bs> </hist> @@ -14186,19 +13992,19 @@ </relation> <relation> <name>ql_implication_def</name> - <cardinality>87</cardinality> + <cardinality>101</cardinality> <columnsizes> <e> <k>id</k> - <v>87</v> + <v>101</v> </e> <e> <k>left</k> - <v>87</v> + <v>101</v> </e> <e> <k>right</k> - <v>87</v> + <v>101</v> </e> </columnsizes> <dependencies> @@ -14212,7 +14018,7 @@ <b> <a>1</a> <b>2</b> - <v>87</v> + <v>101</v> </b> </bs> </hist> @@ -14228,7 +14034,7 @@ <b> <a>1</a> <b>2</b> - <v>87</v> + <v>101</v> </b> </bs> </hist> @@ -14244,7 +14050,7 @@ <b> <a>1</a> <b>2</b> - <v>87</v> + <v>101</v> </b> </bs> </hist> @@ -14260,7 +14066,7 @@ <b> <a>1</a> <b>2</b> - <v>87</v> + <v>101</v> </b> </bs> </hist> @@ -14276,7 +14082,7 @@ <b> <a>1</a> <b>2</b> - <v>87</v> + <v>101</v> </b> </bs> </hist> @@ -14292,7 +14098,7 @@ <b> <a>1</a> <b>2</b> - <v>87</v> + <v>101</v> </b> </bs> </hist> @@ -14302,11 +14108,11 @@ </relation> <relation> <name>ql_import_directive_child</name> - <cardinality>26183</cardinality> + <cardinality>27063</cardinality> <columnsizes> <e> <k>ql_import_directive</k> - <v>24818</v> + <v>25764</v> </e> <e> <k>index</k> @@ -14314,7 +14120,7 @@ </e> <e> <k>child</k> - <v>26183</v> + <v>27063</v> </e> </columnsizes> <dependencies> @@ -14328,12 +14134,12 @@ <b> <a>1</a> <b>2</b> - <v>23453</v> + <v>24465</v> </b> <b> <a>2</a> <b>3</b> - <v>1365</v> + <v>1299</v> </b> </bs> </hist> @@ -14349,12 +14155,12 @@ <b> <a>1</a> <b>2</b> - <v>23453</v> + <v>24465</v> </b> <b> <a>2</a> <b>3</b> - <v>1365</v> + <v>1299</v> </b> </bs> </hist> @@ -14368,13 +14174,13 @@ <budget>12</budget> <bs> <b> - <a>1365</a> - <b>1366</b> + <a>1299</a> + <b>1300</b> <v>1</v> </b> <b> - <a>24818</a> - <b>24819</b> + <a>25764</a> + <b>25765</b> <v>1</v> </b> </bs> @@ -14389,13 +14195,13 @@ <budget>12</budget> <bs> <b> - <a>1365</a> - <b>1366</b> + <a>1299</a> + <b>1300</b> <v>1</v> </b> <b> - <a>24818</a> - <b>24819</b> + <a>25764</a> + <b>25765</b> <v>1</v> </b> </bs> @@ -14412,7 +14218,7 @@ <b> <a>1</a> <b>2</b> - <v>26183</v> + <v>27063</v> </b> </bs> </hist> @@ -14428,7 +14234,7 @@ <b> <a>1</a> <b>2</b> - <v>26183</v> + <v>27063</v> </b> </bs> </hist> @@ -14438,26 +14244,26 @@ </relation> <relation> <name>ql_import_directive_def</name> - <cardinality>24818</cardinality> + <cardinality>25764</cardinality> <columnsizes> <e> <k>id</k> - <v>24818</v> + <v>25764</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_import_module_expr_def</name> - <cardinality>24818</cardinality> + <cardinality>25764</cardinality> <columnsizes> <e> <k>id</k> - <v>24818</v> + <v>25764</v> </e> <e> <k>child</k> - <v>24818</v> + <v>25764</v> </e> </columnsizes> <dependencies> @@ -14471,7 +14277,7 @@ <b> <a>1</a> <b>2</b> - <v>24818</v> + <v>25764</v> </b> </bs> </hist> @@ -14487,7 +14293,7 @@ <b> <a>1</a> <b>2</b> - <v>24818</v> + <v>25764</v> </b> </bs> </hist> @@ -14497,11 +14303,11 @@ </relation> <relation> <name>ql_import_module_expr_qual_name</name> - <cardinality>43119</cardinality> + <cardinality>44946</cardinality> <columnsizes> <e> <k>ql_import_module_expr</k> - <v>12715</v> + <v>13345</v> </e> <e> <k>index</k> @@ -14509,7 +14315,7 @@ </e> <e> <k>qual_name</k> - <v>43119</v> + <v>44946</v> </e> </columnsizes> <dependencies> @@ -14523,32 +14329,32 @@ <b> <a>1</a> <b>2</b> - <v>969</v> + <v>972</v> </b> <b> <a>2</a> <b>3</b> - <v>1837</v> + <v>2220</v> </b> <b> <a>3</a> <b>4</b> - <v>3420</v> + <v>3431</v> </b> <b> <a>4</a> <b>5</b> - <v>4818</v> + <v>4933</v> </b> <b> <a>5</a> <b>6</b> - <v>1222</v> + <v>1355</v> </b> <b> <a>6</a> <b>9</b> - <v>449</v> + <v>434</v> </b> </bs> </hist> @@ -14564,32 +14370,32 @@ <b> <a>1</a> <b>2</b> - <v>969</v> + <v>972</v> </b> <b> <a>2</a> <b>3</b> - <v>1837</v> + <v>2220</v> </b> <b> <a>3</a> <b>4</b> - <v>3420</v> + <v>3431</v> </b> <b> <a>4</a> <b>5</b> - <v>4818</v> + <v>4933</v> </b> <b> <a>5</a> <b>6</b> - <v>1222</v> + <v>1355</v> </b> <b> <a>6</a> <b>9</b> - <v>449</v> + <v>434</v> </b> </bs> </hist> @@ -14603,43 +14409,43 @@ <budget>12</budget> <bs> <b> - <a>30</a> - <b>31</b> + <a>25</a> + <b>26</b> <v>1</v> </b> <b> - <a>110</a> - <b>111</b> + <a>105</a> + <b>106</b> <v>1</v> </b> <b> - <a>449</a> - <b>450</b> + <a>434</a> + <b>435</b> <v>1</v> </b> <b> - <a>1671</a> - <b>1672</b> + <a>1789</a> + <b>1790</b> <v>1</v> </b> <b> - <a>6489</a> - <b>6490</b> + <a>6722</a> + <b>6723</b> <v>1</v> </b> <b> - <a>9909</a> - <b>9910</b> + <a>10153</a> + <b>10154</b> <v>1</v> </b> <b> - <a>11746</a> - <b>11747</b> + <a>12373</a> + <b>12374</b> <v>1</v> </b> <b> - <a>12715</a> - <b>12716</b> + <a>13345</a> + <b>13346</b> <v>1</v> </b> </bs> @@ -14654,43 +14460,43 @@ <budget>12</budget> <bs> <b> - <a>30</a> - <b>31</b> + <a>25</a> + <b>26</b> <v>1</v> </b> <b> - <a>110</a> - <b>111</b> + <a>105</a> + <b>106</b> <v>1</v> </b> <b> - <a>449</a> - <b>450</b> + <a>434</a> + <b>435</b> <v>1</v> </b> <b> - <a>1671</a> - <b>1672</b> + <a>1789</a> + <b>1790</b> <v>1</v> </b> <b> - <a>6489</a> - <b>6490</b> + <a>6722</a> + <b>6723</b> <v>1</v> </b> <b> - <a>9909</a> - <b>9910</b> + <a>10153</a> + <b>10154</b> <v>1</v> </b> <b> - <a>11746</a> - <b>11747</b> + <a>12373</a> + <b>12374</b> <v>1</v> </b> <b> - <a>12715</a> - <b>12716</b> + <a>13345</a> + <b>13346</b> <v>1</v> </b> </bs> @@ -14707,7 +14513,7 @@ <b> <a>1</a> <b>2</b> - <v>43119</v> + <v>44946</v> </b> </bs> </hist> @@ -14723,7 +14529,7 @@ <b> <a>1</a> <b>2</b> - <v>43119</v> + <v>44946</v> </b> </bs> </hist> @@ -14733,19 +14539,19 @@ </relation> <relation> <name>ql_in_expr_def</name> - <cardinality>1003</cardinality> + <cardinality>1037</cardinality> <columnsizes> <e> <k>id</k> - <v>1003</v> + <v>1037</v> </e> <e> <k>left</k> - <v>1003</v> + <v>1037</v> </e> <e> <k>right</k> - <v>1003</v> + <v>1037</v> </e> </columnsizes> <dependencies> @@ -14759,7 +14565,7 @@ <b> <a>1</a> <b>2</b> - <v>1003</v> + <v>1037</v> </b> </bs> </hist> @@ -14775,7 +14581,7 @@ <b> <a>1</a> <b>2</b> - <v>1003</v> + <v>1037</v> </b> </bs> </hist> @@ -14791,7 +14597,7 @@ <b> <a>1</a> <b>2</b> - <v>1003</v> + <v>1037</v> </b> </bs> </hist> @@ -14807,7 +14613,7 @@ <b> <a>1</a> <b>2</b> - <v>1003</v> + <v>1037</v> </b> </bs> </hist> @@ -14823,7 +14629,7 @@ <b> <a>1</a> <b>2</b> - <v>1003</v> + <v>1037</v> </b> </bs> </hist> @@ -14839,7 +14645,7 @@ <b> <a>1</a> <b>2</b> - <v>1003</v> + <v>1037</v> </b> </bs> </hist> @@ -14849,11 +14655,11 @@ </relation> <relation> <name>ql_instance_of_child</name> - <cardinality>34256</cardinality> + <cardinality>31826</cardinality> <columnsizes> <e> <k>ql_instance_of</k> - <v>17128</v> + <v>15913</v> </e> <e> <k>index</k> @@ -14861,7 +14667,7 @@ </e> <e> <k>child</k> - <v>34256</v> + <v>31826</v> </e> </columnsizes> <dependencies> @@ -14875,7 +14681,7 @@ <b> <a>2</a> <b>3</b> - <v>17128</v> + <v>15913</v> </b> </bs> </hist> @@ -14891,7 +14697,7 @@ <b> <a>2</a> <b>3</b> - <v>17128</v> + <v>15913</v> </b> </bs> </hist> @@ -14905,8 +14711,8 @@ <budget>12</budget> <bs> <b> - <a>17128</a> - <b>17129</b> + <a>15913</a> + <b>15914</b> <v>2</v> </b> </bs> @@ -14921,8 +14727,8 @@ <budget>12</budget> <bs> <b> - <a>17128</a> - <b>17129</b> + <a>15913</a> + <b>15914</b> <v>2</v> </b> </bs> @@ -14939,7 +14745,7 @@ <b> <a>1</a> <b>2</b> - <v>34256</v> + <v>31826</v> </b> </bs> </hist> @@ -14955,7 +14761,7 @@ <b> <a>1</a> <b>2</b> - <v>34256</v> + <v>31826</v> </b> </bs> </hist> @@ -14965,26 +14771,26 @@ </relation> <relation> <name>ql_instance_of_def</name> - <cardinality>17128</cardinality> + <cardinality>15913</cardinality> <columnsizes> <e> <k>id</k> - <v>17128</v> + <v>15913</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_literal_def</name> - <cardinality>98847</cardinality> + <cardinality>109390</cardinality> <columnsizes> <e> <k>id</k> - <v>98847</v> + <v>109390</v> </e> <e> <k>child</k> - <v>98847</v> + <v>109390</v> </e> </columnsizes> <dependencies> @@ -14998,7 +14804,7 @@ <b> <a>1</a> <b>2</b> - <v>98847</v> + <v>109390</v> </b> </bs> </hist> @@ -15014,7 +14820,7 @@ <b> <a>1</a> <b>2</b> - <v>98847</v> + <v>109390</v> </b> </bs> </hist> @@ -15024,19 +14830,19 @@ </relation> <relation> <name>ql_member_predicate_child</name> - <cardinality>70661</cardinality> + <cardinality>63378</cardinality> <columnsizes> <e> <k>ql_member_predicate</k> - <v>47549</v> + <v>43952</v> </e> <e> <k>index</k> - <v>11</v> + <v>12</v> </e> <e> <k>child</k> - <v>70661</v> + <v>63378</v> </e> </columnsizes> <dependencies> @@ -15050,22 +14856,22 @@ <b> <a>1</a> <b>2</b> - <v>34294</v> + <v>32505</v> </b> <b> <a>2</a> <b>3</b> - <v>7406</v> + <v>6417</v> </b> <b> <a>3</a> <b>4</b> - <v>3503</v> + <v>3219</v> </b> <b> <a>4</a> - <b>12</b> - <v>2346</v> + <b>13</b> + <v>1811</v> </b> </bs> </hist> @@ -15081,22 +14887,22 @@ <b> <a>1</a> <b>2</b> - <v>34294</v> + <v>32505</v> </b> <b> <a>2</a> <b>3</b> - <v>7406</v> + <v>6417</v> </b> <b> <a>3</a> <b>4</b> - <v>3503</v> + <v>3219</v> </b> <b> <a>4</a> - <b>12</b> - <v>2346</v> + <b>13</b> + <v>1811</v> </b> </bs> </hist> @@ -15110,8 +14916,8 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>2</a> + <b>3</b> <v>1</v> </b> <b> @@ -15120,8 +14926,13 @@ <v>1</v> </b> <b> - <a>4</a> - <b>5</b> + <a>5</a> + <b>6</b> + <v>1</v> + </b> + <b> + <a>6</a> + <b>7</b> <v>1</v> </b> <b> @@ -15130,38 +14941,38 @@ <v>1</v> </b> <b> - <a>40</a> - <b>41</b> + <a>39</a> + <b>40</b> <v>1</v> </b> <b> - <a>588</a> - <b>589</b> + <a>420</a> + <b>421</b> <v>1</v> </b> <b> - <a>1017</a> - <b>1018</b> + <a>654</a> + <b>655</b> <v>1</v> </b> <b> - <a>2346</a> - <b>2347</b> + <a>1811</a> + <b>1812</b> <v>1</v> </b> <b> - <a>5849</a> - <b>5850</b> + <a>5030</a> + <b>5031</b> <v>1</v> </b> <b> - <a>13255</a> - <b>13256</b> + <a>11447</a> + <b>11448</b> <v>1</v> </b> <b> - <a>47549</a> - <b>47550</b> + <a>43952</a> + <b>43953</b> <v>1</v> </b> </bs> @@ -15176,8 +14987,8 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>2</a> + <b>3</b> <v>1</v> </b> <b> @@ -15186,8 +14997,13 @@ <v>1</v> </b> <b> - <a>4</a> - <b>5</b> + <a>5</a> + <b>6</b> + <v>1</v> + </b> + <b> + <a>6</a> + <b>7</b> <v>1</v> </b> <b> @@ -15196,38 +15012,38 @@ <v>1</v> </b> <b> - <a>40</a> - <b>41</b> + <a>39</a> + <b>40</b> <v>1</v> </b> <b> - <a>588</a> - <b>589</b> + <a>420</a> + <b>421</b> <v>1</v> </b> <b> - <a>1017</a> - <b>1018</b> + <a>654</a> + <b>655</b> <v>1</v> </b> <b> - <a>2346</a> - <b>2347</b> + <a>1811</a> + <b>1812</b> <v>1</v> </b> <b> - <a>5849</a> - <b>5850</b> + <a>5030</a> + <b>5031</b> <v>1</v> </b> <b> - <a>13255</a> - <b>13256</b> + <a>11447</a> + <b>11448</b> <v>1</v> </b> <b> - <a>47549</a> - <b>47550</b> + <a>43952</a> + <b>43953</b> <v>1</v> </b> </bs> @@ -15244,7 +15060,7 @@ <b> <a>1</a> <b>2</b> - <v>70661</v> + <v>63378</v> </b> </bs> </hist> @@ -15260,7 +15076,7 @@ <b> <a>1</a> <b>2</b> - <v>70661</v> + <v>63378</v> </b> </bs> </hist> @@ -15270,19 +15086,19 @@ </relation> <relation> <name>ql_member_predicate_def</name> - <cardinality>47549</cardinality> + <cardinality>43952</cardinality> <columnsizes> <e> <k>id</k> - <v>47549</v> + <v>43952</v> </e> <e> <k>name</k> - <v>47549</v> + <v>43952</v> </e> <e> <k>return_type</k> - <v>47549</v> + <v>43952</v> </e> </columnsizes> <dependencies> @@ -15296,7 +15112,7 @@ <b> <a>1</a> <b>2</b> - <v>47549</v> + <v>43952</v> </b> </bs> </hist> @@ -15312,7 +15128,7 @@ <b> <a>1</a> <b>2</b> - <v>47549</v> + <v>43952</v> </b> </bs> </hist> @@ -15328,7 +15144,7 @@ <b> <a>1</a> <b>2</b> - <v>47549</v> + <v>43952</v> </b> </bs> </hist> @@ -15344,7 +15160,7 @@ <b> <a>1</a> <b>2</b> - <v>47549</v> + <v>43952</v> </b> </bs> </hist> @@ -15360,7 +15176,7 @@ <b> <a>1</a> <b>2</b> - <v>47549</v> + <v>43952</v> </b> </bs> </hist> @@ -15376,7 +15192,7 @@ <b> <a>1</a> <b>2</b> - <v>47549</v> + <v>43952</v> </b> </bs> </hist> @@ -15386,15 +15202,15 @@ </relation> <relation> <name>ql_module_alias_body_def</name> - <cardinality>725</cardinality> + <cardinality>917</cardinality> <columnsizes> <e> <k>id</k> - <v>725</v> + <v>917</v> </e> <e> <k>child</k> - <v>725</v> + <v>917</v> </e> </columnsizes> <dependencies> @@ -15408,7 +15224,7 @@ <b> <a>1</a> <b>2</b> - <v>725</v> + <v>917</v> </b> </bs> </hist> @@ -15424,7 +15240,7 @@ <b> <a>1</a> <b>2</b> - <v>725</v> + <v>917</v> </b> </bs> </hist> @@ -15434,19 +15250,19 @@ </relation> <relation> <name>ql_module_child</name> - <cardinality>35070</cardinality> + <cardinality>33181</cardinality> <columnsizes> <e> <k>ql_module</k> - <v>3910</v> + <v>4556</v> </e> <e> <k>index</k> - <v>1248</v> + <v>1314</v> </e> <e> <k>child</k> - <v>35070</v> + <v>33181</v> </e> </columnsizes> <dependencies> @@ -15460,47 +15276,42 @@ <b> <a>1</a> <b>2</b> - <v>1257</v> + <v>1138</v> </b> <b> <a>2</a> <b>3</b> - <v>624</v> + <v>1239</v> </b> <b> <a>3</a> <b>4</b> - <v>294</v> + <v>385</v> </b> <b> <a>4</a> <b>5</b> - <v>294</v> + <v>392</v> </b> <b> <a>5</a> <b>8</b> - <v>324</v> + <v>383</v> </b> <b> <a>8</a> - <b>12</b> - <v>311</v> - </b> - <b> - <a>12</a> - <b>17</b> - <v>322</v> + <b>13</b> + <v>407</v> </b> <b> - <a>17</a> - <b>34</b> - <v>295</v> + <a>13</a> + <b>23</b> + <v>351</v> </b> <b> - <a>34</a> - <b>1249</b> - <v>189</v> + <a>23</a> + <b>1315</b> + <v>261</v> </b> </bs> </hist> @@ -15516,47 +15327,42 @@ <b> <a>1</a> <b>2</b> - <v>1257</v> + <v>1138</v> </b> <b> <a>2</a> <b>3</b> - <v>624</v> + <v>1239</v> </b> <b> <a>3</a> <b>4</b> - <v>294</v> + <v>385</v> </b> <b> <a>4</a> <b>5</b> - <v>294</v> + <v>392</v> </b> <b> <a>5</a> <b>8</b> - <v>324</v> + <v>383</v> </b> <b> <a>8</a> - <b>12</b> - <v>311</v> - </b> - <b> - <a>12</a> - <b>17</b> - <v>322</v> + <b>13</b> + <v>407</v> </b> <b> - <a>17</a> - <b>34</b> - <v>295</v> + <a>13</a> + <b>23</b> + <v>351</v> </b> <b> - <a>34</a> - <b>1249</b> - <v>189</v> + <a>23</a> + <b>1315</b> + <v>261</v> </b> </bs> </hist> @@ -15572,32 +15378,32 @@ <b> <a>1</a> <b>2</b> - <v>684</v> + <v>718</v> </b> <b> <a>2</a> <b>3</b> - <v>144</v> + <v>180</v> </b> <b> <a>3</a> - <b>4</b> - <v>131</v> + <b>5</b> + <v>114</v> </b> <b> - <a>4</a> - <b>8</b> - <v>109</v> + <a>5</a> + <b>7</b> + <v>102</v> </b> <b> - <a>15</a> - <b>30</b> - <v>94</v> + <a>7</a> + <b>17</b> + <v>106</v> </b> <b> - <a>31</a> - <b>3911</b> - <v>86</v> + <a>17</a> + <b>4557</b> + <v>94</v> </b> </bs> </hist> @@ -15613,32 +15419,32 @@ <b> <a>1</a> <b>2</b> - <v>684</v> + <v>718</v> </b> <b> <a>2</a> <b>3</b> - <v>144</v> + <v>180</v> </b> <b> <a>3</a> - <b>4</b> - <v>131</v> + <b>5</b> + <v>114</v> </b> <b> - <a>4</a> - <b>8</b> - <v>109</v> + <a>5</a> + <b>7</b> + <v>102</v> </b> <b> - <a>15</a> - <b>30</b> - <v>94</v> + <a>7</a> + <b>17</b> + <v>106</v> </b> <b> - <a>31</a> - <b>3911</b> - <v>86</v> + <a>17</a> + <b>4557</b> + <v>94</v> </b> </bs> </hist> @@ -15654,7 +15460,7 @@ <b> <a>1</a> <b>2</b> - <v>35070</v> + <v>33181</v> </b> </bs> </hist> @@ -15670,7 +15476,7 @@ <b> <a>1</a> <b>2</b> - <v>35070</v> + <v>33181</v> </b> </bs> </hist> @@ -15680,15 +15486,15 @@ </relation> <relation> <name>ql_module_def</name> - <cardinality>3916</cardinality> + <cardinality>4567</cardinality> <columnsizes> <e> <k>id</k> - <v>3916</v> + <v>4567</v> </e> <e> <k>name</k> - <v>3916</v> + <v>4567</v> </e> </columnsizes> <dependencies> @@ -15702,7 +15508,7 @@ <b> <a>1</a> <b>2</b> - <v>3916</v> + <v>4567</v> </b> </bs> </hist> @@ -15718,7 +15524,7 @@ <b> <a>1</a> <b>2</b> - <v>3916</v> + <v>4567</v> </b> </bs> </hist> @@ -15728,15 +15534,15 @@ </relation> <relation> <name>ql_module_expr_def</name> - <cardinality>72503</cardinality> + <cardinality>76399</cardinality> <columnsizes> <e> <k>id</k> - <v>72503</v> + <v>76399</v> </e> <e> <k>child</k> - <v>72503</v> + <v>76399</v> </e> </columnsizes> <dependencies> @@ -15750,7 +15556,7 @@ <b> <a>1</a> <b>2</b> - <v>72503</v> + <v>76399</v> </b> </bs> </hist> @@ -15766,7 +15572,7 @@ <b> <a>1</a> <b>2</b> - <v>72503</v> + <v>76399</v> </b> </bs> </hist> @@ -15776,15 +15582,15 @@ </relation> <relation> <name>ql_module_expr_name</name> - <cardinality>4091</cardinality> + <cardinality>4773</cardinality> <columnsizes> <e> <k>ql_module_expr</k> - <v>4091</v> + <v>4773</v> </e> <e> <k>name</k> - <v>4091</v> + <v>4773</v> </e> </columnsizes> <dependencies> @@ -15798,7 +15604,7 @@ <b> <a>1</a> <b>2</b> - <v>4091</v> + <v>4773</v> </b> </bs> </hist> @@ -15814,7 +15620,7 @@ <b> <a>1</a> <b>2</b> - <v>4091</v> + <v>4773</v> </b> </bs> </hist> @@ -15824,11 +15630,11 @@ </relation> <relation> <name>ql_module_implements</name> - <cardinality>759</cardinality> + <cardinality>1251</cardinality> <columnsizes> <e> <k>ql_module</k> - <v>759</v> + <v>1251</v> </e> <e> <k>index</k> @@ -15836,7 +15642,7 @@ </e> <e> <k>implements</k> - <v>759</v> + <v>1251</v> </e> </columnsizes> <dependencies> @@ -15850,7 +15656,7 @@ <b> <a>1</a> <b>2</b> - <v>759</v> + <v>1251</v> </b> </bs> </hist> @@ -15866,7 +15672,7 @@ <b> <a>1</a> <b>2</b> - <v>759</v> + <v>1251</v> </b> </bs> </hist> @@ -15880,8 +15686,8 @@ <budget>12</budget> <bs> <b> - <a>759</a> - <b>760</b> + <a>1251</a> + <b>1252</b> <v>1</v> </b> </bs> @@ -15896,8 +15702,8 @@ <budget>12</budget> <bs> <b> - <a>759</a> - <b>760</b> + <a>1251</a> + <b>1252</b> <v>1</v> </b> </bs> @@ -15914,7 +15720,7 @@ <b> <a>1</a> <b>2</b> - <v>759</v> + <v>1251</v> </b> </bs> </hist> @@ -15930,7 +15736,7 @@ <b> <a>1</a> <b>2</b> - <v>759</v> + <v>1251</v> </b> </bs> </hist> @@ -15940,19 +15746,19 @@ </relation> <relation> <name>ql_module_instantiation_child</name> - <cardinality>1190</cardinality> + <cardinality>2192</cardinality> <columnsizes> <e> <k>ql_module_instantiation</k> - <v>1043</v> + <v>1740</v> </e> <e> <k>index</k> - <v>6</v> + <v>8</v> </e> <e> <k>child</k> - <v>1190</v> + <v>2192</v> </e> </columnsizes> <dependencies> @@ -15966,12 +15772,17 @@ <b> <a>1</a> <b>2</b> - <v>966</v> + <v>1473</v> </b> <b> <a>2</a> - <b>7</b> - <v>77</v> + <b>3</b> + <v>172</v> + </b> + <b> + <a>3</a> + <b>9</b> + <v>95</v> </b> </bs> </hist> @@ -15987,12 +15798,17 @@ <b> <a>1</a> <b>2</b> - <v>966</v> + <v>1473</v> </b> <b> <a>2</a> - <b>7</b> - <v>77</v> + <b>3</b> + <v>172</v> + </b> + <b> + <a>3</a> + <b>9</b> + <v>95</v> </b> </bs> </hist> @@ -16008,31 +15824,36 @@ <b> <a>3</a> <b>4</b> + <v>2</v> + </b> + <b> + <a>8</a> + <b>9</b> <v>1</v> </b> <b> - <a>5</a> - <b>6</b> + <a>20</a> + <b>21</b> <v>1</v> </b> <b> - <a>26</a> - <b>27</b> + <a>56</a> + <b>57</b> <v>1</v> </b> <b> - <a>36</a> - <b>37</b> + <a>95</a> + <b>96</b> <v>1</v> </b> <b> - <a>77</a> - <b>78</b> + <a>267</a> + <b>268</b> <v>1</v> </b> <b> - <a>1043</a> - <b>1044</b> + <a>1740</a> + <b>1741</b> <v>1</v> </b> </bs> @@ -16049,31 +15870,36 @@ <b> <a>3</a> <b>4</b> + <v>2</v> + </b> + <b> + <a>8</a> + <b>9</b> <v>1</v> </b> <b> - <a>5</a> - <b>6</b> + <a>20</a> + <b>21</b> <v>1</v> </b> <b> - <a>26</a> - <b>27</b> + <a>56</a> + <b>57</b> <v>1</v> </b> <b> - <a>36</a> - <b>37</b> + <a>95</a> + <b>96</b> <v>1</v> </b> <b> - <a>77</a> - <b>78</b> + <a>267</a> + <b>268</b> <v>1</v> </b> <b> - <a>1043</a> - <b>1044</b> + <a>1740</a> + <b>1741</b> <v>1</v> </b> </bs> @@ -16090,7 +15916,7 @@ <b> <a>1</a> <b>2</b> - <v>1190</v> + <v>2192</v> </b> </bs> </hist> @@ -16106,7 +15932,7 @@ <b> <a>1</a> <b>2</b> - <v>1190</v> + <v>2192</v> </b> </bs> </hist> @@ -16116,15 +15942,15 @@ </relation> <relation> <name>ql_module_instantiation_def</name> - <cardinality>1043</cardinality> + <cardinality>1740</cardinality> <columnsizes> <e> <k>id</k> - <v>1043</v> + <v>1740</v> </e> <e> <k>name</k> - <v>1043</v> + <v>1740</v> </e> </columnsizes> <dependencies> @@ -16138,7 +15964,7 @@ <b> <a>1</a> <b>2</b> - <v>1043</v> + <v>1740</v> </b> </bs> </hist> @@ -16154,7 +15980,7 @@ <b> <a>1</a> <b>2</b> - <v>1043</v> + <v>1740</v> </b> </bs> </hist> @@ -16164,19 +15990,19 @@ </relation> <relation> <name>ql_module_member_child</name> - <cardinality>155140</cardinality> + <cardinality>150156</cardinality> <columnsizes> <e> <k>ql_module_member</k> - <v>119591</v> + <v>118178</v> </e> <e> <k>index</k> - <v>5</v> + <v>6</v> </e> <e> <k>child</k> - <v>155140</v> + <v>150156</v> </e> </columnsizes> <dependencies> @@ -16190,17 +16016,17 @@ <b> <a>1</a> <b>2</b> - <v>87424</v> + <v>88793</v> </b> <b> <a>2</a> <b>3</b> - <v>28864</v> + <v>26917</v> </b> <b> <a>3</a> - <b>6</b> - <v>3303</v> + <b>7</b> + <v>2468</v> </b> </bs> </hist> @@ -16216,17 +16042,17 @@ <b> <a>1</a> <b>2</b> - <v>87424</v> + <v>88793</v> </b> <b> <a>2</a> <b>3</b> - <v>28864</v> + <v>26917</v> </b> <b> <a>3</a> - <b>6</b> - <v>3303</v> + <b>7</b> + <v>2468</v> </b> </bs> </hist> @@ -16240,28 +16066,33 @@ <budget>12</budget> <bs> <b> - <a>4</a> - <b>5</b> + <a>2</a> + <b>3</b> + <v>1</v> + </b> + <b> + <a>10</a> + <b>11</b> <v>1</v> </b> <b> - <a>75</a> - <b>76</b> + <a>113</a> + <b>114</b> <v>1</v> </b> <b> - <a>3303</a> - <b>3304</b> + <a>2468</a> + <b>2469</b> <v>1</v> </b> <b> - <a>32167</a> - <b>32168</b> + <a>29385</a> + <b>29386</b> <v>1</v> </b> <b> - <a>119591</a> - <b>119592</b> + <a>118178</a> + <b>118179</b> <v>1</v> </b> </bs> @@ -16276,28 +16107,33 @@ <budget>12</budget> <bs> <b> - <a>4</a> - <b>5</b> + <a>2</a> + <b>3</b> + <v>1</v> + </b> + <b> + <a>10</a> + <b>11</b> <v>1</v> </b> <b> - <a>75</a> - <b>76</b> + <a>113</a> + <b>114</b> <v>1</v> </b> <b> - <a>3303</a> - <b>3304</b> + <a>2468</a> + <b>2469</b> <v>1</v> </b> <b> - <a>32167</a> - <b>32168</b> + <a>29385</a> + <b>29386</b> <v>1</v> </b> <b> - <a>119591</a> - <b>119592</b> + <a>118178</a> + <b>118179</b> <v>1</v> </b> </bs> @@ -16314,7 +16150,7 @@ <b> <a>1</a> <b>2</b> - <v>155140</v> + <v>150156</v> </b> </bs> </hist> @@ -16330,7 +16166,7 @@ <b> <a>1</a> <b>2</b> - <v>155140</v> + <v>150156</v> </b> </bs> </hist> @@ -16340,26 +16176,26 @@ </relation> <relation> <name>ql_module_member_def</name> - <cardinality>119591</cardinality> + <cardinality>118178</cardinality> <columnsizes> <e> <k>id</k> - <v>119591</v> + <v>118178</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_module_name_def</name> - <cardinality>6324</cardinality> + <cardinality>7606</cardinality> <columnsizes> <e> <k>id</k> - <v>6324</v> + <v>7606</v> </e> <e> <k>child</k> - <v>6324</v> + <v>7606</v> </e> </columnsizes> <dependencies> @@ -16373,7 +16209,7 @@ <b> <a>1</a> <b>2</b> - <v>6324</v> + <v>7606</v> </b> </bs> </hist> @@ -16389,7 +16225,7 @@ <b> <a>1</a> <b>2</b> - <v>6324</v> + <v>7606</v> </b> </bs> </hist> @@ -16399,19 +16235,19 @@ </relation> <relation> <name>ql_module_param_def</name> - <cardinality>299</cardinality> + <cardinality>266</cardinality> <columnsizes> <e> <k>id</k> - <v>299</v> + <v>266</v> </e> <e> <k>parameter</k> - <v>299</v> + <v>266</v> </e> <e> <k>signature</k> - <v>299</v> + <v>266</v> </e> </columnsizes> <dependencies> @@ -16425,7 +16261,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16441,7 +16277,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16457,7 +16293,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16473,7 +16309,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16489,7 +16325,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16505,7 +16341,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16515,19 +16351,19 @@ </relation> <relation> <name>ql_module_parameter</name> - <cardinality>299</cardinality> + <cardinality>266</cardinality> <columnsizes> <e> <k>ql_module</k> - <v>214</v> + <v>185</v> </e> <e> <k>index</k> - <v>6</v> + <v>8</v> </e> <e> <k>parameter</k> - <v>299</v> + <v>266</v> </e> </columnsizes> <dependencies> @@ -16541,17 +16377,22 @@ <b> <a>1</a> <b>2</b> - <v>183</v> + <v>138</v> </b> <b> <a>2</a> - <b>4</b> - <v>14</v> + <b>3</b> + <v>30</v> </b> <b> - <a>4</a> - <b>7</b> - <v>17</v> + <a>3</a> + <b>6</b> + <v>15</v> + </b> + <b> + <a>6</a> + <b>9</b> + <v>2</v> </b> </bs> </hist> @@ -16567,17 +16408,22 @@ <b> <a>1</a> <b>2</b> - <v>183</v> + <v>138</v> </b> <b> <a>2</a> - <b>4</b> - <v>14</v> + <b>3</b> + <v>30</v> </b> <b> - <a>4</a> - <b>7</b> - <v>17</v> + <a>3</a> + <b>6</b> + <v>15</v> + </b> + <b> + <a>6</a> + <b>9</b> + <v>2</v> </b> </bs> </hist> @@ -16591,8 +16437,18 @@ <budget>12</budget> <bs> <b> - <a>8</a> - <b>9</b> + <a>1</a> + <b>2</b> + <v>2</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>1</v> + </b> + <b> + <a>4</a> + <b>5</b> <v>1</v> </b> <b> @@ -16606,18 +16462,13 @@ <v>1</v> </b> <b> - <a>20</a> - <b>21</b> - <v>1</v> - </b> - <b> - <a>31</a> - <b>32</b> + <a>47</a> + <b>48</b> <v>1</v> </b> <b> - <a>214</a> - <b>215</b> + <a>185</a> + <b>186</b> <v>1</v> </b> </bs> @@ -16632,8 +16483,18 @@ <budget>12</budget> <bs> <b> - <a>8</a> - <b>9</b> + <a>1</a> + <b>2</b> + <v>2</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>1</v> + </b> + <b> + <a>4</a> + <b>5</b> <v>1</v> </b> <b> @@ -16647,18 +16508,13 @@ <v>1</v> </b> <b> - <a>20</a> - <b>21</b> - <v>1</v> - </b> - <b> - <a>31</a> - <b>32</b> + <a>47</a> + <b>48</b> <v>1</v> </b> <b> - <a>214</a> - <b>215</b> + <a>185</a> + <b>186</b> <v>1</v> </b> </bs> @@ -16675,7 +16531,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16691,7 +16547,7 @@ <b> <a>1</a> <b>2</b> - <v>299</v> + <v>266</v> </b> </bs> </hist> @@ -16701,23 +16557,23 @@ </relation> <relation> <name>ql_mul_expr_def</name> - <cardinality>631</cardinality> + <cardinality>585</cardinality> <columnsizes> <e> <k>id</k> - <v>631</v> + <v>585</v> </e> <e> <k>left</k> - <v>631</v> + <v>585</v> </e> <e> <k>right</k> - <v>631</v> + <v>585</v> </e> <e> <k>child</k> - <v>631</v> + <v>585</v> </e> </columnsizes> <dependencies> @@ -16731,7 +16587,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16747,7 +16603,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16763,7 +16619,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16779,7 +16635,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16795,7 +16651,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16811,7 +16667,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16827,7 +16683,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16843,7 +16699,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16859,7 +16715,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16875,7 +16731,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16891,7 +16747,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16907,7 +16763,7 @@ <b> <a>1</a> <b>2</b> - <v>631</v> + <v>585</v> </b> </bs> </hist> @@ -16917,15 +16773,15 @@ </relation> <relation> <name>ql_negation_def</name> - <cardinality>12010</cardinality> + <cardinality>11727</cardinality> <columnsizes> <e> <k>id</k> - <v>12010</v> + <v>11727</v> </e> <e> <k>child</k> - <v>12010</v> + <v>11727</v> </e> </columnsizes> <dependencies> @@ -16939,7 +16795,7 @@ <b> <a>1</a> <b>2</b> - <v>12010</v> + <v>11727</v> </b> </bs> </hist> @@ -16955,7 +16811,7 @@ <b> <a>1</a> <b>2</b> - <v>12010</v> + <v>11727</v> </b> </bs> </hist> @@ -16965,11 +16821,11 @@ </relation> <relation> <name>ql_order_by_child</name> - <cardinality>1298</cardinality> + <cardinality>1272</cardinality> <columnsizes> <e> <k>ql_order_by</k> - <v>1098</v> + <v>1067</v> </e> <e> <k>index</k> @@ -16977,7 +16833,7 @@ </e> <e> <k>child</k> - <v>1298</v> + <v>1272</v> </e> </columnsizes> <dependencies> @@ -16991,12 +16847,12 @@ <b> <a>1</a> <b>2</b> - <v>898</v> + <v>862</v> </b> <b> <a>2</a> <b>3</b> - <v>200</v> + <v>205</v> </b> </bs> </hist> @@ -17012,12 +16868,12 @@ <b> <a>1</a> <b>2</b> - <v>898</v> + <v>862</v> </b> <b> <a>2</a> <b>3</b> - <v>200</v> + <v>205</v> </b> </bs> </hist> @@ -17031,13 +16887,13 @@ <budget>12</budget> <bs> <b> - <a>200</a> - <b>201</b> + <a>205</a> + <b>206</b> <v>1</v> </b> <b> - <a>1098</a> - <b>1099</b> + <a>1067</a> + <b>1068</b> <v>1</v> </b> </bs> @@ -17052,13 +16908,13 @@ <budget>12</budget> <bs> <b> - <a>200</a> - <b>201</b> + <a>205</a> + <b>206</b> <v>1</v> </b> <b> - <a>1098</a> - <b>1099</b> + <a>1067</a> + <b>1068</b> <v>1</v> </b> </bs> @@ -17075,7 +16931,7 @@ <b> <a>1</a> <b>2</b> - <v>1298</v> + <v>1272</v> </b> </bs> </hist> @@ -17091,7 +16947,7 @@ <b> <a>1</a> <b>2</b> - <v>1298</v> + <v>1272</v> </b> </bs> </hist> @@ -17101,30 +16957,30 @@ </relation> <relation> <name>ql_order_by_def</name> - <cardinality>1098</cardinality> + <cardinality>1067</cardinality> <columnsizes> <e> <k>id</k> - <v>1098</v> + <v>1067</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_order_bys_child</name> - <cardinality>1098</cardinality> + <cardinality>1067</cardinality> <columnsizes> <e> <k>ql_order_bys</k> - <v>674</v> + <v>661</v> </e> <e> <k>index</k> - <v>9</v> + <v>8</v> </e> <e> <k>child</k> - <v>1098</v> + <v>1067</v> </e> </columnsizes> <dependencies> @@ -17138,22 +16994,22 @@ <b> <a>1</a> <b>2</b> - <v>488</v> + <v>477</v> </b> <b> <a>2</a> <b>3</b> - <v>100</v> + <v>101</v> </b> <b> <a>3</a> <b>5</b> - <v>43</v> + <v>41</v> </b> <b> <a>5</a> - <b>10</b> - <v>43</v> + <b>9</b> + <v>42</v> </b> </bs> </hist> @@ -17169,22 +17025,22 @@ <b> <a>1</a> <b>2</b> - <v>488</v> + <v>477</v> </b> <b> <a>2</a> <b>3</b> - <v>100</v> + <v>101</v> </b> <b> <a>3</a> <b>5</b> - <v>43</v> + <v>41</v> </b> <b> <a>5</a> - <b>10</b> - <v>43</v> + <b>9</b> + <v>42</v> </b> </bs> </hist> @@ -17198,28 +17054,23 @@ <budget>12</budget> <bs> <b> - <a>3</a> - <b>4</b> - <v>1</v> - </b> - <b> - <a>6</a> - <b>7</b> + <a>1</a> + <b>2</b> <v>1</v> </b> <b> - <a>15</a> - <b>16</b> + <a>12</a> + <b>13</b> <v>1</v> </b> <b> - <a>22</a> - <b>23</b> + <a>21</a> + <b>22</b> <v>1</v> </b> <b> - <a>43</a> - <b>44</b> + <a>42</a> + <b>43</b> <v>1</v> </b> <b> @@ -17228,18 +17079,18 @@ <v>1</v> </b> <b> - <a>86</a> - <b>87</b> + <a>83</a> + <b>84</b> <v>1</v> </b> <b> - <a>186</a> - <b>187</b> + <a>184</a> + <b>185</b> <v>1</v> </b> <b> - <a>674</a> - <b>675</b> + <a>661</a> + <b>662</b> <v>1</v> </b> </bs> @@ -17254,28 +17105,23 @@ <budget>12</budget> <bs> <b> - <a>3</a> - <b>4</b> - <v>1</v> - </b> - <b> - <a>6</a> - <b>7</b> + <a>1</a> + <b>2</b> <v>1</v> </b> <b> - <a>15</a> - <b>16</b> + <a>12</a> + <b>13</b> <v>1</v> </b> <b> - <a>22</a> - <b>23</b> + <a>21</a> + <b>22</b> <v>1</v> </b> <b> - <a>43</a> - <b>44</b> + <a>42</a> + <b>43</b> <v>1</v> </b> <b> @@ -17284,18 +17130,18 @@ <v>1</v> </b> <b> - <a>86</a> - <b>87</b> + <a>83</a> + <b>84</b> <v>1</v> </b> <b> - <a>186</a> - <b>187</b> + <a>184</a> + <b>185</b> <v>1</v> </b> <b> - <a>674</a> - <b>675</b> + <a>661</a> + <b>662</b> <v>1</v> </b> </bs> @@ -17312,7 +17158,7 @@ <b> <a>1</a> <b>2</b> - <v>1098</v> + <v>1067</v> </b> </bs> </hist> @@ -17328,7 +17174,7 @@ <b> <a>1</a> <b>2</b> - <v>1098</v> + <v>1067</v> </b> </bs> </hist> @@ -17338,26 +17184,26 @@ </relation> <relation> <name>ql_order_bys_def</name> - <cardinality>674</cardinality> + <cardinality>661</cardinality> <columnsizes> <e> <k>id</k> - <v>674</v> + <v>661</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_par_expr_def</name> - <cardinality>6038</cardinality> + <cardinality>5799</cardinality> <columnsizes> <e> <k>id</k> - <v>6038</v> + <v>5799</v> </e> <e> <k>child</k> - <v>6038</v> + <v>5799</v> </e> </columnsizes> <dependencies> @@ -17371,7 +17217,7 @@ <b> <a>1</a> <b>2</b> - <v>6038</v> + <v>5799</v> </b> </bs> </hist> @@ -17387,7 +17233,7 @@ <b> <a>1</a> <b>2</b> - <v>6038</v> + <v>5799</v> </b> </bs> </hist> @@ -17397,15 +17243,15 @@ </relation> <relation> <name>ql_predicate_alias_body_def</name> - <cardinality>329</cardinality> + <cardinality>372</cardinality> <columnsizes> <e> <k>id</k> - <v>329</v> + <v>372</v> </e> <e> <k>child</k> - <v>329</v> + <v>372</v> </e> </columnsizes> <dependencies> @@ -17419,7 +17265,7 @@ <b> <a>1</a> <b>2</b> - <v>329</v> + <v>372</v> </b> </bs> </hist> @@ -17435,7 +17281,7 @@ <b> <a>1</a> <b>2</b> - <v>329</v> + <v>372</v> </b> </bs> </hist> @@ -17445,11 +17291,11 @@ </relation> <relation> <name>ql_predicate_expr_child</name> - <cardinality>1324</cardinality> + <cardinality>1478</cardinality> <columnsizes> <e> <k>ql_predicate_expr</k> - <v>662</v> + <v>739</v> </e> <e> <k>index</k> @@ -17457,7 +17303,7 @@ </e> <e> <k>child</k> - <v>1324</v> + <v>1478</v> </e> </columnsizes> <dependencies> @@ -17471,7 +17317,7 @@ <b> <a>2</a> <b>3</b> - <v>662</v> + <v>739</v> </b> </bs> </hist> @@ -17487,7 +17333,7 @@ <b> <a>2</a> <b>3</b> - <v>662</v> + <v>739</v> </b> </bs> </hist> @@ -17501,8 +17347,8 @@ <budget>12</budget> <bs> <b> - <a>662</a> - <b>663</b> + <a>739</a> + <b>740</b> <v>2</v> </b> </bs> @@ -17517,8 +17363,8 @@ <budget>12</budget> <bs> <b> - <a>662</a> - <b>663</b> + <a>739</a> + <b>740</b> <v>2</v> </b> </bs> @@ -17535,7 +17381,7 @@ <b> <a>1</a> <b>2</b> - <v>1324</v> + <v>1478</v> </b> </bs> </hist> @@ -17551,7 +17397,7 @@ <b> <a>1</a> <b>2</b> - <v>1324</v> + <v>1478</v> </b> </bs> </hist> @@ -17561,11 +17407,11 @@ </relation> <relation> <name>ql_predicate_expr_def</name> - <cardinality>662</cardinality> + <cardinality>739</cardinality> <columnsizes> <e> <k>id</k> - <v>662</v> + <v>739</v> </e> </columnsizes> <dependencies/> @@ -17675,19 +17521,19 @@ </relation> <relation> <name>ql_ql_child</name> - <cardinality>85246</cardinality> + <cardinality>85914</cardinality> <columnsizes> <e> <k>ql_ql</k> - <v>10779</v> + <v>11162</v> </e> <e> <k>index</k> - <v>326</v> + <v>340</v> </e> <e> <k>child</k> - <v>85246</v> + <v>85914</v> </e> </columnsizes> <dependencies> @@ -17701,47 +17547,52 @@ <b> <a>1</a> <b>2</b> - <v>134</v> + <v>96</v> </b> <b> <a>2</a> <b>3</b> - <v>2560</v> + <v>2238</v> </b> <b> <a>3</a> <b>4</b> - <v>2291</v> + <v>2551</v> </b> <b> <a>4</a> <b>5</b> - <v>1380</v> + <v>1524</v> </b> <b> <a>5</a> <b>6</b> - <v>1013</v> + <v>1041</v> </b> <b> <a>6</a> - <b>8</b> - <v>949</v> + <b>7</b> + <v>730</v> </b> <b> - <a>8</a> - <b>12</b> - <v>954</v> + <a>7</a> + <b>9</b> + <v>829</v> </b> <b> - <a>12</a> - <b>24</b> - <v>827</v> + <a>9</a> + <b>14</b> + <v>913</v> </b> <b> - <a>24</a> - <b>327</b> - <v>671</v> + <a>14</a> + <b>31</b> + <v>844</v> + </b> + <b> + <a>31</a> + <b>341</b> + <v>396</v> </b> </bs> </hist> @@ -17757,47 +17608,52 @@ <b> <a>1</a> <b>2</b> - <v>134</v> + <v>96</v> </b> <b> <a>2</a> <b>3</b> - <v>2560</v> + <v>2238</v> </b> <b> <a>3</a> <b>4</b> - <v>2291</v> + <v>2551</v> </b> <b> <a>4</a> <b>5</b> - <v>1380</v> + <v>1524</v> </b> <b> <a>5</a> <b>6</b> - <v>1013</v> + <v>1041</v> </b> <b> <a>6</a> - <b>8</b> - <v>949</v> + <b>7</b> + <v>730</v> </b> <b> - <a>8</a> - <b>12</b> - <v>954</v> + <a>7</a> + <b>9</b> + <v>829</v> </b> <b> - <a>12</a> - <b>24</b> - <v>827</v> + <a>9</a> + <b>14</b> + <v>913</v> </b> <b> - <a>24</a> - <b>327</b> - <v>671</v> + <a>14</a> + <b>31</b> + <v>844</v> + </b> + <b> + <a>31</a> + <b>341</b> + <v>396</v> </b> </bs> </hist> @@ -17813,68 +17669,63 @@ <b> <a>1</a> <b>2</b> - <v>45</v> + <v>42</v> </b> <b> <a>2</a> - <b>5</b> - <v>17</v> + <b>4</b> + <v>25</v> </b> <b> - <a>5</a> - <b>11</b> - <v>26</v> + <a>4</a> + <b>6</b> + <v>28</v> </b> <b> - <a>11</a> + <a>6</a> + <b>10</b> + <v>31</v> + </b> + <b> + <a>10</a> <b>13</b> - <v>24</v> + <v>28</v> </b> <b> <a>13</a> - <b>15</b> + <b>22</b> <v>30</v> </b> <b> - <a>15</a> - <b>23</b> + <a>22</a> + <b>29</b> <v>26</v> </b> <b> - <a>23</a> - <b>30</b> + <a>29</a> + <b>46</b> <v>27</v> </b> - <b> - <a>30</a> - <b>47</b> - <v>28</v> - </b> <b> <a>48</a> - <b>94</b> - <v>25</v> + <b>83</b> + <v>26</v> </b> <b> - <a>96</a> - <b>185</b> - <v>25</v> + <a>84</a> + <b>176</b> + <v>26</v> </b> <b> - <a>187</a> - <b>519</b> - <v>25</v> + <a>179</a> + <b>553</b> + <v>26</v> </b> <b> - <a>548</a> - <b>5795</b> + <a>584</a> + <b>11163</b> <v>25</v> </b> - <b> - <a>8085</a> - <b>10780</b> - <v>3</v> - </b> </bs> </hist> </val> @@ -17889,68 +17740,63 @@ <b> <a>1</a> <b>2</b> - <v>45</v> + <v>42</v> </b> <b> <a>2</a> - <b>5</b> - <v>17</v> + <b>4</b> + <v>25</v> </b> <b> - <a>5</a> - <b>11</b> - <v>26</v> + <a>4</a> + <b>6</b> + <v>28</v> </b> <b> - <a>11</a> + <a>6</a> + <b>10</b> + <v>31</v> + </b> + <b> + <a>10</a> <b>13</b> - <v>24</v> + <v>28</v> </b> <b> <a>13</a> - <b>15</b> + <b>22</b> <v>30</v> </b> <b> - <a>15</a> - <b>23</b> + <a>22</a> + <b>29</b> <v>26</v> </b> <b> - <a>23</a> - <b>30</b> + <a>29</a> + <b>46</b> <v>27</v> </b> - <b> - <a>30</a> - <b>47</b> - <v>28</v> - </b> <b> <a>48</a> - <b>94</b> - <v>25</v> + <b>83</b> + <v>26</v> </b> <b> - <a>96</a> - <b>185</b> - <v>25</v> + <a>84</a> + <b>176</b> + <v>26</v> </b> <b> - <a>187</a> - <b>519</b> - <v>25</v> + <a>179</a> + <b>553</b> + <v>26</v> </b> <b> - <a>548</a> - <b>5795</b> + <a>584</a> + <b>11163</b> <v>25</v> </b> - <b> - <a>8085</a> - <b>10780</b> - <v>3</v> - </b> </bs> </hist> </val> @@ -17965,7 +17811,7 @@ <b> <a>1</a> <b>2</b> - <v>85246</v> + <v>85914</v> </b> </bs> </hist> @@ -17981,7 +17827,7 @@ <b> <a>1</a> <b>2</b> - <v>85246</v> + <v>85914</v> </b> </bs> </hist> @@ -17991,22 +17837,22 @@ </relation> <relation> <name>ql_ql_def</name> - <cardinality>10785</cardinality> + <cardinality>11167</cardinality> <columnsizes> <e> <k>id</k> - <v>10785</v> + <v>11167</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_qualified_expr_child</name> - <cardinality>337022</cardinality> + <cardinality>330314</cardinality> <columnsizes> <e> <k>ql_qualified_expr</k> - <v>168511</v> + <v>165157</v> </e> <e> <k>index</k> @@ -18014,7 +17860,7 @@ </e> <e> <k>child</k> - <v>337022</v> + <v>330314</v> </e> </columnsizes> <dependencies> @@ -18028,7 +17874,7 @@ <b> <a>2</a> <b>3</b> - <v>168511</v> + <v>165157</v> </b> </bs> </hist> @@ -18044,7 +17890,7 @@ <b> <a>2</a> <b>3</b> - <v>168511</v> + <v>165157</v> </b> </bs> </hist> @@ -18058,8 +17904,8 @@ <budget>12</budget> <bs> <b> - <a>168511</a> - <b>168512</b> + <a>165157</a> + <b>165158</b> <v>2</v> </b> </bs> @@ -18074,8 +17920,8 @@ <budget>12</budget> <bs> <b> - <a>168511</a> - <b>168512</b> + <a>165157</a> + <b>165158</b> <v>2</v> </b> </bs> @@ -18092,7 +17938,7 @@ <b> <a>1</a> <b>2</b> - <v>337022</v> + <v>330314</v> </b> </bs> </hist> @@ -18108,7 +17954,7 @@ <b> <a>1</a> <b>2</b> - <v>337022</v> + <v>330314</v> </b> </bs> </hist> @@ -18118,30 +17964,30 @@ </relation> <relation> <name>ql_qualified_expr_def</name> - <cardinality>168511</cardinality> + <cardinality>165157</cardinality> <columnsizes> <e> <k>id</k> - <v>168511</v> + <v>165157</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_qualified_rhs_child</name> - <cardinality>68675</cardinality> + <cardinality>68095</cardinality> <columnsizes> <e> <k>ql_qualified_rhs</k> - <v>52287</v> + <v>52354</v> </e> <e> <k>index</k> - <v>10</v> + <v>11</v> </e> <e> <k>child</k> - <v>68675</v> + <v>68095</v> </e> </columnsizes> <dependencies> @@ -18155,17 +18001,17 @@ <b> <a>1</a> <b>2</b> - <v>41503</v> + <v>41965</v> </b> <b> <a>2</a> <b>3</b> - <v>7598</v> + <v>7314</v> </b> <b> <a>3</a> - <b>11</b> - <v>3186</v> + <b>12</b> + <v>3075</v> </b> </bs> </hist> @@ -18181,17 +18027,17 @@ <b> <a>1</a> <b>2</b> - <v>41503</v> + <v>41965</v> </b> <b> <a>2</a> <b>3</b> - <v>7598</v> + <v>7314</v> </b> <b> <a>3</a> - <b>11</b> - <v>3186</v> + <b>12</b> + <v>3075</v> </b> </bs> </hist> @@ -18205,18 +18051,18 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>8</a> + <b>9</b> <v>1</v> </b> <b> - <a>3</a> - <b>4</b> + <a>9</a> + <b>10</b> <v>1</v> </b> <b> - <a>12</a> - <b>13</b> + <a>11</a> + <b>12</b> <v>1</v> </b> <b> @@ -18225,33 +18071,38 @@ <v>1</v> </b> <b> - <a>60</a> - <b>61</b> + <a>25</a> + <b>26</b> + <v>1</v> + </b> + <b> + <a>66</a> + <b>67</b> <v>1</v> </b> <b> - <a>905</a> - <b>906</b> + <a>802</a> + <b>803</b> <v>1</v> </b> <b> - <a>1417</a> - <b>1418</b> + <a>1336</a> + <b>1337</b> <v>1</v> </b> <b> - <a>3186</a> - <b>3187</b> + <a>3075</a> + <b>3076</b> <v>1</v> </b> <b> - <a>10784</a> - <b>10785</b> + <a>10389</a> + <b>10390</b> <v>1</v> </b> <b> - <a>52287</a> - <b>52288</b> + <a>52354</a> + <b>52355</b> <v>1</v> </b> </bs> @@ -18266,18 +18117,18 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>8</a> + <b>9</b> <v>1</v> </b> <b> - <a>3</a> - <b>4</b> + <a>9</a> + <b>10</b> <v>1</v> </b> <b> - <a>12</a> - <b>13</b> + <a>11</a> + <b>12</b> <v>1</v> </b> <b> @@ -18286,33 +18137,38 @@ <v>1</v> </b> <b> - <a>60</a> - <b>61</b> + <a>25</a> + <b>26</b> + <v>1</v> + </b> + <b> + <a>66</a> + <b>67</b> <v>1</v> </b> <b> - <a>905</a> - <b>906</b> + <a>802</a> + <b>803</b> <v>1</v> </b> <b> - <a>1417</a> - <b>1418</b> + <a>1336</a> + <b>1337</b> <v>1</v> </b> <b> - <a>3186</a> - <b>3187</b> + <a>3075</a> + <b>3076</b> <v>1</v> </b> <b> - <a>10784</a> - <b>10785</b> + <a>10389</a> + <b>10390</b> <v>1</v> </b> <b> - <a>52287</a> - <b>52288</b> + <a>52354</a> + <b>52355</b> <v>1</v> </b> </bs> @@ -18329,7 +18185,7 @@ <b> <a>1</a> <b>2</b> - <v>68675</v> + <v>68095</v> </b> </bs> </hist> @@ -18345,7 +18201,7 @@ <b> <a>1</a> <b>2</b> - <v>68675</v> + <v>68095</v> </b> </bs> </hist> @@ -18355,26 +18211,26 @@ </relation> <relation> <name>ql_qualified_rhs_def</name> - <cardinality>168511</cardinality> + <cardinality>165157</cardinality> <columnsizes> <e> <k>id</k> - <v>168511</v> + <v>165157</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_qualified_rhs_name</name> - <cardinality>157179</cardinality> + <cardinality>153874</cardinality> <columnsizes> <e> <k>ql_qualified_rhs</k> - <v>157179</v> + <v>153874</v> </e> <e> <k>name</k> - <v>157179</v> + <v>153874</v> </e> </columnsizes> <dependencies> @@ -18388,7 +18244,7 @@ <b> <a>1</a> <b>2</b> - <v>157179</v> + <v>153874</v> </b> </bs> </hist> @@ -18404,7 +18260,7 @@ <b> <a>1</a> <b>2</b> - <v>157179</v> + <v>153874</v> </b> </bs> </hist> @@ -18414,11 +18270,11 @@ </relation> <relation> <name>ql_quantified_child</name> - <cardinality>57793</cardinality> + <cardinality>52811</cardinality> <columnsizes> <e> <k>ql_quantified</k> - <v>26111</v> + <v>24227</v> </e> <e> <k>index</k> @@ -18426,7 +18282,7 @@ </e> <e> <k>child</k> - <v>57793</v> + <v>52811</v> </e> </columnsizes> <dependencies> @@ -18440,27 +18296,27 @@ <b> <a>1</a> <b>2</b> - <v>4431</v> + <v>4452</v> </b> <b> <a>2</a> <b>3</b> - <v>15291</v> + <v>14178</v> </b> <b> <a>3</a> <b>4</b> - <v>4044</v> + <v>3526</v> </b> <b> <a>4</a> <b>6</b> - <v>2065</v> + <v>1823</v> </b> <b> <a>6</a> <b>23</b> - <v>280</v> + <v>248</v> </b> </bs> </hist> @@ -18476,27 +18332,27 @@ <b> <a>1</a> <b>2</b> - <v>4431</v> + <v>4452</v> </b> <b> <a>2</a> <b>3</b> - <v>15291</v> + <v>14178</v> </b> <b> <a>3</a> <b>4</b> - <v>4044</v> + <v>3526</v> </b> <b> <a>4</a> <b>6</b> - <v>2065</v> + <v>1823</v> </b> <b> <a>6</a> <b>23</b> - <v>280</v> + <v>248</v> </b> </bs> </hist> @@ -18515,33 +18371,33 @@ <v>11</v> </b> <b> - <a>4</a> - <b>12</b> + <a>3</a> + <b>9</b> <v>2</v> </b> <b> - <a>22</a> - <b>47</b> + <a>19</a> + <b>45</b> <v>2</v> </b> <b> - <a>110</a> - <b>281</b> + <a>102</a> + <b>249</b> <v>2</v> </b> <b> - <a>784</a> - <b>2346</b> + <a>706</a> + <b>2072</b> <v>2</v> </b> <b> - <a>6389</a> - <b>21681</b> + <a>5597</a> + <b>19776</b> <v>2</v> </b> <b> - <a>26111</a> - <b>26112</b> + <a>24227</a> + <b>24228</b> <v>1</v> </b> </bs> @@ -18561,33 +18417,33 @@ <v>11</v> </b> <b> - <a>4</a> - <b>12</b> + <a>3</a> + <b>9</b> <v>2</v> </b> <b> - <a>22</a> - <b>47</b> + <a>19</a> + <b>45</b> <v>2</v> </b> <b> - <a>110</a> - <b>281</b> + <a>102</a> + <b>249</b> <v>2</v> </b> <b> - <a>784</a> - <b>2346</b> + <a>706</a> + <b>2072</b> <v>2</v> </b> <b> - <a>6389</a> - <b>21681</b> + <a>5597</a> + <b>19776</b> <v>2</v> </b> <b> - <a>26111</a> - <b>26112</b> + <a>24227</a> + <b>24228</b> <v>1</v> </b> </bs> @@ -18604,7 +18460,7 @@ <b> <a>1</a> <b>2</b> - <v>57793</v> + <v>52811</v> </b> </bs> </hist> @@ -18620,7 +18476,7 @@ <b> <a>1</a> <b>2</b> - <v>57793</v> + <v>52811</v> </b> </bs> </hist> @@ -18630,26 +18486,26 @@ </relation> <relation> <name>ql_quantified_def</name> - <cardinality>26111</cardinality> + <cardinality>24227</cardinality> <columnsizes> <e> <k>id</k> - <v>26111</v> + <v>24227</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_quantified_expr</name> - <cardinality>4431</cardinality> + <cardinality>4452</cardinality> <columnsizes> <e> <k>ql_quantified</k> - <v>4431</v> + <v>4452</v> </e> <e> <k>expr</k> - <v>4431</v> + <v>4452</v> </e> </columnsizes> <dependencies> @@ -18663,7 +18519,7 @@ <b> <a>1</a> <b>2</b> - <v>4431</v> + <v>4452</v> </b> </bs> </hist> @@ -18679,7 +18535,7 @@ <b> <a>1</a> <b>2</b> - <v>4431</v> + <v>4452</v> </b> </bs> </hist> @@ -18689,15 +18545,15 @@ </relation> <relation> <name>ql_quantified_formula</name> - <cardinality>7682</cardinality> + <cardinality>7476</cardinality> <columnsizes> <e> <k>ql_quantified</k> - <v>7682</v> + <v>7476</v> </e> <e> <k>formula</k> - <v>7682</v> + <v>7476</v> </e> </columnsizes> <dependencies> @@ -18711,7 +18567,7 @@ <b> <a>1</a> <b>2</b> - <v>7682</v> + <v>7476</v> </b> </bs> </hist> @@ -18727,7 +18583,7 @@ <b> <a>1</a> <b>2</b> - <v>7682</v> + <v>7476</v> </b> </bs> </hist> @@ -18737,15 +18593,15 @@ </relation> <relation> <name>ql_quantified_range</name> - <cardinality>21641</cardinality> + <cardinality>19737</cardinality> <columnsizes> <e> <k>ql_quantified</k> - <v>21641</v> + <v>19737</v> </e> <e> <k>range</k> - <v>21641</v> + <v>19737</v> </e> </columnsizes> <dependencies> @@ -18759,7 +18615,7 @@ <b> <a>1</a> <b>2</b> - <v>21641</v> + <v>19737</v> </b> </bs> </hist> @@ -18775,7 +18631,7 @@ <b> <a>1</a> <b>2</b> - <v>21641</v> + <v>19737</v> </b> </bs> </hist> @@ -18785,19 +18641,19 @@ </relation> <relation> <name>ql_range_def</name> - <cardinality>417</cardinality> + <cardinality>365</cardinality> <columnsizes> <e> <k>id</k> - <v>417</v> + <v>365</v> </e> <e> <k>lower</k> - <v>417</v> + <v>365</v> </e> <e> <k>upper</k> - <v>417</v> + <v>365</v> </e> </columnsizes> <dependencies> @@ -18811,7 +18667,7 @@ <b> <a>1</a> <b>2</b> - <v>417</v> + <v>365</v> </b> </bs> </hist> @@ -18827,7 +18683,7 @@ <b> <a>1</a> <b>2</b> - <v>417</v> + <v>365</v> </b> </bs> </hist> @@ -18843,7 +18699,7 @@ <b> <a>1</a> <b>2</b> - <v>417</v> + <v>365</v> </b> </bs> </hist> @@ -18859,7 +18715,7 @@ <b> <a>1</a> <b>2</b> - <v>417</v> + <v>365</v> </b> </bs> </hist> @@ -18875,7 +18731,7 @@ <b> <a>1</a> <b>2</b> - <v>417</v> + <v>365</v> </b> </bs> </hist> @@ -18891,7 +18747,7 @@ <b> <a>1</a> <b>2</b> - <v>417</v> + <v>365</v> </b> </bs> </hist> @@ -18901,11 +18757,11 @@ </relation> <relation> <name>ql_select_child</name> - <cardinality>22594</cardinality> + <cardinality>23801</cardinality> <columnsizes> <e> <k>ql_select</k> - <v>5640</v> + <v>5989</v> </e> <e> <k>index</k> @@ -18913,7 +18769,7 @@ </e> <e> <k>child</k> - <v>22594</v> + <v>23801</v> </e> </columnsizes> <dependencies> @@ -18927,37 +18783,37 @@ <b> <a>1</a> <b>2</b> - <v>137</v> + <v>149</v> </b> <b> <a>2</a> <b>3</b> - <v>787</v> + <v>854</v> </b> <b> <a>3</a> <b>4</b> - <v>1249</v> + <v>1341</v> </b> <b> <a>4</a> <b>5</b> - <v>1613</v> + <v>1821</v> </b> <b> <a>5</a> <b>6</b> - <v>1087</v> + <v>1028</v> </b> <b> <a>6</a> <b>7</b> - <v>453</v> + <v>465</v> </b> <b> <a>7</a> <b>21</b> - <v>314</v> + <v>331</v> </b> </bs> </hist> @@ -18973,37 +18829,37 @@ <b> <a>1</a> <b>2</b> - <v>137</v> + <v>149</v> </b> <b> <a>2</a> <b>3</b> - <v>787</v> + <v>854</v> </b> <b> <a>3</a> <b>4</b> - <v>1249</v> + <v>1341</v> </b> <b> <a>4</a> <b>5</b> - <v>1613</v> + <v>1821</v> </b> <b> <a>5</a> <b>6</b> - <v>1087</v> + <v>1028</v> </b> <b> <a>6</a> <b>7</b> - <v>453</v> + <v>465</v> </b> <b> <a>7</a> <b>21</b> - <v>314</v> + <v>331</v> </b> </bs> </hist> @@ -19027,18 +18883,23 @@ <v>2</v> </b> <b> - <a>3</a> - <b>4</b> - <v>2</v> + <a>4</a> + <b>5</b> + <v>1</v> </b> <b> - <a>7</a> - <b>8</b> - <v>2</v> + <a>6</a> + <b>7</b> + <v>1</v> </b> <b> - <a>12</a> - <b>13</b> + <a>11</a> + <b>12</b> + <v>1</v> + </b> + <b> + <a>13</a> + <b>14</b> <v>1</v> </b> <b> @@ -19047,58 +18908,63 @@ <v>1</v> </b> <b> - <a>25</a> - <b>26</b> + <a>27</a> + <b>28</b> <v>1</v> </b> <b> - <a>37</a> - <b>38</b> + <a>29</a> + <b>30</b> + <v>1</v> + </b> + <b> + <a>44</a> + <b>45</b> <v>1</v> </b> <b> - <a>64</a> - <b>65</b> + <a>71</a> + <b>72</b> <v>1</v> </b> <b> - <a>150</a> - <b>151</b> + <a>160</a> + <b>161</b> <v>1</v> </b> <b> - <a>314</a> - <b>315</b> + <a>331</a> + <b>332</b> <v>1</v> </b> <b> - <a>767</a> - <b>768</b> + <a>796</a> + <b>797</b> <v>1</v> </b> <b> - <a>1854</a> - <b>1855</b> + <a>1824</a> + <b>1825</b> <v>1</v> </b> <b> - <a>3467</a> - <b>3468</b> + <a>3645</a> + <b>3646</b> <v>1</v> </b> <b> - <a>4716</a> - <b>4717</b> + <a>4986</a> + <b>4987</b> <v>1</v> </b> <b> - <a>5503</a> - <b>5504</b> + <a>5840</a> + <b>5841</b> <v>1</v> </b> <b> - <a>5640</a> - <b>5641</b> + <a>5989</a> + <b>5990</b> <v>1</v> </b> </bs> @@ -19123,18 +18989,23 @@ <v>2</v> </b> <b> - <a>3</a> - <b>4</b> - <v>2</v> + <a>4</a> + <b>5</b> + <v>1</v> + </b> + <b> + <a>6</a> + <b>7</b> + <v>1</v> </b> <b> - <a>7</a> - <b>8</b> - <v>2</v> + <a>11</a> + <b>12</b> + <v>1</v> </b> <b> - <a>12</a> - <b>13</b> + <a>13</a> + <b>14</b> <v>1</v> </b> <b> @@ -19143,58 +19014,63 @@ <v>1</v> </b> <b> - <a>25</a> - <b>26</b> + <a>27</a> + <b>28</b> <v>1</v> </b> <b> - <a>37</a> - <b>38</b> + <a>29</a> + <b>30</b> + <v>1</v> + </b> + <b> + <a>44</a> + <b>45</b> <v>1</v> </b> <b> - <a>64</a> - <b>65</b> + <a>71</a> + <b>72</b> <v>1</v> </b> <b> - <a>150</a> - <b>151</b> + <a>160</a> + <b>161</b> <v>1</v> </b> <b> - <a>314</a> - <b>315</b> + <a>331</a> + <b>332</b> <v>1</v> </b> <b> - <a>767</a> - <b>768</b> + <a>796</a> + <b>797</b> <v>1</v> </b> <b> - <a>1854</a> - <b>1855</b> + <a>1824</a> + <b>1825</b> <v>1</v> </b> <b> - <a>3467</a> - <b>3468</b> + <a>3645</a> + <b>3646</b> <v>1</v> </b> <b> - <a>4716</a> - <b>4717</b> + <a>4986</a> + <b>4987</b> <v>1</v> </b> <b> - <a>5503</a> - <b>5504</b> + <a>5840</a> + <b>5841</b> <v>1</v> </b> <b> - <a>5640</a> - <b>5641</b> + <a>5989</a> + <b>5990</b> <v>1</v> </b> </bs> @@ -19211,7 +19087,7 @@ <b> <a>1</a> <b>2</b> - <v>22594</v> + <v>23801</v> </b> </bs> </hist> @@ -19227,7 +19103,7 @@ <b> <a>1</a> <b>2</b> - <v>22594</v> + <v>23801</v> </b> </bs> </hist> @@ -19237,22 +19113,22 @@ </relation> <relation> <name>ql_select_def</name> - <cardinality>5640</cardinality> + <cardinality>5989</cardinality> <columnsizes> <e> <k>id</k> - <v>5640</v> + <v>5989</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_set_literal_child</name> - <cardinality>18133</cardinality> + <cardinality>20149</cardinality> <columnsizes> <e> <k>ql_set_literal</k> - <v>3557</v> + <v>4014</v> </e> <e> <k>index</k> @@ -19260,7 +19136,7 @@ </e> <e> <k>child</k> - <v>18133</v> + <v>20149</v> </e> </columnsizes> <dependencies> @@ -19274,37 +19150,37 @@ <b> <a>1</a> <b>2</b> - <v>5</v> + <v>9</v> </b> <b> <a>2</a> <b>3</b> - <v>2131</v> + <v>2354</v> </b> <b> <a>3</a> <b>4</b> - <v>426</v> + <v>506</v> </b> <b> <a>4</a> <b>5</b> - <v>309</v> + <v>351</v> </b> <b> <a>5</a> <b>7</b> - <v>258</v> + <v>291</v> </b> <b> <a>7</a> - <b>14</b> - <v>276</v> + <b>13</b> + <v>315</v> </b> <b> - <a>14</a> + <a>13</a> <b>1029</b> - <v>152</v> + <v>188</v> </b> </bs> </hist> @@ -19320,37 +19196,37 @@ <b> <a>1</a> <b>2</b> - <v>5</v> + <v>9</v> </b> <b> <a>2</a> <b>3</b> - <v>2131</v> + <v>2354</v> </b> <b> <a>3</a> <b>4</b> - <v>426</v> + <v>506</v> </b> <b> <a>4</a> <b>5</b> - <v>309</v> + <v>351</v> </b> <b> <a>5</a> <b>7</b> - <v>258</v> + <v>291</v> </b> <b> <a>7</a> - <b>14</b> - <v>276</v> + <b>13</b> + <v>315</v> </b> <b> - <a>14</a> + <a>13</a> <b>1029</b> - <v>152</v> + <v>188</v> </b> </bs> </hist> @@ -19375,23 +19251,23 @@ </b> <b> <a>3</a> - <b>6</b> - <v>94</v> + <b>5</b> + <v>63</v> </b> <b> - <a>6</a> - <b>11</b> - <v>84</v> + <a>5</a> + <b>9</b> + <v>90</v> </b> <b> - <a>11</a> - <b>31</b> - <v>79</v> + <a>9</a> + <b>19</b> + <v>83</v> </b> <b> - <a>31</a> - <b>3558</b> - <v>49</v> + <a>19</a> + <b>4015</b> + <v>70</v> </b> </bs> </hist> @@ -19416,23 +19292,23 @@ </b> <b> <a>3</a> - <b>6</b> - <v>94</v> + <b>5</b> + <v>63</v> </b> <b> - <a>6</a> - <b>11</b> - <v>84</v> + <a>5</a> + <b>9</b> + <v>90</v> </b> <b> - <a>11</a> - <b>31</b> - <v>79</v> + <a>9</a> + <b>19</b> + <v>83</v> </b> <b> - <a>31</a> - <b>3558</b> - <v>49</v> + <a>19</a> + <b>4015</b> + <v>70</v> </b> </bs> </hist> @@ -19448,7 +19324,7 @@ <b> <a>1</a> <b>2</b> - <v>18133</v> + <v>20149</v> </b> </bs> </hist> @@ -19464,7 +19340,7 @@ <b> <a>1</a> <b>2</b> - <v>18133</v> + <v>20149</v> </b> </bs> </hist> @@ -19474,37 +19350,37 @@ </relation> <relation> <name>ql_set_literal_def</name> - <cardinality>3557</cardinality> + <cardinality>4014</cardinality> <columnsizes> <e> <k>id</k> - <v>3557</v> + <v>4014</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_signature_expr_def</name> - <cardinality>2248</cardinality> + <cardinality>3709</cardinality> <columnsizes> <e> <k>id</k> - <v>2248</v> + <v>3709</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_signature_expr_mod_expr</name> - <cardinality>92</cardinality> + <cardinality>180</cardinality> <columnsizes> <e> <k>ql_signature_expr</k> - <v>92</v> + <v>180</v> </e> <e> <k>mod_expr</k> - <v>92</v> + <v>180</v> </e> </columnsizes> <dependencies> @@ -19518,7 +19394,7 @@ <b> <a>1</a> <b>2</b> - <v>92</v> + <v>180</v> </b> </bs> </hist> @@ -19534,7 +19410,7 @@ <b> <a>1</a> <b>2</b> - <v>92</v> + <v>180</v> </b> </bs> </hist> @@ -19544,15 +19420,15 @@ </relation> <relation> <name>ql_signature_expr_predicate</name> - <cardinality>149</cardinality> + <cardinality>232</cardinality> <columnsizes> <e> <k>ql_signature_expr</k> - <v>149</v> + <v>232</v> </e> <e> <k>predicate</k> - <v>149</v> + <v>232</v> </e> </columnsizes> <dependencies> @@ -19566,7 +19442,7 @@ <b> <a>1</a> <b>2</b> - <v>149</v> + <v>232</v> </b> </bs> </hist> @@ -19582,7 +19458,7 @@ <b> <a>1</a> <b>2</b> - <v>149</v> + <v>232</v> </b> </bs> </hist> @@ -19592,15 +19468,15 @@ </relation> <relation> <name>ql_signature_expr_type_expr</name> - <cardinality>2007</cardinality> + <cardinality>3297</cardinality> <columnsizes> <e> <k>ql_signature_expr</k> - <v>2007</v> + <v>3297</v> </e> <e> <k>type_expr</k> - <v>2007</v> + <v>3297</v> </e> </columnsizes> <dependencies> @@ -19614,7 +19490,7 @@ <b> <a>1</a> <b>2</b> - <v>2007</v> + <v>3297</v> </b> </bs> </hist> @@ -19630,7 +19506,7 @@ <b> <a>1</a> <b>2</b> - <v>2007</v> + <v>3297</v> </b> </bs> </hist> @@ -19640,15 +19516,15 @@ </relation> <relation> <name>ql_special_call_def</name> - <cardinality>4863</cardinality> + <cardinality>4424</cardinality> <columnsizes> <e> <k>id</k> - <v>4863</v> + <v>4424</v> </e> <e> <k>child</k> - <v>4863</v> + <v>4424</v> </e> </columnsizes> <dependencies> @@ -19662,7 +19538,7 @@ <b> <a>1</a> <b>2</b> - <v>4863</v> + <v>4424</v> </b> </bs> </hist> @@ -19678,7 +19554,7 @@ <b> <a>1</a> <b>2</b> - <v>4863</v> + <v>4424</v> </b> </bs> </hist> @@ -19688,11 +19564,11 @@ </relation> <relation> <name>ql_super_ref_child</name> - <cardinality>3070</cardinality> + <cardinality>3530</cardinality> <columnsizes> <e> <k>ql_super_ref</k> - <v>2444</v> + <v>2901</v> </e> <e> <k>index</k> @@ -19700,7 +19576,7 @@ </e> <e> <k>child</k> - <v>3070</v> + <v>3530</v> </e> </columnsizes> <dependencies> @@ -19714,12 +19590,12 @@ <b> <a>1</a> <b>2</b> - <v>1818</v> + <v>2272</v> </b> <b> <a>2</a> <b>3</b> - <v>626</v> + <v>629</v> </b> </bs> </hist> @@ -19735,12 +19611,12 @@ <b> <a>1</a> <b>2</b> - <v>1818</v> + <v>2272</v> </b> <b> <a>2</a> <b>3</b> - <v>626</v> + <v>629</v> </b> </bs> </hist> @@ -19754,13 +19630,13 @@ <budget>12</budget> <bs> <b> - <a>626</a> - <b>627</b> + <a>629</a> + <b>630</b> <v>1</v> </b> <b> - <a>2444</a> - <b>2445</b> + <a>2901</a> + <b>2902</b> <v>1</v> </b> </bs> @@ -19775,13 +19651,13 @@ <budget>12</budget> <bs> <b> - <a>626</a> - <b>627</b> + <a>629</a> + <b>630</b> <v>1</v> </b> <b> - <a>2444</a> - <b>2445</b> + <a>2901</a> + <b>2902</b> <v>1</v> </b> </bs> @@ -19798,7 +19674,7 @@ <b> <a>1</a> <b>2</b> - <v>3070</v> + <v>3530</v> </b> </bs> </hist> @@ -19814,7 +19690,7 @@ <b> <a>1</a> <b>2</b> - <v>3070</v> + <v>3530</v> </b> </bs> </hist> @@ -19824,22 +19700,22 @@ </relation> <relation> <name>ql_super_ref_def</name> - <cardinality>2444</cardinality> + <cardinality>2901</cardinality> <columnsizes> <e> <k>id</k> - <v>2444</v> + <v>2901</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_tokeninfo</name> - <cardinality>3697389</cardinality> + <cardinality>3524470</cardinality> <columnsizes> <e> <k>id</k> - <v>3697389</v> + <v>3524470</v> </e> <e> <k>kind</k> @@ -19847,7 +19723,7 @@ </e> <e> <k>value</k> - <v>145712</v> + <v>159352</v> </e> </columnsizes> <dependencies> @@ -19861,7 +19737,7 @@ <b> <a>1</a> <b>2</b> - <v>3697389</v> + <v>3524470</v> </b> </bs> </hist> @@ -19877,7 +19753,7 @@ <b> <a>1</a> <b>2</b> - <v>3697389</v> + <v>3524470</v> </b> </bs> </hist> @@ -19891,83 +19767,83 @@ <budget>12</budget> <bs> <b> - <a>200</a> - <b>297</b> + <a>205</a> + <b>306</b> <v>2</v> </b> <b> - <a>631</a> - <b>1062</b> + <a>585</a> + <b>993</b> <v>2</v> </b> <b> - <a>1171</a> - <b>2124</b> + <a>1158</a> + <b>1974</b> <v>2</v> </b> <b> - <a>2391</a> - <b>2445</b> + <a>2234</a> + <b>2302</b> <v>2</v> </b> <b> - <a>2648</a> - <b>2684</b> + <a>2344</a> + <b>2902</b> <v>2</v> </b> <b> - <a>3604</a> - <b>4864</b> + <a>3766</a> + <b>4425</b> <v>2</v> </b> <b> - <a>9694</a> - <b>14858</b> + <a>9053</a> + <b>13787</b> <v>2</v> </b> <b> - <a>20351</a> - <b>20707</b> + <a>17184</a> + <b>20889</b> <v>2</v> </b> <b> - <a>20738</a> - <b>26112</b> + <a>21612</a> + <b>24228</b> <v>2</v> </b> <b> - <a>28901</a> - <b>49385</b> + <a>26200</a> + <b>47957</b> <v>2</v> </b> <b> - <a>53091</a> - <b>55182</b> + <a>50826</a> + <b>52494</b> <v>2</v> </b> <b> - <a>56786</a> - <b>67460</b> + <a>55406</a> + <b>58185</b> <v>2</v> </b> <b> - <a>73436</a> - <b>75428</b> + <a>66480</a> + <b>83939</b> <v>2</v> </b> <b> - <a>138784</a> - <b>224656</b> + <a>140334</a> + <b>204254</b> <v>2</v> </b> <b> - <a>229368</a> - <b>542287</b> + <a>221079</a> + <b>512065</b> <v>2</v> </b> <b> - <a>1966059</a> - <b>1966060</b> + <a>1875319</a> + <b>1875320</b> <v>1</v> </b> </bs> @@ -20003,7 +19879,7 @@ </b> <b> <a>12</a> - <b>19</b> + <b>18</b> <v>2</v> </b> <b> @@ -20012,28 +19888,28 @@ <v>2</v> </b> <b> - <a>173</a> - <b>883</b> + <a>635</a> + <b>858</b> <v>2</v> </b> <b> - <a>2434</a> - <b>11721</b> + <a>2472</a> + <b>12791</b> <v>2</v> </b> <b> - <a>14851</a> - <b>14868</b> + <a>15738</a> + <b>15845</b> <v>2</v> </b> <b> - <a>18243</a> - <b>20539</b> + <a>18782</a> + <b>21406</b> <v>2</v> </b> <b> - <a>35688</a> - <b>41928</b> + <a>42941</a> + <b>44802</b> <v>2</v> </b> </bs> @@ -20050,32 +19926,32 @@ <b> <a>1</a> <b>2</b> - <v>85140</v> + <v>96196</v> </b> <b> <a>2</a> <b>3</b> - <v>21743</v> + <v>23735</v> </b> <b> <a>3</a> <b>4</b> - <v>10555</v> + <v>11475</v> </b> <b> <a>4</a> <b>7</b> - <v>13169</v> + <v>13411</v> </b> <b> <a>7</a> - <b>27</b> - <v>11024</v> + <b>41</b> + <v>12004</v> </b> <b> - <a>27</a> - <b>371333</b> - <v>4081</v> + <a>41</a> + <b>348424</b> + <v>2531</v> </b> </bs> </hist> @@ -20091,17 +19967,17 @@ <b> <a>1</a> <b>2</b> - <v>130386</v> + <v>142727</v> </b> <b> <a>2</a> <b>3</b> - <v>14775</v> + <v>16072</v> </b> <b> <a>3</a> <b>5</b> - <v>551</v> + <v>553</v> </b> </bs> </hist> @@ -20111,15 +19987,15 @@ </relation> <relation> <name>ql_type_alias_body_def</name> - <cardinality>1245</cardinality> + <cardinality>817</cardinality> <columnsizes> <e> <k>id</k> - <v>1245</v> + <v>817</v> </e> <e> <k>child</k> - <v>1245</v> + <v>817</v> </e> </columnsizes> <dependencies> @@ -20133,7 +20009,7 @@ <b> <a>1</a> <b>2</b> - <v>1245</v> + <v>817</v> </b> </bs> </hist> @@ -20149,7 +20025,7 @@ <b> <a>1</a> <b>2</b> - <v>1245</v> + <v>817</v> </b> </bs> </hist> @@ -20159,15 +20035,15 @@ </relation> <relation> <name>ql_type_expr_child</name> - <cardinality>52988</cardinality> + <cardinality>51722</cardinality> <columnsizes> <e> <k>ql_type_expr</k> - <v>52988</v> + <v>51722</v> </e> <e> <k>child</k> - <v>52988</v> + <v>51722</v> </e> </columnsizes> <dependencies> @@ -20181,7 +20057,7 @@ <b> <a>1</a> <b>2</b> - <v>52988</v> + <v>51722</v> </b> </bs> </hist> @@ -20197,7 +20073,7 @@ <b> <a>1</a> <b>2</b> - <v>52988</v> + <v>51722</v> </b> </bs> </hist> @@ -20207,26 +20083,26 @@ </relation> <relation> <name>ql_type_expr_def</name> - <cardinality>236975</cardinality> + <cardinality>218057</cardinality> <columnsizes> <e> <k>id</k> - <v>236975</v> + <v>218057</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_type_expr_name</name> - <cardinality>183987</cardinality> + <cardinality>166335</cardinality> <columnsizes> <e> <k>ql_type_expr</k> - <v>183987</v> + <v>166335</v> </e> <e> <k>name</k> - <v>183987</v> + <v>166335</v> </e> </columnsizes> <dependencies> @@ -20240,7 +20116,7 @@ <b> <a>1</a> <b>2</b> - <v>183987</v> + <v>166335</v> </b> </bs> </hist> @@ -20256,7 +20132,7 @@ <b> <a>1</a> <b>2</b> - <v>183987</v> + <v>166335</v> </b> </bs> </hist> @@ -20266,15 +20142,15 @@ </relation> <relation> <name>ql_type_expr_qualifier</name> - <cardinality>32598</cardinality> + <cardinality>34602</cardinality> <columnsizes> <e> <k>ql_type_expr</k> - <v>32598</v> + <v>34602</v> </e> <e> <k>qualifier</k> - <v>32598</v> + <v>34602</v> </e> </columnsizes> <dependencies> @@ -20288,7 +20164,7 @@ <b> <a>1</a> <b>2</b> - <v>32598</v> + <v>34602</v> </b> </bs> </hist> @@ -20304,7 +20180,7 @@ <b> <a>1</a> <b>2</b> - <v>32598</v> + <v>34602</v> </b> </bs> </hist> @@ -20314,11 +20190,11 @@ </relation> <relation> <name>ql_type_union_body_child</name> - <cardinality>1152</cardinality> + <cardinality>1174</cardinality> <columnsizes> <e> <k>ql_type_union_body</k> - <v>249</v> + <v>253</v> </e> <e> <k>index</k> @@ -20326,7 +20202,7 @@ </e> <e> <k>child</k> - <v>1152</v> + <v>1174</v> </e> </columnsizes> <dependencies> @@ -20340,7 +20216,7 @@ <b> <a>2</a> <b>3</b> - <v>117</v> + <v>121</v> </b> <b> <a>3</a> @@ -20350,12 +20226,12 @@ <b> <a>4</a> <b>5</b> - <v>35</v> + <v>32</v> </b> <b> <a>5</a> <b>6</b> - <v>14</v> + <v>17</v> </b> <b> <a>6</a> @@ -20381,7 +20257,7 @@ <b> <a>2</a> <b>3</b> - <v>117</v> + <v>121</v> </b> <b> <a>3</a> @@ -20391,12 +20267,12 @@ <b> <a>4</a> <b>5</b> - <v>35</v> + <v>32</v> </b> <b> <a>5</a> <b>6</b> - <v>14</v> + <v>17</v> </b> <b> <a>6</a> @@ -20422,32 +20298,27 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>98</v> </b> <b> <a>2</a> <b>3</b> - <v>15</v> + <v>21</v> </b> <b> <a>3</a> - <b>4</b> - <v>2</v> - </b> - <b> - <a>4</a> <b>5</b> <v>13</v> </b> <b> <a>5</a> - <b>21</b> + <b>18</b> <v>12</v> </b> <b> - <a>23</a> - <b>250</b> - <v>7</v> + <a>19</a> + <b>254</b> + <v>9</v> </b> </bs> </hist> @@ -20463,32 +20334,27 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>98</v> </b> <b> <a>2</a> <b>3</b> - <v>15</v> + <v>21</v> </b> <b> <a>3</a> - <b>4</b> - <v>2</v> - </b> - <b> - <a>4</a> <b>5</b> <v>13</v> </b> <b> <a>5</a> - <b>21</b> + <b>18</b> <v>12</v> </b> <b> - <a>23</a> - <b>250</b> - <v>7</v> + <a>19</a> + <b>254</b> + <v>9</v> </b> </bs> </hist> @@ -20504,7 +20370,7 @@ <b> <a>1</a> <b>2</b> - <v>1152</v> + <v>1174</v> </b> </bs> </hist> @@ -20520,7 +20386,7 @@ <b> <a>1</a> <b>2</b> - <v>1152</v> + <v>1174</v> </b> </bs> </hist> @@ -20530,22 +20396,22 @@ </relation> <relation> <name>ql_type_union_body_def</name> - <cardinality>249</cardinality> + <cardinality>253</cardinality> <columnsizes> <e> <k>id</k> - <v>249</v> + <v>253</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_unary_expr_child</name> - <cardinality>2342</cardinality> + <cardinality>2316</cardinality> <columnsizes> <e> <k>ql_unary_expr</k> - <v>1171</v> + <v>1158</v> </e> <e> <k>index</k> @@ -20553,7 +20419,7 @@ </e> <e> <k>child</k> - <v>2342</v> + <v>2316</v> </e> </columnsizes> <dependencies> @@ -20567,7 +20433,7 @@ <b> <a>2</a> <b>3</b> - <v>1171</v> + <v>1158</v> </b> </bs> </hist> @@ -20583,7 +20449,7 @@ <b> <a>2</a> <b>3</b> - <v>1171</v> + <v>1158</v> </b> </bs> </hist> @@ -20597,8 +20463,8 @@ <budget>12</budget> <bs> <b> - <a>1171</a> - <b>1172</b> + <a>1158</a> + <b>1159</b> <v>2</v> </b> </bs> @@ -20613,8 +20479,8 @@ <budget>12</budget> <bs> <b> - <a>1171</a> - <b>1172</b> + <a>1158</a> + <b>1159</b> <v>2</v> </b> </bs> @@ -20631,7 +20497,7 @@ <b> <a>1</a> <b>2</b> - <v>2342</v> + <v>2316</v> </b> </bs> </hist> @@ -20647,7 +20513,7 @@ <b> <a>1</a> <b>2</b> - <v>2342</v> + <v>2316</v> </b> </bs> </hist> @@ -20657,11 +20523,11 @@ </relation> <relation> <name>ql_unary_expr_def</name> - <cardinality>1171</cardinality> + <cardinality>1158</cardinality> <columnsizes> <e> <k>id</k> - <v>1171</v> + <v>1158</v> </e> </columnsizes> <dependencies/> @@ -20911,11 +20777,11 @@ </relation> <relation> <name>ql_var_decl_child</name> - <cardinality>258882</cardinality> + <cardinality>228274</cardinality> <columnsizes> <e> <k>ql_var_decl</k> - <v>129441</v> + <v>114137</v> </e> <e> <k>index</k> @@ -20923,7 +20789,7 @@ </e> <e> <k>child</k> - <v>258882</v> + <v>228274</v> </e> </columnsizes> <dependencies> @@ -20937,7 +20803,7 @@ <b> <a>2</a> <b>3</b> - <v>129441</v> + <v>114137</v> </b> </bs> </hist> @@ -20953,7 +20819,7 @@ <b> <a>2</a> <b>3</b> - <v>129441</v> + <v>114137</v> </b> </bs> </hist> @@ -20967,8 +20833,8 @@ <budget>12</budget> <bs> <b> - <a>129441</a> - <b>129442</b> + <a>114137</a> + <b>114138</b> <v>2</v> </b> </bs> @@ -20983,8 +20849,8 @@ <budget>12</budget> <bs> <b> - <a>129441</a> - <b>129442</b> + <a>114137</a> + <b>114138</b> <v>2</v> </b> </bs> @@ -21001,7 +20867,7 @@ <b> <a>1</a> <b>2</b> - <v>258882</v> + <v>228274</v> </b> </bs> </hist> @@ -21017,7 +20883,7 @@ <b> <a>1</a> <b>2</b> - <v>258882</v> + <v>228274</v> </b> </bs> </hist> @@ -21027,26 +20893,26 @@ </relation> <relation> <name>ql_var_decl_def</name> - <cardinality>129441</cardinality> + <cardinality>114137</cardinality> <columnsizes> <e> <k>id</k> - <v>129441</v> + <v>114137</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>ql_var_name_def</name> - <cardinality>415356</cardinality> + <cardinality>380908</cardinality> <columnsizes> <e> <k>id</k> - <v>415356</v> + <v>380908</v> </e> <e> <k>child</k> - <v>415356</v> + <v>380908</v> </e> </columnsizes> <dependencies> @@ -21060,7 +20926,7 @@ <b> <a>1</a> <b>2</b> - <v>415356</v> + <v>380908</v> </b> </bs> </hist> @@ -21076,7 +20942,7 @@ <b> <a>1</a> <b>2</b> - <v>415356</v> + <v>380908</v> </b> </bs> </hist> @@ -21086,15 +20952,15 @@ </relation> <relation> <name>ql_variable_def</name> - <cardinality>393587</cardinality> + <cardinality>369462</cardinality> <columnsizes> <e> <k>id</k> - <v>393587</v> + <v>369462</v> </e> <e> <k>child</k> - <v>393587</v> + <v>369462</v> </e> </columnsizes> <dependencies> @@ -21108,7 +20974,7 @@ <b> <a>1</a> <b>2</b> - <v>393587</v> + <v>369462</v> </b> </bs> </hist> @@ -21124,7 +20990,7 @@ <b> <a>1</a> <b>2</b> - <v>393587</v> + <v>369462</v> </b> </bs> </hist> @@ -21145,11 +21011,11 @@ </relation> <relation> <name>yaml</name> - <cardinality>1348</cardinality> + <cardinality>1726</cardinality> <columnsizes> <e> <k>id</k> - <v>1348</v> + <v>1726</v> </e> <e> <k>kind</k> @@ -21157,7 +21023,7 @@ </e> <e> <k>parent</k> - <v>304</v> + <v>350</v> </e> <e> <k>idx</k> @@ -21169,7 +21035,7 @@ </e> <e> <k>tostring</k> - <v>236</v> + <v>263</v> </e> </columnsizes> <dependencies> @@ -21183,7 +21049,7 @@ <b> <a>1</a> <b>2</b> - <v>1348</v> + <v>1726</v> </b> </bs> </hist> @@ -21199,7 +21065,7 @@ <b> <a>1</a> <b>2</b> - <v>1348</v> + <v>1726</v> </b> </bs> </hist> @@ -21215,7 +21081,7 @@ <b> <a>1</a> <b>2</b> - <v>1348</v> + <v>1726</v> </b> </bs> </hist> @@ -21231,7 +21097,7 @@ <b> <a>1</a> <b>2</b> - <v>1348</v> + <v>1726</v> </b> </bs> </hist> @@ -21247,7 +21113,7 @@ <b> <a>1</a> <b>2</b> - <v>1348</v> + <v>1726</v> </b> </bs> </hist> @@ -21261,18 +21127,18 @@ <budget>12</budget> <bs> <b> - <a>52</a> - <b>53</b> + <a>59</a> + <b>60</b> <v>1</v> </b> <b> - <a>160</a> - <b>161</b> + <a>186</a> + <b>187</b> <v>1</v> </b> <b> - <a>1136</a> - <b>1137</b> + <a>1481</a> + <b>1482</b> <v>1</v> </b> </bs> @@ -21287,18 +21153,18 @@ <budget>12</budget> <bs> <b> - <a>49</a> - <b>50</b> + <a>56</a> + <b>57</b> <v>1</v> </b> <b> - <a>160</a> - <b>161</b> + <a>186</a> + <b>187</b> <v>1</v> </b> <b> - <a>212</a> - <b>213</b> + <a>245</a> + <b>246</b> <v>1</v> </b> </bs> @@ -21360,18 +21226,18 @@ <budget>12</budget> <bs> <b> - <a>32</a> - <b>33</b> + <a>33</a> + <b>34</b> <v>1</v> </b> <b> - <a>59</a> - <b>60</b> + <a>68</a> + <b>69</b> <v>1</v> </b> <b> - <a>145</a> - <b>146</b> + <a>162</a> + <b>163</b> <v>1</v> </b> </bs> @@ -21388,37 +21254,47 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>118</v> </b> <b> <a>2</a> <b>3</b> - <v>68</v> + <v>71</v> </b> <b> <a>3</a> + <b>4</b> + <v>8</v> + </b> + <b> + <a>4</a> <b>5</b> - <v>25</v> + <v>26</v> </b> <b> <a>6</a> <b>7</b> - <v>47</v> + <v>26</v> </b> <b> <a>8</a> <b>9</b> - <v>18</v> + <v>30</v> </b> <b> <a>10</a> - <b>15</b> - <v>25</v> + <b>11</b> + <v>16</v> </b> <b> - <a>16</a> + <a>12</a> + <b>13</b> + <v>30</v> + </b> + <b> + <a>14</a> <b>21</b> - <v>17</v> + <v>25</v> </b> </bs> </hist> @@ -21434,17 +21310,17 @@ <b> <a>1</a> <b>2</b> - <v>230</v> + <v>262</v> </b> <b> <a>2</a> <b>3</b> - <v>31</v> + <v>39</v> </b> <b> <a>3</a> <b>4</b> - <v>43</v> + <v>49</v> </b> </bs> </hist> @@ -21460,37 +21336,47 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>118</v> </b> <b> <a>2</a> <b>3</b> - <v>68</v> + <v>71</v> </b> <b> <a>3</a> + <b>4</b> + <v>8</v> + </b> + <b> + <a>4</a> <b>5</b> - <v>25</v> + <v>26</v> </b> <b> <a>6</a> <b>7</b> - <v>47</v> + <v>26</v> </b> <b> <a>8</a> <b>9</b> - <v>18</v> + <v>30</v> </b> <b> <a>10</a> - <b>15</b> - <v>25</v> + <b>11</b> + <v>16</v> </b> <b> - <a>16</a> + <a>12</a> + <b>13</b> + <v>30</v> + </b> + <b> + <a>14</a> <b>21</b> - <v>17</v> + <v>25</v> </b> </bs> </hist> @@ -21506,22 +21392,22 @@ <b> <a>1</a> <b>2</b> - <v>215</v> + <v>245</v> </b> <b> <a>2</a> <b>3</b> - <v>40</v> + <v>15</v> </b> <b> <a>3</a> <b>4</b> - <v>24</v> + <v>41</v> </b> <b> <a>4</a> <b>5</b> - <v>25</v> + <v>49</v> </b> </bs> </hist> @@ -21537,47 +21423,47 @@ <b> <a>1</a> <b>2</b> - <v>104</v> + <v>118</v> </b> <b> <a>2</a> <b>3</b> - <v>68</v> + <v>71</v> </b> <b> <a>3</a> <b>4</b> - <v>19</v> + <v>22</v> </b> <b> <a>4</a> <b>5</b> - <v>29</v> + <v>35</v> </b> <b> <a>5</a> - <b>6</b> - <v>5</v> + <b>8</b> + <v>10</v> </b> <b> - <a>6</a> - <b>7</b> - <v>25</v> + <a>8</a> + <b>9</b> + <v>29</v> </b> <b> - <a>8</a> - <b>11</b> - <v>23</v> + <a>9</a> + <b>12</b> + <v>27</v> </b> <b> - <a>11</a> + <a>12</a> <b>17</b> - <v>23</v> + <v>29</v> </b> <b> <a>17</a> <b>19</b> - <v>8</v> + <v>9</v> </b> </bs> </hist> @@ -21595,64 +21481,64 @@ <b>7</b> <v>2</v> </b> - <b> - <a>10</a> - <b>11</b> + <b> + <a>11</a> + <b>12</b> <v>2</v> </b> <b> - <a>17</a> - <b>18</b> + <a>19</a> + <b>20</b> <v>2</v> </b> <b> - <a>20</a> - <b>21</b> + <a>25</a> + <b>26</b> <v>2</v> </b> <b> - <a>31</a> - <b>32</b> + <a>55</a> + <b>56</b> <v>2</v> </b> <b> - <a>42</a> - <b>43</b> + <a>71</a> + <b>72</b> <v>2</v> </b> <b> - <a>60</a> - <b>61</b> + <a>101</a> + <b>102</b> <v>2</v> </b> <b> - <a>107</a> - <b>108</b> + <a>127</a> + <b>128</b> <v>2</v> </b> <b> - <a>126</a> - <b>127</b> + <a>153</a> + <b>154</b> <v>1</v> </b> <b> - <a>132</a> - <b>133</b> + <a>161</a> + <b>162</b> <v>1</v> </b> <b> - <a>144</a> - <b>145</b> + <a>164</a> + <b>165</b> <v>1</v> </b> <b> - <a>160</a> - <b>161</b> + <a>186</a> + <b>187</b> <v>1</v> </b> <b> - <a>200</a> - <b>201</b> + <a>232</a> + <b>233</b> <v>1</v> </b> </bs> @@ -21698,63 +21584,63 @@ <v>2</v> </b> <b> - <a>10</a> - <b>11</b> + <a>11</a> + <b>12</b> <v>2</v> </b> <b> - <a>17</a> - <b>18</b> + <a>19</a> + <b>20</b> <v>2</v> </b> <b> - <a>20</a> - <b>21</b> + <a>25</a> + <b>26</b> <v>2</v> </b> <b> - <a>31</a> - <b>32</b> + <a>55</a> + <b>56</b> <v>2</v> </b> <b> - <a>42</a> - <b>43</b> + <a>71</a> + <b>72</b> <v>2</v> </b> <b> - <a>60</a> - <b>61</b> + <a>101</a> + <b>102</b> <v>2</v> </b> <b> - <a>107</a> - <b>108</b> + <a>127</a> + <b>128</b> <v>2</v> </b> <b> - <a>126</a> - <b>127</b> + <a>153</a> + <b>154</b> <v>1</v> </b> <b> - <a>132</a> - <b>133</b> + <a>161</a> + <b>162</b> <v>1</v> </b> <b> - <a>144</a> - <b>145</b> + <a>164</a> + <b>165</b> <v>1</v> </b> <b> - <a>160</a> - <b>161</b> + <a>186</a> + <b>187</b> <v>1</v> </b> <b> - <a>200</a> - <b>201</b> + <a>232</a> + <b>233</b> <v>1</v> </b> </bs> @@ -21778,15 +21664,10 @@ <b>3</b> <v>3</v> </b> - <b> - <a>3</a> - <b>4</b> - <v>2</v> - </b> <b> <a>4</a> <b>5</b> - <v>4</v> + <v>6</v> </b> <b> <a>5</a> @@ -21814,20 +21695,10 @@ <b>3</b> <v>1</v> </b> - <b> - <a>3</a> - <b>4</b> - <v>2</v> - </b> <b> <a>4</a> <b>5</b> - <v>1</v> - </b> - <b> - <a>6</a> - <b>7</b> - <v>1</v> + <v>3</v> </b> <b> <a>7</a> @@ -21835,8 +21706,8 @@ <v>1</v> </b> <b> - <a>8</a> - <b>9</b> + <a>9</a> + <b>10</b> <v>2</v> </b> <b> @@ -21845,18 +21716,18 @@ <v>1</v> </b> <b> - <a>12</a> - <b>13</b> + <a>14</a> + <b>15</b> <v>1</v> </b> <b> - <a>17</a> - <b>18</b> + <a>16</a> + <b>17</b> <v>1</v> </b> <b> - <a>19</a> - <b>20</b> + <a>20</a> + <b>21</b> <v>1</v> </b> <b> @@ -21865,8 +21736,13 @@ <v>2</v> </b> <b> - <a>28</a> - <b>29</b> + <a>27</a> + <b>28</b> + <v>1</v> + </b> + <b> + <a>29</a> + <b>30</b> <v>1</v> </b> <b> @@ -21875,18 +21751,18 @@ <v>1</v> </b> <b> - <a>49</a> - <b>50</b> + <a>59</a> + <b>60</b> <v>1</v> </b> <b> - <a>71</a> - <b>72</b> + <a>80</a> + <b>81</b> <v>1</v> </b> <b> - <a>72</a> - <b>73</b> + <a>81</a> + <b>82</b> <v>1</v> </b> </bs> @@ -21906,23 +21782,23 @@ <v>1</v> </b> <b> - <a>52</a> - <b>53</b> + <a>59</a> + <b>60</b> <v>1</v> </b> <b> - <a>59</a> - <b>60</b> + <a>137</a> + <b>138</b> <v>1</v> </b> <b> - <a>160</a> - <b>161</b> + <a>186</a> + <b>187</b> <v>1</v> </b> <b> - <a>1075</a> - <b>1076</b> + <a>1342</a> + <b>1343</b> <v>1</v> </b> </bs> @@ -21958,23 +21834,23 @@ <v>1</v> </b> <b> - <a>44</a> - <b>45</b> + <a>56</a> + <b>57</b> <v>1</v> </b> <b> - <a>49</a> - <b>50</b> + <a>105</a> + <b>106</b> <v>1</v> </b> <b> - <a>160</a> - <b>161</b> + <a>186</a> + <b>187</b> <v>1</v> </b> <b> - <a>212</a> - <b>213</b> + <a>245</a> + <b>246</b> <v>1</v> </b> </bs> @@ -21996,16 +21872,16 @@ <b> <a>8</a> <b>9</b> - <v>2</v> + <v>1</v> </b> <b> <a>9</a> <b>10</b> - <v>1</v> + <v>2</v> </b> <b> - <a>18</a> - <b>19</b> + <a>19</a> + <b>20</b> <v>1</v> </b> </bs> @@ -22030,18 +21906,18 @@ <v>1</v> </b> <b> - <a>32</a> - <b>33</b> + <a>33</a> + <b>34</b> <v>1</v> </b> <b> - <a>59</a> - <b>60</b> + <a>68</a> + <b>69</b> <v>1</v> </b> <b> - <a>142</a> - <b>143</b> + <a>159</a> + <b>160</b> <v>1</v> </b> </bs> @@ -22058,37 +21934,37 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>141</v> </b> <b> <a>2</a> <b>3</b> - <v>29</v> + <v>28</v> </b> <b> <a>3</a> - <b>5</b> - <v>21</v> + <b>4</b> + <v>16</v> </b> <b> - <a>5</a> - <b>8</b> - <v>15</v> + <a>4</a> + <b>7</b> + <v>22</v> </b> <b> - <a>8</a> + <a>7</a> <b>10</b> - <v>15</v> + <v>18</v> </b> <b> <a>10</a> <b>17</b> - <v>20</v> + <v>21</v> </b> <b> <a>18</a> - <b>104</b> - <v>13</v> + <b>145</b> + <v>17</v> </b> </bs> </hist> @@ -22104,7 +21980,7 @@ <b> <a>1</a> <b>2</b> - <v>236</v> + <v>263</v> </b> </bs> </hist> @@ -22120,37 +21996,37 @@ <b> <a>1</a> <b>2</b> - <v>123</v> + <v>142</v> </b> <b> <a>2</a> <b>3</b> - <v>29</v> + <v>27</v> </b> <b> <a>3</a> - <b>5</b> - <v>21</v> + <b>4</b> + <v>16</v> </b> <b> - <a>5</a> - <b>8</b> - <v>19</v> + <a>4</a> + <b>7</b> + <v>22</v> </b> <b> - <a>8</a> - <b>11</b> + <a>7</a> + <b>10</b> <v>21</v> </b> <b> - <a>11</a> - <b>45</b> - <v>18</v> + <a>10</a> + <b>19</b> + <v>21</v> </b> <b> - <a>49</a> - <b>84</b> - <v>5</v> + <a>19</a> + <b>106</b> + <v>14</v> </b> </bs> </hist> @@ -22166,7 +22042,7 @@ <b> <a>1</a> <b>2</b> - <v>159</v> + <v>179</v> </b> <b> <a>2</a> @@ -22176,7 +22052,7 @@ <b> <a>3</a> <b>4</b> - <v>20</v> + <v>24</v> </b> <b> <a>4</a> @@ -22185,8 +22061,8 @@ </b> <b> <a>8</a> - <b>9</b> - <v>2</v> + <b>10</b> + <v>5</v> </b> </bs> </hist> @@ -22202,7 +22078,7 @@ <b> <a>1</a> <b>2</b> - <v>236</v> + <v>263</v> </b> </bs> </hist> @@ -22338,15 +22214,15 @@ </relation> <relation> <name>yaml_locations</name> - <cardinality>1348</cardinality> + <cardinality>1726</cardinality> <columnsizes> <e> <k>locatable</k> - <v>1348</v> + <v>1726</v> </e> <e> <k>location</k> - <v>1348</v> + <v>1726</v> </e> </columnsizes> <dependencies> @@ -22360,7 +22236,7 @@ <b> <a>1</a> <b>2</b> - <v>1348</v> + <v>1726</v> </b> </bs> </hist> @@ -22376,7 +22252,7 @@ <b> <a>1</a> <b>2</b> - <v>1348</v> + <v>1726</v> </b> </bs> </hist> @@ -22386,11 +22262,11 @@ </relation> <relation> <name>yaml_scalars</name> - <cardinality>1136</cardinality> + <cardinality>1481</cardinality> <columnsizes> <e> <k>scalar</k> - <v>1136</v> + <v>1481</v> </e> <e> <k>style</k> @@ -22398,7 +22274,7 @@ </e> <e> <k>value</k> - <v>176</v> + <v>195</v> </e> </columnsizes> <dependencies> @@ -22412,7 +22288,7 @@ <b> <a>1</a> <b>2</b> - <v>1136</v> + <v>1481</v> </b> </bs> </hist> @@ -22428,7 +22304,7 @@ <b> <a>1</a> <b>2</b> - <v>1136</v> + <v>1481</v> </b> </bs> </hist> @@ -22442,18 +22318,18 @@ <budget>12</budget> <bs> <b> - <a>3</a> - <b>4</b> + <a>5</a> + <b>6</b> <v>1</v> </b> <b> - <a>40</a> - <b>41</b> + <a>41</a> + <b>42</b> <v>1</v> </b> <b> - <a>1093</a> - <b>1094</b> + <a>1435</a> + <b>1436</b> <v>1</v> </b> </bs> @@ -22473,13 +22349,13 @@ <v>1</v> </b> <b> - <a>2</a> - <b>3</b> + <a>3</a> + <b>4</b> <v>1</v> </b> <b> - <a>173</a> - <b>174</b> + <a>192</a> + <b>193</b> <v>1</v> </b> </bs> @@ -22496,37 +22372,42 @@ <b> <a>1</a> <b>2</b> - <v>89</v> + <v>101</v> </b> <b> <a>2</a> <b>3</b> - <v>17</v> + <v>16</v> </b> <b> <a>3</a> <b>4</b> - <v>13</v> + <v>17</v> </b> <b> <a>4</a> - <b>7</b> - <v>15</v> + <b>8</b> + <v>17</v> </b> <b> - <a>7</a> + <a>8</a> <b>10</b> - <v>14</v> + <v>12</v> </b> <b> <a>10</a> - <b>17</b> - <v>16</v> + <b>15</b> + <v>15</v> </b> <b> - <a>18</a> - <b>104</b> - <v>12</v> + <a>15</a> + <b>106</b> + <v>15</v> + </b> + <b> + <a>136</a> + <b>145</b> + <v>2</v> </b> </bs> </hist> @@ -22542,7 +22423,12 @@ <b> <a>1</a> <b>2</b> - <v>176</v> + <v>194</v> + </b> + <b> + <a>2</a> + <b>3</b> + <v>1</v> </b> </bs> </hist> From ccfbd2956c698fb2bc6617b204f088e7b969c1fa Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 13 Mar 2024 20:58:14 +0100 Subject: [PATCH 358/731] Copy existing `XML.qll` into new a new `codeql/xml` pack --- shared/xml/codeql/xml/Xml.qll | 307 ++++++++++++++++++++++++++++++++++ shared/xml/qlpack.yml | 7 + 2 files changed, 314 insertions(+) create mode 100644 shared/xml/codeql/xml/Xml.qll create mode 100644 shared/xml/qlpack.yml diff --git a/shared/xml/codeql/xml/Xml.qll b/shared/xml/codeql/xml/Xml.qll new file mode 100644 index 000000000000..65bdd7b7cc16 --- /dev/null +++ b/shared/xml/codeql/xml/Xml.qll @@ -0,0 +1,307 @@ +/** + * Provides classes and predicates for working with XML files and their content. + */ + +import semmle.files.FileSystem + +private class TXmlLocatable = + @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; + +/** An XML element that has a location. */ +class XmlLocatable extends @xmllocatable, TXmlLocatable { + /** Gets the source location for this element. */ + Location getLocation() { xmllocations(this, result) } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(File f, Location l | l = this.getLocation() | + locations_default(l, f, startline, startcolumn, endline, endcolumn) and + filepath = f.getAbsolutePath() + ) + } + + /** Gets a textual representation of this element. */ + string toString() { none() } // overridden in subclasses +} + +/** + * An `XmlParent` is either an `XmlElement` or an `XmlFile`, + * both of which can contain other elements. + */ +class XmlParent extends @xmlparent { + XmlParent() { + // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; + // the type `@xmlparent` currently also includes non-XML files + this instanceof @xmlelement or xmlEncoding(this, _) + } + + /** + * Gets a printable representation of this XML parent. + * (Intended to be overridden in subclasses.) + */ + string getName() { none() } // overridden in subclasses + + /** Gets the file to which this XML parent belongs. */ + XmlFile getFile() { result = this or xmlElements(this, _, _, _, result) } + + /** Gets the child element at a specified index of this XML parent. */ + XmlElement getChild(int index) { xmlElements(result, _, this, index, _) } + + /** Gets a child element of this XML parent. */ + XmlElement getAChild() { xmlElements(result, _, this, _, _) } + + /** Gets a child element of this XML parent with the given `name`. */ + XmlElement getAChild(string name) { xmlElements(result, _, this, _, _) and result.hasName(name) } + + /** Gets a comment that is a child of this XML parent. */ + XmlComment getAComment() { xmlComments(result, _, this, _) } + + /** Gets a character sequence that is a child of this XML parent. */ + XmlCharacters getACharactersSet() { xmlChars(result, _, this, _, _, _) } + + /** Gets the depth in the tree. (Overridden in XmlElement.) */ + int getDepth() { result = 0 } + + /** Gets the number of child XML elements of this XML parent. */ + int getNumberOfChildren() { result = count(XmlElement e | xmlElements(e, _, this, _, _)) } + + /** Gets the number of places in the body of this XML parent where text occurs. */ + int getNumberOfCharacterSets() { result = count(int pos | xmlChars(_, _, this, pos, _, _)) } + + /** + * Gets the result of appending all the character sequences of this XML parent from + * left to right, separated by a space. + */ + string allCharactersString() { + result = + concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos) + } + + /** Gets the text value contained in this XML parent. */ + string getTextValue() { result = this.allCharactersString() } + + /** Gets a printable representation of this XML parent. */ + string toString() { result = this.getName() } +} + +/** An XML file. */ +class XmlFile extends XmlParent, File { + XmlFile() { xmlEncoding(this, _) } + + /** Gets a printable representation of this XML file. */ + override string toString() { result = this.getName() } + + /** Gets the name of this XML file. */ + override string getName() { result = File.super.getAbsolutePath() } + + /** Gets the encoding of this XML file. */ + string getEncoding() { xmlEncoding(this, result) } + + /** Gets the XML file itself. */ + override XmlFile getFile() { result = this } + + /** Gets a top-most element in an XML file. */ + XmlElement getARootElement() { result = this.getAChild() } + + /** Gets a DTD associated with this XML file. */ + XmlDtd getADtd() { xmlDTDs(result, _, _, _, this) } +} + +/** + * An XML document type definition (DTD). + * + * Example: + * + * ``` + * <!ELEMENT person (firstName, lastName?)> + * <!ELEMENT firstName (#PCDATA)> + * <!ELEMENT lastName (#PCDATA)> + * ``` + */ +class XmlDtd extends XmlLocatable, @xmldtd { + /** Gets the name of the root element of this DTD. */ + string getRoot() { xmlDTDs(this, result, _, _, _) } + + /** Gets the public ID of this DTD. */ + string getPublicId() { xmlDTDs(this, _, result, _, _) } + + /** Gets the system ID of this DTD. */ + string getSystemId() { xmlDTDs(this, _, _, result, _) } + + /** Holds if this DTD is public. */ + predicate isPublic() { not xmlDTDs(this, _, "", _, _) } + + /** Gets the parent of this DTD. */ + XmlParent getParent() { xmlDTDs(this, _, _, _, result) } + + override string toString() { + this.isPublic() and + result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" + or + not this.isPublic() and + result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" + } +} + +/** + * An XML element in an XML file. + * + * Example: + * + * ``` + * <manifest xmlns:android="http://schemas.android.com/apk/res/android" + * package="com.example.exampleapp" android:versionCode="1"> + * </manifest> + * ``` + */ +class XmlElement extends @xmlelement, XmlParent, XmlLocatable { + /** Holds if this XML element has the given `name`. */ + predicate hasName(string name) { name = this.getName() } + + /** Gets the name of this XML element. */ + override string getName() { xmlElements(this, result, _, _, _) } + + /** Gets the XML file in which this XML element occurs. */ + override XmlFile getFile() { xmlElements(this, _, _, _, result) } + + /** Gets the parent of this XML element. */ + XmlParent getParent() { xmlElements(this, _, result, _, _) } + + /** Gets the index of this XML element among its parent's children. */ + int getIndex() { xmlElements(this, _, _, result, _) } + + /** Holds if this XML element has a namespace. */ + predicate hasNamespace() { xmlHasNs(this, _, _) } + + /** Gets the namespace of this XML element, if any. */ + XmlNamespace getNamespace() { xmlHasNs(this, result, _) } + + /** Gets the index of this XML element among its parent's children. */ + int getElementPositionIndex() { xmlElements(this, _, _, result, _) } + + /** Gets the depth of this element within the XML file tree structure. */ + override int getDepth() { result = this.getParent().getDepth() + 1 } + + /** Gets an XML attribute of this XML element. */ + XmlAttribute getAnAttribute() { result.getElement() = this } + + /** Gets the attribute with the specified `name`, if any. */ + XmlAttribute getAttribute(string name) { result.getElement() = this and result.getName() = name } + + /** Holds if this XML element has an attribute with the specified `name`. */ + predicate hasAttribute(string name) { exists(this.getAttribute(name)) } + + /** Gets the value of the attribute with the specified `name`, if any. */ + string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } + + /** Gets a printable representation of this XML element. */ + override string toString() { result = this.getName() } +} + +/** + * An attribute that occurs inside an XML element. + * + * Examples: + * + * ``` + * package="com.example.exampleapp" + * android:versionCode="1" + * ``` + */ +class XmlAttribute extends @xmlattribute, XmlLocatable { + /** Gets the name of this attribute. */ + string getName() { xmlAttrs(this, _, result, _, _, _) } + + /** Gets the XML element to which this attribute belongs. */ + XmlElement getElement() { xmlAttrs(this, result, _, _, _, _) } + + /** Holds if this attribute has a namespace. */ + predicate hasNamespace() { xmlHasNs(this, _, _) } + + /** Gets the namespace of this attribute, if any. */ + XmlNamespace getNamespace() { xmlHasNs(this, result, _) } + + /** Gets the value of this attribute. */ + string getValue() { xmlAttrs(this, _, _, result, _, _) } + + /** Gets a printable representation of this XML attribute. */ + override string toString() { result = this.getName() + "=" + this.getValue() } +} + +/** + * A namespace used in an XML file. + * + * Example: + * + * ``` + * xmlns:android="http://schemas.android.com/apk/res/android" + * ``` + */ +class XmlNamespace extends XmlLocatable, @xmlnamespace { + /** Gets the prefix of this namespace. */ + string getPrefix() { xmlNs(this, result, _, _) } + + /** Gets the URI of this namespace. */ + string getUri() { xmlNs(this, _, result, _) } + + /** Holds if this namespace has no prefix. */ + predicate isDefault() { this.getPrefix() = "" } + + override string toString() { + this.isDefault() and result = this.getUri() + or + not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + } +} + +/** + * A comment in an XML file. + * + * Example: + * + * ``` + * <!-- This is a comment. --> + * ``` + */ +class XmlComment extends @xmlcomment, XmlLocatable { + /** Gets the text content of this XML comment. */ + string getText() { xmlComments(this, result, _, _) } + + /** Gets the parent of this XML comment. */ + XmlParent getParent() { xmlComments(this, _, result, _) } + + /** Gets a printable representation of this XML comment. */ + override string toString() { result = this.getText() } +} + +/** + * A sequence of characters that occurs between opening and + * closing tags of an XML element, excluding other elements. + * + * Example: + * + * ``` + * <content>This is a sequence of characters.</content> + * ``` + */ +class XmlCharacters extends @xmlcharacters, XmlLocatable { + /** Gets the content of this character sequence. */ + string getCharacters() { xmlChars(this, result, _, _, _, _) } + + /** Gets the parent of this character sequence. */ + XmlParent getParent() { xmlChars(this, _, result, _, _, _) } + + /** Holds if this character sequence is CDATA. */ + predicate isCDATA() { xmlChars(this, _, _, _, 1, _) } + + /** Gets a printable representation of this XML character sequence. */ + override string toString() { result = this.getCharacters() } +} diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml new file mode 100644 index 000000000000..d37cec01d2fb --- /dev/null +++ b/shared/xml/qlpack.yml @@ -0,0 +1,7 @@ +name: codeql/xml +version: 0.0.1-dev +groups: shared +library: true +dependencies: + codeql/util: ${workspace} +warnOnImplicitThis: true From 7055cd823948679007f47ba11c64b6621ccb1593 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 14 Mar 2024 09:57:34 +0100 Subject: [PATCH 359/731] Make `XML.qll` a parameterized module --- shared/xml/codeql/xml/Xml.qll | 560 ++++++++++++++++++++-------------- 1 file changed, 327 insertions(+), 233 deletions(-) diff --git a/shared/xml/codeql/xml/Xml.qll b/shared/xml/codeql/xml/Xml.qll index 65bdd7b7cc16..02d0ffc66fda 100644 --- a/shared/xml/codeql/xml/Xml.qll +++ b/shared/xml/codeql/xml/Xml.qll @@ -2,306 +2,400 @@ * Provides classes and predicates for working with XML files and their content. */ -import semmle.files.FileSystem +private import codeql.util.Location +private import codeql.util.FileSystem -private class TXmlLocatable = - @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; +/** Provides the input specification of the XML implementation. */ +signature module InputSig<FileSig File, LocationSig Location> { + class XmlLocatableBase; -/** An XML element that has a location. */ -class XmlLocatable extends @xmllocatable, TXmlLocatable { - /** Gets the source location for this element. */ - Location getLocation() { xmllocations(this, result) } + predicate xmllocations_(XmlLocatableBase e, Location loc); - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(File f, Location l | l = this.getLocation() | - locations_default(l, f, startline, startcolumn, endline, endcolumn) and - filepath = f.getAbsolutePath() - ) - } + class XmlParentBase; + + class XmlNamespaceableBase instanceof XmlLocatableBase; + + class XmlElementBase instanceof XmlParentBase, XmlNamespaceableBase; + + class XmlFileBase extends File instanceof XmlParentBase; + + predicate xmlEncoding_(XmlFileBase f, string enc); + + class XmlDtdBase instanceof XmlLocatableBase; + + predicate xmlDTDs_(XmlDtdBase e, string root, string publicId, string systemId, XmlFileBase file); + + predicate xmlElements_( + XmlElementBase e, string name, XmlParentBase parent, int idx, XmlFileBase file + ); + + class XmlAttributeBase instanceof XmlNamespaceableBase; + + predicate xmlAttrs_( + XmlAttributeBase e, XmlElementBase elementid, string name, string value, int idx, + XmlFileBase file + ); + + class XmlNamespaceBase instanceof XmlLocatableBase; + + predicate xmlNs_(XmlNamespaceBase e, string prefixName, string uri, XmlFileBase file); + + predicate xmlHasNs_(XmlNamespaceableBase e, XmlNamespaceBase ns, XmlFileBase file); + + class XmlCommentBase instanceof XmlLocatableBase; + + predicate xmlComments_(XmlCommentBase e, string text, XmlParentBase parent, XmlFileBase file); - /** Gets a textual representation of this element. */ - string toString() { none() } // overridden in subclasses + class XmlCharactersBase instanceof XmlLocatableBase; + + predicate xmlChars_( + XmlCharactersBase e, string text, XmlParentBase parent, int idx, int isCDATA, XmlFileBase file + ); } -/** - * An `XmlParent` is either an `XmlElement` or an `XmlFile`, - * both of which can contain other elements. - */ -class XmlParent extends @xmlparent { - XmlParent() { - // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; - // the type `@xmlparent` currently also includes non-XML files - this instanceof @xmlelement or xmlEncoding(this, _) +/** Provides a class hierarchy for working with XML files. */ +module Make<FileSig File, LocationSig Location, InputSig<File, Location> Input> { + private import Input + + final private class XmlLocatableBaseFinal = XmlLocatableBase; + + /** An XML element that has a location. */ + abstract private class XmlLocatableImpl extends XmlLocatableBaseFinal { + /** Gets the location of this element. */ + Location getLocation() { xmllocations_(this, result) } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + /** Gets a textual representation of this element. */ + abstract string toString(); } + final class XmlLocatable = XmlLocatableImpl; + + final private class XmlParentBaseFinal = XmlParentBase; + + final private class XmlElementBaseFinal = XmlElementBase; + /** - * Gets a printable representation of this XML parent. - * (Intended to be overridden in subclasses.) + * An `XmlParent` is either an `XmlElement` or an `XmlFile`, + * both of which can contain other elements. */ - string getName() { none() } // overridden in subclasses + abstract private class XmlParentImpl extends XmlParentBaseFinal { + XmlParentImpl() { + // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; + // the type `@xmlparent` currently also includes non-XML files + this instanceof XmlElementBaseFinal or xmlEncoding_(this, _) + } + + /** Gets a printable representation of this XML parent. */ + abstract string getName(); + + /** Gets the file to which this XML parent belongs. */ + XmlFile getFile() { result = this or xmlElements_(this, _, _, _, result) } + + /** Gets the child element at a specified index of this XML parent. */ + XmlElement getChild(int index) { xmlElements_(result, _, this, index, _) } + + /** Gets a child element of this XML parent. */ + XmlElement getAChild() { xmlElements_(result, _, this, _, _) } + + /** Gets a child element of this XML parent with the given `name`. */ + XmlElement getAChild(string name) { + xmlElements_(result, _, this, _, _) and result.hasName(name) + } + + /** Gets a comment that is a child of this XML parent. */ + XmlComment getAComment() { xmlComments_(result, _, this, _) } + + /** Gets a character sequence that is a child of this XML parent. */ + XmlCharacters getACharactersSet() { xmlChars_(result, _, this, _, _, _) } + + /** Gets the depth in the tree. (Overridden in XmlElement.) */ + int getDepth() { result = 0 } + + /** Gets the number of child XML elements of this XML parent. */ + int getNumberOfChildren() { result = count(XmlElement e | xmlElements_(e, _, this, _, _)) } + + /** Gets the number of places in the body of this XML parent where text occurs. */ + int getNumberOfCharacterSets() { result = count(int pos | xmlChars_(_, _, this, pos, _, _)) } + + /** + * Gets the result of appending all the character sequences of this XML parent from + * left to right, separated by a space. + */ + string allCharactersString() { + result = + concat(string chars, int pos | + xmlChars_(_, chars, this, pos, _, _) + | + chars, " " order by pos + ) + } + + /** Gets the text value contained in this XML parent. */ + string getTextValue() { result = this.allCharactersString() } + + /** Gets a printable representation of this XML parent. */ + string toString() { result = this.getName() } + } + + final class XmlParent = XmlParentImpl; - /** Gets the file to which this XML parent belongs. */ - XmlFile getFile() { result = this or xmlElements(this, _, _, _, result) } + final private class XmlFileBaseFinal = XmlFileBase; - /** Gets the child element at a specified index of this XML parent. */ - XmlElement getChild(int index) { xmlElements(result, _, this, index, _) } + // needed for the `toString` override in `XmlFileImpl` + private class XmlFileBaseMid extends XmlFileBaseFinal { + /** Gets a printable representation of this XML file. */ + string toString() { none() } + } + + /** An XML file. */ + private class XmlFileImpl extends XmlParentImpl, XmlFileBaseMid { + XmlFileImpl() { xmlEncoding_(this, _) } - /** Gets a child element of this XML parent. */ - XmlElement getAChild() { xmlElements(result, _, this, _, _) } + override string toString() { result = this.getName() } - /** Gets a child element of this XML parent with the given `name`. */ - XmlElement getAChild(string name) { xmlElements(result, _, this, _, _) and result.hasName(name) } + /** Gets the name of this XML file. */ + override string getName() { result = super.getAbsolutePath() } - /** Gets a comment that is a child of this XML parent. */ - XmlComment getAComment() { xmlComments(result, _, this, _) } + /** Gets the encoding of this XML file. */ + string getEncoding() { xmlEncoding_(this, result) } - /** Gets a character sequence that is a child of this XML parent. */ - XmlCharacters getACharactersSet() { xmlChars(result, _, this, _, _, _) } + /** Gets the XML file itself. */ + override XmlFile getFile() { result = this } - /** Gets the depth in the tree. (Overridden in XmlElement.) */ - int getDepth() { result = 0 } + /** Gets a top-most element in an XML file. */ + XmlElement getARootElement() { result = this.getAChild() } + + /** Gets a DTD associated with this XML file. */ + XmlDtd getADtd() { xmlDTDs_(result, _, _, _, this) } + } - /** Gets the number of child XML elements of this XML parent. */ - int getNumberOfChildren() { result = count(XmlElement e | xmlElements(e, _, this, _, _)) } + final class XmlFile = XmlFileImpl; - /** Gets the number of places in the body of this XML parent where text occurs. */ - int getNumberOfCharacterSets() { result = count(int pos | xmlChars(_, _, this, pos, _, _)) } + final private class XmlDtdBaseFinal = XmlDtdBase; /** - * Gets the result of appending all the character sequences of this XML parent from - * left to right, separated by a space. + * An XML document type definition (DTD). + * + * Example: + * + * ``` + * <!ELEMENT person (firstName, lastName?)> + * <!ELEMENT firstName (#PCDATA)> + * <!ELEMENT lastName (#PCDATA)> + * ``` */ - string allCharactersString() { - result = - concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos) - } + private class XmlDtdImpl extends XmlLocatableImpl, XmlDtdBaseFinal { + /** Gets the name of the root element of this DTD. */ + string getRoot() { xmlDTDs_(this, result, _, _, _) } - /** Gets the text value contained in this XML parent. */ - string getTextValue() { result = this.allCharactersString() } + /** Gets the public ID of this DTD. */ + string getPublicId() { xmlDTDs_(this, _, result, _, _) } - /** Gets a printable representation of this XML parent. */ - string toString() { result = this.getName() } -} + /** Gets the system ID of this DTD. */ + string getSystemId() { xmlDTDs_(this, _, _, result, _) } -/** An XML file. */ -class XmlFile extends XmlParent, File { - XmlFile() { xmlEncoding(this, _) } + /** Holds if this DTD is public. */ + predicate isPublic() { not xmlDTDs_(this, _, "", _, _) } - /** Gets a printable representation of this XML file. */ - override string toString() { result = this.getName() } + /** Gets the parent of this DTD. */ + XmlParent getParent() { xmlDTDs_(this, _, _, _, result) } - /** Gets the name of this XML file. */ - override string getName() { result = File.super.getAbsolutePath() } + override string toString() { + this.isPublic() and + result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" + or + not this.isPublic() and + result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" + } + } - /** Gets the encoding of this XML file. */ - string getEncoding() { xmlEncoding(this, result) } + final class XmlDtd = XmlDtdImpl; - /** Gets the XML file itself. */ - override XmlFile getFile() { result = this } + /** + * An XML element in an XML file. + * + * Example: + * + * ``` + * <manifest xmlns:android="http://schemas.android.com/apk/res/android" + * package="com.example.exampleapp" android:versionCode="1"> + * </manifest> + * ``` + */ + private class XmlElementImpl extends XmlElementBaseFinal, XmlParentImpl, XmlLocatableImpl { + /** Holds if this XML element has the given `name`. */ + predicate hasName(string name) { name = this.getName() } - /** Gets a top-most element in an XML file. */ - XmlElement getARootElement() { result = this.getAChild() } + /** Gets the name of this XML element. */ + override string getName() { xmlElements_(this, result, _, _, _) } - /** Gets a DTD associated with this XML file. */ - XmlDtd getADtd() { xmlDTDs(result, _, _, _, this) } -} + /** Gets the XML file in which this XML element occurs. */ + override XmlFile getFile() { xmlElements_(this, _, _, _, result) } -/** - * An XML document type definition (DTD). - * - * Example: - * - * ``` - * <!ELEMENT person (firstName, lastName?)> - * <!ELEMENT firstName (#PCDATA)> - * <!ELEMENT lastName (#PCDATA)> - * ``` - */ -class XmlDtd extends XmlLocatable, @xmldtd { - /** Gets the name of the root element of this DTD. */ - string getRoot() { xmlDTDs(this, result, _, _, _) } + /** Gets the parent of this XML element. */ + XmlParent getParent() { xmlElements_(this, _, result, _, _) } - /** Gets the public ID of this DTD. */ - string getPublicId() { xmlDTDs(this, _, result, _, _) } + /** Gets the index of this XML element among its parent's children. */ + int getIndex() { xmlElements_(this, _, _, result, _) } - /** Gets the system ID of this DTD. */ - string getSystemId() { xmlDTDs(this, _, _, result, _) } + /** Holds if this XML element has a namespace. */ + predicate hasNamespace() { xmlHasNs_(this, _, _) } - /** Holds if this DTD is public. */ - predicate isPublic() { not xmlDTDs(this, _, "", _, _) } + /** Gets the namespace of this XML element, if any. */ + XmlNamespace getNamespace() { xmlHasNs_(this, result, _) } - /** Gets the parent of this DTD. */ - XmlParent getParent() { xmlDTDs(this, _, _, _, result) } + /** Gets the index of this XML element among its parent's children. */ + int getElementPositionIndex() { xmlElements_(this, _, _, result, _) } - override string toString() { - this.isPublic() and - result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" - or - not this.isPublic() and - result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" - } -} + /** Gets the depth of this element within the XML file tree structure. */ + override int getDepth() { result = this.getParent().getDepth() + 1 } -/** - * An XML element in an XML file. - * - * Example: - * - * ``` - * <manifest xmlns:android="http://schemas.android.com/apk/res/android" - * package="com.example.exampleapp" android:versionCode="1"> - * </manifest> - * ``` - */ -class XmlElement extends @xmlelement, XmlParent, XmlLocatable { - /** Holds if this XML element has the given `name`. */ - predicate hasName(string name) { name = this.getName() } + /** Gets an XML attribute of this XML element. */ + XmlAttribute getAnAttribute() { result.getElement() = this } - /** Gets the name of this XML element. */ - override string getName() { xmlElements(this, result, _, _, _) } + /** Gets the attribute with the specified `name`, if any. */ + XmlAttribute getAttribute(string name) { + result.getElement() = this and result.getName() = name + } - /** Gets the XML file in which this XML element occurs. */ - override XmlFile getFile() { xmlElements(this, _, _, _, result) } + /** Holds if this XML element has an attribute with the specified `name`. */ + predicate hasAttribute(string name) { exists(this.getAttribute(name)) } - /** Gets the parent of this XML element. */ - XmlParent getParent() { xmlElements(this, _, result, _, _) } + /** Gets the value of the attribute with the specified `name`, if any. */ + string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } - /** Gets the index of this XML element among its parent's children. */ - int getIndex() { xmlElements(this, _, _, result, _) } + /** Gets a printable representation of this XML element. */ + override string toString() { result = this.getName() } + } - /** Holds if this XML element has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } + final class XmlElement = XmlElementImpl; - /** Gets the namespace of this XML element, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } + final private class XmlAttributeBaseFinal = XmlAttributeBase; - /** Gets the index of this XML element among its parent's children. */ - int getElementPositionIndex() { xmlElements(this, _, _, result, _) } + /** + * An attribute that occurs inside an XML element. + * + * Examples: + * + * ``` + * package="com.example.exampleapp" + * android:versionCode="1" + * ``` + */ + private class XmlAttributeImpl extends XmlAttributeBaseFinal, XmlLocatableImpl { + /** Gets the name of this attribute. */ + string getName() { xmlAttrs_(this, _, result, _, _, _) } - /** Gets the depth of this element within the XML file tree structure. */ - override int getDepth() { result = this.getParent().getDepth() + 1 } + /** Gets the XML element to which this attribute belongs. */ + XmlElement getElement() { xmlAttrs_(this, result, _, _, _, _) } - /** Gets an XML attribute of this XML element. */ - XmlAttribute getAnAttribute() { result.getElement() = this } + /** Holds if this attribute has a namespace. */ + predicate hasNamespace() { xmlHasNs_(this, _, _) } - /** Gets the attribute with the specified `name`, if any. */ - XmlAttribute getAttribute(string name) { result.getElement() = this and result.getName() = name } + /** Gets the namespace of this attribute, if any. */ + XmlNamespace getNamespace() { xmlHasNs_(this, result, _) } - /** Holds if this XML element has an attribute with the specified `name`. */ - predicate hasAttribute(string name) { exists(this.getAttribute(name)) } + /** Gets the value of this attribute. */ + string getValue() { xmlAttrs_(this, _, _, result, _, _) } - /** Gets the value of the attribute with the specified `name`, if any. */ - string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } + /** Gets a printable representation of this XML attribute. */ + override string toString() { result = this.getName() + "=" + this.getValue() } + } - /** Gets a printable representation of this XML element. */ - override string toString() { result = this.getName() } -} + final class XmlAttribute = XmlAttributeImpl; -/** - * An attribute that occurs inside an XML element. - * - * Examples: - * - * ``` - * package="com.example.exampleapp" - * android:versionCode="1" - * ``` - */ -class XmlAttribute extends @xmlattribute, XmlLocatable { - /** Gets the name of this attribute. */ - string getName() { xmlAttrs(this, _, result, _, _, _) } + final private class XmlNamespaceBaseFinal = XmlNamespaceBase; - /** Gets the XML element to which this attribute belongs. */ - XmlElement getElement() { xmlAttrs(this, result, _, _, _, _) } + /** + * A namespace used in an XML file. + * + * Example: + * + * ``` + * xmlns:android="http://schemas.android.com/apk/res/android" + * ``` + */ + private class XmlNamespaceImpl extends XmlLocatableImpl, XmlNamespaceBaseFinal { + /** Gets the prefix of this namespace. */ + string getPrefix() { xmlNs_(this, result, _, _) } - /** Holds if this attribute has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } + /** Gets the URI of this namespace. */ + string getUri() { xmlNs_(this, _, result, _) } - /** Gets the namespace of this attribute, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } + /** Holds if this namespace has no prefix. */ + predicate isDefault() { this.getPrefix() = "" } - /** Gets the value of this attribute. */ - string getValue() { xmlAttrs(this, _, _, result, _, _) } + override string toString() { + this.isDefault() and result = this.getUri() + or + not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + } + } - /** Gets a printable representation of this XML attribute. */ - override string toString() { result = this.getName() + "=" + this.getValue() } -} + final class XmlNamespace = XmlNamespaceImpl; -/** - * A namespace used in an XML file. - * - * Example: - * - * ``` - * xmlns:android="http://schemas.android.com/apk/res/android" - * ``` - */ -class XmlNamespace extends XmlLocatable, @xmlnamespace { - /** Gets the prefix of this namespace. */ - string getPrefix() { xmlNs(this, result, _, _) } + final private class XmlCommentBaseFinal = XmlCommentBase; - /** Gets the URI of this namespace. */ - string getUri() { xmlNs(this, _, result, _) } + /** + * A comment in an XML file. + * + * Example: + * + * ``` + * <!-- This is a comment. --> + * ``` + */ + private class XmlCommentImpl extends XmlCommentBaseFinal, XmlLocatableImpl { + /** Gets the text content of this XML comment. */ + string getText() { xmlComments_(this, result, _, _) } - /** Holds if this namespace has no prefix. */ - predicate isDefault() { this.getPrefix() = "" } + /** Gets the parent of this XML comment. */ + XmlParent getParent() { xmlComments_(this, _, result, _) } - override string toString() { - this.isDefault() and result = this.getUri() - or - not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + /** Gets a printable representation of this XML comment. */ + override string toString() { result = this.getText() } } -} -/** - * A comment in an XML file. - * - * Example: - * - * ``` - * <!-- This is a comment. --> - * ``` - */ -class XmlComment extends @xmlcomment, XmlLocatable { - /** Gets the text content of this XML comment. */ - string getText() { xmlComments(this, result, _, _) } + final class XmlComment = XmlCommentImpl; - /** Gets the parent of this XML comment. */ - XmlParent getParent() { xmlComments(this, _, result, _) } + final private class XmlCharactersBaseFinal = XmlCharactersBase; - /** Gets a printable representation of this XML comment. */ - override string toString() { result = this.getText() } -} + /** + * A sequence of characters that occurs between opening and + * closing tags of an XML element, excluding other elements. + * + * Example: + * + * ``` + * <content>This is a sequence of characters.</content> + * ``` + */ + private class XmlCharactersImpl extends XmlCharactersBaseFinal, XmlLocatableImpl { + /** Gets the content of this character sequence. */ + string getCharacters() { xmlChars_(this, result, _, _, _, _) } -/** - * A sequence of characters that occurs between opening and - * closing tags of an XML element, excluding other elements. - * - * Example: - * - * ``` - * <content>This is a sequence of characters.</content> - * ``` - */ -class XmlCharacters extends @xmlcharacters, XmlLocatable { - /** Gets the content of this character sequence. */ - string getCharacters() { xmlChars(this, result, _, _, _, _) } + /** Gets the parent of this character sequence. */ + XmlParent getParent() { xmlChars_(this, _, result, _, _, _) } - /** Gets the parent of this character sequence. */ - XmlParent getParent() { xmlChars(this, _, result, _, _, _) } + /** Holds if this character sequence is CDATA. */ + predicate isCDATA() { xmlChars_(this, _, _, _, 1, _) } - /** Holds if this character sequence is CDATA. */ - predicate isCDATA() { xmlChars(this, _, _, _, 1, _) } + /** Gets a printable representation of this XML character sequence. */ + override string toString() { result = this.getCharacters() } + } - /** Gets a printable representation of this XML character sequence. */ - override string toString() { result = this.getCharacters() } + final class XmlCharacters = XmlCharactersImpl; } From 529e901fb1c56b79bd288094b45427b8ddfb6c92 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 14 Mar 2024 09:34:26 +0100 Subject: [PATCH 360/731] C#: Switch to shared `XML.qll` implementation --- config/identical-files.json | 1 - csharp/ql/lib/qlpack.yml | 1 + csharp/ql/lib/semmle/code/csharp/XML.qll | 318 +++-------------------- 3 files changed, 41 insertions(+), 279 deletions(-) diff --git a/config/identical-files.json b/config/identical-files.json index 017fdd11481d..f4eb97229d22 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -253,7 +253,6 @@ ], "XML": [ "cpp/ql/lib/semmle/code/cpp/XML.qll", - "csharp/ql/lib/semmle/code/csharp/XML.qll", "java/ql/lib/semmle/code/xml/XML.qll", "python/ql/lib/semmle/python/xml/XML.qll" ], diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index d75ea3c63207..eedcf055e85f 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -13,6 +13,7 @@ dependencies: codeql/threat-models: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} + codeql/xml: ${workspace} dataExtensions: - ext/*.model.yml - ext/generated/*.model.yml diff --git a/csharp/ql/lib/semmle/code/csharp/XML.qll b/csharp/ql/lib/semmle/code/csharp/XML.qll index 65bdd7b7cc16..54157809260b 100644 --- a/csharp/ql/lib/semmle/code/csharp/XML.qll +++ b/csharp/ql/lib/semmle/code/csharp/XML.qll @@ -3,305 +3,67 @@ */ import semmle.files.FileSystem +private import codeql.xml.Xml -private class TXmlLocatable = - @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; +private module Input implements InputSig<File, Location> { + class XmlLocatableBase = @xmllocatable or @xmlnamespaceable; -/** An XML element that has a location. */ -class XmlLocatable extends @xmllocatable, TXmlLocatable { - /** Gets the source location for this element. */ - Location getLocation() { xmllocations(this, result) } + predicate xmllocations_(XmlLocatableBase e, Location loc) { xmllocations(e, loc) } - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(File f, Location l | l = this.getLocation() | - locations_default(l, f, startline, startcolumn, endline, endcolumn) and - filepath = f.getAbsolutePath() - ) - } - - /** Gets a textual representation of this element. */ - string toString() { none() } // overridden in subclasses -} - -/** - * An `XmlParent` is either an `XmlElement` or an `XmlFile`, - * both of which can contain other elements. - */ -class XmlParent extends @xmlparent { - XmlParent() { - // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; - // the type `@xmlparent` currently also includes non-XML files - this instanceof @xmlelement or xmlEncoding(this, _) - } - - /** - * Gets a printable representation of this XML parent. - * (Intended to be overridden in subclasses.) - */ - string getName() { none() } // overridden in subclasses - - /** Gets the file to which this XML parent belongs. */ - XmlFile getFile() { result = this or xmlElements(this, _, _, _, result) } + class XmlParentBase = @xmlparent; - /** Gets the child element at a specified index of this XML parent. */ - XmlElement getChild(int index) { xmlElements(result, _, this, index, _) } + class XmlNamespaceableBase = @xmlnamespaceable; - /** Gets a child element of this XML parent. */ - XmlElement getAChild() { xmlElements(result, _, this, _, _) } + class XmlElementBase = @xmlelement; - /** Gets a child element of this XML parent with the given `name`. */ - XmlElement getAChild(string name) { xmlElements(result, _, this, _, _) and result.hasName(name) } + class XmlFileBase = File; - /** Gets a comment that is a child of this XML parent. */ - XmlComment getAComment() { xmlComments(result, _, this, _) } + predicate xmlEncoding_(XmlFileBase f, string enc) { xmlEncoding(f, enc) } - /** Gets a character sequence that is a child of this XML parent. */ - XmlCharacters getACharactersSet() { xmlChars(result, _, this, _, _, _) } + class XmlDtdBase = @xmldtd; - /** Gets the depth in the tree. (Overridden in XmlElement.) */ - int getDepth() { result = 0 } - - /** Gets the number of child XML elements of this XML parent. */ - int getNumberOfChildren() { result = count(XmlElement e | xmlElements(e, _, this, _, _)) } - - /** Gets the number of places in the body of this XML parent where text occurs. */ - int getNumberOfCharacterSets() { result = count(int pos | xmlChars(_, _, this, pos, _, _)) } - - /** - * Gets the result of appending all the character sequences of this XML parent from - * left to right, separated by a space. - */ - string allCharactersString() { - result = - concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos) + predicate xmlDTDs_(XmlDtdBase e, string root, string publicId, string systemId, XmlFileBase file) { + xmlDTDs(e, root, publicId, systemId, file) } - /** Gets the text value contained in this XML parent. */ - string getTextValue() { result = this.allCharactersString() } - - /** Gets a printable representation of this XML parent. */ - string toString() { result = this.getName() } -} - -/** An XML file. */ -class XmlFile extends XmlParent, File { - XmlFile() { xmlEncoding(this, _) } - - /** Gets a printable representation of this XML file. */ - override string toString() { result = this.getName() } - - /** Gets the name of this XML file. */ - override string getName() { result = File.super.getAbsolutePath() } - - /** Gets the encoding of this XML file. */ - string getEncoding() { xmlEncoding(this, result) } - - /** Gets the XML file itself. */ - override XmlFile getFile() { result = this } - - /** Gets a top-most element in an XML file. */ - XmlElement getARootElement() { result = this.getAChild() } - - /** Gets a DTD associated with this XML file. */ - XmlDtd getADtd() { xmlDTDs(result, _, _, _, this) } -} - -/** - * An XML document type definition (DTD). - * - * Example: - * - * ``` - * <!ELEMENT person (firstName, lastName?)> - * <!ELEMENT firstName (#PCDATA)> - * <!ELEMENT lastName (#PCDATA)> - * ``` - */ -class XmlDtd extends XmlLocatable, @xmldtd { - /** Gets the name of the root element of this DTD. */ - string getRoot() { xmlDTDs(this, result, _, _, _) } - - /** Gets the public ID of this DTD. */ - string getPublicId() { xmlDTDs(this, _, result, _, _) } - - /** Gets the system ID of this DTD. */ - string getSystemId() { xmlDTDs(this, _, _, result, _) } - - /** Holds if this DTD is public. */ - predicate isPublic() { not xmlDTDs(this, _, "", _, _) } - - /** Gets the parent of this DTD. */ - XmlParent getParent() { xmlDTDs(this, _, _, _, result) } - - override string toString() { - this.isPublic() and - result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" - or - not this.isPublic() and - result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" + predicate xmlElements_( + XmlElementBase e, string name, XmlParentBase parent, int idx, XmlFileBase file + ) { + xmlElements(e, name, parent, idx, file) } -} - -/** - * An XML element in an XML file. - * - * Example: - * - * ``` - * <manifest xmlns:android="http://schemas.android.com/apk/res/android" - * package="com.example.exampleapp" android:versionCode="1"> - * </manifest> - * ``` - */ -class XmlElement extends @xmlelement, XmlParent, XmlLocatable { - /** Holds if this XML element has the given `name`. */ - predicate hasName(string name) { name = this.getName() } - - /** Gets the name of this XML element. */ - override string getName() { xmlElements(this, result, _, _, _) } - /** Gets the XML file in which this XML element occurs. */ - override XmlFile getFile() { xmlElements(this, _, _, _, result) } + class XmlAttributeBase = @xmlattribute; - /** Gets the parent of this XML element. */ - XmlParent getParent() { xmlElements(this, _, result, _, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getIndex() { xmlElements(this, _, _, result, _) } - - /** Holds if this XML element has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this XML element, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getElementPositionIndex() { xmlElements(this, _, _, result, _) } - - /** Gets the depth of this element within the XML file tree structure. */ - override int getDepth() { result = this.getParent().getDepth() + 1 } - - /** Gets an XML attribute of this XML element. */ - XmlAttribute getAnAttribute() { result.getElement() = this } - - /** Gets the attribute with the specified `name`, if any. */ - XmlAttribute getAttribute(string name) { result.getElement() = this and result.getName() = name } - - /** Holds if this XML element has an attribute with the specified `name`. */ - predicate hasAttribute(string name) { exists(this.getAttribute(name)) } - - /** Gets the value of the attribute with the specified `name`, if any. */ - string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } - - /** Gets a printable representation of this XML element. */ - override string toString() { result = this.getName() } -} - -/** - * An attribute that occurs inside an XML element. - * - * Examples: - * - * ``` - * package="com.example.exampleapp" - * android:versionCode="1" - * ``` - */ -class XmlAttribute extends @xmlattribute, XmlLocatable { - /** Gets the name of this attribute. */ - string getName() { xmlAttrs(this, _, result, _, _, _) } - - /** Gets the XML element to which this attribute belongs. */ - XmlElement getElement() { xmlAttrs(this, result, _, _, _, _) } - - /** Holds if this attribute has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this attribute, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the value of this attribute. */ - string getValue() { xmlAttrs(this, _, _, result, _, _) } + predicate xmlAttrs_( + XmlAttributeBase e, XmlElementBase elementid, string name, string value, int idx, + XmlFileBase file + ) { + xmlAttrs(e, elementid, name, value, idx, file) + } - /** Gets a printable representation of this XML attribute. */ - override string toString() { result = this.getName() + "=" + this.getValue() } -} + class XmlNamespaceBase = @xmlnamespace; -/** - * A namespace used in an XML file. - * - * Example: - * - * ``` - * xmlns:android="http://schemas.android.com/apk/res/android" - * ``` - */ -class XmlNamespace extends XmlLocatable, @xmlnamespace { - /** Gets the prefix of this namespace. */ - string getPrefix() { xmlNs(this, result, _, _) } + predicate xmlNs_(XmlNamespaceBase e, string prefixName, string uri, XmlFileBase file) { + xmlNs(e, prefixName, uri, file) + } - /** Gets the URI of this namespace. */ - string getUri() { xmlNs(this, _, result, _) } + predicate xmlHasNs_(XmlNamespaceableBase e, XmlNamespaceBase ns, XmlFileBase file) { + xmlHasNs(e, ns, file) + } - /** Holds if this namespace has no prefix. */ - predicate isDefault() { this.getPrefix() = "" } + class XmlCommentBase = @xmlcomment; - override string toString() { - this.isDefault() and result = this.getUri() - or - not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + predicate xmlComments_(XmlCommentBase e, string text, XmlParentBase parent, XmlFileBase file) { + xmlComments(e, text, parent, file) } -} - -/** - * A comment in an XML file. - * - * Example: - * - * ``` - * <!-- This is a comment. --> - * ``` - */ -class XmlComment extends @xmlcomment, XmlLocatable { - /** Gets the text content of this XML comment. */ - string getText() { xmlComments(this, result, _, _) } - /** Gets the parent of this XML comment. */ - XmlParent getParent() { xmlComments(this, _, result, _) } + class XmlCharactersBase = @xmlcharacters; - /** Gets a printable representation of this XML comment. */ - override string toString() { result = this.getText() } + predicate xmlChars_( + XmlCharactersBase e, string text, XmlParentBase parent, int idx, int isCDATA, XmlFileBase file + ) { + xmlChars(e, text, parent, idx, isCDATA, file) + } } -/** - * A sequence of characters that occurs between opening and - * closing tags of an XML element, excluding other elements. - * - * Example: - * - * ``` - * <content>This is a sequence of characters.</content> - * ``` - */ -class XmlCharacters extends @xmlcharacters, XmlLocatable { - /** Gets the content of this character sequence. */ - string getCharacters() { xmlChars(this, result, _, _, _, _) } - - /** Gets the parent of this character sequence. */ - XmlParent getParent() { xmlChars(this, _, result, _, _, _) } - - /** Holds if this character sequence is CDATA. */ - predicate isCDATA() { xmlChars(this, _, _, _, 1, _) } - - /** Gets a printable representation of this XML character sequence. */ - override string toString() { result = this.getCharacters() } -} +import Make<File, Location, Input> From 754b491d0901d47694a3fac07c9a4a05a87746e5 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 14 Mar 2024 09:36:39 +0100 Subject: [PATCH 361/731] C++: Switch to shared `XML.qll` implementation --- config/identical-files.json | 1 - cpp/ql/lib/qlpack.yml | 1 + cpp/ql/lib/semmle/code/cpp/XML.qll | 318 ++++------------------------- 3 files changed, 41 insertions(+), 279 deletions(-) diff --git a/config/identical-files.json b/config/identical-files.json index f4eb97229d22..66d5c1457a85 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -252,7 +252,6 @@ "cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll" ], "XML": [ - "cpp/ql/lib/semmle/code/cpp/XML.qll", "java/ql/lib/semmle/code/xml/XML.qll", "python/ql/lib/semmle/python/xml/XML.qll" ], diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8e201fff5943..20adb9bb6b63 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -11,4 +11,5 @@ dependencies: codeql/ssa: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} + codeql/xml: ${workspace} warnOnImplicitThis: true diff --git a/cpp/ql/lib/semmle/code/cpp/XML.qll b/cpp/ql/lib/semmle/code/cpp/XML.qll index 65bdd7b7cc16..54157809260b 100644 --- a/cpp/ql/lib/semmle/code/cpp/XML.qll +++ b/cpp/ql/lib/semmle/code/cpp/XML.qll @@ -3,305 +3,67 @@ */ import semmle.files.FileSystem +private import codeql.xml.Xml -private class TXmlLocatable = - @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; +private module Input implements InputSig<File, Location> { + class XmlLocatableBase = @xmllocatable or @xmlnamespaceable; -/** An XML element that has a location. */ -class XmlLocatable extends @xmllocatable, TXmlLocatable { - /** Gets the source location for this element. */ - Location getLocation() { xmllocations(this, result) } + predicate xmllocations_(XmlLocatableBase e, Location loc) { xmllocations(e, loc) } - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(File f, Location l | l = this.getLocation() | - locations_default(l, f, startline, startcolumn, endline, endcolumn) and - filepath = f.getAbsolutePath() - ) - } - - /** Gets a textual representation of this element. */ - string toString() { none() } // overridden in subclasses -} - -/** - * An `XmlParent` is either an `XmlElement` or an `XmlFile`, - * both of which can contain other elements. - */ -class XmlParent extends @xmlparent { - XmlParent() { - // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; - // the type `@xmlparent` currently also includes non-XML files - this instanceof @xmlelement or xmlEncoding(this, _) - } - - /** - * Gets a printable representation of this XML parent. - * (Intended to be overridden in subclasses.) - */ - string getName() { none() } // overridden in subclasses - - /** Gets the file to which this XML parent belongs. */ - XmlFile getFile() { result = this or xmlElements(this, _, _, _, result) } + class XmlParentBase = @xmlparent; - /** Gets the child element at a specified index of this XML parent. */ - XmlElement getChild(int index) { xmlElements(result, _, this, index, _) } + class XmlNamespaceableBase = @xmlnamespaceable; - /** Gets a child element of this XML parent. */ - XmlElement getAChild() { xmlElements(result, _, this, _, _) } + class XmlElementBase = @xmlelement; - /** Gets a child element of this XML parent with the given `name`. */ - XmlElement getAChild(string name) { xmlElements(result, _, this, _, _) and result.hasName(name) } + class XmlFileBase = File; - /** Gets a comment that is a child of this XML parent. */ - XmlComment getAComment() { xmlComments(result, _, this, _) } + predicate xmlEncoding_(XmlFileBase f, string enc) { xmlEncoding(f, enc) } - /** Gets a character sequence that is a child of this XML parent. */ - XmlCharacters getACharactersSet() { xmlChars(result, _, this, _, _, _) } + class XmlDtdBase = @xmldtd; - /** Gets the depth in the tree. (Overridden in XmlElement.) */ - int getDepth() { result = 0 } - - /** Gets the number of child XML elements of this XML parent. */ - int getNumberOfChildren() { result = count(XmlElement e | xmlElements(e, _, this, _, _)) } - - /** Gets the number of places in the body of this XML parent where text occurs. */ - int getNumberOfCharacterSets() { result = count(int pos | xmlChars(_, _, this, pos, _, _)) } - - /** - * Gets the result of appending all the character sequences of this XML parent from - * left to right, separated by a space. - */ - string allCharactersString() { - result = - concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos) + predicate xmlDTDs_(XmlDtdBase e, string root, string publicId, string systemId, XmlFileBase file) { + xmlDTDs(e, root, publicId, systemId, file) } - /** Gets the text value contained in this XML parent. */ - string getTextValue() { result = this.allCharactersString() } - - /** Gets a printable representation of this XML parent. */ - string toString() { result = this.getName() } -} - -/** An XML file. */ -class XmlFile extends XmlParent, File { - XmlFile() { xmlEncoding(this, _) } - - /** Gets a printable representation of this XML file. */ - override string toString() { result = this.getName() } - - /** Gets the name of this XML file. */ - override string getName() { result = File.super.getAbsolutePath() } - - /** Gets the encoding of this XML file. */ - string getEncoding() { xmlEncoding(this, result) } - - /** Gets the XML file itself. */ - override XmlFile getFile() { result = this } - - /** Gets a top-most element in an XML file. */ - XmlElement getARootElement() { result = this.getAChild() } - - /** Gets a DTD associated with this XML file. */ - XmlDtd getADtd() { xmlDTDs(result, _, _, _, this) } -} - -/** - * An XML document type definition (DTD). - * - * Example: - * - * ``` - * <!ELEMENT person (firstName, lastName?)> - * <!ELEMENT firstName (#PCDATA)> - * <!ELEMENT lastName (#PCDATA)> - * ``` - */ -class XmlDtd extends XmlLocatable, @xmldtd { - /** Gets the name of the root element of this DTD. */ - string getRoot() { xmlDTDs(this, result, _, _, _) } - - /** Gets the public ID of this DTD. */ - string getPublicId() { xmlDTDs(this, _, result, _, _) } - - /** Gets the system ID of this DTD. */ - string getSystemId() { xmlDTDs(this, _, _, result, _) } - - /** Holds if this DTD is public. */ - predicate isPublic() { not xmlDTDs(this, _, "", _, _) } - - /** Gets the parent of this DTD. */ - XmlParent getParent() { xmlDTDs(this, _, _, _, result) } - - override string toString() { - this.isPublic() and - result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" - or - not this.isPublic() and - result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" + predicate xmlElements_( + XmlElementBase e, string name, XmlParentBase parent, int idx, XmlFileBase file + ) { + xmlElements(e, name, parent, idx, file) } -} - -/** - * An XML element in an XML file. - * - * Example: - * - * ``` - * <manifest xmlns:android="http://schemas.android.com/apk/res/android" - * package="com.example.exampleapp" android:versionCode="1"> - * </manifest> - * ``` - */ -class XmlElement extends @xmlelement, XmlParent, XmlLocatable { - /** Holds if this XML element has the given `name`. */ - predicate hasName(string name) { name = this.getName() } - - /** Gets the name of this XML element. */ - override string getName() { xmlElements(this, result, _, _, _) } - /** Gets the XML file in which this XML element occurs. */ - override XmlFile getFile() { xmlElements(this, _, _, _, result) } + class XmlAttributeBase = @xmlattribute; - /** Gets the parent of this XML element. */ - XmlParent getParent() { xmlElements(this, _, result, _, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getIndex() { xmlElements(this, _, _, result, _) } - - /** Holds if this XML element has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this XML element, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getElementPositionIndex() { xmlElements(this, _, _, result, _) } - - /** Gets the depth of this element within the XML file tree structure. */ - override int getDepth() { result = this.getParent().getDepth() + 1 } - - /** Gets an XML attribute of this XML element. */ - XmlAttribute getAnAttribute() { result.getElement() = this } - - /** Gets the attribute with the specified `name`, if any. */ - XmlAttribute getAttribute(string name) { result.getElement() = this and result.getName() = name } - - /** Holds if this XML element has an attribute with the specified `name`. */ - predicate hasAttribute(string name) { exists(this.getAttribute(name)) } - - /** Gets the value of the attribute with the specified `name`, if any. */ - string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } - - /** Gets a printable representation of this XML element. */ - override string toString() { result = this.getName() } -} - -/** - * An attribute that occurs inside an XML element. - * - * Examples: - * - * ``` - * package="com.example.exampleapp" - * android:versionCode="1" - * ``` - */ -class XmlAttribute extends @xmlattribute, XmlLocatable { - /** Gets the name of this attribute. */ - string getName() { xmlAttrs(this, _, result, _, _, _) } - - /** Gets the XML element to which this attribute belongs. */ - XmlElement getElement() { xmlAttrs(this, result, _, _, _, _) } - - /** Holds if this attribute has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this attribute, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the value of this attribute. */ - string getValue() { xmlAttrs(this, _, _, result, _, _) } + predicate xmlAttrs_( + XmlAttributeBase e, XmlElementBase elementid, string name, string value, int idx, + XmlFileBase file + ) { + xmlAttrs(e, elementid, name, value, idx, file) + } - /** Gets a printable representation of this XML attribute. */ - override string toString() { result = this.getName() + "=" + this.getValue() } -} + class XmlNamespaceBase = @xmlnamespace; -/** - * A namespace used in an XML file. - * - * Example: - * - * ``` - * xmlns:android="http://schemas.android.com/apk/res/android" - * ``` - */ -class XmlNamespace extends XmlLocatable, @xmlnamespace { - /** Gets the prefix of this namespace. */ - string getPrefix() { xmlNs(this, result, _, _) } + predicate xmlNs_(XmlNamespaceBase e, string prefixName, string uri, XmlFileBase file) { + xmlNs(e, prefixName, uri, file) + } - /** Gets the URI of this namespace. */ - string getUri() { xmlNs(this, _, result, _) } + predicate xmlHasNs_(XmlNamespaceableBase e, XmlNamespaceBase ns, XmlFileBase file) { + xmlHasNs(e, ns, file) + } - /** Holds if this namespace has no prefix. */ - predicate isDefault() { this.getPrefix() = "" } + class XmlCommentBase = @xmlcomment; - override string toString() { - this.isDefault() and result = this.getUri() - or - not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + predicate xmlComments_(XmlCommentBase e, string text, XmlParentBase parent, XmlFileBase file) { + xmlComments(e, text, parent, file) } -} - -/** - * A comment in an XML file. - * - * Example: - * - * ``` - * <!-- This is a comment. --> - * ``` - */ -class XmlComment extends @xmlcomment, XmlLocatable { - /** Gets the text content of this XML comment. */ - string getText() { xmlComments(this, result, _, _) } - /** Gets the parent of this XML comment. */ - XmlParent getParent() { xmlComments(this, _, result, _) } + class XmlCharactersBase = @xmlcharacters; - /** Gets a printable representation of this XML comment. */ - override string toString() { result = this.getText() } + predicate xmlChars_( + XmlCharactersBase e, string text, XmlParentBase parent, int idx, int isCDATA, XmlFileBase file + ) { + xmlChars(e, text, parent, idx, isCDATA, file) + } } -/** - * A sequence of characters that occurs between opening and - * closing tags of an XML element, excluding other elements. - * - * Example: - * - * ``` - * <content>This is a sequence of characters.</content> - * ``` - */ -class XmlCharacters extends @xmlcharacters, XmlLocatable { - /** Gets the content of this character sequence. */ - string getCharacters() { xmlChars(this, result, _, _, _, _) } - - /** Gets the parent of this character sequence. */ - XmlParent getParent() { xmlChars(this, _, result, _, _, _) } - - /** Holds if this character sequence is CDATA. */ - predicate isCDATA() { xmlChars(this, _, _, _, 1, _) } - - /** Gets a printable representation of this XML character sequence. */ - override string toString() { result = this.getCharacters() } -} +import Make<File, Location, Input> From a6c147134ae1a5793069c5aa4b3e57e1bb72709f Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 14 Mar 2024 09:37:22 +0100 Subject: [PATCH 362/731] Java: Switch to shared `XML.qll` implementation --- config/identical-files.json | 4 - java/ql/lib/qlpack.yml | 1 + .../java/frameworks/spring/SpringBean.qll | 3 +- .../java/frameworks/spring/SpringProperty.qll | 3 +- java/ql/lib/semmle/code/xml/Ant.qll | 2 +- java/ql/lib/semmle/code/xml/XML.qll | 318 +++--------------- 6 files changed, 46 insertions(+), 285 deletions(-) diff --git a/config/identical-files.json b/config/identical-files.json index 66d5c1457a85..a8b1368f1af4 100644 --- a/config/identical-files.json +++ b/config/identical-files.json @@ -251,10 +251,6 @@ "cpp/ql/src/Security/CWE/CWE-020/SafeExternalAPIFunction.qll", "cpp/ql/src/Security/CWE/CWE-020/ir/SafeExternalAPIFunction.qll" ], - "XML": [ - "java/ql/lib/semmle/code/xml/XML.qll", - "python/ql/lib/semmle/python/xml/XML.qll" - ], "DuplicationProblems.inc.qhelp": [ "cpp/ql/src/Metrics/Files/DuplicationProblems.inc.qhelp", "javascript/ql/src/Metrics/DuplicationProblems.inc.qhelp", diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 15b4982d41eb..750697a25482 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -14,6 +14,7 @@ dependencies: codeql/tutorial: ${workspace} codeql/typetracking: ${workspace} codeql/util: ${workspace} + codeql/xml: ${workspace} dataExtensions: - ext/*.model.yml - ext/generated/*.model.yml diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll index bbb6adf72f3c..a53cbf67090f 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringBean.qll @@ -19,7 +19,8 @@ class SpringBean extends SpringXmlElement { not this.getNamespace().getUri() = "http://camel.apache.org/schema/spring" } - override string toString() { result = this.getBeanIdentifier() } + /** Gets a printable representation of this XML element. */ + string toString() { result = this.getBeanIdentifier() } /** * Holds if this element is a top-level bean definition. diff --git a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll index 06d5daefaa15..a83eeed13fab 100644 --- a/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll +++ b/java/ql/lib/semmle/code/java/frameworks/spring/SpringProperty.qll @@ -9,7 +9,8 @@ import semmle.code.java.frameworks.spring.SpringValue class SpringProperty extends SpringXmlElement { SpringProperty() { this.getName() = "property" } - override string toString() { result = this.getPropertyName() } + /** Gets a printable representation of this XML element. */ + string toString() { result = this.getPropertyName() } /** Gets the value of the `name` attribute. */ string getPropertyName() { result = this.getAttributeValue("name") } diff --git a/java/ql/lib/semmle/code/xml/Ant.qll b/java/ql/lib/semmle/code/xml/Ant.qll index 8d4737620a4a..59cd2889096a 100644 --- a/java/ql/lib/semmle/code/xml/Ant.qll +++ b/java/ql/lib/semmle/code/xml/Ant.qll @@ -9,7 +9,7 @@ class AntTarget extends XmlElement { AntTarget() { super.getName() = "target" } /** Gets the name of this Ant target. */ - override string getName() { result = this.getAttributeValue("name") } + string getName() { result = this.getAttributeValue("name") } /** * Gets a string containing the dependencies of this Ant target, diff --git a/java/ql/lib/semmle/code/xml/XML.qll b/java/ql/lib/semmle/code/xml/XML.qll index 65bdd7b7cc16..54157809260b 100644 --- a/java/ql/lib/semmle/code/xml/XML.qll +++ b/java/ql/lib/semmle/code/xml/XML.qll @@ -3,305 +3,67 @@ */ import semmle.files.FileSystem +private import codeql.xml.Xml -private class TXmlLocatable = - @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; +private module Input implements InputSig<File, Location> { + class XmlLocatableBase = @xmllocatable or @xmlnamespaceable; -/** An XML element that has a location. */ -class XmlLocatable extends @xmllocatable, TXmlLocatable { - /** Gets the source location for this element. */ - Location getLocation() { xmllocations(this, result) } + predicate xmllocations_(XmlLocatableBase e, Location loc) { xmllocations(e, loc) } - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(File f, Location l | l = this.getLocation() | - locations_default(l, f, startline, startcolumn, endline, endcolumn) and - filepath = f.getAbsolutePath() - ) - } - - /** Gets a textual representation of this element. */ - string toString() { none() } // overridden in subclasses -} - -/** - * An `XmlParent` is either an `XmlElement` or an `XmlFile`, - * both of which can contain other elements. - */ -class XmlParent extends @xmlparent { - XmlParent() { - // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; - // the type `@xmlparent` currently also includes non-XML files - this instanceof @xmlelement or xmlEncoding(this, _) - } - - /** - * Gets a printable representation of this XML parent. - * (Intended to be overridden in subclasses.) - */ - string getName() { none() } // overridden in subclasses - - /** Gets the file to which this XML parent belongs. */ - XmlFile getFile() { result = this or xmlElements(this, _, _, _, result) } + class XmlParentBase = @xmlparent; - /** Gets the child element at a specified index of this XML parent. */ - XmlElement getChild(int index) { xmlElements(result, _, this, index, _) } + class XmlNamespaceableBase = @xmlnamespaceable; - /** Gets a child element of this XML parent. */ - XmlElement getAChild() { xmlElements(result, _, this, _, _) } + class XmlElementBase = @xmlelement; - /** Gets a child element of this XML parent with the given `name`. */ - XmlElement getAChild(string name) { xmlElements(result, _, this, _, _) and result.hasName(name) } + class XmlFileBase = File; - /** Gets a comment that is a child of this XML parent. */ - XmlComment getAComment() { xmlComments(result, _, this, _) } + predicate xmlEncoding_(XmlFileBase f, string enc) { xmlEncoding(f, enc) } - /** Gets a character sequence that is a child of this XML parent. */ - XmlCharacters getACharactersSet() { xmlChars(result, _, this, _, _, _) } + class XmlDtdBase = @xmldtd; - /** Gets the depth in the tree. (Overridden in XmlElement.) */ - int getDepth() { result = 0 } - - /** Gets the number of child XML elements of this XML parent. */ - int getNumberOfChildren() { result = count(XmlElement e | xmlElements(e, _, this, _, _)) } - - /** Gets the number of places in the body of this XML parent where text occurs. */ - int getNumberOfCharacterSets() { result = count(int pos | xmlChars(_, _, this, pos, _, _)) } - - /** - * Gets the result of appending all the character sequences of this XML parent from - * left to right, separated by a space. - */ - string allCharactersString() { - result = - concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos) + predicate xmlDTDs_(XmlDtdBase e, string root, string publicId, string systemId, XmlFileBase file) { + xmlDTDs(e, root, publicId, systemId, file) } - /** Gets the text value contained in this XML parent. */ - string getTextValue() { result = this.allCharactersString() } - - /** Gets a printable representation of this XML parent. */ - string toString() { result = this.getName() } -} - -/** An XML file. */ -class XmlFile extends XmlParent, File { - XmlFile() { xmlEncoding(this, _) } - - /** Gets a printable representation of this XML file. */ - override string toString() { result = this.getName() } - - /** Gets the name of this XML file. */ - override string getName() { result = File.super.getAbsolutePath() } - - /** Gets the encoding of this XML file. */ - string getEncoding() { xmlEncoding(this, result) } - - /** Gets the XML file itself. */ - override XmlFile getFile() { result = this } - - /** Gets a top-most element in an XML file. */ - XmlElement getARootElement() { result = this.getAChild() } - - /** Gets a DTD associated with this XML file. */ - XmlDtd getADtd() { xmlDTDs(result, _, _, _, this) } -} - -/** - * An XML document type definition (DTD). - * - * Example: - * - * ``` - * <!ELEMENT person (firstName, lastName?)> - * <!ELEMENT firstName (#PCDATA)> - * <!ELEMENT lastName (#PCDATA)> - * ``` - */ -class XmlDtd extends XmlLocatable, @xmldtd { - /** Gets the name of the root element of this DTD. */ - string getRoot() { xmlDTDs(this, result, _, _, _) } - - /** Gets the public ID of this DTD. */ - string getPublicId() { xmlDTDs(this, _, result, _, _) } - - /** Gets the system ID of this DTD. */ - string getSystemId() { xmlDTDs(this, _, _, result, _) } - - /** Holds if this DTD is public. */ - predicate isPublic() { not xmlDTDs(this, _, "", _, _) } - - /** Gets the parent of this DTD. */ - XmlParent getParent() { xmlDTDs(this, _, _, _, result) } - - override string toString() { - this.isPublic() and - result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" - or - not this.isPublic() and - result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" + predicate xmlElements_( + XmlElementBase e, string name, XmlParentBase parent, int idx, XmlFileBase file + ) { + xmlElements(e, name, parent, idx, file) } -} - -/** - * An XML element in an XML file. - * - * Example: - * - * ``` - * <manifest xmlns:android="http://schemas.android.com/apk/res/android" - * package="com.example.exampleapp" android:versionCode="1"> - * </manifest> - * ``` - */ -class XmlElement extends @xmlelement, XmlParent, XmlLocatable { - /** Holds if this XML element has the given `name`. */ - predicate hasName(string name) { name = this.getName() } - - /** Gets the name of this XML element. */ - override string getName() { xmlElements(this, result, _, _, _) } - /** Gets the XML file in which this XML element occurs. */ - override XmlFile getFile() { xmlElements(this, _, _, _, result) } + class XmlAttributeBase = @xmlattribute; - /** Gets the parent of this XML element. */ - XmlParent getParent() { xmlElements(this, _, result, _, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getIndex() { xmlElements(this, _, _, result, _) } - - /** Holds if this XML element has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this XML element, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getElementPositionIndex() { xmlElements(this, _, _, result, _) } - - /** Gets the depth of this element within the XML file tree structure. */ - override int getDepth() { result = this.getParent().getDepth() + 1 } - - /** Gets an XML attribute of this XML element. */ - XmlAttribute getAnAttribute() { result.getElement() = this } - - /** Gets the attribute with the specified `name`, if any. */ - XmlAttribute getAttribute(string name) { result.getElement() = this and result.getName() = name } - - /** Holds if this XML element has an attribute with the specified `name`. */ - predicate hasAttribute(string name) { exists(this.getAttribute(name)) } - - /** Gets the value of the attribute with the specified `name`, if any. */ - string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } - - /** Gets a printable representation of this XML element. */ - override string toString() { result = this.getName() } -} - -/** - * An attribute that occurs inside an XML element. - * - * Examples: - * - * ``` - * package="com.example.exampleapp" - * android:versionCode="1" - * ``` - */ -class XmlAttribute extends @xmlattribute, XmlLocatable { - /** Gets the name of this attribute. */ - string getName() { xmlAttrs(this, _, result, _, _, _) } - - /** Gets the XML element to which this attribute belongs. */ - XmlElement getElement() { xmlAttrs(this, result, _, _, _, _) } - - /** Holds if this attribute has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this attribute, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the value of this attribute. */ - string getValue() { xmlAttrs(this, _, _, result, _, _) } + predicate xmlAttrs_( + XmlAttributeBase e, XmlElementBase elementid, string name, string value, int idx, + XmlFileBase file + ) { + xmlAttrs(e, elementid, name, value, idx, file) + } - /** Gets a printable representation of this XML attribute. */ - override string toString() { result = this.getName() + "=" + this.getValue() } -} + class XmlNamespaceBase = @xmlnamespace; -/** - * A namespace used in an XML file. - * - * Example: - * - * ``` - * xmlns:android="http://schemas.android.com/apk/res/android" - * ``` - */ -class XmlNamespace extends XmlLocatable, @xmlnamespace { - /** Gets the prefix of this namespace. */ - string getPrefix() { xmlNs(this, result, _, _) } + predicate xmlNs_(XmlNamespaceBase e, string prefixName, string uri, XmlFileBase file) { + xmlNs(e, prefixName, uri, file) + } - /** Gets the URI of this namespace. */ - string getUri() { xmlNs(this, _, result, _) } + predicate xmlHasNs_(XmlNamespaceableBase e, XmlNamespaceBase ns, XmlFileBase file) { + xmlHasNs(e, ns, file) + } - /** Holds if this namespace has no prefix. */ - predicate isDefault() { this.getPrefix() = "" } + class XmlCommentBase = @xmlcomment; - override string toString() { - this.isDefault() and result = this.getUri() - or - not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + predicate xmlComments_(XmlCommentBase e, string text, XmlParentBase parent, XmlFileBase file) { + xmlComments(e, text, parent, file) } -} - -/** - * A comment in an XML file. - * - * Example: - * - * ``` - * <!-- This is a comment. --> - * ``` - */ -class XmlComment extends @xmlcomment, XmlLocatable { - /** Gets the text content of this XML comment. */ - string getText() { xmlComments(this, result, _, _) } - /** Gets the parent of this XML comment. */ - XmlParent getParent() { xmlComments(this, _, result, _) } + class XmlCharactersBase = @xmlcharacters; - /** Gets a printable representation of this XML comment. */ - override string toString() { result = this.getText() } + predicate xmlChars_( + XmlCharactersBase e, string text, XmlParentBase parent, int idx, int isCDATA, XmlFileBase file + ) { + xmlChars(e, text, parent, idx, isCDATA, file) + } } -/** - * A sequence of characters that occurs between opening and - * closing tags of an XML element, excluding other elements. - * - * Example: - * - * ``` - * <content>This is a sequence of characters.</content> - * ``` - */ -class XmlCharacters extends @xmlcharacters, XmlLocatable { - /** Gets the content of this character sequence. */ - string getCharacters() { xmlChars(this, result, _, _, _, _) } - - /** Gets the parent of this character sequence. */ - XmlParent getParent() { xmlChars(this, _, result, _, _, _) } - - /** Holds if this character sequence is CDATA. */ - predicate isCDATA() { xmlChars(this, _, _, _, 1, _) } - - /** Gets a printable representation of this XML character sequence. */ - override string toString() { result = this.getCharacters() } -} +import Make<File, Location, Input> From 61ef9e2e5c36347e62bc9e7846434bc4da572055 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 14 Mar 2024 09:38:04 +0100 Subject: [PATCH 363/731] JS: Switch to shared `XML.qll` implementation --- javascript/ql/lib/qlpack.yml | 1 + javascript/ql/lib/semmle/javascript/XML.qll | 315 +++--------------- .../javascript/frameworks/ServerLess.qll | 2 +- 3 files changed, 42 insertions(+), 276 deletions(-) diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index ef3ca7521aca..265853158772 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -11,6 +11,7 @@ dependencies: codeql/regex: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} + codeql/xml: ${workspace} codeql/yaml: ${workspace} dataExtensions: - semmle/javascript/frameworks/**/model.yml diff --git a/javascript/ql/lib/semmle/javascript/XML.qll b/javascript/ql/lib/semmle/javascript/XML.qll index 1a27c9a1ef3a..2a351016fd14 100644 --- a/javascript/ql/lib/semmle/javascript/XML.qll +++ b/javascript/ql/lib/semmle/javascript/XML.qll @@ -4,302 +4,67 @@ import semmle.files.FileSystem private import semmle.javascript.internal.Locations +private import codeql.xml.Xml -private class TXmlLocatable = - @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; +private module Input implements InputSig<File, DbLocation> { + class XmlLocatableBase = @xmllocatable or @xmlnamespaceable; -/** An XML element that has a location. */ -class XmlLocatable extends @xmllocatable, TXmlLocatable { - /** Gets the source location for this element. */ - DbLocation getLocation() { result = getLocatableLocation(this) } + predicate xmllocations_(XmlLocatableBase e, DbLocation loc) { loc = getLocatableLocation(e) } - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } - - /** Gets a textual representation of this element. */ - string toString() { none() } // overridden in subclasses -} - -/** - * An `XmlParent` is either an `XmlElement` or an `XmlFile`, - * both of which can contain other elements. - */ -class XmlParent extends @xmlparent { - XmlParent() { - // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; - // the type `@xmlparent` currently also includes non-XML files - this instanceof @xmlelement or xmlEncoding(this, _) - } - - /** - * Gets a printable representation of this XML parent. - * (Intended to be overridden in subclasses.) - */ - string getName() { none() } // overridden in subclasses - - /** Gets the file to which this XML parent belongs. */ - XmlFile getFile() { result = this or xmlElements(this, _, _, _, result) } + class XmlParentBase = @xmlparent; - /** Gets the child element at a specified index of this XML parent. */ - XmlElement getChild(int index) { xmlElements(result, _, this, index, _) } + class XmlNamespaceableBase = @xmlnamespaceable; - /** Gets a child element of this XML parent. */ - XmlElement getAChild() { xmlElements(result, _, this, _, _) } + class XmlElementBase = @xmlelement; - /** Gets a child element of this XML parent with the given `name`. */ - XmlElement getAChild(string name) { xmlElements(result, _, this, _, _) and result.hasName(name) } + class XmlFileBase = File; - /** Gets a comment that is a child of this XML parent. */ - XmlComment getAComment() { xmlComments(result, _, this, _) } + predicate xmlEncoding_(XmlFileBase f, string enc) { xmlEncoding(f, enc) } - /** Gets a character sequence that is a child of this XML parent. */ - XmlCharacters getACharactersSet() { xmlChars(result, _, this, _, _, _) } + class XmlDtdBase = @xmldtd; - /** Gets the depth in the tree. (Overridden in XmlElement.) */ - int getDepth() { result = 0 } - - /** Gets the number of child XML elements of this XML parent. */ - int getNumberOfChildren() { result = count(XmlElement e | xmlElements(e, _, this, _, _)) } - - /** Gets the number of places in the body of this XML parent where text occurs. */ - int getNumberOfCharacterSets() { result = count(int pos | xmlChars(_, _, this, pos, _, _)) } - - /** - * Gets the result of appending all the character sequences of this XML parent from - * left to right, separated by a space. - */ - string allCharactersString() { - result = - concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos) + predicate xmlDTDs_(XmlDtdBase e, string root, string publicId, string systemId, XmlFileBase file) { + xmlDTDs(e, root, publicId, systemId, file) } - /** Gets the text value contained in this XML parent. */ - string getTextValue() { result = this.allCharactersString() } - - /** Gets a printable representation of this XML parent. */ - string toString() { result = this.getName() } -} - -/** An XML file. */ -class XmlFile extends XmlParent, File { - XmlFile() { xmlEncoding(this, _) } - - /** Gets a printable representation of this XML file. */ - override string toString() { result = this.getName() } - - /** Gets the name of this XML file. */ - override string getName() { result = File.super.getAbsolutePath() } - - /** Gets the encoding of this XML file. */ - string getEncoding() { xmlEncoding(this, result) } - - /** Gets the XML file itself. */ - override XmlFile getFile() { result = this } - - /** Gets a top-most element in an XML file. */ - XmlElement getARootElement() { result = this.getAChild() } - - /** Gets a DTD associated with this XML file. */ - XmlDtd getADtd() { xmlDTDs(result, _, _, _, this) } -} - -/** - * An XML document type definition (DTD). - * - * Example: - * - * ``` - * <!ELEMENT person (firstName, lastName?)> - * <!ELEMENT firstName (#PCDATA)> - * <!ELEMENT lastName (#PCDATA)> - * ``` - */ -class XmlDtd extends XmlLocatable, @xmldtd { - /** Gets the name of the root element of this DTD. */ - string getRoot() { xmlDTDs(this, result, _, _, _) } - - /** Gets the public ID of this DTD. */ - string getPublicId() { xmlDTDs(this, _, result, _, _) } - - /** Gets the system ID of this DTD. */ - string getSystemId() { xmlDTDs(this, _, _, result, _) } - - /** Holds if this DTD is public. */ - predicate isPublic() { not xmlDTDs(this, _, "", _, _) } - - /** Gets the parent of this DTD. */ - XmlParent getParent() { xmlDTDs(this, _, _, _, result) } - - override string toString() { - this.isPublic() and - result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" - or - not this.isPublic() and - result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" + predicate xmlElements_( + XmlElementBase e, string name, XmlParentBase parent, int idx, XmlFileBase file + ) { + xmlElements(e, name, parent, idx, file) } -} - -/** - * An XML element in an XML file. - * - * Example: - * - * ``` - * <manifest xmlns:android="http://schemas.android.com/apk/res/android" - * package="com.example.exampleapp" android:versionCode="1"> - * </manifest> - * ``` - */ -class XmlElement extends @xmlelement, XmlParent, XmlLocatable { - /** Holds if this XML element has the given `name`. */ - predicate hasName(string name) { name = this.getName() } - - /** Gets the name of this XML element. */ - override string getName() { xmlElements(this, result, _, _, _) } - /** Gets the XML file in which this XML element occurs. */ - override XmlFile getFile() { xmlElements(this, _, _, _, result) } + class XmlAttributeBase = @xmlattribute; - /** Gets the parent of this XML element. */ - XmlParent getParent() { xmlElements(this, _, result, _, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getIndex() { xmlElements(this, _, _, result, _) } - - /** Holds if this XML element has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this XML element, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getElementPositionIndex() { xmlElements(this, _, _, result, _) } - - /** Gets the depth of this element within the XML file tree structure. */ - override int getDepth() { result = this.getParent().getDepth() + 1 } - - /** Gets an XML attribute of this XML element. */ - XmlAttribute getAnAttribute() { result.getElement() = this } - - /** Gets the attribute with the specified `name`, if any. */ - XmlAttribute getAttribute(string name) { result.getElement() = this and result.getName() = name } - - /** Holds if this XML element has an attribute with the specified `name`. */ - predicate hasAttribute(string name) { exists(this.getAttribute(name)) } - - /** Gets the value of the attribute with the specified `name`, if any. */ - string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } - - /** Gets a printable representation of this XML element. */ - override string toString() { result = this.getName() } -} - -/** - * An attribute that occurs inside an XML element. - * - * Examples: - * - * ``` - * package="com.example.exampleapp" - * android:versionCode="1" - * ``` - */ -class XmlAttribute extends @xmlattribute, XmlLocatable { - /** Gets the name of this attribute. */ - string getName() { xmlAttrs(this, _, result, _, _, _) } - - /** Gets the XML element to which this attribute belongs. */ - XmlElement getElement() { xmlAttrs(this, result, _, _, _, _) } - - /** Holds if this attribute has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this attribute, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the value of this attribute. */ - string getValue() { xmlAttrs(this, _, _, result, _, _) } + predicate xmlAttrs_( + XmlAttributeBase e, XmlElementBase elementid, string name, string value, int idx, + XmlFileBase file + ) { + xmlAttrs(e, elementid, name, value, idx, file) + } - /** Gets a printable representation of this XML attribute. */ - override string toString() { result = this.getName() + "=" + this.getValue() } -} + class XmlNamespaceBase = @xmlnamespace; -/** - * A namespace used in an XML file. - * - * Example: - * - * ``` - * xmlns:android="http://schemas.android.com/apk/res/android" - * ``` - */ -class XmlNamespace extends XmlLocatable, @xmlnamespace { - /** Gets the prefix of this namespace. */ - string getPrefix() { xmlNs(this, result, _, _) } + predicate xmlNs_(XmlNamespaceBase e, string prefixName, string uri, XmlFileBase file) { + xmlNs(e, prefixName, uri, file) + } - /** Gets the URI of this namespace. */ - string getUri() { xmlNs(this, _, result, _) } + predicate xmlHasNs_(XmlNamespaceableBase e, XmlNamespaceBase ns, XmlFileBase file) { + xmlHasNs(e, ns, file) + } - /** Holds if this namespace has no prefix. */ - predicate isDefault() { this.getPrefix() = "" } + class XmlCommentBase = @xmlcomment; - override string toString() { - this.isDefault() and result = this.getUri() - or - not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + predicate xmlComments_(XmlCommentBase e, string text, XmlParentBase parent, XmlFileBase file) { + xmlComments(e, text, parent, file) } -} - -/** - * A comment in an XML file. - * - * Example: - * - * ``` - * <!-- This is a comment. --> - * ``` - */ -class XmlComment extends @xmlcomment, XmlLocatable { - /** Gets the text content of this XML comment. */ - string getText() { xmlComments(this, result, _, _) } - /** Gets the parent of this XML comment. */ - XmlParent getParent() { xmlComments(this, _, result, _) } + class XmlCharactersBase = @xmlcharacters; - /** Gets a printable representation of this XML comment. */ - override string toString() { result = this.getText() } + predicate xmlChars_( + XmlCharactersBase e, string text, XmlParentBase parent, int idx, int isCDATA, XmlFileBase file + ) { + xmlChars(e, text, parent, idx, isCDATA, file) + } } -/** - * A sequence of characters that occurs between opening and - * closing tags of an XML element, excluding other elements. - * - * Example: - * - * ``` - * <content>This is a sequence of characters.</content> - * ``` - */ -class XmlCharacters extends @xmlcharacters, XmlLocatable { - /** Gets the content of this character sequence. */ - string getCharacters() { xmlChars(this, result, _, _, _, _) } - - /** Gets the parent of this character sequence. */ - XmlParent getParent() { xmlChars(this, _, result, _, _, _) } - - /** Holds if this character sequence is CDATA. */ - predicate isCDATA() { xmlChars(this, _, _, _, 1, _) } - - /** Gets a printable representation of this XML character sequence. */ - override string toString() { result = this.getCharacters() } -} +import Make<File, DbLocation, Input> diff --git a/javascript/ql/lib/semmle/javascript/frameworks/ServerLess.qll b/javascript/ql/lib/semmle/javascript/frameworks/ServerLess.qll index a88a78fd033e..140797dd5db1 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/ServerLess.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/ServerLess.qll @@ -5,7 +5,7 @@ */ import javascript -import codeql.serverless.ServerLess +private import codeql.serverless.ServerLess private module YamlImpl implements Input { import semmle.javascript.Files From 2e370e2dedb807656810173682ba4c5c76556d62 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 14 Mar 2024 09:38:40 +0100 Subject: [PATCH 364/731] Python: Switch to shared `XML.qll` implementation --- python/ql/lib/qlpack.yml | 1 + .../semmle/python/frameworks/ServerLess.qll | 2 +- python/ql/lib/semmle/python/xml/XML.qll | 318 +++--------------- 3 files changed, 42 insertions(+), 279 deletions(-) diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index e9f66e205f24..5d624051c40b 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -11,6 +11,7 @@ dependencies: codeql/regex: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} + codeql/xml: ${workspace} codeql/yaml: ${workspace} dataExtensions: - semmle/python/frameworks/**/*.model.yml diff --git a/python/ql/lib/semmle/python/frameworks/ServerLess.qll b/python/ql/lib/semmle/python/frameworks/ServerLess.qll index a7d2508b32b7..36a4e977c7fa 100644 --- a/python/ql/lib/semmle/python/frameworks/ServerLess.qll +++ b/python/ql/lib/semmle/python/frameworks/ServerLess.qll @@ -8,7 +8,7 @@ */ import python -import codeql.serverless.ServerLess +private import codeql.serverless.ServerLess import semmle.python.dataflow.new.DataFlow import semmle.python.dataflow.new.RemoteFlowSources diff --git a/python/ql/lib/semmle/python/xml/XML.qll b/python/ql/lib/semmle/python/xml/XML.qll index 65bdd7b7cc16..54157809260b 100644 --- a/python/ql/lib/semmle/python/xml/XML.qll +++ b/python/ql/lib/semmle/python/xml/XML.qll @@ -3,305 +3,67 @@ */ import semmle.files.FileSystem +private import codeql.xml.Xml -private class TXmlLocatable = - @xmldtd or @xmlelement or @xmlattribute or @xmlnamespace or @xmlcomment or @xmlcharacters; +private module Input implements InputSig<File, Location> { + class XmlLocatableBase = @xmllocatable or @xmlnamespaceable; -/** An XML element that has a location. */ -class XmlLocatable extends @xmllocatable, TXmlLocatable { - /** Gets the source location for this element. */ - Location getLocation() { xmllocations(this, result) } + predicate xmllocations_(XmlLocatableBase e, Location loc) { xmllocations(e, loc) } - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - exists(File f, Location l | l = this.getLocation() | - locations_default(l, f, startline, startcolumn, endline, endcolumn) and - filepath = f.getAbsolutePath() - ) - } - - /** Gets a textual representation of this element. */ - string toString() { none() } // overridden in subclasses -} - -/** - * An `XmlParent` is either an `XmlElement` or an `XmlFile`, - * both of which can contain other elements. - */ -class XmlParent extends @xmlparent { - XmlParent() { - // explicitly restrict `this` to be either an `XmlElement` or an `XmlFile`; - // the type `@xmlparent` currently also includes non-XML files - this instanceof @xmlelement or xmlEncoding(this, _) - } - - /** - * Gets a printable representation of this XML parent. - * (Intended to be overridden in subclasses.) - */ - string getName() { none() } // overridden in subclasses - - /** Gets the file to which this XML parent belongs. */ - XmlFile getFile() { result = this or xmlElements(this, _, _, _, result) } + class XmlParentBase = @xmlparent; - /** Gets the child element at a specified index of this XML parent. */ - XmlElement getChild(int index) { xmlElements(result, _, this, index, _) } + class XmlNamespaceableBase = @xmlnamespaceable; - /** Gets a child element of this XML parent. */ - XmlElement getAChild() { xmlElements(result, _, this, _, _) } + class XmlElementBase = @xmlelement; - /** Gets a child element of this XML parent with the given `name`. */ - XmlElement getAChild(string name) { xmlElements(result, _, this, _, _) and result.hasName(name) } + class XmlFileBase = File; - /** Gets a comment that is a child of this XML parent. */ - XmlComment getAComment() { xmlComments(result, _, this, _) } + predicate xmlEncoding_(XmlFileBase f, string enc) { xmlEncoding(f, enc) } - /** Gets a character sequence that is a child of this XML parent. */ - XmlCharacters getACharactersSet() { xmlChars(result, _, this, _, _, _) } + class XmlDtdBase = @xmldtd; - /** Gets the depth in the tree. (Overridden in XmlElement.) */ - int getDepth() { result = 0 } - - /** Gets the number of child XML elements of this XML parent. */ - int getNumberOfChildren() { result = count(XmlElement e | xmlElements(e, _, this, _, _)) } - - /** Gets the number of places in the body of this XML parent where text occurs. */ - int getNumberOfCharacterSets() { result = count(int pos | xmlChars(_, _, this, pos, _, _)) } - - /** - * Gets the result of appending all the character sequences of this XML parent from - * left to right, separated by a space. - */ - string allCharactersString() { - result = - concat(string chars, int pos | xmlChars(_, chars, this, pos, _, _) | chars, " " order by pos) + predicate xmlDTDs_(XmlDtdBase e, string root, string publicId, string systemId, XmlFileBase file) { + xmlDTDs(e, root, publicId, systemId, file) } - /** Gets the text value contained in this XML parent. */ - string getTextValue() { result = this.allCharactersString() } - - /** Gets a printable representation of this XML parent. */ - string toString() { result = this.getName() } -} - -/** An XML file. */ -class XmlFile extends XmlParent, File { - XmlFile() { xmlEncoding(this, _) } - - /** Gets a printable representation of this XML file. */ - override string toString() { result = this.getName() } - - /** Gets the name of this XML file. */ - override string getName() { result = File.super.getAbsolutePath() } - - /** Gets the encoding of this XML file. */ - string getEncoding() { xmlEncoding(this, result) } - - /** Gets the XML file itself. */ - override XmlFile getFile() { result = this } - - /** Gets a top-most element in an XML file. */ - XmlElement getARootElement() { result = this.getAChild() } - - /** Gets a DTD associated with this XML file. */ - XmlDtd getADtd() { xmlDTDs(result, _, _, _, this) } -} - -/** - * An XML document type definition (DTD). - * - * Example: - * - * ``` - * <!ELEMENT person (firstName, lastName?)> - * <!ELEMENT firstName (#PCDATA)> - * <!ELEMENT lastName (#PCDATA)> - * ``` - */ -class XmlDtd extends XmlLocatable, @xmldtd { - /** Gets the name of the root element of this DTD. */ - string getRoot() { xmlDTDs(this, result, _, _, _) } - - /** Gets the public ID of this DTD. */ - string getPublicId() { xmlDTDs(this, _, result, _, _) } - - /** Gets the system ID of this DTD. */ - string getSystemId() { xmlDTDs(this, _, _, result, _) } - - /** Holds if this DTD is public. */ - predicate isPublic() { not xmlDTDs(this, _, "", _, _) } - - /** Gets the parent of this DTD. */ - XmlParent getParent() { xmlDTDs(this, _, _, _, result) } - - override string toString() { - this.isPublic() and - result = this.getRoot() + " PUBLIC '" + this.getPublicId() + "' '" + this.getSystemId() + "'" - or - not this.isPublic() and - result = this.getRoot() + " SYSTEM '" + this.getSystemId() + "'" + predicate xmlElements_( + XmlElementBase e, string name, XmlParentBase parent, int idx, XmlFileBase file + ) { + xmlElements(e, name, parent, idx, file) } -} - -/** - * An XML element in an XML file. - * - * Example: - * - * ``` - * <manifest xmlns:android="http://schemas.android.com/apk/res/android" - * package="com.example.exampleapp" android:versionCode="1"> - * </manifest> - * ``` - */ -class XmlElement extends @xmlelement, XmlParent, XmlLocatable { - /** Holds if this XML element has the given `name`. */ - predicate hasName(string name) { name = this.getName() } - - /** Gets the name of this XML element. */ - override string getName() { xmlElements(this, result, _, _, _) } - /** Gets the XML file in which this XML element occurs. */ - override XmlFile getFile() { xmlElements(this, _, _, _, result) } + class XmlAttributeBase = @xmlattribute; - /** Gets the parent of this XML element. */ - XmlParent getParent() { xmlElements(this, _, result, _, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getIndex() { xmlElements(this, _, _, result, _) } - - /** Holds if this XML element has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this XML element, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the index of this XML element among its parent's children. */ - int getElementPositionIndex() { xmlElements(this, _, _, result, _) } - - /** Gets the depth of this element within the XML file tree structure. */ - override int getDepth() { result = this.getParent().getDepth() + 1 } - - /** Gets an XML attribute of this XML element. */ - XmlAttribute getAnAttribute() { result.getElement() = this } - - /** Gets the attribute with the specified `name`, if any. */ - XmlAttribute getAttribute(string name) { result.getElement() = this and result.getName() = name } - - /** Holds if this XML element has an attribute with the specified `name`. */ - predicate hasAttribute(string name) { exists(this.getAttribute(name)) } - - /** Gets the value of the attribute with the specified `name`, if any. */ - string getAttributeValue(string name) { result = this.getAttribute(name).getValue() } - - /** Gets a printable representation of this XML element. */ - override string toString() { result = this.getName() } -} - -/** - * An attribute that occurs inside an XML element. - * - * Examples: - * - * ``` - * package="com.example.exampleapp" - * android:versionCode="1" - * ``` - */ -class XmlAttribute extends @xmlattribute, XmlLocatable { - /** Gets the name of this attribute. */ - string getName() { xmlAttrs(this, _, result, _, _, _) } - - /** Gets the XML element to which this attribute belongs. */ - XmlElement getElement() { xmlAttrs(this, result, _, _, _, _) } - - /** Holds if this attribute has a namespace. */ - predicate hasNamespace() { xmlHasNs(this, _, _) } - - /** Gets the namespace of this attribute, if any. */ - XmlNamespace getNamespace() { xmlHasNs(this, result, _) } - - /** Gets the value of this attribute. */ - string getValue() { xmlAttrs(this, _, _, result, _, _) } + predicate xmlAttrs_( + XmlAttributeBase e, XmlElementBase elementid, string name, string value, int idx, + XmlFileBase file + ) { + xmlAttrs(e, elementid, name, value, idx, file) + } - /** Gets a printable representation of this XML attribute. */ - override string toString() { result = this.getName() + "=" + this.getValue() } -} + class XmlNamespaceBase = @xmlnamespace; -/** - * A namespace used in an XML file. - * - * Example: - * - * ``` - * xmlns:android="http://schemas.android.com/apk/res/android" - * ``` - */ -class XmlNamespace extends XmlLocatable, @xmlnamespace { - /** Gets the prefix of this namespace. */ - string getPrefix() { xmlNs(this, result, _, _) } + predicate xmlNs_(XmlNamespaceBase e, string prefixName, string uri, XmlFileBase file) { + xmlNs(e, prefixName, uri, file) + } - /** Gets the URI of this namespace. */ - string getUri() { xmlNs(this, _, result, _) } + predicate xmlHasNs_(XmlNamespaceableBase e, XmlNamespaceBase ns, XmlFileBase file) { + xmlHasNs(e, ns, file) + } - /** Holds if this namespace has no prefix. */ - predicate isDefault() { this.getPrefix() = "" } + class XmlCommentBase = @xmlcomment; - override string toString() { - this.isDefault() and result = this.getUri() - or - not this.isDefault() and result = this.getPrefix() + ":" + this.getUri() + predicate xmlComments_(XmlCommentBase e, string text, XmlParentBase parent, XmlFileBase file) { + xmlComments(e, text, parent, file) } -} - -/** - * A comment in an XML file. - * - * Example: - * - * ``` - * <!-- This is a comment. --> - * ``` - */ -class XmlComment extends @xmlcomment, XmlLocatable { - /** Gets the text content of this XML comment. */ - string getText() { xmlComments(this, result, _, _) } - /** Gets the parent of this XML comment. */ - XmlParent getParent() { xmlComments(this, _, result, _) } + class XmlCharactersBase = @xmlcharacters; - /** Gets a printable representation of this XML comment. */ - override string toString() { result = this.getText() } + predicate xmlChars_( + XmlCharactersBase e, string text, XmlParentBase parent, int idx, int isCDATA, XmlFileBase file + ) { + xmlChars(e, text, parent, idx, isCDATA, file) + } } -/** - * A sequence of characters that occurs between opening and - * closing tags of an XML element, excluding other elements. - * - * Example: - * - * ``` - * <content>This is a sequence of characters.</content> - * ``` - */ -class XmlCharacters extends @xmlcharacters, XmlLocatable { - /** Gets the content of this character sequence. */ - string getCharacters() { xmlChars(this, result, _, _, _, _) } - - /** Gets the parent of this character sequence. */ - XmlParent getParent() { xmlChars(this, _, result, _, _, _) } - - /** Holds if this character sequence is CDATA. */ - predicate isCDATA() { xmlChars(this, _, _, _, 1, _) } - - /** Gets a printable representation of this XML character sequence. */ - override string toString() { result = this.getCharacters() } -} +import Make<File, Location, Input> From 22ddf2129b8f40a21332c67e3aa4132f27c5f47f Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Tue, 19 Mar 2024 08:46:07 +0000 Subject: [PATCH 365/731] Ruby: remove isString from TSymbol --- ruby/ql/lib/codeql/ruby/ast/internal/Constant.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/lib/codeql/ruby/ast/internal/Constant.qll b/ruby/ql/lib/codeql/ruby/ast/internal/Constant.qll index c18474df099a..09fdd8ef2f2f 100644 --- a/ruby/ql/lib/codeql/ruby/ast/internal/Constant.qll +++ b/ruby/ql/lib/codeql/ruby/ast/internal/Constant.qll @@ -423,7 +423,7 @@ private module Cached { or s = any(StringComponentImpl c).getValue() } or - TSymbol(string s) { isString(_, s) or isSymbolExpr(_, s) } or + TSymbol(string s) { isSymbolExpr(_, s) } or TRegExp(string s, string flags) { isRegExp(_, s, flags) or From 42c5066cae49b6ff8e9c5aad31c7394d2135180d Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider <cornelius@github.com> Date: Tue, 19 Mar 2024 13:40:45 +0100 Subject: [PATCH 366/731] Upgrade to bazel 7.1 --- .bazelversion | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelversion b/.bazelversion index a8907c025d5f..a3fcc7121bba 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.0.2 +7.1.0 From 90db9b330f6291aad7ea56b2bdced31ce3909753 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Fri, 15 Mar 2024 15:37:03 +0100 Subject: [PATCH 367/731] C#: Add MaD source and sink test query to shared library. --- .../csharp/dataflow/internal/ExternalFlow.qll | 4 +- .../dataflow/internal/FlowSummaryImpl.qll | 8 +- .../dataflow/library/FlowSummaries.ql | 17 +++++ .../dataflow/internal/FlowSummaryImpl.qll | 75 +++++++++++++++++-- 4 files changed, 90 insertions(+), 14 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll index 5c985759b784..7e22351ee66d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -395,14 +395,14 @@ Declaration interpretElement( * A callable where there exists a MaD sink model that applies to it. */ class SinkCallable extends Callable { - SinkCallable() { SourceSinkInterpretationInput::sinkElement(this, _, _) } + SinkCallable() { SourceSinkInterpretationInput::sinkElement(this, _, _, _) } } /** * A callable where there exists a MaD source model that applies to it. */ class SourceCallable extends Callable { - SourceCallable() { SourceSinkInterpretationInput::sourceElement(this, _, _) } + SourceCallable() { SourceSinkInterpretationInput::sourceElement(this, _, _, _) } } cached diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index 19972a86ab6e..f1113e6e4379 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -160,20 +160,20 @@ module SourceSinkInterpretationInput implements class Element = Cs::Element; - predicate sourceElement(Element e, string output, string kind) { + predicate sourceElement(Element e, string output, string kind, Public::Provenance provenance) { exists( string namespace, string type, boolean subtypes, string name, string signature, string ext | - sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, _) and + sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance) and e = interpretElement(namespace, type, subtypes, name, signature, ext) ) } - predicate sinkElement(Element e, string input, string kind) { + predicate sinkElement(Element e, string input, string kind, Public::Provenance provenance) { exists( string namespace, string type, boolean subtypes, string name, string signature, string ext | - sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, _) and + sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance) and e = interpretElement(namespace, type, subtypes, name, signature, ext) ) } diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql index ee3ac53742ac..76f5c8f8840f 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql @@ -1,5 +1,6 @@ import shared.FlowSummaries import semmle.code.csharp.dataflow.internal.ExternalFlow +import semmle.code.csharp.dataflow.internal.FlowSummaryImpl::Private::External private class IncludeAllSummarizedCallable extends IncludeSummarizedCallable { IncludeAllSummarizedCallable() { exists(this) } @@ -9,3 +10,19 @@ private class IncludeNeutralSummarizedCallable extends RelevantNeutralCallable { /** Gets a string representing the callable in semi-colon separated format for use in flow summaries. */ final override string getCallableCsv() { result = asPartialNeutralModel(this) } } + +module TestSourceSinkInput implements TestSourceSinkInputSig { + class RelevantSourceCallable instanceof SourceCallable { + string getCallableCsv() { result = asPartialModel(this) } + + string toString() { result = super.toString() } + } + + class RelevantSinkCallable instanceof SinkCallable { + string getCallableCsv() { result = asPartialModel(this) } + + string toString() { result = super.toString() } + } +} + +import TestSourceSinkOutput<TestSourceSinkInput> diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index f3e840720ab9..19a33ec810ab 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -1468,13 +1468,13 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { * Holds if an external source specification exists for `n` with output specification * `output` and kind `kind`. */ - predicate sourceElement(Element n, string output, string kind); + predicate sourceElement(Element n, string output, string kind, Provenance provenance); /** * Holds if an external sink specification exists for `n` with input specification * `input` and kind `kind`. */ - predicate sinkElement(Element n, string input, string kind); + predicate sinkElement(Element n, string input, string kind, Provenance provenance); class SourceOrSinkElement extends Element; @@ -1529,8 +1529,8 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { private import SourceSinkInterpretationInput private predicate sourceSinkSpec(string spec) { - sourceElement(_, spec, _) or - sinkElement(_, spec, _) + sourceElement(_, spec, _, _) or + sinkElement(_, spec, _, _) } private module AccessPath = AccessPathSyntax::AccessPath<sourceSinkSpec/1>; @@ -1562,7 +1562,7 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { InterpretNode ref, SourceSinkAccessPath output, string kind ) { exists(SourceOrSinkElement e | - sourceElement(e, output, kind) and + sourceElement(e, output, kind, _) and if outputNeedsReferenceExt(output.getToken(0)) then e = ref.getCallTarget() else e = ref.asElement() @@ -1576,7 +1576,7 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { private predicate sinkElementRef(InterpretNode ref, SourceSinkAccessPath input, string kind) { exists(SourceOrSinkElement e | - sinkElement(e, input, kind) and + sinkElement(e, input, kind, _) and if inputNeedsReferenceExt(input.getToken(0)) then e = ref.getCallTarget() else e = ref.asElement() @@ -1691,6 +1691,63 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { interpretInput(input, input.getNumToken(), ref, node) ) } + + signature module TestSourceSinkInputSig { + /** + * A class or source elements relevant for testing. + */ + class RelevantSourceCallable instanceof SourceOrSinkElement { + /** Gets the string representation of this callable used by `source/1`. */ + string getCallableCsv(); + } + + /** + * A class or sink elements relevant for testing. + */ + class RelevantSinkCallable instanceof SourceOrSinkElement { + /** Gets the string representation of this callable used by `source/1`. */ + string getCallableCsv(); + } + } + + /** Provides query predicates for outputting a set of relevant sources and sinks. */ + module TestSourceSinkOutput<TestSourceSinkInputSig TestSourceSinkInput> { + private import TestSourceSinkInput + + /** + * Holds if there exists a relevant source callable with information roughly corresponding to `csv`. + * Used for testing. + * The syntax is: "namespace;type;overrides;name;signature;ext;outputspec;kind;provenance", + * ext is hardcoded to empty. + */ + query predicate source(string csv) { + exists(RelevantSourceCallable c, string output, string kind, Provenance provenance | + sourceElement(c, output, kind, provenance) and + csv = + c.getCallableCsv() // Callable information + + output + ";" // output + + kind + ";" // kind + + provenance // provenance + ) + } + + /** + * Holds if there exists a relevant sink callable with information roughly corresponding to `csv`. + * Used for testing. + * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;kind;provenance", + * ext is hardcoded to empty. + */ + query predicate sink(string csv) { + exists(RelevantSinkCallable c, string input, string kind, Provenance provenance | + sinkElement(c, input, kind, provenance) and + csv = + c.getCallableCsv() // Callable information + + input + ";" // input + + kind + ";" // kind + + provenance // provenance + ) + } + } } } @@ -1746,7 +1803,8 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { } /** - * A query predicate for outputting flow summaries in semi-colon separated format in QL tests. + * Holds if there exists a relevant summary callable with information roughly corresponding to `csv`. + * Used for testing. * The syntax is: "namespace;type;overrides;name;signature;ext;inputspec;outputspec;kind;provenance", * ext is hardcoded to empty. */ @@ -1766,7 +1824,8 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { } /** - * Holds if a neutral model `csv` exists (semi-colon separated format). Used for testing purposes. + * Holds if there exists a relevant neutral callable with information roughly corresponding to `csv`. + * Used for testing. * The syntax is: "namespace;type;name;signature;kind;provenance"", */ query predicate neutral(string csv) { From f36b48346eaa4343e4dc143cee73b58dfda77004 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 12:50:43 +0000 Subject: [PATCH 368/731] C++: Accept test changes. --- .../ir/range-analysis/SimpleRangeAnalysis_tests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp index 7b359a046d81..cd392210d479 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp @@ -1014,7 +1014,7 @@ void test_overflow() { if ((x + y) <= 512) { range(x); // $ range===2147483647 range(y); // $ range===256 - range(x + y); // $ range===-2147483393 + range(x + y); // $ range=<=2147483903 overflow=+ } } From a97891cbc131bb7fc94fbede286832a675db2cba Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 12:56:15 +0000 Subject: [PATCH 369/731] C++: Add QLDoc to 'getNumberOfBinaryOperands' (and rename it to 'getNumberOfNestedBinaryOperands'). --- .../ir/implementation/raw/internal/TranslatedElement.qll | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index e96959f5a687..d258056f11ff 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -40,9 +40,14 @@ IRTempVariable getIRTempVariable(Locatable ast, TempVariableTag tag) { result.getTag() = tag } +/** Gets an operand of `binOp`. */ private Expr getAnOperand(BinaryOperation binOp) { result = binOp.getAnOperand() } -private int getNumberOfBinaryOperands(BinaryOperation binOp) { +/** + * Gets the number of nested operands of `binOp`. For example, + * `getNumberOfNestedBinaryOperands((1 + 2) + 3))` is `3`. + */ +private int getNumberOfNestedBinaryOperands(BinaryOperation binOp) { result = count(getAnOperand*(binOp)) } @@ -60,7 +65,7 @@ predicate isIRConstant(Expr expr) { // But to avoid creating an outrageous amount of IR from very large // constant expressions we fall back to constant folding if the operation // has more than 50 operands (i.e., 1 + 2 + 3 + 4 + ... + 50) - if expr instanceof BinaryOperation then getNumberOfBinaryOperands(expr) > 50 else any() + if expr instanceof BinaryOperation then getNumberOfNestedBinaryOperands(expr) > 50 else any() } // Pulled out for performance. See From a88d8b260d516ca279ef83cee4d4b4becf662026 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 13:17:49 +0000 Subject: [PATCH 370/731] C++: Only ignore constant folding for certain binary operations. --- .../raw/internal/TranslatedElement.qll | 24 +- .../library-tests/ir/ir/PrintAST.expected | 386 +++++++++--------- .../library-tests/ir/ir/aliased_ir.expected | 60 +-- cpp/ql/test/library-tests/ir/ir/ir.cpp | 14 +- .../ir/ir/operand_locations.expected | 30 +- .../test/library-tests/ir/ir/raw_ir.expected | 71 +--- 6 files changed, 268 insertions(+), 317 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index d258056f11ff..51e3311a9a2b 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -40,15 +40,25 @@ IRTempVariable getIRTempVariable(Locatable ast, TempVariableTag tag) { result.getTag() = tag } -/** Gets an operand of `binOp`. */ -private Expr getAnOperand(BinaryOperation binOp) { result = binOp.getAnOperand() } +/** Gets an operand of `op`. */ +private Expr getAnOperand(Operation op) { result = op.getAnOperand() } /** - * Gets the number of nested operands of `binOp`. For example, + * Gets the number of nested operands of `op`. For example, * `getNumberOfNestedBinaryOperands((1 + 2) + 3))` is `3`. */ -private int getNumberOfNestedBinaryOperands(BinaryOperation binOp) { - result = count(getAnOperand*(binOp)) +private int getNumberOfNestedBinaryOperands(Operation op) { result = count(getAnOperand*(op)) } + +/** + * Holds if `op` should not be translated to a `ConstantInstruction` as part of + * IR generation, even if the value of `op` is constant. + */ +private predicate ignoreConstantValue(Operation op) { + op instanceof BitwiseAndExpr + or + op instanceof BitwiseOrExpr + or + op instanceof BitwiseXorExpr } /** @@ -58,14 +68,14 @@ private int getNumberOfNestedBinaryOperands(BinaryOperation binOp) { */ predicate isIRConstant(Expr expr) { exists(expr.getValue()) and - // We avoid constant folding binary operations since it's often useful to + // We avoid constant folding certain operations since it's often useful to // mark one of those as a source in dataflow, and if the operation is // constant folded it's not possible to mark its operands as a source (or // sink). // But to avoid creating an outrageous amount of IR from very large // constant expressions we fall back to constant folding if the operation // has more than 50 operands (i.e., 1 + 2 + 3 + 4 + ... + 50) - if expr instanceof BinaryOperation then getNumberOfNestedBinaryOperands(expr) > 50 else any() + if ignoreConstantValue(expr) then getNumberOfNestedBinaryOperands(expr) > 50 else any() } // Pulled out for performance. See diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 11ca89a3b454..18bce41d0b23 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -18674,45 +18674,45 @@ ir.cpp: # 2381| <params>: # 2381| getEntryPoint(): [BlockStmt] { ... } # 2382| getStmt(0): [ReturnStmt] return ... -# 2382| getExpr(): [AddExpr] ... + ... +# 2382| getExpr(): [BitwiseXorExpr] ... ^ ... # 2382| Type = [IntType] int -# 2382| Value = [AddExpr] 2 +# 2382| Value = [BitwiseXorExpr] 3 # 2382| ValueCategory = prvalue # 2382| getLeftOperand(): [Literal] 1 # 2382| Type = [IntType] int # 2382| Value = [Literal] 1 # 2382| ValueCategory = prvalue -# 2382| getRightOperand(): [Literal] 1 +# 2382| getRightOperand(): [Literal] 2 # 2382| Type = [IntType] int -# 2382| Value = [Literal] 1 +# 2382| Value = [Literal] 2 # 2382| ValueCategory = prvalue # 2392| [TopLevelFunction] int large_operation_should_be_constant_folded() # 2392| <params>: # 2392| getEntryPoint(): [BlockStmt] { ... } # 2393| getStmt(0): [ReturnStmt] return ... -# 2393| getExpr(): [AddExpr] ... + ... +# 2393| getExpr(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 64 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 32 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 16 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18722,9 +18722,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18736,19 +18736,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18758,9 +18758,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18772,31 +18772,31 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18806,9 +18806,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18820,19 +18820,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18842,9 +18842,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18856,43 +18856,43 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 16 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18902,9 +18902,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18916,19 +18916,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18938,9 +18938,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18952,31 +18952,31 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -18986,9 +18986,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19000,19 +19000,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19022,9 +19022,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19036,55 +19036,55 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 16 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 16 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 32 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 16 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19094,9 +19094,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19108,19 +19108,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19130,9 +19130,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19144,31 +19144,31 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19178,9 +19178,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19192,19 +19192,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19214,9 +19214,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19228,43 +19228,43 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 16 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19274,9 +19274,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19288,19 +19288,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19310,9 +19310,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19324,31 +19324,31 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 8 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19358,9 +19358,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19372,19 +19372,19 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 4 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [AddExpr] ... + ... +# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19394,9 +19394,9 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [Literal] 1 # 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [AddExpr] ... + ... +# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... # 2393| Type = [IntType] int -# 2393| Value = [AddExpr] 2 +# 2393| Value = [BitwiseXorExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand(): [Literal] 1 # 2393| Type = [IntType] int @@ -19408,47 +19408,47 @@ ir.cpp: # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 2 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 4 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 8 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 16 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 16 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 32 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 32 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue # 2393| getExpr().getFullyConverted(): [ParenthesisExpr] (...) # 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 64 +# 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 2efc51f1bcd8..588aa16238b3 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -1457,15 +1457,13 @@ ir.cpp: # 43| m43_3(unknown) = InitializeNonLocal : # 43| m43_4(unknown) = Chi : total:m43_2, partial:m43_3 # 44| r44_1(glval<int>) = VariableAddress[x] : -# 44| r44_2(int) = Constant[5] : -# 44| r44_3(int) = Constant[12] : -# 44| r44_4(int) = Add : r44_2, r44_3 -# 44| m44_5(int) = Store[x] : &:r44_1, r44_4 +# 44| r44_2(int) = Constant[17] : +# 44| m44_3(int) = Store[x] : &:r44_1, r44_2 # 45| r45_1(glval<short>) = VariableAddress[y] : # 45| r45_2(short) = Constant[7] : # 45| m45_3(short) = Store[y] : &:r45_1, r45_2 # 46| r46_1(glval<int>) = VariableAddress[x] : -# 46| r46_2(int) = Load[x] : &:r46_1, m44_5 +# 46| r46_2(int) = Load[x] : &:r46_1, m44_3 # 46| r46_3(glval<short>) = VariableAddress[y] : # 46| r46_4(short) = Load[y] : &:r46_3, m45_3 # 46| r46_5(int) = Convert : r46_4 @@ -1474,7 +1472,7 @@ ir.cpp: # 46| r46_8(glval<short>) = VariableAddress[y] : # 46| m46_9(short) = Store[y] : &:r46_8, r46_7 # 47| r47_1(glval<int>) = VariableAddress[x] : -# 47| r47_2(int) = Load[x] : &:r47_1, m44_5 +# 47| r47_2(int) = Load[x] : &:r47_1, m44_3 # 47| r47_3(glval<short>) = VariableAddress[y] : # 47| r47_4(short) = Load[y] : &:r47_3, m46_9 # 47| r47_5(int) = Convert : r47_4 @@ -6104,30 +6102,14 @@ ir.cpp: # 913| m913_6(int) = InitializeParameter[x] : &:r913_5 # 914| r914_1(glval<bool>) = VariableAddress[a] : # 914| r914_2(bool) = Constant[1] : -# 914| v914_3(void) = ConditionalBranch : r914_2 -#-----| False -> Block 4 -#-----| True -> Block 2 - -# 914| Block 1 -# 914| r914_4(glval<bool>) = VariableAddress[#temp914:12] : -# 914| r914_5(bool) = Constant[1] : -# 914| m914_6(bool) = Store[#temp914:12] : &:r914_4, r914_5 -# 914| r914_7(glval<bool>) = VariableAddress[#temp914:12] : -# 914| r914_8(bool) = Load[#temp914:12] : &:r914_7, m914_6 -# 914| m914_9(bool) = Store[a] : &:r914_1, r914_8 -# 915| r915_1(glval<int>) = VariableAddress[b] : -# 915| r915_2(bool) = Constant[1] : -# 915| v915_3(void) = ConditionalBranch : r915_2 -#-----| False -> Block 4 -#-----| True -> Block 3 - -# 914| Block 2 -# 914| r914_10(bool) = Constant[1] : -# 914| v914_11(void) = ConditionalBranch : r914_10 -#-----| False -> Block 4 +# 914| m914_3(bool) = Store[a] : &:r914_1, r914_2 +# 915| r915_1(glval<int>) = VariableAddress[b] : +# 915| r915_2(bool) = Constant[1] : +# 915| v915_3(void) = ConditionalBranch : r915_2 +#-----| False -> Block 2 #-----| True -> Block 1 -# 915| Block 3 +# 915| Block 1 # 915| r915_4(glval<int>) = VariableAddress[x] : # 915| r915_5(int) = Load[x] : &:r915_4, m913_6 # 915| r915_6(glval<int>) = VariableAddress[#temp915:11] : @@ -6140,7 +6122,7 @@ ir.cpp: # 913| v913_8(void) = AliasedUse : m913_3 # 913| v913_9(void) = ExitFunction : -# 913| Block 4 +# 913| Block 2 # 913| v913_10(void) = Unreached : # 949| void OperatorNew() @@ -7736,17 +7718,15 @@ ir.cpp: # 1215| r1215_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1215| r1215_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_4, m1214_8 # 1215| r1215_6(int) = Constant[3] : -# 1215| r1215_7(int) = Constant[0] : -# 1215| r1215_8(int) = Add : r1215_6, r1215_7 -# 1215| r1215_9(int) = Constant[2] : -# 1215| r1215_10(int) = Constant[1] : -# 1215| r1215_11(int) = Constant[0] : -# 1215| r1215_12(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_8, 3:r1215_9, 4:r1215_10, 5:r1215_11 -# 1215| m1215_13(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_12 +# 1215| r1215_7(int) = Constant[2] : +# 1215| r1215_8(int) = Constant[1] : +# 1215| r1215_9(int) = Constant[0] : +# 1215| r1215_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_6, 3:r1215_7, 4:r1215_8, 5:r1215_9 +# 1215| m1215_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_10 # 1216| r1216_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| r1216_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1216_1, m1214_8 # 1216| r1216_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : -# 1216| r1216_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1216_3, m1215_13 +# 1216| r1216_4(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1216_3, m1215_11 # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| m1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 @@ -15163,8 +15143,8 @@ ir.cpp: # 2381| m2381_4(unknown) = Chi : total:m2381_2, partial:m2381_3 # 2382| r2382_1(glval<int>) = VariableAddress[#return] : # 2382| r2382_2(int) = Constant[1] : -# 2382| r2382_3(int) = Constant[1] : -# 2382| r2382_4(int) = Add : r2382_2, r2382_3 +# 2382| r2382_3(int) = Constant[2] : +# 2382| r2382_4(int) = BitXor : r2382_2, r2382_3 # 2382| m2382_5(int) = Store[#return] : &:r2382_1, r2382_4 # 2381| r2381_5(glval<int>) = VariableAddress[#return] : # 2381| v2381_6(void) = ReturnValue : &:r2381_5, m2382_5 @@ -15178,7 +15158,7 @@ ir.cpp: # 2392| m2392_3(unknown) = InitializeNonLocal : # 2392| m2392_4(unknown) = Chi : total:m2392_2, partial:m2392_3 # 2393| r2393_1(glval<int>) = VariableAddress[#return] : -# 2393| r2393_2(int) = Constant[64] : +# 2393| r2393_2(int) = Constant[0] : # 2393| m2393_3(int) = Store[#return] : &:r2393_1, r2393_2 # 2392| r2392_5(glval<int>) = VariableAddress[#return] : # 2392| v2392_6(void) = ReturnValue : &:r2392_5, m2393_3 diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index a195dcd5aa42..2f51b63dff1b 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2379,15 +2379,15 @@ namespace return_routine_type { } int small_operation_should_not_be_constant_folded() { - return 1 + 1; + return 1 ^ 2; } -#define BINOP2(x) (x + x) -#define BINOP4(x) (BINOP2(x) + BINOP2(x)) -#define BINOP8(x) (BINOP4(x) + BINOP4(x)) -#define BINOP16(x) (BINOP8(x) + BINOP8(x)) -#define BINOP32(x) (BINOP16(x) + BINOP16(x)) -#define BINOP64(x) (BINOP32(x) + BINOP32(x)) +#define BINOP2(x) (x ^ x) +#define BINOP4(x) (BINOP2(x) ^ BINOP2(x)) +#define BINOP8(x) (BINOP4(x) ^ BINOP4(x)) +#define BINOP16(x) (BINOP8(x) ^ BINOP8(x)) +#define BINOP32(x) (BINOP16(x) ^ BINOP16(x)) +#define BINOP64(x) (BINOP32(x) ^ BINOP32(x)) int large_operation_should_be_constant_folded() { return BINOP64(1); diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 9b9c4888092b..add303951302 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -1668,15 +1668,13 @@ | ir.cpp:43:6:43:8 | ChiTotal | total:m43_2 | | ir.cpp:43:6:43:8 | SideEffect | m43_3 | | ir.cpp:44:9:44:9 | Address | &:r44_1 | -| ir.cpp:44:13:44:13 | Left | r44_2 | -| ir.cpp:44:13:44:18 | StoreValue | r44_4 | -| ir.cpp:44:17:44:18 | Right | r44_3 | +| ir.cpp:44:13:44:18 | StoreValue | r44_2 | | ir.cpp:45:11:45:11 | Address | &:r45_1 | | ir.cpp:45:15:45:15 | StoreValue | r45_2 | | ir.cpp:46:5:46:5 | Address | &:r46_8 | | ir.cpp:46:9:46:9 | Address | &:r46_1 | | ir.cpp:46:9:46:9 | Left | r46_2 | -| ir.cpp:46:9:46:9 | Load | m44_5 | +| ir.cpp:46:9:46:9 | Load | m44_3 | | ir.cpp:46:9:46:13 | StoreValue | r46_7 | | ir.cpp:46:9:46:13 | Unary | r46_6 | | ir.cpp:46:13:46:13 | Address | &:r46_3 | @@ -1686,7 +1684,7 @@ | ir.cpp:47:5:47:5 | Address | &:r47_7 | | ir.cpp:47:9:47:9 | Address | &:r47_1 | | ir.cpp:47:9:47:9 | Left | r47_2 | -| ir.cpp:47:9:47:9 | Load | m44_5 | +| ir.cpp:47:9:47:9 | Load | m44_3 | | ir.cpp:47:9:47:13 | StoreValue | r47_6 | | ir.cpp:47:13:47:13 | Address | &:r47_3 | | ir.cpp:47:13:47:13 | Load | m46_9 | @@ -5229,13 +5227,7 @@ | ir.cpp:913:6:913:23 | SideEffect | m913_3 | | ir.cpp:913:29:913:29 | Address | &:r913_5 | | ir.cpp:914:8:914:8 | Address | &:r914_1 | -| ir.cpp:914:12:914:15 | Condition | r914_2 | -| ir.cpp:914:12:914:23 | Address | &:r914_4 | -| ir.cpp:914:12:914:23 | Address | &:r914_7 | -| ir.cpp:914:12:914:23 | Load | m914_6 | -| ir.cpp:914:12:914:23 | StoreValue | r914_5 | -| ir.cpp:914:12:914:23 | StoreValue | r914_8 | -| ir.cpp:914:20:914:23 | Condition | r914_10 | +| ir.cpp:914:12:914:23 | StoreValue | r914_2 | | ir.cpp:915:7:915:7 | Address | &:r915_1 | | ir.cpp:915:11:915:16 | Condition | r915_2 | | ir.cpp:915:11:915:24 | Address | &:r915_6 | @@ -6529,26 +6521,24 @@ | ir.cpp:1214:12:1214:12 | Load | m1213_7 | | ir.cpp:1214:12:1214:12 | StoreValue | r1214_2 | | ir.cpp:1215:18:1215:28 | Address | &:r1215_1 | -| ir.cpp:1215:32:1215:78 | Arg(2) | 2:r1215_8 | -| ir.cpp:1215:32:1215:78 | StoreValue | r1215_12 | +| ir.cpp:1215:32:1215:78 | Arg(2) | 2:r1215_6 | +| ir.cpp:1215:32:1215:78 | StoreValue | r1215_10 | | ir.cpp:1215:56:1215:58 | Address | &:r1215_2 | | ir.cpp:1215:56:1215:58 | Arg(0) | 0:r1215_3 | | ir.cpp:1215:56:1215:58 | Load | m1214_8 | | ir.cpp:1215:61:1215:63 | Address | &:r1215_4 | | ir.cpp:1215:61:1215:63 | Arg(1) | 1:r1215_5 | | ir.cpp:1215:61:1215:63 | Load | m1214_8 | -| ir.cpp:1215:66:1215:66 | Left | r1215_6 | -| ir.cpp:1215:68:1215:68 | Right | r1215_7 | -| ir.cpp:1215:71:1215:71 | Arg(3) | 3:r1215_9 | -| ir.cpp:1215:74:1215:74 | Arg(4) | 4:r1215_10 | -| ir.cpp:1215:77:1215:77 | Arg(5) | 5:r1215_11 | +| ir.cpp:1215:71:1215:71 | Arg(3) | 3:r1215_7 | +| ir.cpp:1215:74:1215:74 | Arg(4) | 4:r1215_8 | +| ir.cpp:1215:77:1215:77 | Arg(5) | 5:r1215_9 | | ir.cpp:1216:3:1216:5 | Address | &:r1216_6 | | ir.cpp:1216:9:1216:11 | Address | &:r1216_1 | | ir.cpp:1216:9:1216:11 | Left | r1216_2 | | ir.cpp:1216:9:1216:11 | Load | m1214_8 | | ir.cpp:1216:9:1216:25 | StoreValue | r1216_5 | | ir.cpp:1216:15:1216:25 | Address | &:r1216_3 | -| ir.cpp:1216:15:1216:25 | Load | m1215_13 | +| ir.cpp:1216:15:1216:25 | Load | m1215_11 | | ir.cpp:1216:15:1216:25 | Right | r1216_4 | | ir.cpp:1221:5:1221:21 | Address | &:r1221_7 | | ir.cpp:1221:5:1221:21 | ChiPartial | partial:m1221_3 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 1a4c34b9fc72..b721a11e4849 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -1357,10 +1357,8 @@ ir.cpp: # 43| mu43_2(unknown) = AliasedDefinition : # 43| mu43_3(unknown) = InitializeNonLocal : # 44| r44_1(glval<int>) = VariableAddress[x] : -# 44| r44_2(int) = Constant[5] : -# 44| r44_3(int) = Constant[12] : -# 44| r44_4(int) = Add : r44_2, r44_3 -# 44| mu44_5(int) = Store[x] : &:r44_1, r44_4 +# 44| r44_2(int) = Constant[17] : +# 44| mu44_3(int) = Store[x] : &:r44_1, r44_2 # 45| r45_1(glval<short>) = VariableAddress[y] : # 45| r45_2(short) = Constant[7] : # 45| mu45_3(short) = Store[y] : &:r45_1, r45_2 @@ -5749,39 +5747,14 @@ ir.cpp: # 913| mu913_5(int) = InitializeParameter[x] : &:r913_4 # 914| r914_1(glval<bool>) = VariableAddress[a] : # 914| r914_2(bool) = Constant[1] : -# 914| v914_3(void) = ConditionalBranch : r914_2 -#-----| False -> Block 1 -#-----| True -> Block 4 - -# 914| Block 1 -# 914| r914_4(glval<bool>) = VariableAddress[#temp914:12] : -# 914| r914_5(bool) = Constant[0] : -# 914| mu914_6(bool) = Store[#temp914:12] : &:r914_4, r914_5 -#-----| Goto -> Block 2 - -# 914| Block 2 -# 914| r914_7(glval<bool>) = VariableAddress[#temp914:12] : -# 914| r914_8(bool) = Load[#temp914:12] : &:r914_7, ~m? -# 914| mu914_9(bool) = Store[a] : &:r914_1, r914_8 -# 915| r915_1(glval<int>) = VariableAddress[b] : -# 915| r915_2(bool) = Constant[1] : -# 915| v915_3(void) = ConditionalBranch : r915_2 -#-----| False -> Block 7 -#-----| True -> Block 6 - -# 914| Block 3 -# 914| r914_10(glval<bool>) = VariableAddress[#temp914:12] : -# 914| r914_11(bool) = Constant[1] : -# 914| mu914_12(bool) = Store[#temp914:12] : &:r914_10, r914_11 -#-----| Goto -> Block 2 - -# 914| Block 4 -# 914| r914_13(bool) = Constant[1] : -# 914| v914_14(void) = ConditionalBranch : r914_13 -#-----| False -> Block 1 -#-----| True -> Block 3 +# 914| mu914_3(bool) = Store[a] : &:r914_1, r914_2 +# 915| r915_1(glval<int>) = VariableAddress[b] : +# 915| r915_2(bool) = Constant[1] : +# 915| v915_3(void) = ConditionalBranch : r915_2 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 915| Block 5 +# 915| Block 1 # 915| r915_4(glval<int>) = VariableAddress[#temp915:11] : # 915| r915_5(int) = Load[#temp915:11] : &:r915_4, ~m? # 915| mu915_6(int) = Store[b] : &:r915_1, r915_5 @@ -5790,19 +5763,19 @@ ir.cpp: # 913| v913_7(void) = AliasedUse : ~m? # 913| v913_8(void) = ExitFunction : -# 915| Block 6 +# 915| Block 2 # 915| r915_7(glval<int>) = VariableAddress[x] : # 915| r915_8(int) = Load[x] : &:r915_7, ~m? # 915| r915_9(glval<int>) = VariableAddress[#temp915:11] : # 915| mu915_10(int) = Store[#temp915:11] : &:r915_9, r915_8 -#-----| Goto -> Block 5 +#-----| Goto -> Block 1 -# 915| Block 7 +# 915| Block 3 # 915| r915_11(glval<int>) = VariableAddress[x] : # 915| r915_12(int) = Load[x] : &:r915_11, ~m? # 915| r915_13(glval<int>) = VariableAddress[#temp915:11] : # 915| mu915_14(int) = Store[#temp915:11] : &:r915_13, r915_12 -#-----| Goto -> Block 5 +#-----| Goto -> Block 1 # 949| void OperatorNew() # 949| Block 0 @@ -7293,13 +7266,11 @@ ir.cpp: # 1215| r1215_4(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1215| r1215_5(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1215_4, ~m? # 1215| r1215_6(int) = Constant[3] : -# 1215| r1215_7(int) = Constant[0] : -# 1215| r1215_8(int) = Add : r1215_6, r1215_7 -# 1215| r1215_9(int) = Constant[2] : -# 1215| r1215_10(int) = Constant[1] : -# 1215| r1215_11(int) = Constant[0] : -# 1215| r1215_12(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_8, 3:r1215_9, 4:r1215_10, 5:r1215_11 -# 1215| mu1215_13(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_12 +# 1215| r1215_7(int) = Constant[2] : +# 1215| r1215_8(int) = Constant[1] : +# 1215| r1215_9(int) = Constant[0] : +# 1215| r1215_10(__attribute((vector_size(16))) int) = BuiltIn[__builtin_shufflevector] : 0:r1215_3, 1:r1215_5, 2:r1215_6, 3:r1215_7, 4:r1215_8, 5:r1215_9 +# 1215| mu1215_11(__attribute((vector_size(16UL))) int) = Store[vi4_shuffle] : &:r1215_1, r1215_10 # 1216| r1216_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| r1216_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1216_1, ~m? # 1216| r1216_3(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : @@ -14013,8 +13984,8 @@ ir.cpp: # 2381| mu2381_3(unknown) = InitializeNonLocal : # 2382| r2382_1(glval<int>) = VariableAddress[#return] : # 2382| r2382_2(int) = Constant[1] : -# 2382| r2382_3(int) = Constant[1] : -# 2382| r2382_4(int) = Add : r2382_2, r2382_3 +# 2382| r2382_3(int) = Constant[2] : +# 2382| r2382_4(int) = BitXor : r2382_2, r2382_3 # 2382| mu2382_5(int) = Store[#return] : &:r2382_1, r2382_4 # 2381| r2381_4(glval<int>) = VariableAddress[#return] : # 2381| v2381_5(void) = ReturnValue : &:r2381_4, ~m? @@ -14027,7 +13998,7 @@ ir.cpp: # 2392| mu2392_2(unknown) = AliasedDefinition : # 2392| mu2392_3(unknown) = InitializeNonLocal : # 2393| r2393_1(glval<int>) = VariableAddress[#return] : -# 2393| r2393_2(int) = Constant[64] : +# 2393| r2393_2(int) = Constant[0] : # 2393| mu2393_3(int) = Store[#return] : &:r2393_1, r2393_2 # 2392| r2392_4(glval<int>) = VariableAddress[#return] : # 2392| v2392_5(void) = ReturnValue : &:r2392_4, ~m? From 54262a53c30a952ebebdd1be7a3028807db7faa2 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 13:18:01 +0000 Subject: [PATCH 371/731] Revert "C++: Accept test changes." This reverts commit f36b48346eaa4343e4dc143cee73b58dfda77004. --- .../ir/range-analysis/SimpleRangeAnalysis_tests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp index cd392210d479..7b359a046d81 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp @@ -1014,7 +1014,7 @@ void test_overflow() { if ((x + y) <= 512) { range(x); // $ range===2147483647 range(y); // $ range===256 - range(x + y); // $ range=<=2147483903 overflow=+ + range(x + y); // $ range===-2147483393 } } From 5b37ee4ec79ee9df2fc53d86712e218d2a634982 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Tue, 19 Mar 2024 11:37:53 +0100 Subject: [PATCH 372/731] Re-factor TestOutput into a param module. --- .../dataflow/library/FlowSummaries.ql | 17 +++-- .../dataflow/library/FlowSummariesFiltered.ql | 12 ++- .../EntityFramework/FlowSummaries.ql | 8 +- csharp/ql/test/shared/FlowSummaries.qll | 7 +- .../dataflow/internal/FlowSummaryImpl.qll | 75 ++++++++++++------- 5 files changed, 79 insertions(+), 40 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql index 76f5c8f8840f..b09721b4f3f6 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql @@ -1,14 +1,17 @@ import shared.FlowSummaries import semmle.code.csharp.dataflow.internal.ExternalFlow -import semmle.code.csharp.dataflow.internal.FlowSummaryImpl::Private::External +import External -private class IncludeAllSummarizedCallable extends IncludeSummarizedCallable { - IncludeAllSummarizedCallable() { exists(this) } +module TestSummaryInput implements TestSummaryInputSig { + class RelevantSummarizedCallable = IncludeSummarizedCallable; } -private class IncludeNeutralSummarizedCallable extends RelevantNeutralCallable { - /** Gets a string representing the callable in semi-colon separated format for use in flow summaries. */ - final override string getCallableCsv() { result = asPartialNeutralModel(this) } +module TestNeutralInput implements TestNeutralInputSig { + class RelevantNeutralCallable instanceof NeutralCallable { + final string getCallableCsv() { result = asPartialNeutralModel(this) } + + string toString() { result = super.toString() } + } } module TestSourceSinkInput implements TestSourceSinkInputSig { @@ -25,4 +28,6 @@ module TestSourceSinkInput implements TestSourceSinkInputSig { } } +import TestSummaryOutput<TestSummaryInput> +import TestNeutralOutput<TestNeutralInput> import TestSourceSinkOutput<TestSourceSinkInput> diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql index c3584afcbc33..fe3a931b451e 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql @@ -1,9 +1,13 @@ import shared.FlowSummaries private import semmle.code.csharp.dataflow.internal.ExternalFlow -class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable { - IncludeFilteredSummarizedCallable() { exists(this) } +module TestSummaryInput implements TestSummaryInputSig { + class RelevantSummarizedCallable = IncludeSummarizedCallable; +} + +import TestSummaryOutput<TestSummaryInput> +class IncludeFilteredSummarizedCallable extends RelevantSummarizedCallable { /** * Holds if flow is propagated between `input` and `output` and * if there is no summary for a callable in a `base` class or interface @@ -12,10 +16,10 @@ class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable { override predicate relevantSummary( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { - super.propagatesFlow(input, output, preservesValue) and + this.(SummarizedCallableImpl).propagatesFlow(input, output, preservesValue) and not exists(IncludeSummarizedCallable rsc | isBaseCallableOrPrototype(rsc) and - rsc.propagatesFlow(input, output, preservesValue) and + rsc.(SummarizedCallableImpl).propagatesFlow(input, output, preservesValue) and this.(UnboundCallable).overridesOrImplementsUnbound(rsc) ) } diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql index bef72ca30a19..b5f0aa90ed4d 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql @@ -3,8 +3,12 @@ import shared.FlowSummaries import semmle.code.csharp.frameworks.EntityFramework::EntityFramework import semmle.code.csharp.dataflow.internal.ExternalFlow as ExternalFlow -private class IncludeEFSummarizedCallable extends IncludeSummarizedCallable instanceof EFSummarizedCallable -{ } +module TestSummaryInput implements TestSummaryInputSig { + class RelevantSummarizedCallable extends IncludeSummarizedCallable instanceof EFSummarizedCallable + { } +} + +import TestSummaryOutput<TestSummaryInput> query predicate sourceNode(DataFlow::Node node, string kind) { ExternalFlow::sourceNode(node, kind) diff --git a/csharp/ql/test/shared/FlowSummaries.qll b/csharp/ql/test/shared/FlowSummaries.qll index 83a1530b028f..39028ef2df7d 100644 --- a/csharp/ql/test/shared/FlowSummaries.qll +++ b/csharp/ql/test/shared/FlowSummaries.qll @@ -1,13 +1,14 @@ import semmle.code.csharp.dataflow.internal.FlowSummaryImpl::Private import semmle.code.csharp.dataflow.internal.FlowSummaryImpl::Public -import semmle.code.csharp.dataflow.internal.FlowSummaryImpl::Private::TestOutput private import semmle.code.csharp.dataflow.internal.ExternalFlow -abstract class IncludeSummarizedCallable extends RelevantSummarizedCallable { +class IncludeSummarizedCallable instanceof SummarizedCallableImpl { IncludeSummarizedCallable() { [this.(Modifiable), this.(Accessor).getDeclaration()].isEffectivelyPublic() } /** Gets a string representing the callable in semi-colon separated format for use in flow summaries. */ - final override string getCallableCsv() { result = asPartialModel(this) } + final string getCallableCsv() { result = asPartialModel(this) } + + string toString() { result = super.toString() } } diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 19a33ec810ab..9d0593665132 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -1751,32 +1751,31 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { } } + signature module TestSummaryInputSig { + /** + * A class of callables where the flow summary should be included + * in the `summary/1` query predicate. + */ + class RelevantSummarizedCallable instanceof SummarizedCallableImpl { + /** Gets the string representation of this callable used by `summary/1`. */ + string getCallableCsv(); + } + } + /** Provides a query predicate for outputting a set of relevant flow summaries. */ - module TestOutput { - final private class SummarizedCallableImplFinal = SummarizedCallableImpl; + module TestSummaryOutput<TestSummaryInputSig TestInput> { + private import TestInput - /** A flow summary to include in the `summary/1` query predicate. */ - abstract class RelevantSummarizedCallable extends SummarizedCallableImplFinal { - /** Gets the string representation of this callable used by `summary/1`. */ - abstract string getCallableCsv(); + final class RelevantSummarizedCallableFinal = TestInput::RelevantSummarizedCallable; + class RelevantSummarizedCallable extends RelevantSummarizedCallableFinal instanceof SummarizedCallableImpl + { /** Holds if flow is propagated between `input` and `output`. */ predicate relevantSummary( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { super.propagatesFlow(input, output, preservesValue) } - } - - /** A model to include in the `neutral/1` query predicate. */ - abstract class RelevantNeutralCallable instanceof NeutralCallable { - /** Gets the string representation of this callable used by `neutral/1`. */ - abstract string getCallableCsv(); - - /** - * Gets the kind of the neutral. - */ - string getKind() { result = super.getKind() } string toString() { result = super.toString() } } @@ -1795,13 +1794,6 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { c.hasProvenance(result) } - private string renderProvenanceNeutral(NeutralCallable c) { - exists(Provenance p | p.isManual() and c.hasProvenance(p) and result = p.toString()) - or - not c.hasManualModel() and - c.hasProvenance(result) - } - /** * Holds if there exists a relevant summary callable with information roughly corresponding to `csv`. * Used for testing. @@ -1822,6 +1814,39 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { + renderProvenance(c) // provenance ) } + } + + signature module TestNeutralInputSig { + /** + * A class of callables where the neutral model should be included + * in the `neutral/1` query predicate. + */ + class RelevantNeutralCallable instanceof NeutralCallable { + /** Gets the string representation of this callable used by `neutral/1`. */ + string getCallableCsv(); + } + } + + module TestNeutralOutput<TestNeutralInputSig TestInput> { + private import TestInput + + final class RelevantNeutralCallableFinal = TestInput::RelevantNeutralCallable; + + class RelevantNeutralCallable extends RelevantNeutralCallableFinal instanceof NeutralCallable { + /** + * Gets the kind of the neutral. + */ + string getKind() { result = super.getKind() } + + string toString() { result = super.toString() } + } + + private string renderProvenance(NeutralCallable c) { + exists(Provenance p | p.isManual() and c.hasProvenance(p) and result = p.toString()) + or + not c.hasManualModel() and + c.hasProvenance(result) + } /** * Holds if there exists a relevant neutral callable with information roughly corresponding to `csv`. @@ -1833,7 +1858,7 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { csv = c.getCallableCsv() // Callable information + c.getKind() + ";" // kind - + renderProvenanceNeutral(c) // provenance + + renderProvenance(c) // provenance ) } } From e32902ad47df61966fd0888c380dae5010afc255 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Fri, 15 Mar 2024 15:39:45 +0100 Subject: [PATCH 373/731] C#: Update source expected test output. --- .../dataflow/library/FlowSummaries.expected | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index fc02c1916a8d..af6a55c64f7d 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1,3 +1,80 @@ +source +| Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;Argument[0];environment;manual | +| Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;ReturnValue;environment;manual | +| Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Action<Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationSource>);;Argument[0];environment;manual | +| Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Action<Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationSource>);;ReturnValue;environment;manual | +| Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;Argument[0];environment;manual | +| Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.String);;ReturnValue;environment;manual | +| Microsoft.Win32;Registry;false;GetValue;(System.String,System.String,System.Object);;ReturnValue;windows-registry;manual | +| Microsoft.Win32;RegistryKey;false;GetSubKeyNames;();;ReturnValue;windows-registry;manual | +| Microsoft.Win32;RegistryKey;false;GetValue;(System.String);;ReturnValue;windows-registry;manual | +| Microsoft.Win32;RegistryKey;false;GetValue;(System.String,System.Object);;ReturnValue;windows-registry;manual | +| Microsoft.Win32;RegistryKey;false;GetValue;(System.String,System.Object,Microsoft.Win32.RegistryValueOptions);;ReturnValue;windows-registry;manual | +| Microsoft.Win32;RegistryKey;false;GetValueNames;();;ReturnValue;windows-registry;manual | +| System.IO;File;false;AppendText;(System.String);;ReturnValue;file-write;manual | +| System.IO;File;false;Create;(System.String);;ReturnValue;file-write;manual | +| System.IO;File;false;Create;(System.String,System.Int32);;ReturnValue;file-write;manual | +| System.IO;File;false;Create;(System.String,System.Int32,System.IO.FileOptions);;ReturnValue;file-write;manual | +| System.IO;File;false;CreateText;(System.String);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileMode);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileMode,System.IO.FileAccess);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileStreamOptions);;ReturnValue;file-write;manual | +| System.IO;File;false;OpenWrite;(System.String);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;AppendText;();;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Create;();;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;CreateText;();;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileMode);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileMode,System.IO.FileAccess);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileStreamOptions);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;OpenWrite;();;ReturnValue;file-write;manual | +| System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess,System.Int32);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess,System.Int32);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess,System.Int32,System.Boolean);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess,System.Int32,System.Boolean);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess,System.Boolean);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess,System.Boolean);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32,System.Boolean);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.IntPtr,System.IO.FileAccess,System.Boolean,System.Int32,System.Boolean);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32,System.Boolean);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32,System.Boolean);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32,System.IO.FileOptions);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32,System.IO.FileOptions);;Argument[this];file;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileStreamOptions);;Argument[this];file-write;manual | +| System.IO;FileStream;false;FileStream;(System.String,System.IO.FileStreamOptions);;Argument[this];file;manual | +| System.IO;StreamWriter;false;StreamWriter;(System.String);;Argument[this];file-write;manual | +| System.IO;StreamWriter;false;StreamWriter;(System.String,System.Boolean);;Argument[this];file-write;manual | +| System.IO;StreamWriter;false;StreamWriter;(System.String,System.Boolean,System.Text.Encoding);;Argument[this];file-write;manual | +| System.IO;StreamWriter;false;StreamWriter;(System.String,System.Boolean,System.Text.Encoding,System.Int32);;Argument[this];file-write;manual | +| System.IO;StreamWriter;false;StreamWriter;(System.String,System.IO.FileStreamOptions);;Argument[this];file-write;manual | +| System.IO;StreamWriter;false;StreamWriter;(System.String,System.Text.Encoding,System.IO.FileStreamOptions);;Argument[this];file-write;manual | +| System.Net.Sockets;TcpClient;false;GetStream;();;ReturnValue;remote;manual | +| System;Console;false;Read;();;ReturnValue;local;manual | +| System;Console;false;ReadKey;();;ReturnValue;local;manual | +| System;Console;false;ReadKey;(System.Boolean);;ReturnValue;local;manual | +| System;Console;false;ReadLine;();;ReturnValue;local;manual | +| System;Environment;false;ExpandEnvironmentVariables;(System.String);;ReturnValue;environment;manual | +| System;Environment;false;GetCommandLineArgs;();;ReturnValue;commandargs;manual | +| System;Environment;false;GetEnvironmentVariable;(System.String);;ReturnValue;environment;manual | +| System;Environment;false;GetEnvironmentVariable;(System.String,System.EnvironmentVariableTarget);;ReturnValue;environment;manual | +| System;Environment;false;GetEnvironmentVariables;();;ReturnValue;environment;manual | +| System;Environment;false;GetEnvironmentVariables;(System.EnvironmentVariableTarget);;ReturnValue;environment;manual | +| System;Environment;false;get_CommandLine;();;ReturnValue;commandargs;manual | summary | Dapper;CustomPropertyTypeMap;false;CustomPropertyTypeMap;(System.Type,System.Func<System.Type,System.String,System.Reflection.PropertyInfo>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | Dapper;DynamicParameters;false;Output<T>;(T,System.Linq.Expressions.Expression<System.Func<T,System.Object>>,System.Nullable<System.Data.DbType>,System.Nullable<System.Int32>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | From b39842501adfea160697dfe6dab99aa0861740ef Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Fri, 15 Mar 2024 15:50:01 +0100 Subject: [PATCH 374/731] C#: Update sink test expected output. --- .../dataflow/library/FlowSummaries.expected | 533 ++++++++++++++++++ 1 file changed, 533 insertions(+) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index af6a55c64f7d..30396dbf4101 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -75,6 +75,539 @@ source | System;Environment;false;GetEnvironmentVariables;();;ReturnValue;environment;manual | | System;Environment;false;GetEnvironmentVariables;(System.EnvironmentVariableTarget);;ReturnValue;environment;manual | | System;Environment;false;get_CommandLine;();;ReturnValue;commandargs;manual | +sink +| Dapper;SqlMapper;false;Execute;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;ExecuteAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;ExecuteReader;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;ExecuteScalar;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;ExecuteScalar<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;ExecuteScalarAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;ExecuteScalarAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;Query<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;Query<TReturn>;(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryAsync<TReturn>;(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirst<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefault<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryMultiple;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QueryMultipleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingle<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefault<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];sql-injection;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[1];sql-injection;manual | +| Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRaw;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Collections.Generic.IEnumerable<System.Object>);;Argument[1];sql-injection;manual | +| Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRaw;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Object[]);;Argument[1];sql-injection;manual | +| Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRawAsync;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRawAsync;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Object[]);;Argument[1];sql-injection;manual | +| Microsoft.EntityFrameworkCore;RelationalDatabaseFacadeExtensions;false;ExecuteSqlRawAsync;(Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade,System.String,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| Microsoft.EntityFrameworkCore;RelationalQueryableExtensions;false;FromSqlRaw<TEntity>;(Microsoft.EntityFrameworkCore.DbSet<TEntity>,System.String,System.Object[]);;Argument[1];sql-injection;manual | +| ServiceStack.Messaging;BackgroundMqClient;false;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack.Messaging;BackgroundMqClient;false;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack.Messaging;BackgroundMqClient;false;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack.Messaging;InMemoryMessageQueueClient;false;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack.Messaging;InMemoryMessageQueueClient;false;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack.Messaging;InMemoryMessageQueueClient;false;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack.Messaging;RedisMessageProducer;false;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack.Messaging;RedisMessageProducer;false;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack.Messaging;RedisMessageProducer;false;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack.Messaging;RedisMessageQueueClient;false;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack.Messaging;RedisMessageQueueClient;false;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack.Messaging;RedisMessageQueueClient;false;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeAnd;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeFrom;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeOr;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeSelect;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;IUntypedSqlExpression;true;UnsafeWhere;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Column<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Column<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnDistinct<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnDistinct<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnLazy<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ColumnLazy<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Dictionary<K,V>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Action<System.Data.IDbCommand>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;ExecuteNonQuery;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Exists<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Lookup<K,V>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Lookup<K,V>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Scalar<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Scalar<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Select<T>;(System.Data.IDbConnection,System.String);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Select<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Select<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Select<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Select<TModel>;(System.Data.IDbConnection,System.Type,System.String,System.Object);;Argument[2];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SelectLazy<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SelectNonDefaults<T>;(System.Data.IDbConnection,System.String,T);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Single<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;Single<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlColumn<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<T>;(System.Data.IDbConnection,System.String,System.Action<System.Data.IDbCommand>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlList<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApi;false;SqlScalar<T>;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnDistinctAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ColumnDistinctAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;DictionaryAsync<K,V>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExecuteNonQueryAsync;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ExistsAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;KeyValuePairsAsync<K,V>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;KeyValuePairsAsync<K,V>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<K,V>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;LookupAsync<K,V>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ScalarAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;ScalarAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<T>;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectAsync<TModel>;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Threading.CancellationToken);;Argument[2];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SelectNonDefaultsAsync<T>;(System.Data.IDbConnection,System.String,T,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SingleAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SingleAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlColumnAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<T>;(System.Data.IDbConnection,System.String,System.Action<System.Data.IDbCommand>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlListAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<T>;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadApiAsync;false;SqlScalarAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;RowCount;(System.Data.IDbConnection,System.String,System.Collections.Generic.IEnumerable<System.Data.IDbDataParameter>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApi;false;RowCount;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteReadExpressionsApiAsync;false;RowCountAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String,System.Collections.Generic.Dictionary<System.String,System.Object>);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteWriteApi;false;ExecuteSql;(System.Data.IDbConnection,System.String,System.Object);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;ExecuteSqlAsync;(System.Data.IDbConnection,System.String,System.Object,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;OrmLiteWriteApiAsync;false;ExecuteSqlAsync;(System.Data.IDbConnection,System.String,System.Threading.CancellationToken);;Argument[1];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeAnd;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeFrom;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeGroupBy;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeHaving;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeOr;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeOrderBy;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeSelect;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeSelect;(System.String,System.Boolean);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;SqlExpression<T>;true;UnsafeWhere;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<T>;false;UnsafeAnd;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<T>;false;UnsafeFrom;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<T>;false;UnsafeOr;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<T>;false;UnsafeSelect;(System.String);;Argument[0];sql-injection;manual | +| ServiceStack.OrmLite;UntypedSqlExpressionProxy<T>;false;UnsafeWhere;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| ServiceStack.Redis;IRedisClient;true;Custom;(System.Object[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLua;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLua;(System.String,System.String[],System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLuaAsInt;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLuaAsInt;(System.String,System.String[],System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLuaAsList;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLuaAsList;(System.String,System.String[],System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLuaAsString;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;ExecLuaAsString;(System.String,System.String[],System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClient;true;LoadLuaScript;(System.String);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;CustomAsync;(System.Object[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;CustomAsync;(System.Object[],System.Threading.CancellationToken);;Argument[0].Element;code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsIntAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsListAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsStringAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[]);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[],System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;ExecLuaAsync;(System.String,System.String[],System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Redis;IRedisClientAsync;true;LoadLuaScriptAsync;(System.String,System.Threading.CancellationToken);;Argument[0];code-injection;manual | +| ServiceStack.Testing;MockRestGateway;false;Delete<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack.Testing;MockRestGateway;false;Get<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack.Testing;MockRestGateway;false;Post<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack.Testing;MockRestGateway;false;Put<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack.Testing;MockRestGateway;false;Send<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;CustomMethod;(System.String,ServiceStack.IReturnVoid);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;CustomMethod<TResponse>;(System.String,ServiceStack.IReturn<TResponse>);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;CustomMethod<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;CustomMethodAsync;(System.String,ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;CustomMethodAsync<TResponse>;(System.String,ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;CustomMethodAsync<TResponse>;(System.String,System.Object,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Delete;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Delete<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Delete<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;DeleteAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;DeleteAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;DeleteAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Get;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Get<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Get<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;GetAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;GetAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;GetAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Patch;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Patch<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Patch<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Patch<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PatchAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PatchAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PatchAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Post;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Post<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Post<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Post<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PostAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PostAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PostAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Publish;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PublishAll;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PublishAllAsync;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Put;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Put<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Put<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Put<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PutAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PutAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;PutAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Send<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;Send<TResponse>;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;SendAll<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;CachedServiceClient;false;SendAllAsync<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;CachedServiceClient;false;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack;CachedServiceClient;false;SendAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;CachedServiceClient;false;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;EncryptedServiceClient;false;Publish;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;EncryptedServiceClient;false;PublishAll;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;EncryptedServiceClient;false;Send<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;EncryptedServiceClient;false;SendAll<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;IOneWayClient;true;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack;IOneWayClient;true;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IOneWayClient;true;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClient;true;Patch<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClient;true;Post<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClient;true;Put<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClient;true;Send<TResponse>;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;CustomMethodAsync;(System.String,ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;CustomMethodAsync<TResponse>;(System.String,ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;CustomMethodAsync<TResponse>;(System.String,System.Object,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;DeleteAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;DeleteAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;DeleteAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;GetAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;GetAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;GetAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PatchAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PatchAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PatchAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PostAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PostAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PostAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PutAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PutAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientAsync;true;PutAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;CustomMethod;(System.String,ServiceStack.IReturnVoid);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClientSync;true;CustomMethod<TResponse>;(System.String,ServiceStack.IReturn<TResponse>);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClientSync;true;CustomMethod<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Delete;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Delete<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Delete<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Get;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Get<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Get<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Patch;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Patch<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Patch<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Post;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Post<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Post<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Put;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Put<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestClientSync;true;Put<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGateway;true;Delete<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGateway;true;Get<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGateway;true;Post<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGateway;true;Put<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGateway;true;Send<T>;(ServiceStack.IReturn<T>);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGatewayAsync;true;DeleteAsync<T>;(ServiceStack.IReturn<T>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGatewayAsync;true;GetAsync<T>;(ServiceStack.IReturn<T>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGatewayAsync;true;PostAsync<T>;(ServiceStack.IReturn<T>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGatewayAsync;true;PutAsync<T>;(ServiceStack.IReturn<T>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IRestGatewayAsync;true;SendAsync<T>;(ServiceStack.IReturn<T>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IServiceGateway;true;Publish;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IServiceGateway;true;PublishAll;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;IServiceGateway;true;Send<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;IServiceGateway;true;SendAll<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;IServiceGatewayAsync;true;PublishAllAsync;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;IServiceGatewayAsync;true;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;IServiceGatewayAsync;true;SendAllAsync<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;IServiceGatewayAsync;true;SendAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;Publish;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;PublishAll;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;PublishAllAsync;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;Send<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;SendAll<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;SendAllAsync<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;InProcessServiceGateway;false;SendAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;CustomMethod;(System.String,ServiceStack.IReturnVoid);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;CustomMethod<TResponse>;(System.String,ServiceStack.IReturn<TResponse>);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;CustomMethod<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;CustomMethodAsync;(System.String,ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;CustomMethodAsync<TResponse>;(System.String,ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;CustomMethodAsync<TResponse>;(System.String,System.Object,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Delete;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Delete<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Delete<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;DeleteAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;DeleteAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;DeleteAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Get;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Get<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Get<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;GetAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;GetAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;GetAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Patch;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Patch<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Patch<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Patch<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PatchAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PatchAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PatchAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Post;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Post<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Post<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Post<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PostAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PostAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PostAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Publish;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PublishAll;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;JsonApiClient;false;PublishAllAsync;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;JsonApiClient;false;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Put;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Put<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Put<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Put<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PutAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PutAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;PutAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Send<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;Send<TResponse>;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;JsonApiClient;false;SendAll<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;JsonApiClient;false;SendAllAsync<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;JsonApiClient;false;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack;JsonApiClient;false;SendAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;JsonApiClient;false;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;false;DownloadBytes;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;ServiceClientBase;false;DownloadBytesAsync;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;ServiceClientBase;false;Publish<T>;(ServiceStack.Messaging.IMessage<T>);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;false;Publish<T>;(T);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;false;PublishAll;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceClientBase;false;PublishAllAsync;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceClientBase;false;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;false;SendAllAsync<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethod;(System.String,ServiceStack.IReturnVoid);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethod;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethod<TResponse>;(System.String,ServiceStack.IReturn<TResponse>);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethod<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethod<TResponse>;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethodAsync;(System.String,ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethodAsync<TResponse>;(System.String,ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethodAsync<TResponse>;(System.String,System.Object,System.Threading.CancellationToken);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;CustomMethodAsync<TResponse>;(System.String,System.String,System.Object,System.Threading.CancellationToken);;Argument[2];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Delete;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Delete;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Delete<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Delete<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;DeleteAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;DeleteAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;DeleteAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Get;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Get;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Get<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Get<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;GetAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;GetAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;GetAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Head;(ServiceStack.IReturn);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Head;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Patch;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Patch;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Patch<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Patch<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Patch<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PatchAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PatchAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PatchAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Post;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Post;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Post<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Post<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Post<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PostAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PostAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PostAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Publish;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Put;(ServiceStack.IReturnVoid);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Put;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Put<TResponse>;(ServiceStack.IReturn<TResponse>);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Put<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Put<TResponse>;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PutAsync;(ServiceStack.IReturnVoid,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PutAsync<TResponse>;(ServiceStack.IReturn<TResponse>,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;PutAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Send<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;Send<TResponse>;(System.String,System.String,System.Object);;Argument[2];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;SendAll<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceClientBase;true;SendAllOneWay;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[1].Element;file-content-store;manual | +| ServiceStack;ServiceClientBase;true;SendAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;SendOneWay;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceClientBase;true;SendOneWay;(System.String,System.Object);;Argument[1];file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;Publish;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;PublishAll;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;PublishAllAsync;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;PublishAsync;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;Send<TResponse>;(System.Object);;Argument[0];file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;SendAll<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;SendAllAsync<TResponse>;(System.Collections.Generic.IEnumerable<System.Object>,System.Threading.CancellationToken);;Argument[0].Element;file-content-store;manual | +| ServiceStack;ServiceGatewayFactoryBase;false;SendAsync<TResponse>;(System.Object,System.Threading.CancellationToken);;Argument[0];file-content-store;manual | +| System.Data.Entity;Database;false;ExecuteSqlCommand;(System.Data.Entity.TransactionalBehavior,System.String,System.Object[]);;Argument[1];sql-injection;manual | +| System.Data.Entity;Database;false;ExecuteSqlCommand;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.Data.Entity.TransactionalBehavior,System.String,System.Object[]);;Argument[1];sql-injection;manual | +| System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.Data.Entity.TransactionalBehavior,System.String,System.Threading.CancellationToken,System.Object[]);;Argument[1];sql-injection;manual | +| System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| System.Data.Entity;Database;false;ExecuteSqlCommandAsync;(System.String,System.Threading.CancellationToken,System.Object[]);;Argument[0];sql-injection;manual | +| System.Data.Entity;Database;false;SqlQuery;(System.Type,System.String,System.Object[]);;Argument[1];sql-injection;manual | +| System.Data.Entity;Database;false;SqlQuery<TElement>;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| System.Data.Entity;DbSet;true;SqlQuery;(System.String,System.Object[]);;Argument[0];sql-injection;manual | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String);;Argument[0];sql-injection;manual | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];sql-injection;manual | +| System.Data.SqlClient;SqlCommand;false;SqlCommand;(System.String,System.Data.SqlClient.SqlConnection,System.Data.SqlClient.SqlTransaction);;Argument[0];sql-injection;manual | +| System.Data.SqlClient;SqlDataAdapter;false;SqlDataAdapter;(System.Data.SqlClient.SqlCommand);;Argument[0];sql-injection;manual | +| System.Data.SqlClient;SqlDataAdapter;false;SqlDataAdapter;(System.String,System.Data.SqlClient.SqlConnection);;Argument[0];sql-injection;manual | +| System.Data.SqlClient;SqlDataAdapter;false;SqlDataAdapter;(System.String,System.String);;Argument[0];sql-injection;manual | +| System.Net.Http;StringContent;false;StringContent;(System.String);;Argument[0];js-injection;df-generated | +| System.Net.Http;StringContent;false;StringContent;(System.String);;Argument[0];js-injection;manual | +| System.Net.Http;StringContent;false;StringContent;(System.String,System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];js-injection;df-generated | +| System.Net.Http;StringContent;false;StringContent;(System.String,System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];js-injection;manual | +| System.Net.Http;StringContent;false;StringContent;(System.String,System.Text.Encoding);;Argument[0];js-injection;df-generated | +| System.Net.Http;StringContent;false;StringContent;(System.String,System.Text.Encoding);;Argument[0];js-injection;manual | +| System.Net.Http;StringContent;false;StringContent;(System.String,System.Text.Encoding,System.Net.Http.Headers.MediaTypeHeaderValue);;Argument[0];js-injection;manual | +| System.Net.Http;StringContent;false;StringContent;(System.String,System.Text.Encoding,System.String);;Argument[0];js-injection;df-generated | +| System.Net.Http;StringContent;false;StringContent;(System.String,System.Text.Encoding,System.String);;Argument[0];js-injection;manual | +| System.Security.Cryptography;AesCng;false;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;AesCng;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;AesCng;false;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;AesCng;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;AesCng;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;AesCryptoServiceProvider;false;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;AesCryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;df-generated | +| System.Security.Cryptography;AesCryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;AesCryptoServiceProvider;false;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;AesCryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;df-generated | +| System.Security.Cryptography;AesCryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;AesCryptoServiceProvider;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;df-generated | +| System.Security.Cryptography;AesCryptoServiceProvider;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;AesManaged;false;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;AesManaged;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;df-generated | +| System.Security.Cryptography;AesManaged;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;AesManaged;false;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;AesManaged;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;df-generated | +| System.Security.Cryptography;AesManaged;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;AesManaged;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;df-generated | +| System.Security.Cryptography;AesManaged;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;DES;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;df-generated | +| System.Security.Cryptography;DES;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;DESCryptoServiceProvider;false;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;DESCryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;df-generated | +| System.Security.Cryptography;DESCryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;DESCryptoServiceProvider;false;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;DESCryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;df-generated | +| System.Security.Cryptography;DESCryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;RC2CryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;df-generated | +| System.Security.Cryptography;RC2CryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;RC2CryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;df-generated | +| System.Security.Cryptography;RC2CryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;RijndaelManaged;false;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;RijndaelManaged;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;df-generated | +| System.Security.Cryptography;RijndaelManaged;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;RijndaelManaged;false;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;RijndaelManaged;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;df-generated | +| System.Security.Cryptography;RijndaelManaged;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;RijndaelManaged;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;df-generated | +| System.Security.Cryptography;RijndaelManaged;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;SymmetricAlgorithm;true;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;SymmetricAlgorithm;true;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;SymmetricAlgorithm;true;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;SymmetricAlgorithm;true;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;SymmetricAlgorithm;true;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;TripleDES;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;df-generated | +| System.Security.Cryptography;TripleDES;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;TripleDESCng;false;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;TripleDESCng;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;TripleDESCng;false;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;TripleDESCng;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;TripleDESCng;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;CreateDecryptor;();;Argument[this];encryption-decryptor;df-generated | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;df-generated | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;CreateDecryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-decryptor;manual | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;CreateEncryptor;();;Argument[this];encryption-encryptor;df-generated | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;df-generated | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;CreateEncryptor;(System.Byte[],System.Byte[]);;Argument[0];encryption-encryptor;manual | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;df-generated | +| System.Security.Cryptography;TripleDESCryptoServiceProvider;false;set_Key;(System.Byte[]);;Argument[0];encryption-keyprop;manual | +| System.Web;HttpResponse;false;Write;(System.Object);;Argument[0];html-injection;manual | +| System.Web;HttpResponse;false;Write;(System.String);;Argument[0];html-injection;manual | +| System.Web;HttpResponse;false;WriteFile;(System.String);;Argument[0];html-injection;manual | summary | Dapper;CustomPropertyTypeMap;false;CustomPropertyTypeMap;(System.Type,System.Func<System.Type,System.String,System.Reflection.PropertyInfo>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | Dapper;DynamicParameters;false;Output<T>;(T,System.Linq.Expressions.Expression<System.Func<T,System.Object>>,System.Nullable<System.Data.DbType>,System.Nullable<System.Int32>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | From d24f032d976778c25cee1ea74efb5ebbf9acc54d Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Mon, 18 Mar 2024 12:54:04 +0100 Subject: [PATCH 375/731] C#: Update other tests. --- .../dataflow/library/FlowSummariesFiltered.expected | 2 -- .../frameworks/EntityFramework/FlowSummaries.expected | 1 - 2 files changed, 3 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 4dec1bdd7d1d..cf17fed3269c 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -1,4 +1,3 @@ -summary | Dapper;CustomPropertyTypeMap;false;CustomPropertyTypeMap;(System.Type,System.Func<System.Type,System.String,System.Reflection.PropertyInfo>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | Dapper;DynamicParameters;false;Output<T>;(T,System.Linq.Expressions.Expression<System.Func<T,System.Object>>,System.Nullable<System.Data.DbType>,System.Nullable<System.Int32>);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;GridReader;(System.Data.IDbCommand,System.Data.Common.DbDataReader,Dapper.SqlMapper+Identity,System.Action<System.Object>,System.Object,System.Boolean,System.Threading.CancellationToken);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | @@ -16125,4 +16124,3 @@ summary | System;ValueTuple<T1>;false;ToString;();;Argument[this];ReturnValue;taint;df-generated | | System;ValueTuple<T1>;false;ValueTuple;(T1);;Argument[0];Argument[this].Field[System.ValueTuple`1.Item1];value;manual | | System;ValueTuple<T1>;false;get_Item;(System.Int32);;Argument[this].Field[System.ValueTuple`1.Item1];ReturnValue;value;manual | -neutral diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected index 8522487dff76..db1bacefb330 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.expected @@ -170,7 +170,6 @@ summary | System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual | | System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual | | System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual | -neutral sourceNode sinkNode | EntityFrameworkCore.cs:72:36:72:40 | "sql" | sql-injection | From 70c674494409c4d29563d35a34fbbc6c01abedaa Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Mon, 18 Mar 2024 13:04:45 +0100 Subject: [PATCH 376/731] Java/Go/Swift: Sync changes. --- go/ql/lib/semmle/go/dataflow/ExternalFlow.qll | 4 ++-- .../semmle/go/dataflow/internal/FlowSummaryImpl.qll | 12 ++++++++---- .../code/java/dataflow/internal/FlowSummaryImpl.qll | 8 ++++---- .../modeleditor/FrameworkModeEndpointsQuery.qll | 4 ++-- .../swift/dataflow/internal/FlowSummaryImpl.qll | 12 ++++++++---- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll index cacad869509d..ba5270483fcd 100644 --- a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -299,8 +299,8 @@ predicate hasExternalSpecification(Function f) { f = any(SummarizedCallable sc).asFunction() or exists(SourceSinkInterpretationInput::SourceOrSinkElement e | f = e.asEntity() | - SourceSinkInterpretationInput::sourceElement(e, _, _) or - SourceSinkInterpretationInput::sinkElement(e, _, _) + SourceSinkInterpretationInput::sourceElement(e, _, _, _) or + SourceSinkInterpretationInput::sinkElement(e, _, _, _) ) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index cbf33afff251..1c7ef2e362cb 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -103,11 +103,13 @@ module SourceSinkInterpretationInput implements * Holds if an external source specification exists for `e` with output specification * `output`, kind `kind`, and provenance `provenance`. */ - predicate sourceElement(SourceOrSinkElement e, string output, string kind) { + predicate sourceElement( + SourceOrSinkElement e, string output, string kind, Public::Provenance provenance + ) { exists( string package, string type, boolean subtypes, string name, string signature, string ext | - sourceModel(package, type, subtypes, name, signature, ext, output, kind, _) and + sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance) and e = interpretElement(package, type, subtypes, name, signature, ext) ) } @@ -116,11 +118,13 @@ module SourceSinkInterpretationInput implements * Holds if an external sink specification exists for `e` with input specification * `input`, kind `kind` and provenance `provenance`. */ - predicate sinkElement(SourceOrSinkElement e, string input, string kind) { + predicate sinkElement( + SourceOrSinkElement e, string input, string kind, Public::Provenance provenance + ) { exists( string package, string type, boolean subtypes, string name, string signature, string ext | - sinkModel(package, type, subtypes, name, signature, ext, input, kind, _) and + sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance) and e = interpretElement(package, type, subtypes, name, signature, ext) ) } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll index d5364567d88d..0fbe7c3a1d19 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/FlowSummaryImpl.qll @@ -192,12 +192,12 @@ module SourceSinkInterpretationInput implements class Element = J::Element; - predicate sourceElement(Element e, string output, string kind) { + predicate sourceElement(Element e, string output, string kind, Public::Provenance provenance) { exists( string namespace, string type, boolean subtypes, string name, string signature, string ext, SourceOrSinkElement baseSource, string originalOutput | - sourceModel(namespace, type, subtypes, name, signature, ext, originalOutput, kind, _) and + sourceModel(namespace, type, subtypes, name, signature, ext, originalOutput, kind, provenance) and baseSource = interpretElement(namespace, type, subtypes, name, signature, ext) and ( e = baseSource and output = originalOutput @@ -207,12 +207,12 @@ module SourceSinkInterpretationInput implements ) } - predicate sinkElement(Element e, string input, string kind) { + predicate sinkElement(Element e, string input, string kind, Public::Provenance provenance) { exists( string namespace, string type, boolean subtypes, string name, string signature, string ext, SourceOrSinkElement baseSink, string originalInput | - sinkModel(namespace, type, subtypes, name, signature, ext, originalInput, kind, _) and + sinkModel(namespace, type, subtypes, name, signature, ext, originalInput, kind, provenance) and baseSink = interpretElement(namespace, type, subtypes, name, signature, ext) and ( e = baseSink and originalInput = input diff --git a/java/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll b/java/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll index d8af480c6d32..76c727a4bf5a 100644 --- a/java/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll +++ b/java/ql/src/utils/modeleditor/FrameworkModeEndpointsQuery.qll @@ -8,7 +8,7 @@ private import ModelEditor * A class of effectively public callables from source code. */ class PublicEndpointFromSource extends Endpoint, ModelApi { - override predicate isSource() { SourceSinkInterpretationInput::sourceElement(this, _, _) } + override predicate isSource() { SourceSinkInterpretationInput::sourceElement(this, _, _, _) } - override predicate isSink() { SourceSinkInterpretationInput::sinkElement(this, _, _) } + override predicate isSink() { SourceSinkInterpretationInput::sinkElement(this, _, _, _) } } diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll index 1151a7aeec8c..0a8c86054720 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll +++ b/swift/ql/lib/codeql/swift/dataflow/internal/FlowSummaryImpl.qll @@ -119,11 +119,13 @@ module SourceSinkInterpretationInput implements * Holds if an external source specification exists for `e` with output specification * `output`, kind `kind`, and provenance `provenance`. */ - predicate sourceElement(SourceOrSinkElement e, string output, string kind) { + predicate sourceElement( + SourceOrSinkElement e, string output, string kind, Public::Provenance provenance + ) { exists( string namespace, string type, boolean subtypes, string name, string signature, string ext | - sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, _) and + sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance) and e = interpretElement(namespace, type, subtypes, name, signature, ext) ) } @@ -132,11 +134,13 @@ module SourceSinkInterpretationInput implements * Holds if an external sink specification exists for `e` with input specification * `input`, kind `kind` and provenance `provenance`. */ - predicate sinkElement(SourceOrSinkElement e, string input, string kind) { + predicate sinkElement( + SourceOrSinkElement e, string input, string kind, Public::Provenance provenance + ) { exists( string package, string type, boolean subtypes, string name, string signature, string ext | - sinkModel(package, type, subtypes, name, signature, ext, input, kind, _) and + sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance) and e = interpretElement(package, type, subtypes, name, signature, ext) ) } From 7371f5e508451ee8044500eeb92e9d7101ac33db Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Tue, 19 Mar 2024 13:33:49 +0000 Subject: [PATCH 377/731] Provenance should be "df-manual" --- java/ql/lib/ext/java.lang.model.yml | 2 +- java/ql/lib/ext/java.util.model.yml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 92f0a7a0805a..8bcfa7d242d4 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -114,7 +114,7 @@ extensions: - ["java.lang", "String", False, "indent", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "intern", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "join", "", "", "Argument[0..1]", "ReturnValue", "taint", "manual"] - - ["java.lang", "String", False, "lines", "()", "", "Argument[this]", "ReturnValue.Element", "taint", "df-generated"] + - ["java.lang", "String", False, "lines", "()", "", "Argument[this]", "ReturnValue.Element", "taint", "df-manual"] - ["java.lang", "String", False, "repeat", "(int)", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "replace", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "replace", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] diff --git a/java/ql/lib/ext/java.util.model.yml b/java/ql/lib/ext/java.util.model.yml index fe4958856d30..e26178150089 100644 --- a/java/ql/lib/ext/java.util.model.yml +++ b/java/ql/lib/ext/java.util.model.yml @@ -527,11 +527,11 @@ extensions: - ["java.util", "Optional", "isPresent", "()", "summary", "manual"] - ["java.util", "Random", "nextInt", "(int)", "summary", "manual"] - ["java.util", "ResourceBundle", "getBundle", "", "summary", "df-manual"] - - ["java.util", "Scanner", "delimiter", "()", "summary", "df-generated"] - - ["java.util", "Scanner", "hasNext", "(Pattern)", "summary", "df-generated"] - - ["java.util", "Scanner", "hasNext", "(String)", "summary", "df-generated"] - - ["java.util", "Scanner", "ioException", "()", "summary", "df-generated"] - - ["java.util", "Scanner", "locale", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "delimiter", "()", "summary", "df-manual"] + - ["java.util", "Scanner", "hasNext", "(Pattern)", "summary", "df-manual"] + - ["java.util", "Scanner", "hasNext", "(String)", "summary", "df-manual"] + - ["java.util", "Scanner", "ioException", "()", "summary", "df-manual"] + - ["java.util", "Scanner", "locale", "()", "summary", "df-manual"] - ["java.util", "Set", "contains", "(Object)", "summary", "manual"] - ["java.util", "Set", "isEmpty", "()", "summary", "manual"] - ["java.util", "Set", "size", "()", "summary", "manual"] From ee3e38f0eb57fe121b1ad358f3f86d93e6b60afe Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 19 Mar 2024 14:35:00 +0100 Subject: [PATCH 378/731] Simplify test interface in `FlowSummaryImpl.qll` --- .../dataflow/library/FlowSummaries.ql | 34 ++---- .../dataflow/library/FlowSummariesFiltered.ql | 12 +-- csharp/ql/test/shared/FlowSummaries.qll | 10 +- .../dataflow/internal/FlowSummaryImpl.qll | 101 +++++------------- 4 files changed, 51 insertions(+), 106 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql index b09721b4f3f6..856ea6d99e90 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql @@ -2,32 +2,20 @@ import shared.FlowSummaries import semmle.code.csharp.dataflow.internal.ExternalFlow import External -module TestSummaryInput implements TestSummaryInputSig { - class RelevantSummarizedCallable = IncludeSummarizedCallable; -} - -module TestNeutralInput implements TestNeutralInputSig { - class RelevantNeutralCallable instanceof NeutralCallable { - final string getCallableCsv() { result = asPartialNeutralModel(this) } +final private class NeutralCallableFinal = NeutralCallable; - string toString() { result = super.toString() } - } +class RelevantNeutralCallable extends NeutralCallableFinal { + final string getCallableCsv() { result = asPartialNeutralModel(this) } } -module TestSourceSinkInput implements TestSourceSinkInputSig { - class RelevantSourceCallable instanceof SourceCallable { - string getCallableCsv() { result = asPartialModel(this) } - - string toString() { result = super.toString() } - } - - class RelevantSinkCallable instanceof SinkCallable { - string getCallableCsv() { result = asPartialModel(this) } +class RelevantSourceCallable extends SourceCallable { + string getCallableCsv() { result = asPartialModel(this) } +} - string toString() { result = super.toString() } - } +class RelevantSinkCallable extends SinkCallable { + string getCallableCsv() { result = asPartialModel(this) } } -import TestSummaryOutput<TestSummaryInput> -import TestNeutralOutput<TestNeutralInput> -import TestSourceSinkOutput<TestSourceSinkInput> +import TestSummaryOutput<IncludeSummarizedCallable> +import TestNeutralOutput<RelevantNeutralCallable> +import TestSourceSinkOutput<RelevantSourceCallable, RelevantSinkCallable> diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql index fe3a931b451e..5bbb7ec0c6fd 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql @@ -1,13 +1,7 @@ import shared.FlowSummaries private import semmle.code.csharp.dataflow.internal.ExternalFlow -module TestSummaryInput implements TestSummaryInputSig { - class RelevantSummarizedCallable = IncludeSummarizedCallable; -} - -import TestSummaryOutput<TestSummaryInput> - -class IncludeFilteredSummarizedCallable extends RelevantSummarizedCallable { +class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable { /** * Holds if flow is propagated between `input` and `output` and * if there is no summary for a callable in a `base` class or interface @@ -16,7 +10,7 @@ class IncludeFilteredSummarizedCallable extends RelevantSummarizedCallable { override predicate relevantSummary( SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue ) { - this.(SummarizedCallableImpl).propagatesFlow(input, output, preservesValue) and + this.propagatesFlow(input, output, preservesValue) and not exists(IncludeSummarizedCallable rsc | isBaseCallableOrPrototype(rsc) and rsc.(SummarizedCallableImpl).propagatesFlow(input, output, preservesValue) and @@ -24,3 +18,5 @@ class IncludeFilteredSummarizedCallable extends RelevantSummarizedCallable { ) } } + +import TestSummaryOutput<IncludeFilteredSummarizedCallable> diff --git a/csharp/ql/test/shared/FlowSummaries.qll b/csharp/ql/test/shared/FlowSummaries.qll index 39028ef2df7d..b68966afa340 100644 --- a/csharp/ql/test/shared/FlowSummaries.qll +++ b/csharp/ql/test/shared/FlowSummaries.qll @@ -2,7 +2,9 @@ import semmle.code.csharp.dataflow.internal.FlowSummaryImpl::Private import semmle.code.csharp.dataflow.internal.FlowSummaryImpl::Public private import semmle.code.csharp.dataflow.internal.ExternalFlow -class IncludeSummarizedCallable instanceof SummarizedCallableImpl { +final private class SummarizedCallableImplFinal = SummarizedCallableImpl; + +class IncludeSummarizedCallable extends SummarizedCallableImplFinal { IncludeSummarizedCallable() { [this.(Modifiable), this.(Accessor).getDeclaration()].isEffectivelyPublic() } @@ -10,5 +12,11 @@ class IncludeSummarizedCallable instanceof SummarizedCallableImpl { /** Gets a string representing the callable in semi-colon separated format for use in flow summaries. */ final string getCallableCsv() { result = asPartialModel(this) } + predicate relevantSummary( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ) { + this.propagatesFlow(input, output, preservesValue) + } + string toString() { result = super.toString() } } diff --git a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll index 9d0593665132..48a56890e786 100644 --- a/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/FlowSummaryImpl.qll @@ -1692,28 +1692,16 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { ) } - signature module TestSourceSinkInputSig { - /** - * A class or source elements relevant for testing. - */ - class RelevantSourceCallable instanceof SourceOrSinkElement { - /** Gets the string representation of this callable used by `source/1`. */ - string getCallableCsv(); - } - - /** - * A class or sink elements relevant for testing. - */ - class RelevantSinkCallable instanceof SourceOrSinkElement { - /** Gets the string representation of this callable used by `source/1`. */ - string getCallableCsv(); - } + /** A source or sink relevant for testing. */ + signature class RelevantSourceOrSinkElementSig extends SourceOrSinkElement { + /** Gets the string representation of this callable used by `source/1` or `sink/1`. */ + string getCallableCsv(); } /** Provides query predicates for outputting a set of relevant sources and sinks. */ - module TestSourceSinkOutput<TestSourceSinkInputSig TestSourceSinkInput> { - private import TestSourceSinkInput - + module TestSourceSinkOutput< + RelevantSourceOrSinkElementSig RelevantSource, RelevantSourceOrSinkElementSig RelevantSink> + { /** * Holds if there exists a relevant source callable with information roughly corresponding to `csv`. * Used for testing. @@ -1721,10 +1709,10 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { * ext is hardcoded to empty. */ query predicate source(string csv) { - exists(RelevantSourceCallable c, string output, string kind, Provenance provenance | - sourceElement(c, output, kind, provenance) and + exists(RelevantSource s, string output, string kind, Provenance provenance | + sourceElement(s, output, kind, provenance) and csv = - c.getCallableCsv() // Callable information + s.getCallableCsv() // Callable information + output + ";" // output + kind + ";" // kind + provenance // provenance @@ -1738,10 +1726,10 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { * ext is hardcoded to empty. */ query predicate sink(string csv) { - exists(RelevantSinkCallable c, string input, string kind, Provenance provenance | - sinkElement(c, input, kind, provenance) and + exists(RelevantSink s, string input, string kind, Provenance provenance | + sinkElement(s, input, kind, provenance) and csv = - c.getCallableCsv() // Callable information + s.getCallableCsv() // Callable information + input + ";" // input + kind + ";" // kind + provenance // provenance @@ -1751,35 +1739,18 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { } } - signature module TestSummaryInputSig { - /** - * A class of callables where the flow summary should be included - * in the `summary/1` query predicate. - */ - class RelevantSummarizedCallable instanceof SummarizedCallableImpl { - /** Gets the string representation of this callable used by `summary/1`. */ - string getCallableCsv(); - } + /** A summarized callable relevant for testing. */ + signature class RelevantSummarizedCallableSig extends SummarizedCallableImpl { + /** Gets the string representation of this callable used by `summary/1`. */ + string getCallableCsv(); + + predicate relevantSummary( + SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue + ); } /** Provides a query predicate for outputting a set of relevant flow summaries. */ - module TestSummaryOutput<TestSummaryInputSig TestInput> { - private import TestInput - - final class RelevantSummarizedCallableFinal = TestInput::RelevantSummarizedCallable; - - class RelevantSummarizedCallable extends RelevantSummarizedCallableFinal instanceof SummarizedCallableImpl - { - /** Holds if flow is propagated between `input` and `output`. */ - predicate relevantSummary( - SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue - ) { - super.propagatesFlow(input, output, preservesValue) - } - - string toString() { result = super.toString() } - } - + module TestSummaryOutput<RelevantSummarizedCallableSig RelevantSummarizedCallable> { /** Render the kind in the format used in flow summaries. */ private string renderKind(boolean preservesValue) { preservesValue = true and result = "value" @@ -1816,31 +1787,13 @@ module Make<DF::InputSig DataFlowLang, InputSig<DataFlowLang> Input> { } } - signature module TestNeutralInputSig { - /** - * A class of callables where the neutral model should be included - * in the `neutral/1` query predicate. - */ - class RelevantNeutralCallable instanceof NeutralCallable { - /** Gets the string representation of this callable used by `neutral/1`. */ - string getCallableCsv(); - } + /** A summarized callable relevant for testing. */ + signature class RelevantNeutralCallableSig extends NeutralCallable { + /** Gets the string representation of this callable used by `neutral/1`. */ + string getCallableCsv(); } - module TestNeutralOutput<TestNeutralInputSig TestInput> { - private import TestInput - - final class RelevantNeutralCallableFinal = TestInput::RelevantNeutralCallable; - - class RelevantNeutralCallable extends RelevantNeutralCallableFinal instanceof NeutralCallable { - /** - * Gets the kind of the neutral. - */ - string getKind() { result = super.getKind() } - - string toString() { result = super.toString() } - } - + module TestNeutralOutput<RelevantNeutralCallableSig RelevantNeutralCallable> { private string renderProvenance(NeutralCallable c) { exists(Provenance p | p.isManual() and c.hasProvenance(p) and result = p.toString()) or From 7e479e3c8ee7a0246c50a63b3a069259ec08448f Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Tue, 19 Mar 2024 13:47:45 +0000 Subject: [PATCH 379/731] Ruby: Fix Hash#keys flow summary --- .../lib/codeql/ruby/frameworks/core/Hash.qll | 4 +- .../dataflow/hash-flow/hash-flow.expected | 49 +++++++------------ .../dataflow/hash-flow/hash-flow.ql | 2 +- .../dataflow/hash-flow/hash_flow.rb | 9 ++-- 4 files changed, 24 insertions(+), 40 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll index 7583498ed089..38a9a70f0d3f 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/core/Hash.qll @@ -530,8 +530,8 @@ private class KeysSummary extends SimpleSummarizedCallable { KeysSummary() { this = "keys" } override predicate propagatesFlow(string input, string output, boolean preservesValue) { - input = "Argument[self].Element[any]" and + input = "Argument[self]" and output = "ReturnValue.Element[?]" and - preservesValue = true + preservesValue = false } } diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected index 23027a7d73fb..68cb5a53dc23 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.expected @@ -1089,19 +1089,13 @@ edges | hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:994:14:994:47 | ...[...] [element :b] | provenance | | | hash_flow.rb:996:14:996:15 | h2 [element :b] | hash_flow.rb:996:14:996:19 | ...[...] | provenance | | | hash_flow.rb:998:14:998:15 | h2 [element :b] | hash_flow.rb:998:14:998:18 | ...[...] | provenance | | -| hash_flow.rb:1006:5:1006:5 | [post] h [element] | hash_flow.rb:1007:12:1007:12 | h [element] | provenance | | -| hash_flow.rb:1006:14:1006:24 | call to taint | hash_flow.rb:1006:5:1006:5 | [post] h [element] | provenance | | -| hash_flow.rb:1007:5:1007:8 | keys [element] | hash_flow.rb:1008:10:1008:13 | keys [element] | provenance | | -| hash_flow.rb:1007:12:1007:12 | h [element] | hash_flow.rb:1007:12:1007:17 | call to keys [element] | provenance | | -| hash_flow.rb:1007:12:1007:17 | call to keys [element] | hash_flow.rb:1007:5:1007:8 | keys [element] | provenance | | -| hash_flow.rb:1008:10:1008:13 | keys [element] | hash_flow.rb:1008:10:1008:17 | ...[...] | provenance | | -| hash_flow.rb:1012:5:1012:5 | h [element :a] | hash_flow.rb:1013:5:1013:5 | h [element :a] | provenance | | -| hash_flow.rb:1012:9:1012:45 | call to [] [element :a] | hash_flow.rb:1012:5:1012:5 | h [element :a] | provenance | | -| hash_flow.rb:1012:14:1012:24 | call to taint | hash_flow.rb:1012:9:1012:45 | call to [] [element :a] | provenance | | -| hash_flow.rb:1013:5:1013:5 | h [element :a] | hash_flow.rb:1013:15:1013:15 | k | provenance | | -| hash_flow.rb:1013:5:1013:5 | h [element :a] | hash_flow.rb:1013:18:1013:18 | v | provenance | | -| hash_flow.rb:1013:15:1013:15 | k | hash_flow.rb:1015:14:1015:14 | k | provenance | | -| hash_flow.rb:1013:18:1013:18 | v | hash_flow.rb:1014:14:1014:14 | v | provenance | | +| hash_flow.rb:1011:5:1011:5 | h [element :a] | hash_flow.rb:1012:5:1012:5 | h [element :a] | provenance | | +| hash_flow.rb:1011:9:1011:45 | call to [] [element :a] | hash_flow.rb:1011:5:1011:5 | h [element :a] | provenance | | +| hash_flow.rb:1011:14:1011:24 | call to taint | hash_flow.rb:1011:9:1011:45 | call to [] [element :a] | provenance | | +| hash_flow.rb:1012:5:1012:5 | h [element :a] | hash_flow.rb:1012:15:1012:15 | k | provenance | | +| hash_flow.rb:1012:5:1012:5 | h [element :a] | hash_flow.rb:1012:18:1012:18 | v | provenance | | +| hash_flow.rb:1012:15:1012:15 | k | hash_flow.rb:1014:14:1014:14 | k | provenance | | +| hash_flow.rb:1012:18:1012:18 | v | hash_flow.rb:1013:14:1013:14 | v | provenance | | nodes | hash_flow.rb:10:5:10:8 | hash [element 0] | semmle.label | hash [element 0] | | hash_flow.rb:10:5:10:8 | hash [element :a] | semmle.label | hash [element :a] | @@ -2264,21 +2258,14 @@ nodes | hash_flow.rb:996:14:996:19 | ...[...] | semmle.label | ...[...] | | hash_flow.rb:998:14:998:15 | h2 [element :b] | semmle.label | h2 [element :b] | | hash_flow.rb:998:14:998:18 | ...[...] | semmle.label | ...[...] | -| hash_flow.rb:1006:5:1006:5 | [post] h [element] | semmle.label | [post] h [element] | -| hash_flow.rb:1006:14:1006:24 | call to taint | semmle.label | call to taint | -| hash_flow.rb:1007:5:1007:8 | keys [element] | semmle.label | keys [element] | -| hash_flow.rb:1007:12:1007:12 | h [element] | semmle.label | h [element] | -| hash_flow.rb:1007:12:1007:17 | call to keys [element] | semmle.label | call to keys [element] | -| hash_flow.rb:1008:10:1008:13 | keys [element] | semmle.label | keys [element] | -| hash_flow.rb:1008:10:1008:17 | ...[...] | semmle.label | ...[...] | +| hash_flow.rb:1011:5:1011:5 | h [element :a] | semmle.label | h [element :a] | +| hash_flow.rb:1011:9:1011:45 | call to [] [element :a] | semmle.label | call to [] [element :a] | +| hash_flow.rb:1011:14:1011:24 | call to taint | semmle.label | call to taint | | hash_flow.rb:1012:5:1012:5 | h [element :a] | semmle.label | h [element :a] | -| hash_flow.rb:1012:9:1012:45 | call to [] [element :a] | semmle.label | call to [] [element :a] | -| hash_flow.rb:1012:14:1012:24 | call to taint | semmle.label | call to taint | -| hash_flow.rb:1013:5:1013:5 | h [element :a] | semmle.label | h [element :a] | -| hash_flow.rb:1013:15:1013:15 | k | semmle.label | k | -| hash_flow.rb:1013:18:1013:18 | v | semmle.label | v | -| hash_flow.rb:1014:14:1014:14 | v | semmle.label | v | -| hash_flow.rb:1015:14:1015:14 | k | semmle.label | k | +| hash_flow.rb:1012:15:1012:15 | k | semmle.label | k | +| hash_flow.rb:1012:18:1012:18 | v | semmle.label | v | +| hash_flow.rb:1013:14:1013:14 | v | semmle.label | v | +| hash_flow.rb:1014:14:1014:14 | k | semmle.label | k | subpaths hashLiteral | hash_flow.rb:10:12:21:5 | call to [] | @@ -2352,8 +2339,7 @@ hashLiteral | hash_flow.rb:946:13:950:5 | call to [] | | hash_flow.rb:971:9:971:38 | ...[...] | | hash_flow.rb:994:14:994:47 | ...[...] | -| hash_flow.rb:1005:9:1005:10 | call to [] | -| hash_flow.rb:1012:9:1012:45 | call to [] | +| hash_flow.rb:1011:9:1011:45 | call to [] | #select | hash_flow.rb:22:10:22:17 | ...[...] | hash_flow.rb:11:15:11:24 | call to taint | hash_flow.rb:22:10:22:17 | ...[...] | $@ | hash_flow.rb:11:15:11:24 | call to taint | call to taint | | hash_flow.rb:24:10:24:17 | ...[...] | hash_flow.rb:13:12:13:21 | call to taint | hash_flow.rb:24:10:24:17 | ...[...] | $@ | hash_flow.rb:13:12:13:21 | call to taint | call to taint | @@ -2599,6 +2585,5 @@ hashLiteral | hash_flow.rb:975:10:975:13 | ...[...] | hash_flow.rb:971:23:971:31 | call to taint | hash_flow.rb:975:10:975:13 | ...[...] | $@ | hash_flow.rb:971:23:971:31 | call to taint | call to taint | | hash_flow.rb:996:14:996:19 | ...[...] | hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:996:14:996:19 | ...[...] | $@ | hash_flow.rb:994:30:994:40 | call to taint | call to taint | | hash_flow.rb:998:14:998:18 | ...[...] | hash_flow.rb:994:30:994:40 | call to taint | hash_flow.rb:998:14:998:18 | ...[...] | $@ | hash_flow.rb:994:30:994:40 | call to taint | call to taint | -| hash_flow.rb:1008:10:1008:17 | ...[...] | hash_flow.rb:1006:14:1006:24 | call to taint | hash_flow.rb:1008:10:1008:17 | ...[...] | $@ | hash_flow.rb:1006:14:1006:24 | call to taint | call to taint | -| hash_flow.rb:1014:14:1014:14 | v | hash_flow.rb:1012:14:1012:24 | call to taint | hash_flow.rb:1014:14:1014:14 | v | $@ | hash_flow.rb:1012:14:1012:24 | call to taint | call to taint | -| hash_flow.rb:1015:14:1015:14 | k | hash_flow.rb:1012:14:1012:24 | call to taint | hash_flow.rb:1015:14:1015:14 | k | $@ | hash_flow.rb:1012:14:1012:24 | call to taint | call to taint | +| hash_flow.rb:1013:14:1013:14 | v | hash_flow.rb:1011:14:1011:24 | call to taint | hash_flow.rb:1013:14:1013:14 | v | $@ | hash_flow.rb:1011:14:1011:24 | call to taint | call to taint | +| hash_flow.rb:1014:14:1014:14 | k | hash_flow.rb:1011:14:1011:24 | call to taint | hash_flow.rb:1014:14:1014:14 | k | $@ | hash_flow.rb:1011:14:1011:24 | call to taint | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.ql b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.ql index e3b694d3e757..5ec8ec0a0d66 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.ql +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash-flow.ql @@ -5,7 +5,7 @@ import codeql.ruby.AST import codeql.ruby.CFG import TestUtilities.InlineFlowTest -import ValueFlowTest<DefaultFlowConfig> +import DefaultFlowTest import ValueFlow::PathGraph query predicate hashLiteral(CfgNodes::ExprNodes::HashLiteralCfgNode n) { any() } diff --git a/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb b/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb index b88f8c3a4d49..edc1e325b09d 100644 --- a/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb +++ b/ruby/ql/test/library-tests/dataflow/hash-flow/hash_flow.rb @@ -59,7 +59,7 @@ def m3() x = {a: taint(3.2), b: 1} hash2 = Hash[x] sink(hash2[:a]) # $ hasValueFlow=3.2 - sink(hash2[:b]) + sink(hash2[:b]) # $ hasTaintFlow=3.2 hash3 = Hash[[[:a, taint(3.3)], [:b, 1]]] sink(hash3[:a]) # $ hasValueFlow=3.3 @@ -75,7 +75,7 @@ def m3() hash6 = Hash[{"a" => taint(3.6), "b" => 1}] sink(hash6["a"]) # $ hasValueFlow=3.6 - sink(hash6["b"]) + sink(hash6["b"]) # $ hasTaintFlow=3.6 end m3() @@ -1002,10 +1002,9 @@ def m54(i) M54.new.m54(:b) def m55 - h = {} - h[f()] = taint(55.1) + h = taint(55.1) keys = h.keys - sink(keys[:a]) # $ hasValueFlow=55.1 + sink(keys[f()]) # $ hasTaintFlow=55.1 end def m56 From 6ce3f35ef5ad81b2896b65a8de683276e52ce436 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 14:43:10 +0000 Subject: [PATCH 380/731] C++: Fix API for guards. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 42 ++++++++----------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index ab67d77f5cd0..83999cff9478 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -138,9 +138,9 @@ class GuardCondition extends Expr { cached predicate ensuresEq(Expr left, Expr right, int k, BasicBlock block, boolean areEqual) { none() } - /** Holds if (determined by this guard) `e == k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ + /** Holds if (determined by this guard) `e == k` evaluates to `areEqual` if this expression evaluates to `value`. */ cached - predicate comparesEq(Expr e, int k, boolean areEqual, boolean testIsTrue) { none() } + predicate comparesEq(Expr e, int k, boolean areEqual, AbstractValue value) { none() } /** * Holds if (determined by this guard) `e == k` must be `areEqual` in `block`. @@ -196,17 +196,18 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardCondition { ) } - override predicate comparesEq(Expr e, int k, boolean areEqual, boolean testIsTrue) { - exists(boolean partIsTrue, GuardCondition part | - this.(BinaryLogicalOperation).impliesValue(part, partIsTrue, testIsTrue) + override predicate comparesEq(Expr e, int k, boolean areEqual, AbstractValue value) { + exists(BooleanValue partValue, GuardCondition part | + this.(BinaryLogicalOperation) + .impliesValue(part, partValue.getValue(), value.(BooleanValue).getValue()) | - part.comparesEq(e, k, areEqual, partIsTrue) + part.comparesEq(e, k, areEqual, partValue) ) } override predicate ensuresEq(Expr e, int k, BasicBlock block, boolean areEqual) { - exists(boolean testIsTrue | - this.comparesEq(e, k, areEqual, testIsTrue) and this.controls(block, testIsTrue) + exists(AbstractValue value | + this.comparesEq(e, k, areEqual, value) and this.valueControls(block, value) ) } } @@ -270,18 +271,18 @@ private class GuardConditionFromIR extends GuardCondition { ) } - override predicate comparesEq(Expr e, int k, boolean areEqual, boolean testIsTrue) { + override predicate comparesEq(Expr e, int k, boolean areEqual, AbstractValue value) { exists(Instruction i | i.getUnconvertedResultExpression() = e and - ir.comparesEq(i.getAUse(), k, areEqual, testIsTrue) + ir.comparesEq(i.getAUse(), k, areEqual, value) ) } override predicate ensuresEq(Expr e, int k, BasicBlock block, boolean areEqual) { - exists(Instruction i, boolean testIsTrue | + exists(Instruction i, AbstractValue value | i.getUnconvertedResultExpression() = e and - ir.comparesEq(i.getAUse(), k, areEqual, testIsTrue) and - this.controls(block, testIsTrue) + ir.comparesEq(i.getAUse(), k, areEqual, value) and + this.valueControls(block, value) ) } @@ -492,19 +493,10 @@ class IRGuardCondition extends Instruction { ) } - /** Holds if (determined by this guard) `op == k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ + /** Holds if (determined by this guard) `op == k` evaluates to `areEqual` if this expression evaluates to `value`. */ cached - predicate comparesEq(Operand op, int k, boolean areEqual, boolean testIsTrue) { - exists(MatchValue mv | - compares_eq(this, op, k, areEqual, mv) and - // A match value cannot be dualized, so `testIsTrue` is always true - testIsTrue = true - ) - or - exists(BooleanValue bv | - compares_eq(this, op, k, areEqual, bv) and - bv.getValue() = testIsTrue - ) + predicate comparesEq(Operand op, int k, boolean areEqual, AbstractValue value) { + compares_eq(this, op, k, areEqual, value) } /** From c640bd67e934de2efcbbb3c26abe4bc77afdcd45 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 14:35:53 +0000 Subject: [PATCH 381/731] C++: Fix tests for guards. --- .../controlflow/guards-ir/tests.ql | 40 ++++++++++--------- .../controlflow/guards/GuardsCompare.expected | 6 +-- .../controlflow/guards/GuardsCompare.ql | 17 ++++---- 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql index 263c30c2fec5..6016f8648224 100644 --- a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql +++ b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql @@ -4,8 +4,8 @@ import semmle.code.cpp.controlflow.IRGuards query predicate astGuards(GuardCondition guard) { any() } query predicate astGuardsCompare(int startLine, string msg) { - exists(GuardCondition guard, Expr left, int k, string which, string op | - exists(boolean sense | + exists(GuardCondition guard, Expr left, int k, string op | + exists(boolean sense, string which | sense = true and which = "true" or sense = false and which = "false" @@ -21,14 +21,16 @@ query predicate astGuardsCompare(int startLine, string msg) { | msg = left + op + right + "+" + k + " when " + guard + " is " + which ) + ) + or + exists(AbstractValue value | + guard.comparesEq(left, k, true, value) and op = " == " or - ( - guard.comparesEq(left, k, true, sense) and op = " == " - or - guard.comparesEq(left, k, false, sense) and op = " != " - ) and - msg = left + op + k + " when " + guard + " is " + which - ) and + guard.comparesEq(left, k, false, value) and op = " != " + | + msg = left + op + k + " when " + guard + " is " + value + ) + | startLine = guard.getLocation().getStartLine() ) } @@ -71,8 +73,8 @@ query predicate astGuardsEnsure_const( query predicate irGuards(IRGuardCondition guard) { any() } query predicate irGuardsCompare(int startLine, string msg) { - exists(IRGuardCondition guard, Operand left, int k, string which, string op | - exists(boolean sense | + exists(IRGuardCondition guard, Operand left, int k, string op | + exists(boolean sense, string which | sense = true and which = "true" or sense = false and which = "false" @@ -91,16 +93,18 @@ query predicate irGuardsCompare(int startLine, string msg) { right.getAnyDef().getUnconvertedResultExpression() + "+" + k + " when " + guard + " is " + which ) + ) + or + exists(AbstractValue value | + guard.comparesEq(left, k, true, value) and op = " == " or - ( - guard.comparesEq(left, k, true, sense) and op = " == " - or - guard.comparesEq(left, k, false, sense) and op = " != " - ) and + guard.comparesEq(left, k, false, value) and op = " != " + | msg = left.getAnyDef().getUnconvertedResultExpression() + op + k + " when " + guard + " is " + - which - ) and + value + ) + | startLine = guard.getLocation().getStartLine() ) } diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected index 1057e8e10466..398c7f1558ff 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected @@ -55,9 +55,9 @@ | 58 | y < 0+0 when ... < ... is true | | 58 | y >= 0+0 when ... < ... is false | | 58 | y >= 0+0 when ... \|\| ... is false | -| 61 | i == 0 when i is true | -| 61 | i == 1 when i is true | -| 61 | i == 2 when i is true | +| 61 | i == 0 when i is Case[0] | +| 61 | i == 1 when i is Case[1] | +| 61 | i == 2 when i is Case[2] | | 75 | 0 != x+0 when ... == ... is false | | 75 | 0 == x+0 when ... == ... is true | | 75 | x != 0 when ... == ... is false | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql index 17d4fcaae941..5db52cd4a6e1 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql @@ -7,9 +7,9 @@ import cpp import semmle.code.cpp.controlflow.Guards -from GuardCondition guard, Expr left, int k, string which, string op, string msg +from GuardCondition guard, Expr left, int k, string op, string msg where - exists(boolean sense | + exists(boolean sense, string which | sense = true and which = "true" or sense = false and which = "false" @@ -25,12 +25,13 @@ where | msg = left + op + right + "+" + k + " when " + guard + " is " + which ) + ) + or + exists(AbstractValue value | + guard.comparesEq(left, k, true, value) and op = " == " or - ( - guard.comparesEq(left, k, true, sense) and op = " == " - or - guard.comparesEq(left, k, false, sense) and op = " != " - ) and - msg = left + op + k + " when " + guard + " is " + which + guard.comparesEq(left, k, false, value) and op = " != " + | + msg = left + op + k + " when " + guard + " is " + value ) select guard.getLocation().getStartLine(), msg From d3aa2eed646c9b8b623fcdf0c055123d4b849f40 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Tue, 19 Mar 2024 16:30:24 +0100 Subject: [PATCH 382/731] C#: Fix test. --- .../ql/test/library-tests/dataflow/library/FlowSummaries.ql | 3 +-- .../frameworks/EntityFramework/FlowSummaries.ql | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql index 856ea6d99e90..6b117c03ac08 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.ql @@ -1,6 +1,5 @@ import shared.FlowSummaries import semmle.code.csharp.dataflow.internal.ExternalFlow -import External final private class NeutralCallableFinal = NeutralCallable; @@ -18,4 +17,4 @@ class RelevantSinkCallable extends SinkCallable { import TestSummaryOutput<IncludeSummarizedCallable> import TestNeutralOutput<RelevantNeutralCallable> -import TestSourceSinkOutput<RelevantSourceCallable, RelevantSinkCallable> +import External::TestSourceSinkOutput<RelevantSourceCallable, RelevantSinkCallable> diff --git a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql index b5f0aa90ed4d..55cd03ede10b 100644 --- a/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql +++ b/csharp/ql/test/library-tests/frameworks/EntityFramework/FlowSummaries.ql @@ -3,12 +3,10 @@ import shared.FlowSummaries import semmle.code.csharp.frameworks.EntityFramework::EntityFramework import semmle.code.csharp.dataflow.internal.ExternalFlow as ExternalFlow -module TestSummaryInput implements TestSummaryInputSig { - class RelevantSummarizedCallable extends IncludeSummarizedCallable instanceof EFSummarizedCallable - { } +class RelevantSummarizedCallable extends IncludeSummarizedCallable instanceof EFSummarizedCallable { } -import TestSummaryOutput<TestSummaryInput> +import TestSummaryOutput<RelevantSummarizedCallable> query predicate sourceNode(DataFlow::Node node, string kind) { ExternalFlow::sourceNode(node, kind) From ba10ea812153d792436ae6acb6bce2c567bc7021 Mon Sep 17 00:00:00 2001 From: Robert Marsh <rdmarsh2@github.com> Date: Fri, 8 Mar 2024 21:54:27 +0000 Subject: [PATCH 383/731] C++: ReuseExpr IR translation --- .../raw/internal/TranslatedExpr.qll | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 51111c24572c..831f7310d8db 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -2769,6 +2769,43 @@ class TranslatedTemporaryObjectExpr extends TranslatedNonConstantExpr, final override Instruction getResult() { result = this.getTargetAddress() } } +class TranslatedReuseExpr extends TranslatedNonConstantExpr { + override ReuseExpr expr; + + override Instruction getFirstInstruction(EdgeKind kind) { + result = this.getInstruction(OnlyInstructionTag()) and + kind instanceof GotoEdge + } + + override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { + opcode instanceof Opcode::CopyValue and + tag instanceof OnlyInstructionTag and + resultType = this.getResultType() + } + + override Instruction getResult() { result = this.getInstruction(OnlyInstructionTag()) } + + override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { + tag = OnlyInstructionTag() and + kind instanceof GotoEdge and + result = this.getParent().getChildSuccessor(this, kind) + } + + override TranslatedElement getChildInternal(int id) { none() } + + override Instruction getALastInstructionInternal() { + result = this.getInstruction(OnlyInstructionTag()) + } + + override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { + tag = OnlyInstructionTag() and + operandTag instanceof UnaryOperandTag and + if getTranslatedExpr(expr.getReusedExpr()) instanceof TranslatedLoad + then result = getTranslatedExpr(expr.getReusedExpr()).(TranslatedLoad).getOperand().getResult() + else result = getTranslatedExpr(expr.getReusedExpr()).getResult() + } +} + /** * IR translation of a `throw` expression. */ From 3d4f7d880dd95f5cd691b5741f762a30b04c9e4d Mon Sep 17 00:00:00 2001 From: Robert Marsh <rdmarsh2@github.com> Date: Mon, 18 Mar 2024 20:03:06 +0000 Subject: [PATCH 384/731] C++: unsuppress destructoion of temporaries with extended lifetimes --- .../raw/internal/TranslatedElement.qll | 5 - .../raw/internal/TranslatedStmt.qll | 20 +--- .../library-tests/ir/ir/aliased_ir.expected | 92 +++++++++++++------ .../ir/ir/operand_locations.expected | 52 ++++++++++- .../test/library-tests/ir/ir/raw_ir.expected | 62 +++++++++---- 5 files changed, 156 insertions(+), 75 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 81c704edb8b7..a9d4b6e1095f 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -99,11 +99,6 @@ private predicate ignoreExprAndDescendants(Expr expr) { or // suppress destructors of temporary variables until proper support is added for them. exists(Expr parent | parent.getAnImplicitDestructorCall() = expr) - or - exists(Stmt parent | - parent.getAnImplicitDestructorCall() = expr and - expr.(DestructorCall).getQualifier() instanceof ReuseExpr - ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll index 247b15ed4c4a..d8ec66a2ee71 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll @@ -248,19 +248,9 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { final override TranslatedElement getChild(int id) { result = this.getChildInternal(id) or - exists(int destructorIndex, int tempDestructorCount | + exists(int destructorIndex | result.(TranslatedExpr).getExpr() = stmt.getImplicitDestructorCall(destructorIndex) and - id = this.getFirstDestructorCallIndex() + destructorIndex - tempDestructorCount and - // suppress destructors of temporary variables until proper support is added for them. - tempDestructorCount = - count(DestructorCall call, int tempIndex | - stmt.getImplicitDestructorCall(tempIndex) = call and - tempIndex < destructorIndex and - call.getQualifier() instanceof ReuseExpr - | - call - ) and - not stmt.getImplicitDestructorCall(destructorIndex).getQualifier() instanceof ReuseExpr + id = this.getFirstDestructorCallIndex() + destructorIndex ) } @@ -271,11 +261,7 @@ abstract class TranslatedStmt extends TranslatedElement, TTranslatedStmt { } final override predicate hasAnImplicitDestructorCall() { - exists(stmt.getAnImplicitDestructorCall()) and - // suppress destructors of temporary variables until proper support is added for them. - exists(Expr expr | stmt.getAnImplicitDestructorCall().getQualifier() = expr | - not expr instanceof ReuseExpr - ) + exists(stmt.getAnImplicitDestructorCall()) } final override string toString() { result = stmt.toString() } diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index a5a095787505..a0571d22eef3 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -891,24 +891,32 @@ destructors_for_temps.cpp: # 29| void temp_test3() # 29| Block 0 -# 29| v29_1(void) = EnterFunction : -# 29| m29_2(unknown) = AliasedDefinition : -# 29| m29_3(unknown) = InitializeNonLocal : -# 29| m29_4(unknown) = Chi : total:m29_2, partial:m29_3 -# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] : -# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] : -# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] : -# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3 -# 30| m30_5(unknown) = ^CallSideEffect : ~m29_4 -# 30| m30_6(unknown) = Chi : total:m29_4, partial:m30_5 -# 30| m30_7(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4 -# 30| r30_8(glval<ClassWithDestructor2>) = Convert : r30_2 -# 30| r30_9(ClassWithDestructor2 &) = CopyValue : r30_8 -# 30| m30_10(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_9 -# 31| v31_1(void) = NoOp : -# 29| v29_5(void) = ReturnVoid : -# 29| v29_6(void) = AliasedUse : ~m30_6 -# 29| v29_7(void) = ExitFunction : +# 29| v29_1(void) = EnterFunction : +# 29| m29_2(unknown) = AliasedDefinition : +# 29| m29_3(unknown) = InitializeNonLocal : +# 29| m29_4(unknown) = Chi : total:m29_2, partial:m29_3 +# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] : +# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] : +# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] : +# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3 +# 30| m30_5(unknown) = ^CallSideEffect : ~m29_4 +# 30| m30_6(unknown) = Chi : total:m29_4, partial:m30_5 +# 30| m30_7(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4 +# 30| r30_8(glval<ClassWithDestructor2>) = Convert : r30_2 +# 30| r30_9(ClassWithDestructor2 &) = CopyValue : r30_8 +# 30| m30_10(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_9 +# 31| v31_1(void) = NoOp : +# 31| r31_2(glval<ClassWithDestructor2>) = CopyValue : r30_2 +# 31| r31_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 31| v31_4(void) = Call[~ClassWithDestructor2] : func:r31_3, this:r31_2 +# 31| m31_5(unknown) = ^CallSideEffect : ~m30_6 +# 31| m31_6(unknown) = Chi : total:m30_6, partial:m31_5 +# 31| v31_7(void) = ^IndirectReadSideEffect[-1] : &:r31_2, m30_7 +# 31| m31_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r31_2 +# 31| m31_9(ClassWithDestructor2) = Chi : total:m30_7, partial:m31_8 +# 29| v29_5(void) = ReturnVoid : +# 29| v29_6(void) = AliasedUse : ~m31_6 +# 29| v29_7(void) = ExitFunction : # 33| void temp_test4() # 33| Block 0 @@ -935,16 +943,24 @@ destructors_for_temps.cpp: # 35| r35_9(ClassWithDestructor2 &) = CopyValue : r35_8 # 35| m35_10(ClassWithDestructor2 &) = Store[rs2] : &:r35_1, r35_9 # 36| v36_1(void) = NoOp : -# 36| r36_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 36| r36_2(glval<ClassWithDestructor2>) = CopyValue : r35_2 # 36| r36_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : # 36| v36_4(void) = Call[~ClassWithDestructor2] : func:r36_3, this:r36_2 # 36| m36_5(unknown) = ^CallSideEffect : ~m35_6 # 36| m36_6(unknown) = Chi : total:m35_6, partial:m36_5 -# 36| v36_7(void) = ^IndirectReadSideEffect[-1] : &:r36_2, m34_8 +# 36| v36_7(void) = ^IndirectReadSideEffect[-1] : &:r36_2, m35_7 # 36| m36_8(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_2 -# 36| m36_9(ClassWithDestructor2) = Chi : total:m34_8, partial:m36_8 +# 36| m36_9(ClassWithDestructor2) = Chi : total:m35_7, partial:m36_8 +# 36| r36_10(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 36| r36_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 36| v36_12(void) = Call[~ClassWithDestructor2] : func:r36_11, this:r36_10 +# 36| m36_13(unknown) = ^CallSideEffect : ~m36_6 +# 36| m36_14(unknown) = Chi : total:m36_6, partial:m36_13 +# 36| v36_15(void) = ^IndirectReadSideEffect[-1] : &:r36_10, m34_8 +# 36| m36_16(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_10 +# 36| m36_17(ClassWithDestructor2) = Chi : total:m34_8, partial:m36_16 # 33| v33_5(void) = ReturnVoid : -# 33| v33_6(void) = AliasedUse : ~m36_6 +# 33| v33_6(void) = AliasedUse : ~m36_14 # 33| v33_7(void) = ExitFunction : # 38| void temp_test5(bool) @@ -8882,16 +8898,24 @@ ir.cpp: # 1425| m1425_5(unknown) = Chi : total:m1423_11, partial:m1425_4 # 1425| m1425_6(String) = Store[#temp1425:5] : &:r1425_1, r1425_3 # 1426| v1426_1(void) = NoOp : -# 1426| r1426_2(glval<String>) = VariableAddress[s] : +# 1426| r1426_2(glval<String>) = CopyValue : r1416_2 # 1426| r1426_3(glval<unknown>) = FunctionAddress[~String] : # 1426| v1426_4(void) = Call[~String] : func:r1426_3, this:r1426_2 # 1426| m1426_5(unknown) = ^CallSideEffect : ~m1425_5 # 1426| m1426_6(unknown) = Chi : total:m1425_5, partial:m1426_5 -# 1426| v1426_7(void) = ^IndirectReadSideEffect[-1] : &:r1426_2, m1415_6 +# 1426| v1426_7(void) = ^IndirectReadSideEffect[-1] : &:r1426_2, m1416_7 # 1426| m1426_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_2 -# 1426| m1426_9(String) = Chi : total:m1415_6, partial:m1426_8 +# 1426| m1426_9(String) = Chi : total:m1416_7, partial:m1426_8 +# 1426| r1426_10(glval<String>) = VariableAddress[s] : +# 1426| r1426_11(glval<unknown>) = FunctionAddress[~String] : +# 1426| v1426_12(void) = Call[~String] : func:r1426_11, this:r1426_10 +# 1426| m1426_13(unknown) = ^CallSideEffect : ~m1426_6 +# 1426| m1426_14(unknown) = Chi : total:m1426_6, partial:m1426_13 +# 1426| v1426_15(void) = ^IndirectReadSideEffect[-1] : &:r1426_10, m1415_6 +# 1426| m1426_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_10 +# 1426| m1426_17(String) = Chi : total:m1415_6, partial:m1426_16 # 1414| v1414_5(void) = ReturnVoid : -# 1414| v1414_6(void) = AliasedUse : ~m1426_6 +# 1414| v1414_6(void) = AliasedUse : ~m1426_14 # 1414| v1414_7(void) = ExitFunction : # 1428| void temporary_destructor_only() @@ -8973,16 +8997,24 @@ ir.cpp: # 1438| v1438_7(void) = ^IndirectReadSideEffect[-1] : &:r1438_2, m1431_2 # 1438| m1438_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_2 # 1438| m1438_9(destructor_only) = Chi : total:m1431_2, partial:m1438_8 -# 1438| r1438_10(glval<destructor_only>) = VariableAddress[d] : +# 1438| r1438_10(glval<destructor_only>) = CopyValue : r1430_2 # 1438| r1438_11(glval<unknown>) = FunctionAddress[~destructor_only] : # 1438| v1438_12(void) = Call[~destructor_only] : func:r1438_11, this:r1438_10 # 1438| m1438_13(unknown) = ^CallSideEffect : ~m1438_6 # 1438| m1438_14(unknown) = Chi : total:m1438_6, partial:m1438_13 -# 1438| v1438_15(void) = ^IndirectReadSideEffect[-1] : &:r1438_10, m1429_6 +# 1438| v1438_15(void) = ^IndirectReadSideEffect[-1] : &:r1438_10, m1430_7 # 1438| m1438_16(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_10 -# 1438| m1438_17(destructor_only) = Chi : total:m1429_6, partial:m1438_16 +# 1438| m1438_17(destructor_only) = Chi : total:m1430_7, partial:m1438_16 +# 1438| r1438_18(glval<destructor_only>) = VariableAddress[d] : +# 1438| r1438_19(glval<unknown>) = FunctionAddress[~destructor_only] : +# 1438| v1438_20(void) = Call[~destructor_only] : func:r1438_19, this:r1438_18 +# 1438| m1438_21(unknown) = ^CallSideEffect : ~m1438_14 +# 1438| m1438_22(unknown) = Chi : total:m1438_14, partial:m1438_21 +# 1438| v1438_23(void) = ^IndirectReadSideEffect[-1] : &:r1438_18, m1429_6 +# 1438| m1438_24(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_18 +# 1438| m1438_25(destructor_only) = Chi : total:m1429_6, partial:m1438_24 # 1428| v1428_5(void) = ReturnVoid : -# 1428| v1428_6(void) = AliasedUse : ~m1438_14 +# 1428| v1428_6(void) = AliasedUse : ~m1438_22 # 1428| v1428_7(void) = ExitFunction : # 1440| void temporary_copy_constructor() diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index ad4cfdb1e7cd..01032ccce8e4 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -805,7 +805,7 @@ | destructors_for_temps.cpp:23:68:23:72 | Unary | r23_27 | | destructors_for_temps.cpp:29:6:29:15 | ChiPartial | partial:m29_3 | | destructors_for_temps.cpp:29:6:29:15 | ChiTotal | total:m29_2 | -| destructors_for_temps.cpp:29:6:29:15 | SideEffect | ~m30_6 | +| destructors_for_temps.cpp:29:6:29:15 | SideEffect | ~m31_6 | | destructors_for_temps.cpp:30:33:30:34 | Address | &:r30_1 | | destructors_for_temps.cpp:30:38:30:70 | CallTarget | func:r30_3 | | destructors_for_temps.cpp:30:38:30:70 | ChiPartial | partial:m30_5 | @@ -815,10 +815,21 @@ | destructors_for_temps.cpp:30:38:30:72 | Address | &:r30_2 | | destructors_for_temps.cpp:30:38:30:72 | StoreValue | r30_9 | | destructors_for_temps.cpp:30:38:30:72 | Unary | r30_2 | +| destructors_for_temps.cpp:30:38:30:72 | Unary | r30_2 | | destructors_for_temps.cpp:30:38:30:72 | Unary | r30_8 | +| destructors_for_temps.cpp:31:1:31:1 | Address | &:r31_2 | +| destructors_for_temps.cpp:31:1:31:1 | Address | &:r31_2 | +| destructors_for_temps.cpp:31:1:31:1 | Arg(this) | this:r31_2 | +| destructors_for_temps.cpp:31:1:31:1 | CallTarget | func:r31_3 | +| destructors_for_temps.cpp:31:1:31:1 | ChiPartial | partial:m31_5 | +| destructors_for_temps.cpp:31:1:31:1 | ChiPartial | partial:m31_8 | +| destructors_for_temps.cpp:31:1:31:1 | ChiTotal | total:m30_6 | +| destructors_for_temps.cpp:31:1:31:1 | ChiTotal | total:m30_7 | +| destructors_for_temps.cpp:31:1:31:1 | SideEffect | m30_7 | +| destructors_for_temps.cpp:31:1:31:1 | SideEffect | ~m30_6 | | destructors_for_temps.cpp:33:6:33:15 | ChiPartial | partial:m33_3 | | destructors_for_temps.cpp:33:6:33:15 | ChiTotal | total:m33_2 | -| destructors_for_temps.cpp:33:6:33:15 | SideEffect | ~m36_6 | +| destructors_for_temps.cpp:33:6:33:15 | SideEffect | ~m36_14 | | destructors_for_temps.cpp:34:26:34:26 | Address | &:r34_1 | | destructors_for_temps.cpp:34:26:34:26 | Address | &:r34_1 | | destructors_for_temps.cpp:34:26:34:26 | Arg(this) | this:r34_1 | @@ -837,17 +848,28 @@ | destructors_for_temps.cpp:35:39:35:73 | Address | &:r35_2 | | destructors_for_temps.cpp:35:39:35:73 | StoreValue | r35_9 | | destructors_for_temps.cpp:35:39:35:73 | Unary | r35_2 | +| destructors_for_temps.cpp:35:39:35:73 | Unary | r35_2 | | destructors_for_temps.cpp:35:39:35:73 | Unary | r35_8 | | destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_2 | | destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_2 | +| destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_10 | +| destructors_for_temps.cpp:36:1:36:1 | Address | &:r36_10 | | destructors_for_temps.cpp:36:1:36:1 | Arg(this) | this:r36_2 | +| destructors_for_temps.cpp:36:1:36:1 | Arg(this) | this:r36_10 | | destructors_for_temps.cpp:36:1:36:1 | CallTarget | func:r36_3 | +| destructors_for_temps.cpp:36:1:36:1 | CallTarget | func:r36_11 | | destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_5 | | destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_8 | +| destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_13 | +| destructors_for_temps.cpp:36:1:36:1 | ChiPartial | partial:m36_16 | | destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m34_8 | | destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m35_6 | +| destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m35_7 | +| destructors_for_temps.cpp:36:1:36:1 | ChiTotal | total:m36_6 | | destructors_for_temps.cpp:36:1:36:1 | SideEffect | m34_8 | +| destructors_for_temps.cpp:36:1:36:1 | SideEffect | m35_7 | | destructors_for_temps.cpp:36:1:36:1 | SideEffect | ~m35_6 | +| destructors_for_temps.cpp:36:1:36:1 | SideEffect | ~m36_6 | | destructors_for_temps.cpp:38:6:38:15 | ChiPartial | partial:m38_3 | | destructors_for_temps.cpp:38:6:38:15 | ChiTotal | total:m38_2 | | destructors_for_temps.cpp:38:6:38:15 | SideEffect | ~m39_5 | @@ -7257,7 +7279,7 @@ | ir.cpp:1376:5:1376:15 | StoreValue | r1376_2 | | ir.cpp:1414:6:1414:21 | ChiPartial | partial:m1414_3 | | ir.cpp:1414:6:1414:21 | ChiTotal | total:m1414_2 | -| ir.cpp:1414:6:1414:21 | SideEffect | ~m1426_6 | +| ir.cpp:1414:6:1414:21 | SideEffect | ~m1426_14 | | ir.cpp:1415:12:1415:12 | Address | &:r1415_1 | | ir.cpp:1415:16:1415:34 | CallTarget | func:r1415_2 | | ir.cpp:1415:16:1415:34 | ChiPartial | partial:m1415_4 | @@ -7273,6 +7295,7 @@ | ir.cpp:1416:24:1416:44 | Address | &:r1416_2 | | ir.cpp:1416:24:1416:44 | StoreValue | r1416_9 | | ir.cpp:1416:24:1416:44 | Unary | r1416_2 | +| ir.cpp:1416:24:1416:44 | Unary | r1416_2 | | ir.cpp:1416:24:1416:44 | Unary | r1416_8 | | ir.cpp:1418:5:1418:13 | CallTarget | func:r1418_1 | | ir.cpp:1418:5:1418:13 | ChiPartial | partial:m1418_6 | @@ -7384,17 +7407,27 @@ | ir.cpp:1425:5:1425:30 | Address | &:r1425_1 | | ir.cpp:1426:1:1426:1 | Address | &:r1426_2 | | ir.cpp:1426:1:1426:1 | Address | &:r1426_2 | +| ir.cpp:1426:1:1426:1 | Address | &:r1426_10 | +| ir.cpp:1426:1:1426:1 | Address | &:r1426_10 | | ir.cpp:1426:1:1426:1 | Arg(this) | this:r1426_2 | +| ir.cpp:1426:1:1426:1 | Arg(this) | this:r1426_10 | | ir.cpp:1426:1:1426:1 | CallTarget | func:r1426_3 | +| ir.cpp:1426:1:1426:1 | CallTarget | func:r1426_11 | | ir.cpp:1426:1:1426:1 | ChiPartial | partial:m1426_5 | | ir.cpp:1426:1:1426:1 | ChiPartial | partial:m1426_8 | +| ir.cpp:1426:1:1426:1 | ChiPartial | partial:m1426_13 | +| ir.cpp:1426:1:1426:1 | ChiPartial | partial:m1426_16 | | ir.cpp:1426:1:1426:1 | ChiTotal | total:m1415_6 | +| ir.cpp:1426:1:1426:1 | ChiTotal | total:m1416_7 | | ir.cpp:1426:1:1426:1 | ChiTotal | total:m1425_5 | +| ir.cpp:1426:1:1426:1 | ChiTotal | total:m1426_6 | | ir.cpp:1426:1:1426:1 | SideEffect | m1415_6 | +| ir.cpp:1426:1:1426:1 | SideEffect | m1416_7 | | ir.cpp:1426:1:1426:1 | SideEffect | ~m1425_5 | +| ir.cpp:1426:1:1426:1 | SideEffect | ~m1426_6 | | ir.cpp:1428:6:1428:30 | ChiPartial | partial:m1428_3 | | ir.cpp:1428:6:1428:30 | ChiTotal | total:m1428_2 | -| ir.cpp:1428:6:1428:30 | SideEffect | ~m1438_14 | +| ir.cpp:1428:6:1428:30 | SideEffect | ~m1438_22 | | ir.cpp:1429:21:1429:21 | Address | &:r1429_1 | | ir.cpp:1429:25:1429:52 | CallTarget | func:r1429_2 | | ir.cpp:1429:25:1429:52 | ChiPartial | partial:m1429_4 | @@ -7410,6 +7443,7 @@ | ir.cpp:1430:33:1430:62 | Address | &:r1430_2 | | ir.cpp:1430:33:1430:62 | StoreValue | r1430_9 | | ir.cpp:1430:33:1430:62 | Unary | r1430_2 | +| ir.cpp:1430:33:1430:62 | Unary | r1430_2 | | ir.cpp:1430:33:1430:62 | Unary | r1430_8 | | ir.cpp:1431:21:1431:22 | Address | &:r1431_1 | | ir.cpp:1432:5:1432:13 | CallTarget | func:r1432_1 | @@ -7470,22 +7504,32 @@ | ir.cpp:1438:1:1438:1 | Address | &:r1438_2 | | ir.cpp:1438:1:1438:1 | Address | &:r1438_10 | | ir.cpp:1438:1:1438:1 | Address | &:r1438_10 | +| ir.cpp:1438:1:1438:1 | Address | &:r1438_18 | +| ir.cpp:1438:1:1438:1 | Address | &:r1438_18 | | ir.cpp:1438:1:1438:1 | Arg(this) | this:r1438_2 | | ir.cpp:1438:1:1438:1 | Arg(this) | this:r1438_10 | +| ir.cpp:1438:1:1438:1 | Arg(this) | this:r1438_18 | | ir.cpp:1438:1:1438:1 | CallTarget | func:r1438_3 | | ir.cpp:1438:1:1438:1 | CallTarget | func:r1438_11 | +| ir.cpp:1438:1:1438:1 | CallTarget | func:r1438_19 | | ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_5 | | ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_8 | | ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_13 | | ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_16 | +| ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_21 | +| ir.cpp:1438:1:1438:1 | ChiPartial | partial:m1438_24 | | ir.cpp:1438:1:1438:1 | ChiTotal | total:m1429_6 | +| ir.cpp:1438:1:1438:1 | ChiTotal | total:m1430_7 | | ir.cpp:1438:1:1438:1 | ChiTotal | total:m1431_2 | | ir.cpp:1438:1:1438:1 | ChiTotal | total:m1437_5 | | ir.cpp:1438:1:1438:1 | ChiTotal | total:m1438_6 | +| ir.cpp:1438:1:1438:1 | ChiTotal | total:m1438_14 | | ir.cpp:1438:1:1438:1 | SideEffect | m1429_6 | +| ir.cpp:1438:1:1438:1 | SideEffect | m1430_7 | | ir.cpp:1438:1:1438:1 | SideEffect | m1431_2 | | ir.cpp:1438:1:1438:1 | SideEffect | ~m1437_5 | | ir.cpp:1438:1:1438:1 | SideEffect | ~m1438_6 | +| ir.cpp:1438:1:1438:1 | SideEffect | ~m1438_14 | | ir.cpp:1440:6:1440:31 | ChiPartial | partial:m1440_3 | | ir.cpp:1440:6:1440:31 | ChiTotal | total:m1440_2 | | ir.cpp:1440:6:1440:31 | SideEffect | ~m1450_6 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 0c42f3d2af6d..189ff886416e 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -849,22 +849,28 @@ destructors_for_temps.cpp: # 29| void temp_test3() # 29| Block 0 -# 29| v29_1(void) = EnterFunction : -# 29| mu29_2(unknown) = AliasedDefinition : -# 29| mu29_3(unknown) = InitializeNonLocal : -# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] : -# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] : -# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] : -# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3 -# 30| mu30_5(unknown) = ^CallSideEffect : ~m? -# 30| mu30_6(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4 -# 30| r30_7(glval<ClassWithDestructor2>) = Convert : r30_2 -# 30| r30_8(ClassWithDestructor2 &) = CopyValue : r30_7 -# 30| mu30_9(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_8 -# 31| v31_1(void) = NoOp : -# 29| v29_4(void) = ReturnVoid : -# 29| v29_5(void) = AliasedUse : ~m? -# 29| v29_6(void) = ExitFunction : +# 29| v29_1(void) = EnterFunction : +# 29| mu29_2(unknown) = AliasedDefinition : +# 29| mu29_3(unknown) = InitializeNonLocal : +# 30| r30_1(glval<ClassWithDestructor2 &>) = VariableAddress[rs] : +# 30| r30_2(glval<ClassWithDestructor2>) = VariableAddress[#temp30:38] : +# 30| r30_3(glval<unknown>) = FunctionAddress[returnValue] : +# 30| r30_4(ClassWithDestructor2) = Call[returnValue] : func:r30_3 +# 30| mu30_5(unknown) = ^CallSideEffect : ~m? +# 30| mu30_6(ClassWithDestructor2) = Store[#temp30:38] : &:r30_2, r30_4 +# 30| r30_7(glval<ClassWithDestructor2>) = Convert : r30_2 +# 30| r30_8(ClassWithDestructor2 &) = CopyValue : r30_7 +# 30| mu30_9(ClassWithDestructor2 &) = Store[rs] : &:r30_1, r30_8 +# 31| v31_1(void) = NoOp : +# 31| r31_2(glval<ClassWithDestructor2>) = CopyValue : r30_2 +# 31| r31_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 31| v31_4(void) = Call[~ClassWithDestructor2] : func:r31_3, this:r31_2 +# 31| mu31_5(unknown) = ^CallSideEffect : ~m? +# 31| v31_6(void) = ^IndirectReadSideEffect[-1] : &:r31_2, ~m? +# 31| mu31_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r31_2 +# 29| v29_4(void) = ReturnVoid : +# 29| v29_5(void) = AliasedUse : ~m? +# 29| v29_6(void) = ExitFunction : # 33| void temp_test4() # 33| Block 0 @@ -887,12 +893,18 @@ destructors_for_temps.cpp: # 35| r35_8(ClassWithDestructor2 &) = CopyValue : r35_7 # 35| mu35_9(ClassWithDestructor2 &) = Store[rs2] : &:r35_1, r35_8 # 36| v36_1(void) = NoOp : -# 36| r36_2(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 36| r36_2(glval<ClassWithDestructor2>) = CopyValue : r35_2 # 36| r36_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : # 36| v36_4(void) = Call[~ClassWithDestructor2] : func:r36_3, this:r36_2 # 36| mu36_5(unknown) = ^CallSideEffect : ~m? # 36| v36_6(void) = ^IndirectReadSideEffect[-1] : &:r36_2, ~m? # 36| mu36_7(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_2 +# 36| r36_8(glval<ClassWithDestructor2>) = VariableAddress[c] : +# 36| r36_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor2] : +# 36| v36_10(void) = Call[~ClassWithDestructor2] : func:r36_9, this:r36_8 +# 36| mu36_11(unknown) = ^CallSideEffect : ~m? +# 36| v36_12(void) = ^IndirectReadSideEffect[-1] : &:r36_8, ~m? +# 36| mu36_13(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r36_8 # 33| v33_4(void) = ReturnVoid : # 33| v33_5(void) = AliasedUse : ~m? # 33| v33_6(void) = ExitFunction : @@ -8321,12 +8333,18 @@ ir.cpp: # 1425| mu1425_4(unknown) = ^CallSideEffect : ~m? # 1425| mu1425_5(String) = Store[#temp1425:5] : &:r1425_1, r1425_3 # 1426| v1426_1(void) = NoOp : -# 1426| r1426_2(glval<String>) = VariableAddress[s] : +# 1426| r1426_2(glval<String>) = CopyValue : r1416_2 # 1426| r1426_3(glval<unknown>) = FunctionAddress[~String] : # 1426| v1426_4(void) = Call[~String] : func:r1426_3, this:r1426_2 # 1426| mu1426_5(unknown) = ^CallSideEffect : ~m? # 1426| v1426_6(void) = ^IndirectReadSideEffect[-1] : &:r1426_2, ~m? # 1426| mu1426_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_2 +# 1426| r1426_8(glval<String>) = VariableAddress[s] : +# 1426| r1426_9(glval<unknown>) = FunctionAddress[~String] : +# 1426| v1426_10(void) = Call[~String] : func:r1426_9, this:r1426_8 +# 1426| mu1426_11(unknown) = ^CallSideEffect : ~m? +# 1426| v1426_12(void) = ^IndirectReadSideEffect[-1] : &:r1426_8, ~m? +# 1426| mu1426_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_8 # 1414| v1414_4(void) = ReturnVoid : # 1414| v1414_5(void) = AliasedUse : ~m? # 1414| v1414_6(void) = ExitFunction : @@ -8397,12 +8415,18 @@ ir.cpp: # 1438| mu1438_5(unknown) = ^CallSideEffect : ~m? # 1438| v1438_6(void) = ^IndirectReadSideEffect[-1] : &:r1438_2, ~m? # 1438| mu1438_7(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_2 -# 1438| r1438_8(glval<destructor_only>) = VariableAddress[d] : +# 1438| r1438_8(glval<destructor_only>) = CopyValue : r1430_2 # 1438| r1438_9(glval<unknown>) = FunctionAddress[~destructor_only] : # 1438| v1438_10(void) = Call[~destructor_only] : func:r1438_9, this:r1438_8 # 1438| mu1438_11(unknown) = ^CallSideEffect : ~m? # 1438| v1438_12(void) = ^IndirectReadSideEffect[-1] : &:r1438_8, ~m? # 1438| mu1438_13(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_8 +# 1438| r1438_14(glval<destructor_only>) = VariableAddress[d] : +# 1438| r1438_15(glval<unknown>) = FunctionAddress[~destructor_only] : +# 1438| v1438_16(void) = Call[~destructor_only] : func:r1438_15, this:r1438_14 +# 1438| mu1438_17(unknown) = ^CallSideEffect : ~m? +# 1438| v1438_18(void) = ^IndirectReadSideEffect[-1] : &:r1438_14, ~m? +# 1438| mu1438_19(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_14 # 1428| v1428_4(void) = ReturnVoid : # 1428| v1428_5(void) = AliasedUse : ~m? # 1428| v1428_6(void) = ExitFunction : From 5a30ad162ad7a3500b5a20e6b188c6f6b7adbc1c Mon Sep 17 00:00:00 2001 From: Robert Marsh <rdmarsh2@github.com> Date: Tue, 19 Mar 2024 14:50:47 +0000 Subject: [PATCH 385/731] C++: Add a comment for ReusedExpr IR translation --- .../ir/implementation/raw/internal/TranslatedExpr.qll | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 831f7310d8db..8684f4e56069 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -2769,6 +2769,13 @@ class TranslatedTemporaryObjectExpr extends TranslatedNonConstantExpr, final override Instruction getResult() { result = this.getTargetAddress() } } +/** + * IR translation of a `ReuseExpr`. + * + * This translation produces a copy of the glvalue instruction holding the (unconverted) result + * of the reused expression. In the case where the original expression was a prvalue, the + * result will be a copy of the glvalue operand of a `TranslatedLoad`. + */ class TranslatedReuseExpr extends TranslatedNonConstantExpr { override ReuseExpr expr; @@ -2797,7 +2804,7 @@ class TranslatedReuseExpr extends TranslatedNonConstantExpr { result = this.getInstruction(OnlyInstructionTag()) } - override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { + override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { tag = OnlyInstructionTag() and operandTag instanceof UnaryOperandTag and if getTranslatedExpr(expr.getReusedExpr()) instanceof TranslatedLoad From 467f4e11a1405517c587b55bcae824a5ea6306e4 Mon Sep 17 00:00:00 2001 From: Robert Marsh <rdmarsh2@github.com> Date: Tue, 19 Mar 2024 15:55:36 +0000 Subject: [PATCH 386/731] C++: Change note for IR translation of destruction of temporaries with extended lifetimes --- .../change-notes/2024-03-19-ir-temp-extended-destructors.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md diff --git a/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md b/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md new file mode 100644 index 000000000000..6def83033361 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added destructors for temporary objects with extended lifetimes to the intermediate representation. \ No newline at end of file From 458ee13345a93021f1da581d4cc9ccc36b2918ce Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 16:23:57 +0000 Subject: [PATCH 387/731] C++: Add constant analysis for bitwise operations now that these are no longer constant folded by IR construction. --- .../implementation/raw/constant/ConstantAnalysis.qll | 6 ++++++ .../semmle/code/cpp/ir/internal/IntegerPartial.qll | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/constant/ConstantAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/constant/ConstantAnalysis.qll index 47b744b3f7ce..f65799f9a61f 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/constant/ConstantAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/constant/ConstantAnalysis.qll @@ -38,6 +38,12 @@ private int getBinaryInstructionValue(BinaryInstruction instr) { or instr instanceof DivInstruction and result = div(left, right) or + instr instanceof BitOrInstruction and result = bitOr(left, right) + or + instr instanceof BitAndInstruction and result = bitAnd(left, right) + or + instr instanceof BitXorInstruction and result = bitXor(left, right) + or instr instanceof CompareEQInstruction and result = compareEQ(left, right) or instr instanceof CompareNEInstruction and result = compareNE(left, right) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll index 0e24f283b174..33681dde0d46 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll @@ -89,6 +89,18 @@ int compareLE(int a, int b) { if a <= b then result = 1 else result = 0 } bindingset[a, b] int compareGE(int a, int b) { if a >= b then result = 1 else result = 0 } +/** Returns `a >= b`. */ +bindingset[a, b] +int bitOr(int a, int b) { result = a.bitOr(b) } + +/** Returns `a >= b`. */ +bindingset[a, b] +int bitAnd(int a, int b) { result = a.bitAnd(b) } + +/** Returns `a >= b`. */ +bindingset[a, b] +int bitXor(int a, int b) { result = a.bitXor(b) } + /** * Returns `-a`. If the negation would overflow, there is no result. */ From 357a2ba733ea4ffea451b455d5ac57588cd69154 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 16:24:11 +0000 Subject: [PATCH 388/731] C++: Sync identical files. --- .../aliased_ssa/constant/ConstantAnalysis.qll | 6 ++++++ .../unaliased_ssa/constant/ConstantAnalysis.qll | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/constant/ConstantAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/constant/ConstantAnalysis.qll index 47b744b3f7ce..f65799f9a61f 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/constant/ConstantAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/constant/ConstantAnalysis.qll @@ -38,6 +38,12 @@ private int getBinaryInstructionValue(BinaryInstruction instr) { or instr instanceof DivInstruction and result = div(left, right) or + instr instanceof BitOrInstruction and result = bitOr(left, right) + or + instr instanceof BitAndInstruction and result = bitAnd(left, right) + or + instr instanceof BitXorInstruction and result = bitXor(left, right) + or instr instanceof CompareEQInstruction and result = compareEQ(left, right) or instr instanceof CompareNEInstruction and result = compareNE(left, right) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/constant/ConstantAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/constant/ConstantAnalysis.qll index 47b744b3f7ce..f65799f9a61f 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/constant/ConstantAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/constant/ConstantAnalysis.qll @@ -38,6 +38,12 @@ private int getBinaryInstructionValue(BinaryInstruction instr) { or instr instanceof DivInstruction and result = div(left, right) or + instr instanceof BitOrInstruction and result = bitOr(left, right) + or + instr instanceof BitAndInstruction and result = bitAnd(left, right) + or + instr instanceof BitXorInstruction and result = bitXor(left, right) + or instr instanceof CompareEQInstruction and result = compareEQ(left, right) or instr instanceof CompareNEInstruction and result = compareNE(left, right) From be027e217e9b55c4ea1120a14f40f0a62bd686c5 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Tue, 19 Mar 2024 16:26:06 +0000 Subject: [PATCH 389/731] Go: Emit diagnostic for invalid toolchain versions --- .../cli/go-autobuilder/go-autobuilder.go | 2 +- go/extractor/diagnostics/diagnostics.go | 15 ++++++++++ go/extractor/project/project.go | 28 +++++++++++++------ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/go/extractor/cli/go-autobuilder/go-autobuilder.go b/go/extractor/cli/go-autobuilder/go-autobuilder.go index 91291c771448..33c0b0e04613 100644 --- a/go/extractor/cli/go-autobuilder/go-autobuilder.go +++ b/go/extractor/cli/go-autobuilder/go-autobuilder.go @@ -475,7 +475,7 @@ func installDependencies(workspace project.GoWorkspace) { } else { if workspace.Modules == nil { project.InitGoModForLegacyProject(workspace.BaseDir) - workspace.Modules = project.LoadGoModules([]string{filepath.Join(workspace.BaseDir, "go.mod")}) + workspace.Modules = project.LoadGoModules(true, []string{filepath.Join(workspace.BaseDir, "go.mod")}) } // get dependencies for all modules diff --git a/go/extractor/diagnostics/diagnostics.go b/go/extractor/diagnostics/diagnostics.go index c02af8afb92e..197d838a1215 100644 --- a/go/extractor/diagnostics/diagnostics.go +++ b/go/extractor/diagnostics/diagnostics.go @@ -508,3 +508,18 @@ func EmitExtractionFailedForProjects(path []string) { noLocation, ) } + +func EmitInvalidToolchainVersion(goModPath string, version string) { + emitDiagnostic( + "go/autobuilder/invalid-go-toolchain-version", + fmt.Sprintf("`%s` is not a valid Go toolchain version", version), + strings.Join([]string{ + "As of Go 1.21, toolchain versions [must use the 1.N.P syntax](https://tip.golang.org/doc/toolchain#version).", + fmt.Sprintf("`%s` in `%s` does not match this syntax and there is no additional `toolchain` directive, which may cause some `go` commands to fail.", version, goModPath), + }, + "\n\n"), + severityWarning, + fullVisibility, + &locationStruct{File: goModPath}, + ) +} diff --git a/go/extractor/project/project.go b/go/extractor/project/project.go index 187389ecd553..580be07eceb6 100644 --- a/go/extractor/project/project.go +++ b/go/extractor/project/project.go @@ -176,10 +176,13 @@ func findGoModFiles(root string) []string { return util.FindAllFilesWithName(root, "go.mod", "vendor") } +// A regular expression for the Go toolchain version syntax. +var toolchainVersionRe *regexp.Regexp = regexp.MustCompile(`(?m)^([0-9]+\.[0-9]+\.[0-9]+)$`) + // Given a list of `go.mod` file paths, try to parse them all. The resulting array of `GoModule` objects // will be the same length as the input array and the objects will contain at least the `go.mod` path. // If parsing the corresponding file is successful, then the parsed contents will also be available. -func LoadGoModules(goModFilePaths []string) []*GoModule { +func LoadGoModules(emitDiagnostics bool, goModFilePaths []string) []*GoModule { results := make([]*GoModule, len(goModFilePaths)) for i, goModFilePath := range goModFilePaths { @@ -201,6 +204,15 @@ func LoadGoModules(goModFilePaths []string) []*GoModule { } results[i].Module = modFile + + // If this `go.mod` file specifies a Go language version, that version is `1.21` or greater, and + // there is no `toolchain` directive, check that it is a valid Go toolchain version. Otherwise, + // `go` commands which try to download the right version of the Go toolchain will fail. We detect + // this situation and emit a diagnostic. + if modFile.Toolchain == nil && modFile.Go != nil && + !toolchainVersionRe.Match([]byte(modFile.Go.Version)) && semver.Compare("v"+modFile.Go.Version, "v1.21.0") >= 0 { + diagnostics.EmitInvalidToolchainVersion(goModFilePath, modFile.Go.Version) + } } return results @@ -209,7 +221,7 @@ func LoadGoModules(goModFilePaths []string) []*GoModule { // Given a path to a `go.work` file, this function attempts to parse the `go.work` file. If unsuccessful, // we attempt to discover `go.mod` files within subdirectories of the directory containing the `go.work` // file ourselves. -func discoverWorkspace(workFilePath string) GoWorkspace { +func discoverWorkspace(emitDiagnostics bool, workFilePath string) GoWorkspace { log.Printf("Loading %s...\n", workFilePath) baseDir := filepath.Dir(workFilePath) workFileSrc, err := os.ReadFile(workFilePath) @@ -223,7 +235,7 @@ func discoverWorkspace(workFilePath string) GoWorkspace { return GoWorkspace{ BaseDir: baseDir, - Modules: LoadGoModules(goModFilePaths), + Modules: LoadGoModules(emitDiagnostics, goModFilePaths), DepMode: GoGetWithModules, ModMode: getModMode(GoGetWithModules, baseDir), } @@ -240,7 +252,7 @@ func discoverWorkspace(workFilePath string) GoWorkspace { return GoWorkspace{ BaseDir: baseDir, - Modules: LoadGoModules(goModFilePaths), + Modules: LoadGoModules(emitDiagnostics, goModFilePaths), DepMode: GoGetWithModules, ModMode: getModMode(GoGetWithModules, baseDir), } @@ -263,7 +275,7 @@ func discoverWorkspace(workFilePath string) GoWorkspace { return GoWorkspace{ BaseDir: baseDir, WorkspaceFile: workFile, - Modules: LoadGoModules(goModFilePaths), + Modules: LoadGoModules(emitDiagnostics, goModFilePaths), DepMode: GoGetWithModules, ModMode: ModReadonly, // Workspaces only support "readonly" } @@ -286,7 +298,7 @@ func discoverWorkspaces(emitDiagnostics bool) []GoWorkspace { for i, goModFile := range goModFiles { results[i] = GoWorkspace{ BaseDir: filepath.Dir(goModFile), - Modules: LoadGoModules([]string{goModFile}), + Modules: LoadGoModules(emitDiagnostics, []string{goModFile}), DepMode: GoGetWithModules, ModMode: getModMode(GoGetWithModules, filepath.Dir(goModFile)), } @@ -303,7 +315,7 @@ func discoverWorkspaces(emitDiagnostics bool) []GoWorkspace { results := make([]GoWorkspace, len(goWorkFiles)) for i, workFilePath := range goWorkFiles { - results[i] = discoverWorkspace(workFilePath) + results[i] = discoverWorkspace(emitDiagnostics, workFilePath) } // Add all stray `go.mod` files (i.e. those not referenced by `go.work` files) @@ -335,7 +347,7 @@ func discoverWorkspaces(emitDiagnostics bool) []GoWorkspace { log.Printf("Module %s is not referenced by any go.work file; adding it separately.\n", goModFile) results = append(results, GoWorkspace{ BaseDir: filepath.Dir(goModFile), - Modules: LoadGoModules([]string{goModFile}), + Modules: LoadGoModules(emitDiagnostics, []string{goModFile}), DepMode: GoGetWithModules, ModMode: getModMode(GoGetWithModules, filepath.Dir(goModFile)), }) From 6bf1611f10a24d6c7ec3117153987241a0839bdd Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 16:26:37 +0000 Subject: [PATCH 390/731] C++: Fix comments. --- cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll b/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll index 33681dde0d46..923ee7293f95 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/internal/IntegerPartial.qll @@ -89,15 +89,15 @@ int compareLE(int a, int b) { if a <= b then result = 1 else result = 0 } bindingset[a, b] int compareGE(int a, int b) { if a >= b then result = 1 else result = 0 } -/** Returns `a >= b`. */ +/** Returns `a | b`. */ bindingset[a, b] int bitOr(int a, int b) { result = a.bitOr(b) } -/** Returns `a >= b`. */ +/** Returns `a & b`. */ bindingset[a, b] int bitAnd(int a, int b) { result = a.bitAnd(b) } -/** Returns `a >= b`. */ +/** Returns `a ^ b`. */ bindingset[a, b] int bitXor(int a, int b) { result = a.bitXor(b) } From 8b85735cdcfa0d6240b7691d5dcbc5764dcc9cc7 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 17:03:59 +0000 Subject: [PATCH 391/731] C++: Generalize predicates from booleans to abstract values. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 83999cff9478..8232ffe71901 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -456,7 +456,10 @@ class IRGuardCondition extends Instruction { /** Holds if (determined by this guard) `left < right + k` evaluates to `isLessThan` if this expression evaluates to `testIsTrue`. */ cached predicate comparesLt(Operand left, Operand right, int k, boolean isLessThan, boolean testIsTrue) { - compares_lt(this, left, right, k, isLessThan, testIsTrue) + exists(BooleanValue value | + compares_lt(this, left, right, k, isLessThan, value) and + value.getValue() = testIsTrue + ) } /** @@ -465,8 +468,8 @@ class IRGuardCondition extends Instruction { */ cached predicate ensuresLt(Operand left, Operand right, int k, IRBlock block, boolean isLessThan) { - exists(boolean testIsTrue | - compares_lt(this, left, right, k, isLessThan, testIsTrue) and this.controls(block, testIsTrue) + exists(AbstractValue value | + compares_lt(this, left, right, k, isLessThan, value) and this.valueControls(block, value) ) } @@ -478,9 +481,9 @@ class IRGuardCondition extends Instruction { predicate ensuresLtEdge( Operand left, Operand right, int k, IRBlock pred, IRBlock succ, boolean isLessThan ) { - exists(boolean testIsTrue | - compares_lt(this, left, right, k, isLessThan, testIsTrue) and - this.controlsEdge(pred, succ, testIsTrue) + exists(AbstractValue value | + compares_lt(this, left, right, k, isLessThan, value) and + this.valueControlsEdge(pred, succ, value) ) } @@ -746,31 +749,28 @@ private predicate complex_eq( /** Holds if `left < right + k` evaluates to `isLt` given that test is `testIsTrue`. */ private predicate compares_lt( - Instruction test, Operand left, Operand right, int k, boolean isLt, boolean testIsTrue + Instruction test, Operand left, Operand right, int k, boolean isLt, AbstractValue value ) { /* In the simple case, the test is the comparison, so isLt = testIsTrue */ - simple_comparison_lt(test, left, right, k) and isLt = true and testIsTrue = true - or - simple_comparison_lt(test, left, right, k) and isLt = false and testIsTrue = false + simple_comparison_lt(test, left, right, k) and + value.(BooleanValue).getValue() = isLt or - complex_lt(test, left, right, k, isLt, testIsTrue) + complex_lt(test, left, right, k, isLt, value) or /* (not (left < right + k)) => (left >= right + k) */ - exists(boolean isGe | isLt = isGe.booleanNot() | - compares_ge(test, left, right, k, isGe, testIsTrue) - ) + exists(boolean isGe | isLt = isGe.booleanNot() | compares_ge(test, left, right, k, isGe, value)) or /* (x is true => (left < right + k)) => (!x is false => (left < right + k)) */ - exists(boolean isFalse | testIsTrue = isFalse.booleanNot() | - compares_lt(test.(LogicalNotInstruction).getUnary(), left, right, k, isLt, isFalse) + exists(AbstractValue dual | value = dual.getDualValue() | + compares_lt(test.(LogicalNotInstruction).getUnary(), left, right, k, isLt, dual) ) } /** `(a < b + k) => (b > a - k) => (b >= a + (1-k))` */ private predicate compares_ge( - Instruction test, Operand left, Operand right, int k, boolean isGe, boolean testIsTrue + Instruction test, Operand left, Operand right, int k, boolean isGe, AbstractValue value ) { - exists(int onemk | k = 1 - onemk | compares_lt(test, right, left, onemk, isGe, testIsTrue)) + exists(int onemk | k = 1 - onemk | compares_lt(test, right, left, onemk, isGe, value)) } /** Rearrange various simple comparisons into `left < right + k` form. */ @@ -797,41 +797,41 @@ private predicate simple_comparison_lt(CompareInstruction cmp, Operand left, Ope } private predicate complex_lt( - CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, boolean testIsTrue + CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value ) { - sub_lt(cmp, left, right, k, isLt, testIsTrue) + sub_lt(cmp, left, right, k, isLt, value) or - add_lt(cmp, left, right, k, isLt, testIsTrue) + add_lt(cmp, left, right, k, isLt, value) } // left - x < right + c => left < right + (c+x) // left < (right - x) + c => left < right + (c-x) private predicate sub_lt( - CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, boolean testIsTrue + CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value ) { exists(SubInstruction lhs, int c, int x | - compares_lt(cmp, lhs.getAUse(), right, c, isLt, testIsTrue) and + compares_lt(cmp, lhs.getAUse(), right, c, isLt, value) and left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) and k = c + x ) or exists(SubInstruction rhs, int c, int x | - compares_lt(cmp, left, rhs.getAUse(), c, isLt, testIsTrue) and + compares_lt(cmp, left, rhs.getAUse(), c, isLt, value) and right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) and k = c - x ) or exists(PointerSubInstruction lhs, int c, int x | - compares_lt(cmp, lhs.getAUse(), right, c, isLt, testIsTrue) and + compares_lt(cmp, lhs.getAUse(), right, c, isLt, value) and left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) and k = c + x ) or exists(PointerSubInstruction rhs, int c, int x | - compares_lt(cmp, left, rhs.getAUse(), c, isLt, testIsTrue) and + compares_lt(cmp, left, rhs.getAUse(), c, isLt, value) and right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) and k = c - x @@ -841,10 +841,10 @@ private predicate sub_lt( // left + x < right + c => left < right + (c-x) // left < (right + x) + c => left < right + (c+x) private predicate add_lt( - CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, boolean testIsTrue + CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value ) { exists(AddInstruction lhs, int c, int x | - compares_lt(cmp, lhs.getAUse(), right, c, isLt, testIsTrue) and + compares_lt(cmp, lhs.getAUse(), right, c, isLt, value) and ( left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) or @@ -854,7 +854,7 @@ private predicate add_lt( ) or exists(AddInstruction rhs, int c, int x | - compares_lt(cmp, left, rhs.getAUse(), c, isLt, testIsTrue) and + compares_lt(cmp, left, rhs.getAUse(), c, isLt, value) and ( right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) or @@ -864,7 +864,7 @@ private predicate add_lt( ) or exists(PointerAddInstruction lhs, int c, int x | - compares_lt(cmp, lhs.getAUse(), right, c, isLt, testIsTrue) and + compares_lt(cmp, lhs.getAUse(), right, c, isLt, value) and ( left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) or @@ -874,7 +874,7 @@ private predicate add_lt( ) or exists(PointerAddInstruction rhs, int c, int x | - compares_lt(cmp, left, rhs.getAUse(), c, isLt, testIsTrue) and + compares_lt(cmp, left, rhs.getAUse(), c, isLt, value) and ( right = rhs.getLeftOperand() and x = int_value(rhs.getRight()) or From a78080cc0ecfbbbfdef88b1e22f39d8933f70012 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 17:06:26 +0000 Subject: [PATCH 392/731] C++: Implement less-than logic for guard conditions when comparing to constants. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 8232ffe71901..1416fb2cd8ad 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -125,6 +125,20 @@ class GuardCondition extends Expr { cached predicate ensuresLt(Expr left, Expr right, int k, BasicBlock block, boolean isLessThan) { none() } + /** + * Holds if (determined by this guard) `e < k` evaluates to `isLessThan` if + * this expression evaluates to `value`. + */ + cached + predicate comparesLt(Expr e, int k, boolean isLessThan, AbstractValue value) { none() } + + /** + * Holds if (determined by this guard) `e < k` must be `isLessThan` in `block`. + * If `isLessThan = false` then this implies `left >= k`. + */ + cached + predicate ensuresLt(Expr e, int k, BasicBlock block, boolean isLessThan) { none() } + /** Holds if (determined by this guard) `left == right + k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ cached predicate comparesEq(Expr left, Expr right, int k, boolean areEqual, boolean testIsTrue) { @@ -176,12 +190,27 @@ private class GuardConditionFromBinaryLogicalOperator extends GuardCondition { ) } + override predicate comparesLt(Expr e, int k, boolean isLessThan, AbstractValue value) { + exists(BooleanValue partValue, GuardCondition part | + this.(BinaryLogicalOperation) + .impliesValue(part, partValue.getValue(), value.(BooleanValue).getValue()) + | + part.comparesLt(e, k, isLessThan, partValue) + ) + } + override predicate ensuresLt(Expr left, Expr right, int k, BasicBlock block, boolean isLessThan) { exists(boolean testIsTrue | this.comparesLt(left, right, k, isLessThan, testIsTrue) and this.controls(block, testIsTrue) ) } + override predicate ensuresLt(Expr e, int k, BasicBlock block, boolean isLessThan) { + exists(AbstractValue value | + this.comparesLt(e, k, isLessThan, value) and this.valueControls(block, value) + ) + } + override predicate comparesEq(Expr left, Expr right, int k, boolean areEqual, boolean testIsTrue) { exists(boolean partIsTrue, GuardCondition part | this.(BinaryLogicalOperation).impliesValue(part, partIsTrue, testIsTrue) @@ -236,6 +265,17 @@ private class GuardConditionFromIR extends GuardCondition { ) } + /** + * Holds if (determined by this guard) `e < k` evaluates to `isLessThan` if + * this expression evaluates to `value`. + */ + override predicate comparesLt(Expr e, int k, boolean isLessThan, AbstractValue value) { + exists(Instruction i | + i.getUnconvertedResultExpression() = e and + ir.comparesLt(i.getAUse(), k, isLessThan, value) + ) + } + /** * Holds if (determined by this guard) `left < right + k` must be `isLessThan` in `block`. * If `isLessThan = false` then this implies `left >= right + k`. @@ -249,6 +289,18 @@ private class GuardConditionFromIR extends GuardCondition { ) } + /** + * Holds if (determined by this guard) `e < k` must be `isLessThan` in `block`. + * If `isLessThan = false` then this implies `e >= k`. + */ + override predicate ensuresLt(Expr e, int k, BasicBlock block, boolean isLessThan) { + exists(Instruction i, AbstractValue value | + i.getUnconvertedResultExpression() = e and + ir.comparesLt(i.getAUse(), k, isLessThan, value) and + this.valueControls(block, value) + ) + } + /** Holds if (determined by this guard) `left == right + k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ override predicate comparesEq(Expr left, Expr right, int k, boolean areEqual, boolean testIsTrue) { exists(Instruction li, Instruction ri | @@ -462,6 +514,15 @@ class IRGuardCondition extends Instruction { ) } + /** + * Holds if (determined by this guard) `op < k` evaluates to `isLessThan` if + * this expression evaluates to `value`. + */ + cached + predicate comparesLt(Operand op, int k, boolean isLessThan, AbstractValue value) { + compares_lt(this, op, k, isLessThan, value) + } + /** * Holds if (determined by this guard) `left < right + k` must be `isLessThan` in `block`. * If `isLessThan = false` then this implies `left >= right + k`. @@ -473,6 +534,17 @@ class IRGuardCondition extends Instruction { ) } + /** + * Holds if (determined by this guard) `op < k` must be `isLessThan` in `block`. + * If `isLessThan = false` then this implies `op >= k`. + */ + cached + predicate ensuresLt(Operand op, int k, IRBlock block, boolean isLessThan) { + exists(AbstractValue value | + compares_lt(this, op, k, isLessThan, value) and this.valueControls(block, value) + ) + } + /** * Holds if (determined by this guard) `left < right + k` must be `isLessThan` on the edge from * `pred` to `succ`. If `isLessThan = false` then this implies `left >= right + k`. @@ -487,6 +559,18 @@ class IRGuardCondition extends Instruction { ) } + /** + * Holds if (determined by this guard) `op < k` must be `isLessThan` on the edge from + * `pred` to `succ`. If `isLessThan = false` then this implies `op >= k`. + */ + cached + predicate ensuresLtEdge(Operand left, int k, IRBlock pred, IRBlock succ, boolean isLessThan) { + exists(AbstractValue value | + compares_lt(this, left, k, isLessThan, value) and + this.valueControlsEdge(pred, succ, value) + ) + } + /** Holds if (determined by this guard) `left == right + k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ cached predicate comparesEq(Operand left, Operand right, int k, boolean areEqual, boolean testIsTrue) { @@ -766,6 +850,24 @@ private predicate compares_lt( ) } +/** Holds if `op < k` evaluates to `isLt` given that `test` evaluates to `value`. */ +private predicate compares_lt(Instruction test, Operand op, int k, boolean isLt, AbstractValue value) { + simple_comparison_lt(test, op, k, isLt, value) + or + complex_lt(test, op, k, isLt, value) + or + /* (x is true => (op < k)) => (!x is false => (op < k)) */ + exists(AbstractValue dual | value = dual.getDualValue() | + compares_lt(test.(LogicalNotInstruction).getUnary(), op, k, isLt, dual) + ) + or + exists(int k1, int k2, ConstantInstruction const | + compares_lt(test, op, const.getAUse(), k2, isLt, value) and + int_value(const) = k1 and + k = k1 + k2 + ) +} + /** `(a < b + k) => (b > a - k) => (b >= a + (1-k))` */ private predicate compares_ge( Instruction test, Operand left, Operand right, int k, boolean isGe, AbstractValue value @@ -796,6 +898,26 @@ private predicate simple_comparison_lt(CompareInstruction cmp, Operand left, Ope k = 1 } +/** Rearrange various simple comparisons into `op < k` form. */ +private predicate simple_comparison_lt( + Instruction test, Operand op, int k, boolean isLt, AbstractValue value +) { + exists(SwitchInstruction switch, CaseEdge case | + test = switch.getExpression() and + op.getDef() = test and + case = value.(MatchValue).getCase() and + exists(switch.getSuccessor(case)) and + case.getMaxValue() > case.getMinValue() + | + // op <= k => op < k - 1 + isLt = true and + case.getMaxValue().toInt() = k - 1 + or + isLt = false and + case.getMinValue().toInt() = k + ) +} + private predicate complex_lt( CompareInstruction cmp, Operand left, Operand right, int k, boolean isLt, AbstractValue value ) { @@ -804,6 +926,14 @@ private predicate complex_lt( add_lt(cmp, left, right, k, isLt, value) } +private predicate complex_lt( + Instruction test, Operand left, int k, boolean isLt, AbstractValue value +) { + sub_lt(test, left, k, isLt, value) + or + add_lt(test, left, k, isLt, value) +} + // left - x < right + c => left < right + (c+x) // left < (right - x) + c => left < right + (c-x) private predicate sub_lt( @@ -838,6 +968,22 @@ private predicate sub_lt( ) } +private predicate sub_lt(Instruction test, Operand left, int k, boolean isLt, AbstractValue value) { + exists(SubInstruction lhs, int c, int x | + compares_lt(test, lhs.getAUse(), c, isLt, value) and + left = lhs.getLeftOperand() and + x = int_value(lhs.getRight()) and + k = c + x + ) + or + exists(PointerSubInstruction lhs, int c, int x | + compares_lt(test, lhs.getAUse(), c, isLt, value) and + left = lhs.getLeftOperand() and + x = int_value(lhs.getRight()) and + k = c + x + ) +} + // left + x < right + c => left < right + (c-x) // left < (right + x) + c => left < right + (c+x) private predicate add_lt( @@ -884,6 +1030,28 @@ private predicate add_lt( ) } +private predicate add_lt(Instruction test, Operand left, int k, boolean isLt, AbstractValue value) { + exists(AddInstruction lhs, int c, int x | + compares_lt(test, lhs.getAUse(), c, isLt, value) and + ( + left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) + or + left = lhs.getRightOperand() and x = int_value(lhs.getLeft()) + ) and + k = c - x + ) + or + exists(PointerAddInstruction lhs, int c, int x | + compares_lt(test, lhs.getAUse(), c, isLt, value) and + ( + left = lhs.getLeftOperand() and x = int_value(lhs.getRight()) + or + left = lhs.getRightOperand() and x = int_value(lhs.getLeft()) + ) and + k = c - x + ) +} + // left - x == right + c => left == right + (c+x) // left == (right - x) + c => left == right + (c-x) private predicate sub_eq( From 1411ee5b26ed8d372eec2e9090ada0d8b21ec77c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 17:09:22 +0000 Subject: [PATCH 393/731] C++: Extend tests to also test the new predicates and accept test changes. --- .../controlflow/guards-ir/tests.ql | 8 +++++ .../controlflow/guards/GuardsCompare.expected | 30 +++++++++++++++++++ .../controlflow/guards/GuardsCompare.ql | 4 +++ 3 files changed, 42 insertions(+) diff --git a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql index 6016f8648224..0f147f9ea8d3 100644 --- a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql +++ b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.ql @@ -96,6 +96,10 @@ query predicate irGuardsCompare(int startLine, string msg) { ) or exists(AbstractValue value | + guard.comparesLt(left, k, true, value) and op = " < " + or + guard.comparesLt(left, k, false, value) and op = " >= " + or guard.comparesEq(left, k, true, value) and op = " == " or guard.comparesEq(left, k, false, value) and op = " != " @@ -138,6 +142,10 @@ query predicate irGuardsEnsure_const( IRGuardCondition guard, Instruction left, string op, int k, int start, int end ) { exists(IRBlock block, Operand leftOp | + guard.ensuresLt(leftOp, k, block, true) and op = "<" + or + guard.ensuresLt(leftOp, k, block, false) and op = ">=" + or guard.ensuresEq(leftOp, k, block, true) and op = "==" or guard.ensuresEq(leftOp, k, block, false) and op = "!=" diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected index 398c7f1558ff..b88856d90cf0 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected @@ -1,23 +1,33 @@ | 7 | 0 < x+0 when ... > ... is true | | 7 | 0 >= x+0 when ... > ... is false | | 7 | x < 0+1 when ... > ... is false | +| 7 | x < 1 when ... > ... is false | | 7 | x >= 0+1 when ... > ... is true | +| 7 | x >= 1 when ... > ... is true | | 17 | 0 < x+1 when ... < ... is false | | 17 | 0 >= x+1 when ... && ... is true | | 17 | 0 >= x+1 when ... < ... is true | | 17 | 1 < y+0 when ... && ... is true | | 17 | 1 < y+0 when ... > ... is true | | 17 | 1 >= y+0 when ... > ... is false | +| 17 | x < 0 when ... && ... is true | +| 17 | x < 0 when ... < ... is true | | 17 | x < 0+0 when ... && ... is true | | 17 | x < 0+0 when ... < ... is true | +| 17 | x >= 0 when ... < ... is false | | 17 | x >= 0+0 when ... < ... is false | | 17 | y < 1+1 when ... > ... is false | +| 17 | y < 2 when ... > ... is false | | 17 | y >= 1+1 when ... && ... is true | | 17 | y >= 1+1 when ... > ... is true | +| 17 | y >= 2 when ... && ... is true | +| 17 | y >= 2 when ... > ... is true | | 26 | 0 < x+0 when ... > ... is true | | 26 | 0 >= x+0 when ... > ... is false | | 26 | x < 0+1 when ... > ... is false | +| 26 | x < 1 when ... > ... is false | | 26 | x >= 0+1 when ... > ... is true | +| 26 | x >= 1 when ... > ... is true | | 31 | - ... != x+0 when ... == ... is false | | 31 | - ... == x+0 when ... == ... is true | | 31 | x != -1 when ... == ... is false | @@ -26,20 +36,28 @@ | 31 | x == - ...+0 when ... == ... is true | | 34 | 10 < j+1 when ... < ... is false | | 34 | 10 >= j+1 when ... < ... is true | +| 34 | j < 10 when ... < ... is true | | 34 | j < 10+0 when ... < ... is true | +| 34 | j >= 10 when ... < ... is false | | 34 | j >= 10+0 when ... < ... is false | | 42 | 10 < j+1 when ... < ... is false | | 42 | 10 >= j+1 when ... < ... is true | +| 42 | j < 10 when ... < ... is true | | 42 | j < 10+0 when ... < ... is true | +| 42 | j >= 10 when ... < ... is false | | 42 | j >= 10+0 when ... < ... is false | | 44 | 0 < z+0 when ... > ... is true | | 44 | 0 >= z+0 when ... > ... is false | | 44 | z < 0+1 when ... > ... is false | +| 44 | z < 1 when ... > ... is false | | 44 | z >= 0+1 when ... > ... is true | +| 44 | z >= 1 when ... > ... is true | | 45 | 0 < y+0 when ... > ... is true | | 45 | 0 >= y+0 when ... > ... is false | | 45 | y < 0+1 when ... > ... is false | +| 45 | y < 1 when ... > ... is false | | 45 | y >= 0+1 when ... > ... is true | +| 45 | y >= 1 when ... > ... is true | | 58 | 0 != x+0 when ... == ... is false | | 58 | 0 != x+0 when ... \|\| ... is false | | 58 | 0 < y+1 when ... < ... is false | @@ -52,12 +70,19 @@ | 58 | x != 0+0 when ... \|\| ... is false | | 58 | x == 0 when ... == ... is true | | 58 | x == 0+0 when ... == ... is true | +| 58 | y < 0 when ... < ... is true | | 58 | y < 0+0 when ... < ... is true | +| 58 | y >= 0 when ... < ... is false | +| 58 | y >= 0 when ... \|\| ... is false | | 58 | y >= 0+0 when ... < ... is false | | 58 | y >= 0+0 when ... \|\| ... is false | | 61 | i == 0 when i is Case[0] | | 61 | i == 1 when i is Case[1] | | 61 | i == 2 when i is Case[2] | +| 74 | i < 11 when i is Case[0..10] | +| 74 | i < 21 when i is Case[11..20] | +| 74 | i >= 0 when i is Case[0..10] | +| 74 | i >= 11 when i is Case[11..20] | | 75 | 0 != x+0 when ... == ... is false | | 75 | 0 == x+0 when ... == ... is true | | 75 | x != 0 when ... == ... is false | @@ -90,7 +115,9 @@ | 94 | x == 0+0 when ... != ... is false | | 102 | 10 < j+1 when ... < ... is false | | 102 | 10 >= j+1 when ... < ... is true | +| 102 | j < 10 when ... < ... is true | | 102 | j < 10+0 when ... < ... is true | +| 102 | j >= 10 when ... < ... is false | | 102 | j >= 10+0 when ... < ... is false | | 109 | 0 != x+0 when ... == ... is false | | 109 | 0 != x+0 when ... \|\| ... is false | @@ -104,6 +131,9 @@ | 109 | x != 0+0 when ... \|\| ... is false | | 109 | x == 0 when ... == ... is true | | 109 | x == 0+0 when ... == ... is true | +| 109 | y < 0 when ... < ... is true | | 109 | y < 0+0 when ... < ... is true | +| 109 | y >= 0 when ... < ... is false | +| 109 | y >= 0 when ... \|\| ... is false | | 109 | y >= 0+0 when ... < ... is false | | 109 | y >= 0+0 when ... \|\| ... is false | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql index 5db52cd4a6e1..b05f5b95d001 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.ql @@ -28,6 +28,10 @@ where ) or exists(AbstractValue value | + guard.comparesLt(left, k, true, value) and op = " < " + or + guard.comparesLt(left, k, false, value) and op = " >= " + or guard.comparesEq(left, k, true, value) and op = " == " or guard.comparesEq(left, k, false, value) and op = " != " From cdc879ee8925c99f8ffaef1620ad572d19d06846 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Thu, 29 Feb 2024 12:22:59 +0000 Subject: [PATCH 394/731] Python: Fix up some bazel references --- python/extractor/tsg-python/BUILD.bazel | 2 +- python/extractor/tsg-python/Cargo.Bazel.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/extractor/tsg-python/BUILD.bazel b/python/extractor/tsg-python/BUILD.bazel index 8e1425e3f3e5..6835f8e6689f 100644 --- a/python/extractor/tsg-python/BUILD.bazel +++ b/python/extractor/tsg-python/BUILD.bazel @@ -12,5 +12,5 @@ codeql_rust_binary( visibility = ["//visibility:public"], deps = all_crate_deps( normal = True, - ) + ["//extractor-python/tsg-python/tree-sitter-python"], + ) + ["//python/extractor/tsg-python/tree-sitter-python"], ) diff --git a/python/extractor/tsg-python/Cargo.Bazel.lock b/python/extractor/tsg-python/Cargo.Bazel.lock index fbbd661c9e49..b8a4d8226536 100644 --- a/python/extractor/tsg-python/Cargo.Bazel.lock +++ b/python/extractor/tsg-python/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "54f1095f5a2e74da736682bc8d355b3dbce47558983feba04faba84cf3abfaca", + "checksum": "5ea5454a42d65412a64a48233e83f21d17461b20f8c283260a3de1d964645868", "crates": { "ahash 0.4.7": { "name": "ahash", @@ -2152,8 +2152,8 @@ }, "binary_crates": [], "workspace_members": { - "tree-sitter-python 0.19.0": "extractor-python/tsg-python/tree-sitter-python", - "tsg-python 0.1.0": "extractor-python/tsg-python" + "tree-sitter-python 0.19.0": "python/extractor/tsg-python/tree-sitter-python", + "tsg-python 0.1.0": "python/extractor/tsg-python" }, "conditions": { "aarch64-apple-darwin": [ From 016aedab0aba50e6a7007e537de7f2a10e3b0d11 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Thu, 7 Mar 2024 13:33:58 +0000 Subject: [PATCH 395/731] Python: Move Python language pack tooling to external repo This is essentially the contents of `language-packs/python/tools` with some minor modifications to account for the changed location. Of note: we explicitly exclude the `recorded-call-graph-metrics` director that was already present in `python/tools`. When we revisit this directory for some cleanup (e.g. to get rid of the `lgtm` references), we'll probably want to switch to an explicit list of sources to include. --- python/tools/BUILD.bazel | 11 +++++++++++ python/tools/autobuild.cmd | 8 ++++++++ python/tools/autobuild.sh | 18 ++++++++++++++++++ python/tools/lgtm-scripts/index.cmd | 3 +++ python/tools/lgtm-scripts/index.sh | 5 +++++ python/tools/lgtm-scripts/python_setup.cmd | 3 +++ python/tools/lgtm-scripts/python_setup.sh | 5 +++++ python/tools/pre-finalize.cmd | 11 +++++++++++ python/tools/pre-finalize.sh | 11 +++++++++++ 9 files changed, 75 insertions(+) create mode 100644 python/tools/BUILD.bazel create mode 100644 python/tools/autobuild.cmd create mode 100755 python/tools/autobuild.sh create mode 100644 python/tools/lgtm-scripts/index.cmd create mode 100755 python/tools/lgtm-scripts/index.sh create mode 100644 python/tools/lgtm-scripts/python_setup.cmd create mode 100755 python/tools/lgtm-scripts/python_setup.sh create mode 100644 python/tools/pre-finalize.cmd create mode 100755 python/tools/pre-finalize.sh diff --git a/python/tools/BUILD.bazel b/python/tools/BUILD.bazel new file mode 100644 index 000000000000..81762c150fb4 --- /dev/null +++ b/python/tools/BUILD.bazel @@ -0,0 +1,11 @@ +load("@semmle_code//:dist.bzl", "pack_zip") + +pack_zip( + name = "tools", + srcs = glob(["**/*"]), + excludes = [ + "BUILD.bazel", + ] + glob(["recorded-call-graph-metrics/**"]), + prefix = "tools", + visibility = ["//visibility:public"], +) diff --git a/python/tools/autobuild.cmd b/python/tools/autobuild.cmd new file mode 100644 index 000000000000..051d119f9ecc --- /dev/null +++ b/python/tools/autobuild.cmd @@ -0,0 +1,8 @@ +@echo off + +rem Legacy environment variables for the autobuild infrastructure. +set LGTM_SRC=%CD% +set LGTM_WORKSPACE=%CODEQL_EXTRACTOR_PYTHON_SCRATCH_DIR% + +type NUL && python "%CODEQL_EXTRACTOR_PYTHON_ROOT%\tools\index.py" +exit /b %ERRORLEVEL% diff --git a/python/tools/autobuild.sh b/python/tools/autobuild.sh new file mode 100755 index 000000000000..88134d120fda --- /dev/null +++ b/python/tools/autobuild.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -eu + +# Legacy environment variables for the autobuild infrastructure. +LGTM_SRC="$(pwd)" +LGTM_WORKSPACE="$CODEQL_EXTRACTOR_PYTHON_SCRATCH_DIR" +export LGTM_SRC +export LGTM_WORKSPACE + +if which python3 >/dev/null; then + exec python3 "$CODEQL_EXTRACTOR_PYTHON_ROOT/tools/index.py" +elif which python >/dev/null; then + exec python "$CODEQL_EXTRACTOR_PYTHON_ROOT/tools/index.py" +else + echo "ERROR: Could not find a valid Python distribution. It should be available when running 'which python' or 'which python3' in your shell. Python 2 is no longer supported." + exit 1 +fi diff --git a/python/tools/lgtm-scripts/index.cmd b/python/tools/lgtm-scripts/index.cmd new file mode 100644 index 000000000000..254f44722622 --- /dev/null +++ b/python/tools/lgtm-scripts/index.cmd @@ -0,0 +1,3 @@ +@echo off + +py "%CODEQL_EXTRACTOR_PYTHON_ROOT%\tools\index.py" diff --git a/python/tools/lgtm-scripts/index.sh b/python/tools/lgtm-scripts/index.sh new file mode 100755 index 000000000000..f57637260b08 --- /dev/null +++ b/python/tools/lgtm-scripts/index.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +set -eu + +python "${CODEQL_EXTRACTOR_PYTHON_ROOT}/tools/index.py" diff --git a/python/tools/lgtm-scripts/python_setup.cmd b/python/tools/lgtm-scripts/python_setup.cmd new file mode 100644 index 000000000000..0abc4c21dcfa --- /dev/null +++ b/python/tools/lgtm-scripts/python_setup.cmd @@ -0,0 +1,3 @@ +@echo off + +py "%CODEQL_EXTRACTOR_PYTHON_ROOT%\tools\setup.py" || EXIT /B 0 diff --git a/python/tools/lgtm-scripts/python_setup.sh b/python/tools/lgtm-scripts/python_setup.sh new file mode 100755 index 000000000000..9e398d11bd33 --- /dev/null +++ b/python/tools/lgtm-scripts/python_setup.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +set -eu + +python "${CODEQL_EXTRACTOR_PYTHON_ROOT}/tools/setup.py" || true diff --git a/python/tools/pre-finalize.cmd b/python/tools/pre-finalize.cmd new file mode 100644 index 000000000000..074546710627 --- /dev/null +++ b/python/tools/pre-finalize.cmd @@ -0,0 +1,11 @@ +@echo off + +type NUL && "%CODEQL_DIST%\codeql" database index-files ^ + --include-extension=.yaml ^ + --include-extension=.yml ^ + --size-limit=5m ^ + --language yaml ^ + -- ^ + "%CODEQL_EXTRACTOR_PYTHON_WIP_DATABASE%" + +exit /b %ERRORLEVEL% diff --git a/python/tools/pre-finalize.sh b/python/tools/pre-finalize.sh new file mode 100755 index 000000000000..9fe5200a38f0 --- /dev/null +++ b/python/tools/pre-finalize.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -eu + +"$CODEQL_DIST/codeql" database index-files \ + --include-extension=.yaml \ + --include-extension=.yml \ + --size-limit=5m \ + --language yaml \ + -- \ + "$CODEQL_EXTRACTOR_PYTHON_WIP_DATABASE" From 5fed8bc57bd1b7024f7809582d121636d97d87f8 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Thu, 7 Mar 2024 13:40:04 +0000 Subject: [PATCH 396/731] Python: Add `codeql-extractor.yml` --- python/codeql-extractor.yml | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 python/codeql-extractor.yml diff --git a/python/codeql-extractor.yml b/python/codeql-extractor.yml new file mode 100644 index 000000000000..97a9e1f2cf2f --- /dev/null +++ b/python/codeql-extractor.yml @@ -0,0 +1,46 @@ +name: "python" +display_name: "Python" +version: 1.22.1 +column_kind: utf32 +build_modes: + - none +github_api_languages: + - Python +scc_languages: + - Python +file_types: + - name: python + display_name: Python sources + extensions: + - .py +legacy_qltest_extraction: true +options: + logging: + title: Options pertaining to logging. + type: object + properties: + verbosity: + title: Python extractor logging verbosity level. + description: > + Controls the level of verbosity of the CodeQL Python extractor. + + The supported levels are (in order of increasing verbosity): + + - off + - errors + - warnings + - info or progress + - debug or progress+ + - trace or progress++ + - progress+++ + type: string + pattern: "^(off|errors|warnings|(info|progress)|(debug|progress\\+)|(trace|progress\\+\\+)|progress\\+\\+\\+)$" + python_executable_name: + title: Controls the name of the Python executable used by the Python extractor. + description: > + The Python extractor uses platform-dependent heuristics to determine the name of the Python executable to use. + Specifying a value for this option overrides the name of the Python executable used by the extractor. + Accepted values are py, python and python3. + Use this setting with caution, the Python extractor requires Python 3 to run. + type: string + pattern: "^(py|python|python3)$" From 0550c46766de05bc689cda3ad0bf50e5c49b3fb6 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Thu, 7 Mar 2024 13:41:35 +0000 Subject: [PATCH 397/731] Python: Fix Bazel build --- python/BUILD.bazel | 33 ++++++++++++++++++++++++- python/extractor/BUILD.bazel | 4 +-- python/extractor/tsg-python/BUILD.bazel | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/python/BUILD.bazel b/python/BUILD.bazel index e6d1387e4c27..481dbbd0dd8e 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -1,4 +1,6 @@ -load("@rules_pkg//:mappings.bzl", "pkg_filegroup", "pkg_files") +load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup", "pkg_files") +load("@semmle_code//:dist.bzl", "dist", "pack_zip") +load("//:defs.bzl", "codeql_platform") package(default_visibility = ["//visibility:public"]) @@ -28,3 +30,32 @@ pkg_filegroup( "//python/downgrades", ], ) + +pkg_files( + name = "codeql-extractor-yml", + srcs = ["codeql-extractor.yml"], + strip_prefix = None, +) + +dist( + name = "extractor-generic", + srcs = [ + ":codeql-extractor-yml", + ":dbscheme-group", + "//python/downgrades", + "//python/extractor", + "//python/tools", + ], + prefix = "python", + visibility = ["//visibility:public"], +) + +pack_zip( + name = "extractor-arch", + srcs = [ + "//python/extractor/tsg-python", + ], + package_file_name = "extractor-" + codeql_platform + ".zip", + prefix = "python/tools/" + codeql_platform, + visibility = ["//visibility:public"], +) diff --git a/python/extractor/BUILD.bazel b/python/extractor/BUILD.bazel index 4e93f539bdec..3b5a5b3a6179 100644 --- a/python/extractor/BUILD.bazel +++ b/python/extractor/BUILD.bazel @@ -1,4 +1,4 @@ -load("//:dist.bzl", "pack_zip") +load("@semmle_code//:dist.bzl", "pack_zip") py_binary( name = "make-zips-py", @@ -33,7 +33,7 @@ genrule( ) pack_zip( - name = "extractor-python", + name = "extractor", srcs = [ "LICENSE-PSF.md", # because we distribute imp.py "convert_setup.py", diff --git a/python/extractor/tsg-python/BUILD.bazel b/python/extractor/tsg-python/BUILD.bazel index 6835f8e6689f..55dbdd978556 100644 --- a/python/extractor/tsg-python/BUILD.bazel +++ b/python/extractor/tsg-python/BUILD.bazel @@ -1,5 +1,5 @@ load("@tsg_python_crate_index//:defs.bzl", "aliases", "all_crate_deps") -load("//:common.bzl", "codeql_rust_binary") +load("@semmle_code//:common.bzl", "codeql_rust_binary") codeql_rust_binary( name = "tsg-python", From cac5a8236ea5d57c93a05a71d444c2ace4a65a1d Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Thu, 7 Mar 2024 13:43:08 +0000 Subject: [PATCH 398/731] Python: Fix CLI integration tests Two issues: - Tests relying on existing query machinery (i.e. `import python`) were not resolving correctly due to a bad `qlpack.yml` file. - The diagnostics output tests needed an updated import to account for their new location. --- codeql-workspace.yml | 1 + .../writing-diagnostics/test_diagnostics_output.py | 2 +- python/extractor/qlpack.yml | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/codeql-workspace.yml b/codeql-workspace.yml index 5d8b300c8f4a..7078818d1f31 100644 --- a/codeql-workspace.yml +++ b/codeql-workspace.yml @@ -6,6 +6,7 @@ provide: - "*/ql/consistency-queries/qlpack.yml" - "*/ql/automodel/src/qlpack.yml" - "*/ql/automodel/test/qlpack.yml" + - "python/extractor/qlpack.yml" - "shared/**/qlpack.yml" - "cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/qlpack.yml" - "go/ql/config/legacy-support/qlpack.yml" diff --git a/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py b/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py index 39982596fc5e..0dce022a0f95 100644 --- a/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py +++ b/python/extractor/cli-integration-test/writing-diagnostics/test_diagnostics_output.py @@ -1,6 +1,6 @@ import os import sys -sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "integration-tests")) +sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "..", "integration-tests")) import diagnostics_test_utils test_db = "db" diff --git a/python/extractor/qlpack.yml b/python/extractor/qlpack.yml index 783c301abbb2..88164c64ee80 100644 --- a/python/extractor/qlpack.yml +++ b/python/extractor/qlpack.yml @@ -1,6 +1,6 @@ name: extractor-python dependencies: - codeql/python-all: "*" - codeql/python-queries: "*" + codeql/python-all: ${workspace} + codeql/python-queries: ${workspace} extractor: python warnOnImplicitThis: true From 04c9ed37a7017646e3ab3cd6ab4b4235ca125308 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Fri, 8 Mar 2024 13:26:04 +0000 Subject: [PATCH 399/731] Python: Fix reference in unit test The referenced file lives in the internal repo, so this is perhaps a bit of a hack, but I think it should be fine in the short run. --- python/extractor/tests/test_patterns.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/extractor/tests/test_patterns.py b/python/extractor/tests/test_patterns.py index f218e7a4907f..eb05d91c1a5c 100644 --- a/python/extractor/tests/test_patterns.py +++ b/python/extractor/tests/test_patterns.py @@ -12,7 +12,7 @@ def __init__(self, name): def test(self): repo_dir = subprocess.Popen(["git", "rev-parse", "--show-toplevel"], stdout=subprocess.PIPE).communicate()[0].rstrip().decode("utf-8") - test_file_path = os.path.abspath(os.path.join(repo_dir, "unit-tests", "files", "pattern-matching", "patterns.json")) + test_file_path = os.path.abspath(os.path.join(repo_dir, "..", "unit-tests", "files", "pattern-matching", "patterns.json")) with open(test_file_path) as test_file: test_patterns = json.load(test_file) for test_pattern in test_patterns: From 6f388acdd805ac1caa24b9868e274918a37eb907 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Fri, 8 Mar 2024 15:23:44 +0000 Subject: [PATCH 400/731] Python: Rename `tsg_python_crate_index` to `py_deps` This aligns us a bit more with Ruby. --- python/extractor/tsg-python/BUILD.bazel | 2 +- python/extractor/tsg-python/Cargo.Bazel.lock | 2 +- python/extractor/tsg-python/Cargo.toml | 2 +- python/extractor/tsg-python/tree-sitter-python/BUILD.bazel | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/extractor/tsg-python/BUILD.bazel b/python/extractor/tsg-python/BUILD.bazel index 55dbdd978556..cf95619c5a16 100644 --- a/python/extractor/tsg-python/BUILD.bazel +++ b/python/extractor/tsg-python/BUILD.bazel @@ -1,4 +1,4 @@ -load("@tsg_python_crate_index//:defs.bzl", "aliases", "all_crate_deps") +load("@py_deps//:defs.bzl", "aliases", "all_crate_deps") load("@semmle_code//:common.bzl", "codeql_rust_binary") codeql_rust_binary( diff --git a/python/extractor/tsg-python/Cargo.Bazel.lock b/python/extractor/tsg-python/Cargo.Bazel.lock index b8a4d8226536..3b777f1e5a40 100644 --- a/python/extractor/tsg-python/Cargo.Bazel.lock +++ b/python/extractor/tsg-python/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "5ea5454a42d65412a64a48233e83f21d17461b20f8c283260a3de1d964645868", + "checksum": "1bc1ce89845efff4ebef4861d3b9e4e8efeb1ba5b27565db4c6fd18175e1ee59", "crates": { "ahash 0.4.7": { "name": "ahash", diff --git a/python/extractor/tsg-python/Cargo.toml b/python/extractor/tsg-python/Cargo.toml index b88adbc42d9d..71c5b498baee 100644 --- a/python/extractor/tsg-python/Cargo.toml +++ b/python/extractor/tsg-python/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" # When changing/updating these, the `Cargo.Bazel.lock` file has to be regenerated. # Check out the documentation at https://bazelbuild.github.io/rules_rust/crate_universe.html#repinning--updating-dependencies -# for how to do so. The bazel repository for the tsg-python project is called `tsg_python_crate_index`, +# for how to do so. The bazel repository for the tsg-python project is called `py_deps`, # and instead of calling `bazel sync`, `./build --bazel sync` should be used instead, to always use the correct bazel version. [dependencies] anyhow = "1.0" diff --git a/python/extractor/tsg-python/tree-sitter-python/BUILD.bazel b/python/extractor/tsg-python/tree-sitter-python/BUILD.bazel index 98b636c0d792..101fdad21004 100644 --- a/python/extractor/tsg-python/tree-sitter-python/BUILD.bazel +++ b/python/extractor/tsg-python/tree-sitter-python/BUILD.bazel @@ -1,6 +1,6 @@ load("@rules_rust//cargo:defs.bzl", "cargo_build_script") load("@rules_rust//rust:defs.bzl", "rust_library") -load("@tsg_python_crate_index//:defs.bzl", "aliases", "all_crate_deps") +load("@py_deps//:defs.bzl", "aliases", "all_crate_deps") package(default_visibility = ["//visibility:public"]) From 38169a981d295229474f1136fa8a8c3562fd157d Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Tue, 19 Mar 2024 15:07:02 +0000 Subject: [PATCH 401/731] Python: Shorten `tree-sitter-python` directory name The current name results in a path that is more than 260 characters long, and this causes issues for the build on Windows. --- python/extractor/tsg-python/Cargo.toml | 2 +- .../extractor/tsg-python/{tree-sitter-python => tsp}/.gitignore | 0 .../extractor/tsg-python/{tree-sitter-python => tsp}/.npmignore | 0 .../tsg-python/{tree-sitter-python => tsp}/BUILD.bazel | 0 .../extractor/tsg-python/{tree-sitter-python => tsp}/Cargo.toml | 0 python/extractor/tsg-python/{tree-sitter-python => tsp}/LICENSE | 0 .../extractor/tsg-python/{tree-sitter-python => tsp}/README.md | 0 .../tsg-python/{tree-sitter-python => tsp}/binding.gyp | 0 .../{tree-sitter-python => tsp}/bindings/node/binding.cc | 0 .../{tree-sitter-python => tsp}/bindings/node/index.js | 0 .../{tree-sitter-python => tsp}/bindings/rust/README.md | 0 .../{tree-sitter-python => tsp}/bindings/rust/build.rs | 0 .../tsg-python/{tree-sitter-python => tsp}/bindings/rust/lib.rs | 0 .../extractor/tsg-python/{tree-sitter-python => tsp}/grammar.js | 0 .../extractor/tsg-python/{tree-sitter-python => tsp}/log.html | 0 .../tsg-python/{tree-sitter-python => tsp}/package.json | 0 .../{tree-sitter-python => tsp}/queries/highlights.scm | 0 .../tsg-python/{tree-sitter-python => tsp}/queries/tags.scm | 0 .../tsg-python/{tree-sitter-python => tsp}/src/grammar.json | 0 .../tsg-python/{tree-sitter-python => tsp}/src/node-types.json | 0 .../tsg-python/{tree-sitter-python => tsp}/src/parser.c | 0 .../tsg-python/{tree-sitter-python => tsp}/src/scanner.cc | 0 .../{tree-sitter-python => tsp}/src/tree_sitter/parser.h | 0 23 files changed, 1 insertion(+), 1 deletion(-) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/.gitignore (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/.npmignore (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/BUILD.bazel (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/Cargo.toml (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/LICENSE (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/README.md (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/binding.gyp (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/bindings/node/binding.cc (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/bindings/node/index.js (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/bindings/rust/README.md (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/bindings/rust/build.rs (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/bindings/rust/lib.rs (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/grammar.js (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/log.html (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/package.json (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/queries/highlights.scm (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/queries/tags.scm (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/src/grammar.json (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/src/node-types.json (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/src/parser.c (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/src/scanner.cc (100%) rename python/extractor/tsg-python/{tree-sitter-python => tsp}/src/tree_sitter/parser.h (100%) diff --git a/python/extractor/tsg-python/Cargo.toml b/python/extractor/tsg-python/Cargo.toml index 71c5b498baee..b183aa83dcf8 100644 --- a/python/extractor/tsg-python/Cargo.toml +++ b/python/extractor/tsg-python/Cargo.toml @@ -17,7 +17,7 @@ smallvec = { version="1.6", features=["union"] } thiserror = "1.0" tree-sitter = "0.20.4" tree-sitter-graph = "0.7.0" -tree-sitter-python = {path = "tree-sitter-python"} +tree-sitter-python = {path = "tsp"} clap = "2.32" [dependencies.string-interner] diff --git a/python/extractor/tsg-python/tree-sitter-python/.gitignore b/python/extractor/tsg-python/tsp/.gitignore similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/.gitignore rename to python/extractor/tsg-python/tsp/.gitignore diff --git a/python/extractor/tsg-python/tree-sitter-python/.npmignore b/python/extractor/tsg-python/tsp/.npmignore similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/.npmignore rename to python/extractor/tsg-python/tsp/.npmignore diff --git a/python/extractor/tsg-python/tree-sitter-python/BUILD.bazel b/python/extractor/tsg-python/tsp/BUILD.bazel similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/BUILD.bazel rename to python/extractor/tsg-python/tsp/BUILD.bazel diff --git a/python/extractor/tsg-python/tree-sitter-python/Cargo.toml b/python/extractor/tsg-python/tsp/Cargo.toml similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/Cargo.toml rename to python/extractor/tsg-python/tsp/Cargo.toml diff --git a/python/extractor/tsg-python/tree-sitter-python/LICENSE b/python/extractor/tsg-python/tsp/LICENSE similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/LICENSE rename to python/extractor/tsg-python/tsp/LICENSE diff --git a/python/extractor/tsg-python/tree-sitter-python/README.md b/python/extractor/tsg-python/tsp/README.md similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/README.md rename to python/extractor/tsg-python/tsp/README.md diff --git a/python/extractor/tsg-python/tree-sitter-python/binding.gyp b/python/extractor/tsg-python/tsp/binding.gyp similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/binding.gyp rename to python/extractor/tsg-python/tsp/binding.gyp diff --git a/python/extractor/tsg-python/tree-sitter-python/bindings/node/binding.cc b/python/extractor/tsg-python/tsp/bindings/node/binding.cc similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/bindings/node/binding.cc rename to python/extractor/tsg-python/tsp/bindings/node/binding.cc diff --git a/python/extractor/tsg-python/tree-sitter-python/bindings/node/index.js b/python/extractor/tsg-python/tsp/bindings/node/index.js similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/bindings/node/index.js rename to python/extractor/tsg-python/tsp/bindings/node/index.js diff --git a/python/extractor/tsg-python/tree-sitter-python/bindings/rust/README.md b/python/extractor/tsg-python/tsp/bindings/rust/README.md similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/bindings/rust/README.md rename to python/extractor/tsg-python/tsp/bindings/rust/README.md diff --git a/python/extractor/tsg-python/tree-sitter-python/bindings/rust/build.rs b/python/extractor/tsg-python/tsp/bindings/rust/build.rs similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/bindings/rust/build.rs rename to python/extractor/tsg-python/tsp/bindings/rust/build.rs diff --git a/python/extractor/tsg-python/tree-sitter-python/bindings/rust/lib.rs b/python/extractor/tsg-python/tsp/bindings/rust/lib.rs similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/bindings/rust/lib.rs rename to python/extractor/tsg-python/tsp/bindings/rust/lib.rs diff --git a/python/extractor/tsg-python/tree-sitter-python/grammar.js b/python/extractor/tsg-python/tsp/grammar.js similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/grammar.js rename to python/extractor/tsg-python/tsp/grammar.js diff --git a/python/extractor/tsg-python/tree-sitter-python/log.html b/python/extractor/tsg-python/tsp/log.html similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/log.html rename to python/extractor/tsg-python/tsp/log.html diff --git a/python/extractor/tsg-python/tree-sitter-python/package.json b/python/extractor/tsg-python/tsp/package.json similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/package.json rename to python/extractor/tsg-python/tsp/package.json diff --git a/python/extractor/tsg-python/tree-sitter-python/queries/highlights.scm b/python/extractor/tsg-python/tsp/queries/highlights.scm similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/queries/highlights.scm rename to python/extractor/tsg-python/tsp/queries/highlights.scm diff --git a/python/extractor/tsg-python/tree-sitter-python/queries/tags.scm b/python/extractor/tsg-python/tsp/queries/tags.scm similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/queries/tags.scm rename to python/extractor/tsg-python/tsp/queries/tags.scm diff --git a/python/extractor/tsg-python/tree-sitter-python/src/grammar.json b/python/extractor/tsg-python/tsp/src/grammar.json similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/src/grammar.json rename to python/extractor/tsg-python/tsp/src/grammar.json diff --git a/python/extractor/tsg-python/tree-sitter-python/src/node-types.json b/python/extractor/tsg-python/tsp/src/node-types.json similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/src/node-types.json rename to python/extractor/tsg-python/tsp/src/node-types.json diff --git a/python/extractor/tsg-python/tree-sitter-python/src/parser.c b/python/extractor/tsg-python/tsp/src/parser.c similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/src/parser.c rename to python/extractor/tsg-python/tsp/src/parser.c diff --git a/python/extractor/tsg-python/tree-sitter-python/src/scanner.cc b/python/extractor/tsg-python/tsp/src/scanner.cc similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/src/scanner.cc rename to python/extractor/tsg-python/tsp/src/scanner.cc diff --git a/python/extractor/tsg-python/tree-sitter-python/src/tree_sitter/parser.h b/python/extractor/tsg-python/tsp/src/tree_sitter/parser.h similarity index 100% rename from python/extractor/tsg-python/tree-sitter-python/src/tree_sitter/parser.h rename to python/extractor/tsg-python/tsp/src/tree_sitter/parser.h From d12ac1e7ce083f4a8cd55f5ace07f33cf81e806a Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Tue, 19 Mar 2024 15:34:48 +0000 Subject: [PATCH 402/731] Python: Use `tsp` instead of `tree-sitter-python` --- python/extractor/tsg-python/BUILD.bazel | 2 +- python/extractor/tsg-python/Cargo.Bazel.lock | 200 +++++++++---------- python/extractor/tsg-python/Cargo.lock | 18 +- python/extractor/tsg-python/Cargo.toml | 2 +- python/extractor/tsg-python/src/main.rs | 2 +- python/extractor/tsg-python/tsp/BUILD.bazel | 6 +- python/extractor/tsg-python/tsp/Cargo.toml | 2 +- 7 files changed, 116 insertions(+), 116 deletions(-) diff --git a/python/extractor/tsg-python/BUILD.bazel b/python/extractor/tsg-python/BUILD.bazel index cf95619c5a16..204bd89475af 100644 --- a/python/extractor/tsg-python/BUILD.bazel +++ b/python/extractor/tsg-python/BUILD.bazel @@ -12,5 +12,5 @@ codeql_rust_binary( visibility = ["//visibility:public"], deps = all_crate_deps( normal = True, - ) + ["//python/extractor/tsg-python/tree-sitter-python"], + ) + ["//python/extractor/tsg-python/tsp"], ) diff --git a/python/extractor/tsg-python/Cargo.Bazel.lock b/python/extractor/tsg-python/Cargo.Bazel.lock index 3b777f1e5a40..e3b5a249e4fc 100644 --- a/python/extractor/tsg-python/Cargo.Bazel.lock +++ b/python/extractor/tsg-python/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "1bc1ce89845efff4ebef4861d3b9e4e8efeb1ba5b27565db4c6fd18175e1ee59", + "checksum": "35a1ce4b6c4f997c496c11d3a8fcfaadc5833dfd41bebb022941687d73dde159", "crates": { "ahash 0.4.7": { "name": "ahash", @@ -7,7 +7,7 @@ "package_url": "https://github.com/tkaitchuck/ahash", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ahash/0.4.7/download", + "url": "https://static.crates.io/crates/ahash/0.4.7/download", "sha256": "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" } }, @@ -43,7 +43,7 @@ "package_url": "https://github.com/BurntSushi/aho-corasick", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/aho-corasick/0.7.18/download", + "url": "https://static.crates.io/crates/aho-corasick/0.7.18/download", "sha256": "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" } }, @@ -95,7 +95,7 @@ "package_url": "https://github.com/ogham/rust-ansi-term", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ansi_term/0.11.0/download", + "url": "https://static.crates.io/crates/ansi_term/0.11.0/download", "sha256": "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" } }, @@ -141,7 +141,7 @@ "package_url": "https://github.com/dtolnay/anyhow", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/anyhow/1.0.44/download", + "url": "https://static.crates.io/crates/anyhow/1.0.44/download", "sha256": "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" } }, @@ -207,7 +207,7 @@ "package_url": "https://github.com/softprops/atty", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/atty/0.2.14/download", + "url": "https://static.crates.io/crates/atty/0.2.14/download", "sha256": "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" } }, @@ -265,7 +265,7 @@ "package_url": "https://github.com/bitflags/bitflags", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/bitflags/1.3.2/download", + "url": "https://static.crates.io/crates/bitflags/1.3.2/download", "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" } }, @@ -307,7 +307,7 @@ "package_url": "https://github.com/alexcrichton/cc-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cc/1.0.70/download", + "url": "https://static.crates.io/crates/cc/1.0.70/download", "sha256": "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" } }, @@ -343,7 +343,7 @@ "package_url": "https://github.com/alexcrichton/cfg-if", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/cfg-if/1.0.0/download", + "url": "https://static.crates.io/crates/cfg-if/1.0.0/download", "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" } }, @@ -379,7 +379,7 @@ "package_url": "https://github.com/clap-rs/clap", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/clap/2.33.3/download", + "url": "https://static.crates.io/crates/clap/2.33.3/download", "sha256": "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" } }, @@ -462,7 +462,7 @@ "package_url": "https://github.com/rust-lang/hashbrown", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/hashbrown/0.9.1/download", + "url": "https://static.crates.io/crates/hashbrown/0.9.1/download", "sha256": "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" } }, @@ -514,7 +514,7 @@ "package_url": "https://github.com/hermitcore/libhermit-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/hermit-abi/0.1.19/download", + "url": "https://static.crates.io/crates/hermit-abi/0.1.19/download", "sha256": "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" } }, @@ -559,7 +559,7 @@ "package_url": "https://github.com/dtolnay/itoa", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/itoa/1.0.1/download", + "url": "https://static.crates.io/crates/itoa/1.0.1/download", "sha256": "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" } }, @@ -595,7 +595,7 @@ "package_url": "https://github.com/rust-lang/libc", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/libc/0.2.101/download", + "url": "https://static.crates.io/crates/libc/0.2.101/download", "sha256": "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" } }, @@ -654,7 +654,7 @@ "package_url": "https://github.com/rust-lang/log", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/log/0.4.14/download", + "url": "https://static.crates.io/crates/log/0.4.14/download", "sha256": "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" } }, @@ -717,7 +717,7 @@ "package_url": "https://github.com/BurntSushi/memchr", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/memchr/2.4.1/download", + "url": "https://static.crates.io/crates/memchr/2.4.1/download", "sha256": "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" } }, @@ -783,7 +783,7 @@ "package_url": "https://github.com/alexcrichton/proc-macro2", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/proc-macro2/1.0.29/download", + "url": "https://static.crates.io/crates/proc-macro2/1.0.29/download", "sha256": "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" } }, @@ -853,7 +853,7 @@ "package_url": "https://github.com/dtolnay/quote", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/quote/1.0.9/download", + "url": "https://static.crates.io/crates/quote/1.0.9/download", "sha256": "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" } }, @@ -905,7 +905,7 @@ "package_url": "https://github.com/rust-lang/regex", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex/1.5.5/download", + "url": "https://static.crates.io/crates/regex/1.5.5/download", "sha256": "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" } }, @@ -980,7 +980,7 @@ "package_url": "https://github.com/rust-lang/regex", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/regex-syntax/0.6.25/download", + "url": "https://static.crates.io/crates/regex-syntax/0.6.25/download", "sha256": "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" } }, @@ -1030,7 +1030,7 @@ "package_url": "https://github.com/dtolnay/ryu", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/ryu/1.0.9/download", + "url": "https://static.crates.io/crates/ryu/1.0.9/download", "sha256": "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" } }, @@ -1066,7 +1066,7 @@ "package_url": "https://github.com/serde-rs/serde", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/serde/1.0.136/download", + "url": "https://static.crates.io/crates/serde/1.0.136/download", "sha256": "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" } }, @@ -1132,7 +1132,7 @@ "package_url": "https://github.com/serde-rs/json", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/serde_json/1.0.79/download", + "url": "https://static.crates.io/crates/serde_json/1.0.79/download", "sha256": "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" } }, @@ -1210,7 +1210,7 @@ "package_url": "https://github.com/servo/rust-smallvec", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/smallvec/1.6.1/download", + "url": "https://static.crates.io/crates/smallvec/1.6.1/download", "sha256": "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" } }, @@ -1252,7 +1252,7 @@ "package_url": "https://github.com/robbepop/string-interner", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/string-interner/0.12.2/download", + "url": "https://static.crates.io/crates/string-interner/0.12.2/download", "sha256": "383196d1876517ee6f9f0864d1fc1070331b803335d3c6daaa04bbcccd823c08" } }, @@ -1309,7 +1309,7 @@ "package_url": "https://github.com/dguo/strsim-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/strsim/0.8.0/download", + "url": "https://static.crates.io/crates/strsim/0.8.0/download", "sha256": "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" } }, @@ -1344,7 +1344,7 @@ "package_url": "https://github.com/dtolnay/syn", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/syn/1.0.76/download", + "url": "https://static.crates.io/crates/syn/1.0.76/download", "sha256": "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84" } }, @@ -1427,7 +1427,7 @@ "package_url": "https://github.com/mgeisler/textwrap", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/textwrap/0.11.0/download", + "url": "https://static.crates.io/crates/textwrap/0.11.0/download", "sha256": "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" } }, @@ -1471,7 +1471,7 @@ "package_url": "https://github.com/dtolnay/thiserror", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/thiserror/1.0.29/download", + "url": "https://static.crates.io/crates/thiserror/1.0.29/download", "sha256": "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" } }, @@ -1516,7 +1516,7 @@ "package_url": "https://github.com/dtolnay/thiserror", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/thiserror-impl/1.0.29/download", + "url": "https://static.crates.io/crates/thiserror-impl/1.0.29/download", "sha256": "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" } }, @@ -1569,7 +1569,7 @@ "package_url": "https://github.com/tree-sitter/tree-sitter", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tree-sitter/0.20.4/download", + "url": "https://static.crates.io/crates/tree-sitter/0.20.4/download", "sha256": "4e34327f8eac545e3f037382471b2b19367725a242bba7bc45edb9efb49fe39a" } }, @@ -1640,7 +1640,7 @@ "package_url": "https://github.com/tree-sitter/tree-sitter-graph/", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/tree-sitter-graph/0.7.0/download", + "url": "https://static.crates.io/crates/tree-sitter-graph/0.7.0/download", "sha256": "639d21e886f581d293de5f5081f09af003c54607ff3fa85efa159b243ba1f97a" } }, @@ -1707,15 +1707,70 @@ ], "license_file": null }, - "tree-sitter-python 0.19.0": { - "name": "tree-sitter-python", + "tsg-python 0.1.0": { + "name": "tsg-python", + "version": "0.1.0", + "package_url": null, + "repository": null, + "targets": [], + "library_target_name": null, + "common_attrs": { + "compile_data_glob": [ + "**" + ], + "deps": { + "common": [ + { + "id": "anyhow 1.0.44", + "target": "anyhow" + }, + { + "id": "clap 2.33.3", + "target": "clap" + }, + { + "id": "regex 1.5.5", + "target": "regex" + }, + { + "id": "smallvec 1.6.1", + "target": "smallvec" + }, + { + "id": "string-interner 0.12.2", + "target": "string_interner" + }, + { + "id": "thiserror 1.0.29", + "target": "thiserror" + }, + { + "id": "tree-sitter 0.20.4", + "target": "tree_sitter" + }, + { + "id": "tree-sitter-graph 0.7.0", + "target": "tree_sitter_graph" + } + ], + "selects": {} + }, + "edition": "2018", + "version": "0.1.0" + }, + "license": null, + "license_ids": [], + "license_file": null + }, + "tsp 0.19.0": { + "name": "tsp", "version": "0.19.0", "package_url": "https://github.com/tree-sitter/tree-sitter-python", "repository": null, "targets": [ { "Library": { - "crate_name": "tree_sitter_python", + "crate_name": "tsp", "crate_root": "bindings/rust/lib.rs", "srcs": [ "**/*.rs" @@ -1732,7 +1787,7 @@ } } ], - "library_target_name": "tree_sitter_python", + "library_target_name": "tsp", "common_attrs": { "compile_data_glob": [ "**" @@ -1744,7 +1799,7 @@ "target": "tree_sitter" }, { - "id": "tree-sitter-python 0.19.0", + "id": "tsp 0.19.0", "target": "build_script_build" } ], @@ -1773,68 +1828,13 @@ ], "license_file": null }, - "tsg-python 0.1.0": { - "name": "tsg-python", - "version": "0.1.0", - "package_url": null, - "repository": null, - "targets": [], - "library_target_name": null, - "common_attrs": { - "compile_data_glob": [ - "**" - ], - "deps": { - "common": [ - { - "id": "anyhow 1.0.44", - "target": "anyhow" - }, - { - "id": "clap 2.33.3", - "target": "clap" - }, - { - "id": "regex 1.5.5", - "target": "regex" - }, - { - "id": "smallvec 1.6.1", - "target": "smallvec" - }, - { - "id": "string-interner 0.12.2", - "target": "string_interner" - }, - { - "id": "thiserror 1.0.29", - "target": "thiserror" - }, - { - "id": "tree-sitter 0.20.4", - "target": "tree_sitter" - }, - { - "id": "tree-sitter-graph 0.7.0", - "target": "tree_sitter_graph" - } - ], - "selects": {} - }, - "edition": "2018", - "version": "0.1.0" - }, - "license": null, - "license_ids": [], - "license_file": null - }, "unicode-width 0.1.8": { "name": "unicode-width", "version": "0.1.8", "package_url": "https://github.com/unicode-rs/unicode-width", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/unicode-width/0.1.8/download", + "url": "https://static.crates.io/crates/unicode-width/0.1.8/download", "sha256": "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" } }, @@ -1876,7 +1876,7 @@ "package_url": "https://github.com/unicode-rs/unicode-xid", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/unicode-xid/0.2.2/download", + "url": "https://static.crates.io/crates/unicode-xid/0.2.2/download", "sha256": "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" } }, @@ -1918,7 +1918,7 @@ "package_url": "https://github.com/contain-rs/vec-map", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/vec_map/0.8.2/download", + "url": "https://static.crates.io/crates/vec_map/0.8.2/download", "sha256": "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" } }, @@ -1954,7 +1954,7 @@ "package_url": "https://github.com/retep998/winapi-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/winapi/0.3.9/download", + "url": "https://static.crates.io/crates/winapi/0.3.9/download", "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" } }, @@ -2037,7 +2037,7 @@ "package_url": "https://github.com/retep998/winapi-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download", + "url": "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download", "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" } }, @@ -2096,7 +2096,7 @@ "package_url": "https://github.com/retep998/winapi-rs", "repository": { "Http": { - "url": "https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download", + "url": "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download", "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" } }, @@ -2152,8 +2152,8 @@ }, "binary_crates": [], "workspace_members": { - "tree-sitter-python 0.19.0": "python/extractor/tsg-python/tree-sitter-python", - "tsg-python 0.1.0": "python/extractor/tsg-python" + "tsg-python 0.1.0": "python/extractor/tsg-python", + "tsp 0.19.0": "python/extractor/tsg-python/tsp" }, "conditions": { "aarch64-apple-darwin": [ diff --git a/python/extractor/tsg-python/Cargo.lock b/python/extractor/tsg-python/Cargo.lock index 9ee8840bde14..c179dd3036f9 100644 --- a/python/extractor/tsg-python/Cargo.lock +++ b/python/extractor/tsg-python/Cargo.lock @@ -267,14 +267,6 @@ dependencies = [ "tree-sitter", ] -[[package]] -name = "tree-sitter-python" -version = "0.19.0" -dependencies = [ - "cc", - "tree-sitter", -] - [[package]] name = "tsg-python" version = "0.1.0" @@ -287,7 +279,15 @@ dependencies = [ "thiserror", "tree-sitter", "tree-sitter-graph", - "tree-sitter-python", + "tsp", +] + +[[package]] +name = "tsp" +version = "0.19.0" +dependencies = [ + "cc", + "tree-sitter", ] [[package]] diff --git a/python/extractor/tsg-python/Cargo.toml b/python/extractor/tsg-python/Cargo.toml index b183aa83dcf8..feecd2541593 100644 --- a/python/extractor/tsg-python/Cargo.toml +++ b/python/extractor/tsg-python/Cargo.toml @@ -17,7 +17,7 @@ smallvec = { version="1.6", features=["union"] } thiserror = "1.0" tree-sitter = "0.20.4" tree-sitter-graph = "0.7.0" -tree-sitter-python = {path = "tsp"} +tsp = {path = "tsp"} clap = "2.32" [dependencies.string-interner] diff --git a/python/extractor/tsg-python/src/main.rs b/python/extractor/tsg-python/src/main.rs index fa528d8138df..ebfcd01a74e1 100644 --- a/python/extractor/tsg-python/src/main.rs +++ b/python/extractor/tsg-python/src/main.rs @@ -488,7 +488,7 @@ fn main() -> Result<()> { "bundled `python.tsg`".to_owned() }; let source_path = Path::new(matches.value_of("source").unwrap()); - let language = tree_sitter_python::language(); + let language = tsp::language(); let mut parser = Parser::new(); parser.set_language(language)?; // Statically include `python.tsg`: diff --git a/python/extractor/tsg-python/tsp/BUILD.bazel b/python/extractor/tsg-python/tsp/BUILD.bazel index 101fdad21004..71319e894f6a 100644 --- a/python/extractor/tsg-python/tsp/BUILD.bazel +++ b/python/extractor/tsg-python/tsp/BUILD.bazel @@ -7,7 +7,7 @@ package(default_visibility = ["//visibility:public"]) # This will run the build script from the root of the workspace, and # collect the outputs. cargo_build_script( - name = "tsg-build-script", + name = "tsg-build", srcs = ["bindings/rust/build.rs"], data = glob([ "src/**", @@ -18,7 +18,7 @@ cargo_build_script( ) rust_library( - name = "tree-sitter-python", + name = "tsp", srcs = [ "bindings/rust/lib.rs", ], @@ -32,7 +32,7 @@ rust_library( proc_macro_deps = all_crate_deps( proc_macro = True, ), - deps = [":tsg-build-script"] + all_crate_deps( + deps = [":tsg-build"] + all_crate_deps( normal = True, ), ) diff --git a/python/extractor/tsg-python/tsp/Cargo.toml b/python/extractor/tsg-python/tsp/Cargo.toml index 4c863753b932..995f39a3bd99 100644 --- a/python/extractor/tsg-python/tsp/Cargo.toml +++ b/python/extractor/tsg-python/tsp/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "tree-sitter-python" +name = "tsp" description = "Python grammar for the tree-sitter parsing library" version = "0.19.0" authors = [ From 88bfb81b1f508da2b9346c403bc6347809c573bc Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 17:14:07 +0000 Subject: [PATCH 403/731] C++: Add change note. --- .../2024-03-19-predicates-for-switches-as-guards-2.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md new file mode 100644 index 000000000000..88b4048f8cd1 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md @@ -0,0 +1,5 @@ +--- +category: feature +--- +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. \ No newline at end of file From 97aa301ac9d234254a10ec6ffdb93c808460aa20 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 19 Mar 2024 17:33:23 +0000 Subject: [PATCH 404/731] C++: Accept more test changes. --- .../controlflow/guards-ir/tests.expected | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected index 2eb749580b4c..cc29559d5d31 100644 --- a/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected +++ b/cpp/ql/test/library-tests/controlflow/guards-ir/tests.expected @@ -530,19 +530,27 @@ irGuardsCompare | 7 | 0 < x+0 when CompareGT: ... > ... is true | | 7 | 0 >= x+0 when CompareGT: ... > ... is false | | 7 | x < 0+1 when CompareGT: ... > ... is false | +| 7 | x < 1 when CompareGT: ... > ... is false | | 7 | x >= 0+1 when CompareGT: ... > ... is true | +| 7 | x >= 1 when CompareGT: ... > ... is true | | 17 | 0 < x+1 when CompareLT: ... < ... is false | | 17 | 0 >= x+1 when CompareLT: ... < ... is true | | 17 | 1 < y+0 when CompareGT: ... > ... is true | | 17 | 1 >= y+0 when CompareGT: ... > ... is false | +| 17 | x < 0 when CompareLT: ... < ... is true | | 17 | x < 0+0 when CompareLT: ... < ... is true | +| 17 | x >= 0 when CompareLT: ... < ... is false | | 17 | x >= 0+0 when CompareLT: ... < ... is false | | 17 | y < 1+1 when CompareGT: ... > ... is false | +| 17 | y < 2 when CompareGT: ... > ... is false | | 17 | y >= 1+1 when CompareGT: ... > ... is true | +| 17 | y >= 2 when CompareGT: ... > ... is true | | 26 | 0 < x+0 when CompareGT: ... > ... is true | | 26 | 0 >= x+0 when CompareGT: ... > ... is false | | 26 | x < 0+1 when CompareGT: ... > ... is false | +| 26 | x < 1 when CompareGT: ... > ... is false | | 26 | x >= 0+1 when CompareGT: ... > ... is true | +| 26 | x >= 1 when CompareGT: ... > ... is true | | 31 | - ... != x+0 when CompareEQ: ... == ... is false | | 31 | - ... == x+0 when CompareEQ: ... == ... is true | | 31 | x != -1 when CompareEQ: ... == ... is false | @@ -551,20 +559,28 @@ irGuardsCompare | 31 | x == - ...+0 when CompareEQ: ... == ... is true | | 34 | 10 < j+1 when CompareLT: ... < ... is false | | 34 | 10 >= j+1 when CompareLT: ... < ... is true | +| 34 | j < 10 when CompareLT: ... < ... is true | | 34 | j < 10+0 when CompareLT: ... < ... is true | +| 34 | j >= 10 when CompareLT: ... < ... is false | | 34 | j >= 10+0 when CompareLT: ... < ... is false | | 42 | 10 < j+1 when CompareLT: ... < ... is false | | 42 | 10 >= j+1 when CompareLT: ... < ... is true | +| 42 | j < 10 when CompareLT: ... < ... is true | | 42 | j < 10+0 when CompareLT: ... < ... is true | +| 42 | j >= 10 when CompareLT: ... < ... is false | | 42 | j >= 10+0 when CompareLT: ... < ... is false | | 44 | 0 < z+0 when CompareGT: ... > ... is true | | 44 | 0 >= z+0 when CompareGT: ... > ... is false | | 44 | z < 0+1 when CompareGT: ... > ... is false | +| 44 | z < 1 when CompareGT: ... > ... is false | | 44 | z >= 0+1 when CompareGT: ... > ... is true | +| 44 | z >= 1 when CompareGT: ... > ... is true | | 45 | 0 < y+0 when CompareGT: ... > ... is true | | 45 | 0 >= y+0 when CompareGT: ... > ... is false | | 45 | y < 0+1 when CompareGT: ... > ... is false | +| 45 | y < 1 when CompareGT: ... > ... is false | | 45 | y >= 0+1 when CompareGT: ... > ... is true | +| 45 | y >= 1 when CompareGT: ... > ... is true | | 58 | 0 != x+0 when CompareEQ: ... == ... is false | | 58 | 0 < y+1 when CompareLT: ... < ... is false | | 58 | 0 == x+0 when CompareEQ: ... == ... is true | @@ -573,7 +589,9 @@ irGuardsCompare | 58 | x != 0+0 when CompareEQ: ... == ... is false | | 58 | x == 0 when CompareEQ: ... == ... is true | | 58 | x == 0+0 when CompareEQ: ... == ... is true | +| 58 | y < 0 when CompareLT: ... < ... is true | | 58 | y < 0+0 when CompareLT: ... < ... is true | +| 58 | y >= 0 when CompareLT: ... < ... is false | | 58 | y >= 0+0 when CompareLT: ... < ... is false | | 75 | 0 != x+0 when CompareEQ: ... == ... is false | | 75 | 0 == x+0 when CompareEQ: ... == ... is true | @@ -601,7 +619,9 @@ irGuardsCompare | 94 | x == 0+0 when CompareNE: ... != ... is false | | 102 | 10 < j+1 when CompareLT: ... < ... is false | | 102 | 10 >= j+1 when CompareLT: ... < ... is true | +| 102 | j < 10 when CompareLT: ... < ... is true | | 102 | j < 10+0 when CompareLT: ... < ... is true | +| 102 | j >= 10 when CompareLT: ... < ... is false | | 102 | j >= 10+0 when CompareLT: ... < ... is false | | 109 | 0 != x+0 when CompareEQ: ... == ... is false | | 109 | 0 < y+1 when CompareLT: ... < ... is false | @@ -611,7 +631,9 @@ irGuardsCompare | 109 | x != 0+0 when CompareEQ: ... == ... is false | | 109 | x == 0 when CompareEQ: ... == ... is true | | 109 | x == 0+0 when CompareEQ: ... == ... is true | +| 109 | y < 0 when CompareLT: ... < ... is true | | 109 | y < 0+0 when CompareLT: ... < ... is true | +| 109 | y >= 0 when CompareLT: ... < ... is false | | 109 | y >= 0+0 when CompareLT: ... < ... is false | | 156 | ... + ... != x+0 when CompareEQ: ... == ... is false | | 156 | ... + ... == x+0 when CompareEQ: ... == ... is true | @@ -906,8 +928,49 @@ irGuardsEnsure | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:12:31:13 | Constant: - ... | == | test.cpp:31:7:31:7 | Load: x | 0 | 30 | 30 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:12:31:13 | Constant: - ... | == | test.cpp:31:7:31:7 | Load: x | 0 | 32 | 32 | irGuardsEnsure_const +| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | < | 1 | 11 | 11 | +| test.c:7:9:7:13 | CompareGT: ... > ... | test.c:7:9:7:9 | Load: x | >= | 1 | 8 | 8 | +| test.c:17:8:17:12 | CompareLT: ... < ... | test.c:17:8:17:8 | Load: x | < | 0 | 17 | 17 | +| test.c:17:8:17:12 | CompareLT: ... < ... | test.c:17:8:17:8 | Load: x | < | 0 | 18 | 18 | +| test.c:17:17:17:21 | CompareGT: ... > ... | test.c:17:17:17:17 | Load: y | >= | 2 | 18 | 18 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 2 | 2 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 31 | 31 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 34 | 34 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 35 | 35 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 39 | 39 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 42 | 42 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 43 | 43 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 45 | 45 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 46 | 46 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 52 | 52 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 56 | 56 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 58 | 58 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 59 | 59 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | < | 1 | 62 | 62 | +| test.c:26:11:26:15 | CompareGT: ... > ... | test.c:26:11:26:11 | Load: x | >= | 1 | 27 | 27 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | < | 10 | 35 | 35 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 2 | 2 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 39 | 39 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 42 | 42 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 43 | 43 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 45 | 45 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 46 | 46 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 52 | 52 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 56 | 56 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 58 | 58 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 59 | 59 | +| test.c:34:16:34:21 | CompareLT: ... < ... | test.c:34:16:34:16 | Load: j | >= | 10 | 62 | 62 | +| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 43 | 43 | +| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 45 | 45 | +| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 46 | 46 | +| test.c:42:16:42:21 | CompareLT: ... < ... | test.c:42:16:42:16 | Load: j | < | 10 | 52 | 52 | +| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:12 | Load: z | < | 1 | 52 | 52 | +| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:12 | Load: z | >= | 1 | 45 | 45 | +| test.c:44:12:44:16 | CompareGT: ... > ... | test.c:44:12:44:12 | Load: z | >= | 1 | 46 | 46 | +| test.c:45:16:45:20 | CompareGT: ... > ... | test.c:45:16:45:16 | Load: y | >= | 1 | 46 | 46 | | test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:9 | Load: x | != | 0 | 58 | 58 | | test.c:58:9:58:14 | CompareEQ: ... == ... | test.c:58:9:58:9 | Load: x | != | 0 | 62 | 62 | +| test.c:58:19:58:23 | CompareLT: ... < ... | test.c:58:19:58:19 | Load: y | >= | 0 | 62 | 62 | | test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | != | 0 | 79 | 79 | | test.c:75:9:75:14 | CompareEQ: ... == ... | test.c:75:9:75:9 | Load: x | == | 0 | 76 | 76 | | test.c:85:8:85:13 | CompareEQ: ... == ... | test.c:85:8:85:8 | Load: x | == | 0 | 85 | 85 | @@ -922,8 +985,15 @@ irGuardsEnsure_const | test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 109 | 109 | | test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 110 | 110 | | test.c:94:11:94:16 | CompareNE: ... != ... | test.c:94:11:94:11 | Load: x | == | 0 | 113 | 113 | +| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | < | 10 | 103 | 103 | +| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 70 | 70 | +| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 107 | 107 | +| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 109 | 109 | +| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 110 | 110 | +| test.c:102:16:102:21 | CompareLT: ... < ... | test.c:102:16:102:16 | Load: j | >= | 10 | 113 | 113 | | test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:9 | Load: x | != | 0 | 109 | 109 | | test.c:109:9:109:14 | CompareEQ: ... == ... | test.c:109:9:109:9 | Load: x | != | 0 | 113 | 113 | +| test.c:109:19:109:23 | CompareLT: ... < ... | test.c:109:19:109:19 | Load: y | >= | 0 | 113 | 113 | | test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:15 | Call: call to foo | != | 0 | 175 | 175 | | test.c:175:13:175:32 | CompareEQ: ... == ... | test.c:175:13:175:15 | Call: call to foo | == | 0 | 175 | 175 | | test.cpp:31:7:31:13 | CompareEQ: ... == ... | test.cpp:31:7:31:7 | Load: x | != | -1 | 34 | 34 | From f6f707352060095d9021c2d89b45e66554dfab8d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Mar 2024 00:15:31 +0000 Subject: [PATCH 405/731] Add changed framework coverage reports --- java/documentation/library-coverage/coverage.csv | 6 +++--- java/documentation/library-coverage/coverage.rst | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index ad4f7bdd07f2..03d97bcb9d82 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -76,13 +76,13 @@ jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3 java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -java.io,51,1,45,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,1,,43,2 -java.lang,38,3,101,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,3,,,58,43 +java.io,51,1,47,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,1,,45,2 +java.lang,38,3,102,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,3,,,59,43 java.net,22,3,24,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,,3,24, java.nio,44,,38,,,,,,,,,5,,,,,,,,,,,,,,,38,,,,,,,,,1,,,,,,,,,,,,,,38, java.security,21,,,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,1,,,,2, -java.util,47,2,524,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,46,478 +java.util,47,2,529,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,49,480 javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,7, javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index a37dc0a71efd..ce93e37f09a8 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -18,10 +18,10 @@ Java framework & library support `Google Guava <https://guava.dev/>`_,``com.google.common.*``,,730,43,9,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java <https://github.com/stleary/JSON-java>`_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,10,738,239,80,,9,,,25 + Java Standard Library,``java.*``,10,746,239,80,,9,,,25 Java extensions,"``javax.*``, ``jakarta.*``",67,688,80,5,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 `Spring <https://spring.io/>`_,``org.springframework.*``,38,481,118,5,,28,14,,35 Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,125,6,22,18,,209 - Totals,,308,18954,2559,338,16,128,33,1,409 + Totals,,308,18962,2559,338,16,128,33,1,409 From 10efcc2bb449726a4bdcddcfe31e46c10b13cefa Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Tue, 19 Mar 2024 11:52:19 +0100 Subject: [PATCH 406/731] Swift: add `-headerpad_max_install_names` to link options --- swift/extractor/BUILD.bazel | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/swift/extractor/BUILD.bazel b/swift/extractor/BUILD.bazel index f711b3b9d2bb..42c1105053cc 100644 --- a/swift/extractor/BUILD.bazel +++ b/swift/extractor/BUILD.bazel @@ -17,6 +17,10 @@ swift_cc_binary( "//swift/third_party/swift-llvm-support", "@absl//absl/strings", ], + linkopts = select({ + "@platforms//os:macos": ["-headerpad_max_install_names"], + "//conditions:default": [], + }), ) sh_binary( From 589a5039c84c318d20b16d794343276fa46dd3ad Mon Sep 17 00:00:00 2001 From: Alex Denisov <alexdenisov@github.com> Date: Wed, 20 Mar 2024 09:23:12 +0100 Subject: [PATCH 407/731] Swift: update Swift 5.10 dependencies --- swift/third_party/load.bzl | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index 6f876f333f2b..7e55ef506011 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -1,11 +1,11 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") -_swift_prebuilt_version = "swift-5.9.2-RELEASE.299" +_swift_prebuilt_version = "swift-5.10-RELEASE.316" _swift_sha_map = { - "Linux-X64": "19e8150251601e7b27e76d1a405a72c459f9a3e2949a1e360fde15ebb4d87409", - "macOS-ARM64": "4aaec59489c1607be0bd9ea522c1772f9368e7e29197167d3db73e0eb4fa605f", - "macOS-X64": "16f3a248269a06b00c6a40567ca06d5494d9a0ce24e7dd7cb8534828639418e8", + "Linux-X64": "8c6769a39ec94517ed56a9bf437ffe391ab8d76268f7ece1464deb6cf414ef40", + "macOS-ARM64": "8541653cd3d78fd14a67150f12c96b9f522b2b51231b5d3085e356ed5f5f0a6b", + "macOS-X64": "69fafb0c93029e1824bc70e9d3b05d6359077da41d61eed014a4c82a35e9b56c", } _swift_arch_map = { @@ -20,13 +20,13 @@ _toolchain_info = { platform = "ubuntu2004", suffix = "ubuntu20.04", extension = "tar.gz", - sha = "93477b80db16f3e5085738ade05478ed435793e39864418e737a10ac306cbd8c", + sha = "935d0b68757d9b1aceb6410fe0b126a28a07e362553ebba0c4bcd1c9a55d0bc5", ), "macos": struct( platform = "xcode", suffix = "osx", extension = "pkg", - sha = "68951c313b4b559878fc5be27e460c877f98d14e161f755220b063123919e896", + sha = "ef9bb6b38711324e1b1c89de44a27d9519d0711924c57f4df541734b04aaf6cc", ), } @@ -124,14 +124,6 @@ def load_dependencies(module_ctx = None, repository_name = "codeql"): ), build_file = _build(repository_name, "swift-llvm-support"), sha256 = sha256, - patch_args = ["-p1"], - patches = [ - "@%s//swift/third_party/swift-llvm-support:patches/%s.patch" % (repository_name, patch_name) - for patch_name in ( - "remove-redundant-operators", - "add-constructor-to-Compilation", - ) - ], ) _toolchains(repository_name) From 1cfde49297fe27f60e27c516cdb4773d4c98b8d9 Mon Sep 17 00:00:00 2001 From: Alex Denisov <alexdenisov@github.com> Date: Wed, 20 Mar 2024 09:24:25 +0100 Subject: [PATCH 408/731] Swift: remove unused patches --- .../add-constructor-to-Compilation.patch | 17 ------------- .../patches/remove-redundant-operators.patch | 24 ------------------- 2 files changed, 41 deletions(-) delete mode 100644 swift/third_party/swift-llvm-support/patches/add-constructor-to-Compilation.patch delete mode 100644 swift/third_party/swift-llvm-support/patches/remove-redundant-operators.patch diff --git a/swift/third_party/swift-llvm-support/patches/add-constructor-to-Compilation.patch b/swift/third_party/swift-llvm-support/patches/add-constructor-to-Compilation.patch deleted file mode 100644 index a663e6db42a4..000000000000 --- a/swift/third_party/swift-llvm-support/patches/add-constructor-to-Compilation.patch +++ /dev/null @@ -1,17 +0,0 @@ -In C++20 aggregate initialization on classes with user-declared constructor is not -available, while in C++11-C++17 it was available if they were defaulted or deleted. - -diff --git a/include/swift/Driver/Compilation.h b/include/swift/Driver/Compilation.h -index ee76f92e0de..bd987157593 100644 ---- a/include/swift/Driver/Compilation.h -+++ b/include/swift/Driver/Compilation.h -@@ -89,6 +89,9 @@ public: - /// This data is used for cross-module module dependencies. - fine_grained_dependencies::ModuleDepGraph depGraph; - -+ Result(bool hadAbnormalExit = false, int exitCode = 0, fine_grained_dependencies::ModuleDepGraph depGraph = {}) -+ : hadAbnormalExit{hadAbnormalExit}, exitCode{exitCode}, depGraph{std::move(depGraph)} {} -+ - Result(const Result &) = delete; - Result &operator=(const Result &) = delete; - diff --git a/swift/third_party/swift-llvm-support/patches/remove-redundant-operators.patch b/swift/third_party/swift-llvm-support/patches/remove-redundant-operators.patch deleted file mode 100644 index 03f1c0ff08c8..000000000000 --- a/swift/third_party/swift-llvm-support/patches/remove-redundant-operators.patch +++ /dev/null @@ -1,24 +0,0 @@ -In C++20 the removed operators are available via operator rewriting and -implicit constructors, providing them leads to ambiguity. - -diff --git a/include/swift/SIL/SILValue.h b/include/swift/SIL/SILValue.h -index 378ca039c7e..37c119c50c1 100644 ---- a/include/swift/SIL/SILValue.h -+++ b/include/swift/SIL/SILValue.h -@@ -271,16 +271,6 @@ struct ValueOwnershipKind { - - explicit operator bool() const { return value != OwnershipKind::Any; } - -- bool operator==(ValueOwnershipKind other) const { -- return value == other.value; -- } -- bool operator!=(ValueOwnershipKind other) const { -- return !(value == other.value); -- } -- -- bool operator==(innerty other) const { return value == other; } -- bool operator!=(innerty other) const { return !(value == other); } -- - /// We merge by moving down the lattice. - ValueOwnershipKind merge(ValueOwnershipKind rhs) const { - return value.meet(rhs.value); From 0f0acc0428fd1e7fc16ce5223939c5a305c121a2 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 20 Mar 2024 08:52:14 +0100 Subject: [PATCH 409/731] Ruby: Add barrier guard flow tests --- .../barrier-guards/barrier-flow.expected | 47 +++++++++++ .../dataflow/barrier-guards/barrier-flow.ql | 23 ++++++ .../barrier-guards/barrier-guards.expected | 28 +++++++ .../dataflow/barrier-guards/barrier_flow.rb | 79 +++++++++++++++++++ 4 files changed, 177 insertions(+) create mode 100644 ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected create mode 100644 ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql create mode 100644 ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected new file mode 100644 index 000000000000..d3d53177f66c --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected @@ -0,0 +1,47 @@ +testFailures +edges +| barrier_flow.rb:2:5:2:5 | x | barrier_flow.rb:4:10:4:10 | x | provenance | | +| barrier_flow.rb:2:9:2:17 | call to source | barrier_flow.rb:2:5:2:5 | x | provenance | | +| barrier_flow.rb:8:5:8:5 | x | barrier_flow.rb:11:14:11:14 | x | provenance | | +| barrier_flow.rb:8:9:8:17 | call to source | barrier_flow.rb:8:5:8:5 | x | provenance | | +| barrier_flow.rb:24:5:24:5 | x | barrier_flow.rb:26:10:26:10 | x | provenance | | +| barrier_flow.rb:24:9:24:17 | call to source | barrier_flow.rb:24:5:24:5 | x | provenance | | +| barrier_flow.rb:36:5:36:5 | x | barrier_flow.rb:42:10:42:10 | x | provenance | | +| barrier_flow.rb:36:9:36:17 | call to source | barrier_flow.rb:36:5:36:5 | x | provenance | | +| barrier_flow.rb:46:5:46:5 | x | barrier_flow.rb:50:10:50:10 | x | provenance | | +| barrier_flow.rb:46:9:46:17 | call to source | barrier_flow.rb:46:5:46:5 | x | provenance | | +| barrier_flow.rb:54:5:54:5 | x | barrier_flow.rb:62:10:62:10 | x | provenance | | +| barrier_flow.rb:54:9:54:17 | call to source | barrier_flow.rb:54:5:54:5 | x | provenance | | +| barrier_flow.rb:66:5:66:5 | x | barrier_flow.rb:78:10:78:10 | x | provenance | | +| barrier_flow.rb:66:9:66:17 | call to source | barrier_flow.rb:66:5:66:5 | x | provenance | | +nodes +| barrier_flow.rb:2:5:2:5 | x | semmle.label | x | +| barrier_flow.rb:2:9:2:17 | call to source | semmle.label | call to source | +| barrier_flow.rb:4:10:4:10 | x | semmle.label | x | +| barrier_flow.rb:8:5:8:5 | x | semmle.label | x | +| barrier_flow.rb:8:9:8:17 | call to source | semmle.label | call to source | +| barrier_flow.rb:11:14:11:14 | x | semmle.label | x | +| barrier_flow.rb:24:5:24:5 | x | semmle.label | x | +| barrier_flow.rb:24:9:24:17 | call to source | semmle.label | call to source | +| barrier_flow.rb:26:10:26:10 | x | semmle.label | x | +| barrier_flow.rb:36:5:36:5 | x | semmle.label | x | +| barrier_flow.rb:36:9:36:17 | call to source | semmle.label | call to source | +| barrier_flow.rb:42:10:42:10 | x | semmle.label | x | +| barrier_flow.rb:46:5:46:5 | x | semmle.label | x | +| barrier_flow.rb:46:9:46:17 | call to source | semmle.label | call to source | +| barrier_flow.rb:50:10:50:10 | x | semmle.label | x | +| barrier_flow.rb:54:5:54:5 | x | semmle.label | x | +| barrier_flow.rb:54:9:54:17 | call to source | semmle.label | call to source | +| barrier_flow.rb:62:10:62:10 | x | semmle.label | x | +| barrier_flow.rb:66:5:66:5 | x | semmle.label | x | +| barrier_flow.rb:66:9:66:17 | call to source | semmle.label | call to source | +| barrier_flow.rb:78:10:78:10 | x | semmle.label | x | +subpaths +#select +| barrier_flow.rb:4:10:4:10 | x | barrier_flow.rb:2:9:2:17 | call to source | barrier_flow.rb:4:10:4:10 | x | $@ | barrier_flow.rb:2:9:2:17 | call to source | call to source | +| barrier_flow.rb:11:14:11:14 | x | barrier_flow.rb:8:9:8:17 | call to source | barrier_flow.rb:11:14:11:14 | x | $@ | barrier_flow.rb:8:9:8:17 | call to source | call to source | +| barrier_flow.rb:26:10:26:10 | x | barrier_flow.rb:24:9:24:17 | call to source | barrier_flow.rb:26:10:26:10 | x | $@ | barrier_flow.rb:24:9:24:17 | call to source | call to source | +| barrier_flow.rb:42:10:42:10 | x | barrier_flow.rb:36:9:36:17 | call to source | barrier_flow.rb:42:10:42:10 | x | $@ | barrier_flow.rb:36:9:36:17 | call to source | call to source | +| barrier_flow.rb:50:10:50:10 | x | barrier_flow.rb:46:9:46:17 | call to source | barrier_flow.rb:50:10:50:10 | x | $@ | barrier_flow.rb:46:9:46:17 | call to source | call to source | +| barrier_flow.rb:62:10:62:10 | x | barrier_flow.rb:54:9:54:17 | call to source | barrier_flow.rb:62:10:62:10 | x | $@ | barrier_flow.rb:54:9:54:17 | call to source | call to source | +| barrier_flow.rb:78:10:78:10 | x | barrier_flow.rb:66:9:66:17 | call to source | barrier_flow.rb:78:10:78:10 | x | $@ | barrier_flow.rb:66:9:66:17 | call to source | call to source | diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql new file mode 100644 index 000000000000..55bc8c9e529f --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.ql @@ -0,0 +1,23 @@ +/** + * @kind path-problem + */ + +import codeql.ruby.AST +import codeql.ruby.CFG +import TestUtilities.InlineFlowTest +import codeql.ruby.dataflow.BarrierGuards +import PathGraph + +module FlowConfig implements DataFlow::ConfigSig { + predicate isSource = DefaultFlowConfig::isSource/1; + + predicate isSink = DefaultFlowConfig::isSink/1; + + predicate isBarrier(DataFlow::Node n) { n instanceof StringConstCompareBarrier } +} + +import ValueFlowTest<FlowConfig> + +from PathNode source, PathNode sink +where flowPath(source, sink) +select sink, source, sink, "$@", source, source.toString() diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected index 798f7c3e3a3f..cc96a29852c0 100644 --- a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected @@ -36,6 +36,8 @@ newStyleBarrierGuards | barrier-guards.rb:276:5:276:7 | foo | | barrier-guards.rb:282:5:282:7 | foo | | barrier-guards.rb:292:5:292:7 | foo | +| barrier_flow.rb:19:14:19:14 | x | +| barrier_flow.rb:32:10:32:10 | x | controls | barrier-guards.rb:3:4:3:15 | ... == ... | barrier-guards.rb:4:5:4:7 | foo | true | | barrier-guards.rb:3:4:3:15 | ... == ... | barrier-guards.rb:6:5:6:7 | foo | false | @@ -331,3 +333,29 @@ controls | barrier-guards.rb:291:6:291:6 | g | barrier-guards.rb:291:1:292:19 | [no-match] when ... | no-match | | barrier-guards.rb:291:6:291:6 | g | barrier-guards.rb:292:5:292:7 | foo | match | | barrier-guards.rb:291:6:291:6 | g | barrier-guards.rb:294:5:294:7 | foo | no-match | +| barrier_flow.rb:10:8:10:18 | ... != ... | barrier_flow.rb:11:9:11:14 | self | true | +| barrier_flow.rb:18:8:18:18 | ... == ... | barrier_flow.rb:19:9:19:14 | self | true | +| barrier_flow.rb:26:19:26:29 | ... == ... | barrier_flow.rb:26:5:26:10 | self | false | +| barrier_flow.rb:32:19:32:29 | ... != ... | barrier_flow.rb:32:5:32:10 | self | false | +| barrier_flow.rb:38:8:38:18 | ... != ... | barrier_flow.rb:39:9:39:9 | x | true | +| barrier_flow.rb:48:23:48:33 | ... == ... | barrier_flow.rb:48:5:48:5 | x | false | +| barrier_flow.rb:56:8:56:8 | b | barrier_flow.rb:57:9:57:14 | return | true | +| barrier_flow.rb:56:8:56:8 | b | barrier_flow.rb:57:9:57:34 | ... unless ... | true | +| barrier_flow.rb:56:8:56:8 | b | barrier_flow.rb:57:23:57:23 | x | true | +| barrier_flow.rb:56:8:56:8 | b | barrier_flow.rb:59:9:59:14 | return | false | +| barrier_flow.rb:56:8:56:8 | b | barrier_flow.rb:59:9:59:34 | ... unless ... | false | +| barrier_flow.rb:56:8:56:8 | b | barrier_flow.rb:59:23:59:23 | x | false | +| barrier_flow.rb:57:23:57:34 | ... == ... | barrier_flow.rb:57:9:57:14 | return | false | +| barrier_flow.rb:57:23:57:34 | ... == ... | barrier_flow.rb:57:9:57:34 | ... unless ... | true | +| barrier_flow.rb:59:23:59:34 | ... == ... | barrier_flow.rb:59:9:59:14 | return | false | +| barrier_flow.rb:59:23:59:34 | ... == ... | barrier_flow.rb:59:9:59:34 | ... unless ... | true | +| barrier_flow.rb:68:8:68:8 | b | barrier_flow.rb:69:9:71:11 | if ... | true | +| barrier_flow.rb:68:8:68:8 | b | barrier_flow.rb:69:12:69:12 | x | true | +| barrier_flow.rb:68:8:68:8 | b | barrier_flow.rb:70:13:70:18 | return | true | +| barrier_flow.rb:68:8:68:8 | b | barrier_flow.rb:73:9:75:11 | if ... | false | +| barrier_flow.rb:68:8:68:8 | b | barrier_flow.rb:73:12:73:12 | x | false | +| barrier_flow.rb:68:8:68:8 | b | barrier_flow.rb:74:13:74:18 | return | false | +| barrier_flow.rb:69:12:69:23 | ... != ... | barrier_flow.rb:69:9:71:11 | if ... | false | +| barrier_flow.rb:69:12:69:23 | ... != ... | barrier_flow.rb:70:13:70:18 | return | true | +| barrier_flow.rb:73:12:73:23 | ... != ... | barrier_flow.rb:73:9:75:11 | if ... | false | +| barrier_flow.rb:73:12:73:23 | ... != ... | barrier_flow.rb:74:13:74:18 | return | true | diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb new file mode 100644 index 000000000000..afd23176bda7 --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb @@ -0,0 +1,79 @@ +def m1 + x = source(1) + + sink x # $ hasValueFlow=1 +end + +def m2 + x = source(2) + + if x != "safe" then + sink x # $ hasValueFlow=2 + end +end + +def m3 + x = source(3) + + if x == "safe" then + sink x # $ guarded + end +end + +def m4 + x = source(4) + + sink x unless x == "safe" # $ hasValueFlow=4 +end + +def m5 + x = source(5) + + sink x unless x != "safe" # $ guarded +end + +def m6 + x = source(6) + + if x != "safe" then + x = "safe" + end + + sink x # $ SPURIOUS hasValueFlow=6 +end + +def m7 + x = source(7) + + x = "safe" unless x == "safe" + + sink x # $ SPURIOUS hasValueFlow=7 +end + +def m8(b) + x = source(8) + + if b then + return unless x == "safe1" + else + return unless x == "safe2" + end + + sink x # $ SPURIOUS hasValueFlow=8 +end + +def m9(b) + x = source(9) + + if b then + if x != "safe1" then + return + end + else + if x != "safe2" then + return + end + end + + sink x # $ SPURIOUS hasValueFlow=9 +end From 90779f4413631559f7f316d39af79a6856a42646 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 20 Mar 2024 08:52:20 +0100 Subject: [PATCH 410/731] Ruby: Extend barrier guards to handle phi inputs --- .../dataflow/internal/DataFlowPrivate.qll | 107 ++- .../ruby/dataflow/internal/DataFlowPublic.qll | 32 +- .../codeql/ruby/dataflow/internal/SsaImpl.qll | 8 +- .../barrier-guards/barrier-flow.expected | 24 - .../barrier-guards/barrier-guards.expected | 8 + .../dataflow/barrier-guards/barrier-guards.ql | 2 + .../dataflow/barrier-guards/barrier_flow.rb | 8 +- .../dataflow/local/DataflowStep.expected | 884 +++++++++++++----- .../dataflow/local/TaintStep.expected | 884 +++++++++++++----- shared/ssa/codeql/ssa/Ssa.qll | 50 +- 10 files changed, 1526 insertions(+), 481 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll index 3b97ebcf4c82..0aa58d7d18a0 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -72,47 +72,51 @@ CfgNodes::ExprCfgNode getAPostUpdateNodeForArg(Argument arg) { not exists(getALastEvalNode(result)) } -/** Provides predicates related to local data flow. */ -module LocalFlow { - private import codeql.ruby.dataflow.internal.SsaImpl +/** An SSA definition into which another SSA definition may flow. */ +class SsaInputDefinitionExt extends SsaImpl::DefinitionExt { + SsaInputDefinitionExt() { + this instanceof Ssa::PhiNode + or + this instanceof SsaImpl::PhiReadNode + } - /** An SSA definition into which another SSA definition may flow. */ - private class SsaInputDefinitionExtNode extends SsaDefinitionExtNode { - SsaInputDefinitionExtNode() { - def instanceof Ssa::PhiNode - or - def instanceof SsaImpl::PhiReadNode - } + predicate hasInputFromBlock(SsaImpl::DefinitionExt def, BasicBlock bb, int i, BasicBlock input) { + SsaImpl::lastRefBeforeRedefExt(def, bb, i, input, this) } +} +/** Provides predicates related to local data flow. */ +module LocalFlow { /** * Holds if `nodeFrom` is a node for SSA definition `def`, which can reach `next`. */ pragma[nomagic] private predicate localFlowSsaInputFromDef( - SsaDefinitionExtNode nodeFrom, SsaImpl::DefinitionExt def, SsaInputDefinitionExtNode next + SsaDefinitionExtNode nodeFrom, SsaImpl::DefinitionExt def, SsaInputNode nodeTo ) { - exists(BasicBlock bb, int i | - lastRefBeforeRedefExt(def, bb, i, next.getDefinitionExt()) and + exists(BasicBlock bb, int i, BasicBlock input, SsaInputDefinitionExt next | + next.hasInputFromBlock(def, bb, i, input) and def = nodeFrom.getDefinitionExt() and def.definesAt(_, bb, i, _) and - nodeFrom != next + nodeTo = TSsaInputNode(next, input) ) } /** * Holds if `nodeFrom` is a last read of SSA definition `def`, which - * can reach `next`. + * can reach `nodeTo`. */ pragma[nomagic] - predicate localFlowSsaInputFromRead( - SsaImpl::DefinitionExt def, Node nodeFrom, SsaInputDefinitionExtNode next - ) { - exists(BasicBlock bb, int i, CfgNodes::ExprCfgNode exprFrom | - SsaImpl::lastRefBeforeRedefExt(def, bb, i, next.getDefinitionExt()) and + predicate localFlowSsaInputFromRead(SsaImpl::DefinitionExt def, Node nodeFrom, SsaInputNode nodeTo) { + exists( + BasicBlock bb, int i, CfgNodes::ExprCfgNode exprFrom, BasicBlock input, + SsaInputDefinitionExt next + | + next.hasInputFromBlock(def, bb, i, input) and exprFrom = bb.getNode(i) and exprFrom.getExpr() instanceof VariableReadAccess and - exprFrom = [nodeFrom.asExpr(), nodeFrom.(PostUpdateNodeImpl).getPreUpdateNode().asExpr()] + exprFrom = [nodeFrom.asExpr(), nodeFrom.(PostUpdateNodeImpl).getPreUpdateNode().asExpr()] and + nodeTo = TSsaInputNode(next, input) ) } @@ -181,7 +185,7 @@ module LocalFlow { or // Flow from SSA definition to first read def = nodeFrom.(SsaDefinitionExtNode).getDefinitionExt() and - firstReadExt(def, nodeTo.asExpr()) + SsaImpl::firstReadExt(def, nodeTo.asExpr()) or // Flow from post-update read to next read localSsaFlowStepUseUse(def, nodeFrom.(PostUpdateNodeImpl).getPreUpdateNode(), nodeTo) @@ -189,6 +193,9 @@ module LocalFlow { // Flow into phi (read) SSA definition node from def localFlowSsaInputFromDef(nodeFrom, def, nodeTo) or + nodeTo.(SsaDefinitionExtNode).getDefinitionExt() = def and + def = nodeFrom.(SsaInputNode).getDefinitionExt() + or localFlowSsaParamInput(nodeFrom, nodeTo) and def = nodeTo.(SsaDefinitionExtNode).getDefinitionExt() } @@ -530,6 +537,9 @@ private module Cached { TExprNode(CfgNodes::ExprCfgNode n) or TReturningNode(CfgNodes::ReturningCfgNode n) { exists(n.getReturnedValueNode()) } or TSsaDefinitionExtNode(SsaImpl::DefinitionExt def) or + TSsaInputNode(SsaInputDefinitionExt def, BasicBlock input) { + def.hasInputFromBlock(_, _, _, input) + } or TCapturedVariableNode(VariableCapture::CapturedVariable v) or TNormalParameterNode(Parameter p) { p instanceof SimpleParameter or @@ -802,6 +812,8 @@ import Cached predicate nodeIsHidden(Node n) { n.(SsaDefinitionExtNode).isHidden() or + n instanceof SsaInputNode + or n = LocalFlow::getParameterDefNode(_) or exists(AstNode desug | @@ -863,6 +875,57 @@ class SsaDefinitionExtNode extends NodeImpl, TSsaDefinitionExtNode { override string toStringImpl() { result = def.toString() } } +/** + * A node that represents an input to an SSA phi (read) definition. + * + * This allows for barrier guards to filter input to phi nodes. For example, in + * + * ```rb + * x = taint + * if x != "safe" then + * x = "safe" + * end + * sink x + * ``` + * + * the `false` edge out of `x != "safe"` guards the input from `x = taint` into the + * `phi` node after the condition. + * + * It is also relevant to filter input into phi read nodes: + * + * ```rb + * x = taint + * if b then + * if x != "safe1" then + * return + * end + * else + * if x != "safe2" then + * return + * end + * end + * + * sink x + * ``` + * + * both inputs into the phi read node after the outer condition are guarded. + */ +class SsaInputNode extends NodeImpl, TSsaInputNode { + SsaImpl::DefinitionExt def; + BasicBlock input; + + SsaInputNode() { this = TSsaInputNode(def, input) } + + /** Gets the underlying SSA definition. */ + SsaImpl::DefinitionExt getDefinitionExt() { result = def } + + override CfgScope getCfgScope() { result = input.getScope() } + + override Location getLocationImpl() { result = input.getLastNode().getLocation() } + + override string toStringImpl() { result = "[input] " + def } +} + /** An SSA definition for a `self` variable. */ class SsaSelfDefinitionNode extends SsaDefinitionExtNode { private SelfVariable self; diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll index c1c625a23167..7443f24f0389 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll @@ -856,24 +856,52 @@ private predicate sameSourceVariable(Ssa::Definition def1, Ssa::Definition def2) * in data flow and taint tracking. */ module BarrierGuard<guardChecksSig/3 guardChecks> { + private import SsaImpl as SsaImpl + pragma[nomagic] private predicate guardChecksSsaDef(CfgNodes::AstCfgNode g, boolean branch, Ssa::Definition def) { guardChecks(g, def.getARead(), branch) } pragma[nomagic] - private predicate guardControlsSsaDef( + private predicate guardControlsSsaRead( CfgNodes::AstCfgNode g, boolean branch, Ssa::Definition def, Node n ) { def.getARead() = n.asExpr() and guardControlsBlock(g, n.asExpr().getBasicBlock(), branch) } + pragma[nomagic] + private predicate guardControlsPhiInput( + CfgNodes::AstCfgNode g, boolean branch, Ssa::Definition def, BasicBlock input, + SsaInputDefinitionExt phi + ) { + phi.hasInputFromBlock(def, _, _, input) and + ( + guardControlsBlock(g, input, branch) + or + exists(SuccessorTypes::ConditionalSuccessor s | + g = input.getLastNode() and + s.getValue() = branch and + input.getASuccessor(s) = phi.getBasicBlock() + ) + ) + } + /** Gets a node that is safely guarded by the given guard check. */ Node getABarrierNode() { exists(CfgNodes::AstCfgNode g, boolean branch, Ssa::Definition def | guardChecksSsaDef(g, branch, def) and - guardControlsSsaDef(g, branch, def, result) + guardControlsSsaRead(g, branch, def, result) + ) + or + exists( + CfgNodes::AstCfgNode g, boolean branch, Ssa::Definition def, BasicBlock input, + SsaInputDefinitionExt phi + | + guardChecksSsaDef(g, branch, def) and + guardControlsPhiInput(g, branch, def, input, phi) and + result = TSsaInputNode(phi, input) ) or result.asExpr() = getAMaybeGuardedCapturedDef().getARead() diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll index 8839c30b9497..1490a8c7ca33 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/SsaImpl.qll @@ -459,14 +459,16 @@ private module Cached { * The reference is either a read of `def` or `def` itself. */ cached - predicate lastRefBeforeRedefExt(DefinitionExt def, Cfg::BasicBlock bb, int i, DefinitionExt next) { + predicate lastRefBeforeRedefExt( + DefinitionExt def, Cfg::BasicBlock bb, int i, Cfg::BasicBlock input, DefinitionExt next + ) { exists(LocalVariable v | - Impl::lastRefRedefExt(def, v, bb, i, next) and + Impl::lastRefRedefExt(def, v, bb, i, input, next) and not SsaInput::variableRead(bb, i, v, false) ) or exists(SsaInput::BasicBlock bb0, int i0 | - Impl::lastRefRedefExt(def, _, bb0, i0, next) and + Impl::lastRefRedefExt(def, _, bb0, i0, input, next) and adjacentDefReachesUncertainReadExt(def, bb, i, bb0, i0) ) } diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected index d3d53177f66c..4a1732c36128 100644 --- a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-flow.expected @@ -6,14 +6,6 @@ edges | barrier_flow.rb:8:9:8:17 | call to source | barrier_flow.rb:8:5:8:5 | x | provenance | | | barrier_flow.rb:24:5:24:5 | x | barrier_flow.rb:26:10:26:10 | x | provenance | | | barrier_flow.rb:24:9:24:17 | call to source | barrier_flow.rb:24:5:24:5 | x | provenance | | -| barrier_flow.rb:36:5:36:5 | x | barrier_flow.rb:42:10:42:10 | x | provenance | | -| barrier_flow.rb:36:9:36:17 | call to source | barrier_flow.rb:36:5:36:5 | x | provenance | | -| barrier_flow.rb:46:5:46:5 | x | barrier_flow.rb:50:10:50:10 | x | provenance | | -| barrier_flow.rb:46:9:46:17 | call to source | barrier_flow.rb:46:5:46:5 | x | provenance | | -| barrier_flow.rb:54:5:54:5 | x | barrier_flow.rb:62:10:62:10 | x | provenance | | -| barrier_flow.rb:54:9:54:17 | call to source | barrier_flow.rb:54:5:54:5 | x | provenance | | -| barrier_flow.rb:66:5:66:5 | x | barrier_flow.rb:78:10:78:10 | x | provenance | | -| barrier_flow.rb:66:9:66:17 | call to source | barrier_flow.rb:66:5:66:5 | x | provenance | | nodes | barrier_flow.rb:2:5:2:5 | x | semmle.label | x | | barrier_flow.rb:2:9:2:17 | call to source | semmle.label | call to source | @@ -24,24 +16,8 @@ nodes | barrier_flow.rb:24:5:24:5 | x | semmle.label | x | | barrier_flow.rb:24:9:24:17 | call to source | semmle.label | call to source | | barrier_flow.rb:26:10:26:10 | x | semmle.label | x | -| barrier_flow.rb:36:5:36:5 | x | semmle.label | x | -| barrier_flow.rb:36:9:36:17 | call to source | semmle.label | call to source | -| barrier_flow.rb:42:10:42:10 | x | semmle.label | x | -| barrier_flow.rb:46:5:46:5 | x | semmle.label | x | -| barrier_flow.rb:46:9:46:17 | call to source | semmle.label | call to source | -| barrier_flow.rb:50:10:50:10 | x | semmle.label | x | -| barrier_flow.rb:54:5:54:5 | x | semmle.label | x | -| barrier_flow.rb:54:9:54:17 | call to source | semmle.label | call to source | -| barrier_flow.rb:62:10:62:10 | x | semmle.label | x | -| barrier_flow.rb:66:5:66:5 | x | semmle.label | x | -| barrier_flow.rb:66:9:66:17 | call to source | semmle.label | call to source | -| barrier_flow.rb:78:10:78:10 | x | semmle.label | x | subpaths #select | barrier_flow.rb:4:10:4:10 | x | barrier_flow.rb:2:9:2:17 | call to source | barrier_flow.rb:4:10:4:10 | x | $@ | barrier_flow.rb:2:9:2:17 | call to source | call to source | | barrier_flow.rb:11:14:11:14 | x | barrier_flow.rb:8:9:8:17 | call to source | barrier_flow.rb:11:14:11:14 | x | $@ | barrier_flow.rb:8:9:8:17 | call to source | call to source | | barrier_flow.rb:26:10:26:10 | x | barrier_flow.rb:24:9:24:17 | call to source | barrier_flow.rb:26:10:26:10 | x | $@ | barrier_flow.rb:24:9:24:17 | call to source | call to source | -| barrier_flow.rb:42:10:42:10 | x | barrier_flow.rb:36:9:36:17 | call to source | barrier_flow.rb:42:10:42:10 | x | $@ | barrier_flow.rb:36:9:36:17 | call to source | call to source | -| barrier_flow.rb:50:10:50:10 | x | barrier_flow.rb:46:9:46:17 | call to source | barrier_flow.rb:50:10:50:10 | x | $@ | barrier_flow.rb:46:9:46:17 | call to source | call to source | -| barrier_flow.rb:62:10:62:10 | x | barrier_flow.rb:54:9:54:17 | call to source | barrier_flow.rb:62:10:62:10 | x | $@ | barrier_flow.rb:54:9:54:17 | call to source | call to source | -| barrier_flow.rb:78:10:78:10 | x | barrier_flow.rb:66:9:66:17 | call to source | barrier_flow.rb:78:10:78:10 | x | $@ | barrier_flow.rb:66:9:66:17 | call to source | call to source | diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected index cc96a29852c0..21d697c86e93 100644 --- a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.expected @@ -1,6 +1,7 @@ testFailures failures newStyleBarrierGuards +| barrier-guards.rb:3:16:4:19 | [input] SSA phi read(foo) | | barrier-guards.rb:4:5:4:7 | foo | | barrier-guards.rb:10:5:10:7 | foo | | barrier-guards.rb:18:5:18:7 | foo | @@ -8,6 +9,7 @@ newStyleBarrierGuards | barrier-guards.rb:28:5:28:7 | foo | | barrier-guards.rb:38:5:38:7 | foo | | barrier-guards.rb:45:9:45:11 | foo | +| barrier-guards.rb:70:22:71:19 | [input] SSA phi read(foo) | | barrier-guards.rb:71:5:71:7 | foo | | barrier-guards.rb:83:5:83:7 | foo | | barrier-guards.rb:91:5:91:7 | foo | @@ -38,6 +40,12 @@ newStyleBarrierGuards | barrier-guards.rb:292:5:292:7 | foo | | barrier_flow.rb:19:14:19:14 | x | | barrier_flow.rb:32:10:32:10 | x | +| barrier_flow.rb:38:8:38:18 | [input] phi | +| barrier_flow.rb:48:23:48:33 | [input] phi | +| barrier_flow.rb:56:10:57:34 | [input] SSA phi read(x) | +| barrier_flow.rb:58:5:59:34 | [input] SSA phi read(x) | +| barrier_flow.rb:68:10:71:11 | [input] SSA phi read(x) | +| barrier_flow.rb:72:5:75:11 | [input] SSA phi read(x) | controls | barrier-guards.rb:3:4:3:15 | ... == ... | barrier-guards.rb:4:5:4:7 | foo | true | | barrier-guards.rb:3:4:3:15 | ... == ... | barrier-guards.rb:6:5:6:7 | foo | false | diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql index f872dd89aee7..4bcb358acfdd 100644 --- a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier-guards.ql @@ -1,3 +1,4 @@ +import codeql.ruby.dataflow.internal.DataFlowPrivate import codeql.ruby.dataflow.internal.DataFlowPublic import codeql.ruby.dataflow.BarrierGuards import codeql.ruby.controlflow.CfgNodes @@ -25,6 +26,7 @@ module BarrierGuardTest implements TestSig { tag = "guarded" and exists(DataFlow::Node n | newStyleBarrierGuards(n) and + not n instanceof SsaInputNode and location = n.getLocation() and element = n.toString() and value = "" diff --git a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb index afd23176bda7..d4c2d49eb362 100644 --- a/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb +++ b/ruby/ql/test/library-tests/dataflow/barrier-guards/barrier_flow.rb @@ -39,7 +39,7 @@ def m6 x = "safe" end - sink x # $ SPURIOUS hasValueFlow=6 + sink x end def m7 @@ -47,7 +47,7 @@ def m7 x = "safe" unless x == "safe" - sink x # $ SPURIOUS hasValueFlow=7 + sink x end def m8(b) @@ -59,7 +59,7 @@ def m8(b) return unless x == "safe2" end - sink x # $ SPURIOUS hasValueFlow=8 + sink x end def m9(b) @@ -75,5 +75,5 @@ def m9(b) end end - sink x # $ SPURIOUS hasValueFlow=9 + sink x end diff --git a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected index 1f773f7d1a45..904e48d397c8 100644 --- a/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/DataflowStep.expected @@ -1,6 +1,6 @@ | UseUseExplosion.rb:18:5:22:7 | self (m) | UseUseExplosion.rb:20:13:20:17 | self | | UseUseExplosion.rb:18:5:22:7 | self in m | UseUseExplosion.rb:18:5:22:7 | self (m) | -| UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | +| UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2111:20:2111 | x | | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2127:20:2127 | x | | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2143:20:2143 | x | @@ -210,9 +210,11 @@ | UseUseExplosion.rb:20:13:20:17 | self | UseUseExplosion.rb:20:3691:20:3696 | self | | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [false] ( ... ) | | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [true] ( ... ) | +| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | +| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:26:20:3684 | then ... | UseUseExplosion.rb:20:9:20:3700 | if ... | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | +| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:31:20:3684 | if ... | UseUseExplosion.rb:20:26:20:3684 | then ... | | UseUseExplosion.rb:20:35:20:39 | [post] self | UseUseExplosion.rb:20:56:20:60 | self | | UseUseExplosion.rb:20:35:20:39 | [post] self | UseUseExplosion.rb:20:3675:20:3680 | self | @@ -220,9 +222,11 @@ | UseUseExplosion.rb:20:35:20:39 | self | UseUseExplosion.rb:20:3675:20:3680 | self | | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [false] ( ... ) | | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [true] ( ... ) | +| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | +| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | | UseUseExplosion.rb:20:47:20:3668 | then ... | UseUseExplosion.rb:20:31:20:3684 | if ... | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | +| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:52:20:3668 | if ... | UseUseExplosion.rb:20:47:20:3668 | then ... | | UseUseExplosion.rb:20:56:20:60 | [post] self | UseUseExplosion.rb:20:77:20:81 | self | | UseUseExplosion.rb:20:56:20:60 | [post] self | UseUseExplosion.rb:20:3659:20:3664 | self | @@ -230,9 +234,11 @@ | UseUseExplosion.rb:20:56:20:60 | self | UseUseExplosion.rb:20:3659:20:3664 | self | | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [false] ( ... ) | | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [true] ( ... ) | +| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | +| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | | UseUseExplosion.rb:20:68:20:3652 | then ... | UseUseExplosion.rb:20:52:20:3668 | if ... | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | +| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:73:20:3652 | if ... | UseUseExplosion.rb:20:68:20:3652 | then ... | | UseUseExplosion.rb:20:77:20:81 | [post] self | UseUseExplosion.rb:20:98:20:102 | self | | UseUseExplosion.rb:20:77:20:81 | [post] self | UseUseExplosion.rb:20:3643:20:3648 | self | @@ -240,9 +246,11 @@ | UseUseExplosion.rb:20:77:20:81 | self | UseUseExplosion.rb:20:3643:20:3648 | self | | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [false] ( ... ) | | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [true] ( ... ) | +| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | +| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | | UseUseExplosion.rb:20:89:20:3636 | then ... | UseUseExplosion.rb:20:73:20:3652 | if ... | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | +| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:94:20:3636 | if ... | UseUseExplosion.rb:20:89:20:3636 | then ... | | UseUseExplosion.rb:20:98:20:102 | [post] self | UseUseExplosion.rb:20:119:20:123 | self | | UseUseExplosion.rb:20:98:20:102 | [post] self | UseUseExplosion.rb:20:3627:20:3632 | self | @@ -250,9 +258,11 @@ | UseUseExplosion.rb:20:98:20:102 | self | UseUseExplosion.rb:20:3627:20:3632 | self | | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [false] ( ... ) | | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [true] ( ... ) | +| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | +| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | | UseUseExplosion.rb:20:110:20:3620 | then ... | UseUseExplosion.rb:20:94:20:3636 | if ... | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | +| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:115:20:3620 | if ... | UseUseExplosion.rb:20:110:20:3620 | then ... | | UseUseExplosion.rb:20:119:20:123 | [post] self | UseUseExplosion.rb:20:140:20:144 | self | | UseUseExplosion.rb:20:119:20:123 | [post] self | UseUseExplosion.rb:20:3611:20:3616 | self | @@ -260,9 +270,11 @@ | UseUseExplosion.rb:20:119:20:123 | self | UseUseExplosion.rb:20:3611:20:3616 | self | | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [false] ( ... ) | | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [true] ( ... ) | +| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | +| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | | UseUseExplosion.rb:20:131:20:3604 | then ... | UseUseExplosion.rb:20:115:20:3620 | if ... | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | +| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:136:20:3604 | if ... | UseUseExplosion.rb:20:131:20:3604 | then ... | | UseUseExplosion.rb:20:140:20:144 | [post] self | UseUseExplosion.rb:20:161:20:165 | self | | UseUseExplosion.rb:20:140:20:144 | [post] self | UseUseExplosion.rb:20:3595:20:3600 | self | @@ -270,9 +282,11 @@ | UseUseExplosion.rb:20:140:20:144 | self | UseUseExplosion.rb:20:3595:20:3600 | self | | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [false] ( ... ) | | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [true] ( ... ) | +| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | +| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | | UseUseExplosion.rb:20:152:20:3588 | then ... | UseUseExplosion.rb:20:136:20:3604 | if ... | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | +| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:157:20:3588 | if ... | UseUseExplosion.rb:20:152:20:3588 | then ... | | UseUseExplosion.rb:20:161:20:165 | [post] self | UseUseExplosion.rb:20:182:20:186 | self | | UseUseExplosion.rb:20:161:20:165 | [post] self | UseUseExplosion.rb:20:3579:20:3584 | self | @@ -280,9 +294,11 @@ | UseUseExplosion.rb:20:161:20:165 | self | UseUseExplosion.rb:20:3579:20:3584 | self | | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [false] ( ... ) | | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [true] ( ... ) | +| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | +| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | | UseUseExplosion.rb:20:173:20:3572 | then ... | UseUseExplosion.rb:20:157:20:3588 | if ... | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | +| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:178:20:3572 | if ... | UseUseExplosion.rb:20:173:20:3572 | then ... | | UseUseExplosion.rb:20:182:20:186 | [post] self | UseUseExplosion.rb:20:203:20:207 | self | | UseUseExplosion.rb:20:182:20:186 | [post] self | UseUseExplosion.rb:20:3563:20:3568 | self | @@ -290,9 +306,11 @@ | UseUseExplosion.rb:20:182:20:186 | self | UseUseExplosion.rb:20:3563:20:3568 | self | | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [false] ( ... ) | | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [true] ( ... ) | +| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | +| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | | UseUseExplosion.rb:20:194:20:3556 | then ... | UseUseExplosion.rb:20:178:20:3572 | if ... | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | +| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:199:20:3556 | if ... | UseUseExplosion.rb:20:194:20:3556 | then ... | | UseUseExplosion.rb:20:203:20:207 | [post] self | UseUseExplosion.rb:20:224:20:228 | self | | UseUseExplosion.rb:20:203:20:207 | [post] self | UseUseExplosion.rb:20:3547:20:3552 | self | @@ -300,9 +318,11 @@ | UseUseExplosion.rb:20:203:20:207 | self | UseUseExplosion.rb:20:3547:20:3552 | self | | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [false] ( ... ) | | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [true] ( ... ) | +| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | +| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | | UseUseExplosion.rb:20:215:20:3540 | then ... | UseUseExplosion.rb:20:199:20:3556 | if ... | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | +| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:220:20:3540 | if ... | UseUseExplosion.rb:20:215:20:3540 | then ... | | UseUseExplosion.rb:20:224:20:228 | [post] self | UseUseExplosion.rb:20:245:20:249 | self | | UseUseExplosion.rb:20:224:20:228 | [post] self | UseUseExplosion.rb:20:3531:20:3536 | self | @@ -310,9 +330,11 @@ | UseUseExplosion.rb:20:224:20:228 | self | UseUseExplosion.rb:20:3531:20:3536 | self | | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [false] ( ... ) | | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [true] ( ... ) | +| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | +| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | | UseUseExplosion.rb:20:236:20:3524 | then ... | UseUseExplosion.rb:20:220:20:3540 | if ... | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | +| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:241:20:3524 | if ... | UseUseExplosion.rb:20:236:20:3524 | then ... | | UseUseExplosion.rb:20:245:20:249 | [post] self | UseUseExplosion.rb:20:266:20:270 | self | | UseUseExplosion.rb:20:245:20:249 | [post] self | UseUseExplosion.rb:20:3515:20:3520 | self | @@ -320,9 +342,11 @@ | UseUseExplosion.rb:20:245:20:249 | self | UseUseExplosion.rb:20:3515:20:3520 | self | | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [false] ( ... ) | | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [true] ( ... ) | +| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | +| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | | UseUseExplosion.rb:20:257:20:3508 | then ... | UseUseExplosion.rb:20:241:20:3524 | if ... | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | +| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:262:20:3508 | if ... | UseUseExplosion.rb:20:257:20:3508 | then ... | | UseUseExplosion.rb:20:266:20:270 | [post] self | UseUseExplosion.rb:20:287:20:291 | self | | UseUseExplosion.rb:20:266:20:270 | [post] self | UseUseExplosion.rb:20:3499:20:3504 | self | @@ -330,9 +354,11 @@ | UseUseExplosion.rb:20:266:20:270 | self | UseUseExplosion.rb:20:3499:20:3504 | self | | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [false] ( ... ) | | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [true] ( ... ) | +| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | +| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | | UseUseExplosion.rb:20:278:20:3492 | then ... | UseUseExplosion.rb:20:262:20:3508 | if ... | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | +| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:283:20:3492 | if ... | UseUseExplosion.rb:20:278:20:3492 | then ... | | UseUseExplosion.rb:20:287:20:291 | [post] self | UseUseExplosion.rb:20:308:20:312 | self | | UseUseExplosion.rb:20:287:20:291 | [post] self | UseUseExplosion.rb:20:3483:20:3488 | self | @@ -340,9 +366,11 @@ | UseUseExplosion.rb:20:287:20:291 | self | UseUseExplosion.rb:20:3483:20:3488 | self | | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [false] ( ... ) | | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [true] ( ... ) | +| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | +| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | | UseUseExplosion.rb:20:299:20:3476 | then ... | UseUseExplosion.rb:20:283:20:3492 | if ... | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | +| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:304:20:3476 | if ... | UseUseExplosion.rb:20:299:20:3476 | then ... | | UseUseExplosion.rb:20:308:20:312 | [post] self | UseUseExplosion.rb:20:329:20:333 | self | | UseUseExplosion.rb:20:308:20:312 | [post] self | UseUseExplosion.rb:20:3467:20:3472 | self | @@ -350,9 +378,11 @@ | UseUseExplosion.rb:20:308:20:312 | self | UseUseExplosion.rb:20:3467:20:3472 | self | | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [false] ( ... ) | | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [true] ( ... ) | +| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | +| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | | UseUseExplosion.rb:20:320:20:3460 | then ... | UseUseExplosion.rb:20:304:20:3476 | if ... | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | +| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:325:20:3460 | if ... | UseUseExplosion.rb:20:320:20:3460 | then ... | | UseUseExplosion.rb:20:329:20:333 | [post] self | UseUseExplosion.rb:20:350:20:354 | self | | UseUseExplosion.rb:20:329:20:333 | [post] self | UseUseExplosion.rb:20:3451:20:3456 | self | @@ -360,9 +390,11 @@ | UseUseExplosion.rb:20:329:20:333 | self | UseUseExplosion.rb:20:3451:20:3456 | self | | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [false] ( ... ) | | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [true] ( ... ) | +| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | +| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | | UseUseExplosion.rb:20:341:20:3444 | then ... | UseUseExplosion.rb:20:325:20:3460 | if ... | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | +| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:346:20:3444 | if ... | UseUseExplosion.rb:20:341:20:3444 | then ... | | UseUseExplosion.rb:20:350:20:354 | [post] self | UseUseExplosion.rb:20:371:20:375 | self | | UseUseExplosion.rb:20:350:20:354 | [post] self | UseUseExplosion.rb:20:3435:20:3440 | self | @@ -370,9 +402,11 @@ | UseUseExplosion.rb:20:350:20:354 | self | UseUseExplosion.rb:20:3435:20:3440 | self | | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [false] ( ... ) | | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [true] ( ... ) | +| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | +| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | | UseUseExplosion.rb:20:362:20:3428 | then ... | UseUseExplosion.rb:20:346:20:3444 | if ... | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | +| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:367:20:3428 | if ... | UseUseExplosion.rb:20:362:20:3428 | then ... | | UseUseExplosion.rb:20:371:20:375 | [post] self | UseUseExplosion.rb:20:392:20:396 | self | | UseUseExplosion.rb:20:371:20:375 | [post] self | UseUseExplosion.rb:20:3419:20:3424 | self | @@ -380,9 +414,11 @@ | UseUseExplosion.rb:20:371:20:375 | self | UseUseExplosion.rb:20:3419:20:3424 | self | | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [false] ( ... ) | | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [true] ( ... ) | +| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | +| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | | UseUseExplosion.rb:20:383:20:3412 | then ... | UseUseExplosion.rb:20:367:20:3428 | if ... | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | +| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:388:20:3412 | if ... | UseUseExplosion.rb:20:383:20:3412 | then ... | | UseUseExplosion.rb:20:392:20:396 | [post] self | UseUseExplosion.rb:20:413:20:417 | self | | UseUseExplosion.rb:20:392:20:396 | [post] self | UseUseExplosion.rb:20:3403:20:3408 | self | @@ -390,9 +426,11 @@ | UseUseExplosion.rb:20:392:20:396 | self | UseUseExplosion.rb:20:3403:20:3408 | self | | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [false] ( ... ) | | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [true] ( ... ) | +| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | +| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | | UseUseExplosion.rb:20:404:20:3396 | then ... | UseUseExplosion.rb:20:388:20:3412 | if ... | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | +| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:409:20:3396 | if ... | UseUseExplosion.rb:20:404:20:3396 | then ... | | UseUseExplosion.rb:20:413:20:417 | [post] self | UseUseExplosion.rb:20:434:20:438 | self | | UseUseExplosion.rb:20:413:20:417 | [post] self | UseUseExplosion.rb:20:3387:20:3392 | self | @@ -400,9 +438,11 @@ | UseUseExplosion.rb:20:413:20:417 | self | UseUseExplosion.rb:20:3387:20:3392 | self | | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [false] ( ... ) | | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [true] ( ... ) | +| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | +| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | | UseUseExplosion.rb:20:425:20:3380 | then ... | UseUseExplosion.rb:20:409:20:3396 | if ... | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | +| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:430:20:3380 | if ... | UseUseExplosion.rb:20:425:20:3380 | then ... | | UseUseExplosion.rb:20:434:20:438 | [post] self | UseUseExplosion.rb:20:455:20:459 | self | | UseUseExplosion.rb:20:434:20:438 | [post] self | UseUseExplosion.rb:20:3371:20:3376 | self | @@ -410,9 +450,11 @@ | UseUseExplosion.rb:20:434:20:438 | self | UseUseExplosion.rb:20:3371:20:3376 | self | | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [false] ( ... ) | | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [true] ( ... ) | +| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | +| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | | UseUseExplosion.rb:20:446:20:3364 | then ... | UseUseExplosion.rb:20:430:20:3380 | if ... | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | +| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:451:20:3364 | if ... | UseUseExplosion.rb:20:446:20:3364 | then ... | | UseUseExplosion.rb:20:455:20:459 | [post] self | UseUseExplosion.rb:20:476:20:480 | self | | UseUseExplosion.rb:20:455:20:459 | [post] self | UseUseExplosion.rb:20:3355:20:3360 | self | @@ -420,9 +462,11 @@ | UseUseExplosion.rb:20:455:20:459 | self | UseUseExplosion.rb:20:3355:20:3360 | self | | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [false] ( ... ) | | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [true] ( ... ) | +| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | +| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | | UseUseExplosion.rb:20:467:20:3348 | then ... | UseUseExplosion.rb:20:451:20:3364 | if ... | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | +| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:472:20:3348 | if ... | UseUseExplosion.rb:20:467:20:3348 | then ... | | UseUseExplosion.rb:20:476:20:480 | [post] self | UseUseExplosion.rb:20:497:20:501 | self | | UseUseExplosion.rb:20:476:20:480 | [post] self | UseUseExplosion.rb:20:3339:20:3344 | self | @@ -430,9 +474,11 @@ | UseUseExplosion.rb:20:476:20:480 | self | UseUseExplosion.rb:20:3339:20:3344 | self | | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [false] ( ... ) | | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [true] ( ... ) | +| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | +| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | | UseUseExplosion.rb:20:488:20:3332 | then ... | UseUseExplosion.rb:20:472:20:3348 | if ... | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | +| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:493:20:3332 | if ... | UseUseExplosion.rb:20:488:20:3332 | then ... | | UseUseExplosion.rb:20:497:20:501 | [post] self | UseUseExplosion.rb:20:518:20:522 | self | | UseUseExplosion.rb:20:497:20:501 | [post] self | UseUseExplosion.rb:20:3323:20:3328 | self | @@ -440,9 +486,11 @@ | UseUseExplosion.rb:20:497:20:501 | self | UseUseExplosion.rb:20:3323:20:3328 | self | | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [false] ( ... ) | | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [true] ( ... ) | +| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | +| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | | UseUseExplosion.rb:20:509:20:3316 | then ... | UseUseExplosion.rb:20:493:20:3332 | if ... | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | +| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:514:20:3316 | if ... | UseUseExplosion.rb:20:509:20:3316 | then ... | | UseUseExplosion.rb:20:518:20:522 | [post] self | UseUseExplosion.rb:20:539:20:543 | self | | UseUseExplosion.rb:20:518:20:522 | [post] self | UseUseExplosion.rb:20:3307:20:3312 | self | @@ -450,9 +498,11 @@ | UseUseExplosion.rb:20:518:20:522 | self | UseUseExplosion.rb:20:3307:20:3312 | self | | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [false] ( ... ) | | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [true] ( ... ) | +| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | +| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | | UseUseExplosion.rb:20:530:20:3300 | then ... | UseUseExplosion.rb:20:514:20:3316 | if ... | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | +| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:535:20:3300 | if ... | UseUseExplosion.rb:20:530:20:3300 | then ... | | UseUseExplosion.rb:20:539:20:543 | [post] self | UseUseExplosion.rb:20:560:20:564 | self | | UseUseExplosion.rb:20:539:20:543 | [post] self | UseUseExplosion.rb:20:3291:20:3296 | self | @@ -460,9 +510,11 @@ | UseUseExplosion.rb:20:539:20:543 | self | UseUseExplosion.rb:20:3291:20:3296 | self | | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [false] ( ... ) | | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [true] ( ... ) | +| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | +| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | | UseUseExplosion.rb:20:551:20:3284 | then ... | UseUseExplosion.rb:20:535:20:3300 | if ... | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | +| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:556:20:3284 | if ... | UseUseExplosion.rb:20:551:20:3284 | then ... | | UseUseExplosion.rb:20:560:20:564 | [post] self | UseUseExplosion.rb:20:581:20:585 | self | | UseUseExplosion.rb:20:560:20:564 | [post] self | UseUseExplosion.rb:20:3275:20:3280 | self | @@ -470,9 +522,11 @@ | UseUseExplosion.rb:20:560:20:564 | self | UseUseExplosion.rb:20:3275:20:3280 | self | | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [false] ( ... ) | | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [true] ( ... ) | +| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | +| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | | UseUseExplosion.rb:20:572:20:3268 | then ... | UseUseExplosion.rb:20:556:20:3284 | if ... | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | +| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:577:20:3268 | if ... | UseUseExplosion.rb:20:572:20:3268 | then ... | | UseUseExplosion.rb:20:581:20:585 | [post] self | UseUseExplosion.rb:20:602:20:606 | self | | UseUseExplosion.rb:20:581:20:585 | [post] self | UseUseExplosion.rb:20:3259:20:3264 | self | @@ -480,9 +534,11 @@ | UseUseExplosion.rb:20:581:20:585 | self | UseUseExplosion.rb:20:3259:20:3264 | self | | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [false] ( ... ) | | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [true] ( ... ) | +| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | +| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | | UseUseExplosion.rb:20:593:20:3252 | then ... | UseUseExplosion.rb:20:577:20:3268 | if ... | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | +| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:598:20:3252 | if ... | UseUseExplosion.rb:20:593:20:3252 | then ... | | UseUseExplosion.rb:20:602:20:606 | [post] self | UseUseExplosion.rb:20:623:20:627 | self | | UseUseExplosion.rb:20:602:20:606 | [post] self | UseUseExplosion.rb:20:3243:20:3248 | self | @@ -490,9 +546,11 @@ | UseUseExplosion.rb:20:602:20:606 | self | UseUseExplosion.rb:20:3243:20:3248 | self | | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [false] ( ... ) | | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [true] ( ... ) | +| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | +| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | | UseUseExplosion.rb:20:614:20:3236 | then ... | UseUseExplosion.rb:20:598:20:3252 | if ... | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | +| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:619:20:3236 | if ... | UseUseExplosion.rb:20:614:20:3236 | then ... | | UseUseExplosion.rb:20:623:20:627 | [post] self | UseUseExplosion.rb:20:644:20:648 | self | | UseUseExplosion.rb:20:623:20:627 | [post] self | UseUseExplosion.rb:20:3227:20:3232 | self | @@ -500,9 +558,11 @@ | UseUseExplosion.rb:20:623:20:627 | self | UseUseExplosion.rb:20:3227:20:3232 | self | | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [false] ( ... ) | | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [true] ( ... ) | +| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | +| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | | UseUseExplosion.rb:20:635:20:3220 | then ... | UseUseExplosion.rb:20:619:20:3236 | if ... | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | +| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:640:20:3220 | if ... | UseUseExplosion.rb:20:635:20:3220 | then ... | | UseUseExplosion.rb:20:644:20:648 | [post] self | UseUseExplosion.rb:20:665:20:669 | self | | UseUseExplosion.rb:20:644:20:648 | [post] self | UseUseExplosion.rb:20:3211:20:3216 | self | @@ -510,9 +570,11 @@ | UseUseExplosion.rb:20:644:20:648 | self | UseUseExplosion.rb:20:3211:20:3216 | self | | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [false] ( ... ) | | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [true] ( ... ) | +| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | +| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | | UseUseExplosion.rb:20:656:20:3204 | then ... | UseUseExplosion.rb:20:640:20:3220 | if ... | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | +| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:661:20:3204 | if ... | UseUseExplosion.rb:20:656:20:3204 | then ... | | UseUseExplosion.rb:20:665:20:669 | [post] self | UseUseExplosion.rb:20:686:20:690 | self | | UseUseExplosion.rb:20:665:20:669 | [post] self | UseUseExplosion.rb:20:3195:20:3200 | self | @@ -520,9 +582,11 @@ | UseUseExplosion.rb:20:665:20:669 | self | UseUseExplosion.rb:20:3195:20:3200 | self | | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [false] ( ... ) | | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [true] ( ... ) | +| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | +| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | | UseUseExplosion.rb:20:677:20:3188 | then ... | UseUseExplosion.rb:20:661:20:3204 | if ... | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | +| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:682:20:3188 | if ... | UseUseExplosion.rb:20:677:20:3188 | then ... | | UseUseExplosion.rb:20:686:20:690 | [post] self | UseUseExplosion.rb:20:707:20:711 | self | | UseUseExplosion.rb:20:686:20:690 | [post] self | UseUseExplosion.rb:20:3179:20:3184 | self | @@ -530,9 +594,11 @@ | UseUseExplosion.rb:20:686:20:690 | self | UseUseExplosion.rb:20:3179:20:3184 | self | | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [false] ( ... ) | | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [true] ( ... ) | +| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | +| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | | UseUseExplosion.rb:20:698:20:3172 | then ... | UseUseExplosion.rb:20:682:20:3188 | if ... | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | +| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:703:20:3172 | if ... | UseUseExplosion.rb:20:698:20:3172 | then ... | | UseUseExplosion.rb:20:707:20:711 | [post] self | UseUseExplosion.rb:20:728:20:732 | self | | UseUseExplosion.rb:20:707:20:711 | [post] self | UseUseExplosion.rb:20:3163:20:3168 | self | @@ -540,9 +606,11 @@ | UseUseExplosion.rb:20:707:20:711 | self | UseUseExplosion.rb:20:3163:20:3168 | self | | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [false] ( ... ) | | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [true] ( ... ) | +| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | +| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | | UseUseExplosion.rb:20:719:20:3156 | then ... | UseUseExplosion.rb:20:703:20:3172 | if ... | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | +| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:724:20:3156 | if ... | UseUseExplosion.rb:20:719:20:3156 | then ... | | UseUseExplosion.rb:20:728:20:732 | [post] self | UseUseExplosion.rb:20:749:20:753 | self | | UseUseExplosion.rb:20:728:20:732 | [post] self | UseUseExplosion.rb:20:3147:20:3152 | self | @@ -550,9 +618,11 @@ | UseUseExplosion.rb:20:728:20:732 | self | UseUseExplosion.rb:20:3147:20:3152 | self | | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [false] ( ... ) | | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [true] ( ... ) | +| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | +| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | | UseUseExplosion.rb:20:740:20:3140 | then ... | UseUseExplosion.rb:20:724:20:3156 | if ... | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | +| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:745:20:3140 | if ... | UseUseExplosion.rb:20:740:20:3140 | then ... | | UseUseExplosion.rb:20:749:20:753 | [post] self | UseUseExplosion.rb:20:770:20:774 | self | | UseUseExplosion.rb:20:749:20:753 | [post] self | UseUseExplosion.rb:20:3131:20:3136 | self | @@ -560,9 +630,11 @@ | UseUseExplosion.rb:20:749:20:753 | self | UseUseExplosion.rb:20:3131:20:3136 | self | | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [false] ( ... ) | | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [true] ( ... ) | +| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | +| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | | UseUseExplosion.rb:20:761:20:3124 | then ... | UseUseExplosion.rb:20:745:20:3140 | if ... | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | +| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:766:20:3124 | if ... | UseUseExplosion.rb:20:761:20:3124 | then ... | | UseUseExplosion.rb:20:770:20:774 | [post] self | UseUseExplosion.rb:20:791:20:795 | self | | UseUseExplosion.rb:20:770:20:774 | [post] self | UseUseExplosion.rb:20:3115:20:3120 | self | @@ -570,9 +642,11 @@ | UseUseExplosion.rb:20:770:20:774 | self | UseUseExplosion.rb:20:3115:20:3120 | self | | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [false] ( ... ) | | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [true] ( ... ) | +| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | +| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | | UseUseExplosion.rb:20:782:20:3108 | then ... | UseUseExplosion.rb:20:766:20:3124 | if ... | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | +| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:787:20:3108 | if ... | UseUseExplosion.rb:20:782:20:3108 | then ... | | UseUseExplosion.rb:20:791:20:795 | [post] self | UseUseExplosion.rb:20:812:20:816 | self | | UseUseExplosion.rb:20:791:20:795 | [post] self | UseUseExplosion.rb:20:3099:20:3104 | self | @@ -580,9 +654,11 @@ | UseUseExplosion.rb:20:791:20:795 | self | UseUseExplosion.rb:20:3099:20:3104 | self | | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [false] ( ... ) | | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [true] ( ... ) | +| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | +| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | | UseUseExplosion.rb:20:803:20:3092 | then ... | UseUseExplosion.rb:20:787:20:3108 | if ... | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | +| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:808:20:3092 | if ... | UseUseExplosion.rb:20:803:20:3092 | then ... | | UseUseExplosion.rb:20:812:20:816 | [post] self | UseUseExplosion.rb:20:833:20:837 | self | | UseUseExplosion.rb:20:812:20:816 | [post] self | UseUseExplosion.rb:20:3083:20:3088 | self | @@ -590,9 +666,11 @@ | UseUseExplosion.rb:20:812:20:816 | self | UseUseExplosion.rb:20:3083:20:3088 | self | | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [false] ( ... ) | | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [true] ( ... ) | +| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | +| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | | UseUseExplosion.rb:20:824:20:3076 | then ... | UseUseExplosion.rb:20:808:20:3092 | if ... | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | +| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:829:20:3076 | if ... | UseUseExplosion.rb:20:824:20:3076 | then ... | | UseUseExplosion.rb:20:833:20:837 | [post] self | UseUseExplosion.rb:20:854:20:858 | self | | UseUseExplosion.rb:20:833:20:837 | [post] self | UseUseExplosion.rb:20:3067:20:3072 | self | @@ -600,9 +678,11 @@ | UseUseExplosion.rb:20:833:20:837 | self | UseUseExplosion.rb:20:3067:20:3072 | self | | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [false] ( ... ) | | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [true] ( ... ) | +| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | +| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | | UseUseExplosion.rb:20:845:20:3060 | then ... | UseUseExplosion.rb:20:829:20:3076 | if ... | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | +| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:850:20:3060 | if ... | UseUseExplosion.rb:20:845:20:3060 | then ... | | UseUseExplosion.rb:20:854:20:858 | [post] self | UseUseExplosion.rb:20:875:20:879 | self | | UseUseExplosion.rb:20:854:20:858 | [post] self | UseUseExplosion.rb:20:3051:20:3056 | self | @@ -610,9 +690,11 @@ | UseUseExplosion.rb:20:854:20:858 | self | UseUseExplosion.rb:20:3051:20:3056 | self | | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [false] ( ... ) | | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [true] ( ... ) | +| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | +| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | | UseUseExplosion.rb:20:866:20:3044 | then ... | UseUseExplosion.rb:20:850:20:3060 | if ... | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | +| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:871:20:3044 | if ... | UseUseExplosion.rb:20:866:20:3044 | then ... | | UseUseExplosion.rb:20:875:20:879 | [post] self | UseUseExplosion.rb:20:896:20:900 | self | | UseUseExplosion.rb:20:875:20:879 | [post] self | UseUseExplosion.rb:20:3035:20:3040 | self | @@ -620,9 +702,11 @@ | UseUseExplosion.rb:20:875:20:879 | self | UseUseExplosion.rb:20:3035:20:3040 | self | | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [false] ( ... ) | | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [true] ( ... ) | +| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | +| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | | UseUseExplosion.rb:20:887:20:3028 | then ... | UseUseExplosion.rb:20:871:20:3044 | if ... | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | +| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:892:20:3028 | if ... | UseUseExplosion.rb:20:887:20:3028 | then ... | | UseUseExplosion.rb:20:896:20:900 | [post] self | UseUseExplosion.rb:20:917:20:921 | self | | UseUseExplosion.rb:20:896:20:900 | [post] self | UseUseExplosion.rb:20:3019:20:3024 | self | @@ -630,9 +714,11 @@ | UseUseExplosion.rb:20:896:20:900 | self | UseUseExplosion.rb:20:3019:20:3024 | self | | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [false] ( ... ) | | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [true] ( ... ) | +| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | +| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | | UseUseExplosion.rb:20:908:20:3012 | then ... | UseUseExplosion.rb:20:892:20:3028 | if ... | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | +| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:913:20:3012 | if ... | UseUseExplosion.rb:20:908:20:3012 | then ... | | UseUseExplosion.rb:20:917:20:921 | [post] self | UseUseExplosion.rb:20:938:20:942 | self | | UseUseExplosion.rb:20:917:20:921 | [post] self | UseUseExplosion.rb:20:3003:20:3008 | self | @@ -640,9 +726,11 @@ | UseUseExplosion.rb:20:917:20:921 | self | UseUseExplosion.rb:20:3003:20:3008 | self | | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [false] ( ... ) | | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [true] ( ... ) | +| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | +| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | | UseUseExplosion.rb:20:929:20:2996 | then ... | UseUseExplosion.rb:20:913:20:3012 | if ... | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | +| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:934:20:2996 | if ... | UseUseExplosion.rb:20:929:20:2996 | then ... | | UseUseExplosion.rb:20:938:20:942 | [post] self | UseUseExplosion.rb:20:959:20:963 | self | | UseUseExplosion.rb:20:938:20:942 | [post] self | UseUseExplosion.rb:20:2987:20:2992 | self | @@ -650,9 +738,11 @@ | UseUseExplosion.rb:20:938:20:942 | self | UseUseExplosion.rb:20:2987:20:2992 | self | | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [false] ( ... ) | | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [true] ( ... ) | +| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | +| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | | UseUseExplosion.rb:20:950:20:2980 | then ... | UseUseExplosion.rb:20:934:20:2996 | if ... | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | +| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:955:20:2980 | if ... | UseUseExplosion.rb:20:950:20:2980 | then ... | | UseUseExplosion.rb:20:959:20:963 | [post] self | UseUseExplosion.rb:20:980:20:984 | self | | UseUseExplosion.rb:20:959:20:963 | [post] self | UseUseExplosion.rb:20:2971:20:2976 | self | @@ -660,9 +750,11 @@ | UseUseExplosion.rb:20:959:20:963 | self | UseUseExplosion.rb:20:2971:20:2976 | self | | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [false] ( ... ) | | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [true] ( ... ) | +| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | +| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | | UseUseExplosion.rb:20:971:20:2964 | then ... | UseUseExplosion.rb:20:955:20:2980 | if ... | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | +| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:976:20:2964 | if ... | UseUseExplosion.rb:20:971:20:2964 | then ... | | UseUseExplosion.rb:20:980:20:984 | [post] self | UseUseExplosion.rb:20:1001:20:1005 | self | | UseUseExplosion.rb:20:980:20:984 | [post] self | UseUseExplosion.rb:20:2955:20:2960 | self | @@ -670,9 +762,11 @@ | UseUseExplosion.rb:20:980:20:984 | self | UseUseExplosion.rb:20:2955:20:2960 | self | | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [false] ( ... ) | | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [true] ( ... ) | +| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | +| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | | UseUseExplosion.rb:20:992:20:2948 | then ... | UseUseExplosion.rb:20:976:20:2964 | if ... | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | +| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:997:20:2948 | if ... | UseUseExplosion.rb:20:992:20:2948 | then ... | | UseUseExplosion.rb:20:1001:20:1005 | [post] self | UseUseExplosion.rb:20:1022:20:1026 | self | | UseUseExplosion.rb:20:1001:20:1005 | [post] self | UseUseExplosion.rb:20:2939:20:2944 | self | @@ -680,9 +774,11 @@ | UseUseExplosion.rb:20:1001:20:1005 | self | UseUseExplosion.rb:20:2939:20:2944 | self | | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [false] ( ... ) | | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [true] ( ... ) | +| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | +| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | | UseUseExplosion.rb:20:1013:20:2932 | then ... | UseUseExplosion.rb:20:997:20:2948 | if ... | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | +| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1018:20:2932 | if ... | UseUseExplosion.rb:20:1013:20:2932 | then ... | | UseUseExplosion.rb:20:1022:20:1026 | [post] self | UseUseExplosion.rb:20:1043:20:1047 | self | | UseUseExplosion.rb:20:1022:20:1026 | [post] self | UseUseExplosion.rb:20:2923:20:2928 | self | @@ -690,9 +786,11 @@ | UseUseExplosion.rb:20:1022:20:1026 | self | UseUseExplosion.rb:20:2923:20:2928 | self | | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [false] ( ... ) | | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [true] ( ... ) | +| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | +| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | | UseUseExplosion.rb:20:1034:20:2916 | then ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | +| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1039:20:2916 | if ... | UseUseExplosion.rb:20:1034:20:2916 | then ... | | UseUseExplosion.rb:20:1043:20:1047 | [post] self | UseUseExplosion.rb:20:1064:20:1068 | self | | UseUseExplosion.rb:20:1043:20:1047 | [post] self | UseUseExplosion.rb:20:2907:20:2912 | self | @@ -700,9 +798,11 @@ | UseUseExplosion.rb:20:1043:20:1047 | self | UseUseExplosion.rb:20:2907:20:2912 | self | | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [false] ( ... ) | | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [true] ( ... ) | +| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | +| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | | UseUseExplosion.rb:20:1055:20:2900 | then ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | +| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1060:20:2900 | if ... | UseUseExplosion.rb:20:1055:20:2900 | then ... | | UseUseExplosion.rb:20:1064:20:1068 | [post] self | UseUseExplosion.rb:20:1085:20:1089 | self | | UseUseExplosion.rb:20:1064:20:1068 | [post] self | UseUseExplosion.rb:20:2891:20:2896 | self | @@ -710,9 +810,11 @@ | UseUseExplosion.rb:20:1064:20:1068 | self | UseUseExplosion.rb:20:2891:20:2896 | self | | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [false] ( ... ) | | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [true] ( ... ) | +| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | +| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | | UseUseExplosion.rb:20:1076:20:2884 | then ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | +| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1081:20:2884 | if ... | UseUseExplosion.rb:20:1076:20:2884 | then ... | | UseUseExplosion.rb:20:1085:20:1089 | [post] self | UseUseExplosion.rb:20:1106:20:1110 | self | | UseUseExplosion.rb:20:1085:20:1089 | [post] self | UseUseExplosion.rb:20:2875:20:2880 | self | @@ -720,9 +822,11 @@ | UseUseExplosion.rb:20:1085:20:1089 | self | UseUseExplosion.rb:20:2875:20:2880 | self | | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [false] ( ... ) | | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [true] ( ... ) | +| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | +| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | | UseUseExplosion.rb:20:1097:20:2868 | then ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | +| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1102:20:2868 | if ... | UseUseExplosion.rb:20:1097:20:2868 | then ... | | UseUseExplosion.rb:20:1106:20:1110 | [post] self | UseUseExplosion.rb:20:1127:20:1131 | self | | UseUseExplosion.rb:20:1106:20:1110 | [post] self | UseUseExplosion.rb:20:2859:20:2864 | self | @@ -730,9 +834,11 @@ | UseUseExplosion.rb:20:1106:20:1110 | self | UseUseExplosion.rb:20:2859:20:2864 | self | | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [false] ( ... ) | | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [true] ( ... ) | +| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | +| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | | UseUseExplosion.rb:20:1118:20:2852 | then ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | +| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1123:20:2852 | if ... | UseUseExplosion.rb:20:1118:20:2852 | then ... | | UseUseExplosion.rb:20:1127:20:1131 | [post] self | UseUseExplosion.rb:20:1148:20:1152 | self | | UseUseExplosion.rb:20:1127:20:1131 | [post] self | UseUseExplosion.rb:20:2843:20:2848 | self | @@ -740,9 +846,11 @@ | UseUseExplosion.rb:20:1127:20:1131 | self | UseUseExplosion.rb:20:2843:20:2848 | self | | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [false] ( ... ) | | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [true] ( ... ) | +| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | +| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | | UseUseExplosion.rb:20:1139:20:2836 | then ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | +| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1144:20:2836 | if ... | UseUseExplosion.rb:20:1139:20:2836 | then ... | | UseUseExplosion.rb:20:1148:20:1152 | [post] self | UseUseExplosion.rb:20:1169:20:1173 | self | | UseUseExplosion.rb:20:1148:20:1152 | [post] self | UseUseExplosion.rb:20:2827:20:2832 | self | @@ -750,9 +858,11 @@ | UseUseExplosion.rb:20:1148:20:1152 | self | UseUseExplosion.rb:20:2827:20:2832 | self | | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [false] ( ... ) | | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [true] ( ... ) | +| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | +| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | | UseUseExplosion.rb:20:1160:20:2820 | then ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | +| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1165:20:2820 | if ... | UseUseExplosion.rb:20:1160:20:2820 | then ... | | UseUseExplosion.rb:20:1169:20:1173 | [post] self | UseUseExplosion.rb:20:1190:20:1194 | self | | UseUseExplosion.rb:20:1169:20:1173 | [post] self | UseUseExplosion.rb:20:2811:20:2816 | self | @@ -760,9 +870,11 @@ | UseUseExplosion.rb:20:1169:20:1173 | self | UseUseExplosion.rb:20:2811:20:2816 | self | | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [false] ( ... ) | | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [true] ( ... ) | +| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | +| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | | UseUseExplosion.rb:20:1181:20:2804 | then ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | +| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1186:20:2804 | if ... | UseUseExplosion.rb:20:1181:20:2804 | then ... | | UseUseExplosion.rb:20:1190:20:1194 | [post] self | UseUseExplosion.rb:20:1211:20:1215 | self | | UseUseExplosion.rb:20:1190:20:1194 | [post] self | UseUseExplosion.rb:20:2795:20:2800 | self | @@ -770,9 +882,11 @@ | UseUseExplosion.rb:20:1190:20:1194 | self | UseUseExplosion.rb:20:2795:20:2800 | self | | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [false] ( ... ) | | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [true] ( ... ) | +| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | +| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | | UseUseExplosion.rb:20:1202:20:2788 | then ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | +| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1207:20:2788 | if ... | UseUseExplosion.rb:20:1202:20:2788 | then ... | | UseUseExplosion.rb:20:1211:20:1215 | [post] self | UseUseExplosion.rb:20:1232:20:1236 | self | | UseUseExplosion.rb:20:1211:20:1215 | [post] self | UseUseExplosion.rb:20:2779:20:2784 | self | @@ -780,9 +894,11 @@ | UseUseExplosion.rb:20:1211:20:1215 | self | UseUseExplosion.rb:20:2779:20:2784 | self | | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [false] ( ... ) | | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [true] ( ... ) | +| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | +| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | | UseUseExplosion.rb:20:1223:20:2772 | then ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | +| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1228:20:2772 | if ... | UseUseExplosion.rb:20:1223:20:2772 | then ... | | UseUseExplosion.rb:20:1232:20:1236 | [post] self | UseUseExplosion.rb:20:1253:20:1257 | self | | UseUseExplosion.rb:20:1232:20:1236 | [post] self | UseUseExplosion.rb:20:2763:20:2768 | self | @@ -790,9 +906,11 @@ | UseUseExplosion.rb:20:1232:20:1236 | self | UseUseExplosion.rb:20:2763:20:2768 | self | | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [false] ( ... ) | | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [true] ( ... ) | +| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | +| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | | UseUseExplosion.rb:20:1244:20:2756 | then ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | +| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1249:20:2756 | if ... | UseUseExplosion.rb:20:1244:20:2756 | then ... | | UseUseExplosion.rb:20:1253:20:1257 | [post] self | UseUseExplosion.rb:20:1274:20:1278 | self | | UseUseExplosion.rb:20:1253:20:1257 | [post] self | UseUseExplosion.rb:20:2747:20:2752 | self | @@ -800,9 +918,11 @@ | UseUseExplosion.rb:20:1253:20:1257 | self | UseUseExplosion.rb:20:2747:20:2752 | self | | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [false] ( ... ) | | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [true] ( ... ) | +| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | +| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | | UseUseExplosion.rb:20:1265:20:2740 | then ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | +| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1270:20:2740 | if ... | UseUseExplosion.rb:20:1265:20:2740 | then ... | | UseUseExplosion.rb:20:1274:20:1278 | [post] self | UseUseExplosion.rb:20:1295:20:1299 | self | | UseUseExplosion.rb:20:1274:20:1278 | [post] self | UseUseExplosion.rb:20:2731:20:2736 | self | @@ -810,9 +930,11 @@ | UseUseExplosion.rb:20:1274:20:1278 | self | UseUseExplosion.rb:20:2731:20:2736 | self | | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [false] ( ... ) | | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [true] ( ... ) | +| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | +| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | | UseUseExplosion.rb:20:1286:20:2724 | then ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | +| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1291:20:2724 | if ... | UseUseExplosion.rb:20:1286:20:2724 | then ... | | UseUseExplosion.rb:20:1295:20:1299 | [post] self | UseUseExplosion.rb:20:1316:20:1320 | self | | UseUseExplosion.rb:20:1295:20:1299 | [post] self | UseUseExplosion.rb:20:2715:20:2720 | self | @@ -820,9 +942,11 @@ | UseUseExplosion.rb:20:1295:20:1299 | self | UseUseExplosion.rb:20:2715:20:2720 | self | | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [false] ( ... ) | | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [true] ( ... ) | +| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | +| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | | UseUseExplosion.rb:20:1307:20:2708 | then ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | +| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1312:20:2708 | if ... | UseUseExplosion.rb:20:1307:20:2708 | then ... | | UseUseExplosion.rb:20:1316:20:1320 | [post] self | UseUseExplosion.rb:20:1337:20:1341 | self | | UseUseExplosion.rb:20:1316:20:1320 | [post] self | UseUseExplosion.rb:20:2699:20:2704 | self | @@ -830,9 +954,11 @@ | UseUseExplosion.rb:20:1316:20:1320 | self | UseUseExplosion.rb:20:2699:20:2704 | self | | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [false] ( ... ) | | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [true] ( ... ) | +| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | +| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | | UseUseExplosion.rb:20:1328:20:2692 | then ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | +| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1333:20:2692 | if ... | UseUseExplosion.rb:20:1328:20:2692 | then ... | | UseUseExplosion.rb:20:1337:20:1341 | [post] self | UseUseExplosion.rb:20:1358:20:1362 | self | | UseUseExplosion.rb:20:1337:20:1341 | [post] self | UseUseExplosion.rb:20:2683:20:2688 | self | @@ -840,9 +966,11 @@ | UseUseExplosion.rb:20:1337:20:1341 | self | UseUseExplosion.rb:20:2683:20:2688 | self | | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [false] ( ... ) | | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [true] ( ... ) | +| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | +| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | | UseUseExplosion.rb:20:1349:20:2676 | then ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | +| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1354:20:2676 | if ... | UseUseExplosion.rb:20:1349:20:2676 | then ... | | UseUseExplosion.rb:20:1358:20:1362 | [post] self | UseUseExplosion.rb:20:1379:20:1383 | self | | UseUseExplosion.rb:20:1358:20:1362 | [post] self | UseUseExplosion.rb:20:2667:20:2672 | self | @@ -850,9 +978,11 @@ | UseUseExplosion.rb:20:1358:20:1362 | self | UseUseExplosion.rb:20:2667:20:2672 | self | | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [false] ( ... ) | | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [true] ( ... ) | +| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | +| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | | UseUseExplosion.rb:20:1370:20:2660 | then ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | +| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1375:20:2660 | if ... | UseUseExplosion.rb:20:1370:20:2660 | then ... | | UseUseExplosion.rb:20:1379:20:1383 | [post] self | UseUseExplosion.rb:20:1400:20:1404 | self | | UseUseExplosion.rb:20:1379:20:1383 | [post] self | UseUseExplosion.rb:20:2651:20:2656 | self | @@ -860,9 +990,11 @@ | UseUseExplosion.rb:20:1379:20:1383 | self | UseUseExplosion.rb:20:2651:20:2656 | self | | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [false] ( ... ) | | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [true] ( ... ) | +| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | +| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | | UseUseExplosion.rb:20:1391:20:2644 | then ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | +| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1396:20:2644 | if ... | UseUseExplosion.rb:20:1391:20:2644 | then ... | | UseUseExplosion.rb:20:1400:20:1404 | [post] self | UseUseExplosion.rb:20:1421:20:1425 | self | | UseUseExplosion.rb:20:1400:20:1404 | [post] self | UseUseExplosion.rb:20:2635:20:2640 | self | @@ -870,9 +1002,11 @@ | UseUseExplosion.rb:20:1400:20:1404 | self | UseUseExplosion.rb:20:2635:20:2640 | self | | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [false] ( ... ) | | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [true] ( ... ) | +| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | +| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | | UseUseExplosion.rb:20:1412:20:2628 | then ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | +| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1417:20:2628 | if ... | UseUseExplosion.rb:20:1412:20:2628 | then ... | | UseUseExplosion.rb:20:1421:20:1425 | [post] self | UseUseExplosion.rb:20:1442:20:1446 | self | | UseUseExplosion.rb:20:1421:20:1425 | [post] self | UseUseExplosion.rb:20:2619:20:2624 | self | @@ -880,9 +1014,11 @@ | UseUseExplosion.rb:20:1421:20:1425 | self | UseUseExplosion.rb:20:2619:20:2624 | self | | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [false] ( ... ) | | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [true] ( ... ) | +| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | +| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | | UseUseExplosion.rb:20:1433:20:2612 | then ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | +| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1438:20:2612 | if ... | UseUseExplosion.rb:20:1433:20:2612 | then ... | | UseUseExplosion.rb:20:1442:20:1446 | [post] self | UseUseExplosion.rb:20:1463:20:1467 | self | | UseUseExplosion.rb:20:1442:20:1446 | [post] self | UseUseExplosion.rb:20:2603:20:2608 | self | @@ -890,9 +1026,11 @@ | UseUseExplosion.rb:20:1442:20:1446 | self | UseUseExplosion.rb:20:2603:20:2608 | self | | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [false] ( ... ) | | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [true] ( ... ) | +| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | +| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | | UseUseExplosion.rb:20:1454:20:2596 | then ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | +| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1459:20:2596 | if ... | UseUseExplosion.rb:20:1454:20:2596 | then ... | | UseUseExplosion.rb:20:1463:20:1467 | [post] self | UseUseExplosion.rb:20:1484:20:1488 | self | | UseUseExplosion.rb:20:1463:20:1467 | [post] self | UseUseExplosion.rb:20:2587:20:2592 | self | @@ -900,9 +1038,11 @@ | UseUseExplosion.rb:20:1463:20:1467 | self | UseUseExplosion.rb:20:2587:20:2592 | self | | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [false] ( ... ) | | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [true] ( ... ) | +| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | +| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | | UseUseExplosion.rb:20:1475:20:2580 | then ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | +| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1480:20:2580 | if ... | UseUseExplosion.rb:20:1475:20:2580 | then ... | | UseUseExplosion.rb:20:1484:20:1488 | [post] self | UseUseExplosion.rb:20:1505:20:1509 | self | | UseUseExplosion.rb:20:1484:20:1488 | [post] self | UseUseExplosion.rb:20:2571:20:2576 | self | @@ -910,9 +1050,11 @@ | UseUseExplosion.rb:20:1484:20:1488 | self | UseUseExplosion.rb:20:2571:20:2576 | self | | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [false] ( ... ) | | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [true] ( ... ) | +| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | +| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | | UseUseExplosion.rb:20:1496:20:2564 | then ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | +| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1501:20:2564 | if ... | UseUseExplosion.rb:20:1496:20:2564 | then ... | | UseUseExplosion.rb:20:1505:20:1509 | [post] self | UseUseExplosion.rb:20:1526:20:1530 | self | | UseUseExplosion.rb:20:1505:20:1509 | [post] self | UseUseExplosion.rb:20:2555:20:2560 | self | @@ -920,9 +1062,11 @@ | UseUseExplosion.rb:20:1505:20:1509 | self | UseUseExplosion.rb:20:2555:20:2560 | self | | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [false] ( ... ) | | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [true] ( ... ) | +| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | +| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | | UseUseExplosion.rb:20:1517:20:2548 | then ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | +| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1522:20:2548 | if ... | UseUseExplosion.rb:20:1517:20:2548 | then ... | | UseUseExplosion.rb:20:1526:20:1530 | [post] self | UseUseExplosion.rb:20:1547:20:1551 | self | | UseUseExplosion.rb:20:1526:20:1530 | [post] self | UseUseExplosion.rb:20:2539:20:2544 | self | @@ -930,9 +1074,11 @@ | UseUseExplosion.rb:20:1526:20:1530 | self | UseUseExplosion.rb:20:2539:20:2544 | self | | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [false] ( ... ) | | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [true] ( ... ) | +| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | +| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | | UseUseExplosion.rb:20:1538:20:2532 | then ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | +| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1543:20:2532 | if ... | UseUseExplosion.rb:20:1538:20:2532 | then ... | | UseUseExplosion.rb:20:1547:20:1551 | [post] self | UseUseExplosion.rb:20:1568:20:1572 | self | | UseUseExplosion.rb:20:1547:20:1551 | [post] self | UseUseExplosion.rb:20:2523:20:2528 | self | @@ -940,9 +1086,11 @@ | UseUseExplosion.rb:20:1547:20:1551 | self | UseUseExplosion.rb:20:2523:20:2528 | self | | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [false] ( ... ) | | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [true] ( ... ) | +| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | +| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | | UseUseExplosion.rb:20:1559:20:2516 | then ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | +| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1564:20:2516 | if ... | UseUseExplosion.rb:20:1559:20:2516 | then ... | | UseUseExplosion.rb:20:1568:20:1572 | [post] self | UseUseExplosion.rb:20:1589:20:1593 | self | | UseUseExplosion.rb:20:1568:20:1572 | [post] self | UseUseExplosion.rb:20:2507:20:2512 | self | @@ -950,9 +1098,11 @@ | UseUseExplosion.rb:20:1568:20:1572 | self | UseUseExplosion.rb:20:2507:20:2512 | self | | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [false] ( ... ) | | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [true] ( ... ) | +| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | +| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | | UseUseExplosion.rb:20:1580:20:2500 | then ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | +| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1585:20:2500 | if ... | UseUseExplosion.rb:20:1580:20:2500 | then ... | | UseUseExplosion.rb:20:1589:20:1593 | [post] self | UseUseExplosion.rb:20:1610:20:1614 | self | | UseUseExplosion.rb:20:1589:20:1593 | [post] self | UseUseExplosion.rb:20:2491:20:2496 | self | @@ -960,9 +1110,11 @@ | UseUseExplosion.rb:20:1589:20:1593 | self | UseUseExplosion.rb:20:2491:20:2496 | self | | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [false] ( ... ) | | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [true] ( ... ) | +| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | +| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | | UseUseExplosion.rb:20:1601:20:2484 | then ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | +| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1606:20:2484 | if ... | UseUseExplosion.rb:20:1601:20:2484 | then ... | | UseUseExplosion.rb:20:1610:20:1614 | [post] self | UseUseExplosion.rb:20:1631:20:1635 | self | | UseUseExplosion.rb:20:1610:20:1614 | [post] self | UseUseExplosion.rb:20:2475:20:2480 | self | @@ -970,9 +1122,11 @@ | UseUseExplosion.rb:20:1610:20:1614 | self | UseUseExplosion.rb:20:2475:20:2480 | self | | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [false] ( ... ) | | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [true] ( ... ) | +| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | +| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | | UseUseExplosion.rb:20:1622:20:2468 | then ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | +| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1627:20:2468 | if ... | UseUseExplosion.rb:20:1622:20:2468 | then ... | | UseUseExplosion.rb:20:1631:20:1635 | [post] self | UseUseExplosion.rb:20:1652:20:1656 | self | | UseUseExplosion.rb:20:1631:20:1635 | [post] self | UseUseExplosion.rb:20:2459:20:2464 | self | @@ -980,9 +1134,11 @@ | UseUseExplosion.rb:20:1631:20:1635 | self | UseUseExplosion.rb:20:2459:20:2464 | self | | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [false] ( ... ) | | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [true] ( ... ) | +| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | +| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | | UseUseExplosion.rb:20:1643:20:2452 | then ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | +| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1648:20:2452 | if ... | UseUseExplosion.rb:20:1643:20:2452 | then ... | | UseUseExplosion.rb:20:1652:20:1656 | [post] self | UseUseExplosion.rb:20:1673:20:1677 | self | | UseUseExplosion.rb:20:1652:20:1656 | [post] self | UseUseExplosion.rb:20:2443:20:2448 | self | @@ -990,9 +1146,11 @@ | UseUseExplosion.rb:20:1652:20:1656 | self | UseUseExplosion.rb:20:2443:20:2448 | self | | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [false] ( ... ) | | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [true] ( ... ) | +| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | +| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | | UseUseExplosion.rb:20:1664:20:2436 | then ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | +| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1669:20:2436 | if ... | UseUseExplosion.rb:20:1664:20:2436 | then ... | | UseUseExplosion.rb:20:1673:20:1677 | [post] self | UseUseExplosion.rb:20:1694:20:1698 | self | | UseUseExplosion.rb:20:1673:20:1677 | [post] self | UseUseExplosion.rb:20:2427:20:2432 | self | @@ -1000,9 +1158,11 @@ | UseUseExplosion.rb:20:1673:20:1677 | self | UseUseExplosion.rb:20:2427:20:2432 | self | | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [false] ( ... ) | | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [true] ( ... ) | +| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | +| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | | UseUseExplosion.rb:20:1685:20:2420 | then ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | +| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1690:20:2420 | if ... | UseUseExplosion.rb:20:1685:20:2420 | then ... | | UseUseExplosion.rb:20:1694:20:1698 | [post] self | UseUseExplosion.rb:20:1715:20:1719 | self | | UseUseExplosion.rb:20:1694:20:1698 | [post] self | UseUseExplosion.rb:20:2411:20:2416 | self | @@ -1010,9 +1170,11 @@ | UseUseExplosion.rb:20:1694:20:1698 | self | UseUseExplosion.rb:20:2411:20:2416 | self | | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [false] ( ... ) | | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [true] ( ... ) | +| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | +| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | | UseUseExplosion.rb:20:1706:20:2404 | then ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | +| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1711:20:2404 | if ... | UseUseExplosion.rb:20:1706:20:2404 | then ... | | UseUseExplosion.rb:20:1715:20:1719 | [post] self | UseUseExplosion.rb:20:1736:20:1740 | self | | UseUseExplosion.rb:20:1715:20:1719 | [post] self | UseUseExplosion.rb:20:2395:20:2400 | self | @@ -1020,9 +1182,11 @@ | UseUseExplosion.rb:20:1715:20:1719 | self | UseUseExplosion.rb:20:2395:20:2400 | self | | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [false] ( ... ) | | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [true] ( ... ) | +| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | +| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | | UseUseExplosion.rb:20:1727:20:2388 | then ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | +| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1732:20:2388 | if ... | UseUseExplosion.rb:20:1727:20:2388 | then ... | | UseUseExplosion.rb:20:1736:20:1740 | [post] self | UseUseExplosion.rb:20:1757:20:1761 | self | | UseUseExplosion.rb:20:1736:20:1740 | [post] self | UseUseExplosion.rb:20:2379:20:2384 | self | @@ -1030,9 +1194,11 @@ | UseUseExplosion.rb:20:1736:20:1740 | self | UseUseExplosion.rb:20:2379:20:2384 | self | | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [false] ( ... ) | | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [true] ( ... ) | +| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | +| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | | UseUseExplosion.rb:20:1748:20:2372 | then ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | +| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1753:20:2372 | if ... | UseUseExplosion.rb:20:1748:20:2372 | then ... | | UseUseExplosion.rb:20:1757:20:1761 | [post] self | UseUseExplosion.rb:20:1778:20:1782 | self | | UseUseExplosion.rb:20:1757:20:1761 | [post] self | UseUseExplosion.rb:20:2363:20:2368 | self | @@ -1040,9 +1206,11 @@ | UseUseExplosion.rb:20:1757:20:1761 | self | UseUseExplosion.rb:20:2363:20:2368 | self | | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [false] ( ... ) | | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [true] ( ... ) | +| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | +| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | | UseUseExplosion.rb:20:1769:20:2356 | then ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | +| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1774:20:2356 | if ... | UseUseExplosion.rb:20:1769:20:2356 | then ... | | UseUseExplosion.rb:20:1778:20:1782 | [post] self | UseUseExplosion.rb:20:1799:20:1803 | self | | UseUseExplosion.rb:20:1778:20:1782 | [post] self | UseUseExplosion.rb:20:2347:20:2352 | self | @@ -1050,9 +1218,11 @@ | UseUseExplosion.rb:20:1778:20:1782 | self | UseUseExplosion.rb:20:2347:20:2352 | self | | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [false] ( ... ) | | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [true] ( ... ) | +| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | +| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | | UseUseExplosion.rb:20:1790:20:2340 | then ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | +| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1795:20:2340 | if ... | UseUseExplosion.rb:20:1790:20:2340 | then ... | | UseUseExplosion.rb:20:1799:20:1803 | [post] self | UseUseExplosion.rb:20:1820:20:1824 | self | | UseUseExplosion.rb:20:1799:20:1803 | [post] self | UseUseExplosion.rb:20:2331:20:2336 | self | @@ -1060,9 +1230,11 @@ | UseUseExplosion.rb:20:1799:20:1803 | self | UseUseExplosion.rb:20:2331:20:2336 | self | | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [false] ( ... ) | | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [true] ( ... ) | +| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | +| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | | UseUseExplosion.rb:20:1811:20:2324 | then ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | +| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1816:20:2324 | if ... | UseUseExplosion.rb:20:1811:20:2324 | then ... | | UseUseExplosion.rb:20:1820:20:1824 | [post] self | UseUseExplosion.rb:20:1841:20:1845 | self | | UseUseExplosion.rb:20:1820:20:1824 | [post] self | UseUseExplosion.rb:20:2315:20:2320 | self | @@ -1070,9 +1242,11 @@ | UseUseExplosion.rb:20:1820:20:1824 | self | UseUseExplosion.rb:20:2315:20:2320 | self | | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [false] ( ... ) | | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [true] ( ... ) | +| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | +| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | | UseUseExplosion.rb:20:1832:20:2308 | then ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | +| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1837:20:2308 | if ... | UseUseExplosion.rb:20:1832:20:2308 | then ... | | UseUseExplosion.rb:20:1841:20:1845 | [post] self | UseUseExplosion.rb:20:1862:20:1866 | self | | UseUseExplosion.rb:20:1841:20:1845 | [post] self | UseUseExplosion.rb:20:2299:20:2304 | self | @@ -1080,9 +1254,11 @@ | UseUseExplosion.rb:20:1841:20:1845 | self | UseUseExplosion.rb:20:2299:20:2304 | self | | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [false] ( ... ) | | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [true] ( ... ) | +| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | +| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | | UseUseExplosion.rb:20:1853:20:2292 | then ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | +| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1858:20:2292 | if ... | UseUseExplosion.rb:20:1853:20:2292 | then ... | | UseUseExplosion.rb:20:1862:20:1866 | [post] self | UseUseExplosion.rb:20:1883:20:1887 | self | | UseUseExplosion.rb:20:1862:20:1866 | [post] self | UseUseExplosion.rb:20:2283:20:2288 | self | @@ -1090,9 +1266,11 @@ | UseUseExplosion.rb:20:1862:20:1866 | self | UseUseExplosion.rb:20:2283:20:2288 | self | | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [false] ( ... ) | | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [true] ( ... ) | +| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | +| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | | UseUseExplosion.rb:20:1874:20:2276 | then ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | +| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1879:20:2276 | if ... | UseUseExplosion.rb:20:1874:20:2276 | then ... | | UseUseExplosion.rb:20:1883:20:1887 | [post] self | UseUseExplosion.rb:20:1904:20:1908 | self | | UseUseExplosion.rb:20:1883:20:1887 | [post] self | UseUseExplosion.rb:20:2267:20:2272 | self | @@ -1100,9 +1278,11 @@ | UseUseExplosion.rb:20:1883:20:1887 | self | UseUseExplosion.rb:20:2267:20:2272 | self | | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [false] ( ... ) | | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [true] ( ... ) | +| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | +| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | | UseUseExplosion.rb:20:1895:20:2260 | then ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | +| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1900:20:2260 | if ... | UseUseExplosion.rb:20:1895:20:2260 | then ... | | UseUseExplosion.rb:20:1904:20:1908 | [post] self | UseUseExplosion.rb:20:1925:20:1929 | self | | UseUseExplosion.rb:20:1904:20:1908 | [post] self | UseUseExplosion.rb:20:2251:20:2256 | self | @@ -1110,9 +1290,11 @@ | UseUseExplosion.rb:20:1904:20:1908 | self | UseUseExplosion.rb:20:2251:20:2256 | self | | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [false] ( ... ) | | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [true] ( ... ) | +| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | +| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | | UseUseExplosion.rb:20:1916:20:2244 | then ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | +| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1921:20:2244 | if ... | UseUseExplosion.rb:20:1916:20:2244 | then ... | | UseUseExplosion.rb:20:1925:20:1929 | [post] self | UseUseExplosion.rb:20:1945:20:1949 | self | | UseUseExplosion.rb:20:1925:20:1929 | [post] self | UseUseExplosion.rb:20:2235:20:2240 | self | @@ -1120,9 +1302,11 @@ | UseUseExplosion.rb:20:1925:20:1929 | self | UseUseExplosion.rb:20:2235:20:2240 | self | | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [false] ( ... ) | | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [true] ( ... ) | +| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | +| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | | UseUseExplosion.rb:20:1936:20:2228 | then ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | +| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1941:20:2228 | if ... | UseUseExplosion.rb:20:1936:20:2228 | then ... | | UseUseExplosion.rb:20:1945:20:1949 | [post] self | UseUseExplosion.rb:20:1965:20:1969 | self | | UseUseExplosion.rb:20:1945:20:1949 | [post] self | UseUseExplosion.rb:20:2219:20:2224 | self | @@ -1130,9 +1314,11 @@ | UseUseExplosion.rb:20:1945:20:1949 | self | UseUseExplosion.rb:20:2219:20:2224 | self | | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [false] ( ... ) | | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [true] ( ... ) | +| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | +| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | | UseUseExplosion.rb:20:1956:20:2212 | then ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | +| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1961:20:2212 | if ... | UseUseExplosion.rb:20:1956:20:2212 | then ... | | UseUseExplosion.rb:20:1965:20:1969 | [post] self | UseUseExplosion.rb:20:1985:20:1989 | self | | UseUseExplosion.rb:20:1965:20:1969 | [post] self | UseUseExplosion.rb:20:2203:20:2208 | self | @@ -1140,9 +1326,11 @@ | UseUseExplosion.rb:20:1965:20:1969 | self | UseUseExplosion.rb:20:2203:20:2208 | self | | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [false] ( ... ) | | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [true] ( ... ) | +| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | +| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | | UseUseExplosion.rb:20:1976:20:2196 | then ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | +| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1981:20:2196 | if ... | UseUseExplosion.rb:20:1976:20:2196 | then ... | | UseUseExplosion.rb:20:1985:20:1989 | [post] self | UseUseExplosion.rb:20:2005:20:2009 | self | | UseUseExplosion.rb:20:1985:20:1989 | [post] self | UseUseExplosion.rb:20:2187:20:2192 | self | @@ -1150,9 +1338,11 @@ | UseUseExplosion.rb:20:1985:20:1989 | self | UseUseExplosion.rb:20:2187:20:2192 | self | | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [false] ( ... ) | | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [true] ( ... ) | +| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | +| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | | UseUseExplosion.rb:20:1996:20:2180 | then ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | +| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2001:20:2180 | if ... | UseUseExplosion.rb:20:1996:20:2180 | then ... | | UseUseExplosion.rb:20:2005:20:2009 | [post] self | UseUseExplosion.rb:20:2025:20:2029 | self | | UseUseExplosion.rb:20:2005:20:2009 | [post] self | UseUseExplosion.rb:20:2171:20:2176 | self | @@ -1160,9 +1350,11 @@ | UseUseExplosion.rb:20:2005:20:2009 | self | UseUseExplosion.rb:20:2171:20:2176 | self | | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [false] ( ... ) | | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [true] ( ... ) | +| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | +| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | | UseUseExplosion.rb:20:2016:20:2164 | then ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | +| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2021:20:2164 | if ... | UseUseExplosion.rb:20:2016:20:2164 | then ... | | UseUseExplosion.rb:20:2025:20:2029 | [post] self | UseUseExplosion.rb:20:2045:20:2049 | self | | UseUseExplosion.rb:20:2025:20:2029 | [post] self | UseUseExplosion.rb:20:2155:20:2160 | self | @@ -1170,9 +1362,11 @@ | UseUseExplosion.rb:20:2025:20:2029 | self | UseUseExplosion.rb:20:2155:20:2160 | self | | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [false] ( ... ) | | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [true] ( ... ) | +| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | +| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | | UseUseExplosion.rb:20:2036:20:2148 | then ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | +| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2041:20:2148 | if ... | UseUseExplosion.rb:20:2036:20:2148 | then ... | | UseUseExplosion.rb:20:2045:20:2049 | [post] self | UseUseExplosion.rb:20:2065:20:2069 | self | | UseUseExplosion.rb:20:2045:20:2049 | [post] self | UseUseExplosion.rb:20:2139:20:2144 | self | @@ -1180,9 +1374,11 @@ | UseUseExplosion.rb:20:2045:20:2049 | self | UseUseExplosion.rb:20:2139:20:2144 | self | | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [false] ( ... ) | | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [true] ( ... ) | +| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | +| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | | UseUseExplosion.rb:20:2056:20:2132 | then ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | +| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2061:20:2132 | if ... | UseUseExplosion.rb:20:2056:20:2132 | then ... | | UseUseExplosion.rb:20:2065:20:2069 | [post] self | UseUseExplosion.rb:20:2085:20:2089 | self | | UseUseExplosion.rb:20:2065:20:2069 | [post] self | UseUseExplosion.rb:20:2123:20:2128 | self | @@ -1190,213 +1386,417 @@ | UseUseExplosion.rb:20:2065:20:2069 | self | UseUseExplosion.rb:20:2123:20:2128 | self | | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [false] ( ... ) | | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [true] ( ... ) | +| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | +| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | | UseUseExplosion.rb:20:2076:20:2116 | then ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | +| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2081:20:2116 | if ... | UseUseExplosion.rb:20:2076:20:2116 | then ... | | UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2107:20:2112 | self | | UseUseExplosion.rb:20:2085:20:2089 | self | UseUseExplosion.rb:20:2107:20:2112 | self | | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [false] ( ... ) | | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [true] ( ... ) | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | | UseUseExplosion.rb:20:2096:20:2099 | then ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | +| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | +| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | | UseUseExplosion.rb:20:2102:20:2112 | else ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | | UseUseExplosion.rb:20:2107:20:2112 | call to use | UseUseExplosion.rb:20:2102:20:2112 | else ... | +| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | +| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | | UseUseExplosion.rb:20:2118:20:2128 | else ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | | UseUseExplosion.rb:20:2123:20:2128 | call to use | UseUseExplosion.rb:20:2118:20:2128 | else ... | +| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | +| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | | UseUseExplosion.rb:20:2134:20:2144 | else ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | | UseUseExplosion.rb:20:2139:20:2144 | call to use | UseUseExplosion.rb:20:2134:20:2144 | else ... | +| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | +| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | | UseUseExplosion.rb:20:2150:20:2160 | else ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | | UseUseExplosion.rb:20:2155:20:2160 | call to use | UseUseExplosion.rb:20:2150:20:2160 | else ... | +| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | +| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | | UseUseExplosion.rb:20:2166:20:2176 | else ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | | UseUseExplosion.rb:20:2171:20:2176 | call to use | UseUseExplosion.rb:20:2166:20:2176 | else ... | +| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | +| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | | UseUseExplosion.rb:20:2182:20:2192 | else ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | | UseUseExplosion.rb:20:2187:20:2192 | call to use | UseUseExplosion.rb:20:2182:20:2192 | else ... | +| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | +| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | | UseUseExplosion.rb:20:2198:20:2208 | else ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | | UseUseExplosion.rb:20:2203:20:2208 | call to use | UseUseExplosion.rb:20:2198:20:2208 | else ... | +| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | +| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | | UseUseExplosion.rb:20:2214:20:2224 | else ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | | UseUseExplosion.rb:20:2219:20:2224 | call to use | UseUseExplosion.rb:20:2214:20:2224 | else ... | +| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | +| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | | UseUseExplosion.rb:20:2230:20:2240 | else ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | | UseUseExplosion.rb:20:2235:20:2240 | call to use | UseUseExplosion.rb:20:2230:20:2240 | else ... | +| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | +| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | | UseUseExplosion.rb:20:2246:20:2256 | else ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | | UseUseExplosion.rb:20:2251:20:2256 | call to use | UseUseExplosion.rb:20:2246:20:2256 | else ... | +| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | +| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | | UseUseExplosion.rb:20:2262:20:2272 | else ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | | UseUseExplosion.rb:20:2267:20:2272 | call to use | UseUseExplosion.rb:20:2262:20:2272 | else ... | +| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | +| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | | UseUseExplosion.rb:20:2278:20:2288 | else ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | | UseUseExplosion.rb:20:2283:20:2288 | call to use | UseUseExplosion.rb:20:2278:20:2288 | else ... | +| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | +| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | | UseUseExplosion.rb:20:2294:20:2304 | else ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | | UseUseExplosion.rb:20:2299:20:2304 | call to use | UseUseExplosion.rb:20:2294:20:2304 | else ... | +| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | +| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | | UseUseExplosion.rb:20:2310:20:2320 | else ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | | UseUseExplosion.rb:20:2315:20:2320 | call to use | UseUseExplosion.rb:20:2310:20:2320 | else ... | +| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | +| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | | UseUseExplosion.rb:20:2326:20:2336 | else ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | | UseUseExplosion.rb:20:2331:20:2336 | call to use | UseUseExplosion.rb:20:2326:20:2336 | else ... | +| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | +| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | | UseUseExplosion.rb:20:2342:20:2352 | else ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | | UseUseExplosion.rb:20:2347:20:2352 | call to use | UseUseExplosion.rb:20:2342:20:2352 | else ... | +| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | +| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | | UseUseExplosion.rb:20:2358:20:2368 | else ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | | UseUseExplosion.rb:20:2363:20:2368 | call to use | UseUseExplosion.rb:20:2358:20:2368 | else ... | +| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | +| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | | UseUseExplosion.rb:20:2374:20:2384 | else ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | | UseUseExplosion.rb:20:2379:20:2384 | call to use | UseUseExplosion.rb:20:2374:20:2384 | else ... | +| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | +| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | | UseUseExplosion.rb:20:2390:20:2400 | else ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | | UseUseExplosion.rb:20:2395:20:2400 | call to use | UseUseExplosion.rb:20:2390:20:2400 | else ... | +| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | +| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | | UseUseExplosion.rb:20:2406:20:2416 | else ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | | UseUseExplosion.rb:20:2411:20:2416 | call to use | UseUseExplosion.rb:20:2406:20:2416 | else ... | +| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | +| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | | UseUseExplosion.rb:20:2422:20:2432 | else ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | | UseUseExplosion.rb:20:2427:20:2432 | call to use | UseUseExplosion.rb:20:2422:20:2432 | else ... | +| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | +| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | | UseUseExplosion.rb:20:2438:20:2448 | else ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | | UseUseExplosion.rb:20:2443:20:2448 | call to use | UseUseExplosion.rb:20:2438:20:2448 | else ... | +| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | +| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | | UseUseExplosion.rb:20:2454:20:2464 | else ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | | UseUseExplosion.rb:20:2459:20:2464 | call to use | UseUseExplosion.rb:20:2454:20:2464 | else ... | +| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | +| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | | UseUseExplosion.rb:20:2470:20:2480 | else ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | | UseUseExplosion.rb:20:2475:20:2480 | call to use | UseUseExplosion.rb:20:2470:20:2480 | else ... | +| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | +| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | | UseUseExplosion.rb:20:2486:20:2496 | else ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | | UseUseExplosion.rb:20:2491:20:2496 | call to use | UseUseExplosion.rb:20:2486:20:2496 | else ... | +| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | +| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | | UseUseExplosion.rb:20:2502:20:2512 | else ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | | UseUseExplosion.rb:20:2507:20:2512 | call to use | UseUseExplosion.rb:20:2502:20:2512 | else ... | +| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | +| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | | UseUseExplosion.rb:20:2518:20:2528 | else ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | | UseUseExplosion.rb:20:2523:20:2528 | call to use | UseUseExplosion.rb:20:2518:20:2528 | else ... | +| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | +| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | | UseUseExplosion.rb:20:2534:20:2544 | else ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | | UseUseExplosion.rb:20:2539:20:2544 | call to use | UseUseExplosion.rb:20:2534:20:2544 | else ... | +| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | +| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | | UseUseExplosion.rb:20:2550:20:2560 | else ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | | UseUseExplosion.rb:20:2555:20:2560 | call to use | UseUseExplosion.rb:20:2550:20:2560 | else ... | +| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | +| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | | UseUseExplosion.rb:20:2566:20:2576 | else ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | | UseUseExplosion.rb:20:2571:20:2576 | call to use | UseUseExplosion.rb:20:2566:20:2576 | else ... | +| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | +| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | | UseUseExplosion.rb:20:2582:20:2592 | else ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | | UseUseExplosion.rb:20:2587:20:2592 | call to use | UseUseExplosion.rb:20:2582:20:2592 | else ... | +| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | +| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | | UseUseExplosion.rb:20:2598:20:2608 | else ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | | UseUseExplosion.rb:20:2603:20:2608 | call to use | UseUseExplosion.rb:20:2598:20:2608 | else ... | +| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | +| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | | UseUseExplosion.rb:20:2614:20:2624 | else ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | | UseUseExplosion.rb:20:2619:20:2624 | call to use | UseUseExplosion.rb:20:2614:20:2624 | else ... | +| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | +| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | | UseUseExplosion.rb:20:2630:20:2640 | else ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | | UseUseExplosion.rb:20:2635:20:2640 | call to use | UseUseExplosion.rb:20:2630:20:2640 | else ... | +| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | +| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | | UseUseExplosion.rb:20:2646:20:2656 | else ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | | UseUseExplosion.rb:20:2651:20:2656 | call to use | UseUseExplosion.rb:20:2646:20:2656 | else ... | +| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | +| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | | UseUseExplosion.rb:20:2662:20:2672 | else ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | | UseUseExplosion.rb:20:2667:20:2672 | call to use | UseUseExplosion.rb:20:2662:20:2672 | else ... | +| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | +| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | | UseUseExplosion.rb:20:2678:20:2688 | else ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | | UseUseExplosion.rb:20:2683:20:2688 | call to use | UseUseExplosion.rb:20:2678:20:2688 | else ... | +| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | +| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | | UseUseExplosion.rb:20:2694:20:2704 | else ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | | UseUseExplosion.rb:20:2699:20:2704 | call to use | UseUseExplosion.rb:20:2694:20:2704 | else ... | +| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | +| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | | UseUseExplosion.rb:20:2710:20:2720 | else ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | | UseUseExplosion.rb:20:2715:20:2720 | call to use | UseUseExplosion.rb:20:2710:20:2720 | else ... | +| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | +| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | | UseUseExplosion.rb:20:2726:20:2736 | else ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | | UseUseExplosion.rb:20:2731:20:2736 | call to use | UseUseExplosion.rb:20:2726:20:2736 | else ... | +| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | +| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | | UseUseExplosion.rb:20:2742:20:2752 | else ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | | UseUseExplosion.rb:20:2747:20:2752 | call to use | UseUseExplosion.rb:20:2742:20:2752 | else ... | +| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | +| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | | UseUseExplosion.rb:20:2758:20:2768 | else ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | | UseUseExplosion.rb:20:2763:20:2768 | call to use | UseUseExplosion.rb:20:2758:20:2768 | else ... | +| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | +| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | | UseUseExplosion.rb:20:2774:20:2784 | else ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | | UseUseExplosion.rb:20:2779:20:2784 | call to use | UseUseExplosion.rb:20:2774:20:2784 | else ... | +| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | +| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | | UseUseExplosion.rb:20:2790:20:2800 | else ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | | UseUseExplosion.rb:20:2795:20:2800 | call to use | UseUseExplosion.rb:20:2790:20:2800 | else ... | +| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | +| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | | UseUseExplosion.rb:20:2806:20:2816 | else ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | | UseUseExplosion.rb:20:2811:20:2816 | call to use | UseUseExplosion.rb:20:2806:20:2816 | else ... | +| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | +| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | | UseUseExplosion.rb:20:2822:20:2832 | else ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | | UseUseExplosion.rb:20:2827:20:2832 | call to use | UseUseExplosion.rb:20:2822:20:2832 | else ... | +| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | +| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | | UseUseExplosion.rb:20:2838:20:2848 | else ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | | UseUseExplosion.rb:20:2843:20:2848 | call to use | UseUseExplosion.rb:20:2838:20:2848 | else ... | +| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | +| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | | UseUseExplosion.rb:20:2854:20:2864 | else ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | | UseUseExplosion.rb:20:2859:20:2864 | call to use | UseUseExplosion.rb:20:2854:20:2864 | else ... | +| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | +| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | | UseUseExplosion.rb:20:2870:20:2880 | else ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | | UseUseExplosion.rb:20:2875:20:2880 | call to use | UseUseExplosion.rb:20:2870:20:2880 | else ... | +| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | +| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | | UseUseExplosion.rb:20:2886:20:2896 | else ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | | UseUseExplosion.rb:20:2891:20:2896 | call to use | UseUseExplosion.rb:20:2886:20:2896 | else ... | +| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | +| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | | UseUseExplosion.rb:20:2902:20:2912 | else ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | | UseUseExplosion.rb:20:2907:20:2912 | call to use | UseUseExplosion.rb:20:2902:20:2912 | else ... | +| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | +| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | | UseUseExplosion.rb:20:2918:20:2928 | else ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | | UseUseExplosion.rb:20:2923:20:2928 | call to use | UseUseExplosion.rb:20:2918:20:2928 | else ... | +| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | +| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | | UseUseExplosion.rb:20:2934:20:2944 | else ... | UseUseExplosion.rb:20:997:20:2948 | if ... | | UseUseExplosion.rb:20:2939:20:2944 | call to use | UseUseExplosion.rb:20:2934:20:2944 | else ... | +| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | +| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | | UseUseExplosion.rb:20:2950:20:2960 | else ... | UseUseExplosion.rb:20:976:20:2964 | if ... | | UseUseExplosion.rb:20:2955:20:2960 | call to use | UseUseExplosion.rb:20:2950:20:2960 | else ... | +| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | +| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | | UseUseExplosion.rb:20:2966:20:2976 | else ... | UseUseExplosion.rb:20:955:20:2980 | if ... | | UseUseExplosion.rb:20:2971:20:2976 | call to use | UseUseExplosion.rb:20:2966:20:2976 | else ... | +| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | +| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | | UseUseExplosion.rb:20:2982:20:2992 | else ... | UseUseExplosion.rb:20:934:20:2996 | if ... | | UseUseExplosion.rb:20:2987:20:2992 | call to use | UseUseExplosion.rb:20:2982:20:2992 | else ... | +| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | +| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | | UseUseExplosion.rb:20:2998:20:3008 | else ... | UseUseExplosion.rb:20:913:20:3012 | if ... | | UseUseExplosion.rb:20:3003:20:3008 | call to use | UseUseExplosion.rb:20:2998:20:3008 | else ... | +| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | +| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | | UseUseExplosion.rb:20:3014:20:3024 | else ... | UseUseExplosion.rb:20:892:20:3028 | if ... | | UseUseExplosion.rb:20:3019:20:3024 | call to use | UseUseExplosion.rb:20:3014:20:3024 | else ... | +| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | +| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | | UseUseExplosion.rb:20:3030:20:3040 | else ... | UseUseExplosion.rb:20:871:20:3044 | if ... | | UseUseExplosion.rb:20:3035:20:3040 | call to use | UseUseExplosion.rb:20:3030:20:3040 | else ... | +| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | +| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | | UseUseExplosion.rb:20:3046:20:3056 | else ... | UseUseExplosion.rb:20:850:20:3060 | if ... | | UseUseExplosion.rb:20:3051:20:3056 | call to use | UseUseExplosion.rb:20:3046:20:3056 | else ... | +| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | +| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | | UseUseExplosion.rb:20:3062:20:3072 | else ... | UseUseExplosion.rb:20:829:20:3076 | if ... | | UseUseExplosion.rb:20:3067:20:3072 | call to use | UseUseExplosion.rb:20:3062:20:3072 | else ... | +| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | +| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | | UseUseExplosion.rb:20:3078:20:3088 | else ... | UseUseExplosion.rb:20:808:20:3092 | if ... | | UseUseExplosion.rb:20:3083:20:3088 | call to use | UseUseExplosion.rb:20:3078:20:3088 | else ... | +| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | +| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | | UseUseExplosion.rb:20:3094:20:3104 | else ... | UseUseExplosion.rb:20:787:20:3108 | if ... | | UseUseExplosion.rb:20:3099:20:3104 | call to use | UseUseExplosion.rb:20:3094:20:3104 | else ... | +| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | +| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | | UseUseExplosion.rb:20:3110:20:3120 | else ... | UseUseExplosion.rb:20:766:20:3124 | if ... | | UseUseExplosion.rb:20:3115:20:3120 | call to use | UseUseExplosion.rb:20:3110:20:3120 | else ... | +| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | +| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | | UseUseExplosion.rb:20:3126:20:3136 | else ... | UseUseExplosion.rb:20:745:20:3140 | if ... | | UseUseExplosion.rb:20:3131:20:3136 | call to use | UseUseExplosion.rb:20:3126:20:3136 | else ... | +| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | +| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | | UseUseExplosion.rb:20:3142:20:3152 | else ... | UseUseExplosion.rb:20:724:20:3156 | if ... | | UseUseExplosion.rb:20:3147:20:3152 | call to use | UseUseExplosion.rb:20:3142:20:3152 | else ... | +| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | +| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | | UseUseExplosion.rb:20:3158:20:3168 | else ... | UseUseExplosion.rb:20:703:20:3172 | if ... | | UseUseExplosion.rb:20:3163:20:3168 | call to use | UseUseExplosion.rb:20:3158:20:3168 | else ... | +| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | +| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | | UseUseExplosion.rb:20:3174:20:3184 | else ... | UseUseExplosion.rb:20:682:20:3188 | if ... | | UseUseExplosion.rb:20:3179:20:3184 | call to use | UseUseExplosion.rb:20:3174:20:3184 | else ... | +| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | +| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | | UseUseExplosion.rb:20:3190:20:3200 | else ... | UseUseExplosion.rb:20:661:20:3204 | if ... | | UseUseExplosion.rb:20:3195:20:3200 | call to use | UseUseExplosion.rb:20:3190:20:3200 | else ... | +| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | +| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | | UseUseExplosion.rb:20:3206:20:3216 | else ... | UseUseExplosion.rb:20:640:20:3220 | if ... | | UseUseExplosion.rb:20:3211:20:3216 | call to use | UseUseExplosion.rb:20:3206:20:3216 | else ... | +| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | +| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | | UseUseExplosion.rb:20:3222:20:3232 | else ... | UseUseExplosion.rb:20:619:20:3236 | if ... | | UseUseExplosion.rb:20:3227:20:3232 | call to use | UseUseExplosion.rb:20:3222:20:3232 | else ... | +| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | +| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | | UseUseExplosion.rb:20:3238:20:3248 | else ... | UseUseExplosion.rb:20:598:20:3252 | if ... | | UseUseExplosion.rb:20:3243:20:3248 | call to use | UseUseExplosion.rb:20:3238:20:3248 | else ... | +| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | +| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | | UseUseExplosion.rb:20:3254:20:3264 | else ... | UseUseExplosion.rb:20:577:20:3268 | if ... | | UseUseExplosion.rb:20:3259:20:3264 | call to use | UseUseExplosion.rb:20:3254:20:3264 | else ... | +| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | +| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | | UseUseExplosion.rb:20:3270:20:3280 | else ... | UseUseExplosion.rb:20:556:20:3284 | if ... | | UseUseExplosion.rb:20:3275:20:3280 | call to use | UseUseExplosion.rb:20:3270:20:3280 | else ... | +| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | +| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | | UseUseExplosion.rb:20:3286:20:3296 | else ... | UseUseExplosion.rb:20:535:20:3300 | if ... | | UseUseExplosion.rb:20:3291:20:3296 | call to use | UseUseExplosion.rb:20:3286:20:3296 | else ... | +| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | +| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | | UseUseExplosion.rb:20:3302:20:3312 | else ... | UseUseExplosion.rb:20:514:20:3316 | if ... | | UseUseExplosion.rb:20:3307:20:3312 | call to use | UseUseExplosion.rb:20:3302:20:3312 | else ... | +| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | +| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | | UseUseExplosion.rb:20:3318:20:3328 | else ... | UseUseExplosion.rb:20:493:20:3332 | if ... | | UseUseExplosion.rb:20:3323:20:3328 | call to use | UseUseExplosion.rb:20:3318:20:3328 | else ... | +| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | +| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | | UseUseExplosion.rb:20:3334:20:3344 | else ... | UseUseExplosion.rb:20:472:20:3348 | if ... | | UseUseExplosion.rb:20:3339:20:3344 | call to use | UseUseExplosion.rb:20:3334:20:3344 | else ... | +| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | +| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | | UseUseExplosion.rb:20:3350:20:3360 | else ... | UseUseExplosion.rb:20:451:20:3364 | if ... | | UseUseExplosion.rb:20:3355:20:3360 | call to use | UseUseExplosion.rb:20:3350:20:3360 | else ... | +| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | +| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | | UseUseExplosion.rb:20:3366:20:3376 | else ... | UseUseExplosion.rb:20:430:20:3380 | if ... | | UseUseExplosion.rb:20:3371:20:3376 | call to use | UseUseExplosion.rb:20:3366:20:3376 | else ... | +| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | +| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | | UseUseExplosion.rb:20:3382:20:3392 | else ... | UseUseExplosion.rb:20:409:20:3396 | if ... | | UseUseExplosion.rb:20:3387:20:3392 | call to use | UseUseExplosion.rb:20:3382:20:3392 | else ... | +| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | +| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | | UseUseExplosion.rb:20:3398:20:3408 | else ... | UseUseExplosion.rb:20:388:20:3412 | if ... | | UseUseExplosion.rb:20:3403:20:3408 | call to use | UseUseExplosion.rb:20:3398:20:3408 | else ... | +| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | +| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | | UseUseExplosion.rb:20:3414:20:3424 | else ... | UseUseExplosion.rb:20:367:20:3428 | if ... | | UseUseExplosion.rb:20:3419:20:3424 | call to use | UseUseExplosion.rb:20:3414:20:3424 | else ... | +| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | +| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | | UseUseExplosion.rb:20:3430:20:3440 | else ... | UseUseExplosion.rb:20:346:20:3444 | if ... | | UseUseExplosion.rb:20:3435:20:3440 | call to use | UseUseExplosion.rb:20:3430:20:3440 | else ... | +| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | +| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | | UseUseExplosion.rb:20:3446:20:3456 | else ... | UseUseExplosion.rb:20:325:20:3460 | if ... | | UseUseExplosion.rb:20:3451:20:3456 | call to use | UseUseExplosion.rb:20:3446:20:3456 | else ... | +| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | +| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | | UseUseExplosion.rb:20:3462:20:3472 | else ... | UseUseExplosion.rb:20:304:20:3476 | if ... | | UseUseExplosion.rb:20:3467:20:3472 | call to use | UseUseExplosion.rb:20:3462:20:3472 | else ... | +| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | +| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | | UseUseExplosion.rb:20:3478:20:3488 | else ... | UseUseExplosion.rb:20:283:20:3492 | if ... | | UseUseExplosion.rb:20:3483:20:3488 | call to use | UseUseExplosion.rb:20:3478:20:3488 | else ... | +| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | +| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | | UseUseExplosion.rb:20:3494:20:3504 | else ... | UseUseExplosion.rb:20:262:20:3508 | if ... | | UseUseExplosion.rb:20:3499:20:3504 | call to use | UseUseExplosion.rb:20:3494:20:3504 | else ... | +| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | +| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | | UseUseExplosion.rb:20:3510:20:3520 | else ... | UseUseExplosion.rb:20:241:20:3524 | if ... | | UseUseExplosion.rb:20:3515:20:3520 | call to use | UseUseExplosion.rb:20:3510:20:3520 | else ... | +| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | +| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | | UseUseExplosion.rb:20:3526:20:3536 | else ... | UseUseExplosion.rb:20:220:20:3540 | if ... | | UseUseExplosion.rb:20:3531:20:3536 | call to use | UseUseExplosion.rb:20:3526:20:3536 | else ... | +| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | +| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | | UseUseExplosion.rb:20:3542:20:3552 | else ... | UseUseExplosion.rb:20:199:20:3556 | if ... | | UseUseExplosion.rb:20:3547:20:3552 | call to use | UseUseExplosion.rb:20:3542:20:3552 | else ... | +| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | +| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | | UseUseExplosion.rb:20:3558:20:3568 | else ... | UseUseExplosion.rb:20:178:20:3572 | if ... | | UseUseExplosion.rb:20:3563:20:3568 | call to use | UseUseExplosion.rb:20:3558:20:3568 | else ... | +| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | +| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | | UseUseExplosion.rb:20:3574:20:3584 | else ... | UseUseExplosion.rb:20:157:20:3588 | if ... | | UseUseExplosion.rb:20:3579:20:3584 | call to use | UseUseExplosion.rb:20:3574:20:3584 | else ... | +| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | +| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | | UseUseExplosion.rb:20:3590:20:3600 | else ... | UseUseExplosion.rb:20:136:20:3604 | if ... | | UseUseExplosion.rb:20:3595:20:3600 | call to use | UseUseExplosion.rb:20:3590:20:3600 | else ... | +| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | +| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | | UseUseExplosion.rb:20:3606:20:3616 | else ... | UseUseExplosion.rb:20:115:20:3620 | if ... | | UseUseExplosion.rb:20:3611:20:3616 | call to use | UseUseExplosion.rb:20:3606:20:3616 | else ... | +| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | +| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | | UseUseExplosion.rb:20:3622:20:3632 | else ... | UseUseExplosion.rb:20:94:20:3636 | if ... | | UseUseExplosion.rb:20:3627:20:3632 | call to use | UseUseExplosion.rb:20:3622:20:3632 | else ... | +| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | +| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | | UseUseExplosion.rb:20:3638:20:3648 | else ... | UseUseExplosion.rb:20:73:20:3652 | if ... | | UseUseExplosion.rb:20:3643:20:3648 | call to use | UseUseExplosion.rb:20:3638:20:3648 | else ... | +| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | +| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | | UseUseExplosion.rb:20:3654:20:3664 | else ... | UseUseExplosion.rb:20:52:20:3668 | if ... | | UseUseExplosion.rb:20:3659:20:3664 | call to use | UseUseExplosion.rb:20:3654:20:3664 | else ... | +| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | +| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | | UseUseExplosion.rb:20:3670:20:3680 | else ... | UseUseExplosion.rb:20:31:20:3684 | if ... | | UseUseExplosion.rb:20:3675:20:3680 | call to use | UseUseExplosion.rb:20:3670:20:3680 | else ... | +| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | +| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3686:20:3696 | else ... | UseUseExplosion.rb:20:9:20:3700 | if ... | | UseUseExplosion.rb:20:3691:20:3696 | call to use | UseUseExplosion.rb:20:3686:20:3696 | else ... | | UseUseExplosion.rb:21:13:21:17 | [post] self | UseUseExplosion.rb:21:35:21:39 | self | @@ -2436,9 +2836,11 @@ | local_dataflow.rb:10:5:13:3 | __synth__0__1 | local_dataflow.rb:10:9:10:9 | x | | local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:5:13:3 | ... | | local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... | +| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | +| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | ... = ... | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | x | -| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | phi | +| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] phi | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x | | local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array | | local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array | @@ -2451,9 +2853,11 @@ | local_dataflow.rb:15:1:17:3 | __synth__0__1 | local_dataflow.rb:15:5:15:5 | x | | local_dataflow.rb:15:1:17:3 | call to each | local_dataflow.rb:15:1:17:3 | ... | | local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... | +| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | +| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | ... = ... | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | x | -| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | phi | +| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] phi | | local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break | @@ -2463,9 +2867,11 @@ | local_dataflow.rb:19:1:21:3 | __synth__0__1 | local_dataflow.rb:19:5:19:5 | x | | local_dataflow.rb:19:1:21:3 | call to each | local_dataflow.rb:19:1:21:3 | ... | | local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... | +| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | +| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | ... = ... | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | x | -| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | phi | +| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] phi | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x | | local_dataflow.rb:24:2:24:8 | break | local_dataflow.rb:23:1:25:3 | while ... | | local_dataflow.rb:24:8:24:8 | 5 | local_dataflow.rb:24:2:24:8 | break | @@ -2499,12 +2905,16 @@ | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:63:15:63:15 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:65:6:65:6 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:67:5:67:5 | x | +| local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:62:10:62:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:62:15:62:15 | 3 | local_dataflow.rb:62:10:62:15 | then ... | +| local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:63:10:63:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | then ... | +| local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:64:9:65:6 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | then ... | +| local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:66:3:67:5 | else ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | else ... | | local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... | @@ -2538,16 +2948,19 @@ | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:86:28:86:34 | self | | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:87:20:87:26 | self | | local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b | +| local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:79:15:79:45 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:79:20:79:26 | call to sink | local_dataflow.rb:79:15:79:45 | then ... | | local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:13:80:13 | a | | local_dataflow.rb:80:13:80:13 | [post] a | local_dataflow.rb:80:29:80:29 | a | | local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:29:80:29 | a | +| local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:80:19:80:49 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:80:24:80:30 | call to sink | local_dataflow.rb:80:19:80:49 | then ... | | local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c | | local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d | | local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e | +| local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:81:20:84:33 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:81:25:84:14 | call to [] | local_dataflow.rb:81:20:84:33 | then ... | | local_dataflow.rb:81:25:84:14 | synthetic splat argument | local_dataflow.rb:81:25:84:14 | call to [] | @@ -2556,12 +2969,15 @@ | local_dataflow.rb:83:7:83:13 | [post] self | local_dataflow.rb:84:7:84:13 | self | | local_dataflow.rb:83:7:83:13 | self | local_dataflow.rb:84:7:84:13 | self | | local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f | +| local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:85:17:85:47 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:85:22:85:28 | call to sink | local_dataflow.rb:85:17:85:47 | then ... | | local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g | +| local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:86:23:86:53 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:86:28:86:34 | call to sink | local_dataflow.rb:86:23:86:53 | then ... | | local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x | +| local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:87:15:87:48 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:87:25:87:25 | [post] x | local_dataflow.rb:87:29:87:29 | x | | local_dataflow.rb:87:25:87:25 | x | local_dataflow.rb:87:29:87:29 | x | @@ -2569,42 +2985,50 @@ | local_dataflow.rb:92:1:109:3 | self (and_or) | local_dataflow.rb:93:7:93:15 | self | | local_dataflow.rb:92:1:109:3 | self in and_or | local_dataflow.rb:92:1:109:3 | self (and_or) | | local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a | +| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | | local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | | local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:3 | a | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:28 | ... = ... | | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self | +| local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | | local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | | local_dataflow.rb:94:3:94:9 | [post] self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:94:3:94:9 | self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:3 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:30 | ... = ... | +| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | | local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | | local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:29 | ... or ... | local_dataflow.rb:95:7:95:30 | ( ... ) | | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self | +| local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | | local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | | local_dataflow.rb:96:3:96:9 | [post] self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:96:3:96:9 | self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a | +| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | | local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:3 | a | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:28 | ... = ... | | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self | +| local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | | local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:7:98:28 | ... && ... | | local_dataflow.rb:99:3:99:9 | [post] self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:99:3:99:9 | self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:3 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:31 | ... = ... | +| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | | local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:30 | ... and ... | local_dataflow.rb:100:7:100:31 | ( ... ) | | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self | +| local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | | local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:8:100:30 | ... and ... | | local_dataflow.rb:101:3:101:9 | [post] self | local_dataflow.rb:103:7:103:15 | self | | local_dataflow.rb:101:3:101:9 | self | local_dataflow.rb:103:7:103:15 | self | @@ -2613,11 +3037,13 @@ | local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:3 | a | | local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:15 | ... = ... | | local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:9:104:17 | self | +| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:104:5:104:7 | ... \|\| ... | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:105:8:105:8 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:3 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:17 | ... = ... | | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self | +| local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | | local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:5:104:7 | ... \|\| ... | | local_dataflow.rb:105:3:105:9 | [post] self | local_dataflow.rb:106:7:106:15 | self | | local_dataflow.rb:105:3:105:9 | self | local_dataflow.rb:106:7:106:15 | self | @@ -2626,10 +3052,12 @@ | local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:3 | b | | local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:15 | ... = ... | | local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:9:107:17 | self | +| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | | local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:3 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:17 | ... = ... | | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self | +| local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | | local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:5:107:7 | ... && ... | | local_dataflow.rb:111:1:114:3 | self (object_dup) | local_dataflow.rb:112:3:112:21 | self | | local_dataflow.rb:111:1:114:3 | self in object_dup | local_dataflow.rb:111:1:114:3 | self (object_dup) | @@ -2681,6 +3109,8 @@ | local_dataflow.rb:132:12:148:10 | then ... | local_dataflow.rb:132:3:149:5 | if ... | | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | | local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:18:133:23 | self | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | @@ -2689,43 +3119,63 @@ | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x | +| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | +| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | | local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... | +| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | +| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | | local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:136:7:136:12 | [post] self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:7:136:12 | self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:11:136:11 | [post] x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:136:11:136:11 | x | local_dataflow.rb:137:14:137:14 | x | -| local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | -| local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | +| local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | +| local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | | local_dataflow.rb:137:7:138:9 | if ... | local_dataflow.rb:135:5:138:9 | else ... | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | | local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:21:137:26 | self | | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self | -| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | +| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | | local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | | local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... | | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | local_dataflow.rb:147:5:147:10 | self | | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | | local_dataflow.rb:141:8:141:14 | [true] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | +| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | +| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:20:141:25 | self | | local_dataflow.rb:141:9:141:14 | self | local_dataflow.rb:141:20:141:25 | self | | local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | | local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:31:141:36 | self | | local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:31:141:36 | self | | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | @@ -2735,22 +3185,36 @@ | local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | | local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | | local_dataflow.rb:141:38:142:9 | then ... | local_dataflow.rb:141:5:145:7 | if ... | | local_dataflow.rb:142:7:142:9 | nil | local_dataflow.rb:141:38:142:9 | then ... | -| local_dataflow.rb:143:5:144:16 | SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:143:5:144:16 | SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | +| local_dataflow.rb:143:5:144:16 | SSA phi read(self) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | +| local_dataflow.rb:143:5:144:16 | SSA phi read(x) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | +| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | +| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | | local_dataflow.rb:143:5:144:16 | elsif ... | local_dataflow.rb:141:5:145:7 | if ... | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | | local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | | local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | +| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | +| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | | local_dataflow.rb:143:27:144:16 | then ... | local_dataflow.rb:143:5:144:16 | elsif ... | | local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... | | local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self | diff --git a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected index a462aebeba9f..2c189c76939d 100644 --- a/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected +++ b/ruby/ql/test/library-tests/dataflow/local/TaintStep.expected @@ -1,6 +1,6 @@ | UseUseExplosion.rb:18:5:22:7 | self (m) | UseUseExplosion.rb:20:13:20:17 | self | | UseUseExplosion.rb:18:5:22:7 | self in m | UseUseExplosion.rb:18:5:22:7 | self (m) | -| UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | +| UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2111:20:2111 | x | | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2127:20:2127 | x | | UseUseExplosion.rb:19:9:19:9 | x | UseUseExplosion.rb:20:2143:20:2143 | x | @@ -212,9 +212,11 @@ | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [false] ( ... ) | | UseUseExplosion.rb:20:13:20:23 | ... > ... | UseUseExplosion.rb:20:12:20:24 | [true] ( ... ) | | UseUseExplosion.rb:20:21:20:23 | 100 | UseUseExplosion.rb:20:13:20:23 | ... > ... | +| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | +| UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:26:20:3684 | then ... | UseUseExplosion.rb:20:9:20:3700 | if ... | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | -| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | +| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | UseUseExplosion.rb:20:26:20:3684 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:31:20:3684 | if ... | UseUseExplosion.rb:20:26:20:3684 | then ... | | UseUseExplosion.rb:20:35:20:39 | @prop | UseUseExplosion.rb:20:35:20:44 | ... > ... | | UseUseExplosion.rb:20:35:20:39 | [post] self | UseUseExplosion.rb:20:56:20:60 | self | @@ -224,9 +226,11 @@ | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [false] ( ... ) | | UseUseExplosion.rb:20:35:20:44 | ... > ... | UseUseExplosion.rb:20:34:20:45 | [true] ( ... ) | | UseUseExplosion.rb:20:43:20:44 | 99 | UseUseExplosion.rb:20:35:20:44 | ... > ... | +| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | +| UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | | UseUseExplosion.rb:20:47:20:3668 | then ... | UseUseExplosion.rb:20:31:20:3684 | if ... | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | -| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | +| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | UseUseExplosion.rb:20:47:20:3668 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:52:20:3668 | if ... | UseUseExplosion.rb:20:47:20:3668 | then ... | | UseUseExplosion.rb:20:56:20:60 | @prop | UseUseExplosion.rb:20:56:20:65 | ... > ... | | UseUseExplosion.rb:20:56:20:60 | [post] self | UseUseExplosion.rb:20:77:20:81 | self | @@ -236,9 +240,11 @@ | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [false] ( ... ) | | UseUseExplosion.rb:20:56:20:65 | ... > ... | UseUseExplosion.rb:20:55:20:66 | [true] ( ... ) | | UseUseExplosion.rb:20:64:20:65 | 98 | UseUseExplosion.rb:20:56:20:65 | ... > ... | +| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | +| UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | | UseUseExplosion.rb:20:68:20:3652 | then ... | UseUseExplosion.rb:20:52:20:3668 | if ... | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | -| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | +| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | UseUseExplosion.rb:20:68:20:3652 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:73:20:3652 | if ... | UseUseExplosion.rb:20:68:20:3652 | then ... | | UseUseExplosion.rb:20:77:20:81 | @prop | UseUseExplosion.rb:20:77:20:86 | ... > ... | | UseUseExplosion.rb:20:77:20:81 | [post] self | UseUseExplosion.rb:20:98:20:102 | self | @@ -248,9 +254,11 @@ | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [false] ( ... ) | | UseUseExplosion.rb:20:77:20:86 | ... > ... | UseUseExplosion.rb:20:76:20:87 | [true] ( ... ) | | UseUseExplosion.rb:20:85:20:86 | 97 | UseUseExplosion.rb:20:77:20:86 | ... > ... | +| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | +| UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | | UseUseExplosion.rb:20:89:20:3636 | then ... | UseUseExplosion.rb:20:73:20:3652 | if ... | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | -| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | +| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | UseUseExplosion.rb:20:89:20:3636 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:94:20:3636 | if ... | UseUseExplosion.rb:20:89:20:3636 | then ... | | UseUseExplosion.rb:20:98:20:102 | @prop | UseUseExplosion.rb:20:98:20:107 | ... > ... | | UseUseExplosion.rb:20:98:20:102 | [post] self | UseUseExplosion.rb:20:119:20:123 | self | @@ -260,9 +268,11 @@ | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [false] ( ... ) | | UseUseExplosion.rb:20:98:20:107 | ... > ... | UseUseExplosion.rb:20:97:20:108 | [true] ( ... ) | | UseUseExplosion.rb:20:106:20:107 | 96 | UseUseExplosion.rb:20:98:20:107 | ... > ... | +| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | +| UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | | UseUseExplosion.rb:20:110:20:3620 | then ... | UseUseExplosion.rb:20:94:20:3636 | if ... | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | -| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | +| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | UseUseExplosion.rb:20:110:20:3620 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:115:20:3620 | if ... | UseUseExplosion.rb:20:110:20:3620 | then ... | | UseUseExplosion.rb:20:119:20:123 | @prop | UseUseExplosion.rb:20:119:20:128 | ... > ... | | UseUseExplosion.rb:20:119:20:123 | [post] self | UseUseExplosion.rb:20:140:20:144 | self | @@ -272,9 +282,11 @@ | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [false] ( ... ) | | UseUseExplosion.rb:20:119:20:128 | ... > ... | UseUseExplosion.rb:20:118:20:129 | [true] ( ... ) | | UseUseExplosion.rb:20:127:20:128 | 95 | UseUseExplosion.rb:20:119:20:128 | ... > ... | +| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | +| UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | | UseUseExplosion.rb:20:131:20:3604 | then ... | UseUseExplosion.rb:20:115:20:3620 | if ... | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | -| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | +| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | UseUseExplosion.rb:20:131:20:3604 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:136:20:3604 | if ... | UseUseExplosion.rb:20:131:20:3604 | then ... | | UseUseExplosion.rb:20:140:20:144 | @prop | UseUseExplosion.rb:20:140:20:149 | ... > ... | | UseUseExplosion.rb:20:140:20:144 | [post] self | UseUseExplosion.rb:20:161:20:165 | self | @@ -284,9 +296,11 @@ | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [false] ( ... ) | | UseUseExplosion.rb:20:140:20:149 | ... > ... | UseUseExplosion.rb:20:139:20:150 | [true] ( ... ) | | UseUseExplosion.rb:20:148:20:149 | 94 | UseUseExplosion.rb:20:140:20:149 | ... > ... | +| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | +| UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | | UseUseExplosion.rb:20:152:20:3588 | then ... | UseUseExplosion.rb:20:136:20:3604 | if ... | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | -| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | +| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | UseUseExplosion.rb:20:152:20:3588 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:157:20:3588 | if ... | UseUseExplosion.rb:20:152:20:3588 | then ... | | UseUseExplosion.rb:20:161:20:165 | @prop | UseUseExplosion.rb:20:161:20:170 | ... > ... | | UseUseExplosion.rb:20:161:20:165 | [post] self | UseUseExplosion.rb:20:182:20:186 | self | @@ -296,9 +310,11 @@ | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [false] ( ... ) | | UseUseExplosion.rb:20:161:20:170 | ... > ... | UseUseExplosion.rb:20:160:20:171 | [true] ( ... ) | | UseUseExplosion.rb:20:169:20:170 | 93 | UseUseExplosion.rb:20:161:20:170 | ... > ... | +| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | +| UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | | UseUseExplosion.rb:20:173:20:3572 | then ... | UseUseExplosion.rb:20:157:20:3588 | if ... | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | -| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | +| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | UseUseExplosion.rb:20:173:20:3572 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:178:20:3572 | if ... | UseUseExplosion.rb:20:173:20:3572 | then ... | | UseUseExplosion.rb:20:182:20:186 | @prop | UseUseExplosion.rb:20:182:20:191 | ... > ... | | UseUseExplosion.rb:20:182:20:186 | [post] self | UseUseExplosion.rb:20:203:20:207 | self | @@ -308,9 +324,11 @@ | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [false] ( ... ) | | UseUseExplosion.rb:20:182:20:191 | ... > ... | UseUseExplosion.rb:20:181:20:192 | [true] ( ... ) | | UseUseExplosion.rb:20:190:20:191 | 92 | UseUseExplosion.rb:20:182:20:191 | ... > ... | +| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | +| UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | | UseUseExplosion.rb:20:194:20:3556 | then ... | UseUseExplosion.rb:20:178:20:3572 | if ... | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | -| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | +| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | UseUseExplosion.rb:20:194:20:3556 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:199:20:3556 | if ... | UseUseExplosion.rb:20:194:20:3556 | then ... | | UseUseExplosion.rb:20:203:20:207 | @prop | UseUseExplosion.rb:20:203:20:212 | ... > ... | | UseUseExplosion.rb:20:203:20:207 | [post] self | UseUseExplosion.rb:20:224:20:228 | self | @@ -320,9 +338,11 @@ | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [false] ( ... ) | | UseUseExplosion.rb:20:203:20:212 | ... > ... | UseUseExplosion.rb:20:202:20:213 | [true] ( ... ) | | UseUseExplosion.rb:20:211:20:212 | 91 | UseUseExplosion.rb:20:203:20:212 | ... > ... | +| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | +| UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | | UseUseExplosion.rb:20:215:20:3540 | then ... | UseUseExplosion.rb:20:199:20:3556 | if ... | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | -| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | +| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | UseUseExplosion.rb:20:215:20:3540 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:220:20:3540 | if ... | UseUseExplosion.rb:20:215:20:3540 | then ... | | UseUseExplosion.rb:20:224:20:228 | @prop | UseUseExplosion.rb:20:224:20:233 | ... > ... | | UseUseExplosion.rb:20:224:20:228 | [post] self | UseUseExplosion.rb:20:245:20:249 | self | @@ -332,9 +352,11 @@ | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [false] ( ... ) | | UseUseExplosion.rb:20:224:20:233 | ... > ... | UseUseExplosion.rb:20:223:20:234 | [true] ( ... ) | | UseUseExplosion.rb:20:232:20:233 | 90 | UseUseExplosion.rb:20:224:20:233 | ... > ... | +| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | +| UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | | UseUseExplosion.rb:20:236:20:3524 | then ... | UseUseExplosion.rb:20:220:20:3540 | if ... | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | -| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | +| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | UseUseExplosion.rb:20:236:20:3524 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:241:20:3524 | if ... | UseUseExplosion.rb:20:236:20:3524 | then ... | | UseUseExplosion.rb:20:245:20:249 | @prop | UseUseExplosion.rb:20:245:20:254 | ... > ... | | UseUseExplosion.rb:20:245:20:249 | [post] self | UseUseExplosion.rb:20:266:20:270 | self | @@ -344,9 +366,11 @@ | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [false] ( ... ) | | UseUseExplosion.rb:20:245:20:254 | ... > ... | UseUseExplosion.rb:20:244:20:255 | [true] ( ... ) | | UseUseExplosion.rb:20:253:20:254 | 89 | UseUseExplosion.rb:20:245:20:254 | ... > ... | +| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | +| UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | | UseUseExplosion.rb:20:257:20:3508 | then ... | UseUseExplosion.rb:20:241:20:3524 | if ... | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | -| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | +| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | UseUseExplosion.rb:20:257:20:3508 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:262:20:3508 | if ... | UseUseExplosion.rb:20:257:20:3508 | then ... | | UseUseExplosion.rb:20:266:20:270 | @prop | UseUseExplosion.rb:20:266:20:275 | ... > ... | | UseUseExplosion.rb:20:266:20:270 | [post] self | UseUseExplosion.rb:20:287:20:291 | self | @@ -356,9 +380,11 @@ | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [false] ( ... ) | | UseUseExplosion.rb:20:266:20:275 | ... > ... | UseUseExplosion.rb:20:265:20:276 | [true] ( ... ) | | UseUseExplosion.rb:20:274:20:275 | 88 | UseUseExplosion.rb:20:266:20:275 | ... > ... | +| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | +| UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | | UseUseExplosion.rb:20:278:20:3492 | then ... | UseUseExplosion.rb:20:262:20:3508 | if ... | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | -| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | +| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | UseUseExplosion.rb:20:278:20:3492 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:283:20:3492 | if ... | UseUseExplosion.rb:20:278:20:3492 | then ... | | UseUseExplosion.rb:20:287:20:291 | @prop | UseUseExplosion.rb:20:287:20:296 | ... > ... | | UseUseExplosion.rb:20:287:20:291 | [post] self | UseUseExplosion.rb:20:308:20:312 | self | @@ -368,9 +394,11 @@ | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [false] ( ... ) | | UseUseExplosion.rb:20:287:20:296 | ... > ... | UseUseExplosion.rb:20:286:20:297 | [true] ( ... ) | | UseUseExplosion.rb:20:295:20:296 | 87 | UseUseExplosion.rb:20:287:20:296 | ... > ... | +| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | +| UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | | UseUseExplosion.rb:20:299:20:3476 | then ... | UseUseExplosion.rb:20:283:20:3492 | if ... | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | -| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | +| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | UseUseExplosion.rb:20:299:20:3476 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:304:20:3476 | if ... | UseUseExplosion.rb:20:299:20:3476 | then ... | | UseUseExplosion.rb:20:308:20:312 | @prop | UseUseExplosion.rb:20:308:20:317 | ... > ... | | UseUseExplosion.rb:20:308:20:312 | [post] self | UseUseExplosion.rb:20:329:20:333 | self | @@ -380,9 +408,11 @@ | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [false] ( ... ) | | UseUseExplosion.rb:20:308:20:317 | ... > ... | UseUseExplosion.rb:20:307:20:318 | [true] ( ... ) | | UseUseExplosion.rb:20:316:20:317 | 86 | UseUseExplosion.rb:20:308:20:317 | ... > ... | +| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | +| UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | | UseUseExplosion.rb:20:320:20:3460 | then ... | UseUseExplosion.rb:20:304:20:3476 | if ... | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | -| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | +| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | UseUseExplosion.rb:20:320:20:3460 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:325:20:3460 | if ... | UseUseExplosion.rb:20:320:20:3460 | then ... | | UseUseExplosion.rb:20:329:20:333 | @prop | UseUseExplosion.rb:20:329:20:338 | ... > ... | | UseUseExplosion.rb:20:329:20:333 | [post] self | UseUseExplosion.rb:20:350:20:354 | self | @@ -392,9 +422,11 @@ | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [false] ( ... ) | | UseUseExplosion.rb:20:329:20:338 | ... > ... | UseUseExplosion.rb:20:328:20:339 | [true] ( ... ) | | UseUseExplosion.rb:20:337:20:338 | 85 | UseUseExplosion.rb:20:329:20:338 | ... > ... | +| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | +| UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | | UseUseExplosion.rb:20:341:20:3444 | then ... | UseUseExplosion.rb:20:325:20:3460 | if ... | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | -| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | +| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | UseUseExplosion.rb:20:341:20:3444 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:346:20:3444 | if ... | UseUseExplosion.rb:20:341:20:3444 | then ... | | UseUseExplosion.rb:20:350:20:354 | @prop | UseUseExplosion.rb:20:350:20:359 | ... > ... | | UseUseExplosion.rb:20:350:20:354 | [post] self | UseUseExplosion.rb:20:371:20:375 | self | @@ -404,9 +436,11 @@ | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [false] ( ... ) | | UseUseExplosion.rb:20:350:20:359 | ... > ... | UseUseExplosion.rb:20:349:20:360 | [true] ( ... ) | | UseUseExplosion.rb:20:358:20:359 | 84 | UseUseExplosion.rb:20:350:20:359 | ... > ... | +| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | +| UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | | UseUseExplosion.rb:20:362:20:3428 | then ... | UseUseExplosion.rb:20:346:20:3444 | if ... | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | -| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | +| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | UseUseExplosion.rb:20:362:20:3428 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:367:20:3428 | if ... | UseUseExplosion.rb:20:362:20:3428 | then ... | | UseUseExplosion.rb:20:371:20:375 | @prop | UseUseExplosion.rb:20:371:20:380 | ... > ... | | UseUseExplosion.rb:20:371:20:375 | [post] self | UseUseExplosion.rb:20:392:20:396 | self | @@ -416,9 +450,11 @@ | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [false] ( ... ) | | UseUseExplosion.rb:20:371:20:380 | ... > ... | UseUseExplosion.rb:20:370:20:381 | [true] ( ... ) | | UseUseExplosion.rb:20:379:20:380 | 83 | UseUseExplosion.rb:20:371:20:380 | ... > ... | +| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | +| UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | | UseUseExplosion.rb:20:383:20:3412 | then ... | UseUseExplosion.rb:20:367:20:3428 | if ... | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | -| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | +| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | UseUseExplosion.rb:20:383:20:3412 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:388:20:3412 | if ... | UseUseExplosion.rb:20:383:20:3412 | then ... | | UseUseExplosion.rb:20:392:20:396 | @prop | UseUseExplosion.rb:20:392:20:401 | ... > ... | | UseUseExplosion.rb:20:392:20:396 | [post] self | UseUseExplosion.rb:20:413:20:417 | self | @@ -428,9 +464,11 @@ | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [false] ( ... ) | | UseUseExplosion.rb:20:392:20:401 | ... > ... | UseUseExplosion.rb:20:391:20:402 | [true] ( ... ) | | UseUseExplosion.rb:20:400:20:401 | 82 | UseUseExplosion.rb:20:392:20:401 | ... > ... | +| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | +| UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | | UseUseExplosion.rb:20:404:20:3396 | then ... | UseUseExplosion.rb:20:388:20:3412 | if ... | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | -| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | +| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | UseUseExplosion.rb:20:404:20:3396 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:409:20:3396 | if ... | UseUseExplosion.rb:20:404:20:3396 | then ... | | UseUseExplosion.rb:20:413:20:417 | @prop | UseUseExplosion.rb:20:413:20:422 | ... > ... | | UseUseExplosion.rb:20:413:20:417 | [post] self | UseUseExplosion.rb:20:434:20:438 | self | @@ -440,9 +478,11 @@ | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [false] ( ... ) | | UseUseExplosion.rb:20:413:20:422 | ... > ... | UseUseExplosion.rb:20:412:20:423 | [true] ( ... ) | | UseUseExplosion.rb:20:421:20:422 | 81 | UseUseExplosion.rb:20:413:20:422 | ... > ... | +| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | +| UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | | UseUseExplosion.rb:20:425:20:3380 | then ... | UseUseExplosion.rb:20:409:20:3396 | if ... | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | -| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | +| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | UseUseExplosion.rb:20:425:20:3380 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:430:20:3380 | if ... | UseUseExplosion.rb:20:425:20:3380 | then ... | | UseUseExplosion.rb:20:434:20:438 | @prop | UseUseExplosion.rb:20:434:20:443 | ... > ... | | UseUseExplosion.rb:20:434:20:438 | [post] self | UseUseExplosion.rb:20:455:20:459 | self | @@ -452,9 +492,11 @@ | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [false] ( ... ) | | UseUseExplosion.rb:20:434:20:443 | ... > ... | UseUseExplosion.rb:20:433:20:444 | [true] ( ... ) | | UseUseExplosion.rb:20:442:20:443 | 80 | UseUseExplosion.rb:20:434:20:443 | ... > ... | +| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | +| UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | | UseUseExplosion.rb:20:446:20:3364 | then ... | UseUseExplosion.rb:20:430:20:3380 | if ... | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | -| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | +| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | UseUseExplosion.rb:20:446:20:3364 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:451:20:3364 | if ... | UseUseExplosion.rb:20:446:20:3364 | then ... | | UseUseExplosion.rb:20:455:20:459 | @prop | UseUseExplosion.rb:20:455:20:464 | ... > ... | | UseUseExplosion.rb:20:455:20:459 | [post] self | UseUseExplosion.rb:20:476:20:480 | self | @@ -464,9 +506,11 @@ | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [false] ( ... ) | | UseUseExplosion.rb:20:455:20:464 | ... > ... | UseUseExplosion.rb:20:454:20:465 | [true] ( ... ) | | UseUseExplosion.rb:20:463:20:464 | 79 | UseUseExplosion.rb:20:455:20:464 | ... > ... | +| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | +| UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | | UseUseExplosion.rb:20:467:20:3348 | then ... | UseUseExplosion.rb:20:451:20:3364 | if ... | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | -| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | +| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | UseUseExplosion.rb:20:467:20:3348 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:472:20:3348 | if ... | UseUseExplosion.rb:20:467:20:3348 | then ... | | UseUseExplosion.rb:20:476:20:480 | @prop | UseUseExplosion.rb:20:476:20:485 | ... > ... | | UseUseExplosion.rb:20:476:20:480 | [post] self | UseUseExplosion.rb:20:497:20:501 | self | @@ -476,9 +520,11 @@ | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [false] ( ... ) | | UseUseExplosion.rb:20:476:20:485 | ... > ... | UseUseExplosion.rb:20:475:20:486 | [true] ( ... ) | | UseUseExplosion.rb:20:484:20:485 | 78 | UseUseExplosion.rb:20:476:20:485 | ... > ... | +| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | +| UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | | UseUseExplosion.rb:20:488:20:3332 | then ... | UseUseExplosion.rb:20:472:20:3348 | if ... | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | -| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | +| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | UseUseExplosion.rb:20:488:20:3332 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:493:20:3332 | if ... | UseUseExplosion.rb:20:488:20:3332 | then ... | | UseUseExplosion.rb:20:497:20:501 | @prop | UseUseExplosion.rb:20:497:20:506 | ... > ... | | UseUseExplosion.rb:20:497:20:501 | [post] self | UseUseExplosion.rb:20:518:20:522 | self | @@ -488,9 +534,11 @@ | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [false] ( ... ) | | UseUseExplosion.rb:20:497:20:506 | ... > ... | UseUseExplosion.rb:20:496:20:507 | [true] ( ... ) | | UseUseExplosion.rb:20:505:20:506 | 77 | UseUseExplosion.rb:20:497:20:506 | ... > ... | +| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | +| UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | | UseUseExplosion.rb:20:509:20:3316 | then ... | UseUseExplosion.rb:20:493:20:3332 | if ... | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | -| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | +| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | UseUseExplosion.rb:20:509:20:3316 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:514:20:3316 | if ... | UseUseExplosion.rb:20:509:20:3316 | then ... | | UseUseExplosion.rb:20:518:20:522 | @prop | UseUseExplosion.rb:20:518:20:527 | ... > ... | | UseUseExplosion.rb:20:518:20:522 | [post] self | UseUseExplosion.rb:20:539:20:543 | self | @@ -500,9 +548,11 @@ | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [false] ( ... ) | | UseUseExplosion.rb:20:518:20:527 | ... > ... | UseUseExplosion.rb:20:517:20:528 | [true] ( ... ) | | UseUseExplosion.rb:20:526:20:527 | 76 | UseUseExplosion.rb:20:518:20:527 | ... > ... | +| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | +| UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | | UseUseExplosion.rb:20:530:20:3300 | then ... | UseUseExplosion.rb:20:514:20:3316 | if ... | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | -| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | +| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | UseUseExplosion.rb:20:530:20:3300 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:535:20:3300 | if ... | UseUseExplosion.rb:20:530:20:3300 | then ... | | UseUseExplosion.rb:20:539:20:543 | @prop | UseUseExplosion.rb:20:539:20:548 | ... > ... | | UseUseExplosion.rb:20:539:20:543 | [post] self | UseUseExplosion.rb:20:560:20:564 | self | @@ -512,9 +562,11 @@ | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [false] ( ... ) | | UseUseExplosion.rb:20:539:20:548 | ... > ... | UseUseExplosion.rb:20:538:20:549 | [true] ( ... ) | | UseUseExplosion.rb:20:547:20:548 | 75 | UseUseExplosion.rb:20:539:20:548 | ... > ... | +| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | +| UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | | UseUseExplosion.rb:20:551:20:3284 | then ... | UseUseExplosion.rb:20:535:20:3300 | if ... | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | -| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | +| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | UseUseExplosion.rb:20:551:20:3284 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:556:20:3284 | if ... | UseUseExplosion.rb:20:551:20:3284 | then ... | | UseUseExplosion.rb:20:560:20:564 | @prop | UseUseExplosion.rb:20:560:20:569 | ... > ... | | UseUseExplosion.rb:20:560:20:564 | [post] self | UseUseExplosion.rb:20:581:20:585 | self | @@ -524,9 +576,11 @@ | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [false] ( ... ) | | UseUseExplosion.rb:20:560:20:569 | ... > ... | UseUseExplosion.rb:20:559:20:570 | [true] ( ... ) | | UseUseExplosion.rb:20:568:20:569 | 74 | UseUseExplosion.rb:20:560:20:569 | ... > ... | +| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | +| UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | | UseUseExplosion.rb:20:572:20:3268 | then ... | UseUseExplosion.rb:20:556:20:3284 | if ... | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | -| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | +| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | UseUseExplosion.rb:20:572:20:3268 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:577:20:3268 | if ... | UseUseExplosion.rb:20:572:20:3268 | then ... | | UseUseExplosion.rb:20:581:20:585 | @prop | UseUseExplosion.rb:20:581:20:590 | ... > ... | | UseUseExplosion.rb:20:581:20:585 | [post] self | UseUseExplosion.rb:20:602:20:606 | self | @@ -536,9 +590,11 @@ | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [false] ( ... ) | | UseUseExplosion.rb:20:581:20:590 | ... > ... | UseUseExplosion.rb:20:580:20:591 | [true] ( ... ) | | UseUseExplosion.rb:20:589:20:590 | 73 | UseUseExplosion.rb:20:581:20:590 | ... > ... | +| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | +| UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | | UseUseExplosion.rb:20:593:20:3252 | then ... | UseUseExplosion.rb:20:577:20:3268 | if ... | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | -| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | +| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | UseUseExplosion.rb:20:593:20:3252 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:598:20:3252 | if ... | UseUseExplosion.rb:20:593:20:3252 | then ... | | UseUseExplosion.rb:20:602:20:606 | @prop | UseUseExplosion.rb:20:602:20:611 | ... > ... | | UseUseExplosion.rb:20:602:20:606 | [post] self | UseUseExplosion.rb:20:623:20:627 | self | @@ -548,9 +604,11 @@ | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [false] ( ... ) | | UseUseExplosion.rb:20:602:20:611 | ... > ... | UseUseExplosion.rb:20:601:20:612 | [true] ( ... ) | | UseUseExplosion.rb:20:610:20:611 | 72 | UseUseExplosion.rb:20:602:20:611 | ... > ... | +| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | +| UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | | UseUseExplosion.rb:20:614:20:3236 | then ... | UseUseExplosion.rb:20:598:20:3252 | if ... | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | -| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | +| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | UseUseExplosion.rb:20:614:20:3236 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:619:20:3236 | if ... | UseUseExplosion.rb:20:614:20:3236 | then ... | | UseUseExplosion.rb:20:623:20:627 | @prop | UseUseExplosion.rb:20:623:20:632 | ... > ... | | UseUseExplosion.rb:20:623:20:627 | [post] self | UseUseExplosion.rb:20:644:20:648 | self | @@ -560,9 +618,11 @@ | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [false] ( ... ) | | UseUseExplosion.rb:20:623:20:632 | ... > ... | UseUseExplosion.rb:20:622:20:633 | [true] ( ... ) | | UseUseExplosion.rb:20:631:20:632 | 71 | UseUseExplosion.rb:20:623:20:632 | ... > ... | +| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | +| UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | | UseUseExplosion.rb:20:635:20:3220 | then ... | UseUseExplosion.rb:20:619:20:3236 | if ... | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | -| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | +| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | UseUseExplosion.rb:20:635:20:3220 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:640:20:3220 | if ... | UseUseExplosion.rb:20:635:20:3220 | then ... | | UseUseExplosion.rb:20:644:20:648 | @prop | UseUseExplosion.rb:20:644:20:653 | ... > ... | | UseUseExplosion.rb:20:644:20:648 | [post] self | UseUseExplosion.rb:20:665:20:669 | self | @@ -572,9 +632,11 @@ | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [false] ( ... ) | | UseUseExplosion.rb:20:644:20:653 | ... > ... | UseUseExplosion.rb:20:643:20:654 | [true] ( ... ) | | UseUseExplosion.rb:20:652:20:653 | 70 | UseUseExplosion.rb:20:644:20:653 | ... > ... | +| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | +| UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | | UseUseExplosion.rb:20:656:20:3204 | then ... | UseUseExplosion.rb:20:640:20:3220 | if ... | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | -| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | +| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | UseUseExplosion.rb:20:656:20:3204 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:661:20:3204 | if ... | UseUseExplosion.rb:20:656:20:3204 | then ... | | UseUseExplosion.rb:20:665:20:669 | @prop | UseUseExplosion.rb:20:665:20:674 | ... > ... | | UseUseExplosion.rb:20:665:20:669 | [post] self | UseUseExplosion.rb:20:686:20:690 | self | @@ -584,9 +646,11 @@ | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [false] ( ... ) | | UseUseExplosion.rb:20:665:20:674 | ... > ... | UseUseExplosion.rb:20:664:20:675 | [true] ( ... ) | | UseUseExplosion.rb:20:673:20:674 | 69 | UseUseExplosion.rb:20:665:20:674 | ... > ... | +| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | +| UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | | UseUseExplosion.rb:20:677:20:3188 | then ... | UseUseExplosion.rb:20:661:20:3204 | if ... | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | -| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | +| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | UseUseExplosion.rb:20:677:20:3188 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:682:20:3188 | if ... | UseUseExplosion.rb:20:677:20:3188 | then ... | | UseUseExplosion.rb:20:686:20:690 | @prop | UseUseExplosion.rb:20:686:20:695 | ... > ... | | UseUseExplosion.rb:20:686:20:690 | [post] self | UseUseExplosion.rb:20:707:20:711 | self | @@ -596,9 +660,11 @@ | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [false] ( ... ) | | UseUseExplosion.rb:20:686:20:695 | ... > ... | UseUseExplosion.rb:20:685:20:696 | [true] ( ... ) | | UseUseExplosion.rb:20:694:20:695 | 68 | UseUseExplosion.rb:20:686:20:695 | ... > ... | +| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | +| UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | | UseUseExplosion.rb:20:698:20:3172 | then ... | UseUseExplosion.rb:20:682:20:3188 | if ... | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | -| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | +| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | UseUseExplosion.rb:20:698:20:3172 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:703:20:3172 | if ... | UseUseExplosion.rb:20:698:20:3172 | then ... | | UseUseExplosion.rb:20:707:20:711 | @prop | UseUseExplosion.rb:20:707:20:716 | ... > ... | | UseUseExplosion.rb:20:707:20:711 | [post] self | UseUseExplosion.rb:20:728:20:732 | self | @@ -608,9 +674,11 @@ | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [false] ( ... ) | | UseUseExplosion.rb:20:707:20:716 | ... > ... | UseUseExplosion.rb:20:706:20:717 | [true] ( ... ) | | UseUseExplosion.rb:20:715:20:716 | 67 | UseUseExplosion.rb:20:707:20:716 | ... > ... | +| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | +| UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | | UseUseExplosion.rb:20:719:20:3156 | then ... | UseUseExplosion.rb:20:703:20:3172 | if ... | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | -| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | +| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | UseUseExplosion.rb:20:719:20:3156 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:724:20:3156 | if ... | UseUseExplosion.rb:20:719:20:3156 | then ... | | UseUseExplosion.rb:20:728:20:732 | @prop | UseUseExplosion.rb:20:728:20:737 | ... > ... | | UseUseExplosion.rb:20:728:20:732 | [post] self | UseUseExplosion.rb:20:749:20:753 | self | @@ -620,9 +688,11 @@ | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [false] ( ... ) | | UseUseExplosion.rb:20:728:20:737 | ... > ... | UseUseExplosion.rb:20:727:20:738 | [true] ( ... ) | | UseUseExplosion.rb:20:736:20:737 | 66 | UseUseExplosion.rb:20:728:20:737 | ... > ... | +| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | +| UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | | UseUseExplosion.rb:20:740:20:3140 | then ... | UseUseExplosion.rb:20:724:20:3156 | if ... | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | -| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | +| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | UseUseExplosion.rb:20:740:20:3140 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:745:20:3140 | if ... | UseUseExplosion.rb:20:740:20:3140 | then ... | | UseUseExplosion.rb:20:749:20:753 | @prop | UseUseExplosion.rb:20:749:20:758 | ... > ... | | UseUseExplosion.rb:20:749:20:753 | [post] self | UseUseExplosion.rb:20:770:20:774 | self | @@ -632,9 +702,11 @@ | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [false] ( ... ) | | UseUseExplosion.rb:20:749:20:758 | ... > ... | UseUseExplosion.rb:20:748:20:759 | [true] ( ... ) | | UseUseExplosion.rb:20:757:20:758 | 65 | UseUseExplosion.rb:20:749:20:758 | ... > ... | +| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | +| UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | | UseUseExplosion.rb:20:761:20:3124 | then ... | UseUseExplosion.rb:20:745:20:3140 | if ... | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | -| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | +| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | UseUseExplosion.rb:20:761:20:3124 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:766:20:3124 | if ... | UseUseExplosion.rb:20:761:20:3124 | then ... | | UseUseExplosion.rb:20:770:20:774 | @prop | UseUseExplosion.rb:20:770:20:779 | ... > ... | | UseUseExplosion.rb:20:770:20:774 | [post] self | UseUseExplosion.rb:20:791:20:795 | self | @@ -644,9 +716,11 @@ | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [false] ( ... ) | | UseUseExplosion.rb:20:770:20:779 | ... > ... | UseUseExplosion.rb:20:769:20:780 | [true] ( ... ) | | UseUseExplosion.rb:20:778:20:779 | 64 | UseUseExplosion.rb:20:770:20:779 | ... > ... | +| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | +| UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | | UseUseExplosion.rb:20:782:20:3108 | then ... | UseUseExplosion.rb:20:766:20:3124 | if ... | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | -| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | +| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | UseUseExplosion.rb:20:782:20:3108 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:787:20:3108 | if ... | UseUseExplosion.rb:20:782:20:3108 | then ... | | UseUseExplosion.rb:20:791:20:795 | @prop | UseUseExplosion.rb:20:791:20:800 | ... > ... | | UseUseExplosion.rb:20:791:20:795 | [post] self | UseUseExplosion.rb:20:812:20:816 | self | @@ -656,9 +730,11 @@ | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [false] ( ... ) | | UseUseExplosion.rb:20:791:20:800 | ... > ... | UseUseExplosion.rb:20:790:20:801 | [true] ( ... ) | | UseUseExplosion.rb:20:799:20:800 | 63 | UseUseExplosion.rb:20:791:20:800 | ... > ... | +| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | +| UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | | UseUseExplosion.rb:20:803:20:3092 | then ... | UseUseExplosion.rb:20:787:20:3108 | if ... | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | -| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | +| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | UseUseExplosion.rb:20:803:20:3092 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:808:20:3092 | if ... | UseUseExplosion.rb:20:803:20:3092 | then ... | | UseUseExplosion.rb:20:812:20:816 | @prop | UseUseExplosion.rb:20:812:20:821 | ... > ... | | UseUseExplosion.rb:20:812:20:816 | [post] self | UseUseExplosion.rb:20:833:20:837 | self | @@ -668,9 +744,11 @@ | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [false] ( ... ) | | UseUseExplosion.rb:20:812:20:821 | ... > ... | UseUseExplosion.rb:20:811:20:822 | [true] ( ... ) | | UseUseExplosion.rb:20:820:20:821 | 62 | UseUseExplosion.rb:20:812:20:821 | ... > ... | +| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | +| UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | | UseUseExplosion.rb:20:824:20:3076 | then ... | UseUseExplosion.rb:20:808:20:3092 | if ... | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | -| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | +| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | UseUseExplosion.rb:20:824:20:3076 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:829:20:3076 | if ... | UseUseExplosion.rb:20:824:20:3076 | then ... | | UseUseExplosion.rb:20:833:20:837 | @prop | UseUseExplosion.rb:20:833:20:842 | ... > ... | | UseUseExplosion.rb:20:833:20:837 | [post] self | UseUseExplosion.rb:20:854:20:858 | self | @@ -680,9 +758,11 @@ | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [false] ( ... ) | | UseUseExplosion.rb:20:833:20:842 | ... > ... | UseUseExplosion.rb:20:832:20:843 | [true] ( ... ) | | UseUseExplosion.rb:20:841:20:842 | 61 | UseUseExplosion.rb:20:833:20:842 | ... > ... | +| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | +| UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | | UseUseExplosion.rb:20:845:20:3060 | then ... | UseUseExplosion.rb:20:829:20:3076 | if ... | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | -| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | +| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | UseUseExplosion.rb:20:845:20:3060 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:850:20:3060 | if ... | UseUseExplosion.rb:20:845:20:3060 | then ... | | UseUseExplosion.rb:20:854:20:858 | @prop | UseUseExplosion.rb:20:854:20:863 | ... > ... | | UseUseExplosion.rb:20:854:20:858 | [post] self | UseUseExplosion.rb:20:875:20:879 | self | @@ -692,9 +772,11 @@ | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [false] ( ... ) | | UseUseExplosion.rb:20:854:20:863 | ... > ... | UseUseExplosion.rb:20:853:20:864 | [true] ( ... ) | | UseUseExplosion.rb:20:862:20:863 | 60 | UseUseExplosion.rb:20:854:20:863 | ... > ... | +| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | +| UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | | UseUseExplosion.rb:20:866:20:3044 | then ... | UseUseExplosion.rb:20:850:20:3060 | if ... | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | -| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | +| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | UseUseExplosion.rb:20:866:20:3044 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:871:20:3044 | if ... | UseUseExplosion.rb:20:866:20:3044 | then ... | | UseUseExplosion.rb:20:875:20:879 | @prop | UseUseExplosion.rb:20:875:20:884 | ... > ... | | UseUseExplosion.rb:20:875:20:879 | [post] self | UseUseExplosion.rb:20:896:20:900 | self | @@ -704,9 +786,11 @@ | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [false] ( ... ) | | UseUseExplosion.rb:20:875:20:884 | ... > ... | UseUseExplosion.rb:20:874:20:885 | [true] ( ... ) | | UseUseExplosion.rb:20:883:20:884 | 59 | UseUseExplosion.rb:20:875:20:884 | ... > ... | +| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | +| UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | | UseUseExplosion.rb:20:887:20:3028 | then ... | UseUseExplosion.rb:20:871:20:3044 | if ... | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | -| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | +| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | UseUseExplosion.rb:20:887:20:3028 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:892:20:3028 | if ... | UseUseExplosion.rb:20:887:20:3028 | then ... | | UseUseExplosion.rb:20:896:20:900 | @prop | UseUseExplosion.rb:20:896:20:905 | ... > ... | | UseUseExplosion.rb:20:896:20:900 | [post] self | UseUseExplosion.rb:20:917:20:921 | self | @@ -716,9 +800,11 @@ | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [false] ( ... ) | | UseUseExplosion.rb:20:896:20:905 | ... > ... | UseUseExplosion.rb:20:895:20:906 | [true] ( ... ) | | UseUseExplosion.rb:20:904:20:905 | 58 | UseUseExplosion.rb:20:896:20:905 | ... > ... | +| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | +| UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | | UseUseExplosion.rb:20:908:20:3012 | then ... | UseUseExplosion.rb:20:892:20:3028 | if ... | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | -| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | +| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | UseUseExplosion.rb:20:908:20:3012 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:913:20:3012 | if ... | UseUseExplosion.rb:20:908:20:3012 | then ... | | UseUseExplosion.rb:20:917:20:921 | @prop | UseUseExplosion.rb:20:917:20:926 | ... > ... | | UseUseExplosion.rb:20:917:20:921 | [post] self | UseUseExplosion.rb:20:938:20:942 | self | @@ -728,9 +814,11 @@ | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [false] ( ... ) | | UseUseExplosion.rb:20:917:20:926 | ... > ... | UseUseExplosion.rb:20:916:20:927 | [true] ( ... ) | | UseUseExplosion.rb:20:925:20:926 | 57 | UseUseExplosion.rb:20:917:20:926 | ... > ... | +| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | +| UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | | UseUseExplosion.rb:20:929:20:2996 | then ... | UseUseExplosion.rb:20:913:20:3012 | if ... | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | -| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | +| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | UseUseExplosion.rb:20:929:20:2996 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:934:20:2996 | if ... | UseUseExplosion.rb:20:929:20:2996 | then ... | | UseUseExplosion.rb:20:938:20:942 | @prop | UseUseExplosion.rb:20:938:20:947 | ... > ... | | UseUseExplosion.rb:20:938:20:942 | [post] self | UseUseExplosion.rb:20:959:20:963 | self | @@ -740,9 +828,11 @@ | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [false] ( ... ) | | UseUseExplosion.rb:20:938:20:947 | ... > ... | UseUseExplosion.rb:20:937:20:948 | [true] ( ... ) | | UseUseExplosion.rb:20:946:20:947 | 56 | UseUseExplosion.rb:20:938:20:947 | ... > ... | +| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | +| UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | | UseUseExplosion.rb:20:950:20:2980 | then ... | UseUseExplosion.rb:20:934:20:2996 | if ... | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | -| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | +| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | UseUseExplosion.rb:20:950:20:2980 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:955:20:2980 | if ... | UseUseExplosion.rb:20:950:20:2980 | then ... | | UseUseExplosion.rb:20:959:20:963 | @prop | UseUseExplosion.rb:20:959:20:968 | ... > ... | | UseUseExplosion.rb:20:959:20:963 | [post] self | UseUseExplosion.rb:20:980:20:984 | self | @@ -752,9 +842,11 @@ | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [false] ( ... ) | | UseUseExplosion.rb:20:959:20:968 | ... > ... | UseUseExplosion.rb:20:958:20:969 | [true] ( ... ) | | UseUseExplosion.rb:20:967:20:968 | 55 | UseUseExplosion.rb:20:959:20:968 | ... > ... | +| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | +| UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | | UseUseExplosion.rb:20:971:20:2964 | then ... | UseUseExplosion.rb:20:955:20:2980 | if ... | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | -| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | +| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | UseUseExplosion.rb:20:971:20:2964 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:976:20:2964 | if ... | UseUseExplosion.rb:20:971:20:2964 | then ... | | UseUseExplosion.rb:20:980:20:984 | @prop | UseUseExplosion.rb:20:980:20:989 | ... > ... | | UseUseExplosion.rb:20:980:20:984 | [post] self | UseUseExplosion.rb:20:1001:20:1005 | self | @@ -764,9 +856,11 @@ | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [false] ( ... ) | | UseUseExplosion.rb:20:980:20:989 | ... > ... | UseUseExplosion.rb:20:979:20:990 | [true] ( ... ) | | UseUseExplosion.rb:20:988:20:989 | 54 | UseUseExplosion.rb:20:980:20:989 | ... > ... | +| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | +| UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | | UseUseExplosion.rb:20:992:20:2948 | then ... | UseUseExplosion.rb:20:976:20:2964 | if ... | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | -| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | +| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | UseUseExplosion.rb:20:992:20:2948 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:997:20:2948 | if ... | UseUseExplosion.rb:20:992:20:2948 | then ... | | UseUseExplosion.rb:20:1001:20:1005 | @prop | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | | UseUseExplosion.rb:20:1001:20:1005 | [post] self | UseUseExplosion.rb:20:1022:20:1026 | self | @@ -776,9 +870,11 @@ | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [false] ( ... ) | | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | UseUseExplosion.rb:20:1000:20:1011 | [true] ( ... ) | | UseUseExplosion.rb:20:1009:20:1010 | 53 | UseUseExplosion.rb:20:1001:20:1010 | ... > ... | +| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | +| UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | | UseUseExplosion.rb:20:1013:20:2932 | then ... | UseUseExplosion.rb:20:997:20:2948 | if ... | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | -| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | +| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | UseUseExplosion.rb:20:1013:20:2932 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1018:20:2932 | if ... | UseUseExplosion.rb:20:1013:20:2932 | then ... | | UseUseExplosion.rb:20:1022:20:1026 | @prop | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | | UseUseExplosion.rb:20:1022:20:1026 | [post] self | UseUseExplosion.rb:20:1043:20:1047 | self | @@ -788,9 +884,11 @@ | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [false] ( ... ) | | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | UseUseExplosion.rb:20:1021:20:1032 | [true] ( ... ) | | UseUseExplosion.rb:20:1030:20:1031 | 52 | UseUseExplosion.rb:20:1022:20:1031 | ... > ... | +| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | +| UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | | UseUseExplosion.rb:20:1034:20:2916 | then ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | -| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | +| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | UseUseExplosion.rb:20:1034:20:2916 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1039:20:2916 | if ... | UseUseExplosion.rb:20:1034:20:2916 | then ... | | UseUseExplosion.rb:20:1043:20:1047 | @prop | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | | UseUseExplosion.rb:20:1043:20:1047 | [post] self | UseUseExplosion.rb:20:1064:20:1068 | self | @@ -800,9 +898,11 @@ | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [false] ( ... ) | | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | UseUseExplosion.rb:20:1042:20:1053 | [true] ( ... ) | | UseUseExplosion.rb:20:1051:20:1052 | 51 | UseUseExplosion.rb:20:1043:20:1052 | ... > ... | +| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | +| UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | | UseUseExplosion.rb:20:1055:20:2900 | then ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | -| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | +| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | UseUseExplosion.rb:20:1055:20:2900 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1060:20:2900 | if ... | UseUseExplosion.rb:20:1055:20:2900 | then ... | | UseUseExplosion.rb:20:1064:20:1068 | @prop | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | | UseUseExplosion.rb:20:1064:20:1068 | [post] self | UseUseExplosion.rb:20:1085:20:1089 | self | @@ -812,9 +912,11 @@ | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [false] ( ... ) | | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | UseUseExplosion.rb:20:1063:20:1074 | [true] ( ... ) | | UseUseExplosion.rb:20:1072:20:1073 | 50 | UseUseExplosion.rb:20:1064:20:1073 | ... > ... | +| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | +| UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | | UseUseExplosion.rb:20:1076:20:2884 | then ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | -| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | +| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | UseUseExplosion.rb:20:1076:20:2884 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1081:20:2884 | if ... | UseUseExplosion.rb:20:1076:20:2884 | then ... | | UseUseExplosion.rb:20:1085:20:1089 | @prop | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | | UseUseExplosion.rb:20:1085:20:1089 | [post] self | UseUseExplosion.rb:20:1106:20:1110 | self | @@ -824,9 +926,11 @@ | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [false] ( ... ) | | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | UseUseExplosion.rb:20:1084:20:1095 | [true] ( ... ) | | UseUseExplosion.rb:20:1093:20:1094 | 49 | UseUseExplosion.rb:20:1085:20:1094 | ... > ... | +| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | +| UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | | UseUseExplosion.rb:20:1097:20:2868 | then ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | -| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | +| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | UseUseExplosion.rb:20:1097:20:2868 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1102:20:2868 | if ... | UseUseExplosion.rb:20:1097:20:2868 | then ... | | UseUseExplosion.rb:20:1106:20:1110 | @prop | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | | UseUseExplosion.rb:20:1106:20:1110 | [post] self | UseUseExplosion.rb:20:1127:20:1131 | self | @@ -836,9 +940,11 @@ | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [false] ( ... ) | | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | UseUseExplosion.rb:20:1105:20:1116 | [true] ( ... ) | | UseUseExplosion.rb:20:1114:20:1115 | 48 | UseUseExplosion.rb:20:1106:20:1115 | ... > ... | +| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | +| UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | | UseUseExplosion.rb:20:1118:20:2852 | then ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | -| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | +| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | UseUseExplosion.rb:20:1118:20:2852 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1123:20:2852 | if ... | UseUseExplosion.rb:20:1118:20:2852 | then ... | | UseUseExplosion.rb:20:1127:20:1131 | @prop | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | | UseUseExplosion.rb:20:1127:20:1131 | [post] self | UseUseExplosion.rb:20:1148:20:1152 | self | @@ -848,9 +954,11 @@ | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [false] ( ... ) | | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | UseUseExplosion.rb:20:1126:20:1137 | [true] ( ... ) | | UseUseExplosion.rb:20:1135:20:1136 | 47 | UseUseExplosion.rb:20:1127:20:1136 | ... > ... | +| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | +| UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | | UseUseExplosion.rb:20:1139:20:2836 | then ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | -| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | +| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | UseUseExplosion.rb:20:1139:20:2836 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1144:20:2836 | if ... | UseUseExplosion.rb:20:1139:20:2836 | then ... | | UseUseExplosion.rb:20:1148:20:1152 | @prop | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | | UseUseExplosion.rb:20:1148:20:1152 | [post] self | UseUseExplosion.rb:20:1169:20:1173 | self | @@ -860,9 +968,11 @@ | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [false] ( ... ) | | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | UseUseExplosion.rb:20:1147:20:1158 | [true] ( ... ) | | UseUseExplosion.rb:20:1156:20:1157 | 46 | UseUseExplosion.rb:20:1148:20:1157 | ... > ... | +| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | +| UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | | UseUseExplosion.rb:20:1160:20:2820 | then ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | -| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | +| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | UseUseExplosion.rb:20:1160:20:2820 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1165:20:2820 | if ... | UseUseExplosion.rb:20:1160:20:2820 | then ... | | UseUseExplosion.rb:20:1169:20:1173 | @prop | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | | UseUseExplosion.rb:20:1169:20:1173 | [post] self | UseUseExplosion.rb:20:1190:20:1194 | self | @@ -872,9 +982,11 @@ | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [false] ( ... ) | | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | UseUseExplosion.rb:20:1168:20:1179 | [true] ( ... ) | | UseUseExplosion.rb:20:1177:20:1178 | 45 | UseUseExplosion.rb:20:1169:20:1178 | ... > ... | +| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | +| UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | | UseUseExplosion.rb:20:1181:20:2804 | then ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | -| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | +| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | UseUseExplosion.rb:20:1181:20:2804 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1186:20:2804 | if ... | UseUseExplosion.rb:20:1181:20:2804 | then ... | | UseUseExplosion.rb:20:1190:20:1194 | @prop | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | | UseUseExplosion.rb:20:1190:20:1194 | [post] self | UseUseExplosion.rb:20:1211:20:1215 | self | @@ -884,9 +996,11 @@ | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [false] ( ... ) | | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | UseUseExplosion.rb:20:1189:20:1200 | [true] ( ... ) | | UseUseExplosion.rb:20:1198:20:1199 | 44 | UseUseExplosion.rb:20:1190:20:1199 | ... > ... | +| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | +| UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | | UseUseExplosion.rb:20:1202:20:2788 | then ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | -| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | +| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | UseUseExplosion.rb:20:1202:20:2788 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1207:20:2788 | if ... | UseUseExplosion.rb:20:1202:20:2788 | then ... | | UseUseExplosion.rb:20:1211:20:1215 | @prop | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | | UseUseExplosion.rb:20:1211:20:1215 | [post] self | UseUseExplosion.rb:20:1232:20:1236 | self | @@ -896,9 +1010,11 @@ | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [false] ( ... ) | | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | UseUseExplosion.rb:20:1210:20:1221 | [true] ( ... ) | | UseUseExplosion.rb:20:1219:20:1220 | 43 | UseUseExplosion.rb:20:1211:20:1220 | ... > ... | +| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | +| UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | | UseUseExplosion.rb:20:1223:20:2772 | then ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | -| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | +| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | UseUseExplosion.rb:20:1223:20:2772 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1228:20:2772 | if ... | UseUseExplosion.rb:20:1223:20:2772 | then ... | | UseUseExplosion.rb:20:1232:20:1236 | @prop | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | | UseUseExplosion.rb:20:1232:20:1236 | [post] self | UseUseExplosion.rb:20:1253:20:1257 | self | @@ -908,9 +1024,11 @@ | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [false] ( ... ) | | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | UseUseExplosion.rb:20:1231:20:1242 | [true] ( ... ) | | UseUseExplosion.rb:20:1240:20:1241 | 42 | UseUseExplosion.rb:20:1232:20:1241 | ... > ... | +| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | +| UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | | UseUseExplosion.rb:20:1244:20:2756 | then ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | -| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | +| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | UseUseExplosion.rb:20:1244:20:2756 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1249:20:2756 | if ... | UseUseExplosion.rb:20:1244:20:2756 | then ... | | UseUseExplosion.rb:20:1253:20:1257 | @prop | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | | UseUseExplosion.rb:20:1253:20:1257 | [post] self | UseUseExplosion.rb:20:1274:20:1278 | self | @@ -920,9 +1038,11 @@ | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [false] ( ... ) | | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | UseUseExplosion.rb:20:1252:20:1263 | [true] ( ... ) | | UseUseExplosion.rb:20:1261:20:1262 | 41 | UseUseExplosion.rb:20:1253:20:1262 | ... > ... | +| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | +| UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | | UseUseExplosion.rb:20:1265:20:2740 | then ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | -| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | +| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | UseUseExplosion.rb:20:1265:20:2740 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1270:20:2740 | if ... | UseUseExplosion.rb:20:1265:20:2740 | then ... | | UseUseExplosion.rb:20:1274:20:1278 | @prop | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | | UseUseExplosion.rb:20:1274:20:1278 | [post] self | UseUseExplosion.rb:20:1295:20:1299 | self | @@ -932,9 +1052,11 @@ | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [false] ( ... ) | | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | UseUseExplosion.rb:20:1273:20:1284 | [true] ( ... ) | | UseUseExplosion.rb:20:1282:20:1283 | 40 | UseUseExplosion.rb:20:1274:20:1283 | ... > ... | +| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | +| UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | | UseUseExplosion.rb:20:1286:20:2724 | then ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | -| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | +| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | UseUseExplosion.rb:20:1286:20:2724 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1291:20:2724 | if ... | UseUseExplosion.rb:20:1286:20:2724 | then ... | | UseUseExplosion.rb:20:1295:20:1299 | @prop | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | | UseUseExplosion.rb:20:1295:20:1299 | [post] self | UseUseExplosion.rb:20:1316:20:1320 | self | @@ -944,9 +1066,11 @@ | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [false] ( ... ) | | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | UseUseExplosion.rb:20:1294:20:1305 | [true] ( ... ) | | UseUseExplosion.rb:20:1303:20:1304 | 39 | UseUseExplosion.rb:20:1295:20:1304 | ... > ... | +| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | +| UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | | UseUseExplosion.rb:20:1307:20:2708 | then ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | -| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | +| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | UseUseExplosion.rb:20:1307:20:2708 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1312:20:2708 | if ... | UseUseExplosion.rb:20:1307:20:2708 | then ... | | UseUseExplosion.rb:20:1316:20:1320 | @prop | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | | UseUseExplosion.rb:20:1316:20:1320 | [post] self | UseUseExplosion.rb:20:1337:20:1341 | self | @@ -956,9 +1080,11 @@ | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [false] ( ... ) | | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | UseUseExplosion.rb:20:1315:20:1326 | [true] ( ... ) | | UseUseExplosion.rb:20:1324:20:1325 | 38 | UseUseExplosion.rb:20:1316:20:1325 | ... > ... | +| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | +| UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | | UseUseExplosion.rb:20:1328:20:2692 | then ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | -| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | +| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | UseUseExplosion.rb:20:1328:20:2692 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1333:20:2692 | if ... | UseUseExplosion.rb:20:1328:20:2692 | then ... | | UseUseExplosion.rb:20:1337:20:1341 | @prop | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | | UseUseExplosion.rb:20:1337:20:1341 | [post] self | UseUseExplosion.rb:20:1358:20:1362 | self | @@ -968,9 +1094,11 @@ | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [false] ( ... ) | | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | UseUseExplosion.rb:20:1336:20:1347 | [true] ( ... ) | | UseUseExplosion.rb:20:1345:20:1346 | 37 | UseUseExplosion.rb:20:1337:20:1346 | ... > ... | +| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | +| UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | | UseUseExplosion.rb:20:1349:20:2676 | then ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | -| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | +| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | UseUseExplosion.rb:20:1349:20:2676 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1354:20:2676 | if ... | UseUseExplosion.rb:20:1349:20:2676 | then ... | | UseUseExplosion.rb:20:1358:20:1362 | @prop | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | | UseUseExplosion.rb:20:1358:20:1362 | [post] self | UseUseExplosion.rb:20:1379:20:1383 | self | @@ -980,9 +1108,11 @@ | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [false] ( ... ) | | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | UseUseExplosion.rb:20:1357:20:1368 | [true] ( ... ) | | UseUseExplosion.rb:20:1366:20:1367 | 36 | UseUseExplosion.rb:20:1358:20:1367 | ... > ... | +| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | +| UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | | UseUseExplosion.rb:20:1370:20:2660 | then ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | -| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | +| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | UseUseExplosion.rb:20:1370:20:2660 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1375:20:2660 | if ... | UseUseExplosion.rb:20:1370:20:2660 | then ... | | UseUseExplosion.rb:20:1379:20:1383 | @prop | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | | UseUseExplosion.rb:20:1379:20:1383 | [post] self | UseUseExplosion.rb:20:1400:20:1404 | self | @@ -992,9 +1122,11 @@ | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [false] ( ... ) | | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | UseUseExplosion.rb:20:1378:20:1389 | [true] ( ... ) | | UseUseExplosion.rb:20:1387:20:1388 | 35 | UseUseExplosion.rb:20:1379:20:1388 | ... > ... | +| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | +| UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | | UseUseExplosion.rb:20:1391:20:2644 | then ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | -| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | +| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | UseUseExplosion.rb:20:1391:20:2644 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1396:20:2644 | if ... | UseUseExplosion.rb:20:1391:20:2644 | then ... | | UseUseExplosion.rb:20:1400:20:1404 | @prop | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | | UseUseExplosion.rb:20:1400:20:1404 | [post] self | UseUseExplosion.rb:20:1421:20:1425 | self | @@ -1004,9 +1136,11 @@ | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [false] ( ... ) | | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | UseUseExplosion.rb:20:1399:20:1410 | [true] ( ... ) | | UseUseExplosion.rb:20:1408:20:1409 | 34 | UseUseExplosion.rb:20:1400:20:1409 | ... > ... | +| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | +| UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | | UseUseExplosion.rb:20:1412:20:2628 | then ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | -| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | +| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | UseUseExplosion.rb:20:1412:20:2628 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1417:20:2628 | if ... | UseUseExplosion.rb:20:1412:20:2628 | then ... | | UseUseExplosion.rb:20:1421:20:1425 | @prop | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | | UseUseExplosion.rb:20:1421:20:1425 | [post] self | UseUseExplosion.rb:20:1442:20:1446 | self | @@ -1016,9 +1150,11 @@ | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [false] ( ... ) | | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | UseUseExplosion.rb:20:1420:20:1431 | [true] ( ... ) | | UseUseExplosion.rb:20:1429:20:1430 | 33 | UseUseExplosion.rb:20:1421:20:1430 | ... > ... | +| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | +| UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | | UseUseExplosion.rb:20:1433:20:2612 | then ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | -| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | +| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | UseUseExplosion.rb:20:1433:20:2612 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1438:20:2612 | if ... | UseUseExplosion.rb:20:1433:20:2612 | then ... | | UseUseExplosion.rb:20:1442:20:1446 | @prop | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | | UseUseExplosion.rb:20:1442:20:1446 | [post] self | UseUseExplosion.rb:20:1463:20:1467 | self | @@ -1028,9 +1164,11 @@ | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [false] ( ... ) | | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | UseUseExplosion.rb:20:1441:20:1452 | [true] ( ... ) | | UseUseExplosion.rb:20:1450:20:1451 | 32 | UseUseExplosion.rb:20:1442:20:1451 | ... > ... | +| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | +| UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | | UseUseExplosion.rb:20:1454:20:2596 | then ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | -| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | +| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | UseUseExplosion.rb:20:1454:20:2596 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1459:20:2596 | if ... | UseUseExplosion.rb:20:1454:20:2596 | then ... | | UseUseExplosion.rb:20:1463:20:1467 | @prop | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | | UseUseExplosion.rb:20:1463:20:1467 | [post] self | UseUseExplosion.rb:20:1484:20:1488 | self | @@ -1040,9 +1178,11 @@ | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [false] ( ... ) | | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | UseUseExplosion.rb:20:1462:20:1473 | [true] ( ... ) | | UseUseExplosion.rb:20:1471:20:1472 | 31 | UseUseExplosion.rb:20:1463:20:1472 | ... > ... | +| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | +| UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | | UseUseExplosion.rb:20:1475:20:2580 | then ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | -| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | +| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | UseUseExplosion.rb:20:1475:20:2580 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1480:20:2580 | if ... | UseUseExplosion.rb:20:1475:20:2580 | then ... | | UseUseExplosion.rb:20:1484:20:1488 | @prop | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | | UseUseExplosion.rb:20:1484:20:1488 | [post] self | UseUseExplosion.rb:20:1505:20:1509 | self | @@ -1052,9 +1192,11 @@ | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [false] ( ... ) | | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | UseUseExplosion.rb:20:1483:20:1494 | [true] ( ... ) | | UseUseExplosion.rb:20:1492:20:1493 | 30 | UseUseExplosion.rb:20:1484:20:1493 | ... > ... | +| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | +| UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | | UseUseExplosion.rb:20:1496:20:2564 | then ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | -| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | +| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | UseUseExplosion.rb:20:1496:20:2564 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1501:20:2564 | if ... | UseUseExplosion.rb:20:1496:20:2564 | then ... | | UseUseExplosion.rb:20:1505:20:1509 | @prop | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | | UseUseExplosion.rb:20:1505:20:1509 | [post] self | UseUseExplosion.rb:20:1526:20:1530 | self | @@ -1064,9 +1206,11 @@ | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [false] ( ... ) | | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | UseUseExplosion.rb:20:1504:20:1515 | [true] ( ... ) | | UseUseExplosion.rb:20:1513:20:1514 | 29 | UseUseExplosion.rb:20:1505:20:1514 | ... > ... | +| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | +| UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | | UseUseExplosion.rb:20:1517:20:2548 | then ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | -| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | +| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | UseUseExplosion.rb:20:1517:20:2548 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1522:20:2548 | if ... | UseUseExplosion.rb:20:1517:20:2548 | then ... | | UseUseExplosion.rb:20:1526:20:1530 | @prop | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | | UseUseExplosion.rb:20:1526:20:1530 | [post] self | UseUseExplosion.rb:20:1547:20:1551 | self | @@ -1076,9 +1220,11 @@ | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [false] ( ... ) | | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | UseUseExplosion.rb:20:1525:20:1536 | [true] ( ... ) | | UseUseExplosion.rb:20:1534:20:1535 | 28 | UseUseExplosion.rb:20:1526:20:1535 | ... > ... | +| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | +| UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | | UseUseExplosion.rb:20:1538:20:2532 | then ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | -| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | +| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | UseUseExplosion.rb:20:1538:20:2532 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1543:20:2532 | if ... | UseUseExplosion.rb:20:1538:20:2532 | then ... | | UseUseExplosion.rb:20:1547:20:1551 | @prop | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | | UseUseExplosion.rb:20:1547:20:1551 | [post] self | UseUseExplosion.rb:20:1568:20:1572 | self | @@ -1088,9 +1234,11 @@ | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [false] ( ... ) | | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | UseUseExplosion.rb:20:1546:20:1557 | [true] ( ... ) | | UseUseExplosion.rb:20:1555:20:1556 | 27 | UseUseExplosion.rb:20:1547:20:1556 | ... > ... | +| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | +| UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | | UseUseExplosion.rb:20:1559:20:2516 | then ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | -| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | +| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | UseUseExplosion.rb:20:1559:20:2516 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1564:20:2516 | if ... | UseUseExplosion.rb:20:1559:20:2516 | then ... | | UseUseExplosion.rb:20:1568:20:1572 | @prop | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | | UseUseExplosion.rb:20:1568:20:1572 | [post] self | UseUseExplosion.rb:20:1589:20:1593 | self | @@ -1100,9 +1248,11 @@ | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [false] ( ... ) | | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | UseUseExplosion.rb:20:1567:20:1578 | [true] ( ... ) | | UseUseExplosion.rb:20:1576:20:1577 | 26 | UseUseExplosion.rb:20:1568:20:1577 | ... > ... | +| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | +| UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | | UseUseExplosion.rb:20:1580:20:2500 | then ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | -| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | +| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | UseUseExplosion.rb:20:1580:20:2500 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1585:20:2500 | if ... | UseUseExplosion.rb:20:1580:20:2500 | then ... | | UseUseExplosion.rb:20:1589:20:1593 | @prop | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | | UseUseExplosion.rb:20:1589:20:1593 | [post] self | UseUseExplosion.rb:20:1610:20:1614 | self | @@ -1112,9 +1262,11 @@ | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [false] ( ... ) | | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | UseUseExplosion.rb:20:1588:20:1599 | [true] ( ... ) | | UseUseExplosion.rb:20:1597:20:1598 | 25 | UseUseExplosion.rb:20:1589:20:1598 | ... > ... | +| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | +| UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | | UseUseExplosion.rb:20:1601:20:2484 | then ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | -| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | +| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | UseUseExplosion.rb:20:1601:20:2484 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1606:20:2484 | if ... | UseUseExplosion.rb:20:1601:20:2484 | then ... | | UseUseExplosion.rb:20:1610:20:1614 | @prop | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | | UseUseExplosion.rb:20:1610:20:1614 | [post] self | UseUseExplosion.rb:20:1631:20:1635 | self | @@ -1124,9 +1276,11 @@ | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [false] ( ... ) | | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | UseUseExplosion.rb:20:1609:20:1620 | [true] ( ... ) | | UseUseExplosion.rb:20:1618:20:1619 | 24 | UseUseExplosion.rb:20:1610:20:1619 | ... > ... | +| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | +| UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | | UseUseExplosion.rb:20:1622:20:2468 | then ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | -| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | +| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | UseUseExplosion.rb:20:1622:20:2468 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1627:20:2468 | if ... | UseUseExplosion.rb:20:1622:20:2468 | then ... | | UseUseExplosion.rb:20:1631:20:1635 | @prop | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | | UseUseExplosion.rb:20:1631:20:1635 | [post] self | UseUseExplosion.rb:20:1652:20:1656 | self | @@ -1136,9 +1290,11 @@ | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [false] ( ... ) | | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | UseUseExplosion.rb:20:1630:20:1641 | [true] ( ... ) | | UseUseExplosion.rb:20:1639:20:1640 | 23 | UseUseExplosion.rb:20:1631:20:1640 | ... > ... | +| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | +| UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | | UseUseExplosion.rb:20:1643:20:2452 | then ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | -| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | +| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | UseUseExplosion.rb:20:1643:20:2452 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1648:20:2452 | if ... | UseUseExplosion.rb:20:1643:20:2452 | then ... | | UseUseExplosion.rb:20:1652:20:1656 | @prop | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | | UseUseExplosion.rb:20:1652:20:1656 | [post] self | UseUseExplosion.rb:20:1673:20:1677 | self | @@ -1148,9 +1304,11 @@ | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [false] ( ... ) | | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | UseUseExplosion.rb:20:1651:20:1662 | [true] ( ... ) | | UseUseExplosion.rb:20:1660:20:1661 | 22 | UseUseExplosion.rb:20:1652:20:1661 | ... > ... | +| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | +| UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | | UseUseExplosion.rb:20:1664:20:2436 | then ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | -| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | +| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | UseUseExplosion.rb:20:1664:20:2436 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1669:20:2436 | if ... | UseUseExplosion.rb:20:1664:20:2436 | then ... | | UseUseExplosion.rb:20:1673:20:1677 | @prop | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | | UseUseExplosion.rb:20:1673:20:1677 | [post] self | UseUseExplosion.rb:20:1694:20:1698 | self | @@ -1160,9 +1318,11 @@ | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [false] ( ... ) | | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | UseUseExplosion.rb:20:1672:20:1683 | [true] ( ... ) | | UseUseExplosion.rb:20:1681:20:1682 | 21 | UseUseExplosion.rb:20:1673:20:1682 | ... > ... | +| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | +| UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | | UseUseExplosion.rb:20:1685:20:2420 | then ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | -| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | +| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | UseUseExplosion.rb:20:1685:20:2420 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1690:20:2420 | if ... | UseUseExplosion.rb:20:1685:20:2420 | then ... | | UseUseExplosion.rb:20:1694:20:1698 | @prop | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | | UseUseExplosion.rb:20:1694:20:1698 | [post] self | UseUseExplosion.rb:20:1715:20:1719 | self | @@ -1172,9 +1332,11 @@ | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [false] ( ... ) | | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | UseUseExplosion.rb:20:1693:20:1704 | [true] ( ... ) | | UseUseExplosion.rb:20:1702:20:1703 | 20 | UseUseExplosion.rb:20:1694:20:1703 | ... > ... | +| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | +| UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | | UseUseExplosion.rb:20:1706:20:2404 | then ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | -| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | +| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | UseUseExplosion.rb:20:1706:20:2404 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1711:20:2404 | if ... | UseUseExplosion.rb:20:1706:20:2404 | then ... | | UseUseExplosion.rb:20:1715:20:1719 | @prop | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | | UseUseExplosion.rb:20:1715:20:1719 | [post] self | UseUseExplosion.rb:20:1736:20:1740 | self | @@ -1184,9 +1346,11 @@ | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [false] ( ... ) | | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | UseUseExplosion.rb:20:1714:20:1725 | [true] ( ... ) | | UseUseExplosion.rb:20:1723:20:1724 | 19 | UseUseExplosion.rb:20:1715:20:1724 | ... > ... | +| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | +| UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | | UseUseExplosion.rb:20:1727:20:2388 | then ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | -| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | +| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | UseUseExplosion.rb:20:1727:20:2388 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1732:20:2388 | if ... | UseUseExplosion.rb:20:1727:20:2388 | then ... | | UseUseExplosion.rb:20:1736:20:1740 | @prop | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | | UseUseExplosion.rb:20:1736:20:1740 | [post] self | UseUseExplosion.rb:20:1757:20:1761 | self | @@ -1196,9 +1360,11 @@ | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [false] ( ... ) | | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | UseUseExplosion.rb:20:1735:20:1746 | [true] ( ... ) | | UseUseExplosion.rb:20:1744:20:1745 | 18 | UseUseExplosion.rb:20:1736:20:1745 | ... > ... | +| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | +| UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | | UseUseExplosion.rb:20:1748:20:2372 | then ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | -| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | +| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | UseUseExplosion.rb:20:1748:20:2372 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1753:20:2372 | if ... | UseUseExplosion.rb:20:1748:20:2372 | then ... | | UseUseExplosion.rb:20:1757:20:1761 | @prop | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | | UseUseExplosion.rb:20:1757:20:1761 | [post] self | UseUseExplosion.rb:20:1778:20:1782 | self | @@ -1208,9 +1374,11 @@ | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [false] ( ... ) | | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | UseUseExplosion.rb:20:1756:20:1767 | [true] ( ... ) | | UseUseExplosion.rb:20:1765:20:1766 | 17 | UseUseExplosion.rb:20:1757:20:1766 | ... > ... | +| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | +| UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | | UseUseExplosion.rb:20:1769:20:2356 | then ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | -| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | +| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | UseUseExplosion.rb:20:1769:20:2356 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1774:20:2356 | if ... | UseUseExplosion.rb:20:1769:20:2356 | then ... | | UseUseExplosion.rb:20:1778:20:1782 | @prop | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | | UseUseExplosion.rb:20:1778:20:1782 | [post] self | UseUseExplosion.rb:20:1799:20:1803 | self | @@ -1220,9 +1388,11 @@ | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [false] ( ... ) | | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | UseUseExplosion.rb:20:1777:20:1788 | [true] ( ... ) | | UseUseExplosion.rb:20:1786:20:1787 | 16 | UseUseExplosion.rb:20:1778:20:1787 | ... > ... | +| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | +| UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | | UseUseExplosion.rb:20:1790:20:2340 | then ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | -| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | +| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | UseUseExplosion.rb:20:1790:20:2340 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1795:20:2340 | if ... | UseUseExplosion.rb:20:1790:20:2340 | then ... | | UseUseExplosion.rb:20:1799:20:1803 | @prop | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | | UseUseExplosion.rb:20:1799:20:1803 | [post] self | UseUseExplosion.rb:20:1820:20:1824 | self | @@ -1232,9 +1402,11 @@ | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [false] ( ... ) | | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | UseUseExplosion.rb:20:1798:20:1809 | [true] ( ... ) | | UseUseExplosion.rb:20:1807:20:1808 | 15 | UseUseExplosion.rb:20:1799:20:1808 | ... > ... | +| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | +| UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | | UseUseExplosion.rb:20:1811:20:2324 | then ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | -| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | +| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | UseUseExplosion.rb:20:1811:20:2324 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1816:20:2324 | if ... | UseUseExplosion.rb:20:1811:20:2324 | then ... | | UseUseExplosion.rb:20:1820:20:1824 | @prop | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | | UseUseExplosion.rb:20:1820:20:1824 | [post] self | UseUseExplosion.rb:20:1841:20:1845 | self | @@ -1244,9 +1416,11 @@ | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [false] ( ... ) | | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | UseUseExplosion.rb:20:1819:20:1830 | [true] ( ... ) | | UseUseExplosion.rb:20:1828:20:1829 | 14 | UseUseExplosion.rb:20:1820:20:1829 | ... > ... | +| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | +| UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | | UseUseExplosion.rb:20:1832:20:2308 | then ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | -| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | +| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | UseUseExplosion.rb:20:1832:20:2308 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1837:20:2308 | if ... | UseUseExplosion.rb:20:1832:20:2308 | then ... | | UseUseExplosion.rb:20:1841:20:1845 | @prop | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | | UseUseExplosion.rb:20:1841:20:1845 | [post] self | UseUseExplosion.rb:20:1862:20:1866 | self | @@ -1256,9 +1430,11 @@ | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [false] ( ... ) | | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | UseUseExplosion.rb:20:1840:20:1851 | [true] ( ... ) | | UseUseExplosion.rb:20:1849:20:1850 | 13 | UseUseExplosion.rb:20:1841:20:1850 | ... > ... | +| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | +| UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | | UseUseExplosion.rb:20:1853:20:2292 | then ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | -| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | +| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | UseUseExplosion.rb:20:1853:20:2292 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1858:20:2292 | if ... | UseUseExplosion.rb:20:1853:20:2292 | then ... | | UseUseExplosion.rb:20:1862:20:1866 | @prop | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | | UseUseExplosion.rb:20:1862:20:1866 | [post] self | UseUseExplosion.rb:20:1883:20:1887 | self | @@ -1268,9 +1444,11 @@ | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [false] ( ... ) | | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | UseUseExplosion.rb:20:1861:20:1872 | [true] ( ... ) | | UseUseExplosion.rb:20:1870:20:1871 | 12 | UseUseExplosion.rb:20:1862:20:1871 | ... > ... | +| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | +| UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | | UseUseExplosion.rb:20:1874:20:2276 | then ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | -| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | +| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | UseUseExplosion.rb:20:1874:20:2276 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1879:20:2276 | if ... | UseUseExplosion.rb:20:1874:20:2276 | then ... | | UseUseExplosion.rb:20:1883:20:1887 | @prop | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | | UseUseExplosion.rb:20:1883:20:1887 | [post] self | UseUseExplosion.rb:20:1904:20:1908 | self | @@ -1280,9 +1458,11 @@ | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [false] ( ... ) | | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | UseUseExplosion.rb:20:1882:20:1893 | [true] ( ... ) | | UseUseExplosion.rb:20:1891:20:1892 | 11 | UseUseExplosion.rb:20:1883:20:1892 | ... > ... | +| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | +| UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | | UseUseExplosion.rb:20:1895:20:2260 | then ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | -| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | +| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | UseUseExplosion.rb:20:1895:20:2260 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1900:20:2260 | if ... | UseUseExplosion.rb:20:1895:20:2260 | then ... | | UseUseExplosion.rb:20:1904:20:1908 | @prop | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | | UseUseExplosion.rb:20:1904:20:1908 | [post] self | UseUseExplosion.rb:20:1925:20:1929 | self | @@ -1292,9 +1472,11 @@ | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [false] ( ... ) | | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | UseUseExplosion.rb:20:1903:20:1914 | [true] ( ... ) | | UseUseExplosion.rb:20:1912:20:1913 | 10 | UseUseExplosion.rb:20:1904:20:1913 | ... > ... | +| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | +| UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | | UseUseExplosion.rb:20:1916:20:2244 | then ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | -| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | +| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | UseUseExplosion.rb:20:1916:20:2244 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1921:20:2244 | if ... | UseUseExplosion.rb:20:1916:20:2244 | then ... | | UseUseExplosion.rb:20:1925:20:1929 | @prop | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | | UseUseExplosion.rb:20:1925:20:1929 | [post] self | UseUseExplosion.rb:20:1945:20:1949 | self | @@ -1304,9 +1486,11 @@ | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [false] ( ... ) | | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | UseUseExplosion.rb:20:1924:20:1934 | [true] ( ... ) | | UseUseExplosion.rb:20:1933:20:1933 | 9 | UseUseExplosion.rb:20:1925:20:1933 | ... > ... | +| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | +| UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | | UseUseExplosion.rb:20:1936:20:2228 | then ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | -| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | +| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | UseUseExplosion.rb:20:1936:20:2228 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1941:20:2228 | if ... | UseUseExplosion.rb:20:1936:20:2228 | then ... | | UseUseExplosion.rb:20:1945:20:1949 | @prop | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | | UseUseExplosion.rb:20:1945:20:1949 | [post] self | UseUseExplosion.rb:20:1965:20:1969 | self | @@ -1316,9 +1500,11 @@ | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [false] ( ... ) | | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | UseUseExplosion.rb:20:1944:20:1954 | [true] ( ... ) | | UseUseExplosion.rb:20:1953:20:1953 | 8 | UseUseExplosion.rb:20:1945:20:1953 | ... > ... | +| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | +| UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | | UseUseExplosion.rb:20:1956:20:2212 | then ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | -| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | +| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | UseUseExplosion.rb:20:1956:20:2212 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1961:20:2212 | if ... | UseUseExplosion.rb:20:1956:20:2212 | then ... | | UseUseExplosion.rb:20:1965:20:1969 | @prop | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | | UseUseExplosion.rb:20:1965:20:1969 | [post] self | UseUseExplosion.rb:20:1985:20:1989 | self | @@ -1328,9 +1514,11 @@ | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [false] ( ... ) | | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | UseUseExplosion.rb:20:1964:20:1974 | [true] ( ... ) | | UseUseExplosion.rb:20:1973:20:1973 | 7 | UseUseExplosion.rb:20:1965:20:1973 | ... > ... | +| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | +| UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | | UseUseExplosion.rb:20:1976:20:2196 | then ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | -| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | +| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | UseUseExplosion.rb:20:1976:20:2196 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:1981:20:2196 | if ... | UseUseExplosion.rb:20:1976:20:2196 | then ... | | UseUseExplosion.rb:20:1985:20:1989 | @prop | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | | UseUseExplosion.rb:20:1985:20:1989 | [post] self | UseUseExplosion.rb:20:2005:20:2009 | self | @@ -1340,9 +1528,11 @@ | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [false] ( ... ) | | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | UseUseExplosion.rb:20:1984:20:1994 | [true] ( ... ) | | UseUseExplosion.rb:20:1993:20:1993 | 6 | UseUseExplosion.rb:20:1985:20:1993 | ... > ... | +| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | +| UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | | UseUseExplosion.rb:20:1996:20:2180 | then ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | -| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | +| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | UseUseExplosion.rb:20:1996:20:2180 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2001:20:2180 | if ... | UseUseExplosion.rb:20:1996:20:2180 | then ... | | UseUseExplosion.rb:20:2005:20:2009 | @prop | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | | UseUseExplosion.rb:20:2005:20:2009 | [post] self | UseUseExplosion.rb:20:2025:20:2029 | self | @@ -1352,9 +1542,11 @@ | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [false] ( ... ) | | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | UseUseExplosion.rb:20:2004:20:2014 | [true] ( ... ) | | UseUseExplosion.rb:20:2013:20:2013 | 5 | UseUseExplosion.rb:20:2005:20:2013 | ... > ... | +| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | +| UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | | UseUseExplosion.rb:20:2016:20:2164 | then ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | -| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | +| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | UseUseExplosion.rb:20:2016:20:2164 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2021:20:2164 | if ... | UseUseExplosion.rb:20:2016:20:2164 | then ... | | UseUseExplosion.rb:20:2025:20:2029 | @prop | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | | UseUseExplosion.rb:20:2025:20:2029 | [post] self | UseUseExplosion.rb:20:2045:20:2049 | self | @@ -1364,9 +1556,11 @@ | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [false] ( ... ) | | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | UseUseExplosion.rb:20:2024:20:2034 | [true] ( ... ) | | UseUseExplosion.rb:20:2033:20:2033 | 4 | UseUseExplosion.rb:20:2025:20:2033 | ... > ... | +| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | +| UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | | UseUseExplosion.rb:20:2036:20:2148 | then ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | -| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | +| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | UseUseExplosion.rb:20:2036:20:2148 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2041:20:2148 | if ... | UseUseExplosion.rb:20:2036:20:2148 | then ... | | UseUseExplosion.rb:20:2045:20:2049 | @prop | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | | UseUseExplosion.rb:20:2045:20:2049 | [post] self | UseUseExplosion.rb:20:2065:20:2069 | self | @@ -1376,9 +1570,11 @@ | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [false] ( ... ) | | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | UseUseExplosion.rb:20:2044:20:2054 | [true] ( ... ) | | UseUseExplosion.rb:20:2053:20:2053 | 3 | UseUseExplosion.rb:20:2045:20:2053 | ... > ... | +| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | +| UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | | UseUseExplosion.rb:20:2056:20:2132 | then ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | -| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | +| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | UseUseExplosion.rb:20:2056:20:2132 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2061:20:2132 | if ... | UseUseExplosion.rb:20:2056:20:2132 | then ... | | UseUseExplosion.rb:20:2065:20:2069 | @prop | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | | UseUseExplosion.rb:20:2065:20:2069 | [post] self | UseUseExplosion.rb:20:2085:20:2089 | self | @@ -1388,9 +1584,11 @@ | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [false] ( ... ) | | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | UseUseExplosion.rb:20:2064:20:2074 | [true] ( ... ) | | UseUseExplosion.rb:20:2073:20:2073 | 2 | UseUseExplosion.rb:20:2065:20:2073 | ... > ... | +| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | +| UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | | UseUseExplosion.rb:20:2076:20:2116 | then ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | -| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | +| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(self) | +| UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | UseUseExplosion.rb:20:2076:20:2116 | [input] SSA phi read(x) | | UseUseExplosion.rb:20:2081:20:2116 | if ... | UseUseExplosion.rb:20:2076:20:2116 | then ... | | UseUseExplosion.rb:20:2085:20:2089 | @prop | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | | UseUseExplosion.rb:20:2085:20:2089 | [post] self | UseUseExplosion.rb:20:2107:20:2112 | self | @@ -1398,205 +1596,407 @@ | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [false] ( ... ) | | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | UseUseExplosion.rb:20:2084:20:2094 | [true] ( ... ) | | UseUseExplosion.rb:20:2093:20:2093 | 1 | UseUseExplosion.rb:20:2085:20:2093 | ... > ... | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | +| UseUseExplosion.rb:20:2096:20:2099 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | | UseUseExplosion.rb:20:2096:20:2099 | then ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | +| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(self) | +| UseUseExplosion.rb:20:2102:20:2112 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2081:20:2116 | SSA phi read(x) | | UseUseExplosion.rb:20:2102:20:2112 | else ... | UseUseExplosion.rb:20:2081:20:2116 | if ... | | UseUseExplosion.rb:20:2107:20:2112 | call to use | UseUseExplosion.rb:20:2102:20:2112 | else ... | +| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(self) | +| UseUseExplosion.rb:20:2118:20:2128 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2061:20:2132 | SSA phi read(x) | | UseUseExplosion.rb:20:2118:20:2128 | else ... | UseUseExplosion.rb:20:2061:20:2132 | if ... | | UseUseExplosion.rb:20:2123:20:2128 | call to use | UseUseExplosion.rb:20:2118:20:2128 | else ... | +| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(self) | +| UseUseExplosion.rb:20:2134:20:2144 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2041:20:2148 | SSA phi read(x) | | UseUseExplosion.rb:20:2134:20:2144 | else ... | UseUseExplosion.rb:20:2041:20:2148 | if ... | | UseUseExplosion.rb:20:2139:20:2144 | call to use | UseUseExplosion.rb:20:2134:20:2144 | else ... | +| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(self) | +| UseUseExplosion.rb:20:2150:20:2160 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2021:20:2164 | SSA phi read(x) | | UseUseExplosion.rb:20:2150:20:2160 | else ... | UseUseExplosion.rb:20:2021:20:2164 | if ... | | UseUseExplosion.rb:20:2155:20:2160 | call to use | UseUseExplosion.rb:20:2150:20:2160 | else ... | +| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(self) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(self) | +| UseUseExplosion.rb:20:2166:20:2176 | [input] SSA phi read(x) | UseUseExplosion.rb:20:2001:20:2180 | SSA phi read(x) | | UseUseExplosion.rb:20:2166:20:2176 | else ... | UseUseExplosion.rb:20:2001:20:2180 | if ... | | UseUseExplosion.rb:20:2171:20:2176 | call to use | UseUseExplosion.rb:20:2166:20:2176 | else ... | +| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(self) | +| UseUseExplosion.rb:20:2182:20:2192 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1981:20:2196 | SSA phi read(x) | | UseUseExplosion.rb:20:2182:20:2192 | else ... | UseUseExplosion.rb:20:1981:20:2196 | if ... | | UseUseExplosion.rb:20:2187:20:2192 | call to use | UseUseExplosion.rb:20:2182:20:2192 | else ... | +| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(self) | +| UseUseExplosion.rb:20:2198:20:2208 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1961:20:2212 | SSA phi read(x) | | UseUseExplosion.rb:20:2198:20:2208 | else ... | UseUseExplosion.rb:20:1961:20:2212 | if ... | | UseUseExplosion.rb:20:2203:20:2208 | call to use | UseUseExplosion.rb:20:2198:20:2208 | else ... | +| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(self) | +| UseUseExplosion.rb:20:2214:20:2224 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1941:20:2228 | SSA phi read(x) | | UseUseExplosion.rb:20:2214:20:2224 | else ... | UseUseExplosion.rb:20:1941:20:2228 | if ... | | UseUseExplosion.rb:20:2219:20:2224 | call to use | UseUseExplosion.rb:20:2214:20:2224 | else ... | +| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(self) | +| UseUseExplosion.rb:20:2230:20:2240 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1921:20:2244 | SSA phi read(x) | | UseUseExplosion.rb:20:2230:20:2240 | else ... | UseUseExplosion.rb:20:1921:20:2244 | if ... | | UseUseExplosion.rb:20:2235:20:2240 | call to use | UseUseExplosion.rb:20:2230:20:2240 | else ... | +| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(self) | +| UseUseExplosion.rb:20:2246:20:2256 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1900:20:2260 | SSA phi read(x) | | UseUseExplosion.rb:20:2246:20:2256 | else ... | UseUseExplosion.rb:20:1900:20:2260 | if ... | | UseUseExplosion.rb:20:2251:20:2256 | call to use | UseUseExplosion.rb:20:2246:20:2256 | else ... | +| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(self) | +| UseUseExplosion.rb:20:2262:20:2272 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1879:20:2276 | SSA phi read(x) | | UseUseExplosion.rb:20:2262:20:2272 | else ... | UseUseExplosion.rb:20:1879:20:2276 | if ... | | UseUseExplosion.rb:20:2267:20:2272 | call to use | UseUseExplosion.rb:20:2262:20:2272 | else ... | +| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(self) | +| UseUseExplosion.rb:20:2278:20:2288 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1858:20:2292 | SSA phi read(x) | | UseUseExplosion.rb:20:2278:20:2288 | else ... | UseUseExplosion.rb:20:1858:20:2292 | if ... | | UseUseExplosion.rb:20:2283:20:2288 | call to use | UseUseExplosion.rb:20:2278:20:2288 | else ... | +| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(self) | +| UseUseExplosion.rb:20:2294:20:2304 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1837:20:2308 | SSA phi read(x) | | UseUseExplosion.rb:20:2294:20:2304 | else ... | UseUseExplosion.rb:20:1837:20:2308 | if ... | | UseUseExplosion.rb:20:2299:20:2304 | call to use | UseUseExplosion.rb:20:2294:20:2304 | else ... | +| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(self) | +| UseUseExplosion.rb:20:2310:20:2320 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1816:20:2324 | SSA phi read(x) | | UseUseExplosion.rb:20:2310:20:2320 | else ... | UseUseExplosion.rb:20:1816:20:2324 | if ... | | UseUseExplosion.rb:20:2315:20:2320 | call to use | UseUseExplosion.rb:20:2310:20:2320 | else ... | +| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(self) | +| UseUseExplosion.rb:20:2326:20:2336 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1795:20:2340 | SSA phi read(x) | | UseUseExplosion.rb:20:2326:20:2336 | else ... | UseUseExplosion.rb:20:1795:20:2340 | if ... | | UseUseExplosion.rb:20:2331:20:2336 | call to use | UseUseExplosion.rb:20:2326:20:2336 | else ... | +| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(self) | +| UseUseExplosion.rb:20:2342:20:2352 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1774:20:2356 | SSA phi read(x) | | UseUseExplosion.rb:20:2342:20:2352 | else ... | UseUseExplosion.rb:20:1774:20:2356 | if ... | | UseUseExplosion.rb:20:2347:20:2352 | call to use | UseUseExplosion.rb:20:2342:20:2352 | else ... | +| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(self) | +| UseUseExplosion.rb:20:2358:20:2368 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1753:20:2372 | SSA phi read(x) | | UseUseExplosion.rb:20:2358:20:2368 | else ... | UseUseExplosion.rb:20:1753:20:2372 | if ... | | UseUseExplosion.rb:20:2363:20:2368 | call to use | UseUseExplosion.rb:20:2358:20:2368 | else ... | +| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(self) | +| UseUseExplosion.rb:20:2374:20:2384 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1732:20:2388 | SSA phi read(x) | | UseUseExplosion.rb:20:2374:20:2384 | else ... | UseUseExplosion.rb:20:1732:20:2388 | if ... | | UseUseExplosion.rb:20:2379:20:2384 | call to use | UseUseExplosion.rb:20:2374:20:2384 | else ... | +| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(self) | +| UseUseExplosion.rb:20:2390:20:2400 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1711:20:2404 | SSA phi read(x) | | UseUseExplosion.rb:20:2390:20:2400 | else ... | UseUseExplosion.rb:20:1711:20:2404 | if ... | | UseUseExplosion.rb:20:2395:20:2400 | call to use | UseUseExplosion.rb:20:2390:20:2400 | else ... | +| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(self) | +| UseUseExplosion.rb:20:2406:20:2416 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1690:20:2420 | SSA phi read(x) | | UseUseExplosion.rb:20:2406:20:2416 | else ... | UseUseExplosion.rb:20:1690:20:2420 | if ... | | UseUseExplosion.rb:20:2411:20:2416 | call to use | UseUseExplosion.rb:20:2406:20:2416 | else ... | +| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(self) | +| UseUseExplosion.rb:20:2422:20:2432 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1669:20:2436 | SSA phi read(x) | | UseUseExplosion.rb:20:2422:20:2432 | else ... | UseUseExplosion.rb:20:1669:20:2436 | if ... | | UseUseExplosion.rb:20:2427:20:2432 | call to use | UseUseExplosion.rb:20:2422:20:2432 | else ... | +| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(self) | +| UseUseExplosion.rb:20:2438:20:2448 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1648:20:2452 | SSA phi read(x) | | UseUseExplosion.rb:20:2438:20:2448 | else ... | UseUseExplosion.rb:20:1648:20:2452 | if ... | | UseUseExplosion.rb:20:2443:20:2448 | call to use | UseUseExplosion.rb:20:2438:20:2448 | else ... | +| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(self) | +| UseUseExplosion.rb:20:2454:20:2464 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1627:20:2468 | SSA phi read(x) | | UseUseExplosion.rb:20:2454:20:2464 | else ... | UseUseExplosion.rb:20:1627:20:2468 | if ... | | UseUseExplosion.rb:20:2459:20:2464 | call to use | UseUseExplosion.rb:20:2454:20:2464 | else ... | +| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(self) | +| UseUseExplosion.rb:20:2470:20:2480 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1606:20:2484 | SSA phi read(x) | | UseUseExplosion.rb:20:2470:20:2480 | else ... | UseUseExplosion.rb:20:1606:20:2484 | if ... | | UseUseExplosion.rb:20:2475:20:2480 | call to use | UseUseExplosion.rb:20:2470:20:2480 | else ... | +| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(self) | +| UseUseExplosion.rb:20:2486:20:2496 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1585:20:2500 | SSA phi read(x) | | UseUseExplosion.rb:20:2486:20:2496 | else ... | UseUseExplosion.rb:20:1585:20:2500 | if ... | | UseUseExplosion.rb:20:2491:20:2496 | call to use | UseUseExplosion.rb:20:2486:20:2496 | else ... | +| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(self) | +| UseUseExplosion.rb:20:2502:20:2512 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1564:20:2516 | SSA phi read(x) | | UseUseExplosion.rb:20:2502:20:2512 | else ... | UseUseExplosion.rb:20:1564:20:2516 | if ... | | UseUseExplosion.rb:20:2507:20:2512 | call to use | UseUseExplosion.rb:20:2502:20:2512 | else ... | +| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(self) | +| UseUseExplosion.rb:20:2518:20:2528 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1543:20:2532 | SSA phi read(x) | | UseUseExplosion.rb:20:2518:20:2528 | else ... | UseUseExplosion.rb:20:1543:20:2532 | if ... | | UseUseExplosion.rb:20:2523:20:2528 | call to use | UseUseExplosion.rb:20:2518:20:2528 | else ... | +| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(self) | +| UseUseExplosion.rb:20:2534:20:2544 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1522:20:2548 | SSA phi read(x) | | UseUseExplosion.rb:20:2534:20:2544 | else ... | UseUseExplosion.rb:20:1522:20:2548 | if ... | | UseUseExplosion.rb:20:2539:20:2544 | call to use | UseUseExplosion.rb:20:2534:20:2544 | else ... | +| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(self) | +| UseUseExplosion.rb:20:2550:20:2560 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1501:20:2564 | SSA phi read(x) | | UseUseExplosion.rb:20:2550:20:2560 | else ... | UseUseExplosion.rb:20:1501:20:2564 | if ... | | UseUseExplosion.rb:20:2555:20:2560 | call to use | UseUseExplosion.rb:20:2550:20:2560 | else ... | +| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(self) | +| UseUseExplosion.rb:20:2566:20:2576 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1480:20:2580 | SSA phi read(x) | | UseUseExplosion.rb:20:2566:20:2576 | else ... | UseUseExplosion.rb:20:1480:20:2580 | if ... | | UseUseExplosion.rb:20:2571:20:2576 | call to use | UseUseExplosion.rb:20:2566:20:2576 | else ... | +| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(self) | +| UseUseExplosion.rb:20:2582:20:2592 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1459:20:2596 | SSA phi read(x) | | UseUseExplosion.rb:20:2582:20:2592 | else ... | UseUseExplosion.rb:20:1459:20:2596 | if ... | | UseUseExplosion.rb:20:2587:20:2592 | call to use | UseUseExplosion.rb:20:2582:20:2592 | else ... | +| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(self) | +| UseUseExplosion.rb:20:2598:20:2608 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1438:20:2612 | SSA phi read(x) | | UseUseExplosion.rb:20:2598:20:2608 | else ... | UseUseExplosion.rb:20:1438:20:2612 | if ... | | UseUseExplosion.rb:20:2603:20:2608 | call to use | UseUseExplosion.rb:20:2598:20:2608 | else ... | +| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(self) | +| UseUseExplosion.rb:20:2614:20:2624 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1417:20:2628 | SSA phi read(x) | | UseUseExplosion.rb:20:2614:20:2624 | else ... | UseUseExplosion.rb:20:1417:20:2628 | if ... | | UseUseExplosion.rb:20:2619:20:2624 | call to use | UseUseExplosion.rb:20:2614:20:2624 | else ... | +| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(self) | +| UseUseExplosion.rb:20:2630:20:2640 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1396:20:2644 | SSA phi read(x) | | UseUseExplosion.rb:20:2630:20:2640 | else ... | UseUseExplosion.rb:20:1396:20:2644 | if ... | | UseUseExplosion.rb:20:2635:20:2640 | call to use | UseUseExplosion.rb:20:2630:20:2640 | else ... | +| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(self) | +| UseUseExplosion.rb:20:2646:20:2656 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1375:20:2660 | SSA phi read(x) | | UseUseExplosion.rb:20:2646:20:2656 | else ... | UseUseExplosion.rb:20:1375:20:2660 | if ... | | UseUseExplosion.rb:20:2651:20:2656 | call to use | UseUseExplosion.rb:20:2646:20:2656 | else ... | +| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(self) | +| UseUseExplosion.rb:20:2662:20:2672 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1354:20:2676 | SSA phi read(x) | | UseUseExplosion.rb:20:2662:20:2672 | else ... | UseUseExplosion.rb:20:1354:20:2676 | if ... | | UseUseExplosion.rb:20:2667:20:2672 | call to use | UseUseExplosion.rb:20:2662:20:2672 | else ... | +| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(self) | +| UseUseExplosion.rb:20:2678:20:2688 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1333:20:2692 | SSA phi read(x) | | UseUseExplosion.rb:20:2678:20:2688 | else ... | UseUseExplosion.rb:20:1333:20:2692 | if ... | | UseUseExplosion.rb:20:2683:20:2688 | call to use | UseUseExplosion.rb:20:2678:20:2688 | else ... | +| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(self) | +| UseUseExplosion.rb:20:2694:20:2704 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1312:20:2708 | SSA phi read(x) | | UseUseExplosion.rb:20:2694:20:2704 | else ... | UseUseExplosion.rb:20:1312:20:2708 | if ... | | UseUseExplosion.rb:20:2699:20:2704 | call to use | UseUseExplosion.rb:20:2694:20:2704 | else ... | +| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(self) | +| UseUseExplosion.rb:20:2710:20:2720 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1291:20:2724 | SSA phi read(x) | | UseUseExplosion.rb:20:2710:20:2720 | else ... | UseUseExplosion.rb:20:1291:20:2724 | if ... | | UseUseExplosion.rb:20:2715:20:2720 | call to use | UseUseExplosion.rb:20:2710:20:2720 | else ... | +| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(self) | +| UseUseExplosion.rb:20:2726:20:2736 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1270:20:2740 | SSA phi read(x) | | UseUseExplosion.rb:20:2726:20:2736 | else ... | UseUseExplosion.rb:20:1270:20:2740 | if ... | | UseUseExplosion.rb:20:2731:20:2736 | call to use | UseUseExplosion.rb:20:2726:20:2736 | else ... | +| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(self) | +| UseUseExplosion.rb:20:2742:20:2752 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1249:20:2756 | SSA phi read(x) | | UseUseExplosion.rb:20:2742:20:2752 | else ... | UseUseExplosion.rb:20:1249:20:2756 | if ... | | UseUseExplosion.rb:20:2747:20:2752 | call to use | UseUseExplosion.rb:20:2742:20:2752 | else ... | +| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(self) | +| UseUseExplosion.rb:20:2758:20:2768 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1228:20:2772 | SSA phi read(x) | | UseUseExplosion.rb:20:2758:20:2768 | else ... | UseUseExplosion.rb:20:1228:20:2772 | if ... | | UseUseExplosion.rb:20:2763:20:2768 | call to use | UseUseExplosion.rb:20:2758:20:2768 | else ... | +| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(self) | +| UseUseExplosion.rb:20:2774:20:2784 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1207:20:2788 | SSA phi read(x) | | UseUseExplosion.rb:20:2774:20:2784 | else ... | UseUseExplosion.rb:20:1207:20:2788 | if ... | | UseUseExplosion.rb:20:2779:20:2784 | call to use | UseUseExplosion.rb:20:2774:20:2784 | else ... | +| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(self) | +| UseUseExplosion.rb:20:2790:20:2800 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1186:20:2804 | SSA phi read(x) | | UseUseExplosion.rb:20:2790:20:2800 | else ... | UseUseExplosion.rb:20:1186:20:2804 | if ... | | UseUseExplosion.rb:20:2795:20:2800 | call to use | UseUseExplosion.rb:20:2790:20:2800 | else ... | +| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(self) | +| UseUseExplosion.rb:20:2806:20:2816 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1165:20:2820 | SSA phi read(x) | | UseUseExplosion.rb:20:2806:20:2816 | else ... | UseUseExplosion.rb:20:1165:20:2820 | if ... | | UseUseExplosion.rb:20:2811:20:2816 | call to use | UseUseExplosion.rb:20:2806:20:2816 | else ... | +| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(self) | +| UseUseExplosion.rb:20:2822:20:2832 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1144:20:2836 | SSA phi read(x) | | UseUseExplosion.rb:20:2822:20:2832 | else ... | UseUseExplosion.rb:20:1144:20:2836 | if ... | | UseUseExplosion.rb:20:2827:20:2832 | call to use | UseUseExplosion.rb:20:2822:20:2832 | else ... | +| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(self) | +| UseUseExplosion.rb:20:2838:20:2848 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1123:20:2852 | SSA phi read(x) | | UseUseExplosion.rb:20:2838:20:2848 | else ... | UseUseExplosion.rb:20:1123:20:2852 | if ... | | UseUseExplosion.rb:20:2843:20:2848 | call to use | UseUseExplosion.rb:20:2838:20:2848 | else ... | +| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(self) | +| UseUseExplosion.rb:20:2854:20:2864 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1102:20:2868 | SSA phi read(x) | | UseUseExplosion.rb:20:2854:20:2864 | else ... | UseUseExplosion.rb:20:1102:20:2868 | if ... | | UseUseExplosion.rb:20:2859:20:2864 | call to use | UseUseExplosion.rb:20:2854:20:2864 | else ... | +| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(self) | +| UseUseExplosion.rb:20:2870:20:2880 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1081:20:2884 | SSA phi read(x) | | UseUseExplosion.rb:20:2870:20:2880 | else ... | UseUseExplosion.rb:20:1081:20:2884 | if ... | | UseUseExplosion.rb:20:2875:20:2880 | call to use | UseUseExplosion.rb:20:2870:20:2880 | else ... | +| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(self) | +| UseUseExplosion.rb:20:2886:20:2896 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1060:20:2900 | SSA phi read(x) | | UseUseExplosion.rb:20:2886:20:2896 | else ... | UseUseExplosion.rb:20:1060:20:2900 | if ... | | UseUseExplosion.rb:20:2891:20:2896 | call to use | UseUseExplosion.rb:20:2886:20:2896 | else ... | +| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(self) | +| UseUseExplosion.rb:20:2902:20:2912 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1039:20:2916 | SSA phi read(x) | | UseUseExplosion.rb:20:2902:20:2912 | else ... | UseUseExplosion.rb:20:1039:20:2916 | if ... | | UseUseExplosion.rb:20:2907:20:2912 | call to use | UseUseExplosion.rb:20:2902:20:2912 | else ... | +| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(self) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(self) | +| UseUseExplosion.rb:20:2918:20:2928 | [input] SSA phi read(x) | UseUseExplosion.rb:20:1018:20:2932 | SSA phi read(x) | | UseUseExplosion.rb:20:2918:20:2928 | else ... | UseUseExplosion.rb:20:1018:20:2932 | if ... | | UseUseExplosion.rb:20:2923:20:2928 | call to use | UseUseExplosion.rb:20:2918:20:2928 | else ... | +| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(self) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(self) | +| UseUseExplosion.rb:20:2934:20:2944 | [input] SSA phi read(x) | UseUseExplosion.rb:20:997:20:2948 | SSA phi read(x) | | UseUseExplosion.rb:20:2934:20:2944 | else ... | UseUseExplosion.rb:20:997:20:2948 | if ... | | UseUseExplosion.rb:20:2939:20:2944 | call to use | UseUseExplosion.rb:20:2934:20:2944 | else ... | +| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(self) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(self) | +| UseUseExplosion.rb:20:2950:20:2960 | [input] SSA phi read(x) | UseUseExplosion.rb:20:976:20:2964 | SSA phi read(x) | | UseUseExplosion.rb:20:2950:20:2960 | else ... | UseUseExplosion.rb:20:976:20:2964 | if ... | | UseUseExplosion.rb:20:2955:20:2960 | call to use | UseUseExplosion.rb:20:2950:20:2960 | else ... | +| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(self) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(self) | +| UseUseExplosion.rb:20:2966:20:2976 | [input] SSA phi read(x) | UseUseExplosion.rb:20:955:20:2980 | SSA phi read(x) | | UseUseExplosion.rb:20:2966:20:2976 | else ... | UseUseExplosion.rb:20:955:20:2980 | if ... | | UseUseExplosion.rb:20:2971:20:2976 | call to use | UseUseExplosion.rb:20:2966:20:2976 | else ... | +| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(self) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(self) | +| UseUseExplosion.rb:20:2982:20:2992 | [input] SSA phi read(x) | UseUseExplosion.rb:20:934:20:2996 | SSA phi read(x) | | UseUseExplosion.rb:20:2982:20:2992 | else ... | UseUseExplosion.rb:20:934:20:2996 | if ... | | UseUseExplosion.rb:20:2987:20:2992 | call to use | UseUseExplosion.rb:20:2982:20:2992 | else ... | +| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(self) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(self) | +| UseUseExplosion.rb:20:2998:20:3008 | [input] SSA phi read(x) | UseUseExplosion.rb:20:913:20:3012 | SSA phi read(x) | | UseUseExplosion.rb:20:2998:20:3008 | else ... | UseUseExplosion.rb:20:913:20:3012 | if ... | | UseUseExplosion.rb:20:3003:20:3008 | call to use | UseUseExplosion.rb:20:2998:20:3008 | else ... | +| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(self) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(self) | +| UseUseExplosion.rb:20:3014:20:3024 | [input] SSA phi read(x) | UseUseExplosion.rb:20:892:20:3028 | SSA phi read(x) | | UseUseExplosion.rb:20:3014:20:3024 | else ... | UseUseExplosion.rb:20:892:20:3028 | if ... | | UseUseExplosion.rb:20:3019:20:3024 | call to use | UseUseExplosion.rb:20:3014:20:3024 | else ... | +| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(self) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(self) | +| UseUseExplosion.rb:20:3030:20:3040 | [input] SSA phi read(x) | UseUseExplosion.rb:20:871:20:3044 | SSA phi read(x) | | UseUseExplosion.rb:20:3030:20:3040 | else ... | UseUseExplosion.rb:20:871:20:3044 | if ... | | UseUseExplosion.rb:20:3035:20:3040 | call to use | UseUseExplosion.rb:20:3030:20:3040 | else ... | +| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(self) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(self) | +| UseUseExplosion.rb:20:3046:20:3056 | [input] SSA phi read(x) | UseUseExplosion.rb:20:850:20:3060 | SSA phi read(x) | | UseUseExplosion.rb:20:3046:20:3056 | else ... | UseUseExplosion.rb:20:850:20:3060 | if ... | | UseUseExplosion.rb:20:3051:20:3056 | call to use | UseUseExplosion.rb:20:3046:20:3056 | else ... | +| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(self) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(self) | +| UseUseExplosion.rb:20:3062:20:3072 | [input] SSA phi read(x) | UseUseExplosion.rb:20:829:20:3076 | SSA phi read(x) | | UseUseExplosion.rb:20:3062:20:3072 | else ... | UseUseExplosion.rb:20:829:20:3076 | if ... | | UseUseExplosion.rb:20:3067:20:3072 | call to use | UseUseExplosion.rb:20:3062:20:3072 | else ... | +| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(self) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(self) | +| UseUseExplosion.rb:20:3078:20:3088 | [input] SSA phi read(x) | UseUseExplosion.rb:20:808:20:3092 | SSA phi read(x) | | UseUseExplosion.rb:20:3078:20:3088 | else ... | UseUseExplosion.rb:20:808:20:3092 | if ... | | UseUseExplosion.rb:20:3083:20:3088 | call to use | UseUseExplosion.rb:20:3078:20:3088 | else ... | +| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(self) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(self) | +| UseUseExplosion.rb:20:3094:20:3104 | [input] SSA phi read(x) | UseUseExplosion.rb:20:787:20:3108 | SSA phi read(x) | | UseUseExplosion.rb:20:3094:20:3104 | else ... | UseUseExplosion.rb:20:787:20:3108 | if ... | | UseUseExplosion.rb:20:3099:20:3104 | call to use | UseUseExplosion.rb:20:3094:20:3104 | else ... | +| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(self) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(self) | +| UseUseExplosion.rb:20:3110:20:3120 | [input] SSA phi read(x) | UseUseExplosion.rb:20:766:20:3124 | SSA phi read(x) | | UseUseExplosion.rb:20:3110:20:3120 | else ... | UseUseExplosion.rb:20:766:20:3124 | if ... | | UseUseExplosion.rb:20:3115:20:3120 | call to use | UseUseExplosion.rb:20:3110:20:3120 | else ... | +| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(self) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(self) | +| UseUseExplosion.rb:20:3126:20:3136 | [input] SSA phi read(x) | UseUseExplosion.rb:20:745:20:3140 | SSA phi read(x) | | UseUseExplosion.rb:20:3126:20:3136 | else ... | UseUseExplosion.rb:20:745:20:3140 | if ... | | UseUseExplosion.rb:20:3131:20:3136 | call to use | UseUseExplosion.rb:20:3126:20:3136 | else ... | +| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(self) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(self) | +| UseUseExplosion.rb:20:3142:20:3152 | [input] SSA phi read(x) | UseUseExplosion.rb:20:724:20:3156 | SSA phi read(x) | | UseUseExplosion.rb:20:3142:20:3152 | else ... | UseUseExplosion.rb:20:724:20:3156 | if ... | | UseUseExplosion.rb:20:3147:20:3152 | call to use | UseUseExplosion.rb:20:3142:20:3152 | else ... | +| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(self) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(self) | +| UseUseExplosion.rb:20:3158:20:3168 | [input] SSA phi read(x) | UseUseExplosion.rb:20:703:20:3172 | SSA phi read(x) | | UseUseExplosion.rb:20:3158:20:3168 | else ... | UseUseExplosion.rb:20:703:20:3172 | if ... | | UseUseExplosion.rb:20:3163:20:3168 | call to use | UseUseExplosion.rb:20:3158:20:3168 | else ... | +| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(self) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(self) | +| UseUseExplosion.rb:20:3174:20:3184 | [input] SSA phi read(x) | UseUseExplosion.rb:20:682:20:3188 | SSA phi read(x) | | UseUseExplosion.rb:20:3174:20:3184 | else ... | UseUseExplosion.rb:20:682:20:3188 | if ... | | UseUseExplosion.rb:20:3179:20:3184 | call to use | UseUseExplosion.rb:20:3174:20:3184 | else ... | +| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(self) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(self) | +| UseUseExplosion.rb:20:3190:20:3200 | [input] SSA phi read(x) | UseUseExplosion.rb:20:661:20:3204 | SSA phi read(x) | | UseUseExplosion.rb:20:3190:20:3200 | else ... | UseUseExplosion.rb:20:661:20:3204 | if ... | | UseUseExplosion.rb:20:3195:20:3200 | call to use | UseUseExplosion.rb:20:3190:20:3200 | else ... | +| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(self) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(self) | +| UseUseExplosion.rb:20:3206:20:3216 | [input] SSA phi read(x) | UseUseExplosion.rb:20:640:20:3220 | SSA phi read(x) | | UseUseExplosion.rb:20:3206:20:3216 | else ... | UseUseExplosion.rb:20:640:20:3220 | if ... | | UseUseExplosion.rb:20:3211:20:3216 | call to use | UseUseExplosion.rb:20:3206:20:3216 | else ... | +| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(self) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(self) | +| UseUseExplosion.rb:20:3222:20:3232 | [input] SSA phi read(x) | UseUseExplosion.rb:20:619:20:3236 | SSA phi read(x) | | UseUseExplosion.rb:20:3222:20:3232 | else ... | UseUseExplosion.rb:20:619:20:3236 | if ... | | UseUseExplosion.rb:20:3227:20:3232 | call to use | UseUseExplosion.rb:20:3222:20:3232 | else ... | +| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(self) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(self) | +| UseUseExplosion.rb:20:3238:20:3248 | [input] SSA phi read(x) | UseUseExplosion.rb:20:598:20:3252 | SSA phi read(x) | | UseUseExplosion.rb:20:3238:20:3248 | else ... | UseUseExplosion.rb:20:598:20:3252 | if ... | | UseUseExplosion.rb:20:3243:20:3248 | call to use | UseUseExplosion.rb:20:3238:20:3248 | else ... | +| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(self) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(self) | +| UseUseExplosion.rb:20:3254:20:3264 | [input] SSA phi read(x) | UseUseExplosion.rb:20:577:20:3268 | SSA phi read(x) | | UseUseExplosion.rb:20:3254:20:3264 | else ... | UseUseExplosion.rb:20:577:20:3268 | if ... | | UseUseExplosion.rb:20:3259:20:3264 | call to use | UseUseExplosion.rb:20:3254:20:3264 | else ... | +| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(self) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(self) | +| UseUseExplosion.rb:20:3270:20:3280 | [input] SSA phi read(x) | UseUseExplosion.rb:20:556:20:3284 | SSA phi read(x) | | UseUseExplosion.rb:20:3270:20:3280 | else ... | UseUseExplosion.rb:20:556:20:3284 | if ... | | UseUseExplosion.rb:20:3275:20:3280 | call to use | UseUseExplosion.rb:20:3270:20:3280 | else ... | +| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(self) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(self) | +| UseUseExplosion.rb:20:3286:20:3296 | [input] SSA phi read(x) | UseUseExplosion.rb:20:535:20:3300 | SSA phi read(x) | | UseUseExplosion.rb:20:3286:20:3296 | else ... | UseUseExplosion.rb:20:535:20:3300 | if ... | | UseUseExplosion.rb:20:3291:20:3296 | call to use | UseUseExplosion.rb:20:3286:20:3296 | else ... | +| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(self) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(self) | +| UseUseExplosion.rb:20:3302:20:3312 | [input] SSA phi read(x) | UseUseExplosion.rb:20:514:20:3316 | SSA phi read(x) | | UseUseExplosion.rb:20:3302:20:3312 | else ... | UseUseExplosion.rb:20:514:20:3316 | if ... | | UseUseExplosion.rb:20:3307:20:3312 | call to use | UseUseExplosion.rb:20:3302:20:3312 | else ... | +| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(self) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(self) | +| UseUseExplosion.rb:20:3318:20:3328 | [input] SSA phi read(x) | UseUseExplosion.rb:20:493:20:3332 | SSA phi read(x) | | UseUseExplosion.rb:20:3318:20:3328 | else ... | UseUseExplosion.rb:20:493:20:3332 | if ... | | UseUseExplosion.rb:20:3323:20:3328 | call to use | UseUseExplosion.rb:20:3318:20:3328 | else ... | +| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(self) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(self) | +| UseUseExplosion.rb:20:3334:20:3344 | [input] SSA phi read(x) | UseUseExplosion.rb:20:472:20:3348 | SSA phi read(x) | | UseUseExplosion.rb:20:3334:20:3344 | else ... | UseUseExplosion.rb:20:472:20:3348 | if ... | | UseUseExplosion.rb:20:3339:20:3344 | call to use | UseUseExplosion.rb:20:3334:20:3344 | else ... | +| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(self) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(self) | +| UseUseExplosion.rb:20:3350:20:3360 | [input] SSA phi read(x) | UseUseExplosion.rb:20:451:20:3364 | SSA phi read(x) | | UseUseExplosion.rb:20:3350:20:3360 | else ... | UseUseExplosion.rb:20:451:20:3364 | if ... | | UseUseExplosion.rb:20:3355:20:3360 | call to use | UseUseExplosion.rb:20:3350:20:3360 | else ... | +| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(self) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(self) | +| UseUseExplosion.rb:20:3366:20:3376 | [input] SSA phi read(x) | UseUseExplosion.rb:20:430:20:3380 | SSA phi read(x) | | UseUseExplosion.rb:20:3366:20:3376 | else ... | UseUseExplosion.rb:20:430:20:3380 | if ... | | UseUseExplosion.rb:20:3371:20:3376 | call to use | UseUseExplosion.rb:20:3366:20:3376 | else ... | +| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(self) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(self) | +| UseUseExplosion.rb:20:3382:20:3392 | [input] SSA phi read(x) | UseUseExplosion.rb:20:409:20:3396 | SSA phi read(x) | | UseUseExplosion.rb:20:3382:20:3392 | else ... | UseUseExplosion.rb:20:409:20:3396 | if ... | | UseUseExplosion.rb:20:3387:20:3392 | call to use | UseUseExplosion.rb:20:3382:20:3392 | else ... | +| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(self) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(self) | +| UseUseExplosion.rb:20:3398:20:3408 | [input] SSA phi read(x) | UseUseExplosion.rb:20:388:20:3412 | SSA phi read(x) | | UseUseExplosion.rb:20:3398:20:3408 | else ... | UseUseExplosion.rb:20:388:20:3412 | if ... | | UseUseExplosion.rb:20:3403:20:3408 | call to use | UseUseExplosion.rb:20:3398:20:3408 | else ... | +| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(self) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(self) | +| UseUseExplosion.rb:20:3414:20:3424 | [input] SSA phi read(x) | UseUseExplosion.rb:20:367:20:3428 | SSA phi read(x) | | UseUseExplosion.rb:20:3414:20:3424 | else ... | UseUseExplosion.rb:20:367:20:3428 | if ... | | UseUseExplosion.rb:20:3419:20:3424 | call to use | UseUseExplosion.rb:20:3414:20:3424 | else ... | +| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(self) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(self) | +| UseUseExplosion.rb:20:3430:20:3440 | [input] SSA phi read(x) | UseUseExplosion.rb:20:346:20:3444 | SSA phi read(x) | | UseUseExplosion.rb:20:3430:20:3440 | else ... | UseUseExplosion.rb:20:346:20:3444 | if ... | | UseUseExplosion.rb:20:3435:20:3440 | call to use | UseUseExplosion.rb:20:3430:20:3440 | else ... | +| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(self) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(self) | +| UseUseExplosion.rb:20:3446:20:3456 | [input] SSA phi read(x) | UseUseExplosion.rb:20:325:20:3460 | SSA phi read(x) | | UseUseExplosion.rb:20:3446:20:3456 | else ... | UseUseExplosion.rb:20:325:20:3460 | if ... | | UseUseExplosion.rb:20:3451:20:3456 | call to use | UseUseExplosion.rb:20:3446:20:3456 | else ... | +| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(self) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(self) | +| UseUseExplosion.rb:20:3462:20:3472 | [input] SSA phi read(x) | UseUseExplosion.rb:20:304:20:3476 | SSA phi read(x) | | UseUseExplosion.rb:20:3462:20:3472 | else ... | UseUseExplosion.rb:20:304:20:3476 | if ... | | UseUseExplosion.rb:20:3467:20:3472 | call to use | UseUseExplosion.rb:20:3462:20:3472 | else ... | +| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(self) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(self) | +| UseUseExplosion.rb:20:3478:20:3488 | [input] SSA phi read(x) | UseUseExplosion.rb:20:283:20:3492 | SSA phi read(x) | | UseUseExplosion.rb:20:3478:20:3488 | else ... | UseUseExplosion.rb:20:283:20:3492 | if ... | | UseUseExplosion.rb:20:3483:20:3488 | call to use | UseUseExplosion.rb:20:3478:20:3488 | else ... | +| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(self) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(self) | +| UseUseExplosion.rb:20:3494:20:3504 | [input] SSA phi read(x) | UseUseExplosion.rb:20:262:20:3508 | SSA phi read(x) | | UseUseExplosion.rb:20:3494:20:3504 | else ... | UseUseExplosion.rb:20:262:20:3508 | if ... | | UseUseExplosion.rb:20:3499:20:3504 | call to use | UseUseExplosion.rb:20:3494:20:3504 | else ... | +| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(self) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(self) | +| UseUseExplosion.rb:20:3510:20:3520 | [input] SSA phi read(x) | UseUseExplosion.rb:20:241:20:3524 | SSA phi read(x) | | UseUseExplosion.rb:20:3510:20:3520 | else ... | UseUseExplosion.rb:20:241:20:3524 | if ... | | UseUseExplosion.rb:20:3515:20:3520 | call to use | UseUseExplosion.rb:20:3510:20:3520 | else ... | +| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(self) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(self) | +| UseUseExplosion.rb:20:3526:20:3536 | [input] SSA phi read(x) | UseUseExplosion.rb:20:220:20:3540 | SSA phi read(x) | | UseUseExplosion.rb:20:3526:20:3536 | else ... | UseUseExplosion.rb:20:220:20:3540 | if ... | | UseUseExplosion.rb:20:3531:20:3536 | call to use | UseUseExplosion.rb:20:3526:20:3536 | else ... | +| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(self) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(self) | +| UseUseExplosion.rb:20:3542:20:3552 | [input] SSA phi read(x) | UseUseExplosion.rb:20:199:20:3556 | SSA phi read(x) | | UseUseExplosion.rb:20:3542:20:3552 | else ... | UseUseExplosion.rb:20:199:20:3556 | if ... | | UseUseExplosion.rb:20:3547:20:3552 | call to use | UseUseExplosion.rb:20:3542:20:3552 | else ... | +| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(self) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(self) | +| UseUseExplosion.rb:20:3558:20:3568 | [input] SSA phi read(x) | UseUseExplosion.rb:20:178:20:3572 | SSA phi read(x) | | UseUseExplosion.rb:20:3558:20:3568 | else ... | UseUseExplosion.rb:20:178:20:3572 | if ... | | UseUseExplosion.rb:20:3563:20:3568 | call to use | UseUseExplosion.rb:20:3558:20:3568 | else ... | +| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(self) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(self) | +| UseUseExplosion.rb:20:3574:20:3584 | [input] SSA phi read(x) | UseUseExplosion.rb:20:157:20:3588 | SSA phi read(x) | | UseUseExplosion.rb:20:3574:20:3584 | else ... | UseUseExplosion.rb:20:157:20:3588 | if ... | | UseUseExplosion.rb:20:3579:20:3584 | call to use | UseUseExplosion.rb:20:3574:20:3584 | else ... | +| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(self) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(self) | +| UseUseExplosion.rb:20:3590:20:3600 | [input] SSA phi read(x) | UseUseExplosion.rb:20:136:20:3604 | SSA phi read(x) | | UseUseExplosion.rb:20:3590:20:3600 | else ... | UseUseExplosion.rb:20:136:20:3604 | if ... | | UseUseExplosion.rb:20:3595:20:3600 | call to use | UseUseExplosion.rb:20:3590:20:3600 | else ... | +| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(self) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(self) | +| UseUseExplosion.rb:20:3606:20:3616 | [input] SSA phi read(x) | UseUseExplosion.rb:20:115:20:3620 | SSA phi read(x) | | UseUseExplosion.rb:20:3606:20:3616 | else ... | UseUseExplosion.rb:20:115:20:3620 | if ... | | UseUseExplosion.rb:20:3611:20:3616 | call to use | UseUseExplosion.rb:20:3606:20:3616 | else ... | +| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(self) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(self) | +| UseUseExplosion.rb:20:3622:20:3632 | [input] SSA phi read(x) | UseUseExplosion.rb:20:94:20:3636 | SSA phi read(x) | | UseUseExplosion.rb:20:3622:20:3632 | else ... | UseUseExplosion.rb:20:94:20:3636 | if ... | | UseUseExplosion.rb:20:3627:20:3632 | call to use | UseUseExplosion.rb:20:3622:20:3632 | else ... | +| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(self) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(self) | +| UseUseExplosion.rb:20:3638:20:3648 | [input] SSA phi read(x) | UseUseExplosion.rb:20:73:20:3652 | SSA phi read(x) | | UseUseExplosion.rb:20:3638:20:3648 | else ... | UseUseExplosion.rb:20:73:20:3652 | if ... | | UseUseExplosion.rb:20:3643:20:3648 | call to use | UseUseExplosion.rb:20:3638:20:3648 | else ... | +| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(self) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(self) | +| UseUseExplosion.rb:20:3654:20:3664 | [input] SSA phi read(x) | UseUseExplosion.rb:20:52:20:3668 | SSA phi read(x) | | UseUseExplosion.rb:20:3654:20:3664 | else ... | UseUseExplosion.rb:20:52:20:3668 | if ... | | UseUseExplosion.rb:20:3659:20:3664 | call to use | UseUseExplosion.rb:20:3654:20:3664 | else ... | +| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(self) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(self) | +| UseUseExplosion.rb:20:3670:20:3680 | [input] SSA phi read(x) | UseUseExplosion.rb:20:31:20:3684 | SSA phi read(x) | | UseUseExplosion.rb:20:3670:20:3680 | else ... | UseUseExplosion.rb:20:31:20:3684 | if ... | | UseUseExplosion.rb:20:3675:20:3680 | call to use | UseUseExplosion.rb:20:3670:20:3680 | else ... | +| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(self) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(self) | +| UseUseExplosion.rb:20:3686:20:3696 | [input] SSA phi read(x) | UseUseExplosion.rb:20:9:20:3700 | SSA phi read(x) | | UseUseExplosion.rb:20:3686:20:3696 | else ... | UseUseExplosion.rb:20:9:20:3700 | if ... | | UseUseExplosion.rb:20:3691:20:3696 | call to use | UseUseExplosion.rb:20:3686:20:3696 | else ... | | UseUseExplosion.rb:21:13:21:17 | @prop | UseUseExplosion.rb:21:13:21:23 | ... > ... | @@ -2889,12 +3289,14 @@ | local_dataflow.rb:10:5:13:3 | call to each | local_dataflow.rb:10:5:13:3 | ... | | local_dataflow.rb:10:5:13:3 | synthetic splat parameter | local_dataflow.rb:10:5:13:3 | __synth__0__1 | | local_dataflow.rb:10:9:10:9 | ... = ... | local_dataflow.rb:10:9:10:9 | if ... | +| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | +| local_dataflow.rb:10:9:10:9 | [input] phi | local_dataflow.rb:10:9:10:9 | phi | | local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [false] ! ... | | local_dataflow.rb:10:9:10:9 | defined? ... | local_dataflow.rb:10:9:10:9 | [true] ! ... | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | ... = ... | | local_dataflow.rb:10:9:10:9 | nil | local_dataflow.rb:10:9:10:9 | x | +| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | [input] phi | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | defined? ... | -| local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:10:9:10:9 | phi | | local_dataflow.rb:10:9:10:9 | x | local_dataflow.rb:12:5:12:5 | x | | local_dataflow.rb:10:14:10:18 | [post] array | local_dataflow.rb:15:10:15:14 | array | | local_dataflow.rb:10:14:10:18 | array | local_dataflow.rb:15:10:15:14 | array | @@ -2908,12 +3310,14 @@ | local_dataflow.rb:15:1:17:3 | call to each | local_dataflow.rb:15:1:17:3 | ... | | local_dataflow.rb:15:1:17:3 | synthetic splat parameter | local_dataflow.rb:15:1:17:3 | __synth__0__1 | | local_dataflow.rb:15:5:15:5 | ... = ... | local_dataflow.rb:15:5:15:5 | if ... | +| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | +| local_dataflow.rb:15:5:15:5 | [input] phi | local_dataflow.rb:15:5:15:5 | phi | | local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [false] ! ... | | local_dataflow.rb:15:5:15:5 | defined? ... | local_dataflow.rb:15:5:15:5 | [true] ! ... | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | ... = ... | | local_dataflow.rb:15:5:15:5 | nil | local_dataflow.rb:15:5:15:5 | x | +| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | [input] phi | | local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | defined? ... | -| local_dataflow.rb:15:5:15:5 | x | local_dataflow.rb:15:5:15:5 | phi | | local_dataflow.rb:15:10:15:14 | [post] array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:15:10:15:14 | array | local_dataflow.rb:19:10:19:14 | array | | local_dataflow.rb:16:9:16:10 | 10 | local_dataflow.rb:16:3:16:10 | break | @@ -2924,12 +3328,14 @@ | local_dataflow.rb:19:1:21:3 | call to each | local_dataflow.rb:19:1:21:3 | ... | | local_dataflow.rb:19:1:21:3 | synthetic splat parameter | local_dataflow.rb:19:1:21:3 | __synth__0__1 | | local_dataflow.rb:19:5:19:5 | ... = ... | local_dataflow.rb:19:5:19:5 | if ... | +| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | +| local_dataflow.rb:19:5:19:5 | [input] phi | local_dataflow.rb:19:5:19:5 | phi | | local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [false] ! ... | | local_dataflow.rb:19:5:19:5 | defined? ... | local_dataflow.rb:19:5:19:5 | [true] ! ... | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | ... = ... | | local_dataflow.rb:19:5:19:5 | nil | local_dataflow.rb:19:5:19:5 | x | +| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | [input] phi | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | defined? ... | -| local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:19:5:19:5 | phi | | local_dataflow.rb:19:5:19:5 | x | local_dataflow.rb:20:6:20:6 | x | | local_dataflow.rb:20:6:20:6 | x | local_dataflow.rb:20:6:20:10 | ... > ... | | local_dataflow.rb:20:10:20:10 | 1 | local_dataflow.rb:20:6:20:10 | ... > ... | @@ -2978,12 +3384,16 @@ | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:63:15:63:15 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:65:6:65:6 | x | | local_dataflow.rb:61:12:61:12 | x | local_dataflow.rb:67:5:67:5 | x | +| local_dataflow.rb:62:10:62:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:62:10:62:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:62:15:62:15 | 3 | local_dataflow.rb:62:10:62:15 | then ... | +| local_dataflow.rb:63:10:63:15 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:63:10:63:15 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:63:15:63:15 | x | local_dataflow.rb:63:10:63:15 | then ... | +| local_dataflow.rb:64:9:65:6 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:64:9:65:6 | then ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:65:6:65:6 | x | local_dataflow.rb:64:9:65:6 | then ... | +| local_dataflow.rb:66:3:67:5 | [input] SSA phi read(x) | local_dataflow.rb:61:7:68:5 | SSA phi read(x) | | local_dataflow.rb:66:3:67:5 | else ... | local_dataflow.rb:61:7:68:5 | case ... | | local_dataflow.rb:67:5:67:5 | x | local_dataflow.rb:66:3:67:5 | else ... | | local_dataflow.rb:69:7:76:5 | case ... | local_dataflow.rb:69:3:76:5 | ... = ... | @@ -3023,6 +3433,7 @@ | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:86:28:86:34 | self | | local_dataflow.rb:78:12:78:20 | self | local_dataflow.rb:87:20:87:26 | self | | local_dataflow.rb:79:13:79:13 | b | local_dataflow.rb:79:25:79:25 | b | +| local_dataflow.rb:79:15:79:45 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:79:15:79:45 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:79:20:79:26 | call to sink | local_dataflow.rb:79:15:79:45 | then ... | | local_dataflow.rb:80:8:80:8 | a | local_dataflow.rb:80:13:80:13 | a | @@ -3030,11 +3441,13 @@ | local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:13:80:17 | ... > ... | | local_dataflow.rb:80:13:80:13 | a | local_dataflow.rb:80:29:80:29 | a | | local_dataflow.rb:80:17:80:17 | 0 | local_dataflow.rb:80:13:80:17 | ... > ... | +| local_dataflow.rb:80:19:80:49 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:80:19:80:49 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:80:24:80:30 | call to sink | local_dataflow.rb:80:19:80:49 | then ... | | local_dataflow.rb:81:9:81:9 | c | local_dataflow.rb:82:12:82:12 | c | | local_dataflow.rb:81:13:81:13 | d | local_dataflow.rb:83:12:83:12 | d | | local_dataflow.rb:81:16:81:16 | e | local_dataflow.rb:84:12:84:12 | e | +| local_dataflow.rb:81:20:84:33 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:81:20:84:33 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:81:25:84:14 | Array | local_dataflow.rb:81:25:84:14 | call to [] | | local_dataflow.rb:81:25:84:14 | call to [] | local_dataflow.rb:81:20:84:33 | then ... | @@ -3044,12 +3457,15 @@ | local_dataflow.rb:83:7:83:13 | [post] self | local_dataflow.rb:84:7:84:13 | self | | local_dataflow.rb:83:7:83:13 | self | local_dataflow.rb:84:7:84:13 | self | | local_dataflow.rb:85:13:85:13 | f | local_dataflow.rb:85:27:85:27 | f | +| local_dataflow.rb:85:17:85:47 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:85:17:85:47 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:85:22:85:28 | call to sink | local_dataflow.rb:85:17:85:47 | then ... | | local_dataflow.rb:86:18:86:18 | g | local_dataflow.rb:86:33:86:33 | g | +| local_dataflow.rb:86:23:86:53 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:86:23:86:53 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:86:28:86:34 | call to sink | local_dataflow.rb:86:23:86:53 | then ... | | local_dataflow.rb:87:10:87:10 | x | local_dataflow.rb:87:25:87:25 | x | +| local_dataflow.rb:87:15:87:48 | [input] SSA phi read(self) | local_dataflow.rb:78:7:88:5 | SSA phi read(self) | | local_dataflow.rb:87:15:87:48 | then ... | local_dataflow.rb:78:7:88:5 | case ... | | local_dataflow.rb:87:25:87:25 | [post] x | local_dataflow.rb:87:29:87:29 | x | | local_dataflow.rb:87:25:87:25 | x | local_dataflow.rb:87:29:87:29 | x | @@ -3057,42 +3473,50 @@ | local_dataflow.rb:92:1:109:3 | self (and_or) | local_dataflow.rb:93:7:93:15 | self | | local_dataflow.rb:92:1:109:3 | self in and_or | local_dataflow.rb:92:1:109:3 | self (and_or) | | local_dataflow.rb:93:3:93:3 | a | local_dataflow.rb:94:8:94:8 | a | +| local_dataflow.rb:93:7:93:15 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | | local_dataflow.rb:93:7:93:15 | [post] self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:15 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | | local_dataflow.rb:93:7:93:15 | self | local_dataflow.rb:93:20:93:28 | self | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:3 | a | | local_dataflow.rb:93:7:93:28 | ... \|\| ... | local_dataflow.rb:93:3:93:28 | ... = ... | | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | local_dataflow.rb:94:3:94:9 | self | +| local_dataflow.rb:93:20:93:28 | [input] SSA phi read(self) | local_dataflow.rb:93:7:93:28 | SSA phi read(self) | | local_dataflow.rb:93:20:93:28 | call to source | local_dataflow.rb:93:7:93:28 | ... \|\| ... | | local_dataflow.rb:94:3:94:9 | [post] self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:94:3:94:9 | self | local_dataflow.rb:95:8:95:16 | self | | local_dataflow.rb:95:3:95:3 | b | local_dataflow.rb:96:8:96:8 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:3 | b | | local_dataflow.rb:95:7:95:30 | ( ... ) | local_dataflow.rb:95:3:95:30 | ... = ... | +| local_dataflow.rb:95:8:95:16 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | | local_dataflow.rb:95:8:95:16 | [post] self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:16 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | | local_dataflow.rb:95:8:95:16 | self | local_dataflow.rb:95:21:95:29 | self | | local_dataflow.rb:95:8:95:29 | ... or ... | local_dataflow.rb:95:7:95:30 | ( ... ) | | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | local_dataflow.rb:96:3:96:9 | self | +| local_dataflow.rb:95:21:95:29 | [input] SSA phi read(self) | local_dataflow.rb:95:8:95:29 | SSA phi read(self) | | local_dataflow.rb:95:21:95:29 | call to source | local_dataflow.rb:95:8:95:29 | ... or ... | | local_dataflow.rb:96:3:96:9 | [post] self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:96:3:96:9 | self | local_dataflow.rb:98:7:98:15 | self | | local_dataflow.rb:98:3:98:3 | a | local_dataflow.rb:99:8:99:8 | a | +| local_dataflow.rb:98:7:98:15 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | | local_dataflow.rb:98:7:98:15 | [post] self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:15 | self | local_dataflow.rb:98:20:98:28 | self | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:3 | a | | local_dataflow.rb:98:7:98:28 | ... && ... | local_dataflow.rb:98:3:98:28 | ... = ... | | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | local_dataflow.rb:99:3:99:9 | self | +| local_dataflow.rb:98:20:98:28 | [input] SSA phi read(self) | local_dataflow.rb:98:7:98:28 | SSA phi read(self) | | local_dataflow.rb:98:20:98:28 | call to source | local_dataflow.rb:98:7:98:28 | ... && ... | | local_dataflow.rb:99:3:99:9 | [post] self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:99:3:99:9 | self | local_dataflow.rb:100:8:100:16 | self | | local_dataflow.rb:100:3:100:3 | b | local_dataflow.rb:101:8:101:8 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:3 | b | | local_dataflow.rb:100:7:100:31 | ( ... ) | local_dataflow.rb:100:3:100:31 | ... = ... | +| local_dataflow.rb:100:8:100:16 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | | local_dataflow.rb:100:8:100:16 | [post] self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:16 | self | local_dataflow.rb:100:22:100:30 | self | | local_dataflow.rb:100:8:100:30 | ... and ... | local_dataflow.rb:100:7:100:31 | ( ... ) | | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | local_dataflow.rb:101:3:101:9 | self | +| local_dataflow.rb:100:22:100:30 | [input] SSA phi read(self) | local_dataflow.rb:100:8:100:30 | SSA phi read(self) | | local_dataflow.rb:100:22:100:30 | call to source | local_dataflow.rb:100:8:100:30 | ... and ... | | local_dataflow.rb:101:3:101:9 | [post] self | local_dataflow.rb:103:7:103:15 | self | | local_dataflow.rb:101:3:101:9 | self | local_dataflow.rb:103:7:103:15 | self | @@ -3101,11 +3525,13 @@ | local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:3 | a | | local_dataflow.rb:103:7:103:15 | call to source | local_dataflow.rb:103:3:103:15 | ... = ... | | local_dataflow.rb:103:7:103:15 | self | local_dataflow.rb:104:9:104:17 | self | +| local_dataflow.rb:104:3:104:3 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:104:5:104:7 | ... \|\| ... | | local_dataflow.rb:104:3:104:3 | a | local_dataflow.rb:105:8:105:8 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:3 | a | | local_dataflow.rb:104:5:104:7 | ... \|\| ... | local_dataflow.rb:104:3:104:17 | ... = ... | | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | local_dataflow.rb:105:3:105:9 | self | +| local_dataflow.rb:104:9:104:17 | [input] SSA phi read(self) | local_dataflow.rb:104:5:104:7 | SSA phi read(self) | | local_dataflow.rb:104:9:104:17 | call to source | local_dataflow.rb:104:5:104:7 | ... \|\| ... | | local_dataflow.rb:105:3:105:9 | [post] self | local_dataflow.rb:106:7:106:15 | self | | local_dataflow.rb:105:3:105:9 | self | local_dataflow.rb:106:7:106:15 | self | @@ -3114,10 +3540,12 @@ | local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:3 | b | | local_dataflow.rb:106:7:106:15 | call to source | local_dataflow.rb:106:3:106:15 | ... = ... | | local_dataflow.rb:106:7:106:15 | self | local_dataflow.rb:107:9:107:17 | self | +| local_dataflow.rb:107:3:107:3 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | | local_dataflow.rb:107:3:107:3 | b | local_dataflow.rb:108:8:108:8 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:3 | b | | local_dataflow.rb:107:5:107:7 | ... && ... | local_dataflow.rb:107:3:107:17 | ... = ... | | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | local_dataflow.rb:108:3:108:9 | self | +| local_dataflow.rb:107:9:107:17 | [input] SSA phi read(self) | local_dataflow.rb:107:5:107:7 | SSA phi read(self) | | local_dataflow.rb:107:9:107:17 | call to source | local_dataflow.rb:107:5:107:7 | ... && ... | | local_dataflow.rb:111:1:114:3 | self (object_dup) | local_dataflow.rb:112:3:112:21 | self | | local_dataflow.rb:111:1:114:3 | self in object_dup | local_dataflow.rb:111:1:114:3 | self (object_dup) | @@ -3172,6 +3600,8 @@ | local_dataflow.rb:132:12:148:10 | then ... | local_dataflow.rb:132:3:149:5 | if ... | | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | local_dataflow.rb:141:9:141:14 | self | | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | local_dataflow.rb:141:13:141:13 | x | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | +| local_dataflow.rb:133:8:133:13 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | | local_dataflow.rb:133:8:133:13 | [post] self | local_dataflow.rb:133:18:133:23 | self | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:8:133:13 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | @@ -3180,29 +3610,43 @@ | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | local_dataflow.rb:134:11:134:11 | x | | local_dataflow.rb:133:12:133:12 | [post] x | local_dataflow.rb:133:22:133:22 | x | | local_dataflow.rb:133:12:133:12 | x | local_dataflow.rb:133:22:133:22 | x | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(self) | local_dataflow.rb:133:8:133:23 | SSA phi read(self) | +| local_dataflow.rb:133:18:133:23 | [input] SSA phi read(x) | local_dataflow.rb:133:8:133:23 | SSA phi read(x) | | local_dataflow.rb:133:18:133:23 | [post] self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [false] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | call to use | local_dataflow.rb:133:8:133:23 | [true] ... \|\| ... | | local_dataflow.rb:133:18:133:23 | self | local_dataflow.rb:136:7:136:12 | self | | local_dataflow.rb:133:22:133:22 | [post] x | local_dataflow.rb:136:11:136:11 | x | | local_dataflow.rb:133:22:133:22 | x | local_dataflow.rb:136:11:136:11 | x | +| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | +| local_dataflow.rb:133:24:134:12 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | | local_dataflow.rb:133:24:134:12 | then ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:134:7:134:12 | call to use | local_dataflow.rb:133:24:134:12 | then ... | +| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | +| local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | | local_dataflow.rb:135:5:138:9 | else ... | local_dataflow.rb:133:5:139:7 | if ... | | local_dataflow.rb:136:7:136:12 | [post] self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:7:136:12 | self | local_dataflow.rb:137:10:137:15 | self | | local_dataflow.rb:136:11:136:11 | [post] x | local_dataflow.rb:137:14:137:14 | x | | local_dataflow.rb:136:11:136:11 | x | local_dataflow.rb:137:14:137:14 | x | -| local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:133:5:139:7 | SSA phi read(self) | -| local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:133:5:139:7 | SSA phi read(x) | +| local_dataflow.rb:137:7:138:9 | SSA phi read(self) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(self) | +| local_dataflow.rb:137:7:138:9 | SSA phi read(x) | local_dataflow.rb:135:5:138:9 | [input] SSA phi read(x) | | local_dataflow.rb:137:7:138:9 | if ... | local_dataflow.rb:135:5:138:9 | else ... | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | +| local_dataflow.rb:137:10:137:15 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | | local_dataflow.rb:137:10:137:15 | [post] self | local_dataflow.rb:137:21:137:26 | self | | local_dataflow.rb:137:10:137:15 | self | local_dataflow.rb:137:21:137:26 | self | -| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | -| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | SSA phi read(self) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | +| local_dataflow.rb:137:10:137:26 | SSA phi read(x) | local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:7:138:9 | SSA phi read(self) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | +| local_dataflow.rb:137:10:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:7:138:9 | SSA phi read(x) | | local_dataflow.rb:137:14:137:14 | [post] x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:14:137:14 | x | local_dataflow.rb:137:25:137:25 | x | | local_dataflow.rb:137:20:137:26 | [false] ! ... | local_dataflow.rb:137:10:137:26 | [false] ... && ... | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(self) | local_dataflow.rb:137:10:137:26 | SSA phi read(self) | +| local_dataflow.rb:137:20:137:26 | [input] SSA phi read(x) | local_dataflow.rb:137:10:137:26 | SSA phi read(x) | | local_dataflow.rb:137:20:137:26 | [true] ! ... | local_dataflow.rb:137:10:137:26 | [true] ... && ... | | local_dataflow.rb:137:21:137:26 | call to use | local_dataflow.rb:137:20:137:26 | [false] ! ... | | local_dataflow.rb:137:21:137:26 | call to use | local_dataflow.rb:137:20:137:26 | [true] ! ... | @@ -3210,9 +3654,11 @@ | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | local_dataflow.rb:147:9:147:9 | x | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | | local_dataflow.rb:141:8:141:14 | [false] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | +| local_dataflow.rb:141:8:141:14 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | | local_dataflow.rb:141:8:141:14 | [true] ! ... | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | -| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | +| local_dataflow.rb:141:8:141:37 | SSA phi read(self) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | +| local_dataflow.rb:141:8:141:37 | SSA phi read(x) | local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | | local_dataflow.rb:141:9:141:14 | [post] self | local_dataflow.rb:141:20:141:25 | self | | local_dataflow.rb:141:9:141:14 | call to use | local_dataflow.rb:141:8:141:14 | [false] ! ... | | local_dataflow.rb:141:9:141:14 | call to use | local_dataflow.rb:141:8:141:14 | [true] ! ... | @@ -3220,7 +3666,11 @@ | local_dataflow.rb:141:13:141:13 | [post] x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:13:141:13 | x | local_dataflow.rb:141:24:141:24 | x | | local_dataflow.rb:141:19:141:37 | [false] ( ... ) | local_dataflow.rb:141:8:141:37 | [false] ... \|\| ... | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(self) | local_dataflow.rb:141:8:141:37 | SSA phi read(self) | +| local_dataflow.rb:141:19:141:37 | [input] SSA phi read(x) | local_dataflow.rb:141:8:141:37 | SSA phi read(x) | | local_dataflow.rb:141:19:141:37 | [true] ( ... ) | local_dataflow.rb:141:8:141:37 | [true] ... \|\| ... | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | +| local_dataflow.rb:141:20:141:25 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | | local_dataflow.rb:141:20:141:25 | [post] self | local_dataflow.rb:141:31:141:36 | self | | local_dataflow.rb:141:20:141:25 | self | local_dataflow.rb:141:31:141:36 | self | | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | local_dataflow.rb:143:11:143:16 | self | @@ -3230,24 +3680,38 @@ | local_dataflow.rb:141:24:141:24 | [post] x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:24:141:24 | x | local_dataflow.rb:141:35:141:35 | x | | local_dataflow.rb:141:30:141:36 | [false] ! ... | local_dataflow.rb:141:20:141:36 | [false] ... && ... | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(self) | local_dataflow.rb:141:20:141:36 | SSA phi read(self) | +| local_dataflow.rb:141:30:141:36 | [input] SSA phi read(x) | local_dataflow.rb:141:20:141:36 | SSA phi read(x) | | local_dataflow.rb:141:30:141:36 | [true] ! ... | local_dataflow.rb:141:20:141:36 | [true] ... && ... | | local_dataflow.rb:141:31:141:36 | call to use | local_dataflow.rb:141:30:141:36 | [false] ! ... | | local_dataflow.rb:141:31:141:36 | call to use | local_dataflow.rb:141:30:141:36 | [true] ! ... | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | +| local_dataflow.rb:141:38:142:9 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | | local_dataflow.rb:141:38:142:9 | then ... | local_dataflow.rb:141:5:145:7 | if ... | | local_dataflow.rb:142:7:142:9 | nil | local_dataflow.rb:141:38:142:9 | then ... | -| local_dataflow.rb:143:5:144:16 | SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | -| local_dataflow.rb:143:5:144:16 | SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | +| local_dataflow.rb:143:5:144:16 | SSA phi read(self) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | +| local_dataflow.rb:143:5:144:16 | SSA phi read(x) | local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | +| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(self) | local_dataflow.rb:141:5:145:7 | SSA phi read(self) | +| local_dataflow.rb:143:5:144:16 | [input] SSA phi read(x) | local_dataflow.rb:141:5:145:7 | SSA phi read(x) | | local_dataflow.rb:143:5:144:16 | elsif ... | local_dataflow.rb:141:5:145:7 | if ... | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | +| local_dataflow.rb:143:11:143:16 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | | local_dataflow.rb:143:11:143:16 | [post] self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | | local_dataflow.rb:143:11:143:16 | self | local_dataflow.rb:143:21:143:26 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | local_dataflow.rb:144:11:144:16 | self | | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | local_dataflow.rb:144:15:144:15 | x | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | +| local_dataflow.rb:143:11:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | | local_dataflow.rb:143:15:143:15 | [post] x | local_dataflow.rb:143:25:143:25 | x | | local_dataflow.rb:143:15:143:15 | x | local_dataflow.rb:143:25:143:25 | x | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(self) | local_dataflow.rb:143:11:143:26 | SSA phi read(self) | +| local_dataflow.rb:143:21:143:26 | [input] SSA phi read(x) | local_dataflow.rb:143:11:143:26 | SSA phi read(x) | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [false] ... \|\| ... | | local_dataflow.rb:143:21:143:26 | call to use | local_dataflow.rb:143:11:143:26 | [true] ... \|\| ... | +| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(self) | local_dataflow.rb:143:5:144:16 | SSA phi read(self) | +| local_dataflow.rb:143:27:144:16 | [input] SSA phi read(x) | local_dataflow.rb:143:5:144:16 | SSA phi read(x) | | local_dataflow.rb:143:27:144:16 | then ... | local_dataflow.rb:143:5:144:16 | elsif ... | | local_dataflow.rb:144:11:144:16 | call to use | local_dataflow.rb:143:27:144:16 | then ... | | local_dataflow.rb:147:5:147:10 | [post] self | local_dataflow.rb:148:5:148:10 | self | diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 5445a71296b4..e08953ebb658 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -473,7 +473,7 @@ module Make<LocationSig Location, InputSig<Location> Input> { } pragma[noinline] - private predicate ssaDefReachesThroughBlock(DefinitionExt def, BasicBlock bb) { + predicate ssaDefReachesThroughBlock(DefinitionExt def, BasicBlock bb) { exists(SourceVariable v | ssaDefReachesEndOfBlockExt(bb, def, v) and not defOccursInBlock(_, bb, v, _) @@ -741,6 +741,16 @@ module Make<LocationSig Location, InputSig<Location> Input> { defAdjacentRead(def, bb1, bb2, i2) } + private predicate lastRefRedefExtSameBlock( + DefinitionExt def, SourceVariable v, BasicBlock bb, int i, DefinitionExt next + ) { + exists(int rnk, int j | + rnk = ssaDefRank(def, v, bb, i, _) and + next.definesAt(v, bb, j, _) and + rnk + 1 = ssaRefRank(bb, j, v, ssaDefExt()) + ) + } + /** * NB: If this predicate is exposed, it should be cached. * @@ -753,11 +763,7 @@ module Make<LocationSig Location, InputSig<Location> Input> { DefinitionExt def, SourceVariable v, BasicBlock bb, int i, DefinitionExt next ) { // Next reference to `v` inside `bb` is a write - exists(int rnk, int j | - rnk = ssaDefRank(def, v, bb, i, _) and - next.definesAt(v, bb, j, _) and - rnk + 1 = ssaRefRank(bb, j, v, ssaDefExt()) - ) + lastRefRedefExtSameBlock(def, v, bb, i, next) or // Can reach a write using one or more steps lastSsaRefExt(def, v, bb, i) and @@ -767,6 +773,38 @@ module Make<LocationSig Location, InputSig<Location> Input> { ) } + /** + * NB: If this predicate is exposed, it should be cached. + * + * Holds if the node at index `i` in `bb` is a last reference to SSA definition + * `def`. The reference is last because it can reach another write `next`, + * without passing through another read or write. + * + * The path from node `i` in `bb` to `next` goes via basic block `input`, which is + * either a predecessor of the basic block of `next`, or `input = bb` in case `next` + * occurs in basic block `bb`. + */ + pragma[nomagic] + predicate lastRefRedefExt( + DefinitionExt def, SourceVariable v, BasicBlock bb, int i, BasicBlock input, DefinitionExt next + ) { + // Next reference to `v` inside `bb` is a write + lastRefRedefExtSameBlock(def, v, bb, i, next) and + input = bb + or + // Can reach a write using one or more steps + lastSsaRefExt(def, v, bb, i) and + exists(BasicBlock bb2 | + input = getABasicBlockPredecessor(bb2) and + 1 = ssaDefRank(next, v, bb2, _, ssaDefExt()) + | + input = bb + or + varBlockReachesExt(def, v, bb, input) and + ssaDefReachesThroughBlock(def, input) + ) + } + /** * NB: If this predicate is exposed, it should be cached. * From 3ee965f2b94df2fa6da2bb11773f5789be3bcd78 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Tue, 19 Mar 2024 16:42:52 +0100 Subject: [PATCH 411/731] C++: Update test results --- .../library-tests/ir/ir/PrintAST.expected | 204 ++++++++++ .../conditional_destructors/cfg.expected | 362 +++++++++--------- 2 files changed, 392 insertions(+), 174 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 669ec52376f5..e583b2328e4f 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -1823,6 +1823,12 @@ destructors_for_temps.cpp: # 17| getQualifier(): [ConstructorCall] call to ClassWithDestructor2 # 17| Type = [VoidType] void # 17| ValueCategory = prvalue +# 17| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 17| Type = [VoidType] void +# 17| ValueCategory = prvalue +# 17| getQualifier(): [ReuseExpr] reuse of temporary object +# 17| Type = [Class] ClassWithDestructor2 +# 17| ValueCategory = xvalue # 17| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 17| Type = [Class] ClassWithDestructor2 # 17| ValueCategory = prvalue(load) @@ -1858,6 +1864,18 @@ destructors_for_temps.cpp: # 23| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 23| Type = [Class] ClassWithDestructor2 # 23| ValueCategory = prvalue(load) +# 23| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 23| Type = [VoidType] void +# 23| ValueCategory = prvalue +# 23| getQualifier(): [ReuseExpr] reuse of temporary object +# 23| Type = [Class] ClassWithDestructor2 +# 23| ValueCategory = xvalue +# 23| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor2 +# 23| Type = [VoidType] void +# 23| ValueCategory = prvalue +# 23| getQualifier(): [ReuseExpr] reuse of temporary object +# 23| Type = [Class] ClassWithDestructor2 +# 23| ValueCategory = xvalue # 23| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... # 23| Conversion = [IntegralConversion] integral conversion # 23| Type = [IntType] int @@ -1959,6 +1977,12 @@ destructors_for_temps.cpp: # 39| getElse(): [ConstructorCall] call to ClassWithDestructor2 # 39| Type = [VoidType] void # 39| ValueCategory = prvalue +# 39| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 39| Type = [VoidType] void +# 39| ValueCategory = prvalue +# 39| getQualifier(): [ReuseExpr] reuse of temporary object +# 39| Type = [Class] ClassWithDestructor2 +# 39| ValueCategory = xvalue # 39| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object # 39| Type = [Class] ClassWithDestructor2 # 39| ValueCategory = prvalue(load) @@ -2066,6 +2090,24 @@ destructors_for_temps.cpp: # 51| getElse(): [ConstructorCall] call to ClassWithDestructor2 # 51| Type = [VoidType] void # 51| ValueCategory = prvalue +# 51| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 51| Type = [VoidType] void +# 51| ValueCategory = prvalue +# 51| getQualifier(): [ReuseExpr] reuse of temporary object +# 51| Type = [Class] ClassWithDestructor2 +# 51| ValueCategory = xvalue +# 51| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor2 +# 51| Type = [VoidType] void +# 51| ValueCategory = prvalue +# 51| getQualifier(): [ReuseExpr] reuse of temporary object +# 51| Type = [Class] ClassWithDestructor2 +# 51| ValueCategory = xvalue +# 51| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor2 +# 51| Type = [VoidType] void +# 51| ValueCategory = prvalue +# 51| getQualifier(): [ReuseExpr] reuse of temporary object +# 51| Type = [Class] ClassWithDestructor2 +# 51| ValueCategory = xvalue # 51| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object # 51| Type = [Class] ClassWithDestructor2 # 51| ValueCategory = prvalue(load) @@ -2113,6 +2155,24 @@ destructors_for_temps.cpp: # 55| getElse(): [ConstructorCall] call to ClassWithDestructor2 # 55| Type = [VoidType] void # 55| ValueCategory = prvalue +# 55| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 55| Type = [VoidType] void +# 55| ValueCategory = prvalue +# 55| getQualifier(): [ReuseExpr] reuse of temporary object +# 55| Type = [Class] ClassWithDestructor2 +# 55| ValueCategory = xvalue +# 55| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor2 +# 55| Type = [VoidType] void +# 55| ValueCategory = prvalue +# 55| getQualifier(): [ReuseExpr] reuse of temporary object +# 55| Type = [Class] ClassWithDestructor2 +# 55| ValueCategory = xvalue +# 55| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor2 +# 55| Type = [VoidType] void +# 55| ValueCategory = prvalue +# 55| getQualifier(): [ReuseExpr] reuse of temporary object +# 55| Type = [Class] ClassWithDestructor2 +# 55| ValueCategory = xvalue # 55| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object # 55| Type = [Class] ClassWithDestructor2 # 55| ValueCategory = prvalue(load) @@ -7245,6 +7305,12 @@ ir.cpp: # 809| Conversion = [BaseClassConversion] base class conversion # 809| Type = [SpecifiedType] const Base # 809| ValueCategory = lvalue +# 809| getImplicitDestructorCall(0): [DestructorCall] call to ~Base +# 809| Type = [VoidType] void +# 809| ValueCategory = prvalue +# 809| getQualifier(): [ReuseExpr] reuse of temporary object +# 809| Type = [Struct,VirtualBaseClass] Base +# 809| ValueCategory = xvalue # 809| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 809| Type = [LValueReferenceType] const Base & # 809| ValueCategory = prvalue @@ -7278,6 +7344,12 @@ ir.cpp: # 810| Conversion = [BaseClassConversion] base class conversion # 810| Type = [SpecifiedType] const Base # 810| ValueCategory = lvalue +# 810| getImplicitDestructorCall(0): [DestructorCall] call to ~Base +# 810| Type = [VoidType] void +# 810| ValueCategory = prvalue +# 810| getQualifier(): [ReuseExpr] reuse of temporary object +# 810| Type = [Struct,VirtualBaseClass] Base +# 810| ValueCategory = xvalue # 810| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 810| Type = [LValueReferenceType] const Base & # 810| ValueCategory = prvalue @@ -7485,6 +7557,12 @@ ir.cpp: # 823| Conversion = [BaseClassConversion] base class conversion # 823| Type = [SpecifiedType] const Middle # 823| ValueCategory = lvalue +# 823| getImplicitDestructorCall(0): [DestructorCall] call to ~Base +# 823| Type = [VoidType] void +# 823| ValueCategory = prvalue +# 823| getQualifier(): [ReuseExpr] reuse of temporary object +# 823| Type = [Struct,VirtualBaseClass] Base +# 823| ValueCategory = xvalue # 823| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 823| Type = [LValueReferenceType] const Base & # 823| ValueCategory = prvalue @@ -7522,6 +7600,12 @@ ir.cpp: # 824| Conversion = [BaseClassConversion] base class conversion # 824| Type = [SpecifiedType] const Middle # 824| ValueCategory = lvalue +# 824| getImplicitDestructorCall(0): [DestructorCall] call to ~Base +# 824| Type = [VoidType] void +# 824| ValueCategory = prvalue +# 824| getQualifier(): [ReuseExpr] reuse of temporary object +# 824| Type = [Struct,VirtualBaseClass] Base +# 824| ValueCategory = xvalue # 824| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 824| Type = [LValueReferenceType] const Base & # 824| ValueCategory = prvalue @@ -11685,6 +11769,12 @@ ir.cpp: # 1419| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 1419| Type = [PointerType] const char * # 1419| ValueCategory = prvalue +# 1419| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1419| Type = [VoidType] void +# 1419| ValueCategory = prvalue +# 1419| getQualifier(): [ReuseExpr] reuse of temporary object +# 1419| Type = [SpecifiedType] const String +# 1419| ValueCategory = xvalue # 1419| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 1419| Type = [LValueReferenceType] const String & # 1419| ValueCategory = prvalue @@ -11708,6 +11798,12 @@ ir.cpp: # 1420| Conversion = [GlvalueConversion] glvalue conversion # 1420| Type = [SpecifiedType] const String # 1420| ValueCategory = lvalue +# 1420| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1420| Type = [VoidType] void +# 1420| ValueCategory = prvalue +# 1420| getQualifier(): [ReuseExpr] reuse of temporary object +# 1420| Type = [Struct] String +# 1420| ValueCategory = xvalue # 1420| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 1420| Type = [Struct] String # 1420| ValueCategory = lvalue @@ -11725,6 +11821,12 @@ ir.cpp: # 1421| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 1421| Type = [PointerType] const char * # 1421| ValueCategory = prvalue +# 1421| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1421| Type = [VoidType] void +# 1421| ValueCategory = prvalue +# 1421| getQualifier(): [ReuseExpr] reuse of temporary object +# 1421| Type = [Struct] String +# 1421| ValueCategory = xvalue # 1421| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 1421| Type = [Struct] String # 1421| ValueCategory = lvalue @@ -11735,6 +11837,12 @@ ir.cpp: # 1422| getQualifier(): [ConstructorCall] call to String # 1422| Type = [VoidType] void # 1422| ValueCategory = prvalue +# 1422| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1422| Type = [VoidType] void +# 1422| ValueCategory = prvalue +# 1422| getQualifier(): [ReuseExpr] reuse of temporary object +# 1422| Type = [Struct] String +# 1422| ValueCategory = xvalue # 1422| getQualifier().getFullyConverted(): [CStyleCast] (const String)... # 1422| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion # 1422| Type = [SpecifiedType] const String @@ -11749,6 +11857,12 @@ ir.cpp: # 1423| getQualifier(): [FunctionCall] call to returnValue # 1423| Type = [Struct] String # 1423| ValueCategory = prvalue +# 1423| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1423| Type = [VoidType] void +# 1423| ValueCategory = prvalue +# 1423| getQualifier(): [ReuseExpr] reuse of temporary object +# 1423| Type = [Struct] String +# 1423| ValueCategory = xvalue # 1423| getQualifier().getFullyConverted(): [CStyleCast] (const String)... # 1423| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion # 1423| Type = [SpecifiedType] const String @@ -11760,6 +11874,12 @@ ir.cpp: # 1425| getExpr(): [FunctionCall] call to defaultConstruct # 1425| Type = [Struct] String # 1425| ValueCategory = prvalue +# 1425| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1425| Type = [VoidType] void +# 1425| ValueCategory = prvalue +# 1425| getQualifier(): [ReuseExpr] reuse of temporary object +# 1425| Type = [Struct] String +# 1425| ValueCategory = xvalue # 1425| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1425| Type = [Struct] String # 1425| ValueCategory = prvalue @@ -11827,6 +11947,12 @@ ir.cpp: # 1433| getArgument(0): [VariableAccess] d # 1433| Type = [Class] destructor_only # 1433| ValueCategory = prvalue(load) +# 1433| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1433| Type = [VoidType] void +# 1433| ValueCategory = prvalue +# 1433| getQualifier(): [ReuseExpr] reuse of temporary object +# 1433| Type = [Class] destructor_only +# 1433| ValueCategory = xvalue # 1433| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 1433| Type = [Class] destructor_only # 1433| ValueCategory = lvalue @@ -11838,6 +11964,12 @@ ir.cpp: # 1434| Type = [Class] destructor_only # 1434| Value = [Literal] 0 # 1434| ValueCategory = prvalue +# 1434| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1434| Type = [VoidType] void +# 1434| ValueCategory = prvalue +# 1434| getQualifier(): [ReuseExpr] reuse of temporary object +# 1434| Type = [Class] destructor_only +# 1434| ValueCategory = xvalue # 1434| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1434| Type = [Class] destructor_only # 1434| ValueCategory = prvalue(load) @@ -11848,6 +11980,12 @@ ir.cpp: # 1435| getQualifier(): [FunctionCall] call to returnValue # 1435| Type = [Class] destructor_only # 1435| ValueCategory = prvalue +# 1435| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1435| Type = [VoidType] void +# 1435| ValueCategory = prvalue +# 1435| getQualifier(): [ReuseExpr] reuse of temporary object +# 1435| Type = [Class] destructor_only +# 1435| ValueCategory = xvalue # 1435| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1435| Type = [Class] destructor_only # 1435| ValueCategory = prvalue(load) @@ -11855,6 +11993,12 @@ ir.cpp: # 1437| getExpr(): [FunctionCall] call to defaultConstruct # 1437| Type = [Class] destructor_only # 1437| ValueCategory = prvalue +# 1437| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1437| Type = [VoidType] void +# 1437| ValueCategory = prvalue +# 1437| getQualifier(): [ReuseExpr] reuse of temporary object +# 1437| Type = [Class] destructor_only +# 1437| ValueCategory = xvalue # 1437| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1437| Type = [Class] destructor_only # 1437| ValueCategory = prvalue @@ -16229,6 +16373,12 @@ ir.cpp: # 2068| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2068| Type = [Struct] TernaryNonPodObj # 2068| ValueCategory = prvalue(load) +# 2068| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2068| Type = [VoidType] void +# 2068| ValueCategory = prvalue +# 2068| getQualifier(): [ReuseExpr] reuse of temporary object +# 2068| Type = [Struct] TernaryNonPodObj +# 2068| ValueCategory = xvalue # 2068| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 2068| Type = [LValueReferenceType] const TernaryNonPodObj & # 2068| ValueCategory = prvalue @@ -16267,6 +16417,12 @@ ir.cpp: # 2069| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2069| Type = [Struct] TernaryNonPodObj # 2069| ValueCategory = prvalue(load) +# 2069| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2069| Type = [VoidType] void +# 2069| ValueCategory = prvalue +# 2069| getQualifier(): [ReuseExpr] reuse of temporary object +# 2069| Type = [Struct] TernaryNonPodObj +# 2069| ValueCategory = xvalue # 2069| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 2069| Type = [LValueReferenceType] const TernaryNonPodObj & # 2069| ValueCategory = prvalue @@ -16312,6 +16468,12 @@ ir.cpp: # 2070| getArgument(0): [ConstructorCall] call to TernaryNonPodObj # 2070| Type = [VoidType] void # 2070| ValueCategory = prvalue +# 2070| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2070| Type = [VoidType] void +# 2070| ValueCategory = prvalue +# 2070| getQualifier(): [ReuseExpr] reuse of temporary object +# 2070| Type = [Struct] TernaryNonPodObj +# 2070| ValueCategory = xvalue # 2070| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) # 2070| Type = [Struct] TernaryNonPodObj # 2070| ValueCategory = lvalue @@ -18767,6 +18929,12 @@ smart_ptr.cpp: # 12| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 12| Type = [LValueReferenceType] unique_ptr<int, default_delete<int>> & # 12| ValueCategory = prvalue +# 12| getImplicitDestructorCall(0): [DestructorCall] call to ~unique_ptr +# 12| Type = [VoidType] void +# 12| ValueCategory = prvalue +# 12| getQualifier(): [ReuseExpr] reuse of temporary object +# 12| Type = [ClassTemplateInstantiation] unique_ptr<int, default_delete<int>> +# 12| ValueCategory = xvalue # 12| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 12| Type = [ClassTemplateInstantiation] unique_ptr<int, default_delete<int>> # 12| ValueCategory = lvalue @@ -18816,6 +18984,12 @@ smart_ptr.cpp: # 19| Conversion = [GlvalueConversion] glvalue conversion # 19| Type = [SpecifiedType] const shared_ptr<float> # 19| ValueCategory = lvalue +# 19| getImplicitDestructorCall(0): [DestructorCall] call to ~shared_ptr +# 19| Type = [VoidType] void +# 19| ValueCategory = prvalue +# 19| getQualifier(): [ReuseExpr] reuse of temporary object +# 19| Type = [ClassTemplateInstantiation] shared_ptr<float> +# 19| ValueCategory = xvalue # 19| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 19| Type = [ClassTemplateInstantiation] shared_ptr<float> # 19| ValueCategory = lvalue @@ -18869,6 +19043,12 @@ smart_ptr.cpp: # 31| Conversion = [GlvalueConversion] glvalue conversion # 31| Type = [SpecifiedType] const shared_ptr<const int> # 31| ValueCategory = lvalue +# 31| getImplicitDestructorCall(0): [DestructorCall] call to ~shared_ptr +# 31| Type = [VoidType] void +# 31| ValueCategory = prvalue +# 31| getQualifier(): [ReuseExpr] reuse of temporary object +# 31| Type = [ClassTemplateInstantiation] shared_ptr<const int> +# 31| ValueCategory = xvalue # 31| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 31| Type = [ClassTemplateInstantiation] shared_ptr<const int> # 31| ValueCategory = lvalue @@ -18892,6 +19072,12 @@ smart_ptr.cpp: # 35| Conversion = [GlvalueConversion] glvalue conversion # 35| Type = [SpecifiedType] const shared_ptr<int *const> # 35| ValueCategory = lvalue +# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~shared_ptr +# 35| Type = [VoidType] void +# 35| ValueCategory = prvalue +# 35| getQualifier(): [ReuseExpr] reuse of temporary object +# 35| Type = [ClassTemplateInstantiation] shared_ptr<int *const> +# 35| ValueCategory = xvalue # 35| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 35| Type = [ClassTemplateInstantiation] shared_ptr<int *const> # 35| ValueCategory = lvalue @@ -18915,6 +19101,12 @@ smart_ptr.cpp: # 39| Conversion = [GlvalueConversion] glvalue conversion # 39| Type = [SpecifiedType] const shared_ptr<shared_ptr<const int>> # 39| ValueCategory = lvalue +# 39| getImplicitDestructorCall(0): [DestructorCall] call to ~shared_ptr +# 39| Type = [VoidType] void +# 39| ValueCategory = prvalue +# 39| getQualifier(): [ReuseExpr] reuse of temporary object +# 39| Type = [ClassTemplateInstantiation] shared_ptr<shared_ptr<const int>> +# 39| ValueCategory = xvalue # 39| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 39| Type = [ClassTemplateInstantiation] shared_ptr<shared_ptr<const int>> # 39| ValueCategory = lvalue @@ -18938,6 +19130,12 @@ smart_ptr.cpp: # 43| Conversion = [GlvalueConversion] glvalue conversion # 43| Type = [SpecifiedType] const shared_ptr<const shared_ptr<int>> # 43| ValueCategory = lvalue +# 43| getImplicitDestructorCall(0): [DestructorCall] call to ~shared_ptr +# 43| Type = [VoidType] void +# 43| ValueCategory = prvalue +# 43| getQualifier(): [ReuseExpr] reuse of temporary object +# 43| Type = [ClassTemplateInstantiation] shared_ptr<const shared_ptr<int>> +# 43| ValueCategory = xvalue # 43| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 43| Type = [ClassTemplateInstantiation] shared_ptr<const shared_ptr<int>> # 43| ValueCategory = lvalue @@ -18961,6 +19159,12 @@ smart_ptr.cpp: # 47| Conversion = [GlvalueConversion] glvalue conversion # 47| Type = [SpecifiedType] const shared_ptr<const shared_ptr<const int>> # 47| ValueCategory = lvalue +# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~shared_ptr +# 47| Type = [VoidType] void +# 47| ValueCategory = prvalue +# 47| getQualifier(): [ReuseExpr] reuse of temporary object +# 47| Type = [ClassTemplateInstantiation] shared_ptr<const shared_ptr<const int>> +# 47| ValueCategory = xvalue # 47| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 47| Type = [ClassTemplateInstantiation] shared_ptr<const shared_ptr<const int>> # 47| ValueCategory = lvalue diff --git a/cpp/ql/test/successor-tests/conditional_destructors/cfg.expected b/cpp/ql/test/successor-tests/conditional_destructors/cfg.expected index a47bcaf6fbf4..006ed12e35f2 100644 --- a/cpp/ql/test/successor-tests/conditional_destructors/cfg.expected +++ b/cpp/ql/test/successor-tests/conditional_destructors/cfg.expected @@ -1,175 +1,189 @@ -| C1::C1 | false | 237 | 237 | C1 | -| C1::C1 | false | 359 | 359 | C1 | -| C1::C1 | false | 363 | 363 | C1 | -| C1::C1 | false | 398 | 398 | ExprStmt | -| C1::C1 | false | 400 | 400 | this | -| C1::C1 | false | 401 | 401 | val | -| C1::C1 | false | 403 | 403 | x | -| C1::C1 | false | 405 | 405 | ... = ... | -| C1::C1 | false | 407 | 407 | return ... | -| C1::C1 | false | 409 | 409 | { ... } | -| C1::C1 | true | 398 | 403 | | -| C1::C1 | true | 400 | 401 | | -| C1::C1 | true | 401 | 405 | | -| C1::C1 | true | 403 | 400 | | -| C1::C1 | true | 405 | 407 | | -| C1::C1 | true | 407 | 237 | | -| C1::C1 | true | 409 | 398 | | -| C1::operator= | false | 348 | 348 | operator= | -| C1::operator= | false | 355 | 355 | operator= | -| C1::operator== | false | 226 | 226 | operator== | -| C1::operator== | false | 376 | 376 | return ... | -| C1::operator== | false | 378 | 378 | this | -| C1::operator== | false | 379 | 379 | val | -| C1::operator== | false | 382 | 382 | other | -| C1::operator== | false | 384 | 384 | (reference dereference) | -| C1::operator== | false | 385 | 385 | val | -| C1::operator== | false | 387 | 387 | ... == ... | -| C1::operator== | false | 389 | 389 | { ... } | -| C1::operator== | true | 376 | 378 | | -| C1::operator== | true | 378 | 379 | | -| C1::operator== | true | 379 | 382 | | -| C1::operator== | true | 382 | 385 | | -| C1::operator== | true | 385 | 387 | | -| C1::operator== | true | 387 | 226 | | -| C1::operator== | true | 389 | 376 | | -| C2::C2 | false | 170 | 170 | C2 | -| C2::C2 | false | 288 | 288 | C2 | -| C2::C2 | false | 334 | 334 | ExprStmt | -| C2::C2 | false | 336 | 336 | this | -| C2::C2 | false | 337 | 337 | val | -| C2::C2 | false | 339 | 339 | x | -| C2::C2 | false | 341 | 341 | ... = ... | -| C2::C2 | false | 343 | 343 | return ... | -| C2::C2 | false | 345 | 345 | { ... } | -| C2::C2 | true | 334 | 339 | | -| C2::C2 | true | 336 | 337 | | -| C2::C2 | true | 337 | 341 | | -| C2::C2 | true | 339 | 336 | | -| C2::C2 | true | 341 | 343 | | -| C2::C2 | true | 343 | 170 | | -| C2::C2 | true | 345 | 334 | | -| C2::operator= | false | 282 | 282 | operator= | -| C2::operator== | false | 159 | 159 | operator== | -| C2::operator== | false | 301 | 301 | return ... | -| C2::operator== | false | 303 | 303 | this | -| C2::operator== | false | 304 | 304 | val | -| C2::operator== | false | 307 | 307 | other | -| C2::operator== | false | 309 | 309 | (reference dereference) | -| C2::operator== | false | 310 | 310 | val | -| C2::operator== | false | 312 | 312 | ... == ... | -| C2::operator== | false | 314 | 314 | { ... } | -| C2::operator== | true | 301 | 303 | | -| C2::operator== | true | 303 | 304 | | -| C2::operator== | true | 304 | 307 | | -| C2::operator== | true | 307 | 310 | | -| C2::operator== | true | 310 | 312 | | -| C2::operator== | true | 312 | 159 | | -| C2::operator== | true | 314 | 301 | | -| C2::~C2 | false | 316 | 316 | ~C2 | -| C2::~C2 | false | 321 | 321 | ; | -| C2::~C2 | false | 323 | 323 | return ... | -| C2::~C2 | false | 325 | 325 | { ... } | -| C2::~C2 | true | 321 | 323 | | -| C2::~C2 | true | 323 | 316 | | -| C2::~C2 | true | 325 | 321 | | -| __va_list_tag::operator= | false | 57 | 57 | operator= | -| __va_list_tag::operator= | false | 63 | 63 | operator= | -| f1 | false | 215 | 215 | f1 | -| f1 | false | 220 | 220 | if (...) ... | -| f1 | false | 234 | 234 | call to operator== | -| f1 | false | 235 | 235 | call to C1 | -| f1 | false | 240 | 240 | 1 | -| f1 | false | 241 | 241 | temporary object | -| f1 | false | 242 | 242 | (const C1)... | -| f1 | false | 243 | 243 | call to C1 | -| f1 | false | 247 | 247 | 2 | -| f1 | false | 248 | 248 | temporary object | -| f1 | false | 249 | 249 | (const C1)... | -| f1 | false | 250 | 250 | (reference to) | -| f1 | false | 251 | 251 | ; | -| f1 | false | 253 | 253 | { ... } | -| f1 | false | 255 | 255 | if (...) ... | -| f1 | false | 258 | 258 | call to operator== | -| f1 | false | 259 | 259 | call to C1 | -| f1 | false | 263 | 263 | 3 | -| f1 | false | 264 | 264 | temporary object | -| f1 | false | 265 | 265 | (const C1)... | -| f1 | false | 266 | 266 | call to C1 | -| f1 | false | 270 | 270 | 3 | -| f1 | false | 271 | 271 | temporary object | -| f1 | false | 272 | 272 | (const C1)... | -| f1 | false | 273 | 273 | (reference to) | -| f1 | false | 274 | 274 | ; | -| f1 | false | 276 | 276 | { ... } | -| f1 | false | 278 | 278 | return ... | -| f1 | false | 280 | 280 | { ... } | -| f1 | true | 220 | 247 | | -| f1 | true | 234 | 253 | T | -| f1 | true | 234 | 255 | F | -| f1 | true | 235 | 234 | | -| f1 | true | 240 | 235 | | -| f1 | true | 243 | 240 | | -| f1 | true | 247 | 243 | | -| f1 | true | 251 | 255 | | -| f1 | true | 253 | 251 | | -| f1 | true | 255 | 270 | | -| f1 | true | 258 | 276 | T | -| f1 | true | 258 | 278 | F | -| f1 | true | 259 | 258 | | -| f1 | true | 263 | 259 | | -| f1 | true | 266 | 263 | | -| f1 | true | 270 | 266 | | -| f1 | true | 274 | 278 | | -| f1 | true | 276 | 274 | | -| f1 | true | 278 | 215 | | -| f1 | true | 280 | 220 | | -| f2 | false | 148 | 148 | f2 | -| f2 | false | 153 | 153 | if (...) ... | -| f2 | false | 167 | 167 | call to operator== | -| f2 | false | 168 | 168 | call to C2 | -| f2 | false | 173 | 173 | 1 | -| f2 | false | 174 | 174 | temporary object | -| f2 | false | 175 | 175 | (const C2)... | -| f2 | false | 176 | 176 | call to C2 | -| f2 | false | 180 | 180 | 2 | -| f2 | false | 181 | 181 | temporary object | -| f2 | false | 182 | 182 | (const C2)... | -| f2 | false | 183 | 183 | (reference to) | -| f2 | false | 184 | 184 | ; | -| f2 | false | 186 | 186 | { ... } | -| f2 | false | 188 | 188 | if (...) ... | -| f2 | false | 191 | 191 | call to operator== | -| f2 | false | 192 | 192 | call to C2 | -| f2 | false | 196 | 196 | 3 | -| f2 | false | 197 | 197 | temporary object | +| C1::C1 | false | 305 | 305 | C1 | +| C1::C1 | false | 473 | 473 | C1 | +| C1::C1 | false | 477 | 477 | C1 | +| C1::C1 | false | 521 | 521 | ExprStmt | +| C1::C1 | false | 524 | 524 | this | +| C1::C1 | false | 526 | 526 | val | +| C1::C1 | false | 529 | 529 | x | +| C1::C1 | false | 532 | 532 | ... = ... | +| C1::C1 | false | 535 | 535 | return ... | +| C1::C1 | false | 538 | 538 | { ... } | +| C1::C1 | true | 521 | 529 | | +| C1::C1 | true | 524 | 526 | | +| C1::C1 | true | 526 | 532 | | +| C1::C1 | true | 529 | 524 | | +| C1::C1 | true | 532 | 535 | | +| C1::C1 | true | 535 | 305 | | +| C1::C1 | true | 538 | 521 | | +| C1::operator= | false | 462 | 462 | operator= | +| C1::operator= | false | 469 | 469 | operator= | +| C1::operator== | false | 292 | 292 | operator== | +| C1::operator== | false | 491 | 491 | return ... | +| C1::operator== | false | 494 | 494 | this | +| C1::operator== | false | 496 | 496 | val | +| C1::operator== | false | 500 | 500 | other | +| C1::operator== | false | 503 | 503 | (reference dereference) | +| C1::operator== | false | 505 | 505 | val | +| C1::operator== | false | 508 | 508 | ... == ... | +| C1::operator== | false | 511 | 511 | { ... } | +| C1::operator== | true | 491 | 494 | | +| C1::operator== | true | 494 | 496 | | +| C1::operator== | true | 496 | 500 | | +| C1::operator== | true | 500 | 505 | | +| C1::operator== | true | 505 | 508 | | +| C1::operator== | true | 508 | 292 | | +| C1::operator== | true | 511 | 491 | | +| C2::C2 | false | 189 | 189 | C2 | +| C2::C2 | false | 385 | 385 | C2 | +| C2::C2 | false | 442 | 442 | ExprStmt | +| C2::C2 | false | 445 | 445 | this | +| C2::C2 | false | 447 | 447 | val | +| C2::C2 | false | 450 | 450 | x | +| C2::C2 | false | 453 | 453 | ... = ... | +| C2::C2 | false | 456 | 456 | return ... | +| C2::C2 | false | 459 | 459 | { ... } | +| C2::C2 | true | 442 | 450 | | +| C2::C2 | true | 445 | 447 | | +| C2::C2 | true | 447 | 453 | | +| C2::C2 | true | 450 | 445 | | +| C2::C2 | true | 453 | 456 | | +| C2::C2 | true | 456 | 189 | | +| C2::C2 | true | 459 | 442 | | +| C2::operator= | false | 379 | 379 | operator= | +| C2::operator== | false | 176 | 176 | operator== | +| C2::operator== | false | 399 | 399 | return ... | +| C2::operator== | false | 402 | 402 | this | +| C2::operator== | false | 404 | 404 | val | +| C2::operator== | false | 408 | 408 | other | +| C2::operator== | false | 411 | 411 | (reference dereference) | +| C2::operator== | false | 413 | 413 | val | +| C2::operator== | false | 416 | 416 | ... == ... | +| C2::operator== | false | 419 | 419 | { ... } | +| C2::operator== | true | 399 | 402 | | +| C2::operator== | true | 402 | 404 | | +| C2::operator== | true | 404 | 408 | | +| C2::operator== | true | 408 | 413 | | +| C2::operator== | true | 413 | 416 | | +| C2::operator== | true | 416 | 176 | | +| C2::operator== | true | 419 | 399 | | +| C2::~C2 | false | 267 | 267 | ~C2 | +| C2::~C2 | false | 426 | 426 | ; | +| C2::~C2 | false | 429 | 429 | return ... | +| C2::~C2 | false | 432 | 432 | { ... } | +| C2::~C2 | true | 426 | 429 | | +| C2::~C2 | true | 429 | 267 | | +| C2::~C2 | true | 432 | 426 | | +| __va_list_tag::operator= | false | 66 | 66 | operator= | +| __va_list_tag::operator= | false | 72 | 72 | operator= | +| f1 | false | 280 | 280 | f1 | +| f1 | false | 286 | 286 | if (...) ... | +| f1 | false | 301 | 301 | call to operator== | +| f1 | false | 303 | 303 | call to C1 | +| f1 | false | 310 | 310 | 1 | +| f1 | false | 312 | 312 | temporary object | +| f1 | false | 314 | 314 | (const C1)... | +| f1 | false | 316 | 316 | call to C1 | +| f1 | false | 322 | 322 | 2 | +| f1 | false | 324 | 324 | temporary object | +| f1 | false | 326 | 326 | (const C1)... | +| f1 | false | 328 | 328 | (reference to) | +| f1 | false | 330 | 330 | ; | +| f1 | false | 333 | 333 | { ... } | +| f1 | false | 336 | 336 | if (...) ... | +| f1 | false | 340 | 340 | call to operator== | +| f1 | false | 342 | 342 | call to C1 | +| f1 | false | 348 | 348 | 3 | +| f1 | false | 350 | 350 | temporary object | +| f1 | false | 352 | 352 | (const C1)... | +| f1 | false | 354 | 354 | call to C1 | +| f1 | false | 360 | 360 | 3 | +| f1 | false | 362 | 362 | temporary object | +| f1 | false | 364 | 364 | (const C1)... | +| f1 | false | 366 | 366 | (reference to) | +| f1 | false | 368 | 368 | ; | +| f1 | false | 371 | 371 | { ... } | +| f1 | false | 374 | 374 | return ... | +| f1 | false | 377 | 377 | { ... } | +| f1 | true | 286 | 322 | | +| f1 | true | 301 | 333 | T | +| f1 | true | 301 | 336 | F | +| f1 | true | 303 | 301 | | +| f1 | true | 310 | 303 | | +| f1 | true | 316 | 310 | | +| f1 | true | 322 | 316 | | +| f1 | true | 330 | 336 | | +| f1 | true | 333 | 330 | | +| f1 | true | 336 | 360 | | +| f1 | true | 340 | 371 | T | +| f1 | true | 340 | 374 | F | +| f1 | true | 342 | 340 | | +| f1 | true | 348 | 342 | | +| f1 | true | 354 | 348 | | +| f1 | true | 360 | 354 | | +| f1 | true | 368 | 374 | | +| f1 | true | 371 | 368 | | +| f1 | true | 374 | 280 | | +| f1 | true | 377 | 286 | | +| f2 | false | 164 | 164 | f2 | +| f2 | false | 170 | 170 | if (...) ... | +| f2 | false | 185 | 185 | call to operator== | +| f2 | false | 187 | 187 | call to C2 | +| f2 | false | 194 | 194 | 1 | +| f2 | false | 196 | 196 | temporary object | | f2 | false | 198 | 198 | (const C2)... | -| f2 | false | 199 | 199 | call to C2 | -| f2 | false | 203 | 203 | 3 | -| f2 | false | 204 | 204 | temporary object | -| f2 | false | 205 | 205 | (const C2)... | -| f2 | false | 206 | 206 | (reference to) | -| f2 | false | 207 | 207 | ; | -| f2 | false | 209 | 209 | { ... } | -| f2 | false | 211 | 211 | return ... | -| f2 | false | 213 | 213 | { ... } | -| f2 | true | 153 | 180 | | -| f2 | true | 167 | 186 | T | -| f2 | true | 167 | 188 | F | -| f2 | true | 168 | 167 | | -| f2 | true | 173 | 168 | | -| f2 | true | 176 | 173 | | -| f2 | true | 180 | 176 | | -| f2 | true | 184 | 188 | | -| f2 | true | 186 | 184 | | -| f2 | true | 188 | 203 | | -| f2 | true | 191 | 209 | T | -| f2 | true | 191 | 211 | F | -| f2 | true | 192 | 191 | | -| f2 | true | 196 | 192 | | -| f2 | true | 199 | 196 | | -| f2 | true | 203 | 199 | | -| f2 | true | 207 | 211 | | -| f2 | true | 209 | 207 | | -| f2 | true | 211 | 148 | | -| f2 | true | 213 | 153 | | +| f2 | false | 200 | 200 | call to C2 | +| f2 | false | 206 | 206 | 2 | +| f2 | false | 208 | 208 | temporary object | +| f2 | false | 210 | 210 | (const C2)... | +| f2 | false | 212 | 212 | (reference to) | +| f2 | false | 214 | 214 | ; | +| f2 | false | 217 | 217 | { ... } | +| f2 | false | 220 | 220 | if (...) ... | +| f2 | false | 224 | 224 | call to operator== | +| f2 | false | 226 | 226 | call to C2 | +| f2 | false | 232 | 232 | 3 | +| f2 | false | 234 | 234 | temporary object | +| f2 | false | 236 | 236 | (const C2)... | +| f2 | false | 238 | 238 | call to C2 | +| f2 | false | 244 | 244 | 3 | +| f2 | false | 246 | 246 | temporary object | +| f2 | false | 248 | 248 | (const C2)... | +| f2 | false | 250 | 250 | (reference to) | +| f2 | false | 252 | 252 | ; | +| f2 | false | 255 | 255 | { ... } | +| f2 | false | 258 | 258 | return ... | +| f2 | false | 261 | 261 | { ... } | +| f2 | false | 264 | 264 | reuse of temporary object | +| f2 | false | 266 | 266 | call to ~C2 | +| f2 | false | 269 | 269 | reuse of temporary object | +| f2 | false | 271 | 271 | call to ~C2 | +| f2 | false | 273 | 273 | reuse of temporary object | +| f2 | false | 275 | 275 | call to ~C2 | +| f2 | false | 277 | 277 | reuse of temporary object | +| f2 | false | 279 | 279 | call to ~C2 | +| f2 | true | 170 | 206 | | +| f2 | true | 185 | 217 | T | +| f2 | true | 185 | 220 | F | +| f2 | true | 187 | 185 | | +| f2 | true | 194 | 187 | | +| f2 | true | 200 | 194 | | +| f2 | true | 206 | 200 | | +| f2 | true | 214 | 220 | | +| f2 | true | 217 | 214 | | +| f2 | true | 220 | 244 | | +| f2 | true | 224 | 255 | T | +| f2 | true | 224 | 258 | F | +| f2 | true | 226 | 224 | | +| f2 | true | 232 | 226 | | +| f2 | true | 238 | 232 | | +| f2 | true | 244 | 238 | | +| f2 | true | 252 | 258 | | +| f2 | true | 255 | 252 | | +| f2 | true | 258 | 164 | | +| f2 | true | 261 | 170 | | +| f2 | true | 264 | 266 | | +| f2 | true | 269 | 271 | | +| f2 | true | 271 | 264 | | +| f2 | true | 273 | 275 | | +| f2 | true | 277 | 279 | | +| f2 | true | 279 | 273 | | From db3bf0e4824561374e784da82f57a1728edfdaab Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Wed, 20 Mar 2024 10:11:07 +0100 Subject: [PATCH 412/731] use the sanitizers from ReflectedXSS in unsafe-html-construction --- .../security/UnsafeHtmlConstructionCustomizations.qll | 7 ++++++- .../ruby/security/UnsafeHtmlConstructionQuery.qll | 10 ++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll b/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll index 45a1c00befef..a241fb8ce4fd 100644 --- a/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll +++ b/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll @@ -7,6 +7,7 @@ private import ruby private import codeql.ruby.ApiGraphs private import codeql.ruby.frameworks.core.Gem::Gem as Gem +private import codeql.ruby.security.XSS::ReflectedXss as ReflectedXss private import codeql.ruby.typetracking.TypeTracking /** @@ -34,7 +35,11 @@ module UnsafeHtmlConstruction { abstract string getSinkType(); } - private import codeql.ruby.security.XSS::ReflectedXss as ReflectedXss + /** A sanitizer for HTML constructed from library input vulnerabilities. */ + abstract class Sanitizer extends DataFlow::Node { } + + // inherit all the sanitizers from ReflectedXss + class ReflectedXssSanitizers extends Sanitizer instanceof ReflectedXss::Sanitizer { } /** Gets a node that eventually ends up in the XSS `sink`. */ private DataFlow::Node getANodeThatEndsInXssSink(ReflectedXss::Sink sink) { diff --git a/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionQuery.qll b/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionQuery.qll index 71e7b5d33db2..9d655a6d16a7 100644 --- a/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionQuery.qll +++ b/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionQuery.qll @@ -23,10 +23,7 @@ deprecated class Configuration extends TaintTracking::Configuration { override predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - override predicate isSanitizer(DataFlow::Node node) { - node instanceof StringConstCompareBarrier or - node instanceof StringConstArrayInclusionCallBarrier - } + override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer } // override to require the path doesn't have unmatched return steps override DataFlow::FlowFeature getAFeature() { @@ -39,10 +36,7 @@ private module UnsafeHtmlConstructionConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof Sink } - predicate isBarrier(DataFlow::Node node) { - node instanceof StringConstCompareBarrier or - node instanceof StringConstArrayInclusionCallBarrier - } + predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer } // override to require the path doesn't have unmatched return steps DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } From 3a7b80da47417183f73fe68b67ba0c647ab65c8f Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 10:12:29 +0000 Subject: [PATCH 413/731] C++: Respond to review comments. --- .../semmle/code/cpp/controlflow/IRGuards.qll | 20 +------------------ 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll index 1416fb2cd8ad..ee419dd70249 100644 --- a/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll +++ b/cpp/ql/lib/semmle/code/cpp/controlflow/IRGuards.qll @@ -134,7 +134,7 @@ class GuardCondition extends Expr { /** * Holds if (determined by this guard) `e < k` must be `isLessThan` in `block`. - * If `isLessThan = false` then this implies `left >= k`. + * If `isLessThan = false` then this implies `e >= k`. */ cached predicate ensuresLt(Expr e, int k, BasicBlock block, boolean isLessThan) { none() } @@ -256,7 +256,6 @@ private class GuardConditionFromIR extends GuardCondition { this.controlsBlock(controlled, v) } - /** Holds if (determined by this guard) `left < right + k` evaluates to `isLessThan` if this expression evaluates to `testIsTrue`. */ override predicate comparesLt(Expr left, Expr right, int k, boolean isLessThan, boolean testIsTrue) { exists(Instruction li, Instruction ri | li.getUnconvertedResultExpression() = left and @@ -265,10 +264,6 @@ private class GuardConditionFromIR extends GuardCondition { ) } - /** - * Holds if (determined by this guard) `e < k` evaluates to `isLessThan` if - * this expression evaluates to `value`. - */ override predicate comparesLt(Expr e, int k, boolean isLessThan, AbstractValue value) { exists(Instruction i | i.getUnconvertedResultExpression() = e and @@ -276,10 +271,6 @@ private class GuardConditionFromIR extends GuardCondition { ) } - /** - * Holds if (determined by this guard) `left < right + k` must be `isLessThan` in `block`. - * If `isLessThan = false` then this implies `left >= right + k`. - */ override predicate ensuresLt(Expr left, Expr right, int k, BasicBlock block, boolean isLessThan) { exists(Instruction li, Instruction ri, boolean testIsTrue | li.getUnconvertedResultExpression() = left and @@ -289,10 +280,6 @@ private class GuardConditionFromIR extends GuardCondition { ) } - /** - * Holds if (determined by this guard) `e < k` must be `isLessThan` in `block`. - * If `isLessThan = false` then this implies `e >= k`. - */ override predicate ensuresLt(Expr e, int k, BasicBlock block, boolean isLessThan) { exists(Instruction i, AbstractValue value | i.getUnconvertedResultExpression() = e and @@ -301,7 +288,6 @@ private class GuardConditionFromIR extends GuardCondition { ) } - /** Holds if (determined by this guard) `left == right + k` evaluates to `areEqual` if this expression evaluates to `testIsTrue`. */ override predicate comparesEq(Expr left, Expr right, int k, boolean areEqual, boolean testIsTrue) { exists(Instruction li, Instruction ri | li.getUnconvertedResultExpression() = left and @@ -310,10 +296,6 @@ private class GuardConditionFromIR extends GuardCondition { ) } - /** - * Holds if (determined by this guard) `left == right + k` must be `areEqual` in `block`. - * If `areEqual = false` then this implies `left != right + k`. - */ override predicate ensuresEq(Expr left, Expr right, int k, BasicBlock block, boolean areEqual) { exists(Instruction li, Instruction ri, boolean testIsTrue | li.getUnconvertedResultExpression() = left and From 3fa7532b4324eae5b067f9f236a3c5c87b44f05f Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Tue, 19 Mar 2024 13:16:45 +0000 Subject: [PATCH 414/731] Kotlin 2: Accept more test changes --- .../library-tests/exprs/exprs.expected | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 13dfc71b6c3f..63adc378aeb1 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -68,16 +68,16 @@ | delegatedProperties.kt:18:12:18:33 | Map<String,? extends Object> | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:18:12:18:33 | Object | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:18:12:18:33 | String | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:19:34:19:51 | ...::... | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | PropertyRefExpr | -| delegatedProperties.kt:19:34:19:51 | ...::... | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | PropertyRefExpr | +| delegatedProperties.kt:19:34:19:51 | ...::... | delegatedProperties.kt:19:9:19:51 | <get-varResource1> | PropertyRefExpr | +| delegatedProperties.kt:19:34:19:51 | ...::... | delegatedProperties.kt:19:9:19:51 | <set-varResource1> | PropertyRefExpr | | delegatedProperties.kt:19:34:19:51 | <get-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | get | MethodCall | | delegatedProperties.kt:19:34:19:51 | <get-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | get | MethodCall | | delegatedProperties.kt:19:34:19:51 | <set-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | set | MethodCall | | delegatedProperties.kt:19:34:19:51 | <set-varResource1>(...) | delegatedProperties.kt:19:34:19:51 | set | MethodCall | -| delegatedProperties.kt:19:34:19:51 | Integer | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | TypeAccess | -| delegatedProperties.kt:19:34:19:51 | Integer | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | TypeAccess | -| delegatedProperties.kt:19:34:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | TypeAccess | -| delegatedProperties.kt:19:34:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Integer | delegatedProperties.kt:19:9:19:51 | <get-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | Integer | delegatedProperties.kt:19:9:19:51 | <set-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:9:19:51 | <get-varResource1> | TypeAccess | +| delegatedProperties.kt:19:34:19:51 | KMutableProperty0<Integer> | delegatedProperties.kt:19:9:19:51 | <set-varResource1> | TypeAccess | | delegatedProperties.kt:19:34:19:51 | Object | delegatedProperties.kt:19:34:19:51 | get | TypeAccess | | delegatedProperties.kt:19:34:19:51 | Object | delegatedProperties.kt:19:34:19:51 | get | TypeAccess | | delegatedProperties.kt:19:34:19:51 | Object | delegatedProperties.kt:19:34:19:51 | set | TypeAccess | @@ -87,19 +87,19 @@ | delegatedProperties.kt:19:34:19:51 | a0 | delegatedProperties.kt:19:34:19:51 | set | VarAccess | | delegatedProperties.kt:19:34:19:51 | get(...) | delegatedProperties.kt:19:34:19:51 | invoke | MethodCall | | delegatedProperties.kt:19:34:19:51 | get(...) | delegatedProperties.kt:19:34:19:51 | invoke | MethodCall | -| delegatedProperties.kt:19:34:19:51 | getValue(...) | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | MethodCall | +| delegatedProperties.kt:19:34:19:51 | getValue(...) | delegatedProperties.kt:19:9:19:51 | <get-varResource1> | MethodCall | | delegatedProperties.kt:19:34:19:51 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:19:34:19:51 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | get | ClassInstanceExpr | | delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | get | ClassInstanceExpr | | delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | set | ClassInstanceExpr | | delegatedProperties.kt:19:34:19:51 | new (...) | delegatedProperties.kt:19:34:19:51 | set | ClassInstanceExpr | -| delegatedProperties.kt:19:34:19:51 | setValue(...) | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | MethodCall | +| delegatedProperties.kt:19:34:19:51 | setValue(...) | delegatedProperties.kt:19:9:19:51 | <set-varResource1> | MethodCall | | delegatedProperties.kt:19:34:19:51 | this | delegatedProperties.kt:19:34:19:51 | invoke | ThisAccess | | delegatedProperties.kt:19:34:19:51 | this | delegatedProperties.kt:19:34:19:51 | invoke | ThisAccess | | delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:19:34:19:51 | <get-varResource1> | VarAccess | -| delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | VarAccess | +| delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:19:9:19:51 | <get-varResource1> | VarAccess | +| delegatedProperties.kt:19:34:19:51 | varResource1$delegate | delegatedProperties.kt:19:9:19:51 | <set-varResource1> | VarAccess | | delegatedProperties.kt:19:34:19:51 | ResourceDelegate | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:19:34:19:51 | new ResourceDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:19:34:19:51 | value | delegatedProperties.kt:19:34:19:51 | <set-varResource1> | VarAccess | @@ -112,19 +112,19 @@ | delegatedProperties.kt:21:9:21:24 | Object | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:21:9:21:24 | new (...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:21:24:21:24 | 2 | delegatedProperties.kt:18:5:40:5 | fn | IntegerLiteral | -| delegatedProperties.kt:23:29:23:31 | ...::... | delegatedProperties.kt:23:29:23:31 | <get-name> | PropertyRefExpr | +| delegatedProperties.kt:23:29:23:31 | ...::... | delegatedProperties.kt:23:9:23:31 | <get-name> | PropertyRefExpr | | delegatedProperties.kt:23:29:23:31 | <get-name>(...) | delegatedProperties.kt:23:29:23:31 | get | MethodCall | -| delegatedProperties.kt:23:29:23:31 | KProperty0<String> | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:29:23:31 | MapAccessorsKt | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:29:23:31 | Object | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | KProperty0<String> | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | MapAccessorsKt | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | Object | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess | | delegatedProperties.kt:23:29:23:31 | Object | delegatedProperties.kt:23:29:23:31 | get | TypeAccess | -| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | -| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:29:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess | +| delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess | | delegatedProperties.kt:23:29:23:31 | String | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:23:29:23:31 | get(...) | delegatedProperties.kt:23:29:23:31 | invoke | MethodCall | +| delegatedProperties.kt:23:29:23:31 | get(...) | delegatedProperties.kt:23:9:23:31 | invoke | MethodCall | | delegatedProperties.kt:23:29:23:31 | getValue(...) | delegatedProperties.kt:23:29:23:31 | <get-name> | MethodCall | | delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:23:29:23:31 | <get-name> | VarAccess | +| delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:23:9:23:31 | <get-name> | VarAccess | | delegatedProperties.kt:23:29:23:31 | new (...) | delegatedProperties.kt:23:29:23:31 | get | ClassInstanceExpr | | delegatedProperties.kt:23:29:23:31 | this | delegatedProperties.kt:23:29:23:31 | invoke | ThisAccess | | delegatedProperties.kt:23:29:23:31 | map | delegatedProperties.kt:18:5:40:5 | fn | VarAccess | @@ -158,13 +158,13 @@ | delegatedProperties.kt:28:50:28:71 | ? ... | file://:0:0:0:0 | <none> | WildcardTypeAccess | | delegatedProperties.kt:28:50:28:71 | KProperty<?> | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:28:74:28:83 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:29:17:29:24 | setCurValue(...) | delegatedProperties.kt:28:22:30:13 | setValue | MethodCall | -| delegatedProperties.kt:29:17:29:24 | this | delegatedProperties.kt:28:22:30:13 | setValue | ThisAccess | -| delegatedProperties.kt:29:28:29:32 | value | delegatedProperties.kt:28:22:30:13 | setValue | VarAccess | -| delegatedProperties.kt:33:30:33:47 | ...::... | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | PropertyRefExpr | +| delegatedProperties.kt:29:17:29:24 | setCurValue(...) | delegatedProperties.kt:28:13:30:13 | setValue | MethodCall | +| delegatedProperties.kt:29:17:29:24 | this | delegatedProperties.kt:28:13:30:13 | setValue | ThisAccess | +| delegatedProperties.kt:29:28:29:32 | value | delegatedProperties.kt:28:13:30:13 | setValue | VarAccess | +| delegatedProperties.kt:33:30:33:47 | ...::... | delegatedProperties.kt:33:9:33:47 | <get-readOnly> | PropertyRefExpr | | delegatedProperties.kt:33:30:33:47 | <get-readOnly>(...) | delegatedProperties.kt:33:30:33:47 | get | MethodCall | -| delegatedProperties.kt:33:30:33:47 | Integer | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | TypeAccess | -| delegatedProperties.kt:33:30:33:47 | KProperty0<Integer> | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | TypeAccess | +| delegatedProperties.kt:33:30:33:47 | Integer | delegatedProperties.kt:33:9:33:47 | <get-readOnly> | TypeAccess | +| delegatedProperties.kt:33:30:33:47 | KProperty0<Integer> | delegatedProperties.kt:33:9:33:47 | <get-readOnly> | TypeAccess | | delegatedProperties.kt:33:30:33:47 | Object | delegatedProperties.kt:33:30:33:47 | get | TypeAccess | | delegatedProperties.kt:33:30:33:47 | get(...) | delegatedProperties.kt:33:30:33:47 | invoke | MethodCall | | delegatedProperties.kt:33:30:33:47 | getValue(...) | delegatedProperties.kt:33:30:33:47 | <get-readOnly> | MethodCall | @@ -176,16 +176,16 @@ | delegatedProperties.kt:33:30:33:47 | Object | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:33:30:33:47 | new (...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:33:30:33:47 | resourceDelegate(...) | delegatedProperties.kt:18:5:40:5 | fn | MethodCall | -| delegatedProperties.kt:34:31:34:48 | ...::... | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | PropertyRefExpr | -| delegatedProperties.kt:34:31:34:48 | ...::... | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | PropertyRefExpr | +| delegatedProperties.kt:34:31:34:48 | ...::... | delegatedProperties.kt:34:9:34:48 | <get-readWrite> | PropertyRefExpr | +| delegatedProperties.kt:34:31:34:48 | ...::... | delegatedProperties.kt:34:9:34:48 | <set-readWrite> | PropertyRefExpr | | delegatedProperties.kt:34:31:34:48 | <get-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | get | MethodCall | | delegatedProperties.kt:34:31:34:48 | <get-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | get | MethodCall | | delegatedProperties.kt:34:31:34:48 | <set-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | set | MethodCall | | delegatedProperties.kt:34:31:34:48 | <set-readWrite>(...) | delegatedProperties.kt:34:31:34:48 | set | MethodCall | -| delegatedProperties.kt:34:31:34:48 | Integer | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | TypeAccess | -| delegatedProperties.kt:34:31:34:48 | Integer | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | TypeAccess | -| delegatedProperties.kt:34:31:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | TypeAccess | -| delegatedProperties.kt:34:31:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Integer | delegatedProperties.kt:34:9:34:48 | <get-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | Integer | delegatedProperties.kt:34:9:34:48 | <set-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:9:34:48 | <get-readWrite> | TypeAccess | +| delegatedProperties.kt:34:31:34:48 | KMutableProperty0<Integer> | delegatedProperties.kt:34:9:34:48 | <set-readWrite> | TypeAccess | | delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:34:31:34:48 | get | TypeAccess | | delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:34:31:34:48 | get | TypeAccess | | delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:34:31:34:48 | set | TypeAccess | @@ -195,7 +195,7 @@ | delegatedProperties.kt:34:31:34:48 | a0 | delegatedProperties.kt:34:31:34:48 | set | VarAccess | | delegatedProperties.kt:34:31:34:48 | get(...) | delegatedProperties.kt:34:31:34:48 | invoke | MethodCall | | delegatedProperties.kt:34:31:34:48 | get(...) | delegatedProperties.kt:34:31:34:48 | invoke | MethodCall | -| delegatedProperties.kt:34:31:34:48 | getValue(...) | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | MethodCall | +| delegatedProperties.kt:34:31:34:48 | getValue(...) | delegatedProperties.kt:34:9:34:48 | <get-readWrite> | MethodCall | | delegatedProperties.kt:34:31:34:48 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:34:31:34:48 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:34:31:34:48 | new (...) | delegatedProperties.kt:34:31:34:48 | get | ClassInstanceExpr | @@ -205,7 +205,7 @@ | delegatedProperties.kt:34:31:34:48 | readWrite$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | | delegatedProperties.kt:34:31:34:48 | readWrite$delegate | delegatedProperties.kt:34:31:34:48 | <get-readWrite> | VarAccess | | delegatedProperties.kt:34:31:34:48 | readWrite$delegate | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | VarAccess | -| delegatedProperties.kt:34:31:34:48 | setValue(...) | delegatedProperties.kt:34:31:34:48 | <set-readWrite> | MethodCall | +| delegatedProperties.kt:34:31:34:48 | setValue(...) | delegatedProperties.kt:34:9:34:48 | <set-readWrite> | MethodCall | | delegatedProperties.kt:34:31:34:48 | this | delegatedProperties.kt:34:31:34:48 | invoke | ThisAccess | | delegatedProperties.kt:34:31:34:48 | this | delegatedProperties.kt:34:31:34:48 | invoke | ThisAccess | | delegatedProperties.kt:34:31:34:48 | Object | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | @@ -220,18 +220,18 @@ | delegatedProperties.kt:37:9:37:24 | this | delegatedProperties.kt:18:5:40:5 | fn | ThisAccess | | delegatedProperties.kt:37:24:37:24 | 3 | delegatedProperties.kt:18:5:40:5 | fn | IntegerLiteral | | delegatedProperties.kt:39:34:39:51 | ...::... | delegatedProperties.kt:18:5:40:5 | fn | PropertyRefExpr | -| delegatedProperties.kt:39:34:39:51 | ...::... | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | PropertyRefExpr | +| delegatedProperties.kt:39:34:39:51 | ...::... | delegatedProperties.kt:39:9:39:51 | <get-varResource2> | PropertyRefExpr | | delegatedProperties.kt:39:34:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:34:39:51 | get | MethodCall | | delegatedProperties.kt:39:34:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:34:39:51 | get | MethodCall | | delegatedProperties.kt:39:34:39:51 | Integer | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:39:34:39:51 | Integer | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | TypeAccess | | delegatedProperties.kt:39:34:39:51 | KProperty0<Integer> | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | -| delegatedProperties.kt:39:34:39:51 | KProperty0<Integer> | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | KProperty0<Integer> | delegatedProperties.kt:39:9:39:51 | <get-varResource2> | TypeAccess | | delegatedProperties.kt:39:34:39:51 | Object | delegatedProperties.kt:39:34:39:51 | get | TypeAccess | | delegatedProperties.kt:39:34:39:51 | Object | delegatedProperties.kt:39:34:39:51 | get | TypeAccess | | delegatedProperties.kt:39:34:39:51 | get(...) | delegatedProperties.kt:39:34:39:51 | invoke | MethodCall | | delegatedProperties.kt:39:34:39:51 | get(...) | delegatedProperties.kt:39:34:39:51 | invoke | MethodCall | -| delegatedProperties.kt:39:34:39:51 | getValue(...) | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | MethodCall | +| delegatedProperties.kt:39:34:39:51 | getValue(...) | delegatedProperties.kt:39:9:39:51 | <get-varResource2> | MethodCall | | delegatedProperties.kt:39:34:39:51 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:39:34:39:51 | new (...) | delegatedProperties.kt:39:34:39:51 | get | ClassInstanceExpr | | delegatedProperties.kt:39:34:39:51 | new (...) | delegatedProperties.kt:39:34:39:51 | get | ClassInstanceExpr | From 06134467e9e5317ac327ad439e7c776a116a8160 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Tue, 19 Mar 2024 16:39:57 +0000 Subject: [PATCH 415/731] Go: Make `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` true by default --- go/extractor/extractor.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index f2ba68a20f0e..2e846b66e281 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -119,7 +119,7 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { // root directories of packages that we want to extract wantedRoots := make(map[string]bool) - if os.Getenv("CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO") != "" { + if os.Getenv("CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO") != "false" { log.Printf("Running go list to resolve package and module directories.") // get all packages information pkgInfos, err = util.GetPkgsInfo(patterns, true, modFlags...) From c9dbb7c5a9ff739f014b303ddb147f9e90331c5b Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 12:01:57 +0000 Subject: [PATCH 416/731] C++: Rewrite 'cpp/missing-check-scanf' to use standard dataflow configurations. --- cpp/ql/src/Critical/MissingCheckScanf.ql | 112 +++++++++-------------- 1 file changed, 44 insertions(+), 68 deletions(-) diff --git a/cpp/ql/src/Critical/MissingCheckScanf.ql b/cpp/ql/src/Critical/MissingCheckScanf.ql index 78560383b006..3418fb8485c8 100644 --- a/cpp/ql/src/Critical/MissingCheckScanf.ql +++ b/cpp/ql/src/Critical/MissingCheckScanf.ql @@ -21,14 +21,6 @@ import semmle.code.cpp.ir.IR import semmle.code.cpp.ir.ValueNumbering import ScanfChecks -/** Holds if `n` reaches an argument to a call to a `scanf`-like function. */ -pragma[nomagic] -predicate revFlow0(Node n) { - isSink(_, _, n, _) - or - exists(Node succ | revFlow0(succ) | localFlowStep(n, succ)) -} - /** * Holds if `n` represents an uninitialized stack-allocated variable, or a * newly (and presumed uninitialized) heap allocation. @@ -38,30 +30,45 @@ predicate isUninitialized(Node n) { n.asIndirectExpr(1) instanceof AllocationExpr } -pragma[nomagic] -predicate fwdFlow0(Node n) { - revFlow0(n) and - ( - isUninitialized(n) - or - exists(Node prev | - fwdFlow0(prev) and - localFlowStep(prev, n) - ) - ) -} - predicate isSink(ScanfFunctionCall call, int index, Node n, Expr input) { input = call.getOutputArgument(index) and n.asIndirectExpr() = input } +/** + * A configuration to track a uninitialized data flowing to a `scanf`-like + * output parameter position. + * + * This is meant to be a simple flow to rule out cases like: + * ``` + * int x = 0; + * scanf(..., &x); + * use(x); + * ``` + * since `x` is already initialized it's not a security concern that `x` is + * used without checking the return value of `scanf`. + * + * Since this flow is meant to be simple, we disable field flow and require the + * source and the sink to be in the same callable. + */ +module UninitializedToScanfConfig implements ConfigSig { + predicate isSource(Node source) { isUninitialized(source) } + + predicate isSink(Node sink) { isSink(_, _, sink, _) } + + FlowFeature getAFeature() { result instanceof FeatureEqualSourceSinkCallContext } + + int accessPathLimit() { result = 0 } +} + +module UninitializedToScanfFlow = Global<UninitializedToScanfConfig>; + /** * Holds if `call` is a `scanf`-like call and `output` is the `index`'th * argument that has not been previously initialized. */ predicate isRelevantScanfCall(ScanfFunctionCall call, int index, Expr output) { - exists(Node n | fwdFlow0(n) and isSink(call, index, n, output)) and + exists(Node n | UninitializedToScanfFlow::flowTo(n) and isSink(call, index, n, output)) and // Exclude results from incorrectky checked scanf query not incorrectlyCheckedScanf(call) } @@ -77,31 +84,6 @@ predicate isSource(ScanfFunctionCall call, int index, Node n, Expr output) { n.asDefiningArgument() = output } -/** - * Holds if `n` is reachable from an output argument of a relevant call to - * a `scanf`-like function. - */ -pragma[nomagic] -predicate fwdFlow(Node n) { - isSource(_, _, n, _) - or - exists(Node prev | - fwdFlow(prev) and - localFlowStep(prev, n) and - not isSanitizerOut(prev) - ) -} - -/** Holds if `n` should not have outgoing flow. */ -predicate isSanitizerOut(Node n) { - // We disable flow out of sinks to reduce result duplication - isSink(n, _) - or - // If the node is being passed to a function it may be - // modified, and thus it's safe to later read the value. - exists(n.asIndirectArgument()) -} - /** * Holds if `n` is a node such that `n.asExpr() = e` and `e` is not an * argument of a deallocation expression. @@ -112,31 +94,25 @@ predicate isSink(Node n, Expr e) { } /** - * Holds if `n` is part of a path from a call to a `scanf`-like function - * to a use of the written variable. + * A configuration to track flow from the output argument of a call to a + * `scanf`-like function, and to a use of the defined variable. */ -pragma[nomagic] -predicate revFlow(Node n) { - fwdFlow(n) and - ( +module ScanfToUseConfig implements ConfigSig { + predicate isSource(Node source) { isSource(_, _, source, _) } + + predicate isSink(Node sink) { isSink(sink, _) } + + predicate isBarrierOut(Node n) { + // We disable flow out of sinks to reduce result duplication isSink(n, _) or - exists(Node succ | - revFlow(succ) and - localFlowStep(n, succ) and - not isSanitizerOut(n) - ) - ) -} - -/** A local flow step, restricted to relevant dataflow nodes. */ -private predicate step(Node n1, Node n2) { - revFlow(n1) and - revFlow(n2) and - localFlowStep(n1, n2) + // If the node is being passed to a function it may be + // modified, and thus it's safe to later read the value. + exists(n.asIndirectArgument()) + } } -predicate hasFlow(Node n1, Node n2) = fastTC(step/2)(n1, n2) +module ScanfToUseFlow = Global<ScanfToUseConfig>; /** * Holds if `source` is the `index`'th argument to the `scanf`-like call `call`, and `sink` is @@ -144,7 +120,7 @@ predicate hasFlow(Node n1, Node n2) = fastTC(step/2)(n1, n2) */ predicate hasFlow(Node source, ScanfFunctionCall call, int index, Node sink, Expr e) { isSource(call, index, source, _) and - hasFlow(source, sink) and + ScanfToUseFlow::flow(source, sink) and isSink(sink, e) } From c71ba0361edf9f1d3501f383f3de2e190de80352 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 20 Mar 2024 12:12:20 +0000 Subject: [PATCH 417/731] Docs: Add Go 1.22 to supported versions range --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 05cc675c71c2..727642a87ac1 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -16,7 +16,7 @@ .NET Core up to 3.1 .NET 5, .NET 6, .NET 7, .NET 8","``.sln``, ``.csproj``, ``.cs``, ``.cshtml``, ``.xaml``" - Go (aka Golang), "Go up to 1.21", "Go 1.11 or more recent", ``.go`` + Go (aka Golang), "Go up to 1.22", "Go 1.11 or more recent", ``.go`` Java,"Java 7 to 21 [5]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [6]_",``.java`` From 96a6dd72cdde1582b44b28ce9e279d95b6f286a9 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 20 Mar 2024 13:08:59 +0000 Subject: [PATCH 418/731] Go: Move `go version` command construction into its own function --- go/extractor/toolchain/toolchain.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/go/extractor/toolchain/toolchain.go b/go/extractor/toolchain/toolchain.go index 38abfd43874c..97b1d75e0857 100644 --- a/go/extractor/toolchain/toolchain.go +++ b/go/extractor/toolchain/toolchain.go @@ -25,7 +25,7 @@ func GetEnvGoVersion() string { // download the version of Go specified in there. That may either fail or result in us just // being told what's already in 'go.mod'. Setting 'GOTOOLCHAIN' to 'local' will force it // to use the local Go toolchain instead. - cmd := exec.Command("go", "version") + cmd := Version() cmd.Env = append(os.Environ(), "GOTOOLCHAIN=local") out, err := cmd.CombinedOutput() @@ -92,3 +92,9 @@ func VendorModule(path string) *exec.Cmd { modVendor.Dir = path return modVendor } + +// Constructs a command to run `go version`. +func Version() *exec.Cmd { + version := exec.Command("go", "version") + return version +} From 0d527b2f75c8a3006a10b9b6b44b54ebb3ffe70e Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 20 Mar 2024 13:51:17 +0000 Subject: [PATCH 419/731] Go: Keep track of all installed toolchains that we know of --- go/extractor/toolchain/toolchain.go | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/go/extractor/toolchain/toolchain.go b/go/extractor/toolchain/toolchain.go index 97b1d75e0857..a91bf64ba7d4 100644 --- a/go/extractor/toolchain/toolchain.go +++ b/go/extractor/toolchain/toolchain.go @@ -16,7 +16,15 @@ func IsInstalled() bool { return err == nil } +// The default Go version that is available on a system and a set of all versions +// that we know are installed on the system. var goVersion = "" +var goVersions = map[string]struct{}{} + +// Adds an entry to the set of installed Go versions for the normalised `version` number. +func addGoVersion(version string) { + goVersions[semver.Canonical(version)] = struct{}{} +} // Returns the current Go version as returned by 'go version', e.g. go1.14.4 func GetEnvGoVersion() string { @@ -34,10 +42,57 @@ func GetEnvGoVersion() string { } goVersion = parseGoVersion(string(out)) + addGoVersion(goVersion) } return goVersion } +// Determines whether, to our knowledge, `version` is available on the current system. +func HasGoVersion(version string) bool { + _, found := goVersions[semver.Canonical(version)] + return found +} + +// Attempts to install the Go toolchain `version`. +func InstallVersion(workingDir string, version string) bool { + // No need to install it if we know that it is already installed. + if HasGoVersion(version) { + return true + } + + // Construct a command to invoke `go version` with `GOTOOLCHAIN=go1.N.0` to give + // Go a valid toolchain version to download the toolchain we need; subsequent commands + // should then work even with an invalid version that's still in `go.mod` + toolchainArg := "GOTOOLCHAIN=go" + semver.Canonical(version) + versionCmd := Version() + versionCmd.Dir = workingDir + versionCmd.Env = append(os.Environ(), toolchainArg) + + log.Printf( + "Trying to install Go %s using its canonical representation in `%s`.", + version, + workingDir, + ) + + // Run the command. If something goes wrong, report it to the log and signal failure + // to the caller. + if versionErr := versionCmd.Run(); versionErr != nil { + log.Printf( + "Failed to invoke `%s go version` in %s: %s\n", + toolchainArg, + versionCmd.Dir, + versionErr.Error(), + ) + + return false + } + + // Add the version to the set of versions that we know are installed and signal + // success to the caller. + addGoVersion(version) + return true +} + // Returns the current Go version in semver format, e.g. v1.14.4 func GetEnvGoSemVer() string { goVersion := GetEnvGoVersion() From c74d6348f9c35952fe0769b46f5770070a7f3c66 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 20 Mar 2024 13:30:10 +0000 Subject: [PATCH 420/731] Go: Run `go` with a valid toolchain version if we have found an invalid one --- go/extractor/project/project.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/go/extractor/project/project.go b/go/extractor/project/project.go index 580be07eceb6..7deb2d2ad94e 100644 --- a/go/extractor/project/project.go +++ b/go/extractor/project/project.go @@ -212,6 +212,16 @@ func LoadGoModules(emitDiagnostics bool, goModFilePaths []string) []*GoModule { if modFile.Toolchain == nil && modFile.Go != nil && !toolchainVersionRe.Match([]byte(modFile.Go.Version)) && semver.Compare("v"+modFile.Go.Version, "v1.21.0") >= 0 { diagnostics.EmitInvalidToolchainVersion(goModFilePath, modFile.Go.Version) + + modPath := filepath.Dir(goModFilePath) + + log.Printf( + "`%s` is not a valid toolchain version, trying to install it explicitly using the canonical representation in `%s`.", + modFile.Go.Version, + modPath, + ) + + toolchain.InstallVersion(modPath, modFile.Go.Version) } } From 79dc7fcc048ab7c7402f7a0f5702c14155c7088d Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 20 Mar 2024 15:21:36 +0100 Subject: [PATCH 421/731] C#: Avoid using TRAP stack in buildless mode --- csharp/extractor/Semmle.Extraction/Context.cs | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction/Context.cs b/csharp/extractor/Semmle.Extraction/Context.cs index a6442758daf2..6697bfb06fdf 100644 --- a/csharp/extractor/Semmle.Extraction/Context.cs +++ b/csharp/extractor/Semmle.Extraction/Context.cs @@ -274,28 +274,36 @@ private void Populate(ISymbol? optionalSymbol, CachedEntity entity) bool duplicationGuard, deferred; - switch (entity.TrapStackBehaviour) + if (Extractor.Mode is ExtractorMode.Standalone) { - case TrapStackBehaviour.NeedsLabel: - if (!tagStack.Any()) - ExtractionError("TagStack unexpectedly empty", optionalSymbol, entity); - duplicationGuard = false; - deferred = false; - break; - case TrapStackBehaviour.NoLabel: - duplicationGuard = false; - deferred = tagStack.Any(); - break; - case TrapStackBehaviour.OptionalLabel: - duplicationGuard = false; - deferred = false; - break; - case TrapStackBehaviour.PushesLabel: - duplicationGuard = true; - deferred = duplicationGuard && tagStack.Any(); - break; - default: - throw new InternalError("Unexpected TrapStackBehaviour"); + duplicationGuard = false; + deferred = false; + } + else + { + switch (entity.TrapStackBehaviour) + { + case TrapStackBehaviour.NeedsLabel: + if (!tagStack.Any()) + ExtractionError("TagStack unexpectedly empty", optionalSymbol, entity); + duplicationGuard = false; + deferred = false; + break; + case TrapStackBehaviour.NoLabel: + duplicationGuard = false; + deferred = tagStack.Any(); + break; + case TrapStackBehaviour.OptionalLabel: + duplicationGuard = false; + deferred = false; + break; + case TrapStackBehaviour.PushesLabel: + duplicationGuard = true; + deferred = duplicationGuard && tagStack.Any(); + break; + default: + throw new InternalError("Unexpected TrapStackBehaviour"); + } } var a = duplicationGuard && IsEntityDuplicationGuarded(entity, out var loc) From 969676975d5be45ace129e709988d52734f8bf2f Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Wed, 20 Mar 2024 15:28:56 +0100 Subject: [PATCH 422/731] C#: Address review comments. --- .../library-tests/dataflow/library/FlowSummariesFiltered.ql | 2 +- csharp/ql/test/shared/FlowSummaries.qll | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql index 5bbb7ec0c6fd..9c19d00cb59b 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.ql @@ -13,7 +13,7 @@ class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable { this.propagatesFlow(input, output, preservesValue) and not exists(IncludeSummarizedCallable rsc | isBaseCallableOrPrototype(rsc) and - rsc.(SummarizedCallableImpl).propagatesFlow(input, output, preservesValue) and + rsc.propagatesFlow(input, output, preservesValue) and this.(UnboundCallable).overridesOrImplementsUnbound(rsc) ) } diff --git a/csharp/ql/test/shared/FlowSummaries.qll b/csharp/ql/test/shared/FlowSummaries.qll index b68966afa340..2fecea3f62f4 100644 --- a/csharp/ql/test/shared/FlowSummaries.qll +++ b/csharp/ql/test/shared/FlowSummaries.qll @@ -17,6 +17,4 @@ class IncludeSummarizedCallable extends SummarizedCallableImplFinal { ) { this.propagatesFlow(input, output, preservesValue) } - - string toString() { result = super.toString() } } From 90fbacc7bf33203c89346d460676d61faff4ab9c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 14:29:48 +0000 Subject: [PATCH 423/731] Java/Shared: Use getLocation instead of hasLocationInfo. --- .../semmle/code/java/dataflow/TypeFlow.qll | 12 +++-------- shared/typeflow/codeql/typeflow/TypeFlow.qll | 20 +++++++------------ .../codeql/typeflow/internal/TypeFlowImpl.qll | 5 +++-- 3 files changed, 13 insertions(+), 24 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index 9a29809f15cc..ad423d6d3c70 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -14,7 +14,7 @@ private import semmle.code.java.dataflow.internal.BaseSSA private import semmle.code.java.controlflow.Guards private import codeql.typeflow.TypeFlow -private module Input implements TypeFlowInput { +private module Input implements TypeFlowInput<J::Location> { private newtype TTypeFlowNode = TField(Field f) { not f.getType() instanceof PrimitiveType } or TSsa(BaseSsaVariable ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or @@ -38,12 +38,6 @@ private module Input implements TypeFlowInput { result = this.asMethod().toString() } - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } - Location getLocation() { result = this.asField().getLocation() or result = this.asSsa().getLocation() or @@ -164,7 +158,7 @@ private module Input implements TypeFlowInput { */ pragma[nomagic] private predicate upcastCand(TypeFlowNode n, RefType t1, RefType t1e, RefType t2, RefType t2e) { - exists(TypeFlowNode next | step(n, next) or Make<Input>::joinStep(n, next) | + exists(TypeFlowNode next | step(n, next) or Make<J::Location, Input>::joinStep(n, next) | n.getType() = t1 and next.getType() = t2 and t1.getErasure() = t1e and @@ -356,7 +350,7 @@ private module Input implements TypeFlowInput { cached private module TypeFlowBounds { - private module TypeFlow = Make<Input>; + private module TypeFlow = Make<J::Location, Input>; /** * Holds if the runtime type of `f` is bounded by `t` and if this bound is diff --git a/shared/typeflow/codeql/typeflow/TypeFlow.qll b/shared/typeflow/codeql/typeflow/TypeFlow.qll index bdf90dab7cf7..7551f0f7e44e 100644 --- a/shared/typeflow/codeql/typeflow/TypeFlow.qll +++ b/shared/typeflow/codeql/typeflow/TypeFlow.qll @@ -8,8 +8,10 @@ * explicit or implicit cast that lost type information. */ +private import codeql.util.Location + /** Provides the input specification. */ -signature module TypeFlowInput { +signature module TypeFlowInput<LocationSig Location> { /** * A node for which type information is available. For example, expressions * and method declarations. @@ -21,16 +23,8 @@ signature module TypeFlowInput { /** Gets the type of this node. */ Type getType(); - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ); + /** Gets the location of this node. */ + Location getLocation(); } /** @@ -112,6 +106,6 @@ private import internal.TypeFlowImpl as Impl /** * Provides an implementation of type-flow using input `I`. */ -module Make<TypeFlowInput I> { - import Impl::TypeFlow<I> +module Make<LocationSig Location, TypeFlowInput<Location> I> { + import Impl::TypeFlow<Location, I> } diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index 121bc605dbc6..787c9b55de21 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -1,7 +1,8 @@ private import codeql.typeflow.TypeFlow +private import codeql.util.Location private import codeql.util.Unit -module TypeFlow<TypeFlowInput I> { +module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { private import I /** @@ -56,7 +57,7 @@ module TypeFlow<TypeFlowInput I> { n1 = rank[r](TypeFlowNode n, int startline, int startcolumn | edge(n, n2) and - n.hasLocationInfo(_, startline, startcolumn, _, _) + n.getLocation().hasLocationInfo(_, startline, startcolumn, _, _) | n order by startline, startcolumn ) From 6a65c46b2e7fe3888a2c3c025751488eb848991b Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 14:36:12 +0000 Subject: [PATCH 424/731] Java/Shared: Share more 'isNull' computations. --- java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll | 6 ++---- shared/typeflow/codeql/typeflow/TypeFlow.qll | 6 ++---- shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll | 7 +++++++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index ad423d6d3c70..ed526ba2eda9 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -125,7 +125,7 @@ private module Input implements TypeFlowInput<J::Location> { /** * Holds if `null` is the only value that flows to `n`. */ - predicate isNull(TypeFlowNode n) { + predicate isNullValue(TypeFlowNode n) { n.asExpr() instanceof NullLiteral or exists(LocalVariableDeclExpr decl | @@ -134,9 +134,7 @@ private module Input implements TypeFlowInput<J::Location> { not exists(decl.getInit()) ) or - exists(TypeFlowNode mid | isNull(mid) and step(mid, n)) - or - forex(TypeFlowNode mid | joinStep0(mid, n) | isNull(mid)) and + forex(TypeFlowNode mid | joinStep0(mid, n) | Make<J::Location, Input>::isNull(mid)) and // Fields that are never assigned a non-null value are probably set by // reflection and are thus not always null. not exists(n.asField()) diff --git a/shared/typeflow/codeql/typeflow/TypeFlow.qll b/shared/typeflow/codeql/typeflow/TypeFlow.qll index 7551f0f7e44e..c1679b1b1fe0 100644 --- a/shared/typeflow/codeql/typeflow/TypeFlow.qll +++ b/shared/typeflow/codeql/typeflow/TypeFlow.qll @@ -39,10 +39,8 @@ signature module TypeFlowInput<LocationSig Location> { */ predicate step(TypeFlowNode n1, TypeFlowNode n2); - /** - * Holds if `null` is the only value that flows to `n`. - */ - predicate isNull(TypeFlowNode n); + /** Holds if `n` represents a `null` value. */ + predicate isNullValue(TypeFlowNode n); /** A type. */ class Type { diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index 787c9b55de21..e486cfe3072a 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -5,6 +5,13 @@ private import codeql.util.Unit module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { private import I + /** Holds if `null` is the only value that flows to `n`. */ + predicate isNull(TypeFlowNode n) { + isNullValue(n) + or + exists(TypeFlowNode mid | isNull(mid) and step(mid, n)) + } + /** * Holds if data can flow from `n1` to `n2` in one step, `n1` is not necessarily * functionally determined by `n2`, and `n1` might take a non-null value. From ebac171b2b89758161757172ab1c76a6fde492de Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 14:40:16 +0000 Subject: [PATCH 425/731] Java/Shared: Rename 'joinStep0' to 'joinStep'. --- java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll | 4 ++-- shared/typeflow/codeql/typeflow/TypeFlow.qll | 2 +- shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index ed526ba2eda9..afec2a22ae8e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -75,7 +75,7 @@ private module Input implements TypeFlowInput<J::Location> { * Holds if data can flow from `n1` to `n2` in one step, and `n1` is not * necessarily functionally determined by `n2`. */ - predicate joinStep0(TypeFlowNode n1, TypeFlowNode n2) { + predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { n2.asExpr().(ChooseExpr).getAResultExpr() = n1.asExpr() or exists(Field f, Expr e | @@ -134,7 +134,7 @@ private module Input implements TypeFlowInput<J::Location> { not exists(decl.getInit()) ) or - forex(TypeFlowNode mid | joinStep0(mid, n) | Make<J::Location, Input>::isNull(mid)) and + forex(TypeFlowNode mid | joinStep(mid, n) | Make<J::Location, Input>::isNull(mid)) and // Fields that are never assigned a non-null value are probably set by // reflection and are thus not always null. not exists(n.asField()) diff --git a/shared/typeflow/codeql/typeflow/TypeFlow.qll b/shared/typeflow/codeql/typeflow/TypeFlow.qll index c1679b1b1fe0..d2862b776373 100644 --- a/shared/typeflow/codeql/typeflow/TypeFlow.qll +++ b/shared/typeflow/codeql/typeflow/TypeFlow.qll @@ -31,7 +31,7 @@ signature module TypeFlowInput<LocationSig Location> { * Holds if data can flow from `n1` to `n2` in one step, and `n1` is not * necessarily functionally determined by `n2`. */ - predicate joinStep0(TypeFlowNode n1, TypeFlowNode n2); + predicate joinStep(TypeFlowNode n1, TypeFlowNode n2); /** * Holds if data can flow from `n1` to `n2` in one step, and `n1` is diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index e486cfe3072a..d640c4b67e19 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -16,7 +16,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { * Holds if data can flow from `n1` to `n2` in one step, `n1` is not necessarily * functionally determined by `n2`, and `n1` might take a non-null value. */ - predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep0(n1, n2) and not isNull(n1) } + predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { I::joinStep(n1, n2) and not isNull(n1) } private predicate anyStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep(n1, n2) or step(n1, n2) } From 14aff5c94c2e838b51fd1e50bee3943aea5e17eb Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 14:54:53 +0000 Subject: [PATCH 426/731] C++: Convert 'cpp/missing-check-scanf' to a path-problem query. --- cpp/ql/src/Critical/MissingCheckScanf.ql | 29 ++-- .../MissingCheckScanf.expected | 154 ++++++++++++++++-- 2 files changed, 155 insertions(+), 28 deletions(-) diff --git a/cpp/ql/src/Critical/MissingCheckScanf.ql b/cpp/ql/src/Critical/MissingCheckScanf.ql index 3418fb8485c8..ba09aae2a738 100644 --- a/cpp/ql/src/Critical/MissingCheckScanf.ql +++ b/cpp/ql/src/Critical/MissingCheckScanf.ql @@ -2,7 +2,7 @@ * @name Missing return-value check for a 'scanf'-like function * @description Failing to check that a call to 'scanf' actually writes to an * output variable can lead to unexpected behavior at reading time. - * @kind problem + * @kind path-problem * @problem.severity warning * @security-severity 7.5 * @precision medium @@ -20,6 +20,7 @@ import semmle.code.cpp.dataflow.new.DataFlow::DataFlow import semmle.code.cpp.ir.IR import semmle.code.cpp.ir.ValueNumbering import ScanfChecks +import ScanfToUseFlow::PathGraph /** * Holds if `n` represents an uninitialized stack-allocated variable, or a @@ -118,10 +119,13 @@ module ScanfToUseFlow = Global<ScanfToUseConfig>; * Holds if `source` is the `index`'th argument to the `scanf`-like call `call`, and `sink` is * a dataflow node that represents the expression `e`. */ -predicate hasFlow(Node source, ScanfFunctionCall call, int index, Node sink, Expr e) { - isSource(call, index, source, _) and - ScanfToUseFlow::flow(source, sink) and - isSink(sink, e) +predicate flowPath( + ScanfToUseFlow::PathNode source, ScanfFunctionCall call, int index, ScanfToUseFlow::PathNode sink, + Expr e +) { + isSource(call, index, source.getNode(), _) and + ScanfToUseFlow::flowPath(source, sink) and + isSink(sink.getNode(), e) } /** @@ -143,9 +147,12 @@ int getMinimumGuardConstant(ScanfFunctionCall call, int index) { * Holds the access to `e` isn't guarded by a check that ensures that `call` returned * at least `minGuard`. */ -predicate hasNonGuardedAccess(ScanfFunctionCall call, Expr e, int minGuard) { +predicate hasNonGuardedAccess( + ScanfToUseFlow::PathNode source, ScanfFunctionCall call, ScanfToUseFlow::PathNode sink, Expr e, + int minGuard +) { exists(int index | - hasFlow(_, call, index, _, e) and + flowPath(source, call, index, sink, e) and minGuard = getMinimumGuardConstant(call, index) | not exists(int value | @@ -173,9 +180,11 @@ BasicBlock blockGuardedBy(int value, string op, ScanfFunctionCall call) { ) } -from ScanfFunctionCall call, Expr e, int minGuard -where hasNonGuardedAccess(call, e, minGuard) -select e, +from + ScanfToUseFlow::PathNode source, ScanfToUseFlow::PathNode sink, ScanfFunctionCall call, Expr e, + int minGuard +where hasNonGuardedAccess(source, call, sink, e, minGuard) +select e, source, sink, "This variable is read, but may not have been written. " + "It should be guarded by a check that the $@ returns at least " + minGuard + ".", call, call.toString() diff --git a/cpp/ql/test/query-tests/Critical/MissingCheckScanf/MissingCheckScanf.expected b/cpp/ql/test/query-tests/Critical/MissingCheckScanf/MissingCheckScanf.expected index 69f9ab820eb5..8bb2c9643a9f 100644 --- a/cpp/ql/test/query-tests/Critical/MissingCheckScanf/MissingCheckScanf.expected +++ b/cpp/ql/test/query-tests/Critical/MissingCheckScanf/MissingCheckScanf.expected @@ -1,18 +1,136 @@ -| test.cpp:35:7:35:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:34:3:34:7 | call to scanf | call to scanf | -| test.cpp:68:7:68:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:67:3:67:7 | call to scanf | call to scanf | -| test.cpp:80:7:80:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:79:3:79:7 | call to scanf | call to scanf | -| test.cpp:90:7:90:8 | * ... | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:89:3:89:7 | call to scanf | call to scanf | -| test.cpp:98:7:98:8 | * ... | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:97:3:97:7 | call to scanf | call to scanf | -| test.cpp:108:7:108:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:107:3:107:8 | call to fscanf | call to fscanf | -| test.cpp:115:7:115:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:114:3:114:8 | call to sscanf | call to sscanf | -| test.cpp:224:8:224:8 | j | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 2. | test.cpp:221:7:221:11 | call to scanf | call to scanf | -| test.cpp:248:9:248:9 | d | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 2. | test.cpp:246:25:246:29 | call to scanf | call to scanf | -| test.cpp:252:9:252:9 | d | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 2. | test.cpp:250:14:250:18 | call to scanf | call to scanf | -| test.cpp:272:7:272:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:271:3:271:7 | call to scanf | call to scanf | -| test.cpp:280:7:280:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:279:3:279:7 | call to scanf | call to scanf | -| test.cpp:292:7:292:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:291:3:291:7 | call to scanf | call to scanf | -| test.cpp:404:25:404:25 | u | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:403:6:403:11 | call to sscanf | call to sscanf | -| test.cpp:416:7:416:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:413:7:413:11 | call to scanf | call to scanf | -| test.cpp:423:7:423:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:420:7:420:11 | call to scanf | call to scanf | -| test.cpp:460:6:460:10 | value | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:455:12:455:17 | call to sscanf | call to sscanf | -| test.cpp:474:6:474:10 | value | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:467:8:467:12 | call to scanf | call to scanf | +edges +| test.cpp:34:15:34:16 | scanf output argument | test.cpp:35:7:35:7 | i | provenance | | +| test.cpp:41:19:41:20 | scanf output argument | test.cpp:43:8:43:8 | i | provenance | | +| test.cpp:58:19:58:20 | scanf output argument | test.cpp:60:8:60:8 | i | provenance | | +| test.cpp:67:15:67:16 | scanf output argument | test.cpp:68:7:68:7 | i | provenance | | +| test.cpp:70:19:70:20 | scanf output argument | test.cpp:72:8:72:8 | i | provenance | | +| test.cpp:79:15:79:16 | scanf output argument | test.cpp:80:7:80:7 | i | provenance | | +| test.cpp:89:15:89:15 | scanf output argument | test.cpp:90:7:90:8 | * ... | provenance | | +| test.cpp:97:15:97:15 | scanf output argument | test.cpp:98:7:98:8 | * ... | provenance | | +| test.cpp:107:32:107:33 | fscanf output argument | test.cpp:108:7:108:7 | i | provenance | | +| test.cpp:114:32:114:33 | sscanf output argument | test.cpp:115:7:115:7 | i | provenance | | +| test.cpp:121:38:121:39 | _scanf_l output argument | test.cpp:123:8:123:8 | i | provenance | | +| test.cpp:132:19:132:20 | scanf output argument | test.cpp:134:8:134:8 | i | provenance | | +| test.cpp:141:19:141:20 | scanf output argument | test.cpp:143:8:143:8 | i | provenance | | +| test.cpp:150:23:150:24 | scanf output argument | test.cpp:154:9:154:9 | i | provenance | | +| test.cpp:181:19:181:20 | scanf output argument | test.cpp:185:8:185:8 | i | provenance | | +| test.cpp:193:19:193:20 | scanf output argument | test.cpp:197:8:197:8 | i | provenance | | +| test.cpp:211:22:211:23 | scanf output argument | test.cpp:213:8:213:8 | i | provenance | | +| test.cpp:221:22:221:23 | scanf output argument | test.cpp:223:8:223:8 | i | provenance | | +| test.cpp:221:26:221:27 | scanf output argument | test.cpp:224:8:224:8 | j | provenance | | +| test.cpp:231:22:231:23 | scanf output argument | test.cpp:233:8:233:8 | i | provenance | | +| test.cpp:231:26:231:27 | scanf output argument | test.cpp:234:8:234:8 | j | provenance | | +| test.cpp:246:44:246:45 | scanf output argument | test.cpp:248:9:248:9 | d | provenance | | +| test.cpp:250:33:250:34 | scanf output argument | test.cpp:252:9:252:9 | d | provenance | | +| test.cpp:271:15:271:16 | scanf output argument | test.cpp:272:7:272:7 | i | provenance | | +| test.cpp:279:15:279:16 | scanf output argument | test.cpp:280:7:280:7 | i | provenance | | +| test.cpp:291:15:291:16 | scanf output argument | test.cpp:292:7:292:7 | i | provenance | | +| test.cpp:325:34:325:35 | sscanf output argument | test.cpp:327:8:327:8 | i | provenance | | +| test.cpp:325:38:325:39 | sscanf output argument | test.cpp:328:8:328:8 | j | provenance | | +| test.cpp:335:22:335:23 | scanf output argument | test.cpp:337:8:337:8 | i | provenance | | +| test.cpp:344:23:344:24 | scanf output argument | test.cpp:346:8:346:8 | i | provenance | | +| test.cpp:353:26:353:27 | scanf output argument | test.cpp:354:8:354:8 | d | provenance | | +| test.cpp:353:30:353:31 | scanf output argument | test.cpp:355:8:355:8 | n | provenance | | +| test.cpp:362:62:362:63 | sscanf output argument | test.cpp:364:17:364:17 | n | provenance | | +| test.cpp:403:29:403:30 | sscanf output argument | test.cpp:404:18:404:25 | u | provenance | | +| test.cpp:413:19:413:20 | scanf output argument | test.cpp:416:7:416:7 | i | provenance | | +| test.cpp:420:19:420:20 | scanf output argument | test.cpp:423:7:423:7 | i | provenance | | +| test.cpp:455:41:455:46 | sscanf output argument | test.cpp:460:6:460:10 | value | provenance | | +| test.cpp:467:20:467:25 | scanf output argument | test.cpp:474:6:474:10 | value | provenance | | +nodes +| test.cpp:34:15:34:16 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:35:7:35:7 | i | semmle.label | i | +| test.cpp:41:19:41:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:43:8:43:8 | i | semmle.label | i | +| test.cpp:58:19:58:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:60:8:60:8 | i | semmle.label | i | +| test.cpp:67:15:67:16 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:68:7:68:7 | i | semmle.label | i | +| test.cpp:70:19:70:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:72:8:72:8 | i | semmle.label | i | +| test.cpp:79:15:79:16 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:80:7:80:7 | i | semmle.label | i | +| test.cpp:89:15:89:15 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:90:7:90:8 | * ... | semmle.label | * ... | +| test.cpp:97:15:97:15 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:98:7:98:8 | * ... | semmle.label | * ... | +| test.cpp:107:32:107:33 | fscanf output argument | semmle.label | fscanf output argument | +| test.cpp:108:7:108:7 | i | semmle.label | i | +| test.cpp:114:32:114:33 | sscanf output argument | semmle.label | sscanf output argument | +| test.cpp:115:7:115:7 | i | semmle.label | i | +| test.cpp:121:38:121:39 | _scanf_l output argument | semmle.label | _scanf_l output argument | +| test.cpp:123:8:123:8 | i | semmle.label | i | +| test.cpp:132:19:132:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:134:8:134:8 | i | semmle.label | i | +| test.cpp:141:19:141:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:143:8:143:8 | i | semmle.label | i | +| test.cpp:150:23:150:24 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:154:9:154:9 | i | semmle.label | i | +| test.cpp:181:19:181:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:185:8:185:8 | i | semmle.label | i | +| test.cpp:193:19:193:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:197:8:197:8 | i | semmle.label | i | +| test.cpp:211:22:211:23 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:213:8:213:8 | i | semmle.label | i | +| test.cpp:221:22:221:23 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:221:26:221:27 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:223:8:223:8 | i | semmle.label | i | +| test.cpp:224:8:224:8 | j | semmle.label | j | +| test.cpp:231:22:231:23 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:231:26:231:27 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:233:8:233:8 | i | semmle.label | i | +| test.cpp:234:8:234:8 | j | semmle.label | j | +| test.cpp:246:44:246:45 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:248:9:248:9 | d | semmle.label | d | +| test.cpp:250:33:250:34 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:252:9:252:9 | d | semmle.label | d | +| test.cpp:271:15:271:16 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:272:7:272:7 | i | semmle.label | i | +| test.cpp:279:15:279:16 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:280:7:280:7 | i | semmle.label | i | +| test.cpp:291:15:291:16 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:292:7:292:7 | i | semmle.label | i | +| test.cpp:325:34:325:35 | sscanf output argument | semmle.label | sscanf output argument | +| test.cpp:325:38:325:39 | sscanf output argument | semmle.label | sscanf output argument | +| test.cpp:327:8:327:8 | i | semmle.label | i | +| test.cpp:328:8:328:8 | j | semmle.label | j | +| test.cpp:335:22:335:23 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:337:8:337:8 | i | semmle.label | i | +| test.cpp:344:23:344:24 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:346:8:346:8 | i | semmle.label | i | +| test.cpp:353:26:353:27 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:353:30:353:31 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:354:8:354:8 | d | semmle.label | d | +| test.cpp:355:8:355:8 | n | semmle.label | n | +| test.cpp:362:62:362:63 | sscanf output argument | semmle.label | sscanf output argument | +| test.cpp:364:17:364:17 | n | semmle.label | n | +| test.cpp:403:29:403:30 | sscanf output argument | semmle.label | sscanf output argument | +| test.cpp:404:18:404:25 | u | semmle.label | u | +| test.cpp:413:19:413:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:416:7:416:7 | i | semmle.label | i | +| test.cpp:420:19:420:20 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:423:7:423:7 | i | semmle.label | i | +| test.cpp:455:41:455:46 | sscanf output argument | semmle.label | sscanf output argument | +| test.cpp:460:6:460:10 | value | semmle.label | value | +| test.cpp:467:20:467:25 | scanf output argument | semmle.label | scanf output argument | +| test.cpp:474:6:474:10 | value | semmle.label | value | +subpaths +#select +| test.cpp:35:7:35:7 | i | test.cpp:34:15:34:16 | scanf output argument | test.cpp:35:7:35:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:34:3:34:7 | call to scanf | call to scanf | +| test.cpp:68:7:68:7 | i | test.cpp:67:15:67:16 | scanf output argument | test.cpp:68:7:68:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:67:3:67:7 | call to scanf | call to scanf | +| test.cpp:80:7:80:7 | i | test.cpp:79:15:79:16 | scanf output argument | test.cpp:80:7:80:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:79:3:79:7 | call to scanf | call to scanf | +| test.cpp:90:7:90:8 | * ... | test.cpp:89:15:89:15 | scanf output argument | test.cpp:90:7:90:8 | * ... | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:89:3:89:7 | call to scanf | call to scanf | +| test.cpp:98:7:98:8 | * ... | test.cpp:97:15:97:15 | scanf output argument | test.cpp:98:7:98:8 | * ... | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:97:3:97:7 | call to scanf | call to scanf | +| test.cpp:108:7:108:7 | i | test.cpp:107:32:107:33 | fscanf output argument | test.cpp:108:7:108:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:107:3:107:8 | call to fscanf | call to fscanf | +| test.cpp:115:7:115:7 | i | test.cpp:114:32:114:33 | sscanf output argument | test.cpp:115:7:115:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:114:3:114:8 | call to sscanf | call to sscanf | +| test.cpp:224:8:224:8 | j | test.cpp:221:26:221:27 | scanf output argument | test.cpp:224:8:224:8 | j | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 2. | test.cpp:221:7:221:11 | call to scanf | call to scanf | +| test.cpp:248:9:248:9 | d | test.cpp:246:44:246:45 | scanf output argument | test.cpp:248:9:248:9 | d | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 2. | test.cpp:246:25:246:29 | call to scanf | call to scanf | +| test.cpp:252:9:252:9 | d | test.cpp:250:33:250:34 | scanf output argument | test.cpp:252:9:252:9 | d | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 2. | test.cpp:250:14:250:18 | call to scanf | call to scanf | +| test.cpp:272:7:272:7 | i | test.cpp:271:15:271:16 | scanf output argument | test.cpp:272:7:272:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:271:3:271:7 | call to scanf | call to scanf | +| test.cpp:280:7:280:7 | i | test.cpp:279:15:279:16 | scanf output argument | test.cpp:280:7:280:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:279:3:279:7 | call to scanf | call to scanf | +| test.cpp:292:7:292:7 | i | test.cpp:291:15:291:16 | scanf output argument | test.cpp:292:7:292:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:291:3:291:7 | call to scanf | call to scanf | +| test.cpp:404:25:404:25 | u | test.cpp:403:29:403:30 | sscanf output argument | test.cpp:404:18:404:25 | u | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:403:6:403:11 | call to sscanf | call to sscanf | +| test.cpp:416:7:416:7 | i | test.cpp:413:19:413:20 | scanf output argument | test.cpp:416:7:416:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:413:7:413:11 | call to scanf | call to scanf | +| test.cpp:423:7:423:7 | i | test.cpp:420:19:420:20 | scanf output argument | test.cpp:423:7:423:7 | i | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:420:7:420:11 | call to scanf | call to scanf | +| test.cpp:460:6:460:10 | value | test.cpp:455:41:455:46 | sscanf output argument | test.cpp:460:6:460:10 | value | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:455:12:455:17 | call to sscanf | call to sscanf | +| test.cpp:474:6:474:10 | value | test.cpp:467:20:467:25 | scanf output argument | test.cpp:474:6:474:10 | value | This variable is read, but may not have been written. It should be guarded by a check that the $@ returns at least 1. | test.cpp:467:8:467:12 | call to scanf | call to scanf | From 96cd259eda97c163d19cd70b4253900bcdd1c7fc Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 14:56:39 +0000 Subject: [PATCH 427/731] C++: Add change note. --- .../2024-03-20-missing-check-scanf-path-problem.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md diff --git a/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md b/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md new file mode 100644 index 000000000000..12a185add1ea --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. \ No newline at end of file From 5476f42d2c7872d9343e8f1d122e7ed4a33f5b98 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 14:11:28 +0000 Subject: [PATCH 428/731] C++: Simplify use of 'GuardCondition's in 'cpp/missing-check-scanf'. --- cpp/ql/src/Critical/MissingCheckScanf.ql | 31 ++++++++---------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/cpp/ql/src/Critical/MissingCheckScanf.ql b/cpp/ql/src/Critical/MissingCheckScanf.ql index ba09aae2a738..5d8ce9e88469 100644 --- a/cpp/ql/src/Critical/MissingCheckScanf.ql +++ b/cpp/ql/src/Critical/MissingCheckScanf.ql @@ -18,7 +18,7 @@ import semmle.code.cpp.commons.Scanf import semmle.code.cpp.controlflow.Guards import semmle.code.cpp.dataflow.new.DataFlow::DataFlow import semmle.code.cpp.ir.IR -import semmle.code.cpp.ir.ValueNumbering +import semmle.code.cpp.valuenumbering.GlobalValueNumbering import ScanfChecks import ScanfToUseFlow::PathGraph @@ -155,31 +155,20 @@ predicate hasNonGuardedAccess( flowPath(source, call, index, sink, e) and minGuard = getMinimumGuardConstant(call, index) | - not exists(int value | - e.getBasicBlock() = blockGuardedBy(value, "==", call) and minGuard <= value + not exists(GuardCondition guard | + // call == k and k >= minGuard so call >= minGuard + guard + .ensuresEq(globalValueNumber(call).getAnExpr(), any(int k | minGuard <= k), + e.getBasicBlock(), true) or - e.getBasicBlock() = blockGuardedBy(value, "<", call) and minGuard - 1 <= value - or - e.getBasicBlock() = blockGuardedBy(value, "<=", call) and minGuard <= value + // call >= k and k >= minGuard so call >= minGuard + guard + .ensuresLt(globalValueNumber(call).getAnExpr(), any(int k | minGuard <= k), + e.getBasicBlock(), false) ) ) } -/** Returns a block guarded by the assertion of `value op call` */ -BasicBlock blockGuardedBy(int value, string op, ScanfFunctionCall call) { - exists(GuardCondition g, Expr left, Expr right | - right = g.getAChild() and - value = left.getValue().toInt() and - localExprFlow(call, right) - | - g.ensuresEq(left, right, 0, result, true) and op = "==" - or - g.ensuresLt(left, right, 0, result, true) and op = "<" - or - g.ensuresLt(left, right, 1, result, true) and op = "<=" - ) -} - from ScanfToUseFlow::PathNode source, ScanfToUseFlow::PathNode sink, ScanfFunctionCall call, Expr e, int minGuard From f31bb1391dee7f56f8d660dec61ec52262ac3668 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 16:59:39 +0000 Subject: [PATCH 429/731] C++: Simplify 'checkedForEof'. --- cpp/ql/src/Critical/ScanfChecks.qll | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/cpp/ql/src/Critical/ScanfChecks.qll b/cpp/ql/src/Critical/ScanfChecks.qll index 403df4715f3e..6f50172537e4 100644 --- a/cpp/ql/src/Critical/ScanfChecks.qll +++ b/cpp/ql/src/Critical/ScanfChecks.qll @@ -3,10 +3,6 @@ private import semmle.code.cpp.commons.Scanf private import semmle.code.cpp.controlflow.IRGuards private import semmle.code.cpp.ir.ValueNumbering -private ConstantInstruction getZeroInstruction() { result.getValue() = "0" } - -private Operand zero() { result.getDef() = getZeroInstruction() } - private predicate exprInBooleanContext(Expr e) { exists(IRGuardCondition gc | exists(Instruction i | @@ -46,7 +42,7 @@ private predicate checkedForEof(ScanfFunctionCall call) { gc.comparesEq(valueNumber(i).getAUse(), getEofValue().toInt(), _, _) or // call < 0 (EOF is guaranteed to be negative) - gc.comparesLt(valueNumber(i).getAUse(), zero(), 0, true, _) + gc.comparesLt(valueNumber(i).getAUse(), 0, true, _) ) ) } From 1330c885c8ceecbe670398806139b7280164441d Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 18:04:59 +0000 Subject: [PATCH 430/731] C++: Use 'asIndirectExpr' in the sink of 'ExistsAnyFlowConfig. --- .../Protocols/TlsSettingsMisconfiguration.ql | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql b/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql index 61989db1c6e9..f20b299da60c 100644 --- a/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql +++ b/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql @@ -12,34 +12,42 @@ import cpp import semmle.code.cpp.security.boostorg.asio.protocols +predicate isSourceImpl(DataFlow::Node source, ConstructorCall cc) { + exists(BoostorgAsio::SslContextClass c | c.getAContructorCall() = cc and cc = source.asExpr()) +} + +predicate isSinkImpl(DataFlow::Node sink, FunctionCall fcSetOptions) { + exists(BoostorgAsio::SslSetOptionsFunction f | + f.getACallToThisFunction() = fcSetOptions and + fcSetOptions.getQualifier() = sink.asIndirectExpr() + ) +} + module ExistsAnyFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { - exists(BoostorgAsio::SslContextClass c | c.getAContructorCall() = source.asExpr()) - } + predicate isSource(DataFlow::Node source) { isSourceImpl(source, _) } - predicate isSink(DataFlow::Node sink) { - exists(BoostorgAsio::SslSetOptionsFunction f, FunctionCall fcSetOptions | - f.getACallToThisFunction() = fcSetOptions and - fcSetOptions.getQualifier() = sink.asExpr() - ) - } + predicate isSink(DataFlow::Node sink) { isSinkImpl(sink, _) } } module ExistsAnyFlow = DataFlow::Global<ExistsAnyFlowConfig>; bindingset[flag] predicate isOptionSet(ConstructorCall cc, int flag, FunctionCall fcSetOptions) { - exists(VariableAccess contextSetOptions | - ExistsAnyFlow::flow(DataFlow::exprNode(cc), DataFlow::exprNode(contextSetOptions)) and - exists(BoostorgAsio::SslSetOptionsFunction f | f.getACallToThisFunction() = fcSetOptions | - contextSetOptions = fcSetOptions.getQualifier() and - forall(Expr optionArgument, Expr optionArgumentSource | - optionArgument = fcSetOptions.getArgument(0) and - BoostorgAsio::SslOptionFlow::flow(DataFlow::exprNode(optionArgumentSource), - DataFlow::exprNode(optionArgument)) - | - optionArgument.getValue().toInt().bitShiftRight(16).bitAnd(flag) = flag - ) + exists( + VariableAccess contextSetOptions, BoostorgAsio::SslSetOptionsFunction f, DataFlow::Node source, + DataFlow::Node sink + | + isSourceImpl(source, cc) and + isSinkImpl(sink, fcSetOptions) and + ExistsAnyFlow::flow(source, sink) and + f.getACallToThisFunction() = fcSetOptions and + contextSetOptions = fcSetOptions.getQualifier() and + forall(Expr optionArgument, Expr optionArgumentSource | + optionArgument = fcSetOptions.getArgument(0) and + BoostorgAsio::SslOptionFlow::flow(DataFlow::exprNode(optionArgumentSource), + DataFlow::exprNode(optionArgument)) + | + optionArgument.getValue().toInt().bitShiftRight(16).bitAnd(flag) = flag ) ) } From 0ef8c7d87f368db9ece16cfe00d5acb9e5b2409b Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Wed, 20 Mar 2024 18:05:14 +0000 Subject: [PATCH 431/731] C++: Accept test changes. --- .../Protocols/TlsSettingsMisconfiguration.expected | 5 ----- cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected b/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected index f889cb12a684..b2191d5b544a 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Protocols/TlsSettingsMisconfiguration.expected @@ -5,12 +5,7 @@ | test2.cpp:31:32:31:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:31:32:31:64 | sslv23 | sslv23 | test2.cpp:31:32:31:65 | call to context | no_sslv3 has not been set | | test2.cpp:31:32:31:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:31:32:31:64 | sslv23 | sslv23 | test2.cpp:31:32:31:65 | call to context | no_tlsv1 has not been set | | test2.cpp:31:32:31:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:31:32:31:64 | sslv23 | sslv23 | test2.cpp:31:32:31:65 | call to context | no_tlsv1_1 has not been set | -| test2.cpp:38:35:38:98 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:38:65:38:97 | sslv23 | sslv23 | test2.cpp:38:35:38:98 | call to context | no_sslv3 has not been set | -| test2.cpp:38:35:38:98 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:38:65:38:97 | sslv23 | sslv23 | test2.cpp:38:35:38:98 | call to context | no_tlsv1 has not been set | -| test2.cpp:38:35:38:98 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:38:65:38:97 | sslv23 | sslv23 | test2.cpp:38:35:38:98 | call to context | no_tlsv1_1 has not been set | | test2.cpp:45:35:45:98 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:45:65:45:97 | sslv23 | sslv23 | test2.cpp:45:35:45:98 | call to context | no_sslv3 has not been set | -| test2.cpp:45:35:45:98 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:45:65:45:97 | sslv23 | sslv23 | test2.cpp:45:35:45:98 | call to context | no_tlsv1 has not been set | -| test2.cpp:45:35:45:98 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:45:65:45:97 | sslv23 | sslv23 | test2.cpp:45:35:45:98 | call to context | no_tlsv1_1 has not been set | | test2.cpp:52:32:52:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:52:32:52:64 | sslv23 | sslv23 | test2.cpp:52:32:52:65 | call to context | no_sslv3 has not been set | | test2.cpp:52:32:52:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:52:32:52:64 | sslv23 | sslv23 | test2.cpp:52:32:52:65 | call to context | no_tlsv1 has not been set | | test2.cpp:52:32:52:65 | call to context | This usage of 'boost::asio::ssl::context::context' with protocol $@ is not configured correctly: The option $@. | test2.cpp:52:32:52:64 | sslv23 | sslv23 | test2.cpp:52:32:52:65 | call to context | no_tlsv1_1 has not been set | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp index e8c802d69020..5679cee8b0f8 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Protocols/test2.cpp @@ -34,7 +34,7 @@ void bad2() void good3() { - // GOOD [FALSE POSITIVE] + // GOOD boost::asio::ssl::context *ctx = new boost::asio::ssl::context(boost::asio::ssl::context::sslv23); ctx->set_options(boost::asio::ssl::context::no_tlsv1 | boost::asio::ssl::context::no_tlsv1_1 | boost::asio::ssl::context::no_sslv3); } From a76832f4e0ee375adda4904f090e68aab064d8e1 Mon Sep 17 00:00:00 2001 From: Henry Mercer <henrymercer@github.com> Date: Wed, 20 Mar 2024 21:15:23 +0000 Subject: [PATCH 432/731] Mark LOC queries as `debug` instead --- cpp/ql/src/Summary/LinesOfUserCode.ql | 2 +- csharp/ql/src/Metrics/Summaries/LinesOfCode.ql | 2 +- go/ql/src/Summary/LinesOfCode.ql | 2 +- java/ql/src/Metrics/Summaries/LinesOfCode.ql | 2 +- javascript/ql/src/Summary/LinesOfUserCode.ql | 2 +- python/ql/src/Summary/LinesOfUserCode.ql | 2 +- ql/ql/src/queries/summary/LinesOfCode.ql | 2 +- ql/ql/src/queries/summary/LinesOfUserCode.ql | 2 +- ruby/ql/src/queries/summary/LinesOfCode.ql | 2 +- ruby/ql/src/queries/summary/LinesOfUserCode.ql | 2 +- swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cpp/ql/src/Summary/LinesOfUserCode.ql b/cpp/ql/src/Summary/LinesOfUserCode.ql index 2c198a1488dd..468dbda4ffbc 100644 --- a/cpp/ql/src/Summary/LinesOfUserCode.ql +++ b/cpp/ql/src/Summary/LinesOfUserCode.ql @@ -4,7 +4,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug * @id cpp/summary/lines-of-user-code */ diff --git a/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql b/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql index 4c6eb55e5abd..ca4da7bd4b96 100644 --- a/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql +++ b/csharp/ql/src/Metrics/Summaries/LinesOfCode.ql @@ -5,7 +5,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug */ import csharp diff --git a/go/ql/src/Summary/LinesOfCode.ql b/go/ql/src/Summary/LinesOfCode.ql index 04864e5c4a01..987648f604cd 100644 --- a/go/ql/src/Summary/LinesOfCode.ql +++ b/go/ql/src/Summary/LinesOfCode.ql @@ -5,7 +5,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug */ import go diff --git a/java/ql/src/Metrics/Summaries/LinesOfCode.ql b/java/ql/src/Metrics/Summaries/LinesOfCode.ql index 1ead46f1b200..e2e83b356315 100644 --- a/java/ql/src/Metrics/Summaries/LinesOfCode.ql +++ b/java/ql/src/Metrics/Summaries/LinesOfCode.ql @@ -7,7 +7,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug */ import java diff --git a/javascript/ql/src/Summary/LinesOfUserCode.ql b/javascript/ql/src/Summary/LinesOfUserCode.ql index 83fbb9b32da7..1f8f2b9fef7a 100644 --- a/javascript/ql/src/Summary/LinesOfUserCode.ql +++ b/javascript/ql/src/Summary/LinesOfUserCode.ql @@ -6,7 +6,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug * @id js/summary/lines-of-user-code */ diff --git a/python/ql/src/Summary/LinesOfUserCode.ql b/python/ql/src/Summary/LinesOfUserCode.ql index a30ba7afd199..f6d6f25872ff 100644 --- a/python/ql/src/Summary/LinesOfUserCode.ql +++ b/python/ql/src/Summary/LinesOfUserCode.ql @@ -8,7 +8,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug * @id py/summary/lines-of-user-code */ diff --git a/ql/ql/src/queries/summary/LinesOfCode.ql b/ql/ql/src/queries/summary/LinesOfCode.ql index c0dbe8319670..7a552137cf31 100644 --- a/ql/ql/src/queries/summary/LinesOfCode.ql +++ b/ql/ql/src/queries/summary/LinesOfCode.ql @@ -8,7 +8,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug */ import ql diff --git a/ql/ql/src/queries/summary/LinesOfUserCode.ql b/ql/ql/src/queries/summary/LinesOfUserCode.ql index 8f49ce27d2fc..b1d8481a564b 100644 --- a/ql/ql/src/queries/summary/LinesOfUserCode.ql +++ b/ql/ql/src/queries/summary/LinesOfUserCode.ql @@ -6,7 +6,7 @@ * query counts the lines of code, excluding whitespace or comments. * @kind metric * @tags summary - * telemetry + * debug */ import ql diff --git a/ruby/ql/src/queries/summary/LinesOfCode.ql b/ruby/ql/src/queries/summary/LinesOfCode.ql index 34e7438bab1e..f90cf34d0467 100644 --- a/ruby/ql/src/queries/summary/LinesOfCode.ql +++ b/ruby/ql/src/queries/summary/LinesOfCode.ql @@ -8,7 +8,7 @@ * @kind metric * @tags summary * lines-of-code - * telemetry + * debug */ import codeql.ruby.AST diff --git a/ruby/ql/src/queries/summary/LinesOfUserCode.ql b/ruby/ql/src/queries/summary/LinesOfUserCode.ql index 121124862a1f..91471c417ee1 100644 --- a/ruby/ql/src/queries/summary/LinesOfUserCode.ql +++ b/ruby/ql/src/queries/summary/LinesOfUserCode.ql @@ -6,7 +6,7 @@ * query counts the lines of code, excluding whitespace or comments. * @kind metric * @tags summary - * telemetry + * debug */ import codeql.ruby.AST diff --git a/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql b/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql index 9fc406808528..5aec16da4ef4 100644 --- a/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql +++ b/swift/ql/src/diagnostics/SuccessfullyExtractedLines.ql @@ -4,7 +4,7 @@ * @kind metric * @id swift/diagnostics/successfully-extracted-lines * @tags summary - * telemetry + * debug */ import swift From 9300b04defceca67d2ab26c24da0590170503048 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Wed, 20 Mar 2024 14:28:25 +0100 Subject: [PATCH 433/731] C++: Update test results --- cpp/ql/test/library-tests/ir/ir/PrintAST.expected | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 8d71b7cedced..a8cc2321f2e1 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -2030,7 +2030,13 @@ destructors_for_temps.cpp: # 45| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 45| Type = [Class] ClassWithDestructor2 # 45| ValueCategory = prvalue(load) -# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 45| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2 +# 45| Type = [VoidType] void +# 45| ValueCategory = prvalue +# 45| getQualifier(): [ReuseExpr] reuse of temporary object +# 45| Type = [Class] ClassWithDestructor2 +# 45| ValueCategory = xvalue +# 47| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor2 # 47| Type = [VoidType] void # 47| ValueCategory = prvalue # 47| getQualifier(): [VariableAccess] c From 84646cd795a389bbd89588652b28e64b2940df7c Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Thu, 21 Mar 2024 09:40:00 +0100 Subject: [PATCH 434/731] C++: Add tests showing missing destructors for initialization statements Incidentially this also shows that for contructs like `if (char x = ...)`, so there is an initialization but not initializer statement, the initialization is not displayed in the AST, although the IR does contain the initialization. --- .../library-tests/ir/ir/PrintAST.expected | 304 ++++++++++++++++++ .../library-tests/ir/ir/aliased_ir.expected | 289 +++++++++++++++++ cpp/ql/test/library-tests/ir/ir/ir.cpp | 24 ++ .../ir/ir/operand_locations.expected | 279 ++++++++++++++++ .../test/library-tests/ir/ir/raw_ir.expected | 254 +++++++++++++++ 5 files changed, 1150 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index a8cc2321f2e1..3c922cd3a5a0 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -9872,6 +9872,10 @@ ir.cpp: # 1078| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +# 1078| [CopyAssignmentOperator] std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>& std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>::operator=(std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&> const&) +# 1078| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> & # 1078| [CopyAssignmentOperator] std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>& std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator=(std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&> const&) # 1078| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) @@ -9890,6 +9894,10 @@ ir.cpp: # 1082| <params>: # 1082| getParameter(0): [Parameter] other # 1082| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +# 1082| [CopyConstructor] void std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>::iterator(std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&> const&) +# 1082| <params>: +# 1082| getParameter(0): [Parameter] other +# 1082| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> & # 1082| [CopyConstructor] void std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::iterator(std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&> const&) # 1082| <params>: # 1082| getParameter(0): [Parameter] other @@ -9900,6 +9908,8 @@ ir.cpp: # 1084| <params>: # 1084| [MemberFunction] std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>& std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>::operator++() # 1084| <params>: +# 1084| [MemberFunction] std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>& std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>::operator++() +# 1084| <params>: # 1084| [MemberFunction] std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>& std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator++() # 1084| <params>: # 1085| [MemberFunction] std::iterator<Category, value_type, difference_type, pointer_type, reference_type> std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator++(int) @@ -9928,6 +9938,10 @@ ir.cpp: # 1089| <params>: # 1089| getParameter(0): [Parameter] other # 1089| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +# 1089| [ConstMemberFunction] bool std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>::operator!=(std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>) const +# 1089| <params>: +# 1089| getParameter(0): [Parameter] other +# 1089| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> # 1089| [ConstMemberFunction] bool std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator!=(std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>) const # 1089| <params>: # 1089| getParameter(0): [Parameter] other @@ -9936,6 +9950,8 @@ ir.cpp: # 1090| <params>: # 1090| [ConstMemberFunction] String& std::iterator<std::random_access_iterator_tag, String, std::ptrdiff_t, String*, String&>::operator*() const # 1090| <params>: +# 1090| [ConstMemberFunction] char& std::iterator<std::random_access_iterator_tag, char, std::ptrdiff_t, char*, char&>::operator*() const +# 1090| <params>: # 1090| [ConstMemberFunction] int& std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, int*, int&>::operator*() const # 1090| <params>: # 1090| [ConstMemberFunction] reference_type std::iterator<Category, value_type, difference_type, pointer_type, reference_type>::operator*() const @@ -10020,6 +10036,10 @@ ir.cpp: # 1108| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const vector<String> & +# 1108| [CopyAssignmentOperator] std::vector<char>& std::vector<char>::operator=(std::vector<char> const&) +# 1108| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const vector<char> & # 1108| [CopyAssignmentOperator] std::vector<int>& std::vector<int>::operator=(std::vector<int> const&) # 1108| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) @@ -10032,6 +10052,10 @@ ir.cpp: # 1108| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const vector<String> & +# 1108| [CopyConstructor] void std::vector<char>::vector(std::vector<char> const&) +# 1108| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const vector<char> & # 1108| [CopyConstructor] void std::vector<int>::vector(std::vector<int> const&) # 1108| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) @@ -10048,6 +10072,10 @@ ir.cpp: # 1109| <params>: # 1109| getParameter(0): [Parameter] (unnamed parameter 0) # 1109| Type = [TemplateParameter] T +# 1109| [Constructor] void std::vector<char>::vector(char) +# 1109| <params>: +# 1109| getParameter(0): [Parameter] (unnamed parameter 0) +# 1109| Type = [PlainCharType] char # 1109| [Constructor] void std::vector<int>::vector(int) # 1109| <params>: # 1109| getParameter(0): [Parameter] (unnamed parameter 0) @@ -10064,6 +10092,8 @@ ir.cpp: # 1115| <params>: # 1115| [ConstMemberFunction] std::vector<T>::iterator std::vector<T>::begin() const # 1115| <params>: +# 1115| [ConstMemberFunction] std::vector<char>::iterator std::vector<char>::begin() const +# 1115| <params>: # 1115| [ConstMemberFunction] std::vector<int>::iterator std::vector<int>::begin() const # 1115| <params>: # 1116| [ConstMemberFunction] std::vector<ClassWithDestructor>::iterator std::vector<ClassWithDestructor>::end() const @@ -10072,6 +10102,8 @@ ir.cpp: # 1116| <params>: # 1116| [ConstMemberFunction] std::vector<T>::iterator std::vector<T>::end() const # 1116| <params>: +# 1116| [ConstMemberFunction] std::vector<char>::iterator std::vector<char>::end() const +# 1116| <params>: # 1116| [ConstMemberFunction] std::vector<int>::iterator std::vector<int>::end() const # 1116| <params>: # 1120| [Operator,TemplateFunction,TopLevelFunction] bool std::operator==<T>(iterator, iterator) @@ -19636,6 +19668,278 @@ ir.cpp: # 2393| Type = [IntType] int # 2393| Value = [ParenthesisExpr] 0 # 2393| ValueCategory = prvalue +# 2396| [TopLevelFunction] void initialization_with_temp_destructor() +# 2396| <params>: +# 2396| getEntryPoint(): [BlockStmt] { ... } +# 2397| getStmt(0): [IfStmt] if (...) ... +# 2397| getCondition(): [ConditionDeclExpr] (condition decl) +# 2397| Type = [BoolType] bool +# 2397| ValueCategory = prvalue +# 2397| getVariableAccess(): [VariableAccess] x +# 2397| Type = [PlainCharType] char +# 2397| ValueCategory = prvalue(load) +# 2397| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 2397| Conversion = [BoolConversion] conversion to bool +# 2397| Type = [BoolType] bool +# 2397| ValueCategory = prvalue +# 2398| getThen(): [ExprStmt] ExprStmt +# 2398| getExpr(): [PostfixIncrExpr] ... ++ +# 2398| Type = [PlainCharType] char +# 2398| ValueCategory = prvalue +# 2398| getOperand(): [VariableAccess] x +# 2398| Type = [PlainCharType] char +# 2398| ValueCategory = lvalue +# 2400| getStmt(1): [IfStmt] if (...) ... +# 2400| getInitialization(): [DeclStmt] declaration +# 2400| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2400| Type = [PlainCharType] char +# 2400| getVariable().getInitializer(): [Initializer] initializer for x +# 2400| getExpr(): [FunctionCall] call to get_x +# 2400| Type = [PlainCharType] char +# 2400| ValueCategory = prvalue +# 2400| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2400| Type = [VoidType] void +# 2400| ValueCategory = prvalue +# 2400| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2400| Type = [Class] ClassWithDestructor +# 2400| ValueCategory = prvalue(load) +# 2400| getCondition(): [VariableAccess] x +# 2400| Type = [PlainCharType] char +# 2400| ValueCategory = prvalue(load) +# 2401| getThen(): [ExprStmt] ExprStmt +# 2401| getExpr(): [PostfixIncrExpr] ... ++ +# 2401| Type = [PlainCharType] char +# 2401| ValueCategory = prvalue +# 2401| getOperand(): [VariableAccess] x +# 2401| Type = [PlainCharType] char +# 2401| ValueCategory = lvalue +# 2400| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 2400| Conversion = [BoolConversion] conversion to bool +# 2400| Type = [BoolType] bool +# 2400| ValueCategory = prvalue +# 2403| getStmt(2): [ConstexprIfStmt] if constexpr (...) ... +# 2403| getInitialization(): [DeclStmt] declaration +# 2403| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2403| Type = [PlainCharType] char +# 2403| getVariable().getInitializer(): [Initializer] initializer for x +# 2403| getExpr(): [FunctionCall] call to get_x +# 2403| Type = [PlainCharType] char +# 2403| ValueCategory = prvalue +# 2403| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2403| Type = [VoidType] void +# 2403| ValueCategory = prvalue +# 2403| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2403| Type = [Class] ClassWithDestructor +# 2403| ValueCategory = prvalue(load) +# 2403| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2403| Type = [BoolType] bool +# 2403| Value = [VariableAccess] 1 +# 2403| ValueCategory = prvalue(load) +# 2404| getThen(): [ExprStmt] ExprStmt +# 2404| getExpr(): [PostfixIncrExpr] ... ++ +# 2404| Type = [PlainCharType] char +# 2404| ValueCategory = prvalue +# 2404| getOperand(): [VariableAccess] x +# 2404| Type = [PlainCharType] char +# 2404| ValueCategory = lvalue +# 2406| getStmt(3): [SwitchStmt] switch (...) ... +# 2406| getExpr(): [ConditionDeclExpr] (condition decl) +# 2406| Type = [IntType] int +# 2406| ValueCategory = prvalue +# 2406| getVariableAccess(): [VariableAccess] x +# 2406| Type = [PlainCharType] char +# 2406| ValueCategory = prvalue(load) +# 2406| getVariableAccess().getFullyConverted(): [CStyleCast] (int)... +# 2406| Conversion = [IntegralConversion] integral conversion +# 2406| Type = [IntType] int +# 2406| ValueCategory = prvalue +# 2406| getStmt(): [BlockStmt] { ... } +# 2407| getStmt(0): [SwitchCase] case ...: +# 2407| getExpr(): [CharLiteral] 97 +# 2407| Type = [PlainCharType] char +# 2407| Value = [CharLiteral] 97 +# 2407| ValueCategory = prvalue +# 2407| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2407| Conversion = [IntegralConversion] integral conversion +# 2407| Type = [IntType] int +# 2407| Value = [CStyleCast] 97 +# 2407| ValueCategory = prvalue +# 2408| getStmt(1): [ExprStmt] ExprStmt +# 2408| getExpr(): [PostfixIncrExpr] ... ++ +# 2408| Type = [PlainCharType] char +# 2408| ValueCategory = prvalue +# 2408| getOperand(): [VariableAccess] x +# 2408| Type = [PlainCharType] char +# 2408| ValueCategory = lvalue +# 2411| getStmt(4): [SwitchStmt] switch (...) ... +# 2411| getInitialization(): [DeclStmt] declaration +# 2411| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2411| Type = [PlainCharType] char +# 2411| getVariable().getInitializer(): [Initializer] initializer for x +# 2411| getExpr(): [FunctionCall] call to get_x +# 2411| Type = [PlainCharType] char +# 2411| ValueCategory = prvalue +# 2411| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2411| Type = [VoidType] void +# 2411| ValueCategory = prvalue +# 2411| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2411| Type = [Class] ClassWithDestructor +# 2411| ValueCategory = prvalue(load) +# 2411| getExpr(): [VariableAccess] x +# 2411| Type = [PlainCharType] char +# 2411| ValueCategory = prvalue(load) +# 2411| getStmt(): [BlockStmt] { ... } +# 2412| getStmt(0): [SwitchCase] case ...: +# 2412| getExpr(): [CharLiteral] 97 +# 2412| Type = [PlainCharType] char +# 2412| Value = [CharLiteral] 97 +# 2412| ValueCategory = prvalue +# 2412| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2412| Conversion = [IntegralConversion] integral conversion +# 2412| Type = [IntType] int +# 2412| Value = [CStyleCast] 97 +# 2412| ValueCategory = prvalue +# 2413| getStmt(1): [ExprStmt] ExprStmt +# 2413| getExpr(): [PostfixIncrExpr] ... ++ +# 2413| Type = [PlainCharType] char +# 2413| ValueCategory = prvalue +# 2413| getOperand(): [VariableAccess] x +# 2413| Type = [PlainCharType] char +# 2413| ValueCategory = lvalue +# 2411| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2411| Conversion = [IntegralConversion] integral conversion +# 2411| Type = [IntType] int +# 2411| ValueCategory = prvalue +# 2416| getStmt(5): [RangeBasedForStmt] for(...:...) ... +# 2416| getInitialization(): [DeclStmt] declaration +# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2416| Type = [PlainCharType] char +# 2416| getVariable().getInitializer(): [Initializer] initializer for x +# 2416| getExpr(): [FunctionCall] call to get_x +# 2416| Type = [PlainCharType] char +# 2416| ValueCategory = prvalue +# 2416| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2416| Type = [VoidType] void +# 2416| ValueCategory = prvalue +# 2416| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2416| Type = [Class] ClassWithDestructor +# 2416| ValueCategory = prvalue(load) +# 2416| getChild(1): [DeclStmt] declaration +# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2416| Type = [RValueReferenceType] vector<char> && +#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) +# 2416| getExpr(): [ConstructorCall] call to vector +# 2416| Type = [VoidType] void +# 2416| ValueCategory = prvalue +# 2416| getArgument(0): [VariableAccess] x +# 2416| Type = [PlainCharType] char +# 2416| ValueCategory = prvalue(load) +# 2416| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2416| Type = [LValueReferenceType] vector<char> & +# 2416| ValueCategory = prvalue +# 2416| getExpr(): [TemporaryObjectExpr] temporary object +# 2416| Type = [ClassTemplateInstantiation,Struct] vector<char> +# 2416| ValueCategory = xvalue +# 2416| getBeginEndDeclaration(): [DeclStmt] declaration +# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) +# 2416| getExpr(): [FunctionCall] call to begin +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2416| ValueCategory = prvalue +# 2416| getQualifier(): [VariableAccess] (__range) +# 2416| Type = [RValueReferenceType] vector<char> && +# 2416| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<char>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector<char> +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector<char> +#-----| ValueCategory = lvalue +# 2416| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) +# 2416| getExpr(): [FunctionCall] call to end +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2416| ValueCategory = prvalue +# 2416| getQualifier(): [VariableAccess] (__range) +# 2416| Type = [RValueReferenceType] vector<char> && +# 2416| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<char>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector<char> +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector<char> +#-----| ValueCategory = lvalue +# 2416| getCondition(): [FunctionCall] call to operator!= +# 2416| Type = [BoolType] bool +# 2416| ValueCategory = prvalue +# 2416| getQualifier(): [VariableAccess] (__begin) +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2416| ValueCategory = lvalue +# 2416| getArgument(0): [ConstructorCall] call to iterator +# 2416| Type = [VoidType] void +# 2416| ValueCategory = prvalue +# 2416| getArgument(0): [VariableAccess] (__end) +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2416| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> +#-----| ValueCategory = lvalue +# 2416| getUpdate(): [FunctionCall] call to operator++ +# 2416| Type = [LValueReferenceType] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> & +# 2416| ValueCategory = prvalue +# 2416| getQualifier(): [VariableAccess] (__begin) +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2416| ValueCategory = lvalue +# 2416| getChild(5): [DeclStmt] declaration +# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2416| Type = [PlainCharType] char +# 2416| getVariable().getInitializer(): [Initializer] initializer for y +# 2416| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2416| Type = [LValueReferenceType] char & +# 2416| ValueCategory = prvalue +# 2416| getQualifier(): [VariableAccess] (__begin) +# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2416| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> +#-----| ValueCategory = lvalue +# 2416| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2416| Type = [PlainCharType] char +# 2416| ValueCategory = prvalue(load) +# 2417| getStmt(): [ExprStmt] ExprStmt +# 2417| getExpr(): [AssignAddExpr] ... += ... +# 2417| Type = [PlainCharType] char +# 2417| ValueCategory = lvalue +# 2417| getLValue(): [VariableAccess] y +# 2417| Type = [PlainCharType] char +# 2417| ValueCategory = lvalue +# 2417| getRValue(): [VariableAccess] x +# 2417| Type = [PlainCharType] char +# 2417| ValueCategory = prvalue(load) +# 2417| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 2417| Conversion = [IntegralConversion] integral conversion +# 2417| Type = [IntType] int +# 2417| ValueCategory = prvalue +# 2416| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2416| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> +# 2416| ValueCategory = lvalue +# 2418| getStmt(6): [ReturnStmt] return ... perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) # 4| <params>: diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 588aa16238b3..e80688b355aa 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -15165,6 +15165,295 @@ ir.cpp: # 2392| v2392_7(void) = AliasedUse : m2392_3 # 2392| v2392_8(void) = ExitFunction : +# 2396| void initialization_with_temp_destructor() +# 2396| Block 0 +# 2396| v2396_1(void) = EnterFunction : +# 2396| m2396_2(unknown) = AliasedDefinition : +# 2396| m2396_3(unknown) = InitializeNonLocal : +# 2396| m2396_4(unknown) = Chi : total:m2396_2, partial:m2396_3 +# 2397| r2397_1(glval<char>) = VariableAddress[x] : +# 2397| r2397_2(glval<ClassWithDestructor>) = VariableAddress[#temp2397:18] : +# 2397| m2397_3(ClassWithDestructor) = Uninitialized[#temp2397:18] : &:r2397_2 +# 2397| r2397_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2397| v2397_5(void) = Call[ClassWithDestructor] : func:r2397_4, this:r2397_2 +# 2397| m2397_6(unknown) = ^CallSideEffect : ~m2396_4 +# 2397| m2397_7(unknown) = Chi : total:m2396_4, partial:m2397_6 +# 2397| m2397_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 +# 2397| m2397_9(ClassWithDestructor) = Chi : total:m2397_3, partial:m2397_8 +# 2397| r2397_10(glval<unknown>) = FunctionAddress[get_x] : +# 2397| r2397_11(char) = Call[get_x] : func:r2397_10, this:r2397_2 +# 2397| m2397_12(unknown) = ^CallSideEffect : ~m2397_7 +# 2397| m2397_13(unknown) = Chi : total:m2397_7, partial:m2397_12 +# 2397| v2397_14(void) = ^IndirectReadSideEffect[-1] : &:r2397_2, m2397_9 +# 2397| m2397_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 +# 2397| m2397_16(ClassWithDestructor) = Chi : total:m2397_9, partial:m2397_15 +# 2397| m2397_17(char) = Store[x] : &:r2397_1, r2397_11 +# 2397| r2397_18(glval<char>) = VariableAddress[x] : +# 2397| r2397_19(char) = Load[x] : &:r2397_18, m2397_17 +# 2397| r2397_20(char) = Constant[0] : +# 2397| r2397_21(bool) = CompareNE : r2397_19, r2397_20 +# 2397| r2397_22(bool) = CopyValue : r2397_21 +# 2397| v2397_23(void) = ConditionalBranch : r2397_22 +#-----| False -> Block 2 +#-----| True -> Block 1 + +# 2398| Block 1 +# 2398| r2398_1(glval<char>) = VariableAddress[x] : +# 2398| r2398_2(char) = Load[x] : &:r2398_1, m2397_17 +# 2398| r2398_3(char) = Constant[1] : +# 2398| r2398_4(char) = Add : r2398_2, r2398_3 +# 2398| m2398_5(char) = Store[x] : &:r2398_1, r2398_4 +#-----| Goto -> Block 2 + +# 2400| Block 2 +# 2400| r2400_1(glval<char>) = VariableAddress[x] : +# 2400| r2400_2(glval<ClassWithDestructor>) = VariableAddress[#temp2400:18] : +# 2400| m2400_3(ClassWithDestructor) = Uninitialized[#temp2400:18] : &:r2400_2 +# 2400| r2400_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2400| v2400_5(void) = Call[ClassWithDestructor] : func:r2400_4, this:r2400_2 +# 2400| m2400_6(unknown) = ^CallSideEffect : ~m2397_13 +# 2400| m2400_7(unknown) = Chi : total:m2397_13, partial:m2400_6 +# 2400| m2400_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 +# 2400| m2400_9(ClassWithDestructor) = Chi : total:m2400_3, partial:m2400_8 +# 2400| r2400_10(glval<unknown>) = FunctionAddress[get_x] : +# 2400| r2400_11(char) = Call[get_x] : func:r2400_10, this:r2400_2 +# 2400| m2400_12(unknown) = ^CallSideEffect : ~m2400_7 +# 2400| m2400_13(unknown) = Chi : total:m2400_7, partial:m2400_12 +# 2400| v2400_14(void) = ^IndirectReadSideEffect[-1] : &:r2400_2, m2400_9 +# 2400| m2400_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 +# 2400| m2400_16(ClassWithDestructor) = Chi : total:m2400_9, partial:m2400_15 +# 2400| m2400_17(char) = Store[x] : &:r2400_1, r2400_11 +# 2400| r2400_18(glval<char>) = VariableAddress[x] : +# 2400| r2400_19(char) = Load[x] : &:r2400_18, m2400_17 +# 2400| r2400_20(char) = Constant[0] : +# 2400| r2400_21(bool) = CompareNE : r2400_19, r2400_20 +# 2400| v2400_22(void) = ConditionalBranch : r2400_21 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 2401| Block 3 +# 2401| r2401_1(glval<char>) = VariableAddress[x] : +# 2401| r2401_2(char) = Load[x] : &:r2401_1, m2400_17 +# 2401| r2401_3(char) = Constant[1] : +# 2401| r2401_4(char) = Add : r2401_2, r2401_3 +# 2401| m2401_5(char) = Store[x] : &:r2401_1, r2401_4 +#-----| Goto -> Block 4 + +# 2403| Block 4 +# 2403| r2403_1(glval<char>) = VariableAddress[x] : +# 2403| r2403_2(glval<ClassWithDestructor>) = VariableAddress[#temp2403:28] : +# 2403| m2403_3(ClassWithDestructor) = Uninitialized[#temp2403:28] : &:r2403_2 +# 2403| r2403_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2403| v2403_5(void) = Call[ClassWithDestructor] : func:r2403_4, this:r2403_2 +# 2403| m2403_6(unknown) = ^CallSideEffect : ~m2400_13 +# 2403| m2403_7(unknown) = Chi : total:m2400_13, partial:m2403_6 +# 2403| m2403_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 +# 2403| m2403_9(ClassWithDestructor) = Chi : total:m2403_3, partial:m2403_8 +# 2403| r2403_10(glval<unknown>) = FunctionAddress[get_x] : +# 2403| r2403_11(char) = Call[get_x] : func:r2403_10, this:r2403_2 +# 2403| m2403_12(unknown) = ^CallSideEffect : ~m2403_7 +# 2403| m2403_13(unknown) = Chi : total:m2403_7, partial:m2403_12 +# 2403| v2403_14(void) = ^IndirectReadSideEffect[-1] : &:r2403_2, m2403_9 +# 2403| m2403_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 +# 2403| m2403_16(ClassWithDestructor) = Chi : total:m2403_9, partial:m2403_15 +# 2403| m2403_17(char) = Store[x] : &:r2403_1, r2403_11 +# 2403| r2403_18(bool) = Constant[1] : +# 2403| v2403_19(void) = ConditionalBranch : r2403_18 +#-----| False -> Block 13 +#-----| True -> Block 5 + +# 2404| Block 5 +# 2404| r2404_1(glval<char>) = VariableAddress[x] : +# 2404| r2404_2(char) = Load[x] : &:r2404_1, m2403_17 +# 2404| r2404_3(char) = Constant[1] : +# 2404| r2404_4(char) = Add : r2404_2, r2404_3 +# 2404| m2404_5(char) = Store[x] : &:r2404_1, r2404_4 +# 2406| r2406_1(glval<char>) = VariableAddress[x] : +# 2406| r2406_2(glval<ClassWithDestructor>) = VariableAddress[#temp2406:21] : +# 2406| m2406_3(ClassWithDestructor) = Uninitialized[#temp2406:21] : &:r2406_2 +# 2406| r2406_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2406| v2406_5(void) = Call[ClassWithDestructor] : func:r2406_4, this:r2406_2 +# 2406| m2406_6(unknown) = ^CallSideEffect : ~m2403_13 +# 2406| m2406_7(unknown) = Chi : total:m2403_13, partial:m2406_6 +# 2406| m2406_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 +# 2406| m2406_9(ClassWithDestructor) = Chi : total:m2406_3, partial:m2406_8 +# 2406| r2406_10(glval<unknown>) = FunctionAddress[get_x] : +# 2406| r2406_11(char) = Call[get_x] : func:r2406_10, this:r2406_2 +# 2406| m2406_12(unknown) = ^CallSideEffect : ~m2406_7 +# 2406| m2406_13(unknown) = Chi : total:m2406_7, partial:m2406_12 +# 2406| v2406_14(void) = ^IndirectReadSideEffect[-1] : &:r2406_2, m2406_9 +# 2406| m2406_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 +# 2406| m2406_16(ClassWithDestructor) = Chi : total:m2406_9, partial:m2406_15 +# 2406| m2406_17(char) = Store[x] : &:r2406_1, r2406_11 +# 2406| r2406_18(glval<char>) = VariableAddress[x] : +# 2406| r2406_19(char) = Load[x] : &:r2406_18, m2406_17 +# 2406| r2406_20(int) = Convert : r2406_19 +# 2406| r2406_21(int) = CopyValue : r2406_20 +# 2406| v2406_22(void) = Switch : r2406_21 +#-----| Case[97] -> Block 6 +#-----| Default -> Block 7 + +# 2407| Block 6 +# 2407| v2407_1(void) = NoOp : +# 2408| r2408_1(glval<char>) = VariableAddress[x] : +# 2408| r2408_2(char) = Load[x] : &:r2408_1, m2406_17 +# 2408| r2408_3(char) = Constant[1] : +# 2408| r2408_4(char) = Add : r2408_2, r2408_3 +# 2408| m2408_5(char) = Store[x] : &:r2408_1, r2408_4 +#-----| Goto -> Block 7 + +# 2411| Block 7 +# 2411| r2411_1(glval<char>) = VariableAddress[x] : +# 2411| r2411_2(glval<ClassWithDestructor>) = VariableAddress[#temp2411:21] : +# 2411| m2411_3(ClassWithDestructor) = Uninitialized[#temp2411:21] : &:r2411_2 +# 2411| r2411_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2411| v2411_5(void) = Call[ClassWithDestructor] : func:r2411_4, this:r2411_2 +# 2411| m2411_6(unknown) = ^CallSideEffect : ~m2406_13 +# 2411| m2411_7(unknown) = Chi : total:m2406_13, partial:m2411_6 +# 2411| m2411_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| m2411_9(ClassWithDestructor) = Chi : total:m2411_3, partial:m2411_8 +# 2411| r2411_10(glval<unknown>) = FunctionAddress[get_x] : +# 2411| r2411_11(char) = Call[get_x] : func:r2411_10, this:r2411_2 +# 2411| m2411_12(unknown) = ^CallSideEffect : ~m2411_7 +# 2411| m2411_13(unknown) = Chi : total:m2411_7, partial:m2411_12 +# 2411| v2411_14(void) = ^IndirectReadSideEffect[-1] : &:r2411_2, m2411_9 +# 2411| m2411_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| m2411_16(ClassWithDestructor) = Chi : total:m2411_9, partial:m2411_15 +# 2411| m2411_17(char) = Store[x] : &:r2411_1, r2411_11 +# 2411| r2411_18(glval<char>) = VariableAddress[x] : +# 2411| r2411_19(char) = Load[x] : &:r2411_18, m2411_17 +# 2411| r2411_20(int) = Convert : r2411_19 +# 2411| v2411_21(void) = Switch : r2411_20 +#-----| Case[97] -> Block 8 +#-----| Default -> Block 9 + +# 2412| Block 8 +# 2412| v2412_1(void) = NoOp : +# 2413| r2413_1(glval<char>) = VariableAddress[x] : +# 2413| r2413_2(char) = Load[x] : &:r2413_1, m2411_17 +# 2413| r2413_3(char) = Constant[1] : +# 2413| r2413_4(char) = Add : r2413_2, r2413_3 +# 2413| m2413_5(char) = Store[x] : &:r2413_1, r2413_4 +#-----| Goto -> Block 9 + +# 2416| Block 9 +# 2416| r2416_1(glval<char>) = VariableAddress[x] : +# 2416| r2416_2(glval<ClassWithDestructor>) = VariableAddress[#temp2416:18] : +# 2416| m2416_3(ClassWithDestructor) = Uninitialized[#temp2416:18] : &:r2416_2 +# 2416| r2416_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2416| v2416_5(void) = Call[ClassWithDestructor] : func:r2416_4, this:r2416_2 +# 2416| m2416_6(unknown) = ^CallSideEffect : ~m2411_13 +# 2416| m2416_7(unknown) = Chi : total:m2411_13, partial:m2416_6 +# 2416| m2416_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 +# 2416| m2416_9(ClassWithDestructor) = Chi : total:m2416_3, partial:m2416_8 +# 2416| r2416_10(glval<unknown>) = FunctionAddress[get_x] : +# 2416| r2416_11(char) = Call[get_x] : func:r2416_10, this:r2416_2 +# 2416| m2416_12(unknown) = ^CallSideEffect : ~m2416_7 +# 2416| m2416_13(unknown) = Chi : total:m2416_7, partial:m2416_12 +# 2416| v2416_14(void) = ^IndirectReadSideEffect[-1] : &:r2416_2, m2416_9 +# 2416| m2416_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 +# 2416| m2416_16(ClassWithDestructor) = Chi : total:m2416_9, partial:m2416_15 +# 2416| m2416_17(char) = Store[x] : &:r2416_1, r2416_11 +# 2416| r2416_18(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2416| r2416_19(glval<vector<char>>) = VariableAddress[#temp2416:58] : +# 2416| m2416_20(vector<char>) = Uninitialized[#temp2416:58] : &:r2416_19 +# 2416| r2416_21(glval<unknown>) = FunctionAddress[vector] : +# 2416| r2416_22(glval<char>) = VariableAddress[x] : +# 2416| r2416_23(char) = Load[x] : &:r2416_22, m2416_17 +# 2416| v2416_24(void) = Call[vector] : func:r2416_21, this:r2416_19, 0:r2416_23 +# 2416| m2416_25(unknown) = ^CallSideEffect : ~m2416_13 +# 2416| m2416_26(unknown) = Chi : total:m2416_13, partial:m2416_25 +# 2416| m2416_27(vector<char>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_19 +# 2416| m2416_28(vector<char>) = Chi : total:m2416_20, partial:m2416_27 +# 2416| r2416_29(vector<char> &) = CopyValue : r2416_19 +# 2416| m2416_30(vector<char> &&) = Store[(__range)] : &:r2416_18, r2416_29 +# 2416| r2416_31(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2416| r2416_32(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2416| r2416_33(vector<char> &&) = Load[(__range)] : &:r2416_32, m2416_30 +#-----| r0_1(glval<vector<char>>) = CopyValue : r2416_33 +#-----| r0_2(glval<vector<char>>) = Convert : r0_1 +# 2416| r2416_34(glval<unknown>) = FunctionAddress[begin] : +# 2416| r2416_35(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[begin] : func:r2416_34, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2416_28 +# 2416| m2416_36(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__begin)] : &:r2416_31, r2416_35 +# 2416| r2416_37(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +# 2416| r2416_38(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2416| r2416_39(vector<char> &&) = Load[(__range)] : &:r2416_38, m2416_30 +#-----| r0_4(glval<vector<char>>) = CopyValue : r2416_39 +#-----| r0_5(glval<vector<char>>) = Convert : r0_4 +# 2416| r2416_40(glval<unknown>) = FunctionAddress[end] : +# 2416| r2416_41(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[end] : func:r2416_40, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2416_28 +# 2416| m2416_42(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__end)] : &:r2416_37, r2416_41 +#-----| Goto -> Block 10 + +# 2416| Block 10 +# 2416| m2416_43(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Phi : from 9:m2416_36, from 11:m2416_73 +# 2416| m2416_44(unknown) = Phi : from 9:~m2416_26, from 11:~m2416_70 +# 2416| r2416_45(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_45 +# 2416| r2416_46(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[#temp0:0] : +#-----| m0_9(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Uninitialized[#temp0:0] : &:r0_8 +# 2416| r2416_47(glval<unknown>) = FunctionAddress[iterator] : +# 2416| r2416_48(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_48 +#-----| r0_11(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = CopyValue : r0_10 +# 2416| v2416_49(void) = Call[iterator] : func:r2416_47, this:r0_8, 0:r0_11 +# 2416| m2416_50(unknown) = ^CallSideEffect : ~m2416_44 +# 2416| m2416_51(unknown) = Chi : total:m2416_44, partial:m2416_50 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2416_42 +# 2416| m2416_52(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2416| m2416_53(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m0_9, partial:m2416_52 +#-----| r0_13(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Load[#temp0:0] : &:r0_8, m2416_53 +# 2416| r2416_54(bool) = Call[operator!=] : func:r2416_46, this:r0_7, 0:r0_13 +# 2416| m2416_55(unknown) = ^CallSideEffect : ~m2416_51 +# 2416| m2416_56(unknown) = Chi : total:m2416_51, partial:m2416_55 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2416_43 +# 2416| v2416_57(void) = ConditionalBranch : r2416_54 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 2416| Block 11 +# 2416| r2416_58(glval<char>) = VariableAddress[y] : +# 2416| r2416_59(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_59 +# 2416| r2416_60(glval<unknown>) = FunctionAddress[operator*] : +# 2416| r2416_61(char &) = Call[operator*] : func:r2416_60, this:r0_15 +# 2416| m2416_62(unknown) = ^CallSideEffect : ~m2416_56 +# 2416| m2416_63(unknown) = Chi : total:m2416_56, partial:m2416_62 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2416_43 +# 2416| r2416_64(char) = Load[?] : &:r2416_61, ~m2416_63 +# 2416| m2416_65(char) = Store[y] : &:r2416_58, r2416_64 +# 2417| r2417_1(glval<char>) = VariableAddress[x] : +# 2417| r2417_2(char) = Load[x] : &:r2417_1, m2416_17 +# 2417| r2417_3(int) = Convert : r2417_2 +# 2417| r2417_4(glval<char>) = VariableAddress[y] : +# 2417| r2417_5(char) = Load[y] : &:r2417_4, m2416_65 +# 2417| r2417_6(int) = Convert : r2417_5 +# 2417| r2417_7(int) = Add : r2417_6, r2417_3 +# 2417| r2417_8(char) = Convert : r2417_7 +# 2417| m2417_9(char) = Store[y] : &:r2417_4, r2417_8 +# 2416| r2416_66(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2416| r2416_67(glval<unknown>) = FunctionAddress[operator++] : +# 2416| r2416_68(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2416_67, this:r2416_66 +# 2416| m2416_69(unknown) = ^CallSideEffect : ~m2416_63 +# 2416| m2416_70(unknown) = Chi : total:m2416_63, partial:m2416_69 +# 2416| v2416_71(void) = ^IndirectReadSideEffect[-1] : &:r2416_66, m2416_43 +# 2416| m2416_72(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_66 +# 2416| m2416_73(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m2416_43, partial:m2416_72 +# 2416| r2416_74(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2416_68 +#-----| Goto (back edge) -> Block 10 + +# 2418| Block 12 +# 2418| v2418_1(void) = NoOp : +# 2396| v2396_5(void) = ReturnVoid : +# 2396| v2396_6(void) = AliasedUse : ~m2416_56 +# 2396| v2396_7(void) = ExitFunction : + +# 2396| Block 13 +# 2396| v2396_8(void) = Unreached : + perf-regression.cpp: # 6| void Big::Big() # 6| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 2f51b63dff1b..67327ddc846d 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2393,4 +2393,28 @@ int large_operation_should_be_constant_folded() { return BINOP64(1); } +void initialization_with_temp_destructor() { + if (char x = ClassWithDestructor().get_x()) + x++; + + if (char x = ClassWithDestructor().get_x(); x) + x++; + + if constexpr (char x = ClassWithDestructor().get_x(); initialization_with_destructor_bool) + x++; + + switch(char x = ClassWithDestructor().get_x()) { + case 'a': + x++; + } + + switch(char x = ClassWithDestructor().get_x(); x) { + case 'a': + x++; + } + + for(char x = ClassWithDestructor().get_x(); char y : std::vector<char>(x)) + y += x; +} + // semmle-extractor-options: -std=c++20 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index add303951302..912d29849566 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -1127,6 +1127,7 @@ | file://:0:0:0:0 | Address | &:r0_2 | | file://:0:0:0:0 | Address | &:r0_2 | | file://:0:0:0:0 | Address | &:r0_2 | +| file://:0:0:0:0 | Address | &:r0_2 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | @@ -1176,6 +1177,7 @@ | file://:0:0:0:0 | Address | &:r0_5 | | file://:0:0:0:0 | Address | &:r0_5 | | file://:0:0:0:0 | Address | &:r0_5 | +| file://:0:0:0:0 | Address | &:r0_5 | | file://:0:0:0:0 | Address | &:r0_6 | | file://:0:0:0:0 | Address | &:r0_6 | | file://:0:0:0:0 | Address | &:r0_6 | @@ -1186,6 +1188,10 @@ | file://:0:0:0:0 | Address | &:r0_7 | | file://:0:0:0:0 | Address | &:r0_7 | | file://:0:0:0:0 | Address | &:r0_7 | +| file://:0:0:0:0 | Address | &:r0_7 | +| file://:0:0:0:0 | Address | &:r0_8 | +| file://:0:0:0:0 | Address | &:r0_8 | +| file://:0:0:0:0 | Address | &:r0_8 | | file://:0:0:0:0 | Address | &:r0_8 | | file://:0:0:0:0 | Address | &:r0_8 | | file://:0:0:0:0 | Address | &:r0_8 | @@ -1208,6 +1214,7 @@ | file://:0:0:0:0 | Address | &:r0_11 | | file://:0:0:0:0 | Address | &:r0_11 | | file://:0:0:0:0 | Address | &:r0_11 | +| file://:0:0:0:0 | Address | &:r0_11 | | file://:0:0:0:0 | Address | &:r0_13 | | file://:0:0:0:0 | Address | &:r0_13 | | file://:0:0:0:0 | Address | &:r0_13 | @@ -1217,6 +1224,7 @@ | file://:0:0:0:0 | Address | &:r0_15 | | file://:0:0:0:0 | Address | &:r0_15 | | file://:0:0:0:0 | Address | &:r0_15 | +| file://:0:0:0:0 | Address | &:r0_15 | | file://:0:0:0:0 | Address | &:r0_16 | | file://:0:0:0:0 | Address | &:r0_16 | | file://:0:0:0:0 | Address | &:r0_16 | @@ -1265,6 +1273,8 @@ | file://:0:0:0:0 | Arg(0) | 0:r0_11 | | file://:0:0:0:0 | Arg(0) | 0:r0_11 | | file://:0:0:0:0 | Arg(0) | 0:r0_11 | +| file://:0:0:0:0 | Arg(0) | 0:r0_11 | +| file://:0:0:0:0 | Arg(0) | 0:r0_13 | | file://:0:0:0:0 | Arg(0) | 0:r0_13 | | file://:0:0:0:0 | Arg(0) | 0:r0_13 | | file://:0:0:0:0 | Arg(0) | 0:r0_15 | @@ -1363,6 +1373,7 @@ | file://:0:0:0:0 | Load | m2210_36 | | file://:0:0:0:0 | Load | m2215_40 | | file://:0:0:0:0 | Load | m2293_46 | +| file://:0:0:0:0 | Load | m2416_53 | | file://:0:0:0:0 | Load | ~m0_4 | | file://:0:0:0:0 | Load | ~m1493_6 | | file://:0:0:0:0 | Load | ~m1761_10 | @@ -1412,6 +1423,10 @@ | file://:0:0:0:0 | SideEffect | m2293_21 | | file://:0:0:0:0 | SideEffect | m2293_36 | | file://:0:0:0:0 | SideEffect | m2293_36 | +| file://:0:0:0:0 | SideEffect | m2416_28 | +| file://:0:0:0:0 | SideEffect | m2416_28 | +| file://:0:0:0:0 | SideEffect | m2416_43 | +| file://:0:0:0:0 | SideEffect | m2416_43 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | @@ -1438,6 +1453,7 @@ | file://:0:0:0:0 | SideEffect | ~m2226_4 | | file://:0:0:0:0 | SideEffect | ~m2233_6 | | file://:0:0:0:0 | SideEffect | ~m2293_35 | +| file://:0:0:0:0 | SideEffect | ~m2416_42 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | @@ -1469,10 +1485,12 @@ | file://:0:0:0:0 | Unary | r0_1 | | file://:0:0:0:0 | Unary | r0_1 | | file://:0:0:0:0 | Unary | r0_1 | +| file://:0:0:0:0 | Unary | r0_1 | | file://:0:0:0:0 | Unary | r0_2 | | file://:0:0:0:0 | Unary | r0_3 | | file://:0:0:0:0 | Unary | r0_4 | | file://:0:0:0:0 | Unary | r0_4 | +| file://:0:0:0:0 | Unary | r0_4 | | file://:0:0:0:0 | Unary | r0_5 | | file://:0:0:0:0 | Unary | r0_5 | | file://:0:0:0:0 | Unary | r0_6 | @@ -1497,6 +1515,7 @@ | file://:0:0:0:0 | Unary | r0_10 | | file://:0:0:0:0 | Unary | r0_10 | | file://:0:0:0:0 | Unary | r0_10 | +| file://:0:0:0:0 | Unary | r0_10 | | file://:0:0:0:0 | Unary | r0_11 | | file://:0:0:0:0 | Unary | r0_12 | | file://:0:0:0:0 | Unary | r0_14 | @@ -12546,6 +12565,266 @@ | ir.cpp:2392:5:2392:45 | SideEffect | m2392_3 | | ir.cpp:2393:5:2393:22 | Address | &:r2393_1 | | ir.cpp:2393:12:2393:21 | StoreValue | r2393_2 | +| ir.cpp:2396:6:2396:40 | ChiPartial | partial:m2396_3 | +| ir.cpp:2396:6:2396:40 | ChiTotal | total:m2396_2 | +| ir.cpp:2396:6:2396:40 | SideEffect | ~m2416_56 | +| ir.cpp:2397:9:2397:46 | Address | &:r2397_1 | +| ir.cpp:2397:9:2397:46 | Condition | r2397_22 | +| ir.cpp:2397:14:2397:14 | Address | &:r2397_18 | +| ir.cpp:2397:14:2397:14 | Left | r2397_19 | +| ir.cpp:2397:14:2397:14 | Load | m2397_17 | +| ir.cpp:2397:14:2397:14 | Right | r2397_20 | +| ir.cpp:2397:14:2397:14 | Unary | r2397_21 | +| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | +| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | +| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | +| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | +| ir.cpp:2397:18:2397:38 | Arg(this) | this:r2397_2 | +| ir.cpp:2397:18:2397:38 | Arg(this) | this:r2397_2 | +| ir.cpp:2397:18:2397:38 | CallTarget | func:r2397_4 | +| ir.cpp:2397:18:2397:38 | ChiPartial | partial:m2397_6 | +| ir.cpp:2397:18:2397:38 | ChiPartial | partial:m2397_8 | +| ir.cpp:2397:18:2397:38 | ChiPartial | partial:m2397_15 | +| ir.cpp:2397:18:2397:38 | ChiTotal | total:m2396_4 | +| ir.cpp:2397:18:2397:38 | ChiTotal | total:m2397_3 | +| ir.cpp:2397:18:2397:38 | ChiTotal | total:m2397_9 | +| ir.cpp:2397:18:2397:38 | SideEffect | m2397_9 | +| ir.cpp:2397:18:2397:38 | SideEffect | ~m2396_4 | +| ir.cpp:2397:40:2397:44 | CallTarget | func:r2397_10 | +| ir.cpp:2397:40:2397:44 | ChiPartial | partial:m2397_12 | +| ir.cpp:2397:40:2397:44 | ChiTotal | total:m2397_7 | +| ir.cpp:2397:40:2397:44 | SideEffect | ~m2397_7 | +| ir.cpp:2397:40:2397:44 | StoreValue | r2397_11 | +| ir.cpp:2398:9:2398:9 | Address | &:r2398_1 | +| ir.cpp:2398:9:2398:9 | Address | &:r2398_1 | +| ir.cpp:2398:9:2398:9 | Left | r2398_2 | +| ir.cpp:2398:9:2398:9 | Load | m2397_17 | +| ir.cpp:2398:9:2398:11 | Right | r2398_3 | +| ir.cpp:2398:9:2398:11 | StoreValue | r2398_4 | +| ir.cpp:2400:14:2400:14 | Address | &:r2400_1 | +| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | +| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | +| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | +| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | +| ir.cpp:2400:18:2400:38 | Arg(this) | this:r2400_2 | +| ir.cpp:2400:18:2400:38 | Arg(this) | this:r2400_2 | +| ir.cpp:2400:18:2400:38 | CallTarget | func:r2400_4 | +| ir.cpp:2400:18:2400:38 | ChiPartial | partial:m2400_6 | +| ir.cpp:2400:18:2400:38 | ChiPartial | partial:m2400_8 | +| ir.cpp:2400:18:2400:38 | ChiPartial | partial:m2400_15 | +| ir.cpp:2400:18:2400:38 | ChiTotal | total:m2397_13 | +| ir.cpp:2400:18:2400:38 | ChiTotal | total:m2400_3 | +| ir.cpp:2400:18:2400:38 | ChiTotal | total:m2400_9 | +| ir.cpp:2400:18:2400:38 | SideEffect | m2400_9 | +| ir.cpp:2400:18:2400:38 | SideEffect | ~m2397_13 | +| ir.cpp:2400:40:2400:44 | CallTarget | func:r2400_10 | +| ir.cpp:2400:40:2400:44 | ChiPartial | partial:m2400_12 | +| ir.cpp:2400:40:2400:44 | ChiTotal | total:m2400_7 | +| ir.cpp:2400:40:2400:44 | SideEffect | ~m2400_7 | +| ir.cpp:2400:40:2400:44 | StoreValue | r2400_11 | +| ir.cpp:2400:49:2400:49 | Address | &:r2400_18 | +| ir.cpp:2400:49:2400:49 | Condition | r2400_21 | +| ir.cpp:2400:49:2400:49 | Left | r2400_19 | +| ir.cpp:2400:49:2400:49 | Load | m2400_17 | +| ir.cpp:2400:49:2400:49 | Right | r2400_20 | +| ir.cpp:2401:9:2401:9 | Address | &:r2401_1 | +| ir.cpp:2401:9:2401:9 | Address | &:r2401_1 | +| ir.cpp:2401:9:2401:9 | Left | r2401_2 | +| ir.cpp:2401:9:2401:9 | Load | m2400_17 | +| ir.cpp:2401:9:2401:11 | Right | r2401_3 | +| ir.cpp:2401:9:2401:11 | StoreValue | r2401_4 | +| ir.cpp:2403:24:2403:24 | Address | &:r2403_1 | +| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | +| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | +| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | +| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | +| ir.cpp:2403:28:2403:48 | Arg(this) | this:r2403_2 | +| ir.cpp:2403:28:2403:48 | Arg(this) | this:r2403_2 | +| ir.cpp:2403:28:2403:48 | CallTarget | func:r2403_4 | +| ir.cpp:2403:28:2403:48 | ChiPartial | partial:m2403_6 | +| ir.cpp:2403:28:2403:48 | ChiPartial | partial:m2403_8 | +| ir.cpp:2403:28:2403:48 | ChiPartial | partial:m2403_15 | +| ir.cpp:2403:28:2403:48 | ChiTotal | total:m2400_13 | +| ir.cpp:2403:28:2403:48 | ChiTotal | total:m2403_3 | +| ir.cpp:2403:28:2403:48 | ChiTotal | total:m2403_9 | +| ir.cpp:2403:28:2403:48 | SideEffect | m2403_9 | +| ir.cpp:2403:28:2403:48 | SideEffect | ~m2400_13 | +| ir.cpp:2403:50:2403:54 | CallTarget | func:r2403_10 | +| ir.cpp:2403:50:2403:54 | ChiPartial | partial:m2403_12 | +| ir.cpp:2403:50:2403:54 | ChiTotal | total:m2403_7 | +| ir.cpp:2403:50:2403:54 | SideEffect | ~m2403_7 | +| ir.cpp:2403:50:2403:54 | StoreValue | r2403_11 | +| ir.cpp:2403:59:2403:93 | Condition | r2403_18 | +| ir.cpp:2404:9:2404:9 | Address | &:r2404_1 | +| ir.cpp:2404:9:2404:9 | Address | &:r2404_1 | +| ir.cpp:2404:9:2404:9 | Left | r2404_2 | +| ir.cpp:2404:9:2404:9 | Load | m2403_17 | +| ir.cpp:2404:9:2404:11 | Right | r2404_3 | +| ir.cpp:2404:9:2404:11 | StoreValue | r2404_4 | +| ir.cpp:2406:12:2406:49 | Address | &:r2406_1 | +| ir.cpp:2406:12:2406:49 | Condition | r2406_21 | +| ir.cpp:2406:17:2406:17 | Address | &:r2406_18 | +| ir.cpp:2406:17:2406:17 | Load | m2406_17 | +| ir.cpp:2406:17:2406:17 | Unary | r2406_19 | +| ir.cpp:2406:17:2406:17 | Unary | r2406_20 | +| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | +| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | +| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | +| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | +| ir.cpp:2406:21:2406:41 | Arg(this) | this:r2406_2 | +| ir.cpp:2406:21:2406:41 | Arg(this) | this:r2406_2 | +| ir.cpp:2406:21:2406:41 | CallTarget | func:r2406_4 | +| ir.cpp:2406:21:2406:41 | ChiPartial | partial:m2406_6 | +| ir.cpp:2406:21:2406:41 | ChiPartial | partial:m2406_8 | +| ir.cpp:2406:21:2406:41 | ChiPartial | partial:m2406_15 | +| ir.cpp:2406:21:2406:41 | ChiTotal | total:m2403_13 | +| ir.cpp:2406:21:2406:41 | ChiTotal | total:m2406_3 | +| ir.cpp:2406:21:2406:41 | ChiTotal | total:m2406_9 | +| ir.cpp:2406:21:2406:41 | SideEffect | m2406_9 | +| ir.cpp:2406:21:2406:41 | SideEffect | ~m2403_13 | +| ir.cpp:2406:43:2406:47 | CallTarget | func:r2406_10 | +| ir.cpp:2406:43:2406:47 | ChiPartial | partial:m2406_12 | +| ir.cpp:2406:43:2406:47 | ChiTotal | total:m2406_7 | +| ir.cpp:2406:43:2406:47 | SideEffect | ~m2406_7 | +| ir.cpp:2406:43:2406:47 | StoreValue | r2406_11 | +| ir.cpp:2408:11:2408:11 | Address | &:r2408_1 | +| ir.cpp:2408:11:2408:11 | Address | &:r2408_1 | +| ir.cpp:2408:11:2408:11 | Left | r2408_2 | +| ir.cpp:2408:11:2408:11 | Load | m2406_17 | +| ir.cpp:2408:11:2408:13 | Right | r2408_3 | +| ir.cpp:2408:11:2408:13 | StoreValue | r2408_4 | +| ir.cpp:2411:17:2411:17 | Address | &:r2411_1 | +| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | +| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | +| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | +| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | +| ir.cpp:2411:21:2411:41 | Arg(this) | this:r2411_2 | +| ir.cpp:2411:21:2411:41 | Arg(this) | this:r2411_2 | +| ir.cpp:2411:21:2411:41 | CallTarget | func:r2411_4 | +| ir.cpp:2411:21:2411:41 | ChiPartial | partial:m2411_6 | +| ir.cpp:2411:21:2411:41 | ChiPartial | partial:m2411_8 | +| ir.cpp:2411:21:2411:41 | ChiPartial | partial:m2411_15 | +| ir.cpp:2411:21:2411:41 | ChiTotal | total:m2406_13 | +| ir.cpp:2411:21:2411:41 | ChiTotal | total:m2411_3 | +| ir.cpp:2411:21:2411:41 | ChiTotal | total:m2411_9 | +| ir.cpp:2411:21:2411:41 | SideEffect | m2411_9 | +| ir.cpp:2411:21:2411:41 | SideEffect | ~m2406_13 | +| ir.cpp:2411:43:2411:47 | CallTarget | func:r2411_10 | +| ir.cpp:2411:43:2411:47 | ChiPartial | partial:m2411_12 | +| ir.cpp:2411:43:2411:47 | ChiTotal | total:m2411_7 | +| ir.cpp:2411:43:2411:47 | SideEffect | ~m2411_7 | +| ir.cpp:2411:43:2411:47 | StoreValue | r2411_11 | +| ir.cpp:2411:52:2411:52 | Address | &:r2411_18 | +| ir.cpp:2411:52:2411:52 | Condition | r2411_20 | +| ir.cpp:2411:52:2411:52 | Load | m2411_17 | +| ir.cpp:2411:52:2411:52 | Unary | r2411_19 | +| ir.cpp:2413:11:2413:11 | Address | &:r2413_1 | +| ir.cpp:2413:11:2413:11 | Address | &:r2413_1 | +| ir.cpp:2413:11:2413:11 | Left | r2413_2 | +| ir.cpp:2413:11:2413:11 | Load | m2411_17 | +| ir.cpp:2413:11:2413:13 | Right | r2413_3 | +| ir.cpp:2413:11:2413:13 | StoreValue | r2413_4 | +| ir.cpp:2416:5:2416:5 | Address | &:r2416_18 | +| ir.cpp:2416:5:2416:5 | Address | &:r2416_31 | +| ir.cpp:2416:5:2416:5 | Address | &:r2416_37 | +| ir.cpp:2416:14:2416:14 | Address | &:r2416_1 | +| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | +| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | +| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | +| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | +| ir.cpp:2416:18:2416:38 | Arg(this) | this:r2416_2 | +| ir.cpp:2416:18:2416:38 | Arg(this) | this:r2416_2 | +| ir.cpp:2416:18:2416:38 | CallTarget | func:r2416_4 | +| ir.cpp:2416:18:2416:38 | ChiPartial | partial:m2416_6 | +| ir.cpp:2416:18:2416:38 | ChiPartial | partial:m2416_8 | +| ir.cpp:2416:18:2416:38 | ChiPartial | partial:m2416_15 | +| ir.cpp:2416:18:2416:38 | ChiTotal | total:m2411_13 | +| ir.cpp:2416:18:2416:38 | ChiTotal | total:m2416_3 | +| ir.cpp:2416:18:2416:38 | ChiTotal | total:m2416_9 | +| ir.cpp:2416:18:2416:38 | SideEffect | m2416_9 | +| ir.cpp:2416:18:2416:38 | SideEffect | ~m2411_13 | +| ir.cpp:2416:40:2416:44 | CallTarget | func:r2416_10 | +| ir.cpp:2416:40:2416:44 | ChiPartial | partial:m2416_12 | +| ir.cpp:2416:40:2416:44 | ChiTotal | total:m2416_7 | +| ir.cpp:2416:40:2416:44 | SideEffect | ~m2416_7 | +| ir.cpp:2416:40:2416:44 | StoreValue | r2416_11 | +| ir.cpp:2416:54:2416:54 | Address | &:r2416_58 | +| ir.cpp:2416:58:2416:58 | Address | &:r2416_32 | +| ir.cpp:2416:58:2416:58 | Address | &:r2416_38 | +| ir.cpp:2416:58:2416:58 | Address | &:r2416_61 | +| ir.cpp:2416:58:2416:58 | Address | &:r2416_66 | +| ir.cpp:2416:58:2416:58 | Address | &:r2416_66 | +| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_2 | +| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_5 | +| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_7 | +| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_8 | +| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_15 | +| ir.cpp:2416:58:2416:58 | Arg(this) | this:r2416_66 | +| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_34 | +| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_40 | +| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_46 | +| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_47 | +| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_60 | +| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_67 | +| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_50 | +| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_52 | +| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_55 | +| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_62 | +| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_69 | +| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_72 | +| ir.cpp:2416:58:2416:58 | ChiTotal | total:m0_9 | +| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_43 | +| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_44 | +| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_51 | +| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_56 | +| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_63 | +| ir.cpp:2416:58:2416:58 | Condition | r2416_54 | +| ir.cpp:2416:58:2416:58 | Load | m2416_30 | +| ir.cpp:2416:58:2416:58 | Load | m2416_30 | +| ir.cpp:2416:58:2416:58 | Phi | from 9:m2416_36 | +| ir.cpp:2416:58:2416:58 | Phi | from 9:~m2416_26 | +| ir.cpp:2416:58:2416:58 | Phi | from 11:m2416_73 | +| ir.cpp:2416:58:2416:58 | Phi | from 11:~m2416_70 | +| ir.cpp:2416:58:2416:58 | SideEffect | m2416_43 | +| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_44 | +| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_51 | +| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_56 | +| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_63 | +| ir.cpp:2416:58:2416:58 | StoreValue | r2416_35 | +| ir.cpp:2416:58:2416:58 | StoreValue | r2416_41 | +| ir.cpp:2416:58:2416:58 | Unary | r2416_33 | +| ir.cpp:2416:58:2416:58 | Unary | r2416_39 | +| ir.cpp:2416:58:2416:58 | Unary | r2416_45 | +| ir.cpp:2416:58:2416:58 | Unary | r2416_48 | +| ir.cpp:2416:58:2416:58 | Unary | r2416_59 | +| ir.cpp:2416:58:2416:58 | Unary | r2416_68 | +| ir.cpp:2416:58:2416:77 | Address | &:r2416_19 | +| ir.cpp:2416:58:2416:77 | Address | &:r2416_19 | +| ir.cpp:2416:58:2416:77 | Arg(this) | this:r2416_19 | +| ir.cpp:2416:58:2416:77 | CallTarget | func:r2416_21 | +| ir.cpp:2416:58:2416:77 | ChiPartial | partial:m2416_25 | +| ir.cpp:2416:58:2416:77 | ChiPartial | partial:m2416_27 | +| ir.cpp:2416:58:2416:77 | ChiTotal | total:m2416_13 | +| ir.cpp:2416:58:2416:77 | ChiTotal | total:m2416_20 | +| ir.cpp:2416:58:2416:77 | SideEffect | ~m2416_13 | +| ir.cpp:2416:58:2416:77 | StoreValue | r2416_29 | +| ir.cpp:2416:58:2416:77 | Unary | r2416_19 | +| ir.cpp:2416:58:2416:78 | Load | ~m2416_63 | +| ir.cpp:2416:58:2416:78 | StoreValue | r2416_64 | +| ir.cpp:2416:76:2416:76 | Address | &:r2416_22 | +| ir.cpp:2416:76:2416:76 | Arg(0) | 0:r2416_23 | +| ir.cpp:2416:76:2416:76 | Load | m2416_17 | +| ir.cpp:2417:9:2417:9 | Address | &:r2417_4 | +| ir.cpp:2417:9:2417:9 | Address | &:r2417_4 | +| ir.cpp:2417:9:2417:9 | Load | m2416_65 | +| ir.cpp:2417:9:2417:9 | Unary | r2417_5 | +| ir.cpp:2417:9:2417:14 | Left | r2417_6 | +| ir.cpp:2417:9:2417:14 | StoreValue | r2417_8 | +| ir.cpp:2417:9:2417:14 | Unary | r2417_7 | +| ir.cpp:2417:14:2417:14 | Address | &:r2417_1 | +| ir.cpp:2417:14:2417:14 | Load | m2416_17 | +| ir.cpp:2417:14:2417:14 | Right | r2417_3 | +| ir.cpp:2417:14:2417:14 | Unary | r2417_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 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index b721a11e4849..7698e996e128 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -14005,6 +14005,260 @@ ir.cpp: # 2392| v2392_6(void) = AliasedUse : ~m? # 2392| v2392_7(void) = ExitFunction : +# 2396| void initialization_with_temp_destructor() +# 2396| Block 0 +# 2396| v2396_1(void) = EnterFunction : +# 2396| mu2396_2(unknown) = AliasedDefinition : +# 2396| mu2396_3(unknown) = InitializeNonLocal : +# 2397| r2397_1(glval<char>) = VariableAddress[x] : +# 2397| r2397_2(glval<ClassWithDestructor>) = VariableAddress[#temp2397:18] : +# 2397| mu2397_3(ClassWithDestructor) = Uninitialized[#temp2397:18] : &:r2397_2 +# 2397| r2397_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2397| v2397_5(void) = Call[ClassWithDestructor] : func:r2397_4, this:r2397_2 +# 2397| mu2397_6(unknown) = ^CallSideEffect : ~m? +# 2397| mu2397_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 +# 2397| r2397_8(glval<unknown>) = FunctionAddress[get_x] : +# 2397| r2397_9(char) = Call[get_x] : func:r2397_8, this:r2397_2 +# 2397| mu2397_10(unknown) = ^CallSideEffect : ~m? +# 2397| v2397_11(void) = ^IndirectReadSideEffect[-1] : &:r2397_2, ~m? +# 2397| mu2397_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 +# 2397| mu2397_13(char) = Store[x] : &:r2397_1, r2397_9 +# 2397| r2397_14(glval<char>) = VariableAddress[x] : +# 2397| r2397_15(char) = Load[x] : &:r2397_14, ~m? +# 2397| r2397_16(char) = Constant[0] : +# 2397| r2397_17(bool) = CompareNE : r2397_15, r2397_16 +# 2397| r2397_18(bool) = CopyValue : r2397_17 +# 2397| v2397_19(void) = ConditionalBranch : r2397_18 +#-----| False -> Block 2 +#-----| True -> Block 1 + +# 2398| Block 1 +# 2398| r2398_1(glval<char>) = VariableAddress[x] : +# 2398| r2398_2(char) = Load[x] : &:r2398_1, ~m? +# 2398| r2398_3(char) = Constant[1] : +# 2398| r2398_4(char) = Add : r2398_2, r2398_3 +# 2398| mu2398_5(char) = Store[x] : &:r2398_1, r2398_4 +#-----| Goto -> Block 2 + +# 2400| Block 2 +# 2400| r2400_1(glval<char>) = VariableAddress[x] : +# 2400| r2400_2(glval<ClassWithDestructor>) = VariableAddress[#temp2400:18] : +# 2400| mu2400_3(ClassWithDestructor) = Uninitialized[#temp2400:18] : &:r2400_2 +# 2400| r2400_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2400| v2400_5(void) = Call[ClassWithDestructor] : func:r2400_4, this:r2400_2 +# 2400| mu2400_6(unknown) = ^CallSideEffect : ~m? +# 2400| mu2400_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 +# 2400| r2400_8(glval<unknown>) = FunctionAddress[get_x] : +# 2400| r2400_9(char) = Call[get_x] : func:r2400_8, this:r2400_2 +# 2400| mu2400_10(unknown) = ^CallSideEffect : ~m? +# 2400| v2400_11(void) = ^IndirectReadSideEffect[-1] : &:r2400_2, ~m? +# 2400| mu2400_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 +# 2400| mu2400_13(char) = Store[x] : &:r2400_1, r2400_9 +# 2400| r2400_14(glval<char>) = VariableAddress[x] : +# 2400| r2400_15(char) = Load[x] : &:r2400_14, ~m? +# 2400| r2400_16(char) = Constant[0] : +# 2400| r2400_17(bool) = CompareNE : r2400_15, r2400_16 +# 2400| v2400_18(void) = ConditionalBranch : r2400_17 +#-----| False -> Block 4 +#-----| True -> Block 3 + +# 2401| Block 3 +# 2401| r2401_1(glval<char>) = VariableAddress[x] : +# 2401| r2401_2(char) = Load[x] : &:r2401_1, ~m? +# 2401| r2401_3(char) = Constant[1] : +# 2401| r2401_4(char) = Add : r2401_2, r2401_3 +# 2401| mu2401_5(char) = Store[x] : &:r2401_1, r2401_4 +#-----| Goto -> Block 4 + +# 2403| Block 4 +# 2403| r2403_1(glval<char>) = VariableAddress[x] : +# 2403| r2403_2(glval<ClassWithDestructor>) = VariableAddress[#temp2403:28] : +# 2403| mu2403_3(ClassWithDestructor) = Uninitialized[#temp2403:28] : &:r2403_2 +# 2403| r2403_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2403| v2403_5(void) = Call[ClassWithDestructor] : func:r2403_4, this:r2403_2 +# 2403| mu2403_6(unknown) = ^CallSideEffect : ~m? +# 2403| mu2403_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 +# 2403| r2403_8(glval<unknown>) = FunctionAddress[get_x] : +# 2403| r2403_9(char) = Call[get_x] : func:r2403_8, this:r2403_2 +# 2403| mu2403_10(unknown) = ^CallSideEffect : ~m? +# 2403| v2403_11(void) = ^IndirectReadSideEffect[-1] : &:r2403_2, ~m? +# 2403| mu2403_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 +# 2403| mu2403_13(char) = Store[x] : &:r2403_1, r2403_9 +# 2403| r2403_14(bool) = Constant[1] : +# 2403| v2403_15(void) = ConditionalBranch : r2403_14 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 2404| Block 5 +# 2404| r2404_1(glval<char>) = VariableAddress[x] : +# 2404| r2404_2(char) = Load[x] : &:r2404_1, ~m? +# 2404| r2404_3(char) = Constant[1] : +# 2404| r2404_4(char) = Add : r2404_2, r2404_3 +# 2404| mu2404_5(char) = Store[x] : &:r2404_1, r2404_4 +#-----| Goto -> Block 6 + +# 2406| Block 6 +# 2406| r2406_1(glval<char>) = VariableAddress[x] : +# 2406| r2406_2(glval<ClassWithDestructor>) = VariableAddress[#temp2406:21] : +# 2406| mu2406_3(ClassWithDestructor) = Uninitialized[#temp2406:21] : &:r2406_2 +# 2406| r2406_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2406| v2406_5(void) = Call[ClassWithDestructor] : func:r2406_4, this:r2406_2 +# 2406| mu2406_6(unknown) = ^CallSideEffect : ~m? +# 2406| mu2406_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 +# 2406| r2406_8(glval<unknown>) = FunctionAddress[get_x] : +# 2406| r2406_9(char) = Call[get_x] : func:r2406_8, this:r2406_2 +# 2406| mu2406_10(unknown) = ^CallSideEffect : ~m? +# 2406| v2406_11(void) = ^IndirectReadSideEffect[-1] : &:r2406_2, ~m? +# 2406| mu2406_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 +# 2406| mu2406_13(char) = Store[x] : &:r2406_1, r2406_9 +# 2406| r2406_14(glval<char>) = VariableAddress[x] : +# 2406| r2406_15(char) = Load[x] : &:r2406_14, ~m? +# 2406| r2406_16(int) = Convert : r2406_15 +# 2406| r2406_17(int) = CopyValue : r2406_16 +# 2406| v2406_18(void) = Switch : r2406_17 +#-----| Case[97] -> Block 7 +#-----| Default -> Block 8 + +# 2407| Block 7 +# 2407| v2407_1(void) = NoOp : +# 2408| r2408_1(glval<char>) = VariableAddress[x] : +# 2408| r2408_2(char) = Load[x] : &:r2408_1, ~m? +# 2408| r2408_3(char) = Constant[1] : +# 2408| r2408_4(char) = Add : r2408_2, r2408_3 +# 2408| mu2408_5(char) = Store[x] : &:r2408_1, r2408_4 +#-----| Goto -> Block 8 + +# 2411| Block 8 +# 2411| r2411_1(glval<char>) = VariableAddress[x] : +# 2411| r2411_2(glval<ClassWithDestructor>) = VariableAddress[#temp2411:21] : +# 2411| mu2411_3(ClassWithDestructor) = Uninitialized[#temp2411:21] : &:r2411_2 +# 2411| r2411_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2411| v2411_5(void) = Call[ClassWithDestructor] : func:r2411_4, this:r2411_2 +# 2411| mu2411_6(unknown) = ^CallSideEffect : ~m? +# 2411| mu2411_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| r2411_8(glval<unknown>) = FunctionAddress[get_x] : +# 2411| r2411_9(char) = Call[get_x] : func:r2411_8, this:r2411_2 +# 2411| mu2411_10(unknown) = ^CallSideEffect : ~m? +# 2411| v2411_11(void) = ^IndirectReadSideEffect[-1] : &:r2411_2, ~m? +# 2411| mu2411_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| mu2411_13(char) = Store[x] : &:r2411_1, r2411_9 +# 2411| r2411_14(glval<char>) = VariableAddress[x] : +# 2411| r2411_15(char) = Load[x] : &:r2411_14, ~m? +# 2411| r2411_16(int) = Convert : r2411_15 +# 2411| v2411_17(void) = Switch : r2411_16 +#-----| Case[97] -> Block 9 +#-----| Default -> Block 10 + +# 2412| Block 9 +# 2412| v2412_1(void) = NoOp : +# 2413| r2413_1(glval<char>) = VariableAddress[x] : +# 2413| r2413_2(char) = Load[x] : &:r2413_1, ~m? +# 2413| r2413_3(char) = Constant[1] : +# 2413| r2413_4(char) = Add : r2413_2, r2413_3 +# 2413| mu2413_5(char) = Store[x] : &:r2413_1, r2413_4 +#-----| Goto -> Block 10 + +# 2416| Block 10 +# 2416| r2416_1(glval<char>) = VariableAddress[x] : +# 2416| r2416_2(glval<ClassWithDestructor>) = VariableAddress[#temp2416:18] : +# 2416| mu2416_3(ClassWithDestructor) = Uninitialized[#temp2416:18] : &:r2416_2 +# 2416| r2416_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2416| v2416_5(void) = Call[ClassWithDestructor] : func:r2416_4, this:r2416_2 +# 2416| mu2416_6(unknown) = ^CallSideEffect : ~m? +# 2416| mu2416_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 +# 2416| r2416_8(glval<unknown>) = FunctionAddress[get_x] : +# 2416| r2416_9(char) = Call[get_x] : func:r2416_8, this:r2416_2 +# 2416| mu2416_10(unknown) = ^CallSideEffect : ~m? +# 2416| v2416_11(void) = ^IndirectReadSideEffect[-1] : &:r2416_2, ~m? +# 2416| mu2416_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 +# 2416| mu2416_13(char) = Store[x] : &:r2416_1, r2416_9 +# 2416| r2416_14(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2416| r2416_15(glval<vector<char>>) = VariableAddress[#temp2416:58] : +# 2416| mu2416_16(vector<char>) = Uninitialized[#temp2416:58] : &:r2416_15 +# 2416| r2416_17(glval<unknown>) = FunctionAddress[vector] : +# 2416| r2416_18(glval<char>) = VariableAddress[x] : +# 2416| r2416_19(char) = Load[x] : &:r2416_18, ~m? +# 2416| v2416_20(void) = Call[vector] : func:r2416_17, this:r2416_15, 0:r2416_19 +# 2416| mu2416_21(unknown) = ^CallSideEffect : ~m? +# 2416| mu2416_22(vector<char>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_15 +# 2416| r2416_23(vector<char> &) = CopyValue : r2416_15 +# 2416| mu2416_24(vector<char> &&) = Store[(__range)] : &:r2416_14, r2416_23 +# 2416| r2416_25(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2416| r2416_26(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2416| r2416_27(vector<char> &&) = Load[(__range)] : &:r2416_26, ~m? +#-----| r0_1(glval<vector<char>>) = CopyValue : r2416_27 +#-----| r0_2(glval<vector<char>>) = Convert : r0_1 +# 2416| r2416_28(glval<unknown>) = FunctionAddress[begin] : +# 2416| r2416_29(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[begin] : func:r2416_28, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? +# 2416| mu2416_30(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__begin)] : &:r2416_25, r2416_29 +# 2416| r2416_31(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +# 2416| r2416_32(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2416| r2416_33(vector<char> &&) = Load[(__range)] : &:r2416_32, ~m? +#-----| r0_4(glval<vector<char>>) = CopyValue : r2416_33 +#-----| r0_5(glval<vector<char>>) = Convert : r0_4 +# 2416| r2416_34(glval<unknown>) = FunctionAddress[end] : +# 2416| r2416_35(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[end] : func:r2416_34, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? +# 2416| mu2416_36(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__end)] : &:r2416_31, r2416_35 +#-----| Goto -> Block 11 + +# 2416| Block 11 +# 2416| r2416_37(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_37 +# 2416| r2416_38(glval<unknown>) = FunctionAddress[operator!=] : +#-----| r0_8(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[#temp0:0] : +#-----| mu0_9(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Uninitialized[#temp0:0] : &:r0_8 +# 2416| r2416_39(glval<unknown>) = FunctionAddress[iterator] : +# 2416| r2416_40(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_40 +#-----| r0_11(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = CopyValue : r0_10 +# 2416| v2416_41(void) = Call[iterator] : func:r2416_39, this:r0_8, 0:r0_11 +# 2416| mu2416_42(unknown) = ^CallSideEffect : ~m? +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? +# 2416| mu2416_43(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +#-----| r0_13(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Load[#temp0:0] : &:r0_8, ~m? +# 2416| r2416_44(bool) = Call[operator!=] : func:r2416_38, this:r0_7, 0:r0_13 +# 2416| mu2416_45(unknown) = ^CallSideEffect : ~m? +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? +# 2416| v2416_46(void) = ConditionalBranch : r2416_44 +#-----| False -> Block 13 +#-----| True -> Block 12 + +# 2416| Block 12 +# 2416| r2416_47(glval<char>) = VariableAddress[y] : +# 2416| r2416_48(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_48 +# 2416| r2416_49(glval<unknown>) = FunctionAddress[operator*] : +# 2416| r2416_50(char &) = Call[operator*] : func:r2416_49, this:r0_15 +# 2416| mu2416_51(unknown) = ^CallSideEffect : ~m? +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? +# 2416| r2416_52(char) = Load[?] : &:r2416_50, ~m? +# 2416| mu2416_53(char) = Store[y] : &:r2416_47, r2416_52 +# 2417| r2417_1(glval<char>) = VariableAddress[x] : +# 2417| r2417_2(char) = Load[x] : &:r2417_1, ~m? +# 2417| r2417_3(int) = Convert : r2417_2 +# 2417| r2417_4(glval<char>) = VariableAddress[y] : +# 2417| r2417_5(char) = Load[y] : &:r2417_4, ~m? +# 2417| r2417_6(int) = Convert : r2417_5 +# 2417| r2417_7(int) = Add : r2417_6, r2417_3 +# 2417| r2417_8(char) = Convert : r2417_7 +# 2417| mu2417_9(char) = Store[y] : &:r2417_4, r2417_8 +# 2416| r2416_54(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2416| r2416_55(glval<unknown>) = FunctionAddress[operator++] : +# 2416| r2416_56(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2416_55, this:r2416_54 +# 2416| mu2416_57(unknown) = ^CallSideEffect : ~m? +# 2416| v2416_58(void) = ^IndirectReadSideEffect[-1] : &:r2416_54, ~m? +# 2416| mu2416_59(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_54 +# 2416| r2416_60(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2416_56 +#-----| Goto (back edge) -> Block 11 + +# 2418| Block 13 +# 2418| v2418_1(void) = NoOp : +# 2396| v2396_4(void) = ReturnVoid : +# 2396| v2396_5(void) = AliasedUse : ~m? +# 2396| v2396_6(void) = ExitFunction : + perf-regression.cpp: # 6| void Big::Big() # 6| Block 0 From 9da8cb1165b3564077262e3a9d92d02e49c112fb Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Thu, 21 Mar 2024 09:44:12 +0100 Subject: [PATCH 435/731] C#: Simplify the output of `cs/wrong-compareto-signature` to remove entity locations --- csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql | 5 ++--- .../IncorrectCompareToSignature.expected | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql b/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql index 9f9eff6f1f64..cf3298b09ea2 100644 --- a/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql +++ b/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql @@ -40,6 +40,5 @@ where compareToMethod(m, actualParamType) and not implementsIComparable(declaringType, actualParamType) select m, - "The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'.", - actualParamType, actualParamType.getName(), declaringType, declaringType.getName(), - actualParamType, actualParamType.getName() + "The parameter of this 'CompareTo' method is of type '" + actualParamType.getName() + + "', but the declaring type does not implement 'IComparable<" + actualParamType.getName() + ">'." diff --git a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected index 46561c8184d6..2b0e89de3995 100644 --- a/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected +++ b/csharp/ql/test/query-tests/API Abuse/IncorrectCompareToSignature/IncorrectCompareToSignature.expected @@ -1,2 +1,2 @@ -| IncorrectCompareToSignature.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignature.cs:3:10:3:10 | T | T | IncorrectCompareToSignature.cs:3:7:3:11 | C1`1 | C1`1 | IncorrectCompareToSignature.cs:3:10:3:10 | T | T | -| IncorrectCompareToSignatureBad.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type $@, but $@ does not implement 'IComparable<$@>'. | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | IncorrectCompareToSignatureBad.cs:3:7:3:9 | Bad | Bad | +| IncorrectCompareToSignature.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type 'T', but the declaring type does not implement 'IComparable<T>'. | +| IncorrectCompareToSignatureBad.cs:5:16:5:24 | CompareTo | The parameter of this 'CompareTo' method is of type 'Bad', but the declaring type does not implement 'IComparable<Bad>'. | From 54a1c252768998da916f4bdca97e114e2dec84f6 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Thu, 21 Mar 2024 09:26:35 +0100 Subject: [PATCH 436/731] change the precision of the js/unsafe-external-link query to low --- javascript/ql/src/DOM/TargetBlank.qhelp | 8 ++++++++ javascript/ql/src/DOM/TargetBlank.ql | 2 +- .../src/change-notes/2024-03-21-target-blank-precision.md | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md diff --git a/javascript/ql/src/DOM/TargetBlank.qhelp b/javascript/ql/src/DOM/TargetBlank.qhelp index f0e7ca37500a..e1b1fd8e7f24 100644 --- a/javascript/ql/src/DOM/TargetBlank.qhelp +++ b/javascript/ql/src/DOM/TargetBlank.qhelp @@ -9,6 +9,14 @@ of the origin page using <code>window.opener</code> unless link type <code>noope or <code>noreferrer</code> is specified. This is a potential security risk. </p> +<p> +Note that only older browsers, where <code>target="_blank"</code> does not imply <code>rel="noopener"</code>, +are affected by this vulnerability. Modern browsers implicitly add <code>rel="noopener"</code> to +<code>target="_blank"</code> links. +Refer to the <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#browser_compatibility">browser compatibility section +on the anchor element</a> for details on which browsers implicitly add <code>rel="noopener"</code> to <code>target="_blank"</code> links. +</p> + </overview> <recommendation> diff --git a/javascript/ql/src/DOM/TargetBlank.ql b/javascript/ql/src/DOM/TargetBlank.ql index fb63737f6782..dc7f1d65e791 100644 --- a/javascript/ql/src/DOM/TargetBlank.ql +++ b/javascript/ql/src/DOM/TargetBlank.ql @@ -10,7 +10,7 @@ * security * external/cwe/cwe-200 * external/cwe/cwe-1022 - * @precision very-high + * @precision low */ import javascript diff --git a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md new file mode 100644 index 000000000000..89b0c0da191c --- /dev/null +++ b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* The `@precision` of the `js/unsafe-external-link` has been lowered to `low` to reflect that modern browsers do not provider the `opener` attribute and thus mitigate the potential security risk of having a link with `target="_blank"`. \ No newline at end of file From d0c09f43a9aeeb58400077379251caa347ce8243 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Thu, 21 Mar 2024 11:13:42 +0100 Subject: [PATCH 437/731] Add change note --- .../change-notes/2024-03-21-change-compareto-signature.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md diff --git a/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md b/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md new file mode 100644 index 000000000000..026321ea9af2 --- /dev/null +++ b/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. + From 9d655520cc083cf888c80ebe43ef5d43649864dc Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Thu, 21 Mar 2024 11:26:45 +0100 Subject: [PATCH 438/731] Code quality improvement --- csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql b/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql index cf3298b09ea2..6f6c17566bfd 100644 --- a/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql +++ b/csharp/ql/src/API Abuse/IncorrectCompareToSignature.ql @@ -33,12 +33,13 @@ predicate compareToMethod(Method m, Type paramType) { paramType = m.getAParameter().getType() } -from Method m, RefType declaringType, Type actualParamType +from Method m, RefType declaringType, Type actualParamType, string paramTypeName where m.isSourceDeclaration() and declaringType = m.getDeclaringType() and compareToMethod(m, actualParamType) and - not implementsIComparable(declaringType, actualParamType) + not implementsIComparable(declaringType, actualParamType) and + paramTypeName = actualParamType.getName() select m, - "The parameter of this 'CompareTo' method is of type '" + actualParamType.getName() + - "', but the declaring type does not implement 'IComparable<" + actualParamType.getName() + ">'." + "The parameter of this 'CompareTo' method is of type '" + paramTypeName + + "', but the declaring type does not implement 'IComparable<" + paramTypeName + ">'." From a3ae304dfea10b29a712715a86f1cbbd585c09d3 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Thu, 21 Mar 2024 11:32:23 +0100 Subject: [PATCH 439/731] C++: Handle `getInitializingExpr` in PrintAST --- cpp/ql/lib/semmle/code/cpp/PrintAST.qll | 7 +- .../library-tests/ir/ir/PrintAST.expected | 112 ++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll index fa894a8b0fb4..88dce1ce0b4d 100644 --- a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll +++ b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll @@ -309,9 +309,12 @@ class ExprNode extends AstNode { override AstNode getChildInternal(int childIndex) { result.getAst() = expr.getChild(childIndex) or + childIndex = max(int index | exists(expr.getChild(index)) or index = 0) + 1 and + result.getAst() = expr.(ConditionDeclExpr).getInitializingExpr() + or exists(int destructorIndex | result.getAst() = expr.getImplicitDestructorCall(destructorIndex) and - childIndex = destructorIndex + max(int index | exists(expr.getChild(index)) or index = 0) + 1 + childIndex = destructorIndex + max(int index | exists(expr.getChild(index)) or index = 0) + 2 ) } @@ -686,6 +689,8 @@ private string getChildAccessorWithoutConversions(Locatable parent, Element chil not namedExprChildPredicates(expr, child, _) and exists(int n | expr.getChild(n) = child and result = "getChild(" + n + ")") or + expr.(ConditionDeclExpr).getInitializingExpr() = child and result = "getInitializingExpr()" + or exists(int n | expr.getImplicitDestructorCall(n) = child and result = "getImplicitDestructorCall(" + n + ")" diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 3c922cd3a5a0..ddf5d8b1f5c2 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -8812,6 +8812,15 @@ ir.cpp: # 976| getVariableAccess(): [VariableAccess] b # 976| Type = [BoolType] bool # 976| ValueCategory = prvalue(load) +# 976| getInitializingExpr(): [LTExpr] ... < ... +# 976| Type = [BoolType] bool +# 976| ValueCategory = prvalue +# 976| getLesserOperand(): [VariableAccess] x +# 976| Type = [IntType] int +# 976| ValueCategory = prvalue(load) +# 976| getGreaterOperand(): [VariableAccess] y +# 976| Type = [IntType] int +# 976| ValueCategory = prvalue(load) # 976| getThen(): [BlockStmt] { ... } # 977| getStmt(0): [ExprStmt] ExprStmt # 977| getExpr(): [AssignExpr] ... = ... @@ -8831,6 +8840,15 @@ ir.cpp: # 979| getVariableAccess(): [VariableAccess] z # 979| Type = [IntType] int # 979| ValueCategory = prvalue(load) +# 979| getInitializingExpr(): [AddExpr] ... + ... +# 979| Type = [IntType] int +# 979| ValueCategory = prvalue +# 979| getLeftOperand(): [VariableAccess] x +# 979| Type = [IntType] int +# 979| ValueCategory = prvalue(load) +# 979| getRightOperand(): [VariableAccess] y +# 979| Type = [IntType] int +# 979| ValueCategory = prvalue(load) # 979| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 979| Conversion = [BoolConversion] conversion to bool # 979| Type = [BoolType] bool @@ -8854,6 +8872,12 @@ ir.cpp: # 982| getVariableAccess(): [VariableAccess] p # 982| Type = [IntPointerType] int * # 982| ValueCategory = prvalue(load) +# 982| getInitializingExpr(): [AddressOfExpr] & ... +# 982| Type = [IntPointerType] int * +# 982| ValueCategory = prvalue +# 982| getOperand(): [VariableAccess] x +# 982| Type = [IntType] int +# 982| ValueCategory = lvalue # 982| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 982| Conversion = [BoolConversion] conversion to bool # 982| Type = [BoolType] bool @@ -8888,6 +8912,15 @@ ir.cpp: # 988| getVariableAccess(): [VariableAccess] b # 988| Type = [BoolType] bool # 988| ValueCategory = prvalue(load) +# 988| getInitializingExpr(): [LTExpr] ... < ... +# 988| Type = [BoolType] bool +# 988| ValueCategory = prvalue +# 988| getLesserOperand(): [VariableAccess] x +# 988| Type = [IntType] int +# 988| ValueCategory = prvalue(load) +# 988| getGreaterOperand(): [VariableAccess] y +# 988| Type = [IntType] int +# 988| ValueCategory = prvalue(load) # 988| getStmt(): [BlockStmt] { ... } # 990| getStmt(1): [WhileStmt] while (...) ... # 990| getCondition(): [ConditionDeclExpr] (condition decl) @@ -8896,6 +8929,15 @@ ir.cpp: # 990| getVariableAccess(): [VariableAccess] z # 990| Type = [IntType] int # 990| ValueCategory = prvalue(load) +# 990| getInitializingExpr(): [AddExpr] ... + ... +# 990| Type = [IntType] int +# 990| ValueCategory = prvalue +# 990| getLeftOperand(): [VariableAccess] x +# 990| Type = [IntType] int +# 990| ValueCategory = prvalue(load) +# 990| getRightOperand(): [VariableAccess] y +# 990| Type = [IntType] int +# 990| ValueCategory = prvalue(load) # 990| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 990| Conversion = [BoolConversion] conversion to bool # 990| Type = [BoolType] bool @@ -8908,6 +8950,12 @@ ir.cpp: # 992| getVariableAccess(): [VariableAccess] p # 992| Type = [IntPointerType] int * # 992| ValueCategory = prvalue(load) +# 992| getInitializingExpr(): [AddressOfExpr] & ... +# 992| Type = [IntPointerType] int * +# 992| ValueCategory = prvalue +# 992| getOperand(): [VariableAccess] x +# 992| Type = [IntType] int +# 992| ValueCategory = lvalue # 992| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 992| Conversion = [BoolConversion] conversion to bool # 992| Type = [BoolType] bool @@ -14780,6 +14828,9 @@ ir.cpp: # 1816| getVariableAccess(): [VariableAccess] w2 # 1816| Type = [IntType] int # 1816| ValueCategory = prvalue(load) +# 1816| getInitializingExpr(): [VariableAccess] w +# 1816| Type = [IntType] int +# 1816| ValueCategory = prvalue(load) # 1816| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 1816| Conversion = [BoolConversion] conversion to bool # 1816| Type = [BoolType] bool @@ -14815,6 +14866,9 @@ ir.cpp: # 1820| getVariableAccess(): [VariableAccess] v2 # 1820| Type = [IntType] int # 1820| ValueCategory = prvalue(load) +# 1820| getInitializingExpr(): [VariableAccess] v +# 1820| Type = [IntType] int +# 1820| ValueCategory = prvalue(load) # 1820| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 1820| Conversion = [BoolConversion] conversion to bool # 1820| Type = [BoolType] bool @@ -14875,6 +14929,9 @@ ir.cpp: # 1829| getVariableAccess(): [VariableAccess] z2 # 1829| Type = [IntType] int # 1829| ValueCategory = prvalue(load) +# 1829| getInitializingExpr(): [VariableAccess] z +# 1829| Type = [IntType] int +# 1829| ValueCategory = prvalue(load) # 1829| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 1829| Conversion = [BoolConversion] conversion to bool # 1829| Type = [BoolType] bool @@ -14991,6 +15048,9 @@ ir.cpp: # 1846| getVariableAccess(): [VariableAccess] w2 # 1846| Type = [IntType] int # 1846| ValueCategory = prvalue(load) +# 1846| getInitializingExpr(): [VariableAccess] w +# 1846| Type = [IntType] int +# 1846| ValueCategory = prvalue(load) # 1846| getStmt(): [BlockStmt] { ... } # 1847| getStmt(0): [SwitchCase] default: # 1848| getStmt(1): [ExprStmt] ExprStmt @@ -15023,6 +15083,9 @@ ir.cpp: # 1851| getVariableAccess(): [VariableAccess] v2 # 1851| Type = [IntType] int # 1851| ValueCategory = prvalue(load) +# 1851| getInitializingExpr(): [VariableAccess] v +# 1851| Type = [IntType] int +# 1851| ValueCategory = prvalue(load) # 1851| getStmt(): [BlockStmt] { ... } # 1852| getStmt(0): [SwitchCase] default: # 1853| getStmt(1): [ExprStmt] ExprStmt @@ -15077,6 +15140,9 @@ ir.cpp: # 1862| getVariableAccess(): [VariableAccess] z2 # 1862| Type = [IntType] int # 1862| ValueCategory = prvalue(load) +# 1862| getInitializingExpr(): [VariableAccess] z +# 1862| Type = [IntType] int +# 1862| ValueCategory = prvalue(load) # 1862| getStmt(): [BlockStmt] { ... } # 1863| getStmt(0): [SwitchCase] default: # 1864| getStmt(1): [ExprStmt] ExprStmt @@ -17048,6 +17114,10 @@ ir.cpp: # 2169| getQualifier(): [VariableAccess] b # 2169| Type = [Struct] HasOperatorBool # 2169| ValueCategory = prvalue(load) +# 2169| getInitializingExpr(): [Literal] 0 +# 2169| Type = [Struct] HasOperatorBool +# 2169| Value = [Literal] 0 +# 2169| ValueCategory = prvalue # 2169| getThen(): [BlockStmt] { ... } # 2170| getStmt(1): [ReturnStmt] return ... # 2172| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) @@ -18650,6 +18720,12 @@ ir.cpp: # 2318| getQualifier(): [VariableAccess] B # 2318| Type = [Class] Bool # 2318| ValueCategory = prvalue(load) +# 2318| getInitializingExpr(): [ConstructorCall] call to Bool +# 2318| Type = [VoidType] void +# 2318| ValueCategory = prvalue +# 2318| getArgument(0): [VariableAccess] b +# 2318| Type = [BoolType] bool +# 2318| ValueCategory = prvalue(load) # 2318| getThen(): [BlockStmt] { ... } # 2319| getStmt(0): [DeclStmt] declaration # 2319| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 @@ -18731,6 +18807,12 @@ ir.cpp: # 2334| getQualifier(): [VariableAccess] B # 2334| Type = [Class] Bool # 2334| ValueCategory = prvalue(load) +# 2334| getInitializingExpr(): [ConstructorCall] call to Bool +# 2334| Type = [VoidType] void +# 2334| ValueCategory = prvalue +# 2334| getArgument(0): [VariableAccess] b +# 2334| Type = [BoolType] bool +# 2334| ValueCategory = prvalue(load) # 2334| getStmt(): [BlockStmt] { ... } # 2335| getStmt(0): [ExprStmt] ExprStmt # 2335| getExpr(): [AssignExpr] ... = ... @@ -19678,6 +19760,21 @@ ir.cpp: # 2397| getVariableAccess(): [VariableAccess] x # 2397| Type = [PlainCharType] char # 2397| ValueCategory = prvalue(load) +# 2397| getInitializingExpr(): [FunctionCall] call to get_x +# 2397| Type = [PlainCharType] char +# 2397| ValueCategory = prvalue +# 2397| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2397| Type = [VoidType] void +# 2397| ValueCategory = prvalue +# 2397| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2397| Type = [VoidType] void +# 2397| ValueCategory = prvalue +# 2397| getQualifier(): [ReuseExpr] reuse of temporary object +# 2397| Type = [Class] ClassWithDestructor +# 2397| ValueCategory = xvalue +# 2397| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2397| Type = [Class] ClassWithDestructor +# 2397| ValueCategory = prvalue(load) # 2397| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 2397| Conversion = [BoolConversion] conversion to bool # 2397| Type = [BoolType] bool @@ -19749,6 +19846,21 @@ ir.cpp: # 2406| getVariableAccess(): [VariableAccess] x # 2406| Type = [PlainCharType] char # 2406| ValueCategory = prvalue(load) +# 2406| getInitializingExpr(): [FunctionCall] call to get_x +# 2406| Type = [PlainCharType] char +# 2406| ValueCategory = prvalue +# 2406| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2406| Type = [VoidType] void +# 2406| ValueCategory = prvalue +# 2406| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2406| Type = [VoidType] void +# 2406| ValueCategory = prvalue +# 2406| getQualifier(): [ReuseExpr] reuse of temporary object +# 2406| Type = [Class] ClassWithDestructor +# 2406| ValueCategory = xvalue +# 2406| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2406| Type = [Class] ClassWithDestructor +# 2406| ValueCategory = prvalue(load) # 2406| getVariableAccess().getFullyConverted(): [CStyleCast] (int)... # 2406| Conversion = [IntegralConversion] integral conversion # 2406| Type = [IntType] int From 4c4ebd907e51be023d59c50792a3047aec46f6dd Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Thu, 21 Mar 2024 11:54:29 +0100 Subject: [PATCH 440/731] C++: Update more expected test results --- cpp/ql/test/examples/expressions/PrintAST.expected | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cpp/ql/test/examples/expressions/PrintAST.expected b/cpp/ql/test/examples/expressions/PrintAST.expected index 86aa1e364146..4aefbff5c554 100644 --- a/cpp/ql/test/examples/expressions/PrintAST.expected +++ b/cpp/ql/test/examples/expressions/PrintAST.expected @@ -105,10 +105,24 @@ ConditionDecl.cpp: # 3| getVariableAccess(): [VariableAccess] k # 3| Type = [IntType] int # 3| ValueCategory = prvalue(load) +# 3| getInitializingExpr(): [LTExpr] ... < ... +# 3| Type = [BoolType] bool +# 3| ValueCategory = prvalue +# 3| getLesserOperand(): [VariableAccess] j +# 3| Type = [IntType] int +# 3| ValueCategory = prvalue(load) +# 3| getGreaterOperand(): [Literal] 5 +# 3| Type = [IntType] int +# 3| Value = [Literal] 5 +# 3| ValueCategory = prvalue # 3| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... # 3| Conversion = [BoolConversion] conversion to bool # 3| Type = [BoolType] bool # 3| ValueCategory = prvalue +# 3| getInitializingExpr().getFullyConverted(): [CStyleCast] (int)... +# 3| Conversion = [IntegralConversion] integral conversion +# 3| Type = [IntType] int +# 3| ValueCategory = prvalue # 3| getStmt(): [BlockStmt] { ... } # 5| getStmt(2): [ReturnStmt] return ... ConstructorCall.cpp: From 2aa5ae41fb98a84f778bcb1b428b06288f8d51de Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Thu, 21 Mar 2024 11:23:05 +0100 Subject: [PATCH 441/731] Python: Fix join-order problem in SqlAlchemy No major performance impact, more of a learning example for myself (had +3000 join order badness). Initial tuple counts ``` Evaluated recursive predicate SqlAlchemy::SqlAlchemy::Connection::ConnectionConstruction#45e716e0@594cfx2g in 1ms on iteration 1 (delta size: 4). Evaluated relational algebra for predicate SqlAlchemy::SqlAlchemy::Connection::ConnectionConstruction#45e716e0@594cfx2g on iteration 1 running pipeline base with tuple counts: 37793 ~0% {3} r1 = JOIN `ApiGraphs::API::Node.getACall/0#dispred#312deb92_10#join_rhs` WITH DataFlowPublic::CallCfgNode#b8ddbf81 ON FIRST 1 OUTPUT Lhs.1, Lhs.0, Rhs.1 0 ~0% {2} | JOIN WITH `SqlAlchemy::SqlAlchemy::Connection::classRef/0#565fc3ad` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 30 ~0% {5} r2 = JOIN DataFlowPublic::CallCfgNode#b8ddbf81 WITH `DataFlowPublic::MethodCallNode.calls/2#dispred#1dd1e0f4#ffb` ON FIRST 1 OUTPUT Lhs.0, Lhs.1, Rhs.1, Rhs.2, _ {4} | REWRITE WITH NOT [NOT [Tmp.4 := "begin", TEST InOut.3 = Tmp.4], NOT [Tmp.4 := "connect", TEST InOut.3 = Tmp.4]] KEEPING 4 21 ~0% {3} | SCAN OUTPUT In.2, In.0, In.1 4 ~0% {2} | JOIN WITH `SqlAlchemy::SqlAlchemy::Engine::instance/0#1828baef` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 4 ~0% {2} r3 = r1 UNION r2 return r3 ``` which is fixed by the only_bind_out ``` Evaluated recursive predicate SqlAlchemy::SqlAlchemy::Connection::ConnectionConstruction#45e716e0@49effxtg in 0ms on iteration 1 (delta size: 0). Evaluated relational algebra for predicate SqlAlchemy::SqlAlchemy::Connection::ConnectionConstruction#45e716e0@49effxtg on iteration 1 running pipeline base with tuple counts: 0 ~0% {1} r1 = JOIN `SqlAlchemy::SqlAlchemy::Connection::classRef/0#565fc3ad` WITH `ApiGraphs::API::Node.getACall/0#dispred#312deb92` ON FIRST 1 OUTPUT Rhs.1 0 ~0% {2} | JOIN WITH DataFlowPublic::CallCfgNode#b8ddbf81 ON FIRST 1 OUTPUT Lhs.0, Rhs.1 return r1 ``` We also had this initial problem ``` Evaluated recursive predicate SqlAlchemy::SqlAlchemy::Connection::ConnectionConstruction#45e716e0@594cfx2g in 1ms on iteration 4 (delta size: 0). Evaluated relational algebra for predicate SqlAlchemy::SqlAlchemy::Connection::ConnectionConstruction#45e716e0@594cfx2g on iteration 4 running pipeline standard with tuple counts: 48722 ~6% {2} r1 = DataFlowPublic::CallCfgNode#b8ddbf81 AND NOT SqlAlchemy::SqlAlchemy::Connection::ConnectionConstruction#45e716e0#prev(FIRST 2) 48722 ~3% {3} r2 = SCAN r1 OUTPUT In.0, _, In.1 48722 ~1% {3} | REWRITE WITH Out.1 := "connect" 16 ~0% {3} | JOIN WITH `DataFlowPublic::MethodCallNode.calls/2#dispred#1dd1e0f4#ffb_021#join_rhs` ON FIRST 2 OUTPUT Rhs.2, Lhs.0, Lhs.2 0 ~0% {2} | JOIN WITH `SqlAlchemy::SqlAlchemy::Connection::instance/0#5ed87c17#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 48722 ~3% {3} r3 = SCAN r1 OUTPUT In.0, _, In.1 48722 ~2% {3} | REWRITE WITH Out.1 := "execution_options" 9 ~0% {3} | JOIN WITH `DataFlowPublic::MethodCallNode.calls/2#dispred#1dd1e0f4#ffb_021#join_rhs` ON FIRST 2 OUTPUT Rhs.2, Lhs.0, Lhs.2 0 ~0% {2} | JOIN WITH `SqlAlchemy::SqlAlchemy::Connection::instance/0#5ed87c17#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 0 ~0% {2} r4 = r2 UNION r3 return r4 ``` which is fixed by `connectionConstruction_helper` ``` Evaluated recursive predicate SqlAlchemy::SqlAlchemy::Connection::helper/0#62cfc178#b@4f295yef in 1ms on iteration 4 (delta size: 0). Evaluated relational algebra for predicate SqlAlchemy::SqlAlchemy::Connection::helper/0#62cfc178#b@4f295yef on iteration 4 running pipeline standard with tuple counts: 4 ~0% {1} r1 = JOIN `SqlAlchemy::SqlAlchemy::Connection::instance/1#029b4c87#prev_delta` WITH `TypeTrackingImpl::TypeTracker::end/0#2ac2cfd4` ON FIRST 1 OUTPUT Lhs.1 16 ~0% {1} | JOIN WITH `LocalSources::Cached::hasLocalSource/2#8b3ee0ec_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1 0 ~0% {3} | JOIN WITH `DataFlowPublic::MethodCallNode.calls/2#dispred#1dd1e0f4#ffb_102#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Rhs.2, _ 0 ~0% {2} | REWRITE WITH NOT [NOT [Tmp.2 := "connect", TEST InOut.1 = Tmp.2], NOT [Tmp.2 := "execution_options", TEST InOut.1 = Tmp.2]] KEEPING 2 0 ~0% {1} | JOIN WITH DataFlowPublic::CallCfgNode#b8ddbf81 ON FIRST 1 OUTPUT Lhs.0 0 ~0% {1} | AND NOT `SqlAlchemy::SqlAlchemy::Connection::helper/0#62cfc178#b#prev`(FIRST 1) return r1 ``` --- .../semmle/python/frameworks/SqlAlchemy.qll | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll b/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll index adeec0390fbf..b5f5dcddbeb8 100644 --- a/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll +++ b/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll @@ -113,15 +113,25 @@ module SqlAlchemy { */ abstract class InstanceSource extends DataFlow::LocalSourceNode { } + /** + * join-ordering helper for ConnectionConstruction char-pred -- without this would + * start with _all_ `CallCfgNode` and join those with `MethodCallNode` .. which is + * silly + */ + pragma[noinline] + private DataFlow::MethodCallNode connectionConstruction_helper() { + result.calls(Engine::instance(), ["begin", "connect"]) + or + result.calls(instance(), ["connect", "execution_options"]) + } + private class ConnectionConstruction extends InstanceSource, DataFlow::CallCfgNode { ConnectionConstruction() { - this = classRef().getACall() - or - this.(DataFlow::MethodCallNode).calls(Engine::instance(), ["begin", "connect"]) + // without the `pragma[only_bind_out]` we would start with joining + // `API::Node.getACall` with `CallCfgNode` which is not optimal + this = pragma[only_bind_out](classRef().getACall()) or - this.(DataFlow::MethodCallNode).calls(instance(), "connect") - or - this.(DataFlow::MethodCallNode).calls(instance(), "execution_options") + this = connectionConstruction_helper() } } From cff63ad5d5490d3666bde49d0a7992ea44ffc2c7 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Thu, 21 Mar 2024 12:31:58 +0100 Subject: [PATCH 442/731] Python: Fix small join-order problem for call-graph problem is: ``` 14294 ~33% {1} r23 = r21 UNION r22 13626 ~0% {2} | JOIN WITH `DataFlowPublic::Node.getEnclosingCallable/0#dispred#be95825a` ON FIRST 1 OUTPUT Rhs.1, Lhs.0 11871493 ~2% {2} | JOIN WITH `DataFlowPublic::Node.getEnclosingCallable/0#dispred#be95825a_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1 6810938 ~3% {2} | JOIN WITH num#DataFlowPublic::TCfgNode#2cd2fb22_10#join_rhs ON FIRST 1 OUTPUT Rhs.1, Lhs.1 0 ~0% {4} | JOIN WITH `DataFlowDispatch::resolveMethodCall/4#3067f1f1#reorder_0_3_1_2#prev` ON FIRST 2 OUTPUT Rhs.3, Lhs.1, Lhs.0, Rhs.2 0 ~0% {4} | JOIN WITH num#DataFlowDispatch::CallTypeClassMethod#3508c3e5 ON FIRST 1 OUTPUT Lhs.3, Lhs.2, Lhs.0, Lhs.1 0 ~0% {4} | JOIN WITH `DataFlowDispatch::resolveCall/3#454c02d8#reorder_1_0_2#prev` ON FIRST 3 OUTPUT Lhs.3, Lhs.1, Lhs.0, Lhs.2 0 ~0% {5} | JOIN WITH num#DataFlowDispatch::TSelfArgumentPosition#de6d64b8 CARTESIAN PRODUCT OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.0, Rhs.0 ``` that is, it does cartesian product of DataFlowPublic::Node.getEnclosingCallable After fix ``` 14294 ~33% {1} r23 = r21 UNION r22 0 ~0% {4} | JOIN WITH `DataFlowDispatch::resolveMethodCall/4#3067f1f1#reorder_3_0_1_2#prev` ON FIRST 1 OUTPUT Rhs.3, Lhs.0, Rhs.1, Rhs.2 0 ~0% {4} | JOIN WITH num#DataFlowDispatch::CallTypeClassMethod#3508c3e5 ON FIRST 1 OUTPUT Lhs.3, Lhs.2, Lhs.0, Lhs.1 0 ~0% {4} | JOIN WITH `DataFlowDispatch::resolveCall/3#454c02d8#reorder_1_0_2#prev` ON FIRST 3 OUTPUT Lhs.1, Lhs.3, Lhs.0, Lhs.2 0 ~0% {5} | JOIN WITH num#DataFlowPublic::TCfgNode#2cd2fb22 ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.0, Lhs.2, Lhs.3 0 ~0% {5} | JOIN WITH `DataFlowPublic::Node.getEnclosingCallable/0#dispred#be95825a` ON FIRST 1 OUTPUT Lhs.1, Rhs.1, Lhs.2, Lhs.3, Lhs.4 0 ~0% {4} | JOIN WITH `DataFlowPublic::Node.getEnclosingCallable/0#dispred#be95825a` ON FIRST 2 OUTPUT Lhs.0, Lhs.2, Lhs.3, Lhs.4 0 ~0% {5} | JOIN WITH num#DataFlowDispatch::TSelfArgumentPosition#de6d64b8 CARTESIAN PRODUCT OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.0, Rhs.0 ``` Overall stats (old) Pipeline standard for DataFlowDispatch::getCallArg/5#21589076@b30c7vxg was evaluated in 51 iterations totaling 54ms (delta sizes total: 38247). ==> (new) Pipeline standard for DataFlowDispatch::getCallArg/5#21589076@c1559vxu was evaluated in 51 iterations totaling 28ms (delta sizes total: 38247). --- .../dataflow/new/internal/DataFlowDispatch.qll | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index b869bdda521f..d4af28d4e262 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -1302,9 +1302,7 @@ predicate getCallArg(CallNode call, Function target, CallType type, Node arg, Ar // // call_func(my_obj.some_method) // ``` - exists(CfgNode cfgNode | cfgNode.getNode() = call | - cfgNode.getEnclosingCallable() = arg.getEnclosingCallable() - ) + exists(CfgNode cfgNode | cfgNode.getNode() = call | sameEnclosingCallable(cfgNode, arg)) or // cls argument for classmethod calls -- see note above about bound methods type instanceof CallTypeClassMethod and @@ -1312,9 +1310,7 @@ predicate getCallArg(CallNode call, Function target, CallType type, Node arg, Ar resolveMethodCall(call, target, type, arg) and (arg = classTracker(_) or arg = clsArgumentTracker(_)) and // dataflow lib has requirement that arguments and calls are in same enclosing callable. - exists(CfgNode cfgNode | cfgNode.getNode() = call | - cfgNode.getEnclosingCallable() = arg.getEnclosingCallable() - ) + exists(CfgNode cfgNode | cfgNode.getNode() = call | sameEnclosingCallable(cfgNode, arg)) or // normal arguments for method calls ( @@ -1365,6 +1361,16 @@ predicate getCallArg(CallNode call, Function target, CallType type, Node arg, Ar ) } +/** + * join-order helper for getCallArg, since otherwise we would do cartesian product of + * the enclosing callables + */ +bindingset[node1, node2] +pragma[inline_late] +private predicate sameEnclosingCallable(Node node1, Node node2) { + node1.getEnclosingCallable() = node2.getEnclosingCallable() +} + // ============================================================================= // DataFlowCall // ============================================================================= From 33fe5abf94ce192832c38110c25ee1c662a8a74e Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Thu, 21 Mar 2024 13:29:40 +0000 Subject: [PATCH 443/731] Kotlin: Remove references to legacy ODASA_SNAPSHOT env var --- .../src/main/java/com/semmle/util/process/Env.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/kotlin-extractor/src/main/java/com/semmle/util/process/Env.java b/java/kotlin-extractor/src/main/java/com/semmle/util/process/Env.java index 2e00bb61b322..0ce3d42c14f0 100644 --- a/java/kotlin-extractor/src/main/java/com/semmle/util/process/Env.java +++ b/java/kotlin-extractor/src/main/java/com/semmle/util/process/Env.java @@ -274,8 +274,6 @@ public enum Var { /** * The location of the snapshot being built. */ - ODASA_SNAPSHOT, - ODASA_SNAPSHOT_NAME, ODASA_SRC, ODASA_DB, ODASA_BUILD_ERROR_DIR, From 1b3605754fdb8b8355b97ba33c2f0749ba5884b6 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Thu, 21 Mar 2024 13:38:54 +0000 Subject: [PATCH 444/731] Java: Add a changenote for dropping ODASA_SNAPSHOT support --- java/ql/lib/change-notes/2024-03-21-env-vars.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2024-03-21-env-vars.md diff --git a/java/ql/lib/change-notes/2024-03-21-env-vars.md b/java/ql/lib/change-notes/2024-03-21-env-vars.md new file mode 100644 index 000000000000..9306a814a7c9 --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-21-env-vars.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. From 79094e4b89dfcc9e9d6180b64285ec46ae52994d Mon Sep 17 00:00:00 2001 From: Cornelius Riemenschneider <cornelius@github.com> Date: Thu, 21 Mar 2024 13:51:03 +0000 Subject: [PATCH 445/731] Swift genrule: Replace local with no-sandbox. This allows the bazel cache to cache this genrule invocation. It shouldn't depend on system-specific binaries, so I believe this is correct. This is the only part of our build where we otherwise need to recompute parts after pulling in a full cache. --- swift/third_party/BUILD.swift-toolchain-linux.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/third_party/BUILD.swift-toolchain-linux.bazel b/swift/third_party/BUILD.swift-toolchain-linux.bazel index 7c00eae382a8..8125d4a04481 100644 --- a/swift/third_party/BUILD.swift-toolchain-linux.bazel +++ b/swift/third_party/BUILD.swift-toolchain-linux.bazel @@ -30,7 +30,7 @@ _pm_interface_files = [ srcs = ["%s/%s/%s" % (_strip_prefix, dir, interface)], outs = [module], cmd = "$(location usr/bin/swift-frontend) -compile-module-from-interface $< -o $@ -I $$(dirname $<)", - local = True, + tags = ["no-sandbox"], tools = ["usr/bin/swift-frontend"], ), pkg_files( From bfa8515b28f84b70cefa843fa05dc6858b9d23af Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswriedtlarsen@gmail.com> Date: Thu, 21 Mar 2024 14:51:45 +0100 Subject: [PATCH 446/731] Python: Apply suggestions from code review Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com> --- python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll b/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll index b5f5dcddbeb8..fb747a4cabcd 100644 --- a/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll +++ b/python/ql/lib/semmle/python/frameworks/SqlAlchemy.qll @@ -129,7 +129,7 @@ module SqlAlchemy { ConnectionConstruction() { // without the `pragma[only_bind_out]` we would start with joining // `API::Node.getACall` with `CallCfgNode` which is not optimal - this = pragma[only_bind_out](classRef().getACall()) + this = pragma[only_bind_out](classRef()).getACall() or this = connectionConstruction_helper() } From 9cc287dff164b27653b60ca6298fbe8faaca02c5 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Thu, 21 Mar 2024 14:45:54 +0100 Subject: [PATCH 447/731] C++: Handle destructors of range-based for-loop initializer statements --- .../library-tests/ir/ir/PrintAST.expected | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index ddf5d8b1f5c2..aa703b63af7a 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -17357,6 +17357,12 @@ ir.cpp: # 2201| getArgument(0): [VariableAccess] x # 2201| Type = [Class] ClassWithDestructor # 2201| ValueCategory = prvalue(load) +# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2201| Type = [VoidType] void +# 2201| ValueCategory = prvalue +# 2201| getQualifier(): [ReuseExpr] reuse of temporary object +# 2201| Type = [Class] ClassWithDestructor +# 2201| ValueCategory = xvalue # 2201| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 2201| Type = [Class] ClassWithDestructor # 2201| ValueCategory = lvalue @@ -17489,6 +17495,12 @@ ir.cpp: # 2204| getArgument(0): [VariableAccess] x # 2204| Type = [Class] ClassWithDestructor # 2204| ValueCategory = prvalue(load) +# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2204| Type = [VoidType] void +# 2204| ValueCategory = prvalue +# 2204| getQualifier(): [ReuseExpr] reuse of temporary object +# 2204| Type = [Class] ClassWithDestructor +# 2204| ValueCategory = xvalue # 2204| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 2204| Type = [Class] ClassWithDestructor # 2204| ValueCategory = lvalue @@ -17802,6 +17814,12 @@ ir.cpp: # 2215| getArgument(0): [VariableAccess] x # 2215| Type = [Class] ClassWithDestructor # 2215| ValueCategory = prvalue(load) +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [ReuseExpr] reuse of temporary object +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = xvalue # 2215| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 2215| Type = [Class] ClassWithDestructor # 2215| ValueCategory = lvalue @@ -19933,6 +19951,12 @@ ir.cpp: # 2416| getQualifier(): [ConstructorCall] call to ClassWithDestructor # 2416| Type = [VoidType] void # 2416| ValueCategory = prvalue +# 2416| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2416| Type = [VoidType] void +# 2416| ValueCategory = prvalue +# 2416| getQualifier(): [ReuseExpr] reuse of temporary object +# 2416| Type = [Class] ClassWithDestructor +# 2416| ValueCategory = xvalue # 2416| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2416| Type = [Class] ClassWithDestructor # 2416| ValueCategory = prvalue(load) From 98de4e209b320b778b2c07af9d0ee28c42ef990b Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Thu, 21 Mar 2024 15:43:18 +0100 Subject: [PATCH 448/731] C++: Handle destructors of if and switch initializer statements --- .../test/library-tests/ir/ir/PrintAST.expected | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index aa703b63af7a..a6276ecfc5aa 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -19815,6 +19815,12 @@ ir.cpp: # 2400| getQualifier(): [ConstructorCall] call to ClassWithDestructor # 2400| Type = [VoidType] void # 2400| ValueCategory = prvalue +# 2400| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2400| Type = [VoidType] void +# 2400| ValueCategory = prvalue +# 2400| getQualifier(): [ReuseExpr] reuse of temporary object +# 2400| Type = [Class] ClassWithDestructor +# 2400| ValueCategory = xvalue # 2400| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2400| Type = [Class] ClassWithDestructor # 2400| ValueCategory = prvalue(load) @@ -19843,6 +19849,12 @@ ir.cpp: # 2403| getQualifier(): [ConstructorCall] call to ClassWithDestructor # 2403| Type = [VoidType] void # 2403| ValueCategory = prvalue +# 2403| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2403| Type = [VoidType] void +# 2403| ValueCategory = prvalue +# 2403| getQualifier(): [ReuseExpr] reuse of temporary object +# 2403| Type = [Class] ClassWithDestructor +# 2403| ValueCategory = xvalue # 2403| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2403| Type = [Class] ClassWithDestructor # 2403| ValueCategory = prvalue(load) @@ -19912,6 +19924,12 @@ ir.cpp: # 2411| getQualifier(): [ConstructorCall] call to ClassWithDestructor # 2411| Type = [VoidType] void # 2411| ValueCategory = prvalue +# 2411| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2411| Type = [VoidType] void +# 2411| ValueCategory = prvalue +# 2411| getQualifier(): [ReuseExpr] reuse of temporary object +# 2411| Type = [Class] ClassWithDestructor +# 2411| ValueCategory = xvalue # 2411| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2411| Type = [Class] ClassWithDestructor # 2411| ValueCategory = prvalue(load) From 93f940aa9c2b911d878654a80a285586adc38084 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Thu, 21 Mar 2024 15:55:05 +0100 Subject: [PATCH 449/731] Python: Join-order improvement for `DataFlowDispatch::TrackAttrReadInput` I was surprised to see that this predicate actually gets evaluated 3 times - Pipeline standard for DataFlowDispatch::TrackAttrReadInput::start/2#67f26627@c15596yu was evaluated in 74 iterations totaling 165ms (delta sizes total: 113119). - Pipeline standard for DataFlowDispatch::TrackAttrReadInput::start/2#67f26627@3459ejws was evaluated in 30 iterations totaling 76ms (delta sizes total: 32555). - Pipeline standard for DataFlowDispatch::TrackAttrReadInput::start/2#67f26627@5ac22jwq was evaluated in 30 iterations totaling 108ms (delta sizes total: 32555). It does however fit with it being used in exactly 3 places: https://github.com/search?q=repo%3Agithub%2Fcodeql+%2FattrReadTracker%5C%28%2F&type=code -- so I assume it's because each use forces a new evaluation. Although that's something we could look into solving, for now I'm just trying to fix the join-order. Initial ``` Pipeline standard for DataFlowDispatch::TrackAttrReadInput::start/2#67f26627@3459ejws was evaluated in 30 iterations totaling 76ms (delta sizes total: 32555). 7068090 ~0% {2} r1 = SCAN Attributes::AttrRead#class#f6c3f431 OUTPUT In.0, In.0 {2} | AND NOT `DataFlowDispatch::TrackAttrReadInput::start/2#67f26627#prev`(FIRST 2) 3901178 ~5% {2} | SCAN OUTPUT In.1, In.1 3901178 ~0% {3} | JOIN WITH `Attributes::AttrRef.getObject/0#dispred#d7cd0a97` ON FIRST 1 OUTPUT Rhs.1, Lhs.0, Lhs.1 13615 ~1% {2} r2 = JOIN r1 WITH `DataFlowDispatch::classTracker/1#d11f2237#reorder_1_0#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 94 ~2% {2} r3 = JOIN r1 WITH `DataFlowDispatch::superCallTwoArgumentTracker/2#d18be99f#reorder_2_0_1#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 18846 ~1% {2} r4 = JOIN r1 WITH `DataFlowDispatch::classInstanceTracker/1#d73ecef4#prev_delta_1#join_rhs` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 32555 ~1% {2} r5 = r2 UNION r3 UNION r4 return r5 ``` ==> ``` Pipeline standard for DataFlowDispatch::TrackAttrReadInput::start/2#67f26627@f2517jwq was evaluated in 30 iterations totaling 12ms (delta sizes total: 32704). 186719 ~121% {1} r1 = SCAN `DataFlowDispatch::classInstanceTracker/1#d73ecef4#prev_delta` OUTPUT In.1 164342 ~158% {1} r2 = SCAN `DataFlowDispatch::classTracker/1#d11f2237#reorder_1_0#prev_delta` OUTPUT In.0 96 ~0% {1} r3 = SCAN `DataFlowDispatch::superCallTwoArgumentTracker/2#d18be99f#reorder_2_0_1#prev_delta` OUTPUT In.0 351157 ~80% {1} r4 = r1 UNION r2 UNION r3 88074 ~14% {1} | JOIN WITH `Attributes::AttrRef.getObject/0#dispred#d7cd0a97_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1 41789 ~18% {2} | JOIN WITH Attributes::AttrRead#class#f6c3f431 ON FIRST 1 OUTPUT Lhs.0, Lhs.0 {2} | AND NOT `DataFlowDispatch::TrackAttrReadInput::start/2#67f26627#prev`(FIRST 2) 32883 ~2% {2} | SCAN OUTPUT In.1, In.1 return r4 ``` AND initial ``` Pipeline standard for DataFlowDispatch::TrackAttrReadInput::start/2#67f26627@c15596yu was evaluated in 74 iterations totaling 165ms (delta sizes total: 113119). 17434622 ~0% {2} r1 = SCAN Attributes::AttrRead#class#f6c3f431 OUTPUT In.0, In.0 {2} | AND NOT `DataFlowDispatch::TrackAttrReadInput::start/2#67f26627#prev`(FIRST 2) 9483976 ~4% {2} | SCAN OUTPUT In.1, In.1 9483976 ~0% {3} | JOIN WITH `Attributes::AttrRef.getObject/0#dispred#d7cd0a97` ON FIRST 1 OUTPUT Rhs.1, Lhs.0, Lhs.1 19258 ~1% {2} r2 = JOIN r1 WITH `DataFlowDispatch::classInstanceTracker/1#d73ecef4#reorder_1_0#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 1654 ~1% {2} r3 = JOIN r1 WITH `DataFlowDispatch::superCallNoArgumentTracker/1#0a2e8a06#reorder_1_0#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 1314 ~4% {2} r4 = JOIN r1 WITH `DataFlowDispatch::clsArgumentTracker/1#47339327#reorder_1_0#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 94 ~2% {2} r5 = JOIN r1 WITH `DataFlowDispatch::superCallTwoArgumentTracker/2#d18be99f#reorder_2_0_1#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 77217 ~0% {2} r6 = JOIN r1 WITH `DataFlowDispatch::selfTracker/1#f157aa27#reorder_1_0#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 13632 ~1% {2} r7 = JOIN r1 WITH `DataFlowDispatch::classTracker/1#d11f2237#reorder_1_0#prev_delta` ON FIRST 1 OUTPUT Lhs.1, Lhs.2 113169 ~0% {2} r8 = r2 UNION r3 UNION r4 UNION r5 UNION r6 UNION r7 return r8 ``` ==> ``` Pipeline standard for DataFlowDispatch::TrackAttrReadInput::start/2#67f26627@d732e6yt was evaluated in 74 iterations totaling 31ms (delta sizes total: 113129). 186719 ~150% {1} r1 = SCAN `DataFlowDispatch::classInstanceTracker/1#d73ecef4#reorder_1_0#prev_delta` OUTPUT In.0 1669 ~0% {1} r2 = SCAN `DataFlowDispatch::superCallNoArgumentTracker/1#0a2e8a06#reorder_1_0#prev_delta` OUTPUT In.0 3425 ~15% {1} r3 = SCAN `DataFlowDispatch::clsArgumentTracker/1#47339327#prev_delta` OUTPUT In.1 96 ~0% {1} r4 = SCAN `DataFlowDispatch::superCallTwoArgumentTracker/2#d18be99f#reorder_2_0_1#prev_delta` OUTPUT In.0 123310 ~0% {1} r5 = SCAN `DataFlowDispatch::selfTracker/1#f157aa27#reorder_1_0#prev_delta` OUTPUT In.0 164342 ~581% {1} r6 = SCAN `DataFlowDispatch::classTracker/1#d11f2237#reorder_1_0#prev_delta` OUTPUT In.0 479561 ~94% {1} r7 = r1 UNION r2 UNION r3 UNION r4 UNION r5 UNION r6 169424 ~2% {1} | JOIN WITH `Attributes::AttrRef.getObject/0#dispred#d7cd0a97_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1 116290 ~0% {2} | JOIN WITH Attributes::AttrRead#class#f6c3f431 ON FIRST 1 OUTPUT Lhs.0, Lhs.0 {2} | AND NOT `DataFlowDispatch::TrackAttrReadInput::start/2#67f26627#prev`(FIRST 2) 113160 ~0% {2} | SCAN OUTPUT In.1, In.1 return r7 ``` --- .../semmle/python/dataflow/new/internal/DataFlowDispatch.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll index d4af28d4e262..ec8e2148e05c 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll @@ -876,7 +876,7 @@ private module TrackAttrReadInput implements CallGraphConstruction::Simple::Inpu predicate start(Node start, AttrRead attr) { start = attr and - attr.getObject() in [ + pragma[only_bind_into](attr.getObject()) in [ classTracker(_), classInstanceTracker(_), selfTracker(_), clsArgumentTracker(_), superCallNoArgumentTracker(_), superCallTwoArgumentTracker(_, _) ] From a5b801b31f38c3d8173d4a54032f5b3220a89749 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Fri, 1 Mar 2024 13:56:09 -0500 Subject: [PATCH 450/731] Add File reading methods --- csharp/ql/lib/ext/System.IO.model.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index e1120d5684ec..7ad4a4b35ce3 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -7,7 +7,18 @@ extensions: - ["System.IO", "File", False, "Create", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "File", False, "CreateText", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "File", False, "Open", "", "", "ReturnValue", "file-write", "manual"] + - ["System.IO", "File", False, "Open", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "OpenRead", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "OpenText", "", "", "ReturnValue", "file", "manual"] - ["System.IO", "File", False, "OpenWrite", "", "", "ReturnValue", "file-write", "manual"] + - ["System.IO", "File", False, "ReadAllBytes", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "ReadAllBytesAsync", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "ReadAllLines", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "ReadAllLinesAsync", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "ReadAllText", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "ReadAllTextAsync", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "ReadLines", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "File", False, "ReadLinesAsync", "", "", "ReturnValue", "file", "manual"] - ["System.IO", "FileInfo", False, "AppendText", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "FileInfo", False, "Create", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "FileInfo", False, "CreateText", "", "", "ReturnValue", "file-write", "manual"] From bb9b0eabf27f3cf5548ee5205400b94c3fbfe973 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Fri, 1 Mar 2024 13:56:25 -0500 Subject: [PATCH 451/731] Add BufferedStream summary models --- csharp/ql/lib/ext/System.IO.model.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index 7ad4a4b35ce3..c1d98d55410a 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -36,6 +36,8 @@ extensions: pack: codeql/csharp-all extensible: summaryModel data: + - ["System.IO", "BufferedStream", False, "BufferedStream", "(System.IO.Stream)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["System.IO", "BufferedStream", False, "BufferedStream", "(System.IO.Stream,System.Int32)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["System.IO", "FileStream", False, "FileStream", "(System.String,System.IO.FileMode)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["System.IO", "FileStream", False, "FileStream", "(System.String,System.IO.FileMode,System.IO.FileAccess)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["System.IO", "FileStream", False, "FileStream", "(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)", "", "Argument[0]", "Argument[this]", "taint", "manual"] From a8c5e4e0f275514ae7a6b616bc14e36a9338401c Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Fri, 1 Mar 2024 13:59:04 -0500 Subject: [PATCH 452/731] FileInfo source models --- csharp/ql/lib/ext/System.IO.model.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index c1d98d55410a..31ca78ff4985 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -23,6 +23,8 @@ extensions: - ["System.IO", "FileInfo", False, "Create", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "FileInfo", False, "CreateText", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "FileInfo", False, "Open", "", "", "ReturnValue", "file-write", "manual"] + - ["System.IO", "FileInfo", False, "Open", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "FileInfo", False, "OpenRead", "", "", "ReturnValue", "file", "manual"] - ["System.IO", "FileInfo", False, "OpenWrite", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "FileStream", False, "FileStream", "", "", "Argument[this]", "file", "manual"] - ["System.IO", "FileStream", False, "FileStream", "", "", "Argument[this]", "file-write", "manual"] From 9232fafde1266fa8bcd34ac62476fdd57fd5e8f8 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Fri, 1 Mar 2024 15:37:38 -0500 Subject: [PATCH 453/731] Add `System.IO.Stream::Read(Span<Byte>)` model --- csharp/ql/lib/ext/System.IO.model.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index 31ca78ff4985..14838b50385a 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -84,6 +84,7 @@ extensions: - ["System.IO", "Stream", True, "CopyToAsync", "(System.IO.Stream,System.Int32,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", False, "CopyToAsync", "(System.IO.Stream,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", True, "Read", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] + - ["System.IO", "Stream", True, "Read", "(System.Span<System.Byte>)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", False, "ReadAsync", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", True, "ReadAsync", "(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", True, "Write", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[0].Element", "Argument[this]", "taint", "manual"] From d387e6d0686840453601a7e18fedd4cd1590704f Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 7 Mar 2024 00:34:06 -0500 Subject: [PATCH 454/731] Fix flow-summary tests --- .../dataflow/library/FlowSummaries.expected | 18 +++++++++++++++++- .../library/FlowSummariesFiltered.expected | 4 +++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 30396dbf4101..4a319fec7bfd 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1478,6 +1478,7 @@ summary | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;FileBufferingReadStream;(System.IO.Stream,System.Int32,System.Nullable<System.Int64>,System.Func<System.String>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;FileBufferingReadStream;(System.IO.Stream,System.Int32,System.Nullable<System.Int64>,System.Func<System.String>,System.Buffers.ArrayPool<System.Byte>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -4067,6 +4068,7 @@ summary | ServiceStack.Text;NetCoreMemory;false;Deserialize;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | ServiceStack.Text;NetCoreMemory;false;DeserializeAsync;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | ServiceStack.Text;RecyclableMemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| ServiceStack.Text;RecyclableMemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | ServiceStack.Text;RecyclableMemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | ServiceStack.Text;RecyclableMemoryStreamManager+EventHandler;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | ServiceStack.Text;RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler;false;BeginInvoke;(ServiceStack.Text.RecyclableMemoryStreamManager+Events+MemoryStreamDiscardReason,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | @@ -9395,6 +9397,7 @@ summary | System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;BrotliStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO.Compression;BrotliStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO.Compression;BrotliStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;BrotliStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;BrotliStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -9414,6 +9417,7 @@ summary | System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;DeflateStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO.Compression;DeflateStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO.Compression;DeflateStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;DeflateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;DeflateStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -9431,6 +9435,7 @@ summary | System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.IO.Compression;GZipStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO.Compression;GZipStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO.Compression;GZipStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;GZipStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;GZipStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -9446,6 +9451,7 @@ summary | System.IO.Compression;ZLibStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.Compression;ZLibStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;ZLibStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO.Compression;ZLibStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO.Compression;ZLibStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;ZLibStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;ZLibStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -9502,6 +9508,7 @@ summary | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9562,6 +9569,7 @@ summary | System.IO.Pipes;PipeStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Pipes;PipeStream;false;InitializeHandle;(Microsoft.Win32.SafeHandles.SafePipeHandle,System.Boolean,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.IO.Pipes;PipeStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO.Pipes;PipeStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO.Pipes;PipeStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Pipes;PipeStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Pipes;PipeStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -9584,11 +9592,13 @@ summary | System.IO;BufferedStream;false;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[this];Argument[0].Element;taint;manual | | System.IO;BufferedStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[0].Element;Argument[this];taint;manual | | System.IO;BufferedStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;manual | -| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream);;Argument[0];Argument[this];taint;manual | +| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream,System.Int32);;Argument[0];Argument[this];taint;manual | | System.IO;BufferedStream;false;CopyTo;(System.IO.Stream,System.Int32);;Argument[this];Argument[0];taint;manual | | System.IO;BufferedStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;BufferedStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;BufferedStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;BufferedStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO;BufferedStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;BufferedStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;BufferedStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -9685,6 +9695,7 @@ summary | System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;FileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;FileStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO;FileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;FileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.IO;FileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9740,6 +9751,7 @@ summary | System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;Argument[this];taint;manual | | System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;Argument[this];taint;manual | | System.IO;MemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;MemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO;MemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;MemoryStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;MemoryStream;false;ToArray;();;Argument[this];ReturnValue;taint;manual | @@ -9824,6 +9836,7 @@ summary | System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;true;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;true;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;true;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -10038,6 +10051,7 @@ summary | System.IO;UnmanagedMemoryStream;false;Initialize;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[this];taint;df-generated | | System.IO;UnmanagedMemoryStream;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[this];taint;df-generated | | System.IO;UnmanagedMemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;UnmanagedMemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64);;Argument[0];Argument[this];taint;df-generated | @@ -11977,6 +11991,7 @@ summary | System.Net.Quic;QuicStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;manual | | System.Net.Quic;QuicStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Net.Quic;QuicStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.Net.Quic;QuicStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.Net.Quic;QuicStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Quic;QuicStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Net.Quic;QuicStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -12082,6 +12097,7 @@ summary | System.Net.Sockets;NetworkStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Net.Sockets;NetworkStream;false;NetworkStream;(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.Net.Sockets;NetworkStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.Net.Sockets;NetworkStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index cf17fed3269c..50b1a5178cf4 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -7532,7 +7532,8 @@ | System.IO;BinaryWriter;false;Write;(System.Byte[]);;Argument[0].Element;Argument[this];taint;df-generated | | System.IO;BinaryWriter;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;df-generated | | System.IO;BinaryWriter;false;get_BaseStream;();;Argument[this];ReturnValue;taint;df-generated | -| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream,System.Int32);;Argument[0];Argument[this];taint;df-generated | +| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream);;Argument[0];Argument[this];taint;manual | +| System.IO;BufferedStream;false;BufferedStream;(System.IO.Stream,System.Int32);;Argument[0];Argument[this];taint;manual | | System.IO;BufferedStream;false;get_UnderlyingStream;();;Argument[this];ReturnValue;taint;df-generated | | System.IO;Directory;false;CreateDirectory;(System.String);;Argument[0];ReturnValue;taint;df-generated | | System.IO;Directory;false;CreateDirectory;(System.String,System.IO.UnixFileMode);;Argument[0];ReturnValue;taint;df-generated | @@ -7738,6 +7739,7 @@ | System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;true;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;true;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;true;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | From 3e29a8d2a189a36e8b47a94dd022f3210957d5e8 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Wed, 13 Mar 2024 13:18:43 -0400 Subject: [PATCH 455/731] System.IO files test --- .../dataflow/flowsources/stored/file/Files.cs | 84 +++++++++++++++++++ .../flowsources/stored/file/Files.expected | 0 .../flowsources/stored/file/Files.ext.yml | 7 ++ .../dataflow/flowsources/stored/file/Files.ql | 12 +++ .../dataflow/flowsources/stored/file/options | 3 + 5 files changed, 106 insertions(+) create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.expected create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ext.yml create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ql create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/file/options diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs new file mode 100644 index 000000000000..168a7086f8d7 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs @@ -0,0 +1,84 @@ +using System.IO; + +namespace Test +{ + class Files + { + public static void ReadAllText(string path) + { + string text = File.ReadAllText(path); + Sink(text); // $ hasTaintFlow=line:9 + } + + public static void ReadAllLines(string path) + { + string[] lines = File.ReadAllLines(path); + Sink(lines); // $ hasTaintFlow=line:15 + } + + public static void ReadAllBytes(string path) + { + byte[] bytes = File.ReadAllBytes(path); + Sink(bytes); // $ hasTaintFlow=line:21 + } + + public static void ReadLines(string path) + { + foreach (string line in File.ReadLines(path)) + { + Sink(line); // $ hasTaintFlow=line:27 + } + } + + public static void BuuferedRead(string path) + { + using (FileStream fs = new FileStream(path, FileMode.Open)) + { + using (BufferedStream bs = new BufferedStream(fs)) + { + using (StreamReader sr = new StreamReader(bs)) + { + string line; + while ((line = sr.ReadLine()) != null) + { + Sink(line); // $ hasTaintFlow=line:35 + } + } + } + } + } + + public static void ReadBlocks(string path) + { + using (FileStream fs = File.OpenRead(path)) + { + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0) + { + Sink(buffer[0]); // $ hasTaintFlow=line:53 + } + } + } + + public static async void ReadAllTextAsync(string path) + { + string text = await File.ReadAllTextAsync(path); + Sink(text); // $ hasTaintFlow=line:66 + + using (FileStream fs = File.Open(path, FileMode.Open)) + { + using (StreamReader sr = new StreamReader(fs)) + { + string line; + while ((line = await sr.ReadLineAsync()) != null) + { + Sink(line); // $ hasTaintFlow=line:69 + } + } + } + } + + static void Sink(object o) { } + } +} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.expected b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ext.yml b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ext.yml new file mode 100644 index 000000000000..520203b141fe --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["file", true, 0] \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ql b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ql new file mode 100644 index 000000000000..1060ea756a26 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.ql @@ -0,0 +1,12 @@ +import csharp +import semmle.code.csharp.security.dataflow.flowsources.FlowSources +import TestUtilities.InlineFlowTest +import TaintFlowTest<FilesConfig> + +module FilesConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } + + predicate isSink(DataFlow::Node sink) { + exists(MethodCall mc | mc.getTarget().hasName("Sink") | sink.asExpr() = mc.getArgument(0)) + } +} diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/options b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/options new file mode 100644 index 000000000000..13f94236f19a --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/options @@ -0,0 +1,3 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj +semmle-extractor-options: ${testdir}/../../../../../resources/stubs/System.Web.cs From a698684fecb4f52e1fc2e57cf3461460eb46c19e Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Wed, 13 Mar 2024 22:00:42 -0400 Subject: [PATCH 456/731] `System.IO.Stream::ReadAtLeast` --- csharp/ql/lib/ext/System.IO.model.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index 14838b50385a..d10f95240656 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -87,6 +87,9 @@ extensions: - ["System.IO", "Stream", True, "Read", "(System.Span<System.Byte>)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", False, "ReadAsync", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", True, "ReadAsync", "(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] + - ["System.IO", "Stream", True, "ReadAtLeast", "(System.Span<System.Byte>,System.Int32,System.Boolean)", "", "Argument[this]", "Argument[0]", "taint", "manual"] + # Post-update nodes for `Memory<T>` are currently unsupported. This model is provided for completeness + - ["System.IO", "Stream", True, "ReadAtLeastAsync", "(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", True, "Write", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[0].Element", "Argument[this]", "taint", "manual"] - ["System.IO", "Stream", False, "WriteAsync", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[0].Element", "Argument[this]", "taint", "manual"] - ["System.IO", "Stream", True, "WriteAsync", "(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)", "", "Argument[0].Element", "Argument[this]", "taint", "manual"] From 2a73677fd27a5b66708b1787faedfdce461a3d0c Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Wed, 13 Mar 2024 22:02:20 -0400 Subject: [PATCH 457/731] Missing `Stream::ReadAsync` overload --- csharp/ql/lib/ext/System.IO.model.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index d10f95240656..a93d12e75409 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -87,6 +87,8 @@ extensions: - ["System.IO", "Stream", True, "Read", "(System.Span<System.Byte>)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", False, "ReadAsync", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", True, "ReadAsync", "(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] + # Post-update nodes for `Memory<T>` are currently unsupported. This model is provided for completeness + - ["System.IO", "Stream", True, "ReadAsync", "(System.Memory<System.Byte>,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", True, "ReadAtLeast", "(System.Span<System.Byte>,System.Int32,System.Boolean)", "", "Argument[this]", "Argument[0]", "taint", "manual"] # Post-update nodes for `Memory<T>` are currently unsupported. This model is provided for completeness - ["System.IO", "Stream", True, "ReadAtLeastAsync", "(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] From d6f085373e3a4acb27cc93cb47901bc62ac76618 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Wed, 13 Mar 2024 22:06:04 -0400 Subject: [PATCH 458/731] `System.IO.Stream::ReadExactly` models --- csharp/ql/lib/ext/System.IO.model.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index a93d12e75409..4b0d417060a6 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -92,6 +92,8 @@ extensions: - ["System.IO", "Stream", True, "ReadAtLeast", "(System.Span<System.Byte>,System.Int32,System.Boolean)", "", "Argument[this]", "Argument[0]", "taint", "manual"] # Post-update nodes for `Memory<T>` are currently unsupported. This model is provided for completeness - ["System.IO", "Stream", True, "ReadAtLeastAsync", "(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] + - ["System.IO", "Stream", True, "ReadExactly", "(System.Span<System.Byte>)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] + - ["System.IO", "Stream", True, "ReadExactly", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", True, "Write", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[0].Element", "Argument[this]", "taint", "manual"] - ["System.IO", "Stream", False, "WriteAsync", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[0].Element", "Argument[this]", "taint", "manual"] - ["System.IO", "Stream", True, "WriteAsync", "(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)", "", "Argument[0].Element", "Argument[this]", "taint", "manual"] From e14e47cd735dd1b3325cbdbcb49a9c13b00ed208 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Wed, 13 Mar 2024 22:07:12 -0400 Subject: [PATCH 459/731] Fix `Stream::Read(Span<byte>)` model --- csharp/ql/lib/ext/System.IO.model.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index 4b0d417060a6..c640a0cd56dd 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -84,7 +84,7 @@ extensions: - ["System.IO", "Stream", True, "CopyToAsync", "(System.IO.Stream,System.Int32,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", False, "CopyToAsync", "(System.IO.Stream,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", True, "Read", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - - ["System.IO", "Stream", True, "Read", "(System.Span<System.Byte>)", "", "Argument[this]", "Argument[0]", "taint", "manual"] + - ["System.IO", "Stream", True, "Read", "(System.Span<System.Byte>)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", False, "ReadAsync", "(System.Byte[],System.Int32,System.Int32)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - ["System.IO", "Stream", True, "ReadAsync", "(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] # Post-update nodes for `Memory<T>` are currently unsupported. This model is provided for completeness From 08611f0c9c220d9af049a4d0b74cf553e76a0c84 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Wed, 13 Mar 2024 22:35:56 -0400 Subject: [PATCH 460/731] Fix flow summary tests --- csharp/ql/lib/ext/System.IO.model.yml | 2 +- .../dataflow/library/FlowSummaries.expected | 78 +++++++++---------- .../library/FlowSummariesFiltered.expected | 14 ++-- 3 files changed, 45 insertions(+), 49 deletions(-) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index c640a0cd56dd..2b23698fd210 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -89,7 +89,7 @@ extensions: - ["System.IO", "Stream", True, "ReadAsync", "(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] # Post-update nodes for `Memory<T>` are currently unsupported. This model is provided for completeness - ["System.IO", "Stream", True, "ReadAsync", "(System.Memory<System.Byte>,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] - - ["System.IO", "Stream", True, "ReadAtLeast", "(System.Span<System.Byte>,System.Int32,System.Boolean)", "", "Argument[this]", "Argument[0]", "taint", "manual"] + - ["System.IO", "Stream", True, "ReadAtLeast", "(System.Span<System.Byte>,System.Int32,System.Boolean)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] # Post-update nodes for `Memory<T>` are currently unsupported. This model is provided for completeness - ["System.IO", "Stream", True, "ReadAtLeastAsync", "(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken)", "", "Argument[this]", "Argument[0]", "taint", "manual"] - ["System.IO", "Stream", True, "ReadExactly", "(System.Span<System.Byte>)", "", "Argument[this]", "Argument[0].Element", "taint", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 4a319fec7bfd..055b9bba9523 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1470,7 +1470,7 @@ summary | Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | | Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | Microsoft.AspNetCore.WebUtilities;BufferedReadStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -1478,9 +1478,9 @@ summary | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;FileBufferingReadStream;(System.IO.Stream,System.Int32,System.Nullable<System.Int64>,System.Func<System.String>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;FileBufferingReadStream;(System.IO.Stream,System.Int32,System.Nullable<System.Int64>,System.Func<System.String>,System.Buffers.ArrayPool<System.Byte>);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingReadStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -1488,7 +1488,7 @@ summary | Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | Microsoft.AspNetCore.WebUtilities;FileBufferingWriteStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -4068,7 +4068,7 @@ summary | ServiceStack.Text;NetCoreMemory;false;Deserialize;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | ServiceStack.Text;NetCoreMemory;false;DeserializeAsync;(System.IO.Stream,System.Type,ServiceStack.Text.Common.DeserializeStringSpanDelegate);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | ServiceStack.Text;RecyclableMemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| ServiceStack.Text;RecyclableMemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| ServiceStack.Text;RecyclableMemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | ServiceStack.Text;RecyclableMemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | ServiceStack.Text;RecyclableMemoryStreamManager+EventHandler;false;BeginInvoke;(System.AsyncCallback,System.Object);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | ServiceStack.Text;RecyclableMemoryStreamManager+LargeBufferDiscardedEventHandler;false;BeginInvoke;(ServiceStack.Text.RecyclableMemoryStreamManager+Events+MemoryStreamDiscardReason,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | @@ -9397,9 +9397,9 @@ summary | System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.Compression;BrotliStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;BrotliStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;BrotliStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO.Compression;BrotliStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;BrotliStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;BrotliStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO.Compression;BrotliStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;BrotliStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;BrotliStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;BrotliStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9417,9 +9417,9 @@ summary | System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.Compression;DeflateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;DeflateStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;DeflateStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO.Compression;DeflateStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;DeflateStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;DeflateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO.Compression;DeflateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;DeflateStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;DeflateStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;DeflateStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9435,9 +9435,9 @@ summary | System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionLevel,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.IO.Compression;GZipStream;false;GZipStream;(System.IO.Stream,System.IO.Compression.CompressionMode,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.IO.Compression;GZipStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;GZipStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO.Compression;GZipStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;GZipStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;GZipStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO.Compression;GZipStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;GZipStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;GZipStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;GZipStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9451,9 +9451,9 @@ summary | System.IO.Compression;ZLibStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.Compression;ZLibStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Compression;ZLibStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;ZLibStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO.Compression;ZLibStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;ZLibStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Compression;ZLibStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO.Compression;ZLibStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Compression;ZLibStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;ZLibStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Compression;ZLibStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9508,10 +9508,9 @@ summary | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | @@ -9569,9 +9568,9 @@ summary | System.IO.Pipes;PipeStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO.Pipes;PipeStream;false;InitializeHandle;(Microsoft.Win32.SafeHandles.SafePipeHandle,System.Boolean,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.IO.Pipes;PipeStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Pipes;PipeStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO.Pipes;PipeStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Pipes;PipeStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO.Pipes;PipeStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO.Pipes;PipeStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO.Pipes;PipeStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Pipes;PipeStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO.Pipes;PipeStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9598,9 +9597,9 @@ summary | System.IO;BufferedStream;false;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;BufferedStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;BufferedStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;BufferedStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO;BufferedStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;BufferedStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;BufferedStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO;BufferedStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;BufferedStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO;BufferedStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO;BufferedStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9695,10 +9694,9 @@ summary | System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;FileStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;FileStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO;FileStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;FileStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;FileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | -| System.IO;FileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO;FileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;FileStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO;FileStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | @@ -9751,9 +9749,9 @@ summary | System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean);;Argument[0].Element;Argument[this];taint;manual | | System.IO;MemoryStream;false;MemoryStream;(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Boolean);;Argument[0].Element;Argument[this];taint;manual | | System.IO;MemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;MemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO;MemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;MemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;MemoryStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO;MemoryStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;MemoryStream;false;ToArray;();;Argument[this];ReturnValue;taint;manual | | System.IO;MemoryStream;false;TryGetBuffer;(System.ArraySegment<System.Byte>);;Argument[this];ReturnValue;taint;df-generated | | System.IO;MemoryStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | @@ -9826,6 +9824,10 @@ summary | System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;false;FlushAsync;();;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;false;ReadAtLeast;(System.Span<System.Byte>,System.Int32,System.Boolean);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;false;ReadAtLeastAsync;(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | +| System.IO;Stream;false;ReadExactly;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;false;ReadExactly;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;false;Synchronized;(System.IO.Stream);;Argument[0];ReturnValue;taint;df-generated | | System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;manual | @@ -9836,9 +9838,9 @@ summary | System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;true;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;Stream;true;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO;Stream;true;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;Stream;true;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO;Stream;true;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO;Stream;true;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -10051,9 +10053,9 @@ summary | System.IO;UnmanagedMemoryStream;false;Initialize;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[this];taint;df-generated | | System.IO;UnmanagedMemoryStream;false;Initialize;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[this];taint;df-generated | | System.IO;UnmanagedMemoryStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;UnmanagedMemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO;UnmanagedMemoryStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO;UnmanagedMemoryStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64);;Argument[0];Argument[this];taint;df-generated | | System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Byte*,System.Int64,System.Int64,System.IO.FileAccess);;Argument[0];Argument[this];taint;df-generated | | System.IO;UnmanagedMemoryStream;false;UnmanagedMemoryStream;(System.Runtime.InteropServices.SafeBuffer,System.Int64,System.Int64);;Argument[0];Argument[this];taint;df-generated | @@ -11991,9 +11993,9 @@ summary | System.Net.Quic;QuicStream;false;BeginWrite;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;manual | | System.Net.Quic;QuicStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Net.Quic;QuicStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.Net.Quic;QuicStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.Net.Quic;QuicStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Quic;QuicStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.Net.Quic;QuicStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Net.Quic;QuicStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Quic;QuicStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.Net.Quic;QuicStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.Net.Quic;QuicStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -12028,9 +12030,7 @@ summary | System.Net.Security;NegotiateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Net.Security;NegotiateStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Security;NegotiateStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | -| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | -| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Security;NegotiateStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.Net.Security;NegotiateStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | @@ -12063,7 +12063,7 @@ summary | System.Net.Security;SslStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Net.Security;SslStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Security;SslStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.Net.Security;SslStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Net.Security;SslStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Security;SslStream;false;SslStream;(System.IO.Stream,System.Boolean,System.Net.Security.RemoteCertificateValidationCallback);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Net.Security;SslStream;false;SslStream;(System.IO.Stream,System.Boolean,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertificateSelectionCallback);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | System.Net.Security;SslStream;false;SslStream;(System.IO.Stream,System.Boolean,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertificateSelectionCallback);;Argument[3];Argument[3].Parameter[delegate-self];value;hq-generated | @@ -12097,11 +12097,9 @@ summary | System.Net.Sockets;NetworkStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Net.Sockets;NetworkStream;false;NetworkStream;(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean);;Argument[0];Argument[this];taint;df-generated | | System.Net.Sockets;NetworkStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.Net.Sockets;NetworkStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.Net.Sockets;NetworkStream;false;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | -| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | -| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.Net.Sockets;NetworkStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.Net.Sockets;NetworkStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.Net.Sockets;NetworkStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | @@ -14256,7 +14254,7 @@ summary | System.Security.Cryptography;CryptoStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.Security.Cryptography;CryptoStream;false;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | | System.Security.Cryptography;CryptoStream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.Security.Cryptography;CryptoStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.Security.Cryptography;CryptoStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.Security.Cryptography;CryptoStream;false;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.Security.Cryptography;CryptoStream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.Security.Cryptography;CryptoStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 50b1a5178cf4..378fe3b3d01d 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -7470,7 +7470,6 @@ | System.IO.IsolatedStorage;IsolatedStorage;false;get_AssemblyIdentity;();;Argument[this];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorage;false;get_DomainIdentity;();;Argument[this];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | -| System.IO.IsolatedStorage;IsolatedStorageFileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO.IsolatedStorage;IsolatedStorageFileStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.IO.MemoryMappedFiles;MemoryMappedFile;false;CreateFromFile;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.String,System.Int64,System.IO.MemoryMappedFiles.MemoryMappedFileAccess,System.IO.HandleInheritability,System.Boolean);;Argument[0];ReturnValue;taint;df-generated | @@ -7618,7 +7617,6 @@ | System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32,System.Boolean);;Argument[0];Argument[this];taint;manual | | System.IO;FileStream;false;FileStream;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,System.Int32,System.IO.FileOptions);;Argument[0];Argument[this];taint;manual | | System.IO;FileStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | -| System.IO;FileStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.IO;FileStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.IO;FileStream;false;get_SafeFileHandle;();;Argument[this];ReturnValue;taint;df-generated | @@ -7729,6 +7727,10 @@ | System.IO;Stream;false;CopyToAsync;(System.IO.Stream,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;false;FlushAsync;();;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;false;ReadAsync;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;false;ReadAtLeast;(System.Span<System.Byte>,System.Int32,System.Boolean);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;false;ReadAtLeastAsync;(System.Memory<System.Byte>,System.Int32,System.Boolean,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | +| System.IO;Stream;false;ReadExactly;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | +| System.IO;Stream;false;ReadExactly;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;false;Synchronized;(System.IO.Stream);;Argument[0];ReturnValue;taint;df-generated | | System.IO;Stream;false;WriteAsync;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO;Stream;true;BeginRead;(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object);;Argument[3];Argument[3].Parameter[delegate-self];value;manual | @@ -7739,9 +7741,9 @@ | System.IO;Stream;true;CopyToAsync;(System.IO.Stream,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0];taint;manual | | System.IO;Stream;true;FlushAsync;(System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | | System.IO;Stream;true;Read;(System.Byte[],System.Int32,System.Int32);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;Stream;true;Read;(System.Span<System.Byte>);;Argument[this];Argument[0];taint;manual | +| System.IO;Stream;true;Read;(System.Span<System.Byte>);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;true;ReadAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | -| System.IO;Stream;true;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | +| System.IO;Stream;true;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[this];Argument[0].Element;taint;manual | | System.IO;Stream;true;Write;(System.Byte[],System.Int32,System.Int32);;Argument[0].Element;Argument[this];taint;manual | | System.IO;Stream;true;WriteAsync;(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken);;Argument[0].Element;Argument[this];taint;manual | | System.IO;Stream;true;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[this];ReturnValue;taint;df-generated | @@ -9675,8 +9677,6 @@ | System.Net.Security;NegotiateStream;false;BeginAuthenticateAsServer;(System.Net.NetworkCredential,System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.Net.Security.ProtectionLevel,System.Security.Principal.TokenImpersonationLevel,System.AsyncCallback,System.Object);;Argument[4];Argument[4].Parameter[delegate-self];value;hq-generated | | System.Net.Security;NegotiateStream;false;BeginAuthenticateAsServer;(System.Security.Authentication.ExtendedProtection.ExtendedProtectionPolicy,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | | System.Net.Security;NegotiateStream;false;FlushAsync;(System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | -| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | -| System.Net.Security;NegotiateStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | | System.Net.Security;NegotiateStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.Net.Security;NegotiateStream;false;get_RemoteIdentity;();;Argument[this];ReturnValue;taint;df-generated | @@ -9723,8 +9723,6 @@ | System.Net.Sockets;MulticastOption;false;set_Group;(System.Net.IPAddress);;Argument[0];Argument[this];taint;df-generated | | System.Net.Sockets;MulticastOption;false;set_LocalAddress;(System.Net.IPAddress);;Argument[0];Argument[this];taint;df-generated | | System.Net.Sockets;NetworkStream;false;NetworkStream;(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean);;Argument[0];Argument[this];taint;df-generated | -| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[0];ReturnValue;taint;df-generated | -| System.Net.Sockets;NetworkStream;false;ReadAsync;(System.Memory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.Net.Sockets;NetworkStream;false;WriteAsync;(System.ReadOnlyMemory<System.Byte>,System.Threading.CancellationToken);;Argument[1];ReturnValue;taint;df-generated | | System.Net.Sockets;NetworkStream;false;get_Socket;();;Argument[this];ReturnValue;taint;df-generated | | System.Net.Sockets;SafeSocketHandle;false;SafeSocketHandle;(System.IntPtr,System.Boolean);;Argument[0];Argument[this];taint;df-generated | From 46a9bb9804023bb2f66a68a2ef944de27ad9cbf8 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Wed, 13 Mar 2024 22:42:56 -0400 Subject: [PATCH 461/731] Change note --- csharp/ql/lib/change-notes/2024-03-13-system.io-models.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2024-03-13-system.io-models.md diff --git a/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md b/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md new file mode 100644 index 000000000000..84db6a663aea --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. From e2c2d574f859ab462dd7a264efb648cc5535f207 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 14 Mar 2024 12:55:20 -0400 Subject: [PATCH 462/731] Add `FileInfo::OpenText` --- csharp/ql/lib/ext/System.IO.model.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/csharp/ql/lib/ext/System.IO.model.yml b/csharp/ql/lib/ext/System.IO.model.yml index 2b23698fd210..d78fb8e1e2d9 100644 --- a/csharp/ql/lib/ext/System.IO.model.yml +++ b/csharp/ql/lib/ext/System.IO.model.yml @@ -25,6 +25,7 @@ extensions: - ["System.IO", "FileInfo", False, "Open", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "FileInfo", False, "Open", "", "", "ReturnValue", "file", "manual"] - ["System.IO", "FileInfo", False, "OpenRead", "", "", "ReturnValue", "file", "manual"] + - ["System.IO", "FileInfo", False, "OpenText", "", "", "ReturnValue", "file", "manual"] - ["System.IO", "FileInfo", False, "OpenWrite", "", "", "ReturnValue", "file-write", "manual"] - ["System.IO", "FileStream", False, "FileStream", "", "", "Argument[this]", "file", "manual"] - ["System.IO", "FileStream", False, "FileStream", "", "", "Argument[this]", "file-write", "manual"] From 3e3eceea5f5f3a62ed2dfe1b561a9eeb6ed2cdf7 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 14 Mar 2024 12:55:54 -0400 Subject: [PATCH 463/731] Typo --- .../library-tests/dataflow/flowsources/stored/file/Files.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs index 168a7086f8d7..37e9f2ed8f1f 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/file/Files.cs @@ -30,7 +30,7 @@ public static void ReadLines(string path) } } - public static void BuuferedRead(string path) + public static void BufferedRead(string path) { using (FileStream fs = new FileStream(path, FileMode.Open)) { From c7a746e3dcb9ff433c36064b60f40f8ec98bf156 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 21 Mar 2024 13:15:45 -0400 Subject: [PATCH 464/731] Flow summary tests --- .../dataflow/library/FlowSummaries.expected | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 055b9bba9523..019e3572798d 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -17,17 +17,43 @@ source | System.IO;File;false;Create;(System.String,System.Int32,System.IO.FileOptions);;ReturnValue;file-write;manual | | System.IO;File;false;CreateText;(System.String);;ReturnValue;file-write;manual | | System.IO;File;false;Open;(System.String,System.IO.FileMode);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileMode);;ReturnValue;file;manual | | System.IO;File;false;Open;(System.String,System.IO.FileMode,System.IO.FileAccess);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileMode,System.IO.FileAccess);;ReturnValue;file;manual | | System.IO;File;false;Open;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;ReturnValue;file;manual | | System.IO;File;false;Open;(System.String,System.IO.FileStreamOptions);;ReturnValue;file-write;manual | +| System.IO;File;false;Open;(System.String,System.IO.FileStreamOptions);;ReturnValue;file;manual | +| System.IO;File;false;OpenRead;(System.String);;ReturnValue;file;manual | +| System.IO;File;false;OpenText;(System.String);;ReturnValue;file;manual | | System.IO;File;false;OpenWrite;(System.String);;ReturnValue;file-write;manual | +| System.IO;File;false;ReadAllBytes;(System.String);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllBytesAsync;(System.String,System.Threading.CancellationToken);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllLines;(System.String);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllLines;(System.String,System.Text.Encoding);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllLinesAsync;(System.String,System.Text.Encoding,System.Threading.CancellationToken);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllLinesAsync;(System.String,System.Threading.CancellationToken);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllText;(System.String);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllText;(System.String,System.Text.Encoding);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllTextAsync;(System.String,System.Text.Encoding,System.Threading.CancellationToken);;ReturnValue;file;manual | +| System.IO;File;false;ReadAllTextAsync;(System.String,System.Threading.CancellationToken);;ReturnValue;file;manual | +| System.IO;File;false;ReadLines;(System.String);;ReturnValue;file;manual | +| System.IO;File;false;ReadLines;(System.String,System.Text.Encoding);;ReturnValue;file;manual | +| System.IO;File;false;ReadLinesAsync;(System.String,System.Text.Encoding,System.Threading.CancellationToken);;ReturnValue;file;manual | +| System.IO;File;false;ReadLinesAsync;(System.String,System.Threading.CancellationToken);;ReturnValue;file;manual | | System.IO;FileInfo;false;AppendText;();;ReturnValue;file-write;manual | | System.IO;FileInfo;false;Create;();;ReturnValue;file-write;manual | | System.IO;FileInfo;false;CreateText;();;ReturnValue;file-write;manual | | System.IO;FileInfo;false;Open;(System.IO.FileMode);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileMode);;ReturnValue;file;manual | | System.IO;FileInfo;false;Open;(System.IO.FileMode,System.IO.FileAccess);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileMode,System.IO.FileAccess);;ReturnValue;file;manual | | System.IO;FileInfo;false;Open;(System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare);;ReturnValue;file;manual | | System.IO;FileInfo;false;Open;(System.IO.FileStreamOptions);;ReturnValue;file-write;manual | +| System.IO;FileInfo;false;Open;(System.IO.FileStreamOptions);;ReturnValue;file;manual | +| System.IO;FileInfo;false;OpenRead;();;ReturnValue;file;manual | +| System.IO;FileInfo;false;OpenText;();;ReturnValue;file;manual | | System.IO;FileInfo;false;OpenWrite;();;ReturnValue;file-write;manual | | System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess);;Argument[this];file-write;manual | | System.IO;FileStream;false;FileStream;(Microsoft.Win32.SafeHandles.SafeFileHandle,System.IO.FileAccess);;Argument[this];file;manual | From fa7f437e7142207c74435b7b68158a3245b474ae Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Fri, 22 Mar 2024 08:16:11 +0100 Subject: [PATCH 465/731] Code quality improvement --- .../Entities/Compilations/CompilerDiagnostic.cs | 2 +- .../extractor/Semmle.Extraction/Entities/ExtractionMessage.cs | 2 +- csharp/extractor/Semmle.Util/EnvironmentVariables.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs index 8de1442f26ed..193869e6e804 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs @@ -6,7 +6,7 @@ namespace Semmle.Extraction.CSharp.Entities { internal class CompilerDiagnostic : FreshEntity { - private static readonly int limit = EnvironmentVariables.TryGetExtractorOption<int>("COMPILER_DIAGNOSTIC_LIMIT") ?? 1000; + private static readonly int limit = EnvironmentVariables.TryGetExtractorNumberOption<int>("COMPILER_DIAGNOSTIC_LIMIT") ?? 1000; private static readonly ConcurrentDictionary<string, int> messageCounts = new(); private readonly Microsoft.CodeAnalysis.Diagnostic diagnostic; diff --git a/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs b/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs index 35df66a6b0a9..bc6ea5aa27dc 100644 --- a/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs +++ b/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs @@ -6,7 +6,7 @@ namespace Semmle.Extraction.Entities { internal class ExtractionMessage : FreshEntity { - private static readonly int limit = EnvironmentVariables.TryGetExtractorOption<int>("MESSAGE_LIMIT") ?? 10000; + private static readonly int limit = EnvironmentVariables.TryGetExtractorNumberOption<int>("MESSAGE_LIMIT") ?? 10000; private static int messageCount = 0; private readonly Message msg; diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index d7bb81440ecd..c96aa16357c3 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -9,7 +9,7 @@ public class EnvironmentVariables public static string? GetExtractorOption(string name) => Environment.GetEnvironmentVariable($"CODEQL_EXTRACTOR_CSHARP_OPTION_{name.ToUpper()}"); - public static T? TryGetExtractorOption<T>(string name) where T : struct, INumberBase<T> + public static T? TryGetExtractorNumberOption<T>(string name) where T : struct, INumberBase<T> { var value = GetExtractorOption(name); if (T.TryParse(value, NumberStyles.Number, CultureInfo.InvariantCulture, out var result)) From 205d6a3bc5e55e9a2e4cfa9e522cae1219c22461 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Fri, 22 Mar 2024 08:53:45 +0100 Subject: [PATCH 466/731] Extract total number of diagnostic per ID and compilation --- .../Entities/Compilations/Compilation.cs | 11 ++++++++--- .../Entities/Compilations/CompilerDiagnostic.cs | 6 ++---- .../all-platforms/standalone/Diag.expected | 3 +++ .../all-platforms/standalone/Diag.ql | 8 ++++++++ .../CompilationInfo.ql | 1 + csharp/ql/src/Telemetry/ExtractorInformation.ql | 1 + 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs index e9706b3b5795..0b575df2b696 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Concurrent; using System.IO; using System.Linq; using Microsoft.CodeAnalysis; @@ -8,6 +9,8 @@ namespace Semmle.Extraction.CSharp.Entities { internal class Compilation : CachedEntity<object> { + internal readonly ConcurrentDictionary<string, int> messageCounts = new(); + private static (string Cwd, string[] Args) settings; private static int hashCode; @@ -78,9 +81,11 @@ public override void Populate(TextWriter trapFile) .ForEach((file, index) => trapFile.compilation_referencing_files(this, index, file)); // Diagnostics - Context.Compilation - .GetDiagnostics() - .ForEach((diag, index) => new CompilerDiagnostic(Context, diag, this, index)); + var diags = Context.Compilation.GetDiagnostics(); + diags.ForEach((diag, index) => new CompilerDiagnostic(Context, diag, this, index)); + + var diagCounts = diags.GroupBy(diag => diag.Id).ToDictionary(group => group.Key, group => group.Count()); + diagCounts.ForEach(pair => trapFile.compilation_info(this, $"Compiler diagnostic count for {pair.Key}", pair.Value.ToString())); } public void PopulatePerformance(PerformanceMetrics p) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs index 193869e6e804..c1227f2ffc0b 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/CompilerDiagnostic.cs @@ -1,4 +1,3 @@ -using System.Collections.Concurrent; using System.IO; using Semmle.Util; @@ -7,7 +6,6 @@ namespace Semmle.Extraction.CSharp.Entities internal class CompilerDiagnostic : FreshEntity { private static readonly int limit = EnvironmentVariables.TryGetExtractorNumberOption<int>("COMPILER_DIAGNOSTIC_LIMIT") ?? 1000; - private static readonly ConcurrentDictionary<string, int> messageCounts = new(); private readonly Microsoft.CodeAnalysis.Diagnostic diagnostic; private readonly Compilation compilation; @@ -25,12 +23,12 @@ protected override void Populate(TextWriter trapFile) { // The below doesn't limit the extractor messages to the exact limit, but it's good enough. var key = diagnostic.Id; - var messageCount = messageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); + var messageCount = compilation.messageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); if (messageCount > limit) { if (messageCount == limit + 1) { - Context.Extractor.Logger.LogWarning($"Stopped logging {key} compiler diagnostics after reaching {limit}"); + Context.Extractor.Logger.LogWarning($"Stopped logging {key} compiler diagnostics for the current compilation after reaching {limit}"); } return; diff --git a/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected b/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected index 1fcc47687caf..b48630869ee8 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected @@ -2,3 +2,6 @@ extractorMessages | 5 | compilerDiagnostics | 4 | +compilationInfo +| Compiler diagnostic count for CS0103 | 3.0 | +| Compiler diagnostic count for CS8019 | 7.0 | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql b/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql index bbd142d3af3e..e391b345b20b 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql +++ b/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql @@ -4,3 +4,11 @@ import semmle.code.csharp.commons.Diagnostics query predicate extractorMessages(int c) { c = count(ExtractorMessage msg) } query predicate compilerDiagnostics(int c) { c = count(Diagnostic diag) } + +query predicate compilationInfo(string key, float value) { + exists(Compilation c, string infoValue | + infoValue = c.getInfo(key) and key.matches("Compiler diagnostic count for%") + | + value = infoValue.toFloat() + ) +} diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.ql index 87a9e20f0273..073ffe3b224d 100644 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.ql +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/CompilationInfo.ql @@ -3,6 +3,7 @@ import semmle.code.csharp.commons.Diagnostics query predicate compilationInfo(string key, float value) { key != "Resolved references" and + not key.matches("Compiler diagnostic count for%") and exists(Compilation c, string infoKey, string infoValue | infoValue = c.getInfo(infoKey) | key = infoKey and value = infoValue.toFloat() diff --git a/csharp/ql/src/Telemetry/ExtractorInformation.ql b/csharp/ql/src/Telemetry/ExtractorInformation.ql index d09e1c9d5d3f..08efbd7b6ec8 100644 --- a/csharp/ql/src/Telemetry/ExtractorInformation.ql +++ b/csharp/ql/src/Telemetry/ExtractorInformation.ql @@ -10,6 +10,7 @@ import csharp import semmle.code.csharp.commons.Diagnostics predicate compilationInfo(string key, float value) { + not key.matches("Compiler diagnostic count for%") and exists(Compilation c, string infoKey, string infoValue | infoValue = c.getInfo(infoKey) | key = infoKey and value = infoValue.toFloat() From 9d124197e835bf60ff660168f7fe16c564d879ce Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Fri, 22 Mar 2024 10:08:04 +0100 Subject: [PATCH 467/731] C#: Remove support for legacy LGTM options in autobuilder --- .../BuildScripts.cs | 24 +- .../Semmle.Autobuild.Cpp/CppAutobuilder.cs | 3 - .../BuildScripts.cs | 252 +----------------- .../CSharpAutobuilder.cs | 30 +-- .../Semmle.Autobuild.CSharp/DotNetRule.cs | 3 +- .../AutobuildOptions.cs | 29 +- .../Semmle.Autobuild.Shared/Autobuilder.cs | 19 -- .../BuildCommandAutoRule.cs | 5 - .../BuildCommandRule.cs | 37 --- .../Semmle.Autobuild.Shared/MsBuildRule.cs | 123 +++------ .../DotNet.cs | 6 +- .../Extractor/Analyser.cs | 2 +- .../Extractor/Options.cs | 8 - .../Semmle.Extraction.Tests/Options.cs | 14 - csharp/extractor/Semmle.Extraction/Options.cs | 8 - 15 files changed, 59 insertions(+), 504 deletions(-) delete mode 100644 csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandRule.cs diff --git a/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs b/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs index 963ef88d6246..3855428a5ae9 100644 --- a/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs +++ b/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs @@ -250,12 +250,7 @@ void EndCallback(int ret, string s, bool silent) EndCallbackIn.Add(s); } - CppAutobuilder CreateAutoBuilder(bool isWindows, - string? buildless = null, string? solution = null, string? buildCommand = null, string? ignoreErrors = null, - string? msBuildArguments = null, string? msBuildPlatform = null, string? msBuildConfiguration = null, string? msBuildTarget = null, - string? dotnetArguments = null, string? dotnetVersion = null, string? vsToolsVersion = null, - string? nugetRestore = null, string? allSolutions = null, - string cwd = @"C:\Project") + CppAutobuilder CreateAutoBuilder(bool isWindows, string? dotnetVersion = null, string cwd = @"C:\Project") { string codeqlUpperLanguage = Language.Cpp.UpperCaseName; Actions.GetEnvironmentVariable[$"CODEQL_AUTOBUILDER_{codeqlUpperLanguage}_NO_INDEXING"] = "false"; @@ -265,22 +260,7 @@ CppAutobuilder CreateAutoBuilder(bool isWindows, Actions.GetEnvironmentVariable[$"CODEQL_EXTRACTOR_{codeqlUpperLanguage}_DIAGNOSTIC_DIR"] = ""; Actions.GetEnvironmentVariable["CODEQL_JAVA_HOME"] = @"C:\codeql\tools\java"; Actions.GetEnvironmentVariable["CODEQL_PLATFORM"] = "win64"; - Actions.GetEnvironmentVariable["SEMMLE_DIST"] = @"C:\odasa"; - Actions.GetEnvironmentVariable["SEMMLE_JAVA_HOME"] = @"C:\odasa\tools\java"; - Actions.GetEnvironmentVariable["SEMMLE_PLATFORM_TOOLS"] = @"C:\odasa\tools"; - Actions.GetEnvironmentVariable["LGTM_INDEX_VSTOOLS_VERSION"] = vsToolsVersion; - Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_ARGUMENTS"] = msBuildArguments; - Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_PLATFORM"] = msBuildPlatform; - Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_CONFIGURATION"] = msBuildConfiguration; - Actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_TARGET"] = msBuildTarget; - Actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_ARGUMENTS"] = dotnetArguments; - Actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_VERSION"] = dotnetVersion; - Actions.GetEnvironmentVariable["LGTM_INDEX_BUILD_COMMAND"] = buildCommand; - Actions.GetEnvironmentVariable["LGTM_INDEX_SOLUTION"] = solution; - Actions.GetEnvironmentVariable["LGTM_INDEX_IGNORE_ERRORS"] = ignoreErrors; - Actions.GetEnvironmentVariable["LGTM_INDEX_BUILDLESS"] = buildless; - Actions.GetEnvironmentVariable["LGTM_INDEX_ALL_SOLUTIONS"] = allSolutions; - Actions.GetEnvironmentVariable["LGTM_INDEX_NUGET_RESTORE"] = nugetRestore; + Actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_OPTION_DOTNET_VERSION"] = dotnetVersion; Actions.GetEnvironmentVariable["ProgramFiles(x86)"] = isWindows ? @"C:\Program Files (x86)" : null; Actions.GetCurrentDirectory = cwd; Actions.IsWindows = isWindows; diff --git a/cpp/autobuilder/Semmle.Autobuild.Cpp/CppAutobuilder.cs b/cpp/autobuilder/Semmle.Autobuild.Cpp/CppAutobuilder.cs index e3853b44a0c5..cc2e1e05ad58 100644 --- a/cpp/autobuilder/Semmle.Autobuild.Cpp/CppAutobuilder.cs +++ b/cpp/autobuilder/Semmle.Autobuild.Cpp/CppAutobuilder.cs @@ -26,9 +26,6 @@ public class CppAutobuilder : Autobuilder<CppAutobuildOptions> public override BuildScript GetBuildScript() { - if (Options.BuildCommand != null) - return new BuildCommandRule((_, f) => f(null)).Analyse(this, false); - return // First try MSBuild new MsBuildRule().Analyse(this, true) | diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs index da2e3c36c9b9..2b00d9db742a 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs @@ -399,10 +399,8 @@ public void TestTry() } private CSharpAutobuilder CreateAutoBuilder(bool isWindows, - string? buildless = null, string? solution = null, string? buildCommand = null, string? ignoreErrors = null, - string? msBuildArguments = null, string? msBuildPlatform = null, string? msBuildConfiguration = null, string? msBuildTarget = null, - string? dotnetArguments = null, string? dotnetVersion = null, string? vsToolsVersion = null, - string? nugetRestore = null, string? allSolutions = null, + string? buildless = null, + string? dotnetVersion = null, string cwd = @"C:\Project") { var codeqlUpperLanguage = Language.CSharp.UpperCaseName; @@ -412,20 +410,9 @@ private CSharpAutobuilder CreateAutoBuilder(bool isWindows, actions.GetEnvironmentVariable[$"CODEQL_EXTRACTOR_{codeqlUpperLanguage}_DIAGNOSTIC_DIR"] = ""; actions.GetEnvironmentVariable["CODEQL_JAVA_HOME"] = @"C:\codeql\tools\java"; actions.GetEnvironmentVariable["CODEQL_PLATFORM"] = isWindows ? "win64" : "linux64"; - actions.GetEnvironmentVariable["LGTM_INDEX_VSTOOLS_VERSION"] = vsToolsVersion; - actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_ARGUMENTS"] = msBuildArguments; - actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_PLATFORM"] = msBuildPlatform; - actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_CONFIGURATION"] = msBuildConfiguration; - actions.GetEnvironmentVariable["LGTM_INDEX_MSBUILD_TARGET"] = msBuildTarget; - actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_ARGUMENTS"] = dotnetArguments; - actions.GetEnvironmentVariable["LGTM_INDEX_DOTNET_VERSION"] = dotnetVersion; - actions.GetEnvironmentVariable["LGTM_INDEX_BUILD_COMMAND"] = buildCommand; - actions.GetEnvironmentVariable["LGTM_INDEX_SOLUTION"] = solution; - actions.GetEnvironmentVariable["LGTM_INDEX_IGNORE_ERRORS"] = ignoreErrors; - actions.GetEnvironmentVariable["LGTM_INDEX_BUILDLESS"] = buildless; actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS"] = buildless; - actions.GetEnvironmentVariable["LGTM_INDEX_ALL_SOLUTIONS"] = allSolutions; - actions.GetEnvironmentVariable["LGTM_INDEX_NUGET_RESTORE"] = nugetRestore; + if (dotnetVersion is not null) + actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_OPTION_DOTNET_VERSION"] = dotnetVersion; actions.GetEnvironmentVariable["ProgramFiles(x86)"] = isWindows ? @"C:\Program Files (x86)" : null; actions.GetCurrentDirectory = cwd; actions.IsWindows = isWindows; @@ -600,15 +587,6 @@ public void TestLinuxBuildlessExtractionSolution() TestAutobuilderScript(autobuilder, 0, 1); } - private void SkipVsWhere() - { - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = false; - } - private void TestAutobuilderScript(CSharpAutobuilder autobuilder, int expectedOutput, int commandsRun) { Assert.Equal(expectedOutput, autobuilder.GetBuildScript().Run(actions, StartCallback, EndCallback)); @@ -628,23 +606,6 @@ private void TestAutobuilderScript(CSharpAutobuilder autobuilder, int expectedOu } } - [Fact] - public void TestLinuxBuildCommand() - { - actions.RunProcess["./build.sh --skip-tests"] = 0; - actions.FileExists["csharp.log"] = true; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.sln"; - actions.EnumerateDirectories[@"C:\Project"] = ""; - - SkipVsWhere(); - - var autobuilder = CreateAutoBuilder(false, buildCommand: "./build.sh --skip-tests"); - TestAutobuilderScript(autobuilder, 0, 1); - } - [Fact] public void TestLinuxBuildSh() { @@ -714,177 +675,6 @@ public void TestWindowsBuildBat() TestAutobuilderScript(autobuilder, 0, 1); } - [Fact] - public void TestWindowsBuildBatIgnoreErrors() - { - actions.EnumerateFiles[@"C:\Project"] = "foo.cs\nbuild.bat"; - actions.EnumerateDirectories[@"C:\Project"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.RunProcess[@"cmd.exe /C C:\Project\build.bat"] = 1; - actions.RunProcessWorkingDirectory[@"cmd.exe /C C:\Project\build.bat"] = @"C:\Project"; - actions.RunProcess[@"cmd.exe /C C:\codeql\tools\java\bin\java -jar C:\codeql\csharp\tools\extractor-asp.jar ."] = 0; - actions.RunProcess[@"cmd.exe /C C:\codeql\tools\codeql index --xml --extensions config"] = 0; - actions.FileExists["csharp.log"] = true; - - var autobuilder = CreateAutoBuilder(true, ignoreErrors: "true"); - TestAutobuilderScript(autobuilder, 1, 1); - } - - [Fact] - public void TestWindowsCmdIgnoreErrors() - { - actions.RunProcess["cmd.exe /C ^\"build.cmd^ --skip-tests^\""] = 3; - actions.RunProcess[@"cmd.exe /C C:\codeql\tools\java\bin\java -jar C:\codeql\csharp\tools\extractor-asp.jar ."] = 0; - actions.RunProcess[@"cmd.exe /C C:\codeql\tools\codeql index --xml --extensions config"] = 0; - actions.FileExists["csharp.log"] = true; - SkipVsWhere(); - - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.sln"; - actions.EnumerateDirectories[@"C:\Project"] = ""; - - var autobuilder = CreateAutoBuilder(true, buildCommand: "build.cmd --skip-tests", ignoreErrors: "true"); - TestAutobuilderScript(autobuilder, 3, 1); - } - - [Fact] - public void TestWindowCSharpMsBuild() - { - actions.RunProcess[@"cmd.exe /C C:\Project\.nuget\nuget.exe restore C:\Project\test1.sln -DisableParallelProcessing"] = 0; - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0; - actions.RunProcess[@"cmd.exe /C C:\Project\.nuget\nuget.exe restore C:\Project\test2.sln -DisableParallelProcessing"] = 0; - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0; - actions.FileExists["csharp.log"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true; - - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest1.cs\ntest2.cs"; - actions.EnumerateFiles[@"C:\Project\.nuget"] = "nuget.exe"; - actions.EnumerateDirectories[@"C:\Project"] = @".nuget"; - actions.EnumerateDirectories[@"C:\Project\.nuget"] = ""; - - var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug", - vsToolsVersion: "12", allSolutions: "true"); - var testSolution1 = new TestSolution(@"C:\Project\test1.sln"); - var testSolution2 = new TestSolution(@"C:\Project\test2.sln"); - autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution1); - autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution2); - - TestAutobuilderScript(autobuilder, 0, 4); - } - - [Fact] - public void TestWindowCSharpMsBuildMultipleSolutions() - { - actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test1.csproj -DisableParallelProcessing"] = 0; - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.csproj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0; - actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test2.csproj -DisableParallelProcessing"] = 0; - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.csproj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0; - actions.FileExists["csharp.log"] = true; - actions.FileExists[@"C:\Project\test1.csproj"] = true; - actions.FileExists[@"C:\Project\test2.csproj"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true; - - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.EnumerateFiles[@"C:\Project"] = "test1.csproj\ntest2.csproj\ntest1.cs\ntest2.cs"; - actions.EnumerateDirectories[@"C:\Project"] = ""; - - var csproj1 = new XmlDocument(); - csproj1.LoadXml(@"<?xml version=""1.0"" encoding=""utf - 8""?> - <Project ToolsVersion=""15.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> - <ItemGroup> - <Compile Include=""test1.cs"" /> - </ItemGroup> - </Project>"); - actions.LoadXml[@"C:\Project\test1.csproj"] = csproj1; - - var csproj2 = new XmlDocument(); - csproj2.LoadXml(@"<?xml version=""1.0"" encoding=""utf - 8""?> - <Project ToolsVersion=""15.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> - <ItemGroup> - <Compile Include=""test1.cs"" /> - </ItemGroup> - </Project>"); - actions.LoadXml[@"C:\Project\test2.csproj"] = csproj2; - - var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug", - vsToolsVersion: "12"); - - TestAutobuilderScript(autobuilder, 0, 4); - } - - [Fact] - public void TestWindowCSharpMsBuildFailed() - { - actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test1.sln -DisableParallelProcessing"] = 0; - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 1; - actions.FileExists["csharp.log"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest1.cs\ntest2.cs"; - actions.EnumerateDirectories[@"C:\Project"] = ""; - - var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug", - vsToolsVersion: "12", allSolutions: "true"); - var testSolution1 = new TestSolution(@"C:\Project\test1.sln"); - var testSolution2 = new TestSolution(@"C:\Project\test2.sln"); - autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution1); - autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution2); - - TestAutobuilderScript(autobuilder, 1, 2); - } - - - [Fact] - public void TestSkipNugetMsBuild() - { - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0; - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0; - actions.FileExists["csharp.log"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"] = true; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"] = false; - actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"] = true; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest1.cs\ntest2.cs"; - actions.EnumerateDirectories[@"C:\Project"] = ""; - - var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", - msBuildPlatform: "x86", msBuildConfiguration: "Debug", vsToolsVersion: "12", - allSolutions: "true", nugetRestore: "false"); - var testSolution1 = new TestSolution(@"C:\Project\test1.sln"); - var testSolution2 = new TestSolution(@"C:\Project\test2.sln"); - autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution1); - autobuilder.ProjectsOrSolutionsToBuild.Add(testSolution2); - - TestAutobuilderScript(autobuilder, 0, 2); - } - [Fact] public void TestSkipNugetBuildless() { @@ -900,35 +690,6 @@ public void TestSkipNugetBuildless() TestAutobuilderScript(autobuilder, 0, 1); } - - [Fact] - public void TestSkipNugetDotnet() - { - actions.RunProcess["dotnet --info"] = 0; - actions.RunProcess[@"dotnet clean C:\Project/test.csproj"] = 0; - actions.RunProcess[@"dotnet restore C:\Project/test.csproj"] = 0; - actions.RunProcess[@"dotnet build --no-incremental --no-restore C:\Project/test.csproj"] = 0; - actions.FileExists["csharp.log"] = true; - actions.FileExists[@"C:\Project/test.csproj"] = true; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = ""; - actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SCRATCH_DIR"] = "scratch"; - actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.cs\ntest.csproj"; - actions.EnumerateDirectories[@"C:\Project"] = ""; - var xml = new XmlDocument(); - xml.LoadXml(@"<Project Sdk=""Microsoft.NET.Sdk""> - <PropertyGroup> - <OutputType>Exe</OutputType> - <TargetFramework>netcoreapp2.1</TargetFramework> - </PropertyGroup> - -</Project>"); - actions.LoadXml[@"C:\Project/test.csproj"] = xml; - - var autobuilder = CreateAutoBuilder(false, dotnetArguments: "--no-restore"); // nugetRestore=false does not work for now. - TestAutobuilderScript(autobuilder, 0, 4); - } - [Fact] public void TestDotnetVersionNotInstalled() { @@ -1053,7 +814,7 @@ public void TestDirsProjWindows() { actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\dirs.proj -DisableParallelProcessing"] = 1; actions.RunProcess[@"cmd.exe /C scratch\.nuget\nuget.exe restore C:\Project\dirs.proj -DisableParallelProcessing"] = 0; - actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\dirs.proj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0; + actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program^ Files^ ^(x86^)\\Microsoft^ Visual^ Studio^ 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\dirs.proj /t:rebuild"] = 0; actions.FileExists["csharp.log"] = true; actions.FileExists[@"C:\Project\a\test.csproj"] = true; actions.FileExists[@"C:\Project\dirs.proj"] = true; @@ -1088,8 +849,7 @@ public void TestDirsProjWindows() </Project>"); actions.LoadXml[@"C:\Project\dirs.proj"] = dirsproj; - var autobuilder = CreateAutoBuilder(true, msBuildArguments: "/P:Fu=Bar", msBuildTarget: "Windows", msBuildPlatform: "x86", msBuildConfiguration: "Debug", - vsToolsVersion: "12", allSolutions: "true"); + var autobuilder = CreateAutoBuilder(true); TestAutobuilderScript(autobuilder, 0, 3); } diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs index aad91541064e..9290bf47e6b1 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs @@ -25,9 +25,11 @@ public class CSharpAutobuildOptions : AutobuildOptionsShared /// </summary> public CSharpAutobuildOptions(IBuildActions actions) : base(actions) { - Buildless = actions.GetEnvironmentVariable(lgtmPrefix + "BUILDLESS").AsBool("buildless", false) || + Buildless = actions.GetEnvironmentVariable(extractorOptionPrefix + "BUILDLESS").AsBool("buildless", false) || actions.GetEnvironmentVariable(buildModeEnvironmentVariable)?.ToLower() == "none"; + + } } @@ -46,19 +48,10 @@ public override BuildScript GetBuildScript() var attempt = BuildScript.Failure; switch (GetCSharpBuildStrategy()) { - case CSharpBuildStrategy.CustomBuildCommand: - attempt = new BuildCommandRule(DotNetRule.WithDotNet).Analyse(this, false) & CheckExtractorRun(true); - break; case CSharpBuildStrategy.Buildless: // No need to check that the extractor has been executed in buildless mode attempt = new StandaloneBuildRule().Analyse(this, false); break; - case CSharpBuildStrategy.MSBuild: - attempt = new MsBuildRule().Analyse(this, false) & CheckExtractorRun(true); - break; - case CSharpBuildStrategy.DotNet: - attempt = new DotNetRule().Analyse(this, false) & CheckExtractorRun(true); - break; case CSharpBuildStrategy.Auto: attempt = // Attempt a few different build strategies to see if one works @@ -198,32 +191,15 @@ Set up a [manual build command]({buildCommandDocsUrl}). /// </summary> private CSharpBuildStrategy GetCSharpBuildStrategy() { - if (Options.BuildCommand is not null) - return CSharpBuildStrategy.CustomBuildCommand; - if (Options.Buildless) return CSharpBuildStrategy.Buildless; - if (Options.MsBuildArguments is not null - || Options.MsBuildConfiguration is not null - || Options.MsBuildPlatform is not null - || Options.MsBuildTarget is not null) - { - return CSharpBuildStrategy.MSBuild; - } - - if (Options.DotNetArguments is not null || Options.DotNetVersion is not null) - return CSharpBuildStrategy.DotNet; - return CSharpBuildStrategy.Auto; } private enum CSharpBuildStrategy { - CustomBuildCommand, Buildless, - MSBuild, - DotNet, Auto } } diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs index cd25055da1ac..c1383731361a 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs @@ -150,8 +150,7 @@ private static BuildScript GetBuildScript(IAutobuilder<CSharpAutobuildOptions> b Argument("--no-incremental"); return - script.Argument(builder.Options.DotNetArguments). - QuoteArgument(projOrSln). + script.QuoteArgument(projOrSln). Script; } } diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/AutobuildOptions.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/AutobuildOptions.cs index b7e3293a0f2e..6df297eea377 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/AutobuildOptions.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/AutobuildOptions.cs @@ -11,24 +11,9 @@ namespace Semmle.Autobuild.Shared /// </summary> public abstract class AutobuildOptionsShared { - protected const string lgtmPrefix = "LGTM_INDEX_"; - - public int SearchDepth { get; } = 3; public string RootDirectory { get; } - public string? VsToolsVersion { get; } - public string? MsBuildArguments { get; } - public string? MsBuildPlatform { get; } - public string? MsBuildConfiguration { get; } - public string? MsBuildTarget { get; } - public string? DotNetArguments { get; } public string? DotNetVersion { get; } - public string? BuildCommand { get; } - public IEnumerable<string> Solution { get; } - public bool IgnoreErrors { get; } - - public bool AllSolutions { get; } - public bool NugetRestore { get; } public abstract Language Language { get; } /// <summary> @@ -38,19 +23,7 @@ public abstract class AutobuildOptionsShared public AutobuildOptionsShared(IBuildActions actions) { RootDirectory = actions.GetCurrentDirectory(); - VsToolsVersion = actions.GetEnvironmentVariable(lgtmPrefix + "VSTOOLS_VERSION"); - MsBuildArguments = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_ARGUMENTS")?.AsStringWithExpandedEnvVars(actions); - MsBuildPlatform = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_PLATFORM"); - MsBuildConfiguration = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_CONFIGURATION"); - MsBuildTarget = actions.GetEnvironmentVariable(lgtmPrefix + "MSBUILD_TARGET"); - DotNetArguments = actions.GetEnvironmentVariable(lgtmPrefix + "DOTNET_ARGUMENTS")?.AsStringWithExpandedEnvVars(actions); - DotNetVersion = actions.GetEnvironmentVariable(lgtmPrefix + "DOTNET_VERSION"); - BuildCommand = actions.GetEnvironmentVariable(lgtmPrefix + "BUILD_COMMAND"); - Solution = actions.GetEnvironmentVariable(lgtmPrefix + "SOLUTION").AsListWithExpandedEnvVars(actions, Array.Empty<string>()); - - IgnoreErrors = actions.GetEnvironmentVariable(lgtmPrefix + "IGNORE_ERRORS").AsBool("ignore_errors", false); - AllSolutions = actions.GetEnvironmentVariable(lgtmPrefix + "ALL_SOLUTIONS").AsBool("all_solutions", false); - NugetRestore = actions.GetEnvironmentVariable(lgtmPrefix + "NUGET_RESTORE").AsBool("nuget_restore", true); + DotNetVersion = actions.GetEnvironmentVariable("CODEQL_EXTRACTOR_CSHARP_OPTION_DOTNET_VERSION"); } } diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs index a23d29d2979c..904c6543feb6 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs @@ -161,9 +161,6 @@ public abstract class Autobuilder<TAutobuildOptions> : IAutobuilder<TAutobuildOp if (matchingFiles.Length == 0) return null; - if (Options.AllSolutions) - return matchingFiles.Select(p => p.ProjectOrSolution); - return matchingFiles .Where(f => f.DistanceFromRoot == matchingFiles[0].DistanceFromRoot) .Select(f => f.ProjectOrSolution); @@ -185,19 +182,6 @@ protected Autobuilder(IBuildActions actions, TAutobuildOptions options, Diagnost projectsOrSolutionsToBuildLazy = new Lazy<IList<IProjectOrSolution>>(() => { List<IProjectOrSolution>? ret; - if (options.Solution.Any()) - { - ret = new List<IProjectOrSolution>(); - foreach (var solution in options.Solution) - { - if (actions.FileExists(solution)) - ret.Add(new Solution<TAutobuildOptions>(this, solution, true)); - else - logger.LogError($"The specified project or solution file {solution} was not found"); - } - return ret; - } - // First look for `.proj` files ret = FindFiles(".proj", f => new Project<TAutobuildOptions>(this, f))?.ToList(); if (ret is not null) @@ -285,9 +269,6 @@ public int AttemptBuild() var script = GetBuildScript(); - if (Options.IgnoreErrors) - script |= BuildScript.Success; - void startCallback(string s, bool silent) { logger.Log(silent ? Severity.Debug : Severity.Info, $"\nRunning {s}"); diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandAutoRule.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandAutoRule.cs index d754b3c31342..e12652767d15 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandAutoRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandAutoRule.cs @@ -82,11 +82,6 @@ public BuildScript Analyse(IAutobuilder<AutobuildOptionsShared> builder, bool au { var command = new CommandBuilder(builder.Actions, dir, environment); - // A specific Visual Studio version may be required - var vsTools = MsBuildRule.GetVcVarsBatFile(builder); - if (vsTools is not null) - command.CallBatFile(vsTools.Path); - command.RunCommand(this.ScriptPath); return command.Script; }); diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandRule.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandRule.cs deleted file mode 100644 index 9aaefe1a1da9..000000000000 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/BuildCommandRule.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Semmle.Util; - -namespace Semmle.Autobuild.Shared -{ - /// <summary> - /// Execute the build_command rule. - /// </summary> - public class BuildCommandRule : IBuildRule<AutobuildOptionsShared> - { - private readonly WithDotNet<AutobuildOptionsShared> withDotNet; - - public BuildCommandRule(WithDotNet<AutobuildOptionsShared> withDotNet) - { - this.withDotNet = withDotNet; - } - - public BuildScript Analyse(IAutobuilder<AutobuildOptionsShared> builder, bool auto) - { - if (builder.Options.BuildCommand is null) - return BuildScript.Failure; - - // Custom build commands may require a specific .NET Core version - return withDotNet(builder, environment => - { - var command = new CommandBuilder(builder.Actions, null, environment); - - // Custom build commands may require a specific Visual Studio version - var vsTools = MsBuildRule.GetVcVarsBatFile(builder); - if (vsTools is not null) - command.CallBatFile(vsTools.Path); - command.RunCommand(builder.Options.BuildCommand); - - return command.Script; - }); - } - } -} diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs index bff10532abfd..83a354e2a81f 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs @@ -42,9 +42,9 @@ public BuildScript Analyse(IAutobuilder<AutobuildOptionsShared> builder, bool au if (auto) builder.Logger.LogInfo("Attempting to build using MSBuild"); - var vsTools = GetVcVarsBatFile(builder); + VcVarsBatFile? vsTools = null; - if (vsTools is null && builder.ProjectsOrSolutionsToBuild.Any()) + if (builder.ProjectsOrSolutionsToBuild.Any()) { var firstSolution = builder.ProjectsOrSolutionsToBuild.OfType<ISolution>().FirstOrDefault(); vsTools = firstSolution is not null @@ -67,46 +67,44 @@ public BuildScript Analyse(IAutobuilder<AutobuildOptionsShared> builder, bool au foreach (var projectOrSolution in builder.ProjectsOrSolutionsToBuild) { - if (builder.Options.NugetRestore) + + BuildScript GetNugetRestoreScript() => + new CommandBuilder(builder.Actions). + RunCommand(nuget). + Argument("restore"). + QuoteArgument(projectOrSolution.FullPath). + Argument("-DisableParallelProcessing"). + Script; + var nugetRestore = GetNugetRestoreScript(); + var msbuildRestoreCommand = new CommandBuilder(builder.Actions). + MsBuildCommand(builder). + Argument("/t:restore"). + QuoteArgument(projectOrSolution.FullPath); + + if (builder.Actions.IsRunningOnAppleSilicon()) + { + // On Apple Silicon, only try package restore with `dotnet msbuild /t:restore` + ret &= BuildScript.Try(msbuildRestoreCommand.Script); + } + else if (nugetDownloaded) + { + ret &= BuildScript.Try(nugetRestore | msbuildRestoreCommand.Script); + } + else { - BuildScript GetNugetRestoreScript() => - new CommandBuilder(builder.Actions). - RunCommand(nuget). - Argument("restore"). - QuoteArgument(projectOrSolution.FullPath). - Argument("-DisableParallelProcessing"). - Script; - var nugetRestore = GetNugetRestoreScript(); - var msbuildRestoreCommand = new CommandBuilder(builder.Actions). - MsBuildCommand(builder). - Argument("/t:restore"). - QuoteArgument(projectOrSolution.FullPath); - - if (builder.Actions.IsRunningOnAppleSilicon()) - { - // On Apple Silicon, only try package restore with `dotnet msbuild /t:restore` - ret &= BuildScript.Try(msbuildRestoreCommand.Script); - } - else if (nugetDownloaded) - { - ret &= BuildScript.Try(nugetRestore | msbuildRestoreCommand.Script); - } - else - { - // If `nuget restore` fails, and we have not already attempted to download `nuget.exe`, - // download it and reattempt `nuget restore`. - var nugetDownloadAndRestore = - BuildScript.Bind(DownloadNugetExe(builder, nugetDownloadPath), exitCode => - { - nugetDownloaded = true; - if (exitCode != 0) - return BuildScript.Failure; - - nuget = nugetDownloadPath; - return GetNugetRestoreScript(); - }); - ret &= BuildScript.Try(nugetRestore | nugetDownloadAndRestore | msbuildRestoreCommand.Script); - } + // If `nuget restore` fails, and we have not already attempted to download `nuget.exe`, + // download it and reattempt `nuget restore`. + var nugetDownloadAndRestore = + BuildScript.Bind(DownloadNugetExe(builder, nugetDownloadPath), exitCode => + { + nugetDownloaded = true; + if (exitCode != 0) + return BuildScript.Failure; + + nuget = nugetDownloadPath; + return GetNugetRestoreScript(); + }); + ret &= BuildScript.Try(nugetRestore | nugetDownloadAndRestore | msbuildRestoreCommand.Script); } var command = new CommandBuilder(builder.Actions); @@ -124,9 +122,9 @@ BuildScript GetNugetRestoreScript() => command.MsBuildCommand(builder); command.QuoteArgument(projectOrSolution.FullPath); - var target = builder.Options.MsBuildTarget ?? "rebuild"; - var platform = builder.Options.MsBuildPlatform ?? (projectOrSolution is ISolution s1 ? s1.DefaultPlatformName : null); - var configuration = builder.Options.MsBuildConfiguration ?? (projectOrSolution is ISolution s2 ? s2.DefaultConfigurationName : null); + var target = "rebuild"; + var platform = projectOrSolution is ISolution s1 ? s1.DefaultPlatformName : null; + var configuration = projectOrSolution is ISolution s2 ? s2.DefaultConfigurationName : null; command.Argument("/t:" + target); if (platform is not null) @@ -134,8 +132,6 @@ BuildScript GetNugetRestoreScript() => if (configuration is not null) command.Argument(string.Format("/p:Configuration=\"{0}\"", configuration)); - command.Argument(builder.Options.MsBuildArguments); - // append the build script which invokes msbuild to the overall build script `ret`; // we insert a check that building the current project or solution was successful: // if it was not successful, we add it to `FailedProjectsOrSolutions` @@ -148,41 +144,6 @@ BuildScript GetNugetRestoreScript() => return ret; } - /// <summary> - /// Gets the BAT file used to initialize the appropriate Visual Studio - /// version/platform, as specified by the `vstools_version` property in - /// lgtm.yml. - /// - /// Returns <code>null</code> when no version is specified. - /// </summary> - public static VcVarsBatFile? GetVcVarsBatFile<TAutobuildOptions>(IAutobuilder<TAutobuildOptions> builder) where TAutobuildOptions : AutobuildOptionsShared - { - VcVarsBatFile? vsTools = null; - - if (builder.Options.VsToolsVersion is not null) - { - if (int.TryParse(builder.Options.VsToolsVersion, out var msToolsVersion)) - { - foreach (var b in BuildTools.VcVarsAllBatFiles(builder.Actions)) - { - builder.Logger.Log(Severity.Info, "Found {0} version {1}", b.Path, b.ToolsVersion); - } - - vsTools = BuildTools.FindCompatibleVcVars(builder.Actions, msToolsVersion); - if (vsTools is null) - builder.Logger.LogWarning("Could not find build tools matching version {0}", msToolsVersion); - else - builder.Logger.Log(Severity.Info, "Setting Visual Studio tools to {0}", vsTools.Path); - } - else - { - builder.Logger.LogError("The format of vstools_version is incorrect. Please specify an integer."); - } - } - - return vsTools; - } - /// <summary> /// Returns a script for downloading `nuget.exe` from nuget.org. /// </summary> diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 41a117ed5d8d..b132d1884f99 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -89,11 +89,11 @@ public bool AddPackage(string folder, string package) return dotnetCliInvoker.RunCommand(args); } - public IList<string> GetListedRuntimes() => GetListed("--list-runtimes", "runtime"); + public IList<string> GetListedRuntimes() => GetListed("--list-runtimes"); - public IList<string> GetListedSdks() => GetListed("--list-sdks", "SDK"); + public IList<string> GetListedSdks() => GetListed("--list-sdks"); - private IList<string> GetListed(string args, string artifact) + private IList<string> GetListed(string args) { if (dotnetCliInvoker.RunCommand(args, out var artifacts)) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs index 57ce2f7827c7..473741f2c660 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs @@ -189,7 +189,7 @@ private void DoExtractTree(SyntaxTree tree) // compilation.Clone() is used to allow symbols to be garbage collected. using var trapWriter = transformedSourcePath.CreateTrapWriter(Logger, options.TrapCompression, discardDuplicates: false); - upToDate = options.Fast && FileIsUpToDate(sourcePath, trapWriter.TrapFile); + upToDate = FileIsUpToDate(sourcePath, trapWriter.TrapFile); var currentTaskId = IncrementTaskCount(); ReportProgressTaskStarted(currentTaskId, sourcePath); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Options.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Options.cs index c2d21d6a16aa..4fafffe98333 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Options.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Options.cs @@ -35,15 +35,7 @@ public sealed class Options : CommonOptions public static Options CreateWithEnvironment(string[] arguments) { var options = new Options(); - var extractionOptions = Environment.GetEnvironmentVariable("LGTM_INDEX_EXTRACTOR"); - var argsList = new List<string>(arguments); - - if (!string.IsNullOrEmpty(extractionOptions)) - { - argsList.AddRange(extractionOptions.Split(' ')); - } - options.ParseArguments(argsList); return options; } diff --git a/csharp/extractor/Semmle.Extraction.Tests/Options.cs b/csharp/extractor/Semmle.Extraction.Tests/Options.cs index a20788cd244b..8b18f8cb0415 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/Options.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/Options.cs @@ -12,11 +12,6 @@ public class OptionsTests private CSharp.Options? options; private CSharp.Standalone.Options? standaloneOptions; - public OptionsTests() - { - Environment.SetEnvironmentVariable("LGTM_INDEX_EXTRACTOR", ""); - } - [Fact] public void DefaultOptions() { @@ -28,7 +23,6 @@ public void DefaultOptions() Assert.True(options.Threads >= 1); Assert.Equal(Verbosity.Info, options.LegacyVerbosity); Assert.False(options.Console); - Assert.False(options.Fast); Assert.Equal(TrapWriter.CompressionMode.Brotli, options.TrapCompression); } @@ -165,14 +159,6 @@ public void ShowingHelp() Assert.True(standaloneOptions.Help); } - [Fact] - public void Fast() - { - Environment.SetEnvironmentVariable("LGTM_INDEX_EXTRACTOR", "--fast"); - options = CSharp.Options.CreateWithEnvironment(Array.Empty<string>()); - Assert.True(options.Fast); - } - [Fact] public void ArchiveArguments() { diff --git a/csharp/extractor/Semmle.Extraction/Options.cs b/csharp/extractor/Semmle.Extraction/Options.cs index 3aa704e60c54..ba809e7cfcbc 100644 --- a/csharp/extractor/Semmle.Extraction/Options.cs +++ b/csharp/extractor/Semmle.Extraction/Options.cs @@ -60,11 +60,6 @@ public Verbosity Verbosity /// </summary> public bool Cache { get; private set; } = true; - /// <summary> - /// Whether "fast extraction mode" has been enabled. - /// </summary> - public bool Fast { get; private set; } = false; - /// <summary> /// Whether extraction is done using `codeql test run`. /// </summary> @@ -115,9 +110,6 @@ public virtual bool HandleFlag(string flag, bool value) case "cache": Cache = value; return true; - case "fast": - Fast = value; - return true; case "qltest": QlTest = value; return true; From 3f0ce98ccbcf677342b4a2de61db41986c1bb3a5 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Fri, 22 Mar 2024 10:22:59 +0100 Subject: [PATCH 468/731] C++: Add destructor test cases for AV Rule 114 --- .../AV Rule 114/AV Rule 114.expected | 1 + .../jsf/4.13 Functions/AV Rule 114/test.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/AV Rule 114.expected b/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/AV Rule 114.expected index ce056261514a..390da977d3f3 100644 --- a/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/AV Rule 114.expected +++ b/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/AV Rule 114.expected @@ -10,3 +10,4 @@ | test.cpp:112:1:112:1 | return ... | Function g14 should return a value of type int but does not return a value here | | test.cpp:134:2:134:36 | ExprStmt | Function g16 should return a value of type int but does not return a value here | | test.cpp:141:3:141:37 | ExprStmt | Function g17 should return a value of type int but does not return a value here | +| test.cpp:189:2:189:16 | ExprStmt | Function g23 should return a value of type int but does not return a value here | diff --git a/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/test.cpp b/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/test.cpp index c68ad23805cd..c19c5de13f90 100644 --- a/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/test.cpp +++ b/cpp/ql/test/query-tests/jsf/4.13 Functions/AV Rule 114/test.cpp @@ -170,3 +170,21 @@ int g19(int x) int g21() { g20(); // GOOD } + +class Aborting { +public: + [[noreturn]] + ~Aborting(); + + void a() {}; +}; + +int g22() { + Aborting x; + + x.a(); // GOOD +} + +int g23() { + Aborting().a(); // GOOD [FALSE POSITIVE] +} From a770bddff07b33a1a77df1ddcba9561cf1e7507a Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Fri, 22 Mar 2024 10:46:35 +0100 Subject: [PATCH 469/731] C++: Add precision to `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` Also clean up the names of the queries while here. --- .../src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql | 3 ++- .../Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql b/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql index f20b299da60c..f61cd06888c9 100644 --- a/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql +++ b/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql @@ -1,8 +1,9 @@ /** - * @name Boost_asio TLS Settings Misconfiguration + * @name boost::asio TLS settings misconfiguration * @description Using the TLS or SSLv23 protocol from the boost::asio library, but not disabling deprecated protocols, or disabling minimum-recommended protocols. * @kind problem * @problem.severity error + * @precision medium * @security-severity 7.5 * @id cpp/boost/tls-settings-misconfiguration * @tags security diff --git a/cpp/ql/src/Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql b/cpp/ql/src/Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql index 4df70695179b..085a46a9d3f1 100644 --- a/cpp/ql/src/Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql +++ b/cpp/ql/src/Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql @@ -1,8 +1,9 @@ /** - * @name boost::asio Use of deprecated hardcoded Protocol + * @name boost::asio use of deprecated hardcoded protocol * @description Using a deprecated hard-coded protocol using the boost::asio library. * @kind problem * @problem.severity error + * @precision medium * @security-severity 7.5 * @id cpp/boost/use-of-deprecated-hardcoded-security-protocol * @tags security From eef60c9ad2b035fb69244c75173fa53ecc647062 Mon Sep 17 00:00:00 2001 From: Rasmus Lerchedahl Petersen <yoff@github.com> Date: Fri, 22 Mar 2024 10:54:12 +0100 Subject: [PATCH 470/731] python: add test for `"ReturnValue.TupleElement[0,1]"` also synchronise files --- .../dataflow/model-summaries/InlineTaintTest.ext.yml | 3 ++- .../dataflow/model-summaries/NormalDataflowTest.ext.yml | 1 + .../dataflow/model-summaries/model_summaries.py | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml b/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml index e3a7e059401e..10fbd6df7448 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml +++ b/python/ql/test/experimental/dataflow/model-summaries/InlineTaintTest.ext.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/python-all extensible: summaryModel data: - - ["foo", "Member[MS_identity]", "Argument[0]", "ReturnValue", "value"] + - ["foo", "Member[MS_identity]", "Argument[0,x:]", "ReturnValue", "value"] - ["foo", "Member[MS_apply_lambda]", "Argument[1]", "Argument[0].Parameter[0]", "value"] - ["foo", "Member[MS_apply_lambda]", "Argument[0].ReturnValue", "ReturnValue", "value"] - ["foo", "Member[MS_reversed]", "Argument[0].ListElement", "ReturnValue.ListElement", "value"] @@ -17,4 +17,5 @@ extensions: - ["foo", "Member[MS_append_to_list]", "Argument[1]", "ReturnValue", "taint"] - ["foo", "Member[MS_spread]", "Argument[0]", "ReturnValue.TupleElement[0]", "value"] - ["foo", "Member[MS_spread]", "Argument[1]", "ReturnValue.TupleElement[1]", "value"] + - ["foo", "Member[MS_spread_all]", "Argument[0]", "ReturnValue.TupleElement[0,1]", "value"] - ["json", "Member[MS_loads]", "Argument[0]", "ReturnValue", "taint"] diff --git a/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml b/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml index b3898193f59c..10fbd6df7448 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml +++ b/python/ql/test/experimental/dataflow/model-summaries/NormalDataflowTest.ext.yml @@ -17,4 +17,5 @@ extensions: - ["foo", "Member[MS_append_to_list]", "Argument[1]", "ReturnValue", "taint"] - ["foo", "Member[MS_spread]", "Argument[0]", "ReturnValue.TupleElement[0]", "value"] - ["foo", "Member[MS_spread]", "Argument[1]", "ReturnValue.TupleElement[1]", "value"] + - ["foo", "Member[MS_spread_all]", "Argument[0]", "ReturnValue.TupleElement[0,1]", "value"] - ["json", "Member[MS_loads]", "Argument[0]", "ReturnValue", "taint"] diff --git a/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py b/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py index 071d1ae6aa4b..17f831f6ed12 100644 --- a/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py +++ b/python/ql/test/experimental/dataflow/model-summaries/model_summaries.py @@ -30,7 +30,7 @@ def SINK_F(x): ensure_tainted = ensure_not_tainted = print TAINTED_STRING = "TAINTED_STRING" -from foo import MS_identity, MS_apply_lambda, MS_reversed, MS_list_map, MS_append_to_list, MS_spread +from foo import MS_identity, MS_apply_lambda, MS_reversed, MS_list_map, MS_append_to_list, MS_spread, MS_spread_all # Simple summary via_identity = MS_identity(SOURCE) @@ -118,6 +118,10 @@ def explicit_identity(x): SINK_F(x) SINK(y) # $ flow="SOURCE, l:-2 -> y" +a, b = MS_spread_all(SOURCE) +SINK(a) # $ flow="SOURCE, l:-1 -> a" +SINK(b) # $ flow="SOURCE, l:-2 -> b" + # Modeled flow-summary is not value preserving from json import MS_loads as json_loads From adfb3c3d500d63b45eb27efe0440331ed1e49af8 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Fri, 22 Mar 2024 11:22:11 +0100 Subject: [PATCH 471/731] C++: Simplify `cpp/boost/tls-settings-misconfiguration` --- .../src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql b/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql index f61cd06888c9..f5d1a09d04e9 100644 --- a/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql +++ b/cpp/ql/src/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql @@ -43,10 +43,9 @@ predicate isOptionSet(ConstructorCall cc, int flag, FunctionCall fcSetOptions) { ExistsAnyFlow::flow(source, sink) and f.getACallToThisFunction() = fcSetOptions and contextSetOptions = fcSetOptions.getQualifier() and - forall(Expr optionArgument, Expr optionArgumentSource | + forex(Expr optionArgument | optionArgument = fcSetOptions.getArgument(0) and - BoostorgAsio::SslOptionFlow::flow(DataFlow::exprNode(optionArgumentSource), - DataFlow::exprNode(optionArgument)) + BoostorgAsio::SslOptionFlow::flowTo(DataFlow::exprNode(optionArgument)) | optionArgument.getValue().toInt().bitShiftRight(16).bitAnd(flag) = flag ) From d62d68a40bbfd62524091ba333a1e98543ee1bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20St=C3=B6ckli?= <p-@github.com> Date: Fri, 22 Mar 2024 12:08:30 +0100 Subject: [PATCH 472/731] C#: add hint regarding ECB to weak encryption QHelp --- csharp/ql/src/Security Features/WeakEncryption.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/src/Security Features/WeakEncryption.qhelp b/csharp/ql/src/Security Features/WeakEncryption.qhelp index c67583b05e92..1749144ae8b9 100644 --- a/csharp/ql/src/Security Features/WeakEncryption.qhelp +++ b/csharp/ql/src/Security Features/WeakEncryption.qhelp @@ -7,7 +7,7 @@ </overview> <recommendation> -<p>You should switch to a more secure encryption algorithm, such as AES (Advanced Encryption Standard) and use a key length which is reasonable for the application for which it is being used.</p> +<p>You should switch to a more secure encryption algorithm, such as AES (Advanced Encryption Standard) and use a key length which is reasonable for the application for which it is being used. Do not use the ECB encryption mode since it is vulnerable to replay and other attacks.</p> </recommendation> <example> From 4e4cd52f6300da905256df3c5a532a018ff756b1 Mon Sep 17 00:00:00 2001 From: Max Schaefer <max-schaefer@github.com> Date: Fri, 22 Mar 2024 11:44:06 +0000 Subject: [PATCH 473/731] Go: Update query help for `go/path-injection` to include example fixes. --- go/ql/src/Security/CWE-022/TaintedPath.qhelp | 51 +++++++++++++++---- go/ql/src/Security/CWE-022/TaintedPathGood.go | 20 ++++++++ .../src/Security/CWE-022/TaintedPathGood2.go | 23 +++++++++ 3 files changed, 84 insertions(+), 10 deletions(-) create mode 100644 go/ql/src/Security/CWE-022/TaintedPathGood.go create mode 100644 go/ql/src/Security/CWE-022/TaintedPathGood2.go diff --git a/go/ql/src/Security/CWE-022/TaintedPath.qhelp b/go/ql/src/Security/CWE-022/TaintedPath.qhelp index 061ffbe34712..3a3948c425dc 100644 --- a/go/ql/src/Security/CWE-022/TaintedPath.qhelp +++ b/go/ql/src/Security/CWE-022/TaintedPath.qhelp @@ -9,23 +9,35 @@ Accessing files using paths constructed from user-controlled data can allow an a unexpected resources. This can result in sensitive information being revealed or deleted, or an attacker being able to influence behavior by modifying unexpected files. </p> +<p> +Paths that are naively constructed from data controlled by a user may be absolute paths, +or may contain unexpected special characters such as "..". Such a path could point anywhere +on the file system. +</p> </overview> <recommendation> <p> -Validate user input before using it to construct a file path, either using an off-the-shelf library -or by performing custom validation. +Validate user input before using it to construct a file path. +</p> +<p> +Common validation methods include checking that the normalized path is relative and +does not contain any ".." components, or checking that the path is contained within a safe folder. The method you should use depends on how the path is used in the application, and whether the path should be a single path component. +</p> +<p> +If the path should be a single path component (such as a file name), you can check for the +existence of any path separators ("/" or "\"), or ".." sequences in the input, and reject +the input if any are found. +</p> +<p> +Note that removing "../" sequences is <i>not</i> sufficient, since the input could still +contain a path separator followed by "..". For example, the input ".../...//" would still +result in the string "../" if only "../" sequences are removed. </p> <p> -Ideally, follow these rules: +Finally, the simplest (but most restrictive) option is to use an allow list of safe patterns +and make sure that the user input matches one of these patterns. </p> -<ul> -<li>Do not allow more than a single "." character.</li> -<li>Do not allow directory separators such as "/" or "\" (depending on the file system).</li> -<li>Do not rely on simply replacing problematic sequences such as "../". For example, after -applying this filter to ".../...//", the resulting string would still be "../".</li> -<li>Use an allowlist of known good patterns.</li> -</ul> </recommendation> <example> @@ -43,6 +55,25 @@ password file. This file would then be sent back to the user, giving them access information. </p> <sample src="TaintedPath.go" /> +<p> +If the input should only be a file name, you can check that it doesn't contain any +path separators or ".." sequences. +</p> +<sample src="TaintedPathGood.go" /> +<p> +Note that this approach is only suitable if the input is expected to be a single file name. +</p> +<p> +If the input can be a path with multiple components, we can make it safe by verifying +that the path is within a specific directory that is considered safe. +This can be done by resolving the input with respect to that directory, and then checking +that the resulting path is still within it. +</p> +<sample src="TaintedPathGood2.go" /> +<p> +Note that <code>/home/user</code> is just an example, you should replace it with the actual +safe directory in your application. +</p> </example> <references> diff --git a/go/ql/src/Security/CWE-022/TaintedPathGood.go b/go/ql/src/Security/CWE-022/TaintedPathGood.go new file mode 100644 index 000000000000..50c1359a9030 --- /dev/null +++ b/go/ql/src/Security/CWE-022/TaintedPathGood.go @@ -0,0 +1,20 @@ +package main + +import ( + "io/ioutil" + "net/http" + "path/filepath" + "strings" +) + +func handler(w http.ResponseWriter, r *http.Request) { + path := r.URL.Query()["path"][0] + + // GOOD: ensure that the filename has no path separators or parent directory references + if strings.Contains(path, "/") || strings.Contains(path, "\\") || strings.Contains(path, "..") { + http.Error(w, "Invalid file name", http.StatusBadRequest) + return + } + data, _ := ioutil.ReadFile(filepath.Join("/home/user/", path)) + w.Write(data) +} diff --git a/go/ql/src/Security/CWE-022/TaintedPathGood2.go b/go/ql/src/Security/CWE-022/TaintedPathGood2.go new file mode 100644 index 000000000000..0136adf11dcb --- /dev/null +++ b/go/ql/src/Security/CWE-022/TaintedPathGood2.go @@ -0,0 +1,23 @@ +package main + +import ( + "io/ioutil" + "net/http" + "path/filepath" + "strings" +) + +const safeDir = "/home/user/" + +func handler(w http.ResponseWriter, r *http.Request) { + path := r.URL.Query()["path"][0] + + // GOOD: ensure that the resolved path is within the safe directory + absPath, err := filepath.Abs(filepath.Join(safeDir, path)) + if err != nil || !strings.HasPrefix(absPath, safeDir) { + http.Error(w, "Invalid file name", http.StatusBadRequest) + return + } + data, _ := ioutil.ReadFile(absPath) + w.Write(data) +} From 87ad170067d281bd12de0016479aaf9ada5c39a6 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Sun, 10 Mar 2024 15:04:10 -0400 Subject: [PATCH 474/731] Dapper source models --- csharp/ql/lib/ext/Dapper.model.yml | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/csharp/ql/lib/ext/Dapper.model.yml b/csharp/ql/lib/ext/Dapper.model.yml index 839778e4b7bc..372970089a27 100644 --- a/csharp/ql/lib/ext/Dapper.model.yml +++ b/csharp/ql/lib/ext/Dapper.model.yml @@ -58,3 +58,53 @@ extensions: - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "Argument[1]", "sql-injection", "manual"] - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "Argument[2]", "sql-injection", "manual"] - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "Argument[1]", "sql-injection", "manual"] + - addsTo: + pack: codeql/csharp-all + extensible: sourceModel + data: + - ["Dapper", "SqlMapper", False, "Query", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TReturn>", "(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TReturn>", "(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirst", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirst", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirst<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryMultiple", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryMultipleAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingle", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingle", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingle<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] From 98285b5171c35ccf4653c670c31b011d0c2be969 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 14 Mar 2024 23:28:27 -0400 Subject: [PATCH 475/731] Add `AsList` summary --- csharp/ql/lib/ext/Dapper.model.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/csharp/ql/lib/ext/Dapper.model.yml b/csharp/ql/lib/ext/Dapper.model.yml index 372970089a27..c16de645016a 100644 --- a/csharp/ql/lib/ext/Dapper.model.yml +++ b/csharp/ql/lib/ext/Dapper.model.yml @@ -108,3 +108,8 @@ extensions: - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - addsTo: + pack: codeql/csharp-all + extensible: summaryModel + data: + - ["Dapper", "SqlMapper", False, "AsList<T>", "(System.Collections.Generic.IEnumerable<T>)", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file From 23aeb1d878571df69e2702a864bca00741d36334 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 14 Mar 2024 23:28:48 -0400 Subject: [PATCH 476/731] Add tests --- .../database/dapper/DatabaseSources.expected | 0 .../database/dapper/DatabaseSources.ext.yml | 7 +++ .../stored/database/dapper/DatabaseSources.ql | 12 +++++ .../stored/database/dapper/UseDapper.cs | 50 +++++++++++++++++++ .../stored/database/dapper/options | 5 ++ 5 files changed, 74 insertions(+) create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.expected create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ext.yml create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs create mode 100644 csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/options diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.expected b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ext.yml b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ext.yml new file mode 100644 index 000000000000..06c77c199ce7 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ext.yml @@ -0,0 +1,7 @@ +extensions: + + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["database", true, 0] \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql new file mode 100644 index 000000000000..ebff54d131cd --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql @@ -0,0 +1,12 @@ +import csharp +import semmle.code.csharp.security.dataflow.flowsources.FlowSources +import TestUtilities.InlineFlowTest +import TaintFlowTest<DatabseConfig> + +module DatabseConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } + + predicate isSink(DataFlow::Node sink) { + exists(MethodCall mc | mc.getTarget().hasName("Sink") | sink.asExpr() = mc.getArgument(0)) + } +} diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs new file mode 100644 index 000000000000..148af2306c43 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs @@ -0,0 +1,50 @@ +using System; +using System.Data; +using System.Data.Entity; +using System.Data.SqlClient; +using System.Threading.Tasks; +using Dapper; + +namespace Test +{ + class UseDapper + { + public static void Bad01(string connectionString, string query) + { + using (var connection = new SqlConnection(connectionString)) + { + var result = connection.Query<object>(query); + Sink(result); // $ hasTaintFlow=line:16 + } + } + + public static async Task Bad02(string connectionString, string query) + { + using (var connection = new SqlConnection(connectionString)) + { + var result = await connection.QueryAsync<object>(query); + Sink(result); // $ hasTaintFlow=line:25 + } + } + + public static void Bad03(string connectionString, string query) + { + using (var connection = new SqlConnection(connectionString)) + { + var result = connection.QueryFirst(query); + Sink(result); // $ hasTaintFlow=line:34 + } + } + + public static void Bad04(string connectionString, string query) + { + using (var connection = new SqlConnection(connectionString)) + { + var results = connection.Query<object>(query).AsList(); + Sink(results); // $ hasTaintFlow=line:43 + } + } + + public static void Sink(object o) { } + } +} \ No newline at end of file diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/options b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/options new file mode 100644 index 000000000000..fcda6c1b83c0 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/options @@ -0,0 +1,5 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/Dapper/2.1.24/Dapper.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/System.Data.SqlClient/4.8.5/System.Data.SqlClient.csproj +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../../../../resources/stubs/System.Data.SQLite/1.0.118/System.Data.SQLite.csproj +semmle-extractor-options: ${testdir}/../../../../../../resources/stubs/System.Windows.cs From 5ca6b40c34b749539578e1fe2384a93d380e1f38 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Thu, 14 Mar 2024 23:30:21 -0400 Subject: [PATCH 477/731] Change note --- csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md diff --git a/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md b/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md new file mode 100644 index 000000000000..204ae7db3ae9 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. From 82237819782b435c9ddb3134a308f30a5ab5062a Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Fri, 15 Mar 2024 01:00:54 -0400 Subject: [PATCH 478/731] Fix FlowSummaries tests --- .../test/library-tests/dataflow/library/FlowSummaries.expected | 1 + .../dataflow/library/FlowSummariesFiltered.expected | 1 + 2 files changed, 2 insertions(+) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 30396dbf4101..1520eb90e661 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -619,6 +619,7 @@ summary | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TReturn>;(System.Func<TFirst,TSecond,TThird,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TReturn>;(System.Type[],System.Func<System.Object[],TReturn>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0];ReturnValue;taint;manual | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index cf17fed3269c..92f85104b7f1 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -8,6 +8,7 @@ | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TReturn>;(System.Func<TFirst,TSecond,TThird,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TReturn>;(System.Type[],System.Func<System.Object[],TReturn>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | +| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0];ReturnValue;taint;manual | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | From 5885938eafc45ef33b3c52b07a3167a825b0111a Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Sun, 17 Mar 2024 09:40:23 -0400 Subject: [PATCH 479/731] Use wildcard signatures for `Query` methods --- csharp/ql/lib/ext/Dapper.model.yml | 82 +++++++++++++----------------- 1 file changed, 36 insertions(+), 46 deletions(-) diff --git a/csharp/ql/lib/ext/Dapper.model.yml b/csharp/ql/lib/ext/Dapper.model.yml index c16de645016a..ca3a58131a69 100644 --- a/csharp/ql/lib/ext/Dapper.model.yml +++ b/csharp/ql/lib/ext/Dapper.model.yml @@ -62,52 +62,42 @@ extensions: pack: codeql/csharp-all extensible: sourceModel data: - - ["Dapper", "SqlMapper", False, "Query", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "Query<TReturn>", "(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TReturn>", "(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryAsync<TReturn>", "(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirst", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirst", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirst<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryMultiple", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QueryMultipleAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingle", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingle", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingle<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] - - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync<T>", "(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>)", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TFourth,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TThird,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "Query<TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TFourth,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TFirst,TSecond,TThird,TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryAsync<TReturn>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirst", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirst<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstAsync<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefault<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryFirstOrDefaultAsync<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryMultiple", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QueryMultipleAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingle", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingle<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleAsync<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefault<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "QuerySingleOrDefaultAsync<T>", "", "", "ReturnValue", "database", "manual"] - addsTo: pack: codeql/csharp-all extensible: summaryModel From 9b23bfa0384cf8a9006fb3226a1bcafb865bbd45 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Sun, 17 Mar 2024 09:40:46 -0400 Subject: [PATCH 480/731] `Execute` methods which return objects The `Execute` method returns `int` for "number of rows affected". But some of the other `Execute*` methods return objects. --- csharp/ql/lib/ext/Dapper.model.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/csharp/ql/lib/ext/Dapper.model.yml b/csharp/ql/lib/ext/Dapper.model.yml index ca3a58131a69..0b65612c3a1a 100644 --- a/csharp/ql/lib/ext/Dapper.model.yml +++ b/csharp/ql/lib/ext/Dapper.model.yml @@ -62,6 +62,12 @@ extensions: pack: codeql/csharp-all extensible: sourceModel data: + - ["Dapper", "SqlMapper", False, "ExecuteReader", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "ExecuteReaderAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "ExecuteScalar", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "ExecuteScalar<T>", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "ExecuteScalarAsync", "", "", "ReturnValue", "database", "manual"] + - ["Dapper", "SqlMapper", False, "ExecuteScalarAsync<T>", "", "", "ReturnValue", "database", "manual"] - ["Dapper", "SqlMapper", False, "Query", "", "", "ReturnValue", "database", "manual"] - ["Dapper", "SqlMapper", False, "Query<T>", "", "", "ReturnValue", "database", "manual"] - ["Dapper", "SqlMapper", False, "Query<TFirst,TSecond,TReturn>", "", "", "ReturnValue", "database", "manual"] From 73b4e8fe6a8afa26430f7a1efdee29d80d26886b Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Sun, 17 Mar 2024 09:42:18 -0400 Subject: [PATCH 481/731] Add `WithElement` identifier to `AsList` method --- csharp/ql/lib/ext/Dapper.model.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/ql/lib/ext/Dapper.model.yml b/csharp/ql/lib/ext/Dapper.model.yml index 0b65612c3a1a..4e24f96fd499 100644 --- a/csharp/ql/lib/ext/Dapper.model.yml +++ b/csharp/ql/lib/ext/Dapper.model.yml @@ -108,4 +108,4 @@ extensions: pack: codeql/csharp-all extensible: summaryModel data: - - ["Dapper", "SqlMapper", False, "AsList<T>", "(System.Collections.Generic.IEnumerable<T>)", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file + - ["Dapper", "SqlMapper", False, "AsList<T>", "(System.Collections.Generic.IEnumerable<T>)", "", "Argument[0].WithElement", "ReturnValue", "taint", "manual"] From 1f04229def59b2beab43fb83f151db469d94d566 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Sun, 17 Mar 2024 22:39:38 -0400 Subject: [PATCH 482/731] Fix typo --- .../flowsources/stored/database/dapper/DatabaseSources.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql index ebff54d131cd..aa9372d73d29 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/DatabaseSources.ql @@ -1,9 +1,9 @@ import csharp import semmle.code.csharp.security.dataflow.flowsources.FlowSources import TestUtilities.InlineFlowTest -import TaintFlowTest<DatabseConfig> +import TaintFlowTest<DatabaseConfig> -module DatabseConfig implements DataFlow::ConfigSig { +module DatabaseConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource } predicate isSink(DataFlow::Node sink) { From 9ed8ca27a12aa50d29a9cdb4025a674a99ac6a8a Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Sun, 17 Mar 2024 22:54:19 -0400 Subject: [PATCH 483/731] Fix test and model --- csharp/ql/lib/ext/Dapper.model.yml | 2 +- .../dataflow/flowsources/stored/database/dapper/UseDapper.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/ql/lib/ext/Dapper.model.yml b/csharp/ql/lib/ext/Dapper.model.yml index 4e24f96fd499..9f5d343d4629 100644 --- a/csharp/ql/lib/ext/Dapper.model.yml +++ b/csharp/ql/lib/ext/Dapper.model.yml @@ -108,4 +108,4 @@ extensions: pack: codeql/csharp-all extensible: summaryModel data: - - ["Dapper", "SqlMapper", False, "AsList<T>", "(System.Collections.Generic.IEnumerable<T>)", "", "Argument[0].WithElement", "ReturnValue", "taint", "manual"] + - ["Dapper", "SqlMapper", False, "AsList<T>", "(System.Collections.Generic.IEnumerable<T>)", "", "Argument[0].Element", "ReturnValue.Element", "taint", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs index 148af2306c43..48a86d4fe6b8 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs +++ b/csharp/ql/test/library-tests/dataflow/flowsources/stored/database/dapper/UseDapper.cs @@ -41,7 +41,7 @@ public static void Bad04(string connectionString, string query) using (var connection = new SqlConnection(connectionString)) { var results = connection.Query<object>(query).AsList(); - Sink(results); // $ hasTaintFlow=line:43 + Sink(results[0]); // $ hasTaintFlow=line:43 } } From 4b13ad1310180ec7a473299f9b89b734402d18d5 Mon Sep 17 00:00:00 2001 From: Ed Minnix <egregius313@github.com> Date: Sun, 17 Mar 2024 23:08:21 -0400 Subject: [PATCH 484/731] Fix flow summary tests --- .../test/library-tests/dataflow/library/FlowSummaries.expected | 2 +- .../dataflow/library/FlowSummariesFiltered.expected | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 1520eb90e661..4a88458f5668 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -619,7 +619,7 @@ summary | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TReturn>;(System.Func<TFirst,TSecond,TThird,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TReturn>;(System.Type[],System.Func<System.Object[],TReturn>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | -| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0];ReturnValue;taint;manual | +| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;ReturnValue.Element;taint;manual | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 92f85104b7f1..81240bcd292e 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -8,7 +8,7 @@ | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TReturn>;(System.Func<TFirst,TSecond,TThird,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TReturn>;(System.Type[],System.Func<System.Object[],TReturn>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | -| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0];ReturnValue;taint;manual | +| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;ReturnValue.Element;taint;manual | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | From 7d968184fdad7c61dce3aa28f8f2944ec633a816 Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen <erik-krogh@github.com> Date: Fri, 22 Mar 2024 13:58:34 +0100 Subject: [PATCH 485/731] improve the change-note Co-authored-by: Asger F <asgerf@github.com> --- .../ql/src/change-notes/2024-03-21-target-blank-precision.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md index 89b0c0da191c..5bcb0ba74635 100644 --- a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md +++ b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md @@ -1,4 +1,4 @@ --- category: queryMetadata --- -* The `@precision` of the `js/unsafe-external-link` has been lowered to `low` to reflect that modern browsers do not provider the `opener` attribute and thus mitigate the potential security risk of having a link with `target="_blank"`. \ No newline at end of file +* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. \ No newline at end of file From ca72b0583d5322a0da2475b762dec7f922959643 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Fri, 22 Mar 2024 13:59:47 +0100 Subject: [PATCH 486/731] C#: Update source and sink expected test output. --- .../dataflow/library/FlowSummaries.expected | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 4a88458f5668..73def298f3a3 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -1,4 +1,95 @@ source +| Dapper;SqlMapper;false;ExecuteReader;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReader;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Data.CommandBehavior);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReader;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.Common.DbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.Common.DbConnection,Dapper.CommandDefinition,System.Data.CommandBehavior);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.Common.DbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Data.CommandBehavior);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteReaderAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalar;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalar;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalar<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalar<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalarAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalarAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalarAsync<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;ExecuteScalarAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Boolean,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;Query<TReturn>;(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.Type,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func<TFirst,TSecond,TReturn>,System.String);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.String);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.String);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.String);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TSeventh,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.String);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TReturn>;(System.Data.IDbConnection,Dapper.CommandDefinition,System.Func<TFirst,TSecond,TThird,TReturn>,System.String);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TFirst,TSecond,TThird,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryAsync<TReturn>;(System.Data.IDbConnection,System.String,System.Type[],System.Func<System.Object[],TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirst;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirst<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirst<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.Type,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstAsync<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefault<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefault<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.Type,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryFirstOrDefaultAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryMultiple;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryMultiple;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryMultipleAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QueryMultipleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingle;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingle<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingle<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.Type,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleAsync<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefault;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefault<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefault<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.Type,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync;(System.Data.IDbConnection,System.Type,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync<T>;(System.Data.IDbConnection,Dapper.CommandDefinition);;ReturnValue;database;manual | +| Dapper;SqlMapper;false;QuerySingleOrDefaultAsync<T>;(System.Data.IDbConnection,System.String,System.Object,System.Data.IDbTransaction,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;ReturnValue;database;manual | | Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;Argument[0];environment;manual | | Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder);;ReturnValue;environment;manual | | Microsoft.Extensions.Configuration;EnvironmentVariablesExtensions;false;AddEnvironmentVariables;(Microsoft.Extensions.Configuration.IConfigurationBuilder,System.Action<Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationSource>);;Argument[0];environment;manual | From bc9396e0e66b5bd7dc689aeea6058108701b1d5c Mon Sep 17 00:00:00 2001 From: Max Schaefer <max-schaefer@github.com> Date: Fri, 22 Mar 2024 13:19:36 +0000 Subject: [PATCH 487/731] Address suggestions from review. --- go/ql/src/Security/CWE-022/TaintedPath.qhelp | 4 +++- go/ql/src/Security/CWE-022/TaintedPathGood.go | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/go/ql/src/Security/CWE-022/TaintedPath.qhelp b/go/ql/src/Security/CWE-022/TaintedPath.qhelp index 3a3948c425dc..3b54e80cd97c 100644 --- a/go/ql/src/Security/CWE-022/TaintedPath.qhelp +++ b/go/ql/src/Security/CWE-022/TaintedPath.qhelp @@ -72,7 +72,9 @@ that the resulting path is still within it. <sample src="TaintedPathGood2.go" /> <p> Note that <code>/home/user</code> is just an example, you should replace it with the actual -safe directory in your application. +safe directory in your application. Also, while in this example the path of the safe +directory is absolute, this may not always be the case, and you may need to resolve it +first before checking the input. </p> </example> diff --git a/go/ql/src/Security/CWE-022/TaintedPathGood.go b/go/ql/src/Security/CWE-022/TaintedPathGood.go index 50c1359a9030..8a46c76b26a0 100644 --- a/go/ql/src/Security/CWE-022/TaintedPathGood.go +++ b/go/ql/src/Security/CWE-022/TaintedPathGood.go @@ -11,6 +11,7 @@ func handler(w http.ResponseWriter, r *http.Request) { path := r.URL.Query()["path"][0] // GOOD: ensure that the filename has no path separators or parent directory references + // (Note that this is only suitable if `path` is expected to have a single component!) if strings.Contains(path, "/") || strings.Contains(path, "\\") || strings.Contains(path, "..") { http.Error(w, "Invalid file name", http.StatusBadRequest) return From 178a45af25bdb0b601e0d90785723c8df4c63f61 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Fri, 22 Mar 2024 14:27:36 +0100 Subject: [PATCH 488/731] C#: Add high level diagnostic messages for buildless extraction (start, success) --- .../CSharpAutobuilder.cs | 6 +++- .../Semmle.Autobuild.Shared/Autobuilder.cs | 26 +++++++++++++++++ .../extractor/Semmle.Util/ToolStatusPage.cs | 1 + .../standalone/diagnostics.expected | 28 +++++++++++++++++++ .../all-platforms/standalone/test.py | 3 ++ 5 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs index aad91541064e..b1ebc64cb4c3 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs @@ -44,7 +44,7 @@ public class CSharpAutobuilder : Autobuilder<CSharpAutobuildOptions> public override BuildScript GetBuildScript() { var attempt = BuildScript.Failure; - switch (GetCSharpBuildStrategy()) + switch (BuildStrategy) { case CSharpBuildStrategy.CustomBuildCommand: attempt = new BuildCommandRule(DotNetRule.WithDotNet).Analyse(this, false) & CheckExtractorRun(true); @@ -218,6 +218,10 @@ private CSharpBuildStrategy GetCSharpBuildStrategy() return CSharpBuildStrategy.Auto; } + private CSharpBuildStrategy? buildStrategy = null; + private CSharpBuildStrategy BuildStrategy => buildStrategy ??= GetCSharpBuildStrategy(); + public override bool IsBuildless => BuildStrategy == CSharpBuildStrategy.Buildless; + private enum CSharpBuildStrategy { CustomBuildCommand, diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs index a23d29d2979c..bc155ea5da84 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs @@ -301,6 +301,18 @@ void exitCallback(int ret, string msg, bool silent) var onOutput = BuildOutputHandler(Console.Out); var onError = BuildOutputHandler(Console.Error); + if (IsBuildless) + { + AddDiagnostic(new DiagnosticMessage( + Options.Language, + "buildless/mode-active", + "C# was extracted in buildless mode", + visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), + markdownMessage: "C# was extracted in buildless mode. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", + severity: DiagnosticMessage.TspSeverity.Note + )); + } + var buildResult = script.Run(Actions, startCallback, exitCallback, onOutput, onError); // if the build succeeded, all diagnostics we captured from the build output should be warnings; @@ -310,6 +322,18 @@ void exitCallback(int ret, string msg, bool silent) .Select(result => result.ToDiagnosticMessage(this, diagSeverity)) .ForEach(AddDiagnostic); + if (buildResult == 0 && IsBuildless) + { + AddDiagnostic(new DiagnosticMessage( + Options.Language, + "buildless/complete", + "C# buildless extraction completed", + visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true), + markdownMessage: "C# buildless extraction has completed.", + severity: DiagnosticMessage.TspSeverity.Unknown + )); + } + return buildResult; } @@ -318,6 +342,8 @@ void exitCallback(int ret, string msg, bool silent) /// </summary> public abstract BuildScript GetBuildScript(); + public virtual bool IsBuildless { get; } = false; + /// <summary> /// Produces a diagnostic for the tool status page that we were unable to automatically diff --git a/csharp/extractor/Semmle.Util/ToolStatusPage.cs b/csharp/extractor/Semmle.Util/ToolStatusPage.cs index 70999fb98d2b..1be700654af2 100644 --- a/csharp/extractor/Semmle.Util/ToolStatusPage.cs +++ b/csharp/extractor/Semmle.Util/ToolStatusPage.cs @@ -46,6 +46,7 @@ public TspSource(string id, string name, string? extractorName = null) [JsonConverter(typeof(StringEnumConverter), typeof(CamelCaseNamingStrategy))] public enum TspSeverity { + Unknown, Note, Warning, Error diff --git a/csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected b/csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected new file mode 100644 index 000000000000..cc9b35b27b83 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected @@ -0,0 +1,28 @@ +{ + "markdownMessage": "C# buildless extraction has completed.", + "severity": "unknown", + "source": { + "extractorName": "csharp", + "id": "csharp/autobuilder/buildless/complete", + "name": "C# buildless extraction completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} +{ + "markdownMessage": "C# was extracted in buildless mode. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", + "severity": "note", + "source": { + "extractorName": "csharp", + "id": "csharp/autobuilder/buildless/mode-active", + "name": "C# was extracted in buildless mode" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} diff --git a/csharp/ql/integration-tests/all-platforms/standalone/test.py b/csharp/ql/integration-tests/all-platforms/standalone/test.py index a17966e148a9..adf5087e8339 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/test.py +++ b/csharp/ql/integration-tests/all-platforms/standalone/test.py @@ -1,3 +1,6 @@ from create_database_utils import * +from diagnostics_test_utils import * run_codeql_database_create([], lang="csharp", extra_args=["--build-mode=none"]) + +check_diagnostics() \ No newline at end of file From a07ee8e9613abd7f1667a92228541c1ad441898b Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Fri, 22 Mar 2024 14:40:25 +0100 Subject: [PATCH 489/731] C#: Update the AsList model to a value flow model. --- csharp/ql/lib/ext/Dapper.model.yml | 2 +- .../test/library-tests/dataflow/library/FlowSummaries.expected | 2 +- .../dataflow/library/FlowSummariesFiltered.expected | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/csharp/ql/lib/ext/Dapper.model.yml b/csharp/ql/lib/ext/Dapper.model.yml index 9f5d343d4629..d5305af055c6 100644 --- a/csharp/ql/lib/ext/Dapper.model.yml +++ b/csharp/ql/lib/ext/Dapper.model.yml @@ -108,4 +108,4 @@ extensions: pack: codeql/csharp-all extensible: summaryModel data: - - ["Dapper", "SqlMapper", False, "AsList<T>", "(System.Collections.Generic.IEnumerable<T>)", "", "Argument[0].Element", "ReturnValue.Element", "taint", "manual"] + - ["Dapper", "SqlMapper", False, "AsList<T>", "(System.Collections.Generic.IEnumerable<T>)", "", "Argument[0].Element", "ReturnValue.Element", "value", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 73def298f3a3..fe17b96b9120 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -710,7 +710,7 @@ summary | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TReturn>;(System.Func<TFirst,TSecond,TThird,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TReturn>;(System.Type[],System.Func<System.Object[],TReturn>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | -| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;ReturnValue.Element;taint;manual | +| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;ReturnValue.Element;value;manual | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 81240bcd292e..d9ebde96eb20 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -8,7 +8,7 @@ | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TFourth,TReturn>;(System.Func<TFirst,TSecond,TThird,TFourth,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TFirst,TSecond,TThird,TReturn>;(System.Func<TFirst,TSecond,TThird,TReturn>,System.String,System.Boolean);;Argument[0];Argument[0].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper+GridReader;false;Read<TReturn>;(System.Type[],System.Func<System.Object[],TReturn>,System.String,System.Boolean);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | -| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;ReturnValue.Element;taint;manual | +| Dapper;SqlMapper;false;AsList<T>;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;ReturnValue.Element;value;manual | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | | Dapper;SqlMapper;false;Query<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>;(System.Data.IDbConnection,System.String,System.Func<TFirst,TSecond,TThird,TFourth,TFifth,TSixth,TReturn>,System.Object,System.Data.IDbTransaction,System.Boolean,System.String,System.Nullable<System.Int32>,System.Nullable<System.Data.CommandType>);;Argument[2];Argument[2].Parameter[delegate-self];value;hq-generated | From 63e34c4dece68d49f10cdf6ccb8113d4afe5d80f Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Fri, 22 Mar 2024 14:08:48 +0000 Subject: [PATCH 490/731] Kotlin 2: Accept more location changes --- .../library-tests/exprs/exprs.expected | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 63adc378aeb1..2901a7182de4 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -1383,16 +1383,16 @@ | exprs.kt:138:9:138:18 | ...=... | exprs.kt:4:1:142:1 | topLevelMethod | AssignExpr | | exprs.kt:138:9:138:18 | <Stmt> | exprs.kt:4:1:142:1 | topLevelMethod | StmtExpr | | exprs.kt:138:9:138:18 | <implicit coercion to unit> | exprs.kt:4:1:142:1 | topLevelMethod | ImplicitCoercionToUnitExpr | +| exprs.kt:138:9:138:18 | <unary> | exprs.kt:4:1:142:1 | topLevelMethod | LocalVariableDeclExpr | +| exprs.kt:138:9:138:18 | <unary> | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | +| exprs.kt:138:9:138:18 | <unary> | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | | exprs.kt:138:9:138:18 | Unit | exprs.kt:4:1:142:1 | topLevelMethod | TypeAccess | | exprs.kt:138:9:138:18 | dec(...) | exprs.kt:4:1:142:1 | topLevelMethod | MethodCall | -| exprs.kt:138:9:138:18 | tmp0 | exprs.kt:4:1:142:1 | topLevelMethod | LocalVariableDeclExpr | -| exprs.kt:138:9:138:18 | tmp0 | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | -| exprs.kt:138:9:138:18 | tmp0 | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | | exprs.kt:141:12:141:14 | 123 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral | | exprs.kt:141:12:141:20 | ... + ... | exprs.kt:4:1:142:1 | topLevelMethod | AddExpr | | exprs.kt:141:18:141:20 | 456 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral | | exprs.kt:144:1:146:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:145:9:145:9 | d | exprs.kt:144:1:146:1 | getClass | LocalVariableDeclExpr | +| exprs.kt:145:5:145:23 | d | exprs.kt:144:1:146:1 | getClass | LocalVariableDeclExpr | | exprs.kt:145:13:145:16 | true | exprs.kt:144:1:146:1 | getClass | BooleanLiteral | | exprs.kt:145:13:145:23 | ::class | exprs.kt:144:1:146:1 | getClass | ClassExpr | | exprs.kt:148:9:148:18 | ...=... | exprs.kt:148:8:148:19 | C | KtInitializerAssignExpr | @@ -1419,7 +1419,6 @@ | exprs.kt:158:29:158:29 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | | exprs.kt:158:29:158:29 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:160:5:160:60 | y1 | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | -| exprs.kt:160:25:160:60 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral | | exprs.kt:160:25:160:60 | when ... | exprs.kt:156:1:163:1 | typeTests | WhenExpr | | exprs.kt:160:29:160:29 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:160:29:160:42 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr | @@ -1428,6 +1427,7 @@ | exprs.kt:160:47:160:47 | <implicit cast> | exprs.kt:156:1:163:1 | typeTests | ImplicitCastExpr | | exprs.kt:160:47:160:47 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | | exprs.kt:160:47:160:47 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | +| exprs.kt:160:56:160:60 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral | | exprs.kt:160:58:160:58 | y | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:161:5:161:13 | q | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | | exprs.kt:161:13:161:13 | 1 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | @@ -1436,11 +1436,11 @@ | exprs.kt:162:9:162:9 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:9:162:22 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr | | exprs.kt:162:9:162:22 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | -| exprs.kt:162:27:162:31 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:27:162:31 | ...=... | exprs.kt:156:1:163:1 | typeTests | AssignExpr | +| exprs.kt:162:27:162:31 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:31:162:31 | 2 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | -| exprs.kt:162:42:162:42 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:42:162:46 | ...=... | exprs.kt:156:1:163:1 | typeTests | AssignExpr | +| exprs.kt:162:42:162:42 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:46:162:46 | 3 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | | exprs.kt:165:1:172:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:165:9:165:18 | Polygon | file://:0:0:0:0 | <none> | TypeAccess | @@ -1459,8 +1459,8 @@ | exprs.kt:169:22:169:23 | r2 | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:169:25:169:30 | r2.height | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:170:9:170:10 | r2 | exprs.kt:165:1:172:1 | foo | VarAccess | -| exprs.kt:170:12:170:21 | r2.height | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:170:12:170:21 | ...=... | exprs.kt:165:1:172:1 | foo | AssignExpr | +| exprs.kt:170:12:170:21 | r2.height | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:170:21:170:21 | 3 | exprs.kt:165:1:172:1 | foo | IntegerLiteral | | exprs.kt:174:1:176:1 | 0 | exprs.kt:174:1:176:1 | Direction | IntegerLiteral | | exprs.kt:174:1:176:1 | Direction | exprs.kt:174:1:176:1 | Direction | TypeAccess | @@ -1508,33 +1508,33 @@ | exprs.kt:178:1:182:1 | String | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:1:182:1 | new Enum(...) | exprs.kt:178:6:182:1 | Color | ClassInstanceExpr | | exprs.kt:178:1:182:1 | null | exprs.kt:178:6:182:1 | Color | NullLiteral | -| exprs.kt:178:18:178:29 | ...=... | exprs.kt:178:6:182:1 | Color | KtInitializerAssignExpr | +| exprs.kt:178:18:178:29 | ...=... | exprs.kt:178:17:178:30 | Color | KtInitializerAssignExpr | | exprs.kt:178:18:178:29 | int | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:18:178:29 | int | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:18:178:29 | int | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:178:18:178:29 | rgb | exprs.kt:178:6:182:1 | Color | VarAccess | -| exprs.kt:178:18:178:29 | rgb | exprs.kt:178:6:182:1 | Color | VarAccess | +| exprs.kt:178:18:178:29 | rgb | exprs.kt:178:17:178:30 | Color | VarAccess | +| exprs.kt:178:18:178:29 | rgb | exprs.kt:178:17:178:30 | Color | VarAccess | | exprs.kt:178:18:178:29 | this | exprs.kt:178:18:178:29 | getRgb | ThisAccess | | exprs.kt:178:18:178:29 | this.rgb | exprs.kt:178:18:178:29 | getRgb | VarAccess | | exprs.kt:179:5:179:18 | ...=... | exprs.kt:0:0:0:0 | <clinit> | KtInitializerAssignExpr | | exprs.kt:179:5:179:18 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | -| exprs.kt:179:5:179:18 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | | exprs.kt:179:5:179:18 | Color | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:179:5:179:18 | Color.RED | exprs.kt:0:0:0:0 | <clinit> | VarAccess | +| exprs.kt:179:8:179:17 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | | exprs.kt:179:8:179:17 | new Color(...) | exprs.kt:0:0:0:0 | <clinit> | ClassInstanceExpr | | exprs.kt:179:9:179:16 | 16711680 | exprs.kt:0:0:0:0 | <clinit> | IntegerLiteral | | exprs.kt:180:5:180:20 | ...=... | exprs.kt:0:0:0:0 | <clinit> | KtInitializerAssignExpr | | exprs.kt:180:5:180:20 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | -| exprs.kt:180:5:180:20 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | | exprs.kt:180:5:180:20 | Color | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:180:5:180:20 | Color.GREEN | exprs.kt:0:0:0:0 | <clinit> | VarAccess | +| exprs.kt:180:10:180:19 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | | exprs.kt:180:10:180:19 | new Color(...) | exprs.kt:0:0:0:0 | <clinit> | ClassInstanceExpr | | exprs.kt:180:11:180:18 | 65280 | exprs.kt:0:0:0:0 | <clinit> | IntegerLiteral | | exprs.kt:181:5:181:18 | ...=... | exprs.kt:0:0:0:0 | <clinit> | KtInitializerAssignExpr | | exprs.kt:181:5:181:18 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | -| exprs.kt:181:5:181:18 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | | exprs.kt:181:5:181:18 | Color | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:181:5:181:18 | Color.BLUE | exprs.kt:0:0:0:0 | <clinit> | VarAccess | +| exprs.kt:181:9:181:18 | Color | exprs.kt:0:0:0:0 | <clinit> | TypeAccess | | exprs.kt:181:9:181:18 | new Color(...) | exprs.kt:0:0:0:0 | <clinit> | ClassInstanceExpr | | exprs.kt:181:10:181:17 | 255 | exprs.kt:0:0:0:0 | <clinit> | IntegerLiteral | | exprs.kt:184:1:187:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess | @@ -1551,12 +1551,12 @@ | exprs.kt:192:5:192:14 | this | exprs.kt:192:5:192:14 | getA1 | ThisAccess | | exprs.kt:192:5:192:14 | this.a1 | exprs.kt:192:5:192:14 | getA1 | VarAccess | | exprs.kt:192:14:192:14 | 1 | exprs.kt:191:1:199:1 | Class1 | IntegerLiteral | -| exprs.kt:193:13:198:5 | Object | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:194:13:194:14 | a2 | exprs.kt:193:13:198:5 | getObject | LocalVariableDeclExpr | -| exprs.kt:194:18:194:18 | 2 | exprs.kt:193:13:198:5 | getObject | IntegerLiteral | -| exprs.kt:195:16:197:9 | <Stmt> | exprs.kt:193:13:198:5 | getObject | StmtExpr | -| exprs.kt:195:16:197:9 | Interface1 | exprs.kt:193:13:198:5 | getObject | TypeAccess | -| exprs.kt:195:16:197:9 | new (...) | exprs.kt:193:13:198:5 | getObject | ClassInstanceExpr | +| exprs.kt:193:5:198:5 | Object | file://:0:0:0:0 | <none> | TypeAccess | +| exprs.kt:194:9:194:18 | a2 | exprs.kt:193:5:198:5 | getObject | LocalVariableDeclExpr | +| exprs.kt:194:18:194:18 | 2 | exprs.kt:193:5:198:5 | getObject | IntegerLiteral | +| exprs.kt:195:16:197:9 | <Stmt> | exprs.kt:193:5:198:5 | getObject | StmtExpr | +| exprs.kt:195:16:197:9 | Interface1 | exprs.kt:193:5:198:5 | getObject | TypeAccess | +| exprs.kt:195:16:197:9 | new (...) | exprs.kt:193:5:198:5 | getObject | ClassInstanceExpr | | exprs.kt:196:13:196:49 | ...=... | exprs.kt:195:16:197:9 | | KtInitializerAssignExpr | | exprs.kt:196:13:196:49 | String | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:196:13:196:49 | String | file://:0:0:0:0 | <none> | TypeAccess | @@ -1570,47 +1570,47 @@ | exprs.kt:196:36:196:37 | a2 | exprs.kt:195:16:197:9 | | VarAccess | | exprs.kt:201:1:203:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:201:22:201:28 | Object | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:202:9:202:9 | y | exprs.kt:201:1:203:1 | notNullAssertion | LocalVariableDeclExpr | +| exprs.kt:202:5:202:20 | y | exprs.kt:201:1:203:1 | notNullAssertion | LocalVariableDeclExpr | | exprs.kt:202:18:202:18 | x | exprs.kt:201:1:203:1 | notNullAssertion | VarAccess | -| exprs.kt:202:19:202:20 | ...!! | exprs.kt:201:1:203:1 | notNullAssertion | NotNullExpr | +| exprs.kt:202:18:202:20 | ...!! | exprs.kt:201:1:203:1 | notNullAssertion | NotNullExpr | | exprs.kt:206:5:217:5 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:206:11:206:18 | Object | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:206:21:206:30 | String | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:208:13:208:13 | a | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:208:9:208:29 | a | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:208:17:208:18 | aa | exprs.kt:206:5:217:5 | x | VarAccess | | exprs.kt:208:17:208:29 | String | exprs.kt:206:5:217:5 | x | TypeAccess | | exprs.kt:208:17:208:29 | valueOf(...) | exprs.kt:206:5:217:5 | x | MethodCall | -| exprs.kt:209:13:209:14 | b0 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:209:9:209:27 | b0 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:209:19:209:19 | s | exprs.kt:206:5:217:5 | x | VarAccess | | exprs.kt:209:19:209:27 | Intrinsics | exprs.kt:206:5:217:5 | x | TypeAccess | | exprs.kt:209:19:209:27 | stringPlus(...) | exprs.kt:206:5:217:5 | x | MethodCall | | exprs.kt:209:26:209:26 | 5 | exprs.kt:206:5:217:5 | x | IntegerLiteral | -| exprs.kt:210:13:210:14 | b1 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:210:9:210:23 | b1 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:210:19:210:19 | s | exprs.kt:206:5:217:5 | x | VarAccess | | exprs.kt:210:19:210:23 | Intrinsics | exprs.kt:206:5:217:5 | x | TypeAccess | | exprs.kt:210:19:210:23 | stringPlus(...) | exprs.kt:206:5:217:5 | x | MethodCall | | exprs.kt:210:23:210:23 | 5 | exprs.kt:206:5:217:5 | x | IntegerLiteral | -| exprs.kt:211:13:211:14 | b2 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:211:9:211:29 | b2 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:211:19:211:19 | s | exprs.kt:206:5:217:5 | x | VarAccess | -| exprs.kt:211:20:211:21 | ...!! | exprs.kt:206:5:217:5 | x | NotNullExpr | -| exprs.kt:211:20:211:29 | ... + ... | exprs.kt:206:5:217:5 | x | AddExpr | +| exprs.kt:211:19:211:21 | ...!! | exprs.kt:206:5:217:5 | x | NotNullExpr | +| exprs.kt:211:19:211:29 | ... + ... | exprs.kt:206:5:217:5 | x | AddExpr | | exprs.kt:211:28:211:28 | 5 | exprs.kt:206:5:217:5 | x | IntegerLiteral | -| exprs.kt:212:13:212:14 | b3 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:212:9:212:25 | b3 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:212:19:212:19 | s | exprs.kt:206:5:217:5 | x | VarAccess | +| exprs.kt:212:19:212:21 | ...!! | exprs.kt:206:5:217:5 | x | NotNullExpr | | exprs.kt:212:19:212:25 | ... + ... | exprs.kt:206:5:217:5 | x | AddExpr | -| exprs.kt:212:20:212:21 | ...!! | exprs.kt:206:5:217:5 | x | NotNullExpr | | exprs.kt:212:25:212:25 | 5 | exprs.kt:206:5:217:5 | x | IntegerLiteral | -| exprs.kt:213:13:213:14 | c0 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:213:9:213:36 | c0 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:213:18:213:36 | Color | exprs.kt:206:5:217:5 | x | TypeAccess | | exprs.kt:213:18:213:36 | values(...) | exprs.kt:206:5:217:5 | x | MethodCall | -| exprs.kt:214:13:214:14 | c1 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:214:9:214:31 | c1 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:214:24:214:31 | Color | exprs.kt:206:5:217:5 | x | TypeAccess | | exprs.kt:214:24:214:31 | values(...) | exprs.kt:206:5:217:5 | x | MethodCall | -| exprs.kt:215:13:215:14 | d0 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:215:9:215:44 | d0 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:215:18:215:44 | Color | exprs.kt:206:5:217:5 | x | TypeAccess | | exprs.kt:215:18:215:44 | valueOf(...) | exprs.kt:206:5:217:5 | x | MethodCall | | exprs.kt:215:37:215:43 | "GREEN" | exprs.kt:206:5:217:5 | x | StringLiteral | -| exprs.kt:216:13:216:14 | d1 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | +| exprs.kt:216:9:216:39 | d1 | exprs.kt:206:5:217:5 | x | LocalVariableDeclExpr | | exprs.kt:216:24:216:39 | Color | exprs.kt:206:5:217:5 | x | TypeAccess | | exprs.kt:216:24:216:39 | valueOf(...) | exprs.kt:206:5:217:5 | x | MethodCall | | exprs.kt:216:32:216:38 | "GREEN" | exprs.kt:206:5:217:5 | x | StringLiteral | @@ -1740,7 +1740,7 @@ | exprs.kt:263:11:263:17 | ... * ... | exprs.kt:252:1:265:1 | mulOperators | MulExpr | | exprs.kt:263:16:263:17 | fy | exprs.kt:252:1:265:1 | mulOperators | VarAccess | | exprs.kt:267:1:276:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:269:7:269:13 | updated | exprs.kt:267:1:276:1 | inPlaceOperators | LocalVariableDeclExpr | +| exprs.kt:269:3:269:17 | updated | exprs.kt:267:1:276:1 | inPlaceOperators | LocalVariableDeclExpr | | exprs.kt:269:17:269:17 | 0 | exprs.kt:267:1:276:1 | inPlaceOperators | IntegerLiteral | | exprs.kt:270:3:270:9 | updated | exprs.kt:267:1:276:1 | inPlaceOperators | VarAccess | | exprs.kt:270:3:270:14 | ...+=... | exprs.kt:267:1:276:1 | inPlaceOperators | AssignAddExpr | From 453cdfa513a4e7a74f20afefe8c73103217eed2b Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Fri, 22 Mar 2024 15:51:42 +0100 Subject: [PATCH 491/731] C++: Add change note --- cpp/ql/src/change-notes/2024-03-22-boost-ssl.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/src/change-notes/2024-03-22-boost-ssl.md diff --git a/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md b/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md new file mode 100644 index 000000000000..d4a4e0a73073 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. From 034ed1722781b0bd219855af192a793d48077d1c Mon Sep 17 00:00:00 2001 From: Max Schaefer <54907921+max-schaefer@users.noreply.github.com> Date: Fri, 22 Mar 2024 15:24:29 +0000 Subject: [PATCH 492/731] Apply suggestions from code review Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- go/ql/src/Security/CWE-022/TaintedPath.qhelp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go/ql/src/Security/CWE-022/TaintedPath.qhelp b/go/ql/src/Security/CWE-022/TaintedPath.qhelp index 3b54e80cd97c..94edec4e4f4b 100644 --- a/go/ql/src/Security/CWE-022/TaintedPath.qhelp +++ b/go/ql/src/Security/CWE-022/TaintedPath.qhelp @@ -64,9 +64,9 @@ path separators or ".." sequences. Note that this approach is only suitable if the input is expected to be a single file name. </p> <p> -If the input can be a path with multiple components, we can make it safe by verifying +If the input can be a path with multiple components, you can make it safe by verifying that the path is within a specific directory that is considered safe. -This can be done by resolving the input with respect to that directory, and then checking +You can do this by resolving the input with respect to that directory, and then checking that the resulting path is still within it. </p> <sample src="TaintedPathGood2.go" /> From c653f1ce8c1fa8aefaa789d5d2fa4ce8b623b533 Mon Sep 17 00:00:00 2001 From: Florin Coada <coadaflorin@github.com> Date: Fri, 22 Mar 2024 15:28:54 +0000 Subject: [PATCH 493/731] Add CodeQL 2.16.5 changelog --- .../codeql-changelog/codeql-cli-2.16.5.rst | 25 +++++++++++++++++++ .../codeql-changelog/index.rst | 1 + 2 files changed, 26 insertions(+) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.5.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.5.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.5.rst new file mode 100644 index 000000000000..cb602e126d1b --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.5.rst @@ -0,0 +1,25 @@ +.. _codeql-cli-2.16.5: + +========================== +CodeQL 2.16.5 (2024-03-21) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog <https://github.blog/tag/code-scanning/>`__, `relevant GitHub Changelog updates <https://github.blog/changelog/label/code-scanning/>`__, `changes in the CodeQL extension for Visual Studio Code <https://marketplace.visualstudio.com/items/GitHub.vscode-codeql/changelog>`__, and the `CodeQL Action changelog <https://github.com/github/codeql-action/blob/main/CHANGELOG.md>`__. + +Security Coverage +----------------- + +CodeQL 2.16.5 runs a total of 409 security queries when configured with the Default suite (covering 160 CWE). The Extended suite enables an additional 132 queries (covering 34 more CWE). + +CodeQL CLI +---------- + +New Features +~~~~~~~~~~~~ + +* Beta support has been added for analyzing Java codebases without needing a working build. To enable this, pass the :code:`--build-mode none` option to :code:`codeql database create`. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index edec857c7407..5015699e2faf 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here <https://docs.g .. toctree:: :maxdepth: 1 + codeql-cli-2.16.5 codeql-cli-2.16.4 codeql-cli-2.16.3 codeql-cli-2.16.2 From c60cec36d4399c9a3ab0c3a1a9d1e7d2930593bb Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Fri, 22 Mar 2024 17:46:39 +0100 Subject: [PATCH 494/731] add calls to `.html_safe?` as a shared XSS sanitizer --- ruby/ql/lib/codeql/ruby/security/XSS.qll | 13 +++++++++++++ .../cwe-079/UnsafeHtmlConstruction.expected | 4 ++++ .../query-tests/security/cwe-079/lib/unsafeHtml.rb | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/ruby/ql/lib/codeql/ruby/security/XSS.qll b/ruby/ql/lib/codeql/ruby/security/XSS.qll index e5cf48bd0ef0..e8d50aabc1e7 100644 --- a/ruby/ql/lib/codeql/ruby/security/XSS.qll +++ b/ruby/ql/lib/codeql/ruby/security/XSS.qll @@ -248,6 +248,19 @@ private module Shared { or isFlowFromHelperMethod(node1, node2) } + + private predicate htmlSafeGuard(CfgNodes::AstCfgNode guard, CfgNode testedNode, boolean branch) { + exists(DataFlow::CallNode html_safe_call | html_safe_call.getMethodName() = "html_safe?" | + guard = html_safe_call.asExpr() and + testedNode = html_safe_call.getReceiver().asExpr() and + branch = true + ) + } + + /** A guard that calls `.html_safe?` to check whether the string is already HTML-safe. */ + private class HtmlSafeGuard extends Sanitizer { + HtmlSafeGuard() { this = DataFlow::BarrierGuard<htmlSafeGuard/3>::getABarrierNode() } + } } /** diff --git a/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected b/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected index b9019c8f1d04..599f29e806c9 100644 --- a/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected +++ b/ruby/ql/test/query-tests/security/cwe-079/UnsafeHtmlConstruction.expected @@ -2,6 +2,7 @@ edges | lib/unsafeHtml.rb:2:31:2:34 | name | lib/unsafeHtml.rb:3:10:3:16 | #{...} | provenance | | | lib/unsafeHtml.rb:9:27:9:30 | name | lib/unsafeHtml.rb:11:13:11:19 | #{...} | provenance | | | lib/unsafeHtml.rb:16:19:16:22 | name | lib/unsafeHtml.rb:17:28:17:31 | name | provenance | | +| lib/unsafeHtml.rb:23:32:23:35 | name | lib/unsafeHtml.rb:24:10:24:16 | #{...} | provenance | | nodes | lib/unsafeHtml.rb:2:31:2:34 | name | semmle.label | name | | lib/unsafeHtml.rb:3:10:3:16 | #{...} | semmle.label | #{...} | @@ -9,8 +10,11 @@ nodes | lib/unsafeHtml.rb:11:13:11:19 | #{...} | semmle.label | #{...} | | lib/unsafeHtml.rb:16:19:16:22 | name | semmle.label | name | | lib/unsafeHtml.rb:17:28:17:31 | name | semmle.label | name | +| lib/unsafeHtml.rb:23:32:23:35 | name | semmle.label | name | +| lib/unsafeHtml.rb:24:10:24:16 | #{...} | semmle.label | #{...} | subpaths #select | lib/unsafeHtml.rb:3:10:3:16 | #{...} | lib/unsafeHtml.rb:2:31:2:34 | name | lib/unsafeHtml.rb:3:10:3:16 | #{...} | This string interpolation which depends on $@ might later allow $@. | lib/unsafeHtml.rb:2:31:2:34 | name | library input | lib/unsafeHtml.rb:3:5:3:22 | "<h2>#{...}</h2>" | cross-site scripting | | lib/unsafeHtml.rb:11:13:11:19 | #{...} | lib/unsafeHtml.rb:9:27:9:30 | name | lib/unsafeHtml.rb:11:13:11:19 | #{...} | This string interpolation which depends on $@ might later allow $@. | lib/unsafeHtml.rb:9:27:9:30 | name | library input | lib/unsafeHtml.rb:13:5:13:5 | h | cross-site scripting | | lib/unsafeHtml.rb:17:28:17:31 | name | lib/unsafeHtml.rb:16:19:16:22 | name | lib/unsafeHtml.rb:17:28:17:31 | name | This string format which depends on $@ might later allow $@. | lib/unsafeHtml.rb:16:19:16:22 | name | library input | lib/unsafeHtml.rb:17:5:17:32 | call to sprintf | cross-site scripting | +| lib/unsafeHtml.rb:24:10:24:16 | #{...} | lib/unsafeHtml.rb:23:32:23:35 | name | lib/unsafeHtml.rb:24:10:24:16 | #{...} | This string interpolation which depends on $@ might later allow $@. | lib/unsafeHtml.rb:23:32:23:35 | name | library input | lib/unsafeHtml.rb:24:5:24:22 | "<h2>#{...}</h2>" | cross-site scripting | diff --git a/ruby/ql/test/query-tests/security/cwe-079/lib/unsafeHtml.rb b/ruby/ql/test/query-tests/security/cwe-079/lib/unsafeHtml.rb index d52932adedb8..3f92d5938b1c 100644 --- a/ruby/ql/test/query-tests/security/cwe-079/lib/unsafeHtml.rb +++ b/ruby/ql/test/query-tests/security/cwe-079/lib/unsafeHtml.rb @@ -19,4 +19,12 @@ def sprintf_use name # escape sprintf("<h2>%s</h2>", ERB::Util.html_escape(name)).html_safe # OK - the parameter is escaped end + + def create_user_description2(name) + "<h2>#{name}</h2>".html_safe # NOT OK - the value is not necessarily HTML safe + + if name.html_safe? + "<h2>#{name}</h2>".html_safe # OK - value is marked as being HTML safe + end + end end From 051120e9589de9fde6260c05313d2f5728e1a4ad Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Fri, 22 Mar 2024 17:58:17 +0100 Subject: [PATCH 495/731] add qldoc for `ReflectedXssSanitizers` --- .../ruby/security/UnsafeHtmlConstructionCustomizations.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll b/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll index a241fb8ce4fd..6fd15647ee30 100644 --- a/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll +++ b/ruby/ql/lib/codeql/ruby/security/UnsafeHtmlConstructionCustomizations.qll @@ -38,8 +38,8 @@ module UnsafeHtmlConstruction { /** A sanitizer for HTML constructed from library input vulnerabilities. */ abstract class Sanitizer extends DataFlow::Node { } - // inherit all the sanitizers from ReflectedXss - class ReflectedXssSanitizers extends Sanitizer instanceof ReflectedXss::Sanitizer { } + /** A sanitizer from the reflected-xss query, which is also a sanitizer for unsafe HTML construction. */ + private class ReflectedXssSanitizers extends Sanitizer instanceof ReflectedXss::Sanitizer { } /** Gets a node that eventually ends up in the XSS `sink`. */ private DataFlow::Node getANodeThatEndsInXssSink(ReflectedXss::Sink sink) { From 63a04c056a43ac92e453d1e89a20428e23b8d0b8 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 23 Mar 2024 21:30:33 +0000 Subject: [PATCH 496/731] Add test with `tokenImage` as used in JavaCC --- .../CWE-532/TokenSequenceParserTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java diff --git a/java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java b/java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java new file mode 100644 index 000000000000..89814865a9ff --- /dev/null +++ b/java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java @@ -0,0 +1,17 @@ +import org.apache.logging.log4j.Logger; + +interface TokenSequenceParserConstants { + /** Literal token values. */ + String[] tokenImage = { + "<EOF>", + }; +} + +public class TokenSequenceParserTest implements TokenSequenceParserConstants { + void test(String password) { + Logger logger = null; + + logger.info("When parsing found this: " + tokenImage[0]); // Safe + } + +} From 4832dc51edfd122cf82eb424b1b8c4e543f63171 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 23 Mar 2024 21:33:02 +0000 Subject: [PATCH 497/731] Whitelist variable name `tokenImage` --- .../ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index c599756a81c8..70ef0b394053 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -12,7 +12,8 @@ class VariableWithSensitiveName extends Variable { VariableWithSensitiveName() { exists(string name | name = this.getName() | name.regexpMatch(getCommonSensitiveInfoRegex()) and - not name.regexpMatch("(?i).*null.*") + not name.regexpMatch("(?i).*null.*") and + not name.matches("tokenImage") // appears in parser code generated by JavaCC ) } } From f4b3bae88b51eff81e2f58ccbbf3b3e6fd2f0e2c Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 23 Mar 2024 23:48:16 +0000 Subject: [PATCH 498/731] Add test for ParseException use of `tokenImage` --- .../security/CWE-532/TokenSequenceParserTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java b/java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java index 89814865a9ff..0a24c32f26ab 100644 --- a/java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java +++ b/java/ql/test/query-tests/security/CWE-532/TokenSequenceParserTest.java @@ -15,3 +15,13 @@ void test(String password) { } } + +class ParseExceptionTest extends Exception { + String[] tokenImage; + + void test() { + Logger logger = null; + + logger.info("When parsing found this: " + tokenImage[0]); // Safe + } +} From 821f3991930c4d3566a48310093db870ed0e821d Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 23 Mar 2024 23:51:52 +0000 Subject: [PATCH 499/731] Add change note --- .../2024-03-24-sensitive-log-whitelist-tokenimage.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md diff --git a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md new file mode 100644 index 000000000000..d62c2dfbb47b --- /dev/null +++ b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a larger number of false positive alerts. From d8686e02a8499cc24e51eec383d0a30c3be4018c Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Sun, 24 Mar 2024 17:56:40 +0000 Subject: [PATCH 500/731] Update test expectations --- .../buildless-erroneous/diagnostics.expected | 18 +++++----- .../buildless-gradle/diagnostics.expected | 24 ++++++------- .../diagnostics.expected | 24 ++++++------- .../java/buildless-maven/diagnostics.expected | 24 ++++++------- .../diagnostics.expected | 36 +++++++++---------- .../java/buildless/diagnostics.expected | 18 +++++----- 6 files changed, 72 insertions(+), 72 deletions(-) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected index 03978511bb75..90aa56bf3f6d 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-erroneous/diagnostics.expected @@ -4,7 +4,7 @@ "source": { "extractorName": "java", "id": "java/autobuilder/buildless/no-build-tool-advice", - "name": "Java buildless mode found no usable build tool" + "name": "Java analysis found no usable build tool" }, "visibility": { "cliSummaryTable": true, @@ -13,12 +13,12 @@ } } { - "markdownMessage": "Java buildless extraction has completed.", + "markdownMessage": "Java analysis used the system default JDK.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/complete", - "name": "Java buildless extraction completed" + "id": "java/autobuilder/buildless/jdk-system-default", + "name": "Java analysis used the system default JDK" }, "visibility": { "cliSummaryTable": true, @@ -27,12 +27,12 @@ } } { - "markdownMessage": "Java buildless mode used the system default JDK.", + "markdownMessage": "Java analysis with build-mode 'none' completed.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/jdk-system-default", - "name": "Java buildless mode used the system default JDK" + "id": "java/autobuilder/buildless/complete", + "name": "Java analysis with build-mode 'none' completed" }, "visibility": { "cliSummaryTable": true, @@ -41,12 +41,12 @@ } } { - "markdownMessage": "Java was extracted in buildless mode. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", + "markdownMessage": "Java was extracted with build-mode set to 'none'. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", "severity": "note", "source": { "extractorName": "java", "id": "java/autobuilder/buildless/mode-active", - "name": "Java was extracted in buildless mode" + "name": "Java was extracted with build-mode set to 'none'" }, "visibility": { "cliSummaryTable": true, diff --git a/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected index 5d8a00c5578b..337fa9338081 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-gradle/diagnostics.expected @@ -1,10 +1,10 @@ { - "markdownMessage": "Java buildless extraction has completed.", + "markdownMessage": "Java analysis used build tool Gradle to pick a JDK version and/or to recommend external dependencies.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/complete", - "name": "Java buildless extraction completed" + "id": "java/autobuilder/buildless/using-build-tool-advice", + "name": "Java analysis used build tool Gradle to pick a JDK version and/or to recommend external dependencies" }, "visibility": { "cliSummaryTable": true, @@ -13,12 +13,12 @@ } } { - "markdownMessage": "Java buildless mode used build tool Gradle to pick a JDK version and/or to recommend external dependencies.", + "markdownMessage": "Java analysis used the system default JDK.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/using-build-tool-advice", - "name": "Java buildless mode used build tool Gradle to pick a JDK version and/or to recommend external dependencies" + "id": "java/autobuilder/buildless/jdk-system-default", + "name": "Java analysis used the system default JDK" }, "visibility": { "cliSummaryTable": true, @@ -27,12 +27,12 @@ } } { - "markdownMessage": "Java buildless mode used the system default JDK.", + "markdownMessage": "Java analysis with build-mode 'none' completed.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/jdk-system-default", - "name": "Java buildless mode used the system default JDK" + "id": "java/autobuilder/buildless/complete", + "name": "Java analysis with build-mode 'none' completed" }, "visibility": { "cliSummaryTable": true, @@ -41,12 +41,12 @@ } } { - "markdownMessage": "Java was extracted in buildless mode. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", + "markdownMessage": "Java was extracted with build-mode set to 'none'. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", "severity": "note", "source": { "extractorName": "java", "id": "java/autobuilder/buildless/mode-active", - "name": "Java was extracted in buildless mode" + "name": "Java was extracted with build-mode set to 'none'" }, "visibility": { "cliSummaryTable": true, @@ -60,7 +60,7 @@ "source": { "extractorName": "java", "id": "java/autobuilder/buildless/depgraph-provided-by-gradle", - "name": "Java buildless mode extracted precise dependency graph information from tool Gradle" + "name": "Java analysis extracted precise dependency graph information from tool Gradle" }, "visibility": { "cliSummaryTable": true, diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected index 77e259ae537a..1058e1528f99 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/diagnostics.expected @@ -1,10 +1,10 @@ { - "markdownMessage": "Java buildless extraction has completed.", + "markdownMessage": "Java analysis used build tool Maven to pick a JDK version and/or to recommend external dependencies.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/complete", - "name": "Java buildless extraction completed" + "id": "java/autobuilder/buildless/using-build-tool-advice", + "name": "Java analysis used build tool Maven to pick a JDK version and/or to recommend external dependencies" }, "visibility": { "cliSummaryTable": true, @@ -13,12 +13,12 @@ } } { - "markdownMessage": "Java buildless mode used build tool Maven to pick a JDK version and/or to recommend external dependencies.", + "markdownMessage": "Java analysis used the system default JDK.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/using-build-tool-advice", - "name": "Java buildless mode used build tool Maven to pick a JDK version and/or to recommend external dependencies" + "id": "java/autobuilder/buildless/jdk-system-default", + "name": "Java analysis used the system default JDK" }, "visibility": { "cliSummaryTable": true, @@ -27,12 +27,12 @@ } } { - "markdownMessage": "Java buildless mode used the system default JDK.", + "markdownMessage": "Java analysis with build-mode 'none' completed.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/jdk-system-default", - "name": "Java buildless mode used the system default JDK" + "id": "java/autobuilder/buildless/complete", + "name": "Java analysis with build-mode 'none' completed" }, "visibility": { "cliSummaryTable": true, @@ -41,12 +41,12 @@ } } { - "markdownMessage": "Java was extracted in buildless mode. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", + "markdownMessage": "Java was extracted with build-mode set to 'none'. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", "severity": "note", "source": { "extractorName": "java", "id": "java/autobuilder/buildless/mode-active", - "name": "Java was extracted in buildless mode" + "name": "Java was extracted with build-mode set to 'none'" }, "visibility": { "cliSummaryTable": true, @@ -60,7 +60,7 @@ "source": { "extractorName": "java", "id": "java/autobuilder/buildless/depgraph-provided-by-maven", - "name": "Java buildless mode extracted precise dependency graph information from tool Maven" + "name": "Java analysis extracted precise dependency graph information from tool Maven" }, "visibility": { "cliSummaryTable": true, diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected index 0228a1165a90..f3c89bb842a0 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven/diagnostics.expected @@ -1,10 +1,10 @@ { - "markdownMessage": "Java buildless extraction has completed.", + "markdownMessage": "Java analysis used build tool Maven to pick a JDK version and/or to recommend external dependencies.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/complete", - "name": "Java buildless extraction completed" + "id": "java/autobuilder/buildless/using-build-tool-advice", + "name": "Java analysis used build tool Maven to pick a JDK version and/or to recommend external dependencies" }, "visibility": { "cliSummaryTable": true, @@ -13,12 +13,12 @@ } } { - "markdownMessage": "Java buildless mode used build tool Maven to pick a JDK version and/or to recommend external dependencies.", + "markdownMessage": "Java analysis used the system default JDK.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/using-build-tool-advice", - "name": "Java buildless mode used build tool Maven to pick a JDK version and/or to recommend external dependencies" + "id": "java/autobuilder/buildless/jdk-system-default", + "name": "Java analysis used the system default JDK" }, "visibility": { "cliSummaryTable": true, @@ -27,12 +27,12 @@ } } { - "markdownMessage": "Java buildless mode used the system default JDK.", + "markdownMessage": "Java analysis with build-mode 'none' completed.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/jdk-system-default", - "name": "Java buildless mode used the system default JDK" + "id": "java/autobuilder/buildless/complete", + "name": "Java analysis with build-mode 'none' completed" }, "visibility": { "cliSummaryTable": true, @@ -41,12 +41,12 @@ } } { - "markdownMessage": "Java was extracted in buildless mode. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", + "markdownMessage": "Java was extracted with build-mode set to 'none'. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", "severity": "note", "source": { "extractorName": "java", "id": "java/autobuilder/buildless/mode-active", - "name": "Java was extracted in buildless mode" + "name": "Java was extracted with build-mode set to 'none'" }, "visibility": { "cliSummaryTable": true, @@ -60,7 +60,7 @@ "source": { "extractorName": "java", "id": "java/autobuilder/buildless/depgraph-provided-by-maven", - "name": "Java buildless mode extracted precise dependency graph information from tool Maven" + "name": "Java analysis extracted precise dependency graph information from tool Maven" }, "visibility": { "cliSummaryTable": true, diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected index c150b2135f3b..b3df8a700c31 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/diagnostics.expected @@ -1,10 +1,10 @@ { - "markdownMessage": "Java buildless extraction has completed.", + "markdownMessage": "Java analysis dropped the following dependencies because a sibling project depends on a higher version:\n\n* `junit/junit-4.11`", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/complete", - "name": "Java buildless extraction completed" + "id": "java/autobuilder/buildless/dependencies-disagree", + "name": "Java analysis found sibling projects that disagree about some of their direct dependency versions" }, "visibility": { "cliSummaryTable": true, @@ -13,12 +13,12 @@ } } { - "markdownMessage": "Java buildless mode dropped the following dependencies because a sibling project depends on a higher version:\n\n* `junit/junit-4.11`", + "markdownMessage": "Java analysis used JDK version 11.0.0 as recommended by build tool Gradle", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/dependencies-disagree", - "name": "Java buildless mode found sibling projects that disagree about some of their direct dependency versions" + "id": "java/autobuilder/buildless/jdk-selected", + "name": "Java analysis used JDK version 11.0.0 as recommended by build tool Gradle" }, "visibility": { "cliSummaryTable": true, @@ -27,12 +27,12 @@ } } { - "markdownMessage": "Java buildless mode used JDK version 11.0.0 as recommended by build tool Gradle", + "markdownMessage": "Java analysis used the highest recommended Java version out of:\n\n* Gradle at `<test-root-directory>/./gradle-sample` recommends version 8.0.0\n* Gradle at `<test-root-directory>/./gradle-sample2` recommends version 11.0.0", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/jdk-selected", - "name": "Java buildless mode used JDK version 11.0.0 as recommended by build tool Gradle" + "id": "java/autobuilder/buildless/jdk-version-disagree", + "name": "Java analysis found sibling projects that disagree about the needed Java version. The highest recommended version will be used" }, "visibility": { "cliSummaryTable": true, @@ -41,12 +41,12 @@ } } { - "markdownMessage": "Java buildless mode used the highest recommended Java version out of:\n\n* Gradle at `<test-root-directory>/./gradle-sample` recommends version 8.0.0\n* Gradle at `<test-root-directory>/./gradle-sample2` recommends version 11.0.0", + "markdownMessage": "Java analysis will combine recommended JDK versions and/or external dependency information from:\n\n* Gradle at `<test-root-directory>/./gradle-sample`\n* Gradle at `<test-root-directory>/./gradle-sample2`\n* Maven at `<test-root-directory>/./maven-project-1`\n* Maven at `<test-root-directory>/./maven-project-2`", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/jdk-version-disagree", - "name": "Java buildless mode found sibling projects that disagree about the needed Java version. The highest recommended version will be used" + "id": "java/autobuilder/buildless/using-build-tool-advice-multiple", + "name": "Java analysis found several sibling projects and will combine their recommended JDK versions and/or external dependency information" }, "visibility": { "cliSummaryTable": true, @@ -55,12 +55,12 @@ } } { - "markdownMessage": "Java buildless mode will combine recommended JDK versions and/or external dependency information from:\n\n* Gradle at `<test-root-directory>/./gradle-sample`\n* Gradle at `<test-root-directory>/./gradle-sample2`\n* Maven at `<test-root-directory>/./maven-project-1`\n* Maven at `<test-root-directory>/./maven-project-2`", + "markdownMessage": "Java analysis with build-mode 'none' completed.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/using-build-tool-advice-multiple", - "name": "Java buildless mode found several sibling projects and will combine their recommended JDK versions and/or external dependency information" + "id": "java/autobuilder/buildless/complete", + "name": "Java analysis with build-mode 'none' completed" }, "visibility": { "cliSummaryTable": true, @@ -69,12 +69,12 @@ } } { - "markdownMessage": "Java was extracted in buildless mode. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", + "markdownMessage": "Java was extracted with build-mode set to 'none'. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", "severity": "note", "source": { "extractorName": "java", "id": "java/autobuilder/buildless/mode-active", - "name": "Java was extracted in buildless mode" + "name": "Java was extracted with build-mode set to 'none'" }, "visibility": { "cliSummaryTable": true, @@ -88,7 +88,7 @@ "source": { "extractorName": "java", "id": "java/autobuilder/buildless/depgraph-provided-by-multiple", - "name": "Java buildless mode extracted precise dependency graph information from multiple build tools" + "name": "Java analysis extracted precise dependency graph information from multiple build tools" }, "visibility": { "cliSummaryTable": true, diff --git a/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected b/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected index 03978511bb75..90aa56bf3f6d 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless/diagnostics.expected @@ -4,7 +4,7 @@ "source": { "extractorName": "java", "id": "java/autobuilder/buildless/no-build-tool-advice", - "name": "Java buildless mode found no usable build tool" + "name": "Java analysis found no usable build tool" }, "visibility": { "cliSummaryTable": true, @@ -13,12 +13,12 @@ } } { - "markdownMessage": "Java buildless extraction has completed.", + "markdownMessage": "Java analysis used the system default JDK.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/complete", - "name": "Java buildless extraction completed" + "id": "java/autobuilder/buildless/jdk-system-default", + "name": "Java analysis used the system default JDK" }, "visibility": { "cliSummaryTable": true, @@ -27,12 +27,12 @@ } } { - "markdownMessage": "Java buildless mode used the system default JDK.", + "markdownMessage": "Java analysis with build-mode 'none' completed.", "severity": "unknown", "source": { "extractorName": "java", - "id": "java/autobuilder/buildless/jdk-system-default", - "name": "Java buildless mode used the system default JDK" + "id": "java/autobuilder/buildless/complete", + "name": "Java analysis with build-mode 'none' completed" }, "visibility": { "cliSummaryTable": true, @@ -41,12 +41,12 @@ } } { - "markdownMessage": "Java was extracted in buildless mode. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", + "markdownMessage": "Java was extracted with build-mode set to 'none'. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.", "severity": "note", "source": { "extractorName": "java", "id": "java/autobuilder/buildless/mode-active", - "name": "Java was extracted in buildless mode" + "name": "Java was extracted with build-mode set to 'none'" }, "visibility": { "cliSummaryTable": true, From ac6c4add1480fc0ec35d2bf49231f1996226b604 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Sun, 24 Mar 2024 20:11:15 +0000 Subject: [PATCH 501/731] Apply suggestions from code review Co-authored-by: Chris Smowton <smowton@github.com> --- java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll | 2 +- .../2024-03-24-sensitive-log-whitelist-tokenimage.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 70ef0b394053..d46d35ab0cc1 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -13,7 +13,7 @@ class VariableWithSensitiveName extends Variable { exists(string name | name = this.getName() | name.regexpMatch(getCommonSensitiveInfoRegex()) and not name.regexpMatch("(?i).*null.*") and - not name.matches("tokenImage") // appears in parser code generated by JavaCC + name != "tokenImage" // appears in parser code generated by JavaCC ) } } diff --git a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md index d62c2dfbb47b..017e5abd7eee 100644 --- a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md +++ b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a larger number of false positive alerts. +* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. From 0c73340e47c7541ba2c52c7f0012ced5262fe6ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 03:31:03 +0000 Subject: [PATCH 502/731] Bump regex from 1.10.3 to 1.10.4 in /ql Bumps [regex](https://github.com/rust-lang/regex) from 1.10.3 to 1.10.4. - [Release notes](https://github.com/rust-lang/regex/releases) - [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/regex/compare/1.10.3...1.10.4) --- updated-dependencies: - dependency-name: regex dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> --- ql/Cargo.lock | 4 ++-- ql/buramu/Cargo.toml | 2 +- ql/extractor/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ql/Cargo.lock b/ql/Cargo.lock index 557cf673d595..59c3f2c14d93 100644 --- a/ql/Cargo.lock +++ b/ql/Cargo.lock @@ -699,9 +699,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick 1.0.1", "memchr", diff --git a/ql/buramu/Cargo.toml b/ql/buramu/Cargo.toml index c072903b82a8..1aa57ac412e6 100644 --- a/ql/buramu/Cargo.toml +++ b/ql/buramu/Cargo.toml @@ -9,4 +9,4 @@ edition = "2018" lazy_static = "1.4.0" chrono = "0.4.35" rayon = "1.9.0" -regex = "1.10.3" +regex = "1.10.4" diff --git a/ql/extractor/Cargo.toml b/ql/extractor/Cargo.toml index bc8de165e65b..1155cc3c6981 100644 --- a/ql/extractor/Cargo.toml +++ b/ql/extractor/Cargo.toml @@ -16,5 +16,5 @@ clap = { version = "4.2", features = ["derive"] } tracing = "0.1" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } rayon = "1.9.0" -regex = "1.10.3" +regex = "1.10.4" codeql-extractor = { path = "../../shared/tree-sitter-extractor" } From 762b4ce42e2ad64a2b29401b5dea599448ae766c Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Mon, 25 Mar 2024 10:17:55 +0100 Subject: [PATCH 503/731] Swift: prepare integration tests for internal running This harmonizes Swift integration tests with the rest of the repository, to prepare for the internal integration test runner to run them. The stripped down runner is kept compatible, so that current CI can still use it now. Maybe it will be kept for developer use. This PR includes: * moving the integration tests inside `ql` * editing `qlpack.yml` so that the internal runner can use it * change database directory to be `test-db` rather than `db` --- swift/actions/run-integration-tests/action.yml | 4 ++-- swift/integration-tests/qlpack.yml | 7 ------- swift/{ => ql}/integration-tests/.clang-format | 0 swift/{ => ql}/integration-tests/.gitignore | 2 +- swift/{ => ql}/integration-tests/BUILD.bazel | 0 swift/{ => ql}/integration-tests/create_database_utils.py | 6 +++--- .../{ => ql}/integration-tests/diagnostics_test_utils.py | 0 .../linux-only/RegexLiteralExpr/RegexLiteralExpr.expected | 0 .../linux-only/RegexLiteralExpr/RegexLiteralExpr.ql | 0 .../linux-only/RegexLiteralExpr/regex.swift | 0 .../integration-tests/linux-only/RegexLiteralExpr/test.py | 0 .../autobuilder/unsupported-os/diagnostics.expected | 0 .../linux-only/autobuilder/unsupported-os/test.py | 0 .../osx-only/autobuilder/failure/.gitignore | 0 .../osx-only/autobuilder/failure/diagnostics.expected | 0 .../failure/hello-failure.xcodeproj/project.pbxproj | 0 .../project.xcworkspace/contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../osx-only/autobuilder/failure/test.py | 0 .../autobuilder/no-build-system/diagnostics.expected | 0 .../osx-only/autobuilder/no-build-system/test.py | 0 .../osx-only/autobuilder/no-build-system/x.swift | 0 .../autobuilder/no-swift-with-spm/diagnostics.expected | 0 .../hello-objective.xcodeproj/project.pbxproj | 0 .../project.xcworkspace/contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../no-swift-with-spm/hello-objective/Package.swift | 0 .../autobuilder/no-swift-with-spm/hello-objective/main.m | 0 .../osx-only/autobuilder/no-swift-with-spm/test.py | 0 .../osx-only/autobuilder/no-swift/diagnostics.expected | 0 .../no-swift/hello-objective.xcodeproj/project.pbxproj | 0 .../project.xcworkspace/contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../osx-only/autobuilder/no-swift/hello-objective/main.m | 0 .../osx-only/autobuilder/no-swift/test.py | 0 .../osx-only/autobuilder/no-xcode-with-spm/Package.swift | 0 .../autobuilder/no-xcode-with-spm/diagnostics.expected | 0 .../osx-only/autobuilder/no-xcode-with-spm/test.py | 0 .../osx-only/autobuilder/no-xcode-with-spm/x.swift | 0 .../autobuilder/only-tests-with-spm/Package.swift | 0 .../autobuilder/only-tests-with-spm/diagnostics.expected | 0 .../hello-tests.xcodeproj/project.pbxproj | 0 .../project.xcworkspace/contents.xcworkspacedata | 0 .../osx-only/autobuilder/only-tests-with-spm/test.py | 0 .../osx-only/autobuilder/only-tests/diagnostics.expected | 0 .../only-tests/hello-tests.xcodeproj/project.pbxproj | 0 .../project.xcworkspace/contents.xcworkspacedata | 0 .../osx-only/autobuilder/only-tests/test.py | 0 .../autobuilder/xcode-fails-spm-works/Files.expected | 0 .../osx-only/autobuilder/xcode-fails-spm-works/Files.ql | 0 .../autobuilder/xcode-fails-spm-works/Package.swift | 0 .../Sources/hello-world/hello_world.swift | 0 .../codeql-swift-autobuild-test.xcodeproj/project.pbxproj | 0 .../codeql-swift-autobuild-test/AppDelegate.swift | 0 .../osx-only/autobuilder/xcode-fails-spm-works/test.py | 0 .../osx-only/canonical-case/Files.expected | 0 .../integration-tests/osx-only/canonical-case/Files.ql | 0 .../osx-only/canonical-case/MiXeDcAsE.swifT | 0 .../integration-tests/osx-only/canonical-case/build.sh | 0 .../integration-tests/osx-only/canonical-case/test.py | 0 .../integration-tests/osx-only/hello-xcode/Files.expected | 0 .../integration-tests/osx-only/hello-xcode/Files.ql | 0 .../codeql-swift-autobuild-test.xcodeproj/project.pbxproj | 0 .../codeql-swift-autobuild-test/AppDelegate.swift | 0 .../integration-tests/osx-only/hello-xcode/test.py | 0 .../posix-only/cross-references/Classes.expected | 0 .../posix-only/cross-references/Classes.ql | 0 .../posix-only/cross-references/Deinitializers.expected | 0 .../posix-only/cross-references/Deinitializers.ql | 0 .../posix-only/cross-references/Enums.expected | 0 .../posix-only/cross-references/Enums.ql | 0 .../posix-only/cross-references/Functions.expected | 0 .../posix-only/cross-references/Functions.ql | 0 .../posix-only/cross-references/Initializers.expected | 0 .../posix-only/cross-references/Initializers.ql | 0 .../posix-only/cross-references/Module.expected | 0 .../posix-only/cross-references/Module.ql | 0 .../posix-only/cross-references/Operators.expected | 0 .../posix-only/cross-references/Operators.ql | 0 .../posix-only/cross-references/Package.swift | 0 .../posix-only/cross-references/Protocols.expected | 0 .../posix-only/cross-references/Protocols.ql | 0 .../cross-references/Sources/cross-references/lib.swift | 0 .../cross-references/Sources/cross-references/main.swift | 0 .../posix-only/cross-references/Structs.expected | 0 .../posix-only/cross-references/Structs.ql | 0 .../posix-only/cross-references/VarDecls.expected | 0 .../posix-only/cross-references/VarDecls.ql | 0 .../integration-tests/posix-only/cross-references/test.py | 0 .../posix-only/deduplication/BuiltinTypes.expected | 0 .../posix-only/deduplication/BuiltinTypes.ql | 0 .../posix-only/deduplication/Decls.expected | 0 .../integration-tests/posix-only/deduplication/Decls.ql | 0 .../posix-only/deduplication/Package.swift | 0 .../posix-only/deduplication/Relevant.qll | 0 .../deduplication/Sources/deduplication/def.swift | 0 .../deduplication/Sources/deduplication/use.swift | 0 .../posix-only/deduplication/Types.expected | 0 .../integration-tests/posix-only/deduplication/Types.ql | 0 .../integration-tests/posix-only/deduplication/test.py | 0 .../posix-only/frontend-invocations/.gitignore | 0 .../posix-only/frontend-invocations/A.swift | 0 .../posix-only/frontend-invocations/B.swift | 0 .../posix-only/frontend-invocations/C.swift | 0 .../posix-only/frontend-invocations/D.swift | 0 .../posix-only/frontend-invocations/E.swift | 0 .../posix-only/frontend-invocations/Esup.swift | 0 .../posix-only/frontend-invocations/F1.swift | 0 .../posix-only/frontend-invocations/F2.swift | 0 .../posix-only/frontend-invocations/F3.swift | 0 .../posix-only/frontend-invocations/F4.swift | 0 .../posix-only/frontend-invocations/F5.swift | 0 .../posix-only/frontend-invocations/Files.expected | 0 .../posix-only/frontend-invocations/Files.ql | 0 .../posix-only/frontend-invocations/G.swift | 0 .../posix-only/frontend-invocations/H1.swift | 0 .../posix-only/frontend-invocations/H2.swift | 0 .../posix-only/frontend-invocations/H3.swift | 0 .../posix-only/frontend-invocations/I1.swift | 0 .../posix-only/frontend-invocations/I2.swift | 0 .../posix-only/frontend-invocations/Modules.expected | 0 .../posix-only/frontend-invocations/Modules.ql | 0 .../posix-only/frontend-invocations/build.sh | 0 .../posix-only/frontend-invocations/dir/.empty | 0 .../posix-only/frontend-invocations/test.py | 5 +++-- .../posix-only/hello-world/Bodies.expected | 0 .../integration-tests/posix-only/hello-world/Bodies.ql | 0 .../posix-only/hello-world/Package.swift | 0 .../hello-world/Sources/hello-world/hello_world.swift | 0 .../posix-only/hello-world/test.expected | 0 .../integration-tests/posix-only/hello-world/test.py | 0 .../integration-tests/posix-only/hello-world/test.ql | 0 .../posix-only/linkage-awareness/Bodies.expected | 0 .../posix-only/linkage-awareness/Bodies.ql | 0 .../posix-only/linkage-awareness/Foo1/Package.swift | 0 .../linkage-awareness/Foo1/Sources/foo/main.swift | 0 .../posix-only/linkage-awareness/Foo2/Package.swift | 0 .../linkage-awareness/Foo2/Sources/foo/main.swift | 0 .../posix-only/linkage-awareness/build.sh | 0 .../posix-only/linkage-awareness/test.py | 0 .../posix-only/partial-modules/A/Package.swift | 0 .../posix-only/partial-modules/A/Sources/A/A.swift | 0 .../posix-only/partial-modules/A/Sources/A/Asup.swift | 0 .../posix-only/partial-modules/B/Package.swift | 0 .../posix-only/partial-modules/B/Sources/B/B.swift | 0 .../posix-only/partial-modules/B/Sources/B/Bsup.swift | 0 .../posix-only/partial-modules/Modules.expected | 0 .../posix-only/partial-modules/Modules.ql | 0 .../posix-only/partial-modules/Package.swift | 0 .../Sources/partial-modules/partial_modules.swift | 0 .../posix-only/partial-modules/Unknown.expected | 0 .../posix-only/partial-modules/Unknown.ql | 0 .../integration-tests/posix-only/partial-modules/test.py | 0 .../integration-tests/posix-only/symlinks/.gitignore | 0 .../integration-tests/posix-only/symlinks/Files.expected | 0 .../integration-tests/posix-only/symlinks/Files.ql | 0 .../integration-tests/posix-only/symlinks/main.swift | 0 .../posix-only/symlinks/preserve/Package.swift | 0 .../posix-only/symlinks/preserve/Sources/.gitkeep | 0 .../posix-only/symlinks/resolve/Package.swift | 0 .../posix-only/symlinks/resolve/Sources/.gitkeep | 0 .../integration-tests/posix-only/symlinks/test.py | 0 swift/ql/integration-tests/qlpack.yml | 4 ++++ swift/{ => ql}/integration-tests/runner.py | 8 +++++--- 164 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 swift/integration-tests/qlpack.yml rename swift/{ => ql}/integration-tests/.clang-format (100%) rename swift/{ => ql}/integration-tests/.gitignore (94%) rename swift/{ => ql}/integration-tests/BUILD.bazel (100%) rename swift/{ => ql}/integration-tests/create_database_utils.py (90%) rename swift/{ => ql}/integration-tests/diagnostics_test_utils.py (100%) rename swift/{ => ql}/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.expected (100%) rename swift/{ => ql}/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.ql (100%) rename swift/{ => ql}/integration-tests/linux-only/RegexLiteralExpr/regex.swift (100%) rename swift/{ => ql}/integration-tests/linux-only/RegexLiteralExpr/test.py (100%) rename swift/{ => ql}/integration-tests/linux-only/autobuilder/unsupported-os/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/linux-only/autobuilder/unsupported-os/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/failure/.gitignore (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/failure/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/failure/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-build-system/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-build-system/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-build-system/x.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift-with-spm/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/Package.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/main.m (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift-with-spm/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift/hello-objective/main.m (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-swift/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-xcode-with-spm/Package.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-xcode-with-spm/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-xcode-with-spm/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/no-xcode-with-spm/x.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests-with-spm/Package.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests-with-spm/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests-with-spm/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests/diagnostics.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/only-tests/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.ql (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Package.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/canonical-case/Files.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/canonical-case/Files.ql (100%) rename swift/{ => ql}/integration-tests/osx-only/canonical-case/MiXeDcAsE.swifT (100%) rename swift/{ => ql}/integration-tests/osx-only/canonical-case/build.sh (100%) rename swift/{ => ql}/integration-tests/osx-only/canonical-case/test.py (100%) rename swift/{ => ql}/integration-tests/osx-only/hello-xcode/Files.expected (100%) rename swift/{ => ql}/integration-tests/osx-only/hello-xcode/Files.ql (100%) rename swift/{ => ql}/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj (100%) rename swift/{ => ql}/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift (100%) rename swift/{ => ql}/integration-tests/osx-only/hello-xcode/test.py (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Classes.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Classes.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Deinitializers.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Deinitializers.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Enums.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Enums.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Functions.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Functions.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Initializers.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Initializers.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Module.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Module.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Operators.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Operators.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Protocols.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Protocols.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Sources/cross-references/lib.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Sources/cross-references/main.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Structs.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/Structs.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/VarDecls.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/VarDecls.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/cross-references/test.py (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/BuiltinTypes.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/BuiltinTypes.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Decls.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Decls.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Relevant.qll (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Sources/deduplication/def.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Sources/deduplication/use.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Types.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/Types.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/deduplication/test.py (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/.gitignore (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/A.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/B.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/C.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/D.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/E.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/Esup.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/F1.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/F2.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/F3.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/F4.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/F5.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/Files.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/Files.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/G.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/H1.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/H2.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/H3.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/I1.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/I2.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/Modules.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/Modules.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/build.sh (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/dir/.empty (100%) rename swift/{ => ql}/integration-tests/posix-only/frontend-invocations/test.py (80%) rename swift/{ => ql}/integration-tests/posix-only/hello-world/Bodies.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/hello-world/Bodies.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/hello-world/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/hello-world/Sources/hello-world/hello_world.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/hello-world/test.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/hello-world/test.py (100%) rename swift/{ => ql}/integration-tests/posix-only/hello-world/test.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/Bodies.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/Bodies.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/Foo1/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/Foo1/Sources/foo/main.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/Foo2/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/Foo2/Sources/foo/main.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/build.sh (100%) rename swift/{ => ql}/integration-tests/posix-only/linkage-awareness/test.py (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/A/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/A/Sources/A/A.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/A/Sources/A/Asup.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/B/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/B/Sources/B/B.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/B/Sources/B/Bsup.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/Modules.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/Modules.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/Sources/partial-modules/partial_modules.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/Unknown.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/Unknown.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/partial-modules/test.py (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/.gitignore (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/Files.expected (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/Files.ql (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/main.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/preserve/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/preserve/Sources/.gitkeep (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/resolve/Package.swift (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/resolve/Sources/.gitkeep (100%) rename swift/{ => ql}/integration-tests/posix-only/symlinks/test.py (100%) create mode 100644 swift/ql/integration-tests/qlpack.yml rename swift/{ => ql}/integration-tests/runner.py (92%) diff --git a/swift/actions/run-integration-tests/action.yml b/swift/actions/run-integration-tests/action.yml index 6db78e2e01ef..2c6df4e2b513 100644 --- a/swift/actions/run-integration-tests/action.yml +++ b/swift/actions/run-integration-tests/action.yml @@ -18,7 +18,7 @@ runs: - name: Run integration tests shell: bash run: | - python swift/integration-tests/runner.py --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" + python swift/ql/integration-tests/runner.py --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" env: SEMMLE_DEBUG_TRACER: 10000 - name: Upload test logs @@ -27,5 +27,5 @@ runs: with: name: swift-integration-tests-logs-${{ runner.os }} path: | - swift/integration-tests/**/db/log + swift/ql/integration-tests/**/db/log retention-days: 1 diff --git a/swift/integration-tests/qlpack.yml b/swift/integration-tests/qlpack.yml deleted file mode 100644 index f0a644185761..000000000000 --- a/swift/integration-tests/qlpack.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: integration-tests-swift -version: 0.0.0 -dependencies: - codeql/swift-all: ${workspace} -tests: . -extractor: swift -warnOnImplicitThis: true diff --git a/swift/integration-tests/.clang-format b/swift/ql/integration-tests/.clang-format similarity index 100% rename from swift/integration-tests/.clang-format rename to swift/ql/integration-tests/.clang-format diff --git a/swift/integration-tests/.gitignore b/swift/ql/integration-tests/.gitignore similarity index 94% rename from swift/integration-tests/.gitignore rename to swift/ql/integration-tests/.gitignore index aa3e9b45c5c4..a68e1d521645 100644 --- a/swift/integration-tests/.gitignore +++ b/swift/ql/integration-tests/.gitignore @@ -6,5 +6,5 @@ xcuserdata/ DerivedData/ .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata *.actual -db +test-db *.swiftmodule diff --git a/swift/integration-tests/BUILD.bazel b/swift/ql/integration-tests/BUILD.bazel similarity index 100% rename from swift/integration-tests/BUILD.bazel rename to swift/ql/integration-tests/BUILD.bazel diff --git a/swift/integration-tests/create_database_utils.py b/swift/ql/integration-tests/create_database_utils.py similarity index 90% rename from swift/integration-tests/create_database_utils.py rename to swift/ql/integration-tests/create_database_utils.py index cbe2c5a7f67c..b3b3803b05bc 100644 --- a/swift/integration-tests/create_database_utils.py +++ b/swift/ql/integration-tests/create_database_utils.py @@ -27,8 +27,8 @@ def runUnsuccessfully(cmd): def run_codeql_database_create(cmds, lang, keep_trap=True, db=None, runFunction=runSuccessfully): """ db parameter is here solely for compatibility with the internal test runner """ assert lang == 'swift' - codeql_root = pathlib.Path(__file__).parents[2] - shutil.rmtree("db", ignore_errors=True) + codeql_root = pathlib.Path(__file__).parents[3] + shutil.rmtree("test-db", ignore_errors=True) cmd = [ "codeql", "database", "create", "-s", ".", "-l", "swift", f"--search-path={codeql_root}", "--no-cleanup", @@ -37,5 +37,5 @@ def run_codeql_database_create(cmds, lang, keep_trap=True, db=None, runFunction= cmd.append("--keep-trap") for c in cmds: cmd += ["-c", c] - cmd.append("db") + cmd.append("test-db") runFunction(cmd) diff --git a/swift/integration-tests/diagnostics_test_utils.py b/swift/ql/integration-tests/diagnostics_test_utils.py similarity index 100% rename from swift/integration-tests/diagnostics_test_utils.py rename to swift/ql/integration-tests/diagnostics_test_utils.py diff --git a/swift/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.expected b/swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.expected similarity index 100% rename from swift/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.expected rename to swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.expected diff --git a/swift/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.ql b/swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.ql similarity index 100% rename from swift/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.ql rename to swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.ql diff --git a/swift/integration-tests/linux-only/RegexLiteralExpr/regex.swift b/swift/ql/integration-tests/linux-only/RegexLiteralExpr/regex.swift similarity index 100% rename from swift/integration-tests/linux-only/RegexLiteralExpr/regex.swift rename to swift/ql/integration-tests/linux-only/RegexLiteralExpr/regex.swift diff --git a/swift/integration-tests/linux-only/RegexLiteralExpr/test.py b/swift/ql/integration-tests/linux-only/RegexLiteralExpr/test.py similarity index 100% rename from swift/integration-tests/linux-only/RegexLiteralExpr/test.py rename to swift/ql/integration-tests/linux-only/RegexLiteralExpr/test.py diff --git a/swift/integration-tests/linux-only/autobuilder/unsupported-os/diagnostics.expected b/swift/ql/integration-tests/linux-only/autobuilder/unsupported-os/diagnostics.expected similarity index 100% rename from swift/integration-tests/linux-only/autobuilder/unsupported-os/diagnostics.expected rename to swift/ql/integration-tests/linux-only/autobuilder/unsupported-os/diagnostics.expected diff --git a/swift/integration-tests/linux-only/autobuilder/unsupported-os/test.py b/swift/ql/integration-tests/linux-only/autobuilder/unsupported-os/test.py similarity index 100% rename from swift/integration-tests/linux-only/autobuilder/unsupported-os/test.py rename to swift/ql/integration-tests/linux-only/autobuilder/unsupported-os/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/failure/.gitignore b/swift/ql/integration-tests/osx-only/autobuilder/failure/.gitignore similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/failure/.gitignore rename to swift/ql/integration-tests/osx-only/autobuilder/failure/.gitignore diff --git a/swift/integration-tests/osx-only/autobuilder/failure/diagnostics.expected b/swift/ql/integration-tests/osx-only/autobuilder/failure/diagnostics.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/failure/diagnostics.expected rename to swift/ql/integration-tests/osx-only/autobuilder/failure/diagnostics.expected diff --git a/swift/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj diff --git a/swift/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/swift/integration-tests/osx-only/autobuilder/failure/test.py b/swift/ql/integration-tests/osx-only/autobuilder/failure/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/failure/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/failure/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/no-build-system/diagnostics.expected b/swift/ql/integration-tests/osx-only/autobuilder/no-build-system/diagnostics.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-build-system/diagnostics.expected rename to swift/ql/integration-tests/osx-only/autobuilder/no-build-system/diagnostics.expected diff --git a/swift/integration-tests/osx-only/autobuilder/no-build-system/test.py b/swift/ql/integration-tests/osx-only/autobuilder/no-build-system/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-build-system/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/no-build-system/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/no-build-system/x.swift b/swift/ql/integration-tests/osx-only/autobuilder/no-build-system/x.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-build-system/x.swift rename to swift/ql/integration-tests/osx-only/autobuilder/no-build-system/x.swift diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/diagnostics.expected b/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/diagnostics.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/diagnostics.expected rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/diagnostics.expected diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/Package.swift b/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/Package.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/Package.swift rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/Package.swift diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/main.m b/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/main.m similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/main.m rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/main.m diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/test.py b/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift-with-spm/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift/diagnostics.expected b/swift/ql/integration-tests/osx-only/autobuilder/no-swift/diagnostics.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift/diagnostics.expected rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift/diagnostics.expected diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective/main.m b/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective/main.m similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift/hello-objective/main.m rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective/main.m diff --git a/swift/integration-tests/osx-only/autobuilder/no-swift/test.py b/swift/ql/integration-tests/osx-only/autobuilder/no-swift/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-swift/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/no-swift/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/Package.swift b/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/Package.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/Package.swift rename to swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/Package.swift diff --git a/swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/diagnostics.expected b/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/diagnostics.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/diagnostics.expected rename to swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/diagnostics.expected diff --git a/swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/test.py b/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/x.swift b/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/x.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/no-xcode-with-spm/x.swift rename to swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/x.swift diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/Package.swift b/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/Package.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/Package.swift rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/Package.swift diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/diagnostics.expected b/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/diagnostics.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/diagnostics.expected rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/diagnostics.expected diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/test.py b/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests-with-spm/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests/diagnostics.expected b/swift/ql/integration-tests/osx-only/autobuilder/only-tests/diagnostics.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests/diagnostics.expected rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests/diagnostics.expected diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/integration-tests/osx-only/autobuilder/only-tests/test.py b/swift/ql/integration-tests/osx-only/autobuilder/only-tests/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/only-tests/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/only-tests/test.py diff --git a/swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.expected b/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.expected similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.expected rename to swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.expected diff --git a/swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.ql b/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.ql similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.ql rename to swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.ql diff --git a/swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Package.swift b/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Package.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Package.swift rename to swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Package.swift diff --git a/swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift b/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift rename to swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift diff --git a/swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj diff --git a/swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift b/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift rename to swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift diff --git a/swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/test.py b/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/test.py similarity index 100% rename from swift/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/test.py rename to swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/test.py diff --git a/swift/integration-tests/osx-only/canonical-case/Files.expected b/swift/ql/integration-tests/osx-only/canonical-case/Files.expected similarity index 100% rename from swift/integration-tests/osx-only/canonical-case/Files.expected rename to swift/ql/integration-tests/osx-only/canonical-case/Files.expected diff --git a/swift/integration-tests/osx-only/canonical-case/Files.ql b/swift/ql/integration-tests/osx-only/canonical-case/Files.ql similarity index 100% rename from swift/integration-tests/osx-only/canonical-case/Files.ql rename to swift/ql/integration-tests/osx-only/canonical-case/Files.ql diff --git a/swift/integration-tests/osx-only/canonical-case/MiXeDcAsE.swifT b/swift/ql/integration-tests/osx-only/canonical-case/MiXeDcAsE.swifT similarity index 100% rename from swift/integration-tests/osx-only/canonical-case/MiXeDcAsE.swifT rename to swift/ql/integration-tests/osx-only/canonical-case/MiXeDcAsE.swifT diff --git a/swift/integration-tests/osx-only/canonical-case/build.sh b/swift/ql/integration-tests/osx-only/canonical-case/build.sh similarity index 100% rename from swift/integration-tests/osx-only/canonical-case/build.sh rename to swift/ql/integration-tests/osx-only/canonical-case/build.sh diff --git a/swift/integration-tests/osx-only/canonical-case/test.py b/swift/ql/integration-tests/osx-only/canonical-case/test.py similarity index 100% rename from swift/integration-tests/osx-only/canonical-case/test.py rename to swift/ql/integration-tests/osx-only/canonical-case/test.py diff --git a/swift/integration-tests/osx-only/hello-xcode/Files.expected b/swift/ql/integration-tests/osx-only/hello-xcode/Files.expected similarity index 100% rename from swift/integration-tests/osx-only/hello-xcode/Files.expected rename to swift/ql/integration-tests/osx-only/hello-xcode/Files.expected diff --git a/swift/integration-tests/osx-only/hello-xcode/Files.ql b/swift/ql/integration-tests/osx-only/hello-xcode/Files.ql similarity index 100% rename from swift/integration-tests/osx-only/hello-xcode/Files.ql rename to swift/ql/integration-tests/osx-only/hello-xcode/Files.ql diff --git a/swift/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj similarity index 100% rename from swift/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj diff --git a/swift/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift b/swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift similarity index 100% rename from swift/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift rename to swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift diff --git a/swift/integration-tests/osx-only/hello-xcode/test.py b/swift/ql/integration-tests/osx-only/hello-xcode/test.py similarity index 100% rename from swift/integration-tests/osx-only/hello-xcode/test.py rename to swift/ql/integration-tests/osx-only/hello-xcode/test.py diff --git a/swift/integration-tests/posix-only/cross-references/Classes.expected b/swift/ql/integration-tests/posix-only/cross-references/Classes.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Classes.expected rename to swift/ql/integration-tests/posix-only/cross-references/Classes.expected diff --git a/swift/integration-tests/posix-only/cross-references/Classes.ql b/swift/ql/integration-tests/posix-only/cross-references/Classes.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Classes.ql rename to swift/ql/integration-tests/posix-only/cross-references/Classes.ql diff --git a/swift/integration-tests/posix-only/cross-references/Deinitializers.expected b/swift/ql/integration-tests/posix-only/cross-references/Deinitializers.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Deinitializers.expected rename to swift/ql/integration-tests/posix-only/cross-references/Deinitializers.expected diff --git a/swift/integration-tests/posix-only/cross-references/Deinitializers.ql b/swift/ql/integration-tests/posix-only/cross-references/Deinitializers.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Deinitializers.ql rename to swift/ql/integration-tests/posix-only/cross-references/Deinitializers.ql diff --git a/swift/integration-tests/posix-only/cross-references/Enums.expected b/swift/ql/integration-tests/posix-only/cross-references/Enums.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Enums.expected rename to swift/ql/integration-tests/posix-only/cross-references/Enums.expected diff --git a/swift/integration-tests/posix-only/cross-references/Enums.ql b/swift/ql/integration-tests/posix-only/cross-references/Enums.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Enums.ql rename to swift/ql/integration-tests/posix-only/cross-references/Enums.ql diff --git a/swift/integration-tests/posix-only/cross-references/Functions.expected b/swift/ql/integration-tests/posix-only/cross-references/Functions.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Functions.expected rename to swift/ql/integration-tests/posix-only/cross-references/Functions.expected diff --git a/swift/integration-tests/posix-only/cross-references/Functions.ql b/swift/ql/integration-tests/posix-only/cross-references/Functions.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Functions.ql rename to swift/ql/integration-tests/posix-only/cross-references/Functions.ql diff --git a/swift/integration-tests/posix-only/cross-references/Initializers.expected b/swift/ql/integration-tests/posix-only/cross-references/Initializers.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Initializers.expected rename to swift/ql/integration-tests/posix-only/cross-references/Initializers.expected diff --git a/swift/integration-tests/posix-only/cross-references/Initializers.ql b/swift/ql/integration-tests/posix-only/cross-references/Initializers.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Initializers.ql rename to swift/ql/integration-tests/posix-only/cross-references/Initializers.ql diff --git a/swift/integration-tests/posix-only/cross-references/Module.expected b/swift/ql/integration-tests/posix-only/cross-references/Module.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Module.expected rename to swift/ql/integration-tests/posix-only/cross-references/Module.expected diff --git a/swift/integration-tests/posix-only/cross-references/Module.ql b/swift/ql/integration-tests/posix-only/cross-references/Module.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Module.ql rename to swift/ql/integration-tests/posix-only/cross-references/Module.ql diff --git a/swift/integration-tests/posix-only/cross-references/Operators.expected b/swift/ql/integration-tests/posix-only/cross-references/Operators.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Operators.expected rename to swift/ql/integration-tests/posix-only/cross-references/Operators.expected diff --git a/swift/integration-tests/posix-only/cross-references/Operators.ql b/swift/ql/integration-tests/posix-only/cross-references/Operators.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Operators.ql rename to swift/ql/integration-tests/posix-only/cross-references/Operators.ql diff --git a/swift/integration-tests/posix-only/cross-references/Package.swift b/swift/ql/integration-tests/posix-only/cross-references/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Package.swift rename to swift/ql/integration-tests/posix-only/cross-references/Package.swift diff --git a/swift/integration-tests/posix-only/cross-references/Protocols.expected b/swift/ql/integration-tests/posix-only/cross-references/Protocols.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Protocols.expected rename to swift/ql/integration-tests/posix-only/cross-references/Protocols.expected diff --git a/swift/integration-tests/posix-only/cross-references/Protocols.ql b/swift/ql/integration-tests/posix-only/cross-references/Protocols.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Protocols.ql rename to swift/ql/integration-tests/posix-only/cross-references/Protocols.ql diff --git a/swift/integration-tests/posix-only/cross-references/Sources/cross-references/lib.swift b/swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/lib.swift similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Sources/cross-references/lib.swift rename to swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/lib.swift diff --git a/swift/integration-tests/posix-only/cross-references/Sources/cross-references/main.swift b/swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/main.swift similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Sources/cross-references/main.swift rename to swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/main.swift diff --git a/swift/integration-tests/posix-only/cross-references/Structs.expected b/swift/ql/integration-tests/posix-only/cross-references/Structs.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Structs.expected rename to swift/ql/integration-tests/posix-only/cross-references/Structs.expected diff --git a/swift/integration-tests/posix-only/cross-references/Structs.ql b/swift/ql/integration-tests/posix-only/cross-references/Structs.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/Structs.ql rename to swift/ql/integration-tests/posix-only/cross-references/Structs.ql diff --git a/swift/integration-tests/posix-only/cross-references/VarDecls.expected b/swift/ql/integration-tests/posix-only/cross-references/VarDecls.expected similarity index 100% rename from swift/integration-tests/posix-only/cross-references/VarDecls.expected rename to swift/ql/integration-tests/posix-only/cross-references/VarDecls.expected diff --git a/swift/integration-tests/posix-only/cross-references/VarDecls.ql b/swift/ql/integration-tests/posix-only/cross-references/VarDecls.ql similarity index 100% rename from swift/integration-tests/posix-only/cross-references/VarDecls.ql rename to swift/ql/integration-tests/posix-only/cross-references/VarDecls.ql diff --git a/swift/integration-tests/posix-only/cross-references/test.py b/swift/ql/integration-tests/posix-only/cross-references/test.py similarity index 100% rename from swift/integration-tests/posix-only/cross-references/test.py rename to swift/ql/integration-tests/posix-only/cross-references/test.py diff --git a/swift/integration-tests/posix-only/deduplication/BuiltinTypes.expected b/swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.expected similarity index 100% rename from swift/integration-tests/posix-only/deduplication/BuiltinTypes.expected rename to swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.expected diff --git a/swift/integration-tests/posix-only/deduplication/BuiltinTypes.ql b/swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.ql similarity index 100% rename from swift/integration-tests/posix-only/deduplication/BuiltinTypes.ql rename to swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.ql diff --git a/swift/integration-tests/posix-only/deduplication/Decls.expected b/swift/ql/integration-tests/posix-only/deduplication/Decls.expected similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Decls.expected rename to swift/ql/integration-tests/posix-only/deduplication/Decls.expected diff --git a/swift/integration-tests/posix-only/deduplication/Decls.ql b/swift/ql/integration-tests/posix-only/deduplication/Decls.ql similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Decls.ql rename to swift/ql/integration-tests/posix-only/deduplication/Decls.ql diff --git a/swift/integration-tests/posix-only/deduplication/Package.swift b/swift/ql/integration-tests/posix-only/deduplication/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Package.swift rename to swift/ql/integration-tests/posix-only/deduplication/Package.swift diff --git a/swift/integration-tests/posix-only/deduplication/Relevant.qll b/swift/ql/integration-tests/posix-only/deduplication/Relevant.qll similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Relevant.qll rename to swift/ql/integration-tests/posix-only/deduplication/Relevant.qll diff --git a/swift/integration-tests/posix-only/deduplication/Sources/deduplication/def.swift b/swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/def.swift similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Sources/deduplication/def.swift rename to swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/def.swift diff --git a/swift/integration-tests/posix-only/deduplication/Sources/deduplication/use.swift b/swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/use.swift similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Sources/deduplication/use.swift rename to swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/use.swift diff --git a/swift/integration-tests/posix-only/deduplication/Types.expected b/swift/ql/integration-tests/posix-only/deduplication/Types.expected similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Types.expected rename to swift/ql/integration-tests/posix-only/deduplication/Types.expected diff --git a/swift/integration-tests/posix-only/deduplication/Types.ql b/swift/ql/integration-tests/posix-only/deduplication/Types.ql similarity index 100% rename from swift/integration-tests/posix-only/deduplication/Types.ql rename to swift/ql/integration-tests/posix-only/deduplication/Types.ql diff --git a/swift/integration-tests/posix-only/deduplication/test.py b/swift/ql/integration-tests/posix-only/deduplication/test.py similarity index 100% rename from swift/integration-tests/posix-only/deduplication/test.py rename to swift/ql/integration-tests/posix-only/deduplication/test.py diff --git a/swift/integration-tests/posix-only/frontend-invocations/.gitignore b/swift/ql/integration-tests/posix-only/frontend-invocations/.gitignore similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/.gitignore rename to swift/ql/integration-tests/posix-only/frontend-invocations/.gitignore diff --git a/swift/integration-tests/posix-only/frontend-invocations/A.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/A.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/A.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/A.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/B.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/B.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/B.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/B.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/C.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/C.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/C.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/C.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/D.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/D.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/D.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/D.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/E.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/E.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/E.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/E.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/Esup.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/Esup.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/Esup.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/Esup.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/F1.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/F1.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/F1.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/F1.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/F2.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/F2.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/F2.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/F2.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/F3.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/F3.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/F3.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/F3.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/F4.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/F4.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/F4.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/F4.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/F5.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/F5.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/F5.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/F5.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/Files.expected b/swift/ql/integration-tests/posix-only/frontend-invocations/Files.expected similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/Files.expected rename to swift/ql/integration-tests/posix-only/frontend-invocations/Files.expected diff --git a/swift/integration-tests/posix-only/frontend-invocations/Files.ql b/swift/ql/integration-tests/posix-only/frontend-invocations/Files.ql similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/Files.ql rename to swift/ql/integration-tests/posix-only/frontend-invocations/Files.ql diff --git a/swift/integration-tests/posix-only/frontend-invocations/G.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/G.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/G.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/G.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/H1.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/H1.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/H1.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/H1.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/H2.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/H2.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/H2.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/H2.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/H3.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/H3.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/H3.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/H3.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/I1.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/I1.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/I1.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/I1.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/I2.swift b/swift/ql/integration-tests/posix-only/frontend-invocations/I2.swift similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/I2.swift rename to swift/ql/integration-tests/posix-only/frontend-invocations/I2.swift diff --git a/swift/integration-tests/posix-only/frontend-invocations/Modules.expected b/swift/ql/integration-tests/posix-only/frontend-invocations/Modules.expected similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/Modules.expected rename to swift/ql/integration-tests/posix-only/frontend-invocations/Modules.expected diff --git a/swift/integration-tests/posix-only/frontend-invocations/Modules.ql b/swift/ql/integration-tests/posix-only/frontend-invocations/Modules.ql similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/Modules.ql rename to swift/ql/integration-tests/posix-only/frontend-invocations/Modules.ql diff --git a/swift/integration-tests/posix-only/frontend-invocations/build.sh b/swift/ql/integration-tests/posix-only/frontend-invocations/build.sh similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/build.sh rename to swift/ql/integration-tests/posix-only/frontend-invocations/build.sh diff --git a/swift/integration-tests/posix-only/frontend-invocations/dir/.empty b/swift/ql/integration-tests/posix-only/frontend-invocations/dir/.empty similarity index 100% rename from swift/integration-tests/posix-only/frontend-invocations/dir/.empty rename to swift/ql/integration-tests/posix-only/frontend-invocations/dir/.empty diff --git a/swift/integration-tests/posix-only/frontend-invocations/test.py b/swift/ql/integration-tests/posix-only/frontend-invocations/test.py similarity index 80% rename from swift/integration-tests/posix-only/frontend-invocations/test.py rename to swift/ql/integration-tests/posix-only/frontend-invocations/test.py index 06f07282e2f6..cb07988676c5 100644 --- a/swift/integration-tests/posix-only/frontend-invocations/test.py +++ b/swift/ql/integration-tests/posix-only/frontend-invocations/test.py @@ -5,7 +5,8 @@ run_codeql_database_create([ './build.sh', -], lang='swift') +], lang='swift', +) with open('hashes.expected', 'w') as expected: for f in sorted(Path().glob("*.swiftmodule")): @@ -13,7 +14,7 @@ print(f.name, sha256(module.read()).hexdigest(), file=expected) with open('hashes.actual', 'w') as actual: - hashes = [(s.name, s.resolve().name) for s in Path("db/working/swift-extraction-artifacts/store").iterdir()] + hashes = [(s.name, s.resolve().name) for s in Path("test-db/working/swift-extraction-artifacts/store").iterdir()] hashes.sort() for module, hash in hashes: print(module, hash, file=actual) diff --git a/swift/integration-tests/posix-only/hello-world/Bodies.expected b/swift/ql/integration-tests/posix-only/hello-world/Bodies.expected similarity index 100% rename from swift/integration-tests/posix-only/hello-world/Bodies.expected rename to swift/ql/integration-tests/posix-only/hello-world/Bodies.expected diff --git a/swift/integration-tests/posix-only/hello-world/Bodies.ql b/swift/ql/integration-tests/posix-only/hello-world/Bodies.ql similarity index 100% rename from swift/integration-tests/posix-only/hello-world/Bodies.ql rename to swift/ql/integration-tests/posix-only/hello-world/Bodies.ql diff --git a/swift/integration-tests/posix-only/hello-world/Package.swift b/swift/ql/integration-tests/posix-only/hello-world/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/hello-world/Package.swift rename to swift/ql/integration-tests/posix-only/hello-world/Package.swift diff --git a/swift/integration-tests/posix-only/hello-world/Sources/hello-world/hello_world.swift b/swift/ql/integration-tests/posix-only/hello-world/Sources/hello-world/hello_world.swift similarity index 100% rename from swift/integration-tests/posix-only/hello-world/Sources/hello-world/hello_world.swift rename to swift/ql/integration-tests/posix-only/hello-world/Sources/hello-world/hello_world.swift diff --git a/swift/integration-tests/posix-only/hello-world/test.expected b/swift/ql/integration-tests/posix-only/hello-world/test.expected similarity index 100% rename from swift/integration-tests/posix-only/hello-world/test.expected rename to swift/ql/integration-tests/posix-only/hello-world/test.expected diff --git a/swift/integration-tests/posix-only/hello-world/test.py b/swift/ql/integration-tests/posix-only/hello-world/test.py similarity index 100% rename from swift/integration-tests/posix-only/hello-world/test.py rename to swift/ql/integration-tests/posix-only/hello-world/test.py diff --git a/swift/integration-tests/posix-only/hello-world/test.ql b/swift/ql/integration-tests/posix-only/hello-world/test.ql similarity index 100% rename from swift/integration-tests/posix-only/hello-world/test.ql rename to swift/ql/integration-tests/posix-only/hello-world/test.ql diff --git a/swift/integration-tests/posix-only/linkage-awareness/Bodies.expected b/swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.expected similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/Bodies.expected rename to swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.expected diff --git a/swift/integration-tests/posix-only/linkage-awareness/Bodies.ql b/swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.ql similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/Bodies.ql rename to swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.ql diff --git a/swift/integration-tests/posix-only/linkage-awareness/Foo1/Package.swift b/swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/Foo1/Package.swift rename to swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Package.swift diff --git a/swift/integration-tests/posix-only/linkage-awareness/Foo1/Sources/foo/main.swift b/swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Sources/foo/main.swift similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/Foo1/Sources/foo/main.swift rename to swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Sources/foo/main.swift diff --git a/swift/integration-tests/posix-only/linkage-awareness/Foo2/Package.swift b/swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/Foo2/Package.swift rename to swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Package.swift diff --git a/swift/integration-tests/posix-only/linkage-awareness/Foo2/Sources/foo/main.swift b/swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Sources/foo/main.swift similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/Foo2/Sources/foo/main.swift rename to swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Sources/foo/main.swift diff --git a/swift/integration-tests/posix-only/linkage-awareness/build.sh b/swift/ql/integration-tests/posix-only/linkage-awareness/build.sh similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/build.sh rename to swift/ql/integration-tests/posix-only/linkage-awareness/build.sh diff --git a/swift/integration-tests/posix-only/linkage-awareness/test.py b/swift/ql/integration-tests/posix-only/linkage-awareness/test.py similarity index 100% rename from swift/integration-tests/posix-only/linkage-awareness/test.py rename to swift/ql/integration-tests/posix-only/linkage-awareness/test.py diff --git a/swift/integration-tests/posix-only/partial-modules/A/Package.swift b/swift/ql/integration-tests/posix-only/partial-modules/A/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/A/Package.swift rename to swift/ql/integration-tests/posix-only/partial-modules/A/Package.swift diff --git a/swift/integration-tests/posix-only/partial-modules/A/Sources/A/A.swift b/swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/A.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/A/Sources/A/A.swift rename to swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/A.swift diff --git a/swift/integration-tests/posix-only/partial-modules/A/Sources/A/Asup.swift b/swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/Asup.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/A/Sources/A/Asup.swift rename to swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/Asup.swift diff --git a/swift/integration-tests/posix-only/partial-modules/B/Package.swift b/swift/ql/integration-tests/posix-only/partial-modules/B/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/B/Package.swift rename to swift/ql/integration-tests/posix-only/partial-modules/B/Package.swift diff --git a/swift/integration-tests/posix-only/partial-modules/B/Sources/B/B.swift b/swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/B.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/B/Sources/B/B.swift rename to swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/B.swift diff --git a/swift/integration-tests/posix-only/partial-modules/B/Sources/B/Bsup.swift b/swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/Bsup.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/B/Sources/B/Bsup.swift rename to swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/Bsup.swift diff --git a/swift/integration-tests/posix-only/partial-modules/Modules.expected b/swift/ql/integration-tests/posix-only/partial-modules/Modules.expected similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/Modules.expected rename to swift/ql/integration-tests/posix-only/partial-modules/Modules.expected diff --git a/swift/integration-tests/posix-only/partial-modules/Modules.ql b/swift/ql/integration-tests/posix-only/partial-modules/Modules.ql similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/Modules.ql rename to swift/ql/integration-tests/posix-only/partial-modules/Modules.ql diff --git a/swift/integration-tests/posix-only/partial-modules/Package.swift b/swift/ql/integration-tests/posix-only/partial-modules/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/Package.swift rename to swift/ql/integration-tests/posix-only/partial-modules/Package.swift diff --git a/swift/integration-tests/posix-only/partial-modules/Sources/partial-modules/partial_modules.swift b/swift/ql/integration-tests/posix-only/partial-modules/Sources/partial-modules/partial_modules.swift similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/Sources/partial-modules/partial_modules.swift rename to swift/ql/integration-tests/posix-only/partial-modules/Sources/partial-modules/partial_modules.swift diff --git a/swift/integration-tests/posix-only/partial-modules/Unknown.expected b/swift/ql/integration-tests/posix-only/partial-modules/Unknown.expected similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/Unknown.expected rename to swift/ql/integration-tests/posix-only/partial-modules/Unknown.expected diff --git a/swift/integration-tests/posix-only/partial-modules/Unknown.ql b/swift/ql/integration-tests/posix-only/partial-modules/Unknown.ql similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/Unknown.ql rename to swift/ql/integration-tests/posix-only/partial-modules/Unknown.ql diff --git a/swift/integration-tests/posix-only/partial-modules/test.py b/swift/ql/integration-tests/posix-only/partial-modules/test.py similarity index 100% rename from swift/integration-tests/posix-only/partial-modules/test.py rename to swift/ql/integration-tests/posix-only/partial-modules/test.py diff --git a/swift/integration-tests/posix-only/symlinks/.gitignore b/swift/ql/integration-tests/posix-only/symlinks/.gitignore similarity index 100% rename from swift/integration-tests/posix-only/symlinks/.gitignore rename to swift/ql/integration-tests/posix-only/symlinks/.gitignore diff --git a/swift/integration-tests/posix-only/symlinks/Files.expected b/swift/ql/integration-tests/posix-only/symlinks/Files.expected similarity index 100% rename from swift/integration-tests/posix-only/symlinks/Files.expected rename to swift/ql/integration-tests/posix-only/symlinks/Files.expected diff --git a/swift/integration-tests/posix-only/symlinks/Files.ql b/swift/ql/integration-tests/posix-only/symlinks/Files.ql similarity index 100% rename from swift/integration-tests/posix-only/symlinks/Files.ql rename to swift/ql/integration-tests/posix-only/symlinks/Files.ql diff --git a/swift/integration-tests/posix-only/symlinks/main.swift b/swift/ql/integration-tests/posix-only/symlinks/main.swift similarity index 100% rename from swift/integration-tests/posix-only/symlinks/main.swift rename to swift/ql/integration-tests/posix-only/symlinks/main.swift diff --git a/swift/integration-tests/posix-only/symlinks/preserve/Package.swift b/swift/ql/integration-tests/posix-only/symlinks/preserve/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/symlinks/preserve/Package.swift rename to swift/ql/integration-tests/posix-only/symlinks/preserve/Package.swift diff --git a/swift/integration-tests/posix-only/symlinks/preserve/Sources/.gitkeep b/swift/ql/integration-tests/posix-only/symlinks/preserve/Sources/.gitkeep similarity index 100% rename from swift/integration-tests/posix-only/symlinks/preserve/Sources/.gitkeep rename to swift/ql/integration-tests/posix-only/symlinks/preserve/Sources/.gitkeep diff --git a/swift/integration-tests/posix-only/symlinks/resolve/Package.swift b/swift/ql/integration-tests/posix-only/symlinks/resolve/Package.swift similarity index 100% rename from swift/integration-tests/posix-only/symlinks/resolve/Package.swift rename to swift/ql/integration-tests/posix-only/symlinks/resolve/Package.swift diff --git a/swift/integration-tests/posix-only/symlinks/resolve/Sources/.gitkeep b/swift/ql/integration-tests/posix-only/symlinks/resolve/Sources/.gitkeep similarity index 100% rename from swift/integration-tests/posix-only/symlinks/resolve/Sources/.gitkeep rename to swift/ql/integration-tests/posix-only/symlinks/resolve/Sources/.gitkeep diff --git a/swift/integration-tests/posix-only/symlinks/test.py b/swift/ql/integration-tests/posix-only/symlinks/test.py similarity index 100% rename from swift/integration-tests/posix-only/symlinks/test.py rename to swift/ql/integration-tests/posix-only/symlinks/test.py diff --git a/swift/ql/integration-tests/qlpack.yml b/swift/ql/integration-tests/qlpack.yml new file mode 100644 index 000000000000..c9b567bebda5 --- /dev/null +++ b/swift/ql/integration-tests/qlpack.yml @@ -0,0 +1,4 @@ +dependencies: + codeql/swift-all: '*' + codeql/swift-queries: '*' +warnOnImplicitThis: true diff --git a/swift/integration-tests/runner.py b/swift/ql/integration-tests/runner.py similarity index 92% rename from swift/integration-tests/runner.py rename to swift/ql/integration-tests/runner.py index bf65781cdb2b..abb17e6eafd9 100755 --- a/swift/integration-tests/runner.py +++ b/swift/ql/integration-tests/runner.py @@ -17,6 +17,7 @@ import platform this_dir = pathlib.Path(__file__).parent.resolve() +codeql_root = this_dir.parents[2] def options(): p = argparse.ArgumentParser() @@ -30,7 +31,7 @@ def options(): def execute_test(path): - shutil.rmtree(path.parent / "db", ignore_errors=True) + shutil.rmtree(path.parent / "test-db", ignore_errors=True) return subprocess.run([sys.executable, "-u", path.name], cwd=path.parent).returncode == 0 def skipped(test): @@ -51,18 +52,19 @@ def main(opts): return False os.environ["PYTHONPATH"] = str(this_dir) + os.environ["CODEQL_CONFIG_FILE"] = "/dev/null" failed_db_creation = [] succesful_db_creation = [] for t in tests: (succesful_db_creation if execute_test(t) else failed_db_creation).append(t) if succesful_db_creation: - codeql_root = this_dir.parents[1] cmd = [ "codeql", "test", "run", f"--additional-packs={codeql_root}", "--keep-databases", - "--dataset=db/db-swift", + "--no-cleanup", + "--dataset=test-db/db-swift", f"--threads={opts.threads}", ] if opts.check_databases: From 5a771ad2cf46d0b3679f65192044d0974813ca57 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Mon, 25 Mar 2024 10:42:16 +0100 Subject: [PATCH 504/731] Swift: bump python version --- swift/.python-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/.python-version b/swift/.python-version index c7413b842fc0..2c0733315e41 100644 --- a/swift/.python-version +++ b/swift/.python-version @@ -1 +1 @@ -3.8.14 +3.11 From 0fa40af13180395d14a76938a8e9ada1e5252d0d Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Mon, 25 Mar 2024 11:49:19 +0100 Subject: [PATCH 505/731] Swift: fix last references to old integration test location --- codeql-workspace.yml | 1 - swift/logging/tests/assertion-diagnostics/BUILD.bazel | 2 +- swift/ql/integration-tests/BUILD.bazel | 2 +- .../ql/integration-tests/posix-only/deduplication/Relevant.qll | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/codeql-workspace.yml b/codeql-workspace.yml index 7078818d1f31..9bb15b5d4a5c 100644 --- a/codeql-workspace.yml +++ b/codeql-workspace.yml @@ -28,7 +28,6 @@ provide: - "misc/suite-helpers/qlpack.yml" - "ruby/extractor-pack/codeql-extractor.yml" - "swift/extractor-pack/codeql-extractor.yml" - - "swift/integration-tests/qlpack.yml" - "ql/extractor-pack/codeql-extractor.yml" - ".github/codeql/extensions/**/codeql-pack.yml" diff --git a/swift/logging/tests/assertion-diagnostics/BUILD.bazel b/swift/logging/tests/assertion-diagnostics/BUILD.bazel index ea31eac779af..86fbbbee7c7f 100644 --- a/swift/logging/tests/assertion-diagnostics/BUILD.bazel +++ b/swift/logging/tests/assertion-diagnostics/BUILD.bazel @@ -17,5 +17,5 @@ py_test( "diagnostics.expected", ":assert-false", ], - deps = ["//swift/integration-tests:integration_tests"], + deps = ["//swift/ql/integration-tests:utils"], ) diff --git a/swift/ql/integration-tests/BUILD.bazel b/swift/ql/integration-tests/BUILD.bazel index 2fe1553da0ec..06c7eb44bee7 100644 --- a/swift/ql/integration-tests/BUILD.bazel +++ b/swift/ql/integration-tests/BUILD.bazel @@ -1,5 +1,5 @@ py_library( - name = "integration_tests", + name = "utils", srcs = [ "create_database_utils.py", "diagnostics_test_utils.py", diff --git a/swift/ql/integration-tests/posix-only/deduplication/Relevant.qll b/swift/ql/integration-tests/posix-only/deduplication/Relevant.qll index bab91e5829dc..fb76e5e35b47 100644 --- a/swift/ql/integration-tests/posix-only/deduplication/Relevant.qll +++ b/swift/ql/integration-tests/posix-only/deduplication/Relevant.qll @@ -1,5 +1,5 @@ import swift predicate relevant(Locatable loc) { - loc.getLocation().getFile().getName().matches("%/swift/integration-tests/%/Sources/%") + loc.getLocation().getFile().getName().matches("%/swift/ql/integration-tests/%/Sources/%") } From 5ab52441712dbeb8f6240209411b9128444517e7 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 25 Mar 2024 11:43:02 +0100 Subject: [PATCH 506/731] Change public messages to not include 'buildless' --- csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs | 8 ++++---- .../all-platforms/standalone/diagnostics.expected | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs index bc155ea5da84..3e9a49526455 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs @@ -306,9 +306,9 @@ void exitCallback(int ret, string msg, bool silent) AddDiagnostic(new DiagnosticMessage( Options.Language, "buildless/mode-active", - "C# was extracted in buildless mode", + "C# with build-mode set to 'none'", visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), - markdownMessage: "C# was extracted in buildless mode. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", + markdownMessage: "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", severity: DiagnosticMessage.TspSeverity.Note )); } @@ -327,9 +327,9 @@ void exitCallback(int ret, string msg, bool silent) AddDiagnostic(new DiagnosticMessage( Options.Language, "buildless/complete", - "C# buildless extraction completed", + "C# analysis with build-mode 'none' completed", visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true), - markdownMessage: "C# buildless extraction has completed.", + markdownMessage: "C# analysis with build-mode 'none' completed.", severity: DiagnosticMessage.TspSeverity.Unknown )); } diff --git a/csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected b/csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected index cc9b35b27b83..f5704ce12bbb 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone/diagnostics.expected @@ -1,10 +1,10 @@ { - "markdownMessage": "C# buildless extraction has completed.", + "markdownMessage": "C# analysis with build-mode 'none' completed.", "severity": "unknown", "source": { "extractorName": "csharp", "id": "csharp/autobuilder/buildless/complete", - "name": "C# buildless extraction completed" + "name": "C# analysis with build-mode 'none' completed" }, "visibility": { "cliSummaryTable": true, @@ -13,12 +13,12 @@ } } { - "markdownMessage": "C# was extracted in buildless mode. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", + "markdownMessage": "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", "severity": "note", "source": { "extractorName": "csharp", "id": "csharp/autobuilder/buildless/mode-active", - "name": "C# was extracted in buildless mode" + "name": "C# with build-mode set to 'none'" }, "visibility": { "cliSummaryTable": true, From 148033e020d51585be0aed58dd75a0dd27791a65 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Mon, 25 Mar 2024 12:05:22 +0100 Subject: [PATCH 507/731] Swift: fix assertion diagnostics test --- swift/logging/tests/assertion-diagnostics/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/logging/tests/assertion-diagnostics/test.py b/swift/logging/tests/assertion-diagnostics/test.py index d18cfe7dff92..03c0334fd0b5 100644 --- a/swift/logging/tests/assertion-diagnostics/test.py +++ b/swift/logging/tests/assertion-diagnostics/test.py @@ -2,7 +2,7 @@ import os import subprocess # We have to use importlib due to the '-' in the path -diagnostics_test_utils = importlib.import_module("swift.integration-tests.diagnostics_test_utils") +diagnostics_test_utils = importlib.import_module("swift.ql.integration-tests.diagnostics_test_utils") test_dir = "swift/logging/tests/assertion-diagnostics" From 6707fc3a7c68f257cb99191a93befba5ef9e8b21 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Mon, 25 Mar 2024 12:20:13 +0100 Subject: [PATCH 508/731] Swift: remove wrong flag in `runner.py` --- swift/ql/integration-tests/runner.py | 1 - 1 file changed, 1 deletion(-) diff --git a/swift/ql/integration-tests/runner.py b/swift/ql/integration-tests/runner.py index abb17e6eafd9..156ce6c425c5 100755 --- a/swift/ql/integration-tests/runner.py +++ b/swift/ql/integration-tests/runner.py @@ -63,7 +63,6 @@ def main(opts): "codeql", "test", "run", f"--additional-packs={codeql_root}", "--keep-databases", - "--no-cleanup", "--dataset=test-db/db-swift", f"--threads={opts.threads}", ] From b94d33d78dda22bc762d57439643d85ec41d7e31 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 25 Mar 2024 12:27:36 +0100 Subject: [PATCH 509/731] Add buildless failed diagnostic --- .../Semmle.Autobuild.Shared/Autobuilder.cs | 32 +++++++++++++------ .../DependencyManager.cs | 5 +++ .../Extractor.cs | 2 +- .../standalone_failed/diagnostics.expected | 28 ++++++++++++++++ .../standalone_failed/standalone.csproj | 14 ++++++++ .../all-platforms/standalone_failed/test.py | 6 ++++ 6 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_failed/diagnostics.expected create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_failed/standalone.csproj create mode 100644 csharp/ql/integration-tests/all-platforms/standalone_failed/test.py diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs index 3e9a49526455..685f9752a2f3 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs @@ -322,16 +322,30 @@ void exitCallback(int ret, string msg, bool silent) .Select(result => result.ToDiagnosticMessage(this, diagSeverity)) .ForEach(AddDiagnostic); - if (buildResult == 0 && IsBuildless) + if (IsBuildless) { - AddDiagnostic(new DiagnosticMessage( - Options.Language, - "buildless/complete", - "C# analysis with build-mode 'none' completed", - visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true), - markdownMessage: "C# analysis with build-mode 'none' completed.", - severity: DiagnosticMessage.TspSeverity.Unknown - )); + if (buildResult == 0) + { + AddDiagnostic(new DiagnosticMessage( + Options.Language, + "buildless/complete", + "C# analysis with build-mode 'none' completed", + visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true), + markdownMessage: "C# analysis with build-mode 'none' completed.", + severity: DiagnosticMessage.TspSeverity.Unknown + )); + } + else + { + AddDiagnostic(new DiagnosticMessage( + Options.Language, + "buildless/failed", + "C# analysis with build-mode 'none' failed", + visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), + markdownMessage: "C# analysis with build-mode 'none' failed.", + severity: DiagnosticMessage.TspSeverity.Error + )); + } } return buildResult; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index c4c901a3cc43..713d52d8e3f9 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -728,6 +728,11 @@ private void ResolveConflicts(IEnumerable<string> frameworkPaths) /// </summary> public IEnumerable<string> GeneratedSourceFiles => generatedSources; + /// <summary> + /// All of the non-generated source files in the source directory. + /// </summary> + public IEnumerable<string> NonGeneratedSourcesFiles => nonGeneratedSources; + /// <summary> /// All of the source files in the source directory. /// </summary> diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index d868768e3504..9a58011196cc 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -146,7 +146,7 @@ public static ExitCode Run(Options options) logger.Log(Severity.Info, "Extracting C# in buildless mode"); using var dependencyManager = new DependencyManager(options.SrcDir, logger); - if (!dependencyManager.AllSourceFiles.Any()) + if (!dependencyManager.NonGeneratedSourcesFiles.Any()) { logger.Log(Severity.Error, "No source files found"); return ExitCode.Errors; diff --git a/csharp/ql/integration-tests/all-platforms/standalone_failed/diagnostics.expected b/csharp/ql/integration-tests/all-platforms/standalone_failed/diagnostics.expected new file mode 100644 index 000000000000..65b8c89ce707 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_failed/diagnostics.expected @@ -0,0 +1,28 @@ +{ + "markdownMessage": "C# analysis with build-mode 'none' failed.", + "severity": "error", + "source": { + "extractorName": "csharp", + "id": "csharp/autobuilder/buildless/failed", + "name": "C# analysis with build-mode 'none' failed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} +{ + "markdownMessage": "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", + "severity": "note", + "source": { + "extractorName": "csharp", + "id": "csharp/autobuilder/buildless/mode-active", + "name": "C# with build-mode set to 'none'" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} diff --git a/csharp/ql/integration-tests/all-platforms/standalone_failed/standalone.csproj b/csharp/ql/integration-tests/all-platforms/standalone_failed/standalone.csproj new file mode 100644 index 000000000000..324eba5d4ef1 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_failed/standalone.csproj @@ -0,0 +1,14 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net8.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + + <Target Name="DeleteBinObjFolders" BeforeTargets="Clean"> + <RemoveDir Directories=".\bin" /> + <RemoveDir Directories=".\obj" /> + </Target> +</Project> diff --git a/csharp/ql/integration-tests/all-platforms/standalone_failed/test.py b/csharp/ql/integration-tests/all-platforms/standalone_failed/test.py new file mode 100644 index 000000000000..403e8efff237 --- /dev/null +++ b/csharp/ql/integration-tests/all-platforms/standalone_failed/test.py @@ -0,0 +1,6 @@ +from create_database_utils import * +from diagnostics_test_utils import * + +run_codeql_database_create([], db=None, lang="csharp", extra_args=["--build-mode=none"], runFunction=runUnsuccessfully) + +check_diagnostics() From 2f0b54c80192aaf88da798cce70efce029846892 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 25 Mar 2024 12:45:15 +0100 Subject: [PATCH 510/731] Refactor buildless telemetry logging --- .../CSharpAutobuilder.cs | 56 +++++++++++++++++-- .../Semmle.Autobuild.Shared/Autobuilder.cs | 40 ------------- 2 files changed, 50 insertions(+), 46 deletions(-) diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs index b1ebc64cb4c3..fc08cc83f4a6 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs @@ -44,14 +44,16 @@ public class CSharpAutobuilder : Autobuilder<CSharpAutobuildOptions> public override BuildScript GetBuildScript() { var attempt = BuildScript.Failure; - switch (BuildStrategy) + switch (GetCSharpBuildStrategy()) { case CSharpBuildStrategy.CustomBuildCommand: attempt = new BuildCommandRule(DotNetRule.WithDotNet).Analyse(this, false) & CheckExtractorRun(true); break; case CSharpBuildStrategy.Buildless: // No need to check that the extractor has been executed in buildless mode - attempt = new StandaloneBuildRule().Analyse(this, false); + attempt = BuildScript.Bind( + AddBuildlessStartedDiagnostic() & new StandaloneBuildRule().Analyse(this, false), + AddBuildlessEndedDiagnostic); break; case CSharpBuildStrategy.MSBuild: attempt = new MsBuildRule().Analyse(this, false) & CheckExtractorRun(true); @@ -86,6 +88,52 @@ public BuildScript CheckExtractorRun(bool warnOnFailure) => return 1; }); + private BuildScript AddBuildlessStartedDiagnostic() + { + return BuildScript.Create(actions => + { + AddDiagnostic(new DiagnosticMessage( + Options.Language, + "buildless/mode-active", + "C# with build-mode set to 'none'", + visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), + markdownMessage: "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", + severity: DiagnosticMessage.TspSeverity.Note + )); + return 0; + }); + } + + private BuildScript AddBuildlessEndedDiagnostic(int buildResult) + { + return BuildScript.Create(actions => + { + if (buildResult == 0) + { + AddDiagnostic(new DiagnosticMessage( + Options.Language, + "buildless/complete", + "C# analysis with build-mode 'none' completed", + visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true), + markdownMessage: "C# analysis with build-mode 'none' completed.", + severity: DiagnosticMessage.TspSeverity.Unknown + )); + } + else + { + AddDiagnostic(new DiagnosticMessage( + Options.Language, + "buildless/failed", + "C# analysis with build-mode 'none' failed", + visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), + markdownMessage: "C# analysis with build-mode 'none' failed.", + severity: DiagnosticMessage.TspSeverity.Error + )); + } + return buildResult; + }); + } + protected override void AutobuildFailureDiagnostic() { // if `ScriptPath` is not null here, the `BuildCommandAuto` rule was @@ -218,10 +266,6 @@ private CSharpBuildStrategy GetCSharpBuildStrategy() return CSharpBuildStrategy.Auto; } - private CSharpBuildStrategy? buildStrategy = null; - private CSharpBuildStrategy BuildStrategy => buildStrategy ??= GetCSharpBuildStrategy(); - public override bool IsBuildless => BuildStrategy == CSharpBuildStrategy.Buildless; - private enum CSharpBuildStrategy { CustomBuildCommand, diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs index 685f9752a2f3..a23d29d2979c 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs @@ -301,18 +301,6 @@ void exitCallback(int ret, string msg, bool silent) var onOutput = BuildOutputHandler(Console.Out); var onError = BuildOutputHandler(Console.Error); - if (IsBuildless) - { - AddDiagnostic(new DiagnosticMessage( - Options.Language, - "buildless/mode-active", - "C# with build-mode set to 'none'", - visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), - markdownMessage: "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", - severity: DiagnosticMessage.TspSeverity.Note - )); - } - var buildResult = script.Run(Actions, startCallback, exitCallback, onOutput, onError); // if the build succeeded, all diagnostics we captured from the build output should be warnings; @@ -322,32 +310,6 @@ void exitCallback(int ret, string msg, bool silent) .Select(result => result.ToDiagnosticMessage(this, diagSeverity)) .ForEach(AddDiagnostic); - if (IsBuildless) - { - if (buildResult == 0) - { - AddDiagnostic(new DiagnosticMessage( - Options.Language, - "buildless/complete", - "C# analysis with build-mode 'none' completed", - visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true), - markdownMessage: "C# analysis with build-mode 'none' completed.", - severity: DiagnosticMessage.TspSeverity.Unknown - )); - } - else - { - AddDiagnostic(new DiagnosticMessage( - Options.Language, - "buildless/failed", - "C# analysis with build-mode 'none' failed", - visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), - markdownMessage: "C# analysis with build-mode 'none' failed.", - severity: DiagnosticMessage.TspSeverity.Error - )); - } - } - return buildResult; } @@ -356,8 +318,6 @@ void exitCallback(int ret, string msg, bool silent) /// </summary> public abstract BuildScript GetBuildScript(); - public virtual bool IsBuildless { get; } = false; - /// <summary> /// Produces a diagnostic for the tool status page that we were unable to automatically From 9c9f4b956ec9342342c0f2cf42d062ea99ece6ea Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Mon, 25 Mar 2024 12:36:44 +0100 Subject: [PATCH 511/731] Swift: fix db in `diagnostics_test_utils.py` --- swift/ql/integration-tests/diagnostics_test_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/ql/integration-tests/diagnostics_test_utils.py b/swift/ql/integration-tests/diagnostics_test_utils.py index d3887e33b325..bc33d8b4277c 100644 --- a/swift/ql/integration-tests/diagnostics_test_utils.py +++ b/swift/ql/integration-tests/diagnostics_test_utils.py @@ -50,7 +50,7 @@ def _normalize_json(data): return "\n".join(entries) -def check_diagnostics(test_dir=".", test_db="db", actual = None): +def check_diagnostics(test_dir=".", test_db="test-db", actual = None): test_dir = pathlib.Path(test_dir) test_db = pathlib.Path(test_db) if actual is None: From 120fb93c23dfd0e86a7439e0f78d0158ec61867b Mon Sep 17 00:00:00 2001 From: Max Schaefer <max-schaefer@github.com> Date: Mon, 25 Mar 2024 13:32:51 +0000 Subject: [PATCH 512/731] Go: Improve QHelp for `go/unsafe-quoting`. --- go/ql/src/Security/CWE-089/StringBreak.qhelp | 51 ++++++++++++++------ 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/go/ql/src/Security/CWE-089/StringBreak.qhelp b/go/ql/src/Security/CWE-089/StringBreak.qhelp index 1c4f2863037f..18717cfee624 100644 --- a/go/ql/src/Security/CWE-089/StringBreak.qhelp +++ b/go/ql/src/Security/CWE-089/StringBreak.qhelp @@ -5,19 +5,21 @@ <overview> <p> -Code that constructs a string containing a quoted substring needs to ensure that any user-provided -data embedded in between the quotes does not itself contain a quote. Otherwise the embedded data -could (accidentally or intentionally) change the structure of the overall string by terminating -the quoted substring early, with potentially severe consequences. If, for example, the string is -later interpreted as an operating-system command or database query, a malicious attacker may be -able to craft input data that enables a command injection or SQL injection attack. +Code that constructs a quoted string literal containing user-provided data needs to ensure that +this data does not itself contain a quote. Otherwise the embedded data could (accidentally or +intentionally) terminate the string literal early and thereby change the structure of the overall +string, with potentially severe consequences. If, for example, the string is later used as +part an operating-system command or database query, an attacker may be able to craft input data +that injects a malicious command. </p> </overview> <recommendation> <p> Sanitize the embedded data appropriately to ensure quotes are escaped, or use an API that does -not rely on manually constructing quoted substrings. +not rely on manually constructing quoted substrings. Make sure to use the appropriate escaping +mechanism, for example double quoting for SQL strings or backslash escaping for shell commands. +When using backslash escaping, the backslash character itself must also be escaped. </p> </recommendation> @@ -29,17 +31,38 @@ then embeds it into a SQL query built using the Squirrel library. </p> <sample src="StringBreak.go"/> <p> -Note that while Squirrel provides a structured API for building SQL queries that mitigates against -common causes of SQL injection vulnerabilities, this code is still vulnerable: if the JSON-encoded -representation of <code>version</code> contains a single quote, this will prematurely close the -surrounding string, changing the structure of the SQL expression being constructed. This could be -exploited to mount a SQL injection attack. +Note that JSON encoding does not escape single quotes in any way, so this code is vulnerable: any +single-quote character in <code>version</code> will prematurely close the surrounding string literal, +changing the structure of the SQL expression being constructed. This could be exploited to mount +a SQL injection attack. </p> <p> -To fix this vulnerability, use Squirrel's placeholder syntax, which avoids the need to explicitly -construct a quoted string. +To fix this vulnerability, use the placeholder syntax from Squirrel's structured API for building +queries, which avoids the need to explicitly construct a quoted string. </p> <sample src="StringBreakGood.go"/> +<p> +In situations where a structured API is not available, make sure to escape quotes before embedding +user-provided data into a quoted string. For example, this is how you can backslash-escape single +quotes using <code>strings.ReplaceAll</code>: +</p> +<sample language="go"> + quoted := strings.ReplaceAll(raw, `\`, `\\`) + quoted = strings.ReplaceAll(quoted, "'", "\\'") +</sample> +<p> +Note that any existing backslash characters in the string must be escaped first, so that they do +not interfere with the escaping of single quotes. +</p> +<p> +In some cases, <code>strconv.Quote</code> is a convenient option for backslash escaping, but note +that it has two limitations: +</p> +<ol> + <li>It only supports double quotes, not single quotes (as in the example).</li> + <li>It puts quotes around the entire string, so it can only be used to construct complete string + literals, not parts of larger string literals.</li> +</ol> </example> <references> From 78912d5eea97423799f7f84ec84d81d4001424ad Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 25 Mar 2024 14:33:51 +0100 Subject: [PATCH 513/731] C#: Reword public mentions of C# buildless --- .../extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs | 2 +- csharp/ql/src/Telemetry/ExtractorInformation.ql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs index d868768e3504..c8ea85e98845 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs @@ -143,7 +143,7 @@ public static ExitCode Run(Options options) stopwatch.Start(); using var logger = new ConsoleLogger(options.Verbosity, logThreadId: true); - logger.Log(Severity.Info, "Extracting C# in buildless mode"); + logger.Log(Severity.Info, "Extracting C# with build-mode set to 'none'"); using var dependencyManager = new DependencyManager(options.SrcDir, logger); if (!dependencyManager.AllSourceFiles.Any()) diff --git a/csharp/ql/src/Telemetry/ExtractorInformation.ql b/csharp/ql/src/Telemetry/ExtractorInformation.ql index 08efbd7b6ec8..8d152c8efa26 100644 --- a/csharp/ql/src/Telemetry/ExtractorInformation.ql +++ b/csharp/ql/src/Telemetry/ExtractorInformation.ql @@ -87,7 +87,7 @@ predicate extractionIsStandalone(string key, int value) { value = 0 and not extractionIsStandalone() ) and - key = "Is buildless extraction" + key = "Is extracted with build-mode set to 'none'" } signature module StatsSig { From d805bbcd2755b83810968cf619bb4c23a77a2868 Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo <dbartol@github.com> Date: Mon, 25 Mar 2024 10:31:11 -0400 Subject: [PATCH 514/731] Use correct model pack name in qltest data extension --- .../kotlin/default-parameter-mad-flow/test.ext.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ext.yml b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ext.yml index 1632b5a8080b..adca3ff50ba3 100644 --- a/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ext.yml +++ b/java/ql/integration-tests/all-platforms/kotlin/default-parameter-mad-flow/test.ext.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: integrationtest-default-parameter-mad-flow + pack: codeql/java-all extensible: summaryModel data: - ["", "ConstructorWithDefaults", True, "ConstructorWithDefaults", "(int,int)", "", "Argument[0]", "Argument[this]", "taint", "manual"] @@ -11,14 +11,14 @@ extensions: - ["", "LibClass", True, "multiParameterTest", "(int,int,int,int)", "", "Argument[0..1]", "ReturnValue", "value", "manual"] - ["", "LibClass", True, "multiParameterExtensionTest", "(int,int,int,int)", "", "Argument[0, 1]", "ReturnValue", "value", "manual"] - addsTo: - pack: integrationtest-default-parameter-mad-flow + pack: codeql/java-all extensible: sourceModel data: - ["", "LibKt", True, "topLevelArgSource", "(SomeToken,int)", "", "Argument[0]", "kotlinMadFlowTest", "manual"] - ["", "LibKt", True, "extensionArgSource", "(String,SomeToken,int)", "", "Argument[1]", "kotlinMadFlowTest", "manual"] - ["", "SourceClass", True, "memberArgSource", "(SomeToken,int)", "", "Argument[0]", "kotlinMadFlowTest", "manual"] - addsTo: - pack: integrationtest-default-parameter-mad-flow + pack: codeql/java-all extensible: sinkModel data: - ["", "SinkClass", True, "SinkClass", "(int,int)", "", "Argument[0]", "kotlinMadFlowTest", "manual"] From 4a4c77e81d4e9bbb85bda4cfdefe4b4d697f499e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:20:57 +0000 Subject: [PATCH 515/731] Remove claims about models-as-data that require you to select a parameter from non-Java languages. We believe this is only possible in Java. --- .../lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll | 4 +--- go/ql/lib/semmle/go/dataflow/ExternalFlow.qll | 4 +--- swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll index 7e22351ee66d..3a09ec2e51b7 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -47,15 +47,13 @@ * * For sources, an `output` can be either "", "Argument[n]", "Argument[n1..n2]", * "Parameter", "Parameter[n]", "Parameter[n1..n2]", or "ReturnValue": - * - "": Selects a read of a selected field, property, or parameter. + * - "": Selects a read of a selected field or property. * - "Argument[n]": Selects the post-update value of an argument in a call to the * selected element. That is, the value of the argument after the call returns. * The arguments are zero-indexed, and `this` specifies the qualifier. * - "Argument[n1..n2]": Similar to "Argument[n]" but select any argument in * the given range. The range is inclusive at both ends. * - "Parameter": Selects the value of a parameter of the selected element. - * "Parameter" is also allowed in case the selected element is already a - * parameter itself. * - "Parameter[n]": Similar to "Parameter" but restricted to a specific * numbered parameter (zero-indexed, and `this` specifies the value of `this`). * - "Parameter[n1..n2]": Similar to "Parameter[n]" but selects any parameter diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll index ba5270483fcd..9df20606d27b 100644 --- a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -34,15 +34,13 @@ * An `output` can be either "", "Argument[n]", "Argument[n1..n2]", "Parameter", * "Parameter[n]", "Parameter[n1..n2]", , "ReturnValue", "ReturnValue[n]", or * "ReturnValue[n1..n2]": - * - "": Selects a read of a selected field, or a selected parameter. + * - "": Selects a read of a selected field. * - "Argument[n]": Selects the post-update value of an argument in a call to the * selected element. That is, the value of the argument after the call returns. * The arguments are zero-indexed, and `-1` specifies the qualifier. * - "Argument[n1..n2]": Similar to "Argument[n]" but select any argument in * the given range. The range is inclusive at both ends. * - "Parameter": Selects the value of a parameter of the selected element. - * "Parameter" is also allowed in case the selected element is already a - * parameter itself. * - "Parameter[n]": Similar to "Parameter" but restricted to a specific * numbered parameter (zero-indexed, and `-1` specifies the value of `this`). * - "Parameter[n1..n2]": Similar to "Parameter[n]" but selects any parameter diff --git a/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll b/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll index 35515cb548c1..69a61642562d 100644 --- a/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll +++ b/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll @@ -44,15 +44,13 @@ * * An `output` can be either "", "Argument[n]", "Argument[n1..n2]", "Parameter", * "Parameter[n]", "Parameter[n1..n2]", or "ReturnValue": - * - "": Selects a read of a selected field, or a selected parameter. + * - "": Selects a read of a selected field. * - "Argument[n]": Selects the post-update value of an argument in a call to the * selected element. That is, the value of the argument after the call returns. * The arguments are zero-indexed, and `-1` specifies the qualifier. * - "Argument[n1..n2]": Similar to "Argument[n]" but select any argument in * the given range. The range is inclusive at both ends. * - "Parameter": Selects the value of a parameter of the selected element. - * "Parameter" is also allowed in case the selected element is already a - * parameter itself. * - "Parameter[n]": Similar to "Parameter" but restricted to a specific * numbered parameter (zero-indexed, and `-1` specifies the value of `this`). * - "Parameter[n1..n2]": Similar to "Parameter[n]" but selects any parameter From b2a301c206795e4172f696f254164ccee4f45a42 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 25 Mar 2024 15:45:37 +0000 Subject: [PATCH 516/731] Swift: Remove claims about 'Annotated'. --- swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll b/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll index 69a61642562d..9750b05fef1e 100644 --- a/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll +++ b/swift/ql/lib/codeql/swift/dataflow/ExternalFlow.qll @@ -25,11 +25,7 @@ * types can be short names or fully qualified names (mixing these two options * is not allowed within a single signature). * 6. The `ext` column specifies additional API-graph-like edges. Currently - * there are only two valid values: "" and "Annotated". The empty string has no - * effect. "Annotated" applies if `name` and `signature` were left blank and - * acts by selecting an element that is annotated by the annotation type - * selected by the first 4 columns. This can be another member such as a field - * or method, or a parameter. + * there is only one valid value: "". * 7. The `input` column specifies how data enters the element selected by the * first 6 columns, and the `output` column specifies how data leaves the * element selected by the first 6 columns. An `input` can be either "", From 33b807f3bb2dedef59e9d1760de4bd2bd1a27725 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Wed, 13 Mar 2024 16:52:06 +0000 Subject: [PATCH 517/731] Parameters and local variables: add `isAnonymous` predicate --- java/ql/lib/semmle/code/java/Expr.qll | 7 ++++++- java/ql/lib/semmle/code/java/Variable.qll | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 3442855a91a7..315b4d19b9b8 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1691,6 +1691,9 @@ class LocalVariableDeclExpr extends Expr, @localvariabledeclexpr { /** Gets the name of the variable declared by this local variable declaration expression. */ string getName() { result = this.getVariable().getName() } + /** Holds if this is an anonymous local variable, `_` */ + predicate isAnonymous() { this.getName() = "" } + /** * Gets the switch statement or expression whose pattern declares this identifier, if any. */ @@ -1763,7 +1766,9 @@ class LocalVariableDeclExpr extends Expr, @localvariabledeclexpr { } /** Gets a printable representation of this expression. */ - override string toString() { result = this.getName() } + override string toString() { + if this.getName() = "" then result = "<anonymous local variable>" else result = this.getName() + } override string getAPrimaryQlClass() { result = "LocalVariableDeclExpr" } } diff --git a/java/ql/lib/semmle/code/java/Variable.qll b/java/ql/lib/semmle/code/java/Variable.qll index 8ed650d5f169..f28e378c2335 100644 --- a/java/ql/lib/semmle/code/java/Variable.qll +++ b/java/ql/lib/semmle/code/java/Variable.qll @@ -117,4 +117,11 @@ class Parameter extends Element, @param, LocalScopeVariable { } override string getAPrimaryQlClass() { result = "Parameter" } + + override string toString() { + if this.getName() = "" then result = "<anonymous parameter>" else result = super.toString() + } + + /** Holds if this is an anonymous parameter, `_` */ + predicate isAnonymous() { this.getName() = "" } } From c283894b4b27605f7f64929d12b80789ebde0454 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 14:33:48 +0000 Subject: [PATCH 518/731] Fix typo --- java/ql/lib/semmle/code/java/PrintAst.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/PrintAst.qll b/java/ql/lib/semmle/code/java/PrintAst.qll index 4315e66ec060..bc2b81a1a33d 100644 --- a/java/ql/lib/semmle/code/java/PrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrintAst.qll @@ -439,7 +439,7 @@ private class SingleLocalVarDeclParent extends ExprOrStmt { * want to use a synthetic node to variable declaration and its type access. * * Excludes `LocalVariableDeclStmt` and `ForStmt`, as they can hold multiple declarations. - * For these cases, either a synthetic node is not necassary or a different synthetic node is used. + * For these cases, either a synthetic node is not necessary or a different synthetic node is used. */ final class SingleLocalVarDeclParentNode extends ExprStmtNode { SingleLocalVarDeclParent lvdp; From f44becea7f4c6b4a4544965c6b2746d6dffd7fdd Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 14:34:17 +0000 Subject: [PATCH 519/731] Implement multiple pattern case and fall-through pattern case support --- .../lib/semmle/code/java/ControlFlowGraph.qll | 52 ++++++++++++---- java/ql/lib/semmle/code/java/Dependency.qll | 2 +- .../lib/semmle/code/java/DependencyCounts.qll | 2 +- java/ql/lib/semmle/code/java/Expr.qll | 28 ++++++--- .../lib/semmle/code/java/PrettyPrintAst.qll | 59 +++++++++++++------ java/ql/lib/semmle/code/java/PrintAst.qll | 32 ++++++++-- java/ql/lib/semmle/code/java/Statement.qll | 15 +++-- java/ql/lib/semmle/code/java/Variable.qll | 8 ++- .../semmle/code/java/controlflow/Guards.qll | 14 ++++- 9 files changed, 161 insertions(+), 51 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll index 24a506f21cea..89e4ac38675e 100644 --- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll +++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll @@ -489,14 +489,14 @@ private module ControlFlowGraphImpl { private Stmt getSwitchStatement(SwitchBlock switch, int i) { result.isNthChildOf(switch, i) } /** - * Holds if `last` is the last node in a pattern case `pc`'s succeeding bind-and-test operation, + * Holds if `last` is the last node in any of pattern case `pc`'s succeeding bind-and-test operations, * immediately before either falling through to execute successor statements or execute a rule body * if present. `completion` is the completion kind of the last operation. */ private predicate lastPatternCaseMatchingOp( PatternCase pc, ControlFlowNode last, Completion completion ) { - last(pc.getPattern(), last, completion) and + last(pc.getAPattern(), last, completion) and completion = NormalCompletion() and not exists(pc.getGuard()) or @@ -776,6 +776,19 @@ private module ControlFlowGraphImpl { last(try.getFinally(), last, NormalCompletion()) } + private predicate isNextNormalSwitchStmt(SwitchBlock switch, Stmt pred, Stmt succ) { + exists(int i, Stmt immediateSucc | + getSwitchStatement(switch, i) = pred and + getSwitchStatement(switch, i + 1) = immediateSucc and + ( + succ = immediateSucc and + not immediateSucc instanceof PatternCase + or + isNextNormalSwitchStmt(switch, immediateSucc, succ) + ) + ) + } + /** * Bind `last` to a cfg node nested inside `n` (or, indeed, `n` itself) such * that `last` may be the last node during an execution of `n` and finish @@ -927,9 +940,15 @@ private module ControlFlowGraphImpl { completion != anonymousBreakCompletion() and not completion instanceof NormalOrBooleanCompletion or - // if the last case completes normally, then so does the switch - last(switch.getStmt(strictcount(switch.getAStmt()) - 1), last, NormalCompletion()) and - completion = NormalCompletion() + // if a statement without a non-pattern-case successor completes normally (or for a pattern case + // the guard succeeds) then the switch completes normally. + exists(Stmt lastNormalStmt, Completion stmtCompletion | + lastNormalStmt = getSwitchStatement(switch, _) and + not isNextNormalSwitchStmt(switch, lastNormalStmt, _) and + last(lastNormalStmt, last, stmtCompletion) and + (stmtCompletion = NormalCompletion() or stmtCompletion = BooleanCompletion(true, _)) and + completion = NormalCompletion() + ) or // if no default case exists, then normal completion of the expression may terminate the switch // Note this can't happen if there are pattern cases or a null literal, as @@ -973,9 +992,9 @@ private module ControlFlowGraphImpl { ) or // A pattern case statement can complete: - // * On failure of its type test (boolean false) + // * On failure of its final type test (boolean false) // * On failure of its guard test if any (boolean false) - // * On completion of its variable declarations, if it is not a rule and has no guard (normal completion) + // * On completion of one of its pattern variable declarations, if it is not a rule and has no guard (normal completion) // * On success of its guard test, if it is not a rule (boolean true) // (the latter two cases are accounted for by lastPatternCaseMatchingOp) exists(PatternCase pc | n = pc | @@ -1315,9 +1334,13 @@ private module ControlFlowGraphImpl { // Note this includes non-rule case statements and the successful pattern match successor // of a non-rule pattern case statement. Rule case statements do not complete normally // (they always break or yield). - exists(int i | - last(getSwitchStatement(switch, i), n, completion) and - result = first(getSwitchStatement(switch, i + 1)) and + // Exception: falling through into a pattern case statement (which necessarily does not + // declare any named variables) must skip one or more such statements, otherwise we would + // incorrectly apply their type test and/or guard. + exists(Stmt pred, Stmt succ | + isNextNormalSwitchStmt(switch, pred, succ) and + last(pred, n, completion) and + result = first(succ) and (completion = NormalCompletion() or completion = BooleanCompletion(true, _)) ) or @@ -1328,16 +1351,19 @@ private module ControlFlowGraphImpl { ) or // Pattern cases have internal edges: - // * Type test success -true-> variable declarations + // * Type test success -true-> one of the possible sets of variable declarations + // n.b. for unnamed patterns (e.g. case A _, B _) this means that *one* of the + // type tests has succeeded. There aren't enough nodes in the AST to describe + // a sequential test in detail, so CFG consumers have to watch out for this case. // * Variable declarations -normal-> guard evaluation // * Variable declarations -normal-> rule execution (when there is no guard) // * Guard success -true-> rule execution exists(PatternCase pc | n = pc and completion = basicBooleanCompletion(true) and - result = first(pc.getPattern()) + result = first(pc.getAPattern()) or - last(pc.getPattern(), n, completion) and + last(pc.getAPattern(), n, completion) and completion = NormalCompletion() and result = first(pc.getGuard()) or diff --git a/java/ql/lib/semmle/code/java/Dependency.qll b/java/ql/lib/semmle/code/java/Dependency.qll index 1bdf01400797..29dc81a19600 100644 --- a/java/ql/lib/semmle/code/java/Dependency.qll +++ b/java/ql/lib/semmle/code/java/Dependency.qll @@ -84,7 +84,7 @@ predicate depends(RefType t, RefType dep) { or // A type accessed in a pattern-switch case statement in `t`. exists(PatternCase pc | t = pc.getEnclosingCallable().getDeclaringType() | - usesType(pc.getPattern().getAChildExpr*().getType(), dep) + usesType(pc.getAPattern().getAChildExpr*().getType(), dep) ) ) } diff --git a/java/ql/lib/semmle/code/java/DependencyCounts.qll b/java/ql/lib/semmle/code/java/DependencyCounts.qll index ca0acdedcded..464f88471884 100644 --- a/java/ql/lib/semmle/code/java/DependencyCounts.qll +++ b/java/ql/lib/semmle/code/java/DependencyCounts.qll @@ -107,7 +107,7 @@ predicate numDepends(RefType t, RefType dep, int value) { or // the type accessed in a pattern-switch case statement in `t`. exists(PatternCase pc | elem = pc and t = pc.getEnclosingCallable().getDeclaringType() | - usesType(pc.getPattern().getAChildExpr*().getType(), dep) + usesType(pc.getAPattern().getAChildExpr*().getType(), dep) ) ) } diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 315b4d19b9b8..ce2612c9a80e 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1590,7 +1590,9 @@ class InstanceOfExpr extends Expr, @instanceofexpr { * Note that this won't get anything when record pattern matching is used-- for more general patterns, * use `getPattern`. */ - LocalVariableDeclExpr getLocalVariableDeclExpr() { result = this.getPattern().asBindingPattern() } + LocalVariableDeclExpr getLocalVariableDeclExpr() { + result = this.getPattern().asBindingOrUnnamedPattern() + } /** * Gets the access to the type on the right-hand side of the `instanceof` operator. @@ -1681,7 +1683,10 @@ class LocalVariableDeclExpr extends Expr, @localvariabledeclexpr { or exists(InstanceOfExpr ioe | this.getParent() = ioe | result.isNthChildOf(ioe, 1)) or - exists(PatternCase pc | this.getParent() = pc | result.isNthChildOf(pc, -2)) + exists(PatternCase pc, int index, int typeAccessIdx | this.isNthChildOf(pc, index) | + (if index = 0 then typeAccessIdx = -4 else typeAccessIdx = (-3 - index)) and + result.isNthChildOf(pc, typeAccessIdx) + ) or exists(RecordPatternExpr rpe, int index | this.isNthChildOf(rpe, index) and result.isNthChildOf(rpe, -(index + 1)) @@ -1742,17 +1747,17 @@ class LocalVariableDeclExpr extends Expr, @localvariabledeclexpr { or exists(SwitchStmt switch | result = switch.getExpr() and - this = switch.getAPatternCase().getPattern().asBindingPattern() + this = switch.getAPatternCase().getAPattern().asBindingOrUnnamedPattern() ) or exists(SwitchExpr switch | result = switch.getExpr() and - this = switch.getAPatternCase().getPattern().asBindingPattern() + this = switch.getAPatternCase().getAPattern().asBindingOrUnnamedPattern() ) or exists(InstanceOfExpr ioe | result = ioe.getExpr() and - this = ioe.getPattern().asBindingPattern() + this = ioe.getPattern().asBindingOrUnnamedPattern() ) } @@ -2676,9 +2681,9 @@ class NotNullExpr extends UnaryExpr, @notnullexpr { } /** - * A binding or record pattern. + * A binding, unnamed or record pattern. * - * Note binding patterns are represented as `LocalVariableDeclExpr`s. + * Note binding and unnamed patterns are represented as `LocalVariableDeclExpr`s. */ class PatternExpr extends Expr { PatternExpr() { @@ -2691,9 +2696,14 @@ class PatternExpr extends Expr { } /** - * Gets this pattern cast to a binding pattern. + * Gets this pattern cast to a binding or unnamed pattern. + */ + LocalVariableDeclExpr asBindingOrUnnamedPattern() { result = this } + + /** + * DEPRECATED: alias for `asBindingOrUnnamedPattern`. */ - LocalVariableDeclExpr asBindingPattern() { result = this } + deprecated LocalVariableDeclExpr asBindingPattern() { result = this.asBindingOrUnnamedPattern() } /** * Gets this pattern cast to a record pattern. diff --git a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll index 6a5e5aa698bf..2b0cd1a7899f 100644 --- a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll @@ -386,7 +386,7 @@ private class PpInstanceOfExpr extends PpAst, InstanceOfExpr { i = 3 and result = " " and this.getPattern() instanceof LocalVariableDeclExpr or i = 4 and - result = this.getPattern().asBindingPattern().getName() + result = this.getPattern().asBindingOrUnnamedPattern().getName() } override PpAst getChild(int i) { @@ -782,28 +782,53 @@ private class PpSwitchCase extends PpAst, SwitchCase { } private class PpPatternCase extends PpAst, PatternCase { + private TypeAccess getPatternTypeAccess(int n) { + result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess() + } + + private predicate isAnonymousPattern(int n) { + this.getPatternAtIndex(n).asBindingOrUnnamedPattern().isAnonymous() + } + override string getPart(int i) { - i = 0 and result = "case " - or - i = 2 and this.getPattern() instanceof LocalVariableDeclExpr and result = " " - or - i = 3 and result = this.getPattern().asBindingPattern().getName() - or - i = 4 and result = ":" and not this.isRule() - or - i = 4 and result = " -> " and this.isRule() + exists(int n, int base | exists(this.getPatternAtIndex(n)) and base = n * 4 | + i = base and + (if n = 0 then result = "case " else result = ", ") + or + i = base + 2 and + this.getPatternAtIndex(n) instanceof LocalVariableDeclExpr and + not this.isAnonymousPattern(n) and + result = " " + or + i = base + 3 and + ( + if this.isAnonymousPattern(n) + then result = "_" + else result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getName() + ) + ) or - i = 6 and result = ";" and exists(this.getRuleExpression()) + exists(int base | base = (max(int n | exists(this.getPatternAtIndex(n))) + 1) * 4 | + i = base and result = ":" and not this.isRule() + or + i = base and result = " -> " and this.isRule() + or + i = base + 2 and result = ";" and exists(this.getRuleExpression()) + ) } override PpAst getChild(int i) { - i = 1 and result = this.getPattern().asBindingPattern().getTypeAccess() - or - i = 1 and result = this.getPattern().asRecordPattern() - or - i = 5 and result = this.getRuleExpression() + exists(int n, int base | exists(this.getPatternAtIndex(n)) and base = n * 4 | + i = 1 and result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess() + or + i = 1 and result = this.getPatternAtIndex(n).asRecordPattern() + ) or - i = 5 and result = this.getRuleStatement() + exists(int base | base = (max(int n | exists(this.getPatternAtIndex(n))) + 1) * 4 | + i = base + 1 and result = this.getRuleExpression() + or + i = base + 1 and result = this.getRuleStatement() + ) } } diff --git a/java/ql/lib/semmle/code/java/PrintAst.qll b/java/ql/lib/semmle/code/java/PrintAst.qll index bc2b81a1a33d..9444a4a66bf3 100644 --- a/java/ql/lib/semmle/code/java/PrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrintAst.qll @@ -117,7 +117,11 @@ private newtype TPrintAstNode = TElementNode(Element el) { shouldPrint(el, _) } or TForInitNode(ForStmt fs) { shouldPrint(fs, _) and exists(fs.getAnInit()) } or TLocalVarDeclNode(LocalVariableDeclExpr lvde) { - shouldPrint(lvde, _) and lvde.getParent() instanceof SingleLocalVarDeclParent + shouldPrint(lvde, _) and + ( + lvde.getParent() instanceof SingleLocalVarDeclParent or + lvde.getParent() instanceof PatternCase + ) } or TAnnotationsNode(Annotatable ann) { shouldPrint(ann, _) and @@ -415,6 +419,23 @@ final class ForStmtNode extends ExprStmtNode { } } +/** + * A node representing a `PatternCase`. + */ +final class PatternCaseNode extends ExprStmtNode { + PatternCase pc; + + PatternCaseNode() { pc = element } + + override PrintAstNode getChild(int childIndex) { + result = super.getChild(childIndex) and + not result.(ElementNode).getElement() instanceof LocalVariableDeclExpr and + not result.(ElementNode).getElement() instanceof TypeAccess + or + result = TLocalVarDeclNode(pc.getPatternAtIndex(childIndex)) + } +} + /** * An element that can be the parent of up to one `LocalVariableDeclExpr` for which we want * to use a synthetic node to hold the variable declaration and its `TypeAccess`. @@ -423,8 +444,7 @@ private class SingleLocalVarDeclParent extends ExprOrStmt { SingleLocalVarDeclParent() { this instanceof EnhancedForStmt or this instanceof CatchClause or - this.(InstanceOfExpr).isPattern() or - this instanceof PatternCase + this.(InstanceOfExpr).isPattern() } /** Gets the variable declaration that this element contains */ @@ -643,7 +663,11 @@ final class LocalVarDeclSynthNode extends PrintAstNode, TLocalVarDeclNode { LocalVarDeclSynthNode() { this = TLocalVarDeclNode(lvde) } - override string toString() { result = "(Single Local Variable Declaration)" } + override string toString() { + if lvde.getParent() instanceof PatternCase + then result = "(Pattern case declaration)" + else result = "(Single Local Variable Declaration)" + } override ElementNode getChild(int childIndex) { childIndex = 0 and diff --git a/java/ql/lib/semmle/code/java/Statement.qll b/java/ql/lib/semmle/code/java/Statement.qll index 05d105e4de32..c25ccef88ba4 100644 --- a/java/ql/lib/semmle/code/java/Statement.qll +++ b/java/ql/lib/semmle/code/java/Statement.qll @@ -539,12 +539,19 @@ class ConstCase extends SwitchCase { /** A pattern case of a `switch` statement */ class PatternCase extends SwitchCase { - PatternExpr pattern; + PatternCase() { exists(PatternExpr pe | pe.isNthChildOf(this, _)) } - PatternCase() { pattern.isNthChildOf(this, 0) } + /** + * DEPRECATED: alias for getPatternAtIndex(0) + */ + deprecated PatternExpr getPattern() { result = this.getPatternAtIndex(0) } + + /** + * Gets this case's `n`th pattern. + */ + PatternExpr getPatternAtIndex(int n) { result.isNthChildOf(this, n) } - /** Gets this case's pattern. */ - PatternExpr getPattern() { result = pattern } + PatternExpr getAPattern() { result = this.getPatternAtIndex(_) } /** Gets the guard applicable to this pattern case, if any. */ Expr getGuard() { result.isNthChildOf(this, -3) } diff --git a/java/ql/lib/semmle/code/java/Variable.qll b/java/ql/lib/semmle/code/java/Variable.qll index f28e378c2335..a4cf09df055d 100644 --- a/java/ql/lib/semmle/code/java/Variable.qll +++ b/java/ql/lib/semmle/code/java/Variable.qll @@ -58,7 +58,13 @@ class LocalVariableDecl extends @localvar, LocalScopeVariable { /** Gets the callable in which this declaration occurs. */ Callable getEnclosingCallable() { result = this.getCallable() } - override string toString() { result = this.getType().getName() + " " + this.getName() } + override string toString() { + exists(string sourceName | + if this.getName() = "" then sourceName = "_" else sourceName = this.getName() + | + result = this.getType().getName() + " " + sourceName + ) + } /** Gets the initializer expression of this local variable declaration. */ override Expr getInitializer() { result = this.getDeclExpr().getInit() } diff --git a/java/ql/lib/semmle/code/java/controlflow/Guards.qll b/java/ql/lib/semmle/code/java/controlflow/Guards.qll index a97cf1f8f57e..94052d289db4 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Guards.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Guards.qll @@ -115,8 +115,20 @@ private predicate isNonFallThroughPredecessor(SwitchCase sc, ControlFlowNode pre ( pred.(Expr).getParent*() = sc.getSelectorExpr() or - pred.(Expr).getParent*() = getClosestPrecedingPatternCase(sc).getGuard() + // Ambiguous: in the case of `case String _ when x: case "SomeConstant":`, the guard `x` + // passing edge will fall through into the constant case, and the guard failing edge + // will test if the selector equals `"SomeConstant"` and if so branch to the same + // case statement. Therefore don't label this a non-fall-through predecessor. + exists(PatternCase previousPatternCase | + previousPatternCase = getClosestPrecedingPatternCase(sc) + | + pred.(Expr).getParent*() = previousPatternCase.getGuard() and + // Check there is any statement in between the previous pattern case and this one. + not previousPatternCase.getIndex() = sc.getIndex() - 1 + ) or + // Unambigious: on the test-passing edge there must be at least one intervening + // declaration node, including anonymous `_` declarations. pred = getClosestPrecedingPatternCase(sc) ) } From c7cb885e719e8f3bf88a1162bf944b988e61cd65 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:01:09 +0000 Subject: [PATCH 520/731] Add missing javadoc and getUniquePattern predicate --- java/ql/lib/semmle/code/java/Statement.qll | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/java/ql/lib/semmle/code/java/Statement.qll b/java/ql/lib/semmle/code/java/Statement.qll index c25ccef88ba4..0099ad36eb99 100644 --- a/java/ql/lib/semmle/code/java/Statement.qll +++ b/java/ql/lib/semmle/code/java/Statement.qll @@ -551,8 +551,16 @@ class PatternCase extends SwitchCase { */ PatternExpr getPatternAtIndex(int n) { result.isNthChildOf(this, n) } + /** + * Gets any of this case's patterns. + */ PatternExpr getAPattern() { result = this.getPatternAtIndex(_) } + /** + * Gets this case's sole pattern, if there is exactly one. + */ + PatternExpr getUniquePattern() { result = unique(PatternExpr pe | pe = this.getPatternAtIndex(_)) } + /** Gets the guard applicable to this pattern case, if any. */ Expr getGuard() { result.isNthChildOf(this, -3) } From e59487a3248d4d76cb0ae73b63d17d12c87a39d1 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:01:42 +0000 Subject: [PATCH 521/731] Don't regard cases with multiple patterns as conducting a type test --- java/ql/lib/semmle/code/java/controlflow/Guards.qll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/controlflow/Guards.qll b/java/ql/lib/semmle/code/java/controlflow/Guards.qll index 94052d289db4..c3e915b287bf 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Guards.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Guards.qll @@ -213,13 +213,13 @@ class Guard extends ExprParent { or exists(PatternCase pc | this = pc | pc.getSelectorExpr() = testedExpr and - testedType = pc.getPattern().getType() + testedType = pc.getUniquePattern().getType() ) ) and ( if exists(RecordPatternExpr rpe | - rpe = [this.(InstanceOfExpr).getPattern(), this.(PatternCase).getPattern()] + rpe = [this.(InstanceOfExpr).getPattern(), this.(PatternCase).getAPattern()] | not rpe.isUnrestricted() ) From 00c7dd5f922471fd31cd4925e758ae3498312b57 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:03:16 +0000 Subject: [PATCH 522/731] Fix a stray use of getPattern --- java/ql/lib/semmle/code/java/Expr.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index ce2612c9a80e..31a4161cd530 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1708,7 +1708,7 @@ class LocalVariableDeclExpr extends Expr, @localvariabledeclexpr { or pc = result.(SwitchExpr).getAPatternCase() | - this = pc.getPattern().getAChildExpr*() + this = pc.getAPattern().getAChildExpr*() ) } From 29e93edf90347973e81f6d13294cada27e632329 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:05:33 +0000 Subject: [PATCH 523/731] Dataflow: restrict pattern-case flow to unique patterns. --- .../lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index 723b7784b1e0..95faf4fbabce 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -194,12 +194,14 @@ predicate simpleAstFlowStep(Expr e1, Expr e2) { // In the following three cases only record patterns need this flow edge, leading from the bound instanceof // or switch tested expression to a record pattern that will read its fields. Simple binding patterns are // handled via VariableAssign.getSource instead. + // We only consider unique patterns because cases that declare multiple patterns are not allowed to declare + // any identifiers, so can't participate in dataflow. exists(SwitchExpr se | - e1 = se.getExpr() and e2 = se.getACase().(PatternCase).getPattern().asRecordPattern() + e1 = se.getExpr() and e2 = se.getACase().(PatternCase).getUniquePattern().asRecordPattern() ) or exists(SwitchStmt ss | - e1 = ss.getExpr() and e2 = ss.getACase().(PatternCase).getPattern().asRecordPattern() + e1 = ss.getExpr() and e2 = ss.getACase().(PatternCase).getUniquePattern().asRecordPattern() ) or exists(InstanceOfExpr ioe | e1 = ioe.getExpr() and e2 = ioe.getPattern().asRecordPattern()) From d5443b3f108b0a9b82589437e826fd23ecd69f42 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:07:14 +0000 Subject: [PATCH 524/731] Remove dead code --- java/ql/lib/semmle/code/java/PrettyPrintAst.qll | 4 ---- 1 file changed, 4 deletions(-) diff --git a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll index 2b0cd1a7899f..b91d371b1877 100644 --- a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll @@ -782,10 +782,6 @@ private class PpSwitchCase extends PpAst, SwitchCase { } private class PpPatternCase extends PpAst, PatternCase { - private TypeAccess getPatternTypeAccess(int n) { - result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess() - } - private predicate isAnonymousPattern(int n) { this.getPatternAtIndex(n).asBindingOrUnnamedPattern().isAnonymous() } From bc0724e2b3af10905c7cad5eacc577ad1b310e6f Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:14:28 +0000 Subject: [PATCH 525/731] Add change note --- java/ql/lib/change-notes/2024-03-22-anonymous-variables.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 java/ql/lib/change-notes/2024-03-22-anonymous-variables.md diff --git a/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md b/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md new file mode 100644 index 000000000000..029d3dfbff42 --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. +* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. From f66811048dbf9e56b80fc93339117c125ad9e3e6 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:42:16 +0000 Subject: [PATCH 526/731] Fix next-normal-statement predicate --- java/ql/lib/semmle/code/java/ControlFlowGraph.qll | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll index 89e4ac38675e..f8e94dc76844 100644 --- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll +++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll @@ -781,10 +781,9 @@ private module ControlFlowGraphImpl { getSwitchStatement(switch, i) = pred and getSwitchStatement(switch, i + 1) = immediateSucc and ( - succ = immediateSucc and - not immediateSucc instanceof PatternCase - or - isNextNormalSwitchStmt(switch, immediateSucc, succ) + if immediateSucc instanceof PatternCase + then isNextNormalSwitchStmt(switch, immediateSucc, succ) + else succ = immediateSucc ) ) } From c0874ab04b5db910953e3f1dc3187527278ce527 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:42:51 +0000 Subject: [PATCH 527/731] Fix pattern-case variable pretty-printer --- java/ql/lib/semmle/code/java/Expr.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 31a4161cd530..b9b535eb57c8 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -1684,7 +1684,7 @@ class LocalVariableDeclExpr extends Expr, @localvariabledeclexpr { exists(InstanceOfExpr ioe | this.getParent() = ioe | result.isNthChildOf(ioe, 1)) or exists(PatternCase pc, int index, int typeAccessIdx | this.isNthChildOf(pc, index) | - (if index = 0 then typeAccessIdx = -4 else typeAccessIdx = (-3 - index)) and + (if index = 0 then typeAccessIdx = -2 else typeAccessIdx = (-3 - index)) and result.isNthChildOf(pc, typeAccessIdx) ) or From 5243a62a41cac8b0ef3a17b914a5748eba21ca6a Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:44:11 +0000 Subject: [PATCH 528/731] Accept test changes --- .../dependency/PrintAst.expected | 4 ++-- .../library-tests/guards12/PrintAst.expected | 4 ++-- .../library-tests/printAst/PrintAst.expected | 22 +++++++++---------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/java/ql/test/library-tests/dependency/PrintAst.expected b/java/ql/test/library-tests/dependency/PrintAst.expected index ab71b03fe553..5caf6bb4d5b2 100644 --- a/java/ql/test/library-tests/dependency/PrintAst.expected +++ b/java/ql/test/library-tests/dependency/PrintAst.expected @@ -63,7 +63,7 @@ dependency/A.java: # 31| 1: [SwitchStmt] switch (...) # 31| -1: [VarAccess] o # 32| 0: [PatternCase] case <Pattern> -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 32| 0: [TypeAccess] Used2 # 32| 1: [LocalVariableDeclExpr] u2 # 32| 1: [BreakStmt] break @@ -74,7 +74,7 @@ dependency/A.java: # 35| 0: [SwitchExpr] switch (...) # 35| -1: [VarAccess] o # 36| 0: [PatternCase] case <Pattern> -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 36| 0: [TypeAccess] Used3 # 36| 1: [LocalVariableDeclExpr] u3 # 36| 1: [YieldStmt] yield ... diff --git a/java/ql/test/library-tests/guards12/PrintAst.expected b/java/ql/test/library-tests/guards12/PrintAst.expected index 86a8ed3b778c..c54fc31e1573 100644 --- a/java/ql/test/library-tests/guards12/PrintAst.expected +++ b/java/ql/test/library-tests/guards12/PrintAst.expected @@ -52,7 +52,7 @@ Test.java: # 17| 0: [VarAccess] len # 17| 1: [IntegerLiteral] 4 # 17| -1: [BlockStmt] { ... } -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 17| 0: [TypeAccess] String # 17| 1: [LocalVariableDeclExpr] s2 # 18| 1: [ConstCase] case ... @@ -74,7 +74,7 @@ Test.java: # 23| 0: [VarAccess] len # 23| 1: [IntegerLiteral] 4 # 23| -1: [BlockStmt] { ... } -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 23| 0: [TypeAccess] String # 23| 1: [LocalVariableDeclExpr] s2 # 24| 2: [ConstCase] case ... diff --git a/java/ql/test/library-tests/printAst/PrintAst.expected b/java/ql/test/library-tests/printAst/PrintAst.expected index be523390620a..07b4772718fa 100644 --- a/java/ql/test/library-tests/printAst/PrintAst.expected +++ b/java/ql/test/library-tests/printAst/PrintAst.expected @@ -127,7 +127,7 @@ A.java: # 54| -1: [VarAccess] System.out # 54| -1: [TypeAccess] System # 54| 0: [VarAccess] s -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 54| 0: [TypeAccess] String # 54| 1: [LocalVariableDeclExpr] s # 55| 1: [PatternCase] case <Pattern> @@ -138,7 +138,7 @@ A.java: # 55| 0: [AddExpr] ... + ... # 55| 0: [StringLiteral] "An integer: " # 55| 1: [VarAccess] i -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 55| 0: [TypeAccess] Integer # 55| 1: [LocalVariableDeclExpr] i # 56| 2: [DefaultCase] default @@ -146,7 +146,7 @@ A.java: # 58| 3: [SwitchStmt] switch (...) # 58| -1: [VarAccess] thing # 59| 0: [PatternCase] case <Pattern> -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 59| 0: [TypeAccess] String # 59| 1: [LocalVariableDeclExpr] s # 60| 1: [ExprStmt] <Expr>; @@ -156,7 +156,7 @@ A.java: # 60| 0: [VarAccess] s # 61| 2: [BreakStmt] break # 62| 3: [PatternCase] case <Pattern> -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 62| 0: [TypeAccess] Integer # 62| 1: [LocalVariableDeclExpr] i # 63| 4: [ExprStmt] <Expr>; @@ -175,14 +175,14 @@ A.java: # 68| -1: [VarAccess] thing # 69| 0: [PatternCase] case <Pattern> # 69| -1: [VarAccess] s -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 69| 0: [TypeAccess] String # 69| 1: [LocalVariableDeclExpr] s # 70| 1: [PatternCase] case <Pattern> # 70| -1: [AddExpr] ... + ... # 70| 0: [StringLiteral] "An integer: " # 70| 1: [VarAccess] i -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 70| 0: [TypeAccess] Integer # 70| 1: [LocalVariableDeclExpr] i # 71| 2: [DefaultCase] default @@ -192,13 +192,13 @@ A.java: # 73| 0: [SwitchExpr] switch (...) # 73| -1: [VarAccess] thing # 74| 0: [PatternCase] case <Pattern> -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 74| 0: [TypeAccess] String # 74| 1: [LocalVariableDeclExpr] s # 75| 1: [YieldStmt] yield ... # 75| 0: [VarAccess] s # 76| 2: [PatternCase] case <Pattern> -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 76| 0: [TypeAccess] Integer # 76| 1: [LocalVariableDeclExpr] i # 77| 3: [YieldStmt] yield ... @@ -232,7 +232,7 @@ A.java: # 87| -1: [VarAccess] s # 87| 1: [IntegerLiteral] 3 # 87| -1: [StringLiteral] "It's 3 letters long" -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 87| 0: [TypeAccess] String # 87| 1: [LocalVariableDeclExpr] s # 88| 2: [PatternCase] case <Pattern> @@ -241,7 +241,7 @@ A.java: # 88| -1: [VarAccess] s # 88| 1: [IntegerLiteral] 5 # 88| -1: [StringLiteral] "it's 5 letters long" -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 88| 0: [TypeAccess] String # 88| 1: [LocalVariableDeclExpr] s # 89| 3: [DefaultCase] default @@ -252,7 +252,7 @@ A.java: # 91| -1: [VarAccess] thing # 92| 0: [PatternCase] case <Pattern> # 92| -1: [StringLiteral] "It's a string" -#-----| 0: (Single Local Variable Declaration) +#-----| 0: (Pattern case declaration) # 92| 0: [TypeAccess] String # 92| 1: [LocalVariableDeclExpr] s # 93| 1: [NullDefaultCase] case null, default From 403e86878c18b841b78d14da4b6ba935bc3d7398 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:54:11 +0000 Subject: [PATCH 529/731] Don't mistake a rule case for a fall-through edge --- java/ql/lib/semmle/code/java/controlflow/Guards.qll | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/controlflow/Guards.qll b/java/ql/lib/semmle/code/java/controlflow/Guards.qll index c3e915b287bf..0d0ecd5b2ea4 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Guards.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Guards.qll @@ -123,8 +123,12 @@ private predicate isNonFallThroughPredecessor(SwitchCase sc, ControlFlowNode pre previousPatternCase = getClosestPrecedingPatternCase(sc) | pred.(Expr).getParent*() = previousPatternCase.getGuard() and - // Check there is any statement in between the previous pattern case and this one. - not previousPatternCase.getIndex() = sc.getIndex() - 1 + // Check there is any statement in between the previous pattern case and this one, + // or the case is a rule, so there is no chance of a fall-through. + ( + previousPatternCase.isRule() or + not previousPatternCase.getIndex() = sc.getIndex() - 1 + ) ) or // Unambigious: on the test-passing edge there must be at least one intervening From ee36e3b72b53b12c93138a5fd0311127f0aedfb0 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 15:57:20 +0000 Subject: [PATCH 530/731] autoformat --- java/ql/lib/semmle/code/java/Statement.qll | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/Statement.qll b/java/ql/lib/semmle/code/java/Statement.qll index 0099ad36eb99..72344a3401c0 100644 --- a/java/ql/lib/semmle/code/java/Statement.qll +++ b/java/ql/lib/semmle/code/java/Statement.qll @@ -559,7 +559,9 @@ class PatternCase extends SwitchCase { /** * Gets this case's sole pattern, if there is exactly one. */ - PatternExpr getUniquePattern() { result = unique(PatternExpr pe | pe = this.getPatternAtIndex(_)) } + PatternExpr getUniquePattern() { + result = unique(PatternExpr pe | pe = this.getPatternAtIndex(_)) + } /** Gets the guard applicable to this pattern case, if any. */ Expr getGuard() { result.isNthChildOf(this, -3) } From cc8dcf63b07dc294beec36dd67938056764b77e0 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 16:12:29 +0000 Subject: [PATCH 531/731] Convert test to use an anonymous local --- .../library-tests/guards12/PrintAst.expected | 2 +- java/ql/test/library-tests/guards12/Test.java | 2 +- .../test/library-tests/guards12/guard.expected | 18 +++++++++--------- java/ql/test/library-tests/guards12/options | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/java/ql/test/library-tests/guards12/PrintAst.expected b/java/ql/test/library-tests/guards12/PrintAst.expected index c54fc31e1573..552255096083 100644 --- a/java/ql/test/library-tests/guards12/PrintAst.expected +++ b/java/ql/test/library-tests/guards12/PrintAst.expected @@ -54,7 +54,7 @@ Test.java: # 17| -1: [BlockStmt] { ... } #-----| 0: (Pattern case declaration) # 17| 0: [TypeAccess] String -# 17| 1: [LocalVariableDeclExpr] s2 +# 17| 1: [LocalVariableDeclExpr] <anonymous local variable> # 18| 1: [ConstCase] case ... # 18| -1: [BlockStmt] { ... } # 18| 0: [StringLiteral] "e" diff --git a/java/ql/test/library-tests/guards12/Test.java b/java/ql/test/library-tests/guards12/Test.java index ee80e17df8d8..4dc09a319526 100644 --- a/java/ql/test/library-tests/guards12/Test.java +++ b/java/ql/test/library-tests/guards12/Test.java @@ -14,7 +14,7 @@ void foo(String s, boolean unknown) { } int len = s.length(); switch (s) { - case String s2 when len == 4 -> { } + case String _ when len == 4 -> { } case "e" -> { } default -> { } } diff --git a/java/ql/test/library-tests/guards12/guard.expected b/java/ql/test/library-tests/guards12/guard.expected index 29ca4cafb415..0efa2b544230 100644 --- a/java/ql/test/library-tests/guards12/guard.expected +++ b/java/ql/test/library-tests/guards12/guard.expected @@ -7,16 +7,16 @@ hasBranchEdge | Test.java:11:7:11:17 | case ... | Test.java:3:9:3:21 | x | Test.java:11:7:11:17 | case ... | true | | Test.java:12:7:12:17 | case ... | Test.java:3:9:3:21 | x | Test.java:12:7:12:17 | case ... | true | | Test.java:13:7:13:16 | default | Test.java:3:9:3:21 | x | Test.java:13:7:13:16 | default | true | -| Test.java:17:7:17:37 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:17:19:17:20 | s2 | true | -| Test.java:17:7:17:37 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:18:7:18:17 | case ... | false | -| Test.java:17:7:17:37 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:19:7:19:16 | default | false | -| Test.java:17:27:17:34 | ... == ... | Test.java:17:19:17:20 | s2 | Test.java:17:39:17:41 | { ... } | true | -| Test.java:17:27:17:34 | ... == ... | Test.java:17:19:17:20 | s2 | Test.java:18:7:18:17 | case ... | false | -| Test.java:17:27:17:34 | ... == ... | Test.java:17:19:17:20 | s2 | Test.java:19:7:19:16 | default | false | +| Test.java:17:7:17:36 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:17:19:17:19 | <anonymous local variable> | true | +| Test.java:17:7:17:36 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:18:7:18:17 | case ... | false | +| Test.java:17:7:17:36 | case <Pattern> | Test.java:15:5:15:25 | var ...; | Test.java:19:7:19:16 | default | false | +| Test.java:17:26:17:33 | ... == ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:17:38:17:40 | { ... } | true | +| Test.java:17:26:17:33 | ... == ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:18:7:18:17 | case ... | false | +| Test.java:17:26:17:33 | ... == ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:19:7:19:16 | default | false | | Test.java:18:7:18:17 | case ... | Test.java:15:5:15:25 | var ...; | Test.java:18:7:18:17 | case ... | true | -| Test.java:18:7:18:17 | case ... | Test.java:17:19:17:20 | s2 | Test.java:18:7:18:17 | case ... | true | +| Test.java:18:7:18:17 | case ... | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:18:7:18:17 | case ... | true | | Test.java:19:7:19:16 | default | Test.java:15:5:15:25 | var ...; | Test.java:19:7:19:16 | default | true | -| Test.java:19:7:19:16 | default | Test.java:17:19:17:20 | s2 | Test.java:19:7:19:16 | default | true | +| Test.java:19:7:19:16 | default | Test.java:17:19:17:19 | <anonymous local variable> | Test.java:19:7:19:16 | default | true | | Test.java:21:13:21:19 | unknown | Test.java:21:5:21:42 | switch (...) | Test.java:21:23:21:23 | s | true | | Test.java:21:13:21:19 | unknown | Test.java:21:5:21:42 | switch (...) | Test.java:21:27:21:27 | s | false | | Test.java:22:7:22:17 | case ... | Test.java:21:23:21:23 | s | Test.java:22:7:22:17 | case ... | true | @@ -40,7 +40,7 @@ hasBranchEdge | Test.java:11:7:11:17 | case ... | Test.java:9:13:9:13 | s | Test.java:11:12:11:14 | "c" | true | true | Test.java:11:7:11:17 | case ... | | Test.java:12:7:12:17 | case ... | Test.java:9:13:9:13 | s | Test.java:12:12:12:14 | "d" | true | false | Test.java:13:7:13:16 | default | | Test.java:12:7:12:17 | case ... | Test.java:9:13:9:13 | s | Test.java:12:12:12:14 | "d" | true | true | Test.java:12:7:12:17 | case ... | -| Test.java:17:27:17:34 | ... == ... | Test.java:17:27:17:29 | len | Test.java:17:34:17:34 | 4 | true | true | Test.java:17:39:17:41 | { ... } | +| Test.java:17:26:17:33 | ... == ... | Test.java:17:26:17:28 | len | Test.java:17:33:17:33 | 4 | true | true | Test.java:17:38:17:40 | { ... } | | Test.java:18:7:18:17 | case ... | Test.java:16:13:16:13 | s | Test.java:18:12:18:14 | "e" | true | false | Test.java:19:7:19:16 | default | | Test.java:18:7:18:17 | case ... | Test.java:16:13:16:13 | s | Test.java:18:12:18:14 | "e" | true | true | Test.java:18:7:18:17 | case ... | | Test.java:22:7:22:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:22:12:22:14 | "f" | true | false | Test.java:25:7:25:16 | default | diff --git a/java/ql/test/library-tests/guards12/options b/java/ql/test/library-tests/guards12/options index a0d1b7e70023..5011824a5d7a 100644 --- a/java/ql/test/library-tests/guards12/options +++ b/java/ql/test/library-tests/guards12/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 21 +//semmle-extractor-options: --javac-args --release 22 From 6cf956d07af83b502e9aa45c65e520f45634db75 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 16:31:15 +0000 Subject: [PATCH 532/731] Add CFG test for anonymous variables and fall-throughs with pattern cases --- .../pattern-switch/cfg/Test.java | 18 +++ .../library-tests/pattern-switch/cfg/options | 2 +- .../pattern-switch/cfg/test.expected | 104 ++++++++++++++---- 3 files changed, 100 insertions(+), 24 deletions(-) diff --git a/java/ql/test/library-tests/pattern-switch/cfg/Test.java b/java/ql/test/library-tests/pattern-switch/cfg/Test.java index 9894d7fd197e..2a0ab7267fe6 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/Test.java +++ b/java/ql/test/library-tests/pattern-switch/cfg/Test.java @@ -98,6 +98,24 @@ case A(B(var x, var y), var z): break; } + switch(thing) { + case B(_, _): + case Integer _, String _, A(_, _) when thing.toString().equals("abc"): + case Float _: + break; + default: + break; + } + + var result = switch(thing) { + case B(_, _): + case Integer _, String _, A(_, _) when thing.toString().equals("abc"): + case Float _: + yield 1; + default: + yield 2; + }; + } } diff --git a/java/ql/test/library-tests/pattern-switch/cfg/options b/java/ql/test/library-tests/pattern-switch/cfg/options index a0d1b7e70023..5011824a5d7a 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/options +++ b/java/ql/test/library-tests/pattern-switch/cfg/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 21 +//semmle-extractor-options: --javac-args --release 22 diff --git a/java/ql/test/library-tests/pattern-switch/cfg/test.expected b/java/ql/test/library-tests/pattern-switch/cfg/test.expected index 316057112815..aac2416686f8 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/test.expected +++ b/java/ql/test/library-tests/pattern-switch/cfg/test.expected @@ -48,7 +48,7 @@ | Exhaustive.java:26:19:26:21 | { ... } | Exhaustive.java:8:22:8:25 | test | | Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Test | | Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) | -| Test.java:3:41:101:3 | { ... } | Test.java:5:6:5:19 | switch (...) | +| Test.java:3:41:119:3 | { ... } | Test.java:5:6:5:19 | switch (...) | | Test.java:5:6:5:19 | switch (...) | Test.java:5:14:5:18 | thing | | Test.java:5:14:5:18 | thing | Test.java:6:8:6:23 | case <Pattern> | | Test.java:6:8:6:23 | case <Pattern> | Test.java:6:20:6:20 | s | @@ -288,26 +288,84 @@ | Test.java:95:21:95:21 | x | Test.java:95:28:95:28 | y | | Test.java:95:28:95:28 | y | Test.java:95:15:95:29 | B(...) | | Test.java:95:36:95:36 | z | Test.java:95:13:95:37 | A(...) | -| Test.java:96:10:96:15 | break | Test.java:3:22:3:25 | test | +| Test.java:96:10:96:15 | break | Test.java:101:6:101:18 | switch (...) | | Test.java:97:8:97:15 | default | Test.java:98:10:98:15 | break | -| Test.java:98:10:98:15 | break | Test.java:3:22:3:25 | test | -| Test.java:105:8:105:8 | ...=... | Test.java:105:8:105:8 | <Expr>; | -| Test.java:105:8:105:8 | ...=... | Test.java:105:8:105:8 | A | -| Test.java:105:8:105:8 | <Expr>; | Test.java:105:8:105:8 | this | -| Test.java:105:8:105:8 | <Expr>; | Test.java:105:8:105:8 | this | -| Test.java:105:8:105:8 | b | Test.java:105:8:105:8 | ...=... | -| Test.java:105:8:105:8 | field3 | Test.java:105:8:105:8 | ...=... | -| Test.java:105:8:105:8 | super(...) | Test.java:105:8:105:8 | <Expr>; | -| Test.java:105:8:105:8 | this | Test.java:105:8:105:8 | b | -| Test.java:105:8:105:8 | this | Test.java:105:8:105:8 | field3 | -| Test.java:105:8:105:8 | { ... } | Test.java:105:8:105:8 | super(...) | -| Test.java:106:8:106:8 | ...=... | Test.java:106:8:106:8 | <Expr>; | -| Test.java:106:8:106:8 | ...=... | Test.java:106:8:106:8 | B | -| Test.java:106:8:106:8 | <Expr>; | Test.java:106:8:106:8 | this | -| Test.java:106:8:106:8 | <Expr>; | Test.java:106:8:106:8 | this | -| Test.java:106:8:106:8 | field1 | Test.java:106:8:106:8 | ...=... | -| Test.java:106:8:106:8 | field2 | Test.java:106:8:106:8 | ...=... | -| Test.java:106:8:106:8 | super(...) | Test.java:106:8:106:8 | <Expr>; | -| Test.java:106:8:106:8 | this | Test.java:106:8:106:8 | field1 | -| Test.java:106:8:106:8 | this | Test.java:106:8:106:8 | field2 | -| Test.java:106:8:106:8 | { ... } | Test.java:106:8:106:8 | super(...) | +| Test.java:98:10:98:15 | break | Test.java:101:6:101:18 | switch (...) | +| Test.java:101:6:101:18 | switch (...) | Test.java:101:13:101:17 | thing | +| Test.java:101:13:101:17 | thing | Test.java:102:8:102:20 | case <Pattern> | +| Test.java:102:8:102:20 | case <Pattern> | Test.java:102:15:102:15 | <anonymous local variable> | +| Test.java:102:8:102:20 | case <Pattern> | Test.java:103:8:103:77 | case <Pattern> | +| Test.java:102:13:102:19 | B(...) | Test.java:105:10:105:15 | break | +| Test.java:102:15:102:15 | <anonymous local variable> | Test.java:102:18:102:18 | <anonymous local variable> | +| Test.java:102:18:102:18 | <anonymous local variable> | Test.java:102:13:102:19 | B(...) | +| Test.java:103:8:103:77 | case <Pattern> | Test.java:103:21:103:21 | <anonymous local variable> | +| Test.java:103:8:103:77 | case <Pattern> | Test.java:103:31:103:31 | <anonymous local variable> | +| Test.java:103:8:103:77 | case <Pattern> | Test.java:103:36:103:36 | <anonymous local variable> | +| Test.java:103:8:103:77 | case <Pattern> | Test.java:104:8:104:20 | case <Pattern> | +| Test.java:103:21:103:21 | <anonymous local variable> | Test.java:103:47:103:51 | thing | +| Test.java:103:31:103:31 | <anonymous local variable> | Test.java:103:47:103:51 | thing | +| Test.java:103:34:103:40 | A(...) | Test.java:103:47:103:51 | thing | +| Test.java:103:36:103:36 | <anonymous local variable> | Test.java:103:39:103:39 | <anonymous local variable> | +| Test.java:103:39:103:39 | <anonymous local variable> | Test.java:103:34:103:40 | A(...) | +| Test.java:103:47:103:51 | thing | Test.java:103:47:103:62 | toString(...) | +| Test.java:103:47:103:62 | toString(...) | Test.java:103:71:103:75 | "abc" | +| Test.java:103:47:103:76 | equals(...) | Test.java:104:8:104:20 | case <Pattern> | +| Test.java:103:47:103:76 | equals(...) | Test.java:105:10:105:15 | break | +| Test.java:103:71:103:75 | "abc" | Test.java:103:47:103:76 | equals(...) | +| Test.java:104:8:104:20 | case <Pattern> | Test.java:104:19:104:19 | <anonymous local variable> | +| Test.java:104:8:104:20 | case <Pattern> | Test.java:106:8:106:15 | default | +| Test.java:104:19:104:19 | <anonymous local variable> | Test.java:105:10:105:15 | break | +| Test.java:105:10:105:15 | break | Test.java:110:6:117:7 | var ...; | +| Test.java:106:8:106:15 | default | Test.java:107:10:107:15 | break | +| Test.java:107:10:107:15 | break | Test.java:110:6:117:7 | var ...; | +| Test.java:110:6:117:7 | var ...; | Test.java:110:19:110:31 | switch (...) | +| Test.java:110:10:110:31 | result | Test.java:3:22:3:25 | test | +| Test.java:110:19:110:31 | switch (...) | Test.java:110:26:110:30 | thing | +| Test.java:110:26:110:30 | thing | Test.java:111:8:111:20 | case <Pattern> | +| Test.java:111:8:111:20 | case <Pattern> | Test.java:111:15:111:15 | <anonymous local variable> | +| Test.java:111:8:111:20 | case <Pattern> | Test.java:112:8:112:77 | case <Pattern> | +| Test.java:111:13:111:19 | B(...) | Test.java:114:10:114:17 | yield ... | +| Test.java:111:15:111:15 | <anonymous local variable> | Test.java:111:18:111:18 | <anonymous local variable> | +| Test.java:111:18:111:18 | <anonymous local variable> | Test.java:111:13:111:19 | B(...) | +| Test.java:112:8:112:77 | case <Pattern> | Test.java:112:21:112:21 | <anonymous local variable> | +| Test.java:112:8:112:77 | case <Pattern> | Test.java:112:31:112:31 | <anonymous local variable> | +| Test.java:112:8:112:77 | case <Pattern> | Test.java:112:36:112:36 | <anonymous local variable> | +| Test.java:112:8:112:77 | case <Pattern> | Test.java:113:8:113:20 | case <Pattern> | +| Test.java:112:21:112:21 | <anonymous local variable> | Test.java:112:47:112:51 | thing | +| Test.java:112:31:112:31 | <anonymous local variable> | Test.java:112:47:112:51 | thing | +| Test.java:112:34:112:40 | A(...) | Test.java:112:47:112:51 | thing | +| Test.java:112:36:112:36 | <anonymous local variable> | Test.java:112:39:112:39 | <anonymous local variable> | +| Test.java:112:39:112:39 | <anonymous local variable> | Test.java:112:34:112:40 | A(...) | +| Test.java:112:47:112:51 | thing | Test.java:112:47:112:62 | toString(...) | +| Test.java:112:47:112:62 | toString(...) | Test.java:112:71:112:75 | "abc" | +| Test.java:112:47:112:76 | equals(...) | Test.java:113:8:113:20 | case <Pattern> | +| Test.java:112:47:112:76 | equals(...) | Test.java:114:10:114:17 | yield ... | +| Test.java:112:71:112:75 | "abc" | Test.java:112:47:112:76 | equals(...) | +| Test.java:113:8:113:20 | case <Pattern> | Test.java:113:19:113:19 | <anonymous local variable> | +| Test.java:113:8:113:20 | case <Pattern> | Test.java:115:8:115:15 | default | +| Test.java:113:19:113:19 | <anonymous local variable> | Test.java:114:10:114:17 | yield ... | +| Test.java:114:10:114:17 | yield ... | Test.java:114:16:114:16 | 1 | +| Test.java:114:16:114:16 | 1 | Test.java:110:10:110:31 | result | +| Test.java:115:8:115:15 | default | Test.java:116:10:116:17 | yield ... | +| Test.java:116:10:116:17 | yield ... | Test.java:116:16:116:16 | 2 | +| Test.java:116:16:116:16 | 2 | Test.java:110:10:110:31 | result | +| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | <Expr>; | +| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | A | +| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this | +| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this | +| Test.java:123:8:123:8 | b | Test.java:123:8:123:8 | ...=... | +| Test.java:123:8:123:8 | field3 | Test.java:123:8:123:8 | ...=... | +| Test.java:123:8:123:8 | super(...) | Test.java:123:8:123:8 | <Expr>; | +| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | b | +| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | field3 | +| Test.java:123:8:123:8 | { ... } | Test.java:123:8:123:8 | super(...) | +| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | <Expr>; | +| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | B | +| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this | +| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this | +| Test.java:124:8:124:8 | field1 | Test.java:124:8:124:8 | ...=... | +| Test.java:124:8:124:8 | field2 | Test.java:124:8:124:8 | ...=... | +| Test.java:124:8:124:8 | super(...) | Test.java:124:8:124:8 | <Expr>; | +| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field1 | +| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field2 | +| Test.java:124:8:124:8 | { ... } | Test.java:124:8:124:8 | super(...) | From f317f782aeab288194ce6138c2ec6ca1167f8860 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 16:36:39 +0000 Subject: [PATCH 533/731] Add test for control-flow with mixed patterns, constants and fall-through --- .../pattern-switch/cfg/Test.java | 9 +++ .../pattern-switch/cfg/test.expected | 63 ++++++++++++------- 2 files changed, 50 insertions(+), 22 deletions(-) diff --git a/java/ql/test/library-tests/pattern-switch/cfg/Test.java b/java/ql/test/library-tests/pattern-switch/cfg/Test.java index 2a0ab7267fe6..17082458f3e3 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/Test.java +++ b/java/ql/test/library-tests/pattern-switch/cfg/Test.java @@ -116,6 +116,15 @@ case Integer _, String _, A(_, _) when thing.toString().equals("abc"): yield 2; }; + switch ((String)thing) { + case "a": + case String _ when ((String)thing).length() == 5: + case "b": + break; + default: + break; + } + } } diff --git a/java/ql/test/library-tests/pattern-switch/cfg/test.expected b/java/ql/test/library-tests/pattern-switch/cfg/test.expected index aac2416686f8..a7675429bd62 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/test.expected +++ b/java/ql/test/library-tests/pattern-switch/cfg/test.expected @@ -48,7 +48,7 @@ | Exhaustive.java:26:19:26:21 | { ... } | Exhaustive.java:8:22:8:25 | test | | Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Test | | Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) | -| Test.java:3:41:119:3 | { ... } | Test.java:5:6:5:19 | switch (...) | +| Test.java:3:41:128:3 | { ... } | Test.java:5:6:5:19 | switch (...) | | Test.java:5:6:5:19 | switch (...) | Test.java:5:14:5:18 | thing | | Test.java:5:14:5:18 | thing | Test.java:6:8:6:23 | case <Pattern> | | Test.java:6:8:6:23 | case <Pattern> | Test.java:6:20:6:20 | s | @@ -319,7 +319,7 @@ | Test.java:106:8:106:15 | default | Test.java:107:10:107:15 | break | | Test.java:107:10:107:15 | break | Test.java:110:6:117:7 | var ...; | | Test.java:110:6:117:7 | var ...; | Test.java:110:19:110:31 | switch (...) | -| Test.java:110:10:110:31 | result | Test.java:3:22:3:25 | test | +| Test.java:110:10:110:31 | result | Test.java:119:6:119:27 | switch (...) | | Test.java:110:19:110:31 | switch (...) | Test.java:110:26:110:30 | thing | | Test.java:110:26:110:30 | thing | Test.java:111:8:111:20 | case <Pattern> | | Test.java:111:8:111:20 | case <Pattern> | Test.java:111:15:111:15 | <anonymous local variable> | @@ -349,23 +349,42 @@ | Test.java:115:8:115:15 | default | Test.java:116:10:116:17 | yield ... | | Test.java:116:10:116:17 | yield ... | Test.java:116:16:116:16 | 2 | | Test.java:116:16:116:16 | 2 | Test.java:110:10:110:31 | result | -| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | <Expr>; | -| Test.java:123:8:123:8 | ...=... | Test.java:123:8:123:8 | A | -| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this | -| Test.java:123:8:123:8 | <Expr>; | Test.java:123:8:123:8 | this | -| Test.java:123:8:123:8 | b | Test.java:123:8:123:8 | ...=... | -| Test.java:123:8:123:8 | field3 | Test.java:123:8:123:8 | ...=... | -| Test.java:123:8:123:8 | super(...) | Test.java:123:8:123:8 | <Expr>; | -| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | b | -| Test.java:123:8:123:8 | this | Test.java:123:8:123:8 | field3 | -| Test.java:123:8:123:8 | { ... } | Test.java:123:8:123:8 | super(...) | -| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | <Expr>; | -| Test.java:124:8:124:8 | ...=... | Test.java:124:8:124:8 | B | -| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this | -| Test.java:124:8:124:8 | <Expr>; | Test.java:124:8:124:8 | this | -| Test.java:124:8:124:8 | field1 | Test.java:124:8:124:8 | ...=... | -| Test.java:124:8:124:8 | field2 | Test.java:124:8:124:8 | ...=... | -| Test.java:124:8:124:8 | super(...) | Test.java:124:8:124:8 | <Expr>; | -| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field1 | -| Test.java:124:8:124:8 | this | Test.java:124:8:124:8 | field2 | -| Test.java:124:8:124:8 | { ... } | Test.java:124:8:124:8 | super(...) | +| Test.java:119:6:119:27 | switch (...) | Test.java:119:22:119:26 | thing | +| Test.java:119:14:119:26 | (...)... | Test.java:120:8:120:16 | case ... | +| Test.java:119:14:119:26 | (...)... | Test.java:121:8:121:56 | case <Pattern> | +| Test.java:119:22:119:26 | thing | Test.java:119:14:119:26 | (...)... | +| Test.java:120:8:120:16 | case ... | Test.java:122:8:122:16 | case ... | +| Test.java:121:8:121:56 | case <Pattern> | Test.java:121:20:121:20 | <anonymous local variable> | +| Test.java:121:8:121:56 | case <Pattern> | Test.java:122:8:122:16 | case ... | +| Test.java:121:8:121:56 | case <Pattern> | Test.java:124:8:124:15 | default | +| Test.java:121:20:121:20 | <anonymous local variable> | Test.java:121:36:121:40 | thing | +| Test.java:121:27:121:50 | length(...) | Test.java:121:55:121:55 | 5 | +| Test.java:121:27:121:55 | ... == ... | Test.java:122:8:122:16 | case ... | +| Test.java:121:27:121:55 | ... == ... | Test.java:124:8:124:15 | default | +| Test.java:121:28:121:40 | (...)... | Test.java:121:27:121:50 | length(...) | +| Test.java:121:36:121:40 | thing | Test.java:121:28:121:40 | (...)... | +| Test.java:121:55:121:55 | 5 | Test.java:121:27:121:55 | ... == ... | +| Test.java:122:8:122:16 | case ... | Test.java:123:10:123:15 | break | +| Test.java:123:10:123:15 | break | Test.java:3:22:3:25 | test | +| Test.java:124:8:124:15 | default | Test.java:125:10:125:15 | break | +| Test.java:125:10:125:15 | break | Test.java:3:22:3:25 | test | +| Test.java:132:8:132:8 | ...=... | Test.java:132:8:132:8 | <Expr>; | +| Test.java:132:8:132:8 | ...=... | Test.java:132:8:132:8 | A | +| Test.java:132:8:132:8 | <Expr>; | Test.java:132:8:132:8 | this | +| Test.java:132:8:132:8 | <Expr>; | Test.java:132:8:132:8 | this | +| Test.java:132:8:132:8 | b | Test.java:132:8:132:8 | ...=... | +| Test.java:132:8:132:8 | field3 | Test.java:132:8:132:8 | ...=... | +| Test.java:132:8:132:8 | super(...) | Test.java:132:8:132:8 | <Expr>; | +| Test.java:132:8:132:8 | this | Test.java:132:8:132:8 | b | +| Test.java:132:8:132:8 | this | Test.java:132:8:132:8 | field3 | +| Test.java:132:8:132:8 | { ... } | Test.java:132:8:132:8 | super(...) | +| Test.java:133:8:133:8 | ...=... | Test.java:133:8:133:8 | <Expr>; | +| Test.java:133:8:133:8 | ...=... | Test.java:133:8:133:8 | B | +| Test.java:133:8:133:8 | <Expr>; | Test.java:133:8:133:8 | this | +| Test.java:133:8:133:8 | <Expr>; | Test.java:133:8:133:8 | this | +| Test.java:133:8:133:8 | field1 | Test.java:133:8:133:8 | ...=... | +| Test.java:133:8:133:8 | field2 | Test.java:133:8:133:8 | ...=... | +| Test.java:133:8:133:8 | super(...) | Test.java:133:8:133:8 | <Expr>; | +| Test.java:133:8:133:8 | this | Test.java:133:8:133:8 | field1 | +| Test.java:133:8:133:8 | this | Test.java:133:8:133:8 | field2 | +| Test.java:133:8:133:8 | { ... } | Test.java:133:8:133:8 | super(...) | From 5cb5ee026c67ab7f0eb59040224bb63c4206d067 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 20:51:10 +0000 Subject: [PATCH 534/731] Fix pretty-printing of anonymous vars and multiple patterns; add test --- java/ql/lib/semmle/code/java/PrettyPrintAst.qll | 14 ++++++++++---- java/ql/test/library-tests/prettyprint/Test.java | 7 +++++++ java/ql/test/library-tests/prettyprint/options | 2 +- java/ql/test/library-tests/prettyprint/pp.expected | 10 ++++++++-- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll index b91d371b1877..36f5ce1ed893 100644 --- a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll @@ -400,7 +400,8 @@ private class PpInstanceOfExpr extends PpAst, InstanceOfExpr { private class PpLocalVariableDeclExpr extends PpAst, LocalVariableDeclExpr { override string getPart(int i) { - i = 0 and result = this.getName() + i = 0 and + (if this.isAnonymous() then result = "_" else result = this.getName()) or i = 1 and result = " = " and exists(this.getInit()) } @@ -793,7 +794,11 @@ private class PpPatternCase extends PpAst, PatternCase { or i = base + 2 and this.getPatternAtIndex(n) instanceof LocalVariableDeclExpr and - not this.isAnonymousPattern(n) and + ( + exists(this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess()) + or + not this.isAnonymousPattern(n) + ) and result = " " or i = base + 3 and @@ -815,9 +820,10 @@ private class PpPatternCase extends PpAst, PatternCase { override PpAst getChild(int i) { exists(int n, int base | exists(this.getPatternAtIndex(n)) and base = n * 4 | - i = 1 and result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess() + i = base + 1 and + result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess() or - i = 1 and result = this.getPatternAtIndex(n).asRecordPattern() + i = base + 1 and result = this.getPatternAtIndex(n).asRecordPattern() ) or exists(int base | base = (max(int n | exists(this.getPatternAtIndex(n))) + 1) * 4 | diff --git a/java/ql/test/library-tests/prettyprint/Test.java b/java/ql/test/library-tests/prettyprint/Test.java index c643955751e3..1ffb1671459c 100644 --- a/java/ql/test/library-tests/prettyprint/Test.java +++ b/java/ql/test/library-tests/prettyprint/Test.java @@ -45,6 +45,13 @@ case R(S(var x), var y) -> { } if (o instanceof R(S(var x), var y)) { } + switch(o) { + case String _, Integer _: + case R(S(_), _): + default: + break; + } + } } diff --git a/java/ql/test/library-tests/prettyprint/options b/java/ql/test/library-tests/prettyprint/options index a0d1b7e70023..5011824a5d7a 100644 --- a/java/ql/test/library-tests/prettyprint/options +++ b/java/ql/test/library-tests/prettyprint/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 21 +//semmle-extractor-options: --javac-args --release 22 diff --git a/java/ql/test/library-tests/prettyprint/pp.expected b/java/ql/test/library-tests/prettyprint/pp.expected index eb4fbaf06332..fb9608f8f41e 100644 --- a/java/ql/test/library-tests/prettyprint/pp.expected +++ b/java/ql/test/library-tests/prettyprint/pp.expected @@ -84,5 +84,11 @@ | Test.java:1:14:1:17 | Test | 83 | } | | Test.java:1:14:1:17 | Test | 84 | if (o instanceof R(S(var x), var y)) { | | Test.java:1:14:1:17 | Test | 85 | } | -| Test.java:1:14:1:17 | Test | 86 | } | -| Test.java:1:14:1:17 | Test | 87 | } | +| Test.java:1:14:1:17 | Test | 86 | switch (o) { | +| Test.java:1:14:1:17 | Test | 87 | case String _, Integer _: | +| Test.java:1:14:1:17 | Test | 88 | case R(S(var _), var _): | +| Test.java:1:14:1:17 | Test | 89 | default: | +| Test.java:1:14:1:17 | Test | 90 | break; | +| Test.java:1:14:1:17 | Test | 91 | } | +| Test.java:1:14:1:17 | Test | 92 | } | +| Test.java:1:14:1:17 | Test | 93 | } | From f2ff6c476a646f8a812abae4d8f8449509186a3a Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 21:01:32 +0000 Subject: [PATCH 535/731] Add printast tests for anonymous variables --- .../library-tests/printAst/AnonDecls.java | 181 +++++++ .../library-tests/printAst/PrintAst.expected | 483 ++++++++++++++++++ java/ql/test/library-tests/printAst/options | 2 +- 3 files changed, 665 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/library-tests/printAst/AnonDecls.java diff --git a/java/ql/test/library-tests/printAst/AnonDecls.java b/java/ql/test/library-tests/printAst/AnonDecls.java new file mode 100644 index 000000000000..45000050386f --- /dev/null +++ b/java/ql/test/library-tests/printAst/AnonDecls.java @@ -0,0 +1,181 @@ +import java.io.Closeable; +import java.util.List; +import java.util.function.BiFunction; + +record SubRecord(int z) { } +record MyRecord(int x, SubRecord y) { } + +public class AnonDecls { + + public static void test(List<String> ss, Object o) { + + // Note each construct is repeated to ensure this doesn't produce database inconsistencies + + int _ = 1; + int _ = 2; + + try (Closeable _ = null) { } catch (Exception _) { } + try (Closeable _ = null) { } catch (Exception _) { } + + int x = 0; + + for (int _ = 1; x < 10; x++) { } + for (int _ = 2; x > 0; x--) { } + + for (var _ : ss) { } + for (var _ : ss) { } + + BiFunction<Integer, Integer, Integer> f1 = (_, _) -> 1; + BiFunction<Integer, Integer, Integer> f2 = (_, _) -> 2; + + switch (o) { + case SubRecord _: + case MyRecord _: + default: + } + + switch (o) { + case SubRecord _: + case MyRecord (int _, SubRecord _): + default: + } + + switch (o) { + case SubRecord _: + case MyRecord (int _, SubRecord (int _)): + default: + } + + switch (o) { + case SubRecord _: + case MyRecord (_, _): + default: + } + + switch (o) { + case MyRecord (_, _), SubRecord(_): + default: + } + + switch (o) { + case MyRecord (_, _), SubRecord(_) when ss != null: + default: + } + + switch (o) { + // Note use of binding patterns, not records with unnamed patterns as above + case MyRecord _, SubRecord _: + default: + } + + switch (o) { + case SubRecord _ -> { } + case MyRecord _ -> { } + default -> { } + } + + switch (o) { + case SubRecord _ -> { } + case MyRecord (int _, SubRecord _) -> { } + default -> { } + } + + switch (o) { + case SubRecord _ -> { } + case MyRecord (int _, SubRecord (int _)) -> { } + default -> { } + } + + switch (o) { + case SubRecord _ -> { } + case MyRecord (_, _) -> { } + default -> { } + } + + switch (o) { + case MyRecord (_, _), SubRecord(_) -> { } + default -> { } + } + + switch (o) { + case MyRecord (_, _), SubRecord(_) when ss != null -> { } + default -> { } + } + + var x1 = switch (o) { + case SubRecord _: + case MyRecord _: + default: + yield 1; + }; + + var x2 = switch (o) { + case SubRecord _: + case MyRecord (int _, SubRecord _): + default: + yield 1; + }; + + var x3 = switch (o) { + case SubRecord _: + case MyRecord (int _, SubRecord (int _)): + default: + yield 1; + }; + + var x4 = switch (o) { + case SubRecord _: + case MyRecord (_, _): + default: + yield 1; + }; + + var x5 = switch (o) { + case MyRecord (_, _), SubRecord(_): + default: + yield 1; + }; + + var x6 = switch (o) { + case MyRecord (_, _), SubRecord(_) when ss != null: + default: + yield 1; + }; + + var x7 = switch (o) { + case SubRecord _ -> 1; + case MyRecord _ -> 2; + default -> 3; + }; + + var x8 = switch (o) { + case SubRecord _ -> 1; + case MyRecord (int _, SubRecord _) -> 2; + default -> 3; + }; + + var x9 = switch (o) { + case SubRecord _ -> 1; + case MyRecord (int _, SubRecord (int _)) -> 2; + default -> 3; + }; + + var x10 = switch (o) { + case SubRecord _ -> 1; + case MyRecord (_, _) -> 2; + default -> 3; + }; + + var x11 = switch (o) { + case MyRecord (_, _), SubRecord(_) -> 1; + default -> 2; + }; + + var x12 = switch (o) { + case MyRecord (_, _), SubRecord(_) when ss != null -> 1; + default -> 2; + }; + + } + +} diff --git a/java/ql/test/library-tests/printAst/PrintAst.expected b/java/ql/test/library-tests/printAst/PrintAst.expected index 07b4772718fa..0192c0f2272c 100644 --- a/java/ql/test/library-tests/printAst/PrintAst.expected +++ b/java/ql/test/library-tests/printAst/PrintAst.expected @@ -332,3 +332,486 @@ A.java: # 130| 2: [FieldDeclaration] String field; # 131| 3: [Class] Middle # 131| 2: [FieldDeclaration] Inner inner; +AnonDecls.java: +# 0| [CompilationUnit] AnonDecls +#-----| -1: (Imports) +# 1| 1: [ImportType] import Closeable +# 2| 2: [ImportType] import List +# 3| 3: [ImportType] import BiFunction +# 5| 1: [Class] SubRecord +# 5| 2: [FieldDeclaration] int z; +# 6| 2: [Class] MyRecord +# 6| 2: [FieldDeclaration] int x; +# 6| 3: [FieldDeclaration] SubRecord y; +# 8| 3: [Class] AnonDecls +# 10| 2: [Method] test +# 10| 3: [TypeAccess] void +#-----| 4: (Parameters) +# 10| 0: [Parameter] ss +# 10| 0: [TypeAccess] List<String> +# 10| 0: [TypeAccess] String +# 10| 1: [Parameter] o +# 10| 0: [TypeAccess] Object +# 10| 5: [BlockStmt] { ... } +# 14| 0: [LocalVariableDeclStmt] var ...; +# 14| 0: [TypeAccess] int +# 14| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 14| 0: [IntegerLiteral] 1 +# 15| 1: [LocalVariableDeclStmt] var ...; +# 15| 0: [TypeAccess] int +# 15| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 15| 0: [IntegerLiteral] 2 +# 17| 2: [TryStmt] try ... +# 17| -3: [LocalVariableDeclStmt] var ...; +# 17| 0: [TypeAccess] Closeable +# 17| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 17| 0: [NullLiteral] null +# 17| -1: [BlockStmt] { ... } +# 17| 0: [CatchClause] catch (...) +#-----| 0: (Single Local Variable Declaration) +# 17| 0: [TypeAccess] Exception +# 17| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 17| 1: [BlockStmt] { ... } +# 18| 3: [TryStmt] try ... +# 18| -3: [LocalVariableDeclStmt] var ...; +# 18| 0: [TypeAccess] Closeable +# 18| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 18| 0: [NullLiteral] null +# 18| -1: [BlockStmt] { ... } +# 18| 0: [CatchClause] catch (...) +#-----| 0: (Single Local Variable Declaration) +# 18| 0: [TypeAccess] Exception +# 18| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 18| 1: [BlockStmt] { ... } +# 20| 4: [LocalVariableDeclStmt] var ...; +# 20| 0: [TypeAccess] int +# 20| 1: [LocalVariableDeclExpr] x +# 20| 0: [IntegerLiteral] 0 +# 22| 5: [ForStmt] for (...;...;...) +#-----| 0: (For Initializers) +# 22| 0: [TypeAccess] int +# 22| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 22| 0: [IntegerLiteral] 1 +# 22| 1: [LTExpr] ... < ... +# 22| 0: [VarAccess] x +# 22| 1: [IntegerLiteral] 10 +# 22| 2: [BlockStmt] { ... } +# 22| 3: [PostIncExpr] ...++ +# 22| 0: [VarAccess] x +# 23| 6: [ForStmt] for (...;...;...) +#-----| 0: (For Initializers) +# 23| 0: [TypeAccess] int +# 23| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 23| 0: [IntegerLiteral] 2 +# 23| 1: [GTExpr] ... > ... +# 23| 0: [VarAccess] x +# 23| 1: [IntegerLiteral] 0 +# 23| 2: [BlockStmt] { ... } +# 23| 3: [PostDecExpr] ...-- +# 23| 0: [VarAccess] x +# 25| 7: [EnhancedForStmt] for (... : ...) +#-----| 0: (Single Local Variable Declaration) +# 25| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 25| 1: [VarAccess] ss +# 25| 2: [BlockStmt] { ... } +# 26| 8: [EnhancedForStmt] for (... : ...) +#-----| 0: (Single Local Variable Declaration) +# 26| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 26| 1: [VarAccess] ss +# 26| 2: [BlockStmt] { ... } +# 28| 9: [LocalVariableDeclStmt] var ...; +# 28| 0: [TypeAccess] BiFunction<Integer,Integer,Integer> +# 28| 0: [TypeAccess] Integer +# 28| 1: [TypeAccess] Integer +# 28| 2: [TypeAccess] Integer +# 28| 1: [LocalVariableDeclExpr] f1 +# 28| 0: [LambdaExpr] ...->... +# 28| -4: [AnonymousClass] new BiFunction<Integer,Integer,Integer>(...) { ... } +# 28| 2: [Method] apply +#-----| 4: (Parameters) +# 28| 0: [Parameter] <anonymous parameter> +# 28| 1: [Parameter] <anonymous parameter> +# 28| 5: [BlockStmt] { ... } +# 28| 0: [ReturnStmt] return ... +# 28| 0: [IntegerLiteral] 1 +# 28| -3: [TypeAccess] BiFunction<Integer,Integer,Integer> +# 28| 0: [TypeAccess] Integer +# 28| 1: [TypeAccess] Integer +# 28| 2: [TypeAccess] Integer +# 29| 10: [LocalVariableDeclStmt] var ...; +# 29| 0: [TypeAccess] BiFunction<Integer,Integer,Integer> +# 29| 0: [TypeAccess] Integer +# 29| 1: [TypeAccess] Integer +# 29| 2: [TypeAccess] Integer +# 29| 1: [LocalVariableDeclExpr] f2 +# 29| 0: [LambdaExpr] ...->... +# 29| -4: [AnonymousClass] new BiFunction<Integer,Integer,Integer>(...) { ... } +# 29| 2: [Method] apply +#-----| 4: (Parameters) +# 29| 0: [Parameter] <anonymous parameter> +# 29| 1: [Parameter] <anonymous parameter> +# 29| 5: [BlockStmt] { ... } +# 29| 0: [ReturnStmt] return ... +# 29| 0: [IntegerLiteral] 2 +# 29| -3: [TypeAccess] BiFunction<Integer,Integer,Integer> +# 29| 0: [TypeAccess] Integer +# 29| 1: [TypeAccess] Integer +# 29| 2: [TypeAccess] Integer +# 31| 11: [SwitchStmt] switch (...) +# 31| -1: [VarAccess] o +# 32| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 32| 0: [TypeAccess] SubRecord +# 32| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 33| 1: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 33| 0: [TypeAccess] MyRecord +# 33| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 34| 2: [DefaultCase] default +# 37| 12: [SwitchStmt] switch (...) +# 37| -1: [VarAccess] o +# 38| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 38| 0: [TypeAccess] SubRecord +# 38| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 39| 1: [PatternCase] case <Pattern> +# 39| 0: [RecordPatternExpr] MyRecord(...) +# 39| -2: [TypeAccess] SubRecord +# 39| -1: [TypeAccess] int +# 39| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 39| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 40| 2: [DefaultCase] default +# 43| 13: [SwitchStmt] switch (...) +# 43| -1: [VarAccess] o +# 44| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 44| 0: [TypeAccess] SubRecord +# 44| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 45| 1: [PatternCase] case <Pattern> +# 45| 0: [RecordPatternExpr] MyRecord(...) +# 45| -1: [TypeAccess] int +# 45| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 45| 1: [RecordPatternExpr] SubRecord(...) +# 45| -1: [TypeAccess] int +# 45| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 46| 2: [DefaultCase] default +# 49| 14: [SwitchStmt] switch (...) +# 49| -1: [VarAccess] o +# 50| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 50| 0: [TypeAccess] SubRecord +# 50| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 51| 1: [PatternCase] case <Pattern> +# 51| 0: [RecordPatternExpr] MyRecord(...) +# 51| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 51| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 52| 2: [DefaultCase] default +# 55| 15: [SwitchStmt] switch (...) +# 55| -1: [VarAccess] o +# 56| 0: [PatternCase] case <Pattern> +# 56| 0: [RecordPatternExpr] MyRecord(...) +# 56| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 56| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 56| 1: [RecordPatternExpr] SubRecord(...) +# 56| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 57| 1: [DefaultCase] default +# 60| 16: [SwitchStmt] switch (...) +# 60| -1: [VarAccess] o +# 61| 0: [PatternCase] case <Pattern> +# 61| -3: [NEExpr] ... != ... +# 61| 0: [VarAccess] ss +# 61| 1: [NullLiteral] null +# 61| 0: [RecordPatternExpr] MyRecord(...) +# 61| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 61| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 61| 1: [RecordPatternExpr] SubRecord(...) +# 61| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 62| 1: [DefaultCase] default +# 65| 17: [SwitchStmt] switch (...) +# 65| -1: [VarAccess] o +# 67| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 67| 0: [TypeAccess] MyRecord +# 67| 1: [LocalVariableDeclExpr] <anonymous local variable> +#-----| 1: (Pattern case declaration) +# 67| 0: [TypeAccess] SubRecord +# 67| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 68| 1: [DefaultCase] default +# 71| 18: [SwitchStmt] switch (...) +# 71| -1: [VarAccess] o +# 72| 0: [PatternCase] case <Pattern> +# 72| -1: [BlockStmt] { ... } +#-----| 0: (Pattern case declaration) +# 72| 0: [TypeAccess] SubRecord +# 72| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 73| 1: [PatternCase] case <Pattern> +# 73| -1: [BlockStmt] { ... } +#-----| 0: (Pattern case declaration) +# 73| 0: [TypeAccess] MyRecord +# 73| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 74| 2: [DefaultCase] default +# 74| -1: [BlockStmt] { ... } +# 77| 19: [SwitchStmt] switch (...) +# 77| -1: [VarAccess] o +# 78| 0: [PatternCase] case <Pattern> +# 78| -1: [BlockStmt] { ... } +#-----| 0: (Pattern case declaration) +# 78| 0: [TypeAccess] SubRecord +# 78| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 79| 1: [PatternCase] case <Pattern> +# 79| -1: [BlockStmt] { ... } +# 79| 0: [RecordPatternExpr] MyRecord(...) +# 79| -2: [TypeAccess] SubRecord +# 79| -1: [TypeAccess] int +# 79| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 79| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 80| 2: [DefaultCase] default +# 80| -1: [BlockStmt] { ... } +# 83| 20: [SwitchStmt] switch (...) +# 83| -1: [VarAccess] o +# 84| 0: [PatternCase] case <Pattern> +# 84| -1: [BlockStmt] { ... } +#-----| 0: (Pattern case declaration) +# 84| 0: [TypeAccess] SubRecord +# 84| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 85| 1: [PatternCase] case <Pattern> +# 85| -1: [BlockStmt] { ... } +# 85| 0: [RecordPatternExpr] MyRecord(...) +# 85| -1: [TypeAccess] int +# 85| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 85| 1: [RecordPatternExpr] SubRecord(...) +# 85| -1: [TypeAccess] int +# 85| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 86| 2: [DefaultCase] default +# 86| -1: [BlockStmt] { ... } +# 89| 21: [SwitchStmt] switch (...) +# 89| -1: [VarAccess] o +# 90| 0: [PatternCase] case <Pattern> +# 90| -1: [BlockStmt] { ... } +#-----| 0: (Pattern case declaration) +# 90| 0: [TypeAccess] SubRecord +# 90| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 91| 1: [PatternCase] case <Pattern> +# 91| -1: [BlockStmt] { ... } +# 91| 0: [RecordPatternExpr] MyRecord(...) +# 91| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 91| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 92| 2: [DefaultCase] default +# 92| -1: [BlockStmt] { ... } +# 95| 22: [SwitchStmt] switch (...) +# 95| -1: [VarAccess] o +# 96| 0: [PatternCase] case <Pattern> +# 96| -1: [BlockStmt] { ... } +# 96| 0: [RecordPatternExpr] MyRecord(...) +# 96| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 96| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 96| 1: [RecordPatternExpr] SubRecord(...) +# 96| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 97| 1: [DefaultCase] default +# 97| -1: [BlockStmt] { ... } +# 100| 23: [SwitchStmt] switch (...) +# 100| -1: [VarAccess] o +# 101| 0: [PatternCase] case <Pattern> +# 101| -3: [NEExpr] ... != ... +# 101| 0: [VarAccess] ss +# 101| 1: [NullLiteral] null +# 101| -1: [BlockStmt] { ... } +# 101| 0: [RecordPatternExpr] MyRecord(...) +# 101| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 101| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 101| 1: [RecordPatternExpr] SubRecord(...) +# 101| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 102| 1: [DefaultCase] default +# 102| -1: [BlockStmt] { ... } +# 105| 24: [LocalVariableDeclStmt] var ...; +# 105| 1: [LocalVariableDeclExpr] x1 +# 105| 0: [SwitchExpr] switch (...) +# 105| -1: [VarAccess] o +# 106| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 106| 0: [TypeAccess] SubRecord +# 106| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 107| 1: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 107| 0: [TypeAccess] MyRecord +# 107| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 108| 2: [DefaultCase] default +# 109| 3: [YieldStmt] yield ... +# 109| 0: [IntegerLiteral] 1 +# 112| 25: [LocalVariableDeclStmt] var ...; +# 112| 1: [LocalVariableDeclExpr] x2 +# 112| 0: [SwitchExpr] switch (...) +# 112| -1: [VarAccess] o +# 113| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 113| 0: [TypeAccess] SubRecord +# 113| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 114| 1: [PatternCase] case <Pattern> +# 114| 0: [RecordPatternExpr] MyRecord(...) +# 114| -2: [TypeAccess] SubRecord +# 114| -1: [TypeAccess] int +# 114| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 114| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 115| 2: [DefaultCase] default +# 116| 3: [YieldStmt] yield ... +# 116| 0: [IntegerLiteral] 1 +# 119| 26: [LocalVariableDeclStmt] var ...; +# 119| 1: [LocalVariableDeclExpr] x3 +# 119| 0: [SwitchExpr] switch (...) +# 119| -1: [VarAccess] o +# 120| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 120| 0: [TypeAccess] SubRecord +# 120| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 121| 1: [PatternCase] case <Pattern> +# 121| 0: [RecordPatternExpr] MyRecord(...) +# 121| -1: [TypeAccess] int +# 121| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 121| 1: [RecordPatternExpr] SubRecord(...) +# 121| -1: [TypeAccess] int +# 121| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 122| 2: [DefaultCase] default +# 123| 3: [YieldStmt] yield ... +# 123| 0: [IntegerLiteral] 1 +# 126| 27: [LocalVariableDeclStmt] var ...; +# 126| 1: [LocalVariableDeclExpr] x4 +# 126| 0: [SwitchExpr] switch (...) +# 126| -1: [VarAccess] o +# 127| 0: [PatternCase] case <Pattern> +#-----| 0: (Pattern case declaration) +# 127| 0: [TypeAccess] SubRecord +# 127| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 128| 1: [PatternCase] case <Pattern> +# 128| 0: [RecordPatternExpr] MyRecord(...) +# 128| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 128| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 129| 2: [DefaultCase] default +# 130| 3: [YieldStmt] yield ... +# 130| 0: [IntegerLiteral] 1 +# 133| 28: [LocalVariableDeclStmt] var ...; +# 133| 1: [LocalVariableDeclExpr] x5 +# 133| 0: [SwitchExpr] switch (...) +# 133| -1: [VarAccess] o +# 134| 0: [PatternCase] case <Pattern> +# 134| 0: [RecordPatternExpr] MyRecord(...) +# 134| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 134| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 134| 1: [RecordPatternExpr] SubRecord(...) +# 134| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 135| 1: [DefaultCase] default +# 136| 2: [YieldStmt] yield ... +# 136| 0: [IntegerLiteral] 1 +# 139| 29: [LocalVariableDeclStmt] var ...; +# 139| 1: [LocalVariableDeclExpr] x6 +# 139| 0: [SwitchExpr] switch (...) +# 139| -1: [VarAccess] o +# 140| 0: [PatternCase] case <Pattern> +# 140| -3: [NEExpr] ... != ... +# 140| 0: [VarAccess] ss +# 140| 1: [NullLiteral] null +# 140| 0: [RecordPatternExpr] MyRecord(...) +# 140| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 140| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 140| 1: [RecordPatternExpr] SubRecord(...) +# 140| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 141| 1: [DefaultCase] default +# 142| 2: [YieldStmt] yield ... +# 142| 0: [IntegerLiteral] 1 +# 145| 30: [LocalVariableDeclStmt] var ...; +# 145| 1: [LocalVariableDeclExpr] x7 +# 145| 0: [SwitchExpr] switch (...) +# 145| -1: [VarAccess] o +# 146| 0: [PatternCase] case <Pattern> +# 146| -1: [IntegerLiteral] 1 +#-----| 0: (Pattern case declaration) +# 146| 0: [TypeAccess] SubRecord +# 146| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 147| 1: [PatternCase] case <Pattern> +# 147| -1: [IntegerLiteral] 2 +#-----| 0: (Pattern case declaration) +# 147| 0: [TypeAccess] MyRecord +# 147| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 148| 2: [DefaultCase] default +# 148| -1: [IntegerLiteral] 3 +# 151| 31: [LocalVariableDeclStmt] var ...; +# 151| 1: [LocalVariableDeclExpr] x8 +# 151| 0: [SwitchExpr] switch (...) +# 151| -1: [VarAccess] o +# 152| 0: [PatternCase] case <Pattern> +# 152| -1: [IntegerLiteral] 1 +#-----| 0: (Pattern case declaration) +# 152| 0: [TypeAccess] SubRecord +# 152| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 153| 1: [PatternCase] case <Pattern> +# 153| -1: [IntegerLiteral] 2 +# 153| 0: [RecordPatternExpr] MyRecord(...) +# 153| -2: [TypeAccess] SubRecord +# 153| -1: [TypeAccess] int +# 153| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 153| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 154| 2: [DefaultCase] default +# 154| -1: [IntegerLiteral] 3 +# 157| 32: [LocalVariableDeclStmt] var ...; +# 157| 1: [LocalVariableDeclExpr] x9 +# 157| 0: [SwitchExpr] switch (...) +# 157| -1: [VarAccess] o +# 158| 0: [PatternCase] case <Pattern> +# 158| -1: [IntegerLiteral] 1 +#-----| 0: (Pattern case declaration) +# 158| 0: [TypeAccess] SubRecord +# 158| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 159| 1: [PatternCase] case <Pattern> +# 159| -1: [IntegerLiteral] 2 +# 159| 0: [RecordPatternExpr] MyRecord(...) +# 159| -1: [TypeAccess] int +# 159| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 159| 1: [RecordPatternExpr] SubRecord(...) +# 159| -1: [TypeAccess] int +# 159| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 160| 2: [DefaultCase] default +# 160| -1: [IntegerLiteral] 3 +# 163| 33: [LocalVariableDeclStmt] var ...; +# 163| 1: [LocalVariableDeclExpr] x10 +# 163| 0: [SwitchExpr] switch (...) +# 163| -1: [VarAccess] o +# 164| 0: [PatternCase] case <Pattern> +# 164| -1: [IntegerLiteral] 1 +#-----| 0: (Pattern case declaration) +# 164| 0: [TypeAccess] SubRecord +# 164| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 165| 1: [PatternCase] case <Pattern> +# 165| -1: [IntegerLiteral] 2 +# 165| 0: [RecordPatternExpr] MyRecord(...) +# 165| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 165| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 166| 2: [DefaultCase] default +# 166| -1: [IntegerLiteral] 3 +# 169| 34: [LocalVariableDeclStmt] var ...; +# 169| 1: [LocalVariableDeclExpr] x11 +# 169| 0: [SwitchExpr] switch (...) +# 169| -1: [VarAccess] o +# 170| 0: [PatternCase] case <Pattern> +# 170| -1: [IntegerLiteral] 1 +# 170| 0: [RecordPatternExpr] MyRecord(...) +# 170| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 170| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 170| 1: [RecordPatternExpr] SubRecord(...) +# 170| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 171| 1: [DefaultCase] default +# 171| -1: [IntegerLiteral] 2 +# 174| 35: [LocalVariableDeclStmt] var ...; +# 174| 1: [LocalVariableDeclExpr] x12 +# 174| 0: [SwitchExpr] switch (...) +# 174| -1: [VarAccess] o +# 175| 0: [PatternCase] case <Pattern> +# 175| -3: [NEExpr] ... != ... +# 175| 0: [VarAccess] ss +# 175| 1: [NullLiteral] null +# 175| -1: [IntegerLiteral] 1 +# 175| 0: [RecordPatternExpr] MyRecord(...) +# 175| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 175| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 175| 1: [RecordPatternExpr] SubRecord(...) +# 175| 0: [LocalVariableDeclExpr] <anonymous local variable> +# 176| 1: [DefaultCase] default +# 176| -1: [IntegerLiteral] 2 diff --git a/java/ql/test/library-tests/printAst/options b/java/ql/test/library-tests/printAst/options index a0d1b7e70023..5011824a5d7a 100644 --- a/java/ql/test/library-tests/printAst/options +++ b/java/ql/test/library-tests/printAst/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 21 +//semmle-extractor-options: --javac-args --release 22 From 1e0766dffa2b7bf98316ff3d2a37f9e3193c5cbb Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 21:18:13 +0000 Subject: [PATCH 536/731] Add tests for case statement type test dominance against anonymous labels and fall-through --- .../Test.java | 17 +++++++++++++++++ .../switch-default-impossible-dispatch/options | 2 +- .../test.expected | 14 ++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java b/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java index cf6e67e5847c..f5409874580b 100644 --- a/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java +++ b/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java @@ -58,6 +58,23 @@ case WrapperWrapper(Wrapper(String s)) -> { } case null: default: i.take(source()); // Can't call C1.take (but we don't currently notice) } + switch(i) { + case C1 _, C2 _: + i.take(source()); // Must be either C1.take or C2.take (but we don't currently notice, because neither dominates) + break; + default: + i.take(source()); // Can't call C1.take or C2.take (but we don't currently notice, because a multi-pattern case isn't understood as a type test) + } + + switch(i) { + case C1 _: + case C2 _: + i.take(source()); // Must be either C1.take or C2.take (but we don't currently notice, because neither dominates) + break; + default: + i.take(source()); // Can't call C1.take or C2.take + } + } } diff --git a/java/ql/test/library-tests/switch-default-impossible-dispatch/options b/java/ql/test/library-tests/switch-default-impossible-dispatch/options index a0d1b7e70023..5011824a5d7a 100644 --- a/java/ql/test/library-tests/switch-default-impossible-dispatch/options +++ b/java/ql/test/library-tests/switch-default-impossible-dispatch/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args --release 21 +//semmle-extractor-options: --javac-args --release 22 diff --git a/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected b/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected index 17d478d42980..a0fa05abe6eb 100644 --- a/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected +++ b/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected @@ -30,3 +30,17 @@ | Test.java:58:34:58:41 | source(...) | Test.java:8:65:8:65 | x | | Test.java:58:34:58:41 | source(...) | Test.java:9:74:9:74 | x | | Test.java:58:34:58:41 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:63:16:63:23 | source(...) | Test.java:7:65:7:65 | x | +| Test.java:63:16:63:23 | source(...) | Test.java:8:65:8:65 | x | +| Test.java:63:16:63:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:63:16:63:23 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:66:16:66:23 | source(...) | Test.java:7:65:7:65 | x | +| Test.java:66:16:66:23 | source(...) | Test.java:8:65:8:65 | x | +| Test.java:66:16:66:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:66:16:66:23 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:72:16:72:23 | source(...) | Test.java:7:65:7:65 | x | +| Test.java:72:16:72:23 | source(...) | Test.java:8:65:8:65 | x | +| Test.java:72:16:72:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:72:16:72:23 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:75:16:75:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:75:16:75:23 | source(...) | Test.java:10:82:10:82 | x | From c48e64e536d0c849cda407428eeb70ea0066046a Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 21:21:41 +0000 Subject: [PATCH 537/731] Add tests for the combination of anonymous labels and a guard --- .../Test.java | 8 ++++++++ .../test.expected | 20 +++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java b/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java index f5409874580b..9e0a04431315 100644 --- a/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java +++ b/java/ql/test/library-tests/switch-default-impossible-dispatch/Test.java @@ -66,6 +66,14 @@ case WrapperWrapper(Wrapper(String s)) -> { } i.take(source()); // Can't call C1.take or C2.take (but we don't currently notice, because a multi-pattern case isn't understood as a type test) } + switch(i) { + case C1 _, C2 _ when i.toString().equals("abc"): + i.take(source()); // Must be either C1.take or C2.take (but we don't currently notice, because neither dominates) + break; + default: + i.take(source()); // Can't call C1.take or C2.take (but we don't currently notice, because a multi-pattern case isn't understood as a type test) + } + switch(i) { case C1 _: case C2 _: diff --git a/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected b/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected index a0fa05abe6eb..14329ea10899 100644 --- a/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected +++ b/java/ql/test/library-tests/switch-default-impossible-dispatch/test.expected @@ -38,9 +38,17 @@ | Test.java:66:16:66:23 | source(...) | Test.java:8:65:8:65 | x | | Test.java:66:16:66:23 | source(...) | Test.java:9:74:9:74 | x | | Test.java:66:16:66:23 | source(...) | Test.java:10:82:10:82 | x | -| Test.java:72:16:72:23 | source(...) | Test.java:7:65:7:65 | x | -| Test.java:72:16:72:23 | source(...) | Test.java:8:65:8:65 | x | -| Test.java:72:16:72:23 | source(...) | Test.java:9:74:9:74 | x | -| Test.java:72:16:72:23 | source(...) | Test.java:10:82:10:82 | x | -| Test.java:75:16:75:23 | source(...) | Test.java:9:74:9:74 | x | -| Test.java:75:16:75:23 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:71:16:71:23 | source(...) | Test.java:7:65:7:65 | x | +| Test.java:71:16:71:23 | source(...) | Test.java:8:65:8:65 | x | +| Test.java:71:16:71:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:71:16:71:23 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:74:16:74:23 | source(...) | Test.java:7:65:7:65 | x | +| Test.java:74:16:74:23 | source(...) | Test.java:8:65:8:65 | x | +| Test.java:74:16:74:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:74:16:74:23 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:80:16:80:23 | source(...) | Test.java:7:65:7:65 | x | +| Test.java:80:16:80:23 | source(...) | Test.java:8:65:8:65 | x | +| Test.java:80:16:80:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:80:16:80:23 | source(...) | Test.java:10:82:10:82 | x | +| Test.java:83:16:83:23 | source(...) | Test.java:9:74:9:74 | x | +| Test.java:83:16:83:23 | source(...) | Test.java:10:82:10:82 | x | From 9fa2f1999001dcda7bf2c8d0fe0d0864d8a5a30c Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Fri, 22 Mar 2024 21:48:12 +0000 Subject: [PATCH 538/731] Add test for guards in the presence of fall-through between pattern and constant cases --- .../library-tests/guards12/PrintAst.expected | 20 ++++++++++++++++++ java/ql/test/library-tests/guards12/Test.java | 9 ++++++++ .../library-tests/guards12/guard.expected | 21 +++++++++++++++---- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/java/ql/test/library-tests/guards12/PrintAst.expected b/java/ql/test/library-tests/guards12/PrintAst.expected index 552255096083..8920252fb29a 100644 --- a/java/ql/test/library-tests/guards12/PrintAst.expected +++ b/java/ql/test/library-tests/guards12/PrintAst.expected @@ -82,3 +82,23 @@ Test.java: # 24| 0: [StringLiteral] "g" # 25| 3: [DefaultCase] default # 25| -1: [BlockStmt] { ... } +# 27| 5: [SwitchStmt] switch (...) +# 27| -1: [VarAccess] s +# 28| 0: [ConstCase] case ... +# 28| 0: [StringLiteral] "h" +# 29| 1: [PatternCase] case <Pattern> +# 29| -3: [EQExpr] ... == ... +# 29| 0: [VarAccess] len +# 29| 1: [IntegerLiteral] 4 +#-----| 0: (Pattern case declaration) +# 29| 0: [TypeAccess] String +# 29| 1: [LocalVariableDeclExpr] <anonymous local variable> +# 30| 2: [ConstCase] case ... +# 30| 0: [StringLiteral] "i" +# 31| 3: [LocalVariableDeclStmt] var ...; +# 31| 0: [TypeAccess] String +# 31| 1: [LocalVariableDeclExpr] target +# 31| 0: [StringLiteral] "Shouldn't be controlled by any of those tests" +# 32| 4: [BreakStmt] break +# 33| 5: [DefaultCase] default +# 34| 6: [BreakStmt] break diff --git a/java/ql/test/library-tests/guards12/Test.java b/java/ql/test/library-tests/guards12/Test.java index 4dc09a319526..2c777467d4a7 100644 --- a/java/ql/test/library-tests/guards12/Test.java +++ b/java/ql/test/library-tests/guards12/Test.java @@ -24,5 +24,14 @@ void foo(String s, boolean unknown) { case "g" -> { } default -> { } } + switch (s) { + case "h": + case String _ when len == 4: + case "i": + String target = "Shouldn't be controlled by any of those tests"; + break; + default: + break; + } } } diff --git a/java/ql/test/library-tests/guards12/guard.expected b/java/ql/test/library-tests/guards12/guard.expected index 0efa2b544230..0980e891d84a 100644 --- a/java/ql/test/library-tests/guards12/guard.expected +++ b/java/ql/test/library-tests/guards12/guard.expected @@ -1,8 +1,8 @@ hasBranchEdge -| Test.java:4:7:4:22 | case ... | Test.java:2:39:27:3 | { ... } | Test.java:4:7:4:22 | case ... | true | -| Test.java:5:7:5:17 | case ... | Test.java:2:39:27:3 | { ... } | Test.java:5:7:5:17 | case ... | true | -| Test.java:6:7:6:17 | case ... | Test.java:2:39:27:3 | { ... } | Test.java:6:7:6:17 | case ... | true | -| Test.java:7:7:7:16 | default | Test.java:2:39:27:3 | { ... } | Test.java:7:7:7:16 | default | true | +| Test.java:4:7:4:22 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:4:7:4:22 | case ... | true | +| Test.java:5:7:5:17 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:5:7:5:17 | case ... | true | +| Test.java:6:7:6:17 | case ... | Test.java:2:39:36:3 | { ... } | Test.java:6:7:6:17 | case ... | true | +| Test.java:7:7:7:16 | default | Test.java:2:39:36:3 | { ... } | Test.java:7:7:7:16 | default | true | | Test.java:10:7:10:22 | case ... | Test.java:3:9:3:21 | x | Test.java:10:7:10:22 | case ... | true | | Test.java:11:7:11:17 | case ... | Test.java:3:9:3:21 | x | Test.java:11:7:11:17 | case ... | true | | Test.java:12:7:12:17 | case ... | Test.java:3:9:3:21 | x | Test.java:12:7:12:17 | case ... | true | @@ -31,6 +31,16 @@ hasBranchEdge | Test.java:24:7:24:17 | case ... | Test.java:23:19:23:20 | s2 | Test.java:24:7:24:17 | case ... | true | | Test.java:25:7:25:16 | default | Test.java:23:7:23:37 | case <Pattern> | Test.java:25:7:25:16 | default | true | | Test.java:25:7:25:16 | default | Test.java:23:19:23:20 | s2 | Test.java:25:7:25:16 | default | true | +| Test.java:28:7:28:15 | case ... | Test.java:27:5:27:14 | switch (...) | Test.java:28:7:28:15 | case ... | true | +| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:29:19:29:19 | <anonymous local variable> | true | +| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:30:7:30:15 | case ... | false | +| Test.java:29:7:29:34 | case <Pattern> | Test.java:29:7:29:34 | case <Pattern> | Test.java:33:7:33:14 | default | false | +| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:30:7:30:15 | case ... | false | +| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:30:7:30:15 | case ... | true | +| Test.java:29:26:29:33 | ... == ... | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:33:7:33:14 | default | false | +| Test.java:30:7:30:15 | case ... | Test.java:29:7:29:34 | case <Pattern> | Test.java:30:7:30:15 | case ... | true | +| Test.java:33:7:33:14 | default | Test.java:29:7:29:34 | case <Pattern> | Test.java:33:7:33:14 | default | true | +| Test.java:33:7:33:14 | default | Test.java:29:19:29:19 | <anonymous local variable> | Test.java:33:7:33:14 | default | true | #select | Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | false | Test.java:7:7:7:16 | default | | Test.java:5:7:5:17 | case ... | Test.java:3:20:3:20 | s | Test.java:5:12:5:14 | "c" | true | true | Test.java:5:7:5:17 | case ... | @@ -48,3 +58,6 @@ hasBranchEdge | Test.java:23:27:23:34 | ... == ... | Test.java:23:27:23:29 | len | Test.java:23:34:23:34 | 4 | true | true | Test.java:23:39:23:41 | { ... } | | Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | false | Test.java:25:7:25:16 | default | | Test.java:24:7:24:17 | case ... | Test.java:21:13:21:41 | ...?...:... | Test.java:24:12:24:14 | "g" | true | true | Test.java:24:7:24:17 | case ... | +| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | false | Test.java:33:7:33:14 | default | +| Test.java:28:7:28:15 | case ... | Test.java:27:13:27:13 | s | Test.java:28:12:28:14 | "h" | true | true | Test.java:28:7:28:15 | case ... | +| Test.java:30:7:30:15 | case ... | Test.java:27:13:27:13 | s | Test.java:30:12:30:14 | "i" | true | false | Test.java:33:7:33:14 | default | From 5e0961b3487956b3feaee11f0934f0306474d74c Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Sat, 23 Mar 2024 09:53:32 +0000 Subject: [PATCH 539/731] Account for new possible child index gap --- java/ql/consistency-queries/children.ql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/consistency-queries/children.ql b/java/ql/consistency-queries/children.ql index 755c680e7904..667ae8de877b 100644 --- a/java/ql/consistency-queries/children.ql +++ b/java/ql/consistency-queries/children.ql @@ -49,6 +49,8 @@ predicate gapInChildren(Element e, int i) { not e instanceof Annotation and // Pattern case statements legitimately have a TypeAccess (-2) and a pattern (0) but not a rule (-1) not (i = -1 and e instanceof PatternCase and not e.(PatternCase).isRule()) and + // Pattern case statements can have a gap at -3 when they have more than one pattern but no guard. + not (i = -3 and count(e.(PatternCase).getAPattern()) > 1 and not exists(e.(PatternCase).getGuard())) and // Instanceof with a record pattern is not expected to have a type access in position 1 not (i = 1 and e.(InstanceOfExpr).getPattern() instanceof RecordPatternExpr) and // RecordPatternExpr extracts type-accesses only for its LocalVariableDeclExpr children From 3d9bc6fc8917ee8fa1143bfab4ab3008560f341d Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Sun, 24 Mar 2024 17:37:11 +0000 Subject: [PATCH 540/731] Note pattern-cases may be missing some type-accesses --- java/ql/consistency-queries/children.ql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/ql/consistency-queries/children.ql b/java/ql/consistency-queries/children.ql index 667ae8de877b..2f3f1ba60ec0 100644 --- a/java/ql/consistency-queries/children.ql +++ b/java/ql/consistency-queries/children.ql @@ -51,6 +51,8 @@ predicate gapInChildren(Element e, int i) { not (i = -1 and e instanceof PatternCase and not e.(PatternCase).isRule()) and // Pattern case statements can have a gap at -3 when they have more than one pattern but no guard. not (i = -3 and count(e.(PatternCase).getAPattern()) > 1 and not exists(e.(PatternCase).getGuard())) and + // Pattern case statements may have some missing type accesses, depending on the nature of the direct child + not ((i = -2 or i < -4) and e instanceof PatternCase) and // Instanceof with a record pattern is not expected to have a type access in position 1 not (i = 1 and e.(InstanceOfExpr).getPattern() instanceof RecordPatternExpr) and // RecordPatternExpr extracts type-accesses only for its LocalVariableDeclExpr children From f347784ec2bb25bf76af58a7f2aa14fcba2df56f Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Sun, 24 Mar 2024 17:38:03 +0000 Subject: [PATCH 541/731] autoformat --- java/ql/consistency-queries/children.ql | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/java/ql/consistency-queries/children.ql b/java/ql/consistency-queries/children.ql index 2f3f1ba60ec0..a79edc909af1 100644 --- a/java/ql/consistency-queries/children.ql +++ b/java/ql/consistency-queries/children.ql @@ -50,9 +50,14 @@ predicate gapInChildren(Element e, int i) { // Pattern case statements legitimately have a TypeAccess (-2) and a pattern (0) but not a rule (-1) not (i = -1 and e instanceof PatternCase and not e.(PatternCase).isRule()) and // Pattern case statements can have a gap at -3 when they have more than one pattern but no guard. - not (i = -3 and count(e.(PatternCase).getAPattern()) > 1 and not exists(e.(PatternCase).getGuard())) and + not ( + i = -3 and count(e.(PatternCase).getAPattern()) > 1 and not exists(e.(PatternCase).getGuard()) + ) and // Pattern case statements may have some missing type accesses, depending on the nature of the direct child - not ((i = -2 or i < -4) and e instanceof PatternCase) and + not ( + (i = -2 or i < -4) and + e instanceof PatternCase + ) and // Instanceof with a record pattern is not expected to have a type access in position 1 not (i = 1 and e.(InstanceOfExpr).getPattern() instanceof RecordPatternExpr) and // RecordPatternExpr extracts type-accesses only for its LocalVariableDeclExpr children From a4401963f5f179ef358ed350025bab4b0907513b Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Mon, 25 Mar 2024 16:13:35 +0000 Subject: [PATCH 542/731] Use getAPattern --- java/ql/lib/semmle/code/java/Statement.qll | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java/ql/lib/semmle/code/java/Statement.qll b/java/ql/lib/semmle/code/java/Statement.qll index 72344a3401c0..1b138e68fc6c 100644 --- a/java/ql/lib/semmle/code/java/Statement.qll +++ b/java/ql/lib/semmle/code/java/Statement.qll @@ -559,9 +559,7 @@ class PatternCase extends SwitchCase { /** * Gets this case's sole pattern, if there is exactly one. */ - PatternExpr getUniquePattern() { - result = unique(PatternExpr pe | pe = this.getPatternAtIndex(_)) - } + PatternExpr getUniquePattern() { result = unique(PatternExpr pe | pe = this.getAPattern()) } /** Gets the guard applicable to this pattern case, if any. */ Expr getGuard() { result.isNthChildOf(this, -3) } From 17193ac11b36d584cb7770f549e4a42bf6169bed Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Mon, 25 Mar 2024 16:20:36 +0000 Subject: [PATCH 543/731] Distinguish record patterns that do or don't declare identifiers --- java/ql/lib/semmle/code/java/Expr.qll | 10 ++++++++++ .../code/java/dataflow/internal/DataFlowUtil.qll | 15 +++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index b9b535eb57c8..e0208b4df9e4 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -2739,4 +2739,14 @@ class RecordPatternExpr extends Expr, @recordpatternexpr { ) ) } + + /** + * Holds if this record pattern declares any identifiers (i.e., at least one leaf declaration is named). + */ + predicate declaresAnyIdentifiers() { + exists(PatternExpr subPattern | subPattern = this.getSubPattern(_) | + subPattern.asRecordPattern().declaresAnyIdentifiers() or + not subPattern.asBindingOrUnnamedPattern().isAnonymous() + ) + } } diff --git a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll index 95faf4fbabce..c40520c3500e 100644 --- a/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll +++ b/java/ql/lib/semmle/code/java/dataflow/internal/DataFlowUtil.qll @@ -194,14 +194,17 @@ predicate simpleAstFlowStep(Expr e1, Expr e2) { // In the following three cases only record patterns need this flow edge, leading from the bound instanceof // or switch tested expression to a record pattern that will read its fields. Simple binding patterns are // handled via VariableAssign.getSource instead. - // We only consider unique patterns because cases that declare multiple patterns are not allowed to declare - // any identifiers, so can't participate in dataflow. - exists(SwitchExpr se | - e1 = se.getExpr() and e2 = se.getACase().(PatternCase).getUniquePattern().asRecordPattern() + // We only consider patterns that declare any identifiers + exists(SwitchExpr se, RecordPatternExpr recordPattern | recordPattern = e2 | + e1 = se.getExpr() and + recordPattern = se.getACase().(PatternCase).getAPattern() and + recordPattern.declaresAnyIdentifiers() ) or - exists(SwitchStmt ss | - e1 = ss.getExpr() and e2 = ss.getACase().(PatternCase).getUniquePattern().asRecordPattern() + exists(SwitchStmt ss, RecordPatternExpr recordPattern | recordPattern = e2 | + e1 = ss.getExpr() and + recordPattern = ss.getACase().(PatternCase).getAPattern() and + recordPattern.declaresAnyIdentifiers() ) or exists(InstanceOfExpr ioe | e1 = ioe.getExpr() and e2 = ioe.getPattern().asRecordPattern()) From 568bddc4a948fa0dabd72416e5051fb3a4494209 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Mon, 25 Mar 2024 16:31:12 +0000 Subject: [PATCH 544/731] Add test cases for cases falling directly out of switch blocks --- .../pattern-switch/cfg/Exhaustive.java | 6 ++ .../pattern-switch/cfg/Test.java | 6 ++ .../pattern-switch/cfg/test.expected | 65 +++++++++++-------- 3 files changed, 51 insertions(+), 26 deletions(-) diff --git a/java/ql/test/library-tests/pattern-switch/cfg/Exhaustive.java b/java/ql/test/library-tests/pattern-switch/cfg/Exhaustive.java index c438b8253a22..d344ceda022d 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/Exhaustive.java +++ b/java/ql/test/library-tests/pattern-switch/cfg/Exhaustive.java @@ -26,6 +26,12 @@ public static void test(E e, I i, Object o) { case Y y -> { } } + // Test the case where a pattern case falls directly out of a block: + switch (i) { + case X _: + case Y _: + } + } } diff --git a/java/ql/test/library-tests/pattern-switch/cfg/Test.java b/java/ql/test/library-tests/pattern-switch/cfg/Test.java index 17082458f3e3..fb6b314999b4 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/Test.java +++ b/java/ql/test/library-tests/pattern-switch/cfg/Test.java @@ -125,6 +125,12 @@ case String _ when ((String)thing).length() == 5: break; } + // Test the case where a case falls out of a switch block without a break: + switch(thing) { + case String _: + default: + } + } } diff --git a/java/ql/test/library-tests/pattern-switch/cfg/test.expected b/java/ql/test/library-tests/pattern-switch/cfg/test.expected index a7675429bd62..a63aa7886683 100644 --- a/java/ql/test/library-tests/pattern-switch/cfg/test.expected +++ b/java/ql/test/library-tests/pattern-switch/cfg/test.expected @@ -16,7 +16,7 @@ | Exhaustive.java:5:15:5:15 | { ... } | Exhaustive.java:5:15:5:15 | super(...) | | Exhaustive.java:6:15:6:15 | super(...) | Exhaustive.java:6:15:6:15 | Y | | Exhaustive.java:6:15:6:15 | { ... } | Exhaustive.java:6:15:6:15 | super(...) | -| Exhaustive.java:8:47:29:3 | { ... } | Exhaustive.java:11:5:11:14 | switch (...) | +| Exhaustive.java:8:47:35:3 | { ... } | Exhaustive.java:11:5:11:14 | switch (...) | | Exhaustive.java:11:5:11:14 | switch (...) | Exhaustive.java:11:13:11:13 | o | | Exhaustive.java:11:13:11:13 | o | Exhaustive.java:12:7:12:22 | case <Pattern> | | Exhaustive.java:12:7:12:22 | case <Pattern> | Exhaustive.java:12:19:12:19 | s | @@ -42,13 +42,20 @@ | Exhaustive.java:25:7:25:17 | case <Pattern> | Exhaustive.java:25:14:25:14 | x | | Exhaustive.java:25:7:25:17 | case <Pattern> | Exhaustive.java:26:7:26:17 | case <Pattern> | | Exhaustive.java:25:14:25:14 | x | Exhaustive.java:25:19:25:21 | { ... } | -| Exhaustive.java:25:19:25:21 | { ... } | Exhaustive.java:8:22:8:25 | test | +| Exhaustive.java:25:19:25:21 | { ... } | Exhaustive.java:30:5:30:14 | switch (...) | | Exhaustive.java:26:7:26:17 | case <Pattern> | Exhaustive.java:26:14:26:14 | y | | Exhaustive.java:26:14:26:14 | y | Exhaustive.java:26:19:26:21 | { ... } | -| Exhaustive.java:26:19:26:21 | { ... } | Exhaustive.java:8:22:8:25 | test | +| Exhaustive.java:26:19:26:21 | { ... } | Exhaustive.java:30:5:30:14 | switch (...) | +| Exhaustive.java:30:5:30:14 | switch (...) | Exhaustive.java:30:13:30:13 | i | +| Exhaustive.java:30:13:30:13 | i | Exhaustive.java:31:7:31:15 | case <Pattern> | +| Exhaustive.java:31:7:31:15 | case <Pattern> | Exhaustive.java:31:14:31:14 | <anonymous local variable> | +| Exhaustive.java:31:7:31:15 | case <Pattern> | Exhaustive.java:32:7:32:15 | case <Pattern> | +| Exhaustive.java:31:14:31:14 | <anonymous local variable> | Exhaustive.java:8:22:8:25 | test | +| Exhaustive.java:32:7:32:15 | case <Pattern> | Exhaustive.java:32:14:32:14 | <anonymous local variable> | +| Exhaustive.java:32:14:32:14 | <anonymous local variable> | Exhaustive.java:8:22:8:25 | test | | Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Test | | Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) | -| Test.java:3:41:128:3 | { ... } | Test.java:5:6:5:19 | switch (...) | +| Test.java:3:41:134:3 | { ... } | Test.java:5:6:5:19 | switch (...) | | Test.java:5:6:5:19 | switch (...) | Test.java:5:14:5:18 | thing | | Test.java:5:14:5:18 | thing | Test.java:6:8:6:23 | case <Pattern> | | Test.java:6:8:6:23 | case <Pattern> | Test.java:6:20:6:20 | s | @@ -365,26 +372,32 @@ | Test.java:121:36:121:40 | thing | Test.java:121:28:121:40 | (...)... | | Test.java:121:55:121:55 | 5 | Test.java:121:27:121:55 | ... == ... | | Test.java:122:8:122:16 | case ... | Test.java:123:10:123:15 | break | -| Test.java:123:10:123:15 | break | Test.java:3:22:3:25 | test | +| Test.java:123:10:123:15 | break | Test.java:129:6:129:18 | switch (...) | | Test.java:124:8:124:15 | default | Test.java:125:10:125:15 | break | -| Test.java:125:10:125:15 | break | Test.java:3:22:3:25 | test | -| Test.java:132:8:132:8 | ...=... | Test.java:132:8:132:8 | <Expr>; | -| Test.java:132:8:132:8 | ...=... | Test.java:132:8:132:8 | A | -| Test.java:132:8:132:8 | <Expr>; | Test.java:132:8:132:8 | this | -| Test.java:132:8:132:8 | <Expr>; | Test.java:132:8:132:8 | this | -| Test.java:132:8:132:8 | b | Test.java:132:8:132:8 | ...=... | -| Test.java:132:8:132:8 | field3 | Test.java:132:8:132:8 | ...=... | -| Test.java:132:8:132:8 | super(...) | Test.java:132:8:132:8 | <Expr>; | -| Test.java:132:8:132:8 | this | Test.java:132:8:132:8 | b | -| Test.java:132:8:132:8 | this | Test.java:132:8:132:8 | field3 | -| Test.java:132:8:132:8 | { ... } | Test.java:132:8:132:8 | super(...) | -| Test.java:133:8:133:8 | ...=... | Test.java:133:8:133:8 | <Expr>; | -| Test.java:133:8:133:8 | ...=... | Test.java:133:8:133:8 | B | -| Test.java:133:8:133:8 | <Expr>; | Test.java:133:8:133:8 | this | -| Test.java:133:8:133:8 | <Expr>; | Test.java:133:8:133:8 | this | -| Test.java:133:8:133:8 | field1 | Test.java:133:8:133:8 | ...=... | -| Test.java:133:8:133:8 | field2 | Test.java:133:8:133:8 | ...=... | -| Test.java:133:8:133:8 | super(...) | Test.java:133:8:133:8 | <Expr>; | -| Test.java:133:8:133:8 | this | Test.java:133:8:133:8 | field1 | -| Test.java:133:8:133:8 | this | Test.java:133:8:133:8 | field2 | -| Test.java:133:8:133:8 | { ... } | Test.java:133:8:133:8 | super(...) | +| Test.java:125:10:125:15 | break | Test.java:129:6:129:18 | switch (...) | +| Test.java:129:6:129:18 | switch (...) | Test.java:129:13:129:17 | thing | +| Test.java:129:13:129:17 | thing | Test.java:130:8:130:21 | case <Pattern> | +| Test.java:130:8:130:21 | case <Pattern> | Test.java:130:20:130:20 | <anonymous local variable> | +| Test.java:130:8:130:21 | case <Pattern> | Test.java:131:8:131:15 | default | +| Test.java:130:20:130:20 | <anonymous local variable> | Test.java:131:8:131:15 | default | +| Test.java:131:8:131:15 | default | Test.java:3:22:3:25 | test | +| Test.java:138:8:138:8 | ...=... | Test.java:138:8:138:8 | <Expr>; | +| Test.java:138:8:138:8 | ...=... | Test.java:138:8:138:8 | A | +| Test.java:138:8:138:8 | <Expr>; | Test.java:138:8:138:8 | this | +| Test.java:138:8:138:8 | <Expr>; | Test.java:138:8:138:8 | this | +| Test.java:138:8:138:8 | b | Test.java:138:8:138:8 | ...=... | +| Test.java:138:8:138:8 | field3 | Test.java:138:8:138:8 | ...=... | +| Test.java:138:8:138:8 | super(...) | Test.java:138:8:138:8 | <Expr>; | +| Test.java:138:8:138:8 | this | Test.java:138:8:138:8 | b | +| Test.java:138:8:138:8 | this | Test.java:138:8:138:8 | field3 | +| Test.java:138:8:138:8 | { ... } | Test.java:138:8:138:8 | super(...) | +| Test.java:139:8:139:8 | ...=... | Test.java:139:8:139:8 | <Expr>; | +| Test.java:139:8:139:8 | ...=... | Test.java:139:8:139:8 | B | +| Test.java:139:8:139:8 | <Expr>; | Test.java:139:8:139:8 | this | +| Test.java:139:8:139:8 | <Expr>; | Test.java:139:8:139:8 | this | +| Test.java:139:8:139:8 | field1 | Test.java:139:8:139:8 | ...=... | +| Test.java:139:8:139:8 | field2 | Test.java:139:8:139:8 | ...=... | +| Test.java:139:8:139:8 | super(...) | Test.java:139:8:139:8 | <Expr>; | +| Test.java:139:8:139:8 | this | Test.java:139:8:139:8 | field1 | +| Test.java:139:8:139:8 | this | Test.java:139:8:139:8 | field2 | +| Test.java:139:8:139:8 | { ... } | Test.java:139:8:139:8 | super(...) | From dcebcc35b695ae052e4fc724534422f4e6169e61 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Mon, 25 Mar 2024 16:36:38 +0000 Subject: [PATCH 545/731] Rename getPatternAtIndex --- .../lib/semmle/code/java/PrettyPrintAst.qll | 20 +++++++++---------- java/ql/lib/semmle/code/java/PrintAst.qll | 2 +- java/ql/lib/semmle/code/java/Statement.qll | 8 ++++---- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll index 36f5ce1ed893..de1bf3100a37 100644 --- a/java/ql/lib/semmle/code/java/PrettyPrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrettyPrintAst.qll @@ -784,18 +784,18 @@ private class PpSwitchCase extends PpAst, SwitchCase { private class PpPatternCase extends PpAst, PatternCase { private predicate isAnonymousPattern(int n) { - this.getPatternAtIndex(n).asBindingOrUnnamedPattern().isAnonymous() + this.getPattern(n).asBindingOrUnnamedPattern().isAnonymous() } override string getPart(int i) { - exists(int n, int base | exists(this.getPatternAtIndex(n)) and base = n * 4 | + exists(int n, int base | exists(this.getPattern(n)) and base = n * 4 | i = base and (if n = 0 then result = "case " else result = ", ") or i = base + 2 and - this.getPatternAtIndex(n) instanceof LocalVariableDeclExpr and + this.getPattern(n) instanceof LocalVariableDeclExpr and ( - exists(this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess()) + exists(this.getPattern(n).asBindingOrUnnamedPattern().getTypeAccess()) or not this.isAnonymousPattern(n) ) and @@ -805,11 +805,11 @@ private class PpPatternCase extends PpAst, PatternCase { ( if this.isAnonymousPattern(n) then result = "_" - else result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getName() + else result = this.getPattern(n).asBindingOrUnnamedPattern().getName() ) ) or - exists(int base | base = (max(int n | exists(this.getPatternAtIndex(n))) + 1) * 4 | + exists(int base | base = (max(int n | exists(this.getPattern(n))) + 1) * 4 | i = base and result = ":" and not this.isRule() or i = base and result = " -> " and this.isRule() @@ -819,14 +819,14 @@ private class PpPatternCase extends PpAst, PatternCase { } override PpAst getChild(int i) { - exists(int n, int base | exists(this.getPatternAtIndex(n)) and base = n * 4 | + exists(int n, int base | exists(this.getPattern(n)) and base = n * 4 | i = base + 1 and - result = this.getPatternAtIndex(n).asBindingOrUnnamedPattern().getTypeAccess() + result = this.getPattern(n).asBindingOrUnnamedPattern().getTypeAccess() or - i = base + 1 and result = this.getPatternAtIndex(n).asRecordPattern() + i = base + 1 and result = this.getPattern(n).asRecordPattern() ) or - exists(int base | base = (max(int n | exists(this.getPatternAtIndex(n))) + 1) * 4 | + exists(int base | base = (max(int n | exists(this.getPattern(n))) + 1) * 4 | i = base + 1 and result = this.getRuleExpression() or i = base + 1 and result = this.getRuleStatement() diff --git a/java/ql/lib/semmle/code/java/PrintAst.qll b/java/ql/lib/semmle/code/java/PrintAst.qll index 9444a4a66bf3..0af012234bb2 100644 --- a/java/ql/lib/semmle/code/java/PrintAst.qll +++ b/java/ql/lib/semmle/code/java/PrintAst.qll @@ -432,7 +432,7 @@ final class PatternCaseNode extends ExprStmtNode { not result.(ElementNode).getElement() instanceof LocalVariableDeclExpr and not result.(ElementNode).getElement() instanceof TypeAccess or - result = TLocalVarDeclNode(pc.getPatternAtIndex(childIndex)) + result = TLocalVarDeclNode(pc.getPattern(childIndex)) } } diff --git a/java/ql/lib/semmle/code/java/Statement.qll b/java/ql/lib/semmle/code/java/Statement.qll index 1b138e68fc6c..f4eafd39e9ff 100644 --- a/java/ql/lib/semmle/code/java/Statement.qll +++ b/java/ql/lib/semmle/code/java/Statement.qll @@ -542,19 +542,19 @@ class PatternCase extends SwitchCase { PatternCase() { exists(PatternExpr pe | pe.isNthChildOf(this, _)) } /** - * DEPRECATED: alias for getPatternAtIndex(0) + * DEPRECATED: alias for getPattern(0) */ - deprecated PatternExpr getPattern() { result = this.getPatternAtIndex(0) } + deprecated PatternExpr getPattern() { result = this.getPattern(0) } /** * Gets this case's `n`th pattern. */ - PatternExpr getPatternAtIndex(int n) { result.isNthChildOf(this, n) } + PatternExpr getPattern(int n) { result.isNthChildOf(this, n) } /** * Gets any of this case's patterns. */ - PatternExpr getAPattern() { result = this.getPatternAtIndex(_) } + PatternExpr getAPattern() { result = this.getPattern(_) } /** * Gets this case's sole pattern, if there is exactly one. From 71ab804274febd5091b888a58d3014e2e7186771 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Mon, 25 Mar 2024 16:58:08 +0000 Subject: [PATCH 546/731] Release preparation for version 2.16.6 --- cpp/ql/lib/CHANGELOG.md | 4 ++++ cpp/ql/lib/change-notes/released/0.12.9.md | 3 +++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 4 ++++ cpp/ql/src/change-notes/released/0.9.8.md | 3 +++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../campaigns/Solorigate/lib/change-notes/released/1.7.12.md | 3 +++ csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../campaigns/Solorigate/src/change-notes/released/1.7.12.md | 3 +++ csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 4 ++++ csharp/ql/lib/change-notes/released/0.8.12.md | 3 +++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 4 ++++ csharp/ql/src/change-notes/released/0.8.12.md | 3 +++ csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ go/ql/consistency-queries/change-notes/released/0.0.11.md | 3 +++ go/ql/consistency-queries/codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 4 ++++ go/ql/lib/change-notes/released/0.7.12.md | 3 +++ go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 4 ++++ go/ql/src/change-notes/released/0.7.12.md | 3 +++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ java/ql/automodel/src/change-notes/released/0.0.19.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 4 ++++ java/ql/lib/change-notes/released/0.8.12.md | 3 +++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 4 ++++ java/ql/src/change-notes/released/0.8.12.md | 3 +++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 4 ++++ javascript/ql/lib/change-notes/released/0.8.12.md | 3 +++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 4 ++++ javascript/ql/src/change-notes/released/0.8.12.md | 3 +++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ misc/suite-helpers/change-notes/released/0.7.12.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 4 ++++ python/ql/lib/change-notes/released/0.11.12.md | 3 +++ python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ++++ python/ql/src/change-notes/released/0.9.12.md | 3 +++ python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 4 ++++ ruby/ql/lib/change-notes/released/0.8.12.md | 3 +++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ++++ ruby/ql/src/change-notes/released/0.8.12.md | 3 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ shared/controlflow/change-notes/released/0.1.12.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 4 ++++ shared/dataflow/change-notes/released/0.2.3.md | 3 +++ shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.12.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ shared/rangeanalysis/change-notes/released/0.0.11.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.12.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.12.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ shared/threat-models/change-notes/released/0.0.11.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ shared/tutorial/change-notes/released/0.2.12.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ shared/typetracking/change-notes/released/0.2.12.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.12.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.12.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.12.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 4 ++++ swift/ql/lib/change-notes/released/0.3.12.md | 3 +++ swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.12.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 132 files changed, 297 insertions(+), 66 deletions(-) create mode 100644 cpp/ql/lib/change-notes/released/0.12.9.md create mode 100644 cpp/ql/src/change-notes/released/0.9.8.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.12.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.12.md create mode 100644 csharp/ql/lib/change-notes/released/0.8.12.md create mode 100644 csharp/ql/src/change-notes/released/0.8.12.md create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.11.md create mode 100644 go/ql/lib/change-notes/released/0.7.12.md create mode 100644 go/ql/src/change-notes/released/0.7.12.md create mode 100644 java/ql/automodel/src/change-notes/released/0.0.19.md create mode 100644 java/ql/lib/change-notes/released/0.8.12.md create mode 100644 java/ql/src/change-notes/released/0.8.12.md create mode 100644 javascript/ql/lib/change-notes/released/0.8.12.md create mode 100644 javascript/ql/src/change-notes/released/0.8.12.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.12.md create mode 100644 python/ql/lib/change-notes/released/0.11.12.md create mode 100644 python/ql/src/change-notes/released/0.9.12.md create mode 100644 ruby/ql/lib/change-notes/released/0.8.12.md create mode 100644 ruby/ql/src/change-notes/released/0.8.12.md create mode 100644 shared/controlflow/change-notes/released/0.1.12.md create mode 100644 shared/dataflow/change-notes/released/0.2.3.md create mode 100644 shared/mad/change-notes/released/0.2.12.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.11.md create mode 100644 shared/regex/change-notes/released/0.2.12.md create mode 100644 shared/ssa/change-notes/released/0.2.12.md create mode 100644 shared/threat-models/change-notes/released/0.0.11.md create mode 100644 shared/tutorial/change-notes/released/0.2.12.md create mode 100644 shared/typetracking/change-notes/released/0.2.12.md create mode 100644 shared/typos/change-notes/released/0.2.12.md create mode 100644 shared/util/change-notes/released/0.2.12.md create mode 100644 shared/yaml/change-notes/released/0.2.12.md create mode 100644 swift/ql/lib/change-notes/released/0.3.12.md create mode 100644 swift/ql/src/change-notes/released/0.3.12.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 3e345c8b327e..4b69a1d5b361 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.12.9 + +No user-facing changes. + ## 0.12.8 No user-facing changes. diff --git a/cpp/ql/lib/change-notes/released/0.12.9.md b/cpp/ql/lib/change-notes/released/0.12.9.md new file mode 100644 index 000000000000..3e0eb3573d6a --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.12.9.md @@ -0,0 +1,3 @@ +## 0.12.9 + +No user-facing changes. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index 74f4c1a8fa04..dce1e02b6465 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.8 +lastReleaseVersion: 0.12.9 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 022cb22884e7..09a9902b1d17 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.9-dev +version: 0.12.9 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 69c80b835f3b..52c46f65267e 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.8 + +No user-facing changes. + ## 0.9.7 No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/0.9.8.md b/cpp/ql/src/change-notes/released/0.9.8.md new file mode 100644 index 000000000000..d1ca1c4d6476 --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.9.8.md @@ -0,0 +1,3 @@ +## 0.9.8 + +No user-facing changes. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 0921a4382544..9ca6c6f26786 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.7 +lastReleaseVersion: 0.9.8 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index cc8476c89d34..a3ab0093b46e 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.8-dev +version: 0.9.8 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 97f22b425341..bea6df22685c 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.12 + +No user-facing changes. + ## 1.7.11 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.12.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.12.md new file mode 100644 index 000000000000..e13bce621a9a --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.12.md @@ -0,0 +1,3 @@ +## 1.7.12 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 6e5b0b6e2f2b..6d169efe9202 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.11 +lastReleaseVersion: 1.7.12 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 31c4092b33fe..d7f1f40384d2 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.12-dev +version: 1.7.12 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 97f22b425341..bea6df22685c 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.12 + +No user-facing changes. + ## 1.7.11 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.12.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.12.md new file mode 100644 index 000000000000..e13bce621a9a --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.12.md @@ -0,0 +1,3 @@ +## 1.7.12 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 6e5b0b6e2f2b..6d169efe9202 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.11 +lastReleaseVersion: 1.7.12 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index dcb2674a19a4..856e045005e5 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.12-dev +version: 1.7.12 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 0444d4eb2bf0..37d2c804be83 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/released/0.8.12.md b/csharp/ql/lib/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 61dbd30243f9..3133f0e216d8 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.12-dev +version: 0.8.12 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index e5aaaa31e820..df97b469252a 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/0.8.12.md b/csharp/ql/src/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index da169055d998..b4e22a890207 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.12-dev +version: 0.8.12 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 1857b399fe88..d9dd6b6f2e25 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.11 + +No user-facing changes. + ## 0.0.10 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.11.md b/go/ql/consistency-queries/change-notes/released/0.0.11.md new file mode 100644 index 000000000000..19a2a55bd685 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.11.md @@ -0,0 +1,3 @@ +## 0.0.11 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index b740014e5aed..e679dc420925 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.10 +lastReleaseVersion: 0.0.11 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index b6675cca9e13..97d4ba798218 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.11-dev +version: 0.0.11 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 144be2473c07..bc6537af817a 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.12 + +No user-facing changes. + ## 0.7.11 No user-facing changes. diff --git a/go/ql/lib/change-notes/released/0.7.12.md b/go/ql/lib/change-notes/released/0.7.12.md new file mode 100644 index 000000000000..cb88422480b1 --- /dev/null +++ b/go/ql/lib/change-notes/released/0.7.12.md @@ -0,0 +1,3 @@ +## 0.7.12 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 2610ac0272d1..8afa417865a1 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.11 +lastReleaseVersion: 0.7.12 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fd6f38cd186f..284411381a7a 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.12-dev +version: 0.7.12 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 0682cd4f0bc5..497f82e86798 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.12 + +No user-facing changes. + ## 0.7.11 No user-facing changes. diff --git a/go/ql/src/change-notes/released/0.7.12.md b/go/ql/src/change-notes/released/0.7.12.md new file mode 100644 index 000000000000..cb88422480b1 --- /dev/null +++ b/go/ql/src/change-notes/released/0.7.12.md @@ -0,0 +1,3 @@ +## 0.7.12 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 2610ac0272d1..8afa417865a1 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.11 +lastReleaseVersion: 0.7.12 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 737d9e1b5429..fa9bcde9e858 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.12-dev +version: 0.7.12 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index f252098a34f8..0205da54adf8 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.19 + +No user-facing changes. + ## 0.0.18 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.19.md b/java/ql/automodel/src/change-notes/released/0.0.19.md new file mode 100644 index 000000000000..914e4c9074d1 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.19.md @@ -0,0 +1,3 @@ +## 0.0.19 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index a0d2bc59d979..f406319f372e 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.18 +lastReleaseVersion: 0.0.19 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index b9bef7e98a0a..34f0110dabd9 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.19-dev +version: 0.0.19 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index e251800c763a..5f8d993294ad 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/java/ql/lib/change-notes/released/0.8.12.md b/java/ql/lib/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/java/ql/lib/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 83e354a218ff..a483a8349f61 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.12-dev +version: 0.8.12 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 92ca11112bcb..73ab2688c982 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/java/ql/src/change-notes/released/0.8.12.md b/java/ql/src/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/java/ql/src/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index cf5953276b8a..94d0eb72331c 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.12-dev +version: 0.8.12 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index ae256e58d6db..2bdc2e4152a0 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/released/0.8.12.md b/javascript/ql/lib/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 6c7d9df15d5c..ce317735def2 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.12-dev +version: 0.8.12 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 6d837e84747b..43cbc8facf85 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/javascript/ql/src/change-notes/released/0.8.12.md b/javascript/ql/src/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 7a62520f88e1..a58a12d49252 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.12-dev +version: 0.8.12 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index db0ccde436ea..c61f0b26d002 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.12 + +No user-facing changes. + ## 0.7.11 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.12.md b/misc/suite-helpers/change-notes/released/0.7.12.md new file mode 100644 index 000000000000..cb88422480b1 --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.12.md @@ -0,0 +1,3 @@ +## 0.7.12 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 2610ac0272d1..8afa417865a1 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.11 +lastReleaseVersion: 0.7.12 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index b6d9a96049c2..fd964e5a473a 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.12-dev +version: 0.7.12 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 50a541a2ca2d..966356feed28 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.12 + +No user-facing changes. + ## 0.11.11 No user-facing changes. diff --git a/python/ql/lib/change-notes/released/0.11.12.md b/python/ql/lib/change-notes/released/0.11.12.md new file mode 100644 index 000000000000..5f431e89f8f9 --- /dev/null +++ b/python/ql/lib/change-notes/released/0.11.12.md @@ -0,0 +1,3 @@ +## 0.11.12 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 14dd5ba832df..28f7725cf851 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.11 +lastReleaseVersion: 0.11.12 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 2b5cb00e405a..fb016b052853 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.12-dev +version: 0.11.12 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index ff258db317ac..d8737a310b3b 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.12 + +No user-facing changes. + ## 0.9.11 No user-facing changes. diff --git a/python/ql/src/change-notes/released/0.9.12.md b/python/ql/src/change-notes/released/0.9.12.md new file mode 100644 index 000000000000..7ba46fb4a91b --- /dev/null +++ b/python/ql/src/change-notes/released/0.9.12.md @@ -0,0 +1,3 @@ +## 0.9.12 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 47eb8b55bab8..12f1a311ecad 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.11 +lastReleaseVersion: 0.9.12 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index 49eae617df83..a250c36cc5d5 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.12-dev +version: 0.9.12 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 1e0b5dda19a2..9b2503120f90 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/released/0.8.12.md b/ruby/ql/lib/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 5b1b4a67b004..e2ecc7317c9e 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.12-dev +version: 0.8.12 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 63f443e0940e..3810951acb52 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.12 + +No user-facing changes. + ## 0.8.11 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/0.8.12.md b/ruby/ql/src/change-notes/released/0.8.12.md new file mode 100644 index 000000000000..bc91afe9c1ef --- /dev/null +++ b/ruby/ql/src/change-notes/released/0.8.12.md @@ -0,0 +1,3 @@ +## 0.8.12 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 7b42a9d984ca..af4e83c549e4 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.11 +lastReleaseVersion: 0.8.12 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 2ffba7618dd4..9757611c5be7 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.12-dev +version: 0.8.12 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index 2e17ef5b94b8..fc8378ff3b92 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.12 + +No user-facing changes. + ## 0.1.11 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.12.md b/shared/controlflow/change-notes/released/0.1.12.md new file mode 100644 index 000000000000..98aa326ef71d --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.12.md @@ -0,0 +1,3 @@ +## 0.1.12 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 1d1688e8d612..bfd6e9036419 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.11 +lastReleaseVersion: 0.1.12 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 597af60b98f9..0b461986ce8b 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.12-dev +version: 0.1.12 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 4316eb992b24..458cde63603f 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.3 + +No user-facing changes. + ## 0.2.2 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/0.2.3.md b/shared/dataflow/change-notes/released/0.2.3.md new file mode 100644 index 000000000000..873fbbfa89b2 --- /dev/null +++ b/shared/dataflow/change-notes/released/0.2.3.md @@ -0,0 +1,3 @@ +## 0.2.3 + +No user-facing changes. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 16a06790aa83..0b605901b424 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.2 +lastReleaseVersion: 0.2.3 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index aef3dfc85237..56ca5aa63943 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.3-dev +version: 0.2.3 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 7a88a0fb736f..df97cb97717d 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.12.md b/shared/mad/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/mad/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index fb7384339de6..9c3f61f6166e 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 55a88fdbb24e..7f284f0bfb88 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.11 + +No user-facing changes. + ## 0.0.10 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.11.md b/shared/rangeanalysis/change-notes/released/0.0.11.md new file mode 100644 index 000000000000..19a2a55bd685 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.11.md @@ -0,0 +1,3 @@ +## 0.0.11 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index b740014e5aed..e679dc420925 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.10 +lastReleaseVersion: 0.0.11 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 671da30468e3..378de1378aee 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.11-dev +version: 0.0.11 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index fa6faba38235..2b955eaf376e 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.12.md b/shared/regex/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/regex/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 4170b61806c4..a0771c470279 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 0eebd3bf43d3..7e74b25e47ee 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.12.md b/shared/ssa/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 3cb919af4016..df4cc7dc4b8b 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 1857b399fe88..d9dd6b6f2e25 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.11 + +No user-facing changes. + ## 0.0.10 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.11.md b/shared/threat-models/change-notes/released/0.0.11.md new file mode 100644 index 000000000000..19a2a55bd685 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.11.md @@ -0,0 +1,3 @@ +## 0.0.11 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index b740014e5aed..e679dc420925 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.10 +lastReleaseVersion: 0.0.11 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index d7e68330f512..0e3e268fe177 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.11-dev +version: 0.0.11 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 12452c35536d..01fdf65587ab 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.12.md b/shared/tutorial/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 0e0c8fc0d16b..71e193f7c90d 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 557f6b217b82..242657d19d8e 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.12.md b/shared/typetracking/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index b11e2cee9e49..636b444f89f7 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 4dd505b626f2..26e1c3ae5469 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.12.md b/shared/typos/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/typos/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 7643692f4827..6016ab36508a 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 9803704f4700..b8ae5cf523d8 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.12.md b/shared/util/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/util/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index d25395642901..f37fd062e794 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 1beadaccd694..9a5910ec3740 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.12 + +No user-facing changes. + ## 0.2.11 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.12.md b/shared/yaml/change-notes/released/0.2.12.md new file mode 100644 index 000000000000..590eb0cedd1f --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.12.md @@ -0,0 +1,3 @@ +## 0.2.12 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 2ee635b99371..da1cea933934 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.11 +lastReleaseVersion: 0.2.12 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 4c6e0680ff2c..06818ff1d22c 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.12-dev +version: 0.2.12 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 309087eeb32f..5a35f47aa898 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.12 + +No user-facing changes. + ## 0.3.11 No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/0.3.12.md b/swift/ql/lib/change-notes/released/0.3.12.md new file mode 100644 index 000000000000..8ccc61b9812b --- /dev/null +++ b/swift/ql/lib/change-notes/released/0.3.12.md @@ -0,0 +1,3 @@ +## 0.3.12 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 2b6348cc81c1..3e6664ee4b69 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.11 +lastReleaseVersion: 0.3.12 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 08e0434fbe6f..4ec986c21f9f 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.12-dev +version: 0.3.12 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 33f843bec1cf..4ae49cfbfea4 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.12 + +No user-facing changes. + ## 0.3.11 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/0.3.12.md b/swift/ql/src/change-notes/released/0.3.12.md new file mode 100644 index 000000000000..8ccc61b9812b --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.12.md @@ -0,0 +1,3 @@ +## 0.3.12 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 2b6348cc81c1..3e6664ee4b69 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.11 +lastReleaseVersion: 0.3.12 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index a4cdbfe7cc16..6db24a3c4931 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.12-dev +version: 0.3.12 groups: - swift - queries From 757b9bb5fa9fbcb28e78225403b626079d192d37 Mon Sep 17 00:00:00 2001 From: Chris Smowton <smowton@github.com> Date: Mon, 25 Mar 2024 18:01:30 +0000 Subject: [PATCH 547/731] Update Java version supported to 22 --- docs/codeql/reusables/supported-versions-compilers.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 727642a87ac1..15e1cfa64448 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -17,7 +17,7 @@ .NET 5, .NET 6, .NET 7, .NET 8","``.sln``, ``.csproj``, ``.cs``, ``.cshtml``, ``.xaml``" Go (aka Golang), "Go up to 1.22", "Go 1.11 or more recent", ``.go`` - Java,"Java 7 to 21 [5]_","javac (OpenJDK and Oracle JDK), + Java,"Java 7 to 22 [5]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [6]_",``.java`` Kotlin [7]_,"Kotlin 1.5.0 to 1.9.2\ *x*","kotlinc",``.kt`` @@ -33,7 +33,7 @@ .. [2] Objective-C, Objective-C++, C++/CLI, and C++/CX are not supported. .. [3] Support for the clang-cl compiler is preliminary. .. [4] Support for the Arm Compiler (armcc) is preliminary. - .. [5] Builds that execute on Java 7 to 21 can be analyzed. The analysis understands Java 21 standard language features. + .. [5] Builds that execute on Java 7 to 22 can be analyzed. The analysis understands Java 22 standard language features. .. [6] ECJ is supported when the build invokes it via the Maven Compiler plugin or the Takari Lifecycle plugin. .. [7] Kotlin support is currently in beta. .. [8] JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files. From f67b5f915866cd62e30aec5b4d77901807681919 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Mon, 25 Mar 2024 18:17:15 +0000 Subject: [PATCH 548/731] Post-release preparation for codeql-cli-2.16.6 --- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 09a9902b1d17..eebc47c089bf 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.9 +version: 0.12.10-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index a3ab0093b46e..ce202c1b85d1 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.8 +version: 0.9.9-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index d7f1f40384d2..f3bf8992f7d4 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.12 +version: 1.7.13-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 856e045005e5..a732080cfb41 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.12 +version: 1.7.13-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 3133f0e216d8..7d389b9e5604 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.12 +version: 0.8.13-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index b4e22a890207..e9d1d526a81b 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.12 +version: 0.8.13-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 97d4ba798218..3c398a7cf84f 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.11 +version: 0.0.12-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 284411381a7a..8cc40e77dec2 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.12 +version: 0.7.13-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index fa9bcde9e858..080d257b8d02 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.12 +version: 0.7.13-dev groups: - go - queries diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 34f0110dabd9..1c22e00eb0e2 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.19 +version: 0.0.20-dev groups: - java - automodel diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index a483a8349f61..c3a0a9476bb8 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.12 +version: 0.8.13-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 94d0eb72331c..ab853297ba95 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.12 +version: 0.8.13-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index ce317735def2..fd7d54764024 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.12 +version: 0.8.13-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index a58a12d49252..6967bcbff044 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.12 +version: 0.8.13-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index fd964e5a473a..c366cba2c912 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.12 +version: 0.7.13-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index fb016b052853..f2357da6c2c9 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.12 +version: 0.11.13-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index a250c36cc5d5..c6d2ef63f29f 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.12 +version: 0.9.13-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index e2ecc7317c9e..bc8a4aa28135 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.12 +version: 0.8.13-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 9757611c5be7..b18213909586 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.12 +version: 0.8.13-dev groups: - ruby - queries diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 0b461986ce8b..3a6d1131f86d 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.12 +version: 0.1.13-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 56ca5aa63943..386290bde293 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.3 +version: 0.2.4-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 9c3f61f6166e..a5ea1168b923 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 378de1378aee..4d8f0196bec3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.11 +version: 0.0.12-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index a0771c470279..607c548a2a36 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index df4cc7dc4b8b..5c773a56a668 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 0e3e268fe177..08e2ae0c3306 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.11 +version: 0.0.12-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 71e193f7c90d..cf4f16583a3d 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 636b444f89f7..166a7c170cdb 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 6016ab36508a..47bc18e8902e 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index f37fd062e794..7862cb35d816 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 06818ff1d22c..9813c6fb57c4 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.12 +version: 0.2.13-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 4ec986c21f9f..d06a216db89b 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.12 +version: 0.3.13-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 6db24a3c4931..1dace3146de9 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.12 +version: 0.3.13-dev groups: - swift - queries From 5bc710b4068722abba84795f22ea087766b62169 Mon Sep 17 00:00:00 2001 From: Max Schaefer <54907921+max-schaefer@users.noreply.github.com> Date: Mon, 25 Mar 2024 19:48:56 +0000 Subject: [PATCH 549/731] Apply suggestions from code review Co-authored-by: Felicity Chapman <felicitymay@github.com> --- go/ql/src/Security/CWE-089/StringBreak.qhelp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/go/ql/src/Security/CWE-089/StringBreak.qhelp b/go/ql/src/Security/CWE-089/StringBreak.qhelp index 18717cfee624..399eb8170e41 100644 --- a/go/ql/src/Security/CWE-089/StringBreak.qhelp +++ b/go/ql/src/Security/CWE-089/StringBreak.qhelp @@ -9,7 +9,7 @@ Code that constructs a quoted string literal containing user-provided data needs this data does not itself contain a quote. Otherwise the embedded data could (accidentally or intentionally) terminate the string literal early and thereby change the structure of the overall string, with potentially severe consequences. If, for example, the string is later used as -part an operating-system command or database query, an attacker may be able to craft input data +part of an operating-system command or database query, an attacker may be able to craft input data that injects a malicious command. </p> </overview> @@ -18,7 +18,7 @@ that injects a malicious command. <p> Sanitize the embedded data appropriately to ensure quotes are escaped, or use an API that does not rely on manually constructing quoted substrings. Make sure to use the appropriate escaping -mechanism, for example double quoting for SQL strings or backslash escaping for shell commands. +mechanism, for example, double quoting for SQL strings or backslash escaping for shell commands. When using backslash escaping, the backslash character itself must also be escaped. </p> </recommendation> @@ -42,7 +42,7 @@ queries, which avoids the need to explicitly construct a quoted string. </p> <sample src="StringBreakGood.go"/> <p> -In situations where a structured API is not available, make sure to escape quotes before embedding +In situations where a structured API is not available, make sure that you escape quotes before embedding user-provided data into a quoted string. For example, this is how you can backslash-escape single quotes using <code>strings.ReplaceAll</code>: </p> From c11b8f9d51093265bd97161147f712e5b3bb47b9 Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo <dbartol@github.com> Date: Mon, 25 Mar 2024 19:14:54 -0400 Subject: [PATCH 550/731] Remove unused data extension in test --- .../dataflow/threat-models/threat-models-flowtest1.ext.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.ext.yml b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.ext.yml index 4cd172bd5f43..4f0b690d19a2 100644 --- a/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.ext.yml +++ b/java/ql/test/library-tests/dataflow/threat-models/threat-models-flowtest1.ext.yml @@ -1,10 +1,5 @@ extensions: - - addsTo: - pack: codeql/java-all - extensible: supportedThreatModels - data: [] - - addsTo: pack: codeql/java-all extensible: sourceModel From 1d22e658513e78cc1ba8a626c4838ce3331e4b13 Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Fri, 26 May 2023 13:39:22 +0200 Subject: [PATCH 551/731] JS: Move Directive subclasses into Directive module --- javascript/ql/lib/semmle/javascript/AST.qll | 2 +- .../ql/lib/semmle/javascript/Functions.qll | 2 +- javascript/ql/lib/semmle/javascript/Stmt.qll | 293 ++++++++++-------- .../semmle/javascript/frameworks/Bundling.qll | 4 +- .../ql/src/Expressions/UnknownDirective.ql | 2 +- 5 files changed, 170 insertions(+), 133 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/AST.qll b/javascript/ql/lib/semmle/javascript/AST.qll index 412f2036280e..90b8494d1663 100644 --- a/javascript/ql/lib/semmle/javascript/AST.qll +++ b/javascript/ql/lib/semmle/javascript/AST.qll @@ -245,7 +245,7 @@ class TopLevel extends @toplevel, StmtContainer { /** Gets the number of lines containing comments in this toplevel. */ int getNumberOfLinesOfComments() { numlines(this, _, _, result) } - override predicate isStrict() { this.getAStmt() instanceof StrictModeDecl } + override predicate isStrict() { this.getAStmt() instanceof Directive::StrictModeDecl } override ControlFlowNode getFirstControlFlowNode() { result = this.getEntry() } diff --git a/javascript/ql/lib/semmle/javascript/Functions.qll b/javascript/ql/lib/semmle/javascript/Functions.qll index 88adc7b838a2..150dbea3f01b 100644 --- a/javascript/ql/lib/semmle/javascript/Functions.qll +++ b/javascript/ql/lib/semmle/javascript/Functions.qll @@ -237,7 +237,7 @@ class Function extends @function, Parameterized, TypeParameterized, StmtContaine override predicate isStrict() { // check for explicit strict mode directive - exists(StrictModeDecl smd | this = smd.getContainer()) or + exists(Directive::StrictModeDecl smd | this = smd.getContainer()) or // check for enclosing strict function StmtContainer.super.isStrict() or // all parts of a class definition are strict code diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index c4217b093563..b4cda7e9156d 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -259,150 +259,185 @@ class Directive extends MaybeDirective { } /** - * A known directive, such as a strict mode declaration. - * - * Example: - * - * ``` - * "use strict"; - * ``` + * Module containing subclasses of the `Directive` class. */ -abstract class KnownDirective extends Directive { } +module Directive { + /** + * A known directive, such as a strict mode declaration. + * + * Example: + * + * ``` + * "use strict"; + * ``` + */ + abstract class KnownDirective extends Directive { } -/** - * A strict mode declaration. - * - * Example: - * - * ``` - * "use strict"; - * ``` - */ -class StrictModeDecl extends KnownDirective { - StrictModeDecl() { this.getDirectiveText() = "use strict" } -} + /** + * A strict mode declaration. + * + * Example: + * + * ``` + * "use strict"; + * ``` + */ + class StrictModeDecl extends KnownDirective { + StrictModeDecl() { this.getDirectiveText() = "use strict" } + } -/** - * An asm.js directive. - * - * Example: - * - * ``` - * "use asm"; - * ``` - */ -class AsmJSDirective extends KnownDirective { - AsmJSDirective() { this.getDirectiveText() = "use asm" } -} + /** + * An asm.js directive. + * + * Example: + * + * ``` + * "use asm"; + * ``` + */ + class AsmJSDirective extends KnownDirective { + AsmJSDirective() { this.getDirectiveText() = "use asm" } + } -/** - * A Babel directive. - * - * Example: - * - * ``` - * "use babel"; - * ``` - */ -class BabelDirective extends KnownDirective { - BabelDirective() { this.getDirectiveText() = "use babel" } -} + /** + * A Babel directive. + * + * Example: + * + * ``` + * "use babel"; + * ``` + */ + class BabelDirective extends KnownDirective { + BabelDirective() { this.getDirectiveText() = "use babel" } + } -/** - * A legacy 6to5 directive. - * - * Example: - * - * ``` - * "use 6to5"; - * ``` - */ -class SixToFiveDirective extends KnownDirective { - SixToFiveDirective() { this.getDirectiveText() = "use 6to5" } -} + /** + * A legacy 6to5 directive. + * + * Example: + * + * ``` + * "use 6to5"; + * ``` + */ + class SixToFiveDirective extends KnownDirective { + SixToFiveDirective() { this.getDirectiveText() = "use 6to5" } + } -/** - * A SystemJS `format` directive. - * - * Example: - * - * ``` - * "format global"; - * ``` - */ -class SystemJSFormatDirective extends KnownDirective { - SystemJSFormatDirective() { - this.getDirectiveText().regexpMatch("format (cjs|esm|global|register)") + /** + * A SystemJS `format` directive. + * + * Example: + * + * ``` + * "format global"; + * ``` + */ + class SystemJSFormatDirective extends KnownDirective { + SystemJSFormatDirective() { + this.getDirectiveText().regexpMatch("format (cjs|esm|global|register)") + } } -} -/** - * A SystemJS `format register` directive. - * - * Example: - * - * ``` - * "format register"; - * ``` - */ -class FormatRegisterDirective extends SystemJSFormatDirective { - FormatRegisterDirective() { this.getDirectiveText() = "format register" } -} + /** + * A SystemJS `format register` directive. + * + * Example: + * + * ``` + * "format register"; + * ``` + */ + class FormatRegisterDirective extends SystemJSFormatDirective { + FormatRegisterDirective() { this.getDirectiveText() = "format register" } + } -/** - * A `ngInject` or `ngNoInject` directive. - * - * Example: - * - * ``` - * "ngInject"; - * ``` - */ -class NgInjectDirective extends KnownDirective { - NgInjectDirective() { this.getDirectiveText().regexpMatch("ng(No)?Inject") } -} + /** + * A `ngInject` or `ngNoInject` directive. + * + * Example: + * + * ``` + * "ngInject"; + * ``` + */ + class NgInjectDirective extends KnownDirective { + NgInjectDirective() { this.getDirectiveText().regexpMatch("ng(No)?Inject") } + } -/** - * A YUI compressor directive. - * - * Example: - * - * ``` - * "console:nomunge"; - * ``` - */ -class YuiDirective extends KnownDirective { - YuiDirective() { - this.getDirectiveText().regexpMatch("([a-z0-9_]+:nomunge, ?)*([a-z0-9_]+:nomunge)") + /** + * A YUI compressor directive. + * + * Example: + * + * ``` + * "console:nomunge"; + * ``` + */ + class YuiDirective extends KnownDirective { + YuiDirective() { + this.getDirectiveText().regexpMatch("([a-z0-9_]+:nomunge, ?)*([a-z0-9_]+:nomunge)") + } } -} -/** - * A SystemJS `deps` directive. - * - * Example: - * - * ``` - * "deps fs"; - * ``` - */ -class SystemJSDepsDirective extends KnownDirective { - SystemJSDepsDirective() { this.getDirectiveText().regexpMatch("deps [^ ]+") } -} + /** + * A SystemJS `deps` directive. + * + * Example: + * + * ``` + * "deps fs"; + * ``` + */ + class SystemJSDepsDirective extends KnownDirective { + SystemJSDepsDirective() { this.getDirectiveText().regexpMatch("deps [^ ]+") } + } -/** - * A `bundle` directive. - * - * Example: - * - * ``` - * "bundle"; - * ``` - */ -class BundleDirective extends KnownDirective { - BundleDirective() { this.getDirectiveText() = "bundle" } + /** + * A `bundle` directive. + * + * Example: + * + * ``` + * "bundle"; + * ``` + */ + class BundleDirective extends KnownDirective { + BundleDirective() { this.getDirectiveText() = "bundle" } + } } +/** DEPRECATED. Use `Directive::KnownDirective` instead. */ +deprecated class KnownDirective = Directive::KnownDirective; + +/** DEPRECATED. Use `Directive::StrictModeDecl` instead. */ +deprecated class StrictModeDecl = Directive::StrictModeDecl; + +/** DEPRECATED. Use `Directive::AsmJSDirective` instead. */ +deprecated class AsmJSDirective = Directive::AsmJSDirective; + +/** DEPRECATED. Use `Directive::BabelDirective` instead. */ +deprecated class BabelDirective = Directive::BabelDirective; + +/** DEPRECATED. Use `Directive::SixToFiveDirective` instead. */ +deprecated class SixToFiveDirective = Directive::SixToFiveDirective; + +/** DEPRECATED. Use `Directive::SystemJSFormatDirective` instead. */ +deprecated class SystemJSFormatDirective = Directive::SystemJSFormatDirective; + +/** DEPRECATED. Use `Directive::NgInjectDirective` instead. */ +deprecated class NgInjectDirective = Directive::NgInjectDirective; + +/** DEPRECATED. Use `Directive::YuiDirective` instead. */ +deprecated class YuiDirective = Directive::YuiDirective; + +/** DEPRECATED. Use `Directive::SystemJSDepsDirective` instead. */ +deprecated class SystemJSDepsDirective = Directive::SystemJSDepsDirective; + +/** DEPRECATED. Use `Directive::BundleDirective` instead. */ +deprecated class BundleDirective = Directive::BundleDirective; + /** * An `if` statement. * diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Bundling.qll b/javascript/ql/lib/semmle/javascript/frameworks/Bundling.qll index ce95fa7f1de7..314a6343c9f0 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/Bundling.qll +++ b/javascript/ql/lib/semmle/javascript/frameworks/Bundling.qll @@ -242,7 +242,9 @@ predicate isMultiLicenseBundle(TopLevel tl) { /** * Holds if this is a bundle with a "bundle" directive. */ -predicate isDirectiveBundle(TopLevel tl) { exists(BundleDirective d | d.getTopLevel() = tl) } +predicate isDirectiveBundle(TopLevel tl) { + exists(Directive::BundleDirective d | d.getTopLevel() = tl) +} /** * Holds if toplevel `tl` contains code that looks like the output of a module bundler. diff --git a/javascript/ql/src/Expressions/UnknownDirective.ql b/javascript/ql/src/Expressions/UnknownDirective.ql index fc0ef67aa612..331b61cafda9 100644 --- a/javascript/ql/src/Expressions/UnknownDirective.ql +++ b/javascript/ql/src/Expressions/UnknownDirective.ql @@ -12,7 +12,7 @@ import javascript from Directive d where - not d instanceof KnownDirective and + not d instanceof Directive::KnownDirective and // ignore ":" pseudo-directive sometimes seen in dual-use shell/node.js scripts not d.getExpr().getStringValue() = ":" and // but exclude attribute top-levels: `<a href="javascript:'some-attribute-string'">` From a0b49b23f56a9999fa52dc33de822704c2f9ada2 Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Fri, 26 May 2023 13:41:41 +0200 Subject: [PATCH 552/731] JS: Add UseServer and UseClient directives --- javascript/ql/lib/semmle/javascript/Stmt.qll | 26 +++++++++++++++++++ .../UnknownDirective.expected | 8 +++--- .../UnknownDirective/UnknownDirective.js | 6 +++-- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/Stmt.qll b/javascript/ql/lib/semmle/javascript/Stmt.qll index b4cda7e9156d..9adfece36a0c 100644 --- a/javascript/ql/lib/semmle/javascript/Stmt.qll +++ b/javascript/ql/lib/semmle/javascript/Stmt.qll @@ -406,6 +406,32 @@ module Directive { class BundleDirective extends KnownDirective { BundleDirective() { this.getDirectiveText() = "bundle" } } + + /** + * A `use server` directive. + * + * Example: + * + * ``` + * "use server"; + * ``` + */ + class UseServerDirective extends KnownDirective { + UseServerDirective() { this.getDirectiveText() = "use server" } + } + + /** + * A `use client` directive. + * + * Example: + * + * ``` + * "use client"; + * ``` + */ + class UseClientDirective extends KnownDirective { + UseClientDirective() { this.getDirectiveText() = "use client" } + } } /** DEPRECATED. Use `Directive::KnownDirective` instead. */ diff --git a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected index 4968baa31eed..87922ff82a24 100644 --- a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected +++ b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected @@ -11,7 +11,7 @@ | UnknownDirective.js:12:5:12:17 | "use struct;" | Unknown directive: 'use struct;'. | | UnknownDirective.js:13:5:13:17 | "Use Strict"; | Unknown directive: 'Use Strict'. | | UnknownDirective.js:14:5:14:14 | "use bar"; | Unknown directive: 'use bar'. | -| UnknownDirective.js:38:5:38:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. | -| UnknownDirective.js:39:5:39:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. | -| UnknownDirective.js:45:5:45:15 | ":nomunge"; | Unknown directive: ':nomunge'. | -| UnknownDirective.js:46:5:46:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. | +| UnknownDirective.js:40:5:40:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. | +| UnknownDirective.js:41:5:41:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. | +| UnknownDirective.js:47:5:47:15 | ":nomunge"; | Unknown directive: ':nomunge'. | +| UnknownDirective.js:48:5:48:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. | diff --git a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js index c7ced70ea30c..0645f8821a1d 100644 --- a/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js +++ b/javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js @@ -32,6 +32,8 @@ function good() { "ngNoInject"; // OK "deps foo"; // OK "deps bar"; // OK + "use server"; // OK + "use client"; // OK } function data() { @@ -46,6 +48,6 @@ function yui() { "foo(), bar, baz:nomunge"; // NOT OK } -function babel_typeof(obj) { +function babel_typeof(obj) { "@babel/helpers - typeof" -} \ No newline at end of file +} From f8641dd82d4296248f0cdd5ac33cffb8d35cbd83 Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Mon, 26 Jun 2023 11:20:23 +0200 Subject: [PATCH 553/731] JS: Fix use of deprecated alias --- javascript/ql/test/library-tests/Directives/KnownDirective.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/ql/test/library-tests/Directives/KnownDirective.ql b/javascript/ql/test/library-tests/Directives/KnownDirective.ql index e1119b386542..f9d1ee32664b 100644 --- a/javascript/ql/test/library-tests/Directives/KnownDirective.ql +++ b/javascript/ql/test/library-tests/Directives/KnownDirective.ql @@ -1,4 +1,4 @@ import javascript -from KnownDirective d +from Directive::KnownDirective d select d, d.getDirectiveText() From f2939bd05be0bccc5fe8038b53e0ac022f206121 Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Thu, 7 Mar 2024 12:45:48 +0100 Subject: [PATCH 554/731] JS: Add test case --- .../CallGraphs/AnnotatedTest/Test.expected | 1 + .../AnnotatedTest/implied-receiver.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/implied-receiver.js diff --git a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected index 8182d0174140..9d59da5ccadd 100644 --- a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected +++ b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected @@ -2,6 +2,7 @@ spuriousCallee missingCallee | constructor-field.ts:40:5:40:14 | f3.build() | constructor-field.ts:13:3:13:12 | build() {} | -1 | calls | | constructor-field.ts:71:1:71:11 | bf3.build() | constructor-field.ts:13:3:13:12 | build() {} | -1 | calls | +| implied-receiver.js:7:13:7:25 | this.member() | implied-receiver.js:17:22:19:1 | functio ... n 42;\\n} | -1 | calls | badAnnotation accessorCall | accessors.js:12:1:12:5 | obj.f | accessors.js:5:8:5:12 | () {} | diff --git a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/implied-receiver.js b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/implied-receiver.js new file mode 100644 index 000000000000..22638f35b566 --- /dev/null +++ b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/implied-receiver.js @@ -0,0 +1,19 @@ +import 'dummy'; + +function fooFactoryFactory() { + return function fooFactory() { + return function foo() { + /** calls:F.member */ + this.member(); + } + } +} + +function F() { + this.foo = fooFactoryFactory()(); +} + +/** name:F.member */ +F.prototype.member = function() { + return 42; +}; From 22b56a4a40761e6168cc4ac04610d2dd69fffe6f Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Thu, 7 Mar 2024 11:51:06 +0100 Subject: [PATCH 555/731] JS: More implied receiver steps --- .../dataflow/internal/CallGraphs.qll | 23 +++++++++++++++++++ .../CallGraphs/AnnotatedTest/Test.expected | 1 - 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll index 7e55944038bf..541e3a6f3e90 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/CallGraphs.qll @@ -279,6 +279,20 @@ module CallGraph { StepSummary::step(getAnAllocationSiteRef(node), result, objectWithMethodsStep()) } + /** + * Holds if `function` flows to a property of `host` via non-local data flow. + */ + pragma[nomagic] + private predicate complexMethodInstallation( + DataFlow::SourceNode host, DataFlow::FunctionNode function + ) { + not function = getAMethodOnObject(_) and + exists(DataFlow::TypeTracker t | + getAFunctionReference(function, 0, t) = host.getAPropertySource() and + t.start() // require call bit to be false + ) + } + /** * Holds if `pred` is assumed to flow to `succ` because a method is stored on an object that is assumed * to be the receiver of calls to that method. @@ -291,9 +305,18 @@ module CallGraph { */ cached predicate impliedReceiverStep(DataFlow::SourceNode pred, DataFlow::SourceNode succ) { + // To avoid double-recursion, we handle either complex flow for the host object, or for the function, but not both. exists(DataFlow::SourceNode host | + // Complex flow for the host object pred = getAnAllocationSiteRef(host) and succ = getAMethodOnObject(host).getReceiver() + or + // Complex flow for the function + exists(DataFlow::FunctionNode function | + complexMethodInstallation(host, function) and + pred = host and + succ = function.getReceiver() + ) ) } } diff --git a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected index 9d59da5ccadd..8182d0174140 100644 --- a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected +++ b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected @@ -2,7 +2,6 @@ spuriousCallee missingCallee | constructor-field.ts:40:5:40:14 | f3.build() | constructor-field.ts:13:3:13:12 | build() {} | -1 | calls | | constructor-field.ts:71:1:71:11 | bf3.build() | constructor-field.ts:13:3:13:12 | build() {} | -1 | calls | -| implied-receiver.js:7:13:7:25 | this.member() | implied-receiver.js:17:22:19:1 | functio ... n 42;\\n} | -1 | calls | badAnnotation accessorCall | accessors.js:12:1:12:5 | obj.f | accessors.js:5:8:5:12 | () {} | From f84609dbc41c054b81af861c038f5f15002d8299 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Tue, 26 Mar 2024 10:51:57 +0000 Subject: [PATCH 556/731] Go: Add changenote for `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` change --- .../2024-03-20-dependecy-retrieval-improvement.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md diff --git a/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md b/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md new file mode 100644 index 000000000000..42fc258f9735 --- /dev/null +++ b/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. From d7258f76d304d6a08d811b35eaef75548d744505 Mon Sep 17 00:00:00 2001 From: Max Schaefer <max-schaefer@github.com> Date: Tue, 26 Mar 2024 09:38:47 +0000 Subject: [PATCH 557/731] Go: Improve QHelp for `go/unvalidated-url-redirection`. The example showed a different (and better) fix from what the help claimed, but the suggestion also had a subtle bug that I fixed at the same time. --- go/ql/src/Security/CWE-601/OpenUrlRedirect.qhelp | 14 ++++++++++++-- go/ql/src/Security/CWE-601/OpenUrlRedirectGood.go | 15 ++++++++++----- .../OpenUrlRedirect/OpenUrlRedirectGood.go | 12 +++++++++--- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/go/ql/src/Security/CWE-601/OpenUrlRedirect.qhelp b/go/ql/src/Security/CWE-601/OpenUrlRedirect.qhelp index 11916c484c58..75060ba677cb 100644 --- a/go/ql/src/Security/CWE-601/OpenUrlRedirect.qhelp +++ b/go/ql/src/Security/CWE-601/OpenUrlRedirect.qhelp @@ -16,6 +16,10 @@ To guard against untrusted URL redirection, it is advisable to avoid putting use a redirect URL. Instead, maintain a list of authorized redirects on the server; then choose from that list based on the user input provided. </p> +<p> +If this is not possible, then the user input should be validated in some other way, +for example, by verifying that the target URL is local and does not redirect to a different host. +</p> </recommendation> <example> @@ -27,11 +31,17 @@ validating the input, which facilitates phishing attacks: <sample src="OpenUrlRedirect.go"/> <p> -One way to remedy the problem is to validate the user input against a known fixed string -before doing the redirection: +One way to remedy the problem is to parse the target URL and check that its hostname is empty, +which means that it is a relative URL: </p> <sample src="OpenUrlRedirectGood.go"/> + +<p> +Note that some browsers treat backslashes in URLs as forward slashes. To account for this, +we replace all backslashes with forward slashes before parsing the URL and checking its hostname. +</p> + </example> <references> diff --git a/go/ql/src/Security/CWE-601/OpenUrlRedirectGood.go b/go/ql/src/Security/CWE-601/OpenUrlRedirectGood.go index 7aa9e4aef29c..3638a8afd2e7 100644 --- a/go/ql/src/Security/CWE-601/OpenUrlRedirectGood.go +++ b/go/ql/src/Security/CWE-601/OpenUrlRedirectGood.go @@ -3,21 +3,26 @@ package main import ( "net/http" "net/url" + "strings" ) -func serve() { +func serve1() { http.HandleFunc("/redir", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - target, err := url.Parse(r.Form.Get("target")) + targetUrl := r.Form.Get("target") + // replace all backslashes with forward slashes before parsing the URL + targetUrl = strings.ReplaceAll(targetUrl, "\\", "/") + + target, err := url.Parse(targetUrl) if err != nil { // ... } - if target.Hostname() == "semmle.com" { - // GOOD: checking hostname + if target.Hostname() == "" { + // GOOD: check that it is a local redirect http.Redirect(w, r, target.String(), 302) } else { - http.WriteHeader(400) + w.WriteHeader(400) } }) } diff --git a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirectGood.go b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirectGood.go index 7ff368636f9d..3638a8afd2e7 100644 --- a/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirectGood.go +++ b/go/ql/test/query-tests/Security/CWE-601/OpenUrlRedirect/OpenUrlRedirectGood.go @@ -3,17 +3,23 @@ package main import ( "net/http" "net/url" + "strings" ) func serve1() { http.HandleFunc("/redir", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() - target, err := url.Parse(r.Form.Get("target")) + targetUrl := r.Form.Get("target") + // replace all backslashes with forward slashes before parsing the URL + targetUrl = strings.ReplaceAll(targetUrl, "\\", "/") + + target, err := url.Parse(targetUrl) if err != nil { // ... } - if target.Hostname() == "semmle.com" { - // GOOD: checking hostname + + if target.Hostname() == "" { + // GOOD: check that it is a local redirect http.Redirect(w, r, target.String(), 302) } else { w.WriteHeader(400) From c5604c97bd865f3ee275dbc61ab8feb27a545f82 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Tue, 26 Mar 2024 14:10:28 +0000 Subject: [PATCH 558/731] Kotlin 2: Accept more location changes --- .../library-tests/exprs/exprs.expected | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 2901a7182de4..529a3d0b66b4 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -224,7 +224,7 @@ | delegatedProperties.kt:39:34:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:34:39:51 | get | MethodCall | | delegatedProperties.kt:39:34:39:51 | <get-varResource2>(...) | delegatedProperties.kt:39:34:39:51 | get | MethodCall | | delegatedProperties.kt:39:34:39:51 | Integer | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | -| delegatedProperties.kt:39:34:39:51 | Integer | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | TypeAccess | +| delegatedProperties.kt:39:34:39:51 | Integer | delegatedProperties.kt:39:9:39:51 | <get-varResource2> | TypeAccess | | delegatedProperties.kt:39:34:39:51 | KProperty0<Integer> | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:39:34:39:51 | KProperty0<Integer> | delegatedProperties.kt:39:9:39:51 | <get-varResource2> | TypeAccess | | delegatedProperties.kt:39:34:39:51 | Object | delegatedProperties.kt:39:34:39:51 | get | TypeAccess | @@ -239,7 +239,7 @@ | delegatedProperties.kt:39:34:39:51 | this | delegatedProperties.kt:39:34:39:51 | invoke | ThisAccess | | delegatedProperties.kt:39:34:39:51 | this | delegatedProperties.kt:39:34:39:51 | invoke | ThisAccess | | delegatedProperties.kt:39:34:39:51 | varResource2$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | -| delegatedProperties.kt:39:34:39:51 | varResource2$delegate | delegatedProperties.kt:39:34:39:51 | <get-varResource2> | VarAccess | +| delegatedProperties.kt:39:34:39:51 | varResource2$delegate | delegatedProperties.kt:39:9:39:51 | <get-varResource2> | VarAccess | | delegatedProperties.kt:39:34:39:51 | DelegateProvider | delegatedProperties.kt:18:5:40:5 | fn | TypeAccess | | delegatedProperties.kt:39:34:39:51 | new DelegateProvider(...) | delegatedProperties.kt:18:5:40:5 | fn | ClassInstanceExpr | | delegatedProperties.kt:42:30:42:47 | ...::... | delegatedProperties.kt:42:30:42:47 | getVarResource0 | PropertyRefExpr | @@ -247,8 +247,8 @@ | delegatedProperties.kt:42:30:42:47 | ...=... | delegatedProperties.kt:17:1:43:1 | Owner | KtInitializerAssignExpr | | delegatedProperties.kt:42:30:42:47 | Integer | delegatedProperties.kt:42:30:42:47 | getVarResource0 | TypeAccess | | delegatedProperties.kt:42:30:42:47 | Integer | delegatedProperties.kt:42:30:42:47 | setVarResource0 | TypeAccess | +| delegatedProperties.kt:42:30:42:47 | KMutableProperty1<Owner,Integer> | delegatedProperties.kt:42:5:42:47 | setVarResource0 | TypeAccess | | delegatedProperties.kt:42:30:42:47 | KMutableProperty1<Owner,Integer> | delegatedProperties.kt:42:30:42:47 | getVarResource0 | TypeAccess | -| delegatedProperties.kt:42:30:42:47 | KMutableProperty1<Owner,Integer> | delegatedProperties.kt:42:30:42:47 | setVarResource0 | TypeAccess | | delegatedProperties.kt:42:30:42:47 | Owner | delegatedProperties.kt:42:30:42:47 | getVarResource0 | TypeAccess | | delegatedProperties.kt:42:30:42:47 | Owner | delegatedProperties.kt:42:30:42:47 | setVarResource0 | TypeAccess | | delegatedProperties.kt:42:30:42:47 | ResourceDelegate | file://:0:0:0:0 | <none> | TypeAccess | @@ -275,13 +275,13 @@ | delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | invoke | ThisAccess | | delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | invoke | ThisAccess | | delegatedProperties.kt:42:30:42:47 | this | delegatedProperties.kt:42:30:42:47 | setVarResource0 | ThisAccess | +| delegatedProperties.kt:42:30:42:47 | this.varResource0$delegate | delegatedProperties.kt:42:5:42:47 | setVarResource0 | VarAccess | | delegatedProperties.kt:42:30:42:47 | this.varResource0$delegate | delegatedProperties.kt:42:30:42:47 | getVarResource0 | VarAccess | -| delegatedProperties.kt:42:30:42:47 | this.varResource0$delegate | delegatedProperties.kt:42:30:42:47 | setVarResource0 | VarAccess | | delegatedProperties.kt:42:30:42:47 | varResource0$delegate | delegatedProperties.kt:17:1:43:1 | Owner | VarAccess | | delegatedProperties.kt:42:30:42:47 | <set-?> | delegatedProperties.kt:42:30:42:47 | setVarResource0 | VarAccess | | delegatedProperties.kt:42:30:42:47 | ResourceDelegate | delegatedProperties.kt:17:1:43:1 | Owner | TypeAccess | | delegatedProperties.kt:42:30:42:47 | new ResourceDelegate(...) | delegatedProperties.kt:17:1:43:1 | Owner | ClassInstanceExpr | -| delegatedProperties.kt:46:14:48:5 | int | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:46:5:48:5 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:46:27:46:41 | Owner | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:46:44:46:65 | ? ... | file://:0:0:0:0 | <none> | WildcardTypeAccess | | delegatedProperties.kt:46:44:46:65 | KProperty<?> | file://:0:0:0:0 | <none> | TypeAccess | @@ -350,8 +350,8 @@ | delegatedProperties.kt:65:35:65:77 | this | delegatedProperties.kt:65:35:65:77 | getAnotherClassInstance | ThisAccess | | delegatedProperties.kt:65:35:65:77 | this.anotherClassInstance | delegatedProperties.kt:65:35:65:77 | getAnotherClassInstance | VarAccess | | delegatedProperties.kt:65:87:65:95 | memberInt | delegatedProperties.kt:65:14:65:78 | MyClass | VarAccess | +| delegatedProperties.kt:66:36:66:50 | ...::... | delegatedProperties.kt:66:5:66:50 | setDelegatedToMember1 | PropertyRefExpr | | delegatedProperties.kt:66:36:66:50 | ...::... | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | PropertyRefExpr | -| delegatedProperties.kt:66:36:66:50 | ...::... | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | PropertyRefExpr | | delegatedProperties.kt:66:36:66:50 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | | delegatedProperties.kt:66:36:66:50 | Integer | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | | delegatedProperties.kt:66:36:66:50 | Integer | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | @@ -363,8 +363,8 @@ | delegatedProperties.kt:66:36:66:50 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | | delegatedProperties.kt:66:36:66:50 | MyClass | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | | delegatedProperties.kt:66:36:66:50 | MyClass | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | +| delegatedProperties.kt:66:36:66:50 | PropertyReferenceDelegatesKt | delegatedProperties.kt:66:5:66:50 | setDelegatedToMember1 | TypeAccess | | delegatedProperties.kt:66:36:66:50 | PropertyReferenceDelegatesKt | delegatedProperties.kt:66:36:66:50 | getDelegatedToMember1 | TypeAccess | -| delegatedProperties.kt:66:36:66:50 | PropertyReferenceDelegatesKt | delegatedProperties.kt:66:36:66:50 | setDelegatedToMember1 | TypeAccess | | delegatedProperties.kt:66:36:66:50 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | get | VarAccess | | delegatedProperties.kt:66:36:66:50 | a0 | delegatedProperties.kt:66:36:66:50 | get | VarAccess | @@ -411,24 +411,24 @@ | delegatedProperties.kt:66:36:66:50 | this.<dispatchReceiver> | delegatedProperties.kt:66:36:66:50 | | VarAccess | | delegatedProperties.kt:66:36:66:50 | this.<dispatchReceiver> | delegatedProperties.kt:66:36:66:50 | get | VarAccess | | delegatedProperties.kt:66:36:66:50 | this.<dispatchReceiver> | delegatedProperties.kt:66:36:66:50 | set | VarAccess | +| delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | PropertyRefExpr | | delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | PropertyRefExpr | -| delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | PropertyRefExpr | | delegatedProperties.kt:67:36:67:53 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:36:67:53 | Integer | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | Integer | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:67:36:67:53 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | KMutableProperty1<MyClass,Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:36:67:53 | MyClass | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | MyClass | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:67:36:67:53 | PropertyReferenceDelegatesKt | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | PropertyReferenceDelegatesKt | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | TypeAccess | -| delegatedProperties.kt:67:36:67:53 | PropertyReferenceDelegatesKt | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | TypeAccess | | delegatedProperties.kt:67:36:67:53 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | get | VarAccess | | delegatedProperties.kt:67:36:67:53 | a0 | delegatedProperties.kt:67:36:67:53 | get | VarAccess | @@ -448,11 +448,11 @@ | delegatedProperties.kt:67:36:67:53 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2(...) | delegatedProperties.kt:67:36:67:53 | set | MethodCall | | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2(...) | delegatedProperties.kt:67:36:67:53 | set | MethodCall | -| delegatedProperties.kt:67:36:67:53 | setValue(...) | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | MethodCall | +| delegatedProperties.kt:67:36:67:53 | setValue(...) | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | MethodCall | +| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:5:67:53 | setDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess | | delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess | -| delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | ThisAccess | | delegatedProperties.kt:67:36:67:53 | this.delegatedToMember2$delegate | delegatedProperties.kt:67:36:67:53 | getDelegatedToMember2 | VarAccess | | delegatedProperties.kt:67:36:67:53 | this.delegatedToMember2$delegate | delegatedProperties.kt:67:36:67:53 | setDelegatedToMember2 | VarAccess | | delegatedProperties.kt:67:36:67:53 | ...::... | delegatedProperties.kt:65:14:65:78 | MyClass | PropertyRefExpr | @@ -468,21 +468,21 @@ | delegatedProperties.kt:67:36:67:53 | getMemberInt(...) | delegatedProperties.kt:67:36:67:53 | get | MethodCall | | delegatedProperties.kt:67:36:67:53 | setMemberInt(...) | delegatedProperties.kt:67:36:67:53 | set | MethodCall | | delegatedProperties.kt:67:36:67:53 | this | delegatedProperties.kt:67:36:67:53 | invoke | ThisAccess | +| delegatedProperties.kt:69:39:69:56 | ...::... | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | PropertyRefExpr | | delegatedProperties.kt:69:39:69:56 | ...::... | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | PropertyRefExpr | -| delegatedProperties.kt:69:39:69:56 | ...::... | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | PropertyRefExpr | | delegatedProperties.kt:69:39:69:56 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | TypeAccess | | delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | | delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:39:69:56 | Integer | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | | delegatedProperties.kt:69:39:69:56 | Integer | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:69:39:69:56 | KMutableProperty0<Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | TypeAccess | | delegatedProperties.kt:69:39:69:56 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:39:69:56 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | MyClass | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | TypeAccess | | delegatedProperties.kt:69:39:69:56 | MyClass | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:39:69:56 | MyClass | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | +| delegatedProperties.kt:69:39:69:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:69:5:69:56 | setDelegatedToExtMember1 | TypeAccess | | delegatedProperties.kt:69:39:69:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:69:39:69:56 | getDelegatedToExtMember1 | TypeAccess | -| delegatedProperties.kt:69:39:69:56 | PropertyReferenceDelegatesKt | delegatedProperties.kt:69:39:69:56 | setDelegatedToExtMember1 | TypeAccess | | delegatedProperties.kt:69:39:69:56 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | get | VarAccess | | delegatedProperties.kt:69:39:69:56 | a0 | delegatedProperties.kt:69:39:69:56 | get | VarAccess | @@ -531,24 +531,24 @@ | delegatedProperties.kt:69:39:69:56 | this.<extensionReceiver> | delegatedProperties.kt:69:39:69:56 | | VarAccess | | delegatedProperties.kt:69:39:69:56 | this.<extensionReceiver> | delegatedProperties.kt:69:39:69:56 | get | VarAccess | | delegatedProperties.kt:69:39:69:56 | this.<extensionReceiver> | delegatedProperties.kt:69:39:69:56 | set | VarAccess | +| delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | PropertyRefExpr | | delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | PropertyRefExpr | -| delegatedProperties.kt:70:39:70:59 | ...::... | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | PropertyRefExpr | | delegatedProperties.kt:70:39:70:59 | ...=... | delegatedProperties.kt:65:14:65:78 | MyClass | KtInitializerAssignExpr | +| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:39:70:59 | Integer | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | Integer | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:39:70:59 | KMutableProperty1<MyClass,Integer> | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | KMutableProperty1<MyClass,Integer> | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:39:70:59 | MyClass | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | MyClass | file://:0:0:0:0 | <none> | TypeAccess | +| delegatedProperties.kt:70:39:70:59 | PropertyReferenceDelegatesKt | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | PropertyReferenceDelegatesKt | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | TypeAccess | -| delegatedProperties.kt:70:39:70:59 | PropertyReferenceDelegatesKt | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | TypeAccess | | delegatedProperties.kt:70:39:70:59 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | get | VarAccess | | delegatedProperties.kt:70:39:70:59 | a0 | delegatedProperties.kt:70:39:70:59 | get | VarAccess | @@ -568,7 +568,7 @@ | delegatedProperties.kt:70:39:70:59 | int | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2(...) | delegatedProperties.kt:70:39:70:59 | set | MethodCall | | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2(...) | delegatedProperties.kt:70:39:70:59 | set | MethodCall | -| delegatedProperties.kt:70:39:70:59 | setValue(...) | delegatedProperties.kt:70:39:70:59 | setDelegatedToExtMember2 | MethodCall | +| delegatedProperties.kt:70:39:70:59 | setValue(...) | delegatedProperties.kt:70:5:70:59 | setDelegatedToExtMember2 | MethodCall | | delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | getDelegatedToExtMember2 | ThisAccess | | delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | invoke | ThisAccess | | delegatedProperties.kt:70:39:70:59 | this | delegatedProperties.kt:70:39:70:59 | invoke | ThisAccess | From d786ea90a49bc5fbbb50a5ebfa474545af91f465 Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:26:58 +0100 Subject: [PATCH 559/731] Java: Add more neutrals Adds more neutral models to help the model generator ignore certain callables. Also improves the precision of certain URL models by using synthetic fields so that the parts of a URL are tainted separately. --- .../2024-03-26-url-models-precision.md | 4 ++ java/ql/lib/ext/java.net.model.yml | 18 ++++++++- java/ql/lib/ext/java.nio.file.model.yml | 27 ++++++++++++- java/ql/lib/ext/java.security.cert.model.yml | 40 +++++++++++++++++++ java/ql/lib/ext/java.security.model.yml | 11 +++++ 5 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 java/ql/lib/change-notes/2024-03-26-url-models-precision.md diff --git a/java/ql/lib/change-notes/2024-03-26-url-models-precision.md b/java/ql/lib/change-notes/2024-03-26-url-models-precision.md new file mode 100644 index 000000000000..d6fb561e725f --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-26-url-models-precision.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 5884c60e4e73..84614e96fe8a 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -18,6 +18,7 @@ extensions: - ["java.net", "DatagramSocket", True, "connect", "(SocketAddress)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["java.net", "PasswordAuthentication", False, "PasswordAuthentication", "(String,char[])", "", "Argument[1]", "credentials-password", "hq-generated"] - ["java.net", "Socket", True, "Socket", "(String,int)", "", "Argument[0]", "request-forgery", "ai-manual"] + - ["java.net", "URL", False, "getContent", "", "", "Argument[this]", "request-forgery", "manual"] - ["java.net", "URL", False, "openConnection", "", "", "Argument[this]", "request-forgery", "manual"] - ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["java.net", "URL", False, "openStream", "", "", "Argument[this]", "request-forgery", "manual"] @@ -52,9 +53,16 @@ extensions: - ["java.net", "URI", False, "toASCIIString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.net", "URI", False, "toString", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.net", "URI", False, "toURL", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - - ["java.net", "URL", False, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] - - ["java.net", "URL", False, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "ai-manual"] + - ["java.net", "URL", False, "getFile", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "ai-manual"] + - ["java.net", "URL", False, "getPath", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "ai-manual"] + - ["java.net", "URL", False, "getQuery", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "df-manual"] # query is parth of the path - ["java.net", "URL", False, "URL", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] + - ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-manual"] + - ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[3]", "Argument[this].SyntheticField[java.net.URL.path]", "taint", "df-manual"] + - ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-manual"] + - ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[3]", "Argument[this].SyntheticField[java.net.URL.path]", "taint", "df-manual"] + - ["java.net", "URL", False, "URL", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-manual"] + - ["java.net", "URL", False, "URL", "(String,String,String)", "", "Argument[2]", "Argument[this].SyntheticField[java.net.URL.path]", "taint", "df-manual"] - ["java.net", "URL", False, "URL", "(URL,String)", "", "Argument[0]", "Argument[this]", "taint", "ai-manual"] - ["java.net", "URL", False, "URL", "(URL,String)", "", "Argument[1]", "Argument[this]", "taint", "ai-manual"] - ["java.net", "URL", False, "toExternalForm", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] @@ -69,3 +77,9 @@ extensions: - ["java.net", "Socket", "getOutputStream", "()", "summary", "df-manual"] - ["java.net", "Socket", "connect", "(SocketAddress)", "summary", "df-manual"] - ["java.net", "Socket", "connect", "(SocketAddress,int)", "summary", "df-manual"] + - ["java.net", "URL", "getContent", "()", "summary", "df-manual"] + - ["java.net", "URL", "getDefaultPort", "()", "summary", "df-manual"] + - ["java.net", "URL", "getPort", "()", "summary", "df-manual"] + - ["java.net", "URL", "getProtocol", "()", "summary", "df-manual"] + - ["java.net", "URL", "openConnection", "()", "summary", "df-manual"] + - ["java.net", "URL", "openStream", "()", "summary", "df-manual"] diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index 8f8db20a0c05..8d7db676e533 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -90,8 +90,31 @@ extensions: extensible: neutralModel data: # summary neutrals - - ["java.nio.file", "Files", "exists", "(Path,LinkOption[])", "summary", "manual"] - - ["java.nio.file", "Files", "newInputStream", "(Path,OpenOption[])", "summary", "df-manual"] + - ["java.nio.file", "Files", "copy", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "createDirectories", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "createDirectory", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "createFile", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "createLink", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "createSymbolicLink", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "createTempDirectory", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "createTempFile", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "delete", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "deleteIfExists", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "getFileStore", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "exists", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "lines", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "move", "", summary, "df-manual"] + - ["java.nio.file", "Files", "newBufferedReader", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "newBufferedWriter", "", summary, "df-manual"] + - ["java.nio.file", "Files", "newInputStream", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "newOutputStream", "", summary, "df-manual"] + - ["java.nio.file", "Files", "notExists", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "probeContentType", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "readAllBytes", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "readAllLines", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "readString", "", "summary", "df-manual"] + - ["java.nio.file", "Files", "write", "", summary, "df-manual"] + - ["java.nio.file", "Files", "writeString", "", summary, "df-manual"] # sink neutrals - ["java.nio.file", "Files", "getLastModifiedTime", "", "sink", "hq-manual"] - ["java.nio.file", "Files", "getOwner", "", "sink", "hq-manual"] diff --git a/java/ql/lib/ext/java.security.cert.model.yml b/java/ql/lib/ext/java.security.cert.model.yml index e83168078839..503ad06cabfb 100644 --- a/java/ql/lib/ext/java.security.cert.model.yml +++ b/java/ql/lib/ext/java.security.cert.model.yml @@ -4,3 +4,43 @@ extensions: extensible: sinkModel data: - ["java.security.cert", "X509CertSelector", False, "setSubjectPublicKey", "(byte[])", "", "Argument[0]", "credentials-key", "hq-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.security.cert", "CertificateFactory", "CertificateFactory", "(CertificateFactorySpi,Provider,String)", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "generateCertificate", "(InputStream)", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "generateCertificates", "(InputStream)", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "generateCertPath", "", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "generateCRL", "(InputStream)", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "generateCRLs", "(InputStream)", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "getCertPathEncodings", "()", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "getInstance", "", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "getProvider", "()", "summary", "df-manual"] + - ["java.security.cert", "CertificateFactory", "getType", "()", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "CertStore", "(CertStoreSpi,Provider,String,CertStoreParameters)", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "getCertificates", "(CertSelector)", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "getCertStoreCertificates", "()", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "getCRLs", "(CRLSelector)", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "getDefaultType", "()", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "getInstance", "", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "getProvider", "()", "summary", "df-manual"] + - ["java.security.cert", "CertStore", "getType", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "PKIXParameters", "", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "addCertPathChecker", "(PKIXCertPathChecker)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "addCertStore", "(CertStore)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getCertPathCheckers", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getCertStores", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getDate", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getInitialPolicies", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getPolicyQualifiersRejected", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getSigProvider", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getTargetCertConstraints", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "getTrustAnchors", "()", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "setAnyPolicyInhibited", "(boolean)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "setCertPathCheckers", "(List)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "setCertStores", "(List)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "setDate", "(Date)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "setSigProvider", "(String)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "setTargetConstraints", "(CertSelector)", "summary", "df-manual"] + - ["java.security.cert", "PKIXParameters", "setTrustAnchors", "(Set)", "summary", "df-manual"] diff --git a/java/ql/lib/ext/java.security.model.yml b/java/ql/lib/ext/java.security.model.yml index a50c0b1d3fa6..6157c635fe6f 100644 --- a/java/ql/lib/ext/java.security.model.yml +++ b/java/ql/lib/ext/java.security.model.yml @@ -15,6 +15,17 @@ extensions: - ["java.security", "KeyStoreSpi", True, "engineSetKeyEntry", "(String,Key,char[],Certificate[])", "", "Argument[2]", "credentials-password", "hq-generated"] - ["java.security", "KeyStoreSpi", True, "engineStore", "(OutputStream,char[])", "", "Argument[1]", "credentials-password", "hq-generated"] - ["java.security", "KeyStoreSpi", True, "engineSetKeyEntry", "(String,byte[],Certificate[])", "", "Argument[1]", "credentials-key", "hq-generated"] + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.security", "CodeSource", False, "CodeSource", "(URL,Certificate[])", "", "Argument[0]", "Argument[this]", "taint", "df-manual"] + - ["java.security", "CodeSource", False, "CodeSource", "(URL,Certificate[])", "", "Argument[1].ArrayElement", "Argument[this].SyntheticField[java.security.CodeSource.certificates].ArrayElement", "value", "df-manual"] + - ["java.security", "CodeSource", False, "CodeSource", "(URL,CodeSigner[])", "", "Argument[0]", "Argument[this]", "taint", "df-manual"] + - ["java.security", "CodeSource", False, "CodeSource", "(URL,CodeSigner[])", "", "Argument[1].ArrayElement", "Argument[this].SyntheticField[java.security.CodeSource.codeSigners].ArrayElement", "value", "df-manual"] + - ["java.security", "CodeSource", False, "getCertificates", "()", "", "Argument[this].SyntheticField[java.security.CodeSource.certificates].ArrayElement", "ReturnValue.ArrayElement", "value", "df-manual"] + - ["java.security", "CodeSource", False, "getCodeSigners", "()", "", "Argument[this].SyntheticField[java.security.CodeSource.codeSigners].ArrayElement", "ReturnValue.ArrayElement", "value", "df-manual"] + - ["java.security", "CodeSource", False, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-manual"] - addsTo: pack: codeql/java-all extensible: neutralModel From 2075716df72206246b5e9f267661d35f7c654d7b Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 26 Mar 2024 16:37:22 +0000 Subject: [PATCH 560/731] C++: Add 'TaintInheritingContent'. --- .../lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll | 15 +++++++++++++++ .../cpp/ir/dataflow/internal/DataFlowUtil.qll | 10 +++++----- .../ir/dataflow/internal/TaintTrackingUtil.qll | 8 ++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll new file mode 100644 index 000000000000..445eba91d36b --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll @@ -0,0 +1,15 @@ +private import codeql.util.Unit +private import semmle.code.cpp.dataflow.new.DataFlow + +/** + * A `Content` that should be implicitly regarded as tainted whenever an object with such `Content` + * is itself tainted. + * + * For example, if we had a type `struct Container { int field; }`, then by default a tainted + * `Container` and a `Container` with a tainted `Contained` stored in its `field` are distinct. + * + * If `any(DataFlow::FieldContent fc | fc.getField().hasQualifiedName("Container", "field"))` was + * included in this type however, then a tainted `Container` would imply that its `field` is also + * tainted (but not vice versa). + */ +abstract class TaintInheritingContent extends DataFlow::Content { } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 81fc3115f553..001e8eaac9f6 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -2301,8 +2301,8 @@ private import ContentStars /** A reference through a non-union instance field. */ class FieldContent extends Content, TFieldContent { - Field f; - int indirectionIndex; + private Field f; + private int indirectionIndex; FieldContent() { this = TFieldContent(f, indirectionIndex) } @@ -2329,9 +2329,9 @@ class FieldContent extends Content, TFieldContent { /** A reference through an instance field of a union. */ class UnionContent extends Content, TUnionContent { - Union u; - int indirectionIndex; - int bytes; + private Union u; + private int indirectionIndex; + private int bytes; UnionContent() { this = TUnionContent(u, bytes, indirectionIndex) } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll index 51b893ddb238..734da019413a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll @@ -6,6 +6,7 @@ private import semmle.code.cpp.models.interfaces.SideEffect private import DataFlowUtil private import DataFlowPrivate private import SsaInternals as Ssa +private import semmle.code.cpp.ir.dataflow.FlowSteps /** * Holds if taint propagates from `nodeFrom` to `nodeTo` in exactly one local @@ -37,6 +38,13 @@ predicate localAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeT ) or any(Ssa::Indirection ind).isAdditionalTaintStep(nodeFrom, nodeTo) + or + // object->field conflation for content that is a `TaintInheritingContent`. + exists(DataFlow::ContentSet f | + nodeFrom.getEnclosingCallable().hasName("test_TaintInheritingContent") and + readStep(nodeFrom, f, nodeTo) and + f.getAReadContent() instanceof TaintInheritingContent + ) } /** From bd2ecd3346a135a0735ab2ac3ceabe58a7906ff1 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 26 Mar 2024 16:38:28 +0000 Subject: [PATCH 561/731] C++: Add test. --- .../dataflow/taint-tests/taint.ql | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.ql b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.ql index 56c8cd8ba684..147730278176 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.ql +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.ql @@ -76,6 +76,24 @@ module AstTest { module IRTest { private import semmle.code.cpp.ir.IR private import semmle.code.cpp.ir.dataflow.TaintTracking + private import semmle.code.cpp.ir.dataflow.FlowSteps + + /** + * Object->field flow when the object is of type + * TaintInheritingContentObject and the field is named + * flowFromObject + */ + class TaintInheritingContentTest extends TaintInheritingContent, DataFlow::FieldContent { + TaintInheritingContentTest() { + exists(Struct o, Field f | + this.getField() = f and + f = o.getAField() and + o.hasGlobalName("TaintInheritingContentObject") and + f.hasName("flowFromObject") and + this.getIndirectionIndex() = 1 + ) + } + } /** Common data flow configuration to be used by tests. */ module TestAllocationConfig implements DataFlow::ConfigSig { From ec3d041c8d50e8784a66773b7fda4fde9d0912dc Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 26 Mar 2024 16:38:34 +0000 Subject: [PATCH 562/731] C++: Accept test changes. --- .../dataflow/taint-tests/localTaint.expected | 1 + .../test/library-tests/dataflow/taint-tests/taint.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected index 54fd7cd8883c..6da494e75d75 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -6676,6 +6676,7 @@ WARNING: Module TaintTracking has been deprecated and may be removed in future ( | taint.cpp:757:7:757:10 | path | taint.cpp:759:8:759:11 | path | | | taint.cpp:758:21:758:24 | ref arg path | taint.cpp:759:8:759:11 | path | | | taint.cpp:759:8:759:11 | path | taint.cpp:759:7:759:11 | * ... | | +| taint.cpp:769:37:769:42 | call to source | taint.cpp:770:7:770:9 | obj | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:17:26:17:32 | source1 | | | vector.cpp:16:43:16:49 | source1 | vector.cpp:31:38:31:44 | source1 | | | vector.cpp:17:21:17:33 | call to vector | vector.cpp:19:14:19:14 | v | | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp index 0ba45b6f30ab..1504142bdce0 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -757,4 +757,15 @@ void test_call_sprintf() { char path[10]; call_sprintf_twice(path, indirect_source()); sink(*path); // $ ast,ir +} + +struct TaintInheritingContentObject { + int flowFromObject; +}; + +TaintInheritingContentObject source(bool); + +void test_TaintInheritingContent() { + TaintInheritingContentObject obj = source(true); + sink(obj.flowFromObject); // $ ir MISSING: ast } \ No newline at end of file From e3744c435ae1f01677192502ddbc17c5dd82014a Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 26 Mar 2024 16:44:16 +0000 Subject: [PATCH 563/731] C++: Add change note. --- .../lib/change-notes/2024-03-26-taint-inheriting-content.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md diff --git a/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md b/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md new file mode 100644 index 000000000000..759386e461f6 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. \ No newline at end of file From d610d721a40a0fb3c32c67c38203ad24c675659f Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 26 Mar 2024 16:47:39 +0000 Subject: [PATCH 564/731] C++: Add file QLDoc. --- cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll index 445eba91d36b..1b01da19bc42 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll @@ -1,3 +1,8 @@ +/** + * This file provides an abstract class that can be used to model additional + * object-to-field taint-flow. + */ + private import codeql.util.Unit private import semmle.code.cpp.dataflow.new.DataFlow From 6a8c592900d4b730b7807bea49317aedb1f32f0a Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 26 Mar 2024 16:59:18 +0000 Subject: [PATCH 565/731] Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com> --- cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll index 1b01da19bc42..673dc24b6733 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/FlowSteps.qll @@ -11,7 +11,7 @@ private import semmle.code.cpp.dataflow.new.DataFlow * is itself tainted. * * For example, if we had a type `struct Container { int field; }`, then by default a tainted - * `Container` and a `Container` with a tainted `Contained` stored in its `field` are distinct. + * `Container` and a `Container` with a tainted `int` stored in its `field` are distinct. * * If `any(DataFlow::FieldContent fc | fc.getField().hasQualifiedName("Container", "field"))` was * included in this type however, then a tainted `Container` would imply that its `field` is also From 3bfaab91821d8142747cd907db20a5a9188ab6d1 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 26 Mar 2024 17:01:06 +0000 Subject: [PATCH 566/731] C++: Remove debugging conjunct. --- .../semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll index 734da019413a..0f69094e8d3d 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TaintTrackingUtil.qll @@ -41,7 +41,6 @@ predicate localAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeT or // object->field conflation for content that is a `TaintInheritingContent`. exists(DataFlow::ContentSet f | - nodeFrom.getEnclosingCallable().hasName("test_TaintInheritingContent") and readStep(nodeFrom, f, nodeTo) and f.getAReadContent() instanceof TaintInheritingContent ) From b4a6f75ad783b7f3d302f751627deb1f80a99422 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:35:07 +0000 Subject: [PATCH 567/731] C++: Divide CODEOWNERS responsibilities. --- CODEOWNERS | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 1869b38b7c98..c1659959fecc 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,6 @@ -/cpp/ @github/codeql-c-analysis +/cpp/ @github/codeql-c-extractor +/cpp/config/ @github/codeql-c-analysis +/cpp/ql/ @github/codeql-c-analysis /csharp/ @github/codeql-csharp /go/ @github/codeql-go /java/ @github/codeql-java From 497325455af1ee1102104c434f2a75a1cf4a07f5 Mon Sep 17 00:00:00 2001 From: Arthur Baars <aibaars@github.com> Date: Wed, 13 Mar 2024 10:43:29 +0100 Subject: [PATCH 568/731] Java: update expected output --- .../buildless-maven-multimodule/buildless-fetches.expected | 6 +++--- .../java/buildless-maven/buildless-fetches.expected | 4 ++-- .../buildless-sibling-projects/buildless-fetches.expected | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/buildless-fetches.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/buildless-fetches.expected index dd0cd5034a06..e4a95afc7130 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/buildless-fetches.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven-multimodule/buildless-fetches.expected @@ -9,7 +9,10 @@ https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-example_2.11/0.1.2/r https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-java-example_2.11/0.1.2/rx-redis-java-example_2.11-0.1.2.jar https://repo.maven.apache.org/maven2/io/github/scrollsyou/example-spring-boot-starter/1.0.0/example-spring-boot-starter-1.0.0.jar https://repo.maven.apache.org/maven2/io/streamnative/com/example/maven-central-template/server/3.0.0/server-3.0.0.jar +https://repo.maven.apache.org/maven2/junit/junit/4.11/junit-4.11.jar https://repo.maven.apache.org/maven2/no/nav/security/token-validation-ktor-demo/3.1.0/token-validation-ktor-demo-3.1.0.jar +https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar +https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-fileupload/0.5.10/minijax-example-fileupload-0.5.10.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-inject/0.5.10/minijax-example-inject-0.5.10.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-json/0.5.10/minijax-example-json-0.5.10.jar @@ -22,6 +25,3 @@ https://repo.maven.apache.org/maven2/org/minijax/minijax-example-websocket/0.5.1 https://repo.maven.apache.org/maven2/org/scalamock/scalamock-examples_2.10/3.6.0/scalamock-examples_2.10-3.6.0.jar https://repo.maven.apache.org/maven2/org/somda/sdc/glue-examples/4.0.0/glue-examples-4.0.0.jar https://repo.maven.apache.org/maven2/us/fatehi/schemacrawler-examplecode/16.20.2/schemacrawler-examplecode-16.20.2.jar -https://repo1.maven.org/maven2/junit/junit/4.11/junit-4.11.jar -https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar -https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected b/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected index e3710cc4cb93..49120865e8de 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-maven/buildless-fetches.expected @@ -9,7 +9,9 @@ https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-example_2.11/0.1.2/r https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-java-example_2.11/0.1.2/rx-redis-java-example_2.11-0.1.2.jar https://repo.maven.apache.org/maven2/io/github/scrollsyou/example-spring-boot-starter/1.0.0/example-spring-boot-starter-1.0.0.jar https://repo.maven.apache.org/maven2/io/streamnative/com/example/maven-central-template/server/3.0.0/server-3.0.0.jar +https://repo.maven.apache.org/maven2/junit/junit/4.11/junit-4.11.jar https://repo.maven.apache.org/maven2/no/nav/security/token-validation-ktor-demo/3.1.0/token-validation-ktor-demo-3.1.0.jar +https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-fileupload/0.5.10/minijax-example-fileupload-0.5.10.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-inject/0.5.10/minijax-example-inject-0.5.10.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-json/0.5.10/minijax-example-json-0.5.10.jar @@ -22,5 +24,3 @@ https://repo.maven.apache.org/maven2/org/minijax/minijax-example-websocket/0.5.1 https://repo.maven.apache.org/maven2/org/scalamock/scalamock-examples_2.10/3.6.0/scalamock-examples_2.10-3.6.0.jar https://repo.maven.apache.org/maven2/org/somda/sdc/glue-examples/4.0.0/glue-examples-4.0.0.jar https://repo.maven.apache.org/maven2/us/fatehi/schemacrawler-examplecode/16.20.2/schemacrawler-examplecode-16.20.2.jar -https://repo1.maven.org/maven2/junit/junit/4.11/junit-4.11.jar -https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar diff --git a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/buildless-fetches.expected b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/buildless-fetches.expected index 448428236211..79b12c2919e0 100644 --- a/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/buildless-fetches.expected +++ b/java/ql/integration-tests/all-platforms/java/buildless-sibling-projects/buildless-fetches.expected @@ -12,6 +12,7 @@ https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-example_2.11/0.1.2/r https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-java-example_2.11/0.1.2/rx-redis-java-example_2.11-0.1.2.jar https://repo.maven.apache.org/maven2/io/github/scrollsyou/example-spring-boot-starter/1.0.0/example-spring-boot-starter-1.0.0.jar https://repo.maven.apache.org/maven2/io/streamnative/com/example/maven-central-template/server/3.0.0/server-3.0.0.jar +https://repo.maven.apache.org/maven2/junit/junit/4.11/junit-4.11.jar https://repo.maven.apache.org/maven2/no/nav/security/token-validation-ktor-demo/3.1.0/token-validation-ktor-demo-3.1.0.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-fileupload/0.5.10/minijax-example-fileupload-0.5.10.jar https://repo.maven.apache.org/maven2/org/minijax/minijax-example-inject/0.5.10/minijax-example-inject-0.5.10.jar @@ -25,4 +26,3 @@ https://repo.maven.apache.org/maven2/org/minijax/minijax-example-websocket/0.5.1 https://repo.maven.apache.org/maven2/org/scalamock/scalamock-examples_2.10/3.6.0/scalamock-examples_2.10-3.6.0.jar https://repo.maven.apache.org/maven2/org/somda/sdc/glue-examples/4.0.0/glue-examples-4.0.0.jar https://repo.maven.apache.org/maven2/us/fatehi/schemacrawler-examplecode/16.20.2/schemacrawler-examplecode-16.20.2.jar -https://repo1.maven.org/maven2/junit/junit/4.11/junit-4.11.jar From 568442d5f8d317119b4e2abb14edd7aeec73e336 Mon Sep 17 00:00:00 2001 From: Henry Mercer <henrymercer@github.com> Date: Tue, 26 Mar 2024 18:11:50 +0000 Subject: [PATCH 569/731] QL: Run diagnostics and summary metrics in code scanning Add diagnostics and summary metric queries to the code scanning suite. --- ql/ql/src/codeql-suites/ql-code-scanning.qls | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ql/ql/src/codeql-suites/ql-code-scanning.qls b/ql/ql/src/codeql-suites/ql-code-scanning.qls index 4595d66f2ae0..1ee4ba8084da 100644 --- a/ql/ql/src/codeql-suites/ql-code-scanning.qls +++ b/ql/ql/src/codeql-suites/ql-code-scanning.qls @@ -14,6 +14,14 @@ - error - warning - recommendation +- include: + kind: + - diagnostic +- include: + kind: + - metric + tags contain: + - summary - exclude: deprecated: // - exclude: From 7a0446740b532ff0341dae2319767788ac69c61b Mon Sep 17 00:00:00 2001 From: Tony Torralba <atorralba@users.noreply.github.com> Date: Wed, 27 Mar 2024 09:09:48 +0100 Subject: [PATCH 570/731] Update java/ql/lib/ext/java.net.model.yml Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> --- java/ql/lib/ext/java.net.model.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/ext/java.net.model.yml b/java/ql/lib/ext/java.net.model.yml index 84614e96fe8a..f48acbeace13 100644 --- a/java/ql/lib/ext/java.net.model.yml +++ b/java/ql/lib/ext/java.net.model.yml @@ -55,7 +55,7 @@ extensions: - ["java.net", "URI", False, "toURL", "", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.net", "URL", False, "getFile", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "ai-manual"] - ["java.net", "URL", False, "getPath", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "ai-manual"] - - ["java.net", "URL", False, "getQuery", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "df-manual"] # query is parth of the path + - ["java.net", "URL", False, "getQuery", "()", "", "Argument[this].SyntheticField[java.net.URL.path]", "ReturnValue", "taint", "df-manual"] # query is part of the path - ["java.net", "URL", False, "URL", "(String)", "", "Argument[0]", "Argument[this]", "taint", "manual"] - ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-manual"] - ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[3]", "Argument[this].SyntheticField[java.net.URL.path]", "taint", "df-manual"] From 30c9ec19262d7998ba5fdb6ff620c1d03d25fb14 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 27 Mar 2024 09:23:48 +0000 Subject: [PATCH 571/731] C++: Adjust following discussion. --- CODEOWNERS | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index c1659959fecc..f052b0fe8977 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,6 +1,5 @@ -/cpp/ @github/codeql-c-extractor -/cpp/config/ @github/codeql-c-analysis -/cpp/ql/ @github/codeql-c-analysis +/cpp/ @github/codeql-c-analysis +/cpp/autobuilder/ @github/codeql-c-extractor /csharp/ @github/codeql-csharp /go/ @github/codeql-go /java/ @github/codeql-java From 27c6e2421c448e409e03ebbe4f7008d5e1cacfd2 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Wed, 27 Mar 2024 11:31:57 +0100 Subject: [PATCH 572/731] C++: Add `VariableTemplateInstantiation` class This adds some uniformity, as we already had `FunctionTemplateInstantiation` and `ClassTemplateInstantiation` classes. --- cpp/ql/lib/semmle/code/cpp/Variable.qll | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/Variable.qll b/cpp/ql/lib/semmle/code/cpp/Variable.qll index db334f45572e..3ac89ffc9b92 100644 --- a/cpp/ql/lib/semmle/code/cpp/Variable.qll +++ b/cpp/ql/lib/semmle/code/cpp/Variable.qll @@ -590,6 +590,33 @@ class TemplateVariable extends Variable { Variable getAnInstantiation() { result.isConstructedFrom(this) } } +/** + * A variable that is an instantiation of a template. For example + * the instantiation `myTemplateVariable<int>` in the following code: + * ``` + * template<class T> + * T myTemplateVariable; + * + * void caller(int i) { + * myTemplateVariable<int> = i; + * } + * ``` + */ +class VariableTemplateInstantiation extends Variable { + TemplateVariable tv; + + VariableTemplateInstantiation() { tv.getAnInstantiation() = this } + + override string getAPrimaryQlClass() { result = "VariableTemplateInstantiation" } + + /** + * Gets the variable template from which this instantiation was instantiated. + * + * Example: For `int x<int>`, returns `T x`. + */ + TemplateVariable getTemplate() { result = tv } +} + /** * A non-static local variable or parameter that is not part of an * uninstantiated template. Uninstantiated templates are purely syntax, and From 050682c477a90fff5a938133766963120b6262e7 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Wed, 27 Mar 2024 12:03:37 +0100 Subject: [PATCH 573/731] C++: Update expected test results --- cpp/ql/test/library-tests/ir/ir/PrintAST.expected | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index a6276ecfc5aa..7f667cd61cf5 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -15605,7 +15605,7 @@ ir.cpp: # 1934| Type = [ClassTemplateInstantiation,Struct] Bar2<int> # 1934| ValueCategory = lvalue # 1935| getStmt(2): [ReturnStmt] return ... -# 1938| [GlobalVariable] char global_template<char> +# 1938| [GlobalVariable,VariableTemplateInstantiation] char global_template<char> # 1938| getInitializer(): [Initializer] initializer for global_template # 1938| getExpr(): [Literal] 42 # 1938| Type = [IntType] int @@ -15616,7 +15616,7 @@ ir.cpp: # 1938| Type = [PlainCharType] char # 1938| Value = [CStyleCast] 42 # 1938| ValueCategory = prvalue -# 1938| [GlobalVariable] int global_template<int> +# 1938| [GlobalVariable,VariableTemplateInstantiation] int global_template<int> # 1938| getInitializer(): [Initializer] initializer for global_template # 1938| getExpr(): [Literal] 42 # 1938| Type = [IntType] int From f9d10cec080c94ca3d3eefdce6925b0497ba72c6 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Wed, 27 Mar 2024 12:19:41 +0100 Subject: [PATCH 574/731] Swift: fix `DeclTranslator.cpp` compile errors --- swift/extractor/translators/DeclTranslator.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/swift/extractor/translators/DeclTranslator.cpp b/swift/extractor/translators/DeclTranslator.cpp index 0248d98e79f5..77f9bd18b135 100644 --- a/swift/extractor/translators/DeclTranslator.cpp +++ b/swift/extractor/translators/DeclTranslator.cpp @@ -269,8 +269,8 @@ void DeclTranslator::fillOperatorDecl(const swift::OperatorDecl& decl, void DeclTranslator::fillTypeDecl(const swift::TypeDecl& decl, codeql::TypeDecl& entry) { entry.name = decl.getNameStr().str(); - for (auto& typeLoc : decl.getInherited()) { - if (auto type = typeLoc.getType()) { + for (auto& inherited : decl.getInherited().getEntries()) { + if (auto type = inherited.getType()) { entry.inherited_types.push_back(dispatcher.fetchLabel(type)); } } @@ -289,7 +289,7 @@ void DeclTranslator::fillIterableDeclContext(const swift::IterableDeclContext& d void DeclTranslator::fillVarDecl(const swift::VarDecl& decl, codeql::VarDecl& entry) { entry.name = decl.getNameStr().str(); - entry.type = dispatcher.fetchLabel(decl.getType()); + entry.type = dispatcher.fetchLabel(decl.getTypeInContext()); entry.parent_pattern = dispatcher.fetchOptionalLabel(decl.getParentPattern()); entry.parent_initializer = dispatcher.fetchOptionalLabel(decl.getParentInitializer()); if (decl.hasAttachedPropertyWrapper()) { From 2382f76317419679c6d6ed923436decd42880d87 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Wed, 27 Mar 2024 12:23:37 +0100 Subject: [PATCH 575/731] Swift: ignore experimental `ThenStmt` --- swift/extractor/infra/SwiftTagTraits.h | 1 + 1 file changed, 1 insertion(+) diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index 40bea71bd503..b35bcef5a6a4 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -43,6 +43,7 @@ MAP(swift::Stmt, StmtTag) MAP(swift::BraceStmt, BraceStmtTag) MAP(swift::ReturnStmt, ReturnStmtTag) MAP(swift::YieldStmt, YieldStmtTag) + MAP(swift::ThenStmt, void) // gated behind yet unusable experimental feature MAP(swift::DeferStmt, DeferStmtTag) MAP(swift::LabeledStmt, LabeledStmtTag) MAP(swift::LabeledConditionalStmt, LabeledConditionalStmtTag) From 03bf804a683e8a1431e280232abae965c9479928 Mon Sep 17 00:00:00 2001 From: Calum Grant <calumgrant@github.com> Date: Wed, 27 Mar 2024 11:44:58 +0000 Subject: [PATCH 576/731] Add C++ analysis in separate workflow --- .github/workflows/cpp-swift-analysis.yml | 55 ++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/cpp-swift-analysis.yml diff --git a/.github/workflows/cpp-swift-analysis.yml b/.github/workflows/cpp-swift-analysis.yml new file mode 100644 index 000000000000..b2ebbc7d7dfb --- /dev/null +++ b/.github/workflows/cpp-swift-analysis.yml @@ -0,0 +1,55 @@ +name: "Code scanning - C++" + +on: + push: + branches: + - main + - 'rc/*' + pull_request: + branches: + - main + - 'rc/*' + paths: + - 'swift/**' + - '.github/codeql/**' + - '.github/workflows/cpp-swift-analysis.yml' + schedule: + - cron: '0 9 * * 1' + +jobs: + CodeQL-Build: + + runs-on: ubuntu-latest + + permissions: + contents: read + security-events: write + pull-requests: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@main + # Override language selection by uncommenting this and choosing your languages + with: + languages: cpp + config-file: ./.github/codeql/codeql-config.yml + + - name: "[Ubuntu] Remove GCC 13 from runner image" + shell: bash + run: | + sudo rm -f /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-jammy.list + sudo apt-get update + sudo apt-get install -y --allow-downgrades libc6=2.35-* libc6-dev=2.35-* libstdc++6=12.3.0-* libgcc-s1=12.3.0-* + + - name: "Build Swift extractor using Bazel" + run: | + bazel clean --expunge + bazel run //swift:create-extractor-pack --nouse_action_cache --noremote_accept_cached --noremote_upload_local_results --spawn_strategy=local --features=-layering_check + bazel shutdown + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@main From 35fbc95cc743f63b16a68f8f5f6ce82a9d0bdbeb Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Wed, 27 Mar 2024 08:09:40 -0400 Subject: [PATCH 577/731] Java: remove redundant line --- java/ql/lib/semmle/code/java/security/UrlForward.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll index 464a125ef758..26e6e53f9473 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForward.qll @@ -129,7 +129,6 @@ private class CheckUrlEncodingGuard extends Guard instanceof CheckUrlEncodingCal /** Holds if `g` is guard for a URL that does not contain URL encoding. */ private predicate noUrlEncodingGuard(Guard g, Expr e, boolean branch) { - g instanceof CheckUrlEncodingGuard and e = g.(CheckUrlEncodingGuard).getCheckedExpr() and branch = false or From f03a56f7e0875c0578b18b8c452688060bdb7787 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Thu, 29 Feb 2024 13:03:20 +0000 Subject: [PATCH 578/731] Run generation script The command line was: python3 /Users/owen-mc/workspace/codeql-home/codeql/java/ql/src/utils/modelgenerator/GenerateFlowModel.py /Users/owen-mc/db/java/openjdk17 --with-summaries --with-neutrals --- .../com.sun.jmx.remote.internal.model.yml | 7 + .../lib/ext/generated/java.applet.model.yml | 49 + java/ql/lib/ext/generated/java.awt.model.yml | 15 + .../java.beans.beancontext.model.yml | 85 ++ .../ql/lib/ext/generated/java.beans.model.yml | 261 +++++ java/ql/lib/ext/generated/java.io.model.yml | 417 ++++++++ .../generated/java.lang.annotation.model.yml | 21 + .../generated/java.lang.constant.model.yml | 94 ++ .../generated/java.lang.instrument.model.yml | 18 + .../ext/generated/java.lang.invoke.model.yml | 265 +++++ .../generated/java.lang.management.model.yml | 71 ++ java/ql/lib/ext/generated/java.lang.model.yml | 977 ++++++++++++++++++ .../ext/generated/java.lang.module.model.yml | 130 +++ .../lib/ext/generated/java.lang.ref.model.yml | 32 + .../ext/generated/java.lang.reflect.model.yml | 145 +++ .../ext/generated/java.lang.runtime.model.yml | 13 + java/ql/lib/ext/generated/java.math.model.yml | 107 ++ .../lib/ext/generated/java.net.http.model.yml | 103 ++ java/ql/lib/ext/generated/java.net.model.yml | 485 +++++++++ .../ext/generated/java.nio.channels.model.yml | 180 ++++ .../generated/java.nio.channels.spi.model.yml | 21 + .../ext/generated/java.nio.charset.model.yml | 82 ++ .../generated/java.nio.charset.spi.model.yml | 8 + .../java.nio.file.attribute.model.yml | 38 + .../lib/ext/generated/java.nio.file.model.yml | 158 +++ .../ext/generated/java.nio.file.spi.model.yml | 39 + java/ql/lib/ext/generated/java.nio.model.yml | 234 +++++ .../lib/ext/generated/java.rmi.dgc.model.yml | 14 + java/ql/lib/ext/generated/java.rmi.model.yml | 56 + .../ext/generated/java.rmi.registry.model.yml | 13 + .../ext/generated/java.rmi.server.model.yml | 71 ++ .../generated/java.security.cert.model.yml | 326 ++++++ .../java.security.interfaces.model.yml | 10 + .../lib/ext/generated/java.security.model.yml | 462 +++++++++ .../generated/java.security.spec.model.yml | 146 +++ java/ql/lib/ext/generated/java.sql.model.yml | 465 +++++++++ java/ql/lib/ext/generated/java.text.model.yml | 339 ++++++ .../lib/ext/generated/java.text.spi.model.yml | 21 + .../ext/generated/java.time.chrono.model.yml | 118 +++ .../ext/generated/java.time.format.model.yml | 104 ++ java/ql/lib/ext/generated/java.time.model.yml | 513 +++++++++ .../generated/java.time.temporal.model.yml | 97 ++ .../ext/generated/java.time.zone.model.yml | 63 ++ .../java.util.concurrent.atomic.model.yml | 271 +++++ .../java.util.concurrent.locks.model.yml | 128 +++ .../generated/java.util.concurrent.model.yml | 374 +++++++ .../generated/java.util.function.model.yml | 46 + .../lib/ext/generated/java.util.jar.model.yml | 54 + .../ext/generated/java.util.logging.model.yml | 155 +++ java/ql/lib/ext/generated/java.util.model.yml | 866 ++++++++++++++++ .../ext/generated/java.util.prefs.model.yml | 69 ++ .../ext/generated/java.util.random.model.yml | 88 ++ .../ext/generated/java.util.regex.model.yml | 63 ++ .../lib/ext/generated/java.util.spi.model.yml | 25 + .../ext/generated/java.util.stream.model.yml | 216 ++++ .../lib/ext/generated/java.util.zip.model.yml | 155 +++ .../generated/javax.accessibility.model.yml | 75 ++ .../javax.annotation.processing.model.yml | 25 + .../lib/ext/generated/javax.crypto.model.yml | 180 ++++ .../ext/generated/javax.crypto.spec.model.yml | 78 ++ .../javax.imageio.metadata.model.yml | 65 ++ .../lib/ext/generated/javax.imageio.model.yml | 251 +++++ .../javax.imageio.plugins.bmp.model.yml | 13 + .../javax.imageio.plugins.jpeg.model.yml | 35 + .../javax.imageio.plugins.tiff.model.yml | 94 ++ .../ext/generated/javax.imageio.spi.model.yml | 129 +++ .../generated/javax.imageio.stream.model.yml | 62 ++ .../javax.lang.model.element.model.yml | 38 + .../ext/generated/javax.lang.model.model.yml | 13 + .../generated/javax.lang.model.type.model.yml | 20 + .../generated/javax.lang.model.util.model.yml | 93 ++ .../javax.management.loading.model.yml | 44 + .../ext/generated/javax.management.model.yml | 409 ++++++++ .../javax.management.modelmbean.model.yml | 113 ++ .../javax.management.monitor.model.yml | 68 ++ .../javax.management.openmbean.model.yml | 150 +++ .../javax.management.relation.model.yml | 171 +++ .../javax.management.remote.model.yml | 72 ++ .../javax.management.remote.rmi.model.yml | 84 ++ .../javax.management.timer.model.yml | 37 + .../javax.naming.directory.model.yml | 137 +++ .../generated/javax.naming.event.model.yml | 25 + .../ext/generated/javax.naming.ldap.model.yml | 91 ++ .../generated/javax.naming.ldap.spi.model.yml | 15 + .../lib/ext/generated/javax.naming.model.yml | 177 ++++ .../ext/generated/javax.naming.spi.model.yml | 40 + java/ql/lib/ext/generated/javax.net.model.yml | 22 + .../lib/ext/generated/javax.net.ssl.model.yml | 233 +++++ .../generated/javax.print.attribute.model.yml | 70 ++ .../javax.print.attribute.standard.model.yml | 92 ++ .../ext/generated/javax.print.event.model.yml | 28 + .../lib/ext/generated/javax.print.model.yml | 56 + .../lib/ext/generated/javax.rmi.ssl.model.yml | 18 + .../lib/ext/generated/javax.script.model.yml | 66 ++ .../javax.security.auth.callback.model.yml | 61 ++ .../javax.security.auth.kerberos.model.yml | 65 ++ .../javax.security.auth.login.model.yml | 50 + .../generated/javax.security.auth.model.yml | 37 + .../javax.security.auth.x500.model.yml | 27 + .../generated/javax.security.cert.model.yml | 32 + .../generated/javax.security.sasl.model.yml | 42 + .../ext/generated/javax.smartcardio.model.yml | 78 ++ .../ext/generated/javax.sound.midi.model.yml | 96 ++ .../generated/javax.sound.midi.spi.model.yml | 24 + .../generated/javax.sound.sampled.model.yml | 128 +++ .../javax.sound.sampled.spi.model.yml | 31 + java/ql/lib/ext/generated/javax.sql.model.yml | 43 + .../ext/generated/javax.sql.rowset.model.yml | 143 +++ .../javax.sql.rowset.serial.model.yml | 29 + .../generated/javax.sql.rowset.spi.model.yml | 33 + .../lib/ext/generated/javax.tools.model.yml | 68 ++ .../generated/javax.transaction.xa.model.yml | 12 + .../ext/generated/javax.xml.catalog.model.yml | 30 + .../generated/javax.xml.crypto.dom.model.yml | 11 + .../javax.xml.crypto.dsig.dom.model.yml | 26 + .../javax.xml.crypto.dsig.keyinfo.model.yml | 31 + .../generated/javax.xml.crypto.dsig.model.yml | 61 ++ .../javax.xml.crypto.dsig.spec.model.yml | 33 + .../ext/generated/javax.xml.crypto.model.yml | 63 ++ .../generated/javax.xml.datatype.model.yml | 97 ++ .../generated/javax.xml.namespace.model.yml | 16 + .../ext/generated/javax.xml.parsers.model.yml | 93 ++ .../ext/generated/javax.xml.stream.model.yml | 156 +++ .../generated/javax.xml.stream.util.model.yml | 12 + .../javax.xml.transform.dom.model.yml | 23 + .../generated/javax.xml.transform.model.yml | 74 ++ .../javax.xml.transform.sax.model.yml | 24 + .../javax.xml.transform.stax.model.yml | 14 + .../javax.xml.transform.stream.model.yml | 21 + .../generated/javax.xml.validation.model.yml | 60 ++ .../ext/generated/javax.xml.xpath.model.yml | 37 + .../jdk.internal.access.foreign.model.yml | 10 + .../generated/jdk.internal.access.model.yml | 243 +++++ .../ext/generated/jdk.internal.misc.model.yml | 11 + .../jdk.internal.org.objectweb.asm.model.yml | 15 + .../ext/generated/org.w3c.dom.ls.model.yml | 28 + .../lib/ext/generated/org.w3c.dom.model.yml | 102 ++ .../lib/ext/generated/org.xml.sax.model.yml | 17 + java/ql/lib/ext/generated/sun.awt.model.yml | 11 + .../ql/lib/ext/generated/sun.java2d.model.yml | 7 + .../generated/sun.management.spi.model.yml | 7 + .../ql/lib/ext/generated/sun.nio.ch.model.yml | 14 + java/ql/lib/ext/generated/sun.print.model.yml | 7 + .../ext/generated/sun.security.krb5.model.yml | 13 + .../ext/generated/sun.security.util.model.yml | 7 + .../sun.util.logging.internal.model.yml | 9 + 146 files changed, 15154 insertions(+) create mode 100644 java/ql/lib/ext/generated/com.sun.jmx.remote.internal.model.yml create mode 100644 java/ql/lib/ext/generated/java.applet.model.yml create mode 100644 java/ql/lib/ext/generated/java.awt.model.yml create mode 100644 java/ql/lib/ext/generated/java.beans.beancontext.model.yml create mode 100644 java/ql/lib/ext/generated/java.beans.model.yml create mode 100644 java/ql/lib/ext/generated/java.io.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.annotation.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.constant.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.instrument.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.invoke.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.management.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.module.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.ref.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.reflect.model.yml create mode 100644 java/ql/lib/ext/generated/java.lang.runtime.model.yml create mode 100644 java/ql/lib/ext/generated/java.math.model.yml create mode 100644 java/ql/lib/ext/generated/java.net.http.model.yml create mode 100644 java/ql/lib/ext/generated/java.net.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.channels.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.channels.spi.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.charset.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.charset.spi.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.file.attribute.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.file.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.file.spi.model.yml create mode 100644 java/ql/lib/ext/generated/java.nio.model.yml create mode 100644 java/ql/lib/ext/generated/java.rmi.dgc.model.yml create mode 100644 java/ql/lib/ext/generated/java.rmi.model.yml create mode 100644 java/ql/lib/ext/generated/java.rmi.registry.model.yml create mode 100644 java/ql/lib/ext/generated/java.rmi.server.model.yml create mode 100644 java/ql/lib/ext/generated/java.security.cert.model.yml create mode 100644 java/ql/lib/ext/generated/java.security.interfaces.model.yml create mode 100644 java/ql/lib/ext/generated/java.security.model.yml create mode 100644 java/ql/lib/ext/generated/java.security.spec.model.yml create mode 100644 java/ql/lib/ext/generated/java.sql.model.yml create mode 100644 java/ql/lib/ext/generated/java.text.model.yml create mode 100644 java/ql/lib/ext/generated/java.text.spi.model.yml create mode 100644 java/ql/lib/ext/generated/java.time.chrono.model.yml create mode 100644 java/ql/lib/ext/generated/java.time.format.model.yml create mode 100644 java/ql/lib/ext/generated/java.time.model.yml create mode 100644 java/ql/lib/ext/generated/java.time.temporal.model.yml create mode 100644 java/ql/lib/ext/generated/java.time.zone.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.concurrent.atomic.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.concurrent.locks.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.concurrent.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.function.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.jar.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.logging.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.prefs.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.random.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.regex.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.spi.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.stream.model.yml create mode 100644 java/ql/lib/ext/generated/java.util.zip.model.yml create mode 100644 java/ql/lib/ext/generated/javax.accessibility.model.yml create mode 100644 java/ql/lib/ext/generated/javax.annotation.processing.model.yml create mode 100644 java/ql/lib/ext/generated/javax.crypto.model.yml create mode 100644 java/ql/lib/ext/generated/javax.crypto.spec.model.yml create mode 100644 java/ql/lib/ext/generated/javax.imageio.metadata.model.yml create mode 100644 java/ql/lib/ext/generated/javax.imageio.model.yml create mode 100644 java/ql/lib/ext/generated/javax.imageio.plugins.bmp.model.yml create mode 100644 java/ql/lib/ext/generated/javax.imageio.plugins.jpeg.model.yml create mode 100644 java/ql/lib/ext/generated/javax.imageio.plugins.tiff.model.yml create mode 100644 java/ql/lib/ext/generated/javax.imageio.spi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.imageio.stream.model.yml create mode 100644 java/ql/lib/ext/generated/javax.lang.model.element.model.yml create mode 100644 java/ql/lib/ext/generated/javax.lang.model.model.yml create mode 100644 java/ql/lib/ext/generated/javax.lang.model.type.model.yml create mode 100644 java/ql/lib/ext/generated/javax.lang.model.util.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.loading.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.modelmbean.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.monitor.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.openmbean.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.relation.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.remote.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.remote.rmi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.management.timer.model.yml create mode 100644 java/ql/lib/ext/generated/javax.naming.directory.model.yml create mode 100644 java/ql/lib/ext/generated/javax.naming.event.model.yml create mode 100644 java/ql/lib/ext/generated/javax.naming.ldap.model.yml create mode 100644 java/ql/lib/ext/generated/javax.naming.ldap.spi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.naming.model.yml create mode 100644 java/ql/lib/ext/generated/javax.naming.spi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.net.model.yml create mode 100644 java/ql/lib/ext/generated/javax.net.ssl.model.yml create mode 100644 java/ql/lib/ext/generated/javax.print.attribute.model.yml create mode 100644 java/ql/lib/ext/generated/javax.print.attribute.standard.model.yml create mode 100644 java/ql/lib/ext/generated/javax.print.event.model.yml create mode 100644 java/ql/lib/ext/generated/javax.print.model.yml create mode 100644 java/ql/lib/ext/generated/javax.rmi.ssl.model.yml create mode 100644 java/ql/lib/ext/generated/javax.script.model.yml create mode 100644 java/ql/lib/ext/generated/javax.security.auth.callback.model.yml create mode 100644 java/ql/lib/ext/generated/javax.security.auth.kerberos.model.yml create mode 100644 java/ql/lib/ext/generated/javax.security.auth.login.model.yml create mode 100644 java/ql/lib/ext/generated/javax.security.auth.model.yml create mode 100644 java/ql/lib/ext/generated/javax.security.auth.x500.model.yml create mode 100644 java/ql/lib/ext/generated/javax.security.cert.model.yml create mode 100644 java/ql/lib/ext/generated/javax.security.sasl.model.yml create mode 100644 java/ql/lib/ext/generated/javax.smartcardio.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sound.midi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sound.midi.spi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sound.sampled.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sound.sampled.spi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sql.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sql.rowset.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sql.rowset.serial.model.yml create mode 100644 java/ql/lib/ext/generated/javax.sql.rowset.spi.model.yml create mode 100644 java/ql/lib/ext/generated/javax.tools.model.yml create mode 100644 java/ql/lib/ext/generated/javax.transaction.xa.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.catalog.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.crypto.dom.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.crypto.dsig.dom.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.crypto.dsig.keyinfo.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.crypto.dsig.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.crypto.dsig.spec.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.crypto.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.datatype.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.namespace.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.parsers.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.stream.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.stream.util.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.transform.dom.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.transform.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.transform.sax.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.transform.stax.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.transform.stream.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.validation.model.yml create mode 100644 java/ql/lib/ext/generated/javax.xml.xpath.model.yml create mode 100644 java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml create mode 100644 java/ql/lib/ext/generated/jdk.internal.access.model.yml create mode 100644 java/ql/lib/ext/generated/jdk.internal.misc.model.yml create mode 100644 java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml create mode 100644 java/ql/lib/ext/generated/org.w3c.dom.ls.model.yml create mode 100644 java/ql/lib/ext/generated/org.w3c.dom.model.yml create mode 100644 java/ql/lib/ext/generated/org.xml.sax.model.yml create mode 100644 java/ql/lib/ext/generated/sun.awt.model.yml create mode 100644 java/ql/lib/ext/generated/sun.java2d.model.yml create mode 100644 java/ql/lib/ext/generated/sun.management.spi.model.yml create mode 100644 java/ql/lib/ext/generated/sun.nio.ch.model.yml create mode 100644 java/ql/lib/ext/generated/sun.print.model.yml create mode 100644 java/ql/lib/ext/generated/sun.security.krb5.model.yml create mode 100644 java/ql/lib/ext/generated/sun.security.util.model.yml create mode 100644 java/ql/lib/ext/generated/sun.util.logging.internal.model.yml diff --git a/java/ql/lib/ext/generated/com.sun.jmx.remote.internal.model.yml b/java/ql/lib/ext/generated/com.sun.jmx.remote.internal.model.yml new file mode 100644 index 000000000000..c67869a42534 --- /dev/null +++ b/java/ql/lib/ext/generated/com.sun.jmx.remote.internal.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["com.sun.jmx.remote.internal", "ClientCommunicatorAdmin", "gotIOException", "(IOException)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.applet.model.yml b/java/ql/lib/ext/generated/java.applet.model.yml new file mode 100644 index 000000000000..adcf20a8c6e2 --- /dev/null +++ b/java/ql/lib/ext/generated/java.applet.model.yml @@ -0,0 +1,49 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.applet", "Applet", True, "getAppletContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "Applet", True, "getCodeBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "Applet", True, "getDocumentBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "Applet", True, "getImage", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "Applet", True, "getImage", "(URL,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "Applet", True, "getImage", "(URL,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "Applet", True, "setStub", "(AppletStub)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.applet", "AppletContext", True, "getApplets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "AppletContext", True, "getImage", "(URL)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.applet", "AppletContext", True, "getImage", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "AppletContext", True, "getImage", "(URL)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "AppletStub", True, "getAppletContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "AppletStub", True, "getCodeBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.applet", "AppletStub", True, "getDocumentBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.applet", "Applet", "destroy", "()", "summary", "df-generated"] + - ["java.applet", "Applet", "getAppletInfo", "()", "summary", "df-generated"] + - ["java.applet", "Applet", "getAudioClip", "(URL)", "summary", "df-generated"] + - ["java.applet", "Applet", "getAudioClip", "(URL,String)", "summary", "df-generated"] + - ["java.applet", "Applet", "getParameter", "(String)", "summary", "df-generated"] + - ["java.applet", "Applet", "getParameterInfo", "()", "summary", "df-generated"] + - ["java.applet", "Applet", "init", "()", "summary", "df-generated"] + - ["java.applet", "Applet", "isActive", "()", "summary", "df-generated"] + - ["java.applet", "Applet", "newAudioClip", "(URL)", "summary", "df-generated"] + - ["java.applet", "Applet", "play", "(URL)", "summary", "df-generated"] + - ["java.applet", "Applet", "play", "(URL,String)", "summary", "df-generated"] + - ["java.applet", "Applet", "showStatus", "(String)", "summary", "df-generated"] + - ["java.applet", "Applet", "start", "()", "summary", "df-generated"] + - ["java.applet", "Applet", "stop", "()", "summary", "df-generated"] + - ["java.applet", "AppletContext", "getApplet", "(String)", "summary", "df-generated"] + - ["java.applet", "AppletContext", "getAudioClip", "(URL)", "summary", "df-generated"] + - ["java.applet", "AppletContext", "getStream", "(String)", "summary", "df-generated"] + - ["java.applet", "AppletContext", "getStreamKeys", "()", "summary", "df-generated"] + - ["java.applet", "AppletContext", "setStream", "(String,InputStream)", "summary", "df-generated"] + - ["java.applet", "AppletContext", "showDocument", "(URL)", "summary", "df-generated"] + - ["java.applet", "AppletContext", "showDocument", "(URL,String)", "summary", "df-generated"] + - ["java.applet", "AppletContext", "showStatus", "(String)", "summary", "df-generated"] + - ["java.applet", "AppletStub", "appletResize", "(int,int)", "summary", "df-generated"] + - ["java.applet", "AppletStub", "getParameter", "(String)", "summary", "df-generated"] + - ["java.applet", "AppletStub", "isActive", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.awt.model.yml b/java/ql/lib/ext/generated/java.awt.model.yml new file mode 100644 index 000000000000..63ac56c4b3a8 --- /dev/null +++ b/java/ql/lib/ext/generated/java.awt.model.yml @@ -0,0 +1,15 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.awt", "Component", True, "getAccessibleContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.awt", "Component", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.awt", "Component", "resize", "(Dimension)", "summary", "df-generated"] + - ["java.awt", "Component", "resize", "(int,int)", "summary", "df-generated"] + - ["java.awt", "Container", "isValidateRoot", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.beans.beancontext.model.yml b/java/ql/lib/ext/generated/java.beans.beancontext.model.yml new file mode 100644 index 000000000000..4a096488b803 --- /dev/null +++ b/java/ql/lib/ext/generated/java.beans.beancontext.model.yml @@ -0,0 +1,85 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.beans.beancontext", "BeanContext", True, "addBeanContextMembershipListener", "(BeanContextMembershipListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContext", True, "getResource", "(String,BeanContextChild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContext", True, "instantiateChild", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextChild", True, "getBeanContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextChild", True, "setBeanContext", "(BeanContext)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextChildSupport", True, "BeanContextChildSupport", "(BeanContextChild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextChildSupport", True, "getBeanContextChildPeer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextEvent", True, "getBeanContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextEvent", True, "getPropagatedFrom", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextEvent", True, "setPropagatedFrom", "(BeanContext)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Object[])", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", True, "iterator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", True, "toArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceAvailableEvent", True, "BeanContextServiceAvailableEvent", "(BeanContextServices,Class)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceAvailableEvent", True, "getSourceAsBeanContextServices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceRevokedEvent", True, "BeanContextServiceRevokedEvent", "(BeanContextServices,Class,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceRevokedEvent", True, "getSourceAsBeanContextServices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", True, "addBeanContextServicesListener", "(BeanContextServicesListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", True, "getCurrentServiceClasses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesSupport", True, "getBeanContextServicesPeer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "getBeanContextPeer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "readChildren", "(ObjectInputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", True, "writeChildren", "(ObjectOutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.beans.beancontext", "BeanContext", "getResourceAsStream", "(String,BeanContextChild)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContext", "removeBeanContextMembershipListener", "(BeanContextMembershipListener)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChild", "addPropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChild", "addVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChild", "removePropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChild", "removeVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChildSupport", "firePropertyChange", "(String,Object,Object)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChildSupport", "fireVetoableChange", "(String,Object,Object)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChildSupport", "isDelegated", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextChildSupport", "validatePendingSetBeanContext", "(BeanContext)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextEvent", "isPropagated", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", "contains", "(Object)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextMembershipEvent", "size", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceAvailableEvent", "getCurrentServiceSelectors", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceAvailableEvent", "getServiceClass", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceProvider", "getCurrentServiceSelectors", "(BeanContextServices,Class)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceProvider", "getService", "(BeanContextServices,Object,Class,Object)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceProvider", "releaseService", "(BeanContextServices,Object,Object)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceRevokedEvent", "getServiceClass", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceRevokedEvent", "isCurrentServiceInvalidNow", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceRevokedEvent", "isServiceClass", "(Class)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServiceRevokedListener", "serviceRevoked", "(BeanContextServiceRevokedEvent)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", "addService", "(Class,BeanContextServiceProvider)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", "getCurrentServiceSelectors", "(Class)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", "getService", "(BeanContextChild,Object,Class,Object,BeanContextServiceRevokedListener)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", "hasService", "(Class)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", "releaseService", "(BeanContextChild,Object,Object)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", "removeBeanContextServicesListener", "(BeanContextServicesListener)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServices", "revokeService", "(Class,BeanContextServiceProvider,boolean)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextServicesListener", "serviceAvailable", "(BeanContextServiceAvailableEvent)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", "containsKey", "(Object)", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", "initialize", "()", "summary", "df-generated"] + - ["java.beans.beancontext", "BeanContextSupport", "isSerializing", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.beans.model.yml b/java/ql/lib/ext/generated/java.beans.model.yml new file mode 100644 index 000000000000..1ae8e6c73b5b --- /dev/null +++ b/java/ql/lib/ext/generated/java.beans.model.yml @@ -0,0 +1,261 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.beans", "BeanInfo", True, "getBeanDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "BeanInfo", True, "getEventSetDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "BeanInfo", True, "getMethodDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "BeanInfo", True, "getPropertyDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Beans", True, "getInstanceOf", "(Object,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext)", "", "Argument[0]", "Argument[2].Element", "taint", "df-generated"] + - ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext,AppletInitializer)", "", "Argument[0]", "Argument[2].Element", "taint", "df-generated"] + - ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext,AppletInitializer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext,AppletInitializer)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "DefaultPersistenceDelegate", True, "DefaultPersistenceDelegate", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "get", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "get", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "getExceptionListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "getPersistenceDelegate", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "remove", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "setExceptionListener", "(ExceptionListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "writeExpression", "(Expression)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "writeObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Encoder", True, "writeStatement", "(Statement)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "getAction", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "getEventPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "getListenerMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "EventHandler", True, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(Class,String,Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(Class,String,Class,String[],String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(Class,String,Class,String[],String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "getListenerMethodDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "EventSetDescriptor", True, "getListenerMethods", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Expression", True, "Expression", "(Object,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Expression", True, "Expression", "(Object,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Expression", True, "Expression", "(Object,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Expression", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Expression", True, "setValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "attributeNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "getShortDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "getValue", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "setDisplayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "setShortDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "setValue", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "FeatureDescriptor", True, "setValue", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "setIndexedReadMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", True, "setIndexedWriteMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "IntrospectionException", True, "IntrospectionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Introspector", True, "decapitalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "MethodDescriptor", True, "MethodDescriptor", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "MethodDescriptor", True, "MethodDescriptor", "(Method,ParameterDescriptor[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "MethodDescriptor", True, "MethodDescriptor", "(Method,ParameterDescriptor[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "MethodDescriptor", True, "getParameterDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PersistenceDelegate", True, "writeObject", "(Object,Encoder)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["java.beans", "PersistenceDelegate", True, "writeObject", "(Object,Encoder)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "getNewValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "getOldValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "getPropagationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "getPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyChangeEvent", True, "setPropagationId", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeListener", True, "propertyChange", "(PropertyChangeEvent)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeListenerProxy", True, "PropertyChangeListenerProxy", "(String,PropertyChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeListenerProxy", True, "PropertyChangeListenerProxy", "(String,PropertyChangeListener)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeListenerProxy", True, "getPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyChangeSupport", True, "PropertyChangeSupport", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyChangeSupport", True, "getPropertyChangeListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyChangeSupport", True, "getPropertyChangeListeners", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Method,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Method,Method)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "setReadMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyDescriptor", True, "setWriteMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyEditor", True, "addPropertyChangeListener", "(PropertyChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyEditor", True, "getAsText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyEditor", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyEditor", True, "setAsText", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyEditor", True, "setValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyEditorSupport", True, "PropertyEditorSupport", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyEditorSupport", True, "getSource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "PropertyEditorSupport", True, "setSource", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyVetoException", True, "PropertyVetoException", "(String,PropertyChangeEvent)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyVetoException", True, "PropertyVetoException", "(String,PropertyChangeEvent)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "PropertyVetoException", True, "getPropertyChangeEvent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "SimpleBeanInfo", True, "loadImage", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Statement", True, "Statement", "(Object,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Statement", True, "Statement", "(Object,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Statement", True, "Statement", "(Object,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "Statement", True, "getArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Statement", True, "getMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "Statement", True, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "VetoableChangeListenerProxy", True, "VetoableChangeListenerProxy", "(String,VetoableChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "VetoableChangeListenerProxy", True, "VetoableChangeListenerProxy", "(String,VetoableChangeListener)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "VetoableChangeListenerProxy", True, "getPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "VetoableChangeSupport", True, "VetoableChangeSupport", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "VetoableChangeSupport", True, "getVetoableChangeListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "VetoableChangeSupport", True, "getVetoableChangeListeners", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "createHandler", "(Object,ExceptionListener,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "createHandler", "(Object,ExceptionListener,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "createHandler", "(Object,ExceptionListener,ClassLoader)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "getExceptionListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "readObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "setExceptionListener", "(ExceptionListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "XMLDecoder", True, "setOwner", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "XMLEncoder", True, "XMLEncoder", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "XMLEncoder", True, "XMLEncoder", "(OutputStream,String,boolean,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "XMLEncoder", True, "XMLEncoder", "(OutputStream,String,boolean,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.beans", "XMLEncoder", True, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.beans", "XMLEncoder", True, "setOwner", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.beans", "BeanDescriptor", "BeanDescriptor", "(Class)", "summary", "df-generated"] + - ["java.beans", "BeanDescriptor", "BeanDescriptor", "(Class,Class)", "summary", "df-generated"] + - ["java.beans", "BeanDescriptor", "getBeanClass", "()", "summary", "df-generated"] + - ["java.beans", "BeanDescriptor", "getCustomizerClass", "()", "summary", "df-generated"] + - ["java.beans", "BeanInfo", "getAdditionalBeanInfo", "()", "summary", "df-generated"] + - ["java.beans", "BeanInfo", "getDefaultEventIndex", "()", "summary", "df-generated"] + - ["java.beans", "BeanInfo", "getDefaultPropertyIndex", "()", "summary", "df-generated"] + - ["java.beans", "BeanInfo", "getIcon", "(int)", "summary", "df-generated"] + - ["java.beans", "Beans", "isDesignTime", "()", "summary", "df-generated"] + - ["java.beans", "Beans", "isGuiAvailable", "()", "summary", "df-generated"] + - ["java.beans", "Beans", "isInstanceOf", "(Object,Class)", "summary", "df-generated"] + - ["java.beans", "Beans", "setDesignTime", "(boolean)", "summary", "df-generated"] + - ["java.beans", "Beans", "setGuiAvailable", "(boolean)", "summary", "df-generated"] + - ["java.beans", "DesignMode", "isDesignTime", "()", "summary", "df-generated"] + - ["java.beans", "DesignMode", "setDesignTime", "(boolean)", "summary", "df-generated"] + - ["java.beans", "Encoder", "setPersistenceDelegate", "(Class,PersistenceDelegate)", "summary", "df-generated"] + - ["java.beans", "EventHandler", "create", "(Class,Object,String)", "summary", "df-generated"] + - ["java.beans", "EventHandler", "create", "(Class,Object,String,String)", "summary", "df-generated"] + - ["java.beans", "EventHandler", "create", "(Class,Object,String,String,String)", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "getAddListenerMethod", "()", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "getGetListenerMethod", "()", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "getListenerType", "()", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "getRemoveListenerMethod", "()", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "isInDefaultEventSet", "()", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "isUnicast", "()", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "setInDefaultEventSet", "(boolean)", "summary", "df-generated"] + - ["java.beans", "EventSetDescriptor", "setUnicast", "(boolean)", "summary", "df-generated"] + - ["java.beans", "ExceptionListener", "exceptionThrown", "(Exception)", "summary", "df-generated"] + - ["java.beans", "FeatureDescriptor", "isExpert", "()", "summary", "df-generated"] + - ["java.beans", "FeatureDescriptor", "isHidden", "()", "summary", "df-generated"] + - ["java.beans", "FeatureDescriptor", "isPreferred", "()", "summary", "df-generated"] + - ["java.beans", "FeatureDescriptor", "setExpert", "(boolean)", "summary", "df-generated"] + - ["java.beans", "FeatureDescriptor", "setHidden", "(boolean)", "summary", "df-generated"] + - ["java.beans", "FeatureDescriptor", "setPreferred", "(boolean)", "summary", "df-generated"] + - ["java.beans", "IndexedPropertyChangeEvent", "getIndex", "()", "summary", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", "getIndexedPropertyType", "()", "summary", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", "getIndexedReadMethod", "()", "summary", "df-generated"] + - ["java.beans", "IndexedPropertyDescriptor", "getIndexedWriteMethod", "()", "summary", "df-generated"] + - ["java.beans", "Introspector", "flushCaches", "()", "summary", "df-generated"] + - ["java.beans", "Introspector", "flushFromCaches", "(Class)", "summary", "df-generated"] + - ["java.beans", "Introspector", "getBeanInfo", "(Class)", "summary", "df-generated"] + - ["java.beans", "Introspector", "getBeanInfo", "(Class,Class)", "summary", "df-generated"] + - ["java.beans", "Introspector", "getBeanInfo", "(Class,Class,int)", "summary", "df-generated"] + - ["java.beans", "Introspector", "getBeanInfo", "(Class,int)", "summary", "df-generated"] + - ["java.beans", "Introspector", "getBeanInfoSearchPath", "()", "summary", "df-generated"] + - ["java.beans", "Introspector", "setBeanInfoSearchPath", "(String[])", "summary", "df-generated"] + - ["java.beans", "MethodDescriptor", "getMethod", "()", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "addPropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "addPropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "fireIndexedPropertyChange", "(String,int,Object,Object)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "fireIndexedPropertyChange", "(String,int,boolean,boolean)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "fireIndexedPropertyChange", "(String,int,int,int)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(PropertyChangeEvent)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(String,Object,Object)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(String,boolean,boolean)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(String,int,int)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "hasListeners", "(String)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "removePropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"] + - ["java.beans", "PropertyChangeSupport", "removePropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "createPropertyEditor", "(Object)", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "getPropertyEditorClass", "()", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "getPropertyType", "()", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "getReadMethod", "()", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "getWriteMethod", "()", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "isBound", "()", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "isConstrained", "()", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "setBound", "(boolean)", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "setConstrained", "(boolean)", "summary", "df-generated"] + - ["java.beans", "PropertyDescriptor", "setPropertyEditorClass", "(Class)", "summary", "df-generated"] + - ["java.beans", "PropertyEditor", "getCustomEditor", "()", "summary", "df-generated"] + - ["java.beans", "PropertyEditor", "getJavaInitializationString", "()", "summary", "df-generated"] + - ["java.beans", "PropertyEditor", "getTags", "()", "summary", "df-generated"] + - ["java.beans", "PropertyEditor", "isPaintable", "()", "summary", "df-generated"] + - ["java.beans", "PropertyEditor", "paintValue", "(Graphics,Rectangle)", "summary", "df-generated"] + - ["java.beans", "PropertyEditor", "removePropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"] + - ["java.beans", "PropertyEditor", "supportsCustomEditor", "()", "summary", "df-generated"] + - ["java.beans", "PropertyEditorManager", "findEditor", "(Class)", "summary", "df-generated"] + - ["java.beans", "PropertyEditorManager", "getEditorSearchPath", "()", "summary", "df-generated"] + - ["java.beans", "PropertyEditorManager", "registerEditor", "(Class,Class)", "summary", "df-generated"] + - ["java.beans", "PropertyEditorManager", "setEditorSearchPath", "(String[])", "summary", "df-generated"] + - ["java.beans", "PropertyEditorSupport", "firePropertyChange", "()", "summary", "df-generated"] + - ["java.beans", "Statement", "execute", "()", "summary", "df-generated"] + - ["java.beans", "VetoableChangeListener", "vetoableChange", "(PropertyChangeEvent)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "addVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "addVetoableChangeListener", "(VetoableChangeListener)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(PropertyChangeEvent)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(String,Object,Object)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(String,boolean,boolean)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(String,int,int)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "hasListeners", "(String)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "removeVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"] + - ["java.beans", "VetoableChangeSupport", "removeVetoableChangeListener", "(VetoableChangeListener)", "summary", "df-generated"] + - ["java.beans", "Visibility", "avoidingGui", "()", "summary", "df-generated"] + - ["java.beans", "Visibility", "dontUseGui", "()", "summary", "df-generated"] + - ["java.beans", "Visibility", "needsGui", "()", "summary", "df-generated"] + - ["java.beans", "Visibility", "okToUseGui", "()", "summary", "df-generated"] + - ["java.beans", "XMLEncoder", "flush", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.io.model.yml b/java/ql/lib/ext/generated/java.io.model.yml new file mode 100644 index 000000000000..248971d2a5a2 --- /dev/null +++ b/java/ql/lib/ext/generated/java.io.model.yml @@ -0,0 +1,417 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.io", "BufferedOutputStream", True, "BufferedOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "BufferedOutputStream", True, "BufferedOutputStream", "(OutputStream,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "BufferedWriter", True, "BufferedWriter", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "BufferedWriter", True, "BufferedWriter", "(Writer,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ByteArrayOutputStream", True, "writeBytes", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "CharArrayWriter", True, "writeTo", "(Writer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "CharConversionException", True, "CharConversionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "format", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "format", "(String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "readLine", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "readLine", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "readLine", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "readLine", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "readPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "readPassword", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "readPassword", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Console", False, "readPassword", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "reader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Console", False, "writer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "DataInputStream", True, "readUTF", "(DataInput)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "DataOutput", True, "write", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "DataOutput", True, "writeBytes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "DataOutput", True, "writeChars", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "DataOutput", True, "writeUTF", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "DataOutputStream", True, "DataOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "EOFException", True, "EOFException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Externalizable", True, "readExternal", "(ObjectInput)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "Externalizable", True, "writeExternal", "(ObjectOutput)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "File", True, "createTempFile", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "createTempFile", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "listFiles", "(FileFilter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "listFiles", "(FilenameFilter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "File", True, "toURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileInputStream", True, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "FileInputStream", True, "getFD", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "FileNotFoundException", True, "FileNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "FileOutputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "FileOutputStream", "(File,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "FileOutputStream", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "FileOutputStream", "(FileDescriptor)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "FileOutputStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "FileOutputStream", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "FileOutputStream", True, "getFD", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "FilePermission", False, "FilePermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileReader", True, "FileReader", "(File,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileReader", True, "FileReader", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileReader", True, "FileReader", "(String,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(File,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(File,Charset,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(File,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(String,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(String,Charset,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "FileWriter", True, "FileWriter", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "IOError", True, "IOError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "IOException", True, "IOException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "IOException", True, "IOException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "IOException", True, "IOException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "InterruptedIOException", True, "InterruptedIOException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "InvalidClassException", True, "InvalidClassException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "InvalidClassException", True, "InvalidClassException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "InvalidClassException", True, "InvalidClassException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "InvalidObjectException", True, "InvalidObjectException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "LineNumberInputStream", True, "LineNumberInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "LineNumberReader", True, "LineNumberReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "LineNumberReader", True, "LineNumberReader", "(Reader,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "NotActiveException", True, "NotActiveException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "NotSerializableException", True, "NotSerializableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectInput", True, "readObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputFilter$Config", False, "createFilter", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputFilter", True, "allowFilter", "(Predicate,ObjectInputFilter$Status)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputFilter", True, "merge", "(ObjectInputFilter,ObjectInputFilter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputFilter", True, "merge", "(ObjectInputFilter,ObjectInputFilter)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputFilter", True, "rejectFilter", "(Predicate,ObjectInputFilter$Status)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputFilter", True, "rejectUndecidedClass", "(ObjectInputFilter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", True, "get", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", True, "get", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", True, "getObjectStreamClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputStream", True, "getObjectInputFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputStream", True, "readFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputStream", True, "readUnshared", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectInputStream", True, "setObjectInputFilter", "(ObjectInputFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectOutput", True, "writeObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", True, "put", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", True, "write", "(ObjectOutput)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "ObjectOutputStream", True, "ObjectOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectOutputStream", True, "putFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectOutputStream", True, "writeUnshared", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectStreamClass", True, "getField", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectStreamClass", True, "getFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectStreamClass", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectStreamField", True, "ObjectStreamField", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectStreamField", True, "ObjectStreamField", "(String,Class,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "ObjectStreamField", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "ObjectStreamField", True, "getTypeString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,CharsetEncoder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,CharsetEncoder)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PipedInputStream", True, "PipedInputStream", "(PipedOutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "PipedInputStream", True, "PipedInputStream", "(PipedOutputStream,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "PipedInputStream", True, "connect", "(PipedOutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "PipedOutputStream", True, "PipedOutputStream", "(PipedInputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PipedOutputStream", True, "connect", "(PipedInputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PipedReader", True, "PipedReader", "(PipedWriter)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "PipedReader", True, "PipedReader", "(PipedWriter,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "PipedReader", True, "connect", "(PipedWriter)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "PipedWriter", True, "PipedWriter", "(PipedReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PipedWriter", True, "connect", "(PipedReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(File,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(OutputStream,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(OutputStream,boolean,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(OutputStream,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(String,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "PrintStream", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.io", "PrintStream", True, "print", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "print", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "print", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "println", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "println", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "println", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintStream", True, "writeBytes", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "PrintWriter", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "PrintWriter", "(OutputStream,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "PrintWriter", "(OutputStream,boolean,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "PrintWriter", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "PrintWriter", "(Writer,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.io", "PrintWriter", True, "format", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "format", "(String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.io", "PrintWriter", True, "print", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "print", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "print", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "println", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "println", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PrintWriter", True, "println", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackInputStream", True, "PushbackInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackInputStream", True, "PushbackInputStream", "(InputStream,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackInputStream", True, "unread", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackInputStream", True, "unread", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackReader", True, "PushbackReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackReader", True, "PushbackReader", "(Reader,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackReader", True, "unread", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "PushbackReader", True, "unread", "(char[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "RandomAccessFile", True, "RandomAccessFile", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "RandomAccessFile", True, "RandomAccessFile", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "RandomAccessFile", True, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "RandomAccessFile", True, "getFD", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "Reader", True, "transferTo", "(Writer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.io", "SequenceInputStream", True, "SequenceInputStream", "(Enumeration)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.io", "SerializablePermission", False, "SerializablePermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "SerializablePermission", False, "SerializablePermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "StreamCorruptedException", True, "StreamCorruptedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "StreamTokenizer", True, "StreamTokenizer", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "StreamTokenizer", True, "StreamTokenizer", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "StringBufferInputStream", True, "StringBufferInputStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "StringWriter", True, "getBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.io", "SyncFailedException", True, "SyncFailedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "UTFDataFormatException", True, "UTFDataFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "UncheckedIOException", True, "UncheckedIOException", "(String,IOException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "UncheckedIOException", True, "UncheckedIOException", "(String,IOException)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "UnsupportedEncodingException", True, "UnsupportedEncodingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "WriteAbortedException", True, "WriteAbortedException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.io", "WriteAbortedException", True, "WriteAbortedException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.io", "BufferedReader", "lines", "()", "summary", "df-generated"] + - ["java.io", "BufferedWriter", "newLine", "()", "summary", "df-generated"] + - ["java.io", "ByteArrayOutputStream", "ByteArrayOutputStream", "(int)", "summary", "df-generated"] + - ["java.io", "ByteArrayOutputStream", "reset", "()", "summary", "df-generated"] + - ["java.io", "ByteArrayOutputStream", "size", "()", "summary", "df-generated"] + - ["java.io", "CharArrayWriter", "CharArrayWriter", "(int)", "summary", "df-generated"] + - ["java.io", "CharArrayWriter", "reset", "()", "summary", "df-generated"] + - ["java.io", "CharArrayWriter", "size", "()", "summary", "df-generated"] + - ["java.io", "Console", "charset", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readBoolean", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readByte", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readChar", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readDouble", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readFloat", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readInt", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readLong", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readShort", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readUnsignedByte", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "readUnsignedShort", "()", "summary", "df-generated"] + - ["java.io", "DataInput", "skipBytes", "(int)", "summary", "df-generated"] + - ["java.io", "DataOutput", "write", "(byte[],int,int)", "summary", "df-generated"] + - ["java.io", "DataOutput", "write", "(int)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeBoolean", "(boolean)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeByte", "(int)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeChar", "(int)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeDouble", "(double)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeFloat", "(float)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeInt", "(int)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeLong", "(long)", "summary", "df-generated"] + - ["java.io", "DataOutput", "writeShort", "(int)", "summary", "df-generated"] + - ["java.io", "DataOutputStream", "size", "()", "summary", "df-generated"] + - ["java.io", "File", "canExecute", "()", "summary", "df-generated"] + - ["java.io", "File", "canRead", "()", "summary", "df-generated"] + - ["java.io", "File", "canWrite", "()", "summary", "df-generated"] + - ["java.io", "File", "createNewFile", "()", "summary", "df-generated"] + - ["java.io", "File", "deleteOnExit", "()", "summary", "df-generated"] + - ["java.io", "File", "getFreeSpace", "()", "summary", "df-generated"] + - ["java.io", "File", "getTotalSpace", "()", "summary", "df-generated"] + - ["java.io", "File", "getUsableSpace", "()", "summary", "df-generated"] + - ["java.io", "File", "isAbsolute", "()", "summary", "df-generated"] + - ["java.io", "File", "isHidden", "()", "summary", "df-generated"] + - ["java.io", "File", "lastModified", "()", "summary", "df-generated"] + - ["java.io", "File", "list", "()", "summary", "df-generated"] + - ["java.io", "File", "list", "(FilenameFilter)", "summary", "df-generated"] + - ["java.io", "File", "listRoots", "()", "summary", "df-generated"] + - ["java.io", "File", "mkdir", "()", "summary", "df-generated"] + - ["java.io", "File", "renameTo", "(File)", "summary", "df-generated"] + - ["java.io", "File", "setExecutable", "(boolean)", "summary", "df-generated"] + - ["java.io", "File", "setExecutable", "(boolean,boolean)", "summary", "df-generated"] + - ["java.io", "File", "setLastModified", "(long)", "summary", "df-generated"] + - ["java.io", "File", "setReadOnly", "()", "summary", "df-generated"] + - ["java.io", "File", "setReadable", "(boolean)", "summary", "df-generated"] + - ["java.io", "File", "setReadable", "(boolean,boolean)", "summary", "df-generated"] + - ["java.io", "File", "setWritable", "(boolean)", "summary", "df-generated"] + - ["java.io", "File", "setWritable", "(boolean,boolean)", "summary", "df-generated"] + - ["java.io", "FileDescriptor", "sync", "()", "summary", "df-generated"] + - ["java.io", "FileDescriptor", "valid", "()", "summary", "df-generated"] + - ["java.io", "Flushable", "flush", "()", "summary", "df-generated"] + - ["java.io", "InputStream", "available", "()", "summary", "df-generated"] + - ["java.io", "InputStream", "mark", "(int)", "summary", "df-generated"] + - ["java.io", "InputStream", "markSupported", "()", "summary", "df-generated"] + - ["java.io", "InputStream", "nullInputStream", "()", "summary", "df-generated"] + - ["java.io", "InputStream", "reset", "()", "summary", "df-generated"] + - ["java.io", "InputStream", "skip", "(long)", "summary", "df-generated"] + - ["java.io", "InputStream", "skipNBytes", "(long)", "summary", "df-generated"] + - ["java.io", "InputStreamReader", "getEncoding", "()", "summary", "df-generated"] + - ["java.io", "LineNumberInputStream", "getLineNumber", "()", "summary", "df-generated"] + - ["java.io", "LineNumberInputStream", "setLineNumber", "(int)", "summary", "df-generated"] + - ["java.io", "LineNumberReader", "getLineNumber", "()", "summary", "df-generated"] + - ["java.io", "LineNumberReader", "setLineNumber", "(int)", "summary", "df-generated"] + - ["java.io", "ObjectInput", "available", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$Config", "getSerialFilter", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$Config", "getSerialFilterFactory", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$Config", "setSerialFilter", "(ObjectInputFilter)", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$Config", "setSerialFilterFactory", "(BinaryOperator)", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$FilterInfo", "arrayLength", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$FilterInfo", "depth", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$FilterInfo", "references", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$FilterInfo", "serialClass", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter$FilterInfo", "streamBytes", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputFilter", "checkInput", "(ObjectInputFilter$FilterInfo)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "defaulted", "(String)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,boolean)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,byte)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,char)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,double)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,float)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,int)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,long)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream$GetField", "get", "(String,short)", "summary", "df-generated"] + - ["java.io", "ObjectInputStream", "defaultReadObject", "()", "summary", "df-generated"] + - ["java.io", "ObjectInputStream", "registerValidation", "(ObjectInputValidation,int)", "summary", "df-generated"] + - ["java.io", "ObjectOutput", "flush", "()", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,boolean)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,byte)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,char)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,double)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,float)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,int)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,long)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream$PutField", "put", "(String,short)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream", "defaultWriteObject", "()", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream", "reset", "()", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream", "useProtocolVersion", "(int)", "summary", "df-generated"] + - ["java.io", "ObjectOutputStream", "writeFields", "()", "summary", "df-generated"] + - ["java.io", "ObjectStreamClass", "forClass", "()", "summary", "df-generated"] + - ["java.io", "ObjectStreamClass", "getSerialVersionUID", "()", "summary", "df-generated"] + - ["java.io", "ObjectStreamClass", "lookup", "(Class)", "summary", "df-generated"] + - ["java.io", "ObjectStreamClass", "lookupAny", "(Class)", "summary", "df-generated"] + - ["java.io", "ObjectStreamField", "getOffset", "()", "summary", "df-generated"] + - ["java.io", "ObjectStreamField", "getType", "()", "summary", "df-generated"] + - ["java.io", "ObjectStreamField", "getTypeCode", "()", "summary", "df-generated"] + - ["java.io", "ObjectStreamField", "isPrimitive", "()", "summary", "df-generated"] + - ["java.io", "ObjectStreamField", "isUnshared", "()", "summary", "df-generated"] + - ["java.io", "OutputStream", "nullOutputStream", "()", "summary", "df-generated"] + - ["java.io", "OutputStreamWriter", "getEncoding", "()", "summary", "df-generated"] + - ["java.io", "PipedInputStream", "PipedInputStream", "(int)", "summary", "df-generated"] + - ["java.io", "PipedReader", "PipedReader", "(int)", "summary", "df-generated"] + - ["java.io", "PrintStream", "checkError", "()", "summary", "df-generated"] + - ["java.io", "PrintStream", "print", "(boolean)", "summary", "df-generated"] + - ["java.io", "PrintStream", "print", "(char)", "summary", "df-generated"] + - ["java.io", "PrintStream", "print", "(double)", "summary", "df-generated"] + - ["java.io", "PrintStream", "print", "(float)", "summary", "df-generated"] + - ["java.io", "PrintStream", "print", "(int)", "summary", "df-generated"] + - ["java.io", "PrintStream", "print", "(long)", "summary", "df-generated"] + - ["java.io", "PrintStream", "println", "()", "summary", "df-generated"] + - ["java.io", "PrintStream", "println", "(boolean)", "summary", "df-generated"] + - ["java.io", "PrintStream", "println", "(char)", "summary", "df-generated"] + - ["java.io", "PrintStream", "println", "(double)", "summary", "df-generated"] + - ["java.io", "PrintStream", "println", "(float)", "summary", "df-generated"] + - ["java.io", "PrintStream", "println", "(int)", "summary", "df-generated"] + - ["java.io", "PrintStream", "println", "(long)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "PrintWriter", "(File)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "PrintWriter", "(File,Charset)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "PrintWriter", "(File,String)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "PrintWriter", "(String)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "PrintWriter", "(String,Charset)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "PrintWriter", "(String,String)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "checkError", "()", "summary", "df-generated"] + - ["java.io", "PrintWriter", "print", "(boolean)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "print", "(char)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "print", "(double)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "print", "(float)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "print", "(int)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "print", "(long)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "println", "()", "summary", "df-generated"] + - ["java.io", "PrintWriter", "println", "(boolean)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "println", "(char)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "println", "(double)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "println", "(float)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "println", "(int)", "summary", "df-generated"] + - ["java.io", "PrintWriter", "println", "(long)", "summary", "df-generated"] + - ["java.io", "PushbackInputStream", "unread", "(int)", "summary", "df-generated"] + - ["java.io", "PushbackReader", "unread", "(int)", "summary", "df-generated"] + - ["java.io", "RandomAccessFile", "getFilePointer", "()", "summary", "df-generated"] + - ["java.io", "RandomAccessFile", "length", "()", "summary", "df-generated"] + - ["java.io", "RandomAccessFile", "read", "()", "summary", "df-generated"] + - ["java.io", "RandomAccessFile", "read", "(byte[])", "summary", "df-generated"] + - ["java.io", "RandomAccessFile", "read", "(byte[],int,int)", "summary", "df-generated"] + - ["java.io", "RandomAccessFile", "seek", "(long)", "summary", "df-generated"] + - ["java.io", "RandomAccessFile", "setLength", "(long)", "summary", "df-generated"] + - ["java.io", "Reader", "mark", "(int)", "summary", "df-generated"] + - ["java.io", "Reader", "markSupported", "()", "summary", "df-generated"] + - ["java.io", "Reader", "nullReader", "()", "summary", "df-generated"] + - ["java.io", "Reader", "ready", "()", "summary", "df-generated"] + - ["java.io", "Reader", "reset", "()", "summary", "df-generated"] + - ["java.io", "Reader", "skip", "(long)", "summary", "df-generated"] + - ["java.io", "SequenceInputStream", "SequenceInputStream", "(InputStream,InputStream)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "commentChar", "(int)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "eolIsSignificant", "(boolean)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "lineno", "()", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "lowerCaseMode", "(boolean)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "nextToken", "()", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "ordinaryChar", "(int)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "ordinaryChars", "(int,int)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "parseNumbers", "()", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "pushBack", "()", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "quoteChar", "(int)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "resetSyntax", "()", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "slashSlashComments", "(boolean)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "slashStarComments", "(boolean)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "whitespaceChars", "(int,int)", "summary", "df-generated"] + - ["java.io", "StreamTokenizer", "wordChars", "(int,int)", "summary", "df-generated"] + - ["java.io", "StringWriter", "StringWriter", "(int)", "summary", "df-generated"] + - ["java.io", "Writer", "nullWriter", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.annotation.model.yml b/java/ql/lib/ext/generated/java.lang.annotation.model.yml new file mode 100644 index 000000000000..8417e0d4cee9 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.annotation.model.yml @@ -0,0 +1,21 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.annotation", "AnnotationTypeMismatchException", True, "AnnotationTypeMismatchException", "(Method,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.annotation", "AnnotationTypeMismatchException", True, "AnnotationTypeMismatchException", "(Method,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.annotation", "AnnotationTypeMismatchException", True, "element", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.annotation", "AnnotationTypeMismatchException", True, "foundType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.annotation", "IncompleteAnnotationException", True, "IncompleteAnnotationException", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.annotation", "IncompleteAnnotationException", True, "elementName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.annotation", "IncompleteAnnotationException", "annotationType", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.constant.model.yml b/java/ql/lib/ext/generated/java.lang.constant.model.yml new file mode 100644 index 000000000000..efa0c1a5b8c8 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.constant.model.yml @@ -0,0 +1,94 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.constant", "ClassDesc", True, "arrayType", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "displayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "nested", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "nested", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "nested", "(String,String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "nested", "(String,String[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "nested", "(String,String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "of", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "of", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "of", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "ofDescriptor", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ClassDesc", True, "packageName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "Constable", True, "describeConstable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDesc", True, "resolveConstantDesc", "(MethodHandles$Lookup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDesc", True, "resolveConstantDesc", "(MethodHandles$Lookup)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc", True, "lookupDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc", True, "methodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc", True, "owner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "bootstrapArgs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "bootstrapMethod", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "invocationName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "invocationType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "withArgs", "(ConstantDesc[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "withArgs", "(ConstantDesc[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "withNameAndType", "(String,MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "withNameAndType", "(String,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", True, "withNameAndType", "(String,MethodTypeDesc)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "bootstrapArgs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "bootstrapArgsList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "bootstrapMethod", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "constantName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "constantType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "of", "(DirectMethodHandleDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "of", "(DirectMethodHandleDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "of", "(DirectMethodHandleDesc,ConstantDesc[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "asType", "(MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "asType", "(MethodTypeDesc)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "invocationType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "of", "(DirectMethodHandleDesc$Kind,ClassDesc,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "of", "(DirectMethodHandleDesc$Kind,ClassDesc,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofConstructor", "(ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofConstructor", "(ClassDesc,ClassDesc[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofField", "(DirectMethodHandleDesc$Kind,ClassDesc,String,ClassDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofField", "(DirectMethodHandleDesc$Kind,ClassDesc,String,ClassDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofField", "(DirectMethodHandleDesc$Kind,ClassDesc,String,ClassDesc)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofMethod", "(DirectMethodHandleDesc$Kind,ClassDesc,String,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofMethod", "(DirectMethodHandleDesc$Kind,ClassDesc,String,MethodTypeDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodHandleDesc", True, "ofMethod", "(DirectMethodHandleDesc$Kind,ClassDesc,String,MethodTypeDesc)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodTypeDesc", True, "displayDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodTypeDesc", True, "of", "(ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodTypeDesc", True, "of", "(ClassDesc,ClassDesc[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.constant", "MethodTypeDesc", True, "ofDescriptor", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.constant", "ClassDesc", "isClassOrInterface", "()", "summary", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc$Kind", "valueOf", "(int)", "summary", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc$Kind", "valueOf", "(int,boolean)", "summary", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc", "isOwnerInterface", "()", "summary", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc", "kind", "()", "summary", "df-generated"] + - ["java.lang.constant", "DirectMethodHandleDesc", "refKind", "()", "summary", "df-generated"] + - ["java.lang.constant", "DynamicCallSiteDesc", "resolveCallSiteDesc", "(MethodHandles$Lookup)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.instrument.model.yml b/java/ql/lib/ext/generated/java.lang.instrument.model.yml new file mode 100644 index 000000000000..ed5693a13d45 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.instrument.model.yml @@ -0,0 +1,18 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.instrument", "ClassDefinition", False, "ClassDefinition", "(Class,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.instrument", "ClassDefinition", False, "getDefinitionClassFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.instrument", "IllegalClassFormatException", True, "IllegalClassFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.instrument", "UnmodifiableClassException", True, "UnmodifiableClassException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.instrument", "UnmodifiableModuleException", True, "UnmodifiableModuleException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.instrument", "ClassDefinition", "getDefinitionClass", "()", "summary", "df-generated"] + - ["java.lang.instrument", "ClassFileTransformer", "transform", "(ClassLoader,String,Class,ProtectionDomain,byte[])", "summary", "df-generated"] + - ["java.lang.instrument", "ClassFileTransformer", "transform", "(Module,ClassLoader,String,Class,ProtectionDomain,byte[])", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.invoke.model.yml b/java/ql/lib/ext/generated/java.lang.invoke.model.yml new file mode 100644 index 000000000000..16ba799e9243 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.invoke.model.yml @@ -0,0 +1,265 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.invoke", "CallSite", True, "dynamicInvoker", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "CallSite", True, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "CallSite", True, "type", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "ClassSpecializer$SpeciesData", True, "key", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", False, "explicitCast", "(MethodHandles$Lookup,String,Class,Object)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "ConstantCallSite", True, "ConstantCallSite", "(MethodHandle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaMetafactory", False, "altMetafactory", "(MethodHandles$Lookup,String,MethodType,Object[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "LambdaMetafactory", False, "metafactory", "(MethodHandles$Lookup,String,MethodType,MethodType,MethodHandle,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asCollector", "(Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asCollector", "(int,Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asFixedArity", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asFixedArity", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asSpreader", "(Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asSpreader", "(int,Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asType", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asType", "(MethodType)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asTypeUncached", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asTypeUncached", "(MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asTypeUncached", "(MethodType)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "asVarargsCollector", "(Class)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "bindTo", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "bindTo", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "type", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandle", True, "withVarargs", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", True, "getMethodType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "bind", "(Object,String,MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "dropLookupMode", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findConstructor", "(Class,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findGetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findSetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findSpecial", "(Class,String,MethodType,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findSpecial", "(Class,String,MethodType,Class)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findStatic", "(Class,String,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findStatic", "(Class,String,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findStaticGetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findStaticSetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findVirtual", "(Class,String,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "findVirtual", "(Class,String,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "in", "(Class)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "revealDirect", "(MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflect", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectConstructor", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectGetter", "(Field)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectSetter", "(Field)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectSpecial", "(Method,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "collectArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "collectArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "constant", "(Class,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "dropArguments", "(MethodHandle,int,Class[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "dropArguments", "(MethodHandle,int,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "dropArgumentsToMatch", "(MethodHandle,int,List,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "dropReturn", "(MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "exactInvoker", "(MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "explicitCastArguments", "(MethodHandle,MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "explicitCastArguments", "(MethodHandle,MethodType)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "explicitCastArguments", "(MethodHandle,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "filterArguments", "(MethodHandle,int,MethodHandle[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "filterArguments", "(MethodHandle,int,MethodHandle[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "filterReturnValue", "(MethodHandle,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "filterReturnValue", "(MethodHandle,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "insertArguments", "(MethodHandle,int,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "insertArguments", "(MethodHandle,int,Object[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "invoker", "(MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "permuteArguments", "(MethodHandle,MethodType,int[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "permuteArguments", "(MethodHandle,MethodType,int[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "varHandleExactInvoker", "(VarHandle$AccessMode,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodHandles", True, "varHandleInvoker", "(VarHandle$AccessMode,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(Class[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "erase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "insertParameterTypes", "(int,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "insertParameterTypes", "(int,List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "methodType", "(Class,Class,Class[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "methodType", "(Class,Class[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "methodType", "(Class,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "methodType", "(Class,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "toMethodDescriptorString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "unwrap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MethodType", False, "wrap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "MutableCallSite", True, "MutableCallSite", "(MethodHandle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "MutableCallSite", True, "MutableCallSite", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[8]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[9].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getCapturedArg", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getFunctionalInterfaceClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getFunctionalInterfaceMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getFunctionalInterfaceMethodSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getImplClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getImplMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getImplMethodSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", False, "getInstantiatedMethodType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "StringConcatException", True, "StringConcatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "StringConcatException", True, "StringConcatException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "StringConcatException", True, "StringConcatException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "StringConcatFactory", False, "makeConcat", "(MethodHandles$Lookup,String,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "StringConcatFactory", False, "makeConcatWithConstants", "(MethodHandles$Lookup,String,MethodType,String,Object[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "SwitchPoint", True, "guardWithTest", "(MethodHandle,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "TypeDescriptor", True, "descriptorString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofArray", "(ClassDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofField", "(ClassDesc,String,ClassDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofField", "(ClassDesc,String,ClassDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofField", "(ClassDesc,String,ClassDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofStaticField", "(ClassDesc,String,ClassDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofStaticField", "(ClassDesc,String,ClassDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofStaticField", "(ClassDesc,String,ClassDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "varType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle", True, "accessModeType", "(VarHandle$AccessMode)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle", True, "coordinateTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle", True, "toMethodHandle", "(VarHandle$AccessMode)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle", True, "withInvokeBehavior", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VarHandle", True, "withInvokeExactBehavior", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.invoke", "VolatileCallSite", True, "VolatileCallSite", "(MethodHandle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "VolatileCallSite", True, "VolatileCallSite", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.invoke", "WrongMethodTypeException", True, "WrongMethodTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.invoke", "CallSite", "setTarget", "(MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "arrayVarHandle", "(MethodHandles$Lookup,String,Class,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "enumConstant", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "fieldVarHandle", "(MethodHandles$Lookup,String,Class,Class,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "getStaticFinal", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "getStaticFinal", "(MethodHandles$Lookup,String,Class,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "invoke", "(MethodHandles$Lookup,String,Class,MethodHandle,Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "nullConstant", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "primitiveClass", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "ConstantBootstraps", "staticFieldVarHandle", "(MethodHandles$Lookup,String,Class,Class,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandle", "invoke", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandle", "invokeExact", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandle", "invokeWithArguments", "(List)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandle", "invokeWithArguments", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandle", "isVarargsCollector", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", "getDeclaringClass", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", "getModifiers", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", "getReferenceKind", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", "isVarArgs", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", "referenceKindToString", "(int)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleInfo", "reflectAs", "(Class,MethodHandles$Lookup)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleProxies", "asInterfaceInstance", "(Class,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleProxies", "isWrapperInstance", "(Object)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleProxies", "wrapperInstanceTarget", "(Object)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandleProxies", "wrapperInstanceType", "(Object)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "accessClass", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "defineClass", "(byte[])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "defineHiddenClass", "(byte[],boolean,MethodHandles$Lookup$ClassOption[])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "defineHiddenClassWithClassData", "(byte[],Object,boolean,MethodHandles$Lookup$ClassOption[])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "ensureInitialized", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "findClass", "(String)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "findStaticVarHandle", "(Class,String,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "findVarHandle", "(Class,String,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "hasFullPrivilegeAccess", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "hasPrivateAccess", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "lookupClass", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "lookupModes", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "previousLookupClass", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles$Lookup", "unreflectVarHandle", "(Field)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "arrayConstructor", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "arrayElementGetter", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "arrayElementSetter", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "arrayElementVarHandle", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "arrayLength", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "byteArrayViewVarHandle", "(Class,ByteOrder)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "byteBufferViewVarHandle", "(Class,ByteOrder)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "catchException", "(MethodHandle,Class,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "classData", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "classDataAt", "(MethodHandles$Lookup,String,Class,int)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "countedLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "countedLoop", "(MethodHandle,MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "doWhileLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "empty", "(MethodType)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "guardWithTest", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "identity", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "iteratedLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "loop", "(MethodHandle[][])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "privateLookupIn", "(Class,MethodHandles$Lookup)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "publicLookup", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "reflectAs", "(Class,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "spreadInvoker", "(MethodType,int)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "tableSwitch", "(MethodHandle,MethodHandle[])", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "throwException", "(Class,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "tryFinally", "(MethodHandle,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "whileLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodHandles", "zero", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "fromMethodDescriptorString", "(String,ClassLoader)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "generic", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "genericMethodType", "(int)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "genericMethodType", "(int,boolean)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "hasPrimitives", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "hasWrappers", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "lastParameterType", "()", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "methodType", "(Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MethodType", "methodType", "(Class,Class)", "summary", "df-generated"] + - ["java.lang.invoke", "MutableCallSite", "syncAll", "(MutableCallSite[])", "summary", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", "getCapturedArgCount", "()", "summary", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", "getCapturingClass", "()", "summary", "df-generated"] + - ["java.lang.invoke", "SerializedLambda", "getImplMethodKind", "()", "summary", "df-generated"] + - ["java.lang.invoke", "SwitchPoint", "hasBeenInvalidated", "()", "summary", "df-generated"] + - ["java.lang.invoke", "SwitchPoint", "invalidateAll", "(SwitchPoint[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle$AccessMode", "methodName", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle$AccessMode", "valueFromMethodName", "(String)", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "acquireFence", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "compareAndExchange", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "compareAndExchangeAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "compareAndExchangeRelease", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "compareAndSet", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "fullFence", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "get", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndAdd", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndAddAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndAddRelease", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseAnd", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseAndAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseAndRelease", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseOr", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseOrAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseOrRelease", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseXor", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseXorAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndBitwiseXorRelease", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndSet", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndSetAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getAndSetRelease", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getOpaque", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "getVolatile", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "hasInvokeExactBehavior", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "isAccessModeSupported", "(VarHandle$AccessMode)", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "loadLoadFence", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "releaseFence", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "set", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "setOpaque", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "setRelease", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "setVolatile", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "storeStoreFence", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "varType", "()", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "weakCompareAndSet", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "weakCompareAndSetAcquire", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "weakCompareAndSetPlain", "(Object[])", "summary", "df-generated"] + - ["java.lang.invoke", "VarHandle", "weakCompareAndSetRelease", "(Object[])", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.management.model.yml b/java/ql/lib/ext/generated/java.lang.management.model.yml new file mode 100644 index 000000000000..6fd0dea35975 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.management.model.yml @@ -0,0 +1,71 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.management", "LockInfo", True, "LockInfo", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.management", "LockInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "LockInfo", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ManagementPermission", False, "ManagementPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.management", "ManagementPermission", False, "ManagementPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.management", "MemoryNotificationInfo", True, "MemoryNotificationInfo", "(String,MemoryUsage,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.management", "MemoryNotificationInfo", True, "MemoryNotificationInfo", "(String,MemoryUsage,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.management", "MemoryNotificationInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "MemoryNotificationInfo", True, "getPoolName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "MemoryNotificationInfo", True, "getUsage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "MemoryUsage", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "MonitorInfo", True, "MonitorInfo", "(String,int,int,StackTraceElement)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.management", "MonitorInfo", True, "MonitorInfo", "(String,int,int,StackTraceElement)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.management", "MonitorInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "MonitorInfo", True, "getLockedStackFrame", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "getLockInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "getLockName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "getLockOwnerName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "getLockedMonitors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "getLockedSynchronizers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "getStackTrace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.management", "ThreadInfo", True, "getThreadName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.management", "LockInfo", "getIdentityHashCode", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getClassLoadingMXBean", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getCompilationMXBean", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getGarbageCollectorMXBeans", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getMemoryMXBean", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getMemoryManagerMXBeans", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getMemoryPoolMXBeans", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getOperatingSystemMXBean", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getPlatformMBeanServer", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getPlatformMXBean", "(Class)", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getPlatformMXBean", "(MBeanServerConnection,Class)", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getPlatformMXBeans", "(Class)", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getPlatformMXBeans", "(MBeanServerConnection,Class)", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getPlatformManagementInterfaces", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getRuntimeMXBean", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "getThreadMXBean", "()", "summary", "df-generated"] + - ["java.lang.management", "ManagementFactory", "newPlatformMXBeanProxy", "(MBeanServerConnection,String,Class)", "summary", "df-generated"] + - ["java.lang.management", "MemoryNotificationInfo", "getCount", "()", "summary", "df-generated"] + - ["java.lang.management", "MemoryUsage", "MemoryUsage", "(long,long,long,long)", "summary", "df-generated"] + - ["java.lang.management", "MemoryUsage", "getCommitted", "()", "summary", "df-generated"] + - ["java.lang.management", "MemoryUsage", "getInit", "()", "summary", "df-generated"] + - ["java.lang.management", "MemoryUsage", "getMax", "()", "summary", "df-generated"] + - ["java.lang.management", "MemoryUsage", "getUsed", "()", "summary", "df-generated"] + - ["java.lang.management", "MonitorInfo", "getLockedStackDepth", "()", "summary", "df-generated"] + - ["java.lang.management", "RuntimeMXBean", "getPid", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getBlockedCount", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getBlockedTime", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getLockOwnerId", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getPriority", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getThreadId", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getThreadState", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getWaitedCount", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "getWaitedTime", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "isDaemon", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "isInNative", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadInfo", "isSuspended", "()", "summary", "df-generated"] + - ["java.lang.management", "ThreadMXBean", "dumpAllThreads", "(boolean,boolean,int)", "summary", "df-generated"] + - ["java.lang.management", "ThreadMXBean", "getThreadInfo", "(long[],boolean,boolean,int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.model.yml b/java/ql/lib/ext/generated/java.lang.model.yml new file mode 100644 index 000000000000..c8af5bdc0048 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.model.yml @@ -0,0 +1,977 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang", "AbstractMethodError", True, "AbstractMethodError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "AbstractStringBuilder", True, "appendCodePoint", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "AbstractStringBuilder", True, "deleteCharAt", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ArithmeticException", True, "ArithmeticException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ArrayIndexOutOfBoundsException", True, "ArrayIndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ArrayStoreException", True, "ArrayStoreException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "AssertionError", True, "AssertionError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "AssertionError", True, "AssertionError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "CharSequence", True, "chars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "CharSequence", True, "codePoints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Class", False, "getNestHost", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ClassCastException", True, "ClassCastException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassCircularityError", True, "ClassCircularityError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassFormatError", True, "ClassFormatError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "findResource", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "getDefinedPackage", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "getDefinedPackage", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "getUnnamedModule", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "loadClass", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "loadClass", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "setClassAssertionStatus", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassLoader", True, "setPackageAssertionStatus", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ClassNotFoundException", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ClassValue", True, "get", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "CloneNotSupportedException", True, "CloneNotSupportedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Enum$EnumDesc", False, "of", "(ClassDesc,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Enum$EnumDesc", False, "of", "(ClassDesc,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "EnumConstantNotPresentException", True, "EnumConstantNotPresentException", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "EnumConstantNotPresentException", True, "constantName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Error", True, "Error", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Error", True, "Error", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Error", True, "Error", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Error", True, "Error", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ExceptionInInitializerError", True, "ExceptionInInitializerError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ExceptionInInitializerError", True, "ExceptionInInitializerError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ExceptionInInitializerError", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "IllegalAccessError", True, "IllegalAccessError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalAccessException", True, "IllegalAccessException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalArgumentException", True, "IllegalArgumentException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalArgumentException", True, "IllegalArgumentException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalArgumentException", True, "IllegalArgumentException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalMonitorStateException", True, "IllegalMonitorStateException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalStateException", True, "IllegalStateException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalStateException", True, "IllegalStateException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalStateException", True, "IllegalStateException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IllegalThreadStateException", True, "IllegalThreadStateException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "IncompatibleClassChangeError", True, "IncompatibleClassChangeError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "InstantiationError", True, "InstantiationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "InstantiationException", True, "InstantiationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "InternalError", True, "InternalError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "InternalError", True, "InternalError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "InternalError", True, "InternalError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "InternalError", True, "InternalError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "InterruptedException", True, "InterruptedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "LinkageError", True, "LinkageError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "LinkageError", True, "LinkageError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "LinkageError", True, "LinkageError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Module", False, "addExports", "(String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "Module", False, "addOpens", "(String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "Module", False, "addReads", "(Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "Module", False, "addUses", "(Class)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "Module", False, "getClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Module", False, "getDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Module", False, "getLayer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Module", False, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Module", False, "getPackages", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer$Controller", False, "addExports", "(Module,String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ModuleLayer$Controller", False, "addOpens", "(Module,String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ModuleLayer$Controller", False, "addReads", "(Module,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ModuleLayer$Controller", False, "layer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "configuration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,Function)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,Function)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,List,Function)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,List,Function)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,ClassLoader)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,List,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,List,ClassLoader)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,ClassLoader)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,List,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,List,ClassLoader)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "findLoader", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "findModule", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "modules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ModuleLayer", False, "parents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "NegativeArraySizeException", True, "NegativeArraySizeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "NoClassDefFoundError", True, "NoClassDefFoundError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "NoSuchFieldError", True, "NoSuchFieldError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "NoSuchFieldException", True, "NoSuchFieldException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "NoSuchMethodError", True, "NoSuchMethodError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "NoSuchMethodException", True, "NoSuchMethodException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "NumberFormatException", True, "NumberFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "OutOfMemoryError", True, "OutOfMemoryError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Package", True, "getImplementationTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Package", True, "getImplementationVendor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Package", True, "getImplementationVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Package", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Package", True, "getPackage", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Package", True, "getSpecificationTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Package", True, "getSpecificationVendor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Package", True, "getSpecificationVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "destroyForcibly", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "Process", True, "errorReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "errorReader", "(Charset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "getErrorStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "getInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "inputReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "inputReader", "(Charset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "outputWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "outputWriter", "(Charset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Process", True, "toHandle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "command", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "command", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "command", "(List)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "command", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "command", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "directory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "inheritIO", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectError", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectError", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectError", "(ProcessBuilder$Redirect)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectError", "(ProcessBuilder$Redirect)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectErrorStream", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectInput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectInput", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectInput", "(ProcessBuilder$Redirect)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectInput", "(ProcessBuilder$Redirect)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectOutput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectOutput", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectOutput", "(ProcessBuilder$Redirect)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ProcessBuilder", False, "redirectOutput", "(ProcessBuilder$Redirect)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang", "ProcessHandle$Info", True, "arguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessHandle$Info", True, "command", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessHandle$Info", True, "commandLine", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ProcessHandle$Info", True, "user", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Runtime$Version", False, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Runtime$Version", False, "optional", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Runtime$Version", False, "pre", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "RuntimePermission", False, "RuntimePermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "RuntimePermission", False, "RuntimePermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "SecurityException", True, "SecurityException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "SecurityException", True, "SecurityException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "SecurityException", True, "SecurityException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "SecurityException", True, "SecurityException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackOverflowError", True, "StackOverflowError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "getClassLoaderName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "getMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "getModuleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackTraceElement", False, "getModuleVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", True, "getDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", True, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", True, "getMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", True, "getMethodType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", True, "toStackTraceElement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackWalker", False, "getInstance", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StackWalker", False, "getInstance", "(Set,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "String", False, "lines", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "StringIndexOutOfBoundsException", True, "StringIndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "System$LoggerFinder", True, "getLocalizedLogger", "(String,ResourceBundle,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "System$LoggerFinder", True, "getLocalizedLogger", "(String,ResourceBundle,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "System", False, "getLogger", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "System", False, "getLogger", "(String,ResourceBundle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "System", False, "getLogger", "(String,ResourceBundle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "System", False, "getProperty", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "System", False, "setProperty", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "System", False, "setProperty", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(Runnable,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(Runnable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "getThreadGroup", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Thread", True, "getUncaughtExceptionHandler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Thread", True, "setContextClassLoader", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "Thread", True, "setUncaughtExceptionHandler", "(Thread$UncaughtExceptionHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "ThreadGroup", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "ThreadGroup", "(ThreadGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "ThreadGroup", "(ThreadGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "ThreadGroup", "(ThreadGroup,String)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "enumerate", "(ThreadGroup[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "enumerate", "(ThreadGroup[],boolean)", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "enumerate", "(Thread[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "enumerate", "(Thread[],boolean)", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "ThreadGroup", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Throwable", True, "fillInStackTrace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "Throwable", True, "printStackTrace", "(PrintWriter)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.lang", "TypeNotPresentException", True, "TypeNotPresentException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "TypeNotPresentException", True, "TypeNotPresentException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "TypeNotPresentException", True, "typeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang", "UnknownError", True, "UnknownError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "UnsatisfiedLinkError", True, "UnsatisfiedLinkError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "UnsupportedClassVersionError", True, "UnsupportedClassVersionError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "UnsupportedOperationException", True, "UnsupportedOperationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "UnsupportedOperationException", True, "UnsupportedOperationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "UnsupportedOperationException", True, "UnsupportedOperationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "VerifyError", True, "VerifyError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang", "AbstractStringBuilder", "capacity", "()", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "codePointAt", "(int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "codePointBefore", "(int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "codePointCount", "(int,int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "ensureCapacity", "(int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "indexOf", "(String)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "indexOf", "(String,int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "lastIndexOf", "(String)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "lastIndexOf", "(String,int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "offsetByCodePoints", "(int,int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "setCharAt", "(int,char)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "setLength", "(int)", "summary", "df-generated"] + - ["java.lang", "AbstractStringBuilder", "trimToSize", "()", "summary", "df-generated"] + - ["java.lang", "ArrayIndexOutOfBoundsException", "ArrayIndexOutOfBoundsException", "(int)", "summary", "df-generated"] + - ["java.lang", "AssertionError", "AssertionError", "(boolean)", "summary", "df-generated"] + - ["java.lang", "AssertionError", "AssertionError", "(char)", "summary", "df-generated"] + - ["java.lang", "AssertionError", "AssertionError", "(double)", "summary", "df-generated"] + - ["java.lang", "AssertionError", "AssertionError", "(float)", "summary", "df-generated"] + - ["java.lang", "AssertionError", "AssertionError", "(int)", "summary", "df-generated"] + - ["java.lang", "AssertionError", "AssertionError", "(long)", "summary", "df-generated"] + - ["java.lang", "AutoCloseable", "close", "()", "summary", "df-generated"] + - ["java.lang", "Boolean", "Boolean", "(String)", "summary", "df-generated"] + - ["java.lang", "Boolean", "Boolean", "(boolean)", "summary", "df-generated"] + - ["java.lang", "Boolean", "compare", "(boolean,boolean)", "summary", "df-generated"] + - ["java.lang", "Boolean", "getBoolean", "(String)", "summary", "df-generated"] + - ["java.lang", "Boolean", "hashCode", "(boolean)", "summary", "df-generated"] + - ["java.lang", "Boolean", "logicalAnd", "(boolean,boolean)", "summary", "df-generated"] + - ["java.lang", "Boolean", "logicalOr", "(boolean,boolean)", "summary", "df-generated"] + - ["java.lang", "Boolean", "logicalXor", "(boolean,boolean)", "summary", "df-generated"] + - ["java.lang", "Boolean", "valueOf", "(String)", "summary", "df-generated"] + - ["java.lang", "Byte", "Byte", "(String)", "summary", "df-generated"] + - ["java.lang", "Byte", "Byte", "(byte)", "summary", "df-generated"] + - ["java.lang", "Byte", "compare", "(byte,byte)", "summary", "df-generated"] + - ["java.lang", "Byte", "compareUnsigned", "(byte,byte)", "summary", "df-generated"] + - ["java.lang", "Byte", "decode", "(String)", "summary", "df-generated"] + - ["java.lang", "Byte", "hashCode", "(byte)", "summary", "df-generated"] + - ["java.lang", "Byte", "parseByte", "(String)", "summary", "df-generated"] + - ["java.lang", "Byte", "parseByte", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Byte", "toUnsignedInt", "(byte)", "summary", "df-generated"] + - ["java.lang", "Byte", "toUnsignedLong", "(byte)", "summary", "df-generated"] + - ["java.lang", "Byte", "valueOf", "(String)", "summary", "df-generated"] + - ["java.lang", "Byte", "valueOf", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Byte", "valueOf", "(byte)", "summary", "df-generated"] + - ["java.lang", "CharSequence", "compare", "(CharSequence,CharSequence)", "summary", "df-generated"] + - ["java.lang", "CharSequence", "isEmpty", "()", "summary", "df-generated"] + - ["java.lang", "CharSequence", "length", "()", "summary", "df-generated"] + - ["java.lang", "Character$UnicodeBlock", "forName", "(String)", "summary", "df-generated"] + - ["java.lang", "Character$UnicodeBlock", "of", "(char)", "summary", "df-generated"] + - ["java.lang", "Character$UnicodeBlock", "of", "(int)", "summary", "df-generated"] + - ["java.lang", "Character$UnicodeScript", "forName", "(String)", "summary", "df-generated"] + - ["java.lang", "Character$UnicodeScript", "of", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "Character", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "charCount", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "charValue", "()", "summary", "df-generated"] + - ["java.lang", "Character", "codePointAt", "(CharSequence,int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointAt", "(char[],int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointAt", "(char[],int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointBefore", "(CharSequence,int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointBefore", "(char[],int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointBefore", "(char[],int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointCount", "(CharSequence,int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointCount", "(char[],int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "codePointOf", "(String)", "summary", "df-generated"] + - ["java.lang", "Character", "compare", "(char,char)", "summary", "df-generated"] + - ["java.lang", "Character", "digit", "(char,int)", "summary", "df-generated"] + - ["java.lang", "Character", "digit", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "forDigit", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "getDirectionality", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "getDirectionality", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "getName", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "getNumericValue", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "getNumericValue", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "getType", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "getType", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "hashCode", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "highSurrogate", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isAlphabetic", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isBmpCodePoint", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isDefined", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isDefined", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isDigit", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isDigit", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isHighSurrogate", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isISOControl", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isISOControl", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isIdentifierIgnorable", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isIdentifierIgnorable", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isIdeographic", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isJavaIdentifierPart", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isJavaIdentifierPart", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isJavaIdentifierStart", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isJavaIdentifierStart", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isJavaLetter", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isJavaLetterOrDigit", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isLetter", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isLetter", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isLetterOrDigit", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isLetterOrDigit", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isLowSurrogate", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isLowerCase", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isLowerCase", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isMirrored", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isMirrored", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isSpace", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isSpaceChar", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isSpaceChar", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isSupplementaryCodePoint", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isSurrogate", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isSurrogatePair", "(char,char)", "summary", "df-generated"] + - ["java.lang", "Character", "isTitleCase", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isTitleCase", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isUnicodeIdentifierPart", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isUnicodeIdentifierPart", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isUnicodeIdentifierStart", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isUnicodeIdentifierStart", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isUpperCase", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isUpperCase", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isValidCodePoint", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "isWhitespace", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "isWhitespace", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "lowSurrogate", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "offsetByCodePoints", "(CharSequence,int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "offsetByCodePoints", "(char[],int,int,int,int)", "summary", "df-generated"] + - ["java.lang", "Character", "reverseBytes", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "toChars", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "toChars", "(int,char[],int)", "summary", "df-generated"] + - ["java.lang", "Character", "toCodePoint", "(char,char)", "summary", "df-generated"] + - ["java.lang", "Character", "toLowerCase", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "toLowerCase", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "toTitleCase", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "toTitleCase", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "toUpperCase", "(char)", "summary", "df-generated"] + - ["java.lang", "Character", "toUpperCase", "(int)", "summary", "df-generated"] + - ["java.lang", "Character", "valueOf", "(char)", "summary", "df-generated"] + - ["java.lang", "Class", "asSubclass", "(Class)", "summary", "df-generated"] + - ["java.lang", "Class", "desiredAssertionStatus", "()", "summary", "df-generated"] + - ["java.lang", "Class", "forName", "(Module,String)", "summary", "df-generated"] + - ["java.lang", "Class", "forName", "(String,boolean,ClassLoader)", "summary", "df-generated"] + - ["java.lang", "Class", "getAnnotatedInterfaces", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getAnnotatedSuperclass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getClasses", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getComponentType", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getConstructor", "(Class[])", "summary", "df-generated"] + - ["java.lang", "Class", "getConstructors", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getDeclaredClasses", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getDeclaredConstructors", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getDeclaredFields", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getDeclaredMethod", "(String,Class[])", "summary", "df-generated"] + - ["java.lang", "Class", "getDeclaredMethods", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getDeclaringClass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getEnclosingClass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getEnclosingConstructor", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getEnclosingMethod", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getEnumConstants", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getField", "(String)", "summary", "df-generated"] + - ["java.lang", "Class", "getFields", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getGenericInterfaces", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getGenericSuperclass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getInterfaces", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getMethods", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getModifiers", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getModule", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getNestMembers", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getPackage", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getPackageName", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getPermittedSubclasses", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getProtectionDomain", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getRecordComponents", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getSigners", "()", "summary", "df-generated"] + - ["java.lang", "Class", "getSuperclass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isAnnotation", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isAnonymousClass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isEnum", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isHidden", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isInterface", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isLocalClass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isMemberClass", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isNestmateOf", "(Class)", "summary", "df-generated"] + - ["java.lang", "Class", "isRecord", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isSealed", "()", "summary", "df-generated"] + - ["java.lang", "Class", "isSynthetic", "()", "summary", "df-generated"] + - ["java.lang", "Class", "newInstance", "()", "summary", "df-generated"] + - ["java.lang", "Class", "toGenericString", "()", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "clearAssertionStatus", "()", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "findResources", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getDefinedPackages", "()", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getPlatformClassLoader", "()", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getResourceAsStream", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getResources", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getSystemClassLoader", "()", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getSystemResourceAsStream", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "getSystemResources", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "isRegisteredAsParallelCapable", "()", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "resources", "(String)", "summary", "df-generated"] + - ["java.lang", "ClassLoader", "setDefaultAssertionStatus", "(boolean)", "summary", "df-generated"] + - ["java.lang", "ClassValue", "remove", "(Class)", "summary", "df-generated"] + - ["java.lang", "Compiler", "command", "(Object)", "summary", "df-generated"] + - ["java.lang", "Compiler", "compileClass", "(Class)", "summary", "df-generated"] + - ["java.lang", "Compiler", "compileClasses", "(String)", "summary", "df-generated"] + - ["java.lang", "Compiler", "disable", "()", "summary", "df-generated"] + - ["java.lang", "Compiler", "enable", "()", "summary", "df-generated"] + - ["java.lang", "Double", "Double", "(String)", "summary", "df-generated"] + - ["java.lang", "Double", "Double", "(double)", "summary", "df-generated"] + - ["java.lang", "Double", "compare", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Double", "doubleToRawLongBits", "(double)", "summary", "df-generated"] + - ["java.lang", "Double", "hashCode", "(double)", "summary", "df-generated"] + - ["java.lang", "Double", "isFinite", "(double)", "summary", "df-generated"] + - ["java.lang", "Double", "isInfinite", "()", "summary", "df-generated"] + - ["java.lang", "Double", "isInfinite", "(double)", "summary", "df-generated"] + - ["java.lang", "Double", "isNaN", "()", "summary", "df-generated"] + - ["java.lang", "Double", "isNaN", "(double)", "summary", "df-generated"] + - ["java.lang", "Double", "longBitsToDouble", "(long)", "summary", "df-generated"] + - ["java.lang", "Double", "max", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Double", "min", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Double", "sum", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Double", "toHexString", "(double)", "summary", "df-generated"] + - ["java.lang", "Double", "valueOf", "(String)", "summary", "df-generated"] + - ["java.lang", "Enum", "getDeclaringClass", "()", "summary", "df-generated"] + - ["java.lang", "Enum", "valueOf", "(Class,String)", "summary", "df-generated"] + - ["java.lang", "EnumConstantNotPresentException", "enumType", "()", "summary", "df-generated"] + - ["java.lang", "FdLibm$Cbrt", "compute", "(double)", "summary", "df-generated"] + - ["java.lang", "FdLibm$Hypot", "compute", "(double,double)", "summary", "df-generated"] + - ["java.lang", "FdLibm$Pow", "compute", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Float", "Float", "(String)", "summary", "df-generated"] + - ["java.lang", "Float", "Float", "(double)", "summary", "df-generated"] + - ["java.lang", "Float", "Float", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "compare", "(float,float)", "summary", "df-generated"] + - ["java.lang", "Float", "floatToIntBits", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "floatToRawIntBits", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "hashCode", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "intBitsToFloat", "(int)", "summary", "df-generated"] + - ["java.lang", "Float", "isFinite", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "isInfinite", "()", "summary", "df-generated"] + - ["java.lang", "Float", "isInfinite", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "isNaN", "()", "summary", "df-generated"] + - ["java.lang", "Float", "isNaN", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "max", "(float,float)", "summary", "df-generated"] + - ["java.lang", "Float", "min", "(float,float)", "summary", "df-generated"] + - ["java.lang", "Float", "parseFloat", "(String)", "summary", "df-generated"] + - ["java.lang", "Float", "sum", "(float,float)", "summary", "df-generated"] + - ["java.lang", "Float", "toHexString", "(float)", "summary", "df-generated"] + - ["java.lang", "Float", "valueOf", "(String)", "summary", "df-generated"] + - ["java.lang", "Float", "valueOf", "(float)", "summary", "df-generated"] + - ["java.lang", "IndexOutOfBoundsException", "IndexOutOfBoundsException", "(int)", "summary", "df-generated"] + - ["java.lang", "IndexOutOfBoundsException", "IndexOutOfBoundsException", "(long)", "summary", "df-generated"] + - ["java.lang", "Integer", "Integer", "(String)", "summary", "df-generated"] + - ["java.lang", "Integer", "bitCount", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "compare", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "compareUnsigned", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "decode", "(String)", "summary", "df-generated"] + - ["java.lang", "Integer", "divideUnsigned", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "getInteger", "(String)", "summary", "df-generated"] + - ["java.lang", "Integer", "getInteger", "(String,Integer)", "summary", "df-generated"] + - ["java.lang", "Integer", "getInteger", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "hashCode", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "highestOneBit", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "lowestOneBit", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "max", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "min", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "numberOfLeadingZeros", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "numberOfTrailingZeros", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "parseInt", "(CharSequence,int,int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "parseInt", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "parseUnsignedInt", "(CharSequence,int,int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "parseUnsignedInt", "(String)", "summary", "df-generated"] + - ["java.lang", "Integer", "parseUnsignedInt", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "remainderUnsigned", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "reverse", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "reverseBytes", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "rotateLeft", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "rotateRight", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "signum", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "sum", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Integer", "toBinaryString", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "toOctalString", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "toUnsignedLong", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "toUnsignedString", "(int)", "summary", "df-generated"] + - ["java.lang", "Integer", "toUnsignedString", "(int,int)", "summary", "df-generated"] + - ["java.lang", "LiveStackFrame$PrimitiveSlot", "intValue", "()", "summary", "df-generated"] + - ["java.lang", "LiveStackFrame$PrimitiveSlot", "longValue", "()", "summary", "df-generated"] + - ["java.lang", "LiveStackFrame$PrimitiveSlot", "size", "()", "summary", "df-generated"] + - ["java.lang", "Long", "Long", "(String)", "summary", "df-generated"] + - ["java.lang", "Long", "bitCount", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "compare", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Long", "compareUnsigned", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Long", "decode", "(String)", "summary", "df-generated"] + - ["java.lang", "Long", "divideUnsigned", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Long", "getLong", "(String)", "summary", "df-generated"] + - ["java.lang", "Long", "getLong", "(String,Long)", "summary", "df-generated"] + - ["java.lang", "Long", "getLong", "(String,long)", "summary", "df-generated"] + - ["java.lang", "Long", "hashCode", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "highestOneBit", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "lowestOneBit", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "max", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Long", "min", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Long", "numberOfLeadingZeros", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "numberOfTrailingZeros", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "parseLong", "(CharSequence,int,int,int)", "summary", "df-generated"] + - ["java.lang", "Long", "parseLong", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Long", "parseUnsignedLong", "(CharSequence,int,int,int)", "summary", "df-generated"] + - ["java.lang", "Long", "parseUnsignedLong", "(String)", "summary", "df-generated"] + - ["java.lang", "Long", "parseUnsignedLong", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Long", "remainderUnsigned", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Long", "reverse", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "reverseBytes", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "rotateLeft", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Long", "rotateRight", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Long", "signum", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "sum", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Long", "toBinaryString", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "toHexString", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "toOctalString", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "toUnsignedString", "(long)", "summary", "df-generated"] + - ["java.lang", "Long", "toUnsignedString", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Math", "IEEEremainder", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Math", "abs", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "abs", "(float)", "summary", "df-generated"] + - ["java.lang", "Math", "abs", "(int)", "summary", "df-generated"] + - ["java.lang", "Math", "abs", "(long)", "summary", "df-generated"] + - ["java.lang", "Math", "absExact", "(int)", "summary", "df-generated"] + - ["java.lang", "Math", "absExact", "(long)", "summary", "df-generated"] + - ["java.lang", "Math", "acos", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "addExact", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Math", "addExact", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Math", "asin", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "atan2", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Math", "atan", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "cbrt", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "ceil", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "copySign", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Math", "copySign", "(float,float)", "summary", "df-generated"] + - ["java.lang", "Math", "cos", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "cosh", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "decrementExact", "(int)", "summary", "df-generated"] + - ["java.lang", "Math", "decrementExact", "(long)", "summary", "df-generated"] + - ["java.lang", "Math", "exp", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "expm1", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "floor", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "floorDiv", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Math", "floorDiv", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Math", "floorDiv", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Math", "floorMod", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Math", "floorMod", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Math", "floorMod", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Math", "fma", "(double,double,double)", "summary", "df-generated"] + - ["java.lang", "Math", "fma", "(float,float,float)", "summary", "df-generated"] + - ["java.lang", "Math", "getExponent", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "getExponent", "(float)", "summary", "df-generated"] + - ["java.lang", "Math", "hypot", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Math", "incrementExact", "(int)", "summary", "df-generated"] + - ["java.lang", "Math", "incrementExact", "(long)", "summary", "df-generated"] + - ["java.lang", "Math", "log10", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "log1p", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "log", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "multiplyExact", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Math", "multiplyExact", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Math", "multiplyExact", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Math", "multiplyFull", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Math", "multiplyHigh", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Math", "negateExact", "(int)", "summary", "df-generated"] + - ["java.lang", "Math", "negateExact", "(long)", "summary", "df-generated"] + - ["java.lang", "Math", "nextAfter", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Math", "nextAfter", "(float,double)", "summary", "df-generated"] + - ["java.lang", "Math", "nextDown", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "nextDown", "(float)", "summary", "df-generated"] + - ["java.lang", "Math", "nextUp", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "nextUp", "(float)", "summary", "df-generated"] + - ["java.lang", "Math", "pow", "(double,double)", "summary", "df-generated"] + - ["java.lang", "Math", "random", "()", "summary", "df-generated"] + - ["java.lang", "Math", "rint", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "round", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "round", "(float)", "summary", "df-generated"] + - ["java.lang", "Math", "scalb", "(double,int)", "summary", "df-generated"] + - ["java.lang", "Math", "scalb", "(float,int)", "summary", "df-generated"] + - ["java.lang", "Math", "signum", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "signum", "(float)", "summary", "df-generated"] + - ["java.lang", "Math", "sin", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "sinh", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "sqrt", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "subtractExact", "(int,int)", "summary", "df-generated"] + - ["java.lang", "Math", "subtractExact", "(long,long)", "summary", "df-generated"] + - ["java.lang", "Math", "tan", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "tanh", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "toDegrees", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "toIntExact", "(long)", "summary", "df-generated"] + - ["java.lang", "Math", "toRadians", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "ulp", "(double)", "summary", "df-generated"] + - ["java.lang", "Math", "ulp", "(float)", "summary", "df-generated"] + - ["java.lang", "Module", "canRead", "(Module)", "summary", "df-generated"] + - ["java.lang", "Module", "canUse", "(Class)", "summary", "df-generated"] + - ["java.lang", "Module", "getResourceAsStream", "(String)", "summary", "df-generated"] + - ["java.lang", "Module", "isExported", "(String)", "summary", "df-generated"] + - ["java.lang", "Module", "isExported", "(String,Module)", "summary", "df-generated"] + - ["java.lang", "Module", "isNamed", "()", "summary", "df-generated"] + - ["java.lang", "Module", "isOpen", "(String)", "summary", "df-generated"] + - ["java.lang", "Module", "isOpen", "(String,Module)", "summary", "df-generated"] + - ["java.lang", "ModuleLayer", "boot", "()", "summary", "df-generated"] + - ["java.lang", "ModuleLayer", "empty", "()", "summary", "df-generated"] + - ["java.lang", "Number", "byteValue", "()", "summary", "df-generated"] + - ["java.lang", "Number", "doubleValue", "()", "summary", "df-generated"] + - ["java.lang", "Number", "floatValue", "()", "summary", "df-generated"] + - ["java.lang", "Number", "intValue", "()", "summary", "df-generated"] + - ["java.lang", "Number", "longValue", "()", "summary", "df-generated"] + - ["java.lang", "Number", "shortValue", "()", "summary", "df-generated"] + - ["java.lang", "Object", "equals", "(Object)", "summary", "df-generated"] + - ["java.lang", "Object", "finalize", "()", "summary", "df-generated"] + - ["java.lang", "Object", "hashCode", "()", "summary", "df-generated"] + - ["java.lang", "Object", "notify", "()", "summary", "df-generated"] + - ["java.lang", "Object", "notifyAll", "()", "summary", "df-generated"] + - ["java.lang", "Object", "wait", "()", "summary", "df-generated"] + - ["java.lang", "Object", "wait", "(long)", "summary", "df-generated"] + - ["java.lang", "Object", "wait", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Package", "getPackages", "()", "summary", "df-generated"] + - ["java.lang", "Package", "isCompatibleWith", "(String)", "summary", "df-generated"] + - ["java.lang", "Package", "isSealed", "()", "summary", "df-generated"] + - ["java.lang", "Package", "isSealed", "(URL)", "summary", "df-generated"] + - ["java.lang", "Process", "children", "()", "summary", "df-generated"] + - ["java.lang", "Process", "descendants", "()", "summary", "df-generated"] + - ["java.lang", "Process", "destroy", "()", "summary", "df-generated"] + - ["java.lang", "Process", "exitValue", "()", "summary", "df-generated"] + - ["java.lang", "Process", "info", "()", "summary", "df-generated"] + - ["java.lang", "Process", "isAlive", "()", "summary", "df-generated"] + - ["java.lang", "Process", "onExit", "()", "summary", "df-generated"] + - ["java.lang", "Process", "pid", "()", "summary", "df-generated"] + - ["java.lang", "Process", "supportsNormalTermination", "()", "summary", "df-generated"] + - ["java.lang", "Process", "waitFor", "()", "summary", "df-generated"] + - ["java.lang", "Process", "waitFor", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder$Redirect", "appendTo", "(File)", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder$Redirect", "file", "()", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder$Redirect", "from", "(File)", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder$Redirect", "to", "(File)", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder$Redirect", "type", "()", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder", "redirectErrorStream", "()", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder", "start", "()", "summary", "df-generated"] + - ["java.lang", "ProcessBuilder", "startPipeline", "(List)", "summary", "df-generated"] + - ["java.lang", "ProcessHandle$Info", "startInstant", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle$Info", "totalCpuDuration", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "allProcesses", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "children", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "current", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "descendants", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "destroy", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "destroyForcibly", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "info", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "isAlive", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "of", "(long)", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "onExit", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "parent", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "pid", "()", "summary", "df-generated"] + - ["java.lang", "ProcessHandle", "supportsNormalTermination", "()", "summary", "df-generated"] + - ["java.lang", "Readable", "read", "(CharBuffer)", "summary", "df-generated"] + - ["java.lang", "Runnable", "run", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "compareToIgnoreOptional", "(Runtime$Version)", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "equalsIgnoreOptional", "(Object)", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "feature", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "interim", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "major", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "minor", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "parse", "(String)", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "patch", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "security", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "update", "()", "summary", "df-generated"] + - ["java.lang", "Runtime$Version", "version", "()", "summary", "df-generated"] + - ["java.lang", "Runtime", "addShutdownHook", "(Thread)", "summary", "df-generated"] + - ["java.lang", "Runtime", "availableProcessors", "()", "summary", "df-generated"] + - ["java.lang", "Runtime", "exec", "(String)", "summary", "df-generated"] + - ["java.lang", "Runtime", "exec", "(String,String[])", "summary", "df-generated"] + - ["java.lang", "Runtime", "exec", "(String,String[],File)", "summary", "df-generated"] + - ["java.lang", "Runtime", "exec", "(String[])", "summary", "df-generated"] + - ["java.lang", "Runtime", "exec", "(String[],String[])", "summary", "df-generated"] + - ["java.lang", "Runtime", "exec", "(String[],String[],File)", "summary", "df-generated"] + - ["java.lang", "Runtime", "exit", "(int)", "summary", "df-generated"] + - ["java.lang", "Runtime", "freeMemory", "()", "summary", "df-generated"] + - ["java.lang", "Runtime", "gc", "()", "summary", "df-generated"] + - ["java.lang", "Runtime", "halt", "(int)", "summary", "df-generated"] + - ["java.lang", "Runtime", "load", "(String)", "summary", "df-generated"] + - ["java.lang", "Runtime", "loadLibrary", "(String)", "summary", "df-generated"] + - ["java.lang", "Runtime", "maxMemory", "()", "summary", "df-generated"] + - ["java.lang", "Runtime", "removeShutdownHook", "(Thread)", "summary", "df-generated"] + - ["java.lang", "Runtime", "runFinalization", "()", "summary", "df-generated"] + - ["java.lang", "Runtime", "totalMemory", "()", "summary", "df-generated"] + - ["java.lang", "Runtime", "version", "()", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkAccept", "(String,int)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkAccess", "(Thread)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkAccess", "(ThreadGroup)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkConnect", "(String,int)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkConnect", "(String,int,Object)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkCreateClassLoader", "()", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkDelete", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkExec", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkExit", "(int)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkLink", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkListen", "(int)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkMulticast", "(InetAddress)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkMulticast", "(InetAddress,byte)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkPackageAccess", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkPackageDefinition", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkPermission", "(Permission,Object)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkPrintJobAccess", "()", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkPropertiesAccess", "()", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkPropertyAccess", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkRead", "(FileDescriptor)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkRead", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkRead", "(String,Object)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkSecurityAccess", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkSetFactory", "()", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkWrite", "(FileDescriptor)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "checkWrite", "(String)", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "getSecurityContext", "()", "summary", "df-generated"] + - ["java.lang", "SecurityManager", "getThreadGroup", "()", "summary", "df-generated"] + - ["java.lang", "Short", "Short", "(String)", "summary", "df-generated"] + - ["java.lang", "Short", "Short", "(short)", "summary", "df-generated"] + - ["java.lang", "Short", "compare", "(short,short)", "summary", "df-generated"] + - ["java.lang", "Short", "compareUnsigned", "(short,short)", "summary", "df-generated"] + - ["java.lang", "Short", "decode", "(String)", "summary", "df-generated"] + - ["java.lang", "Short", "hashCode", "(short)", "summary", "df-generated"] + - ["java.lang", "Short", "parseShort", "(String)", "summary", "df-generated"] + - ["java.lang", "Short", "parseShort", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Short", "reverseBytes", "(short)", "summary", "df-generated"] + - ["java.lang", "Short", "toUnsignedInt", "(short)", "summary", "df-generated"] + - ["java.lang", "Short", "toUnsignedLong", "(short)", "summary", "df-generated"] + - ["java.lang", "Short", "valueOf", "(String)", "summary", "df-generated"] + - ["java.lang", "Short", "valueOf", "(String,int)", "summary", "df-generated"] + - ["java.lang", "Short", "valueOf", "(short)", "summary", "df-generated"] + - ["java.lang", "StackTraceElement", "getLineNumber", "()", "summary", "df-generated"] + - ["java.lang", "StackTraceElement", "isNativeMethod", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", "getByteCodeIndex", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", "getClassName", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", "getDeclaringClass", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", "getLineNumber", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker$StackFrame", "isNativeMethod", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker", "forEach", "(Consumer)", "summary", "df-generated"] + - ["java.lang", "StackWalker", "getCallerClass", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker", "getInstance", "()", "summary", "df-generated"] + - ["java.lang", "StackWalker", "getInstance", "(StackWalker$Option)", "summary", "df-generated"] + - ["java.lang", "StackWalker", "walk", "(Function)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "IEEEremainder", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "abs", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "abs", "(float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "abs", "(int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "abs", "(long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "absExact", "(int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "absExact", "(long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "acos", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "addExact", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "addExact", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "asin", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "atan2", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "atan", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "cbrt", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "ceil", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "copySign", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "copySign", "(float,float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "cos", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "cosh", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "decrementExact", "(int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "decrementExact", "(long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "exp", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "expm1", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "floor", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "floorDiv", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "floorDiv", "(long,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "floorDiv", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "floorMod", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "floorMod", "(long,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "floorMod", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "fma", "(double,double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "fma", "(float,float,float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "getExponent", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "getExponent", "(float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "hypot", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "incrementExact", "(int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "incrementExact", "(long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "log10", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "log1p", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "log", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "max", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "max", "(float,float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "max", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "max", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "min", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "min", "(float,float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "min", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "min", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "multiplyExact", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "multiplyExact", "(long,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "multiplyExact", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "multiplyFull", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "multiplyHigh", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "negateExact", "(int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "negateExact", "(long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "nextAfter", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "nextAfter", "(float,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "nextDown", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "nextDown", "(float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "nextUp", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "nextUp", "(float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "pow", "(double,double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "random", "()", "summary", "df-generated"] + - ["java.lang", "StrictMath", "rint", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "round", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "round", "(float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "scalb", "(double,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "scalb", "(float,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "signum", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "signum", "(float)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "sin", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "sinh", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "sqrt", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "subtractExact", "(int,int)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "subtractExact", "(long,long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "tan", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "tanh", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "toDegrees", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "toIntExact", "(long)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "toRadians", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "ulp", "(double)", "summary", "df-generated"] + - ["java.lang", "StrictMath", "ulp", "(float)", "summary", "df-generated"] + - ["java.lang", "String", "codePointAt", "(int)", "summary", "df-generated"] + - ["java.lang", "String", "codePointBefore", "(int)", "summary", "df-generated"] + - ["java.lang", "String", "codePointCount", "(int,int)", "summary", "df-generated"] + - ["java.lang", "String", "compareToIgnoreCase", "(String)", "summary", "df-generated"] + - ["java.lang", "String", "contentEquals", "(CharSequence)", "summary", "df-generated"] + - ["java.lang", "String", "contentEquals", "(StringBuffer)", "summary", "df-generated"] + - ["java.lang", "String", "indexOf", "(String,int)", "summary", "df-generated"] + - ["java.lang", "String", "indexOf", "(int,int)", "summary", "df-generated"] + - ["java.lang", "String", "isBlank", "()", "summary", "df-generated"] + - ["java.lang", "String", "lastIndexOf", "(String,int)", "summary", "df-generated"] + - ["java.lang", "String", "lastIndexOf", "(int,int)", "summary", "df-generated"] + - ["java.lang", "String", "matches", "(String)", "summary", "df-generated"] + - ["java.lang", "String", "offsetByCodePoints", "(int,int)", "summary", "df-generated"] + - ["java.lang", "String", "regionMatches", "(boolean,int,String,int,int)", "summary", "df-generated"] + - ["java.lang", "String", "regionMatches", "(int,String,int,int)", "summary", "df-generated"] + - ["java.lang", "String", "startsWith", "(String,int)", "summary", "df-generated"] + - ["java.lang", "String", "transform", "(Function)", "summary", "df-generated"] + - ["java.lang", "String", "valueOf", "(double)", "summary", "df-generated"] + - ["java.lang", "String", "valueOf", "(float)", "summary", "df-generated"] + - ["java.lang", "StringBuffer", "StringBuffer", "(int)", "summary", "df-generated"] + - ["java.lang", "StringIndexOutOfBoundsException", "StringIndexOutOfBoundsException", "(int)", "summary", "df-generated"] + - ["java.lang", "System$Logger$Level", "getName", "()", "summary", "df-generated"] + - ["java.lang", "System$Logger$Level", "getSeverity", "()", "summary", "df-generated"] + - ["java.lang", "System$Logger", "log", "(System$Logger$Level,Object)", "summary", "df-generated"] + - ["java.lang", "System$Logger", "log", "(System$Logger$Level,String)", "summary", "df-generated"] + - ["java.lang", "System$Logger", "log", "(System$Logger$Level,String,Object[])", "summary", "df-generated"] + - ["java.lang", "System$Logger", "log", "(System$Logger$Level,String,Throwable)", "summary", "df-generated"] + - ["java.lang", "System$Logger", "log", "(System$Logger$Level,Supplier)", "summary", "df-generated"] + - ["java.lang", "System$Logger", "log", "(System$Logger$Level,Supplier,Throwable)", "summary", "df-generated"] + - ["java.lang", "System$LoggerFinder", "getLogger", "(String,Module)", "summary", "df-generated"] + - ["java.lang", "System$LoggerFinder", "getLoggerFinder", "()", "summary", "df-generated"] + - ["java.lang", "System", "clearProperty", "(String)", "summary", "df-generated"] + - ["java.lang", "System", "console", "()", "summary", "df-generated"] + - ["java.lang", "System", "gc", "()", "summary", "df-generated"] + - ["java.lang", "System", "getProperties", "()", "summary", "df-generated"] + - ["java.lang", "System", "getProperty", "(String)", "summary", "df-generated"] + - ["java.lang", "System", "getSecurityManager", "()", "summary", "df-generated"] + - ["java.lang", "System", "getenv", "()", "summary", "df-generated"] + - ["java.lang", "System", "inheritedChannel", "()", "summary", "df-generated"] + - ["java.lang", "System", "load", "(String)", "summary", "df-generated"] + - ["java.lang", "System", "loadLibrary", "(String)", "summary", "df-generated"] + - ["java.lang", "System", "mapLibraryName", "(String)", "summary", "df-generated"] + - ["java.lang", "System", "runFinalization", "()", "summary", "df-generated"] + - ["java.lang", "System", "setErr", "(PrintStream)", "summary", "df-generated"] + - ["java.lang", "System", "setIn", "(InputStream)", "summary", "df-generated"] + - ["java.lang", "System", "setOut", "(PrintStream)", "summary", "df-generated"] + - ["java.lang", "System", "setProperties", "(Properties)", "summary", "df-generated"] + - ["java.lang", "System", "setSecurityManager", "(SecurityManager)", "summary", "df-generated"] + - ["java.lang", "Thread$UncaughtExceptionHandler", "uncaughtException", "(Thread,Throwable)", "summary", "df-generated"] + - ["java.lang", "Thread", "activeCount", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "checkAccess", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "countStackFrames", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "dumpStack", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "enumerate", "(Thread[])", "summary", "df-generated"] + - ["java.lang", "Thread", "getAllStackTraces", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "getDefaultUncaughtExceptionHandler", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "getId", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "getPriority", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "getStackTrace", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "getState", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "holdsLock", "(Object)", "summary", "df-generated"] + - ["java.lang", "Thread", "interrupted", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "isAlive", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "isDaemon", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "isInterrupted", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "join", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "join", "(long)", "summary", "df-generated"] + - ["java.lang", "Thread", "join", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Thread", "onSpinWait", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "resume", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "setDaemon", "(boolean)", "summary", "df-generated"] + - ["java.lang", "Thread", "setDefaultUncaughtExceptionHandler", "(Thread$UncaughtExceptionHandler)", "summary", "df-generated"] + - ["java.lang", "Thread", "setPriority", "(int)", "summary", "df-generated"] + - ["java.lang", "Thread", "sleep", "(long,int)", "summary", "df-generated"] + - ["java.lang", "Thread", "stop", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "suspend", "()", "summary", "df-generated"] + - ["java.lang", "Thread", "yield", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "activeCount", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "activeGroupCount", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "allowThreadSuspension", "(boolean)", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "checkAccess", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "destroy", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "getMaxPriority", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "interrupt", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "isDaemon", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "isDestroyed", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "list", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "parentOf", "(ThreadGroup)", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "resume", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "setDaemon", "(boolean)", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "setMaxPriority", "(int)", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "stop", "()", "summary", "df-generated"] + - ["java.lang", "ThreadGroup", "suspend", "()", "summary", "df-generated"] + - ["java.lang", "ThreadLocal", "remove", "()", "summary", "df-generated"] + - ["java.lang", "Throwable", "printStackTrace", "()", "summary", "df-generated"] + - ["java.lang", "Throwable", "printStackTrace", "(PrintStream)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.module.model.yml b/java/ql/lib/ext/generated/java.lang.module.model.yml new file mode 100644 index 000000000000..99377e90986d --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.module.model.yml @@ -0,0 +1,130 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.module", "Configuration", False, "findModule", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "Configuration", False, "modules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "Configuration", False, "parents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "Configuration", False, "resolve", "(ModuleFinder,List,ModuleFinder,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "Configuration", False, "resolve", "(ModuleFinder,ModuleFinder,Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "Configuration", False, "resolveAndBind", "(ModuleFinder,List,ModuleFinder,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "Configuration", False, "resolveAndBind", "(ModuleFinder,ModuleFinder,Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "FindException", True, "FindException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "FindException", True, "FindException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "FindException", True, "FindException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "FindException", True, "FindException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "InvalidModuleDescriptorException", True, "InvalidModuleDescriptorException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(ModuleDescriptor$Exports)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(ModuleDescriptor$Exports)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(Set,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(Set,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(Set,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(Set,String,Set)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(Set,String,Set)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(Set,String,Set)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(String,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(String,Set)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "exports", "(String,Set)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "mainClass", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "mainClass", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(ModuleDescriptor$Opens)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(ModuleDescriptor$Opens)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(Set,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(Set,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(Set,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(Set,String,Set)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(Set,String,Set)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(Set,String,Set)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(String,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(String,Set)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "opens", "(String,Set)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "packages", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "packages", "(Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "provides", "(ModuleDescriptor$Provides)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "provides", "(ModuleDescriptor$Provides)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "provides", "(String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "provides", "(String,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "provides", "(String,List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "requires", "(ModuleDescriptor$Requires)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "requires", "(ModuleDescriptor$Requires)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "requires", "(Set,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "requires", "(Set,String,ModuleDescriptor$Version)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "requires", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "uses", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "uses", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "version", "(ModuleDescriptor$Version)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "version", "(ModuleDescriptor$Version)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "version", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Builder", False, "version", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Exports", False, "modifiers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Exports", False, "source", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Exports", False, "targets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Opens", False, "modifiers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Opens", False, "source", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Opens", False, "targets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Provides", False, "providers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Provides", False, "service", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Requires", False, "compiledVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Requires", False, "modifiers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Requires", False, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Requires", False, "rawCompiledVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Version", False, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "exports", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "mainClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "modifiers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "newAutomaticModule", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "newModule", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "newModule", "(String,Set)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "newModule", "(String,Set)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "newOpenModule", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "opens", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "packages", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "provides", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "rawVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "read", "(ByteBuffer,Supplier)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "read", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "read", "(InputStream,Supplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "read", "(InputStream,Supplier)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "requires", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "toNameAndVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "uses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", True, "version", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleFinder", True, "find", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleFinder", True, "findAll", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleFinder", True, "of", "(Path[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleReader", True, "open", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleReader", True, "read", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ModuleReference", True, "descriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ModuleReference", True, "location", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ResolutionException", True, "ResolutionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ResolutionException", True, "ResolutionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ResolutionException", True, "ResolutionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ResolutionException", True, "ResolutionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.module", "ResolvedModule", False, "configuration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ResolvedModule", False, "reads", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.module", "ResolvedModule", False, "reference", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.module", "Configuration", "empty", "()", "summary", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Exports", "isQualified", "()", "summary", "df-generated"] + - ["java.lang.module", "ModuleDescriptor$Opens", "isQualified", "()", "summary", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", "isAutomatic", "()", "summary", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", "isOpen", "()", "summary", "df-generated"] + - ["java.lang.module", "ModuleDescriptor", "read", "(ByteBuffer)", "summary", "df-generated"] + - ["java.lang.module", "ModuleFinder", "compose", "(ModuleFinder[])", "summary", "df-generated"] + - ["java.lang.module", "ModuleFinder", "ofSystem", "()", "summary", "df-generated"] + - ["java.lang.module", "ModuleReader", "release", "(ByteBuffer)", "summary", "df-generated"] + - ["java.lang.module", "ModuleReference", "open", "()", "summary", "df-generated"] + - ["java.lang.module", "ResolvedModule", "name", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.ref.model.yml b/java/ql/lib/ext/generated/java.lang.ref.model.yml new file mode 100644 index 000000000000..58ae03a832fe --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.ref.model.yml @@ -0,0 +1,32 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.ref", "Cleaner", False, "register", "(Object,Runnable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.ref", "Cleaner", False, "register", "(Object,Runnable)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.ref", "Cleaner", False, "register", "(Object,Runnable)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.ref", "PhantomReference", True, "PhantomReference", "(Object,ReferenceQueue)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.ref", "PhantomReference", True, "PhantomReference", "(Object,ReferenceQueue)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.ref", "Reference", True, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.ref", "ReferenceQueue", True, "poll", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.ref", "ReferenceQueue", True, "remove", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.ref", "ReferenceQueue", True, "remove", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.ref", "SoftReference", True, "SoftReference", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.ref", "SoftReference", True, "SoftReference", "(Object,ReferenceQueue)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.ref", "SoftReference", True, "SoftReference", "(Object,ReferenceQueue)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.ref", "WeakReference", True, "WeakReference", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.ref", "WeakReference", True, "WeakReference", "(Object,ReferenceQueue)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.ref", "WeakReference", True, "WeakReference", "(Object,ReferenceQueue)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.ref", "Cleaner", "create", "()", "summary", "df-generated"] + - ["java.lang.ref", "Cleaner", "create", "(ThreadFactory)", "summary", "df-generated"] + - ["java.lang.ref", "Reference", "clear", "()", "summary", "df-generated"] + - ["java.lang.ref", "Reference", "enqueue", "()", "summary", "df-generated"] + - ["java.lang.ref", "Reference", "isEnqueued", "()", "summary", "df-generated"] + - ["java.lang.ref", "Reference", "reachabilityFence", "(Object)", "summary", "df-generated"] + - ["java.lang.ref", "Reference", "refersTo", "(Object)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.reflect.model.yml b/java/ql/lib/ext/generated/java.lang.reflect.model.yml new file mode 100644 index 000000000000..b79a40780056 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.reflect.model.yml @@ -0,0 +1,145 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.reflect", "AnnotatedElement", True, "getAnnotation", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "AnnotatedElement", True, "getAnnotations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "AnnotatedElement", True, "getAnnotationsByType", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "AnnotatedElement", True, "getDeclaredAnnotation", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "AnnotatedElement", True, "getDeclaredAnnotations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "AnnotatedElement", True, "getDeclaredAnnotationsByType", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getAnnotatedExceptionTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getAnnotatedParameterTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getAnnotatedReceiverType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getAnnotatedReturnType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getExceptionTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getGenericExceptionTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getGenericParameterTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getParameterTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Executable", True, "toGenericString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Field", False, "getAnnotatedType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Field", False, "getGenericType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Field", False, "toGenericString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "GenericDeclaration", True, "getTypeParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "GenericSignatureFormatError", True, "GenericSignatureFormatError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "InaccessibleObjectException", True, "InaccessibleObjectException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "InvocationHandler", True, "invoke", "(Object,Method,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "InvocationTargetException", True, "InvocationTargetException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "InvocationTargetException", True, "InvocationTargetException", "(Throwable,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "InvocationTargetException", True, "InvocationTargetException", "(Throwable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "InvocationTargetException", True, "getTargetException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "MalformedParameterizedTypeException", True, "MalformedParameterizedTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "MalformedParametersException", True, "MalformedParametersException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "Member", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Method", False, "getGenericReturnType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Parameter", False, "getAnnotatedType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Parameter", False, "getDeclaringExecutable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Parameter", False, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Parameter", False, "getParameterizedType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "Proxy", True, "getInvocationHandler", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "RecordComponent", False, "getAccessor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "RecordComponent", False, "getAnnotatedType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "RecordComponent", False, "getGenericSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "RecordComponent", False, "getGenericType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "RecordComponent", False, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "ReflectPermission", False, "ReflectPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "ReflectPermission", False, "ReflectPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "Type", True, "getTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.reflect", "UndeclaredThrowableException", True, "UndeclaredThrowableException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "UndeclaredThrowableException", True, "UndeclaredThrowableException", "(Throwable,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "UndeclaredThrowableException", True, "UndeclaredThrowableException", "(Throwable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.lang.reflect", "UndeclaredThrowableException", True, "getUndeclaredThrowable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.reflect", "AccessibleObject", "canAccess", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "AccessibleObject", "isAccessible", "()", "summary", "df-generated"] + - ["java.lang.reflect", "AccessibleObject", "setAccessible", "(AccessibleObject[],boolean)", "summary", "df-generated"] + - ["java.lang.reflect", "AccessibleObject", "setAccessible", "(boolean)", "summary", "df-generated"] + - ["java.lang.reflect", "AccessibleObject", "trySetAccessible", "()", "summary", "df-generated"] + - ["java.lang.reflect", "AnnotatedElement", "isAnnotationPresent", "(Class)", "summary", "df-generated"] + - ["java.lang.reflect", "AnnotatedType", "getAnnotatedOwnerType", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "get", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getBoolean", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getByte", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getChar", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getDouble", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getFloat", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getInt", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getLength", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getLong", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "getShort", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "newInstance", "(Class,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "newInstance", "(Class,int[])", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "set", "(Object,int,Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setBoolean", "(Object,int,boolean)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setByte", "(Object,int,byte)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setChar", "(Object,int,char)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setDouble", "(Object,int,double)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setFloat", "(Object,int,float)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setInt", "(Object,int,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setLong", "(Object,int,long)", "summary", "df-generated"] + - ["java.lang.reflect", "Array", "setShort", "(Object,int,short)", "summary", "df-generated"] + - ["java.lang.reflect", "Executable", "getParameterAnnotations", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Executable", "getParameterCount", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Executable", "isVarArgs", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getBoolean", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getByte", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getChar", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getDouble", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getFloat", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getInt", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getLong", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getShort", "(Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "getType", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "isEnumConstant", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "set", "(Object,Object)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setBoolean", "(Object,boolean)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setByte", "(Object,byte)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setChar", "(Object,char)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setDouble", "(Object,double)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setFloat", "(Object,float)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setInt", "(Object,int)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setLong", "(Object,long)", "summary", "df-generated"] + - ["java.lang.reflect", "Field", "setShort", "(Object,short)", "summary", "df-generated"] + - ["java.lang.reflect", "InvocationHandler", "invokeDefault", "(Object,Method,Object[])", "summary", "df-generated"] + - ["java.lang.reflect", "Member", "getDeclaringClass", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Member", "getModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Member", "isSynthetic", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Method", "getDefaultValue", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Method", "getReturnType", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Method", "isBridge", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Method", "isDefault", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "classModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "constructorModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "fieldModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "interfaceModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isAbstract", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isFinal", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isInterface", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isNative", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isPrivate", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isProtected", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isPublic", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isStatic", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isStrict", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isSynchronized", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isTransient", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "isVolatile", "(int)", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "methodModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Modifier", "parameterModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Parameter", "getModifiers", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Parameter", "getType", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Parameter", "isImplicit", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Parameter", "isNamePresent", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Parameter", "isSynthetic", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Parameter", "isVarArgs", "()", "summary", "df-generated"] + - ["java.lang.reflect", "Proxy", "getProxyClass", "(ClassLoader,Class[])", "summary", "df-generated"] + - ["java.lang.reflect", "Proxy", "isProxyClass", "(Class)", "summary", "df-generated"] + - ["java.lang.reflect", "Proxy", "newProxyInstance", "(ClassLoader,Class[],InvocationHandler)", "summary", "df-generated"] + - ["java.lang.reflect", "RecordComponent", "getDeclaringRecord", "()", "summary", "df-generated"] + - ["java.lang.reflect", "RecordComponent", "getType", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.runtime.model.yml b/java/ql/lib/ext/generated/java.lang.runtime.model.yml new file mode 100644 index 000000000000..940d246f9b30 --- /dev/null +++ b/java/ql/lib/ext/generated/java.lang.runtime.model.yml @@ -0,0 +1,13 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.lang.runtime", "SwitchBootstraps", True, "enumSwitch", "(MethodHandles$Lookup,String,MethodType,Object[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.lang.runtime", "SwitchBootstraps", True, "typeSwitch", "(MethodHandles$Lookup,String,MethodType,Object[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.lang.runtime", "ObjectMethods", "bootstrap", "(MethodHandles$Lookup,String,TypeDescriptor,Class,String,MethodHandle[])", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.math.model.yml b/java/ql/lib/ext/generated/java.math.model.yml new file mode 100644 index 000000000000..2f149239f07f --- /dev/null +++ b/java/ql/lib/ext/generated/java.math.model.yml @@ -0,0 +1,107 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.math", "BigDecimal", True, "movePointLeft", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigDecimal", True, "movePointRight", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigDecimal", True, "plus", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigDecimal", True, "plus", "(MathContext)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigDecimal", True, "setScale", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigInteger", True, "add", "(BigInteger)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigInteger", True, "shiftLeft", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigInteger", True, "shiftRight", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.math", "BigInteger", True, "subtract", "(BigInteger)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.math", "BigDecimal", "abs", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "abs", "(MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "add", "(BigDecimal,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "byteValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divide", "(BigDecimal)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divide", "(BigDecimal,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divide", "(BigDecimal,RoundingMode)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divide", "(BigDecimal,int)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divide", "(BigDecimal,int,RoundingMode)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divide", "(BigDecimal,int,int)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divideAndRemainder", "(BigDecimal)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divideAndRemainder", "(BigDecimal,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divideToIntegralValue", "(BigDecimal)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "divideToIntegralValue", "(BigDecimal,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "intValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "longValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "max", "(BigDecimal)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "min", "(BigDecimal)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "multiply", "(BigDecimal,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "negate", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "negate", "(MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "pow", "(int)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "pow", "(int,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "precision", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "remainder", "(BigDecimal)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "remainder", "(BigDecimal,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "round", "(MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "scale", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "scaleByPowerOfTen", "(int)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "setScale", "(int)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "shortValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "signum", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "sqrt", "(MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "stripTrailingZeros", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "subtract", "(BigDecimal,MathContext)", "summary", "df-generated"] + - ["java.math", "BigDecimal", "toBigIntegerExact", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "toEngineeringString", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "toPlainString", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "ulp", "()", "summary", "df-generated"] + - ["java.math", "BigDecimal", "unscaledValue", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "BigInteger", "(String,int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "BigInteger", "(byte[])", "summary", "df-generated"] + - ["java.math", "BigInteger", "BigInteger", "(byte[],int,int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "BigInteger", "(int,Random)", "summary", "df-generated"] + - ["java.math", "BigInteger", "BigInteger", "(int,byte[])", "summary", "df-generated"] + - ["java.math", "BigInteger", "BigInteger", "(int,byte[],int,int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "BigInteger", "(int,int,Random)", "summary", "df-generated"] + - ["java.math", "BigInteger", "abs", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "and", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "andNot", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "bitCount", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "bitLength", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "byteValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "clearBit", "(int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "divide", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "divideAndRemainder", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "flipBit", "(int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "gcd", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "getLowestSetBit", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "intValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "isProbablePrime", "(int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "longValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "max", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "min", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "mod", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "modInverse", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "modPow", "(BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "multiply", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "negate", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "nextProbablePrime", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "not", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "pow", "(int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "probablePrime", "(int,Random)", "summary", "df-generated"] + - ["java.math", "BigInteger", "remainder", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "BigInteger", "setBit", "(int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "shortValueExact", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "signum", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "sqrt", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "sqrtAndRemainder", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "testBit", "(int)", "summary", "df-generated"] + - ["java.math", "BigInteger", "toByteArray", "()", "summary", "df-generated"] + - ["java.math", "BigInteger", "xor", "(BigInteger)", "summary", "df-generated"] + - ["java.math", "MathContext", "MathContext", "(String)", "summary", "df-generated"] + - ["java.math", "MathContext", "MathContext", "(int)", "summary", "df-generated"] + - ["java.math", "MathContext", "MathContext", "(int,RoundingMode)", "summary", "df-generated"] + - ["java.math", "MathContext", "getPrecision", "()", "summary", "df-generated"] + - ["java.math", "MathContext", "getRoundingMode", "()", "summary", "df-generated"] + - ["java.math", "RoundingMode", "valueOf", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.net.http.model.yml b/java/ql/lib/ext/generated/java.net.http.model.yml new file mode 100644 index 000000000000..6bb3608a4372 --- /dev/null +++ b/java/ql/lib/ext/generated/java.net.http.model.yml @@ -0,0 +1,103 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.net.http", "HttpConnectTimeoutException", True, "HttpConnectTimeoutException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net.http", "HttpHeaders", False, "allValues", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpHeaders", False, "firstValue", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpHeaders", False, "map", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "concat", "(HttpRequest$BodyPublisher[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "fromPublisher", "(Flow$Publisher)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "fromPublisher", "(Flow$Publisher,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "ofByteArray", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "ofByteArray", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "ofByteArrays", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "ofFile", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "ofInputStream", "(Supplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "ofString", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", True, "ofString", "(String,Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest", True, "newBuilder", "(HttpRequest,BiPredicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpRequest", True, "newBuilder", "(URI)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", True, "ofFile", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", True, "ofFile", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", True, "ofFile", "(Path,OpenOption[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", True, "ofFileDownload", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", True, "ofFileDownload", "(Path,OpenOption[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "buffering", "(HttpResponse$BodySubscriber,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "fromLineSubscriber", "(Flow$Subscriber)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "fromLineSubscriber", "(Flow$Subscriber,Function,Charset,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "fromLineSubscriber", "(Flow$Subscriber,Function,Charset,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "fromLineSubscriber", "(Flow$Subscriber,Function,Charset,String)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "fromSubscriber", "(Flow$Subscriber)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "fromSubscriber", "(Flow$Subscriber,Function)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "fromSubscriber", "(Flow$Subscriber,Function)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "mapping", "(HttpResponse$BodySubscriber,Function)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "mapping", "(HttpResponse$BodySubscriber,Function)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "ofByteArrayConsumer", "(Consumer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "ofFile", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "ofFile", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", True, "replacing", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$PushPromiseHandler", True, "of", "(Function,ConcurrentMap)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpResponse$PushPromiseHandler", True, "of", "(Function,ConcurrentMap)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net.http", "HttpTimeoutException", True, "HttpTimeoutException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net.http", "WebSocketHandshakeException", False, "WebSocketHandshakeException", "(HttpResponse)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net.http", "WebSocketHandshakeException", False, "getResponse", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.net.http", "HttpClient", "authenticator", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "connectTimeout", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "cookieHandler", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "executor", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "followRedirects", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "newBuilder", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "newHttpClient", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "newWebSocketBuilder", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "proxy", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "send", "(HttpRequest,HttpResponse$BodyHandler)", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "sendAsync", "(HttpRequest,HttpResponse$BodyHandler)", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "sendAsync", "(HttpRequest,HttpResponse$BodyHandler,HttpResponse$PushPromiseHandler)", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "sslContext", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "sslParameters", "()", "summary", "df-generated"] + - ["java.net.http", "HttpClient", "version", "()", "summary", "df-generated"] + - ["java.net.http", "HttpHeaders", "firstValueAsLong", "(String)", "summary", "df-generated"] + - ["java.net.http", "HttpHeaders", "of", "(Map,BiPredicate)", "summary", "df-generated"] + - ["java.net.http", "HttpRequest$BodyPublishers", "noBody", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "bodyPublisher", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "expectContinue", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "headers", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "method", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "newBuilder", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "timeout", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "uri", "()", "summary", "df-generated"] + - ["java.net.http", "HttpRequest", "version", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "buffering", "(HttpResponse$BodyHandler,int)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "discarding", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "fromLineSubscriber", "(Flow$Subscriber)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "fromLineSubscriber", "(Flow$Subscriber,Function,String)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "fromSubscriber", "(Flow$Subscriber)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "fromSubscriber", "(Flow$Subscriber,Function)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "ofByteArray", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "ofByteArrayConsumer", "(Consumer)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "ofInputStream", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "ofLines", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "ofPublisher", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "ofString", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "ofString", "(Charset)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodyHandlers", "replacing", "(Object)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", "discarding", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", "ofByteArray", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", "ofInputStream", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", "ofLines", "(Charset)", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", "ofPublisher", "()", "summary", "df-generated"] + - ["java.net.http", "HttpResponse$BodySubscribers", "ofString", "(Charset)", "summary", "df-generated"] + - ["java.net.http", "WebSocket$Listener", "onBinary", "(WebSocket,ByteBuffer,boolean)", "summary", "df-generated"] + - ["java.net.http", "WebSocket$Listener", "onClose", "(WebSocket,int,String)", "summary", "df-generated"] + - ["java.net.http", "WebSocket$Listener", "onError", "(WebSocket,Throwable)", "summary", "df-generated"] + - ["java.net.http", "WebSocket$Listener", "onOpen", "(WebSocket)", "summary", "df-generated"] + - ["java.net.http", "WebSocket$Listener", "onPing", "(WebSocket,ByteBuffer)", "summary", "df-generated"] + - ["java.net.http", "WebSocket$Listener", "onPong", "(WebSocket,ByteBuffer)", "summary", "df-generated"] + - ["java.net.http", "WebSocket$Listener", "onText", "(WebSocket,CharSequence,boolean)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.net.model.yml b/java/ql/lib/ext/generated/java.net.model.yml new file mode 100644 index 000000000000..7ca397cdb5c4 --- /dev/null +++ b/java/ql/lib/ext/generated/java.net.model.yml @@ -0,0 +1,485 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.net", "Authenticator", True, "requestPasswordAuthentication", "(Authenticator,String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthentication", "(Authenticator,String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthentication", "(Authenticator,String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[4]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthentication", "(Authenticator,String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[5]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthentication", "(Authenticator,String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[6]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthentication", "(Authenticator,String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[7]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthenticationInstance", "(String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthenticationInstance", "(String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthenticationInstance", "(String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthenticationInstance", "(String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthenticationInstance", "(String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Authenticator", True, "requestPasswordAuthenticationInstance", "(String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "BindException", True, "BindException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "ConnectException", True, "ConnectException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "ContentHandler", True, "getContent", "(URLConnection)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "ContentHandler", True, "getContent", "(URLConnection,Class[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "CookieManager", True, "CookieManager", "(CookieStore,CookiePolicy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "CookieManager", True, "CookieManager", "(CookieStore,CookiePolicy)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "CookieManager", True, "getCookieStore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "CookieManager", True, "setCookiePolicy", "(CookiePolicy)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "CookieStore", True, "add", "(URI,HttpCookie)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "CookieStore", True, "add", "(URI,HttpCookie)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "CookieStore", True, "get", "(URI)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "CookieStore", True, "getCookies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "CookieStore", True, "getURIs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,InetAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,InetAddress,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,SocketAddress)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,int,InetAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,int,InetAddress,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,int,SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "DatagramPacket", "(byte[],int,int,SocketAddress)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "getAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "getSocketAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "setAddress", "(InetAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "setData", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "setData", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramPacket", False, "setSocketAddress", "(SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramSocket", True, "connect", "(InetAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramSocket", True, "connect", "(SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "DatagramSocket", True, "getInetAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "DatagramSocket", True, "getRemoteSocketAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "DatagramSocket", True, "send", "(DatagramPacket)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "DatagramSocket", True, "setOption", "(SocketOption,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.net", "DatagramSocket", True, "supportedOptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "HttpCookie", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "getComment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "getCommentURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "getDomain", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "getPortlist", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "setComment", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "setCommentURL", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "setDomain", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "setPath", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "setPortlist", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpCookie", False, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpRetryException", True, "HttpRetryException", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpRetryException", True, "HttpRetryException", "(String,int,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpRetryException", True, "HttpRetryException", "(String,int,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "HttpRetryException", True, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpRetryException", True, "getReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpURLConnection", True, "getRequestMethod", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpURLConnection", True, "getResponseMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "HttpURLConnection", True, "setRequestMethod", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Inet6Address", False, "getByAddress", "(String,byte[],NetworkInterface)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Inet6Address", False, "getByAddress", "(String,byte[],NetworkInterface)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Inet6Address", False, "getByAddress", "(String,byte[],NetworkInterface)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Inet6Address", False, "getByAddress", "(String,byte[],int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Inet6Address", False, "getByAddress", "(String,byte[],int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Inet6Address", False, "getScopedInterface", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetAddress", True, "getAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetAddress", True, "getByAddress", "(String,byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetAddress", True, "getByAddress", "(String,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetAddress", True, "getCanonicalHostName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetAddress", True, "getHostName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetSocketAddress", True, "InetSocketAddress", "(InetAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "InetSocketAddress", True, "getAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetSocketAddress", True, "getHostName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InetSocketAddress", True, "getHostString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InterfaceAddress", True, "getAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "InterfaceAddress", True, "getBroadcast", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "JarURLConnection", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "JarURLConnection", True, "getCertificates", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "JarURLConnection", True, "getEntryName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "JarURLConnection", True, "getJarEntry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "JarURLConnection", True, "getJarFileURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "JarURLConnection", True, "getManifest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "MalformedURLException", True, "MalformedURLException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "MulticastSocket", True, "getInterface", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "MulticastSocket", True, "send", "(DatagramPacket,byte)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.net", "MulticastSocket", True, "setInterface", "(InetAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "NetPermission", False, "NetPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "NetPermission", False, "NetPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "NetworkInterface", False, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "NetworkInterface", False, "getInterfaceAddresses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "NetworkInterface", False, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "NetworkInterface", False, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "NetworkInterface", False, "subInterfaces", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "NoRouteToHostException", True, "NoRouteToHostException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "PasswordAuthentication", False, "PasswordAuthentication", "(String,char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "PasswordAuthentication", False, "PasswordAuthentication", "(String,char[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "PasswordAuthentication", False, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "PasswordAuthentication", False, "getUserName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "PortUnreachableException", True, "PortUnreachableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "ProtocolException", True, "ProtocolException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Proxy", True, "Proxy", "(Proxy$Type,SocketAddress)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Proxy", True, "address", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "ProxySelector", True, "select", "(URI)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "ServerSocket", True, "ServerSocket", "(int,int,InetAddress)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "ServerSocket", True, "bind", "(SocketAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "ServerSocket", True, "getInetAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "ServerSocket", True, "getLocalSocketAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "ServerSocket", True, "setOption", "(SocketOption,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.net", "ServerSocket", True, "supportedOptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Socket", True, "Socket", "(InetAddress,int,InetAddress,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "Socket", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "Socket", "(String,int,InetAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "Socket", "(String,int,InetAddress,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "Socket", "(String,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "bind", "(SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "connect", "(SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "connect", "(SocketAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "Socket", True, "getInetAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Socket", True, "getInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Socket", True, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Socket", True, "getRemoteSocketAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "Socket", True, "setOption", "(SocketOption,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.net", "Socket", True, "supportedOptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "SocketException", True, "SocketException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "SocketOptions", True, "setOption", "(int,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "SocketPermission", False, "SocketPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "SocketTimeoutException", True, "SocketTimeoutException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URI", False, "getAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getFragment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getHost", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getQuery", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getRawAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getRawFragment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getRawPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getRawQuery", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getRawSchemeSpecificPart", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getRawUserInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getScheme", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getSchemeSpecificPart", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "getUserInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "normalize", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URI", False, "parseServerAuthority", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.net", "URI", False, "relativize", "(URI)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URISyntaxException", True, "URISyntaxException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URISyntaxException", True, "URISyntaxException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URISyntaxException", True, "URISyntaxException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URISyntaxException", True, "URISyntaxException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URISyntaxException", True, "getInput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URISyntaxException", True, "getReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,int,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(String,String,int,String,URLStreamHandler)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(URL,String,URLStreamHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(URL,String,URLStreamHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "URL", "(URL,String,URLStreamHandler)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URL", False, "getAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "getContent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "getContent", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "getHost", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "getProtocol", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "getQuery", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "getRef", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "getUserInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "openConnection", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "URLClassLoader", "(String,URL[],ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "URLClassLoader", "(String,URL[],ClassLoader)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "URLClassLoader", "(String,URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "URLClassLoader", "(String,URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "URLClassLoader", "(URL[],ClassLoader)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "URLClassLoader", "(URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "getURLs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLClassLoader", True, "newInstance", "(URL[],ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getContent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getContent", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getContentEncoding", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getContentType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getPermission", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getRequestProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getRequestProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLConnection", True, "getURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLEncoder", True, "encode", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLEncoder", True, "encode", "(String,Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLEncoder", True, "encode", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "URLPermission", False, "URLPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "URLPermission", False, "URLPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "UnixDomainSocketAddress", False, "getPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "UnixDomainSocketAddress", False, "of", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.net", "UnixDomainSocketAddress", False, "of", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.net", "UnknownHostException", True, "UnknownHostException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.net", "UnknownServiceException", True, "UnknownServiceException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.net", "Authenticator", "getDefault", "()", "summary", "df-generated"] + - ["java.net", "Authenticator", "requestPasswordAuthentication", "(InetAddress,int,String,String,String)", "summary", "df-generated"] + - ["java.net", "Authenticator", "requestPasswordAuthentication", "(String,InetAddress,int,String,String,String)", "summary", "df-generated"] + - ["java.net", "Authenticator", "requestPasswordAuthentication", "(String,InetAddress,int,String,String,String,URL,Authenticator$RequestorType)", "summary", "df-generated"] + - ["java.net", "Authenticator", "setDefault", "(Authenticator)", "summary", "df-generated"] + - ["java.net", "CacheRequest", "abort", "()", "summary", "df-generated"] + - ["java.net", "CacheRequest", "getBody", "()", "summary", "df-generated"] + - ["java.net", "CacheResponse", "getBody", "()", "summary", "df-generated"] + - ["java.net", "CacheResponse", "getHeaders", "()", "summary", "df-generated"] + - ["java.net", "CookieHandler", "get", "(URI,Map)", "summary", "df-generated"] + - ["java.net", "CookieHandler", "getDefault", "()", "summary", "df-generated"] + - ["java.net", "CookieHandler", "put", "(URI,Map)", "summary", "df-generated"] + - ["java.net", "CookieHandler", "setDefault", "(CookieHandler)", "summary", "df-generated"] + - ["java.net", "CookiePolicy", "shouldAccept", "(URI,HttpCookie)", "summary", "df-generated"] + - ["java.net", "CookieStore", "remove", "(URI,HttpCookie)", "summary", "df-generated"] + - ["java.net", "CookieStore", "removeAll", "()", "summary", "df-generated"] + - ["java.net", "DatagramPacket", "getLength", "()", "summary", "df-generated"] + - ["java.net", "DatagramPacket", "getOffset", "()", "summary", "df-generated"] + - ["java.net", "DatagramPacket", "getPort", "()", "summary", "df-generated"] + - ["java.net", "DatagramPacket", "setLength", "(int)", "summary", "df-generated"] + - ["java.net", "DatagramPacket", "setPort", "(int)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "DatagramSocket", "(SocketAddress)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "DatagramSocket", "(int)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "DatagramSocket", "(int,InetAddress)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "bind", "(SocketAddress)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "disconnect", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getBroadcast", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getChannel", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getLocalAddress", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getLocalPort", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getLocalSocketAddress", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getOption", "(SocketOption)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getPort", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getReceiveBufferSize", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getReuseAddress", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getSendBufferSize", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getSoTimeout", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "getTrafficClass", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "isBound", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "isClosed", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "isConnected", "()", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "joinGroup", "(SocketAddress,NetworkInterface)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "leaveGroup", "(SocketAddress,NetworkInterface)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "receive", "(DatagramPacket)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "setBroadcast", "(boolean)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "setDatagramSocketImplFactory", "(DatagramSocketImplFactory)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "setReceiveBufferSize", "(int)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "setReuseAddress", "(boolean)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "setSendBufferSize", "(int)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "setSoTimeout", "(int)", "summary", "df-generated"] + - ["java.net", "DatagramSocket", "setTrafficClass", "(int)", "summary", "df-generated"] + - ["java.net", "FileNameMap", "getContentTypeFor", "(String)", "summary", "df-generated"] + - ["java.net", "HttpCookie", "domainMatches", "(String,String)", "summary", "df-generated"] + - ["java.net", "HttpCookie", "getDiscard", "()", "summary", "df-generated"] + - ["java.net", "HttpCookie", "getMaxAge", "()", "summary", "df-generated"] + - ["java.net", "HttpCookie", "getSecure", "()", "summary", "df-generated"] + - ["java.net", "HttpCookie", "getVersion", "()", "summary", "df-generated"] + - ["java.net", "HttpCookie", "hasExpired", "()", "summary", "df-generated"] + - ["java.net", "HttpCookie", "isHttpOnly", "()", "summary", "df-generated"] + - ["java.net", "HttpCookie", "setDiscard", "(boolean)", "summary", "df-generated"] + - ["java.net", "HttpCookie", "setHttpOnly", "(boolean)", "summary", "df-generated"] + - ["java.net", "HttpCookie", "setMaxAge", "(long)", "summary", "df-generated"] + - ["java.net", "HttpCookie", "setSecure", "(boolean)", "summary", "df-generated"] + - ["java.net", "HttpCookie", "setVersion", "(int)", "summary", "df-generated"] + - ["java.net", "HttpRetryException", "responseCode", "()", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "disconnect", "()", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "getErrorStream", "()", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "getFollowRedirects", "()", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "getInstanceFollowRedirects", "()", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "getResponseCode", "()", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "setAuthenticator", "(Authenticator)", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "setChunkedStreamingMode", "(int)", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "setFixedLengthStreamingMode", "(int)", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "setFixedLengthStreamingMode", "(long)", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "setFollowRedirects", "(boolean)", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "setInstanceFollowRedirects", "(boolean)", "summary", "df-generated"] + - ["java.net", "HttpURLConnection", "usingProxy", "()", "summary", "df-generated"] + - ["java.net", "IDN", "toASCII", "(String)", "summary", "df-generated"] + - ["java.net", "IDN", "toASCII", "(String,int)", "summary", "df-generated"] + - ["java.net", "IDN", "toUnicode", "(String)", "summary", "df-generated"] + - ["java.net", "IDN", "toUnicode", "(String,int)", "summary", "df-generated"] + - ["java.net", "Inet6Address", "getScopeId", "()", "summary", "df-generated"] + - ["java.net", "Inet6Address", "isIPv4CompatibleAddress", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "getHostAddress", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "getLocalHost", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "getLoopbackAddress", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isAnyLocalAddress", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isLinkLocalAddress", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isLoopbackAddress", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isMCGlobal", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isMCLinkLocal", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isMCNodeLocal", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isMCOrgLocal", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isMCSiteLocal", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isMulticastAddress", "()", "summary", "df-generated"] + - ["java.net", "InetAddress", "isReachable", "(NetworkInterface,int,int)", "summary", "df-generated"] + - ["java.net", "InetAddress", "isReachable", "(int)", "summary", "df-generated"] + - ["java.net", "InetAddress", "isSiteLocalAddress", "()", "summary", "df-generated"] + - ["java.net", "InetSocketAddress", "InetSocketAddress", "(int)", "summary", "df-generated"] + - ["java.net", "InetSocketAddress", "getPort", "()", "summary", "df-generated"] + - ["java.net", "InetSocketAddress", "isUnresolved", "()", "summary", "df-generated"] + - ["java.net", "InterfaceAddress", "getNetworkPrefixLength", "()", "summary", "df-generated"] + - ["java.net", "JarURLConnection", "getJarFile", "()", "summary", "df-generated"] + - ["java.net", "JarURLConnection", "getMainAttributes", "()", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "MulticastSocket", "(SocketAddress)", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "MulticastSocket", "(int)", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "getLoopbackMode", "()", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "getNetworkInterface", "()", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "getTTL", "()", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "getTimeToLive", "()", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "joinGroup", "(InetAddress)", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "leaveGroup", "(InetAddress)", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "setLoopbackMode", "(boolean)", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "setNetworkInterface", "(NetworkInterface)", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "setTTL", "(byte)", "summary", "df-generated"] + - ["java.net", "MulticastSocket", "setTimeToLive", "(int)", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getByIndex", "(int)", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getByInetAddress", "(InetAddress)", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getByName", "(String)", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getHardwareAddress", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getIndex", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getInetAddresses", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getMTU", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getNetworkInterfaces", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "getSubInterfaces", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "inetAddresses", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "isLoopback", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "isPointToPoint", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "isUp", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "isVirtual", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "networkInterfaces", "()", "summary", "df-generated"] + - ["java.net", "NetworkInterface", "supportsMulticast", "()", "summary", "df-generated"] + - ["java.net", "Proxy", "type", "()", "summary", "df-generated"] + - ["java.net", "ProxySelector", "connectFailed", "(URI,SocketAddress,IOException)", "summary", "df-generated"] + - ["java.net", "ProxySelector", "getDefault", "()", "summary", "df-generated"] + - ["java.net", "ProxySelector", "of", "(InetSocketAddress)", "summary", "df-generated"] + - ["java.net", "ProxySelector", "setDefault", "(ProxySelector)", "summary", "df-generated"] + - ["java.net", "ResponseCache", "get", "(URI,String,Map)", "summary", "df-generated"] + - ["java.net", "ResponseCache", "getDefault", "()", "summary", "df-generated"] + - ["java.net", "ResponseCache", "put", "(URI,URLConnection)", "summary", "df-generated"] + - ["java.net", "ResponseCache", "setDefault", "(ResponseCache)", "summary", "df-generated"] + - ["java.net", "SecureCacheResponse", "getCipherSuite", "()", "summary", "df-generated"] + - ["java.net", "SecureCacheResponse", "getLocalCertificateChain", "()", "summary", "df-generated"] + - ["java.net", "SecureCacheResponse", "getLocalPrincipal", "()", "summary", "df-generated"] + - ["java.net", "SecureCacheResponse", "getPeerPrincipal", "()", "summary", "df-generated"] + - ["java.net", "SecureCacheResponse", "getSSLSession", "()", "summary", "df-generated"] + - ["java.net", "SecureCacheResponse", "getServerCertificateChain", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "ServerSocket", "(int)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "ServerSocket", "(int,int)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "accept", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "bind", "(SocketAddress)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "getChannel", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "getLocalPort", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "getOption", "(SocketOption)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "getReceiveBufferSize", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "getReuseAddress", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "getSoTimeout", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "isBound", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "isClosed", "()", "summary", "df-generated"] + - ["java.net", "ServerSocket", "setPerformancePreferences", "(int,int,int)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "setReceiveBufferSize", "(int)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "setReuseAddress", "(boolean)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "setSoTimeout", "(int)", "summary", "df-generated"] + - ["java.net", "ServerSocket", "setSocketFactory", "(SocketImplFactory)", "summary", "df-generated"] + - ["java.net", "Socket", "Socket", "(InetAddress,int)", "summary", "df-generated"] + - ["java.net", "Socket", "Socket", "(InetAddress,int,boolean)", "summary", "df-generated"] + - ["java.net", "Socket", "Socket", "(Proxy)", "summary", "df-generated"] + - ["java.net", "Socket", "getChannel", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getKeepAlive", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getLocalAddress", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getLocalPort", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getLocalSocketAddress", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getOOBInline", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getOption", "(SocketOption)", "summary", "df-generated"] + - ["java.net", "Socket", "getPort", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getReceiveBufferSize", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getReuseAddress", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getSendBufferSize", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getSoLinger", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getSoTimeout", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getTcpNoDelay", "()", "summary", "df-generated"] + - ["java.net", "Socket", "getTrafficClass", "()", "summary", "df-generated"] + - ["java.net", "Socket", "isBound", "()", "summary", "df-generated"] + - ["java.net", "Socket", "isClosed", "()", "summary", "df-generated"] + - ["java.net", "Socket", "isConnected", "()", "summary", "df-generated"] + - ["java.net", "Socket", "isInputShutdown", "()", "summary", "df-generated"] + - ["java.net", "Socket", "isOutputShutdown", "()", "summary", "df-generated"] + - ["java.net", "Socket", "sendUrgentData", "(int)", "summary", "df-generated"] + - ["java.net", "Socket", "setKeepAlive", "(boolean)", "summary", "df-generated"] + - ["java.net", "Socket", "setOOBInline", "(boolean)", "summary", "df-generated"] + - ["java.net", "Socket", "setPerformancePreferences", "(int,int,int)", "summary", "df-generated"] + - ["java.net", "Socket", "setReceiveBufferSize", "(int)", "summary", "df-generated"] + - ["java.net", "Socket", "setReuseAddress", "(boolean)", "summary", "df-generated"] + - ["java.net", "Socket", "setSendBufferSize", "(int)", "summary", "df-generated"] + - ["java.net", "Socket", "setSoLinger", "(boolean,int)", "summary", "df-generated"] + - ["java.net", "Socket", "setSoTimeout", "(int)", "summary", "df-generated"] + - ["java.net", "Socket", "setSocketImplFactory", "(SocketImplFactory)", "summary", "df-generated"] + - ["java.net", "Socket", "setTcpNoDelay", "(boolean)", "summary", "df-generated"] + - ["java.net", "Socket", "setTrafficClass", "(int)", "summary", "df-generated"] + - ["java.net", "Socket", "shutdownInput", "()", "summary", "df-generated"] + - ["java.net", "Socket", "shutdownOutput", "()", "summary", "df-generated"] + - ["java.net", "SocketOptions", "getOption", "(int)", "summary", "df-generated"] + - ["java.net", "URI", "URI", "(String,String,String)", "summary", "df-generated"] + - ["java.net", "URI", "URI", "(String,String,String,String)", "summary", "df-generated"] + - ["java.net", "URI", "URI", "(String,String,String,String,String)", "summary", "df-generated"] + - ["java.net", "URI", "getPort", "()", "summary", "df-generated"] + - ["java.net", "URI", "isAbsolute", "()", "summary", "df-generated"] + - ["java.net", "URI", "isOpaque", "()", "summary", "df-generated"] + - ["java.net", "URISyntaxException", "getIndex", "()", "summary", "df-generated"] + - ["java.net", "URL", "getDefaultPort", "()", "summary", "df-generated"] + - ["java.net", "URL", "getPort", "()", "summary", "df-generated"] + - ["java.net", "URL", "openStream", "()", "summary", "df-generated"] + - ["java.net", "URL", "sameFile", "(URL)", "summary", "df-generated"] + - ["java.net", "URL", "setURLStreamHandlerFactory", "(URLStreamHandlerFactory)", "summary", "df-generated"] + - ["java.net", "URLClassLoader", "URLClassLoader", "(URL[])", "summary", "df-generated"] + - ["java.net", "URLClassLoader", "addURL", "(URL)", "summary", "df-generated"] + - ["java.net", "URLClassLoader", "newInstance", "(URL[])", "summary", "df-generated"] + - ["java.net", "URLConnection", "addRequestProperty", "(String,String)", "summary", "df-generated"] + - ["java.net", "URLConnection", "connect", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getAllowUserInteraction", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getConnectTimeout", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getContentLength", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getContentLengthLong", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getDate", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getDefaultAllowUserInteraction", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getDefaultRequestProperty", "(String)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getDefaultUseCaches", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getDefaultUseCaches", "(String)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getDoInput", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getDoOutput", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getExpiration", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getFileNameMap", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getHeaderField", "(String)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getHeaderField", "(int)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getHeaderFieldDate", "(String,long)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getHeaderFieldInt", "(String,int)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getHeaderFieldKey", "(int)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getHeaderFieldLong", "(String,long)", "summary", "df-generated"] + - ["java.net", "URLConnection", "getHeaderFields", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getIfModifiedSince", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getInputStream", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getLastModified", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getOutputStream", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getReadTimeout", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "getUseCaches", "()", "summary", "df-generated"] + - ["java.net", "URLConnection", "guessContentTypeFromName", "(String)", "summary", "df-generated"] + - ["java.net", "URLConnection", "guessContentTypeFromStream", "(InputStream)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setAllowUserInteraction", "(boolean)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setConnectTimeout", "(int)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setContentHandlerFactory", "(ContentHandlerFactory)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setDefaultAllowUserInteraction", "(boolean)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setDefaultRequestProperty", "(String,String)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setDefaultUseCaches", "(String,boolean)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setDefaultUseCaches", "(boolean)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setDoInput", "(boolean)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setDoOutput", "(boolean)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setFileNameMap", "(FileNameMap)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setIfModifiedSince", "(long)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setReadTimeout", "(int)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setRequestProperty", "(String,String)", "summary", "df-generated"] + - ["java.net", "URLConnection", "setUseCaches", "(boolean)", "summary", "df-generated"] + - ["java.net", "URLStreamHandlerFactory", "createURLStreamHandler", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.channels.model.yml b/java/ql/lib/ext/generated/java.nio.channels.model.yml new file mode 100644 index 000000000000..4f6824613281 --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.channels.model.yml @@ -0,0 +1,180 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.nio.channels", "AsynchronousByteChannel", True, "read", "(ByteBuffer,Object,CompletionHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousByteChannel", True, "read", "(ByteBuffer,Object,CompletionHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousByteChannel", True, "read", "(ByteBuffer,Object,CompletionHandler)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousByteChannel", True, "write", "(ByteBuffer,Object,CompletionHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousByteChannel", True, "write", "(ByteBuffer,Object,CompletionHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousByteChannel", True, "write", "(ByteBuffer,Object,CompletionHandler)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", True, "provider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", True, "withCachedThreadPool", "(ExecutorService,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", True, "withThreadPool", "(ExecutorService)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", True, "lock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", True, "open", "(Path,Set,ExecutorService,FileAttribute[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", True, "tryLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousServerSocketChannel", True, "open", "(AsynchronousChannelGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousServerSocketChannel", True, "provider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", True, "open", "(AsynchronousChannelGroup)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", True, "provider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newChannel", "(OutputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newInputStream", "(ReadableByteChannel)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newReader", "(ReadableByteChannel,Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newReader", "(ReadableByteChannel,CharsetDecoder,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newReader", "(ReadableByteChannel,CharsetDecoder,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newReader", "(ReadableByteChannel,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newWriter", "(WritableByteChannel,Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newWriter", "(WritableByteChannel,CharsetEncoder,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newWriter", "(WritableByteChannel,CharsetEncoder,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Channels", False, "newWriter", "(WritableByteChannel,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "DatagramChannel", True, "open", "(ProtocolFamily)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "FileChannel", True, "lock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "FileChannel", True, "open", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "FileChannel", True, "open", "(Path,Set,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "FileChannel", True, "tryLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "FileLock", True, "acquiredBy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "FileLock", True, "channel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "NetworkChannel", True, "bind", "(SocketAddress)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "blockingLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "configureBlocking", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "keyFor", "(Selector)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "provider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "register", "(Selector,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "register", "(Selector,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "register", "(Selector,int,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectableChannel", True, "register", "(Selector,int,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SelectionKey", True, "attachment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Selector", True, "provider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "Selector", True, "select", "(Consumer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.nio.channels", "ServerSocketChannel", True, "open", "(ProtocolFamily)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SocketChannel", True, "open", "(ProtocolFamily)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "SocketChannel", True, "open", "(SocketAddress)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.channels", "WritableByteChannel", True, "write", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio.channels", "AsynchronousByteChannel", "read", "(ByteBuffer)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousByteChannel", "write", "(ByteBuffer)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", "awaitTermination", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", "isShutdown", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", "isTerminated", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", "shutdown", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", "shutdownNow", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousChannelGroup", "withFixedThreadPool", "(int,ThreadFactory)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "force", "(boolean)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "lock", "(Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "lock", "(long,long,boolean)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "lock", "(long,long,boolean,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "open", "(Path,OpenOption[])", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "read", "(ByteBuffer,long)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "read", "(ByteBuffer,long,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "size", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "truncate", "(long)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "tryLock", "(long,long,boolean)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "write", "(ByteBuffer,long)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousFileChannel", "write", "(ByteBuffer,long,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousServerSocketChannel", "accept", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousServerSocketChannel", "accept", "(Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousServerSocketChannel", "bind", "(SocketAddress,int)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousServerSocketChannel", "open", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "connect", "(SocketAddress)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "connect", "(SocketAddress,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "getRemoteAddress", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "open", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "read", "(ByteBuffer,long,TimeUnit,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "read", "(ByteBuffer[],int,int,long,TimeUnit,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "shutdownInput", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "shutdownOutput", "()", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "write", "(ByteBuffer,long,TimeUnit,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "AsynchronousSocketChannel", "write", "(ByteBuffer[],int,int,long,TimeUnit,Object,CompletionHandler)", "summary", "df-generated"] + - ["java.nio.channels", "Channel", "isOpen", "()", "summary", "df-generated"] + - ["java.nio.channels", "Channels", "newInputStream", "(AsynchronousByteChannel)", "summary", "df-generated"] + - ["java.nio.channels", "Channels", "newOutputStream", "(AsynchronousByteChannel)", "summary", "df-generated"] + - ["java.nio.channels", "Channels", "newOutputStream", "(WritableByteChannel)", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "connect", "(SocketAddress)", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "disconnect", "()", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "getRemoteAddress", "()", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "isConnected", "()", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "open", "()", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "receive", "(ByteBuffer)", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "send", "(ByteBuffer,SocketAddress)", "summary", "df-generated"] + - ["java.nio.channels", "DatagramChannel", "socket", "()", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "force", "(boolean)", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "lock", "(long,long,boolean)", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "map", "(FileChannel$MapMode,long,long)", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "read", "(ByteBuffer,long)", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "transferFrom", "(ReadableByteChannel,long,long)", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "transferTo", "(long,long,WritableByteChannel)", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "tryLock", "(long,long,boolean)", "summary", "df-generated"] + - ["java.nio.channels", "FileChannel", "write", "(ByteBuffer,long)", "summary", "df-generated"] + - ["java.nio.channels", "FileLock", "isShared", "()", "summary", "df-generated"] + - ["java.nio.channels", "FileLock", "isValid", "()", "summary", "df-generated"] + - ["java.nio.channels", "FileLock", "overlaps", "(long,long)", "summary", "df-generated"] + - ["java.nio.channels", "FileLock", "position", "()", "summary", "df-generated"] + - ["java.nio.channels", "FileLock", "release", "()", "summary", "df-generated"] + - ["java.nio.channels", "FileLock", "size", "()", "summary", "df-generated"] + - ["java.nio.channels", "GatheringByteChannel", "write", "(ByteBuffer[])", "summary", "df-generated"] + - ["java.nio.channels", "GatheringByteChannel", "write", "(ByteBuffer[],int,int)", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "block", "(InetAddress)", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "channel", "()", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "drop", "()", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "group", "()", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "isValid", "()", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "networkInterface", "()", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "sourceAddress", "()", "summary", "df-generated"] + - ["java.nio.channels", "MembershipKey", "unblock", "(InetAddress)", "summary", "df-generated"] + - ["java.nio.channels", "NetworkChannel", "getLocalAddress", "()", "summary", "df-generated"] + - ["java.nio.channels", "NetworkChannel", "setOption", "(SocketOption,Object)", "summary", "df-generated"] + - ["java.nio.channels", "Pipe", "open", "()", "summary", "df-generated"] + - ["java.nio.channels", "Pipe", "sink", "()", "summary", "df-generated"] + - ["java.nio.channels", "Pipe", "source", "()", "summary", "df-generated"] + - ["java.nio.channels", "ScatteringByteChannel", "read", "(ByteBuffer[])", "summary", "df-generated"] + - ["java.nio.channels", "ScatteringByteChannel", "read", "(ByteBuffer[],int,int)", "summary", "df-generated"] + - ["java.nio.channels", "SeekableByteChannel", "position", "()", "summary", "df-generated"] + - ["java.nio.channels", "SeekableByteChannel", "position", "(long)", "summary", "df-generated"] + - ["java.nio.channels", "SeekableByteChannel", "size", "()", "summary", "df-generated"] + - ["java.nio.channels", "SeekableByteChannel", "truncate", "(long)", "summary", "df-generated"] + - ["java.nio.channels", "SelectableChannel", "isBlocking", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectableChannel", "isRegistered", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectableChannel", "validOps", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "attach", "(Object)", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "cancel", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "channel", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "interestOps", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "interestOps", "(int)", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "interestOpsAnd", "(int)", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "interestOpsOr", "(int)", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "isAcceptable", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "isConnectable", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "isReadable", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "isValid", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "isWritable", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "readyOps", "()", "summary", "df-generated"] + - ["java.nio.channels", "SelectionKey", "selector", "()", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "isOpen", "()", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "keys", "()", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "open", "()", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "select", "()", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "select", "(Consumer,long)", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "select", "(long)", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "selectNow", "()", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "selectNow", "(Consumer)", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "selectedKeys", "()", "summary", "df-generated"] + - ["java.nio.channels", "Selector", "wakeup", "()", "summary", "df-generated"] + - ["java.nio.channels", "ServerSocketChannel", "accept", "()", "summary", "df-generated"] + - ["java.nio.channels", "ServerSocketChannel", "bind", "(SocketAddress,int)", "summary", "df-generated"] + - ["java.nio.channels", "ServerSocketChannel", "open", "()", "summary", "df-generated"] + - ["java.nio.channels", "ServerSocketChannel", "socket", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "connect", "(SocketAddress)", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "finishConnect", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "getRemoteAddress", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "isConnected", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "isConnectionPending", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "open", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "shutdownInput", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "shutdownOutput", "()", "summary", "df-generated"] + - ["java.nio.channels", "SocketChannel", "socket", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.channels.spi.model.yml b/java/ql/lib/ext/generated/java.nio.channels.spi.model.yml new file mode 100644 index 000000000000..bb85f0a62edf --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.channels.spi.model.yml @@ -0,0 +1,21 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio.channels.spi", "AsynchronousChannelProvider", "openAsynchronousChannelGroup", "(ExecutorService,int)", "summary", "df-generated"] + - ["java.nio.channels.spi", "AsynchronousChannelProvider", "openAsynchronousChannelGroup", "(int,ThreadFactory)", "summary", "df-generated"] + - ["java.nio.channels.spi", "AsynchronousChannelProvider", "openAsynchronousServerSocketChannel", "(AsynchronousChannelGroup)", "summary", "df-generated"] + - ["java.nio.channels.spi", "AsynchronousChannelProvider", "openAsynchronousSocketChannel", "(AsynchronousChannelGroup)", "summary", "df-generated"] + - ["java.nio.channels.spi", "AsynchronousChannelProvider", "provider", "()", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "inheritedChannel", "()", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openDatagramChannel", "()", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openDatagramChannel", "(ProtocolFamily)", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openPipe", "()", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openSelector", "()", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openServerSocketChannel", "()", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openServerSocketChannel", "(ProtocolFamily)", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openSocketChannel", "()", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "openSocketChannel", "(ProtocolFamily)", "summary", "df-generated"] + - ["java.nio.channels.spi", "SelectorProvider", "provider", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.charset.model.yml b/java/ql/lib/ext/generated/java.nio.charset.model.yml new file mode 100644 index 000000000000..488fc3ddecf3 --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.charset.model.yml @@ -0,0 +1,82 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.nio.charset", "CharsetDecoder", True, "decode", "(ByteBuffer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "decode", "(ByteBuffer,CharBuffer,boolean)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "malformedInputAction", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "onMalformedInput", "(CodingErrorAction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "onMalformedInput", "(CodingErrorAction)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "onUnmappableCharacter", "(CodingErrorAction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "onUnmappableCharacter", "(CodingErrorAction)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "replaceWith", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "replaceWith", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "replacement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "reset", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", True, "unmappableCharacterAction", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "encode", "(CharBuffer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "encode", "(CharBuffer,ByteBuffer,boolean)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "encode", "(CharBuffer,ByteBuffer,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "malformedInputAction", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "onMalformedInput", "(CodingErrorAction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "onMalformedInput", "(CodingErrorAction)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "onUnmappableCharacter", "(CodingErrorAction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "onUnmappableCharacter", "(CodingErrorAction)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "replaceWith", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "replaceWith", "(byte[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "replacement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "reset", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", True, "unmappableCharacterAction", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "CoderMalfunctionError", True, "CoderMalfunctionError", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "IllegalCharsetNameException", True, "IllegalCharsetNameException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "IllegalCharsetNameException", True, "getCharsetName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.charset", "UnsupportedCharsetException", True, "UnsupportedCharsetException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.charset", "UnsupportedCharsetException", True, "getCharsetName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio.charset", "Charset", "aliases", "()", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "availableCharsets", "()", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "canEncode", "()", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "contains", "(Charset)", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "decode", "(ByteBuffer)", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "defaultCharset", "()", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "displayName", "()", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "displayName", "(Locale)", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "encode", "(CharBuffer)", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "encode", "(String)", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "forName", "(String)", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "isRegistered", "()", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "isSupported", "(String)", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "newDecoder", "()", "summary", "df-generated"] + - ["java.nio.charset", "Charset", "newEncoder", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", "averageCharsPerByte", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", "charset", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", "detectedCharset", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", "flush", "(CharBuffer)", "summary", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", "isAutoDetecting", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", "isCharsetDetected", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetDecoder", "maxCharsPerByte", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", "averageBytesPerChar", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", "canEncode", "(CharSequence)", "summary", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", "canEncode", "(char)", "summary", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", "charset", "()", "summary", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", "flush", "(ByteBuffer)", "summary", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", "isLegalReplacement", "(byte[])", "summary", "df-generated"] + - ["java.nio.charset", "CharsetEncoder", "maxBytesPerChar", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "isError", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "isMalformed", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "isOverflow", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "isUnderflow", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "isUnmappable", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "length", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "malformedForLength", "(int)", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "throwException", "()", "summary", "df-generated"] + - ["java.nio.charset", "CoderResult", "unmappableForLength", "(int)", "summary", "df-generated"] + - ["java.nio.charset", "MalformedInputException", "MalformedInputException", "(int)", "summary", "df-generated"] + - ["java.nio.charset", "MalformedInputException", "getInputLength", "()", "summary", "df-generated"] + - ["java.nio.charset", "UnmappableCharacterException", "UnmappableCharacterException", "(int)", "summary", "df-generated"] + - ["java.nio.charset", "UnmappableCharacterException", "getInputLength", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.charset.spi.model.yml b/java/ql/lib/ext/generated/java.nio.charset.spi.model.yml new file mode 100644 index 000000000000..131afc20afed --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.charset.spi.model.yml @@ -0,0 +1,8 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio.charset.spi", "CharsetProvider", "charsetForName", "(String)", "summary", "df-generated"] + - ["java.nio.charset.spi", "CharsetProvider", "charsets", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.file.attribute.model.yml b/java/ql/lib/ext/generated/java.nio.file.attribute.model.yml new file mode 100644 index 000000000000..2f0a7c2c02c5 --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.file.attribute.model.yml @@ -0,0 +1,38 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.nio.file.attribute", "AclEntry$Builder", False, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setFlags", "(AclEntryFlag[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setFlags", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setFlags", "(Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setPermissions", "(AclEntryPermission[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setPermissions", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setPermissions", "(Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setPrincipal", "(UserPrincipal)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setPrincipal", "(UserPrincipal)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.file.attribute", "AclEntry$Builder", False, "setType", "(AclEntryType)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio.file.attribute", "AclEntry", False, "flags", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file.attribute", "AclEntry", False, "newBuilder", "(AclEntry)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file.attribute", "AclEntry", False, "permissions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file.attribute", "AclEntry", False, "principal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file.attribute", "FileTime", False, "from", "(Instant)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file.attribute", "FileTime", False, "toInstant", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file.attribute", "UserPrincipalNotFoundException", True, "UserPrincipalNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file.attribute", "UserPrincipalNotFoundException", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio.file.attribute", "AclEntry", "newBuilder", "()", "summary", "df-generated"] + - ["java.nio.file.attribute", "AclEntry", "type", "()", "summary", "df-generated"] + - ["java.nio.file.attribute", "FileTime", "from", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.nio.file.attribute", "FileTime", "fromMillis", "(long)", "summary", "df-generated"] + - ["java.nio.file.attribute", "FileTime", "to", "(TimeUnit)", "summary", "df-generated"] + - ["java.nio.file.attribute", "FileTime", "toMillis", "()", "summary", "df-generated"] + - ["java.nio.file.attribute", "PosixFilePermissions", "asFileAttribute", "(Set)", "summary", "df-generated"] + - ["java.nio.file.attribute", "PosixFilePermissions", "fromString", "(String)", "summary", "df-generated"] + - ["java.nio.file.attribute", "UserPrincipalLookupService", "lookupPrincipalByGroupName", "(String)", "summary", "df-generated"] + - ["java.nio.file.attribute", "UserPrincipalLookupService", "lookupPrincipalByName", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.file.model.yml b/java/ql/lib/ext/generated/java.nio.file.model.yml new file mode 100644 index 000000000000..d149f2e47c5f --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.file.model.yml @@ -0,0 +1,158 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.nio.file", "AccessDeniedException", True, "AccessDeniedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "AccessDeniedException", True, "AccessDeniedException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "AccessDeniedException", True, "AccessDeniedException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "AccessDeniedException", True, "AccessDeniedException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "AtomicMoveNotSupportedException", True, "AtomicMoveNotSupportedException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "AtomicMoveNotSupportedException", True, "AtomicMoveNotSupportedException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "AtomicMoveNotSupportedException", True, "AtomicMoveNotSupportedException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "DirectoryIteratorException", False, "DirectoryIteratorException", "(IOException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "DirectoryNotEmptyException", True, "DirectoryNotEmptyException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileAlreadyExistsException", True, "FileAlreadyExistsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileAlreadyExistsException", True, "FileAlreadyExistsException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileAlreadyExistsException", True, "FileAlreadyExistsException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileAlreadyExistsException", True, "FileAlreadyExistsException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystemAlreadyExistsException", True, "FileSystemAlreadyExistsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystemException", True, "FileSystemException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystemException", True, "FileSystemException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystemException", True, "FileSystemException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystemException", True, "FileSystemException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystemException", True, "getFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystemException", True, "getOtherFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystemException", True, "getReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystemLoopException", True, "FileSystemLoopException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystemNotFoundException", True, "FileSystemNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path,ClassLoader)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path,Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path,Map,ClassLoader)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path,Map,ClassLoader)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(Path,Map,ClassLoader)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map,ClassLoader)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map,ClassLoader)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "copy", "(Path,OutputStream)", "", "Argument[0].Element", "Argument[1]", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createDirectories", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createDirectory", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createFile", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createLink", "(Path,Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createSymbolicLink", "(Path,Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempDirectory", "(Path,String,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempDirectory", "(Path,String,FileAttribute[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempDirectory", "(String,FileAttribute[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempFile", "(String,String,FileAttribute[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "createTempFile", "(String,String,FileAttribute[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "getAttribute", "(Path,String,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "getAttribute", "(Path,String,LinkOption[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "getFileAttributeView", "(Path,Class,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "getFileAttributeView", "(Path,Class,LinkOption[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "getFileStore", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "move", "(Path,Path,CopyOption[])", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "newDirectoryStream", "(Path,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "newOutputStream", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readAllLines", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readAttributes", "(Path,Class,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readAttributes", "(Path,String,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readAttributes", "(Path,String,LinkOption[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readString", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "readString", "(Path,Charset)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "setAttribute", "(Path,String,Object,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "setLastModifiedTime", "(Path,FileTime)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "setOwner", "(Path,UserPrincipal)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "setPosixFilePermissions", "(Path,Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "walkFileTree", "(Path,FileVisitor)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "walkFileTree", "(Path,Set,int,FileVisitor)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "write", "(Path,Iterable,Charset,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "write", "(Path,Iterable,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "write", "(Path,byte[],OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "writeString", "(Path,CharSequence,Charset,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Files", False, "writeString", "(Path,CharSequence,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "InvalidPathException", True, "InvalidPathException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "InvalidPathException", True, "InvalidPathException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "InvalidPathException", True, "InvalidPathException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "InvalidPathException", True, "InvalidPathException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "InvalidPathException", True, "getInput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "InvalidPathException", True, "getReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "LinkPermission", False, "LinkPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "LinkPermission", False, "LinkPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NoSuchFileException", True, "NoSuchFileException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NoSuchFileException", True, "NoSuchFileException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NoSuchFileException", True, "NoSuchFileException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NoSuchFileException", True, "NoSuchFileException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NotDirectoryException", True, "NotDirectoryException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NotLinkException", True, "NotLinkException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NotLinkException", True, "NotLinkException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NotLinkException", True, "NotLinkException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "NotLinkException", True, "NotLinkException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "Path", True, "resolveSibling", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "Path", True, "resolveSibling", "(Path)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio.file", "ProviderMismatchException", True, "ProviderMismatchException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio.file", "ProviderNotFoundException", True, "ProviderNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio.file", "FileStore", "getAttribute", "(String)", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "getBlockSize", "()", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "getFileStoreAttributeView", "(Class)", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "getTotalSpace", "()", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "getUnallocatedSpace", "()", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "getUsableSpace", "()", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "isReadOnly", "()", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "name", "()", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "supportsFileAttributeView", "(Class)", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "supportsFileAttributeView", "(String)", "summary", "df-generated"] + - ["java.nio.file", "FileStore", "type", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "getFileStores", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "getSeparator", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "getUserPrincipalLookupService", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "isOpen", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "isReadOnly", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "newWatchService", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "provider", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystem", "supportedFileAttributeViews", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystems", "getDefault", "()", "summary", "df-generated"] + - ["java.nio.file", "FileSystems", "getFileSystem", "(URI)", "summary", "df-generated"] + - ["java.nio.file", "Files", "copy", "(InputStream,Path,CopyOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "delete", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "deleteIfExists", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "getLastModifiedTime", "(Path,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "getOwner", "(Path,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "getPosixFilePermissions", "(Path,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "isDirectory", "(Path,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "isExecutable", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "isHidden", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "isReadable", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "isRegularFile", "(Path,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "isSameFile", "(Path,Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "isSymbolicLink", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "isWritable", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "lines", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "lines", "(Path,Charset)", "summary", "df-generated"] + - ["java.nio.file", "Files", "mismatch", "(Path,Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "newBufferedWriter", "(Path,Charset,OpenOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "newBufferedWriter", "(Path,OpenOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "notExists", "(Path,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file", "Files", "probeContentType", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "size", "(Path)", "summary", "df-generated"] + - ["java.nio.file", "Files", "walk", "(Path,int,FileVisitOption[])", "summary", "df-generated"] + - ["java.nio.file", "InvalidPathException", "getIndex", "()", "summary", "df-generated"] + - ["java.nio.file", "Path", "endsWith", "(String)", "summary", "df-generated"] + - ["java.nio.file", "Path", "startsWith", "(String)", "summary", "df-generated"] + - ["java.nio.file", "Watchable", "register", "(WatchService,WatchEvent$Kind[])", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.file.spi.model.yml b/java/ql/lib/ext/generated/java.nio.file.spi.model.yml new file mode 100644 index 000000000000..2e144b26abe5 --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.file.spi.model.yml @@ -0,0 +1,39 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.nio.file.spi", "FileSystemProvider", True, "newInputStream", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio.file.spi", "FileSystemProvider", "checkAccess", "(Path,AccessMode[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "copy", "(Path,Path,CopyOption[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "createDirectory", "(Path,FileAttribute[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "createLink", "(Path,Path)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "createSymbolicLink", "(Path,Path,FileAttribute[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "delete", "(Path)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "deleteIfExists", "(Path)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "getFileAttributeView", "(Path,Class,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "getFileStore", "(Path)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "getFileSystem", "(URI)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "getPath", "(URI)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "getScheme", "()", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "installedProviders", "()", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "isHidden", "(Path)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "isSameFile", "(Path,Path)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "move", "(Path,Path,CopyOption[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "newAsynchronousFileChannel", "(Path,Set,ExecutorService,FileAttribute[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "newByteChannel", "(Path,Set,FileAttribute[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "newDirectoryStream", "(Path,DirectoryStream$Filter)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "newFileChannel", "(Path,Set,FileAttribute[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "newFileSystem", "(Path,Map)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "newFileSystem", "(URI,Map)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "newOutputStream", "(Path,OpenOption[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "readAttributes", "(Path,Class,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "readAttributes", "(Path,String,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "readSymbolicLink", "(Path)", "summary", "df-generated"] + - ["java.nio.file.spi", "FileSystemProvider", "setAttribute", "(Path,String,Object,LinkOption[])", "summary", "df-generated"] + - ["java.nio.file.spi", "FileTypeDetector", "probeContentType", "(Path)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.model.yml b/java/ql/lib/ext/generated/java.nio.model.yml new file mode 100644 index 000000000000..bd9bc410cda6 --- /dev/null +++ b/java/ql/lib/ext/generated/java.nio.model.yml @@ -0,0 +1,234 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.nio", "Buffer", True, "array", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "Buffer", True, "clear", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "Buffer", True, "duplicate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "Buffer", True, "flip", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "Buffer", True, "limit", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "Buffer", True, "mark", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "Buffer", True, "position", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "Buffer", True, "reset", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "Buffer", True, "rewind", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "Buffer", True, "slice", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "Buffer", True, "slice", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "asCharBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "asDoubleBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "asFloatBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "asIntBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "asLongBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "asReadOnlyBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "asShortBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "compact", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "get", "(byte[],int,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "get", "(byte[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "get", "(int,byte[],int,int)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "get", "(int,byte[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "order", "(ByteOrder)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(ByteBuffer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(byte)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(byte[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(int,ByteBuffer,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(int,byte)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(int,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(int,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(int,byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(int,byte[],int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "ByteBuffer", True, "put", "(int,byte[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putChar", "(char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putChar", "(int,char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putDouble", "(double)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putDouble", "(int,double)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putFloat", "(float)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putFloat", "(int,float)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putInt", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putInt", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putLong", "(int,long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putLong", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putShort", "(int,short)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "putShort", "(short)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ByteBuffer", True, "wrap", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "asReadOnlyBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "compact", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "get", "(char[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "get", "(char[],int,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "get", "(char[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "get", "(int,char[])", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "get", "(int,char[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "get", "(int,char[],int,int)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "get", "(int,char[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(CharBuffer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(String,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(String,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(char[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(char[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(char[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(char[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(int,CharBuffer,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(int,char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(int,char[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(int,char[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(int,char[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(int,char[],int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "put", "(int,char[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "CharBuffer", True, "wrap", "(CharSequence)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "wrap", "(CharSequence,int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "wrap", "(char[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "CharBuffer", True, "wrap", "(char[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "asReadOnlyBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "compact", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "get", "(double[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "get", "(double[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "get", "(int,double[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "get", "(int,double[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(DoubleBuffer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(double)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(double[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(double[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(int,DoubleBuffer,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(int,double)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(int,double[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "DoubleBuffer", True, "put", "(int,double[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "asReadOnlyBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "FloatBuffer", True, "compact", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "get", "(float[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "FloatBuffer", True, "get", "(float[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "get", "(int,float[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "FloatBuffer", True, "get", "(int,float[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(FloatBuffer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(float)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(float[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(float[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(int,FloatBuffer,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(int,float)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(int,float[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "FloatBuffer", True, "put", "(int,float[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "asReadOnlyBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "IntBuffer", True, "compact", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "get", "(int,int[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "IntBuffer", True, "get", "(int,int[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "get", "(int[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(IntBuffer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(int,IntBuffer,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(int,int[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(int,int[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(int[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "IntBuffer", True, "put", "(int[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "asReadOnlyBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "LongBuffer", True, "compact", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "get", "(int,long[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "LongBuffer", True, "get", "(int,long[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "get", "(long[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "LongBuffer", True, "get", "(long[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(LongBuffer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(int,LongBuffer,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(int,long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(int,long[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(int,long[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(long[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "LongBuffer", True, "put", "(long[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "MappedByteBuffer", True, "force", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "MappedByteBuffer", True, "force", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "MappedByteBuffer", True, "load", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "asReadOnlyBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ShortBuffer", True, "compact", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "get", "(int,short[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ShortBuffer", True, "get", "(int,short[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "get", "(short[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ShortBuffer", True, "get", "(short[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(ShortBuffer)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(int,ShortBuffer,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(int,short)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(int,short[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(int,short[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(short)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(short[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.nio", "ShortBuffer", True, "put", "(short[],int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.nio", "Buffer", "arrayOffset", "()", "summary", "df-generated"] + - ["java.nio", "Buffer", "capacity", "()", "summary", "df-generated"] + - ["java.nio", "Buffer", "hasArray", "()", "summary", "df-generated"] + - ["java.nio", "Buffer", "hasRemaining", "()", "summary", "df-generated"] + - ["java.nio", "Buffer", "isDirect", "()", "summary", "df-generated"] + - ["java.nio", "Buffer", "isReadOnly", "()", "summary", "df-generated"] + - ["java.nio", "Buffer", "limit", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "alignedSlice", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "alignmentOffset", "(int,int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "allocateDirect", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "get", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "get", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getChar", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getChar", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getDouble", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getDouble", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getFloat", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getFloat", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getInt", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getInt", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getLong", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getLong", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getShort", "()", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "getShort", "(int)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "mismatch", "(ByteBuffer)", "summary", "df-generated"] + - ["java.nio", "ByteBuffer", "order", "()", "summary", "df-generated"] + - ["java.nio", "ByteOrder", "nativeOrder", "()", "summary", "df-generated"] + - ["java.nio", "CharBuffer", "allocate", "(int)", "summary", "df-generated"] + - ["java.nio", "CharBuffer", "get", "()", "summary", "df-generated"] + - ["java.nio", "CharBuffer", "get", "(int)", "summary", "df-generated"] + - ["java.nio", "CharBuffer", "mismatch", "(CharBuffer)", "summary", "df-generated"] + - ["java.nio", "CharBuffer", "order", "()", "summary", "df-generated"] + - ["java.nio", "DoubleBuffer", "allocate", "(int)", "summary", "df-generated"] + - ["java.nio", "DoubleBuffer", "get", "()", "summary", "df-generated"] + - ["java.nio", "DoubleBuffer", "get", "(int)", "summary", "df-generated"] + - ["java.nio", "DoubleBuffer", "mismatch", "(DoubleBuffer)", "summary", "df-generated"] + - ["java.nio", "DoubleBuffer", "order", "()", "summary", "df-generated"] + - ["java.nio", "DoubleBuffer", "wrap", "(double[])", "summary", "df-generated"] + - ["java.nio", "DoubleBuffer", "wrap", "(double[],int,int)", "summary", "df-generated"] + - ["java.nio", "FloatBuffer", "allocate", "(int)", "summary", "df-generated"] + - ["java.nio", "FloatBuffer", "get", "()", "summary", "df-generated"] + - ["java.nio", "FloatBuffer", "get", "(int)", "summary", "df-generated"] + - ["java.nio", "FloatBuffer", "mismatch", "(FloatBuffer)", "summary", "df-generated"] + - ["java.nio", "FloatBuffer", "order", "()", "summary", "df-generated"] + - ["java.nio", "FloatBuffer", "wrap", "(float[])", "summary", "df-generated"] + - ["java.nio", "FloatBuffer", "wrap", "(float[],int,int)", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "allocate", "(int)", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "get", "()", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "get", "(int)", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "get", "(int[])", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "mismatch", "(IntBuffer)", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "order", "()", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "wrap", "(int[])", "summary", "df-generated"] + - ["java.nio", "IntBuffer", "wrap", "(int[],int,int)", "summary", "df-generated"] + - ["java.nio", "LongBuffer", "allocate", "(int)", "summary", "df-generated"] + - ["java.nio", "LongBuffer", "get", "()", "summary", "df-generated"] + - ["java.nio", "LongBuffer", "get", "(int)", "summary", "df-generated"] + - ["java.nio", "LongBuffer", "mismatch", "(LongBuffer)", "summary", "df-generated"] + - ["java.nio", "LongBuffer", "order", "()", "summary", "df-generated"] + - ["java.nio", "LongBuffer", "wrap", "(long[])", "summary", "df-generated"] + - ["java.nio", "LongBuffer", "wrap", "(long[],int,int)", "summary", "df-generated"] + - ["java.nio", "MappedByteBuffer", "isLoaded", "()", "summary", "df-generated"] + - ["java.nio", "ShortBuffer", "allocate", "(int)", "summary", "df-generated"] + - ["java.nio", "ShortBuffer", "get", "()", "summary", "df-generated"] + - ["java.nio", "ShortBuffer", "get", "(int)", "summary", "df-generated"] + - ["java.nio", "ShortBuffer", "mismatch", "(ShortBuffer)", "summary", "df-generated"] + - ["java.nio", "ShortBuffer", "order", "()", "summary", "df-generated"] + - ["java.nio", "ShortBuffer", "wrap", "(short[])", "summary", "df-generated"] + - ["java.nio", "ShortBuffer", "wrap", "(short[],int,int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.rmi.dgc.model.yml b/java/ql/lib/ext/generated/java.rmi.dgc.model.yml new file mode 100644 index 000000000000..18040c242d04 --- /dev/null +++ b/java/ql/lib/ext/generated/java.rmi.dgc.model.yml @@ -0,0 +1,14 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.rmi.dgc", "Lease", False, "Lease", "(VMID,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.dgc", "Lease", False, "getVMID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.rmi.dgc", "Lease", "getValue", "()", "summary", "df-generated"] + - ["java.rmi.dgc", "VMID", "isUnique", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.rmi.model.yml b/java/ql/lib/ext/generated/java.rmi.model.yml new file mode 100644 index 000000000000..0eed9da9bab6 --- /dev/null +++ b/java/ql/lib/ext/generated/java.rmi.model.yml @@ -0,0 +1,56 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.rmi", "AccessException", True, "AccessException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "AccessException", True, "AccessException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "AccessException", True, "AccessException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "AlreadyBoundException", True, "AlreadyBoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ConnectException", True, "ConnectException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ConnectException", True, "ConnectException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ConnectException", True, "ConnectException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ConnectIOException", True, "ConnectIOException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ConnectIOException", True, "ConnectIOException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ConnectIOException", True, "ConnectIOException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "MarshalException", True, "MarshalException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "MarshalException", True, "MarshalException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "MarshalException", True, "MarshalException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "MarshalledObject", False, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi", "Naming", False, "list", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi", "NoSuchObjectException", True, "NoSuchObjectException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "NotBoundException", True, "NotBoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "RMISecurityException", True, "RMISecurityException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "RMISecurityException", True, "RMISecurityException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "RemoteException", True, "RemoteException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "RemoteException", True, "RemoteException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "RemoteException", True, "RemoteException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ServerError", True, "ServerError", "(String,Error)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ServerError", True, "ServerError", "(String,Error)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ServerException", True, "ServerException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ServerException", True, "ServerException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ServerException", True, "ServerException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ServerRuntimeException", True, "ServerRuntimeException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "ServerRuntimeException", True, "ServerRuntimeException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "StubNotFoundException", True, "StubNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "StubNotFoundException", True, "StubNotFoundException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "StubNotFoundException", True, "StubNotFoundException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnexpectedException", True, "UnexpectedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnexpectedException", True, "UnexpectedException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnexpectedException", True, "UnexpectedException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnknownHostException", True, "UnknownHostException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnknownHostException", True, "UnknownHostException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnknownHostException", True, "UnknownHostException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnmarshalException", True, "UnmarshalException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnmarshalException", True, "UnmarshalException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi", "UnmarshalException", True, "UnmarshalException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.rmi", "MarshalledObject", "MarshalledObject", "(Object)", "summary", "df-generated"] + - ["java.rmi", "Naming", "bind", "(String,Remote)", "summary", "df-generated"] + - ["java.rmi", "Naming", "lookup", "(String)", "summary", "df-generated"] + - ["java.rmi", "Naming", "rebind", "(String,Remote)", "summary", "df-generated"] + - ["java.rmi", "Naming", "unbind", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.rmi.registry.model.yml b/java/ql/lib/ext/generated/java.rmi.registry.model.yml new file mode 100644 index 000000000000..5594ea1dc328 --- /dev/null +++ b/java/ql/lib/ext/generated/java.rmi.registry.model.yml @@ -0,0 +1,13 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.rmi.registry", "LocateRegistry", "createRegistry", "(int)", "summary", "df-generated"] + - ["java.rmi.registry", "LocateRegistry", "createRegistry", "(int,RMIClientSocketFactory,RMIServerSocketFactory)", "summary", "df-generated"] + - ["java.rmi.registry", "LocateRegistry", "getRegistry", "()", "summary", "df-generated"] + - ["java.rmi.registry", "LocateRegistry", "getRegistry", "(String)", "summary", "df-generated"] + - ["java.rmi.registry", "LocateRegistry", "getRegistry", "(String,int)", "summary", "df-generated"] + - ["java.rmi.registry", "LocateRegistry", "getRegistry", "(String,int,RMIClientSocketFactory)", "summary", "df-generated"] + - ["java.rmi.registry", "LocateRegistry", "getRegistry", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.rmi.server.model.yml b/java/ql/lib/ext/generated/java.rmi.server.model.yml new file mode 100644 index 000000000000..4fefb5338287 --- /dev/null +++ b/java/ql/lib/ext/generated/java.rmi.server.model.yml @@ -0,0 +1,71 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.rmi.server", "ExportException", True, "ExportException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "ExportException", True, "ExportException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "ExportException", True, "ExportException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "LogStream", True, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "LogStream", True, "log", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "LogStream", True, "setOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "Operation", True, "Operation", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "Operation", True, "getOperation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", True, "getClassLoader", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", True, "getSecurityContext", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "RMIClassLoaderSpi", True, "getClassLoader", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "RMIClientSocketFactory", True, "createSocket", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "RemoteObject", True, "getRef", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "RemoteObject", True, "toStub", "(Remote)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.rmi.server", "RemoteObjectInvocationHandler", True, "RemoteObjectInvocationHandler", "(RemoteRef)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "ServerCloneException", True, "ServerCloneException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "ServerCloneException", True, "ServerCloneException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "ServerCloneException", True, "ServerCloneException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "ServerNotActiveException", True, "ServerNotActiveException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "SkeletonMismatchException", True, "SkeletonMismatchException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "SkeletonNotFoundException", True, "SkeletonNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "SkeletonNotFoundException", True, "SkeletonNotFoundException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "SkeletonNotFoundException", True, "SkeletonNotFoundException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "SocketSecurityException", True, "SocketSecurityException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "SocketSecurityException", True, "SocketSecurityException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "SocketSecurityException", True, "SocketSecurityException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.rmi.server", "UnicastRemoteObject", True, "exportObject", "(Remote,int,ObjectInputFilter)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["java.rmi.server", "UnicastRemoteObject", True, "exportObject", "(Remote,int,RMIClientSocketFactory,RMIServerSocketFactory,ObjectInputFilter)", "", "Argument[4]", "Argument[0]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.rmi.server", "LogStream", "getDefaultStream", "()", "summary", "df-generated"] + - ["java.rmi.server", "LogStream", "parseLevel", "(String)", "summary", "df-generated"] + - ["java.rmi.server", "LogStream", "setDefaultStream", "(PrintStream)", "summary", "df-generated"] + - ["java.rmi.server", "ObjID", "ObjID", "(int)", "summary", "df-generated"] + - ["java.rmi.server", "ObjID", "read", "(ObjectInput)", "summary", "df-generated"] + - ["java.rmi.server", "ObjID", "write", "(ObjectOutput)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", "getClassAnnotation", "(Class)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", "getDefaultProviderInstance", "()", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", "loadClass", "(String)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", "loadClass", "(String,String)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", "loadClass", "(String,String,ClassLoader)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", "loadClass", "(URL,String)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoader", "loadProxyClass", "(String,String[],ClassLoader)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoaderSpi", "getClassAnnotation", "(Class)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoaderSpi", "loadClass", "(String,String,ClassLoader)", "summary", "df-generated"] + - ["java.rmi.server", "RMIClassLoaderSpi", "loadProxyClass", "(String,String[],ClassLoader)", "summary", "df-generated"] + - ["java.rmi.server", "RMIServerSocketFactory", "createServerSocket", "(int)", "summary", "df-generated"] + - ["java.rmi.server", "RMISocketFactory", "getDefaultSocketFactory", "()", "summary", "df-generated"] + - ["java.rmi.server", "RMISocketFactory", "getFailureHandler", "()", "summary", "df-generated"] + - ["java.rmi.server", "RMISocketFactory", "getSocketFactory", "()", "summary", "df-generated"] + - ["java.rmi.server", "RMISocketFactory", "setFailureHandler", "(RMIFailureHandler)", "summary", "df-generated"] + - ["java.rmi.server", "RMISocketFactory", "setSocketFactory", "(RMISocketFactory)", "summary", "df-generated"] + - ["java.rmi.server", "RemoteServer", "getClientHost", "()", "summary", "df-generated"] + - ["java.rmi.server", "RemoteServer", "getLog", "()", "summary", "df-generated"] + - ["java.rmi.server", "RemoteServer", "setLog", "(OutputStream)", "summary", "df-generated"] + - ["java.rmi.server", "UID", "UID", "(short)", "summary", "df-generated"] + - ["java.rmi.server", "UID", "read", "(DataInput)", "summary", "df-generated"] + - ["java.rmi.server", "UID", "write", "(DataOutput)", "summary", "df-generated"] + - ["java.rmi.server", "UnicastRemoteObject", "exportObject", "(Remote)", "summary", "df-generated"] + - ["java.rmi.server", "UnicastRemoteObject", "exportObject", "(Remote,int)", "summary", "df-generated"] + - ["java.rmi.server", "UnicastRemoteObject", "exportObject", "(Remote,int,RMIClientSocketFactory,RMIServerSocketFactory)", "summary", "df-generated"] + - ["java.rmi.server", "UnicastRemoteObject", "unexportObject", "(Remote,boolean)", "summary", "df-generated"] + - ["java.rmi.server", "Unreferenced", "unreferenced", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.security.cert.model.yml b/java/ql/lib/ext/generated/java.security.cert.model.yml new file mode 100644 index 000000000000..4d98781cac20 --- /dev/null +++ b/java/ql/lib/ext/generated/java.security.cert.model.yml @@ -0,0 +1,326 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.security.cert", "CRL", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CRLException", True, "CRLException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CRLException", True, "CRLException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CRLException", True, "CRLException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CRLException", True, "CRLException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPath", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilder", True, "build", "(CertPathParameters)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilder", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilder", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilder", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilder", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilder", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilder", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilderException", True, "CertPathBuilderException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilderException", True, "CertPathBuilderException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilderException", True, "CertPathBuilderException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilderException", True, "CertPathBuilderException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathBuilderResult", True, "getCertPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidator", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidator", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidator", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidator", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidator", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidator", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidator", True, "validate", "(CertPath,CertPathParameters)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable,CertPath,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable,CertPath,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable,CertPath,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable,CertPath,int,CertPathValidatorException$Reason)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable,CertPath,int,CertPathValidatorException$Reason)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable,CertPath,int,CertPathValidatorException$Reason)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(String,Throwable,CertPath,int,CertPathValidatorException$Reason)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "getCertPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", True, "getReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getCRLs", "(CRLSelector)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getCertStoreParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getCertificates", "(CertSelector)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,Provider)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,Provider)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStore", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertStoreException", True, "CertStoreException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertStoreException", True, "CertStoreException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertStoreException", True, "CertStoreException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertStoreException", True, "CertStoreException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "Certificate", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateEncodingException", True, "CertificateEncodingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateEncodingException", True, "CertificateEncodingException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateEncodingException", True, "CertificateEncodingException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateEncodingException", True, "CertificateEncodingException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateException", True, "CertificateException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateException", True, "CertificateException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateException", True, "CertificateException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateException", True, "CertificateException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateExpiredException", True, "CertificateExpiredException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "generateCRL", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "generateCertPath", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "generateCertificate", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateFactory", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateNotYetValidException", True, "CertificateNotYetValidException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateParsingException", True, "CertificateParsingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateParsingException", True, "CertificateParsingException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateParsingException", True, "CertificateParsingException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateParsingException", True, "CertificateParsingException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateRevokedException", True, "CertificateRevokedException", "(Date,CRLReason,X500Principal,Map)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateRevokedException", True, "CertificateRevokedException", "(Date,CRLReason,X500Principal,Map)", "", "Argument[3].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CertificateRevokedException", True, "getAuthorityName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateRevokedException", True, "getExtensions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CertificateRevokedException", True, "getRevocationDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "CollectionCertStoreParameters", True, "CollectionCertStoreParameters", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "CollectionCertStoreParameters", True, "getCollection", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "LDAPCertStoreParameters", True, "LDAPCertStoreParameters", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "LDAPCertStoreParameters", True, "LDAPCertStoreParameters", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "LDAPCertStoreParameters", True, "getServerName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXBuilderParameters", True, "PKIXBuilderParameters", "(KeyStore,CertSelector)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXBuilderParameters", True, "PKIXBuilderParameters", "(Set,CertSelector)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXBuilderParameters", True, "PKIXBuilderParameters", "(Set,CertSelector)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathBuilderResult", True, "PKIXCertPathBuilderResult", "(CertPath,TrustAnchor,PolicyNode,PublicKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathBuilderResult", True, "PKIXCertPathBuilderResult", "(CertPath,TrustAnchor,PolicyNode,PublicKey)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathBuilderResult", True, "PKIXCertPathBuilderResult", "(CertPath,TrustAnchor,PolicyNode,PublicKey)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathBuilderResult", True, "PKIXCertPathBuilderResult", "(CertPath,TrustAnchor,PolicyNode,PublicKey)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathValidatorResult", True, "PKIXCertPathValidatorResult", "(TrustAnchor,PolicyNode,PublicKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathValidatorResult", True, "PKIXCertPathValidatorResult", "(TrustAnchor,PolicyNode,PublicKey)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathValidatorResult", True, "PKIXCertPathValidatorResult", "(TrustAnchor,PolicyNode,PublicKey)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathValidatorResult", True, "getPolicyTree", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathValidatorResult", True, "getPublicKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXCertPathValidatorResult", True, "getTrustAnchor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "PKIXParameters", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "addCertPathChecker", "(PKIXCertPathChecker)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "addCertStore", "(CertStore)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "getCertPathCheckers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "getCertStores", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "getDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "getInitialPolicies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "getSigProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "getTargetCertConstraints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "getTrustAnchors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "setCertPathCheckers", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "setCertStores", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "setDate", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "setInitialPolicies", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "setSigProvider", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "setTargetCertConstraints", "(CertSelector)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXParameters", True, "setTrustAnchors", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "getOcspExtensions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "getOcspResponder", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "getOcspResponderCert", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "getOcspResponses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "getOptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "setOcspExtensions", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "setOcspResponder", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "setOcspResponderCert", "(X509Certificate)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "setOcspResponses", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", True, "setOptions", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PolicyQualifierInfo", True, "PolicyQualifierInfo", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "PolicyQualifierInfo", True, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PolicyQualifierInfo", True, "getPolicyQualifier", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "PolicyQualifierInfo", True, "getPolicyQualifierId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(String,PublicKey,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(String,PublicKey,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(String,PublicKey,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(X500Principal,PublicKey,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(X500Principal,PublicKey,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(X500Principal,PublicKey,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(X509Certificate,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "TrustAnchor", "(X509Certificate,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "getCA", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "getCAName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "getCAPublicKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "getNameConstraints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "TrustAnchor", True, "getTrustedCert", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "URICertStoreParameters", False, "URICertStoreParameters", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "URICertStoreParameters", False, "getURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CRL", True, "getIssuerX500Principal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CRL", True, "getRevokedCertificate", "(X509Certificate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "addIssuer", "(X500Principal)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "addIssuerName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "addIssuerName", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "getCertificateChecking", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "getDateAndTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "getIssuerNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "getIssuers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "setCertificateChecking", "(X509Certificate)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "setIssuerNames", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CRLSelector", True, "setIssuers", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getAuthorityKeyIdentifier", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getCertificate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getCertificateValid", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getExtendedKeyUsage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getIssuer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getNameConstraints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getPathToNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getPolicy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getPrivateKeyValid", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getSubject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getSubjectAlternativeNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getSubjectKeyIdentifier", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getSubjectPublicKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "getSubjectPublicKeyAlgID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setAuthorityKeyIdentifier", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setCertificate", "(X509Certificate)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setCertificateValid", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setExtendedKeyUsage", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setIssuer", "(X500Principal)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setNameConstraints", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setPolicy", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setPrivateKeyValid", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setSubject", "(X500Principal)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setSubjectKeyIdentifier", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setSubjectPublicKey", "(PublicKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setSubjectPublicKey", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509CertSelector", True, "setSubjectPublicKeyAlgID", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.cert", "X509Certificate", True, "getIssuerX500Principal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.cert", "X509Certificate", True, "getSubjectX500Principal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.security.cert", "CRL", "isRevoked", "(Certificate)", "summary", "df-generated"] + - ["java.security.cert", "CRLSelector", "match", "(CRL)", "summary", "df-generated"] + - ["java.security.cert", "CertPath", "getCertificates", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPath", "getEncoded", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPath", "getEncoded", "(String)", "summary", "df-generated"] + - ["java.security.cert", "CertPath", "getEncodings", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathBuilder", "getDefaultType", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathBuilder", "getRevocationChecker", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathBuilderSpi", "engineBuild", "(CertPathParameters)", "summary", "df-generated"] + - ["java.security.cert", "CertPathBuilderSpi", "engineGetRevocationChecker", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathChecker", "check", "(Certificate)", "summary", "df-generated"] + - ["java.security.cert", "CertPathChecker", "init", "(boolean)", "summary", "df-generated"] + - ["java.security.cert", "CertPathChecker", "isForwardCheckingSupported", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathValidator", "getDefaultType", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathValidator", "getRevocationChecker", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathValidatorException", "getIndex", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathValidatorSpi", "engineGetRevocationChecker", "()", "summary", "df-generated"] + - ["java.security.cert", "CertPathValidatorSpi", "engineValidate", "(CertPath,CertPathParameters)", "summary", "df-generated"] + - ["java.security.cert", "CertSelector", "match", "(Certificate)", "summary", "df-generated"] + - ["java.security.cert", "CertStore", "getDefaultType", "()", "summary", "df-generated"] + - ["java.security.cert", "CertStoreSpi", "CertStoreSpi", "(CertStoreParameters)", "summary", "df-generated"] + - ["java.security.cert", "CertStoreSpi", "engineGetCRLs", "(CRLSelector)", "summary", "df-generated"] + - ["java.security.cert", "CertStoreSpi", "engineGetCertificates", "(CertSelector)", "summary", "df-generated"] + - ["java.security.cert", "Certificate", "getEncoded", "()", "summary", "df-generated"] + - ["java.security.cert", "Certificate", "getPublicKey", "()", "summary", "df-generated"] + - ["java.security.cert", "Certificate", "verify", "(PublicKey)", "summary", "df-generated"] + - ["java.security.cert", "Certificate", "verify", "(PublicKey,Provider)", "summary", "df-generated"] + - ["java.security.cert", "Certificate", "verify", "(PublicKey,String)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactory", "generateCRLs", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactory", "generateCertPath", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactory", "generateCertPath", "(InputStream,String)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactory", "generateCertificates", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactory", "getCertPathEncodings", "()", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCRL", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCRLs", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCertPath", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCertPath", "(InputStream,String)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCertPath", "(List)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCertificate", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCertificates", "(InputStream)", "summary", "df-generated"] + - ["java.security.cert", "CertificateFactorySpi", "engineGetCertPathEncodings", "()", "summary", "df-generated"] + - ["java.security.cert", "CertificateRevokedException", "getInvalidityDate", "()", "summary", "df-generated"] + - ["java.security.cert", "CertificateRevokedException", "getRevocationReason", "()", "summary", "df-generated"] + - ["java.security.cert", "LDAPCertStoreParameters", "getPort", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXBuilderParameters", "getMaxPathLength", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXBuilderParameters", "setMaxPathLength", "(int)", "summary", "df-generated"] + - ["java.security.cert", "PKIXCertPathChecker", "check", "(Certificate,Collection)", "summary", "df-generated"] + - ["java.security.cert", "PKIXCertPathChecker", "getSupportedExtensions", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "PKIXParameters", "(KeyStore)", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "getPolicyQualifiersRejected", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "isAnyPolicyInhibited", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "isExplicitPolicyRequired", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "isPolicyMappingInhibited", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "isRevocationEnabled", "()", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "setAnyPolicyInhibited", "(boolean)", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "setExplicitPolicyRequired", "(boolean)", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "setPolicyMappingInhibited", "(boolean)", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "setPolicyQualifiersRejected", "(boolean)", "summary", "df-generated"] + - ["java.security.cert", "PKIXParameters", "setRevocationEnabled", "(boolean)", "summary", "df-generated"] + - ["java.security.cert", "PKIXRevocationChecker", "getSoftFailExceptions", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getEncoded", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getIssuerDN", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getNextUpdate", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getRevokedCertificate", "(BigInteger)", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getRevokedCertificates", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getSigAlgName", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getSigAlgOID", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getSigAlgParams", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getSignature", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getTBSCertList", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getThisUpdate", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "getVersion", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "verify", "(PublicKey)", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "verify", "(PublicKey,Provider)", "summary", "df-generated"] + - ["java.security.cert", "X509CRL", "verify", "(PublicKey,String)", "summary", "df-generated"] + - ["java.security.cert", "X509CRLEntry", "getCertificateIssuer", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLEntry", "getEncoded", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLEntry", "getRevocationDate", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLEntry", "getRevocationReason", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLEntry", "getSerialNumber", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLEntry", "hasExtensions", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLSelector", "getMaxCRL", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLSelector", "getMinCRL", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CRLSelector", "setDateAndTime", "(Date)", "summary", "df-generated"] + - ["java.security.cert", "X509CRLSelector", "setMaxCRLNumber", "(BigInteger)", "summary", "df-generated"] + - ["java.security.cert", "X509CRLSelector", "setMinCRLNumber", "(BigInteger)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "addPathToName", "(int,String)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "addPathToName", "(int,byte[])", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "addSubjectAlternativeName", "(int,String)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "addSubjectAlternativeName", "(int,byte[])", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getBasicConstraints", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getIssuerAsBytes", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getIssuerAsString", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getKeyUsage", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getMatchAllSubjectAltNames", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getSerialNumber", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getSubjectAsBytes", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "getSubjectAsString", "()", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setBasicConstraints", "(int)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setIssuer", "(String)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setIssuer", "(byte[])", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setKeyUsage", "(boolean[])", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setMatchAllSubjectAltNames", "(boolean)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setPathToNames", "(Collection)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setSerialNumber", "(BigInteger)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setSubject", "(String)", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setSubject", "(byte[])", "summary", "df-generated"] + - ["java.security.cert", "X509CertSelector", "setSubjectAlternativeNames", "(Collection)", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "checkValidity", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "checkValidity", "(Date)", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getBasicConstraints", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getExtendedKeyUsage", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getIssuerAlternativeNames", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getIssuerDN", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getIssuerUniqueID", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getKeyUsage", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getNotAfter", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getNotBefore", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSerialNumber", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSigAlgName", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSigAlgOID", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSigAlgParams", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSignature", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSubjectAlternativeNames", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSubjectDN", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getSubjectUniqueID", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getTBSCertificate", "()", "summary", "df-generated"] + - ["java.security.cert", "X509Certificate", "getVersion", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.security.interfaces.model.yml b/java/ql/lib/ext/generated/java.security.interfaces.model.yml new file mode 100644 index 000000000000..cced4d3efc9c --- /dev/null +++ b/java/ql/lib/ext/generated/java.security.interfaces.model.yml @@ -0,0 +1,10 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.security.interfaces", "DSAParams", "getG", "()", "summary", "df-generated"] + - ["java.security.interfaces", "DSAParams", "getP", "()", "summary", "df-generated"] + - ["java.security.interfaces", "DSAParams", "getQ", "()", "summary", "df-generated"] + - ["java.security.interfaces", "RSAKey", "getParams", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.security.model.yml b/java/ql/lib/ext/generated/java.security.model.yml new file mode 100644 index 000000000000..d170abb8188d --- /dev/null +++ b/java/ql/lib/ext/generated/java.security.model.yml @@ -0,0 +1,462 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.security", "AccessControlContext", False, "AccessControlContext", "(AccessControlContext,DomainCombiner)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AccessControlContext", False, "AccessControlContext", "(AccessControlContext,DomainCombiner)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AccessControlContext", False, "AccessControlContext", "(ProtectionDomain[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AccessControlContext", False, "getDomainCombiner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessControlException", True, "AccessControlException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AccessControlException", True, "AccessControlException", "(String,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AccessControlException", True, "AccessControlException", "(String,Permission)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AccessControlException", True, "getPermission", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivileged", "(PrivilegedAction)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivileged", "(PrivilegedAction,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivileged", "(PrivilegedAction,AccessControlContext,Permission[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivileged", "(PrivilegedExceptionAction)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivileged", "(PrivilegedExceptionAction,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivileged", "(PrivilegedExceptionAction,AccessControlContext,Permission[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivilegedWithCombiner", "(PrivilegedAction)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivilegedWithCombiner", "(PrivilegedAction,AccessControlContext,Permission[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivilegedWithCombiner", "(PrivilegedExceptionAction)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AccessController", False, "doPrivilegedWithCombiner", "(PrivilegedExceptionAction,AccessControlContext,Permission[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "init", "(AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", True, "init", "(int,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getEncoded", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getParameterSpec", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "init", "(AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "init", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "AlgorithmParameters", True, "init", "(byte[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "BasicPermission", True, "BasicPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "BasicPermission", True, "BasicPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "CodeSigner", False, "CodeSigner", "(CertPath,Timestamp)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "CodeSigner", False, "CodeSigner", "(CertPath,Timestamp)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "CodeSigner", False, "getSignerCertPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "CodeSigner", False, "getTimestamp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "CodeSource", True, "CodeSource", "(URL,Certificate[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "CodeSource", True, "CodeSource", "(URL,Certificate[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "CodeSource", True, "CodeSource", "(URL,CodeSigner[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "CodeSource", True, "CodeSource", "(URL,CodeSigner[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "CodeSource", True, "getCertificates", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "CodeSource", True, "getCodeSigners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "CodeSource", True, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DigestException", True, "DigestException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestException", True, "DigestException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestException", True, "DigestException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestException", True, "DigestException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestInputStream", True, "DigestInputStream", "(InputStream,MessageDigest)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestInputStream", True, "DigestInputStream", "(InputStream,MessageDigest)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestInputStream", True, "getMessageDigest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DigestInputStream", True, "setMessageDigest", "(MessageDigest)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestOutputStream", True, "DigestOutputStream", "(OutputStream,MessageDigest)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestOutputStream", True, "DigestOutputStream", "(OutputStream,MessageDigest)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DigestOutputStream", True, "getMessageDigest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DigestOutputStream", True, "setMessageDigest", "(MessageDigest)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DomainCombiner", True, "combine", "(ProtectionDomain[],ProtectionDomain[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DomainCombiner", True, "combine", "(ProtectionDomain[],ProtectionDomain[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DomainCombiner", True, "combine", "(ProtectionDomain[],ProtectionDomain[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DomainCombiner", True, "combine", "(ProtectionDomain[],ProtectionDomain[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DomainLoadStoreParameter", False, "DomainLoadStoreParameter", "(URI,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DomainLoadStoreParameter", False, "DomainLoadStoreParameter", "(URI,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security", "DomainLoadStoreParameter", False, "getConfiguration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DomainLoadStoreParameter", False, "getProtectionParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DrbgParameters$Instantiation", False, "getPersonalizationString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DrbgParameters$NextBytes", False, "getAdditionalInput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DrbgParameters$Reseed", False, "getAdditionalInput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DrbgParameters", True, "instantiation", "(int,DrbgParameters$Capability,byte[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DrbgParameters", True, "nextBytes", "(int,boolean,byte[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "DrbgParameters", True, "reseed", "(boolean,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "GeneralSecurityException", True, "GeneralSecurityException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "GeneralSecurityException", True, "GeneralSecurityException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "GeneralSecurityException", True, "GeneralSecurityException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "GeneralSecurityException", True, "GeneralSecurityException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "GuardedObject", True, "GuardedObject", "(Object,Guard)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "GuardedObject", True, "GuardedObject", "(Object,Guard)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "GuardedObject", True, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Identity", True, "Identity", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Identity", True, "Identity", "(String,IdentityScope)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Identity", True, "Identity", "(String,IdentityScope)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Identity", True, "addCertificate", "(Certificate)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Identity", True, "certificates", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Identity", True, "getInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Identity", True, "getPublicKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Identity", True, "getScope", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Identity", True, "setInfo", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Identity", True, "setPublicKey", "(PublicKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "IdentityScope", True, "IdentityScope", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "IdentityScope", True, "IdentityScope", "(String,IdentityScope)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "IdentityScope", True, "IdentityScope", "(String,IdentityScope)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidAlgorithmParameterException", True, "InvalidAlgorithmParameterException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidAlgorithmParameterException", True, "InvalidAlgorithmParameterException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidAlgorithmParameterException", True, "InvalidAlgorithmParameterException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidAlgorithmParameterException", True, "InvalidAlgorithmParameterException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidKeyException", True, "InvalidKeyException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidKeyException", True, "InvalidKeyException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidKeyException", True, "InvalidKeyException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidKeyException", True, "InvalidKeyException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "InvalidParameterException", True, "InvalidParameterException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Key", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Key", True, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyException", True, "KeyException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyException", True, "KeyException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyException", True, "KeyException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyException", True, "KeyException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "generatePrivate", "(KeySpec)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "generatePublic", "(KeySpec)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "getKeySpec", "(Key,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyFactory", True, "translateKey", "(Key)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyManagementException", True, "KeyManagementException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyManagementException", True, "KeyManagementException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyManagementException", True, "KeyManagementException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyManagementException", True, "KeyManagementException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyPair", False, "KeyPair", "(PublicKey,PrivateKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyPair", False, "KeyPair", "(PublicKey,PrivateKey)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyPair", False, "getPrivate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPair", False, "getPublic", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "genKeyPair", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGenerator", True, "initialize", "(AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyPairGeneratorSpi", True, "generateKeyPair", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyPairGeneratorSpi", True, "initialize", "(AlgorithmParameterSpec,SecureRandom)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyPairGeneratorSpi", True, "initialize", "(AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyPairGeneratorSpi", True, "initialize", "(int,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyRep", True, "KeyRep", "(KeyRep$Type,String,String,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyRep", True, "KeyRep", "(KeyRep$Type,String,String,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyRep", True, "KeyRep", "(KeyRep$Type,String,String,byte[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "getKeyStore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "getProtectionParameter", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "newInstance", "(File,KeyStore$ProtectionParameter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "newInstance", "(File,KeyStore$ProtectionParameter)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "newInstance", "(String,Provider,File,KeyStore$ProtectionParameter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "newInstance", "(String,Provider,File,KeyStore$ProtectionParameter)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "newInstance", "(String,Provider,File,KeyStore$ProtectionParameter)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Builder", True, "newInstance", "(String,Provider,File,KeyStore$ProtectionParameter)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$CallbackHandlerProtection", True, "CallbackHandlerProtection", "(CallbackHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$CallbackHandlerProtection", True, "getCallbackHandler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Entry$Attribute", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Entry$Attribute", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$Entry", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$LoadStoreParameter", True, "getProtectionParameter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$PasswordProtection", True, "PasswordProtection", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PasswordProtection", True, "PasswordProtection", "(char[],String,AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PasswordProtection", True, "PasswordProtection", "(char[],String,AlgorithmParameterSpec)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PasswordProtection", True, "PasswordProtection", "(char[],String,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PasswordProtection", True, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$PasswordProtection", True, "getProtectionAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$PasswordProtection", True, "getProtectionParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "PrivateKeyEntry", "(PrivateKey,Certificate[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "PrivateKeyEntry", "(PrivateKey,Certificate[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "PrivateKeyEntry", "(PrivateKey,Certificate[],Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "PrivateKeyEntry", "(PrivateKey,Certificate[],Set)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "PrivateKeyEntry", "(PrivateKey,Certificate[],Set)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "getCertificate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "getCertificateChain", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$PrivateKeyEntry", False, "getPrivateKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$SecretKeyEntry", False, "SecretKeyEntry", "(SecretKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$SecretKeyEntry", False, "SecretKeyEntry", "(SecretKey,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$SecretKeyEntry", False, "SecretKeyEntry", "(SecretKey,Set)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$SecretKeyEntry", False, "getSecretKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore$TrustedCertificateEntry", False, "TrustedCertificateEntry", "(Certificate)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$TrustedCertificateEntry", False, "TrustedCertificateEntry", "(Certificate,Set)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$TrustedCertificateEntry", False, "TrustedCertificateEntry", "(Certificate,Set)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStore$TrustedCertificateEntry", False, "getTrustedCertificate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "aliases", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "getCertificateAlias", "(Certificate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStore", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStoreException", True, "KeyStoreException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStoreException", True, "KeyStoreException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStoreException", True, "KeyStoreException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStoreException", True, "KeyStoreException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "KeyStoreSpi", True, "engineGetEntry", "(String,KeyStore$ProtectionParameter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "KeyStoreSpi", True, "engineSetEntry", "(String,KeyStore$Entry,KeyStore$ProtectionParameter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "digest", "(byte[],int,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "update", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "update", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "MessageDigest", True, "update", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "NoSuchAlgorithmException", True, "NoSuchAlgorithmException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "NoSuchAlgorithmException", True, "NoSuchAlgorithmException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "NoSuchAlgorithmException", True, "NoSuchAlgorithmException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "NoSuchAlgorithmException", True, "NoSuchAlgorithmException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "NoSuchProviderException", True, "NoSuchProviderException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "PKCS12Attribute", False, "PKCS12Attribute", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "PKCS12Attribute", False, "PKCS12Attribute", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "PKCS12Attribute", False, "PKCS12Attribute", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "PKCS12Attribute", False, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Permission", True, "Permission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Permission", True, "getActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Permission", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "PermissionCollection", True, "add", "(Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "PermissionCollection", True, "elements", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getInstance", "(String,Policy$Parameters)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getInstance", "(String,Policy$Parameters)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getInstance", "(String,Policy$Parameters,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getInstance", "(String,Policy$Parameters,Provider)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getInstance", "(String,Policy$Parameters,Provider)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getInstance", "(String,Policy$Parameters,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getInstance", "(String,Policy$Parameters,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Policy", True, "implies", "(ProtectionDomain,Permission)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Principal", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "PrivilegedActionException", True, "PrivilegedActionException", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "PrivilegedActionException", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "ProtectionDomain", "(CodeSource,PermissionCollection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "ProtectionDomain", "(CodeSource,PermissionCollection)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "ProtectionDomain", "(CodeSource,PermissionCollection,ClassLoader,Principal[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "ProtectionDomain", "(CodeSource,PermissionCollection,ClassLoader,Principal[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "ProtectionDomain", "(CodeSource,PermissionCollection,ClassLoader,Principal[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "ProtectionDomain", "(CodeSource,PermissionCollection,ClassLoader,Principal[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "getClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "getCodeSource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "getPermissions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "ProtectionDomain", True, "getPrincipals", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "Service", "(Provider,String,String,String,List,Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "Service", "(Provider,String,String,String,List,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "Service", "(Provider,String,String,String,List,Map)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "Service", "(Provider,String,String,String,List,Map)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "Service", "(Provider,String,String,String,List,Map)", "", "Argument[4].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "Service", "(Provider,String,String,String,List,Map)", "", "Argument[5].Element", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "getAttribute", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider$Service", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider", True, "getInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider", True, "getService", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider", True, "getServices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Provider", True, "getVersionStr", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "ProviderException", True, "ProviderException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProviderException", True, "ProviderException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProviderException", True, "ProviderException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "ProviderException", True, "ProviderException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "SecureRandom", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String,SecureRandomParameters)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String,SecureRandomParameters,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String,SecureRandomParameters,Provider)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String,SecureRandomParameters,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SecureRandom", True, "setSeed", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SecurityPermission", False, "SecurityPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SecurityPermission", False, "SecurityPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signature", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signature", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signature", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signature", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signature", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signature", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signature", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signature", True, "initSign", "(PrivateKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signature", True, "initSign", "(PrivateKey,SecureRandom)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signature", True, "initSign", "(PrivateKey,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signature", True, "initVerify", "(PublicKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signature", True, "setParameter", "(AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signature", True, "update", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signature", True, "update", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SignatureException", True, "SignatureException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SignatureException", True, "SignatureException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SignatureException", True, "SignatureException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SignatureException", True, "SignatureException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "SignedObject", "(Serializable,PrivateKey,Signature)", "", "Argument[0]", "Argument[2]", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "SignedObject", "(Serializable,PrivateKey,Signature)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "SignedObject", "(Serializable,PrivateKey,Signature)", "", "Argument[1]", "Argument[2]", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "SignedObject", "(Serializable,PrivateKey,Signature)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "SignedObject", "(Serializable,PrivateKey,Signature)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "getSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "verify", "(PublicKey,Signature)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["java.security", "SignedObject", False, "verify", "(PublicKey,Signature)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.security", "Signer", True, "Signer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signer", True, "Signer", "(String,IdentityScope)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signer", True, "Signer", "(String,IdentityScope)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Signer", True, "getPrivateKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "Signer", True, "setKeyPair", "(KeyPair)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Timestamp", False, "Timestamp", "(Date,CertPath)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "Timestamp", False, "getSignerCertPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "URIParameter", True, "URIParameter", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "URIParameter", True, "getURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "UnrecoverableEntryException", True, "UnrecoverableEntryException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "UnrecoverableKeyException", True, "UnrecoverableKeyException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "UnresolvedPermission", "(String,String,String,Certificate[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "UnresolvedPermission", "(String,String,String,Certificate[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "UnresolvedPermission", "(String,String,String,Certificate[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "UnresolvedPermission", "(String,String,String,Certificate[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "getUnresolvedActions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "getUnresolvedCerts", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "getUnresolvedName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security", "UnresolvedPermission", False, "getUnresolvedType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.security", "AccessControlContext", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["java.security", "AccessController", "checkPermission", "(Permission)", "summary", "df-generated"] + - ["java.security", "AccessController", "getContext", "()", "summary", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", "generateParameters", "()", "summary", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", "init", "(AlgorithmParameterSpec)", "summary", "df-generated"] + - ["java.security", "AlgorithmParameterGenerator", "init", "(int)", "summary", "df-generated"] + - ["java.security", "AllPermission", "AllPermission", "(String,String)", "summary", "df-generated"] + - ["java.security", "AuthProvider", "login", "(Subject,CallbackHandler)", "summary", "df-generated"] + - ["java.security", "AuthProvider", "logout", "()", "summary", "df-generated"] + - ["java.security", "AuthProvider", "setCallbackHandler", "(CallbackHandler)", "summary", "df-generated"] + - ["java.security", "CodeSource", "implies", "(CodeSource)", "summary", "df-generated"] + - ["java.security", "DigestInputStream", "on", "(boolean)", "summary", "df-generated"] + - ["java.security", "DigestOutputStream", "on", "(boolean)", "summary", "df-generated"] + - ["java.security", "DrbgParameters$Capability", "supportsPredictionResistance", "()", "summary", "df-generated"] + - ["java.security", "DrbgParameters$Capability", "supportsReseeding", "()", "summary", "df-generated"] + - ["java.security", "DrbgParameters$Instantiation", "getCapability", "()", "summary", "df-generated"] + - ["java.security", "DrbgParameters$Instantiation", "getStrength", "()", "summary", "df-generated"] + - ["java.security", "DrbgParameters$NextBytes", "getPredictionResistance", "()", "summary", "df-generated"] + - ["java.security", "DrbgParameters$NextBytes", "getStrength", "()", "summary", "df-generated"] + - ["java.security", "DrbgParameters$Reseed", "getPredictionResistance", "()", "summary", "df-generated"] + - ["java.security", "Guard", "checkGuard", "(Object)", "summary", "df-generated"] + - ["java.security", "Identity", "removeCertificate", "(Certificate)", "summary", "df-generated"] + - ["java.security", "IdentityScope", "addIdentity", "(Identity)", "summary", "df-generated"] + - ["java.security", "IdentityScope", "getIdentity", "(Principal)", "summary", "df-generated"] + - ["java.security", "IdentityScope", "getIdentity", "(PublicKey)", "summary", "df-generated"] + - ["java.security", "IdentityScope", "getIdentity", "(String)", "summary", "df-generated"] + - ["java.security", "IdentityScope", "getSystemScope", "()", "summary", "df-generated"] + - ["java.security", "IdentityScope", "identities", "()", "summary", "df-generated"] + - ["java.security", "IdentityScope", "removeIdentity", "(Identity)", "summary", "df-generated"] + - ["java.security", "IdentityScope", "size", "()", "summary", "df-generated"] + - ["java.security", "Key", "getFormat", "()", "summary", "df-generated"] + - ["java.security", "KeyPairGenerator", "initialize", "(int)", "summary", "df-generated"] + - ["java.security", "KeyStore$Builder", "newInstance", "(KeyStore,KeyStore$ProtectionParameter)", "summary", "df-generated"] + - ["java.security", "KeyStore$Builder", "newInstance", "(String,Provider,KeyStore$ProtectionParameter)", "summary", "df-generated"] + - ["java.security", "KeyStore", "containsAlias", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStore", "deleteEntry", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStore", "entryInstanceOf", "(String,Class)", "summary", "df-generated"] + - ["java.security", "KeyStore", "getCertificate", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStore", "getCertificateChain", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStore", "getCreationDate", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStore", "getDefaultType", "()", "summary", "df-generated"] + - ["java.security", "KeyStore", "getEntry", "(String,KeyStore$ProtectionParameter)", "summary", "df-generated"] + - ["java.security", "KeyStore", "getInstance", "(File,KeyStore$LoadStoreParameter)", "summary", "df-generated"] + - ["java.security", "KeyStore", "getInstance", "(File,char[])", "summary", "df-generated"] + - ["java.security", "KeyStore", "getKey", "(String,char[])", "summary", "df-generated"] + - ["java.security", "KeyStore", "isCertificateEntry", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStore", "isKeyEntry", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStore", "load", "(InputStream,char[])", "summary", "df-generated"] + - ["java.security", "KeyStore", "load", "(KeyStore$LoadStoreParameter)", "summary", "df-generated"] + - ["java.security", "KeyStore", "setCertificateEntry", "(String,Certificate)", "summary", "df-generated"] + - ["java.security", "KeyStore", "setEntry", "(String,KeyStore$Entry,KeyStore$ProtectionParameter)", "summary", "df-generated"] + - ["java.security", "KeyStore", "setKeyEntry", "(String,Key,char[],Certificate[])", "summary", "df-generated"] + - ["java.security", "KeyStore", "setKeyEntry", "(String,byte[],Certificate[])", "summary", "df-generated"] + - ["java.security", "KeyStore", "size", "()", "summary", "df-generated"] + - ["java.security", "KeyStore", "store", "(KeyStore$LoadStoreParameter)", "summary", "df-generated"] + - ["java.security", "KeyStore", "store", "(OutputStream,char[])", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineAliases", "()", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineContainsAlias", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineDeleteEntry", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineEntryInstanceOf", "(String,Class)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineGetCertificate", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineGetCertificateAlias", "(Certificate)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineGetCertificateChain", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineGetCreationDate", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineGetKey", "(String,char[])", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineIsCertificateEntry", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineIsKeyEntry", "(String)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineLoad", "(InputStream,char[])", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineLoad", "(KeyStore$LoadStoreParameter)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineProbe", "(InputStream)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineSetCertificateEntry", "(String,Certificate)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineSetKeyEntry", "(String,Key,char[],Certificate[])", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineSetKeyEntry", "(String,byte[],Certificate[])", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineSize", "()", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineStore", "(KeyStore$LoadStoreParameter)", "summary", "df-generated"] + - ["java.security", "KeyStoreSpi", "engineStore", "(OutputStream,char[])", "summary", "df-generated"] + - ["java.security", "MessageDigest", "getDigestLength", "()", "summary", "df-generated"] + - ["java.security", "MessageDigest", "isEqual", "(byte[],byte[])", "summary", "df-generated"] + - ["java.security", "MessageDigest", "reset", "()", "summary", "df-generated"] + - ["java.security", "MessageDigest", "update", "(byte)", "summary", "df-generated"] + - ["java.security", "Permission", "implies", "(Permission)", "summary", "df-generated"] + - ["java.security", "Permission", "newPermissionCollection", "()", "summary", "df-generated"] + - ["java.security", "PermissionCollection", "elementsAsStream", "()", "summary", "df-generated"] + - ["java.security", "PermissionCollection", "implies", "(Permission)", "summary", "df-generated"] + - ["java.security", "PermissionCollection", "isReadOnly", "()", "summary", "df-generated"] + - ["java.security", "PermissionCollection", "setReadOnly", "()", "summary", "df-generated"] + - ["java.security", "Policy", "getPermissions", "(CodeSource)", "summary", "df-generated"] + - ["java.security", "Policy", "getPermissions", "(ProtectionDomain)", "summary", "df-generated"] + - ["java.security", "Policy", "getPolicy", "()", "summary", "df-generated"] + - ["java.security", "Policy", "refresh", "()", "summary", "df-generated"] + - ["java.security", "Policy", "setPolicy", "(Policy)", "summary", "df-generated"] + - ["java.security", "Principal", "implies", "(Subject)", "summary", "df-generated"] + - ["java.security", "ProtectionDomain", "implies", "(Permission)", "summary", "df-generated"] + - ["java.security", "ProtectionDomain", "staticPermissionsOnly", "()", "summary", "df-generated"] + - ["java.security", "Provider$Service", "newInstance", "(Object)", "summary", "df-generated"] + - ["java.security", "Provider$Service", "supportsParameter", "(Object)", "summary", "df-generated"] + - ["java.security", "Provider", "configure", "(String)", "summary", "df-generated"] + - ["java.security", "Provider", "getVersion", "()", "summary", "df-generated"] + - ["java.security", "Provider", "isConfigured", "()", "summary", "df-generated"] + - ["java.security", "SecureRandom", "generateSeed", "(int)", "summary", "df-generated"] + - ["java.security", "SecureRandom", "getInstanceStrong", "()", "summary", "df-generated"] + - ["java.security", "SecureRandom", "getParameters", "()", "summary", "df-generated"] + - ["java.security", "SecureRandom", "getSeed", "(int)", "summary", "df-generated"] + - ["java.security", "SecureRandom", "nextBytes", "(byte[],SecureRandomParameters)", "summary", "df-generated"] + - ["java.security", "SecureRandom", "reseed", "()", "summary", "df-generated"] + - ["java.security", "SecureRandom", "reseed", "(SecureRandomParameters)", "summary", "df-generated"] + - ["java.security", "Security", "addProvider", "(Provider)", "summary", "df-generated"] + - ["java.security", "Security", "getAlgorithmProperty", "(String,String)", "summary", "df-generated"] + - ["java.security", "Security", "getAlgorithms", "(String)", "summary", "df-generated"] + - ["java.security", "Security", "getProperty", "(String)", "summary", "df-generated"] + - ["java.security", "Security", "getProvider", "(String)", "summary", "df-generated"] + - ["java.security", "Security", "getProviders", "()", "summary", "df-generated"] + - ["java.security", "Security", "getProviders", "(Map)", "summary", "df-generated"] + - ["java.security", "Security", "getProviders", "(String)", "summary", "df-generated"] + - ["java.security", "Security", "insertProviderAt", "(Provider,int)", "summary", "df-generated"] + - ["java.security", "Security", "removeProvider", "(String)", "summary", "df-generated"] + - ["java.security", "Security", "setProperty", "(String,String)", "summary", "df-generated"] + - ["java.security", "Signature", "getParameter", "(String)", "summary", "df-generated"] + - ["java.security", "Signature", "initVerify", "(Certificate)", "summary", "df-generated"] + - ["java.security", "Signature", "setParameter", "(String,Object)", "summary", "df-generated"] + - ["java.security", "Signature", "sign", "()", "summary", "df-generated"] + - ["java.security", "Signature", "sign", "(byte[],int,int)", "summary", "df-generated"] + - ["java.security", "Signature", "update", "(ByteBuffer)", "summary", "df-generated"] + - ["java.security", "Signature", "update", "(byte)", "summary", "df-generated"] + - ["java.security", "Signature", "verify", "(byte[])", "summary", "df-generated"] + - ["java.security", "Signature", "verify", "(byte[],int,int)", "summary", "df-generated"] + - ["java.security", "Timestamp", "getTimestamp", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.security.spec.model.yml b/java/ql/lib/ext/generated/java.security.spec.model.yml new file mode 100644 index 000000000000..ba978ed02fa3 --- /dev/null +++ b/java/ql/lib/ext/generated/java.security.spec.model.yml @@ -0,0 +1,146 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.security.spec", "ECGenParameterSpec", True, "ECGenParameterSpec", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "ECParameterSpec", True, "ECParameterSpec", "(EllipticCurve,ECPoint,BigInteger,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "ECParameterSpec", True, "ECParameterSpec", "(EllipticCurve,ECPoint,BigInteger,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "ECParameterSpec", True, "getCurve", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "ECParameterSpec", True, "getGenerator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "ECPrivateKeySpec", True, "ECPrivateKeySpec", "(BigInteger,ECParameterSpec)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "ECPrivateKeySpec", True, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "ECPublicKeySpec", True, "ECPublicKeySpec", "(ECPoint,ECParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "ECPublicKeySpec", True, "ECPublicKeySpec", "(ECPoint,ECParameterSpec)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "ECPublicKeySpec", True, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "ECPublicKeySpec", True, "getW", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EdDSAParameterSpec", True, "EdDSAParameterSpec", "(boolean,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EdDSAParameterSpec", True, "getContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EdECPrivateKeySpec", False, "EdECPrivateKeySpec", "(NamedParameterSpec,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EdECPrivateKeySpec", False, "EdECPrivateKeySpec", "(NamedParameterSpec,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EdECPrivateKeySpec", False, "getBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EdECPrivateKeySpec", False, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EdECPublicKeySpec", False, "EdECPublicKeySpec", "(NamedParameterSpec,EdECPoint)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EdECPublicKeySpec", False, "EdECPublicKeySpec", "(NamedParameterSpec,EdECPoint)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EdECPublicKeySpec", False, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EdECPublicKeySpec", False, "getPoint", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EllipticCurve", True, "EllipticCurve", "(ECField,BigInteger,BigInteger)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EllipticCurve", True, "EllipticCurve", "(ECField,BigInteger,BigInteger,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EllipticCurve", True, "EllipticCurve", "(ECField,BigInteger,BigInteger,byte[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EllipticCurve", True, "getField", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EllipticCurve", True, "getSeed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EncodedKeySpec", True, "EncodedKeySpec", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "EncodedKeySpec", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "EncodedKeySpec", True, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "InvalidKeySpecException", True, "InvalidKeySpecException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "InvalidKeySpecException", True, "InvalidKeySpecException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "InvalidKeySpecException", True, "InvalidKeySpecException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "InvalidKeySpecException", True, "InvalidKeySpecException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "InvalidParameterSpecException", True, "InvalidParameterSpecException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "MGF1ParameterSpec", True, "MGF1ParameterSpec", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "MGF1ParameterSpec", True, "getDigestAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "NamedParameterSpec", True, "NamedParameterSpec", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "NamedParameterSpec", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "PKCS8EncodedKeySpec", True, "PKCS8EncodedKeySpec", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "PKCS8EncodedKeySpec", True, "PKCS8EncodedKeySpec", "(byte[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "PKCS8EncodedKeySpec", True, "PKCS8EncodedKeySpec", "(byte[],String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", True, "PSSParameterSpec", "(String,String,AlgorithmParameterSpec,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", True, "PSSParameterSpec", "(String,String,AlgorithmParameterSpec,int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", True, "PSSParameterSpec", "(String,String,AlgorithmParameterSpec,int,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", True, "getDigestAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", True, "getMGFAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", True, "getMGFParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "RSAKeyGenParameterSpec", True, "RSAKeyGenParameterSpec", "(int,BigInteger,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "RSAKeyGenParameterSpec", True, "getKeyParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", True, "RSAMultiPrimePrivateCrtKeySpec", "(BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,RSAOtherPrimeInfo[])", "", "Argument[8].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", True, "RSAMultiPrimePrivateCrtKeySpec", "(BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,RSAOtherPrimeInfo[],AlgorithmParameterSpec)", "", "Argument[8].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", True, "RSAMultiPrimePrivateCrtKeySpec", "(BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,RSAOtherPrimeInfo[],AlgorithmParameterSpec)", "", "Argument[9]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", True, "getOtherPrimeInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", True, "RSAPrivateCrtKeySpec", "(BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,AlgorithmParameterSpec)", "", "Argument[8]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "RSAPrivateKeySpec", True, "RSAPrivateKeySpec", "(BigInteger,BigInteger,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "RSAPrivateKeySpec", True, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "RSAPublicKeySpec", True, "RSAPublicKeySpec", "(BigInteger,BigInteger,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "RSAPublicKeySpec", True, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "X509EncodedKeySpec", True, "X509EncodedKeySpec", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "X509EncodedKeySpec", True, "X509EncodedKeySpec", "(byte[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "X509EncodedKeySpec", True, "X509EncodedKeySpec", "(byte[],String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "XECPrivateKeySpec", True, "XECPrivateKeySpec", "(AlgorithmParameterSpec,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "XECPrivateKeySpec", True, "XECPrivateKeySpec", "(AlgorithmParameterSpec,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "XECPrivateKeySpec", True, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "XECPrivateKeySpec", True, "getScalar", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.security.spec", "XECPublicKeySpec", True, "XECPublicKeySpec", "(AlgorithmParameterSpec,BigInteger)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.security.spec", "XECPublicKeySpec", True, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.security.spec", "DSAGenParameterSpec", "DSAGenParameterSpec", "(int,int)", "summary", "df-generated"] + - ["java.security.spec", "DSAGenParameterSpec", "DSAGenParameterSpec", "(int,int,int)", "summary", "df-generated"] + - ["java.security.spec", "DSAGenParameterSpec", "getPrimePLength", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAGenParameterSpec", "getSeedLength", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAGenParameterSpec", "getSubprimeQLength", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAParameterSpec", "DSAParameterSpec", "(BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "DSAPrivateKeySpec", "DSAPrivateKeySpec", "(BigInteger,BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "DSAPrivateKeySpec", "getG", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAPrivateKeySpec", "getP", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAPrivateKeySpec", "getQ", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAPrivateKeySpec", "getX", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAPublicKeySpec", "DSAPublicKeySpec", "(BigInteger,BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "DSAPublicKeySpec", "getG", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAPublicKeySpec", "getP", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAPublicKeySpec", "getQ", "()", "summary", "df-generated"] + - ["java.security.spec", "DSAPublicKeySpec", "getY", "()", "summary", "df-generated"] + - ["java.security.spec", "ECField", "getFieldSize", "()", "summary", "df-generated"] + - ["java.security.spec", "ECFieldF2m", "ECFieldF2m", "(int)", "summary", "df-generated"] + - ["java.security.spec", "ECFieldF2m", "ECFieldF2m", "(int,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "ECFieldF2m", "ECFieldF2m", "(int,int[])", "summary", "df-generated"] + - ["java.security.spec", "ECFieldF2m", "getM", "()", "summary", "df-generated"] + - ["java.security.spec", "ECFieldF2m", "getMidTermsOfReductionPolynomial", "()", "summary", "df-generated"] + - ["java.security.spec", "ECFieldF2m", "getReductionPolynomial", "()", "summary", "df-generated"] + - ["java.security.spec", "ECFieldFp", "ECFieldFp", "(BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "ECFieldFp", "getP", "()", "summary", "df-generated"] + - ["java.security.spec", "ECParameterSpec", "getCofactor", "()", "summary", "df-generated"] + - ["java.security.spec", "ECParameterSpec", "getOrder", "()", "summary", "df-generated"] + - ["java.security.spec", "ECPoint", "ECPoint", "(BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "ECPoint", "getAffineX", "()", "summary", "df-generated"] + - ["java.security.spec", "ECPoint", "getAffineY", "()", "summary", "df-generated"] + - ["java.security.spec", "ECPrivateKeySpec", "getS", "()", "summary", "df-generated"] + - ["java.security.spec", "EdDSAParameterSpec", "EdDSAParameterSpec", "(boolean)", "summary", "df-generated"] + - ["java.security.spec", "EdDSAParameterSpec", "isPrehash", "()", "summary", "df-generated"] + - ["java.security.spec", "EdECPoint", "EdECPoint", "(boolean,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "EdECPoint", "getY", "()", "summary", "df-generated"] + - ["java.security.spec", "EdECPoint", "isXOdd", "()", "summary", "df-generated"] + - ["java.security.spec", "EllipticCurve", "getA", "()", "summary", "df-generated"] + - ["java.security.spec", "EllipticCurve", "getB", "()", "summary", "df-generated"] + - ["java.security.spec", "EncodedKeySpec", "getFormat", "()", "summary", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", "PSSParameterSpec", "(int)", "summary", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", "getSaltLength", "()", "summary", "df-generated"] + - ["java.security.spec", "PSSParameterSpec", "getTrailerField", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAKeyGenParameterSpec", "RSAKeyGenParameterSpec", "(int,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "RSAKeyGenParameterSpec", "getKeysize", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAKeyGenParameterSpec", "getPublicExponent", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", "getCrtCoefficient", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", "getPrimeExponentP", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", "getPrimeExponentQ", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", "getPrimeP", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", "getPrimeQ", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAMultiPrimePrivateCrtKeySpec", "getPublicExponent", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAOtherPrimeInfo", "RSAOtherPrimeInfo", "(BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "RSAOtherPrimeInfo", "getCrtCoefficient", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAOtherPrimeInfo", "getExponent", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAOtherPrimeInfo", "getPrime", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", "RSAPrivateCrtKeySpec", "(BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", "getCrtCoefficient", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", "getPrimeExponentP", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", "getPrimeExponentQ", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", "getPrimeP", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", "getPrimeQ", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateCrtKeySpec", "getPublicExponent", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateKeySpec", "RSAPrivateKeySpec", "(BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateKeySpec", "getModulus", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPrivateKeySpec", "getPrivateExponent", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPublicKeySpec", "RSAPublicKeySpec", "(BigInteger,BigInteger)", "summary", "df-generated"] + - ["java.security.spec", "RSAPublicKeySpec", "getModulus", "()", "summary", "df-generated"] + - ["java.security.spec", "RSAPublicKeySpec", "getPublicExponent", "()", "summary", "df-generated"] + - ["java.security.spec", "XECPublicKeySpec", "getU", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.sql.model.yml b/java/ql/lib/ext/generated/java.sql.model.yml new file mode 100644 index 000000000000..310a430ab75b --- /dev/null +++ b/java/ql/lib/ext/generated/java.sql.model.yml @@ -0,0 +1,465 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.sql", "Array", True, "getArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Array", True, "getArray", "(Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Array", True, "getArray", "(long,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Array", True, "getArray", "(long,int,Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Array", True, "getBaseTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,int[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,int[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,int[],Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,int[],Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,int[],Throwable)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,long[],Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,long[],Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int,long[],Throwable)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int[],Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int[],Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,String,int[],Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,int[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,int[],Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(String,int[],Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "BatchUpdateException", True, "BatchUpdateException", "(int[],Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "Blob", True, "getBinaryStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Blob", True, "getBinaryStream", "(long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Clob", True, "getCharacterStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Clob", True, "getCharacterStream", "(long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Clob", True, "getSubString", "(long,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "DataTruncation", True, "DataTruncation", "(int,boolean,boolean,int,int,Throwable)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "DriverPropertyInfo", True, "DriverPropertyInfo", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "DriverPropertyInfo", True, "DriverPropertyInfo", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "Ref", True, "getBaseTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Ref", True, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Ref", True, "setObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "ResultSetMetaData", True, "getCatalogName", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "ResultSetMetaData", True, "getColumnLabel", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "ResultSetMetaData", True, "getColumnName", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "ResultSetMetaData", True, "getColumnTypeName", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "ResultSetMetaData", True, "getSchemaName", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "ResultSetMetaData", True, "getTableName", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(Map,Throwable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(Map,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,Map,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,Map,Throwable)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,Map,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,Map)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,Map,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,Map,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,Map,Throwable)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,Map,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,int,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,int,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,int,Map)", "", "Argument[3].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,int,Map,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,int,Map,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,int,Map,Throwable)", "", "Argument[3].Element", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "SQLClientInfoException", "(String,String,int,Map,Throwable)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLClientInfoException", True, "getFailedProperties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLDataException", True, "SQLDataException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "SQLException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "getNextException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLException", True, "getSQLState", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLFeatureNotSupportedException", True, "SQLFeatureNotSupportedException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readAsciiStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readBinaryStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readBlob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readCharacterStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readClob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readNClob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readNString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readRef", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readRowId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readSQLXML", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readTimestamp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLInput", True, "readURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLIntegrityConstraintViolationException", True, "SQLIntegrityConstraintViolationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLInvalidAuthorizationSpecException", True, "SQLInvalidAuthorizationSpecException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientConnectionException", True, "SQLNonTransientConnectionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLNonTransientException", True, "SQLNonTransientException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeAsciiStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeBinaryStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeBytes", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeCharacterStream", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeDate", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeNClob", "(NClob)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeNString", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeRowId", "(RowId)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeSQLXML", "(SQLXML)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeString", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeTime", "(Time)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLOutput", True, "writeTimestamp", "(Timestamp)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLPermission", False, "SQLPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLPermission", False, "SQLPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLRecoverableException", True, "SQLRecoverableException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLSyntaxErrorException", True, "SQLSyntaxErrorException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTimeoutException", True, "SQLTimeoutException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransactionRollbackException", True, "SQLTransactionRollbackException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientConnectionException", True, "SQLTransientConnectionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLTransientException", True, "SQLTransientException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,String,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "SQLWarning", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.sql", "SQLWarning", True, "getNextWarning", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Statement", True, "enquoteIdentifier", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Statement", True, "enquoteLiteral", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Statement", True, "enquoteNCharLiteral", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Struct", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Struct", True, "getAttributes", "(Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Struct", True, "getSQLTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.sql", "Wrapper", True, "unwrap", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.sql", "Array", "free", "()", "summary", "df-generated"] + - ["java.sql", "Array", "getBaseType", "()", "summary", "df-generated"] + - ["java.sql", "Array", "getResultSet", "()", "summary", "df-generated"] + - ["java.sql", "Array", "getResultSet", "(Map)", "summary", "df-generated"] + - ["java.sql", "Array", "getResultSet", "(long,int)", "summary", "df-generated"] + - ["java.sql", "Array", "getResultSet", "(long,int,Map)", "summary", "df-generated"] + - ["java.sql", "BatchUpdateException", "BatchUpdateException", "(int[])", "summary", "df-generated"] + - ["java.sql", "BatchUpdateException", "getLargeUpdateCounts", "()", "summary", "df-generated"] + - ["java.sql", "BatchUpdateException", "getUpdateCounts", "()", "summary", "df-generated"] + - ["java.sql", "Blob", "free", "()", "summary", "df-generated"] + - ["java.sql", "Blob", "getBytes", "(long,int)", "summary", "df-generated"] + - ["java.sql", "Blob", "length", "()", "summary", "df-generated"] + - ["java.sql", "Blob", "position", "(Blob,long)", "summary", "df-generated"] + - ["java.sql", "Blob", "position", "(byte[],long)", "summary", "df-generated"] + - ["java.sql", "Blob", "setBinaryStream", "(long)", "summary", "df-generated"] + - ["java.sql", "Blob", "setBytes", "(long,byte[])", "summary", "df-generated"] + - ["java.sql", "Blob", "setBytes", "(long,byte[],int,int)", "summary", "df-generated"] + - ["java.sql", "Blob", "truncate", "(long)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "registerOutParameter", "(String,SQLType)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "registerOutParameter", "(String,SQLType,String)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "registerOutParameter", "(String,SQLType,int)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "registerOutParameter", "(int,SQLType)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "registerOutParameter", "(int,SQLType,String)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "registerOutParameter", "(int,SQLType,int)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "setObject", "(String,Object,SQLType)", "summary", "df-generated"] + - ["java.sql", "CallableStatement", "setObject", "(String,Object,SQLType,int)", "summary", "df-generated"] + - ["java.sql", "Clob", "free", "()", "summary", "df-generated"] + - ["java.sql", "Clob", "getAsciiStream", "()", "summary", "df-generated"] + - ["java.sql", "Clob", "length", "()", "summary", "df-generated"] + - ["java.sql", "Clob", "position", "(Clob,long)", "summary", "df-generated"] + - ["java.sql", "Clob", "position", "(String,long)", "summary", "df-generated"] + - ["java.sql", "Clob", "setAsciiStream", "(long)", "summary", "df-generated"] + - ["java.sql", "Clob", "setCharacterStream", "(long)", "summary", "df-generated"] + - ["java.sql", "Clob", "setString", "(long,String)", "summary", "df-generated"] + - ["java.sql", "Clob", "setString", "(long,String,int,int)", "summary", "df-generated"] + - ["java.sql", "Clob", "truncate", "(long)", "summary", "df-generated"] + - ["java.sql", "Connection", "beginRequest", "()", "summary", "df-generated"] + - ["java.sql", "Connection", "endRequest", "()", "summary", "df-generated"] + - ["java.sql", "Connection", "setShardingKey", "(ShardingKey)", "summary", "df-generated"] + - ["java.sql", "Connection", "setShardingKey", "(ShardingKey,ShardingKey)", "summary", "df-generated"] + - ["java.sql", "Connection", "setShardingKeyIfValid", "(ShardingKey,ShardingKey,int)", "summary", "df-generated"] + - ["java.sql", "Connection", "setShardingKeyIfValid", "(ShardingKey,int)", "summary", "df-generated"] + - ["java.sql", "DataTruncation", "DataTruncation", "(int,boolean,boolean,int,int)", "summary", "df-generated"] + - ["java.sql", "DataTruncation", "getDataSize", "()", "summary", "df-generated"] + - ["java.sql", "DataTruncation", "getIndex", "()", "summary", "df-generated"] + - ["java.sql", "DataTruncation", "getParameter", "()", "summary", "df-generated"] + - ["java.sql", "DataTruncation", "getRead", "()", "summary", "df-generated"] + - ["java.sql", "DataTruncation", "getTransferSize", "()", "summary", "df-generated"] + - ["java.sql", "DatabaseMetaData", "getMaxLogicalLobSize", "()", "summary", "df-generated"] + - ["java.sql", "DatabaseMetaData", "supportsRefCursors", "()", "summary", "df-generated"] + - ["java.sql", "DatabaseMetaData", "supportsSharding", "()", "summary", "df-generated"] + - ["java.sql", "Date", "Date", "(int,int,int)", "summary", "df-generated"] + - ["java.sql", "Date", "Date", "(long)", "summary", "df-generated"] + - ["java.sql", "Date", "toLocalDate", "()", "summary", "df-generated"] + - ["java.sql", "Date", "valueOf", "(LocalDate)", "summary", "df-generated"] + - ["java.sql", "Date", "valueOf", "(String)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "deregisterDriver", "(Driver)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "drivers", "()", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getConnection", "(String)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getConnection", "(String,Properties)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getConnection", "(String,String,String)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getDriver", "(String)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getDrivers", "()", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getLogStream", "()", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getLogWriter", "()", "summary", "df-generated"] + - ["java.sql", "DriverManager", "getLoginTimeout", "()", "summary", "df-generated"] + - ["java.sql", "DriverManager", "println", "(String)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "registerDriver", "(Driver)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "registerDriver", "(Driver,DriverAction)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "setLogStream", "(PrintStream)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "setLogWriter", "(PrintWriter)", "summary", "df-generated"] + - ["java.sql", "DriverManager", "setLoginTimeout", "(int)", "summary", "df-generated"] + - ["java.sql", "JDBCType", "valueOf", "(int)", "summary", "df-generated"] + - ["java.sql", "PreparedStatement", "executeLargeUpdate", "()", "summary", "df-generated"] + - ["java.sql", "PreparedStatement", "setObject", "(int,Object,SQLType)", "summary", "df-generated"] + - ["java.sql", "PreparedStatement", "setObject", "(int,Object,SQLType,int)", "summary", "df-generated"] + - ["java.sql", "Ref", "getObject", "(Map)", "summary", "df-generated"] + - ["java.sql", "ResultSet", "updateObject", "(String,Object,SQLType)", "summary", "df-generated"] + - ["java.sql", "ResultSet", "updateObject", "(String,Object,SQLType,int)", "summary", "df-generated"] + - ["java.sql", "ResultSet", "updateObject", "(int,Object,SQLType)", "summary", "df-generated"] + - ["java.sql", "ResultSet", "updateObject", "(int,Object,SQLType,int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "getColumnClassName", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "getColumnCount", "()", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "getColumnDisplaySize", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "getColumnType", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "getPrecision", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "getScale", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isAutoIncrement", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isCaseSensitive", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isCurrency", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isDefinitelyWritable", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isNullable", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isReadOnly", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isSearchable", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isSigned", "(int)", "summary", "df-generated"] + - ["java.sql", "ResultSetMetaData", "isWritable", "(int)", "summary", "df-generated"] + - ["java.sql", "SQLException", "getErrorCode", "()", "summary", "df-generated"] + - ["java.sql", "SQLException", "setNextException", "(SQLException)", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readBigDecimal", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readBoolean", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readByte", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readDouble", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readFloat", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readInt", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readLong", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readObject", "(Class)", "summary", "df-generated"] + - ["java.sql", "SQLInput", "readShort", "()", "summary", "df-generated"] + - ["java.sql", "SQLInput", "wasNull", "()", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeArray", "(Array)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeBigDecimal", "(BigDecimal)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeBlob", "(Blob)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeBoolean", "(boolean)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeByte", "(byte)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeClob", "(Clob)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeDouble", "(double)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeFloat", "(float)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeInt", "(int)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeLong", "(long)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeObject", "(Object,SQLType)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeObject", "(SQLData)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeRef", "(Ref)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeShort", "(short)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeStruct", "(Struct)", "summary", "df-generated"] + - ["java.sql", "SQLOutput", "writeURL", "(URL)", "summary", "df-generated"] + - ["java.sql", "SQLType", "getName", "()", "summary", "df-generated"] + - ["java.sql", "SQLType", "getVendor", "()", "summary", "df-generated"] + - ["java.sql", "SQLType", "getVendorTypeNumber", "()", "summary", "df-generated"] + - ["java.sql", "SQLWarning", "setNextWarning", "(SQLWarning)", "summary", "df-generated"] + - ["java.sql", "Statement", "executeLargeBatch", "()", "summary", "df-generated"] + - ["java.sql", "Statement", "executeLargeUpdate", "(String)", "summary", "df-generated"] + - ["java.sql", "Statement", "executeLargeUpdate", "(String,String[])", "summary", "df-generated"] + - ["java.sql", "Statement", "executeLargeUpdate", "(String,int)", "summary", "df-generated"] + - ["java.sql", "Statement", "executeLargeUpdate", "(String,int[])", "summary", "df-generated"] + - ["java.sql", "Statement", "getLargeMaxRows", "()", "summary", "df-generated"] + - ["java.sql", "Statement", "getLargeUpdateCount", "()", "summary", "df-generated"] + - ["java.sql", "Statement", "isSimpleIdentifier", "(String)", "summary", "df-generated"] + - ["java.sql", "Statement", "setLargeMaxRows", "(long)", "summary", "df-generated"] + - ["java.sql", "Time", "Time", "(int,int,int)", "summary", "df-generated"] + - ["java.sql", "Time", "Time", "(long)", "summary", "df-generated"] + - ["java.sql", "Time", "toLocalTime", "()", "summary", "df-generated"] + - ["java.sql", "Time", "valueOf", "(LocalTime)", "summary", "df-generated"] + - ["java.sql", "Time", "valueOf", "(String)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "Timestamp", "(int,int,int,int,int,int,int)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "after", "(Timestamp)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "before", "(Timestamp)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "compareTo", "(Timestamp)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "equals", "(Timestamp)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "from", "(Instant)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "getNanos", "()", "summary", "df-generated"] + - ["java.sql", "Timestamp", "setNanos", "(int)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "toLocalDateTime", "()", "summary", "df-generated"] + - ["java.sql", "Timestamp", "valueOf", "(LocalDateTime)", "summary", "df-generated"] + - ["java.sql", "Timestamp", "valueOf", "(String)", "summary", "df-generated"] + - ["java.sql", "Wrapper", "isWrapperFor", "(Class)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.text.model.yml b/java/ql/lib/ext/generated/java.text.model.yml new file mode 100644 index 000000000000..6418b607358a --- /dev/null +++ b/java/ql/lib/ext/generated/java.text.model.yml @@ -0,0 +1,339 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.text", "Annotation", True, "Annotation", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "Annotation", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "AttributedString", True, "AttributedString", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "AttributedString", True, "AttributedString", "(String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "AttributedString", True, "getIterator", "(AttributedCharacterIterator$Attribute[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.text", "AttributedString", True, "getIterator", "(AttributedCharacterIterator$Attribute[],int,int)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Bidi", False, "Bidi", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "Bidi", False, "Bidi", "(char[],int,byte[],int,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "BreakIterator", True, "setText", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "ChoiceFormat", True, "ChoiceFormat", "(double[],String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "ChoiceFormat", True, "getFormats", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "ChoiceFormat", True, "setChoices", "(double[],String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "ChoiceFormat", True, "toPattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "CollationKey", True, "getSourceString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Collator", True, "getCollationKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "Collator", True, "getCollationKey", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Collator", True, "getCollationKey", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "CompactNumberFormat", False, "CompactNumberFormat", "(String,DecimalFormatSymbols,String[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "CompactNumberFormat", False, "CompactNumberFormat", "(String,DecimalFormatSymbols,String[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "CompactNumberFormat", False, "CompactNumberFormat", "(String,DecimalFormatSymbols,String[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "CompactNumberFormat", False, "CompactNumberFormat", "(String,DecimalFormatSymbols,String[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "CompactNumberFormat", False, "CompactNumberFormat", "(String,DecimalFormatSymbols,String[],String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "CompactNumberFormat", False, "CompactNumberFormat", "(String,DecimalFormatSymbols,String[],String)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "CompactNumberFormat", False, "CompactNumberFormat", "(String,DecimalFormatSymbols,String[],String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "format", "(Date,StringBuffer,FieldPosition)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "format", "(Date,StringBuffer,FieldPosition)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "format", "(Date,StringBuffer,FieldPosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "getCalendar", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "getDateInstance", "(int,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "getDateTimeInstance", "(int,int,Locale)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "getNumberFormat", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "getTimeInstance", "(int,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "getTimeZone", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "setCalendar", "(Calendar)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "setNumberFormat", "(NumberFormat)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormat", True, "setTimeZone", "(TimeZone)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "DateFormatSymbols", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getAmPmStrings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getEras", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getLocalPatternChars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getMonths", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getShortMonths", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getShortWeekdays", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getWeekdays", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "getZoneStrings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setAmPmStrings", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setEras", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setLocalPatternChars", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setMonths", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setShortMonths", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setShortWeekdays", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setWeekdays", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DateFormatSymbols", True, "setZoneStrings", "(String[][])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "DecimalFormat", "(String,DecimalFormatSymbols)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "getDecimalFormatSymbols", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "getNegativePrefix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "getNegativeSuffix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "getPositivePrefix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "getPositiveSuffix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "setDecimalFormatSymbols", "(DecimalFormatSymbols)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "setNegativePrefix", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "setNegativeSuffix", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "setPositivePrefix", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "setPositiveSuffix", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "toLocalizedPattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormat", True, "toPattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "DecimalFormatSymbols", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "getCurrency", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "getCurrencySymbol", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "getExponentSeparator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "getInfinity", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "getInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "getInternationalCurrencySymbol", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "getNaN", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "setCurrency", "(Currency)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "setCurrencySymbol", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "setExponentSeparator", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "setInfinity", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "setInternationalCurrencySymbol", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "DecimalFormatSymbols", True, "setNaN", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "FieldPosition", True, "FieldPosition", "(Format$Field)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "FieldPosition", True, "FieldPosition", "(Format$Field,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "FieldPosition", True, "getFieldAttribute", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "format", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "format", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "parseObject", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "parseObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "parseObject", "(String,ParsePosition)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Format", True, "parseObject", "(String,ParsePosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "MessageFormat", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[0].ArrayElement", "Argument[1]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "getFormats", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "getFormatsByArgumentIndex", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "parse", "(String,ParsePosition)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "setFormat", "(int,Format)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "setFormatByArgumentIndex", "(int,Format)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "setFormats", "(Format[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "setFormatsByArgumentIndex", "(Format[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "MessageFormat", True, "toPattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "Normalizer", False, "normalize", "(CharSequence,Normalizer$Form)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "format", "(double,StringBuffer,FieldPosition)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "format", "(double,StringBuffer,FieldPosition)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "format", "(double,StringBuffer,FieldPosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "format", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "format", "(long,StringBuffer,FieldPosition)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "format", "(long,StringBuffer,FieldPosition)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "format", "(long,StringBuffer,FieldPosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "getCompactNumberInstance", "(Locale,NumberFormat$Style)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "getCurrency", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "getCurrencyInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "getInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "getIntegerInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "getNumberInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "getPercentInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "NumberFormat", True, "setCurrency", "(Currency)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "ParseException", True, "ParseException", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "RuleBasedCollator", True, "RuleBasedCollator", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "RuleBasedCollator", True, "getCollationElementIterator", "(CharacterIterator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "RuleBasedCollator", True, "getCollationElementIterator", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "RuleBasedCollator", True, "getRules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "SimpleDateFormat", "(String,DateFormatSymbols)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "SimpleDateFormat", "(String,DateFormatSymbols)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "SimpleDateFormat", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "SimpleDateFormat", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "applyPattern", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "get2DigitYearStart", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "getDateFormatSymbols", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "setDateFormatSymbols", "(DateFormatSymbols)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "SimpleDateFormat", True, "toPattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.text", "StringCharacterIterator", False, "StringCharacterIterator", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "StringCharacterIterator", False, "StringCharacterIterator", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "StringCharacterIterator", False, "StringCharacterIterator", "(String,int,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.text", "StringCharacterIterator", False, "setText", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.text", "AttributedCharacterIterator", "getAllAttributeKeys", "()", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getAttribute", "(AttributedCharacterIterator$Attribute)", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getAttributes", "()", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getRunLimit", "()", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getRunLimit", "(AttributedCharacterIterator$Attribute)", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getRunLimit", "(Set)", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getRunStart", "()", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getRunStart", "(AttributedCharacterIterator$Attribute)", "summary", "df-generated"] + - ["java.text", "AttributedCharacterIterator", "getRunStart", "(Set)", "summary", "df-generated"] + - ["java.text", "AttributedString", "AttributedString", "(AttributedCharacterIterator)", "summary", "df-generated"] + - ["java.text", "AttributedString", "AttributedString", "(AttributedCharacterIterator,int,int)", "summary", "df-generated"] + - ["java.text", "AttributedString", "AttributedString", "(AttributedCharacterIterator,int,int,AttributedCharacterIterator$Attribute[])", "summary", "df-generated"] + - ["java.text", "AttributedString", "addAttribute", "(AttributedCharacterIterator$Attribute,Object)", "summary", "df-generated"] + - ["java.text", "AttributedString", "addAttribute", "(AttributedCharacterIterator$Attribute,Object,int,int)", "summary", "df-generated"] + - ["java.text", "AttributedString", "addAttributes", "(Map,int,int)", "summary", "df-generated"] + - ["java.text", "AttributedString", "getIterator", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "Bidi", "(AttributedCharacterIterator)", "summary", "df-generated"] + - ["java.text", "Bidi", "baseIsLeftToRight", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "createLineBidi", "(int,int)", "summary", "df-generated"] + - ["java.text", "Bidi", "getBaseLevel", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "getLength", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "getLevelAt", "(int)", "summary", "df-generated"] + - ["java.text", "Bidi", "getRunCount", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "getRunLevel", "(int)", "summary", "df-generated"] + - ["java.text", "Bidi", "getRunLimit", "(int)", "summary", "df-generated"] + - ["java.text", "Bidi", "getRunStart", "(int)", "summary", "df-generated"] + - ["java.text", "Bidi", "isLeftToRight", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "isMixed", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "isRightToLeft", "()", "summary", "df-generated"] + - ["java.text", "Bidi", "reorderVisually", "(byte[],int,Object[],int,int)", "summary", "df-generated"] + - ["java.text", "Bidi", "requiresBidi", "(char[],int,int)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "current", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "first", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "following", "(int)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getCharacterInstance", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getCharacterInstance", "(Locale)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getLineInstance", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getLineInstance", "(Locale)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getSentenceInstance", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getSentenceInstance", "(Locale)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getText", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getWordInstance", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "getWordInstance", "(Locale)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "isBoundary", "(int)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "last", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "next", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "next", "(int)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "preceding", "(int)", "summary", "df-generated"] + - ["java.text", "BreakIterator", "previous", "()", "summary", "df-generated"] + - ["java.text", "BreakIterator", "setText", "(CharacterIterator)", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "current", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "first", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "getBeginIndex", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "getEndIndex", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "getIndex", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "last", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "next", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "previous", "()", "summary", "df-generated"] + - ["java.text", "CharacterIterator", "setIndex", "(int)", "summary", "df-generated"] + - ["java.text", "ChoiceFormat", "ChoiceFormat", "(String)", "summary", "df-generated"] + - ["java.text", "ChoiceFormat", "applyPattern", "(String)", "summary", "df-generated"] + - ["java.text", "ChoiceFormat", "getLimits", "()", "summary", "df-generated"] + - ["java.text", "ChoiceFormat", "nextDouble", "(double)", "summary", "df-generated"] + - ["java.text", "ChoiceFormat", "nextDouble", "(double,boolean)", "summary", "df-generated"] + - ["java.text", "ChoiceFormat", "previousDouble", "(double)", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "getMaxExpansion", "(int)", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "getOffset", "()", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "next", "()", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "previous", "()", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "primaryOrder", "(int)", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "reset", "()", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "secondaryOrder", "(int)", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "setOffset", "(int)", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "setText", "(CharacterIterator)", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "setText", "(String)", "summary", "df-generated"] + - ["java.text", "CollationElementIterator", "tertiaryOrder", "(int)", "summary", "df-generated"] + - ["java.text", "CollationKey", "toByteArray", "()", "summary", "df-generated"] + - ["java.text", "Collator", "compare", "(String,String)", "summary", "df-generated"] + - ["java.text", "Collator", "equals", "(String,String)", "summary", "df-generated"] + - ["java.text", "Collator", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.text", "Collator", "getDecomposition", "()", "summary", "df-generated"] + - ["java.text", "Collator", "getInstance", "()", "summary", "df-generated"] + - ["java.text", "Collator", "getInstance", "(Locale)", "summary", "df-generated"] + - ["java.text", "Collator", "getStrength", "()", "summary", "df-generated"] + - ["java.text", "Collator", "setDecomposition", "(int)", "summary", "df-generated"] + - ["java.text", "Collator", "setStrength", "(int)", "summary", "df-generated"] + - ["java.text", "CompactNumberFormat", "getGroupingSize", "()", "summary", "df-generated"] + - ["java.text", "CompactNumberFormat", "isParseBigDecimal", "()", "summary", "df-generated"] + - ["java.text", "CompactNumberFormat", "setGroupingSize", "(int)", "summary", "df-generated"] + - ["java.text", "CompactNumberFormat", "setParseBigDecimal", "(boolean)", "summary", "df-generated"] + - ["java.text", "DateFormat$Field", "getCalendarField", "()", "summary", "df-generated"] + - ["java.text", "DateFormat$Field", "ofCalendarField", "(int)", "summary", "df-generated"] + - ["java.text", "DateFormat", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.text", "DateFormat", "getDateInstance", "()", "summary", "df-generated"] + - ["java.text", "DateFormat", "getDateInstance", "(int)", "summary", "df-generated"] + - ["java.text", "DateFormat", "getDateTimeInstance", "()", "summary", "df-generated"] + - ["java.text", "DateFormat", "getDateTimeInstance", "(int,int)", "summary", "df-generated"] + - ["java.text", "DateFormat", "getInstance", "()", "summary", "df-generated"] + - ["java.text", "DateFormat", "getTimeInstance", "()", "summary", "df-generated"] + - ["java.text", "DateFormat", "getTimeInstance", "(int)", "summary", "df-generated"] + - ["java.text", "DateFormat", "isLenient", "()", "summary", "df-generated"] + - ["java.text", "DateFormat", "parse", "(String,ParsePosition)", "summary", "df-generated"] + - ["java.text", "DateFormat", "setLenient", "(boolean)", "summary", "df-generated"] + - ["java.text", "DateFormatSymbols", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.text", "DateFormatSymbols", "getInstance", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "DecimalFormat", "(String)", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "applyLocalizedPattern", "(String)", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "applyPattern", "(String)", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "getGroupingSize", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "getMultiplier", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "isDecimalSeparatorAlwaysShown", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "isParseBigDecimal", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "setDecimalSeparatorAlwaysShown", "(boolean)", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "setGroupingSize", "(int)", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "setMultiplier", "(int)", "summary", "df-generated"] + - ["java.text", "DecimalFormat", "setParseBigDecimal", "(boolean)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getDecimalSeparator", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getDigit", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getGroupingSeparator", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getInstance", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getMinusSign", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getMonetaryDecimalSeparator", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getMonetaryGroupingSeparator", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getPatternSeparator", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getPerMill", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getPercent", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "getZeroDigit", "()", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setDecimalSeparator", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setDigit", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setGroupingSeparator", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setMinusSign", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setMonetaryDecimalSeparator", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setMonetaryGroupingSeparator", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setPatternSeparator", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setPerMill", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setPercent", "(char)", "summary", "df-generated"] + - ["java.text", "DecimalFormatSymbols", "setZeroDigit", "(char)", "summary", "df-generated"] + - ["java.text", "FieldPosition", "FieldPosition", "(int)", "summary", "df-generated"] + - ["java.text", "FieldPosition", "getBeginIndex", "()", "summary", "df-generated"] + - ["java.text", "FieldPosition", "getEndIndex", "()", "summary", "df-generated"] + - ["java.text", "FieldPosition", "getField", "()", "summary", "df-generated"] + - ["java.text", "FieldPosition", "setBeginIndex", "(int)", "summary", "df-generated"] + - ["java.text", "FieldPosition", "setEndIndex", "(int)", "summary", "df-generated"] + - ["java.text", "Format", "formatToCharacterIterator", "(Object)", "summary", "df-generated"] + - ["java.text", "MessageFormat", "MessageFormat", "(String)", "summary", "df-generated"] + - ["java.text", "MessageFormat", "applyPattern", "(String)", "summary", "df-generated"] + - ["java.text", "Normalizer", "isNormalized", "(CharSequence,Normalizer$Form)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "format", "(double)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getCompactNumberInstance", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getCurrencyInstance", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getInstance", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getIntegerInstance", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getMaximumFractionDigits", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getMaximumIntegerDigits", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getMinimumFractionDigits", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getMinimumIntegerDigits", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getNumberInstance", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getPercentInstance", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "getRoundingMode", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "isGroupingUsed", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "isParseIntegerOnly", "()", "summary", "df-generated"] + - ["java.text", "NumberFormat", "parse", "(String)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "parse", "(String,ParsePosition)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "setGroupingUsed", "(boolean)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "setMaximumFractionDigits", "(int)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "setMaximumIntegerDigits", "(int)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "setMinimumFractionDigits", "(int)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "setMinimumIntegerDigits", "(int)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "setParseIntegerOnly", "(boolean)", "summary", "df-generated"] + - ["java.text", "NumberFormat", "setRoundingMode", "(RoundingMode)", "summary", "df-generated"] + - ["java.text", "ParseException", "getErrorOffset", "()", "summary", "df-generated"] + - ["java.text", "ParsePosition", "ParsePosition", "(int)", "summary", "df-generated"] + - ["java.text", "ParsePosition", "getErrorIndex", "()", "summary", "df-generated"] + - ["java.text", "ParsePosition", "getIndex", "()", "summary", "df-generated"] + - ["java.text", "ParsePosition", "setErrorIndex", "(int)", "summary", "df-generated"] + - ["java.text", "ParsePosition", "setIndex", "(int)", "summary", "df-generated"] + - ["java.text", "SimpleDateFormat", "applyLocalizedPattern", "(String)", "summary", "df-generated"] + - ["java.text", "SimpleDateFormat", "set2DigitYearStart", "(Date)", "summary", "df-generated"] + - ["java.text", "SimpleDateFormat", "toLocalizedPattern", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.text.spi.model.yml b/java/ql/lib/ext/generated/java.text.spi.model.yml new file mode 100644 index 000000000000..e802b83640a5 --- /dev/null +++ b/java/ql/lib/ext/generated/java.text.spi.model.yml @@ -0,0 +1,21 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.text.spi", "BreakIteratorProvider", "getCharacterInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "BreakIteratorProvider", "getLineInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "BreakIteratorProvider", "getSentenceInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "BreakIteratorProvider", "getWordInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "CollatorProvider", "getInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "DateFormatProvider", "getDateInstance", "(int,Locale)", "summary", "df-generated"] + - ["java.text.spi", "DateFormatProvider", "getDateTimeInstance", "(int,int,Locale)", "summary", "df-generated"] + - ["java.text.spi", "DateFormatProvider", "getTimeInstance", "(int,Locale)", "summary", "df-generated"] + - ["java.text.spi", "DateFormatSymbolsProvider", "getInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "DecimalFormatSymbolsProvider", "getInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "NumberFormatProvider", "getCompactNumberInstance", "(Locale,NumberFormat$Style)", "summary", "df-generated"] + - ["java.text.spi", "NumberFormatProvider", "getCurrencyInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "NumberFormatProvider", "getIntegerInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "NumberFormatProvider", "getNumberInstance", "(Locale)", "summary", "df-generated"] + - ["java.text.spi", "NumberFormatProvider", "getPercentInstance", "(Locale)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.time.chrono.model.yml b/java/ql/lib/ext/generated/java.time.chrono.model.yml new file mode 100644 index 000000000000..00180b2baf6d --- /dev/null +++ b/java/ql/lib/ext/generated/java.time.chrono.model.yml @@ -0,0 +1,118 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.time.chrono", "ChronoLocalDate", True, "atTime", "(LocalTime)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", True, "atTime", "(LocalTime)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", True, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", True, "format", "(DateTimeFormatter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", True, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", True, "getChronology", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", True, "getEra", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", True, "until", "(ChronoLocalDate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", True, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", True, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", True, "getChronology", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", True, "between", "(ChronoLocalDate,ChronoLocalDate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", True, "getChronology", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", True, "minus", "(TemporalAmount)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", True, "multipliedBy", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", True, "negated", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", True, "normalized", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", True, "plus", "(TemporalAmount)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", True, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", True, "format", "(DateTimeFormatter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", True, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", True, "toLocalDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", True, "toLocalTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "date", "(Era,int,int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "date", "(Era,int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "date", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "date", "(TemporalAccessor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "date", "(int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "dateEpochDay", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "dateNow", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "dateNow", "(Clock)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "dateNow", "(ZoneId)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "dateYearDay", "(Era,int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "dateYearDay", "(Era,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "dateYearDay", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "getCalendarType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "getDisplayName", "(TextStyle,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "localDateTime", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "localDateTime", "(TemporalAccessor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "period", "(int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "resolveDate", "(Map,ResolverStyle)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "zonedDateTime", "(Instant,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Chronology", True, "zonedDateTime", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "Era", True, "getDisplayName", "(TextStyle,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "HijrahDate", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "HijrahDate", False, "withVariant", "(HijrahChronology)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.chrono", "JapaneseDate", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "JapaneseDate", False, "of", "(JapaneseEra,int,int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "MinguoDate", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.chrono", "ThaiBuddhistDate", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.time.chrono", "ChronoLocalDate", "isAfter", "(ChronoLocalDate)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", "isBefore", "(ChronoLocalDate)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", "isEqual", "(ChronoLocalDate)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", "isLeapYear", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", "lengthOfMonth", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", "lengthOfYear", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", "timeLineOrder", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDate", "toEpochDay", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", "isAfter", "(ChronoLocalDateTime)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", "isBefore", "(ChronoLocalDateTime)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", "isEqual", "(ChronoLocalDateTime)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", "timeLineOrder", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", "toEpochSecond", "(ZoneOffset)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoLocalDateTime", "toInstant", "(ZoneOffset)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", "isNegative", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoPeriod", "isZero", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", "getChronology", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", "isAfter", "(ChronoZonedDateTime)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", "isBefore", "(ChronoZonedDateTime)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", "isEqual", "(ChronoZonedDateTime)", "summary", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", "timeLineOrder", "()", "summary", "df-generated"] + - ["java.time.chrono", "ChronoZonedDateTime", "toEpochSecond", "()", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "epochSecond", "(Era,int,int,int,int,int,int,ZoneOffset)", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "epochSecond", "(int,int,int,int,int,int,ZoneOffset)", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "eraOf", "(int)", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "eras", "()", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "getAvailableChronologies", "()", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "isLeapYear", "(long)", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "of", "(String)", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "ofLocale", "(Locale)", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "prolepticYear", "(Era,int)", "summary", "df-generated"] + - ["java.time.chrono", "Chronology", "range", "(ChronoField)", "summary", "df-generated"] + - ["java.time.chrono", "Era", "getValue", "()", "summary", "df-generated"] + - ["java.time.chrono", "HijrahDate", "now", "()", "summary", "df-generated"] + - ["java.time.chrono", "HijrahDate", "now", "(Clock)", "summary", "df-generated"] + - ["java.time.chrono", "HijrahDate", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time.chrono", "HijrahDate", "of", "(int,int,int)", "summary", "df-generated"] + - ["java.time.chrono", "HijrahEra", "of", "(int)", "summary", "df-generated"] + - ["java.time.chrono", "IsoEra", "of", "(int)", "summary", "df-generated"] + - ["java.time.chrono", "JapaneseDate", "now", "()", "summary", "df-generated"] + - ["java.time.chrono", "JapaneseDate", "now", "(Clock)", "summary", "df-generated"] + - ["java.time.chrono", "JapaneseDate", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time.chrono", "JapaneseDate", "of", "(int,int,int)", "summary", "df-generated"] + - ["java.time.chrono", "JapaneseEra", "of", "(int)", "summary", "df-generated"] + - ["java.time.chrono", "JapaneseEra", "valueOf", "(String)", "summary", "df-generated"] + - ["java.time.chrono", "JapaneseEra", "values", "()", "summary", "df-generated"] + - ["java.time.chrono", "MinguoDate", "now", "()", "summary", "df-generated"] + - ["java.time.chrono", "MinguoDate", "now", "(Clock)", "summary", "df-generated"] + - ["java.time.chrono", "MinguoDate", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time.chrono", "MinguoDate", "of", "(int,int,int)", "summary", "df-generated"] + - ["java.time.chrono", "MinguoEra", "of", "(int)", "summary", "df-generated"] + - ["java.time.chrono", "ThaiBuddhistDate", "now", "()", "summary", "df-generated"] + - ["java.time.chrono", "ThaiBuddhistDate", "now", "(Clock)", "summary", "df-generated"] + - ["java.time.chrono", "ThaiBuddhistDate", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time.chrono", "ThaiBuddhistDate", "of", "(int,int,int)", "summary", "df-generated"] + - ["java.time.chrono", "ThaiBuddhistEra", "of", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.time.format.model.yml b/java/ql/lib/ext/generated/java.time.format.model.yml new file mode 100644 index 000000000000..f8a7a3955f5d --- /dev/null +++ b/java/ql/lib/ext/generated/java.time.format.model.yml @@ -0,0 +1,104 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.time.format", "DateTimeFormatter", False, "formatTo", "(TemporalAccessor,Appendable)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "formatTo", "(TemporalAccessor,Appendable)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "getChronology", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "getDecimalStyle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "getResolverFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "getZone", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "localizedBy", "(Locale)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "ofPattern", "(String,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "parse", "(CharSequence)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "parse", "(CharSequence,ParsePosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "parse", "(CharSequence,TemporalQuery)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "parseBest", "(CharSequence,TemporalQuery[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "toFormat", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "toFormat", "(TemporalQuery)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "toFormat", "(TemporalQuery)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "withChronology", "(Chronology)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "withDecimalStyle", "(DecimalStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "withLocale", "(Locale)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "withResolverFields", "(Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "withResolverFields", "(TemporalField[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "withResolverStyle", "(ResolverStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatter", False, "withZone", "(ZoneId)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "append", "(DateTimeFormatter)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendChronologyId", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendChronologyText", "(TextStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendDayPeriodText", "(TextStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendFraction", "(TemporalField,int,int,boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendGenericZoneText", "(TextStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendGenericZoneText", "(TextStyle,Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendInstant", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendInstant", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendLiteral", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendLiteral", "(char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendLocalized", "(FormatStyle,FormatStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendLocalizedOffset", "(TextStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendOffset", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendOffsetId", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendOptional", "(DateTimeFormatter)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendPattern", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendText", "(TemporalField)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendText", "(TemporalField,Map)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendText", "(TemporalField,TextStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendValue", "(TemporalField)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendValue", "(TemporalField,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendValue", "(TemporalField,int,int,SignStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendValueReduced", "(TemporalField,int,int,ChronoLocalDate)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendValueReduced", "(TemporalField,int,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendZoneId", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendZoneOrOffsetId", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendZoneRegionId", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendZoneText", "(TextStyle)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "appendZoneText", "(TextStyle,Set)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "getLocalizedDateTimePattern", "(FormatStyle,FormatStyle,Chronology,Locale)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "optionalEnd", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "optionalStart", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "padNext", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "padNext", "(int,char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "parseCaseInsensitive", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "parseCaseSensitive", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "parseDefaulting", "(TemporalField,long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "parseLenient", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "parseStrict", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", False, "toFormatter", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DateTimeParseException", True, "DateTimeParseException", "(String,CharSequence,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time.format", "DateTimeParseException", True, "DateTimeParseException", "(String,CharSequence,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.time.format", "DateTimeParseException", True, "DateTimeParseException", "(String,CharSequence,int,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time.format", "DateTimeParseException", True, "DateTimeParseException", "(String,CharSequence,int,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.time.format", "DateTimeParseException", True, "DateTimeParseException", "(String,CharSequence,int,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.time.format", "DateTimeParseException", True, "getParsedString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DecimalStyle", False, "of", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.format", "DecimalStyle", False, "withDecimalSeparator", "(char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DecimalStyle", False, "withNegativeSign", "(char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DecimalStyle", False, "withPositiveSign", "(char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.format", "DecimalStyle", False, "withZeroDigit", "(char)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.time.format", "DateTimeFormatter", "getResolverStyle", "()", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatter", "ofLocalizedDate", "(FormatStyle)", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatter", "ofLocalizedDateTime", "(FormatStyle)", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatter", "ofLocalizedDateTime", "(FormatStyle,FormatStyle)", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatter", "ofLocalizedTime", "(FormatStyle)", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatter", "parseUnresolved", "(CharSequence,ParsePosition)", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatter", "parsedExcessDays", "()", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatter", "parsedLeapSecond", "()", "summary", "df-generated"] + - ["java.time.format", "DateTimeFormatterBuilder", "toFormatter", "()", "summary", "df-generated"] + - ["java.time.format", "DateTimeParseException", "getErrorIndex", "()", "summary", "df-generated"] + - ["java.time.format", "DecimalStyle", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.time.format", "DecimalStyle", "getDecimalSeparator", "()", "summary", "df-generated"] + - ["java.time.format", "DecimalStyle", "getNegativeSign", "()", "summary", "df-generated"] + - ["java.time.format", "DecimalStyle", "getPositiveSign", "()", "summary", "df-generated"] + - ["java.time.format", "DecimalStyle", "getZeroDigit", "()", "summary", "df-generated"] + - ["java.time.format", "DecimalStyle", "ofDefaultLocale", "()", "summary", "df-generated"] + - ["java.time.format", "TextStyle", "asNormal", "()", "summary", "df-generated"] + - ["java.time.format", "TextStyle", "asStandalone", "()", "summary", "df-generated"] + - ["java.time.format", "TextStyle", "isStandalone", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.time.model.yml b/java/ql/lib/ext/generated/java.time.model.yml new file mode 100644 index 000000000000..464dbcc2fcdf --- /dev/null +++ b/java/ql/lib/ext/generated/java.time.model.yml @@ -0,0 +1,513 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.time", "Clock", True, "fixed", "(Instant,ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "fixed", "(Instant,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "getZone", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "offset", "(Clock,Duration)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "offset", "(Clock,Duration)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "system", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "tick", "(Clock,Duration)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "tickMillis", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "tickMinutes", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Clock", True, "tickSeconds", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "DateTimeException", True, "DateTimeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time", "DateTimeException", True, "DateTimeException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time", "DateTimeException", True, "DateTimeException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.time", "DayOfWeek", False, "getDisplayName", "(TextStyle,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "abs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "dividedBy", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Duration", False, "minus", "(Duration)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "minus", "(long,TemporalUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "minusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "minusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "minusMillis", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "minusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "minusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "minusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "multipliedBy", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Duration", False, "negated", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "plus", "(Duration)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "plus", "(long,TemporalUnit)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Duration", False, "plusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "plusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "plusMillis", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "plusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "plusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "plusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Duration", False, "truncatedTo", "(TemporalUnit)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Instant", False, "atOffset", "(ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "atZone", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "minusMillis", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "minusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "minusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "now", "(Clock)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "plusMillis", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "plusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "plusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Instant", False, "truncatedTo", "(TemporalUnit)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "InstantSource", True, "fixed", "(Instant)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "InstantSource", True, "instant", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "InstantSource", True, "offset", "(InstantSource,Duration)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "InstantSource", True, "offset", "(InstantSource,Duration)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "InstantSource", True, "tick", "(InstantSource,Duration)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "InstantSource", True, "withZone", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "InstantSource", True, "withZone", "(ZoneId)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "InstantSource", True, "withZone", "(ZoneId)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalDate", False, "atStartOfDay", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "atStartOfDay", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "atStartOfDay", "(ZoneId)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "atTime", "(OffsetTime)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "atTime", "(OffsetTime)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "atTime", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "atTime", "(int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "atTime", "(int,int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "minusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "minusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "minusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "minusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "plusMonths", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalDate", False, "plusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDate", False, "plusYears", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalDate", False, "withDayOfMonth", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalDate", False, "withDayOfYear", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalDate", False, "withMonth", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalDate", False, "withYear", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalDateTime", False, "atOffset", "(ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "atOffset", "(ZoneOffset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "minusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "of", "(LocalDate,LocalTime)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "of", "(LocalDate,LocalTime)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "plusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "truncatedTo", "(TemporalUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withDayOfMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withDayOfYear", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withHour", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withMinute", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withNano", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withSecond", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalDateTime", False, "withYear", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "atDate", "(LocalDate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "atDate", "(LocalDate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "atOffset", "(ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "atOffset", "(ZoneOffset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "minusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "minusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "minusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "minusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "LocalTime", False, "plusHours", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "plusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "plusNanos", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "plusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "truncatedTo", "(TemporalUnit)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "withHour", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "withMinute", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "withNano", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "LocalTime", False, "withSecond", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Month", False, "getDisplayName", "(TextStyle,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "MonthDay", False, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "MonthDay", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "MonthDay", False, "with", "(Month)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "MonthDay", False, "withDayOfMonth", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "MonthDay", False, "withMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "atZoneSameInstant", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "atZoneSameInstant", "(ZoneId)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "atZoneSimilarLocal", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "atZoneSimilarLocal", "(ZoneId)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "format", "(DateTimeFormatter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "getOffset", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "minusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "now", "(Clock)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "now", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "of", "(LocalDate,LocalTime,ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "of", "(LocalDate,LocalTime,ZoneOffset)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "of", "(LocalDate,LocalTime,ZoneOffset)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "of", "(LocalDateTime,ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "of", "(LocalDateTime,ZoneOffset)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "of", "(int,int,int,int,int,int,int,ZoneOffset)", "", "Argument[7]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "ofInstant", "(Instant,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "plusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "toLocalDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "toLocalDateTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "toLocalTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "toOffsetTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "toZonedDateTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "truncatedTo", "(TemporalUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withDayOfMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withDayOfYear", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withHour", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withMinute", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withNano", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withOffsetSameInstant", "(ZoneOffset)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withOffsetSameLocal", "(ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withOffsetSameLocal", "(ZoneOffset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withSecond", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetDateTime", False, "withYear", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "atDate", "(LocalDate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "atDate", "(LocalDate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "format", "(DateTimeFormatter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "getOffset", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "minusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "minusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "minusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "minusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "now", "(Clock)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "now", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "of", "(LocalTime,ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "of", "(LocalTime,ZoneOffset)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "of", "(int,int,int,int,ZoneOffset)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "ofInstant", "(Instant,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "plusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "plusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "plusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "plusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "toLocalTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "truncatedTo", "(TemporalUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "withHour", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "withMinute", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "withNano", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "withOffsetSameInstant", "(ZoneOffset)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "OffsetTime", False, "withOffsetSameLocal", "(ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "withOffsetSameLocal", "(ZoneOffset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "OffsetTime", False, "withSecond", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Period", False, "from", "(TemporalAmount)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Period", False, "minusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Period", False, "minusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Period", False, "minusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Period", False, "plusDays", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Period", False, "plusMonths", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Period", False, "plusYears", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Period", False, "withDays", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Period", False, "withMonths", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Period", False, "withYears", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "Year", False, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Year", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Year", False, "minusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "Year", False, "plusYears", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "YearMonth", False, "format", "(DateTimeFormatter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "YearMonth", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "YearMonth", False, "minusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "YearMonth", False, "minusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "YearMonth", False, "plusMonths", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "YearMonth", False, "plusYears", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "YearMonth", False, "withMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "YearMonth", False, "withYear", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "getDisplayName", "(TextStyle,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "getId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "getRules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "normalized", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time", "ZoneId", True, "of", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "of", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "ofOffset", "(String,ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneId", True, "ofOffset", "(String,ZoneOffset)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZoneOffset", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "from", "(TemporalAccessor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "minusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "now", "(Clock)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "now", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "of", "(LocalDate,LocalTime,ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "of", "(LocalDate,LocalTime,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "of", "(LocalDate,LocalTime,ZoneId)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "of", "(LocalDateTime,ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "of", "(LocalDateTime,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "of", "(int,int,int,int,int,int,int,ZoneId)", "", "Argument[7]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofInstant", "(Instant,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofInstant", "(LocalDateTime,ZoneOffset,ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofInstant", "(LocalDateTime,ZoneOffset,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofInstant", "(LocalDateTime,ZoneOffset,ZoneId)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofLocal", "(LocalDateTime,ZoneId,ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofLocal", "(LocalDateTime,ZoneId,ZoneOffset)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofLocal", "(LocalDateTime,ZoneId,ZoneOffset)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofStrict", "(LocalDateTime,ZoneOffset,ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofStrict", "(LocalDateTime,ZoneOffset,ZoneId)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "ofStrict", "(LocalDateTime,ZoneOffset,ZoneId)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusDays", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusHours", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusMinutes", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusMonths", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusNanos", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusSeconds", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusWeeks", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "plusYears", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "toOffsetDateTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "truncatedTo", "(TemporalUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withDayOfMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withDayOfYear", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withFixedOffsetZone", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withHour", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withMinute", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withMonth", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withNano", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withSecond", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time", "ZonedDateTime", False, "withYear", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.time", "Clock", "systemDefaultZone", "()", "summary", "df-generated"] + - ["java.time", "Clock", "systemUTC", "()", "summary", "df-generated"] + - ["java.time", "DayOfWeek", "from", "(TemporalAccessor)", "summary", "df-generated"] + - ["java.time", "DayOfWeek", "getValue", "()", "summary", "df-generated"] + - ["java.time", "DayOfWeek", "minus", "(long)", "summary", "df-generated"] + - ["java.time", "DayOfWeek", "of", "(int)", "summary", "df-generated"] + - ["java.time", "DayOfWeek", "plus", "(long)", "summary", "df-generated"] + - ["java.time", "Duration", "between", "(Temporal,Temporal)", "summary", "df-generated"] + - ["java.time", "Duration", "dividedBy", "(Duration)", "summary", "df-generated"] + - ["java.time", "Duration", "from", "(TemporalAmount)", "summary", "df-generated"] + - ["java.time", "Duration", "getNano", "()", "summary", "df-generated"] + - ["java.time", "Duration", "getSeconds", "()", "summary", "df-generated"] + - ["java.time", "Duration", "isNegative", "()", "summary", "df-generated"] + - ["java.time", "Duration", "isZero", "()", "summary", "df-generated"] + - ["java.time", "Duration", "of", "(long,TemporalUnit)", "summary", "df-generated"] + - ["java.time", "Duration", "ofDays", "(long)", "summary", "df-generated"] + - ["java.time", "Duration", "ofHours", "(long)", "summary", "df-generated"] + - ["java.time", "Duration", "ofNanos", "(long)", "summary", "df-generated"] + - ["java.time", "Duration", "ofSeconds", "(long,long)", "summary", "df-generated"] + - ["java.time", "Duration", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "Duration", "toDays", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toDaysPart", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toHours", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toHoursPart", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toMillisPart", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toMinutes", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toMinutesPart", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toNanos", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toNanosPart", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toSeconds", "()", "summary", "df-generated"] + - ["java.time", "Duration", "toSecondsPart", "()", "summary", "df-generated"] + - ["java.time", "Duration", "withNanos", "(int)", "summary", "df-generated"] + - ["java.time", "Duration", "withSeconds", "(long)", "summary", "df-generated"] + - ["java.time", "Instant", "getEpochSecond", "()", "summary", "df-generated"] + - ["java.time", "Instant", "getNano", "()", "summary", "df-generated"] + - ["java.time", "Instant", "isAfter", "(Instant)", "summary", "df-generated"] + - ["java.time", "Instant", "isBefore", "(Instant)", "summary", "df-generated"] + - ["java.time", "Instant", "ofEpochSecond", "(long)", "summary", "df-generated"] + - ["java.time", "Instant", "ofEpochSecond", "(long,long)", "summary", "df-generated"] + - ["java.time", "InstantSource", "millis", "()", "summary", "df-generated"] + - ["java.time", "InstantSource", "system", "()", "summary", "df-generated"] + - ["java.time", "LocalDate", "datesUntil", "(LocalDate)", "summary", "df-generated"] + - ["java.time", "LocalDate", "datesUntil", "(LocalDate,Period)", "summary", "df-generated"] + - ["java.time", "LocalDate", "getDayOfMonth", "()", "summary", "df-generated"] + - ["java.time", "LocalDate", "getDayOfWeek", "()", "summary", "df-generated"] + - ["java.time", "LocalDate", "getDayOfYear", "()", "summary", "df-generated"] + - ["java.time", "LocalDate", "getMonth", "()", "summary", "df-generated"] + - ["java.time", "LocalDate", "getMonthValue", "()", "summary", "df-generated"] + - ["java.time", "LocalDate", "getYear", "()", "summary", "df-generated"] + - ["java.time", "LocalDate", "now", "(Clock)", "summary", "df-generated"] + - ["java.time", "LocalDate", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time", "LocalDate", "of", "(int,Month,int)", "summary", "df-generated"] + - ["java.time", "LocalDate", "ofEpochDay", "(long)", "summary", "df-generated"] + - ["java.time", "LocalDate", "ofInstant", "(Instant,ZoneId)", "summary", "df-generated"] + - ["java.time", "LocalDate", "ofYearDay", "(int,int)", "summary", "df-generated"] + - ["java.time", "LocalDate", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "LocalDate", "toEpochSecond", "(LocalTime,ZoneOffset)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getDayOfMonth", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getDayOfWeek", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getDayOfYear", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getHour", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getMinute", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getMonth", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getMonthValue", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getNano", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getSecond", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "getYear", "()", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "now", "(Clock)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "of", "(int,Month,int,int,int)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "of", "(int,Month,int,int,int,int)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "of", "(int,Month,int,int,int,int,int)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "of", "(int,int,int,int,int)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "of", "(int,int,int,int,int,int,int)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "ofEpochSecond", "(long,int,ZoneOffset)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "ofInstant", "(Instant,ZoneId)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "LocalDateTime", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "LocalTime", "getHour", "()", "summary", "df-generated"] + - ["java.time", "LocalTime", "getMinute", "()", "summary", "df-generated"] + - ["java.time", "LocalTime", "getNano", "()", "summary", "df-generated"] + - ["java.time", "LocalTime", "getSecond", "()", "summary", "df-generated"] + - ["java.time", "LocalTime", "isAfter", "(LocalTime)", "summary", "df-generated"] + - ["java.time", "LocalTime", "isBefore", "(LocalTime)", "summary", "df-generated"] + - ["java.time", "LocalTime", "now", "()", "summary", "df-generated"] + - ["java.time", "LocalTime", "now", "(Clock)", "summary", "df-generated"] + - ["java.time", "LocalTime", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time", "LocalTime", "of", "(int,int)", "summary", "df-generated"] + - ["java.time", "LocalTime", "of", "(int,int,int)", "summary", "df-generated"] + - ["java.time", "LocalTime", "of", "(int,int,int,int)", "summary", "df-generated"] + - ["java.time", "LocalTime", "ofInstant", "(Instant,ZoneId)", "summary", "df-generated"] + - ["java.time", "LocalTime", "ofNanoOfDay", "(long)", "summary", "df-generated"] + - ["java.time", "LocalTime", "ofSecondOfDay", "(long)", "summary", "df-generated"] + - ["java.time", "LocalTime", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "LocalTime", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "LocalTime", "toEpochSecond", "(LocalDate,ZoneOffset)", "summary", "df-generated"] + - ["java.time", "LocalTime", "toNanoOfDay", "()", "summary", "df-generated"] + - ["java.time", "LocalTime", "toSecondOfDay", "()", "summary", "df-generated"] + - ["java.time", "Month", "firstDayOfYear", "(boolean)", "summary", "df-generated"] + - ["java.time", "Month", "firstMonthOfQuarter", "()", "summary", "df-generated"] + - ["java.time", "Month", "from", "(TemporalAccessor)", "summary", "df-generated"] + - ["java.time", "Month", "getValue", "()", "summary", "df-generated"] + - ["java.time", "Month", "length", "(boolean)", "summary", "df-generated"] + - ["java.time", "Month", "maxLength", "()", "summary", "df-generated"] + - ["java.time", "Month", "minLength", "()", "summary", "df-generated"] + - ["java.time", "Month", "minus", "(long)", "summary", "df-generated"] + - ["java.time", "Month", "of", "(int)", "summary", "df-generated"] + - ["java.time", "Month", "plus", "(long)", "summary", "df-generated"] + - ["java.time", "MonthDay", "atYear", "(int)", "summary", "df-generated"] + - ["java.time", "MonthDay", "getDayOfMonth", "()", "summary", "df-generated"] + - ["java.time", "MonthDay", "getMonth", "()", "summary", "df-generated"] + - ["java.time", "MonthDay", "getMonthValue", "()", "summary", "df-generated"] + - ["java.time", "MonthDay", "isAfter", "(MonthDay)", "summary", "df-generated"] + - ["java.time", "MonthDay", "isBefore", "(MonthDay)", "summary", "df-generated"] + - ["java.time", "MonthDay", "isValidYear", "(int)", "summary", "df-generated"] + - ["java.time", "MonthDay", "now", "()", "summary", "df-generated"] + - ["java.time", "MonthDay", "now", "(Clock)", "summary", "df-generated"] + - ["java.time", "MonthDay", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time", "MonthDay", "of", "(Month,int)", "summary", "df-generated"] + - ["java.time", "MonthDay", "of", "(int,int)", "summary", "df-generated"] + - ["java.time", "MonthDay", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "MonthDay", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getDayOfMonth", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getDayOfWeek", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getDayOfYear", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getHour", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getMinute", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getMonth", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getMonthValue", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getNano", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getSecond", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "getYear", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "isAfter", "(OffsetDateTime)", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "isBefore", "(OffsetDateTime)", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "isEqual", "(OffsetDateTime)", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "now", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "timeLineOrder", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "toEpochSecond", "()", "summary", "df-generated"] + - ["java.time", "OffsetDateTime", "toInstant", "()", "summary", "df-generated"] + - ["java.time", "OffsetTime", "getHour", "()", "summary", "df-generated"] + - ["java.time", "OffsetTime", "getMinute", "()", "summary", "df-generated"] + - ["java.time", "OffsetTime", "getNano", "()", "summary", "df-generated"] + - ["java.time", "OffsetTime", "getSecond", "()", "summary", "df-generated"] + - ["java.time", "OffsetTime", "isAfter", "(OffsetTime)", "summary", "df-generated"] + - ["java.time", "OffsetTime", "isBefore", "(OffsetTime)", "summary", "df-generated"] + - ["java.time", "OffsetTime", "isEqual", "(OffsetTime)", "summary", "df-generated"] + - ["java.time", "OffsetTime", "now", "()", "summary", "df-generated"] + - ["java.time", "OffsetTime", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "OffsetTime", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "OffsetTime", "toEpochSecond", "(LocalDate)", "summary", "df-generated"] + - ["java.time", "Period", "between", "(LocalDate,LocalDate)", "summary", "df-generated"] + - ["java.time", "Period", "getDays", "()", "summary", "df-generated"] + - ["java.time", "Period", "getMonths", "()", "summary", "df-generated"] + - ["java.time", "Period", "getYears", "()", "summary", "df-generated"] + - ["java.time", "Period", "of", "(int,int,int)", "summary", "df-generated"] + - ["java.time", "Period", "ofDays", "(int)", "summary", "df-generated"] + - ["java.time", "Period", "ofMonths", "(int)", "summary", "df-generated"] + - ["java.time", "Period", "ofWeeks", "(int)", "summary", "df-generated"] + - ["java.time", "Period", "ofYears", "(int)", "summary", "df-generated"] + - ["java.time", "Period", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "Period", "toTotalMonths", "()", "summary", "df-generated"] + - ["java.time", "Year", "atDay", "(int)", "summary", "df-generated"] + - ["java.time", "Year", "atMonth", "(Month)", "summary", "df-generated"] + - ["java.time", "Year", "atMonth", "(int)", "summary", "df-generated"] + - ["java.time", "Year", "atMonthDay", "(MonthDay)", "summary", "df-generated"] + - ["java.time", "Year", "getValue", "()", "summary", "df-generated"] + - ["java.time", "Year", "isAfter", "(Year)", "summary", "df-generated"] + - ["java.time", "Year", "isBefore", "(Year)", "summary", "df-generated"] + - ["java.time", "Year", "isLeap", "()", "summary", "df-generated"] + - ["java.time", "Year", "isLeap", "(long)", "summary", "df-generated"] + - ["java.time", "Year", "isValidMonthDay", "(MonthDay)", "summary", "df-generated"] + - ["java.time", "Year", "length", "()", "summary", "df-generated"] + - ["java.time", "Year", "now", "()", "summary", "df-generated"] + - ["java.time", "Year", "now", "(Clock)", "summary", "df-generated"] + - ["java.time", "Year", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time", "Year", "of", "(int)", "summary", "df-generated"] + - ["java.time", "Year", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "Year", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "YearMonth", "atDay", "(int)", "summary", "df-generated"] + - ["java.time", "YearMonth", "atEndOfMonth", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "getMonth", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "getMonthValue", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "getYear", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "isAfter", "(YearMonth)", "summary", "df-generated"] + - ["java.time", "YearMonth", "isBefore", "(YearMonth)", "summary", "df-generated"] + - ["java.time", "YearMonth", "isLeapYear", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "isValidDay", "(int)", "summary", "df-generated"] + - ["java.time", "YearMonth", "lengthOfMonth", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "lengthOfYear", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "now", "()", "summary", "df-generated"] + - ["java.time", "YearMonth", "now", "(Clock)", "summary", "df-generated"] + - ["java.time", "YearMonth", "now", "(ZoneId)", "summary", "df-generated"] + - ["java.time", "YearMonth", "of", "(int,Month)", "summary", "df-generated"] + - ["java.time", "YearMonth", "of", "(int,int)", "summary", "df-generated"] + - ["java.time", "YearMonth", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "YearMonth", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] + - ["java.time", "ZoneId", "getAvailableZoneIds", "()", "summary", "df-generated"] + - ["java.time", "ZoneOffset", "getTotalSeconds", "()", "summary", "df-generated"] + - ["java.time", "ZoneOffset", "of", "(String)", "summary", "df-generated"] + - ["java.time", "ZoneOffset", "ofHours", "(int)", "summary", "df-generated"] + - ["java.time", "ZoneOffset", "ofHoursMinutes", "(int,int)", "summary", "df-generated"] + - ["java.time", "ZoneOffset", "ofHoursMinutesSeconds", "(int,int,int)", "summary", "df-generated"] + - ["java.time", "ZoneOffset", "ofTotalSeconds", "(int)", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getDayOfMonth", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getDayOfWeek", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getDayOfYear", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getHour", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getMinute", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getMonth", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getMonthValue", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getNano", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getSecond", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "getYear", "()", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "parse", "(CharSequence)", "summary", "df-generated"] + - ["java.time", "ZonedDateTime", "parse", "(CharSequence,DateTimeFormatter)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.time.temporal.model.yml b/java/ql/lib/ext/generated/java.time.temporal.model.yml new file mode 100644 index 000000000000..d0b179822386 --- /dev/null +++ b/java/ql/lib/ext/generated/java.time.temporal.model.yml @@ -0,0 +1,97 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.time.temporal", "Temporal", True, "minus", "(TemporalAmount)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "Temporal", True, "minus", "(long,TemporalUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "Temporal", True, "plus", "(TemporalAmount)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "Temporal", True, "plus", "(long,TemporalUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "Temporal", True, "with", "(TemporalAdjuster)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "Temporal", True, "with", "(TemporalAdjuster)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "Temporal", True, "with", "(TemporalField,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "Temporal", True, "with", "(TemporalField,long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.time.temporal", "TemporalAccessor", True, "query", "(TemporalQuery)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalAccessor", True, "range", "(TemporalField)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalAdjuster", True, "adjustInto", "(Temporal)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalAmount", True, "addTo", "(Temporal)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalAmount", True, "subtractFrom", "(Temporal)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "adjustInto", "(Temporal,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "getBaseUnit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "getDisplayName", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "getDisplayName", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "getRangeUnit", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "range", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "rangeRefinedBy", "(TemporalAccessor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalField", True, "resolve", "(Map,TemporalAccessor,ResolverStyle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "TemporalUnit", True, "addTo", "(Temporal,long)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "UnsupportedTemporalTypeException", True, "UnsupportedTemporalTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time.temporal", "UnsupportedTemporalTypeException", True, "UnsupportedTemporalTypeException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time.temporal", "UnsupportedTemporalTypeException", True, "UnsupportedTemporalTypeException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.time.temporal", "WeekFields", False, "dayOfWeek", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "WeekFields", False, "weekBasedYear", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "WeekFields", False, "weekOfMonth", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "WeekFields", False, "weekOfWeekBasedYear", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.temporal", "WeekFields", False, "weekOfYear", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.time.temporal", "ChronoField", "checkValidIntValue", "(long)", "summary", "df-generated"] + - ["java.time.temporal", "ChronoField", "checkValidValue", "(long)", "summary", "df-generated"] + - ["java.time.temporal", "Temporal", "isSupported", "(TemporalUnit)", "summary", "df-generated"] + - ["java.time.temporal", "Temporal", "until", "(Temporal,TemporalUnit)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAccessor", "get", "(TemporalField)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAccessor", "getLong", "(TemporalField)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAccessor", "isSupported", "(TemporalField)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "dayOfWeekInMonth", "(int,DayOfWeek)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "firstDayOfMonth", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "firstDayOfNextMonth", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "firstDayOfNextYear", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "firstDayOfYear", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "firstInMonth", "(DayOfWeek)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "lastDayOfMonth", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "lastDayOfYear", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "lastInMonth", "(DayOfWeek)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "next", "(DayOfWeek)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "nextOrSame", "(DayOfWeek)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "ofDateAdjuster", "(UnaryOperator)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "previous", "(DayOfWeek)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAdjusters", "previousOrSame", "(DayOfWeek)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAmount", "get", "(TemporalUnit)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalAmount", "getUnits", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalField", "getFrom", "(TemporalAccessor)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalField", "isDateBased", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalField", "isSupportedBy", "(TemporalAccessor)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalField", "isTimeBased", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalQueries", "chronology", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalQueries", "localDate", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalQueries", "localTime", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalQueries", "offset", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalQueries", "precision", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalQueries", "zone", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalQueries", "zoneId", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalUnit", "between", "(Temporal,Temporal)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalUnit", "getDuration", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalUnit", "isDateBased", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalUnit", "isDurationEstimated", "()", "summary", "df-generated"] + - ["java.time.temporal", "TemporalUnit", "isSupportedBy", "(Temporal)", "summary", "df-generated"] + - ["java.time.temporal", "TemporalUnit", "isTimeBased", "()", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "checkValidIntValue", "(long,TemporalField)", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "checkValidValue", "(long,TemporalField)", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "getLargestMinimum", "()", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "getMaximum", "()", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "getMinimum", "()", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "getSmallestMaximum", "()", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "isFixed", "()", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "isIntValue", "()", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "isValidIntValue", "(long)", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "isValidValue", "(long)", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "of", "(long,long)", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "of", "(long,long,long)", "summary", "df-generated"] + - ["java.time.temporal", "ValueRange", "of", "(long,long,long,long)", "summary", "df-generated"] + - ["java.time.temporal", "WeekFields", "getFirstDayOfWeek", "()", "summary", "df-generated"] + - ["java.time.temporal", "WeekFields", "getMinimalDaysInFirstWeek", "()", "summary", "df-generated"] + - ["java.time.temporal", "WeekFields", "of", "(DayOfWeek,int)", "summary", "df-generated"] + - ["java.time.temporal", "WeekFields", "of", "(Locale)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.time.zone.model.yml b/java/ql/lib/ext/generated/java.time.zone.model.yml new file mode 100644 index 000000000000..1501f58c1406 --- /dev/null +++ b/java/ql/lib/ext/generated/java.time.zone.model.yml @@ -0,0 +1,63 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.time.zone", "ZoneOffsetTransition", False, "getDateTimeAfter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", False, "getDateTimeBefore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", False, "getOffsetAfter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", False, "getOffsetBefore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", False, "of", "(LocalDateTime,ZoneOffset,ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", False, "of", "(LocalDateTime,ZoneOffset,ZoneOffset)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", False, "of", "(LocalDateTime,ZoneOffset,ZoneOffset)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule$TimeDefinition", False, "createDateTime", "(LocalDateTime,ZoneOffset,ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "createTransition", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "getLocalTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "getOffsetAfter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "getOffsetBefore", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "getStandardOffset", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "of", "(Month,int,DayOfWeek,LocalTime,boolean,ZoneOffsetTransitionRule$TimeDefinition,ZoneOffset,ZoneOffset,ZoneOffset)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "of", "(Month,int,DayOfWeek,LocalTime,boolean,ZoneOffsetTransitionRule$TimeDefinition,ZoneOffset,ZoneOffset,ZoneOffset)", "", "Argument[6]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "of", "(Month,int,DayOfWeek,LocalTime,boolean,ZoneOffsetTransitionRule$TimeDefinition,ZoneOffset,ZoneOffset,ZoneOffset)", "", "Argument[7]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", False, "of", "(Month,int,DayOfWeek,LocalTime,boolean,ZoneOffsetTransitionRule$TimeDefinition,ZoneOffset,ZoneOffset,ZoneOffset)", "", "Argument[8]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "getOffset", "(Instant)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "getOffset", "(LocalDateTime)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "getStandardOffset", "(Instant)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "getTransition", "(LocalDateTime)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "getTransitionRules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "getTransitions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "getValidOffsets", "(LocalDateTime)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "nextTransition", "(Instant)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "of", "(ZoneOffset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "of", "(ZoneOffset,ZoneOffset,List,List,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "of", "(ZoneOffset,ZoneOffset,List,List,List)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "of", "(ZoneOffset,ZoneOffset,List,List,List)", "", "Argument[4].Element", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRules", False, "previousTransition", "(Instant)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.time.zone", "ZoneRulesException", True, "ZoneRulesException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time.zone", "ZoneRulesException", True, "ZoneRulesException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.time.zone", "ZoneRulesException", True, "ZoneRulesException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.time.zone", "ZoneOffsetTransition", "getDuration", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", "getInstant", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", "isGap", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", "isOverlap", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", "isValidOffset", "(ZoneOffset)", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransition", "toEpochSecond", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", "getDayOfMonthIndicator", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", "getDayOfWeek", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", "getMonth", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", "getTimeDefinition", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneOffsetTransitionRule", "isMidnightEndOfDay", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneRules", "getDaylightSavings", "(Instant)", "summary", "df-generated"] + - ["java.time.zone", "ZoneRules", "isDaylightSavings", "(Instant)", "summary", "df-generated"] + - ["java.time.zone", "ZoneRules", "isFixedOffset", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneRules", "isValidOffset", "(LocalDateTime,ZoneOffset)", "summary", "df-generated"] + - ["java.time.zone", "ZoneRulesProvider", "getAvailableZoneIds", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneRulesProvider", "getRules", "(String,boolean)", "summary", "df-generated"] + - ["java.time.zone", "ZoneRulesProvider", "getVersions", "(String)", "summary", "df-generated"] + - ["java.time.zone", "ZoneRulesProvider", "refresh", "()", "summary", "df-generated"] + - ["java.time.zone", "ZoneRulesProvider", "registerProvider", "(ZoneRulesProvider)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.concurrent.atomic.model.yml b/java/ql/lib/ext/generated/java.util.concurrent.atomic.model.yml new file mode 100644 index 000000000000..7f40c376f34e --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.concurrent.atomic.model.yml @@ -0,0 +1,271 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.concurrent.atomic", "AtomicMarkableReference", True, "AtomicMarkableReference", "(Object,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicMarkableReference", True, "get", "(boolean[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicMarkableReference", True, "getReference", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicMarkableReference", True, "set", "(Object,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", True, "getAndAccumulate", "(Object,BinaryOperator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", True, "getAndUpdate", "(UnaryOperator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", True, "updateAndGet", "(UnaryOperator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", True, "AtomicReferenceArray", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", True, "AtomicStampedReference", "(Object,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", True, "get", "(int[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", True, "getReference", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", True, "set", "(Object,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.concurrent.atomic", "AtomicBoolean", "compareAndExchange", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "compareAndExchangeAcquire", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "compareAndExchangeRelease", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "getAcquire", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "getAndSet", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "getOpaque", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "getPlain", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "lazySet", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "setOpaque", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "setPlain", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "setRelease", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "weakCompareAndSet", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "weakCompareAndSetAcquire", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "weakCompareAndSetPlain", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "weakCompareAndSetRelease", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicBoolean", "weakCompareAndSetVolatile", "(boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "accumulateAndGet", "(int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "addAndGet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "compareAndExchange", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "compareAndExchangeAcquire", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "compareAndExchangeRelease", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "compareAndSet", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "decrementAndGet", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getAcquire", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getAndAccumulate", "(int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getAndAdd", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getAndDecrement", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getAndIncrement", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getAndSet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getAndUpdate", "(IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getOpaque", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "getPlain", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "lazySet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "set", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "setOpaque", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "setPlain", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "setRelease", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "updateAndGet", "(IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "weakCompareAndSet", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "weakCompareAndSetAcquire", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "weakCompareAndSetPlain", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "weakCompareAndSetRelease", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicInteger", "weakCompareAndSetVolatile", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "AtomicIntegerArray", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "AtomicIntegerArray", "(int[])", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "accumulateAndGet", "(int,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "addAndGet", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "compareAndExchange", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "compareAndExchangeAcquire", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "compareAndExchangeRelease", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "compareAndSet", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "decrementAndGet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "get", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getAcquire", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getAndAccumulate", "(int,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getAndAdd", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getAndDecrement", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getAndIncrement", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getAndSet", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getAndUpdate", "(int,IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getOpaque", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "getPlain", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "incrementAndGet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "lazySet", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "length", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "set", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "setOpaque", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "setPlain", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "setRelease", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "updateAndGet", "(int,IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "weakCompareAndSet", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "weakCompareAndSetAcquire", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "weakCompareAndSetPlain", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "weakCompareAndSetRelease", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerArray", "weakCompareAndSetVolatile", "(int,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "accumulateAndGet", "(Object,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "addAndGet", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "compareAndSet", "(Object,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "decrementAndGet", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "get", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "getAndAccumulate", "(Object,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "getAndAdd", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "getAndDecrement", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "getAndIncrement", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "getAndSet", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "getAndUpdate", "(Object,IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "incrementAndGet", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "lazySet", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "newUpdater", "(Class,String)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "set", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "updateAndGet", "(Object,IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicIntegerFieldUpdater", "weakCompareAndSet", "(Object,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "accumulateAndGet", "(long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "compareAndExchange", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "compareAndExchangeAcquire", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "compareAndExchangeRelease", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "compareAndSet", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "decrementAndGet", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getAcquire", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getAndAccumulate", "(long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getAndAdd", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getAndDecrement", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getAndIncrement", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getAndSet", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getAndUpdate", "(LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getOpaque", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "getPlain", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "lazySet", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "set", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "setOpaque", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "setPlain", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "setRelease", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "updateAndGet", "(LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "weakCompareAndSet", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "weakCompareAndSetAcquire", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "weakCompareAndSetPlain", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "weakCompareAndSetRelease", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLong", "weakCompareAndSetVolatile", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "AtomicLongArray", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "AtomicLongArray", "(long[])", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "accumulateAndGet", "(int,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "addAndGet", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "compareAndExchange", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "compareAndExchangeAcquire", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "compareAndExchangeRelease", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "compareAndSet", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "decrementAndGet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "get", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getAcquire", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getAndAccumulate", "(int,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getAndAdd", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getAndDecrement", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getAndIncrement", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getAndSet", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getAndUpdate", "(int,LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getOpaque", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "getPlain", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "incrementAndGet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "lazySet", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "length", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "set", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "setOpaque", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "setPlain", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "setRelease", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "updateAndGet", "(int,LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "weakCompareAndSet", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "weakCompareAndSetAcquire", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "weakCompareAndSetPlain", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "weakCompareAndSetRelease", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongArray", "weakCompareAndSetVolatile", "(int,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "accumulateAndGet", "(Object,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "addAndGet", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "compareAndSet", "(Object,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "decrementAndGet", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "get", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "getAndAccumulate", "(Object,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "getAndAdd", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "getAndDecrement", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "getAndIncrement", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "getAndSet", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "getAndUpdate", "(Object,LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "incrementAndGet", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "lazySet", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "newUpdater", "(Class,String)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "set", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "updateAndGet", "(Object,LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicLongFieldUpdater", "weakCompareAndSet", "(Object,long,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicMarkableReference", "attemptMark", "(Object,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicMarkableReference", "compareAndSet", "(Object,Object,boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicMarkableReference", "isMarked", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicMarkableReference", "weakCompareAndSet", "(Object,Object,boolean,boolean)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "accumulateAndGet", "(Object,BinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "compareAndExchange", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "compareAndExchangeAcquire", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "compareAndExchangeRelease", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "compareAndSet", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "getAcquire", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "getAndSet", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "getOpaque", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "getPlain", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "lazySet", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "setOpaque", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "setPlain", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "setRelease", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "weakCompareAndSet", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "weakCompareAndSetAcquire", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "weakCompareAndSetPlain", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "weakCompareAndSetRelease", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReference", "weakCompareAndSetVolatile", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "AtomicReferenceArray", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "accumulateAndGet", "(int,Object,BinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "compareAndExchange", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "compareAndExchangeAcquire", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "compareAndExchangeRelease", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "compareAndSet", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "get", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "getAcquire", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "getAndAccumulate", "(int,Object,BinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "getAndSet", "(int,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "getAndUpdate", "(int,UnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "getOpaque", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "getPlain", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "lazySet", "(int,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "length", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "set", "(int,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "setOpaque", "(int,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "setPlain", "(int,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "setRelease", "(int,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "updateAndGet", "(int,UnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "weakCompareAndSet", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "weakCompareAndSetAcquire", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "weakCompareAndSetPlain", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "weakCompareAndSetRelease", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceArray", "weakCompareAndSetVolatile", "(int,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "accumulateAndGet", "(Object,Object,BinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "compareAndSet", "(Object,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "get", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "getAndAccumulate", "(Object,Object,BinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "getAndSet", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "getAndUpdate", "(Object,UnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "lazySet", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "newUpdater", "(Class,Class,String)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "set", "(Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "updateAndGet", "(Object,UnaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicReferenceFieldUpdater", "weakCompareAndSet", "(Object,Object,Object)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", "attemptStamp", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", "compareAndSet", "(Object,Object,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", "getStamp", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "AtomicStampedReference", "weakCompareAndSet", "(Object,Object,int,int)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAccumulator", "DoubleAccumulator", "(DoubleBinaryOperator,double)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAccumulator", "accumulate", "(double)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAccumulator", "get", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAccumulator", "getThenReset", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAccumulator", "reset", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAdder", "add", "(double)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAdder", "reset", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAdder", "sum", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "DoubleAdder", "sumThenReset", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAccumulator", "LongAccumulator", "(LongBinaryOperator,long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAccumulator", "accumulate", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAccumulator", "get", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAccumulator", "getThenReset", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAccumulator", "reset", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAdder", "add", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAdder", "decrement", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAdder", "increment", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAdder", "reset", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAdder", "sum", "()", "summary", "df-generated"] + - ["java.util.concurrent.atomic", "LongAdder", "sumThenReset", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.concurrent.locks.model.yml b/java/ql/lib/ext/generated/java.util.concurrent.locks.model.yml new file mode 100644 index 000000000000..e8f78f593d0e --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.concurrent.locks.model.yml @@ -0,0 +1,128 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", True, "getExclusiveQueuedThreads", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", True, "getFirstQueuedThread", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", True, "getQueuedThreads", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", True, "getSharedQueuedThreads", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", True, "getWaitingThreads", "(AbstractQueuedLongSynchronizer$ConditionObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", True, "getExclusiveQueuedThreads", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", True, "getFirstQueuedThread", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", True, "getQueuedThreads", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", True, "getSharedQueuedThreads", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", True, "getWaitingThreads", "(AbstractQueuedSynchronizer$ConditionObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "ReadWriteLock", True, "readLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "ReadWriteLock", True, "writeLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", True, "asReadLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", True, "asReadWriteLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", True, "asWriteLock", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "acquire", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "acquireInterruptibly", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "acquireShared", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "acquireSharedInterruptibly", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "getQueueLength", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "getWaitQueueLength", "(AbstractQueuedLongSynchronizer$ConditionObject)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "hasContended", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "hasQueuedPredecessors", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "hasQueuedThreads", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "hasWaiters", "(AbstractQueuedLongSynchronizer$ConditionObject)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "isQueued", "(Thread)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "owns", "(AbstractQueuedLongSynchronizer$ConditionObject)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "release", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "releaseShared", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "tryAcquireNanos", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedLongSynchronizer", "tryAcquireSharedNanos", "(long,long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "acquire", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "acquireInterruptibly", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "acquireShared", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "acquireSharedInterruptibly", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "getQueueLength", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "getWaitQueueLength", "(AbstractQueuedSynchronizer$ConditionObject)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "hasContended", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "hasQueuedPredecessors", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "hasQueuedThreads", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "hasWaiters", "(AbstractQueuedSynchronizer$ConditionObject)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "isQueued", "(Thread)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "owns", "(AbstractQueuedSynchronizer$ConditionObject)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "release", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "releaseShared", "(int)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "tryAcquireNanos", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "AbstractQueuedSynchronizer", "tryAcquireSharedNanos", "(int,long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Condition", "await", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Condition", "await", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Condition", "awaitNanos", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Condition", "awaitUninterruptibly", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Condition", "awaitUntil", "(Date)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Condition", "signal", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Condition", "signalAll", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Lock", "lock", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Lock", "lockInterruptibly", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Lock", "newCondition", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Lock", "tryLock", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Lock", "tryLock", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "Lock", "unlock", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "getBlocker", "(Thread)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "park", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "park", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "parkNanos", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "parkNanos", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "parkUntil", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "parkUntil", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "setCurrentBlocker", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "LockSupport", "unpark", "(Thread)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "ReentrantLock", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "getHoldCount", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "getQueueLength", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "getWaitQueueLength", "(Condition)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "hasQueuedThread", "(Thread)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "hasQueuedThreads", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "hasWaiters", "(Condition)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "isFair", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "isHeldByCurrentThread", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantLock", "isLocked", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock$WriteLock", "getHoldCount", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock$WriteLock", "isHeldByCurrentThread", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "ReentrantReadWriteLock", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "getQueueLength", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "getReadHoldCount", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "getReadLockCount", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "getWaitQueueLength", "(Condition)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "getWriteHoldCount", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "hasQueuedThread", "(Thread)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "hasQueuedThreads", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "hasWaiters", "(Condition)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "isFair", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "isWriteLocked", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "ReentrantReadWriteLock", "isWriteLockedByCurrentThread", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "getReadLockCount", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "isLockStamp", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "isOptimisticReadStamp", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "isReadLockStamp", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "isReadLocked", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "isWriteLockStamp", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "isWriteLocked", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "readLock", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "readLockInterruptibly", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryConvertToOptimisticRead", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryConvertToReadLock", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryConvertToWriteLock", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryOptimisticRead", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryReadLock", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryReadLock", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryUnlockRead", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryUnlockWrite", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryWriteLock", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "tryWriteLock", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "unlock", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "unlockRead", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "unlockWrite", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "validate", "(long)", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "writeLock", "()", "summary", "df-generated"] + - ["java.util.concurrent.locks", "StampedLock", "writeLockInterruptibly", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.concurrent.model.yml b/java/ql/lib/ext/generated/java.util.concurrent.model.yml new file mode 100644 index 000000000000..528a8eb31836 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.concurrent.model.yml @@ -0,0 +1,374 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.concurrent", "BrokenBarrierException", True, "BrokenBarrierException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CancellationException", True, "CancellationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "allOf", "(CompletableFuture[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "anyOf", "(CompletableFuture[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "completeAsync", "(Supplier)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "completeAsync", "(Supplier,Executor)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "completeOnTimeout", "(Object,long,TimeUnit)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "copy", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "delayedExecutor", "(long,TimeUnit,Executor)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "getNow", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "getNow", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "obtrudeException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "obtrudeValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", True, "orTimeout", "(long,TimeUnit)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.concurrent", "CompletionException", True, "CompletionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CompletionException", True, "CompletionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CompletionException", True, "CompletionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CompletionStage", True, "exceptionallyAsync", "(Function)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletionStage", True, "exceptionallyAsync", "(Function,Executor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletionStage", True, "exceptionallyCompose", "(Function)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletionStage", True, "exceptionallyComposeAsync", "(Function)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CompletionStage", True, "exceptionallyComposeAsync", "(Function,Executor)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap$KeySetView", True, "getMappedValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", True, "ConcurrentHashMap", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", True, "keySet", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", True, "keySet", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", True, "keys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentSkipListMap", True, "ConcurrentSkipListMap", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentSkipListMap", True, "ConcurrentSkipListMap", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentSkipListSet", True, "ConcurrentSkipListSet", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentSkipListSet", True, "ConcurrentSkipListSet", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ConcurrentSkipListSet", True, "ConcurrentSkipListSet", "(SortedSet)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CopyOnWriteArrayList", True, "CopyOnWriteArrayList", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CopyOnWriteArrayList", True, "CopyOnWriteArrayList", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CopyOnWriteArrayList", True, "addAllAbsent", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CopyOnWriteArrayList", True, "addIfAbsent", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CopyOnWriteArraySet", True, "CopyOnWriteArraySet", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", True, "firstComplete", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", True, "getCompleter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", True, "getRoot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", True, "nextComplete", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", True, "CyclicBarrier", "(int,Runnable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "DelayQueue", True, "DelayQueue", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "Exchanger", True, "exchange", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Exchanger", True, "exchange", "(Object,long,TimeUnit)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutionException", True, "ExecutionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutionException", True, "ExecutionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutionException", True, "ExecutionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "Executor", True, "execute", "(Runnable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorCompletionService", True, "ExecutorCompletionService", "(Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorCompletionService", True, "ExecutorCompletionService", "(Executor,BlockingQueue)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorCompletionService", True, "ExecutorCompletionService", "(Executor,BlockingQueue)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorService", True, "invokeAll", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorService", True, "invokeAll", "(Collection,long,TimeUnit)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorService", True, "shutdownNow", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorService", True, "submit", "(Callable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorService", True, "submit", "(Runnable,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ExecutorService", True, "submit", "(Runnable,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "callable", "(Runnable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "callable", "(Runnable,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "callable", "(Runnable,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "newCachedThreadPool", "(ThreadFactory)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "newFixedThreadPool", "(int,ThreadFactory)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "newScheduledThreadPool", "(int,ThreadFactory)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "newSingleThreadExecutor", "(ThreadFactory)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "newSingleThreadScheduledExecutor", "(ThreadFactory)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "privilegedCallable", "(Callable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "privilegedCallableUsingCurrentClassLoader", "(Callable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "unconfigurableExecutorService", "(ExecutorService)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Executors", True, "unconfigurableScheduledExecutorService", "(ScheduledExecutorService)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool$ForkJoinWorkerThreadFactory", True, "newThread", "(ForkJoinPool)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "ForkJoinPool", "(int,ForkJoinPool$ForkJoinWorkerThreadFactory,Thread$UncaughtExceptionHandler,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "ForkJoinPool", "(int,ForkJoinPool$ForkJoinWorkerThreadFactory,Thread$UncaughtExceptionHandler,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "ForkJoinPool", "(int,ForkJoinPool$ForkJoinWorkerThreadFactory,Thread$UncaughtExceptionHandler,boolean,int,int,int,Predicate,long,TimeUnit)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "ForkJoinPool", "(int,ForkJoinPool$ForkJoinWorkerThreadFactory,Thread$UncaughtExceptionHandler,boolean,int,int,int,Predicate,long,TimeUnit)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "ForkJoinPool", "(int,ForkJoinPool$ForkJoinWorkerThreadFactory,Thread$UncaughtExceptionHandler,boolean,int,int,int,Predicate,long,TimeUnit)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "getFactory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "getUncaughtExceptionHandler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "invoke", "(ForkJoinTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", True, "submit", "(ForkJoinTask)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "adapt", "(Callable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "adapt", "(Runnable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "adapt", "(Runnable,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "adapt", "(Runnable,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "complete", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "fork", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "invoke", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", True, "invokeAll", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ForkJoinWorkerThread", True, "getPool", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "FutureTask", True, "FutureTask", "(Callable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "FutureTask", True, "FutureTask", "(Runnable,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "FutureTask", True, "FutureTask", "(Runnable,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "LinkedBlockingDeque", True, "LinkedBlockingDeque", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "LinkedBlockingQueue", True, "LinkedBlockingQueue", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "Phaser", True, "Phaser", "(Phaser)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "Phaser", True, "Phaser", "(Phaser,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "Phaser", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "Phaser", True, "getRoot", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "PriorityBlockingQueue", True, "PriorityBlockingQueue", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "PriorityBlockingQueue", True, "PriorityBlockingQueue", "(int,Comparator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "PriorityBlockingQueue", True, "comparator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "RejectedExecutionException", True, "RejectedExecutionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "RejectedExecutionException", True, "RejectedExecutionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "RejectedExecutionException", True, "RejectedExecutionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "RejectedExecutionException", True, "RejectedExecutionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "RejectedExecutionHandler", True, "rejectedExecution", "(Runnable,ThreadPoolExecutor)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledExecutorService", True, "schedule", "(Callable,long,TimeUnit)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledExecutorService", True, "schedule", "(Runnable,long,TimeUnit)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledExecutorService", True, "scheduleAtFixedRate", "(Runnable,long,long,TimeUnit)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledExecutorService", True, "scheduleWithFixedDelay", "(Runnable,long,long,TimeUnit)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", True, "ScheduledThreadPoolExecutor", "(int,RejectedExecutionHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", True, "ScheduledThreadPoolExecutor", "(int,ThreadFactory)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", True, "ScheduledThreadPoolExecutor", "(int,ThreadFactory,RejectedExecutionHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", True, "ScheduledThreadPoolExecutor", "(int,ThreadFactory,RejectedExecutionHandler)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", True, "SubmissionPublisher", "(Executor,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", True, "SubmissionPublisher", "(Executor,int,BiConsumer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", True, "SubmissionPublisher", "(Executor,int,BiConsumer)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", True, "closeExceptionally", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", True, "getClosedException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", True, "getExecutor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", True, "getSubscribers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadFactory", True, "newThread", "(Runnable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadFactory", True, "newThread", "(Runnable)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue)", "", "Argument[4].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue,RejectedExecutionHandler)", "", "Argument[4].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue,RejectedExecutionHandler)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue,ThreadFactory)", "", "Argument[4].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue,ThreadFactory)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue,ThreadFactory,RejectedExecutionHandler)", "", "Argument[4].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue,ThreadFactory,RejectedExecutionHandler)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "ThreadPoolExecutor", "(int,int,long,TimeUnit,BlockingQueue,ThreadFactory,RejectedExecutionHandler)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "getQueue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "getRejectedExecutionHandler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "getThreadFactory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "setRejectedExecutionHandler", "(RejectedExecutionHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", True, "setThreadFactory", "(ThreadFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.concurrent", "TimeoutException", True, "TimeoutException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.concurrent", "ArrayBlockingQueue", "ArrayBlockingQueue", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "ArrayBlockingQueue", "ArrayBlockingQueue", "(int,boolean)", "summary", "df-generated"] + - ["java.util.concurrent", "ArrayBlockingQueue", "ArrayBlockingQueue", "(int,boolean,Collection)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "completedStage", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "defaultExecutor", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "delayedExecutor", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "failedFuture", "(Throwable)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "failedStage", "(Throwable)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "getNumberOfDependents", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "isCompletedExceptionally", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "minimalCompletionStage", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "newIncompleteFuture", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "runAsync", "(Runnable)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "runAsync", "(Runnable,Executor)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "supplyAsync", "(Supplier)", "summary", "df-generated"] + - ["java.util.concurrent", "CompletableFuture", "supplyAsync", "(Supplier,Executor)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "ConcurrentHashMap", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "ConcurrentHashMap", "(int,float)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "ConcurrentHashMap", "(int,float,int)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "contains", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEach", "(long,BiConsumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEach", "(long,BiFunction,Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEachEntry", "(long,Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEachEntry", "(long,Function,Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEachKey", "(long,Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEachKey", "(long,Function,Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEachValue", "(long,Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "forEachValue", "(long,Function,Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "mappingCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "newKeySet", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "newKeySet", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduce", "(long,BiFunction,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceEntries", "(long,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceEntries", "(long,Function,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceEntriesToDouble", "(long,ToDoubleFunction,double,DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceEntriesToInt", "(long,ToIntFunction,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceEntriesToLong", "(long,ToLongFunction,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceKeys", "(long,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceKeys", "(long,Function,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceKeysToDouble", "(long,ToDoubleFunction,double,DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceKeysToInt", "(long,ToIntFunction,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceKeysToLong", "(long,ToLongFunction,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceToDouble", "(long,ToDoubleBiFunction,double,DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceToInt", "(long,ToIntBiFunction,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceToLong", "(long,ToLongBiFunction,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceValues", "(long,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceValues", "(long,Function,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceValuesToDouble", "(long,ToDoubleFunction,double,DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceValuesToInt", "(long,ToIntFunction,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "reduceValuesToLong", "(long,ToLongFunction,long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "search", "(long,BiFunction)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "searchEntries", "(long,Function)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "searchKeys", "(long,Function)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentHashMap", "searchValues", "(long,Function)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentLinkedDeque", "ConcurrentLinkedDeque", "(Collection)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentLinkedQueue", "ConcurrentLinkedQueue", "(Collection)", "summary", "df-generated"] + - ["java.util.concurrent", "ConcurrentSkipListMap", "ConcurrentSkipListMap", "(SortedMap)", "summary", "df-generated"] + - ["java.util.concurrent", "CopyOnWriteArrayList", "indexOf", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent", "CopyOnWriteArrayList", "lastIndexOf", "(Object,int)", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "addToPendingCount", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "compareAndSetPendingCount", "(int,int)", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "compute", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "decrementPendingCountUnlessZero", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "getPendingCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "helpComplete", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "onCompletion", "(CountedCompleter)", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "onExceptionalCompletion", "(Throwable,CountedCompleter)", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "propagateCompletion", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "quietlyCompleteRoot", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "setPendingCount", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "CountedCompleter", "tryComplete", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", "CyclicBarrier", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", "await", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", "await", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", "getNumberWaiting", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", "getParties", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", "isBroken", "()", "summary", "df-generated"] + - ["java.util.concurrent", "CyclicBarrier", "reset", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Delayed", "getDelay", "(TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "ExecutorService", "awaitTermination", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "ExecutorService", "invokeAny", "(Collection)", "summary", "df-generated"] + - ["java.util.concurrent", "ExecutorService", "invokeAny", "(Collection,long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "ExecutorService", "isShutdown", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ExecutorService", "isTerminated", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ExecutorService", "shutdown", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "callable", "(PrivilegedAction)", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "callable", "(PrivilegedExceptionAction)", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "defaultThreadFactory", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "newCachedThreadPool", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "newFixedThreadPool", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "newScheduledThreadPool", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "newSingleThreadExecutor", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "newSingleThreadScheduledExecutor", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "newWorkStealingPool", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "newWorkStealingPool", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Executors", "privilegedThreadFactory", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Flow$Subscription", "cancel", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Flow$Subscription", "request", "(long)", "summary", "df-generated"] + - ["java.util.concurrent", "Flow", "defaultBufferSize", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool$ManagedBlocker", "block", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool$ManagedBlocker", "isReleasable", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "ForkJoinPool", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "awaitQuiescence", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "commonPool", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "execute", "(ForkJoinTask)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getActiveThreadCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getAsyncMode", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getCommonPoolParallelism", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getParallelism", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getPoolSize", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getQueuedSubmissionCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getQueuedTaskCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getRunningThreadCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "getStealCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "hasQueuedSubmissions", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "isQuiescent", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "isTerminating", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinPool", "managedBlock", "(ForkJoinPool$ManagedBlocker)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "compareAndSetForkJoinTaskTag", "(short,short)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "completeExceptionally", "(Throwable)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "getForkJoinTaskTag", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "getPool", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "getQueuedTaskCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "getRawResult", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "getSurplusQueuedTaskCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "helpQuiesce", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "inForkJoinPool", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "invokeAll", "(ForkJoinTask,ForkJoinTask)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "invokeAll", "(ForkJoinTask[])", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "isCompletedAbnormally", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "isCompletedNormally", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "join", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "quietlyComplete", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "quietlyInvoke", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "quietlyJoin", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "reinitialize", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "setForkJoinTaskTag", "(short)", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinTask", "tryUnfork", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ForkJoinWorkerThread", "getPoolIndex", "()", "summary", "df-generated"] + - ["java.util.concurrent", "LinkedBlockingDeque", "LinkedBlockingDeque", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "LinkedBlockingQueue", "LinkedBlockingQueue", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "LinkedTransferQueue", "LinkedTransferQueue", "(Collection)", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "Phaser", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "arrive", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "arriveAndAwaitAdvance", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "arriveAndDeregister", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "awaitAdvance", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "awaitAdvanceInterruptibly", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "awaitAdvanceInterruptibly", "(int,long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "bulkRegister", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "forceTermination", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "getArrivedParties", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "getPhase", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "getRegisteredParties", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "getUnarrivedParties", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "isTerminated", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Phaser", "register", "()", "summary", "df-generated"] + - ["java.util.concurrent", "PriorityBlockingQueue", "PriorityBlockingQueue", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", "ScheduledThreadPoolExecutor", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", "getContinueExistingPeriodicTasksAfterShutdownPolicy", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", "getExecuteExistingDelayedTasksAfterShutdownPolicy", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", "getRemoveOnCancelPolicy", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", "setContinueExistingPeriodicTasksAfterShutdownPolicy", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", "setExecuteExistingDelayedTasksAfterShutdownPolicy", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent", "ScheduledThreadPoolExecutor", "setRemoveOnCancelPolicy", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "Semaphore", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "Semaphore", "(int,boolean)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "acquire", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "acquire", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "acquireUninterruptibly", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "acquireUninterruptibly", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "availablePermits", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "drainPermits", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "getQueueLength", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "hasQueuedThreads", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "isFair", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "release", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "release", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "tryAcquire", "()", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "tryAcquire", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "tryAcquire", "(int,long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "Semaphore", "tryAcquire", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "consume", "(Consumer)", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "estimateMaximumLag", "()", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "estimateMinimumDemand", "()", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "getMaxBufferCapacity", "()", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "getNumberOfSubscribers", "()", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "hasSubscribers", "()", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "isClosed", "()", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "isSubscribed", "(Flow$Subscriber)", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "offer", "(Object,BiPredicate)", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "offer", "(Object,long,TimeUnit,BiPredicate)", "summary", "df-generated"] + - ["java.util.concurrent", "SubmissionPublisher", "submit", "(Object)", "summary", "df-generated"] + - ["java.util.concurrent", "SynchronousQueue", "SynchronousQueue", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadLocalRandom", "current", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "allowCoreThreadTimeOut", "(boolean)", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "allowsCoreThreadTimeOut", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getActiveCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getCompletedTaskCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getCorePoolSize", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getKeepAliveTime", "(TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getLargestPoolSize", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getMaximumPoolSize", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getPoolSize", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "getTaskCount", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "isTerminating", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "prestartAllCoreThreads", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "prestartCoreThread", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "purge", "()", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "remove", "(Runnable)", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "setCorePoolSize", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "setKeepAliveTime", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "ThreadPoolExecutor", "setMaximumPoolSize", "(int)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "convert", "(Duration)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "convert", "(long,TimeUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "of", "(ChronoUnit)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "sleep", "(long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "timedJoin", "(Thread,long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "timedWait", "(Object,long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "toChronoUnit", "()", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "toDays", "(long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "toHours", "(long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "toMicros", "(long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "toMinutes", "(long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "toNanos", "(long)", "summary", "df-generated"] + - ["java.util.concurrent", "TimeUnit", "toSeconds", "(long)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.function.model.yml b/java/ql/lib/ext/generated/java.util.function.model.yml new file mode 100644 index 000000000000..5080eeeacc73 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.function.model.yml @@ -0,0 +1,46 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.function", "BiConsumer", "andThen", "(BiConsumer)", "summary", "df-generated"] + - ["java.util.function", "BiFunction", "andThen", "(Function)", "summary", "df-generated"] + - ["java.util.function", "BiPredicate", "and", "(BiPredicate)", "summary", "df-generated"] + - ["java.util.function", "BiPredicate", "negate", "()", "summary", "df-generated"] + - ["java.util.function", "BiPredicate", "or", "(BiPredicate)", "summary", "df-generated"] + - ["java.util.function", "BinaryOperator", "maxBy", "(Comparator)", "summary", "df-generated"] + - ["java.util.function", "BinaryOperator", "minBy", "(Comparator)", "summary", "df-generated"] + - ["java.util.function", "Consumer", "andThen", "(Consumer)", "summary", "df-generated"] + - ["java.util.function", "DoubleConsumer", "accept", "(double)", "summary", "df-generated"] + - ["java.util.function", "DoubleConsumer", "andThen", "(DoubleConsumer)", "summary", "df-generated"] + - ["java.util.function", "DoublePredicate", "and", "(DoublePredicate)", "summary", "df-generated"] + - ["java.util.function", "DoublePredicate", "negate", "()", "summary", "df-generated"] + - ["java.util.function", "DoublePredicate", "or", "(DoublePredicate)", "summary", "df-generated"] + - ["java.util.function", "DoubleUnaryOperator", "andThen", "(DoubleUnaryOperator)", "summary", "df-generated"] + - ["java.util.function", "DoubleUnaryOperator", "compose", "(DoubleUnaryOperator)", "summary", "df-generated"] + - ["java.util.function", "DoubleUnaryOperator", "identity", "()", "summary", "df-generated"] + - ["java.util.function", "Function", "andThen", "(Function)", "summary", "df-generated"] + - ["java.util.function", "Function", "compose", "(Function)", "summary", "df-generated"] + - ["java.util.function", "IntConsumer", "accept", "(int)", "summary", "df-generated"] + - ["java.util.function", "IntConsumer", "andThen", "(IntConsumer)", "summary", "df-generated"] + - ["java.util.function", "IntPredicate", "and", "(IntPredicate)", "summary", "df-generated"] + - ["java.util.function", "IntPredicate", "negate", "()", "summary", "df-generated"] + - ["java.util.function", "IntPredicate", "or", "(IntPredicate)", "summary", "df-generated"] + - ["java.util.function", "IntUnaryOperator", "andThen", "(IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.function", "IntUnaryOperator", "compose", "(IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.function", "IntUnaryOperator", "identity", "()", "summary", "df-generated"] + - ["java.util.function", "LongConsumer", "accept", "(long)", "summary", "df-generated"] + - ["java.util.function", "LongConsumer", "andThen", "(LongConsumer)", "summary", "df-generated"] + - ["java.util.function", "LongPredicate", "and", "(LongPredicate)", "summary", "df-generated"] + - ["java.util.function", "LongPredicate", "negate", "()", "summary", "df-generated"] + - ["java.util.function", "LongPredicate", "or", "(LongPredicate)", "summary", "df-generated"] + - ["java.util.function", "LongUnaryOperator", "andThen", "(LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.function", "LongUnaryOperator", "compose", "(LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.function", "LongUnaryOperator", "identity", "()", "summary", "df-generated"] + - ["java.util.function", "Predicate", "and", "(Predicate)", "summary", "df-generated"] + - ["java.util.function", "Predicate", "isEqual", "(Object)", "summary", "df-generated"] + - ["java.util.function", "Predicate", "negate", "()", "summary", "df-generated"] + - ["java.util.function", "Predicate", "not", "(Predicate)", "summary", "df-generated"] + - ["java.util.function", "Predicate", "or", "(Predicate)", "summary", "df-generated"] + - ["java.util.function", "UnaryOperator", "identity", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.jar.model.yml b/java/ql/lib/ext/generated/java.util.jar.model.yml new file mode 100644 index 000000000000..9b4df579bd04 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.jar.model.yml @@ -0,0 +1,54 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.jar", "Attributes$Name", True, "Name", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "Attributes", True, "Attributes", "(Attributes)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "Attributes", True, "getValue", "(Attributes$Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "Attributes", True, "getValue", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "Attributes", True, "putValue", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "Attributes", True, "putValue", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "Attributes", True, "putValue", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarEntry", True, "JarEntry", "(JarEntry)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarEntry", True, "JarEntry", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarEntry", True, "JarEntry", "(ZipEntry)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarEntry", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarEntry", True, "getCertificates", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarEntry", True, "getCodeSigners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarEntry", True, "getRealName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarException", True, "JarException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "JarFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "JarFile", "(File,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "JarFile", "(File,boolean,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "JarFile", "(File,boolean,int,Runtime$Version)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "JarFile", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "JarFile", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "getJarEntry", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "getJarEntry", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "getManifest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarFile", True, "getVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarInputStream", True, "JarInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarInputStream", True, "JarInputStream", "(InputStream,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarInputStream", True, "getManifest", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarInputStream", True, "getNextJarEntry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "JarOutputStream", True, "JarOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "JarOutputStream", True, "JarOutputStream", "(OutputStream,Manifest)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "Manifest", True, "Manifest", "(Manifest)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.jar", "Manifest", True, "getAttributes", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "Manifest", True, "getEntries", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.jar", "Manifest", True, "getMainAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.jar", "Attributes", "Attributes", "(int)", "summary", "df-generated"] + - ["java.util.jar", "JarFile", "baseVersion", "()", "summary", "df-generated"] + - ["java.util.jar", "JarFile", "isMultiRelease", "()", "summary", "df-generated"] + - ["java.util.jar", "JarFile", "runtimeVersion", "()", "summary", "df-generated"] + - ["java.util.jar", "JarFile", "versionedStream", "()", "summary", "df-generated"] + - ["java.util.jar", "Manifest", "Manifest", "(InputStream)", "summary", "df-generated"] + - ["java.util.jar", "Manifest", "clear", "()", "summary", "df-generated"] + - ["java.util.jar", "Manifest", "read", "(InputStream)", "summary", "df-generated"] + - ["java.util.jar", "Manifest", "write", "(OutputStream)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.logging.model.yml b/java/ql/lib/ext/generated/java.util.logging.model.yml new file mode 100644 index 000000000000..2ad409bc45eb --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.logging.model.yml @@ -0,0 +1,155 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.logging", "ErrorManager", True, "error", "(String,Exception,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "FileHandler", True, "FileHandler", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "FileHandler", True, "FileHandler", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "FileHandler", True, "FileHandler", "(String,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "FileHandler", True, "FileHandler", "(String,int,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "FileHandler", True, "FileHandler", "(String,long,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Formatter", True, "format", "(LogRecord)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Formatter", True, "format", "(LogRecord)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Formatter", True, "formatMessage", "(LogRecord)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Formatter", True, "getHead", "(Handler)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "getEncoding", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "getErrorManager", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "getFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "getFormatter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "getLevel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "publish", "(LogRecord)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "setEncoding", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "setErrorManager", "(ErrorManager)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "setFilter", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "setFormatter", "(Formatter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Handler", True, "setLevel", "(Level)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Level", True, "getLocalizedName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Level", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Level", True, "getResourceBundleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogManager", True, "addConfigurationListener", "(Runnable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogManager", True, "addConfigurationListener", "(Runnable)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.logging", "LogManager", True, "getLoggerNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogManager", True, "getProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getInstant", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getLevel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getLoggerName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getResourceBundle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getResourceBundleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getSourceClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getSourceMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "getThrown", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setInstant", "(Instant)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setLevel", "(Level)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setLoggerName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setLongThreadID", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setMessage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setParameters", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setResourceBundle", "(ResourceBundle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setResourceBundleName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setSourceClassName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setSourceMethodName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LogRecord", True, "setThrown", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getAnonymousLogger", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getHandlers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getLevel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getLogger", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getLogger", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getResourceBundle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "getResourceBundleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Object[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "logrb", "(Level,String,String,String,String,Throwable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "setFilter", "(Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "setLevel", "(Level)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "setParent", "(Logger)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "Logger", True, "setResourceBundle", "(ResourceBundle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "LoggingPermission", False, "LoggingPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "MemoryHandler", True, "MemoryHandler", "(Handler,int,Level)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "MemoryHandler", True, "MemoryHandler", "(Handler,int,Level)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "MemoryHandler", True, "getPushLevel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.logging", "MemoryHandler", True, "setPushLevel", "(Level)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.logging", "SocketHandler", True, "SocketHandler", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.logging", "Formatter", "getTail", "(Handler)", "summary", "df-generated"] + - ["java.util.logging", "Handler", "close", "()", "summary", "df-generated"] + - ["java.util.logging", "Handler", "flush", "()", "summary", "df-generated"] + - ["java.util.logging", "Handler", "isLoggable", "(LogRecord)", "summary", "df-generated"] + - ["java.util.logging", "Level", "intValue", "()", "summary", "df-generated"] + - ["java.util.logging", "Level", "parse", "(String)", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "addLogger", "(Logger)", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "checkAccess", "()", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "getLogManager", "()", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "getLogger", "(String)", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "getLoggingMXBean", "()", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "readConfiguration", "()", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "readConfiguration", "(InputStream)", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "removeConfigurationListener", "(Runnable)", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "reset", "()", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "updateConfiguration", "(Function)", "summary", "df-generated"] + - ["java.util.logging", "LogManager", "updateConfiguration", "(InputStream,Function)", "summary", "df-generated"] + - ["java.util.logging", "LogRecord", "getLongThreadID", "()", "summary", "df-generated"] + - ["java.util.logging", "LogRecord", "getMillis", "()", "summary", "df-generated"] + - ["java.util.logging", "LogRecord", "getSequenceNumber", "()", "summary", "df-generated"] + - ["java.util.logging", "LogRecord", "getThreadID", "()", "summary", "df-generated"] + - ["java.util.logging", "LogRecord", "setMillis", "(long)", "summary", "df-generated"] + - ["java.util.logging", "LogRecord", "setSequenceNumber", "(long)", "summary", "df-generated"] + - ["java.util.logging", "LogRecord", "setThreadID", "(int)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "addHandler", "(Handler)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "config", "(String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "config", "(Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "entering", "(String,String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "entering", "(String,String,Object)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "entering", "(String,String,Object[])", "summary", "df-generated"] + - ["java.util.logging", "Logger", "exiting", "(String,String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "exiting", "(String,String,Object)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "fine", "(String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "fine", "(Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "finer", "(String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "finer", "(Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "finest", "(String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "finest", "(Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "getAnonymousLogger", "()", "summary", "df-generated"] + - ["java.util.logging", "Logger", "getGlobal", "()", "summary", "df-generated"] + - ["java.util.logging", "Logger", "getUseParentHandlers", "()", "summary", "df-generated"] + - ["java.util.logging", "Logger", "info", "(String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "info", "(Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "log", "(Level,String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "log", "(Level,String,Object)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "log", "(Level,String,Object[])", "summary", "df-generated"] + - ["java.util.logging", "Logger", "log", "(Level,String,Throwable)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "log", "(Level,Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "log", "(Level,Throwable,Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "log", "(LogRecord)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logp", "(Level,String,String,String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logp", "(Level,String,String,String,Object)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logp", "(Level,String,String,String,Object[])", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logp", "(Level,String,String,String,Throwable)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logp", "(Level,String,String,Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logp", "(Level,String,String,Throwable,Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logrb", "(Level,ResourceBundle,String,Object[])", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logrb", "(Level,ResourceBundle,String,Throwable)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logrb", "(Level,String,String,ResourceBundle,String,Object[])", "summary", "df-generated"] + - ["java.util.logging", "Logger", "logrb", "(Level,String,String,ResourceBundle,String,Throwable)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "removeHandler", "(Handler)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "setUseParentHandlers", "(boolean)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "severe", "(String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "severe", "(Supplier)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "throwing", "(String,String,Throwable)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "warning", "(String)", "summary", "df-generated"] + - ["java.util.logging", "Logger", "warning", "(Supplier)", "summary", "df-generated"] + - ["java.util.logging", "LoggingMXBean", "getLoggerLevel", "(String)", "summary", "df-generated"] + - ["java.util.logging", "LoggingMXBean", "getLoggerNames", "()", "summary", "df-generated"] + - ["java.util.logging", "LoggingMXBean", "getParentLoggerName", "(String)", "summary", "df-generated"] + - ["java.util.logging", "LoggingMXBean", "setLoggerLevel", "(String,String)", "summary", "df-generated"] + - ["java.util.logging", "MemoryHandler", "push", "()", "summary", "df-generated"] + - ["java.util.logging", "StreamHandler", "StreamHandler", "(OutputStream,Formatter)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.model.yml b/java/ql/lib/ext/generated/java.util.model.yml new file mode 100644 index 000000000000..a8532c297ad5 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.model.yml @@ -0,0 +1,866 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util", "Arrays", True, "deepToString", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Base64$Encoder", True, "withoutPadding", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Base64", True, "getMimeEncoder", "(int,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "set", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setCalendarType", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setCalendarType", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setDate", "(int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setFields", "(int[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setInstant", "(Date)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setInstant", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setLenient", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setLocale", "(Locale)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setTimeOfDay", "(int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setTimeOfDay", "(int,int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setTimeZone", "(TimeZone)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setTimeZone", "(TimeZone)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setWeekDate", "(int,int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar$Builder", True, "setWeekDefinition", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Calendar", True, "getDisplayName", "(int,int,Locale)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar", True, "getInstance", "(TimeZone)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar", True, "getInstance", "(TimeZone,Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar", True, "getTimeZone", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Calendar", True, "setTimeZone", "(TimeZone)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Collections", True, "asLifoQueue", "(Deque)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Collections", True, "checkedQueue", "(Queue,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Collections", True, "newSetFromMap", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Collections", True, "reverseOrder", "(Comparator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Comparator", True, "nullsFirst", "(Comparator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Comparator", True, "nullsLast", "(Comparator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Comparator", True, "reversed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ConcurrentModificationException", True, "ConcurrentModificationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "ConcurrentModificationException", True, "ConcurrentModificationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "ConcurrentModificationException", True, "ConcurrentModificationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "ConcurrentModificationException", True, "ConcurrentModificationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Currency", False, "getCurrencyCode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getDisplayName", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getDisplayName", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getInstance", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getSymbol", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getSymbol", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Currency", False, "getSymbol", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "DuplicateFormatFlagsException", True, "DuplicateFormatFlagsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "DuplicateFormatFlagsException", True, "getFlags", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "complementOf", "(EnumSet)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "copyOf", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "copyOf", "(EnumSet)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EnumSet", True, "of", "(Enum,Enum[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.util", "EventListenerProxy", True, "EventListenerProxy", "(EventListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "EventListenerProxy", True, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "FormatFlagsConversionMismatchException", True, "FormatFlagsConversionMismatchException", "(String,char)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "FormatFlagsConversionMismatchException", True, "getFlags", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(Appendable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(Appendable,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(Appendable,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(File,Charset,Locale)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(File,String,Locale)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(OutputStream,Charset,Locale)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(OutputStream,String,Locale)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(PrintStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(String,Charset,Locale)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "Formatter", "(String,String,Locale)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Formatter", False, "format", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Formatter", False, "format", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Formatter", False, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Formatter", False, "format", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Formatter", False, "ioException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Formatter", False, "locale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Formatter", False, "out", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "GregorianCalendar", True, "GregorianCalendar", "(TimeZone)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "GregorianCalendar", True, "GregorianCalendar", "(TimeZone,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "GregorianCalendar", True, "from", "(ZonedDateTime)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "GregorianCalendar", True, "toZonedDateTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "delimiter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(Appendable,byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(Appendable,byte[])", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(Appendable,byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(Appendable,byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(Appendable,byte[],int,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(Appendable,byte[],int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "formatHex", "(byte[],int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "ofDelimiter", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "prefix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "suffix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "toHexDigits", "(Appendable,byte)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withDelimiter", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withDelimiter", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withLowerCase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withPrefix", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withPrefix", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withSuffix", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withSuffix", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "HexFormat", False, "withUpperCase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "IllegalFormatFlagsException", True, "IllegalFormatFlagsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "IllegalFormatFlagsException", True, "getFlags", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "IllformedLocaleException", True, "IllformedLocaleException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "IllformedLocaleException", True, "IllformedLocaleException", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "InputMismatchException", True, "InputMismatchException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "InvalidPropertiesFormatException", True, "InvalidPropertiesFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "InvalidPropertiesFormatException", True, "InvalidPropertiesFormatException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale$Builder", False, "addUnicodeLocaleAttribute", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale$Builder", False, "clear", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "clearExtensions", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "removeUnicodeLocaleAttribute", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setExtension", "(char,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setLanguage", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setLanguageTag", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale$Builder", False, "setLocale", "(Locale)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setRegion", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setScript", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setUnicodeLocaleKeyword", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$Builder", False, "setVariant", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale$Builder", False, "setVariant", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "LanguageRange", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "LanguageRange", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "getRange", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "mapEquivalents", "(List,Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "mapEquivalents", "(List,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "parse", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale$LanguageRange", False, "parse", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "Locale", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale", False, "Locale", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale", False, "Locale", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale", False, "Locale", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale", False, "Locale", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale", False, "Locale", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Locale", False, "filterTags", "(List,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "filterTags", "(List,Collection,Locale$FilteringMode)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getCountry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayCountry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayCountry", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayCountry", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayLanguage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayLanguage", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayLanguage", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayName", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayName", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayScript", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayScript", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayScript", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayVariant", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayVariant", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getDisplayVariant", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getExtensionKeys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getISO3Language", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getLanguage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getScript", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "getVariant", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "lookupTag", "(List,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "stripExtensions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Locale", False, "toLanguageTag", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Map$Entry", True, "copyOf", "(Map$Entry)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Map", True, "compute", "(Object,BiFunction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Map", True, "compute", "(Object,BiFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Map", True, "computeIfPresent", "(Object,BiFunction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Map", True, "computeIfPresent", "(Object,BiFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "MissingFormatArgumentException", True, "MissingFormatArgumentException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "MissingFormatArgumentException", True, "getFormatSpecifier", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "MissingFormatWidthException", True, "MissingFormatWidthException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "MissingFormatWidthException", True, "getFormatSpecifier", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "MissingResourceException", True, "MissingResourceException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "MissingResourceException", True, "MissingResourceException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "MissingResourceException", True, "MissingResourceException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "MissingResourceException", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "MissingResourceException", True, "getKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "NoSuchElementException", True, "NoSuchElementException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "NoSuchElementException", True, "NoSuchElementException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "NoSuchElementException", True, "NoSuchElementException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "NoSuchElementException", True, "NoSuchElementException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Observable", True, "addObserver", "(Observer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "PriorityQueue", True, "PriorityQueue", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "PriorityQueue", True, "PriorityQueue", "(int,Comparator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "PriorityQueue", True, "comparator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Properties", True, "Properties", "(Properties)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Properties", True, "list", "(PrintStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util", "Properties", True, "list", "(PrintWriter)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util", "Properties", True, "propertyNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Properties", True, "store", "(Writer,String)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["java.util", "Properties", True, "stringPropertyNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "PropertyPermission", False, "PropertyPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "ResourceBundle$Control", True, "getFormats", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle$Control", True, "newBundle", "(String,Locale,String,ClassLoader,boolean)", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] + - ["java.util", "ResourceBundle$Control", True, "newBundle", "(String,Locale,String,ClassLoader,boolean)", "", "Argument[1]", "Argument[3]", "taint", "df-generated"] + - ["java.util", "ResourceBundle$Control", True, "toBundleName", "(String,Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle$Control", True, "toBundleName", "(String,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle$Control", True, "toResourceName", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle$Control", True, "toResourceName", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBaseBundleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader,ResourceBundle$Control)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader,ResourceBundle$Control)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ResourceBundle$Control)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ResourceBundle$Control)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getBundle", "(String,ResourceBundle$Control)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getKeys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getObject", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getStringArray", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "getStringArray", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "handleGetObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ResourceBundle", True, "keySet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Scanner", False, "delimiter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Scanner", False, "findAll", "(Pattern)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Scanner", False, "findAll", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Scanner", False, "findAll", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Scanner", False, "hasNext", "(Pattern)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Scanner", False, "hasNext", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Scanner", False, "ioException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Scanner", False, "locale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Scanner", False, "match", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ServiceConfigurationError", True, "ServiceConfigurationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "ServiceConfigurationError", True, "ServiceConfigurationError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "ServiceConfigurationError", True, "ServiceConfigurationError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "ServiceLoader", False, "findFirst", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ServiceLoader", False, "load", "(Class,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ServiceLoader", False, "load", "(ModuleLayer,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "ServiceLoader", False, "stream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "SimpleTimeZone", True, "SimpleTimeZone", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "SimpleTimeZone", True, "SimpleTimeZone", "(int,String,int,int,int,int,int,int,int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "SimpleTimeZone", True, "SimpleTimeZone", "(int,String,int,int,int,int,int,int,int,int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "SimpleTimeZone", True, "SimpleTimeZone", "(int,String,int,int,int,int,int,int,int,int,int,int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Spliterator", True, "forEachRemaining", "(Consumer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Spliterator", True, "forEachRemaining", "(Consumer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliterator", "(Collection,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliterator", "(Iterator,long,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliterator", "(Object[],int)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliterator", "(Object[],int,int,int)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliterator", "(PrimitiveIterator$OfDouble,long,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliterator", "(PrimitiveIterator$OfInt,long,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliterator", "(PrimitiveIterator$OfLong,long,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliteratorUnknownSize", "(Iterator,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliteratorUnknownSize", "(PrimitiveIterator$OfDouble,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliteratorUnknownSize", "(PrimitiveIterator$OfInt,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Spliterators", False, "spliteratorUnknownSize", "(PrimitiveIterator$OfLong,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getDisplayName", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getDisplayName", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getDisplayName", "(boolean,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getDisplayName", "(boolean,int,Locale)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getDisplayName", "(boolean,int,Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "getTimeZone", "(ZoneId)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "setID", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "TimeZone", True, "toZoneId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "Timer", True, "Timer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "Timer", True, "Timer", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "TooManyListenersException", True, "TooManyListenersException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "TreeMap", True, "TreeMap", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "TreeSet", True, "TreeSet", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "UnknownFormatConversionException", True, "UnknownFormatConversionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "UnknownFormatConversionException", True, "getConversion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util", "UnknownFormatFlagsException", True, "UnknownFormatFlagsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util", "UnknownFormatFlagsException", True, "getFlags", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util", "ArrayDeque", "ArrayDeque", "(int)", "summary", "df-generated"] + - ["java.util", "ArrayList", "ensureCapacity", "(int)", "summary", "df-generated"] + - ["java.util", "ArrayList", "trimToSize", "()", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(Object[],Object)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(Object[],Object,Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(Object[],int,int,Object)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(Object[],int,int,Object,Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(byte[],byte)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(byte[],int,int,byte)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(char[],char)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(char[],int,int,char)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(double[],double)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(double[],int,int,double)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(float[],float)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(float[],int,int,float)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(int[],int)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(int[],int,int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(long[],int,int,long)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(long[],long)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(short[],int,int,short)", "summary", "df-generated"] + - ["java.util", "Arrays", "binarySearch", "(short[],short)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(Comparable[],Comparable[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(Comparable[],int,int,Comparable[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(Object[],Object[],Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(Object[],int,int,Object[],int,int,Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(boolean[],boolean[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(boolean[],int,int,boolean[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(byte[],byte[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(byte[],int,int,byte[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(char[],char[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(char[],int,int,char[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(double[],double[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(double[],int,int,double[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(float[],float[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(float[],int,int,float[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(int[],int,int,int[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(int[],int[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(long[],int,int,long[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(long[],long[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(short[],int,int,short[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compare", "(short[],short[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(byte[],byte[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(byte[],int,int,byte[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(int[],int,int,int[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(int[],int[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(long[],int,int,long[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(long[],long[])", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(short[],int,int,short[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "compareUnsigned", "(short[],short[])", "summary", "df-generated"] + - ["java.util", "Arrays", "deepEquals", "(Object[],Object[])", "summary", "df-generated"] + - ["java.util", "Arrays", "deepHashCode", "(Object[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(Object[],Object[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(Object[],Object[],Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(Object[],int,int,Object[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(Object[],int,int,Object[],int,int,Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(boolean[],boolean[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(boolean[],int,int,boolean[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(byte[],byte[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(byte[],int,int,byte[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(char[],char[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(char[],int,int,char[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(double[],double[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(double[],int,int,double[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(float[],float[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(float[],int,int,float[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(int[],int,int,int[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(int[],int[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(long[],int,int,long[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(long[],long[])", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(short[],int,int,short[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "equals", "(short[],short[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(Object[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(boolean[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(byte[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(char[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(double[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(float[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(int[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(long[])", "summary", "df-generated"] + - ["java.util", "Arrays", "hashCode", "(short[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(Object[],Object[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(Object[],Object[],Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(Object[],int,int,Object[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(Object[],int,int,Object[],int,int,Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(boolean[],boolean[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(boolean[],int,int,boolean[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(byte[],byte[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(byte[],int,int,byte[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(char[],char[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(char[],int,int,char[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(double[],double[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(double[],int,int,double[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(float[],float[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(float[],int,int,float[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(int[],int,int,int[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(int[],int[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(long[],int,int,long[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(long[],long[])", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(short[],int,int,short[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "mismatch", "(short[],short[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(Object[],BinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(Object[],int,int,BinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(double[],DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(double[],int,int,DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(int[],IntBinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(int[],int,int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(long[],LongBinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelPrefix", "(long[],int,int,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSetAll", "(Object[],IntFunction)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSetAll", "(double[],IntToDoubleFunction)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSetAll", "(int[],IntUnaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSetAll", "(long[],IntToLongFunction)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(Comparable[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(Comparable[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(Object[],Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(Object[],int,int,Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(byte[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(byte[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(char[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(char[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(double[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(double[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(float[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(float[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(int[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(int[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(long[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(long[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(short[])", "summary", "df-generated"] + - ["java.util", "Arrays", "parallelSort", "(short[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "setAll", "(Object[],IntFunction)", "summary", "df-generated"] + - ["java.util", "Arrays", "setAll", "(double[],IntToDoubleFunction)", "summary", "df-generated"] + - ["java.util", "Arrays", "setAll", "(int[],IntUnaryOperator)", "summary", "df-generated"] + - ["java.util", "Arrays", "setAll", "(long[],IntToLongFunction)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(Object[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(Object[],Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(Object[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(Object[],int,int,Comparator)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(byte[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(byte[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(char[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(char[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(double[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(double[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(float[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(float[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(int[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(int[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(long[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(long[],int,int)", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(short[])", "summary", "df-generated"] + - ["java.util", "Arrays", "sort", "(short[],int,int)", "summary", "df-generated"] + - ["java.util", "Base64$Decoder", "decode", "(byte[],byte[])", "summary", "df-generated"] + - ["java.util", "Base64$Encoder", "encode", "(byte[],byte[])", "summary", "df-generated"] + - ["java.util", "Base64", "getDecoder", "()", "summary", "df-generated"] + - ["java.util", "Base64", "getEncoder", "()", "summary", "df-generated"] + - ["java.util", "Base64", "getMimeDecoder", "()", "summary", "df-generated"] + - ["java.util", "Base64", "getMimeEncoder", "()", "summary", "df-generated"] + - ["java.util", "Base64", "getUrlDecoder", "()", "summary", "df-generated"] + - ["java.util", "Base64", "getUrlEncoder", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "BitSet", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "and", "(BitSet)", "summary", "df-generated"] + - ["java.util", "BitSet", "andNot", "(BitSet)", "summary", "df-generated"] + - ["java.util", "BitSet", "cardinality", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "clear", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "clear", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "clear", "(int,int)", "summary", "df-generated"] + - ["java.util", "BitSet", "flip", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "flip", "(int,int)", "summary", "df-generated"] + - ["java.util", "BitSet", "get", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "get", "(int,int)", "summary", "df-generated"] + - ["java.util", "BitSet", "intersects", "(BitSet)", "summary", "df-generated"] + - ["java.util", "BitSet", "isEmpty", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "length", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "nextClearBit", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "nextSetBit", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "or", "(BitSet)", "summary", "df-generated"] + - ["java.util", "BitSet", "previousClearBit", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "previousSetBit", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "set", "(int)", "summary", "df-generated"] + - ["java.util", "BitSet", "set", "(int,boolean)", "summary", "df-generated"] + - ["java.util", "BitSet", "set", "(int,int)", "summary", "df-generated"] + - ["java.util", "BitSet", "set", "(int,int,boolean)", "summary", "df-generated"] + - ["java.util", "BitSet", "size", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "stream", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "toByteArray", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "toLongArray", "()", "summary", "df-generated"] + - ["java.util", "BitSet", "valueOf", "(ByteBuffer)", "summary", "df-generated"] + - ["java.util", "BitSet", "valueOf", "(LongBuffer)", "summary", "df-generated"] + - ["java.util", "BitSet", "valueOf", "(byte[])", "summary", "df-generated"] + - ["java.util", "BitSet", "valueOf", "(long[])", "summary", "df-generated"] + - ["java.util", "BitSet", "xor", "(BitSet)", "summary", "df-generated"] + - ["java.util", "Calendar", "add", "(int,int)", "summary", "df-generated"] + - ["java.util", "Calendar", "after", "(Object)", "summary", "df-generated"] + - ["java.util", "Calendar", "before", "(Object)", "summary", "df-generated"] + - ["java.util", "Calendar", "clear", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "clear", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "getActualMaximum", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "getActualMinimum", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "getAvailableCalendarTypes", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "getCalendarType", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "getDisplayNames", "(int,int,Locale)", "summary", "df-generated"] + - ["java.util", "Calendar", "getFirstDayOfWeek", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "getGreatestMinimum", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "getInstance", "(Locale)", "summary", "df-generated"] + - ["java.util", "Calendar", "getLeastMaximum", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "getMaximum", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "getMinimalDaysInFirstWeek", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "getMinimum", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "getWeekYear", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "getWeeksInWeekYear", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "isLenient", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "isSet", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "isWeekDateSupported", "()", "summary", "df-generated"] + - ["java.util", "Calendar", "roll", "(int,boolean)", "summary", "df-generated"] + - ["java.util", "Calendar", "roll", "(int,int)", "summary", "df-generated"] + - ["java.util", "Calendar", "set", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "Calendar", "set", "(int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "Calendar", "set", "(int,int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "Calendar", "setFirstDayOfWeek", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "setLenient", "(boolean)", "summary", "df-generated"] + - ["java.util", "Calendar", "setMinimalDaysInFirstWeek", "(int)", "summary", "df-generated"] + - ["java.util", "Calendar", "setTimeInMillis", "(long)", "summary", "df-generated"] + - ["java.util", "Calendar", "setWeekDate", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "Calendar", "toInstant", "()", "summary", "df-generated"] + - ["java.util", "Collections", "binarySearch", "(List,Object)", "summary", "df-generated"] + - ["java.util", "Collections", "binarySearch", "(List,Object,Comparator)", "summary", "df-generated"] + - ["java.util", "Collections", "disjoint", "(Collection,Collection)", "summary", "df-generated"] + - ["java.util", "Collections", "emptyEnumeration", "()", "summary", "df-generated"] + - ["java.util", "Collections", "emptyIterator", "()", "summary", "df-generated"] + - ["java.util", "Collections", "emptyListIterator", "()", "summary", "df-generated"] + - ["java.util", "Collections", "emptyNavigableMap", "()", "summary", "df-generated"] + - ["java.util", "Collections", "emptyNavigableSet", "()", "summary", "df-generated"] + - ["java.util", "Collections", "emptySortedMap", "()", "summary", "df-generated"] + - ["java.util", "Collections", "emptySortedSet", "()", "summary", "df-generated"] + - ["java.util", "Collections", "frequency", "(Collection,Object)", "summary", "df-generated"] + - ["java.util", "Collections", "indexOfSubList", "(List,List)", "summary", "df-generated"] + - ["java.util", "Collections", "lastIndexOfSubList", "(List,List)", "summary", "df-generated"] + - ["java.util", "Collections", "reverse", "(List)", "summary", "df-generated"] + - ["java.util", "Collections", "reverseOrder", "()", "summary", "df-generated"] + - ["java.util", "Collections", "rotate", "(List,int)", "summary", "df-generated"] + - ["java.util", "Collections", "shuffle", "(List)", "summary", "df-generated"] + - ["java.util", "Collections", "shuffle", "(List,Random)", "summary", "df-generated"] + - ["java.util", "Collections", "swap", "(List,int,int)", "summary", "df-generated"] + - ["java.util", "Comparator", "comparing", "(Function)", "summary", "df-generated"] + - ["java.util", "Comparator", "comparing", "(Function,Comparator)", "summary", "df-generated"] + - ["java.util", "Comparator", "comparingDouble", "(ToDoubleFunction)", "summary", "df-generated"] + - ["java.util", "Comparator", "comparingInt", "(ToIntFunction)", "summary", "df-generated"] + - ["java.util", "Comparator", "comparingLong", "(ToLongFunction)", "summary", "df-generated"] + - ["java.util", "Comparator", "naturalOrder", "()", "summary", "df-generated"] + - ["java.util", "Comparator", "reverseOrder", "()", "summary", "df-generated"] + - ["java.util", "Comparator", "thenComparing", "(Comparator)", "summary", "df-generated"] + - ["java.util", "Comparator", "thenComparing", "(Function)", "summary", "df-generated"] + - ["java.util", "Comparator", "thenComparing", "(Function,Comparator)", "summary", "df-generated"] + - ["java.util", "Comparator", "thenComparingDouble", "(ToDoubleFunction)", "summary", "df-generated"] + - ["java.util", "Comparator", "thenComparingInt", "(ToIntFunction)", "summary", "df-generated"] + - ["java.util", "Comparator", "thenComparingLong", "(ToLongFunction)", "summary", "df-generated"] + - ["java.util", "Currency", "getAvailableCurrencies", "()", "summary", "df-generated"] + - ["java.util", "Currency", "getDefaultFractionDigits", "()", "summary", "df-generated"] + - ["java.util", "Currency", "getNumericCode", "()", "summary", "df-generated"] + - ["java.util", "Currency", "getNumericCodeAsString", "()", "summary", "df-generated"] + - ["java.util", "Date", "Date", "(String)", "summary", "df-generated"] + - ["java.util", "Date", "Date", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "Date", "Date", "(int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "Date", "Date", "(int,int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "Date", "UTC", "(int,int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "Date", "after", "(Date)", "summary", "df-generated"] + - ["java.util", "Date", "before", "(Date)", "summary", "df-generated"] + - ["java.util", "Date", "getDate", "()", "summary", "df-generated"] + - ["java.util", "Date", "getDay", "()", "summary", "df-generated"] + - ["java.util", "Date", "getHours", "()", "summary", "df-generated"] + - ["java.util", "Date", "getMinutes", "()", "summary", "df-generated"] + - ["java.util", "Date", "getMonth", "()", "summary", "df-generated"] + - ["java.util", "Date", "getSeconds", "()", "summary", "df-generated"] + - ["java.util", "Date", "getTimezoneOffset", "()", "summary", "df-generated"] + - ["java.util", "Date", "getYear", "()", "summary", "df-generated"] + - ["java.util", "Date", "parse", "(String)", "summary", "df-generated"] + - ["java.util", "Date", "setDate", "(int)", "summary", "df-generated"] + - ["java.util", "Date", "setHours", "(int)", "summary", "df-generated"] + - ["java.util", "Date", "setMinutes", "(int)", "summary", "df-generated"] + - ["java.util", "Date", "setMonth", "(int)", "summary", "df-generated"] + - ["java.util", "Date", "setSeconds", "(int)", "summary", "df-generated"] + - ["java.util", "Date", "setTime", "(long)", "summary", "df-generated"] + - ["java.util", "Date", "setYear", "(int)", "summary", "df-generated"] + - ["java.util", "Date", "toGMTString", "()", "summary", "df-generated"] + - ["java.util", "Date", "toInstant", "()", "summary", "df-generated"] + - ["java.util", "Date", "toLocaleString", "()", "summary", "df-generated"] + - ["java.util", "Dictionary", "isEmpty", "()", "summary", "df-generated"] + - ["java.util", "Dictionary", "size", "()", "summary", "df-generated"] + - ["java.util", "DoubleSummaryStatistics", "DoubleSummaryStatistics", "(long,double,double,double)", "summary", "df-generated"] + - ["java.util", "DoubleSummaryStatistics", "combine", "(DoubleSummaryStatistics)", "summary", "df-generated"] + - ["java.util", "DoubleSummaryStatistics", "getAverage", "()", "summary", "df-generated"] + - ["java.util", "DoubleSummaryStatistics", "getCount", "()", "summary", "df-generated"] + - ["java.util", "DoubleSummaryStatistics", "getMax", "()", "summary", "df-generated"] + - ["java.util", "DoubleSummaryStatistics", "getMin", "()", "summary", "df-generated"] + - ["java.util", "DoubleSummaryStatistics", "getSum", "()", "summary", "df-generated"] + - ["java.util", "EnumMap", "EnumMap", "(Class)", "summary", "df-generated"] + - ["java.util", "EnumSet", "allOf", "(Class)", "summary", "df-generated"] + - ["java.util", "EnumSet", "noneOf", "(Class)", "summary", "df-generated"] + - ["java.util", "EnumSet", "range", "(Enum,Enum)", "summary", "df-generated"] + - ["java.util", "FormatFlagsConversionMismatchException", "getConversion", "()", "summary", "df-generated"] + - ["java.util", "Formatter", "Formatter", "(File)", "summary", "df-generated"] + - ["java.util", "Formatter", "Formatter", "(File,String)", "summary", "df-generated"] + - ["java.util", "Formatter", "Formatter", "(OutputStream)", "summary", "df-generated"] + - ["java.util", "Formatter", "Formatter", "(OutputStream,String)", "summary", "df-generated"] + - ["java.util", "Formatter", "Formatter", "(String)", "summary", "df-generated"] + - ["java.util", "Formatter", "Formatter", "(String,String)", "summary", "df-generated"] + - ["java.util", "GregorianCalendar", "GregorianCalendar", "(Locale)", "summary", "df-generated"] + - ["java.util", "GregorianCalendar", "GregorianCalendar", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "GregorianCalendar", "GregorianCalendar", "(int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "GregorianCalendar", "GregorianCalendar", "(int,int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "GregorianCalendar", "getGregorianChange", "()", "summary", "df-generated"] + - ["java.util", "GregorianCalendar", "isLeapYear", "(int)", "summary", "df-generated"] + - ["java.util", "GregorianCalendar", "setGregorianChange", "(Date)", "summary", "df-generated"] + - ["java.util", "HashMap", "HashMap", "(int,float)", "summary", "df-generated"] + - ["java.util", "HashSet", "HashSet", "(int,float)", "summary", "df-generated"] + - ["java.util", "Hashtable", "Hashtable", "(int)", "summary", "df-generated"] + - ["java.util", "Hashtable", "Hashtable", "(int,float)", "summary", "df-generated"] + - ["java.util", "Hashtable", "contains", "(Object)", "summary", "df-generated"] + - ["java.util", "HexFormat", "fromHexDigit", "(int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "fromHexDigits", "(CharSequence)", "summary", "df-generated"] + - ["java.util", "HexFormat", "fromHexDigits", "(CharSequence,int,int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "fromHexDigitsToLong", "(CharSequence)", "summary", "df-generated"] + - ["java.util", "HexFormat", "fromHexDigitsToLong", "(CharSequence,int,int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "isHexDigit", "(int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "isUpperCase", "()", "summary", "df-generated"] + - ["java.util", "HexFormat", "of", "()", "summary", "df-generated"] + - ["java.util", "HexFormat", "parseHex", "(CharSequence)", "summary", "df-generated"] + - ["java.util", "HexFormat", "parseHex", "(CharSequence,int,int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "parseHex", "(char[],int,int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toHexDigits", "(byte)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toHexDigits", "(char)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toHexDigits", "(int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toHexDigits", "(long)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toHexDigits", "(long,int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toHexDigits", "(short)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toHighHexDigit", "(int)", "summary", "df-generated"] + - ["java.util", "HexFormat", "toLowHexDigit", "(int)", "summary", "df-generated"] + - ["java.util", "IdentityHashMap", "IdentityHashMap", "(int)", "summary", "df-generated"] + - ["java.util", "IllegalFormatCodePointException", "IllegalFormatCodePointException", "(int)", "summary", "df-generated"] + - ["java.util", "IllegalFormatCodePointException", "getCodePoint", "()", "summary", "df-generated"] + - ["java.util", "IllegalFormatConversionException", "IllegalFormatConversionException", "(char,Class)", "summary", "df-generated"] + - ["java.util", "IllegalFormatConversionException", "getArgumentClass", "()", "summary", "df-generated"] + - ["java.util", "IllegalFormatConversionException", "getConversion", "()", "summary", "df-generated"] + - ["java.util", "IllegalFormatPrecisionException", "IllegalFormatPrecisionException", "(int)", "summary", "df-generated"] + - ["java.util", "IllegalFormatPrecisionException", "getPrecision", "()", "summary", "df-generated"] + - ["java.util", "IllegalFormatWidthException", "IllegalFormatWidthException", "(int)", "summary", "df-generated"] + - ["java.util", "IllegalFormatWidthException", "getWidth", "()", "summary", "df-generated"] + - ["java.util", "IllformedLocaleException", "getErrorIndex", "()", "summary", "df-generated"] + - ["java.util", "IntSummaryStatistics", "IntSummaryStatistics", "(long,int,int,long)", "summary", "df-generated"] + - ["java.util", "IntSummaryStatistics", "combine", "(IntSummaryStatistics)", "summary", "df-generated"] + - ["java.util", "IntSummaryStatistics", "getAverage", "()", "summary", "df-generated"] + - ["java.util", "IntSummaryStatistics", "getCount", "()", "summary", "df-generated"] + - ["java.util", "IntSummaryStatistics", "getMax", "()", "summary", "df-generated"] + - ["java.util", "IntSummaryStatistics", "getMin", "()", "summary", "df-generated"] + - ["java.util", "IntSummaryStatistics", "getSum", "()", "summary", "df-generated"] + - ["java.util", "LinkedHashMap", "LinkedHashMap", "(int)", "summary", "df-generated"] + - ["java.util", "LinkedHashMap", "LinkedHashMap", "(int,float)", "summary", "df-generated"] + - ["java.util", "LinkedHashMap", "LinkedHashMap", "(int,float,boolean)", "summary", "df-generated"] + - ["java.util", "LinkedHashSet", "LinkedHashSet", "(int)", "summary", "df-generated"] + - ["java.util", "LinkedHashSet", "LinkedHashSet", "(int,float)", "summary", "df-generated"] + - ["java.util", "List", "replaceAll", "(UnaryOperator)", "summary", "df-generated"] + - ["java.util", "ListResourceBundle", "getContents", "()", "summary", "df-generated"] + - ["java.util", "Locale$LanguageRange", "getWeight", "()", "summary", "df-generated"] + - ["java.util", "Locale", "filter", "(List,Collection)", "summary", "df-generated"] + - ["java.util", "Locale", "filter", "(List,Collection,Locale$FilteringMode)", "summary", "df-generated"] + - ["java.util", "Locale", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.util", "Locale", "getDefault", "()", "summary", "df-generated"] + - ["java.util", "Locale", "getDefault", "(Locale$Category)", "summary", "df-generated"] + - ["java.util", "Locale", "getExtension", "(char)", "summary", "df-generated"] + - ["java.util", "Locale", "getISO3Country", "()", "summary", "df-generated"] + - ["java.util", "Locale", "getISOCountries", "()", "summary", "df-generated"] + - ["java.util", "Locale", "getISOCountries", "(Locale$IsoCountryCode)", "summary", "df-generated"] + - ["java.util", "Locale", "getISOLanguages", "()", "summary", "df-generated"] + - ["java.util", "Locale", "getUnicodeLocaleAttributes", "()", "summary", "df-generated"] + - ["java.util", "Locale", "getUnicodeLocaleKeys", "()", "summary", "df-generated"] + - ["java.util", "Locale", "getUnicodeLocaleType", "(String)", "summary", "df-generated"] + - ["java.util", "Locale", "hasExtensions", "()", "summary", "df-generated"] + - ["java.util", "Locale", "lookup", "(List,Collection)", "summary", "df-generated"] + - ["java.util", "Locale", "setDefault", "(Locale$Category,Locale)", "summary", "df-generated"] + - ["java.util", "Locale", "setDefault", "(Locale)", "summary", "df-generated"] + - ["java.util", "LongSummaryStatistics", "LongSummaryStatistics", "(long,long,long,long)", "summary", "df-generated"] + - ["java.util", "LongSummaryStatistics", "combine", "(LongSummaryStatistics)", "summary", "df-generated"] + - ["java.util", "LongSummaryStatistics", "getAverage", "()", "summary", "df-generated"] + - ["java.util", "LongSummaryStatistics", "getCount", "()", "summary", "df-generated"] + - ["java.util", "LongSummaryStatistics", "getMax", "()", "summary", "df-generated"] + - ["java.util", "LongSummaryStatistics", "getMin", "()", "summary", "df-generated"] + - ["java.util", "LongSummaryStatistics", "getSum", "()", "summary", "df-generated"] + - ["java.util", "Map$Entry", "comparingByKey", "()", "summary", "df-generated"] + - ["java.util", "Map$Entry", "comparingByKey", "(Comparator)", "summary", "df-generated"] + - ["java.util", "Map$Entry", "comparingByValue", "()", "summary", "df-generated"] + - ["java.util", "Map$Entry", "comparingByValue", "(Comparator)", "summary", "df-generated"] + - ["java.util", "Map", "remove", "(Object,Object)", "summary", "df-generated"] + - ["java.util", "Map", "replaceAll", "(BiFunction)", "summary", "df-generated"] + - ["java.util", "Objects", "checkFromIndexSize", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "Objects", "checkFromIndexSize", "(long,long,long)", "summary", "df-generated"] + - ["java.util", "Objects", "checkFromToIndex", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "Objects", "checkFromToIndex", "(long,long,long)", "summary", "df-generated"] + - ["java.util", "Objects", "checkIndex", "(int,int)", "summary", "df-generated"] + - ["java.util", "Objects", "checkIndex", "(long,long)", "summary", "df-generated"] + - ["java.util", "Objects", "compare", "(Object,Object,Comparator)", "summary", "df-generated"] + - ["java.util", "Objects", "deepEquals", "(Object,Object)", "summary", "df-generated"] + - ["java.util", "Observable", "countObservers", "()", "summary", "df-generated"] + - ["java.util", "Observable", "deleteObserver", "(Observer)", "summary", "df-generated"] + - ["java.util", "Observable", "deleteObservers", "()", "summary", "df-generated"] + - ["java.util", "Observable", "hasChanged", "()", "summary", "df-generated"] + - ["java.util", "Observable", "notifyObservers", "()", "summary", "df-generated"] + - ["java.util", "Observable", "notifyObservers", "(Object)", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "empty", "()", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "getAsDouble", "()", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "ifPresent", "(DoubleConsumer)", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "ifPresentOrElse", "(DoubleConsumer,Runnable)", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "isEmpty", "()", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "isPresent", "()", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "of", "(double)", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "orElse", "(double)", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "orElseGet", "(DoubleSupplier)", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "orElseThrow", "()", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "orElseThrow", "(Supplier)", "summary", "df-generated"] + - ["java.util", "OptionalDouble", "stream", "()", "summary", "df-generated"] + - ["java.util", "OptionalInt", "empty", "()", "summary", "df-generated"] + - ["java.util", "OptionalInt", "getAsInt", "()", "summary", "df-generated"] + - ["java.util", "OptionalInt", "ifPresent", "(IntConsumer)", "summary", "df-generated"] + - ["java.util", "OptionalInt", "ifPresentOrElse", "(IntConsumer,Runnable)", "summary", "df-generated"] + - ["java.util", "OptionalInt", "isEmpty", "()", "summary", "df-generated"] + - ["java.util", "OptionalInt", "isPresent", "()", "summary", "df-generated"] + - ["java.util", "OptionalInt", "of", "(int)", "summary", "df-generated"] + - ["java.util", "OptionalInt", "orElse", "(int)", "summary", "df-generated"] + - ["java.util", "OptionalInt", "orElseGet", "(IntSupplier)", "summary", "df-generated"] + - ["java.util", "OptionalInt", "orElseThrow", "()", "summary", "df-generated"] + - ["java.util", "OptionalInt", "orElseThrow", "(Supplier)", "summary", "df-generated"] + - ["java.util", "OptionalInt", "stream", "()", "summary", "df-generated"] + - ["java.util", "OptionalLong", "empty", "()", "summary", "df-generated"] + - ["java.util", "OptionalLong", "getAsLong", "()", "summary", "df-generated"] + - ["java.util", "OptionalLong", "ifPresent", "(LongConsumer)", "summary", "df-generated"] + - ["java.util", "OptionalLong", "ifPresentOrElse", "(LongConsumer,Runnable)", "summary", "df-generated"] + - ["java.util", "OptionalLong", "isEmpty", "()", "summary", "df-generated"] + - ["java.util", "OptionalLong", "isPresent", "()", "summary", "df-generated"] + - ["java.util", "OptionalLong", "of", "(long)", "summary", "df-generated"] + - ["java.util", "OptionalLong", "orElse", "(long)", "summary", "df-generated"] + - ["java.util", "OptionalLong", "orElseGet", "(LongSupplier)", "summary", "df-generated"] + - ["java.util", "OptionalLong", "orElseThrow", "()", "summary", "df-generated"] + - ["java.util", "OptionalLong", "orElseThrow", "(Supplier)", "summary", "df-generated"] + - ["java.util", "OptionalLong", "stream", "()", "summary", "df-generated"] + - ["java.util", "PrimitiveIterator$OfDouble", "nextDouble", "()", "summary", "df-generated"] + - ["java.util", "PrimitiveIterator$OfInt", "nextInt", "()", "summary", "df-generated"] + - ["java.util", "PrimitiveIterator$OfLong", "nextLong", "()", "summary", "df-generated"] + - ["java.util", "PriorityQueue", "PriorityQueue", "(int)", "summary", "df-generated"] + - ["java.util", "Properties", "Properties", "(int)", "summary", "df-generated"] + - ["java.util", "Properties", "load", "(InputStream)", "summary", "df-generated"] + - ["java.util", "Properties", "load", "(Reader)", "summary", "df-generated"] + - ["java.util", "Properties", "loadFromXML", "(InputStream)", "summary", "df-generated"] + - ["java.util", "Properties", "save", "(OutputStream,String)", "summary", "df-generated"] + - ["java.util", "Properties", "store", "(OutputStream,String)", "summary", "df-generated"] + - ["java.util", "Properties", "storeToXML", "(OutputStream,String)", "summary", "df-generated"] + - ["java.util", "Properties", "storeToXML", "(OutputStream,String,Charset)", "summary", "df-generated"] + - ["java.util", "Properties", "storeToXML", "(OutputStream,String,String)", "summary", "df-generated"] + - ["java.util", "PropertyResourceBundle", "PropertyResourceBundle", "(InputStream)", "summary", "df-generated"] + - ["java.util", "PropertyResourceBundle", "PropertyResourceBundle", "(Reader)", "summary", "df-generated"] + - ["java.util", "Random", "Random", "(long)", "summary", "df-generated"] + - ["java.util", "Random", "setSeed", "(long)", "summary", "df-generated"] + - ["java.util", "ResourceBundle$Control", "getCandidateLocales", "(String,Locale)", "summary", "df-generated"] + - ["java.util", "ResourceBundle$Control", "getControl", "(List)", "summary", "df-generated"] + - ["java.util", "ResourceBundle$Control", "getFallbackLocale", "(String,Locale)", "summary", "df-generated"] + - ["java.util", "ResourceBundle$Control", "getNoFallbackControl", "(List)", "summary", "df-generated"] + - ["java.util", "ResourceBundle$Control", "getTimeToLive", "(String,Locale)", "summary", "df-generated"] + - ["java.util", "ResourceBundle$Control", "needsReload", "(String,Locale,String,ClassLoader,ResourceBundle,long)", "summary", "df-generated"] + - ["java.util", "ResourceBundle", "clearCache", "()", "summary", "df-generated"] + - ["java.util", "ResourceBundle", "clearCache", "(ClassLoader)", "summary", "df-generated"] + - ["java.util", "ResourceBundle", "containsKey", "(String)", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextBigDecimal", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextBigInteger", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextBigInteger", "(int)", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextBoolean", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextByte", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextByte", "(int)", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextDouble", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextFloat", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextInt", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextInt", "(int)", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextLine", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextLong", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextLong", "(int)", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextShort", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "hasNextShort", "(int)", "summary", "df-generated"] + - ["java.util", "Scanner", "radix", "()", "summary", "df-generated"] + - ["java.util", "Scanner", "tokens", "()", "summary", "df-generated"] + - ["java.util", "ServiceLoader", "load", "(Class)", "summary", "df-generated"] + - ["java.util", "ServiceLoader", "loadInstalled", "(Class)", "summary", "df-generated"] + - ["java.util", "ServiceLoader", "reload", "()", "summary", "df-generated"] + - ["java.util", "Set", "of", "()", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setDSTSavings", "(int)", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setEndRule", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setEndRule", "(int,int,int,int)", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setEndRule", "(int,int,int,int,boolean)", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setStartRule", "(int,int,int)", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setStartRule", "(int,int,int,int)", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setStartRule", "(int,int,int,int,boolean)", "summary", "df-generated"] + - ["java.util", "SimpleTimeZone", "setStartYear", "(int)", "summary", "df-generated"] + - ["java.util", "Spliterator$OfPrimitive", "forEachRemaining", "(Object)", "summary", "df-generated"] + - ["java.util", "Spliterator", "getComparator", "()", "summary", "df-generated"] + - ["java.util", "Spliterator", "getExactSizeIfKnown", "()", "summary", "df-generated"] + - ["java.util", "Spliterator", "hasCharacteristics", "(int)", "summary", "df-generated"] + - ["java.util", "Spliterators", "emptyDoubleSpliterator", "()", "summary", "df-generated"] + - ["java.util", "Spliterators", "emptyIntSpliterator", "()", "summary", "df-generated"] + - ["java.util", "Spliterators", "emptyLongSpliterator", "()", "summary", "df-generated"] + - ["java.util", "Spliterators", "emptySpliterator", "()", "summary", "df-generated"] + - ["java.util", "Spliterators", "iterator", "(Spliterator$OfDouble)", "summary", "df-generated"] + - ["java.util", "Spliterators", "iterator", "(Spliterator$OfInt)", "summary", "df-generated"] + - ["java.util", "Spliterators", "iterator", "(Spliterator$OfLong)", "summary", "df-generated"] + - ["java.util", "Spliterators", "iterator", "(Spliterator)", "summary", "df-generated"] + - ["java.util", "Spliterators", "spliterator", "(double[],int)", "summary", "df-generated"] + - ["java.util", "Spliterators", "spliterator", "(double[],int,int,int)", "summary", "df-generated"] + - ["java.util", "Spliterators", "spliterator", "(int[],int)", "summary", "df-generated"] + - ["java.util", "Spliterators", "spliterator", "(int[],int,int,int)", "summary", "df-generated"] + - ["java.util", "Spliterators", "spliterator", "(long[],int)", "summary", "df-generated"] + - ["java.util", "Spliterators", "spliterator", "(long[],int,int,int)", "summary", "df-generated"] + - ["java.util", "SplittableRandom", "SplittableRandom", "(long)", "summary", "df-generated"] + - ["java.util", "Stack", "empty", "()", "summary", "df-generated"] + - ["java.util", "Stack", "search", "(Object)", "summary", "df-generated"] + - ["java.util", "StringJoiner", "length", "()", "summary", "df-generated"] + - ["java.util", "StringTokenizer", "countTokens", "()", "summary", "df-generated"] + - ["java.util", "StringTokenizer", "hasMoreTokens", "()", "summary", "df-generated"] + - ["java.util", "TimeZone", "getAvailableIDs", "()", "summary", "df-generated"] + - ["java.util", "TimeZone", "getAvailableIDs", "(int)", "summary", "df-generated"] + - ["java.util", "TimeZone", "getDSTSavings", "()", "summary", "df-generated"] + - ["java.util", "TimeZone", "getDefault", "()", "summary", "df-generated"] + - ["java.util", "TimeZone", "getOffset", "(int,int,int,int,int,int)", "summary", "df-generated"] + - ["java.util", "TimeZone", "getOffset", "(long)", "summary", "df-generated"] + - ["java.util", "TimeZone", "getRawOffset", "()", "summary", "df-generated"] + - ["java.util", "TimeZone", "hasSameRules", "(TimeZone)", "summary", "df-generated"] + - ["java.util", "TimeZone", "inDaylightTime", "(Date)", "summary", "df-generated"] + - ["java.util", "TimeZone", "observesDaylightTime", "()", "summary", "df-generated"] + - ["java.util", "TimeZone", "setDefault", "(TimeZone)", "summary", "df-generated"] + - ["java.util", "TimeZone", "setRawOffset", "(int)", "summary", "df-generated"] + - ["java.util", "TimeZone", "useDaylightTime", "()", "summary", "df-generated"] + - ["java.util", "Timer", "Timer", "(boolean)", "summary", "df-generated"] + - ["java.util", "Timer", "cancel", "()", "summary", "df-generated"] + - ["java.util", "Timer", "purge", "()", "summary", "df-generated"] + - ["java.util", "Timer", "schedule", "(TimerTask,Date)", "summary", "df-generated"] + - ["java.util", "Timer", "schedule", "(TimerTask,Date,long)", "summary", "df-generated"] + - ["java.util", "Timer", "schedule", "(TimerTask,long)", "summary", "df-generated"] + - ["java.util", "Timer", "schedule", "(TimerTask,long,long)", "summary", "df-generated"] + - ["java.util", "Timer", "scheduleAtFixedRate", "(TimerTask,Date,long)", "summary", "df-generated"] + - ["java.util", "Timer", "scheduleAtFixedRate", "(TimerTask,long,long)", "summary", "df-generated"] + - ["java.util", "TimerTask", "cancel", "()", "summary", "df-generated"] + - ["java.util", "TimerTask", "scheduledExecutionTime", "()", "summary", "df-generated"] + - ["java.util", "UUID", "UUID", "(long,long)", "summary", "df-generated"] + - ["java.util", "UUID", "clockSequence", "()", "summary", "df-generated"] + - ["java.util", "UUID", "getLeastSignificantBits", "()", "summary", "df-generated"] + - ["java.util", "UUID", "getMostSignificantBits", "()", "summary", "df-generated"] + - ["java.util", "UUID", "nameUUIDFromBytes", "(byte[])", "summary", "df-generated"] + - ["java.util", "UUID", "node", "()", "summary", "df-generated"] + - ["java.util", "UUID", "timestamp", "()", "summary", "df-generated"] + - ["java.util", "UUID", "variant", "()", "summary", "df-generated"] + - ["java.util", "UUID", "version", "()", "summary", "df-generated"] + - ["java.util", "Vector", "Vector", "(int)", "summary", "df-generated"] + - ["java.util", "Vector", "Vector", "(int,int)", "summary", "df-generated"] + - ["java.util", "Vector", "capacity", "()", "summary", "df-generated"] + - ["java.util", "Vector", "ensureCapacity", "(int)", "summary", "df-generated"] + - ["java.util", "Vector", "indexOf", "(Object,int)", "summary", "df-generated"] + - ["java.util", "Vector", "lastIndexOf", "(Object,int)", "summary", "df-generated"] + - ["java.util", "Vector", "removeAllElements", "()", "summary", "df-generated"] + - ["java.util", "Vector", "removeElement", "(Object)", "summary", "df-generated"] + - ["java.util", "Vector", "removeElementAt", "(int)", "summary", "df-generated"] + - ["java.util", "Vector", "setSize", "(int)", "summary", "df-generated"] + - ["java.util", "Vector", "trimToSize", "()", "summary", "df-generated"] + - ["java.util", "WeakHashMap", "WeakHashMap", "(int)", "summary", "df-generated"] + - ["java.util", "WeakHashMap", "WeakHashMap", "(int,float)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.prefs.model.yml b/java/ql/lib/ext/generated/java.util.prefs.model.yml new file mode 100644 index 000000000000..bb056466a619 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.prefs.model.yml @@ -0,0 +1,69 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.prefs", "BackingStoreException", True, "BackingStoreException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "BackingStoreException", True, "BackingStoreException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "InvalidPreferencesFormatException", True, "InvalidPreferencesFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "InvalidPreferencesFormatException", True, "InvalidPreferencesFormatException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "InvalidPreferencesFormatException", True, "InvalidPreferencesFormatException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "InvalidPreferencesFormatException", True, "InvalidPreferencesFormatException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "NodeChangeEvent", True, "NodeChangeEvent", "(Preferences,Preferences)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "NodeChangeEvent", True, "NodeChangeEvent", "(Preferences,Preferences)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "NodeChangeEvent", True, "getChild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "NodeChangeEvent", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "PreferenceChangeEvent", True, "PreferenceChangeEvent", "(Preferences,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "PreferenceChangeEvent", True, "PreferenceChangeEvent", "(Preferences,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "PreferenceChangeEvent", True, "PreferenceChangeEvent", "(Preferences,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "PreferenceChangeEvent", True, "getKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "PreferenceChangeEvent", True, "getNewValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "PreferenceChangeEvent", True, "getNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "absolutePath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "addNodeChangeListener", "(NodeChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "addPreferenceChangeListener", "(PreferenceChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "childrenNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "get", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "get", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "getByteArray", "(String,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "keys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "node", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "node", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.prefs", "Preferences", True, "parent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "put", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "put", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "putBoolean", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "putByteArray", "(String,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "putDouble", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "putFloat", "(String,float)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "putInt", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.prefs", "Preferences", True, "putLong", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.prefs", "Preferences", "clear", "()", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "exportNode", "(OutputStream)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "exportSubtree", "(OutputStream)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "flush", "()", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "getBoolean", "(String,boolean)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "getDouble", "(String,double)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "getFloat", "(String,float)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "getInt", "(String,int)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "getLong", "(String,long)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "importPreferences", "(InputStream)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "isUserNode", "()", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "nodeExists", "(String)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "remove", "(String)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "removeNode", "()", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "removeNodeChangeListener", "(NodeChangeListener)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "removePreferenceChangeListener", "(PreferenceChangeListener)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "sync", "()", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "systemNodeForPackage", "(Class)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "systemRoot", "()", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "userNodeForPackage", "(Class)", "summary", "df-generated"] + - ["java.util.prefs", "Preferences", "userRoot", "()", "summary", "df-generated"] + - ["java.util.prefs", "PreferencesFactory", "systemRoot", "()", "summary", "df-generated"] + - ["java.util.prefs", "PreferencesFactory", "userRoot", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.random.model.yml b/java/ql/lib/ext/generated/java.util.random.model.yml new file mode 100644 index 000000000000..2e543aebe8f3 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.random.model.yml @@ -0,0 +1,88 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.random", "RandomGenerator$SplittableGenerator", True, "splits", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", True, "splits", "(RandomGenerator$SplittableGenerator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", True, "splits", "(RandomGenerator$SplittableGenerator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", True, "splits", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", True, "splits", "(long,RandomGenerator$SplittableGenerator)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", True, "splits", "(long,RandomGenerator$SplittableGenerator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "doubles", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "doubles", "(double,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "doubles", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "doubles", "(long,double,double)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "ints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "ints", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "ints", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "ints", "(long,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "longs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "longs", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "longs", "(long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.random", "RandomGenerator", True, "longs", "(long,long,long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.random", "RandomGenerator$ArbitrarilyJumpableGenerator", "copyAndJump", "(double)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$ArbitrarilyJumpableGenerator", "jumps", "(double)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$ArbitrarilyJumpableGenerator", "jumps", "(long,double)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$ArbitrarilyJumpableGenerator", "of", "(String)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$JumpableGenerator", "copyAndJump", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$JumpableGenerator", "jump", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$JumpableGenerator", "jumps", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$JumpableGenerator", "jumps", "(long)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$JumpableGenerator", "of", "(String)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$LeapableGenerator", "copyAndLeap", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$LeapableGenerator", "leap", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$LeapableGenerator", "leaps", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$LeapableGenerator", "leaps", "(long)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$LeapableGenerator", "of", "(String)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", "of", "(String)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", "split", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$SplittableGenerator", "split", "(RandomGenerator$SplittableGenerator)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$StreamableGenerator", "of", "(String)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$StreamableGenerator", "rngs", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator$StreamableGenerator", "rngs", "(long)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "getDefault", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "isDeprecated", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextBoolean", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextBytes", "(byte[])", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextDouble", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextDouble", "(double)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextDouble", "(double,double)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextExponential", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextFloat", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextFloat", "(float)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextFloat", "(float,float)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextGaussian", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextGaussian", "(double,double)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextInt", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextInt", "(int)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextInt", "(int,int)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextLong", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextLong", "(long)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "nextLong", "(long,long)", "summary", "df-generated"] + - ["java.util.random", "RandomGenerator", "of", "(String)", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "all", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "create", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "create", "(byte[])", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "create", "(long)", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "equidistribution", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "getDefault", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "group", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isArbitrarilyJumpable", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isDeprecated", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isHardware", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isJumpable", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isLeapable", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isSplittable", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isStatistical", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isStochastic", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "isStreamable", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "name", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "of", "(String)", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "period", "()", "summary", "df-generated"] + - ["java.util.random", "RandomGeneratorFactory", "stateBits", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.regex.model.yml b/java/ql/lib/ext/generated/java.util.regex.model.yml new file mode 100644 index 000000000000..6796f7ba32a3 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.regex.model.yml @@ -0,0 +1,63 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.regex", "MatchResult", True, "group", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "MatchResult", True, "group", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuffer,String)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuffer,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuilder,String)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuilder,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuffer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuffer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuffer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuilder)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuilder)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuilder)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "pattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "quoteReplacement", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "region", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.regex", "Matcher", False, "reset", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.regex", "Matcher", False, "reset", "(CharSequence)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "reset", "(CharSequence)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "reset", "(CharSequence)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "toMatchResult", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "useAnchoringBounds", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.regex", "Matcher", False, "usePattern", "(Pattern)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.regex", "Matcher", False, "usePattern", "(Pattern)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.regex", "Matcher", False, "useTransparentBounds", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.regex", "Pattern", False, "compile", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "Pattern", False, "pattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "PatternSyntaxException", True, "PatternSyntaxException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.regex", "PatternSyntaxException", True, "PatternSyntaxException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.regex", "PatternSyntaxException", True, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.regex", "PatternSyntaxException", True, "getPattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.regex", "MatchResult", "end", "()", "summary", "df-generated"] + - ["java.util.regex", "MatchResult", "end", "(int)", "summary", "df-generated"] + - ["java.util.regex", "MatchResult", "groupCount", "()", "summary", "df-generated"] + - ["java.util.regex", "MatchResult", "start", "()", "summary", "df-generated"] + - ["java.util.regex", "MatchResult", "start", "(int)", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "end", "(String)", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "find", "(int)", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "hasAnchoringBounds", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "hasTransparentBounds", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "hitEnd", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "lookingAt", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "matches", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "regionEnd", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "regionStart", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "requireEnd", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "results", "()", "summary", "df-generated"] + - ["java.util.regex", "Matcher", "start", "(String)", "summary", "df-generated"] + - ["java.util.regex", "Pattern", "asMatchPredicate", "()", "summary", "df-generated"] + - ["java.util.regex", "Pattern", "asPredicate", "()", "summary", "df-generated"] + - ["java.util.regex", "Pattern", "flags", "()", "summary", "df-generated"] + - ["java.util.regex", "Pattern", "matches", "(String,CharSequence)", "summary", "df-generated"] + - ["java.util.regex", "Pattern", "splitAsStream", "(CharSequence)", "summary", "df-generated"] + - ["java.util.regex", "PatternSyntaxException", "getIndex", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.spi.model.yml b/java/ql/lib/ext/generated/java.util.spi.model.yml new file mode 100644 index 000000000000..b2bdab212b0e --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.spi.model.yml @@ -0,0 +1,25 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.spi", "CalendarDataProvider", "getFirstDayOfWeek", "(Locale)", "summary", "df-generated"] + - ["java.util.spi", "CalendarDataProvider", "getMinimalDaysInFirstWeek", "(Locale)", "summary", "df-generated"] + - ["java.util.spi", "CalendarNameProvider", "getDisplayName", "(String,int,int,int,Locale)", "summary", "df-generated"] + - ["java.util.spi", "CalendarNameProvider", "getDisplayNames", "(String,int,int,Locale)", "summary", "df-generated"] + - ["java.util.spi", "CurrencyNameProvider", "getDisplayName", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "CurrencyNameProvider", "getSymbol", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "LocaleNameProvider", "getDisplayCountry", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "LocaleNameProvider", "getDisplayLanguage", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "LocaleNameProvider", "getDisplayScript", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "LocaleNameProvider", "getDisplayUnicodeExtensionKey", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "LocaleNameProvider", "getDisplayUnicodeExtensionType", "(String,String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "LocaleNameProvider", "getDisplayVariant", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "LocaleServiceProvider", "getAvailableLocales", "()", "summary", "df-generated"] + - ["java.util.spi", "LocaleServiceProvider", "isSupportedLocale", "(Locale)", "summary", "df-generated"] + - ["java.util.spi", "ResourceBundleProvider", "getBundle", "(String,Locale)", "summary", "df-generated"] + - ["java.util.spi", "TimeZoneNameProvider", "getDisplayName", "(String,boolean,int,Locale)", "summary", "df-generated"] + - ["java.util.spi", "TimeZoneNameProvider", "getGenericDisplayName", "(String,int,Locale)", "summary", "df-generated"] + - ["java.util.spi", "ToolProvider", "findFirst", "(String)", "summary", "df-generated"] + - ["java.util.spi", "ToolProvider", "run", "(PrintStream,PrintStream,String[])", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.stream.model.yml b/java/ql/lib/ext/generated/java.util.stream.model.yml new file mode 100644 index 000000000000..edd36e33405a --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.stream.model.yml @@ -0,0 +1,216 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.stream", "Collector", True, "of", "(Supplier,BiConsumer,BinaryOperator,Collector$Characteristics[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collector", True, "of", "(Supplier,BiConsumer,BinaryOperator,Collector$Characteristics[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collector", True, "of", "(Supplier,BiConsumer,BinaryOperator,Collector$Characteristics[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collector", True, "of", "(Supplier,BiConsumer,BinaryOperator,Function,Collector$Characteristics[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collector", True, "of", "(Supplier,BiConsumer,BinaryOperator,Function,Collector$Characteristics[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collector", True, "of", "(Supplier,BiConsumer,BinaryOperator,Function,Collector$Characteristics[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collector", True, "of", "(Supplier,BiConsumer,BinaryOperator,Function,Collector$Characteristics[])", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "collectingAndThen", "(Collector,Function)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "filtering", "(Predicate,Collector)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "flatMapping", "(Function,Collector)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "groupingBy", "(Function,Supplier,Collector)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "groupingByConcurrent", "(Function,Supplier,Collector)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "mapping", "(Function,Collector)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "teeing", "(Collector,Collector,BiFunction)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "toCollection", "(Supplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "toConcurrentMap", "(Function,Function,BinaryOperator,Supplier)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Collectors", False, "toMap", "(Function,Function,BinaryOperator,Supplier)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream$Builder", True, "add", "(double)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.stream", "DoubleStream$Builder", True, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "boxed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "concat", "(DoubleStream,DoubleStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "concat", "(DoubleStream,DoubleStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "distinct", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "dropWhile", "(DoublePredicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "dropWhile", "(DoublePredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "filter", "(DoublePredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "flatMap", "(DoubleFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "generate", "(DoubleSupplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "limit", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "map", "(DoubleUnaryOperator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "mapMulti", "(DoubleStream$DoubleMapMultiConsumer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "mapToInt", "(DoubleToIntFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "mapToLong", "(DoubleToLongFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "mapToObj", "(DoubleFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "peek", "(DoubleConsumer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "skip", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "sorted", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "takeWhile", "(DoublePredicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "DoubleStream", True, "takeWhile", "(DoublePredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream$Builder", True, "add", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.stream", "IntStream$Builder", True, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "asDoubleStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "asLongStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "boxed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "concat", "(IntStream,IntStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "concat", "(IntStream,IntStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "distinct", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "dropWhile", "(IntPredicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "dropWhile", "(IntPredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "filter", "(IntPredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "flatMap", "(IntFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "generate", "(IntSupplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "limit", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "map", "(IntUnaryOperator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "mapMulti", "(IntStream$IntMapMultiConsumer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "mapToDouble", "(IntToDoubleFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "mapToLong", "(IntToLongFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "mapToObj", "(IntFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "peek", "(IntConsumer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "skip", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.stream", "IntStream", True, "sorted", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "takeWhile", "(IntPredicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "IntStream", True, "takeWhile", "(IntPredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream$Builder", True, "add", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.stream", "LongStream$Builder", True, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "asDoubleStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "boxed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "concat", "(LongStream,LongStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "concat", "(LongStream,LongStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "distinct", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "dropWhile", "(LongPredicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "dropWhile", "(LongPredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "filter", "(LongPredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "flatMap", "(LongFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "generate", "(LongSupplier)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "limit", "(long)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "map", "(LongUnaryOperator)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "mapMulti", "(LongStream$LongMapMultiConsumer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "mapToDouble", "(LongToDoubleFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "mapToInt", "(LongToIntFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "mapToObj", "(LongFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "peek", "(LongConsumer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "skip", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.stream", "LongStream", True, "sorted", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "takeWhile", "(LongPredicate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "LongStream", True, "takeWhile", "(LongPredicate)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "Sink$ChainedDouble", True, "ChainedDouble", "(Sink)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.stream", "Sink$ChainedInt", True, "ChainedInt", "(Sink)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.stream", "Sink$ChainedLong", True, "ChainedLong", "(Sink)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.stream", "Sink$ChainedReference", True, "ChainedReference", "(Sink)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.stream", "Stream$Builder", True, "add", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.stream", "Stream$Builder", True, "add", "(Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "doubleStream", "(Spliterator$OfDouble,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "doubleStream", "(Supplier,int,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "intStream", "(Spliterator$OfInt,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "intStream", "(Supplier,int,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "longStream", "(Spliterator$OfLong,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "longStream", "(Supplier,int,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "stream", "(Spliterator,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.stream", "StreamSupport", False, "stream", "(Supplier,int,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.stream", "Collectors", "averagingDouble", "(ToDoubleFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "averagingInt", "(ToIntFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "averagingLong", "(ToLongFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "counting", "()", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "groupingBy", "(Function)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "groupingBy", "(Function,Collector)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "groupingByConcurrent", "(Function)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "groupingByConcurrent", "(Function,Collector)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "joining", "()", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "joining", "(CharSequence)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "joining", "(CharSequence,CharSequence,CharSequence)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "maxBy", "(Comparator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "minBy", "(Comparator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "partitioningBy", "(Predicate)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "partitioningBy", "(Predicate,Collector)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "reducing", "(BinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "reducing", "(Object,BinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "reducing", "(Object,Function,BinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "summarizingDouble", "(ToDoubleFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "summarizingInt", "(ToIntFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "summarizingLong", "(ToLongFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "summingDouble", "(ToDoubleFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "summingInt", "(ToIntFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "summingLong", "(ToLongFunction)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toConcurrentMap", "(Function,Function)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toConcurrentMap", "(Function,Function,BinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toMap", "(Function,Function)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toMap", "(Function,Function,BinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toUnmodifiableList", "()", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toUnmodifiableMap", "(Function,Function)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toUnmodifiableMap", "(Function,Function,BinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "Collectors", "toUnmodifiableSet", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "allMatch", "(DoublePredicate)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "anyMatch", "(DoublePredicate)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "average", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "builder", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "collect", "(Supplier,ObjDoubleConsumer,BiConsumer)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "count", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "empty", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "findAny", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "findFirst", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "forEach", "(DoubleConsumer)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "forEachOrdered", "(DoubleConsumer)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "iterate", "(double,DoublePredicate,DoubleUnaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "iterate", "(double,DoubleUnaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "max", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "min", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "noneMatch", "(DoublePredicate)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "of", "(double)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "of", "(double[])", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "reduce", "(DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "reduce", "(double,DoubleBinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "sum", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "summaryStatistics", "()", "summary", "df-generated"] + - ["java.util.stream", "DoubleStream", "toArray", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "allMatch", "(IntPredicate)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "anyMatch", "(IntPredicate)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "average", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "builder", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "collect", "(Supplier,ObjIntConsumer,BiConsumer)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "count", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "empty", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "findAny", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "findFirst", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "forEach", "(IntConsumer)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "forEachOrdered", "(IntConsumer)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "iterate", "(int,IntPredicate,IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "iterate", "(int,IntUnaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "max", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "min", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "noneMatch", "(IntPredicate)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "of", "(int)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "of", "(int[])", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "rangeClosed", "(int,int)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "reduce", "(IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "reduce", "(int,IntBinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "sum", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "summaryStatistics", "()", "summary", "df-generated"] + - ["java.util.stream", "IntStream", "toArray", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "allMatch", "(LongPredicate)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "anyMatch", "(LongPredicate)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "average", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "builder", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "collect", "(Supplier,ObjLongConsumer,BiConsumer)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "count", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "empty", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "findAny", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "findFirst", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "forEach", "(LongConsumer)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "forEachOrdered", "(LongConsumer)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "iterate", "(long,LongPredicate,LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "iterate", "(long,LongUnaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "max", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "min", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "noneMatch", "(LongPredicate)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "of", "(long)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "of", "(long[])", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "range", "(long,long)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "rangeClosed", "(long,long)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "reduce", "(LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "reduce", "(long,LongBinaryOperator)", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "sum", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "summaryStatistics", "()", "summary", "df-generated"] + - ["java.util.stream", "LongStream", "toArray", "()", "summary", "df-generated"] + - ["java.util.stream", "Stream", "builder", "()", "summary", "df-generated"] + - ["java.util.stream", "Stream", "empty", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.zip.model.yml b/java/ql/lib/ext/generated/java.util.zip.model.yml new file mode 100644 index 000000000000..8aaf1118ad65 --- /dev/null +++ b/java/ql/lib/ext/generated/java.util.zip.model.yml @@ -0,0 +1,155 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["java.util.zip", "CheckedInputStream", True, "CheckedInputStream", "(InputStream,Checksum)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "CheckedInputStream", True, "CheckedInputStream", "(InputStream,Checksum)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "CheckedInputStream", True, "getChecksum", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "CheckedOutputStream", True, "CheckedOutputStream", "(OutputStream,Checksum)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "CheckedOutputStream", True, "CheckedOutputStream", "(OutputStream,Checksum)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "CheckedOutputStream", True, "getChecksum", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "DataFormatException", True, "DataFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "Deflater", True, "setInput", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "Deflater", True, "setInput", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "Deflater", True, "setInput", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterInputStream", True, "DeflaterInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterInputStream", True, "DeflaterInputStream", "(InputStream,Deflater)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterInputStream", True, "DeflaterInputStream", "(InputStream,Deflater)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterInputStream", True, "DeflaterInputStream", "(InputStream,Deflater,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterInputStream", True, "DeflaterInputStream", "(InputStream,Deflater,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,Deflater,int,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", True, "DeflaterOutputStream", "(OutputStream,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "GZIPOutputStream", True, "GZIPOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "GZIPOutputStream", True, "GZIPOutputStream", "(OutputStream,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "GZIPOutputStream", True, "GZIPOutputStream", "(OutputStream,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "GZIPOutputStream", True, "GZIPOutputStream", "(OutputStream,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "Inflater", True, "setInput", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "Inflater", True, "setInput", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "Inflater", True, "setInput", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterInputStream", True, "InflaterInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterInputStream", True, "InflaterInputStream", "(InputStream,Inflater)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterInputStream", True, "InflaterInputStream", "(InputStream,Inflater)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterInputStream", True, "InflaterInputStream", "(InputStream,Inflater,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterInputStream", True, "InflaterInputStream", "(InputStream,Inflater,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterOutputStream", True, "InflaterOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterOutputStream", True, "InflaterOutputStream", "(OutputStream,Inflater)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterOutputStream", True, "InflaterOutputStream", "(OutputStream,Inflater)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterOutputStream", True, "InflaterOutputStream", "(OutputStream,Inflater,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "InflaterOutputStream", True, "InflaterOutputStream", "(OutputStream,Inflater,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "ZipEntry", "(ZipEntry)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "getComment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "getCreationTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "getExtra", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "getLastAccessTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "getLastModifiedTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setComment", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setCreationTime", "(FileTime)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setCreationTime", "(FileTime)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setExtra", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setLastAccessTime", "(FileTime)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setLastAccessTime", "(FileTime)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setLastModifiedTime", "(FileTime)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipEntry", True, "setLastModifiedTime", "(FileTime)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["java.util.zip", "ZipError", True, "ZipError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipException", True, "ZipException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "ZipFile", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "ZipFile", "(File,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "ZipFile", "(File,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "ZipFile", "(File,int,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "ZipFile", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "ZipFile", "(String,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "getEntry", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "getEntry", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "getInputStream", "(ZipEntry)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "getInputStream", "(ZipEntry)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "getInputStream", "(ZipEntry)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipFile", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipInputStream", True, "getNextEntry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["java.util.zip", "ZipOutputStream", True, "ZipOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipOutputStream", True, "ZipOutputStream", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipOutputStream", True, "putNextEntry", "(ZipEntry)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["java.util.zip", "ZipOutputStream", True, "setComment", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["java.util.zip", "Checksum", "getValue", "()", "summary", "df-generated"] + - ["java.util.zip", "Checksum", "reset", "()", "summary", "df-generated"] + - ["java.util.zip", "Checksum", "update", "(ByteBuffer)", "summary", "df-generated"] + - ["java.util.zip", "Checksum", "update", "(byte[])", "summary", "df-generated"] + - ["java.util.zip", "Checksum", "update", "(byte[],int,int)", "summary", "df-generated"] + - ["java.util.zip", "Checksum", "update", "(int)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "Deflater", "(int)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "Deflater", "(int,boolean)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "deflate", "(ByteBuffer)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "deflate", "(ByteBuffer,int)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "deflate", "(byte[])", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "deflate", "(byte[],int,int)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "deflate", "(byte[],int,int,int)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "end", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "finish", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "finished", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "getAdler", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "getBytesRead", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "getBytesWritten", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "getTotalIn", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "getTotalOut", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "needsInput", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "reset", "()", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "setDictionary", "(ByteBuffer)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "setDictionary", "(byte[])", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "setDictionary", "(byte[],int,int)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "setLevel", "(int)", "summary", "df-generated"] + - ["java.util.zip", "Deflater", "setStrategy", "(int)", "summary", "df-generated"] + - ["java.util.zip", "DeflaterOutputStream", "finish", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "Inflater", "(boolean)", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "end", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "finished", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "getAdler", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "getBytesRead", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "getBytesWritten", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "getRemaining", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "getTotalIn", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "getTotalOut", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "inflate", "(ByteBuffer)", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "inflate", "(byte[])", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "inflate", "(byte[],int,int)", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "needsDictionary", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "needsInput", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "reset", "()", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "setDictionary", "(ByteBuffer)", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "setDictionary", "(byte[])", "summary", "df-generated"] + - ["java.util.zip", "Inflater", "setDictionary", "(byte[],int,int)", "summary", "df-generated"] + - ["java.util.zip", "InflaterOutputStream", "finish", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "getCompressedSize", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "getCrc", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "getMethod", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "getSize", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "getTime", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "getTimeLocal", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "isDirectory", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "setCompressedSize", "(long)", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "setCrc", "(long)", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "setMethod", "(int)", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "setSize", "(long)", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "setTime", "(long)", "summary", "df-generated"] + - ["java.util.zip", "ZipEntry", "setTimeLocal", "(LocalDateTime)", "summary", "df-generated"] + - ["java.util.zip", "ZipFile", "entries", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipFile", "getComment", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipFile", "size", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipFile", "stream", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipInputStream", "closeEntry", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipOutputStream", "closeEntry", "()", "summary", "df-generated"] + - ["java.util.zip", "ZipOutputStream", "setLevel", "(int)", "summary", "df-generated"] + - ["java.util.zip", "ZipOutputStream", "setMethod", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.accessibility.model.yml b/java/ql/lib/ext/generated/javax.accessibility.model.yml new file mode 100644 index 000000000000..ff17aaf81e15 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.accessibility.model.yml @@ -0,0 +1,75 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.accessibility", "Accessible", True, "getAccessibleContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleAttributeSequence", True, "AccessibleAttributeSequence", "(int,int,AttributeSet)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleBundle", True, "toDisplayString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleBundle", True, "toDisplayString", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleBundle", True, "toDisplayString", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleContext", True, "getAccessibleDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleContext", True, "getAccessibleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleContext", True, "getAccessibleParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleContext", True, "getAccessibleRelationSet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleContext", True, "setAccessibleDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleContext", True, "setAccessibleName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleContext", True, "setAccessibleParent", "(Accessible)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "AccessibleRelation", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "AccessibleRelation", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "AccessibleRelation", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "AccessibleRelation", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "AccessibleRelation", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "getKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "setTarget", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelation", True, "setTarget", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", True, "AccessibleRelationSet", "(AccessibleRelation[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", True, "add", "(AccessibleRelation)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", True, "addAll", "(AccessibleRelation[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", True, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", True, "toArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleStateSet", True, "AccessibleStateSet", "(AccessibleState[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleStateSet", True, "add", "(AccessibleState)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleStateSet", True, "addAll", "(AccessibleState[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleStateSet", True, "toArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.accessibility", "AccessibleTextSequence", True, "AccessibleTextSequence", "(int,int,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.accessibility", "AccessibilityProvider", "activate", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibilityProvider", "getName", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleAction", "doAccessibleAction", "(int)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleAction", "getAccessibleActionCount", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleAction", "getAccessibleActionDescription", "(int)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "addPropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "firePropertyChange", "(String,Object,Object)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleAction", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleChild", "(int)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleChildrenCount", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleComponent", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleEditableText", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleIcon", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleIndexInParent", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleRole", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleSelection", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleStateSet", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleTable", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleText", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getAccessibleValue", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "getLocale", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleContext", "removePropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleHyperlink", "getAccessibleActionAnchor", "(int)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleHyperlink", "getAccessibleActionObject", "(int)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleHyperlink", "getEndIndex", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleHyperlink", "getStartIndex", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleHyperlink", "isValid", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", "clear", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", "contains", "(String)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", "remove", "(AccessibleRelation)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleRelationSet", "size", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleStateSet", "clear", "()", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleStateSet", "contains", "(AccessibleState)", "summary", "df-generated"] + - ["javax.accessibility", "AccessibleStateSet", "remove", "(AccessibleState)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.annotation.processing.model.yml b/java/ql/lib/ext/generated/javax.annotation.processing.model.yml new file mode 100644 index 000000000000..6f80ce5dce91 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.annotation.processing.model.yml @@ -0,0 +1,25 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.annotation.processing", "Completion", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.annotation.processing", "Completion", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.annotation.processing", "Completions", True, "of", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.annotation.processing", "Completions", True, "of", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.annotation.processing", "Completions", True, "of", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.annotation.processing", "FilerException", True, "FilerException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.annotation.processing", "Processor", True, "init", "(ProcessingEnvironment)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.annotation.processing", "RoundEnvironment", True, "getElementsAnnotatedWithAny", "(Set)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.annotation.processing", "RoundEnvironment", True, "getElementsAnnotatedWithAny", "(TypeElement[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.annotation.processing", "ProcessingEnvironment", "isPreviewEnabled", "()", "summary", "df-generated"] + - ["javax.annotation.processing", "Processor", "getCompletions", "(Element,AnnotationMirror,ExecutableElement,String)", "summary", "df-generated"] + - ["javax.annotation.processing", "Processor", "getSupportedAnnotationTypes", "()", "summary", "df-generated"] + - ["javax.annotation.processing", "Processor", "getSupportedOptions", "()", "summary", "df-generated"] + - ["javax.annotation.processing", "Processor", "getSupportedSourceVersion", "()", "summary", "df-generated"] + - ["javax.annotation.processing", "Processor", "process", "(Set,RoundEnvironment)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.crypto.model.yml b/java/ql/lib/ext/generated/javax.crypto.model.yml new file mode 100644 index 000000000000..84a2a5c724b8 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.crypto.model.yml @@ -0,0 +1,180 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.crypto", "AEADBadTagException", True, "AEADBadTagException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "BadPaddingException", True, "BadPaddingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(ByteBuffer,ByteBuffer)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[])", "", "Argument[this]", "Argument[3]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[],int)", "", "Argument[this]", "Argument[3]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getExemptionMechanism", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Certificate,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec,SecureRandom)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters,SecureRandom)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "init", "(int,Key,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "unwrap", "(byte[],String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "unwrap", "(byte[],String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "unwrap", "(byte[],String,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(ByteBuffer,ByteBuffer)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "updateAAD", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "updateAAD", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "updateAAD", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "wrap", "(Key)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Cipher", True, "wrap", "(Key)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "CipherInputStream", True, "CipherInputStream", "(InputStream,Cipher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "CipherInputStream", True, "CipherInputStream", "(InputStream,Cipher)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "CipherOutputStream", True, "CipherOutputStream", "(OutputStream,Cipher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "CipherOutputStream", True, "CipherOutputStream", "(OutputStream,Cipher)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "EncryptedPrivateKeyInfo", "(AlgorithmParameters,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "EncryptedPrivateKeyInfo", "(AlgorithmParameters,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "EncryptedPrivateKeyInfo", "(String,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "EncryptedPrivateKeyInfo", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getAlgParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getEncryptedData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getKeySpec", "(Cipher)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getKeySpec", "(Cipher)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getKeySpec", "(Cipher)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getKeySpec", "(Key)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getKeySpec", "(Key,Provider)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", True, "getKeySpec", "(Key,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "init", "(Key)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "init", "(Key,AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", True, "init", "(Key,AlgorithmParameters)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "ExemptionMechanismException", True, "ExemptionMechanismException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "IllegalBlockSizeException", True, "IllegalBlockSizeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "doPhase", "(Key,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "generateSecret", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "generateSecret", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "generateSecret", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "generateSecret", "(byte[],int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "init", "(Key)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "init", "(Key,AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "init", "(Key,AlgorithmParameterSpec,SecureRandom)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyAgreement", True, "init", "(Key,SecureRandom)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "generateKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "init", "(AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "init", "(AlgorithmParameterSpec,SecureRandom)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "init", "(AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "init", "(SecureRandom)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "KeyGenerator", True, "init", "(int,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "doFinal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "doFinal", "(byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "doFinal", "(byte[],int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "init", "(Key)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "Mac", True, "init", "(Key,AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "NoSuchPaddingException", True, "NoSuchPaddingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "SealedObject", "(Serializable,Cipher)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "SealedObject", "(Serializable,Cipher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "SealedObject", "(Serializable,Cipher)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "getObject", "(Cipher)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "getObject", "(Cipher)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "getObject", "(Cipher)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "getObject", "(Key)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SealedObject", True, "getObject", "(Key,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "generateSecret", "(KeySpec)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "generateSecret", "(KeySpec)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getKeySpec", "(SecretKey,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getKeySpec", "(SecretKey,Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "translateKey", "(SecretKey)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "SecretKeyFactory", True, "translateKey", "(SecretKey)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto", "ShortBufferException", True, "ShortBufferException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.crypto", "Cipher", "getBlockSize", "()", "summary", "df-generated"] + - ["javax.crypto", "Cipher", "getMaxAllowedKeyLength", "(String)", "summary", "df-generated"] + - ["javax.crypto", "Cipher", "getMaxAllowedParameterSpec", "(String)", "summary", "df-generated"] + - ["javax.crypto", "Cipher", "getOutputSize", "(int)", "summary", "df-generated"] + - ["javax.crypto", "Cipher", "init", "(int,Certificate)", "summary", "df-generated"] + - ["javax.crypto", "CipherSpi", "engineSetMode", "(String)", "summary", "df-generated"] + - ["javax.crypto", "CipherSpi", "engineSetPadding", "(String)", "summary", "df-generated"] + - ["javax.crypto", "EncryptedPrivateKeyInfo", "getAlgName", "()", "summary", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", "genExemptionBlob", "()", "summary", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", "genExemptionBlob", "(byte[])", "summary", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", "genExemptionBlob", "(byte[],int)", "summary", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", "getOutputSize", "(int)", "summary", "df-generated"] + - ["javax.crypto", "ExemptionMechanism", "isCryptoAllowed", "(Key)", "summary", "df-generated"] + - ["javax.crypto", "KeyGenerator", "init", "(int)", "summary", "df-generated"] + - ["javax.crypto", "Mac", "getMacLength", "()", "summary", "df-generated"] + - ["javax.crypto", "Mac", "reset", "()", "summary", "df-generated"] + - ["javax.crypto", "Mac", "update", "(ByteBuffer)", "summary", "df-generated"] + - ["javax.crypto", "Mac", "update", "(byte)", "summary", "df-generated"] + - ["javax.crypto", "Mac", "update", "(byte[])", "summary", "df-generated"] + - ["javax.crypto", "Mac", "update", "(byte[],int,int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.crypto.spec.model.yml b/java/ql/lib/ext/generated/javax.crypto.spec.model.yml new file mode 100644 index 000000000000..d8eab143d304 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.crypto.spec.model.yml @@ -0,0 +1,78 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.crypto.spec", "ChaCha20ParameterSpec", False, "ChaCha20ParameterSpec", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "ChaCha20ParameterSpec", False, "getNonce", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "DESKeySpec", True, "DESKeySpec", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "DESKeySpec", True, "DESKeySpec", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "DESKeySpec", True, "getKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "DESedeKeySpec", True, "DESedeKeySpec", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "DESedeKeySpec", True, "DESedeKeySpec", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "DESedeKeySpec", True, "getKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "GCMParameterSpec", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "IvParameterSpec", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "OAEPParameterSpec", "(String,String,AlgorithmParameterSpec,PSource)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "OAEPParameterSpec", "(String,String,AlgorithmParameterSpec,PSource)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "OAEPParameterSpec", "(String,String,AlgorithmParameterSpec,PSource)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "OAEPParameterSpec", "(String,String,AlgorithmParameterSpec,PSource)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "getDigestAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "getMGFAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "getMGFParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "OAEPParameterSpec", True, "getPSource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", True, "PBEKeySpec", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", True, "PBEKeySpec", "(char[],byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", True, "PBEKeySpec", "(char[],byte[],int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", True, "PBEKeySpec", "(char[],byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", True, "PBEKeySpec", "(char[],byte[],int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", True, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", True, "getSalt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEParameterSpec", True, "PBEParameterSpec", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEParameterSpec", True, "PBEParameterSpec", "(byte[],int,AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEParameterSpec", True, "PBEParameterSpec", "(byte[],int,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEParameterSpec", True, "getParameterSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "PBEParameterSpec", True, "getSalt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "PSource$PSpecified", False, "PSpecified", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "PSource$PSpecified", False, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "PSource", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "RC2ParameterSpec", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "RC5ParameterSpec", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],int,int,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],int,int,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.crypto.spec", "ChaCha20ParameterSpec", "getCounter", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DESKeySpec", "isParityAdjusted", "(byte[],int)", "summary", "df-generated"] + - ["javax.crypto.spec", "DESKeySpec", "isWeak", "(byte[],int)", "summary", "df-generated"] + - ["javax.crypto.spec", "DESedeKeySpec", "isParityAdjusted", "(byte[],int)", "summary", "df-generated"] + - ["javax.crypto.spec", "DHGenParameterSpec", "DHGenParameterSpec", "(int,int)", "summary", "df-generated"] + - ["javax.crypto.spec", "DHGenParameterSpec", "getExponentSize", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHGenParameterSpec", "getPrimeSize", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHParameterSpec", "DHParameterSpec", "(BigInteger,BigInteger)", "summary", "df-generated"] + - ["javax.crypto.spec", "DHParameterSpec", "DHParameterSpec", "(BigInteger,BigInteger,int)", "summary", "df-generated"] + - ["javax.crypto.spec", "DHParameterSpec", "getG", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHParameterSpec", "getL", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHParameterSpec", "getP", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPrivateKeySpec", "DHPrivateKeySpec", "(BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPrivateKeySpec", "getG", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPrivateKeySpec", "getP", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPrivateKeySpec", "getX", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPublicKeySpec", "DHPublicKeySpec", "(BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPublicKeySpec", "getG", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPublicKeySpec", "getP", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "DHPublicKeySpec", "getY", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "GCMParameterSpec", "getTLen", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", "clearPassword", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", "getIterationCount", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "PBEKeySpec", "getKeyLength", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "PBEParameterSpec", "getIterationCount", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "RC2ParameterSpec", "getEffectiveKeyBits", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "RC5ParameterSpec", "getRounds", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "RC5ParameterSpec", "getVersion", "()", "summary", "df-generated"] + - ["javax.crypto.spec", "RC5ParameterSpec", "getWordSize", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.imageio.metadata.model.yml b/java/ql/lib/ext/generated/javax.imageio.metadata.model.yml new file mode 100644 index 000000000000..961bbceb1bd7 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.imageio.metadata.model.yml @@ -0,0 +1,65 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.imageio.metadata", "IIOInvalidTreeException", True, "IIOInvalidTreeException", "(String,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOInvalidTreeException", True, "IIOInvalidTreeException", "(String,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOInvalidTreeException", True, "IIOInvalidTreeException", "(String,Throwable,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOInvalidTreeException", True, "IIOInvalidTreeException", "(String,Throwable,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOInvalidTreeException", True, "IIOInvalidTreeException", "(String,Throwable,Node)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOInvalidTreeException", True, "getOffendingNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", True, "getController", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", True, "getDefaultController", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", True, "getExtraMetadataFormatNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", True, "getMetadataFormatNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", True, "getNativeMetadataFormatName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", True, "setController", "(IIOMetadataController)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", True, "setFromTree", "(String,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", True, "getAttributeDescription", "(String,String,Locale)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", True, "getAttributeDescription", "(String,String,Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", True, "getAttributeNames", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", True, "getChildNames", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", True, "getElementDescription", "(String,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", True, "getElementDescription", "(String,Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", True, "getRootName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormatImpl", True, "IIOMetadataFormatImpl", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormatImpl", True, "IIOMetadataFormatImpl", "(String,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataNode", True, "IIOMetadataNode", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataNode", True, "getUserObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataNode", True, "setUserObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.imageio.metadata", "IIOMetadata", "activateController", "()", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", "getAsTree", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", "getMetadataFormat", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", "hasController", "()", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", "isReadOnly", "()", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", "isStandardMetadataFormatSupported", "()", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", "mergeTree", "(String,Node)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadata", "reset", "()", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "canNodeAppear", "(String,ImageTypeSpecifier)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeDataType", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeDefaultValue", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeEnumerations", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeListMaxLength", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeListMinLength", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeMaxValue", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeMinValue", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getAttributeValueType", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getChildPolicy", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getElementMaxChildren", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getElementMinChildren", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectArrayMaxLength", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectArrayMinLength", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectClass", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectDefaultValue", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectEnumerations", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectMaxValue", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectMinValue", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "getObjectValueType", "(String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormat", "isAttributeRequired", "(String,String)", "summary", "df-generated"] + - ["javax.imageio.metadata", "IIOMetadataFormatImpl", "getStandardFormatInstance", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.imageio.model.yml b/java/ql/lib/ext/generated/javax.imageio.model.yml new file mode 100644 index 000000000000..a1be538932d5 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.imageio.model.yml @@ -0,0 +1,251 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.imageio", "IIOException", True, "IIOException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOException", True, "IIOException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOException", True, "IIOException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "IIOImage", "(Raster,List,IIOMetadata)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "IIOImage", "(Raster,List,IIOMetadata)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "IIOImage", "(Raster,List,IIOMetadata)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "IIOImage", "(RenderedImage,List,IIOMetadata)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "IIOImage", "(RenderedImage,List,IIOMetadata)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "IIOImage", "(RenderedImage,List,IIOMetadata)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "getMetadata", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "getRaster", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "getRenderedImage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "getThumbnail", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "getThumbnails", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "setMetadata", "(IIOMetadata)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "setRaster", "(Raster)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "setRenderedImage", "(RenderedImage)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOImage", True, "setThumbnails", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "getController", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "getDefaultController", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "getDestinationOffset", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "getDestinationType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "getSourceRegion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "setController", "(IIOParamController)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "setDestinationOffset", "(Point)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "setDestinationType", "(ImageTypeSpecifier)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "IIOParam", True, "setSourceRegion", "(Rectangle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageIO", False, "createImageInputStream", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageIO", False, "createImageOutputStream", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReadParam", True, "getDestination", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReadParam", True, "getSourceRenderSize", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReadParam", True, "setDestination", "(BufferedImage)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReadParam", True, "setSourceRenderSize", "(Dimension)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "addIIOReadProgressListener", "(IIOReadProgressListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "addIIOReadUpdateListener", "(IIOReadUpdateListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "addIIOReadWarningListener", "(IIOReadWarningListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getAvailableLocales", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getFormatName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getImageMetadata", "(int,String,Set)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getInput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getOriginatingProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getRawImageType", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "getStreamMetadata", "(String,Set)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "read", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readAll", "(Iterator)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readAll", "(int,ImageReadParam)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readAll", "(int,ImageReadParam)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readAll", "(int,ImageReadParam)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readAsRenderedImage", "(int,ImageReadParam)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readAsRenderedImage", "(int,ImageReadParam)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readAsRenderedImage", "(int,ImageReadParam)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readTile", "(int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "readTileRaster", "(int,int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "setInput", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "setInput", "(Object,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "setInput", "(Object,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageReader", True, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "ImageTypeSpecifier", "(ColorModel,SampleModel)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "ImageTypeSpecifier", "(ColorModel,SampleModel)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "ImageTypeSpecifier", "(RenderedImage)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createBanded", "(ColorSpace,int[],int[],int,boolean,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createBufferedImage", "(int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createFromRenderedImage", "(RenderedImage)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createIndexed", "(byte[],byte[],byte[],byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createIndexed", "(byte[],byte[],byte[],byte[],int,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createIndexed", "(byte[],byte[],byte[],byte[],int,int)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createIndexed", "(byte[],byte[],byte[],byte[],int,int)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createInterleaved", "(ColorSpace,int[],int,boolean,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "createPacked", "(ColorSpace,int,int,int,int,int,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "getColorModel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", True, "getSampleModel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriteParam", True, "ImageWriteParam", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageWriteParam", True, "getCompressionQualityDescriptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriteParam", True, "getCompressionType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriteParam", True, "getCompressionTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriteParam", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriteParam", True, "getLocalizedCompressionTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriteParam", True, "setCompressionType", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "addIIOWriteProgressListener", "(IIOWriteProgressListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "addIIOWriteWarningListener", "(IIOWriteWarningListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "getAvailableLocales", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "getDefaultWriteParam", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "getOriginatingProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "getOutput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio", "ImageWriter", True, "setOutput", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.imageio", "IIOImage", "getNumThumbnails", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOImage", "hasRaster", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "activateController", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "getSourceBands", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "getSourceXSubsampling", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "getSourceYSubsampling", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "getSubsamplingXOffset", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "getSubsamplingYOffset", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "hasController", "()", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "setSourceBands", "(int[])", "summary", "df-generated"] + - ["javax.imageio", "IIOParam", "setSourceSubsampling", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getCacheDirectory", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageReader", "(ImageWriter)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageReaders", "(Object)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageReadersByFormatName", "(String)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageReadersByMIMEType", "(String)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageReadersBySuffix", "(String)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageTranscoders", "(ImageReader,ImageWriter)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageWriter", "(ImageReader)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageWriters", "(ImageTypeSpecifier,String)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageWritersByFormatName", "(String)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageWritersByMIMEType", "(String)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getImageWritersBySuffix", "(String)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getReaderFileSuffixes", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getReaderFormatNames", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getReaderMIMETypes", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getUseCache", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getWriterFileSuffixes", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getWriterFormatNames", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "getWriterMIMETypes", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "read", "(File)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "read", "(ImageInputStream)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "read", "(InputStream)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "read", "(URL)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "scanForPlugins", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "setCacheDirectory", "(File)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "setUseCache", "(boolean)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "write", "(RenderedImage,String,File)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "write", "(RenderedImage,String,ImageOutputStream)", "summary", "df-generated"] + - ["javax.imageio", "ImageIO", "write", "(RenderedImage,String,OutputStream)", "summary", "df-generated"] + - ["javax.imageio", "ImageReadParam", "canSetSourceRenderSize", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReadParam", "getDestinationBands", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReadParam", "getSourceMaxProgressivePass", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReadParam", "getSourceMinProgressivePass", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReadParam", "getSourceNumProgressivePasses", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReadParam", "setDestinationBands", "(int[])", "summary", "df-generated"] + - ["javax.imageio", "ImageReadParam", "setSourceProgressivePasses", "(int,int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "abort", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "canReadRaster", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "dispose", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getAspectRatio", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getDefaultReadParam", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getHeight", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getImageMetadata", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getImageTypes", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getMinIndex", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getNumImages", "(boolean)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getNumThumbnails", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getStreamMetadata", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getThumbnailHeight", "(int,int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getThumbnailWidth", "(int,int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getTileGridXOffset", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getTileGridYOffset", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getTileHeight", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getTileWidth", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "getWidth", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "hasThumbnails", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "isIgnoringMetadata", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "isImageTiled", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "isRandomAccessEasy", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "isSeekForwardOnly", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "read", "(int,ImageReadParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "readRaster", "(int,ImageReadParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "readThumbnail", "(int,int)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "readerSupportsThumbnails", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "removeAllIIOReadProgressListeners", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "removeAllIIOReadUpdateListeners", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "removeAllIIOReadWarningListeners", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "removeIIOReadProgressListener", "(IIOReadProgressListener)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "removeIIOReadUpdateListener", "(IIOReadUpdateListener)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "removeIIOReadWarningListener", "(IIOReadWarningListener)", "summary", "df-generated"] + - ["javax.imageio", "ImageReader", "reset", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageTranscoder", "convertImageMetadata", "(IIOMetadata,ImageTypeSpecifier,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageTranscoder", "convertStreamMetadata", "(IIOMetadata,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "createFromBufferedImageType", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "createGrayscale", "(int,int,boolean)", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "createGrayscale", "(int,int,boolean,boolean)", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "getBitsPerBand", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "getBufferedImageType", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "getNumBands", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "getNumComponents", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageTypeSpecifier", "getSampleModel", "(int,int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "canOffsetTiles", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "canWriteCompressed", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "canWriteProgressive", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "canWriteTiles", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getBitRate", "(float)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getCompressionMode", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getCompressionQuality", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getCompressionQualityValues", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getPreferredTileSizes", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getProgressiveMode", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getTileGridXOffset", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getTileGridYOffset", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getTileHeight", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getTileWidth", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "getTilingMode", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "isCompressionLossless", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "setCompressionMode", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "setCompressionQuality", "(float)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "setProgressiveMode", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "setTiling", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "setTilingMode", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "unsetCompression", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriteParam", "unsetTiling", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "abort", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canInsertEmpty", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canInsertImage", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canRemoveImage", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canReplaceImageMetadata", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canReplacePixels", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canReplaceStreamMetadata", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canWriteEmpty", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canWriteRasters", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "canWriteSequence", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "dispose", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "endInsertEmpty", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "endReplacePixels", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "endWriteEmpty", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "endWriteSequence", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "getDefaultImageMetadata", "(ImageTypeSpecifier,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "getDefaultStreamMetadata", "(ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "getNumThumbnailsSupported", "(ImageTypeSpecifier,ImageWriteParam,IIOMetadata,IIOMetadata)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "getPreferredThumbnailSizes", "(ImageTypeSpecifier,ImageWriteParam,IIOMetadata,IIOMetadata)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "prepareInsertEmpty", "(int,ImageTypeSpecifier,int,int,IIOMetadata,List,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "prepareReplacePixels", "(int,Rectangle)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "prepareWriteEmpty", "(IIOMetadata,ImageTypeSpecifier,int,int,IIOMetadata,List,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "prepareWriteSequence", "(IIOMetadata)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "removeAllIIOWriteProgressListeners", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "removeAllIIOWriteWarningListeners", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "removeIIOWriteProgressListener", "(IIOWriteProgressListener)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "removeIIOWriteWarningListener", "(IIOWriteWarningListener)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "removeImage", "(int)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "replaceImageMetadata", "(int,IIOMetadata)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "replacePixels", "(Raster,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "replacePixels", "(RenderedImage,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "replaceStreamMetadata", "(IIOMetadata)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "reset", "()", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "write", "(IIOImage)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "write", "(IIOMetadata,IIOImage,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "write", "(RenderedImage)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "writeInsert", "(int,IIOImage,ImageWriteParam)", "summary", "df-generated"] + - ["javax.imageio", "ImageWriter", "writeToSequence", "(IIOImage,ImageWriteParam)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.imageio.plugins.bmp.model.yml b/java/ql/lib/ext/generated/javax.imageio.plugins.bmp.model.yml new file mode 100644 index 000000000000..607766feec1a --- /dev/null +++ b/java/ql/lib/ext/generated/javax.imageio.plugins.bmp.model.yml @@ -0,0 +1,13 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.imageio.plugins.bmp", "BMPImageWriteParam", True, "BMPImageWriteParam", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.imageio.plugins.bmp", "BMPImageWriteParam", "isTopDown", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.bmp", "BMPImageWriteParam", "setTopDown", "(boolean)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.imageio.plugins.jpeg.model.yml b/java/ql/lib/ext/generated/javax.imageio.plugins.jpeg.model.yml new file mode 100644 index 000000000000..00938e459a30 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.imageio.plugins.jpeg.model.yml @@ -0,0 +1,35 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", True, "getACHuffmanTables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", True, "getDCHuffmanTables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", True, "getQTables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", True, "setDecodeTables", "(JPEGQTable[],JPEGHuffmanTable[],JPEGHuffmanTable[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", True, "setDecodeTables", "(JPEGQTable[],JPEGHuffmanTable[],JPEGHuffmanTable[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", True, "setDecodeTables", "(JPEGQTable[],JPEGHuffmanTable[],JPEGHuffmanTable[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", True, "JPEGImageWriteParam", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", True, "getACHuffmanTables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", True, "getDCHuffmanTables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", True, "getQTables", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", True, "setEncodeTables", "(JPEGQTable[],JPEGHuffmanTable[],JPEGHuffmanTable[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", True, "setEncodeTables", "(JPEGQTable[],JPEGHuffmanTable[],JPEGHuffmanTable[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", True, "setEncodeTables", "(JPEGQTable[],JPEGHuffmanTable[],JPEGHuffmanTable[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.imageio.plugins.jpeg", "JPEGHuffmanTable", "JPEGHuffmanTable", "(short[],short[])", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGHuffmanTable", "getLengths", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGHuffmanTable", "getValues", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", "areTablesSet", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageReadParam", "unsetDecodeTables", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", "areTablesSet", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", "getOptimizeHuffmanTables", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", "setOptimizeHuffmanTables", "(boolean)", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGImageWriteParam", "unsetEncodeTables", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGQTable", "JPEGQTable", "(int[])", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGQTable", "getScaledInstance", "(float,boolean)", "summary", "df-generated"] + - ["javax.imageio.plugins.jpeg", "JPEGQTable", "getTable", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.imageio.plugins.tiff.model.yml b/java/ql/lib/ext/generated/javax.imageio.plugins.tiff.model.yml new file mode 100644 index 000000000000..56152d0710e3 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.imageio.plugins.tiff.model.yml @@ -0,0 +1,94 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "TIFFDirectory", "(TIFFTagSet[],TIFFTag)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "TIFFDirectory", "(TIFFTagSet[],TIFFTag)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "addTIFFField", "(TIFFField)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "addTagSet", "(TIFFTagSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "createFromMetadata", "(IIOMetadata)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "getAsMetadata", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "getParentTag", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "getTIFFField", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "getTIFFFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "getTag", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", True, "getTagSets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "TIFFField", "(TIFFTag,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "TIFFField", "(TIFFTag,int,int,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "TIFFField", "(TIFFTag,int,int,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "TIFFField", "(TIFFTag,int,long,TIFFDirectory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "TIFFField", "(TIFFTag,int,long,TIFFDirectory)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "TIFFField", "(TIFFTag,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "createFromMetadataNode", "(TIFFTagSet,Node)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getAsBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getAsChars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getAsNativeNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getAsString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getDirectory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getTag", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", False, "getValueAsString", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFImageReadParam", False, "addAllowedTagSet", "(TIFFTagSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFImageReadParam", False, "getAllowedTagSets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", True, "TIFFTag", "(String,int,TIFFTagSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", True, "TIFFTag", "(String,int,TIFFTagSet)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", True, "TIFFTag", "(String,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", True, "TIFFTag", "(String,int,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", True, "getTagSet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", True, "getValueName", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTagSet", True, "TIFFTagSet", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTagSet", True, "getTag", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTagSet", True, "getTag", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTagSet", True, "getTagNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.imageio.plugins.tiff", "BaselineTIFFTagSet", "getInstance", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "ExifGPSTagSet", "getInstance", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "ExifInteroperabilityTagSet", "getInstance", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "ExifParentTIFFTagSet", "getInstance", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "ExifTIFFTagSet", "getInstance", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "FaxTIFFTagSet", "getInstance", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "GeoTIFFTagSet", "getInstance", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", "containsTIFFField", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", "getNumTIFFFields", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", "removeTIFFField", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", "removeTIFFFields", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFDirectory", "removeTagSet", "(TIFFTagSet)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "createArrayForType", "(int,int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsDouble", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsDoubles", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsFloat", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsFloats", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsInt", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsInts", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsLong", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsLongs", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsRational", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsRationals", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsSRational", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsSRationals", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getAsShorts", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getCount", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getTagNumber", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getType", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getTypeByName", "(String)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "getTypeName", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "hasDirectory", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFField", "isIntegral", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFImageReadParam", "getReadUnknownTags", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFImageReadParam", "removeAllowedTagSet", "(TIFFTagSet)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFImageReadParam", "setReadUnknownTags", "(boolean)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "getCount", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "getDataTypes", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "getNamedValues", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "getNumber", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "getSizeOfType", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "hasValueNames", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "isDataTypeOK", "(int)", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTag", "isIFDPointer", "()", "summary", "df-generated"] + - ["javax.imageio.plugins.tiff", "TIFFTagSet", "getTagNumbers", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.imageio.spi.model.yml b/java/ql/lib/ext/generated/javax.imageio.spi.model.yml new file mode 100644 index 000000000000..1550958d1fab --- /dev/null +++ b/java/ql/lib/ext/generated/javax.imageio.spi.model.yml @@ -0,0 +1,129 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.imageio.spi", "IIOServiceProvider", True, "IIOServiceProvider", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "IIOServiceProvider", True, "IIOServiceProvider", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "IIOServiceProvider", True, "getVendorName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "IIOServiceProvider", True, "getVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageInputStreamSpi", True, "ImageInputStreamSpi", "(String,String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageInputStreamSpi", True, "ImageInputStreamSpi", "(String,String,Class)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageInputStreamSpi", True, "createInputStreamInstance", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageOutputStreamSpi", True, "ImageOutputStreamSpi", "(String,String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageOutputStreamSpi", True, "ImageOutputStreamSpi", "(String,String,Class)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageOutputStreamSpi", True, "createOutputStreamInstance", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[10]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[11].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[12].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[14]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[15]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[16].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[17].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[6].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[7].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "ImageReaderSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[9]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "createReaderInstance", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "getImageWriterSpiNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", True, "getInputTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[10].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[12]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[13]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[14].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[15].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[8]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "ImageReaderWriterSpi", "(String,String,String[],String[],String[],String,boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[9].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getExtraImageMetadataFormatNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getExtraStreamMetadataFormatNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getFileSuffixes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getFormatNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getMIMETypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getNativeImageMetadataFormatName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getNativeStreamMetadataFormatName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", True, "getPluginClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageTranscoderSpi", True, "ImageTranscoderSpi", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageTranscoderSpi", True, "ImageTranscoderSpi", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[10]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[11].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[12].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[14]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[15]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[16].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[17].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[6].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[7].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "ImageWriterSpi", "(String,String,String[],String[],String[],String,Class[],String[],boolean,String,String,String[],String[],boolean,String,String,String[],String[])", "", "Argument[9]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "createWriterInstance", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "getImageReaderSpiNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", True, "getOutputTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", True, "getCategories", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", True, "getServiceProviderByClass", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", True, "getServiceProviders", "(Class,ServiceRegistry$Filter,boolean)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", True, "getServiceProviders", "(Class,ServiceRegistry$Filter,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", True, "getServiceProviders", "(Class,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", True, "lookupProviders", "(Class,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.imageio.spi", "IIORegistry", "getDefaultInstance", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "IIORegistry", "registerApplicationClasspathSpis", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "IIOServiceProvider", "getDescription", "(Locale)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageInputStreamSpi", "canUseCacheFile", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageInputStreamSpi", "createInputStreamInstance", "(Object,boolean,File)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageInputStreamSpi", "getInputClass", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageInputStreamSpi", "needsCacheFile", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageOutputStreamSpi", "canUseCacheFile", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageOutputStreamSpi", "createOutputStreamInstance", "(Object,boolean,File)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageOutputStreamSpi", "getOutputClass", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageOutputStreamSpi", "needsCacheFile", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", "canDecodeInput", "(Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", "createReaderInstance", "(Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageReaderSpi", "isOwnReader", "(ImageReader)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", "getImageMetadataFormat", "(String)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", "getStreamMetadataFormat", "(String)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", "isStandardImageMetadataFormatSupported", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageReaderWriterSpi", "isStandardStreamMetadataFormatSupported", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageTranscoderSpi", "createTranscoderInstance", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageTranscoderSpi", "getReaderServiceProviderName", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageTranscoderSpi", "getWriterServiceProviderName", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", "canEncodeImage", "(ImageTypeSpecifier)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", "canEncodeImage", "(RenderedImage)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", "createWriterInstance", "(Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", "isFormatLossless", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ImageWriterSpi", "isOwnWriter", "(ImageWriter)", "summary", "df-generated"] + - ["javax.imageio.spi", "RegisterableService", "onDeregistration", "(ServiceRegistry,Class)", "summary", "df-generated"] + - ["javax.imageio.spi", "RegisterableService", "onRegistration", "(ServiceRegistry,Class)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry$Filter", "filter", "(Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "ServiceRegistry", "(Iterator)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "contains", "(Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "deregisterAll", "()", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "deregisterAll", "(Class)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "deregisterServiceProvider", "(Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "deregisterServiceProvider", "(Object,Class)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "lookupProviders", "(Class)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "registerServiceProvider", "(Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "registerServiceProvider", "(Object,Class)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "registerServiceProviders", "(Iterator)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "setOrdering", "(Class,Object,Object)", "summary", "df-generated"] + - ["javax.imageio.spi", "ServiceRegistry", "unsetOrdering", "(Class,Object,Object)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.imageio.stream.model.yml b/java/ql/lib/ext/generated/javax.imageio.stream.model.yml new file mode 100644 index 000000000000..f9dc67c2a67e --- /dev/null +++ b/java/ql/lib/ext/generated/javax.imageio.stream.model.yml @@ -0,0 +1,62 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.imageio.stream", "FileCacheImageOutputStream", True, "FileCacheImageOutputStream", "(OutputStream,File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "FileCacheImageOutputStream", True, "FileCacheImageOutputStream", "(OutputStream,File)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "FileImageInputStream", True, "FileImageInputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "FileImageInputStream", True, "FileImageInputStream", "(RandomAccessFile)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "FileImageOutputStream", True, "FileImageOutputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "FileImageOutputStream", True, "FileImageOutputStream", "(RandomAccessFile)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "IIOByteBuffer", True, "IIOByteBuffer", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "IIOByteBuffer", True, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.stream", "IIOByteBuffer", True, "setData", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", True, "getByteOrder", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", True, "read", "(byte[])", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", True, "read", "(byte[],int,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", True, "readBytes", "(IIOByteBuffer,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", True, "setByteOrder", "(ByteOrder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "MemoryCacheImageInputStream", True, "MemoryCacheImageInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.imageio.stream", "MemoryCacheImageOutputStream", True, "MemoryCacheImageOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.imageio.stream", "IIOByteBuffer", "getLength", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "IIOByteBuffer", "getOffset", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "IIOByteBuffer", "setLength", "(int)", "summary", "df-generated"] + - ["javax.imageio.stream", "IIOByteBuffer", "setOffset", "(int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "flush", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "flushBefore", "(long)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "getBitOffset", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "getFlushedPosition", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "getStreamPosition", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "isCached", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "isCachedFile", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "isCachedMemory", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "length", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "mark", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "read", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readBit", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readBits", "(int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readFully", "(char[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readFully", "(double[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readFully", "(float[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readFully", "(int[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readFully", "(long[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readFully", "(short[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "readUnsignedInt", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "reset", "()", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "seek", "(long)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "setBitOffset", "(int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageInputStream", "skipBytes", "(long)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeBit", "(int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeBits", "(long,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeChars", "(char[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeDoubles", "(double[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeFloats", "(float[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeInts", "(int[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeLongs", "(long[],int,int)", "summary", "df-generated"] + - ["javax.imageio.stream", "ImageOutputStream", "writeShorts", "(short[],int,int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.lang.model.element.model.yml b/java/ql/lib/ext/generated/javax.lang.model.element.model.yml new file mode 100644 index 000000000000..642f6c6315c5 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.lang.model.element.model.yml @@ -0,0 +1,38 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.lang.model.element", "AnnotationValueVisitor", True, "visit", "(AnnotationValue)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "AnnotationValueVisitor", True, "visit", "(AnnotationValue)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "ElementVisitor", True, "visit", "(Element)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.element", "ElementVisitor", True, "visit", "(Element)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "ElementVisitor", True, "visit", "(Element)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownAnnotationValueException", True, "UnknownAnnotationValueException", "(AnnotationValue,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownAnnotationValueException", True, "UnknownAnnotationValueException", "(AnnotationValue,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownAnnotationValueException", True, "getArgument", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownAnnotationValueException", True, "getUnknownAnnotationValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownDirectiveException", True, "UnknownDirectiveException", "(ModuleElement$Directive,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownDirectiveException", True, "UnknownDirectiveException", "(ModuleElement$Directive,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownDirectiveException", True, "getArgument", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownDirectiveException", True, "getUnknownDirective", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownElementException", True, "UnknownElementException", "(Element,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownElementException", True, "UnknownElementException", "(Element,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownElementException", True, "getArgument", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.element", "UnknownElementException", True, "getUnknownElement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.lang.model.element", "ElementKind", "isClass", "()", "summary", "df-generated"] + - ["javax.lang.model.element", "ElementKind", "isField", "()", "summary", "df-generated"] + - ["javax.lang.model.element", "ElementKind", "isInterface", "()", "summary", "df-generated"] + - ["javax.lang.model.element", "ElementVisitor", "visitModule", "(ModuleElement,Object)", "summary", "df-generated"] + - ["javax.lang.model.element", "ElementVisitor", "visitRecordComponent", "(RecordComponentElement,Object)", "summary", "df-generated"] + - ["javax.lang.model.element", "ModuleElement$DirectiveVisitor", "visit", "(ModuleElement$Directive)", "summary", "df-generated"] + - ["javax.lang.model.element", "ModuleElement$DirectiveVisitor", "visit", "(ModuleElement$Directive,Object)", "summary", "df-generated"] + - ["javax.lang.model.element", "ModuleElement$DirectiveVisitor", "visitUnknown", "(ModuleElement$Directive,Object)", "summary", "df-generated"] + - ["javax.lang.model.element", "NestingKind", "isNested", "()", "summary", "df-generated"] + - ["javax.lang.model.element", "TypeElement", "getPermittedSubclasses", "()", "summary", "df-generated"] + - ["javax.lang.model.element", "TypeElement", "getRecordComponents", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.lang.model.model.yml b/java/ql/lib/ext/generated/javax.lang.model.model.yml new file mode 100644 index 000000000000..45b57d256bd0 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.lang.model.model.yml @@ -0,0 +1,13 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.lang.model", "SourceVersion", "isIdentifier", "(CharSequence)", "summary", "df-generated"] + - ["javax.lang.model", "SourceVersion", "isKeyword", "(CharSequence)", "summary", "df-generated"] + - ["javax.lang.model", "SourceVersion", "isKeyword", "(CharSequence,SourceVersion)", "summary", "df-generated"] + - ["javax.lang.model", "SourceVersion", "isName", "(CharSequence)", "summary", "df-generated"] + - ["javax.lang.model", "SourceVersion", "isName", "(CharSequence,SourceVersion)", "summary", "df-generated"] + - ["javax.lang.model", "SourceVersion", "latest", "()", "summary", "df-generated"] + - ["javax.lang.model", "SourceVersion", "latestSupported", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.lang.model.type.model.yml b/java/ql/lib/ext/generated/javax.lang.model.type.model.yml new file mode 100644 index 000000000000..0e9eca5bac87 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.lang.model.type.model.yml @@ -0,0 +1,20 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.lang.model.type", "MirroredTypeException", True, "MirroredTypeException", "(TypeMirror)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.type", "MirroredTypeException", True, "getTypeMirror", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.type", "MirroredTypesException", True, "MirroredTypesException", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.type", "MirroredTypesException", True, "getTypeMirrors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.type", "TypeVisitor", True, "visit", "(TypeMirror)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.type", "UnknownTypeException", True, "UnknownTypeException", "(TypeMirror,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.type", "UnknownTypeException", True, "UnknownTypeException", "(TypeMirror,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.type", "UnknownTypeException", True, "getArgument", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.type", "UnknownTypeException", True, "getUnknownType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.lang.model.type", "TypeKind", "isPrimitive", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.lang.model.util.model.yml b/java/ql/lib/ext/generated/javax.lang.model.util.model.yml new file mode 100644 index 000000000000..e57b66161c48 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.lang.model.util.model.yml @@ -0,0 +1,93 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.lang.model.util", "ElementFilter", True, "constructorsIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "constructorsIn", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "exportsIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "fieldsIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "fieldsIn", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "methodsIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "methodsIn", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "modulesIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "modulesIn", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "opensIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "packagesIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "packagesIn", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "providesIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "recordComponentsIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "recordComponentsIn", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "requiresIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "typesIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "typesIn", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementFilter", True, "usesIn", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitExecutableAsConstructor", "(ExecutableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitExecutableAsInstanceInit", "(ExecutableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitExecutableAsMethod", "(ExecutableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitExecutableAsStaticInit", "(ExecutableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitTypeAsAnnotationType", "(TypeElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitTypeAsClass", "(TypeElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitTypeAsEnum", "(TypeElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitTypeAsInterface", "(TypeElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitVariableAsEnumConstant", "(VariableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitVariableAsExceptionParameter", "(VariableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitVariableAsField", "(VariableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitVariableAsLocalVariable", "(VariableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", True, "visitVariableAsParameter", "(VariableElement,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Element)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Element)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Element)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Element,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Element,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Element,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Element,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Iterable,Object)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Iterable,Object)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Iterable,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "ElementScanner6", True, "scan", "(Iterable,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "Elements", True, "getAllPackageElements", "(CharSequence)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "Elements", True, "getAllTypeElements", "(CharSequence)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "Elements", True, "recordComponentFor", "(ExecutableElement)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitNoTypeAsNone", "(NoType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitNoTypeAsNone", "(NoType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitNoTypeAsPackage", "(NoType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitNoTypeAsPackage", "(NoType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitNoTypeAsVoid", "(NoType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitNoTypeAsVoid", "(NoType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsBoolean", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsBoolean", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsByte", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsByte", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsChar", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsChar", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsDouble", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsDouble", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsFloat", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsFloat", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsInt", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsInt", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsLong", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsLong", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsShort", "(PrimitiveType,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", True, "visitPrimitiveAsShort", "(PrimitiveType,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.lang.model.util", "ElementKindVisitor6", "visitTypeAsRecord", "(TypeElement,Object)", "summary", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", "visitVariableAsBindingVariable", "(VariableElement,Object)", "summary", "df-generated"] + - ["javax.lang.model.util", "ElementKindVisitor6", "visitVariableAsResourceVariable", "(VariableElement,Object)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements$Origin", "isDeclared", "()", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getAllModuleElements", "()", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getModuleElement", "(CharSequence)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getModuleOf", "(Element)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getOrigin", "(AnnotatedConstruct,AnnotationMirror)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getOrigin", "(Element)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getOrigin", "(ModuleElement,ModuleElement$Directive)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getPackageElement", "(ModuleElement,CharSequence)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "getTypeElement", "(ModuleElement,CharSequence)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "isAutomaticModule", "(ModuleElement)", "summary", "df-generated"] + - ["javax.lang.model.util", "Elements", "isBridge", "(ExecutableElement)", "summary", "df-generated"] + - ["javax.lang.model.util", "TypeKindVisitor6", "visitNoTypeAsModule", "(NoType,Object)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.loading.model.yml b/java/ql/lib/ext/generated/javax.management.loading.model.yml new file mode 100644 index 000000000000..ada13786d722 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.loading.model.yml @@ -0,0 +1,44 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.loading", "MLet", True, "MLet", "(URL[],ClassLoader)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLet", True, "MLet", "(URL[],ClassLoader,URLStreamHandlerFactory)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLet", True, "MLet", "(URL[],ClassLoader,URLStreamHandlerFactory,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLet", True, "MLet", "(URL[],ClassLoader,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLet", True, "loadClass", "(String,ClassLoaderRepository)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLet", True, "loadClass", "(String,ClassLoaderRepository)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "MLetContent", "(URL,Map,List,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "MLetContent", "(URL,Map,List,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "MLetContent", "(URL,Map,List,List)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "MLetContent", "(URL,Map,List,List)", "", "Argument[3].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getCode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getCodeBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getDocumentBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getJarFiles", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getParameterTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getParameterValues", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getSerializedObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetContent", True, "getVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetMBean", True, "getLibraryDirectory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetMBean", True, "getMBeansFromURL", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetMBean", True, "getMBeansFromURL", "(URL)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetMBean", True, "getURLs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.loading", "MLetMBean", True, "setLibraryDirectory", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "PrivateMLet", True, "PrivateMLet", "(URL[],ClassLoader,URLStreamHandlerFactory,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.loading", "PrivateMLet", True, "PrivateMLet", "(URL[],ClassLoader,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.loading", "DefaultLoaderRepository", "loadClass", "(String)", "summary", "df-generated"] + - ["javax.management.loading", "DefaultLoaderRepository", "loadClassWithout", "(ClassLoader,String)", "summary", "df-generated"] + - ["javax.management.loading", "MLet", "MLet", "(URL[])", "summary", "df-generated"] + - ["javax.management.loading", "MLet", "MLet", "(URL[],boolean)", "summary", "df-generated"] + - ["javax.management.loading", "MLetMBean", "addURL", "(String)", "summary", "df-generated"] + - ["javax.management.loading", "MLetMBean", "addURL", "(URL)", "summary", "df-generated"] + - ["javax.management.loading", "PrivateMLet", "PrivateMLet", "(URL[],boolean)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.model.yml b/java/ql/lib/ext/generated/javax.management.model.yml new file mode 100644 index 000000000000..fbde549df2ec --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.model.yml @@ -0,0 +1,409 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management", "Attribute", True, "Attribute", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Attribute", True, "Attribute", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Attribute", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Attribute", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "AttributeChangeNotification", "(Object,long,long,String,String,String,Object,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "AttributeChangeNotification", "(Object,long,long,String,String,String,Object,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "AttributeChangeNotification", "(Object,long,long,String,String,String,Object,Object)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "AttributeChangeNotification", "(Object,long,long,String,String,String,Object,Object)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "AttributeChangeNotification", "(Object,long,long,String,String,String,Object,Object)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "AttributeChangeNotification", "(Object,long,long,String,String,String,Object,Object)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "getAttributeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "getAttributeType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "getNewValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotification", True, "getOldValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotificationFilter", True, "enableAttribute", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeChangeNotificationFilter", True, "getEnabledAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "AttributeList", True, "AttributeList", "(AttributeList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeList", True, "AttributeList", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeList", True, "add", "(Attribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeList", True, "add", "(int,Attribute)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeList", True, "addAll", "(AttributeList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeList", True, "asList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "AttributeList", True, "set", "(int,Attribute)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeNotFoundException", True, "AttributeNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeValueExp", True, "AttributeValueExp", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "AttributeValueExp", True, "getAttributeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "BadAttributeValueExpException", True, "BadAttributeValueExpException", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "BadBinaryOpValueExpException", True, "BadBinaryOpValueExpException", "(ValueExp)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "BadBinaryOpValueExpException", True, "getExp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "BadStringOperationException", True, "BadStringOperationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "getFieldNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "getFieldValue", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "getFieldValues", "(String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "getFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "setField", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "setField", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "setFields", "(String[],Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Descriptor", True, "setFields", "(String[],Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "DescriptorAccess", True, "setDescriptor", "(Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "DescriptorAccess", True, "setDescriptor", "(Descriptor)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.management", "DescriptorRead", True, "getDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "DynamicMBean", True, "getAttributes", "(String[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "DynamicMBean", True, "getMBeanInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "DynamicMBean", True, "setAttributes", "(AttributeList)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ImmutableDescriptor", True, "ImmutableDescriptor", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ImmutableDescriptor", True, "ImmutableDescriptor", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ImmutableDescriptor", True, "ImmutableDescriptor", "(String[],Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ImmutableDescriptor", True, "ImmutableDescriptor", "(String[],Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ImmutableDescriptor", True, "union", "(Descriptor[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "InstanceAlreadyExistsException", True, "InstanceAlreadyExistsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "InstanceNotFoundException", True, "InstanceNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "IntrospectionException", True, "IntrospectionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "InvalidApplicationException", True, "InvalidApplicationException", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "InvalidAttributeValueException", True, "InvalidAttributeValueException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "JMException", True, "JMException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "JMRuntimeException", True, "JMRuntimeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ListenerNotFoundException", True, "ListenerNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,Method,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "MBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,Constructor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,String,MBeanParameterInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,String,MBeanParameterInfo[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,String,MBeanParameterInfo[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "MBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanConstructorInfo", True, "getSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanException", True, "MBeanException", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanException", True, "MBeanException", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanException", True, "MBeanException", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanException", True, "getTargetException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanFeatureInfo", True, "MBeanFeatureInfo", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanFeatureInfo", True, "MBeanFeatureInfo", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanFeatureInfo", True, "MBeanFeatureInfo", "(String,String,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanFeatureInfo", True, "MBeanFeatureInfo", "(String,String,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanFeatureInfo", True, "MBeanFeatureInfo", "(String,String,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanFeatureInfo", True, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanFeatureInfo", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "MBeanInfo", "(String,String,MBeanAttributeInfo[],MBeanConstructorInfo[],MBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "getConstructors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "getNotifications", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanInfo", True, "getOperations", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "MBeanNotificationInfo", "(String[],String,String)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "MBeanNotificationInfo", "(String[],String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "MBeanNotificationInfo", "(String[],String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "MBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "MBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "MBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "MBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanNotificationInfo", True, "getNotifTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "MBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "getReturnType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanOperationInfo", True, "getSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "MBeanParameterInfo", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "MBeanParameterInfo", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "MBeanParameterInfo", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "MBeanParameterInfo", "(String,String,String,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "MBeanParameterInfo", "(String,String,String,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "MBeanParameterInfo", "(String,String,String,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "MBeanParameterInfo", "(String,String,String,Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanParameterInfo", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanPermission", True, "MBeanPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanPermission", True, "MBeanPermission", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanPermission", True, "MBeanPermission", "(String,String,ObjectName,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanPermission", True, "MBeanPermission", "(String,String,ObjectName,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanPermission", True, "MBeanPermission", "(String,String,ObjectName,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanPermission", True, "MBeanPermission", "(String,String,ObjectName,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanRegistration", True, "preRegister", "(MBeanServer,ObjectName)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanRegistration", True, "preRegister", "(MBeanServer,ObjectName)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanRegistration", True, "preRegister", "(MBeanServer,ObjectName)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanRegistration", True, "preRegister", "(MBeanServer,ObjectName)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanRegistration", True, "preRegister", "(MBeanServer,ObjectName)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanRegistrationException", True, "MBeanRegistrationException", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanRegistrationException", True, "MBeanRegistrationException", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanRegistrationException", True, "MBeanRegistrationException", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerBuilder", True, "newMBeanServer", "(String,MBeanServer,MBeanServerDelegate)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerBuilder", True, "newMBeanServer", "(String,MBeanServer,MBeanServerDelegate)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerBuilder", True, "newMBeanServer", "(String,MBeanServer,MBeanServerDelegate)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,ObjectName)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,ObjectName)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,ObjectName)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,ObjectName,Object[],String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,ObjectName,Object[],String[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,ObjectName,Object[],String[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,ObjectName,Object[],String[])", "", "Argument[4].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,Object[],String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,Object[],String[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "createMBean", "(String,ObjectName,Object[],String[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "getAttribute", "(ObjectName,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "getAttribute", "(ObjectName,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "getAttributes", "(ObjectName,String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "getAttributes", "(ObjectName,String[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "getObjectInstance", "(ObjectName)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "invoke", "(ObjectName,String,Object[],String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "invoke", "(ObjectName,String,Object[],String[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "invoke", "(ObjectName,String,Object[],String[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerConnection", True, "setAttributes", "(ObjectName,AttributeList)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerDelegateMBean", True, "getMBeanServerId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerFactory", True, "createMBeanServer", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerFactory", True, "getClassLoaderRepository", "(MBeanServer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerFactory", True, "newMBeanServer", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", True, "MBeanServerInvocationHandler", "(MBeanServerConnection,ObjectName)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", True, "MBeanServerInvocationHandler", "(MBeanServerConnection,ObjectName)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", True, "MBeanServerInvocationHandler", "(MBeanServerConnection,ObjectName,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", True, "MBeanServerInvocationHandler", "(MBeanServerConnection,ObjectName,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", True, "getMBeanServerConnection", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", True, "getObjectName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanServerNotification", True, "MBeanServerNotification", "(String,Object,long,ObjectName)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerNotification", True, "MBeanServerNotification", "(String,Object,long,ObjectName)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerNotification", True, "MBeanServerNotification", "(String,Object,long,ObjectName)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanServerNotification", True, "getMBeanName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "MBeanTrustPermission", True, "MBeanTrustPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MBeanTrustPermission", True, "MBeanTrustPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "MalformedObjectNameException", True, "MalformedObjectNameException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "NotCompliantMBeanException", True, "NotCompliantMBeanException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,long,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,long,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "Notification", "(String,Object,long,long,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Notification", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Notification", True, "getUserData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Notification", True, "setSource", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Notification", True, "setUserData", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "NotificationBroadcaster", True, "getNotificationInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "NotificationBroadcasterSupport", True, "NotificationBroadcasterSupport", "(Executor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "NotificationBroadcasterSupport", True, "NotificationBroadcasterSupport", "(Executor,MBeanNotificationInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "NotificationBroadcasterSupport", True, "NotificationBroadcasterSupport", "(Executor,MBeanNotificationInfo[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "NotificationBroadcasterSupport", True, "NotificationBroadcasterSupport", "(MBeanNotificationInfo[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "NotificationFilterSupport", True, "enableType", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "NotificationFilterSupport", True, "getEnabledTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "NotificationListener", True, "handleNotification", "(Notification,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectInstance", True, "ObjectInstance", "(ObjectName,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectInstance", True, "ObjectInstance", "(ObjectName,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectInstance", True, "ObjectInstance", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectInstance", True, "ObjectInstance", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectInstance", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectInstance", True, "getObjectName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "ObjectName", "(String,Hashtable)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "ObjectName", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "ObjectName", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getCanonicalKeyPropertyListString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getCanonicalName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getDomain", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getInstance", "(ObjectName)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getInstance", "(String,Hashtable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getInstance", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getInstance", "(String,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getKeyProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getKeyPropertyList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ObjectName", True, "getKeyPropertyListString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "OperationsException", True, "OperationsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "Query", True, "and", "(QueryExp,QueryExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "and", "(QueryExp,QueryExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "anySubString", "(AttributeValueExp,StringValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "anySubString", "(AttributeValueExp,StringValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "attr", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "attr", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "attr", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "between", "(ValueExp,ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "between", "(ValueExp,ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "between", "(ValueExp,ValueExp,ValueExp)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "div", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "div", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "eq", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "eq", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "finalSubString", "(AttributeValueExp,StringValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "finalSubString", "(AttributeValueExp,StringValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "geq", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "geq", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "gt", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "gt", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "in", "(ValueExp,ValueExp[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "in", "(ValueExp,ValueExp[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "initialSubString", "(AttributeValueExp,StringValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "initialSubString", "(AttributeValueExp,StringValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "isInstanceOf", "(StringValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "leq", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "leq", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "lt", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "lt", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "match", "(AttributeValueExp,StringValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "match", "(AttributeValueExp,StringValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "minus", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "minus", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "not", "(QueryExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "or", "(QueryExp,QueryExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "or", "(QueryExp,QueryExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "plus", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "plus", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "times", "(ValueExp,ValueExp)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "times", "(ValueExp,ValueExp)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "Query", True, "value", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ReflectionException", True, "ReflectionException", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ReflectionException", True, "ReflectionException", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ReflectionException", True, "ReflectionException", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "ReflectionException", True, "getTargetException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "RuntimeErrorException", True, "RuntimeErrorException", "(Error)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeErrorException", True, "RuntimeErrorException", "(Error,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeErrorException", True, "RuntimeErrorException", "(Error,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeErrorException", True, "getTargetError", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "RuntimeMBeanException", True, "RuntimeMBeanException", "(RuntimeException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeMBeanException", True, "RuntimeMBeanException", "(RuntimeException,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeMBeanException", True, "RuntimeMBeanException", "(RuntimeException,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeMBeanException", True, "getTargetException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "RuntimeOperationsException", True, "RuntimeOperationsException", "(RuntimeException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeOperationsException", True, "RuntimeOperationsException", "(RuntimeException,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeOperationsException", True, "RuntimeOperationsException", "(RuntimeException,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "RuntimeOperationsException", True, "getTargetException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ServiceNotFoundException", True, "ServiceNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StandardEmitterMBean", True, "StandardEmitterMBean", "(Object,Class,NotificationEmitter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StandardEmitterMBean", True, "StandardEmitterMBean", "(Object,Class,NotificationEmitter)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StandardEmitterMBean", True, "StandardEmitterMBean", "(Object,Class,boolean,NotificationEmitter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StandardEmitterMBean", True, "StandardEmitterMBean", "(Object,Class,boolean,NotificationEmitter)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StandardMBean", True, "StandardMBean", "(Object,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StandardMBean", True, "StandardMBean", "(Object,Class,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StandardMBean", True, "getImplementation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "StandardMBean", True, "setImplementation", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StringValueExp", True, "StringValueExp", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management", "StringValueExp", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ValueExp", True, "apply", "(ObjectName)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management", "ValueExp", True, "apply", "(ObjectName)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management", "AttributeChangeNotificationFilter", "disableAllAttributes", "()", "summary", "df-generated"] + - ["javax.management", "AttributeChangeNotificationFilter", "disableAttribute", "(String)", "summary", "df-generated"] + - ["javax.management", "AttributeList", "AttributeList", "(int)", "summary", "df-generated"] + - ["javax.management", "AttributeList", "addAll", "(int,AttributeList)", "summary", "df-generated"] + - ["javax.management", "DefaultLoaderRepository", "loadClass", "(String)", "summary", "df-generated"] + - ["javax.management", "DefaultLoaderRepository", "loadClassWithout", "(ClassLoader,String)", "summary", "df-generated"] + - ["javax.management", "Descriptor", "isValid", "()", "summary", "df-generated"] + - ["javax.management", "Descriptor", "removeField", "(String)", "summary", "df-generated"] + - ["javax.management", "DynamicMBean", "getAttribute", "(String)", "summary", "df-generated"] + - ["javax.management", "DynamicMBean", "invoke", "(String,Object[],String[])", "summary", "df-generated"] + - ["javax.management", "DynamicMBean", "setAttribute", "(Attribute)", "summary", "df-generated"] + - ["javax.management", "JMX", "isMXBeanInterface", "(Class)", "summary", "df-generated"] + - ["javax.management", "JMX", "newMBeanProxy", "(MBeanServerConnection,ObjectName,Class)", "summary", "df-generated"] + - ["javax.management", "JMX", "newMBeanProxy", "(MBeanServerConnection,ObjectName,Class,boolean)", "summary", "df-generated"] + - ["javax.management", "JMX", "newMXBeanProxy", "(MBeanServerConnection,ObjectName,Class)", "summary", "df-generated"] + - ["javax.management", "JMX", "newMXBeanProxy", "(MBeanServerConnection,ObjectName,Class,boolean)", "summary", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", "isIs", "()", "summary", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", "isReadable", "()", "summary", "df-generated"] + - ["javax.management", "MBeanAttributeInfo", "isWritable", "()", "summary", "df-generated"] + - ["javax.management", "MBeanOperationInfo", "getImpact", "()", "summary", "df-generated"] + - ["javax.management", "MBeanRegistration", "postDeregister", "()", "summary", "df-generated"] + - ["javax.management", "MBeanRegistration", "postRegister", "(Boolean)", "summary", "df-generated"] + - ["javax.management", "MBeanRegistration", "preDeregister", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServer", "deserialize", "(ObjectName,byte[])", "summary", "df-generated"] + - ["javax.management", "MBeanServer", "deserialize", "(String,ObjectName,byte[])", "summary", "df-generated"] + - ["javax.management", "MBeanServer", "deserialize", "(String,byte[])", "summary", "df-generated"] + - ["javax.management", "MBeanServerBuilder", "newMBeanServerDelegate", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "addNotificationListener", "(ObjectName,NotificationListener,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "addNotificationListener", "(ObjectName,ObjectName,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "getDefaultDomain", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "getDomains", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "getMBeanCount", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "getMBeanInfo", "(ObjectName)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "isInstanceOf", "(ObjectName,String)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "isRegistered", "(ObjectName)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "queryMBeans", "(ObjectName,QueryExp)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "queryNames", "(ObjectName,QueryExp)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "removeNotificationListener", "(ObjectName,NotificationListener)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "removeNotificationListener", "(ObjectName,NotificationListener,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "removeNotificationListener", "(ObjectName,ObjectName)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "removeNotificationListener", "(ObjectName,ObjectName,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "setAttribute", "(ObjectName,Attribute)", "summary", "df-generated"] + - ["javax.management", "MBeanServerConnection", "unregisterMBean", "(ObjectName)", "summary", "df-generated"] + - ["javax.management", "MBeanServerDelegate", "sendNotification", "(Notification)", "summary", "df-generated"] + - ["javax.management", "MBeanServerDelegateMBean", "getImplementationName", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerDelegateMBean", "getImplementationVendor", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerDelegateMBean", "getImplementationVersion", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerDelegateMBean", "getSpecificationName", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerDelegateMBean", "getSpecificationVendor", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerDelegateMBean", "getSpecificationVersion", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerFactory", "createMBeanServer", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerFactory", "findMBeanServer", "(String)", "summary", "df-generated"] + - ["javax.management", "MBeanServerFactory", "newMBeanServer", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerFactory", "releaseMBeanServer", "(MBeanServer)", "summary", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", "isMXBean", "()", "summary", "df-generated"] + - ["javax.management", "MBeanServerInvocationHandler", "newProxyInstance", "(MBeanServerConnection,ObjectName,Class,boolean)", "summary", "df-generated"] + - ["javax.management", "MBeanServerPermission", "MBeanServerPermission", "(String)", "summary", "df-generated"] + - ["javax.management", "MBeanServerPermission", "MBeanServerPermission", "(String,String)", "summary", "df-generated"] + - ["javax.management", "Notification", "getSequenceNumber", "()", "summary", "df-generated"] + - ["javax.management", "Notification", "getTimeStamp", "()", "summary", "df-generated"] + - ["javax.management", "Notification", "setSequenceNumber", "(long)", "summary", "df-generated"] + - ["javax.management", "Notification", "setTimeStamp", "(long)", "summary", "df-generated"] + - ["javax.management", "NotificationBroadcaster", "addNotificationListener", "(NotificationListener,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management", "NotificationBroadcaster", "removeNotificationListener", "(NotificationListener)", "summary", "df-generated"] + - ["javax.management", "NotificationBroadcasterSupport", "sendNotification", "(Notification)", "summary", "df-generated"] + - ["javax.management", "NotificationEmitter", "removeNotificationListener", "(NotificationListener,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management", "NotificationFilter", "isNotificationEnabled", "(Notification)", "summary", "df-generated"] + - ["javax.management", "NotificationFilterSupport", "disableAllTypes", "()", "summary", "df-generated"] + - ["javax.management", "NotificationFilterSupport", "disableType", "(String)", "summary", "df-generated"] + - ["javax.management", "ObjectName", "isDomainPattern", "()", "summary", "df-generated"] + - ["javax.management", "ObjectName", "isPattern", "()", "summary", "df-generated"] + - ["javax.management", "ObjectName", "isPropertyListPattern", "()", "summary", "df-generated"] + - ["javax.management", "ObjectName", "isPropertyPattern", "()", "summary", "df-generated"] + - ["javax.management", "ObjectName", "isPropertyValuePattern", "()", "summary", "df-generated"] + - ["javax.management", "ObjectName", "isPropertyValuePattern", "(String)", "summary", "df-generated"] + - ["javax.management", "ObjectName", "quote", "(String)", "summary", "df-generated"] + - ["javax.management", "ObjectName", "unquote", "(String)", "summary", "df-generated"] + - ["javax.management", "PersistentMBean", "load", "()", "summary", "df-generated"] + - ["javax.management", "PersistentMBean", "store", "()", "summary", "df-generated"] + - ["javax.management", "Query", "classattr", "()", "summary", "df-generated"] + - ["javax.management", "Query", "value", "(Number)", "summary", "df-generated"] + - ["javax.management", "Query", "value", "(boolean)", "summary", "df-generated"] + - ["javax.management", "Query", "value", "(double)", "summary", "df-generated"] + - ["javax.management", "Query", "value", "(float)", "summary", "df-generated"] + - ["javax.management", "Query", "value", "(int)", "summary", "df-generated"] + - ["javax.management", "Query", "value", "(long)", "summary", "df-generated"] + - ["javax.management", "QueryEval", "getMBeanServer", "()", "summary", "df-generated"] + - ["javax.management", "QueryEval", "setMBeanServer", "(MBeanServer)", "summary", "df-generated"] + - ["javax.management", "QueryExp", "apply", "(ObjectName)", "summary", "df-generated"] + - ["javax.management", "QueryExp", "setMBeanServer", "(MBeanServer)", "summary", "df-generated"] + - ["javax.management", "StandardEmitterMBean", "sendNotification", "(Notification)", "summary", "df-generated"] + - ["javax.management", "StandardMBean", "getImplementationClass", "()", "summary", "df-generated"] + - ["javax.management", "StandardMBean", "getMBeanInterface", "()", "summary", "df-generated"] + - ["javax.management", "ValueExp", "setMBeanServer", "(MBeanServer)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.modelmbean.model.yml b/java/ql/lib/ext/generated/javax.management.modelmbean.model.yml new file mode 100644 index 000000000000..9bf6223b24ac --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.modelmbean.model.yml @@ -0,0 +1,113 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.modelmbean", "DescriptorSupport", True, "DescriptorSupport", "(DescriptorSupport)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "DescriptorSupport", True, "DescriptorSupport", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "DescriptorSupport", True, "DescriptorSupport", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "DescriptorSupport", True, "DescriptorSupport", "(String[],Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "DescriptorSupport", True, "DescriptorSupport", "(String[],Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "DescriptorSupport", True, "toXMLString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "InvalidTargetObjectTypeException", True, "InvalidTargetObjectTypeException", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "InvalidTargetObjectTypeException", True, "InvalidTargetObjectTypeException", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "InvalidTargetObjectTypeException", True, "InvalidTargetObjectTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBean", True, "setManagedResource", "(Object,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBean", True, "setModelMBeanInfo", "(ModelMBeanInfo)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(ModelMBeanAttributeInfo)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,Method,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,Method,Method,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,Method,Method,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,Method,Method,Descriptor)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,Method,Method,Descriptor)", "", "Argument[this]", "Argument[4]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanAttributeInfo", True, "ModelMBeanAttributeInfo", "(String,String,String,boolean,boolean,boolean,Descriptor)", "", "Argument[this]", "Argument[6]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,Constructor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,Constructor,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,Constructor,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,Constructor,Descriptor)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanConstructorInfo", True, "ModelMBeanConstructorInfo", "(String,String,MBeanParameterInfo[],Descriptor)", "", "Argument[this]", "Argument[3]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "getAttribute", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "getDescriptor", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "getDescriptors", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "getMBeanDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "getNotification", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "getOperation", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "setDescriptor", "(Descriptor,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "setDescriptor", "(Descriptor,String)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "setDescriptors", "(Descriptor[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "setMBeanDescriptor", "(Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfo", True, "setMBeanDescriptor", "(Descriptor)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(ModelMBeanInfo)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[])", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[])", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "ModelMBeanInfoSupport", "(String,String,ModelMBeanAttributeInfo[],ModelMBeanConstructorInfo[],ModelMBeanOperationInfo[],ModelMBeanNotificationInfo[],Descriptor)", "", "Argument[this]", "Argument[6]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "getConstructor", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanInfoSupport", True, "getDescriptor", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(ModelMBeanNotificationInfo)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationInfo", True, "ModelMBeanNotificationInfo", "(String[],String,String,Descriptor)", "", "Argument[this]", "Argument[3]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(ModelMBeanOperationInfo)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,Method,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,Method,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,Method,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,Method,Descriptor)", "", "Argument[this]", "Argument[2]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanOperationInfo", True, "ModelMBeanOperationInfo", "(String,String,MBeanParameterInfo[],String,int,Descriptor)", "", "Argument[this]", "Argument[5]", "taint", "df-generated"] + - ["javax.management.modelmbean", "RequiredModelMBean", True, "RequiredModelMBean", "(ModelMBeanInfo)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "XMLParseException", True, "XMLParseException", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "XMLParseException", True, "XMLParseException", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.modelmbean", "XMLParseException", True, "XMLParseException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.modelmbean", "DescriptorSupport", "DescriptorSupport", "(int)", "summary", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationBroadcaster", "addAttributeChangeNotificationListener", "(NotificationListener,String,Object)", "summary", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationBroadcaster", "removeAttributeChangeNotificationListener", "(NotificationListener,String)", "summary", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationBroadcaster", "sendAttributeChangeNotification", "(Attribute,Attribute)", "summary", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationBroadcaster", "sendAttributeChangeNotification", "(AttributeChangeNotification)", "summary", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationBroadcaster", "sendNotification", "(Notification)", "summary", "df-generated"] + - ["javax.management.modelmbean", "ModelMBeanNotificationBroadcaster", "sendNotification", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.monitor.model.yml b/java/ql/lib/ext/generated/javax.management.monitor.model.yml new file mode 100644 index 000000000000..fecd28f766df --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.monitor.model.yml @@ -0,0 +1,68 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.monitor", "Monitor", True, "getDerivedGauge", "(ObjectName)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", True, "getObservedAttribute", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", True, "getObservedObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", True, "getObservedObjects", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", True, "setObservedAttribute", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorNotification", True, "getDerivedGauge", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorNotification", True, "getObservedAttribute", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorNotification", True, "getObservedObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorNotification", True, "getTrigger", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "MonitorSettingException", True, "MonitorSettingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", True, "getDerivedGauge", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", True, "getDerivedGauge", "(ObjectName)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", True, "getStringToCompare", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", True, "setStringToCompare", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.monitor", "CounterMonitorMBean", "getDerivedGauge", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getDerivedGaugeTimeStamp", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getDerivedGaugeTimeStamp", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getDifferenceMode", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getInitThreshold", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getModulus", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getNotify", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getOffset", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getThreshold", "()", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "getThreshold", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "setDifferenceMode", "(boolean)", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "setInitThreshold", "(Number)", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "setModulus", "(Number)", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "setNotify", "(boolean)", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "setOffset", "(Number)", "summary", "df-generated"] + - ["javax.management.monitor", "CounterMonitorMBean", "setThreshold", "(Number)", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getDerivedGauge", "()", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getDerivedGaugeTimeStamp", "()", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getDerivedGaugeTimeStamp", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getDifferenceMode", "()", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getHighThreshold", "()", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getLowThreshold", "()", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getNotifyHigh", "()", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "getNotifyLow", "()", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "setDifferenceMode", "(boolean)", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "setNotifyHigh", "(boolean)", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "setNotifyLow", "(boolean)", "summary", "df-generated"] + - ["javax.management.monitor", "GaugeMonitorMBean", "setThresholds", "(Number,Number)", "summary", "df-generated"] + - ["javax.management.monitor", "Monitor", "getDerivedGaugeTimeStamp", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "addObservedObject", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "containsObservedObject", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "getGranularityPeriod", "()", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "isActive", "()", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "removeObservedObject", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "setGranularityPeriod", "(long)", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "setObservedObject", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "start", "()", "summary", "df-generated"] + - ["javax.management.monitor", "MonitorMBean", "stop", "()", "summary", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", "getDerivedGaugeTimeStamp", "()", "summary", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", "getDerivedGaugeTimeStamp", "(ObjectName)", "summary", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", "getNotifyDiffer", "()", "summary", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", "getNotifyMatch", "()", "summary", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", "setNotifyDiffer", "(boolean)", "summary", "df-generated"] + - ["javax.management.monitor", "StringMonitorMBean", "setNotifyMatch", "(boolean)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.openmbean.model.yml b/java/ql/lib/ext/generated/javax.management.openmbean.model.yml new file mode 100644 index 000000000000..7ad51e1fb4f2 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.openmbean.model.yml @@ -0,0 +1,150 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.openmbean", "ArrayType", True, "ArrayType", "(SimpleType,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "ArrayType", True, "ArrayType", "(int,OpenType)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "ArrayType", True, "getArrayType", "(OpenType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "ArrayType", True, "getElementOpenType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeData", True, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeData", True, "getAll", "(String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeData", True, "getCompositeType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeData", True, "values", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeDataInvocationHandler", True, "CompositeDataInvocationHandler", "(CompositeData)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeDataInvocationHandler", True, "getCompositeData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeDataSupport", True, "CompositeDataSupport", "(CompositeType,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeDataSupport", True, "CompositeDataSupport", "(CompositeType,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeDataSupport", True, "CompositeDataSupport", "(CompositeType,String[],Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeDataSupport", True, "CompositeDataSupport", "(CompositeType,String[],Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeDataSupport", True, "CompositeDataSupport", "(CompositeType,String[],Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "CompositeType", "(String,String,String[],String[],OpenType[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "CompositeType", "(String,String,String[],String[],OpenType[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "CompositeType", "(String,String,String[],String[],OpenType[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "CompositeType", "(String,String,String[],String[],OpenType[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "CompositeType", "(String,String,String[],String[],OpenType[])", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "getDescription", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "getType", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "CompositeType", True, "keySet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "InvalidKeyException", True, "InvalidKeyException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "InvalidOpenTypeException", True, "InvalidOpenTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "KeyAlreadyExistsException", True, "KeyAlreadyExistsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenDataException", True, "OpenDataException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Descriptor)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Comparable,Comparable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Comparable,Comparable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Comparable,Comparable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Comparable,Comparable)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Comparable,Comparable)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Comparable,Comparable)", "", "Argument[8]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Object[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanAttributeInfoSupport", True, "OpenMBeanAttributeInfoSupport", "(String,String,OpenType,boolean,boolean,boolean,Object,Object[])", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanConstructorInfoSupport", True, "OpenMBeanConstructorInfoSupport", "(String,String,OpenMBeanParameterInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanConstructorInfoSupport", True, "OpenMBeanConstructorInfoSupport", "(String,String,OpenMBeanParameterInfo[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanConstructorInfoSupport", True, "OpenMBeanConstructorInfoSupport", "(String,String,OpenMBeanParameterInfo[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanConstructorInfoSupport", True, "OpenMBeanConstructorInfoSupport", "(String,String,OpenMBeanParameterInfo[],Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanConstructorInfoSupport", True, "OpenMBeanConstructorInfoSupport", "(String,String,OpenMBeanParameterInfo[],Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanConstructorInfoSupport", True, "OpenMBeanConstructorInfoSupport", "(String,String,OpenMBeanParameterInfo[],Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanConstructorInfoSupport", True, "OpenMBeanConstructorInfoSupport", "(String,String,OpenMBeanParameterInfo[],Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[])", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[4].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[5].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanInfoSupport", True, "OpenMBeanInfoSupport", "(String,String,OpenMBeanAttributeInfo[],OpenMBeanConstructorInfo[],OpenMBeanOperationInfo[],MBeanNotificationInfo[],Descriptor)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfo", True, "getReturnOpenType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int,Descriptor)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int,Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanOperationInfoSupport", True, "OpenMBeanOperationInfoSupport", "(String,String,OpenMBeanParameterInfo[],OpenType,int,Descriptor)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", True, "getDefaultValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", True, "getLegalValues", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", True, "getMaxValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", True, "getMinValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", True, "getOpenType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Descriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Descriptor)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Descriptor)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Descriptor)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Comparable,Comparable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Comparable,Comparable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Comparable,Comparable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Comparable,Comparable)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Comparable,Comparable)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Comparable,Comparable)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Object[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfoSupport", True, "OpenMBeanParameterInfoSupport", "(String,String,OpenType,Object,Object[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenType", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenType", True, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "OpenType", True, "getTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularData", True, "get", "(Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularData", True, "getTabularType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularData", True, "put", "(CompositeData)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularData", True, "putAll", "(CompositeData[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularData", True, "remove", "(Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularDataSupport", True, "TabularDataSupport", "(TabularType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularDataSupport", True, "TabularDataSupport", "(TabularType,int,float)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularType", True, "TabularType", "(String,String,CompositeType,String[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularType", True, "TabularType", "(String,String,CompositeType,String[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularType", True, "TabularType", "(String,String,CompositeType,String[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularType", True, "TabularType", "(String,String,CompositeType,String[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularType", True, "getIndexNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.openmbean", "TabularType", True, "getRowType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.openmbean", "ArrayType", "getDimension", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "ArrayType", "getPrimitiveArrayType", "(Class)", "summary", "df-generated"] + - ["javax.management.openmbean", "ArrayType", "isPrimitiveArray", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "CompositeData", "containsKey", "(String)", "summary", "df-generated"] + - ["javax.management.openmbean", "CompositeData", "containsValue", "(Object)", "summary", "df-generated"] + - ["javax.management.openmbean", "CompositeType", "containsKey", "(String)", "summary", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", "hasDefaultValue", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", "hasLegalValues", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", "hasMaxValue", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", "hasMinValue", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "OpenMBeanParameterInfo", "isValue", "(Object)", "summary", "df-generated"] + - ["javax.management.openmbean", "OpenType", "isArray", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "OpenType", "isValue", "(Object)", "summary", "df-generated"] + - ["javax.management.openmbean", "SimpleType", "readResolve", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "TabularData", "calculateIndex", "(CompositeData)", "summary", "df-generated"] + - ["javax.management.openmbean", "TabularData", "clear", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "TabularData", "containsKey", "(Object[])", "summary", "df-generated"] + - ["javax.management.openmbean", "TabularData", "containsValue", "(CompositeData)", "summary", "df-generated"] + - ["javax.management.openmbean", "TabularData", "isEmpty", "()", "summary", "df-generated"] + - ["javax.management.openmbean", "TabularData", "size", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.relation.model.yml b/java/ql/lib/ext/generated/javax.management.relation.model.yml new file mode 100644 index 000000000000..86b04e58252f --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.relation.model.yml @@ -0,0 +1,171 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.relation", "InvalidRelationIdException", True, "InvalidRelationIdException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "InvalidRelationServiceException", True, "InvalidRelationServiceException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "InvalidRelationTypeException", True, "InvalidRelationTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "InvalidRoleInfoException", True, "InvalidRoleInfoException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "InvalidRoleValueException", True, "InvalidRoleValueException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "MBeanServerNotificationFilter", True, "disableObjectName", "(ObjectName)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "MBeanServerNotificationFilter", True, "enableObjectName", "(ObjectName)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "MBeanServerNotificationFilter", True, "getDisabledObjectNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "MBeanServerNotificationFilter", True, "getEnabledObjectNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "getReferencedMBeans", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "getRelationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "getRelationServiceName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "getRelationTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "getRole", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "handleMBeanUnregistration", "(ObjectName,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "retrieveAllRoles", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "setRole", "(Role)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "Relation", True, "setRoles", "(RoleList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationException", True, "RelationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotFoundException", True, "RelationNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,List)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,List)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,List)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,List)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,List)", "", "Argument[8].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[10].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[7]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[8]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "RelationNotification", "(String,Object,long,long,String,String,String,ObjectName,String,List,List)", "", "Argument[9].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "getMBeansToUnregister", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "getNewRoleValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "getObjectName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "getOldRoleValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "getRelationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "getRelationTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationNotification", True, "getRoleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "addRelation", "(ObjectName)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "addRelationType", "(RelationType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "createRelation", "(String,String,RoleList)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "createRelation", "(String,String,RoleList)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "createRelation", "(String,String,RoleList)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "createRelationType", "(String,RoleInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "findReferencingRelations", "(ObjectName,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "findReferencingRelations", "(ObjectName,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "findRelationsOfType", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "getAllRelationIds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "getAllRelationTypeNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "getRelationTypeName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "getRoleInfo", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "getRoleInfos", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "isRelation", "(ObjectName)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "isRelationMBean", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "setRole", "(String,Role)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "setRoles", "(String,RoleList)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", True, "updateRoleMap", "(String,Role,List)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationServiceNotRegisteredException", True, "RelationServiceNotRegisteredException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,MBeanServer,String,RoleList)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,MBeanServer,String,RoleList)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,MBeanServer,String,RoleList)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,MBeanServer,String,RoleList)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,MBeanServer,String,RoleList)", "", "Argument[4].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,String,RoleList)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,String,RoleList)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,String,RoleList)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationSupport", True, "RelationSupport", "(String,ObjectName,String,RoleList)", "", "Argument[3].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationType", True, "getRelationTypeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationType", True, "getRoleInfo", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationType", True, "getRoleInfos", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RelationTypeNotFoundException", True, "RelationTypeNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationTypeSupport", True, "RelationTypeSupport", "(String,RoleInfo[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RelationTypeSupport", True, "RelationTypeSupport", "(String,RoleInfo[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "Role", True, "Role", "(String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "Role", True, "Role", "(String,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "Role", True, "getRoleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Role", True, "getRoleValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Role", True, "roleValueToString", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "Role", True, "setRoleName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "Role", True, "setRoleValue", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(RoleInfo)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(String,String,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(String,String,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(String,String,boolean,boolean,int,int,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(String,String,boolean,boolean,int,int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "RoleInfo", "(String,String,boolean,boolean,int,int,String)", "", "Argument[6]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfo", True, "getRefMBeanClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleInfoNotFoundException", True, "RoleInfoNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleList", True, "RoleList", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleList", True, "add", "(Role)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleList", True, "add", "(int,Role)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleList", True, "addAll", "(RoleList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleList", True, "asList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleList", True, "set", "(int,Role)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleNotFoundException", True, "RoleNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleResult", True, "RoleResult", "(RoleList,RoleUnresolvedList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleResult", True, "RoleResult", "(RoleList,RoleUnresolvedList)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleResult", True, "getRoles", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleResult", True, "getRolesUnresolved", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleResult", True, "setRoles", "(RoleList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleResult", True, "setRolesUnresolved", "(RoleUnresolvedList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", True, "RoleUnresolved", "(String,List,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", True, "RoleUnresolved", "(String,List,int)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", True, "getRoleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", True, "getRoleValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", True, "setRoleName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", True, "setRoleValue", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", True, "RoleUnresolvedList", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", True, "add", "(RoleUnresolved)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", True, "add", "(int,RoleUnresolved)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", True, "addAll", "(RoleUnresolvedList)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", True, "asList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", True, "set", "(int,RoleUnresolved)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.relation", "MBeanServerNotificationFilter", "disableAllObjectNames", "()", "summary", "df-generated"] + - ["javax.management.relation", "MBeanServerNotificationFilter", "enableAllObjectNames", "()", "summary", "df-generated"] + - ["javax.management.relation", "Relation", "getAllRoles", "()", "summary", "df-generated"] + - ["javax.management.relation", "Relation", "getRoleCardinality", "(String)", "summary", "df-generated"] + - ["javax.management.relation", "Relation", "getRoles", "(String[])", "summary", "df-generated"] + - ["javax.management.relation", "RelationService", "RelationService", "(boolean)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "checkRoleReading", "(String,String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "checkRoleWriting", "(Role,String,Boolean)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "findAssociatedMBeans", "(ObjectName,String,String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "getAllRoles", "(String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "getPurgeFlag", "()", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "getReferencedMBeans", "(String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "getRole", "(String,String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "getRoleCardinality", "(String,String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "getRoles", "(String,String[])", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "hasRelation", "(String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "isActive", "()", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "purgeRelations", "()", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "removeRelation", "(String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "removeRelationType", "(String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "sendRelationCreationNotification", "(String)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "sendRelationRemovalNotification", "(String,List)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "sendRoleUpdateNotification", "(String,Role,List)", "summary", "df-generated"] + - ["javax.management.relation", "RelationServiceMBean", "setPurgeFlag", "(boolean)", "summary", "df-generated"] + - ["javax.management.relation", "RelationSupportMBean", "isInRelationService", "()", "summary", "df-generated"] + - ["javax.management.relation", "RelationSupportMBean", "setRelationServiceManagementFlag", "(Boolean)", "summary", "df-generated"] + - ["javax.management.relation", "RoleInfo", "checkMaxDegree", "(int)", "summary", "df-generated"] + - ["javax.management.relation", "RoleInfo", "checkMinDegree", "(int)", "summary", "df-generated"] + - ["javax.management.relation", "RoleInfo", "getMaxDegree", "()", "summary", "df-generated"] + - ["javax.management.relation", "RoleInfo", "getMinDegree", "()", "summary", "df-generated"] + - ["javax.management.relation", "RoleInfo", "isReadable", "()", "summary", "df-generated"] + - ["javax.management.relation", "RoleInfo", "isWritable", "()", "summary", "df-generated"] + - ["javax.management.relation", "RoleList", "RoleList", "(int)", "summary", "df-generated"] + - ["javax.management.relation", "RoleList", "addAll", "(int,RoleList)", "summary", "df-generated"] + - ["javax.management.relation", "RoleStatus", "isRoleStatus", "(int)", "summary", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", "getProblemType", "()", "summary", "df-generated"] + - ["javax.management.relation", "RoleUnresolved", "setProblemType", "(int)", "summary", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", "RoleUnresolvedList", "(int)", "summary", "df-generated"] + - ["javax.management.relation", "RoleUnresolvedList", "addAll", "(int,RoleUnresolvedList)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.remote.model.yml b/java/ql/lib/ext/generated/javax.management.remote.model.yml new file mode 100644 index 000000000000..e06da36da215 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.remote.model.yml @@ -0,0 +1,72 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.remote", "JMXAddressable", True, "getAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectionNotification", True, "JMXConnectionNotification", "(String,Object,String,long,String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectionNotification", True, "JMXConnectionNotification", "(String,Object,String,long,String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectionNotification", True, "JMXConnectionNotification", "(String,Object,String,long,String,Object)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectionNotification", True, "JMXConnectionNotification", "(String,Object,String,long,String,Object)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectionNotification", True, "JMXConnectionNotification", "(String,Object,String,long,String,Object)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectionNotification", True, "getConnectionId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnector", True, "connect", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnector", True, "getConnectionId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnector", True, "getMBeanServerConnection", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnector", True, "getMBeanServerConnection", "(Subject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnector", True, "getMBeanServerConnection", "(Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnector", True, "getMBeanServerConnection", "(Subject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorFactory", True, "connect", "(JMXServiceURL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorFactory", True, "connect", "(JMXServiceURL,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorFactory", True, "connect", "(JMXServiceURL,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorFactory", True, "newJMXConnector", "(JMXServiceURL,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorFactory", True, "newJMXConnector", "(JMXServiceURL,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServer", True, "JMXConnectorServer", "(MBeanServer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServer", True, "getMBeanServer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerFactory", True, "newJMXConnectorServer", "(JMXServiceURL,Map,MBeanServer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerFactory", True, "newJMXConnectorServer", "(JMXServiceURL,Map,MBeanServer)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerFactory", True, "newJMXConnectorServer", "(JMXServiceURL,Map,MBeanServer)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", True, "getAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", True, "getConnectionIds", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", True, "setMBeanServerForwarder", "(MBeanServerForwarder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", True, "setMBeanServerForwarder", "(MBeanServerForwarder)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", True, "toJMXConnector", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", True, "toJMXConnector", "(Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXPrincipal", True, "JMXPrincipal", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXProviderException", True, "JMXProviderException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXProviderException", True, "JMXProviderException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXProviderException", True, "JMXProviderException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServerErrorException", True, "JMXServerErrorException", "(String,Error)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServerErrorException", True, "JMXServerErrorException", "(String,Error)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "JMXServiceURL", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "JMXServiceURL", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "JMXServiceURL", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "JMXServiceURL", "(String,String,int,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "JMXServiceURL", "(String,String,int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "JMXServiceURL", "(String,String,int,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "getHost", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "getProtocol", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", True, "getURLPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "NotificationResult", True, "NotificationResult", "(long,long,TargetedNotification[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "NotificationResult", True, "getTargetedNotifications", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote", "SubjectDelegationPermission", False, "SubjectDelegationPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "SubjectDelegationPermission", False, "SubjectDelegationPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "TargetedNotification", True, "TargetedNotification", "(Notification,Integer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote", "TargetedNotification", True, "getNotification", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.remote", "JMXConnector", "addConnectionNotificationListener", "(NotificationListener,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management.remote", "JMXConnector", "connect", "()", "summary", "df-generated"] + - ["javax.management.remote", "JMXConnector", "removeConnectionNotificationListener", "(NotificationListener)", "summary", "df-generated"] + - ["javax.management.remote", "JMXConnector", "removeConnectionNotificationListener", "(NotificationListener,NotificationFilter,Object)", "summary", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", "isActive", "()", "summary", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", "start", "()", "summary", "df-generated"] + - ["javax.management.remote", "JMXConnectorServerMBean", "stop", "()", "summary", "df-generated"] + - ["javax.management.remote", "JMXServiceURL", "getPort", "()", "summary", "df-generated"] + - ["javax.management.remote", "NotificationResult", "getEarliestSequenceNumber", "()", "summary", "df-generated"] + - ["javax.management.remote", "NotificationResult", "getNextSequenceNumber", "()", "summary", "df-generated"] + - ["javax.management.remote", "TargetedNotification", "getListenerID", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.remote.rmi.model.yml b/java/ql/lib/ext/generated/javax.management.remote.rmi.model.yml new file mode 100644 index 000000000000..2189861fca8e --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.remote.rmi.model.yml @@ -0,0 +1,84 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,MarshalledObject,String[],Subject)", "", "Argument[4].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,Subject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,ObjectName,Subject)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "createMBean", "(String,ObjectName,Subject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "getAttribute", "(ObjectName,String,Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "getAttribute", "(ObjectName,String,Subject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "getAttributes", "(ObjectName,String[],Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "getAttributes", "(ObjectName,String[],Subject)", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "getConnectionId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "getObjectInstance", "(ObjectName,Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "invoke", "(ObjectName,String,MarshalledObject,String[],Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "invoke", "(ObjectName,String,MarshalledObject,String[],Subject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "invoke", "(ObjectName,String,MarshalledObject,String[],Subject)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "invoke", "(ObjectName,String,MarshalledObject,String[],Subject)", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "setAttributes", "(ObjectName,MarshalledObject,Subject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", True, "setAttributes", "(ObjectName,MarshalledObject,Subject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectionImpl", True, "RMIConnectionImpl", "(RMIServerImpl,String,ClassLoader,Subject,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectionImpl", True, "RMIConnectionImpl", "(RMIServerImpl,String,ClassLoader,Subject,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectionImpl", True, "RMIConnectionImpl", "(RMIServerImpl,String,ClassLoader,Subject,Map)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectionImpl", True, "RMIConnectionImpl", "(RMIServerImpl,String,ClassLoader,Subject,Map)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectionImpl", True, "RMIConnectionImpl", "(RMIServerImpl,String,ClassLoader,Subject,Map)", "", "Argument[4].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectionImpl_Stub", False, "RMIConnectionImpl_Stub", "(RemoteRef)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnector", True, "RMIConnector", "(JMXServiceURL,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnector", True, "RMIConnector", "(JMXServiceURL,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnector", True, "RMIConnector", "(RMIServer,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnector", True, "RMIConnector", "(RMIServer,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map,MBeanServer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map,MBeanServer)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map,MBeanServer)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map,RMIServerImpl,MBeanServer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map,RMIServerImpl,MBeanServer)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map,RMIServerImpl,MBeanServer)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnectorServer", True, "RMIConnectorServer", "(JMXServiceURL,Map,RMIServerImpl,MBeanServer)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIIIOPServerImpl", True, "RMIIIOPServerImpl", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIJRMPServerImpl", True, "RMIJRMPServerImpl", "(int,RMIClientSocketFactory,RMIServerSocketFactory,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIJRMPServerImpl", True, "RMIJRMPServerImpl", "(int,RMIClientSocketFactory,RMIServerSocketFactory,Map)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIJRMPServerImpl", True, "RMIJRMPServerImpl", "(int,RMIClientSocketFactory,RMIServerSocketFactory,Map)", "", "Argument[3].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServer", True, "newClient", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServerImpl", True, "RMIServerImpl", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServerImpl", True, "getDefaultClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServerImpl", True, "getMBeanServer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServerImpl", True, "setDefaultClassLoader", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServerImpl", True, "setMBeanServer", "(MBeanServer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServerImpl", True, "toStub", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.remote.rmi", "RMIServerImpl_Stub", False, "RMIServerImpl_Stub", "(RemoteRef)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.remote.rmi", "RMIConnection", "addNotificationListener", "(ObjectName,ObjectName,MarshalledObject,MarshalledObject,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "addNotificationListeners", "(ObjectName[],MarshalledObject[],Subject[])", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "fetchNotifications", "(long,int,long)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "getDefaultDomain", "(Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "getDomains", "(Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "getMBeanCount", "(Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "getMBeanInfo", "(ObjectName,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "isInstanceOf", "(ObjectName,String,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "isRegistered", "(ObjectName,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "queryMBeans", "(ObjectName,MarshalledObject,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "queryNames", "(ObjectName,MarshalledObject,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "removeNotificationListener", "(ObjectName,ObjectName,MarshalledObject,MarshalledObject,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "removeNotificationListener", "(ObjectName,ObjectName,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "removeNotificationListeners", "(ObjectName,Integer[],Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "setAttribute", "(ObjectName,MarshalledObject,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIConnection", "unregisterMBean", "(ObjectName,Subject)", "summary", "df-generated"] + - ["javax.management.remote.rmi", "RMIServer", "getVersion", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.management.timer.model.yml b/java/ql/lib/ext/generated/javax.management.timer.model.yml new file mode 100644 index 000000000000..2dd312e78fc2 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.management.timer.model.yml @@ -0,0 +1,37 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.management.timer", "TimerMBean", True, "getNotificationMessage", "(Integer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.timer", "TimerMBean", True, "getNotificationType", "(Integer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.timer", "TimerMBean", True, "getNotificationUserData", "(Integer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.management.timer", "TimerNotification", True, "TimerNotification", "(String,Object,long,long,String,Integer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.timer", "TimerNotification", True, "TimerNotification", "(String,Object,long,long,String,Integer)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.management.timer", "TimerNotification", True, "TimerNotification", "(String,Object,long,long,String,Integer)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.management.timer", "TimerMBean", "addNotification", "(String,String,Object,Date)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "addNotification", "(String,String,Object,Date,long)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "addNotification", "(String,String,Object,Date,long,long)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "addNotification", "(String,String,Object,Date,long,long,boolean)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getAllNotificationIDs", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getDate", "(Integer)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getFixedRate", "(Integer)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getNbNotifications", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getNbOccurences", "(Integer)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getNotificationIDs", "(String)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getPeriod", "(Integer)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "getSendPastNotifications", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "isActive", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "isEmpty", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "removeAllNotifications", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "removeNotification", "(Integer)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "removeNotifications", "(String)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "setSendPastNotifications", "(boolean)", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "start", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerMBean", "stop", "()", "summary", "df-generated"] + - ["javax.management.timer", "TimerNotification", "getNotificationID", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.naming.directory.model.yml b/java/ql/lib/ext/generated/javax.naming.directory.model.yml new file mode 100644 index 000000000000..21cc4851eef7 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.naming.directory.model.yml @@ -0,0 +1,137 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.naming.directory", "Attribute", True, "add", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "Attribute", True, "add", "(int,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "Attribute", True, "get", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "Attribute", True, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "Attribute", True, "getID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "Attribute", True, "remove", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "Attribute", True, "set", "(int,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "Attribute", True, "set", "(int,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "AttributeInUseException", True, "AttributeInUseException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "AttributeModificationException", True, "AttributeModificationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "AttributeModificationException", True, "getUnexecutedModifications", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "AttributeModificationException", True, "setUnexecutedModifications", "(ModificationItem[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "Attributes", True, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "Attributes", True, "put", "(Attribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "Attributes", True, "put", "(Attribute)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "Attributes", True, "put", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "Attributes", True, "put", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "Attributes", True, "remove", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttribute", True, "BasicAttribute", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttribute", True, "BasicAttribute", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttribute", True, "BasicAttribute", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttribute", True, "BasicAttribute", "(String,Object,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttribute", True, "BasicAttribute", "(String,Object,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttribute", True, "BasicAttribute", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttributes", True, "BasicAttributes", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "BasicAttributes", True, "BasicAttributes", "(String,Object,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "createSubcontext", "(Name,Attributes)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "createSubcontext", "(String,Attributes)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getAttributes", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getAttributes", "(Name,String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getAttributes", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getAttributes", "(String,String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getSchema", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getSchema", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getSchemaClassDefinition", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "getSchemaClassDefinition", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,Attributes)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,Attributes)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,Attributes)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,Attributes,String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,Attributes,String[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,Attributes,String[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,Attributes,String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,Object[],SearchControls)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,Object[],SearchControls)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,Object[],SearchControls)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,Object[],SearchControls)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,SearchControls)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,SearchControls)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,SearchControls)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(Name,String,SearchControls)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,Attributes)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,Attributes)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,Attributes)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,Attributes,String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,Attributes,String[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,Attributes,String[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,Attributes,String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,Object[],SearchControls)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,Object[],SearchControls)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,Object[],SearchControls)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,Object[],SearchControls)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,SearchControls)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,SearchControls)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,SearchControls)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "DirContext", True, "search", "(String,String,SearchControls)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "InitialDirContext", True, "InitialDirContext", "(Hashtable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "InvalidAttributeIdentifierException", True, "InvalidAttributeIdentifierException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "InvalidAttributeValueException", True, "InvalidAttributeValueException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "InvalidAttributesException", True, "InvalidAttributesException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "InvalidSearchControlsException", True, "InvalidSearchControlsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "InvalidSearchFilterException", True, "InvalidSearchFilterException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "ModificationItem", True, "ModificationItem", "(int,Attribute)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "ModificationItem", True, "getAttribute", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "NoSuchAttributeException", True, "NoSuchAttributeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SchemaViolationException", True, "SchemaViolationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchControls", True, "SearchControls", "(int,long,int,String[],boolean,boolean)", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchControls", True, "getReturningAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "SearchControls", True, "setReturningAttributes", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,Object,Attributes)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,Object,Attributes)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,Object,Attributes)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,Object,Attributes,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,Object,Attributes,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,Object,Attributes,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "SearchResult", "(String,String,Object,Attributes,boolean)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.directory", "SearchResult", True, "setAttributes", "(Attributes)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.naming.directory", "Attribute", "clear", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attribute", "contains", "(Object)", "summary", "df-generated"] + - ["javax.naming.directory", "Attribute", "getAll", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attribute", "getAttributeDefinition", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attribute", "getAttributeSyntaxDefinition", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attribute", "isOrdered", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attribute", "remove", "(Object)", "summary", "df-generated"] + - ["javax.naming.directory", "Attribute", "size", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attributes", "getAll", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attributes", "getIDs", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attributes", "isCaseIgnored", "()", "summary", "df-generated"] + - ["javax.naming.directory", "Attributes", "size", "()", "summary", "df-generated"] + - ["javax.naming.directory", "BasicAttributes", "BasicAttributes", "(boolean)", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "bind", "(Name,Object,Attributes)", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "bind", "(String,Object,Attributes)", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "modifyAttributes", "(Name,ModificationItem[])", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "modifyAttributes", "(Name,int,Attributes)", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "modifyAttributes", "(String,ModificationItem[])", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "modifyAttributes", "(String,int,Attributes)", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "rebind", "(Name,Object,Attributes)", "summary", "df-generated"] + - ["javax.naming.directory", "DirContext", "rebind", "(String,Object,Attributes)", "summary", "df-generated"] + - ["javax.naming.directory", "ModificationItem", "getModificationOp", "()", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "getCountLimit", "()", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "getDerefLinkFlag", "()", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "getReturningObjFlag", "()", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "getSearchScope", "()", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "getTimeLimit", "()", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "setCountLimit", "(long)", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "setDerefLinkFlag", "(boolean)", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "setReturningObjFlag", "(boolean)", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "setSearchScope", "(int)", "summary", "df-generated"] + - ["javax.naming.directory", "SearchControls", "setTimeLimit", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.naming.event.model.yml b/java/ql/lib/ext/generated/javax.naming.event.model.yml new file mode 100644 index 000000000000..2dae0e7370f4 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.naming.event.model.yml @@ -0,0 +1,25 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.naming.event", "NamingEvent", True, "NamingEvent", "(EventContext,int,Binding,Binding,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.event", "NamingEvent", True, "NamingEvent", "(EventContext,int,Binding,Binding,Object)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.event", "NamingEvent", True, "NamingEvent", "(EventContext,int,Binding,Binding,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.event", "NamingEvent", True, "NamingEvent", "(EventContext,int,Binding,Binding,Object)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.event", "NamingEvent", True, "getChangeInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.event", "NamingEvent", True, "getEventContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.event", "NamingEvent", True, "getNewBinding", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.event", "NamingEvent", True, "getOldBinding", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.event", "NamingExceptionEvent", True, "NamingExceptionEvent", "(EventContext,NamingException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.event", "NamingExceptionEvent", True, "NamingExceptionEvent", "(EventContext,NamingException)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.event", "NamingExceptionEvent", True, "getEventContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.event", "NamingExceptionEvent", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.naming.event", "NamingEvent", "dispatch", "(NamingListener)", "summary", "df-generated"] + - ["javax.naming.event", "NamingEvent", "getType", "()", "summary", "df-generated"] + - ["javax.naming.event", "NamingExceptionEvent", "dispatch", "(NamingListener)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.naming.ldap.model.yml b/java/ql/lib/ext/generated/javax.naming.ldap.model.yml new file mode 100644 index 000000000000..8597d37da7c5 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.naming.ldap.model.yml @@ -0,0 +1,91 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.naming.ldap", "BasicControl", True, "BasicControl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "BasicControl", True, "BasicControl", "(String,boolean,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "BasicControl", True, "BasicControl", "(String,boolean,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "Control", True, "getEncodedValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "Control", True, "getID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "ControlFactory", True, "getControlInstance", "(Control,Context,Hashtable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "InitialLdapContext", True, "InitialLdapContext", "(Hashtable,Control[])", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "InitialLdapContext", True, "InitialLdapContext", "(Hashtable,Control[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapContext", True, "getConnectControls", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapContext", True, "getRequestControls", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapContext", True, "getResponseControls", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapContext", True, "newInstance", "(Control[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapContext", True, "newInstance", "(Control[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapContext", True, "reconnect", "(Control[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapContext", True, "setRequestControls", "(Control[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "LdapName", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "LdapName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "add", "(Rdn)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "add", "(Rdn)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "add", "(Rdn)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "add", "(int,Rdn)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "add", "(int,Rdn)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "addAll", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "addAll", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "addAll", "(List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "addAll", "(int,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "addAll", "(int,List)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "getRdn", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "LdapName", True, "getRdns", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "PagedResultsResponseControl", False, "PagedResultsResponseControl", "(String,boolean,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "PagedResultsResponseControl", False, "PagedResultsResponseControl", "(String,boolean,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "PagedResultsResponseControl", False, "getCookie", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "Rdn", True, "Rdn", "(Rdn)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "Rdn", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "Rdn", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "Rdn", True, "toAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "SortKey", True, "SortKey", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "SortKey", True, "SortKey", "(String,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "SortKey", True, "SortKey", "(String,boolean,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "SortKey", True, "getAttributeID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "SortKey", True, "getMatchingRuleID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "SortResponseControl", False, "SortResponseControl", "(String,boolean,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "SortResponseControl", False, "SortResponseControl", "(String,boolean,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "SortResponseControl", False, "getAttributeID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap", "UnsolicitedNotificationEvent", True, "UnsolicitedNotificationEvent", "(Object,UnsolicitedNotification)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "UnsolicitedNotificationEvent", True, "UnsolicitedNotificationEvent", "(Object,UnsolicitedNotification)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap", "UnsolicitedNotificationEvent", True, "getNotification", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.naming.ldap", "Control", "isCritical", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "ControlFactory", "getControlInstance", "(Control)", "summary", "df-generated"] + - ["javax.naming.ldap", "ExtendedRequest", "createExtendedResponse", "(String,byte[],int,int)", "summary", "df-generated"] + - ["javax.naming.ldap", "ExtendedRequest", "getEncodedValue", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "ExtendedRequest", "getID", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "ExtendedResponse", "getEncodedValue", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "ExtendedResponse", "getID", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "LdapContext", "extendedOperation", "(ExtendedRequest)", "summary", "df-generated"] + - ["javax.naming.ldap", "LdapName", "endsWith", "(List)", "summary", "df-generated"] + - ["javax.naming.ldap", "LdapName", "startsWith", "(List)", "summary", "df-generated"] + - ["javax.naming.ldap", "LdapReferralException", "getReferralContext", "(Hashtable,Control[])", "summary", "df-generated"] + - ["javax.naming.ldap", "ManageReferralControl", "ManageReferralControl", "(boolean)", "summary", "df-generated"] + - ["javax.naming.ldap", "PagedResultsControl", "PagedResultsControl", "(int,boolean)", "summary", "df-generated"] + - ["javax.naming.ldap", "PagedResultsControl", "PagedResultsControl", "(int,byte[],boolean)", "summary", "df-generated"] + - ["javax.naming.ldap", "PagedResultsResponseControl", "getResultSize", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "Rdn", "Rdn", "(Attributes)", "summary", "df-generated"] + - ["javax.naming.ldap", "Rdn", "Rdn", "(String)", "summary", "df-generated"] + - ["javax.naming.ldap", "Rdn", "Rdn", "(String,Object)", "summary", "df-generated"] + - ["javax.naming.ldap", "Rdn", "escapeValue", "(Object)", "summary", "df-generated"] + - ["javax.naming.ldap", "Rdn", "size", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "Rdn", "unescapeValue", "(String)", "summary", "df-generated"] + - ["javax.naming.ldap", "SortControl", "SortControl", "(SortKey[],boolean)", "summary", "df-generated"] + - ["javax.naming.ldap", "SortControl", "SortControl", "(String,boolean)", "summary", "df-generated"] + - ["javax.naming.ldap", "SortControl", "SortControl", "(String[],boolean)", "summary", "df-generated"] + - ["javax.naming.ldap", "SortKey", "isAscending", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "SortResponseControl", "getException", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "SortResponseControl", "getResultCode", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "SortResponseControl", "isSorted", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "StartTlsResponse", "close", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "StartTlsResponse", "negotiate", "()", "summary", "df-generated"] + - ["javax.naming.ldap", "StartTlsResponse", "negotiate", "(SSLSocketFactory)", "summary", "df-generated"] + - ["javax.naming.ldap", "StartTlsResponse", "setEnabledCipherSuites", "(String[])", "summary", "df-generated"] + - ["javax.naming.ldap", "StartTlsResponse", "setHostnameVerifier", "(HostnameVerifier)", "summary", "df-generated"] + - ["javax.naming.ldap", "UnsolicitedNotificationEvent", "dispatch", "(UnsolicitedNotificationListener)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.naming.ldap.spi.model.yml b/java/ql/lib/ext/generated/javax.naming.ldap.spi.model.yml new file mode 100644 index 000000000000..ed57b5971190 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.naming.ldap.spi.model.yml @@ -0,0 +1,15 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.naming.ldap.spi", "LdapDnsProviderResult", False, "LdapDnsProviderResult", "(String,List)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap.spi", "LdapDnsProviderResult", False, "LdapDnsProviderResult", "(String,List)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.ldap.spi", "LdapDnsProviderResult", False, "getDomainName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.ldap.spi", "LdapDnsProviderResult", False, "getEndpoints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.naming.ldap.spi", "LdapDnsProvider", "lookupEndpoints", "(String,Map)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.naming.model.yml b/java/ql/lib/ext/generated/javax.naming.model.yml new file mode 100644 index 000000000000..86321736e88e --- /dev/null +++ b/java/ql/lib/ext/generated/javax.naming.model.yml @@ -0,0 +1,177 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.naming", "AuthenticationException", True, "AuthenticationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "AuthenticationNotSupportedException", True, "AuthenticationNotSupportedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "BinaryRefAddr", True, "BinaryRefAddr", "(String,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "BinaryRefAddr", True, "BinaryRefAddr", "(String,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "BinaryRefAddr", True, "BinaryRefAddr", "(String,byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "BinaryRefAddr", True, "BinaryRefAddr", "(String,byte[],int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,Object,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,Object,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,String,Object)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,String,Object,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,String,Object,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "Binding", "(String,String,Object,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Binding", True, "setObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "CannotProceedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "getAltName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "getAltNameCtx", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "getEnvironment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "getRemainingNewName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "setAltName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "setAltNameCtx", "(Context)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "setEnvironment", "(Hashtable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "CannotProceedException", True, "setRemainingNewName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "CommunicationException", True, "CommunicationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "CompoundName", True, "CompoundName", "(String,Properties)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "ConfigurationException", True, "ConfigurationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Context", True, "addToEnvironment", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Context", True, "addToEnvironment", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Context", True, "addToEnvironment", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "addToEnvironment", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "composeName", "(Name,Name)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "composeName", "(Name,Name)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "composeName", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "composeName", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "createSubcontext", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "createSubcontext", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "getEnvironment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "getNameInNamespace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "getNameParser", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "getNameParser", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "list", "(Name)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "list", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "list", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "listBindings", "(Name)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "listBindings", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "listBindings", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "lookup", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "lookup", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "lookupLink", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "lookupLink", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Context", True, "removeFromEnvironment", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "ContextNotEmptyException", True, "ContextNotEmptyException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "InitialContext", True, "InitialContext", "(Hashtable)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "InsufficientResourcesException", True, "InsufficientResourcesException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "InterruptedNamingException", True, "InterruptedNamingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "InvalidNameException", True, "InvalidNameException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LimitExceededException", True, "LimitExceededException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "LinkException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "getLinkExplanation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "getLinkRemainingName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "getLinkResolvedName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "getLinkResolvedObj", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "setLinkExplanation", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "setLinkRemainingName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "setLinkResolvedName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkException", True, "setLinkResolvedObj", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkLoopException", True, "LinkLoopException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkRef", True, "LinkRef", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkRef", True, "LinkRef", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "LinkRef", True, "getLinkName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "MalformedLinkException", True, "MalformedLinkException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Name", True, "add", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Name", True, "add", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["javax.naming", "Name", True, "add", "(int,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["javax.naming", "Name", True, "addAll", "(Name)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Name", True, "addAll", "(Name)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["javax.naming", "Name", True, "addAll", "(int,Name)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["javax.naming", "Name", True, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Name", True, "getAll", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Name", True, "getPrefix", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Name", True, "getSuffix", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Name", True, "remove", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NameAlreadyBoundException", True, "NameAlreadyBoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "NameClassPair", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "NameClassPair", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "NameClassPair", "(String,String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "NameClassPair", "(String,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "getNameInNamespace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "setClassName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameClassPair", True, "setNameInNamespace", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NameNotFoundException", True, "NameNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "NamingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "appendRemainingName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "getExplanation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "getRemainingName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "getResolvedName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "getResolvedObj", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "getRootCause", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "setRemainingName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "setResolvedName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "setResolvedObj", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NamingException", True, "setRootCause", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NamingSecurityException", True, "NamingSecurityException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NoInitialContextException", True, "NoInitialContextException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NoPermissionException", True, "NoPermissionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "NotContextException", True, "NotContextException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "OperationNotSupportedException", True, "OperationNotSupportedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "PartialResultException", True, "PartialResultException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "RefAddr", True, "getContent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "RefAddr", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,RefAddr)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,RefAddr)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,RefAddr,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,RefAddr,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,RefAddr,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,RefAddr,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "Reference", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "add", "(RefAddr)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "add", "(int,RefAddr)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "getAll", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "getFactoryClassLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "getFactoryClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "Reference", True, "remove", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming", "ServiceUnavailableException", True, "ServiceUnavailableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "SizeLimitExceededException", True, "SizeLimitExceededException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming", "TimeLimitExceededException", True, "TimeLimitExceededException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.naming", "CompositeName", "CompositeName", "(String)", "summary", "df-generated"] + - ["javax.naming", "Context", "bind", "(Name,Object)", "summary", "df-generated"] + - ["javax.naming", "Context", "bind", "(String,Object)", "summary", "df-generated"] + - ["javax.naming", "Context", "close", "()", "summary", "df-generated"] + - ["javax.naming", "Context", "destroySubcontext", "(Name)", "summary", "df-generated"] + - ["javax.naming", "Context", "destroySubcontext", "(String)", "summary", "df-generated"] + - ["javax.naming", "Context", "rebind", "(Name,Object)", "summary", "df-generated"] + - ["javax.naming", "Context", "rebind", "(String,Object)", "summary", "df-generated"] + - ["javax.naming", "Context", "rename", "(Name,Name)", "summary", "df-generated"] + - ["javax.naming", "Context", "rename", "(String,String)", "summary", "df-generated"] + - ["javax.naming", "Context", "unbind", "(Name)", "summary", "df-generated"] + - ["javax.naming", "Context", "unbind", "(String)", "summary", "df-generated"] + - ["javax.naming", "InitialContext", "doLookup", "(Name)", "summary", "df-generated"] + - ["javax.naming", "InitialContext", "doLookup", "(String)", "summary", "df-generated"] + - ["javax.naming", "Name", "endsWith", "(Name)", "summary", "df-generated"] + - ["javax.naming", "Name", "isEmpty", "()", "summary", "df-generated"] + - ["javax.naming", "Name", "size", "()", "summary", "df-generated"] + - ["javax.naming", "Name", "startsWith", "(Name)", "summary", "df-generated"] + - ["javax.naming", "NameClassPair", "isRelative", "()", "summary", "df-generated"] + - ["javax.naming", "NameClassPair", "setRelative", "(boolean)", "summary", "df-generated"] + - ["javax.naming", "NamingException", "appendRemainingComponent", "(String)", "summary", "df-generated"] + - ["javax.naming", "Reference", "clear", "()", "summary", "df-generated"] + - ["javax.naming", "Reference", "size", "()", "summary", "df-generated"] + - ["javax.naming", "ReferralException", "getReferralContext", "()", "summary", "df-generated"] + - ["javax.naming", "ReferralException", "getReferralContext", "(Hashtable)", "summary", "df-generated"] + - ["javax.naming", "ReferralException", "getReferralInfo", "()", "summary", "df-generated"] + - ["javax.naming", "ReferralException", "retryReferral", "()", "summary", "df-generated"] + - ["javax.naming", "ReferralException", "skipReferral", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.naming.spi.model.yml b/java/ql/lib/ext/generated/javax.naming.spi.model.yml new file mode 100644 index 000000000000..5f36e7d0e73e --- /dev/null +++ b/java/ql/lib/ext/generated/javax.naming.spi.model.yml @@ -0,0 +1,40 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.naming.spi", "DirStateFactory$Result", True, "Result", "(Object,Attributes)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "DirStateFactory$Result", True, "Result", "(Object,Attributes)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "DirStateFactory$Result", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "DirStateFactory$Result", True, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "DirectoryManager", True, "getContinuationDirContext", "(CannotProceedException)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "DirectoryManager", True, "getObjectInstance", "(Object,Name,Context,Hashtable,Attributes)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "DirectoryManager", True, "getObjectInstance", "(Object,Name,Context,Hashtable,Attributes)", "", "Argument[3].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "DirectoryManager", True, "getStateToBind", "(Object,Name,Context,Hashtable,Attributes)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "DirectoryManager", True, "getStateToBind", "(Object,Name,Context,Hashtable,Attributes)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "NamingManager", True, "getContinuationContext", "(CannotProceedException)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "NamingManager", True, "getInitialContext", "(Hashtable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "NamingManager", True, "getObjectInstance", "(Object,Name,Context,Hashtable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "NamingManager", True, "getObjectInstance", "(Object,Name,Context,Hashtable)", "", "Argument[3].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "NamingManager", True, "getStateToBind", "(Object,Name,Context,Hashtable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "NamingManager", True, "getURLContext", "(String,Hashtable)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "ResolveResult", "(Object,Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "ResolveResult", "(Object,Name)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "ResolveResult", "(Object,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "appendRemainingName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "getRemainingName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "getResolvedObj", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "setRemainingName", "(Name)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "ResolveResult", True, "setResolvedObj", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.naming.spi", "Resolver", True, "resolveToClass", "(Name,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "Resolver", True, "resolveToClass", "(Name,Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.naming.spi", "Resolver", True, "resolveToClass", "(String,Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.naming.spi", "NamingManager", "hasInitialContextFactoryBuilder", "()", "summary", "df-generated"] + - ["javax.naming.spi", "NamingManager", "setInitialContextFactoryBuilder", "(InitialContextFactoryBuilder)", "summary", "df-generated"] + - ["javax.naming.spi", "NamingManager", "setObjectFactoryBuilder", "(ObjectFactoryBuilder)", "summary", "df-generated"] + - ["javax.naming.spi", "ResolveResult", "appendRemainingComponent", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.net.model.yml b/java/ql/lib/ext/generated/javax.net.model.yml new file mode 100644 index 000000000000..2990ef69c06a --- /dev/null +++ b/java/ql/lib/ext/generated/javax.net.model.yml @@ -0,0 +1,22 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.net", "ServerSocketFactory", True, "createServerSocket", "(int,int,InetAddress)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.net", "SocketFactory", True, "createSocket", "(InetAddress,int,InetAddress,int)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.net", "SocketFactory", True, "createSocket", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net", "SocketFactory", True, "createSocket", "(String,int,InetAddress,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net", "SocketFactory", True, "createSocket", "(String,int,InetAddress,int)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.net", "ServerSocketFactory", "createServerSocket", "()", "summary", "df-generated"] + - ["javax.net", "ServerSocketFactory", "createServerSocket", "(int)", "summary", "df-generated"] + - ["javax.net", "ServerSocketFactory", "createServerSocket", "(int,int)", "summary", "df-generated"] + - ["javax.net", "ServerSocketFactory", "getDefault", "()", "summary", "df-generated"] + - ["javax.net", "SocketFactory", "createSocket", "()", "summary", "df-generated"] + - ["javax.net", "SocketFactory", "createSocket", "(InetAddress,int)", "summary", "df-generated"] + - ["javax.net", "SocketFactory", "getDefault", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.net.ssl.model.yml b/java/ql/lib/ext/generated/javax.net.ssl.model.yml new file mode 100644 index 000000000000..194be2c20087 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.net.ssl.model.yml @@ -0,0 +1,233 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.net.ssl", "CertPathTrustManagerParameters", True, "CertPathTrustManagerParameters", "(CertPathParameters)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "CertPathTrustManagerParameters", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", True, "HandshakeCompletedEvent", "(SSLSocket,SSLSession)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", True, "HandshakeCompletedEvent", "(SSLSocket,SSLSession)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", True, "getLocalCertificates", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", True, "getPeerCertificates", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", True, "getSession", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", True, "getSocket", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", True, "getHostnameVerifier", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", True, "getSSLSocketFactory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", True, "setHostnameVerifier", "(HostnameVerifier)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", True, "setSSLSocketFactory", "(SSLSocketFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", True, "getKeyManagers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "KeyStoreBuilderParameters", True, "KeyStoreBuilderParameters", "(KeyStore$Builder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "KeyStoreBuilderParameters", True, "KeyStoreBuilderParameters", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "KeyStoreBuilderParameters", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SNIHostName", False, "SNIHostName", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SNIHostName", False, "createSNIMatcher", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SNIHostName", False, "getAsciiName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SNIServerName", True, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "createSSLEngine", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "createSSLEngine", "(String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "createSSLEngine", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getClientSessionContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getProtocol", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getServerSessionContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getServerSocketFactory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "getSocketFactory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "init", "(KeyManager[],TrustManager[],SecureRandom)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "init", "(KeyManager[],TrustManager[],SecureRandom)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLContext", True, "init", "(KeyManager[],TrustManager[],SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLEngine", True, "getPeerHost", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLException", True, "SSLException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLException", True, "SSLException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLException", True, "SSLException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLException", True, "SSLException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLHandshakeException", True, "SSLHandshakeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLKeyException", True, "SSLKeyException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "SSLParameters", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "SSLParameters", "(String[],String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "SSLParameters", "(String[],String[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "getAlgorithmConstraints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "getApplicationProtocols", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "getCipherSuites", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "getEndpointIdentificationAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "getProtocols", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "getSNIMatchers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "getServerNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "setAlgorithmConstraints", "(AlgorithmConstraints)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "setApplicationProtocols", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "setCipherSuites", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "setEndpointIdentificationAlgorithm", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "setProtocols", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "setSNIMatchers", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLParameters", True, "setServerNames", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLPeerUnverifiedException", True, "SSLPeerUnverifiedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLPermission", False, "SSLPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLPermission", False, "SSLPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLProtocolException", True, "SSLProtocolException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLSessionBindingEvent", True, "SSLSessionBindingEvent", "(SSLSession,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLSessionBindingEvent", True, "SSLSessionBindingEvent", "(SSLSession,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.net.ssl", "SSLSessionBindingEvent", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "SSLSessionBindingEvent", True, "getSession", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", True, "getTrustManagers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.net.ssl", "ExtendedSSLSession", "getLocalSupportedSignatureAlgorithms", "()", "summary", "df-generated"] + - ["javax.net.ssl", "ExtendedSSLSession", "getPeerSupportedSignatureAlgorithms", "()", "summary", "df-generated"] + - ["javax.net.ssl", "ExtendedSSLSession", "getRequestedServerNames", "()", "summary", "df-generated"] + - ["javax.net.ssl", "ExtendedSSLSession", "getStatusResponses", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", "getCipherSuite", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", "getLocalPrincipal", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", "getPeerCertificateChain", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HandshakeCompletedEvent", "getPeerPrincipal", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HostnameVerifier", "verify", "(String,SSLSession)", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getCipherSuite", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getDefaultHostnameVerifier", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getDefaultSSLSocketFactory", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getLocalCertificates", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getLocalPrincipal", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getPeerPrincipal", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getSSLSession", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "getServerCertificates", "()", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "setDefaultHostnameVerifier", "(HostnameVerifier)", "summary", "df-generated"] + - ["javax.net.ssl", "HttpsURLConnection", "setDefaultSSLSocketFactory", "(SSLSocketFactory)", "summary", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", "getDefaultAlgorithm", "()", "summary", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", "init", "(KeyStore,char[])", "summary", "df-generated"] + - ["javax.net.ssl", "KeyManagerFactory", "init", "(ManagerFactoryParameters)", "summary", "df-generated"] + - ["javax.net.ssl", "SNIHostName", "SNIHostName", "(String)", "summary", "df-generated"] + - ["javax.net.ssl", "SNIMatcher", "getType", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SNIMatcher", "matches", "(SNIServerName)", "summary", "df-generated"] + - ["javax.net.ssl", "SNIServerName", "getType", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLContext", "getDefault", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLContext", "getDefaultSSLParameters", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLContext", "getSupportedSSLParameters", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLContext", "setDefault", "(SSLContext)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "beginHandshake", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "closeInbound", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "closeOutbound", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getApplicationProtocol", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getDelegatedTask", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getEnableSessionCreation", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getEnabledCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getEnabledProtocols", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getHandshakeApplicationProtocol", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getHandshakeApplicationProtocolSelector", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getHandshakeSession", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getHandshakeStatus", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getNeedClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getPeerPort", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getSSLParameters", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getSession", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getSupportedCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getSupportedProtocols", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getUseClientMode", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "getWantClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "isInboundDone", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "isOutboundDone", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setEnableSessionCreation", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setEnabledCipherSuites", "(String[])", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setEnabledProtocols", "(String[])", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setHandshakeApplicationProtocolSelector", "(BiFunction)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setNeedClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setSSLParameters", "(SSLParameters)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setUseClientMode", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "setWantClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "unwrap", "(ByteBuffer,ByteBuffer)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "unwrap", "(ByteBuffer,ByteBuffer[])", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "unwrap", "(ByteBuffer,ByteBuffer[],int,int)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "wrap", "(ByteBuffer,ByteBuffer)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "wrap", "(ByteBuffer[],ByteBuffer)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngine", "wrap", "(ByteBuffer[],int,int,ByteBuffer)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngineResult", "SSLEngineResult", "(SSLEngineResult$Status,SSLEngineResult$HandshakeStatus,int,int)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngineResult", "SSLEngineResult", "(SSLEngineResult$Status,SSLEngineResult$HandshakeStatus,int,int,long)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngineResult", "bytesConsumed", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngineResult", "bytesProduced", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngineResult", "getHandshakeStatus", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngineResult", "getStatus", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLEngineResult", "sequenceNumber", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "getEnableRetransmissions", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "getMaximumPacketSize", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "getNeedClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "getUseCipherSuitesOrder", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "getWantClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "setEnableRetransmissions", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "setMaximumPacketSize", "(int)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "setNeedClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "setUseCipherSuitesOrder", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLParameters", "setWantClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getEnableSessionCreation", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getEnabledCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getEnabledProtocols", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getNeedClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getSSLParameters", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getSupportedCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getSupportedProtocols", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getUseClientMode", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "getWantClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "setEnableSessionCreation", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "setEnabledCipherSuites", "(String[])", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "setEnabledProtocols", "(String[])", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "setNeedClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "setSSLParameters", "(SSLParameters)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "setUseClientMode", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocket", "setWantClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocketFactory", "getDefault", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocketFactory", "getDefaultCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLServerSocketFactory", "getSupportedCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSession", "getPeerCertificateChain", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "addHandshakeCompletedListener", "(HandshakeCompletedListener)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getApplicationProtocol", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getEnableSessionCreation", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getEnabledCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getEnabledProtocols", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getHandshakeApplicationProtocol", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getHandshakeApplicationProtocolSelector", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getHandshakeSession", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getNeedClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getSSLParameters", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getSession", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getSupportedCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getSupportedProtocols", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getUseClientMode", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "getWantClientAuth", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "removeHandshakeCompletedListener", "(HandshakeCompletedListener)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setEnableSessionCreation", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setEnabledCipherSuites", "(String[])", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setEnabledProtocols", "(String[])", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setHandshakeApplicationProtocolSelector", "(BiFunction)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setNeedClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setSSLParameters", "(SSLParameters)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setUseClientMode", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "setWantClientAuth", "(boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocket", "startHandshake", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocketFactory", "createSocket", "(Socket,InputStream,boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocketFactory", "createSocket", "(Socket,String,int,boolean)", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocketFactory", "getDefault", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocketFactory", "getDefaultCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "SSLSocketFactory", "getSupportedCipherSuites", "()", "summary", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", "getDefaultAlgorithm", "()", "summary", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", "init", "(KeyStore)", "summary", "df-generated"] + - ["javax.net.ssl", "TrustManagerFactory", "init", "(ManagerFactoryParameters)", "summary", "df-generated"] + - ["javax.net.ssl", "X509ExtendedKeyManager", "chooseEngineClientAlias", "(String[],Principal[],SSLEngine)", "summary", "df-generated"] + - ["javax.net.ssl", "X509ExtendedKeyManager", "chooseEngineServerAlias", "(String,Principal[],SSLEngine)", "summary", "df-generated"] + - ["javax.net.ssl", "X509ExtendedTrustManager", "checkClientTrusted", "(X509Certificate[],String,SSLEngine)", "summary", "df-generated"] + - ["javax.net.ssl", "X509ExtendedTrustManager", "checkClientTrusted", "(X509Certificate[],String,Socket)", "summary", "df-generated"] + - ["javax.net.ssl", "X509ExtendedTrustManager", "checkServerTrusted", "(X509Certificate[],String,SSLEngine)", "summary", "df-generated"] + - ["javax.net.ssl", "X509ExtendedTrustManager", "checkServerTrusted", "(X509Certificate[],String,Socket)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.print.attribute.model.yml b/java/ql/lib/ext/generated/javax.print.attribute.model.yml new file mode 100644 index 000000000000..08866afd4800 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.print.attribute.model.yml @@ -0,0 +1,70 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.print.attribute", "AttributeSet", True, "add", "(Attribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSet", True, "get", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSet", True, "toArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "synchronizedView", "(AttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "synchronizedView", "(DocAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "synchronizedView", "(PrintJobAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "synchronizedView", "(PrintRequestAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "synchronizedView", "(PrintServiceAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "unmodifiableView", "(AttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "unmodifiableView", "(DocAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "unmodifiableView", "(PrintJobAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "unmodifiableView", "(PrintRequestAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "unmodifiableView", "(PrintServiceAttributeSet)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", False, "verifyAttributeValue", "(Object,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "HashAttributeSet", True, "HashAttributeSet", "(Attribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashAttributeSet", True, "HashAttributeSet", "(Attribute[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashDocAttributeSet", True, "HashDocAttributeSet", "(DocAttribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashDocAttributeSet", True, "HashDocAttributeSet", "(DocAttribute[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashPrintJobAttributeSet", True, "HashPrintJobAttributeSet", "(PrintJobAttribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashPrintJobAttributeSet", True, "HashPrintJobAttributeSet", "(PrintJobAttribute[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashPrintRequestAttributeSet", True, "HashPrintRequestAttributeSet", "(PrintRequestAttribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashPrintRequestAttributeSet", True, "HashPrintRequestAttributeSet", "(PrintRequestAttribute[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashPrintServiceAttributeSet", True, "HashPrintServiceAttributeSet", "(PrintServiceAttribute)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "HashPrintServiceAttributeSet", True, "HashPrintServiceAttributeSet", "(PrintServiceAttribute[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute", "TextSyntax", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "TextSyntax", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "URISyntax", True, "getURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute", "UnmodifiableSetException", True, "UnmodifiableSetException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.print.attribute", "Attribute", "getCategory", "()", "summary", "df-generated"] + - ["javax.print.attribute", "Attribute", "getName", "()", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "addAll", "(AttributeSet)", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "clear", "()", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "containsKey", "(Class)", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "containsValue", "(Attribute)", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "isEmpty", "()", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "remove", "(Attribute)", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "remove", "(Class)", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSet", "size", "()", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", "verifyAttributeCategory", "(Object,Class)", "summary", "df-generated"] + - ["javax.print.attribute", "AttributeSetUtilities", "verifyCategoryForValue", "(Class,Attribute)", "summary", "df-generated"] + - ["javax.print.attribute", "DateTimeSyntax", "getValue", "()", "summary", "df-generated"] + - ["javax.print.attribute", "EnumSyntax", "getValue", "()", "summary", "df-generated"] + - ["javax.print.attribute", "HashAttributeSet", "HashAttributeSet", "(AttributeSet)", "summary", "df-generated"] + - ["javax.print.attribute", "HashDocAttributeSet", "HashDocAttributeSet", "(DocAttributeSet)", "summary", "df-generated"] + - ["javax.print.attribute", "HashPrintJobAttributeSet", "HashPrintJobAttributeSet", "(PrintJobAttributeSet)", "summary", "df-generated"] + - ["javax.print.attribute", "HashPrintRequestAttributeSet", "HashPrintRequestAttributeSet", "(PrintRequestAttributeSet)", "summary", "df-generated"] + - ["javax.print.attribute", "HashPrintServiceAttributeSet", "HashPrintServiceAttributeSet", "(PrintServiceAttributeSet)", "summary", "df-generated"] + - ["javax.print.attribute", "IntegerSyntax", "getValue", "()", "summary", "df-generated"] + - ["javax.print.attribute", "ResolutionSyntax", "ResolutionSyntax", "(int,int,int)", "summary", "df-generated"] + - ["javax.print.attribute", "ResolutionSyntax", "getCrossFeedResolution", "(int)", "summary", "df-generated"] + - ["javax.print.attribute", "ResolutionSyntax", "getFeedResolution", "(int)", "summary", "df-generated"] + - ["javax.print.attribute", "ResolutionSyntax", "getResolution", "(int)", "summary", "df-generated"] + - ["javax.print.attribute", "ResolutionSyntax", "lessThanOrEquals", "(ResolutionSyntax)", "summary", "df-generated"] + - ["javax.print.attribute", "SetOfIntegerSyntax", "contains", "(IntegerSyntax)", "summary", "df-generated"] + - ["javax.print.attribute", "SetOfIntegerSyntax", "contains", "(int)", "summary", "df-generated"] + - ["javax.print.attribute", "SetOfIntegerSyntax", "getMembers", "()", "summary", "df-generated"] + - ["javax.print.attribute", "SetOfIntegerSyntax", "next", "(int)", "summary", "df-generated"] + - ["javax.print.attribute", "Size2DSyntax", "getSize", "(int)", "summary", "df-generated"] + - ["javax.print.attribute", "Size2DSyntax", "getX", "(int)", "summary", "df-generated"] + - ["javax.print.attribute", "Size2DSyntax", "getY", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.print.attribute.standard.model.yml b/java/ql/lib/ext/generated/javax.print.attribute.standard.model.yml new file mode 100644 index 000000000000..362cdbb4c1e5 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.print.attribute.standard.model.yml @@ -0,0 +1,92 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.print.attribute.standard", "DateTimeAtCompleted", False, "DateTimeAtCompleted", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "DateTimeAtCreation", False, "DateTimeAtCreation", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "DateTimeAtProcessing", False, "DateTimeAtProcessing", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "Destination", False, "Destination", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "DialogOwner", False, "DialogOwner", "(Window)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "DialogOwner", False, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute.standard", "DocumentName", False, "DocumentName", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "DocumentName", False, "DocumentName", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobHoldUntil", False, "JobHoldUntil", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobMessageFromOperator", False, "JobMessageFromOperator", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobMessageFromOperator", False, "JobMessageFromOperator", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobName", False, "JobName", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobName", False, "JobName", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobOriginatingUserName", False, "JobOriginatingUserName", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobOriginatingUserName", False, "JobOriginatingUserName", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "JobStateReasons", False, "JobStateReasons", "(Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "MediaSize", True, "MediaSize", "(float,float,int,MediaSizeName)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "MediaSize", True, "MediaSize", "(int,int,int,MediaSizeName)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "MediaSize", True, "getMediaSizeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute.standard", "OutputDeviceAssigned", False, "OutputDeviceAssigned", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "OutputDeviceAssigned", False, "OutputDeviceAssigned", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterInfo", False, "PrinterInfo", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterInfo", False, "PrinterInfo", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterLocation", False, "PrinterLocation", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterLocation", False, "PrinterLocation", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterMakeAndModel", False, "PrinterMakeAndModel", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterMakeAndModel", False, "PrinterMakeAndModel", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterMessageFromOperator", False, "PrinterMessageFromOperator", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterMessageFromOperator", False, "PrinterMessageFromOperator", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterMoreInfo", False, "PrinterMoreInfo", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterMoreInfoManufacturer", False, "PrinterMoreInfoManufacturer", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterName", False, "PrinterName", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterName", False, "PrinterName", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterStateReasons", False, "PrinterStateReasons", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterStateReasons", False, "printerStateReasonSet", "(Severity)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterStateReasons", False, "printerStateReasonSet", "(Severity)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.attribute.standard", "PrinterURI", False, "PrinterURI", "(URI)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "RequestingUserName", False, "RequestingUserName", "(String,Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.attribute.standard", "RequestingUserName", False, "RequestingUserName", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.print.attribute.standard", "Copies", "Copies", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "CopiesSupported", "CopiesSupported", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "CopiesSupported", "CopiesSupported", "(int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobImpressions", "JobImpressions", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobImpressionsCompleted", "JobImpressionsCompleted", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobImpressionsSupported", "JobImpressionsSupported", "(int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobKOctets", "JobKOctets", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobKOctetsProcessed", "JobKOctetsProcessed", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobKOctetsSupported", "JobKOctetsSupported", "(int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobMediaSheets", "JobMediaSheets", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobMediaSheetsCompleted", "JobMediaSheetsCompleted", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobMediaSheetsSupported", "JobMediaSheetsSupported", "(int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobPriority", "JobPriority", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobPrioritySupported", "JobPrioritySupported", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobStateReasons", "JobStateReasons", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "JobStateReasons", "JobStateReasons", "(int,float)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaPrintableArea", "MediaPrintableArea", "(float,float,float,float,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaPrintableArea", "MediaPrintableArea", "(int,int,int,int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaPrintableArea", "getHeight", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaPrintableArea", "getPrintableArea", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaPrintableArea", "getWidth", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaPrintableArea", "getX", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaPrintableArea", "getY", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaSize", "MediaSize", "(float,float,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaSize", "MediaSize", "(int,int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaSize", "findMedia", "(float,float,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "MediaSize", "getMediaSizeForName", "(MediaSizeName)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "NumberOfDocuments", "NumberOfDocuments", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "NumberOfInterveningJobs", "NumberOfInterveningJobs", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "NumberUp", "NumberUp", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "NumberUpSupported", "NumberUpSupported", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "NumberUpSupported", "NumberUpSupported", "(int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "NumberUpSupported", "NumberUpSupported", "(int[][])", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PageRanges", "PageRanges", "(String)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PageRanges", "PageRanges", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PageRanges", "PageRanges", "(int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PageRanges", "PageRanges", "(int[][])", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PagesPerMinute", "PagesPerMinute", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PagesPerMinuteColor", "PagesPerMinuteColor", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PrinterResolution", "PrinterResolution", "(int,int,int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PrinterStateReasons", "PrinterStateReasons", "(int)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "PrinterStateReasons", "PrinterStateReasons", "(int,float)", "summary", "df-generated"] + - ["javax.print.attribute.standard", "QueuedJobCount", "QueuedJobCount", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.print.event.model.yml b/java/ql/lib/ext/generated/javax.print.event.model.yml new file mode 100644 index 000000000000..91b146ba8b01 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.print.event.model.yml @@ -0,0 +1,28 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.print.event", "PrintEvent", True, "PrintEvent", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.event", "PrintJobAttributeEvent", True, "PrintJobAttributeEvent", "(DocPrintJob,PrintJobAttributeSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.event", "PrintJobAttributeEvent", True, "PrintJobAttributeEvent", "(DocPrintJob,PrintJobAttributeSet)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.event", "PrintJobAttributeEvent", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.event", "PrintJobAttributeEvent", True, "getPrintJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.event", "PrintJobEvent", True, "PrintJobEvent", "(DocPrintJob,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.event", "PrintJobEvent", True, "getPrintJob", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.event", "PrintServiceAttributeEvent", True, "PrintServiceAttributeEvent", "(PrintService,PrintServiceAttributeSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.event", "PrintServiceAttributeEvent", True, "PrintServiceAttributeEvent", "(PrintService,PrintServiceAttributeSet)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print.event", "PrintServiceAttributeEvent", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print.event", "PrintServiceAttributeEvent", True, "getPrintService", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.print.event", "PrintJobEvent", "getPrintEventType", "()", "summary", "df-generated"] + - ["javax.print.event", "PrintJobListener", "printDataTransferCompleted", "(PrintJobEvent)", "summary", "df-generated"] + - ["javax.print.event", "PrintJobListener", "printJobCanceled", "(PrintJobEvent)", "summary", "df-generated"] + - ["javax.print.event", "PrintJobListener", "printJobCompleted", "(PrintJobEvent)", "summary", "df-generated"] + - ["javax.print.event", "PrintJobListener", "printJobFailed", "(PrintJobEvent)", "summary", "df-generated"] + - ["javax.print.event", "PrintJobListener", "printJobNoMoreEvents", "(PrintJobEvent)", "summary", "df-generated"] + - ["javax.print.event", "PrintJobListener", "printJobRequiresAttention", "(PrintJobEvent)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.print.model.yml b/java/ql/lib/ext/generated/javax.print.model.yml new file mode 100644 index 000000000000..bf9267dea969 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.print.model.yml @@ -0,0 +1,56 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.print", "Doc", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "Doc", True, "getDocFlavor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "Doc", True, "getPrintData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "Doc", True, "getReaderForText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "Doc", True, "getStreamForBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "DocFlavor$SERVICE_FORMATTED", True, "SERVICE_FORMATTED", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "DocFlavor", True, "DocFlavor", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "DocFlavor", True, "getMediaSubtype", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "DocFlavor", True, "getMediaType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "DocFlavor", True, "getMimeType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "DocFlavor", True, "getParameter", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "DocFlavor", True, "getRepresentationClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "PrintException", True, "PrintException", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "PrintException", True, "PrintException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "PrintException", True, "PrintException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "PrintException", True, "PrintException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "ServiceUI", True, "printDialog", "(GraphicsConfiguration,int,int,PrintService[],PrintService,DocFlavor,PrintRequestAttributeSet)", "", "Argument[3].ArrayElement", "Argument[6]", "taint", "df-generated"] + - ["javax.print", "ServiceUI", True, "printDialog", "(GraphicsConfiguration,int,int,PrintService[],PrintService,DocFlavor,PrintRequestAttributeSet)", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.print", "SimpleDoc", False, "SimpleDoc", "(Object,DocFlavor,DocAttributeSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "SimpleDoc", False, "SimpleDoc", "(Object,DocFlavor,DocAttributeSet)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "SimpleDoc", False, "SimpleDoc", "(Object,DocFlavor,DocAttributeSet)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.print", "StreamPrintService", True, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.print", "DocFlavor$BYTE_ARRAY", "BYTE_ARRAY", "(String)", "summary", "df-generated"] + - ["javax.print", "DocFlavor$CHAR_ARRAY", "CHAR_ARRAY", "(String)", "summary", "df-generated"] + - ["javax.print", "DocFlavor$INPUT_STREAM", "INPUT_STREAM", "(String)", "summary", "df-generated"] + - ["javax.print", "DocFlavor$READER", "READER", "(String)", "summary", "df-generated"] + - ["javax.print", "DocFlavor$STRING", "STRING", "(String)", "summary", "df-generated"] + - ["javax.print", "DocFlavor$URL", "URL", "(String)", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "getDefaultPrintService", "()", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "getMultiDocPrintServices", "(DocFlavor[],AttributeSet)", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "getPrintServices", "()", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "getPrintServices", "(DocFlavor,AttributeSet)", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "lookupDefaultPrintService", "()", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "lookupMultiDocPrintServices", "(DocFlavor[],AttributeSet)", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "lookupPrintServices", "(DocFlavor,AttributeSet)", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "registerService", "(PrintService)", "summary", "df-generated"] + - ["javax.print", "PrintServiceLookup", "registerServiceProvider", "(PrintServiceLookup)", "summary", "df-generated"] + - ["javax.print", "ServiceUIFactory", "getUI", "(int,String)", "summary", "df-generated"] + - ["javax.print", "ServiceUIFactory", "getUIClassNamesForRole", "(int)", "summary", "df-generated"] + - ["javax.print", "StreamPrintService", "dispose", "()", "summary", "df-generated"] + - ["javax.print", "StreamPrintService", "getOutputFormat", "()", "summary", "df-generated"] + - ["javax.print", "StreamPrintService", "isDisposed", "()", "summary", "df-generated"] + - ["javax.print", "StreamPrintServiceFactory", "getOutputFormat", "()", "summary", "df-generated"] + - ["javax.print", "StreamPrintServiceFactory", "getPrintService", "(OutputStream)", "summary", "df-generated"] + - ["javax.print", "StreamPrintServiceFactory", "getSupportedDocFlavors", "()", "summary", "df-generated"] + - ["javax.print", "StreamPrintServiceFactory", "lookupStreamPrintServiceFactories", "(DocFlavor,String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.rmi.ssl.model.yml b/java/ql/lib/ext/generated/javax.rmi.ssl.model.yml new file mode 100644 index 000000000000..54e1b150eb95 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.rmi.ssl.model.yml @@ -0,0 +1,18 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", True, "SslRMIServerSocketFactory", "(SSLContext,String[],String[],boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", True, "SslRMIServerSocketFactory", "(SSLContext,String[],String[],boolean)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", True, "SslRMIServerSocketFactory", "(SSLContext,String[],String[],boolean)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", True, "SslRMIServerSocketFactory", "(String[],String[],boolean)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", True, "SslRMIServerSocketFactory", "(String[],String[],boolean)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", True, "getEnabledCipherSuites", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", True, "getEnabledProtocols", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.rmi.ssl", "SslRMIServerSocketFactory", "getNeedClientAuth", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.script.model.yml b/java/ql/lib/ext/generated/javax.script.model.yml new file mode 100644 index 000000000000..6350613b8c42 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.script.model.yml @@ -0,0 +1,66 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.script", "AbstractScriptEngine", True, "AbstractScriptEngine", "(Bindings)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "getAttribute", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "getAttribute", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "getBindings", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "getErrorWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "getReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "getWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "removeAttribute", "(String,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "setAttribute", "(String,Object,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "setAttribute", "(String,Object,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "setBindings", "(Bindings,int)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "setErrorWriter", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "setReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptContext", True, "setWriter", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngine", True, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngine", True, "getBindings", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngine", True, "getContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngine", True, "setBindings", "(Bindings,int)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngine", True, "setContext", "(ScriptContext)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "get", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "getBindings", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "getEngineByExtension", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "getEngineByMimeType", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "getEngineByName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "getEngineFactories", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "put", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "put", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "registerEngineExtension", "(String,ScriptEngineFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "registerEngineExtension", "(String,ScriptEngineFactory)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "registerEngineMimeType", "(String,ScriptEngineFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "registerEngineMimeType", "(String,ScriptEngineFactory)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "registerEngineName", "(String,ScriptEngineFactory)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "registerEngineName", "(String,ScriptEngineFactory)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptEngineManager", True, "setBindings", "(Bindings)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptException", True, "ScriptException", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptException", True, "ScriptException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptException", True, "ScriptException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptException", True, "ScriptException", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptException", True, "ScriptException", "(String,String,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptException", True, "ScriptException", "(String,String,int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.script", "ScriptException", True, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.script", "SimpleBindings", True, "SimpleBindings", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.script", "CompiledScript", "eval", "()", "summary", "df-generated"] + - ["javax.script", "CompiledScript", "eval", "(Bindings)", "summary", "df-generated"] + - ["javax.script", "CompiledScript", "eval", "(ScriptContext)", "summary", "df-generated"] + - ["javax.script", "CompiledScript", "getEngine", "()", "summary", "df-generated"] + - ["javax.script", "ScriptContext", "getAttributesScope", "(String)", "summary", "df-generated"] + - ["javax.script", "ScriptContext", "getScopes", "()", "summary", "df-generated"] + - ["javax.script", "ScriptEngine", "eval", "(Reader)", "summary", "df-generated"] + - ["javax.script", "ScriptEngine", "eval", "(Reader,Bindings)", "summary", "df-generated"] + - ["javax.script", "ScriptEngine", "eval", "(String)", "summary", "df-generated"] + - ["javax.script", "ScriptEngine", "eval", "(String,Bindings)", "summary", "df-generated"] + - ["javax.script", "ScriptEngine", "put", "(String,Object)", "summary", "df-generated"] + - ["javax.script", "ScriptEngineManager", "ScriptEngineManager", "(ClassLoader)", "summary", "df-generated"] + - ["javax.script", "ScriptException", "getColumnNumber", "()", "summary", "df-generated"] + - ["javax.script", "ScriptException", "getLineNumber", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.security.auth.callback.model.yml b/java/ql/lib/ext/generated/javax.security.auth.callback.model.yml new file mode 100644 index 000000000000..ffb0e36d7b1b --- /dev/null +++ b/java/ql/lib/ext/generated/javax.security.auth.callback.model.yml @@ -0,0 +1,61 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.security.auth.callback", "ChoiceCallback", True, "ChoiceCallback", "(String,String[],int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", True, "ChoiceCallback", "(String,String[],int,boolean)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", True, "getChoices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", True, "getPrompt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", True, "ConfirmationCallback", "(String,int,String[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", True, "ConfirmationCallback", "(String,int,String[],int)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", True, "ConfirmationCallback", "(String,int,int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", True, "ConfirmationCallback", "(int,String[],int)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", True, "getOptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", True, "getPrompt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "LanguageCallback", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "LanguageCallback", True, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "NameCallback", True, "NameCallback", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "NameCallback", True, "NameCallback", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "NameCallback", True, "NameCallback", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "NameCallback", True, "getDefaultName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "NameCallback", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "NameCallback", True, "getPrompt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "NameCallback", True, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "PasswordCallback", True, "PasswordCallback", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "PasswordCallback", True, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "PasswordCallback", True, "getPrompt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "PasswordCallback", True, "setPassword", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextInputCallback", True, "TextInputCallback", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextInputCallback", True, "TextInputCallback", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextInputCallback", True, "TextInputCallback", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextInputCallback", True, "getDefaultText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextInputCallback", True, "getPrompt", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextInputCallback", True, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextInputCallback", True, "setText", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextOutputCallback", True, "TextOutputCallback", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "TextOutputCallback", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.callback", "UnsupportedCallbackException", True, "UnsupportedCallbackException", "(Callback)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "UnsupportedCallbackException", True, "UnsupportedCallbackException", "(Callback,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "UnsupportedCallbackException", True, "UnsupportedCallbackException", "(Callback,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.callback", "UnsupportedCallbackException", True, "getCallback", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.security.auth.callback", "CallbackHandler", "handle", "(Callback[])", "summary", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", "allowMultipleSelections", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", "getDefaultChoice", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", "getSelectedIndexes", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", "setSelectedIndex", "(int)", "summary", "df-generated"] + - ["javax.security.auth.callback", "ChoiceCallback", "setSelectedIndexes", "(int[])", "summary", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", "ConfirmationCallback", "(int,int,int)", "summary", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", "getDefaultOption", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", "getMessageType", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", "getOptionType", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", "getSelectedIndex", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "ConfirmationCallback", "setSelectedIndex", "(int)", "summary", "df-generated"] + - ["javax.security.auth.callback", "PasswordCallback", "clearPassword", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "PasswordCallback", "isEchoOn", "()", "summary", "df-generated"] + - ["javax.security.auth.callback", "TextOutputCallback", "getMessageType", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.security.auth.kerberos.model.yml b/java/ql/lib/ext/generated/javax.security.auth.kerberos.model.yml new file mode 100644 index 000000000000..8be4b007b846 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.security.auth.kerberos.model.yml @@ -0,0 +1,65 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.security.auth.kerberos", "DelegationPermission", False, "DelegationPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "DelegationPermission", False, "DelegationPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "EncryptionKey", False, "EncryptionKey", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosCredMessage", False, "KerberosCredMessage", "(KerberosPrincipal,KerberosPrincipal,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosCredMessage", False, "KerberosCredMessage", "(KerberosPrincipal,KerberosPrincipal,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosCredMessage", False, "KerberosCredMessage", "(KerberosPrincipal,KerberosPrincipal,byte[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosCredMessage", False, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosCredMessage", False, "getRecipient", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosCredMessage", False, "getSender", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosKey", True, "KerberosKey", "(KerberosPrincipal,byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosKey", True, "KerberosKey", "(KerberosPrincipal,byte[],int,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosKey", True, "KerberosKey", "(KerberosPrincipal,char[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosKey", True, "getPrincipal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosPrincipal", False, "KerberosPrincipal", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosPrincipal", False, "KerberosPrincipal", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosPrincipal", False, "getRealm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "KerberosTicket", "(byte[],KerberosPrincipal,KerberosPrincipal,byte[],int,boolean[],Date,Date,Date,Date,InetAddress[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "KerberosTicket", "(byte[],KerberosPrincipal,KerberosPrincipal,byte[],int,boolean[],Date,Date,Date,Date,InetAddress[])", "", "Argument[10].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "KerberosTicket", "(byte[],KerberosPrincipal,KerberosPrincipal,byte[],int,boolean[],Date,Date,Date,Date,InetAddress[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "KerberosTicket", "(byte[],KerberosPrincipal,KerberosPrincipal,byte[],int,boolean[],Date,Date,Date,Date,InetAddress[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "KerberosTicket", "(byte[],KerberosPrincipal,KerberosPrincipal,byte[],int,boolean[],Date,Date,Date,Date,InetAddress[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getAuthTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getClient", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getClientAddresses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getEndTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getRenewTill", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getServer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getSessionKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", True, "getStartTime", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", False, "getInstance", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", False, "getInstance", "(KerberosPrincipal)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", False, "getInstance", "(KerberosPrincipal,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", False, "getInstance", "(KerberosPrincipal,File)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", False, "getKeys", "(KerberosPrincipal)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", False, "getPrincipal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", False, "getUnboundInstance", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.kerberos", "ServicePermission", False, "ServicePermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.security.auth.kerberos", "EncryptionKey", "getKeyType", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosKey", "getKeyType", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosKey", "getVersionNumber", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosPrincipal", "getNameType", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "getFlags", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "getSessionKeyType", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "isForwardable", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "isForwarded", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "isInitial", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "isPostdated", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "isProxiable", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "isProxy", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KerberosTicket", "isRenewable", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", "exists", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", "getInstance", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", "getUnboundInstance", "()", "summary", "df-generated"] + - ["javax.security.auth.kerberos", "KeyTab", "isBound", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.security.auth.login.model.yml b/java/ql/lib/ext/generated/javax.security.auth.login.model.yml new file mode 100644 index 000000000000..1779821afbf0 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.security.auth.login.model.yml @@ -0,0 +1,50 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.security.auth.login", "AccountException", True, "AccountException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "AccountExpiredException", True, "AccountExpiredException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "AccountLockedException", True, "AccountLockedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "AccountNotFoundException", True, "AccountNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "AppConfigurationEntry", True, "AppConfigurationEntry", "(String,AppConfigurationEntry$LoginModuleControlFlag,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "AppConfigurationEntry", True, "AppConfigurationEntry", "(String,AppConfigurationEntry$LoginModuleControlFlag,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "AppConfigurationEntry", True, "AppConfigurationEntry", "(String,AppConfigurationEntry$LoginModuleControlFlag,Map)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "AppConfigurationEntry", True, "getControlFlag", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "AppConfigurationEntry", True, "getLoginModuleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "AppConfigurationEntry", True, "getOptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getInstance", "(String,Configuration$Parameters)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getInstance", "(String,Configuration$Parameters)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getInstance", "(String,Configuration$Parameters,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getInstance", "(String,Configuration$Parameters,Provider)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getInstance", "(String,Configuration$Parameters,Provider)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getInstance", "(String,Configuration$Parameters,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getInstance", "(String,Configuration$Parameters,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "Configuration", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "CredentialException", True, "CredentialException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "CredentialExpiredException", True, "CredentialExpiredException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "CredentialNotFoundException", True, "CredentialNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "FailedLoginException", True, "FailedLoginException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "LoginContext", "(String,CallbackHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "LoginContext", "(String,Subject)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "LoginContext", "(String,Subject,CallbackHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "LoginContext", "(String,Subject,CallbackHandler)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "LoginContext", "(String,Subject,CallbackHandler,Configuration)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "LoginContext", "(String,Subject,CallbackHandler,Configuration)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "LoginContext", "(String,Subject,CallbackHandler,Configuration)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginContext", True, "getSubject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.login", "LoginException", True, "LoginException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.security.auth.login", "Configuration", "getAppConfigurationEntry", "(String)", "summary", "df-generated"] + - ["javax.security.auth.login", "Configuration", "getConfiguration", "()", "summary", "df-generated"] + - ["javax.security.auth.login", "Configuration", "refresh", "()", "summary", "df-generated"] + - ["javax.security.auth.login", "Configuration", "setConfiguration", "(Configuration)", "summary", "df-generated"] + - ["javax.security.auth.login", "LoginContext", "LoginContext", "(String)", "summary", "df-generated"] + - ["javax.security.auth.login", "LoginContext", "login", "()", "summary", "df-generated"] + - ["javax.security.auth.login", "LoginContext", "logout", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.security.auth.model.yml b/java/ql/lib/ext/generated/javax.security.auth.model.yml new file mode 100644 index 000000000000..435da160debb --- /dev/null +++ b/java/ql/lib/ext/generated/javax.security.auth.model.yml @@ -0,0 +1,37 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.security.auth", "AuthPermission", False, "AuthPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth", "AuthPermission", False, "AuthPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth", "DestroyFailedException", True, "DestroyFailedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth", "PrivateCredentialPermission", False, "PrivateCredentialPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth", "PrivateCredentialPermission", False, "getCredentialClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "PrivateCredentialPermission", False, "getPrincipals", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "RefreshFailedException", True, "RefreshFailedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "doAs", "(Subject,PrivilegedAction)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "doAs", "(Subject,PrivilegedExceptionAction)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "doAsPrivileged", "(Subject,PrivilegedAction,AccessControlContext)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "doAsPrivileged", "(Subject,PrivilegedExceptionAction,AccessControlContext)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "getPrincipals", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "getPrivateCredentials", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "getPublicCredentials", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "Subject", False, "getSubject", "(AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth", "SubjectDomainCombiner", True, "SubjectDomainCombiner", "(Subject)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth", "SubjectDomainCombiner", True, "getSubject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.security.auth", "Destroyable", "destroy", "()", "summary", "df-generated"] + - ["javax.security.auth", "Destroyable", "isDestroyed", "()", "summary", "df-generated"] + - ["javax.security.auth", "Refreshable", "isCurrent", "()", "summary", "df-generated"] + - ["javax.security.auth", "Refreshable", "refresh", "()", "summary", "df-generated"] + - ["javax.security.auth", "Subject", "Subject", "(boolean,Set,Set,Set)", "summary", "df-generated"] + - ["javax.security.auth", "Subject", "getPrincipals", "(Class)", "summary", "df-generated"] + - ["javax.security.auth", "Subject", "getPrivateCredentials", "(Class)", "summary", "df-generated"] + - ["javax.security.auth", "Subject", "getPublicCredentials", "(Class)", "summary", "df-generated"] + - ["javax.security.auth", "Subject", "isReadOnly", "()", "summary", "df-generated"] + - ["javax.security.auth", "Subject", "setReadOnly", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.security.auth.x500.model.yml b/java/ql/lib/ext/generated/javax.security.auth.x500.model.yml new file mode 100644 index 000000000000..f2c6e64a21a7 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.security.auth.x500.model.yml @@ -0,0 +1,27 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.security.auth.x500", "X500Principal", False, "getEncoded", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500Principal", False, "getName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500Principal", False, "getName", "(String,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500Principal", False, "getName", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500Principal", False, "getName", "(String,Map)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "X500PrivateCredential", "(X509Certificate,PrivateKey)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "X500PrivateCredential", "(X509Certificate,PrivateKey)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "X500PrivateCredential", "(X509Certificate,PrivateKey,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "X500PrivateCredential", "(X509Certificate,PrivateKey,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "X500PrivateCredential", "(X509Certificate,PrivateKey,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "getAlias", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "getCertificate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.auth.x500", "X500PrivateCredential", False, "getPrivateKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.security.auth.x500", "X500Principal", "X500Principal", "(InputStream)", "summary", "df-generated"] + - ["javax.security.auth.x500", "X500Principal", "X500Principal", "(String)", "summary", "df-generated"] + - ["javax.security.auth.x500", "X500Principal", "X500Principal", "(String,Map)", "summary", "df-generated"] + - ["javax.security.auth.x500", "X500Principal", "X500Principal", "(byte[])", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.security.cert.model.yml b/java/ql/lib/ext/generated/javax.security.cert.model.yml new file mode 100644 index 000000000000..5b06f3904dbb --- /dev/null +++ b/java/ql/lib/ext/generated/javax.security.cert.model.yml @@ -0,0 +1,32 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.security.cert", "CertificateEncodingException", True, "CertificateEncodingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.cert", "CertificateException", True, "CertificateException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.cert", "CertificateExpiredException", True, "CertificateExpiredException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.cert", "CertificateNotYetValidException", True, "CertificateNotYetValidException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.cert", "CertificateParsingException", True, "CertificateParsingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.security.cert", "Certificate", "getEncoded", "()", "summary", "df-generated"] + - ["javax.security.cert", "Certificate", "getPublicKey", "()", "summary", "df-generated"] + - ["javax.security.cert", "Certificate", "verify", "(PublicKey)", "summary", "df-generated"] + - ["javax.security.cert", "Certificate", "verify", "(PublicKey,String)", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "checkValidity", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "checkValidity", "(Date)", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getInstance", "(InputStream)", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getInstance", "(byte[])", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getIssuerDN", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getNotAfter", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getNotBefore", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getSerialNumber", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getSigAlgName", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getSigAlgOID", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getSigAlgParams", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getSubjectDN", "()", "summary", "df-generated"] + - ["javax.security.cert", "X509Certificate", "getVersion", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.security.sasl.model.yml b/java/ql/lib/ext/generated/javax.security.sasl.model.yml new file mode 100644 index 000000000000..b2b5c3ac25ab --- /dev/null +++ b/java/ql/lib/ext/generated/javax.security.sasl.model.yml @@ -0,0 +1,42 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.security.sasl", "AuthenticationException", True, "AuthenticationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "AuthenticationException", True, "AuthenticationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "AuthenticationException", True, "AuthenticationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "AuthorizeCallback", True, "AuthorizeCallback", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "AuthorizeCallback", True, "AuthorizeCallback", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "AuthorizeCallback", True, "getAuthenticationID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "AuthorizeCallback", True, "getAuthorizationID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "AuthorizeCallback", True, "getAuthorizedID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "AuthorizeCallback", True, "setAuthorizedID", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "RealmCallback", True, "RealmCallback", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "RealmCallback", True, "RealmCallback", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "RealmCallback", True, "RealmCallback", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "RealmChoiceCallback", True, "RealmChoiceCallback", "(String,String[],int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "RealmChoiceCallback", True, "RealmChoiceCallback", "(String,String[],int,boolean)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslClient", "(String[],String,String,String,Map,CallbackHandler)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslClient", "(String[],String,String,String,Map,CallbackHandler)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslClient", "(String[],String,String,String,Map,CallbackHandler)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslClient", "(String[],String,String,String,Map,CallbackHandler)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslClient", "(String[],String,String,String,Map,CallbackHandler)", "", "Argument[4].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslClient", "(String[],String,String,String,Map,CallbackHandler)", "", "Argument[5]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslServer", "(String,String,String,Map,CallbackHandler)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslServer", "(String,String,String,Map,CallbackHandler)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslServer", "(String,String,String,Map,CallbackHandler)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslServer", "(String,String,String,Map,CallbackHandler)", "", "Argument[3].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "Sasl", True, "createSaslServer", "(String,String,String,Map,CallbackHandler)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["javax.security.sasl", "SaslException", True, "SaslException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "SaslException", True, "SaslException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.security.sasl", "SaslException", True, "SaslException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.security.sasl", "AuthorizeCallback", "isAuthorized", "()", "summary", "df-generated"] + - ["javax.security.sasl", "AuthorizeCallback", "setAuthorized", "(boolean)", "summary", "df-generated"] + - ["javax.security.sasl", "Sasl", "getSaslClientFactories", "()", "summary", "df-generated"] + - ["javax.security.sasl", "Sasl", "getSaslServerFactories", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.smartcardio.model.yml b/java/ql/lib/ext/generated/javax.smartcardio.model.yml new file mode 100644 index 000000000000..232d7c3fc983 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.smartcardio.model.yml @@ -0,0 +1,78 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.smartcardio", "ATR", False, "ATR", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "ATR", False, "getBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "ATR", False, "getHistoricalBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "CardException", True, "CardException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardException", True, "CardException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardException", True, "CardException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardException", True, "CardException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardNotPresentException", True, "CardNotPresentException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardNotPresentException", True, "CardNotPresentException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardNotPresentException", True, "CardNotPresentException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardNotPresentException", True, "CardNotPresentException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CardPermission", True, "CardPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "CommandAPDU", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "CommandAPDU", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "CommandAPDU", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "CommandAPDU", "(int,int,int,int,byte[])", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "CommandAPDU", "(int,int,int,int,byte[],int)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "CommandAPDU", "(int,int,int,int,byte[],int,int)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "CommandAPDU", "(int,int,int,int,byte[],int,int,int)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "getBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", False, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "ResponseAPDU", False, "ResponseAPDU", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.smartcardio", "ResponseAPDU", False, "getBytes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "ResponseAPDU", False, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", False, "getInstance", "(String,Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", False, "getInstance", "(String,Object,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", False, "getInstance", "(String,Object,Provider)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", False, "getInstance", "(String,Object,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", False, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", False, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.smartcardio", "Card", "beginExclusive", "()", "summary", "df-generated"] + - ["javax.smartcardio", "Card", "disconnect", "(boolean)", "summary", "df-generated"] + - ["javax.smartcardio", "Card", "endExclusive", "()", "summary", "df-generated"] + - ["javax.smartcardio", "Card", "getATR", "()", "summary", "df-generated"] + - ["javax.smartcardio", "Card", "getBasicChannel", "()", "summary", "df-generated"] + - ["javax.smartcardio", "Card", "getProtocol", "()", "summary", "df-generated"] + - ["javax.smartcardio", "Card", "openLogicalChannel", "()", "summary", "df-generated"] + - ["javax.smartcardio", "Card", "transmitControlCommand", "(int,byte[])", "summary", "df-generated"] + - ["javax.smartcardio", "CardChannel", "close", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CardChannel", "getCard", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CardChannel", "getChannelNumber", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CardChannel", "transmit", "(ByteBuffer,ByteBuffer)", "summary", "df-generated"] + - ["javax.smartcardio", "CardChannel", "transmit", "(CommandAPDU)", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminal", "connect", "(String)", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminal", "getName", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminal", "isCardPresent", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminal", "waitForCardAbsent", "(long)", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminal", "waitForCardPresent", "(long)", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminals", "getTerminal", "(String)", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminals", "list", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminals", "list", "(CardTerminals$State)", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminals", "waitForChange", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CardTerminals", "waitForChange", "(long)", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "CommandAPDU", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "CommandAPDU", "(int,int,int,int,int)", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "getCLA", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "getINS", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "getNc", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "getNe", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "getP1", "()", "summary", "df-generated"] + - ["javax.smartcardio", "CommandAPDU", "getP2", "()", "summary", "df-generated"] + - ["javax.smartcardio", "ResponseAPDU", "getNr", "()", "summary", "df-generated"] + - ["javax.smartcardio", "ResponseAPDU", "getSW1", "()", "summary", "df-generated"] + - ["javax.smartcardio", "ResponseAPDU", "getSW2", "()", "summary", "df-generated"] + - ["javax.smartcardio", "ResponseAPDU", "getSW", "()", "summary", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", "getDefault", "()", "summary", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", "getDefaultType", "()", "summary", "df-generated"] + - ["javax.smartcardio", "TerminalFactory", "terminals", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sound.midi.model.yml b/java/ql/lib/ext/generated/javax.sound.midi.model.yml new file mode 100644 index 000000000000..a2cb35897957 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sound.midi.model.yml @@ -0,0 +1,96 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.sound.midi", "Instrument", True, "getPatch", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "InvalidMidiDataException", True, "InvalidMidiDataException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "MetaMessage", True, "MetaMessage", "(int,byte[],int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "MetaMessage", True, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MetaMessage", True, "setMessage", "(int,byte[],int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "MidiDevice$Info", True, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiDevice$Info", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiDevice$Info", True, "getVendor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiDevice$Info", True, "getVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiEvent", True, "MidiEvent", "(MidiMessage,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "MidiEvent", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", True, "MidiFileFormat", "(int,float,int,int,long,Map)", "", "Argument[5].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", True, "getProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", True, "properties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiMessage", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiMessage", True, "setMessage", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "MidiSystem", True, "getMidiDevice", "(MidiDevice$Info)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiSystem", True, "getSoundbank", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiSystem", True, "getSoundbank", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "MidiUnavailableException", True, "MidiUnavailableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "Sequence", True, "getTracks", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "SoundbankResource", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "SoundbankResource", True, "getSoundbank", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "SysexMessage", True, "SysexMessage", "(byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "SysexMessage", True, "SysexMessage", "(int,byte[],int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "SysexMessage", True, "getData", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.midi", "SysexMessage", True, "setMessage", "(int,byte[],int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "Track", True, "add", "(MidiEvent)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.midi", "Track", True, "get", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sound.midi", "MetaMessage", "getType", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiEvent", "getTick", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiEvent", "setTick", "(long)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", "MidiFileFormat", "(int,float,int,int,long)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", "getByteLength", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", "getDivisionType", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", "getMicrosecondLength", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", "getResolution", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiFileFormat", "getType", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiMessage", "getLength", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiMessage", "getStatus", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getMidiDeviceInfo", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getMidiFileFormat", "(File)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getMidiFileFormat", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getMidiFileFormat", "(URL)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getMidiFileTypes", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getMidiFileTypes", "(Sequence)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getReceiver", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getSequence", "(File)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getSequence", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getSequence", "(URL)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getSequencer", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getSequencer", "(boolean)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getSoundbank", "(URL)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getSynthesizer", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "getTransmitter", "()", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "isFileTypeSupported", "(int)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "isFileTypeSupported", "(int,Sequence)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "write", "(Sequence,int,File)", "summary", "df-generated"] + - ["javax.sound.midi", "MidiSystem", "write", "(Sequence,int,OutputStream)", "summary", "df-generated"] + - ["javax.sound.midi", "Patch", "Patch", "(int,int)", "summary", "df-generated"] + - ["javax.sound.midi", "Patch", "getBank", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Patch", "getProgram", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "Sequence", "(float,int)", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "Sequence", "(float,int,int)", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "createTrack", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "deleteTrack", "(Track)", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "getDivisionType", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "getMicrosecondLength", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "getPatchList", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "getResolution", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Sequence", "getTickLength", "()", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "ShortMessage", "(int)", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "ShortMessage", "(int,int,int)", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "ShortMessage", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "getChannel", "()", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "getCommand", "()", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "getData1", "()", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "getData2", "()", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "setMessage", "(int)", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "setMessage", "(int,int,int)", "summary", "df-generated"] + - ["javax.sound.midi", "ShortMessage", "setMessage", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.sound.midi", "SoundbankResource", "getData", "()", "summary", "df-generated"] + - ["javax.sound.midi", "SoundbankResource", "getDataClass", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Track", "remove", "(MidiEvent)", "summary", "df-generated"] + - ["javax.sound.midi", "Track", "size", "()", "summary", "df-generated"] + - ["javax.sound.midi", "Track", "ticks", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sound.midi.spi.model.yml b/java/ql/lib/ext/generated/javax.sound.midi.spi.model.yml new file mode 100644 index 000000000000..2012851b25df --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sound.midi.spi.model.yml @@ -0,0 +1,24 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sound.midi.spi", "MidiDeviceProvider", "getDevice", "(MidiDevice$Info)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiDeviceProvider", "getDeviceInfo", "()", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiDeviceProvider", "isDeviceSupported", "(MidiDevice$Info)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileReader", "getMidiFileFormat", "(File)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileReader", "getMidiFileFormat", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileReader", "getMidiFileFormat", "(URL)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileReader", "getSequence", "(File)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileReader", "getSequence", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileReader", "getSequence", "(URL)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileWriter", "getMidiFileTypes", "()", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileWriter", "getMidiFileTypes", "(Sequence)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileWriter", "isFileTypeSupported", "(int)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileWriter", "isFileTypeSupported", "(int,Sequence)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileWriter", "write", "(Sequence,int,File)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "MidiFileWriter", "write", "(Sequence,int,OutputStream)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "SoundbankReader", "getSoundbank", "(File)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "SoundbankReader", "getSoundbank", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.midi.spi", "SoundbankReader", "getSoundbank", "(URL)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sound.sampled.model.yml b/java/ql/lib/ext/generated/javax.sound.sampled.model.yml new file mode 100644 index 000000000000..5721eb3dd219 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sound.sampled.model.yml @@ -0,0 +1,128 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.sound.sampled", "AudioFileFormat$Type", True, "Type", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat$Type", True, "Type", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat$Type", True, "getExtension", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "AudioFileFormat", "(AudioFileFormat$Type,AudioFormat,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "AudioFileFormat", "(AudioFileFormat$Type,AudioFormat,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "AudioFileFormat", "(AudioFileFormat$Type,AudioFormat,int,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "AudioFileFormat", "(AudioFileFormat$Type,AudioFormat,int,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "AudioFileFormat", "(AudioFileFormat$Type,AudioFormat,int,Map)", "", "Argument[3].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "getFormat", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "getProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", True, "properties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFormat$Encoding", True, "Encoding", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", True, "AudioFormat", "(AudioFormat$Encoding,float,int,int,int,float,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", True, "AudioFormat", "(AudioFormat$Encoding,float,int,int,int,float,boolean,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", True, "AudioFormat", "(AudioFormat$Encoding,float,int,int,int,float,boolean,Map)", "", "Argument[7].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", True, "getEncoding", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", True, "getProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", True, "properties", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioInputStream", True, "AudioInputStream", "(InputStream,AudioFormat,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioInputStream", True, "AudioInputStream", "(InputStream,AudioFormat,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioInputStream", True, "AudioInputStream", "(TargetDataLine)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioInputStream", True, "getFormat", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioPermission", True, "AudioPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioPermission", True, "AudioPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getAudioInputStream", "(AudioFormat$Encoding,AudioInputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getAudioInputStream", "(AudioFormat$Encoding,AudioInputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getAudioInputStream", "(AudioFormat,AudioInputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getAudioInputStream", "(AudioFormat,AudioInputStream)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getAudioInputStream", "(File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getAudioInputStream", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getLine", "(Line$Info)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getSourceDataLine", "(AudioFormat)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getSourceDataLine", "(AudioFormat,Mixer$Info)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getTargetDataLine", "(AudioFormat)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getTargetDataLine", "(AudioFormat,Mixer$Info)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getTargetEncodings", "(AudioFormat$Encoding)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getTargetEncodings", "(AudioFormat)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", True, "getTargetFormats", "(AudioFormat$Encoding,AudioFormat)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "BooleanControl", True, "getStateLabel", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "CompoundControl", True, "getMemberControls", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "Control", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "DataLine$Info", True, "Info", "(Class,AudioFormat)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "DataLine$Info", True, "Info", "(Class,AudioFormat,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "DataLine$Info", True, "Info", "(Class,AudioFormat[],int,int)", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "DataLine$Info", True, "getFormats", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "EnumControl", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "EnumControl", True, "getValues", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "EnumControl", True, "setValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "FloatControl", True, "getMaxLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "FloatControl", True, "getMidLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "FloatControl", True, "getMinLabel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "FloatControl", True, "getUnits", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "LineEvent", True, "LineEvent", "(Line,LineEvent$Type,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "LineEvent", True, "LineEvent", "(Line,LineEvent$Type,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "LineEvent", True, "getLine", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "LineEvent", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "LineUnavailableException", True, "LineUnavailableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "Mixer$Info", True, "getDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "Mixer$Info", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "Mixer$Info", True, "getVendor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "Mixer$Info", True, "getVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "Port$Info", True, "Info", "(Class,String,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sound.sampled", "Port$Info", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "ReverbType", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sound.sampled", "UnsupportedAudioFileException", True, "UnsupportedAudioFileException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sound.sampled", "AudioFileFormat", "getByteLength", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFileFormat", "getFrameLength", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "AudioFormat", "(float,int,int,boolean,boolean)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "getChannels", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "getFrameRate", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "getFrameSize", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "getSampleRate", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "getSampleSizeInBits", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "isBigEndian", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioFormat", "matches", "(AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioInputStream", "getFrameLength", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getAudioFileFormat", "(File)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getAudioFileFormat", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getAudioFileFormat", "(URL)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getAudioFileTypes", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getAudioFileTypes", "(AudioInputStream)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getAudioInputStream", "(URL)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getClip", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getClip", "(Mixer$Info)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getMixer", "(Mixer$Info)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getMixerInfo", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getSourceLineInfo", "(Line$Info)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "getTargetLineInfo", "(Line$Info)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "isConversionSupported", "(AudioFormat$Encoding,AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "isConversionSupported", "(AudioFormat,AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "isFileTypeSupported", "(AudioFileFormat$Type)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "isFileTypeSupported", "(AudioFileFormat$Type,AudioInputStream)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "isLineSupported", "(Line$Info)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "write", "(AudioInputStream,AudioFileFormat$Type,File)", "summary", "df-generated"] + - ["javax.sound.sampled", "AudioSystem", "write", "(AudioInputStream,AudioFileFormat$Type,OutputStream)", "summary", "df-generated"] + - ["javax.sound.sampled", "BooleanControl", "getValue", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "BooleanControl", "setValue", "(boolean)", "summary", "df-generated"] + - ["javax.sound.sampled", "DataLine$Info", "getMaxBufferSize", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "DataLine$Info", "getMinBufferSize", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "DataLine$Info", "isFormatSupported", "(AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled", "FloatControl", "getMaximum", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "FloatControl", "getMinimum", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "FloatControl", "getPrecision", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "FloatControl", "getUpdatePeriod", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "FloatControl", "getValue", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "FloatControl", "setValue", "(float)", "summary", "df-generated"] + - ["javax.sound.sampled", "FloatControl", "shift", "(float,float,int)", "summary", "df-generated"] + - ["javax.sound.sampled", "Line$Info", "Info", "(Class)", "summary", "df-generated"] + - ["javax.sound.sampled", "Line$Info", "getLineClass", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "Line$Info", "matches", "(Line$Info)", "summary", "df-generated"] + - ["javax.sound.sampled", "LineEvent", "getFramePosition", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "Port$Info", "isSource", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "ReverbType", "getDecayTime", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "ReverbType", "getEarlyReflectionDelay", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "ReverbType", "getEarlyReflectionIntensity", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "ReverbType", "getLateReflectionDelay", "()", "summary", "df-generated"] + - ["javax.sound.sampled", "ReverbType", "getLateReflectionIntensity", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sound.sampled.spi.model.yml b/java/ql/lib/ext/generated/javax.sound.sampled.spi.model.yml new file mode 100644 index 000000000000..4fc6de066efc --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sound.sampled.spi.model.yml @@ -0,0 +1,31 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sound.sampled.spi", "AudioFileReader", "getAudioFileFormat", "(File)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileReader", "getAudioFileFormat", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileReader", "getAudioFileFormat", "(URL)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileReader", "getAudioInputStream", "(File)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileReader", "getAudioInputStream", "(InputStream)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileReader", "getAudioInputStream", "(URL)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileWriter", "getAudioFileTypes", "()", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileWriter", "getAudioFileTypes", "(AudioInputStream)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileWriter", "isFileTypeSupported", "(AudioFileFormat$Type)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileWriter", "isFileTypeSupported", "(AudioFileFormat$Type,AudioInputStream)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileWriter", "write", "(AudioInputStream,AudioFileFormat$Type,File)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "AudioFileWriter", "write", "(AudioInputStream,AudioFileFormat$Type,OutputStream)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "getAudioInputStream", "(AudioFormat$Encoding,AudioInputStream)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "getAudioInputStream", "(AudioFormat,AudioInputStream)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "getSourceEncodings", "()", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "getTargetEncodings", "()", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "getTargetEncodings", "(AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "getTargetFormats", "(AudioFormat$Encoding,AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "isConversionSupported", "(AudioFormat$Encoding,AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "isConversionSupported", "(AudioFormat,AudioFormat)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "isSourceEncodingSupported", "(AudioFormat$Encoding)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "FormatConversionProvider", "isTargetEncodingSupported", "(AudioFormat$Encoding)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "MixerProvider", "getMixer", "(Mixer$Info)", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "MixerProvider", "getMixerInfo", "()", "summary", "df-generated"] + - ["javax.sound.sampled.spi", "MixerProvider", "isMixerSupported", "(Mixer$Info)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sql.model.yml b/java/ql/lib/ext/generated/javax.sql.model.yml new file mode 100644 index 000000000000..1e285d91311f --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sql.model.yml @@ -0,0 +1,43 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.sql", "ConnectionEvent", True, "ConnectionEvent", "(PooledConnection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "ConnectionEvent", True, "ConnectionEvent", "(PooledConnection,SQLException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "ConnectionEvent", True, "ConnectionEvent", "(PooledConnection,SQLException)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "ConnectionEvent", True, "getSQLException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql", "RowSetEvent", True, "RowSetEvent", "(RowSet)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "StatementEvent", True, "StatementEvent", "(PooledConnection,PreparedStatement)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "StatementEvent", True, "StatementEvent", "(PooledConnection,PreparedStatement)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "StatementEvent", True, "StatementEvent", "(PooledConnection,PreparedStatement,SQLException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "StatementEvent", True, "StatementEvent", "(PooledConnection,PreparedStatement,SQLException)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "StatementEvent", True, "StatementEvent", "(PooledConnection,PreparedStatement,SQLException)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sql", "StatementEvent", True, "getSQLException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql", "StatementEvent", True, "getStatement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sql", "CommonDataSource", "createShardingKeyBuilder", "()", "summary", "df-generated"] + - ["javax.sql", "ConnectionPoolDataSource", "createPooledConnectionBuilder", "()", "summary", "df-generated"] + - ["javax.sql", "DataSource", "createConnectionBuilder", "()", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setAutoIncrement", "(int,boolean)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setCaseSensitive", "(int,boolean)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setCatalogName", "(int,String)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setColumnCount", "(int)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setColumnDisplaySize", "(int,int)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setColumnLabel", "(int,String)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setColumnName", "(int,String)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setColumnType", "(int,int)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setColumnTypeName", "(int,String)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setCurrency", "(int,boolean)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setNullable", "(int,int)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setPrecision", "(int,int)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setScale", "(int,int)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setSchemaName", "(int,String)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setSearchable", "(int,boolean)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setSigned", "(int,boolean)", "summary", "df-generated"] + - ["javax.sql", "RowSetMetaData", "setTableName", "(int,String)", "summary", "df-generated"] + - ["javax.sql", "XADataSource", "createXAConnectionBuilder", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sql.rowset.model.yml b/java/ql/lib/ext/generated/javax.sql.rowset.model.yml new file mode 100644 index 000000000000..3382f5b2cb2b --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sql.rowset.model.yml @@ -0,0 +1,143 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.sql.rowset", "BaseRowSet", True, "addRowSetListener", "(RowSetListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "getCommand", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "getDataSourceName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "getParams", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "getPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "getTypeMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "getUrl", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "getUsername", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setBytes", "(int,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setCommand", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setDataSourceName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setDate", "(int,Date)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setObject", "(int,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setPassword", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setString", "(int,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setTime", "(int,Time)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setTimestamp", "(int,Timestamp)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setTypeMap", "(Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setUrl", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", True, "setUsername", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "RowSetProvider", True, "newFactory", "(String,ClassLoader)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["javax.sql.rowset", "RowSetWarning", True, "RowSetWarning", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "RowSetWarning", True, "RowSetWarning", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "RowSetWarning", True, "RowSetWarning", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "RowSetWarning", True, "RowSetWarning", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "RowSetWarning", True, "RowSetWarning", "(String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset", "RowSetWarning", True, "getNextWarning", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sql.rowset", "BaseRowSet", "clearParameters", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getConcurrency", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getEscapeProcessing", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getFetchDirection", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getFetchSize", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getMaxFieldSize", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getMaxRows", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getQueryTimeout", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getShowDeleted", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getTransactionIsolation", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "getType", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "isReadOnly", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "removeRowSetListener", "(RowSetListener)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setArray", "(int,Array)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setAsciiStream", "(String,InputStream)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setAsciiStream", "(String,InputStream,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setAsciiStream", "(int,InputStream)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setAsciiStream", "(int,InputStream,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBigDecimal", "(String,BigDecimal)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBigDecimal", "(int,BigDecimal)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBinaryStream", "(String,InputStream)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBinaryStream", "(String,InputStream,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBinaryStream", "(int,InputStream)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBinaryStream", "(int,InputStream,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBlob", "(String,Blob)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBlob", "(String,InputStream)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBlob", "(String,InputStream,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBlob", "(int,Blob)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBlob", "(int,InputStream)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBlob", "(int,InputStream,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBoolean", "(String,boolean)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBoolean", "(int,boolean)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setByte", "(String,byte)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setByte", "(int,byte)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setBytes", "(String,byte[])", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setCharacterStream", "(String,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setCharacterStream", "(String,Reader,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setCharacterStream", "(int,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setCharacterStream", "(int,Reader,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setClob", "(String,Clob)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setClob", "(String,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setClob", "(String,Reader,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setClob", "(int,Clob)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setClob", "(int,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setClob", "(int,Reader,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setConcurrency", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setDate", "(String,Date)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setDate", "(String,Date,Calendar)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setDate", "(int,Date,Calendar)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setDouble", "(String,double)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setDouble", "(int,double)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setEscapeProcessing", "(boolean)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setFetchDirection", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setFetchSize", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setFloat", "(String,float)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setFloat", "(int,float)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setInt", "(String,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setInt", "(int,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setLong", "(String,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setLong", "(int,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setMaxFieldSize", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setMaxRows", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNCharacterStream", "(String,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNCharacterStream", "(String,Reader,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNCharacterStream", "(int,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNCharacterStream", "(int,Reader,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNClob", "(String,NClob)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNClob", "(String,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNClob", "(String,Reader,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNClob", "(int,NClob)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNClob", "(int,Reader)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNClob", "(int,Reader,long)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNString", "(String,String)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNString", "(int,String)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNull", "(String,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNull", "(String,int,String)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNull", "(int,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setNull", "(int,int,String)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setObject", "(String,Object)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setObject", "(String,Object,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setObject", "(String,Object,int,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setObject", "(int,Object,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setObject", "(int,Object,int,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setQueryTimeout", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setReadOnly", "(boolean)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setRef", "(int,Ref)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setRowId", "(String,RowId)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setRowId", "(int,RowId)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setSQLXML", "(String,SQLXML)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setSQLXML", "(int,SQLXML)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setShort", "(String,short)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setShort", "(int,short)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setShowDeleted", "(boolean)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setString", "(String,String)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setTime", "(String,Time)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setTime", "(String,Time,Calendar)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setTime", "(int,Time,Calendar)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setTimestamp", "(String,Timestamp)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setTimestamp", "(String,Timestamp,Calendar)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setTimestamp", "(int,Timestamp,Calendar)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setTransactionIsolation", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setType", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setURL", "(int,URL)", "summary", "df-generated"] + - ["javax.sql.rowset", "BaseRowSet", "setUnicodeStream", "(int,InputStream,int)", "summary", "df-generated"] + - ["javax.sql.rowset", "RowSetProvider", "newFactory", "()", "summary", "df-generated"] + - ["javax.sql.rowset", "RowSetWarning", "setNextWarning", "(RowSetWarning)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sql.rowset.serial.model.yml b/java/ql/lib/ext/generated/javax.sql.rowset.serial.model.yml new file mode 100644 index 000000000000..f460c1593125 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sql.rowset.serial.model.yml @@ -0,0 +1,29 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.sql.rowset.serial", "SQLInputImpl", True, "SQLInputImpl", "(Object[],Map)", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SQLInputImpl", True, "SQLInputImpl", "(Object[],Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SQLOutputImpl", True, "SQLOutputImpl", "(Vector,Map)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SQLOutputImpl", True, "SQLOutputImpl", "(Vector,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialArray", True, "SerialArray", "(Array)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialArray", True, "SerialArray", "(Array,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialBlob", True, "SerialBlob", "(Blob)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialClob", True, "SerialClob", "(Clob)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialDatalink", True, "SerialDatalink", "(URL)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialDatalink", True, "getDatalink", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialException", True, "SerialException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialJavaObject", True, "SerialJavaObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialJavaObject", True, "getObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialRef", True, "SerialRef", "(Ref)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.serial", "SerialStruct", True, "SerialStruct", "(Struct,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sql.rowset.serial", "SerialBlob", "SerialBlob", "(byte[])", "summary", "df-generated"] + - ["javax.sql.rowset.serial", "SerialClob", "SerialClob", "(char[])", "summary", "df-generated"] + - ["javax.sql.rowset.serial", "SerialJavaObject", "getFields", "()", "summary", "df-generated"] + - ["javax.sql.rowset.serial", "SerialStruct", "SerialStruct", "(SQLData,Map)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.sql.rowset.spi.model.yml b/java/ql/lib/ext/generated/javax.sql.rowset.spi.model.yml new file mode 100644 index 000000000000..4750381cd8c0 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.sql.rowset.spi.model.yml @@ -0,0 +1,33 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.sql.rowset.spi", "SyncFactory", True, "setLogger", "(Logger,Level)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactoryException", True, "SyncFactoryException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", True, "getProviderID", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", True, "getVendor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", True, "getVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProviderException", True, "SyncProviderException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProviderException", True, "SyncProviderException", "(SyncResolver)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProviderException", True, "getSyncResolver", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProviderException", True, "setSyncResolver", "(SyncResolver)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.sql.rowset.spi", "SyncFactory", "getInstance", "(String)", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactory", "getLogger", "()", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactory", "getRegisteredProviders", "()", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactory", "getSyncFactory", "()", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactory", "registerProvider", "(String)", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactory", "setJNDIContext", "(Context)", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactory", "setLogger", "(Logger)", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncFactory", "unregisterProvider", "(String)", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", "getDataSourceLock", "()", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", "getProviderGrade", "()", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", "getRowSetReader", "()", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", "getRowSetWriter", "()", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", "setDataSourceLock", "(int)", "summary", "df-generated"] + - ["javax.sql.rowset.spi", "SyncProvider", "supportsUpdatableView", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.tools.model.yml b/java/ql/lib/ext/generated/javax.tools.model.yml new file mode 100644 index 000000000000..d68f04440e73 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.tools.model.yml @@ -0,0 +1,68 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.tools", "DiagnosticCollector", False, "getDiagnostics", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "FileObject", True, "getCharContent", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "FileObject", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "FileObject", True, "openInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "FileObject", True, "openOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "FileObject", True, "openReader", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "FileObject", True, "openWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "FileObject", True, "toUri", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForInput", "(JavaFileManager$Location,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForInput", "(JavaFileManager$Location,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForInput", "(JavaFileManager$Location,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForOutput", "(JavaFileManager$Location,String,String,FileObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForOutput", "(JavaFileManager$Location,String,String,FileObject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForOutput", "(JavaFileManager$Location,String,String,FileObject)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForOutput", "(JavaFileManager$Location,String,String,FileObject)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getFileForOutput", "(JavaFileManager$Location,String,String,FileObject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getJavaFileForInput", "(JavaFileManager$Location,String,JavaFileObject$Kind)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getJavaFileForInput", "(JavaFileManager$Location,String,JavaFileObject$Kind)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getJavaFileForOutput", "(JavaFileManager$Location,String,JavaFileObject$Kind,FileObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getJavaFileForOutput", "(JavaFileManager$Location,String,JavaFileObject$Kind,FileObject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getJavaFileForOutput", "(JavaFileManager$Location,String,JavaFileObject$Kind,FileObject)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getJavaFileForOutput", "(JavaFileManager$Location,String,JavaFileObject$Kind,FileObject)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "getLocationForModule", "(JavaFileManager$Location,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "inferBinaryName", "(JavaFileManager$Location,JavaFileObject)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "inferModuleName", "(JavaFileManager$Location)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "JavaFileManager", True, "list", "(JavaFileManager$Location,String,Set,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", True, "getJavaFileObjects", "(Path[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", True, "getJavaFileObjectsFromPaths", "(Collection)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", True, "getJavaFileObjectsFromPaths", "(Iterable)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", True, "getJavaFileObjectsFromPaths", "(Iterable)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.tools", "StandardLocation", False, "locationFor", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.tools", "FileObject", "delete", "()", "summary", "df-generated"] + - ["javax.tools", "FileObject", "getLastModified", "()", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager$Location", "getName", "()", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager$Location", "isModuleOrientedLocation", "()", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager$Location", "isOutputLocation", "()", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "contains", "(JavaFileManager$Location,FileObject)", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "getClassLoader", "(JavaFileManager$Location)", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "getLocationForModule", "(JavaFileManager$Location,JavaFileObject)", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "getServiceLoader", "(JavaFileManager$Location,Class)", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "handleOption", "(String,Iterator)", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "hasLocation", "(JavaFileManager$Location)", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "isSameFile", "(FileObject,FileObject)", "summary", "df-generated"] + - ["javax.tools", "JavaFileManager", "listLocationsForModules", "(JavaFileManager$Location)", "summary", "df-generated"] + - ["javax.tools", "JavaFileObject", "getAccessLevel", "()", "summary", "df-generated"] + - ["javax.tools", "JavaFileObject", "getKind", "()", "summary", "df-generated"] + - ["javax.tools", "JavaFileObject", "getNestingKind", "()", "summary", "df-generated"] + - ["javax.tools", "JavaFileObject", "isNameCompatible", "(String,JavaFileObject$Kind)", "summary", "df-generated"] + - ["javax.tools", "OptionChecker", "isSupportedOption", "(String)", "summary", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", "asPath", "(FileObject)", "summary", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", "getLocationAsPaths", "(JavaFileManager$Location)", "summary", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", "setLocationForModule", "(JavaFileManager$Location,String,Collection)", "summary", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", "setLocationFromPaths", "(JavaFileManager$Location,Collection)", "summary", "df-generated"] + - ["javax.tools", "StandardJavaFileManager", "setPathFactory", "(StandardJavaFileManager$PathFactory)", "summary", "df-generated"] + - ["javax.tools", "Tool", "name", "()", "summary", "df-generated"] + - ["javax.tools", "ToolProvider", "getSystemDocumentationTool", "()", "summary", "df-generated"] + - ["javax.tools", "ToolProvider", "getSystemJavaCompiler", "()", "summary", "df-generated"] + - ["javax.tools", "ToolProvider", "getSystemToolClassLoader", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.transaction.xa.model.yml b/java/ql/lib/ext/generated/javax.transaction.xa.model.yml new file mode 100644 index 000000000000..ce267904e5de --- /dev/null +++ b/java/ql/lib/ext/generated/javax.transaction.xa.model.yml @@ -0,0 +1,12 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.transaction.xa", "XAException", True, "XAException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.transaction.xa", "XAException", "XAException", "(int)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.catalog.model.yml b/java/ql/lib/ext/generated/javax.xml.catalog.model.yml new file mode 100644 index 000000000000..bdce521147c2 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.catalog.model.yml @@ -0,0 +1,30 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.catalog", "CatalogException", True, "CatalogException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogException", True, "CatalogException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogException", True, "CatalogException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures$Builder", True, "with", "(CatalogFeatures$Feature,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures$Builder", True, "with", "(CatalogFeatures$Feature,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures", True, "get", "(CatalogFeatures$Feature)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogManager", False, "catalog", "(CatalogFeatures,URI[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogManager", False, "catalog", "(CatalogFeatures,URI[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogManager", False, "catalogResolver", "(Catalog)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogManager", False, "catalogResolver", "(CatalogFeatures,URI[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.catalog", "CatalogManager", False, "catalogResolver", "(CatalogFeatures,URI[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.catalog", "Catalog", "catalogs", "()", "summary", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures$Builder", "build", "()", "summary", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures$Feature", "defaultValue", "()", "summary", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures$Feature", "getPropertyName", "()", "summary", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures", "builder", "()", "summary", "df-generated"] + - ["javax.xml.catalog", "CatalogFeatures", "defaults", "()", "summary", "df-generated"] + - ["javax.xml.catalog", "GroupEntry$PreferType", "prefer", "(String)", "summary", "df-generated"] + - ["javax.xml.catalog", "GroupEntry$ResolveType", "getType", "(String)", "summary", "df-generated"] + - ["javax.xml.catalog", "GroupEntry$ResolveType", "isType", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dom.model.yml b/java/ql/lib/ext/generated/javax.xml.crypto.dom.model.yml new file mode 100644 index 000000000000..a2933bbf4c20 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.crypto.dom.model.yml @@ -0,0 +1,11 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.crypto.dom", "DOMCryptoContext", True, "getElementById", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dom", "DOMCryptoContext", True, "iterator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dom", "DOMCryptoContext", True, "setIdAttributeNS", "(Element,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dom", "DOMStructure", True, "DOMStructure", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dom", "DOMStructure", True, "getNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.dom.model.yml b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.dom.model.yml new file mode 100644 index 000000000000..719eccf3822e --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.dom.model.yml @@ -0,0 +1,26 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(Key,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(Key,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(Key,Node,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(Key,Node,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(Key,Node,Node)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(KeySelector,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(KeySelector,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(KeySelector,Node,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(KeySelector,Node,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "DOMSignContext", "(KeySelector,Node,Node)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "getNextSibling", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "setNextSibling", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMSignContext", True, "setParent", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMValidateContext", True, "DOMValidateContext", "(Key,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMValidateContext", True, "DOMValidateContext", "(Key,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMValidateContext", True, "DOMValidateContext", "(KeySelector,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMValidateContext", True, "DOMValidateContext", "(KeySelector,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMValidateContext", True, "getNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.dom", "DOMValidateContext", True, "setNode", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.keyinfo.model.yml b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.keyinfo.model.yml new file mode 100644 index 000000000000..87e2099b5d08 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.keyinfo.model.yml @@ -0,0 +1,31 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", True, "getMechanismType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "getInstance", "()", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "getURIDereferencer", "()", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "isFeatureSupported", "(String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newKeyInfo", "(List)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newKeyInfo", "(List,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newKeyName", "(String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newKeyValue", "(PublicKey)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newPGPData", "(byte[])", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newPGPData", "(byte[],List)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newPGPData", "(byte[],byte[],List)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newRetrievalMethod", "(String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newRetrievalMethod", "(String,String,List)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newX509Data", "(List)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "newX509IssuerSerial", "(String,BigInteger)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.keyinfo", "KeyInfoFactory", "unmarshalKeyInfo", "(XMLStructure)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.model.yml b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.model.yml new file mode 100644 index 000000000000..ced7da4a1ccf --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.model.yml @@ -0,0 +1,61 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.crypto.dsig", "TransformException", True, "TransformException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformException", True, "TransformException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformException", True, "TransformException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformException", True, "TransformException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getInstance", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getInstance", "(String,String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getInstance", "(String,String,Provider)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getInstance", "(String,String,Provider)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getInstance", "(String,String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getInstance", "(String,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getMechanismType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureException", True, "XMLSignatureException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureException", True, "XMLSignatureException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureException", True, "XMLSignatureException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureException", True, "XMLSignatureException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", True, "getKeyInfoFactory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", True, "getMechanismType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.crypto.dsig", "TransformService", "init", "(TransformParameterSpec)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", "init", "(XMLStructure,XMLCryptoContext)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "TransformService", "marshalParams", "(XMLStructure,XMLCryptoContext)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "getInstance", "()", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "getURIDereferencer", "()", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "isFeatureSupported", "(String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newCanonicalizationMethod", "(String,C14NMethodParameterSpec)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newCanonicalizationMethod", "(String,XMLStructure)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newDigestMethod", "(String,DigestMethodParameterSpec)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newManifest", "(List)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newManifest", "(List,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newReference", "(String,DigestMethod)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newReference", "(String,DigestMethod,List,Data,List,String,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newReference", "(String,DigestMethod,List,String,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newReference", "(String,DigestMethod,List,String,String,byte[])", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newSignatureMethod", "(String,SignatureMethodParameterSpec)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newSignatureProperties", "(List,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newSignatureProperty", "(List,String,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newSignedInfo", "(CanonicalizationMethod,SignatureMethod,List)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newSignedInfo", "(CanonicalizationMethod,SignatureMethod,List,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newTransform", "(String,TransformParameterSpec)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newTransform", "(String,XMLStructure)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newXMLObject", "(List,String,String,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newXMLSignature", "(SignedInfo,KeyInfo)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "newXMLSignature", "(SignedInfo,KeyInfo,List,String,String)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "unmarshalXMLSignature", "(XMLStructure)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig", "XMLSignatureFactory", "unmarshalXMLSignature", "(XMLValidateContext)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.spec.model.yml b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.spec.model.yml new file mode 100644 index 000000000000..c93065e77e35 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.crypto.dsig.spec.model.yml @@ -0,0 +1,33 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.crypto.dsig.spec", "ExcC14NParameterSpec", False, "ExcC14NParameterSpec", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "ExcC14NParameterSpec", False, "getPrefixList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "RSAPSSParameterSpec", False, "RSAPSSParameterSpec", "(PSSParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "RSAPSSParameterSpec", False, "getPSSParameterSpec", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathFilter2ParameterSpec", False, "XPathFilter2ParameterSpec", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathFilter2ParameterSpec", False, "getXPathList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathFilterParameterSpec", False, "XPathFilterParameterSpec", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathFilterParameterSpec", False, "XPathFilterParameterSpec", "(String,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathFilterParameterSpec", False, "XPathFilterParameterSpec", "(String,Map)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathFilterParameterSpec", False, "getNamespaceMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathFilterParameterSpec", False, "getXPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "XPathType", "(String,XPathType$Filter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "XPathType", "(String,XPathType$Filter)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "XPathType", "(String,XPathType$Filter,Map)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "XPathType", "(String,XPathType$Filter,Map)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "XPathType", "(String,XPathType$Filter,Map)", "", "Argument[2].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "getExpression", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "getFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XPathType", True, "getNamespaceMap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XSLTTransformParameterSpec", False, "XSLTTransformParameterSpec", "(XMLStructure)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "XSLTTransformParameterSpec", False, "getStylesheet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.crypto.dsig.spec", "HMACParameterSpec", "HMACParameterSpec", "(int)", "summary", "df-generated"] + - ["javax.xml.crypto.dsig.spec", "HMACParameterSpec", "getOutputLength", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.model.yml b/java/ql/lib/ext/generated/javax.xml.crypto.model.yml new file mode 100644 index 000000000000..ec58522b0ab7 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.crypto.model.yml @@ -0,0 +1,63 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.crypto", "AlgorithmMethod", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "KeySelector", True, "singletonKeySelector", "(Key)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "KeySelectorException", True, "KeySelectorException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "KeySelectorException", True, "KeySelectorException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "KeySelectorException", True, "KeySelectorException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "KeySelectorException", True, "KeySelectorException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "MarshalException", True, "MarshalException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "MarshalException", True, "MarshalException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "MarshalException", True, "MarshalException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "MarshalException", True, "MarshalException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "NoSuchMechanismException", True, "NoSuchMechanismException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "NoSuchMechanismException", True, "NoSuchMechanismException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "NoSuchMechanismException", True, "NoSuchMechanismException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "NoSuchMechanismException", True, "NoSuchMechanismException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "OctetStreamData", True, "OctetStreamData", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "OctetStreamData", True, "OctetStreamData", "(InputStream,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "OctetStreamData", True, "OctetStreamData", "(InputStream,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "OctetStreamData", True, "OctetStreamData", "(InputStream,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "OctetStreamData", True, "getMimeType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "OctetStreamData", True, "getOctetStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "OctetStreamData", True, "getURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "URIReferenceException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "URIReferenceException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "URIReferenceException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "URIReferenceException", "(String,Throwable,URIReference)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "URIReferenceException", "(String,Throwable,URIReference)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "URIReferenceException", "(String,Throwable,URIReference)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "URIReferenceException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "URIReferenceException", True, "getURIReference", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "get", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "getBaseURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "getDefaultNamespacePrefix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "getKeySelector", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "getNamespacePrefix", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "getNamespacePrefix", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "getProperty", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "getURIDereferencer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "put", "(Object,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "put", "(Object,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "put", "(Object,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "putNamespacePrefix", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "putNamespacePrefix", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "putNamespacePrefix", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "setBaseURI", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "setDefaultNamespacePrefix", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "setKeySelector", "(KeySelector)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "setProperty", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "setProperty", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "setProperty", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.crypto", "XMLCryptoContext", True, "setURIDereferencer", "(URIDereferencer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.crypto", "KeySelector", "select", "(KeyInfo,KeySelector$Purpose,AlgorithmMethod,XMLCryptoContext)", "summary", "df-generated"] + - ["javax.xml.crypto", "KeySelectorResult", "getKey", "()", "summary", "df-generated"] + - ["javax.xml.crypto", "XMLStructure", "isFeatureSupported", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.datatype.model.yml b/java/ql/lib/ext/generated/javax.xml.datatype.model.yml new file mode 100644 index 000000000000..ea6d6f45c786 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.datatype.model.yml @@ -0,0 +1,97 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.datatype", "DatatypeConfigurationException", True, "DatatypeConfigurationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.datatype", "DatatypeConfigurationException", True, "DatatypeConfigurationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.datatype", "DatatypeConfigurationException", True, "DatatypeConfigurationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.datatype", "DatatypeConfigurationException", True, "DatatypeConfigurationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.datatype", "DatatypeConstants$Field", "getId", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDefaultInstance", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDuration", "(String)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDuration", "(boolean,BigInteger,BigInteger,BigInteger,BigInteger,BigInteger,BigDecimal)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDuration", "(boolean,int,int,int,int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDuration", "(long)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationDayTime", "(String)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationDayTime", "(boolean,BigInteger,BigInteger,BigInteger,BigInteger)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationDayTime", "(boolean,int,int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationDayTime", "(long)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationYearMonth", "(String)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationYearMonth", "(boolean,BigInteger,BigInteger)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationYearMonth", "(boolean,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newDurationYearMonth", "(long)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newInstance", "(String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendar", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendar", "(BigInteger,int,int,int,int,int,BigDecimal,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendar", "(GregorianCalendar)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendar", "(String)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendar", "(int,int,int,int,int,int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendarDate", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendarTime", "(int,int,int,BigDecimal,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendarTime", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "DatatypeFactory", "newXMLGregorianCalendarTime", "(int,int,int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "add", "(Duration)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "addTo", "(Calendar)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "addTo", "(Date)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "compare", "(Duration)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getDays", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getField", "(DatatypeConstants$Field)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getHours", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getMinutes", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getMonths", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getSeconds", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getSign", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getTimeInMillis", "(Calendar)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getTimeInMillis", "(Date)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getXMLSchemaType", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "getYears", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "isLongerThan", "(Duration)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "isSet", "(DatatypeConstants$Field)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "isShorterThan", "(Duration)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "multiply", "(BigDecimal)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "multiply", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "negate", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "normalizeWith", "(Calendar)", "summary", "df-generated"] + - ["javax.xml.datatype", "Duration", "subtract", "(Duration)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "add", "(Duration)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "clear", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "compare", "(XMLGregorianCalendar)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getDay", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getEon", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getEonAndYear", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getFractionalSecond", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getHour", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getMillisecond", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getMinute", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getMonth", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getSecond", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getTimeZone", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getTimezone", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getXMLSchemaType", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "getYear", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "isValid", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "normalize", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "reset", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setDay", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setFractionalSecond", "(BigDecimal)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setHour", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setMillisecond", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setMinute", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setMonth", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setSecond", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setTime", "(int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setTime", "(int,int,int,BigDecimal)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setTime", "(int,int,int,int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setTimezone", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setYear", "(BigInteger)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "setYear", "(int)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "toGregorianCalendar", "()", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "toGregorianCalendar", "(TimeZone,Locale,XMLGregorianCalendar)", "summary", "df-generated"] + - ["javax.xml.datatype", "XMLGregorianCalendar", "toXMLFormat", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.namespace.model.yml b/java/ql/lib/ext/generated/javax.xml.namespace.model.yml new file mode 100644 index 000000000000..452e79f45bd8 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.namespace.model.yml @@ -0,0 +1,16 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.namespace", "QName", True, "QName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "QName", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "QName", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "QName", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "QName", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "QName", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "getLocalPart", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "getNamespaceURI", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "getPrefix", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.namespace", "QName", True, "valueOf", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.parsers.model.yml b/java/ql/lib/ext/generated/javax.xml.parsers.model.yml new file mode 100644 index 000000000000..885b668c1800 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.parsers.model.yml @@ -0,0 +1,93 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.parsers", "DocumentBuilder", True, "parse", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", True, "parse", "(InputStream)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", True, "parse", "(InputStream,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", True, "parse", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.parsers", "FactoryConfigurationError", True, "FactoryConfigurationError", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "FactoryConfigurationError", True, "FactoryConfigurationError", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "FactoryConfigurationError", True, "FactoryConfigurationError", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "FactoryConfigurationError", True, "FactoryConfigurationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "FactoryConfigurationError", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.parsers", "ParserConfigurationException", True, "ParserConfigurationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(File,DefaultHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(File,HandlerBase)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(InputStream,DefaultHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(InputStream,DefaultHandler,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(InputStream,HandlerBase)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(InputStream,HandlerBase,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(String,DefaultHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.parsers", "SAXParser", True, "parse", "(String,HandlerBase)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.parsers", "DocumentBuilder", "getDOMImplementation", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "getSchema", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "isNamespaceAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "isValidating", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "isXIncludeAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "newDocument", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "parse", "(InputSource)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "reset", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "setEntityResolver", "(EntityResolver)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilder", "setErrorHandler", "(ErrorHandler)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "getAttribute", "(String)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "getFeature", "(String)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "getSchema", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "isCoalescing", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "isExpandEntityReferences", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "isIgnoringComments", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "isIgnoringElementContentWhitespace", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "isNamespaceAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "isValidating", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "isXIncludeAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "newDefaultInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "newDefaultNSInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "newDocumentBuilder", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "newInstance", "(String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "newNSInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "newNSInstance", "(String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setAttribute", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setCoalescing", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setExpandEntityReferences", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setFeature", "(String,boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setIgnoringComments", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setIgnoringElementContentWhitespace", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setNamespaceAware", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setSchema", "(Schema)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setValidating", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "DocumentBuilderFactory", "setXIncludeAware", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "getParser", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "getSchema", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "getXMLReader", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "isNamespaceAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "isValidating", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "isXIncludeAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "parse", "(InputSource,DefaultHandler)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "parse", "(InputSource,HandlerBase)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "reset", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParser", "setProperty", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "getFeature", "(String)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "getSchema", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "isNamespaceAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "isValidating", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "isXIncludeAware", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "newDefaultInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "newDefaultNSInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "newInstance", "(String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "newNSInstance", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "newNSInstance", "(String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "newSAXParser", "()", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "setFeature", "(String,boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "setNamespaceAware", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "setSchema", "(Schema)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "setValidating", "(boolean)", "summary", "df-generated"] + - ["javax.xml.parsers", "SAXParserFactory", "setXIncludeAware", "(boolean)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.stream.model.yml b/java/ql/lib/ext/generated/javax.xml.stream.model.yml new file mode 100644 index 000000000000..86ce369cf518 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.stream.model.yml @@ -0,0 +1,156 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.stream", "FactoryConfigurationError", True, "FactoryConfigurationError", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "FactoryConfigurationError", True, "FactoryConfigurationError", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "FactoryConfigurationError", True, "FactoryConfigurationError", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "FactoryConfigurationError", True, "FactoryConfigurationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "FactoryConfigurationError", True, "FactoryConfigurationError", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "FactoryConfigurationError", True, "FactoryConfigurationError", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "FactoryConfigurationError", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", True, "newFactory", "(String,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", True, "newInstance", "(String,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLEventReader", True, "nextEvent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLEventReader", True, "nextTag", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLEventReader", True, "peek", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", True, "newFactory", "(String,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", True, "newInstance", "(String,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", True, "newFactory", "(String,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", True, "newInstance", "(String,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String,Location)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String,Location)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String,Location,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String,Location,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String,Location,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "XMLStreamException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamException", True, "getNestedException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", True, "getElementText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", True, "getNamespaceContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", True, "getText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.stream", "XMLEventFactory", "createAttribute", "(QName,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createAttribute", "(String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createAttribute", "(String,String,String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createCData", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createCharacters", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createComment", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createDTD", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createEndDocument", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createEndElement", "(QName,Iterator)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createEndElement", "(String,String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createEndElement", "(String,String,String,Iterator)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createEntityReference", "(String,EntityDeclaration)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createIgnorableSpace", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createNamespace", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createNamespace", "(String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createProcessingInstruction", "(String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createSpace", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartDocument", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartDocument", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartDocument", "(String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartDocument", "(String,String,boolean)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartElement", "(QName,Iterator,Iterator)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartElement", "(String,String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartElement", "(String,String,String,Iterator,Iterator)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "createStartElement", "(String,String,String,Iterator,Iterator,NamespaceContext)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "newDefaultFactory", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "newFactory", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventFactory", "setLocation", "(Location)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventReader", "close", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventReader", "getElementText", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLEventReader", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createFilteredReader", "(XMLEventReader,EventFilter)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createFilteredReader", "(XMLStreamReader,StreamFilter)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLEventReader", "(InputStream)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLEventReader", "(InputStream,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLEventReader", "(Reader)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLEventReader", "(Source)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLEventReader", "(String,InputStream)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLEventReader", "(String,Reader)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLEventReader", "(XMLStreamReader)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLStreamReader", "(InputStream)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLStreamReader", "(InputStream,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLStreamReader", "(Reader)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLStreamReader", "(Source)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLStreamReader", "(String,InputStream)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "createXMLStreamReader", "(String,Reader)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "getEventAllocator", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "getXMLReporter", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "getXMLResolver", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "isPropertySupported", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "newDefaultFactory", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "newFactory", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "setEventAllocator", "(XMLEventAllocator)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "setProperty", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "setXMLReporter", "(XMLReporter)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLInputFactory", "setXMLResolver", "(XMLResolver)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLEventWriter", "(OutputStream)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLEventWriter", "(OutputStream,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLEventWriter", "(Result)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLEventWriter", "(Writer)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLStreamWriter", "(OutputStream)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLStreamWriter", "(OutputStream,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLStreamWriter", "(Result)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "createXMLStreamWriter", "(Writer)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "isPropertySupported", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "newDefaultFactory", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "newFactory", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLOutputFactory", "setProperty", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLResolver", "resolveEntity", "(String,String,String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "close", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributeCount", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributeLocalName", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributeName", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributeNamespace", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributePrefix", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributeType", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributeValue", "(String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getAttributeValue", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getCharacterEncodingScheme", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getEncoding", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getEventType", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getLocalName", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getLocation", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getName", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getNamespaceCount", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getNamespacePrefix", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getNamespaceURI", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getNamespaceURI", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getNamespaceURI", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getPIData", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getPITarget", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getPrefix", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getTextCharacters", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getTextCharacters", "(int,char[],int,int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getTextLength", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getTextStart", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "getVersion", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "hasName", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "hasNext", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "hasText", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "isAttributeSpecified", "(int)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "isCharacters", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "isEndElement", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "isStandalone", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "isStartElement", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "isWhiteSpace", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "next", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "nextTag", "()", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "require", "(int,String,String)", "summary", "df-generated"] + - ["javax.xml.stream", "XMLStreamReader", "standaloneSet", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.stream.util.model.yml b/java/ql/lib/ext/generated/javax.xml.stream.util.model.yml new file mode 100644 index 000000000000..e4485a47e756 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.stream.util.model.yml @@ -0,0 +1,12 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.stream.util", "EventReaderDelegate", True, "EventReaderDelegate", "(XMLEventReader)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream.util", "EventReaderDelegate", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream.util", "EventReaderDelegate", True, "setParent", "(XMLEventReader)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream.util", "StreamReaderDelegate", True, "StreamReaderDelegate", "(XMLStreamReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.stream.util", "StreamReaderDelegate", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.stream.util", "StreamReaderDelegate", True, "setParent", "(XMLStreamReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.transform.dom.model.yml b/java/ql/lib/ext/generated/javax.xml.transform.dom.model.yml new file mode 100644 index 000000000000..de450418d67f --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.transform.dom.model.yml @@ -0,0 +1,23 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node,Node,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node,Node,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node,Node,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "DOMResult", "(Node,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "getNextSibling", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "getNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "setNextSibling", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMResult", True, "setNode", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMSource", True, "DOMSource", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMSource", True, "DOMSource", "(Node,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMSource", True, "DOMSource", "(Node,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMSource", True, "getNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.dom", "DOMSource", True, "setNode", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.transform.model.yml b/java/ql/lib/ext/generated/javax.xml.transform.model.yml new file mode 100644 index 000000000000..589ccbc1d364 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.transform.model.yml @@ -0,0 +1,74 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.transform", "Result", True, "getSystemId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "Result", True, "setSystemId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "Source", True, "getSystemId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "Source", True, "setSystemId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String,SourceLocator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String,SourceLocator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String,SourceLocator,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String,SourceLocator,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String,SourceLocator,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerConfigurationException", True, "TransformerConfigurationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String,SourceLocator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String,SourceLocator)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String,SourceLocator,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String,SourceLocator,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String,SourceLocator,Throwable)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "TransformerException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "getLocationAsString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "getLocator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "getMessageAndLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerException", True, "setLocator", "(SourceLocator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerFactoryConfigurationError", True, "TransformerFactoryConfigurationError", "(Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerFactoryConfigurationError", True, "TransformerFactoryConfigurationError", "(Exception,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerFactoryConfigurationError", True, "TransformerFactoryConfigurationError", "(Exception,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerFactoryConfigurationError", True, "TransformerFactoryConfigurationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform", "TransformerFactoryConfigurationError", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "URIResolver", True, "resolve", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "URIResolver", True, "resolve", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform", "URIResolver", True, "resolve", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.transform", "Source", "isEmpty", "()", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "clearParameters", "()", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "getErrorListener", "()", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "getOutputProperties", "()", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "getOutputProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "getParameter", "(String)", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "getURIResolver", "()", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "reset", "()", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "setErrorListener", "(ErrorListener)", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "setOutputProperties", "(Properties)", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "setOutputProperty", "(String,String)", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "setParameter", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "setURIResolver", "(URIResolver)", "summary", "df-generated"] + - ["javax.xml.transform", "Transformer", "transform", "(Source,Result)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "getAssociatedStylesheet", "(Source,String,String,String)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "getAttribute", "(String)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "getErrorListener", "()", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "getFeature", "(String)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "getURIResolver", "()", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "newDefaultInstance", "()", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "newInstance", "(String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "newTemplates", "(Source)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "newTransformer", "()", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "newTransformer", "(Source)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "setAttribute", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "setErrorListener", "(ErrorListener)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "setFeature", "(String,boolean)", "summary", "df-generated"] + - ["javax.xml.transform", "TransformerFactory", "setURIResolver", "(URIResolver)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.transform.sax.model.yml b/java/ql/lib/ext/generated/javax.xml.transform.sax.model.yml new file mode 100644 index 000000000000..cd02ad21d937 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.transform.sax.model.yml @@ -0,0 +1,24 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.transform.sax", "SAXResult", True, "SAXResult", "(ContentHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.sax", "SAXResult", True, "getHandler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.sax", "SAXResult", True, "getLexicalHandler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.sax", "SAXResult", True, "setHandler", "(ContentHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.sax", "SAXResult", True, "setLexicalHandler", "(LexicalHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.sax", "SAXSource", True, "getXMLReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.sax", "SAXSource", True, "setInputSource", "(InputSource)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.sax", "SAXSource", True, "setXMLReader", "(XMLReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.transform.sax", "SAXTransformerFactory", "newTemplatesHandler", "()", "summary", "df-generated"] + - ["javax.xml.transform.sax", "SAXTransformerFactory", "newTransformerHandler", "()", "summary", "df-generated"] + - ["javax.xml.transform.sax", "SAXTransformerFactory", "newTransformerHandler", "(Source)", "summary", "df-generated"] + - ["javax.xml.transform.sax", "SAXTransformerFactory", "newTransformerHandler", "(Templates)", "summary", "df-generated"] + - ["javax.xml.transform.sax", "SAXTransformerFactory", "newXMLFilter", "(Source)", "summary", "df-generated"] + - ["javax.xml.transform.sax", "SAXTransformerFactory", "newXMLFilter", "(Templates)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.transform.stax.model.yml b/java/ql/lib/ext/generated/javax.xml.transform.stax.model.yml new file mode 100644 index 000000000000..25ca3d5c8cf1 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.transform.stax.model.yml @@ -0,0 +1,14 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.transform.stax", "StAXResult", True, "StAXResult", "(XMLEventWriter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stax", "StAXResult", True, "StAXResult", "(XMLStreamWriter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stax", "StAXResult", True, "getXMLEventWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.stax", "StAXResult", True, "getXMLStreamWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.stax", "StAXSource", True, "StAXSource", "(XMLEventReader)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stax", "StAXSource", True, "StAXSource", "(XMLStreamReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stax", "StAXSource", True, "getXMLEventReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.stax", "StAXSource", True, "getXMLStreamReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.transform.stream.model.yml b/java/ql/lib/ext/generated/javax.xml.transform.stream.model.yml new file mode 100644 index 000000000000..c7d28706810c --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.transform.stream.model.yml @@ -0,0 +1,21 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.transform.stream", "StreamResult", True, "StreamResult", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "StreamResult", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "StreamResult", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "StreamResult", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "getWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "setOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "setSystemId", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamResult", True, "setWriter", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamSource", True, "getPublicId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamSource", True, "getReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamSource", True, "setInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamSource", True, "setPublicId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamSource", True, "setReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.transform.stream", "StreamSource", True, "setSystemId", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.validation.model.yml b/java/ql/lib/ext/generated/javax.xml.validation.model.yml new file mode 100644 index 000000000000..328462437dcd --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.validation.model.yml @@ -0,0 +1,60 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.validation", "SchemaFactoryConfigurationError", False, "SchemaFactoryConfigurationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.validation", "SchemaFactoryConfigurationError", False, "SchemaFactoryConfigurationError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.validation", "SchemaFactoryConfigurationError", False, "SchemaFactoryConfigurationError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.validation", "SchemaFactoryConfigurationError", False, "SchemaFactoryConfigurationError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.validation", "Validator", True, "validate", "(Source)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.validation", "Schema", "newValidator", "()", "summary", "df-generated"] + - ["javax.xml.validation", "Schema", "newValidatorHandler", "()", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "getErrorHandler", "()", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "getFeature", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "getResourceResolver", "()", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "isSchemaLanguageSupported", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newDefaultInstance", "()", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newInstance", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newInstance", "(String,String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newSchema", "()", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newSchema", "(File)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newSchema", "(Source)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newSchema", "(Source[])", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "newSchema", "(URL)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "setErrorHandler", "(ErrorHandler)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "setFeature", "(String,boolean)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "setProperty", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactory", "setResourceResolver", "(LSResourceResolver)", "summary", "df-generated"] + - ["javax.xml.validation", "SchemaFactoryLoader", "newFactory", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "TypeInfoProvider", "getAttributeTypeInfo", "(int)", "summary", "df-generated"] + - ["javax.xml.validation", "TypeInfoProvider", "getElementTypeInfo", "()", "summary", "df-generated"] + - ["javax.xml.validation", "TypeInfoProvider", "isIdAttribute", "(int)", "summary", "df-generated"] + - ["javax.xml.validation", "TypeInfoProvider", "isSpecified", "(int)", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "getErrorHandler", "()", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "getFeature", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "getResourceResolver", "()", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "reset", "()", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "setErrorHandler", "(ErrorHandler)", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "setFeature", "(String,boolean)", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "setProperty", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "setResourceResolver", "(LSResourceResolver)", "summary", "df-generated"] + - ["javax.xml.validation", "Validator", "validate", "(Source,Result)", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "getContentHandler", "()", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "getErrorHandler", "()", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "getFeature", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "getProperty", "(String)", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "getResourceResolver", "()", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "getTypeInfoProvider", "()", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "setContentHandler", "(ContentHandler)", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "setErrorHandler", "(ErrorHandler)", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "setFeature", "(String,boolean)", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "setProperty", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.validation", "ValidatorHandler", "setResourceResolver", "(LSResourceResolver)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.xml.xpath.model.yml b/java/ql/lib/ext/generated/javax.xml.xpath.model.yml new file mode 100644 index 000000000000..4cef7e1a19e2 --- /dev/null +++ b/java/ql/lib/ext/generated/javax.xml.xpath.model.yml @@ -0,0 +1,37 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["javax.xml.xpath", "XPathException", True, "XPathException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathException", True, "XPathException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathExpression", True, "evaluateExpression", "(InputSource)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathExpression", True, "evaluateExpression", "(InputSource,Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathExpression", True, "evaluateExpression", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathExpression", True, "evaluateExpression", "(Object,Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathExpressionException", True, "XPathExpressionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathExpressionException", True, "XPathExpressionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathFactoryConfigurationException", True, "XPathFactoryConfigurationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathFactoryConfigurationException", True, "XPathFactoryConfigurationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathFunctionException", True, "XPathFunctionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["javax.xml.xpath", "XPathFunctionException", True, "XPathFunctionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["javax.xml.xpath", "XPath", "evaluateExpression", "(String,InputSource)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPath", "evaluateExpression", "(String,InputSource,Class)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPath", "evaluateExpression", "(String,Object)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPath", "evaluateExpression", "(String,Object,Class)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathEvaluationResult$XPathResultType", "getQNameType", "(Class)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "getFeature", "(String)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "isObjectModelSupported", "(String)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "newDefaultInstance", "()", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "newInstance", "()", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "newInstance", "(String)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "newInstance", "(String,String,ClassLoader)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "newXPath", "()", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "setFeature", "(String,boolean)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "setXPathFunctionResolver", "(XPathFunctionResolver)", "summary", "df-generated"] + - ["javax.xml.xpath", "XPathFactory", "setXPathVariableResolver", "(XPathVariableResolver)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml b/java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml new file mode 100644 index 000000000000..5cfddbd9303c --- /dev/null +++ b/java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml @@ -0,0 +1,10 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["jdk.internal.access.foreign", "UnmapperProxy", "address", "()", "summary", "df-generated"] + - ["jdk.internal.access.foreign", "UnmapperProxy", "fileDescriptor", "()", "summary", "df-generated"] + - ["jdk.internal.access.foreign", "UnmapperProxy", "isSync", "()", "summary", "df-generated"] + - ["jdk.internal.access.foreign", "UnmapperProxy", "unmap", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jdk.internal.access.model.yml b/java/ql/lib/ext/generated/jdk.internal.access.model.yml new file mode 100644 index 000000000000..37d803493035 --- /dev/null +++ b/java/ql/lib/ext/generated/jdk.internal.access.model.yml @@ -0,0 +1,243 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", True, "registerCleanup", "(FileDescriptor,PhantomCleanable)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaIOFilePermissionAccess", True, "newPermPlusAltPath", "(FilePermission)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaIOFilePermissionAccess", True, "newPermUsingAltPath", "(FilePermission)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaIORandomAccessFileAccess", True, "openAndDelete", "(File,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "addEnableNativeAccess", "(Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "addOpensToAllUnnamed", "(Module,Set,Set)", "", "Argument[1].Element", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "addOpensToAllUnnamed", "(Module,Set,Set)", "", "Argument[2].Element", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "createOrGetClassLoaderValueMap", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "defineModule", "(ClassLoader,ModuleDescriptor,URI)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "defineModule", "(ClassLoader,ModuleDescriptor,URI)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "definePackage", "(ClassLoader,String,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "definePackage", "(ClassLoader,String,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "defineUnnamedModule", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "getBytesNoRepl", "(String,Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "getBytesUTF8NoRepl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "getServicesCatalog", "(ModuleLayer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "layers", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "layers", "(ModuleLayer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "newStringNoRepl", "(byte[],Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "newStringUTF8NoRepl", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "newThreadWithAcc", "(Runnable,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "newThreadWithAcc", "(Runnable,AccessControlContext)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "setCause", "(Throwable,Throwable)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "stringConcatHelper", "(String,MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", True, "stringConcatHelper", "(String,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "collectCoordinates", "(VarHandle,int,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "dropCoordinates", "(VarHandle,int,Class[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "filterCoordinates", "(VarHandle,int,MethodHandle[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "filterValue", "(VarHandle,MethodHandle,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "getMethodDescriptor", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "getMethodType", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "getName", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "insertCoordinates", "(VarHandle,int,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "nativeMethodHandle", "(NativeEntryPoint,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "nativeMethodHandle", "(NativeEntryPoint,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "permuteCoordinates", "(VarHandle,List,int[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", True, "permuteCoordinates", "(VarHandle,List,int[])", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newConfiguration", "(ModuleFinder,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String,Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String,Set)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String,Set)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleBuilder", "(String,boolean,Set)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleBuilder", "(String,boolean,Set)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[3].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[4].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[5].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[6].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[7].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[8].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[9]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String,Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String,Set)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String,Set)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newProvides", "(String,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newProvides", "(String,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newRequires", "(Set,String,ModuleDescriptor$Version)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newRequires", "(Set,String,ModuleDescriptor$Version)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "newRequires", "(Set,String,ModuleDescriptor$Version)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", True, "packages", "(ModuleDescriptor$Builder)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "copyConstructor", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "copyField", "(Field)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "copyMethod", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorAccessor", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorAnnotations", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorParameterAnnotations", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorSignature", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "getExecutableSharedParameterTypes", "(Executable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "getMethodAccessor", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "getRoot", "(AccessibleObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "leafCopyMethod", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[5]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[6]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[7]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "setConstructorAccessor", "(Constructor,ConstructorAccessor)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", True, "setMethodAccessor", "(Method,MethodAccessor)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetHttpCookieAccess", True, "header", "(HttpCookie)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetHttpCookieAccess", True, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetInetAddressAccess", True, "addressBytes", "(Inet6Address)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetInetAddressAccess", True, "getByName", "(String,InetAddress)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetInetAddressAccess", True, "getOriginalHostName", "(InetAddress)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetURLAccess", True, "getHandler", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetUriAccess", True, "create", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNetUriAccess", True, "create", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "acquireScope", "(Buffer,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "bufferSegment", "(Buffer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "getBufferBase", "(ByteBuffer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "newDirectByteBuffer", "(long,int,Object,MemorySegmentProxy)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "newDirectByteBuffer", "(long,int,Object,MemorySegmentProxy)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "newHeapByteBuffer", "(byte[],int,int,MemorySegmentProxy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "newHeapByteBuffer", "(byte[],int,int,MemorySegmentProxy)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "newMappedByteBuffer", "(UnmapperProxy,long,int,Object,MemorySegmentProxy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "newMappedByteBuffer", "(UnmapperProxy,long,int,Object,MemorySegmentProxy)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", True, "newMappedByteBuffer", "(UnmapperProxy,long,int,Object,MemorySegmentProxy)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecurityAccess$ProtectionDomainCache", True, "get", "(ProtectionDomain)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecurityAccess$ProtectionDomainCache", True, "put", "(ProtectionDomain,PermissionCollection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecurityAccess$ProtectionDomainCache", True, "put", "(ProtectionDomain,PermissionCollection)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecurityAccess", True, "doIntersectionPrivilege", "(PrivilegedAction,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecurityAccess", True, "doIntersectionPrivilege", "(PrivilegedAction,AccessControlContext,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecurityAccess", True, "getProtectDomains", "(AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initSign", "(Signature,PrivateKey,AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initSign", "(Signature,PrivateKey,AlgorithmParameterSpec,SecureRandom)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initSign", "(Signature,PrivateKey,AlgorithmParameterSpec,SecureRandom)", "", "Argument[3]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initVerify", "(Signature,PublicKey,AlgorithmParameterSpec)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initVerify", "(Signature,PublicKey,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilCollectionAccess", True, "listFromTrustedArray", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilCollectionAccess", True, "listFromTrustedArrayNullsAllowed", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "entryFor", "(JarFile,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "entryNames", "(JarFile,CodeSource[])", "", "Argument[1].ArrayElement", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSources", "(JarFile,URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSources", "(JarFile,URL)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSources", "(JarFile,URL)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getManifestDigests", "(JarFile)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", True, "getTrustedAttributes", "(Manifest,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "getBundle", "(String,Locale,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "getBundle", "(String,Locale,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "getParent", "(ResourceBundle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "setLocale", "(ResourceBundle,Locale)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "setName", "(ResourceBundle,String)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "setParent", "(ResourceBundle,ResourceBundle)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["jdk.internal.access", "JavaBeansAccess", "getConstructorPropertiesValue", "(Constructor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaBeansAccess", "getReadMethod", "(Class,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOAccess", "charset", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOAccess", "console", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "close", "(FileDescriptor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "get", "(FileDescriptor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "getAppend", "(FileDescriptor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "getHandle", "(FileDescriptor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "registerCleanup", "(FileDescriptor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "set", "(FileDescriptor,int)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "setAppend", "(FileDescriptor,boolean)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "setHandle", "(FileDescriptor,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "unregisterCleanup", "(FileDescriptor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addEnableNativeAccessAllUnnamed", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addExports", "(Module,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addExports", "(Module,String,Module)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addExportsToAllUnnamed", "(Module,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addNonExportedPackages", "(ModuleLayer)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addOpens", "(Module,String,Module)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addOpensToAllUnnamed", "(Module,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addReads", "(Module,Module)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addReadsAllUnnamed", "(Module)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "addUses", "(Module,Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "bindToLoader", "(ModuleLayer,ClassLoader)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "blockedOn", "(Interruptible)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "casAnnotationType", "(Class,AnnotationType,AnnotationType)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "classData", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "decodeASCII", "(byte[],int,char[],int,int)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "defineClass", "(ClassLoader,Class,String,byte[],ProtectionDomain,boolean,int,Object)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "defineClass", "(ClassLoader,String,byte[],ProtectionDomain,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "exit", "(int)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "fastUUID", "(long,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "findBootstrapClassOrNull", "(String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "findNative", "(ClassLoader,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getAnnotationType", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getConstantPool", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getDeclaredAnnotationMap", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getDeclaredPublicMethods", "(Class,String,Class[])", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getEnumConstantsShared", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getRawClassAnnotations", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getRawClassTypeAnnotations", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "getRawExecutableTypeAnnotations", "(Executable)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "inflateBytesToChars", "(byte[],int,char[],int,int)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "invalidatePackageAccessCache", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "invokeFinalize", "(Object)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "isEnableNativeAccess", "(Module)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "isReflectivelyExported", "(Module,String,Module)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "isReflectivelyOpened", "(Module,String,Module)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "protectionDomain", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "registerShutdownHook", "(int,boolean,Runnable)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "stringConcatInitialCoder", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangAccess", "stringConcatMix", "(long,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", "ensureCustomized", "(MethodHandle)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", "generateHolderClasses", "(Stream)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", "getDeclaringClass", "(Object)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", "isNative", "(Object)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", "memoryAccessVarHandle", "(Class,boolean,long,ByteOrder)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangInvokeAccess", "newMemberName", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", "requires", "(ModuleDescriptor$Builder,Set,String,String)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangModuleAccess", "resolveAndBind", "(ModuleFinder,Collection,PrintStream)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangRefAccess", "runFinalization", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangRefAccess", "waitForReferenceProcessing", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", "getConstructorSlot", "(Constructor)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", "getExecutableTypeAnnotationBytes", "(Executable)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", "isTrustedFinalField", "(Field)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaLangReflectAccess", "newInstance", "(Constructor,Object[],Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNetInetAddressAccess", "addressValue", "(Inet4Address)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "force", "(FileDescriptor,long,boolean,long,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "getBufferAddress", "(ByteBuffer)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "getDirectBufferPool", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "isLoaded", "(long,boolean,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "load", "(long,boolean,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "pageSize", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "reserveMemory", "(long,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "unload", "(long,boolean,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "unmapper", "(ByteBuffer)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaNioAccess", "unreserveMemory", "(long,long)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaSecurityAccess", "getProtectionDomainCache", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaSecuritySignatureAccess", "initVerify", "(Signature,Certificate,AlgorithmParameterSpec)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaSecuritySpecAccess", "clearEncodedKeySpec", "(EncodedKeySpec)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", "ensureInitialization", "(JarFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", "entries2", "(JarFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", "isInitializing", "()", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", "jarFileHasClassPathAttribute", "(JarFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilJarAccess", "setEagerValidation", "(JarFile,boolean)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilResourceBundleAccess", "newResourceBundle", "(Class)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "entries", "(ZipFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "entryNameStream", "(ZipFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "getExtraAttributes", "(ZipEntry)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "getManifestAndSignatureRelatedFiles", "(JarFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "getManifestName", "(JarFile,boolean)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "getManifestNum", "(JarFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "getMetaInfVersions", "(JarFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "setExtraAttributes", "(ZipEntry,int)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "startsWithLocHeader", "(ZipFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaUtilZipFileAccess", "stream", "(ZipFile)", "summary", "df-generated"] + - ["jdk.internal.access", "JavaxCryptoSpecAccess", "clearSecretKeySpec", "(SecretKeySpec)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jdk.internal.misc.model.yml b/java/ql/lib/ext/generated/jdk.internal.misc.model.yml new file mode 100644 index 000000000000..3ab4816a586d --- /dev/null +++ b/java/ql/lib/ext/generated/jdk.internal.misc.model.yml @@ -0,0 +1,11 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["jdk.internal.misc", "Signal$Handler", "handle", "(Signal)", "summary", "df-generated"] + - ["jdk.internal.misc", "VM$BufferPool", "getCount", "()", "summary", "df-generated"] + - ["jdk.internal.misc", "VM$BufferPool", "getMemoryUsed", "()", "summary", "df-generated"] + - ["jdk.internal.misc", "VM$BufferPool", "getName", "()", "summary", "df-generated"] + - ["jdk.internal.misc", "VM$BufferPool", "getTotalCapacity", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml b/java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml new file mode 100644 index 000000000000..1121dda67810 --- /dev/null +++ b/java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml @@ -0,0 +1,15 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["jdk.internal.org.objectweb.asm", "ClassVisitor", True, "visitAnnotation", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["jdk.internal.org.objectweb.asm", "ClassVisitor", True, "visitAnnotation", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["jdk.internal.org.objectweb.asm", "ClassVisitor", "visit", "(int,int,String,String,String,String[])", "summary", "df-generated"] + - ["jdk.internal.org.objectweb.asm", "ClassVisitor", "visitAttribute", "(Attribute)", "summary", "df-generated"] + - ["jdk.internal.org.objectweb.asm", "ClassVisitor", "visitModule", "(String,int,String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/org.w3c.dom.ls.model.yml b/java/ql/lib/ext/generated/org.w3c.dom.ls.model.yml new file mode 100644 index 000000000000..ffc38030b8a4 --- /dev/null +++ b/java/ql/lib/ext/generated/org.w3c.dom.ls.model.yml @@ -0,0 +1,28 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.w3c.dom.ls", "LSInput", True, "getSystemId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", True, "setSystemId", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom.ls", "LSResourceResolver", True, "resolveResource", "(String,String,String,String,String)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom.ls", "LSResourceResolver", True, "resolveResource", "(String,String,String,String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["org.w3c.dom.ls", "LSInput", "getBaseURI", "()", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "getByteStream", "()", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "getCertifiedText", "()", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "getCharacterStream", "()", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "getEncoding", "()", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "getPublicId", "()", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "getStringData", "()", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "setBaseURI", "(String)", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "setByteStream", "(InputStream)", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "setCertifiedText", "(boolean)", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "setCharacterStream", "(Reader)", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "setEncoding", "(String)", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "setPublicId", "(String)", "summary", "df-generated"] + - ["org.w3c.dom.ls", "LSInput", "setStringData", "(String)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/org.w3c.dom.model.yml b/java/ql/lib/ext/generated/org.w3c.dom.model.yml new file mode 100644 index 000000000000..9c519c9ae73a --- /dev/null +++ b/java/ql/lib/ext/generated/org.w3c.dom.model.yml @@ -0,0 +1,102 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.w3c.dom", "Attr", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Attr", True, "getOwnerElement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Attr", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Attr", True, "setValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "getAttribute", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "getAttributeNS", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "getAttributeNode", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "getAttributeNodeNS", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "getElementsByTagName", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "getElementsByTagNameNS", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "getTagName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "removeAttributeNode", "(Attr)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "setAttributeNode", "(Attr)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "setAttributeNode", "(Attr)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "setAttributeNode", "(Attr)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "setAttributeNodeNS", "(Attr)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "setAttributeNodeNS", "(Attr)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.w3c.dom", "Element", True, "setAttributeNodeNS", "(Attr)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", True, "getNamedItem", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", True, "getNamedItemNS", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", True, "item", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "appendChild", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "appendChild", "(Node)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "appendChild", "(Node)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "appendChild", "(Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "cloneNode", "(boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getAttributes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getChildNodes", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] + - ["org.w3c.dom", "Node", True, "getFirstChild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getLastChild", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getLocalName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getNextSibling", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getNodeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getNodeValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getParentNode", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "getPreviousSibling", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "insertBefore", "(Node,Node)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "removeChild", "(Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "removeChild", "(Node)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "replaceChild", "(Node,Node)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "replaceChild", "(Node,Node)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "replaceChild", "(Node,Node)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "replaceChild", "(Node,Node)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "replaceChild", "(Node,Node)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] + - ["org.w3c.dom", "Node", True, "setNodeValue", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] + - ["org.w3c.dom", "NodeList", True, "item", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["org.w3c.dom", "Attr", "getSpecified", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Attr", "isId", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "getSchemaTypeInfo", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "hasAttribute", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "hasAttributeNS", "(String,String)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "removeAttribute", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "removeAttributeNS", "(String,String)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "setAttribute", "(String,String)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "setAttributeNS", "(String,String,String)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "setIdAttribute", "(String,boolean)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "setIdAttributeNS", "(String,String,boolean)", "summary", "df-generated"] + - ["org.w3c.dom", "Element", "setIdAttributeNode", "(Attr,boolean)", "summary", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", "getLength", "()", "summary", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", "removeNamedItem", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", "removeNamedItemNS", "(String,String)", "summary", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", "setNamedItem", "(Node)", "summary", "df-generated"] + - ["org.w3c.dom", "NamedNodeMap", "setNamedItemNS", "(Node)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "compareDocumentPosition", "(Node)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getBaseURI", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getFeature", "(String,String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getNamespaceURI", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getNodeType", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getOwnerDocument", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getPrefix", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getTextContent", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "getUserData", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "hasAttributes", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "hasChildNodes", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "isDefaultNamespace", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "isEqualNode", "(Node)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "isSameNode", "(Node)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "isSupported", "(String,String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "lookupNamespaceURI", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "lookupPrefix", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "normalize", "()", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "setPrefix", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "setTextContent", "(String)", "summary", "df-generated"] + - ["org.w3c.dom", "Node", "setUserData", "(String,Object,UserDataHandler)", "summary", "df-generated"] + - ["org.w3c.dom", "NodeList", "getLength", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/org.xml.sax.model.yml b/java/ql/lib/ext/generated/org.xml.sax.model.yml new file mode 100644 index 000000000000..b8377f80341a --- /dev/null +++ b/java/ql/lib/ext/generated/org.xml.sax.model.yml @@ -0,0 +1,17 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.xml.sax", "ContentHandler", True, "startElement", "(String,String,String,Attributes)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] + - ["org.xml.sax", "EntityResolver", True, "resolveEntity", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["org.xml.sax", "EntityResolver", True, "resolveEntity", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["org.xml.sax", "ContentHandler", "endElement", "(String,String,String)", "summary", "df-generated"] + - ["org.xml.sax", "ErrorHandler", "error", "(SAXParseException)", "summary", "df-generated"] + - ["org.xml.sax", "ErrorHandler", "fatalError", "(SAXParseException)", "summary", "df-generated"] + - ["org.xml.sax", "ErrorHandler", "warning", "(SAXParseException)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.awt.model.yml b/java/ql/lib/ext/generated/sun.awt.model.yml new file mode 100644 index 000000000000..42476dac95e8 --- /dev/null +++ b/java/ql/lib/ext/generated/sun.awt.model.yml @@ -0,0 +1,11 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["sun.awt", "AWTAccessor$AccessibleBundleAccessor", True, "getKey", "(AccessibleBundle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["sun.awt", "AWTAccessor$AccessibleContextAccessor", True, "getAppContext", "(AccessibleContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["sun.awt", "AWTAccessor$AccessibleContextAccessor", True, "getNativeAXResource", "(AccessibleContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["sun.awt", "AWTAccessor$AccessibleContextAccessor", True, "setAppContext", "(AccessibleContext,AppContext)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["sun.awt", "AWTAccessor$AccessibleContextAccessor", True, "setNativeAXResource", "(AccessibleContext,Object)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.java2d.model.yml b/java/ql/lib/ext/generated/sun.java2d.model.yml new file mode 100644 index 000000000000..4e8c183dbaa0 --- /dev/null +++ b/java/ql/lib/ext/generated/sun.java2d.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["sun.java2d", "DisposerRecord", "dispose", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.management.spi.model.yml b/java/ql/lib/ext/generated/sun.management.spi.model.yml new file mode 100644 index 000000000000..20407d0cdf88 --- /dev/null +++ b/java/ql/lib/ext/generated/sun.management.spi.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["sun.management.spi", "PlatformMBeanProvider", True, "getPlatformComponentList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.nio.ch.model.yml b/java/ql/lib/ext/generated/sun.nio.ch.model.yml new file mode 100644 index 000000000000..6bf0c30693e4 --- /dev/null +++ b/java/ql/lib/ext/generated/sun.nio.ch.model.yml @@ -0,0 +1,14 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["sun.nio.ch", "DirectBuffer", True, "attachment", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - ["sun.nio.ch", "DirectBuffer", True, "cleaner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["sun.nio.ch", "DirectBuffer", "address", "()", "summary", "df-generated"] + - ["sun.nio.ch", "Interruptible", "interrupt", "(Thread)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.print.model.yml b/java/ql/lib/ext/generated/sun.print.model.yml new file mode 100644 index 000000000000..b680eb208670 --- /dev/null +++ b/java/ql/lib/ext/generated/sun.print.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["sun.print", "DialogOwnerAccessor", "getOwnerID", "(DialogOwner)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.security.krb5.model.yml b/java/ql/lib/ext/generated/sun.security.krb5.model.yml new file mode 100644 index 000000000000..464a5ae3afed --- /dev/null +++ b/java/ql/lib/ext/generated/sun.security.krb5.model.yml @@ -0,0 +1,13 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["sun.security.krb5", "JavaxSecurityAuthKerberosAccess", True, "kerberosTicketGetClientAlias", "(KerberosTicket)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["sun.security.krb5", "JavaxSecurityAuthKerberosAccess", True, "kerberosTicketGetProxy", "(KerberosTicket)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["sun.security.krb5", "JavaxSecurityAuthKerberosAccess", True, "kerberosTicketGetServerAlias", "(KerberosTicket)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["sun.security.krb5", "JavaxSecurityAuthKerberosAccess", True, "kerberosTicketSetClientAlias", "(KerberosTicket,KerberosPrincipal)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["sun.security.krb5", "JavaxSecurityAuthKerberosAccess", True, "kerberosTicketSetProxy", "(KerberosTicket,KerberosTicket)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["sun.security.krb5", "JavaxSecurityAuthKerberosAccess", True, "kerberosTicketSetServerAlias", "(KerberosTicket,KerberosPrincipal)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] + - ["sun.security.krb5", "JavaxSecurityAuthKerberosAccess", True, "keyTabTakeSnapshot", "(KeyTab)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.security.util.model.yml b/java/ql/lib/ext/generated/sun.security.util.model.yml new file mode 100644 index 000000000000..3f742e5e297f --- /dev/null +++ b/java/ql/lib/ext/generated/sun.security.util.model.yml @@ -0,0 +1,7 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: neutralModel + data: + - ["sun.security.util", "MessageDigestSpi2", "engineUpdate", "(SecretKey)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/sun.util.logging.internal.model.yml b/java/ql/lib/ext/generated/sun.util.logging.internal.model.yml new file mode 100644 index 000000000000..66270c3750be --- /dev/null +++ b/java/ql/lib/ext/generated/sun.util.logging.internal.model.yml @@ -0,0 +1,9 @@ +# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["sun.util.logging.internal", "LoggingProviderImpl$LogManagerAccess", True, "demandLoggerFor", "(LogManager,String,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] + - ["sun.util.logging.internal", "LoggingProviderImpl$LogManagerAccess", True, "demandLoggerFor", "(LogManager,String,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] + - ["sun.util.logging.internal", "LoggingProviderImpl$LogManagerAccess", True, "demandLoggerFor", "(LogManager,String,Module)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] From 311512c768277804df13195906245b8517dcb113 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Fri, 15 Mar 2024 14:23:29 +0000 Subject: [PATCH 579/731] Remove df-gen models for incidentally modelled APIs Manual models always take precedence over generated models, so there is no point in keeping the generated models. These APIs happened to have been modelled between model generation and merging this PR. --- java/ql/lib/ext/generated/java.nio.file.model.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/lib/ext/generated/java.nio.file.model.yml b/java/ql/lib/ext/generated/java.nio.file.model.yml index d149f2e47c5f..342de82e556f 100644 --- a/java/ql/lib/ext/generated/java.nio.file.model.yml +++ b/java/ql/lib/ext/generated/java.nio.file.model.yml @@ -100,8 +100,6 @@ extensions: - ["java.nio.file", "NotLinkException", True, "NotLinkException", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.nio.file", "NotLinkException", True, "NotLinkException", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["java.nio.file", "NotLinkException", True, "NotLinkException", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["java.nio.file", "Path", True, "resolveSibling", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Path", True, "resolveSibling", "(Path)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "ProviderMismatchException", True, "ProviderMismatchException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.nio.file", "ProviderNotFoundException", True, "ProviderNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - addsTo: From 121b24ea7c0e21f2032afc64b54f4de85bda9275 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Wed, 27 Mar 2024 08:16:06 -0400 Subject: [PATCH 580/731] Java: remove parentheses --- .../semmle/code/java/security/UrlForwardQuery.qll | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll index 30de4ef8354b..e90267694b53 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll @@ -12,12 +12,12 @@ module UrlForwardFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ThreatModelFlowSource and // excluded due to FPs - not exists(MethodCall mc, Method m | mc.getMethod() = m | - ( - m instanceof HttpServletRequestGetRequestUriMethod or - m instanceof HttpServletRequestGetRequestUrlMethod or - m instanceof HttpServletRequestGetPathMethod - ) and + not exists(MethodCall mc, Method m | + m instanceof HttpServletRequestGetRequestUriMethod or + m instanceof HttpServletRequestGetRequestUrlMethod or + m instanceof HttpServletRequestGetPathMethod + | + mc.getMethod() = m and mc = source.asExpr() ) } From 32ebd4eebbcf13613b51c4b8686b3183b0da3c04 Mon Sep 17 00:00:00 2001 From: Max Schaefer <max-schaefer@github.com> Date: Wed, 27 Mar 2024 12:22:24 +0000 Subject: [PATCH 581/731] Automodel: Filter unexploitable types in application mode. We already did this in framework mode. --- .../AutomodelApplicationModeCharacteristics.qll | 16 +++++++++------- .../AutomodelApplicationModeExtraction/Test.java | 11 ++++++----- .../com/github/codeql/test/MyWriter.java | 2 +- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll b/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll index 045886985b89..3023677ece80 100644 --- a/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll +++ b/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll @@ -28,25 +28,27 @@ newtype TApplicationModeEndpoint = AutomodelJavaUtil::isFromSource(call) and exists(Argument argExpr | arg.asExpr() = argExpr and call = argExpr.getCall() and not argExpr.isVararg() - ) + ) and + not AutomodelJavaUtil::isUnexploitableType(arg.getType()) } or TInstanceArgument(Call call, DataFlow::Node arg) { AutomodelJavaUtil::isFromSource(call) and arg = DataFlow::getInstanceArgument(call) and - not call instanceof ConstructorCall + not call instanceof ConstructorCall and + not AutomodelJavaUtil::isUnexploitableType(arg.getType()) } or TImplicitVarargsArray(Call call, DataFlow::ImplicitVarargsArray arg, int idx) { AutomodelJavaUtil::isFromSource(call) and call = arg.getCall() and - idx = call.getCallee().getVaragsParameterIndex() + idx = call.getCallee().getVaragsParameterIndex() and + not AutomodelJavaUtil::isUnexploitableType(arg.getType()) } or - TMethodReturnValue(Call call) { + TMethodReturnValue(MethodCall call) { AutomodelJavaUtil::isFromSource(call) and - not call instanceof ConstructorCall + not AutomodelJavaUtil::isUnexploitableType(call.getType()) } or TOverriddenParameter(Parameter p, Method overriddenMethod) { AutomodelJavaUtil::isFromSource(p) and - not p.getCallable().callsConstructor(_) and p.getCallable().(Method).overrides(overriddenMethod) } @@ -163,7 +165,7 @@ class ImplicitVarargsArray extends CallArgument, TImplicitVarargsArray { * may be a source. */ class MethodReturnValue extends ApplicationModeEndpoint, TMethodReturnValue { - Call call; + MethodCall call; MethodReturnValue() { this = TMethodReturnValue(call) } diff --git a/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java b/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java index 4d6aff63fd02..a8280bcaf272 100644 --- a/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java +++ b/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java @@ -19,11 +19,11 @@ public static void main(String[] args) throws Exception { AtomicReference<String> reference = new AtomicReference<>(); // uninteresting (parameterless constructor) reference.set( // $ sinkModelCandidate=set(Object):Argument[this] args[0] // $ negativeSinkExample=set(Object):Argument[0] // modeled as a flow step - ); // $ negativeSourceExample=set(Object):ReturnValue // return type is void + ); // not a source candidate (return type is void) } public static void callSupplier(Supplier<String> supplier) { - supplier.get(); // $ sourceModelCandidate=get():ReturnValue + supplier.get(); // not a source candidate (lambda flow) } public static void copyFiles(Path source, Path target, CopyOption option) throws Exception { @@ -52,7 +52,7 @@ public static InputStream getInputStream(String openPath, String otherPath) thro public static int compareFiles(File f1, File f2) { return f1.compareTo( // $ negativeSinkExample=compareTo(File):Argument[this] f2 // $ negativeSinkExample=compareTo(File):Argument[0] // modeled as not a sink - ); // $ negativeSourceExample=compareTo(File):ReturnValue // return type is int + ); // not a source candidate (return type is int) } public static void FilesWalkExample(Path p, FileVisitOption o) throws Exception { @@ -66,6 +66,7 @@ public static void FilesWalkExample(Path p, FileVisitOption o) throws Exception public static void WebSocketExample(URLConnection c) throws Exception { c.getInputStream(); // $ sinkModelCandidate=getInputStream():Argument[this] positiveSourceExample=getInputStream():ReturnValue(remote) // not a source candidate (manual modeling) + c.connect(); // $ sinkModelCandidate=connect():Argument[this] // not a source candidate (return type is void) } public static void fileFilterExample(File f, FileFilter ff) { @@ -102,10 +103,10 @@ public static void FilesListExample(Path p) throws Exception { Files.delete( p // $ sinkModelCandidate=delete(Path):Argument[0] positiveSinkExample=delete(Path):Argument[0](path-injection) - ); // $ negativeSourceExample=delete(Path):ReturnValue // return type is void + ); // $ not a source candidate (return type is void) Files.deleteIfExists( p // $ sinkModelCandidate=deleteIfExists(Path):Argument[0] positiveSinkExample=deleteIfExists(Path):Argument[0](path-injection) - ); // $ negativeSourceExample=deleteIfExists(Path):ReturnValue // return type is boolean + ); // $ not a source candidate (return type is boolean) } } \ No newline at end of file diff --git a/java/ql/automodel/test/AutomodelFrameworkModeExtraction/com/github/codeql/test/MyWriter.java b/java/ql/automodel/test/AutomodelFrameworkModeExtraction/com/github/codeql/test/MyWriter.java index b31ace21b4d2..62bd773cc2e2 100644 --- a/java/ql/automodel/test/AutomodelFrameworkModeExtraction/com/github/codeql/test/MyWriter.java +++ b/java/ql/automodel/test/AutomodelFrameworkModeExtraction/com/github/codeql/test/MyWriter.java @@ -2,7 +2,7 @@ public class MyWriter extends java.io.Writer { @Override - public void write(char[] cbuf, int off, int len) { // $ sinkModelCandidate=write(char[],int,int):Argument[this] sourceModelCandidate=write(char[],int,int):Parameter[this] sourceModelCandidate=write(char[],int,int):Parameter[0] + public void write(char[] cbuf, int off, int len) { // $ sinkModelCandidate=write(char[],int,int):Argument[this] positiveSinkExample=write(char[],int,int):Argument[0](file-content-store) sourceModelCandidate=write(char[],int,int):Parameter[this] sourceModelCandidate=write(char[],int,int):Parameter[0] } @Override From b8e38288e391c46168b989b45f5955fd3421ef58 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Wed, 27 Mar 2024 12:14:19 +0100 Subject: [PATCH 582/731] Swift: add extraction of `ThenStmt` These are currently added implicitly by the compiler in the context of `if`/`switch` expressions. In the future, there might be explicit `then <expr>` statement useful for cases where one would like to add more than one statement in the branch, to mark what value to actually use. See https://forums.swift.org/t/pitch-multi-statement-if-switch-do-expressions/68443 --- swift/extractor/infra/SwiftTagTraits.h | 2 +- .../extractor/translators/StmtTranslator.cpp | 6 +++ swift/extractor/translators/StmtTranslator.h | 1 + swift/ql/.generated.list | 14 +++-- swift/ql/.gitattributes | 4 ++ swift/ql/lib/codeql/swift/elements.qll | 1 + .../codeql/swift/elements/stmt/ThenStmt.qll | 19 +++++++ .../elements/stmt/ThenStmtConstructor.qll | 14 +++++ .../codeql/swift/generated/ParentChild.qll | 15 ++++++ swift/ql/lib/codeql/swift/generated/Raw.qll | 21 ++++++++ swift/ql/lib/codeql/swift/generated/Synth.qll | 24 ++++++++- .../swift/generated/SynthConstructors.qll | 1 + .../codeql/swift/generated/stmt/ThenStmt.qll | 54 +++++++++++++++++++ swift/ql/lib/swift.dbscheme | 6 +++ .../SingleValueStmtExpr.expected | 3 +- .../SingleValueStmtExpr_getType.expected | 3 +- .../SingleValueStmtExpr/ThenStmt.expected | 4 ++ .../expr/SingleValueStmtExpr/ThenStmt.ql | 10 ++++ .../expr/SingleValueStmtExpr/test.swift | 6 +++ swift/schema.py | 14 +++++ 20 files changed, 213 insertions(+), 9 deletions(-) create mode 100644 swift/ql/lib/codeql/swift/elements/stmt/ThenStmt.qll create mode 100644 swift/ql/lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll create mode 100644 swift/ql/lib/codeql/swift/generated/stmt/ThenStmt.qll create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.expected create mode 100644 swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql diff --git a/swift/extractor/infra/SwiftTagTraits.h b/swift/extractor/infra/SwiftTagTraits.h index b35bcef5a6a4..fc3c6343ce5d 100644 --- a/swift/extractor/infra/SwiftTagTraits.h +++ b/swift/extractor/infra/SwiftTagTraits.h @@ -43,7 +43,7 @@ MAP(swift::Stmt, StmtTag) MAP(swift::BraceStmt, BraceStmtTag) MAP(swift::ReturnStmt, ReturnStmtTag) MAP(swift::YieldStmt, YieldStmtTag) - MAP(swift::ThenStmt, void) // gated behind yet unusable experimental feature + MAP(swift::ThenStmt, ThenStmtTag) MAP(swift::DeferStmt, DeferStmtTag) MAP(swift::LabeledStmt, LabeledStmtTag) MAP(swift::LabeledConditionalStmt, LabeledConditionalStmtTag) diff --git a/swift/extractor/translators/StmtTranslator.cpp b/swift/extractor/translators/StmtTranslator.cpp index ac684a01606e..a433c93f406e 100644 --- a/swift/extractor/translators/StmtTranslator.cpp +++ b/swift/extractor/translators/StmtTranslator.cpp @@ -218,4 +218,10 @@ codeql::DiscardStmt StmtTranslator::translateDiscardStmt(const swift::DiscardStm return entry; } +codeql::ThenStmt StmtTranslator::translateThenStmt(const swift::ThenStmt& stmt) { + auto entry = dispatcher.createEntry(stmt); + entry.result = dispatcher.fetchLabel(stmt.getResult()); + return entry; +} + } // namespace codeql diff --git a/swift/extractor/translators/StmtTranslator.h b/swift/extractor/translators/StmtTranslator.h index e713a57ac16d..d593411af374 100644 --- a/swift/extractor/translators/StmtTranslator.h +++ b/swift/extractor/translators/StmtTranslator.h @@ -40,6 +40,7 @@ class StmtTranslator : public AstTranslatorBase<StmtTranslator> { codeql::FailStmt translateFailStmt(const swift::FailStmt& stmt); codeql::PoundAssertStmt translatePoundAssertStmt(const swift::PoundAssertStmt& stmt); codeql::DiscardStmt translateDiscardStmt(const swift::DiscardStmt& stmt); + codeql::ThenStmt translateThenStmt(const swift::ThenStmt& stmt); private: void fillLabeledStmt(const swift::LabeledStmt& stmt, codeql::LabeledStmt& entry); diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index e6e778ebdd97..aa85f4aff4e6 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -271,6 +271,8 @@ lib/codeql/swift/elements/stmt/ReturnStmtConstructor.qll 2c66c1b1ece31bcfee06c87 lib/codeql/swift/elements/stmt/Stmt.qll b21643c4dd6a7e22c422df36c66d7389918c71cb05e71b58c2086f998035ca8a 2fd87fce67d61461dfd40f1430b67e2611729eb3205fd508a79c4fabf6cc51b8 lib/codeql/swift/elements/stmt/StmtConditionConstructor.qll 978a7c1dd6cc51194c847a6ed4785200515d90d484d013c367d7b86a177656f2 4a0dd278470676232b29e2ed02fef5b88061d9dd3ca082238e5fc4e978dcd66f lib/codeql/swift/elements/stmt/SwitchStmtConstructor.qll 8431feb4b68505ac0072be07a6ed07d71559daf5443e5164d0aad38bc8c5cc12 98a9e32dc3774e47070ec3b0f7f4febfe2ec298858955275e22471682da270bc +lib/codeql/swift/elements/stmt/ThenStmt.qll 70c38206142fa0bc5bbcfe3661dbfb4dcc53416160eef3e6f301504cddb4b0ae f7066479d4319db057de7d49d723dbfa9a6bc221738f8ea6cea795f5ef1e341a +lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll 88823800957584b9a5f9601f85f75875d45d262718d736851b0e40d4028c5dc1 98c480d82177e5d223307aa0e2fe82bf859915b050ec66a5d959f7d0e58ee068 lib/codeql/swift/elements/stmt/ThrowStmtConstructor.qll 974ec76e814030df10362a516da9aa0f90dbb1040ef3297a12632b0654d95dfc a02f73cd6f36d96d6093ffb4608be6e5fb15d8412f3c4ff0f4648b82b909f582 lib/codeql/swift/elements/stmt/WhileStmtConstructor.qll a49c46100da57dc6e8b3cfcc665bd2d6cfa1b49efb0f7d66f49ed719b42ff34d d527c8f6d08b91917d209554c76aade2b35b90c09caec6aa21c3ba951e8e8bf7 lib/codeql/swift/elements/stmt/YieldStmtConstructor.qll ac2047e02add0796b5eff4180c777dc4ebd4bc52c2083036b959e3a1caa41bad 78209a97874bc3bb2c4c3b919ff4b9e68010b0d047d2b455881b980f5100767a @@ -390,7 +392,7 @@ lib/codeql/swift/elements/type/UnresolvedTypeConstructor.qll 7f75d489b4d7ce65cae lib/codeql/swift/elements/type/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4 lib/codeql/swift/elements/type/WeakStorageType.qll edd13dd97b53040684409e187c1f975bcada6807c919e1345d8977144dbebb6f 9434c044d264a7f5f503a6422c106c9b8fedf74aaae314174473a29ea6ed17b9 lib/codeql/swift/elements/type/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae -lib/codeql/swift/elements.qll 27da89b0b50ea17b96a47aad31453ff0d43b8277ab660385f785879ce6cc243e 27da89b0b50ea17b96a47aad31453ff0d43b8277ab660385f785879ce6cc243e +lib/codeql/swift/elements.qll bb863ff140bfaa0bf887708f421a16c85816886f4d061bbc5af752a4e4d810d3 bb863ff140bfaa0bf887708f421a16c85816886f4d061bbc5af752a4e4d810d3 lib/codeql/swift/generated/AstNode.qll 68877daa9e14b462247ac6b7b724f5e683288e39953a8ebb02a362b7d1df8e4c 54d3512744738e1ee15645f3af116437053cb5209687f4106361a1943b38b666 lib/codeql/swift/generated/AvailabilityInfo.qll e74e218a1ab00416cb8823610ff93642101aa784aa61cbc2b4deef61471a5bac e2c6c19860dc3e6e211041c95d8e6d52c3505ccff7018b80a849735cc98141af lib/codeql/swift/generated/AvailabilitySpec.qll a8afc5071887a67b4e0dec27356ab8cbf3e176b5358cb34c785e3015b2cad5a2 c7f88b0d701612c821359c983b3102f31b23edc211c3dcfe97de5adec61af386 @@ -407,12 +409,12 @@ lib/codeql/swift/generated/Locatable.qll 6cb437dd7ff7331429ec6586b0af50b1af15e4f lib/codeql/swift/generated/Location.qll 3f3bad413be87d05a596fe7b8004f415c2caa98cb759021a6aad20b589b7d700 ed30ed646962b3ffb6b47c97c6434fe47a6b1ea8e3f2e0589577bea5cf96c88e lib/codeql/swift/generated/MacroRole.qll aaf5631c49de81e046854955341202d6d3516713cd09bc2e7b870e40c261cc9f 6cd17d40cbf1d8fa4ef01dfb8b3462b7cee902e6058fb76417c2035be12481d1 lib/codeql/swift/generated/OtherAvailabilitySpec.qll 06393a08e8da36106c5ec6efb9f1bd56a5c7b3d3f3d0bcefc6fa07fa96860c31 06393a08e8da36106c5ec6efb9f1bd56a5c7b3d3f3d0bcefc6fa07fa96860c31 -lib/codeql/swift/generated/ParentChild.qll 523f0fdf11a8007a80b35d7f8b99f736face08513311c8e998ca20ae1e535ebe 2829f5e61adbd863f4ad823ecfd7c1bb5eccaf14bb121b85ad460175b733fe30 +lib/codeql/swift/generated/ParentChild.qll 2489604e46253d81d7f8e3a8f0a7905481e5b2811d5016794ce5b66846cec22e f10627c078437dc9b8ce98d2a1559e660f86e2aea1d42feac1a79f2e68eeae8a lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll 5355be9da8b778d1d8ae60d25d9c3394477da24f94e8a6ab4484c6a16d07cd7c 075438c1762ec0a7775004b39032dcf85aada038a4269e6f428c34b8282786e9 lib/codeql/swift/generated/PureSynthConstructors.qll 40f5c0c573ce12f16322d9efb12306750f672254cbc36a200c298cb08e504229 40f5c0c573ce12f16322d9efb12306750f672254cbc36a200c298cb08e504229 -lib/codeql/swift/generated/Raw.qll 252bb96829d1c284ec8036e54f14db83d5a3c9be1c2bdc05bc7add7cf46ca618 4cdc6643270b2fc78805635a738dfd506bdee9dc770bc74ec66558c1efff7697 -lib/codeql/swift/generated/Synth.qll b8bf274c60f60df473ed9093b50906822613dee047bda19ad37d07c308f04564 692590b0b18556a23cc1de0c8a60fd17534791dccb876cab85170bbf78392bd1 -lib/codeql/swift/generated/SynthConstructors.qll d3b4b5d93be989004d7c05bbc32a5b859eaad768b4a52cfb01a767c90542f9a4 d3b4b5d93be989004d7c05bbc32a5b859eaad768b4a52cfb01a767c90542f9a4 +lib/codeql/swift/generated/Raw.qll 10633b948918d315b98b6ff6733d4c368e082c5afd78334c0862291f9d883216 66abde4c9a2283773033d90a4633c1203d6563fc238ddbd48fdf1b910f90021a +lib/codeql/swift/generated/Synth.qll 848284b2ae9854c5be74e5ef50a51090e248e5c9c02289a6bc63455e440122da e2607f46a4830e81718ca1636fa65bc29420a18539443d109fafd7f1af1591ce +lib/codeql/swift/generated/SynthConstructors.qll 7edffc30d3dddc4d73241f4e0d3df4501a99eb38d056f82043ed69e481404342 7edffc30d3dddc4d73241f4e0d3df4501a99eb38d056f82043ed69e481404342 lib/codeql/swift/generated/UnknownFile.qll 5325944cf96a72d5d224597745e15960fb6a9448b96b6644ececd6344dfd9d74 5325944cf96a72d5d224597745e15960fb6a9448b96b6644ececd6344dfd9d74 lib/codeql/swift/generated/UnknownLocation.qll dfdeb8eedb2564eccaac416695784ea04fe9754a3e109e8484c695021af4e554 dfdeb8eedb2564eccaac416695784ea04fe9754a3e109e8484c695021af4e554 lib/codeql/swift/generated/UnspecifiedElement.qll 8ecc275cc131fe5aa61052299e10c49c3718f96416df9eeacabf5aea34d97982 b02dfcf0df3859551b176e065291da943670ab4da6ed84d02a0861ff689001c6 @@ -624,6 +626,7 @@ lib/codeql/swift/generated/stmt/ReturnStmt.qll 82910f3c8360b39a2b5b649d41d206372 lib/codeql/swift/generated/stmt/Stmt.qll 3912b8b28aaf01624ac377bdf8caae2c20741c9ef98cef75156e1b0c3a8b5163 9805adf45af0ad4a0734477a5d80b5bcbb2bece8e83411a76aba96042d0c7f18 lib/codeql/swift/generated/stmt/StmtCondition.qll cf03296a32292d836ff9050ffc6d3d5fc56c90f9473e7f70a67116417590ee76 c5694a39bdcab60beaa04a275ec99616dd868c12c878513f783a0eb52f328ba9 lib/codeql/swift/generated/stmt/SwitchStmt.qll 4e0ee2230d295e7b592e837b3ad94f122540f06107139a279302f67cff5cefe8 5bd92a4997e7308b046d985f04f21b1f4284c6f782b56563c1020021f34755a4 +lib/codeql/swift/generated/stmt/ThenStmt.qll b0fb20f9ebfa836675912c385c133acbfc57f48b431a58ede48099cac131491d c78838d9084ff18f813e9cad68a56f8a838ed4ac59f046411442226bb41ad763 lib/codeql/swift/generated/stmt/ThrowStmt.qll 888825d19ced5a03dad6a20af8f8d86e8d8eb8fd8f69eaba9c0d0b58cbefac90 517d4aa93a9ae1874ac64dc1d6a170b4cde8e51c8f842dcba058ff2c61086ffd lib/codeql/swift/generated/stmt/WhileStmt.qll cca25bd25aaea758dce474354d5e57d92eaa5ca5abb918f8d677feb2be6d3b0d d7ae1bdd69c25d8eb882522053b07048f3a0f1bb5ed8dcbd5b3efbfe0f72631b lib/codeql/swift/generated/stmt/YieldStmt.qll c4619558f406dcf3ed1a0171b6c4b93c415fb5419745391c4df217d45e76b3f0 ca5c954cacf21233a35b88fe3e6de2eba0017e4e08b3f51b9d2bac6b01d8a219 @@ -898,6 +901,7 @@ test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.t test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql efbfaf798a86c5a7d8053a22f61249208db31edcdaf750f2671057ad2f376806 d3256d2315d5bd5420b40a4be9522752bb57897807ea3853a7a4c61e9a05e478 test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql bfbeb24e57078b1bbaae331a6f3e8d13d0efbdca2228dbbca53b86d5e287efd8 864351b87f7981825e148a479e997936c653a4581e8a893eaed96ddeed891eab +test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql 0bd26223160e846cfa64fad75672eab18b8ce27e24d802bc711f42a540d13ac7 6a5b7760c44ee34c6e33a517a52622cc70dbdee88eb20eaea787be0e1f888996 test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 diff --git a/swift/ql/.gitattributes b/swift/ql/.gitattributes index 44b728f62e69..e5eaf58d62a1 100644 --- a/swift/ql/.gitattributes +++ b/swift/ql/.gitattributes @@ -273,6 +273,8 @@ /lib/codeql/swift/elements/stmt/Stmt.qll linguist-generated /lib/codeql/swift/elements/stmt/StmtConditionConstructor.qll linguist-generated /lib/codeql/swift/elements/stmt/SwitchStmtConstructor.qll linguist-generated +/lib/codeql/swift/elements/stmt/ThenStmt.qll linguist-generated +/lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll linguist-generated /lib/codeql/swift/elements/stmt/ThrowStmtConstructor.qll linguist-generated /lib/codeql/swift/elements/stmt/WhileStmtConstructor.qll linguist-generated /lib/codeql/swift/elements/stmt/YieldStmtConstructor.qll linguist-generated @@ -626,6 +628,7 @@ /lib/codeql/swift/generated/stmt/Stmt.qll linguist-generated /lib/codeql/swift/generated/stmt/StmtCondition.qll linguist-generated /lib/codeql/swift/generated/stmt/SwitchStmt.qll linguist-generated +/lib/codeql/swift/generated/stmt/ThenStmt.qll linguist-generated /lib/codeql/swift/generated/stmt/ThrowStmt.qll linguist-generated /lib/codeql/swift/generated/stmt/WhileStmt.qll linguist-generated /lib/codeql/swift/generated/stmt/YieldStmt.qll linguist-generated @@ -900,6 +903,7 @@ /test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql linguist-generated /test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql linguist-generated +/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql linguist-generated /test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt linguist-generated /test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt linguist-generated diff --git a/swift/ql/lib/codeql/swift/elements.qll b/swift/ql/lib/codeql/swift/elements.qll index 32128d83e3c4..e6e505e5da6c 100644 --- a/swift/ql/lib/codeql/swift/elements.qll +++ b/swift/ql/lib/codeql/swift/elements.qll @@ -227,6 +227,7 @@ import codeql.swift.elements.stmt.ReturnStmt import codeql.swift.elements.stmt.Stmt import codeql.swift.elements.stmt.StmtCondition import codeql.swift.elements.stmt.SwitchStmt +import codeql.swift.elements.stmt.ThenStmt import codeql.swift.elements.stmt.ThrowStmt import codeql.swift.elements.stmt.WhileStmt import codeql.swift.elements.stmt.YieldStmt diff --git a/swift/ql/lib/codeql/swift/elements/stmt/ThenStmt.qll b/swift/ql/lib/codeql/swift/elements/stmt/ThenStmt.qll new file mode 100644 index 000000000000..49291d43b8c2 --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/stmt/ThenStmt.qll @@ -0,0 +1,19 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `ThenStmt`. + */ + +private import codeql.swift.generated.stmt.ThenStmt + +/** + * A statement implicitly wrapping values to be used in branches of if/switch expressions. For example in: + * ``` + * let rank = switch value { + * case 0..<0x80: 1 + * case 0x80..<0x0800: 2 + * default: 3 + * } + * ``` + * the literal expressions `1`, `2` and `3` are wrapped in `ThenStmt`. + */ +class ThenStmt extends Generated::ThenStmt { } diff --git a/swift/ql/lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll b/swift/ql/lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll new file mode 100644 index 000000000000..dbedcd7c2cac --- /dev/null +++ b/swift/ql/lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll @@ -0,0 +1,14 @@ +// generated by codegen/codegen.py, remove this comment if you wish to edit this file +/** + * This module defines the hook used internally to tweak the characteristic predicate of + * `ThenStmt` synthesized instances. + * INTERNAL: Do not use. + */ + +private import codeql.swift.generated.Raw + +/** + * The characteristic predicate of `ThenStmt` synthesized instances. + * INTERNAL: Do not use. + */ +predicate constructThenStmt(Raw::ThenStmt id) { any() } diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 2dc4a8f9d479..1a50686bf3d1 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -3780,6 +3780,19 @@ private module Impl { ) } + private Element getImmediateChildOfThenStmt(ThenStmt e, int index, string partialPredicateCall) { + exists(int b, int bStmt, int n | + b = 0 and + bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and + n = bStmt and + ( + none() + or + result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) + ) + ) + } + private Element getImmediateChildOfThrowStmt(ThrowStmt e, int index, string partialPredicateCall) { exists(int b, int bStmt, int n, int nSubExpr | b = 0 and @@ -5466,6 +5479,8 @@ private module Impl { or result = getImmediateChildOfReturnStmt(e, index, partialAccessor) or + result = getImmediateChildOfThenStmt(e, index, partialAccessor) + or result = getImmediateChildOfThrowStmt(e, index, partialAccessor) or result = getImmediateChildOfYieldStmt(e, index, partialAccessor) diff --git a/swift/ql/lib/codeql/swift/generated/Raw.qll b/swift/ql/lib/codeql/swift/generated/Raw.qll index 01f1f7e31790..69168ddd0a70 100644 --- a/swift/ql/lib/codeql/swift/generated/Raw.qll +++ b/swift/ql/lib/codeql/swift/generated/Raw.qll @@ -2923,6 +2923,27 @@ module Raw { Expr getResult() { return_stmt_results(this, result) } } + /** + * INTERNAL: Do not use. + * A statement implicitly wrapping values to be used in branches of if/switch expressions. For example in: + * ``` + * let rank = switch value { + * case 0..<0x80: 1 + * case 0x80..<0x0800: 2 + * default: 3 + * } + * ``` + * the literal expressions `1`, `2` and `3` are wrapped in `ThenStmt`. + */ + class ThenStmt extends @then_stmt, Stmt { + override string toString() { result = "ThenStmt" } + + /** + * Gets the result of this then statement. + */ + Expr getResult() { then_stmts(this, result) } + } + /** * INTERNAL: Do not use. */ diff --git a/swift/ql/lib/codeql/swift/generated/Synth.qll b/swift/ql/lib/codeql/swift/generated/Synth.qll index d8b5316ad92f..778eb6462cf1 100644 --- a/swift/ql/lib/codeql/swift/generated/Synth.qll +++ b/swift/ql/lib/codeql/swift/generated/Synth.qll @@ -823,6 +823,10 @@ module Synth { * INTERNAL: Do not use. */ TSwitchStmt(Raw::SwitchStmt id) { constructSwitchStmt(id) } or + /** + * INTERNAL: Do not use. + */ + TThenStmt(Raw::ThenStmt id) { constructThenStmt(id) } or /** * INTERNAL: Do not use. */ @@ -1311,7 +1315,7 @@ module Synth { class TStmt = TBraceStmt or TBreakStmt or TCaseStmt or TContinueStmt or TDeferStmt or TDiscardStmt or TFailStmt or TFallthroughStmt or TLabeledStmt or TPoundAssertStmt or TReturnStmt or - TThrowStmt or TYieldStmt; + TThenStmt or TThrowStmt or TYieldStmt; /** * INTERNAL: Do not use. @@ -2891,6 +2895,13 @@ module Synth { cached TSwitchStmt convertSwitchStmtFromRaw(Raw::Element e) { result = TSwitchStmt(e) } + /** + * INTERNAL: Do not use. + * Converts a raw element to a synthesized `TThenStmt`, if possible. + */ + cached + TThenStmt convertThenStmtFromRaw(Raw::Element e) { result = TThenStmt(e) } + /** * INTERNAL: Do not use. * Converts a raw element to a synthesized `TThrowStmt`, if possible. @@ -4116,6 +4127,8 @@ module Synth { or result = convertReturnStmtFromRaw(e) or + result = convertThenStmtFromRaw(e) + or result = convertThrowStmtFromRaw(e) or result = convertYieldStmtFromRaw(e) @@ -5854,6 +5867,13 @@ module Synth { cached Raw::Element convertSwitchStmtToRaw(TSwitchStmt e) { e = TSwitchStmt(result) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TThenStmt` to a raw DB element, if possible. + */ + cached + Raw::Element convertThenStmtToRaw(TThenStmt e) { e = TThenStmt(result) } + /** * INTERNAL: Do not use. * Converts a synthesized `TThrowStmt` to a raw DB element, if possible. @@ -7079,6 +7099,8 @@ module Synth { or result = convertReturnStmtToRaw(e) or + result = convertThenStmtToRaw(e) + or result = convertThrowStmtToRaw(e) or result = convertYieldStmtToRaw(e) diff --git a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll index 8ce0d1ca540b..28bec5d27e20 100644 --- a/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll +++ b/swift/ql/lib/codeql/swift/generated/SynthConstructors.qll @@ -190,6 +190,7 @@ import codeql.swift.elements.stmt.RepeatWhileStmtConstructor import codeql.swift.elements.stmt.ReturnStmtConstructor import codeql.swift.elements.stmt.StmtConditionConstructor import codeql.swift.elements.stmt.SwitchStmtConstructor +import codeql.swift.elements.stmt.ThenStmtConstructor import codeql.swift.elements.stmt.ThrowStmtConstructor import codeql.swift.elements.stmt.WhileStmtConstructor import codeql.swift.elements.stmt.YieldStmtConstructor diff --git a/swift/ql/lib/codeql/swift/generated/stmt/ThenStmt.qll b/swift/ql/lib/codeql/swift/generated/stmt/ThenStmt.qll new file mode 100644 index 000000000000..8e00c4cfe886 --- /dev/null +++ b/swift/ql/lib/codeql/swift/generated/stmt/ThenStmt.qll @@ -0,0 +1,54 @@ +// generated by codegen/codegen.py +/** + * This module provides the generated definition of `ThenStmt`. + * INTERNAL: Do not import directly. + */ + +private import codeql.swift.generated.Synth +private import codeql.swift.generated.Raw +import codeql.swift.elements.expr.Expr +import codeql.swift.elements.stmt.Stmt + +/** + * INTERNAL: This module contains the fully generated definition of `ThenStmt` and should not + * be referenced directly. + */ +module Generated { + /** + * A statement implicitly wrapping values to be used in branches of if/switch expressions. For example in: + * ``` + * let rank = switch value { + * case 0..<0x80: 1 + * case 0x80..<0x0800: 2 + * default: 3 + * } + * ``` + * the literal expressions `1`, `2` and `3` are wrapped in `ThenStmt`. + * INTERNAL: Do not reference the `Generated::ThenStmt` class directly. + * Use the subclass `ThenStmt`, where the following predicates are available. + */ + class ThenStmt extends Synth::TThenStmt, Stmt { + override string getAPrimaryQlClass() { result = "ThenStmt" } + + /** + * Gets the result of this then statement. + * + * This includes nodes from the "hidden" AST. It can be overridden in subclasses to change the + * behavior of both the `Immediate` and non-`Immediate` versions. + */ + Expr getImmediateResult() { + result = + Synth::convertExprFromRaw(Synth::convertThenStmtToRaw(this).(Raw::ThenStmt).getResult()) + } + + /** + * Gets the result of this then statement. + */ + final Expr getResult() { + exists(Expr immediate | + immediate = this.getImmediateResult() and + result = immediate.resolve() + ) + } + } +} diff --git a/swift/ql/lib/swift.dbscheme b/swift/ql/lib/swift.dbscheme index 60be249ad164..15a630f68e14 100644 --- a/swift/ql/lib/swift.dbscheme +++ b/swift/ql/lib/swift.dbscheme @@ -1846,6 +1846,7 @@ condition_element_availabilities( //dir=stmt | @labeled_stmt | @pound_assert_stmt | @return_stmt +| @then_stmt | @throw_stmt | @yield_stmt ; @@ -1974,6 +1975,11 @@ return_stmt_results( //dir=stmt int result: @expr_or_none ref ); +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + throw_stmts( //dir=stmt unique int id: @throw_stmt, int sub_expr: @expr_or_none ref diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected index 8ddce624fb27..336aca667eea 100644 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.expected @@ -1 +1,2 @@ -| test.swift:2:3:5:3 | SingleValueStmtExpr | hasType: | yes | getStmt: | test.swift:2:3:5:3 | switch x { ... } | +| test.swift:2:3:7:3 | SingleValueStmtExpr | hasType: | yes | getStmt: | test.swift:2:3:7:3 | switch x { ... } | +| test.swift:11:3:11:30 | SingleValueStmtExpr | hasType: | yes | getStmt: | test.swift:11:3:11:30 | if ... then { ... } else { ... } | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected index 2bf6c0cd5da5..9d533e94cda1 100644 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.expected @@ -1 +1,2 @@ -| test.swift:2:3:5:3 | SingleValueStmtExpr | Int | +| test.swift:2:3:7:3 | SingleValueStmtExpr | Int | +| test.swift:11:3:11:30 | SingleValueStmtExpr | Int | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.expected b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.expected new file mode 100644 index 000000000000..7138c023777a --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.expected @@ -0,0 +1,4 @@ +| test.swift:4:5:4:5 | ThenStmt | getResult: | test.swift:4:5:4:5 | 1 | +| test.swift:6:5:6:5 | ThenStmt | getResult: | test.swift:6:5:6:5 | 0 | +| test.swift:11:17:11:17 | ThenStmt | getResult: | test.swift:11:17:11:17 | 1 | +| test.swift:11:28:11:28 | ThenStmt | getResult: | test.swift:11:28:11:28 | 0 | diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql new file mode 100644 index 000000000000..ca24dfa1c4f3 --- /dev/null +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql @@ -0,0 +1,10 @@ +// generated by codegen/codegen.py +import codeql.swift.elements +import TestUtils + +from ThenStmt x, Expr getResult +where + toBeTested(x) and + not x.isUnknown() and + getResult = x.getResult() +select x, "getResult:", getResult diff --git a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift index b7f7077d5e84..0ef2c31c730a 100644 --- a/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift +++ b/swift/ql/test/extractor-tests/generated/expr/SingleValueStmtExpr/test.swift @@ -1,6 +1,12 @@ func a(_ x: Int) -> Int { switch x { + case 0: + 1 default: 0 } } + +func b(_ x: Int) -> Int { + if (x < 42) { 1 } else { 0 } +} diff --git a/swift/schema.py b/swift/schema.py index 1513c46c3e01..c31c7cfeacfa 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -994,6 +994,20 @@ class ThrowStmt(Stmt): class YieldStmt(Stmt): results: list[Expr] | child +@qltest.test_with('SingleValueStmtExpr') +class ThenStmt(Stmt): + """ A statement implicitly wrapping values to be used in branches of if/switch expressions. For example in: + ``` + let rank = switch value { + case 0..<0x80: 1 + case 0x80..<0x0800: 2 + default: 3 + } + ``` + the literal expressions `1`, `2` and `3` are wrapped in `ThenStmt`. + """ + result: Expr + class DoCatchStmt(LabeledStmt): body: Stmt | child catches: list[CaseStmt] | child From d9c40488bb826242b92d125000d9ff10c17b2f2d Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Wed, 27 Mar 2024 13:37:24 +0100 Subject: [PATCH 583/731] Swift: add `ThenStmt` to control flow --- .../internal/ControlFlowGraphImpl.qll | 9 ++ .../controlflow/graph/Cfg.expected | 148 +++++++++++++++++- .../library-tests/controlflow/graph/cfg.swift | 7 + 3 files changed, 158 insertions(+), 6 deletions(-) diff --git a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll index 705df1ed2f58..f785bd0f2784 100644 --- a/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll +++ b/swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll @@ -255,6 +255,15 @@ module Stmts { } } + private class ThenStmtTree extends AstStandardPostOrderTree { + override ThenStmt ast; + + final override ControlFlowElement getChildNode(int i) { + i = 0 and + result.asAstNode() = ast.getResult() + } + } + private class FailTree extends AstLeafTree { override FailStmt ast; } diff --git a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected index 1a1c7fc903d8..184b07a132f5 100644 --- a/swift/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/swift/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -340,9 +340,9 @@ cfg.swift: #-----| exception -> exit mightThrow(x:) (abnormal) # 19| MyError.Type -#-----| -> (Error) ... +#-----| -> (any Error) ... -# 19| (Error) ... +# 19| (any Error) ... #-----| -> throw ... # 19| .error1 @@ -379,11 +379,11 @@ cfg.swift: # 22| .error3 #-----| -> MyError.Type -# 22| (Error) ... +# 22| (any Error) ... #-----| -> throw ... # 22| call to ... -#-----| -> (Error) ... +#-----| -> (any Error) ... # 22| x #-----| -> 1 @@ -6728,11 +6728,11 @@ cfg.swift: # 568| MyProcotolImpl.init() #-----| -> MyProcotolImpl.Type -# 568| (MyProtocol) ... +# 568| (any MyProtocol) ... #-----| -> return ... # 568| call to MyProcotolImpl.init() -#-----| -> (MyProtocol) ... +#-----| -> (any MyProtocol) ... # 569| enter getMyProtocolImpl() #-----| -> getMyProtocolImpl() @@ -6868,3 +6868,139 @@ cfg.swift: # 577| call to source() #-----| -> call to sink(arg:) + +# 580| enter singleStmtExpr(_:) +#-----| -> singleStmtExpr(_:) + +# 580| exit singleStmtExpr(_:) + +# 580| exit singleStmtExpr(_:) (normal) +#-----| -> exit singleStmtExpr(_:) + +# 580| singleStmtExpr(_:) +#-----| -> x + +# 580| x +#-----| -> a + +# 581| var ... = ... +#-----| -> b + +# 581| a +#-----| match -> switch x { ... } + +# 581| SingleValueStmtExpr +#-----| -> var ... = ... + +# 581| switch x { ... } +#-----| -> x + +# 581| x +#-----| -> case ... + +# 582| case ... +#-----| -> =~ ... + +# 582| .~=(_:_:) +#-----| -> Range<Int>.Type + +# 582| 0 +#-----| -> 5 + +# 582| Range<Int>.Type +#-----| -> ...<(_:_:) + +# 582| ... ...<(_:_:) ... +#-----| -> $match + +# 582| ... .~=(_:_:) ... +#-----| -> =~ ... + +# 582| =~ ... +#-----| -> .~=(_:_:) + +# 582| =~ ... +#-----| match -> 1 +#-----| no-match -> case ... + +# 582| ...<(_:_:) +#-----| -> Int.Type + +# 582| Int.Type +#-----| -> 0 + +# 582| $match +#-----| -> ... .~=(_:_:) ... + +# 582| 5 +#-----| -> ... ...<(_:_:) ... + +# 582| 1 +#-----| -> ThenStmt + +# 582| ThenStmt +#-----| -> SingleValueStmtExpr + +# 583| _ +#-----| match -> 2 + +# 583| _ +#-----| -> _ + +# 583| case ... +#-----| -> _ + +# 583| 2 +#-----| -> ThenStmt + +# 583| ThenStmt +#-----| -> SingleValueStmtExpr + +# 585| var ... = ... +#-----| -> exit singleStmtExpr(_:) (normal) + +# 585| b +#-----| match -> if ... then { ... } else { ... } + +# 585| SingleValueStmtExpr +#-----| -> var ... = ... + +# 585| if ... then { ... } else { ... } +#-----| -> StmtCondition + +# 585| StmtCondition +#-----| -> .<(_:_:) + +# 585| [false] (...) +#-----| false -> 2 + +# 585| [true] (...) +#-----| true -> 1 + +# 585| x +#-----| -> 42 + +# 585| ... .<(_:_:) ... +#-----| false -> [false] (...) +#-----| true -> [true] (...) + +# 585| .<(_:_:) +#-----| -> Int.Type + +# 585| Int.Type +#-----| -> x + +# 585| 42 +#-----| -> ... .<(_:_:) ... + +# 585| 1 +#-----| -> ThenStmt + +# 585| ThenStmt +#-----| -> SingleValueStmtExpr + +# 585| 2 +#-----| -> ThenStmt + +# 585| ThenStmt +#-----| -> SingleValueStmtExpr diff --git a/swift/ql/test/library-tests/controlflow/graph/cfg.swift b/swift/ql/test/library-tests/controlflow/graph/cfg.swift index 270f616cd9c2..09090fc70baa 100644 --- a/swift/ql/test/library-tests/controlflow/graph/cfg.swift +++ b/swift/ql/test/library-tests/controlflow/graph/cfg.swift @@ -577,4 +577,11 @@ func testOpenExistentialExpr(x: MyProtocol, y: MyProcotolImpl) { sink(arg: getMyProtocolImpl().source()) } +func singleStmtExpr(_ x: Int) { + let a = switch x { + case 0..<5: 1 + default: 2 + } + let b = if (x < 42) { 1 } else { 2 } +} // --- From 2391fe7d89ff46cad715c09963c73ae6a8fd6f90 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Wed, 27 Mar 2024 08:44:17 -0400 Subject: [PATCH 584/731] Java: use InlineFlowTest instead of InlineExpectationsTest --- .../security/CWE-552/UrlForwardTest.expected | 2 - .../security/CWE-552/UrlForwardTest.java | 42 +++++++++---------- .../security/CWE-552/UrlForwardTest.ql | 18 +------- 3 files changed, 23 insertions(+), 39 deletions(-) diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected index 8ec8033d086e..e69de29bb2d1 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.expected @@ -1,2 +0,0 @@ -testFailures -failures diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java index f0e982c74003..a1437a692a2f 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.java @@ -26,25 +26,25 @@ public class UrlForwardTest extends HttpServlet implements Filter { // Spring `ModelAndView` test cases @GetMapping("/bad1") public ModelAndView bad1(String url) { - return new ModelAndView(url); // $ hasUrlForward + return new ModelAndView(url); // $ hasTaintFlow } @GetMapping("/bad2") public ModelAndView bad2(String url) { ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName(url); // $ hasUrlForward + modelAndView.setViewName(url); // $ hasTaintFlow return modelAndView; } // Spring `"forward:"` prefix test cases @GetMapping("/bad3") public String bad3(String url) { - return "forward:" + url + "/swagger-ui/index.html"; // $ hasUrlForward + return "forward:" + url + "/swagger-ui/index.html"; // $ hasTaintFlow } @GetMapping("/bad4") public ModelAndView bad4(String url) { - ModelAndView modelAndView = new ModelAndView("forward:" + url); // $ hasUrlForward + ModelAndView modelAndView = new ModelAndView("forward:" + url); // $ hasTaintFlow return modelAndView; } @@ -60,7 +60,7 @@ public ModelAndView redirect(String url) { @GetMapping("/bad5") public void bad5(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher(url).include(request, response); // $ hasUrlForward + request.getRequestDispatcher(url).include(request, response); // $ hasTaintFlow } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -71,7 +71,7 @@ public void bad5(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/bad6") public void bad6(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); // $ hasUrlForward + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").include(request, response); // $ hasTaintFlow } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -82,7 +82,7 @@ public void bad6(String url, HttpServletRequest request, HttpServletResponse res @GetMapping("/bad7") public void bad7(String url, HttpServletRequest request, HttpServletResponse response) { try { - request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); // $ hasUrlForward + request.getRequestDispatcher("/WEB-INF/jsp/" + url + ".jsp").forward(request, response); // $ hasTaintFlow } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -106,7 +106,7 @@ public void good1(String url, HttpServletRequest request, HttpServletResponse re public void bad8(String urlPath, HttpServletRequest request, HttpServletResponse response) { try { String url = "/pages" + urlPath; - request.getRequestDispatcher(url).forward(request, response); // $ hasUrlForward + request.getRequestDispatcher(url).forward(request, response); // $ hasTaintFlow } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { @@ -145,7 +145,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha String path = ((HttpServletRequest) request).getServletPath(); // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check if (path != null && !path.startsWith("/WEB-INF")) { - request.getRequestDispatcher(path).forward(request, response); // $ hasUrlForward + request.getRequestDispatcher(path).forward(request, response); // $ hasTaintFlow } else { chain.doFilter(request, response); } @@ -158,7 +158,7 @@ public void doFilter2(ServletRequest request, ServletResponse response, FilterCh String path = ((HttpServletRequest) request).getServletPath(); if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getRequestDispatcher(path).forward(request, response); // $ hasUrlForward + request.getRequestDispatcher(path).forward(request, response); // $ hasTaintFlow } else { chain.doFilter(request, response); } @@ -190,7 +190,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) rd.forward(request, response); } else { ServletContext sc = cfg.getServletContext(); - RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasUrlForward + RequestDispatcher rd = sc.getRequestDispatcher(returnURL); // $ hasTaintFlow rd.forward(request, response); } } @@ -206,7 +206,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) RequestDispatcher rd = request.getRequestDispatcher("/Login.jsp"); rd.forward(request, response); } else { - RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasUrlForward + RequestDispatcher rd = request.getRequestDispatcher(returnURL); // $ hasTaintFlow rd.forward(request, response); } } @@ -233,7 +233,7 @@ protected void doHead1(HttpServletRequest request, HttpServletResponse response) // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check if (path.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow } } @@ -244,7 +244,7 @@ protected void doHead2(HttpServletRequest request, HttpServletResponse response) String path = request.getParameter("path"); if (path.startsWith(BASE_PATH) && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow } } @@ -258,7 +258,7 @@ protected void doHead3(HttpServletRequest request, HttpServletResponse response) Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (requestedPath.startsWith(BASE_PATH)) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasUrlForward + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasTaintFlow } } @@ -270,7 +270,7 @@ protected void doHead4(HttpServletRequest request, HttpServletResponse response) Path requestedPath = Paths.get(BASE_PATH).resolve(path).normalize(); if (!requestedPath.startsWith("/WEB-INF") && !requestedPath.startsWith("/META-INF")) { - request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasUrlForward + request.getServletContext().getRequestDispatcher(requestedPath.toString()).forward(request, response); // $ hasTaintFlow } } @@ -281,7 +281,7 @@ protected void doHead5(HttpServletRequest request, HttpServletResponse response) path = URLDecoder.decode(path, "UTF-8"); if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow } } @@ -319,7 +319,7 @@ protected void doHead8(HttpServletRequest request, HttpServletResponse response) String path = request.getParameter("path"); if (path.contains("%")){ // incorrect check if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasUrlForward + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ hasTaintFlow } } } @@ -362,14 +362,14 @@ protected void doHead11(HttpServletRequest request, HttpServletResponse response } if (!path.startsWith("/WEB-INF/") && !path.contains("..")) { - request.getServletContext().getRequestDispatcher(path).include(request, response); // $ SPURIOUS: hasUrlForward + request.getServletContext().getRequestDispatcher(path).include(request, response); // $ SPURIOUS: hasTaintFlow } } // BAD: `StaplerResponse.forward` without any checks public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object obj) throws IOException, ServletException { String url = req.getParameter("target"); - rsp.forward(obj, url, req); // $ hasUrlForward + rsp.forward(obj, url, req); // $ hasTaintFlow } // QHelp example @@ -381,7 +381,7 @@ protected void doGet2(HttpServletRequest request, HttpServletResponse response) ServletContext sc = cfg.getServletContext(); // BAD: a request parameter is incorporated without validation into a URL forward - sc.getRequestDispatcher(request.getParameter("target")).forward(request, response); // $ hasUrlForward + sc.getRequestDispatcher(request.getParameter("target")).forward(request, response); // $ hasTaintFlow // GOOD: the request parameter is validated against a known fixed string if (VALID_FORWARD.equals(request.getParameter("target"))) { diff --git a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql index 4e62a35752bb..34841885bc34 100644 --- a/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql +++ b/java/ql/test/query-tests/security/CWE-552/UrlForwardTest.ql @@ -1,18 +1,4 @@ import java -import TestUtilities.InlineExpectationsTest +import TestUtilities.InlineFlowTest import semmle.code.java.security.UrlForwardQuery - -module UrlForwardTest implements TestSig { - string getARelevantTag() { result = "hasUrlForward" } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasUrlForward" and - exists(UrlForwardFlow::PathNode sink | UrlForwardFlow::flowPath(_, sink) | - location = sink.getNode().getLocation() and - element = sink.getNode().toString() and - value = "" - ) - } -} - -import MakeTest<UrlForwardTest> +import TaintFlowTest<UrlForwardFlowConfig> From 0243d9f2b9c66429ccc8d6d1415baebbe2b0518e Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Wed, 27 Mar 2024 13:49:15 +0100 Subject: [PATCH 585/731] Swift: accept explicit `any` in existential type name --- .../posix-only/deduplication/Decls.expected | 4 ++-- .../extractor-tests/expressions/all.expected | 2 +- .../ImplicitConversionExpr.expected | 2 +- .../ImplicitConversionExpr_getType.expected | 2 +- .../ExistentialType/ExistentialType.expected | 6 ++--- .../OpenedArchetypeType.expected | 2 +- .../OpenedArchetypeType_getProtocol.expected | 4 ++-- ...OpenedArchetypeType_getSuperclass.expected | 2 +- .../test/library-tests/ast/PrintAst.expected | 22 +++++++++---------- .../type/nominaltype/nominaltype.expected | 6 ++--- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/swift/ql/integration-tests/posix-only/deduplication/Decls.expected b/swift/ql/integration-tests/posix-only/deduplication/Decls.expected index edfdbafdbf5c..08ea0335af82 100644 --- a/swift/ql/integration-tests/posix-only/deduplication/Decls.expected +++ b/swift/ql/integration-tests/posix-only/deduplication/Decls.expected @@ -46,8 +46,8 @@ | Sources/deduplication/def.swift:26:36:26:39 | _ | ParamDecl | A [GenericTypeParamType] | | Sources/deduplication/def.swift:26:42:26:45 | _ | ParamDecl | B [GenericTypeParamType] | | Sources/deduplication/def.swift:26:48:26:51 | _ | ParamDecl | C [GenericTypeParamType] | -| Sources/deduplication/def.swift:28:1:28:21 | Protocol1 | ProtocolDecl | Protocol1.Protocol [MetatypeType] | -| Sources/deduplication/def.swift:29:1:31:1 | Protocol2 | ProtocolDecl | Protocol2.Protocol [MetatypeType] | +| Sources/deduplication/def.swift:28:1:28:21 | Protocol1 | ProtocolDecl | Protocol1.Type [MetatypeType] | +| Sources/deduplication/def.swift:29:1:31:1 | Protocol2 | ProtocolDecl | Protocol2.Type [MetatypeType] | | Sources/deduplication/def.swift:30:5:30:20 | Associated | AssociatedTypeDecl | Self.Associated.Type [MetatypeType] | | Sources/deduplication/def.swift:32:1:32:14 | Class | ClassDecl | Class.Type [MetatypeType] | | Sources/deduplication/def.swift:32:7:32:7 | Class.deinit() | Deinitializer | (Class) -> () -> () [FunctionType] | diff --git a/swift/ql/test/extractor-tests/expressions/all.expected b/swift/ql/test/extractor-tests/expressions/all.expected index 927a7099bac3..bc8fae6529ba 100644 --- a/swift/ql/test/extractor-tests/expressions/all.expected +++ b/swift/ql/test/extractor-tests/expressions/all.expected @@ -31,7 +31,7 @@ | expressions.swift:15:11:15:11 | Int.Type | TypeExpr | | expressions.swift:15:14:15:14 | 0 | IntegerLiteralExpr | | expressions.swift:16:11:16:11 | AnError.Type | TypeExpr | -| expressions.swift:16:11:16:19 | (Error) ... | ErasureExpr | +| expressions.swift:16:11:16:19 | (any Error) ... | ErasureExpr | | expressions.swift:16:11:16:19 | .failed | MethodLookupExpr | | expressions.swift:16:19:16:19 | failed | DeclRefExpr | | expressions.swift:20:1:20:16 | try! ... | ForceTryExpr | diff --git a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected index 90e2af39d308..9baeaf412413 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected +++ b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr.expected @@ -1,5 +1,5 @@ | implicit_conversions.swift:2:3:2:3 | (UnsafePointer<CChar>) ... | StringToPointerExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:2:3:2:3 | Hello | | implicit_conversions.swift:4:16:4:16 | (Int?) ... | InjectIntoOptionalExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:4:16:4:16 | 42 | -| implicit_conversions.swift:5:25:5:25 | (Equatable) ... | ErasureExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:5:25:5:25 | 42 | +| implicit_conversions.swift:5:25:5:25 | (any Equatable) ... | ErasureExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:5:25:5:25 | 42 | | implicit_conversions.swift:12:3:12:5 | (@lvalue (() -> Void)?) ... | AbiSafeConversionExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:12:3:12:5 | .b | | implicit_conversions.swift:12:9:12:10 | ((() -> Void)?) ... | InjectIntoOptionalExpr | hasType: | yes | getSubExpr: | implicit_conversions.swift:12:9:12:10 | { ... } | diff --git a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.expected b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.expected index d8dfc2cd9573..e57454212dfb 100644 --- a/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.expected +++ b/swift/ql/test/extractor-tests/generated/expr/ImplicitConversionExpr/ImplicitConversionExpr_getType.expected @@ -1,5 +1,5 @@ | implicit_conversions.swift:2:3:2:3 | (UnsafePointer<CChar>) ... | UnsafePointer<CChar> | | implicit_conversions.swift:4:16:4:16 | (Int?) ... | Int? | -| implicit_conversions.swift:5:25:5:25 | (Equatable) ... | Equatable | +| implicit_conversions.swift:5:25:5:25 | (any Equatable) ... | any Equatable | | implicit_conversions.swift:12:3:12:5 | (@lvalue (() -> Void)?) ... | @lvalue (() -> Void)? | | implicit_conversions.swift:12:9:12:10 | ((() -> Void)?) ... | (() -> Void)? | diff --git a/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.expected b/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.expected index 39ad24b358b1..56c84e91878f 100644 --- a/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.expected +++ b/swift/ql/test/extractor-tests/generated/type/ExistentialType/ExistentialType.expected @@ -1,3 +1,3 @@ -| ExplicitExistential | getName: | ExplicitExistential | getCanonicalType: | ExplicitExistential | getConstraint: | ExplicitExistential | -| ImplicitExistential | getName: | ImplicitExistential | getCanonicalType: | ImplicitExistential | getConstraint: | ImplicitExistential | -| P1 & P2 | getName: | P1 & P2 | getCanonicalType: | P1 & P2 | getConstraint: | P1 & P2 | +| any ExplicitExistential | getName: | any ExplicitExistential | getCanonicalType: | any ExplicitExistential | getConstraint: | ExplicitExistential | +| any ImplicitExistential | getName: | any ImplicitExistential | getCanonicalType: | any ImplicitExistential | getConstraint: | ImplicitExistential | +| any P1 & P2 | getName: | any P1 & P2 | getCanonicalType: | any P1 & P2 | getConstraint: | P1 & P2 | diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected index 05697f352ba5..24471c96e6c7 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected +++ b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType.expected @@ -1 +1 @@ -| C & P1 & P2 | getName: | C & P1 & P2 | getCanonicalType: | C & P1 & P2 | getInterfaceType: | \u03c4_0_0 | hasSuperclass: | yes | getNumberOfProtocols: | 2 | +| any C & P1 & P2 | getName: | any C & P1 & P2 | getCanonicalType: | any C & P1 & P2 | getInterfaceType: | \u03c4_0_0 | hasSuperclass: | yes | getNumberOfProtocols: | 2 | diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.expected b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.expected index 5899ea9308ac..691608328bb2 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.expected +++ b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getProtocol.expected @@ -1,2 +1,2 @@ -| C & P1 & P2 | 0 | opened_archetypes.swift:3:1:3:14 | P1 | -| C & P1 & P2 | 1 | opened_archetypes.swift:9:1:9:14 | P2 | +| any C & P1 & P2 | 0 | opened_archetypes.swift:3:1:3:14 | P1 | +| any C & P1 & P2 | 1 | opened_archetypes.swift:9:1:9:14 | P2 | diff --git a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.expected b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.expected index be1cb7dcb05f..dffe6bf270a6 100644 --- a/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.expected +++ b/swift/ql/test/extractor-tests/generated/type/OpenedArchetypeType/OpenedArchetypeType_getSuperclass.expected @@ -1 +1 @@ -| C & P1 & P2 | C | +| any C & P1 & P2 | C | diff --git a/swift/ql/test/library-tests/ast/PrintAst.expected b/swift/ql/test/library-tests/ast/PrintAst.expected index 8ef414bb5306..d3a7ababcc44 100644 --- a/swift/ql/test/library-tests/ast/PrintAst.expected +++ b/swift/ql/test/library-tests/ast/PrintAst.expected @@ -88,7 +88,7 @@ cfg.swift: # 19| getBase(): [TypeExpr] MyError.Type # 19| getTypeRepr(): [TypeRepr] MyError # 19| getMethodRef(): [DeclRefExpr] error1 -# 19| getSubExpr().getFullyConverted(): [ErasureExpr] (Error) ... +# 19| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ... # 21| getElement(1): [GuardStmt] guard ... else { ... } # 21| getCondition(): [StmtCondition] StmtCondition # 21| getElement(0): [ConditionElement] ... .<=(_:_:) ... @@ -118,7 +118,7 @@ cfg.swift: # 22| getExpr(): [DeclRefExpr] x # 22| getArgument(1): [Argument] : 1 # 22| getExpr(): [IntegerLiteralExpr] 1 -# 22| getSubExpr().getFullyConverted(): [ErasureExpr] (Error) ... +# 22| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ... # 26| [NamedFunction] tryCatch(x:) # 26| InterfaceType = (Int) -> Int # 26| getParam(0): [ParamDecl] x @@ -205,7 +205,7 @@ cfg.swift: # 39| getPattern(): [NamedPattern] error # 39| getPattern().getFullyUnresolved(): [BindingPattern] let ... # 39| getVariable(0): [ConcreteVarDecl] error -# 39| Type = Error +# 39| Type = any Error # 39| getBody(): [BraceStmt] { ... } # 40| getElement(0): [CallExpr] call to print(_:separator:terminator:) # 40| getFunction(): [DeclRefExpr] print(_:separator:terminator:) @@ -3412,7 +3412,7 @@ cfg.swift: # 564| getBody(): [BraceStmt] { ... } # 564| getElement(0): [ReturnStmt] return # 568| [NamedFunction] getMyProtocol() -# 568| InterfaceType = () -> MyProtocol +# 568| InterfaceType = () -> any MyProtocol # 568| getBody(): [BraceStmt] { ... } # 568| getElement(0): [ReturnStmt] return ... # 568| getResult(): [CallExpr] call to MyProcotolImpl.init() @@ -3420,7 +3420,7 @@ cfg.swift: # 568| getBase(): [TypeExpr] MyProcotolImpl.Type # 568| getTypeRepr(): [TypeRepr] MyProcotolImpl # 568| getMethodRef(): [DeclRefExpr] MyProcotolImpl.init() -# 568| getResult().getFullyConverted(): [ErasureExpr] (MyProtocol) ... +# 568| getResult().getFullyConverted(): [ErasureExpr] (any MyProtocol) ... # 569| [NamedFunction] getMyProtocolImpl() # 569| InterfaceType = () -> MyProcotolImpl # 569| getBody(): [BraceStmt] { ... } @@ -3436,9 +3436,9 @@ cfg.swift: # 571| Type = Int # 571| getBody(): [BraceStmt] { ... } # 573| [NamedFunction] testOpenExistentialExpr(x:y:) -# 573| InterfaceType = (MyProtocol, MyProcotolImpl) -> () +# 573| InterfaceType = (any MyProtocol, MyProcotolImpl) -> () # 573| getParam(0): [ParamDecl] x -# 573| Type = MyProtocol +# 573| Type = any MyProtocol # 573| getParam(1): [ParamDecl] y # 573| Type = MyProcotolImpl # 573| getBody(): [BraceStmt] { ... } @@ -4816,7 +4816,7 @@ expressions.swift: # 16| getBase(): [TypeExpr] AnError.Type # 16| getTypeRepr(): [TypeRepr] AnError # 16| getMethodRef(): [DeclRefExpr] failed -# 16| getSubExpr().getFullyConverted(): [ErasureExpr] (Error) ... +# 16| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ... # 20| [TopLevelCodeDecl] { ... } # 20| getBody(): [BraceStmt] { ... } # 20| getElement(0): [ForceTryExpr] try! ... @@ -6976,7 +6976,7 @@ statements.swift: # 21| getPattern(): [NamedPattern] error # 21| getPattern().getFullyUnresolved(): [BindingPattern] let ... # 21| getVariable(0): [ConcreteVarDecl] error -# 21| Type = Error +# 21| Type = any Error # 21| getBody(): [BraceStmt] { ... } # 22| getElement(0): [CallExpr] call to print(_:separator:terminator:) # 22| getFunction(): [DeclRefExpr] print(_:separator:terminator:) @@ -7017,7 +7017,7 @@ statements.swift: # 29| getPattern(): [NamedPattern] error # 29| getPattern().getFullyUnresolved(): [BindingPattern] let ... # 29| getVariable(0): [ConcreteVarDecl] error -# 29| Type = Error +# 29| Type = any Error # 29| getBody(): [BraceStmt] { ... } # 30| getElement(0): [CallExpr] call to print(_:separator:terminator:) # 30| getFunction(): [DeclRefExpr] print(_:separator:terminator:) @@ -7144,7 +7144,7 @@ statements.swift: # 40| getBase(): [TypeExpr] AnError.Type # 40| getTypeRepr(): [TypeRepr] AnError # 40| getMethodRef(): [DeclRefExpr] failed -# 40| getSubExpr().getFullyConverted(): [ErasureExpr] (Error) ... +# 40| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ... # 44| [TopLevelCodeDecl] { ... } # 44| getBody(): [BraceStmt] { ... } # 44| getElement(0): [DeferStmt] defer { ... } diff --git a/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected b/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected index 81d6ba294d2c..8aa6c1b2d02c 100644 --- a/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected +++ b/swift/ql/test/library-tests/elements/type/nominaltype/nominaltype.expected @@ -7,14 +7,14 @@ | nominaltype.swift:90:6:90:6 | b2 | B2 | getABaseType:A, getCanonicalType:B2, getFullName:B2, getName:B2, getUnderlyingType:B2 | | nominaltype.swift:91:6:91:6 | b1_alias | B1_alias | getAliasedType:B1, getCanonicalType:B1, getFullName:B1_alias, getName:B1_alias, getUnderlyingType:B1 | | nominaltype.swift:92:6:92:6 | b2_alias | B2_alias | getAliasedType:B2, getCanonicalType:B2, getFullName:B2_alias, getName:B2_alias, getUnderlyingType:B2 | -| nominaltype.swift:93:6:93:6 | p | P | getCanonicalType:P, getFullName:P, getName:P, getUnderlyingType:P | -| nominaltype.swift:94:6:94:6 | p_alias | P_alias | getCanonicalType:P, getFullName:P_alias, getName:P_alias, getUnderlyingType:P_alias | +| nominaltype.swift:93:6:93:6 | p | any P | getCanonicalType:any P, getFullName:any P, getName:any P, getUnderlyingType:any P | +| nominaltype.swift:94:6:94:6 | p_alias | any P_alias | getCanonicalType:any P, getFullName:any P_alias, getName:any P_alias, getUnderlyingType:any P_alias | | nominaltype.swift:95:6:95:6 | c1 | C1 | getABaseType:P, getCanonicalType:C1, getFullName:C1, getName:C1, getUnderlyingType:C1 | | nominaltype.swift:96:6:96:6 | c2 | C2 | getABaseType:P, getCanonicalType:C2, getFullName:C2, getName:C2, getUnderlyingType:C2 | | nominaltype.swift:97:6:97:6 | o | Outer | getCanonicalType:Outer, getFullName:Outer, getName:Outer, getUnderlyingType:Outer | | nominaltype.swift:98:6:98:6 | oi | Outer.Inner | getCanonicalType:Outer.Inner, getFullName:Outer.Inner, getName:Inner, getUnderlyingType:Outer.Inner | | nominaltype.swift:99:6:99:6 | oia | Outer.Inner.InnerAlias | getAliasedType:A, getCanonicalType:A, getFullName:Outer.Inner.InnerAlias, getName:InnerAlias, getUnderlyingType:A | -| nominaltype.swift:100:6:100:6 | p1p2 | P1P2 | getCanonicalType:P1 & P2, getFullName:P1P2, getName:P1P2, getUnderlyingType:P1P2 | +| nominaltype.swift:100:6:100:6 | p1p2 | any P1P2 | getCanonicalType:any P1 & P2, getFullName:any P1P2, getName:any P1P2, getUnderlyingType:any P1P2 | | nominaltype.swift:101:6:101:6 | boxInt | Box<A> | getCanonicalType:Box<A>, getFullName:Box<A>, getName:Box<A>, getUnderlyingType:Box<A> | | nominaltype.swift:102:6:102:6 | d1 | D1 | getABaseType:P3, getCanonicalType:D1, getFullName:D1, getName:D1, getUnderlyingType:D1 | | nominaltype.swift:103:6:103:6 | d2 | D2 | getABaseType:P4, getCanonicalType:D2, getFullName:D2, getName:D2, getUnderlyingType:D2 | From 40c932a5f911c7ad5c1ca0cd5d517ee6081f4107 Mon Sep 17 00:00:00 2001 From: Jami Cogswell <jcogs33@Jamis-MacBook-Pro.local> Date: Wed, 27 Mar 2024 10:12:28 -0400 Subject: [PATCH 586/731] Java: move UrlForward.qll code to UrlForwardQuery.qll --- .../semmle/code/java/security/UrlForward.qll | 174 ----------------- .../code/java/security/UrlForwardQuery.qll | 176 +++++++++++++++++- 2 files changed, 172 insertions(+), 178 deletions(-) delete mode 100644 java/ql/lib/semmle/code/java/security/UrlForward.qll diff --git a/java/ql/lib/semmle/code/java/security/UrlForward.qll b/java/ql/lib/semmle/code/java/security/UrlForward.qll deleted file mode 100644 index 26e6e53f9473..000000000000 --- a/java/ql/lib/semmle/code/java/security/UrlForward.qll +++ /dev/null @@ -1,174 +0,0 @@ -/** Provides classes to reason about URL forward attacks. */ - -import java -private import semmle.code.java.dataflow.ExternalFlow -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.dataflow.StringPrefixes -private import semmle.code.java.security.PathSanitizer -private import semmle.code.java.controlflow.Guards -private import semmle.code.java.security.Sanitizers - -/** A URL forward sink. */ -abstract class UrlForwardSink extends DataFlow::Node { } - -/** - * A default sink representing methods susceptible to URL - * forwarding attacks. - */ -private class DefaultUrlForwardSink extends UrlForwardSink { - DefaultUrlForwardSink() { sinkNode(this, "url-forward") } -} - -/** - * An expression appended (perhaps indirectly) to `"forward:"` - * and reachable from a Spring entry point. - */ -private class SpringUrlForwardPrefixSink extends UrlForwardSink { - SpringUrlForwardPrefixSink() { - any(SpringRequestMappingMethod srmm).polyCalls*(this.getEnclosingCallable()) and - appendedToForwardPrefix(this) - } -} - -pragma[nomagic] -private predicate appendedToForwardPrefix(DataFlow::ExprNode exprNode) { - exists(ForwardPrefix fp | exprNode.asExpr() = fp.getAnAppendedExpression()) -} - -private class ForwardPrefix extends InterestingPrefix { - ForwardPrefix() { this.getStringValue() = "forward:" } - - override int getOffset() { result = 0 } -} - -/** A URL forward barrier. */ -abstract class UrlForwardBarrier extends DataFlow::Node { } - -private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } - -/** - * A barrier for values appended to a "redirect:" prefix. - * These results are excluded because they should be handled - * by the `java/unvalidated-url-redirection` query instead. - */ -private class RedirectPrefixBarrier extends UrlForwardBarrier { - RedirectPrefixBarrier() { this.asExpr() = any(RedirectPrefix fp).getAnAppendedExpression() } -} - -private class RedirectPrefix extends InterestingPrefix { - RedirectPrefix() { this.getStringValue() = "redirect:" } - - override int getOffset() { result = 0 } -} - -/** - * A value that is the result of prepending a string that prevents - * any value from controlling the path of a URL. - */ -private class FollowsBarrierPrefix extends UrlForwardBarrier { - FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } -} - -private class BarrierPrefix extends InterestingPrefix { - int offset; - - BarrierPrefix() { - // Matches strings that look like when prepended to untrusted input, they will restrict - // the path of a URL: for example, anything containing `?` or `#`. - exists(this.getStringValue().regexpFind("[?#]", 0, offset)) - or - this.(CharacterLiteral).getValue() = ["?", "#"] and offset = 0 - } - - override int getOffset() { result = offset } -} - -/** - * A barrier that protects against path injection vulnerabilities - * while accounting for URL encoding. - */ -private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionSanitizer { - UrlPathBarrier() { - this instanceof ExactPathMatchSanitizer or - this instanceof NoUrlEncodingBarrier or - this instanceof FullyDecodesUrlBarrier - } -} - -/** A call to a method that decodes a URL. */ -abstract class UrlDecodeCall extends MethodCall { } - -private class DefaultUrlDecodeCall extends UrlDecodeCall { - DefaultUrlDecodeCall() { - this.getMethod() instanceof UrlDecodeMethod or - this.getMethod().hasQualifiedName("org.eclipse.jetty.util.URIUtil", "URIUtil", "decodePath") - } -} - -/** A repeated call to a method that decodes a URL. */ -abstract class RepeatedUrlDecodeCall extends MethodCall { } - -private class DefaultRepeatedUrlDecodeCall extends RepeatedUrlDecodeCall instanceof UrlDecodeCall { - DefaultRepeatedUrlDecodeCall() { this.getAnEnclosingStmt() instanceof LoopStmt } -} - -/** A method call that checks a string for URL encoding. */ -abstract class CheckUrlEncodingCall extends MethodCall { } - -private class DefaultCheckUrlEncodingCall extends CheckUrlEncodingCall { - DefaultCheckUrlEncodingCall() { - this.getMethod() instanceof StringContainsMethod and - this.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "%" - } -} - -/** A guard that looks for a method call that checks for URL encoding. */ -private class CheckUrlEncodingGuard extends Guard instanceof CheckUrlEncodingCall { - Expr getCheckedExpr() { result = this.(MethodCall).getQualifier() } -} - -/** Holds if `g` is guard for a URL that does not contain URL encoding. */ -private predicate noUrlEncodingGuard(Guard g, Expr e, boolean branch) { - e = g.(CheckUrlEncodingGuard).getCheckedExpr() and - branch = false - or - branch = false and - g.(Expr).getType() instanceof BooleanType and - ( - exists(CheckUrlEncodingCall call, AssignExpr ae | - ae.getSource() = call and - e = call.getQualifier() and - g = ae.getDest() - ) - or - exists(CheckUrlEncodingCall call, LocalVariableDeclExpr vde | - vde.getInitOrPatternSource() = call and - e = call.getQualifier() and - g = vde.getAnAccess() - ) - ) -} - -/** A barrier for URLs that do not contain URL encoding. */ -private class NoUrlEncodingBarrier extends DataFlow::Node { - NoUrlEncodingBarrier() { this = DataFlow::BarrierGuard<noUrlEncodingGuard/3>::getABarrierNode() } -} - -/** Holds if `g` is guard for a URL that is fully decoded. */ -private predicate fullyDecodesUrlGuard(Expr e) { - exists(CheckUrlEncodingGuard g, RepeatedUrlDecodeCall decodeCall | - e = g.getCheckedExpr() and - g.controls(decodeCall.getBasicBlock(), true) - ) -} - -/** A barrier for URLs that are fully decoded. */ -private class FullyDecodesUrlBarrier extends DataFlow::Node { - FullyDecodesUrlBarrier() { - exists(Variable v, Expr e | this.asExpr() = v.getAnAccess() | - fullyDecodesUrlGuard(e) and - e = v.getAnAccess() and - e.getBasicBlock().bbDominates(this.asExpr().getBasicBlock()) - ) - } -} diff --git a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll index e90267694b53..2ca38d695512 100644 --- a/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlForwardQuery.qll @@ -1,9 +1,177 @@ -/** Provides a taint-tracking configuration for reasoning about URL forwarding. */ +/** Provides classes and a taint-tracking configuration to reason about unsafe URL forwarding. */ import java -import semmle.code.java.security.UrlForward -import semmle.code.java.dataflow.FlowSources -import semmle.code.java.security.PathSanitizer +private import semmle.code.java.dataflow.ExternalFlow +private import semmle.code.java.dataflow.FlowSources +private import semmle.code.java.dataflow.StringPrefixes +private import semmle.code.java.security.PathSanitizer +private import semmle.code.java.controlflow.Guards +private import semmle.code.java.security.Sanitizers + +/** A URL forward sink. */ +abstract class UrlForwardSink extends DataFlow::Node { } + +/** + * A default sink representing methods susceptible to URL + * forwarding attacks. + */ +private class DefaultUrlForwardSink extends UrlForwardSink { + DefaultUrlForwardSink() { sinkNode(this, "url-forward") } +} + +/** + * An expression appended (perhaps indirectly) to `"forward:"` + * and reachable from a Spring entry point. + */ +private class SpringUrlForwardPrefixSink extends UrlForwardSink { + SpringUrlForwardPrefixSink() { + any(SpringRequestMappingMethod srmm).polyCalls*(this.getEnclosingCallable()) and + appendedToForwardPrefix(this) + } +} + +pragma[nomagic] +private predicate appendedToForwardPrefix(DataFlow::ExprNode exprNode) { + exists(ForwardPrefix fp | exprNode.asExpr() = fp.getAnAppendedExpression()) +} + +private class ForwardPrefix extends InterestingPrefix { + ForwardPrefix() { this.getStringValue() = "forward:" } + + override int getOffset() { result = 0 } +} + +/** A URL forward barrier. */ +abstract class UrlForwardBarrier extends DataFlow::Node { } + +private class PrimitiveBarrier extends UrlForwardBarrier instanceof SimpleTypeSanitizer { } + +/** + * A barrier for values appended to a "redirect:" prefix. + * These results are excluded because they should be handled + * by the `java/unvalidated-url-redirection` query instead. + */ +private class RedirectPrefixBarrier extends UrlForwardBarrier { + RedirectPrefixBarrier() { this.asExpr() = any(RedirectPrefix fp).getAnAppendedExpression() } +} + +private class RedirectPrefix extends InterestingPrefix { + RedirectPrefix() { this.getStringValue() = "redirect:" } + + override int getOffset() { result = 0 } +} + +/** + * A value that is the result of prepending a string that prevents + * any value from controlling the path of a URL. + */ +private class FollowsBarrierPrefix extends UrlForwardBarrier { + FollowsBarrierPrefix() { this.asExpr() = any(BarrierPrefix fp).getAnAppendedExpression() } +} + +private class BarrierPrefix extends InterestingPrefix { + int offset; + + BarrierPrefix() { + // Matches strings that look like when prepended to untrusted input, they will restrict + // the path of a URL: for example, anything containing `?` or `#`. + exists(this.getStringValue().regexpFind("[?#]", 0, offset)) + or + this.(CharacterLiteral).getValue() = ["?", "#"] and offset = 0 + } + + override int getOffset() { result = offset } +} + +/** + * A barrier that protects against path injection vulnerabilities + * while accounting for URL encoding. + */ +private class UrlPathBarrier extends UrlForwardBarrier instanceof PathInjectionSanitizer { + UrlPathBarrier() { + this instanceof ExactPathMatchSanitizer or + this instanceof NoUrlEncodingBarrier or + this instanceof FullyDecodesUrlBarrier + } +} + +/** A call to a method that decodes a URL. */ +abstract class UrlDecodeCall extends MethodCall { } + +private class DefaultUrlDecodeCall extends UrlDecodeCall { + DefaultUrlDecodeCall() { + this.getMethod() instanceof UrlDecodeMethod or + this.getMethod().hasQualifiedName("org.eclipse.jetty.util.URIUtil", "URIUtil", "decodePath") + } +} + +/** A repeated call to a method that decodes a URL. */ +abstract class RepeatedUrlDecodeCall extends MethodCall { } + +private class DefaultRepeatedUrlDecodeCall extends RepeatedUrlDecodeCall instanceof UrlDecodeCall { + DefaultRepeatedUrlDecodeCall() { this.getAnEnclosingStmt() instanceof LoopStmt } +} + +/** A method call that checks a string for URL encoding. */ +abstract class CheckUrlEncodingCall extends MethodCall { } + +private class DefaultCheckUrlEncodingCall extends CheckUrlEncodingCall { + DefaultCheckUrlEncodingCall() { + this.getMethod() instanceof StringContainsMethod and + this.getArgument(0).(CompileTimeConstantExpr).getStringValue() = "%" + } +} + +/** A guard that looks for a method call that checks for URL encoding. */ +private class CheckUrlEncodingGuard extends Guard instanceof CheckUrlEncodingCall { + Expr getCheckedExpr() { result = this.(MethodCall).getQualifier() } +} + +/** Holds if `g` is guard for a URL that does not contain URL encoding. */ +private predicate noUrlEncodingGuard(Guard g, Expr e, boolean branch) { + e = g.(CheckUrlEncodingGuard).getCheckedExpr() and + branch = false + or + branch = false and + g.(Expr).getType() instanceof BooleanType and + ( + exists(CheckUrlEncodingCall call, AssignExpr ae | + ae.getSource() = call and + e = call.getQualifier() and + g = ae.getDest() + ) + or + exists(CheckUrlEncodingCall call, LocalVariableDeclExpr vde | + vde.getInitOrPatternSource() = call and + e = call.getQualifier() and + g = vde.getAnAccess() + ) + ) +} + +/** A barrier for URLs that do not contain URL encoding. */ +private class NoUrlEncodingBarrier extends DataFlow::Node { + NoUrlEncodingBarrier() { this = DataFlow::BarrierGuard<noUrlEncodingGuard/3>::getABarrierNode() } +} + +/** Holds if `g` is guard for a URL that is fully decoded. */ +private predicate fullyDecodesUrlGuard(Expr e) { + exists(CheckUrlEncodingGuard g, RepeatedUrlDecodeCall decodeCall | + e = g.getCheckedExpr() and + g.controls(decodeCall.getBasicBlock(), true) + ) +} + +/** A barrier for URLs that are fully decoded. */ +private class FullyDecodesUrlBarrier extends DataFlow::Node { + FullyDecodesUrlBarrier() { + exists(Variable v, Expr e | this.asExpr() = v.getAnAccess() | + fullyDecodesUrlGuard(e) and + e = v.getAnAccess() and + e.getBasicBlock().bbDominates(this.asExpr().getBasicBlock()) + ) + } +} /** * A taint-tracking configuration for reasoning about URL forwarding. From 86bf4fbbc08951b14662113d2012d95e33e1c89a Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 27 Mar 2024 13:49:40 +0000 Subject: [PATCH 587/731] Go: Make diagnostic names static --- go/extractor/diagnostics/diagnostics.go | 6 +++--- .../invalid-toolchain-version/diagnostics.expected | 4 ++-- .../go/two-go-mods-one-failure/diagnostics.expected | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go/extractor/diagnostics/diagnostics.go b/go/extractor/diagnostics/diagnostics.go index 197d838a1215..385c611aac81 100644 --- a/go/extractor/diagnostics/diagnostics.go +++ b/go/extractor/diagnostics/diagnostics.go @@ -497,7 +497,7 @@ func EmitNewerSystemGoRequired(requiredVersion string) { func EmitExtractionFailedForProjects(path []string) { emitDiagnostic( "go/autobuilder/extraction-failed-for-project", - fmt.Sprintf("Unable to extract %d Go projects", len(path)), + "Unable to extract some Go projects", fmt.Sprintf( "The following %d Go project%s could not be extracted successfully:\n\n`%s`\n", len(path), @@ -512,9 +512,9 @@ func EmitExtractionFailedForProjects(path []string) { func EmitInvalidToolchainVersion(goModPath string, version string) { emitDiagnostic( "go/autobuilder/invalid-go-toolchain-version", - fmt.Sprintf("`%s` is not a valid Go toolchain version", version), + "Invalid Go toolchain version", strings.Join([]string{ - "As of Go 1.21, toolchain versions [must use the 1.N.P syntax](https://tip.golang.org/doc/toolchain#version).", + "As of Go 1.21, toolchain versions [must use the 1.N.P syntax](https://go.dev/doc/toolchain#version).", fmt.Sprintf("`%s` in `%s` does not match this syntax and there is no additional `toolchain` directive, which may cause some `go` commands to fail.", version, goModPath), }, "\n\n"), diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected index e506cc1e2300..2e5d732e53e7 100644 --- a/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected +++ b/go/ql/integration-tests/all-platforms/go/diagnostics/invalid-toolchain-version/diagnostics.expected @@ -2,12 +2,12 @@ "location": { "file": "go.mod" }, - "markdownMessage": "As of Go 1.21, toolchain versions [must use the 1.N.P syntax](https://tip.golang.org/doc/toolchain#version).\n\n`1.21` in `go.mod` does not match this syntax and there is no additional `toolchain` directive, which may cause some `go` commands to fail.", + "markdownMessage": "As of Go 1.21, toolchain versions [must use the 1.N.P syntax](https://go.dev/doc/toolchain#version).\n\n`1.21` in `go.mod` does not match this syntax and there is no additional `toolchain` directive, which may cause some `go` commands to fail.", "severity": "warning", "source": { "extractorName": "go", "id": "go/autobuilder/invalid-go-toolchain-version", - "name": "`1.21` is not a valid Go toolchain version" + "name": "Invalid Go toolchain version" }, "visibility": { "cliSummaryTable": true, diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/diagnostics.expected b/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/diagnostics.expected index 02805a60c998..c37938d5c7c3 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/diagnostics.expected +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/diagnostics.expected @@ -18,7 +18,7 @@ "source": { "extractorName": "go", "id": "go/autobuilder/extraction-failed-for-project", - "name": "Unable to extract 1 Go projects" + "name": "Unable to extract some Go projects" }, "visibility": { "cliSummaryTable": true, From 59ae6dd5f576456c77c94307f655de82bc3be32e Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Wed, 27 Mar 2024 15:07:58 +0000 Subject: [PATCH 588/731] Java: Add a couple of Oxford commas --- java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql index 0ebe0ebb0251..d1cdb8bdfbbb 100644 --- a/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql +++ b/java/ql/src/Likely Bugs/Statements/MissingEnumInSwitch.ql @@ -30,8 +30,8 @@ EnumConstant nthMissing(SwitchStmt switch, int index) { predicate first3(string msg, SwitchStmt switch, EnumConstant e1, EnumConstant e2, EnumConstant e3) { exists(int n | n = strictcount(nthMissing(switch, _)) | if n > 3 - then msg = "Switch statement does not have a case for $@, $@, $@ or " + (n - 3) + " more." - else msg = "Switch statement does not have a case for $@, $@ or $@." + then msg = "Switch statement does not have a case for $@, $@, $@, or " + (n - 3) + " more." + else msg = "Switch statement does not have a case for $@, $@, or $@." ) and e1 = nthMissing(switch, 1) and e2 = nthMissing(switch, 2) and From fda3c9261252245ef649412d4b4d1eed7fdc41b2 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Wed, 27 Mar 2024 15:12:55 +0000 Subject: [PATCH 589/731] Java: Add a changenote for the MissingEnumInSwitch change --- java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md diff --git a/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md b/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md new file mode 100644 index 000000000000..b1531dab6558 --- /dev/null +++ b/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. From ab255d70b52e57851eeab255c6355af3d1237cd8 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 27 Mar 2024 15:15:20 +0000 Subject: [PATCH 590/731] Go: Fix `semver`-related logic bugs --- go/extractor/toolchain/toolchain.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/go/extractor/toolchain/toolchain.go b/go/extractor/toolchain/toolchain.go index a91bf64ba7d4..2cc6b5b4d543 100644 --- a/go/extractor/toolchain/toolchain.go +++ b/go/extractor/toolchain/toolchain.go @@ -23,7 +23,7 @@ var goVersions = map[string]struct{}{} // Adds an entry to the set of installed Go versions for the normalised `version` number. func addGoVersion(version string) { - goVersions[semver.Canonical(version)] = struct{}{} + goVersions[semver.Canonical("v"+version)] = struct{}{} } // Returns the current Go version as returned by 'go version', e.g. go1.14.4 @@ -42,14 +42,14 @@ func GetEnvGoVersion() string { } goVersion = parseGoVersion(string(out)) - addGoVersion(goVersion) + addGoVersion(goVersion[2:]) } return goVersion } // Determines whether, to our knowledge, `version` is available on the current system. func HasGoVersion(version string) bool { - _, found := goVersions[semver.Canonical(version)] + _, found := goVersions[semver.Canonical("v"+version)] return found } @@ -63,7 +63,7 @@ func InstallVersion(workingDir string, version string) bool { // Construct a command to invoke `go version` with `GOTOOLCHAIN=go1.N.0` to give // Go a valid toolchain version to download the toolchain we need; subsequent commands // should then work even with an invalid version that's still in `go.mod` - toolchainArg := "GOTOOLCHAIN=go" + semver.Canonical(version) + toolchainArg := "GOTOOLCHAIN=go" + semver.Canonical("v" + version)[1:] versionCmd := Version() versionCmd.Dir = workingDir versionCmd.Env = append(os.Environ(), toolchainArg) From 6ea99825be6fa14925c5f394e288c565f585d526 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 27 Mar 2024 15:15:40 +0000 Subject: [PATCH 591/731] Go: Add unit test to sanity check `HasGoVersion` --- go/extractor/toolchain/toolchain_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/go/extractor/toolchain/toolchain_test.go b/go/extractor/toolchain/toolchain_test.go index 66d16f97964f..18ca7a6601ba 100644 --- a/go/extractor/toolchain/toolchain_test.go +++ b/go/extractor/toolchain/toolchain_test.go @@ -14,3 +14,9 @@ func TestParseGoVersion(t *testing.T) { } } } + +func TestHasGoVersion(t *testing.T) { + if HasGoVersion("1.21") { + t.Error("Exepected HasGoVersion(\"1.21\" to be false, but got true)") + } +} From 6b1d1d427c227b64cf9418c0dbc8238707727f3b Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 27 Mar 2024 15:16:32 +0000 Subject: [PATCH 592/731] Go: Add integration test for incorrect version format logic --- .../go/go-version-bump/diagnostics.expected | 31 +++++++++++++++++++ .../go/go-version-bump/src/go.mod | 3 ++ .../go/go-version-bump/src/main.go | 3 ++ .../all-platforms/go/go-version-bump/test.py | 18 +++++++++++ 4 files changed, 55 insertions(+) create mode 100644 go/ql/integration-tests/all-platforms/go/go-version-bump/diagnostics.expected create mode 100644 go/ql/integration-tests/all-platforms/go/go-version-bump/src/go.mod create mode 100644 go/ql/integration-tests/all-platforms/go/go-version-bump/src/main.go create mode 100644 go/ql/integration-tests/all-platforms/go/go-version-bump/test.py diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/diagnostics.expected b/go/ql/integration-tests/all-platforms/go/go-version-bump/diagnostics.expected new file mode 100644 index 000000000000..2e5d732e53e7 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/go-version-bump/diagnostics.expected @@ -0,0 +1,31 @@ +{ + "location": { + "file": "go.mod" + }, + "markdownMessage": "As of Go 1.21, toolchain versions [must use the 1.N.P syntax](https://go.dev/doc/toolchain#version).\n\n`1.21` in `go.mod` does not match this syntax and there is no additional `toolchain` directive, which may cause some `go` commands to fail.", + "severity": "warning", + "source": { + "extractorName": "go", + "id": "go/autobuilder/invalid-go-toolchain-version", + "name": "Invalid Go toolchain version" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} +{ + "markdownMessage": "A single `go.mod` file was found.\n\n`go.mod`", + "severity": "note", + "source": { + "extractorName": "go", + "id": "go/autobuilder/single-root-go-mod-found", + "name": "A single `go.mod` file was found in the root" + }, + "visibility": { + "cliSummaryTable": false, + "statusPage": false, + "telemetry": true + } +} diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/src/go.mod b/go/ql/integration-tests/all-platforms/go/go-version-bump/src/go.mod new file mode 100644 index 000000000000..18793f7e295d --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/go-version-bump/src/go.mod @@ -0,0 +1,3 @@ +go 1.21 + +module test diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/src/main.go b/go/ql/integration-tests/all-platforms/go/go-version-bump/src/main.go new file mode 100644 index 000000000000..38dd16da61ac --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/go-version-bump/src/main.go @@ -0,0 +1,3 @@ +package main + +func main() {} diff --git a/go/ql/integration-tests/all-platforms/go/go-version-bump/test.py b/go/ql/integration-tests/all-platforms/go/go-version-bump/test.py new file mode 100644 index 000000000000..43c7d1b38e88 --- /dev/null +++ b/go/ql/integration-tests/all-platforms/go/go-version-bump/test.py @@ -0,0 +1,18 @@ +import os +import subprocess + +from create_database_utils import * +from diagnostics_test_utils import * + +# Set up a GOPATH relative to this test's root directory; +# we set os.environ instead of using extra_env because we +# need it to be set for the call to "go clean -modcache" later +goPath = os.path.join(os.path.abspath(os.getcwd()), ".go") +os.environ['GOPATH'] = goPath +run_codeql_database_create([], lang="go", source="src") + +check_diagnostics() + +# Clean up the temporary GOPATH to prevent Bazel failures next +# time the tests are run; see https://github.com/golang/go/issues/27161 +subprocess.call(["go", "clean", "-modcache"]) From 45b41bb506c9303e9c30146d2a55c59017720395 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Wed, 27 Mar 2024 15:18:24 +0000 Subject: [PATCH 593/731] Go: Mirror stdout/stderr output in `InstallVersion` --- go/extractor/toolchain/toolchain.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go/extractor/toolchain/toolchain.go b/go/extractor/toolchain/toolchain.go index 2cc6b5b4d543..f0469e0e6787 100644 --- a/go/extractor/toolchain/toolchain.go +++ b/go/extractor/toolchain/toolchain.go @@ -67,6 +67,8 @@ func InstallVersion(workingDir string, version string) bool { versionCmd := Version() versionCmd.Dir = workingDir versionCmd.Env = append(os.Environ(), toolchainArg) + versionCmd.Stdout = os.Stdout + versionCmd.Stderr = os.Stderr log.Printf( "Trying to install Go %s using its canonical representation in `%s`.", From e6ba0a34f4e76907a70a00ea1e5f3945ed082b32 Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Wed, 27 Mar 2024 15:24:30 +0000 Subject: [PATCH 594/731] Revert "Ruby: remove customizing-library-models-for-ruby.rst" This reverts commit 5b46256fdb7368454103e3cd885fa09737fb6af6. --- .../customizing-library-models-for-ruby.rst | 406 ++++++++++++++++++ 1 file changed, 406 insertions(+) create mode 100644 docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst new file mode 100644 index 000000000000..8de04d882da2 --- /dev/null +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst @@ -0,0 +1,406 @@ +.. _customizing-library-models-for-ruby: + +:orphan: +:nosearch: + +Customizing Library Models for Ruby +=================================== + +.. include:: ../reusables/beta-note-customizing-library-models.rst + +Ruby analysis can be customized by adding library models in data extension files. + +A data extension for Ruby is a YAML file of the form: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: <name of extensible predicate> + data: + - <tuple1> + - <tuple2> + - ... + +The CodeQL library for Ruby exposes the following extensible predicates: + +- **sourceModel**\(type, path, kind) +- **sinkModel**\(type, path, kind) +- **typeModel**\(type1, type2, path) +- **summaryModel**\(type, path, input, output, kind) + +See the `CLI documentation for how to load and use data extensions in a CodeQL evaluation run <https://docs.google.com/document/d/14IYCHX8wWuU-HTvJ2gPSdXQKHKYbWCHQKOgn8oLaa80/edit#heading=h.m0v53lpi6w2n>`__ (internal access required). + +We'll explain how to use these using a few examples, and provide some reference material at the end of this article. + +Example: Taint sink in the 'tty-command' gem +-------------------------------------------- + +In this example, we'll show how to add the following argument, passed to **tty-command**, as a command-line injection sink: + +.. code-block:: ruby + + tty = TTY::Command.new + tty.run(cmd) # <-- add 'cmd' as a taint sink + +For this example, you can use the following data extension: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: sinkModel + data: + - ["TTY::Command", "Method[run].Argument[0]", "command-injection"] + + +- Since we're adding a new sink, we add a tuple to the **sinkModel** extensible predicate. +- The first column, **"TTY::Command"**, identifies a set of values from which to begin the search for the sink. + The string **"TTY::Command""** means we start at the places where the codebase constructs instances of the class **TTY::Command**. +- The second column is an access path that is evaluated from left to right, starting at the values that were identified by the first column. + + - **Method[run]** selects calls to the **run** method of the **TTY::Command** class. + - **Argument[0]** selects the first argument to calls to that member. + +- **command-injection** indicates that this is considered a sink for the command injection query. + +Example: Taint sources from 'sinatra' block parameters +------------------------------------------------------ + +In this example, we'll show how the 'x' parameter below could be marked as a remote flow source: + +.. code-block:: ruby + + class MyApp < Sinatra::Base + get '/' do |x| # <-- add 'x' as a taint source + # ... + end + end + +For this example you could use the following data extension: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: sourceModel + data: + - [ + "Sinatra::Base!", + "Method[get].Argument[block].Parameter[0]", + "remote", + ] + +- Since we're adding a new taint source, we add a tuple to the **sourceModel** extensible predicate. +- The first column, **"Sinatra::Base!"**, begins the search at references to the **Sinatra::Base** class. + The **!** suffix indicates that we want to search for references to the class itself, rather than instances of the class. +- **Method[get]** selects calls to the **get** method of the **Sinatra::Base** class. +- **Argument[block]** selects the block argument to the **get** method call. +- **Parameter[0]** selects the first parameter of the block argument (the parameter named **x**). +- Finally, the kind **remote** indicates that this is considered a source of remote flow. + +Example: Using types to add MySQL injection sinks +------------------------------------------------- + +In this example, we'll show how to add the following SQL injection sink: + +.. code-block:: ruby + + def submit(q) + client = Mysql2::Client.new + client.query(q) # <-- add 'q' as a SQL injection sink + end + +We can recognize this using the following extension: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: sinkModel + data: + - ["Mysql2::Client", "Method[query].Argument[0]", "sql-injection"] + +- The first column, **"Mysql2::Client"**, begins the search at any instance of the **Mysql2::Client** class. +- **Method[query]** selects any call to the **query** method on that instance. +- **Argument[0]** selects the first argument to the method call. +- **sql-injection** indicates that this is considered a sink for the SQL injection query. + +Continued example: Using type models +------------------------------------ + +Consider this variation on the previous example, the mysql2 EventMachine API is used. +The client is obtained via a call to **Mysql2::EM::Client.new**. + +.. code-block:: ruby + + def submit(client, q) + client = Mysql2::EM::Client.new + client.query(q) + end + +So far we have only one model for **Mysql2::Client**, but in the real world we +may have many models for the various methods available. Because **Mysql2::EM::Client** is a subclass of **Mysql2::Client**, it inherits all of the same methods. +Instead of updating all our models to include both classes, we can add a type +model to indicate that **Mysql2::EM::Client** is a subclass of **Mysql2::Client**: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: typeModel + data: + - ["Mysql2::Client", "Mysql2::EM::Client", ""] + +Example: Adding flow through 'URI.decode_uri_component' +------------------------------------------------------- + +In this example, we'll show how to add flow through calls to 'URI.decode_uri_component': + +.. code-block:: ruby + + y = URI.decode_uri_component(x); # add taint flow from 'x' to 'y' + +We can model this using the following data extension: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: summaryModel + data: + - [ + "URI!", + "Method[decode_uri_component]", + "Argument[0]", + "ReturnValue", + "taint", + ] + + +- Since we're adding flow through a method call, we add a tuple to the **summaryModel** extensible predicate. +- The first column, **"URI!"**, begins the search for relevant calls at references to the **URI** class. +- The **!** suffix indicates that we are looking for the class itself, rather than instances of the class. +- The second column, **Method[decode_uri_component]**, is a path leading to the method calls we wish to model. + In this case, we select references to the **decode_uri_component** method from the **URI** class. +- The third column, **Argument[0]**, indicates the input of the flow. In this case, the first argument to the method call. +- The fourth column, **ReturnValue**, indicates the output of the flow. In this case, the return value of the method call. +- The last column, **taint**, indicates the kind of flow to add. The value **taint** means the output is not necessarily equal + to the input, but was derived from the input in a taint-preserving way. + +Example: Adding flow through 'File#each' +---------------------------------------- + +In this example, we'll show how to add flow through calls to **File#each** from the standard library, which iterates over the lines of a file: + +.. code-block:: ruby + + f = File.new("example.txt") + f.each { |line| ... } # add taint flow from `f` to `line` + +We can model this using the following data extension: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: summaryModel + data: + - [ + "File", + "Method[each]", + "Argument[self]", + "Argument[block].Parameter[0]", + "taint", + ] + + +- Since we're adding flow through a method call, we add a tuple to the **summaryModel** extensible predicate. +- The first column, **"File"**, begins the search for relevant calls at places where the **File** class is used. +- The second column, **Method[each]**, selects references to the **each** method on the **File** class. +- The third column specifies the input of the flow. **Argument[self]** selects the **self** argument of **each**, which is the **File** instance being iterated over. + +- The fourth column specifies the output of the flow: + + - **Argument[block]** selects the block argument of **each** (the block which is executed for each line in the file). + - **Parameter[0]** selects the first parameter of the block (the parameter named **line**). + +- The last column, **taint**, indicates the kind of flow to add. + +Reference material +------------------ + +The following sections provide reference material for extensible predicates, access paths, types, and kinds. + +Extensible predicates +--------------------- + +sourceModel(type, path, kind) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds a new taint source. Most taint-tracking queries will use the new source. + +- **type**: Name of a type from which to evaluate **path**. +- **path**: Access path leading to the source. +- **kind**: Kind of source to add. Currently only **remote** is used. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: sourceModel + data: + - ["User", "Method[name]", "remote"] + +sinkModel(type, path, kind) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds a new taint sink. Sinks are query-specific and will typically affect one or two queries. + +- **type**: Name of a type from which to evaluate **path**. +- **path**: Access path leading to the sink. +- **kind**: Kind of sink to add. See the section on sink kinds for a list of supported kinds. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: sinkModel + data: + - ["ExecuteShell", "Method[run].Argument[0]", "command-injection"] + +summaryModel(type, path, input, output, kind) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds flow through a method call. + +- **type**: Name of a type from which to evaluate **path**. +- **path**: Access path leading to a method call. +- **input**: Path relative to the method call that leads to input of the flow. +- **output**: Path relative to the method call leading to the output of the flow. +- **kind**: Kind of summary to add. Can be **taint** for taint-propagating flow, or **value** for value-preserving flow. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: summaryModel + data: + - [ + "URI", + "Method[decode_uri_component]", + "Argument[0]", + "ReturnValue", + "taint", + ] + +typeModel(type1, type2, path) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds a new definition of a type. + +- **type1**: Name of the type to define. +- **type2**: Name of the type from which to evaluate **path**. +- **path**: Access path leading from **type2** to **type1**. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: typeModel + data: + - [ + "Mysql2::Client", + "MyDbWrapper", + "Method[getConnection].ReturnValue", + ] + +Types +----- + +A type is a string that identifies a set of values. +In each of the extensible predicates mentioned in previous section, the first column is always the name of a type. +A type can be defined by adding **typeModel** tuples for that type. + +Access paths +------------ + +The **path**, **input**, and **output** columns consist of a **.**-separated list of components, which is evaluated from left to right, +with each step selecting a new set of values derived from the previous set of values. + +The following components are supported: + +- **Argument[**\ `number`\ **]** selects the argument at the given index. +- **Argument[**\ `string`:\ **]** selects the keyword argument with the given name. +- **Argument[self]** selects the receiver of a method call. +- **Argument[block]** selects the block argument. +- **Argument[any]** selects any argument, except self or block arguments. +- **Argument[any-named]** selects any keyword argument. +- **Argument[hash-splat]** selects a special argument representing all keyword arguments passed in the method call. +- **Parameter[**\ `number`\ **]** selects the argument at the given index. +- **Parameter[**\ `string`:\ **]** selects the keyword argument with the given name. +- **Parameter[self]** selects the **self** parameter of a method. +- **Parameter[block]** selects the block parameter. +- **Parameter[any]** selects any parameter, except self or block parameters. +- **Parameter[any-named]** selects any keyword parameter. +- **Parameter[hash-splat]** selects the hash splat parameter, often written as **\*\*kwargs**. +- **ReturnValue** selects the return value of a call. +- **Method[**\ `name`\ **]** selects a call to the method with the given name. +- **Element[any]** selects any element of an array or hash. +- **Element[**\ `number`\ **]** selects an array element at the given index. +- **Element[**\ `string`\ **]** selects a hash element at the given key. +- **Field[@**\ `string`\ **]** selects an instance variable with the given name. +- **Fuzzy** selects all values that are derived from the current value through a combination of the other operations described in this list. + For example, this can be used to find all values that appear to originate from a particular class. This can be useful for finding method calls + from a known class, but where the receiver type is not known or is difficult to model. + +Additional notes about the syntax of operands: + +- Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, **Method[foo,bar]** matches the union of **Method[foo]** and **Method[bar]**. +- Numeric operands to **Argument**, **Parameter**, and **Element** may be given as a lower bound. For example, **Argument[1..]** matches all arguments except 0. + +Kinds +----- + +Source kinds +~~~~~~~~~~~~ + +- **remote**: A generic source of remote flow. Most taint-tracking queries will use such a source. Currently this is the only supported source kind. + +Sink kinds +~~~~~~~~~~ + +Unlike sources, sinks tend to be highly query-specific, rarely affecting more than one or two queries. +Not every query supports customizable sinks. If the following sinks are not suitable for your use case, you should add a new query. + +- **code-injection**: A sink that can be used to inject code, such as in calls to **eval**. +- **command-injection**: A sink that can be used to inject shell commands, such as in calls to **Process.spawn**. +- **path-injection**: A sink that can be used for path injection in a file system access, such as in calls to **File.open**. +- **sql-injection**: A sink that can be used for SQL injection, such as in an ActiveRecord **where** call. +- **url-redirection**: A sink that can be used to redirect the user to a malicious URL. +- **log-injection**: A sink that can be used for log injection, such as in a **Rails.logger** call. + +Summary kinds +~~~~~~~~~~~~~ + +- **taint**: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. +- **value**: A summary that preserves the value of the input or creates a copy of the input such that all of its object properties are preserved. From f6e2e1319b2a5c7d757a11a52d99723c68ee320a Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Wed, 27 Mar 2024 15:30:05 +0000 Subject: [PATCH 595/731] Ruby: Link to MaD docs from Ruby doc page Also remove an internal link from the docs. --- docs/codeql/codeql-language-guides/codeql-for-ruby.rst | 2 ++ .../customizing-library-models-for-ruby.rst | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/codeql/codeql-language-guides/codeql-for-ruby.rst b/docs/codeql/codeql-language-guides/codeql-for-ruby.rst index f36df2496bf3..701a88d6a970 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-ruby.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-ruby.rst @@ -23,3 +23,5 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat - :doc:`Using API graphs in Ruby <using-api-graphs-in-ruby>`: API graphs are a uniform interface for referring to functions, classes, and methods defined in external libraries. - :doc:`Abstract syntax tree classes for working with Ruby programs <abstract-syntax-tree-classes-for-working-with-ruby-programs>`: CodeQL has a large selection of classes for representing the abstract syntax tree of Ruby programs. + +- :doc:`Customizing library models for Ruby <customizing-library-models-for-ruby>`: You can model frameworks and libraries that your codebase depends on using data extensions and publish them as CodeQL model packs. diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst index 8de04d882da2..ca9046d016d6 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst @@ -30,8 +30,6 @@ The CodeQL library for Ruby exposes the following extensible predicates: - **typeModel**\(type1, type2, path) - **summaryModel**\(type, path, input, output, kind) -See the `CLI documentation for how to load and use data extensions in a CodeQL evaluation run <https://docs.google.com/document/d/14IYCHX8wWuU-HTvJ2gPSdXQKHKYbWCHQKOgn8oLaa80/edit#heading=h.m0v53lpi6w2n>`__ (internal access required). - We'll explain how to use these using a few examples, and provide some reference material at the end of this article. Example: Taint sink in the 'tty-command' gem From e9957aa4a6a33de7cb5fe179b3c4047d6c2123cb Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Wed, 27 Mar 2024 17:53:36 +0100 Subject: [PATCH 596/731] Swift: make `result` a child in `ThenStmt` --- swift/ql/.generated.list | 2 +- .../codeql/swift/generated/ParentChild.qll | 5 +- .../test/library-tests/ast/PrintAst.expected | 71 ++++++++++++++++++- swift/ql/test/library-tests/ast/cfg.swift | 7 ++ swift/schema.py | 2 +- 5 files changed, 82 insertions(+), 5 deletions(-) diff --git a/swift/ql/.generated.list b/swift/ql/.generated.list index aa85f4aff4e6..0abbd2ee5ae6 100644 --- a/swift/ql/.generated.list +++ b/swift/ql/.generated.list @@ -409,7 +409,7 @@ lib/codeql/swift/generated/Locatable.qll 6cb437dd7ff7331429ec6586b0af50b1af15e4f lib/codeql/swift/generated/Location.qll 3f3bad413be87d05a596fe7b8004f415c2caa98cb759021a6aad20b589b7d700 ed30ed646962b3ffb6b47c97c6434fe47a6b1ea8e3f2e0589577bea5cf96c88e lib/codeql/swift/generated/MacroRole.qll aaf5631c49de81e046854955341202d6d3516713cd09bc2e7b870e40c261cc9f 6cd17d40cbf1d8fa4ef01dfb8b3462b7cee902e6058fb76417c2035be12481d1 lib/codeql/swift/generated/OtherAvailabilitySpec.qll 06393a08e8da36106c5ec6efb9f1bd56a5c7b3d3f3d0bcefc6fa07fa96860c31 06393a08e8da36106c5ec6efb9f1bd56a5c7b3d3f3d0bcefc6fa07fa96860c31 -lib/codeql/swift/generated/ParentChild.qll 2489604e46253d81d7f8e3a8f0a7905481e5b2811d5016794ce5b66846cec22e f10627c078437dc9b8ce98d2a1559e660f86e2aea1d42feac1a79f2e68eeae8a +lib/codeql/swift/generated/ParentChild.qll eae164aa8a78e883e707fba6c671ff2cd0ddab1084b0871fc5ae27c44cded4c5 3af88b63e21d58090f9702e6e4716a5b8a5a65897b8c92362b6e3c0fba60ddc2 lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll 5355be9da8b778d1d8ae60d25d9c3394477da24f94e8a6ab4484c6a16d07cd7c 075438c1762ec0a7775004b39032dcf85aada038a4269e6f428c34b8282786e9 lib/codeql/swift/generated/PureSynthConstructors.qll 40f5c0c573ce12f16322d9efb12306750f672254cbc36a200c298cb08e504229 40f5c0c573ce12f16322d9efb12306750f672254cbc36a200c298cb08e504229 lib/codeql/swift/generated/Raw.qll 10633b948918d315b98b6ff6733d4c368e082c5afd78334c0862291f9d883216 66abde4c9a2283773033d90a4633c1203d6563fc238ddbd48fdf1b910f90021a diff --git a/swift/ql/lib/codeql/swift/generated/ParentChild.qll b/swift/ql/lib/codeql/swift/generated/ParentChild.qll index 1a50686bf3d1..1578315af7dc 100644 --- a/swift/ql/lib/codeql/swift/generated/ParentChild.qll +++ b/swift/ql/lib/codeql/swift/generated/ParentChild.qll @@ -3781,14 +3781,17 @@ private module Impl { } private Element getImmediateChildOfThenStmt(ThenStmt e, int index, string partialPredicateCall) { - exists(int b, int bStmt, int n | + exists(int b, int bStmt, int n, int nResult | b = 0 and bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and n = bStmt and + nResult = n + 1 and ( none() or result = getImmediateChildOfStmt(e, index - b, partialPredicateCall) + or + index = n and result = e.getImmediateResult() and partialPredicateCall = "Result()" ) ) } diff --git a/swift/ql/test/library-tests/ast/PrintAst.expected b/swift/ql/test/library-tests/ast/PrintAst.expected index d3a7ababcc44..4d12907d3a5f 100644 --- a/swift/ql/test/library-tests/ast/PrintAst.expected +++ b/swift/ql/test/library-tests/ast/PrintAst.expected @@ -3476,8 +3476,75 @@ cfg.swift: # 577| getBase(): [CallExpr] call to getMyProtocolImpl() # 577| getFunction(): [DeclRefExpr] getMyProtocolImpl() # 577| getMethodRef(): [DeclRefExpr] source() -# 580| [Comment] // --- -# 580| +# 580| [NamedFunction] singleStmtExpr(_:) +# 580| InterfaceType = (Int) -> () +# 580| getParam(0): [ParamDecl] x +# 580| Type = Int +# 580| getBody(): [BraceStmt] { ... } +# 581| getVariable(0): [ConcreteVarDecl] a +# 581| Type = Int +# 585| getVariable(1): [ConcreteVarDecl] b +# 585| Type = Int +# 581| getElement(0): [PatternBindingDecl] var ... = ... +# 581| getInit(0): [SingleValueStmtExpr] SingleValueStmtExpr +# 581| getStmt(): [SwitchStmt] switch x { ... } +# 581| getExpr(): [DeclRefExpr] x +# 582| getCase(0): [CaseStmt] case ... +# 582| getLabel(0): [CaseLabelItem] =~ ... +# 582| getPattern(): [ExprPattern] =~ ... +# 582| getSubExpr(): [BinaryExpr] ... .~=(_:_:) ... +# 582| getFunction(): [MethodLookupExpr] .~=(_:_:) +# 582| getBase(): [TypeExpr] Range<Int>.Type +# 582| getTypeRepr(): [TypeRepr] Range<Int> +# 582| getMethodRef(): [DeclRefExpr] ~=(_:_:) +# 582| getArgument(0): [Argument] : ... ...<(_:_:) ... +# 582| getExpr(): [BinaryExpr] ... ...<(_:_:) ... +# 582| getFunction(): [MethodLookupExpr] ...<(_:_:) +# 582| getBase(): [TypeExpr] Int.Type +# 582| getTypeRepr(): [TypeRepr] Int +# 582| getMethodRef(): [DeclRefExpr] ..<(_:_:) +# 582| getArgument(0): [Argument] : 0 +# 582| getExpr(): [IntegerLiteralExpr] 0 +# 582| getArgument(1): [Argument] : 5 +# 582| getExpr(): [IntegerLiteralExpr] 5 +# 582| getArgument(1): [Argument] : $match +# 582| getExpr(): [DeclRefExpr] $match +# 582| getBody(): [BraceStmt] { ... } +# 582| getElement(0): [ThenStmt] ThenStmt +# 582| getResult(): [IntegerLiteralExpr] 1 +# 583| getCase(1): [CaseStmt] case ... +# 583| getLabel(0): [CaseLabelItem] _ +# 583| getPattern(): [AnyPattern] _ +# 583| getBody(): [BraceStmt] { ... } +# 583| getElement(0): [ThenStmt] ThenStmt +# 583| getResult(): [IntegerLiteralExpr] 2 +# 581| getPattern(0): [NamedPattern] a +# 585| getElement(1): [PatternBindingDecl] var ... = ... +# 585| getInit(0): [SingleValueStmtExpr] SingleValueStmtExpr +# 585| getStmt(): [IfStmt] if ... then { ... } else { ... } +# 585| getCondition(): [StmtCondition] StmtCondition +# 585| getElement(0): [ConditionElement] ... .<(_:_:) ... +# 585| getBoolean(): [BinaryExpr] ... .<(_:_:) ... +# 585| getFunction(): [MethodLookupExpr] .<(_:_:) +# 585| getBase(): [TypeExpr] Int.Type +# 585| getTypeRepr(): [TypeRepr] Int +# 585| getMethodRef(): [DeclRefExpr] <(_:_:) +# 585| getArgument(0): [Argument] : x +# 585| getExpr(): [DeclRefExpr] x +# 585| getArgument(1): [Argument] : 42 +# 585| getExpr(): [IntegerLiteralExpr] 42 +# 585| getBoolean().getFullyConverted(): [ParenExpr] (...) +# 585| getThen(): [BraceStmt] { ... } +# 585| getElement(0): [ThenStmt] ThenStmt +# 585| getResult(): [IntegerLiteralExpr] 1 +# 585| getElse(): [BraceStmt] { ... } +# 585| getElement(0): [ThenStmt] ThenStmt +# 585| getResult(): [IntegerLiteralExpr] 2 +# 585| getPattern(0): [NamedPattern] b +# 582| [ConcreteVarDecl] $match +# 582| Type = Int +# 587| [Comment] // --- +# 587| declarations.swift: # 1| [StructDecl] Foo # 2| getMember(0): [PatternBindingDecl] var ... = ... diff --git a/swift/ql/test/library-tests/ast/cfg.swift b/swift/ql/test/library-tests/ast/cfg.swift index 270f616cd9c2..09090fc70baa 100644 --- a/swift/ql/test/library-tests/ast/cfg.swift +++ b/swift/ql/test/library-tests/ast/cfg.swift @@ -577,4 +577,11 @@ func testOpenExistentialExpr(x: MyProtocol, y: MyProcotolImpl) { sink(arg: getMyProtocolImpl().source()) } +func singleStmtExpr(_ x: Int) { + let a = switch x { + case 0..<5: 1 + default: 2 + } + let b = if (x < 42) { 1 } else { 2 } +} // --- diff --git a/swift/schema.py b/swift/schema.py index c31c7cfeacfa..66fe693a8bcb 100644 --- a/swift/schema.py +++ b/swift/schema.py @@ -1006,7 +1006,7 @@ class ThenStmt(Stmt): ``` the literal expressions `1`, `2` and `3` are wrapped in `ThenStmt`. """ - result: Expr + result: Expr | child class DoCatchStmt(LabeledStmt): body: Stmt | child From fbc0f572808fcfe22c635cb5b3fb96c48bf0d379 Mon Sep 17 00:00:00 2001 From: James Fletcher <42464962+jf205@users.noreply.github.com> Date: Wed, 27 Mar 2024 16:58:11 +0000 Subject: [PATCH 597/731] Update customizing-library-models-for-javascript.rst --- .../customizing-library-models-for-javascript.rst | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst index 99f6edd055c7..5e3f5d9f74f9 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst @@ -1,8 +1,5 @@ .. _customizing-library-models-for-javascript: -:orphan: -:nosearch: - Customizing Library Models for JavaScript ========================================= @@ -30,8 +27,6 @@ The CodeQL library for JavaScript exposes the following extensible predicates: - **typeModel**\(type1, type2, path) - **summaryModel**\(type, path, input, output, kind) -See the `CLI documentation for how to load and use data extensions in a CodeQL evaluation run <https://docs.google.com/document/d/14IYCHX8wWuU-HTvJ2gPSdXQKHKYbWCHQKOgn8oLaa80/edit#heading=h.m0v53lpi6w2n>`__ (internal access required). - We'll explain how to use these using a few examples, and provide some reference material at the end of this article. Example: Taint sink in the 'execa' package From 121fed63a0185d4a66f079539f01ad4f1fca67c6 Mon Sep 17 00:00:00 2001 From: James Fletcher <42464962+jf205@users.noreply.github.com> Date: Wed, 27 Mar 2024 17:06:31 +0000 Subject: [PATCH 598/731] Update codeql-for-javascript.rst --- docs/codeql/codeql-language-guides/codeql-for-javascript.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst index 40ecb76ee0ae..532f08481f2d 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst @@ -33,3 +33,5 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat - :doc:`Abstract syntax tree classes for working with JavaScript and TypeScript programs <abstract-syntax-tree-classes-for-working-with-javascript-and-typescript-programs>`: CodeQL has a large selection of classes for representing the abstract syntax tree of JavaScript and TypeScript programs. - :doc:`Data flow cheat sheet for JavaScript <data-flow-cheat-sheet-for-javascript>`: This article describes parts of the JavaScript libraries commonly used for variant analysis and in data flow queries. + +- :doc:`Customizing library models for JavaScript <customizing-library-models-for-ruby>`: You can model frameworks and libraries that your codebase depends on using data extensions and publish them as CodeQL model packs. From 04edd6ec69d6e4c0ad00fcc765a8c60e82d10e96 Mon Sep 17 00:00:00 2001 From: James Fletcher <42464962+jf205@users.noreply.github.com> Date: Wed, 27 Mar 2024 17:08:47 +0000 Subject: [PATCH 599/731] Update docs/codeql/codeql-language-guides/codeql-for-javascript.rst --- docs/codeql/codeql-language-guides/codeql-for-javascript.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst index 532f08481f2d..cfc98a1a7d31 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst @@ -34,4 +34,4 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat - :doc:`Data flow cheat sheet for JavaScript <data-flow-cheat-sheet-for-javascript>`: This article describes parts of the JavaScript libraries commonly used for variant analysis and in data flow queries. -- :doc:`Customizing library models for JavaScript <customizing-library-models-for-ruby>`: You can model frameworks and libraries that your codebase depends on using data extensions and publish them as CodeQL model packs. +- :doc:`Customizing library models for JavaScript <customizing-library-models-for-javascript>`: You can model frameworks and libraries that your codebase depends on using data extensions and publish them as CodeQL model packs. From ce0edcc265e41d03f855aad9dbcdd0609ed467d9 Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Wed, 27 Mar 2024 17:29:18 +0000 Subject: [PATCH 600/731] Ruby: Make MaD doc visible to search Co-authored-by: James Fletcher <42464962+jf205@users.noreply.github.com> --- .../customizing-library-models-for-ruby.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst index ca9046d016d6..50a959e14a45 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst @@ -1,7 +1,5 @@ .. _customizing-library-models-for-ruby: -:orphan: -:nosearch: Customizing Library Models for Ruby =================================== From b6a1266ade2eb38572726a053b28b10c76894334 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Wed, 27 Mar 2024 15:35:51 +0000 Subject: [PATCH 601/731] Java: Accept test changes for MissingEnumInSwitch Oxford commas --- .../MissingEnumInSwitch.expected | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected index 5daf2fc5b8a0..deea6bde7308 100644 --- a/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected +++ b/java/ql/test/query-tests/Likely Bugs/Statements/MissingEnumInSwitch/MissingEnumInSwitch.expected @@ -1,10 +1,10 @@ -| Test.java:8:5:8:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 22 more. | Test.java:4:27:4:27 | B | B | Test.java:4:25:4:25 | C | C | Test.java:4:45:4:45 | D | D | -| Test.java:11:5:11:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 21 more. | Test.java:4:25:4:25 | C | C | Test.java:4:45:4:45 | D | D | Test.java:4:15:4:15 | E | E | -| Test.java:15:5:15:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 20 more. | Test.java:4:45:4:45 | D | D | Test.java:4:15:4:15 | E | E | Test.java:4:43:4:43 | F | F | -| Test.java:20:5:20:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 19 more. | Test.java:4:15:4:15 | E | E | Test.java:4:43:4:43 | F | F | Test.java:4:49:4:49 | G | G | -| Test.java:26:5:26:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 18 more. | Test.java:4:43:4:43 | F | F | Test.java:4:49:4:49 | G | G | Test.java:4:35:4:35 | H | H | -| Test.java:33:5:33:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 2 more. | Test.java:4:21:4:21 | V | V | Test.java:4:13:4:13 | W | W | Test.java:4:23:4:23 | X | X | -| Test.java:56:5:56:13 | switch (...) | Switch statement does not have a case for $@, $@, $@ or 1 more. | Test.java:4:13:4:13 | W | W | Test.java:4:23:4:23 | X | X | Test.java:4:11:4:11 | Y | Y | -| Test.java:80:5:80:13 | switch (...) | Switch statement does not have a case for $@, $@ or $@. | Test.java:4:23:4:23 | X | X | Test.java:4:11:4:11 | Y | Y | Test.java:4:33:4:33 | Z | Z | +| Test.java:8:5:8:13 | switch (...) | Switch statement does not have a case for $@, $@, $@, or 22 more. | Test.java:4:27:4:27 | B | B | Test.java:4:25:4:25 | C | C | Test.java:4:45:4:45 | D | D | +| Test.java:11:5:11:13 | switch (...) | Switch statement does not have a case for $@, $@, $@, or 21 more. | Test.java:4:25:4:25 | C | C | Test.java:4:45:4:45 | D | D | Test.java:4:15:4:15 | E | E | +| Test.java:15:5:15:13 | switch (...) | Switch statement does not have a case for $@, $@, $@, or 20 more. | Test.java:4:45:4:45 | D | D | Test.java:4:15:4:15 | E | E | Test.java:4:43:4:43 | F | F | +| Test.java:20:5:20:13 | switch (...) | Switch statement does not have a case for $@, $@, $@, or 19 more. | Test.java:4:15:4:15 | E | E | Test.java:4:43:4:43 | F | F | Test.java:4:49:4:49 | G | G | +| Test.java:26:5:26:13 | switch (...) | Switch statement does not have a case for $@, $@, $@, or 18 more. | Test.java:4:43:4:43 | F | F | Test.java:4:49:4:49 | G | G | Test.java:4:35:4:35 | H | H | +| Test.java:33:5:33:13 | switch (...) | Switch statement does not have a case for $@, $@, $@, or 2 more. | Test.java:4:21:4:21 | V | V | Test.java:4:13:4:13 | W | W | Test.java:4:23:4:23 | X | X | +| Test.java:56:5:56:13 | switch (...) | Switch statement does not have a case for $@, $@, $@, or 1 more. | Test.java:4:13:4:13 | W | W | Test.java:4:23:4:23 | X | X | Test.java:4:11:4:11 | Y | Y | +| Test.java:80:5:80:13 | switch (...) | Switch statement does not have a case for $@, $@, or $@. | Test.java:4:23:4:23 | X | X | Test.java:4:11:4:11 | Y | Y | Test.java:4:33:4:33 | Z | Z | | Test.java:105:5:105:13 | switch (...) | Switch statement does not have a case for $@ or $@. | Test.java:4:11:4:11 | Y | Y | Test.java:4:33:4:33 | Z | Z | Test.java:4:11:4:11 | Y | Y | | Test.java:131:5:131:13 | switch (...) | Switch statement does not have a case for $@. | Test.java:4:33:4:33 | Z | Z | Test.java:4:33:4:33 | Z | Z | Test.java:4:33:4:33 | Z | Z | From 3690f294da0185fa37c32f3e4e78cc08cc668af0 Mon Sep 17 00:00:00 2001 From: Harry Maclean <hmac@github.com> Date: Wed, 27 Mar 2024 21:02:25 +0000 Subject: [PATCH 602/731] Ruby: add MaD doc to TOC tree --- docs/codeql/codeql-language-guides/codeql-for-ruby.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/codeql/codeql-language-guides/codeql-for-ruby.rst b/docs/codeql/codeql-language-guides/codeql-for-ruby.rst index 701a88d6a970..1de2e54d9c6d 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-ruby.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-ruby.rst @@ -13,6 +13,7 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat abstract-syntax-tree-classes-for-working-with-ruby-programs analyzing-data-flow-in-ruby using-api-graphs-in-ruby + customizing-library-models-for-ruby - :doc:`Basic query for Ruby code <basic-query-for-ruby-code>`: Learn to write and run a simple CodeQL query. From 9eb51a9b9e8d86c4c03446e67dd42997ee5edef2 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Wed, 27 Mar 2024 15:44:24 +0100 Subject: [PATCH 603/731] C++: Add value category column to the expr_reuse relation --- .../expr_reuse.ql | 7 + .../expr_types.ql | 22 + .../old.dbscheme | 2251 ++++++++ .../semmlecode.cpp.dbscheme | 2250 ++++++++ .../upgrade.properties | 4 + cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll | 10 +- cpp/ql/lib/semmlecode.cpp.dbscheme | 3 +- cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 4597 +++++++++-------- .../expr_reuse.ql | 7 + .../old.dbscheme | 2250 ++++++++ .../semmlecode.cpp.dbscheme | 2251 ++++++++ .../upgrade.properties | 3 + 12 files changed, 11396 insertions(+), 2259 deletions(-) create mode 100644 cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_reuse.ql create mode 100644 cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_types.ql create mode 100644 cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/old.dbscheme create mode 100644 cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/semmlecode.cpp.dbscheme create mode 100644 cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/upgrade.properties create mode 100644 cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/expr_reuse.ql create mode 100644 cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme create mode 100644 cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme create mode 100644 cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties diff --git a/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_reuse.ql b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_reuse.ql new file mode 100644 index 000000000000..201aa17cafd4 --- /dev/null +++ b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_reuse.ql @@ -0,0 +1,7 @@ +class Expr extends @expr { + string toString() { none() } +} + +from Expr reuse, Expr original +where expr_reuse(reuse, original, _) +select reuse, original diff --git a/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_types.ql b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_types.ql new file mode 100644 index 000000000000..0dc918e8d71c --- /dev/null +++ b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/expr_types.ql @@ -0,0 +1,22 @@ +class Expr extends @expr { + string toString() { none() } +} + +class Type extends @type { + string toString() { none() } +} + +predicate existingType(Expr expr, Type type, int value_category) { + expr_types(expr, type, value_category) +} + +predicate reuseType(Expr reuse, Type type, int value_category) { + exists(Expr original | + expr_reuse(reuse, original, value_category) and + expr_types(original, type, _) + ) +} + +from Expr expr, Type type, int value_category +where existingType(expr, type, value_category) or reuseType(expr, type, value_category) +select expr, type, value_category diff --git a/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/old.dbscheme b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/old.dbscheme new file mode 100644 index 000000000000..abfce5c170f9 --- /dev/null +++ b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/old.dbscheme @@ -0,0 +1,2251 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/semmlecode.cpp.dbscheme b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..aa7ff0ab32cd --- /dev/null +++ b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/semmlecode.cpp.dbscheme @@ -0,0 +1,2250 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/upgrade.properties b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/upgrade.properties new file mode 100644 index 000000000000..00edbefddf72 --- /dev/null +++ b/cpp/downgrades/abfce5c170f93e281948f7689ece373464fdaf87/upgrade.properties @@ -0,0 +1,4 @@ +description: Add value category to expr_reuse table +compatibility: full +expr_reuse.rel: run expr_reuse.qlo +expr_types.rel: run expr_types.qlo diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index 42e441668f28..a41a0b35fc81 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -1340,5 +1340,13 @@ class ReuseExpr extends Expr, @reuseexpr { /** * Gets the expression that is being re-used. */ - Expr getReusedExpr() { expr_reuse(underlyingElement(this), unresolveElement(result)) } + Expr getReusedExpr() { expr_reuse(underlyingElement(this), unresolveElement(result), _) } + + override Type getType() { result = this.getReusedExpr().getType() } + + override predicate isLValueCategory() { expr_reuse(underlyingElement(this), _, 3) } + + override predicate isXValueCategory() { expr_reuse(underlyingElement(this), _, 2) } + + override predicate isPRValueCategory() { expr_reuse(underlyingElement(this), _, 1) } } diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index aa7ff0ab32cd..abfce5c170f9 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -1515,7 +1515,8 @@ exprs( expr_reuse( int reuse: @expr ref, - int original: @expr ref + int original: @expr ref, + int value_category: int ref ) /* diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 8d4a841aaf8a..d6f973be1f64 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,7 +2,7 @@ <typesizes> <e> <k>@compilation</k> - <v>9657</v> + <v>9654</v> </e> <e> <k>@externalDataElement</k> @@ -18,71 +18,71 @@ </e> <e> <k>@location_default</k> - <v>29786456</v> + <v>29787737</v> </e> <e> <k>@location_stmt</k> - <v>3820105</v> + <v>3820076</v> </e> <e> - <k>@location_expr</k> - <v>13188716</v> + <k>@diagnostic</k> + <v>5001</v> </e> <e> - <k>@diagnostic</k> - <v>5013</v> + <k>@location_expr</k> + <v>13188614</v> </e> <e> <k>@file</k> - <v>123134</v> + <v>123139</v> </e> <e> <k>@folder</k> - <v>16324</v> + <v>16325</v> </e> <e> <k>@macro_expansion</k> - <v>32971750</v> + <v>32959239</v> </e> <e> <k>@other_macro_reference</k> - <v>858211</v> + <v>858248</v> </e> <e> <k>@function</k> - <v>4646000</v> + <v>4646200</v> </e> <e> <k>@fun_decl</k> - <v>5009807</v> + <v>5010023</v> </e> <e> <k>@var_decl</k> - <v>8423062</v> + <v>8423424</v> </e> <e> <k>@type_decl</k> - <v>3242079</v> + <v>3242218</v> </e> <e> <k>@namespace_decl</k> - <v>311530</v> + <v>311523</v> </e> <e> <k>@using</k> - <v>369403</v> + <v>369419</v> </e> <e> <k>@static_assert</k> - <v>134655</v> + <v>134652</v> </e> <e> <k>@parameter</k> - <v>6576042</v> + <v>6576325</v> </e> <e> <k>@membervariable</k> - <v>1054758</v> + <v>1054750</v> </e> <e> <k>@globalvariable</k> @@ -90,11 +90,11 @@ </e> <e> <k>@localvariable</k> - <v>576906</v> + <v>576895</v> </e> <e> <k>@enumconstant</k> - <v>241684</v> + <v>241682</v> </e> <e> <k>@errortype</k> @@ -322,35 +322,35 @@ </e> <e> <k>@pointer</k> - <v>567632</v> + <v>567656</v> </e> <e> <k>@type_with_specifiers</k> - <v>1010263</v> + <v>1010307</v> </e> <e> <k>@array</k> - <v>110074</v> + <v>110079</v> </e> <e> <k>@routineptr</k> - <v>624659</v> + <v>624503</v> </e> <e> <k>@reference</k> - <v>1721148</v> + <v>1720495</v> </e> <e> <k>@gnu_vector</k> - <v>693</v> + <v>671</v> </e> <e> <k>@routinereference</k> - <v>235</v> + <v>234</v> </e> <e> <k>@rvalue_reference</k> - <v>620692</v> + <v>620537</v> </e> <e> <k>@block</k> @@ -358,43 +358,43 @@ </e> <e> <k>@decltype</k> - <v>27052</v> + <v>27053</v> </e> <e> <k>@usertype</k> - <v>5229957</v> + <v>5230182</v> </e> <e> <k>@mangledname</k> - <v>6448244</v> + <v>6448521</v> </e> <e> <k>@type_mention</k> - <v>4029370</v> + <v>4029338</v> </e> <e> <k>@routinetype</k> - <v>538161</v> + <v>538026</v> </e> <e> <k>@ptrtomember</k> - <v>37779</v> + <v>37781</v> </e> <e> <k>@specifier</k> - <v>24720</v> + <v>24721</v> </e> <e> <k>@gnuattribute</k> - <v>685636</v> + <v>685665</v> </e> <e> <k>@stdattribute</k> - <v>487895</v> + <v>487639</v> </e> <e> <k>@declspec</k> - <v>243123</v> + <v>243121</v> </e> <e> <k>@msattribute</k> @@ -402,15 +402,15 @@ </e> <e> <k>@alignas</k> - <v>9794</v> + <v>9795</v> </e> <e> <k>@attribute_arg_token</k> - <v>39179</v> + <v>39180</v> </e> <e> <k>@attribute_arg_constant_expr</k> - <v>370336</v> + <v>370352</v> </e> <e> <k>@attribute_arg_empty</k> @@ -430,19 +430,19 @@ </e> <e> <k>@derivation</k> - <v>391086</v> + <v>390988</v> </e> <e> <k>@frienddecl</k> - <v>706182</v> + <v>706005</v> </e> <e> <k>@comment</k> - <v>8686670</v> + <v>8682106</v> </e> <e> <k>@namespace</k> - <v>12126</v> + <v>12127</v> </e> <e> <k>@specialnamequalifyingelement</k> @@ -450,15 +450,15 @@ </e> <e> <k>@namequalifier</k> - <v>1516804</v> + <v>1515301</v> </e> <e> <k>@value</k> - <v>10777325</v> + <v>10777241</v> </e> <e> <k>@initialiser</k> - <v>1710241</v> + <v>1710223</v> </e> <e> <k>@address_of</k> @@ -466,15 +466,15 @@ </e> <e> <k>@indirect</k> - <v>292663</v> + <v>292660</v> </e> <e> <k>@array_to_pointer</k> - <v>1430922</v> + <v>1430911</v> </e> <e> <k>@parexpr</k> - <v>3587688</v> + <v>3587661</v> </e> <e> <k>@arithnegexpr</k> @@ -490,15 +490,15 @@ </e> <e> <k>@notexpr</k> - <v>276441</v> + <v>276439</v> </e> <e> <k>@postincrexpr</k> - <v>62049</v> + <v>62048</v> </e> <e> <k>@postdecrexpr</k> - <v>42038</v> + <v>42037</v> </e> <e> <k>@preincrexpr</k> @@ -510,75 +510,75 @@ </e> <e> <k>@conditionalexpr</k> - <v>657276</v> + <v>657271</v> </e> <e> <k>@addexpr</k> - <v>398417</v> + <v>398414</v> </e> <e> <k>@subexpr</k> - <v>340778</v> + <v>340775</v> </e> <e> <k>@mulexpr</k> - <v>306374</v> + <v>306372</v> </e> <e> <k>@divexpr</k> - <v>133174</v> + <v>133173</v> </e> <e> <k>@remexpr</k> - <v>15622</v> + <v>15618</v> </e> <e> <k>@paddexpr</k> - <v>86667</v> + <v>86666</v> </e> <e> <k>@psubexpr</k> - <v>49903</v> + <v>49902</v> </e> <e> <k>@pdiffexpr</k> - <v>35197</v> + <v>35178</v> </e> <e> <k>@lshiftexpr</k> - <v>566336</v> + <v>566331</v> </e> <e> <k>@rshiftexpr</k> - <v>140848</v> + <v>140847</v> </e> <e> <k>@andexpr</k> - <v>489084</v> + <v>489081</v> </e> <e> <k>@orexpr</k> - <v>145473</v> + <v>145472</v> </e> <e> <k>@xorexpr</k> - <v>54178</v> + <v>54177</v> </e> <e> <k>@eqexpr</k> - <v>470677</v> + <v>470674</v> </e> <e> <k>@neexpr</k> - <v>301684</v> + <v>301682</v> </e> <e> <k>@gtexpr</k> - <v>104011</v> + <v>104015</v> </e> <e> <k>@ltexpr</k> - <v>101679</v> + <v>101683</v> </e> <e> <k>@geexpr</k> @@ -586,11 +586,11 @@ </e> <e> <k>@leexpr</k> - <v>212539</v> + <v>212537</v> </e> <e> <k>@assignexpr</k> - <v>937011</v> + <v>937004</v> </e> <e> <k>@assignaddexpr</k> @@ -602,7 +602,7 @@ </e> <e> <k>@assignmulexpr</k> - <v>8214</v> + <v>8210</v> </e> <e> <k>@assigndivexpr</k> @@ -610,7 +610,7 @@ </e> <e> <k>@assignremexpr</k> - <v>414</v> + <v>413</v> </e> <e> <k>@assignlshiftexpr</k> @@ -642,23 +642,23 @@ </e> <e> <k>@andlogicalexpr</k> - <v>249967</v> + <v>249965</v> </e> <e> <k>@orlogicalexpr</k> - <v>866161</v> + <v>866154</v> </e> <e> <k>@commaexpr</k> - <v>122776</v> + <v>122711</v> </e> <e> <k>@subscriptexpr</k> - <v>364887</v> + <v>364880</v> </e> <e> <k>@callexpr</k> - <v>316232</v> + <v>316245</v> </e> <e> <k>@vastartexpr</k> @@ -678,15 +678,15 @@ </e> <e> <k>@varaccess</k> - <v>6029477</v> + <v>6029430</v> </e> <e> <k>@runtime_sizeof</k> - <v>295853</v> + <v>295851</v> </e> <e> <k>@runtime_alignof</k> - <v>49198</v> + <v>49186</v> </e> <e> <k>@expr_stmt</k> @@ -694,11 +694,11 @@ </e> <e> <k>@routineexpr</k> - <v>3151079</v> + <v>3150048</v> </e> <e> <k>@type_operand</k> - <v>1128821</v> + <v>1128813</v> </e> <e> <k>@offsetofexpr</k> @@ -706,7 +706,7 @@ </e> <e> <k>@typescompexpr</k> - <v>563810</v> + <v>563806</v> </e> <e> <k>@literal</k> @@ -722,27 +722,27 @@ </e> <e> <k>@temp_init</k> - <v>796653</v> + <v>795228</v> </e> <e> <k>@errorexpr</k> - <v>46241</v> + <v>46229</v> </e> <e> <k>@reference_to</k> - <v>1570260</v> + <v>1569867</v> </e> <e> <k>@ref_indirect</k> - <v>1906893</v> + <v>1906417</v> </e> <e> <k>@vacuous_destructor_call</k> - <v>8037</v> + <v>8035</v> </e> <e> <k>@assume</k> - <v>3231</v> + <v>3230</v> </e> <e> <k>@conjugation</k> @@ -794,31 +794,31 @@ </e> <e> <k>@thisaccess</k> - <v>1117586</v> + <v>1117561</v> </e> <e> <k>@new_expr</k> - <v>47006</v> + <v>46995</v> </e> <e> <k>@delete_expr</k> - <v>11621</v> + <v>11618</v> </e> <e> <k>@throw_expr</k> - <v>21061</v> + <v>21053</v> </e> <e> <k>@condition_decl</k> - <v>40853</v> + <v>40753</v> </e> <e> <k>@braced_init_list</k> - <v>1067</v> + <v>1064</v> </e> <e> <k>@type_id</k> - <v>35977</v> + <v>35968</v> </e> <e> <k>@sizeof_pack</k> @@ -878,11 +878,11 @@ </e> <e> <k>@isconvtoexpr</k> - <v>207</v> + <v>206</v> </e> <e> <k>@isemptyexpr</k> - <v>1461</v> + <v>1460</v> </e> <e> <k>@isenumexpr</k> @@ -914,7 +914,7 @@ </e> <e> <k>@delete_array_expr</k> - <v>1365</v> + <v>1364</v> </e> <e> <k>@new_array_expr</k> @@ -926,55 +926,55 @@ </e> <e> <k>@ctordirectinit</k> - <v>111410</v> + <v>111383</v> </e> <e> <k>@ctorvirtualinit</k> - <v>6322</v> + <v>6320</v> </e> <e> <k>@ctorfieldinit</k> - <v>198326</v> + <v>198277</v> </e> <e> <k>@ctordelegatinginit</k> - <v>3305</v> + <v>3304</v> </e> <e> <k>@dtordirectdestruct</k> - <v>41231</v> + <v>41220</v> </e> <e> <k>@dtorvirtualdestruct</k> - <v>4070</v> + <v>4069</v> </e> <e> <k>@dtorfielddestruct</k> - <v>41126</v> + <v>41116</v> </e> <e> <k>@static_cast</k> - <v>214451</v> + <v>214369</v> </e> <e> <k>@reinterpret_cast</k> - <v>30745</v> + <v>30729</v> </e> <e> <k>@const_cast</k> - <v>34990</v> + <v>34971</v> </e> <e> <k>@dynamic_cast</k> - <v>1007</v> + <v>1006</v> </e> <e> <k>@lambdaexpr</k> - <v>21455</v> + <v>21456</v> </e> <e> <k>@param_ref</k> - <v>236428</v> + <v>235847</v> </e> <e> <k>@noopexpr</k> @@ -994,7 +994,7 @@ </e> <e> <k>@istriviallydestructibleexpr</k> - <v>828</v> + <v>827</v> </e> <e> <k>@istriviallyassignableexpr</k> @@ -1002,7 +1002,7 @@ </e> <e> <k>@isnothrowassignableexpr</k> - <v>4140</v> + <v>4138</v> </e> <e> <k>@istrivialexpr</k> @@ -1038,7 +1038,7 @@ </e> <e> <k>@isnothrowconstructibleexpr</k> - <v>14285</v> + <v>14278</v> </e> <e> <k>@hasfinalizerexpr</k> @@ -1074,11 +1074,11 @@ </e> <e> <k>@isfinalexpr</k> - <v>1670</v> + <v>1669</v> </e> <e> <k>@noexceptexpr</k> - <v>24725</v> + <v>24664</v> </e> <e> <k>@builtinshufflevector</k> @@ -1090,7 +1090,7 @@ </e> <e> <k>@builtinaddressof</k> - <v>13117</v> + <v>13114</v> </e> <e> <k>@vec_fill</k> @@ -1134,7 +1134,7 @@ </e> <e> <k>@builtinshuffle</k> - <v>1902</v> + <v>1901</v> </e> <e> <k>@blockassignexpr</k> @@ -1250,67 +1250,67 @@ </e> <e> <k>@reuseexpr</k> - <v>331632</v> + <v>333955</v> </e> <e> <k>@lambdacapture</k> - <v>27985</v> + <v>27986</v> </e> <e> <k>@stmt_expr</k> - <v>1486111</v> + <v>1486099</v> </e> <e> <k>@stmt_if</k> - <v>725956</v> + <v>725951</v> </e> <e> <k>@stmt_while</k> - <v>29152</v> + <v>29141</v> </e> <e> <k>@stmt_goto</k> - <v>110697</v> + <v>110696</v> </e> <e> <k>@stmt_label</k> - <v>53145</v> + <v>53144</v> </e> <e> <k>@stmt_return</k> - <v>1284984</v> + <v>1285039</v> </e> <e> <k>@stmt_block</k> - <v>1423977</v> + <v>1424038</v> </e> <e> <k>@stmt_end_test_while</k> - <v>148882</v> + <v>148881</v> </e> <e> <k>@stmt_for</k> - <v>61560</v> + <v>61559</v> </e> <e> <k>@stmt_switch_case</k> - <v>201865</v> + <v>207702</v> </e> <e> <k>@stmt_switch</k> - <v>20788</v> + <v>20787</v> </e> <e> <k>@stmt_asm</k> - <v>109989</v> + <v>109988</v> </e> <e> <k>@stmt_decl</k> - <v>589211</v> + <v>588988</v> </e> <e> <k>@stmt_empty</k> - <v>191899</v> + <v>191895</v> </e> <e> <k>@stmt_continue</k> @@ -1318,11 +1318,11 @@ </e> <e> <k>@stmt_break</k> - <v>103183</v> + <v>103193</v> </e> <e> <k>@stmt_try_block</k> - <v>45181</v> + <v>45069</v> </e> <e> <k>@stmt_microsoft_try</k> @@ -1346,11 +1346,11 @@ </e> <e> <k>@stmt_handler</k> - <v>62891</v> + <v>62736</v> </e> <e> <k>@stmt_constexpr_if</k> - <v>52071</v> + <v>52043</v> </e> <e> <k>@stmt_co_return</k> @@ -1358,39 +1358,39 @@ </e> <e> <k>@ppd_if</k> - <v>666512</v> + <v>666541</v> </e> <e> <k>@ppd_ifdef</k> - <v>263060</v> + <v>263071</v> </e> <e> <k>@ppd_ifndef</k> - <v>266325</v> + <v>266336</v> </e> <e> <k>@ppd_elif</k> - <v>25186</v> + <v>25187</v> </e> <e> <k>@ppd_else</k> - <v>208955</v> + <v>208964</v> </e> <e> <k>@ppd_endif</k> - <v>1195898</v> + <v>1195950</v> </e> <e> <k>@ppd_plain_include</k> - <v>311101</v> + <v>311114</v> </e> <e> <k>@ppd_define</k> - <v>2408524</v> + <v>2407258</v> </e> <e> <k>@ppd_undef</k> - <v>258396</v> + <v>258407</v> </e> <e> <k>@ppd_include_next</k> @@ -1406,7 +1406,7 @@ </e> <e> <k>@ppd_pragma</k> - <v>311805</v> + <v>311642</v> </e> <e> <k>@ppd_objc_import</k> @@ -1418,7 +1418,7 @@ </e> <e> <k>@link_target</k> - <v>819</v> + <v>817</v> </e> <e> <k>@xmldtd</k> @@ -1436,23 +1436,23 @@ <k>@xmlnamespace</k> <v>4185</v> </e> - <e> - <k>@xmlcomment</k> - <v>26812</v> - </e> <e> <k>@xmlcharacters</k> <v>439958</v> </e> + <e> + <k>@xmlcomment</k> + <v>26812</v> + </e> </typesizes> <stats> <relation> <name>compilations</name> - <cardinality>9657</cardinality> + <cardinality>9654</cardinality> <columnsizes> <e> <k>id</k> - <v>9657</v> + <v>9654</v> </e> <e> <k>cwd</k> @@ -1470,7 +1470,7 @@ <b> <a>1</a> <b>2</b> - <v>9657</v> + <v>9654</v> </b> </bs> </hist> @@ -1496,7 +1496,7 @@ </relation> <relation> <name>compilation_args</name> - <cardinality>652589</cardinality> + <cardinality>652584</cardinality> <columnsizes> <e> <k>id</k> @@ -1508,7 +1508,7 @@ </e> <e> <k>arg</k> - <v>34463</v> + <v>34462</v> </e> </columnsizes> <dependencies> @@ -2044,7 +2044,7 @@ </e> <e> <k>seconds</k> - <v>9828</v> + <v>9748</v> </e> </columnsizes> <dependencies> @@ -2125,47 +2125,47 @@ <b> <a>3</a> <b>4</b> - <v>719</v> + <v>759</v> </b> <b> <a>4</a> <b>5</b> - <v>279</v> + <v>239</v> </b> <b> <a>5</a> - <b>8</b> - <v>159</v> + <b>7</b> + <v>119</v> </b> <b> - <a>9</a> + <a>8</a> <b>10</b> <v>159</v> </b> <b> <a>10</a> + <b>11</b> + <v>79</v> + </b> + <b> + <a>11</a> <b>12</b> <v>159</v> </b> <b> <a>12</a> - <b>16</b> - <v>119</v> - </b> - <b> - <a>16</a> - <b>18</b> + <b>17</b> <v>159</v> </b> <b> - <a>19</a> - <b>43</b> + <a>18</a> + <b>22</b> <v>159</v> </b> <b> - <a>57</a> - <b>92</b> - <v>79</v> + <a>25</a> + <b>98</b> + <v>159</v> </b> </bs> </hist> @@ -2233,22 +2233,22 @@ <b> <a>3</a> <b>4</b> - <v>1478</v> + <v>1438</v> </b> <b> <a>4</a> <b>5</b> - <v>279</v> + <v>319</v> </b> <b> <a>5</a> <b>6</b> - <v>239</v> + <v>199</v> </b> <b> <a>6</a> <b>7</b> - <v>439</v> + <v>479</v> </b> <b> <a>7</a> @@ -2257,18 +2257,18 @@ </b> <b> <a>8</a> - <b>9</b> - <v>199</v> + <b>10</b> + <v>279</v> </b> <b> - <a>9</a> - <b>23</b> - <v>279</v> + <a>10</a> + <b>26</b> + <v>239</v> </b> <b> - <a>24</a> - <b>90</b> - <v>279</v> + <a>26</a> + <b>84</b> + <v>239</v> </b> </bs> </hist> @@ -2316,21 +2316,16 @@ <b> <a>3</a> <b>4</b> - <v>39</v> - </b> - <b> - <a>4</a> - <b>5</b> - <v>39</v> + <v>79</v> </b> <b> - <a>136</a> - <b>137</b> + <a>137</a> + <b>138</b> <v>39</v> </b> <b> - <a>146</a> - <b>147</b> + <a>142</a> + <b>143</b> <v>39</v> </b> </bs> @@ -2347,27 +2342,27 @@ <b> <a>1</a> <b>2</b> - <v>4834</v> + <v>4994</v> </b> <b> <a>2</a> <b>3</b> - <v>2557</v> + <v>2117</v> </b> <b> <a>3</a> <b>4</b> - <v>1238</v> + <v>1278</v> </b> <b> <a>4</a> <b>5</b> - <v>719</v> + <v>958</v> </b> <b> <a>5</a> - <b>46</b> - <v>479</v> + <b>47</b> + <v>399</v> </b> </bs> </hist> @@ -2383,32 +2378,32 @@ <b> <a>1</a> <b>2</b> - <v>4474</v> + <v>4554</v> </b> <b> <a>2</a> <b>3</b> - <v>2197</v> + <v>1997</v> </b> <b> <a>3</a> <b>4</b> - <v>1318</v> + <v>1238</v> </b> <b> <a>4</a> <b>5</b> - <v>679</v> + <v>839</v> </b> <b> <a>5</a> <b>7</b> - <v>799</v> + <v>878</v> </b> <b> <a>7</a> - <b>76</b> - <v>359</v> + <b>74</b> + <v>239</v> </b> </bs> </hist> @@ -2429,7 +2424,7 @@ <b> <a>2</a> <b>3</b> - <v>1718</v> + <v>1638</v> </b> </bs> </hist> @@ -2439,15 +2434,15 @@ </relation> <relation> <name>diagnostic_for</name> - <cardinality>5471</cardinality> + <cardinality>5457</cardinality> <columnsizes> <e> <k>diagnostic</k> - <v>5013</v> + <v>5001</v> </e> <e> <k>compilation</k> - <v>819</v> + <v>817</v> </e> <e> <k>file_number</k> @@ -2455,7 +2450,7 @@ </e> <e> <k>file_number_diagnostic_number</k> - <v>400</v> + <v>399</v> </e> </columnsizes> <dependencies> @@ -2469,7 +2464,7 @@ <b> <a>1</a> <b>2</b> - <v>4861</v> + <v>4849</v> </b> <b> <a>2</a> @@ -2490,7 +2485,7 @@ <b> <a>1</a> <b>2</b> - <v>5013</v> + <v>5001</v> </b> </bs> </hist> @@ -2506,7 +2501,7 @@ <b> <a>1</a> <b>2</b> - <v>5013</v> + <v>5001</v> </b> </bs> </hist> @@ -2522,7 +2517,7 @@ <b> <a>5</a> <b>6</b> - <v>610</v> + <v>608</v> </b> <b> <a>7</a> @@ -2558,7 +2553,7 @@ <b> <a>1</a> <b>2</b> - <v>819</v> + <v>817</v> </b> </bs> </hist> @@ -2574,7 +2569,7 @@ <b> <a>5</a> <b>6</b> - <v>610</v> + <v>608</v> </b> <b> <a>7</a> @@ -2755,7 +2750,7 @@ <b> <a>1</a> <b>2</b> - <v>400</v> + <v>399</v> </b> </bs> </hist> @@ -2765,15 +2760,15 @@ </relation> <relation> <name>compilation_finished</name> - <cardinality>9657</cardinality> + <cardinality>9654</cardinality> <columnsizes> <e> <k>id</k> - <v>9657</v> + <v>9654</v> </e> <e> <k>cpu_seconds</k> - <v>7330</v> + <v>7763</v> </e> <e> <k>elapsed_seconds</k> @@ -2791,7 +2786,7 @@ <b> <a>1</a> <b>2</b> - <v>9657</v> + <v>9654</v> </b> </bs> </hist> @@ -2807,7 +2802,7 @@ <b> <a>1</a> <b>2</b> - <v>9657</v> + <v>9654</v> </b> </bs> </hist> @@ -2823,17 +2818,17 @@ <b> <a>1</a> <b>2</b> - <v>6054</v> + <v>6510</v> </b> <b> <a>2</a> <b>3</b> - <v>850</v> + <v>872</v> </b> <b> <a>3</a> - <b>20</b> - <v>425</v> + <b>14</b> + <v>380</v> </b> </bs> </hist> @@ -2849,12 +2844,12 @@ <b> <a>1</a> <b>2</b> - <v>6692</v> + <v>7461</v> </b> <b> <a>2</a> <b>3</b> - <v>637</v> + <v>302</v> </b> </bs> </hist> @@ -2868,53 +2863,63 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>2</a> + <b>3</b> + <v>22</v> + </b> + <b> + <a>3</a> + <b>4</b> <v>11</v> </b> <b> - <a>2</a> - <b>3</b> - <v>33</v> + <a>6</a> + <b>7</b> + <v>11</v> </b> <b> <a>7</a> <b>8</b> - <v>22</v> + <v>11</v> </b> <b> - <a>11</a> - <b>12</b> + <a>8</a> + <b>9</b> <v>11</v> </b> <b> - <a>12</a> - <b>13</b> + <a>9</a> + <b>10</b> <v>11</v> </b> <b> - <a>52</a> - <b>53</b> + <a>37</a> + <b>38</b> <v>11</v> </b> <b> - <a>161</a> - <b>162</b> + <a>47</a> + <b>48</b> <v>11</v> </b> <b> - <a>163</a> - <b>164</b> + <a>118</a> + <b>119</b> <v>11</v> </b> <b> - <a>184</a> - <b>185</b> + <a>140</a> + <b>141</b> + <v>11</v> + </b> + <b> + <a>229</a> + <b>230</b> <v>11</v> </b> <b> - <a>259</a> - <b>260</b> + <a>255</a> + <b>256</b> <v>11</v> </b> </bs> @@ -2929,53 +2934,63 @@ <budget>12</budget> <bs> <b> - <a>1</a> - <b>2</b> + <a>2</a> + <b>3</b> + <v>22</v> + </b> + <b> + <a>3</a> + <b>4</b> <v>11</v> </b> <b> - <a>2</a> - <b>3</b> - <v>33</v> + <a>6</a> + <b>7</b> + <v>11</v> </b> <b> <a>7</a> <b>8</b> - <v>22</v> + <v>11</v> </b> <b> - <a>11</a> - <b>12</b> + <a>8</a> + <b>9</b> <v>11</v> </b> <b> - <a>12</a> - <b>13</b> + <a>9</a> + <b>10</b> <v>11</v> </b> <b> - <a>52</a> - <b>53</b> + <a>37</a> + <b>38</b> <v>11</v> </b> <b> - <a>115</a> - <b>116</b> + <a>47</a> + <b>48</b> <v>11</v> </b> <b> - <a>119</a> - <b>120</b> + <a>97</a> + <b>98</b> <v>11</v> </b> <b> - <a>140</a> - <b>141</b> + <a>112</a> + <b>113</b> <v>11</v> </b> <b> - <a>242</a> - <b>243</b> + <a>183</a> + <b>184</b> + <v>11</v> + </b> + <b> + <a>208</a> + <b>209</b> <v>11</v> </b> </bs> @@ -4748,31 +4763,31 @@ </relation> <relation> <name>locations_default</name> - <cardinality>29786456</cardinality> + <cardinality>29787737</cardinality> <columnsizes> <e> <k>id</k> - <v>29786456</v> + <v>29787737</v> </e> <e> <k>container</k> - <v>123134</v> + <v>123139</v> </e> <e> <k>startLine</k> - <v>2093288</v> + <v>2093378</v> </e> <e> <k>startColumn</k> - <v>36847</v> + <v>36848</v> </e> <e> <k>endLine</k> - <v>2097486</v> + <v>2097576</v> </e> <e> <k>endColumn</k> - <v>48041</v> + <v>48043</v> </e> </columnsizes> <dependencies> @@ -4786,7 +4801,7 @@ <b> <a>1</a> <b>2</b> - <v>29786456</v> + <v>29787737</v> </b> </bs> </hist> @@ -4802,7 +4817,7 @@ <b> <a>1</a> <b>2</b> - <v>29786456</v> + <v>29787737</v> </b> </bs> </hist> @@ -4818,7 +4833,7 @@ <b> <a>1</a> <b>2</b> - <v>29786456</v> + <v>29787737</v> </b> </bs> </hist> @@ -4834,7 +4849,7 @@ <b> <a>1</a> <b>2</b> - <v>29786456</v> + <v>29787737</v> </b> </bs> </hist> @@ -4850,7 +4865,7 @@ <b> <a>1</a> <b>2</b> - <v>29786456</v> + <v>29787737</v> </b> </bs> </hist> @@ -4866,7 +4881,7 @@ <b> <a>1</a> <b>11</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>11</a> @@ -4881,12 +4896,12 @@ <b> <a>30</a> <b>42</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>43</a> <b>61</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>61</a> @@ -4896,7 +4911,7 @@ <b> <a>80</a> <b>106</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>109</a> @@ -4952,7 +4967,7 @@ <b> <a>13</a> <b>20</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>20</a> @@ -4962,7 +4977,7 @@ <b> <a>32</a> <b>43</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>44</a> @@ -5023,7 +5038,7 @@ <b> <a>1</a> <b>4</b> - <v>8861</v> + <v>8862</v> </b> <b> <a>4</a> @@ -5033,7 +5048,7 @@ <b> <a>5</a> <b>6</b> - <v>7462</v> + <v>7463</v> </b> <b> <a>6</a> @@ -5048,12 +5063,12 @@ <b> <a>10</a> <b>15</b> - <v>10727</v> + <v>10728</v> </b> <b> <a>15</a> <b>23</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>23</a> @@ -5063,7 +5078,7 @@ <b> <a>28</a> <b>34</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>34</a> @@ -5078,7 +5093,7 @@ <b> <a>55</a> <b>66</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>66</a> @@ -5109,7 +5124,7 @@ <b> <a>13</a> <b>20</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>20</a> @@ -5119,7 +5134,7 @@ <b> <a>32</a> <b>43</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>43</a> @@ -5180,7 +5195,7 @@ <b> <a>1</a> <b>9</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>9</a> @@ -5230,12 +5245,12 @@ <b> <a>66</a> <b>74</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>74</a> <b>78</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>78</a> @@ -5256,47 +5271,47 @@ <b> <a>1</a> <b>2</b> - <v>581158</v> + <v>581183</v> </b> <b> <a>2</a> <b>3</b> - <v>314832</v> + <v>314846</v> </b> <b> <a>3</a> <b>4</b> - <v>194963</v> + <v>194971</v> </b> <b> <a>4</a> <b>6</b> - <v>162313</v> + <v>162320</v> </b> <b> <a>6</a> <b>10</b> - <v>183302</v> + <v>183310</v> </b> <b> <a>10</a> <b>16</b> - <v>161847</v> + <v>161854</v> </b> <b> <a>16</a> <b>25</b> - <v>168377</v> + <v>168384</v> </b> <b> <a>25</a> <b>45</b> - <v>157183</v> + <v>157189</v> </b> <b> <a>45</a> <b>160</b> - <v>157649</v> + <v>157656</v> </b> <b> <a>160</a> @@ -5317,42 +5332,42 @@ <b> <a>1</a> <b>2</b> - <v>870338</v> + <v>870375</v> </b> <b> <a>2</a> <b>3</b> - <v>273321</v> + <v>273333</v> </b> <b> <a>3</a> <b>5</b> - <v>193563</v> + <v>193572</v> </b> <b> <a>5</a> <b>8</b> - <v>173507</v> + <v>173515</v> </b> <b> <a>8</a> <b>13</b> - <v>187966</v> + <v>187974</v> </b> <b> <a>13</a> <b>20</b> - <v>160914</v> + <v>160921</v> </b> <b> <a>20</a> <b>51</b> - <v>159515</v> + <v>159522</v> </b> <b> <a>51</a> <b>265</b> - <v>74160</v> + <v>74163</v> </b> </bs> </hist> @@ -5368,47 +5383,47 @@ <b> <a>1</a> <b>2</b> - <v>611475</v> + <v>611501</v> </b> <b> <a>2</a> <b>3</b> - <v>312967</v> + <v>312980</v> </b> <b> <a>3</a> <b>4</b> - <v>198228</v> + <v>198236</v> </b> <b> <a>4</a> <b>6</b> - <v>182836</v> + <v>182844</v> </b> <b> <a>6</a> <b>9</b> - <v>173041</v> + <v>173048</v> </b> <b> <a>9</a> <b>13</b> - <v>163246</v> + <v>163253</v> </b> <b> <a>13</a> <b>19</b> - <v>173974</v> + <v>173981</v> </b> <b> <a>19</a> <b>29</b> - <v>165112</v> + <v>165119</v> </b> <b> <a>29</a> <b>52</b> - <v>112407</v> + <v>112411</v> </b> </bs> </hist> @@ -5424,22 +5439,22 @@ <b> <a>1</a> <b>2</b> - <v>1530321</v> + <v>1530386</v> </b> <b> <a>2</a> <b>3</b> - <v>348415</v> + <v>348430</v> </b> <b> <a>3</a> <b>5</b> - <v>161847</v> + <v>161854</v> </b> <b> <a>5</a> <b>16</b> - <v>52705</v> + <v>52707</v> </b> </bs> </hist> @@ -5455,47 +5470,47 @@ <b> <a>1</a> <b>2</b> - <v>585822</v> + <v>585847</v> </b> <b> <a>2</a> <b>3</b> - <v>316232</v> + <v>316245</v> </b> <b> <a>3</a> <b>4</b> - <v>197761</v> + <v>197770</v> </b> <b> <a>4</a> <b>6</b> - <v>168377</v> + <v>168384</v> </b> <b> <a>6</a> <b>10</b> - <v>191698</v> + <v>191706</v> </b> <b> <a>10</a> <b>15</b> - <v>165578</v> + <v>165585</v> </b> <b> <a>15</a> <b>22</b> - <v>167910</v> + <v>167918</v> </b> <b> <a>22</a> <b>34</b> - <v>164179</v> + <v>164186</v> </b> <b> <a>34</a> <b>66</b> - <v>135727</v> + <v>135733</v> </b> </bs> </hist> @@ -5597,7 +5612,7 @@ <b> <a>23</a> <b>35</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>38</a> @@ -5617,7 +5632,7 @@ <b> <a>73</a> <b>84</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>84</a> @@ -5627,12 +5642,12 @@ <b> <a>96</a> <b>101</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>101</a> <b>105</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>107</a> @@ -5835,12 +5850,12 @@ <b> <a>7</a> <b>11</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>11</a> <b>16</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>16</a> @@ -5850,7 +5865,7 @@ <b> <a>22</a> <b>24</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>24</a> @@ -5860,12 +5875,12 @@ <b> <a>29</a> <b>34</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>34</a> <b>41</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>41</a> @@ -5906,47 +5921,47 @@ <b> <a>1</a> <b>2</b> - <v>591419</v> + <v>591444</v> </b> <b> <a>2</a> <b>3</b> - <v>306903</v> + <v>306916</v> </b> <b> <a>3</a> <b>4</b> - <v>198228</v> + <v>198236</v> </b> <b> <a>4</a> <b>6</b> - <v>159515</v> + <v>159522</v> </b> <b> <a>6</a> <b>10</b> - <v>182836</v> + <v>182844</v> </b> <b> <a>10</a> <b>16</b> - <v>160448</v> + <v>160455</v> </b> <b> <a>16</a> <b>25</b> - <v>170709</v> + <v>170716</v> </b> <b> <a>25</a> <b>45</b> - <v>158116</v> + <v>158122</v> </b> <b> <a>45</a> <b>160</b> - <v>158116</v> + <v>158122</v> </b> <b> <a>160</a> @@ -5967,42 +5982,42 @@ <b> <a>1</a> <b>2</b> - <v>885729</v> + <v>885767</v> </b> <b> <a>2</a> <b>3</b> - <v>259795</v> + <v>259806</v> </b> <b> <a>3</a> <b>4</b> - <v>125000</v> + <v>125005</v> </b> <b> <a>4</a> <b>6</b> - <v>140858</v> + <v>140864</v> </b> <b> <a>6</a> <b>10</b> - <v>184701</v> + <v>184709</v> </b> <b> <a>10</a> <b>15</b> - <v>168377</v> + <v>168384</v> </b> <b> <a>15</a> <b>26</b> - <v>163246</v> + <v>163253</v> </b> <b> <a>26</a> <b>120</b> - <v>158116</v> + <v>158122</v> </b> <b> <a>121</a> @@ -6023,22 +6038,22 @@ <b> <a>1</a> <b>2</b> - <v>1527988</v> + <v>1528054</v> </b> <b> <a>2</a> <b>3</b> - <v>341418</v> + <v>341433</v> </b> <b> <a>3</a> <b>5</b> - <v>170709</v> + <v>170716</v> </b> <b> <a>5</a> <b>10</b> - <v>57369</v> + <v>57372</v> </b> </bs> </hist> @@ -6054,47 +6069,47 @@ <b> <a>1</a> <b>2</b> - <v>622669</v> + <v>622696</v> </b> <b> <a>2</a> <b>3</b> - <v>303172</v> + <v>303185</v> </b> <b> <a>3</a> <b>4</b> - <v>201493</v> + <v>201501</v> </b> <b> <a>4</a> <b>6</b> - <v>183769</v> + <v>183777</v> </b> <b> <a>6</a> <b>9</b> - <v>169776</v> + <v>169783</v> </b> <b> <a>9</a> <b>13</b> - <v>166511</v> + <v>166518</v> </b> <b> <a>13</a> <b>19</b> - <v>174907</v> + <v>174914</v> </b> <b> <a>19</a> <b>29</b> - <v>160914</v> + <v>160921</v> </b> <b> <a>29</a> <b>52</b> - <v>114272</v> + <v>114277</v> </b> </bs> </hist> @@ -6110,47 +6125,47 @@ <b> <a>1</a> <b>2</b> - <v>597949</v> + <v>597975</v> </b> <b> <a>2</a> <b>3</b> - <v>306903</v> + <v>306916</v> </b> <b> <a>3</a> <b>4</b> - <v>196362</v> + <v>196370</v> </b> <b> <a>4</a> <b>6</b> - <v>169310</v> + <v>169317</v> </b> <b> <a>6</a> <b>9</b> - <v>154851</v> + <v>154857</v> </b> <b> <a>9</a> <b>14</b> - <v>168377</v> + <v>168384</v> </b> <b> <a>14</a> <b>21</b> - <v>178638</v> + <v>178646</v> </b> <b> <a>21</a> <b>32</b> - <v>163246</v> + <v>163253</v> </b> <b> <a>32</a> <b>60</b> - <v>158116</v> + <v>158122</v> </b> <b> <a>60</a> @@ -6434,17 +6449,17 @@ <b> <a>35</a> <b>39</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>39</a> <b>42</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>42</a> <b>44</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>44</a> @@ -6545,11 +6560,11 @@ </relation> <relation> <name>locations_stmt</name> - <cardinality>3820105</cardinality> + <cardinality>3820076</cardinality> <columnsizes> <e> <k>id</k> - <v>3820105</v> + <v>3820076</v> </e> <e> <k>container</k> @@ -6557,7 +6572,7 @@ </e> <e> <k>startLine</k> - <v>200183</v> + <v>200182</v> </e> <e> <k>startColumn</k> @@ -6565,7 +6580,7 @@ </e> <e> <k>endLine</k> - <v>194439</v> + <v>194437</v> </e> <e> <k>endColumn</k> @@ -6583,7 +6598,7 @@ <b> <a>1</a> <b>2</b> - <v>3820105</v> + <v>3820076</v> </b> </bs> </hist> @@ -6599,7 +6614,7 @@ <b> <a>1</a> <b>2</b> - <v>3820105</v> + <v>3820076</v> </b> </bs> </hist> @@ -6615,7 +6630,7 @@ <b> <a>1</a> <b>2</b> - <v>3820105</v> + <v>3820076</v> </b> </bs> </hist> @@ -6631,7 +6646,7 @@ <b> <a>1</a> <b>2</b> - <v>3820105</v> + <v>3820076</v> </b> </bs> </hist> @@ -6647,7 +6662,7 @@ <b> <a>1</a> <b>2</b> - <v>3820105</v> + <v>3820076</v> </b> </bs> </hist> @@ -7098,7 +7113,7 @@ <b> <a>37</a> <b>45</b> - <v>15112</v> + <v>15111</v> </b> <b> <a>45</a> @@ -7139,7 +7154,7 @@ <b> <a>4</a> <b>6</b> - <v>14412</v> + <v>14411</v> </b> <b> <a>6</a> @@ -7276,7 +7291,7 @@ <b> <a>3</a> <b>4</b> - <v>18468</v> + <v>18467</v> </b> <b> <a>4</a> @@ -7321,7 +7336,7 @@ <b> <a>12</a> <b>14</b> - <v>15812</v> + <v>15811</v> </b> <b> <a>14</a> @@ -7342,7 +7357,7 @@ <b> <a>1</a> <b>2</b> - <v>22174</v> + <v>22173</v> </b> <b> <a>2</a> @@ -7798,7 +7813,7 @@ <b> <a>3</a> <b>4</b> - <v>11509</v> + <v>11508</v> </b> <b> <a>4</a> @@ -7869,7 +7884,7 @@ <b> <a>2</a> <b>3</b> - <v>16162</v> + <v>16161</v> </b> <b> <a>3</a> @@ -7889,7 +7904,7 @@ <b> <a>8</a> <b>11</b> - <v>15915</v> + <v>15914</v> </b> <b> <a>11</a> @@ -7935,7 +7950,7 @@ <b> <a>1</a> <b>2</b> - <v>32530</v> + <v>32529</v> </b> <b> <a>2</a> @@ -8016,7 +8031,7 @@ <b> <a>3</a> <b>4</b> - <v>16862</v> + <v>16861</v> </b> <b> <a>4</a> @@ -8031,7 +8046,7 @@ <b> <a>6</a> <b>7</b> - <v>20465</v> + <v>20464</v> </b> <b> <a>7</a> @@ -8082,7 +8097,7 @@ <b> <a>3</a> <b>4</b> - <v>12559</v> + <v>12558</v> </b> <b> <a>4</a> @@ -8117,7 +8132,7 @@ <b> <a>19</a> <b>22</b> - <v>14062</v> + <v>14061</v> </b> <b> <a>22</a> @@ -8527,11 +8542,11 @@ </relation> <relation> <name>locations_expr</name> - <cardinality>13188716</cardinality> + <cardinality>13188614</cardinality> <columnsizes> <e> <k>id</k> - <v>13188716</v> + <v>13188614</v> </e> <e> <k>container</k> @@ -8539,7 +8554,7 @@ </e> <e> <k>startLine</k> - <v>192236</v> + <v>192235</v> </e> <e> <k>startColumn</k> @@ -8547,7 +8562,7 @@ </e> <e> <k>endLine</k> - <v>192215</v> + <v>192214</v> </e> <e> <k>endColumn</k> @@ -8565,7 +8580,7 @@ <b> <a>1</a> <b>2</b> - <v>13188716</v> + <v>13188614</v> </b> </bs> </hist> @@ -8581,7 +8596,7 @@ <b> <a>1</a> <b>2</b> - <v>13188716</v> + <v>13188614</v> </b> </bs> </hist> @@ -8597,7 +8612,7 @@ <b> <a>1</a> <b>2</b> - <v>13188716</v> + <v>13188614</v> </b> </bs> </hist> @@ -8613,7 +8628,7 @@ <b> <a>1</a> <b>2</b> - <v>13188716</v> + <v>13188614</v> </b> </bs> </hist> @@ -8629,7 +8644,7 @@ <b> <a>1</a> <b>2</b> - <v>13188716</v> + <v>13188614</v> </b> </bs> </hist> @@ -9050,7 +9065,7 @@ <b> <a>5</a> <b>9</b> - <v>16512</v> + <v>16511</v> </b> <b> <a>9</a> @@ -9202,7 +9217,7 @@ <b> <a>7</a> <b>11</b> - <v>16718</v> + <v>16717</v> </b> <b> <a>11</a> @@ -9268,7 +9283,7 @@ <b> <a>2</a> <b>3</b> - <v>44698</v> + <v>44697</v> </b> <b> <a>3</a> @@ -9339,7 +9354,7 @@ <b> <a>38</a> <b>43</b> - <v>15565</v> + <v>15564</v> </b> <b> <a>43</a> @@ -9760,12 +9775,12 @@ <b> <a>1</a> <b>5</b> - <v>16162</v> + <v>16161</v> </b> <b> <a>5</a> <b>9</b> - <v>16512</v> + <v>16511</v> </b> <b> <a>9</a> @@ -9775,7 +9790,7 @@ <b> <a>15</a> <b>23</b> - <v>15112</v> + <v>15111</v> </b> <b> <a>23</a> @@ -9785,12 +9800,12 @@ <b> <a>32</a> <b>44</b> - <v>14762</v> + <v>14761</v> </b> <b> <a>44</a> <b>60</b> - <v>14515</v> + <v>14514</v> </b> <b> <a>60</a> @@ -9912,17 +9927,17 @@ <b> <a>1</a> <b>2</b> - <v>95634</v> + <v>95633</v> </b> <b> <a>2</a> <b>3</b> - <v>50092</v> + <v>50091</v> </b> <b> <a>3</a> <b>4</b> - <v>29421</v> + <v>29420</v> </b> <b> <a>4</a> @@ -9958,7 +9973,7 @@ <b> <a>7</a> <b>11</b> - <v>16512</v> + <v>16511</v> </b> <b> <a>11</a> @@ -10059,7 +10074,7 @@ <b> <a>38</a> <b>43</b> - <v>16162</v> + <v>16161</v> </b> <b> <a>43</a> @@ -10459,23 +10474,23 @@ </relation> <relation> <name>numlines</name> - <cardinality>1382466</cardinality> + <cardinality>1382525</cardinality> <columnsizes> <e> <k>element_id</k> - <v>1375469</v> + <v>1375529</v> </e> <e> <k>num_lines</k> - <v>101679</v> + <v>101683</v> </e> <e> <k>num_code</k> - <v>84888</v> + <v>84891</v> </e> <e> <k>num_comment</k> - <v>59701</v> + <v>59704</v> </e> </columnsizes> <dependencies> @@ -10489,7 +10504,7 @@ <b> <a>1</a> <b>2</b> - <v>1368473</v> + <v>1368532</v> </b> <b> <a>2</a> @@ -10510,7 +10525,7 @@ <b> <a>1</a> <b>2</b> - <v>1369406</v> + <v>1369465</v> </b> <b> <a>2</a> @@ -10531,7 +10546,7 @@ <b> <a>1</a> <b>2</b> - <v>1375469</v> + <v>1375529</v> </b> </bs> </hist> @@ -10547,17 +10562,17 @@ <b> <a>1</a> <b>2</b> - <v>68097</v> + <v>68100</v> </b> <b> <a>2</a> <b>3</b> - <v>12126</v> + <v>12127</v> </b> <b> <a>3</a> <b>4</b> - <v>7462</v> + <v>7463</v> </b> <b> <a>4</a> @@ -10583,12 +10598,12 @@ <b> <a>1</a> <b>2</b> - <v>70429</v> + <v>70432</v> </b> <b> <a>2</a> <b>3</b> - <v>12126</v> + <v>12127</v> </b> <b> <a>3</a> @@ -10619,22 +10634,22 @@ <b> <a>1</a> <b>2</b> - <v>69496</v> + <v>69499</v> </b> <b> <a>2</a> <b>3</b> - <v>14925</v> + <v>14926</v> </b> <b> <a>3</a> <b>4</b> - <v>10727</v> + <v>10728</v> </b> <b> <a>4</a> <b>7</b> - <v>6529</v> + <v>6530</v> </b> </bs> </hist> @@ -10650,22 +10665,22 @@ <b> <a>1</a> <b>2</b> - <v>52705</v> + <v>52707</v> </b> <b> <a>2</a> <b>3</b> - <v>14458</v> + <v>14459</v> </b> <b> <a>3</a> <b>5</b> - <v>6529</v> + <v>6530</v> </b> <b> <a>5</a> <b>42</b> - <v>6529</v> + <v>6530</v> </b> <b> <a>44</a> @@ -10686,7 +10701,7 @@ <b> <a>1</a> <b>2</b> - <v>52705</v> + <v>52707</v> </b> <b> <a>2</a> @@ -10701,7 +10716,7 @@ <b> <a>5</a> <b>8</b> - <v>6529</v> + <v>6530</v> </b> <b> <a>8</a> @@ -10722,7 +10737,7 @@ <b> <a>1</a> <b>2</b> - <v>53171</v> + <v>53174</v> </b> <b> <a>2</a> @@ -10732,7 +10747,7 @@ <b> <a>3</a> <b>5</b> - <v>7462</v> + <v>7463</v> </b> <b> <a>5</a> @@ -10742,7 +10757,7 @@ <b> <a>7</a> <b>10</b> - <v>3264</v> + <v>3265</v> </b> </bs> </hist> @@ -10758,7 +10773,7 @@ <b> <a>1</a> <b>2</b> - <v>34515</v> + <v>34516</v> </b> <b> <a>2</a> @@ -10799,7 +10814,7 @@ <b> <a>1</a> <b>2</b> - <v>34515</v> + <v>34516</v> </b> <b> <a>2</a> @@ -10840,7 +10855,7 @@ <b> <a>1</a> <b>2</b> - <v>34515</v> + <v>34516</v> </b> <b> <a>2</a> @@ -10875,11 +10890,11 @@ </relation> <relation> <name>diagnostics</name> - <cardinality>5013</cardinality> + <cardinality>5001</cardinality> <columnsizes> <e> <k>id</k> - <v>5013</v> + <v>5001</v> </e> <e> <k>severity</k> @@ -10891,11 +10906,11 @@ </e> <e> <k>error_message</k> - <v>400</v> + <v>399</v> </e> <e> <k>full_error_message</k> - <v>4213</v> + <v>4202</v> </e> <e> <k>location</k> @@ -10913,7 +10928,7 @@ <b> <a>1</a> <b>2</b> - <v>5013</v> + <v>5001</v> </b> </bs> </hist> @@ -10929,7 +10944,7 @@ <b> <a>1</a> <b>2</b> - <v>5013</v> + <v>5001</v> </b> </bs> </hist> @@ -10945,7 +10960,7 @@ <b> <a>1</a> <b>2</b> - <v>5013</v> + <v>5001</v> </b> </bs> </hist> @@ -10961,7 +10976,7 @@ <b> <a>1</a> <b>2</b> - <v>5013</v> + <v>5001</v> </b> </bs> </hist> @@ -10977,7 +10992,7 @@ <b> <a>1</a> <b>2</b> - <v>5013</v> + <v>5001</v> </b> </bs> </hist> @@ -11209,7 +11224,7 @@ <b> <a>1</a> <b>2</b> - <v>400</v> + <v>399</v> </b> </bs> </hist> @@ -11225,7 +11240,7 @@ <b> <a>1</a> <b>2</b> - <v>400</v> + <v>399</v> </b> </bs> </hist> @@ -11303,7 +11318,7 @@ <b> <a>1</a> <b>2</b> - <v>4194</v> + <v>4183</v> </b> <b> <a>43</a> @@ -11324,7 +11339,7 @@ <b> <a>1</a> <b>2</b> - <v>4213</v> + <v>4202</v> </b> </bs> </hist> @@ -11340,7 +11355,7 @@ <b> <a>1</a> <b>2</b> - <v>4213</v> + <v>4202</v> </b> </bs> </hist> @@ -11356,7 +11371,7 @@ <b> <a>1</a> <b>2</b> - <v>4213</v> + <v>4202</v> </b> </bs> </hist> @@ -11372,7 +11387,7 @@ <b> <a>1</a> <b>2</b> - <v>4213</v> + <v>4202</v> </b> </bs> </hist> @@ -11507,15 +11522,15 @@ </relation> <relation> <name>files</name> - <cardinality>123134</cardinality> + <cardinality>123139</cardinality> <columnsizes> <e> <k>id</k> - <v>123134</v> + <v>123139</v> </e> <e> <k>name</k> - <v>123134</v> + <v>123139</v> </e> </columnsizes> <dependencies> @@ -11529,7 +11544,7 @@ <b> <a>1</a> <b>2</b> - <v>123134</v> + <v>123139</v> </b> </bs> </hist> @@ -11545,7 +11560,7 @@ <b> <a>1</a> <b>2</b> - <v>123134</v> + <v>123139</v> </b> </bs> </hist> @@ -11555,15 +11570,15 @@ </relation> <relation> <name>folders</name> - <cardinality>16324</cardinality> + <cardinality>16325</cardinality> <columnsizes> <e> <k>id</k> - <v>16324</v> + <v>16325</v> </e> <e> <k>name</k> - <v>16324</v> + <v>16325</v> </e> </columnsizes> <dependencies> @@ -11577,7 +11592,7 @@ <b> <a>1</a> <b>2</b> - <v>16324</v> + <v>16325</v> </b> </bs> </hist> @@ -11593,7 +11608,7 @@ <b> <a>1</a> <b>2</b> - <v>16324</v> + <v>16325</v> </b> </bs> </hist> @@ -11603,15 +11618,15 @@ </relation> <relation> <name>containerparent</name> - <cardinality>138526</cardinality> + <cardinality>138532</cardinality> <columnsizes> <e> <k>parent</k> - <v>16324</v> + <v>16325</v> </e> <e> <k>child</k> - <v>138526</v> + <v>138532</v> </e> </columnsizes> <dependencies> @@ -11625,12 +11640,12 @@ <b> <a>1</a> <b>2</b> - <v>7462</v> + <v>7463</v> </b> <b> <a>2</a> <b>3</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>3</a> @@ -11666,7 +11681,7 @@ <b> <a>1</a> <b>2</b> - <v>138526</v> + <v>138532</v> </b> </bs> </hist> @@ -11676,11 +11691,11 @@ </relation> <relation> <name>fileannotations</name> - <cardinality>5084962</cardinality> + <cardinality>5083033</cardinality> <columnsizes> <e> <k>id</k> - <v>4856</v> + <v>4855</v> </e> <e> <k>kind</k> @@ -11688,11 +11703,11 @@ </e> <e> <k>name</k> - <v>54298</v> + <v>54277</v> </e> <e> <k>value</k> - <v>45647</v> + <v>45630</v> </e> </columnsizes> <dependencies> @@ -11711,7 +11726,7 @@ <b> <a>2</a> <b>3</b> - <v>4688</v> + <v>4687</v> </b> </bs> </hist> @@ -11772,7 +11787,7 @@ <b> <a>936</a> <b>937</b> - <v>1410</v> + <v>1409</v> </b> <b> <a>1083</a> @@ -11838,7 +11853,7 @@ <b> <a>1501</a> <b>1502</b> - <v>1410</v> + <v>1409</v> </b> <b> <a>1504</a> @@ -11848,7 +11863,7 @@ <b> <a>1972</a> <b>4080</b> - <v>235</v> + <v>234</v> </b> </bs> </hist> @@ -11927,57 +11942,57 @@ <b> <a>1</a> <b>2</b> - <v>8784</v> + <v>8781</v> </b> <b> <a>2</a> <b>3</b> - <v>6166</v> + <v>6163</v> </b> <b> <a>3</a> <b>5</b> - <v>4140</v> + <v>4139</v> </b> <b> <a>5</a> <b>9</b> - <v>4230</v> + <v>4228</v> </b> <b> <a>9</a> <b>14</b> - <v>3950</v> + <v>3948</v> </b> <b> <a>14</a> <b>18</b> - <v>4140</v> + <v>4139</v> </b> <b> <a>18</a> <b>20</b> - <v>4677</v> + <v>4676</v> </b> <b> <a>20</a> <b>34</b> - <v>4185</v> + <v>4183</v> </b> <b> <a>34</a> <b>128</b> - <v>4465</v> + <v>4463</v> </b> <b> <a>128</a> <b>229</b> - <v>4084</v> + <v>4083</v> </b> <b> <a>229</a> <b>387</b> - <v>4207</v> + <v>4206</v> </b> <b> <a>387</a> @@ -11998,7 +12013,7 @@ <b> <a>1</a> <b>2</b> - <v>54298</v> + <v>54277</v> </b> </bs> </hist> @@ -12014,62 +12029,62 @@ <b> <a>1</a> <b>2</b> - <v>8796</v> + <v>8792</v> </b> <b> <a>2</a> <b>3</b> - <v>7990</v> + <v>7987</v> </b> <b> <a>3</a> <b>4</b> - <v>2540</v> + <v>2539</v> </b> <b> <a>4</a> <b>6</b> - <v>4476</v> + <v>4474</v> </b> <b> <a>6</a> <b>9</b> - <v>4095</v> + <v>4094</v> </b> <b> <a>9</a> <b>14</b> - <v>4174</v> + <v>4172</v> </b> <b> <a>14</a> <b>17</b> - <v>4095</v> + <v>4094</v> </b> <b> <a>17</a> <b>22</b> - <v>4554</v> + <v>4552</v> </b> <b> <a>22</a> <b>41</b> - <v>4174</v> + <v>4172</v> </b> <b> <a>41</a> <b>82</b> - <v>4129</v> + <v>4127</v> </b> <b> <a>82</a> <b>157</b> - <v>4073</v> + <v>4071</v> </b> <b> <a>158</a> <b>1895</b> - <v>1197</v> + <v>1196</v> </b> </bs> </hist> @@ -12085,62 +12100,62 @@ <b> <a>1</a> <b>2</b> - <v>7095</v> + <v>7092</v> </b> <b> <a>2</a> <b>5</b> - <v>2215</v> + <v>2214</v> </b> <b> <a>5</a> <b>8</b> - <v>3301</v> + <v>3300</v> </b> <b> <a>8</a> <b>15</b> - <v>3502</v> + <v>3501</v> </b> <b> <a>15</a> <b>17</b> - <v>2517</v> + <v>2516</v> </b> <b> <a>17</a> <b>19</b> - <v>4107</v> + <v>4105</v> </b> <b> <a>19</a> <b>34</b> - <v>3301</v> + <v>3300</v> </b> <b> <a>34</a> <b>189</b> - <v>3592</v> + <v>3590</v> </b> <b> <a>189</a> <b>201</b> - <v>3581</v> + <v>3579</v> </b> <b> <a>201</a> <b>266</b> - <v>3525</v> + <v>3523</v> </b> <b> <a>266</a> <b>321</b> - <v>3648</v> + <v>3646</v> </b> <b> <a>322</a> <b>399</b> - <v>3916</v> + <v>3915</v> </b> <b> <a>399</a> @@ -12161,7 +12176,7 @@ <b> <a>1</a> <b>2</b> - <v>45636</v> + <v>45619</v> </b> <b> <a>2</a> @@ -12182,67 +12197,67 @@ <b> <a>1</a> <b>2</b> - <v>7117</v> + <v>7114</v> </b> <b> <a>2</a> <b>5</b> - <v>2562</v> + <v>2561</v> </b> <b> <a>5</a> <b>8</b> - <v>3480</v> + <v>3479</v> </b> <b> <a>8</a> <b>15</b> - <v>3525</v> + <v>3523</v> </b> <b> <a>15</a> <b>17</b> - <v>2808</v> + <v>2807</v> </b> <b> <a>17</a> <b>19</b> - <v>3558</v> + <v>3557</v> </b> <b> <a>19</a> <b>29</b> - <v>3480</v> + <v>3479</v> </b> <b> <a>29</a> <b>39</b> - <v>3637</v> + <v>3635</v> </b> <b> <a>39</a> <b>48</b> - <v>3581</v> + <v>3579</v> </b> <b> <a>48</a> <b>74</b> - <v>3536</v> + <v>3534</v> </b> <b> <a>74</a> <b>102</b> - <v>3424</v> + <v>3423</v> </b> <b> <a>102</a> <b>119</b> - <v>3569</v> + <v>3568</v> </b> <b> <a>119</a> <b>146</b> - <v>1365</v> + <v>1364</v> </b> </bs> </hist> @@ -12252,15 +12267,15 @@ </relation> <relation> <name>inmacroexpansion</name> - <cardinality>109785545</cardinality> + <cardinality>109784721</cardinality> <columnsizes> <e> <k>id</k> - <v>18028412</v> + <v>18028276</v> </e> <e> <k>inv</k> - <v>2700329</v> + <v>2700307</v> </e> </columnsizes> <dependencies> @@ -12274,37 +12289,37 @@ <b> <a>1</a> <b>3</b> - <v>1582049</v> + <v>1582036</v> </b> <b> <a>3</a> <b>5</b> - <v>1077861</v> + <v>1077853</v> </b> <b> <a>5</a> <b>6</b> - <v>1184952</v> + <v>1184943</v> </b> <b> <a>6</a> <b>7</b> - <v>4820205</v> + <v>4820169</v> </b> <b> <a>7</a> <b>8</b> - <v>6386332</v> + <v>6386284</v> </b> <b> <a>8</a> <b>9</b> - <v>2605405</v> + <v>2605386</v> </b> <b> <a>9</a> <b>21</b> - <v>371604</v> + <v>371602</v> </b> </bs> </hist> @@ -12320,32 +12335,32 @@ <b> <a>1</a> <b>2</b> - <v>378447</v> + <v>378443</v> </b> <b> <a>2</a> <b>3</b> - <v>544135</v> + <v>544126</v> </b> <b> <a>3</a> <b>4</b> - <v>351535</v> + <v>351533</v> </b> <b> <a>4</a> <b>7</b> - <v>200670</v> + <v>200669</v> </b> <b> <a>7</a> <b>8</b> - <v>207164</v> + <v>207162</v> </b> <b> <a>8</a> <b>9</b> - <v>241902</v> + <v>241901</v> </b> <b> <a>9</a> @@ -12355,17 +12370,17 @@ <b> <a>10</a> <b>11</b> - <v>325505</v> + <v>325503</v> </b> <b> <a>11</a> <b>337</b> - <v>224864</v> + <v>224867</v> </b> <b> <a>339</a> <b>423</b> - <v>206365</v> + <v>206363</v> </b> <b> <a>423</a> @@ -12380,15 +12395,15 @@ </relation> <relation> <name>affectedbymacroexpansion</name> - <cardinality>35691161</cardinality> + <cardinality>35690892</cardinality> <columnsizes> <e> <k>id</k> - <v>5157043</v> + <v>5157002</v> </e> <e> <k>inv</k> - <v>2784936</v> + <v>2784914</v> </e> </columnsizes> <dependencies> @@ -12402,37 +12417,37 @@ <b> <a>1</a> <b>2</b> - <v>2816098</v> + <v>2816076</v> </b> <b> <a>2</a> <b>3</b> - <v>560161</v> + <v>560157</v> </b> <b> <a>3</a> <b>4</b> - <v>264922</v> + <v>264920</v> </b> <b> <a>4</a> <b>5</b> - <v>565827</v> + <v>565823</v> </b> <b> <a>5</a> <b>12</b> - <v>391926</v> + <v>391923</v> </b> <b> <a>12</a> <b>50</b> - <v>407425</v> + <v>407422</v> </b> <b> <a>50</a> <b>9900</b> - <v>150681</v> + <v>150680</v> </b> </bs> </hist> @@ -12448,62 +12463,62 @@ <b> <a>1</a> <b>4</b> - <v>229130</v> + <v>229127</v> </b> <b> <a>4</a> <b>7</b> - <v>231802</v> + <v>231800</v> </b> <b> <a>7</a> <b>9</b> - <v>220491</v> + <v>220489</v> </b> <b> <a>9</a> <b>12</b> - <v>251102</v> + <v>251100</v> </b> <b> <a>12</a> <b>13</b> - <v>333997</v> + <v>333995</v> </b> <b> <a>13</a> <b>14</b> - <v>165598</v> + <v>165596</v> </b> <b> <a>14</a> <b>15</b> - <v>298861</v> + <v>298859</v> </b> <b> <a>15</a> <b>16</b> - <v>121850</v> + <v>121849</v> </b> <b> <a>16</a> <b>17</b> - <v>276624</v> + <v>276622</v> </b> <b> <a>17</a> <b>18</b> - <v>146949</v> + <v>146948</v> </b> <b> <a>18</a> <b>20</b> - <v>252149</v> + <v>252148</v> </b> <b> <a>20</a> <b>25</b> - <v>208991</v> + <v>208989</v> </b> <b> <a>25</a> @@ -12518,19 +12533,19 @@ </relation> <relation> <name>macroinvocations</name> - <cardinality>33202987</cardinality> + <cardinality>33190389</cardinality> <columnsizes> <e> <k>id</k> - <v>33202987</v> + <v>33190389</v> </e> <e> <k>macro_id</k> - <v>78795</v> + <v>78765</v> </e> <e> <k>location</k> - <v>753796</v> + <v>753510</v> </e> <e> <k>kind</k> @@ -12548,7 +12563,7 @@ <b> <a>1</a> <b>2</b> - <v>33202987</v> + <v>33190389</v> </b> </bs> </hist> @@ -12564,7 +12579,7 @@ <b> <a>1</a> <b>2</b> - <v>33202987</v> + <v>33190389</v> </b> </bs> </hist> @@ -12580,7 +12595,7 @@ <b> <a>1</a> <b>2</b> - <v>33202987</v> + <v>33190389</v> </b> </bs> </hist> @@ -12596,52 +12611,52 @@ <b> <a>1</a> <b>2</b> - <v>16114</v> + <v>16108</v> </b> <b> <a>2</a> <b>3</b> - <v>16428</v> + <v>16421</v> </b> <b> <a>3</a> <b>4</b> - <v>3088</v> + <v>3087</v> </b> <b> <a>4</a> <b>5</b> - <v>5226</v> + <v>5224</v> </b> <b> <a>5</a> <b>8</b> - <v>5640</v> + <v>5638</v> </b> <b> <a>8</a> <b>13</b> - <v>6054</v> + <v>6051</v> </b> <b> <a>13</a> <b>26</b> - <v>6121</v> + <v>6119</v> </b> <b> <a>26</a> <b>61</b> - <v>6009</v> + <v>6007</v> </b> <b> <a>61</a> <b>199</b> - <v>5919</v> + <v>5917</v> </b> <b> <a>199</a> <b>1697</b> - <v>5964</v> + <v>5962</v> </b> <b> <a>1716</a> @@ -12662,37 +12677,37 @@ <b> <a>1</a> <b>2</b> - <v>42100</v> + <v>42084</v> </b> <b> <a>2</a> <b>3</b> - <v>10306</v> + <v>10302</v> </b> <b> <a>3</a> <b>4</b> - <v>5114</v> + <v>5112</v> </b> <b> <a>4</a> <b>6</b> - <v>6781</v> + <v>6779</v> </b> <b> <a>6</a> <b>13</b> - <v>6423</v> + <v>6421</v> </b> <b> <a>13</a> <b>66</b> - <v>5953</v> + <v>5951</v> </b> <b> <a>66</a> <b>3614</b> - <v>2115</v> + <v>2114</v> </b> </bs> </hist> @@ -12708,12 +12723,12 @@ <b> <a>1</a> <b>2</b> - <v>73110</v> + <v>73082</v> </b> <b> <a>2</a> <b>3</b> - <v>5684</v> + <v>5682</v> </b> </bs> </hist> @@ -12729,37 +12744,37 @@ <b> <a>1</a> <b>2</b> - <v>278787</v> + <v>278681</v> </b> <b> <a>2</a> <b>3</b> - <v>168154</v> + <v>168090</v> </b> <b> <a>3</a> <b>4</b> - <v>70144</v> + <v>70117</v> </b> <b> <a>4</a> <b>5</b> - <v>59770</v> + <v>59747</v> </b> <b> <a>5</a> <b>9</b> - <v>69786</v> + <v>69759</v> </b> <b> <a>9</a> <b>21</b> - <v>58595</v> + <v>58573</v> </b> <b> <a>21</a> <b>244764</b> - <v>48557</v> + <v>48538</v> </b> </bs> </hist> @@ -12775,12 +12790,12 @@ <b> <a>1</a> <b>2</b> - <v>708025</v> + <v>707756</v> </b> <b> <a>2</a> <b>350</b> - <v>45770</v> + <v>45753</v> </b> </bs> </hist> @@ -12796,7 +12811,7 @@ <b> <a>1</a> <b>2</b> - <v>753796</v> + <v>753510</v> </b> </bs> </hist> @@ -12869,15 +12884,15 @@ </relation> <relation> <name>macroparent</name> - <cardinality>29691721</cardinality> + <cardinality>29680455</cardinality> <columnsizes> <e> <k>id</k> - <v>29691721</v> + <v>29680455</v> </e> <e> <k>parent_id</k> - <v>23085760</v> + <v>23077000</v> </e> </columnsizes> <dependencies> @@ -12891,7 +12906,7 @@ <b> <a>1</a> <b>2</b> - <v>29691721</v> + <v>29680455</v> </b> </bs> </hist> @@ -12907,17 +12922,17 @@ <b> <a>1</a> <b>2</b> - <v>17837443</v> + <v>17830675</v> </b> <b> <a>2</a> <b>3</b> - <v>4420895</v> + <v>4419217</v> </b> <b> <a>3</a> <b>88</b> - <v>827421</v> + <v>827107</v> </b> </bs> </hist> @@ -12927,15 +12942,15 @@ </relation> <relation> <name>macrolocationbind</name> - <cardinality>4044034</cardinality> + <cardinality>4043998</cardinality> <columnsizes> <e> <k>id</k> - <v>2831314</v> + <v>2831290</v> </e> <e> <k>location</k> - <v>2021186</v> + <v>2021169</v> </e> </columnsizes> <dependencies> @@ -12949,17 +12964,17 @@ <b> <a>1</a> <b>2</b> - <v>2230051</v> + <v>2230032</v> </b> <b> <a>2</a> <b>3</b> - <v>341145</v> + <v>341142</v> </b> <b> <a>3</a> <b>7</b> - <v>230539</v> + <v>230537</v> </b> <b> <a>7</a> @@ -12980,22 +12995,22 @@ <b> <a>1</a> <b>2</b> - <v>1611118</v> + <v>1611104</v> </b> <b> <a>2</a> <b>3</b> - <v>177692</v> + <v>177691</v> </b> <b> <a>3</a> <b>8</b> - <v>156878</v> + <v>156877</v> </b> <b> <a>8</a> <b>723</b> - <v>75497</v> + <v>75496</v> </b> </bs> </hist> @@ -13005,11 +13020,11 @@ </relation> <relation> <name>macro_argument_unexpanded</name> - <cardinality>83818746</cardinality> + <cardinality>83786944</cardinality> <columnsizes> <e> <k>invocation</k> - <v>25989002</v> + <v>25979141</v> </e> <e> <k>argument_index</k> @@ -13017,7 +13032,7 @@ </e> <e> <k>text</k> - <v>315549</v> + <v>315429</v> </e> </columnsizes> <dependencies> @@ -13031,22 +13046,22 @@ <b> <a>1</a> <b>2</b> - <v>7368800</v> + <v>7366004</v> </b> <b> <a>2</a> <b>3</b> - <v>10582220</v> + <v>10578205</v> </b> <b> <a>3</a> <b>4</b> - <v>6086111</v> + <v>6083801</v> </b> <b> <a>4</a> <b>67</b> - <v>1951870</v> + <v>1951130</v> </b> </bs> </hist> @@ -13062,22 +13077,22 @@ <b> <a>1</a> <b>2</b> - <v>7438351</v> + <v>7435529</v> </b> <b> <a>2</a> <b>3</b> - <v>10727500</v> + <v>10723430</v> </b> <b> <a>3</a> <b>4</b> - <v>5921224</v> + <v>5918977</v> </b> <b> <a>4</a> <b>67</b> - <v>1901925</v> + <v>1901204</v> </b> </bs> </hist> @@ -13093,7 +13108,7 @@ <b> <a>41230</a> <b>41231</b> - <v>649</v> + <v>648</v> </b> <b> <a>41432</a> @@ -13119,7 +13134,7 @@ <b> <a>2</a> <b>3</b> - <v>649</v> + <v>648</v> </b> <b> <a>13</a> @@ -13145,57 +13160,57 @@ <b> <a>1</a> <b>2</b> - <v>34770</v> + <v>34756</v> </b> <b> <a>2</a> <b>3</b> - <v>60732</v> + <v>60709</v> </b> <b> <a>3</a> <b>4</b> - <v>17592</v> + <v>17585</v> </b> <b> <a>4</a> <b>5</b> - <v>44674</v> + <v>44657</v> </b> <b> <a>5</a> <b>7</b> - <v>23713</v> + <v>23704</v> </b> <b> <a>7</a> <b>12</b> - <v>18364</v> + <v>18357</v> </b> <b> <a>12</a> <b>16</b> - <v>21430</v> + <v>21422</v> </b> <b> <a>16</a> <b>23</b> - <v>24765</v> + <v>24756</v> </b> <b> <a>23</a> <b>42</b> - <v>24116</v> + <v>24107</v> </b> <b> <a>42</a> <b>129</b> - <v>23870</v> + <v>23861</v> </b> <b> <a>129</a> <b>522417</b> - <v>21520</v> + <v>21511</v> </b> </bs> </hist> @@ -13211,17 +13226,17 @@ <b> <a>1</a> <b>2</b> - <v>228204</v> + <v>228118</v> </b> <b> <a>2</a> <b>3</b> - <v>77150</v> + <v>77120</v> </b> <b> <a>3</a> <b>9</b> - <v>10194</v> + <v>10191</v> </b> </bs> </hist> @@ -13231,11 +13246,11 @@ </relation> <relation> <name>macro_argument_expanded</name> - <cardinality>83818746</cardinality> + <cardinality>83786944</cardinality> <columnsizes> <e> <k>invocation</k> - <v>25989002</v> + <v>25979141</v> </e> <e> <k>argument_index</k> @@ -13243,7 +13258,7 @@ </e> <e> <k>text</k> - <v>191229</v> + <v>191157</v> </e> </columnsizes> <dependencies> @@ -13257,22 +13272,22 @@ <b> <a>1</a> <b>2</b> - <v>7368800</v> + <v>7366004</v> </b> <b> <a>2</a> <b>3</b> - <v>10582220</v> + <v>10578205</v> </b> <b> <a>3</a> <b>4</b> - <v>6086111</v> + <v>6083801</v> </b> <b> <a>4</a> <b>67</b> - <v>1951870</v> + <v>1951130</v> </b> </bs> </hist> @@ -13288,22 +13303,22 @@ <b> <a>1</a> <b>2</b> - <v>10597171</v> + <v>10593150</v> </b> <b> <a>2</a> <b>3</b> - <v>9122547</v> + <v>9119085</v> </b> <b> <a>3</a> <b>4</b> - <v>5163131</v> + <v>5161172</v> </b> <b> <a>4</a> <b>9</b> - <v>1106152</v> + <v>1105732</v> </b> </bs> </hist> @@ -13319,7 +13334,7 @@ <b> <a>41230</a> <b>41231</b> - <v>649</v> + <v>648</v> </b> <b> <a>41432</a> @@ -13371,62 +13386,62 @@ <b> <a>1</a> <b>2</b> - <v>20613</v> + <v>20605</v> </b> <b> <a>2</a> <b>3</b> - <v>36985</v> + <v>36971</v> </b> <b> <a>3</a> <b>4</b> - <v>8986</v> + <v>8982</v> </b> <b> <a>4</a> <b>5</b> - <v>16237</v> + <v>16231</v> </b> <b> <a>5</a> <b>6</b> - <v>2394</v> + <v>2393</v> </b> <b> <a>6</a> <b>7</b> - <v>22650</v> + <v>22641</v> </b> <b> <a>7</a> <b>9</b> - <v>14671</v> + <v>14665</v> </b> <b> <a>9</a> <b>14</b> - <v>11940</v> + <v>11936</v> </b> <b> <a>14</a> <b>19</b> - <v>14425</v> + <v>14419</v> </b> <b> <a>19</a> <b>48</b> - <v>14346</v> + <v>14341</v> </b> <b> <a>48</a> <b>151</b> - <v>14357</v> + <v>14352</v> </b> <b> <a>152</a> <b>1060462</b> - <v>13619</v> + <v>13614</v> </b> </bs> </hist> @@ -13442,17 +13457,17 @@ <b> <a>1</a> <b>2</b> - <v>96778</v> + <v>96742</v> </b> <b> <a>2</a> <b>3</b> - <v>80171</v> + <v>80141</v> </b> <b> <a>3</a> <b>66</b> - <v>14279</v> + <v>14274</v> </b> </bs> </hist> @@ -13462,19 +13477,19 @@ </relation> <relation> <name>functions</name> - <cardinality>4646000</cardinality> + <cardinality>4646200</cardinality> <columnsizes> <e> <k>id</k> - <v>4646000</v> + <v>4646200</v> </e> <e> <k>name</k> - <v>1916982</v> + <v>1917064</v> </e> <e> <k>kind</k> - <v>3264</v> + <v>3265</v> </e> </columnsizes> <dependencies> @@ -13488,7 +13503,7 @@ <b> <a>1</a> <b>2</b> - <v>4646000</v> + <v>4646200</v> </b> </bs> </hist> @@ -13504,7 +13519,7 @@ <b> <a>1</a> <b>2</b> - <v>4646000</v> + <v>4646200</v> </b> </bs> </hist> @@ -13520,22 +13535,22 @@ <b> <a>1</a> <b>2</b> - <v>1504201</v> + <v>1504266</v> </b> <b> <a>2</a> <b>3</b> - <v>152052</v> + <v>152059</v> </b> <b> <a>3</a> <b>5</b> - <v>150186</v> + <v>150193</v> </b> <b> <a>5</a> <b>1676</b> - <v>110541</v> + <v>110546</v> </b> </bs> </hist> @@ -13551,7 +13566,7 @@ <b> <a>1</a> <b>2</b> - <v>1916516</v> + <v>1916598</v> </b> <b> <a>2</a> @@ -13658,15 +13673,15 @@ </relation> <relation> <name>function_entry_point</name> - <cardinality>1156719</cardinality> + <cardinality>1156769</cardinality> <columnsizes> <e> <k>id</k> - <v>1146924</v> + <v>1146973</v> </e> <e> <k>entry_point</k> - <v>1156719</v> + <v>1156769</v> </e> </columnsizes> <dependencies> @@ -13680,12 +13695,12 @@ <b> <a>1</a> <b>2</b> - <v>1137129</v> + <v>1137178</v> </b> <b> <a>2</a> <b>3</b> - <v>9794</v> + <v>9795</v> </b> </bs> </hist> @@ -13701,7 +13716,7 @@ <b> <a>1</a> <b>2</b> - <v>1156719</v> + <v>1156769</v> </b> </bs> </hist> @@ -13711,15 +13726,15 @@ </relation> <relation> <name>function_return_type</name> - <cardinality>4651131</cardinality> + <cardinality>4651331</cardinality> <columnsizes> <e> <k>id</k> - <v>4646000</v> + <v>4646200</v> </e> <e> <k>return_type</k> - <v>987409</v> + <v>987451</v> </e> </columnsizes> <dependencies> @@ -13733,7 +13748,7 @@ <b> <a>1</a> <b>2</b> - <v>4640870</v> + <v>4641069</v> </b> <b> <a>2</a> @@ -13754,22 +13769,22 @@ <b> <a>1</a> <b>2</b> - <v>510262</v> + <v>510284</v> </b> <b> <a>2</a> <b>3</b> - <v>375933</v> + <v>375949</v> </b> <b> <a>3</a> <b>10</b> - <v>75093</v> + <v>75096</v> </b> <b> <a>10</a> <b>2516</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -14091,59 +14106,59 @@ </relation> <relation> <name>purefunctions</name> - <cardinality>100917</cardinality> + <cardinality>100915</cardinality> <columnsizes> <e> <k>id</k> - <v>100917</v> + <v>100915</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_deleted</name> - <cardinality>137593</cardinality> + <cardinality>137599</cardinality> <columnsizes> <e> <k>id</k> - <v>137593</v> + <v>137599</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_defaulted</name> - <cardinality>73694</cardinality> + <cardinality>73697</cardinality> <columnsizes> <e> <k>id</k> - <v>73694</v> + <v>73697</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_prototyped</name> - <cardinality>4554116</cardinality> + <cardinality>4554311</cardinality> <columnsizes> <e> <k>id</k> - <v>4554116</v> + <v>4554311</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>member_function_this_type</name> - <cardinality>546094</cardinality> + <cardinality>545957</cardinality> <columnsizes> <e> <k>id</k> - <v>546094</v> + <v>545957</v> </e> <e> <k>this_type</k> - <v>187436</v> + <v>187389</v> </e> </columnsizes> <dependencies> @@ -14157,7 +14172,7 @@ <b> <a>1</a> <b>2</b> - <v>546094</v> + <v>545957</v> </b> </bs> </hist> @@ -14173,32 +14188,32 @@ <b> <a>1</a> <b>2</b> - <v>67674</v> + <v>67657</v> </b> <b> <a>2</a> <b>3</b> - <v>44849</v> + <v>44838</v> </b> <b> <a>3</a> <b>4</b> - <v>30201</v> + <v>30193</v> </b> <b> <a>4</a> <b>5</b> - <v>15344</v> + <v>15340</v> </b> <b> <a>5</a> <b>7</b> - <v>15379</v> + <v>15375</v> </b> <b> <a>7</a> <b>66</b> - <v>13987</v> + <v>13983</v> </b> </bs> </hist> @@ -14208,27 +14223,27 @@ </relation> <relation> <name>fun_decls</name> - <cardinality>5014938</cardinality> + <cardinality>5015153</cardinality> <columnsizes> <e> <k>id</k> - <v>5009807</v> + <v>5010023</v> </e> <e> <k>function</k> - <v>4502343</v> + <v>4502537</v> </e> <e> <k>type_id</k> - <v>986009</v> + <v>986052</v> </e> <e> <k>name</k> - <v>1819500</v> + <v>1819579</v> </e> <e> <k>location</k> - <v>3418385</v> + <v>3418532</v> </e> </columnsizes> <dependencies> @@ -14242,7 +14257,7 @@ <b> <a>1</a> <b>2</b> - <v>5009807</v> + <v>5010023</v> </b> </bs> </hist> @@ -14258,7 +14273,7 @@ <b> <a>1</a> <b>2</b> - <v>5004676</v> + <v>5004892</v> </b> <b> <a>2</a> @@ -14279,7 +14294,7 @@ <b> <a>1</a> <b>2</b> - <v>5009807</v> + <v>5010023</v> </b> </bs> </hist> @@ -14295,7 +14310,7 @@ <b> <a>1</a> <b>2</b> - <v>5009807</v> + <v>5010023</v> </b> </bs> </hist> @@ -14311,17 +14326,17 @@ <b> <a>1</a> <b>2</b> - <v>4073704</v> + <v>4073879</v> </b> <b> <a>2</a> <b>3</b> - <v>355877</v> + <v>355893</v> </b> <b> <a>3</a> <b>7</b> - <v>72761</v> + <v>72764</v> </b> </bs> </hist> @@ -14337,12 +14352,12 @@ <b> <a>1</a> <b>2</b> - <v>4462697</v> + <v>4462889</v> </b> <b> <a>2</a> <b>3</b> - <v>39645</v> + <v>39647</v> </b> </bs> </hist> @@ -14358,7 +14373,7 @@ <b> <a>1</a> <b>2</b> - <v>4502343</v> + <v>4502537</v> </b> </bs> </hist> @@ -14374,12 +14389,12 @@ <b> <a>1</a> <b>2</b> - <v>4130141</v> + <v>4130318</v> </b> <b> <a>2</a> <b>4</b> - <v>371269</v> + <v>371285</v> </b> <b> <a>5</a> @@ -14400,22 +14415,22 @@ <b> <a>1</a> <b>2</b> - <v>435635</v> + <v>435654</v> </b> <b> <a>2</a> <b>3</b> - <v>438433</v> + <v>438452</v> </b> <b> <a>3</a> <b>8</b> - <v>75093</v> + <v>75096</v> </b> <b> <a>8</a> <b>2761</b> - <v>36847</v> + <v>36848</v> </b> </bs> </hist> @@ -14431,22 +14446,22 @@ <b> <a>1</a> <b>2</b> - <v>519590</v> + <v>519613</v> </b> <b> <a>2</a> <b>3</b> - <v>367538</v> + <v>367554</v> </b> <b> <a>3</a> <b>11</b> - <v>75559</v> + <v>75563</v> </b> <b> <a>11</a> <b>2477</b> - <v>23320</v> + <v>23321</v> </b> </bs> </hist> @@ -14462,17 +14477,17 @@ <b> <a>1</a> <b>2</b> - <v>858677</v> + <v>858714</v> </b> <b> <a>2</a> <b>5</b> - <v>89552</v> + <v>89556</v> </b> <b> <a>5</a> <b>823</b> - <v>37779</v> + <v>37781</v> </b> </bs> </hist> @@ -14488,22 +14503,22 @@ <b> <a>1</a> <b>2</b> - <v>754666</v> + <v>754698</v> </b> <b> <a>2</a> <b>3</b> - <v>131530</v> + <v>131535</v> </b> <b> <a>3</a> <b>10</b> - <v>74627</v> + <v>74630</v> </b> <b> <a>10</a> <b>2030</b> - <v>25186</v> + <v>25187</v> </b> </bs> </hist> @@ -14519,27 +14534,27 @@ <b> <a>1</a> <b>2</b> - <v>1234611</v> + <v>1234664</v> </b> <b> <a>2</a> <b>3</b> - <v>266791</v> + <v>266803</v> </b> <b> <a>3</a> <b>4</b> - <v>80690</v> + <v>80693</v> </b> <b> <a>4</a> <b>6</b> - <v>136660</v> + <v>136666</v> </b> <b> <a>6</a> <b>1710</b> - <v>100746</v> + <v>100750</v> </b> </bs> </hist> @@ -14555,22 +14570,22 @@ <b> <a>1</a> <b>2</b> - <v>1413716</v> + <v>1413777</v> </b> <b> <a>2</a> <b>3</b> - <v>151119</v> + <v>151126</v> </b> <b> <a>3</a> <b>5</b> - <v>144123</v> + <v>144129</v> </b> <b> <a>5</a> <b>1660</b> - <v>110541</v> + <v>110546</v> </b> </bs> </hist> @@ -14586,17 +14601,17 @@ <b> <a>1</a> <b>2</b> - <v>1601216</v> + <v>1601285</v> </b> <b> <a>2</a> <b>4</b> - <v>134795</v> + <v>134800</v> </b> <b> <a>4</a> <b>930</b> - <v>83489</v> + <v>83492</v> </b> </bs> </hist> @@ -14612,27 +14627,27 @@ <b> <a>1</a> <b>2</b> - <v>1255600</v> + <v>1255654</v> </b> <b> <a>2</a> <b>3</b> - <v>293377</v> + <v>293390</v> </b> <b> <a>3</a> <b>4</b> - <v>79757</v> + <v>79761</v> </b> <b> <a>4</a> <b>8</b> - <v>137593</v> + <v>137599</v> </b> <b> <a>8</a> <b>653</b> - <v>53171</v> + <v>53174</v> </b> </bs> </hist> @@ -14648,17 +14663,17 @@ <b> <a>1</a> <b>2</b> - <v>2962227</v> + <v>2962355</v> </b> <b> <a>2</a> <b>4</b> - <v>296176</v> + <v>296188</v> </b> <b> <a>4</a> <b>55</b> - <v>159981</v> + <v>159988</v> </b> </bs> </hist> @@ -14674,17 +14689,17 @@ <b> <a>1</a> <b>2</b> - <v>3029392</v> + <v>3029522</v> </b> <b> <a>2</a> <b>6</b> - <v>262593</v> + <v>262605</v> </b> <b> <a>6</a> <b>55</b> - <v>126399</v> + <v>126405</v> </b> </bs> </hist> @@ -14700,12 +14715,12 @@ <b> <a>1</a> <b>2</b> - <v>3208496</v> + <v>3208634</v> </b> <b> <a>2</a> <b>25</b> - <v>209888</v> + <v>209897</v> </b> </bs> </hist> @@ -14721,12 +14736,12 @@ <b> <a>1</a> <b>2</b> - <v>3246276</v> + <v>3246416</v> </b> <b> <a>2</a> <b>13</b> - <v>172108</v> + <v>172116</v> </b> </bs> </hist> @@ -14736,22 +14751,22 @@ </relation> <relation> <name>fun_def</name> - <cardinality>1935172</cardinality> + <cardinality>1935256</cardinality> <columnsizes> <e> <k>id</k> - <v>1935172</v> + <v>1935256</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>fun_specialized</name> - <cardinality>26119</cardinality> + <cardinality>26120</cardinality> <columnsizes> <e> <k>id</k> - <v>26119</v> + <v>26120</v> </e> </columnsizes> <dependencies/> @@ -14769,11 +14784,11 @@ </relation> <relation> <name>fun_decl_specifiers</name> - <cardinality>2903925</cardinality> + <cardinality>2904050</cardinality> <columnsizes> <e> <k>id</k> - <v>1687970</v> + <v>1688043</v> </e> <e> <k>name</k> @@ -14791,17 +14806,17 @@ <b> <a>1</a> <b>2</b> - <v>490672</v> + <v>490693</v> </b> <b> <a>2</a> <b>3</b> - <v>1178641</v> + <v>1178691</v> </b> <b> <a>3</a> <b>4</b> - <v>18656</v> + <v>18657</v> </b> </bs> </hist> @@ -14973,26 +14988,26 @@ </relation> <relation> <name>fun_decl_empty_throws</name> - <cardinality>1933773</cardinality> + <cardinality>1933856</cardinality> <columnsizes> <e> <k>fun_decl</k> - <v>1933773</v> + <v>1933856</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>fun_decl_noexcept</name> - <cardinality>60559</cardinality> + <cardinality>60528</cardinality> <columnsizes> <e> <k>fun_decl</k> - <v>60559</v> + <v>60528</v> </e> <e> <k>constant</k> - <v>60456</v> + <v>60424</v> </e> </columnsizes> <dependencies> @@ -15006,7 +15021,7 @@ <b> <a>1</a> <b>2</b> - <v>60559</v> + <v>60528</v> </b> </bs> </hist> @@ -15022,7 +15037,7 @@ <b> <a>1</a> <b>2</b> - <v>60352</v> + <v>60321</v> </b> <b> <a>2</a> @@ -15037,11 +15052,11 @@ </relation> <relation> <name>fun_decl_empty_noexcept</name> - <cardinality>869871</cardinality> + <cardinality>869909</cardinality> <columnsizes> <e> <k>fun_decl</k> - <v>869871</v> + <v>869909</v> </e> </columnsizes> <dependencies/> @@ -15146,11 +15161,11 @@ </relation> <relation> <name>param_decl_bind</name> - <cardinality>7379682</cardinality> + <cardinality>7380000</cardinality> <columnsizes> <e> <k>id</k> - <v>7379682</v> + <v>7380000</v> </e> <e> <k>index</k> @@ -15158,7 +15173,7 @@ </e> <e> <k>fun_decl</k> - <v>4222958</v> + <v>4223140</v> </e> </columnsizes> <dependencies> @@ -15172,7 +15187,7 @@ <b> <a>1</a> <b>2</b> - <v>7379682</v> + <v>7380000</v> </b> </bs> </hist> @@ -15188,7 +15203,7 @@ <b> <a>1</a> <b>2</b> - <v>7379682</v> + <v>7380000</v> </b> </bs> </hist> @@ -15366,22 +15381,22 @@ <b> <a>1</a> <b>2</b> - <v>2363345</v> + <v>2363447</v> </b> <b> <a>2</a> <b>3</b> - <v>1060637</v> + <v>1060682</v> </b> <b> <a>3</a> <b>4</b> - <v>502333</v> + <v>502354</v> </b> <b> <a>4</a> <b>18</b> - <v>296642</v> + <v>296655</v> </b> </bs> </hist> @@ -15397,22 +15412,22 @@ <b> <a>1</a> <b>2</b> - <v>2363345</v> + <v>2363447</v> </b> <b> <a>2</a> <b>3</b> - <v>1060637</v> + <v>1060682</v> </b> <b> <a>3</a> <b>4</b> - <v>502333</v> + <v>502354</v> </b> <b> <a>4</a> <b>18</b> - <v>296642</v> + <v>296655</v> </b> </bs> </hist> @@ -15422,27 +15437,27 @@ </relation> <relation> <name>var_decls</name> - <cardinality>8493958</cardinality> + <cardinality>8494323</cardinality> <columnsizes> <e> <k>id</k> - <v>8423062</v> + <v>8423424</v> </e> <e> <k>variable</k> - <v>7411865</v> + <v>7412184</v> </e> <e> <k>type_id</k> - <v>2384334</v> + <v>2384436</v> </e> <e> <k>name</k> - <v>666979</v> + <v>667007</v> </e> <e> <k>location</k> - <v>5306916</v> + <v>5307144</v> </e> </columnsizes> <dependencies> @@ -15456,7 +15471,7 @@ <b> <a>1</a> <b>2</b> - <v>8423062</v> + <v>8423424</v> </b> </bs> </hist> @@ -15472,12 +15487,12 @@ <b> <a>1</a> <b>2</b> - <v>8354965</v> + <v>8355324</v> </b> <b> <a>2</a> <b>3</b> - <v>68097</v> + <v>68100</v> </b> </bs> </hist> @@ -15493,7 +15508,7 @@ <b> <a>1</a> <b>2</b> - <v>8423062</v> + <v>8423424</v> </b> </bs> </hist> @@ -15509,7 +15524,7 @@ <b> <a>1</a> <b>2</b> - <v>8420264</v> + <v>8420626</v> </b> <b> <a>2</a> @@ -15530,17 +15545,17 @@ <b> <a>1</a> <b>2</b> - <v>6560651</v> + <v>6560933</v> </b> <b> <a>2</a> <b>3</b> - <v>697762</v> + <v>697792</v> </b> <b> <a>3</a> <b>7</b> - <v>153451</v> + <v>153458</v> </b> </bs> </hist> @@ -15556,12 +15571,12 @@ <b> <a>1</a> <b>2</b> - <v>7240690</v> + <v>7241001</v> </b> <b> <a>2</a> <b>4</b> - <v>171175</v> + <v>171183</v> </b> </bs> </hist> @@ -15577,12 +15592,12 @@ <b> <a>1</a> <b>2</b> - <v>7296660</v> + <v>7296974</v> </b> <b> <a>2</a> <b>3</b> - <v>115205</v> + <v>115210</v> </b> </bs> </hist> @@ -15598,12 +15613,12 @@ <b> <a>1</a> <b>2</b> - <v>6867088</v> + <v>6867383</v> </b> <b> <a>2</a> <b>4</b> - <v>544777</v> + <v>544800</v> </b> </bs> </hist> @@ -15619,27 +15634,27 @@ <b> <a>1</a> <b>2</b> - <v>1469220</v> + <v>1469283</v> </b> <b> <a>2</a> <b>3</b> - <v>509329</v> + <v>509351</v> </b> <b> <a>3</a> <b>4</b> - <v>97948</v> + <v>97952</v> </b> <b> <a>4</a> <b>7</b> - <v>187034</v> + <v>187042</v> </b> <b> <a>7</a> <b>762</b> - <v>120802</v> + <v>120807</v> </b> </bs> </hist> @@ -15655,22 +15670,22 @@ <b> <a>1</a> <b>2</b> - <v>1602616</v> + <v>1602684</v> </b> <b> <a>2</a> <b>3</b> - <v>484609</v> + <v>484630</v> </b> <b> <a>3</a> <b>7</b> - <v>186567</v> + <v>186575</v> </b> <b> <a>7</a> <b>724</b> - <v>110541</v> + <v>110546</v> </b> </bs> </hist> @@ -15686,17 +15701,17 @@ <b> <a>1</a> <b>2</b> - <v>1877336</v> + <v>1877417</v> </b> <b> <a>2</a> <b>3</b> - <v>384795</v> + <v>384812</v> </b> <b> <a>3</a> <b>128</b> - <v>122201</v> + <v>122207</v> </b> </bs> </hist> @@ -15712,22 +15727,22 @@ <b> <a>1</a> <b>2</b> - <v>1705228</v> + <v>1705301</v> </b> <b> <a>2</a> <b>3</b> - <v>401586</v> + <v>401604</v> </b> <b> <a>3</a> <b>8</b> - <v>188433</v> + <v>188441</v> </b> <b> <a>8</a> <b>592</b> - <v>89086</v> + <v>89089</v> </b> </bs> </hist> @@ -15743,37 +15758,37 @@ <b> <a>1</a> <b>2</b> - <v>340952</v> + <v>340967</v> </b> <b> <a>2</a> <b>3</b> - <v>86753</v> + <v>86757</v> </b> <b> <a>3</a> <b>4</b> - <v>48507</v> + <v>48509</v> </b> <b> <a>4</a> <b>6</b> - <v>51772</v> + <v>51774</v> </b> <b> <a>6</a> <b>12</b> - <v>52238</v> + <v>52241</v> </b> <b> <a>12</a> <b>33</b> - <v>50373</v> + <v>50375</v> </b> <b> <a>34</a> <b>3223</b> - <v>36380</v> + <v>36382</v> </b> </bs> </hist> @@ -15789,37 +15804,37 @@ <b> <a>1</a> <b>2</b> - <v>368471</v> + <v>368486</v> </b> <b> <a>2</a> <b>3</b> - <v>77891</v> + <v>77895</v> </b> <b> <a>3</a> <b>4</b> - <v>45242</v> + <v>45244</v> </b> <b> <a>4</a> <b>6</b> - <v>49440</v> + <v>49442</v> </b> <b> <a>6</a> <b>14</b> - <v>53171</v> + <v>53174</v> </b> <b> <a>14</a> <b>56</b> - <v>50839</v> + <v>50841</v> </b> <b> <a>56</a> <b>3140</b> - <v>21921</v> + <v>21922</v> </b> </bs> </hist> @@ -15835,27 +15850,27 @@ <b> <a>1</a> <b>2</b> - <v>456624</v> + <v>456643</v> </b> <b> <a>2</a> <b>3</b> - <v>93750</v> + <v>93754</v> </b> <b> <a>3</a> <b>5</b> - <v>46641</v> + <v>46643</v> </b> <b> <a>5</a> <b>19</b> - <v>50839</v> + <v>50841</v> </b> <b> <a>19</a> <b>1927</b> - <v>19123</v> + <v>19124</v> </b> </bs> </hist> @@ -15871,32 +15886,32 @@ <b> <a>1</a> <b>2</b> - <v>378732</v> + <v>378748</v> </b> <b> <a>2</a> <b>3</b> - <v>90485</v> + <v>90489</v> </b> <b> <a>3</a> <b>5</b> - <v>59701</v> + <v>59704</v> </b> <b> <a>5</a> <b>9</b> - <v>51306</v> + <v>51308</v> </b> <b> <a>9</a> <b>21</b> - <v>50373</v> + <v>50375</v> </b> <b> <a>21</a> <b>1010</b> - <v>36380</v> + <v>36382</v> </b> </bs> </hist> @@ -15912,17 +15927,17 @@ <b> <a>1</a> <b>2</b> - <v>4492082</v> + <v>4492275</v> </b> <b> <a>2</a> <b>3</b> - <v>531251</v> + <v>531274</v> </b> <b> <a>3</a> <b>1735</b> - <v>283582</v> + <v>283595</v> </b> </bs> </hist> @@ -15938,17 +15953,17 @@ <b> <a>1</a> <b>2</b> - <v>4881075</v> + <v>4881285</v> </b> <b> <a>2</a> <b>17</b> - <v>415112</v> + <v>415130</v> </b> <b> <a>17</a> <b>1731</b> - <v>10727</v> + <v>10728</v> </b> </bs> </hist> @@ -15964,12 +15979,12 @@ <b> <a>1</a> <b>2</b> - <v>4957102</v> + <v>4957315</v> </b> <b> <a>2</a> <b>1513</b> - <v>349814</v> + <v>349829</v> </b> </bs> </hist> @@ -15985,7 +16000,7 @@ <b> <a>1</a> <b>2</b> - <v>5297588</v> + <v>5297815</v> </b> <b> <a>2</a> @@ -16000,22 +16015,22 @@ </relation> <relation> <name>var_def</name> - <cardinality>4024730</cardinality> + <cardinality>4024903</cardinality> <columnsizes> <e> <k>id</k> - <v>4024730</v> + <v>4024903</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>var_decl_specifiers</name> - <cardinality>310635</cardinality> + <cardinality>310648</cardinality> <columnsizes> <e> <k>id</k> - <v>310635</v> + <v>310648</v> </e> <e> <k>name</k> @@ -16033,7 +16048,7 @@ <b> <a>1</a> <b>2</b> - <v>310635</v> + <v>310648</v> </b> </bs> </hist> @@ -16080,19 +16095,19 @@ </relation> <relation> <name>type_decls</name> - <cardinality>3242079</cardinality> + <cardinality>3242218</cardinality> <columnsizes> <e> <k>id</k> - <v>3242079</v> + <v>3242218</v> </e> <e> <k>type_id</k> - <v>3191705</v> + <v>3191843</v> </e> <e> <k>location</k> - <v>3163254</v> + <v>3163390</v> </e> </columnsizes> <dependencies> @@ -16106,7 +16121,7 @@ <b> <a>1</a> <b>2</b> - <v>3242079</v> + <v>3242218</v> </b> </bs> </hist> @@ -16122,7 +16137,7 @@ <b> <a>1</a> <b>2</b> - <v>3242079</v> + <v>3242218</v> </b> </bs> </hist> @@ -16138,12 +16153,12 @@ <b> <a>1</a> <b>2</b> - <v>3150194</v> + <v>3150330</v> </b> <b> <a>2</a> <b>5</b> - <v>41511</v> + <v>41513</v> </b> </bs> </hist> @@ -16159,12 +16174,12 @@ <b> <a>1</a> <b>2</b> - <v>3150194</v> + <v>3150330</v> </b> <b> <a>2</a> <b>5</b> - <v>41511</v> + <v>41513</v> </b> </bs> </hist> @@ -16180,12 +16195,12 @@ <b> <a>1</a> <b>2</b> - <v>3123142</v> + <v>3123276</v> </b> <b> <a>2</a> <b>20</b> - <v>40112</v> + <v>40113</v> </b> </bs> </hist> @@ -16201,12 +16216,12 @@ <b> <a>1</a> <b>2</b> - <v>3123142</v> + <v>3123276</v> </b> <b> <a>2</a> <b>20</b> - <v>40112</v> + <v>40113</v> </b> </bs> </hist> @@ -16216,33 +16231,33 @@ </relation> <relation> <name>type_def</name> - <cardinality>2624540</cardinality> + <cardinality>2624653</cardinality> <columnsizes> <e> <k>id</k> - <v>2624540</v> + <v>2624653</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>type_decl_top</name> - <cardinality>743005</cardinality> + <cardinality>743037</cardinality> <columnsizes> <e> <k>type_decl</k> - <v>743005</v> + <v>743037</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>namespace_decls</name> - <cardinality>311530</cardinality> + <cardinality>311523</cardinality> <columnsizes> <e> <k>id</k> - <v>311530</v> + <v>311523</v> </e> <e> <k>namespace_id</k> @@ -16250,11 +16265,11 @@ </e> <e> <k>location</k> - <v>311530</v> + <v>311523</v> </e> <e> <k>bodylocation</k> - <v>311530</v> + <v>311523</v> </e> </columnsizes> <dependencies> @@ -16268,7 +16283,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16284,7 +16299,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16300,7 +16315,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16514,7 +16529,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16530,7 +16545,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16546,7 +16561,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16562,7 +16577,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16578,7 +16593,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16594,7 +16609,7 @@ <b> <a>1</a> <b>2</b> - <v>311530</v> + <v>311523</v> </b> </bs> </hist> @@ -16604,19 +16619,19 @@ </relation> <relation> <name>usings</name> - <cardinality>369403</cardinality> + <cardinality>369419</cardinality> <columnsizes> <e> <k>id</k> - <v>369403</v> + <v>369419</v> </e> <e> <k>element_id</k> - <v>315299</v> + <v>315312</v> </e> <e> <k>location</k> - <v>247668</v> + <v>247679</v> </e> </columnsizes> <dependencies> @@ -16630,7 +16645,7 @@ <b> <a>1</a> <b>2</b> - <v>369403</v> + <v>369419</v> </b> </bs> </hist> @@ -16646,7 +16661,7 @@ <b> <a>1</a> <b>2</b> - <v>369403</v> + <v>369419</v> </b> </bs> </hist> @@ -16662,12 +16677,12 @@ <b> <a>1</a> <b>2</b> - <v>263060</v> + <v>263071</v> </b> <b> <a>2</a> <b>3</b> - <v>50839</v> + <v>50841</v> </b> <b> <a>3</a> @@ -16688,12 +16703,12 @@ <b> <a>1</a> <b>2</b> - <v>263060</v> + <v>263071</v> </b> <b> <a>2</a> <b>3</b> - <v>50839</v> + <v>50841</v> </b> <b> <a>3</a> @@ -16714,22 +16729,22 @@ <b> <a>1</a> <b>2</b> - <v>202425</v> + <v>202434</v> </b> <b> <a>2</a> <b>4</b> - <v>10727</v> + <v>10728</v> </b> <b> <a>4</a> <b>5</b> - <v>31250</v> + <v>31251</v> </b> <b> <a>5</a> <b>11</b> - <v>3264</v> + <v>3265</v> </b> </bs> </hist> @@ -16745,22 +16760,22 @@ <b> <a>1</a> <b>2</b> - <v>202425</v> + <v>202434</v> </b> <b> <a>2</a> <b>4</b> - <v>10727</v> + <v>10728</v> </b> <b> <a>4</a> <b>5</b> - <v>31250</v> + <v>31251</v> </b> <b> <a>5</a> <b>11</b> - <v>3264</v> + <v>3265</v> </b> </bs> </hist> @@ -16770,15 +16785,15 @@ </relation> <relation> <name>using_container</name> - <cardinality>462754</cardinality> + <cardinality>462579</cardinality> <columnsizes> <e> <k>parent</k> - <v>10955</v> + <v>10951</v> </e> <e> <k>child</k> - <v>293425</v> + <v>293313</v> </e> </columnsizes> <dependencies> @@ -16792,7 +16807,7 @@ <b> <a>1</a> <b>2</b> - <v>3267</v> + <v>3266</v> </b> <b> <a>2</a> @@ -16802,17 +16817,17 @@ <b> <a>4</a> <b>6</b> - <v>414</v> + <v>413</v> </b> <b> <a>6</a> <b>7</b> - <v>2473</v> + <v>2472</v> </b> <b> <a>7</a> <b>17</b> - <v>895</v> + <v>894</v> </b> <b> <a>19</a> @@ -16848,22 +16863,22 @@ <b> <a>1</a> <b>2</b> - <v>216420</v> + <v>216338</v> </b> <b> <a>2</a> <b>3</b> - <v>51276</v> + <v>51257</v> </b> <b> <a>3</a> <b>11</b> - <v>23612</v> + <v>23603</v> </b> <b> <a>13</a> <b>41</b> - <v>2115</v> + <v>2114</v> </b> </bs> </hist> @@ -16873,15 +16888,15 @@ </relation> <relation> <name>static_asserts</name> - <cardinality>134655</cardinality> + <cardinality>134652</cardinality> <columnsizes> <e> <k>id</k> - <v>134655</v> + <v>134652</v> </e> <e> <k>condition</k> - <v>134655</v> + <v>134652</v> </e> <e> <k>message</k> @@ -16889,7 +16904,7 @@ </e> <e> <k>location</k> - <v>17564</v> + <v>17563</v> </e> <e> <k>enclosing</k> @@ -16907,7 +16922,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -16923,7 +16938,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -16939,7 +16954,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -16955,7 +16970,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -16971,7 +16986,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -16987,7 +17002,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -17003,7 +17018,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -17019,7 +17034,7 @@ <b> <a>1</a> <b>2</b> - <v>134655</v> + <v>134652</v> </b> </bs> </hist> @@ -17035,7 +17050,7 @@ <b> <a>1</a> <b>2</b> - <v>22236</v> + <v>22235</v> </b> <b> <a>2</a> @@ -17076,7 +17091,7 @@ <b> <a>1</a> <b>2</b> - <v>22236</v> + <v>22235</v> </b> <b> <a>2</a> @@ -17117,7 +17132,7 @@ <b> <a>1</a> <b>2</b> - <v>28006</v> + <v>28005</v> </b> <b> <a>2</a> @@ -17481,15 +17496,15 @@ </relation> <relation> <name>params</name> - <cardinality>6739755</cardinality> + <cardinality>6740045</cardinality> <columnsizes> <e> <k>id</k> - <v>6576042</v> + <v>6576325</v> </e> <e> <k>function</k> - <v>3879674</v> + <v>3879840</v> </e> <e> <k>index</k> @@ -17497,7 +17512,7 @@ </e> <e> <k>type_id</k> - <v>2188904</v> + <v>2188998</v> </e> </columnsizes> <dependencies> @@ -17511,7 +17526,7 @@ <b> <a>1</a> <b>2</b> - <v>6576042</v> + <v>6576325</v> </b> </bs> </hist> @@ -17527,7 +17542,7 @@ <b> <a>1</a> <b>2</b> - <v>6576042</v> + <v>6576325</v> </b> </bs> </hist> @@ -17543,12 +17558,12 @@ <b> <a>1</a> <b>2</b> - <v>6452441</v> + <v>6452719</v> </b> <b> <a>2</a> <b>4</b> - <v>123601</v> + <v>123606</v> </b> </bs> </hist> @@ -17564,22 +17579,22 @@ <b> <a>1</a> <b>2</b> - <v>2257002</v> + <v>2257099</v> </b> <b> <a>2</a> <b>3</b> - <v>951961</v> + <v>952002</v> </b> <b> <a>3</a> <b>4</b> - <v>429571</v> + <v>429590</v> </b> <b> <a>4</a> <b>18</b> - <v>241138</v> + <v>241149</v> </b> </bs> </hist> @@ -17595,22 +17610,22 @@ <b> <a>1</a> <b>2</b> - <v>2257002</v> + <v>2257099</v> </b> <b> <a>2</a> <b>3</b> - <v>951961</v> + <v>952002</v> </b> <b> <a>3</a> <b>4</b> - <v>429571</v> + <v>429590</v> </b> <b> <a>4</a> <b>18</b> - <v>241138</v> + <v>241149</v> </b> </bs> </hist> @@ -17626,22 +17641,22 @@ <b> <a>1</a> <b>2</b> - <v>2555043</v> + <v>2555153</v> </b> <b> <a>2</a> <b>3</b> - <v>826028</v> + <v>826063</v> </b> <b> <a>3</a> <b>4</b> - <v>346082</v> + <v>346097</v> </b> <b> <a>4</a> <b>12</b> - <v>152519</v> + <v>152525</v> </b> </bs> </hist> @@ -17895,22 +17910,22 @@ <b> <a>1</a> <b>2</b> - <v>1488343</v> + <v>1488407</v> </b> <b> <a>2</a> <b>3</b> - <v>440299</v> + <v>440318</v> </b> <b> <a>3</a> <b>8</b> - <v>170242</v> + <v>170250</v> </b> <b> <a>8</a> <b>518</b> - <v>90018</v> + <v>90022</v> </b> </bs> </hist> @@ -17926,22 +17941,22 @@ <b> <a>1</a> <b>2</b> - <v>1708026</v> + <v>1708100</v> </b> <b> <a>2</a> <b>3</b> - <v>248134</v> + <v>248145</v> </b> <b> <a>3</a> <b>9</b> - <v>168377</v> + <v>168384</v> </b> <b> <a>9</a> <b>502</b> - <v>64365</v> + <v>64368</v> </b> </bs> </hist> @@ -17957,17 +17972,17 @@ <b> <a>1</a> <b>2</b> - <v>1761664</v> + <v>1761740</v> </b> <b> <a>2</a> <b>3</b> - <v>348415</v> + <v>348430</v> </b> <b> <a>3</a> <b>13</b> - <v>78824</v> + <v>78828</v> </b> </bs> </hist> @@ -17977,11 +17992,11 @@ </relation> <relation> <name>overrides</name> - <cardinality>125866</cardinality> + <cardinality>125864</cardinality> <columnsizes> <e> <k>new</k> - <v>122890</v> + <v>122888</v> </e> <e> <k>old</k> @@ -17999,7 +18014,7 @@ <b> <a>1</a> <b>2</b> - <v>119922</v> + <v>119920</v> </b> <b> <a>2</a> @@ -18060,19 +18075,19 @@ </relation> <relation> <name>membervariables</name> - <cardinality>1056556</cardinality> + <cardinality>1056548</cardinality> <columnsizes> <e> <k>id</k> - <v>1054758</v> + <v>1054750</v> </e> <e> <k>type_id</k> - <v>327746</v> + <v>327744</v> </e> <e> <k>name</k> - <v>451645</v> + <v>451642</v> </e> </columnsizes> <dependencies> @@ -18086,7 +18101,7 @@ <b> <a>1</a> <b>2</b> - <v>1053040</v> + <v>1053032</v> </b> <b> <a>2</a> @@ -18107,7 +18122,7 @@ <b> <a>1</a> <b>2</b> - <v>1054758</v> + <v>1054750</v> </b> </bs> </hist> @@ -18123,7 +18138,7 @@ <b> <a>1</a> <b>2</b> - <v>243043</v> + <v>243041</v> </b> <b> <a>2</a> @@ -18154,12 +18169,12 @@ <b> <a>1</a> <b>2</b> - <v>255269</v> + <v>255267</v> </b> <b> <a>2</a> <b>3</b> - <v>46467</v> + <v>46466</v> </b> <b> <a>3</a> @@ -18185,17 +18200,17 @@ <b> <a>1</a> <b>2</b> - <v>295343</v> + <v>295341</v> </b> <b> <a>2</a> <b>3</b> - <v>86541</v> + <v>86540</v> </b> <b> <a>3</a> <b>5</b> - <v>41193</v> + <v>41192</v> </b> <b> <a>5</a> @@ -18216,12 +18231,12 @@ <b> <a>1</a> <b>2</b> - <v>367860</v> + <v>367858</v> </b> <b> <a>2</a> <b>3</b> - <v>51741</v> + <v>51740</v> </b> <b> <a>3</a> @@ -18407,19 +18422,19 @@ </relation> <relation> <name>localvariables</name> - <cardinality>576906</cardinality> + <cardinality>576895</cardinality> <columnsizes> <e> <k>id</k> - <v>576906</v> + <v>576895</v> </e> <e> <k>type_id</k> - <v>37597</v> + <v>37592</v> </e> <e> <k>name</k> - <v>90649</v> + <v>90648</v> </e> </columnsizes> <dependencies> @@ -18433,7 +18448,7 @@ <b> <a>1</a> <b>2</b> - <v>576906</v> + <v>576895</v> </b> </bs> </hist> @@ -18449,7 +18464,7 @@ <b> <a>1</a> <b>2</b> - <v>576906</v> + <v>576895</v> </b> </bs> </hist> @@ -18470,12 +18485,12 @@ <b> <a>2</a> <b>3</b> - <v>5368</v> + <v>5372</v> </b> <b> <a>3</a> <b>4</b> - <v>2467</v> + <v>2459</v> </b> <b> <a>4</a> @@ -18485,12 +18500,12 @@ <b> <a>7</a> <b>18</b> - <v>2851</v> + <v>2855</v> </b> <b> <a>18</a> <b>15849</b> - <v>2496</v> + <v>2492</v> </b> </bs> </hist> @@ -18506,17 +18521,17 @@ <b> <a>1</a> <b>2</b> - <v>26772</v> + <v>26775</v> </b> <b> <a>2</a> <b>3</b> - <v>4572</v> + <v>4568</v> </b> <b> <a>3</a> <b>5</b> - <v>2921</v> + <v>2917</v> </b> <b> <a>5</a> @@ -18542,12 +18557,12 @@ <b> <a>1</a> <b>2</b> - <v>57095</v> + <v>57094</v> </b> <b> <a>2</a> <b>3</b> - <v>14301</v> + <v>14300</v> </b> <b> <a>3</a> @@ -18557,7 +18572,7 @@ <b> <a>5</a> <b>15</b> - <v>6990</v> + <v>6989</v> </b> <b> <a>15</a> @@ -18578,7 +18593,7 @@ <b> <a>1</a> <b>2</b> - <v>76577</v> + <v>76576</v> </b> <b> <a>2</a> @@ -18598,11 +18613,11 @@ </relation> <relation> <name>autoderivation</name> - <cardinality>148035</cardinality> + <cardinality>147957</cardinality> <columnsizes> <e> <k>var</k> - <v>148035</v> + <v>147957</v> </e> <e> <k>derivation_type</k> @@ -18620,7 +18635,7 @@ <b> <a>1</a> <b>2</b> - <v>148035</v> + <v>147957</v> </b> </bs> </hist> @@ -18666,15 +18681,15 @@ </relation> <relation> <name>orphaned_variables</name> - <cardinality>37368</cardinality> + <cardinality>37359</cardinality> <columnsizes> <e> <k>var</k> - <v>37368</v> + <v>37359</v> </e> <e> <k>function</k> - <v>32845</v> + <v>32837</v> </e> </columnsizes> <dependencies> @@ -18688,7 +18703,7 @@ <b> <a>1</a> <b>2</b> - <v>37368</v> + <v>37359</v> </b> </bs> </hist> @@ -18704,7 +18719,7 @@ <b> <a>1</a> <b>2</b> - <v>30792</v> + <v>30785</v> </b> <b> <a>2</a> @@ -18719,11 +18734,11 @@ </relation> <relation> <name>enumconstants</name> - <cardinality>241684</cardinality> + <cardinality>241682</cardinality> <columnsizes> <e> <k>id</k> - <v>241684</v> + <v>241682</v> </e> <e> <k>parent</k> @@ -18739,11 +18754,11 @@ </e> <e> <k>name</k> - <v>241405</v> + <v>241403</v> </e> <e> <k>location</k> - <v>221587</v> + <v>221585</v> </e> </columnsizes> <dependencies> @@ -18757,7 +18772,7 @@ <b> <a>1</a> <b>2</b> - <v>241684</v> + <v>241682</v> </b> </bs> </hist> @@ -18773,7 +18788,7 @@ <b> <a>1</a> <b>2</b> - <v>241684</v> + <v>241682</v> </b> </bs> </hist> @@ -18789,7 +18804,7 @@ <b> <a>1</a> <b>2</b> - <v>241684</v> + <v>241682</v> </b> </bs> </hist> @@ -18805,7 +18820,7 @@ <b> <a>1</a> <b>2</b> - <v>241684</v> + <v>241682</v> </b> </bs> </hist> @@ -18821,7 +18836,7 @@ <b> <a>1</a> <b>2</b> - <v>241684</v> + <v>241682</v> </b> </bs> </hist> @@ -19432,7 +19447,7 @@ <b> <a>1</a> <b>2</b> - <v>241125</v> + <v>241123</v> </b> <b> <a>2</a> @@ -19453,7 +19468,7 @@ <b> <a>1</a> <b>2</b> - <v>241125</v> + <v>241123</v> </b> <b> <a>2</a> @@ -19474,7 +19489,7 @@ <b> <a>1</a> <b>2</b> - <v>241405</v> + <v>241403</v> </b> </bs> </hist> @@ -19490,7 +19505,7 @@ <b> <a>1</a> <b>2</b> - <v>241405</v> + <v>241403</v> </b> </bs> </hist> @@ -19506,7 +19521,7 @@ <b> <a>1</a> <b>2</b> - <v>241125</v> + <v>241123</v> </b> <b> <a>2</a> @@ -19527,7 +19542,7 @@ <b> <a>1</a> <b>2</b> - <v>220828</v> + <v>220826</v> </b> <b> <a>2</a> @@ -19548,7 +19563,7 @@ <b> <a>1</a> <b>2</b> - <v>221587</v> + <v>221585</v> </b> </bs> </hist> @@ -19564,7 +19579,7 @@ <b> <a>1</a> <b>2</b> - <v>220828</v> + <v>220826</v> </b> <b> <a>2</a> @@ -19585,7 +19600,7 @@ <b> <a>1</a> <b>2</b> - <v>221587</v> + <v>221585</v> </b> </bs> </hist> @@ -19601,7 +19616,7 @@ <b> <a>1</a> <b>2</b> - <v>220828</v> + <v>220826</v> </b> <b> <a>2</a> @@ -19616,23 +19631,23 @@ </relation> <relation> <name>builtintypes</name> - <cardinality>26119</cardinality> + <cardinality>26120</cardinality> <columnsizes> <e> <k>id</k> - <v>26119</v> + <v>26120</v> </e> <e> <k>name</k> - <v>26119</v> + <v>26120</v> </e> <e> <k>kind</k> - <v>26119</v> + <v>26120</v> </e> <e> <k>size</k> - <v>3264</v> + <v>3265</v> </e> <e> <k>sign</k> @@ -19654,7 +19669,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19670,7 +19685,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19686,7 +19701,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19702,7 +19717,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19718,7 +19733,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19734,7 +19749,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19750,7 +19765,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19766,7 +19781,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19782,7 +19797,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19798,7 +19813,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19814,7 +19829,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19830,7 +19845,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19846,7 +19861,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19862,7 +19877,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -19878,7 +19893,7 @@ <b> <a>1</a> <b>2</b> - <v>26119</v> + <v>26120</v> </b> </bs> </hist> @@ -20323,15 +20338,15 @@ </relation> <relation> <name>derivedtypes</name> - <cardinality>4330701</cardinality> + <cardinality>4330887</cardinality> <columnsizes> <e> <k>id</k> - <v>4330701</v> + <v>4330887</v> </e> <e> <k>name</k> - <v>2160919</v> + <v>2161012</v> </e> <e> <k>kind</k> @@ -20339,7 +20354,7 @@ </e> <e> <k>type_id</k> - <v>2670715</v> + <v>2670830</v> </e> </columnsizes> <dependencies> @@ -20353,7 +20368,7 @@ <b> <a>1</a> <b>2</b> - <v>4330701</v> + <v>4330887</v> </b> </bs> </hist> @@ -20369,7 +20384,7 @@ <b> <a>1</a> <b>2</b> - <v>4330701</v> + <v>4330887</v> </b> </bs> </hist> @@ -20385,7 +20400,7 @@ <b> <a>1</a> <b>2</b> - <v>4330701</v> + <v>4330887</v> </b> </bs> </hist> @@ -20401,17 +20416,17 @@ <b> <a>1</a> <b>2</b> - <v>1899258</v> + <v>1899340</v> </b> <b> <a>2</a> <b>5</b> - <v>164645</v> + <v>164653</v> </b> <b> <a>5</a> <b>1153</b> - <v>97015</v> + <v>97019</v> </b> </bs> </hist> @@ -20427,7 +20442,7 @@ <b> <a>1</a> <b>2</b> - <v>2159986</v> + <v>2160079</v> </b> <b> <a>2</a> @@ -20448,17 +20463,17 @@ <b> <a>1</a> <b>2</b> - <v>1899258</v> + <v>1899340</v> </b> <b> <a>2</a> <b>5</b> - <v>164645</v> + <v>164653</v> </b> <b> <a>5</a> <b>1135</b> - <v>97015</v> + <v>97019</v> </b> </bs> </hist> @@ -20597,22 +20612,22 @@ <b> <a>1</a> <b>2</b> - <v>1651123</v> + <v>1651194</v> </b> <b> <a>2</a> <b>3</b> - <v>560169</v> + <v>560193</v> </b> <b> <a>3</a> <b>4</b> - <v>354012</v> + <v>354027</v> </b> <b> <a>4</a> <b>72</b> - <v>105410</v> + <v>105415</v> </b> </bs> </hist> @@ -20628,22 +20643,22 @@ <b> <a>1</a> <b>2</b> - <v>1662317</v> + <v>1662389</v> </b> <b> <a>2</a> <b>3</b> - <v>552706</v> + <v>552730</v> </b> <b> <a>3</a> <b>4</b> - <v>351213</v> + <v>351228</v> </b> <b> <a>4</a> <b>72</b> - <v>104477</v> + <v>104482</v> </b> </bs> </hist> @@ -20659,22 +20674,22 @@ <b> <a>1</a> <b>2</b> - <v>1655321</v> + <v>1655392</v> </b> <b> <a>2</a> <b>3</b> - <v>563900</v> + <v>563924</v> </b> <b> <a>3</a> <b>4</b> - <v>353079</v> + <v>353094</v> </b> <b> <a>4</a> <b>6</b> - <v>98414</v> + <v>98418</v> </b> </bs> </hist> @@ -20684,11 +20699,11 @@ </relation> <relation> <name>pointerishsize</name> - <cardinality>3210362</cardinality> + <cardinality>3210500</cardinality> <columnsizes> <e> <k>id</k> - <v>3210362</v> + <v>3210500</v> </e> <e> <k>size</k> @@ -20710,7 +20725,7 @@ <b> <a>1</a> <b>2</b> - <v>3210362</v> + <v>3210500</v> </b> </bs> </hist> @@ -20726,7 +20741,7 @@ <b> <a>1</a> <b>2</b> - <v>3210362</v> + <v>3210500</v> </b> </bs> </hist> @@ -20800,19 +20815,19 @@ </relation> <relation> <name>arraysizes</name> - <cardinality>88153</cardinality> + <cardinality>88157</cardinality> <columnsizes> <e> <k>id</k> - <v>88153</v> + <v>88157</v> </e> <e> <k>num_elements</k> - <v>31716</v> + <v>31717</v> </e> <e> <k>bytesize</k> - <v>33115</v> + <v>33117</v> </e> <e> <k>alignment</k> @@ -20830,7 +20845,7 @@ <b> <a>1</a> <b>2</b> - <v>88153</v> + <v>88157</v> </b> </bs> </hist> @@ -20846,7 +20861,7 @@ <b> <a>1</a> <b>2</b> - <v>88153</v> + <v>88157</v> </b> </bs> </hist> @@ -20862,7 +20877,7 @@ <b> <a>1</a> <b>2</b> - <v>88153</v> + <v>88157</v> </b> </bs> </hist> @@ -20883,7 +20898,7 @@ <b> <a>2</a> <b>3</b> - <v>23787</v> + <v>23788</v> </b> <b> <a>3</a> @@ -20914,7 +20929,7 @@ <b> <a>1</a> <b>2</b> - <v>26585</v> + <v>26587</v> </b> <b> <a>2</a> @@ -20940,7 +20955,7 @@ <b> <a>1</a> <b>2</b> - <v>26585</v> + <v>26587</v> </b> <b> <a>2</a> @@ -20971,12 +20986,12 @@ <b> <a>2</a> <b>3</b> - <v>23787</v> + <v>23788</v> </b> <b> <a>3</a> <b>4</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>4</a> @@ -21002,7 +21017,7 @@ <b> <a>1</a> <b>2</b> - <v>27518</v> + <v>27519</v> </b> <b> <a>2</a> @@ -21028,7 +21043,7 @@ <b> <a>1</a> <b>2</b> - <v>27518</v> + <v>27519</v> </b> <b> <a>2</a> @@ -21136,15 +21151,15 @@ </relation> <relation> <name>typedefbase</name> - <cardinality>1672769</cardinality> + <cardinality>1672135</cardinality> <columnsizes> <e> <k>id</k> - <v>1672769</v> + <v>1672135</v> </e> <e> <k>type_id</k> - <v>787413</v> + <v>787114</v> </e> </columnsizes> <dependencies> @@ -21158,7 +21173,7 @@ <b> <a>1</a> <b>2</b> - <v>1672769</v> + <v>1672135</v> </b> </bs> </hist> @@ -21174,22 +21189,22 @@ <b> <a>1</a> <b>2</b> - <v>612790</v> + <v>612558</v> </b> <b> <a>2</a> <b>3</b> - <v>82588</v> + <v>82557</v> </b> <b> <a>3</a> <b>6</b> - <v>61505</v> + <v>61481</v> </b> <b> <a>6</a> <b>5437</b> - <v>30528</v> + <v>30517</v> </b> </bs> </hist> @@ -21199,19 +21214,19 @@ </relation> <relation> <name>decltypes</name> - <cardinality>166216</cardinality> + <cardinality>165808</cardinality> <columnsizes> <e> <k>id</k> - <v>16699</v> + <v>16658</v> </e> <e> <k>expr</k> - <v>166216</v> + <v>165808</v> </e> <e> <k>base_type</k> - <v>9970</v> + <v>9945</v> </e> <e> <k>parentheses_would_change_meaning</k> @@ -21229,37 +21244,37 @@ <b> <a>1</a> <b>2</b> - <v>5090</v> + <v>5077</v> </b> <b> <a>2</a> <b>3</b> - <v>6195</v> + <v>6180</v> </b> <b> <a>3</a> <b>5</b> - <v>1105</v> + <v>1102</v> </b> <b> <a>5</a> <b>12</b> - <v>1296</v> + <v>1293</v> </b> <b> <a>12</a> <b>18</b> - <v>1353</v> + <v>1350</v> </b> <b> <a>18</a> <b>46</b> - <v>1258</v> + <v>1255</v> </b> <b> <a>51</a> <b>740</b> - <v>400</v> + <v>399</v> </b> </bs> </hist> @@ -21275,7 +21290,7 @@ <b> <a>1</a> <b>2</b> - <v>16699</v> + <v>16658</v> </b> </bs> </hist> @@ -21291,7 +21306,7 @@ <b> <a>1</a> <b>2</b> - <v>16699</v> + <v>16658</v> </b> </bs> </hist> @@ -21307,7 +21322,7 @@ <b> <a>1</a> <b>2</b> - <v>166216</v> + <v>165808</v> </b> </bs> </hist> @@ -21323,7 +21338,7 @@ <b> <a>1</a> <b>2</b> - <v>166216</v> + <v>165808</v> </b> </bs> </hist> @@ -21339,7 +21354,7 @@ <b> <a>1</a> <b>2</b> - <v>166216</v> + <v>165808</v> </b> </bs> </hist> @@ -21355,17 +21370,17 @@ <b> <a>1</a> <b>2</b> - <v>7244</v> + <v>7226</v> </b> <b> <a>2</a> <b>3</b> - <v>2268</v> + <v>2263</v> </b> <b> <a>4</a> <b>149</b> - <v>457</v> + <v>456</v> </b> </bs> </hist> @@ -21381,32 +21396,32 @@ <b> <a>1</a> <b>2</b> - <v>724</v> + <v>722</v> </b> <b> <a>2</a> <b>3</b> - <v>6138</v> + <v>6123</v> </b> <b> <a>3</a> <b>4</b> - <v>343</v> + <v>342</v> </b> <b> <a>4</a> <b>5</b> - <v>972</v> + <v>969</v> </b> <b> <a>5</a> <b>7</b> - <v>762</v> + <v>760</v> </b> <b> <a>7</a> <b>32</b> - <v>800</v> + <v>798</v> </b> <b> <a>32</a> @@ -21427,7 +21442,7 @@ <b> <a>1</a> <b>2</b> - <v>9970</v> + <v>9945</v> </b> </bs> </hist> @@ -21485,15 +21500,15 @@ </relation> <relation> <name>usertypes</name> - <cardinality>5229957</cardinality> + <cardinality>5230182</cardinality> <columnsizes> <e> <k>id</k> - <v>5229957</v> + <v>5230182</v> </e> <e> <k>name</k> - <v>1351216</v> + <v>1351274</v> </e> <e> <k>kind</k> @@ -21511,7 +21526,7 @@ <b> <a>1</a> <b>2</b> - <v>5229957</v> + <v>5230182</v> </b> </bs> </hist> @@ -21527,7 +21542,7 @@ <b> <a>1</a> <b>2</b> - <v>5229957</v> + <v>5230182</v> </b> </bs> </hist> @@ -21543,27 +21558,27 @@ <b> <a>1</a> <b>2</b> - <v>982745</v> + <v>982787</v> </b> <b> <a>2</a> <b>3</b> - <v>153451</v> + <v>153458</v> </b> <b> <a>3</a> <b>7</b> - <v>104477</v> + <v>104482</v> </b> <b> <a>7</a> <b>61</b> - <v>101679</v> + <v>101683</v> </b> <b> <a>65</a> <b>874</b> - <v>8861</v> + <v>8862</v> </b> </bs> </hist> @@ -21579,17 +21594,17 @@ <b> <a>1</a> <b>2</b> - <v>1210823</v> + <v>1210876</v> </b> <b> <a>2</a> <b>3</b> - <v>125000</v> + <v>125005</v> </b> <b> <a>3</a> <b>7</b> - <v>15391</v> + <v>15392</v> </b> </bs> </hist> @@ -21731,11 +21746,11 @@ </relation> <relation> <name>usertypesize</name> - <cardinality>1705694</cardinality> + <cardinality>1705768</cardinality> <columnsizes> <e> <k>id</k> - <v>1705694</v> + <v>1705768</v> </e> <e> <k>size</k> @@ -21757,7 +21772,7 @@ <b> <a>1</a> <b>2</b> - <v>1705694</v> + <v>1705768</v> </b> </bs> </hist> @@ -21773,7 +21788,7 @@ <b> <a>1</a> <b>2</b> - <v>1705694</v> + <v>1705768</v> </b> </bs> </hist> @@ -21789,7 +21804,7 @@ <b> <a>1</a> <b>2</b> - <v>3264</v> + <v>3265</v> </b> <b> <a>2</a> @@ -21937,22 +21952,22 @@ </relation> <relation> <name>usertype_final</name> - <cardinality>9420</cardinality> + <cardinality>9415</cardinality> <columnsizes> <e> <k>id</k> - <v>9420</v> + <v>9415</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>usertype_uuid</name> - <cardinality>36639</cardinality> + <cardinality>36638</cardinality> <columnsizes> <e> <k>id</k> - <v>36639</v> + <v>36638</v> </e> <e> <k>uuid</k> @@ -21970,7 +21985,7 @@ <b> <a>1</a> <b>2</b> - <v>36639</v> + <v>36638</v> </b> </bs> </hist> @@ -21986,7 +22001,7 @@ <b> <a>1</a> <b>2</b> - <v>35890</v> + <v>35889</v> </b> <b> <a>2</a> @@ -22001,15 +22016,15 @@ </relation> <relation> <name>mangled_name</name> - <cardinality>9477636</cardinality> + <cardinality>9478043</cardinality> <columnsizes> <e> <k>id</k> - <v>9477636</v> + <v>9478043</v> </e> <e> <k>mangled_name</k> - <v>6448244</v> + <v>6448521</v> </e> <e> <k>is_complete</k> @@ -22027,7 +22042,7 @@ <b> <a>1</a> <b>2</b> - <v>9477636</v> + <v>9478043</v> </b> </bs> </hist> @@ -22043,7 +22058,7 @@ <b> <a>1</a> <b>2</b> - <v>9477636</v> + <v>9478043</v> </b> </bs> </hist> @@ -22059,12 +22074,12 @@ <b> <a>1</a> <b>2</b> - <v>6167459</v> + <v>6167725</v> </b> <b> <a>2</a> <b>874</b> - <v>280784</v> + <v>280796</v> </b> </bs> </hist> @@ -22080,7 +22095,7 @@ <b> <a>1</a> <b>2</b> - <v>6448244</v> + <v>6448521</v> </b> </bs> </hist> @@ -22122,59 +22137,59 @@ </relation> <relation> <name>is_pod_class</name> - <cardinality>530716</cardinality> + <cardinality>530515</cardinality> <columnsizes> <e> <k>id</k> - <v>530716</v> + <v>530515</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>is_standard_layout_class</name> - <cardinality>1253734</cardinality> + <cardinality>1253788</cardinality> <columnsizes> <e> <k>id</k> - <v>1253734</v> + <v>1253788</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>is_complete</name> - <cardinality>1645060</cardinality> + <cardinality>1645130</cardinality> <columnsizes> <e> <k>id</k> - <v>1645060</v> + <v>1645130</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>is_class_template</name> - <cardinality>397855</cardinality> + <cardinality>397872</cardinality> <columnsizes> <e> <k>id</k> - <v>397855</v> + <v>397872</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>class_instantiation</name> - <cardinality>1088622</cardinality> + <cardinality>1088668</cardinality> <columnsizes> <e> <k>to</k> - <v>1088622</v> + <v>1088668</v> </e> <e> <k>from</k> - <v>168377</v> + <v>168384</v> </e> </columnsizes> <dependencies> @@ -22188,7 +22203,7 @@ <b> <a>1</a> <b>2</b> - <v>1088622</v> + <v>1088668</v> </b> </bs> </hist> @@ -22204,12 +22219,12 @@ <b> <a>1</a> <b>2</b> - <v>59701</v> + <v>59704</v> </b> <b> <a>2</a> <b>3</b> - <v>29384</v> + <v>29385</v> </b> <b> <a>3</a> @@ -22219,12 +22234,12 @@ <b> <a>4</a> <b>5</b> - <v>13059</v> + <v>13060</v> </b> <b> <a>5</a> <b>6</b> - <v>9794</v> + <v>9795</v> </b> <b> <a>6</a> @@ -22234,7 +22249,7 @@ <b> <a>10</a> <b>16</b> - <v>13059</v> + <v>13060</v> </b> <b> <a>16</a> @@ -22254,19 +22269,19 @@ </relation> <relation> <name>class_template_argument</name> - <cardinality>2859038</cardinality> + <cardinality>2857953</cardinality> <columnsizes> <e> <k>type_id</k> - <v>1304835</v> + <v>1304340</v> </e> <e> <k>index</k> - <v>1253</v> + <v>1252</v> </e> <e> <k>arg_type</k> - <v>833229</v> + <v>832912</v> </e> </columnsizes> <dependencies> @@ -22280,27 +22295,27 @@ <b> <a>1</a> <b>2</b> - <v>536592</v> + <v>536388</v> </b> <b> <a>2</a> <b>3</b> - <v>396090</v> + <v>395940</v> </b> <b> <a>3</a> <b>4</b> - <v>229424</v> + <v>229337</v> </b> <b> <a>4</a> <b>7</b> - <v>119328</v> + <v>119283</v> </b> <b> <a>7</a> <b>113</b> - <v>23400</v> + <v>23391</v> </b> </bs> </hist> @@ -22316,22 +22331,22 @@ <b> <a>1</a> <b>2</b> - <v>563013</v> + <v>562800</v> </b> <b> <a>2</a> <b>3</b> - <v>407236</v> + <v>407082</v> </b> <b> <a>3</a> <b>4</b> - <v>242752</v> + <v>242660</v> </b> <b> <a>4</a> <b>113</b> - <v>91832</v> + <v>91797</v> </b> </bs> </hist> @@ -22439,27 +22454,27 @@ <b> <a>1</a> <b>2</b> - <v>518731</v> + <v>518534</v> </b> <b> <a>2</a> <b>3</b> - <v>172921</v> + <v>172856</v> </b> <b> <a>3</a> <b>4</b> - <v>50884</v> + <v>50865</v> </b> <b> <a>4</a> <b>10</b> - <v>63519</v> + <v>63495</v> </b> <b> <a>10</a> <b>10265</b> - <v>27171</v> + <v>27161</v> </b> </bs> </hist> @@ -22475,17 +22490,17 @@ <b> <a>1</a> <b>2</b> - <v>734424</v> + <v>734146</v> </b> <b> <a>2</a> <b>3</b> - <v>80630</v> + <v>80599</v> </b> <b> <a>3</a> <b>22</b> - <v>18174</v> + <v>18167</v> </b> </bs> </hist> @@ -22495,11 +22510,11 @@ </relation> <relation> <name>class_template_argument_value</name> - <cardinality>494870</cardinality> + <cardinality>494891</cardinality> <columnsizes> <e> <k>type_id</k> - <v>304571</v> + <v>304584</v> </e> <e> <k>index</k> @@ -22507,7 +22522,7 @@ </e> <e> <k>arg_value</k> - <v>494870</v> + <v>494891</v> </e> </columnsizes> <dependencies> @@ -22521,12 +22536,12 @@ <b> <a>1</a> <b>2</b> - <v>249534</v> + <v>249544</v> </b> <b> <a>2</a> <b>3</b> - <v>53171</v> + <v>53174</v> </b> <b> <a>3</a> @@ -22547,22 +22562,22 @@ <b> <a>1</a> <b>2</b> - <v>189366</v> + <v>189374</v> </b> <b> <a>2</a> <b>3</b> - <v>81156</v> + <v>81160</v> </b> <b> <a>3</a> <b>4</b> - <v>12126</v> + <v>12127</v> </b> <b> <a>4</a> <b>9</b> - <v>21921</v> + <v>21922</v> </b> </bs> </hist> @@ -22640,7 +22655,7 @@ <b> <a>1</a> <b>2</b> - <v>494870</v> + <v>494891</v> </b> </bs> </hist> @@ -22656,7 +22671,7 @@ <b> <a>1</a> <b>2</b> - <v>494870</v> + <v>494891</v> </b> </bs> </hist> @@ -22666,15 +22681,15 @@ </relation> <relation> <name>is_proxy_class_for</name> - <cardinality>62966</cardinality> + <cardinality>62969</cardinality> <columnsizes> <e> <k>id</k> - <v>62966</v> + <v>62969</v> </e> <e> <k>templ_param_id</k> - <v>62966</v> + <v>62969</v> </e> </columnsizes> <dependencies> @@ -22688,7 +22703,7 @@ <b> <a>1</a> <b>2</b> - <v>62966</v> + <v>62969</v> </b> </bs> </hist> @@ -22704,7 +22719,7 @@ <b> <a>1</a> <b>2</b> - <v>62966</v> + <v>62969</v> </b> </bs> </hist> @@ -22714,19 +22729,19 @@ </relation> <relation> <name>type_mentions</name> - <cardinality>4029370</cardinality> + <cardinality>4029338</cardinality> <columnsizes> <e> <k>id</k> - <v>4029370</v> + <v>4029338</v> </e> <e> <k>type_id</k> - <v>198214</v> + <v>198212</v> </e> <e> <k>location</k> - <v>3995848</v> + <v>3995817</v> </e> <e> <k>kind</k> @@ -22744,7 +22759,7 @@ <b> <a>1</a> <b>2</b> - <v>4029370</v> + <v>4029338</v> </b> </bs> </hist> @@ -22760,7 +22775,7 @@ <b> <a>1</a> <b>2</b> - <v>4029370</v> + <v>4029338</v> </b> </bs> </hist> @@ -22776,7 +22791,7 @@ <b> <a>1</a> <b>2</b> - <v>4029370</v> + <v>4029338</v> </b> </bs> </hist> @@ -22894,7 +22909,7 @@ <b> <a>1</a> <b>2</b> - <v>198214</v> + <v>198212</v> </b> </bs> </hist> @@ -22910,7 +22925,7 @@ <b> <a>1</a> <b>2</b> - <v>3962326</v> + <v>3962295</v> </b> <b> <a>2</a> @@ -22931,7 +22946,7 @@ <b> <a>1</a> <b>2</b> - <v>3962326</v> + <v>3962295</v> </b> <b> <a>2</a> @@ -22952,7 +22967,7 @@ <b> <a>1</a> <b>2</b> - <v>3995848</v> + <v>3995817</v> </b> </bs> </hist> @@ -23010,26 +23025,26 @@ </relation> <relation> <name>is_function_template</name> - <cardinality>1401589</cardinality> + <cardinality>1401649</cardinality> <columnsizes> <e> <k>id</k> - <v>1401589</v> + <v>1401649</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>function_instantiation</name> - <cardinality>894870</cardinality> + <cardinality>894647</cardinality> <columnsizes> <e> <k>to</k> - <v>894870</v> + <v>894647</v> </e> <e> <k>from</k> - <v>144256</v> + <v>144220</v> </e> </columnsizes> <dependencies> @@ -23043,7 +23058,7 @@ <b> <a>1</a> <b>2</b> - <v>894870</v> + <v>894647</v> </b> </bs> </hist> @@ -23059,27 +23074,27 @@ <b> <a>1</a> <b>2</b> - <v>100033</v> + <v>100008</v> </b> <b> <a>2</a> <b>3</b> - <v>14230</v> + <v>14227</v> </b> <b> <a>3</a> <b>6</b> - <v>11864</v> + <v>11861</v> </b> <b> <a>6</a> <b>21</b> - <v>11899</v> + <v>11896</v> </b> <b> <a>22</a> <b>870</b> - <v>6228</v> + <v>6226</v> </b> </bs> </hist> @@ -23089,11 +23104,11 @@ </relation> <relation> <name>function_template_argument</name> - <cardinality>2310645</cardinality> + <cardinality>2310067</cardinality> <columnsizes> <e> <k>function_id</k> - <v>1319951</v> + <v>1319621</v> </e> <e> <k>index</k> @@ -23101,7 +23116,7 @@ </e> <e> <k>arg_type</k> - <v>300865</v> + <v>300789</v> </e> </columnsizes> <dependencies> @@ -23115,22 +23130,22 @@ <b> <a>1</a> <b>2</b> - <v>673580</v> + <v>673411</v> </b> <b> <a>2</a> <b>3</b> - <v>390007</v> + <v>389910</v> </b> <b> <a>3</a> <b>4</b> - <v>186566</v> + <v>186519</v> </b> <b> <a>4</a> <b>15</b> - <v>69797</v> + <v>69779</v> </b> </bs> </hist> @@ -23146,22 +23161,22 @@ <b> <a>1</a> <b>2</b> - <v>690977</v> + <v>690804</v> </b> <b> <a>2</a> <b>3</b> - <v>399784</v> + <v>399684</v> </b> <b> <a>3</a> <b>4</b> - <v>166664</v> + <v>166622</v> </b> <b> <a>4</a> <b>9</b> - <v>62525</v> + <v>62509</v> </b> </bs> </hist> @@ -23309,32 +23324,32 @@ <b> <a>1</a> <b>2</b> - <v>184304</v> + <v>184258</v> </b> <b> <a>2</a> <b>3</b> - <v>44049</v> + <v>44038</v> </b> <b> <a>3</a> <b>5</b> - <v>23172</v> + <v>23167</v> </b> <b> <a>5</a> <b>16</b> - <v>23207</v> + <v>23201</v> </b> <b> <a>16</a> <b>107</b> - <v>22720</v> + <v>22714</v> </b> <b> <a>108</a> <b>957</b> - <v>3409</v> + <v>3408</v> </b> </bs> </hist> @@ -23350,17 +23365,17 @@ <b> <a>1</a> <b>2</b> - <v>271116</v> + <v>271048</v> </b> <b> <a>2</a> <b>4</b> - <v>25678</v> + <v>25671</v> </b> <b> <a>4</a> <b>17</b> - <v>4070</v> + <v>4069</v> </b> </bs> </hist> @@ -23370,11 +23385,11 @@ </relation> <relation> <name>function_template_argument_value</name> - <cardinality>358553</cardinality> + <cardinality>358464</cardinality> <columnsizes> <e> <k>function_id</k> - <v>192516</v> + <v>192467</v> </e> <e> <k>index</k> @@ -23382,7 +23397,7 @@ </e> <e> <k>arg_value</k> - <v>355944</v> + <v>355855</v> </e> </columnsizes> <dependencies> @@ -23396,12 +23411,12 @@ <b> <a>1</a> <b>2</b> - <v>183260</v> + <v>183215</v> </b> <b> <a>2</a> <b>8</b> - <v>9255</v> + <v>9252</v> </b> </bs> </hist> @@ -23417,17 +23432,17 @@ <b> <a>1</a> <b>2</b> - <v>175919</v> + <v>175875</v> </b> <b> <a>2</a> <b>31</b> - <v>15100</v> + <v>15096</v> </b> <b> <a>32</a> <b>97</b> - <v>1496</v> + <v>1495</v> </b> </bs> </hist> @@ -23565,12 +23580,12 @@ <b> <a>1</a> <b>2</b> - <v>353334</v> + <v>353246</v> </b> <b> <a>2</a> <b>3</b> - <v>2609</v> + <v>2608</v> </b> </bs> </hist> @@ -23586,7 +23601,7 @@ <b> <a>1</a> <b>2</b> - <v>355944</v> + <v>355855</v> </b> </bs> </hist> @@ -23596,26 +23611,26 @@ </relation> <relation> <name>is_variable_template</name> - <cardinality>46998</cardinality> + <cardinality>46973</cardinality> <columnsizes> <e> <k>id</k> - <v>46998</v> + <v>46973</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>variable_instantiation</name> - <cardinality>171327</cardinality> + <cardinality>171237</cardinality> <columnsizes> <e> <k>to</k> - <v>171327</v> + <v>171237</v> </e> <e> <k>from</k> - <v>25673</v> + <v>25659</v> </e> </columnsizes> <dependencies> @@ -23629,7 +23644,7 @@ <b> <a>1</a> <b>2</b> - <v>171327</v> + <v>171237</v> </b> </bs> </hist> @@ -23645,22 +23660,22 @@ <b> <a>1</a> <b>2</b> - <v>13768</v> + <v>13761</v> </b> <b> <a>2</a> <b>3</b> - <v>2588</v> + <v>2586</v> </b> <b> <a>3</a> <b>4</b> - <v>1242</v> + <v>1241</v> </b> <b> <a>4</a> <b>6</b> - <v>1863</v> + <v>1862</v> </b> <b> <a>6</a> @@ -23670,12 +23685,12 @@ <b> <a>8</a> <b>12</b> - <v>2173</v> + <v>2172</v> </b> <b> <a>12</a> <b>38</b> - <v>1966</v> + <v>1965</v> </b> <b> <a>46</a> @@ -23690,19 +23705,19 @@ </relation> <relation> <name>variable_template_argument</name> - <cardinality>308493</cardinality> + <cardinality>308331</cardinality> <columnsizes> <e> <k>variable_id</k> - <v>162217</v> + <v>162132</v> </e> <e> <k>index</k> - <v>1759</v> + <v>1758</v> </e> <e> <k>arg_type</k> - <v>170085</v> + <v>169995</v> </e> </columnsizes> <dependencies> @@ -23716,22 +23731,22 @@ <b> <a>1</a> <b>2</b> - <v>83023</v> + <v>82980</v> </b> <b> <a>2</a> <b>3</b> - <v>50518</v> + <v>50491</v> </b> <b> <a>3</a> <b>4</b> - <v>18633</v> + <v>18624</v> </b> <b> <a>4</a> <b>17</b> - <v>10041</v> + <v>10036</v> </b> </bs> </hist> @@ -23747,22 +23762,22 @@ <b> <a>1</a> <b>2</b> - <v>87682</v> + <v>87636</v> </b> <b> <a>2</a> <b>3</b> - <v>51760</v> + <v>51733</v> </b> <b> <a>3</a> <b>4</b> - <v>13561</v> + <v>13554</v> </b> <b> <a>4</a> <b>17</b> - <v>9213</v> + <v>9208</v> </b> </bs> </hist> @@ -23783,12 +23798,12 @@ <b> <a>19</a> <b>20</b> - <v>621</v> + <v>620</v> </b> <b> <a>26</a> <b>27</b> - <v>414</v> + <v>413</v> </b> <b> <a>47</a> @@ -23839,17 +23854,17 @@ <b> <a>10</a> <b>11</b> - <v>414</v> + <v>413</v> </b> <b> <a>11</a> <b>12</b> - <v>207</v> + <v>206</v> </b> <b> <a>12</a> <b>13</b> - <v>414</v> + <v>413</v> </b> <b> <a>29</a> @@ -23895,22 +23910,22 @@ <b> <a>1</a> <b>2</b> - <v>136855</v> + <v>136783</v> </b> <b> <a>2</a> <b>3</b> - <v>19358</v> + <v>19348</v> </b> <b> <a>3</a> <b>24</b> - <v>12836</v> + <v>12829</v> </b> <b> <a>24</a> <b>110</b> - <v>1035</v> + <v>1034</v> </b> </bs> </hist> @@ -23926,17 +23941,17 @@ <b> <a>1</a> <b>2</b> - <v>153211</v> + <v>153130</v> </b> <b> <a>2</a> <b>3</b> - <v>14803</v> + <v>14795</v> </b> <b> <a>3</a> <b>6</b> - <v>2070</v> + <v>2069</v> </b> </bs> </hist> @@ -23946,19 +23961,19 @@ </relation> <relation> <name>variable_template_argument_value</name> - <cardinality>11801</cardinality> + <cardinality>11795</cardinality> <columnsizes> <e> <k>variable_id</k> - <v>7764</v> + <v>7760</v> </e> <e> <k>index</k> - <v>414</v> + <v>413</v> </e> <e> <k>arg_value</k> - <v>11801</v> + <v>11795</v> </e> </columnsizes> <dependencies> @@ -23972,12 +23987,12 @@ <b> <a>1</a> <b>2</b> - <v>7350</v> + <v>7346</v> </b> <b> <a>2</a> <b>3</b> - <v>414</v> + <v>413</v> </b> </bs> </hist> @@ -23993,12 +24008,12 @@ <b> <a>1</a> <b>2</b> - <v>4347</v> + <v>4345</v> </b> <b> <a>2</a> <b>3</b> - <v>3105</v> + <v>3104</v> </b> <b> <a>4</a> @@ -24081,7 +24096,7 @@ <b> <a>1</a> <b>2</b> - <v>11801</v> + <v>11795</v> </b> </bs> </hist> @@ -24097,7 +24112,7 @@ <b> <a>1</a> <b>2</b> - <v>11801</v> + <v>11795</v> </b> </bs> </hist> @@ -24107,15 +24122,15 @@ </relation> <relation> <name>routinetypes</name> - <cardinality>538161</cardinality> + <cardinality>538026</cardinality> <columnsizes> <e> <k>id</k> - <v>538161</v> + <v>538026</v> </e> <e> <k>return_type</k> - <v>280406</v> + <v>280336</v> </e> </columnsizes> <dependencies> @@ -24129,7 +24144,7 @@ <b> <a>1</a> <b>2</b> - <v>538161</v> + <v>538026</v> </b> </bs> </hist> @@ -24145,17 +24160,17 @@ <b> <a>1</a> <b>2</b> - <v>244220</v> + <v>244159</v> </b> <b> <a>2</a> <b>3</b> - <v>20946</v> + <v>20940</v> </b> <b> <a>3</a> <b>3595</b> - <v>15239</v> + <v>15236</v> </b> </bs> </hist> @@ -24165,11 +24180,11 @@ </relation> <relation> <name>routinetypeargs</name> - <cardinality>982278</cardinality> + <cardinality>982320</cardinality> <columnsizes> <e> <k>routine</k> - <v>423042</v> + <v>423060</v> </e> <e> <k>index</k> @@ -24177,7 +24192,7 @@ </e> <e> <k>type_id</k> - <v>226679</v> + <v>226689</v> </e> </columnsizes> <dependencies> @@ -24191,27 +24206,27 @@ <b> <a>1</a> <b>2</b> - <v>152519</v> + <v>152525</v> </b> <b> <a>2</a> <b>3</b> - <v>133862</v> + <v>133868</v> </b> <b> <a>3</a> <b>4</b> - <v>63432</v> + <v>63435</v> </b> <b> <a>4</a> <b>5</b> - <v>45709</v> + <v>45711</v> </b> <b> <a>5</a> <b>18</b> - <v>27518</v> + <v>27519</v> </b> </bs> </hist> @@ -24227,27 +24242,27 @@ <b> <a>1</a> <b>2</b> - <v>182369</v> + <v>182377</v> </b> <b> <a>2</a> <b>3</b> - <v>133395</v> + <v>133401</v> </b> <b> <a>3</a> <b>4</b> - <v>58768</v> + <v>58771</v> </b> <b> <a>4</a> <b>5</b> - <v>33582</v> + <v>33583</v> </b> <b> <a>5</a> <b>11</b> - <v>14925</v> + <v>14926</v> </b> </bs> </hist> @@ -24405,12 +24420,12 @@ <b> <a>1</a> <b>2</b> - <v>146455</v> + <v>146461</v> </b> <b> <a>2</a> <b>3</b> - <v>30783</v> + <v>30784</v> </b> <b> <a>3</a> @@ -24420,12 +24435,12 @@ <b> <a>5</a> <b>12</b> - <v>18190</v> + <v>18191</v> </b> <b> <a>12</a> <b>110</b> - <v>14458</v> + <v>14459</v> </b> </bs> </hist> @@ -24441,17 +24456,17 @@ <b> <a>1</a> <b>2</b> - <v>172575</v> + <v>172582</v> </b> <b> <a>2</a> <b>3</b> - <v>30783</v> + <v>30784</v> </b> <b> <a>3</a> <b>6</b> - <v>18656</v> + <v>18657</v> </b> <b> <a>6</a> @@ -24466,19 +24481,19 @@ </relation> <relation> <name>ptrtomembers</name> - <cardinality>37779</cardinality> + <cardinality>37781</cardinality> <columnsizes> <e> <k>id</k> - <v>37779</v> + <v>37781</v> </e> <e> <k>type_id</k> - <v>37779</v> + <v>37781</v> </e> <e> <k>class_id</k> - <v>15391</v> + <v>15392</v> </e> </columnsizes> <dependencies> @@ -24492,7 +24507,7 @@ <b> <a>1</a> <b>2</b> - <v>37779</v> + <v>37781</v> </b> </bs> </hist> @@ -24508,7 +24523,7 @@ <b> <a>1</a> <b>2</b> - <v>37779</v> + <v>37781</v> </b> </bs> </hist> @@ -24524,7 +24539,7 @@ <b> <a>1</a> <b>2</b> - <v>37779</v> + <v>37781</v> </b> </bs> </hist> @@ -24540,7 +24555,7 @@ <b> <a>1</a> <b>2</b> - <v>37779</v> + <v>37781</v> </b> </bs> </hist> @@ -24602,15 +24617,15 @@ </relation> <relation> <name>specifiers</name> - <cardinality>24720</cardinality> + <cardinality>24721</cardinality> <columnsizes> <e> <k>id</k> - <v>24720</v> + <v>24721</v> </e> <e> <k>str</k> - <v>24720</v> + <v>24721</v> </e> </columnsizes> <dependencies> @@ -24624,7 +24639,7 @@ <b> <a>1</a> <b>2</b> - <v>24720</v> + <v>24721</v> </b> </bs> </hist> @@ -24640,7 +24655,7 @@ <b> <a>1</a> <b>2</b> - <v>24720</v> + <v>24721</v> </b> </bs> </hist> @@ -24650,11 +24665,11 @@ </relation> <relation> <name>typespecifiers</name> - <cardinality>1291048</cardinality> + <cardinality>1291103</cardinality> <columnsizes> <e> <k>type_id</k> - <v>1272857</v> + <v>1272912</v> </e> <e> <k>spec_id</k> @@ -24672,12 +24687,12 @@ <b> <a>1</a> <b>2</b> - <v>1254667</v> + <v>1254721</v> </b> <b> <a>2</a> <b>3</b> - <v>18190</v> + <v>18191</v> </b> </bs> </hist> @@ -24738,11 +24753,11 @@ </relation> <relation> <name>funspecifiers</name> - <cardinality>12607036</cardinality> + <cardinality>12603886</cardinality> <columnsizes> <e> <k>func_id</k> - <v>3854601</v> + <v>3853638</v> </e> <e> <k>spec_id</k> @@ -24760,27 +24775,27 @@ <b> <a>1</a> <b>2</b> - <v>310746</v> + <v>310668</v> </b> <b> <a>2</a> <b>3</b> - <v>540214</v> + <v>540079</v> </b> <b> <a>3</a> <b>4</b> - <v>1133732</v> + <v>1133449</v> </b> <b> <a>4</a> <b>5</b> - <v>1624017</v> + <v>1623611</v> </b> <b> <a>5</a> <b>8</b> - <v>245890</v> + <v>245828</v> </b> </bs> </hist> @@ -24896,11 +24911,11 @@ </relation> <relation> <name>varspecifiers</name> - <cardinality>2243942</cardinality> + <cardinality>2244038</cardinality> <columnsizes> <e> <k>var_id</k> - <v>1223883</v> + <v>1223936</v> </e> <e> <k>spec_id</k> @@ -24918,22 +24933,22 @@ <b> <a>1</a> <b>2</b> - <v>729479</v> + <v>729510</v> </b> <b> <a>2</a> <b>3</b> - <v>202425</v> + <v>202434</v> </b> <b> <a>3</a> <b>4</b> - <v>58302</v> + <v>58304</v> </b> <b> <a>4</a> <b>5</b> - <v>233675</v> + <v>233686</v> </b> </bs> </hist> @@ -24994,11 +25009,11 @@ </relation> <relation> <name>attributes</name> - <cardinality>729824</cardinality> + <cardinality>729440</cardinality> <columnsizes> <e> <k>id</k> - <v>729824</v> + <v>729440</v> </e> <e> <k>kind</k> @@ -25006,15 +25021,15 @@ </e> <e> <k>name</k> - <v>1656</v> + <v>1655</v> </e> <e> <k>name_space</k> - <v>207</v> + <v>206</v> </e> <e> <k>location</k> - <v>479613</v> + <v>479361</v> </e> </columnsizes> <dependencies> @@ -25028,7 +25043,7 @@ <b> <a>1</a> <b>2</b> - <v>729824</v> + <v>729440</v> </b> </bs> </hist> @@ -25044,7 +25059,7 @@ <b> <a>1</a> <b>2</b> - <v>729824</v> + <v>729440</v> </b> </bs> </hist> @@ -25060,7 +25075,7 @@ <b> <a>1</a> <b>2</b> - <v>729824</v> + <v>729440</v> </b> </bs> </hist> @@ -25076,7 +25091,7 @@ <b> <a>1</a> <b>2</b> - <v>729824</v> + <v>729440</v> </b> </bs> </hist> @@ -25144,7 +25159,7 @@ <b> <a>1</a> <b>2</b> - <v>207</v> + <v>206</v> </b> <b> <a>2</a> @@ -25272,12 +25287,12 @@ <b> <a>1</a> <b>2</b> - <v>1449</v> + <v>1448</v> </b> <b> <a>2</a> <b>3</b> - <v>207</v> + <v>206</v> </b> </bs> </hist> @@ -25293,7 +25308,7 @@ <b> <a>1</a> <b>2</b> - <v>1656</v> + <v>1655</v> </b> </bs> </hist> @@ -25314,7 +25329,7 @@ <b> <a>2</a> <b>3</b> - <v>207</v> + <v>206</v> </b> <b> <a>4</a> @@ -25469,17 +25484,17 @@ <b> <a>1</a> <b>2</b> - <v>422573</v> + <v>422351</v> </b> <b> <a>2</a> <b>3</b> - <v>36335</v> + <v>36316</v> </b> <b> <a>3</a> <b>201</b> - <v>20704</v> + <v>20693</v> </b> </bs> </hist> @@ -25495,7 +25510,7 @@ <b> <a>1</a> <b>2</b> - <v>479613</v> + <v>479361</v> </b> </bs> </hist> @@ -25511,12 +25526,12 @@ <b> <a>1</a> <b>2</b> - <v>475369</v> + <v>475119</v> </b> <b> <a>2</a> <b>3</b> - <v>4244</v> + <v>4242</v> </b> </bs> </hist> @@ -25532,7 +25547,7 @@ <b> <a>1</a> <b>2</b> - <v>479613</v> + <v>479361</v> </b> </bs> </hist> @@ -25542,11 +25557,11 @@ </relation> <relation> <name>attribute_args</name> - <cardinality>409982</cardinality> + <cardinality>410000</cardinality> <columnsizes> <e> <k>id</k> - <v>409982</v> + <v>410000</v> </e> <e> <k>kind</k> @@ -25554,7 +25569,7 @@ </e> <e> <k>attribute</k> - <v>298041</v> + <v>298054</v> </e> <e> <k>index</k> @@ -25562,7 +25577,7 @@ </e> <e> <k>location</k> - <v>327426</v> + <v>327440</v> </e> </columnsizes> <dependencies> @@ -25576,7 +25591,7 @@ <b> <a>1</a> <b>2</b> - <v>409982</v> + <v>410000</v> </b> </bs> </hist> @@ -25592,7 +25607,7 @@ <b> <a>1</a> <b>2</b> - <v>409982</v> + <v>410000</v> </b> </bs> </hist> @@ -25608,7 +25623,7 @@ <b> <a>1</a> <b>2</b> - <v>409982</v> + <v>410000</v> </b> </bs> </hist> @@ -25624,7 +25639,7 @@ <b> <a>1</a> <b>2</b> - <v>409982</v> + <v>410000</v> </b> </bs> </hist> @@ -25739,17 +25754,17 @@ <b> <a>1</a> <b>2</b> - <v>215952</v> + <v>215961</v> </b> <b> <a>2</a> <b>3</b> - <v>52238</v> + <v>52241</v> </b> <b> <a>3</a> <b>4</b> - <v>29850</v> + <v>29852</v> </b> </bs> </hist> @@ -25765,12 +25780,12 @@ <b> <a>1</a> <b>2</b> - <v>273788</v> + <v>273799</v> </b> <b> <a>2</a> <b>3</b> - <v>24253</v> + <v>24254</v> </b> </bs> </hist> @@ -25786,17 +25801,17 @@ <b> <a>1</a> <b>2</b> - <v>215952</v> + <v>215961</v> </b> <b> <a>2</a> <b>3</b> - <v>52238</v> + <v>52241</v> </b> <b> <a>3</a> <b>4</b> - <v>29850</v> + <v>29852</v> </b> </bs> </hist> @@ -25812,17 +25827,17 @@ <b> <a>1</a> <b>2</b> - <v>215952</v> + <v>215961</v> </b> <b> <a>2</a> <b>3</b> - <v>52238</v> + <v>52241</v> </b> <b> <a>3</a> <b>4</b> - <v>29850</v> + <v>29852</v> </b> </bs> </hist> @@ -25937,17 +25952,17 @@ <b> <a>1</a> <b>2</b> - <v>278918</v> + <v>278930</v> </b> <b> <a>2</a> <b>3</b> - <v>23320</v> + <v>23321</v> </b> <b> <a>3</a> <b>9</b> - <v>24720</v> + <v>24721</v> </b> <b> <a>17</a> @@ -25968,7 +25983,7 @@ <b> <a>1</a> <b>2</b> - <v>314832</v> + <v>314846</v> </b> <b> <a>2</a> @@ -25989,17 +26004,17 @@ <b> <a>1</a> <b>2</b> - <v>278918</v> + <v>278930</v> </b> <b> <a>2</a> <b>3</b> - <v>23320</v> + <v>23321</v> </b> <b> <a>3</a> <b>9</b> - <v>24720</v> + <v>24721</v> </b> <b> <a>17</a> @@ -26020,7 +26035,7 @@ <b> <a>1</a> <b>2</b> - <v>327426</v> + <v>327440</v> </b> </bs> </hist> @@ -26030,11 +26045,11 @@ </relation> <relation> <name>attribute_arg_value</name> - <cardinality>39179</cardinality> + <cardinality>39180</cardinality> <columnsizes> <e> <k>arg</k> - <v>39179</v> + <v>39180</v> </e> <e> <k>value</k> @@ -26052,7 +26067,7 @@ <b> <a>1</a> <b>2</b> - <v>39179</v> + <v>39180</v> </b> </bs> </hist> @@ -26068,7 +26083,7 @@ <b> <a>1</a> <b>2</b> - <v>14458</v> + <v>14459</v> </b> <b> <a>2</a> @@ -26131,15 +26146,15 @@ </relation> <relation> <name>attribute_arg_constant</name> - <cardinality>370336</cardinality> + <cardinality>370352</cardinality> <columnsizes> <e> <k>arg</k> - <v>370336</v> + <v>370352</v> </e> <e> <k>constant</k> - <v>370336</v> + <v>370352</v> </e> </columnsizes> <dependencies> @@ -26153,7 +26168,7 @@ <b> <a>1</a> <b>2</b> - <v>370336</v> + <v>370352</v> </b> </bs> </hist> @@ -26169,7 +26184,7 @@ <b> <a>1</a> <b>2</b> - <v>370336</v> + <v>370352</v> </b> </bs> </hist> @@ -26280,15 +26295,15 @@ </relation> <relation> <name>typeattributes</name> - <cardinality>84369</cardinality> + <cardinality>84325</cardinality> <columnsizes> <e> <k>type_id</k> - <v>61698</v> + <v>61666</v> </e> <e> <k>spec_id</k> - <v>84369</v> + <v>84325</v> </e> </columnsizes> <dependencies> @@ -26302,17 +26317,17 @@ <b> <a>1</a> <b>2</b> - <v>55797</v> + <v>55768</v> </b> <b> <a>2</a> <b>4</b> - <v>4244</v> + <v>4242</v> </b> <b> <a>12</a> <b>13</b> - <v>1656</v> + <v>1655</v> </b> </bs> </hist> @@ -26328,7 +26343,7 @@ <b> <a>1</a> <b>2</b> - <v>84369</v> + <v>84325</v> </b> </bs> </hist> @@ -26338,15 +26353,15 @@ </relation> <relation> <name>funcattributes</name> - <cardinality>651587</cardinality> + <cardinality>651615</cardinality> <columnsizes> <e> <k>func_id</k> - <v>443098</v> + <v>443117</v> </e> <e> <k>spec_id</k> - <v>651587</v> + <v>651615</v> </e> </columnsizes> <dependencies> @@ -26360,17 +26375,17 @@ <b> <a>1</a> <b>2</b> - <v>334422</v> + <v>334436</v> </b> <b> <a>2</a> <b>3</b> - <v>65298</v> + <v>65301</v> </b> <b> <a>3</a> <b>6</b> - <v>34981</v> + <v>34982</v> </b> <b> <a>6</a> @@ -26391,7 +26406,7 @@ <b> <a>1</a> <b>2</b> - <v>651587</v> + <v>651615</v> </b> </bs> </hist> @@ -26507,15 +26522,15 @@ </relation> <relation> <name>unspecifiedtype</name> - <cardinality>10144615</cardinality> + <cardinality>10145051</cardinality> <columnsizes> <e> <k>type_id</k> - <v>10144615</v> + <v>10145051</v> </e> <e> <k>unspecified_type_id</k> - <v>6817181</v> + <v>6817474</v> </e> </columnsizes> <dependencies> @@ -26529,7 +26544,7 @@ <b> <a>1</a> <b>2</b> - <v>10144615</v> + <v>10145051</v> </b> </bs> </hist> @@ -26545,17 +26560,17 @@ <b> <a>1</a> <b>2</b> - <v>4584433</v> + <v>4584630</v> </b> <b> <a>2</a> <b>3</b> - <v>1995340</v> + <v>1995426</v> </b> <b> <a>3</a> <b>145</b> - <v>237407</v> + <v>237417</v> </b> </bs> </hist> @@ -26565,19 +26580,19 @@ </relation> <relation> <name>member</name> - <cardinality>4945084</cardinality> + <cardinality>4943849</cardinality> <columnsizes> <e> <k>parent</k> - <v>639377</v> + <v>639217</v> </e> <e> <k>index</k> - <v>8698</v> + <v>8696</v> </e> <e> <k>child</k> - <v>4900409</v> + <v>4899184</v> </e> </columnsizes> <dependencies> @@ -26591,42 +26606,42 @@ <b> <a>1</a> <b>3</b> - <v>19067</v> + <v>19062</v> </b> <b> <a>3</a> <b>4</b> - <v>344496</v> + <v>344410</v> </b> <b> <a>4</a> <b>5</b> - <v>37786</v> + <v>37777</v> </b> <b> <a>5</a> <b>7</b> - <v>52504</v> + <v>52491</v> </b> <b> <a>7</a> <b>10</b> - <v>52191</v> + <v>52178</v> </b> <b> <a>10</a> <b>15</b> - <v>49581</v> + <v>49569</v> </b> <b> <a>15</a> <b>24</b> - <v>48955</v> + <v>48943</v> </b> <b> <a>24</a> <b>251</b> - <v>34794</v> + <v>34785</v> </b> </bs> </hist> @@ -26642,42 +26657,42 @@ <b> <a>1</a> <b>3</b> - <v>19067</v> + <v>19062</v> </b> <b> <a>3</a> <b>4</b> - <v>344427</v> + <v>344341</v> </b> <b> <a>4</a> <b>5</b> - <v>37821</v> + <v>37811</v> </b> <b> <a>5</a> <b>7</b> - <v>52608</v> + <v>52595</v> </b> <b> <a>7</a> <b>10</b> - <v>52539</v> + <v>52526</v> </b> <b> <a>10</a> <b>15</b> - <v>49198</v> + <v>49186</v> </b> <b> <a>15</a> <b>24</b> - <v>49024</v> + <v>49012</v> </b> <b> <a>24</a> <b>255</b> - <v>34689</v> + <v>34681</v> </b> </bs> </hist> @@ -26708,42 +26723,42 @@ <b> <a>5</a> <b>22</b> - <v>661</v> + <v>660</v> </b> <b> <a>22</a> <b>42</b> - <v>661</v> + <v>660</v> </b> <b> <a>42</a> <b>56</b> - <v>661</v> + <v>660</v> </b> <b> <a>56</a> <b>100</b> - <v>661</v> + <v>660</v> </b> <b> <a>104</a> <b>164</b> - <v>661</v> + <v>660</v> </b> <b> <a>181</a> <b>299</b> - <v>661</v> + <v>660</v> </b> <b> <a>300</a> <b>727</b> - <v>661</v> + <v>660</v> </b> <b> <a>845</a> <b>4002</b> - <v>661</v> + <v>660</v> </b> <b> <a>4606</a> @@ -26774,12 +26789,12 @@ <b> <a>3</a> <b>4</b> - <v>1148</v> + <v>1147</v> </b> <b> <a>4</a> <b>15</b> - <v>661</v> + <v>660</v> </b> <b> <a>16</a> @@ -26789,7 +26804,7 @@ <b> <a>36</a> <b>55</b> - <v>661</v> + <v>660</v> </b> <b> <a>57</a> @@ -26799,22 +26814,22 @@ <b> <a>97</a> <b>135</b> - <v>661</v> + <v>660</v> </b> <b> <a>140</a> <b>256</b> - <v>661</v> + <v>660</v> </b> <b> <a>268</a> <b>612</b> - <v>661</v> + <v>660</v> </b> <b> <a>619</a> <b>2611</b> - <v>661</v> + <v>660</v> </b> <b> <a>2770</a> @@ -26835,7 +26850,7 @@ <b> <a>1</a> <b>2</b> - <v>4900409</v> + <v>4899184</v> </b> </bs> </hist> @@ -26851,12 +26866,12 @@ <b> <a>1</a> <b>2</b> - <v>4857090</v> + <v>4855876</v> </b> <b> <a>2</a> <b>8</b> - <v>43318</v> + <v>43307</v> </b> </bs> </hist> @@ -26866,15 +26881,15 @@ </relation> <relation> <name>enclosingfunction</name> - <cardinality>117884</cardinality> + <cardinality>117840</cardinality> <columnsizes> <e> <k>child</k> - <v>117884</v> + <v>117840</v> </e> <e> <k>parent</k> - <v>67335</v> + <v>67310</v> </e> </columnsizes> <dependencies> @@ -26888,7 +26903,7 @@ <b> <a>1</a> <b>2</b> - <v>117884</v> + <v>117840</v> </b> </bs> </hist> @@ -26904,22 +26919,22 @@ <b> <a>1</a> <b>2</b> - <v>35587</v> + <v>35573</v> </b> <b> <a>2</a> <b>3</b> - <v>20893</v> + <v>20885</v> </b> <b> <a>3</a> <b>4</b> - <v>5908</v> + <v>5906</v> </b> <b> <a>4</a> <b>45</b> - <v>4946</v> + <v>4944</v> </b> </bs> </hist> @@ -26929,15 +26944,15 @@ </relation> <relation> <name>derivations</name> - <cardinality>391086</cardinality> + <cardinality>390988</cardinality> <columnsizes> <e> <k>derivation</k> - <v>391086</v> + <v>390988</v> </e> <e> <k>sub</k> - <v>370836</v> + <v>370743</v> </e> <e> <k>index</k> @@ -26945,11 +26960,11 @@ </e> <e> <k>super</k> - <v>202501</v> + <v>202451</v> </e> <e> <k>location</k> - <v>37682</v> + <v>37672</v> </e> </columnsizes> <dependencies> @@ -26963,7 +26978,7 @@ <b> <a>1</a> <b>2</b> - <v>391086</v> + <v>390988</v> </b> </bs> </hist> @@ -26979,7 +26994,7 @@ <b> <a>1</a> <b>2</b> - <v>391086</v> + <v>390988</v> </b> </bs> </hist> @@ -26995,7 +27010,7 @@ <b> <a>1</a> <b>2</b> - <v>391086</v> + <v>390988</v> </b> </bs> </hist> @@ -27011,7 +27026,7 @@ <b> <a>1</a> <b>2</b> - <v>391086</v> + <v>390988</v> </b> </bs> </hist> @@ -27027,12 +27042,12 @@ <b> <a>1</a> <b>2</b> - <v>355874</v> + <v>355785</v> </b> <b> <a>2</a> <b>7</b> - <v>14961</v> + <v>14957</v> </b> </bs> </hist> @@ -27048,12 +27063,12 @@ <b> <a>1</a> <b>2</b> - <v>355874</v> + <v>355785</v> </b> <b> <a>2</a> <b>7</b> - <v>14961</v> + <v>14957</v> </b> </bs> </hist> @@ -27069,12 +27084,12 @@ <b> <a>1</a> <b>2</b> - <v>355874</v> + <v>355785</v> </b> <b> <a>2</a> <b>7</b> - <v>14961</v> + <v>14957</v> </b> </bs> </hist> @@ -27090,12 +27105,12 @@ <b> <a>1</a> <b>2</b> - <v>355874</v> + <v>355785</v> </b> <b> <a>2</a> <b>7</b> - <v>14961</v> + <v>14957</v> </b> </bs> </hist> @@ -27240,12 +27255,12 @@ <b> <a>1</a> <b>2</b> - <v>195125</v> + <v>195076</v> </b> <b> <a>2</a> <b>1519</b> - <v>7376</v> + <v>7374</v> </b> </bs> </hist> @@ -27261,12 +27276,12 @@ <b> <a>1</a> <b>2</b> - <v>195125</v> + <v>195076</v> </b> <b> <a>2</a> <b>1519</b> - <v>7376</v> + <v>7374</v> </b> </bs> </hist> @@ -27282,7 +27297,7 @@ <b> <a>1</a> <b>2</b> - <v>202049</v> + <v>201999</v> </b> <b> <a>2</a> @@ -27303,12 +27318,12 @@ <b> <a>1</a> <b>2</b> - <v>198848</v> + <v>198798</v> </b> <b> <a>2</a> <b>108</b> - <v>3653</v> + <v>3652</v> </b> </bs> </hist> @@ -27324,12 +27339,12 @@ <b> <a>1</a> <b>2</b> - <v>28009</v> + <v>28002</v> </b> <b> <a>2</a> <b>5</b> - <v>3201</v> + <v>3200</v> </b> <b> <a>5</a> @@ -27339,7 +27354,7 @@ <b> <a>15</a> <b>134</b> - <v>2853</v> + <v>2852</v> </b> <b> <a>136</a> @@ -27360,12 +27375,12 @@ <b> <a>1</a> <b>2</b> - <v>28009</v> + <v>28002</v> </b> <b> <a>2</a> <b>5</b> - <v>3201</v> + <v>3200</v> </b> <b> <a>5</a> @@ -27375,7 +27390,7 @@ <b> <a>15</a> <b>134</b> - <v>2853</v> + <v>2852</v> </b> <b> <a>136</a> @@ -27396,7 +27411,7 @@ <b> <a>1</a> <b>2</b> - <v>37682</v> + <v>37672</v> </b> </bs> </hist> @@ -27412,17 +27427,17 @@ <b> <a>1</a> <b>2</b> - <v>30375</v> + <v>30367</v> </b> <b> <a>2</a> <b>5</b> - <v>3340</v> + <v>3339</v> </b> <b> <a>5</a> <b>45</b> - <v>2853</v> + <v>2852</v> </b> <b> <a>54</a> @@ -27437,11 +27452,11 @@ </relation> <relation> <name>derspecifiers</name> - <cardinality>392965</cardinality> + <cardinality>392867</cardinality> <columnsizes> <e> <k>der_id</k> - <v>390703</v> + <v>390605</v> </e> <e> <k>spec_id</k> @@ -27459,7 +27474,7 @@ <b> <a>1</a> <b>2</b> - <v>388441</v> + <v>388344</v> </b> <b> <a>2</a> @@ -27505,11 +27520,11 @@ </relation> <relation> <name>direct_base_offsets</name> - <cardinality>362172</cardinality> + <cardinality>362081</cardinality> <columnsizes> <e> <k>der_id</k> - <v>362172</v> + <v>362081</v> </e> <e> <k>offset</k> @@ -27527,7 +27542,7 @@ <b> <a>1</a> <b>2</b> - <v>362172</v> + <v>362081</v> </b> </bs> </hist> @@ -27578,11 +27593,11 @@ </relation> <relation> <name>virtual_base_offsets</name> - <cardinality>6445</cardinality> + <cardinality>6443</cardinality> <columnsizes> <e> <k>sub</k> - <v>3558</v> + <v>3557</v> </e> <e> <k>super</k> @@ -27604,7 +27619,7 @@ <b> <a>1</a> <b>2</b> - <v>2797</v> + <v>2796</v> </b> <b> <a>2</a> @@ -27635,7 +27650,7 @@ <b> <a>1</a> <b>2</b> - <v>2999</v> + <v>2998</v> </b> <b> <a>2</a> @@ -27869,23 +27884,23 @@ </relation> <relation> <name>frienddecls</name> - <cardinality>706182</cardinality> + <cardinality>706005</cardinality> <columnsizes> <e> <k>id</k> - <v>706182</v> + <v>706005</v> </e> <e> <k>type_id</k> - <v>41857</v> + <v>41846</v> </e> <e> <k>decl_id</k> - <v>69309</v> + <v>69292</v> </e> <e> <k>location</k> - <v>6262</v> + <v>6261</v> </e> </columnsizes> <dependencies> @@ -27899,7 +27914,7 @@ <b> <a>1</a> <b>2</b> - <v>706182</v> + <v>706005</v> </b> </bs> </hist> @@ -27915,7 +27930,7 @@ <b> <a>1</a> <b>2</b> - <v>706182</v> + <v>706005</v> </b> </bs> </hist> @@ -27931,7 +27946,7 @@ <b> <a>1</a> <b>2</b> - <v>706182</v> + <v>706005</v> </b> </bs> </hist> @@ -27947,22 +27962,22 @@ <b> <a>1</a> <b>2</b> - <v>6123</v> + <v>6122</v> </b> <b> <a>2</a> <b>3</b> - <v>13047</v> + <v>13044</v> </b> <b> <a>3</a> <b>6</b> - <v>2922</v> + <v>2921</v> </b> <b> <a>6</a> <b>10</b> - <v>3166</v> + <v>3165</v> </b> <b> <a>10</a> @@ -27972,22 +27987,22 @@ <b> <a>17</a> <b>24</b> - <v>3305</v> + <v>3304</v> </b> <b> <a>25</a> <b>36</b> - <v>3270</v> + <v>3269</v> </b> <b> <a>37</a> <b>55</b> - <v>3201</v> + <v>3200</v> </b> <b> <a>55</a> <b>103</b> - <v>3583</v> + <v>3582</v> </b> </bs> </hist> @@ -28003,22 +28018,22 @@ <b> <a>1</a> <b>2</b> - <v>6123</v> + <v>6122</v> </b> <b> <a>2</a> <b>3</b> - <v>13047</v> + <v>13044</v> </b> <b> <a>3</a> <b>6</b> - <v>2922</v> + <v>2921</v> </b> <b> <a>6</a> <b>10</b> - <v>3166</v> + <v>3165</v> </b> <b> <a>10</a> @@ -28028,22 +28043,22 @@ <b> <a>17</a> <b>24</b> - <v>3305</v> + <v>3304</v> </b> <b> <a>25</a> <b>36</b> - <v>3270</v> + <v>3269</v> </b> <b> <a>37</a> <b>55</b> - <v>3201</v> + <v>3200</v> </b> <b> <a>55</a> <b>103</b> - <v>3583</v> + <v>3582</v> </b> </bs> </hist> @@ -28059,7 +28074,7 @@ <b> <a>1</a> <b>2</b> - <v>40430</v> + <v>40420</v> </b> <b> <a>2</a> @@ -28080,32 +28095,32 @@ <b> <a>1</a> <b>2</b> - <v>39978</v> + <v>39968</v> </b> <b> <a>2</a> <b>3</b> - <v>5810</v> + <v>5809</v> </b> <b> <a>3</a> <b>8</b> - <v>5949</v> + <v>5948</v> </b> <b> <a>8</a> <b>15</b> - <v>5358</v> + <v>5356</v> </b> <b> <a>15</a> <b>32</b> - <v>5219</v> + <v>5217</v> </b> <b> <a>32</a> <b>71</b> - <v>5219</v> + <v>5217</v> </b> <b> <a>72</a> @@ -28126,32 +28141,32 @@ <b> <a>1</a> <b>2</b> - <v>39978</v> + <v>39968</v> </b> <b> <a>2</a> <b>3</b> - <v>5810</v> + <v>5809</v> </b> <b> <a>3</a> <b>8</b> - <v>5949</v> + <v>5948</v> </b> <b> <a>8</a> <b>15</b> - <v>5358</v> + <v>5356</v> </b> <b> <a>15</a> <b>32</b> - <v>5219</v> + <v>5217</v> </b> <b> <a>32</a> <b>71</b> - <v>5219</v> + <v>5217</v> </b> <b> <a>72</a> @@ -28172,12 +28187,12 @@ <b> <a>1</a> <b>2</b> - <v>68648</v> + <v>68631</v> </b> <b> <a>2</a> <b>5</b> - <v>661</v> + <v>660</v> </b> </bs> </hist> @@ -28193,7 +28208,7 @@ <b> <a>1</a> <b>2</b> - <v>5880</v> + <v>5878</v> </b> <b> <a>2</a> @@ -28214,7 +28229,7 @@ <b> <a>1</a> <b>2</b> - <v>6123</v> + <v>6122</v> </b> <b> <a>2</a> @@ -28235,7 +28250,7 @@ <b> <a>1</a> <b>2</b> - <v>5915</v> + <v>5913</v> </b> <b> <a>2</a> @@ -28250,19 +28265,19 @@ </relation> <relation> <name>comments</name> - <cardinality>8686670</cardinality> + <cardinality>8682106</cardinality> <columnsizes> <e> <k>id</k> - <v>8686670</v> + <v>8682106</v> </e> <e> <k>contents</k> - <v>3307709</v> + <v>3305971</v> </e> <e> <k>location</k> - <v>8686670</v> + <v>8682106</v> </e> </columnsizes> <dependencies> @@ -28276,7 +28291,7 @@ <b> <a>1</a> <b>2</b> - <v>8686670</v> + <v>8682106</v> </b> </bs> </hist> @@ -28292,7 +28307,7 @@ <b> <a>1</a> <b>2</b> - <v>8686670</v> + <v>8682106</v> </b> </bs> </hist> @@ -28308,17 +28323,17 @@ <b> <a>1</a> <b>2</b> - <v>3025820</v> + <v>3024231</v> </b> <b> <a>2</a> <b>7</b> - <v>248657</v> + <v>248527</v> </b> <b> <a>7</a> <b>32784</b> - <v>33230</v> + <v>33212</v> </b> </bs> </hist> @@ -28334,17 +28349,17 @@ <b> <a>1</a> <b>2</b> - <v>3025820</v> + <v>3024231</v> </b> <b> <a>2</a> <b>7</b> - <v>248657</v> + <v>248527</v> </b> <b> <a>7</a> <b>32784</b> - <v>33230</v> + <v>33212</v> </b> </bs> </hist> @@ -28360,7 +28375,7 @@ <b> <a>1</a> <b>2</b> - <v>8686670</v> + <v>8682106</v> </b> </bs> </hist> @@ -28376,7 +28391,7 @@ <b> <a>1</a> <b>2</b> - <v>8686670</v> + <v>8682106</v> </b> </bs> </hist> @@ -28386,15 +28401,15 @@ </relation> <relation> <name>commentbinding</name> - <cardinality>3088160</cardinality> + <cardinality>3088293</cardinality> <columnsizes> <e> <k>id</k> - <v>2443103</v> + <v>2443208</v> </e> <e> <k>element</k> - <v>3011668</v> + <v>3011797</v> </e> </columnsizes> <dependencies> @@ -28408,12 +28423,12 @@ <b> <a>1</a> <b>2</b> - <v>2366144</v> + <v>2366245</v> </b> <b> <a>2</a> <b>97</b> - <v>76959</v> + <v>76962</v> </b> </bs> </hist> @@ -28429,12 +28444,12 @@ <b> <a>1</a> <b>2</b> - <v>2935175</v> + <v>2935301</v> </b> <b> <a>2</a> <b>3</b> - <v>76492</v> + <v>76496</v> </b> </bs> </hist> @@ -28444,15 +28459,15 @@ </relation> <relation> <name>exprconv</name> - <cardinality>7033432</cardinality> + <cardinality>7033379</cardinality> <columnsizes> <e> <k>converted</k> - <v>7033432</v> + <v>7033379</v> </e> <e> <k>conversion</k> - <v>7033432</v> + <v>7033379</v> </e> </columnsizes> <dependencies> @@ -28466,7 +28481,7 @@ <b> <a>1</a> <b>2</b> - <v>7033432</v> + <v>7033379</v> </b> </bs> </hist> @@ -28482,7 +28497,7 @@ <b> <a>1</a> <b>2</b> - <v>7033432</v> + <v>7033379</v> </b> </bs> </hist> @@ -28492,30 +28507,30 @@ </relation> <relation> <name>compgenerated</name> - <cardinality>9265823</cardinality> + <cardinality>9267960</cardinality> <columnsizes> <e> <k>id</k> - <v>9265823</v> + <v>9267960</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>synthetic_destructor_call</name> - <cardinality>471159</cardinality> + <cardinality>473158</cardinality> <columnsizes> <e> <k>element</k> - <v>286813</v> + <v>286203</v> </e> <e> <k>i</k> - <v>381</v> + <v>380</v> </e> <e> <k>destructor_call</k> - <v>471159</v> + <v>473158</v> </e> </columnsizes> <dependencies> @@ -28529,27 +28544,27 @@ <b> <a>1</a> <b>2</b> - <v>190103</v> + <v>188057</v> </b> <b> <a>2</a> <b>3</b> - <v>50404</v> + <v>50984</v> </b> <b> <a>3</a> <b>4</b> - <v>21503</v> + <v>21850</v> </b> <b> <a>4</a> - <b>7</b> - <v>23238</v> + <b>6</b> + <v>21584</v> </b> <b> - <a>7</a> + <a>6</a> <b>20</b> - <v>1563</v> + <v>3727</v> </b> </bs> </hist> @@ -28565,27 +28580,27 @@ <b> <a>1</a> <b>2</b> - <v>189912</v> + <v>188057</v> </b> <b> <a>2</a> <b>3</b> - <v>50537</v> + <v>50984</v> </b> <b> <a>3</a> <b>4</b> - <v>21503</v> + <v>21850</v> </b> <b> <a>4</a> - <b>7</b> - <v>23295</v> + <b>6</b> + <v>21584</v> </b> <b> - <a>7</a> + <a>6</a> <b>20</b> - <v>1563</v> + <v>3727</v> </b> </bs> </hist> @@ -28644,18 +28659,18 @@ <v>19</v> </b> <b> - <a>18</a> - <b>19</b> + <a>19</a> + <b>20</b> <v>19</v> </b> <b> - <a>26</a> - <b>27</b> + <a>27</a> + <b>28</b> <v>19</v> </b> <b> - <a>34</a> - <b>35</b> + <a>35</a> + <b>36</b> <v>19</v> </b> <b> @@ -28664,38 +28679,38 @@ <v>19</v> </b> <b> - <a>82</a> - <b>83</b> + <a>83</a> + <b>84</b> <v>19</v> </b> <b> - <a>193</a> - <b>194</b> + <a>196</a> + <b>197</b> <v>19</v> </b> <b> - <a>422</a> - <b>423</b> + <a>435</a> + <b>436</b> <v>19</v> </b> <b> - <a>1301</a> - <b>1302</b> + <a>1331</a> + <b>1332</b> <v>19</v> </b> <b> - <a>2429</a> - <b>2430</b> + <a>2480</a> + <b>2481</b> <v>19</v> </b> <b> - <a>5068</a> - <b>5069</b> + <a>5156</a> + <b>5157</b> <v>19</v> </b> <b> - <a>15013</a> - <b>15014</b> + <a>15018</a> + <b>15019</b> <v>19</v> </b> </bs> @@ -28755,18 +28770,18 @@ <v>19</v> </b> <b> - <a>18</a> - <b>19</b> + <a>19</a> + <b>20</b> <v>19</v> </b> <b> - <a>26</a> - <b>27</b> + <a>27</a> + <b>28</b> <v>19</v> </b> <b> - <a>34</a> - <b>35</b> + <a>35</a> + <b>36</b> <v>19</v> </b> <b> @@ -28775,38 +28790,38 @@ <v>19</v> </b> <b> - <a>82</a> - <b>83</b> + <a>83</a> + <b>84</b> <v>19</v> </b> <b> - <a>193</a> - <b>194</b> + <a>196</a> + <b>197</b> <v>19</v> </b> <b> - <a>422</a> - <b>423</b> + <a>435</a> + <b>436</b> <v>19</v> </b> <b> - <a>1301</a> - <b>1302</b> + <a>1331</a> + <b>1332</b> <v>19</v> </b> <b> - <a>2429</a> - <b>2430</b> + <a>2480</a> + <b>2481</b> <v>19</v> </b> <b> - <a>5071</a> - <b>5072</b> + <a>5156</a> + <b>5157</b> <v>19</v> </b> <b> - <a>15038</a> - <b>15039</b> + <a>15018</a> + <b>15019</b> <v>19</v> </b> </bs> @@ -28823,7 +28838,7 @@ <b> <a>1</a> <b>2</b> - <v>471159</v> + <v>473158</v> </b> </bs> </hist> @@ -28839,7 +28854,7 @@ <b> <a>1</a> <b>2</b> - <v>471159</v> + <v>473158</v> </b> </bs> </hist> @@ -28849,15 +28864,15 @@ </relation> <relation> <name>namespaces</name> - <cardinality>12126</cardinality> + <cardinality>12127</cardinality> <columnsizes> <e> <k>id</k> - <v>12126</v> + <v>12127</v> </e> <e> <k>name</k> - <v>9794</v> + <v>9795</v> </e> </columnsizes> <dependencies> @@ -28871,7 +28886,7 @@ <b> <a>1</a> <b>2</b> - <v>12126</v> + <v>12127</v> </b> </bs> </hist> @@ -28918,7 +28933,7 @@ </relation> <relation> <name>namespacembrs</name> - <cardinality>2385733</cardinality> + <cardinality>2385836</cardinality> <columnsizes> <e> <k>parentid</k> @@ -28926,7 +28941,7 @@ </e> <e> <k>memberid</k> - <v>2385733</v> + <v>2385836</v> </e> </columnsizes> <dependencies> @@ -29001,7 +29016,7 @@ <b> <a>1</a> <b>2</b> - <v>2385733</v> + <v>2385836</v> </b> </bs> </hist> @@ -29011,11 +29026,11 @@ </relation> <relation> <name>exprparents</name> - <cardinality>14207341</cardinality> + <cardinality>14207231</cardinality> <columnsizes> <e> <k>expr_id</k> - <v>14207341</v> + <v>14207231</v> </e> <e> <k>child_index</k> @@ -29023,7 +29038,7 @@ </e> <e> <k>parent_id</k> - <v>9454239</v> + <v>9454166</v> </e> </columnsizes> <dependencies> @@ -29037,7 +29052,7 @@ <b> <a>1</a> <b>2</b> - <v>14207341</v> + <v>14207231</v> </b> </bs> </hist> @@ -29053,7 +29068,7 @@ <b> <a>1</a> <b>2</b> - <v>14207341</v> + <v>14207231</v> </b> </bs> </hist> @@ -29171,17 +29186,17 @@ <b> <a>1</a> <b>2</b> - <v>5409675</v> + <v>5409633</v> </b> <b> <a>2</a> <b>3</b> - <v>3706806</v> + <v>3706777</v> </b> <b> <a>3</a> <b>712</b> - <v>337757</v> + <v>337754</v> </b> </bs> </hist> @@ -29197,17 +29212,17 @@ <b> <a>1</a> <b>2</b> - <v>5409675</v> + <v>5409633</v> </b> <b> <a>2</a> <b>3</b> - <v>3706806</v> + <v>3706777</v> </b> <b> <a>3</a> <b>712</b> - <v>337757</v> + <v>337754</v> </b> </bs> </hist> @@ -29217,11 +29232,11 @@ </relation> <relation> <name>expr_isload</name> - <cardinality>5170780</cardinality> + <cardinality>5168684</cardinality> <columnsizes> <e> <k>expr_id</k> - <v>5170780</v> + <v>5168684</v> </e> </columnsizes> <dependencies/> @@ -29301,11 +29316,11 @@ </relation> <relation> <name>iscall</name> - <cardinality>3183297</cardinality> + <cardinality>3182186</cardinality> <columnsizes> <e> <k>caller</k> - <v>3183297</v> + <v>3182186</v> </e> <e> <k>kind</k> @@ -29323,7 +29338,7 @@ <b> <a>1</a> <b>2</b> - <v>3183297</v> + <v>3182186</v> </b> </bs> </hist> @@ -29337,18 +29352,18 @@ <budget>12</budget> <bs> <b> - <a>1318</a> - <b>1319</b> + <a>1319</a> + <b>1320</b> <v>19</v> </b> <b> - <a>2471</a> - <b>2472</b> + <a>2473</a> + <b>2474</b> <v>19</v> </b> <b> - <a>163193</a> - <b>163194</b> + <a>163543</a> + <b>163544</b> <v>19</v> </b> </bs> @@ -29359,11 +29374,11 @@ </relation> <relation> <name>numtemplatearguments</name> - <cardinality>393347</cardinality> + <cardinality>393249</cardinality> <columnsizes> <e> <k>expr_id</k> - <v>393347</v> + <v>393249</v> </e> <e> <k>num</k> @@ -29381,7 +29396,7 @@ <b> <a>1</a> <b>2</b> - <v>393347</v> + <v>393249</v> </b> </bs> </hist> @@ -29485,23 +29500,23 @@ </relation> <relation> <name>namequalifiers</name> - <cardinality>1516804</cardinality> + <cardinality>1515301</cardinality> <columnsizes> <e> <k>id</k> - <v>1516804</v> + <v>1515301</v> </e> <e> <k>qualifiableelement</k> - <v>1516804</v> + <v>1515301</v> </e> <e> <k>qualifyingelement</k> - <v>97777</v> + <v>97613</v> </e> <e> <k>location</k> - <v>305343</v> + <v>304593</v> </e> </columnsizes> <dependencies> @@ -29515,7 +29530,7 @@ <b> <a>1</a> <b>2</b> - <v>1516804</v> + <v>1515301</v> </b> </bs> </hist> @@ -29531,7 +29546,7 @@ <b> <a>1</a> <b>2</b> - <v>1516804</v> + <v>1515301</v> </b> </bs> </hist> @@ -29547,7 +29562,7 @@ <b> <a>1</a> <b>2</b> - <v>1516804</v> + <v>1515301</v> </b> </bs> </hist> @@ -29563,7 +29578,7 @@ <b> <a>1</a> <b>2</b> - <v>1516804</v> + <v>1515301</v> </b> </bs> </hist> @@ -29579,7 +29594,7 @@ <b> <a>1</a> <b>2</b> - <v>1516804</v> + <v>1515301</v> </b> </bs> </hist> @@ -29595,7 +29610,7 @@ <b> <a>1</a> <b>2</b> - <v>1516804</v> + <v>1515301</v> </b> </bs> </hist> @@ -29611,27 +29626,27 @@ <b> <a>1</a> <b>2</b> - <v>58601</v> + <v>58457</v> </b> <b> <a>2</a> <b>3</b> - <v>22457</v> + <v>22420</v> </b> <b> <a>3</a> <b>5</b> - <v>8921</v> + <v>8918</v> </b> <b> <a>5</a> <b>92</b> - <v>7377</v> + <v>7378</v> </b> <b> <a>96</a> - <b>21572</b> - <v>419</v> + <b>21584</b> + <v>437</v> </b> </bs> </hist> @@ -29647,27 +29662,27 @@ <b> <a>1</a> <b>2</b> - <v>58601</v> + <v>58457</v> </b> <b> <a>2</a> <b>3</b> - <v>22457</v> + <v>22420</v> </b> <b> <a>3</a> <b>5</b> - <v>8921</v> + <v>8918</v> </b> <b> <a>5</a> <b>92</b> - <v>7377</v> + <v>7378</v> </b> <b> <a>96</a> - <b>21572</b> - <v>419</v> + <b>21584</b> + <v>437</v> </b> </bs> </hist> @@ -29683,22 +29698,22 @@ <b> <a>1</a> <b>2</b> - <v>64035</v> + <v>63877</v> </b> <b> <a>2</a> <b>3</b> - <v>20703</v> + <v>20671</v> </b> <b> <a>3</a> <b>5</b> - <v>8388</v> + <v>8386</v> </b> <b> <a>5</a> <b>7095</b> - <v>4651</v> + <v>4678</v> </b> </bs> </hist> @@ -29714,32 +29729,32 @@ <b> <a>1</a> <b>2</b> - <v>101018</v> + <v>100656</v> </b> <b> <a>2</a> <b>3</b> - <v>28385</v> + <v>28430</v> </b> <b> <a>3</a> <b>4</b> - <v>44780</v> + <v>44651</v> </b> <b> <a>4</a> <b>6</b> - <v>14316</v> + <v>13768</v> </b> <b> <a>6</a> <b>7</b> - <v>95394</v> + <v>95692</v> </b> <b> <a>7</a> <b>790</b> - <v>21446</v> + <v>21393</v> </b> </bs> </hist> @@ -29755,32 +29770,32 @@ <b> <a>1</a> <b>2</b> - <v>101018</v> + <v>100656</v> </b> <b> <a>2</a> <b>3</b> - <v>28385</v> + <v>28430</v> </b> <b> <a>3</a> <b>4</b> - <v>44780</v> + <v>44651</v> </b> <b> <a>4</a> <b>6</b> - <v>14316</v> + <v>13768</v> </b> <b> <a>6</a> <b>7</b> - <v>95394</v> + <v>95692</v> </b> <b> <a>7</a> <b>790</b> - <v>21446</v> + <v>21393</v> </b> </bs> </hist> @@ -29796,22 +29811,22 @@ <b> <a>1</a> <b>2</b> - <v>137659</v> + <v>137206</v> </b> <b> <a>2</a> <b>3</b> - <v>55799</v> + <v>55738</v> </b> <b> <a>3</a> <b>4</b> - <v>102658</v> + <v>102443</v> </b> <b> <a>4</a> <b>143</b> - <v>9226</v> + <v>9204</v> </b> </bs> </hist> @@ -29821,15 +29836,15 @@ </relation> <relation> <name>varbind</name> - <cardinality>6029477</cardinality> + <cardinality>6029430</cardinality> <columnsizes> <e> <k>expr</k> - <v>6029477</v> + <v>6029430</v> </e> <e> <k>var</k> - <v>768575</v> + <v>768569</v> </e> </columnsizes> <dependencies> @@ -29843,7 +29858,7 @@ <b> <a>1</a> <b>2</b> - <v>6029477</v> + <v>6029430</v> </b> </bs> </hist> @@ -29859,22 +29874,22 @@ <b> <a>1</a> <b>2</b> - <v>126229</v> + <v>126228</v> </b> <b> <a>2</a> <b>3</b> - <v>137882</v> + <v>137881</v> </b> <b> <a>3</a> <b>4</b> - <v>106299</v> + <v>106298</v> </b> <b> <a>4</a> <b>5</b> - <v>85216</v> + <v>85215</v> </b> <b> <a>5</a> @@ -29914,15 +29929,15 @@ </relation> <relation> <name>funbind</name> - <cardinality>3187262</cardinality> + <cardinality>3188690</cardinality> <columnsizes> <e> <k>expr</k> - <v>3183583</v> + <v>3182471</v> </e> <e> <k>fun</k> - <v>512661</v> + <v>512219</v> </e> </columnsizes> <dependencies> @@ -29936,12 +29951,12 @@ <b> <a>1</a> <b>2</b> - <v>3179903</v> + <v>3176253</v> </b> <b> <a>2</a> <b>3</b> - <v>3679</v> + <v>6218</v> </b> </bs> </hist> @@ -29957,32 +29972,32 @@ <b> <a>1</a> <b>2</b> - <v>316152</v> + <v>315736</v> </b> <b> <a>2</a> <b>3</b> - <v>78084</v> + <v>78026</v> </b> <b> <a>3</a> <b>4</b> - <v>31455</v> + <v>31396</v> </b> <b> <a>4</a> <b>7</b> - <v>46210</v> + <v>46153</v> </b> <b> <a>7</a> - <b>133</b> - <v>38451</v> + <b>121</b> + <v>38471</v> </b> <b> - <a>133</a> - <b>4992</b> - <v>2306</v> + <a>123</a> + <b>5011</b> + <v>2434</v> </b> </bs> </hist> @@ -29992,11 +30007,11 @@ </relation> <relation> <name>expr_allocator</name> - <cardinality>45963</cardinality> + <cardinality>45951</cardinality> <columnsizes> <e> <k>expr</k> - <v>45963</v> + <v>45951</v> </e> <e> <k>func</k> @@ -30018,7 +30033,7 @@ <b> <a>1</a> <b>2</b> - <v>45963</v> + <v>45951</v> </b> </bs> </hist> @@ -30034,7 +30049,7 @@ <b> <a>1</a> <b>2</b> - <v>45963</v> + <v>45951</v> </b> </bs> </hist> @@ -30118,11 +30133,11 @@ </relation> <relation> <name>expr_deallocator</name> - <cardinality>54626</cardinality> + <cardinality>54613</cardinality> <columnsizes> <e> <k>expr</k> - <v>54626</v> + <v>54613</v> </e> <e> <k>func</k> @@ -30144,7 +30159,7 @@ <b> <a>1</a> <b>2</b> - <v>54626</v> + <v>54613</v> </b> </bs> </hist> @@ -30160,7 +30175,7 @@ <b> <a>1</a> <b>2</b> - <v>54626</v> + <v>54613</v> </b> </bs> </hist> @@ -30265,15 +30280,15 @@ </relation> <relation> <name>expr_cond_guard</name> - <cardinality>657276</cardinality> + <cardinality>657271</cardinality> <columnsizes> <e> <k>cond</k> - <v>657276</v> + <v>657271</v> </e> <e> <k>guard</k> - <v>657276</v> + <v>657271</v> </e> </columnsizes> <dependencies> @@ -30287,7 +30302,7 @@ <b> <a>1</a> <b>2</b> - <v>657276</v> + <v>657271</v> </b> </bs> </hist> @@ -30303,7 +30318,7 @@ <b> <a>1</a> <b>2</b> - <v>657276</v> + <v>657271</v> </b> </bs> </hist> @@ -30313,15 +30328,15 @@ </relation> <relation> <name>expr_cond_true</name> - <cardinality>657273</cardinality> + <cardinality>657268</cardinality> <columnsizes> <e> <k>cond</k> - <v>657273</v> + <v>657268</v> </e> <e> <k>true</k> - <v>657273</v> + <v>657268</v> </e> </columnsizes> <dependencies> @@ -30335,7 +30350,7 @@ <b> <a>1</a> <b>2</b> - <v>657273</v> + <v>657268</v> </b> </bs> </hist> @@ -30351,7 +30366,7 @@ <b> <a>1</a> <b>2</b> - <v>657273</v> + <v>657268</v> </b> </bs> </hist> @@ -30361,15 +30376,15 @@ </relation> <relation> <name>expr_cond_false</name> - <cardinality>657276</cardinality> + <cardinality>657271</cardinality> <columnsizes> <e> <k>cond</k> - <v>657276</v> + <v>657271</v> </e> <e> <k>false</k> - <v>657276</v> + <v>657271</v> </e> </columnsizes> <dependencies> @@ -30383,7 +30398,7 @@ <b> <a>1</a> <b>2</b> - <v>657276</v> + <v>657271</v> </b> </bs> </hist> @@ -30399,7 +30414,7 @@ <b> <a>1</a> <b>2</b> - <v>657276</v> + <v>657271</v> </b> </bs> </hist> @@ -30409,15 +30424,15 @@ </relation> <relation> <name>values</name> - <cardinality>10777325</cardinality> + <cardinality>10777241</cardinality> <columnsizes> <e> <k>id</k> - <v>10777325</v> + <v>10777241</v> </e> <e> <k>str</k> - <v>88068</v> + <v>88067</v> </e> </columnsizes> <dependencies> @@ -30431,7 +30446,7 @@ <b> <a>1</a> <b>2</b> - <v>10777325</v> + <v>10777241</v> </b> </bs> </hist> @@ -30540,15 +30555,15 @@ </relation> <relation> <name>valuebind</name> - <cardinality>11211571</cardinality> + <cardinality>11211484</cardinality> <columnsizes> <e> <k>val</k> - <v>10777325</v> + <v>10777241</v> </e> <e> <k>expr</k> - <v>11211571</v> + <v>11211484</v> </e> </columnsizes> <dependencies> @@ -30562,12 +30577,12 @@ <b> <a>1</a> <b>2</b> - <v>10365623</v> + <v>10365543</v> </b> <b> <a>2</a> <b>7</b> - <v>411701</v> + <v>411698</v> </b> </bs> </hist> @@ -30583,7 +30598,7 @@ <b> <a>1</a> <b>2</b> - <v>11211571</v> + <v>11211484</v> </b> </bs> </hist> @@ -30593,15 +30608,15 @@ </relation> <relation> <name>fieldoffsets</name> - <cardinality>1054758</cardinality> + <cardinality>1054750</cardinality> <columnsizes> <e> <k>id</k> - <v>1054758</v> + <v>1054750</v> </e> <e> <k>byteoffset</k> - <v>22694</v> + <v>22693</v> </e> <e> <k>bitoffset</k> @@ -30619,7 +30634,7 @@ <b> <a>1</a> <b>2</b> - <v>1054758</v> + <v>1054750</v> </b> </bs> </hist> @@ -30635,7 +30650,7 @@ <b> <a>1</a> <b>2</b> - <v>1054758</v> + <v>1054750</v> </b> </bs> </hist> @@ -30794,19 +30809,19 @@ </relation> <relation> <name>bitfield</name> - <cardinality>20704</cardinality> + <cardinality>20693</cardinality> <columnsizes> <e> <k>id</k> - <v>20704</v> + <v>20693</v> </e> <e> <k>bits</k> - <v>2588</v> + <v>2586</v> </e> <e> <k>declared_bits</k> - <v>2588</v> + <v>2586</v> </e> </columnsizes> <dependencies> @@ -30820,7 +30835,7 @@ <b> <a>1</a> <b>2</b> - <v>20704</v> + <v>20693</v> </b> </bs> </hist> @@ -30836,7 +30851,7 @@ <b> <a>1</a> <b>2</b> - <v>20704</v> + <v>20693</v> </b> </bs> </hist> @@ -30857,37 +30872,37 @@ <b> <a>2</a> <b>3</b> - <v>621</v> + <v>620</v> </b> <b> <a>3</a> <b>4</b> - <v>207</v> + <v>206</v> </b> <b> <a>4</a> <b>5</b> - <v>207</v> + <v>206</v> </b> <b> <a>5</a> <b>6</b> - <v>207</v> + <v>206</v> </b> <b> <a>6</a> <b>8</b> - <v>207</v> + <v>206</v> </b> <b> <a>8</a> <b>11</b> - <v>207</v> + <v>206</v> </b> <b> <a>12</a> <b>115</b> - <v>207</v> + <v>206</v> </b> </bs> </hist> @@ -30903,7 +30918,7 @@ <b> <a>1</a> <b>2</b> - <v>2588</v> + <v>2586</v> </b> </bs> </hist> @@ -30924,37 +30939,37 @@ <b> <a>2</a> <b>3</b> - <v>621</v> + <v>620</v> </b> <b> <a>3</a> <b>4</b> - <v>207</v> + <v>206</v> </b> <b> <a>4</a> <b>5</b> - <v>207</v> + <v>206</v> </b> <b> <a>5</a> <b>6</b> - <v>207</v> + <v>206</v> </b> <b> <a>6</a> <b>8</b> - <v>207</v> + <v>206</v> </b> <b> <a>8</a> <b>11</b> - <v>207</v> + <v>206</v> </b> <b> <a>12</a> <b>115</b> - <v>207</v> + <v>206</v> </b> </bs> </hist> @@ -30970,7 +30985,7 @@ <b> <a>1</a> <b>2</b> - <v>2588</v> + <v>2586</v> </b> </bs> </hist> @@ -30980,23 +30995,23 @@ </relation> <relation> <name>initialisers</name> - <cardinality>1710241</cardinality> + <cardinality>1710223</cardinality> <columnsizes> <e> <k>init</k> - <v>1710241</v> + <v>1710223</v> </e> <e> <k>var</k> - <v>719566</v> + <v>719570</v> </e> <e> <k>expr</k> - <v>1710241</v> + <v>1710223</v> </e> <e> <k>location</k> - <v>394521</v> + <v>394513</v> </e> </columnsizes> <dependencies> @@ -31010,7 +31025,7 @@ <b> <a>1</a> <b>2</b> - <v>1710241</v> + <v>1710223</v> </b> </bs> </hist> @@ -31026,7 +31041,7 @@ <b> <a>1</a> <b>2</b> - <v>1710241</v> + <v>1710223</v> </b> </bs> </hist> @@ -31042,7 +31057,7 @@ <b> <a>1</a> <b>2</b> - <v>1710241</v> + <v>1710223</v> </b> </bs> </hist> @@ -31058,7 +31073,7 @@ <b> <a>1</a> <b>2</b> - <v>633820</v> + <v>633825</v> </b> <b> <a>2</a> @@ -31068,7 +31083,7 @@ <b> <a>16</a> <b>25</b> - <v>57022</v> + <v>57020</v> </b> </bs> </hist> @@ -31084,7 +31099,7 @@ <b> <a>1</a> <b>2</b> - <v>633820</v> + <v>633825</v> </b> <b> <a>2</a> @@ -31094,7 +31109,7 @@ <b> <a>16</a> <b>25</b> - <v>57022</v> + <v>57020</v> </b> </bs> </hist> @@ -31110,7 +31125,7 @@ <b> <a>1</a> <b>2</b> - <v>719560</v> + <v>719563</v> </b> <b> <a>2</a> @@ -31131,7 +31146,7 @@ <b> <a>1</a> <b>2</b> - <v>1710241</v> + <v>1710223</v> </b> </bs> </hist> @@ -31147,7 +31162,7 @@ <b> <a>1</a> <b>2</b> - <v>1710241</v> + <v>1710223</v> </b> </bs> </hist> @@ -31163,7 +31178,7 @@ <b> <a>1</a> <b>2</b> - <v>1710241</v> + <v>1710223</v> </b> </bs> </hist> @@ -31179,7 +31194,7 @@ <b> <a>1</a> <b>2</b> - <v>321604</v> + <v>321597</v> </b> <b> <a>2</a> @@ -31189,12 +31204,12 @@ <b> <a>3</a> <b>15</b> - <v>30977</v> + <v>30976</v> </b> <b> <a>15</a> <b>111551</b> - <v>17983</v> + <v>17982</v> </b> </bs> </hist> @@ -31210,17 +31225,17 @@ <b> <a>1</a> <b>2</b> - <v>344488</v> + <v>344480</v> </b> <b> <a>2</a> <b>4</b> - <v>36106</v> + <v>36086</v> </b> <b> <a>4</a> <b>12073</b> - <v>13927</v> + <v>13945</v> </b> </bs> </hist> @@ -31236,7 +31251,7 @@ <b> <a>1</a> <b>2</b> - <v>321604</v> + <v>321597</v> </b> <b> <a>2</a> @@ -31246,12 +31261,12 @@ <b> <a>3</a> <b>15</b> - <v>30977</v> + <v>30976</v> </b> <b> <a>15</a> <b>111551</b> - <v>17983</v> + <v>17982</v> </b> </bs> </hist> @@ -31272,15 +31287,15 @@ </relation> <relation> <name>expr_ancestor</name> - <cardinality>475296</cardinality> + <cardinality>477285</cardinality> <columnsizes> <e> <k>exp</k> - <v>475296</v> + <v>477285</v> </e> <e> <k>ancestor</k> - <v>269541</v> + <v>268993</v> </e> </columnsizes> <dependencies> @@ -31294,7 +31309,7 @@ <b> <a>1</a> <b>2</b> - <v>475296</v> + <v>477285</v> </b> </bs> </hist> @@ -31310,27 +31325,27 @@ <b> <a>1</a> <b>2</b> - <v>165739</v> + <v>163963</v> </b> <b> <a>2</a> <b>3</b> - <v>54712</v> + <v>55148</v> </b> <b> <a>3</a> <b>4</b> - <v>22152</v> + <v>22496</v> </b> <b> <a>4</a> <b>6</b> - <v>22132</v> + <v>22592</v> </b> <b> <a>6</a> <b>26</b> - <v>4804</v> + <v>4792</v> </b> </bs> </hist> @@ -31340,11 +31355,11 @@ </relation> <relation> <name>exprs</name> - <cardinality>18388573</cardinality> + <cardinality>18388431</cardinality> <columnsizes> <e> <k>id</k> - <v>18388573</v> + <v>18388431</v> </e> <e> <k>kind</k> @@ -31352,7 +31367,7 @@ </e> <e> <k>location</k> - <v>8488587</v> + <v>8488521</v> </e> </columnsizes> <dependencies> @@ -31366,7 +31381,7 @@ <b> <a>1</a> <b>2</b> - <v>18388573</v> + <v>18388431</v> </b> </bs> </hist> @@ -31382,7 +31397,7 @@ <b> <a>1</a> <b>2</b> - <v>18388573</v> + <v>18388431</v> </b> </bs> </hist> @@ -31560,22 +31575,22 @@ <b> <a>1</a> <b>2</b> - <v>7145568</v> + <v>7145513</v> </b> <b> <a>2</a> <b>3</b> - <v>663069</v> + <v>663064</v> </b> <b> <a>3</a> <b>18</b> - <v>638140</v> + <v>638135</v> </b> <b> <a>18</a> <b>71656</b> - <v>41808</v> + <v>41807</v> </b> </bs> </hist> @@ -31591,17 +31606,17 @@ <b> <a>1</a> <b>2</b> - <v>7251643</v> + <v>7251587</v> </b> <b> <a>2</a> <b>3</b> - <v>618277</v> + <v>618273</v> </b> <b> <a>3</a> <b>32</b> - <v>618666</v> + <v>618661</v> </b> </bs> </hist> @@ -31611,15 +31626,19 @@ </relation> <relation> <name>expr_reuse</name> - <cardinality>331632</cardinality> + <cardinality>333955</cardinality> <columnsizes> <e> <k>reuse</k> - <v>331632</v> + <v>333955</v> </e> <e> <k>original</k> - <v>331632</v> + <v>333955</v> + </e> + <e> + <k>value_category</k> + <v>19</v> </e> </columnsizes> <dependencies> @@ -31633,7 +31652,23 @@ <b> <a>1</a> <b>2</b> - <v>331632</v> + <v>333955</v> + </b> + </bs> + </hist> + </val> + </dep> + <dep> + <src>reuse</src> + <trg>value_category</trg> + <val> + <hist> + <budget>12</budget> + <bs> + <b> + <a>1</a> + <b>2</b> + <v>333955</v> </b> </bs> </hist> @@ -31649,7 +31684,55 @@ <b> <a>1</a> <b>2</b> - <v>331632</v> + <v>333955</v> + </b> + </bs> + </hist> + </val> + </dep> + <dep> + <src>original</src> + <trg>value_category</trg> + <val> + <hist> + <budget>12</budget> + <bs> + <b> + <a>1</a> + <b>2</b> + <v>333955</v> + </b> + </bs> + </hist> + </val> + </dep> + <dep> + <src>value_category</src> + <trg>reuse</trg> + <val> + <hist> + <budget>12</budget> + <bs> + <b> + <a>17561</a> + <b>17562</b> + <v>19</v> + </b> + </bs> + </hist> + </val> + </dep> + <dep> + <src>value_category</src> + <trg>original</trg> + <val> + <hist> + <budget>12</budget> + <bs> + <b> + <a>17561</a> + <b>17562</b> + <v>19</v> </b> </bs> </hist> @@ -31659,15 +31742,15 @@ </relation> <relation> <name>expr_types</name> - <cardinality>18461112</cardinality> + <cardinality>18456468</cardinality> <columnsizes> <e> <k>id</k> - <v>18330447</v> + <v>18325931</v> </e> <e> <k>typeid</k> - <v>1237209</v> + <v>1236717</v> </e> <e> <k>value_category</k> @@ -31685,12 +31768,12 @@ <b> <a>1</a> <b>2</b> - <v>18199782</v> + <v>18195394</v> </b> <b> <a>2</a> <b>3</b> - <v>130664</v> + <v>130536</v> </b> </bs> </hist> @@ -31706,7 +31789,7 @@ <b> <a>1</a> <b>2</b> - <v>18330447</v> + <v>18325931</v> </b> </bs> </hist> @@ -31722,42 +31805,42 @@ <b> <a>1</a> <b>2</b> - <v>448184</v> + <v>448002</v> </b> <b> <a>2</a> <b>3</b> - <v>256965</v> + <v>256901</v> </b> <b> <a>3</a> <b>4</b> - <v>102788</v> + <v>102760</v> </b> <b> <a>4</a> <b>5</b> - <v>84133</v> + <v>84078</v> </b> <b> <a>5</a> <b>8</b> - <v>110196</v> + <v>110166</v> </b> <b> <a>8</a> <b>14</b> - <v>98435</v> + <v>98352</v> </b> <b> <a>14</a> <b>42</b> - <v>93511</v> + <v>93486</v> </b> <b> <a>42</a> - <b>125366</b> - <v>42995</v> + <b>125373</b> + <v>42967</v> </b> </bs> </hist> @@ -31773,17 +31856,17 @@ <b> <a>1</a> <b>2</b> - <v>1069468</v> + <v>1069040</v> </b> <b> <a>2</a> <b>3</b> - <v>157321</v> + <v>157261</v> </b> <b> <a>3</a> <b>4</b> - <v>10418</v> + <v>10414</v> </b> </bs> </hist> @@ -31802,13 +31885,13 @@ <v>11</v> </b> <b> - <a>372687</a> - <b>372688</b> + <a>372581</a> + <b>372582</b> <v>11</v> </b> <b> - <a>1250400</a> - <b>1250401</b> + <a>1250724</a> + <b>1250725</b> <v>11</v> </b> </bs> @@ -31833,8 +31916,8 @@ <v>11</v> </b> <b> - <a>92891</a> - <b>92892</b> + <a>92889</a> + <b>92890</b> <v>11</v> </b> </bs> @@ -31845,15 +31928,15 @@ </relation> <relation> <name>new_allocated_type</name> - <cardinality>47006</cardinality> + <cardinality>46995</cardinality> <columnsizes> <e> <k>expr</k> - <v>47006</v> + <v>46995</v> </e> <e> <k>type_id</k> - <v>27800</v> + <v>27793</v> </e> </columnsizes> <dependencies> @@ -31867,7 +31950,7 @@ <b> <a>1</a> <b>2</b> - <v>47006</v> + <v>46995</v> </b> </bs> </hist> @@ -31883,17 +31966,17 @@ <b> <a>1</a> <b>2</b> - <v>11621</v> + <v>11618</v> </b> <b> <a>2</a> <b>3</b> - <v>14717</v> + <v>14714</v> </b> <b> <a>3</a> <b>19</b> - <v>1461</v> + <v>1460</v> </b> </bs> </hist> @@ -32988,15 +33071,15 @@ </relation> <relation> <name>condition_decl_bind</name> - <cardinality>40853</cardinality> + <cardinality>40753</cardinality> <columnsizes> <e> <k>expr</k> - <v>40853</v> + <v>40753</v> </e> <e> <k>decl</k> - <v>40853</v> + <v>40753</v> </e> </columnsizes> <dependencies> @@ -33010,7 +33093,7 @@ <b> <a>1</a> <b>2</b> - <v>40853</v> + <v>40753</v> </b> </bs> </hist> @@ -33026,7 +33109,7 @@ <b> <a>1</a> <b>2</b> - <v>40853</v> + <v>40753</v> </b> </bs> </hist> @@ -33036,15 +33119,15 @@ </relation> <relation> <name>typeid_bind</name> - <cardinality>35977</cardinality> + <cardinality>35968</cardinality> <columnsizes> <e> <k>expr</k> - <v>35977</v> + <v>35968</v> </e> <e> <k>type_id</k> - <v>16179</v> + <v>16175</v> </e> </columnsizes> <dependencies> @@ -33058,7 +33141,7 @@ <b> <a>1</a> <b>2</b> - <v>35977</v> + <v>35968</v> </b> </bs> </hist> @@ -33074,7 +33157,7 @@ <b> <a>1</a> <b>2</b> - <v>15761</v> + <v>15757</v> </b> <b> <a>3</a> @@ -33097,7 +33180,7 @@ </e> <e> <k>type_id</k> - <v>20097</v> + <v>20096</v> </e> </columnsizes> <dependencies> @@ -33127,7 +33210,7 @@ <b> <a>1</a> <b>2</b> - <v>19932</v> + <v>19931</v> </b> <b> <a>2</a> @@ -33142,15 +33225,15 @@ </relation> <relation> <name>sizeof_bind</name> - <cardinality>199195</cardinality> + <cardinality>199194</cardinality> <columnsizes> <e> <k>expr</k> - <v>199195</v> + <v>199194</v> </e> <e> <k>type_id</k> - <v>8181</v> + <v>8224</v> </e> </columnsizes> <dependencies> @@ -33164,7 +33247,7 @@ <b> <a>1</a> <b>2</b> - <v>199195</v> + <v>199194</v> </b> </bs> </hist> @@ -33180,12 +33263,12 @@ <b> <a>1</a> <b>2</b> - <v>2693</v> + <v>2704</v> </b> <b> <a>2</a> <b>3</b> - <v>2333</v> + <v>2328</v> </b> <b> <a>3</a> @@ -33195,7 +33278,7 @@ <b> <a>4</a> <b>5</b> - <v>740</v> + <v>746</v> </b> <b> <a>5</a> @@ -33205,12 +33288,12 @@ <b> <a>6</a> <b>9</b> - <v>714</v> + <v>756</v> </b> <b> <a>9</a> <b>133</b> - <v>650</v> + <v>640</v> </b> <b> <a>164</a> @@ -33273,11 +33356,11 @@ </relation> <relation> <name>lambdas</name> - <cardinality>21455</cardinality> + <cardinality>21456</cardinality> <columnsizes> <e> <k>expr</k> - <v>21455</v> + <v>21456</v> </e> <e> <k>default_capture</k> @@ -33299,7 +33382,7 @@ <b> <a>1</a> <b>2</b> - <v>21455</v> + <v>21456</v> </b> </bs> </hist> @@ -33315,7 +33398,7 @@ <b> <a>1</a> <b>2</b> - <v>21455</v> + <v>21456</v> </b> </bs> </hist> @@ -33389,15 +33472,15 @@ </relation> <relation> <name>lambda_capture</name> - <cardinality>27985</cardinality> + <cardinality>27986</cardinality> <columnsizes> <e> <k>id</k> - <v>27985</v> + <v>27986</v> </e> <e> <k>lambda</k> - <v>20522</v> + <v>20523</v> </e> <e> <k>index</k> @@ -33405,7 +33488,7 @@ </e> <e> <k>field</k> - <v>27985</v> + <v>27986</v> </e> <e> <k>captured_by_reference</k> @@ -33431,7 +33514,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33447,7 +33530,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33463,7 +33546,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33479,7 +33562,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33495,7 +33578,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33511,7 +33594,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33527,12 +33610,12 @@ <b> <a>1</a> <b>2</b> - <v>13059</v> + <v>13060</v> </b> <b> <a>2</a> <b>3</b> - <v>7462</v> + <v>7463</v> </b> </bs> </hist> @@ -33548,12 +33631,12 @@ <b> <a>1</a> <b>2</b> - <v>13059</v> + <v>13060</v> </b> <b> <a>2</a> <b>3</b> - <v>7462</v> + <v>7463</v> </b> </bs> </hist> @@ -33569,12 +33652,12 @@ <b> <a>1</a> <b>2</b> - <v>13059</v> + <v>13060</v> </b> <b> <a>2</a> <b>3</b> - <v>7462</v> + <v>7463</v> </b> </bs> </hist> @@ -33590,7 +33673,7 @@ <b> <a>1</a> <b>2</b> - <v>20522</v> + <v>20523</v> </b> </bs> </hist> @@ -33606,7 +33689,7 @@ <b> <a>1</a> <b>2</b> - <v>20522</v> + <v>20523</v> </b> </bs> </hist> @@ -33622,12 +33705,12 @@ <b> <a>1</a> <b>2</b> - <v>13059</v> + <v>13060</v> </b> <b> <a>2</a> <b>3</b> - <v>7462</v> + <v>7463</v> </b> </bs> </hist> @@ -33759,7 +33842,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33775,7 +33858,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33791,7 +33874,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33807,7 +33890,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33823,7 +33906,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -33839,7 +33922,7 @@ <b> <a>1</a> <b>2</b> - <v>27985</v> + <v>27986</v> </b> </bs> </hist> @@ -34268,19 +34351,19 @@ </relation> <relation> <name>stmts</name> - <cardinality>4619943</cardinality> + <cardinality>4618654</cardinality> <columnsizes> <e> <k>id</k> - <v>4619943</v> + <v>4618654</v> </e> <e> <k>kind</k> - <v>1966</v> + <v>1965</v> </e> <e> <k>location</k> - <v>2269598</v> + <v>2268406</v> </e> </columnsizes> <dependencies> @@ -34294,7 +34377,7 @@ <b> <a>1</a> <b>2</b> - <v>4619943</v> + <v>4618654</v> </b> </bs> </hist> @@ -34310,7 +34393,7 @@ <b> <a>1</a> <b>2</b> - <v>4619943</v> + <v>4618654</v> </b> </bs> </hist> @@ -34394,28 +34477,28 @@ <v>103</v> </b> <b> - <a>2635</a> - <b>2636</b> + <a>2636</a> + <b>2637</b> <v>103</v> </b> <b> - <a>4621</a> - <b>4622</b> + <a>4622</a> + <b>4623</b> <v>103</v> </b> <b> - <a>8803</a> - <b>8804</b> + <a>8806</a> + <b>8807</b> <v>103</v> </b> <b> - <a>11577</a> - <b>11578</b> + <a>11579</a> + <b>11580</b> <v>103</v> </b> <b> - <a>13335</a> - <b>13336</b> + <a>13339</a> + <b>13340</b> <v>103</v> </b> </bs> @@ -34538,22 +34621,22 @@ <b> <a>1</a> <b>2</b> - <v>1879323</v> + <v>1878336</v> </b> <b> <a>2</a> <b>4</b> - <v>174019</v> + <v>173927</v> </b> <b> <a>4</a> <b>12</b> - <v>174122</v> + <v>174031</v> </b> <b> <a>12</a> - <b>687</b> - <v>42133</v> + <b>689</b> + <v>42110</v> </b> </bs> </hist> @@ -34569,12 +34652,12 @@ <b> <a>1</a> <b>2</b> - <v>2212869</v> + <v>2211706</v> </b> <b> <a>2</a> <b>8</b> - <v>56729</v> + <v>56699</v> </b> </bs> </hist> @@ -34728,15 +34811,15 @@ </relation> <relation> <name>if_then</name> - <cardinality>725956</cardinality> + <cardinality>725951</cardinality> <columnsizes> <e> <k>if_stmt</k> - <v>725956</v> + <v>725951</v> </e> <e> <k>then_id</k> - <v>725956</v> + <v>725951</v> </e> </columnsizes> <dependencies> @@ -34750,7 +34833,7 @@ <b> <a>1</a> <b>2</b> - <v>725956</v> + <v>725951</v> </b> </bs> </hist> @@ -34766,7 +34849,7 @@ <b> <a>1</a> <b>2</b> - <v>725956</v> + <v>725951</v> </b> </bs> </hist> @@ -34776,15 +34859,15 @@ </relation> <relation> <name>if_else</name> - <cardinality>184680</cardinality> + <cardinality>184679</cardinality> <columnsizes> <e> <k>if_stmt</k> - <v>184680</v> + <v>184679</v> </e> <e> <k>else_id</k> - <v>184680</v> + <v>184679</v> </e> </columnsizes> <dependencies> @@ -34798,7 +34881,7 @@ <b> <a>1</a> <b>2</b> - <v>184680</v> + <v>184679</v> </b> </bs> </hist> @@ -34814,7 +34897,7 @@ <b> <a>1</a> <b>2</b> - <v>184680</v> + <v>184679</v> </b> </bs> </hist> @@ -34824,15 +34907,15 @@ </relation> <relation> <name>constexpr_if_initialization</name> - <cardinality>1</cardinality> + <cardinality>2</cardinality> <columnsizes> <e> <k>constexpr_if_stmt</k> - <v>1</v> + <v>2</v> </e> <e> <k>init_id</k> - <v>1</v> + <v>2</v> </e> </columnsizes> <dependencies> @@ -34846,7 +34929,7 @@ <b> <a>1</a> <b>2</b> - <v>1</v> + <v>2</v> </b> </bs> </hist> @@ -34862,7 +34945,7 @@ <b> <a>1</a> <b>2</b> - <v>1</v> + <v>2</v> </b> </bs> </hist> @@ -34872,15 +34955,15 @@ </relation> <relation> <name>constexpr_if_then</name> - <cardinality>52071</cardinality> + <cardinality>52043</cardinality> <columnsizes> <e> <k>constexpr_if_stmt</k> - <v>52071</v> + <v>52043</v> </e> <e> <k>then_id</k> - <v>52071</v> + <v>52043</v> </e> </columnsizes> <dependencies> @@ -34894,7 +34977,7 @@ <b> <a>1</a> <b>2</b> - <v>52071</v> + <v>52043</v> </b> </bs> </hist> @@ -34910,7 +34993,7 @@ <b> <a>1</a> <b>2</b> - <v>52071</v> + <v>52043</v> </b> </bs> </hist> @@ -34920,15 +35003,15 @@ </relation> <relation> <name>constexpr_if_else</name> - <cardinality>30538</cardinality> + <cardinality>30522</cardinality> <columnsizes> <e> <k>constexpr_if_stmt</k> - <v>30538</v> + <v>30522</v> </e> <e> <k>else_id</k> - <v>30538</v> + <v>30522</v> </e> </columnsizes> <dependencies> @@ -34942,7 +35025,7 @@ <b> <a>1</a> <b>2</b> - <v>30538</v> + <v>30522</v> </b> </bs> </hist> @@ -34958,7 +35041,7 @@ <b> <a>1</a> <b>2</b> - <v>30538</v> + <v>30522</v> </b> </bs> </hist> @@ -34968,15 +35051,15 @@ </relation> <relation> <name>while_body</name> - <cardinality>29152</cardinality> + <cardinality>29141</cardinality> <columnsizes> <e> <k>while_stmt</k> - <v>29152</v> + <v>29141</v> </e> <e> <k>body_id</k> - <v>29152</v> + <v>29141</v> </e> </columnsizes> <dependencies> @@ -34990,7 +35073,7 @@ <b> <a>1</a> <b>2</b> - <v>29152</v> + <v>29141</v> </b> </bs> </hist> @@ -35006,7 +35089,7 @@ <b> <a>1</a> <b>2</b> - <v>29152</v> + <v>29141</v> </b> </bs> </hist> @@ -35016,15 +35099,15 @@ </relation> <relation> <name>do_body</name> - <cardinality>148882</cardinality> + <cardinality>148881</cardinality> <columnsizes> <e> <k>do_stmt</k> - <v>148882</v> + <v>148881</v> </e> <e> <k>body_id</k> - <v>148882</v> + <v>148881</v> </e> </columnsizes> <dependencies> @@ -35038,7 +35121,7 @@ <b> <a>1</a> <b>2</b> - <v>148882</v> + <v>148881</v> </b> </bs> </hist> @@ -35054,7 +35137,7 @@ <b> <a>1</a> <b>2</b> - <v>148882</v> + <v>148881</v> </b> </bs> </hist> @@ -35064,15 +35147,15 @@ </relation> <relation> <name>switch_initialization</name> - <cardinality>5</cardinality> + <cardinality>6</cardinality> <columnsizes> <e> <k>switch_stmt</k> - <v>5</v> + <v>6</v> </e> <e> <k>init_id</k> - <v>5</v> + <v>6</v> </e> </columnsizes> <dependencies> @@ -35086,7 +35169,7 @@ <b> <a>1</a> <b>2</b> - <v>5</v> + <v>6</v> </b> </bs> </hist> @@ -35102,7 +35185,7 @@ <b> <a>1</a> <b>2</b> - <v>5</v> + <v>6</v> </b> </bs> </hist> @@ -35112,19 +35195,19 @@ </relation> <relation> <name>switch_case</name> - <cardinality>201865</cardinality> + <cardinality>207702</cardinality> <columnsizes> <e> <k>switch_stmt</k> - <v>10809</v> + <v>11029</v> </e> <e> <k>index</k> - <v>4689</v> + <v>4678</v> </e> <e> <k>case_id</k> - <v>201865</v> + <v>207702</v> </e> </columnsizes> <dependencies> @@ -35143,52 +35226,52 @@ <b> <a>3</a> <b>4</b> - <v>2402</v> + <v>2396</v> </b> <b> <a>4</a> <b>5</b> - <v>1753</v> + <v>1768</v> </b> <b> <a>5</a> <b>6</b> - <v>1048</v> + <v>1045</v> </b> <b> <a>6</a> <b>8</b> - <v>991</v> + <v>988</v> </b> <b> <a>8</a> <b>9</b> - <v>533</v> + <v>532</v> </b> <b> <a>9</a> <b>10</b> - <v>1029</v> + <v>1026</v> </b> <b> <a>10</a> - <b>12</b> - <v>991</v> + <b>11</b> + <v>361</v> </b> <b> - <a>12</a> - <b>25</b> - <v>838</v> + <a>11</a> + <b>14</b> + <v>1007</v> </b> <b> - <a>30</a> - <b>152</b> - <v>819</v> + <a>14</a> + <b>31</b> + <v>931</v> </b> <b> - <a>181</a> + <a>36</a> <b>247</b> - <v>343</v> + <v>912</v> </b> </bs> </hist> @@ -35209,52 +35292,52 @@ <b> <a>3</a> <b>4</b> - <v>2402</v> + <v>2396</v> </b> <b> <a>4</a> <b>5</b> - <v>1753</v> + <v>1768</v> </b> <b> <a>5</a> <b>6</b> - <v>1048</v> + <v>1045</v> </b> <b> <a>6</a> <b>8</b> - <v>991</v> + <v>988</v> </b> <b> <a>8</a> <b>9</b> - <v>533</v> + <v>532</v> </b> <b> <a>9</a> <b>10</b> - <v>1029</v> + <v>1026</v> </b> <b> <a>10</a> - <b>12</b> - <v>991</v> + <b>11</b> + <v>361</v> </b> <b> - <a>12</a> - <b>25</b> - <v>838</v> + <a>11</a> + <b>14</b> + <v>1007</v> </b> <b> - <a>30</a> - <b>152</b> - <v>819</v> + <a>14</a> + <b>31</b> + <v>931</v> </b> <b> - <a>181</a> + <a>36</a> <b>247</b> - <v>343</v> + <v>912</v> </b> </bs> </hist> @@ -35270,31 +35353,31 @@ <b> <a>14</a> <b>15</b> - <v>1239</v> + <v>1236</v> </b> <b> - <a>18</a> - <b>19</b> - <v>571</v> + <a>19</a> + <b>20</b> + <v>570</v> </b> <b> - <a>32</a> - <b>33</b> - <v>2020</v> + <a>33</a> + <b>34</b> + <v>2015</v> </b> <b> - <a>33</a> - <b>62</b> - <v>400</v> + <a>34</a> + <b>63</b> + <v>399</v> </b> <b> - <a>66</a> - <b>292</b> - <v>362</v> + <a>68</a> + <b>304</b> + <v>361</v> </b> <b> - <a>346</a> - <b>568</b> + <a>358</a> + <b>581</b> <v>95</v> </b> </bs> @@ -35311,31 +35394,31 @@ <b> <a>14</a> <b>15</b> - <v>1239</v> + <v>1236</v> </b> <b> - <a>18</a> - <b>19</b> - <v>571</v> + <a>19</a> + <b>20</b> + <v>570</v> </b> <b> - <a>32</a> - <b>33</b> - <v>2020</v> + <a>33</a> + <b>34</b> + <v>2015</v> </b> <b> - <a>33</a> - <b>62</b> - <v>400</v> + <a>34</a> + <b>63</b> + <v>399</v> </b> <b> - <a>66</a> - <b>292</b> - <v>362</v> + <a>68</a> + <b>304</b> + <v>361</v> </b> <b> - <a>346</a> - <b>568</b> + <a>358</a> + <b>581</b> <v>95</v> </b> </bs> @@ -35352,7 +35435,7 @@ <b> <a>1</a> <b>2</b> - <v>201865</v> + <v>207702</v> </b> </bs> </hist> @@ -35368,7 +35451,7 @@ <b> <a>1</a> <b>2</b> - <v>201865</v> + <v>207702</v> </b> </bs> </hist> @@ -35378,15 +35461,15 @@ </relation> <relation> <name>switch_body</name> - <cardinality>20788</cardinality> + <cardinality>20787</cardinality> <columnsizes> <e> <k>switch_stmt</k> - <v>20788</v> + <v>20787</v> </e> <e> <k>body_id</k> - <v>20788</v> + <v>20787</v> </e> </columnsizes> <dependencies> @@ -35400,7 +35483,7 @@ <b> <a>1</a> <b>2</b> - <v>20788</v> + <v>20787</v> </b> </bs> </hist> @@ -35416,7 +35499,7 @@ <b> <a>1</a> <b>2</b> - <v>20788</v> + <v>20787</v> </b> </bs> </hist> @@ -35426,15 +35509,15 @@ </relation> <relation> <name>for_initialization</name> - <cardinality>53407</cardinality> + <cardinality>53406</cardinality> <columnsizes> <e> <k>for_stmt</k> - <v>53407</v> + <v>53406</v> </e> <e> <k>init_id</k> - <v>53407</v> + <v>53406</v> </e> </columnsizes> <dependencies> @@ -35448,7 +35531,7 @@ <b> <a>1</a> <b>2</b> - <v>53407</v> + <v>53406</v> </b> </bs> </hist> @@ -35464,7 +35547,7 @@ <b> <a>1</a> <b>2</b> - <v>53407</v> + <v>53406</v> </b> </bs> </hist> @@ -35570,15 +35653,15 @@ </relation> <relation> <name>for_body</name> - <cardinality>61560</cardinality> + <cardinality>61559</cardinality> <columnsizes> <e> <k>for_stmt</k> - <v>61560</v> + <v>61559</v> </e> <e> <k>body_id</k> - <v>61560</v> + <v>61559</v> </e> </columnsizes> <dependencies> @@ -35592,7 +35675,7 @@ <b> <a>1</a> <b>2</b> - <v>61560</v> + <v>61559</v> </b> </bs> </hist> @@ -35608,7 +35691,7 @@ <b> <a>1</a> <b>2</b> - <v>61560</v> + <v>61559</v> </b> </bs> </hist> @@ -35618,11 +35701,11 @@ </relation> <relation> <name>stmtparents</name> - <cardinality>4054468</cardinality> + <cardinality>4054557</cardinality> <columnsizes> <e> <k>id</k> - <v>4054468</v> + <v>4054557</v> </e> <e> <k>index</k> @@ -35630,7 +35713,7 @@ </e> <e> <k>parent</k> - <v>1721248</v> + <v>1721299</v> </e> </columnsizes> <dependencies> @@ -35644,7 +35727,7 @@ <b> <a>1</a> <b>2</b> - <v>4054468</v> + <v>4054557</v> </b> </bs> </hist> @@ -35660,7 +35743,7 @@ <b> <a>1</a> <b>2</b> - <v>4054468</v> + <v>4054557</v> </b> </bs> </hist> @@ -35720,7 +35803,7 @@ </b> <b> <a>77</a> - <b>195132</b> + <b>195140</b> <v>704</v> </b> </bs> @@ -35781,7 +35864,7 @@ </b> <b> <a>77</a> - <b>195132</b> + <b>195140</b> <v>704</v> </b> </bs> @@ -35798,27 +35881,27 @@ <b> <a>1</a> <b>2</b> - <v>989113</v> + <v>989142</v> </b> <b> <a>2</a> <b>3</b> - <v>372551</v> + <v>372562</v> </b> <b> <a>3</a> <b>4</b> - <v>105697</v> + <v>105701</v> </b> <b> <a>4</a> <b>6</b> - <v>111251</v> + <v>111255</v> </b> <b> <a>6</a> <b>17</b> - <v>130351</v> + <v>130355</v> </b> <b> <a>17</a> @@ -35839,27 +35922,27 @@ <b> <a>1</a> <b>2</b> - <v>989113</v> + <v>989142</v> </b> <b> <a>2</a> <b>3</b> - <v>372551</v> + <v>372562</v> </b> <b> <a>3</a> <b>4</b> - <v>105697</v> + <v>105701</v> </b> <b> <a>4</a> <b>6</b> - <v>111251</v> + <v>111255</v> </b> <b> <a>6</a> <b>17</b> - <v>130351</v> + <v>130355</v> </b> <b> <a>17</a> @@ -35874,22 +35957,22 @@ </relation> <relation> <name>ishandler</name> - <cardinality>62891</cardinality> + <cardinality>62736</cardinality> <columnsizes> <e> <k>block</k> - <v>62891</v> + <v>62736</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>stmt_decl_bind</name> - <cardinality>580807</cardinality> + <cardinality>580797</cardinality> <columnsizes> <e> <k>stmt</k> - <v>540988</v> + <v>540979</v> </e> <e> <k>num</k> @@ -35897,7 +35980,7 @@ </e> <e> <k>decl</k> - <v>580703</v> + <v>580692</v> </e> </columnsizes> <dependencies> @@ -35911,7 +35994,7 @@ <b> <a>1</a> <b>2</b> - <v>520281</v> + <v>520271</v> </b> <b> <a>2</a> @@ -35932,7 +36015,7 @@ <b> <a>1</a> <b>2</b> - <v>520281</v> + <v>520271</v> </b> <b> <a>2</a> @@ -36135,7 +36218,7 @@ <b> <a>1</a> <b>2</b> - <v>580665</v> + <v>580655</v> </b> <b> <a>2</a> @@ -36156,7 +36239,7 @@ <b> <a>1</a> <b>2</b> - <v>580703</v> + <v>580692</v> </b> </bs> </hist> @@ -36166,11 +36249,11 @@ </relation> <relation> <name>stmt_decl_entry_bind</name> - <cardinality>523682</cardinality> + <cardinality>523673</cardinality> <columnsizes> <e> <k>stmt</k> - <v>484163</v> + <v>484155</v> </e> <e> <k>num</k> @@ -36178,7 +36261,7 @@ </e> <e> <k>decl_entry</k> - <v>523624</v> + <v>523614</v> </e> </columnsizes> <dependencies> @@ -36192,7 +36275,7 @@ <b> <a>1</a> <b>2</b> - <v>463719</v> + <v>463710</v> </b> <b> <a>2</a> @@ -36213,7 +36296,7 @@ <b> <a>1</a> <b>2</b> - <v>463719</v> + <v>463710</v> </b> <b> <a>2</a> @@ -36416,7 +36499,7 @@ <b> <a>1</a> <b>2</b> - <v>523603</v> + <v>523593</v> </b> <b> <a>3</a> @@ -36437,7 +36520,7 @@ <b> <a>1</a> <b>2</b> - <v>523624</v> + <v>523614</v> </b> </bs> </hist> @@ -36447,15 +36530,15 @@ </relation> <relation> <name>blockscope</name> - <cardinality>1415581</cardinality> + <cardinality>1415642</cardinality> <columnsizes> <e> <k>block</k> - <v>1415581</v> + <v>1415642</v> </e> <e> <k>enclosing</k> - <v>1300376</v> + <v>1300432</v> </e> </columnsizes> <dependencies> @@ -36469,7 +36552,7 @@ <b> <a>1</a> <b>2</b> - <v>1415581</v> + <v>1415642</v> </b> </bs> </hist> @@ -36485,12 +36568,12 @@ <b> <a>1</a> <b>2</b> - <v>1235077</v> + <v>1235130</v> </b> <b> <a>2</a> <b>13</b> - <v>65298</v> + <v>65301</v> </b> </bs> </hist> @@ -36500,11 +36583,11 @@ </relation> <relation> <name>jumpinfo</name> - <cardinality>254471</cardinality> + <cardinality>254469</cardinality> <columnsizes> <e> <k>id</k> - <v>254471</v> + <v>254469</v> </e> <e> <k>str</k> @@ -36512,7 +36595,7 @@ </e> <e> <k>target</k> - <v>53145</v> + <v>53144</v> </e> </columnsizes> <dependencies> @@ -36526,7 +36609,7 @@ <b> <a>1</a> <b>2</b> - <v>254471</v> + <v>254469</v> </b> </bs> </hist> @@ -36542,7 +36625,7 @@ <b> <a>1</a> <b>2</b> - <v>254471</v> + <v>254469</v> </b> </bs> </hist> @@ -36640,7 +36723,7 @@ <b> <a>2</a> <b>3</b> - <v>26478</v> + <v>26477</v> </b> <b> <a>3</a> @@ -36676,7 +36759,7 @@ <b> <a>1</a> <b>2</b> - <v>53145</v> + <v>53144</v> </b> </bs> </hist> @@ -36686,11 +36769,11 @@ </relation> <relation> <name>preprocdirects</name> - <cardinality>4389195</cardinality> + <cardinality>4386889</cardinality> <columnsizes> <e> <k>id</k> - <v>4389195</v> + <v>4386889</v> </e> <e> <k>kind</k> @@ -36698,7 +36781,7 @@ </e> <e> <k>location</k> - <v>4386607</v> + <v>4384302</v> </e> </columnsizes> <dependencies> @@ -36712,7 +36795,7 @@ <b> <a>1</a> <b>2</b> - <v>4389195</v> + <v>4386889</v> </b> </bs> </hist> @@ -36728,7 +36811,7 @@ <b> <a>1</a> <b>2</b> - <v>4389195</v> + <v>4386889</v> </b> </bs> </hist> @@ -36876,7 +36959,7 @@ <b> <a>1</a> <b>2</b> - <v>4386503</v> + <v>4384198</v> </b> <b> <a>26</a> @@ -36897,7 +36980,7 @@ <b> <a>1</a> <b>2</b> - <v>4386607</v> + <v>4384302</v> </b> </bs> </hist> @@ -36907,15 +36990,15 @@ </relation> <relation> <name>preprocpair</name> - <cardinality>1430040</cardinality> + <cardinality>1430102</cardinality> <columnsizes> <e> <k>begin</k> - <v>1195898</v> + <v>1195950</v> </e> <e> <k>elseelifend</k> - <v>1430040</v> + <v>1430102</v> </e> </columnsizes> <dependencies> @@ -36929,12 +37012,12 @@ <b> <a>1</a> <b>2</b> - <v>977614</v> + <v>977656</v> </b> <b> <a>2</a> <b>3</b> - <v>208022</v> + <v>208031</v> </b> <b> <a>3</a> @@ -36955,7 +37038,7 @@ <b> <a>1</a> <b>2</b> - <v>1430040</v> + <v>1430102</v> </b> </bs> </hist> @@ -36965,41 +37048,41 @@ </relation> <relation> <name>preproctrue</name> - <cardinality>766326</cardinality> + <cardinality>766359</cardinality> <columnsizes> <e> <k>branch</k> - <v>766326</v> + <v>766359</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>preprocfalse</name> - <cardinality>331157</cardinality> + <cardinality>331171</cardinality> <columnsizes> <e> <k>branch</k> - <v>331157</v> + <v>331171</v> </e> </columnsizes> <dependencies/> </relation> <relation> <name>preproctext</name> - <cardinality>3539079</cardinality> + <cardinality>3537219</cardinality> <columnsizes> <e> <k>id</k> - <v>3539079</v> + <v>3537219</v> </e> <e> <k>head</k> - <v>2564841</v> + <v>2563493</v> </e> <e> <k>body</k> - <v>1498986</v> + <v>1498199</v> </e> </columnsizes> <dependencies> @@ -37013,7 +37096,7 @@ <b> <a>1</a> <b>2</b> - <v>3539079</v> + <v>3537219</v> </b> </bs> </hist> @@ -37029,7 +37112,7 @@ <b> <a>1</a> <b>2</b> - <v>3539079</v> + <v>3537219</v> </b> </bs> </hist> @@ -37045,12 +37128,12 @@ <b> <a>1</a> <b>2</b> - <v>2418979</v> + <v>2417708</v> </b> <b> <a>2</a> <b>740</b> - <v>145861</v> + <v>145784</v> </b> </bs> </hist> @@ -37066,12 +37149,12 @@ <b> <a>1</a> <b>2</b> - <v>2503142</v> + <v>2501827</v> </b> <b> <a>2</a> <b>5</b> - <v>61698</v> + <v>61666</v> </b> </bs> </hist> @@ -37087,17 +37170,17 @@ <b> <a>1</a> <b>2</b> - <v>1356955</v> + <v>1356242</v> </b> <b> <a>2</a> <b>6</b> - <v>112424</v> + <v>112364</v> </b> <b> <a>6</a> <b>11630</b> - <v>29607</v> + <v>29591</v> </b> </bs> </hist> @@ -37113,17 +37196,17 @@ <b> <a>1</a> <b>2</b> - <v>1359957</v> + <v>1359243</v> </b> <b> <a>2</a> <b>7</b> - <v>112734</v> + <v>112675</v> </b> <b> <a>7</a> <b>2980</b> - <v>26294</v> + <v>26280</v> </b> </bs> </hist> @@ -37133,15 +37216,15 @@ </relation> <relation> <name>includes</name> - <cardinality>312967</cardinality> + <cardinality>312980</cardinality> <columnsizes> <e> <k>id</k> - <v>312967</v> + <v>312980</v> </e> <e> <k>included</k> - <v>117071</v> + <v>117076</v> </e> </columnsizes> <dependencies> @@ -37155,7 +37238,7 @@ <b> <a>1</a> <b>2</b> - <v>312967</v> + <v>312980</v> </b> </bs> </hist> @@ -37171,12 +37254,12 @@ <b> <a>1</a> <b>2</b> - <v>61100</v> + <v>61103</v> </b> <b> <a>2</a> <b>3</b> - <v>21921</v> + <v>21922</v> </b> <b> <a>3</a> @@ -37191,7 +37274,7 @@ <b> <a>6</a> <b>14</b> - <v>8861</v> + <v>8862</v> </b> <b> <a>14</a> @@ -37206,15 +37289,15 @@ </relation> <relation> <name>link_targets</name> - <cardinality>819</cardinality> + <cardinality>817</cardinality> <columnsizes> <e> <k>id</k> - <v>819</v> + <v>817</v> </e> <e> <k>binary</k> - <v>819</v> + <v>817</v> </e> </columnsizes> <dependencies> @@ -37228,7 +37311,7 @@ <b> <a>1</a> <b>2</b> - <v>819</v> + <v>817</v> </b> </bs> </hist> @@ -37244,7 +37327,7 @@ <b> <a>1</a> <b>2</b> - <v>819</v> + <v>817</v> </b> </bs> </hist> @@ -37254,11 +37337,11 @@ </relation> <relation> <name>link_parent</name> - <cardinality>38877182</cardinality> + <cardinality>38867468</cardinality> <columnsizes> <e> <k>element</k> - <v>4927618</v> + <v>4926386</v> </e> <e> <k>link_target</k> @@ -37276,17 +37359,17 @@ <b> <a>1</a> <b>2</b> - <v>664255</v> + <v>664089</v> </b> <b> <a>2</a> <b>9</b> - <v>25852</v> + <v>25845</v> </b> <b> <a>9</a> <b>10</b> - <v>4237510</v> + <v>4236452</v> </b> </bs> </hist> diff --git a/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/expr_reuse.ql b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/expr_reuse.ql new file mode 100644 index 000000000000..e0648d97b731 --- /dev/null +++ b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/expr_reuse.ql @@ -0,0 +1,7 @@ +class Expr extends @expr { + string toString() { none() } +} + +from Expr reuse, Expr original, int value_category +where expr_reuse(reuse, original) and expr_types(original, _, value_category) +select reuse, original, value_category diff --git a/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme new file mode 100644 index 000000000000..aa7ff0ab32cd --- /dev/null +++ b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/old.dbscheme @@ -0,0 +1,2250 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme new file mode 100644 index 000000000000..abfce5c170f9 --- /dev/null +++ b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/semmlecode.cpp.dbscheme @@ -0,0 +1,2251 @@ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * gcc -c f1.c f2.c f3.c + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + /** + * An invocation of the compiler. Note that more than one file may + * be compiled per invocation. For example, this command compiles + * three source files: + * + * gcc -c f1.c f2.c f3.c + */ + unique int id : @compilation, + string cwd : string ref +); + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | *path to extractor* + * 1 | `--mimic` + * 2 | `/usr/bin/gcc` + * 3 | `-c` + * 4 | f1.c + * 5 | f2.c + * 6 | f3.c + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * gcc -c f1.c f2.c f3.c + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.c + * 1 | f2.c + * 2 | f3.c + * + * Note that even if those files `#include` headers, those headers + * do not appear as rows. + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + + +/** + * External data, loaded from CSV files during snapshot creation. See + * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) + * for more information. + */ +externalData( + int id : @externalDataElement, + string path : string ref, + int column: int ref, + string value : string ref +); + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/** + * Information about packages that provide code used during compilation. + * The `id` is just a unique identifier. + * The `namespace` is typically the name of the package manager that + * provided the package (e.g. "dpkg" or "yum"). + * The `package_name` is the name of the package, and `version` is its + * version (as a string). + */ +external_packages( + unique int id: @external_package, + string namespace : string ref, + string package_name : string ref, + string version : string ref +); + +/** + * Holds if File `fileid` was provided by package `package`. + */ +header_to_external_package( + int fileid : @file ref, + int package : @external_package ref +); + +/* + * Version history + */ + +svnentries( + unique int id : @svnentry, + string revision : string ref, + string author : string ref, + date revisionDate : date ref, + int changeSize : int ref +) + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + string action : string ref +) + +svnentrymsg( + unique int id : @svnentry ref, + string message : string ref +) + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +) + +/* + * C++ dbscheme + */ + +extractor_version( + string codeql_version: string ref, + string frontend_version: string ref +) + +@location = @location_stmt | @location_expr | @location_default ; + +/** + * The location of an element that is not an expression or a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + /** The location of an element that is not an expression or a statement. */ + unique int id: @location_default, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of a statement. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_stmt( + /** The location of a statement. */ + unique int id: @location_stmt, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** + * The location of an expression. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_expr( + /** The location of an expression. */ + unique int id: @location_expr, + int container: @container ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +/** An element for which line-count information is available. */ +@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @folder | @file + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +fileannotations( + int id: @file ref, + int kind: int ref, + string name: string ref, + string value: string ref +); + +inmacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +affectedbymacroexpansion( + int id: @element ref, + int inv: @macroinvocation ref +); + +case @macroinvocation.kind of + 1 = @macro_expansion +| 2 = @other_macro_reference +; + +macroinvocations( + unique int id: @macroinvocation, + int macro_id: @ppd_define ref, + int location: @location_default ref, + int kind: int ref +); + +macroparent( + unique int id: @macroinvocation ref, + int parent_id: @macroinvocation ref +); + +// a macroinvocation may be part of another location +// the way to find a constant expression that uses a macro +// is thus to find a constant expression that has a location +// to which a macro invocation is bound +macrolocationbind( + int id: @macroinvocation ref, + int location: @location ref +); + +#keyset[invocation, argument_index] +macro_argument_unexpanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +#keyset[invocation, argument_index] +macro_argument_expanded( + int invocation: @macroinvocation ref, + int argument_index: int ref, + string text: string ref +); + +/* +case @function.kind of + 1 = @normal_function +| 2 = @constructor +| 3 = @destructor +| 4 = @conversion_function +| 5 = @operator +| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk +| 7 = @user_defined_literal +| 8 = @deduction_guide +; +*/ + +functions( + unique int id: @function, + string name: string ref, + int kind: int ref +); + +function_entry_point( + int id: @function ref, + unique int entry_point: @stmt ref +); + +function_return_type( + int id: @function ref, + int return_type: @type ref +); + +/** + * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` + * instance associated with it, and the variables representing the `handle` and `promise` + * for it. + */ +coroutine( + unique int function: @function ref, + int traits: @type ref, + int handle: @variable ref, + int promise: @variable ref +); + +/** The `new` function used for allocating the coroutine state, if any. */ +coroutine_new( + unique int function: @function ref, + int new: @function ref +); + +/** The `delete` function used for deallocating the coroutine state, if any. */ +coroutine_delete( + unique int function: @function ref, + int delete: @function ref +); + +purefunctions(unique int id: @function ref); + +function_deleted(unique int id: @function ref); + +function_defaulted(unique int id: @function ref); + +function_prototyped(unique int id: @function ref) + +member_function_this_type( + unique int id: @function ref, + int this_type: @type ref +); + +#keyset[id, type_id] +fun_decls( + int id: @fun_decl, + int function: @function ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +fun_def(unique int id: @fun_decl ref); +fun_specialized(unique int id: @fun_decl ref); +fun_implicit(unique int id: @fun_decl ref); +fun_decl_specifiers( + int id: @fun_decl ref, + string name: string ref +) +#keyset[fun_decl, index] +fun_decl_throws( + int fun_decl: @fun_decl ref, + int index: int ref, + int type_id: @type ref +); +/* an empty throw specification is different from none */ +fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); +fun_decl_noexcept( + int fun_decl: @fun_decl ref, + int constant: @expr ref +); +fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); +fun_decl_typedef_type( + unique int fun_decl: @fun_decl ref, + int typedeftype_id: @usertype ref +); + +param_decl_bind( + unique int id: @var_decl ref, + int index: int ref, + int fun_decl: @fun_decl ref +); + +#keyset[id, type_id] +var_decls( + int id: @var_decl, + int variable: @variable ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); +var_def(unique int id: @var_decl ref); +var_decl_specifiers( + int id: @var_decl ref, + string name: string ref +) +is_structured_binding(unique int id: @variable ref); + +type_decls( + unique int id: @type_decl, + int type_id: @type ref, + int location: @location_default ref +); +type_def(unique int id: @type_decl ref); +type_decl_top( + unique int type_decl: @type_decl ref +); + +namespace_decls( + unique int id: @namespace_decl, + int namespace_id: @namespace ref, + int location: @location_default ref, + int bodylocation: @location_default ref +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default ref +); + +/** The element which contains the `using` declaration. */ +using_container( + int parent: @element ref, + int child: @using ref +); + +static_asserts( + unique int id: @static_assert, + int condition : @expr ref, + string message : string ref, + int location: @location_default ref, + int enclosing : @element ref +); + +// each function has an ordered list of parameters +#keyset[id, type_id] +#keyset[function, index, type_id] +params( + int id: @parameter, + int function: @functionorblock ref, + int index: int ref, + int type_id: @type ref +); + +overrides( + int new: @function ref, + int old: @function ref +); + +#keyset[id, type_id] +membervariables( + int id: @membervariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +globalvariables( + int id: @globalvariable, + int type_id: @type ref, + string name: string ref +); + +#keyset[id, type_id] +localvariables( + int id: @localvariable, + int type_id: @type ref, + string name: string ref +); + +autoderivation( + unique int var: @variable ref, + int derivation_type: @type ref +); + +orphaned_variables( + int var: @localvariable ref, + int function: @function ref +) + +enumconstants( + unique int id: @enumconstant, + int parent: @usertype ref, + int index: int ref, + int type_id: @type ref, + string name: string ref, + int location: @location_default ref +); + +@variable = @localscopevariable | @globalvariable | @membervariable; + +@localscopevariable = @localvariable | @parameter; + +/** + * Built-in types are the fundamental types, e.g., integral, floating, and void. + */ +case @builtintype.kind of + 1 = @errortype +| 2 = @unknowntype +| 3 = @void +| 4 = @boolean +| 5 = @char +| 6 = @unsigned_char +| 7 = @signed_char +| 8 = @short +| 9 = @unsigned_short +| 10 = @signed_short +| 11 = @int +| 12 = @unsigned_int +| 13 = @signed_int +| 14 = @long +| 15 = @unsigned_long +| 16 = @signed_long +| 17 = @long_long +| 18 = @unsigned_long_long +| 19 = @signed_long_long +// ... 20 Microsoft-specific __int8 +// ... 21 Microsoft-specific __int16 +// ... 22 Microsoft-specific __int32 +// ... 23 Microsoft-specific __int64 +| 24 = @float +| 25 = @double +| 26 = @long_double +| 27 = @complex_float // C99-specific _Complex float +| 28 = @complex_double // C99-specific _Complex double +| 29 = @complex_long_double // C99-specific _Complex long double +| 30 = @imaginary_float // C99-specific _Imaginary float +| 31 = @imaginary_double // C99-specific _Imaginary double +| 32 = @imaginary_long_double // C99-specific _Imaginary long double +| 33 = @wchar_t // Microsoft-specific +| 34 = @decltype_nullptr // C++11 +| 35 = @int128 // __int128 +| 36 = @unsigned_int128 // unsigned __int128 +| 37 = @signed_int128 // signed __int128 +| 38 = @float128 // __float128 +| 39 = @complex_float128 // _Complex __float128 +| 40 = @decimal32 // _Decimal32 +| 41 = @decimal64 // _Decimal64 +| 42 = @decimal128 // _Decimal128 +| 43 = @char16_t +| 44 = @char32_t +| 45 = @std_float32 // _Float32 +| 46 = @float32x // _Float32x +| 47 = @std_float64 // _Float64 +| 48 = @float64x // _Float64x +| 49 = @std_float128 // _Float128 +// ... 50 _Float128x +| 51 = @char8_t +| 52 = @float16 // _Float16 +| 53 = @complex_float16 // _Complex _Float16 +| 54 = @fp16 // __fp16 +| 55 = @std_bfloat16 // __bf16 +| 56 = @std_float16 // std::float16_t +| 57 = @complex_std_float32 // _Complex _Float32 +| 58 = @complex_float32x // _Complex _Float32x +| 59 = @complex_std_float64 // _Complex _Float64 +| 60 = @complex_float64x // _Complex _Float64x +| 61 = @complex_std_float128 // _Complex _Float128 +; + +builtintypes( + unique int id: @builtintype, + string name: string ref, + int kind: int ref, + int size: int ref, + int sign: int ref, + int alignment: int ref +); + +/** + * Derived types are types that are directly derived from existing types and + * point to, refer to, transform type data to return a new type. + */ +case @derivedtype.kind of + 1 = @pointer +| 2 = @reference +| 3 = @type_with_specifiers +| 4 = @array +| 5 = @gnu_vector +| 6 = @routineptr +| 7 = @routinereference +| 8 = @rvalue_reference // C++11 +// ... 9 type_conforming_to_protocols deprecated +| 10 = @block +; + +derivedtypes( + unique int id: @derivedtype, + string name: string ref, + int kind: int ref, + int type_id: @type ref +); + +pointerishsize(unique int id: @derivedtype ref, + int size: int ref, + int alignment: int ref); + +arraysizes( + unique int id: @derivedtype ref, + int num_elements: int ref, + int bytesize: int ref, + int alignment: int ref +); + +typedefbase( + unique int id: @usertype ref, + int type_id: @type ref +); + +/** + * An instance of the C++11 `decltype` operator. For example: + * ``` + * int a; + * decltype(1+a) b; + * ``` + * Here `expr` is `1+a`. + * + * Sometimes an additional pair of parentheses around the expression + * would change the semantics of this decltype, e.g. + * ``` + * struct A { double x; }; + * const A* a = new A(); + * decltype( a->x ); // type is double + * decltype((a->x)); // type is const double& + * ``` + * (Please consult the C++11 standard for more details). + * `parentheses_would_change_meaning` is `true` iff that is the case. + */ +#keyset[id, expr] +decltypes( + int id: @decltype, + int expr: @expr ref, + int base_type: @type ref, + boolean parentheses_would_change_meaning: boolean ref +); + +/* +case @usertype.kind of + 1 = @struct +| 2 = @class +| 3 = @union +| 4 = @enum +| 5 = @typedef // classic C: typedef typedef type name +| 6 = @template +| 7 = @template_parameter +| 8 = @template_template_parameter +| 9 = @proxy_class // a proxy class associated with a template parameter +// ... 10 objc_class deprecated +// ... 11 objc_protocol deprecated +// ... 12 objc_category deprecated +| 13 = @scoped_enum +| 14 = @using_alias // a using name = type style typedef +; +*/ + +usertypes( + unique int id: @usertype, + string name: string ref, + int kind: int ref +); + +usertypesize( + unique int id: @usertype ref, + int size: int ref, + int alignment: int ref +); + +usertype_final(unique int id: @usertype ref); + +usertype_uuid( + unique int id: @usertype ref, + string uuid: string ref +); + +mangled_name( + unique int id: @declaration ref, + int mangled_name : @mangledname, + boolean is_complete: boolean ref +); + +is_pod_class(unique int id: @usertype ref); +is_standard_layout_class(unique int id: @usertype ref); + +is_complete(unique int id: @usertype ref); + +is_class_template(unique int id: @usertype ref); +class_instantiation( + int to: @usertype ref, + int from: @usertype ref +); +class_template_argument( + int type_id: @usertype ref, + int index: int ref, + int arg_type: @type ref +); +class_template_argument_value( + int type_id: @usertype ref, + int index: int ref, + int arg_value: @expr ref +); + +is_proxy_class_for( + unique int id: @usertype ref, + unique int templ_param_id: @usertype ref +); + +type_mentions( + unique int id: @type_mention, + int type_id: @type ref, + int location: @location ref, + // a_symbol_reference_kind from the frontend. + int kind: int ref +); + +is_function_template(unique int id: @function ref); +function_instantiation( + unique int to: @function ref, + int from: @function ref +); +function_template_argument( + int function_id: @function ref, + int index: int ref, + int arg_type: @type ref +); +function_template_argument_value( + int function_id: @function ref, + int index: int ref, + int arg_value: @expr ref +); + +is_variable_template(unique int id: @variable ref); +variable_instantiation( + unique int to: @variable ref, + int from: @variable ref +); +variable_template_argument( + int variable_id: @variable ref, + int index: int ref, + int arg_type: @type ref +); +variable_template_argument_value( + int variable_id: @variable ref, + int index: int ref, + int arg_value: @expr ref +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int ref); +*/ + +routinetypes( + unique int id: @routinetype, + int return_type: @type ref +); + +routinetypeargs( + int routine: @routinetype ref, + int index: int ref, + int type_id: @type ref +); + +ptrtomembers( + unique int id: @ptrtomember, + int type_id: @type ref, + int class_id: @type ref +); + +/* + specifiers for types, functions, and variables + + "public", + "protected", + "private", + + "const", + "volatile", + "static", + + "pure", + "virtual", + "sealed", // Microsoft + "__interface", // Microsoft + "inline", + "explicit", + + "near", // near far extension + "far", // near far extension + "__ptr32", // Microsoft + "__ptr64", // Microsoft + "__sptr", // Microsoft + "__uptr", // Microsoft + "dllimport", // Microsoft + "dllexport", // Microsoft + "thread", // Microsoft + "naked", // Microsoft + "microsoft_inline", // Microsoft + "forceinline", // Microsoft + "selectany", // Microsoft + "nothrow", // Microsoft + "novtable", // Microsoft + "noreturn", // Microsoft + "noinline", // Microsoft + "noalias", // Microsoft + "restrict", // Microsoft +*/ + +specifiers( + unique int id: @specifier, + unique string str: string ref +); + +typespecifiers( + int type_id: @type ref, + int spec_id: @specifier ref +); + +funspecifiers( + int func_id: @function ref, + int spec_id: @specifier ref +); + +varspecifiers( + int var_id: @accessible ref, + int spec_id: @specifier ref +); + +attributes( + unique int id: @attribute, + int kind: int ref, + string name: string ref, + string name_space: string ref, + int location: @location_default ref +); + +case @attribute.kind of + 0 = @gnuattribute +| 1 = @stdattribute +| 2 = @declspec +| 3 = @msattribute +| 4 = @alignas +// ... 5 @objc_propertyattribute deprecated +; + +attribute_args( + unique int id: @attribute_arg, + int kind: int ref, + int attribute: @attribute ref, + int index: int ref, + int location: @location_default ref +); + +case @attribute_arg.kind of + 0 = @attribute_arg_empty +| 1 = @attribute_arg_token +| 2 = @attribute_arg_constant +| 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr +| 5 = @attribute_arg_expr +; + +attribute_arg_value( + unique int arg: @attribute_arg ref, + string value: string ref +); +attribute_arg_type( + unique int arg: @attribute_arg ref, + int type_id: @type ref +); +attribute_arg_constant( + unique int arg: @attribute_arg ref, + int constant: @expr ref +) +attribute_arg_expr( + unique int arg: @attribute_arg ref, + int expr: @expr ref +) +attribute_arg_name( + unique int arg: @attribute_arg ref, + string name: string ref +); + +typeattributes( + int type_id: @type ref, + int spec_id: @attribute ref +); + +funcattributes( + int func_id: @function ref, + int spec_id: @attribute ref +); + +varattributes( + int var_id: @accessible ref, + int spec_id: @attribute ref +); + +stmtattributes( + int stmt_id: @stmt ref, + int spec_id: @attribute ref +); + +@type = @builtintype + | @derivedtype + | @usertype + /* TODO | @fixedpointtype */ + | @routinetype + | @ptrtomember + | @decltype; + +unspecifiedtype( + unique int type_id: @type ref, + int unspecified_type_id: @type ref +); + +member( + int parent: @type ref, + int index: int ref, + int child: @member ref +); + +@enclosingfunction_child = @usertype | @variable | @namespace + +enclosingfunction( + unique int child: @enclosingfunction_child ref, + int parent: @function ref +); + +derivations( + unique int derivation: @derivation, + int sub: @type ref, + int index: int ref, + int super: @type ref, + int location: @location_default ref +); + +derspecifiers( + int der_id: @derivation ref, + int spec_id: @specifier ref +); + +/** + * Contains the byte offset of the base class subobject within the derived + * class. Only holds for non-virtual base classes, but see table + * `virtual_base_offsets` for offsets of virtual base class subobjects. + */ +direct_base_offsets( + unique int der_id: @derivation ref, + int offset: int ref +); + +/** + * Contains the byte offset of the virtual base class subobject for class + * `super` within a most-derived object of class `sub`. `super` can be either a + * direct or indirect base class. + */ +#keyset[sub, super] +virtual_base_offsets( + int sub: @usertype ref, + int super: @usertype ref, + int offset: int ref +); + +frienddecls( + unique int id: @frienddecl, + int type_id: @type ref, + int decl_id: @declaration ref, + int location: @location_default ref +); + +@declaredtype = @usertype ; + +@declaration = @function + | @declaredtype + | @variable + | @enumconstant + | @frienddecl; + +@member = @membervariable + | @function + | @declaredtype + | @enumconstant; + +@locatable = @diagnostic + | @declaration + | @ppd_include + | @ppd_define + | @macroinvocation + /*| @funcall*/ + | @xmllocatable + | @attribute + | @attribute_arg; + +@namedscope = @namespace | @usertype; + +@element = @locatable + | @file + | @folder + | @specifier + | @type + | @expr + | @namespace + | @initialiser + | @stmt + | @derivation + | @comment + | @preprocdirect + | @fun_decl + | @var_decl + | @type_decl + | @namespace_decl + | @using + | @namequalifier + | @specialnamequalifyingelement + | @static_assert + | @type_mention + | @lambdacapture; + +@exprparent = @element; + +comments( + unique int id: @comment, + string contents: string ref, + int location: @location_default ref +); + +commentbinding( + int id: @comment ref, + int element: @element ref +); + +exprconv( + int converted: @expr ref, + unique int conversion: @expr ref +); + +compgenerated(unique int id: @element ref); + +/** + * `destructor_call` destructs the `i`'th entity that should be + * destructed following `element`. Note that entities should be + * destructed in reverse construction order, so for a given `element` + * these should be called from highest to lowest `i`. + */ +#keyset[element, destructor_call] +#keyset[element, i] +synthetic_destructor_call( + int element: @element ref, + int i: int ref, + int destructor_call: @routineexpr ref +); + +namespaces( + unique int id: @namespace, + string name: string ref +); + +namespace_inline( + unique int id: @namespace ref +); + +namespacembrs( + int parentid: @namespace ref, + unique int memberid: @namespacembr ref +); + +@namespacembr = @declaration | @namespace; + +exprparents( + int expr_id: @expr ref, + int child_index: int ref, + int parent_id: @exprparent ref +); + +expr_isload(unique int expr_id: @expr ref); + +@cast = @c_style_cast + | @const_cast + | @dynamic_cast + | @reinterpret_cast + | @static_cast + ; + +/* +case @conversion.kind of + 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast +| 1 = @bool_conversion // conversion to 'bool' +| 2 = @base_class_conversion // a derived-to-base conversion +| 3 = @derived_class_conversion // a base-to-derived conversion +| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member +| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member +| 6 = @glvalue_adjust // an adjustment of the type of a glvalue +| 7 = @prvalue_adjust // an adjustment of the type of a prvalue +; +*/ +/** + * Describes the semantics represented by a cast expression. This is largely + * independent of the source syntax of the cast, so it is separate from the + * regular expression kind. + */ +conversionkinds( + unique int expr_id: @cast ref, + int kind: int ref +); + +@conversion = @cast + | @array_to_pointer + | @parexpr + | @reference_to + | @ref_indirect + | @temp_init + ; + +/* +case @funbindexpr.kind of + 0 = @normal_call // a normal call +| 1 = @virtual_call // a virtual call +| 2 = @adl_call // a call whose target is only found by ADL +; +*/ +iscall( + unique int caller: @funbindexpr ref, + int kind: int ref +); + +numtemplatearguments( + unique int expr_id: @expr ref, + int num: int ref +); + +specialnamequalifyingelements( + unique int id: @specialnamequalifyingelement, + unique string name: string ref +); + +@namequalifiableelement = @expr | @namequalifier; +@namequalifyingelement = @namespace + | @specialnamequalifyingelement + | @usertype; + +namequalifiers( + unique int id: @namequalifier, + unique int qualifiableelement: @namequalifiableelement ref, + int qualifyingelement: @namequalifyingelement ref, + int location: @location_default ref +); + +varbind( + int expr: @varbindexpr ref, + int var: @accessible ref +); + +funbind( + int expr: @funbindexpr ref, + int fun: @function ref +); + +@any_new_expr = @new_expr + | @new_array_expr; + +@new_or_delete_expr = @any_new_expr + | @delete_expr + | @delete_array_expr; + +@prefix_crement_expr = @preincrexpr | @predecrexpr; + +@postfix_crement_expr = @postincrexpr | @postdecrexpr; + +@increment_expr = @preincrexpr | @postincrexpr; + +@decrement_expr = @predecrexpr | @postdecrexpr; + +@crement_expr = @increment_expr | @decrement_expr; + +@un_arith_op_expr = @arithnegexpr + | @unaryplusexpr + | @conjugation + | @realpartexpr + | @imagpartexpr + | @crement_expr + ; + +@un_bitwise_op_expr = @complementexpr; + +@un_log_op_expr = @notexpr; + +@un_op_expr = @address_of + | @indirect + | @un_arith_op_expr + | @un_bitwise_op_expr + | @builtinaddressof + | @vec_fill + | @un_log_op_expr + | @co_await + | @co_yield + ; + +@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; + +@cmp_op_expr = @eq_op_expr | @rel_op_expr; + +@eq_op_expr = @eqexpr | @neexpr; + +@rel_op_expr = @gtexpr + | @ltexpr + | @geexpr + | @leexpr + | @spaceshipexpr + ; + +@bin_bitwise_op_expr = @lshiftexpr + | @rshiftexpr + | @andexpr + | @orexpr + | @xorexpr + ; + +@p_arith_op_expr = @paddexpr + | @psubexpr + | @pdiffexpr + ; + +@bin_arith_op_expr = @addexpr + | @subexpr + | @mulexpr + | @divexpr + | @remexpr + | @jmulexpr + | @jdivexpr + | @fjaddexpr + | @jfaddexpr + | @fjsubexpr + | @jfsubexpr + | @minexpr + | @maxexpr + | @p_arith_op_expr + ; + +@bin_op_expr = @bin_arith_op_expr + | @bin_bitwise_op_expr + | @cmp_op_expr + | @bin_log_op_expr + ; + +@op_expr = @un_op_expr + | @bin_op_expr + | @assign_expr + | @conditionalexpr + ; + +@assign_arith_expr = @assignaddexpr + | @assignsubexpr + | @assignmulexpr + | @assigndivexpr + | @assignremexpr + ; + +@assign_bitwise_expr = @assignandexpr + | @assignorexpr + | @assignxorexpr + | @assignlshiftexpr + | @assignrshiftexpr + ; + +@assign_pointer_expr = @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr + | @assign_bitwise_expr + | @assign_pointer_expr + ; + +@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr + +/* + case @allocator.form of + 0 = plain + | 1 = alignment + ; +*/ + +/** + * The allocator function associated with a `new` or `new[]` expression. + * The `form` column specified whether the allocation call contains an alignment + * argument. + */ +expr_allocator( + unique int expr: @any_new_expr ref, + int func: @function ref, + int form: int ref +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * The deallocator function associated with a `delete`, `delete[]`, `new`, or + * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the + * one used to free memory if the initialization throws an exception. + * The `form` column specifies whether the deallocation call contains a size + * argument, and alignment argument, or both. + */ +expr_deallocator( + unique int expr: @new_or_delete_expr ref, + int func: @function ref, + int form: int ref +); + +/** + * Holds if the `@conditionalexpr` is of the two operand form + * `guard ? : false`. + */ +expr_cond_two_operand( + unique int cond: @conditionalexpr ref +); + +/** + * The guard of `@conditionalexpr` `guard ? true : false` + */ +expr_cond_guard( + unique int cond: @conditionalexpr ref, + int guard: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` holds. For the two operand form + * `guard ?: false` consider using `expr_cond_guard` instead. + */ +expr_cond_true( + unique int cond: @conditionalexpr ref, + int true: @expr ref +); + +/** + * The expression used when the guard of `@conditionalexpr` + * `guard ? true : false` does not hold. + */ +expr_cond_false( + unique int cond: @conditionalexpr ref, + int false: @expr ref +); + +/** A string representation of the value. */ +values( + unique int id: @value, + string str: string ref +); + +/** The actual text in the source code for the value, if any. */ +valuetext( + unique int id: @value ref, + string text: string ref +); + +valuebind( + int val: @value ref, + unique int expr: @expr ref +); + +fieldoffsets( + unique int id: @variable ref, + int byteoffset: int ref, + int bitoffset: int ref +); + +bitfield( + unique int id: @variable ref, + int bits: int ref, + int declared_bits: int ref +); + +/* TODO +memberprefix( + int member: @expr ref, + int prefix: @expr ref +); +*/ + +/* + kind(1) = mbrcallexpr + kind(2) = mbrptrcallexpr + kind(3) = mbrptrmbrcallexpr + kind(4) = ptrmbrptrmbrcallexpr + kind(5) = mbrreadexpr // x.y + kind(6) = mbrptrreadexpr // p->y + kind(7) = mbrptrmbrreadexpr // x.*pm + kind(8) = mbrptrmbrptrreadexpr // x->*pm + kind(9) = staticmbrreadexpr // static x.y + kind(10) = staticmbrptrreadexpr // static p->y +*/ +/* TODO +memberaccess( + int member: @expr ref, + int kind: int ref +); +*/ + +initialisers( + unique int init: @initialiser, + int var: @accessible ref, + unique int expr: @expr ref, + int location: @location_expr ref +); + +braced_initialisers( + int init: @initialiser ref +); + +/** + * An ancestor for the expression, for cases in which we cannot + * otherwise find the expression's parent. + */ +expr_ancestor( + int exp: @expr ref, + int ancestor: @element ref +); + +exprs( + unique int id: @expr, + int kind: int ref, + int location: @location_expr ref +); + +expr_reuse( + int reuse: @expr ref, + int original: @expr ref, + int value_category: int ref +) + +/* + case @value.category of + 1 = prval + | 2 = xval + | 3 = lval + ; +*/ +expr_types( + int id: @expr ref, + int typeid: @type ref, + int value_category: int ref +); + +case @expr.kind of + 1 = @errorexpr +| 2 = @address_of // & AddressOfExpr +| 3 = @reference_to // ReferenceToExpr (implicit?) +| 4 = @indirect // * PointerDereferenceExpr +| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) +// ... +| 8 = @array_to_pointer // (???) +| 9 = @vacuous_destructor_call // VacuousDestructorCall +// ... +| 11 = @assume // Microsoft +| 12 = @parexpr +| 13 = @arithnegexpr +| 14 = @unaryplusexpr +| 15 = @complementexpr +| 16 = @notexpr +| 17 = @conjugation // GNU ~ operator +| 18 = @realpartexpr // GNU __real +| 19 = @imagpartexpr // GNU __imag +| 20 = @postincrexpr +| 21 = @postdecrexpr +| 22 = @preincrexpr +| 23 = @predecrexpr +| 24 = @conditionalexpr +| 25 = @addexpr +| 26 = @subexpr +| 27 = @mulexpr +| 28 = @divexpr +| 29 = @remexpr +| 30 = @jmulexpr // C99 mul imaginary +| 31 = @jdivexpr // C99 div imaginary +| 32 = @fjaddexpr // C99 add real + imaginary +| 33 = @jfaddexpr // C99 add imaginary + real +| 34 = @fjsubexpr // C99 sub real - imaginary +| 35 = @jfsubexpr // C99 sub imaginary - real +| 36 = @paddexpr // pointer add (pointer + int or int + pointer) +| 37 = @psubexpr // pointer sub (pointer - integer) +| 38 = @pdiffexpr // difference between two pointers +| 39 = @lshiftexpr +| 40 = @rshiftexpr +| 41 = @andexpr +| 42 = @orexpr +| 43 = @xorexpr +| 44 = @eqexpr +| 45 = @neexpr +| 46 = @gtexpr +| 47 = @ltexpr +| 48 = @geexpr +| 49 = @leexpr +| 50 = @minexpr // GNU minimum +| 51 = @maxexpr // GNU maximum +| 52 = @assignexpr +| 53 = @assignaddexpr +| 54 = @assignsubexpr +| 55 = @assignmulexpr +| 56 = @assigndivexpr +| 57 = @assignremexpr +| 58 = @assignlshiftexpr +| 59 = @assignrshiftexpr +| 60 = @assignandexpr +| 61 = @assignorexpr +| 62 = @assignxorexpr +| 63 = @assignpaddexpr // assign pointer add +| 64 = @assignpsubexpr // assign pointer sub +| 65 = @andlogicalexpr +| 66 = @orlogicalexpr +| 67 = @commaexpr +| 68 = @subscriptexpr // access to member of an array, e.g., a[5] +// ... 69 @objc_subscriptexpr deprecated +// ... 70 @cmdaccess deprecated +// ... +| 73 = @virtfunptrexpr +| 74 = @callexpr +// ... 75 @msgexpr_normal deprecated +// ... 76 @msgexpr_super deprecated +// ... 77 @atselectorexpr deprecated +// ... 78 @atprotocolexpr deprecated +| 79 = @vastartexpr +| 80 = @vaargexpr +| 81 = @vaendexpr +| 82 = @vacopyexpr +// ... 83 @atencodeexpr deprecated +| 84 = @varaccess +| 85 = @thisaccess +// ... 86 @objc_box_expr deprecated +| 87 = @new_expr +| 88 = @delete_expr +| 89 = @throw_expr +| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) +| 91 = @braced_init_list +| 92 = @type_id +| 93 = @runtime_sizeof +| 94 = @runtime_alignof +| 95 = @sizeof_pack +| 96 = @expr_stmt // GNU extension +| 97 = @routineexpr +| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) +| 99 = @offsetofexpr // offsetof ::= type and field +| 100 = @hasassignexpr // __has_assign ::= type +| 101 = @hascopyexpr // __has_copy ::= type +| 102 = @hasnothrowassign // __has_nothrow_assign ::= type +| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type +| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type +| 105 = @hastrivialassign // __has_trivial_assign ::= type +| 106 = @hastrivialconstr // __has_trivial_constructor ::= type +| 107 = @hastrivialcopy // __has_trivial_copy ::= type +| 108 = @hasuserdestr // __has_user_destructor ::= type +| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type +| 110 = @isabstractexpr // __is_abstract ::= type +| 111 = @isbaseofexpr // __is_base_of ::= type type +| 112 = @isclassexpr // __is_class ::= type +| 113 = @isconvtoexpr // __is_convertible_to ::= type type +| 114 = @isemptyexpr // __is_empty ::= type +| 115 = @isenumexpr // __is_enum ::= type +| 116 = @ispodexpr // __is_pod ::= type +| 117 = @ispolyexpr // __is_polymorphic ::= type +| 118 = @isunionexpr // __is_union ::= type +| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type +| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof +// ... +| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type +| 123 = @literal +| 124 = @uuidof +| 127 = @aggregateliteral +| 128 = @delete_array_expr +| 129 = @new_array_expr +// ... 130 @objc_array_literal deprecated +// ... 131 @objc_dictionary_literal deprecated +| 132 = @foldexpr +// ... +| 200 = @ctordirectinit +| 201 = @ctorvirtualinit +| 202 = @ctorfieldinit +| 203 = @ctordelegatinginit +| 204 = @dtordirectdestruct +| 205 = @dtorvirtualdestruct +| 206 = @dtorfielddestruct +// ... +| 210 = @static_cast +| 211 = @reinterpret_cast +| 212 = @const_cast +| 213 = @dynamic_cast +| 214 = @c_style_cast +| 215 = @lambdaexpr +| 216 = @param_ref +| 217 = @noopexpr +// ... +| 294 = @istriviallyconstructibleexpr +| 295 = @isdestructibleexpr +| 296 = @isnothrowdestructibleexpr +| 297 = @istriviallydestructibleexpr +| 298 = @istriviallyassignableexpr +| 299 = @isnothrowassignableexpr +| 300 = @istrivialexpr +| 301 = @isstandardlayoutexpr +| 302 = @istriviallycopyableexpr +| 303 = @isliteraltypeexpr +| 304 = @hastrivialmoveconstructorexpr +| 305 = @hastrivialmoveassignexpr +| 306 = @hasnothrowmoveassignexpr +| 307 = @isconstructibleexpr +| 308 = @isnothrowconstructibleexpr +| 309 = @hasfinalizerexpr +| 310 = @isdelegateexpr +| 311 = @isinterfaceclassexpr +| 312 = @isrefarrayexpr +| 313 = @isrefclassexpr +| 314 = @issealedexpr +| 315 = @issimplevalueclassexpr +| 316 = @isvalueclassexpr +| 317 = @isfinalexpr +| 319 = @noexceptexpr +| 320 = @builtinshufflevector +| 321 = @builtinchooseexpr +| 322 = @builtinaddressof +| 323 = @vec_fill +| 324 = @builtinconvertvector +| 325 = @builtincomplex +| 326 = @spaceshipexpr +| 327 = @co_await +| 328 = @co_yield +| 329 = @temp_init +| 330 = @isassignable +| 331 = @isaggregate +| 332 = @hasuniqueobjectrepresentations +| 333 = @builtinbitcast +| 334 = @builtinshuffle +| 335 = @blockassignexpr +| 336 = @issame +| 337 = @isfunction +| 338 = @islayoutcompatible +| 339 = @ispointerinterconvertiblebaseof +| 340 = @isarray +| 341 = @arrayrank +| 342 = @arrayextent +| 343 = @isarithmetic +| 344 = @iscompletetype +| 345 = @iscompound +| 346 = @isconst +| 347 = @isfloatingpoint +| 348 = @isfundamental +| 349 = @isintegral +| 350 = @islvaluereference +| 351 = @ismemberfunctionpointer +| 352 = @ismemberobjectpointer +| 353 = @ismemberpointer +| 354 = @isobject +| 355 = @ispointer +| 356 = @isreference +| 357 = @isrvaluereference +| 358 = @isscalar +| 359 = @issigned +| 360 = @isunsigned +| 361 = @isvoid +| 362 = @isvolatile +| 363 = @reuseexpr +; + +@var_args_expr = @vastartexpr + | @vaendexpr + | @vaargexpr + | @vacopyexpr + ; + +@builtin_op = @var_args_expr + | @noopexpr + | @offsetofexpr + | @intaddrexpr + | @hasassignexpr + | @hascopyexpr + | @hasnothrowassign + | @hasnothrowconstr + | @hasnothrowcopy + | @hastrivialassign + | @hastrivialconstr + | @hastrivialcopy + | @hastrivialdestructor + | @hasuserdestr + | @hasvirtualdestr + | @isabstractexpr + | @isbaseofexpr + | @isclassexpr + | @isconvtoexpr + | @isemptyexpr + | @isenumexpr + | @ispodexpr + | @ispolyexpr + | @isunionexpr + | @typescompexpr + | @builtinshufflevector + | @builtinconvertvector + | @builtinaddressof + | @istriviallyconstructibleexpr + | @isdestructibleexpr + | @isnothrowdestructibleexpr + | @istriviallydestructibleexpr + | @istriviallyassignableexpr + | @isnothrowassignableexpr + | @istrivialexpr + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + | @issame + | @isfunction + | @islayoutcompatible + | @ispointerinterconvertiblebaseof + | @isarray + | @arrayrank + | @arrayextent + | @isarithmetic + | @iscompletetype + | @iscompound + | @isconst + | @isfloatingpoint + | @isfundamental + | @isintegral + | @islvaluereference + | @ismemberfunctionpointer + | @ismemberobjectpointer + | @ismemberpointer + | @isobject + | @ispointer + | @isreference + | @isrvaluereference + | @isscalar + | @issigned + | @isunsigned + | @isvoid + | @isvolatile + ; + +new_allocated_type( + unique int expr: @new_expr ref, + int type_id: @type ref +); + +new_array_allocated_type( + unique int expr: @new_array_expr ref, + int type_id: @type ref +); + +/** + * The field being initialized by an initializer expression within an aggregate + * initializer for a class/struct/union. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref, + int position: int ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. Position is used to sort repeated initializers. + */ +#keyset[aggregate, position] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: int ref, + int position: int ref +); + +@ctorinit = @ctordirectinit + | @ctorvirtualinit + | @ctorfieldinit + | @ctordelegatinginit; +@dtordestruct = @dtordirectdestruct + | @dtorvirtualdestruct + | @dtorfielddestruct; + + +condition_decl_bind( + unique int expr: @condition_decl ref, + unique int decl: @declaration ref +); + +typeid_bind( + unique int expr: @type_id ref, + int type_id: @type ref +); + +uuidof_bind( + unique int expr: @uuidof ref, + int type_id: @type ref +); + +@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof; + +sizeof_bind( + unique int expr: @runtime_sizeof_or_alignof ref, + int type_id: @type ref +); + +code_block( + unique int block: @literal ref, + unique int routine: @function ref +); + +lambdas( + unique int expr: @lambdaexpr ref, + string default_capture: string ref, + boolean has_explicit_return_type: boolean ref +); + +lambda_capture( + unique int id: @lambdacapture, + int lambda: @lambdaexpr ref, + int index: int ref, + int field: @membervariable ref, + boolean captured_by_reference: boolean ref, + boolean is_implicit: boolean ref, + int location: @location_default ref +); + +@funbindexpr = @routineexpr + | @new_expr + | @delete_expr + | @delete_array_expr + | @ctordirectinit + | @ctorvirtualinit + | @ctordelegatinginit + | @dtordirectdestruct + | @dtorvirtualdestruct; + +@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; +@addressable = @function | @variable ; +@accessible = @addressable | @enumconstant ; + +@access = @varaccess | @routineexpr ; + +fold( + int expr: @foldexpr ref, + string operator: string ref, + boolean is_left_fold: boolean ref +); + +stmts( + unique int id: @stmt, + int kind: int ref, + int location: @location_stmt ref +); + +case @stmt.kind of + 1 = @stmt_expr +| 2 = @stmt_if +| 3 = @stmt_while +| 4 = @stmt_goto +| 5 = @stmt_label +| 6 = @stmt_return +| 7 = @stmt_block +| 8 = @stmt_end_test_while // do { ... } while ( ... ) +| 9 = @stmt_for +| 10 = @stmt_switch_case +| 11 = @stmt_switch +| 13 = @stmt_asm // "asm" statement or the body of an asm function +| 15 = @stmt_try_block +| 16 = @stmt_microsoft_try // Microsoft +| 17 = @stmt_decl +| 18 = @stmt_set_vla_size // C99 +| 19 = @stmt_vla_decl // C99 +| 25 = @stmt_assigned_goto // GNU +| 26 = @stmt_empty +| 27 = @stmt_continue +| 28 = @stmt_break +| 29 = @stmt_range_based_for // C++11 +// ... 30 @stmt_at_autoreleasepool_block deprecated +// ... 31 @stmt_objc_for_in deprecated +// ... 32 @stmt_at_synchronized deprecated +| 33 = @stmt_handler +// ... 34 @stmt_finally_end deprecated +| 35 = @stmt_constexpr_if +| 37 = @stmt_co_return +; + +type_vla( + int type_id: @type ref, + int decl: @stmt_vla_decl ref +); + +variable_vla( + int var: @variable ref, + int decl: @stmt_vla_decl ref +); + +if_initialization( + unique int if_stmt: @stmt_if ref, + int init_id: @stmt ref +); + +if_then( + unique int if_stmt: @stmt_if ref, + int then_id: @stmt ref +); + +if_else( + unique int if_stmt: @stmt_if ref, + int else_id: @stmt ref +); + +constexpr_if_initialization( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int init_id: @stmt ref +); + +constexpr_if_then( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int then_id: @stmt ref +); + +constexpr_if_else( + unique int constexpr_if_stmt: @stmt_constexpr_if ref, + int else_id: @stmt ref +); + +while_body( + unique int while_stmt: @stmt_while ref, + int body_id: @stmt ref +); + +do_body( + unique int do_stmt: @stmt_end_test_while ref, + int body_id: @stmt ref +); + +switch_initialization( + unique int switch_stmt: @stmt_switch ref, + int init_id: @stmt ref +); + +#keyset[switch_stmt, index] +switch_case( + int switch_stmt: @stmt_switch ref, + int index: int ref, + int case_id: @stmt_switch_case ref +); + +switch_body( + unique int switch_stmt: @stmt_switch ref, + int body_id: @stmt ref +); + +@stmt_for_or_range_based_for = @stmt_for + | @stmt_range_based_for; + +for_initialization( + unique int for_stmt: @stmt_for_or_range_based_for ref, + int init_id: @stmt ref +); + +for_condition( + unique int for_stmt: @stmt_for ref, + int condition_id: @expr ref +); + +for_update( + unique int for_stmt: @stmt_for ref, + int update_id: @expr ref +); + +for_body( + unique int for_stmt: @stmt_for ref, + int body_id: @stmt ref +); + +@stmtparent = @stmt | @expr_stmt ; +stmtparents( + unique int id: @stmt ref, + int index: int ref, + int parent: @stmtparent ref +); + +ishandler(unique int block: @stmt_block ref); + +@cfgnode = @stmt | @expr | @function | @initialiser ; + +stmt_decl_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl: @declaration ref +); + +stmt_decl_entry_bind( + int stmt: @stmt_decl ref, + int num: int ref, + int decl_entry: @element ref +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock ref +); + +@jump = @stmt_goto | @stmt_break | @stmt_continue; + +@jumporlabel = @jump | @stmt_label | @literal; + +jumpinfo( + unique int id: @jumporlabel ref, + string str: string ref, + int target: @stmt ref +); + +preprocdirects( + unique int id: @preprocdirect, + int kind: int ref, + int location: @location_default ref +); +case @preprocdirect.kind of + 0 = @ppd_if +| 1 = @ppd_ifdef +| 2 = @ppd_ifndef +| 3 = @ppd_elif +| 4 = @ppd_else +| 5 = @ppd_endif +| 6 = @ppd_plain_include +| 7 = @ppd_define +| 8 = @ppd_undef +| 9 = @ppd_line +| 10 = @ppd_error +| 11 = @ppd_pragma +| 12 = @ppd_objc_import +| 13 = @ppd_include_next +| 18 = @ppd_warning +; + +@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; + +@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; + +preprocpair( + int begin : @ppd_branch ref, + int elseelifend : @preprocdirect ref +); + +preproctrue(int branch : @ppd_branch ref); +preprocfalse(int branch : @ppd_branch ref); + +preproctext( + unique int id: @preprocdirect ref, + string head: string ref, + string body: string ref +); + +includes( + unique int id: @ppd_include ref, + int included: @file ref +); + +link_targets( + int id: @link_target, + int binary: @file ref +); + +link_parent( + int element : @element ref, + int link_target : @link_target ref +); + +/* XML Files */ + +xmlEncoding(unique int id: @file ref, string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters + | @xmlelement + | @xmlcomment + | @xmlattribute + | @xmldtd + | @file + | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties new file mode 100644 index 000000000000..82bbbe273cdf --- /dev/null +++ b/cpp/ql/lib/upgrades/aa7ff0ab32cd4674f6ab731d32fea64116997b05/upgrade.properties @@ -0,0 +1,3 @@ +description: Add value category to expr_reuse table +compatibility: full +expr_reuse.rel: run expr_reuse.qlo From 07f9614dc2a5ec4384e12d898ca05bf0a6df267c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Mar 2024 03:07:21 +0000 Subject: [PATCH 604/731] Bump chrono from 0.4.35 to 0.4.37 in /ql Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.35 to 0.4.37. - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](https://github.com/chronotope/chrono/compare/v0.4.35...v0.4.37) --- updated-dependencies: - dependency-name: chrono dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> --- ql/Cargo.lock | 4 ++-- ql/buramu/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ql/Cargo.lock b/ql/Cargo.lock index 557cf673d595..2e3cb8f29bdd 100644 --- a/ql/Cargo.lock +++ b/ql/Cargo.lock @@ -133,9 +133,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.35" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/ql/buramu/Cargo.toml b/ql/buramu/Cargo.toml index c072903b82a8..bf94c43be619 100644 --- a/ql/buramu/Cargo.toml +++ b/ql/buramu/Cargo.toml @@ -7,6 +7,6 @@ edition = "2018" [dependencies] lazy_static = "1.4.0" -chrono = "0.4.35" +chrono = "0.4.37" rayon = "1.9.0" regex = "1.10.3" From d57e8efaf26a715352c22727f7826eace28d6f8f Mon Sep 17 00:00:00 2001 From: James Fletcher <42464962+jf205@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:28:37 +0000 Subject: [PATCH 605/731] Update codeql-for-javascript.rst --- docs/codeql/codeql-language-guides/codeql-for-javascript.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst index cfc98a1a7d31..9c4073bce1bc 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-javascript.rst @@ -17,6 +17,7 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat using-type-tracking-for-api-modeling abstract-syntax-tree-classes-for-working-with-javascript-and-typescript-programs data-flow-cheat-sheet-for-javascript + customizing-library-models-for-javascript - :doc:`Basic query for JavaScript and TypeScript code <basic-query-for-javascript-code>`: Learn to write and run a simple CodeQL query. From bfce01cef672a7d0ca273be926497c94f86d25af Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Thu, 28 Mar 2024 11:38:39 +0100 Subject: [PATCH 606/731] Swift: add change note for Swift 5.10 upgrade --- swift/ql/lib/change-notes/2024-03-28-swift-5.10.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 swift/ql/lib/change-notes/2024-03-28-swift-5.10.md diff --git a/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md b/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md new file mode 100644 index 000000000000..bfc371a89e95 --- /dev/null +++ b/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md @@ -0,0 +1,5 @@ +--- +category: majorAnalysis +--- +* Upgraded to Swift 5.10 +* New AST node is extracted: `ThenStmt` From ece0d1f477a8220ac6b1e73bfd52c376da50899e Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Thu, 28 Mar 2024 11:54:18 +0100 Subject: [PATCH 607/731] Swift: add upgrade/downgrade scripts --- .../downgrade.ql | 18 + .../old.dbscheme | 2786 +++++++++++++++++ .../swift.dbscheme | 2780 ++++++++++++++++ .../upgrade.properties | 5 + .../old.dbscheme | 2780 ++++++++++++++++ .../swift.dbscheme | 2786 +++++++++++++++++ .../upgrade.properties | 2 + 7 files changed, 11157 insertions(+) create mode 100644 swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql create mode 100644 swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/old.dbscheme create mode 100644 swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/swift.dbscheme create mode 100644 swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/upgrade.properties create mode 100644 swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/old.dbscheme create mode 100644 swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/swift.dbscheme create mode 100644 swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/upgrade.properties diff --git a/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql new file mode 100644 index 000000000000..3246fda88997 --- /dev/null +++ b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql @@ -0,0 +1,18 @@ +class Element extends @element { + string toString() { none() } +} + +query predicate new_unspecified_elements(Element e, string property, string error) { + unspecified_elements(e, property, error) + or + error = + "ThenStmt nodes removed during database downgrade. Please update your CodeQL code." and + property = "" and + then_stmts(e, _) +} + +query predicate new_unspecified_element_children(Element e, int index, Element child) { + unspecified_element_children(e, index, child) + or + then_stmts(e, child) and index = 0 +} diff --git a/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/old.dbscheme b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/old.dbscheme new file mode 100644 index 000000000000..15a630f68e14 --- /dev/null +++ b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/old.dbscheme @@ -0,0 +1,2786 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @type_expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @opened_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_expr_or_none = + @type_expr +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/swift.dbscheme b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/swift.dbscheme new file mode 100644 index 000000000000..60be249ad164 --- /dev/null +++ b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/swift.dbscheme @@ -0,0 +1,2780 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @type_expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @opened_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_expr_or_none = + @type_expr +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/upgrade.properties b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/upgrade.properties new file mode 100644 index 000000000000..b8ecfe238285 --- /dev/null +++ b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/upgrade.properties @@ -0,0 +1,5 @@ +description: Remove `ThenStmt` wrapper nodes. +compatibility: partial +unspecified_elements.rel: run downgrade.ql new_unspecified_elements +unspecified_element_children.rel: run downgrade.ql new_unspecified_element_children +then_stmts.rel: delete diff --git a/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/old.dbscheme b/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/old.dbscheme new file mode 100644 index 000000000000..60be249ad164 --- /dev/null +++ b/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/old.dbscheme @@ -0,0 +1,2780 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @type_expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @opened_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_expr_or_none = + @type_expr +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/swift.dbscheme b/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/swift.dbscheme new file mode 100644 index 000000000000..15a630f68e14 --- /dev/null +++ b/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/swift.dbscheme @@ -0,0 +1,2786 @@ +// generated by codegen/codegen.py + +// from prefix.dbscheme +/** + * The source location of the snapshot. + */ +sourceLocationPrefix( + string prefix: string ref +); + + +// from schema.py + +@element = + @callable +| @file +| @generic_context +| @locatable +| @location +| @type +; + +#keyset[id] +element_is_unknown( + int id: @element ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_names( + int id: @callable ref, + string name: string ref +); + +#keyset[id] +callable_self_params( + int id: @callable ref, + int self_param: @param_decl_or_none ref +); + +#keyset[id, index] +callable_params( + int id: @callable ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +#keyset[id] +callable_bodies( + int id: @callable ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id, index] +callable_captures( + int id: @callable ref, + int index: int ref, + int capture: @captured_decl_or_none ref +); + +@file = + @db_file +; + +#keyset[id] +files( + int id: @file ref, + string name: string ref +); + +#keyset[id] +file_is_successfully_extracted( + int id: @file ref +); + +@locatable = + @argument +| @ast_node +| @comment +| @diagnostics +| @error_element +; + +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_or_none ref +); + +@location = + @db_location +; + +#keyset[id] +locations( + int id: @location ref, + int file: @file_or_none ref, + int start_line: int ref, + int start_column: int ref, + int end_line: int ref, + int end_column: int ref +); + +@ast_node = + @availability_info +| @availability_spec +| @case_label_item +| @condition_element +| @decl +| @expr +| @key_path_component +| @macro_role +| @pattern +| @stmt +| @stmt_condition +| @type_repr +; + +comments( + unique int id: @comment, + string text: string ref +); + +db_files( + unique int id: @db_file +); + +db_locations( + unique int id: @db_location +); + +diagnostics( + unique int id: @diagnostics, + string text: string ref, + int kind: int ref +); + +@error_element = + @error_expr +| @error_type +| @overloaded_decl_ref_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_chain_result_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @unresolved_type +| @unresolved_type_conversion_expr +| @unspecified_element +; + +availability_infos( + unique int id: @availability_info +); + +#keyset[id] +availability_info_is_unavailable( + int id: @availability_info ref +); + +#keyset[id, index] +availability_info_specs( + int id: @availability_info ref, + int index: int ref, + int spec: @availability_spec_or_none ref +); + +@availability_spec = + @other_availability_spec +| @platform_version_availability_spec +; + +key_path_components( + unique int id: @key_path_component, + int kind: int ref, + int component_type: @type_or_none ref +); + +#keyset[id, index] +key_path_component_subscript_arguments( + int id: @key_path_component ref, + int index: int ref, + int subscript_argument: @argument_or_none ref +); + +#keyset[id] +key_path_component_tuple_indices( + int id: @key_path_component ref, + int tuple_index: int ref +); + +#keyset[id] +key_path_component_decl_refs( + int id: @key_path_component ref, + int decl_ref: @value_decl_or_none ref +); + +macro_roles( + unique int id: @macro_role, + int kind: int ref, + int macro_syntax: int ref +); + +#keyset[id, index] +macro_role_conformances( + int id: @macro_role ref, + int index: int ref, + int conformance: @type_expr_or_none ref +); + +#keyset[id, index] +macro_role_names( + int id: @macro_role ref, + int index: int ref, + string name: string ref +); + +unspecified_elements( + unique int id: @unspecified_element, + string property: string ref, + string error: string ref +); + +#keyset[id] +unspecified_element_parents( + int id: @unspecified_element ref, + int parent: @element ref +); + +#keyset[id] +unspecified_element_indices( + int id: @unspecified_element ref, + int index: int ref +); + +#keyset[id, index] +unspecified_element_children( + int id: @unspecified_element ref, + int index: int ref, + int child: @ast_node_or_none ref +); + +other_availability_specs( + unique int id: @other_availability_spec +); + +platform_version_availability_specs( + unique int id: @platform_version_availability_spec, + string platform: string ref, + string version: string ref +); + +@decl = + @captured_decl +| @enum_case_decl +| @extension_decl +| @if_config_decl +| @import_decl +| @missing_member_decl +| @operator_decl +| @pattern_binding_decl +| @pound_diagnostic_decl +| @precedence_group_decl +| @top_level_code_decl +| @value_decl +; + +#keyset[id] +decls( //dir=decl + int id: @decl ref, + int module: @module_decl_or_none ref +); + +#keyset[id, index] +decl_members( //dir=decl + int id: @decl ref, + int index: int ref, + int member: @decl_or_none ref +); + +@generic_context = + @extension_decl +| @function +| @generic_type_decl +| @macro_decl +| @subscript_decl +; + +#keyset[id, index] +generic_context_generic_type_params( //dir=decl + int id: @generic_context ref, + int index: int ref, + int generic_type_param: @generic_type_param_decl_or_none ref +); + +captured_decls( //dir=decl + unique int id: @captured_decl, + int decl: @value_decl_or_none ref +); + +#keyset[id] +captured_decl_is_direct( //dir=decl + int id: @captured_decl ref +); + +#keyset[id] +captured_decl_is_escaping( //dir=decl + int id: @captured_decl ref +); + +enum_case_decls( //dir=decl + unique int id: @enum_case_decl +); + +#keyset[id, index] +enum_case_decl_elements( //dir=decl + int id: @enum_case_decl ref, + int index: int ref, + int element: @enum_element_decl_or_none ref +); + +extension_decls( //dir=decl + unique int id: @extension_decl, + int extended_type_decl: @nominal_type_decl_or_none ref +); + +#keyset[id, index] +extension_decl_protocols( //dir=decl + int id: @extension_decl ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +if_config_decls( //dir=decl + unique int id: @if_config_decl +); + +#keyset[id, index] +if_config_decl_active_elements( //dir=decl + int id: @if_config_decl ref, + int index: int ref, + int active_element: @ast_node_or_none ref +); + +import_decls( //dir=decl + unique int id: @import_decl +); + +#keyset[id] +import_decl_is_exported( //dir=decl + int id: @import_decl ref +); + +#keyset[id] +import_decl_imported_modules( //dir=decl + int id: @import_decl ref, + int imported_module: @module_decl_or_none ref +); + +#keyset[id, index] +import_decl_declarations( //dir=decl + int id: @import_decl ref, + int index: int ref, + int declaration: @value_decl_or_none ref +); + +missing_member_decls( //dir=decl + unique int id: @missing_member_decl, + string name: string ref +); + +@operator_decl = + @infix_operator_decl +| @postfix_operator_decl +| @prefix_operator_decl +; + +#keyset[id] +operator_decls( //dir=decl + int id: @operator_decl ref, + string name: string ref +); + +pattern_binding_decls( //dir=decl + unique int id: @pattern_binding_decl +); + +#keyset[id, index] +pattern_binding_decl_inits( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int init: @expr_or_none ref +); + +#keyset[id, index] +pattern_binding_decl_patterns( //dir=decl + int id: @pattern_binding_decl ref, + int index: int ref, + int pattern: @pattern_or_none ref +); + +pound_diagnostic_decls( //dir=decl + unique int id: @pound_diagnostic_decl, + int kind: int ref, + int message: @string_literal_expr_or_none ref +); + +precedence_group_decls( //dir=decl + unique int id: @precedence_group_decl +); + +top_level_code_decls( //dir=decl + unique int id: @top_level_code_decl, + int body: @brace_stmt_or_none ref +); + +@value_decl = + @abstract_storage_decl +| @enum_element_decl +| @function +| @macro_decl +| @type_decl +; + +#keyset[id] +value_decls( //dir=decl + int id: @value_decl ref, + int interface_type: @type_or_none ref +); + +@abstract_storage_decl = + @subscript_decl +| @var_decl +; + +#keyset[id, index] +abstract_storage_decl_accessors( //dir=decl + int id: @abstract_storage_decl ref, + int index: int ref, + int accessor: @accessor_or_none ref +); + +enum_element_decls( //dir=decl + unique int id: @enum_element_decl, + string name: string ref +); + +#keyset[id, index] +enum_element_decl_params( //dir=decl + int id: @enum_element_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@function = + @accessor_or_named_function +| @deinitializer +| @initializer +; + +infix_operator_decls( //dir=decl + unique int id: @infix_operator_decl +); + +#keyset[id] +infix_operator_decl_precedence_groups( //dir=decl + int id: @infix_operator_decl ref, + int precedence_group: @precedence_group_decl_or_none ref +); + +macro_decls( //dir=decl + unique int id: @macro_decl, + string name: string ref +); + +#keyset[id, index] +macro_decl_parameters( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int parameter: @param_decl_or_none ref +); + +#keyset[id, index] +macro_decl_roles( //dir=decl + int id: @macro_decl ref, + int index: int ref, + int role: @macro_role_or_none ref +); + +postfix_operator_decls( //dir=decl + unique int id: @postfix_operator_decl +); + +prefix_operator_decls( //dir=decl + unique int id: @prefix_operator_decl +); + +@type_decl = + @abstract_type_param_decl +| @generic_type_decl +| @module_decl +; + +#keyset[id] +type_decls( //dir=decl + int id: @type_decl ref, + string name: string ref +); + +#keyset[id, index] +type_decl_inherited_types( //dir=decl + int id: @type_decl ref, + int index: int ref, + int inherited_type: @type_or_none ref +); + +@abstract_type_param_decl = + @associated_type_decl +| @generic_type_param_decl +; + +@accessor_or_named_function = + @accessor +| @named_function +; + +deinitializers( //dir=decl + unique int id: @deinitializer +); + +@generic_type_decl = + @nominal_type_decl +| @opaque_type_decl +| @type_alias_decl +; + +initializers( //dir=decl + unique int id: @initializer +); + +module_decls( //dir=decl + unique int id: @module_decl +); + +#keyset[id] +module_decl_is_builtin_module( //dir=decl + int id: @module_decl ref +); + +#keyset[id] +module_decl_is_system_module( //dir=decl + int id: @module_decl ref +); + +module_decl_imported_modules( //dir=decl + int id: @module_decl ref, + int imported_module: @module_decl_or_none ref +); + +module_decl_exported_modules( //dir=decl + int id: @module_decl ref, + int exported_module: @module_decl_or_none ref +); + +subscript_decls( //dir=decl + unique int id: @subscript_decl, + int element_type: @type_or_none ref +); + +#keyset[id, index] +subscript_decl_params( //dir=decl + int id: @subscript_decl ref, + int index: int ref, + int param: @param_decl_or_none ref +); + +@var_decl = + @concrete_var_decl +| @param_decl +; + +#keyset[id] +var_decls( //dir=decl + int id: @var_decl ref, + string name: string ref, + int type_: @type_or_none ref +); + +#keyset[id] +var_decl_attached_property_wrapper_types( //dir=decl + int id: @var_decl ref, + int attached_property_wrapper_type: @type_or_none ref +); + +#keyset[id] +var_decl_parent_patterns( //dir=decl + int id: @var_decl ref, + int parent_pattern: @pattern_or_none ref +); + +#keyset[id] +var_decl_parent_initializers( //dir=decl + int id: @var_decl ref, + int parent_initializer: @expr_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_backing_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_backing_var: @var_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_var_bindings( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +var_decl_property_wrapper_projection_vars( //dir=decl + int id: @var_decl ref, + int property_wrapper_projection_var: @var_decl_or_none ref +); + +accessors( //dir=decl + unique int id: @accessor +); + +#keyset[id] +accessor_is_getter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_setter( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_will_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_did_set( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_read( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_modify( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_address( //dir=decl + int id: @accessor ref +); + +#keyset[id] +accessor_is_unsafe_mutable_address( //dir=decl + int id: @accessor ref +); + +associated_type_decls( //dir=decl + unique int id: @associated_type_decl +); + +concrete_var_decls( //dir=decl + unique int id: @concrete_var_decl, + int introducer_int: int ref +); + +generic_type_param_decls( //dir=decl + unique int id: @generic_type_param_decl +); + +named_functions( //dir=decl + unique int id: @named_function +); + +@nominal_type_decl = + @class_decl +| @enum_decl +| @protocol_decl +| @struct_decl +; + +#keyset[id] +nominal_type_decls( //dir=decl + int id: @nominal_type_decl ref, + int type_: @type_or_none ref +); + +opaque_type_decls( //dir=decl + unique int id: @opaque_type_decl, + int naming_declaration: @value_decl_or_none ref +); + +#keyset[id, index] +opaque_type_decl_opaque_generic_params( //dir=decl + int id: @opaque_type_decl ref, + int index: int ref, + int opaque_generic_param: @generic_type_param_type_or_none ref +); + +param_decls( //dir=decl + unique int id: @param_decl +); + +#keyset[id] +param_decl_is_inout( //dir=decl + int id: @param_decl ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_var_bindings( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var_binding: @pattern_binding_decl_or_none ref +); + +#keyset[id] +param_decl_property_wrapper_local_wrapped_vars( //dir=decl + int id: @param_decl ref, + int property_wrapper_local_wrapped_var: @var_decl_or_none ref +); + +type_alias_decls( //dir=decl + unique int id: @type_alias_decl, + int aliased_type: @type_or_none ref +); + +class_decls( //dir=decl + unique int id: @class_decl +); + +enum_decls( //dir=decl + unique int id: @enum_decl +); + +protocol_decls( //dir=decl + unique int id: @protocol_decl +); + +struct_decls( //dir=decl + unique int id: @struct_decl +); + +arguments( //dir=expr + unique int id: @argument, + string label: string ref, + int expr: @expr_or_none ref +); + +@expr = + @any_try_expr +| @applied_property_wrapper_expr +| @apply_expr +| @assign_expr +| @bind_optional_expr +| @capture_list_expr +| @closure_expr +| @collection_expr +| @consume_expr +| @copy_expr +| @decl_ref_expr +| @default_argument_expr +| @discard_assignment_expr +| @dot_syntax_base_ignored_expr +| @dynamic_type_expr +| @enum_is_case_expr +| @error_expr +| @explicit_cast_expr +| @force_value_expr +| @identity_expr +| @if_expr +| @implicit_conversion_expr +| @in_out_expr +| @key_path_application_expr +| @key_path_dot_expr +| @key_path_expr +| @lazy_initialization_expr +| @literal_expr +| @lookup_expr +| @make_temporarily_escapable_expr +| @materialize_pack_expr +| @obj_c_selector_expr +| @one_way_expr +| @opaque_value_expr +| @open_existential_expr +| @optional_evaluation_expr +| @other_initializer_ref_expr +| @overloaded_decl_ref_expr +| @pack_element_expr +| @pack_expansion_expr +| @property_wrapper_value_placeholder_expr +| @rebind_self_in_initializer_expr +| @sequence_expr +| @single_value_stmt_expr +| @super_ref_expr +| @tap_expr +| @tuple_element_expr +| @tuple_expr +| @type_expr +| @unresolved_decl_ref_expr +| @unresolved_dot_expr +| @unresolved_member_expr +| @unresolved_pattern_expr +| @unresolved_specialize_expr +| @vararg_expansion_expr +; + +#keyset[id] +expr_types( //dir=expr + int id: @expr ref, + int type_: @type_or_none ref +); + +@any_try_expr = + @force_try_expr +| @optional_try_expr +| @try_expr +; + +#keyset[id] +any_try_exprs( //dir=expr + int id: @any_try_expr ref, + int sub_expr: @expr_or_none ref +); + +applied_property_wrapper_exprs( //dir=expr + unique int id: @applied_property_wrapper_expr, + int kind: int ref, + int value: @expr_or_none ref, + int param: @param_decl_or_none ref +); + +@apply_expr = + @binary_expr +| @call_expr +| @postfix_unary_expr +| @prefix_unary_expr +| @self_apply_expr +; + +#keyset[id] +apply_exprs( //dir=expr + int id: @apply_expr ref, + int function: @expr_or_none ref +); + +#keyset[id, index] +apply_expr_arguments( //dir=expr + int id: @apply_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +assign_exprs( //dir=expr + unique int id: @assign_expr, + int dest: @expr_or_none ref, + int source: @expr_or_none ref +); + +bind_optional_exprs( //dir=expr + unique int id: @bind_optional_expr, + int sub_expr: @expr_or_none ref +); + +capture_list_exprs( //dir=expr + unique int id: @capture_list_expr, + int closure_body: @closure_expr_or_none ref +); + +#keyset[id, index] +capture_list_expr_binding_decls( //dir=expr + int id: @capture_list_expr ref, + int index: int ref, + int binding_decl: @pattern_binding_decl_or_none ref +); + +@closure_expr = + @auto_closure_expr +| @explicit_closure_expr +; + +@collection_expr = + @array_expr +| @dictionary_expr +; + +consume_exprs( //dir=expr + unique int id: @consume_expr, + int sub_expr: @expr_or_none ref +); + +copy_exprs( //dir=expr + unique int id: @copy_expr, + int sub_expr: @expr_or_none ref +); + +decl_ref_exprs( //dir=expr + unique int id: @decl_ref_expr, + int decl: @decl_or_none ref +); + +#keyset[id, index] +decl_ref_expr_replacement_types( //dir=expr + int id: @decl_ref_expr ref, + int index: int ref, + int replacement_type: @type_or_none ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_ordinary_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +#keyset[id] +decl_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @decl_ref_expr ref +); + +default_argument_exprs( //dir=expr + unique int id: @default_argument_expr, + int param_decl: @param_decl_or_none ref, + int param_index: int ref +); + +#keyset[id] +default_argument_expr_caller_side_defaults( //dir=expr + int id: @default_argument_expr ref, + int caller_side_default: @expr_or_none ref +); + +discard_assignment_exprs( //dir=expr + unique int id: @discard_assignment_expr +); + +dot_syntax_base_ignored_exprs( //dir=expr + unique int id: @dot_syntax_base_ignored_expr, + int qualifier: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +dynamic_type_exprs( //dir=expr + unique int id: @dynamic_type_expr, + int base: @expr_or_none ref +); + +enum_is_case_exprs( //dir=expr + unique int id: @enum_is_case_expr, + int sub_expr: @expr_or_none ref, + int element: @enum_element_decl_or_none ref +); + +error_exprs( //dir=expr + unique int id: @error_expr +); + +@explicit_cast_expr = + @checked_cast_expr +| @coerce_expr +; + +#keyset[id] +explicit_cast_exprs( //dir=expr + int id: @explicit_cast_expr ref, + int sub_expr: @expr_or_none ref +); + +force_value_exprs( //dir=expr + unique int id: @force_value_expr, + int sub_expr: @expr_or_none ref +); + +@identity_expr = + @await_expr +| @borrow_expr +| @dot_self_expr +| @paren_expr +| @unresolved_member_chain_result_expr +; + +#keyset[id] +identity_exprs( //dir=expr + int id: @identity_expr ref, + int sub_expr: @expr_or_none ref +); + +if_exprs( //dir=expr + unique int id: @if_expr, + int condition: @expr_or_none ref, + int then_expr: @expr_or_none ref, + int else_expr: @expr_or_none ref +); + +@implicit_conversion_expr = + @abi_safe_conversion_expr +| @any_hashable_erasure_expr +| @archetype_to_super_expr +| @array_to_pointer_expr +| @bridge_from_obj_c_expr +| @bridge_to_obj_c_expr +| @class_metatype_to_object_expr +| @collection_upcast_conversion_expr +| @conditional_bridge_from_obj_c_expr +| @covariant_function_conversion_expr +| @covariant_return_conversion_expr +| @derived_to_base_expr +| @destructure_tuple_expr +| @differentiable_function_expr +| @differentiable_function_extract_original_expr +| @erasure_expr +| @existential_metatype_to_object_expr +| @foreign_object_conversion_expr +| @function_conversion_expr +| @in_out_to_pointer_expr +| @inject_into_optional_expr +| @linear_function_expr +| @linear_function_extract_original_expr +| @linear_to_differentiable_function_expr +| @load_expr +| @metatype_conversion_expr +| @pointer_to_pointer_expr +| @protocol_metatype_to_object_expr +| @string_to_pointer_expr +| @underlying_to_opaque_expr +| @unevaluated_instance_expr +| @unresolved_type_conversion_expr +; + +#keyset[id] +implicit_conversion_exprs( //dir=expr + int id: @implicit_conversion_expr ref, + int sub_expr: @expr_or_none ref +); + +in_out_exprs( //dir=expr + unique int id: @in_out_expr, + int sub_expr: @expr_or_none ref +); + +key_path_application_exprs( //dir=expr + unique int id: @key_path_application_expr, + int base: @expr_or_none ref, + int key_path: @expr_or_none ref +); + +key_path_dot_exprs( //dir=expr + unique int id: @key_path_dot_expr +); + +key_path_exprs( //dir=expr + unique int id: @key_path_expr +); + +#keyset[id] +key_path_expr_roots( //dir=expr + int id: @key_path_expr ref, + int root: @type_repr_or_none ref +); + +#keyset[id, index] +key_path_expr_components( //dir=expr + int id: @key_path_expr ref, + int index: int ref, + int component: @key_path_component_or_none ref +); + +lazy_initialization_exprs( //dir=expr + unique int id: @lazy_initialization_expr, + int sub_expr: @expr_or_none ref +); + +@literal_expr = + @builtin_literal_expr +| @interpolated_string_literal_expr +| @nil_literal_expr +| @object_literal_expr +| @regex_literal_expr +; + +@lookup_expr = + @dynamic_lookup_expr +| @member_ref_expr +| @subscript_expr +; + +#keyset[id] +lookup_exprs( //dir=expr + int id: @lookup_expr ref, + int base: @expr_or_none ref +); + +#keyset[id] +lookup_expr_members( //dir=expr + int id: @lookup_expr ref, + int member: @decl_or_none ref +); + +make_temporarily_escapable_exprs( //dir=expr + unique int id: @make_temporarily_escapable_expr, + int escaping_closure: @opaque_value_expr_or_none ref, + int nonescaping_closure: @expr_or_none ref, + int sub_expr: @expr_or_none ref +); + +materialize_pack_exprs( //dir=expr + unique int id: @materialize_pack_expr, + int sub_expr: @expr_or_none ref +); + +obj_c_selector_exprs( //dir=expr + unique int id: @obj_c_selector_expr, + int sub_expr: @expr_or_none ref, + int method: @function_or_none ref +); + +one_way_exprs( //dir=expr + unique int id: @one_way_expr, + int sub_expr: @expr_or_none ref +); + +opaque_value_exprs( //dir=expr + unique int id: @opaque_value_expr +); + +open_existential_exprs( //dir=expr + unique int id: @open_existential_expr, + int sub_expr: @expr_or_none ref, + int existential: @expr_or_none ref, + int opaque_expr: @opaque_value_expr_or_none ref +); + +optional_evaluation_exprs( //dir=expr + unique int id: @optional_evaluation_expr, + int sub_expr: @expr_or_none ref +); + +other_initializer_ref_exprs( //dir=expr + unique int id: @other_initializer_ref_expr, + int initializer: @initializer_or_none ref +); + +overloaded_decl_ref_exprs( //dir=expr + unique int id: @overloaded_decl_ref_expr +); + +#keyset[id, index] +overloaded_decl_ref_expr_possible_declarations( //dir=expr + int id: @overloaded_decl_ref_expr ref, + int index: int ref, + int possible_declaration: @value_decl_or_none ref +); + +pack_element_exprs( //dir=expr + unique int id: @pack_element_expr, + int sub_expr: @expr_or_none ref +); + +pack_expansion_exprs( //dir=expr + unique int id: @pack_expansion_expr, + int pattern_expr: @expr_or_none ref +); + +property_wrapper_value_placeholder_exprs( //dir=expr + unique int id: @property_wrapper_value_placeholder_expr, + int placeholder: @opaque_value_expr_or_none ref +); + +#keyset[id] +property_wrapper_value_placeholder_expr_wrapped_values( //dir=expr + int id: @property_wrapper_value_placeholder_expr ref, + int wrapped_value: @expr_or_none ref +); + +rebind_self_in_initializer_exprs( //dir=expr + unique int id: @rebind_self_in_initializer_expr, + int sub_expr: @expr_or_none ref, + int self: @var_decl_or_none ref +); + +sequence_exprs( //dir=expr + unique int id: @sequence_expr +); + +#keyset[id, index] +sequence_expr_elements( //dir=expr + int id: @sequence_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +single_value_stmt_exprs( //dir=expr + unique int id: @single_value_stmt_expr, + int stmt: @stmt_or_none ref +); + +super_ref_exprs( //dir=expr + unique int id: @super_ref_expr, + int self: @var_decl_or_none ref +); + +tap_exprs( //dir=expr + unique int id: @tap_expr, + int body: @brace_stmt_or_none ref, + int var: @var_decl_or_none ref +); + +#keyset[id] +tap_expr_sub_exprs( //dir=expr + int id: @tap_expr ref, + int sub_expr: @expr_or_none ref +); + +tuple_element_exprs( //dir=expr + unique int id: @tuple_element_expr, + int sub_expr: @expr_or_none ref, + int index: int ref +); + +tuple_exprs( //dir=expr + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_elements( //dir=expr + int id: @tuple_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +type_exprs( //dir=expr + unique int id: @type_expr +); + +#keyset[id] +type_expr_type_reprs( //dir=expr + int id: @type_expr ref, + int type_repr: @type_repr_or_none ref +); + +unresolved_decl_ref_exprs( //dir=expr + unique int id: @unresolved_decl_ref_expr +); + +#keyset[id] +unresolved_decl_ref_expr_names( //dir=expr + int id: @unresolved_decl_ref_expr ref, + string name: string ref +); + +unresolved_dot_exprs( //dir=expr + unique int id: @unresolved_dot_expr, + int base: @expr_or_none ref, + string name: string ref +); + +unresolved_member_exprs( //dir=expr + unique int id: @unresolved_member_expr, + string name: string ref +); + +unresolved_pattern_exprs( //dir=expr + unique int id: @unresolved_pattern_expr, + int sub_pattern: @pattern_or_none ref +); + +unresolved_specialize_exprs( //dir=expr + unique int id: @unresolved_specialize_expr, + int sub_expr: @expr_or_none ref +); + +vararg_expansion_exprs( //dir=expr + unique int id: @vararg_expansion_expr, + int sub_expr: @expr_or_none ref +); + +abi_safe_conversion_exprs( //dir=expr + unique int id: @abi_safe_conversion_expr +); + +any_hashable_erasure_exprs( //dir=expr + unique int id: @any_hashable_erasure_expr +); + +archetype_to_super_exprs( //dir=expr + unique int id: @archetype_to_super_expr +); + +array_exprs( //dir=expr + unique int id: @array_expr +); + +#keyset[id, index] +array_expr_elements( //dir=expr + int id: @array_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +array_to_pointer_exprs( //dir=expr + unique int id: @array_to_pointer_expr +); + +auto_closure_exprs( //dir=expr + unique int id: @auto_closure_expr +); + +await_exprs( //dir=expr + unique int id: @await_expr +); + +binary_exprs( //dir=expr + unique int id: @binary_expr +); + +borrow_exprs( //dir=expr + unique int id: @borrow_expr +); + +bridge_from_obj_c_exprs( //dir=expr + unique int id: @bridge_from_obj_c_expr +); + +bridge_to_obj_c_exprs( //dir=expr + unique int id: @bridge_to_obj_c_expr +); + +@builtin_literal_expr = + @boolean_literal_expr +| @magic_identifier_literal_expr +| @number_literal_expr +| @string_literal_expr +; + +call_exprs( //dir=expr + unique int id: @call_expr +); + +@checked_cast_expr = + @conditional_checked_cast_expr +| @forced_checked_cast_expr +| @is_expr +; + +class_metatype_to_object_exprs( //dir=expr + unique int id: @class_metatype_to_object_expr +); + +coerce_exprs( //dir=expr + unique int id: @coerce_expr +); + +collection_upcast_conversion_exprs( //dir=expr + unique int id: @collection_upcast_conversion_expr +); + +conditional_bridge_from_obj_c_exprs( //dir=expr + unique int id: @conditional_bridge_from_obj_c_expr +); + +covariant_function_conversion_exprs( //dir=expr + unique int id: @covariant_function_conversion_expr +); + +covariant_return_conversion_exprs( //dir=expr + unique int id: @covariant_return_conversion_expr +); + +derived_to_base_exprs( //dir=expr + unique int id: @derived_to_base_expr +); + +destructure_tuple_exprs( //dir=expr + unique int id: @destructure_tuple_expr +); + +dictionary_exprs( //dir=expr + unique int id: @dictionary_expr +); + +#keyset[id, index] +dictionary_expr_elements( //dir=expr + int id: @dictionary_expr ref, + int index: int ref, + int element: @expr_or_none ref +); + +differentiable_function_exprs( //dir=expr + unique int id: @differentiable_function_expr +); + +differentiable_function_extract_original_exprs( //dir=expr + unique int id: @differentiable_function_extract_original_expr +); + +dot_self_exprs( //dir=expr + unique int id: @dot_self_expr +); + +@dynamic_lookup_expr = + @dynamic_member_ref_expr +| @dynamic_subscript_expr +; + +erasure_exprs( //dir=expr + unique int id: @erasure_expr +); + +existential_metatype_to_object_exprs( //dir=expr + unique int id: @existential_metatype_to_object_expr +); + +explicit_closure_exprs( //dir=expr + unique int id: @explicit_closure_expr +); + +force_try_exprs( //dir=expr + unique int id: @force_try_expr +); + +foreign_object_conversion_exprs( //dir=expr + unique int id: @foreign_object_conversion_expr +); + +function_conversion_exprs( //dir=expr + unique int id: @function_conversion_expr +); + +in_out_to_pointer_exprs( //dir=expr + unique int id: @in_out_to_pointer_expr +); + +inject_into_optional_exprs( //dir=expr + unique int id: @inject_into_optional_expr +); + +interpolated_string_literal_exprs( //dir=expr + unique int id: @interpolated_string_literal_expr +); + +#keyset[id] +interpolated_string_literal_expr_interpolation_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int interpolation_expr: @opaque_value_expr_or_none ref +); + +#keyset[id] +interpolated_string_literal_expr_appending_exprs( //dir=expr + int id: @interpolated_string_literal_expr ref, + int appending_expr: @tap_expr_or_none ref +); + +linear_function_exprs( //dir=expr + unique int id: @linear_function_expr +); + +linear_function_extract_original_exprs( //dir=expr + unique int id: @linear_function_extract_original_expr +); + +linear_to_differentiable_function_exprs( //dir=expr + unique int id: @linear_to_differentiable_function_expr +); + +load_exprs( //dir=expr + unique int id: @load_expr +); + +member_ref_exprs( //dir=expr + unique int id: @member_ref_expr +); + +#keyset[id] +member_ref_expr_has_direct_to_storage_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_ordinary_semantics( //dir=expr + int id: @member_ref_expr ref +); + +#keyset[id] +member_ref_expr_has_distributed_thunk_semantics( //dir=expr + int id: @member_ref_expr ref +); + +metatype_conversion_exprs( //dir=expr + unique int id: @metatype_conversion_expr +); + +nil_literal_exprs( //dir=expr + unique int id: @nil_literal_expr +); + +object_literal_exprs( //dir=expr + unique int id: @object_literal_expr, + int kind: int ref +); + +#keyset[id, index] +object_literal_expr_arguments( //dir=expr + int id: @object_literal_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +optional_try_exprs( //dir=expr + unique int id: @optional_try_expr +); + +paren_exprs( //dir=expr + unique int id: @paren_expr +); + +pointer_to_pointer_exprs( //dir=expr + unique int id: @pointer_to_pointer_expr +); + +postfix_unary_exprs( //dir=expr + unique int id: @postfix_unary_expr +); + +prefix_unary_exprs( //dir=expr + unique int id: @prefix_unary_expr +); + +protocol_metatype_to_object_exprs( //dir=expr + unique int id: @protocol_metatype_to_object_expr +); + +regex_literal_exprs( //dir=expr + unique int id: @regex_literal_expr, + string pattern: string ref, + int version: int ref +); + +@self_apply_expr = + @dot_syntax_call_expr +| @initializer_ref_call_expr +; + +#keyset[id] +self_apply_exprs( //dir=expr + int id: @self_apply_expr ref, + int base: @expr_or_none ref +); + +string_to_pointer_exprs( //dir=expr + unique int id: @string_to_pointer_expr +); + +subscript_exprs( //dir=expr + unique int id: @subscript_expr +); + +#keyset[id, index] +subscript_expr_arguments( //dir=expr + int id: @subscript_expr ref, + int index: int ref, + int argument: @argument_or_none ref +); + +#keyset[id] +subscript_expr_has_direct_to_storage_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_direct_to_implementation_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_ordinary_semantics( //dir=expr + int id: @subscript_expr ref +); + +#keyset[id] +subscript_expr_has_distributed_thunk_semantics( //dir=expr + int id: @subscript_expr ref +); + +try_exprs( //dir=expr + unique int id: @try_expr +); + +underlying_to_opaque_exprs( //dir=expr + unique int id: @underlying_to_opaque_expr +); + +unevaluated_instance_exprs( //dir=expr + unique int id: @unevaluated_instance_expr +); + +unresolved_member_chain_result_exprs( //dir=expr + unique int id: @unresolved_member_chain_result_expr +); + +unresolved_type_conversion_exprs( //dir=expr + unique int id: @unresolved_type_conversion_expr +); + +boolean_literal_exprs( //dir=expr + unique int id: @boolean_literal_expr, + boolean value: boolean ref +); + +conditional_checked_cast_exprs( //dir=expr + unique int id: @conditional_checked_cast_expr +); + +dot_syntax_call_exprs( //dir=expr + unique int id: @dot_syntax_call_expr +); + +dynamic_member_ref_exprs( //dir=expr + unique int id: @dynamic_member_ref_expr +); + +dynamic_subscript_exprs( //dir=expr + unique int id: @dynamic_subscript_expr +); + +forced_checked_cast_exprs( //dir=expr + unique int id: @forced_checked_cast_expr +); + +initializer_ref_call_exprs( //dir=expr + unique int id: @initializer_ref_call_expr +); + +is_exprs( //dir=expr + unique int id: @is_expr +); + +magic_identifier_literal_exprs( //dir=expr + unique int id: @magic_identifier_literal_expr, + string kind: string ref +); + +@number_literal_expr = + @float_literal_expr +| @integer_literal_expr +; + +string_literal_exprs( //dir=expr + unique int id: @string_literal_expr, + string value: string ref +); + +float_literal_exprs( //dir=expr + unique int id: @float_literal_expr, + string string_value: string ref +); + +integer_literal_exprs( //dir=expr + unique int id: @integer_literal_expr, + string string_value: string ref +); + +@pattern = + @any_pattern +| @binding_pattern +| @bool_pattern +| @enum_element_pattern +| @expr_pattern +| @is_pattern +| @named_pattern +| @optional_some_pattern +| @paren_pattern +| @tuple_pattern +| @typed_pattern +; + +#keyset[id] +pattern_types( //dir=pattern + int id: @pattern ref, + int type_: @type_or_none ref +); + +any_patterns( //dir=pattern + unique int id: @any_pattern +); + +binding_patterns( //dir=pattern + unique int id: @binding_pattern, + int sub_pattern: @pattern_or_none ref +); + +bool_patterns( //dir=pattern + unique int id: @bool_pattern, + boolean value: boolean ref +); + +enum_element_patterns( //dir=pattern + unique int id: @enum_element_pattern, + int element: @enum_element_decl_or_none ref +); + +#keyset[id] +enum_element_pattern_sub_patterns( //dir=pattern + int id: @enum_element_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +expr_patterns( //dir=pattern + unique int id: @expr_pattern, + int sub_expr: @expr_or_none ref +); + +is_patterns( //dir=pattern + unique int id: @is_pattern +); + +#keyset[id] +is_pattern_cast_type_reprs( //dir=pattern + int id: @is_pattern ref, + int cast_type_repr: @type_repr_or_none ref +); + +#keyset[id] +is_pattern_sub_patterns( //dir=pattern + int id: @is_pattern ref, + int sub_pattern: @pattern_or_none ref +); + +named_patterns( //dir=pattern + unique int id: @named_pattern, + int var_decl: @var_decl_or_none ref +); + +optional_some_patterns( //dir=pattern + unique int id: @optional_some_pattern, + int sub_pattern: @pattern_or_none ref +); + +paren_patterns( //dir=pattern + unique int id: @paren_pattern, + int sub_pattern: @pattern_or_none ref +); + +tuple_patterns( //dir=pattern + unique int id: @tuple_pattern +); + +#keyset[id, index] +tuple_pattern_elements( //dir=pattern + int id: @tuple_pattern ref, + int index: int ref, + int element: @pattern_or_none ref +); + +typed_patterns( //dir=pattern + unique int id: @typed_pattern, + int sub_pattern: @pattern_or_none ref +); + +#keyset[id] +typed_pattern_type_reprs( //dir=pattern + int id: @typed_pattern ref, + int type_repr: @type_repr_or_none ref +); + +case_label_items( //dir=stmt + unique int id: @case_label_item, + int pattern: @pattern_or_none ref +); + +#keyset[id] +case_label_item_guards( //dir=stmt + int id: @case_label_item ref, + int guard: @expr_or_none ref +); + +condition_elements( //dir=stmt + unique int id: @condition_element +); + +#keyset[id] +condition_element_booleans( //dir=stmt + int id: @condition_element ref, + int boolean_: @expr_or_none ref +); + +#keyset[id] +condition_element_patterns( //dir=stmt + int id: @condition_element ref, + int pattern: @pattern_or_none ref +); + +#keyset[id] +condition_element_initializers( //dir=stmt + int id: @condition_element ref, + int initializer: @expr_or_none ref +); + +#keyset[id] +condition_element_availabilities( //dir=stmt + int id: @condition_element ref, + int availability: @availability_info_or_none ref +); + +@stmt = + @brace_stmt +| @break_stmt +| @case_stmt +| @continue_stmt +| @defer_stmt +| @discard_stmt +| @fail_stmt +| @fallthrough_stmt +| @labeled_stmt +| @pound_assert_stmt +| @return_stmt +| @then_stmt +| @throw_stmt +| @yield_stmt +; + +stmt_conditions( //dir=stmt + unique int id: @stmt_condition +); + +#keyset[id, index] +stmt_condition_elements( //dir=stmt + int id: @stmt_condition ref, + int index: int ref, + int element: @condition_element_or_none ref +); + +brace_stmts( //dir=stmt + unique int id: @brace_stmt +); + +#keyset[id, index] +brace_stmt_elements( //dir=stmt + int id: @brace_stmt ref, + int index: int ref, + int element: @ast_node_or_none ref +); + +break_stmts( //dir=stmt + unique int id: @break_stmt +); + +#keyset[id] +break_stmt_target_names( //dir=stmt + int id: @break_stmt ref, + string target_name: string ref +); + +#keyset[id] +break_stmt_targets( //dir=stmt + int id: @break_stmt ref, + int target: @stmt_or_none ref +); + +case_stmts( //dir=stmt + unique int id: @case_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +case_stmt_labels( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int label: @case_label_item_or_none ref +); + +#keyset[id, index] +case_stmt_variables( //dir=stmt + int id: @case_stmt ref, + int index: int ref, + int variable: @var_decl_or_none ref +); + +continue_stmts( //dir=stmt + unique int id: @continue_stmt +); + +#keyset[id] +continue_stmt_target_names( //dir=stmt + int id: @continue_stmt ref, + string target_name: string ref +); + +#keyset[id] +continue_stmt_targets( //dir=stmt + int id: @continue_stmt ref, + int target: @stmt_or_none ref +); + +defer_stmts( //dir=stmt + unique int id: @defer_stmt, + int body: @brace_stmt_or_none ref +); + +discard_stmts( //dir=stmt + unique int id: @discard_stmt, + int sub_expr: @expr_or_none ref +); + +fail_stmts( //dir=stmt + unique int id: @fail_stmt +); + +fallthrough_stmts( //dir=stmt + unique int id: @fallthrough_stmt, + int fallthrough_source: @case_stmt_or_none ref, + int fallthrough_dest: @case_stmt_or_none ref +); + +@labeled_stmt = + @do_catch_stmt +| @do_stmt +| @for_each_stmt +| @labeled_conditional_stmt +| @repeat_while_stmt +| @switch_stmt +; + +#keyset[id] +labeled_stmt_labels( //dir=stmt + int id: @labeled_stmt ref, + string label: string ref +); + +pound_assert_stmts( //dir=stmt + unique int id: @pound_assert_stmt, + int condition: @expr_or_none ref, + string message: string ref +); + +return_stmts( //dir=stmt + unique int id: @return_stmt +); + +#keyset[id] +return_stmt_results( //dir=stmt + int id: @return_stmt ref, + int result: @expr_or_none ref +); + +then_stmts( //dir=stmt + unique int id: @then_stmt, + int result: @expr_or_none ref +); + +throw_stmts( //dir=stmt + unique int id: @throw_stmt, + int sub_expr: @expr_or_none ref +); + +yield_stmts( //dir=stmt + unique int id: @yield_stmt +); + +#keyset[id, index] +yield_stmt_results( //dir=stmt + int id: @yield_stmt ref, + int index: int ref, + int result: @expr_or_none ref +); + +do_catch_stmts( //dir=stmt + unique int id: @do_catch_stmt, + int body: @stmt_or_none ref +); + +#keyset[id, index] +do_catch_stmt_catches( //dir=stmt + int id: @do_catch_stmt ref, + int index: int ref, + int catch: @case_stmt_or_none ref +); + +do_stmts( //dir=stmt + unique int id: @do_stmt, + int body: @brace_stmt_or_none ref +); + +for_each_stmts( //dir=stmt + unique int id: @for_each_stmt, + int pattern: @pattern_or_none ref, + int body: @brace_stmt_or_none ref +); + +#keyset[id] +for_each_stmt_wheres( //dir=stmt + int id: @for_each_stmt ref, + int where: @expr_or_none ref +); + +#keyset[id] +for_each_stmt_iterator_vars( //dir=stmt + int id: @for_each_stmt ref, + int iteratorVar: @pattern_binding_decl_or_none ref +); + +#keyset[id] +for_each_stmt_next_calls( //dir=stmt + int id: @for_each_stmt ref, + int nextCall: @expr_or_none ref +); + +@labeled_conditional_stmt = + @guard_stmt +| @if_stmt +| @while_stmt +; + +#keyset[id] +labeled_conditional_stmts( //dir=stmt + int id: @labeled_conditional_stmt ref, + int condition: @stmt_condition_or_none ref +); + +repeat_while_stmts( //dir=stmt + unique int id: @repeat_while_stmt, + int condition: @expr_or_none ref, + int body: @stmt_or_none ref +); + +switch_stmts( //dir=stmt + unique int id: @switch_stmt, + int expr: @expr_or_none ref +); + +#keyset[id, index] +switch_stmt_cases( //dir=stmt + int id: @switch_stmt ref, + int index: int ref, + int case_: @case_stmt_or_none ref +); + +guard_stmts( //dir=stmt + unique int id: @guard_stmt, + int body: @brace_stmt_or_none ref +); + +if_stmts( //dir=stmt + unique int id: @if_stmt, + int then: @stmt_or_none ref +); + +#keyset[id] +if_stmt_elses( //dir=stmt + int id: @if_stmt ref, + int else: @stmt_or_none ref +); + +while_stmts( //dir=stmt + unique int id: @while_stmt, + int body: @stmt_or_none ref +); + +@type = + @any_function_type +| @any_generic_type +| @any_metatype_type +| @builtin_type +| @dependent_member_type +| @dynamic_self_type +| @error_type +| @existential_type +| @in_out_type +| @l_value_type +| @module_type +| @pack_element_type +| @pack_expansion_type +| @pack_type +| @parameterized_protocol_type +| @protocol_composition_type +| @reference_storage_type +| @substitutable_type +| @sugar_type +| @tuple_type +| @unresolved_type +; + +#keyset[id] +types( //dir=type + int id: @type ref, + string name: string ref, + int canonical_type: @type_or_none ref +); + +type_reprs( //dir=type + unique int id: @type_repr, + int type_: @type_or_none ref +); + +@any_function_type = + @function_type +| @generic_function_type +; + +#keyset[id] +any_function_types( //dir=type + int id: @any_function_type ref, + int result: @type_or_none ref +); + +#keyset[id, index] +any_function_type_param_types( //dir=type + int id: @any_function_type ref, + int index: int ref, + int param_type: @type_or_none ref +); + +#keyset[id] +any_function_type_is_throwing( //dir=type + int id: @any_function_type ref +); + +#keyset[id] +any_function_type_is_async( //dir=type + int id: @any_function_type ref +); + +@any_generic_type = + @nominal_or_bound_generic_nominal_type +| @unbound_generic_type +; + +#keyset[id] +any_generic_types( //dir=type + int id: @any_generic_type ref, + int declaration: @generic_type_decl_or_none ref +); + +#keyset[id] +any_generic_type_parents( //dir=type + int id: @any_generic_type ref, + int parent: @type_or_none ref +); + +@any_metatype_type = + @existential_metatype_type +| @metatype_type +; + +@builtin_type = + @any_builtin_integer_type +| @builtin_bridge_object_type +| @builtin_default_actor_storage_type +| @builtin_executor_type +| @builtin_float_type +| @builtin_job_type +| @builtin_native_object_type +| @builtin_raw_pointer_type +| @builtin_raw_unsafe_continuation_type +| @builtin_unsafe_value_buffer_type +| @builtin_vector_type +; + +dependent_member_types( //dir=type + unique int id: @dependent_member_type, + int base_type: @type_or_none ref, + int associated_type_decl: @associated_type_decl_or_none ref +); + +dynamic_self_types( //dir=type + unique int id: @dynamic_self_type, + int static_self_type: @type_or_none ref +); + +error_types( //dir=type + unique int id: @error_type +); + +existential_types( //dir=type + unique int id: @existential_type, + int constraint: @type_or_none ref +); + +in_out_types( //dir=type + unique int id: @in_out_type, + int object_type: @type_or_none ref +); + +l_value_types( //dir=type + unique int id: @l_value_type, + int object_type: @type_or_none ref +); + +module_types( //dir=type + unique int id: @module_type, + int module: @module_decl_or_none ref +); + +pack_element_types( //dir=type + unique int id: @pack_element_type, + int pack_type: @type_or_none ref +); + +pack_expansion_types( //dir=type + unique int id: @pack_expansion_type, + int pattern_type: @type_or_none ref, + int count_type: @type_or_none ref +); + +pack_types( //dir=type + unique int id: @pack_type +); + +#keyset[id, index] +pack_type_elements( //dir=type + int id: @pack_type ref, + int index: int ref, + int element: @type_or_none ref +); + +parameterized_protocol_types( //dir=type + unique int id: @parameterized_protocol_type, + int base: @protocol_type_or_none ref +); + +#keyset[id, index] +parameterized_protocol_type_args( //dir=type + int id: @parameterized_protocol_type ref, + int index: int ref, + int arg: @type_or_none ref +); + +protocol_composition_types( //dir=type + unique int id: @protocol_composition_type +); + +#keyset[id, index] +protocol_composition_type_members( //dir=type + int id: @protocol_composition_type ref, + int index: int ref, + int member: @type_or_none ref +); + +@reference_storage_type = + @unmanaged_storage_type +| @unowned_storage_type +| @weak_storage_type +; + +#keyset[id] +reference_storage_types( //dir=type + int id: @reference_storage_type ref, + int referent_type: @type_or_none ref +); + +@substitutable_type = + @archetype_type +| @generic_type_param_type +; + +@sugar_type = + @paren_type +| @syntax_sugar_type +| @type_alias_type +; + +tuple_types( //dir=type + unique int id: @tuple_type +); + +#keyset[id, index] +tuple_type_types( //dir=type + int id: @tuple_type ref, + int index: int ref, + int type_: @type_or_none ref +); + +#keyset[id, index] +tuple_type_names( //dir=type + int id: @tuple_type ref, + int index: int ref, + string name: string ref +); + +unresolved_types( //dir=type + unique int id: @unresolved_type +); + +@any_builtin_integer_type = + @builtin_integer_literal_type +| @builtin_integer_type +; + +@archetype_type = + @local_archetype_type +| @opaque_type_archetype_type +| @pack_archetype_type +| @primary_archetype_type +; + +#keyset[id] +archetype_types( //dir=type + int id: @archetype_type ref, + int interface_type: @type_or_none ref +); + +#keyset[id] +archetype_type_superclasses( //dir=type + int id: @archetype_type ref, + int superclass: @type_or_none ref +); + +#keyset[id, index] +archetype_type_protocols( //dir=type + int id: @archetype_type ref, + int index: int ref, + int protocol: @protocol_decl_or_none ref +); + +builtin_bridge_object_types( //dir=type + unique int id: @builtin_bridge_object_type +); + +builtin_default_actor_storage_types( //dir=type + unique int id: @builtin_default_actor_storage_type +); + +builtin_executor_types( //dir=type + unique int id: @builtin_executor_type +); + +builtin_float_types( //dir=type + unique int id: @builtin_float_type +); + +builtin_job_types( //dir=type + unique int id: @builtin_job_type +); + +builtin_native_object_types( //dir=type + unique int id: @builtin_native_object_type +); + +builtin_raw_pointer_types( //dir=type + unique int id: @builtin_raw_pointer_type +); + +builtin_raw_unsafe_continuation_types( //dir=type + unique int id: @builtin_raw_unsafe_continuation_type +); + +builtin_unsafe_value_buffer_types( //dir=type + unique int id: @builtin_unsafe_value_buffer_type +); + +builtin_vector_types( //dir=type + unique int id: @builtin_vector_type +); + +existential_metatype_types( //dir=type + unique int id: @existential_metatype_type +); + +function_types( //dir=type + unique int id: @function_type +); + +generic_function_types( //dir=type + unique int id: @generic_function_type +); + +#keyset[id, index] +generic_function_type_generic_params( //dir=type + int id: @generic_function_type ref, + int index: int ref, + int generic_param: @generic_type_param_type_or_none ref +); + +generic_type_param_types( //dir=type + unique int id: @generic_type_param_type +); + +metatype_types( //dir=type + unique int id: @metatype_type +); + +@nominal_or_bound_generic_nominal_type = + @bound_generic_type +| @nominal_type +; + +paren_types( //dir=type + unique int id: @paren_type, + int type_: @type_or_none ref +); + +@syntax_sugar_type = + @dictionary_type +| @unary_syntax_sugar_type +; + +type_alias_types( //dir=type + unique int id: @type_alias_type, + int decl: @type_alias_decl_or_none ref +); + +unbound_generic_types( //dir=type + unique int id: @unbound_generic_type +); + +unmanaged_storage_types( //dir=type + unique int id: @unmanaged_storage_type +); + +unowned_storage_types( //dir=type + unique int id: @unowned_storage_type +); + +weak_storage_types( //dir=type + unique int id: @weak_storage_type +); + +@bound_generic_type = + @bound_generic_class_type +| @bound_generic_enum_type +| @bound_generic_struct_type +; + +#keyset[id, index] +bound_generic_type_arg_types( //dir=type + int id: @bound_generic_type ref, + int index: int ref, + int arg_type: @type_or_none ref +); + +builtin_integer_literal_types( //dir=type + unique int id: @builtin_integer_literal_type +); + +builtin_integer_types( //dir=type + unique int id: @builtin_integer_type +); + +#keyset[id] +builtin_integer_type_widths( //dir=type + int id: @builtin_integer_type ref, + int width: int ref +); + +dictionary_types( //dir=type + unique int id: @dictionary_type, + int key_type: @type_or_none ref, + int value_type: @type_or_none ref +); + +@local_archetype_type = + @element_archetype_type +| @opened_archetype_type +; + +@nominal_type = + @class_type +| @enum_type +| @protocol_type +| @struct_type +; + +opaque_type_archetype_types( //dir=type + unique int id: @opaque_type_archetype_type, + int declaration: @opaque_type_decl_or_none ref +); + +pack_archetype_types( //dir=type + unique int id: @pack_archetype_type +); + +primary_archetype_types( //dir=type + unique int id: @primary_archetype_type +); + +@unary_syntax_sugar_type = + @array_slice_type +| @optional_type +| @variadic_sequence_type +; + +#keyset[id] +unary_syntax_sugar_types( //dir=type + int id: @unary_syntax_sugar_type ref, + int base_type: @type_or_none ref +); + +array_slice_types( //dir=type + unique int id: @array_slice_type +); + +bound_generic_class_types( //dir=type + unique int id: @bound_generic_class_type +); + +bound_generic_enum_types( //dir=type + unique int id: @bound_generic_enum_type +); + +bound_generic_struct_types( //dir=type + unique int id: @bound_generic_struct_type +); + +class_types( //dir=type + unique int id: @class_type +); + +element_archetype_types( //dir=type + unique int id: @element_archetype_type +); + +enum_types( //dir=type + unique int id: @enum_type +); + +opened_archetype_types( //dir=type + unique int id: @opened_archetype_type +); + +optional_types( //dir=type + unique int id: @optional_type +); + +protocol_types( //dir=type + unique int id: @protocol_type +); + +struct_types( //dir=type + unique int id: @struct_type +); + +variadic_sequence_types( //dir=type + unique int id: @variadic_sequence_type +); + +@accessor_or_none = + @accessor +| @unspecified_element +; + +@argument_or_none = + @argument +| @unspecified_element +; + +@associated_type_decl_or_none = + @associated_type_decl +| @unspecified_element +; + +@ast_node_or_none = + @ast_node +| @unspecified_element +; + +@availability_info_or_none = + @availability_info +| @unspecified_element +; + +@availability_spec_or_none = + @availability_spec +| @unspecified_element +; + +@brace_stmt_or_none = + @brace_stmt +| @unspecified_element +; + +@captured_decl_or_none = + @captured_decl +| @unspecified_element +; + +@case_label_item_or_none = + @case_label_item +| @unspecified_element +; + +@case_stmt_or_none = + @case_stmt +| @unspecified_element +; + +@closure_expr_or_none = + @closure_expr +| @unspecified_element +; + +@condition_element_or_none = + @condition_element +| @unspecified_element +; + +@decl_or_none = + @decl +| @unspecified_element +; + +@enum_element_decl_or_none = + @enum_element_decl +| @unspecified_element +; + +@expr_or_none = + @expr +| @unspecified_element +; + +@file_or_none = + @file +| @unspecified_element +; + +@function_or_none = + @function +| @unspecified_element +; + +@generic_type_decl_or_none = + @generic_type_decl +| @unspecified_element +; + +@generic_type_param_decl_or_none = + @generic_type_param_decl +| @unspecified_element +; + +@generic_type_param_type_or_none = + @generic_type_param_type +| @unspecified_element +; + +@initializer_or_none = + @initializer +| @unspecified_element +; + +@key_path_component_or_none = + @key_path_component +| @unspecified_element +; + +@location_or_none = + @location +| @unspecified_element +; + +@macro_role_or_none = + @macro_role +| @unspecified_element +; + +@module_decl_or_none = + @module_decl +| @unspecified_element +; + +@nominal_type_decl_or_none = + @nominal_type_decl +| @unspecified_element +; + +@opaque_type_decl_or_none = + @opaque_type_decl +| @unspecified_element +; + +@opaque_value_expr_or_none = + @opaque_value_expr +| @unspecified_element +; + +@param_decl_or_none = + @param_decl +| @unspecified_element +; + +@pattern_or_none = + @pattern +| @unspecified_element +; + +@pattern_binding_decl_or_none = + @pattern_binding_decl +| @unspecified_element +; + +@precedence_group_decl_or_none = + @precedence_group_decl +| @unspecified_element +; + +@protocol_decl_or_none = + @protocol_decl +| @unspecified_element +; + +@protocol_type_or_none = + @protocol_type +| @unspecified_element +; + +@stmt_or_none = + @stmt +| @unspecified_element +; + +@stmt_condition_or_none = + @stmt_condition +| @unspecified_element +; + +@string_literal_expr_or_none = + @string_literal_expr +| @unspecified_element +; + +@tap_expr_or_none = + @tap_expr +| @unspecified_element +; + +@type_or_none = + @type +| @unspecified_element +; + +@type_alias_decl_or_none = + @type_alias_decl +| @unspecified_element +; + +@type_expr_or_none = + @type_expr +| @unspecified_element +; + +@type_repr_or_none = + @type_repr +| @unspecified_element +; + +@value_decl_or_none = + @unspecified_element +| @value_decl +; + +@var_decl_or_none = + @unspecified_element +| @var_decl +; diff --git a/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/upgrade.properties b/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/upgrade.properties new file mode 100644 index 000000000000..0f8b0c447b5d --- /dev/null +++ b/swift/ql/lib/upgrades/60be249ad164f6e4b43c203323f1b3956dc97c2f/upgrade.properties @@ -0,0 +1,2 @@ +description: Add `ThenStmt` wrapper nodes. +compatibility: full From a34bb2608ddd03b1a4075291f1a4e9e56e651857 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Thu, 28 Mar 2024 11:57:09 +0100 Subject: [PATCH 608/731] Swift: fix ql format --- .../15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql index 3246fda88997..5870b93ac9fc 100644 --- a/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql +++ b/swift/downgrades/15a630f68e14f053932cf6a23797f43d958eedc9/downgrade.ql @@ -5,8 +5,7 @@ class Element extends @element { query predicate new_unspecified_elements(Element e, string property, string error) { unspecified_elements(e, property, error) or - error = - "ThenStmt nodes removed during database downgrade. Please update your CodeQL code." and + error = "ThenStmt nodes removed during database downgrade. Please update your CodeQL code." and property = "" and then_stmts(e, _) } From 977ac71b26d103a5d8ea319275298170616ff709 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Thu, 28 Mar 2024 11:15:30 +0000 Subject: [PATCH 609/731] Update toolchain_test.go Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> --- go/extractor/toolchain/toolchain_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/extractor/toolchain/toolchain_test.go b/go/extractor/toolchain/toolchain_test.go index 18ca7a6601ba..05b52af5d525 100644 --- a/go/extractor/toolchain/toolchain_test.go +++ b/go/extractor/toolchain/toolchain_test.go @@ -17,6 +17,6 @@ func TestParseGoVersion(t *testing.T) { func TestHasGoVersion(t *testing.T) { if HasGoVersion("1.21") { - t.Error("Exepected HasGoVersion(\"1.21\" to be false, but got true)") + t.Error("Exepected HasGoVersion(\"1.21\") to be false, but got true") } } From f6c22d466fc05c7e09e94b648e873d1645a9f000 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Thu, 28 Mar 2024 13:32:02 +0000 Subject: [PATCH 610/731] Update toolchain_test.go Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> --- go/extractor/toolchain/toolchain_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/extractor/toolchain/toolchain_test.go b/go/extractor/toolchain/toolchain_test.go index 05b52af5d525..e0f70a283e67 100644 --- a/go/extractor/toolchain/toolchain_test.go +++ b/go/extractor/toolchain/toolchain_test.go @@ -17,6 +17,6 @@ func TestParseGoVersion(t *testing.T) { func TestHasGoVersion(t *testing.T) { if HasGoVersion("1.21") { - t.Error("Exepected HasGoVersion(\"1.21\") to be false, but got true") + t.Error("Expected HasGoVersion(\"1.21\") to be false, but got true") } } From 24c4c3e06896edfcb69fa92f1ad2b640b7589f25 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Thu, 28 Mar 2024 15:07:30 +0000 Subject: [PATCH 611/731] Kotlin 2: Accept a test change With: open class Root {} class Subclass1: Root() {} fun typeTests(x: Root, y: Subclass1) { val y1: Subclass1 = if (x is Subclass1) { x } else { y } } we now get a slightly different AST, which means we no longer need to insert a StmtExpr: BRANCH if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.Subclass1 GET_VAR 'x: <root>.Root declared in <root>.typeTests' type=<root>.Root origin=null - then: TYPE_OP type=<root>.Subclass1 origin=IMPLICIT_CAST typeOperand=<root>.Subclass1 - BLOCK type=<root>.Root origin=null + then: BLOCK type=<root>.Subclass1 origin=null + TYPE_OP type=<root>.Subclass1 origin=IMPLICIT_CAST typeOperand=<root>.Subclass1 GET_VAR 'x: <root>.Root declared in <root>.typeTests' type=<root>.Root origin=null --- java/ql/test-kotlin2/library-tests/exprs/exprs.expected | 1 - 1 file changed, 1 deletion(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 529a3d0b66b4..efca4e24984e 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -1423,7 +1423,6 @@ | exprs.kt:160:29:160:29 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:160:29:160:42 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr | | exprs.kt:160:29:160:42 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | -| exprs.kt:160:45:160:49 | <Stmt> | exprs.kt:156:1:163:1 | typeTests | StmtExpr | | exprs.kt:160:47:160:47 | <implicit cast> | exprs.kt:156:1:163:1 | typeTests | ImplicitCastExpr | | exprs.kt:160:47:160:47 | Subclass1 | exprs.kt:156:1:163:1 | typeTests | TypeAccess | | exprs.kt:160:47:160:47 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | From 96723b1a8ff84401b1d39e2b1a7b23184ec956e1 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Thu, 28 Mar 2024 15:11:19 +0000 Subject: [PATCH 612/731] Kotlin 2: Accept some loc changes --- java/ql/test-kotlin2/library-tests/exprs/exprs.expected | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index efca4e24984e..e97c57b6ad5b 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -1379,7 +1379,6 @@ | exprs.kt:137:12:137:23 | ... > ... | exprs.kt:4:1:142:1 | topLevelMethod | GTExpr | | exprs.kt:137:23:137:23 | 0 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral | | exprs.kt:138:9:138:16 | variable | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | -| exprs.kt:138:9:138:16 | variable | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | | exprs.kt:138:9:138:18 | ...=... | exprs.kt:4:1:142:1 | topLevelMethod | AssignExpr | | exprs.kt:138:9:138:18 | <Stmt> | exprs.kt:4:1:142:1 | topLevelMethod | StmtExpr | | exprs.kt:138:9:138:18 | <implicit coercion to unit> | exprs.kt:4:1:142:1 | topLevelMethod | ImplicitCoercionToUnitExpr | @@ -1388,6 +1387,7 @@ | exprs.kt:138:9:138:18 | <unary> | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | | exprs.kt:138:9:138:18 | Unit | exprs.kt:4:1:142:1 | topLevelMethod | TypeAccess | | exprs.kt:138:9:138:18 | dec(...) | exprs.kt:4:1:142:1 | topLevelMethod | MethodCall | +| exprs.kt:138:9:138:18 | variable | exprs.kt:4:1:142:1 | topLevelMethod | VarAccess | | exprs.kt:141:12:141:14 | 123 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral | | exprs.kt:141:12:141:20 | ... + ... | exprs.kt:4:1:142:1 | topLevelMethod | AddExpr | | exprs.kt:141:18:141:20 | 456 | exprs.kt:4:1:142:1 | topLevelMethod | IntegerLiteral | @@ -1430,7 +1430,6 @@ | exprs.kt:160:58:160:58 | y | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:161:5:161:13 | q | exprs.kt:156:1:163:1 | typeTests | LocalVariableDeclExpr | | exprs.kt:161:13:161:13 | 1 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | -| exprs.kt:162:5:162:48 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral | | exprs.kt:162:5:162:48 | when ... | exprs.kt:156:1:163:1 | typeTests | WhenExpr | | exprs.kt:162:9:162:9 | x | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:9:162:22 | ...instanceof... | exprs.kt:156:1:163:1 | typeTests | InstanceOfExpr | @@ -1438,8 +1437,9 @@ | exprs.kt:162:27:162:31 | ...=... | exprs.kt:156:1:163:1 | typeTests | AssignExpr | | exprs.kt:162:27:162:31 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:31:162:31 | 2 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | +| exprs.kt:162:40:162:48 | true | exprs.kt:156:1:163:1 | typeTests | BooleanLiteral | | exprs.kt:162:42:162:46 | ...=... | exprs.kt:156:1:163:1 | typeTests | AssignExpr | -| exprs.kt:162:42:162:42 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | +| exprs.kt:162:42:162:46 | q | exprs.kt:156:1:163:1 | typeTests | VarAccess | | exprs.kt:162:46:162:46 | 3 | exprs.kt:156:1:163:1 | typeTests | IntegerLiteral | | exprs.kt:165:1:172:1 | Unit | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:165:9:165:18 | Polygon | file://:0:0:0:0 | <none> | TypeAccess | From 0fdc71bf576a6d5e6f5c16f41b00a0bcee3330f5 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Thu, 28 Mar 2024 15:23:27 +0000 Subject: [PATCH 613/731] Kotlin 2: Accept a test change For if(r != null) { val r2: Rectangle = r in Kotlin 2 mode, there is no IMPLICIT_NOTNULL check in Kotlin 2 mode: then: BLOCK type=kotlin.Unit origin=null VAR name:r2 type:java.awt.Rectangle [val] - TYPE_OP type=java.awt.Rectangle origin=IMPLICIT_NOTNULL typeOperand=java.awt.Rectangle - GET_VAR 'val r: @[FlexibleNullability] java.awt.Rectangle? [val] declared in <root>.foo' type=@[FlexibleNullability] java.awt.Rectangle? origin=null + GET_VAR 'val r: @[FlexibleNullability] java.awt.Rectangle? [val] declared in <root>.foo' type=@[FlexibleNullability] java.awt.Rectangle? origin=null VAR name:height type:kotlin.Int [val] GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:height type:kotlin.Int visibility:public' type=kotlin.Int origin=null receiver: GET_VAR 'val r2: java.awt.Rectangle [val] declared in <root>.foo' type=java.awt.Rectangle origin=null --- java/ql/test-kotlin2/library-tests/exprs/exprs.expected | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index e97c57b6ad5b..9633b6e47dfe 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -1451,8 +1451,6 @@ | exprs.kt:167:8:167:16 | ... (value not-equals) ... | exprs.kt:165:1:172:1 | foo | ValueNEExpr | | exprs.kt:167:13:167:16 | null | exprs.kt:165:1:172:1 | foo | NullLiteral | | exprs.kt:168:9:168:29 | r2 | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | -| exprs.kt:168:29:168:29 | <implicit not null> | exprs.kt:165:1:172:1 | foo | ImplicitNotNullExpr | -| exprs.kt:168:29:168:29 | Rectangle | exprs.kt:165:1:172:1 | foo | TypeAccess | | exprs.kt:168:29:168:29 | r | exprs.kt:165:1:172:1 | foo | VarAccess | | exprs.kt:169:9:169:30 | height | exprs.kt:165:1:172:1 | foo | LocalVariableDeclExpr | | exprs.kt:169:22:169:23 | r2 | exprs.kt:165:1:172:1 | foo | VarAccess | From 568fba6940bf41a65c2ab995f68cc4ad1e8baf56 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Thu, 28 Mar 2024 15:28:36 +0000 Subject: [PATCH 614/731] Kotlin 2: Accept some more test changes --- .../ql/test-kotlin2/library-tests/exprs/exprs.expected | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 9633b6e47dfe..4c2b25c52390 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -1494,17 +1494,17 @@ | exprs.kt:175:25:175:28 | Direction | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:175:25:175:28 | Direction.EAST | exprs.kt:0:0:0:0 | <clinit> | VarAccess | | exprs.kt:175:25:175:28 | new Direction(...) | exprs.kt:0:0:0:0 | <clinit> | ClassInstanceExpr | -| exprs.kt:178:1:182:1 | 0 | exprs.kt:178:6:182:1 | Color | IntegerLiteral | -| exprs.kt:178:1:182:1 | Color | exprs.kt:178:6:182:1 | Color | TypeAccess | | exprs.kt:178:1:182:1 | Color | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:1:182:1 | Color | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:1:182:1 | Color | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:1:182:1 | Color[] | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:178:1:182:1 | Enum<Color> | exprs.kt:178:6:182:1 | Color | TypeAccess | | exprs.kt:178:1:182:1 | EnumEntries<Color> | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:1:182:1 | String | file://:0:0:0:0 | <none> | TypeAccess | -| exprs.kt:178:1:182:1 | new Enum(...) | exprs.kt:178:6:182:1 | Color | ClassInstanceExpr | -| exprs.kt:178:1:182:1 | null | exprs.kt:178:6:182:1 | Color | NullLiteral | +| exprs.kt:178:17:178:30 | 0 | exprs.kt:178:17:178:30 | Color | IntegerLiteral | +| exprs.kt:178:17:178:30 | Color | exprs.kt:178:17:178:30 | Color | TypeAccess | +| exprs.kt:178:17:178:30 | Enum<Color> | exprs.kt:178:17:178:30 | Color | TypeAccess | +| exprs.kt:178:17:178:30 | new Enum<Color>(...) | exprs.kt:178:17:178:30 | Color | ClassInstanceExpr | +| exprs.kt:178:17:178:30 | null | exprs.kt:178:17:178:30 | Color | NullLiteral | | exprs.kt:178:18:178:29 | ...=... | exprs.kt:178:17:178:30 | Color | KtInitializerAssignExpr | | exprs.kt:178:18:178:29 | int | file://:0:0:0:0 | <none> | TypeAccess | | exprs.kt:178:18:178:29 | int | file://:0:0:0:0 | <none> | TypeAccess | From 3acdc73f22bae85e9cb7005e0a696b25773b6189 Mon Sep 17 00:00:00 2001 From: Ian Lynagh <igfoo@github.com> Date: Thu, 28 Mar 2024 16:15:37 +0000 Subject: [PATCH 615/731] Kotlin 2: Accept some more location changes --- java/ql/test-kotlin2/library-tests/exprs/exprs.expected | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected index 529a3d0b66b4..e6d5c19b8b6b 100644 --- a/java/ql/test-kotlin2/library-tests/exprs/exprs.expected +++ b/java/ql/test-kotlin2/library-tests/exprs/exprs.expected @@ -121,8 +121,8 @@ | delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess | | delegatedProperties.kt:23:29:23:31 | String | delegatedProperties.kt:23:9:23:31 | <get-name> | TypeAccess | | delegatedProperties.kt:23:29:23:31 | String | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:23:29:23:31 | get(...) | delegatedProperties.kt:23:9:23:31 | invoke | MethodCall | -| delegatedProperties.kt:23:29:23:31 | getValue(...) | delegatedProperties.kt:23:29:23:31 | <get-name> | MethodCall | +| delegatedProperties.kt:23:29:23:31 | get(...) | delegatedProperties.kt:23:29:23:31 | invoke | MethodCall | +| delegatedProperties.kt:23:29:23:31 | getValue(...) | delegatedProperties.kt:23:9:23:31 | <get-name> | MethodCall | | delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:18:5:40:5 | fn | LocalVariableDeclExpr | | delegatedProperties.kt:23:29:23:31 | name$delegate | delegatedProperties.kt:23:9:23:31 | <get-name> | VarAccess | | delegatedProperties.kt:23:29:23:31 | new (...) | delegatedProperties.kt:23:29:23:31 | get | ClassInstanceExpr | @@ -158,8 +158,8 @@ | delegatedProperties.kt:28:50:28:71 | ? ... | file://:0:0:0:0 | <none> | WildcardTypeAccess | | delegatedProperties.kt:28:50:28:71 | KProperty<?> | file://:0:0:0:0 | <none> | TypeAccess | | delegatedProperties.kt:28:74:28:83 | int | file://:0:0:0:0 | <none> | TypeAccess | -| delegatedProperties.kt:29:17:29:24 | setCurValue(...) | delegatedProperties.kt:28:13:30:13 | setValue | MethodCall | -| delegatedProperties.kt:29:17:29:24 | this | delegatedProperties.kt:28:13:30:13 | setValue | ThisAccess | +| delegatedProperties.kt:29:17:29:32 | setCurValue(...) | delegatedProperties.kt:28:13:30:13 | setValue | MethodCall | +| delegatedProperties.kt:29:17:29:32 | this | delegatedProperties.kt:28:13:30:13 | setValue | ThisAccess | | delegatedProperties.kt:29:28:29:32 | value | delegatedProperties.kt:28:13:30:13 | setValue | VarAccess | | delegatedProperties.kt:33:30:33:47 | ...::... | delegatedProperties.kt:33:9:33:47 | <get-readOnly> | PropertyRefExpr | | delegatedProperties.kt:33:30:33:47 | <get-readOnly>(...) | delegatedProperties.kt:33:30:33:47 | get | MethodCall | From 2f8c4df309a177c46aa5d2ad60919ebad815db62 Mon Sep 17 00:00:00 2001 From: Jami <57204504+jcogs33@users.noreply.github.com> Date: Thu, 28 Mar 2024 16:15:05 -0400 Subject: [PATCH 616/731] docs wording updates Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp | 6 +++--- java/ql/src/Security/CWE/CWE-552/UrlForward.ql | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp b/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp index 2b06a851a2b6..71316385335c 100644 --- a/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.qhelp @@ -11,9 +11,9 @@ can cause file information disclosure by allowing an attacker to access unauthor </overview> <recommendation> -<p>To guard against untrusted URL forwarding, it is advisable to avoid putting user input -directly into a forwarded URL. Instead, maintain a list of authorized -URLs on the server; then choose from that list based on the user input provided.</p> +<p>To guard against untrusted URL forwarding, you should avoid putting user input +directly into a forwarded URL. Instead, you should maintain a list of authorized +URLs on the server, then choose from that list based on the user input provided.</p> </recommendation> <example> diff --git a/java/ql/src/Security/CWE/CWE-552/UrlForward.ql b/java/ql/src/Security/CWE/CWE-552/UrlForward.ql index 95c540049a21..91e244a81522 100644 --- a/java/ql/src/Security/CWE/CWE-552/UrlForward.ql +++ b/java/ql/src/Security/CWE/CWE-552/UrlForward.ql @@ -1,6 +1,6 @@ /** * @name URL forward from a remote source - * @description URL forward based on unvalidated user-input + * @description URL forward based on unvalidated user input * may cause file information disclosure. * @kind path-problem * @problem.severity error From 919436efbb7fa53243e0482b763557141425abbf Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Thu, 14 Mar 2024 15:55:57 +0000 Subject: [PATCH 617/731] Remove df-gen models we have deliberately modeled Manual models always take precedence over generated models, so there is no point in keeping the generated models. These manual models were deliberately written to take precedence over the corresponding df-gen models. --- .../ql/lib/ext/generated/java.beans.model.yml | 4 - java/ql/lib/ext/generated/java.io.model.yml | 13 --- java/ql/lib/ext/generated/java.lang.model.yml | 18 --- java/ql/lib/ext/generated/java.net.model.yml | 9 -- .../lib/ext/generated/java.nio.file.model.yml | 37 ------ .../generated/java.security.cert.model.yml | 45 -------- .../lib/ext/generated/java.security.model.yml | 8 -- java/ql/lib/ext/generated/java.text.model.yml | 13 --- .../ext/generated/java.util.logging.model.yml | 2 - java/ql/lib/ext/generated/java.util.model.yml | 107 ------------------ .../ext/generated/java.util.prefs.model.yml | 17 --- .../ext/generated/java.util.regex.model.yml | 13 --- .../ext/generated/java.util.stream.model.yml | 5 - .../lib/ext/generated/javax.crypto.model.yml | 61 ---------- .../ext/generated/javax.crypto.spec.model.yml | 4 - 15 files changed, 356 deletions(-) diff --git a/java/ql/lib/ext/generated/java.beans.model.yml b/java/ql/lib/ext/generated/java.beans.model.yml index 1ae8e6c73b5b..2767fb301020 100644 --- a/java/ql/lib/ext/generated/java.beans.model.yml +++ b/java/ql/lib/ext/generated/java.beans.model.yml @@ -122,10 +122,6 @@ extensions: - ["java.beans", "PropertyDescriptor", True, "setReadMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.beans", "PropertyDescriptor", True, "setWriteMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.beans", "PropertyEditor", True, "addPropertyChangeListener", "(PropertyChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.beans", "PropertyEditor", True, "getAsText", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.beans", "PropertyEditor", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.beans", "PropertyEditor", True, "setAsText", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.beans", "PropertyEditor", True, "setValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.beans", "PropertyEditorSupport", True, "PropertyEditorSupport", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.beans", "PropertyEditorSupport", True, "getSource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.beans", "PropertyEditorSupport", True, "setSource", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.io.model.yml b/java/ql/lib/ext/generated/java.io.model.yml index 248971d2a5a2..8ecad6c31d63 100644 --- a/java/ql/lib/ext/generated/java.io.model.yml +++ b/java/ql/lib/ext/generated/java.io.model.yml @@ -38,18 +38,6 @@ extensions: - ["java.io", "EOFException", True, "EOFException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.io", "Externalizable", True, "readExternal", "(ObjectInput)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.io", "Externalizable", True, "writeExternal", "(ObjectOutput)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - - ["java.io", "File", True, "createTempFile", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "createTempFile", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "listFiles", "(FileFilter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "listFiles", "(FilenameFilter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "File", True, "toURL", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.io", "FileInputStream", True, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.io", "FileInputStream", True, "getFD", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.io", "FileNotFoundException", True, "FileNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -90,7 +78,6 @@ extensions: - ["java.io", "LineNumberReader", True, "LineNumberReader", "(Reader,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.io", "NotActiveException", True, "NotActiveException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.io", "NotSerializableException", True, "NotSerializableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.io", "ObjectInput", True, "readObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.io", "ObjectInputFilter$Config", False, "createFilter", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.io", "ObjectInputFilter", True, "allowFilter", "(Predicate,ObjectInputFilter$Status)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.io", "ObjectInputFilter", True, "merge", "(ObjectInputFilter,ObjectInputFilter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.lang.model.yml b/java/ql/lib/ext/generated/java.lang.model.yml index c8af5bdc0048..e9b8c6c85ea7 100644 --- a/java/ql/lib/ext/generated/java.lang.model.yml +++ b/java/ql/lib/ext/generated/java.lang.model.yml @@ -22,17 +22,6 @@ extensions: - ["java.lang", "ClassCastException", True, "ClassCastException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "ClassCircularityError", True, "ClassCircularityError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "ClassFormatError", True, "ClassFormatError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "findResource", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "getDefinedPackage", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "getDefinedPackage", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "getUnnamedModule", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "loadClass", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "loadClass", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "setClassAssertionStatus", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.lang", "ClassLoader", True, "setPackageAssertionStatus", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] @@ -200,16 +189,12 @@ extensions: - ["java.lang", "StackWalker$StackFrame", True, "toStackTraceElement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "StackWalker", False, "getInstance", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.lang", "StackWalker", False, "getInstance", "(Set,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "String", False, "lines", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "StringIndexOutOfBoundsException", True, "StringIndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "System$LoggerFinder", True, "getLocalizedLogger", "(String,ResourceBundle,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "System$LoggerFinder", True, "getLocalizedLogger", "(String,ResourceBundle,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "System", False, "getLogger", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "System", False, "getLogger", "(String,ResourceBundle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "System", False, "getLogger", "(String,ResourceBundle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "System", False, "getProperty", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "System", False, "setProperty", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "System", False, "setProperty", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "Thread", True, "Thread", "(Runnable,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "Thread", True, "Thread", "(Runnable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -240,8 +225,6 @@ extensions: - ["java.lang", "ThreadGroup", True, "enumerate", "(Thread[],boolean)", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"] - ["java.lang", "ThreadGroup", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.lang", "ThreadGroup", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "Throwable", True, "fillInStackTrace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.lang", "Throwable", True, "printStackTrace", "(PrintWriter)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - ["java.lang", "TypeNotPresentException", True, "TypeNotPresentException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "TypeNotPresentException", True, "TypeNotPresentException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["java.lang", "TypeNotPresentException", True, "typeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] @@ -711,7 +694,6 @@ extensions: - ["java.lang", "ProcessHandle", "pid", "()", "summary", "df-generated"] - ["java.lang", "ProcessHandle", "supportsNormalTermination", "()", "summary", "df-generated"] - ["java.lang", "Readable", "read", "(CharBuffer)", "summary", "df-generated"] - - ["java.lang", "Runnable", "run", "()", "summary", "df-generated"] - ["java.lang", "Runtime$Version", "compareToIgnoreOptional", "(Runtime$Version)", "summary", "df-generated"] - ["java.lang", "Runtime$Version", "equalsIgnoreOptional", "(Object)", "summary", "df-generated"] - ["java.lang", "Runtime$Version", "feature", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.net.model.yml b/java/ql/lib/ext/generated/java.net.model.yml index 7ca397cdb5c4..6f0a35897f22 100644 --- a/java/ql/lib/ext/generated/java.net.model.yml +++ b/java/ql/lib/ext/generated/java.net.model.yml @@ -132,11 +132,8 @@ extensions: - ["java.net", "Socket", True, "Socket", "(String,int,InetAddress,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - ["java.net", "Socket", True, "Socket", "(String,int,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.net", "Socket", True, "bind", "(SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.net", "Socket", True, "connect", "(SocketAddress)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.net", "Socket", True, "connect", "(SocketAddress,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.net", "Socket", True, "getInetAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "Socket", True, "getInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.net", "Socket", True, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "Socket", True, "getRemoteSocketAddress", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "Socket", True, "setOption", "(SocketOption,Object)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - ["java.net", "Socket", True, "supportedOptions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] @@ -181,14 +178,11 @@ extensions: - ["java.net", "URL", False, "URL", "(URL,String,URLStreamHandler)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["java.net", "URL", False, "URL", "(URL,String,URLStreamHandler)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - ["java.net", "URL", False, "getAuthority", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.net", "URL", False, "getContent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URL", False, "getContent", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URL", False, "getHost", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URL", False, "getProtocol", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.net", "URL", False, "getQuery", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URL", False, "getRef", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URL", False, "getUserInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.net", "URL", False, "openConnection", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URL", False, "openConnection", "(Proxy)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.net", "URLClassLoader", True, "URLClassLoader", "(String,URL[],ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -430,9 +424,6 @@ extensions: - ["java.net", "URI", "isAbsolute", "()", "summary", "df-generated"] - ["java.net", "URI", "isOpaque", "()", "summary", "df-generated"] - ["java.net", "URISyntaxException", "getIndex", "()", "summary", "df-generated"] - - ["java.net", "URL", "getDefaultPort", "()", "summary", "df-generated"] - - ["java.net", "URL", "getPort", "()", "summary", "df-generated"] - - ["java.net", "URL", "openStream", "()", "summary", "df-generated"] - ["java.net", "URL", "sameFile", "(URL)", "summary", "df-generated"] - ["java.net", "URL", "setURLStreamHandlerFactory", "(URLStreamHandlerFactory)", "summary", "df-generated"] - ["java.net", "URLClassLoader", "URLClassLoader", "(URL[])", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.nio.file.model.yml b/java/ql/lib/ext/generated/java.nio.file.model.yml index 342de82e556f..4c88fbbe5ecf 100644 --- a/java/ql/lib/ext/generated/java.nio.file.model.yml +++ b/java/ql/lib/ext/generated/java.nio.file.model.yml @@ -40,49 +40,21 @@ extensions: - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map,ClassLoader)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "FileSystems", False, "newFileSystem", "(URI,Map,ClassLoader)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "copy", "(Path,OutputStream)", "", "Argument[0].Element", "Argument[1]", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createDirectories", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createDirectory", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createFile", "(Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createLink", "(Path,Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createSymbolicLink", "(Path,Path,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempDirectory", "(Path,String,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempDirectory", "(Path,String,FileAttribute[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempDirectory", "(String,FileAttribute[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempFile", "(String,String,FileAttribute[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "createTempFile", "(String,String,FileAttribute[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "getAttribute", "(Path,String,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "getAttribute", "(Path,String,LinkOption[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "getFileAttributeView", "(Path,Class,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "getFileAttributeView", "(Path,Class,LinkOption[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "getFileStore", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "move", "(Path,Path,CopyOption[])", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "newDirectoryStream", "(Path,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "newOutputStream", "(Path,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "readAllLines", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "readAttributes", "(Path,Class,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "readAttributes", "(Path,String,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "readAttributes", "(Path,String,LinkOption[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "readString", "(Path)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "readString", "(Path,Charset)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "setAttribute", "(Path,String,Object,LinkOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "setLastModifiedTime", "(Path,FileTime)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "setOwner", "(Path,UserPrincipal)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "setPosixFilePermissions", "(Path,Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "walkFileTree", "(Path,FileVisitor)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "Files", False, "walkFileTree", "(Path,Set,int,FileVisitor)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "write", "(Path,Iterable,Charset,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "write", "(Path,Iterable,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "write", "(Path,byte[],OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "writeString", "(Path,CharSequence,Charset,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.nio.file", "Files", False, "writeString", "(Path,CharSequence,OpenOption[])", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.nio.file", "InvalidPathException", True, "InvalidPathException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.nio.file", "InvalidPathException", True, "InvalidPathException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["java.nio.file", "InvalidPathException", True, "InvalidPathException", "(String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -127,9 +99,6 @@ extensions: - ["java.nio.file", "FileSystem", "supportedFileAttributeViews", "()", "summary", "df-generated"] - ["java.nio.file", "FileSystems", "getDefault", "()", "summary", "df-generated"] - ["java.nio.file", "FileSystems", "getFileSystem", "(URI)", "summary", "df-generated"] - - ["java.nio.file", "Files", "copy", "(InputStream,Path,CopyOption[])", "summary", "df-generated"] - - ["java.nio.file", "Files", "delete", "(Path)", "summary", "df-generated"] - - ["java.nio.file", "Files", "deleteIfExists", "(Path)", "summary", "df-generated"] - ["java.nio.file", "Files", "getLastModifiedTime", "(Path,LinkOption[])", "summary", "df-generated"] - ["java.nio.file", "Files", "getOwner", "(Path,LinkOption[])", "summary", "df-generated"] - ["java.nio.file", "Files", "getPosixFilePermissions", "(Path,LinkOption[])", "summary", "df-generated"] @@ -141,13 +110,7 @@ extensions: - ["java.nio.file", "Files", "isSameFile", "(Path,Path)", "summary", "df-generated"] - ["java.nio.file", "Files", "isSymbolicLink", "(Path)", "summary", "df-generated"] - ["java.nio.file", "Files", "isWritable", "(Path)", "summary", "df-generated"] - - ["java.nio.file", "Files", "lines", "(Path)", "summary", "df-generated"] - - ["java.nio.file", "Files", "lines", "(Path,Charset)", "summary", "df-generated"] - ["java.nio.file", "Files", "mismatch", "(Path,Path)", "summary", "df-generated"] - - ["java.nio.file", "Files", "newBufferedWriter", "(Path,Charset,OpenOption[])", "summary", "df-generated"] - - ["java.nio.file", "Files", "newBufferedWriter", "(Path,OpenOption[])", "summary", "df-generated"] - - ["java.nio.file", "Files", "notExists", "(Path,LinkOption[])", "summary", "df-generated"] - - ["java.nio.file", "Files", "probeContentType", "(Path)", "summary", "df-generated"] - ["java.nio.file", "Files", "size", "(Path)", "summary", "df-generated"] - ["java.nio.file", "Files", "walk", "(Path,int,FileVisitOption[])", "summary", "df-generated"] - ["java.nio.file", "InvalidPathException", "getIndex", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.security.cert.model.yml b/java/ql/lib/ext/generated/java.security.cert.model.yml index 4d98781cac20..7f08c1a7d20b 100644 --- a/java/ql/lib/ext/generated/java.security.cert.model.yml +++ b/java/ql/lib/ext/generated/java.security.cert.model.yml @@ -42,18 +42,7 @@ extensions: - ["java.security.cert", "CertPathValidatorException", True, "CertPathValidatorException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "CertPathValidatorException", True, "getCertPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "CertPathValidatorException", True, "getReason", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getCRLs", "(CRLSelector)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "CertStore", True, "getCertStoreParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getCertificates", "(CertSelector)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,Provider)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,Provider)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getInstance", "(String,CertStoreParameters,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertStore", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "CertStoreException", True, "CertStoreException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "CertStoreException", True, "CertStoreException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "CertStoreException", True, "CertStoreException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] @@ -68,15 +57,6 @@ extensions: - ["java.security.cert", "CertificateException", True, "CertificateException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "CertificateException", True, "CertificateException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "CertificateExpiredException", True, "CertificateExpiredException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "generateCRL", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "generateCertPath", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "generateCertificate", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "CertificateFactory", True, "getType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "CertificateNotYetValidException", True, "CertificateNotYetValidException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "CertificateParsingException", True, "CertificateParsingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "CertificateParsingException", True, "CertificateParsingException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -105,23 +85,7 @@ extensions: - ["java.security.cert", "PKIXCertPathValidatorResult", True, "getPolicyTree", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "PKIXCertPathValidatorResult", True, "getPublicKey", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "PKIXCertPathValidatorResult", True, "getTrustAnchor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "PKIXParameters", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "addCertPathChecker", "(PKIXCertPathChecker)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "addCertStore", "(CertStore)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "getCertPathCheckers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "getCertStores", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "getDate", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "getInitialPolicies", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "getSigProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "getTargetCertConstraints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "getTrustAnchors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "setCertPathCheckers", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "setCertStores", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "setDate", "(Date)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "PKIXParameters", True, "setInitialPolicies", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "setSigProvider", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "setTargetCertConstraints", "(CertSelector)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security.cert", "PKIXParameters", True, "setTrustAnchors", "(Set)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"] - ["java.security.cert", "PKIXRevocationChecker", True, "getOcspExtensions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "PKIXRevocationChecker", True, "getOcspResponder", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security.cert", "PKIXRevocationChecker", True, "getOcspResponderCert", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] @@ -215,7 +179,6 @@ extensions: - ["java.security.cert", "CertPathValidatorSpi", "engineGetRevocationChecker", "()", "summary", "df-generated"] - ["java.security.cert", "CertPathValidatorSpi", "engineValidate", "(CertPath,CertPathParameters)", "summary", "df-generated"] - ["java.security.cert", "CertSelector", "match", "(Certificate)", "summary", "df-generated"] - - ["java.security.cert", "CertStore", "getDefaultType", "()", "summary", "df-generated"] - ["java.security.cert", "CertStoreSpi", "CertStoreSpi", "(CertStoreParameters)", "summary", "df-generated"] - ["java.security.cert", "CertStoreSpi", "engineGetCRLs", "(CRLSelector)", "summary", "df-generated"] - ["java.security.cert", "CertStoreSpi", "engineGetCertificates", "(CertSelector)", "summary", "df-generated"] @@ -224,11 +187,6 @@ extensions: - ["java.security.cert", "Certificate", "verify", "(PublicKey)", "summary", "df-generated"] - ["java.security.cert", "Certificate", "verify", "(PublicKey,Provider)", "summary", "df-generated"] - ["java.security.cert", "Certificate", "verify", "(PublicKey,String)", "summary", "df-generated"] - - ["java.security.cert", "CertificateFactory", "generateCRLs", "(InputStream)", "summary", "df-generated"] - - ["java.security.cert", "CertificateFactory", "generateCertPath", "(InputStream)", "summary", "df-generated"] - - ["java.security.cert", "CertificateFactory", "generateCertPath", "(InputStream,String)", "summary", "df-generated"] - - ["java.security.cert", "CertificateFactory", "generateCertificates", "(InputStream)", "summary", "df-generated"] - - ["java.security.cert", "CertificateFactory", "getCertPathEncodings", "()", "summary", "df-generated"] - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCRL", "(InputStream)", "summary", "df-generated"] - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCRLs", "(InputStream)", "summary", "df-generated"] - ["java.security.cert", "CertificateFactorySpi", "engineGenerateCertPath", "(InputStream)", "summary", "df-generated"] @@ -244,13 +202,10 @@ extensions: - ["java.security.cert", "PKIXBuilderParameters", "setMaxPathLength", "(int)", "summary", "df-generated"] - ["java.security.cert", "PKIXCertPathChecker", "check", "(Certificate,Collection)", "summary", "df-generated"] - ["java.security.cert", "PKIXCertPathChecker", "getSupportedExtensions", "()", "summary", "df-generated"] - - ["java.security.cert", "PKIXParameters", "PKIXParameters", "(KeyStore)", "summary", "df-generated"] - - ["java.security.cert", "PKIXParameters", "getPolicyQualifiersRejected", "()", "summary", "df-generated"] - ["java.security.cert", "PKIXParameters", "isAnyPolicyInhibited", "()", "summary", "df-generated"] - ["java.security.cert", "PKIXParameters", "isExplicitPolicyRequired", "()", "summary", "df-generated"] - ["java.security.cert", "PKIXParameters", "isPolicyMappingInhibited", "()", "summary", "df-generated"] - ["java.security.cert", "PKIXParameters", "isRevocationEnabled", "()", "summary", "df-generated"] - - ["java.security.cert", "PKIXParameters", "setAnyPolicyInhibited", "(boolean)", "summary", "df-generated"] - ["java.security.cert", "PKIXParameters", "setExplicitPolicyRequired", "(boolean)", "summary", "df-generated"] - ["java.security.cert", "PKIXParameters", "setPolicyMappingInhibited", "(boolean)", "summary", "df-generated"] - ["java.security.cert", "PKIXParameters", "setPolicyQualifiersRejected", "(boolean)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.security.model.yml b/java/ql/lib/ext/generated/java.security.model.yml index d170abb8188d..15b410e1fe8a 100644 --- a/java/ql/lib/ext/generated/java.security.model.yml +++ b/java/ql/lib/ext/generated/java.security.model.yml @@ -48,13 +48,6 @@ extensions: - ["java.security", "CodeSigner", False, "CodeSigner", "(CertPath,Timestamp)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["java.security", "CodeSigner", False, "getSignerCertPath", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security", "CodeSigner", False, "getTimestamp", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security", "CodeSource", True, "CodeSource", "(URL,Certificate[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security", "CodeSource", True, "CodeSource", "(URL,Certificate[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] - - ["java.security", "CodeSource", True, "CodeSource", "(URL,CodeSigner[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security", "CodeSource", True, "CodeSource", "(URL,CodeSigner[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"] - - ["java.security", "CodeSource", True, "getCertificates", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security", "CodeSource", True, "getCodeSigners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.security", "CodeSource", True, "getLocation", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security", "DigestException", True, "DigestException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security", "DigestException", True, "DigestException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security", "DigestException", True, "DigestException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] @@ -200,7 +193,6 @@ extensions: - ["java.security", "KeyStoreException", True, "KeyStoreException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.security", "KeyStoreSpi", True, "engineGetEntry", "(String,KeyStore$ProtectionParameter)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security", "KeyStoreSpi", True, "engineSetEntry", "(String,KeyStore$Entry,KeyStore$ProtectionParameter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.security", "MessageDigest", True, "digest", "(byte[],int,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - ["java.security", "MessageDigest", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.security", "MessageDigest", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.security", "MessageDigest", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.text.model.yml b/java/ql/lib/ext/generated/java.text.model.yml index 6418b607358a..2f384e7c1789 100644 --- a/java/ql/lib/ext/generated/java.text.model.yml +++ b/java/ql/lib/ext/generated/java.text.model.yml @@ -88,24 +88,11 @@ extensions: - ["java.text", "FieldPosition", True, "FieldPosition", "(Format$Field)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.text", "FieldPosition", True, "FieldPosition", "(Format$Field,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.text", "FieldPosition", True, "getFieldAttribute", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.text", "Format", True, "format", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.text", "Format", True, "format", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] - - ["java.text", "Format", True, "format", "(Object,StringBuffer,FieldPosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.text", "Format", True, "parseObject", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.text", "Format", True, "parseObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.text", "Format", True, "parseObject", "(String,ParsePosition)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.text", "Format", True, "parseObject", "(String,ParsePosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.text", "MessageFormat", True, "MessageFormat", "(String,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[0].ArrayElement", "Argument[1]", "taint", "df-generated"] - - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] - - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] - - ["java.text", "MessageFormat", True, "format", "(Object[],StringBuffer,FieldPosition)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.text", "MessageFormat", True, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] - ["java.text", "MessageFormat", True, "getFormats", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.text", "MessageFormat", True, "getFormatsByArgumentIndex", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.text", "MessageFormat", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.logging.model.yml b/java/ql/lib/ext/generated/java.util.logging.model.yml index 2ad409bc45eb..5ca7ed9013a6 100644 --- a/java/ql/lib/ext/generated/java.util.logging.model.yml +++ b/java/ql/lib/ext/generated/java.util.logging.model.yml @@ -37,7 +37,6 @@ extensions: - ["java.util.logging", "LogRecord", True, "getLoggerName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "getMessage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util.logging", "LogRecord", True, "getResourceBundle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "getResourceBundleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "getSourceClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "getSourceMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] @@ -47,7 +46,6 @@ extensions: - ["java.util.logging", "LogRecord", True, "setLoggerName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "setLongThreadID", "(long)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - ["java.util.logging", "LogRecord", True, "setMessage", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util.logging", "LogRecord", True, "setParameters", "(Object[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "setResourceBundle", "(ResourceBundle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "setResourceBundleName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util.logging", "LogRecord", True, "setSourceClassName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.model.yml b/java/ql/lib/ext/generated/java.util.model.yml index a8532c297ad5..e6170696fbad 100644 --- a/java/ql/lib/ext/generated/java.util.model.yml +++ b/java/ql/lib/ext/generated/java.util.model.yml @@ -4,7 +4,6 @@ extensions: pack: codeql/java-all extensible: summaryModel data: - - ["java.util", "Arrays", True, "deepToString", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] - ["java.util", "Base64$Encoder", True, "withoutPadding", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - ["java.util", "Base64", True, "getMimeEncoder", "(int,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["java.util", "Calendar$Builder", True, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] @@ -29,10 +28,6 @@ extensions: - ["java.util", "Calendar", True, "getInstance", "(TimeZone,Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.util", "Calendar", True, "getTimeZone", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "Calendar", True, "setTimeZone", "(TimeZone)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Collections", True, "asLifoQueue", "(Deque)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Collections", True, "checkedQueue", "(Queue,Class)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Collections", True, "newSetFromMap", "(Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Collections", True, "reverseOrder", "(Comparator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.util", "Comparator", True, "nullsFirst", "(Comparator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.util", "Comparator", True, "nullsLast", "(Comparator)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.util", "Comparator", True, "reversed", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] @@ -51,26 +46,6 @@ extensions: - ["java.util", "Currency", False, "getSymbol", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "DuplicateFormatFlagsException", True, "DuplicateFormatFlagsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "DuplicateFormatFlagsException", True, "getFlags", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "complementOf", "(EnumSet)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "copyOf", "(Collection)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "copyOf", "(EnumSet)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum,Enum,Enum,Enum)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "EnumSet", True, "of", "(Enum,Enum[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] - ["java.util", "EventListenerProxy", True, "EventListenerProxy", "(EventListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "EventListenerProxy", True, "getListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "FormatFlagsConversionMismatchException", True, "FormatFlagsConversionMismatchException", "(String,char)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -125,62 +100,6 @@ extensions: - ["java.util", "InputMismatchException", True, "InputMismatchException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "InvalidPropertiesFormatException", True, "InvalidPropertiesFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "InvalidPropertiesFormatException", True, "InvalidPropertiesFormatException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale$Builder", False, "addUnicodeLocaleAttribute", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale$Builder", False, "clear", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "clearExtensions", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "removeUnicodeLocaleAttribute", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setExtension", "(char,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setLanguage", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setLanguageTag", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale$Builder", False, "setLocale", "(Locale)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setRegion", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setScript", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setUnicodeLocaleKeyword", "(String,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$Builder", False, "setVariant", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale$Builder", False, "setVariant", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "LanguageRange", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "LanguageRange", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "getRange", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "mapEquivalents", "(List,Map)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "mapEquivalents", "(List,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "parse", "(String,Map)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale$LanguageRange", False, "parse", "(String,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "Locale", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale", False, "Locale", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale", False, "Locale", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale", False, "Locale", "(String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale", False, "Locale", "(String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale", False, "Locale", "(String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Locale", False, "filterTags", "(List,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "filterTags", "(List,Collection,Locale$FilteringMode)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getCountry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayCountry", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayCountry", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayCountry", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayLanguage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayLanguage", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayLanguage", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayName", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayName", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayScript", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayScript", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayScript", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayVariant", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayVariant", "(Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getDisplayVariant", "(Locale)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getExtensionKeys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getISO3Language", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getLanguage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getScript", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "getVariant", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "lookupTag", "(List,Collection)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "stripExtensions", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Locale", False, "toLanguageTag", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Map$Entry", True, "copyOf", "(Map$Entry)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - ["java.util", "Map", True, "compute", "(Object,BiFunction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "Map", True, "compute", "(Object,BiFunction)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "Map", True, "computeIfPresent", "(Object,BiFunction)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -217,19 +136,6 @@ extensions: - ["java.util", "ResourceBundle$Control", True, "toResourceName", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ResourceBundle$Control", True, "toResourceName", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ResourceBundle", True, "getBaseBundleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader,ResourceBundle$Control)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ClassLoader,ResourceBundle$Control)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ResourceBundle$Control)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Locale,ResourceBundle$Control)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "ResourceBundle", True, "getBundle", "(String,ResourceBundle$Control)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ResourceBundle", True, "getKeys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ResourceBundle", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ResourceBundle", True, "getObject", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] @@ -238,15 +144,6 @@ extensions: - ["java.util", "ResourceBundle", True, "getStringArray", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ResourceBundle", True, "handleGetObject", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ResourceBundle", True, "keySet", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Scanner", False, "delimiter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Scanner", False, "findAll", "(Pattern)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Scanner", False, "findAll", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Scanner", False, "findAll", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Scanner", False, "hasNext", "(Pattern)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Scanner", False, "hasNext", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "Scanner", False, "ioException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Scanner", False, "locale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util", "Scanner", False, "match", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "ServiceConfigurationError", True, "ServiceConfigurationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "ServiceConfigurationError", True, "ServiceConfigurationError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "ServiceConfigurationError", True, "ServiceConfigurationError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] @@ -284,8 +181,6 @@ extensions: - ["java.util", "Timer", True, "Timer", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "Timer", True, "Timer", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "TooManyListenersException", True, "TooManyListenersException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "TreeMap", True, "TreeMap", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util", "TreeSet", True, "TreeSet", "(Comparator)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "UnknownFormatConversionException", True, "UnknownFormatConversionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util", "UnknownFormatConversionException", True, "getConversion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util", "UnknownFormatFlagsException", True, "UnknownFormatFlagsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -592,8 +487,6 @@ extensions: - ["java.util", "DoubleSummaryStatistics", "getMin", "()", "summary", "df-generated"] - ["java.util", "DoubleSummaryStatistics", "getSum", "()", "summary", "df-generated"] - ["java.util", "EnumMap", "EnumMap", "(Class)", "summary", "df-generated"] - - ["java.util", "EnumSet", "allOf", "(Class)", "summary", "df-generated"] - - ["java.util", "EnumSet", "noneOf", "(Class)", "summary", "df-generated"] - ["java.util", "EnumSet", "range", "(Enum,Enum)", "summary", "df-generated"] - ["java.util", "FormatFlagsConversionMismatchException", "getConversion", "()", "summary", "df-generated"] - ["java.util", "Formatter", "Formatter", "(File)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.prefs.model.yml b/java/ql/lib/ext/generated/java.util.prefs.model.yml index bb056466a619..e87f3c13a9ab 100644 --- a/java/ql/lib/ext/generated/java.util.prefs.model.yml +++ b/java/ql/lib/ext/generated/java.util.prefs.model.yml @@ -24,22 +24,11 @@ extensions: - ["java.util.prefs", "Preferences", True, "addNodeChangeListener", "(NodeChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util.prefs", "Preferences", True, "addPreferenceChangeListener", "(PreferenceChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util.prefs", "Preferences", True, "childrenNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "get", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "get", "(String,String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "getByteArray", "(String,byte[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - ["java.util.prefs", "Preferences", True, "keys", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.prefs", "Preferences", True, "name", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.prefs", "Preferences", True, "node", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["java.util.prefs", "Preferences", True, "node", "(String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - ["java.util.prefs", "Preferences", True, "parent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "put", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "put", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "putBoolean", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "putByteArray", "(String,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "putDouble", "(String,double)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "putFloat", "(String,float)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "putInt", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["java.util.prefs", "Preferences", True, "putLong", "(String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - addsTo: pack: codeql/java-all extensible: neutralModel @@ -48,14 +37,8 @@ extensions: - ["java.util.prefs", "Preferences", "exportNode", "(OutputStream)", "summary", "df-generated"] - ["java.util.prefs", "Preferences", "exportSubtree", "(OutputStream)", "summary", "df-generated"] - ["java.util.prefs", "Preferences", "flush", "()", "summary", "df-generated"] - - ["java.util.prefs", "Preferences", "getBoolean", "(String,boolean)", "summary", "df-generated"] - - ["java.util.prefs", "Preferences", "getDouble", "(String,double)", "summary", "df-generated"] - - ["java.util.prefs", "Preferences", "getFloat", "(String,float)", "summary", "df-generated"] - - ["java.util.prefs", "Preferences", "getInt", "(String,int)", "summary", "df-generated"] - - ["java.util.prefs", "Preferences", "getLong", "(String,long)", "summary", "df-generated"] - ["java.util.prefs", "Preferences", "importPreferences", "(InputStream)", "summary", "df-generated"] - ["java.util.prefs", "Preferences", "isUserNode", "()", "summary", "df-generated"] - - ["java.util.prefs", "Preferences", "nodeExists", "(String)", "summary", "df-generated"] - ["java.util.prefs", "Preferences", "remove", "(String)", "summary", "df-generated"] - ["java.util.prefs", "Preferences", "removeNode", "()", "summary", "df-generated"] - ["java.util.prefs", "Preferences", "removeNodeChangeListener", "(NodeChangeListener)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.regex.model.yml b/java/ql/lib/ext/generated/java.util.regex.model.yml index 6796f7ba32a3..8b5680b13118 100644 --- a/java/ql/lib/ext/generated/java.util.regex.model.yml +++ b/java/ql/lib/ext/generated/java.util.regex.model.yml @@ -6,17 +6,6 @@ extensions: data: - ["java.util.regex", "MatchResult", True, "group", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.regex", "MatchResult", True, "group", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuffer,String)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuffer,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuilder,String)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendReplacement", "(StringBuilder,String)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuffer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuffer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuffer)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuilder)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuilder)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "appendTail", "(StringBuilder)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["java.util.regex", "Matcher", False, "pattern", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["java.util.regex", "Matcher", False, "quoteReplacement", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["java.util.regex", "Matcher", False, "region", "(int,int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"] - ["java.util.regex", "Matcher", False, "reset", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"] @@ -44,12 +33,10 @@ extensions: - ["java.util.regex", "MatchResult", "start", "()", "summary", "df-generated"] - ["java.util.regex", "MatchResult", "start", "(int)", "summary", "df-generated"] - ["java.util.regex", "Matcher", "end", "(String)", "summary", "df-generated"] - - ["java.util.regex", "Matcher", "find", "(int)", "summary", "df-generated"] - ["java.util.regex", "Matcher", "hasAnchoringBounds", "()", "summary", "df-generated"] - ["java.util.regex", "Matcher", "hasTransparentBounds", "()", "summary", "df-generated"] - ["java.util.regex", "Matcher", "hitEnd", "()", "summary", "df-generated"] - ["java.util.regex", "Matcher", "lookingAt", "()", "summary", "df-generated"] - - ["java.util.regex", "Matcher", "matches", "()", "summary", "df-generated"] - ["java.util.regex", "Matcher", "regionEnd", "()", "summary", "df-generated"] - ["java.util.regex", "Matcher", "regionStart", "()", "summary", "df-generated"] - ["java.util.regex", "Matcher", "requireEnd", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/java.util.stream.model.yml b/java/ql/lib/ext/generated/java.util.stream.model.yml index edd36e33405a..ce97043b8dd4 100644 --- a/java/ql/lib/ext/generated/java.util.stream.model.yml +++ b/java/ql/lib/ext/generated/java.util.stream.model.yml @@ -116,9 +116,6 @@ extensions: - ["java.util.stream", "Collectors", "groupingBy", "(Function,Collector)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "groupingByConcurrent", "(Function)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "groupingByConcurrent", "(Function,Collector)", "summary", "df-generated"] - - ["java.util.stream", "Collectors", "joining", "()", "summary", "df-generated"] - - ["java.util.stream", "Collectors", "joining", "(CharSequence)", "summary", "df-generated"] - - ["java.util.stream", "Collectors", "joining", "(CharSequence,CharSequence,CharSequence)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "maxBy", "(Comparator)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "minBy", "(Comparator)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "partitioningBy", "(Predicate)", "summary", "df-generated"] @@ -134,8 +131,6 @@ extensions: - ["java.util.stream", "Collectors", "summingLong", "(ToLongFunction)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "toConcurrentMap", "(Function,Function)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "toConcurrentMap", "(Function,Function,BinaryOperator)", "summary", "df-generated"] - - ["java.util.stream", "Collectors", "toMap", "(Function,Function)", "summary", "df-generated"] - - ["java.util.stream", "Collectors", "toMap", "(Function,Function,BinaryOperator)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "toUnmodifiableList", "()", "summary", "df-generated"] - ["java.util.stream", "Collectors", "toUnmodifiableMap", "(Function,Function)", "summary", "df-generated"] - ["java.util.stream", "Collectors", "toUnmodifiableMap", "(Function,Function,BinaryOperator)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.crypto.model.yml b/java/ql/lib/ext/generated/javax.crypto.model.yml index 84a2a5c724b8..727ba26863f2 100644 --- a/java/ql/lib/ext/generated/javax.crypto.model.yml +++ b/java/ql/lib/ext/generated/javax.crypto.model.yml @@ -6,65 +6,6 @@ extensions: data: - ["javax.crypto", "AEADBadTagException", True, "AEADBadTagException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "BadPaddingException", True, "BadPaddingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(ByteBuffer,ByteBuffer)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[])", "", "Argument[this]", "Argument[3]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "doFinal", "(byte[],int,int,byte[],int)", "", "Argument[this]", "Argument[3]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getExemptionMechanism", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getInstance", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getInstance", "(String,Provider)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getParameters", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Certificate,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameterSpec,SecureRandom)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,AlgorithmParameters,SecureRandom)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "init", "(int,Key,SecureRandom)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "unwrap", "(byte[],String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "unwrap", "(byte[],String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "unwrap", "(byte[],String,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(ByteBuffer,ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(ByteBuffer,ByteBuffer)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[3]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "update", "(byte[],int,int,byte[],int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "updateAAD", "(ByteBuffer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "updateAAD", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "updateAAD", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "wrap", "(Key)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Cipher", True, "wrap", "(Key)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["javax.crypto", "CipherInputStream", True, "CipherInputStream", "(InputStream,Cipher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "CipherInputStream", True, "CipherInputStream", "(InputStream,Cipher)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "CipherOutputStream", True, "CipherOutputStream", "(OutputStream,Cipher)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] @@ -120,7 +61,6 @@ extensions: - ["javax.crypto", "KeyGenerator", True, "init", "(AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "KeyGenerator", True, "init", "(SecureRandom)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "KeyGenerator", True, "init", "(int,SecureRandom)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto", "Mac", True, "doFinal", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["javax.crypto", "Mac", True, "doFinal", "(byte[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["javax.crypto", "Mac", True, "doFinal", "(byte[],int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"] - ["javax.crypto", "Mac", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] @@ -129,7 +69,6 @@ extensions: - ["javax.crypto", "Mac", True, "getInstance", "(String,Provider)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - ["javax.crypto", "Mac", True, "getInstance", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - ["javax.crypto", "Mac", True, "getProvider", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto", "Mac", True, "init", "(Key)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "Mac", True, "init", "(Key,AlgorithmParameterSpec)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "NoSuchPaddingException", True, "NoSuchPaddingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - ["javax.crypto", "SealedObject", True, "SealedObject", "(Serializable,Cipher)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"] diff --git a/java/ql/lib/ext/generated/javax.crypto.spec.model.yml b/java/ql/lib/ext/generated/javax.crypto.spec.model.yml index d8eab143d304..9f7408d3e369 100644 --- a/java/ql/lib/ext/generated/javax.crypto.spec.model.yml +++ b/java/ql/lib/ext/generated/javax.crypto.spec.model.yml @@ -39,10 +39,6 @@ extensions: - ["javax.crypto.spec", "PSource", True, "getAlgorithm", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["javax.crypto.spec", "RC2ParameterSpec", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - ["javax.crypto.spec", "RC5ParameterSpec", True, "getIV", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],int,int,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["javax.crypto.spec", "SecretKeySpec", True, "SecretKeySpec", "(byte[],int,int,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"] - addsTo: pack: codeql/java-all extensible: neutralModel From 52e6ea30e72fb1c8f9fce1228b5f02991f798f6b Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 13 Jan 2024 16:17:54 +0000 Subject: [PATCH 618/731] Accept more capture summary models This line is added because `FileOutputStream`'s constructor is now modeled as propagating taint, not just as a sink. | p;PrivateFlowViaPublicInterface$SPI;true;openStream;();;Argument[this];ReturnValue;taint;df-generated | --- .../utils/modelgenerator/dataflow/CaptureNeutralModels.expected | 1 - .../utils/modelgenerator/dataflow/CaptureSummaryModels.expected | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/utils/modelgenerator/dataflow/CaptureNeutralModels.expected b/java/ql/test/utils/modelgenerator/dataflow/CaptureNeutralModels.expected index 5ae6398fb6fb..df6a7bfc8544 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/CaptureNeutralModels.expected +++ b/java/ql/test/utils/modelgenerator/dataflow/CaptureNeutralModels.expected @@ -14,7 +14,6 @@ | p;Pojo;getFloatArray;();summary;df-generated | | p;Pojo;getIntValue;();summary;df-generated | | p;Pojo;getPrimitiveArray;();summary;df-generated | -| p;PrivateFlowViaPublicInterface$SPI;openStream;();summary;df-generated | | p;PrivateFlowViaPublicInterface$SPI;openStreamNone;();summary;df-generated | | p;PrivateFlowViaPublicInterface;createAnSPIWithoutTrackingFile;(File);summary;df-generated | | p;Sinks;copyFileToDirectory;(Path,Path,CopyOption[]);summary;df-generated | diff --git a/java/ql/test/utils/modelgenerator/dataflow/CaptureSummaryModels.expected b/java/ql/test/utils/modelgenerator/dataflow/CaptureSummaryModels.expected index 2654c4d94d68..50536e850d9a 100644 --- a/java/ql/test/utils/modelgenerator/dataflow/CaptureSummaryModels.expected +++ b/java/ql/test/utils/modelgenerator/dataflow/CaptureSummaryModels.expected @@ -43,4 +43,5 @@ | p;Pojo;false;getCharArray;();;Argument[this];ReturnValue;taint;df-generated | | p;Pojo;false;getValue;();;Argument[this];ReturnValue;taint;df-generated | | p;Pojo;false;setValue;(String);;Argument[0];Argument[this];taint;df-generated | +| p;PrivateFlowViaPublicInterface$SPI;true;openStream;();;Argument[this];ReturnValue;taint;df-generated | | p;PrivateFlowViaPublicInterface;true;createAnSPI;(File);;Argument[0];ReturnValue;taint;df-generated | From 776c9d9eb23e5fa4454b3aa21a09891bfd7d0f63 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 13 Jan 2024 16:19:04 +0000 Subject: [PATCH 619/731] Accept changes to top jdk apis test --- .../TopJdkApisTest/TopJdkApisTest.expected | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected index 64748f777659..d5176a7a4dec 100644 --- a/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected +++ b/java/ql/test/query-tests/Metrics/GeneratedVsManualCoverage/TopJdkApisTest/TopJdkApisTest.expected @@ -14,10 +14,10 @@ | java.time.chrono | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.time.format | 0 | 0 | 0 | 2 | 2 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.util | 0 | 0 | 86 | 64 | 150 | 0.5733333333333334 | 0.0 | 0.5733333333333334 | 0.0 | NaN | 0.4266666666666667 | -| java.util.concurrent | 0 | 0 | 9 | 9 | 18 | 0.5 | 0.0 | 0.5 | 0.0 | NaN | 0.5 | +| java.util.concurrent | 1 | 0 | 9 | 8 | 18 | 0.5555555555555556 | 0.05555555555555555 | 0.5 | 0.0 | 0.0 | 0.4444444444444444 | | java.util.concurrent.atomic | 0 | 0 | 2 | 11 | 13 | 0.15384615384615385 | 0.0 | 0.15384615384615385 | 0.0 | NaN | 0.8461538461538461 | | java.util.concurrent.locks | 0 | 0 | 0 | 2 | 2 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.util.function | 0 | 0 | 0 | 1 | 1 | 0.0 | 0.0 | 0.0 | NaN | NaN | 1.0 | | java.util.logging | 0 | 0 | 1 | 1 | 2 | 0.5 | 0.0 | 0.5 | 0.0 | NaN | 0.5 | | java.util.regex | 0 | 0 | 3 | 1 | 4 | 0.75 | 0.0 | 0.75 | 0.0 | NaN | 0.25 | -| java.util.stream | 0 | 0 | 18 | 8 | 26 | 0.6923076923076923 | 0.0 | 0.6923076923076923 | 0.0 | NaN | 0.3076923076923077 | +| java.util.stream | 1 | 0 | 18 | 7 | 26 | 0.7307692307692307 | 0.038461538461538464 | 0.6923076923076923 | 0.0 | 0.0 | 0.2692307692307692 | From 9067a337b004a074d5f94c8edea152ef77cdc0e0 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 13 Jan 2024 16:21:00 +0000 Subject: [PATCH 620/731] Test fixed by model for `BasicAttributes(String, Object)` --- .../security/CWE-090/LdapInjection.expected | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected b/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected index 69c97ca84877..caf000940746 100644 --- a/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected +++ b/java/ql/test/query-tests/security/CWE-090/LdapInjection.expected @@ -8,14 +8,20 @@ edges | LdapInjection.java:63:28:63:59 | jBadInitial : String | LdapInjection.java:65:29:65:55 | ... + ... | provenance | | | LdapInjection.java:69:28:69:52 | jBad : String | LdapInjection.java:71:84:71:103 | ... + ... | provenance | | | LdapInjection.java:69:55:69:88 | jBadDNNameAdd : String | LdapInjection.java:71:53:71:79 | ... + ... : String | provenance | | +| LdapInjection.java:71:16:71:31 | new LdapName(...) : LdapName | LdapInjection.java:71:16:71:81 | addAll(...) | provenance | | +| LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | LdapInjection.java:71:16:71:31 | new LdapName(...) : LdapName | provenance | | | LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | LdapInjection.java:71:16:71:81 | addAll(...) | provenance | | | LdapInjection.java:71:53:71:79 | ... + ... : String | LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | provenance | | | LdapInjection.java:75:28:75:52 | jBad : String | LdapInjection.java:79:47:79:66 | ... + ... | provenance | | | LdapInjection.java:75:55:75:89 | jBadDNNameAdd2 : String | LdapInjection.java:78:30:78:57 | ... + ... : String | provenance | | | LdapInjection.java:78:5:78:8 | name : LdapName | LdapInjection.java:79:40:79:43 | name : LdapName | provenance | | +| LdapInjection.java:78:5:78:8 | name [post update] : LdapName | LdapInjection.java:79:40:79:43 | name : LdapName | provenance | | | LdapInjection.java:78:17:78:58 | new LdapName(...) : LdapName | LdapInjection.java:78:17:78:68 | getRdns(...) : List | provenance | | | LdapInjection.java:78:17:78:68 | getRdns(...) : List | LdapInjection.java:78:5:78:8 | name : LdapName | provenance | | +| LdapInjection.java:78:17:78:68 | getRdns(...) : List | LdapInjection.java:78:5:78:8 | name [post update] : LdapName | provenance | | | LdapInjection.java:78:30:78:57 | ... + ... : String | LdapInjection.java:78:17:78:58 | new LdapName(...) : LdapName | provenance | | +| LdapInjection.java:79:16:79:31 | new LdapName(...) : LdapName | LdapInjection.java:79:16:79:44 | addAll(...) | provenance | | +| LdapInjection.java:79:40:79:43 | name : LdapName | LdapInjection.java:79:16:79:31 | new LdapName(...) : LdapName | provenance | | | LdapInjection.java:79:40:79:43 | name : LdapName | LdapInjection.java:79:16:79:44 | addAll(...) | provenance | | | LdapInjection.java:83:28:83:52 | jBad : String | LdapInjection.java:85:75:85:94 | ... + ... | provenance | | | LdapInjection.java:83:55:83:93 | jBadDNNameToString : String | LdapInjection.java:85:29:85:60 | ... + ... : String | provenance | | @@ -26,6 +32,8 @@ edges | LdapInjection.java:91:23:91:65 | new LdapName(...) : LdapName | LdapInjection.java:91:23:91:73 | clone(...) : Object | provenance | | | LdapInjection.java:91:23:91:73 | clone(...) : Object | LdapInjection.java:91:16:91:73 | (...)... | provenance | | | LdapInjection.java:91:36:91:64 | ... + ... : String | LdapInjection.java:91:23:91:65 | new LdapName(...) : LdapName | provenance | | +| LdapInjection.java:100:27:100:59 | jOkAttribute : String | LdapInjection.java:101:49:101:60 | jOkAttribute : String | provenance | | +| LdapInjection.java:101:49:101:60 | jOkAttribute : String | LdapInjection.java:101:29:101:75 | new BasicAttributes(...) | provenance | | | LdapInjection.java:106:31:106:55 | uBad : String | LdapInjection.java:108:67:108:86 | ... + ... | provenance | | | LdapInjection.java:106:58:106:84 | uBadDN : String | LdapInjection.java:108:20:108:39 | ... + ... | provenance | | | LdapInjection.java:112:31:112:67 | uBadFilterCreate : String | LdapInjection.java:113:72:113:87 | uBadFilterCreate : String | provenance | | @@ -154,6 +162,7 @@ nodes | LdapInjection.java:65:29:65:55 | ... + ... | semmle.label | ... + ... | | LdapInjection.java:69:28:69:52 | jBad : String | semmle.label | jBad : String | | LdapInjection.java:69:55:69:88 | jBadDNNameAdd : String | semmle.label | jBadDNNameAdd : String | +| LdapInjection.java:71:16:71:31 | new LdapName(...) : LdapName | semmle.label | new LdapName(...) : LdapName | | LdapInjection.java:71:16:71:81 | addAll(...) | semmle.label | addAll(...) | | LdapInjection.java:71:40:71:80 | new LdapName(...) : LdapName | semmle.label | new LdapName(...) : LdapName | | LdapInjection.java:71:53:71:79 | ... + ... : String | semmle.label | ... + ... : String | @@ -161,9 +170,11 @@ nodes | LdapInjection.java:75:28:75:52 | jBad : String | semmle.label | jBad : String | | LdapInjection.java:75:55:75:89 | jBadDNNameAdd2 : String | semmle.label | jBadDNNameAdd2 : String | | LdapInjection.java:78:5:78:8 | name : LdapName | semmle.label | name : LdapName | +| LdapInjection.java:78:5:78:8 | name [post update] : LdapName | semmle.label | name [post update] : LdapName | | LdapInjection.java:78:17:78:58 | new LdapName(...) : LdapName | semmle.label | new LdapName(...) : LdapName | | LdapInjection.java:78:17:78:68 | getRdns(...) : List | semmle.label | getRdns(...) : List | | LdapInjection.java:78:30:78:57 | ... + ... : String | semmle.label | ... + ... : String | +| LdapInjection.java:79:16:79:31 | new LdapName(...) : LdapName | semmle.label | new LdapName(...) : LdapName | | LdapInjection.java:79:16:79:44 | addAll(...) | semmle.label | addAll(...) | | LdapInjection.java:79:40:79:43 | name : LdapName | semmle.label | name : LdapName | | LdapInjection.java:79:47:79:66 | ... + ... | semmle.label | ... + ... | @@ -180,6 +191,9 @@ nodes | LdapInjection.java:91:23:91:73 | clone(...) : Object | semmle.label | clone(...) : Object | | LdapInjection.java:91:36:91:64 | ... + ... : String | semmle.label | ... + ... : String | | LdapInjection.java:91:76:91:95 | ... + ... | semmle.label | ... + ... | +| LdapInjection.java:100:27:100:59 | jOkAttribute : String | semmle.label | jOkAttribute : String | +| LdapInjection.java:101:29:101:75 | new BasicAttributes(...) | semmle.label | new BasicAttributes(...) | +| LdapInjection.java:101:49:101:60 | jOkAttribute : String | semmle.label | jOkAttribute : String | | LdapInjection.java:106:31:106:55 | uBad : String | semmle.label | uBad : String | | LdapInjection.java:106:58:106:84 | uBadDN : String | semmle.label | uBadDN : String | | LdapInjection.java:108:20:108:39 | ... + ... | semmle.label | ... + ... | @@ -348,6 +362,7 @@ subpaths | LdapInjection.java:85:75:85:94 | ... + ... | LdapInjection.java:83:28:83:52 | jBad : String | LdapInjection.java:85:75:85:94 | ... + ... | This LDAP query depends on a $@. | LdapInjection.java:83:28:83:52 | jBad | user-provided value | | LdapInjection.java:91:16:91:73 | (...)... | LdapInjection.java:89:55:89:90 | jBadDNNameClone : String | LdapInjection.java:91:16:91:73 | (...)... | This LDAP query depends on a $@. | LdapInjection.java:89:55:89:90 | jBadDNNameClone | user-provided value | | LdapInjection.java:91:76:91:95 | ... + ... | LdapInjection.java:89:28:89:52 | jBad : String | LdapInjection.java:91:76:91:95 | ... + ... | This LDAP query depends on a $@. | LdapInjection.java:89:28:89:52 | jBad | user-provided value | +| LdapInjection.java:101:29:101:75 | new BasicAttributes(...) | LdapInjection.java:100:27:100:59 | jOkAttribute : String | LdapInjection.java:101:29:101:75 | new BasicAttributes(...) | This LDAP query depends on a $@. | LdapInjection.java:100:27:100:59 | jOkAttribute | user-provided value | | LdapInjection.java:108:20:108:39 | ... + ... | LdapInjection.java:106:58:106:84 | uBadDN : String | LdapInjection.java:108:20:108:39 | ... + ... | This LDAP query depends on a $@. | LdapInjection.java:106:58:106:84 | uBadDN | user-provided value | | LdapInjection.java:108:67:108:86 | ... + ... | LdapInjection.java:106:31:106:55 | uBad : String | LdapInjection.java:108:67:108:86 | ... + ... | This LDAP query depends on a $@. | LdapInjection.java:106:31:106:55 | uBad | user-provided value | | LdapInjection.java:113:58:113:88 | create(...) | LdapInjection.java:112:31:112:67 | uBadFilterCreate : String | LdapInjection.java:113:58:113:88 | create(...) | This LDAP query depends on a $@. | LdapInjection.java:112:31:112:67 | uBadFilterCreate | user-provided value | From 2d24fe011bfc70b5518cd69b9b24bb79bd3c1285 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Sat, 13 Jan 2024 16:35:39 +0000 Subject: [PATCH 621/731] Accept that lots of sinks are now summaries as well --- .../modeleditor/ApplicationModeEndpoints.expected | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected b/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected index 4d32cb7e922d..d6ee3584afd5 100644 --- a/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected +++ b/java/ql/test/utils/modeleditor/ApplicationModeEndpoints.expected @@ -1,13 +1,23 @@ | com/github/codeql/test/NonPublicClass.java:5:5:5:28 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | +| com/github/codeql/test/NonPublicClass.java:5:5:5:28 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:8:5:8:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicClass.java:8:5:8:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:12:5:12:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicClass.java:12:5:12:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:16:5:16:45 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicClass.java:16:5:16:45 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:16:24:16:44 | get(...) | java.nio.file | Paths | get | (String,String[]) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:20:5:20:68 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | sink | source | -| com/github/codeql/test/PublicClass.java:20:24:20:47 | getDefault(...) | java.nio.file | FileSystems | getDefault | () | false | rt.jar | | | source | +| com/github/codeql/test/PublicClass.java:20:5:20:68 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | summary | source | +| com/github/codeql/test/PublicClass.java:20:24:20:47 | getDefault(...) | java.nio.file | FileSystems | getDefault | () | true | rt.jar | | neutral | source | | com/github/codeql/test/PublicClass.java:20:24:20:67 | getPath(...) | java.nio.file | FileSystem | getPath | (String,String[]) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicClass.java:24:5:24:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicClass.java:24:5:24:27 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicGenericClass.java:7:5:7:27 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicGenericClass.java:7:5:7:27 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicGenericClass.java:11:5:11:27 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicGenericClass.java:11:5:11:27 | println(...) | java.io | PrintStream | println | (Object) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicGenericInterface.java:8:7:8:29 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicGenericInterface.java:8:7:8:29 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | summary | source | | com/github/codeql/test/PublicInterface.java:7:7:7:29 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | sink | source | +| com/github/codeql/test/PublicInterface.java:7:7:7:29 | println(...) | java.io | PrintStream | println | (String) | true | rt.jar | | summary | source | From fa614df3f4c5c506bb6a7f0c4698c4dd965aa397 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 6 Dec 2023 17:09:08 +0000 Subject: [PATCH 622/731] Tests fixed by model for `CharBuffer.wrap(char[])` --- .../frameworks/apache-commons-lang3/StrBuilderTest.java | 6 +++--- .../frameworks/apache-commons-lang3/StrBuilderTextTest.java | 6 +++--- .../apache-commons-lang3/TextStringBuilderTest.java | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java index 35a118f8048d..fe197b4f264d 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTest.java @@ -18,8 +18,8 @@ void test() throws Exception { StrBuilder sb1 = new StrBuilder(); sb1.append(taint().toCharArray()); sink(sb1.toString()); // $hasTaintFlow StrBuilder sb2 = new StrBuilder(); sb2.append(taint().toCharArray(), 0, 0); sink(sb2.toString()); // $hasTaintFlow - StrBuilder sb3 = new StrBuilder(); sb3.append(CharBuffer.wrap(taint().toCharArray())); sink(sb3.toString()); // $ MISSING: hasTaintFlow - StrBuilder sb4 = new StrBuilder(); sb4.append(CharBuffer.wrap(taint().toCharArray()), 0, 0); sink(sb4.toString()); // $ MISSING: hasTaintFlow + StrBuilder sb3 = new StrBuilder(); sb3.append(CharBuffer.wrap(taint().toCharArray())); sink(sb3.toString()); // $ hasTaintFlow + StrBuilder sb4 = new StrBuilder(); sb4.append(CharBuffer.wrap(taint().toCharArray()), 0, 0); sink(sb4.toString()); // $ hasTaintFlow StrBuilder sb5 = new StrBuilder(); sb5.append((CharSequence)taint()); sink(sb5.toString()); // $hasTaintFlow StrBuilder sb6 = new StrBuilder(); sb6.append((CharSequence)taint(), 0, 0); sink(sb6.toString()); // $hasTaintFlow StrBuilder sb7 = new StrBuilder(); sb7.append((Object)taint()); sink(sb7.toString()); // $hasTaintFlow @@ -206,4 +206,4 @@ void test() throws Exception { sink(fluentAllMethodsTest2); // $hasTaintFlow } -} \ No newline at end of file +} diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java index 431716470043..b3aa3ed9997b 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/StrBuilderTextTest.java @@ -18,8 +18,8 @@ void test() throws Exception { StrBuilder sb1 = new StrBuilder(); sb1.append(taint().toCharArray()); sink(sb1.toString()); // $hasTaintFlow StrBuilder sb2 = new StrBuilder(); sb2.append(taint().toCharArray(), 0, 0); sink(sb2.toString()); // $hasTaintFlow - StrBuilder sb3 = new StrBuilder(); sb3.append(CharBuffer.wrap(taint().toCharArray())); sink(sb3.toString()); // $ MISSING: hasTaintFlow - StrBuilder sb4 = new StrBuilder(); sb4.append(CharBuffer.wrap(taint().toCharArray()), 0, 0); sink(sb4.toString()); // $ MISSING: hasTaintFlow + StrBuilder sb3 = new StrBuilder(); sb3.append(CharBuffer.wrap(taint().toCharArray())); sink(sb3.toString()); // $ hasTaintFlow + StrBuilder sb4 = new StrBuilder(); sb4.append(CharBuffer.wrap(taint().toCharArray()), 0, 0); sink(sb4.toString()); // $ hasTaintFlow StrBuilder sb5 = new StrBuilder(); sb5.append((CharSequence)taint()); sink(sb5.toString()); // $hasTaintFlow StrBuilder sb6 = new StrBuilder(); sb6.append((CharSequence)taint(), 0, 0); sink(sb6.toString()); // $hasTaintFlow StrBuilder sb7 = new StrBuilder(); sb7.append((Object)taint()); sink(sb7.toString()); // $hasTaintFlow @@ -206,4 +206,4 @@ void test() throws Exception { sink(fluentAllMethodsTest2); // $hasTaintFlow } -} \ No newline at end of file +} diff --git a/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java b/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java index 41941cca223b..5a7c66c75260 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java +++ b/java/ql/test/library-tests/frameworks/apache-commons-lang3/TextStringBuilderTest.java @@ -19,8 +19,8 @@ void test() throws Exception { TextStringBuilder sb1 = new TextStringBuilder(); sb1.append(taint().toCharArray()); sink(sb1.toString()); // $hasTaintFlow TextStringBuilder sb2 = new TextStringBuilder(); sb2.append(taint().toCharArray(), 0, 0); sink(sb2.toString()); // $hasTaintFlow - TextStringBuilder sb3 = new TextStringBuilder(); sb3.append(CharBuffer.wrap(taint().toCharArray())); sink(sb3.toString()); // $ MISSING: hasTaintFlow - TextStringBuilder sb4 = new TextStringBuilder(); sb4.append(CharBuffer.wrap(taint().toCharArray()), 0, 0); sink(sb4.toString()); // $ MISSING: hasTaintFlow + TextStringBuilder sb3 = new TextStringBuilder(); sb3.append(CharBuffer.wrap(taint().toCharArray())); sink(sb3.toString()); // $ hasTaintFlow + TextStringBuilder sb4 = new TextStringBuilder(); sb4.append(CharBuffer.wrap(taint().toCharArray()), 0, 0); sink(sb4.toString()); // $ hasTaintFlow TextStringBuilder sb5 = new TextStringBuilder(); sb5.append((CharSequence)taint()); sink(sb5.toString()); // $hasTaintFlow TextStringBuilder sb6 = new TextStringBuilder(); sb6.append((CharSequence)taint(), 0, 0); sink(sb6.toString()); // $hasTaintFlow TextStringBuilder sb7 = new TextStringBuilder(); sb7.append((Object)taint()); sink(sb7.toString()); // $hasTaintFlow @@ -207,4 +207,4 @@ void test() throws Exception { sink(fluentAllMethodsTest2); // $hasTaintFlow } -} \ No newline at end of file +} From a5979e209ae332f03c2d0e2f66c8f941d12022fc Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Tue, 19 Mar 2024 13:53:10 +0000 Subject: [PATCH 623/731] Add change note --- .../lib/change-notes/2024-03-19-many-generated-jdk-models.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md diff --git a/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md b/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md new file mode 100644 index 000000000000..c4abc9a03851 --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* About 15,000 summary models and neutral summary models for the JDK that were generated using data flow have been added. This may lead to new results being reported. From e3fb40a842aa64a4a44a5f5f562a02d27ef7d126 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 20 Mar 2024 14:49:22 +0000 Subject: [PATCH 624/731] Adjust change note --- .../ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md b/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md index c4abc9a03851..271e313d6d0f 100644 --- a/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md +++ b/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* About 15,000 summary models and neutral summary models for the JDK that were generated using data flow have been added. This may lead to new results being reported. +* About 15,000 summary models and neutral summary models for the JDK that were generated using data flow have been added. This may lead to new alerts being reported. From fdafaa2ff4e7226ea222df27ebf2271497f9aae9 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Mon, 25 Mar 2024 15:09:06 +0000 Subject: [PATCH 625/731] Change note: update numbers of models added --- .../ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md b/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md index 271e313d6d0f..72279ea89831 100644 --- a/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md +++ b/java/ql/lib/change-notes/2024-03-19-many-generated-jdk-models.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* About 15,000 summary models and neutral summary models for the JDK that were generated using data flow have been added. This may lead to new alerts being reported. +* About 6,700 summary models and 6,800 neutral summary models for the JDK that were generated using data flow have been added. This may lead to new alerts being reported. From ec97d9a3043ac34e3aae2951b261fa0d978955e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Mon, 1 Apr 2024 13:46:57 +0000 Subject: [PATCH 626/731] Release preparation for version 2.17.0 --- cpp/ql/lib/CHANGELOG.md | 15 +++++++++++++++ .../2024-03-15-switches-in-guard-conditions.md | 4 ---- .../2024-03-19-ir-temp-extended-destructors.md | 4 ---- ...3-19-predicates-for-switches-as-guards-2.md | 5 ----- ...-03-19-predicates-for-switches-as-guards.md | 5 ----- .../2024-03-26-taint-inheriting-content.md | 4 ---- cpp/ql/lib/change-notes/released/0.12.10.md | 14 ++++++++++++++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 16 ++++++++++++++++ .../2024-03-05-type-confusion-query.md | 4 ---- .../2024-03-13-glib-alloc-and-dealloc.md | 4 ---- ...4-03-18-uninitialized-local-path-problem.md | 4 ---- ...4-03-20-missing-check-scanf-path-problem.md | 4 ---- .../src/change-notes/2024-03-22-boost-ssl.md | 4 ---- cpp/ql/src/change-notes/released/0.9.9.md | 15 +++++++++++++++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../lib/change-notes/released/1.7.13.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../src/change-notes/released/1.7.13.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 18 ++++++++++++++++++ .../2024-03-04-deprecate-dotnet-and-cil.md | 4 ---- ...-03-04-fixed-system.io.textreader-models.md | 4 ---- ...5-new-commandargs-and-environment-models.md | 5 ----- .../2024-03-07-remove-cil-extractor.md | 4 ---- ...ystem.net.http.httprequestmessage-models.md | 4 ---- .../2024-03-11-csharp12-dotnet8.md | 4 ---- .../2024-03-11-registry-sources.md | 4 ---- .../2024-03-13-system.io-models.md | 4 ---- .../2024-03-14-dapper-source-models.md | 4 ---- csharp/ql/lib/change-notes/released/0.9.0.md | 17 +++++++++++++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 11 +++++++++++ .../2024-03-06-remove-default-local-sources.md | 5 ----- .../2024-03-11-remove-stored-query-variants.md | 5 ----- .../2024-03-21-change-compareto-signature.md | 5 ----- csharp/ql/src/change-notes/released/0.8.13.md | 10 ++++++++++ csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.12.md | 3 +++ .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 7 +++++++ .../change-notes/2024-03-04-macaron-sources.md | 4 ---- .../0.7.13.md} | 8 +++++--- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 11 +++++++++++ .../2024-03-05-squirrel-sqli-sinks.md | 4 ---- ...03-14-hardcoded-credentials-more-sources.md | 4 ---- .../0.7.13.md} | 12 +++++++++--- go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ .../src/change-notes/released/0.0.20.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 13 +++++++++++++ ...3-11-add-parcelfiledescriptor-open-model.md | 4 ---- .../ql/lib/change-notes/2024-03-21-env-vars.md | 4 ---- .../2024-03-22-anonymous-variables.md | 5 ----- .../2024-03-26-url-models-precision.md | 4 ---- java/ql/lib/change-notes/released/0.9.0.md | 12 ++++++++++++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 15 +++++++++++++++ .../2024-03-06-url-forward-query.md | 4 ---- .../2024-03-12-request-sanitizers.md | 4 ---- ...03-24-sensitive-log-whitelist-tokenimage.md | 4 ---- .../2024-03-27-MissingEnumInSwitch.md | 4 ---- java/ql/src/change-notes/released/0.8.13.md | 14 ++++++++++++++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 6 ++++++ .../change-notes/2024-02-02-typescript-5-4.md | 4 ---- .../ql/lib/change-notes/released/0.8.13.md | 5 +++++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 10 ++++++++++ .../2024-03-07-lift-cg-restriction.md | 4 ---- .../2024-03-21-target-blank-precision.md | 4 ---- .../ql/src/change-notes/released/0.8.13.md | 9 +++++++++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ .../change-notes/released/0.7.13.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 4 ++++ python/ql/lib/change-notes/released/0.11.13.md | 3 +++ python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ++++ python/ql/src/change-notes/released/0.9.13.md | 3 +++ python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 10 ++++++++++ .../change-notes/2024-02-27-process-spawn.md | 4 ---- .../2024-03-01-typhoeus-request.md | 4 ---- .../2024-03-08-activerecord-from.md | 4 ---- .../2024-03-14-actiondispatch-uploadedfile.md | 4 ---- .../2024-03-19-activerecord-scopes.md | 4 ---- ruby/ql/lib/change-notes/released/0.8.13.md | 9 +++++++++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ++++ ruby/ql/src/change-notes/released/0.8.13.md | 3 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ .../change-notes/released/0.1.13.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 6 ++++++ .../0.2.4.md} | 7 ++++--- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.13.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.12.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.13.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.13.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.12.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ .../tutorial/change-notes/released/0.2.13.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../change-notes/released/0.2.13.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.13.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.13.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.13.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 7 +++++++ .../0.3.13.md} | 7 ++++--- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.13.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 173 files changed, 478 insertions(+), 249 deletions(-) delete mode 100644 cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md create mode 100644 cpp/ql/lib/change-notes/released/0.12.10.md delete mode 100644 cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md delete mode 100644 cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md delete mode 100644 cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md delete mode 100644 cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md delete mode 100644 cpp/ql/src/change-notes/2024-03-22-boost-ssl.md create mode 100644 cpp/ql/src/change-notes/released/0.9.9.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-11-registry-sources.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-13-system.io-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md create mode 100644 csharp/ql/lib/change-notes/released/0.9.0.md delete mode 100644 csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md delete mode 100644 csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md delete mode 100644 csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md create mode 100644 csharp/ql/src/change-notes/released/0.8.13.md create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.12.md delete mode 100644 go/ql/lib/change-notes/2024-03-04-macaron-sources.md rename go/ql/lib/change-notes/{2024-03-20-dependecy-retrieval-improvement.md => released/0.7.13.md} (63%) delete mode 100644 go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md delete mode 100644 go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md rename go/ql/src/change-notes/{2024-03-07-uncontrolled-allocation-size.md => released/0.7.13.md} (53%) create mode 100644 java/ql/automodel/src/change-notes/released/0.0.20.md delete mode 100644 java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md delete mode 100644 java/ql/lib/change-notes/2024-03-21-env-vars.md delete mode 100644 java/ql/lib/change-notes/2024-03-22-anonymous-variables.md delete mode 100644 java/ql/lib/change-notes/2024-03-26-url-models-precision.md create mode 100644 java/ql/lib/change-notes/released/0.9.0.md delete mode 100644 java/ql/src/change-notes/2024-03-06-url-forward-query.md delete mode 100644 java/ql/src/change-notes/2024-03-12-request-sanitizers.md delete mode 100644 java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md delete mode 100644 java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md create mode 100644 java/ql/src/change-notes/released/0.8.13.md delete mode 100644 javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md create mode 100644 javascript/ql/lib/change-notes/released/0.8.13.md delete mode 100644 javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md delete mode 100644 javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md create mode 100644 javascript/ql/src/change-notes/released/0.8.13.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.13.md create mode 100644 python/ql/lib/change-notes/released/0.11.13.md create mode 100644 python/ql/src/change-notes/released/0.9.13.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-27-process-spawn.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md create mode 100644 ruby/ql/lib/change-notes/released/0.8.13.md create mode 100644 ruby/ql/src/change-notes/released/0.8.13.md create mode 100644 shared/controlflow/change-notes/released/0.1.13.md rename shared/dataflow/change-notes/{2024-02-28-hidden-subpaths.md => released/0.2.4.md} (90%) create mode 100644 shared/mad/change-notes/released/0.2.13.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.12.md create mode 100644 shared/regex/change-notes/released/0.2.13.md create mode 100644 shared/ssa/change-notes/released/0.2.13.md create mode 100644 shared/threat-models/change-notes/released/0.0.12.md create mode 100644 shared/tutorial/change-notes/released/0.2.13.md create mode 100644 shared/typetracking/change-notes/released/0.2.13.md create mode 100644 shared/typos/change-notes/released/0.2.13.md create mode 100644 shared/util/change-notes/released/0.2.13.md create mode 100644 shared/yaml/change-notes/released/0.2.13.md rename swift/ql/lib/change-notes/{2024-03-28-swift-5.10.md => released/0.3.13.md} (59%) create mode 100644 swift/ql/src/change-notes/released/0.3.13.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 4b69a1d5b361..0ca4b5393255 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.12.10 + +### New Features + +* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. +* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. + +### Minor Analysis Improvements + +* Added destructors for temporary objects with extended lifetimes to the intermediate representation. + ## 0.12.9 No user-facing changes. diff --git a/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md b/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md deleted file mode 100644 index cf0b920e29dc..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md b/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md deleted file mode 100644 index 6def83033361..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added destructors for temporary objects with extended lifetimes to the intermediate representation. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md deleted file mode 100644 index 88b4048f8cd1..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: feature ---- -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md deleted file mode 100644 index 3dde8805599f..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: feature ---- -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md b/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md deleted file mode 100644 index 759386e461f6..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/0.12.10.md b/cpp/ql/lib/change-notes/released/0.12.10.md new file mode 100644 index 000000000000..64d91af2118c --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.12.10.md @@ -0,0 +1,14 @@ +## 0.12.10 + +### New Features + +* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. +* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. + +### Minor Analysis Improvements + +* Added destructors for temporary objects with extended lifetimes to the intermediate representation. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index dce1e02b6465..bd659eb114fa 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.9 +lastReleaseVersion: 0.12.10 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index eebc47c089bf..f8358ae72df4 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.10-dev +version: 0.12.10 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 52c46f65267e..01ec26e694f9 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.9.9 + +### New Queries + +* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. + +### Query Metadata Changes + +* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. + +### Minor Analysis Improvements + +* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. +* Added models for `GLib` allocation and deallocation functions. + ## 0.9.8 No user-facing changes. diff --git a/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md b/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md deleted file mode 100644 index f96a4684b769..000000000000 --- a/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md b/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md deleted file mode 100644 index bc9082285d41..000000000000 --- a/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for `GLib` allocation and deallocation functions. diff --git a/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md b/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md deleted file mode 100644 index 14a8c2e7ce74..000000000000 --- a/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md b/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md deleted file mode 100644 index 12a185add1ea..000000000000 --- a/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md b/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md deleted file mode 100644 index d4a4e0a73073..000000000000 --- a/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: queryMetadata ---- -* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. diff --git a/cpp/ql/src/change-notes/released/0.9.9.md b/cpp/ql/src/change-notes/released/0.9.9.md new file mode 100644 index 000000000000..46f120c28d76 --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.9.9.md @@ -0,0 +1,15 @@ +## 0.9.9 + +### New Queries + +* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. + +### Query Metadata Changes + +* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. + +### Minor Analysis Improvements + +* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. +* Added models for `GLib` allocation and deallocation functions. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 9ca6c6f26786..aabed7c396b7 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.8 +lastReleaseVersion: 0.9.9 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index ce202c1b85d1..5d9a5252c00d 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.9-dev +version: 0.9.9 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index bea6df22685c..50143af24fbb 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.13 + +No user-facing changes. + ## 1.7.12 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md new file mode 100644 index 000000000000..e2656ce672c1 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md @@ -0,0 +1,3 @@ +## 1.7.13 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 6d169efe9202..e5f93542dfcc 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.12 +lastReleaseVersion: 1.7.13 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index f3bf8992f7d4..f12c8e2c95e5 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.13-dev +version: 1.7.13 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index bea6df22685c..50143af24fbb 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.13 + +No user-facing changes. + ## 1.7.12 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md new file mode 100644 index 000000000000..e2656ce672c1 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md @@ -0,0 +1,3 @@ +## 1.7.13 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 6d169efe9202..e5f93542dfcc 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.12 +lastReleaseVersion: 1.7.13 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index a732080cfb41..74444203f849 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.13-dev +version: 1.7.13 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 37d2c804be83..27133addc5c3 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 0.9.0 + +### Breaking Changes + +* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. +* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. + +### Minor Analysis Improvements + +* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. +* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. +* Support for C# 12 / .NET8. +* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. +* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. +* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. +* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. +* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. + ## 0.8.12 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md b/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md deleted file mode 100644 index fea31bb8bbb2..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: breaking ---- -* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. diff --git a/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md b/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md deleted file mode 100644 index a32f8a7c22c7..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. diff --git a/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md b/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md deleted file mode 100644 index 0bee733157ce..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. -* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. diff --git a/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md b/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md deleted file mode 100644 index 36be2372b4ec..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: breaking ---- -* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. diff --git a/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md b/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md deleted file mode 100644 index 2ac3a1059c6b..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md b/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md deleted file mode 100644 index 7111e8966d68..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Support for C# 12 / .NET8. diff --git a/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md b/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md deleted file mode 100644 index 1d1050491855..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. diff --git a/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md b/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md deleted file mode 100644 index 84db6a663aea..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. diff --git a/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md b/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md deleted file mode 100644 index 204ae7db3ae9..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. diff --git a/csharp/ql/lib/change-notes/released/0.9.0.md b/csharp/ql/lib/change-notes/released/0.9.0.md new file mode 100644 index 000000000000..32e8e35d76d1 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.9.0.md @@ -0,0 +1,17 @@ +## 0.9.0 + +### Breaking Changes + +* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. +* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. + +### Minor Analysis Improvements + +* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. +* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. +* Support for C# 12 / .NET8. +* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. +* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. +* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. +* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. +* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index af4e83c549e4..8b9fc185202d 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.9.0 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d389b9e5604..bd9558fa2494 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.13-dev +version: 0.9.0 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index df97b469252a..bbd7f8bc147e 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.13 + +### Major Analysis Improvements + +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. + +### Minor Analysis Improvements + +* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. +* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. + ## 0.8.12 No user-facing changes. diff --git a/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md b/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md deleted file mode 100644 index 19494571ad15..000000000000 --- a/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. - diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md deleted file mode 100644 index 3ca0b14f7b2b..000000000000 --- a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: majorAnalysis ---- -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. - diff --git a/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md b/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md deleted file mode 100644 index 026321ea9af2..000000000000 --- a/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. - diff --git a/csharp/ql/src/change-notes/released/0.8.13.md b/csharp/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..e534c66fc8ed --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,10 @@ +## 0.8.13 + +### Major Analysis Improvements + +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. + +### Minor Analysis Improvements + +* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. +* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index e9d1d526a81b..609c625fe5a3 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.13-dev +version: 0.8.13 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index d9dd6b6f2e25..83a42fb05515 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.12.md b/go/ql/consistency-queries/change-notes/released/0.0.12.md new file mode 100644 index 000000000000..0e206033bc47 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index e679dc420925..997fb8da83cd 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 3c398a7cf84f..fbd2978d4389 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.12-dev +version: 0.0.12 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index bc6537af817a..0fa4dfe0ec80 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.7.13 + +### Minor Analysis Improvements + +* The `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. +* Added dataflow sources for the package `gopkg.in/macaron.v1`. + ## 0.7.12 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-03-04-macaron-sources.md b/go/ql/lib/change-notes/2024-03-04-macaron-sources.md deleted file mode 100644 index 72ea242510de..000000000000 --- a/go/ql/lib/change-notes/2024-03-04-macaron-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added dataflow sources for the package `gopkg.in/macaron.v1`. diff --git a/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md b/go/ql/lib/change-notes/released/0.7.13.md similarity index 63% rename from go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md rename to go/ql/lib/change-notes/released/0.7.13.md index 42fc258f9735..c6fab4935a1f 100644 --- a/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md +++ b/go/ql/lib/change-notes/released/0.7.13.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.7.13 + +### Minor Analysis Improvements + * The `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. +* Added dataflow sources for the package `gopkg.in/macaron.v1`. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 8afa417865a1..8a077216acc0 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.12 +lastReleaseVersion: 0.7.13 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 8cc40e77dec2..2c1fbe254faa 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.13-dev +version: 0.7.13 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 497f82e86798..2bee579db9cb 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.7.13 + +### New Queries + +* The query "Slice memory allocation with excessive size value" (`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally [submitted as an experimental query by @Malayke](https://github.com/github/codeql/pull/15130). + +### Minor Analysis Improvements + +* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. +* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. + ## 0.7.12 No user-facing changes. diff --git a/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md b/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md deleted file mode 100644 index 0b6a78df9f93..000000000000 --- a/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. diff --git a/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md b/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md deleted file mode 100644 index ad6f712958e6..000000000000 --- a/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. diff --git a/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md b/go/ql/src/change-notes/released/0.7.13.md similarity index 53% rename from go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md rename to go/ql/src/change-notes/released/0.7.13.md index 663932005eb1..e11b39869790 100644 --- a/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md +++ b/go/ql/src/change-notes/released/0.7.13.md @@ -1,4 +1,10 @@ ---- -category: newQuery ---- +## 0.7.13 + +### New Queries + * The query "Slice memory allocation with excessive size value" (`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally [submitted as an experimental query by @Malayke](https://github.com/github/codeql/pull/15130). + +### Minor Analysis Improvements + +* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. +* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 8afa417865a1..8a077216acc0 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.12 +lastReleaseVersion: 0.7.13 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 080d257b8d02..2ab9616891b2 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.13-dev +version: 0.7.13 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 0205da54adf8..af83bbb07001 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.20 + +No user-facing changes. + ## 0.0.19 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.20.md b/java/ql/automodel/src/change-notes/released/0.0.20.md new file mode 100644 index 000000000000..98daf20a59a1 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.20.md @@ -0,0 +1,3 @@ +## 0.0.20 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index f406319f372e..d2e86745bcaa 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.19 +lastReleaseVersion: 0.0.20 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 1c22e00eb0e2..c4b5940f928b 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.20-dev +version: 0.0.20 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 5f8d993294ad..36c5ca2a6a6a 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,16 @@ +## 0.9.0 + +### Breaking Changes + +* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. + +### Minor Analysis Improvements + +* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. +* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. +* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. +* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. + ## 0.8.12 No user-facing changes. diff --git a/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md b/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md deleted file mode 100644 index 31f76712828e..000000000000 --- a/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. diff --git a/java/ql/lib/change-notes/2024-03-21-env-vars.md b/java/ql/lib/change-notes/2024-03-21-env-vars.md deleted file mode 100644 index 9306a814a7c9..000000000000 --- a/java/ql/lib/change-notes/2024-03-21-env-vars.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: breaking ---- -* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. diff --git a/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md b/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md deleted file mode 100644 index 029d3dfbff42..000000000000 --- a/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. -* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. diff --git a/java/ql/lib/change-notes/2024-03-26-url-models-precision.md b/java/ql/lib/change-notes/2024-03-26-url-models-precision.md deleted file mode 100644 index d6fb561e725f..000000000000 --- a/java/ql/lib/change-notes/2024-03-26-url-models-precision.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. diff --git a/java/ql/lib/change-notes/released/0.9.0.md b/java/ql/lib/change-notes/released/0.9.0.md new file mode 100644 index 000000000000..ad20fb98cbfb --- /dev/null +++ b/java/ql/lib/change-notes/released/0.9.0.md @@ -0,0 +1,12 @@ +## 0.9.0 + +### Breaking Changes + +* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. + +### Minor Analysis Improvements + +* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. +* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. +* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. +* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index af4e83c549e4..8b9fc185202d 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.9.0 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index c3a0a9476bb8..768e57ad9c68 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.13-dev +version: 0.9.0 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 73ab2688c982..4b758396b916 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.8.13 + +### New Queries + +* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). + +### Major Analysis Improvements + +* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. + +### Minor Analysis Improvements + +* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. +* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. + ## 0.8.12 No user-facing changes. diff --git a/java/ql/src/change-notes/2024-03-06-url-forward-query.md b/java/ql/src/change-notes/2024-03-06-url-forward-query.md deleted file mode 100644 index 46028bda4f21..000000000000 --- a/java/ql/src/change-notes/2024-03-06-url-forward-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). diff --git a/java/ql/src/change-notes/2024-03-12-request-sanitizers.md b/java/ql/src/change-notes/2024-03-12-request-sanitizers.md deleted file mode 100644 index 08229d6d7d0d..000000000000 --- a/java/ql/src/change-notes/2024-03-12-request-sanitizers.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md deleted file mode 100644 index 017e5abd7eee..000000000000 --- a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. diff --git a/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md b/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md deleted file mode 100644 index b1531dab6558..000000000000 --- a/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. diff --git a/java/ql/src/change-notes/released/0.8.13.md b/java/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..22dba4fa4fa6 --- /dev/null +++ b/java/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,14 @@ +## 0.8.13 + +### New Queries + +* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). + +### Major Analysis Improvements + +* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. + +### Minor Analysis Improvements + +* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. +* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index ab853297ba95..d67193843bea 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.13-dev +version: 0.8.13 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 2bdc2e4152a0..4d66cfc9f6c5 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.13 + +### Major Analysis Improvements + +* Added support for TypeScript 5.4. + ## 0.8.12 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md b/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md deleted file mode 100644 index 836719b5d6bf..000000000000 --- a/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Added support for TypeScript 5.4. \ No newline at end of file diff --git a/javascript/ql/lib/change-notes/released/0.8.13.md b/javascript/ql/lib/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..bfa4a62d5ae5 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.13.md @@ -0,0 +1,5 @@ +## 0.8.13 + +### Major Analysis Improvements + +* Added support for TypeScript 5.4. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index fd7d54764024..1ed74009ef0c 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.13-dev +version: 0.8.13 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 43cbc8facf85..2ae12bca4841 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.13 + +### Query Metadata Changes + +* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. + +### Minor Analysis Improvements + +* The call graph has been improved, leading to more alerts for data flow based queries. + ## 0.8.12 No user-facing changes. diff --git a/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md b/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md deleted file mode 100644 index 4d591aaf9a27..000000000000 --- a/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The call graph has been improved, leading to more alerts for data flow based queries. diff --git a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md deleted file mode 100644 index 5bcb0ba74635..000000000000 --- a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: queryMetadata ---- -* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. \ No newline at end of file diff --git a/javascript/ql/src/change-notes/released/0.8.13.md b/javascript/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..282e759a49e4 --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,9 @@ +## 0.8.13 + +### Query Metadata Changes + +* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. + +### Minor Analysis Improvements + +* The call graph has been improved, leading to more alerts for data flow based queries. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 6967bcbff044..49576a207cd5 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.13-dev +version: 0.8.13 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index c61f0b26d002..3b1863cfbf15 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.13 + +No user-facing changes. + ## 0.7.12 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.13.md b/misc/suite-helpers/change-notes/released/0.7.13.md new file mode 100644 index 000000000000..fac5f02103fa --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.13.md @@ -0,0 +1,3 @@ +## 0.7.13 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 8afa417865a1..8a077216acc0 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.12 +lastReleaseVersion: 0.7.13 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index c366cba2c912..94ac367a7557 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.13-dev +version: 0.7.13 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 966356feed28..645b686ac8c1 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.13 + +No user-facing changes. + ## 0.11.12 No user-facing changes. diff --git a/python/ql/lib/change-notes/released/0.11.13.md b/python/ql/lib/change-notes/released/0.11.13.md new file mode 100644 index 000000000000..e8bde4caf9fd --- /dev/null +++ b/python/ql/lib/change-notes/released/0.11.13.md @@ -0,0 +1,3 @@ +## 0.11.13 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 28f7725cf851..387883efdfb3 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.12 +lastReleaseVersion: 0.11.13 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index f2357da6c2c9..c150a37790c2 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.13-dev +version: 0.11.13 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index d8737a310b3b..53ed161fecbf 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.13 + +No user-facing changes. + ## 0.9.12 No user-facing changes. diff --git a/python/ql/src/change-notes/released/0.9.13.md b/python/ql/src/change-notes/released/0.9.13.md new file mode 100644 index 000000000000..e188021618c3 --- /dev/null +++ b/python/ql/src/change-notes/released/0.9.13.md @@ -0,0 +1,3 @@ +## 0.9.13 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 12f1a311ecad..74bee36d150c 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.12 +lastReleaseVersion: 0.9.13 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index c6d2ef63f29f..b24b25bd8211 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.13-dev +version: 0.9.13 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 9b2503120f90..a33055760537 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.13 + +### Minor Analysis Improvements + +* Data flow is now tracked through `ActiveRecord` scopes. +* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. +* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. +* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. +* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. + ## 0.8.12 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md deleted file mode 100644 index 9c20f05d8659..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md b/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md deleted file mode 100644 index f008869fbcd5..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md b/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md deleted file mode 100644 index 704a4f27a619..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md b/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md deleted file mode 100644 index a02ca0d00a2a..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md b/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md deleted file mode 100644 index 963479568a0b..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Data flow is now tracked through `ActiveRecord` scopes. diff --git a/ruby/ql/lib/change-notes/released/0.8.13.md b/ruby/ql/lib/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..cc844ffc764e --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.13.md @@ -0,0 +1,9 @@ +## 0.8.13 + +### Minor Analysis Improvements + +* Data flow is now tracked through `ActiveRecord` scopes. +* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. +* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. +* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. +* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index bc8a4aa28135..1d8218b6fa0e 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.13-dev +version: 0.8.13 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 3810951acb52..508fa71de4ad 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.13 + +No user-facing changes. + ## 0.8.12 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/0.8.13.md b/ruby/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..4f7ef70cec56 --- /dev/null +++ b/ruby/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,3 @@ +## 0.8.13 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index b18213909586..029e052108f4 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.13-dev +version: 0.8.13 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index fc8378ff3b92..aaebbbb43183 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.13 + +No user-facing changes. + ## 0.1.12 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.13.md b/shared/controlflow/change-notes/released/0.1.13.md new file mode 100644 index 000000000000..827f5e3ec44e --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.13.md @@ -0,0 +1,3 @@ +## 0.1.13 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index bfd6e9036419..f43379f81961 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.12 +lastReleaseVersion: 0.1.13 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 3a6d1131f86d..cb04f661c85a 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.13-dev +version: 0.1.13 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 458cde63603f..b5267b6d9b0c 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.2.4 + +### Minor Analysis Improvements + +* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead of going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. + ## 0.2.3 No user-facing changes. diff --git a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md b/shared/dataflow/change-notes/released/0.2.4.md similarity index 90% rename from shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md rename to shared/dataflow/change-notes/released/0.2.4.md index 05a48eb80508..075802f2b5da 100644 --- a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md +++ b/shared/dataflow/change-notes/released/0.2.4.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.2.4 + +### Minor Analysis Improvements + * Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead of going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 0b605901b424..7f1e3841dcd6 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.3 +lastReleaseVersion: 0.2.4 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 386290bde293..9c0976ca1094 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.4-dev +version: 0.2.4 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index df97cb97717d..afeee7894871 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.13.md b/shared/mad/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/mad/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index a5ea1168b923..77a69168fe9b 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 7f284f0bfb88..465ab789d4a1 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.12.md b/shared/rangeanalysis/change-notes/released/0.0.12.md new file mode 100644 index 000000000000..0e206033bc47 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index e679dc420925..997fb8da83cd 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 4d8f0196bec3..df8fbd5e8374 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.12-dev +version: 0.0.12 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 2b955eaf376e..6b0950887f99 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.13.md b/shared/regex/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/regex/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 607c548a2a36..e47715dd3227 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 7e74b25e47ee..7b073dbfe7bf 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.13.md b/shared/ssa/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 5c773a56a668..3877a1a98f94 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index d9dd6b6f2e25..83a42fb05515 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.12.md b/shared/threat-models/change-notes/released/0.0.12.md new file mode 100644 index 000000000000..0e206033bc47 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index e679dc420925..997fb8da83cd 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 08e2ae0c3306..1d8b017f7984 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.12-dev +version: 0.0.12 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 01fdf65587ab..32d42cbeb393 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.13.md b/shared/tutorial/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index cf4f16583a3d..ee00cd14490d 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 242657d19d8e..18024e289810 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.13.md b/shared/typetracking/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 166a7c170cdb..7f1ce51b4df5 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 26e1c3ae5469..dbf4204fcadc 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.13.md b/shared/typos/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/typos/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 47bc18e8902e..36250357dae5 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index b8ae5cf523d8..1c0c715c928e 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.13.md b/shared/util/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/util/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 7862cb35d816..e4c8f9b21665 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 9a5910ec3740..67d1e732a0f3 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.13.md b/shared/yaml/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 9813c6fb57c4..f12c77ef671c 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 5a35f47aa898..4bc92a92c822 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.3.13 + +### Major Analysis Improvements + +* Upgraded to Swift 5.10 +* New AST node is extracted: `ThenStmt` + ## 0.3.12 No user-facing changes. diff --git a/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md b/swift/ql/lib/change-notes/released/0.3.13.md similarity index 59% rename from swift/ql/lib/change-notes/2024-03-28-swift-5.10.md rename to swift/ql/lib/change-notes/released/0.3.13.md index bfc371a89e95..c1639172fd4a 100644 --- a/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md +++ b/swift/ql/lib/change-notes/released/0.3.13.md @@ -1,5 +1,6 @@ ---- -category: majorAnalysis ---- +## 0.3.13 + +### Major Analysis Improvements + * Upgraded to Swift 5.10 * New AST node is extracted: `ThenStmt` diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 3e6664ee4b69..8791b4867d13 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.12 +lastReleaseVersion: 0.3.13 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index d06a216db89b..f4143f293406 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.13-dev +version: 0.3.13 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 4ae49cfbfea4..2b745bd7bb15 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.13 + +No user-facing changes. + ## 0.3.12 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/0.3.13.md b/swift/ql/src/change-notes/released/0.3.13.md new file mode 100644 index 000000000000..890ab1e3e3f3 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.13.md @@ -0,0 +1,3 @@ +## 0.3.13 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 3e6664ee4b69..8791b4867d13 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.12 +lastReleaseVersion: 0.3.13 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 1dace3146de9..21fae0156ea3 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.13-dev +version: 0.3.13 groups: - swift - queries From 8e61c6625bb59ec0c340c6156fb80ff85a889d38 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Mon, 1 Apr 2024 15:27:42 +0000 Subject: [PATCH 627/731] Post-release preparation for codeql-cli-2.17.0 --- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index f8358ae72df4..b30dbe69bdf5 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.10 +version: 0.12.11-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 5d9a5252c00d..f50b33af9b75 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.9 +version: 0.9.10-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index f12c8e2c95e5..aca41e884d3a 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.13 +version: 1.7.14-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 74444203f849..66d7baf47803 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.13 +version: 1.7.14-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index bd9558fa2494..a9f7479eb79f 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.9.0 +version: 0.9.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 609c625fe5a3..98079d4221d4 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.13 +version: 0.8.14-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index fbd2978d4389..394af7249ef8 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.12 +version: 0.0.13-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 2c1fbe254faa..223333b72f84 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.13 +version: 0.7.14-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 2ab9616891b2..d4c2ffb98134 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.13 +version: 0.7.14-dev groups: - go - queries diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index c4b5940f928b..f8e68acb1105 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.20 +version: 0.0.21-dev groups: - java - automodel diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 768e57ad9c68..7b2749aac2b8 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.9.0 +version: 0.9.1-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index d67193843bea..a65abf369a27 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.13 +version: 0.8.14-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 1ed74009ef0c..38c25fa5a2ab 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.13 +version: 0.8.14-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 49576a207cd5..ffae5cff5fcc 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.13 +version: 0.8.14-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 94ac367a7557..b97bfa5c48e4 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.13 +version: 0.7.14-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index c150a37790c2..e1da2c2e6d24 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.13 +version: 0.11.14-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index b24b25bd8211..d51237e1530e 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.13 +version: 0.9.14-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 1d8218b6fa0e..ad8045b2c744 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.13 +version: 0.8.14-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 029e052108f4..4eac4d7e8c39 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.13 +version: 0.8.14-dev groups: - ruby - queries diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index cb04f661c85a..de39d6213244 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.13 +version: 0.1.14-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 9c0976ca1094..162b5dd0490a 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.4 +version: 0.2.5-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 77a69168fe9b..97c5f74aead8 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index df8fbd5e8374..bdf15a5964df 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.12 +version: 0.0.13-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index e47715dd3227..166f8c54d5d8 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 3877a1a98f94..ddfa057d1cad 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 1d8b017f7984..2a03df5358ee 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.12 +version: 0.0.13-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index ee00cd14490d..a5430d0a98b9 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 7f1ce51b4df5..39ee0cfe8e71 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 36250357dae5..6f20df0d94be 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index e4c8f9b21665..c81bb89d78cd 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index f12c77ef671c..ca9995d0e564 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index f4143f293406..ff871c756bf8 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.13 +version: 0.3.14-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 21fae0156ea3..2ab77eb339d8 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.13 +version: 0.3.14-dev groups: - swift - queries From 55987d9c1fdf4a1f52cd78a3e79d58bb5c890765 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 00:16:19 +0000 Subject: [PATCH 628/731] Add changed framework coverage reports --- .../library-coverage/coverage.csv | 88 +-- .../library-coverage/coverage.rst | 6 +- .../library-coverage/coverage.csv | 509 +++++++++--------- .../library-coverage/coverage.rst | 10 +- 4 files changed, 308 insertions(+), 305 deletions(-) diff --git a/csharp/documentation/library-coverage/coverage.csv b/csharp/documentation/library-coverage/coverage.csv index 6da4acdabe69..fb0bbc0db2db 100644 --- a/csharp/documentation/library-coverage/coverage.csv +++ b/csharp/documentation/library-coverage/coverage.csv @@ -1,44 +1,44 @@ -package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:commandargs,source:environment,source:file,source:file-write,source:local,source:remote,source:windows-registry,summary:taint,summary:value -Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,,,6,,, -Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,,,,, -Dapper,55,,,,,,,,,,,,55,,,,,,,,, -ILCompiler,,,81,,,,,,,,,,,,,,,,,,81, -ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,,,,63, -ILLink.Shared,,,32,,,,,,,,,,,,,,,,,,29,3 -ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,,5, -Internal.IL,,,69,,,,,,,,,,,,,,,,,,67,2 -Internal.Pgo,,,9,,,,,,,,,,,,,,,,,,8,1 -Internal.TypeSystem,,,367,,,,,,,,,,,,,,,,,,331,36 -JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,,,,7, -Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,,,,14, -Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,,7, -Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,,, -Microsoft.CSharp,,,24,,,,,,,,,,,,,,,,,,24, -Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,,,,13, -Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,,12 -Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,,,,15, -Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,,,,37,1 -Microsoft.Extensions.Configuration,,2,89,,,,,,,,,,,,2,,,,,,86,3 -Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,,,,120, -Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,,,,12, -Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,,,,13, -Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,,,,15, -Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,,,,14,2 -Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,,,,22,1 -Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,,,,10, -Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,,,,59,1 -Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,,,,8, -Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,,,,64, -Microsoft.Interop,,,78,,,,,,,,,,,,,,,,,,78, -Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,,,,1, -Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,,,,7, -Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,,,,5,5 -Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,,,,3, -Microsoft.Win32,,4,4,,,,,,,,,,,,,,,,,4,4, -Mono.Linker,,,163,,,,,,,,,,,,,,,,,,163, -MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,,, -Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,,73,18 -ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,,7, -SourceGenerators,,,4,,,,,,,,,,,,,,,,,,4, -System,67,30,11864,,8,8,9,,,4,5,,33,2,3,1,17,3,4,,9898,1966 -Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,,, +package,sink,source,summary,sink:code-injection,sink:encryption-decryptor,sink:encryption-encryptor,sink:encryption-keyprop,sink:encryption-symmetrickey,sink:file-content-store,sink:html-injection,sink:js-injection,sink:log-injection,sink:sql-injection,source:commandargs,source:database,source:environment,source:file,source:file-write,source:local,source:remote,source:windows-registry,summary:taint,summary:value +Amazon.Lambda.APIGatewayEvents,,6,,,,,,,,,,,,,,,,,,6,,, +Amazon.Lambda.Core,10,,,,,,,,,,,10,,,,,,,,,,, +Dapper,55,42,1,,,,,,,,,,55,,42,,,,,,,,1 +ILCompiler,,,81,,,,,,,,,,,,,,,,,,,81, +ILLink.RoslynAnalyzer,,,63,,,,,,,,,,,,,,,,,,,63, +ILLink.Shared,,,32,,,,,,,,,,,,,,,,,,,29,3 +ILLink.Tasks,,,5,,,,,,,,,,,,,,,,,,,5, +Internal.IL,,,69,,,,,,,,,,,,,,,,,,,67,2 +Internal.Pgo,,,9,,,,,,,,,,,,,,,,,,,8,1 +Internal.TypeSystem,,,367,,,,,,,,,,,,,,,,,,,331,36 +JsonToItemsTaskFactory,,,7,,,,,,,,,,,,,,,,,,,7, +Microsoft.Android.Build,,,14,,,,,,,,,,,,,,,,,,,14, +Microsoft.Apple.Build,,,7,,,,,,,,,,,,,,,,,,,7, +Microsoft.ApplicationBlocks.Data,28,,,,,,,,,,,,28,,,,,,,,,, +Microsoft.CSharp,,,24,,,,,,,,,,,,,,,,,,,24, +Microsoft.Diagnostics.Tools.Pgo,,,13,,,,,,,,,,,,,,,,,,,13, +Microsoft.EntityFrameworkCore,6,,12,,,,,,,,,,6,,,,,,,,,,12 +Microsoft.Extensions.Caching.Distributed,,,15,,,,,,,,,,,,,,,,,,,15, +Microsoft.Extensions.Caching.Memory,,,38,,,,,,,,,,,,,,,,,,,37,1 +Microsoft.Extensions.Configuration,,2,89,,,,,,,,,,,,,2,,,,,,86,3 +Microsoft.Extensions.DependencyInjection,,,120,,,,,,,,,,,,,,,,,,,120, +Microsoft.Extensions.DependencyModel,,,12,,,,,,,,,,,,,,,,,,,12, +Microsoft.Extensions.Diagnostics.Metrics,,,13,,,,,,,,,,,,,,,,,,,13, +Microsoft.Extensions.FileProviders,,,15,,,,,,,,,,,,,,,,,,,15, +Microsoft.Extensions.FileSystemGlobbing,,,16,,,,,,,,,,,,,,,,,,,14,2 +Microsoft.Extensions.Hosting,,,23,,,,,,,,,,,,,,,,,,,22,1 +Microsoft.Extensions.Http,,,10,,,,,,,,,,,,,,,,,,,10, +Microsoft.Extensions.Logging,,,60,,,,,,,,,,,,,,,,,,,59,1 +Microsoft.Extensions.Options,,,8,,,,,,,,,,,,,,,,,,,8, +Microsoft.Extensions.Primitives,,,64,,,,,,,,,,,,,,,,,,,64, +Microsoft.Interop,,,78,,,,,,,,,,,,,,,,,,,78, +Microsoft.NET.Build.Tasks,,,1,,,,,,,,,,,,,,,,,,,1, +Microsoft.NET.WebAssembly.Webcil,,,7,,,,,,,,,,,,,,,,,,,7, +Microsoft.VisualBasic,,,10,,,,,,,,,,,,,,,,,,,5,5 +Microsoft.WebAssembly.Build.Tasks,,,3,,,,,,,,,,,,,,,,,,,3, +Microsoft.Win32,,4,4,,,,,,,,,,,,,,,,,,4,4, +Mono.Linker,,,163,,,,,,,,,,,,,,,,,,,163, +MySql.Data.MySqlClient,48,,,,,,,,,,,,48,,,,,,,,,, +Newtonsoft.Json,,,91,,,,,,,,,,,,,,,,,,,73,18 +ServiceStack,194,,7,27,,,,,75,,,,92,,,,,,,,,7, +SourceGenerators,,,4,,,,,,,,,,,,,,,,,,,4, +System,67,44,11872,,8,8,9,,,4,5,,33,2,,3,15,17,3,4,,9906,1966 +Windows.Security.Cryptography.Core,1,,,,,,,1,,,,,,,,,,,,,,, diff --git a/csharp/documentation/library-coverage/coverage.rst b/csharp/documentation/library-coverage/coverage.rst index 0b11da25d91f..3b2123f7ec53 100644 --- a/csharp/documentation/library-coverage/coverage.rst +++ b/csharp/documentation/library-coverage/coverage.rst @@ -8,7 +8,7 @@ C# framework & library support Framework / library,Package,Flow sources,Taint & value steps,Sinks (total),`CWE-079` :sub:`Cross-site scripting` `ServiceStack <https://servicestack.net/>`_,"``ServiceStack.*``, ``ServiceStack``",,7,194, - System,"``System.*``, ``System``",30,11864,67,9 - Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",12,1547,148, - Totals,,42,13418,409,9 + System,"``System.*``, ``System``",44,11872,67,9 + Others,"``Amazon.Lambda.APIGatewayEvents``, ``Amazon.Lambda.Core``, ``Dapper``, ``ILCompiler``, ``ILLink.RoslynAnalyzer``, ``ILLink.Shared``, ``ILLink.Tasks``, ``Internal.IL``, ``Internal.Pgo``, ``Internal.TypeSystem``, ``JsonToItemsTaskFactory``, ``Microsoft.Android.Build``, ``Microsoft.Apple.Build``, ``Microsoft.ApplicationBlocks.Data``, ``Microsoft.CSharp``, ``Microsoft.Diagnostics.Tools.Pgo``, ``Microsoft.EntityFrameworkCore``, ``Microsoft.Extensions.Caching.Distributed``, ``Microsoft.Extensions.Caching.Memory``, ``Microsoft.Extensions.Configuration``, ``Microsoft.Extensions.DependencyInjection``, ``Microsoft.Extensions.DependencyModel``, ``Microsoft.Extensions.Diagnostics.Metrics``, ``Microsoft.Extensions.FileProviders``, ``Microsoft.Extensions.FileSystemGlobbing``, ``Microsoft.Extensions.Hosting``, ``Microsoft.Extensions.Http``, ``Microsoft.Extensions.Logging``, ``Microsoft.Extensions.Options``, ``Microsoft.Extensions.Primitives``, ``Microsoft.Interop``, ``Microsoft.NET.Build.Tasks``, ``Microsoft.NET.WebAssembly.Webcil``, ``Microsoft.VisualBasic``, ``Microsoft.WebAssembly.Build.Tasks``, ``Microsoft.Win32``, ``Mono.Linker``, ``MySql.Data.MySqlClient``, ``Newtonsoft.Json``, ``SourceGenerators``, ``Windows.Security.Cryptography.Core``",54,1548,148, + Totals,,98,13427,409,9 diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 03d97bcb9d82..3c7ab6453c5c 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -1,253 +1,256 @@ -package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:credentials-key,sink:credentials-password,sink:credentials-username,sink:encryption-iv,sink:encryption-salt,sink:environment-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:notification,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:trust-boundary-violation,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:database,source:environment,source:file,source:remote,summary:taint,summary:value -actions.osgi,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -android.app,77,,103,,,,,,,,,,11,,,,,7,,,,,,,42,,,17,,,,,,,,,,,,,,,,,,,,,,18,85 -android.content,24,31,154,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,8,,,,,,4,27,,,,,63,91 -android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,,41, -android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 -android.os,1,2,122,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,2,,,,,,41,81 -android.support.v4.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -android.util,6,16,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,16,, -android.webkit,3,2,,,,,,,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, -android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1, -androidx.core.app,47,,95,,,,,,,,,,,,,,,,,,,,,,41,,,6,,,,,,,,,,,,,,,,,,,,,,12,83 -androidx.fragment.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,5,,,,,27,61 -antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -ch.ethz.ssh2,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.alibaba.druid.sql,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,1, -com.alibaba.fastjson2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.amazonaws.auth,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.auth0.jwt.algorithms,6,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.azure.identity,3,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.fasterxml.jackson.databind,2,,8,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,8, -com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,,,63,24 -com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 -com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 -com.google.common.flogger,29,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.google.common.io,10,,73,,,,,,,,,1,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,72,1 -com.google.gson,,,52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,14 -com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, -com.jcraft.jsch,5,,1,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1, -com.microsoft.sqlserver.jdbc,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, -com.mongodb,10,,,,,,4,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.opensymphony.xwork2,56,,961,,,,,,,,,,,,,,,,,,,,,,,56,,,,,,,,,,,,,,,,,,,,,,,,867,94 -com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, -com.sshtools.j2ssh.authentication,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.crypto.provider,19,,,,,17,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.jndi.ldap,4,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.net.httpserver,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.net.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.rowset,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.security.auth.module,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.security.ntlm,5,,,,,,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.security.sasl.digest,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -com.trilead.ssh2,13,,,,,2,4,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,, -flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, -freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,, -groovy.lang,26,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.text,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.util,5,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -hudson,74,9,2648,,4,,,,,,3,2,,,,4,,,,,,,,,,,55,,,,,,,,,6,,,,,,,,,,,,5,4,2572,76 -io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, -io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,, -io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 -io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,2,, -io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,,,,,13,143,116 -io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,, -io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -io.netty.util,2,,23,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,21,2 -jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,2, -jakarta.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, -jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,1, -jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 -jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, -java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3 -java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -java.io,51,1,47,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,1,,45,2 -java.lang,38,3,102,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,3,,,59,43 -java.net,22,3,24,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,,,,,,3,24, -java.nio,44,,38,,,,,,,,,5,,,,,,,,,,,,,,,38,,,,,,,,,1,,,,,,,,,,,,,,38, -java.security,21,,,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,1,,,,2, -java.util,47,2,529,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,2,,,49,480 -javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,7, -javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, -javax.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, -javax.imageio.stream,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1, -javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, -javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -javax.management,2,,1,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -javax.naming,7,,1,,,,,,,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -javax.net.ssl,4,,,,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.portlet,,,61,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,61, -javax.print.attribute.standard,2,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.script,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.security.auth.callback,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.security.auth.kerberos,6,,,,,4,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.servlet,7,21,3,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,3,,,2,,,,,,,,,21,3, -javax.sql,7,,,,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, -javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,2,,,,,,,,,94,55 -javax.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, -javax.xml.transform,2,,6,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1,,,,,,,6, -javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,, -jenkins,,,523,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,500,23 -jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 -kotlin,16,,1849,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,,,,,1836,13 -liquibase.database.jvm,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, -liquibase.statement.core,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, -net.schmizz.sshj,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,321,17 -net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,, -ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,, -okhttp3,4,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,23,27 -org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49, -org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 -org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 -org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, -org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.commons.io,118,,562,,,,,,,,,4,,,,,,,,,,,,,,,99,,,,,,,,,15,,,,,,,,,,,,,,548,14 -org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,, -org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.lang,,,767,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,596,171 -org.apache.commons.lang3,6,,425,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,294,131 -org.apache.commons.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.net,13,12,,,,,2,2,,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,,,,,12,, -org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 -org.apache.cxf.catalog,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -org.apache.cxf.common.classloader,3,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,2,,,,,,,,,,,,,,, -org.apache.cxf.common.jaxb,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.common.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.configuration.jsse,2,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.helpers,10,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,5,,,,,,,,, -org.apache.cxf.resource,9,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,5,,,,,,,,,,,,,,, -org.apache.cxf.staxutils,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.tools.corba.utils,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.tools.util,10,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,, -org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hadoop.fs,3,,11,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,11, -org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,, -org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,, -org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,, -org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,, -org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.hc.core5.http,73,2,45,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,72,,,,,,,,,,,,,2,45, -org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, -org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 -org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, -org.apache.http,48,3,95,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,46,,,,,,,,,,,,,3,86,9 -org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,57, -org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,,4,4 -org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.shiro.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.sshd.client.session,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.struts.beanvalidation.validation.interceptor,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, -org.apache.struts2,14,,3873,,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,3,,,,,,,,,,3839,34 -org.apache.tools.ant,12,,,,1,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,, -org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,, -org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,, -org.codehaus.groovy.control,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,, -org.eclipse.jetty.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,, -org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, -org.gradle.api.file,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,, -org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -org.jboss.logging,324,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,, -org.jenkins.ui.icon,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48,1 -org.jenkins.ui.symbol,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,8 -org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, -org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 -org.keycloak.models.map.storage,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, -org.kohsuke.stapler,20,24,363,,,,,,,,,,,,,2,,,,,,,,,,,9,,,,,,,,,4,,,,,5,,,,,,,,24,352,11 -org.mvel2,16,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,, -org.owasp.esapi,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.pac4j.jwt.config.encryption,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.pac4j.jwt.config.signature,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.scijava.log,13,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.slf4j,55,,6,,,,,,,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4 -org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 -org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 -org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -org.springframework.core.io,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,, -org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -org.springframework.http,14,,77,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,,,,,67,10 -org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,, -org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,, -org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,, -org.springframework.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.ldap,47,,,,,,,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.security.core.userdetails,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, -org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 -org.springframework.util,3,,142,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,90,52 -org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, -org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,3,, -org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, -org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13, -org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,, -org.springframework.web.util,,9,157,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,132,25 -org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,2, -org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, -org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,, -play.mvc,1,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,13,24, -ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 -ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -retrofit2,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1, -sun.jvmstat.perfdata.monitor.protocol.local,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.jvmstat.perfdata.monitor.protocol.rmi,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.misc,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.net.ftp,5,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.net.www.protocol.http,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.acl,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.jgss.krb5,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.krb5,9,,,,,3,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.pkcs,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.pkcs11,3,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.provider,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.x509,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.tools.jconsole,28,,,,,,13,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:credentials-key,sink:credentials-password,sink:credentials-username,sink:encryption-iv,sink:encryption-salt,sink:environment-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:notification,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:trust-boundary-violation,sink:url-forward,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:database,source:environment,source:file,source:remote,summary:taint,summary:value +actions.osgi,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, +android.app,77,,103,,,,,,,,,,11,,,,,7,,,,,,,42,,,17,,,,,,,,,,,,,,,,,,,,,,,18,85 +android.content,24,31,154,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,8,,,,,,,4,27,,,,,63,91 +android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,,,41, +android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 +android.os,1,2,122,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,2,,,,,,41,81 +android.support.v4.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +android.util,6,16,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,16,, +android.webkit,3,2,,,,,,,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, +android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1, +androidx.core.app,47,,95,,,,,,,,,,,,,,,,,,,,,,41,,,6,,,,,,,,,,,,,,,,,,,,,,,12,83 +androidx.fragment.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,5,,,,,27,61 +antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +ch.ethz.ssh2,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.alibaba.druid.sql,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1, +com.alibaba.fastjson2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.amazonaws.auth,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.auth0.jwt.algorithms,6,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.azure.identity,3,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.fasterxml.jackson.databind,2,,8,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,8, +com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,,,,63,24 +com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 +com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 +com.google.common.flogger,29,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.google.common.io,10,,73,,,,,,,,,1,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,,72,1 +com.google.gson,,,52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,14 +com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,, +com.jcraft.jsch,5,,1,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1, +com.microsoft.sqlserver.jdbc,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,, +com.mongodb,10,,,,,,4,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.opensymphony.xwork2,56,,961,,,,,,,,,,,,,,,,,,,,,,,56,,,,,,,,,,,,,,,,,,,,,,,,,867,94 +com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, +com.sshtools.j2ssh.authentication,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.crypto.provider,19,,,,,17,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.jndi.ldap,4,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.net.httpserver,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.net.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.rowset,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.security.auth.module,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.security.ntlm,5,,,,,,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.security.sasl.digest,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +com.trilead.ssh2,13,,,,,2,4,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,, +flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, +freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,, +groovy.lang,26,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.text,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.util,5,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +hudson,74,9,2648,,4,,,,,,3,2,,,,4,,,,,,,,,,,55,,,,,,,,,6,,,,,,,,,,,,,5,4,2572,76 +io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, +io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,, +io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 +io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,2,, +io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,,,,,,13,143,116 +io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,, +io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +io.netty.util,2,,23,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,21,2 +jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,2, +jakarta.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, +jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,1, +jakarta.servlet,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,, +jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 +jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, +java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3 +java.beans,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +java.io,51,1,47,,,,,,,,,22,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,1,,45,2 +java.lang,38,3,102,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,,3,,,59,43 +java.net,23,3,31,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,3,31, +java.nio,44,,38,,,,,,,,,5,,,,,,,,,,,,,,,38,,,,,,,,,1,,,,,,,,,,,,,,,38, +java.security,21,,7,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,4 +java.sql,15,1,2,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,,1,,,,2, +java.util,47,2,529,,,,,,,,,1,,,,,,,,,,,34,,,,2,,,,5,2,,1,2,,,,,,,,,,,,,2,,,49,480 +javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,7, +javax.crypto,19,,4,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, +javax.faces.context,2,7,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,, +javax.imageio.stream,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1, +javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, +javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +javax.management,2,,1,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +javax.naming,7,,1,,,,,,,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +javax.net.ssl,4,,,,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.portlet,1,,61,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,61, +javax.print.attribute.standard,2,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.script,1,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.security.auth.callback,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.security.auth.kerberos,6,,,,,4,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.servlet,9,22,3,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,3,,,2,2,,,,,,,,,22,3, +javax.sql,7,,,,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, +javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,2,,,,,,,,,94,55 +javax.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, +javax.xml.transform,2,,6,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,,,,,6, +javax.xml.xpath,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,, +jenkins,,,523,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,500,23 +jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 +kotlin,16,,1849,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,,,,,,1836,13 +liquibase.database.jvm,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +liquibase.statement.core,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +net.schmizz.sshj,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,321,17 +net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,, +ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,, +okhttp3,4,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,23,27 +org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49, +org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, +org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 +org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 +org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, +org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.commons.io,118,,562,,,,,,,,,4,,,,,,,,,,,,,,,99,,,,,,,,,15,,,,,,,,,,,,,,,548,14 +org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,, +org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.lang,,,767,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,596,171 +org.apache.commons.lang3,6,,425,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,294,131 +org.apache.commons.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.net,13,12,,,,,2,2,,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,,,,,,12,, +org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 +org.apache.cxf.catalog,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +org.apache.cxf.common.classloader,3,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,2,,,,,,,,,,,,,,,, +org.apache.cxf.common.jaxb,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.common.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.configuration.jsse,2,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.helpers,10,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,5,,,,,,,,, +org.apache.cxf.resource,9,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,5,,,,,,,,,,,,,,,, +org.apache.cxf.staxutils,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.tools.corba.utils,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.tools.util,10,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,, +org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.hadoop.fs,3,,11,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,11, +org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,, +org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,,, +org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,, +org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,,, +org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.hc.core5.http,73,2,45,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,72,,,,,,,,,,,,,,2,45, +org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, +org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 +org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +org.apache.http,48,3,95,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,46,,,,,,,,,,,,,,3,86,9 +org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,57, +org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,4 +org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.shiro.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.sshd.client.session,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.struts.beanvalidation.validation.interceptor,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, +org.apache.struts2,14,,3873,,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,3,,,,,,,,,,,3839,34 +org.apache.tools.ant,12,,,,1,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,, +org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,, +org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,, +org.codehaus.groovy.control,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,, +org.eclipse.jetty.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,, +org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, +org.gradle.api.file,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,, +org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +org.jboss.logging,324,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,, +org.jenkins.ui.icon,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48,1 +org.jenkins.ui.symbol,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,8 +org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 +org.keycloak.models.map.storage,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +org.kohsuke.stapler,20,24,363,,,,,,,,,,,,,2,,,,,,,,,,,9,,,,,,,,,3,,,,,1,5,,,,,,,,24,352,11 +org.mvel2,16,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,, +org.owasp.esapi,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.pac4j.jwt.config.encryption,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.pac4j.jwt.config.signature,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.scijava.log,13,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.slf4j,55,,6,,,,,,,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4 +org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 +org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,, +org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 +org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +org.springframework.core.io,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,, +org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +org.springframework.http,14,,77,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,,,,,,67,10 +org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,, +org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,, +org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,, +org.springframework.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.ldap,47,,,,,,,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.security.core.userdetails,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, +org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 +org.springframework.util,3,,142,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,90,52 +org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, +org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,3,, +org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, +org.springframework.web.multipart,,12,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,13, +org.springframework.web.portlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,, +org.springframework.web.servlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +org.springframework.web.util,,9,157,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,132,25 +org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,2, +org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, +org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,, +play.mvc,1,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,13,24, +ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 +ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +retrofit2,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,1, +sun.jvmstat.perfdata.monitor.protocol.local,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.jvmstat.perfdata.monitor.protocol.rmi,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.misc,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.net.ftp,5,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.net.www.protocol.http,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.acl,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.jgss.krb5,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.krb5,9,,,,,3,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.pkcs,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.pkcs11,3,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.provider,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.x509,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.tools.jconsole,28,,,,,,13,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index ce93e37f09a8..7168c29ee3ef 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -18,10 +18,10 @@ Java framework & library support `Google Guava <https://guava.dev/>`_,``com.google.common.*``,,730,43,9,,,,, JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java <https://github.com/stleary/JSON-java>`_,``org.json``,,236,,,,,,, - Java Standard Library,``java.*``,10,746,239,80,,9,,,25 - Java extensions,"``javax.*``, ``jakarta.*``",67,688,80,5,4,2,1,1,4 + Java Standard Library,``java.*``,10,760,240,80,,9,,,26 + Java extensions,"``javax.*``, ``jakarta.*``",69,688,85,5,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 - `Spring <https://spring.io/>`_,``org.springframework.*``,38,481,118,5,,28,14,,35 - Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,125,6,22,18,,209 - Totals,,308,18962,2559,338,16,128,33,1,409 + `Spring <https://spring.io/>`_,``org.springframework.*``,38,481,122,5,,28,14,,35 + Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.influxdb``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",131,10518,893,125,6,22,18,,208 + Totals,,310,18976,2569,338,16,128,33,1,409 From a5d4fad8066f14f48aecdeda68633cad55bdd4f4 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Tue, 26 Mar 2024 15:43:16 +0100 Subject: [PATCH 629/731] C++: Output destructor calls for delete expressions --- cpp/ql/lib/semmle/code/cpp/PrintAST.qll | 2 +- cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll | 25 +- .../raw/internal/TranslatedElement.qll | 5 - .../raw/internal/TranslatedExpr.qll | 8 +- .../examples/expressions/PrintAST.expected | 5 +- .../compilerGenerated.expected | 1 + .../library-tests/ir/ir/PrintAST.expected | 49 ++-- .../library-tests/ir/ir/aliased_ir.expected | 222 +++++++++++------- .../ir/ir/operand_locations.expected | 120 ++++++++-- .../test/library-tests/ir/ir/raw_ir.expected | 132 +++++++---- 10 files changed, 391 insertions(+), 178 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll index 88dce1ce0b4d..cfb2632bb8ac 100644 --- a/cpp/ql/lib/semmle/code/cpp/PrintAST.qll +++ b/cpp/ql/lib/semmle/code/cpp/PrintAST.qll @@ -862,7 +862,7 @@ private predicate namedExprChildPredicates(Expr expr, Element ele, string pred) or expr.(DeleteOrDeleteArrayExpr).getDestructorCall() = ele and pred = "getDestructorCall()" or - expr.(DeleteOrDeleteArrayExpr).getExpr() = ele and pred = "getExpr()" + expr.(DeleteOrDeleteArrayExpr).getExprWithReuse() = ele and pred = "getExprWithReuse()" or expr.(DestructorFieldDestruction).getExpr() = ele and pred = "getExpr()" or diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index a41a0b35fc81..50ccf2c3fc53 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -1015,8 +1015,19 @@ class DeleteOrDeleteArrayExpr extends Expr, TDeleteOrDeleteArrayExpr { Expr getExpr() { // If there is a destructor call, the object being deleted is the qualifier // otherwise it is the third child. - result = this.getChild(3) or result = this.getDestructorCall().getQualifier() + exists(Expr exprWithReuse | exprWithReuse = this.getExprWithReuse() | + if not exprWithReuse instanceof ReuseExpr + then result = exprWithReuse + else result = this.getDestructorCall().getQualifier() + ) } + + /** + * Gets the object or array being deleted, and gets a re-use expression when + * there is a destructor call and the object is also the qualifier of the + * call. + */ + Expr getExprWithReuse() { result = this.getChild(3) } } /** @@ -1340,7 +1351,17 @@ class ReuseExpr extends Expr, @reuseexpr { /** * Gets the expression that is being re-used. */ - Expr getReusedExpr() { expr_reuse(underlyingElement(this), unresolveElement(result), _) } + Expr getReusedExpr() { + // In the case of a prvalue, the extractor outputs the expression + // before conversion, but the converted expression is intended. + if this.isPRValueCategory() + then result = this.getBaseReusedExpr().getFullyConverted() + else result = this.getBaseReusedExpr() + } + + private Expr getBaseReusedExpr() { + expr_reuse(underlyingElement(this), unresolveElement(result), _) + } override Type getType() { result = this.getReusedExpr().getType() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 134b7802fc85..d6ad6b8fde49 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -150,11 +150,6 @@ private predicate ignoreExprOnly(Expr expr) { or not translateFunction(getEnclosingFunction(expr)) and not Raw::varHasIRFunc(getEnclosingVariable(expr)) - or - exists(DeleteOrDeleteArrayExpr deleteExpr | - // Ignore the destructor call, because the duplicated qualifier breaks control flow. - deleteExpr.getDestructorCall() = expr - ) } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 8684f4e56069..1a668ad6c23a 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -2245,7 +2245,11 @@ class TranslatedDeleteOrDeleteArrayExpr extends TranslatedNonConstantExpr, Trans final override Type getCallResultType() { result = expr.getType() } - final override TranslatedExpr getQualifier() { none() } + final override TranslatedExpr getQualifier() { + result = getTranslatedExpr(expr.getDestructorCall()) + } + + final override Instruction getQualifierResult() { none() } final override predicate hasArguments() { // All deallocator calls have at least one argument. @@ -2260,7 +2264,7 @@ class TranslatedDeleteOrDeleteArrayExpr extends TranslatedNonConstantExpr, Trans final override TranslatedExpr getArgument(int index) { // The only argument we define is the pointer to be deallocated. index = 0 and - result = getTranslatedExpr(expr.getExpr().getFullyConverted()) + result = getTranslatedExpr(expr.getExprWithReuse().getFullyConverted()) } final override predicate mayThrowException() { diff --git a/cpp/ql/test/examples/expressions/PrintAST.expected b/cpp/ql/test/examples/expressions/PrintAST.expected index 4aefbff5c554..7de95cb8b4a4 100644 --- a/cpp/ql/test/examples/expressions/PrintAST.expected +++ b/cpp/ql/test/examples/expressions/PrintAST.expected @@ -426,11 +426,14 @@ DestructorCall.cpp: # 12| getQualifier(): [VariableAccess] c # 12| Type = [PointerType] C * # 12| ValueCategory = prvalue(load) +# 12| getExprWithReuse(): [ReuseExpr] reuse of c +# 12| Type = [PointerType] C * +# 12| ValueCategory = prvalue # 13| getStmt(1): [ExprStmt] ExprStmt # 13| getExpr(): [DeleteExpr] delete # 13| Type = [VoidType] void # 13| ValueCategory = prvalue -# 13| getExpr(): [VariableAccess] d +# 13| getExprWithReuse(): [VariableAccess] d # 13| Type = [PointerType] D * # 13| ValueCategory = prvalue(load) # 14| getStmt(2): [ReturnStmt] return ... diff --git a/cpp/ql/test/library-tests/compiler_generated/compilerGenerated.expected b/cpp/ql/test/library-tests/compiler_generated/compilerGenerated.expected index f7c1dd25dc5a..b61085ff7c69 100644 --- a/cpp/ql/test/library-tests/compiler_generated/compilerGenerated.expected +++ b/cpp/ql/test/library-tests/compiler_generated/compilerGenerated.expected @@ -14,6 +14,7 @@ | cpp.cpp:10:7:10:7 | operator= | Function | | cpp.cpp:10:7:10:7 | ~MyClass | Function | | cpp.cpp:15:5:15:12 | call to ~MyClass | Expr | +| cpp.cpp:15:12:15:12 | reuse of m | Expr | | cpp.cpp:16:1:16:1 | return ... | Stmt | | file://:0:0:0:0 | operator delete | Function | | file://:0:0:0:0 | operator new | Function | diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 7f667cd61cf5..ea9f82fbf400 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -9068,11 +9068,11 @@ ir.cpp: # 1016| getExpr(): [DeleteExpr] delete # 1016| Type = [VoidType] void # 1016| ValueCategory = prvalue -# 1016| getExpr(): [Literal] 0 +# 1016| getExprWithReuse(): [Literal] 0 # 1016| Type = [NullPointerType] decltype(nullptr) # 1016| Value = [Literal] 0 # 1016| ValueCategory = prvalue -# 1016| getExpr().getFullyConverted(): [StaticCast] static_cast<int *>... +# 1016| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<int *>... # 1016| Conversion = [PointerConversion] pointer conversion # 1016| Type = [IntPointerType] int * # 1016| Value = [StaticCast] 0 @@ -9093,6 +9093,9 @@ ir.cpp: # 1017| Type = [PointerType] String * # 1017| Value = [StaticCast] 0 # 1017| ValueCategory = prvalue +# 1017| getExprWithReuse(): [ReuseExpr] reuse of static_cast<String *>... +# 1017| Type = [PointerType] String * +# 1017| ValueCategory = prvalue # 1018| getStmt(2): [ExprStmt] ExprStmt # 1018| getExpr(): [DeleteExpr] delete # 1018| Type = [VoidType] void @@ -9100,11 +9103,11 @@ ir.cpp: # 1018| getDeallocatorCall(): [FunctionCall] call to operator delete # 1018| Type = [VoidType] void # 1018| ValueCategory = prvalue -# 1018| getExpr(): [Literal] 0 +# 1018| getExprWithReuse(): [Literal] 0 # 1018| Type = [NullPointerType] decltype(nullptr) # 1018| Value = [Literal] 0 # 1018| ValueCategory = prvalue -# 1018| getExpr().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>... +# 1018| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>... # 1018| Conversion = [PointerConversion] pointer conversion # 1018| Type = [PointerType] SizedDealloc * # 1018| Value = [StaticCast] 0 @@ -9113,11 +9116,11 @@ ir.cpp: # 1019| getExpr(): [DeleteExpr] delete # 1019| Type = [VoidType] void # 1019| ValueCategory = prvalue -# 1019| getExpr(): [Literal] 0 +# 1019| getExprWithReuse(): [Literal] 0 # 1019| Type = [NullPointerType] decltype(nullptr) # 1019| Value = [Literal] 0 # 1019| ValueCategory = prvalue -# 1019| getExpr().getFullyConverted(): [StaticCast] static_cast<Overaligned *>... +# 1019| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<Overaligned *>... # 1019| Conversion = [PointerConversion] pointer conversion # 1019| Type = [PointerType] Overaligned * # 1019| Value = [StaticCast] 0 @@ -9138,6 +9141,9 @@ ir.cpp: # 1020| Type = [PointerType] PolymorphicBase * # 1020| Value = [StaticCast] 0 # 1020| ValueCategory = prvalue +# 1020| getExprWithReuse(): [ReuseExpr] reuse of static_cast<PolymorphicBase *>... +# 1020| Type = [PointerType] PolymorphicBase * +# 1020| ValueCategory = prvalue # 1021| getStmt(5): [ReturnStmt] return ... # 1024| [TopLevelFunction] void OperatorDeleteArray() # 1024| <params>: @@ -9146,11 +9152,11 @@ ir.cpp: # 1025| getExpr(): [DeleteArrayExpr] delete[] # 1025| Type = [VoidType] void # 1025| ValueCategory = prvalue -# 1025| getExpr(): [Literal] 0 +# 1025| getExprWithReuse(): [Literal] 0 # 1025| Type = [NullPointerType] decltype(nullptr) # 1025| Value = [Literal] 0 # 1025| ValueCategory = prvalue -# 1025| getExpr().getFullyConverted(): [StaticCast] static_cast<int *>... +# 1025| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<int *>... # 1025| Conversion = [PointerConversion] pointer conversion # 1025| Type = [IntPointerType] int * # 1025| Value = [StaticCast] 0 @@ -9171,6 +9177,9 @@ ir.cpp: # 1026| Type = [PointerType] String * # 1026| Value = [StaticCast] 0 # 1026| ValueCategory = prvalue +# 1026| getExprWithReuse(): [ReuseExpr] reuse of static_cast<String *>... +# 1026| Type = [PointerType] String * +# 1026| ValueCategory = prvalue # 1027| getStmt(2): [ExprStmt] ExprStmt # 1027| getExpr(): [DeleteArrayExpr] delete[] # 1027| Type = [VoidType] void @@ -9178,11 +9187,11 @@ ir.cpp: # 1027| getDeallocatorCall(): [FunctionCall] call to operator delete[] # 1027| Type = [VoidType] void # 1027| ValueCategory = prvalue -# 1027| getExpr(): [Literal] 0 +# 1027| getExprWithReuse(): [Literal] 0 # 1027| Type = [NullPointerType] decltype(nullptr) # 1027| Value = [Literal] 0 # 1027| ValueCategory = prvalue -# 1027| getExpr().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>... +# 1027| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<SizedDealloc *>... # 1027| Conversion = [PointerConversion] pointer conversion # 1027| Type = [PointerType] SizedDealloc * # 1027| Value = [StaticCast] 0 @@ -9191,11 +9200,11 @@ ir.cpp: # 1028| getExpr(): [DeleteArrayExpr] delete[] # 1028| Type = [VoidType] void # 1028| ValueCategory = prvalue -# 1028| getExpr(): [Literal] 0 +# 1028| getExprWithReuse(): [Literal] 0 # 1028| Type = [NullPointerType] decltype(nullptr) # 1028| Value = [Literal] 0 # 1028| ValueCategory = prvalue -# 1028| getExpr().getFullyConverted(): [StaticCast] static_cast<Overaligned *>... +# 1028| getExprWithReuse().getFullyConverted(): [StaticCast] static_cast<Overaligned *>... # 1028| Conversion = [PointerConversion] pointer conversion # 1028| Type = [PointerType] Overaligned * # 1028| Value = [StaticCast] 0 @@ -9216,6 +9225,9 @@ ir.cpp: # 1029| Type = [PointerType] PolymorphicBase * # 1029| Value = [StaticCast] 0 # 1029| ValueCategory = prvalue +# 1029| getExprWithReuse(): [ReuseExpr] reuse of static_cast<PolymorphicBase *>... +# 1029| Type = [PointerType] PolymorphicBase * +# 1029| ValueCategory = prvalue # 1030| getStmt(5): [ReturnStmt] return ... # 1032| [CopyAssignmentOperator] EmptyStruct& EmptyStruct::operator=(EmptyStruct const&) # 1032| <params>: @@ -16699,7 +16711,7 @@ ir.cpp: # 2085| getExpr(): [DeleteExpr] delete # 2085| Type = [VoidType] void # 2085| ValueCategory = prvalue -# 2085| getExpr(): [VariableAccess] x +# 2085| getExprWithReuse(): [VariableAccess] x # 2085| Type = [IntPointerType] int * # 2085| ValueCategory = prvalue(load) # 2086| getStmt(3): [ReturnStmt] return ... @@ -16783,6 +16795,9 @@ ir.cpp: # 2108| getQualifier(): [VariableAccess] b1 # 2108| Type = [PointerType] Base2 * # 2108| ValueCategory = prvalue(load) +# 2108| getExprWithReuse(): [ReuseExpr] reuse of b1 +# 2108| Type = [PointerType] Base2 * +# 2108| ValueCategory = prvalue # 2110| getStmt(2): [DeclStmt] declaration # 2110| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 # 2110| Type = [PointerType] Base2 * @@ -16810,6 +16825,9 @@ ir.cpp: # 2111| getQualifier(): [VariableAccess] b2 # 2111| Type = [PointerType] Base2 * # 2111| ValueCategory = prvalue(load) +# 2111| getExprWithReuse(): [ReuseExpr] reuse of b2 +# 2111| Type = [PointerType] Base2 * +# 2111| ValueCategory = prvalue # 2113| getStmt(4): [DeclStmt] declaration # 2113| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 2113| Type = [PointerType] Derived2 * @@ -16833,6 +16851,9 @@ ir.cpp: # 2114| getQualifier(): [VariableAccess] d # 2114| Type = [PointerType] Derived2 * # 2114| ValueCategory = prvalue(load) +# 2114| getExprWithReuse(): [ReuseExpr] reuse of d +# 2114| Type = [PointerType] Derived2 * +# 2114| ValueCategory = prvalue # 2115| getStmt(6): [ReturnStmt] return ... # 2117| [TopLevelFunction] void test_constant_folding_use(int) # 2117| <params>: @@ -17168,7 +17189,7 @@ ir.cpp: # 2176| getExpr(): [DeleteExpr] delete # 2176| Type = [VoidType] void # 2176| ValueCategory = prvalue -# 2176| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2176| getExprWithReuse(): [ImplicitThisFieldAccess,PointerFieldAccess] x # 2176| Type = [CharPointerType] char * # 2176| ValueCategory = prvalue(load) # 2176| getQualifier(): [ThisExpr] this diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index a1e49dce3b15..cb7eb8386d06 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -6613,75 +6613,107 @@ ir.cpp: # 1015| void OperatorDelete() # 1015| Block 0 -# 1015| v1015_1(void) = EnterFunction : -# 1015| m1015_2(unknown) = AliasedDefinition : -# 1015| m1015_3(unknown) = InitializeNonLocal : -# 1015| m1015_4(unknown) = Chi : total:m1015_2, partial:m1015_3 -# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1016| r1016_2(int *) = Constant[0] : -# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2 -# 1016| m1016_4(unknown) = ^CallSideEffect : ~m1015_4 -# 1016| m1016_5(unknown) = Chi : total:m1015_4, partial:m1016_4 -# 1017| r1017_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1017| r1017_2(String *) = Constant[0] : -# 1017| v1017_3(void) = Call[operator delete] : func:r1017_1, 0:r1017_2 -# 1017| m1017_4(unknown) = ^CallSideEffect : ~m1016_5 -# 1017| m1017_5(unknown) = Chi : total:m1016_5, partial:m1017_4 -# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1018| r1018_2(SizedDealloc *) = Constant[0] : -# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2 -# 1018| m1018_4(unknown) = ^CallSideEffect : ~m1017_5 -# 1018| m1018_5(unknown) = Chi : total:m1017_5, partial:m1018_4 -# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1019| r1019_2(Overaligned *) = Constant[0] : -# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2 -# 1019| m1019_4(unknown) = ^CallSideEffect : ~m1018_5 -# 1019| m1019_5(unknown) = Chi : total:m1018_5, partial:m1019_4 -# 1020| r1020_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 1020| r1020_2(PolymorphicBase *) = Constant[0] : -# 1020| v1020_3(void) = Call[?] : func:r1020_1, 0:r1020_2 -# 1020| m1020_4(unknown) = ^CallSideEffect : ~m1019_5 -# 1020| m1020_5(unknown) = Chi : total:m1019_5, partial:m1020_4 -# 1021| v1021_1(void) = NoOp : -# 1015| v1015_5(void) = ReturnVoid : -# 1015| v1015_6(void) = AliasedUse : ~m1020_5 -# 1015| v1015_7(void) = ExitFunction : +# 1015| v1015_1(void) = EnterFunction : +# 1015| m1015_2(unknown) = AliasedDefinition : +# 1015| m1015_3(unknown) = InitializeNonLocal : +# 1015| m1015_4(unknown) = Chi : total:m1015_2, partial:m1015_3 +# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] : +# 1016| r1016_2(int *) = Constant[0] : +# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2 +# 1016| m1016_4(unknown) = ^CallSideEffect : ~m1015_4 +# 1016| m1016_5(unknown) = Chi : total:m1015_4, partial:m1016_4 +# 1017| r1017_1(String *) = Constant[0] : +# 1017| r1017_2(glval<unknown>) = FunctionAddress[~String] : +# 1017| v1017_3(void) = Call[~String] : func:r1017_2 +# 1017| m1017_4(unknown) = ^CallSideEffect : ~m1016_5 +# 1017| m1017_5(unknown) = Chi : total:m1016_5, partial:m1017_4 +# 1017| v1017_6(void) = ^IndirectReadSideEffect[-1] : &:r1017_1, ~m1017_5 +# 1017| m1017_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1017_1 +# 1017| m1017_8(unknown) = Chi : total:m1017_5, partial:m1017_7 +# 1017| r1017_9(glval<unknown>) = FunctionAddress[operator delete] : +# 1017| r1017_10(String *) = CopyValue : r1017_1 +# 1017| v1017_11(void) = Call[operator delete] : func:r1017_9, 0:r1017_10 +# 1017| m1017_12(unknown) = ^CallSideEffect : ~m1017_8 +# 1017| m1017_13(unknown) = Chi : total:m1017_8, partial:m1017_12 +# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] : +# 1018| r1018_2(SizedDealloc *) = Constant[0] : +# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2 +# 1018| m1018_4(unknown) = ^CallSideEffect : ~m1017_13 +# 1018| m1018_5(unknown) = Chi : total:m1017_13, partial:m1018_4 +# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] : +# 1019| r1019_2(Overaligned *) = Constant[0] : +# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2 +# 1019| m1019_4(unknown) = ^CallSideEffect : ~m1018_5 +# 1019| m1019_5(unknown) = Chi : total:m1018_5, partial:m1019_4 +# 1020| r1020_1(PolymorphicBase *) = Constant[0] : +# 1020| r1020_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] : +# 1020| v1020_3(void) = Call[~PolymorphicBase] : func:r1020_2 +# 1020| m1020_4(unknown) = ^CallSideEffect : ~m1019_5 +# 1020| m1020_5(unknown) = Chi : total:m1019_5, partial:m1020_4 +# 1020| v1020_6(void) = ^IndirectReadSideEffect[-1] : &:r1020_1, ~m1020_5 +# 1020| m1020_7(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1020_1 +# 1020| m1020_8(unknown) = Chi : total:m1020_5, partial:m1020_7 +# 1020| r1020_9(glval<unknown>) = VirtualDeleteFunctionAddress : +# 1020| r1020_10(PolymorphicBase *) = CopyValue : r1020_1 +# 1020| v1020_11(void) = Call[?] : func:r1020_9, 0:r1020_10 +# 1020| m1020_12(unknown) = ^CallSideEffect : ~m1020_8 +# 1020| m1020_13(unknown) = Chi : total:m1020_8, partial:m1020_12 +# 1021| v1021_1(void) = NoOp : +# 1015| v1015_5(void) = ReturnVoid : +# 1015| v1015_6(void) = AliasedUse : ~m1020_13 +# 1015| v1015_7(void) = ExitFunction : # 1024| void OperatorDeleteArray() # 1024| Block 0 -# 1024| v1024_1(void) = EnterFunction : -# 1024| m1024_2(unknown) = AliasedDefinition : -# 1024| m1024_3(unknown) = InitializeNonLocal : -# 1024| m1024_4(unknown) = Chi : total:m1024_2, partial:m1024_3 -# 1025| r1025_1(glval<unknown>) = FunctionAddress[operator delete[]] : -# 1025| r1025_2(int *) = Constant[0] : -# 1025| v1025_3(void) = Call[operator delete[]] : func:r1025_1, 0:r1025_2 -# 1025| m1025_4(unknown) = ^CallSideEffect : ~m1024_4 -# 1025| m1025_5(unknown) = Chi : total:m1024_4, partial:m1025_4 -# 1026| r1026_1(glval<unknown>) = FunctionAddress[operator delete[]] : -# 1026| r1026_2(String *) = Constant[0] : -# 1026| v1026_3(void) = Call[operator delete[]] : func:r1026_1, 0:r1026_2 -# 1026| m1026_4(unknown) = ^CallSideEffect : ~m1025_5 -# 1026| m1026_5(unknown) = Chi : total:m1025_5, partial:m1026_4 -# 1027| r1027_1(glval<unknown>) = FunctionAddress[operator delete[]] : -# 1027| r1027_2(SizedDealloc *) = Constant[0] : -# 1027| v1027_3(void) = Call[operator delete[]] : func:r1027_1, 0:r1027_2 -# 1027| m1027_4(unknown) = ^CallSideEffect : ~m1026_5 -# 1027| m1027_5(unknown) = Chi : total:m1026_5, partial:m1027_4 -# 1028| r1028_1(glval<unknown>) = FunctionAddress[operator delete[]] : -# 1028| r1028_2(Overaligned *) = Constant[0] : -# 1028| v1028_3(void) = Call[operator delete[]] : func:r1028_1, 0:r1028_2 -# 1028| m1028_4(unknown) = ^CallSideEffect : ~m1027_5 -# 1028| m1028_5(unknown) = Chi : total:m1027_5, partial:m1028_4 -# 1029| r1029_1(glval<unknown>) = FunctionAddress[operator delete[]] : -# 1029| r1029_2(PolymorphicBase *) = Constant[0] : -# 1029| v1029_3(void) = Call[operator delete[]] : func:r1029_1, 0:r1029_2 -# 1029| m1029_4(unknown) = ^CallSideEffect : ~m1028_5 -# 1029| m1029_5(unknown) = Chi : total:m1028_5, partial:m1029_4 -# 1030| v1030_1(void) = NoOp : -# 1024| v1024_5(void) = ReturnVoid : -# 1024| v1024_6(void) = AliasedUse : ~m1029_5 -# 1024| v1024_7(void) = ExitFunction : +# 1024| v1024_1(void) = EnterFunction : +# 1024| m1024_2(unknown) = AliasedDefinition : +# 1024| m1024_3(unknown) = InitializeNonLocal : +# 1024| m1024_4(unknown) = Chi : total:m1024_2, partial:m1024_3 +# 1025| r1025_1(glval<unknown>) = FunctionAddress[operator delete[]] : +# 1025| r1025_2(int *) = Constant[0] : +# 1025| v1025_3(void) = Call[operator delete[]] : func:r1025_1, 0:r1025_2 +# 1025| m1025_4(unknown) = ^CallSideEffect : ~m1024_4 +# 1025| m1025_5(unknown) = Chi : total:m1024_4, partial:m1025_4 +# 1026| r1026_1(String *) = Constant[0] : +# 1026| r1026_2(glval<unknown>) = FunctionAddress[~String] : +# 1026| v1026_3(void) = Call[~String] : func:r1026_2 +# 1026| m1026_4(unknown) = ^CallSideEffect : ~m1025_5 +# 1026| m1026_5(unknown) = Chi : total:m1025_5, partial:m1026_4 +# 1026| v1026_6(void) = ^IndirectReadSideEffect[-1] : &:r1026_1, ~m1026_5 +# 1026| m1026_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1026_1 +# 1026| m1026_8(unknown) = Chi : total:m1026_5, partial:m1026_7 +# 1026| r1026_9(glval<unknown>) = FunctionAddress[operator delete[]] : +# 1026| r1026_10(String *) = CopyValue : r1026_1 +# 1026| v1026_11(void) = Call[operator delete[]] : func:r1026_9, 0:r1026_10 +# 1026| m1026_12(unknown) = ^CallSideEffect : ~m1026_8 +# 1026| m1026_13(unknown) = Chi : total:m1026_8, partial:m1026_12 +# 1027| r1027_1(glval<unknown>) = FunctionAddress[operator delete[]] : +# 1027| r1027_2(SizedDealloc *) = Constant[0] : +# 1027| v1027_3(void) = Call[operator delete[]] : func:r1027_1, 0:r1027_2 +# 1027| m1027_4(unknown) = ^CallSideEffect : ~m1026_13 +# 1027| m1027_5(unknown) = Chi : total:m1026_13, partial:m1027_4 +# 1028| r1028_1(glval<unknown>) = FunctionAddress[operator delete[]] : +# 1028| r1028_2(Overaligned *) = Constant[0] : +# 1028| v1028_3(void) = Call[operator delete[]] : func:r1028_1, 0:r1028_2 +# 1028| m1028_4(unknown) = ^CallSideEffect : ~m1027_5 +# 1028| m1028_5(unknown) = Chi : total:m1027_5, partial:m1028_4 +# 1029| r1029_1(PolymorphicBase *) = Constant[0] : +# 1029| r1029_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] : +# 1029| v1029_3(void) = Call[~PolymorphicBase] : func:r1029_2 +# 1029| m1029_4(unknown) = ^CallSideEffect : ~m1028_5 +# 1029| m1029_5(unknown) = Chi : total:m1028_5, partial:m1029_4 +# 1029| v1029_6(void) = ^IndirectReadSideEffect[-1] : &:r1029_1, ~m1029_5 +# 1029| m1029_7(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1029_1 +# 1029| m1029_8(unknown) = Chi : total:m1029_5, partial:m1029_7 +# 1029| r1029_9(glval<unknown>) = FunctionAddress[operator delete[]] : +# 1029| r1029_10(PolymorphicBase *) = CopyValue : r1029_1 +# 1029| v1029_11(void) = Call[operator delete[]] : func:r1029_9, 0:r1029_10 +# 1029| m1029_12(unknown) = ^CallSideEffect : ~m1029_8 +# 1029| m1029_13(unknown) = Chi : total:m1029_8, partial:m1029_12 +# 1030| v1030_1(void) = NoOp : +# 1024| v1024_5(void) = ReturnVoid : +# 1024| v1024_6(void) = AliasedUse : ~m1029_13 +# 1024| v1024_7(void) = ExitFunction : # 1034| void EmptyStructInit() # 1034| Block 0 @@ -12830,18 +12862,26 @@ ir.cpp: # 2107| m2107_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_8 # 2107| m2107_14(unknown) = Chi : total:m2107_7, partial:m2107_13 # 2107| m2107_15(Base2 *) = Store[b1] : &:r2107_1, r2107_8 -# 2108| r2108_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2108| r2108_2(glval<Base2 *>) = VariableAddress[b1] : -# 2108| r2108_3(Base2 *) = Load[b1] : &:r2108_2, m2107_15 -# 2108| v2108_4(void) = Call[?] : func:r2108_1, 0:r2108_3 +# 2108| r2108_1(glval<Base2 *>) = VariableAddress[b1] : +# 2108| r2108_2(Base2 *) = Load[b1] : &:r2108_1, m2107_15 +# 2108| r2108_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2108| v2108_4(void) = Call[~Base2] : func:r2108_3 # 2108| m2108_5(unknown) = ^CallSideEffect : ~m2107_12 # 2108| m2108_6(unknown) = Chi : total:m2107_12, partial:m2108_5 +# 2108| v2108_7(void) = ^IndirectReadSideEffect[-1] : &:r2108_2, ~m2107_14 +# 2108| m2108_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2108_2 +# 2108| m2108_9(unknown) = Chi : total:m2107_14, partial:m2108_8 +# 2108| r2108_10(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2108| r2108_11(Base2 *) = CopyValue : r2108_1 +# 2108| v2108_12(void) = Call[?] : func:r2108_10, 0:r2108_11 +# 2108| m2108_13(unknown) = ^CallSideEffect : ~m2108_6 +# 2108| m2108_14(unknown) = Chi : total:m2108_6, partial:m2108_13 # 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] : # 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] : # 2110| r2110_3(unsigned long) = Constant[16] : # 2110| r2110_4(void *) = Call[operator new] : func:r2110_2, 0:r2110_3 -# 2110| m2110_5(unknown) = ^CallSideEffect : ~m2108_6 -# 2110| m2110_6(unknown) = Chi : total:m2108_6, partial:m2110_5 +# 2110| m2110_5(unknown) = ^CallSideEffect : ~m2108_14 +# 2110| m2110_6(unknown) = Chi : total:m2108_14, partial:m2110_5 # 2110| m2110_7(unknown) = ^InitializeDynamicAllocation : &:r2110_4 # 2110| r2110_8(Derived2 *) = Convert : r2110_4 # 2110| r2110_9(glval<unknown>) = FunctionAddress[Derived2] : @@ -12852,18 +12892,26 @@ ir.cpp: # 2110| m2110_14(unknown) = Chi : total:m2110_7, partial:m2110_13 # 2110| r2110_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_8 # 2110| m2110_16(Base2 *) = Store[b2] : &:r2110_1, r2110_15 -# 2111| r2111_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2111| r2111_2(glval<Base2 *>) = VariableAddress[b2] : -# 2111| r2111_3(Base2 *) = Load[b2] : &:r2111_2, m2110_16 -# 2111| v2111_4(void) = Call[?] : func:r2111_1, 0:r2111_3 +# 2111| r2111_1(glval<Base2 *>) = VariableAddress[b2] : +# 2111| r2111_2(Base2 *) = Load[b2] : &:r2111_1, m2110_16 +# 2111| r2111_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2111| v2111_4(void) = Call[~Base2] : func:r2111_3 # 2111| m2111_5(unknown) = ^CallSideEffect : ~m2110_12 # 2111| m2111_6(unknown) = Chi : total:m2110_12, partial:m2111_5 +# 2111| v2111_7(void) = ^IndirectReadSideEffect[-1] : &:r2111_2, ~m2110_14 +# 2111| m2111_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_2 +# 2111| m2111_9(unknown) = Chi : total:m2110_14, partial:m2111_8 +# 2111| r2111_10(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2111| r2111_11(Base2 *) = CopyValue : r2111_1 +# 2111| v2111_12(void) = Call[?] : func:r2111_10, 0:r2111_11 +# 2111| m2111_13(unknown) = ^CallSideEffect : ~m2111_6 +# 2111| m2111_14(unknown) = Chi : total:m2111_6, partial:m2111_13 # 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] : # 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] : # 2113| r2113_3(unsigned long) = Constant[16] : # 2113| r2113_4(void *) = Call[operator new] : func:r2113_2, 0:r2113_3 -# 2113| m2113_5(unknown) = ^CallSideEffect : ~m2111_6 -# 2113| m2113_6(unknown) = Chi : total:m2111_6, partial:m2113_5 +# 2113| m2113_5(unknown) = ^CallSideEffect : ~m2111_14 +# 2113| m2113_6(unknown) = Chi : total:m2111_14, partial:m2113_5 # 2113| m2113_7(unknown) = ^InitializeDynamicAllocation : &:r2113_4 # 2113| r2113_8(Derived2 *) = Convert : r2113_4 # 2113| r2113_9(glval<unknown>) = FunctionAddress[Derived2] : @@ -12873,17 +12921,25 @@ ir.cpp: # 2113| m2113_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_8 # 2113| m2113_14(unknown) = Chi : total:m2113_7, partial:m2113_13 # 2113| m2113_15(Derived2 *) = Store[d] : &:r2113_1, r2113_8 -# 2114| r2114_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2114| r2114_2(glval<Derived2 *>) = VariableAddress[d] : -# 2114| r2114_3(Derived2 *) = Load[d] : &:r2114_2, m2113_15 -# 2114| v2114_4(void) = Call[?] : func:r2114_1, 0:r2114_3 +# 2114| r2114_1(glval<Derived2 *>) = VariableAddress[d] : +# 2114| r2114_2(Derived2 *) = Load[d] : &:r2114_1, m2113_15 +# 2114| r2114_3(glval<unknown>) = FunctionAddress[~Derived2] : +# 2114| v2114_4(void) = Call[~Derived2] : func:r2114_3 # 2114| m2114_5(unknown) = ^CallSideEffect : ~m2113_12 # 2114| m2114_6(unknown) = Chi : total:m2113_12, partial:m2114_5 +# 2114| v2114_7(void) = ^IndirectReadSideEffect[-1] : &:r2114_2, ~m2113_14 +# 2114| m2114_8(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2114_2 +# 2114| m2114_9(unknown) = Chi : total:m2113_14, partial:m2114_8 +# 2114| r2114_10(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2114| r2114_11(Derived2 *) = CopyValue : r2114_1 +# 2114| v2114_12(void) = Call[?] : func:r2114_10, 0:r2114_11 +# 2114| m2114_13(unknown) = ^CallSideEffect : ~m2114_6 +# 2114| m2114_14(unknown) = Chi : total:m2114_6, partial:m2114_13 # 2115| r2115_1(glval<int>) = VariableAddress[#return] : # 2115| m2115_2(int) = Uninitialized[#return] : &:r2115_1 # 2105| r2105_5(glval<int>) = VariableAddress[#return] : # 2105| v2105_6(void) = ReturnValue : &:r2105_5, m2115_2 -# 2105| v2105_7(void) = AliasedUse : ~m2114_6 +# 2105| v2105_7(void) = AliasedUse : ~m2114_14 # 2105| v2105_8(void) = ExitFunction : # 2119| void test_constant_folding() diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index eaf35e9029ac..80ec181a2194 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -5654,60 +5654,100 @@ | ir.cpp:1011:12:1011:12 | Unary | r1011_3 | | ir.cpp:1015:6:1015:19 | ChiPartial | partial:m1015_3 | | ir.cpp:1015:6:1015:19 | ChiTotal | total:m1015_2 | -| ir.cpp:1015:6:1015:19 | SideEffect | ~m1020_5 | +| ir.cpp:1015:6:1015:19 | SideEffect | ~m1020_13 | | ir.cpp:1016:3:1016:35 | CallTarget | func:r1016_1 | | ir.cpp:1016:3:1016:35 | ChiPartial | partial:m1016_4 | | ir.cpp:1016:3:1016:35 | ChiTotal | total:m1015_4 | | ir.cpp:1016:3:1016:35 | SideEffect | ~m1015_4 | | ir.cpp:1016:10:1016:35 | Arg(0) | 0:r1016_2 | -| ir.cpp:1017:3:1017:38 | CallTarget | func:r1017_1 | +| ir.cpp:1017:3:1017:38 | CallTarget | func:r1017_2 | +| ir.cpp:1017:3:1017:38 | CallTarget | func:r1017_9 | | ir.cpp:1017:3:1017:38 | ChiPartial | partial:m1017_4 | +| ir.cpp:1017:3:1017:38 | ChiPartial | partial:m1017_12 | | ir.cpp:1017:3:1017:38 | ChiTotal | total:m1016_5 | +| ir.cpp:1017:3:1017:38 | ChiTotal | total:m1017_8 | | ir.cpp:1017:3:1017:38 | SideEffect | ~m1016_5 | -| ir.cpp:1017:10:1017:38 | Arg(0) | 0:r1017_2 | +| ir.cpp:1017:3:1017:38 | SideEffect | ~m1017_8 | +| ir.cpp:1017:10:1017:38 | Address | &:r1017_1 | +| ir.cpp:1017:10:1017:38 | Address | &:r1017_1 | +| ir.cpp:1017:10:1017:38 | Arg(0) | 0:r1017_10 | +| ir.cpp:1017:10:1017:38 | ChiPartial | partial:m1017_7 | +| ir.cpp:1017:10:1017:38 | ChiTotal | total:m1017_5 | +| ir.cpp:1017:10:1017:38 | SideEffect | ~m1017_5 | +| ir.cpp:1017:10:1017:38 | Unary | r1017_1 | | ir.cpp:1018:3:1018:44 | CallTarget | func:r1018_1 | | ir.cpp:1018:3:1018:44 | ChiPartial | partial:m1018_4 | -| ir.cpp:1018:3:1018:44 | ChiTotal | total:m1017_5 | -| ir.cpp:1018:3:1018:44 | SideEffect | ~m1017_5 | +| ir.cpp:1018:3:1018:44 | ChiTotal | total:m1017_13 | +| ir.cpp:1018:3:1018:44 | SideEffect | ~m1017_13 | | ir.cpp:1018:10:1018:44 | Arg(0) | 0:r1018_2 | | ir.cpp:1019:3:1019:43 | CallTarget | func:r1019_1 | | ir.cpp:1019:3:1019:43 | ChiPartial | partial:m1019_4 | | ir.cpp:1019:3:1019:43 | ChiTotal | total:m1018_5 | | ir.cpp:1019:3:1019:43 | SideEffect | ~m1018_5 | | ir.cpp:1019:10:1019:43 | Arg(0) | 0:r1019_2 | -| ir.cpp:1020:3:1020:47 | CallTarget | func:r1020_1 | +| ir.cpp:1020:3:1020:47 | CallTarget | func:r1020_2 | +| ir.cpp:1020:3:1020:47 | CallTarget | func:r1020_9 | | ir.cpp:1020:3:1020:47 | ChiPartial | partial:m1020_4 | +| ir.cpp:1020:3:1020:47 | ChiPartial | partial:m1020_12 | | ir.cpp:1020:3:1020:47 | ChiTotal | total:m1019_5 | +| ir.cpp:1020:3:1020:47 | ChiTotal | total:m1020_8 | | ir.cpp:1020:3:1020:47 | SideEffect | ~m1019_5 | -| ir.cpp:1020:10:1020:47 | Arg(0) | 0:r1020_2 | +| ir.cpp:1020:3:1020:47 | SideEffect | ~m1020_8 | +| ir.cpp:1020:10:1020:47 | Address | &:r1020_1 | +| ir.cpp:1020:10:1020:47 | Address | &:r1020_1 | +| ir.cpp:1020:10:1020:47 | Arg(0) | 0:r1020_10 | +| ir.cpp:1020:10:1020:47 | ChiPartial | partial:m1020_7 | +| ir.cpp:1020:10:1020:47 | ChiTotal | total:m1020_5 | +| ir.cpp:1020:10:1020:47 | SideEffect | ~m1020_5 | +| ir.cpp:1020:10:1020:47 | Unary | r1020_1 | | ir.cpp:1024:6:1024:24 | ChiPartial | partial:m1024_3 | | ir.cpp:1024:6:1024:24 | ChiTotal | total:m1024_2 | -| ir.cpp:1024:6:1024:24 | SideEffect | ~m1029_5 | +| ir.cpp:1024:6:1024:24 | SideEffect | ~m1029_13 | | ir.cpp:1025:3:1025:37 | CallTarget | func:r1025_1 | | ir.cpp:1025:3:1025:37 | ChiPartial | partial:m1025_4 | | ir.cpp:1025:3:1025:37 | ChiTotal | total:m1024_4 | | ir.cpp:1025:3:1025:37 | SideEffect | ~m1024_4 | | ir.cpp:1025:12:1025:37 | Arg(0) | 0:r1025_2 | -| ir.cpp:1026:3:1026:40 | CallTarget | func:r1026_1 | +| ir.cpp:1026:3:1026:40 | CallTarget | func:r1026_2 | +| ir.cpp:1026:3:1026:40 | CallTarget | func:r1026_9 | | ir.cpp:1026:3:1026:40 | ChiPartial | partial:m1026_4 | +| ir.cpp:1026:3:1026:40 | ChiPartial | partial:m1026_12 | | ir.cpp:1026:3:1026:40 | ChiTotal | total:m1025_5 | +| ir.cpp:1026:3:1026:40 | ChiTotal | total:m1026_8 | | ir.cpp:1026:3:1026:40 | SideEffect | ~m1025_5 | -| ir.cpp:1026:12:1026:40 | Arg(0) | 0:r1026_2 | +| ir.cpp:1026:3:1026:40 | SideEffect | ~m1026_8 | +| ir.cpp:1026:12:1026:40 | Address | &:r1026_1 | +| ir.cpp:1026:12:1026:40 | Address | &:r1026_1 | +| ir.cpp:1026:12:1026:40 | Arg(0) | 0:r1026_10 | +| ir.cpp:1026:12:1026:40 | ChiPartial | partial:m1026_7 | +| ir.cpp:1026:12:1026:40 | ChiTotal | total:m1026_5 | +| ir.cpp:1026:12:1026:40 | SideEffect | ~m1026_5 | +| ir.cpp:1026:12:1026:40 | Unary | r1026_1 | | ir.cpp:1027:3:1027:46 | CallTarget | func:r1027_1 | | ir.cpp:1027:3:1027:46 | ChiPartial | partial:m1027_4 | -| ir.cpp:1027:3:1027:46 | ChiTotal | total:m1026_5 | -| ir.cpp:1027:3:1027:46 | SideEffect | ~m1026_5 | +| ir.cpp:1027:3:1027:46 | ChiTotal | total:m1026_13 | +| ir.cpp:1027:3:1027:46 | SideEffect | ~m1026_13 | | ir.cpp:1027:12:1027:46 | Arg(0) | 0:r1027_2 | | ir.cpp:1028:3:1028:45 | CallTarget | func:r1028_1 | | ir.cpp:1028:3:1028:45 | ChiPartial | partial:m1028_4 | | ir.cpp:1028:3:1028:45 | ChiTotal | total:m1027_5 | | ir.cpp:1028:3:1028:45 | SideEffect | ~m1027_5 | | ir.cpp:1028:12:1028:45 | Arg(0) | 0:r1028_2 | -| ir.cpp:1029:3:1029:49 | CallTarget | func:r1029_1 | +| ir.cpp:1029:3:1029:49 | CallTarget | func:r1029_2 | +| ir.cpp:1029:3:1029:49 | CallTarget | func:r1029_9 | | ir.cpp:1029:3:1029:49 | ChiPartial | partial:m1029_4 | +| ir.cpp:1029:3:1029:49 | ChiPartial | partial:m1029_12 | | ir.cpp:1029:3:1029:49 | ChiTotal | total:m1028_5 | +| ir.cpp:1029:3:1029:49 | ChiTotal | total:m1029_8 | | ir.cpp:1029:3:1029:49 | SideEffect | ~m1028_5 | -| ir.cpp:1029:12:1029:49 | Arg(0) | 0:r1029_2 | +| ir.cpp:1029:3:1029:49 | SideEffect | ~m1029_8 | +| ir.cpp:1029:12:1029:49 | Address | &:r1029_1 | +| ir.cpp:1029:12:1029:49 | Address | &:r1029_1 | +| ir.cpp:1029:12:1029:49 | Arg(0) | 0:r1029_10 | +| ir.cpp:1029:12:1029:49 | ChiPartial | partial:m1029_7 | +| ir.cpp:1029:12:1029:49 | ChiTotal | total:m1029_5 | +| ir.cpp:1029:12:1029:49 | SideEffect | ~m1029_5 | +| ir.cpp:1029:12:1029:49 | Unary | r1029_1 | | ir.cpp:1034:6:1034:20 | ChiPartial | partial:m1034_3 | | ir.cpp:1034:6:1034:20 | ChiTotal | total:m1034_2 | | ir.cpp:1034:6:1034:20 | SideEffect | m1034_3 | @@ -10620,7 +10660,7 @@ | ir.cpp:2105:5:2105:18 | ChiPartial | partial:m2105_3 | | ir.cpp:2105:5:2105:18 | ChiTotal | total:m2105_2 | | ir.cpp:2105:5:2105:18 | Load | m2115_2 | -| ir.cpp:2105:5:2105:18 | SideEffect | ~m2114_6 | +| ir.cpp:2105:5:2105:18 | SideEffect | ~m2114_14 | | ir.cpp:2107:12:2107:13 | Address | &:r2107_1 | | ir.cpp:2107:17:2107:27 | Address | &:r2107_4 | | ir.cpp:2107:17:2107:27 | Address | &:r2107_8 | @@ -10638,13 +10678,23 @@ | ir.cpp:2107:17:2107:27 | SideEffect | ~m2107_6 | | ir.cpp:2107:17:2107:27 | StoreValue | r2107_8 | | ir.cpp:2107:17:2107:27 | Unary | r2107_4 | -| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_1 | +| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_3 | +| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_10 | | ir.cpp:2108:5:2108:13 | ChiPartial | partial:m2108_5 | +| ir.cpp:2108:5:2108:13 | ChiPartial | partial:m2108_13 | | ir.cpp:2108:5:2108:13 | ChiTotal | total:m2107_12 | +| ir.cpp:2108:5:2108:13 | ChiTotal | total:m2108_6 | | ir.cpp:2108:5:2108:13 | SideEffect | ~m2107_12 | +| ir.cpp:2108:5:2108:13 | SideEffect | ~m2108_6 | +| ir.cpp:2108:12:2108:13 | Address | &:r2108_1 | | ir.cpp:2108:12:2108:13 | Address | &:r2108_2 | -| ir.cpp:2108:12:2108:13 | Arg(0) | 0:r2108_3 | +| ir.cpp:2108:12:2108:13 | Address | &:r2108_2 | +| ir.cpp:2108:12:2108:13 | Arg(0) | 0:r2108_11 | +| ir.cpp:2108:12:2108:13 | ChiPartial | partial:m2108_8 | +| ir.cpp:2108:12:2108:13 | ChiTotal | total:m2107_14 | | ir.cpp:2108:12:2108:13 | Load | m2107_15 | +| ir.cpp:2108:12:2108:13 | SideEffect | ~m2107_14 | +| ir.cpp:2108:12:2108:13 | Unary | r2108_1 | | ir.cpp:2110:12:2110:13 | Address | &:r2110_1 | | ir.cpp:2110:17:2110:30 | Address | &:r2110_4 | | ir.cpp:2110:17:2110:30 | Address | &:r2110_8 | @@ -10655,21 +10705,31 @@ | ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_5 | | ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_11 | | ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_13 | -| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2108_6 | +| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2108_14 | | ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_6 | | ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_7 | -| ir.cpp:2110:17:2110:30 | SideEffect | ~m2108_6 | +| ir.cpp:2110:17:2110:30 | SideEffect | ~m2108_14 | | ir.cpp:2110:17:2110:30 | SideEffect | ~m2110_6 | | ir.cpp:2110:17:2110:30 | StoreValue | r2110_15 | | ir.cpp:2110:17:2110:30 | Unary | r2110_4 | | ir.cpp:2110:17:2110:30 | Unary | r2110_8 | -| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_1 | +| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_3 | +| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_10 | | ir.cpp:2111:5:2111:13 | ChiPartial | partial:m2111_5 | +| ir.cpp:2111:5:2111:13 | ChiPartial | partial:m2111_13 | | ir.cpp:2111:5:2111:13 | ChiTotal | total:m2110_12 | +| ir.cpp:2111:5:2111:13 | ChiTotal | total:m2111_6 | | ir.cpp:2111:5:2111:13 | SideEffect | ~m2110_12 | +| ir.cpp:2111:5:2111:13 | SideEffect | ~m2111_6 | +| ir.cpp:2111:12:2111:13 | Address | &:r2111_1 | +| ir.cpp:2111:12:2111:13 | Address | &:r2111_2 | | ir.cpp:2111:12:2111:13 | Address | &:r2111_2 | -| ir.cpp:2111:12:2111:13 | Arg(0) | 0:r2111_3 | +| ir.cpp:2111:12:2111:13 | Arg(0) | 0:r2111_11 | +| ir.cpp:2111:12:2111:13 | ChiPartial | partial:m2111_8 | +| ir.cpp:2111:12:2111:13 | ChiTotal | total:m2110_14 | | ir.cpp:2111:12:2111:13 | Load | m2110_16 | +| ir.cpp:2111:12:2111:13 | SideEffect | ~m2110_14 | +| ir.cpp:2111:12:2111:13 | Unary | r2111_1 | | ir.cpp:2113:15:2113:15 | Address | &:r2113_1 | | ir.cpp:2113:19:2113:32 | Address | &:r2113_4 | | ir.cpp:2113:19:2113:32 | Address | &:r2113_8 | @@ -10680,20 +10740,30 @@ | ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_5 | | ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_11 | | ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_13 | -| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2111_6 | +| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2111_14 | | ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_6 | | ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_7 | -| ir.cpp:2113:19:2113:32 | SideEffect | ~m2111_6 | +| ir.cpp:2113:19:2113:32 | SideEffect | ~m2111_14 | | ir.cpp:2113:19:2113:32 | SideEffect | ~m2113_6 | | ir.cpp:2113:19:2113:32 | StoreValue | r2113_8 | | ir.cpp:2113:19:2113:32 | Unary | r2113_4 | -| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_1 | +| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_3 | +| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_10 | | ir.cpp:2114:5:2114:12 | ChiPartial | partial:m2114_5 | +| ir.cpp:2114:5:2114:12 | ChiPartial | partial:m2114_13 | | ir.cpp:2114:5:2114:12 | ChiTotal | total:m2113_12 | +| ir.cpp:2114:5:2114:12 | ChiTotal | total:m2114_6 | | ir.cpp:2114:5:2114:12 | SideEffect | ~m2113_12 | +| ir.cpp:2114:5:2114:12 | SideEffect | ~m2114_6 | +| ir.cpp:2114:12:2114:12 | Address | &:r2114_1 | +| ir.cpp:2114:12:2114:12 | Address | &:r2114_2 | | ir.cpp:2114:12:2114:12 | Address | &:r2114_2 | -| ir.cpp:2114:12:2114:12 | Arg(0) | 0:r2114_3 | +| ir.cpp:2114:12:2114:12 | Arg(0) | 0:r2114_11 | +| ir.cpp:2114:12:2114:12 | ChiPartial | partial:m2114_8 | +| ir.cpp:2114:12:2114:12 | ChiTotal | total:m2113_14 | | ir.cpp:2114:12:2114:12 | Load | m2113_15 | +| ir.cpp:2114:12:2114:12 | SideEffect | ~m2113_14 | +| ir.cpp:2114:12:2114:12 | Unary | r2114_1 | | ir.cpp:2115:1:2115:1 | Address | &:r2115_1 | | ir.cpp:2119:6:2119:26 | ChiPartial | partial:m2119_3 | | ir.cpp:2119:6:2119:26 | ChiTotal | total:m2119_2 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 595eeb47460c..25d6225d77eb 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -6226,33 +6226,45 @@ ir.cpp: # 1015| void OperatorDelete() # 1015| Block 0 -# 1015| v1015_1(void) = EnterFunction : -# 1015| mu1015_2(unknown) = AliasedDefinition : -# 1015| mu1015_3(unknown) = InitializeNonLocal : -# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1016| r1016_2(int *) = Constant[0] : -# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2 -# 1016| mu1016_4(unknown) = ^CallSideEffect : ~m? -# 1017| r1017_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1017| r1017_2(String *) = Constant[0] : -# 1017| v1017_3(void) = Call[operator delete] : func:r1017_1, 0:r1017_2 -# 1017| mu1017_4(unknown) = ^CallSideEffect : ~m? -# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1018| r1018_2(SizedDealloc *) = Constant[0] : -# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2 -# 1018| mu1018_4(unknown) = ^CallSideEffect : ~m? -# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] : -# 1019| r1019_2(Overaligned *) = Constant[0] : -# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2 -# 1019| mu1019_4(unknown) = ^CallSideEffect : ~m? -# 1020| r1020_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 1020| r1020_2(PolymorphicBase *) = Constant[0] : -# 1020| v1020_3(void) = Call[?] : func:r1020_1, 0:r1020_2 -# 1020| mu1020_4(unknown) = ^CallSideEffect : ~m? -# 1021| v1021_1(void) = NoOp : -# 1015| v1015_4(void) = ReturnVoid : -# 1015| v1015_5(void) = AliasedUse : ~m? -# 1015| v1015_6(void) = ExitFunction : +# 1015| v1015_1(void) = EnterFunction : +# 1015| mu1015_2(unknown) = AliasedDefinition : +# 1015| mu1015_3(unknown) = InitializeNonLocal : +# 1016| r1016_1(glval<unknown>) = FunctionAddress[operator delete] : +# 1016| r1016_2(int *) = Constant[0] : +# 1016| v1016_3(void) = Call[operator delete] : func:r1016_1, 0:r1016_2 +# 1016| mu1016_4(unknown) = ^CallSideEffect : ~m? +# 1017| r1017_1(String *) = Constant[0] : +# 1017| r1017_2(glval<unknown>) = FunctionAddress[~String] : +# 1017| v1017_3(void) = Call[~String] : func:r1017_2 +# 1017| mu1017_4(unknown) = ^CallSideEffect : ~m? +# 1017| v1017_5(void) = ^IndirectReadSideEffect[-1] : &:r1017_1, ~m? +# 1017| mu1017_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1017_1 +# 1017| r1017_7(glval<unknown>) = FunctionAddress[operator delete] : +# 1017| r1017_8(String *) = CopyValue : r1017_1 +# 1017| v1017_9(void) = Call[operator delete] : func:r1017_7, 0:r1017_8 +# 1017| mu1017_10(unknown) = ^CallSideEffect : ~m? +# 1018| r1018_1(glval<unknown>) = FunctionAddress[operator delete] : +# 1018| r1018_2(SizedDealloc *) = Constant[0] : +# 1018| v1018_3(void) = Call[operator delete] : func:r1018_1, 0:r1018_2 +# 1018| mu1018_4(unknown) = ^CallSideEffect : ~m? +# 1019| r1019_1(glval<unknown>) = FunctionAddress[operator delete] : +# 1019| r1019_2(Overaligned *) = Constant[0] : +# 1019| v1019_3(void) = Call[operator delete] : func:r1019_1, 0:r1019_2 +# 1019| mu1019_4(unknown) = ^CallSideEffect : ~m? +# 1020| r1020_1(PolymorphicBase *) = Constant[0] : +# 1020| r1020_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] : +# 1020| v1020_3(void) = Call[~PolymorphicBase] : func:r1020_2 +# 1020| mu1020_4(unknown) = ^CallSideEffect : ~m? +# 1020| v1020_5(void) = ^IndirectReadSideEffect[-1] : &:r1020_1, ~m? +# 1020| mu1020_6(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1020_1 +# 1020| r1020_7(glval<unknown>) = VirtualDeleteFunctionAddress : +# 1020| r1020_8(PolymorphicBase *) = CopyValue : r1020_1 +# 1020| v1020_9(void) = Call[?] : func:r1020_7, 0:r1020_8 +# 1020| mu1020_10(unknown) = ^CallSideEffect : ~m? +# 1021| v1021_1(void) = NoOp : +# 1015| v1015_4(void) = ReturnVoid : +# 1015| v1015_5(void) = AliasedUse : ~m? +# 1015| v1015_6(void) = ExitFunction : # 1024| void OperatorDeleteArray() # 1024| Block 0 @@ -6263,10 +6275,16 @@ ir.cpp: # 1025| r1025_2(int *) = Constant[0] : # 1025| v1025_3(void) = Call[operator delete[]] : func:r1025_1, 0:r1025_2 # 1025| mu1025_4(unknown) = ^CallSideEffect : ~m? -# 1026| r1026_1(glval<unknown>) = FunctionAddress[operator delete[]] : -# 1026| r1026_2(String *) = Constant[0] : -# 1026| v1026_3(void) = Call[operator delete[]] : func:r1026_1, 0:r1026_2 +# 1026| r1026_1(String *) = Constant[0] : +# 1026| r1026_2(glval<unknown>) = FunctionAddress[~String] : +# 1026| v1026_3(void) = Call[~String] : func:r1026_2 # 1026| mu1026_4(unknown) = ^CallSideEffect : ~m? +# 1026| v1026_5(void) = ^IndirectReadSideEffect[-1] : &:r1026_1, ~m? +# 1026| mu1026_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1026_1 +# 1026| r1026_7(glval<unknown>) = FunctionAddress[operator delete[]] : +# 1026| r1026_8(String *) = CopyValue : r1026_1 +# 1026| v1026_9(void) = Call[operator delete[]] : func:r1026_7, 0:r1026_8 +# 1026| mu1026_10(unknown) = ^CallSideEffect : ~m? # 1027| r1027_1(glval<unknown>) = FunctionAddress[operator delete[]] : # 1027| r1027_2(SizedDealloc *) = Constant[0] : # 1027| v1027_3(void) = Call[operator delete[]] : func:r1027_1, 0:r1027_2 @@ -6275,10 +6293,16 @@ ir.cpp: # 1028| r1028_2(Overaligned *) = Constant[0] : # 1028| v1028_3(void) = Call[operator delete[]] : func:r1028_1, 0:r1028_2 # 1028| mu1028_4(unknown) = ^CallSideEffect : ~m? -# 1029| r1029_1(glval<unknown>) = FunctionAddress[operator delete[]] : -# 1029| r1029_2(PolymorphicBase *) = Constant[0] : -# 1029| v1029_3(void) = Call[operator delete[]] : func:r1029_1, 0:r1029_2 +# 1029| r1029_1(PolymorphicBase *) = Constant[0] : +# 1029| r1029_2(glval<unknown>) = FunctionAddress[~PolymorphicBase] : +# 1029| v1029_3(void) = Call[~PolymorphicBase] : func:r1029_2 # 1029| mu1029_4(unknown) = ^CallSideEffect : ~m? +# 1029| v1029_5(void) = ^IndirectReadSideEffect[-1] : &:r1029_1, ~m? +# 1029| mu1029_6(PolymorphicBase) = ^IndirectMayWriteSideEffect[-1] : &:r1029_1 +# 1029| r1029_7(glval<unknown>) = FunctionAddress[operator delete[]] : +# 1029| r1029_8(PolymorphicBase *) = CopyValue : r1029_1 +# 1029| v1029_9(void) = Call[operator delete[]] : func:r1029_7, 0:r1029_8 +# 1029| mu1029_10(unknown) = ^CallSideEffect : ~m? # 1030| v1030_1(void) = NoOp : # 1024| v1024_4(void) = ReturnVoid : # 1024| v1024_5(void) = AliasedUse : ~m? @@ -11938,11 +11962,17 @@ ir.cpp: # 2107| mu2107_10(unknown) = ^CallSideEffect : ~m? # 2107| mu2107_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_7 # 2107| mu2107_12(Base2 *) = Store[b1] : &:r2107_1, r2107_7 -# 2108| r2108_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2108| r2108_2(glval<Base2 *>) = VariableAddress[b1] : -# 2108| r2108_3(Base2 *) = Load[b1] : &:r2108_2, ~m? -# 2108| v2108_4(void) = Call[?] : func:r2108_1, 0:r2108_3 +# 2108| r2108_1(glval<Base2 *>) = VariableAddress[b1] : +# 2108| r2108_2(Base2 *) = Load[b1] : &:r2108_1, ~m? +# 2108| r2108_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2108| v2108_4(void) = Call[~Base2] : func:r2108_3 # 2108| mu2108_5(unknown) = ^CallSideEffect : ~m? +# 2108| v2108_6(void) = ^IndirectReadSideEffect[-1] : &:r2108_2, ~m? +# 2108| mu2108_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2108_2 +# 2108| r2108_8(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2108| r2108_9(Base2 *) = CopyValue : r2108_1 +# 2108| v2108_10(void) = Call[?] : func:r2108_8, 0:r2108_9 +# 2108| mu2108_11(unknown) = ^CallSideEffect : ~m? # 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] : # 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] : # 2110| r2110_3(unsigned long) = Constant[16] : @@ -11956,11 +11986,17 @@ ir.cpp: # 2110| mu2110_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2110_7 # 2110| r2110_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_7 # 2110| mu2110_13(Base2 *) = Store[b2] : &:r2110_1, r2110_12 -# 2111| r2111_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2111| r2111_2(glval<Base2 *>) = VariableAddress[b2] : -# 2111| r2111_3(Base2 *) = Load[b2] : &:r2111_2, ~m? -# 2111| v2111_4(void) = Call[?] : func:r2111_1, 0:r2111_3 +# 2111| r2111_1(glval<Base2 *>) = VariableAddress[b2] : +# 2111| r2111_2(Base2 *) = Load[b2] : &:r2111_1, ~m? +# 2111| r2111_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2111| v2111_4(void) = Call[~Base2] : func:r2111_3 # 2111| mu2111_5(unknown) = ^CallSideEffect : ~m? +# 2111| v2111_6(void) = ^IndirectReadSideEffect[-1] : &:r2111_2, ~m? +# 2111| mu2111_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_2 +# 2111| r2111_8(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2111| r2111_9(Base2 *) = CopyValue : r2111_1 +# 2111| v2111_10(void) = Call[?] : func:r2111_8, 0:r2111_9 +# 2111| mu2111_11(unknown) = ^CallSideEffect : ~m? # 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] : # 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] : # 2113| r2113_3(unsigned long) = Constant[16] : @@ -11973,11 +12009,17 @@ ir.cpp: # 2113| mu2113_10(unknown) = ^CallSideEffect : ~m? # 2113| mu2113_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_7 # 2113| mu2113_12(Derived2 *) = Store[d] : &:r2113_1, r2113_7 -# 2114| r2114_1(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2114| r2114_2(glval<Derived2 *>) = VariableAddress[d] : -# 2114| r2114_3(Derived2 *) = Load[d] : &:r2114_2, ~m? -# 2114| v2114_4(void) = Call[?] : func:r2114_1, 0:r2114_3 +# 2114| r2114_1(glval<Derived2 *>) = VariableAddress[d] : +# 2114| r2114_2(Derived2 *) = Load[d] : &:r2114_1, ~m? +# 2114| r2114_3(glval<unknown>) = FunctionAddress[~Derived2] : +# 2114| v2114_4(void) = Call[~Derived2] : func:r2114_3 # 2114| mu2114_5(unknown) = ^CallSideEffect : ~m? +# 2114| v2114_6(void) = ^IndirectReadSideEffect[-1] : &:r2114_2, ~m? +# 2114| mu2114_7(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2114_2 +# 2114| r2114_8(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2114| r2114_9(Derived2 *) = CopyValue : r2114_1 +# 2114| v2114_10(void) = Call[?] : func:r2114_8, 0:r2114_9 +# 2114| mu2114_11(unknown) = ^CallSideEffect : ~m? # 2115| r2115_1(glval<int>) = VariableAddress[#return] : # 2115| mu2115_2(int) = Uninitialized[#return] : &:r2115_1 # 2105| r2105_4(glval<int>) = VariableAddress[#return] : From bd0ddec63044499327e0f0d9219bafb02e3e40f3 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 2 Apr 2024 09:59:53 +0100 Subject: [PATCH 630/731] C++: Fix join order in 'cpp/double-free'. --- cpp/ql/src/Critical/DoubleFree.ql | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cpp/ql/src/Critical/DoubleFree.ql b/cpp/ql/src/Critical/DoubleFree.ql index 802c81fd050b..a454b63d5a5e 100644 --- a/cpp/ql/src/Critical/DoubleFree.ql +++ b/cpp/ql/src/Critical/DoubleFree.ql @@ -37,6 +37,5 @@ where DoubleFree::flowPath(source, sink) and isFree(source.getNode(), _, _, dealloc) and isFree(sink.getNode(), e2) -select sink.getNode(), source, sink, - "Memory pointed to by '" + e2.toString() + "' may already have been freed by $@.", dealloc, - dealloc.toString() +select sink.getNode(), source, sink, "Memory pointed to by $@ may already have been freed by $@.", + e2, e2.toString(), dealloc, dealloc.toString() From 9190bf25ce87ca7c67cee6bfa59b043730a727ea Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Tue, 2 Apr 2024 11:35:43 +0200 Subject: [PATCH 631/731] C++: Add example to QLDoc --- cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index 50ccf2c3fc53..c818c61eb1e5 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -1023,9 +1023,23 @@ class DeleteOrDeleteArrayExpr extends Expr, TDeleteOrDeleteArrayExpr { } /** - * Gets the object or array being deleted, and gets a re-use expression when - * there is a destructor call and the object is also the qualifier of the - * call. + * Gets the object or array being deleted, and gets a `ReuseExpr` when there + * is a destructor call and the object is also the qualifier of the call. + * + * For example, given: + * ``` + * struct HasDestructor { ~HasDestructor(); }; + * struct PlainOldData { int x, char y; }; + * + * void f(HasDestructor* hasDestructor, PlainOldData* pod) { + * delete hasDestructor; + * delete pod; + * } + * ``` + * This predicate yields a `ReuseExpr` for `delete hasDestructor`, as the + * the deleted expression has a destructor, and that expression is also + * the qualifier of the destructor call. In the case of `delete pod` the + * predicate does not yield a `ReuseExpr`, as there is no destructor call. */ Expr getExprWithReuse() { result = this.getChild(3) } } From 01183800a6f2b5c40a746665bd356ad0a91bbdd3 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Tue, 2 Apr 2024 11:38:19 +0200 Subject: [PATCH 632/731] C++: Fix formatting --- cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index c818c61eb1e5..9e12f853ba57 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -1025,7 +1025,7 @@ class DeleteOrDeleteArrayExpr extends Expr, TDeleteOrDeleteArrayExpr { /** * Gets the object or array being deleted, and gets a `ReuseExpr` when there * is a destructor call and the object is also the qualifier of the call. - * + * * For example, given: * ``` * struct HasDestructor { ~HasDestructor(); }; From 352e7de07df3057b6feddc01e06042d05b9f20f2 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 2 Apr 2024 10:43:10 +0100 Subject: [PATCH 633/731] C++: Accept test changes. --- .../Critical/MemoryFreed/DoubleFree.expected | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected index bd8868102842..893f1c7e79ac 100644 --- a/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected +++ b/cpp/ql/test/query-tests/Critical/MemoryFreed/DoubleFree.expected @@ -41,16 +41,16 @@ nodes | test_free.cpp:302:12:302:14 | buf | semmle.label | buf | subpaths #select -| test_free.cpp:14:10:14:10 | a | test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:14:10:14:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:11:5:11:8 | call to free | call to free | -| test_free.cpp:31:27:31:27 | a | test_free.cpp:30:10:30:10 | pointer to free output argument | test_free.cpp:31:27:31:27 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:30:5:30:8 | call to free | call to free | -| test_free.cpp:37:27:37:27 | a | test_free.cpp:35:10:35:10 | pointer to free output argument | test_free.cpp:37:27:37:27 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:35:5:35:8 | call to free | call to free | -| test_free.cpp:46:10:46:10 | a | test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:42:22:42:25 | call to free | call to free | -| test_free.cpp:46:10:46:10 | a | test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:44:22:44:25 | call to free | call to free | -| test_free.cpp:51:10:51:10 | a | test_free.cpp:50:27:50:27 | pointer to free output argument | test_free.cpp:51:10:51:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:50:22:50:25 | call to free | call to free | -| test_free.cpp:72:14:72:14 | a | test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:72:14:72:14 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:69:5:69:8 | call to free | call to free | -| test_free.cpp:85:12:85:12 | a | test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:83:5:83:13 | delete | delete | -| test_free.cpp:103:10:103:10 | a | test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:101:5:101:8 | call to free | call to free | -| test_free.cpp:129:10:129:11 | * ... | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | Memory pointed to by '* ...' may already have been freed by $@. | test_free.cpp:128:5:128:8 | call to free | call to free | -| test_free.cpp:154:10:154:10 | a | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:152:22:152:25 | call to free | call to free | -| test_free.cpp:209:10:209:10 | a | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | Memory pointed to by 'a' may already have been freed by $@. | test_free.cpp:207:5:207:8 | call to free | call to free | -| test_free.cpp:302:12:302:14 | buf | test_free.cpp:301:12:301:14 | pointer to g_free output argument | test_free.cpp:302:12:302:14 | buf | Memory pointed to by 'buf' may already have been freed by $@. | test_free.cpp:301:5:301:10 | call to g_free | call to g_free | +| test_free.cpp:14:10:14:10 | a | test_free.cpp:11:10:11:10 | pointer to free output argument | test_free.cpp:14:10:14:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:14:10:14:10 | a | a | test_free.cpp:11:5:11:8 | call to free | call to free | +| test_free.cpp:31:27:31:27 | a | test_free.cpp:30:10:30:10 | pointer to free output argument | test_free.cpp:31:27:31:27 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:31:27:31:27 | a | a | test_free.cpp:30:5:30:8 | call to free | call to free | +| test_free.cpp:37:27:37:27 | a | test_free.cpp:35:10:35:10 | pointer to free output argument | test_free.cpp:37:27:37:27 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:37:27:37:27 | a | a | test_free.cpp:35:5:35:8 | call to free | call to free | +| test_free.cpp:46:10:46:10 | a | test_free.cpp:42:27:42:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:46:10:46:10 | a | a | test_free.cpp:42:22:42:25 | call to free | call to free | +| test_free.cpp:46:10:46:10 | a | test_free.cpp:44:27:44:27 | pointer to free output argument | test_free.cpp:46:10:46:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:46:10:46:10 | a | a | test_free.cpp:44:22:44:25 | call to free | call to free | +| test_free.cpp:51:10:51:10 | a | test_free.cpp:50:27:50:27 | pointer to free output argument | test_free.cpp:51:10:51:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:51:10:51:10 | a | a | test_free.cpp:50:22:50:25 | call to free | call to free | +| test_free.cpp:72:14:72:14 | a | test_free.cpp:69:10:69:10 | pointer to free output argument | test_free.cpp:72:14:72:14 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:72:14:72:14 | a | a | test_free.cpp:69:5:69:8 | call to free | call to free | +| test_free.cpp:85:12:85:12 | a | test_free.cpp:83:12:83:12 | pointer to operator delete output argument | test_free.cpp:85:12:85:12 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:85:12:85:12 | a | a | test_free.cpp:83:5:83:13 | delete | delete | +| test_free.cpp:103:10:103:10 | a | test_free.cpp:101:10:101:10 | pointer to free output argument | test_free.cpp:103:10:103:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:103:10:103:10 | a | a | test_free.cpp:101:5:101:8 | call to free | call to free | +| test_free.cpp:129:10:129:11 | * ... | test_free.cpp:128:10:128:11 | pointer to free output argument | test_free.cpp:129:10:129:11 | * ... | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:129:10:129:11 | * ... | * ... | test_free.cpp:128:5:128:8 | call to free | call to free | +| test_free.cpp:154:10:154:10 | a | test_free.cpp:152:27:152:27 | pointer to free output argument | test_free.cpp:154:10:154:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:154:10:154:10 | a | a | test_free.cpp:152:22:152:25 | call to free | call to free | +| test_free.cpp:209:10:209:10 | a | test_free.cpp:207:10:207:10 | pointer to free output argument | test_free.cpp:209:10:209:10 | a | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:209:10:209:10 | a | a | test_free.cpp:207:5:207:8 | call to free | call to free | +| test_free.cpp:302:12:302:14 | buf | test_free.cpp:301:12:301:14 | pointer to g_free output argument | test_free.cpp:302:12:302:14 | buf | Memory pointed to by $@ may already have been freed by $@. | test_free.cpp:302:12:302:14 | buf | buf | test_free.cpp:301:5:301:10 | call to g_free | call to g_free | From 20202aba908a7d0a3e6fc3aa64d2991e838e8768 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 2 Apr 2024 13:21:46 +0200 Subject: [PATCH 634/731] Python: Deprecate `AttributeName` --- python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll index 9d0bcb3c487a..8d1c691915b3 100644 --- a/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/new/TypeTracking.qll @@ -7,8 +7,12 @@ private import internal.TypeTrackingImpl as Impl import Impl::Shared::TypeTracking<Impl::TypeTrackingInput> private import semmle.python.dataflow.new.internal.DataFlowPublic as DataFlowPublic -/** A string that may appear as the name of an attribute or access path. */ -class AttributeName = Impl::TypeTrackingInput::Content; +/** + * DEPRECATED. + * + * A string that may appear as the name of an attribute or access path. + */ +deprecated class AttributeName = Impl::TypeTrackingInput::Content; /** * A summary of the steps needed to track a value to a given dataflow node. From 8707a63edb9440890234bc4ab0019c099087f56f Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 2 Apr 2024 13:26:26 +0200 Subject: [PATCH 635/731] Python: Add comments around `storeStepCommon` --- .../python/dataflow/new/internal/DataFlowPrivate.qll | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll index f2a523775443..1ad6d0f7e6ed 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll @@ -643,6 +643,13 @@ predicate jumpStepNotSharedWithTypeTracker(Node nodeFrom, Node nodeTo) { //-------- /** * Subset of `storeStep` that should be shared with type-tracking. + * + * NOTE: This does not include attributeStoreStep right now, since it has its' own + * modeling in the type-tracking library (which is slightly different due to + * PostUpdateNodes). + * + * As of 2024-04-02 the type-tracking library only supports precise content, so there is + * no reason to include steps for list content right now. */ predicate storeStepCommon(Node nodeFrom, ContentSet c, Node nodeTo) { tupleStoreStep(nodeFrom, c, nodeTo) From 368a500d93750a368d5d73dc34bf9da73add067e Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 2 Apr 2024 12:56:00 +0200 Subject: [PATCH 636/731] C#: Neutralize some `System.Diagnostics` generated models --- csharp/ql/lib/ext/System.Diagnostics.model.yml | 9 +++++++++ .../dataflow/library/FlowSummaries.expected | 10 +++++----- .../library/FlowSummariesFiltered.expected | 5 ----- .../CWE-078/CommandInjection.expected | 17 ----------------- 4 files changed, 14 insertions(+), 27 deletions(-) diff --git a/csharp/ql/lib/ext/System.Diagnostics.model.yml b/csharp/ql/lib/ext/System.Diagnostics.model.yml index 5a9eb7ced62b..a05de14671f9 100644 --- a/csharp/ql/lib/ext/System.Diagnostics.model.yml +++ b/csharp/ql/lib/ext/System.Diagnostics.model.yml @@ -19,3 +19,12 @@ extensions: - ["System.Diagnostics", "TraceListenerCollection", False, "get_Item", "(System.Int32)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Diagnostics", "TraceListenerCollection", False, "get_Item", "(System.String)", "", "Argument[this].Element", "ReturnValue", "value", "manual"] - ["System.Diagnostics", "TraceListenerCollection", False, "set_Item", "(System.Int32,System.Diagnostics.TraceListener)", "", "Argument[1]", "Argument[this].Element", "value", "manual"] + - addsTo: + pack: codeql/csharp-all + extensible: neutralModel + data: + - ["System.Diagnostics", "ProcessStartInfo", "set_Arguments", "(System.String)", "summary", "manual"] + - ["System.Diagnostics", "ProcessStartInfo", "set_FileName", "(System.String)", "summary", "manual"] + - ["System.Diagnostics", "ProcessStartInfo", "set_UserName", "(System.String)", "summary", "manual"] + - ["System.Diagnostics", "ProcessStartInfo", "set_Verb", "(System.String)", "summary", "manual"] + - ["System.Diagnostics", "ProcessStartInfo", "set_WorkingDirectory", "(System.String)", "summary", "manual"] diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected index 56dc0a22961a..caa3e2497b9e 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummaries.expected @@ -9080,11 +9080,6 @@ summary | System.Diagnostics;ProcessStartInfo;false;get_UserName;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;ProcessStartInfo;false;get_Verb;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;ProcessStartInfo;false;get_WorkingDirectory;();;Argument[this];ReturnValue;taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_Arguments;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_FileName;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_UserName;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_Verb;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_WorkingDirectory;(System.String);;Argument[0];Argument[this];taint;df-generated | | System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[this].Element;value;manual | | System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Diagnostics;SampleActivity<T>;false;BeginInvoke;(System.Diagnostics.ActivityCreationOptions<T>,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | @@ -28362,10 +28357,12 @@ neutral | System.Diagnostics;ProcessStartInfo;get_UseShellExecute;();summary;df-generated | | System.Diagnostics;ProcessStartInfo;get_Verbs;();summary;df-generated | | System.Diagnostics;ProcessStartInfo;get_WindowStyle;();summary;df-generated | +| System.Diagnostics;ProcessStartInfo;set_Arguments;(System.String);summary;manual | | System.Diagnostics;ProcessStartInfo;set_CreateNoWindow;(System.Boolean);summary;df-generated | | System.Diagnostics;ProcessStartInfo;set_Domain;(System.String);summary;df-generated | | System.Diagnostics;ProcessStartInfo;set_ErrorDialog;(System.Boolean);summary;df-generated | | System.Diagnostics;ProcessStartInfo;set_ErrorDialogParentHandle;(System.IntPtr);summary;df-generated | +| System.Diagnostics;ProcessStartInfo;set_FileName;(System.String);summary;manual | | System.Diagnostics;ProcessStartInfo;set_LoadUserProfile;(System.Boolean);summary;df-generated | | System.Diagnostics;ProcessStartInfo;set_Password;(System.Security.SecureString);summary;df-generated | | System.Diagnostics;ProcessStartInfo;set_PasswordInClearText;(System.String);summary;df-generated | @@ -28377,7 +28374,10 @@ neutral | System.Diagnostics;ProcessStartInfo;set_StandardOutputEncoding;(System.Text.Encoding);summary;df-generated | | System.Diagnostics;ProcessStartInfo;set_UseCredentialsForNetworkingOnly;(System.Boolean);summary;df-generated | | System.Diagnostics;ProcessStartInfo;set_UseShellExecute;(System.Boolean);summary;df-generated | +| System.Diagnostics;ProcessStartInfo;set_UserName;(System.String);summary;manual | +| System.Diagnostics;ProcessStartInfo;set_Verb;(System.String);summary;manual | | System.Diagnostics;ProcessStartInfo;set_WindowStyle;(System.Diagnostics.ProcessWindowStyle);summary;df-generated | +| System.Diagnostics;ProcessStartInfo;set_WorkingDirectory;(System.String);summary;manual | | System.Diagnostics;ProcessThread;ResetIdealProcessor;();summary;df-generated | | System.Diagnostics;ProcessThread;get_BasePriority;();summary;df-generated | | System.Diagnostics;ProcessThread;get_CurrentPriority;();summary;df-generated | diff --git a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected index 080bdd1e045d..cd541b278d52 100644 --- a/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected +++ b/csharp/ql/test/library-tests/dataflow/library/FlowSummariesFiltered.expected @@ -7031,11 +7031,6 @@ | System.Diagnostics;ProcessStartInfo;false;get_UserName;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;ProcessStartInfo;false;get_Verb;();;Argument[this];ReturnValue;taint;df-generated | | System.Diagnostics;ProcessStartInfo;false;get_WorkingDirectory;();;Argument[this];ReturnValue;taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_Arguments;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_FileName;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_UserName;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_Verb;(System.String);;Argument[0];Argument[this];taint;df-generated | -| System.Diagnostics;ProcessStartInfo;false;set_WorkingDirectory;(System.String);;Argument[0];Argument[this];taint;df-generated | | System.Diagnostics;ProcessThreadCollection;false;Add;(System.Diagnostics.ProcessThread);;Argument[0];Argument[this].Element;value;manual | | System.Diagnostics;ProcessThreadCollection;false;CopyTo;(System.Diagnostics.ProcessThread[],System.Int32);;Argument[this].Element;Argument[0].Element;value;manual | | System.Diagnostics;SampleActivity<T>;false;BeginInvoke;(System.Diagnostics.ActivityCreationOptions<T>,System.AsyncCallback,System.Object);;Argument[1];Argument[1].Parameter[delegate-self];value;hq-generated | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected index fe27701d59d0..b5f8eca16eb7 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-078/CommandInjection.expected @@ -6,23 +6,14 @@ edges | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput | provenance | | | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | provenance | | | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | provenance | | | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | provenance | | | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput | provenance | | -| CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | provenance | | | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:27:32:27:51 | access to property Text : String | provenance | | | CommandInjection.cs:27:32:27:51 | access to property Text : String | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | provenance | | | CommandInjection.cs:30:30:30:38 | access to local variable startInfo : ProcessStartInfo | CommandInjection.cs:31:27:31:35 | access to local variable startInfo | provenance | | | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | CommandInjection.cs:30:30:30:38 | access to local variable startInfo : ProcessStartInfo | provenance | | | CommandInjection.cs:30:63:30:71 | access to local variable userInput : String | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | CommandInjection.cs:30:42:30:83 | object creation of type ProcessStartInfo : ProcessStartInfo | provenance | | -| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | provenance | | -| CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | -| CommandInjection.cs:35:13:35:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | provenance | | -| CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | CommandInjection.cs:35:13:35:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | -| CommandInjection.cs:36:13:36:26 | [post] access to local variable startInfoProps : ProcessStartInfo | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | provenance | | -| CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | CommandInjection.cs:36:13:36:26 | [post] access to local variable startInfoProps : ProcessStartInfo | provenance | | | CommandInjection.cs:51:54:51:80 | call to method GetString : String | CommandInjection.cs:51:46:51:80 | ... + ... | provenance | | nodes | CommandInjection.cs:27:20:27:28 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | @@ -37,16 +28,9 @@ nodes | CommandInjection.cs:30:74:30:82 | access to local variable userInput | semmle.label | access to local variable userInput | | CommandInjection.cs:30:74:30:82 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | | CommandInjection.cs:31:27:31:35 | access to local variable startInfo | semmle.label | access to local variable startInfo | -| CommandInjection.cs:34:13:34:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:34:39:34:47 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:34:39:34:47 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:35:13:35:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:35:40:35:48 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:35:40:35:48 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:36:13:36:26 | [post] access to local variable startInfoProps : ProcessStartInfo | semmle.label | [post] access to local variable startInfoProps : ProcessStartInfo | | CommandInjection.cs:36:47:36:55 | access to local variable userInput | semmle.label | access to local variable userInput | -| CommandInjection.cs:36:47:36:55 | access to local variable userInput : String | semmle.label | access to local variable userInput : String | -| CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | semmle.label | access to local variable startInfoProps | | CommandInjection.cs:51:46:51:80 | ... + ... | semmle.label | ... + ... | | CommandInjection.cs:51:54:51:80 | call to method GetString : String | semmle.label | call to method GetString : String | subpaths @@ -59,5 +43,4 @@ subpaths | CommandInjection.cs:34:39:34:47 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:34:39:34:47 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | | CommandInjection.cs:35:40:35:48 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:35:40:35:48 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | | CommandInjection.cs:36:47:36:55 | access to local variable userInput | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:36:47:36:55 | access to local variable userInput | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | -| CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox : TextBox | CommandInjection.cs:37:27:37:40 | access to local variable startInfoProps | This command line depends on a $@. | CommandInjection.cs:27:32:27:46 | access to field categoryTextBox | user-provided value | | CommandInjection.cs:51:46:51:80 | ... + ... | CommandInjection.cs:51:54:51:80 | call to method GetString : String | CommandInjection.cs:51:46:51:80 | ... + ... | This command line depends on a $@. | CommandInjection.cs:51:54:51:80 | call to method GetString | user-provided value | From 55fa245194bbc9a78bc36a39ec5922c72562a831 Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" <mbg@github.com> Date: Tue, 2 Apr 2024 15:20:56 +0100 Subject: [PATCH 637/731] Go: Revert `go version` call in `LoadGoModules` --- go/extractor/project/project.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/go/extractor/project/project.go b/go/extractor/project/project.go index 921347338565..4f6f6542f75f 100644 --- a/go/extractor/project/project.go +++ b/go/extractor/project/project.go @@ -212,16 +212,6 @@ func LoadGoModules(emitDiagnostics bool, goModFilePaths []string) []*GoModule { if modFile.Toolchain == nil && modFile.Go != nil && !toolchainVersionRe.Match([]byte(modFile.Go.Version)) && semver.Compare("v"+modFile.Go.Version, "v1.21.0") >= 0 { diagnostics.EmitInvalidToolchainVersion(goModFilePath, modFile.Go.Version) - - modPath := filepath.Dir(goModFilePath) - - log.Printf( - "`%s` is not a valid toolchain version, trying to install it explicitly using the canonical representation in `%s`.", - modFile.Go.Version, - modPath, - ) - - toolchain.InstallVersion(modPath, modFile.Go.Version) } } From a22b9947c02eee14b05205ab7c520a2add13de5b Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 2 Apr 2024 14:52:36 +0200 Subject: [PATCH 638/731] Python: Revert `IterableSequenceNode` as LocalSourceNode When looking things over a bit more, we could actually exclude the steps that would never be used instead. A much more involved solution, but more performance oriented and clear in terms of what is supported (at least until we start supporting type-tracking with more than depth 1 access-path, if that ever happens) --- .../TypeTrackingConsistency.ql | 4 -- .../dataflow/new/internal/LocalSources.qll | 2 - .../new/internal/TypeTrackingImpl.qll | 45 +++++++++++++++++-- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/python/ql/consistency-queries/TypeTrackingConsistency.ql b/python/ql/consistency-queries/TypeTrackingConsistency.ql index 551573a7aef7..645bdef52194 100644 --- a/python/ql/consistency-queries/TypeTrackingConsistency.ql +++ b/python/ql/consistency-queries/TypeTrackingConsistency.ql @@ -27,10 +27,6 @@ private module ConsistencyChecksInput implements ConsistencyChecksInputSig { TypeTrackingInput::simpleLocalSmallStep*(m, n) ) or - // TODO: when adding support for proper content, handle iterable unpacking better - // such as `for k,v in items:`, or `a, (b,c) = ...` - n instanceof DataFlow::IterableSequenceNode - or // We have missing use-use flow in // https://github.com/python/cpython/blob/0fb18b02c8ad56299d6a2910be0bab8ad601ef24/Lib/socketserver.py#L276-L303 // which I couldn't just fix. We ignore the problems here, and instead rely on the diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll index 92d9e5887ad8..34b137b35115 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/LocalSources.qll @@ -74,8 +74,6 @@ class LocalSourceNode extends Node { this instanceof ScopeEntryDefinitionNode or this instanceof ParameterNode - or - this instanceof IterableSequenceNode } /** Holds if this `LocalSourceNode` can flow to `nodeTo` in one or more local flow steps. */ diff --git a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll index ce95a6cca4e2..42ce5cdd2377 100644 --- a/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll +++ b/python/ql/lib/semmle/python/dataflow/new/internal/TypeTrackingImpl.qll @@ -8,6 +8,7 @@ private import semmle.python.dataflow.new.internal.DataFlowPrivate as DataFlowPr private import codeql.typetracking.internal.SummaryTypeTracker as SummaryTypeTracker private import semmle.python.dataflow.new.internal.FlowSummaryImpl as FlowSummaryImpl private import semmle.python.dataflow.new.internal.DataFlowDispatch as DataFlowDispatch +private import semmle.python.dataflow.new.internal.IterableUnpacking as IterableUnpacking private module SummaryTypeTrackerInput implements SummaryTypeTracker::Input { // Dataflow nodes @@ -135,7 +136,27 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { } /** Holds if there is a simple local flow step from `nodeFrom` to `nodeTo` */ - predicate simpleLocalSmallStep = DataFlowPrivate::simpleLocalFlowStepForTypetracking/2; + predicate simpleLocalSmallStep(Node nodeFrom, Node nodeTo) { + DataFlowPrivate::simpleLocalFlowStepForTypetracking(nodeFrom, nodeTo) and + // for `for k,v in foo` no need to do local flow step from the synthetic sequence + // node for `k,v` to the tuple `k,v` -- since type-tracking only supports one level + // of content tracking, and there is one read-step from `foo` the synthetic sequence + // node required, we can skip the flow step from the synthetic sequence node to the + // tuple itself, since the read-step from the tuple to the tuple elements will not + // matter. + not ( + IterableUnpacking::iterableUnpackingForReadStep(_, _, nodeFrom) and + IterableUnpacking::iterableUnpackingTupleFlowStep(nodeFrom, nodeTo) + ) and + // for nested iterable unpacking, such as `[[a]] = foo` or `((a,b),) = bar`, we can + // ignore the flow steps from the synthetic sequence node to the real sequence node, + // since we only support one level of content in type-trackers, and the nested + // structure requires two levels at least to be useful. + not exists(SequenceNode outer | + outer.getAnElement() = nodeTo.asCfgNode() and + IterableUnpacking::iterableUnpackingTupleFlowStep(nodeFrom, nodeTo) + ) + } /** Holds if there is a level step from `nodeFrom` to `nodeTo`, which may depend on the call graph. */ predicate levelStepCall(Node nodeFrom, LocalSourceNode nodeTo) { none() } @@ -200,7 +221,10 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { nodeTo = storeTarget or nodeTo = storeTarget.(DataFlowPrivate::SyntheticPostUpdateNode).getPreUpdateNode() - ) + ) and + // when only supporting precise content, no need for IterableElementNode (since it + // is only fed set/list content) + not nodeFrom instanceof DataFlowPublic::IterableElementNode or TypeTrackerSummaryFlow::basicStoreStep(nodeFrom, nodeTo, content) } @@ -216,7 +240,22 @@ module TypeTrackingInput implements Shared::TypeTrackingInput { nodeTo = a ) or - DataFlowPrivate::readStepCommon(nodeFrom, content, nodeTo) + DataFlowPrivate::readStepCommon(nodeFrom, content, nodeTo) and + // Since we only support one level of content in type-trackers we don't actually + // support `(aa, ab), (ba, bb) = ...`. Therefore we exclude the read-step from `(aa, + // ab)` to `aa` (since it is not needed). + not exists(SequenceNode outer | + outer.getAnElement() = nodeFrom.asCfgNode() and + IterableUnpacking::iterableUnpackingTupleFlowStep(_, nodeFrom) + ) and + // Again, due to only supporting one level deep, for `for (k,v) in ...` we exclude read-step from + // the tuple to `k` and `v`. + not exists(DataFlowPublic::IterableSequenceNode seq, DataFlowPublic::IterableElementNode elem | + IterableUnpacking::iterableUnpackingForReadStep(_, _, seq) and + IterableUnpacking::iterableUnpackingConvertingReadStep(seq, _, elem) and + IterableUnpacking::iterableUnpackingConvertingStoreStep(elem, _, nodeFrom) and + nodeFrom.asCfgNode() instanceof SequenceNode + ) or TypeTrackerSummaryFlow::basicLoadStep(nodeFrom, nodeTo, content) } From 6c649c898ef167b34133b23fdce9ca276a8c41d9 Mon Sep 17 00:00:00 2001 From: Chuan-kai Lin <cklin@github.com> Date: Tue, 2 Apr 2024 10:06:20 -0700 Subject: [PATCH 639/731] Revert "Release preparation for version 2.17.0" --- cpp/ql/lib/CHANGELOG.md | 15 --------------- .../2024-03-15-switches-in-guard-conditions.md | 4 ++++ .../2024-03-19-ir-temp-extended-destructors.md | 4 ++++ ...3-19-predicates-for-switches-as-guards-2.md | 5 +++++ ...-03-19-predicates-for-switches-as-guards.md | 5 +++++ .../2024-03-26-taint-inheriting-content.md | 4 ++++ cpp/ql/lib/change-notes/released/0.12.10.md | 14 -------------- cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 16 ---------------- .../2024-03-05-type-confusion-query.md | 4 ++++ .../2024-03-13-glib-alloc-and-dealloc.md | 4 ++++ ...4-03-18-uninitialized-local-path-problem.md | 4 ++++ ...4-03-20-missing-check-scanf-path-problem.md | 4 ++++ .../src/change-notes/2024-03-22-boost-ssl.md | 4 ++++ cpp/ql/src/change-notes/released/0.9.9.md | 15 --------------- cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ---- .../lib/change-notes/released/1.7.13.md | 3 --- .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ---- .../src/change-notes/released/1.7.13.md | 3 --- .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 18 ------------------ .../2024-03-04-deprecate-dotnet-and-cil.md | 4 ++++ ...-03-04-fixed-system.io.textreader-models.md | 4 ++++ ...5-new-commandargs-and-environment-models.md | 5 +++++ .../2024-03-07-remove-cil-extractor.md | 4 ++++ ...ystem.net.http.httprequestmessage-models.md | 4 ++++ .../2024-03-11-csharp12-dotnet8.md | 4 ++++ .../2024-03-11-registry-sources.md | 4 ++++ .../2024-03-13-system.io-models.md | 4 ++++ .../2024-03-14-dapper-source-models.md | 4 ++++ csharp/ql/lib/change-notes/released/0.9.0.md | 17 ----------------- csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 11 ----------- .../2024-03-06-remove-default-local-sources.md | 5 +++++ .../2024-03-11-remove-stored-query-variants.md | 5 +++++ .../2024-03-21-change-compareto-signature.md | 5 +++++ csharp/ql/src/change-notes/released/0.8.13.md | 10 ---------- csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ---- .../change-notes/released/0.0.12.md | 3 --- .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 7 ------- .../change-notes/2024-03-04-macaron-sources.md | 4 ++++ ...4-03-20-dependecy-retrieval-improvement.md} | 8 +++----- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 11 ----------- .../2024-03-05-squirrel-sqli-sinks.md | 4 ++++ ...2024-03-07-uncontrolled-allocation-size.md} | 12 +++--------- ...03-14-hardcoded-credentials-more-sources.md | 4 ++++ go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ---- .../src/change-notes/released/0.0.20.md | 3 --- java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 13 ------------- ...3-11-add-parcelfiledescriptor-open-model.md | 4 ++++ .../ql/lib/change-notes/2024-03-21-env-vars.md | 4 ++++ .../2024-03-22-anonymous-variables.md | 5 +++++ .../2024-03-26-url-models-precision.md | 4 ++++ java/ql/lib/change-notes/released/0.9.0.md | 12 ------------ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 15 --------------- .../2024-03-06-url-forward-query.md | 4 ++++ .../2024-03-12-request-sanitizers.md | 4 ++++ ...03-24-sensitive-log-whitelist-tokenimage.md | 4 ++++ .../2024-03-27-MissingEnumInSwitch.md | 4 ++++ java/ql/src/change-notes/released/0.8.13.md | 14 -------------- java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 6 ------ .../change-notes/2024-02-02-typescript-5-4.md | 4 ++++ .../ql/lib/change-notes/released/0.8.13.md | 5 ----- javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 10 ---------- .../2024-03-07-lift-cg-restriction.md | 4 ++++ .../2024-03-21-target-blank-precision.md | 4 ++++ .../ql/src/change-notes/released/0.8.13.md | 9 --------- javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ---- .../change-notes/released/0.7.13.md | 3 --- misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 4 ---- python/ql/lib/change-notes/released/0.11.13.md | 3 --- python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ---- python/ql/src/change-notes/released/0.9.13.md | 3 --- python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 10 ---------- .../change-notes/2024-02-27-process-spawn.md | 4 ++++ .../2024-03-01-typhoeus-request.md | 4 ++++ .../2024-03-08-activerecord-from.md | 4 ++++ .../2024-03-14-actiondispatch-uploadedfile.md | 4 ++++ .../2024-03-19-activerecord-scopes.md | 4 ++++ ruby/ql/lib/change-notes/released/0.8.13.md | 9 --------- ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ---- ruby/ql/src/change-notes/released/0.8.13.md | 3 --- ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ---- .../change-notes/released/0.1.13.md | 3 --- shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 6 ------ .../0.2.4.md => 2024-02-28-hidden-subpaths.md} | 7 +++---- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ---- shared/mad/change-notes/released/0.2.13.md | 3 --- shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ---- .../change-notes/released/0.0.12.md | 3 --- shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ---- shared/regex/change-notes/released/0.2.13.md | 3 --- shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ---- shared/ssa/change-notes/released/0.2.13.md | 3 --- shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ---- .../change-notes/released/0.0.12.md | 3 --- shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ---- .../tutorial/change-notes/released/0.2.13.md | 3 --- shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ---- .../change-notes/released/0.2.13.md | 3 --- shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ---- shared/typos/change-notes/released/0.2.13.md | 3 --- shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ---- shared/util/change-notes/released/0.2.13.md | 3 --- shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ---- shared/yaml/change-notes/released/0.2.13.md | 3 --- shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 7 ------- .../0.3.13.md => 2024-03-28-swift-5.10.md} | 7 +++---- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ---- swift/ql/src/change-notes/released/0.3.13.md | 3 --- swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 173 files changed, 249 insertions(+), 478 deletions(-) create mode 100644 cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md create mode 100644 cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md create mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md create mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md create mode 100644 cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md delete mode 100644 cpp/ql/lib/change-notes/released/0.12.10.md create mode 100644 cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md create mode 100644 cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md create mode 100644 cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md create mode 100644 cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md create mode 100644 cpp/ql/src/change-notes/2024-03-22-boost-ssl.md delete mode 100644 cpp/ql/src/change-notes/released/0.9.9.md delete mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md delete mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md create mode 100644 csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md create mode 100644 csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md create mode 100644 csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md create mode 100644 csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md create mode 100644 csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md create mode 100644 csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md create mode 100644 csharp/ql/lib/change-notes/2024-03-11-registry-sources.md create mode 100644 csharp/ql/lib/change-notes/2024-03-13-system.io-models.md create mode 100644 csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md delete mode 100644 csharp/ql/lib/change-notes/released/0.9.0.md create mode 100644 csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md create mode 100644 csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md create mode 100644 csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md delete mode 100644 csharp/ql/src/change-notes/released/0.8.13.md delete mode 100644 go/ql/consistency-queries/change-notes/released/0.0.12.md create mode 100644 go/ql/lib/change-notes/2024-03-04-macaron-sources.md rename go/ql/lib/change-notes/{released/0.7.13.md => 2024-03-20-dependecy-retrieval-improvement.md} (63%) create mode 100644 go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md rename go/ql/src/change-notes/{released/0.7.13.md => 2024-03-07-uncontrolled-allocation-size.md} (53%) create mode 100644 go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md delete mode 100644 java/ql/automodel/src/change-notes/released/0.0.20.md create mode 100644 java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md create mode 100644 java/ql/lib/change-notes/2024-03-21-env-vars.md create mode 100644 java/ql/lib/change-notes/2024-03-22-anonymous-variables.md create mode 100644 java/ql/lib/change-notes/2024-03-26-url-models-precision.md delete mode 100644 java/ql/lib/change-notes/released/0.9.0.md create mode 100644 java/ql/src/change-notes/2024-03-06-url-forward-query.md create mode 100644 java/ql/src/change-notes/2024-03-12-request-sanitizers.md create mode 100644 java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md create mode 100644 java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md delete mode 100644 java/ql/src/change-notes/released/0.8.13.md create mode 100644 javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md delete mode 100644 javascript/ql/lib/change-notes/released/0.8.13.md create mode 100644 javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md create mode 100644 javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md delete mode 100644 javascript/ql/src/change-notes/released/0.8.13.md delete mode 100644 misc/suite-helpers/change-notes/released/0.7.13.md delete mode 100644 python/ql/lib/change-notes/released/0.11.13.md delete mode 100644 python/ql/src/change-notes/released/0.9.13.md create mode 100644 ruby/ql/lib/change-notes/2024-02-27-process-spawn.md create mode 100644 ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md create mode 100644 ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md create mode 100644 ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md create mode 100644 ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md delete mode 100644 ruby/ql/lib/change-notes/released/0.8.13.md delete mode 100644 ruby/ql/src/change-notes/released/0.8.13.md delete mode 100644 shared/controlflow/change-notes/released/0.1.13.md rename shared/dataflow/change-notes/{released/0.2.4.md => 2024-02-28-hidden-subpaths.md} (90%) delete mode 100644 shared/mad/change-notes/released/0.2.13.md delete mode 100644 shared/rangeanalysis/change-notes/released/0.0.12.md delete mode 100644 shared/regex/change-notes/released/0.2.13.md delete mode 100644 shared/ssa/change-notes/released/0.2.13.md delete mode 100644 shared/threat-models/change-notes/released/0.0.12.md delete mode 100644 shared/tutorial/change-notes/released/0.2.13.md delete mode 100644 shared/typetracking/change-notes/released/0.2.13.md delete mode 100644 shared/typos/change-notes/released/0.2.13.md delete mode 100644 shared/util/change-notes/released/0.2.13.md delete mode 100644 shared/yaml/change-notes/released/0.2.13.md rename swift/ql/lib/change-notes/{released/0.3.13.md => 2024-03-28-swift-5.10.md} (59%) delete mode 100644 swift/ql/src/change-notes/released/0.3.13.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 0ca4b5393255..4b69a1d5b361 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,18 +1,3 @@ -## 0.12.10 - -### New Features - -* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. -* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. - -### Minor Analysis Improvements - -* Added destructors for temporary objects with extended lifetimes to the intermediate representation. - ## 0.12.9 No user-facing changes. diff --git a/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md b/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md new file mode 100644 index 000000000000..cf0b920e29dc --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md b/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md new file mode 100644 index 000000000000..6def83033361 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added destructors for temporary objects with extended lifetimes to the intermediate representation. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md new file mode 100644 index 000000000000..88b4048f8cd1 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md @@ -0,0 +1,5 @@ +--- +category: feature +--- +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md new file mode 100644 index 000000000000..3dde8805599f --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md @@ -0,0 +1,5 @@ +--- +category: feature +--- +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md b/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md new file mode 100644 index 000000000000..759386e461f6 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/0.12.10.md b/cpp/ql/lib/change-notes/released/0.12.10.md deleted file mode 100644 index 64d91af2118c..000000000000 --- a/cpp/ql/lib/change-notes/released/0.12.10.md +++ /dev/null @@ -1,14 +0,0 @@ -## 0.12.10 - -### New Features - -* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. -* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. - -### Minor Analysis Improvements - -* Added destructors for temporary objects with extended lifetimes to the intermediate representation. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index bd659eb114fa..dce1e02b6465 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.10 +lastReleaseVersion: 0.12.9 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index f8358ae72df4..eebc47c089bf 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.10 +version: 0.12.10-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 01ec26e694f9..52c46f65267e 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,19 +1,3 @@ -## 0.9.9 - -### New Queries - -* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. - -### Query Metadata Changes - -* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. - -### Minor Analysis Improvements - -* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. -* Added models for `GLib` allocation and deallocation functions. - ## 0.9.8 No user-facing changes. diff --git a/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md b/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md new file mode 100644 index 000000000000..f96a4684b769 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md b/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md new file mode 100644 index 000000000000..bc9082285d41 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added models for `GLib` allocation and deallocation functions. diff --git a/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md b/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md new file mode 100644 index 000000000000..14a8c2e7ce74 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md b/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md new file mode 100644 index 000000000000..12a185add1ea --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md b/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md new file mode 100644 index 000000000000..d4a4e0a73073 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. diff --git a/cpp/ql/src/change-notes/released/0.9.9.md b/cpp/ql/src/change-notes/released/0.9.9.md deleted file mode 100644 index 46f120c28d76..000000000000 --- a/cpp/ql/src/change-notes/released/0.9.9.md +++ /dev/null @@ -1,15 +0,0 @@ -## 0.9.9 - -### New Queries - -* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. - -### Query Metadata Changes - -* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. - -### Minor Analysis Improvements - -* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. -* Added models for `GLib` allocation and deallocation functions. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index aabed7c396b7..9ca6c6f26786 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.9 +lastReleaseVersion: 0.9.8 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 5d9a5252c00d..ce202c1b85d1 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.9 +version: 0.9.9-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index 50143af24fbb..bea6df22685c 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.13 - -No user-facing changes. - ## 1.7.12 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md deleted file mode 100644 index e2656ce672c1..000000000000 --- a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.13 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index e5f93542dfcc..6d169efe9202 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.13 +lastReleaseVersion: 1.7.12 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index f12c8e2c95e5..f3bf8992f7d4 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.13 +version: 1.7.13-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index 50143af24fbb..bea6df22685c 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 1.7.13 - -No user-facing changes. - ## 1.7.12 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md deleted file mode 100644 index e2656ce672c1..000000000000 --- a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1.7.13 - -No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index e5f93542dfcc..6d169efe9202 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.13 +lastReleaseVersion: 1.7.12 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 74444203f849..a732080cfb41 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.13 +version: 1.7.13-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 27133addc5c3..37d2c804be83 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,21 +1,3 @@ -## 0.9.0 - -### Breaking Changes - -* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. -* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. - -### Minor Analysis Improvements - -* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. -* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. -* Support for C# 12 / .NET8. -* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. -* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. -* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. -* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. -* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. - ## 0.8.12 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md b/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md new file mode 100644 index 000000000000..fea31bb8bbb2 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. diff --git a/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md b/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md new file mode 100644 index 000000000000..a32f8a7c22c7 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. diff --git a/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md b/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md new file mode 100644 index 000000000000..0bee733157ce --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. +* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. diff --git a/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md b/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md new file mode 100644 index 000000000000..36be2372b4ec --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. diff --git a/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md b/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md new file mode 100644 index 000000000000..2ac3a1059c6b --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md b/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md new file mode 100644 index 000000000000..7111e8966d68 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Support for C# 12 / .NET8. diff --git a/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md b/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md new file mode 100644 index 000000000000..1d1050491855 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. diff --git a/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md b/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md new file mode 100644 index 000000000000..84db6a663aea --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. diff --git a/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md b/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md new file mode 100644 index 000000000000..204ae7db3ae9 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. diff --git a/csharp/ql/lib/change-notes/released/0.9.0.md b/csharp/ql/lib/change-notes/released/0.9.0.md deleted file mode 100644 index 32e8e35d76d1..000000000000 --- a/csharp/ql/lib/change-notes/released/0.9.0.md +++ /dev/null @@ -1,17 +0,0 @@ -## 0.9.0 - -### Breaking Changes - -* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. -* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. - -### Minor Analysis Improvements - -* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. -* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. -* Support for C# 12 / .NET8. -* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. -* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. -* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. -* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. -* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 8b9fc185202d..af4e83c549e4 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.0 +lastReleaseVersion: 0.8.12 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index bd9558fa2494..7d389b9e5604 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.9.0 +version: 0.8.13-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index bbd7f8bc147e..df97b469252a 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.8.13 - -### Major Analysis Improvements - -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. - -### Minor Analysis Improvements - -* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. -* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. - ## 0.8.12 No user-facing changes. diff --git a/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md b/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md new file mode 100644 index 000000000000..19494571ad15 --- /dev/null +++ b/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. + diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md new file mode 100644 index 000000000000..3ca0b14f7b2b --- /dev/null +++ b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md @@ -0,0 +1,5 @@ +--- +category: majorAnalysis +--- +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. + diff --git a/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md b/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md new file mode 100644 index 000000000000..026321ea9af2 --- /dev/null +++ b/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. + diff --git a/csharp/ql/src/change-notes/released/0.8.13.md b/csharp/ql/src/change-notes/released/0.8.13.md deleted file mode 100644 index e534c66fc8ed..000000000000 --- a/csharp/ql/src/change-notes/released/0.8.13.md +++ /dev/null @@ -1,10 +0,0 @@ -## 0.8.13 - -### Major Analysis Improvements - -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. - -### Minor Analysis Improvements - -* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. -* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 0fb6f3d786cb..af4e83c549e4 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.13 +lastReleaseVersion: 0.8.12 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 609c625fe5a3..e9d1d526a81b 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.13 +version: 0.8.13-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 83a42fb05515..d9dd6b6f2e25 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.12 - -No user-facing changes. - ## 0.0.11 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.12.md b/go/ql/consistency-queries/change-notes/released/0.0.12.md deleted file mode 100644 index 0e206033bc47..000000000000 --- a/go/ql/consistency-queries/change-notes/released/0.0.12.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.12 - -No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index 997fb8da83cd..e679dc420925 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.11 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index fbd2978d4389..3c398a7cf84f 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.12 +version: 0.0.12-dev groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 0fa4dfe0ec80..bc6537af817a 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.7.13 - -### Minor Analysis Improvements - -* The `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. -* Added dataflow sources for the package `gopkg.in/macaron.v1`. - ## 0.7.12 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-03-04-macaron-sources.md b/go/ql/lib/change-notes/2024-03-04-macaron-sources.md new file mode 100644 index 000000000000..72ea242510de --- /dev/null +++ b/go/ql/lib/change-notes/2024-03-04-macaron-sources.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added dataflow sources for the package `gopkg.in/macaron.v1`. diff --git a/go/ql/lib/change-notes/released/0.7.13.md b/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md similarity index 63% rename from go/ql/lib/change-notes/released/0.7.13.md rename to go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md index c6fab4935a1f..42fc258f9735 100644 --- a/go/ql/lib/change-notes/released/0.7.13.md +++ b/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md @@ -1,6 +1,4 @@ -## 0.7.13 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * The `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. -* Added dataflow sources for the package `gopkg.in/macaron.v1`. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 8a077216acc0..8afa417865a1 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.13 +lastReleaseVersion: 0.7.12 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 2c1fbe254faa..8cc40e77dec2 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.13 +version: 0.7.13-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 2bee579db9cb..497f82e86798 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,14 +1,3 @@ -## 0.7.13 - -### New Queries - -* The query "Slice memory allocation with excessive size value" (`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally [submitted as an experimental query by @Malayke](https://github.com/github/codeql/pull/15130). - -### Minor Analysis Improvements - -* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. -* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. - ## 0.7.12 No user-facing changes. diff --git a/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md b/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md new file mode 100644 index 000000000000..0b6a78df9f93 --- /dev/null +++ b/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. diff --git a/go/ql/src/change-notes/released/0.7.13.md b/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md similarity index 53% rename from go/ql/src/change-notes/released/0.7.13.md rename to go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md index e11b39869790..663932005eb1 100644 --- a/go/ql/src/change-notes/released/0.7.13.md +++ b/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md @@ -1,10 +1,4 @@ -## 0.7.13 - -### New Queries - +--- +category: newQuery +--- * The query "Slice memory allocation with excessive size value" (`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally [submitted as an experimental query by @Malayke](https://github.com/github/codeql/pull/15130). - -### Minor Analysis Improvements - -* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. -* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. diff --git a/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md b/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md new file mode 100644 index 000000000000..ad6f712958e6 --- /dev/null +++ b/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 8a077216acc0..8afa417865a1 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.13 +lastReleaseVersion: 0.7.12 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 2ab9616891b2..080d257b8d02 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.13 +version: 0.7.13-dev groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index af83bbb07001..0205da54adf8 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.20 - -No user-facing changes. - ## 0.0.19 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.20.md b/java/ql/automodel/src/change-notes/released/0.0.20.md deleted file mode 100644 index 98daf20a59a1..000000000000 --- a/java/ql/automodel/src/change-notes/released/0.0.20.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.20 - -No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index d2e86745bcaa..f406319f372e 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.20 +lastReleaseVersion: 0.0.19 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index c4b5940f928b..1c22e00eb0e2 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.20 +version: 0.0.20-dev groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 36c5ca2a6a6a..5f8d993294ad 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,16 +1,3 @@ -## 0.9.0 - -### Breaking Changes - -* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. - -### Minor Analysis Improvements - -* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. -* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. -* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. -* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. - ## 0.8.12 No user-facing changes. diff --git a/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md b/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md new file mode 100644 index 000000000000..31f76712828e --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. diff --git a/java/ql/lib/change-notes/2024-03-21-env-vars.md b/java/ql/lib/change-notes/2024-03-21-env-vars.md new file mode 100644 index 000000000000..9306a814a7c9 --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-21-env-vars.md @@ -0,0 +1,4 @@ +--- +category: breaking +--- +* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. diff --git a/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md b/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md new file mode 100644 index 000000000000..029d3dfbff42 --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. +* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. diff --git a/java/ql/lib/change-notes/2024-03-26-url-models-precision.md b/java/ql/lib/change-notes/2024-03-26-url-models-precision.md new file mode 100644 index 000000000000..d6fb561e725f --- /dev/null +++ b/java/ql/lib/change-notes/2024-03-26-url-models-precision.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. diff --git a/java/ql/lib/change-notes/released/0.9.0.md b/java/ql/lib/change-notes/released/0.9.0.md deleted file mode 100644 index ad20fb98cbfb..000000000000 --- a/java/ql/lib/change-notes/released/0.9.0.md +++ /dev/null @@ -1,12 +0,0 @@ -## 0.9.0 - -### Breaking Changes - -* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. - -### Minor Analysis Improvements - -* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. -* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. -* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. -* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 8b9fc185202d..af4e83c549e4 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.0 +lastReleaseVersion: 0.8.12 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 768e57ad9c68..c3a0a9476bb8 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.9.0 +version: 0.8.13-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 4b758396b916..73ab2688c982 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,18 +1,3 @@ -## 0.8.13 - -### New Queries - -* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). - -### Major Analysis Improvements - -* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. - -### Minor Analysis Improvements - -* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. -* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. - ## 0.8.12 No user-facing changes. diff --git a/java/ql/src/change-notes/2024-03-06-url-forward-query.md b/java/ql/src/change-notes/2024-03-06-url-forward-query.md new file mode 100644 index 000000000000..46028bda4f21 --- /dev/null +++ b/java/ql/src/change-notes/2024-03-06-url-forward-query.md @@ -0,0 +1,4 @@ +--- +category: newQuery +--- +* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). diff --git a/java/ql/src/change-notes/2024-03-12-request-sanitizers.md b/java/ql/src/change-notes/2024-03-12-request-sanitizers.md new file mode 100644 index 000000000000..08229d6d7d0d --- /dev/null +++ b/java/ql/src/change-notes/2024-03-12-request-sanitizers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md new file mode 100644 index 000000000000..017e5abd7eee --- /dev/null +++ b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. diff --git a/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md b/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md new file mode 100644 index 000000000000..b1531dab6558 --- /dev/null +++ b/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. diff --git a/java/ql/src/change-notes/released/0.8.13.md b/java/ql/src/change-notes/released/0.8.13.md deleted file mode 100644 index 22dba4fa4fa6..000000000000 --- a/java/ql/src/change-notes/released/0.8.13.md +++ /dev/null @@ -1,14 +0,0 @@ -## 0.8.13 - -### New Queries - -* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). - -### Major Analysis Improvements - -* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. - -### Minor Analysis Improvements - -* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. -* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 0fb6f3d786cb..af4e83c549e4 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.13 +lastReleaseVersion: 0.8.12 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index d67193843bea..ab853297ba95 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.13 +version: 0.8.13-dev groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 4d66cfc9f6c5..2bdc2e4152a0 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.8.13 - -### Major Analysis Improvements - -* Added support for TypeScript 5.4. - ## 0.8.12 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md b/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md new file mode 100644 index 000000000000..836719b5d6bf --- /dev/null +++ b/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Added support for TypeScript 5.4. \ No newline at end of file diff --git a/javascript/ql/lib/change-notes/released/0.8.13.md b/javascript/ql/lib/change-notes/released/0.8.13.md deleted file mode 100644 index bfa4a62d5ae5..000000000000 --- a/javascript/ql/lib/change-notes/released/0.8.13.md +++ /dev/null @@ -1,5 +0,0 @@ -## 0.8.13 - -### Major Analysis Improvements - -* Added support for TypeScript 5.4. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 0fb6f3d786cb..af4e83c549e4 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.13 +lastReleaseVersion: 0.8.12 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 1ed74009ef0c..fd7d54764024 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.13 +version: 0.8.13-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 2ae12bca4841..43cbc8facf85 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,13 +1,3 @@ -## 0.8.13 - -### Query Metadata Changes - -* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. - -### Minor Analysis Improvements - -* The call graph has been improved, leading to more alerts for data flow based queries. - ## 0.8.12 No user-facing changes. diff --git a/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md b/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md new file mode 100644 index 000000000000..4d591aaf9a27 --- /dev/null +++ b/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The call graph has been improved, leading to more alerts for data flow based queries. diff --git a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md new file mode 100644 index 000000000000..5bcb0ba74635 --- /dev/null +++ b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md @@ -0,0 +1,4 @@ +--- +category: queryMetadata +--- +* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. \ No newline at end of file diff --git a/javascript/ql/src/change-notes/released/0.8.13.md b/javascript/ql/src/change-notes/released/0.8.13.md deleted file mode 100644 index 282e759a49e4..000000000000 --- a/javascript/ql/src/change-notes/released/0.8.13.md +++ /dev/null @@ -1,9 +0,0 @@ -## 0.8.13 - -### Query Metadata Changes - -* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. - -### Minor Analysis Improvements - -* The call graph has been improved, leading to more alerts for data flow based queries. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 0fb6f3d786cb..af4e83c549e4 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.13 +lastReleaseVersion: 0.8.12 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 49576a207cd5..6967bcbff044 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.13 +version: 0.8.13-dev groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index 3b1863cfbf15..c61f0b26d002 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.7.13 - -No user-facing changes. - ## 0.7.12 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.13.md b/misc/suite-helpers/change-notes/released/0.7.13.md deleted file mode 100644 index fac5f02103fa..000000000000 --- a/misc/suite-helpers/change-notes/released/0.7.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.7.13 - -No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 8a077216acc0..8afa417865a1 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.13 +lastReleaseVersion: 0.7.12 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 94ac367a7557..c366cba2c912 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.13 +version: 0.7.13-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 645b686ac8c1..966356feed28 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.11.13 - -No user-facing changes. - ## 0.11.12 No user-facing changes. diff --git a/python/ql/lib/change-notes/released/0.11.13.md b/python/ql/lib/change-notes/released/0.11.13.md deleted file mode 100644 index e8bde4caf9fd..000000000000 --- a/python/ql/lib/change-notes/released/0.11.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.11.13 - -No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 387883efdfb3..28f7725cf851 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.13 +lastReleaseVersion: 0.11.12 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index c150a37790c2..f2357da6c2c9 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.13 +version: 0.11.13-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index 53ed161fecbf..d8737a310b3b 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.9.13 - -No user-facing changes. - ## 0.9.12 No user-facing changes. diff --git a/python/ql/src/change-notes/released/0.9.13.md b/python/ql/src/change-notes/released/0.9.13.md deleted file mode 100644 index e188021618c3..000000000000 --- a/python/ql/src/change-notes/released/0.9.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.9.13 - -No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 74bee36d150c..12f1a311ecad 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.13 +lastReleaseVersion: 0.9.12 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index b24b25bd8211..c6d2ef63f29f 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.13 +version: 0.9.13-dev groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index a33055760537..9b2503120f90 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,13 +1,3 @@ -## 0.8.13 - -### Minor Analysis Improvements - -* Data flow is now tracked through `ActiveRecord` scopes. -* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. -* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. -* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. -* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. - ## 0.8.12 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md new file mode 100644 index 000000000000..9c20f05d8659 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md b/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md new file mode 100644 index 000000000000..f008869fbcd5 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md b/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md new file mode 100644 index 000000000000..704a4f27a619 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md b/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md new file mode 100644 index 000000000000..a02ca0d00a2a --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md b/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md new file mode 100644 index 000000000000..963479568a0b --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Data flow is now tracked through `ActiveRecord` scopes. diff --git a/ruby/ql/lib/change-notes/released/0.8.13.md b/ruby/ql/lib/change-notes/released/0.8.13.md deleted file mode 100644 index cc844ffc764e..000000000000 --- a/ruby/ql/lib/change-notes/released/0.8.13.md +++ /dev/null @@ -1,9 +0,0 @@ -## 0.8.13 - -### Minor Analysis Improvements - -* Data flow is now tracked through `ActiveRecord` scopes. -* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. -* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. -* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. -* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 0fb6f3d786cb..af4e83c549e4 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.13 +lastReleaseVersion: 0.8.12 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 1d8218b6fa0e..bc8a4aa28135 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.13 +version: 0.8.13-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 508fa71de4ad..3810951acb52 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.8.13 - -No user-facing changes. - ## 0.8.12 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/0.8.13.md b/ruby/ql/src/change-notes/released/0.8.13.md deleted file mode 100644 index 4f7ef70cec56..000000000000 --- a/ruby/ql/src/change-notes/released/0.8.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.8.13 - -No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 0fb6f3d786cb..af4e83c549e4 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.13 +lastReleaseVersion: 0.8.12 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 029e052108f4..b18213909586 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.13 +version: 0.8.13-dev groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index aaebbbb43183..fc8378ff3b92 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.1.13 - -No user-facing changes. - ## 0.1.12 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.13.md b/shared/controlflow/change-notes/released/0.1.13.md deleted file mode 100644 index 827f5e3ec44e..000000000000 --- a/shared/controlflow/change-notes/released/0.1.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.1.13 - -No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index f43379f81961..bfd6e9036419 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.13 +lastReleaseVersion: 0.1.12 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index cb04f661c85a..3a6d1131f86d 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.13 +version: 0.1.13-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index b5267b6d9b0c..458cde63603f 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,9 +1,3 @@ -## 0.2.4 - -### Minor Analysis Improvements - -* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead of going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. - ## 0.2.3 No user-facing changes. diff --git a/shared/dataflow/change-notes/released/0.2.4.md b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md similarity index 90% rename from shared/dataflow/change-notes/released/0.2.4.md rename to shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md index 075802f2b5da..05a48eb80508 100644 --- a/shared/dataflow/change-notes/released/0.2.4.md +++ b/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md @@ -1,5 +1,4 @@ -## 0.2.4 - -### Minor Analysis Improvements - +--- +category: minorAnalysis +--- * Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead of going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 7f1e3841dcd6..0b605901b424 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.4 +lastReleaseVersion: 0.2.3 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 9c0976ca1094..386290bde293 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.4 +version: 0.2.4-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index afeee7894871..df97cb97717d 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.13.md b/shared/mad/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/mad/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 77a69168fe9b..a5ea1168b923 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 465ab789d4a1..7f284f0bfb88 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.12 - -No user-facing changes. - ## 0.0.11 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.12.md b/shared/rangeanalysis/change-notes/released/0.0.12.md deleted file mode 100644 index 0e206033bc47..000000000000 --- a/shared/rangeanalysis/change-notes/released/0.0.12.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.12 - -No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 997fb8da83cd..e679dc420925 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.11 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index df8fbd5e8374..4d8f0196bec3 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.12 +version: 0.0.12-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 6b0950887f99..2b955eaf376e 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.13.md b/shared/regex/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/regex/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index e47715dd3227..607c548a2a36 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 7b073dbfe7bf..7e74b25e47ee 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.13.md b/shared/ssa/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/ssa/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 3877a1a98f94..5c773a56a668 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 83a42fb05515..d9dd6b6f2e25 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.0.12 - -No user-facing changes. - ## 0.0.11 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.12.md b/shared/threat-models/change-notes/released/0.0.12.md deleted file mode 100644 index 0e206033bc47..000000000000 --- a/shared/threat-models/change-notes/released/0.0.12.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.12 - -No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 997fb8da83cd..e679dc420925 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.12 +lastReleaseVersion: 0.0.11 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 1d8b017f7984..08e2ae0c3306 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.12 +version: 0.0.12-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 32d42cbeb393..01fdf65587ab 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.13.md b/shared/tutorial/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/tutorial/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index ee00cd14490d..cf4f16583a3d 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 18024e289810..242657d19d8e 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.13.md b/shared/typetracking/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/typetracking/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 7f1ce51b4df5..166a7c170cdb 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index dbf4204fcadc..26e1c3ae5469 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.13.md b/shared/typos/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/typos/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 36250357dae5..47bc18e8902e 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index 1c0c715c928e..b8ae5cf523d8 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.13.md b/shared/util/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/util/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index e4c8f9b21665..7862cb35d816 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 67d1e732a0f3..9a5910ec3740 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.2.13 - -No user-facing changes. - ## 0.2.12 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.13.md b/shared/yaml/change-notes/released/0.2.13.md deleted file mode 100644 index 42f11678bd3d..000000000000 --- a/shared/yaml/change-notes/released/0.2.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.13 - -No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 979eb20092e9..da1cea933934 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.13 +lastReleaseVersion: 0.2.12 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index f12c77ef671c..9813c6fb57c4 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.13 +version: 0.2.13-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 4bc92a92c822..5a35f47aa898 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,10 +1,3 @@ -## 0.3.13 - -### Major Analysis Improvements - -* Upgraded to Swift 5.10 -* New AST node is extracted: `ThenStmt` - ## 0.3.12 No user-facing changes. diff --git a/swift/ql/lib/change-notes/released/0.3.13.md b/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md similarity index 59% rename from swift/ql/lib/change-notes/released/0.3.13.md rename to swift/ql/lib/change-notes/2024-03-28-swift-5.10.md index c1639172fd4a..bfc371a89e95 100644 --- a/swift/ql/lib/change-notes/released/0.3.13.md +++ b/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md @@ -1,6 +1,5 @@ -## 0.3.13 - -### Major Analysis Improvements - +--- +category: majorAnalysis +--- * Upgraded to Swift 5.10 * New AST node is extracted: `ThenStmt` diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 8791b4867d13..3e6664ee4b69 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.13 +lastReleaseVersion: 0.3.12 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index f4143f293406..d06a216db89b 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.13 +version: 0.3.13-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 2b745bd7bb15..4ae49cfbfea4 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,7 +1,3 @@ -## 0.3.13 - -No user-facing changes. - ## 0.3.12 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/0.3.13.md b/swift/ql/src/change-notes/released/0.3.13.md deleted file mode 100644 index 890ab1e3e3f3..000000000000 --- a/swift/ql/src/change-notes/released/0.3.13.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.3.13 - -No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 8791b4867d13..3e6664ee4b69 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.13 +lastReleaseVersion: 0.3.12 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 21fae0156ea3..1dace3146de9 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.13 +version: 0.3.13-dev groups: - swift - queries From c511de2eaee4007f6c31067708c4dd964241d7e0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Tue, 2 Apr 2024 17:15:41 +0000 Subject: [PATCH 640/731] Release preparation for version 2.17.0 --- cpp/ql/lib/CHANGELOG.md | 15 +++++++++++++++ .../2024-03-15-switches-in-guard-conditions.md | 4 ---- .../2024-03-19-ir-temp-extended-destructors.md | 4 ---- ...3-19-predicates-for-switches-as-guards-2.md | 5 ----- ...-03-19-predicates-for-switches-as-guards.md | 5 ----- .../2024-03-26-taint-inheriting-content.md | 4 ---- cpp/ql/lib/change-notes/released/0.12.10.md | 14 ++++++++++++++ cpp/ql/lib/codeql-pack.release.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/CHANGELOG.md | 16 ++++++++++++++++ .../2024-03-05-type-confusion-query.md | 4 ---- .../2024-03-13-glib-alloc-and-dealloc.md | 4 ---- ...4-03-18-uninitialized-local-path-problem.md | 4 ---- ...4-03-20-missing-check-scanf-path-problem.md | 4 ---- .../src/change-notes/2024-03-22-boost-ssl.md | 4 ---- cpp/ql/src/change-notes/released/0.9.9.md | 15 +++++++++++++++ cpp/ql/src/codeql-pack.release.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/lib/CHANGELOG.md | 4 ++++ .../lib/change-notes/released/1.7.13.md | 3 +++ .../Solorigate/lib/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- .../ql/campaigns/Solorigate/src/CHANGELOG.md | 4 ++++ .../src/change-notes/released/1.7.13.md | 3 +++ .../Solorigate/src/codeql-pack.release.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/CHANGELOG.md | 18 ++++++++++++++++++ .../2024-03-04-deprecate-dotnet-and-cil.md | 4 ---- ...-03-04-fixed-system.io.textreader-models.md | 4 ---- ...5-new-commandargs-and-environment-models.md | 5 ----- .../2024-03-07-remove-cil-extractor.md | 4 ---- ...ystem.net.http.httprequestmessage-models.md | 4 ---- .../2024-03-11-csharp12-dotnet8.md | 4 ---- .../2024-03-11-registry-sources.md | 4 ---- .../2024-03-13-system.io-models.md | 4 ---- .../2024-03-14-dapper-source-models.md | 4 ---- csharp/ql/lib/change-notes/released/0.9.0.md | 17 +++++++++++++++++ csharp/ql/lib/codeql-pack.release.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/CHANGELOG.md | 11 +++++++++++ .../2024-03-06-remove-default-local-sources.md | 5 ----- .../2024-03-11-remove-stored-query-variants.md | 5 ----- .../2024-03-21-change-compareto-signature.md | 5 ----- csharp/ql/src/change-notes/released/0.8.13.md | 10 ++++++++++ csharp/ql/src/codeql-pack.release.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.12.md | 3 +++ .../codeql-pack.release.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/CHANGELOG.md | 7 +++++++ .../change-notes/2024-03-04-macaron-sources.md | 4 ---- .../0.7.13.md} | 8 +++++--- go/ql/lib/codeql-pack.release.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/CHANGELOG.md | 11 +++++++++++ .../2024-03-05-squirrel-sqli-sinks.md | 4 ---- ...03-14-hardcoded-credentials-more-sources.md | 4 ---- .../0.7.13.md} | 12 +++++++++--- go/ql/src/codeql-pack.release.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/CHANGELOG.md | 4 ++++ .../src/change-notes/released/0.0.20.md | 3 +++ java/ql/automodel/src/codeql-pack.release.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/CHANGELOG.md | 13 +++++++++++++ ...3-11-add-parcelfiledescriptor-open-model.md | 4 ---- .../ql/lib/change-notes/2024-03-21-env-vars.md | 4 ---- .../2024-03-22-anonymous-variables.md | 5 ----- .../2024-03-26-url-models-precision.md | 4 ---- java/ql/lib/change-notes/released/0.9.0.md | 12 ++++++++++++ java/ql/lib/codeql-pack.release.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/CHANGELOG.md | 15 +++++++++++++++ .../2024-03-06-url-forward-query.md | 4 ---- .../2024-03-12-request-sanitizers.md | 4 ---- ...03-24-sensitive-log-whitelist-tokenimage.md | 4 ---- .../2024-03-27-MissingEnumInSwitch.md | 4 ---- java/ql/src/change-notes/released/0.8.13.md | 14 ++++++++++++++ java/ql/src/codeql-pack.release.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/CHANGELOG.md | 6 ++++++ .../change-notes/2024-02-02-typescript-5-4.md | 4 ---- .../ql/lib/change-notes/released/0.8.13.md | 5 +++++ javascript/ql/lib/codeql-pack.release.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/CHANGELOG.md | 10 ++++++++++ .../2024-03-07-lift-cg-restriction.md | 4 ---- .../2024-03-21-target-blank-precision.md | 4 ---- .../ql/src/change-notes/released/0.8.13.md | 9 +++++++++ javascript/ql/src/codeql-pack.release.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/CHANGELOG.md | 4 ++++ .../change-notes/released/0.7.13.md | 3 +++ misc/suite-helpers/codeql-pack.release.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/CHANGELOG.md | 4 ++++ python/ql/lib/change-notes/released/0.11.13.md | 3 +++ python/ql/lib/codeql-pack.release.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/CHANGELOG.md | 4 ++++ python/ql/src/change-notes/released/0.9.13.md | 3 +++ python/ql/src/codeql-pack.release.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/CHANGELOG.md | 10 ++++++++++ .../change-notes/2024-02-27-process-spawn.md | 4 ---- .../2024-03-01-typhoeus-request.md | 4 ---- .../2024-03-08-activerecord-from.md | 4 ---- .../2024-03-14-actiondispatch-uploadedfile.md | 4 ---- .../2024-03-19-activerecord-scopes.md | 4 ---- ruby/ql/lib/change-notes/released/0.8.13.md | 9 +++++++++ ruby/ql/lib/codeql-pack.release.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/CHANGELOG.md | 4 ++++ ruby/ql/src/change-notes/released/0.8.13.md | 3 +++ ruby/ql/src/codeql-pack.release.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/CHANGELOG.md | 4 ++++ .../change-notes/released/0.1.13.md | 3 +++ shared/controlflow/codeql-pack.release.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/CHANGELOG.md | 6 ++++++ .../0.2.4.md} | 7 ++++--- shared/dataflow/codeql-pack.release.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/CHANGELOG.md | 4 ++++ shared/mad/change-notes/released/0.2.13.md | 3 +++ shared/mad/codeql-pack.release.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.12.md | 3 +++ shared/rangeanalysis/codeql-pack.release.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/CHANGELOG.md | 4 ++++ shared/regex/change-notes/released/0.2.13.md | 3 +++ shared/regex/codeql-pack.release.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/CHANGELOG.md | 4 ++++ shared/ssa/change-notes/released/0.2.13.md | 3 +++ shared/ssa/codeql-pack.release.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/CHANGELOG.md | 4 ++++ .../change-notes/released/0.0.12.md | 3 +++ shared/threat-models/codeql-pack.release.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/CHANGELOG.md | 4 ++++ .../tutorial/change-notes/released/0.2.13.md | 3 +++ shared/tutorial/codeql-pack.release.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/CHANGELOG.md | 4 ++++ .../change-notes/released/0.2.13.md | 3 +++ shared/typetracking/codeql-pack.release.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/CHANGELOG.md | 4 ++++ shared/typos/change-notes/released/0.2.13.md | 3 +++ shared/typos/codeql-pack.release.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/CHANGELOG.md | 4 ++++ shared/util/change-notes/released/0.2.13.md | 3 +++ shared/util/codeql-pack.release.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/CHANGELOG.md | 4 ++++ shared/yaml/change-notes/released/0.2.13.md | 3 +++ shared/yaml/codeql-pack.release.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/CHANGELOG.md | 7 +++++++ .../0.3.13.md} | 7 ++++--- swift/ql/lib/codeql-pack.release.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/CHANGELOG.md | 4 ++++ swift/ql/src/change-notes/released/0.3.13.md | 3 +++ swift/ql/src/codeql-pack.release.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 173 files changed, 478 insertions(+), 249 deletions(-) delete mode 100644 cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md delete mode 100644 cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md create mode 100644 cpp/ql/lib/change-notes/released/0.12.10.md delete mode 100644 cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md delete mode 100644 cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md delete mode 100644 cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md delete mode 100644 cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md delete mode 100644 cpp/ql/src/change-notes/2024-03-22-boost-ssl.md create mode 100644 cpp/ql/src/change-notes/released/0.9.9.md create mode 100644 csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md create mode 100644 csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-11-registry-sources.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-13-system.io-models.md delete mode 100644 csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md create mode 100644 csharp/ql/lib/change-notes/released/0.9.0.md delete mode 100644 csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md delete mode 100644 csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md delete mode 100644 csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md create mode 100644 csharp/ql/src/change-notes/released/0.8.13.md create mode 100644 go/ql/consistency-queries/change-notes/released/0.0.12.md delete mode 100644 go/ql/lib/change-notes/2024-03-04-macaron-sources.md rename go/ql/lib/change-notes/{2024-03-20-dependecy-retrieval-improvement.md => released/0.7.13.md} (63%) delete mode 100644 go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md delete mode 100644 go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md rename go/ql/src/change-notes/{2024-03-07-uncontrolled-allocation-size.md => released/0.7.13.md} (53%) create mode 100644 java/ql/automodel/src/change-notes/released/0.0.20.md delete mode 100644 java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md delete mode 100644 java/ql/lib/change-notes/2024-03-21-env-vars.md delete mode 100644 java/ql/lib/change-notes/2024-03-22-anonymous-variables.md delete mode 100644 java/ql/lib/change-notes/2024-03-26-url-models-precision.md create mode 100644 java/ql/lib/change-notes/released/0.9.0.md delete mode 100644 java/ql/src/change-notes/2024-03-06-url-forward-query.md delete mode 100644 java/ql/src/change-notes/2024-03-12-request-sanitizers.md delete mode 100644 java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md delete mode 100644 java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md create mode 100644 java/ql/src/change-notes/released/0.8.13.md delete mode 100644 javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md create mode 100644 javascript/ql/lib/change-notes/released/0.8.13.md delete mode 100644 javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md delete mode 100644 javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md create mode 100644 javascript/ql/src/change-notes/released/0.8.13.md create mode 100644 misc/suite-helpers/change-notes/released/0.7.13.md create mode 100644 python/ql/lib/change-notes/released/0.11.13.md create mode 100644 python/ql/src/change-notes/released/0.9.13.md delete mode 100644 ruby/ql/lib/change-notes/2024-02-27-process-spawn.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md delete mode 100644 ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md create mode 100644 ruby/ql/lib/change-notes/released/0.8.13.md create mode 100644 ruby/ql/src/change-notes/released/0.8.13.md create mode 100644 shared/controlflow/change-notes/released/0.1.13.md rename shared/dataflow/change-notes/{2024-02-28-hidden-subpaths.md => released/0.2.4.md} (90%) create mode 100644 shared/mad/change-notes/released/0.2.13.md create mode 100644 shared/rangeanalysis/change-notes/released/0.0.12.md create mode 100644 shared/regex/change-notes/released/0.2.13.md create mode 100644 shared/ssa/change-notes/released/0.2.13.md create mode 100644 shared/threat-models/change-notes/released/0.0.12.md create mode 100644 shared/tutorial/change-notes/released/0.2.13.md create mode 100644 shared/typetracking/change-notes/released/0.2.13.md create mode 100644 shared/typos/change-notes/released/0.2.13.md create mode 100644 shared/util/change-notes/released/0.2.13.md create mode 100644 shared/yaml/change-notes/released/0.2.13.md rename swift/ql/lib/change-notes/{2024-03-28-swift-5.10.md => released/0.3.13.md} (59%) create mode 100644 swift/ql/src/change-notes/released/0.3.13.md diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 4b69a1d5b361..0ca4b5393255 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.12.10 + +### New Features + +* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. +* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. + +### Minor Analysis Improvements + +* Added destructors for temporary objects with extended lifetimes to the intermediate representation. + ## 0.12.9 No user-facing changes. diff --git a/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md b/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md deleted file mode 100644 index cf0b920e29dc..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-15-switches-in-guard-conditions.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md b/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md deleted file mode 100644 index 6def83033361..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-19-ir-temp-extended-destructors.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added destructors for temporary objects with extended lifetimes to the intermediate representation. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md deleted file mode 100644 index 88b4048f8cd1..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards-2.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: feature ---- -* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md b/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md deleted file mode 100644 index 3dde8805599f..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-19-predicates-for-switches-as-guards.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: feature ---- -* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. -* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md b/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md deleted file mode 100644 index 759386e461f6..000000000000 --- a/cpp/ql/lib/change-notes/2024-03-26-taint-inheriting-content.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: feature ---- -* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. \ No newline at end of file diff --git a/cpp/ql/lib/change-notes/released/0.12.10.md b/cpp/ql/lib/change-notes/released/0.12.10.md new file mode 100644 index 000000000000..64d91af2118c --- /dev/null +++ b/cpp/ql/lib/change-notes/released/0.12.10.md @@ -0,0 +1,14 @@ +## 0.12.10 + +### New Features + +* Added a `TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. +* Added a predicate `GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. +* Added a predicate `GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate `GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. +* Added a predicate `GuardCondition.valueControls` to query whether a basic block is guarded by a particular `case` of a `switch` statement. + +### Minor Analysis Improvements + +* Added destructors for temporary objects with extended lifetimes to the intermediate representation. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index dce1e02b6465..bd659eb114fa 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.12.9 +lastReleaseVersion: 0.12.10 diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index eebc47c089bf..f8358ae72df4 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.10-dev +version: 0.12.10 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index 52c46f65267e..01ec26e694f9 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.9.9 + +### New Queries + +* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. + +### Query Metadata Changes + +* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. + +### Minor Analysis Improvements + +* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. +* Added models for `GLib` allocation and deallocation functions. + ## 0.9.8 No user-facing changes. diff --git a/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md b/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md deleted file mode 100644 index f96a4684b769..000000000000 --- a/cpp/ql/src/change-notes/2024-03-05-type-confusion-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md b/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md deleted file mode 100644 index bc9082285d41..000000000000 --- a/cpp/ql/src/change-notes/2024-03-13-glib-alloc-and-dealloc.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added models for `GLib` allocation and deallocation functions. diff --git a/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md b/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md deleted file mode 100644 index 14a8c2e7ce74..000000000000 --- a/cpp/ql/src/change-notes/2024-03-18-uninitialized-local-path-problem.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md b/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md deleted file mode 100644 index 12a185add1ea..000000000000 --- a/cpp/ql/src/change-notes/2024-03-20-missing-check-scanf-path-problem.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. \ No newline at end of file diff --git a/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md b/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md deleted file mode 100644 index d4a4e0a73073..000000000000 --- a/cpp/ql/src/change-notes/2024-03-22-boost-ssl.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: queryMetadata ---- -* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. diff --git a/cpp/ql/src/change-notes/released/0.9.9.md b/cpp/ql/src/change-notes/released/0.9.9.md new file mode 100644 index 000000000000..46f120c28d76 --- /dev/null +++ b/cpp/ql/src/change-notes/released/0.9.9.md @@ -0,0 +1,15 @@ +## 0.9.9 + +### New Queries + +* Added a new query, `cpp/type-confusion`, to detect casts to invalid types. + +### Query Metadata Changes + +* `@precision medium` metadata was added to the `cpp/boost/tls-settings-misconfiguration` and `cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The `@name` metadata of these queries were also updated. + +### Minor Analysis Improvements + +* The "Missing return-value check for a 'scanf'-like function" query (`cpp/missing-check-scanf`) has been converted to a `path-problem` query. +* The "Potentially uninitialized local variable" query (`cpp/uninitialized-local`) has been converted to a `path-problem` query. +* Added models for `GLib` allocation and deallocation functions. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 9ca6c6f26786..aabed7c396b7 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.8 +lastReleaseVersion: 0.9.9 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index ce202c1b85d1..5d9a5252c00d 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.9-dev +version: 0.9.9 groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index bea6df22685c..50143af24fbb 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.13 + +No user-facing changes. + ## 1.7.12 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md new file mode 100644 index 000000000000..e2656ce672c1 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.13.md @@ -0,0 +1,3 @@ +## 1.7.13 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 6d169efe9202..e5f93542dfcc 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.12 +lastReleaseVersion: 1.7.13 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index f3bf8992f7d4..f12c8e2c95e5 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.13-dev +version: 1.7.13 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index bea6df22685c..50143af24fbb 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.7.13 + +No user-facing changes. + ## 1.7.12 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md new file mode 100644 index 000000000000..e2656ce672c1 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.13.md @@ -0,0 +1,3 @@ +## 1.7.13 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 6d169efe9202..e5f93542dfcc 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.12 +lastReleaseVersion: 1.7.13 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index a732080cfb41..74444203f849 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.13-dev +version: 1.7.13 groups: - csharp - solorigate diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 37d2c804be83..27133addc5c3 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 0.9.0 + +### Breaking Changes + +* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. +* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. + +### Minor Analysis Improvements + +* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. +* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. +* Support for C# 12 / .NET8. +* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. +* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. +* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. +* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. +* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. + ## 0.8.12 No user-facing changes. diff --git a/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md b/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md deleted file mode 100644 index fea31bb8bbb2..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-04-deprecate-dotnet-and-cil.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: breaking ---- -* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. diff --git a/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md b/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md deleted file mode 100644 index a32f8a7c22c7..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-04-fixed-system.io.textreader-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. diff --git a/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md b/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md deleted file mode 100644 index 0bee733157ce..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-05-new-commandargs-and-environment-models.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. -* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. diff --git a/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md b/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md deleted file mode 100644 index 36be2372b4ec..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-07-remove-cil-extractor.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: breaking ---- -* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. diff --git a/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md b/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md deleted file mode 100644 index 2ac3a1059c6b..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-07-update-system.net.http.httprequestmessage-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. \ No newline at end of file diff --git a/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md b/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md deleted file mode 100644 index 7111e8966d68..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-11-csharp12-dotnet8.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Support for C# 12 / .NET8. diff --git a/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md b/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md deleted file mode 100644 index 1d1050491855..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-11-registry-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. diff --git a/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md b/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md deleted file mode 100644 index 84db6a663aea..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-13-system.io-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. diff --git a/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md b/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md deleted file mode 100644 index 204ae7db3ae9..000000000000 --- a/csharp/ql/lib/change-notes/2024-03-14-dapper-source-models.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. diff --git a/csharp/ql/lib/change-notes/released/0.9.0.md b/csharp/ql/lib/change-notes/released/0.9.0.md new file mode 100644 index 000000000000..32e8e35d76d1 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/0.9.0.md @@ -0,0 +1,17 @@ +## 0.9.0 + +### Breaking Changes + +* The CIL extractor has been deleted and the corresponding extractor option `cil` has been removed. It is no longer possible to do CIL extraction. +* The QL library C# classes no longer extend their corresponding `DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all `DotNet` and `CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. + +### Minor Analysis Improvements + +* Added new source models for the `Dapper` package. These models can be enabled by enabling the `database` threat model. +* Additional models have been added for `System.IO`. These are primarily source models with the `file` threat model, and summaries related to reading from a file or stream. +* Support for C# 12 / .NET8. +* Added the `windows-registry` source kind and threat model to represent values which come from the registry on Windows. +* The models for `System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. +* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the `commandargs` and `environment` threat models. +* The `cs/assembly-path-injection` query has been modified so that it's sources rely on `ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the `commandargs` threat model. +* The models for `System.IO.TextReader` have been modified to better model the flow of tainted text from a `TextReader`. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index af4e83c549e4..8b9fc185202d 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.9.0 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d389b9e5604..bd9558fa2494 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.8.13-dev +version: 0.9.0 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index df97b469252a..bbd7f8bc147e 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.8.13 + +### Major Analysis Improvements + +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. + +### Minor Analysis Improvements + +* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. +* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. + ## 0.8.12 No user-facing changes. diff --git a/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md b/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md deleted file mode 100644 index 19494571ad15..000000000000 --- a/csharp/ql/src/change-notes/2024-03-06-remove-default-local-sources.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. - diff --git a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md b/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md deleted file mode 100644 index 3ca0b14f7b2b..000000000000 --- a/csharp/ql/src/change-notes/2024-03-11-remove-stored-query-variants.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: majorAnalysis ---- -* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. - diff --git a/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md b/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md deleted file mode 100644 index 026321ea9af2..000000000000 --- a/csharp/ql/src/change-notes/2024-03-21-change-compareto-signature.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. - diff --git a/csharp/ql/src/change-notes/released/0.8.13.md b/csharp/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..e534c66fc8ed --- /dev/null +++ b/csharp/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,10 @@ +## 0.8.13 + +### Major Analysis Improvements + +* The `Stored` variants of some queries (`cs/stored-command-line-injection`, `cs/web/stored-xss`, `cs/stored-ldap-injection`, `cs/xml/stored-xpath-injection`, `cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the `file` and `database` threat models in your threat model configuration. + +### Minor Analysis Improvements + +* The alert message of `cs/wrong-compareto-signature` has been changed to remove unnecessary element references. +* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are `cs/code-injection`, `cs/resource-injection`, `cs/sql-injection`, and `cs/uncontrolled-format-string`. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index e9d1d526a81b..609c625fe5a3 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.13-dev +version: 0.8.13 groups: - csharp - queries diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index d9dd6b6f2e25..83a42fb05515 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/0.0.12.md b/go/ql/consistency-queries/change-notes/released/0.0.12.md new file mode 100644 index 000000000000..0e206033bc47 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index e679dc420925..997fb8da83cd 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 3c398a7cf84f..fbd2978d4389 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.12-dev +version: 0.0.12 groups: - go - queries diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index bc6537af817a..0fa4dfe0ec80 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.7.13 + +### Minor Analysis Improvements + +* The `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. +* Added dataflow sources for the package `gopkg.in/macaron.v1`. + ## 0.7.12 No user-facing changes. diff --git a/go/ql/lib/change-notes/2024-03-04-macaron-sources.md b/go/ql/lib/change-notes/2024-03-04-macaron-sources.md deleted file mode 100644 index 72ea242510de..000000000000 --- a/go/ql/lib/change-notes/2024-03-04-macaron-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added dataflow sources for the package `gopkg.in/macaron.v1`. diff --git a/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md b/go/ql/lib/change-notes/released/0.7.13.md similarity index 63% rename from go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md rename to go/ql/lib/change-notes/released/0.7.13.md index 42fc258f9735..c6fab4935a1f 100644 --- a/go/ql/lib/change-notes/2024-03-20-dependecy-retrieval-improvement.md +++ b/go/ql/lib/change-notes/released/0.7.13.md @@ -1,4 +1,6 @@ ---- -category: minorAnalysis ---- +## 0.7.13 + +### Minor Analysis Improvements + * The `CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. +* Added dataflow sources for the package `gopkg.in/macaron.v1`. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 8afa417865a1..8a077216acc0 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.12 +lastReleaseVersion: 0.7.13 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 8cc40e77dec2..2c1fbe254faa 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.13-dev +version: 0.7.13 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 497f82e86798..2bee579db9cb 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,14 @@ +## 0.7.13 + +### New Queries + +* The query "Slice memory allocation with excessive size value" (`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally [submitted as an experimental query by @Malayke](https://github.com/github/codeql/pull/15130). + +### Minor Analysis Improvements + +* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. +* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. + ## 0.7.12 No user-facing changes. diff --git a/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md b/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md deleted file mode 100644 index 0b6a78df9f93..000000000000 --- a/go/ql/src/change-notes/2024-03-05-squirrel-sqli-sinks.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. diff --git a/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md b/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md deleted file mode 100644 index ad6f712958e6..000000000000 --- a/go/ql/src/change-notes/2024-03-14-hardcoded-credentials-more-sources.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. diff --git a/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md b/go/ql/src/change-notes/released/0.7.13.md similarity index 53% rename from go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md rename to go/ql/src/change-notes/released/0.7.13.md index 663932005eb1..e11b39869790 100644 --- a/go/ql/src/change-notes/2024-03-07-uncontrolled-allocation-size.md +++ b/go/ql/src/change-notes/released/0.7.13.md @@ -1,4 +1,10 @@ ---- -category: newQuery ---- +## 0.7.13 + +### New Queries + * The query "Slice memory allocation with excessive size value" (`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally [submitted as an experimental query by @Malayke](https://github.com/github/codeql/pull/15130). + +### Minor Analysis Improvements + +* The query `go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. +* The query `go/sql-injection` now recognizes more sinks in the package `github.com/Masterminds/squirrel`. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 8afa417865a1..8a077216acc0 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.12 +lastReleaseVersion: 0.7.13 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 080d257b8d02..2ab9616891b2 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.13-dev +version: 0.7.13 groups: - go - queries diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 0205da54adf8..af83bbb07001 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.20 + +No user-facing changes. + ## 0.0.19 No user-facing changes. diff --git a/java/ql/automodel/src/change-notes/released/0.0.20.md b/java/ql/automodel/src/change-notes/released/0.0.20.md new file mode 100644 index 000000000000..98daf20a59a1 --- /dev/null +++ b/java/ql/automodel/src/change-notes/released/0.0.20.md @@ -0,0 +1,3 @@ +## 0.0.20 + +No user-facing changes. diff --git a/java/ql/automodel/src/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index f406319f372e..d2e86745bcaa 100644 --- a/java/ql/automodel/src/codeql-pack.release.yml +++ b/java/ql/automodel/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.19 +lastReleaseVersion: 0.0.20 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index 1c22e00eb0e2..c4b5940f928b 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.20-dev +version: 0.0.20 groups: - java - automodel diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index 5f8d993294ad..36c5ca2a6a6a 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,16 @@ +## 0.9.0 + +### Breaking Changes + +* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. + +### Minor Analysis Improvements + +* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. +* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. +* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. +* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. + ## 0.8.12 No user-facing changes. diff --git a/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md b/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md deleted file mode 100644 index 31f76712828e..000000000000 --- a/java/ql/lib/change-notes/2024-03-11-add-parcelfiledescriptor-open-model.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. diff --git a/java/ql/lib/change-notes/2024-03-21-env-vars.md b/java/ql/lib/change-notes/2024-03-21-env-vars.md deleted file mode 100644 index 9306a814a7c9..000000000000 --- a/java/ql/lib/change-notes/2024-03-21-env-vars.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: breaking ---- -* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. diff --git a/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md b/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md deleted file mode 100644 index 029d3dfbff42..000000000000 --- a/java/ql/lib/change-notes/2024-03-22-anonymous-variables.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -category: minorAnalysis ---- -* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. -* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. diff --git a/java/ql/lib/change-notes/2024-03-26-url-models-precision.md b/java/ql/lib/change-notes/2024-03-26-url-models-precision.md deleted file mode 100644 index d6fb561e725f..000000000000 --- a/java/ql/lib/change-notes/2024-03-26-url-models-precision.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. diff --git a/java/ql/lib/change-notes/released/0.9.0.md b/java/ql/lib/change-notes/released/0.9.0.md new file mode 100644 index 000000000000..ad20fb98cbfb --- /dev/null +++ b/java/ql/lib/change-notes/released/0.9.0.md @@ -0,0 +1,12 @@ +## 0.9.0 + +### Breaking Changes + +* The Java extractor no longer supports the `ODASA_SNAPSHOT` legacy environment variable. + +### Minor Analysis Improvements + +* Increased the precision of some dataflow models of the class `java.net.URL` by distinguishing the parts of a URL. +* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. +* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The `PatternCase` class gains the new `getPatternAtIndex` and `getAPattern` predicates, and deprecates `getPattern`. +* Added a `path-injection` sink for the `open` methods of the `android.os.ParcelFileDescriptor` class. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index af4e83c549e4..8b9fc185202d 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.9.0 diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index c3a0a9476bb8..768e57ad9c68 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.8.13-dev +version: 0.9.0 groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 73ab2688c982..4b758396b916 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.8.13 + +### New Queries + +* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). + +### Major Analysis Improvements + +* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. + +### Minor Analysis Improvements + +* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. +* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. + ## 0.8.12 No user-facing changes. diff --git a/java/ql/src/change-notes/2024-03-06-url-forward-query.md b/java/ql/src/change-notes/2024-03-06-url-forward-query.md deleted file mode 100644 index 46028bda4f21..000000000000 --- a/java/ql/src/change-notes/2024-03-06-url-forward-query.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: newQuery ---- -* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). diff --git a/java/ql/src/change-notes/2024-03-12-request-sanitizers.md b/java/ql/src/change-notes/2024-03-12-request-sanitizers.md deleted file mode 100644 index 08229d6d7d0d..000000000000 --- a/java/ql/src/change-notes/2024-03-12-request-sanitizers.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. \ No newline at end of file diff --git a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md b/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md deleted file mode 100644 index 017e5abd7eee..000000000000 --- a/java/ql/src/change-notes/2024-03-24-sensitive-log-whitelist-tokenimage.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. diff --git a/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md b/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md deleted file mode 100644 index b1531dab6558..000000000000 --- a/java/ql/src/change-notes/2024-03-27-MissingEnumInSwitch.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. diff --git a/java/ql/src/change-notes/released/0.8.13.md b/java/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..22dba4fa4fa6 --- /dev/null +++ b/java/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,14 @@ +## 0.8.13 + +### New Queries + +* The query `java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as `java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query [by @haby0](https://github.com/github/codeql/pull/6240) and [by @luchua-bc](https://github.com/github/codeql/pull/7286). + +### Major Analysis Improvements + +* The `java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. + +### Minor Analysis Improvements + +* Variables named `tokenImage` are no longer sources for the `java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. +* Added sanitizers for relative URLs, `List.contains()`, and checking the host of a URI to the `java/ssrf` and `java/unvalidated-url-redirection` queries. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index ab853297ba95..d67193843bea 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.13-dev +version: 0.8.13 groups: - java - queries diff --git a/javascript/ql/lib/CHANGELOG.md b/javascript/ql/lib/CHANGELOG.md index 2bdc2e4152a0..4d66cfc9f6c5 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.8.13 + +### Major Analysis Improvements + +* Added support for TypeScript 5.4. + ## 0.8.12 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md b/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md deleted file mode 100644 index 836719b5d6bf..000000000000 --- a/javascript/ql/lib/change-notes/2024-02-02-typescript-5-4.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: majorAnalysis ---- -* Added support for TypeScript 5.4. \ No newline at end of file diff --git a/javascript/ql/lib/change-notes/released/0.8.13.md b/javascript/ql/lib/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..bfa4a62d5ae5 --- /dev/null +++ b/javascript/ql/lib/change-notes/released/0.8.13.md @@ -0,0 +1,5 @@ +## 0.8.13 + +### Major Analysis Improvements + +* Added support for TypeScript 5.4. diff --git a/javascript/ql/lib/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/javascript/ql/lib/codeql-pack.release.yml +++ b/javascript/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index fd7d54764024..1ed74009ef0c 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.13-dev +version: 0.8.13 groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index 43cbc8facf85..2ae12bca4841 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.13 + +### Query Metadata Changes + +* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. + +### Minor Analysis Improvements + +* The call graph has been improved, leading to more alerts for data flow based queries. + ## 0.8.12 No user-facing changes. diff --git a/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md b/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md deleted file mode 100644 index 4d591aaf9a27..000000000000 --- a/javascript/ql/src/change-notes/2024-03-07-lift-cg-restriction.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The call graph has been improved, leading to more alerts for data flow based queries. diff --git a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md b/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md deleted file mode 100644 index 5bcb0ba74635..000000000000 --- a/javascript/ql/src/change-notes/2024-03-21-target-blank-precision.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: queryMetadata ---- -* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. \ No newline at end of file diff --git a/javascript/ql/src/change-notes/released/0.8.13.md b/javascript/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..282e759a49e4 --- /dev/null +++ b/javascript/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,9 @@ +## 0.8.13 + +### Query Metadata Changes + +* The `@precision` of the `js/unsafe-external-link` has been reduced to `low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with `target="_blank"`. + +### Minor Analysis Improvements + +* The call graph has been improved, leading to more alerts for data flow based queries. diff --git a/javascript/ql/src/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/javascript/ql/src/codeql-pack.release.yml +++ b/javascript/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 6967bcbff044..49576a207cd5 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.13-dev +version: 0.8.13 groups: - javascript - queries diff --git a/misc/suite-helpers/CHANGELOG.md b/misc/suite-helpers/CHANGELOG.md index c61f0b26d002..3b1863cfbf15 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.13 + +No user-facing changes. + ## 0.7.12 No user-facing changes. diff --git a/misc/suite-helpers/change-notes/released/0.7.13.md b/misc/suite-helpers/change-notes/released/0.7.13.md new file mode 100644 index 000000000000..fac5f02103fa --- /dev/null +++ b/misc/suite-helpers/change-notes/released/0.7.13.md @@ -0,0 +1,3 @@ +## 0.7.13 + +No user-facing changes. diff --git a/misc/suite-helpers/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 8afa417865a1..8a077216acc0 100644 --- a/misc/suite-helpers/codeql-pack.release.yml +++ b/misc/suite-helpers/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.7.12 +lastReleaseVersion: 0.7.13 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index c366cba2c912..94ac367a7557 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.13-dev +version: 0.7.13 groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 966356feed28..645b686ac8c1 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.11.13 + +No user-facing changes. + ## 0.11.12 No user-facing changes. diff --git a/python/ql/lib/change-notes/released/0.11.13.md b/python/ql/lib/change-notes/released/0.11.13.md new file mode 100644 index 000000000000..e8bde4caf9fd --- /dev/null +++ b/python/ql/lib/change-notes/released/0.11.13.md @@ -0,0 +1,3 @@ +## 0.11.13 + +No user-facing changes. diff --git a/python/ql/lib/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 28f7725cf851..387883efdfb3 100644 --- a/python/ql/lib/codeql-pack.release.yml +++ b/python/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.11.12 +lastReleaseVersion: 0.11.13 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index f2357da6c2c9..c150a37790c2 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.13-dev +version: 0.11.13 groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/CHANGELOG.md b/python/ql/src/CHANGELOG.md index d8737a310b3b..53ed161fecbf 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.13 + +No user-facing changes. + ## 0.9.12 No user-facing changes. diff --git a/python/ql/src/change-notes/released/0.9.13.md b/python/ql/src/change-notes/released/0.9.13.md new file mode 100644 index 000000000000..e188021618c3 --- /dev/null +++ b/python/ql/src/change-notes/released/0.9.13.md @@ -0,0 +1,3 @@ +## 0.9.13 + +No user-facing changes. diff --git a/python/ql/src/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 12f1a311ecad..74bee36d150c 100644 --- a/python/ql/src/codeql-pack.release.yml +++ b/python/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.9.12 +lastReleaseVersion: 0.9.13 diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index c6d2ef63f29f..b24b25bd8211 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.13-dev +version: 0.9.13 groups: - python - queries diff --git a/ruby/ql/lib/CHANGELOG.md b/ruby/ql/lib/CHANGELOG.md index 9b2503120f90..a33055760537 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.8.13 + +### Minor Analysis Improvements + +* Data flow is now tracked through `ActiveRecord` scopes. +* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. +* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. +* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. +* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. + ## 0.8.12 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md b/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md deleted file mode 100644 index 9c20f05d8659..000000000000 --- a/ruby/ql/lib/change-notes/2024-02-27-process-spawn.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md b/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md deleted file mode 100644 index f008869fbcd5..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-01-typhoeus-request.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md b/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md deleted file mode 100644 index 704a4f27a619..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-08-activerecord-from.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md b/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md deleted file mode 100644 index a02ca0d00a2a..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-14-actiondispatch-uploadedfile.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. \ No newline at end of file diff --git a/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md b/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md deleted file mode 100644 index 963479568a0b..000000000000 --- a/ruby/ql/lib/change-notes/2024-03-19-activerecord-scopes.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -category: minorAnalysis ---- -* Data flow is now tracked through `ActiveRecord` scopes. diff --git a/ruby/ql/lib/change-notes/released/0.8.13.md b/ruby/ql/lib/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..cc844ffc764e --- /dev/null +++ b/ruby/ql/lib/change-notes/released/0.8.13.md @@ -0,0 +1,9 @@ +## 0.8.13 + +### Minor Analysis Improvements + +* Data flow is now tracked through `ActiveRecord` scopes. +* Modeled instances of `ActionDispatch::Http::UploadedFile` that can be obtained from element reads of `ActionController::Parameters`, with calls to `original_filename`, `content_type`, and `read` now propagating taint from their receiver. +* The second argument, `subquery_name`, of the `ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. +* Calls to `Typhoeus::Request.new` are now considered as instances of the `Http::Client::Request` concept, with the response body being treated as a remote flow source. +* New command injection sinks have been added, including `Process.spawn`, `Process.exec`, `Terrapin::CommandLine` and the `open4` gem. diff --git a/ruby/ql/lib/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/ruby/ql/lib/codeql-pack.release.yml +++ b/ruby/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index bc8a4aa28135..1d8218b6fa0e 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.13-dev +version: 0.8.13 groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 3810951acb52..508fa71de4ad 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.8.13 + +No user-facing changes. + ## 0.8.12 No user-facing changes. diff --git a/ruby/ql/src/change-notes/released/0.8.13.md b/ruby/ql/src/change-notes/released/0.8.13.md new file mode 100644 index 000000000000..4f7ef70cec56 --- /dev/null +++ b/ruby/ql/src/change-notes/released/0.8.13.md @@ -0,0 +1,3 @@ +## 0.8.13 + +No user-facing changes. diff --git a/ruby/ql/src/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index af4e83c549e4..0fb6f3d786cb 100644 --- a/ruby/ql/src/codeql-pack.release.yml +++ b/ruby/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.8.12 +lastReleaseVersion: 0.8.13 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index b18213909586..029e052108f4 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.13-dev +version: 0.8.13 groups: - ruby - queries diff --git a/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index fc8378ff3b92..aaebbbb43183 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.13 + +No user-facing changes. + ## 0.1.12 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/0.1.13.md b/shared/controlflow/change-notes/released/0.1.13.md new file mode 100644 index 000000000000..827f5e3ec44e --- /dev/null +++ b/shared/controlflow/change-notes/released/0.1.13.md @@ -0,0 +1,3 @@ +## 0.1.13 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index bfd6e9036419..f43379f81961 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.1.12 +lastReleaseVersion: 0.1.13 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 3a6d1131f86d..cb04f661c85a 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.13-dev +version: 0.1.13 groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 458cde63603f..b5267b6d9b0c 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.2.4 + +### Minor Analysis Improvements + +* Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead of going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. + ## 0.2.3 No user-facing changes. diff --git a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md b/shared/dataflow/change-notes/released/0.2.4.md similarity index 90% rename from shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md rename to shared/dataflow/change-notes/released/0.2.4.md index 05a48eb80508..075802f2b5da 100644 --- a/shared/dataflow/change-notes/2024-02-28-hidden-subpaths.md +++ b/shared/dataflow/change-notes/released/0.2.4.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 0.2.4 + +### Minor Analysis Improvements + * Path explanations now include flow that goes through callbacks passed into library functions. For example, if `map` is a library function, then in `result = map(xs, x => x + 1)` we will now include the step from `x` to `x + 1` in the path explanation, instead of going directly from `xs` to `result`. Note that this change does not affect actual query results, but only how path explanations are computed. diff --git a/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 0b605901b424..7f1e3841dcd6 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.3 +lastReleaseVersion: 0.2.4 diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 386290bde293..9c0976ca1094 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.4-dev +version: 0.2.4 groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index df97cb97717d..afeee7894871 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/mad/change-notes/released/0.2.13.md b/shared/mad/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/mad/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index a5ea1168b923..77a69168fe9b 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index 7f284f0bfb88..465ab789d4a1 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/0.0.12.md b/shared/rangeanalysis/change-notes/released/0.0.12.md new file mode 100644 index 000000000000..0e206033bc47 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index e679dc420925..997fb8da83cd 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 4d8f0196bec3..df8fbd5e8374 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.12-dev +version: 0.0.12 groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 2b955eaf376e..6b0950887f99 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/regex/change-notes/released/0.2.13.md b/shared/regex/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/regex/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 607c548a2a36..e47715dd3227 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index 7e74b25e47ee..7b073dbfe7bf 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/ssa/change-notes/released/0.2.13.md b/shared/ssa/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/ssa/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 5c773a56a668..3877a1a98f94 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index d9dd6b6f2e25..83a42fb05515 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.12 + +No user-facing changes. + ## 0.0.11 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/0.0.12.md b/shared/threat-models/change-notes/released/0.0.12.md new file mode 100644 index 000000000000..0e206033bc47 --- /dev/null +++ b/shared/threat-models/change-notes/released/0.0.12.md @@ -0,0 +1,3 @@ +## 0.0.12 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index e679dc420925..997fb8da83cd 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.0.11 +lastReleaseVersion: 0.0.12 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 08e2ae0c3306..1d8b017f7984 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.12-dev +version: 0.0.12 library: true groups: shared dataExtensions: diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index 01fdf65587ab..32d42cbeb393 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/0.2.13.md b/shared/tutorial/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/tutorial/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index cf4f16583a3d..ee00cd14490d 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 242657d19d8e..18024e289810 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/0.2.13.md b/shared/typetracking/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/typetracking/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 166a7c170cdb..7f1ce51b4df5 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index 26e1c3ae5469..dbf4204fcadc 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/typos/change-notes/released/0.2.13.md b/shared/typos/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/typos/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 47bc18e8902e..36250357dae5 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index b8ae5cf523d8..1c0c715c928e 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/util/change-notes/released/0.2.13.md b/shared/util/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/util/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 7862cb35d816..e4c8f9b21665 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true dependencies: null diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 9a5910ec3740..67d1e732a0f3 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.13 + +No user-facing changes. + ## 0.2.12 No user-facing changes. diff --git a/shared/yaml/change-notes/released/0.2.13.md b/shared/yaml/change-notes/released/0.2.13.md new file mode 100644 index 000000000000..42f11678bd3d --- /dev/null +++ b/shared/yaml/change-notes/released/0.2.13.md @@ -0,0 +1,3 @@ +## 0.2.13 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index da1cea933934..979eb20092e9 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.2.12 +lastReleaseVersion: 0.2.13 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 9813c6fb57c4..f12c77ef671c 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.13-dev +version: 0.2.13 groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index 5a35f47aa898..4bc92a92c822 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.3.13 + +### Major Analysis Improvements + +* Upgraded to Swift 5.10 +* New AST node is extracted: `ThenStmt` + ## 0.3.12 No user-facing changes. diff --git a/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md b/swift/ql/lib/change-notes/released/0.3.13.md similarity index 59% rename from swift/ql/lib/change-notes/2024-03-28-swift-5.10.md rename to swift/ql/lib/change-notes/released/0.3.13.md index bfc371a89e95..c1639172fd4a 100644 --- a/swift/ql/lib/change-notes/2024-03-28-swift-5.10.md +++ b/swift/ql/lib/change-notes/released/0.3.13.md @@ -1,5 +1,6 @@ ---- -category: majorAnalysis ---- +## 0.3.13 + +### Major Analysis Improvements + * Upgraded to Swift 5.10 * New AST node is extracted: `ThenStmt` diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 3e6664ee4b69..8791b4867d13 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.12 +lastReleaseVersion: 0.3.13 diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index d06a216db89b..f4143f293406 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.13-dev +version: 0.3.13 groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index 4ae49cfbfea4..2b745bd7bb15 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.13 + +No user-facing changes. + ## 0.3.12 No user-facing changes. diff --git a/swift/ql/src/change-notes/released/0.3.13.md b/swift/ql/src/change-notes/released/0.3.13.md new file mode 100644 index 000000000000..890ab1e3e3f3 --- /dev/null +++ b/swift/ql/src/change-notes/released/0.3.13.md @@ -0,0 +1,3 @@ +## 0.3.13 + +No user-facing changes. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 3e6664ee4b69..8791b4867d13 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.3.12 +lastReleaseVersion: 0.3.13 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 1dace3146de9..21fae0156ea3 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.13-dev +version: 0.3.13 groups: - swift - queries From 572d3ba542c952c84d15961c254ac87fb97564f5 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Tue, 2 Apr 2024 19:40:46 +0200 Subject: [PATCH 641/731] fix language specifier typo in qhelp for rb/multi-char-san --- .../security/cwe-116/IncompleteMultiCharacterSanitization.qhelp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/ql/src/queries/security/cwe-116/IncompleteMultiCharacterSanitization.qhelp b/ruby/ql/src/queries/security/cwe-116/IncompleteMultiCharacterSanitization.qhelp index 5afb23e1ec2a..8d2030586441 100644 --- a/ruby/ql/src/queries/security/cwe-116/IncompleteMultiCharacterSanitization.qhelp +++ b/ruby/ql/src/queries/security/cwe-116/IncompleteMultiCharacterSanitization.qhelp @@ -90,7 +90,7 @@ end Another potential fix is to use the popular <code>sanitize</code> gem. It keeps most of the safe HTML tags while removing all unsafe tags and attributes. </p> -<sample language="javascript"> +<sample language="ruby"> require 'sanitize' def sanitize_html(input) From 19797fdd279ecb056b34edb174f3d221ca17cab2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions@github.com> Date: Tue, 2 Apr 2024 18:20:44 +0000 Subject: [PATCH 642/731] Post-release preparation for codeql-cli-2.17.0 --- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/automodel/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index f8358ae72df4..b30dbe69bdf5 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 0.12.10 +version: 0.12.11-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 5d9a5252c00d..f50b33af9b75 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 0.9.9 +version: 0.9.10-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index f12c8e2c95e5..aca41e884d3a 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.13 +version: 1.7.14-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 74444203f849..66d7baf47803 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.13 +version: 1.7.14-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index bd9558fa2494..a9f7479eb79f 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 0.9.0 +version: 0.9.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 609c625fe5a3..98079d4221d4 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 0.8.13 +version: 0.8.14-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index fbd2978d4389..394af7249ef8 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 0.0.12 +version: 0.0.13-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 2c1fbe254faa..223333b72f84 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 0.7.13 +version: 0.7.14-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 2ab9616891b2..d4c2ffb98134 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 0.7.13 +version: 0.7.14-dev groups: - go - queries diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index c4b5940f928b..f8e68acb1105 100644 --- a/java/ql/automodel/src/qlpack.yml +++ b/java/ql/automodel/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-automodel-queries -version: 0.0.20 +version: 0.0.21-dev groups: - java - automodel diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 768e57ad9c68..7b2749aac2b8 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 0.9.0 +version: 0.9.1-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index d67193843bea..a65abf369a27 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 0.8.13 +version: 0.8.14-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 1ed74009ef0c..38c25fa5a2ab 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 0.8.13 +version: 0.8.14-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 49576a207cd5..ffae5cff5fcc 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 0.8.13 +version: 0.8.14-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 94ac367a7557..b97bfa5c48e4 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 0.7.13 +version: 0.7.14-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index c150a37790c2..e1da2c2e6d24 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 0.11.13 +version: 0.11.14-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index b24b25bd8211..d51237e1530e 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 0.9.13 +version: 0.9.14-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index 1d8218b6fa0e..ad8045b2c744 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 0.8.13 +version: 0.8.14-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index 029e052108f4..4eac4d7e8c39 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 0.8.13 +version: 0.8.14-dev groups: - ruby - queries diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index cb04f661c85a..de39d6213244 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 0.1.13 +version: 0.1.14-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 9c0976ca1094..162b5dd0490a 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 0.2.4 +version: 0.2.5-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 77a69168fe9b..97c5f74aead8 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: null diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index df8fbd5e8374..bdf15a5964df 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 0.0.12 +version: 0.0.13-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index e47715dd3227..166f8c54d5d8 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index 3877a1a98f94..ddfa057d1cad 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 1d8b017f7984..2a03df5358ee 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 0.0.12 +version: 0.0.13-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index ee00cd14490d..a5430d0a98b9 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 7f1ce51b4df5..39ee0cfe8e71 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 36250357dae5..6f20df0d94be 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index e4c8f9b21665..c81bb89d78cd 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true dependencies: null diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index f12c77ef671c..ca9995d0e564 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 0.2.13 +version: 0.2.14-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index f4143f293406..ff871c756bf8 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 0.3.13 +version: 0.3.14-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 21fae0156ea3..2ab77eb339d8 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 0.3.13 +version: 0.3.14-dev groups: - swift - queries From ce98353d2267558ab05574d2e2c4e2f773e973c8 Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo <dbartol@github.com> Date: Tue, 2 Apr 2024 15:15:11 -0400 Subject: [PATCH 643/731] Allow `@param` tags to apply to record parameters --- .../Advisory/Documentation/SpuriousJavadocParam.ql | 12 ++++++++++++ .../src/change-notes/2024-04-02-javadoc-records.md | 5 +++++ .../test/query-tests/SpuriousJavadocParam/Test.java | 13 +++++++++++++ .../test/query-tests/SpuriousJavadocParam/options | 1 + .../query-tests/SpuriousJavadocParam/test.expected | 2 ++ 5 files changed, 33 insertions(+) create mode 100644 java/ql/src/change-notes/2024-04-02-javadoc-records.md create mode 100644 java/ql/test/query-tests/SpuriousJavadocParam/options diff --git a/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql b/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql index 691811687a79..43afd978f014 100644 --- a/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql +++ b/java/ql/src/Advisory/Documentation/SpuriousJavadocParam.ql @@ -32,12 +32,24 @@ where ) or documentable instanceof ClassOrInterface and + not documentable instanceof Record and not exists(TypeVariable tv | tv.getGenericType() = documentable | "<" + tv.getName() + ">" = paramTag.getParamName() ) and msg = "@param tag \"" + paramTag.getParamName() + "\" does not match any actual type parameter of type \"" + documentable.getName() + "\"." + or + documentable instanceof Record and + not exists(TypeVariable tv | tv.getGenericType() = documentable | + "<" + tv.getName() + ">" = paramTag.getParamName() + ) and + not documentable.(Record).getCanonicalConstructor().getAParameter().getName() = + paramTag.getParamName() and + msg = + "@param tag \"" + paramTag.getParamName() + + "\" does not match any actual type parameter or record parameter of record \"" + + documentable.getName() + "\"." else // The tag has no value at all. msg = "This @param tag does not have a value." diff --git a/java/ql/src/change-notes/2024-04-02-javadoc-records.md b/java/ql/src/change-notes/2024-04-02-javadoc-records.md new file mode 100644 index 000000000000..e3859c9618bf --- /dev/null +++ b/java/ql/src/change-notes/2024-04-02-javadoc-records.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* The `java/unknown-javadoc-parameter` now accepts `@param` tags that apply to the parameters of a + record. diff --git a/java/ql/test/query-tests/SpuriousJavadocParam/Test.java b/java/ql/test/query-tests/SpuriousJavadocParam/Test.java index 84e05540c051..de108008ee83 100644 --- a/java/ql/test/query-tests/SpuriousJavadocParam/Test.java +++ b/java/ql/test/query-tests/SpuriousJavadocParam/Test.java @@ -120,5 +120,18 @@ class GenericClass<T> {} */ interface GenericInterface<T> {} + /** + * @param i exists + * @param k does not + */ + static record SomeRecord(int i, int j) {} + + /** + * @param <T> exists + * @param i exists + * @param k does not + */ + static record GenericRecord<T>(int i, int j) {} + // Diagnostic Matches: Incomplete inheritance relation for type java.lang.Object and supertype none } diff --git a/java/ql/test/query-tests/SpuriousJavadocParam/options b/java/ql/test/query-tests/SpuriousJavadocParam/options new file mode 100644 index 000000000000..fc57fe025b9a --- /dev/null +++ b/java/ql/test/query-tests/SpuriousJavadocParam/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -source 16 -target 16 diff --git a/java/ql/test/query-tests/SpuriousJavadocParam/test.expected b/java/ql/test/query-tests/SpuriousJavadocParam/test.expected index 42bdb93e60c7..0ade1a7d5196 100644 --- a/java/ql/test/query-tests/SpuriousJavadocParam/test.expected +++ b/java/ql/test/query-tests/SpuriousJavadocParam/test.expected @@ -12,3 +12,5 @@ | Test.java:112:6:112:12 | @param | @param tag "<X>" does not match any actual type parameter of type "GenericClass". | | Test.java:118:6:118:12 | @param | @param tag "T" does not match any actual type parameter of type "GenericInterface". | | Test.java:119:6:119:12 | @param | @param tag "<X>" does not match any actual type parameter of type "GenericInterface". | +| Test.java:125:6:125:12 | @param | @param tag "k" does not match any actual type parameter or record parameter of record "SomeRecord". | +| Test.java:132:6:132:12 | @param | @param tag "k" does not match any actual type parameter or record parameter of record "GenericRecord". | From ec32bdce63836e1c50c454adc307aafb4963113e Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Wed, 3 Apr 2024 09:19:18 +0200 Subject: [PATCH 644/731] fix unsanitized -> sanitized typo, and don't add a new variable just to remove newlines --- .../queries/security/cwe-117/examples/log_injection_good.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ruby/ql/src/queries/security/cwe-117/examples/log_injection_good.rb b/ruby/ql/src/queries/security/cwe-117/examples/log_injection_good.rb index 71b0b8b46046..9ee33804b9f1 100644 --- a/ruby/ql/src/queries/security/cwe-117/examples/log_injection_good.rb +++ b/ruby/ql/src/queries/security/cwe-117/examples/log_injection_good.rb @@ -5,9 +5,8 @@ def login logger = Logger.new STDOUT username = params[:username] - # GOOD: log message constructed with unsanitized user input - sanitized_username = username.gsub("\n", "") - logger.info "attempting to login user: " + sanitized_username + # GOOD: log message constructed with sanitized user input + logger.info "attempting to login user: " + sanitized_username.gsub("\n", "") # ... login logic ... end From 0f980e2b975196aba695b0bba13e969f3a5b4e0e Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 25 Mar 2024 13:49:46 +0100 Subject: [PATCH 645/731] C#: Properly dispose diagnostic writer objects --- cpp/autobuilder/Semmle.Autobuild.Cpp/Program.cs | 2 +- .../Semmle.Autobuild.CSharp/Program.cs | 2 +- .../Semmle.Autobuild.Shared/Autobuilder.cs | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cpp/autobuilder/Semmle.Autobuild.Cpp/Program.cs b/cpp/autobuilder/Semmle.Autobuild.Cpp/Program.cs index 5fca6f556fbc..48a6528a65b8 100644 --- a/cpp/autobuilder/Semmle.Autobuild.Cpp/Program.cs +++ b/cpp/autobuilder/Semmle.Autobuild.Cpp/Program.cs @@ -17,7 +17,7 @@ static int Main() try { Console.WriteLine("CodeQL C++ autobuilder"); - var builder = new CppAutobuilder(actions, options); + using var builder = new CppAutobuilder(actions, options); return builder.AttemptBuild(); } catch (InvalidEnvironmentException ex) diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/Program.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/Program.cs index 71289148916b..bec0376eac3a 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/Program.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/Program.cs @@ -17,7 +17,7 @@ public static int Main() try { Console.WriteLine("CodeQL C# autobuilder"); - var builder = new CSharpAutobuilder(actions, options); + using var builder = new CSharpAutobuilder(actions, options); return builder.AttemptBuild(); } catch (InvalidEnvironmentException ex) diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs index 904c6543feb6..6fe258abc0e3 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs @@ -92,7 +92,7 @@ public interface IAutobuilder<out TAutobuildOptions> where TAutobuildOptions : A /// The overall design is intended to be extensible so that in theory, /// it should be possible to add new build rules without touching this code. /// </summary> - public abstract class Autobuilder<TAutobuildOptions> : IAutobuilder<TAutobuildOptions> where TAutobuildOptions : AutobuildOptionsShared + public abstract class Autobuilder<TAutobuildOptions> : IDisposable, IAutobuilder<TAutobuildOptions> where TAutobuildOptions : AutobuildOptionsShared { /// <summary> /// Full file paths of files found in the project directory, as well as @@ -351,6 +351,20 @@ protected BuildScript AutobuildFailure() => } }); + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (disposing) + { + (diagnostics as IDisposable)?.Dispose(); + } + } + /// <summary> /// Value of CODEQL_EXTRACTOR_<LANG>_ROOT environment variable. /// </summary> From 305fa841862b609c87d374d3b194c2ce6695e9ca Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Wed, 3 Apr 2024 10:08:28 +0200 Subject: [PATCH 646/731] Change `IDiagnosticsWriter` to implement `IDisposable` --- cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs | 2 ++ .../autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs | 2 ++ csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs | 2 +- csharp/extractor/Semmle.Util/ToolStatusPage.cs | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs b/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs index 3855428a5ae9..f243bdb54013 100644 --- a/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs +++ b/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs @@ -203,6 +203,8 @@ internal class TestDiagnosticWriter : IDiagnosticsWriter public IList<DiagnosticMessage> Diagnostics { get; } = new List<DiagnosticMessage>(); public void AddEntry(DiagnosticMessage message) => this.Diagnostics.Add(message); + + public void Dispose() { } } /// <summary> diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs index 2b00d9db742a..3288eb5e852e 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs @@ -218,6 +218,8 @@ internal class TestDiagnosticWriter : IDiagnosticsWriter public IList<DiagnosticMessage> Diagnostics { get; } = new List<DiagnosticMessage>(); public void AddEntry(DiagnosticMessage message) => this.Diagnostics.Add(message); + + public void Dispose() { } } /// <summary> diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs index 6fe258abc0e3..2414791ad4ce 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs @@ -361,7 +361,7 @@ protected virtual void Dispose(bool disposing) { if (disposing) { - (diagnostics as IDisposable)?.Dispose(); + diagnostics.Dispose(); } } diff --git a/csharp/extractor/Semmle.Util/ToolStatusPage.cs b/csharp/extractor/Semmle.Util/ToolStatusPage.cs index 1be700654af2..a93cdec5fdf6 100644 --- a/csharp/extractor/Semmle.Util/ToolStatusPage.cs +++ b/csharp/extractor/Semmle.Util/ToolStatusPage.cs @@ -183,7 +183,7 @@ public DiagnosticMessage( /// <summary> /// Provides the ability to write diagnostic messages to some output. /// </summary> - public interface IDiagnosticsWriter + public interface IDiagnosticsWriter : IDisposable { /// <summary> /// Adds <paramref name="message" /> as a new diagnostics entry. From fbec197d4a3e1411803c827e0ed5bf0251d8dca2 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Wed, 3 Apr 2024 10:13:44 +0200 Subject: [PATCH 647/731] Move TSP diagnostics related classes to separate files --- .../DiagnosticMessage.cs} | 61 ------------------- .../ToolStatusPage/DiagnosticsStream.cs | 55 +++++++++++++++++ .../ToolStatusPage/IDiagnosticsWriter.cs | 16 +++++ 3 files changed, 71 insertions(+), 61 deletions(-) rename csharp/extractor/Semmle.Util/{ToolStatusPage.cs => ToolStatusPage/DiagnosticMessage.cs} (77%) create mode 100644 csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs create mode 100644 csharp/extractor/Semmle.Util/ToolStatusPage/IDiagnosticsWriter.cs diff --git a/csharp/extractor/Semmle.Util/ToolStatusPage.cs b/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticMessage.cs similarity index 77% rename from csharp/extractor/Semmle.Util/ToolStatusPage.cs rename to csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticMessage.cs index a93cdec5fdf6..e8b061b29f2b 100644 --- a/csharp/extractor/Semmle.Util/ToolStatusPage.cs +++ b/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticMessage.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Globalization; -using System.IO; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Serialization; @@ -179,64 +178,4 @@ public DiagnosticMessage( this.PlaintextMessage = plaintextMessage; } } - - /// <summary> - /// Provides the ability to write diagnostic messages to some output. - /// </summary> - public interface IDiagnosticsWriter : IDisposable - { - /// <summary> - /// Adds <paramref name="message" /> as a new diagnostics entry. - /// </summary> - /// <param name="message">The diagnostics entry to add.</param> - void AddEntry(DiagnosticMessage message); - } - - /// <summary> - /// A wrapper around an underlying <see cref="StreamWriter" /> which allows - /// <see cref="DiagnosticMessage" /> objects to be serialized to it. - /// </summary> - public sealed class DiagnosticsStream : IDiagnosticsWriter, IDisposable - { - private readonly JsonSerializer serializer; - private readonly StreamWriter writer; - - /// <summary> - /// Initialises a new <see cref="DiagnosticsStream" /> for a file at <paramref name="path" />. - /// </summary> - /// <param name="path">The path to the file that should be created.</param> - public DiagnosticsStream(string path) - { - this.writer = File.CreateText(path); - - var contractResolver = new DefaultContractResolver - { - NamingStrategy = new CamelCaseNamingStrategy() - }; - - serializer = new JsonSerializer - { - ContractResolver = contractResolver, - NullValueHandling = NullValueHandling.Ignore - }; - } - - /// <summary> - /// Adds <paramref name="message" /> as a new diagnostics entry. - /// </summary> - /// <param name="message">The diagnostics entry to add.</param> - public void AddEntry(DiagnosticMessage message) - { - serializer.Serialize(writer, message); - writer.Flush(); - } - - /// <summary> - /// Releases all resources used by the <see cref="DiagnosticsStream" /> object. - /// </summary> - public void Dispose() - { - writer.Dispose(); - } - } } diff --git a/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs b/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs new file mode 100644 index 000000000000..1ac2edc5602c --- /dev/null +++ b/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +namespace Semmle.Util +{ + /// <summary> + /// A wrapper around an underlying <see cref="StreamWriter" /> which allows + /// <see cref="DiagnosticMessage" /> objects to be serialized to it. + /// </summary> + public sealed class DiagnosticsStream : IDiagnosticsWriter, IDisposable + { + private readonly JsonSerializer serializer; + private readonly StreamWriter writer; + + /// <summary> + /// Initialises a new <see cref="DiagnosticsStream" /> for a file at <paramref name="path" />. + /// </summary> + /// <param name="path">The path to the file that should be created.</param> + public DiagnosticsStream(string path) + { + this.writer = File.CreateText(path); + + var contractResolver = new DefaultContractResolver + { + NamingStrategy = new CamelCaseNamingStrategy() + }; + + serializer = new JsonSerializer + { + ContractResolver = contractResolver, + NullValueHandling = NullValueHandling.Ignore + }; + } + + /// <summary> + /// Adds <paramref name="message" /> as a new diagnostics entry. + /// </summary> + /// <param name="message">The diagnostics entry to add.</param> + public void AddEntry(DiagnosticMessage message) + { + serializer.Serialize(writer, message); + writer.Flush(); + } + + /// <summary> + /// Releases all resources used by the <see cref="DiagnosticsStream" /> object. + /// </summary> + public void Dispose() + { + writer.Dispose(); + } + } +} diff --git a/csharp/extractor/Semmle.Util/ToolStatusPage/IDiagnosticsWriter.cs b/csharp/extractor/Semmle.Util/ToolStatusPage/IDiagnosticsWriter.cs new file mode 100644 index 000000000000..eda3dbb41d83 --- /dev/null +++ b/csharp/extractor/Semmle.Util/ToolStatusPage/IDiagnosticsWriter.cs @@ -0,0 +1,16 @@ +using System; + +namespace Semmle.Util +{ + /// <summary> + /// Provides the ability to write diagnostic messages to some output. + /// </summary> + public interface IDiagnosticsWriter : IDisposable + { + /// <summary> + /// Adds <paramref name="message" /> as a new diagnostics entry. + /// </summary> + /// <param name="message">The diagnostics entry to add.</param> + void AddEntry(DiagnosticMessage message); + } +} From 64e82bb00e2f863ff51be84e3ef0284765c3effd Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 2 Apr 2024 10:46:27 +0200 Subject: [PATCH 648/731] C#: Include all non-source-code properties in data flow --- .../semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index f4aba4fdfd0a..bd63689c8ee8 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -1997,6 +1997,8 @@ class FieldOrProperty extends Assignable, Modifiable { or p.getDeclaringType() instanceof AnonymousClass ) + or + p.fromLibrary() ) } From 75894d581c392bc77b423b051f960dcbd4727797 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Wed, 3 Apr 2024 12:15:33 +0200 Subject: [PATCH 649/731] C#: Remove unused classes from `Util` project --- .../Semmle.Autobuild.CSharp/DotNetRule.cs | 2 +- .../Entities/Expressions/Lambda.cs | 2 +- .../extractor/Semmle.Util.Tests/ActionMap.cs | 54 ------ .../extractor/Semmle.Util.Tests/TextTest.cs | 78 --------- csharp/extractor/Semmle.Util/ActionMap.cs | 45 ----- csharp/extractor/Semmle.Util/Enumerators.cs | 19 -- csharp/extractor/Semmle.Util/FileRenamer.cs | 34 ---- .../extractor/Semmle.Util/FuzzyDictionary.cs | 165 ------------------ .../extractor/Semmle.Util/SharedReference.cs | 18 -- ...gBuilder.cs => StringBuilderExtensions.cs} | 0 .../extractor/Semmle.Util/StringExtensions.cs | 41 ----- csharp/extractor/Semmle.Util/Text.cs | 105 ----------- csharp/extractor/Semmle.Util/Worklist.cs | 57 ------ 13 files changed, 2 insertions(+), 618 deletions(-) delete mode 100644 csharp/extractor/Semmle.Util.Tests/ActionMap.cs delete mode 100644 csharp/extractor/Semmle.Util.Tests/TextTest.cs delete mode 100644 csharp/extractor/Semmle.Util/ActionMap.cs delete mode 100644 csharp/extractor/Semmle.Util/Enumerators.cs delete mode 100644 csharp/extractor/Semmle.Util/FileRenamer.cs delete mode 100644 csharp/extractor/Semmle.Util/FuzzyDictionary.cs delete mode 100644 csharp/extractor/Semmle.Util/SharedReference.cs rename csharp/extractor/Semmle.Util/{StringBuilder.cs => StringBuilderExtensions.cs} (100%) delete mode 100644 csharp/extractor/Semmle.Util/StringExtensions.cs delete mode 100644 csharp/extractor/Semmle.Util/Text.cs delete mode 100644 csharp/extractor/Semmle.Util/Worklist.cs diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs index c1383731361a..1db24880be2d 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs @@ -32,7 +32,7 @@ public BuildScript Analyse(IAutobuilder<CSharpAutobuildOptions> builder, bool au if (auto) { NotDotNetProjects = builder.ProjectsOrSolutionsToBuild - .SelectMany(p => Enumerators.Singleton(p).Concat(p.IncludedProjects)) + .SelectMany(p => new[] { p }.Concat(p.IncludedProjects)) .OfType<Project<CSharpAutobuildOptions>>() .Where(p => !p.DotNetProject); var notDotNetProject = NotDotNetProjects.FirstOrDefault(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Lambda.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Lambda.cs index 37ea7465255e..cf9c682eb679 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Lambda.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Lambda.cs @@ -63,7 +63,7 @@ private Lambda(ExpressionNodeInfo info, ParenthesizedLambdaExpressionSyntax node public static Lambda Create(ExpressionNodeInfo info, ParenthesizedLambdaExpressionSyntax node) => new Lambda(info, node); private Lambda(ExpressionNodeInfo info, SimpleLambdaExpressionSyntax node) - : this(info.SetKind(ExprKind.LAMBDA), node.Body, Enumerators.Singleton(node.Parameter), null) { } + : this(info.SetKind(ExprKind.LAMBDA), node.Body, [node.Parameter], null) { } public static Lambda Create(ExpressionNodeInfo info, SimpleLambdaExpressionSyntax node) => new Lambda(info, node); diff --git a/csharp/extractor/Semmle.Util.Tests/ActionMap.cs b/csharp/extractor/Semmle.Util.Tests/ActionMap.cs deleted file mode 100644 index 8bed44b97a25..000000000000 --- a/csharp/extractor/Semmle.Util.Tests/ActionMap.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Xunit; -using Semmle.Util; - -using Assert = Xunit.Assert; - -namespace SemmleTests.Semmle.Util -{ - - public class ActionMapTests - { - [Fact] - public void TestAddthenOnAdd() - { - var am = new ActionMap<int, int>(); - am.Add(1, 2); - int value = 0; - am.OnAdd(1, x => value = x); - Assert.Equal(2, value); - } - - [Fact] - public void TestOnAddthenAdd() - { - var am = new ActionMap<int, int>(); - int value = 0; - am.OnAdd(1, x => value = x); - am.Add(1, 2); - Assert.Equal(2, value); - } - - [Fact] - public void TestNotAdded() - { - var am = new ActionMap<int, int>(); - int value = 0; - am.OnAdd(1, x => value = x); - am.Add(2, 2); - Assert.Equal(0, value); - } - - [Fact] - public void TestMultipleActions() - { - var am = new ActionMap<int, int>(); - int value1 = 0, value2 = 0; - am.OnAdd(1, x => value1 = x); - am.OnAdd(1, x => value2 = x); - am.Add(1, 2); - Assert.Equal(2, value1); - Assert.Equal(2, value2); - } - - } -} diff --git a/csharp/extractor/Semmle.Util.Tests/TextTest.cs b/csharp/extractor/Semmle.Util.Tests/TextTest.cs deleted file mode 100644 index 3a21f0b73edd..000000000000 --- a/csharp/extractor/Semmle.Util.Tests/TextTest.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Xunit; -using System; -using Semmle.Util; - -using Assert = Xunit.Assert; - -namespace SemmleTests -{ - public class TextTest - { - //#################### PRIVATE VARIABLES #################### - #region - - /// <summary> - /// A shorter way of writing Environment.NewLine (it gets used repeatedly). - /// </summary> - private static readonly string NL = Environment.NewLine; - - #endregion - - //#################### TEST METHODS #################### - #region - - [Fact] - public void GetAllTest() - { - var input = new string[] - { - "Said once a young coder from Crewe,", - "'I like to write tests, so I do!", - "They help me confirm", - "That I don't need to squirm -", - "My code might look nice, but works too!'" - }; - - var text = new Text(input); - - Assert.Equal(string.Join(NL, input) + NL, text.GetAll()); - } - - [Fact] - public void GetPortionTest() - { - var input = new string[] - { - "There once was a jolly young tester", - "Who couldn't leave software to fester -", - "He'd prod and he'd poke", - "Until something bad broke,", - "And then he'd find someone to pester." - }; - - var text = new Text(input); - - // A single-line range (to test the special case). - Assert.Equal("jolly" + NL, text.GetPortion(0, 17, 0, 22)); - - // A two-line range. - Assert.Equal("prod and he'd poke" + NL + "Until" + NL, text.GetPortion(2, 5, 3, 5)); - - // A three-line range (to test that the middle line is included in full). - Assert.Equal("poke" + NL + "Until something bad broke," + NL + "And then" + NL, text.GetPortion(2, 19, 4, 8)); - - // An invalid but recoverable range (to test that a best effort is made rather than crashing). - Assert.Equal(NL + "Who couldn't leave software to fester -" + NL, text.GetPortion(0, int.MaxValue, 1, int.MaxValue)); - - // Some quite definitely dodgy ranges (to test that exceptions are thrown). - Assert.Throws<Exception>(() => text.GetPortion(-1, 0, 0, 0)); - Assert.Throws<Exception>(() => text.GetPortion(0, -1, 0, 0)); - Assert.Throws<Exception>(() => text.GetPortion(0, 0, -1, 0)); - Assert.Throws<Exception>(() => text.GetPortion(0, 0, 0, -1)); - Assert.Throws<Exception>(() => text.GetPortion(3, 5, 2, 5)); - Assert.Throws<Exception>(() => text.GetPortion(2, 5, int.MaxValue, 5)); - } - - #endregion - } -} diff --git a/csharp/extractor/Semmle.Util/ActionMap.cs b/csharp/extractor/Semmle.Util/ActionMap.cs deleted file mode 100644 index afcda9bb4944..000000000000 --- a/csharp/extractor/Semmle.Util/ActionMap.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Semmle.Util -{ - /// <summary> - /// A dictionary which performs an action when items are added to the dictionary. - /// The order in which keys and actions are added does not matter. - /// </summary> - /// <typeparam name="TKey"></typeparam> - /// <typeparam name="TValue"></typeparam> - public class ActionMap<TKey, TValue> where TKey : notnull - { - public void Add(TKey key, TValue value) - { - - if (actions.TryGetValue(key, out var a)) - a(value); - values[key] = value; - } - - public void OnAdd(TKey key, Action<TValue> action) - { - if (actions.TryGetValue(key, out var a)) - { - actions[key] = a + action; - } - else - { - actions.Add(key, action); - } - - if (values.TryGetValue(key, out var val)) - { - action(val); - } - } - - // Action associated with each key. - private readonly Dictionary<TKey, Action<TValue>> actions = new Dictionary<TKey, Action<TValue>>(); - - // Values associated with each key. - private readonly Dictionary<TKey, TValue> values = new Dictionary<TKey, TValue>(); - } -} diff --git a/csharp/extractor/Semmle.Util/Enumerators.cs b/csharp/extractor/Semmle.Util/Enumerators.cs deleted file mode 100644 index 16fad6cfa549..000000000000 --- a/csharp/extractor/Semmle.Util/Enumerators.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Util -{ - public static class Enumerators - { - /// <summary> - /// Create an enumerable with a single element. - /// </summary> - /// - /// <typeparam name="T">The type of the enumerable/element.</typeparam> - /// <param name="t">The element.</param> - /// <returns>An enumerable containing a single element.</returns> - public static IEnumerable<T> Singleton<T>(T t) - { - yield return t; - } - } -} diff --git a/csharp/extractor/Semmle.Util/FileRenamer.cs b/csharp/extractor/Semmle.Util/FileRenamer.cs deleted file mode 100644 index 494e46856f83..000000000000 --- a/csharp/extractor/Semmle.Util/FileRenamer.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace Semmle.Util -{ - /// <summary> - /// Utility to temporarily rename a set of files. - /// </summary> - public sealed class FileRenamer : IDisposable - { - private readonly string[] files; - private const string suffix = ".codeqlhidden"; - - public FileRenamer(IEnumerable<FileInfo> oldFiles) - { - files = oldFiles.Select(f => f.FullName).ToArray(); - - foreach (var file in files) - { - File.Move(file, file + suffix); - } - } - - public void Dispose() - { - foreach (var file in files) - { - File.Move(file + suffix, file); - } - } - } -} diff --git a/csharp/extractor/Semmle.Util/FuzzyDictionary.cs b/csharp/extractor/Semmle.Util/FuzzyDictionary.cs deleted file mode 100644 index 53a84d98a081..000000000000 --- a/csharp/extractor/Semmle.Util/FuzzyDictionary.cs +++ /dev/null @@ -1,165 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Semmle.Util -{ - /// <summary> - /// A dictionary from strings to elements of type T. - /// </summary> - /// - /// <remarks> - /// This data structure is able to locate items based on an "approximate match" - /// of the key. This is used for example when attempting to identify two terms - /// in different trap files which are similar but not identical. - /// - /// The algorithm locates the closest match to a string based on a "distance function". - /// - /// Whilst many distance functions are possible, a bespoke algorithm is used here, - /// for efficiency and suitability for the domain. - /// - /// The distance is defined as the Hamming Distance of the numbers in the string. - /// Each string is split into the base "form" (stripped of numbers) and a vector of - /// numbers. (Numbers are non-negative integers in this context). - /// - /// Strings with a different "form" are considered different and have a distance - /// of infinity. - /// - /// This distance function is reflexive, symmetric and obeys the triangle inequality. - /// - /// E.g. foo(bar,1,2) has form "foo(bar,,)" and integers {1,2} - /// - /// distance(foo(bar,1,2), foo(bar,1,2)) = 0 - /// distance(foo(bar,1,2), foo(bar,1,3)) = 1 - /// distance(foo(bar,2,1), foo(bar,1,2)) = 2 - /// distance(foo(bar,1,2), foo(baz,1,2)) = infinity - /// </remarks> - /// - /// <typeparam name="T">The value type.</typeparam> - public class FuzzyDictionary<T> where T : class - { - // All data items indexed by the "base string" (stripped of numbers) - private readonly Dictionary<string, List<KeyValuePair<string, T>>> index = new Dictionary<string, List<KeyValuePair<string, T>>>(); - - /// <summary> - /// Stores a new KeyValuePair in the data structure. - /// </summary> - /// <param name="k">The key.</param> - /// <param name="v">The value.</param> - public void Add(string k, T v) - { - var kv = new KeyValuePair<string, T>(k, v); - - var root = StripDigits(k); - index.AddAnother(root, kv); - } - - /// <summary> - /// Computes the Hamming Distance between two sequences of the same length. - /// </summary> - /// <param name="v1">Vector 1</param> - /// <param name="v2">Vector 2</param> - /// <returns>The Hamming Distance.</returns> - private static int HammingDistance<TElement>(IEnumerable<TElement> v1, IEnumerable<TElement> v2) where TElement : notnull - { - return v1.Zip(v2, (x, y) => x.Equals(y) ? 0 : 1).Sum(); - } - - /// <summary> - /// Locates the value with the smallest Hamming Distance from the query. - /// </summary> - /// <param name="query">The query string.</param> - /// <param name="distance">The distance between the query string and the stored string.</param> - /// <returns>The best match, or null (default).</returns> - public T? FindMatch(string query, out int distance) - { - var root = StripDigits(query); - if (!index.TryGetValue(root, out var list)) - { - distance = 0; - return default(T); - } - - return BestMatch(query, list, (a, b) => HammingDistance(ExtractIntegers(a), ExtractIntegers(b)), out distance); - } - - /// <summary> - /// Returns the best match (with the smallest distance) for a query. - /// </summary> - /// <param name="query">The query string.</param> - /// <param name="candidates">The list of candidate matches.</param> - /// <param name="distance">The distance function.</param> - /// <param name="bestDistance">The distance between the query and the stored string.</param> - /// <returns>The stored value.</returns> - private static T? BestMatch(string query, IEnumerable<KeyValuePair<string, T>> candidates, Func<string, string, int> distance, out int bestDistance) - { - var bestMatch = default(T); - bestDistance = 0; - var first = true; - - foreach (var candidate in candidates) - { - var d = distance(query, candidate.Key); - if (d == 0) - return candidate.Value; - - if (first || d < bestDistance) - { - bestDistance = d; - bestMatch = candidate.Value; - first = false; - } - } - - return bestMatch; - } - - /// <summary> - /// Removes all digits from a string. - /// </summary> - /// <param name="input">The input string.</param> - /// <returns>String with digits removed.</returns> - private static string StripDigits(string input) - { - var result = new StringBuilder(); - foreach (var c in input.Where(c => !char.IsDigit(c))) - result.Append(c); - return result.ToString(); - } - - /// <summary> - /// Extracts and enumerates all non-negative integers in a string. - /// </summary> - /// <param name="input">The string to enumerate.</param> - /// <returns>The sequence of integers.</returns> - private static IEnumerable<int> ExtractIntegers(string input) - { - var inNumber = false; - var value = 0; - foreach (var c in input) - { - if (char.IsDigit(c)) - { - if (inNumber) - { - value = value * 10 + (c - '0'); - } - else - { - inNumber = true; - value = c - '0'; - } - } - else - { - if (inNumber) - { - yield return value; - inNumber = false; - } - } - } - } - } -} diff --git a/csharp/extractor/Semmle.Util/SharedReference.cs b/csharp/extractor/Semmle.Util/SharedReference.cs deleted file mode 100644 index ba87caeefaa4..000000000000 --- a/csharp/extractor/Semmle.Util/SharedReference.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Semmle.Util -{ - /// <summary> - /// An instance of this class maintains a shared reference to an object. - /// This makes it possible for several different parts of the code to - /// share access to an object that can change (that is, they all want - /// to refer to the same object, but the object to which they jointly - /// refer may vary over time). - /// </summary> - /// <typeparam name="T">The type of the shared object.</typeparam> - public sealed class SharedReference<T> where T : class - { - /// <summary> - /// The shared object to which different parts of the code want to refer. - /// </summary> - public T? Obj { get; set; } - } -} diff --git a/csharp/extractor/Semmle.Util/StringBuilder.cs b/csharp/extractor/Semmle.Util/StringBuilderExtensions.cs similarity index 100% rename from csharp/extractor/Semmle.Util/StringBuilder.cs rename to csharp/extractor/Semmle.Util/StringBuilderExtensions.cs diff --git a/csharp/extractor/Semmle.Util/StringExtensions.cs b/csharp/extractor/Semmle.Util/StringExtensions.cs deleted file mode 100644 index e56f106fe1fc..000000000000 --- a/csharp/extractor/Semmle.Util/StringExtensions.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace Semmle.Util -{ - public static class StringExtensions - { - public static (string, string) Split(this string self, int index0) - { - var split = self.Split(new[] { index0 }); - return (split[0], split[1]); - } - - public static (string, string, string) Split(this string self, int index0, int index1) - { - var split = self.Split(new[] { index0, index1 }); - return (split[0], split[1], split[2]); - } - - public static (string, string, string, string) Split(this string self, int index0, int index1, int index2) - { - var split = self.Split(new[] { index0, index1, index2 }); - return (split[0], split[1], split[2], split[3]); - } - - private static List<string> Split(this string self, params int[] indices) - { - var ret = new List<string>(); - var previousIndex = 0; - foreach (var index in indices.OrderBy(i => i)) - { - ret.Add(self.Substring(previousIndex, index - previousIndex)); - previousIndex = index; - } - - ret.Add(self.Substring(previousIndex)); - - return ret; - } - } -} diff --git a/csharp/extractor/Semmle.Util/Text.cs b/csharp/extractor/Semmle.Util/Text.cs deleted file mode 100644 index 38619fc0164d..000000000000 --- a/csharp/extractor/Semmle.Util/Text.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.IO; - -namespace Semmle.Util -{ - /// <summary> - /// An instance of this class represents a piece of text, e.g. the text of a C# source file. - /// </summary> - public sealed class Text - { - //#################### PRIVATE VARIABLES #################### - #region - - /// <summary> - /// The text, stored line-by-line. - /// </summary> - private readonly string[] lines; - - #endregion - - //#################### CONSTRUCTORS #################### - #region - - /// <summary> - /// Constructs a text object from an array of lines. - /// </summary> - /// <param name="lines">The lines of text.</param> - public Text(string[] lines) - { - this.lines = lines; - } - - #endregion - - //#################### PUBLIC METHODS #################### - #region - - /// <summary> - /// Gets the whole text. - /// </summary> - /// <returns>The whole text.</returns> - public string GetAll() - { - using var sw = new StringWriter(); - foreach (var s in lines) - { - sw.WriteLine(s); - } - return sw.ToString(); - } - - /// <summary> - /// Gets the portion of text that lies in the specified location range. - /// </summary> - /// <param name="startRow">The row at which the portion starts.</param> - /// <param name="startColumn">The column in the start row at which the portion starts.</param> - /// <param name="endRow">The row at which the portion ends.</param> - /// <param name="endColumn">The column in the end row at which the portion ends.</param> - /// <returns>The portion of text that lies in the specified location range.</returns> - public string GetPortion(int startRow, int startColumn, int endRow, int endColumn) - { - // Perform some basic validation on the range bounds. - if (startRow < 0 || endRow < 0 || startColumn < 0 || endColumn < 0 || endRow >= lines.Length || startRow > endRow) - { - throw new Exception - ( - string.Format("Bad range ({0},{1}):({2},{3}) in a piece of text with {4} lines", startRow, startColumn, endRow, endColumn, lines.Length) - ); - } - - using var sw = new StringWriter(); - string line; - - for (var i = startRow; i <= endRow; ++i) - { - if (i == startRow && i == endRow) - { - // This is a single-line range, so take the bit between "startColumn" and "endColumn". - line = startColumn <= lines[i].Length ? lines[i].Substring(startColumn, endColumn - startColumn) : ""; - } - else if (i == startRow) - { - // This is the first line of a multi-line range, so take the bit from "startColumn" onwards. - line = startColumn <= lines[i].Length ? lines[i].Substring(startColumn) : ""; - } - else if (i == endRow) - { - // This is the last line of a multi-line range, so take the bit up to "endColumn". - line = endColumn <= lines[i].Length ? lines[i].Substring(0, endColumn) : lines[i]; - } - else - { - // This is a line in the middle of a multi-line range, so take the whole line. - line = lines[i]; - } - - sw.WriteLine(line); - } - - return sw.ToString(); - } - - #endregion - } -} diff --git a/csharp/extractor/Semmle.Util/Worklist.cs b/csharp/extractor/Semmle.Util/Worklist.cs deleted file mode 100644 index 0a71dbd4381e..000000000000 --- a/csharp/extractor/Semmle.Util/Worklist.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System.Collections.Generic; - -namespace Semmle.Util -{ - /// <summary> - /// A worklist of items, providing the operations of adding an item, checking - /// whether there are new items and iterating a chunk of unprocessed items. - /// Any one item will only be accepted into the worklist once. - /// </summary> - public class Worklist<T> - { - private readonly HashSet<T> internalSet = new HashSet<T>(); - private LinkedList<T> internalList = new LinkedList<T>(); - private bool hasNewElements = false; - - /// <summary> - /// Gets a value indicating whether this instance has had any new elements added - /// since the last time <c>GetUnprocessedElements()</c> was called. - /// </summary> - /// <value> - /// <c>true</c> if this instance has new elements; otherwise, <c>false</c>. - /// </value> - public bool HasNewElements => hasNewElements; - - /// <summary> - /// Add the specified element to the worklist. - /// </summary> - /// <param name='element'> - /// If set to <c>true</c> element. - /// </param> - public bool Add(T element) - { - if (internalSet.Contains(element)) - return false; - internalSet.Add(element); - internalList.AddLast(element); - hasNewElements = true; - return true; - } - - /// <summary> - /// Gets the unprocessed elements that have been accumulated since the last time - /// this method was called. If <c>HasNewElements == true</c>, the resulting list - /// will be non-empty. - /// </summary> - /// <returns> - /// The unprocessed elements. - /// </returns> - public LinkedList<T> GetUnprocessedElements() - { - var result = internalList; - internalList = new LinkedList<T>(); - hasNewElements = false; - return result; - } - } -} From 550e251d68dabcbfaf2f3ceb5c8cc1124ec9e5cf Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 2 Apr 2024 10:41:56 +0200 Subject: [PATCH 650/731] Data flow: Do not require stores to have matching reads in flow exploration --- .../codeql/dataflow/internal/DataFlowImpl.qll | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index b5f99972becd..64222dbc8e34 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -452,18 +452,22 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> { private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) } pragma[nomagic] - private predicate hasReadStep(Content c) { read(_, c, _) } - - pragma[nomagic] - private predicate storeEx( + private predicate storeExUnrestricted( NodeEx node1, Content c, NodeEx node2, DataFlowType contentType, DataFlowType containerType ) { store(pragma[only_bind_into](node1.asNode()), c, pragma[only_bind_into](node2.asNode()), contentType, containerType) and - hasReadStep(c) and stepFilter(node1, node2) } + pragma[nomagic] + private predicate storeEx( + NodeEx node1, Content c, NodeEx node2, DataFlowType contentType, DataFlowType containerType + ) { + storeExUnrestricted(node1, c, node2, contentType, containerType) and + read(_, c, _) + } + pragma[nomagic] private predicate viableReturnPosOutEx(DataFlowCall call, ReturnPosition pos, NodeEx out) { viableReturnPosOut(call, pos, out.asNode()) @@ -5141,7 +5145,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> { midNode = mid.getNodeEx() and t1 = mid.getType() and ap1 = mid.getAp() and - storeEx(midNode, c, node, contentType, t2) and + storeExUnrestricted(midNode, c, node, contentType, t2) and ap2.getHead() = c and ap2.len() = unbindInt(ap1.len() + 1) and compatibleTypes(t1, contentType) @@ -5318,7 +5322,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> { not outBarrier(node, state) and // if a node is not the target of a store, we can check `clearsContent` immediately ( - storeEx(_, _, node, _, _) + storeExUnrestricted(_, _, node, _, _) or not clearsContentEx(node, ap.getHead()) ) @@ -5459,7 +5463,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> { exists(NodeEx midNode | midNode = mid.getNodeEx() and ap = mid.getAp() and - storeEx(node, c, midNode, _, _) and + storeExUnrestricted(node, c, midNode, _, _) and ap.getHead() = c ) } From 362a109e04b30f64d4b1b5ea78f8cb9dfbd2528f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Vajk?= <tamasvajk@github.com> Date: Wed, 3 Apr 2024 14:23:36 +0200 Subject: [PATCH 651/731] Remove redundant implemented interface Co-authored-by: Michael Nebel <michaelnebel@github.com> --- .../extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs b/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs index 1ac2edc5602c..1dc320f5f415 100644 --- a/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs +++ b/csharp/extractor/Semmle.Util/ToolStatusPage/DiagnosticsStream.cs @@ -9,7 +9,7 @@ namespace Semmle.Util /// A wrapper around an underlying <see cref="StreamWriter" /> which allows /// <see cref="DiagnosticMessage" /> objects to be serialized to it. /// </summary> - public sealed class DiagnosticsStream : IDiagnosticsWriter, IDisposable + public sealed class DiagnosticsStream : IDiagnosticsWriter { private readonly JsonSerializer serializer; private readonly StreamWriter writer; From 698debfa20911680bf3fba590871ff1e7bd56818 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Thu, 28 Mar 2024 16:05:16 +0000 Subject: [PATCH 652/731] Extractor: explicitly deal with extracting `x.(type)` in type switches --- go/extractor/extractor.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index f2ba68a20f0e..d9e649401e3c 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -1010,7 +1010,10 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) { } kind = dbscheme.TypeAssertExpr.Index() extractExpr(tw, expr.X, lbl, 0) - extractExpr(tw, expr.Type, lbl, 1) + // expr.Type can be `nil` if this is the `x.(type)` in a type switch. + if expr.Type != nil { + extractExpr(tw, expr.Type, lbl, 1) + } case *ast.CallExpr: if expr == nil { return From c7f2e991ed360ddd6aab9661f77199975f90d20a Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Thu, 28 Mar 2024 16:41:47 +0000 Subject: [PATCH 653/731] Improve QLDoc for TypeAssertExpr Include information about the type assert `x.(type)` used in type switches. --- go/ql/lib/semmle/go/Expr.qll | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/go/ql/lib/semmle/go/Expr.qll b/go/ql/lib/semmle/go/Expr.qll index 66d79f1d8f47..b1e1a1697843 100644 --- a/go/ql/lib/semmle/go/Expr.qll +++ b/go/ql/lib/semmle/go/Expr.qll @@ -754,13 +754,19 @@ class SliceExpr extends @sliceexpr, Expr { * * ```go * x.(T) + * x.(type) * ``` */ class TypeAssertExpr extends @typeassertexpr, Expr { /** Gets the base expression whose type is being asserted. */ Expr getExpr() { result = this.getChildExpr(0) } - /** Gets the expression representing the asserted type. */ + /** + * Gets the expression representing the asserted type. + * + * Note that this is not defined when the type assertion is of the form + * `x.(type)`, as found in type switches. + */ Expr getTypeExpr() { result = this.getChildExpr(1) } override predicate mayHaveOwnSideEffects() { any() } From fe24710c9671e7a16f27dc10eab24f5047365576 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 3 Apr 2024 14:09:37 +0100 Subject: [PATCH 654/731] Improve QLDoc of `Entity.getDeclaration` --- go/ql/lib/semmle/go/Scopes.qll | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/go/ql/lib/semmle/go/Scopes.qll b/go/ql/lib/semmle/go/Scopes.qll index 153ca8d6307f..740bb39cfeca 100644 --- a/go/ql/lib/semmle/go/Scopes.qll +++ b/go/ql/lib/semmle/go/Scopes.qll @@ -119,7 +119,13 @@ class Entity extends @object { */ Scope getScope() { objectscopes(this, result) } - /** Gets the declaring identifier for this entity. */ + /** + * Gets the declaring identifier for this entity, if any. + * + * Note that type switch statements which define a new variable in the guard + * actually have a new variable (of the right type) implicitly declared at + * the beginning of each case clause, and these do not have a declaration. + */ Ident getDeclaration() { result.declares(this) } /** Gets a reference to this entity. */ From 137594cf36f6c3c33ecc4f458d9968c59fdd2e51 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 3 Apr 2024 14:51:13 +0200 Subject: [PATCH 655/731] Ruby: Add regression test --- .../dataflow/regressions/Regressions.expected | 1 + .../dataflow/regressions/Regressions.ql | 39 +++++++++++++++++++ .../dataflow/regressions/regressions.rb | 3 ++ 3 files changed, 43 insertions(+) create mode 100644 ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected create mode 100644 ruby/ql/test/library-tests/dataflow/regressions/Regressions.ql create mode 100644 ruby/ql/test/library-tests/dataflow/regressions/regressions.rb diff --git a/ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected b/ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected new file mode 100644 index 000000000000..ef846359c3b4 --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected @@ -0,0 +1 @@ +| regressions.rb:2:1:2:9 | [post] call to reverse | regressions.rb:3:6:3:6 | x | diff --git a/ruby/ql/test/library-tests/dataflow/regressions/Regressions.ql b/ruby/ql/test/library-tests/dataflow/regressions/Regressions.ql new file mode 100644 index 000000000000..2d6c879aa396 --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/regressions/Regressions.ql @@ -0,0 +1,39 @@ +private import codeql.ruby.dataflow.FlowSummary + +private class ReverseSummary extends SimpleSummarizedCallable { + ReverseSummary() { this = "reverse" } + + override predicate propagatesFlow(string input, string output, boolean preservesValue) { + input = "Argument[self].WithElement[any]" and + output = "ReturnValue" and + preservesValue = true + } +} + +private module Config implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source + .(DataFlow::PostUpdateNode) + .getPreUpdateNode() + .asExpr() + .getExpr() + .(MethodCall) + .getMethodName() = "reverse" + } + + predicate isSink(DataFlow::Node sink) { + exists(MethodCall mc | + mc.getMethodName() = "sink" and + sink.asExpr().getExpr() = mc.getAnArgument() + ) + } +} + +/** + * This predicate should not have a result. We check that the flow summary for + * `reverse` does not get picked up by the `reverseStepThroughInputOutputAlias` + * logic in `DataFlowImplCommon.qll`. + */ +query predicate noReverseStepThroughInputOutputAlias(DataFlow::Node source, DataFlow::Node sink) { + DataFlow::Global<Config>::flow(source, sink) +} diff --git a/ruby/ql/test/library-tests/dataflow/regressions/regressions.rb b/ruby/ql/test/library-tests/dataflow/regressions/regressions.rb new file mode 100644 index 000000000000..f3e22585a8d3 --- /dev/null +++ b/ruby/ql/test/library-tests/dataflow/regressions/regressions.rb @@ -0,0 +1,3 @@ +x = foo +x.reverse.bar +sink(x) \ No newline at end of file From 7871fb8ce66474da9b5e85eb26bf87e7134e8c07 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 3 Apr 2024 14:54:36 +0200 Subject: [PATCH 656/731] Data flow: Block flow at `expectsContents` nodes in `parameterValueFlow` --- .../dataflow/regressions/Regressions.expected | 1 - .../dataflow/internal/DataFlowImplCommon.qll | 59 ++++++++++--------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected b/ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected index ef846359c3b4..e69de29bb2d1 100644 --- a/ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected +++ b/ruby/ql/test/library-tests/dataflow/regressions/Regressions.expected @@ -1 +0,0 @@ -| regressions.rb:2:1:2:9 | [post] call to reverse | regressions.rb:3:6:3:6 | x | diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index e83752fcced1..81091303ff4d 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -863,34 +863,37 @@ module MakeImplCommon<LocationSig Location, InputSig<Location> Lang> { */ pragma[nomagic] private predicate parameterValueFlowCand(ParamNode p, Node node, boolean read) { - p = node and - read = false - or - // local flow - exists(Node mid | - parameterValueFlowCand(p, mid, read) and - simpleLocalFlowStep(mid, node) and - validParameterAliasStep(mid, node) - ) - or - // read - exists(Node mid | - parameterValueFlowCand(p, mid, false) and - readSet(mid, _, node) and - read = true - ) - or - // flow through: no prior read - exists(ArgNode arg | - parameterValueFlowArgCand(p, arg, false) and - argumentValueFlowsThroughCand(arg, node, read) - ) - or - // flow through: no read inside method - exists(ArgNode arg | - parameterValueFlowArgCand(p, arg, read) and - argumentValueFlowsThroughCand(arg, node, false) - ) + ( + p = node and + read = false + or + // local flow + exists(Node mid | + parameterValueFlowCand(p, mid, read) and + simpleLocalFlowStep(mid, node) and + validParameterAliasStep(mid, node) + ) + or + // read + exists(Node mid | + parameterValueFlowCand(p, mid, false) and + readSet(mid, _, node) and + read = true + ) + or + // flow through: no prior read + exists(ArgNode arg | + parameterValueFlowArgCand(p, arg, false) and + argumentValueFlowsThroughCand(arg, node, read) + ) + or + // flow through: no read inside method + exists(ArgNode arg | + parameterValueFlowArgCand(p, arg, read) and + argumentValueFlowsThroughCand(arg, node, false) + ) + ) and + not expectsContentCached(node, _) } pragma[nomagic] From d93d6585d9adc7390c9306a8856c9db51936bc81 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 2 Apr 2024 22:12:13 +0200 Subject: [PATCH 657/731] C#: Mark more expressions as compiler generated --- .../Semmle.Extraction.CSharp/Entities/Expression.cs | 10 ++++++++-- .../Entities/Expressions/ArrayCreation.cs | 2 +- .../Entities/Expressions/Assignment.cs | 6 +++--- .../Entities/Expressions/Cast.cs | 2 +- .../Entities/Expressions/Collections/Spread.cs | 2 +- .../Entities/Expressions/Default.cs | 2 +- .../Entities/Expressions/Discard.cs | 2 +- .../Entities/Expressions/ElementAccess.cs | 2 +- .../Entities/Expressions/ImplicitCast.cs | 8 ++++---- .../Entities/Expressions/Initializer.cs | 4 ++-- .../Entities/Expressions/InterpolatedString.cs | 2 +- .../Entities/Expressions/Literal.cs | 4 ++-- .../ObjectCreation/AnonymousObjectCreation.cs | 6 +++--- .../ObjectCreation/DateTimeObjectCreation.cs | 2 +- .../Entities/Expressions/Patterns/BinaryPattern.cs | 2 +- .../Entities/Expressions/Patterns/ListPattern.cs | 2 +- .../Entities/Expressions/Patterns/PositionalPattern.cs | 2 +- .../Entities/Expressions/Patterns/PropertyPattern.cs | 4 ++-- .../Entities/Expressions/Patterns/RecursivePattern.cs | 2 +- .../Entities/Expressions/Patterns/RelationalPattern.cs | 2 +- .../Entities/Expressions/Patterns/SlicePattern.cs | 2 +- .../Entities/Expressions/Patterns/UnaryPattern.cs | 2 +- .../Entities/Expressions/Query.cs | 4 ++-- .../Entities/Expressions/Switch.cs | 2 +- .../Entities/Expressions/This.cs | 2 +- .../Entities/Expressions/TypeAccess.cs | 2 +- .../Entities/Expressions/TypeOf.cs | 2 +- .../Entities/Expressions/VariableDeclaration.cs | 10 +++++----- .../Semmle.Extraction.CSharp/Entities/Field.cs | 4 ++-- .../Semmle.Extraction.CSharp/Entities/Property.cs | 4 ++-- 30 files changed, 54 insertions(+), 48 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs index 58b01891addc..321cdf3ff83d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs @@ -100,8 +100,14 @@ public static string ValueAsString(object? value) /// <param name="child">The child index.</param> /// <param name="type">A type hint.</param> /// <returns>The new expression.</returns> - public static Expression Create(Context cx, ExpressionSyntax node, IExpressionParentEntity parent, int child) => - CreateFromNode(new ExpressionNodeInfo(cx, node, parent, child)); + public static Expression Create(Context cx, ExpressionSyntax node, IExpressionParentEntity parent, int child, Boolean isCompilerGenerated = false) + { + var info = new ExpressionNodeInfo(cx, node, parent, child) + { + IsCompilerGenerated = isCompilerGenerated + }; + return CreateFromNode(info); + } public static Expression CreateFromNode(ExpressionNodeInfo info) => Expressions.ImplicitCast.Create(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ArrayCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ArrayCreation.cs index 5c8aa8a35d39..302bcaded39a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ArrayCreation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ArrayCreation.cs @@ -97,7 +97,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.ARRAY_CREATION, parent, childIndex, - true, + isCompilerGenerated: true, null); var arrayCreation = new Expression(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs index 2494003471b7..4de5e460e6d9 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs @@ -26,10 +26,10 @@ protected override void PopulateExpression(TextWriter trapFile) if (operatorKind.HasValue) { // Convert assignment such as `a += b` into `a = a + b`. - var simpleAssignExpr = new Expression(new ExpressionInfo(Context, Type, Location, ExprKind.SIMPLE_ASSIGN, this, 2, false, null)); + var simpleAssignExpr = new Expression(new ExpressionInfo(Context, Type, Location, ExprKind.SIMPLE_ASSIGN, this, 2, isCompilerGenerated: true, null)); Create(Context, Syntax.Left, simpleAssignExpr, 1); - var opexpr = new Expression(new ExpressionInfo(Context, Type, Location, operatorKind.Value, simpleAssignExpr, 0, false, null)); - Create(Context, Syntax.Left, opexpr, 0); + var opexpr = new Expression(new ExpressionInfo(Context, Type, Location, operatorKind.Value, simpleAssignExpr, 0, isCompilerGenerated: true, null)); + Create(Context, Syntax.Left, opexpr, 0, isCompilerGenerated: true); Create(Context, Syntax.Right, opexpr, 1); opexpr.OperatorCall(trapFile, Syntax); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs index fee739af532a..62e23e3b66dc 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs @@ -41,7 +41,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.CAST, parent, childIndex, - true, + isCompilerGenerated: true, ValueAsString(value)); var ret = new Expression(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Collections/Spread.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Collections/Spread.cs index c9fa8d3512a6..a27982f7aad4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Collections/Spread.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Collections/Spread.cs @@ -6,7 +6,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class Spread : Expression { public Spread(Context cx, SpreadElementSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.SPREAD_ELEMENT, parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.SPREAD_ELEMENT, parent, child, isCompilerGenerated: false, null)) { Create(cx, syntax.Expression, this, 0); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Default.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Default.cs index fc3b03aaf981..968f2e8f43b7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Default.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Default.cs @@ -24,7 +24,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.DEFAULT, parent, childIndex, - true, + isCompilerGenerated: true, value); return new Expression(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Discard.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Discard.cs index fc53cda191b9..33d9eb64b043 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Discard.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Discard.cs @@ -11,7 +11,7 @@ public Discard(ExpressionNodeInfo info) : base(info.SetKind(ExprKind.DISCARD)) } private Discard(Context cx, CSharpSyntaxNode syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, cx.GetType(syntax), cx.CreateLocation(syntax.GetLocation()), ExprKind.DISCARD, parent, child, false, null)) + base(new ExpressionInfo(cx, cx.GetType(syntax), cx.CreateLocation(syntax.GetLocation()), ExprKind.DISCARD, parent, child, isCompilerGenerated: false, null)) { } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ElementAccess.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ElementAccess.cs index 8129743e04ad..34ad6bf2533a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ElementAccess.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ElementAccess.cs @@ -22,7 +22,7 @@ protected override void PopulateExpression(TextWriter trapFile) if (Kind == ExprKind.POINTER_INDIRECTION) { var qualifierInfo = new ExpressionNodeInfo(Context, qualifier, this, 0); - var add = new Expression(new ExpressionInfo(Context, qualifierInfo.Type, Location, ExprKind.ADD, this, 0, false, null)); + var add = new Expression(new ExpressionInfo(Context, qualifierInfo.Type, Location, ExprKind.ADD, this, 0, isCompilerGenerated: false, null)); qualifierInfo.SetParent(add, 0); CreateFromNode(qualifierInfo); PopulateArguments(trapFile, argumentList, 1); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs index 57a37d863605..3e886a9c3ac9 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ImplicitCast.cs @@ -14,13 +14,13 @@ public Expression Expr } private ImplicitCast(ExpressionNodeInfo info) - : base(new ExpressionInfo(info.Context, info.ConvertedType, info.Location, ExprKind.CAST, info.Parent, info.Child, true, info.ExprValue)) + : base(new ExpressionInfo(info.Context, info.ConvertedType, info.Location, ExprKind.CAST, info.Parent, info.Child, isCompilerGenerated: true, info.ExprValue)) { Expr = Factory.Create(new ExpressionNodeInfo(Context, info.Node, this, 0)); } private ImplicitCast(ExpressionNodeInfo info, IMethodSymbol method) - : base(new ExpressionInfo(info.Context, info.ConvertedType, info.Location, ExprKind.OPERATOR_INVOCATION, info.Parent, info.Child, true, info.ExprValue)) + : base(new ExpressionInfo(info.Context, info.ConvertedType, info.Location, ExprKind.OPERATOR_INVOCATION, info.Parent, info.Child, isCompilerGenerated: true, info.ExprValue)) { Expr = Factory.Create(info.SetParent(this, 0)); @@ -65,7 +65,7 @@ ExpressionInfo create(ExprKind kind, string? v) => kind, parent, childIndex, - true, + isCompilerGenerated: true, v); var method = GetImplicitConversionMethod(type, value); @@ -93,7 +93,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.CAST, parent, childIndex, - true, + isCompilerGenerated: true, ValueAsString(value)); return new Expression(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs index d8289e59a281..cdc2e87798ec 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Initializer.cs @@ -45,7 +45,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.ARRAY_INIT, parent, index, - true, + isCompilerGenerated: true, null); return new Expression(info); @@ -132,7 +132,7 @@ protected override void PopulateExpression(TextWriter trapFile) var addMethod = Method.Create(Context, collectionInfo.Symbol as IMethodSymbol); var voidType = AnnotatedTypeSymbol.CreateNotAnnotated(Context.Compilation.GetSpecialType(SpecialType.System_Void)); - var invocation = new Expression(new ExpressionInfo(Context, voidType, Context.CreateLocation(i.GetLocation()), ExprKind.METHOD_INVOCATION, this, child++, false, null)); + var invocation = new Expression(new ExpressionInfo(Context, voidType, Context.CreateLocation(i.GetLocation()), ExprKind.METHOD_INVOCATION, this, child++, isCompilerGenerated: true, null)); if (addMethod is not null) trapFile.expr_call(invocation, addMethod); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/InterpolatedString.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/InterpolatedString.cs index 1a98f9673120..2dfe4976391d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/InterpolatedString.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/InterpolatedString.cs @@ -25,7 +25,7 @@ protected override void PopulateExpression(TextWriter trapFile) case SyntaxKind.InterpolatedStringText: // Create a string literal var interpolatedText = (InterpolatedStringTextSyntax)c; - new Expression(new ExpressionInfo(Context, Type, Context.CreateLocation(c.GetLocation()), ExprKind.UTF16_STRING_LITERAL, this, child++, false, interpolatedText.TextToken.ValueText)); + new Expression(new ExpressionInfo(Context, Type, Context.CreateLocation(c.GetLocation()), ExprKind.UTF16_STRING_LITERAL, this, child++, isCompilerGenerated: false, interpolatedText.TextToken.ValueText)); break; default: throw new InternalError(c, $"Unhandled interpolation kind {c.Kind()}"); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Literal.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Literal.cs index 3a0158ba1aea..72d54abf6c1a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Literal.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Literal.cs @@ -97,7 +97,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par kind, parent, childIndex, - true, + isCompilerGenerated: true, ValueAsString(value)); return new Expression(info); @@ -112,7 +112,7 @@ public static Expression CreateGeneratedNullLiteral(Context cx, IExpressionParen ExprKind.NULL_LITERAL, parent, childIndex, - true, + isCompilerGenerated: true, ValueAsString(null)); return new Expression(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs index f1974f1a50b7..a6f94f533387 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/AnonymousObjectCreation.cs @@ -30,7 +30,7 @@ protected override void PopulateExpression(TextWriter trapFile) return; } - var objectInitializer = new Expression(new ExpressionInfo(Context, Type, Location, ExprKind.OBJECT_INIT, this, -1, false, null)); + var objectInitializer = new Expression(new ExpressionInfo(Context, Type, Location, ExprKind.OBJECT_INIT, this, -1, isCompilerGenerated: false, null)); foreach (var init in Syntax.Initializers) { @@ -40,11 +40,11 @@ protected override void PopulateExpression(TextWriter trapFile) var type = property.GetAnnotatedType(); var loc = Context.CreateLocation(init.GetLocation()); - var assignment = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.SIMPLE_ASSIGN, objectInitializer, child++, false, null)); + var assignment = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.SIMPLE_ASSIGN, objectInitializer, child++, isCompilerGenerated: false, null)); Create(Context, init.Expression, assignment, 0); Property.Create(Context, property); - var access = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.PROPERTY_ACCESS, assignment, 1, false, null)); + var access = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.PROPERTY_ACCESS, assignment, 1, isCompilerGenerated: false, null)); trapFile.expr_access(access, propEntity); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/DateTimeObjectCreation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/DateTimeObjectCreation.cs index e9f40b1bc674..012a30d81cc4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/DateTimeObjectCreation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/ObjectCreation/DateTimeObjectCreation.cs @@ -59,7 +59,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.OBJECT_CREATION, parent, childIndex, - true, + isCompilerGenerated: true, null)); var longTypeSymbol = constructorSymbol.Parameters[0].Type; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs index ec5177c8ce6a..3eaf9cc55c3d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/BinaryPattern.cs @@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class BinaryPattern : Expression { public BinaryPattern(Context cx, BinaryPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken, syntax), parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken, syntax), parent, child, isCompilerGenerated: false, null)) { Pattern.Create(cx, syntax.Left, this, 0); Pattern.Create(cx, syntax.Right, this, 1); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs index 87aeb84bcb48..492e2bcb1ce0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/ListPattern.cs @@ -7,7 +7,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class ListPattern : Expression { internal ListPattern(Context cx, ListPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.LIST_PATTERN, parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.LIST_PATTERN, parent, child, isCompilerGenerated: false, null)) { syntax.Patterns.ForEach((p, i) => Pattern.Create(cx, p, this, i)); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PositionalPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PositionalPattern.cs index aaf2737c1146..e6a34fd70303 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PositionalPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PositionalPattern.cs @@ -7,7 +7,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class PositionalPattern : Expression { internal PositionalPattern(Context cx, PositionalPatternClauseSyntax posPc, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(posPc.GetLocation()), ExprKind.POSITIONAL_PATTERN, parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(posPc.GetLocation()), ExprKind.POSITIONAL_PATTERN, parent, child, isCompilerGenerated: false, null)) { posPc.Subpatterns.ForEach((p, i) => Pattern.Create(cx, p.Pattern, this, i)); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PropertyPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PropertyPattern.cs index 30a020702e52..a195d9ffb832 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PropertyPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/PropertyPattern.cs @@ -7,7 +7,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class PropertyPattern : Expression { internal PropertyPattern(Context cx, PropertyPatternClauseSyntax pp, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(pp.GetLocation()), ExprKind.PROPERTY_PATTERN, parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(pp.GetLocation()), ExprKind.PROPERTY_PATTERN, parent, child, isCompilerGenerated: false, null)) { child = 0; foreach (var sub in pp.Subpatterns) @@ -56,7 +56,7 @@ private static AccessStepPack GetAccessStepPack(BaseExpressionColonSyntax syntax }; private static Expression CreateSyntheticExp(Context cx, Microsoft.CodeAnalysis.Location location, IExpressionParentEntity parent, int child) => - new Expression(new ExpressionInfo(cx, null, cx.CreateLocation(location), ExprKind.PROPERTY_PATTERN, parent, child, false, null)); + new Expression(new ExpressionInfo(cx, null, cx.CreateLocation(location), ExprKind.PROPERTY_PATTERN, parent, child, isCompilerGenerated: false, null)); private static void MakeExpressions(Context cx, IExpressionParentEntity parent, SubpatternSyntax syntax, int child) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs index 010e48070ad4..514867770b6e 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RecursivePattern.cs @@ -15,7 +15,7 @@ internal class RecursivePattern : Expression /// <param name="parent">The parent pattern/expression.</param> /// <param name="child">The child index of this pattern.</param> public RecursivePattern(Context cx, RecursivePatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.RECURSIVE_PATTERN, parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.RECURSIVE_PATTERN, parent, child, isCompilerGenerated: false, null)) { // Extract the type access if (syntax.Type is TypeSyntax t) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs index 2af3ceef60ad..4f6c2eac11ff 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/RelationalPattern.cs @@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class RelationalPattern : Expression { public RelationalPattern(Context cx, RelationalPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken), parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken), parent, child, isCompilerGenerated: false, null)) { Expression.Create(cx, syntax.Expression, this, 0); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs index d52af4f54f4a..69d7cc878beb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/SlicePattern.cs @@ -6,7 +6,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class SlicePattern : Expression { public SlicePattern(Context cx, SlicePatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.SLICE_PATTERN, parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.SLICE_PATTERN, parent, child, isCompilerGenerated: false, null)) { if (syntax.Pattern is not null) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs index 1703211fb3d9..64663c7a6e14 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Patterns/UnaryPattern.cs @@ -6,7 +6,7 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions internal class UnaryPattern : Expression { public UnaryPattern(Context cx, UnaryPatternSyntax syntax, IExpressionParentEntity parent, int child) : - base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.NOT_PATTERN, parent, child, false, null)) + base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), ExprKind.NOT_PATTERN, parent, child, isCompilerGenerated: false, null)) { Pattern.Create(cx, syntax.Pattern, this, 0); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs index 02936916bf4d..85a1ceda47ca 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Query.cs @@ -23,7 +23,7 @@ private class QueryCall : Expression public QueryCall(Context cx, IMethodSymbol? method, SyntaxNode clause, IExpressionParentEntity parent, int child) : base(new ExpressionInfo(cx, method?.GetAnnotatedReturnType(), cx.CreateLocation(clause.GetLocation()), - ExprKind.METHOD_INVOCATION, parent, child, false, null)) + ExprKind.METHOD_INVOCATION, parent, child, isCompilerGenerated: false, null)) { if (method is not null) cx.TrapWriter.Writer.expr_call(this, Method.Create(cx, method)); @@ -97,7 +97,7 @@ protected Expression DeclareRangeVariable(Context cx, IExpressionParentEntity pa Expression.Create(cx, Expr, decl, 0); var nameLoc = cx.CreateLocation(name.GetLocation()); - var access = new Expression(new ExpressionInfo(cx, type, nameLoc, ExprKind.LOCAL_VARIABLE_ACCESS, decl, 1, false, null)); + var access = new Expression(new ExpressionInfo(cx, type, nameLoc, ExprKind.LOCAL_VARIABLE_ACCESS, decl, 1, isCompilerGenerated: false, null)); cx.TrapWriter.Writer.expr_access(access, LocalVariable.Create(cx, variableSymbol)); return decl; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Switch.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Switch.cs index 2e161f508aa4..26b71a6deb4a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Switch.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Switch.cs @@ -27,7 +27,7 @@ internal class SwitchCase : Expression internal SwitchCase(Context cx, SwitchExpressionArmSyntax arm, Switch parent, int child) : base(new ExpressionInfo( cx, cx.GetType(arm.Expression), cx.CreateLocation(arm.GetLocation()), - ExprKind.SWITCH_CASE, parent, child, false, null)) + ExprKind.SWITCH_CASE, parent, child, isCompilerGenerated: false, null)) { Expressions.Pattern.Create(cx, arm.Pattern, this, 0); if (arm.WhenClause is WhenClauseSyntax when) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/This.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/This.cs index a13c2cb95bc4..33f2ad9fbc78 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/This.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/This.cs @@ -8,7 +8,7 @@ internal class This : Expression private This(IExpressionInfo info) : base(info) { } public static This CreateImplicit(Context cx, ITypeSymbol @class, Extraction.Entities.Location loc, IExpressionParentEntity parent, int child) => - new This(new ExpressionInfo(cx, AnnotatedTypeSymbol.CreateNotAnnotated(@class), loc, Kinds.ExprKind.THIS_ACCESS, parent, child, true, null)); + new This(new ExpressionInfo(cx, AnnotatedTypeSymbol.CreateNotAnnotated(@class), loc, Kinds.ExprKind.THIS_ACCESS, parent, child, isCompilerGenerated: true, null)); public static This CreateExplicit(ExpressionNodeInfo info) => new This(info.SetKind(ExprKind.THIS_ACCESS)); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeAccess.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeAccess.cs index b6eaca72844f..b4e678d8ab6b 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeAccess.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeAccess.cs @@ -44,7 +44,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.TYPE_ACCESS, parent, childIndex, - true, + isCompilerGenerated: true, null); return new Expression(typeAccessInfo); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeOf.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeOf.cs index c499e405ccb4..b36c1e425a03 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeOf.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/TypeOf.cs @@ -26,7 +26,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par ExprKind.TYPEOF, parent, childIndex, - true, + isCompilerGenerated: true, null); var ret = new Expression(info); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs index e77040fd16c3..5931feb070c0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/VariableDeclaration.cs @@ -15,7 +15,7 @@ private VariableDeclaration(IExpressionInfo info) : base(info) { } public static VariableDeclaration Create(Context cx, ISymbol symbol, AnnotatedTypeSymbol? type, TypeSyntax? optionalSyntax, Extraction.Entities.Location exprLocation, bool isVar, IExpressionParentEntity parent, int child) { - var ret = new VariableDeclaration(new ExpressionInfo(cx, type, exprLocation, ExprKind.LOCAL_VAR_DECL, parent, child, false, null)); + var ret = new VariableDeclaration(new ExpressionInfo(cx, type, exprLocation, ExprKind.LOCAL_VAR_DECL, parent, child, isCompilerGenerated: false, null)); cx.Try(null, null, () => { var l = LocalVariable.Create(cx, symbol); @@ -52,7 +52,7 @@ private static VariableDeclaration CreateSingle(Context cx, DeclarationExpressio public static Expression CreateParenthesized(Context cx, DeclarationExpressionSyntax node, ParenthesizedVariableDesignationSyntax designation, IExpressionParentEntity parent, int child, INamedTypeSymbol? t) { var type = t is null ? (AnnotatedTypeSymbol?)null : new AnnotatedTypeSymbol(t, t.NullableAnnotation); - var tuple = new Expression(new ExpressionInfo(cx, type, cx.CreateLocation(node.GetLocation()), ExprKind.TUPLE, parent, child, false, null)); + var tuple = new Expression(new ExpressionInfo(cx, type, cx.CreateLocation(node.GetLocation()), ExprKind.TUPLE, parent, child, isCompilerGenerated: false, null)); cx.Try(null, null, () => { @@ -68,7 +68,7 @@ public static Expression CreateParenthesized(Context cx, DeclarationExpressionSy public static Expression CreateParenthesized(Context cx, VarPatternSyntax varPattern, ParenthesizedVariableDesignationSyntax designation, IExpressionParentEntity parent, int child) { var tuple = new Expression( - new ExpressionInfo(cx, null, cx.CreateLocation(varPattern.GetLocation()), ExprKind.TUPLE, parent, child, false, null), + new ExpressionInfo(cx, null, cx.CreateLocation(varPattern.GetLocation()), ExprKind.TUPLE, parent, child, isCompilerGenerated: false, null), shouldPopulate: false); var elementTypes = new List<ITypeSymbol?>(); @@ -148,7 +148,7 @@ public static Expression Create(Context cx, DeclarationExpressionSyntax node, IE Create(cx, node, node.Designation, parent, child, cx.GetTypeInfo(node).Type.DisambiguateType() as INamedTypeSymbol); public static VariableDeclaration Create(Context cx, CSharpSyntaxNode c, AnnotatedTypeSymbol? type, IExpressionParentEntity parent, int child) => - new VariableDeclaration(new ExpressionInfo(cx, type, cx.CreateLocation(c.FixedLocation()), ExprKind.LOCAL_VAR_DECL, parent, child, false, null)); + new VariableDeclaration(new ExpressionInfo(cx, type, cx.CreateLocation(c.FixedLocation()), ExprKind.LOCAL_VAR_DECL, parent, child, isCompilerGenerated: false, null)); public static VariableDeclaration Create(Context cx, CatchDeclarationSyntax d, bool isVar, IExpressionParentEntity parent, int child) { @@ -179,7 +179,7 @@ public static VariableDeclaration CreateDeclarator(Context cx, VariableDeclarato Create(cx, d.Initializer.Value, ret, 0); // Create an access - var access = new Expression(new ExpressionInfo(cx, type, localVar.Location, ExprKind.LOCAL_VARIABLE_ACCESS, ret, 1, false, null)); + var access = new Expression(new ExpressionInfo(cx, type, localVar.Location, ExprKind.LOCAL_VARIABLE_ACCESS, ret, 1, isCompilerGenerated: false, null)); cx.TrapWriter.Writer.expr_access(access, localVar); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs index a65b30af5aaf..f423f42dd5cd 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs @@ -110,9 +110,9 @@ private Expression AddInitializerAssignment(TextWriter trapFile, ExpressionSynta string? constValue, ref int child) { var type = Symbol.GetAnnotatedType(); - var simpleAssignExpr = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.SIMPLE_ASSIGN, this, child++, false, constValue)); + var simpleAssignExpr = new Expression(new ExpressionInfo(Context, type, loc, ExprKind.SIMPLE_ASSIGN, this, child++, isCompilerGenerated: true, constValue)); Expression.CreateFromNode(new ExpressionNodeInfo(Context, initializer, simpleAssignExpr, 0)); - var access = new Expression(new ExpressionInfo(Context, type, Location, ExprKind.FIELD_ACCESS, simpleAssignExpr, 1, false, constValue)); + var access = new Expression(new ExpressionInfo(Context, type, Location, ExprKind.FIELD_ACCESS, simpleAssignExpr, 1, isCompilerGenerated: true, constValue)); trapFile.expr_access(access, this); return access; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs index 08fa43354522..07e74e821641 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Property.cs @@ -86,9 +86,9 @@ public override void Populate(TextWriter trapFile) { var loc = Context.CreateLocation(initializer!.GetLocation()); var annotatedType = AnnotatedTypeSymbol.CreateNotAnnotated(Symbol.Type); - var simpleAssignExpr = new Expression(new ExpressionInfo(Context, annotatedType, loc, ExprKind.SIMPLE_ASSIGN, this, child++, false, null)); + var simpleAssignExpr = new Expression(new ExpressionInfo(Context, annotatedType, loc, ExprKind.SIMPLE_ASSIGN, this, child++, isCompilerGenerated: true, null)); Expression.CreateFromNode(new ExpressionNodeInfo(Context, initializer.Value, simpleAssignExpr, 0)); - var access = new Expression(new ExpressionInfo(Context, annotatedType, Location, ExprKind.PROPERTY_ACCESS, simpleAssignExpr, 1, false, null)); + var access = new Expression(new ExpressionInfo(Context, annotatedType, Location, ExprKind.PROPERTY_ACCESS, simpleAssignExpr, 1, isCompilerGenerated: true, null)); trapFile.expr_access(access, this); if (!Symbol.IsStatic) { From 813f5b99e76864db65036e11073fd363c6f3c05e Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Wed, 3 Apr 2024 10:13:24 +0200 Subject: [PATCH 658/731] C#: Update PrintAST query --- csharp/ql/lib/semmle/code/csharp/PrintAst.qll | 26 +--- csharp/ql/lib/semmle/code/csharp/Variable.qll | 4 +- .../ql/lib/semmle/code/csharp/exprs/Expr.qll | 6 +- .../attributes/PrintAst.expected | 4 +- .../library-tests/comments/PrintAst.expected | 8 +- .../library-tests/csharp11/PrintAst.expected | 8 +- .../library-tests/csharp6/PrintAst.expected | 4 +- .../library-tests/csharp7.2/PrintAst.expected | 8 +- .../library-tests/csharp7/PrintAst.expected | 16 +-- .../library-tests/csharp8/PrintAst.expected | 16 +-- .../library-tests/csharp9/PrintAst.expected | 12 +- .../definitions/PrintAst.expected | 22 ++-- .../library-tests/enums/PrintAst.expected | 34 ++--- .../library-tests/events/PrintAst.expected | 12 +- .../expressions/PrintAst.expected | 50 +++---- .../library-tests/fields/PrintAst.expected | 122 +++++++----------- .../library-tests/generics/PrintAst.expected | 20 +-- .../library-tests/indexers/PrintAst.expected | 20 +-- 18 files changed, 135 insertions(+), 257 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll index eb5ca6b47273..281e157975ab 100644 --- a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll +++ b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll @@ -32,7 +32,10 @@ private predicate shouldPrint(Element e, Location l) { } private predicate isImplicitExpression(ControlFlowElement element) { - element.(Expr).isImplicit() and not exists(element.getAChild()) + element.(Expr).isImplicit() and + not element instanceof CastExpr and + not element.(OperatorCall).getTarget() instanceof ImplicitConversionOperator and + not element instanceof ElementInitializer } private predicate isFilteredCompilerGenerated(Declaration d) { @@ -291,18 +294,6 @@ class ControlFlowElementNode extends ElementNode { controlFlowElement = element and // Removing implicit expressions not isImplicitExpression(element) and - // Removing extra nodes that are generated for an `AssignOperation` - not exists(AssignOperation ao | - ao.hasExpandedAssignment() and - ( - ao.getExpandedAssignment() = controlFlowElement or - ao.getExpandedAssignment().getRValue() = controlFlowElement or - ao.getExpandedAssignment().getRValue().(BinaryOperation).getLeftOperand() = - controlFlowElement.getParent*() or - ao.getExpandedAssignment().getRValue().(OperatorCall).getChild(0) = - controlFlowElement.getParent*() - ) - ) and not isNotNeeded(element.getParent+()) and // LambdaExpr is both a Callable and a ControlFlowElement, // print it with the more specific CallableNode @@ -429,7 +420,7 @@ final class DeclarationWithAccessorsNode extends ElementNode { result.(ParametersNode).getParameterizable() = declaration or childIndex = 2 and - result.(ElementNode).getElement() = declaration.(Property).getInitializer().getParent() + result.(ElementNode).getElement() = declaration.(Property).getInitializer() or result.(ElementNode).getElement() = rank[childIndex - 2](Element a, string file, int line, int column, string name | @@ -462,12 +453,7 @@ final class FieldNode extends ElementNode { result.(AttributesNode).getAttributable() = field or childIndex = 1 and - field.hasInitializer() and - ( - if field.getDeclaringType() instanceof Enum - then result.(ElementNode).getElement() = field.getInitializer() - else result.(ElementNode).getElement() = field.getInitializer().getParent() - ) + result.(ElementNode).getElement() = field.getInitializer() } } diff --git a/csharp/ql/lib/semmle/code/csharp/Variable.qll b/csharp/ql/lib/semmle/code/csharp/Variable.qll index 4bef47056ef5..982b4e4743b6 100644 --- a/csharp/ql/lib/semmle/code/csharp/Variable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Variable.qll @@ -408,7 +408,7 @@ class Field extends Variable, AssignableMember, Attributable, TopLevelExprParent * } * ``` */ - override Expr getInitializer() { result = this.getChildExpr(0).getChildExpr(0) } + final override Expr getInitializer() { result = this.getChildExpr(0).getChildExpr(0) } /** * Holds if this field has an initial value. For example, the initial @@ -515,6 +515,4 @@ class EnumConstant extends MemberConstant { * ``` */ predicate hasExplicitValue() { exists(this.getInitializer()) } - - override Expr getInitializer() { result = this.getChildExpr(0) } } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll index 0cd3f36467c0..935162523a16 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll @@ -67,7 +67,11 @@ class Expr extends ControlFlowElement, @expr { * Holds if this expression is generated by the compiler and does not appear * explicitly in the source code. */ - predicate isImplicit() { compiler_generated(this) } + final predicate isImplicit() { + compiler_generated(this) or + this = + any(AssignOperation op).getExpandedAssignment().getRValue().getChildExpr(0).getAChildExpr+() + } /** * Gets an expression that is the result of stripping (recursively) all diff --git a/csharp/ql/test/library-tests/attributes/PrintAst.expected b/csharp/ql/test/library-tests/attributes/PrintAst.expected index 62106d43664e..209aba20ff13 100644 --- a/csharp/ql/test/library-tests/attributes/PrintAst.expected +++ b/csharp/ql/test/library-tests/attributes/PrintAst.expected @@ -163,9 +163,7 @@ attributes.cs: # 67| 4: [BlockStmt] {...} # 70| [Enum] E # 70| 5: [Field] A -# 70| 1: [AssignExpr] ... = ... -# 70| 0: [MemberConstantAccess] access to constant A -# 70| 1: [IntLiteral] 42 +# 70| 1: [IntLiteral] 42 # 72| [Class] ArgsAttribute #-----| 3: (Base types) # 72| 0: [TypeMention] Attribute diff --git a/csharp/ql/test/library-tests/comments/PrintAst.expected b/csharp/ql/test/library-tests/comments/PrintAst.expected index cbbfbc58c8d2..68c2c582e371 100644 --- a/csharp/ql/test/library-tests/comments/PrintAst.expected +++ b/csharp/ql/test/library-tests/comments/PrintAst.expected @@ -186,14 +186,10 @@ trivia.cs: # 89| 4: [BlockStmt] {...} # 92| 7: [Field] F1 # 92| -1: [TypeMention] int -# 92| 1: [AssignExpr] ... = ... -# 92| 0: [FieldAccess] access to field F1 -# 94| 1: [IntLiteral] 10 +# 94| 1: [IntLiteral] 10 # 98| 8: [Field] F2 # 98| -1: [TypeMention] int -# 98| 1: [AssignExpr] ... = ... -# 98| 0: [FieldAccess] access to field F2 -# 98| 1: [IntLiteral] 0 +# 98| 1: [IntLiteral] 0 # 100| 9: [Property] P1 # 100| -1: [TypeMention] int # 102| 3: [Getter] get_P1 diff --git a/csharp/ql/test/library-tests/csharp11/PrintAst.expected b/csharp/ql/test/library-tests/csharp11/PrintAst.expected index 4716334aca04..dc1927360e1b 100644 --- a/csharp/ql/test/library-tests/csharp11/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp11/PrintAst.expected @@ -1111,18 +1111,14 @@ StaticInterfaceMembers.cs: #-----| 3: (Base types) # 28| 4: [Property] Real # 28| -1: [TypeMention] double -# 28| 2: [AssignExpr] ... = ... -# 28| 0: [PropertyCall] access to property Real -# 28| 1: [DoubleLiteral] 0 +# 28| 2: [DoubleLiteral] 0 # 28| 3: [Getter] get_Real # 28| 4: [Setter] set_Real #-----| 2: (Parameters) # 28| 0: [Parameter] value # 29| 5: [Property] Imaginary # 29| -1: [TypeMention] double -# 29| 2: [AssignExpr] ... = ... -# 29| 0: [PropertyCall] access to property Imaginary -# 29| 1: [DoubleLiteral] 0 +# 29| 2: [DoubleLiteral] 0 # 29| 3: [Getter] get_Imaginary # 29| 4: [Setter] set_Imaginary #-----| 2: (Parameters) diff --git a/csharp/ql/test/library-tests/csharp6/PrintAst.expected b/csharp/ql/test/library-tests/csharp6/PrintAst.expected index 5fe46bf5afac..892ad6dd4b15 100644 --- a/csharp/ql/test/library-tests/csharp6/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp6/PrintAst.expected @@ -2,9 +2,7 @@ csharp6.cs: # 10| [Class] TestCSharp6 # 12| 6: [Property] Value # 12| -1: [TypeMention] int -# 15| 2: [AssignExpr] ... = ... -# 12| 0: [PropertyCall] access to property Value -# 15| 1: [IntLiteral] 20 +# 15| 2: [IntLiteral] 20 # 14| 3: [Getter] get_Value # 17| 7: [Method] Fn # 17| -1: [TypeMention] Void diff --git a/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected b/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected index 39b7c407b74c..31036ced693c 100644 --- a/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp7.2/PrintAst.expected @@ -35,15 +35,11 @@ csharp72.cs: # 44| [Class] NumericLiterals # 46| 5: [Field] binaryValue # 46| -1: [TypeMention] int -# 46| 1: [AssignExpr] ... = ... -# 46| 0: [FieldAccess] access to field binaryValue -# 46| 1: [IntLiteral] 85 +# 46| 1: [IntLiteral] 85 # 49| [Class] PrivateProtected # 51| 5: [Field] X # 51| -1: [TypeMention] int -# 51| 1: [AssignExpr] ... = ... -# 51| 0: [FieldAccess] access to field X -# 51| 1: [IntLiteral] 1 +# 51| 1: [IntLiteral] 1 # 53| 6: [Method] F # 53| -1: [TypeMention] Void # 53| 4: [BlockStmt] {...} diff --git a/csharp/ql/test/library-tests/csharp7/PrintAst.expected b/csharp/ql/test/library-tests/csharp7/PrintAst.expected index 7f8e1d1659ab..e5d009e0df63 100644 --- a/csharp/ql/test/library-tests/csharp7/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp7/PrintAst.expected @@ -2,25 +2,17 @@ CSharp7.cs: # 5| [Class] Literals # 7| 5: [Field] x # 7| -1: [TypeMention] int -# 7| 1: [AssignExpr] ... = ... -# 7| 0: [FieldAccess] access to field x -# 7| 1: [IntLiteral] 11 +# 7| 1: [IntLiteral] 11 # 8| 6: [Field] y # 8| -1: [TypeMention] int -# 8| 1: [AssignExpr] ... = ... -# 8| 0: [FieldAccess] access to field y -# 8| 1: [IntLiteral] 123456 +# 8| 1: [IntLiteral] 123456 # 9| 7: [Field] z # 9| -1: [TypeMention] int -# 9| 1: [AssignExpr] ... = ... -# 9| 0: [FieldAccess] access to field z -# 9| 1: [IntLiteral] 128 +# 9| 1: [IntLiteral] 128 # 12| [Class] ExpressionBodiedMembers # 14| 4: [Field] field # 14| -1: [TypeMention] int -# 14| 1: [AssignExpr] ... = ... -# 14| 0: [FieldAccess] access to field field -# 14| 1: [IntLiteral] 0 +# 14| 1: [IntLiteral] 0 # 15| 5: [Method] Foo # 15| -1: [TypeMention] int # 15| 4: [FieldAccess] access to field field diff --git a/csharp/ql/test/library-tests/csharp8/PrintAst.expected b/csharp/ql/test/library-tests/csharp8/PrintAst.expected index 10dceb400ed5..c33374e4761d 100644 --- a/csharp/ql/test/library-tests/csharp8/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp8/PrintAst.expected @@ -2,18 +2,14 @@ AlternateInterpolatedStrings.cs: # 3| [Class] AlternateInterpolatedStrings # 5| 5: [Field] s1 # 5| -1: [TypeMention] string -# 5| 1: [AssignExpr] ... = ... -# 5| 0: [FieldAccess] access to field s1 -# 5| 1: [InterpolatedStringExpr] $"..." -# 5| 0: [StringLiteralUtf16] "C:" -# 5| 1: [IntLiteral] 12 +# 5| 1: [InterpolatedStringExpr] $"..." +# 5| 0: [StringLiteralUtf16] "C:" +# 5| 1: [IntLiteral] 12 # 6| 6: [Field] s2 # 6| -1: [TypeMention] string -# 6| 1: [AssignExpr] ... = ... -# 6| 0: [FieldAccess] access to field s2 -# 6| 1: [InterpolatedStringExpr] $"..." -# 6| 0: [StringLiteralUtf16] "C:" -# 6| 1: [IntLiteral] 12 +# 6| 1: [InterpolatedStringExpr] $"..." +# 6| 0: [StringLiteralUtf16] "C:" +# 6| 1: [IntLiteral] 12 AsyncStreams.cs: # 6| [Class] AsyncStreams # 8| 5: [Method] Items diff --git a/csharp/ql/test/library-tests/csharp9/PrintAst.expected b/csharp/ql/test/library-tests/csharp9/PrintAst.expected index eacbfd8fd45a..a1ecbd0a2123 100644 --- a/csharp/ql/test/library-tests/csharp9/PrintAst.expected +++ b/csharp/ql/test/library-tests/csharp9/PrintAst.expected @@ -3,10 +3,8 @@ AnonymousObjectCreation.cs: # 7| 5: [Field] l # 7| -1: [TypeMention] List<AnonObj> # 7| 1: [TypeMention] AnonObj -# 7| 1: [AssignExpr] ... = ... -# 7| 0: [FieldAccess] access to field l -# 7| 1: [CastExpr] (...) ... -# 7| 1: [ObjectCreation] object creation of type List<AnonObj> +# 7| 1: [CastExpr] (...) ... +# 7| 1: [ObjectCreation] object creation of type List<AnonObj> # 9| 6: [Property] Prop1 # 9| -1: [TypeMention] int # 9| 3: [Getter] get_Prop1 @@ -294,10 +292,8 @@ FunctionPointer.cs: # 5| 5: [Class] Program # 7| 5: [Field] pointer # 7| -1: [TypeMention] delegate* default<Int32> -# 7| 1: [AssignExpr] ... = ... -# 7| 0: [FieldAccess] access to field pointer -# 7| 1: [AddressOfExpr] &... -# 7| 0: [MethodAccess] access to method M0 +# 7| 1: [AddressOfExpr] &... +# 7| 0: [MethodAccess] access to method M0 # 9| 6: [Method] M0 # 9| -1: [TypeMention] int # 10| 4: [BlockStmt] {...} diff --git a/csharp/ql/test/library-tests/definitions/PrintAst.expected b/csharp/ql/test/library-tests/definitions/PrintAst.expected index 2f15f70f4473..1ad3ad1a61d4 100644 --- a/csharp/ql/test/library-tests/definitions/PrintAst.expected +++ b/csharp/ql/test/library-tests/definitions/PrintAst.expected @@ -12,13 +12,9 @@ definitions.cs: # 9| 4: [BlockStmt] {...} # 13| 2: [Enum] Enumeration # 15| 5: [Field] e1 -# 15| 1: [AssignExpr] ... = ... -# 15| 0: [MemberConstantAccess] access to constant e1 -# 15| 1: [IntLiteral] 1 +# 15| 1: [IntLiteral] 1 # 15| 6: [Field] e2 -# 15| 1: [AssignExpr] ... = ... -# 15| 0: [MemberConstantAccess] access to constant e2 -# 15| 1: [IntLiteral] 2 +# 15| 1: [IntLiteral] 2 # 15| 7: [Field] e3 # 18| 3: [Class] C1 # 20| 4: [InstanceConstructor] C1 @@ -405,14 +401,12 @@ definitions.cs: # 166| -1: [TypeMention] Nested<I4> # 166| 1: [TypeMention] C4 # 166| 2: [TypeMention] I4 -# 166| 1: [AssignExpr] ... = ... -# 166| 0: [FieldAccess] access to field f -# 166| 1: [MethodCall] call to method Create -# 166| -1: [TypeAccess] access to type Nested<I4> -# 166| -2: [TypeMention] Nested<I4> -# 166| 1: [TypeMention] I4 -# 166| -1: [TypeAccess] access to type C4 -# 166| 0: [TypeMention] C4 +# 166| 1: [MethodCall] call to method Create +# 166| -1: [TypeAccess] access to type Nested<I4> +# 166| -2: [TypeMention] Nested<I4> +# 166| 1: [TypeMention] I4 +# 166| -1: [TypeAccess] access to type C4 +# 166| 0: [TypeMention] C4 # 167| 6: [Field] c1 # 167| -1: [TypeMention] C1 # 169| 7: [Method] M diff --git a/csharp/ql/test/library-tests/enums/PrintAst.expected b/csharp/ql/test/library-tests/enums/PrintAst.expected index 6c357704ad17..bb9e5a3a9c9b 100644 --- a/csharp/ql/test/library-tests/enums/PrintAst.expected +++ b/csharp/ql/test/library-tests/enums/PrintAst.expected @@ -11,35 +11,25 @@ enums.cs: # 23| 3: [Enum] E # 25| 4: [Enum] ValueColor # 28| 5: [Field] OneRed -# 28| 1: [AssignExpr] ... = ... -# 28| 0: [MemberConstantAccess] access to constant OneRed -# 28| 1: [CastExpr] (...) ... -# 28| 1: [IntLiteral] 1 +# 28| 1: [CastExpr] (...) ... +# 28| 1: [IntLiteral] 1 # 29| 6: [Field] TwoGreen -# 29| 1: [AssignExpr] ... = ... -# 29| 0: [MemberConstantAccess] access to constant TwoGreen -# 29| 1: [CastExpr] (...) ... -# 29| 1: [IntLiteral] 2 +# 29| 1: [CastExpr] (...) ... +# 29| 1: [IntLiteral] 2 # 30| 7: [Field] FourBlue -# 30| 1: [AssignExpr] ... = ... -# 30| 0: [MemberConstantAccess] access to constant FourBlue -# 30| 1: [CastExpr] (...) ... -# 30| 1: [IntLiteral] 4 +# 30| 1: [CastExpr] (...) ... +# 30| 1: [IntLiteral] 4 # 34| 5: [Enum] SparseColor # 37| 5: [Field] Red # 38| 6: [Field] Green -# 38| 1: [AssignExpr] ... = ... -# 38| 0: [MemberConstantAccess] access to constant Green -# 38| 1: [IntLiteral] 10 +# 38| 1: [IntLiteral] 10 # 39| 7: [Field] Blue # 40| 8: [Field] AnotherBlue -# 40| 1: [AssignExpr] ... = ... -# 40| 0: [MemberConstantAccess] access to constant AnotherBlue -# 40| 1: [AddExpr] ... + ... -# 40| 0: [CastExpr] (...) ... -# 40| 1: [MemberConstantAccess] access to constant Blue -# 40| 1: [CastExpr] (...) ... -# 40| 1: [MemberConstantAccess] access to constant Red +# 40| 1: [AddExpr] ... + ... +# 40| 0: [CastExpr] (...) ... +# 40| 1: [MemberConstantAccess] access to constant Blue +# 40| 1: [CastExpr] (...) ... +# 40| 1: [MemberConstantAccess] access to constant Red # 44| 6: [Class] Test # 47| 5: [Method] Main # 47| -1: [TypeMention] Void diff --git a/csharp/ql/test/library-tests/events/PrintAst.expected b/csharp/ql/test/library-tests/events/PrintAst.expected index 7f75cd7b1cbc..84825067e429 100644 --- a/csharp/ql/test/library-tests/events/PrintAst.expected +++ b/csharp/ql/test/library-tests/events/PrintAst.expected @@ -87,16 +87,12 @@ events.cs: # 50| 4: [Class] Control # 53| 6: [Field] mouseDownEventKey # 53| -1: [TypeMention] object -# 53| 1: [AssignExpr] ... = ... -# 53| 0: [FieldAccess] access to field mouseDownEventKey -# 53| 1: [ObjectCreation] object creation of type Object -# 53| 0: [TypeMention] object +# 53| 1: [ObjectCreation] object creation of type Object +# 53| 0: [TypeMention] object # 54| 7: [Field] mouseUpEventKey # 54| -1: [TypeMention] object -# 54| 1: [AssignExpr] ... = ... -# 54| 0: [FieldAccess] access to field mouseUpEventKey -# 54| 1: [ObjectCreation] object creation of type Object -# 54| 0: [TypeMention] object +# 54| 1: [ObjectCreation] object creation of type Object +# 54| 0: [TypeMention] object # 57| 8: [Method] GetEventHandler # 57| -1: [TypeMention] Delegate #-----| 2: (Parameters) diff --git a/csharp/ql/test/library-tests/expressions/PrintAst.expected b/csharp/ql/test/library-tests/expressions/PrintAst.expected index e865a36d5491..ce25c57b0d97 100644 --- a/csharp/ql/test/library-tests/expressions/PrintAst.expected +++ b/csharp/ql/test/library-tests/expressions/PrintAst.expected @@ -417,12 +417,10 @@ ReducedExpression.cs: # 2| [Class] ReducedClass # 5| 5: [Field] ReducedExpression # 5| -1: [TypeMention] int -# 5| 1: [AssignExpr] ... = ... -# 5| 0: [MemberConstantAccess] access to constant ReducedExpression -# 5| 1: [ConditionalExpr] ... ? ... : ... -# 5| 0: [BoolLiteral] true -# 5| 1: [IntLiteral] 10 -# 5| 2: [IntLiteral] 12 +# 5| 1: [ConditionalExpr] ... ? ... : ... +# 5| 0: [BoolLiteral] true +# 5| 1: [IntLiteral] 10 +# 5| 2: [IntLiteral] 12 expressions.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 7| 1: [Class] Class @@ -550,14 +548,10 @@ expressions.cs: # 41| 0: [LocalVariableAccess] access to local variable c # 44| 6: [Field] constant # 44| -1: [TypeMention] string -# 44| 1: [AssignExpr] ... = ... -# 44| 0: [MemberConstantAccess] access to constant constant -# 44| 1: [StringLiteralUtf16] "constant" +# 44| 1: [StringLiteralUtf16] "constant" # 45| 7: [Field] f # 45| -1: [TypeMention] int -# 45| 1: [AssignExpr] ... = ... -# 45| 0: [FieldAccess] access to field f -# 45| 1: [IntLiteral] 0 +# 45| 1: [IntLiteral] 0 # 46| 8: [Field] name # 46| -1: [TypeMention] string # 48| 9: [StaticConstructor] Class @@ -1492,16 +1486,12 @@ expressions.cs: # 361| 15: [Class] Rectangle2 # 364| 5: [Field] p1 # 364| -1: [TypeMention] Point -# 364| 1: [AssignExpr] ... = ... -# 364| 0: [FieldAccess] access to field p1 -# 364| 1: [ObjectCreation] object creation of type Point -# 364| 0: [TypeMention] Point +# 364| 1: [ObjectCreation] object creation of type Point +# 364| 0: [TypeMention] Point # 365| 6: [Field] p2 # 365| -1: [TypeMention] Point -# 365| 1: [AssignExpr] ... = ... -# 365| 0: [FieldAccess] access to field p2 -# 365| 1: [ObjectCreation] object creation of type Point -# 365| 0: [TypeMention] Point +# 365| 1: [ObjectCreation] object creation of type Point +# 365| 0: [TypeMention] Point # 367| 7: [Property] P1 # 367| -1: [TypeMention] Point # 367| 3: [Getter] get_P1 @@ -1520,11 +1510,9 @@ expressions.cs: # 376| 6: [Field] phoneNumbers # 376| -1: [TypeMention] List<string> # 376| 1: [TypeMention] string -# 376| 1: [AssignExpr] ... = ... -# 376| 0: [FieldAccess] access to field phoneNumbers -# 376| 1: [ObjectCreation] object creation of type List<String> -# 376| 0: [TypeMention] List<string> -# 376| 1: [TypeMention] string +# 376| 1: [ObjectCreation] object creation of type List<String> +# 376| 0: [TypeMention] List<string> +# 376| 1: [TypeMention] string # 378| 7: [Property] Name # 378| -1: [TypeMention] string # 378| 3: [Getter] get_Name @@ -2194,9 +2182,8 @@ expressions.cs: # 495| 19: [Class] ExpressionDepth # 497| 5: [Field] d # 497| -1: [TypeMention] int -# 497| 1: [AssignExpr] ... = ... -# 497| 0: [MemberConstantAccess] access to constant d -# 497| 1: [AddExpr] ... + ... +# 497| 1: [AddExpr] ... + ... +# 497| 0: [AddExpr] ... + ... # 497| 0: [AddExpr] ... + ... # 497| 0: [AddExpr] ... + ... # 497| 0: [AddExpr] ... + ... @@ -2274,9 +2261,7 @@ expressions.cs: # 497| 0: [AddExpr] ... + ... # 497| 0: [AddExpr] ... + ... # 497| 0: [AddExpr] ... + ... -# 497| 0: [AddExpr] ... + ... -# 497| 0: [IntLiteral] 1 -# 497| 1: [IntLiteral] 1 +# 497| 0: [IntLiteral] 1 # 497| 1: [IntLiteral] 1 # 497| 1: [IntLiteral] 1 # 497| 1: [IntLiteral] 1 @@ -2315,7 +2300,7 @@ expressions.cs: # 497| 1: [IntLiteral] 1 # 497| 1: [IntLiteral] 1 # 497| 1: [IntLiteral] 1 -# 498| 1: [IntLiteral] 1 +# 497| 1: [IntLiteral] 1 # 498| 1: [IntLiteral] 1 # 498| 1: [IntLiteral] 1 # 498| 1: [IntLiteral] 1 @@ -2355,6 +2340,7 @@ expressions.cs: # 498| 1: [IntLiteral] 1 # 498| 1: [IntLiteral] 1 # 498| 1: [IntLiteral] 1 +# 498| 1: [IntLiteral] 1 # 501| 20: [Class] TupleExprs # 503| 5: [Method] Test # 503| -1: [TypeMention] Void diff --git a/csharp/ql/test/library-tests/fields/PrintAst.expected b/csharp/ql/test/library-tests/fields/PrintAst.expected index f68578327914..4f33d662a06d 100644 --- a/csharp/ql/test/library-tests/fields/PrintAst.expected +++ b/csharp/ql/test/library-tests/fields/PrintAst.expected @@ -3,37 +3,27 @@ fields.cs: # 7| 1: [Class] A # 10| 6: [Field] X # 10| -1: [TypeMention] int -# 10| 1: [AssignExpr] ... = ... -# 10| 0: [FieldAccess] access to field X -# 10| 1: [IntLiteral] 1 +# 10| 1: [IntLiteral] 1 # 10| 7: [Field] Y # 10| -1: [TypeMention] int # 10| 8: [Field] Z # 10| -1: [TypeMention] int -# 10| 1: [AssignExpr] ... = ... -# 10| 0: [FieldAccess] access to field Z -# 10| 1: [IntLiteral] 100 +# 10| 1: [IntLiteral] 100 # 13| 2: [Class] B # 15| 6: [Field] X # 15| -1: [TypeMention] int -# 15| 1: [AssignExpr] ... = ... -# 15| 0: [FieldAccess] access to field X -# 15| 1: [IntLiteral] 1 +# 15| 1: [IntLiteral] 1 # 16| 7: [Field] Y # 16| -1: [TypeMention] int # 17| 8: [Field] Z # 17| -1: [TypeMention] int -# 17| 1: [AssignExpr] ... = ... -# 17| 0: [FieldAccess] access to field Z -# 17| 1: [IntLiteral] 100 +# 17| 1: [IntLiteral] 100 # 20| 3: [Class] C`1 #-----| 1: (Type parameters) # 20| 0: [TypeParameter] V # 23| 5: [Field] count # 23| -1: [TypeMention] int -# 23| 1: [AssignExpr] ... = ... -# 23| 0: [FieldAccess] access to field count -# 23| 1: [IntLiteral] 0 +# 23| 1: [IntLiteral] 0 # 25| 6: [InstanceConstructor] C # 25| 4: [BlockStmt] {...} # 25| 0: [ExprStmt] ...; @@ -50,22 +40,16 @@ fields.cs: # 34| -1: [TypeMention] bool # 35| 7: [Field] x # 35| -1: [TypeMention] double -# 35| 1: [AssignExpr] ... = ... -# 35| 0: [FieldAccess] access to field x -# 35| 1: [MethodCall] call to method Sqrt -# 35| -1: [TypeAccess] access to type Math -# 35| 0: [TypeMention] Math -# 35| 0: [DoubleLiteral] 2 +# 35| 1: [MethodCall] call to method Sqrt +# 35| -1: [TypeAccess] access to type Math +# 35| 0: [TypeMention] Math +# 35| 0: [DoubleLiteral] 2 # 36| 8: [Field] i # 36| -1: [TypeMention] int -# 36| 1: [AssignExpr] ... = ... -# 36| 0: [FieldAccess] access to field i -# 36| 1: [IntLiteral] 100 +# 36| 1: [IntLiteral] 100 # 37| 9: [Field] s # 37| -1: [TypeMention] string -# 37| 1: [AssignExpr] ... = ... -# 37| 0: [FieldAccess] access to field s -# 37| 1: [StringLiteralUtf16] "Hello" +# 37| 1: [StringLiteralUtf16] "Hello" # 39| 10: [Method] Main # 39| -1: [TypeMention] Void # 40| 4: [BlockStmt] {...} @@ -111,28 +95,24 @@ fields.cs: # 50| 5: [Class] Color # 53| 5: [Field] Black # 53| -1: [TypeMention] Color -# 53| 1: [AssignExpr] ... = ... -# 53| 0: [FieldAccess] access to field Black -# 53| 1: [ObjectCreation] object creation of type Color -# 53| -1: [TypeMention] Color -# 53| 0: [CastExpr] (...) ... -# 53| 1: [IntLiteral] 0 -# 53| 1: [CastExpr] (...) ... -# 53| 1: [IntLiteral] 0 -# 53| 2: [CastExpr] (...) ... -# 53| 1: [IntLiteral] 0 +# 53| 1: [ObjectCreation] object creation of type Color +# 53| -1: [TypeMention] Color +# 53| 0: [CastExpr] (...) ... +# 53| 1: [IntLiteral] 0 +# 53| 1: [CastExpr] (...) ... +# 53| 1: [IntLiteral] 0 +# 53| 2: [CastExpr] (...) ... +# 53| 1: [IntLiteral] 0 # 54| 6: [Field] White # 54| -1: [TypeMention] Color -# 54| 1: [AssignExpr] ... = ... -# 54| 0: [FieldAccess] access to field White -# 54| 1: [ObjectCreation] object creation of type Color -# 54| -1: [TypeMention] Color -# 54| 0: [CastExpr] (...) ... -# 54| 1: [IntLiteral] 255 -# 54| 1: [CastExpr] (...) ... -# 54| 1: [IntLiteral] 255 -# 54| 2: [CastExpr] (...) ... -# 54| 1: [IntLiteral] 255 +# 54| 1: [ObjectCreation] object creation of type Color +# 54| -1: [TypeMention] Color +# 54| 0: [CastExpr] (...) ... +# 54| 1: [IntLiteral] 255 +# 54| 1: [CastExpr] (...) ... +# 54| 1: [IntLiteral] 255 +# 54| 2: [CastExpr] (...) ... +# 54| 1: [IntLiteral] 255 # 56| 7: [InstanceConstructor] Color #-----| 2: (Parameters) # 56| 0: [Parameter] r @@ -145,50 +125,38 @@ fields.cs: # 60| 6: [Class] TestBindings # 63| 6: [Field] a # 63| -1: [TypeMention] int -# 63| 1: [AssignExpr] ... = ... -# 63| 0: [FieldAccess] access to field a -# 63| 1: [AddExpr] ... + ... -# 63| 0: [FieldAccess] access to field b -# 63| 1: [IntLiteral] 1 +# 63| 1: [AddExpr] ... + ... +# 63| 0: [FieldAccess] access to field b +# 63| 1: [IntLiteral] 1 # 64| 7: [Field] b # 64| -1: [TypeMention] int -# 64| 1: [AssignExpr] ... = ... -# 64| 0: [FieldAccess] access to field b -# 64| 1: [AddExpr] ... + ... -# 64| 0: [FieldAccess] access to field a -# 64| 1: [IntLiteral] 1 +# 64| 1: [AddExpr] ... + ... +# 64| 0: [FieldAccess] access to field a +# 64| 1: [IntLiteral] 1 # 70| [NamespaceDeclaration] namespace ... { ... } # 72| 1: [Class] A # 74| 5: [Field] X # 74| -1: [TypeMention] int -# 74| 1: [AssignExpr] ... = ... -# 74| 0: [MemberConstantAccess] access to constant X -# 74| 1: [AddExpr] ... + ... -# 74| 0: [MemberConstantAccess] access to constant Z -# 74| -1: [TypeAccess] access to type B -# 74| 0: [TypeMention] B -# 74| 1: [IntLiteral] 1 +# 74| 1: [AddExpr] ... + ... +# 74| 0: [MemberConstantAccess] access to constant Z +# 74| -1: [TypeAccess] access to type B +# 74| 0: [TypeMention] B +# 74| 1: [IntLiteral] 1 # 75| 6: [Field] Y # 75| -1: [TypeMention] int -# 75| 1: [AssignExpr] ... = ... -# 75| 0: [MemberConstantAccess] access to constant Y -# 75| 1: [IntLiteral] 10 +# 75| 1: [IntLiteral] 10 # 78| 2: [Class] B # 80| 5: [Field] Z # 80| -1: [TypeMention] int -# 80| 1: [AssignExpr] ... = ... -# 80| 0: [MemberConstantAccess] access to constant Z -# 80| 1: [AddExpr] ... + ... -# 80| 0: [MemberConstantAccess] access to constant Y -# 80| -1: [TypeAccess] access to type A -# 80| 0: [TypeMention] A -# 80| 1: [IntLiteral] 1 +# 80| 1: [AddExpr] ... + ... +# 80| 0: [MemberConstantAccess] access to constant Y +# 80| -1: [TypeAccess] access to type A +# 80| 0: [TypeMention] A +# 80| 1: [IntLiteral] 1 # 83| 3: [Class] C # 85| 4: [Field] Foo # 85| -1: [TypeMention] int -# 85| 1: [AssignExpr] ... = ... -# 85| 0: [MemberConstantAccess] access to constant Foo -# 85| 1: [IntLiteral] 1 +# 85| 1: [IntLiteral] 1 # 86| 5: [Field] x # 86| -1: [TypeMention] long? # 86| 1: [TypeMention] long diff --git a/csharp/ql/test/library-tests/generics/PrintAst.expected b/csharp/ql/test/library-tests/generics/PrintAst.expected index 86a199c2ee00..3653b3b7a2d7 100644 --- a/csharp/ql/test/library-tests/generics/PrintAst.expected +++ b/csharp/ql/test/library-tests/generics/PrintAst.expected @@ -370,24 +370,18 @@ generics.cs: # 60| 0: [TypeParameter] T # 63| 5: [Field] NumRows # 63| -1: [TypeMention] int -# 63| 1: [AssignExpr] ... = ... -# 63| 0: [MemberConstantAccess] access to constant NumRows -# 63| 1: [IntLiteral] 26 +# 63| 1: [IntLiteral] 26 # 64| 6: [Field] NumCols # 64| -1: [TypeMention] int -# 64| 1: [AssignExpr] ... = ... -# 64| 0: [MemberConstantAccess] access to constant NumCols -# 64| 1: [IntLiteral] 10 +# 64| 1: [IntLiteral] 10 # 66| 7: [Field] cells # 66| -1: [TypeMention] T[,] # 66| 1: [TypeMention] T -# 66| 1: [AssignExpr] ... = ... -# 66| 0: [FieldAccess] access to field cells -# 66| 1: [ArrayCreation] array creation of type T[,] -# 66| -1: [TypeMention] T[,] -# 66| 1: [TypeMention] T -# 66| 0: [MemberConstantAccess] access to constant NumRows -# 66| 1: [MemberConstantAccess] access to constant NumCols +# 66| 1: [ArrayCreation] array creation of type T[,] +# 66| -1: [TypeMention] T[,] +# 66| 1: [TypeMention] T +# 66| 0: [MemberConstantAccess] access to constant NumRows +# 66| 1: [MemberConstantAccess] access to constant NumCols # 68| 8: [Indexer] Item # 68| -1: [TypeMention] int #-----| 1: (Parameters) diff --git a/csharp/ql/test/library-tests/indexers/PrintAst.expected b/csharp/ql/test/library-tests/indexers/PrintAst.expected index 540c1d8255d2..6f9fde00e24f 100644 --- a/csharp/ql/test/library-tests/indexers/PrintAst.expected +++ b/csharp/ql/test/library-tests/indexers/PrintAst.expected @@ -214,24 +214,18 @@ indexers.cs: # 81| 3: [Class] Grid # 84| 5: [Field] NumRows # 84| -1: [TypeMention] int -# 84| 1: [AssignExpr] ... = ... -# 84| 0: [MemberConstantAccess] access to constant NumRows -# 84| 1: [IntLiteral] 26 +# 84| 1: [IntLiteral] 26 # 85| 6: [Field] NumCols # 85| -1: [TypeMention] int -# 85| 1: [AssignExpr] ... = ... -# 85| 0: [MemberConstantAccess] access to constant NumCols -# 85| 1: [IntLiteral] 10 +# 85| 1: [IntLiteral] 10 # 87| 7: [Field] cells # 87| -1: [TypeMention] Int32[,] # 87| 1: [TypeMention] int -# 87| 1: [AssignExpr] ... = ... -# 87| 0: [FieldAccess] access to field cells -# 87| 1: [ArrayCreation] array creation of type Int32[,] -# 87| -1: [TypeMention] Int32[,] -# 87| 1: [TypeMention] int -# 87| 0: [MemberConstantAccess] access to constant NumRows -# 87| 1: [MemberConstantAccess] access to constant NumCols +# 87| 1: [ArrayCreation] array creation of type Int32[,] +# 87| -1: [TypeMention] Int32[,] +# 87| 1: [TypeMention] int +# 87| 0: [MemberConstantAccess] access to constant NumRows +# 87| 1: [MemberConstantAccess] access to constant NumCols # 89| 8: [Indexer] Item # 89| -1: [TypeMention] int #-----| 1: (Parameters) From 79440f6734ac9ab6f66f7556dc0fc4b240c33960 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 4 Apr 2024 10:02:02 +0200 Subject: [PATCH 659/731] Data flow: Fix bad join ``` Evaluated relational algebra for predicate DataFlowImpl::Impl<PolynomialReDoSQuery::PolynomialReDoSFlow::C>::storeEx/5#34133ef9@0425e0m7 with tuple counts: 2209132 ~1% {6} r1 = SCAN `DataFlowImpl::Impl<PolynomialReDoSQuery::PolynomialReDoSFlow::C>::storeExUnrestricted/5#3a86a98e` OUTPUT In.1, In.0, In.1, In.2, In.3, In.4 4338565685 ~1% {6} | JOIN WITH `DataFlowPublic::ContentSet.getAReadContent/0#dispred#e4acf74e_10#join_rhs` ON FIRST 1 OUTPUT Rhs.1, Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5 34811200 ~1428% {5} | JOIN WITH `project#DataFlowImpl::Impl<PolynomialReDoSQuery::PolynomialReDoSFlow::C>::readSetEx/3#35ac556a` ON FIRST 1 OUTPUT Lhs.1, Lhs.2, Lhs.3, Lhs.4, Lhs.5 return r1 ``` --- shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 64222dbc8e34..e6ce90089358 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -460,12 +460,15 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> { stepFilter(node1, node2) } + pragma[nomagic] + private predicate hasReadStep(Content c) { read(_, c, _) } + pragma[nomagic] private predicate storeEx( NodeEx node1, Content c, NodeEx node2, DataFlowType contentType, DataFlowType containerType ) { storeExUnrestricted(node1, c, node2, contentType, containerType) and - read(_, c, _) + hasReadStep(c) } pragma[nomagic] From 55d1f43239cd0676bdf410e9e169dc9db37eaec8 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Thu, 4 Apr 2024 10:18:56 +0200 Subject: [PATCH 660/731] C++: Update supported compiler versions based on frontend documentation --- docs/codeql/reusables/supported-versions-compilers.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 15e1cfa64448..b41673d0845d 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -4,11 +4,11 @@ :stub-columns: 1 Language,Variants,Compilers,Extensions - C/C++,"C89, C99, C11, C17, C++98, C++03, C++11, C++14, C++17, C++20 [1]_ [2]_","Clang (including clang-cl [3]_ and armclang) extensions (up to Clang 12.0), + C/C++,"C89, C99, C11, C17, C++98, C++03, C++11, C++14, C++17, C++20 [1]_ [2]_","Clang (including clang-cl [3]_ and armclang) extensions (up to Clang 17.0), - GNU extensions (up to GCC 11.1), + GNU extensions (up to GCC 13.2), - Microsoft extensions (up to VS 2019), + Microsoft extensions (up to VS 2022), Arm Compiler 5 [4]_","``.cpp``, ``.c++``, ``.cxx``, ``.hpp``, ``.hh``, ``.h++``, ``.hxx``, ``.c``, ``.cc``, ``.h``" C#,C# up to 12,"Microsoft Visual Studio up to 2019 with .NET up to 4.8, @@ -29,7 +29,7 @@ .. container:: footnote-group - .. [1] C++20 support is currently in beta. Supported for GCC on Linux only. Modules are *not* supported. + .. [1] C++20 support is currently in beta. Modules are *not* supported. .. [2] Objective-C, Objective-C++, C++/CLI, and C++/CX are not supported. .. [3] Support for the clang-cl compiler is preliminary. .. [4] Support for the Arm Compiler (armcc) is preliminary. From 70491c4a8dc6061d29d418b49e2b47a17b2f18ec Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <jketema@github.com> Date: Thu, 4 Apr 2024 10:54:09 +0200 Subject: [PATCH 661/731] C++: Add more missing variable declaration tests --- .../library-tests/ir/ir/PrintAST.expected | 8330 +++++++++-------- .../library-tests/ir/ir/aliased_ir.expected | 7105 +++++++------- cpp/ql/test/library-tests/ir/ir/ir.cpp | 14 + .../ir/ir/operand_locations.expected | 6191 ++++++------ .../test/library-tests/ir/ir/raw_ir.expected | 6143 ++++++------ 5 files changed, 13976 insertions(+), 13807 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index ea9f82fbf400..5f2aebd390fc 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -15617,773 +15617,821 @@ ir.cpp: # 1934| Type = [ClassTemplateInstantiation,Struct] Bar2<int> # 1934| ValueCategory = lvalue # 1935| getStmt(2): [ReturnStmt] return ... -# 1938| [GlobalVariable,VariableTemplateInstantiation] char global_template<char> -# 1938| getInitializer(): [Initializer] initializer for global_template -# 1938| getExpr(): [Literal] 42 -# 1938| Type = [IntType] int -# 1938| Value = [Literal] 42 -# 1938| ValueCategory = prvalue -# 1938| getExpr().getFullyConverted(): [CStyleCast] (char)... -# 1938| Conversion = [IntegralConversion] integral conversion -# 1938| Type = [PlainCharType] char -# 1938| Value = [CStyleCast] 42 -# 1938| ValueCategory = prvalue -# 1938| [GlobalVariable,VariableTemplateInstantiation] int global_template<int> -# 1938| getInitializer(): [Initializer] initializer for global_template -# 1938| getExpr(): [Literal] 42 -# 1938| Type = [IntType] int -# 1938| Value = [Literal] 42 -# 1938| ValueCategory = prvalue -# 1940| [TopLevelFunction] int test_global_template_int() -# 1940| <params>: -# 1940| getEntryPoint(): [BlockStmt] { ... } -# 1941| getStmt(0): [DeclStmt] declaration -# 1941| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int +# 1937| [CopyAssignmentOperator] missing_declaration_entries::Bar3<int>& missing_declaration_entries::Bar3<int>::operator=(missing_declaration_entries::Bar3<int> const&) +# 1937| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const Bar3<int> & +# 1937| [MoveAssignmentOperator] missing_declaration_entries::Bar3<int>& missing_declaration_entries::Bar3<int>::operator=(missing_declaration_entries::Bar3<int>&&) +# 1937| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] Bar3<int> && +# 1939| [MemberFunction] int missing_declaration_entries::Bar3<T>::two_more_missing_variable_declaration_entries() +# 1939| <params>: +# 1939| getEntryPoint(): [BlockStmt] { ... } +# 1940| getStmt(0): [DeclStmt] declaration +# 1940| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1940| Type = [IntType] int +# 1941| getStmt(1): [DeclStmt] declaration +# 1941| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z # 1941| Type = [IntType] int -# 1941| getVariable().getInitializer(): [Initializer] initializer for local_int -# 1941| getExpr(): [VariableAccess] global_template -# 1941| Type = [IntType] int -# 1941| ValueCategory = prvalue(load) -# 1942| getStmt(1): [DeclStmt] declaration -# 1942| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char -# 1942| Type = [PlainCharType] char -# 1942| getVariable().getInitializer(): [Initializer] initializer for local_char -# 1942| getExpr(): [VariableAccess] global_template -# 1942| Type = [PlainCharType] char -# 1942| ValueCategory = prvalue(load) -# 1943| getStmt(2): [ReturnStmt] return ... -# 1943| getExpr(): [AddExpr] ... + ... -# 1943| Type = [IntType] int -# 1943| ValueCategory = prvalue -# 1943| getLeftOperand(): [VariableAccess] local_int -# 1943| Type = [IntType] int -# 1943| ValueCategory = prvalue(load) -# 1943| getRightOperand(): [VariableAccess] local_char -# 1943| Type = [PlainCharType] char -# 1943| ValueCategory = prvalue(load) -# 1943| getRightOperand().getFullyConverted(): [CStyleCast] (int)... -# 1943| Conversion = [IntegralConversion] integral conversion -# 1943| Type = [IntType] int -# 1943| ValueCategory = prvalue -# 1946| [TopLevelFunction] void noreturnFunc() +# 1942| getStmt(2): [ReturnStmt] return ... +# 1942| getExpr(): [VariableAccess] g +# 1942| Type = [IntType] int +# 1942| ValueCategory = prvalue(load) +# 1939| [MemberFunction] int missing_declaration_entries::Bar3<int>::two_more_missing_variable_declaration_entries() +# 1939| <params>: +# 1939| getEntryPoint(): [BlockStmt] { ... } +# 1940| getStmt(0): [DeclStmt] declaration +# 1941| getStmt(1): [DeclStmt] declaration +# 1942| getStmt(2): [ReturnStmt] return ... +# 1942| getExpr(): [VariableAccess] g +# 1942| Type = [IntType] int +# 1942| ValueCategory = prvalue(load) +# 1941| [TopLevelFunction] int missing_declaration_entries::z(float) +# 1941| <params>: +# 1941| getParameter(0): [Parameter] (unnamed parameter 0) +# 1941| Type = [FloatType] float +# 1946| [TopLevelFunction] void missing_declaration_entries::test3() # 1946| <params>: -# 1948| [TopLevelFunction] int noreturnTest(int) -# 1948| <params>: -# 1948| getParameter(0): [Parameter] x -# 1948| Type = [IntType] int -# 1948| getEntryPoint(): [BlockStmt] { ... } -# 1949| getStmt(0): [IfStmt] if (...) ... -# 1949| getCondition(): [LTExpr] ... < ... -# 1949| Type = [BoolType] bool -# 1949| ValueCategory = prvalue -# 1949| getLesserOperand(): [VariableAccess] x -# 1949| Type = [IntType] int -# 1949| ValueCategory = prvalue(load) -# 1949| getGreaterOperand(): [Literal] 10 -# 1949| Type = [IntType] int -# 1949| Value = [Literal] 10 -# 1949| ValueCategory = prvalue -# 1949| getThen(): [BlockStmt] { ... } -# 1950| getStmt(0): [ReturnStmt] return ... -# 1950| getExpr(): [VariableAccess] x -# 1950| Type = [IntType] int -# 1950| ValueCategory = prvalue(load) -# 1951| getElse(): [BlockStmt] { ... } -# 1952| getStmt(0): [ExprStmt] ExprStmt -# 1952| getExpr(): [FunctionCall] call to noreturnFunc -# 1952| Type = [VoidType] void -# 1952| ValueCategory = prvalue -# 1954| getStmt(1): [ReturnStmt] return ... -# 1956| [TopLevelFunction] int noreturnTest2(int) -# 1956| <params>: -# 1956| getParameter(0): [Parameter] x -# 1956| Type = [IntType] int -# 1956| getEntryPoint(): [BlockStmt] { ... } -# 1957| getStmt(0): [IfStmt] if (...) ... -# 1957| getCondition(): [LTExpr] ... < ... -# 1957| Type = [BoolType] bool +# 1946| getEntryPoint(): [BlockStmt] { ... } +# 1947| getStmt(0): [DeclStmt] declaration +# 1947| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1947| Type = [ClassTemplateInstantiation,Struct] Bar3<int> +# 1948| getStmt(1): [ExprStmt] ExprStmt +# 1948| getExpr(): [FunctionCall] call to two_more_missing_variable_declaration_entries +# 1948| Type = [IntType] int +# 1948| ValueCategory = prvalue +# 1948| getQualifier(): [VariableAccess] b +# 1948| Type = [ClassTemplateInstantiation,Struct] Bar3<int> +# 1948| ValueCategory = lvalue +# 1949| getStmt(2): [ReturnStmt] return ... +# 1952| [GlobalVariable,VariableTemplateInstantiation] char global_template<char> +# 1952| getInitializer(): [Initializer] initializer for global_template +# 1952| getExpr(): [Literal] 42 +# 1952| Type = [IntType] int +# 1952| Value = [Literal] 42 +# 1952| ValueCategory = prvalue +# 1952| getExpr().getFullyConverted(): [CStyleCast] (char)... +# 1952| Conversion = [IntegralConversion] integral conversion +# 1952| Type = [PlainCharType] char +# 1952| Value = [CStyleCast] 42 +# 1952| ValueCategory = prvalue +# 1952| [GlobalVariable,VariableTemplateInstantiation] int global_template<int> +# 1952| getInitializer(): [Initializer] initializer for global_template +# 1952| getExpr(): [Literal] 42 +# 1952| Type = [IntType] int +# 1952| Value = [Literal] 42 +# 1952| ValueCategory = prvalue +# 1954| [TopLevelFunction] int test_global_template_int() +# 1954| <params>: +# 1954| getEntryPoint(): [BlockStmt] { ... } +# 1955| getStmt(0): [DeclStmt] declaration +# 1955| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int +# 1955| Type = [IntType] int +# 1955| getVariable().getInitializer(): [Initializer] initializer for local_int +# 1955| getExpr(): [VariableAccess] global_template +# 1955| Type = [IntType] int +# 1955| ValueCategory = prvalue(load) +# 1956| getStmt(1): [DeclStmt] declaration +# 1956| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char +# 1956| Type = [PlainCharType] char +# 1956| getVariable().getInitializer(): [Initializer] initializer for local_char +# 1956| getExpr(): [VariableAccess] global_template +# 1956| Type = [PlainCharType] char +# 1956| ValueCategory = prvalue(load) +# 1957| getStmt(2): [ReturnStmt] return ... +# 1957| getExpr(): [AddExpr] ... + ... +# 1957| Type = [IntType] int # 1957| ValueCategory = prvalue -# 1957| getLesserOperand(): [VariableAccess] x +# 1957| getLeftOperand(): [VariableAccess] local_int # 1957| Type = [IntType] int # 1957| ValueCategory = prvalue(load) -# 1957| getGreaterOperand(): [Literal] 10 +# 1957| getRightOperand(): [VariableAccess] local_char +# 1957| Type = [PlainCharType] char +# 1957| ValueCategory = prvalue(load) +# 1957| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 1957| Conversion = [IntegralConversion] integral conversion # 1957| Type = [IntType] int -# 1957| Value = [Literal] 10 # 1957| ValueCategory = prvalue -# 1957| getThen(): [BlockStmt] { ... } -# 1958| getStmt(0): [ExprStmt] ExprStmt -# 1958| getExpr(): [FunctionCall] call to noreturnFunc -# 1958| Type = [VoidType] void -# 1958| ValueCategory = prvalue -# 1960| getStmt(1): [ReturnStmt] return ... -# 1960| getExpr(): [VariableAccess] x -# 1960| Type = [IntType] int -# 1960| ValueCategory = prvalue(load) -# 1963| [TopLevelFunction] int static_function(int) -# 1963| <params>: -# 1963| getParameter(0): [Parameter] x -# 1963| Type = [IntType] int -# 1963| getEntryPoint(): [BlockStmt] { ... } -# 1964| getStmt(0): [ReturnStmt] return ... -# 1964| getExpr(): [VariableAccess] x -# 1964| Type = [IntType] int -# 1964| ValueCategory = prvalue(load) -# 1967| [TopLevelFunction] void test_static_functions_with_assignments() -# 1967| <params>: -# 1967| getEntryPoint(): [BlockStmt] { ... } -# 1968| getStmt(0): [DeclStmt] declaration -# 1968| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1968| Type = [Class] C -# 1968| getVariable().getInitializer(): [Initializer] initializer for c -# 1968| getExpr(): [ConstructorCall] call to C -# 1968| Type = [VoidType] void -# 1968| ValueCategory = prvalue -# 1969| getStmt(1): [DeclStmt] declaration -# 1969| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1969| Type = [IntType] int -# 1970| getStmt(2): [ExprStmt] ExprStmt -# 1970| getExpr(): [AssignExpr] ... = ... -# 1970| Type = [IntType] int -# 1970| ValueCategory = lvalue -# 1970| getLValue(): [VariableAccess] x -# 1970| Type = [IntType] int -# 1970| ValueCategory = lvalue -# 1970| getRValue(): [FunctionCall] call to StaticMemberFunction -# 1970| Type = [IntType] int -# 1970| ValueCategory = prvalue -# 1970| getQualifier(): [VariableAccess] c -# 1970| Type = [Class] C -# 1970| ValueCategory = lvalue -# 1970| getArgument(0): [Literal] 10 -# 1970| Type = [IntType] int -# 1970| Value = [Literal] 10 -# 1970| ValueCategory = prvalue -# 1971| getStmt(3): [DeclStmt] declaration -# 1971| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1971| Type = [IntType] int -# 1972| getStmt(4): [ExprStmt] ExprStmt -# 1972| getExpr(): [AssignExpr] ... = ... -# 1972| Type = [IntType] int -# 1972| ValueCategory = lvalue -# 1972| getLValue(): [VariableAccess] y -# 1972| Type = [IntType] int -# 1972| ValueCategory = lvalue -# 1972| getRValue(): [FunctionCall] call to StaticMemberFunction -# 1972| Type = [IntType] int -# 1972| ValueCategory = prvalue -# 1972| getArgument(0): [Literal] 10 -# 1972| Type = [IntType] int -# 1972| Value = [Literal] 10 +# 1960| [TopLevelFunction] void noreturnFunc() +# 1960| <params>: +# 1962| [TopLevelFunction] int noreturnTest(int) +# 1962| <params>: +# 1962| getParameter(0): [Parameter] x +# 1962| Type = [IntType] int +# 1962| getEntryPoint(): [BlockStmt] { ... } +# 1963| getStmt(0): [IfStmt] if (...) ... +# 1963| getCondition(): [LTExpr] ... < ... +# 1963| Type = [BoolType] bool +# 1963| ValueCategory = prvalue +# 1963| getLesserOperand(): [VariableAccess] x +# 1963| Type = [IntType] int +# 1963| ValueCategory = prvalue(load) +# 1963| getGreaterOperand(): [Literal] 10 +# 1963| Type = [IntType] int +# 1963| Value = [Literal] 10 +# 1963| ValueCategory = prvalue +# 1963| getThen(): [BlockStmt] { ... } +# 1964| getStmt(0): [ReturnStmt] return ... +# 1964| getExpr(): [VariableAccess] x +# 1964| Type = [IntType] int +# 1964| ValueCategory = prvalue(load) +# 1965| getElse(): [BlockStmt] { ... } +# 1966| getStmt(0): [ExprStmt] ExprStmt +# 1966| getExpr(): [FunctionCall] call to noreturnFunc +# 1966| Type = [VoidType] void +# 1966| ValueCategory = prvalue +# 1968| getStmt(1): [ReturnStmt] return ... +# 1970| [TopLevelFunction] int noreturnTest2(int) +# 1970| <params>: +# 1970| getParameter(0): [Parameter] x +# 1970| Type = [IntType] int +# 1970| getEntryPoint(): [BlockStmt] { ... } +# 1971| getStmt(0): [IfStmt] if (...) ... +# 1971| getCondition(): [LTExpr] ... < ... +# 1971| Type = [BoolType] bool +# 1971| ValueCategory = prvalue +# 1971| getLesserOperand(): [VariableAccess] x +# 1971| Type = [IntType] int +# 1971| ValueCategory = prvalue(load) +# 1971| getGreaterOperand(): [Literal] 10 +# 1971| Type = [IntType] int +# 1971| Value = [Literal] 10 +# 1971| ValueCategory = prvalue +# 1971| getThen(): [BlockStmt] { ... } +# 1972| getStmt(0): [ExprStmt] ExprStmt +# 1972| getExpr(): [FunctionCall] call to noreturnFunc +# 1972| Type = [VoidType] void # 1972| ValueCategory = prvalue -# 1973| getStmt(5): [DeclStmt] declaration -# 1973| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1973| Type = [IntType] int -# 1974| getStmt(6): [ExprStmt] ExprStmt -# 1974| getExpr(): [AssignExpr] ... = ... +# 1974| getStmt(1): [ReturnStmt] return ... +# 1974| getExpr(): [VariableAccess] x # 1974| Type = [IntType] int -# 1974| ValueCategory = lvalue -# 1974| getLValue(): [VariableAccess] z -# 1974| Type = [IntType] int -# 1974| ValueCategory = lvalue -# 1974| getRValue(): [FunctionCall] call to static_function -# 1974| Type = [IntType] int -# 1974| ValueCategory = prvalue -# 1974| getArgument(0): [Literal] 10 -# 1974| Type = [IntType] int -# 1974| Value = [Literal] 10 -# 1974| ValueCategory = prvalue -# 1975| getStmt(7): [ReturnStmt] return ... -# 1975| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1975| Type = [VoidType] void -# 1975| ValueCategory = prvalue -# 1975| getQualifier(): [VariableAccess] c -# 1975| Type = [Class] C -# 1975| ValueCategory = lvalue -# 1977| [TopLevelFunction] void test_double_assign() +# 1974| ValueCategory = prvalue(load) +# 1977| [TopLevelFunction] int static_function(int) # 1977| <params>: +# 1977| getParameter(0): [Parameter] x +# 1977| Type = [IntType] int # 1977| getEntryPoint(): [BlockStmt] { ... } -# 1978| getStmt(0): [DeclStmt] declaration -# 1978| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1978| Type = [IntType] int -# 1978| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1978| getStmt(0): [ReturnStmt] return ... +# 1978| getExpr(): [VariableAccess] x # 1978| Type = [IntType] int -# 1979| getStmt(1): [ExprStmt] ExprStmt -# 1979| getExpr(): [AssignExpr] ... = ... -# 1979| Type = [IntType] int -# 1979| ValueCategory = lvalue -# 1979| getLValue(): [VariableAccess] i -# 1979| Type = [IntType] int -# 1979| ValueCategory = lvalue -# 1979| getRValue(): [AssignExpr] ... = ... -# 1979| Type = [IntType] int -# 1979| ValueCategory = prvalue(load) -# 1979| getLValue(): [VariableAccess] j -# 1979| Type = [IntType] int -# 1979| ValueCategory = lvalue -# 1979| getRValue(): [Literal] 40 -# 1979| Type = [IntType] int -# 1979| Value = [Literal] 40 -# 1979| ValueCategory = prvalue -# 1980| getStmt(2): [ReturnStmt] return ... -# 1982| [TopLevelFunction] void test_assign_with_assign_operation() -# 1982| <params>: -# 1982| getEntryPoint(): [BlockStmt] { ... } -# 1983| getStmt(0): [DeclStmt] declaration -# 1983| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1978| ValueCategory = prvalue(load) +# 1981| [TopLevelFunction] void test_static_functions_with_assignments() +# 1981| <params>: +# 1981| getEntryPoint(): [BlockStmt] { ... } +# 1982| getStmt(0): [DeclStmt] declaration +# 1982| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1982| Type = [Class] C +# 1982| getVariable().getInitializer(): [Initializer] initializer for c +# 1982| getExpr(): [ConstructorCall] call to C +# 1982| Type = [VoidType] void +# 1982| ValueCategory = prvalue +# 1983| getStmt(1): [DeclStmt] declaration +# 1983| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1983| Type = [IntType] int -# 1983| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j -# 1983| Type = [IntType] int -# 1983| getVariable().getInitializer(): [Initializer] initializer for j -# 1983| getExpr(): [Literal] 0 -# 1983| Type = [IntType] int -# 1983| Value = [Literal] 0 -# 1983| ValueCategory = prvalue -# 1984| getStmt(1): [ExprStmt] ExprStmt +# 1984| getStmt(2): [ExprStmt] ExprStmt # 1984| getExpr(): [AssignExpr] ... = ... # 1984| Type = [IntType] int # 1984| ValueCategory = lvalue -# 1984| getLValue(): [VariableAccess] i +# 1984| getLValue(): [VariableAccess] x # 1984| Type = [IntType] int # 1984| ValueCategory = lvalue -# 1984| getRValue(): [AssignAddExpr] ... += ... +# 1984| getRValue(): [FunctionCall] call to StaticMemberFunction # 1984| Type = [IntType] int -# 1984| ValueCategory = prvalue(load) -# 1984| getLValue(): [VariableAccess] j -# 1984| Type = [IntType] int +# 1984| ValueCategory = prvalue +# 1984| getQualifier(): [VariableAccess] c +# 1984| Type = [Class] C # 1984| ValueCategory = lvalue -# 1984| getRValue(): [Literal] 40 +# 1984| getArgument(0): [Literal] 10 # 1984| Type = [IntType] int -# 1984| Value = [Literal] 40 +# 1984| Value = [Literal] 10 # 1984| ValueCategory = prvalue -# 1984| getRValue().getFullyConverted(): [ParenthesisExpr] (...) -# 1984| Type = [IntType] int -# 1984| ValueCategory = prvalue(load) -# 1985| getStmt(2): [ReturnStmt] return ... -# 1987| [CopyAssignmentOperator] D& D::operator=(D const&) -# 1987| <params>: +# 1985| getStmt(3): [DeclStmt] declaration +# 1985| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1985| Type = [IntType] int +# 1986| getStmt(4): [ExprStmt] ExprStmt +# 1986| getExpr(): [AssignExpr] ... = ... +# 1986| Type = [IntType] int +# 1986| ValueCategory = lvalue +# 1986| getLValue(): [VariableAccess] y +# 1986| Type = [IntType] int +# 1986| ValueCategory = lvalue +# 1986| getRValue(): [FunctionCall] call to StaticMemberFunction +# 1986| Type = [IntType] int +# 1986| ValueCategory = prvalue +# 1986| getArgument(0): [Literal] 10 +# 1986| Type = [IntType] int +# 1986| Value = [Literal] 10 +# 1986| ValueCategory = prvalue +# 1987| getStmt(5): [DeclStmt] declaration +# 1987| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1987| Type = [IntType] int +# 1988| getStmt(6): [ExprStmt] ExprStmt +# 1988| getExpr(): [AssignExpr] ... = ... +# 1988| Type = [IntType] int +# 1988| ValueCategory = lvalue +# 1988| getLValue(): [VariableAccess] z +# 1988| Type = [IntType] int +# 1988| ValueCategory = lvalue +# 1988| getRValue(): [FunctionCall] call to static_function +# 1988| Type = [IntType] int +# 1988| ValueCategory = prvalue +# 1988| getArgument(0): [Literal] 10 +# 1988| Type = [IntType] int +# 1988| Value = [Literal] 10 +# 1988| ValueCategory = prvalue +# 1989| getStmt(7): [ReturnStmt] return ... +# 1989| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1989| Type = [VoidType] void +# 1989| ValueCategory = prvalue +# 1989| getQualifier(): [VariableAccess] c +# 1989| Type = [Class] C +# 1989| ValueCategory = lvalue +# 1991| [TopLevelFunction] void test_double_assign() +# 1991| <params>: +# 1991| getEntryPoint(): [BlockStmt] { ... } +# 1992| getStmt(0): [DeclStmt] declaration +# 1992| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1992| Type = [IntType] int +# 1992| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1992| Type = [IntType] int +# 1993| getStmt(1): [ExprStmt] ExprStmt +# 1993| getExpr(): [AssignExpr] ... = ... +# 1993| Type = [IntType] int +# 1993| ValueCategory = lvalue +# 1993| getLValue(): [VariableAccess] i +# 1993| Type = [IntType] int +# 1993| ValueCategory = lvalue +# 1993| getRValue(): [AssignExpr] ... = ... +# 1993| Type = [IntType] int +# 1993| ValueCategory = prvalue(load) +# 1993| getLValue(): [VariableAccess] j +# 1993| Type = [IntType] int +# 1993| ValueCategory = lvalue +# 1993| getRValue(): [Literal] 40 +# 1993| Type = [IntType] int +# 1993| Value = [Literal] 40 +# 1993| ValueCategory = prvalue +# 1994| getStmt(2): [ReturnStmt] return ... +# 1996| [TopLevelFunction] void test_assign_with_assign_operation() +# 1996| <params>: +# 1996| getEntryPoint(): [BlockStmt] { ... } +# 1997| getStmt(0): [DeclStmt] declaration +# 1997| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1997| Type = [IntType] int +# 1997| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1997| Type = [IntType] int +# 1997| getVariable().getInitializer(): [Initializer] initializer for j +# 1997| getExpr(): [Literal] 0 +# 1997| Type = [IntType] int +# 1997| Value = [Literal] 0 +# 1997| ValueCategory = prvalue +# 1998| getStmt(1): [ExprStmt] ExprStmt +# 1998| getExpr(): [AssignExpr] ... = ... +# 1998| Type = [IntType] int +# 1998| ValueCategory = lvalue +# 1998| getLValue(): [VariableAccess] i +# 1998| Type = [IntType] int +# 1998| ValueCategory = lvalue +# 1998| getRValue(): [AssignAddExpr] ... += ... +# 1998| Type = [IntType] int +# 1998| ValueCategory = prvalue(load) +# 1998| getLValue(): [VariableAccess] j +# 1998| Type = [IntType] int +# 1998| ValueCategory = lvalue +# 1998| getRValue(): [Literal] 40 +# 1998| Type = [IntType] int +# 1998| Value = [Literal] 40 +# 1998| ValueCategory = prvalue +# 1998| getRValue().getFullyConverted(): [ParenthesisExpr] (...) +# 1998| Type = [IntType] int +# 1998| ValueCategory = prvalue(load) +# 1999| getStmt(2): [ReturnStmt] return ... +# 2001| [CopyAssignmentOperator] D& D::operator=(D const&) +# 2001| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const D & -# 1987| [MoveAssignmentOperator] D& D::operator=(D&&) -# 1987| <params>: +# 2001| [MoveAssignmentOperator] D& D::operator=(D&&) +# 2001| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] D && -# 1991| [MemberFunction] D& D::ReferenceStaticMemberFunction() -# 1991| <params>: -# 1991| getEntryPoint(): [BlockStmt] { ... } -# 1992| getStmt(0): [ReturnStmt] return ... -# 1992| getExpr(): [VariableAccess] x -# 1992| Type = [Class] D -# 1992| ValueCategory = lvalue -# 1992| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1992| Type = [LValueReferenceType] D & -# 1992| ValueCategory = prvalue -# 1994| [MemberFunction] D D::ObjectStaticMemberFunction() -# 1994| <params>: -# 1994| getEntryPoint(): [BlockStmt] { ... } -# 1995| getStmt(0): [ReturnStmt] return ... -# 1995| getExpr(): [VariableAccess] x -# 1995| Type = [Class] D -# 1995| ValueCategory = prvalue(load) -# 1999| [TopLevelFunction] void test_static_member_functions_with_reference_return() -# 1999| <params>: -# 1999| getEntryPoint(): [BlockStmt] { ... } -# 2000| getStmt(0): [DeclStmt] declaration -# 2000| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2000| Type = [Class] D -# 2002| getStmt(1): [ExprStmt] ExprStmt -# 2002| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 2002| Type = [LValueReferenceType] D & -# 2002| ValueCategory = prvalue -# 2002| getQualifier(): [VariableAccess] d -# 2002| Type = [Class] D -# 2002| ValueCategory = lvalue -# 2002| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2002| Type = [Class] D -# 2002| ValueCategory = lvalue -# 2003| getStmt(2): [ExprStmt] ExprStmt -# 2003| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 2003| Type = [LValueReferenceType] D & -# 2003| ValueCategory = prvalue -# 2003| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2003| Type = [Class] D -# 2003| ValueCategory = lvalue -# 2004| getStmt(3): [ExprStmt] ExprStmt -# 2004| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 2004| Type = [Class] D -# 2004| ValueCategory = prvalue -# 2004| getQualifier(): [VariableAccess] d -# 2004| Type = [Class] D -# 2004| ValueCategory = lvalue -# 2005| getStmt(4): [ExprStmt] ExprStmt -# 2005| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 2005| Type = [Class] D -# 2005| ValueCategory = prvalue -# 2007| getStmt(5): [DeclStmt] declaration -# 2007| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2007| Type = [Class] D -# 2008| getStmt(6): [ExprStmt] ExprStmt -# 2008| getExpr(): [AssignExpr] ... = ... -# 2008| Type = [Class] D -# 2008| ValueCategory = lvalue -# 2008| getLValue(): [VariableAccess] x -# 2008| Type = [Class] D -# 2008| ValueCategory = lvalue -# 2008| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction -# 2008| Type = [LValueReferenceType] D & -# 2008| ValueCategory = prvalue -# 2008| getQualifier(): [VariableAccess] d -# 2008| Type = [Class] D -# 2008| ValueCategory = lvalue -# 2008| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2008| Type = [Class] D -# 2008| ValueCategory = prvalue(load) -# 2009| getStmt(7): [DeclStmt] declaration -# 2009| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2005| [MemberFunction] D& D::ReferenceStaticMemberFunction() +# 2005| <params>: +# 2005| getEntryPoint(): [BlockStmt] { ... } +# 2006| getStmt(0): [ReturnStmt] return ... +# 2006| getExpr(): [VariableAccess] x +# 2006| Type = [Class] D +# 2006| ValueCategory = lvalue +# 2006| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2006| Type = [LValueReferenceType] D & +# 2006| ValueCategory = prvalue +# 2008| [MemberFunction] D D::ObjectStaticMemberFunction() +# 2008| <params>: +# 2008| getEntryPoint(): [BlockStmt] { ... } +# 2009| getStmt(0): [ReturnStmt] return ... +# 2009| getExpr(): [VariableAccess] x # 2009| Type = [Class] D -# 2010| getStmt(8): [ExprStmt] ExprStmt -# 2010| getExpr(): [AssignExpr] ... = ... -# 2010| Type = [Class] D -# 2010| ValueCategory = lvalue -# 2010| getLValue(): [VariableAccess] y -# 2010| Type = [Class] D -# 2010| ValueCategory = lvalue -# 2010| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction -# 2010| Type = [LValueReferenceType] D & -# 2010| ValueCategory = prvalue -# 2010| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2010| Type = [Class] D -# 2010| ValueCategory = prvalue(load) -# 2011| getStmt(9): [DeclStmt] declaration -# 2011| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j -# 2011| Type = [Class] D -# 2012| getStmt(10): [ExprStmt] ExprStmt -# 2012| getExpr(): [AssignExpr] ... = ... -# 2012| Type = [Class] D -# 2012| ValueCategory = lvalue -# 2012| getLValue(): [VariableAccess] j -# 2012| Type = [Class] D -# 2012| ValueCategory = lvalue -# 2012| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction -# 2012| Type = [Class] D -# 2012| ValueCategory = prvalue -# 2012| getQualifier(): [VariableAccess] d -# 2012| Type = [Class] D -# 2012| ValueCategory = lvalue -# 2013| getStmt(11): [DeclStmt] declaration -# 2013| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k -# 2013| Type = [Class] D -# 2014| getStmt(12): [ExprStmt] ExprStmt -# 2014| getExpr(): [AssignExpr] ... = ... +# 2009| ValueCategory = prvalue(load) +# 2013| [TopLevelFunction] void test_static_member_functions_with_reference_return() +# 2013| <params>: +# 2013| getEntryPoint(): [BlockStmt] { ... } +# 2014| getStmt(0): [DeclStmt] declaration +# 2014| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 2014| Type = [Class] D -# 2014| ValueCategory = lvalue -# 2014| getLValue(): [VariableAccess] k -# 2014| Type = [Class] D -# 2014| ValueCategory = lvalue -# 2014| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction -# 2014| Type = [Class] D -# 2014| ValueCategory = prvalue -# 2015| getStmt(13): [ReturnStmt] return ... -# 2017| [TopLevelFunction] void test_volatile() -# 2017| <params>: -# 2017| getEntryPoint(): [BlockStmt] { ... } -# 2018| getStmt(0): [DeclStmt] declaration -# 2018| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2018| Type = [SpecifiedType] volatile int -# 2019| getStmt(1): [ExprStmt] ExprStmt -# 2019| getExpr(): [VariableAccess] x -# 2019| Type = [IntType] int -# 2019| ValueCategory = prvalue(load) -# 2020| getStmt(2): [ReturnStmt] return ... -# 2022| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) -# 2022| <params>: +# 2016| getStmt(1): [ExprStmt] ExprStmt +# 2016| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2016| Type = [LValueReferenceType] D & +# 2016| ValueCategory = prvalue +# 2016| getQualifier(): [VariableAccess] d +# 2016| Type = [Class] D +# 2016| ValueCategory = lvalue +# 2016| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2016| Type = [Class] D +# 2016| ValueCategory = lvalue +# 2017| getStmt(2): [ExprStmt] ExprStmt +# 2017| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2017| Type = [LValueReferenceType] D & +# 2017| ValueCategory = prvalue +# 2017| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2017| Type = [Class] D +# 2017| ValueCategory = lvalue +# 2018| getStmt(3): [ExprStmt] ExprStmt +# 2018| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction +# 2018| Type = [Class] D +# 2018| ValueCategory = prvalue +# 2018| getQualifier(): [VariableAccess] d +# 2018| Type = [Class] D +# 2018| ValueCategory = lvalue +# 2019| getStmt(4): [ExprStmt] ExprStmt +# 2019| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction +# 2019| Type = [Class] D +# 2019| ValueCategory = prvalue +# 2021| getStmt(5): [DeclStmt] declaration +# 2021| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2021| Type = [Class] D +# 2022| getStmt(6): [ExprStmt] ExprStmt +# 2022| getExpr(): [AssignExpr] ... = ... +# 2022| Type = [Class] D +# 2022| ValueCategory = lvalue +# 2022| getLValue(): [VariableAccess] x +# 2022| Type = [Class] D +# 2022| ValueCategory = lvalue +# 2022| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2022| Type = [LValueReferenceType] D & +# 2022| ValueCategory = prvalue +# 2022| getQualifier(): [VariableAccess] d +# 2022| Type = [Class] D +# 2022| ValueCategory = lvalue +# 2022| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2022| Type = [Class] D +# 2022| ValueCategory = prvalue(load) +# 2023| getStmt(7): [DeclStmt] declaration +# 2023| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2023| Type = [Class] D +# 2024| getStmt(8): [ExprStmt] ExprStmt +# 2024| getExpr(): [AssignExpr] ... = ... +# 2024| Type = [Class] D +# 2024| ValueCategory = lvalue +# 2024| getLValue(): [VariableAccess] y +# 2024| Type = [Class] D +# 2024| ValueCategory = lvalue +# 2024| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2024| Type = [LValueReferenceType] D & +# 2024| ValueCategory = prvalue +# 2024| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2024| Type = [Class] D +# 2024| ValueCategory = prvalue(load) +# 2025| getStmt(9): [DeclStmt] declaration +# 2025| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j +# 2025| Type = [Class] D +# 2026| getStmt(10): [ExprStmt] ExprStmt +# 2026| getExpr(): [AssignExpr] ... = ... +# 2026| Type = [Class] D +# 2026| ValueCategory = lvalue +# 2026| getLValue(): [VariableAccess] j +# 2026| Type = [Class] D +# 2026| ValueCategory = lvalue +# 2026| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction +# 2026| Type = [Class] D +# 2026| ValueCategory = prvalue +# 2026| getQualifier(): [VariableAccess] d +# 2026| Type = [Class] D +# 2026| ValueCategory = lvalue +# 2027| getStmt(11): [DeclStmt] declaration +# 2027| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k +# 2027| Type = [Class] D +# 2028| getStmt(12): [ExprStmt] ExprStmt +# 2028| getExpr(): [AssignExpr] ... = ... +# 2028| Type = [Class] D +# 2028| ValueCategory = lvalue +# 2028| getLValue(): [VariableAccess] k +# 2028| Type = [Class] D +# 2028| ValueCategory = lvalue +# 2028| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction +# 2028| Type = [Class] D +# 2028| ValueCategory = prvalue +# 2029| getStmt(13): [ReturnStmt] return ... +# 2031| [TopLevelFunction] void test_volatile() +# 2031| <params>: +# 2031| getEntryPoint(): [BlockStmt] { ... } +# 2032| getStmt(0): [DeclStmt] declaration +# 2032| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2032| Type = [SpecifiedType] volatile int +# 2033| getStmt(1): [ExprStmt] ExprStmt +# 2033| getExpr(): [VariableAccess] x +# 2033| Type = [IntType] int +# 2033| ValueCategory = prvalue(load) +# 2034| getStmt(2): [ReturnStmt] return ... +# 2036| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) +# 2036| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ValCat & -# 2022| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) -# 2022| <params>: +# 2036| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) +# 2036| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] ValCat && -# 2023| [MemberFunction] ValCat& ValCat::lvalue() -# 2023| <params>: -# 2024| [MemberFunction] ValCat&& ValCat::xvalue() -# 2024| <params>: -# 2025| [MemberFunction] ValCat ValCat::prvalue() -# 2025| <params>: -# 2028| [TopLevelFunction] void value_category_test() -# 2028| <params>: -# 2028| getEntryPoint(): [BlockStmt] { ... } -# 2029| getStmt(0): [DeclStmt] declaration -# 2029| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2029| Type = [Struct] ValCat -# 2031| getStmt(1): [ExprStmt] ExprStmt -# 2031| getExpr(): [AssignExpr] ... = ... -# 2031| Type = [Struct] ValCat -# 2031| ValueCategory = lvalue -# 2031| getLValue(): [FunctionCall] call to lvalue -# 2031| Type = [LValueReferenceType] ValCat & -# 2031| ValueCategory = prvalue -# 2031| getQualifier(): [VariableAccess] c -# 2031| Type = [Struct] ValCat -# 2031| ValueCategory = lvalue -# 2031| getRValue(): [ClassAggregateLiteral] {...} -# 2031| Type = [Struct] ValCat -# 2031| ValueCategory = prvalue -# 2031| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2031| Type = [Struct] ValCat -# 2031| ValueCategory = lvalue +# 2037| [MemberFunction] ValCat& ValCat::lvalue() +# 2037| <params>: +# 2038| [MemberFunction] ValCat&& ValCat::xvalue() +# 2038| <params>: +# 2039| [MemberFunction] ValCat ValCat::prvalue() +# 2039| <params>: +# 2042| [TopLevelFunction] void value_category_test() +# 2042| <params>: +# 2042| getEntryPoint(): [BlockStmt] { ... } +# 2043| getStmt(0): [DeclStmt] declaration +# 2043| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2043| Type = [Struct] ValCat +# 2045| getStmt(1): [ExprStmt] ExprStmt +# 2045| getExpr(): [AssignExpr] ... = ... +# 2045| Type = [Struct] ValCat +# 2045| ValueCategory = lvalue +# 2045| getLValue(): [FunctionCall] call to lvalue +# 2045| Type = [LValueReferenceType] ValCat & +# 2045| ValueCategory = prvalue +# 2045| getQualifier(): [VariableAccess] c +# 2045| Type = [Struct] ValCat +# 2045| ValueCategory = lvalue +# 2045| getRValue(): [ClassAggregateLiteral] {...} +# 2045| Type = [Struct] ValCat +# 2045| ValueCategory = prvalue +# 2045| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2045| Type = [Struct] ValCat +# 2045| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2032| getStmt(2): [ExprStmt] ExprStmt -# 2032| getExpr(): [AssignExpr] ... = ... -# 2032| Type = [Struct] ValCat -# 2032| ValueCategory = lvalue -# 2032| getLValue(): [FunctionCall] call to xvalue -# 2032| Type = [RValueReferenceType] ValCat && -# 2032| ValueCategory = prvalue -# 2032| getQualifier(): [VariableAccess] c -# 2032| Type = [Struct] ValCat -# 2032| ValueCategory = lvalue -# 2032| getRValue(): [ClassAggregateLiteral] {...} -# 2032| Type = [Struct] ValCat -# 2032| ValueCategory = prvalue -# 2032| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2032| Type = [Struct] ValCat -# 2032| ValueCategory = lvalue +# 2046| getStmt(2): [ExprStmt] ExprStmt +# 2046| getExpr(): [AssignExpr] ... = ... +# 2046| Type = [Struct] ValCat +# 2046| ValueCategory = lvalue +# 2046| getLValue(): [FunctionCall] call to xvalue +# 2046| Type = [RValueReferenceType] ValCat && +# 2046| ValueCategory = prvalue +# 2046| getQualifier(): [VariableAccess] c +# 2046| Type = [Struct] ValCat +# 2046| ValueCategory = lvalue +# 2046| getRValue(): [ClassAggregateLiteral] {...} +# 2046| Type = [Struct] ValCat +# 2046| ValueCategory = prvalue +# 2046| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2046| Type = [Struct] ValCat +# 2046| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2033| getStmt(3): [ExprStmt] ExprStmt -# 2033| getExpr(): [AssignExpr] ... = ... -# 2033| Type = [Struct] ValCat -# 2033| ValueCategory = lvalue -# 2033| getLValue(): [FunctionCall] call to prvalue -# 2033| Type = [Struct] ValCat -# 2033| ValueCategory = prvalue -# 2033| getQualifier(): [VariableAccess] c -# 2033| Type = [Struct] ValCat -# 2033| ValueCategory = lvalue -# 2033| getRValue(): [ClassAggregateLiteral] {...} -# 2033| Type = [Struct] ValCat -# 2033| ValueCategory = prvalue -# 2033| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2033| Type = [Struct] ValCat -# 2033| ValueCategory = lvalue +# 2047| getStmt(3): [ExprStmt] ExprStmt +# 2047| getExpr(): [AssignExpr] ... = ... +# 2047| Type = [Struct] ValCat +# 2047| ValueCategory = lvalue +# 2047| getLValue(): [FunctionCall] call to prvalue +# 2047| Type = [Struct] ValCat +# 2047| ValueCategory = prvalue +# 2047| getQualifier(): [VariableAccess] c +# 2047| Type = [Struct] ValCat +# 2047| ValueCategory = lvalue +# 2047| getRValue(): [ClassAggregateLiteral] {...} +# 2047| Type = [Struct] ValCat +# 2047| ValueCategory = prvalue +# 2047| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2047| Type = [Struct] ValCat +# 2047| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2034| getStmt(4): [ExprStmt] ExprStmt -# 2034| getExpr(): [AssignExpr] ... = ... -# 2034| Type = [Struct] ValCat -# 2034| ValueCategory = lvalue -# 2034| getLValue(): [FunctionCall] call to lvalue -# 2034| Type = [LValueReferenceType] ValCat & -# 2034| ValueCategory = prvalue -# 2034| getRValue(): [ClassAggregateLiteral] {...} -# 2034| Type = [Struct] ValCat -# 2034| ValueCategory = prvalue -# 2034| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2034| Type = [Struct] ValCat -# 2034| ValueCategory = lvalue +# 2048| getStmt(4): [ExprStmt] ExprStmt +# 2048| getExpr(): [AssignExpr] ... = ... +# 2048| Type = [Struct] ValCat +# 2048| ValueCategory = lvalue +# 2048| getLValue(): [FunctionCall] call to lvalue +# 2048| Type = [LValueReferenceType] ValCat & +# 2048| ValueCategory = prvalue +# 2048| getRValue(): [ClassAggregateLiteral] {...} +# 2048| Type = [Struct] ValCat +# 2048| ValueCategory = prvalue +# 2048| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2048| Type = [Struct] ValCat +# 2048| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2035| getStmt(5): [ExprStmt] ExprStmt -# 2035| getExpr(): [AssignExpr] ... = ... -# 2035| Type = [Struct] ValCat -# 2035| ValueCategory = lvalue -# 2035| getLValue(): [FunctionCall] call to xvalue -# 2035| Type = [RValueReferenceType] ValCat && -# 2035| ValueCategory = prvalue -# 2035| getRValue(): [ClassAggregateLiteral] {...} -# 2035| Type = [Struct] ValCat -# 2035| ValueCategory = prvalue -# 2035| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2035| Type = [Struct] ValCat -# 2035| ValueCategory = lvalue +# 2049| getStmt(5): [ExprStmt] ExprStmt +# 2049| getExpr(): [AssignExpr] ... = ... +# 2049| Type = [Struct] ValCat +# 2049| ValueCategory = lvalue +# 2049| getLValue(): [FunctionCall] call to xvalue +# 2049| Type = [RValueReferenceType] ValCat && +# 2049| ValueCategory = prvalue +# 2049| getRValue(): [ClassAggregateLiteral] {...} +# 2049| Type = [Struct] ValCat +# 2049| ValueCategory = prvalue +# 2049| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2049| Type = [Struct] ValCat +# 2049| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2036| getStmt(6): [ExprStmt] ExprStmt -# 2036| getExpr(): [AssignExpr] ... = ... -# 2036| Type = [Struct] ValCat -# 2036| ValueCategory = lvalue -# 2036| getLValue(): [FunctionCall] call to prvalue -# 2036| Type = [Struct] ValCat -# 2036| ValueCategory = prvalue -# 2036| getRValue(): [ClassAggregateLiteral] {...} -# 2036| Type = [Struct] ValCat -# 2036| ValueCategory = prvalue -# 2036| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2036| Type = [Struct] ValCat -# 2036| ValueCategory = lvalue +# 2050| getStmt(6): [ExprStmt] ExprStmt +# 2050| getExpr(): [AssignExpr] ... = ... +# 2050| Type = [Struct] ValCat +# 2050| ValueCategory = lvalue +# 2050| getLValue(): [FunctionCall] call to prvalue +# 2050| Type = [Struct] ValCat +# 2050| ValueCategory = prvalue +# 2050| getRValue(): [ClassAggregateLiteral] {...} +# 2050| Type = [Struct] ValCat +# 2050| ValueCategory = prvalue +# 2050| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2050| Type = [Struct] ValCat +# 2050| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2037| getStmt(7): [ReturnStmt] return ... -# 2039| [TopLevelFunction] void SetStaticFuncPtr() -# 2039| <params>: -# 2039| getEntryPoint(): [BlockStmt] { ... } -# 2040| getStmt(0): [DeclStmt] declaration -# 2040| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2040| Type = [Class] C -# 2040| getVariable().getInitializer(): [Initializer] initializer for c -# 2040| getExpr(): [ConstructorCall] call to C -# 2040| Type = [VoidType] void -# 2040| ValueCategory = prvalue -# 2041| getStmt(1): [DeclStmt] declaration -# 2041| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn -# 2041| Type = [FunctionPointerType] ..(*)(..) -# 2041| getVariable().getInitializer(): [Initializer] initializer for pfn -# 2041| getExpr(): [FunctionAccess] StaticMemberFunction -# 2041| Type = [FunctionPointerType] ..(*)(..) -# 2041| ValueCategory = prvalue(load) -# 2042| getStmt(2): [ExprStmt] ExprStmt -# 2042| getExpr(): [AssignExpr] ... = ... -# 2042| Type = [FunctionPointerType] ..(*)(..) -# 2042| ValueCategory = lvalue -# 2042| getLValue(): [VariableAccess] pfn -# 2042| Type = [FunctionPointerType] ..(*)(..) -# 2042| ValueCategory = lvalue -# 2042| getRValue(): [FunctionAccess] StaticMemberFunction -# 2042| Type = [FunctionPointerType] ..(*)(..) -# 2042| ValueCategory = prvalue(load) -# 2042| getQualifier(): [VariableAccess] c -# 2042| Type = [Class] C -# 2042| ValueCategory = lvalue -# 2043| getStmt(3): [ReturnStmt] return ... -# 2043| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 2043| Type = [VoidType] void -# 2043| ValueCategory = prvalue -# 2043| getQualifier(): [VariableAccess] c -# 2043| Type = [Class] C -# 2043| ValueCategory = lvalue -# 2045| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) -# 2045| <params>: -# 2045| getParameter(0): [Parameter] a -# 2045| Type = [BoolType] bool -# 2045| getParameter(1): [Parameter] x -# 2045| Type = [IntType] int -# 2045| getParameter(2): [Parameter] y -# 2045| Type = [IntType] int -# 2045| getParameter(3): [Parameter] z -# 2045| Type = [IntType] int -# 2045| getEntryPoint(): [BlockStmt] { ... } -# 2046| getStmt(0): [ExprStmt] ExprStmt -# 2046| getExpr(): [AssignExpr] ... = ... -# 2046| Type = [IntType] int -# 2046| ValueCategory = lvalue -# 2046| getLValue(): [VariableAccess] z -# 2046| Type = [IntType] int -# 2046| ValueCategory = lvalue -# 2046| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2046| Type = [IntType] int -# 2046| ValueCategory = prvalue(load) -# 2046| getCondition(): [VariableAccess] a -# 2046| Type = [BoolType] bool -# 2046| ValueCategory = prvalue(load) -# 2046| getThen(): [VariableAccess] x -# 2046| Type = [IntType] int -# 2046| ValueCategory = prvalue(load) -# 2046| getElse(): [VariableAccess] y -# 2046| Type = [IntType] int -# 2046| ValueCategory = prvalue(load) -# 2047| getStmt(1): [ExprStmt] ExprStmt -# 2047| getExpr(): [AssignExpr] ... = ... -# 2047| Type = [IntType] int -# 2047| ValueCategory = lvalue -# 2047| getLValue(): [VariableAccess] z -# 2047| Type = [IntType] int -# 2047| ValueCategory = lvalue -# 2047| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2047| Type = [IntType] int -# 2047| ValueCategory = prvalue(load) -# 2047| getCondition(): [VariableAccess] a -# 2047| Type = [BoolType] bool -# 2047| ValueCategory = prvalue(load) -# 2047| getThen(): [VariableAccess] x -# 2047| Type = [IntType] int -# 2047| ValueCategory = prvalue(load) -# 2047| getElse(): [Literal] 5 -# 2047| Type = [IntType] int -# 2047| Value = [Literal] 5 -# 2047| ValueCategory = prvalue -# 2048| getStmt(2): [ExprStmt] ExprStmt -# 2048| getExpr(): [AssignExpr] ... = ... -# 2048| Type = [IntType] int -# 2048| ValueCategory = lvalue -# 2048| getLValue(): [VariableAccess] z -# 2048| Type = [IntType] int -# 2048| ValueCategory = lvalue -# 2048| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2048| Type = [IntType] int -# 2048| ValueCategory = prvalue -# 2048| getCondition(): [VariableAccess] a -# 2048| Type = [BoolType] bool -# 2048| ValueCategory = prvalue(load) -# 2048| getThen(): [Literal] 3 -# 2048| Type = [IntType] int -# 2048| Value = [Literal] 3 -# 2048| ValueCategory = prvalue -# 2048| getElse(): [Literal] 5 -# 2048| Type = [IntType] int -# 2048| Value = [Literal] 5 -# 2048| ValueCategory = prvalue -# 2049| getStmt(3): [ExprStmt] ExprStmt -# 2049| getExpr(): [AssignExpr] ... = ... -# 2049| Type = [IntType] int -# 2049| ValueCategory = lvalue -# 2049| getLValue(): [ConditionalExpr] ... ? ... : ... -# 2049| Type = [IntType] int -# 2049| ValueCategory = lvalue -# 2049| getCondition(): [VariableAccess] a -# 2049| Type = [BoolType] bool -# 2049| ValueCategory = prvalue(load) -# 2049| getThen(): [VariableAccess] x -# 2049| Type = [IntType] int -# 2049| ValueCategory = lvalue -# 2049| getElse(): [VariableAccess] y -# 2049| Type = [IntType] int -# 2049| ValueCategory = lvalue -# 2049| getRValue(): [Literal] 7 -# 2049| Type = [IntType] int -# 2049| Value = [Literal] 7 -# 2049| ValueCategory = prvalue -# 2049| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2049| Type = [IntType] int -# 2049| ValueCategory = lvalue -# 2050| getStmt(4): [ReturnStmt] return ... -# 2052| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) -# 2052| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const TernaryPodObj & -# 2052| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) -# 2052| <params>: -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] TernaryPodObj && -# 2055| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2055| <params>: -# 2055| getParameter(0): [Parameter] a -# 2055| Type = [BoolType] bool -# 2055| getParameter(1): [Parameter] x -# 2055| Type = [Struct] TernaryPodObj -# 2055| getParameter(2): [Parameter] y -# 2055| Type = [Struct] TernaryPodObj -# 2055| getParameter(3): [Parameter] z -# 2055| Type = [Struct] TernaryPodObj -# 2055| getEntryPoint(): [BlockStmt] { ... } -# 2056| getStmt(0): [ExprStmt] ExprStmt +# 2051| getStmt(7): [ReturnStmt] return ... +# 2053| [TopLevelFunction] void SetStaticFuncPtr() +# 2053| <params>: +# 2053| getEntryPoint(): [BlockStmt] { ... } +# 2054| getStmt(0): [DeclStmt] declaration +# 2054| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2054| Type = [Class] C +# 2054| getVariable().getInitializer(): [Initializer] initializer for c +# 2054| getExpr(): [ConstructorCall] call to C +# 2054| Type = [VoidType] void +# 2054| ValueCategory = prvalue +# 2055| getStmt(1): [DeclStmt] declaration +# 2055| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn +# 2055| Type = [FunctionPointerType] ..(*)(..) +# 2055| getVariable().getInitializer(): [Initializer] initializer for pfn +# 2055| getExpr(): [FunctionAccess] StaticMemberFunction +# 2055| Type = [FunctionPointerType] ..(*)(..) +# 2055| ValueCategory = prvalue(load) +# 2056| getStmt(2): [ExprStmt] ExprStmt # 2056| getExpr(): [AssignExpr] ... = ... -# 2056| Type = [Struct] TernaryPodObj +# 2056| Type = [FunctionPointerType] ..(*)(..) # 2056| ValueCategory = lvalue -# 2056| getLValue(): [VariableAccess] z -# 2056| Type = [Struct] TernaryPodObj +# 2056| getLValue(): [VariableAccess] pfn +# 2056| Type = [FunctionPointerType] ..(*)(..) # 2056| ValueCategory = lvalue -# 2056| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2056| Type = [Struct] TernaryPodObj +# 2056| getRValue(): [FunctionAccess] StaticMemberFunction +# 2056| Type = [FunctionPointerType] ..(*)(..) # 2056| ValueCategory = prvalue(load) -# 2056| getCondition(): [VariableAccess] a -# 2056| Type = [BoolType] bool -# 2056| ValueCategory = prvalue(load) -# 2056| getThen(): [VariableAccess] x -# 2056| Type = [Struct] TernaryPodObj -# 2056| ValueCategory = prvalue(load) -# 2056| getElse(): [VariableAccess] y -# 2056| Type = [Struct] TernaryPodObj -# 2056| ValueCategory = prvalue(load) -# 2057| getStmt(1): [ExprStmt] ExprStmt -# 2057| getExpr(): [AssignExpr] ... = ... -# 2057| Type = [Struct] TernaryPodObj -# 2057| ValueCategory = lvalue -# 2057| getLValue(): [VariableAccess] z -# 2057| Type = [Struct] TernaryPodObj +# 2056| getQualifier(): [VariableAccess] c +# 2056| Type = [Class] C +# 2056| ValueCategory = lvalue +# 2057| getStmt(3): [ReturnStmt] return ... +# 2057| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 2057| Type = [VoidType] void +# 2057| ValueCategory = prvalue +# 2057| getQualifier(): [VariableAccess] c +# 2057| Type = [Class] C # 2057| ValueCategory = lvalue -# 2057| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2057| Type = [Struct] TernaryPodObj -# 2057| ValueCategory = prvalue -# 2057| getCondition(): [VariableAccess] a -# 2057| Type = [BoolType] bool -# 2057| ValueCategory = prvalue(load) -# 2057| getThen(): [VariableAccess] x -# 2057| Type = [Struct] TernaryPodObj -# 2057| ValueCategory = prvalue(load) -# 2057| getElse(): [Literal] 0 -# 2057| Type = [Struct] TernaryPodObj -# 2057| Value = [Literal] 0 -# 2057| ValueCategory = prvalue -# 2057| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2057| Type = [Struct] TernaryPodObj -# 2057| ValueCategory = prvalue(load) -# 2057| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2057| Type = [Struct] TernaryPodObj -# 2057| ValueCategory = prvalue(load) -# 2057| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2057| Type = [Struct] TernaryPodObj -# 2057| ValueCategory = prvalue(load) -# 2058| getStmt(2): [ExprStmt] ExprStmt -# 2058| getExpr(): [AssignExpr] ... = ... -# 2058| Type = [Struct] TernaryPodObj -# 2058| ValueCategory = lvalue -# 2058| getLValue(): [VariableAccess] z -# 2058| Type = [Struct] TernaryPodObj -# 2058| ValueCategory = lvalue -# 2058| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2058| Type = [Struct] TernaryPodObj -# 2058| ValueCategory = prvalue -# 2058| getCondition(): [VariableAccess] a -# 2058| Type = [BoolType] bool -# 2058| ValueCategory = prvalue(load) -# 2058| getThen(): [Literal] 0 -# 2058| Type = [Struct] TernaryPodObj -# 2058| Value = [Literal] 0 -# 2058| ValueCategory = prvalue -# 2058| getElse(): [Literal] 0 -# 2058| Type = [Struct] TernaryPodObj -# 2058| Value = [Literal] 0 -# 2058| ValueCategory = prvalue -# 2058| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2058| Type = [Struct] TernaryPodObj -# 2058| ValueCategory = prvalue(load) -# 2058| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2058| Type = [Struct] TernaryPodObj -# 2058| ValueCategory = prvalue(load) -# 2058| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2058| Type = [Struct] TernaryPodObj -# 2058| ValueCategory = prvalue(load) -# 2059| getStmt(3): [ExprStmt] ExprStmt -# 2059| getExpr(): [AssignExpr] ... = ... -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = lvalue -# 2059| getLValue(): [AssignExpr] ... = ... -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = lvalue -# 2059| getLValue(): [VariableAccess] z -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = lvalue -# 2059| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = prvalue(load) -# 2059| getCondition(): [VariableAccess] a -# 2059| Type = [BoolType] bool -# 2059| ValueCategory = prvalue(load) -# 2059| getThen(): [VariableAccess] x -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = prvalue(load) -# 2059| getElse(): [VariableAccess] y -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = prvalue(load) -# 2059| getRValue(): [Literal] 0 -# 2059| Type = [Struct] TernaryPodObj -# 2059| Value = [Literal] 0 -# 2059| ValueCategory = prvalue -# 2059| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = lvalue -# 2059| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2059| Type = [Struct] TernaryPodObj -# 2059| ValueCategory = prvalue(load) -# 2060| getStmt(4): [ReturnStmt] return ... -# 2062| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2062| <params>: +# 2059| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) +# 2059| <params>: +# 2059| getParameter(0): [Parameter] a +# 2059| Type = [BoolType] bool +# 2059| getParameter(1): [Parameter] x +# 2059| Type = [IntType] int +# 2059| getParameter(2): [Parameter] y +# 2059| Type = [IntType] int +# 2059| getParameter(3): [Parameter] z +# 2059| Type = [IntType] int +# 2059| getEntryPoint(): [BlockStmt] { ... } +# 2060| getStmt(0): [ExprStmt] ExprStmt +# 2060| getExpr(): [AssignExpr] ... = ... +# 2060| Type = [IntType] int +# 2060| ValueCategory = lvalue +# 2060| getLValue(): [VariableAccess] z +# 2060| Type = [IntType] int +# 2060| ValueCategory = lvalue +# 2060| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2060| Type = [IntType] int +# 2060| ValueCategory = prvalue(load) +# 2060| getCondition(): [VariableAccess] a +# 2060| Type = [BoolType] bool +# 2060| ValueCategory = prvalue(load) +# 2060| getThen(): [VariableAccess] x +# 2060| Type = [IntType] int +# 2060| ValueCategory = prvalue(load) +# 2060| getElse(): [VariableAccess] y +# 2060| Type = [IntType] int +# 2060| ValueCategory = prvalue(load) +# 2061| getStmt(1): [ExprStmt] ExprStmt +# 2061| getExpr(): [AssignExpr] ... = ... +# 2061| Type = [IntType] int +# 2061| ValueCategory = lvalue +# 2061| getLValue(): [VariableAccess] z +# 2061| Type = [IntType] int +# 2061| ValueCategory = lvalue +# 2061| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2061| Type = [IntType] int +# 2061| ValueCategory = prvalue(load) +# 2061| getCondition(): [VariableAccess] a +# 2061| Type = [BoolType] bool +# 2061| ValueCategory = prvalue(load) +# 2061| getThen(): [VariableAccess] x +# 2061| Type = [IntType] int +# 2061| ValueCategory = prvalue(load) +# 2061| getElse(): [Literal] 5 +# 2061| Type = [IntType] int +# 2061| Value = [Literal] 5 +# 2061| ValueCategory = prvalue +# 2062| getStmt(2): [ExprStmt] ExprStmt +# 2062| getExpr(): [AssignExpr] ... = ... +# 2062| Type = [IntType] int +# 2062| ValueCategory = lvalue +# 2062| getLValue(): [VariableAccess] z +# 2062| Type = [IntType] int +# 2062| ValueCategory = lvalue +# 2062| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2062| Type = [IntType] int +# 2062| ValueCategory = prvalue +# 2062| getCondition(): [VariableAccess] a +# 2062| Type = [BoolType] bool +# 2062| ValueCategory = prvalue(load) +# 2062| getThen(): [Literal] 3 +# 2062| Type = [IntType] int +# 2062| Value = [Literal] 3 +# 2062| ValueCategory = prvalue +# 2062| getElse(): [Literal] 5 +# 2062| Type = [IntType] int +# 2062| Value = [Literal] 5 +# 2062| ValueCategory = prvalue +# 2063| getStmt(3): [ExprStmt] ExprStmt +# 2063| getExpr(): [AssignExpr] ... = ... +# 2063| Type = [IntType] int +# 2063| ValueCategory = lvalue +# 2063| getLValue(): [ConditionalExpr] ... ? ... : ... +# 2063| Type = [IntType] int +# 2063| ValueCategory = lvalue +# 2063| getCondition(): [VariableAccess] a +# 2063| Type = [BoolType] bool +# 2063| ValueCategory = prvalue(load) +# 2063| getThen(): [VariableAccess] x +# 2063| Type = [IntType] int +# 2063| ValueCategory = lvalue +# 2063| getElse(): [VariableAccess] y +# 2063| Type = [IntType] int +# 2063| ValueCategory = lvalue +# 2063| getRValue(): [Literal] 7 +# 2063| Type = [IntType] int +# 2063| Value = [Literal] 7 +# 2063| ValueCategory = prvalue +# 2063| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2063| Type = [IntType] int +# 2063| ValueCategory = lvalue +# 2064| getStmt(4): [ReturnStmt] return ... +# 2066| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) +# 2066| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const TernaryPodObj & +# 2066| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) +# 2066| <params>: +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] TernaryPodObj && +# 2069| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2069| <params>: +# 2069| getParameter(0): [Parameter] a +# 2069| Type = [BoolType] bool +# 2069| getParameter(1): [Parameter] x +# 2069| Type = [Struct] TernaryPodObj +# 2069| getParameter(2): [Parameter] y +# 2069| Type = [Struct] TernaryPodObj +# 2069| getParameter(3): [Parameter] z +# 2069| Type = [Struct] TernaryPodObj +# 2069| getEntryPoint(): [BlockStmt] { ... } +# 2070| getStmt(0): [ExprStmt] ExprStmt +# 2070| getExpr(): [AssignExpr] ... = ... +# 2070| Type = [Struct] TernaryPodObj +# 2070| ValueCategory = lvalue +# 2070| getLValue(): [VariableAccess] z +# 2070| Type = [Struct] TernaryPodObj +# 2070| ValueCategory = lvalue +# 2070| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2070| Type = [Struct] TernaryPodObj +# 2070| ValueCategory = prvalue(load) +# 2070| getCondition(): [VariableAccess] a +# 2070| Type = [BoolType] bool +# 2070| ValueCategory = prvalue(load) +# 2070| getThen(): [VariableAccess] x +# 2070| Type = [Struct] TernaryPodObj +# 2070| ValueCategory = prvalue(load) +# 2070| getElse(): [VariableAccess] y +# 2070| Type = [Struct] TernaryPodObj +# 2070| ValueCategory = prvalue(load) +# 2071| getStmt(1): [ExprStmt] ExprStmt +# 2071| getExpr(): [AssignExpr] ... = ... +# 2071| Type = [Struct] TernaryPodObj +# 2071| ValueCategory = lvalue +# 2071| getLValue(): [VariableAccess] z +# 2071| Type = [Struct] TernaryPodObj +# 2071| ValueCategory = lvalue +# 2071| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2071| Type = [Struct] TernaryPodObj +# 2071| ValueCategory = prvalue +# 2071| getCondition(): [VariableAccess] a +# 2071| Type = [BoolType] bool +# 2071| ValueCategory = prvalue(load) +# 2071| getThen(): [VariableAccess] x +# 2071| Type = [Struct] TernaryPodObj +# 2071| ValueCategory = prvalue(load) +# 2071| getElse(): [Literal] 0 +# 2071| Type = [Struct] TernaryPodObj +# 2071| Value = [Literal] 0 +# 2071| ValueCategory = prvalue +# 2071| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2071| Type = [Struct] TernaryPodObj +# 2071| ValueCategory = prvalue(load) +# 2071| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2071| Type = [Struct] TernaryPodObj +# 2071| ValueCategory = prvalue(load) +# 2071| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2071| Type = [Struct] TernaryPodObj +# 2071| ValueCategory = prvalue(load) +# 2072| getStmt(2): [ExprStmt] ExprStmt +# 2072| getExpr(): [AssignExpr] ... = ... +# 2072| Type = [Struct] TernaryPodObj +# 2072| ValueCategory = lvalue +# 2072| getLValue(): [VariableAccess] z +# 2072| Type = [Struct] TernaryPodObj +# 2072| ValueCategory = lvalue +# 2072| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2072| Type = [Struct] TernaryPodObj +# 2072| ValueCategory = prvalue +# 2072| getCondition(): [VariableAccess] a +# 2072| Type = [BoolType] bool +# 2072| ValueCategory = prvalue(load) +# 2072| getThen(): [Literal] 0 +# 2072| Type = [Struct] TernaryPodObj +# 2072| Value = [Literal] 0 +# 2072| ValueCategory = prvalue +# 2072| getElse(): [Literal] 0 +# 2072| Type = [Struct] TernaryPodObj +# 2072| Value = [Literal] 0 +# 2072| ValueCategory = prvalue +# 2072| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2072| Type = [Struct] TernaryPodObj +# 2072| ValueCategory = prvalue(load) +# 2072| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2072| Type = [Struct] TernaryPodObj +# 2072| ValueCategory = prvalue(load) +# 2072| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2072| Type = [Struct] TernaryPodObj +# 2072| ValueCategory = prvalue(load) +# 2073| getStmt(3): [ExprStmt] ExprStmt +# 2073| getExpr(): [AssignExpr] ... = ... +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = lvalue +# 2073| getLValue(): [AssignExpr] ... = ... +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = lvalue +# 2073| getLValue(): [VariableAccess] z +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = lvalue +# 2073| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = prvalue(load) +# 2073| getCondition(): [VariableAccess] a +# 2073| Type = [BoolType] bool +# 2073| ValueCategory = prvalue(load) +# 2073| getThen(): [VariableAccess] x +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = prvalue(load) +# 2073| getElse(): [VariableAccess] y +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = prvalue(load) +# 2073| getRValue(): [Literal] 0 +# 2073| Type = [Struct] TernaryPodObj +# 2073| Value = [Literal] 0 +# 2073| ValueCategory = prvalue +# 2073| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = lvalue +# 2073| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = prvalue(load) +# 2074| getStmt(4): [ReturnStmt] return ... +# 2076| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2076| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & #-----| getEntryPoint(): [BlockStmt] { ... } @@ -16397,1016 +16445,1016 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] TernaryNonPodObj & #-----| ValueCategory = prvalue -# 2062| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() -# 2062| <params>: -# 2062| <initializations>: -# 2062| getEntryPoint(): [BlockStmt] { ... } -# 2062| getStmt(0): [ReturnStmt] return ... -# 2062| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2062| <params>: +# 2076| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() +# 2076| <params>: +# 2076| <initializations>: +# 2076| getEntryPoint(): [BlockStmt] { ... } +# 2076| getStmt(0): [ReturnStmt] return ... +# 2076| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2076| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2062| <initializations>: -# 2062| getEntryPoint(): [BlockStmt] { ... } -# 2062| getStmt(0): [ReturnStmt] return ... -# 2063| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() -# 2063| <params>: -# 2063| getEntryPoint(): [BlockStmt] { ... } -# 2063| getStmt(0): [ReturnStmt] return ... -# 2063| <destructions>: -# 2066| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2066| <params>: -# 2066| getParameter(0): [Parameter] a -# 2066| Type = [BoolType] bool -# 2066| getParameter(1): [Parameter] x -# 2066| Type = [Struct] TernaryNonPodObj -# 2066| getParameter(2): [Parameter] y -# 2066| Type = [Struct] TernaryNonPodObj -# 2066| getParameter(3): [Parameter] z -# 2066| Type = [Struct] TernaryNonPodObj -# 2066| getEntryPoint(): [BlockStmt] { ... } -# 2067| getStmt(0): [ExprStmt] ExprStmt -# 2067| getExpr(): [FunctionCall] call to operator= -# 2067| Type = [LValueReferenceType] TernaryNonPodObj & -# 2067| ValueCategory = prvalue -# 2067| getQualifier(): [VariableAccess] z -# 2067| Type = [Struct] TernaryNonPodObj -# 2067| ValueCategory = lvalue -# 2067| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2067| Type = [Struct] TernaryNonPodObj -# 2067| ValueCategory = lvalue -# 2067| getCondition(): [VariableAccess] a -# 2067| Type = [BoolType] bool -# 2067| ValueCategory = prvalue(load) -# 2067| getThen(): [VariableAccess] x -# 2067| Type = [Struct] TernaryNonPodObj -# 2067| ValueCategory = lvalue -# 2067| getElse(): [VariableAccess] y -# 2067| Type = [Struct] TernaryNonPodObj -# 2067| ValueCategory = lvalue -# 2067| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2067| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2067| ValueCategory = prvalue -# 2067| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2067| Conversion = [GlvalueConversion] glvalue conversion -# 2067| Type = [SpecifiedType] const TernaryNonPodObj -# 2067| ValueCategory = lvalue -# 2067| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2067| Type = [Struct] TernaryNonPodObj -# 2067| ValueCategory = lvalue -# 2068| getStmt(1): [ExprStmt] ExprStmt -# 2068| getExpr(): [FunctionCall] call to operator= -# 2068| Type = [LValueReferenceType] TernaryNonPodObj & -# 2068| ValueCategory = prvalue -# 2068| getQualifier(): [VariableAccess] z -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = lvalue -# 2068| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = prvalue -# 2068| getCondition(): [VariableAccess] a -# 2068| Type = [BoolType] bool -# 2068| ValueCategory = prvalue(load) -# 2068| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2068| Type = [VoidType] void -# 2068| ValueCategory = prvalue -# 2068| getArgument(0): [VariableAccess] x -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = lvalue -# 2068| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2068| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2068| ValueCategory = prvalue -# 2068| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2068| Conversion = [GlvalueConversion] glvalue conversion -# 2068| Type = [SpecifiedType] const TernaryNonPodObj -# 2068| ValueCategory = lvalue -# 2068| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2068| Type = [VoidType] void -# 2068| ValueCategory = prvalue -# 2068| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = prvalue(load) -# 2068| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = prvalue(load) -# 2068| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj -# 2068| Type = [VoidType] void -# 2068| ValueCategory = prvalue -# 2068| getQualifier(): [ReuseExpr] reuse of temporary object -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = xvalue -# 2068| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2068| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2068| ValueCategory = prvalue -# 2068| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2068| Conversion = [GlvalueConversion] glvalue conversion -# 2068| Type = [SpecifiedType] const TernaryNonPodObj -# 2068| ValueCategory = lvalue -# 2068| getExpr(): [TemporaryObjectExpr] temporary object -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = lvalue -# 2068| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2068| Type = [Struct] TernaryNonPodObj -# 2068| ValueCategory = lvalue -# 2069| getStmt(2): [ExprStmt] ExprStmt -# 2069| getExpr(): [FunctionCall] call to operator= -# 2069| Type = [LValueReferenceType] TernaryNonPodObj & -# 2069| ValueCategory = prvalue -# 2069| getQualifier(): [VariableAccess] z -# 2069| Type = [Struct] TernaryNonPodObj -# 2069| ValueCategory = lvalue -# 2069| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2069| Type = [Struct] TernaryNonPodObj -# 2069| ValueCategory = prvalue -# 2069| getCondition(): [VariableAccess] a -# 2069| Type = [BoolType] bool -# 2069| ValueCategory = prvalue(load) -# 2069| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2069| Type = [VoidType] void -# 2069| ValueCategory = prvalue -# 2069| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2069| Type = [VoidType] void -# 2069| ValueCategory = prvalue -# 2069| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2069| Type = [Struct] TernaryNonPodObj -# 2069| ValueCategory = prvalue(load) -# 2069| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2069| Type = [Struct] TernaryNonPodObj -# 2069| ValueCategory = prvalue(load) -# 2069| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj -# 2069| Type = [VoidType] void -# 2069| ValueCategory = prvalue -# 2069| getQualifier(): [ReuseExpr] reuse of temporary object -# 2069| Type = [Struct] TernaryNonPodObj -# 2069| ValueCategory = xvalue -# 2069| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2069| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2069| ValueCategory = prvalue -# 2069| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2069| Conversion = [GlvalueConversion] glvalue conversion -# 2069| Type = [SpecifiedType] const TernaryNonPodObj -# 2069| ValueCategory = lvalue -# 2069| getExpr(): [TemporaryObjectExpr] temporary object -# 2069| Type = [Struct] TernaryNonPodObj -# 2069| ValueCategory = lvalue -# 2069| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2069| Type = [Struct] TernaryNonPodObj -# 2069| ValueCategory = lvalue -# 2070| getStmt(3): [ExprStmt] ExprStmt -# 2070| getExpr(): [FunctionCall] call to operator= -# 2070| Type = [LValueReferenceType] TernaryNonPodObj & -# 2070| ValueCategory = prvalue -# 2070| getQualifier(): [FunctionCall] call to operator= -# 2070| Type = [LValueReferenceType] TernaryNonPodObj & -# 2070| ValueCategory = prvalue -# 2070| getQualifier(): [VariableAccess] z -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getCondition(): [VariableAccess] a -# 2070| Type = [BoolType] bool -# 2070| ValueCategory = prvalue(load) -# 2070| getThen(): [VariableAccess] x -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getElse(): [VariableAccess] y -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2070| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2070| ValueCategory = prvalue -# 2070| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2070| Conversion = [GlvalueConversion] glvalue conversion -# 2070| Type = [SpecifiedType] const TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getArgument(0): [ConstructorCall] call to TernaryNonPodObj -# 2070| Type = [VoidType] void -# 2070| ValueCategory = prvalue -# 2070| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj -# 2070| Type = [VoidType] void -# 2070| ValueCategory = prvalue -# 2070| getQualifier(): [ReuseExpr] reuse of temporary object -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = xvalue -# 2070| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2070| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2070| ValueCategory = prvalue -# 2070| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2070| Conversion = [GlvalueConversion] glvalue conversion -# 2070| Type = [SpecifiedType] const TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getExpr(): [TemporaryObjectExpr] temporary object -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2070| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2070| Type = [Struct] TernaryNonPodObj -# 2070| ValueCategory = lvalue -# 2071| getStmt(4): [ReturnStmt] return ... -# 2073| [TopLevelFunction] void CommaTestHelper(unsigned int) -# 2073| <params>: -# 2073| getParameter(0): [Parameter] (unnamed parameter 0) -# 2073| Type = [IntType] unsigned int -# 2075| [TopLevelFunction] unsigned int CommaTest(unsigned int) -# 2075| <params>: -# 2075| getParameter(0): [Parameter] x -# 2075| Type = [IntType] unsigned int -# 2075| getEntryPoint(): [BlockStmt] { ... } -# 2076| getStmt(0): [DeclStmt] declaration -# 2076| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2076| Type = [IntType] unsigned int -# 2077| getStmt(1): [ExprStmt] ExprStmt -# 2077| getExpr(): [AssignExpr] ... = ... -# 2077| Type = [IntType] unsigned int -# 2077| ValueCategory = lvalue -# 2077| getLValue(): [VariableAccess] y -# 2077| Type = [IntType] unsigned int -# 2077| ValueCategory = lvalue -# 2077| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2077| Type = [IntType] unsigned int -# 2077| ValueCategory = prvalue(load) -# 2077| getCondition(): [LTExpr] ... < ... -# 2077| Type = [BoolType] bool -# 2077| ValueCategory = prvalue -# 2077| getLesserOperand(): [VariableAccess] x -# 2077| Type = [IntType] unsigned int -# 2077| ValueCategory = prvalue(load) -# 2077| getGreaterOperand(): [Literal] 100 -# 2077| Type = [IntType] int -# 2077| Value = [Literal] 100 -# 2077| ValueCategory = prvalue -# 2077| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2077| Conversion = [IntegralConversion] integral conversion -# 2077| Type = [IntType] unsigned int -# 2077| Value = [CStyleCast] 100 -# 2077| ValueCategory = prvalue -# 2078| getThen(): [CommaExpr] ... , ... -# 2078| Type = [IntType] unsigned int -# 2078| ValueCategory = prvalue(load) -# 2078| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2078| Type = [VoidType] void -# 2078| ValueCategory = prvalue -# 2078| getArgument(0): [VariableAccess] x -# 2078| Type = [IntType] unsigned int -# 2078| ValueCategory = prvalue(load) -# 2078| getRightOperand(): [VariableAccess] x -# 2078| Type = [IntType] unsigned int -# 2078| ValueCategory = prvalue(load) -# 2079| getElse(): [CommaExpr] ... , ... -# 2079| Type = [IntType] int -# 2079| ValueCategory = prvalue -# 2079| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2079| Type = [VoidType] void -# 2079| ValueCategory = prvalue -# 2079| getArgument(0): [VariableAccess] x -# 2079| Type = [IntType] unsigned int -# 2079| ValueCategory = prvalue(load) -# 2079| getRightOperand(): [Literal] 10 -# 2079| Type = [IntType] int -# 2079| Value = [Literal] 10 -# 2079| ValueCategory = prvalue -# 2078| getThen().getFullyConverted(): [ParenthesisExpr] (...) -# 2078| Type = [IntType] unsigned int -# 2078| ValueCategory = prvalue(load) -# 2079| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2079| Conversion = [IntegralConversion] integral conversion -# 2079| Type = [IntType] unsigned int -# 2079| ValueCategory = prvalue -# 2079| getExpr(): [ParenthesisExpr] (...) -# 2079| Type = [IntType] int -# 2079| ValueCategory = prvalue -# 2080| getStmt(2): [ReturnStmt] return ... -# 2082| [TopLevelFunction] void NewDeleteMem() -# 2082| <params>: -# 2082| getEntryPoint(): [BlockStmt] { ... } -# 2083| getStmt(0): [DeclStmt] declaration -# 2083| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2083| Type = [IntPointerType] int * -# 2083| getVariable().getInitializer(): [Initializer] initializer for x -# 2083| getExpr(): [NewExpr] new -# 2083| Type = [IntPointerType] int * +# 2076| <initializations>: +# 2076| getEntryPoint(): [BlockStmt] { ... } +# 2076| getStmt(0): [ReturnStmt] return ... +# 2077| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() +# 2077| <params>: +# 2077| getEntryPoint(): [BlockStmt] { ... } +# 2077| getStmt(0): [ReturnStmt] return ... +# 2077| <destructions>: +# 2080| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2080| <params>: +# 2080| getParameter(0): [Parameter] a +# 2080| Type = [BoolType] bool +# 2080| getParameter(1): [Parameter] x +# 2080| Type = [Struct] TernaryNonPodObj +# 2080| getParameter(2): [Parameter] y +# 2080| Type = [Struct] TernaryNonPodObj +# 2080| getParameter(3): [Parameter] z +# 2080| Type = [Struct] TernaryNonPodObj +# 2080| getEntryPoint(): [BlockStmt] { ... } +# 2081| getStmt(0): [ExprStmt] ExprStmt +# 2081| getExpr(): [FunctionCall] call to operator= +# 2081| Type = [LValueReferenceType] TernaryNonPodObj & +# 2081| ValueCategory = prvalue +# 2081| getQualifier(): [VariableAccess] z +# 2081| Type = [Struct] TernaryNonPodObj +# 2081| ValueCategory = lvalue +# 2081| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2081| Type = [Struct] TernaryNonPodObj +# 2081| ValueCategory = lvalue +# 2081| getCondition(): [VariableAccess] a +# 2081| Type = [BoolType] bool +# 2081| ValueCategory = prvalue(load) +# 2081| getThen(): [VariableAccess] x +# 2081| Type = [Struct] TernaryNonPodObj +# 2081| ValueCategory = lvalue +# 2081| getElse(): [VariableAccess] y +# 2081| Type = [Struct] TernaryNonPodObj +# 2081| ValueCategory = lvalue +# 2081| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2081| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2081| ValueCategory = prvalue +# 2081| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2081| Conversion = [GlvalueConversion] glvalue conversion +# 2081| Type = [SpecifiedType] const TernaryNonPodObj +# 2081| ValueCategory = lvalue +# 2081| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2081| Type = [Struct] TernaryNonPodObj +# 2081| ValueCategory = lvalue +# 2082| getStmt(1): [ExprStmt] ExprStmt +# 2082| getExpr(): [FunctionCall] call to operator= +# 2082| Type = [LValueReferenceType] TernaryNonPodObj & +# 2082| ValueCategory = prvalue +# 2082| getQualifier(): [VariableAccess] z +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = lvalue +# 2082| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = prvalue +# 2082| getCondition(): [VariableAccess] a +# 2082| Type = [BoolType] bool +# 2082| ValueCategory = prvalue(load) +# 2082| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2082| Type = [VoidType] void +# 2082| ValueCategory = prvalue +# 2082| getArgument(0): [VariableAccess] x +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = lvalue +# 2082| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2082| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2082| ValueCategory = prvalue +# 2082| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2082| Conversion = [GlvalueConversion] glvalue conversion +# 2082| Type = [SpecifiedType] const TernaryNonPodObj +# 2082| ValueCategory = lvalue +# 2082| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2082| Type = [VoidType] void +# 2082| ValueCategory = prvalue +# 2082| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = prvalue(load) +# 2082| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = prvalue(load) +# 2082| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2082| Type = [VoidType] void +# 2082| ValueCategory = prvalue +# 2082| getQualifier(): [ReuseExpr] reuse of temporary object +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = xvalue +# 2082| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2082| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2082| ValueCategory = prvalue +# 2082| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2082| Conversion = [GlvalueConversion] glvalue conversion +# 2082| Type = [SpecifiedType] const TernaryNonPodObj +# 2082| ValueCategory = lvalue +# 2082| getExpr(): [TemporaryObjectExpr] temporary object +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = lvalue +# 2082| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| ValueCategory = lvalue +# 2083| getStmt(2): [ExprStmt] ExprStmt +# 2083| getExpr(): [FunctionCall] call to operator= +# 2083| Type = [LValueReferenceType] TernaryNonPodObj & +# 2083| ValueCategory = prvalue +# 2083| getQualifier(): [VariableAccess] z +# 2083| Type = [Struct] TernaryNonPodObj +# 2083| ValueCategory = lvalue +# 2083| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2083| Type = [Struct] TernaryNonPodObj +# 2083| ValueCategory = prvalue +# 2083| getCondition(): [VariableAccess] a +# 2083| Type = [BoolType] bool +# 2083| ValueCategory = prvalue(load) +# 2083| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2083| Type = [VoidType] void # 2083| ValueCategory = prvalue -# 2084| getStmt(1): [ExprStmt] ExprStmt -# 2084| getExpr(): [AssignExpr] ... = ... -# 2084| Type = [IntType] int -# 2084| ValueCategory = lvalue -# 2084| getLValue(): [PointerDereferenceExpr] * ... -# 2084| Type = [IntType] int +# 2083| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2083| Type = [VoidType] void +# 2083| ValueCategory = prvalue +# 2083| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2083| Type = [Struct] TernaryNonPodObj +# 2083| ValueCategory = prvalue(load) +# 2083| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2083| Type = [Struct] TernaryNonPodObj +# 2083| ValueCategory = prvalue(load) +# 2083| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2083| Type = [VoidType] void +# 2083| ValueCategory = prvalue +# 2083| getQualifier(): [ReuseExpr] reuse of temporary object +# 2083| Type = [Struct] TernaryNonPodObj +# 2083| ValueCategory = xvalue +# 2083| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2083| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2083| ValueCategory = prvalue +# 2083| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2083| Conversion = [GlvalueConversion] glvalue conversion +# 2083| Type = [SpecifiedType] const TernaryNonPodObj +# 2083| ValueCategory = lvalue +# 2083| getExpr(): [TemporaryObjectExpr] temporary object +# 2083| Type = [Struct] TernaryNonPodObj +# 2083| ValueCategory = lvalue +# 2083| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2083| Type = [Struct] TernaryNonPodObj +# 2083| ValueCategory = lvalue +# 2084| getStmt(3): [ExprStmt] ExprStmt +# 2084| getExpr(): [FunctionCall] call to operator= +# 2084| Type = [LValueReferenceType] TernaryNonPodObj & +# 2084| ValueCategory = prvalue +# 2084| getQualifier(): [FunctionCall] call to operator= +# 2084| Type = [LValueReferenceType] TernaryNonPodObj & +# 2084| ValueCategory = prvalue +# 2084| getQualifier(): [VariableAccess] z +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getCondition(): [VariableAccess] a +# 2084| Type = [BoolType] bool +# 2084| ValueCategory = prvalue(load) +# 2084| getThen(): [VariableAccess] x +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getElse(): [VariableAccess] y +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2084| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2084| ValueCategory = prvalue +# 2084| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2084| Conversion = [GlvalueConversion] glvalue conversion +# 2084| Type = [SpecifiedType] const TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getArgument(0): [ConstructorCall] call to TernaryNonPodObj +# 2084| Type = [VoidType] void +# 2084| ValueCategory = prvalue +# 2084| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2084| Type = [VoidType] void +# 2084| ValueCategory = prvalue +# 2084| getQualifier(): [ReuseExpr] reuse of temporary object +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = xvalue +# 2084| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 2084| Type = [Struct] TernaryNonPodObj # 2084| ValueCategory = lvalue -# 2084| getOperand(): [VariableAccess] x -# 2084| Type = [IntPointerType] int * -# 2084| ValueCategory = prvalue(load) -# 2084| getRValue(): [Literal] 6 -# 2084| Type = [IntType] int -# 2084| Value = [Literal] 6 +# 2084| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2084| Type = [LValueReferenceType] const TernaryNonPodObj & # 2084| ValueCategory = prvalue -# 2085| getStmt(2): [ExprStmt] ExprStmt -# 2085| getExpr(): [DeleteExpr] delete -# 2085| Type = [VoidType] void -# 2085| ValueCategory = prvalue -# 2085| getExprWithReuse(): [VariableAccess] x -# 2085| Type = [IntPointerType] int * -# 2085| ValueCategory = prvalue(load) -# 2086| getStmt(3): [ReturnStmt] return ... -# 2088| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) -# 2088| <params>: +# 2084| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2084| Conversion = [GlvalueConversion] glvalue conversion +# 2084| Type = [SpecifiedType] const TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getExpr(): [TemporaryObjectExpr] temporary object +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2085| getStmt(4): [ReturnStmt] return ... +# 2087| [TopLevelFunction] void CommaTestHelper(unsigned int) +# 2087| <params>: +# 2087| getParameter(0): [Parameter] (unnamed parameter 0) +# 2087| Type = [IntType] unsigned int +# 2089| [TopLevelFunction] unsigned int CommaTest(unsigned int) +# 2089| <params>: +# 2089| getParameter(0): [Parameter] x +# 2089| Type = [IntType] unsigned int +# 2089| getEntryPoint(): [BlockStmt] { ... } +# 2090| getStmt(0): [DeclStmt] declaration +# 2090| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2090| Type = [IntType] unsigned int +# 2091| getStmt(1): [ExprStmt] ExprStmt +# 2091| getExpr(): [AssignExpr] ... = ... +# 2091| Type = [IntType] unsigned int +# 2091| ValueCategory = lvalue +# 2091| getLValue(): [VariableAccess] y +# 2091| Type = [IntType] unsigned int +# 2091| ValueCategory = lvalue +# 2091| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2091| Type = [IntType] unsigned int +# 2091| ValueCategory = prvalue(load) +# 2091| getCondition(): [LTExpr] ... < ... +# 2091| Type = [BoolType] bool +# 2091| ValueCategory = prvalue +# 2091| getLesserOperand(): [VariableAccess] x +# 2091| Type = [IntType] unsigned int +# 2091| ValueCategory = prvalue(load) +# 2091| getGreaterOperand(): [Literal] 100 +# 2091| Type = [IntType] int +# 2091| Value = [Literal] 100 +# 2091| ValueCategory = prvalue +# 2091| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2091| Conversion = [IntegralConversion] integral conversion +# 2091| Type = [IntType] unsigned int +# 2091| Value = [CStyleCast] 100 +# 2091| ValueCategory = prvalue +# 2092| getThen(): [CommaExpr] ... , ... +# 2092| Type = [IntType] unsigned int +# 2092| ValueCategory = prvalue(load) +# 2092| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2092| Type = [VoidType] void +# 2092| ValueCategory = prvalue +# 2092| getArgument(0): [VariableAccess] x +# 2092| Type = [IntType] unsigned int +# 2092| ValueCategory = prvalue(load) +# 2092| getRightOperand(): [VariableAccess] x +# 2092| Type = [IntType] unsigned int +# 2092| ValueCategory = prvalue(load) +# 2093| getElse(): [CommaExpr] ... , ... +# 2093| Type = [IntType] int +# 2093| ValueCategory = prvalue +# 2093| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2093| Type = [VoidType] void +# 2093| ValueCategory = prvalue +# 2093| getArgument(0): [VariableAccess] x +# 2093| Type = [IntType] unsigned int +# 2093| ValueCategory = prvalue(load) +# 2093| getRightOperand(): [Literal] 10 +# 2093| Type = [IntType] int +# 2093| Value = [Literal] 10 +# 2093| ValueCategory = prvalue +# 2092| getThen().getFullyConverted(): [ParenthesisExpr] (...) +# 2092| Type = [IntType] unsigned int +# 2092| ValueCategory = prvalue(load) +# 2093| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2093| Conversion = [IntegralConversion] integral conversion +# 2093| Type = [IntType] unsigned int +# 2093| ValueCategory = prvalue +# 2093| getExpr(): [ParenthesisExpr] (...) +# 2093| Type = [IntType] int +# 2093| ValueCategory = prvalue +# 2094| getStmt(2): [ReturnStmt] return ... +# 2096| [TopLevelFunction] void NewDeleteMem() +# 2096| <params>: +# 2096| getEntryPoint(): [BlockStmt] { ... } +# 2097| getStmt(0): [DeclStmt] declaration +# 2097| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2097| Type = [IntPointerType] int * +# 2097| getVariable().getInitializer(): [Initializer] initializer for x +# 2097| getExpr(): [NewExpr] new +# 2097| Type = [IntPointerType] int * +# 2097| ValueCategory = prvalue +# 2098| getStmt(1): [ExprStmt] ExprStmt +# 2098| getExpr(): [AssignExpr] ... = ... +# 2098| Type = [IntType] int +# 2098| ValueCategory = lvalue +# 2098| getLValue(): [PointerDereferenceExpr] * ... +# 2098| Type = [IntType] int +# 2098| ValueCategory = lvalue +# 2098| getOperand(): [VariableAccess] x +# 2098| Type = [IntPointerType] int * +# 2098| ValueCategory = prvalue(load) +# 2098| getRValue(): [Literal] 6 +# 2098| Type = [IntType] int +# 2098| Value = [Literal] 6 +# 2098| ValueCategory = prvalue +# 2099| getStmt(2): [ExprStmt] ExprStmt +# 2099| getExpr(): [DeleteExpr] delete +# 2099| Type = [VoidType] void +# 2099| ValueCategory = prvalue +# 2099| getExprWithReuse(): [VariableAccess] x +# 2099| Type = [IntPointerType] int * +# 2099| ValueCategory = prvalue(load) +# 2100| getStmt(3): [ReturnStmt] return ... +# 2102| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) +# 2102| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Base2 & -# 2088| [Constructor] void Base2::Base2() -# 2088| <params>: -# 2088| <initializations>: -# 2088| getEntryPoint(): [BlockStmt] { ... } -# 2088| getStmt(0): [ReturnStmt] return ... -# 2088| [CopyConstructor] void Base2::Base2(Base2 const&) -# 2088| <params>: +# 2102| [Constructor] void Base2::Base2() +# 2102| <params>: +# 2102| <initializations>: +# 2102| getEntryPoint(): [BlockStmt] { ... } +# 2102| getStmt(0): [ReturnStmt] return ... +# 2102| [CopyConstructor] void Base2::Base2(Base2 const&) +# 2102| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Base2 & -# 2090| [MemberFunction] void Base2::operator delete(void*) -# 2090| <params>: -# 2090| getParameter(0): [Parameter] p -# 2090| Type = [VoidPointerType] void * -# 2090| getEntryPoint(): [BlockStmt] { ... } -# 2091| getStmt(0): [ReturnStmt] return ... -# 2092| [Destructor,VirtualFunction] void Base2::~Base2() -# 2092| <params>: -# 2092| getEntryPoint(): [BlockStmt] { ... } -# 2092| getStmt(0): [ReturnStmt] return ... -# 2092| <destructions>: -# 2095| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) -# 2095| <params>: +# 2104| [MemberFunction] void Base2::operator delete(void*) +# 2104| <params>: +# 2104| getParameter(0): [Parameter] p +# 2104| Type = [VoidPointerType] void * +# 2104| getEntryPoint(): [BlockStmt] { ... } +# 2105| getStmt(0): [ReturnStmt] return ... +# 2106| [Destructor,VirtualFunction] void Base2::~Base2() +# 2106| <params>: +# 2106| getEntryPoint(): [BlockStmt] { ... } +# 2106| getStmt(0): [ReturnStmt] return ... +# 2106| <destructions>: +# 2109| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) +# 2109| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2095| [Constructor] void Derived2::Derived2() -# 2095| <params>: -# 2095| <initializations>: -# 2095| getInitializer(0): [ConstructorDirectInit] call to Base2 -# 2095| Type = [VoidType] void -# 2095| ValueCategory = prvalue -# 2095| getEntryPoint(): [BlockStmt] { ... } -# 2095| getStmt(0): [ReturnStmt] return ... -# 2095| [CopyConstructor] void Derived2::Derived2(Derived2 const&) -# 2095| <params>: +# 2109| [Constructor] void Derived2::Derived2() +# 2109| <params>: +# 2109| <initializations>: +# 2109| getInitializer(0): [ConstructorDirectInit] call to Base2 +# 2109| Type = [VoidType] void +# 2109| ValueCategory = prvalue +# 2109| getEntryPoint(): [BlockStmt] { ... } +# 2109| getStmt(0): [ReturnStmt] return ... +# 2109| [CopyConstructor] void Derived2::Derived2(Derived2 const&) +# 2109| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2098| [Destructor,VirtualFunction] void Derived2::~Derived2() -# 2098| <params>: -# 2098| getEntryPoint(): [BlockStmt] { ... } -# 2098| getStmt(0): [ReturnStmt] return ... -# 2098| <destructions>: -# 2098| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 -# 2098| Type = [VoidType] void -# 2098| ValueCategory = prvalue -# 2100| [MemberFunction] void Derived2::operator delete(void*) -# 2100| <params>: -# 2100| getParameter(0): [Parameter] p -# 2100| Type = [VoidPointerType] void * -# 2100| getEntryPoint(): [BlockStmt] { ... } -# 2101| getStmt(0): [ReturnStmt] return ... -# 2105| [TopLevelFunction] int virtual_delete() -# 2105| <params>: -# 2106| getEntryPoint(): [BlockStmt] { ... } -# 2107| getStmt(0): [DeclStmt] declaration -# 2107| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 -# 2107| Type = [PointerType] Base2 * -# 2107| getVariable().getInitializer(): [Initializer] initializer for b1 -# 2107| getExpr(): [NewExpr] new -# 2107| Type = [PointerType] Base2 * -# 2107| ValueCategory = prvalue -# 2107| getInitializer(): [ConstructorCall] call to Base2 -# 2107| Type = [VoidType] void -# 2107| ValueCategory = prvalue -# 2108| getStmt(1): [ExprStmt] ExprStmt -# 2108| getExpr(): [DeleteExpr] delete -# 2108| Type = [VoidType] void -# 2108| ValueCategory = prvalue -# 2108| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2108| Type = [VoidType] void -# 2108| ValueCategory = prvalue -# 2108| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2108| Type = [VoidType] void -# 2108| ValueCategory = prvalue -# 2108| getQualifier(): [VariableAccess] b1 -# 2108| Type = [PointerType] Base2 * -# 2108| ValueCategory = prvalue(load) -# 2108| getExprWithReuse(): [ReuseExpr] reuse of b1 -# 2108| Type = [PointerType] Base2 * -# 2108| ValueCategory = prvalue -# 2110| getStmt(2): [DeclStmt] declaration -# 2110| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 -# 2110| Type = [PointerType] Base2 * -# 2110| getVariable().getInitializer(): [Initializer] initializer for b2 -# 2110| getExpr(): [NewExpr] new -# 2110| Type = [PointerType] Derived2 * -# 2110| ValueCategory = prvalue -# 2110| getInitializer(): [ConstructorCall] call to Derived2 -# 2110| Type = [VoidType] void -# 2110| ValueCategory = prvalue -# 2110| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... -# 2110| Conversion = [BaseClassConversion] base class conversion -# 2110| Type = [PointerType] Base2 * -# 2110| ValueCategory = prvalue -# 2111| getStmt(3): [ExprStmt] ExprStmt -# 2111| getExpr(): [DeleteExpr] delete -# 2111| Type = [VoidType] void -# 2111| ValueCategory = prvalue -# 2111| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2111| Type = [VoidType] void -# 2111| ValueCategory = prvalue -# 2111| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2111| Type = [VoidType] void -# 2111| ValueCategory = prvalue -# 2111| getQualifier(): [VariableAccess] b2 -# 2111| Type = [PointerType] Base2 * -# 2111| ValueCategory = prvalue(load) -# 2111| getExprWithReuse(): [ReuseExpr] reuse of b2 -# 2111| Type = [PointerType] Base2 * -# 2111| ValueCategory = prvalue -# 2113| getStmt(4): [DeclStmt] declaration -# 2113| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2113| Type = [PointerType] Derived2 * -# 2113| getVariable().getInitializer(): [Initializer] initializer for d -# 2113| getExpr(): [NewExpr] new -# 2113| Type = [PointerType] Derived2 * -# 2113| ValueCategory = prvalue -# 2113| getInitializer(): [ConstructorCall] call to Derived2 -# 2113| Type = [VoidType] void -# 2113| ValueCategory = prvalue -# 2114| getStmt(5): [ExprStmt] ExprStmt -# 2114| getExpr(): [DeleteExpr] delete -# 2114| Type = [VoidType] void -# 2114| ValueCategory = prvalue -# 2114| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2114| Type = [VoidType] void -# 2114| ValueCategory = prvalue -# 2114| getDestructorCall(): [DestructorCall] call to ~Derived2 -# 2114| Type = [VoidType] void -# 2114| ValueCategory = prvalue -# 2114| getQualifier(): [VariableAccess] d -# 2114| Type = [PointerType] Derived2 * -# 2114| ValueCategory = prvalue(load) -# 2114| getExprWithReuse(): [ReuseExpr] reuse of d -# 2114| Type = [PointerType] Derived2 * -# 2114| ValueCategory = prvalue -# 2115| getStmt(6): [ReturnStmt] return ... -# 2117| [TopLevelFunction] void test_constant_folding_use(int) -# 2117| <params>: -# 2117| getParameter(0): [Parameter] (unnamed parameter 0) -# 2117| Type = [IntType] int -# 2119| [TopLevelFunction] void test_constant_folding() +# 2112| [Destructor,VirtualFunction] void Derived2::~Derived2() +# 2112| <params>: +# 2112| getEntryPoint(): [BlockStmt] { ... } +# 2112| getStmt(0): [ReturnStmt] return ... +# 2112| <destructions>: +# 2112| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 +# 2112| Type = [VoidType] void +# 2112| ValueCategory = prvalue +# 2114| [MemberFunction] void Derived2::operator delete(void*) +# 2114| <params>: +# 2114| getParameter(0): [Parameter] p +# 2114| Type = [VoidPointerType] void * +# 2114| getEntryPoint(): [BlockStmt] { ... } +# 2115| getStmt(0): [ReturnStmt] return ... +# 2119| [TopLevelFunction] int virtual_delete() # 2119| <params>: -# 2119| getEntryPoint(): [BlockStmt] { ... } -# 2120| getStmt(0): [DeclStmt] declaration -# 2120| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2120| Type = [SpecifiedType] const int -# 2120| getVariable().getInitializer(): [Initializer] initializer for x -# 2120| getExpr(): [Literal] 116 -# 2120| Type = [IntType] int -# 2120| Value = [Literal] 116 -# 2120| ValueCategory = prvalue -# 2121| getStmt(1): [ExprStmt] ExprStmt -# 2121| getExpr(): [FunctionCall] call to test_constant_folding_use -# 2121| Type = [VoidType] void -# 2121| ValueCategory = prvalue -# 2121| getArgument(0): [VariableAccess] x -# 2121| Type = [IntType] int -# 2121| Value = [VariableAccess] 116 -# 2121| ValueCategory = prvalue(load) -# 2122| getStmt(2): [ReturnStmt] return ... -# 2124| [TopLevelFunction] void exit(int) -# 2124| <params>: -# 2124| getParameter(0): [Parameter] code -# 2124| Type = [IntType] int -# 2126| [TopLevelFunction] int NonExit() -# 2126| <params>: -# 2126| getEntryPoint(): [BlockStmt] { ... } -# 2127| getStmt(0): [DeclStmt] declaration -# 2127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2127| Type = [IntType] int -# 2127| getVariable().getInitializer(): [Initializer] initializer for x -# 2127| getExpr(): [FunctionCall] call to Add -# 2127| Type = [IntType] int +# 2120| getEntryPoint(): [BlockStmt] { ... } +# 2121| getStmt(0): [DeclStmt] declaration +# 2121| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 +# 2121| Type = [PointerType] Base2 * +# 2121| getVariable().getInitializer(): [Initializer] initializer for b1 +# 2121| getExpr(): [NewExpr] new +# 2121| Type = [PointerType] Base2 * +# 2121| ValueCategory = prvalue +# 2121| getInitializer(): [ConstructorCall] call to Base2 +# 2121| Type = [VoidType] void +# 2121| ValueCategory = prvalue +# 2122| getStmt(1): [ExprStmt] ExprStmt +# 2122| getExpr(): [DeleteExpr] delete +# 2122| Type = [VoidType] void +# 2122| ValueCategory = prvalue +# 2122| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2122| Type = [VoidType] void +# 2122| ValueCategory = prvalue +# 2122| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2122| Type = [VoidType] void +# 2122| ValueCategory = prvalue +# 2122| getQualifier(): [VariableAccess] b1 +# 2122| Type = [PointerType] Base2 * +# 2122| ValueCategory = prvalue(load) +# 2122| getExprWithReuse(): [ReuseExpr] reuse of b1 +# 2122| Type = [PointerType] Base2 * +# 2122| ValueCategory = prvalue +# 2124| getStmt(2): [DeclStmt] declaration +# 2124| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 +# 2124| Type = [PointerType] Base2 * +# 2124| getVariable().getInitializer(): [Initializer] initializer for b2 +# 2124| getExpr(): [NewExpr] new +# 2124| Type = [PointerType] Derived2 * +# 2124| ValueCategory = prvalue +# 2124| getInitializer(): [ConstructorCall] call to Derived2 +# 2124| Type = [VoidType] void +# 2124| ValueCategory = prvalue +# 2124| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... +# 2124| Conversion = [BaseClassConversion] base class conversion +# 2124| Type = [PointerType] Base2 * +# 2124| ValueCategory = prvalue +# 2125| getStmt(3): [ExprStmt] ExprStmt +# 2125| getExpr(): [DeleteExpr] delete +# 2125| Type = [VoidType] void +# 2125| ValueCategory = prvalue +# 2125| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2125| Type = [VoidType] void +# 2125| ValueCategory = prvalue +# 2125| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2125| Type = [VoidType] void +# 2125| ValueCategory = prvalue +# 2125| getQualifier(): [VariableAccess] b2 +# 2125| Type = [PointerType] Base2 * +# 2125| ValueCategory = prvalue(load) +# 2125| getExprWithReuse(): [ReuseExpr] reuse of b2 +# 2125| Type = [PointerType] Base2 * +# 2125| ValueCategory = prvalue +# 2127| getStmt(4): [DeclStmt] declaration +# 2127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2127| Type = [PointerType] Derived2 * +# 2127| getVariable().getInitializer(): [Initializer] initializer for d +# 2127| getExpr(): [NewExpr] new +# 2127| Type = [PointerType] Derived2 * # 2127| ValueCategory = prvalue -# 2127| getArgument(0): [Literal] 3 -# 2127| Type = [IntType] int -# 2127| Value = [Literal] 3 -# 2127| ValueCategory = prvalue -# 2127| getArgument(1): [Literal] 4 -# 2127| Type = [IntType] int -# 2127| Value = [Literal] 4 +# 2127| getInitializer(): [ConstructorCall] call to Derived2 +# 2127| Type = [VoidType] void # 2127| ValueCategory = prvalue -# 2128| getStmt(1): [IfStmt] if (...) ... -# 2128| getCondition(): [EQExpr] ... == ... -# 2128| Type = [BoolType] bool +# 2128| getStmt(5): [ExprStmt] ExprStmt +# 2128| getExpr(): [DeleteExpr] delete +# 2128| Type = [VoidType] void # 2128| ValueCategory = prvalue -# 2128| getLeftOperand(): [VariableAccess] x -# 2128| Type = [IntType] int -# 2128| ValueCategory = prvalue(load) -# 2128| getRightOperand(): [Literal] 7 -# 2128| Type = [IntType] int -# 2128| Value = [Literal] 7 +# 2128| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2128| Type = [VoidType] void # 2128| ValueCategory = prvalue -# 2129| getThen(): [ExprStmt] ExprStmt -# 2129| getExpr(): [FunctionCall] call to exit -# 2129| Type = [VoidType] void -# 2129| ValueCategory = prvalue -# 2129| getArgument(0): [Literal] 3 -# 2129| Type = [IntType] int -# 2129| Value = [Literal] 3 -# 2129| ValueCategory = prvalue -# 2130| getStmt(2): [ExprStmt] ExprStmt -# 2130| getExpr(): [FunctionCall] call to VoidFunc -# 2130| Type = [VoidType] void -# 2130| ValueCategory = prvalue -# 2131| getStmt(3): [ReturnStmt] return ... -# 2131| getExpr(): [VariableAccess] x -# 2131| Type = [IntType] int -# 2131| ValueCategory = prvalue(load) -# 2134| [TopLevelFunction] void CallsNonExit() -# 2134| <params>: -# 2134| getEntryPoint(): [BlockStmt] { ... } -# 2135| getStmt(0): [ExprStmt] ExprStmt -# 2135| getExpr(): [FunctionCall] call to VoidFunc +# 2128| getDestructorCall(): [DestructorCall] call to ~Derived2 +# 2128| Type = [VoidType] void +# 2128| ValueCategory = prvalue +# 2128| getQualifier(): [VariableAccess] d +# 2128| Type = [PointerType] Derived2 * +# 2128| ValueCategory = prvalue(load) +# 2128| getExprWithReuse(): [ReuseExpr] reuse of d +# 2128| Type = [PointerType] Derived2 * +# 2128| ValueCategory = prvalue +# 2129| getStmt(6): [ReturnStmt] return ... +# 2131| [TopLevelFunction] void test_constant_folding_use(int) +# 2131| <params>: +# 2131| getParameter(0): [Parameter] (unnamed parameter 0) +# 2131| Type = [IntType] int +# 2133| [TopLevelFunction] void test_constant_folding() +# 2133| <params>: +# 2133| getEntryPoint(): [BlockStmt] { ... } +# 2134| getStmt(0): [DeclStmt] declaration +# 2134| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2134| Type = [SpecifiedType] const int +# 2134| getVariable().getInitializer(): [Initializer] initializer for x +# 2134| getExpr(): [Literal] 116 +# 2134| Type = [IntType] int +# 2134| Value = [Literal] 116 +# 2134| ValueCategory = prvalue +# 2135| getStmt(1): [ExprStmt] ExprStmt +# 2135| getExpr(): [FunctionCall] call to test_constant_folding_use # 2135| Type = [VoidType] void # 2135| ValueCategory = prvalue -# 2136| getStmt(1): [ExprStmt] ExprStmt -# 2136| getExpr(): [FunctionCall] call to exit -# 2136| Type = [VoidType] void -# 2136| ValueCategory = prvalue -# 2136| getArgument(0): [Literal] 3 -# 2136| Type = [IntType] int -# 2136| Value = [Literal] 3 -# 2136| ValueCategory = prvalue -# 2137| getStmt(2): [ReturnStmt] return ... -# 2139| [TopLevelFunction] int TransNonExit() -# 2139| <params>: -# 2139| getEntryPoint(): [BlockStmt] { ... } -# 2140| getStmt(0): [DeclStmt] declaration -# 2140| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2140| Type = [IntType] int -# 2140| getVariable().getInitializer(): [Initializer] initializer for x -# 2140| getExpr(): [FunctionCall] call to Add -# 2140| Type = [IntType] int -# 2140| ValueCategory = prvalue -# 2140| getArgument(0): [Literal] 3 -# 2140| Type = [IntType] int -# 2140| Value = [Literal] 3 -# 2140| ValueCategory = prvalue -# 2140| getArgument(1): [Literal] 4 -# 2140| Type = [IntType] int -# 2140| Value = [Literal] 4 -# 2140| ValueCategory = prvalue -# 2141| getStmt(1): [IfStmt] if (...) ... -# 2141| getCondition(): [EQExpr] ... == ... -# 2141| Type = [BoolType] bool -# 2141| ValueCategory = prvalue -# 2141| getLeftOperand(): [VariableAccess] x -# 2141| Type = [IntType] int -# 2141| ValueCategory = prvalue(load) -# 2141| getRightOperand(): [Literal] 7 -# 2141| Type = [IntType] int -# 2141| Value = [Literal] 7 -# 2141| ValueCategory = prvalue -# 2142| getThen(): [ExprStmt] ExprStmt -# 2142| getExpr(): [FunctionCall] call to CallsNonExit -# 2142| Type = [VoidType] void +# 2135| getArgument(0): [VariableAccess] x +# 2135| Type = [IntType] int +# 2135| Value = [VariableAccess] 116 +# 2135| ValueCategory = prvalue(load) +# 2136| getStmt(2): [ReturnStmt] return ... +# 2138| [TopLevelFunction] void exit(int) +# 2138| <params>: +# 2138| getParameter(0): [Parameter] code +# 2138| Type = [IntType] int +# 2140| [TopLevelFunction] int NonExit() +# 2140| <params>: +# 2140| getEntryPoint(): [BlockStmt] { ... } +# 2141| getStmt(0): [DeclStmt] declaration +# 2141| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2141| Type = [IntType] int +# 2141| getVariable().getInitializer(): [Initializer] initializer for x +# 2141| getExpr(): [FunctionCall] call to Add +# 2141| Type = [IntType] int +# 2141| ValueCategory = prvalue +# 2141| getArgument(0): [Literal] 3 +# 2141| Type = [IntType] int +# 2141| Value = [Literal] 3 +# 2141| ValueCategory = prvalue +# 2141| getArgument(1): [Literal] 4 +# 2141| Type = [IntType] int +# 2141| Value = [Literal] 4 +# 2141| ValueCategory = prvalue +# 2142| getStmt(1): [IfStmt] if (...) ... +# 2142| getCondition(): [EQExpr] ... == ... +# 2142| Type = [BoolType] bool +# 2142| ValueCategory = prvalue +# 2142| getLeftOperand(): [VariableAccess] x +# 2142| Type = [IntType] int +# 2142| ValueCategory = prvalue(load) +# 2142| getRightOperand(): [Literal] 7 +# 2142| Type = [IntType] int +# 2142| Value = [Literal] 7 # 2142| ValueCategory = prvalue -# 2143| getStmt(2): [ExprStmt] ExprStmt -# 2143| getExpr(): [FunctionCall] call to VoidFunc -# 2143| Type = [VoidType] void -# 2143| ValueCategory = prvalue -# 2144| getStmt(3): [ReturnStmt] return ... -# 2144| getExpr(): [VariableAccess] x -# 2144| Type = [IntType] int -# 2144| ValueCategory = prvalue(load) -# 2147| [TopLevelFunction] void newArrayCorrectType(size_t) -# 2147| <params>: -# 2147| getParameter(0): [Parameter] n -# 2147| Type = [CTypedefType,Size_t] size_t -# 2147| getEntryPoint(): [BlockStmt] { ... } -# 2148| getStmt(0): [ExprStmt] ExprStmt -# 2148| getExpr(): [NewArrayExpr] new[] -# 2148| Type = [IntPointerType] int * -# 2148| ValueCategory = prvalue -# 2148| getExtent(): [VariableAccess] n -# 2148| Type = [CTypedefType,Size_t] size_t -# 2148| ValueCategory = prvalue(load) -# 2149| getStmt(1): [ExprStmt] ExprStmt -# 2149| getExpr(): [NewArrayExpr] new[] -# 2149| Type = [IntPointerType] int * +# 2143| getThen(): [ExprStmt] ExprStmt +# 2143| getExpr(): [FunctionCall] call to exit +# 2143| Type = [VoidType] void +# 2143| ValueCategory = prvalue +# 2143| getArgument(0): [Literal] 3 +# 2143| Type = [IntType] int +# 2143| Value = [Literal] 3 +# 2143| ValueCategory = prvalue +# 2144| getStmt(2): [ExprStmt] ExprStmt +# 2144| getExpr(): [FunctionCall] call to VoidFunc +# 2144| Type = [VoidType] void +# 2144| ValueCategory = prvalue +# 2145| getStmt(3): [ReturnStmt] return ... +# 2145| getExpr(): [VariableAccess] x +# 2145| Type = [IntType] int +# 2145| ValueCategory = prvalue(load) +# 2148| [TopLevelFunction] void CallsNonExit() +# 2148| <params>: +# 2148| getEntryPoint(): [BlockStmt] { ... } +# 2149| getStmt(0): [ExprStmt] ExprStmt +# 2149| getExpr(): [FunctionCall] call to VoidFunc +# 2149| Type = [VoidType] void # 2149| ValueCategory = prvalue -# 2149| getAllocatorCall(): [FunctionCall] call to operator new[] -# 2149| Type = [VoidPointerType] void * -# 2149| ValueCategory = prvalue -# 2149| getArgument(0): [ErrorExpr] <error expr> -# 2149| Type = [LongType] unsigned long -# 2149| ValueCategory = prvalue -# 2149| getArgument(1): [Literal] 1.0 -# 2149| Type = [FloatType] float -# 2149| Value = [Literal] 1.0 -# 2149| ValueCategory = prvalue -# 2149| getExtent(): [VariableAccess] n -# 2149| Type = [CTypedefType,Size_t] size_t -# 2149| ValueCategory = prvalue(load) -# 2150| getStmt(2): [ExprStmt] ExprStmt -# 2150| getExpr(): [NewArrayExpr] new[] -# 2150| Type = [PointerType] String * +# 2150| getStmt(1): [ExprStmt] ExprStmt +# 2150| getExpr(): [FunctionCall] call to exit +# 2150| Type = [VoidType] void # 2150| ValueCategory = prvalue -# 2150| getInitializer(): [ArrayAggregateLiteral] {...} -# 2150| Type = [ArrayType] String[] +# 2150| getArgument(0): [Literal] 3 +# 2150| Type = [IntType] int +# 2150| Value = [Literal] 3 # 2150| ValueCategory = prvalue -# 2150| getAnElementExpr(0): [ConstructorCall] call to String -# 2150| Type = [VoidType] void -# 2150| ValueCategory = prvalue -# 2150| getExtent(): [VariableAccess] n -# 2150| Type = [CTypedefType,Size_t] size_t -# 2150| ValueCategory = prvalue(load) -# 2151| getStmt(3): [ExprStmt] ExprStmt -# 2151| getExpr(): [NewArrayExpr] new[] -# 2151| Type = [PointerType] Overaligned * -# 2151| ValueCategory = prvalue -# 2151| getExtent(): [VariableAccess] n -# 2151| Type = [CTypedefType,Size_t] size_t -# 2151| ValueCategory = prvalue(load) -# 2151| getAlignmentArgument(): [Literal] 128 -# 2151| Type = [ScopedEnum] align_val_t -# 2151| Value = [Literal] 128 -# 2151| ValueCategory = prvalue -# 2152| getStmt(4): [ExprStmt] ExprStmt -# 2152| getExpr(): [NewArrayExpr] new[] -# 2152| Type = [PointerType] DefaultCtorWithDefaultParam * -# 2152| ValueCategory = prvalue -# 2152| getInitializer(): [ArrayAggregateLiteral] {...} -# 2152| Type = [ArrayType] DefaultCtorWithDefaultParam[] -# 2152| ValueCategory = prvalue -# 2152| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam -# 2152| Type = [VoidType] void -# 2152| ValueCategory = prvalue -# 2152| getExtent(): [VariableAccess] n -# 2152| Type = [CTypedefType,Size_t] size_t -# 2152| ValueCategory = prvalue(load) -# 2153| getStmt(5): [ExprStmt] ExprStmt -# 2153| getExpr(): [NewArrayExpr] new[] -# 2153| Type = [IntPointerType] int * -# 2153| ValueCategory = prvalue -# 2153| getInitializer(): [ArrayAggregateLiteral] {...} -# 2153| Type = [ArrayType] int[3] -# 2153| ValueCategory = prvalue -# 2153| getAnElementExpr(0): [Literal] 0 -# 2153| Type = [IntType] int -# 2153| Value = [Literal] 0 -# 2153| ValueCategory = prvalue -# 2153| getAnElementExpr(1): [Literal] 1 -# 2153| Type = [IntType] int -# 2153| Value = [Literal] 1 -# 2153| ValueCategory = prvalue -# 2153| getAnElementExpr(2): [Literal] 2 -# 2153| Type = [IntType] int -# 2153| Value = [Literal] 2 -# 2153| ValueCategory = prvalue -# 2153| getExtent(): [VariableAccess] n -# 2153| Type = [CTypedefType,Size_t] size_t -# 2153| ValueCategory = prvalue(load) -# 2154| getStmt(6): [ReturnStmt] return ... -# 2156| [TopLevelFunction] double strtod(char const*, char**) -# 2156| <params>: -# 2156| getParameter(0): [Parameter] str -# 2156| Type = [PointerType] const char * -# 2156| getParameter(1): [Parameter] endptr -# 2156| Type = [PointerType] char ** -# 2158| [TopLevelFunction] char* test_strtod(char*) -# 2158| <params>: -# 2158| getParameter(0): [Parameter] s -# 2158| Type = [CharPointerType] char * -# 2158| getEntryPoint(): [BlockStmt] { ... } -# 2159| getStmt(0): [DeclStmt] declaration -# 2159| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end -# 2159| Type = [CharPointerType] char * -# 2160| getStmt(1): [DeclStmt] declaration -# 2160| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2160| Type = [DoubleType] double -# 2160| getVariable().getInitializer(): [Initializer] initializer for d -# 2160| getExpr(): [FunctionCall] call to strtod -# 2160| Type = [DoubleType] double -# 2160| ValueCategory = prvalue -# 2160| getArgument(0): [VariableAccess] s -# 2160| Type = [CharPointerType] char * -# 2160| ValueCategory = prvalue(load) -# 2160| getArgument(1): [AddressOfExpr] & ... -# 2160| Type = [PointerType] char ** -# 2160| ValueCategory = prvalue -# 2160| getOperand(): [VariableAccess] end -# 2160| Type = [CharPointerType] char * -# 2160| ValueCategory = lvalue -# 2160| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... -# 2160| Conversion = [PointerConversion] pointer conversion -# 2160| Type = [PointerType] const char * -# 2160| ValueCategory = prvalue -# 2161| getStmt(2): [ReturnStmt] return ... -# 2161| getExpr(): [VariableAccess] end -# 2161| Type = [CharPointerType] char * -# 2161| ValueCategory = prvalue(load) -# 2164| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) -# 2164| <params>: +# 2151| getStmt(2): [ReturnStmt] return ... +# 2153| [TopLevelFunction] int TransNonExit() +# 2153| <params>: +# 2153| getEntryPoint(): [BlockStmt] { ... } +# 2154| getStmt(0): [DeclStmt] declaration +# 2154| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2154| Type = [IntType] int +# 2154| getVariable().getInitializer(): [Initializer] initializer for x +# 2154| getExpr(): [FunctionCall] call to Add +# 2154| Type = [IntType] int +# 2154| ValueCategory = prvalue +# 2154| getArgument(0): [Literal] 3 +# 2154| Type = [IntType] int +# 2154| Value = [Literal] 3 +# 2154| ValueCategory = prvalue +# 2154| getArgument(1): [Literal] 4 +# 2154| Type = [IntType] int +# 2154| Value = [Literal] 4 +# 2154| ValueCategory = prvalue +# 2155| getStmt(1): [IfStmt] if (...) ... +# 2155| getCondition(): [EQExpr] ... == ... +# 2155| Type = [BoolType] bool +# 2155| ValueCategory = prvalue +# 2155| getLeftOperand(): [VariableAccess] x +# 2155| Type = [IntType] int +# 2155| ValueCategory = prvalue(load) +# 2155| getRightOperand(): [Literal] 7 +# 2155| Type = [IntType] int +# 2155| Value = [Literal] 7 +# 2155| ValueCategory = prvalue +# 2156| getThen(): [ExprStmt] ExprStmt +# 2156| getExpr(): [FunctionCall] call to CallsNonExit +# 2156| Type = [VoidType] void +# 2156| ValueCategory = prvalue +# 2157| getStmt(2): [ExprStmt] ExprStmt +# 2157| getExpr(): [FunctionCall] call to VoidFunc +# 2157| Type = [VoidType] void +# 2157| ValueCategory = prvalue +# 2158| getStmt(3): [ReturnStmt] return ... +# 2158| getExpr(): [VariableAccess] x +# 2158| Type = [IntType] int +# 2158| ValueCategory = prvalue(load) +# 2161| [TopLevelFunction] void newArrayCorrectType(size_t) +# 2161| <params>: +# 2161| getParameter(0): [Parameter] n +# 2161| Type = [CTypedefType,Size_t] size_t +# 2161| getEntryPoint(): [BlockStmt] { ... } +# 2162| getStmt(0): [ExprStmt] ExprStmt +# 2162| getExpr(): [NewArrayExpr] new[] +# 2162| Type = [IntPointerType] int * +# 2162| ValueCategory = prvalue +# 2162| getExtent(): [VariableAccess] n +# 2162| Type = [CTypedefType,Size_t] size_t +# 2162| ValueCategory = prvalue(load) +# 2163| getStmt(1): [ExprStmt] ExprStmt +# 2163| getExpr(): [NewArrayExpr] new[] +# 2163| Type = [IntPointerType] int * +# 2163| ValueCategory = prvalue +# 2163| getAllocatorCall(): [FunctionCall] call to operator new[] +# 2163| Type = [VoidPointerType] void * +# 2163| ValueCategory = prvalue +# 2163| getArgument(0): [ErrorExpr] <error expr> +# 2163| Type = [LongType] unsigned long +# 2163| ValueCategory = prvalue +# 2163| getArgument(1): [Literal] 1.0 +# 2163| Type = [FloatType] float +# 2163| Value = [Literal] 1.0 +# 2163| ValueCategory = prvalue +# 2163| getExtent(): [VariableAccess] n +# 2163| Type = [CTypedefType,Size_t] size_t +# 2163| ValueCategory = prvalue(load) +# 2164| getStmt(2): [ExprStmt] ExprStmt +# 2164| getExpr(): [NewArrayExpr] new[] +# 2164| Type = [PointerType] String * +# 2164| ValueCategory = prvalue +# 2164| getInitializer(): [ArrayAggregateLiteral] {...} +# 2164| Type = [ArrayType] String[] +# 2164| ValueCategory = prvalue +# 2164| getAnElementExpr(0): [ConstructorCall] call to String +# 2164| Type = [VoidType] void +# 2164| ValueCategory = prvalue +# 2164| getExtent(): [VariableAccess] n +# 2164| Type = [CTypedefType,Size_t] size_t +# 2164| ValueCategory = prvalue(load) +# 2165| getStmt(3): [ExprStmt] ExprStmt +# 2165| getExpr(): [NewArrayExpr] new[] +# 2165| Type = [PointerType] Overaligned * +# 2165| ValueCategory = prvalue +# 2165| getExtent(): [VariableAccess] n +# 2165| Type = [CTypedefType,Size_t] size_t +# 2165| ValueCategory = prvalue(load) +# 2165| getAlignmentArgument(): [Literal] 128 +# 2165| Type = [ScopedEnum] align_val_t +# 2165| Value = [Literal] 128 +# 2165| ValueCategory = prvalue +# 2166| getStmt(4): [ExprStmt] ExprStmt +# 2166| getExpr(): [NewArrayExpr] new[] +# 2166| Type = [PointerType] DefaultCtorWithDefaultParam * +# 2166| ValueCategory = prvalue +# 2166| getInitializer(): [ArrayAggregateLiteral] {...} +# 2166| Type = [ArrayType] DefaultCtorWithDefaultParam[] +# 2166| ValueCategory = prvalue +# 2166| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam +# 2166| Type = [VoidType] void +# 2166| ValueCategory = prvalue +# 2166| getExtent(): [VariableAccess] n +# 2166| Type = [CTypedefType,Size_t] size_t +# 2166| ValueCategory = prvalue(load) +# 2167| getStmt(5): [ExprStmt] ExprStmt +# 2167| getExpr(): [NewArrayExpr] new[] +# 2167| Type = [IntPointerType] int * +# 2167| ValueCategory = prvalue +# 2167| getInitializer(): [ArrayAggregateLiteral] {...} +# 2167| Type = [ArrayType] int[3] +# 2167| ValueCategory = prvalue +# 2167| getAnElementExpr(0): [Literal] 0 +# 2167| Type = [IntType] int +# 2167| Value = [Literal] 0 +# 2167| ValueCategory = prvalue +# 2167| getAnElementExpr(1): [Literal] 1 +# 2167| Type = [IntType] int +# 2167| Value = [Literal] 1 +# 2167| ValueCategory = prvalue +# 2167| getAnElementExpr(2): [Literal] 2 +# 2167| Type = [IntType] int +# 2167| Value = [Literal] 2 +# 2167| ValueCategory = prvalue +# 2167| getExtent(): [VariableAccess] n +# 2167| Type = [CTypedefType,Size_t] size_t +# 2167| ValueCategory = prvalue(load) +# 2168| getStmt(6): [ReturnStmt] return ... +# 2170| [TopLevelFunction] double strtod(char const*, char**) +# 2170| <params>: +# 2170| getParameter(0): [Parameter] str +# 2170| Type = [PointerType] const char * +# 2170| getParameter(1): [Parameter] endptr +# 2170| Type = [PointerType] char ** +# 2172| [TopLevelFunction] char* test_strtod(char*) +# 2172| <params>: +# 2172| getParameter(0): [Parameter] s +# 2172| Type = [CharPointerType] char * +# 2172| getEntryPoint(): [BlockStmt] { ... } +# 2173| getStmt(0): [DeclStmt] declaration +# 2173| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end +# 2173| Type = [CharPointerType] char * +# 2174| getStmt(1): [DeclStmt] declaration +# 2174| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2174| Type = [DoubleType] double +# 2174| getVariable().getInitializer(): [Initializer] initializer for d +# 2174| getExpr(): [FunctionCall] call to strtod +# 2174| Type = [DoubleType] double +# 2174| ValueCategory = prvalue +# 2174| getArgument(0): [VariableAccess] s +# 2174| Type = [CharPointerType] char * +# 2174| ValueCategory = prvalue(load) +# 2174| getArgument(1): [AddressOfExpr] & ... +# 2174| Type = [PointerType] char ** +# 2174| ValueCategory = prvalue +# 2174| getOperand(): [VariableAccess] end +# 2174| Type = [CharPointerType] char * +# 2174| ValueCategory = lvalue +# 2174| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 2174| Conversion = [PointerConversion] pointer conversion +# 2174| Type = [PointerType] const char * +# 2174| ValueCategory = prvalue +# 2175| getStmt(2): [ReturnStmt] return ... +# 2175| getExpr(): [VariableAccess] end +# 2175| Type = [CharPointerType] char * +# 2175| ValueCategory = prvalue(load) +# 2178| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) +# 2178| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const HasOperatorBool & -# 2164| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) -# 2164| <params>: +# 2178| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) +# 2178| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] HasOperatorBool && -# 2165| [ConversionOperator] bool HasOperatorBool::operator bool() -# 2165| <params>: -# 2168| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() -# 2168| <params>: -# 2168| getEntryPoint(): [BlockStmt] { ... } -# 2169| getStmt(0): [IfStmt] if (...) ... -# 2169| getCondition(): [ConditionDeclExpr] (condition decl) -# 2169| Type = [BoolType] bool -# 2169| ValueCategory = prvalue -# 2169| getChild(0): [FunctionCall] call to operator bool -# 2169| Type = [BoolType] bool -# 2169| ValueCategory = prvalue -# 2169| getQualifier(): [VariableAccess] b -# 2169| Type = [Struct] HasOperatorBool -# 2169| ValueCategory = prvalue(load) -# 2169| getInitializingExpr(): [Literal] 0 -# 2169| Type = [Struct] HasOperatorBool -# 2169| Value = [Literal] 0 -# 2169| ValueCategory = prvalue -# 2169| getThen(): [BlockStmt] { ... } -# 2170| getStmt(1): [ReturnStmt] return ... -# 2172| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) -# 2172| <params>: +# 2179| [ConversionOperator] bool HasOperatorBool::operator bool() +# 2179| <params>: +# 2182| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() +# 2182| <params>: +# 2182| getEntryPoint(): [BlockStmt] { ... } +# 2183| getStmt(0): [IfStmt] if (...) ... +# 2183| getCondition(): [ConditionDeclExpr] (condition decl) +# 2183| Type = [BoolType] bool +# 2183| ValueCategory = prvalue +# 2183| getChild(0): [FunctionCall] call to operator bool +# 2183| Type = [BoolType] bool +# 2183| ValueCategory = prvalue +# 2183| getQualifier(): [VariableAccess] b +# 2183| Type = [Struct] HasOperatorBool +# 2183| ValueCategory = prvalue(load) +# 2183| getInitializingExpr(): [Literal] 0 +# 2183| Type = [Struct] HasOperatorBool +# 2183| Value = [Literal] 0 +# 2183| ValueCategory = prvalue +# 2183| getThen(): [BlockStmt] { ... } +# 2184| getStmt(1): [ReturnStmt] return ... +# 2186| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) +# 2186| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ClassWithDestructor & -# 2172| [CopyConstructor] void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2172| <params>: +# 2186| [CopyConstructor] void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2186| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ClassWithDestructor & -# 2172| <initializations>: -# 2172| getInitializer(0): [ConstructorFieldInit] constructor init of field x -# 2172| Type = [CharPointerType] char * -# 2172| ValueCategory = prvalue -# 2172| getExpr(): [ReferenceFieldAccess] x -# 2172| Type = [CharPointerType] char * -# 2172| ValueCategory = prvalue(load) -# 2172| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 2172| Type = [LValueReferenceType] const ClassWithDestructor & -# 2172| ValueCategory = prvalue(load) -# 2172| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2172| Type = [SpecifiedType] const ClassWithDestructor -# 2172| ValueCategory = lvalue -# 2172| getEntryPoint(): [BlockStmt] { ... } -# 2172| getStmt(0): [ReturnStmt] return ... -# 2175| [Constructor] void ClassWithDestructor::ClassWithDestructor() -# 2175| <params>: -# 2175| <initializations>: -# 2175| getEntryPoint(): [BlockStmt] { ... } -# 2175| getStmt(0): [ExprStmt] ExprStmt -# 2175| getExpr(): [AssignExpr] ... = ... -# 2175| Type = [CharPointerType] char * -# 2175| ValueCategory = lvalue -# 2175| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2175| Type = [CharPointerType] char * -# 2175| ValueCategory = lvalue -# 2175| getQualifier(): [ThisExpr] this -# 2175| Type = [PointerType] ClassWithDestructor * -# 2175| ValueCategory = prvalue(load) -# 2175| getRValue(): [NewExpr] new -# 2175| Type = [CharPointerType] char * -# 2175| ValueCategory = prvalue -# 2175| getStmt(1): [ReturnStmt] return ... -# 2176| [Destructor] void ClassWithDestructor::~ClassWithDestructor() -# 2176| <params>: -# 2176| getEntryPoint(): [BlockStmt] { ... } -# 2176| getStmt(0): [ExprStmt] ExprStmt -# 2176| getExpr(): [DeleteExpr] delete -# 2176| Type = [VoidType] void -# 2176| ValueCategory = prvalue -# 2176| getExprWithReuse(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2176| Type = [CharPointerType] char * -# 2176| ValueCategory = prvalue(load) -# 2176| getQualifier(): [ThisExpr] this -# 2176| Type = [PointerType] ClassWithDestructor * -# 2176| ValueCategory = prvalue(load) -# 2176| getStmt(1): [ReturnStmt] return ... -# 2176| <destructions>: -# 2178| [MemberFunction] void ClassWithDestructor::set_x(char) -# 2178| <params>: -# 2178| getParameter(0): [Parameter] y -# 2178| Type = [PlainCharType] char -# 2178| getEntryPoint(): [BlockStmt] { ... } -# 2178| getStmt(0): [ExprStmt] ExprStmt -# 2178| getExpr(): [AssignExpr] ... = ... -# 2178| Type = [PlainCharType] char -# 2178| ValueCategory = lvalue -# 2178| getLValue(): [PointerDereferenceExpr] * ... -# 2178| Type = [PlainCharType] char -# 2178| ValueCategory = lvalue -# 2178| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2178| Type = [CharPointerType] char * -# 2178| ValueCategory = prvalue(load) -# 2178| getQualifier(): [ThisExpr] this -# 2178| Type = [PointerType] ClassWithDestructor * -# 2178| ValueCategory = prvalue(load) -# 2178| getRValue(): [VariableAccess] y -# 2178| Type = [PlainCharType] char -# 2178| ValueCategory = prvalue(load) -# 2178| getStmt(1): [ReturnStmt] return ... -# 2179| [MemberFunction] char ClassWithDestructor::get_x() -# 2179| <params>: -# 2179| getEntryPoint(): [BlockStmt] { ... } -# 2179| getStmt(0): [ReturnStmt] return ... -# 2179| getExpr(): [PointerDereferenceExpr] * ... -# 2179| Type = [PlainCharType] char -# 2179| ValueCategory = prvalue(load) -# 2179| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2179| Type = [CharPointerType] char * -# 2179| ValueCategory = prvalue(load) -# 2179| getQualifier(): [ThisExpr] this -# 2179| Type = [PointerType] ClassWithDestructor * -# 2179| ValueCategory = prvalue(load) -# 2182| [GlobalVariable] bool initialization_with_destructor_bool -# 2182| getInitializer(): [Initializer] initializer for initialization_with_destructor_bool -# 2182| getExpr(): [Literal] 1 -# 2182| Type = [BoolType] bool -# 2182| Value = [Literal] 1 -# 2182| ValueCategory = prvalue -# 2184| [TopLevelFunction] void initialization_with_destructor(bool, char) -# 2184| <params>: -# 2184| getParameter(0): [Parameter] b -# 2184| Type = [BoolType] bool -# 2184| getParameter(1): [Parameter] c -# 2184| Type = [PlainCharType] char -# 2184| getEntryPoint(): [BlockStmt] { ... } -# 2185| getStmt(0): [IfStmt] if (...) ... -# 2185| getInitialization(): [DeclStmt] declaration -# 2185| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2185| Type = [Class] ClassWithDestructor -# 2185| getVariable().getInitializer(): [Initializer] initializer for x -# 2185| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2185| Type = [VoidType] void -# 2185| ValueCategory = prvalue -# 2185| getCondition(): [VariableAccess] b -# 2185| Type = [BoolType] bool -# 2185| ValueCategory = prvalue(load) -# 2186| getThen(): [ExprStmt] ExprStmt -# 2186| getExpr(): [FunctionCall] call to set_x -# 2186| Type = [VoidType] void -# 2186| ValueCategory = prvalue -# 2186| getQualifier(): [VariableAccess] x -# 2186| Type = [Class] ClassWithDestructor -# 2186| ValueCategory = lvalue -# 2186| getArgument(0): [CharLiteral] 97 -# 2186| Type = [PlainCharType] char -# 2186| Value = [CharLiteral] 97 -# 2186| ValueCategory = prvalue -# 2186| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2186| Type = [VoidType] void -# 2186| ValueCategory = prvalue -# 2186| getQualifier(): [VariableAccess] x -# 2186| Type = [Class] ClassWithDestructor +# 2186| <initializations>: +# 2186| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 2186| Type = [CharPointerType] char * +# 2186| ValueCategory = prvalue +# 2186| getExpr(): [ReferenceFieldAccess] x +# 2186| Type = [CharPointerType] char * +# 2186| ValueCategory = prvalue(load) +# 2186| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 2186| Type = [LValueReferenceType] const ClassWithDestructor & +# 2186| ValueCategory = prvalue(load) +# 2186| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2186| Type = [SpecifiedType] const ClassWithDestructor # 2186| ValueCategory = lvalue -# 2188| getStmt(1): [ConstexprIfStmt] if constexpr (...) ... -# 2188| getInitialization(): [DeclStmt] declaration -# 2188| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2188| Type = [Class] ClassWithDestructor -# 2188| getVariable().getInitializer(): [Initializer] initializer for x -# 2188| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2188| Type = [VoidType] void -# 2188| ValueCategory = prvalue -# 2188| getCondition(): [VariableAccess] initialization_with_destructor_bool -# 2188| Type = [BoolType] bool -# 2188| Value = [VariableAccess] 1 -# 2188| ValueCategory = prvalue(load) -# 2189| getThen(): [ExprStmt] ExprStmt -# 2189| getExpr(): [FunctionCall] call to set_x -# 2189| Type = [VoidType] void -# 2189| ValueCategory = prvalue -# 2189| getQualifier(): [VariableAccess] x -# 2189| Type = [Class] ClassWithDestructor -# 2189| ValueCategory = lvalue -# 2189| getArgument(0): [CharLiteral] 97 -# 2189| Type = [PlainCharType] char -# 2189| Value = [CharLiteral] 97 -# 2189| ValueCategory = prvalue -# 2189| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2189| Type = [VoidType] void -# 2189| ValueCategory = prvalue -# 2189| getQualifier(): [VariableAccess] x -# 2189| Type = [Class] ClassWithDestructor +# 2186| getEntryPoint(): [BlockStmt] { ... } +# 2186| getStmt(0): [ReturnStmt] return ... +# 2189| [Constructor] void ClassWithDestructor::ClassWithDestructor() +# 2189| <params>: +# 2189| <initializations>: +# 2189| getEntryPoint(): [BlockStmt] { ... } +# 2189| getStmt(0): [ExprStmt] ExprStmt +# 2189| getExpr(): [AssignExpr] ... = ... +# 2189| Type = [CharPointerType] char * +# 2189| ValueCategory = lvalue +# 2189| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2189| Type = [CharPointerType] char * # 2189| ValueCategory = lvalue -# 2191| getStmt(2): [SwitchStmt] switch (...) ... -# 2191| getInitialization(): [DeclStmt] declaration -# 2191| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2191| Type = [Class] ClassWithDestructor -# 2191| getVariable().getInitializer(): [Initializer] initializer for x -# 2191| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2191| Type = [VoidType] void -# 2191| ValueCategory = prvalue -# 2191| getExpr(): [VariableAccess] c -# 2191| Type = [PlainCharType] char -# 2191| ValueCategory = prvalue(load) -# 2191| getStmt(): [BlockStmt] { ... } -# 2192| getStmt(0): [SwitchCase] case ...: -# 2192| getExpr(): [CharLiteral] 97 -# 2192| Type = [PlainCharType] char -# 2192| Value = [CharLiteral] 97 -# 2192| ValueCategory = prvalue -# 2192| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2192| Conversion = [IntegralConversion] integral conversion -# 2192| Type = [IntType] int -# 2192| Value = [CStyleCast] 97 -# 2192| ValueCategory = prvalue -# 2193| getStmt(1): [ExprStmt] ExprStmt -# 2193| getExpr(): [FunctionCall] call to set_x -# 2193| Type = [VoidType] void -# 2193| ValueCategory = prvalue -# 2193| getQualifier(): [VariableAccess] x -# 2193| Type = [Class] ClassWithDestructor -# 2193| ValueCategory = lvalue -# 2193| getArgument(0): [CharLiteral] 97 -# 2193| Type = [PlainCharType] char -# 2193| Value = [CharLiteral] 97 -# 2193| ValueCategory = prvalue -# 2194| getStmt(2): [BreakStmt] break; -# 2195| getStmt(3): [SwitchCase] default: -# 2196| getStmt(4): [ExprStmt] ExprStmt -# 2196| getExpr(): [FunctionCall] call to set_x -# 2196| Type = [VoidType] void -# 2196| ValueCategory = prvalue -# 2196| getQualifier(): [VariableAccess] x -# 2196| Type = [Class] ClassWithDestructor -# 2196| ValueCategory = lvalue -# 2196| getArgument(0): [CharLiteral] 98 -# 2196| Type = [PlainCharType] char -# 2196| Value = [CharLiteral] 98 -# 2196| ValueCategory = prvalue -# 2197| getStmt(5): [BreakStmt] break; -# 2198| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2198| Type = [VoidType] void -# 2198| ValueCategory = prvalue -# 2198| getQualifier(): [VariableAccess] x -# 2198| Type = [Class] ClassWithDestructor -# 2198| ValueCategory = lvalue -# 2191| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2191| Conversion = [IntegralConversion] integral conversion -# 2191| Type = [IntType] int -# 2191| ValueCategory = prvalue -# 2198| getStmt(3): [LabelStmt] label ...: -# 2200| getStmt(4): [DeclStmt] declaration -# 2200| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2200| Type = [Class] ClassWithDestructor -# 2200| getVariable().getInitializer(): [Initializer] initializer for x -# 2200| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2200| Type = [VoidType] void +# 2189| getQualifier(): [ThisExpr] this +# 2189| Type = [PointerType] ClassWithDestructor * +# 2189| ValueCategory = prvalue(load) +# 2189| getRValue(): [NewExpr] new +# 2189| Type = [CharPointerType] char * +# 2189| ValueCategory = prvalue +# 2189| getStmt(1): [ReturnStmt] return ... +# 2190| [Destructor] void ClassWithDestructor::~ClassWithDestructor() +# 2190| <params>: +# 2190| getEntryPoint(): [BlockStmt] { ... } +# 2190| getStmt(0): [ExprStmt] ExprStmt +# 2190| getExpr(): [DeleteExpr] delete +# 2190| Type = [VoidType] void +# 2190| ValueCategory = prvalue +# 2190| getExprWithReuse(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2190| Type = [CharPointerType] char * +# 2190| ValueCategory = prvalue(load) +# 2190| getQualifier(): [ThisExpr] this +# 2190| Type = [PointerType] ClassWithDestructor * +# 2190| ValueCategory = prvalue(load) +# 2190| getStmt(1): [ReturnStmt] return ... +# 2190| <destructions>: +# 2192| [MemberFunction] void ClassWithDestructor::set_x(char) +# 2192| <params>: +# 2192| getParameter(0): [Parameter] y +# 2192| Type = [PlainCharType] char +# 2192| getEntryPoint(): [BlockStmt] { ... } +# 2192| getStmt(0): [ExprStmt] ExprStmt +# 2192| getExpr(): [AssignExpr] ... = ... +# 2192| Type = [PlainCharType] char +# 2192| ValueCategory = lvalue +# 2192| getLValue(): [PointerDereferenceExpr] * ... +# 2192| Type = [PlainCharType] char +# 2192| ValueCategory = lvalue +# 2192| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2192| Type = [CharPointerType] char * +# 2192| ValueCategory = prvalue(load) +# 2192| getQualifier(): [ThisExpr] this +# 2192| Type = [PointerType] ClassWithDestructor * +# 2192| ValueCategory = prvalue(load) +# 2192| getRValue(): [VariableAccess] y +# 2192| Type = [PlainCharType] char +# 2192| ValueCategory = prvalue(load) +# 2192| getStmt(1): [ReturnStmt] return ... +# 2193| [MemberFunction] char ClassWithDestructor::get_x() +# 2193| <params>: +# 2193| getEntryPoint(): [BlockStmt] { ... } +# 2193| getStmt(0): [ReturnStmt] return ... +# 2193| getExpr(): [PointerDereferenceExpr] * ... +# 2193| Type = [PlainCharType] char +# 2193| ValueCategory = prvalue(load) +# 2193| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2193| Type = [CharPointerType] char * +# 2193| ValueCategory = prvalue(load) +# 2193| getQualifier(): [ThisExpr] this +# 2193| Type = [PointerType] ClassWithDestructor * +# 2193| ValueCategory = prvalue(load) +# 2196| [GlobalVariable] bool initialization_with_destructor_bool +# 2196| getInitializer(): [Initializer] initializer for initialization_with_destructor_bool +# 2196| getExpr(): [Literal] 1 +# 2196| Type = [BoolType] bool +# 2196| Value = [Literal] 1 +# 2196| ValueCategory = prvalue +# 2198| [TopLevelFunction] void initialization_with_destructor(bool, char) +# 2198| <params>: +# 2198| getParameter(0): [Parameter] b +# 2198| Type = [BoolType] bool +# 2198| getParameter(1): [Parameter] c +# 2198| Type = [PlainCharType] char +# 2198| getEntryPoint(): [BlockStmt] { ... } +# 2199| getStmt(0): [IfStmt] if (...) ... +# 2199| getInitialization(): [DeclStmt] declaration +# 2199| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2199| Type = [Class] ClassWithDestructor +# 2199| getVariable().getInitializer(): [Initializer] initializer for x +# 2199| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2199| Type = [VoidType] void +# 2199| ValueCategory = prvalue +# 2199| getCondition(): [VariableAccess] b +# 2199| Type = [BoolType] bool +# 2199| ValueCategory = prvalue(load) +# 2200| getThen(): [ExprStmt] ExprStmt +# 2200| getExpr(): [FunctionCall] call to set_x +# 2200| Type = [VoidType] void +# 2200| ValueCategory = prvalue +# 2200| getQualifier(): [VariableAccess] x +# 2200| Type = [Class] ClassWithDestructor +# 2200| ValueCategory = lvalue +# 2200| getArgument(0): [CharLiteral] 97 +# 2200| Type = [PlainCharType] char +# 2200| Value = [CharLiteral] 97 # 2200| ValueCategory = prvalue -# 2201| getStmt(5): [RangeBasedForStmt] for(...:...) ... -# 2201| getInitialization(): [DeclStmt] declaration -# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2201| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2201| getVariable().getInitializer(): [Initializer] initializer for ys -# 2201| getExpr(): [ConstructorCall] call to vector -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getArgument(0): [VariableAccess] x -# 2201| Type = [Class] ClassWithDestructor -# 2201| ValueCategory = prvalue(load) -# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [ReuseExpr] reuse of temporary object -# 2201| Type = [Class] ClassWithDestructor -# 2201| ValueCategory = xvalue -# 2201| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2201| Type = [Class] ClassWithDestructor -# 2201| ValueCategory = lvalue -# 2201| getChild(1): [DeclStmt] declaration -# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2200| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2200| Type = [VoidType] void +# 2200| ValueCategory = prvalue +# 2200| getQualifier(): [VariableAccess] x +# 2200| Type = [Class] ClassWithDestructor +# 2200| ValueCategory = lvalue +# 2202| getStmt(1): [ConstexprIfStmt] if constexpr (...) ... +# 2202| getInitialization(): [DeclStmt] declaration +# 2202| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2202| Type = [Class] ClassWithDestructor +# 2202| getVariable().getInitializer(): [Initializer] initializer for x +# 2202| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2202| Type = [VoidType] void +# 2202| ValueCategory = prvalue +# 2202| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2202| Type = [BoolType] bool +# 2202| Value = [VariableAccess] 1 +# 2202| ValueCategory = prvalue(load) +# 2203| getThen(): [ExprStmt] ExprStmt +# 2203| getExpr(): [FunctionCall] call to set_x +# 2203| Type = [VoidType] void +# 2203| ValueCategory = prvalue +# 2203| getQualifier(): [VariableAccess] x +# 2203| Type = [Class] ClassWithDestructor +# 2203| ValueCategory = lvalue +# 2203| getArgument(0): [CharLiteral] 97 +# 2203| Type = [PlainCharType] char +# 2203| Value = [CharLiteral] 97 +# 2203| ValueCategory = prvalue +# 2203| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2203| Type = [VoidType] void +# 2203| ValueCategory = prvalue +# 2203| getQualifier(): [VariableAccess] x +# 2203| Type = [Class] ClassWithDestructor +# 2203| ValueCategory = lvalue +# 2205| getStmt(2): [SwitchStmt] switch (...) ... +# 2205| getInitialization(): [DeclStmt] declaration +# 2205| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2205| Type = [Class] ClassWithDestructor +# 2205| getVariable().getInitializer(): [Initializer] initializer for x +# 2205| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2205| Type = [VoidType] void +# 2205| ValueCategory = prvalue +# 2205| getExpr(): [VariableAccess] c +# 2205| Type = [PlainCharType] char +# 2205| ValueCategory = prvalue(load) +# 2205| getStmt(): [BlockStmt] { ... } +# 2206| getStmt(0): [SwitchCase] case ...: +# 2206| getExpr(): [CharLiteral] 97 +# 2206| Type = [PlainCharType] char +# 2206| Value = [CharLiteral] 97 +# 2206| ValueCategory = prvalue +# 2206| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2206| Conversion = [IntegralConversion] integral conversion +# 2206| Type = [IntType] int +# 2206| Value = [CStyleCast] 97 +# 2206| ValueCategory = prvalue +# 2207| getStmt(1): [ExprStmt] ExprStmt +# 2207| getExpr(): [FunctionCall] call to set_x +# 2207| Type = [VoidType] void +# 2207| ValueCategory = prvalue +# 2207| getQualifier(): [VariableAccess] x +# 2207| Type = [Class] ClassWithDestructor +# 2207| ValueCategory = lvalue +# 2207| getArgument(0): [CharLiteral] 97 +# 2207| Type = [PlainCharType] char +# 2207| Value = [CharLiteral] 97 +# 2207| ValueCategory = prvalue +# 2208| getStmt(2): [BreakStmt] break; +# 2209| getStmt(3): [SwitchCase] default: +# 2210| getStmt(4): [ExprStmt] ExprStmt +# 2210| getExpr(): [FunctionCall] call to set_x +# 2210| Type = [VoidType] void +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] x +# 2210| Type = [Class] ClassWithDestructor +# 2210| ValueCategory = lvalue +# 2210| getArgument(0): [CharLiteral] 98 +# 2210| Type = [PlainCharType] char +# 2210| Value = [CharLiteral] 98 +# 2210| ValueCategory = prvalue +# 2211| getStmt(5): [BreakStmt] break; +# 2212| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2212| Type = [VoidType] void +# 2212| ValueCategory = prvalue +# 2212| getQualifier(): [VariableAccess] x +# 2212| Type = [Class] ClassWithDestructor +# 2212| ValueCategory = lvalue +# 2205| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2205| Conversion = [IntegralConversion] integral conversion +# 2205| Type = [IntType] int +# 2205| ValueCategory = prvalue +# 2212| getStmt(3): [LabelStmt] label ...: +# 2214| getStmt(4): [DeclStmt] declaration +# 2214| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2214| Type = [Class] ClassWithDestructor +# 2214| getVariable().getInitializer(): [Initializer] initializer for x +# 2214| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2214| Type = [VoidType] void +# 2214| ValueCategory = prvalue +# 2215| getStmt(5): [RangeBasedForStmt] for(...:...) ... +# 2215| getInitialization(): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2215| getVariable().getInitializer(): [Initializer] initializer for ys +# 2215| getExpr(): [ConstructorCall] call to vector +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getArgument(0): [VariableAccess] x +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = prvalue(load) +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [ReuseExpr] reuse of temporary object +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = xvalue +# 2215| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = lvalue +# 2215| getChild(1): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2201| getExpr(): [VariableAccess] ys -# 2201| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2201| ValueCategory = lvalue -# 2201| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2201| ValueCategory = prvalue -# 2201| getBeginEndDeclaration(): [DeclStmt] declaration -# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| getExpr(): [VariableAccess] ys +# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2215| ValueCategory = lvalue +# 2215| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2215| ValueCategory = prvalue +# 2215| getBeginEndDeclaration(): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2201| getExpr(): [FunctionCall] call to begin -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] (__range) -# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2201| ValueCategory = prvalue(load) +# 2215| getExpr(): [FunctionCall] call to begin +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__range) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2215| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17414,15 +17462,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2201| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2201| getExpr(): [FunctionCall] call to end -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] (__range) -# 2201| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2201| ValueCategory = prvalue(load) +# 2215| getExpr(): [FunctionCall] call to end +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__range) +# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2215| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17430,18 +17478,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2201| getCondition(): [FunctionCall] call to operator!= -# 2201| Type = [BoolType] bool -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] (__begin) -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2201| ValueCategory = lvalue -# 2201| getArgument(0): [ConstructorCall] call to iterator -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getArgument(0): [VariableAccess] (__end) -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2201| ValueCategory = lvalue +# 2215| getCondition(): [FunctionCall] call to operator!= +# 2215| Type = [BoolType] bool +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue +# 2215| getArgument(0): [ConstructorCall] call to iterator +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getArgument(0): [VariableAccess] (__end) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & #-----| ValueCategory = prvalue @@ -17456,95 +17504,95 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2201| getUpdate(): [FunctionCall] call to operator++ -# 2201| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] (__begin) -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2201| ValueCategory = lvalue -# 2201| getChild(5): [DeclStmt] declaration -# 2201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2201| Type = [Class] ClassWithDestructor -# 2201| getVariable().getInitializer(): [Initializer] initializer for y -# 2201| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2201| Type = [LValueReferenceType] ClassWithDestructor & -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] (__begin) -# 2201| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2201| ValueCategory = lvalue +# 2215| getUpdate(): [FunctionCall] call to operator++ +# 2215| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue +# 2215| getChild(5): [DeclStmt] declaration +# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2215| Type = [Class] ClassWithDestructor +# 2215| getVariable().getInitializer(): [Initializer] initializer for y +# 2215| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2215| Type = [LValueReferenceType] ClassWithDestructor & +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] (__begin) +# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2215| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2201| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2201| Type = [Class] ClassWithDestructor -# 2201| ValueCategory = prvalue(load) -# 2202| getStmt(): [ExprStmt] ExprStmt -# 2202| getExpr(): [FunctionCall] call to set_x -# 2202| Type = [VoidType] void -# 2202| ValueCategory = prvalue -# 2202| getQualifier(): [VariableAccess] y -# 2202| Type = [Class] ClassWithDestructor -# 2202| ValueCategory = lvalue -# 2202| getArgument(0): [CharLiteral] 97 -# 2202| Type = [PlainCharType] char -# 2202| Value = [CharLiteral] 97 -# 2202| ValueCategory = prvalue -# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] y -# 2201| Type = [Class] ClassWithDestructor -# 2201| ValueCategory = lvalue -# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] ys -# 2201| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2201| ValueCategory = lvalue -# 2201| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2201| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> -# 2201| ValueCategory = lvalue -# 2204| getStmt(6): [RangeBasedForStmt] for(...:...) ... -# 2204| getInitialization(): [DeclStmt] declaration -# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2204| getVariable().getInitializer(): [Initializer] initializer for ys -# 2204| getExpr(): [ConstructorCall] call to vector -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getArgument(0): [VariableAccess] x -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = prvalue(load) -# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [ReuseExpr] reuse of temporary object -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = xvalue -# 2204| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = lvalue -# 2204| getChild(1): [DeclStmt] declaration -# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2215| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = prvalue(load) +# 2216| getStmt(): [ExprStmt] ExprStmt +# 2216| getExpr(): [FunctionCall] call to set_x +# 2216| Type = [VoidType] void +# 2216| ValueCategory = prvalue +# 2216| getQualifier(): [VariableAccess] y +# 2216| Type = [Class] ClassWithDestructor +# 2216| ValueCategory = lvalue +# 2216| getArgument(0): [CharLiteral] 97 +# 2216| Type = [PlainCharType] char +# 2216| Value = [CharLiteral] 97 +# 2216| ValueCategory = prvalue +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] y +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = lvalue +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] ys +# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2215| ValueCategory = lvalue +# 2215| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2215| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +# 2215| ValueCategory = lvalue +# 2218| getStmt(6): [RangeBasedForStmt] for(...:...) ... +# 2218| getInitialization(): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2218| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2218| getVariable().getInitializer(): [Initializer] initializer for ys +# 2218| getExpr(): [ConstructorCall] call to vector +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getArgument(0): [VariableAccess] x +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = prvalue(load) +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [ReuseExpr] reuse of temporary object +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = xvalue +# 2218| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = lvalue +# 2218| getChild(1): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2218| Type = [LValueReferenceType] vector<ClassWithDestructor> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2204| getExpr(): [VariableAccess] ys -# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2204| ValueCategory = lvalue -# 2204| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2204| ValueCategory = prvalue -# 2204| getBeginEndDeclaration(): [DeclStmt] declaration -# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| getExpr(): [VariableAccess] ys +# 2218| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2218| ValueCategory = lvalue +# 2218| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2218| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2218| ValueCategory = prvalue +# 2218| getBeginEndDeclaration(): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2204| getExpr(): [FunctionCall] call to begin -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] (__range) -# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2204| ValueCategory = prvalue(load) +# 2218| getExpr(): [FunctionCall] call to begin +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__range) +# 2218| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2218| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17552,15 +17600,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2204| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2204| getExpr(): [FunctionCall] call to end -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] (__range) -# 2204| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2204| ValueCategory = prvalue(load) +# 2218| getExpr(): [FunctionCall] call to end +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__range) +# 2218| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2218| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17568,18 +17616,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2204| getCondition(): [FunctionCall] call to operator!= -# 2204| Type = [BoolType] bool -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] (__begin) -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2204| ValueCategory = lvalue -# 2204| getArgument(0): [ConstructorCall] call to iterator -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getArgument(0): [VariableAccess] (__end) -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2204| ValueCategory = lvalue +# 2218| getCondition(): [FunctionCall] call to operator!= +# 2218| Type = [BoolType] bool +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue +# 2218| getArgument(0): [ConstructorCall] call to iterator +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getArgument(0): [VariableAccess] (__end) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & #-----| ValueCategory = prvalue @@ -17594,130 +17642,130 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2204| getUpdate(): [FunctionCall] call to operator++ -# 2204| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] (__begin) -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2204| ValueCategory = lvalue -# 2204| getChild(5): [DeclStmt] declaration -# 2204| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2204| Type = [Class] ClassWithDestructor -# 2204| getVariable().getInitializer(): [Initializer] initializer for y -# 2204| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2204| Type = [LValueReferenceType] ClassWithDestructor & -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] (__begin) -# 2204| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2204| ValueCategory = lvalue +# 2218| getUpdate(): [FunctionCall] call to operator++ +# 2218| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue +# 2218| getChild(5): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2218| Type = [Class] ClassWithDestructor +# 2218| getVariable().getInitializer(): [Initializer] initializer for y +# 2218| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2218| Type = [LValueReferenceType] ClassWithDestructor & +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2204| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = prvalue(load) -# 2204| getStmt(): [BlockStmt] { ... } -# 2205| getStmt(0): [ExprStmt] ExprStmt -# 2205| getExpr(): [FunctionCall] call to set_x -# 2205| Type = [VoidType] void -# 2205| ValueCategory = prvalue -# 2205| getQualifier(): [VariableAccess] y -# 2205| Type = [Class] ClassWithDestructor -# 2205| ValueCategory = lvalue -# 2205| getArgument(0): [CharLiteral] 97 -# 2205| Type = [PlainCharType] char -# 2205| Value = [CharLiteral] 97 -# 2205| ValueCategory = prvalue -# 2206| getStmt(1): [IfStmt] if (...) ... -# 2206| getCondition(): [EQExpr] ... == ... -# 2206| Type = [BoolType] bool -# 2206| ValueCategory = prvalue -# 2206| getLeftOperand(): [FunctionCall] call to get_x -# 2206| Type = [PlainCharType] char -# 2206| ValueCategory = prvalue -# 2206| getQualifier(): [VariableAccess] y -# 2206| Type = [Class] ClassWithDestructor -# 2206| ValueCategory = lvalue -# 2206| getRightOperand(): [CharLiteral] 98 -# 2206| Type = [PlainCharType] char -# 2206| Value = [CharLiteral] 98 -# 2206| ValueCategory = prvalue -# 2206| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... -# 2206| Conversion = [IntegralConversion] integral conversion -# 2206| Type = [IntType] int -# 2206| ValueCategory = prvalue -# 2206| getRightOperand().getFullyConverted(): [CStyleCast] (int)... -# 2206| Conversion = [IntegralConversion] integral conversion -# 2206| Type = [IntType] int -# 2206| Value = [CStyleCast] 98 -# 2206| ValueCategory = prvalue -# 2207| getThen(): [ReturnStmt] return ... -# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] y -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = lvalue -# 2204| getImplicitDestructorCall(1): [DestructorCall] call to ~vector -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] ys -# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2204| ValueCategory = lvalue -# 2219| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor -# 2219| Type = [VoidType] void +# 2218| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = prvalue(load) +# 2218| getStmt(): [BlockStmt] { ... } +# 2219| getStmt(0): [ExprStmt] ExprStmt +# 2219| getExpr(): [FunctionCall] call to set_x +# 2219| Type = [VoidType] void +# 2219| ValueCategory = prvalue +# 2219| getQualifier(): [VariableAccess] y +# 2219| Type = [Class] ClassWithDestructor +# 2219| ValueCategory = lvalue +# 2219| getArgument(0): [CharLiteral] 97 +# 2219| Type = [PlainCharType] char +# 2219| Value = [CharLiteral] 97 # 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] x -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = lvalue -# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] y -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = lvalue -# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] ys -# 2204| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2204| ValueCategory = lvalue -# 2204| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2204| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> -# 2204| ValueCategory = lvalue -# 2210| getStmt(7): [RangeBasedForStmt] for(...:...) ... -# 2210| getInitialization(): [DeclStmt] declaration -# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2210| getVariable().getInitializer(): [Initializer] initializer for ys -# 2210| getExpr(): [ConstructorCall] call to vector -# 2210| Type = [VoidType] void -# 2210| ValueCategory = prvalue -# 2210| getArgument(0): [Literal] 1 -# 2210| Type = [IntType] int -# 2210| Value = [Literal] 1 -# 2210| ValueCategory = prvalue -# 2210| getChild(1): [DeclStmt] declaration -# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2210| Type = [LValueReferenceType] vector<int> & +# 2220| getStmt(1): [IfStmt] if (...) ... +# 2220| getCondition(): [EQExpr] ... == ... +# 2220| Type = [BoolType] bool +# 2220| ValueCategory = prvalue +# 2220| getLeftOperand(): [FunctionCall] call to get_x +# 2220| Type = [PlainCharType] char +# 2220| ValueCategory = prvalue +# 2220| getQualifier(): [VariableAccess] y +# 2220| Type = [Class] ClassWithDestructor +# 2220| ValueCategory = lvalue +# 2220| getRightOperand(): [CharLiteral] 98 +# 2220| Type = [PlainCharType] char +# 2220| Value = [CharLiteral] 98 +# 2220| ValueCategory = prvalue +# 2220| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2220| Conversion = [IntegralConversion] integral conversion +# 2220| Type = [IntType] int +# 2220| ValueCategory = prvalue +# 2220| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 2220| Conversion = [IntegralConversion] integral conversion +# 2220| Type = [IntType] int +# 2220| Value = [CStyleCast] 98 +# 2220| ValueCategory = prvalue +# 2221| getThen(): [ReturnStmt] return ... +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] y +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = lvalue +# 2218| getImplicitDestructorCall(1): [DestructorCall] call to ~vector +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] ys +# 2218| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2218| ValueCategory = lvalue +# 2233| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor +# 2233| Type = [VoidType] void +# 2233| ValueCategory = prvalue +# 2233| getQualifier(): [VariableAccess] x +# 2233| Type = [Class] ClassWithDestructor +# 2233| ValueCategory = lvalue +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] y +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = lvalue +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] ys +# 2218| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2218| ValueCategory = lvalue +# 2218| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2218| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +# 2218| ValueCategory = lvalue +# 2224| getStmt(7): [RangeBasedForStmt] for(...:...) ... +# 2224| getInitialization(): [DeclStmt] declaration +# 2224| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2224| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2224| getVariable().getInitializer(): [Initializer] initializer for ys +# 2224| getExpr(): [ConstructorCall] call to vector +# 2224| Type = [VoidType] void +# 2224| ValueCategory = prvalue +# 2224| getArgument(0): [Literal] 1 +# 2224| Type = [IntType] int +# 2224| Value = [Literal] 1 +# 2224| ValueCategory = prvalue +# 2224| getChild(1): [DeclStmt] declaration +# 2224| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2224| Type = [LValueReferenceType] vector<int> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2210| getExpr(): [VariableAccess] ys -# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2210| ValueCategory = lvalue -# 2210| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2210| Type = [LValueReferenceType] vector<int> & -# 2210| ValueCategory = prvalue -# 2210| getBeginEndDeclaration(): [DeclStmt] declaration -# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| getExpr(): [VariableAccess] ys +# 2224| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2224| ValueCategory = lvalue +# 2224| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2224| Type = [LValueReferenceType] vector<int> & +# 2224| ValueCategory = prvalue +# 2224| getBeginEndDeclaration(): [DeclStmt] declaration +# 2224| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2210| getExpr(): [FunctionCall] call to begin -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] (__range) -# 2210| Type = [LValueReferenceType] vector<int> & -# 2210| ValueCategory = prvalue(load) +# 2224| getExpr(): [FunctionCall] call to begin +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] (__range) +# 2224| Type = [LValueReferenceType] vector<int> & +# 2224| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<int>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<int> @@ -17725,15 +17773,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<int> #-----| ValueCategory = lvalue -# 2210| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2210| getExpr(): [FunctionCall] call to end -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] (__range) -# 2210| Type = [LValueReferenceType] vector<int> & -# 2210| ValueCategory = prvalue(load) +# 2224| getExpr(): [FunctionCall] call to end +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] (__range) +# 2224| Type = [LValueReferenceType] vector<int> & +# 2224| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<int>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<int> @@ -17741,18 +17789,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<int> #-----| ValueCategory = lvalue -# 2210| getCondition(): [FunctionCall] call to operator!= -# 2210| Type = [BoolType] bool -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] (__begin) -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2210| ValueCategory = lvalue -# 2210| getArgument(0): [ConstructorCall] call to iterator -# 2210| Type = [VoidType] void -# 2210| ValueCategory = prvalue -# 2210| getArgument(0): [VariableAccess] (__end) -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2210| ValueCategory = lvalue +# 2224| getCondition(): [FunctionCall] call to operator!= +# 2224| Type = [BoolType] bool +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] (__begin) +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| ValueCategory = lvalue +# 2224| getArgument(0): [ConstructorCall] call to iterator +# 2224| Type = [VoidType] void +# 2224| ValueCategory = prvalue +# 2224| getArgument(0): [VariableAccess] (__end) +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & #-----| ValueCategory = prvalue @@ -17767,103 +17815,103 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 2210| getUpdate(): [FunctionCall] call to operator++ -# 2210| Type = [LValueReferenceType] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] (__begin) -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2210| ValueCategory = lvalue -# 2210| getChild(5): [DeclStmt] declaration -# 2210| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2210| Type = [IntType] int -# 2210| getVariable().getInitializer(): [Initializer] initializer for y -# 2210| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2210| Type = [LValueReferenceType] int & -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] (__begin) -# 2210| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2210| ValueCategory = lvalue +# 2224| getUpdate(): [FunctionCall] call to operator++ +# 2224| Type = [LValueReferenceType] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> & +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] (__begin) +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| ValueCategory = lvalue +# 2224| getChild(5): [DeclStmt] declaration +# 2224| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2224| Type = [IntType] int +# 2224| getVariable().getInitializer(): [Initializer] initializer for y +# 2224| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2224| Type = [LValueReferenceType] int & +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] (__begin) +# 2224| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2224| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> #-----| ValueCategory = lvalue -# 2210| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2210| Type = [IntType] int -# 2210| ValueCategory = prvalue(load) -# 2210| getStmt(): [BlockStmt] { ... } -# 2211| getStmt(0): [IfStmt] if (...) ... -# 2211| getCondition(): [EQExpr] ... == ... -# 2211| Type = [BoolType] bool -# 2211| ValueCategory = prvalue -# 2211| getLeftOperand(): [VariableAccess] y -# 2211| Type = [IntType] int -# 2211| ValueCategory = prvalue(load) -# 2211| getRightOperand(): [Literal] 1 -# 2211| Type = [IntType] int -# 2211| Value = [Literal] 1 -# 2211| ValueCategory = prvalue -# 2212| getThen(): [ReturnStmt] return ... -# 2210| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2210| Type = [VoidType] void -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] ys -# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2210| ValueCategory = lvalue -# 2219| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] x -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = lvalue -# 2210| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2210| Type = [VoidType] void -# 2210| ValueCategory = prvalue -# 2210| getQualifier(): [VariableAccess] ys -# 2210| Type = [ClassTemplateInstantiation,Struct] vector<int> -# 2210| ValueCategory = lvalue -# 2210| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2210| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> -# 2210| ValueCategory = lvalue -# 2215| getStmt(8): [RangeBasedForStmt] for(...:...) ... -# 2215| getInitialization(): [DeclStmt] declaration -# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2215| getVariable().getInitializer(): [Initializer] initializer for ys -# 2215| getExpr(): [ConstructorCall] call to vector -# 2215| Type = [VoidType] void -# 2215| ValueCategory = prvalue -# 2215| getArgument(0): [VariableAccess] x -# 2215| Type = [Class] ClassWithDestructor -# 2215| ValueCategory = prvalue(load) -# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2215| Type = [VoidType] void -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [ReuseExpr] reuse of temporary object -# 2215| Type = [Class] ClassWithDestructor -# 2215| ValueCategory = xvalue -# 2215| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2215| Type = [Class] ClassWithDestructor -# 2215| ValueCategory = lvalue -# 2215| getChild(1): [DeclStmt] declaration -# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2224| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2224| Type = [IntType] int +# 2224| ValueCategory = prvalue(load) +# 2224| getStmt(): [BlockStmt] { ... } +# 2225| getStmt(0): [IfStmt] if (...) ... +# 2225| getCondition(): [EQExpr] ... == ... +# 2225| Type = [BoolType] bool +# 2225| ValueCategory = prvalue +# 2225| getLeftOperand(): [VariableAccess] y +# 2225| Type = [IntType] int +# 2225| ValueCategory = prvalue(load) +# 2225| getRightOperand(): [Literal] 1 +# 2225| Type = [IntType] int +# 2225| Value = [Literal] 1 +# 2225| ValueCategory = prvalue +# 2226| getThen(): [ReturnStmt] return ... +# 2224| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2224| Type = [VoidType] void +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] ys +# 2224| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2224| ValueCategory = lvalue +# 2233| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2233| Type = [VoidType] void +# 2233| ValueCategory = prvalue +# 2233| getQualifier(): [VariableAccess] x +# 2233| Type = [Class] ClassWithDestructor +# 2233| ValueCategory = lvalue +# 2224| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2224| Type = [VoidType] void +# 2224| ValueCategory = prvalue +# 2224| getQualifier(): [VariableAccess] ys +# 2224| Type = [ClassTemplateInstantiation,Struct] vector<int> +# 2224| ValueCategory = lvalue +# 2224| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2224| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> +# 2224| ValueCategory = lvalue +# 2229| getStmt(8): [RangeBasedForStmt] for(...:...) ... +# 2229| getInitialization(): [DeclStmt] declaration +# 2229| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2229| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2229| getVariable().getInitializer(): [Initializer] initializer for ys +# 2229| getExpr(): [ConstructorCall] call to vector +# 2229| Type = [VoidType] void +# 2229| ValueCategory = prvalue +# 2229| getArgument(0): [VariableAccess] x +# 2229| Type = [Class] ClassWithDestructor +# 2229| ValueCategory = prvalue(load) +# 2229| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2229| Type = [VoidType] void +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [ReuseExpr] reuse of temporary object +# 2229| Type = [Class] ClassWithDestructor +# 2229| ValueCategory = xvalue +# 2229| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2229| Type = [Class] ClassWithDestructor +# 2229| ValueCategory = lvalue +# 2229| getChild(1): [DeclStmt] declaration +# 2229| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2229| Type = [LValueReferenceType] vector<ClassWithDestructor> & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2215| getExpr(): [VariableAccess] ys -# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2215| ValueCategory = lvalue -# 2215| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2215| ValueCategory = prvalue -# 2215| getBeginEndDeclaration(): [DeclStmt] declaration -# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| getExpr(): [VariableAccess] ys +# 2229| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2229| ValueCategory = lvalue +# 2229| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2229| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2229| ValueCategory = prvalue +# 2229| getBeginEndDeclaration(): [DeclStmt] declaration +# 2229| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2215| getExpr(): [FunctionCall] call to begin -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [VariableAccess] (__range) -# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2215| ValueCategory = prvalue(load) +# 2229| getExpr(): [FunctionCall] call to begin +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] (__range) +# 2229| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2229| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17871,15 +17919,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2215| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2215| getExpr(): [FunctionCall] call to end -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [VariableAccess] (__range) -# 2215| Type = [LValueReferenceType] vector<ClassWithDestructor> & -# 2215| ValueCategory = prvalue(load) +# 2229| getExpr(): [FunctionCall] call to end +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] (__range) +# 2229| Type = [LValueReferenceType] vector<ClassWithDestructor> & +# 2229| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<ClassWithDestructor>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<ClassWithDestructor> @@ -17887,18 +17935,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> #-----| ValueCategory = lvalue -# 2215| getCondition(): [FunctionCall] call to operator!= -# 2215| Type = [BoolType] bool -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [VariableAccess] (__begin) -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2215| ValueCategory = lvalue -# 2215| getArgument(0): [ConstructorCall] call to iterator -# 2215| Type = [VoidType] void -# 2215| ValueCategory = prvalue -# 2215| getArgument(0): [VariableAccess] (__end) -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2215| ValueCategory = lvalue +# 2229| getCondition(): [FunctionCall] call to operator!= +# 2229| Type = [BoolType] bool +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] (__begin) +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| ValueCategory = lvalue +# 2229| getArgument(0): [ConstructorCall] call to iterator +# 2229| Type = [VoidType] void +# 2229| ValueCategory = prvalue +# 2229| getArgument(0): [VariableAccess] (__end) +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & #-----| ValueCategory = prvalue @@ -17913,667 +17961,422 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2215| getUpdate(): [FunctionCall] call to operator++ -# 2215| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [VariableAccess] (__begin) -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2215| ValueCategory = lvalue -# 2215| getChild(5): [DeclStmt] declaration -# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2215| Type = [Class] ClassWithDestructor -# 2215| getVariable().getInitializer(): [Initializer] initializer for y -# 2215| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2215| Type = [LValueReferenceType] ClassWithDestructor & -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [VariableAccess] (__begin) -# 2215| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2215| ValueCategory = lvalue +# 2229| getUpdate(): [FunctionCall] call to operator++ +# 2229| Type = [LValueReferenceType] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> & +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] (__begin) +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| ValueCategory = lvalue +# 2229| getChild(5): [DeclStmt] declaration +# 2229| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2229| Type = [Class] ClassWithDestructor +# 2229| getVariable().getInitializer(): [Initializer] initializer for y +# 2229| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2229| Type = [LValueReferenceType] ClassWithDestructor & +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] (__begin) +# 2229| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2229| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> #-----| ValueCategory = lvalue -# 2215| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2215| Type = [Class] ClassWithDestructor -# 2215| ValueCategory = prvalue(load) -# 2215| getStmt(): [BlockStmt] { ... } -# 2216| getStmt(0): [DeclStmt] declaration -# 2216| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z1 -# 2216| Type = [Class] ClassWithDestructor -# 2216| getVariable().getInitializer(): [Initializer] initializer for z1 -# 2216| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2216| Type = [VoidType] void -# 2216| ValueCategory = prvalue -# 2217| getStmt(1): [DeclStmt] declaration -# 2217| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z2 -# 2217| Type = [Class] ClassWithDestructor -# 2217| getVariable().getInitializer(): [Initializer] initializer for z2 -# 2217| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2217| Type = [VoidType] void -# 2217| ValueCategory = prvalue -# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2218| Type = [VoidType] void -# 2218| ValueCategory = prvalue -# 2218| getQualifier(): [VariableAccess] z2 -# 2218| Type = [Class] ClassWithDestructor -# 2218| ValueCategory = lvalue -# 2218| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2218| Type = [VoidType] void -# 2218| ValueCategory = prvalue -# 2218| getQualifier(): [VariableAccess] z1 -# 2218| Type = [Class] ClassWithDestructor -# 2218| ValueCategory = lvalue -# 2215| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor -# 2215| Type = [VoidType] void -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [VariableAccess] y -# 2215| Type = [Class] ClassWithDestructor -# 2215| ValueCategory = lvalue -# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2215| Type = [VoidType] void -# 2215| ValueCategory = prvalue -# 2215| getQualifier(): [VariableAccess] ys -# 2215| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> -# 2215| ValueCategory = lvalue -# 2215| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2215| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> -# 2215| ValueCategory = lvalue -# 2219| getStmt(9): [ReturnStmt] return ... -# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] x -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = lvalue -# 2221| [TopLevelFunction] void static_variable_with_destructor_1() -# 2221| <params>: -# 2221| getEntryPoint(): [BlockStmt] { ... } -# 2222| getStmt(0): [DeclStmt] declaration -# 2222| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2222| Type = [Class] ClassWithDestructor -# 2222| getVariable().getInitializer(): [Initializer] initializer for a -# 2222| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2222| Type = [VoidType] void -# 2222| ValueCategory = prvalue -# 2223| getStmt(1): [DeclStmt] declaration -# 2223| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2223| Type = [Class] ClassWithDestructor +# 2229| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2229| Type = [Class] ClassWithDestructor +# 2229| ValueCategory = prvalue(load) +# 2229| getStmt(): [BlockStmt] { ... } +# 2230| getStmt(0): [DeclStmt] declaration +# 2230| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z1 +# 2230| Type = [Class] ClassWithDestructor +# 2230| getVariable().getInitializer(): [Initializer] initializer for z1 +# 2230| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2230| Type = [VoidType] void +# 2230| ValueCategory = prvalue +# 2231| getStmt(1): [DeclStmt] declaration +# 2231| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z2 +# 2231| Type = [Class] ClassWithDestructor +# 2231| getVariable().getInitializer(): [Initializer] initializer for z2 +# 2231| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2231| Type = [VoidType] void +# 2231| ValueCategory = prvalue +# 2232| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] z2 +# 2232| Type = [Class] ClassWithDestructor +# 2232| ValueCategory = lvalue +# 2232| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] z1 +# 2232| Type = [Class] ClassWithDestructor +# 2232| ValueCategory = lvalue +# 2229| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor +# 2229| Type = [VoidType] void +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] y +# 2229| Type = [Class] ClassWithDestructor +# 2229| ValueCategory = lvalue +# 2229| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2229| Type = [VoidType] void +# 2229| ValueCategory = prvalue +# 2229| getQualifier(): [VariableAccess] ys +# 2229| Type = [ClassTemplateInstantiation,Struct] vector<ClassWithDestructor> +# 2229| ValueCategory = lvalue +# 2229| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2229| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> +# 2229| ValueCategory = lvalue +# 2233| getStmt(9): [ReturnStmt] return ... +# 2233| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2233| Type = [VoidType] void +# 2233| ValueCategory = prvalue +# 2233| getQualifier(): [VariableAccess] x +# 2233| Type = [Class] ClassWithDestructor +# 2233| ValueCategory = lvalue +# 2235| [TopLevelFunction] void static_variable_with_destructor_1() +# 2235| <params>: +# 2235| getEntryPoint(): [BlockStmt] { ... } +# 2236| getStmt(0): [DeclStmt] declaration +# 2236| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2236| Type = [Class] ClassWithDestructor +# 2236| getVariable().getInitializer(): [Initializer] initializer for a +# 2236| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2236| Type = [VoidType] void +# 2236| ValueCategory = prvalue +# 2237| getStmt(1): [DeclStmt] declaration +# 2237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2237| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for b #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2224| getStmt(2): [ReturnStmt] return ... -# 2224| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2224| Type = [VoidType] void -# 2224| ValueCategory = prvalue -# 2224| getQualifier(): [VariableAccess] a -# 2224| Type = [Class] ClassWithDestructor -# 2224| ValueCategory = lvalue -# 2226| [TopLevelFunction] void static_variable_with_destructor_2() -# 2226| <params>: -# 2226| getEntryPoint(): [BlockStmt] { ... } -# 2227| getStmt(0): [DeclStmt] declaration -# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2227| Type = [Class] ClassWithDestructor +# 2238| getStmt(2): [ReturnStmt] return ... +# 2238| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2238| Type = [VoidType] void +# 2238| ValueCategory = prvalue +# 2238| getQualifier(): [VariableAccess] a +# 2238| Type = [Class] ClassWithDestructor +# 2238| ValueCategory = lvalue +# 2240| [TopLevelFunction] void static_variable_with_destructor_2() +# 2240| <params>: +# 2240| getEntryPoint(): [BlockStmt] { ... } +# 2241| getStmt(0): [DeclStmt] declaration +# 2241| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2241| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for a #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2228| getStmt(1): [DeclStmt] declaration -# 2228| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2228| Type = [Class] ClassWithDestructor -# 2228| getVariable().getInitializer(): [Initializer] initializer for b -# 2228| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2228| Type = [VoidType] void -# 2228| ValueCategory = prvalue -# 2229| getStmt(2): [ReturnStmt] return ... -# 2229| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2229| Type = [VoidType] void -# 2229| ValueCategory = prvalue -# 2229| getQualifier(): [VariableAccess] b -# 2229| Type = [Class] ClassWithDestructor -# 2229| ValueCategory = lvalue -# 2231| [TopLevelFunction] void static_variable_with_destructor_3() -# 2231| <params>: -# 2231| getEntryPoint(): [BlockStmt] { ... } -# 2232| getStmt(0): [DeclStmt] declaration -# 2232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2232| Type = [Class] ClassWithDestructor -# 2232| getVariable().getInitializer(): [Initializer] initializer for a -# 2232| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2232| Type = [VoidType] void -# 2232| ValueCategory = prvalue -# 2233| getStmt(1): [DeclStmt] declaration -# 2233| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2233| Type = [Class] ClassWithDestructor -# 2233| getVariable().getInitializer(): [Initializer] initializer for b -# 2233| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2233| Type = [VoidType] void -# 2233| ValueCategory = prvalue -# 2234| getStmt(2): [DeclStmt] declaration -# 2234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2234| Type = [Class] ClassWithDestructor +# 2242| getStmt(1): [DeclStmt] declaration +# 2242| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2242| Type = [Class] ClassWithDestructor +# 2242| getVariable().getInitializer(): [Initializer] initializer for b +# 2242| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2242| Type = [VoidType] void +# 2242| ValueCategory = prvalue +# 2243| getStmt(2): [ReturnStmt] return ... +# 2243| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2243| Type = [VoidType] void +# 2243| ValueCategory = prvalue +# 2243| getQualifier(): [VariableAccess] b +# 2243| Type = [Class] ClassWithDestructor +# 2243| ValueCategory = lvalue +# 2245| [TopLevelFunction] void static_variable_with_destructor_3() +# 2245| <params>: +# 2245| getEntryPoint(): [BlockStmt] { ... } +# 2246| getStmt(0): [DeclStmt] declaration +# 2246| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2246| Type = [Class] ClassWithDestructor +# 2246| getVariable().getInitializer(): [Initializer] initializer for a +# 2246| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2246| Type = [VoidType] void +# 2246| ValueCategory = prvalue +# 2247| getStmt(1): [DeclStmt] declaration +# 2247| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2247| Type = [Class] ClassWithDestructor +# 2247| getVariable().getInitializer(): [Initializer] initializer for b +# 2247| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2247| Type = [VoidType] void +# 2247| ValueCategory = prvalue +# 2248| getStmt(2): [DeclStmt] declaration +# 2248| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2248| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for c #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2235| getStmt(3): [ReturnStmt] return ... -# 2235| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2235| Type = [VoidType] void -# 2235| ValueCategory = prvalue -# 2235| getQualifier(): [VariableAccess] b -# 2235| Type = [Class] ClassWithDestructor -# 2235| ValueCategory = lvalue -# 2235| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2235| Type = [VoidType] void -# 2235| ValueCategory = prvalue -# 2235| getQualifier(): [VariableAccess] a -# 2235| Type = [Class] ClassWithDestructor -# 2235| ValueCategory = lvalue -# 2237| [GlobalVariable] ClassWithDestructor global_class_with_destructor -# 2237| getInitializer(): [Initializer] initializer for global_class_with_destructor -# 2237| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2237| Type = [VoidType] void -# 2237| ValueCategory = prvalue -# 2241| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) -# 2241| <params>: -# 2241| getParameter(0): [Parameter] t -# 2241| Type = [LValueReferenceType] ClassWithDestructor & -# 2241| getEntryPoint(): [BlockStmt] { ... } -# 2241| getStmt(0): [ReturnStmt] return ... -# 2241| getExpr(): [VariableAccess] t -# 2241| Type = [LValueReferenceType] ClassWithDestructor & -# 2241| ValueCategory = prvalue(load) -# 2241| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2241| Type = [LValueReferenceType] ClassWithDestructor & -# 2241| ValueCategory = prvalue -# 2241| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2241| Type = [Class] ClassWithDestructor -# 2241| ValueCategory = lvalue -# 2241| [TemplateFunction,TopLevelFunction] T& vacuous_destructor_call::get<T>(T&) -# 2241| <params>: -# 2241| getParameter(0): [Parameter] t -# 2241| Type = [LValueReferenceType] T & -# 2241| getEntryPoint(): [BlockStmt] { ... } -# 2241| getStmt(0): [ReturnStmt] return ... -# 2241| getExpr(): [VariableAccess] t -# 2241| Type = [LValueReferenceType] T & -# 2241| ValueCategory = prvalue(load) -# 2241| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2241| Type = [TemplateParameter] T -# 2241| ValueCategory = lvalue -# 2241| [FunctionTemplateInstantiation,TopLevelFunction] int& vacuous_destructor_call::get<int>(int&) -# 2241| <params>: -# 2241| getParameter(0): [Parameter] t -# 2241| Type = [LValueReferenceType] int & -# 2241| getEntryPoint(): [BlockStmt] { ... } -# 2241| getStmt(0): [ReturnStmt] return ... -# 2241| getExpr(): [VariableAccess] t -# 2241| Type = [LValueReferenceType] int & -# 2241| ValueCategory = prvalue(load) -# 2241| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2241| Type = [LValueReferenceType] int & -# 2241| ValueCategory = prvalue -# 2241| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2241| Type = [IntType] int -# 2241| ValueCategory = lvalue -# 2244| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) -# 2244| <params>: -# 2244| getParameter(0): [Parameter] t -# 2244| Type = [LValueReferenceType] ClassWithDestructor & -# 2244| getEntryPoint(): [BlockStmt] { ... } -# 2245| getStmt(0): [ExprStmt] ExprStmt -# 2245| getExpr(): [DestructorCall] call to ~ClassWithDestructor -# 2245| Type = [VoidType] void -# 2245| ValueCategory = prvalue -# 2245| getQualifier(): [FunctionCall] call to get -# 2245| Type = [LValueReferenceType] ClassWithDestructor & -# 2245| ValueCategory = prvalue -# 2245| getArgument(0): [VariableAccess] t -# 2245| Type = [LValueReferenceType] ClassWithDestructor & -# 2245| ValueCategory = prvalue(load) -# 2245| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2245| Type = [LValueReferenceType] ClassWithDestructor & -# 2245| ValueCategory = prvalue -# 2245| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2245| Type = [Class] ClassWithDestructor -# 2245| ValueCategory = lvalue -# 2245| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2245| Type = [Class] ClassWithDestructor -# 2245| ValueCategory = lvalue -# 2246| getStmt(1): [ReturnStmt] return ... -# 2244| [TemplateFunction,TopLevelFunction] void vacuous_destructor_call::call_destructor<T>(T&) -# 2244| <params>: -# 2244| getParameter(0): [Parameter] t -# 2244| Type = [LValueReferenceType] T & -# 2244| getEntryPoint(): [BlockStmt] { ... } -# 2245| getStmt(0): [ExprStmt] ExprStmt -# 2245| getExpr(): [ExprCall] call to expression -# 2245| Type = [UnknownType] unknown -# 2245| ValueCategory = prvalue -# 2245| getExpr(): [Literal] Unknown literal -# 2245| Type = [UnknownType] unknown -# 2245| ValueCategory = prvalue -# 2245| getChild(-1): [ExprCall] call to expression -# 2245| Type = [UnknownType] unknown -# 2245| ValueCategory = prvalue -# 2245| getExpr(): [Literal] Unknown literal -# 2245| Type = [UnknownType] unknown -# 2245| ValueCategory = prvalue -# 2245| getArgument(0): [VariableAccess] t -# 2245| Type = [LValueReferenceType] T & -# 2245| ValueCategory = prvalue(load) -# 2245| getArgument(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2245| Type = [TemplateParameter] T -# 2245| ValueCategory = lvalue -# 2246| getStmt(1): [ReturnStmt] return ... -# 2244| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<int>(int&) -# 2244| <params>: -# 2244| getParameter(0): [Parameter] t -# 2244| Type = [LValueReferenceType] int & -# 2244| getEntryPoint(): [BlockStmt] { ... } -# 2245| getStmt(0): [ExprStmt] ExprStmt -# 2245| getExpr(): [VacuousDestructorCall] (vacuous destructor call) -# 2245| Type = [VoidType] void -# 2245| ValueCategory = prvalue -# 2245| getChild(0): [FunctionCall] call to get -# 2245| Type = [LValueReferenceType] int & -# 2245| ValueCategory = prvalue -# 2245| getArgument(0): [VariableAccess] t -# 2245| Type = [LValueReferenceType] int & -# 2245| ValueCategory = prvalue(load) -# 2245| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2245| Type = [LValueReferenceType] int & -# 2245| ValueCategory = prvalue -# 2245| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2245| Type = [IntType] int -# 2245| ValueCategory = lvalue -# 2245| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2245| Type = [IntType] int -# 2245| ValueCategory = lvalue -# 2246| getStmt(1): [ReturnStmt] return ... -# 2248| [TopLevelFunction] void vacuous_destructor_call::non_vacuous_destructor_call() -# 2248| <params>: -# 2248| getEntryPoint(): [BlockStmt] { ... } -# 2249| getStmt(0): [DeclStmt] declaration -# 2249| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2249| Type = [Class] ClassWithDestructor -# 2249| getVariable().getInitializer(): [Initializer] initializer for c -# 2249| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2249| Type = [VoidType] void -# 2249| ValueCategory = prvalue -# 2250| getStmt(1): [ExprStmt] ExprStmt -# 2250| getExpr(): [FunctionCall] call to call_destructor -# 2250| Type = [VoidType] void -# 2250| ValueCategory = prvalue -# 2250| getArgument(0): [VariableAccess] c -# 2250| Type = [Class] ClassWithDestructor -# 2250| ValueCategory = lvalue -# 2250| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2250| Type = [LValueReferenceType] ClassWithDestructor & -# 2250| ValueCategory = prvalue -# 2251| getStmt(2): [ReturnStmt] return ... -# 2251| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2251| Type = [VoidType] void -# 2251| ValueCategory = prvalue -# 2251| getQualifier(): [VariableAccess] c -# 2251| Type = [Class] ClassWithDestructor -# 2251| ValueCategory = lvalue -# 2253| [TopLevelFunction] void vacuous_destructor_call::vacuous_destructor_call() -# 2253| <params>: -# 2253| getEntryPoint(): [BlockStmt] { ... } -# 2254| getStmt(0): [DeclStmt] declaration -# 2254| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 2254| Type = [IntType] int -# 2255| getStmt(1): [ExprStmt] ExprStmt -# 2255| getExpr(): [FunctionCall] call to call_destructor -# 2255| Type = [VoidType] void +# 2249| getStmt(3): [ReturnStmt] return ... +# 2249| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2249| Type = [VoidType] void +# 2249| ValueCategory = prvalue +# 2249| getQualifier(): [VariableAccess] b +# 2249| Type = [Class] ClassWithDestructor +# 2249| ValueCategory = lvalue +# 2249| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2249| Type = [VoidType] void +# 2249| ValueCategory = prvalue +# 2249| getQualifier(): [VariableAccess] a +# 2249| Type = [Class] ClassWithDestructor +# 2249| ValueCategory = lvalue +# 2251| [GlobalVariable] ClassWithDestructor global_class_with_destructor +# 2251| getInitializer(): [Initializer] initializer for global_class_with_destructor +# 2251| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2251| Type = [VoidType] void +# 2251| ValueCategory = prvalue +# 2255| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) +# 2255| <params>: +# 2255| getParameter(0): [Parameter] t +# 2255| Type = [LValueReferenceType] ClassWithDestructor & +# 2255| getEntryPoint(): [BlockStmt] { ... } +# 2255| getStmt(0): [ReturnStmt] return ... +# 2255| getExpr(): [VariableAccess] t +# 2255| Type = [LValueReferenceType] ClassWithDestructor & +# 2255| ValueCategory = prvalue(load) +# 2255| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2255| Type = [LValueReferenceType] ClassWithDestructor & +# 2255| ValueCategory = prvalue +# 2255| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2255| Type = [Class] ClassWithDestructor +# 2255| ValueCategory = lvalue +# 2255| [TemplateFunction,TopLevelFunction] T& vacuous_destructor_call::get<T>(T&) +# 2255| <params>: +# 2255| getParameter(0): [Parameter] t +# 2255| Type = [LValueReferenceType] T & +# 2255| getEntryPoint(): [BlockStmt] { ... } +# 2255| getStmt(0): [ReturnStmt] return ... +# 2255| getExpr(): [VariableAccess] t +# 2255| Type = [LValueReferenceType] T & +# 2255| ValueCategory = prvalue(load) +# 2255| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2255| Type = [TemplateParameter] T +# 2255| ValueCategory = lvalue +# 2255| [FunctionTemplateInstantiation,TopLevelFunction] int& vacuous_destructor_call::get<int>(int&) +# 2255| <params>: +# 2255| getParameter(0): [Parameter] t +# 2255| Type = [LValueReferenceType] int & +# 2255| getEntryPoint(): [BlockStmt] { ... } +# 2255| getStmt(0): [ReturnStmt] return ... +# 2255| getExpr(): [VariableAccess] t +# 2255| Type = [LValueReferenceType] int & +# 2255| ValueCategory = prvalue(load) +# 2255| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2255| Type = [LValueReferenceType] int & # 2255| ValueCategory = prvalue -# 2255| getArgument(0): [VariableAccess] i +# 2255| getExpr(): [ReferenceDereferenceExpr] (reference dereference) # 2255| Type = [IntType] int # 2255| ValueCategory = lvalue -# 2255| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2255| Type = [LValueReferenceType] int & -# 2255| ValueCategory = prvalue -# 2256| getStmt(2): [ReturnStmt] return ... -# 2259| [TopLevelFunction] void TryCatchDestructors(bool) -# 2259| <params>: -# 2259| getParameter(0): [Parameter] b -# 2259| Type = [BoolType] bool -# 2259| getEntryPoint(): [BlockStmt] { ... } -# 2260| getStmt(0): [TryStmt] try { ... } -# 2260| getStmt(): [BlockStmt] { ... } -# 2261| getStmt(0): [DeclStmt] declaration -# 2261| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2261| Type = [Struct] String -# 2261| getVariable().getInitializer(): [Initializer] initializer for s -# 2261| getExpr(): [ConstructorCall] call to String -# 2261| Type = [VoidType] void -# 2261| ValueCategory = prvalue -# 2262| getStmt(1): [IfStmt] if (...) ... -# 2262| getCondition(): [VariableAccess] b -# 2262| Type = [BoolType] bool -# 2262| ValueCategory = prvalue(load) -# 2262| getThen(): [BlockStmt] { ... } -# 2263| getStmt(0): [ExprStmt] ExprStmt -# 2263| getExpr(): [ThrowExpr] throw ... -# 2263| Type = [PointerType] const char * -# 2263| ValueCategory = prvalue -# 2263| getExpr(): string literal -# 2263| Type = [ArrayType] const char[15] -# 2263| Value = [StringLiteral] "string literal" -# 2263| ValueCategory = lvalue -# 2266| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2266| Type = [VoidType] void -# 2266| ValueCategory = prvalue -# 2266| getQualifier(): [VariableAccess] s -# 2266| Type = [Struct] String -# 2266| ValueCategory = lvalue -# 2263| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2263| Type = [PointerType] const char * -# 2263| ValueCategory = prvalue -# 2265| getStmt(2): [DeclStmt] declaration -# 2265| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 -# 2265| Type = [Struct] String -# 2265| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2265| getExpr(): [ConstructorCall] call to String -# 2265| Type = [VoidType] void -# 2265| ValueCategory = prvalue -# 2266| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2266| Type = [VoidType] void -# 2266| ValueCategory = prvalue -# 2266| getQualifier(): [VariableAccess] s2 -# 2266| Type = [Struct] String -# 2266| ValueCategory = lvalue -# 2266| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 2266| Type = [VoidType] void -# 2266| ValueCategory = prvalue -# 2266| getQualifier(): [VariableAccess] s -# 2266| Type = [Struct] String -# 2266| ValueCategory = lvalue -# 2267| getChild(1): [Handler] <handler> -# 2267| getBlock(): [CatchBlock] { ... } -# 2268| getStmt(0): [ExprStmt] ExprStmt -# 2268| getExpr(): [ThrowExpr] throw ... -# 2268| Type = [Struct] String -# 2268| ValueCategory = prvalue -# 2268| getExpr(): [ConstructorCall] call to String -# 2268| Type = [VoidType] void -# 2268| ValueCategory = prvalue -# 2268| getArgument(0): [VariableAccess] s -# 2268| Type = [PointerType] const char * -# 2268| ValueCategory = prvalue(load) -# 2270| getChild(2): [Handler] <handler> -# 2270| getBlock(): [CatchBlock] { ... } -# 2272| getChild(3): [Handler] <handler> -# 2272| getBlock(): [CatchAnyBlock] { ... } -# 2273| getStmt(0): [ExprStmt] ExprStmt -# 2273| getExpr(): [ReThrowExpr] re-throw exception -# 2273| Type = [VoidType] void -# 2273| ValueCategory = prvalue -# 2275| getStmt(1): [ReturnStmt] return ... -# 2277| [TopLevelFunction] void IfDestructors(bool) -# 2277| <params>: -# 2277| getParameter(0): [Parameter] b -# 2277| Type = [BoolType] bool -# 2277| getEntryPoint(): [BlockStmt] { ... } -# 2278| getStmt(0): [DeclStmt] declaration -# 2278| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 -# 2278| Type = [Struct] String -# 2278| getVariable().getInitializer(): [Initializer] initializer for s1 -# 2278| getExpr(): [ConstructorCall] call to String -# 2278| Type = [VoidType] void -# 2278| ValueCategory = prvalue -# 2279| getStmt(1): [IfStmt] if (...) ... -# 2279| getCondition(): [VariableAccess] b -# 2279| Type = [BoolType] bool -# 2279| ValueCategory = prvalue(load) -# 2279| getThen(): [BlockStmt] { ... } -# 2280| getStmt(0): [DeclStmt] declaration -# 2280| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2258| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) +# 2258| <params>: +# 2258| getParameter(0): [Parameter] t +# 2258| Type = [LValueReferenceType] ClassWithDestructor & +# 2258| getEntryPoint(): [BlockStmt] { ... } +# 2259| getStmt(0): [ExprStmt] ExprStmt +# 2259| getExpr(): [DestructorCall] call to ~ClassWithDestructor +# 2259| Type = [VoidType] void +# 2259| ValueCategory = prvalue +# 2259| getQualifier(): [FunctionCall] call to get +# 2259| Type = [LValueReferenceType] ClassWithDestructor & +# 2259| ValueCategory = prvalue +# 2259| getArgument(0): [VariableAccess] t +# 2259| Type = [LValueReferenceType] ClassWithDestructor & +# 2259| ValueCategory = prvalue(load) +# 2259| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2259| Type = [LValueReferenceType] ClassWithDestructor & +# 2259| ValueCategory = prvalue +# 2259| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2259| Type = [Class] ClassWithDestructor +# 2259| ValueCategory = lvalue +# 2259| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2259| Type = [Class] ClassWithDestructor +# 2259| ValueCategory = lvalue +# 2260| getStmt(1): [ReturnStmt] return ... +# 2258| [TemplateFunction,TopLevelFunction] void vacuous_destructor_call::call_destructor<T>(T&) +# 2258| <params>: +# 2258| getParameter(0): [Parameter] t +# 2258| Type = [LValueReferenceType] T & +# 2258| getEntryPoint(): [BlockStmt] { ... } +# 2259| getStmt(0): [ExprStmt] ExprStmt +# 2259| getExpr(): [ExprCall] call to expression +# 2259| Type = [UnknownType] unknown +# 2259| ValueCategory = prvalue +# 2259| getExpr(): [Literal] Unknown literal +# 2259| Type = [UnknownType] unknown +# 2259| ValueCategory = prvalue +# 2259| getChild(-1): [ExprCall] call to expression +# 2259| Type = [UnknownType] unknown +# 2259| ValueCategory = prvalue +# 2259| getExpr(): [Literal] Unknown literal +# 2259| Type = [UnknownType] unknown +# 2259| ValueCategory = prvalue +# 2259| getArgument(0): [VariableAccess] t +# 2259| Type = [LValueReferenceType] T & +# 2259| ValueCategory = prvalue(load) +# 2259| getArgument(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2259| Type = [TemplateParameter] T +# 2259| ValueCategory = lvalue +# 2260| getStmt(1): [ReturnStmt] return ... +# 2258| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<int>(int&) +# 2258| <params>: +# 2258| getParameter(0): [Parameter] t +# 2258| Type = [LValueReferenceType] int & +# 2258| getEntryPoint(): [BlockStmt] { ... } +# 2259| getStmt(0): [ExprStmt] ExprStmt +# 2259| getExpr(): [VacuousDestructorCall] (vacuous destructor call) +# 2259| Type = [VoidType] void +# 2259| ValueCategory = prvalue +# 2259| getChild(0): [FunctionCall] call to get +# 2259| Type = [LValueReferenceType] int & +# 2259| ValueCategory = prvalue +# 2259| getArgument(0): [VariableAccess] t +# 2259| Type = [LValueReferenceType] int & +# 2259| ValueCategory = prvalue(load) +# 2259| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2259| Type = [LValueReferenceType] int & +# 2259| ValueCategory = prvalue +# 2259| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2259| Type = [IntType] int +# 2259| ValueCategory = lvalue +# 2259| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2259| Type = [IntType] int +# 2259| ValueCategory = lvalue +# 2260| getStmt(1): [ReturnStmt] return ... +# 2262| [TopLevelFunction] void vacuous_destructor_call::non_vacuous_destructor_call() +# 2262| <params>: +# 2262| getEntryPoint(): [BlockStmt] { ... } +# 2263| getStmt(0): [DeclStmt] declaration +# 2263| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2263| Type = [Class] ClassWithDestructor +# 2263| getVariable().getInitializer(): [Initializer] initializer for c +# 2263| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2263| Type = [VoidType] void +# 2263| ValueCategory = prvalue +# 2264| getStmt(1): [ExprStmt] ExprStmt +# 2264| getExpr(): [FunctionCall] call to call_destructor +# 2264| Type = [VoidType] void +# 2264| ValueCategory = prvalue +# 2264| getArgument(0): [VariableAccess] c +# 2264| Type = [Class] ClassWithDestructor +# 2264| ValueCategory = lvalue +# 2264| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2264| Type = [LValueReferenceType] ClassWithDestructor & +# 2264| ValueCategory = prvalue +# 2265| getStmt(2): [ReturnStmt] return ... +# 2265| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2265| Type = [VoidType] void +# 2265| ValueCategory = prvalue +# 2265| getQualifier(): [VariableAccess] c +# 2265| Type = [Class] ClassWithDestructor +# 2265| ValueCategory = lvalue +# 2267| [TopLevelFunction] void vacuous_destructor_call::vacuous_destructor_call() +# 2267| <params>: +# 2267| getEntryPoint(): [BlockStmt] { ... } +# 2268| getStmt(0): [DeclStmt] declaration +# 2268| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 2268| Type = [IntType] int +# 2269| getStmt(1): [ExprStmt] ExprStmt +# 2269| getExpr(): [FunctionCall] call to call_destructor +# 2269| Type = [VoidType] void +# 2269| ValueCategory = prvalue +# 2269| getArgument(0): [VariableAccess] i +# 2269| Type = [IntType] int +# 2269| ValueCategory = lvalue +# 2269| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2269| Type = [LValueReferenceType] int & +# 2269| ValueCategory = prvalue +# 2270| getStmt(2): [ReturnStmt] return ... +# 2273| [TopLevelFunction] void TryCatchDestructors(bool) +# 2273| <params>: +# 2273| getParameter(0): [Parameter] b +# 2273| Type = [BoolType] bool +# 2273| getEntryPoint(): [BlockStmt] { ... } +# 2274| getStmt(0): [TryStmt] try { ... } +# 2274| getStmt(): [BlockStmt] { ... } +# 2275| getStmt(0): [DeclStmt] declaration +# 2275| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2275| Type = [Struct] String +# 2275| getVariable().getInitializer(): [Initializer] initializer for s +# 2275| getExpr(): [ConstructorCall] call to String +# 2275| Type = [VoidType] void +# 2275| ValueCategory = prvalue +# 2276| getStmt(1): [IfStmt] if (...) ... +# 2276| getCondition(): [VariableAccess] b +# 2276| Type = [BoolType] bool +# 2276| ValueCategory = prvalue(load) +# 2276| getThen(): [BlockStmt] { ... } +# 2277| getStmt(0): [ExprStmt] ExprStmt +# 2277| getExpr(): [ThrowExpr] throw ... +# 2277| Type = [PointerType] const char * +# 2277| ValueCategory = prvalue +# 2277| getExpr(): string literal +# 2277| Type = [ArrayType] const char[15] +# 2277| Value = [StringLiteral] "string literal" +# 2277| ValueCategory = lvalue +# 2280| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2280| Type = [VoidType] void +# 2280| ValueCategory = prvalue +# 2280| getQualifier(): [VariableAccess] s +# 2280| Type = [Struct] String +# 2280| ValueCategory = lvalue +# 2277| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2277| Type = [PointerType] const char * +# 2277| ValueCategory = prvalue +# 2279| getStmt(2): [DeclStmt] declaration +# 2279| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2279| Type = [Struct] String +# 2279| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2279| getExpr(): [ConstructorCall] call to String +# 2279| Type = [VoidType] void +# 2279| ValueCategory = prvalue +# 2280| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2280| Type = [VoidType] void +# 2280| ValueCategory = prvalue +# 2280| getQualifier(): [VariableAccess] s2 +# 2280| Type = [Struct] String +# 2280| ValueCategory = lvalue +# 2280| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2280| Type = [VoidType] void +# 2280| ValueCategory = prvalue +# 2280| getQualifier(): [VariableAccess] s # 2280| Type = [Struct] String -# 2280| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2280| getExpr(): [ConstructorCall] call to String -# 2280| Type = [VoidType] void -# 2280| ValueCategory = prvalue -# 2281| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2281| Type = [VoidType] void -# 2281| ValueCategory = prvalue -# 2281| getQualifier(): [VariableAccess] s2 -# 2281| Type = [Struct] String -# 2281| ValueCategory = lvalue -# 2281| getElse(): [BlockStmt] { ... } -# 2282| getStmt(0): [DeclStmt] declaration -# 2282| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s3 -# 2282| Type = [Struct] String -# 2282| getVariable().getInitializer(): [Initializer] initializer for s3 +# 2280| ValueCategory = lvalue +# 2281| getChild(1): [Handler] <handler> +# 2281| getBlock(): [CatchBlock] { ... } +# 2282| getStmt(0): [ExprStmt] ExprStmt +# 2282| getExpr(): [ThrowExpr] throw ... +# 2282| Type = [Struct] String +# 2282| ValueCategory = prvalue # 2282| getExpr(): [ConstructorCall] call to String # 2282| Type = [VoidType] void # 2282| ValueCategory = prvalue -# 2283| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2283| Type = [VoidType] void -# 2283| ValueCategory = prvalue -# 2283| getQualifier(): [VariableAccess] s3 -# 2283| Type = [Struct] String -# 2283| ValueCategory = lvalue -# 2284| getStmt(2): [DeclStmt] declaration -# 2284| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s4 -# 2284| Type = [Struct] String -# 2284| getVariable().getInitializer(): [Initializer] initializer for s4 -# 2284| getExpr(): [ConstructorCall] call to String -# 2284| Type = [VoidType] void -# 2284| ValueCategory = prvalue -# 2285| getStmt(3): [ReturnStmt] return ... -# 2285| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2285| Type = [VoidType] void -# 2285| ValueCategory = prvalue -# 2285| getQualifier(): [VariableAccess] s4 -# 2285| Type = [Struct] String -# 2285| ValueCategory = lvalue -# 2285| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 2285| Type = [VoidType] void -# 2285| ValueCategory = prvalue -# 2285| getQualifier(): [VariableAccess] s1 -# 2285| Type = [Struct] String -# 2285| ValueCategory = lvalue -# 2287| [TopLevelFunction] void ForDestructors() -# 2287| <params>: -# 2287| getEntryPoint(): [BlockStmt] { ... } -# 2288| getStmt(0): [DeclStmt] declaration -# 2288| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2288| Type = [PlainCharType] char -# 2288| getVariable().getInitializer(): [Initializer] initializer for c -# 2288| getExpr(): [CharLiteral] 97 -# 2288| Type = [PlainCharType] char -# 2288| Value = [CharLiteral] 97 -# 2288| ValueCategory = prvalue -# 2289| getStmt(1): [ForStmt] for(...;...;...) ... -# 2289| getInitialization(): [DeclStmt] declaration -# 2289| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2289| Type = [Struct] String -# 2289| getVariable().getInitializer(): [Initializer] initializer for s -# 2289| getExpr(): [ConstructorCall] call to String -# 2289| Type = [VoidType] void -# 2289| ValueCategory = prvalue -# 2289| getArgument(0): hello -# 2289| Type = [ArrayType] const char[6] -# 2289| Value = [StringLiteral] "hello" -# 2289| ValueCategory = lvalue -# 2289| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2289| Type = [PointerType] const char * -# 2289| ValueCategory = prvalue -# 2289| getCondition(): [NEExpr] ... != ... -# 2289| Type = [BoolType] bool -# 2289| ValueCategory = prvalue -# 2289| getLeftOperand(): [VariableAccess] c -# 2289| Type = [PlainCharType] char -# 2289| ValueCategory = prvalue(load) -# 2289| getRightOperand(): [Literal] 0 -# 2289| Type = [IntType] int -# 2289| Value = [Literal] 0 -# 2289| ValueCategory = prvalue -# 2289| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... -# 2289| Conversion = [IntegralConversion] integral conversion -# 2289| Type = [IntType] int -# 2289| ValueCategory = prvalue -# 2289| getUpdate(): [AssignExpr] ... = ... -# 2289| Type = [PlainCharType] char -# 2289| ValueCategory = lvalue -# 2289| getLValue(): [VariableAccess] c -# 2289| Type = [PlainCharType] char -# 2289| ValueCategory = lvalue -# 2289| getRValue(): [FunctionCall] call to pop_back -# 2289| Type = [PlainCharType] char -# 2289| ValueCategory = prvalue -# 2289| getQualifier(): [VariableAccess] s -# 2289| Type = [Struct] String -# 2289| ValueCategory = lvalue -# 2289| getStmt(): [BlockStmt] { ... } -# 2290| getStmt(0): [DeclStmt] declaration -# 2290| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 -# 2290| Type = [Struct] String -# 2290| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2290| getExpr(): [ConstructorCall] call to String -# 2290| Type = [VoidType] void -# 2290| ValueCategory = prvalue -# 2291| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2291| Type = [VoidType] void -# 2291| ValueCategory = prvalue -# 2291| getQualifier(): [VariableAccess] s2 -# 2291| Type = [Struct] String -# 2291| ValueCategory = lvalue -# 2289| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2289| Type = [VoidType] void -# 2289| ValueCategory = prvalue -# 2289| getQualifier(): [VariableAccess] s -# 2289| Type = [Struct] String -# 2289| ValueCategory = lvalue -# 2293| getStmt(2): [RangeBasedForStmt] for(...:...) ... -# 2293| getChild(1): [DeclStmt] declaration -# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2293| Type = [RValueReferenceType] vector<String> && -#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2293| getExpr(): [ConstructorCall] call to vector -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2293| getArgument(0): [ConstructorCall] call to String -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2293| getArgument(0): hello -# 2293| Type = [ArrayType] const char[6] -# 2293| Value = [StringLiteral] "hello" -# 2293| ValueCategory = lvalue -# 2293| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2293| Type = [PointerType] const char * -# 2293| ValueCategory = prvalue -# 2293| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2293| getQualifier(): [ReuseExpr] reuse of temporary object -# 2293| Type = [Struct] String -# 2293| ValueCategory = xvalue -# 2293| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2293| Type = [Struct] String -# 2293| ValueCategory = lvalue -# 2293| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2293| Type = [LValueReferenceType] vector<String> & -# 2293| ValueCategory = prvalue -# 2293| getExpr(): [TemporaryObjectExpr] temporary object -# 2293| Type = [ClassTemplateInstantiation,Struct] vector<String> -# 2293| ValueCategory = xvalue -# 2293| getBeginEndDeclaration(): [DeclStmt] declaration -# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2293| getExpr(): [FunctionCall] call to begin -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2293| ValueCategory = prvalue -# 2293| getQualifier(): [VariableAccess] (__range) -# 2293| Type = [RValueReferenceType] vector<String> && -# 2293| 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 -# 2293| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2293| getExpr(): [FunctionCall] call to end -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2293| ValueCategory = prvalue -# 2293| getQualifier(): [VariableAccess] (__range) -# 2293| Type = [RValueReferenceType] vector<String> && -# 2293| 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 -# 2293| getCondition(): [FunctionCall] call to operator!= +# 2282| getArgument(0): [VariableAccess] s +# 2282| Type = [PointerType] const char * +# 2282| ValueCategory = prvalue(load) +# 2284| getChild(2): [Handler] <handler> +# 2284| getBlock(): [CatchBlock] { ... } +# 2286| getChild(3): [Handler] <handler> +# 2286| getBlock(): [CatchAnyBlock] { ... } +# 2287| getStmt(0): [ExprStmt] ExprStmt +# 2287| getExpr(): [ReThrowExpr] re-throw exception +# 2287| Type = [VoidType] void +# 2287| ValueCategory = prvalue +# 2289| getStmt(1): [ReturnStmt] return ... +# 2291| [TopLevelFunction] void IfDestructors(bool) +# 2291| <params>: +# 2291| getParameter(0): [Parameter] b +# 2291| Type = [BoolType] bool +# 2291| getEntryPoint(): [BlockStmt] { ... } +# 2292| getStmt(0): [DeclStmt] declaration +# 2292| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 +# 2292| Type = [Struct] String +# 2292| getVariable().getInitializer(): [Initializer] initializer for s1 +# 2292| getExpr(): [ConstructorCall] call to String +# 2292| Type = [VoidType] void +# 2292| ValueCategory = prvalue +# 2293| getStmt(1): [IfStmt] if (...) ... +# 2293| getCondition(): [VariableAccess] b # 2293| Type = [BoolType] bool -# 2293| ValueCategory = prvalue -# 2293| getQualifier(): [VariableAccess] (__begin) -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2293| ValueCategory = lvalue -# 2293| getArgument(0): [ConstructorCall] call to iterator -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2293| getArgument(0): [VariableAccess] (__end) -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2293| ValueCategory = lvalue -#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & -#-----| ValueCategory = prvalue -#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> -#-----| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> -#-----| ValueCategory = lvalue -#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> -#-----| ValueCategory = lvalue -# 2293| getUpdate(): [FunctionCall] call to operator++ -# 2293| Type = [LValueReferenceType] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & -# 2293| ValueCategory = prvalue -# 2293| getQualifier(): [VariableAccess] (__begin) -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2293| ValueCategory = lvalue -# 2293| getChild(5): [DeclStmt] declaration -# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2293| Type = [Struct] String -# 2293| getVariable().getInitializer(): [Initializer] initializer for s -# 2293| getExpr(): [ConstructorCall] call to String -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2293| getArgument(0): [OverloadedPointerDereferenceExpr] call to operator* -# 2293| Type = [LValueReferenceType] String & -# 2293| ValueCategory = prvalue -# 2293| getQualifier(): [VariableAccess] (__begin) -# 2293| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2293| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> -#-----| ValueCategory = lvalue -# 2293| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2293| Type = [LValueReferenceType] const String & -# 2293| ValueCategory = prvalue -# 2293| getExpr(): [CStyleCast] (const String)... -# 2293| Conversion = [GlvalueConversion] glvalue conversion -# 2293| Type = [SpecifiedType] const String -# 2293| ValueCategory = lvalue -# 2293| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2293| Type = [Struct] String -# 2293| ValueCategory = lvalue -# 2293| getStmt(): [BlockStmt] { ... } +# 2293| ValueCategory = prvalue(load) +# 2293| getThen(): [BlockStmt] { ... } # 2294| getStmt(0): [DeclStmt] declaration # 2294| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 # 2294| Type = [Struct] String @@ -18587,105 +18390,52 @@ ir.cpp: # 2295| getQualifier(): [VariableAccess] s2 # 2295| Type = [Struct] String # 2295| ValueCategory = lvalue -# 2293| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2293| getQualifier(): [VariableAccess] s -# 2293| Type = [Struct] String -# 2293| ValueCategory = lvalue -# 2293| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2293| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> -# 2293| ValueCategory = lvalue -# 2297| getStmt(3): [ForStmt] for(...;...;...) ... -# 2297| getInitialization(): [DeclStmt] declaration -# 2297| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2297| Type = [Struct] String -# 2297| getVariable().getInitializer(): [Initializer] initializer for s -# 2297| getExpr(): [ConstructorCall] call to String -# 2297| Type = [VoidType] void -# 2297| ValueCategory = prvalue -# 2297| getArgument(0): hello -# 2297| Type = [ArrayType] const char[6] -# 2297| Value = [StringLiteral] "hello" -# 2297| ValueCategory = lvalue -# 2297| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2297| Type = [PointerType] const char * -# 2297| ValueCategory = prvalue -# 2297| getDeclarationEntry(1): [VariableDeclarationEntry] definition of s2 -# 2297| Type = [Struct] String -# 2297| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2297| getExpr(): [ConstructorCall] call to String -# 2297| Type = [VoidType] void -# 2297| ValueCategory = prvalue -# 2297| getArgument(0): world -# 2297| Type = [ArrayType] const char[6] -# 2297| Value = [StringLiteral] "world" -# 2297| ValueCategory = lvalue -# 2297| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2297| Type = [PointerType] const char * -# 2297| ValueCategory = prvalue -# 2297| getCondition(): [NEExpr] ... != ... -# 2297| Type = [BoolType] bool -# 2297| ValueCategory = prvalue -# 2297| getLeftOperand(): [VariableAccess] c -# 2297| Type = [PlainCharType] char -# 2297| ValueCategory = prvalue(load) -# 2297| getRightOperand(): [Literal] 0 -# 2297| Type = [IntType] int -# 2297| Value = [Literal] 0 -# 2297| ValueCategory = prvalue -# 2297| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... -# 2297| Conversion = [IntegralConversion] integral conversion -# 2297| Type = [IntType] int +# 2295| getElse(): [BlockStmt] { ... } +# 2296| getStmt(0): [DeclStmt] declaration +# 2296| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s3 +# 2296| Type = [Struct] String +# 2296| getVariable().getInitializer(): [Initializer] initializer for s3 +# 2296| getExpr(): [ConstructorCall] call to String +# 2296| Type = [VoidType] void +# 2296| ValueCategory = prvalue +# 2297| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2297| Type = [VoidType] void # 2297| ValueCategory = prvalue -# 2297| getUpdate(): [AssignExpr] ... = ... -# 2297| Type = [PlainCharType] char -# 2297| ValueCategory = lvalue -# 2297| getLValue(): [VariableAccess] c -# 2297| Type = [PlainCharType] char -# 2297| ValueCategory = lvalue -# 2297| getRValue(): [FunctionCall] call to pop_back -# 2297| Type = [PlainCharType] char -# 2297| ValueCategory = prvalue -# 2297| getQualifier(): [VariableAccess] s +# 2297| getQualifier(): [VariableAccess] s3 # 2297| Type = [Struct] String # 2297| ValueCategory = lvalue -# 2297| getStmt(): [BlockStmt] { ... } -# 2298| getStmt(0): [ExprStmt] ExprStmt -# 2298| getExpr(): [AssignExpr] ... = ... -# 2298| Type = [PlainCharType] char -# 2298| ValueCategory = lvalue -# 2298| getLValue(): [VariableAccess] c -# 2298| Type = [PlainCharType] char -# 2298| ValueCategory = lvalue -# 2298| getRValue(): [Literal] 0 -# 2298| Type = [IntType] int -# 2298| Value = [Literal] 0 -# 2298| ValueCategory = prvalue -# 2298| getRValue().getFullyConverted(): [CStyleCast] (char)... -# 2298| Conversion = [IntegralConversion] integral conversion -# 2298| Type = [PlainCharType] char -# 2298| Value = [CStyleCast] 0 -# 2298| ValueCategory = prvalue -# 2297| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2297| Type = [VoidType] void -# 2297| ValueCategory = prvalue -# 2297| getQualifier(): [VariableAccess] s2 -# 2297| Type = [Struct] String -# 2297| ValueCategory = lvalue -# 2297| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 2297| Type = [VoidType] void -# 2297| ValueCategory = prvalue -# 2297| getQualifier(): [VariableAccess] s -# 2297| Type = [Struct] String -# 2297| ValueCategory = lvalue -# 2300| getStmt(4): [ReturnStmt] return ... -# 2302| [TopLevelFunction] void IfDestructors2(bool) -# 2302| <params>: -# 2302| getParameter(0): [Parameter] b -# 2302| Type = [BoolType] bool -# 2302| getEntryPoint(): [BlockStmt] { ... } -# 2303| getStmt(0): [IfStmt] if (...) ... +# 2298| getStmt(2): [DeclStmt] declaration +# 2298| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s4 +# 2298| Type = [Struct] String +# 2298| getVariable().getInitializer(): [Initializer] initializer for s4 +# 2298| getExpr(): [ConstructorCall] call to String +# 2298| Type = [VoidType] void +# 2298| ValueCategory = prvalue +# 2299| getStmt(3): [ReturnStmt] return ... +# 2299| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2299| Type = [VoidType] void +# 2299| ValueCategory = prvalue +# 2299| getQualifier(): [VariableAccess] s4 +# 2299| Type = [Struct] String +# 2299| ValueCategory = lvalue +# 2299| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2299| Type = [VoidType] void +# 2299| ValueCategory = prvalue +# 2299| getQualifier(): [VariableAccess] s1 +# 2299| Type = [Struct] String +# 2299| ValueCategory = lvalue +# 2301| [TopLevelFunction] void ForDestructors() +# 2301| <params>: +# 2301| getEntryPoint(): [BlockStmt] { ... } +# 2302| getStmt(0): [DeclStmt] declaration +# 2302| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2302| Type = [PlainCharType] char +# 2302| getVariable().getInitializer(): [Initializer] initializer for c +# 2302| getExpr(): [CharLiteral] 97 +# 2302| Type = [PlainCharType] char +# 2302| Value = [CharLiteral] 97 +# 2302| ValueCategory = prvalue +# 2303| getStmt(1): [ForStmt] for(...;...;...) ... # 2303| getInitialization(): [DeclStmt] declaration # 2303| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s # 2303| Type = [Struct] String @@ -18700,1331 +18450,1629 @@ ir.cpp: # 2303| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 2303| Type = [PointerType] const char * # 2303| ValueCategory = prvalue -# 2303| getCondition(): [VariableAccess] b +# 2303| getCondition(): [NEExpr] ... != ... # 2303| Type = [BoolType] bool -# 2303| ValueCategory = prvalue(load) -# 2303| getThen(): [BlockStmt] { ... } +# 2303| ValueCategory = prvalue +# 2303| getLeftOperand(): [VariableAccess] c +# 2303| Type = [PlainCharType] char +# 2303| ValueCategory = prvalue(load) +# 2303| getRightOperand(): [Literal] 0 +# 2303| Type = [IntType] int +# 2303| Value = [Literal] 0 +# 2303| ValueCategory = prvalue +# 2303| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2303| Conversion = [IntegralConversion] integral conversion +# 2303| Type = [IntType] int +# 2303| ValueCategory = prvalue +# 2303| getUpdate(): [AssignExpr] ... = ... +# 2303| Type = [PlainCharType] char +# 2303| ValueCategory = lvalue +# 2303| getLValue(): [VariableAccess] c +# 2303| Type = [PlainCharType] char +# 2303| ValueCategory = lvalue +# 2303| getRValue(): [FunctionCall] call to pop_back +# 2303| Type = [PlainCharType] char +# 2303| ValueCategory = prvalue +# 2303| getQualifier(): [VariableAccess] s +# 2303| Type = [Struct] String +# 2303| ValueCategory = lvalue +# 2303| getStmt(): [BlockStmt] { ... } # 2304| getStmt(0): [DeclStmt] declaration -# 2304| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2304| Type = [IntType] int -# 2304| getVariable().getInitializer(): [Initializer] initializer for x -# 2304| getExpr(): [Literal] 0 -# 2304| Type = [IntType] int -# 2304| Value = [Literal] 0 +# 2304| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2304| Type = [Struct] String +# 2304| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2304| getExpr(): [ConstructorCall] call to String +# 2304| Type = [VoidType] void # 2304| ValueCategory = prvalue -# 2305| getElse(): [BlockStmt] { ... } -# 2306| getStmt(0): [DeclStmt] declaration -# 2306| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2306| Type = [IntType] int -# 2306| getVariable().getInitializer(): [Initializer] initializer for y -# 2306| getExpr(): [Literal] 0 -# 2306| Type = [IntType] int -# 2306| Value = [Literal] 0 -# 2306| ValueCategory = prvalue -# 2307| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2307| Type = [VoidType] void +# 2305| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2305| Type = [VoidType] void +# 2305| ValueCategory = prvalue +# 2305| getQualifier(): [VariableAccess] s2 +# 2305| Type = [Struct] String +# 2305| ValueCategory = lvalue +# 2303| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2303| Type = [VoidType] void +# 2303| ValueCategory = prvalue +# 2303| getQualifier(): [VariableAccess] s +# 2303| Type = [Struct] String +# 2303| ValueCategory = lvalue +# 2307| getStmt(2): [RangeBasedForStmt] for(...:...) ... +# 2307| getChild(1): [DeclStmt] declaration +# 2307| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2307| Type = [RValueReferenceType] vector<String> && +#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) +# 2307| getExpr(): [ConstructorCall] call to vector +# 2307| Type = [VoidType] void +# 2307| ValueCategory = prvalue +# 2307| getArgument(0): [ConstructorCall] call to String +# 2307| Type = [VoidType] void +# 2307| ValueCategory = prvalue +# 2307| getArgument(0): hello +# 2307| Type = [ArrayType] const char[6] +# 2307| Value = [StringLiteral] "hello" +# 2307| ValueCategory = lvalue +# 2307| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2307| Type = [PointerType] const char * +# 2307| ValueCategory = prvalue +# 2307| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2307| Type = [VoidType] void +# 2307| ValueCategory = prvalue +# 2307| getQualifier(): [ReuseExpr] reuse of temporary object +# 2307| Type = [Struct] String +# 2307| ValueCategory = xvalue +# 2307| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2307| Type = [Struct] String +# 2307| ValueCategory = lvalue +# 2307| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2307| Type = [LValueReferenceType] vector<String> & +# 2307| ValueCategory = prvalue +# 2307| getExpr(): [TemporaryObjectExpr] temporary object +# 2307| Type = [ClassTemplateInstantiation,Struct] vector<String> +# 2307| ValueCategory = xvalue +# 2307| getBeginEndDeclaration(): [DeclStmt] declaration +# 2307| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) +# 2307| getExpr(): [FunctionCall] call to begin +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2307| ValueCategory = prvalue +# 2307| getQualifier(): [VariableAccess] (__range) +# 2307| Type = [RValueReferenceType] vector<String> && +# 2307| 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 +# 2307| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) +# 2307| getExpr(): [FunctionCall] call to end +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2307| ValueCategory = prvalue +# 2307| getQualifier(): [VariableAccess] (__range) +# 2307| Type = [RValueReferenceType] vector<String> && +# 2307| 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 +# 2307| getCondition(): [FunctionCall] call to operator!= +# 2307| Type = [BoolType] bool # 2307| ValueCategory = prvalue -# 2307| getQualifier(): [VariableAccess] s -# 2307| Type = [Struct] String +# 2307| getQualifier(): [VariableAccess] (__begin) +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator # 2307| ValueCategory = lvalue -# 2308| getStmt(1): [ReturnStmt] return ... -# 2310| [CopyAssignmentOperator] Bool& Bool::operator=(Bool const&) -# 2310| <params>: +# 2307| getArgument(0): [ConstructorCall] call to iterator +# 2307| Type = [VoidType] void +# 2307| ValueCategory = prvalue +# 2307| getArgument(0): [VariableAccess] (__end) +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2307| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +#-----| ValueCategory = lvalue +# 2307| getUpdate(): [FunctionCall] call to operator++ +# 2307| Type = [LValueReferenceType] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> & +# 2307| ValueCategory = prvalue +# 2307| getQualifier(): [VariableAccess] (__begin) +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2307| ValueCategory = lvalue +# 2307| getChild(5): [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 +# 2307| getArgument(0): [OverloadedPointerDereferenceExpr] call to operator* +# 2307| Type = [LValueReferenceType] String & +# 2307| ValueCategory = prvalue +# 2307| getQualifier(): [VariableAccess] (__begin) +# 2307| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2307| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +#-----| ValueCategory = lvalue +# 2307| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2307| Type = [LValueReferenceType] const String & +# 2307| ValueCategory = prvalue +# 2307| getExpr(): [CStyleCast] (const String)... +# 2307| Conversion = [GlvalueConversion] glvalue conversion +# 2307| Type = [SpecifiedType] const String +# 2307| ValueCategory = lvalue +# 2307| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2307| Type = [Struct] String +# 2307| ValueCategory = lvalue +# 2307| getStmt(): [BlockStmt] { ... } +# 2308| getStmt(0): [DeclStmt] declaration +# 2308| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2308| Type = [Struct] String +# 2308| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2308| getExpr(): [ConstructorCall] call to String +# 2308| Type = [VoidType] void +# 2308| ValueCategory = prvalue +# 2309| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2309| Type = [VoidType] void +# 2309| ValueCategory = prvalue +# 2309| getQualifier(): [VariableAccess] s2 +# 2309| Type = [Struct] String +# 2309| ValueCategory = lvalue +# 2307| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2307| Type = [VoidType] void +# 2307| ValueCategory = prvalue +# 2307| getQualifier(): [VariableAccess] s +# 2307| Type = [Struct] String +# 2307| ValueCategory = lvalue +# 2307| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2307| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> +# 2307| ValueCategory = lvalue +# 2311| getStmt(3): [ForStmt] for(...;...;...) ... +# 2311| getInitialization(): [DeclStmt] declaration +# 2311| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2311| Type = [Struct] String +# 2311| getVariable().getInitializer(): [Initializer] initializer for s +# 2311| getExpr(): [ConstructorCall] call to String +# 2311| Type = [VoidType] void +# 2311| ValueCategory = prvalue +# 2311| getArgument(0): hello +# 2311| Type = [ArrayType] const char[6] +# 2311| Value = [StringLiteral] "hello" +# 2311| ValueCategory = lvalue +# 2311| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2311| Type = [PointerType] const char * +# 2311| ValueCategory = prvalue +# 2311| getDeclarationEntry(1): [VariableDeclarationEntry] definition of s2 +# 2311| Type = [Struct] String +# 2311| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2311| getExpr(): [ConstructorCall] call to String +# 2311| Type = [VoidType] void +# 2311| ValueCategory = prvalue +# 2311| getArgument(0): world +# 2311| Type = [ArrayType] const char[6] +# 2311| Value = [StringLiteral] "world" +# 2311| ValueCategory = lvalue +# 2311| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2311| Type = [PointerType] const char * +# 2311| ValueCategory = prvalue +# 2311| getCondition(): [NEExpr] ... != ... +# 2311| Type = [BoolType] bool +# 2311| ValueCategory = prvalue +# 2311| getLeftOperand(): [VariableAccess] c +# 2311| Type = [PlainCharType] char +# 2311| ValueCategory = prvalue(load) +# 2311| getRightOperand(): [Literal] 0 +# 2311| Type = [IntType] int +# 2311| Value = [Literal] 0 +# 2311| ValueCategory = prvalue +# 2311| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2311| Conversion = [IntegralConversion] integral conversion +# 2311| Type = [IntType] int +# 2311| ValueCategory = prvalue +# 2311| getUpdate(): [AssignExpr] ... = ... +# 2311| Type = [PlainCharType] char +# 2311| ValueCategory = lvalue +# 2311| getLValue(): [VariableAccess] c +# 2311| Type = [PlainCharType] char +# 2311| ValueCategory = lvalue +# 2311| getRValue(): [FunctionCall] call to pop_back +# 2311| Type = [PlainCharType] char +# 2311| ValueCategory = prvalue +# 2311| getQualifier(): [VariableAccess] s +# 2311| Type = [Struct] String +# 2311| ValueCategory = lvalue +# 2311| getStmt(): [BlockStmt] { ... } +# 2312| getStmt(0): [ExprStmt] ExprStmt +# 2312| getExpr(): [AssignExpr] ... = ... +# 2312| Type = [PlainCharType] char +# 2312| ValueCategory = lvalue +# 2312| getLValue(): [VariableAccess] c +# 2312| Type = [PlainCharType] char +# 2312| ValueCategory = lvalue +# 2312| getRValue(): [Literal] 0 +# 2312| Type = [IntType] int +# 2312| Value = [Literal] 0 +# 2312| ValueCategory = prvalue +# 2312| getRValue().getFullyConverted(): [CStyleCast] (char)... +# 2312| Conversion = [IntegralConversion] integral conversion +# 2312| Type = [PlainCharType] char +# 2312| Value = [CStyleCast] 0 +# 2312| ValueCategory = prvalue +# 2311| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2311| Type = [VoidType] void +# 2311| ValueCategory = prvalue +# 2311| getQualifier(): [VariableAccess] s2 +# 2311| Type = [Struct] String +# 2311| ValueCategory = lvalue +# 2311| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2311| Type = [VoidType] void +# 2311| ValueCategory = prvalue +# 2311| getQualifier(): [VariableAccess] s +# 2311| Type = [Struct] String +# 2311| ValueCategory = lvalue +# 2314| getStmt(4): [ReturnStmt] return ... +# 2316| [TopLevelFunction] void IfDestructors2(bool) +# 2316| <params>: +# 2316| getParameter(0): [Parameter] b +# 2316| Type = [BoolType] bool +# 2316| getEntryPoint(): [BlockStmt] { ... } +# 2317| getStmt(0): [IfStmt] if (...) ... +# 2317| getInitialization(): [DeclStmt] declaration +# 2317| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2317| Type = [Struct] String +# 2317| getVariable().getInitializer(): [Initializer] initializer for s +# 2317| getExpr(): [ConstructorCall] call to String +# 2317| Type = [VoidType] void +# 2317| ValueCategory = prvalue +# 2317| getArgument(0): hello +# 2317| Type = [ArrayType] const char[6] +# 2317| Value = [StringLiteral] "hello" +# 2317| ValueCategory = lvalue +# 2317| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2317| Type = [PointerType] const char * +# 2317| ValueCategory = prvalue +# 2317| getCondition(): [VariableAccess] b +# 2317| Type = [BoolType] bool +# 2317| ValueCategory = prvalue(load) +# 2317| getThen(): [BlockStmt] { ... } +# 2318| getStmt(0): [DeclStmt] declaration +# 2318| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2318| Type = [IntType] int +# 2318| getVariable().getInitializer(): [Initializer] initializer for x +# 2318| getExpr(): [Literal] 0 +# 2318| Type = [IntType] int +# 2318| Value = [Literal] 0 +# 2318| ValueCategory = prvalue +# 2319| getElse(): [BlockStmt] { ... } +# 2320| getStmt(0): [DeclStmt] declaration +# 2320| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2320| Type = [IntType] int +# 2320| getVariable().getInitializer(): [Initializer] initializer for y +# 2320| getExpr(): [Literal] 0 +# 2320| Type = [IntType] int +# 2320| Value = [Literal] 0 +# 2320| ValueCategory = prvalue +# 2321| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2321| Type = [VoidType] void +# 2321| ValueCategory = prvalue +# 2321| getQualifier(): [VariableAccess] s +# 2321| Type = [Struct] String +# 2321| ValueCategory = lvalue +# 2322| getStmt(1): [ReturnStmt] return ... +# 2324| [CopyAssignmentOperator] Bool& Bool::operator=(Bool const&) +# 2324| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Bool & -# 2310| [CopyConstructor] void Bool::Bool(Bool const&) -# 2310| <params>: +# 2324| [CopyConstructor] void Bool::Bool(Bool const&) +# 2324| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Bool & -# 2312| [Constructor] void Bool::Bool(bool) -# 2312| <params>: -# 2312| getParameter(0): [Parameter] b_ -# 2312| Type = [BoolType] bool -# 2313| [ConversionOperator] bool Bool::operator bool() -# 2313| <params>: -# 2314| [Destructor] void Bool::~Bool() -# 2314| <params>: -# 2317| [TopLevelFunction] void IfDestructors3(bool) -# 2317| <params>: -# 2317| getParameter(0): [Parameter] b -# 2317| Type = [BoolType] bool -# 2317| getEntryPoint(): [BlockStmt] { ... } -# 2318| getStmt(0): [IfStmt] if (...) ... -# 2318| getCondition(): [ConditionDeclExpr] (condition decl) -# 2318| Type = [BoolType] bool -# 2318| ValueCategory = prvalue -# 2318| getChild(0): [FunctionCall] call to operator bool -# 2318| Type = [BoolType] bool -# 2318| ValueCategory = prvalue -# 2318| getQualifier(): [VariableAccess] B -# 2318| Type = [Class] Bool -# 2318| ValueCategory = prvalue(load) -# 2318| getInitializingExpr(): [ConstructorCall] call to Bool -# 2318| Type = [VoidType] void -# 2318| ValueCategory = prvalue -# 2318| getArgument(0): [VariableAccess] b -# 2318| Type = [BoolType] bool -# 2318| ValueCategory = prvalue(load) -# 2318| getThen(): [BlockStmt] { ... } -# 2319| getStmt(0): [DeclStmt] declaration -# 2319| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 -# 2319| Type = [Struct] String -# 2319| getVariable().getInitializer(): [Initializer] initializer for s1 -# 2319| getExpr(): [ConstructorCall] call to String -# 2319| Type = [VoidType] void -# 2319| ValueCategory = prvalue -# 2320| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2320| Type = [VoidType] void -# 2320| ValueCategory = prvalue -# 2320| getQualifier(): [VariableAccess] s1 -# 2320| Type = [Struct] String -# 2320| ValueCategory = lvalue -# 2320| getElse(): [BlockStmt] { ... } -# 2321| getStmt(0): [DeclStmt] declaration -# 2321| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 -# 2321| Type = [Struct] String -# 2321| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2321| getExpr(): [ConstructorCall] call to String -# 2321| Type = [VoidType] void -# 2321| ValueCategory = prvalue -# 2322| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2322| Type = [VoidType] void -# 2322| ValueCategory = prvalue -# 2322| getQualifier(): [VariableAccess] s2 -# 2322| Type = [Struct] String -# 2322| ValueCategory = lvalue -# 2322| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool -# 2322| Type = [VoidType] void -# 2322| ValueCategory = prvalue -# 2322| getQualifier(): [VariableAccess] B -# 2322| Type = [Class] Bool -# 2322| ValueCategory = lvalue -# 2323| getStmt(1): [ReturnStmt] return ... -# 2325| [TopLevelFunction] void WhileLoopDestructors(bool) -# 2325| <params>: -# 2325| getParameter(0): [Parameter] b -# 2325| Type = [BoolType] bool -# 2325| getEntryPoint(): [BlockStmt] { ... } -# 2326| getStmt(0): [BlockStmt] { ... } -# 2327| getStmt(0): [DeclStmt] declaration -# 2327| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2327| Type = [Struct] String -# 2327| getVariable().getInitializer(): [Initializer] initializer for s -# 2327| getExpr(): [ConstructorCall] call to String -# 2327| Type = [VoidType] void -# 2327| ValueCategory = prvalue -# 2328| getStmt(1): [WhileStmt] while (...) ... -# 2328| getCondition(): [VariableAccess] b -# 2328| Type = [BoolType] bool -# 2328| ValueCategory = prvalue(load) -# 2328| getStmt(): [BlockStmt] { ... } -# 2329| getStmt(0): [ExprStmt] ExprStmt -# 2329| getExpr(): [AssignExpr] ... = ... -# 2329| Type = [BoolType] bool -# 2329| ValueCategory = lvalue -# 2329| getLValue(): [VariableAccess] b -# 2329| Type = [BoolType] bool -# 2329| ValueCategory = lvalue -# 2329| getRValue(): [Literal] 0 -# 2329| Type = [BoolType] bool -# 2329| Value = [Literal] 0 -# 2329| ValueCategory = prvalue -# 2331| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2331| Type = [VoidType] void -# 2331| ValueCategory = prvalue -# 2331| getQualifier(): [VariableAccess] s -# 2331| Type = [Struct] String -# 2331| ValueCategory = lvalue -# 2333| getStmt(1): [BlockStmt] { ... } -# 2334| getStmt(0): [WhileStmt] while (...) ... -# 2334| getCondition(): [ConditionDeclExpr] (condition decl) -# 2334| Type = [BoolType] bool +# 2326| [Constructor] void Bool::Bool(bool) +# 2326| <params>: +# 2326| getParameter(0): [Parameter] b_ +# 2326| Type = [BoolType] bool +# 2327| [ConversionOperator] bool Bool::operator bool() +# 2327| <params>: +# 2328| [Destructor] void Bool::~Bool() +# 2328| <params>: +# 2331| [TopLevelFunction] void IfDestructors3(bool) +# 2331| <params>: +# 2331| getParameter(0): [Parameter] b +# 2331| Type = [BoolType] bool +# 2331| getEntryPoint(): [BlockStmt] { ... } +# 2332| getStmt(0): [IfStmt] if (...) ... +# 2332| getCondition(): [ConditionDeclExpr] (condition decl) +# 2332| Type = [BoolType] bool +# 2332| ValueCategory = prvalue +# 2332| getChild(0): [FunctionCall] call to operator bool +# 2332| Type = [BoolType] bool +# 2332| ValueCategory = prvalue +# 2332| getQualifier(): [VariableAccess] B +# 2332| Type = [Class] Bool +# 2332| ValueCategory = prvalue(load) +# 2332| getInitializingExpr(): [ConstructorCall] call to Bool +# 2332| Type = [VoidType] void +# 2332| ValueCategory = prvalue +# 2332| getArgument(0): [VariableAccess] b +# 2332| Type = [BoolType] bool +# 2332| ValueCategory = prvalue(load) +# 2332| getThen(): [BlockStmt] { ... } +# 2333| getStmt(0): [DeclStmt] declaration +# 2333| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 +# 2333| Type = [Struct] String +# 2333| getVariable().getInitializer(): [Initializer] initializer for s1 +# 2333| getExpr(): [ConstructorCall] call to String +# 2333| Type = [VoidType] void +# 2333| ValueCategory = prvalue +# 2334| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2334| Type = [VoidType] void # 2334| ValueCategory = prvalue -# 2334| getChild(0): [FunctionCall] call to operator bool -# 2334| Type = [BoolType] bool -# 2334| ValueCategory = prvalue -# 2334| getQualifier(): [VariableAccess] B -# 2334| Type = [Class] Bool -# 2334| ValueCategory = prvalue(load) -# 2334| getInitializingExpr(): [ConstructorCall] call to Bool -# 2334| Type = [VoidType] void -# 2334| ValueCategory = prvalue -# 2334| getArgument(0): [VariableAccess] b -# 2334| Type = [BoolType] bool -# 2334| ValueCategory = prvalue(load) -# 2334| getStmt(): [BlockStmt] { ... } -# 2335| getStmt(0): [ExprStmt] ExprStmt -# 2335| getExpr(): [AssignExpr] ... = ... -# 2335| Type = [BoolType] bool -# 2335| ValueCategory = lvalue -# 2335| getLValue(): [VariableAccess] b -# 2335| Type = [BoolType] bool -# 2335| ValueCategory = lvalue -# 2335| getRValue(): [Literal] 0 -# 2335| Type = [BoolType] bool -# 2335| Value = [Literal] 0 +# 2334| getQualifier(): [VariableAccess] s1 +# 2334| Type = [Struct] String +# 2334| ValueCategory = lvalue +# 2334| getElse(): [BlockStmt] { ... } +# 2335| getStmt(0): [DeclStmt] declaration +# 2335| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2335| Type = [Struct] String +# 2335| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2335| getExpr(): [ConstructorCall] call to String +# 2335| Type = [VoidType] void # 2335| ValueCategory = prvalue -# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool -# 2336| Type = [VoidType] void -# 2336| ValueCategory = prvalue -# 2336| getQualifier(): [VariableAccess] B -# 2336| Type = [Class] Bool -# 2336| ValueCategory = lvalue -# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 2336| Type = [VoidType] void # 2336| ValueCategory = prvalue -# 2336| getQualifier(): [VariableAccess] B -# 2336| Type = [Class] Bool +# 2336| getQualifier(): [VariableAccess] s2 +# 2336| Type = [Struct] String # 2336| ValueCategory = lvalue -# 2338| getStmt(2): [ReturnStmt] return ... -# 2340| [TopLevelFunction] void VoidFunc() -# 2340| <params>: -# 2340| getEntryPoint(): [BlockStmt] { ... } -# 2340| getStmt(0): [ReturnStmt] return ... -# 2342| [TopLevelFunction] void IfReturnDestructors(bool) -# 2342| <params>: -# 2342| getParameter(0): [Parameter] b -# 2342| Type = [BoolType] bool -# 2342| getEntryPoint(): [BlockStmt] { ... } -# 2343| getStmt(0): [DeclStmt] declaration -# 2343| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2343| Type = [Struct] String -# 2343| getVariable().getInitializer(): [Initializer] initializer for s -# 2343| getExpr(): [ConstructorCall] call to String -# 2343| Type = [VoidType] void -# 2343| ValueCategory = prvalue -# 2344| getStmt(1): [IfStmt] if (...) ... -# 2344| getCondition(): [VariableAccess] b -# 2344| Type = [BoolType] bool -# 2344| ValueCategory = prvalue(load) -# 2344| getThen(): [BlockStmt] { ... } -# 2345| getStmt(0): [ReturnStmt] return ... -# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2351| Type = [VoidType] void -# 2351| ValueCategory = prvalue -# 2351| getQualifier(): [VariableAccess] s -# 2351| Type = [Struct] String -# 2351| ValueCategory = lvalue -# 2347| getStmt(2): [IfStmt] if (...) ... -# 2347| getCondition(): [VariableAccess] b -# 2347| Type = [BoolType] bool -# 2347| ValueCategory = prvalue(load) -# 2347| getThen(): [BlockStmt] { ... } -# 2348| getStmt(0): [ReturnStmt] return ... -# 2348| getExpr(): [FunctionCall] call to VoidFunc +# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2336| Type = [VoidType] void +# 2336| ValueCategory = prvalue +# 2336| getQualifier(): [VariableAccess] B +# 2336| Type = [Class] Bool +# 2336| ValueCategory = lvalue +# 2337| getStmt(1): [ReturnStmt] return ... +# 2339| [TopLevelFunction] void WhileLoopDestructors(bool) +# 2339| <params>: +# 2339| getParameter(0): [Parameter] b +# 2339| Type = [BoolType] bool +# 2339| getEntryPoint(): [BlockStmt] { ... } +# 2340| getStmt(0): [BlockStmt] { ... } +# 2341| getStmt(0): [DeclStmt] declaration +# 2341| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2341| Type = [Struct] String +# 2341| getVariable().getInitializer(): [Initializer] initializer for s +# 2341| getExpr(): [ConstructorCall] call to String +# 2341| Type = [VoidType] void +# 2341| ValueCategory = prvalue +# 2342| getStmt(1): [WhileStmt] while (...) ... +# 2342| getCondition(): [VariableAccess] b +# 2342| Type = [BoolType] bool +# 2342| ValueCategory = prvalue(load) +# 2342| getStmt(): [BlockStmt] { ... } +# 2343| getStmt(0): [ExprStmt] ExprStmt +# 2343| getExpr(): [AssignExpr] ... = ... +# 2343| Type = [BoolType] bool +# 2343| ValueCategory = lvalue +# 2343| getLValue(): [VariableAccess] b +# 2343| Type = [BoolType] bool +# 2343| ValueCategory = lvalue +# 2343| getRValue(): [Literal] 0 +# 2343| Type = [BoolType] bool +# 2343| Value = [Literal] 0 +# 2343| ValueCategory = prvalue +# 2345| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2345| Type = [VoidType] void +# 2345| ValueCategory = prvalue +# 2345| getQualifier(): [VariableAccess] s +# 2345| Type = [Struct] String +# 2345| ValueCategory = lvalue +# 2347| getStmt(1): [BlockStmt] { ... } +# 2348| getStmt(0): [WhileStmt] while (...) ... +# 2348| getCondition(): [ConditionDeclExpr] (condition decl) +# 2348| Type = [BoolType] bool +# 2348| ValueCategory = prvalue +# 2348| getChild(0): [FunctionCall] call to operator bool +# 2348| Type = [BoolType] bool +# 2348| ValueCategory = prvalue +# 2348| getQualifier(): [VariableAccess] B +# 2348| Type = [Class] Bool +# 2348| ValueCategory = prvalue(load) +# 2348| getInitializingExpr(): [ConstructorCall] call to Bool # 2348| Type = [VoidType] void # 2348| ValueCategory = prvalue -# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2351| Type = [VoidType] void -# 2351| ValueCategory = prvalue -# 2351| getQualifier(): [VariableAccess] s -# 2351| Type = [Struct] String -# 2351| ValueCategory = lvalue -# 2350| getStmt(3): [ExprStmt] ExprStmt -# 2350| getExpr(): [VariableAccess] s -# 2350| Type = [Struct] String -# 2350| ValueCategory = lvalue -# 2351| getStmt(4): [ReturnStmt] return ... -# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2351| Type = [VoidType] void -# 2351| ValueCategory = prvalue -# 2351| getQualifier(): [VariableAccess] s -# 2351| Type = [Struct] String -# 2351| ValueCategory = lvalue -# 2353| [TopLevelFunction] int IfReturnDestructors3(bool) -# 2353| <params>: -# 2353| getParameter(0): [Parameter] b -# 2353| Type = [BoolType] bool -# 2353| getEntryPoint(): [BlockStmt] { ... } -# 2354| getStmt(0): [DeclStmt] declaration -# 2354| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2354| Type = [Struct] String -# 2354| getVariable().getInitializer(): [Initializer] initializer for s -# 2354| getExpr(): [ConstructorCall] call to String -# 2354| Type = [VoidType] void -# 2354| ValueCategory = prvalue -# 2355| getStmt(1): [IfStmt] if (...) ... -# 2355| getCondition(): [VariableAccess] b -# 2355| Type = [BoolType] bool -# 2355| ValueCategory = prvalue(load) -# 2355| getThen(): [BlockStmt] { ... } -# 2356| getStmt(0): [ReturnStmt] return ... -# 2356| getExpr(): [Literal] 1 -# 2356| Type = [IntType] int -# 2356| Value = [Literal] 1 -# 2356| ValueCategory = prvalue -# 2359| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2359| Type = [VoidType] void -# 2359| ValueCategory = prvalue -# 2359| getQualifier(): [VariableAccess] s -# 2359| Type = [Struct] String -# 2359| ValueCategory = lvalue -# 2358| getStmt(2): [ReturnStmt] return ... -# 2358| getExpr(): [Literal] 0 -# 2358| Type = [IntType] int -# 2358| Value = [Literal] 0 -# 2358| ValueCategory = prvalue -# 2359| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2359| Type = [VoidType] void -# 2359| ValueCategory = prvalue -# 2359| getQualifier(): [VariableAccess] s -# 2359| Type = [Struct] String -# 2359| ValueCategory = lvalue -# 2361| [TopLevelFunction] void VoidReturnDestructors() -# 2361| <params>: -# 2361| getEntryPoint(): [BlockStmt] { ... } -# 2362| getStmt(0): [DeclStmt] declaration -# 2362| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2362| Type = [Struct] String -# 2362| getVariable().getInitializer(): [Initializer] initializer for s -# 2362| getExpr(): [ConstructorCall] call to String +# 2348| getArgument(0): [VariableAccess] b +# 2348| Type = [BoolType] bool +# 2348| ValueCategory = prvalue(load) +# 2348| getStmt(): [BlockStmt] { ... } +# 2349| getStmt(0): [ExprStmt] ExprStmt +# 2349| getExpr(): [AssignExpr] ... = ... +# 2349| Type = [BoolType] bool +# 2349| ValueCategory = lvalue +# 2349| getLValue(): [VariableAccess] b +# 2349| Type = [BoolType] bool +# 2349| ValueCategory = lvalue +# 2349| getRValue(): [Literal] 0 +# 2349| Type = [BoolType] bool +# 2349| Value = [Literal] 0 +# 2349| ValueCategory = prvalue +# 2350| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2350| Type = [VoidType] void +# 2350| ValueCategory = prvalue +# 2350| getQualifier(): [VariableAccess] B +# 2350| Type = [Class] Bool +# 2350| ValueCategory = lvalue +# 2350| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2350| Type = [VoidType] void +# 2350| ValueCategory = prvalue +# 2350| getQualifier(): [VariableAccess] B +# 2350| Type = [Class] Bool +# 2350| ValueCategory = lvalue +# 2352| getStmt(2): [ReturnStmt] return ... +# 2354| [TopLevelFunction] void VoidFunc() +# 2354| <params>: +# 2354| getEntryPoint(): [BlockStmt] { ... } +# 2354| getStmt(0): [ReturnStmt] return ... +# 2356| [TopLevelFunction] void IfReturnDestructors(bool) +# 2356| <params>: +# 2356| getParameter(0): [Parameter] b +# 2356| Type = [BoolType] bool +# 2356| getEntryPoint(): [BlockStmt] { ... } +# 2357| getStmt(0): [DeclStmt] declaration +# 2357| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2357| Type = [Struct] String +# 2357| getVariable().getInitializer(): [Initializer] initializer for s +# 2357| getExpr(): [ConstructorCall] call to String +# 2357| Type = [VoidType] void +# 2357| ValueCategory = prvalue +# 2358| getStmt(1): [IfStmt] if (...) ... +# 2358| getCondition(): [VariableAccess] b +# 2358| Type = [BoolType] bool +# 2358| ValueCategory = prvalue(load) +# 2358| getThen(): [BlockStmt] { ... } +# 2359| getStmt(0): [ReturnStmt] return ... +# 2365| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2365| Type = [VoidType] void +# 2365| ValueCategory = prvalue +# 2365| getQualifier(): [VariableAccess] s +# 2365| Type = [Struct] String +# 2365| ValueCategory = lvalue +# 2361| getStmt(2): [IfStmt] if (...) ... +# 2361| getCondition(): [VariableAccess] b +# 2361| Type = [BoolType] bool +# 2361| ValueCategory = prvalue(load) +# 2361| getThen(): [BlockStmt] { ... } +# 2362| getStmt(0): [ReturnStmt] return ... +# 2362| getExpr(): [FunctionCall] call to VoidFunc # 2362| Type = [VoidType] void # 2362| ValueCategory = prvalue -# 2363| getStmt(1): [ReturnStmt] return ... -# 2363| getExpr(): [FunctionCall] call to VoidFunc -# 2363| Type = [VoidType] void -# 2363| ValueCategory = prvalue -# 2364| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2364| Type = [VoidType] void -# 2364| ValueCategory = prvalue -# 2364| getQualifier(): [VariableAccess] s -# 2364| Type = [Struct] String -# 2364| ValueCategory = lvalue -# 2367| [CopyAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc const&) +# 2365| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2365| Type = [VoidType] void +# 2365| ValueCategory = prvalue +# 2365| getQualifier(): [VariableAccess] s +# 2365| Type = [Struct] String +# 2365| ValueCategory = lvalue +# 2364| getStmt(3): [ExprStmt] ExprStmt +# 2364| getExpr(): [VariableAccess] s +# 2364| Type = [Struct] String +# 2364| ValueCategory = lvalue +# 2365| getStmt(4): [ReturnStmt] return ... +# 2365| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2365| Type = [VoidType] void +# 2365| ValueCategory = prvalue +# 2365| getQualifier(): [VariableAccess] s +# 2365| Type = [Struct] String +# 2365| ValueCategory = lvalue +# 2367| [TopLevelFunction] int IfReturnDestructors3(bool) # 2367| <params>: +# 2367| getParameter(0): [Parameter] b +# 2367| Type = [BoolType] bool +# 2367| getEntryPoint(): [BlockStmt] { ... } +# 2368| getStmt(0): [DeclStmt] declaration +# 2368| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2368| Type = [Struct] String +# 2368| getVariable().getInitializer(): [Initializer] initializer for s +# 2368| getExpr(): [ConstructorCall] call to String +# 2368| Type = [VoidType] void +# 2368| ValueCategory = prvalue +# 2369| getStmt(1): [IfStmt] if (...) ... +# 2369| getCondition(): [VariableAccess] b +# 2369| Type = [BoolType] bool +# 2369| ValueCategory = prvalue(load) +# 2369| getThen(): [BlockStmt] { ... } +# 2370| getStmt(0): [ReturnStmt] return ... +# 2370| getExpr(): [Literal] 1 +# 2370| Type = [IntType] int +# 2370| Value = [Literal] 1 +# 2370| ValueCategory = prvalue +# 2373| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2373| Type = [VoidType] void +# 2373| ValueCategory = prvalue +# 2373| getQualifier(): [VariableAccess] s +# 2373| Type = [Struct] String +# 2373| ValueCategory = lvalue +# 2372| getStmt(2): [ReturnStmt] return ... +# 2372| getExpr(): [Literal] 0 +# 2372| Type = [IntType] int +# 2372| Value = [Literal] 0 +# 2372| ValueCategory = prvalue +# 2373| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2373| Type = [VoidType] void +# 2373| ValueCategory = prvalue +# 2373| getQualifier(): [VariableAccess] s +# 2373| Type = [Struct] String +# 2373| ValueCategory = lvalue +# 2375| [TopLevelFunction] void VoidReturnDestructors() +# 2375| <params>: +# 2375| getEntryPoint(): [BlockStmt] { ... } +# 2376| getStmt(0): [DeclStmt] declaration +# 2376| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2376| Type = [Struct] String +# 2376| getVariable().getInitializer(): [Initializer] initializer for s +# 2376| getExpr(): [ConstructorCall] call to String +# 2376| Type = [VoidType] void +# 2376| ValueCategory = prvalue +# 2377| getStmt(1): [ReturnStmt] return ... +# 2377| getExpr(): [FunctionCall] call to VoidFunc +# 2377| Type = [VoidType] void +# 2377| ValueCategory = prvalue +# 2378| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2378| Type = [VoidType] void +# 2378| ValueCategory = prvalue +# 2378| getQualifier(): [VariableAccess] s +# 2378| Type = [Struct] String +# 2378| ValueCategory = lvalue +# 2381| [CopyAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc const&) +# 2381| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const HasVoidToIntFunc & -# 2367| [MoveAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc&&) -# 2367| <params>: +# 2381| [MoveAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc&&) +# 2381| <params>: #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] HasVoidToIntFunc && -# 2369| [MemberFunction] void return_routine_type::HasVoidToIntFunc::VoidToInt(int) -# 2369| <params>: -# 2369| getParameter(0): [Parameter] (unnamed parameter 0) -# 2369| Type = [IntType] int -# 2374| [TopLevelFunction] return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2374| <params>: -# 2375| getEntryPoint(): [BlockStmt] { ... } -# 2376| getStmt(0): [ReturnStmt] return ... -# 2376| getExpr(): [FunctionAccess] VoidToInt -# 2376| Type = [RoutineType] ..()(..) -# 2376| ValueCategory = prvalue -# 2381| [TopLevelFunction] int small_operation_should_not_be_constant_folded() -# 2381| <params>: -# 2381| getEntryPoint(): [BlockStmt] { ... } -# 2382| getStmt(0): [ReturnStmt] return ... -# 2382| getExpr(): [BitwiseXorExpr] ... ^ ... -# 2382| Type = [IntType] int -# 2382| Value = [BitwiseXorExpr] 3 -# 2382| ValueCategory = prvalue -# 2382| getLeftOperand(): [Literal] 1 -# 2382| Type = [IntType] int -# 2382| Value = [Literal] 1 -# 2382| ValueCategory = prvalue -# 2382| getRightOperand(): [Literal] 2 -# 2382| Type = [IntType] int -# 2382| Value = [Literal] 2 -# 2382| ValueCategory = prvalue -# 2392| [TopLevelFunction] int large_operation_should_be_constant_folded() -# 2392| <params>: -# 2392| getEntryPoint(): [BlockStmt] { ... } -# 2393| getStmt(0): [ReturnStmt] return ... -# 2393| getExpr(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2393| Type = [IntType] int -# 2393| Value = [BitwiseXorExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand(): [Literal] 1 -# 2393| Type = [IntType] int -# 2393| Value = [Literal] 1 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2393| getExpr().getFullyConverted(): [ParenthesisExpr] (...) -# 2393| Type = [IntType] int -# 2393| Value = [ParenthesisExpr] 0 -# 2393| ValueCategory = prvalue -# 2396| [TopLevelFunction] void initialization_with_temp_destructor() -# 2396| <params>: -# 2396| getEntryPoint(): [BlockStmt] { ... } -# 2397| getStmt(0): [IfStmt] if (...) ... -# 2397| getCondition(): [ConditionDeclExpr] (condition decl) -# 2397| Type = [BoolType] bool -# 2397| ValueCategory = prvalue -# 2397| getVariableAccess(): [VariableAccess] x -# 2397| Type = [PlainCharType] char -# 2397| ValueCategory = prvalue(load) -# 2397| getInitializingExpr(): [FunctionCall] call to get_x -# 2397| Type = [PlainCharType] char -# 2397| ValueCategory = prvalue -# 2397| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2397| Type = [VoidType] void -# 2397| ValueCategory = prvalue -# 2397| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2397| Type = [VoidType] void -# 2397| ValueCategory = prvalue -# 2397| getQualifier(): [ReuseExpr] reuse of temporary object -# 2397| Type = [Class] ClassWithDestructor -# 2397| ValueCategory = xvalue -# 2397| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2397| Type = [Class] ClassWithDestructor -# 2397| ValueCategory = prvalue(load) -# 2397| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 2397| Conversion = [BoolConversion] conversion to bool -# 2397| Type = [BoolType] bool -# 2397| ValueCategory = prvalue -# 2398| getThen(): [ExprStmt] ExprStmt -# 2398| getExpr(): [PostfixIncrExpr] ... ++ -# 2398| Type = [PlainCharType] char -# 2398| ValueCategory = prvalue -# 2398| getOperand(): [VariableAccess] x -# 2398| Type = [PlainCharType] char -# 2398| ValueCategory = lvalue -# 2400| getStmt(1): [IfStmt] if (...) ... -# 2400| getInitialization(): [DeclStmt] declaration -# 2400| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2400| Type = [PlainCharType] char -# 2400| getVariable().getInitializer(): [Initializer] initializer for x -# 2400| getExpr(): [FunctionCall] call to get_x -# 2400| Type = [PlainCharType] char -# 2400| ValueCategory = prvalue -# 2400| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2400| Type = [VoidType] void -# 2400| ValueCategory = prvalue -# 2400| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2400| Type = [VoidType] void -# 2400| ValueCategory = prvalue -# 2400| getQualifier(): [ReuseExpr] reuse of temporary object -# 2400| Type = [Class] ClassWithDestructor -# 2400| ValueCategory = xvalue -# 2400| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2400| Type = [Class] ClassWithDestructor -# 2400| ValueCategory = prvalue(load) -# 2400| getCondition(): [VariableAccess] x -# 2400| Type = [PlainCharType] char -# 2400| ValueCategory = prvalue(load) -# 2401| getThen(): [ExprStmt] ExprStmt -# 2401| getExpr(): [PostfixIncrExpr] ... ++ -# 2401| Type = [PlainCharType] char -# 2401| ValueCategory = prvalue -# 2401| getOperand(): [VariableAccess] x -# 2401| Type = [PlainCharType] char -# 2401| ValueCategory = lvalue -# 2400| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2400| Conversion = [BoolConversion] conversion to bool -# 2400| Type = [BoolType] bool -# 2400| ValueCategory = prvalue -# 2403| getStmt(2): [ConstexprIfStmt] if constexpr (...) ... -# 2403| getInitialization(): [DeclStmt] declaration -# 2403| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2403| Type = [PlainCharType] char -# 2403| getVariable().getInitializer(): [Initializer] initializer for x -# 2403| getExpr(): [FunctionCall] call to get_x -# 2403| Type = [PlainCharType] char -# 2403| ValueCategory = prvalue -# 2403| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2403| Type = [VoidType] void -# 2403| ValueCategory = prvalue -# 2403| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2403| Type = [VoidType] void -# 2403| ValueCategory = prvalue -# 2403| getQualifier(): [ReuseExpr] reuse of temporary object -# 2403| Type = [Class] ClassWithDestructor -# 2403| ValueCategory = xvalue -# 2403| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2403| Type = [Class] ClassWithDestructor -# 2403| ValueCategory = prvalue(load) -# 2403| getCondition(): [VariableAccess] initialization_with_destructor_bool -# 2403| Type = [BoolType] bool -# 2403| Value = [VariableAccess] 1 -# 2403| ValueCategory = prvalue(load) -# 2404| getThen(): [ExprStmt] ExprStmt -# 2404| getExpr(): [PostfixIncrExpr] ... ++ -# 2404| Type = [PlainCharType] char -# 2404| ValueCategory = prvalue -# 2404| getOperand(): [VariableAccess] x -# 2404| Type = [PlainCharType] char -# 2404| ValueCategory = lvalue -# 2406| getStmt(3): [SwitchStmt] switch (...) ... -# 2406| getExpr(): [ConditionDeclExpr] (condition decl) -# 2406| Type = [IntType] int -# 2406| ValueCategory = prvalue -# 2406| getVariableAccess(): [VariableAccess] x -# 2406| Type = [PlainCharType] char -# 2406| ValueCategory = prvalue(load) -# 2406| getInitializingExpr(): [FunctionCall] call to get_x -# 2406| Type = [PlainCharType] char -# 2406| ValueCategory = prvalue -# 2406| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2406| Type = [VoidType] void -# 2406| ValueCategory = prvalue -# 2406| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2406| Type = [VoidType] void -# 2406| ValueCategory = prvalue -# 2406| getQualifier(): [ReuseExpr] reuse of temporary object -# 2406| Type = [Class] ClassWithDestructor -# 2406| ValueCategory = xvalue -# 2406| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2406| Type = [Class] ClassWithDestructor -# 2406| ValueCategory = prvalue(load) -# 2406| getVariableAccess().getFullyConverted(): [CStyleCast] (int)... -# 2406| Conversion = [IntegralConversion] integral conversion -# 2406| Type = [IntType] int -# 2406| ValueCategory = prvalue -# 2406| getStmt(): [BlockStmt] { ... } -# 2407| getStmt(0): [SwitchCase] case ...: -# 2407| getExpr(): [CharLiteral] 97 -# 2407| Type = [PlainCharType] char -# 2407| Value = [CharLiteral] 97 +# 2383| [MemberFunction] void return_routine_type::HasVoidToIntFunc::VoidToInt(int) +# 2383| <params>: +# 2383| getParameter(0): [Parameter] (unnamed parameter 0) +# 2383| Type = [IntType] int +# 2388| [TopLevelFunction] return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2388| <params>: +# 2389| getEntryPoint(): [BlockStmt] { ... } +# 2390| getStmt(0): [ReturnStmt] return ... +# 2390| getExpr(): [FunctionAccess] VoidToInt +# 2390| Type = [RoutineType] ..()(..) +# 2390| ValueCategory = prvalue +# 2395| [TopLevelFunction] int small_operation_should_not_be_constant_folded() +# 2395| <params>: +# 2395| getEntryPoint(): [BlockStmt] { ... } +# 2396| getStmt(0): [ReturnStmt] return ... +# 2396| getExpr(): [BitwiseXorExpr] ... ^ ... +# 2396| Type = [IntType] int +# 2396| Value = [BitwiseXorExpr] 3 +# 2396| ValueCategory = prvalue +# 2396| getLeftOperand(): [Literal] 1 +# 2396| Type = [IntType] int +# 2396| Value = [Literal] 1 +# 2396| ValueCategory = prvalue +# 2396| getRightOperand(): [Literal] 2 +# 2396| Type = [IntType] int +# 2396| Value = [Literal] 2 +# 2396| ValueCategory = prvalue +# 2406| [TopLevelFunction] int large_operation_should_be_constant_folded() +# 2406| <params>: +# 2406| getEntryPoint(): [BlockStmt] { ... } +# 2407| getStmt(0): [ReturnStmt] return ... +# 2407| getExpr(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 # 2407| ValueCategory = prvalue -# 2407| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2407| Conversion = [IntegralConversion] integral conversion +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) # 2407| Type = [IntType] int -# 2407| Value = [CStyleCast] 97 +# 2407| Value = [ParenthesisExpr] 0 # 2407| ValueCategory = prvalue -# 2408| getStmt(1): [ExprStmt] ExprStmt -# 2408| getExpr(): [PostfixIncrExpr] ... ++ -# 2408| Type = [PlainCharType] char -# 2408| ValueCategory = prvalue -# 2408| getOperand(): [VariableAccess] x -# 2408| Type = [PlainCharType] char -# 2408| ValueCategory = lvalue -# 2411| getStmt(4): [SwitchStmt] switch (...) ... -# 2411| getInitialization(): [DeclStmt] declaration -# 2411| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2407| Type = [IntType] int +# 2407| Value = [BitwiseXorExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand(): [Literal] 1 +# 2407| Type = [IntType] int +# 2407| Value = [Literal] 1 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2407| getExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 2407| Type = [IntType] int +# 2407| Value = [ParenthesisExpr] 0 +# 2407| ValueCategory = prvalue +# 2410| [TopLevelFunction] void initialization_with_temp_destructor() +# 2410| <params>: +# 2410| getEntryPoint(): [BlockStmt] { ... } +# 2411| getStmt(0): [IfStmt] if (...) ... +# 2411| getCondition(): [ConditionDeclExpr] (condition decl) +# 2411| Type = [BoolType] bool +# 2411| ValueCategory = prvalue +# 2411| getVariableAccess(): [VariableAccess] x +# 2411| Type = [PlainCharType] char +# 2411| ValueCategory = prvalue(load) +# 2411| getInitializingExpr(): [FunctionCall] call to get_x # 2411| Type = [PlainCharType] char -# 2411| getVariable().getInitializer(): [Initializer] initializer for x -# 2411| getExpr(): [FunctionCall] call to get_x -# 2411| Type = [PlainCharType] char -# 2411| ValueCategory = prvalue -# 2411| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2411| Type = [VoidType] void -# 2411| ValueCategory = prvalue -# 2411| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2411| Type = [VoidType] void -# 2411| ValueCategory = prvalue -# 2411| getQualifier(): [ReuseExpr] reuse of temporary object -# 2411| Type = [Class] ClassWithDestructor -# 2411| ValueCategory = xvalue -# 2411| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2411| Type = [Class] ClassWithDestructor -# 2411| ValueCategory = prvalue(load) -# 2411| getExpr(): [VariableAccess] x -# 2411| Type = [PlainCharType] char -# 2411| ValueCategory = prvalue(load) -# 2411| getStmt(): [BlockStmt] { ... } -# 2412| getStmt(0): [SwitchCase] case ...: -# 2412| getExpr(): [CharLiteral] 97 +# 2411| ValueCategory = prvalue +# 2411| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2411| Type = [VoidType] void +# 2411| ValueCategory = prvalue +# 2411| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2411| Type = [VoidType] void +# 2411| ValueCategory = prvalue +# 2411| getQualifier(): [ReuseExpr] reuse of temporary object +# 2411| Type = [Class] ClassWithDestructor +# 2411| ValueCategory = xvalue +# 2411| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2411| Type = [Class] ClassWithDestructor +# 2411| ValueCategory = prvalue(load) +# 2411| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 2411| Conversion = [BoolConversion] conversion to bool +# 2411| Type = [BoolType] bool +# 2411| ValueCategory = prvalue +# 2412| getThen(): [ExprStmt] ExprStmt +# 2412| getExpr(): [PostfixIncrExpr] ... ++ +# 2412| Type = [PlainCharType] char +# 2412| ValueCategory = prvalue +# 2412| getOperand(): [VariableAccess] x # 2412| Type = [PlainCharType] char -# 2412| Value = [CharLiteral] 97 -# 2412| ValueCategory = prvalue -# 2412| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2412| Conversion = [IntegralConversion] integral conversion -# 2412| Type = [IntType] int -# 2412| Value = [CStyleCast] 97 -# 2412| ValueCategory = prvalue -# 2413| getStmt(1): [ExprStmt] ExprStmt -# 2413| getExpr(): [PostfixIncrExpr] ... ++ -# 2413| Type = [PlainCharType] char -# 2413| ValueCategory = prvalue -# 2413| getOperand(): [VariableAccess] x -# 2413| Type = [PlainCharType] char -# 2413| ValueCategory = lvalue -# 2411| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2411| Conversion = [IntegralConversion] integral conversion -# 2411| Type = [IntType] int -# 2411| ValueCategory = prvalue -# 2416| getStmt(5): [RangeBasedForStmt] for(...:...) ... -# 2416| getInitialization(): [DeclStmt] declaration -# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2416| Type = [PlainCharType] char -# 2416| getVariable().getInitializer(): [Initializer] initializer for x -# 2416| getExpr(): [FunctionCall] call to get_x -# 2416| Type = [PlainCharType] char -# 2416| ValueCategory = prvalue -# 2416| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2416| Type = [VoidType] void -# 2416| ValueCategory = prvalue -# 2416| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2416| Type = [VoidType] void -# 2416| ValueCategory = prvalue -# 2416| getQualifier(): [ReuseExpr] reuse of temporary object -# 2416| Type = [Class] ClassWithDestructor -# 2416| ValueCategory = xvalue -# 2416| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2416| Type = [Class] ClassWithDestructor -# 2416| ValueCategory = prvalue(load) -# 2416| getChild(1): [DeclStmt] declaration -# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2416| Type = [RValueReferenceType] vector<char> && +# 2412| ValueCategory = lvalue +# 2414| getStmt(1): [IfStmt] if (...) ... +# 2414| getInitialization(): [DeclStmt] declaration +# 2414| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2414| Type = [PlainCharType] char +# 2414| getVariable().getInitializer(): [Initializer] initializer for x +# 2414| getExpr(): [FunctionCall] call to get_x +# 2414| Type = [PlainCharType] char +# 2414| ValueCategory = prvalue +# 2414| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2414| Type = [VoidType] void +# 2414| ValueCategory = prvalue +# 2414| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2414| Type = [VoidType] void +# 2414| ValueCategory = prvalue +# 2414| getQualifier(): [ReuseExpr] reuse of temporary object +# 2414| Type = [Class] ClassWithDestructor +# 2414| ValueCategory = xvalue +# 2414| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2414| Type = [Class] ClassWithDestructor +# 2414| ValueCategory = prvalue(load) +# 2414| getCondition(): [VariableAccess] x +# 2414| Type = [PlainCharType] char +# 2414| ValueCategory = prvalue(load) +# 2415| getThen(): [ExprStmt] ExprStmt +# 2415| getExpr(): [PostfixIncrExpr] ... ++ +# 2415| Type = [PlainCharType] char +# 2415| ValueCategory = prvalue +# 2415| getOperand(): [VariableAccess] x +# 2415| Type = [PlainCharType] char +# 2415| ValueCategory = lvalue +# 2414| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 2414| Conversion = [BoolConversion] conversion to bool +# 2414| Type = [BoolType] bool +# 2414| ValueCategory = prvalue +# 2417| getStmt(2): [ConstexprIfStmt] if constexpr (...) ... +# 2417| getInitialization(): [DeclStmt] declaration +# 2417| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2417| Type = [PlainCharType] char +# 2417| getVariable().getInitializer(): [Initializer] initializer for x +# 2417| getExpr(): [FunctionCall] call to get_x +# 2417| Type = [PlainCharType] char +# 2417| ValueCategory = prvalue +# 2417| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2417| Type = [VoidType] void +# 2417| ValueCategory = prvalue +# 2417| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2417| Type = [VoidType] void +# 2417| ValueCategory = prvalue +# 2417| getQualifier(): [ReuseExpr] reuse of temporary object +# 2417| Type = [Class] ClassWithDestructor +# 2417| ValueCategory = xvalue +# 2417| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2417| Type = [Class] ClassWithDestructor +# 2417| ValueCategory = prvalue(load) +# 2417| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2417| Type = [BoolType] bool +# 2417| Value = [VariableAccess] 1 +# 2417| ValueCategory = prvalue(load) +# 2418| getThen(): [ExprStmt] ExprStmt +# 2418| getExpr(): [PostfixIncrExpr] ... ++ +# 2418| Type = [PlainCharType] char +# 2418| ValueCategory = prvalue +# 2418| getOperand(): [VariableAccess] x +# 2418| Type = [PlainCharType] char +# 2418| ValueCategory = lvalue +# 2420| getStmt(3): [SwitchStmt] switch (...) ... +# 2420| getExpr(): [ConditionDeclExpr] (condition decl) +# 2420| Type = [IntType] int +# 2420| ValueCategory = prvalue +# 2420| getVariableAccess(): [VariableAccess] x +# 2420| Type = [PlainCharType] char +# 2420| ValueCategory = prvalue(load) +# 2420| getInitializingExpr(): [FunctionCall] call to get_x +# 2420| Type = [PlainCharType] char +# 2420| ValueCategory = prvalue +# 2420| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2420| Type = [VoidType] void +# 2420| ValueCategory = prvalue +# 2420| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2420| Type = [VoidType] void +# 2420| ValueCategory = prvalue +# 2420| getQualifier(): [ReuseExpr] reuse of temporary object +# 2420| Type = [Class] ClassWithDestructor +# 2420| ValueCategory = xvalue +# 2420| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2420| Type = [Class] ClassWithDestructor +# 2420| ValueCategory = prvalue(load) +# 2420| getVariableAccess().getFullyConverted(): [CStyleCast] (int)... +# 2420| Conversion = [IntegralConversion] integral conversion +# 2420| Type = [IntType] int +# 2420| ValueCategory = prvalue +# 2420| getStmt(): [BlockStmt] { ... } +# 2421| getStmt(0): [SwitchCase] case ...: +# 2421| getExpr(): [CharLiteral] 97 +# 2421| Type = [PlainCharType] char +# 2421| Value = [CharLiteral] 97 +# 2421| ValueCategory = prvalue +# 2421| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2421| Conversion = [IntegralConversion] integral conversion +# 2421| Type = [IntType] int +# 2421| Value = [CStyleCast] 97 +# 2421| ValueCategory = prvalue +# 2422| getStmt(1): [ExprStmt] ExprStmt +# 2422| getExpr(): [PostfixIncrExpr] ... ++ +# 2422| Type = [PlainCharType] char +# 2422| ValueCategory = prvalue +# 2422| getOperand(): [VariableAccess] x +# 2422| Type = [PlainCharType] char +# 2422| ValueCategory = lvalue +# 2425| getStmt(4): [SwitchStmt] switch (...) ... +# 2425| getInitialization(): [DeclStmt] declaration +# 2425| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2425| Type = [PlainCharType] char +# 2425| getVariable().getInitializer(): [Initializer] initializer for x +# 2425| getExpr(): [FunctionCall] call to get_x +# 2425| Type = [PlainCharType] char +# 2425| ValueCategory = prvalue +# 2425| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2425| Type = [VoidType] void +# 2425| ValueCategory = prvalue +# 2425| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2425| Type = [VoidType] void +# 2425| ValueCategory = prvalue +# 2425| getQualifier(): [ReuseExpr] reuse of temporary object +# 2425| Type = [Class] ClassWithDestructor +# 2425| ValueCategory = xvalue +# 2425| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2425| Type = [Class] ClassWithDestructor +# 2425| ValueCategory = prvalue(load) +# 2425| getExpr(): [VariableAccess] x +# 2425| Type = [PlainCharType] char +# 2425| ValueCategory = prvalue(load) +# 2425| getStmt(): [BlockStmt] { ... } +# 2426| getStmt(0): [SwitchCase] case ...: +# 2426| getExpr(): [CharLiteral] 97 +# 2426| Type = [PlainCharType] char +# 2426| Value = [CharLiteral] 97 +# 2426| ValueCategory = prvalue +# 2426| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2426| Conversion = [IntegralConversion] integral conversion +# 2426| Type = [IntType] int +# 2426| Value = [CStyleCast] 97 +# 2426| ValueCategory = prvalue +# 2427| getStmt(1): [ExprStmt] ExprStmt +# 2427| getExpr(): [PostfixIncrExpr] ... ++ +# 2427| Type = [PlainCharType] char +# 2427| ValueCategory = prvalue +# 2427| getOperand(): [VariableAccess] x +# 2427| Type = [PlainCharType] char +# 2427| ValueCategory = lvalue +# 2425| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2425| Conversion = [IntegralConversion] integral conversion +# 2425| Type = [IntType] int +# 2425| ValueCategory = prvalue +# 2430| getStmt(5): [RangeBasedForStmt] for(...:...) ... +# 2430| getInitialization(): [DeclStmt] declaration +# 2430| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2430| Type = [PlainCharType] char +# 2430| getVariable().getInitializer(): [Initializer] initializer for x +# 2430| getExpr(): [FunctionCall] call to get_x +# 2430| Type = [PlainCharType] char +# 2430| ValueCategory = prvalue +# 2430| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2430| Type = [VoidType] void +# 2430| ValueCategory = prvalue +# 2430| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2430| Type = [VoidType] void +# 2430| ValueCategory = prvalue +# 2430| getQualifier(): [ReuseExpr] reuse of temporary object +# 2430| Type = [Class] ClassWithDestructor +# 2430| ValueCategory = xvalue +# 2430| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2430| Type = [Class] ClassWithDestructor +# 2430| ValueCategory = prvalue(load) +# 2430| getChild(1): [DeclStmt] declaration +# 2430| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2430| Type = [RValueReferenceType] vector<char> && #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2416| getExpr(): [ConstructorCall] call to vector -# 2416| Type = [VoidType] void -# 2416| ValueCategory = prvalue -# 2416| getArgument(0): [VariableAccess] x -# 2416| Type = [PlainCharType] char -# 2416| ValueCategory = prvalue(load) -# 2416| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2416| Type = [LValueReferenceType] vector<char> & -# 2416| ValueCategory = prvalue -# 2416| getExpr(): [TemporaryObjectExpr] temporary object -# 2416| Type = [ClassTemplateInstantiation,Struct] vector<char> -# 2416| ValueCategory = xvalue -# 2416| getBeginEndDeclaration(): [DeclStmt] declaration -# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| getExpr(): [ConstructorCall] call to vector +# 2430| Type = [VoidType] void +# 2430| ValueCategory = prvalue +# 2430| getArgument(0): [VariableAccess] x +# 2430| Type = [PlainCharType] char +# 2430| ValueCategory = prvalue(load) +# 2430| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2430| Type = [LValueReferenceType] vector<char> & +# 2430| ValueCategory = prvalue +# 2430| getExpr(): [TemporaryObjectExpr] temporary object +# 2430| Type = [ClassTemplateInstantiation,Struct] vector<char> +# 2430| ValueCategory = xvalue +# 2430| getBeginEndDeclaration(): [DeclStmt] declaration +# 2430| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2416| getExpr(): [FunctionCall] call to begin -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2416| ValueCategory = prvalue -# 2416| getQualifier(): [VariableAccess] (__range) -# 2416| Type = [RValueReferenceType] vector<char> && -# 2416| ValueCategory = prvalue(load) +# 2430| getExpr(): [FunctionCall] call to begin +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| ValueCategory = prvalue +# 2430| getQualifier(): [VariableAccess] (__range) +# 2430| Type = [RValueReferenceType] vector<char> && +# 2430| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<char>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<char> @@ -20032,15 +20080,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<char> #-----| ValueCategory = lvalue -# 2416| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2416| getExpr(): [FunctionCall] call to end -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2416| ValueCategory = prvalue -# 2416| getQualifier(): [VariableAccess] (__range) -# 2416| Type = [RValueReferenceType] vector<char> && -# 2416| ValueCategory = prvalue(load) +# 2430| getExpr(): [FunctionCall] call to end +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| ValueCategory = prvalue +# 2430| getQualifier(): [VariableAccess] (__range) +# 2430| Type = [RValueReferenceType] vector<char> && +# 2430| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<char>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector<char> @@ -20048,18 +20096,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector<char> #-----| ValueCategory = lvalue -# 2416| getCondition(): [FunctionCall] call to operator!= -# 2416| Type = [BoolType] bool -# 2416| ValueCategory = prvalue -# 2416| getQualifier(): [VariableAccess] (__begin) -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2416| ValueCategory = lvalue -# 2416| getArgument(0): [ConstructorCall] call to iterator -# 2416| Type = [VoidType] void -# 2416| ValueCategory = prvalue -# 2416| getArgument(0): [VariableAccess] (__end) -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2416| ValueCategory = lvalue +# 2430| getCondition(): [FunctionCall] call to operator!= +# 2430| Type = [BoolType] bool +# 2430| ValueCategory = prvalue +# 2430| getQualifier(): [VariableAccess] (__begin) +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| ValueCategory = lvalue +# 2430| getArgument(0): [ConstructorCall] call to iterator +# 2430| Type = [VoidType] void +# 2430| ValueCategory = prvalue +# 2430| getArgument(0): [VariableAccess] (__end) +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> & #-----| ValueCategory = prvalue @@ -20074,47 +20122,47 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> #-----| ValueCategory = lvalue -# 2416| getUpdate(): [FunctionCall] call to operator++ -# 2416| Type = [LValueReferenceType] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> & -# 2416| ValueCategory = prvalue -# 2416| getQualifier(): [VariableAccess] (__begin) -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2416| ValueCategory = lvalue -# 2416| getChild(5): [DeclStmt] declaration -# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2416| Type = [PlainCharType] char -# 2416| getVariable().getInitializer(): [Initializer] initializer for y -# 2416| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2416| Type = [LValueReferenceType] char & -# 2416| ValueCategory = prvalue -# 2416| getQualifier(): [VariableAccess] (__begin) -# 2416| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2416| ValueCategory = lvalue +# 2430| getUpdate(): [FunctionCall] call to operator++ +# 2430| Type = [LValueReferenceType] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> & +# 2430| ValueCategory = prvalue +# 2430| getQualifier(): [VariableAccess] (__begin) +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| ValueCategory = lvalue +# 2430| getChild(5): [DeclStmt] declaration +# 2430| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2430| Type = [PlainCharType] char +# 2430| getVariable().getInitializer(): [Initializer] initializer for y +# 2430| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2430| Type = [LValueReferenceType] char & +# 2430| ValueCategory = prvalue +# 2430| getQualifier(): [VariableAccess] (__begin) +# 2430| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2430| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> #-----| ValueCategory = lvalue -# 2416| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2416| Type = [PlainCharType] char -# 2416| ValueCategory = prvalue(load) -# 2417| getStmt(): [ExprStmt] ExprStmt -# 2417| getExpr(): [AssignAddExpr] ... += ... -# 2417| Type = [PlainCharType] char -# 2417| ValueCategory = lvalue -# 2417| getLValue(): [VariableAccess] y -# 2417| Type = [PlainCharType] char -# 2417| ValueCategory = lvalue -# 2417| getRValue(): [VariableAccess] x -# 2417| Type = [PlainCharType] char -# 2417| ValueCategory = prvalue(load) -# 2417| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 2417| Conversion = [IntegralConversion] integral conversion -# 2417| Type = [IntType] int -# 2417| ValueCategory = prvalue -# 2416| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2416| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> -# 2416| ValueCategory = lvalue -# 2418| getStmt(6): [ReturnStmt] return ... +# 2430| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2430| Type = [PlainCharType] char +# 2430| ValueCategory = prvalue(load) +# 2431| getStmt(): [ExprStmt] ExprStmt +# 2431| getExpr(): [AssignAddExpr] ... += ... +# 2431| Type = [PlainCharType] char +# 2431| ValueCategory = lvalue +# 2431| getLValue(): [VariableAccess] y +# 2431| Type = [PlainCharType] char +# 2431| ValueCategory = lvalue +# 2431| getRValue(): [VariableAccess] x +# 2431| Type = [PlainCharType] char +# 2431| ValueCategory = prvalue(load) +# 2431| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 2431| Conversion = [IntegralConversion] integral conversion +# 2431| Type = [IntType] int +# 2431| ValueCategory = prvalue +# 2430| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2430| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> +# 2430| ValueCategory = lvalue +# 2432| getStmt(6): [ReturnStmt] return ... perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) # 4| <params>: diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index cb7eb8386d06..cbf32f3aab31 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -11624,3923 +11624,3964 @@ ir.cpp: # 1932| v1932_6(void) = AliasedUse : ~m1934_5 # 1932| v1932_7(void) = ExitFunction : -# 1938| char global_template<char> -# 1938| Block 0 -# 1938| v1938_1(void) = EnterFunction : -# 1938| m1938_2(unknown) = AliasedDefinition : -# 1938| r1938_3(glval<char>) = VariableAddress[global_template] : -# 1938| r1938_4(char) = Constant[42] : -# 1938| m1938_5(char) = Store[global_template] : &:r1938_3, r1938_4 -# 1938| m1938_6(unknown) = Chi : total:m1938_2, partial:m1938_5 -# 1938| v1938_7(void) = ReturnVoid : -# 1938| v1938_8(void) = AliasedUse : ~m1938_6 -# 1938| v1938_9(void) = ExitFunction : - -# 1938| int global_template<int> -# 1938| Block 0 -# 1938| v1938_1(void) = EnterFunction : -# 1938| m1938_2(unknown) = AliasedDefinition : -# 1938| r1938_3(glval<int>) = VariableAddress[global_template] : -# 1938| r1938_4(int) = Constant[42] : -# 1938| m1938_5(int) = Store[global_template] : &:r1938_3, r1938_4 -# 1938| m1938_6(unknown) = Chi : total:m1938_2, partial:m1938_5 -# 1938| v1938_7(void) = ReturnVoid : -# 1938| v1938_8(void) = AliasedUse : ~m1938_6 -# 1938| v1938_9(void) = ExitFunction : - -# 1940| int test_global_template_int() -# 1940| Block 0 -# 1940| v1940_1(void) = EnterFunction : -# 1940| m1940_2(unknown) = AliasedDefinition : -# 1940| m1940_3(unknown) = InitializeNonLocal : -# 1940| m1940_4(unknown) = Chi : total:m1940_2, partial:m1940_3 -# 1941| r1941_1(glval<int>) = VariableAddress[local_int] : -# 1941| r1941_2(glval<int>) = VariableAddress[global_template] : -# 1941| r1941_3(int) = Load[global_template] : &:r1941_2, ~m1940_3 -# 1941| m1941_4(int) = Store[local_int] : &:r1941_1, r1941_3 -# 1942| r1942_1(glval<char>) = VariableAddress[local_char] : -# 1942| r1942_2(glval<char>) = VariableAddress[global_template] : -# 1942| r1942_3(char) = Load[global_template] : &:r1942_2, ~m1940_3 -# 1942| m1942_4(char) = Store[local_char] : &:r1942_1, r1942_3 -# 1943| r1943_1(glval<int>) = VariableAddress[#return] : -# 1943| r1943_2(glval<int>) = VariableAddress[local_int] : -# 1943| r1943_3(int) = Load[local_int] : &:r1943_2, m1941_4 -# 1943| r1943_4(glval<char>) = VariableAddress[local_char] : -# 1943| r1943_5(char) = Load[local_char] : &:r1943_4, m1942_4 -# 1943| r1943_6(int) = Convert : r1943_5 -# 1943| r1943_7(int) = Add : r1943_3, r1943_6 -# 1943| m1943_8(int) = Store[#return] : &:r1943_1, r1943_7 -# 1940| r1940_5(glval<int>) = VariableAddress[#return] : -# 1940| v1940_6(void) = ReturnValue : &:r1940_5, m1943_8 -# 1940| v1940_7(void) = AliasedUse : m1940_3 -# 1940| v1940_8(void) = ExitFunction : - -# 1948| int noreturnTest(int) -# 1948| Block 0 -# 1948| v1948_1(void) = EnterFunction : -# 1948| m1948_2(unknown) = AliasedDefinition : -# 1948| m1948_3(unknown) = InitializeNonLocal : -# 1948| m1948_4(unknown) = Chi : total:m1948_2, partial:m1948_3 -# 1948| r1948_5(glval<int>) = VariableAddress[x] : -# 1948| m1948_6(int) = InitializeParameter[x] : &:r1948_5 -# 1949| r1949_1(glval<int>) = VariableAddress[x] : -# 1949| r1949_2(int) = Load[x] : &:r1949_1, m1948_6 -# 1949| r1949_3(int) = Constant[10] : -# 1949| r1949_4(bool) = CompareLT : r1949_2, r1949_3 -# 1949| v1949_5(void) = ConditionalBranch : r1949_4 +# 1939| int missing_declaration_entries::Bar3<int>::two_more_missing_variable_declaration_entries() +# 1939| Block 0 +# 1939| v1939_1(void) = EnterFunction : +# 1939| m1939_2(unknown) = AliasedDefinition : +# 1939| m1939_3(unknown) = InitializeNonLocal : +# 1939| m1939_4(unknown) = Chi : total:m1939_2, partial:m1939_3 +# 1939| r1939_5(glval<unknown>) = VariableAddress[#this] : +# 1939| m1939_6(glval<Bar3<int>>) = InitializeParameter[#this] : &:r1939_5 +# 1939| r1939_7(glval<Bar3<int>>) = Load[#this] : &:r1939_5, m1939_6 +# 1939| m1939_8(Bar3<int>) = InitializeIndirection[#this] : &:r1939_7 +# 1942| r1942_1(glval<int>) = VariableAddress[#return] : +# 1942| r1942_2(glval<int>) = VariableAddress[g] : +# 1942| r1942_3(int) = Load[g] : &:r1942_2, ~m1939_3 +# 1942| m1942_4(int) = Store[#return] : &:r1942_1, r1942_3 +# 1939| v1939_9(void) = ReturnIndirection[#this] : &:r1939_7, m1939_8 +# 1939| r1939_10(glval<int>) = VariableAddress[#return] : +# 1939| v1939_11(void) = ReturnValue : &:r1939_10, m1942_4 +# 1939| v1939_12(void) = AliasedUse : m1939_3 +# 1939| v1939_13(void) = ExitFunction : + +# 1946| void missing_declaration_entries::test3() +# 1946| Block 0 +# 1946| v1946_1(void) = EnterFunction : +# 1946| m1946_2(unknown) = AliasedDefinition : +# 1946| m1946_3(unknown) = InitializeNonLocal : +# 1946| m1946_4(unknown) = Chi : total:m1946_2, partial:m1946_3 +# 1947| r1947_1(glval<Bar3<int>>) = VariableAddress[b] : +# 1947| m1947_2(Bar3<int>) = Uninitialized[b] : &:r1947_1 +# 1948| r1948_1(glval<Bar3<int>>) = VariableAddress[b] : +# 1948| r1948_2(glval<unknown>) = FunctionAddress[two_more_missing_variable_declaration_entries] : +# 1948| r1948_3(int) = Call[two_more_missing_variable_declaration_entries] : func:r1948_2, this:r1948_1 +# 1948| m1948_4(unknown) = ^CallSideEffect : ~m1946_4 +# 1948| m1948_5(unknown) = Chi : total:m1946_4, partial:m1948_4 +# 1948| v1948_6(void) = ^IndirectReadSideEffect[-1] : &:r1948_1, m1947_2 +# 1948| m1948_7(Bar3<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1948_1 +# 1948| m1948_8(Bar3<int>) = Chi : total:m1947_2, partial:m1948_7 +# 1949| v1949_1(void) = NoOp : +# 1946| v1946_5(void) = ReturnVoid : +# 1946| v1946_6(void) = AliasedUse : ~m1948_5 +# 1946| v1946_7(void) = ExitFunction : + +# 1952| char global_template<char> +# 1952| Block 0 +# 1952| v1952_1(void) = EnterFunction : +# 1952| m1952_2(unknown) = AliasedDefinition : +# 1952| r1952_3(glval<char>) = VariableAddress[global_template] : +# 1952| r1952_4(char) = Constant[42] : +# 1952| m1952_5(char) = Store[global_template] : &:r1952_3, r1952_4 +# 1952| m1952_6(unknown) = Chi : total:m1952_2, partial:m1952_5 +# 1952| v1952_7(void) = ReturnVoid : +# 1952| v1952_8(void) = AliasedUse : ~m1952_6 +# 1952| v1952_9(void) = ExitFunction : + +# 1952| int global_template<int> +# 1952| Block 0 +# 1952| v1952_1(void) = EnterFunction : +# 1952| m1952_2(unknown) = AliasedDefinition : +# 1952| r1952_3(glval<int>) = VariableAddress[global_template] : +# 1952| r1952_4(int) = Constant[42] : +# 1952| m1952_5(int) = Store[global_template] : &:r1952_3, r1952_4 +# 1952| m1952_6(unknown) = Chi : total:m1952_2, partial:m1952_5 +# 1952| v1952_7(void) = ReturnVoid : +# 1952| v1952_8(void) = AliasedUse : ~m1952_6 +# 1952| v1952_9(void) = ExitFunction : + +# 1954| int test_global_template_int() +# 1954| Block 0 +# 1954| v1954_1(void) = EnterFunction : +# 1954| m1954_2(unknown) = AliasedDefinition : +# 1954| m1954_3(unknown) = InitializeNonLocal : +# 1954| m1954_4(unknown) = Chi : total:m1954_2, partial:m1954_3 +# 1955| r1955_1(glval<int>) = VariableAddress[local_int] : +# 1955| r1955_2(glval<int>) = VariableAddress[global_template] : +# 1955| r1955_3(int) = Load[global_template] : &:r1955_2, ~m1954_3 +# 1955| m1955_4(int) = Store[local_int] : &:r1955_1, r1955_3 +# 1956| r1956_1(glval<char>) = VariableAddress[local_char] : +# 1956| r1956_2(glval<char>) = VariableAddress[global_template] : +# 1956| r1956_3(char) = Load[global_template] : &:r1956_2, ~m1954_3 +# 1956| m1956_4(char) = Store[local_char] : &:r1956_1, r1956_3 +# 1957| r1957_1(glval<int>) = VariableAddress[#return] : +# 1957| r1957_2(glval<int>) = VariableAddress[local_int] : +# 1957| r1957_3(int) = Load[local_int] : &:r1957_2, m1955_4 +# 1957| r1957_4(glval<char>) = VariableAddress[local_char] : +# 1957| r1957_5(char) = Load[local_char] : &:r1957_4, m1956_4 +# 1957| r1957_6(int) = Convert : r1957_5 +# 1957| r1957_7(int) = Add : r1957_3, r1957_6 +# 1957| m1957_8(int) = Store[#return] : &:r1957_1, r1957_7 +# 1954| r1954_5(glval<int>) = VariableAddress[#return] : +# 1954| v1954_6(void) = ReturnValue : &:r1954_5, m1957_8 +# 1954| v1954_7(void) = AliasedUse : m1954_3 +# 1954| v1954_8(void) = ExitFunction : + +# 1962| int noreturnTest(int) +# 1962| Block 0 +# 1962| v1962_1(void) = EnterFunction : +# 1962| m1962_2(unknown) = AliasedDefinition : +# 1962| m1962_3(unknown) = InitializeNonLocal : +# 1962| m1962_4(unknown) = Chi : total:m1962_2, partial:m1962_3 +# 1962| r1962_5(glval<int>) = VariableAddress[x] : +# 1962| m1962_6(int) = InitializeParameter[x] : &:r1962_5 +# 1963| r1963_1(glval<int>) = VariableAddress[x] : +# 1963| r1963_2(int) = Load[x] : &:r1963_1, m1962_6 +# 1963| r1963_3(int) = Constant[10] : +# 1963| r1963_4(bool) = CompareLT : r1963_2, r1963_3 +# 1963| v1963_5(void) = ConditionalBranch : r1963_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1950| Block 1 -# 1950| r1950_1(glval<int>) = VariableAddress[#return] : -# 1950| r1950_2(glval<int>) = VariableAddress[x] : -# 1950| r1950_3(int) = Load[x] : &:r1950_2, m1948_6 -# 1950| m1950_4(int) = Store[#return] : &:r1950_1, r1950_3 -# 1948| r1948_7(glval<int>) = VariableAddress[#return] : -# 1948| v1948_8(void) = ReturnValue : &:r1948_7, m1950_4 -# 1948| v1948_9(void) = AliasedUse : m1948_3 -# 1948| v1948_10(void) = ExitFunction : - -# 1952| Block 2 -# 1952| r1952_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1952| v1952_2(void) = Call[noreturnFunc] : func:r1952_1 -# 1952| m1952_3(unknown) = ^CallSideEffect : ~m1948_4 -# 1952| m1952_4(unknown) = Chi : total:m1948_4, partial:m1952_3 -# 1948| v1948_11(void) = Unreached : - -# 1956| int noreturnTest2(int) -# 1956| Block 0 -# 1956| v1956_1(void) = EnterFunction : -# 1956| m1956_2(unknown) = AliasedDefinition : -# 1956| m1956_3(unknown) = InitializeNonLocal : -# 1956| m1956_4(unknown) = Chi : total:m1956_2, partial:m1956_3 -# 1956| r1956_5(glval<int>) = VariableAddress[x] : -# 1956| m1956_6(int) = InitializeParameter[x] : &:r1956_5 -# 1957| r1957_1(glval<int>) = VariableAddress[x] : -# 1957| r1957_2(int) = Load[x] : &:r1957_1, m1956_6 -# 1957| r1957_3(int) = Constant[10] : -# 1957| r1957_4(bool) = CompareLT : r1957_2, r1957_3 -# 1957| v1957_5(void) = ConditionalBranch : r1957_4 -#-----| False -> Block 2 -#-----| True -> Block 1 - -# 1958| Block 1 -# 1958| r1958_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1958| v1958_2(void) = Call[noreturnFunc] : func:r1958_1 -# 1958| m1958_3(unknown) = ^CallSideEffect : ~m1956_4 -# 1958| m1958_4(unknown) = Chi : total:m1956_4, partial:m1958_3 -# 1956| v1956_7(void) = Unreached : - -# 1960| Block 2 -# 1960| r1960_1(glval<int>) = VariableAddress[#return] : -# 1960| r1960_2(glval<int>) = VariableAddress[x] : -# 1960| r1960_3(int) = Load[x] : &:r1960_2, m1956_6 -# 1960| m1960_4(int) = Store[#return] : &:r1960_1, r1960_3 -# 1956| r1956_8(glval<int>) = VariableAddress[#return] : -# 1956| v1956_9(void) = ReturnValue : &:r1956_8, m1960_4 -# 1956| v1956_10(void) = AliasedUse : m1956_3 -# 1956| v1956_11(void) = ExitFunction : - -# 1963| int static_function(int) -# 1963| Block 0 -# 1963| v1963_1(void) = EnterFunction : -# 1963| m1963_2(unknown) = AliasedDefinition : -# 1963| m1963_3(unknown) = InitializeNonLocal : -# 1963| m1963_4(unknown) = Chi : total:m1963_2, partial:m1963_3 -# 1963| r1963_5(glval<int>) = VariableAddress[x] : -# 1963| m1963_6(int) = InitializeParameter[x] : &:r1963_5 +# 1964| Block 1 # 1964| r1964_1(glval<int>) = VariableAddress[#return] : # 1964| r1964_2(glval<int>) = VariableAddress[x] : -# 1964| r1964_3(int) = Load[x] : &:r1964_2, m1963_6 +# 1964| r1964_3(int) = Load[x] : &:r1964_2, m1962_6 # 1964| m1964_4(int) = Store[#return] : &:r1964_1, r1964_3 -# 1963| r1963_7(glval<int>) = VariableAddress[#return] : -# 1963| v1963_8(void) = ReturnValue : &:r1963_7, m1964_4 -# 1963| v1963_9(void) = AliasedUse : m1963_3 -# 1963| v1963_10(void) = ExitFunction : - -# 1967| void test_static_functions_with_assignments() -# 1967| Block 0 -# 1967| v1967_1(void) = EnterFunction : -# 1967| m1967_2(unknown) = AliasedDefinition : -# 1967| m1967_3(unknown) = InitializeNonLocal : -# 1967| m1967_4(unknown) = Chi : total:m1967_2, partial:m1967_3 -# 1968| r1968_1(glval<C>) = VariableAddress[c] : -# 1968| m1968_2(C) = Uninitialized[c] : &:r1968_1 -# 1968| r1968_3(glval<unknown>) = FunctionAddress[C] : -# 1968| v1968_4(void) = Call[C] : func:r1968_3, this:r1968_1 -# 1968| m1968_5(unknown) = ^CallSideEffect : ~m1967_4 -# 1968| m1968_6(unknown) = Chi : total:m1967_4, partial:m1968_5 -# 1968| m1968_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1968_1 -# 1968| m1968_8(C) = Chi : total:m1968_2, partial:m1968_7 -# 1969| r1969_1(glval<int>) = VariableAddress[x] : -# 1969| m1969_2(int) = Uninitialized[x] : &:r1969_1 -# 1970| r1970_1(glval<C>) = VariableAddress[c] : -# 1970| r1970_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1970| r1970_3(int) = Constant[10] : -# 1970| r1970_4(int) = Call[StaticMemberFunction] : func:r1970_2, 0:r1970_3 -# 1970| m1970_5(unknown) = ^CallSideEffect : ~m1968_6 -# 1970| m1970_6(unknown) = Chi : total:m1968_6, partial:m1970_5 -# 1970| r1970_7(glval<int>) = VariableAddress[x] : -# 1970| m1970_8(int) = Store[x] : &:r1970_7, r1970_4 -# 1971| r1971_1(glval<int>) = VariableAddress[y] : -# 1971| m1971_2(int) = Uninitialized[y] : &:r1971_1 -# 1972| r1972_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1972| r1972_2(int) = Constant[10] : -# 1972| r1972_3(int) = Call[StaticMemberFunction] : func:r1972_1, 0:r1972_2 -# 1972| m1972_4(unknown) = ^CallSideEffect : ~m1970_6 -# 1972| m1972_5(unknown) = Chi : total:m1970_6, partial:m1972_4 -# 1972| r1972_6(glval<int>) = VariableAddress[y] : -# 1972| m1972_7(int) = Store[y] : &:r1972_6, r1972_3 -# 1973| r1973_1(glval<int>) = VariableAddress[z] : -# 1973| m1973_2(int) = Uninitialized[z] : &:r1973_1 -# 1974| r1974_1(glval<unknown>) = FunctionAddress[static_function] : -# 1974| r1974_2(int) = Constant[10] : -# 1974| r1974_3(int) = Call[static_function] : func:r1974_1, 0:r1974_2 -# 1974| m1974_4(unknown) = ^CallSideEffect : ~m1972_5 -# 1974| m1974_5(unknown) = Chi : total:m1972_5, partial:m1974_4 -# 1974| r1974_6(glval<int>) = VariableAddress[z] : -# 1974| m1974_7(int) = Store[z] : &:r1974_6, r1974_3 -# 1975| v1975_1(void) = NoOp : -# 1975| r1975_2(glval<C>) = VariableAddress[c] : -# 1975| r1975_3(glval<unknown>) = FunctionAddress[~C] : -# 1975| v1975_4(void) = Call[~C] : func:r1975_3, this:r1975_2 -# 1975| m1975_5(unknown) = ^CallSideEffect : ~m1974_5 -# 1975| m1975_6(unknown) = Chi : total:m1974_5, partial:m1975_5 -# 1975| v1975_7(void) = ^IndirectReadSideEffect[-1] : &:r1975_2, m1968_8 -# 1975| m1975_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1975_2 -# 1975| m1975_9(C) = Chi : total:m1968_8, partial:m1975_8 -# 1967| v1967_5(void) = ReturnVoid : -# 1967| v1967_6(void) = AliasedUse : ~m1975_6 -# 1967| v1967_7(void) = ExitFunction : - -# 1977| void test_double_assign() +# 1962| r1962_7(glval<int>) = VariableAddress[#return] : +# 1962| v1962_8(void) = ReturnValue : &:r1962_7, m1964_4 +# 1962| v1962_9(void) = AliasedUse : m1962_3 +# 1962| v1962_10(void) = ExitFunction : + +# 1966| Block 2 +# 1966| r1966_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1966| v1966_2(void) = Call[noreturnFunc] : func:r1966_1 +# 1966| m1966_3(unknown) = ^CallSideEffect : ~m1962_4 +# 1966| m1966_4(unknown) = Chi : total:m1962_4, partial:m1966_3 +# 1962| v1962_11(void) = Unreached : + +# 1970| int noreturnTest2(int) +# 1970| Block 0 +# 1970| v1970_1(void) = EnterFunction : +# 1970| m1970_2(unknown) = AliasedDefinition : +# 1970| m1970_3(unknown) = InitializeNonLocal : +# 1970| m1970_4(unknown) = Chi : total:m1970_2, partial:m1970_3 +# 1970| r1970_5(glval<int>) = VariableAddress[x] : +# 1970| m1970_6(int) = InitializeParameter[x] : &:r1970_5 +# 1971| r1971_1(glval<int>) = VariableAddress[x] : +# 1971| r1971_2(int) = Load[x] : &:r1971_1, m1970_6 +# 1971| r1971_3(int) = Constant[10] : +# 1971| r1971_4(bool) = CompareLT : r1971_2, r1971_3 +# 1971| v1971_5(void) = ConditionalBranch : r1971_4 +#-----| False -> Block 2 +#-----| True -> Block 1 + +# 1972| Block 1 +# 1972| r1972_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1972| v1972_2(void) = Call[noreturnFunc] : func:r1972_1 +# 1972| m1972_3(unknown) = ^CallSideEffect : ~m1970_4 +# 1972| m1972_4(unknown) = Chi : total:m1970_4, partial:m1972_3 +# 1970| v1970_7(void) = Unreached : + +# 1974| Block 2 +# 1974| r1974_1(glval<int>) = VariableAddress[#return] : +# 1974| r1974_2(glval<int>) = VariableAddress[x] : +# 1974| r1974_3(int) = Load[x] : &:r1974_2, m1970_6 +# 1974| m1974_4(int) = Store[#return] : &:r1974_1, r1974_3 +# 1970| r1970_8(glval<int>) = VariableAddress[#return] : +# 1970| v1970_9(void) = ReturnValue : &:r1970_8, m1974_4 +# 1970| v1970_10(void) = AliasedUse : m1970_3 +# 1970| v1970_11(void) = ExitFunction : + +# 1977| int static_function(int) # 1977| Block 0 -# 1977| v1977_1(void) = EnterFunction : -# 1977| m1977_2(unknown) = AliasedDefinition : -# 1977| m1977_3(unknown) = InitializeNonLocal : -# 1977| m1977_4(unknown) = Chi : total:m1977_2, partial:m1977_3 -# 1978| r1978_1(glval<int>) = VariableAddress[i] : -# 1978| m1978_2(int) = Uninitialized[i] : &:r1978_1 -# 1978| r1978_3(glval<int>) = VariableAddress[j] : -# 1978| m1978_4(int) = Uninitialized[j] : &:r1978_3 -# 1979| r1979_1(int) = Constant[40] : -# 1979| r1979_2(glval<int>) = VariableAddress[j] : -# 1979| m1979_3(int) = Store[j] : &:r1979_2, r1979_1 -# 1979| r1979_4(int) = Load[j] : &:r1979_2, m1979_3 -# 1979| r1979_5(glval<int>) = VariableAddress[i] : -# 1979| m1979_6(int) = Store[i] : &:r1979_5, r1979_4 -# 1980| v1980_1(void) = NoOp : -# 1977| v1977_5(void) = ReturnVoid : -# 1977| v1977_6(void) = AliasedUse : m1977_3 -# 1977| v1977_7(void) = ExitFunction : - -# 1982| void test_assign_with_assign_operation() -# 1982| Block 0 -# 1982| v1982_1(void) = EnterFunction : -# 1982| m1982_2(unknown) = AliasedDefinition : -# 1982| m1982_3(unknown) = InitializeNonLocal : -# 1982| m1982_4(unknown) = Chi : total:m1982_2, partial:m1982_3 -# 1983| r1983_1(glval<int>) = VariableAddress[i] : -# 1983| m1983_2(int) = Uninitialized[i] : &:r1983_1 -# 1983| r1983_3(glval<int>) = VariableAddress[j] : -# 1983| r1983_4(int) = Constant[0] : -# 1983| m1983_5(int) = Store[j] : &:r1983_3, r1983_4 -# 1984| r1984_1(int) = Constant[40] : -# 1984| r1984_2(glval<int>) = VariableAddress[j] : -# 1984| r1984_3(int) = Load[j] : &:r1984_2, m1983_5 -# 1984| r1984_4(int) = Add : r1984_3, r1984_1 -# 1984| m1984_5(int) = Store[j] : &:r1984_2, r1984_4 -# 1984| r1984_6(int) = Load[j] : &:r1984_2, m1984_5 -# 1984| r1984_7(glval<int>) = VariableAddress[i] : -# 1984| m1984_8(int) = Store[i] : &:r1984_7, r1984_6 -# 1985| v1985_1(void) = NoOp : -# 1982| v1982_5(void) = ReturnVoid : -# 1982| v1982_6(void) = AliasedUse : m1982_3 -# 1982| v1982_7(void) = ExitFunction : - -# 1991| D& D::ReferenceStaticMemberFunction() +# 1977| v1977_1(void) = EnterFunction : +# 1977| m1977_2(unknown) = AliasedDefinition : +# 1977| m1977_3(unknown) = InitializeNonLocal : +# 1977| m1977_4(unknown) = Chi : total:m1977_2, partial:m1977_3 +# 1977| r1977_5(glval<int>) = VariableAddress[x] : +# 1977| m1977_6(int) = InitializeParameter[x] : &:r1977_5 +# 1978| r1978_1(glval<int>) = VariableAddress[#return] : +# 1978| r1978_2(glval<int>) = VariableAddress[x] : +# 1978| r1978_3(int) = Load[x] : &:r1978_2, m1977_6 +# 1978| m1978_4(int) = Store[#return] : &:r1978_1, r1978_3 +# 1977| r1977_7(glval<int>) = VariableAddress[#return] : +# 1977| v1977_8(void) = ReturnValue : &:r1977_7, m1978_4 +# 1977| v1977_9(void) = AliasedUse : m1977_3 +# 1977| v1977_10(void) = ExitFunction : + +# 1981| void test_static_functions_with_assignments() +# 1981| Block 0 +# 1981| v1981_1(void) = EnterFunction : +# 1981| m1981_2(unknown) = AliasedDefinition : +# 1981| m1981_3(unknown) = InitializeNonLocal : +# 1981| m1981_4(unknown) = Chi : total:m1981_2, partial:m1981_3 +# 1982| r1982_1(glval<C>) = VariableAddress[c] : +# 1982| m1982_2(C) = Uninitialized[c] : &:r1982_1 +# 1982| r1982_3(glval<unknown>) = FunctionAddress[C] : +# 1982| v1982_4(void) = Call[C] : func:r1982_3, this:r1982_1 +# 1982| m1982_5(unknown) = ^CallSideEffect : ~m1981_4 +# 1982| m1982_6(unknown) = Chi : total:m1981_4, partial:m1982_5 +# 1982| m1982_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1982_1 +# 1982| m1982_8(C) = Chi : total:m1982_2, partial:m1982_7 +# 1983| r1983_1(glval<int>) = VariableAddress[x] : +# 1983| m1983_2(int) = Uninitialized[x] : &:r1983_1 +# 1984| r1984_1(glval<C>) = VariableAddress[c] : +# 1984| r1984_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1984| r1984_3(int) = Constant[10] : +# 1984| r1984_4(int) = Call[StaticMemberFunction] : func:r1984_2, 0:r1984_3 +# 1984| m1984_5(unknown) = ^CallSideEffect : ~m1982_6 +# 1984| m1984_6(unknown) = Chi : total:m1982_6, partial:m1984_5 +# 1984| r1984_7(glval<int>) = VariableAddress[x] : +# 1984| m1984_8(int) = Store[x] : &:r1984_7, r1984_4 +# 1985| r1985_1(glval<int>) = VariableAddress[y] : +# 1985| m1985_2(int) = Uninitialized[y] : &:r1985_1 +# 1986| r1986_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1986| r1986_2(int) = Constant[10] : +# 1986| r1986_3(int) = Call[StaticMemberFunction] : func:r1986_1, 0:r1986_2 +# 1986| m1986_4(unknown) = ^CallSideEffect : ~m1984_6 +# 1986| m1986_5(unknown) = Chi : total:m1984_6, partial:m1986_4 +# 1986| r1986_6(glval<int>) = VariableAddress[y] : +# 1986| m1986_7(int) = Store[y] : &:r1986_6, r1986_3 +# 1987| r1987_1(glval<int>) = VariableAddress[z] : +# 1987| m1987_2(int) = Uninitialized[z] : &:r1987_1 +# 1988| r1988_1(glval<unknown>) = FunctionAddress[static_function] : +# 1988| r1988_2(int) = Constant[10] : +# 1988| r1988_3(int) = Call[static_function] : func:r1988_1, 0:r1988_2 +# 1988| m1988_4(unknown) = ^CallSideEffect : ~m1986_5 +# 1988| m1988_5(unknown) = Chi : total:m1986_5, partial:m1988_4 +# 1988| r1988_6(glval<int>) = VariableAddress[z] : +# 1988| m1988_7(int) = Store[z] : &:r1988_6, r1988_3 +# 1989| v1989_1(void) = NoOp : +# 1989| r1989_2(glval<C>) = VariableAddress[c] : +# 1989| r1989_3(glval<unknown>) = FunctionAddress[~C] : +# 1989| v1989_4(void) = Call[~C] : func:r1989_3, this:r1989_2 +# 1989| m1989_5(unknown) = ^CallSideEffect : ~m1988_5 +# 1989| m1989_6(unknown) = Chi : total:m1988_5, partial:m1989_5 +# 1989| v1989_7(void) = ^IndirectReadSideEffect[-1] : &:r1989_2, m1982_8 +# 1989| m1989_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1989_2 +# 1989| m1989_9(C) = Chi : total:m1982_8, partial:m1989_8 +# 1981| v1981_5(void) = ReturnVoid : +# 1981| v1981_6(void) = AliasedUse : ~m1989_6 +# 1981| v1981_7(void) = ExitFunction : + +# 1991| void test_double_assign() # 1991| Block 0 -# 1991| v1991_1(void) = EnterFunction : -# 1991| m1991_2(unknown) = AliasedDefinition : -# 1991| m1991_3(unknown) = InitializeNonLocal : -# 1991| m1991_4(unknown) = Chi : total:m1991_2, partial:m1991_3 -# 1992| r1992_1(glval<D &>) = VariableAddress[#return] : -# 1992| r1992_2(glval<D>) = VariableAddress[x] : -# 1992| r1992_3(D &) = CopyValue : r1992_2 -# 1992| m1992_4(D &) = Store[#return] : &:r1992_1, r1992_3 -# 1991| r1991_5(glval<D &>) = VariableAddress[#return] : -# 1991| v1991_6(void) = ReturnValue : &:r1991_5, m1992_4 -# 1991| v1991_7(void) = AliasedUse : m1991_3 -# 1991| v1991_8(void) = ExitFunction : - -# 1994| D D::ObjectStaticMemberFunction() -# 1994| Block 0 -# 1994| v1994_1(void) = EnterFunction : -# 1994| m1994_2(unknown) = AliasedDefinition : -# 1994| m1994_3(unknown) = InitializeNonLocal : -# 1994| m1994_4(unknown) = Chi : total:m1994_2, partial:m1994_3 -# 1995| r1995_1(glval<D>) = VariableAddress[#return] : -# 1995| r1995_2(glval<D>) = VariableAddress[x] : -# 1995| r1995_3(D) = Load[x] : &:r1995_2, ~m1994_3 -# 1995| m1995_4(D) = Store[#return] : &:r1995_1, r1995_3 -# 1994| r1994_5(glval<D>) = VariableAddress[#return] : -# 1994| v1994_6(void) = ReturnValue : &:r1994_5, m1995_4 -# 1994| v1994_7(void) = AliasedUse : m1994_3 -# 1994| v1994_8(void) = ExitFunction : - -# 1999| void test_static_member_functions_with_reference_return() -# 1999| Block 0 -# 1999| v1999_1(void) = EnterFunction : -# 1999| m1999_2(unknown) = AliasedDefinition : -# 1999| m1999_3(unknown) = InitializeNonLocal : -# 1999| m1999_4(unknown) = Chi : total:m1999_2, partial:m1999_3 -# 2000| r2000_1(glval<D>) = VariableAddress[d] : -# 2000| m2000_2(D) = Uninitialized[d] : &:r2000_1 -# 2002| r2002_1(glval<D>) = VariableAddress[d] : -# 2002| r2002_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2002| r2002_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2002_2 -# 2002| m2002_4(unknown) = ^CallSideEffect : ~m1999_4 -# 2002| m2002_5(unknown) = Chi : total:m1999_4, partial:m2002_4 -# 2002| r2002_6(glval<D>) = CopyValue : r2002_3 -# 2003| r2003_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2003| r2003_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2003_1 -# 2003| m2003_3(unknown) = ^CallSideEffect : ~m2002_5 -# 2003| m2003_4(unknown) = Chi : total:m2002_5, partial:m2003_3 -# 2003| r2003_5(glval<D>) = CopyValue : r2003_2 -# 2004| r2004_1(glval<D>) = VariableAddress[d] : -# 2004| r2004_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2004| r2004_3(D) = Call[ObjectStaticMemberFunction] : func:r2004_2 -# 2004| m2004_4(unknown) = ^CallSideEffect : ~m2003_4 -# 2004| m2004_5(unknown) = Chi : total:m2003_4, partial:m2004_4 -# 2005| r2005_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2005| r2005_2(D) = Call[ObjectStaticMemberFunction] : func:r2005_1 -# 2005| m2005_3(unknown) = ^CallSideEffect : ~m2004_5 -# 2005| m2005_4(unknown) = Chi : total:m2004_5, partial:m2005_3 -# 2007| r2007_1(glval<D>) = VariableAddress[x] : -# 2007| m2007_2(D) = Uninitialized[x] : &:r2007_1 -# 2008| r2008_1(glval<D>) = VariableAddress[d] : -# 2008| r2008_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2008| r2008_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2008_2 -# 2008| m2008_4(unknown) = ^CallSideEffect : ~m2005_4 -# 2008| m2008_5(unknown) = Chi : total:m2005_4, partial:m2008_4 -# 2008| r2008_6(D) = Load[?] : &:r2008_3, ~m2008_5 -# 2008| r2008_7(glval<D>) = VariableAddress[x] : -# 2008| m2008_8(D) = Store[x] : &:r2008_7, r2008_6 -# 2009| r2009_1(glval<D>) = VariableAddress[y] : -# 2009| m2009_2(D) = Uninitialized[y] : &:r2009_1 -# 2010| r2010_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2010| r2010_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2010_1 -# 2010| m2010_3(unknown) = ^CallSideEffect : ~m2008_5 -# 2010| m2010_4(unknown) = Chi : total:m2008_5, partial:m2010_3 -# 2010| r2010_5(D) = Load[?] : &:r2010_2, ~m2010_4 -# 2010| r2010_6(glval<D>) = VariableAddress[y] : -# 2010| m2010_7(D) = Store[y] : &:r2010_6, r2010_5 -# 2011| r2011_1(glval<D>) = VariableAddress[j] : -# 2011| m2011_2(D) = Uninitialized[j] : &:r2011_1 -# 2012| r2012_1(glval<D>) = VariableAddress[d] : -# 2012| r2012_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2012| r2012_3(D) = Call[ObjectStaticMemberFunction] : func:r2012_2 -# 2012| m2012_4(unknown) = ^CallSideEffect : ~m2010_4 -# 2012| m2012_5(unknown) = Chi : total:m2010_4, partial:m2012_4 -# 2012| r2012_6(glval<D>) = VariableAddress[j] : -# 2012| m2012_7(D) = Store[j] : &:r2012_6, r2012_3 -# 2013| r2013_1(glval<D>) = VariableAddress[k] : -# 2013| m2013_2(D) = Uninitialized[k] : &:r2013_1 -# 2014| r2014_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2014| r2014_2(D) = Call[ObjectStaticMemberFunction] : func:r2014_1 -# 2014| m2014_3(unknown) = ^CallSideEffect : ~m2012_5 -# 2014| m2014_4(unknown) = Chi : total:m2012_5, partial:m2014_3 -# 2014| r2014_5(glval<D>) = VariableAddress[k] : -# 2014| m2014_6(D) = Store[k] : &:r2014_5, r2014_2 -# 2015| v2015_1(void) = NoOp : -# 1999| v1999_5(void) = ReturnVoid : -# 1999| v1999_6(void) = AliasedUse : ~m2014_4 -# 1999| v1999_7(void) = ExitFunction : - -# 2017| void test_volatile() -# 2017| Block 0 -# 2017| v2017_1(void) = EnterFunction : -# 2017| m2017_2(unknown) = AliasedDefinition : -# 2017| m2017_3(unknown) = InitializeNonLocal : -# 2017| m2017_4(unknown) = Chi : total:m2017_2, partial:m2017_3 -# 2018| r2018_1(glval<int>) = VariableAddress[x] : -# 2018| m2018_2(int) = Uninitialized[x] : &:r2018_1 -# 2019| r2019_1(glval<int>) = VariableAddress[x] : -# 2019| r2019_2(int) = Load[x] : &:r2019_1, m2018_2 -# 2020| v2020_1(void) = NoOp : -# 2017| v2017_5(void) = ReturnVoid : -# 2017| v2017_6(void) = AliasedUse : m2017_3 -# 2017| v2017_7(void) = ExitFunction : - -# 2028| void value_category_test() -# 2028| Block 0 -# 2028| v2028_1(void) = EnterFunction : -# 2028| m2028_2(unknown) = AliasedDefinition : -# 2028| m2028_3(unknown) = InitializeNonLocal : -# 2028| m2028_4(unknown) = Chi : total:m2028_2, partial:m2028_3 -# 2029| r2029_1(glval<ValCat>) = VariableAddress[c] : -# 2029| m2029_2(ValCat) = Uninitialized[c] : &:r2029_1 +# 1991| v1991_1(void) = EnterFunction : +# 1991| m1991_2(unknown) = AliasedDefinition : +# 1991| m1991_3(unknown) = InitializeNonLocal : +# 1991| m1991_4(unknown) = Chi : total:m1991_2, partial:m1991_3 +# 1992| r1992_1(glval<int>) = VariableAddress[i] : +# 1992| m1992_2(int) = Uninitialized[i] : &:r1992_1 +# 1992| r1992_3(glval<int>) = VariableAddress[j] : +# 1992| m1992_4(int) = Uninitialized[j] : &:r1992_3 +# 1993| r1993_1(int) = Constant[40] : +# 1993| r1993_2(glval<int>) = VariableAddress[j] : +# 1993| m1993_3(int) = Store[j] : &:r1993_2, r1993_1 +# 1993| r1993_4(int) = Load[j] : &:r1993_2, m1993_3 +# 1993| r1993_5(glval<int>) = VariableAddress[i] : +# 1993| m1993_6(int) = Store[i] : &:r1993_5, r1993_4 +# 1994| v1994_1(void) = NoOp : +# 1991| v1991_5(void) = ReturnVoid : +# 1991| v1991_6(void) = AliasedUse : m1991_3 +# 1991| v1991_7(void) = ExitFunction : + +# 1996| void test_assign_with_assign_operation() +# 1996| Block 0 +# 1996| v1996_1(void) = EnterFunction : +# 1996| m1996_2(unknown) = AliasedDefinition : +# 1996| m1996_3(unknown) = InitializeNonLocal : +# 1996| m1996_4(unknown) = Chi : total:m1996_2, partial:m1996_3 +# 1997| r1997_1(glval<int>) = VariableAddress[i] : +# 1997| m1997_2(int) = Uninitialized[i] : &:r1997_1 +# 1997| r1997_3(glval<int>) = VariableAddress[j] : +# 1997| r1997_4(int) = Constant[0] : +# 1997| m1997_5(int) = Store[j] : &:r1997_3, r1997_4 +# 1998| r1998_1(int) = Constant[40] : +# 1998| r1998_2(glval<int>) = VariableAddress[j] : +# 1998| r1998_3(int) = Load[j] : &:r1998_2, m1997_5 +# 1998| r1998_4(int) = Add : r1998_3, r1998_1 +# 1998| m1998_5(int) = Store[j] : &:r1998_2, r1998_4 +# 1998| r1998_6(int) = Load[j] : &:r1998_2, m1998_5 +# 1998| r1998_7(glval<int>) = VariableAddress[i] : +# 1998| m1998_8(int) = Store[i] : &:r1998_7, r1998_6 +# 1999| v1999_1(void) = NoOp : +# 1996| v1996_5(void) = ReturnVoid : +# 1996| v1996_6(void) = AliasedUse : m1996_3 +# 1996| v1996_7(void) = ExitFunction : + +# 2005| D& D::ReferenceStaticMemberFunction() +# 2005| Block 0 +# 2005| v2005_1(void) = EnterFunction : +# 2005| m2005_2(unknown) = AliasedDefinition : +# 2005| m2005_3(unknown) = InitializeNonLocal : +# 2005| m2005_4(unknown) = Chi : total:m2005_2, partial:m2005_3 +# 2006| r2006_1(glval<D &>) = VariableAddress[#return] : +# 2006| r2006_2(glval<D>) = VariableAddress[x] : +# 2006| r2006_3(D &) = CopyValue : r2006_2 +# 2006| m2006_4(D &) = Store[#return] : &:r2006_1, r2006_3 +# 2005| r2005_5(glval<D &>) = VariableAddress[#return] : +# 2005| v2005_6(void) = ReturnValue : &:r2005_5, m2006_4 +# 2005| v2005_7(void) = AliasedUse : m2005_3 +# 2005| v2005_8(void) = ExitFunction : + +# 2008| D D::ObjectStaticMemberFunction() +# 2008| Block 0 +# 2008| v2008_1(void) = EnterFunction : +# 2008| m2008_2(unknown) = AliasedDefinition : +# 2008| m2008_3(unknown) = InitializeNonLocal : +# 2008| m2008_4(unknown) = Chi : total:m2008_2, partial:m2008_3 +# 2009| r2009_1(glval<D>) = VariableAddress[#return] : +# 2009| r2009_2(glval<D>) = VariableAddress[x] : +# 2009| r2009_3(D) = Load[x] : &:r2009_2, ~m2008_3 +# 2009| m2009_4(D) = Store[#return] : &:r2009_1, r2009_3 +# 2008| r2008_5(glval<D>) = VariableAddress[#return] : +# 2008| v2008_6(void) = ReturnValue : &:r2008_5, m2009_4 +# 2008| v2008_7(void) = AliasedUse : m2008_3 +# 2008| v2008_8(void) = ExitFunction : + +# 2013| void test_static_member_functions_with_reference_return() +# 2013| Block 0 +# 2013| v2013_1(void) = EnterFunction : +# 2013| m2013_2(unknown) = AliasedDefinition : +# 2013| m2013_3(unknown) = InitializeNonLocal : +# 2013| m2013_4(unknown) = Chi : total:m2013_2, partial:m2013_3 +# 2014| r2014_1(glval<D>) = VariableAddress[d] : +# 2014| m2014_2(D) = Uninitialized[d] : &:r2014_1 +# 2016| r2016_1(glval<D>) = VariableAddress[d] : +# 2016| r2016_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2016| r2016_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2016_2 +# 2016| m2016_4(unknown) = ^CallSideEffect : ~m2013_4 +# 2016| m2016_5(unknown) = Chi : total:m2013_4, partial:m2016_4 +# 2016| r2016_6(glval<D>) = CopyValue : r2016_3 +# 2017| r2017_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2017| r2017_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2017_1 +# 2017| m2017_3(unknown) = ^CallSideEffect : ~m2016_5 +# 2017| m2017_4(unknown) = Chi : total:m2016_5, partial:m2017_3 +# 2017| r2017_5(glval<D>) = CopyValue : r2017_2 +# 2018| r2018_1(glval<D>) = VariableAddress[d] : +# 2018| r2018_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2018| r2018_3(D) = Call[ObjectStaticMemberFunction] : func:r2018_2 +# 2018| m2018_4(unknown) = ^CallSideEffect : ~m2017_4 +# 2018| m2018_5(unknown) = Chi : total:m2017_4, partial:m2018_4 +# 2019| r2019_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2019| r2019_2(D) = Call[ObjectStaticMemberFunction] : func:r2019_1 +# 2019| m2019_3(unknown) = ^CallSideEffect : ~m2018_5 +# 2019| m2019_4(unknown) = Chi : total:m2018_5, partial:m2019_3 +# 2021| r2021_1(glval<D>) = VariableAddress[x] : +# 2021| m2021_2(D) = Uninitialized[x] : &:r2021_1 +# 2022| r2022_1(glval<D>) = VariableAddress[d] : +# 2022| r2022_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2022| r2022_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2022_2 +# 2022| m2022_4(unknown) = ^CallSideEffect : ~m2019_4 +# 2022| m2022_5(unknown) = Chi : total:m2019_4, partial:m2022_4 +# 2022| r2022_6(D) = Load[?] : &:r2022_3, ~m2022_5 +# 2022| r2022_7(glval<D>) = VariableAddress[x] : +# 2022| m2022_8(D) = Store[x] : &:r2022_7, r2022_6 +# 2023| r2023_1(glval<D>) = VariableAddress[y] : +# 2023| m2023_2(D) = Uninitialized[y] : &:r2023_1 +# 2024| r2024_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2024| r2024_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2024_1 +# 2024| m2024_3(unknown) = ^CallSideEffect : ~m2022_5 +# 2024| m2024_4(unknown) = Chi : total:m2022_5, partial:m2024_3 +# 2024| r2024_5(D) = Load[?] : &:r2024_2, ~m2024_4 +# 2024| r2024_6(glval<D>) = VariableAddress[y] : +# 2024| m2024_7(D) = Store[y] : &:r2024_6, r2024_5 +# 2025| r2025_1(glval<D>) = VariableAddress[j] : +# 2025| m2025_2(D) = Uninitialized[j] : &:r2025_1 +# 2026| r2026_1(glval<D>) = VariableAddress[d] : +# 2026| r2026_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2026| r2026_3(D) = Call[ObjectStaticMemberFunction] : func:r2026_2 +# 2026| m2026_4(unknown) = ^CallSideEffect : ~m2024_4 +# 2026| m2026_5(unknown) = Chi : total:m2024_4, partial:m2026_4 +# 2026| r2026_6(glval<D>) = VariableAddress[j] : +# 2026| m2026_7(D) = Store[j] : &:r2026_6, r2026_3 +# 2027| r2027_1(glval<D>) = VariableAddress[k] : +# 2027| m2027_2(D) = Uninitialized[k] : &:r2027_1 +# 2028| r2028_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2028| r2028_2(D) = Call[ObjectStaticMemberFunction] : func:r2028_1 +# 2028| m2028_3(unknown) = ^CallSideEffect : ~m2026_5 +# 2028| m2028_4(unknown) = Chi : total:m2026_5, partial:m2028_3 +# 2028| r2028_5(glval<D>) = VariableAddress[k] : +# 2028| m2028_6(D) = Store[k] : &:r2028_5, r2028_2 +# 2029| v2029_1(void) = NoOp : +# 2013| v2013_5(void) = ReturnVoid : +# 2013| v2013_6(void) = AliasedUse : ~m2028_4 +# 2013| v2013_7(void) = ExitFunction : + +# 2031| void test_volatile() +# 2031| Block 0 +# 2031| v2031_1(void) = EnterFunction : +# 2031| m2031_2(unknown) = AliasedDefinition : +# 2031| m2031_3(unknown) = InitializeNonLocal : +# 2031| m2031_4(unknown) = Chi : total:m2031_2, partial:m2031_3 +# 2032| r2032_1(glval<int>) = VariableAddress[x] : +# 2032| m2032_2(int) = Uninitialized[x] : &:r2032_1 +# 2033| r2033_1(glval<int>) = VariableAddress[x] : +# 2033| r2033_2(int) = Load[x] : &:r2033_1, m2032_2 +# 2034| v2034_1(void) = NoOp : +# 2031| v2031_5(void) = ReturnVoid : +# 2031| v2031_6(void) = AliasedUse : m2031_3 +# 2031| v2031_7(void) = ExitFunction : + +# 2042| void value_category_test() +# 2042| Block 0 +# 2042| v2042_1(void) = EnterFunction : +# 2042| m2042_2(unknown) = AliasedDefinition : +# 2042| m2042_3(unknown) = InitializeNonLocal : +# 2042| m2042_4(unknown) = Chi : total:m2042_2, partial:m2042_3 +# 2043| r2043_1(glval<ValCat>) = VariableAddress[c] : +# 2043| m2043_2(ValCat) = Uninitialized[c] : &:r2043_1 #-----| r0_1(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, m0_2 -# 2031| r2031_1(glval<ValCat>) = VariableAddress[c] : -# 2031| r2031_2(glval<unknown>) = FunctionAddress[lvalue] : -# 2031| r2031_3(ValCat &) = Call[lvalue] : func:r2031_2 -# 2031| m2031_4(unknown) = ^CallSideEffect : ~m2028_4 -# 2031| m2031_5(unknown) = Chi : total:m2028_4, partial:m2031_4 -# 2031| r2031_6(glval<ValCat>) = CopyValue : r2031_3 -# 2031| m2031_7(ValCat) = Store[?] : &:r2031_6, r0_3 -# 2031| m2031_8(unknown) = Chi : total:m2031_5, partial:m2031_7 +# 2045| r2045_1(glval<ValCat>) = VariableAddress[c] : +# 2045| r2045_2(glval<unknown>) = FunctionAddress[lvalue] : +# 2045| r2045_3(ValCat &) = Call[lvalue] : func:r2045_2 +# 2045| m2045_4(unknown) = ^CallSideEffect : ~m2042_4 +# 2045| m2045_5(unknown) = Chi : total:m2042_4, partial:m2045_4 +# 2045| r2045_6(glval<ValCat>) = CopyValue : r2045_3 +# 2045| m2045_7(ValCat) = Store[?] : &:r2045_6, r0_3 +# 2045| m2045_8(unknown) = Chi : total:m2045_5, partial:m2045_7 #-----| r0_4(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, m0_5 -# 2032| r2032_1(glval<ValCat>) = VariableAddress[c] : -# 2032| r2032_2(glval<unknown>) = FunctionAddress[xvalue] : -# 2032| r2032_3(ValCat &&) = Call[xvalue] : func:r2032_2 -# 2032| m2032_4(unknown) = ^CallSideEffect : ~m2031_8 -# 2032| m2032_5(unknown) = Chi : total:m2031_8, partial:m2032_4 -# 2032| r2032_6(glval<ValCat>) = CopyValue : r2032_3 -# 2032| m2032_7(ValCat) = Store[?] : &:r2032_6, r0_6 -# 2032| m2032_8(unknown) = Chi : total:m2032_5, partial:m2032_7 +# 2046| r2046_1(glval<ValCat>) = VariableAddress[c] : +# 2046| r2046_2(glval<unknown>) = FunctionAddress[xvalue] : +# 2046| r2046_3(ValCat &&) = Call[xvalue] : func:r2046_2 +# 2046| m2046_4(unknown) = ^CallSideEffect : ~m2045_8 +# 2046| m2046_5(unknown) = Chi : total:m2045_8, partial:m2046_4 +# 2046| r2046_6(glval<ValCat>) = CopyValue : r2046_3 +# 2046| m2046_7(ValCat) = Store[?] : &:r2046_6, r0_6 +# 2046| m2046_8(unknown) = Chi : total:m2046_5, partial:m2046_7 #-----| r0_7(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, m0_8 -# 2033| r2033_1(glval<ValCat>) = VariableAddress[#temp2033:5] : -# 2033| r2033_2(glval<ValCat>) = VariableAddress[c] : -# 2033| r2033_3(glval<unknown>) = FunctionAddress[prvalue] : -# 2033| r2033_4(ValCat) = Call[prvalue] : func:r2033_3 -# 2033| m2033_5(unknown) = ^CallSideEffect : ~m2032_8 -# 2033| m2033_6(unknown) = Chi : total:m2032_8, partial:m2033_5 -# 2033| m2033_7(ValCat) = Store[#temp2033:5] : &:r2033_1, r2033_4 -# 2033| m2033_8(ValCat) = Store[#temp2033:5] : &:r2033_1, r0_9 +# 2047| r2047_1(glval<ValCat>) = VariableAddress[#temp2047:5] : +# 2047| r2047_2(glval<ValCat>) = VariableAddress[c] : +# 2047| r2047_3(glval<unknown>) = FunctionAddress[prvalue] : +# 2047| r2047_4(ValCat) = Call[prvalue] : func:r2047_3 +# 2047| m2047_5(unknown) = ^CallSideEffect : ~m2046_8 +# 2047| m2047_6(unknown) = Chi : total:m2046_8, partial:m2047_5 +# 2047| m2047_7(ValCat) = Store[#temp2047:5] : &:r2047_1, r2047_4 +# 2047| m2047_8(ValCat) = Store[#temp2047:5] : &:r2047_1, r0_9 #-----| r0_10(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, m0_11 -# 2034| r2034_1(glval<unknown>) = FunctionAddress[lvalue] : -# 2034| r2034_2(ValCat &) = Call[lvalue] : func:r2034_1 -# 2034| m2034_3(unknown) = ^CallSideEffect : ~m2033_6 -# 2034| m2034_4(unknown) = Chi : total:m2033_6, partial:m2034_3 -# 2034| r2034_5(glval<ValCat>) = CopyValue : r2034_2 -# 2034| m2034_6(ValCat) = Store[?] : &:r2034_5, r0_12 -# 2034| m2034_7(unknown) = Chi : total:m2034_4, partial:m2034_6 +# 2048| r2048_1(glval<unknown>) = FunctionAddress[lvalue] : +# 2048| r2048_2(ValCat &) = Call[lvalue] : func:r2048_1 +# 2048| m2048_3(unknown) = ^CallSideEffect : ~m2047_6 +# 2048| m2048_4(unknown) = Chi : total:m2047_6, partial:m2048_3 +# 2048| r2048_5(glval<ValCat>) = CopyValue : r2048_2 +# 2048| m2048_6(ValCat) = Store[?] : &:r2048_5, r0_12 +# 2048| m2048_7(unknown) = Chi : total:m2048_4, partial:m2048_6 #-----| r0_13(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, m0_14 -# 2035| r2035_1(glval<unknown>) = FunctionAddress[xvalue] : -# 2035| r2035_2(ValCat &&) = Call[xvalue] : func:r2035_1 -# 2035| m2035_3(unknown) = ^CallSideEffect : ~m2034_7 -# 2035| m2035_4(unknown) = Chi : total:m2034_7, partial:m2035_3 -# 2035| r2035_5(glval<ValCat>) = CopyValue : r2035_2 -# 2035| m2035_6(ValCat) = Store[?] : &:r2035_5, r0_15 -# 2035| m2035_7(unknown) = Chi : total:m2035_4, partial:m2035_6 +# 2049| r2049_1(glval<unknown>) = FunctionAddress[xvalue] : +# 2049| r2049_2(ValCat &&) = Call[xvalue] : func:r2049_1 +# 2049| m2049_3(unknown) = ^CallSideEffect : ~m2048_7 +# 2049| m2049_4(unknown) = Chi : total:m2048_7, partial:m2049_3 +# 2049| r2049_5(glval<ValCat>) = CopyValue : r2049_2 +# 2049| m2049_6(ValCat) = Store[?] : &:r2049_5, r0_15 +# 2049| m2049_7(unknown) = Chi : total:m2049_4, partial:m2049_6 #-----| r0_16(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| m0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, m0_17 -# 2036| r2036_1(glval<ValCat>) = VariableAddress[#temp2036:5] : -# 2036| r2036_2(glval<unknown>) = FunctionAddress[prvalue] : -# 2036| r2036_3(ValCat) = Call[prvalue] : func:r2036_2 -# 2036| m2036_4(unknown) = ^CallSideEffect : ~m2035_7 -# 2036| m2036_5(unknown) = Chi : total:m2035_7, partial:m2036_4 -# 2036| m2036_6(ValCat) = Store[#temp2036:5] : &:r2036_1, r2036_3 -# 2036| m2036_7(ValCat) = Store[#temp2036:5] : &:r2036_1, r0_18 -# 2037| v2037_1(void) = NoOp : -# 2028| v2028_5(void) = ReturnVoid : -# 2028| v2028_6(void) = AliasedUse : ~m2036_5 -# 2028| v2028_7(void) = ExitFunction : - -# 2039| void SetStaticFuncPtr() -# 2039| Block 0 -# 2039| v2039_1(void) = EnterFunction : -# 2039| m2039_2(unknown) = AliasedDefinition : -# 2039| m2039_3(unknown) = InitializeNonLocal : -# 2039| m2039_4(unknown) = Chi : total:m2039_2, partial:m2039_3 -# 2040| r2040_1(glval<C>) = VariableAddress[c] : -# 2040| m2040_2(C) = Uninitialized[c] : &:r2040_1 -# 2040| r2040_3(glval<unknown>) = FunctionAddress[C] : -# 2040| v2040_4(void) = Call[C] : func:r2040_3, this:r2040_1 -# 2040| m2040_5(unknown) = ^CallSideEffect : ~m2039_4 -# 2040| m2040_6(unknown) = Chi : total:m2039_4, partial:m2040_5 -# 2040| m2040_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2040_1 -# 2040| m2040_8(C) = Chi : total:m2040_2, partial:m2040_7 -# 2041| r2041_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2041| r2041_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2041| m2041_3(..(*)(..)) = Store[pfn] : &:r2041_1, r2041_2 -# 2042| r2042_1(glval<C>) = VariableAddress[c] : -# 2042| r2042_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2042| r2042_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2042| m2042_4(..(*)(..)) = Store[pfn] : &:r2042_3, r2042_2 -# 2043| v2043_1(void) = NoOp : -# 2043| r2043_2(glval<C>) = VariableAddress[c] : -# 2043| r2043_3(glval<unknown>) = FunctionAddress[~C] : -# 2043| v2043_4(void) = Call[~C] : func:r2043_3, this:r2043_2 -# 2043| m2043_5(unknown) = ^CallSideEffect : ~m2040_6 -# 2043| m2043_6(unknown) = Chi : total:m2040_6, partial:m2043_5 -# 2043| v2043_7(void) = ^IndirectReadSideEffect[-1] : &:r2043_2, m2040_8 -# 2043| m2043_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r2043_2 -# 2043| m2043_9(C) = Chi : total:m2040_8, partial:m2043_8 -# 2039| v2039_5(void) = ReturnVoid : -# 2039| v2039_6(void) = AliasedUse : ~m2043_6 -# 2039| v2039_7(void) = ExitFunction : - -# 2045| void TernaryTestInt(bool, int, int, int) -# 2045| Block 0 -# 2045| v2045_1(void) = EnterFunction : -# 2045| m2045_2(unknown) = AliasedDefinition : -# 2045| m2045_3(unknown) = InitializeNonLocal : -# 2045| m2045_4(unknown) = Chi : total:m2045_2, partial:m2045_3 -# 2045| r2045_5(glval<bool>) = VariableAddress[a] : -# 2045| m2045_6(bool) = InitializeParameter[a] : &:r2045_5 -# 2045| r2045_7(glval<int>) = VariableAddress[x] : -# 2045| m2045_8(int) = InitializeParameter[x] : &:r2045_7 -# 2045| r2045_9(glval<int>) = VariableAddress[y] : -# 2045| m2045_10(int) = InitializeParameter[y] : &:r2045_9 -# 2045| r2045_11(glval<int>) = VariableAddress[z] : -# 2045| m2045_12(int) = InitializeParameter[z] : &:r2045_11 -# 2046| r2046_1(glval<bool>) = VariableAddress[a] : -# 2046| r2046_2(bool) = Load[a] : &:r2046_1, m2045_6 -# 2046| v2046_3(void) = ConditionalBranch : r2046_2 +# 2050| r2050_1(glval<ValCat>) = VariableAddress[#temp2050:5] : +# 2050| r2050_2(glval<unknown>) = FunctionAddress[prvalue] : +# 2050| r2050_3(ValCat) = Call[prvalue] : func:r2050_2 +# 2050| m2050_4(unknown) = ^CallSideEffect : ~m2049_7 +# 2050| m2050_5(unknown) = Chi : total:m2049_7, partial:m2050_4 +# 2050| m2050_6(ValCat) = Store[#temp2050:5] : &:r2050_1, r2050_3 +# 2050| m2050_7(ValCat) = Store[#temp2050:5] : &:r2050_1, r0_18 +# 2051| v2051_1(void) = NoOp : +# 2042| v2042_5(void) = ReturnVoid : +# 2042| v2042_6(void) = AliasedUse : ~m2050_5 +# 2042| v2042_7(void) = ExitFunction : + +# 2053| void SetStaticFuncPtr() +# 2053| Block 0 +# 2053| v2053_1(void) = EnterFunction : +# 2053| m2053_2(unknown) = AliasedDefinition : +# 2053| m2053_3(unknown) = InitializeNonLocal : +# 2053| m2053_4(unknown) = Chi : total:m2053_2, partial:m2053_3 +# 2054| r2054_1(glval<C>) = VariableAddress[c] : +# 2054| m2054_2(C) = Uninitialized[c] : &:r2054_1 +# 2054| r2054_3(glval<unknown>) = FunctionAddress[C] : +# 2054| v2054_4(void) = Call[C] : func:r2054_3, this:r2054_1 +# 2054| m2054_5(unknown) = ^CallSideEffect : ~m2053_4 +# 2054| m2054_6(unknown) = Chi : total:m2053_4, partial:m2054_5 +# 2054| m2054_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2054_1 +# 2054| m2054_8(C) = Chi : total:m2054_2, partial:m2054_7 +# 2055| r2055_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2055| r2055_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2055| m2055_3(..(*)(..)) = Store[pfn] : &:r2055_1, r2055_2 +# 2056| r2056_1(glval<C>) = VariableAddress[c] : +# 2056| r2056_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2056| r2056_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2056| m2056_4(..(*)(..)) = Store[pfn] : &:r2056_3, r2056_2 +# 2057| v2057_1(void) = NoOp : +# 2057| r2057_2(glval<C>) = VariableAddress[c] : +# 2057| r2057_3(glval<unknown>) = FunctionAddress[~C] : +# 2057| v2057_4(void) = Call[~C] : func:r2057_3, this:r2057_2 +# 2057| m2057_5(unknown) = ^CallSideEffect : ~m2054_6 +# 2057| m2057_6(unknown) = Chi : total:m2054_6, partial:m2057_5 +# 2057| v2057_7(void) = ^IndirectReadSideEffect[-1] : &:r2057_2, m2054_8 +# 2057| m2057_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r2057_2 +# 2057| m2057_9(C) = Chi : total:m2054_8, partial:m2057_8 +# 2053| v2053_5(void) = ReturnVoid : +# 2053| v2053_6(void) = AliasedUse : ~m2057_6 +# 2053| v2053_7(void) = ExitFunction : + +# 2059| void TernaryTestInt(bool, int, int, int) +# 2059| Block 0 +# 2059| v2059_1(void) = EnterFunction : +# 2059| m2059_2(unknown) = AliasedDefinition : +# 2059| m2059_3(unknown) = InitializeNonLocal : +# 2059| m2059_4(unknown) = Chi : total:m2059_2, partial:m2059_3 +# 2059| r2059_5(glval<bool>) = VariableAddress[a] : +# 2059| m2059_6(bool) = InitializeParameter[a] : &:r2059_5 +# 2059| r2059_7(glval<int>) = VariableAddress[x] : +# 2059| m2059_8(int) = InitializeParameter[x] : &:r2059_7 +# 2059| r2059_9(glval<int>) = VariableAddress[y] : +# 2059| m2059_10(int) = InitializeParameter[y] : &:r2059_9 +# 2059| r2059_11(glval<int>) = VariableAddress[z] : +# 2059| m2059_12(int) = InitializeParameter[z] : &:r2059_11 +# 2060| r2060_1(glval<bool>) = VariableAddress[a] : +# 2060| r2060_2(bool) = Load[a] : &:r2060_1, m2059_6 +# 2060| v2060_3(void) = ConditionalBranch : r2060_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2046| Block 1 -# 2046| m2046_4(int) = Phi : from 2:m2046_12, from 3:m2046_16 -# 2046| r2046_5(glval<int>) = VariableAddress[#temp2046:9] : -# 2046| r2046_6(int) = Load[#temp2046:9] : &:r2046_5, m2046_4 -# 2046| r2046_7(glval<int>) = VariableAddress[z] : -# 2046| m2046_8(int) = Store[z] : &:r2046_7, r2046_6 -# 2047| r2047_1(glval<bool>) = VariableAddress[a] : -# 2047| r2047_2(bool) = Load[a] : &:r2047_1, m2045_6 -# 2047| v2047_3(void) = ConditionalBranch : r2047_2 +# 2060| Block 1 +# 2060| m2060_4(int) = Phi : from 2:m2060_12, from 3:m2060_16 +# 2060| r2060_5(glval<int>) = VariableAddress[#temp2060:9] : +# 2060| r2060_6(int) = Load[#temp2060:9] : &:r2060_5, m2060_4 +# 2060| r2060_7(glval<int>) = VariableAddress[z] : +# 2060| m2060_8(int) = Store[z] : &:r2060_7, r2060_6 +# 2061| r2061_1(glval<bool>) = VariableAddress[a] : +# 2061| r2061_2(bool) = Load[a] : &:r2061_1, m2059_6 +# 2061| v2061_3(void) = ConditionalBranch : r2061_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 2046| Block 2 -# 2046| r2046_9(glval<int>) = VariableAddress[x] : -# 2046| r2046_10(int) = Load[x] : &:r2046_9, m2045_8 -# 2046| r2046_11(glval<int>) = VariableAddress[#temp2046:9] : -# 2046| m2046_12(int) = Store[#temp2046:9] : &:r2046_11, r2046_10 +# 2060| Block 2 +# 2060| r2060_9(glval<int>) = VariableAddress[x] : +# 2060| r2060_10(int) = Load[x] : &:r2060_9, m2059_8 +# 2060| r2060_11(glval<int>) = VariableAddress[#temp2060:9] : +# 2060| m2060_12(int) = Store[#temp2060:9] : &:r2060_11, r2060_10 #-----| Goto -> Block 1 -# 2046| Block 3 -# 2046| r2046_13(glval<int>) = VariableAddress[y] : -# 2046| r2046_14(int) = Load[y] : &:r2046_13, m2045_10 -# 2046| r2046_15(glval<int>) = VariableAddress[#temp2046:9] : -# 2046| m2046_16(int) = Store[#temp2046:9] : &:r2046_15, r2046_14 +# 2060| Block 3 +# 2060| r2060_13(glval<int>) = VariableAddress[y] : +# 2060| r2060_14(int) = Load[y] : &:r2060_13, m2059_10 +# 2060| r2060_15(glval<int>) = VariableAddress[#temp2060:9] : +# 2060| m2060_16(int) = Store[#temp2060:9] : &:r2060_15, r2060_14 #-----| Goto -> Block 1 -# 2047| Block 4 -# 2047| m2047_4(int) = Phi : from 5:m2047_12, from 6:m2047_15 -# 2047| r2047_5(glval<int>) = VariableAddress[#temp2047:9] : -# 2047| r2047_6(int) = Load[#temp2047:9] : &:r2047_5, m2047_4 -# 2047| r2047_7(glval<int>) = VariableAddress[z] : -# 2047| m2047_8(int) = Store[z] : &:r2047_7, r2047_6 -# 2048| r2048_1(glval<bool>) = VariableAddress[a] : -# 2048| r2048_2(bool) = Load[a] : &:r2048_1, m2045_6 -# 2048| v2048_3(void) = ConditionalBranch : r2048_2 +# 2061| Block 4 +# 2061| m2061_4(int) = Phi : from 5:m2061_12, from 6:m2061_15 +# 2061| r2061_5(glval<int>) = VariableAddress[#temp2061:9] : +# 2061| r2061_6(int) = Load[#temp2061:9] : &:r2061_5, m2061_4 +# 2061| r2061_7(glval<int>) = VariableAddress[z] : +# 2061| m2061_8(int) = Store[z] : &:r2061_7, r2061_6 +# 2062| r2062_1(glval<bool>) = VariableAddress[a] : +# 2062| r2062_2(bool) = Load[a] : &:r2062_1, m2059_6 +# 2062| v2062_3(void) = ConditionalBranch : r2062_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 2047| Block 5 -# 2047| r2047_9(glval<int>) = VariableAddress[x] : -# 2047| r2047_10(int) = Load[x] : &:r2047_9, m2045_8 -# 2047| r2047_11(glval<int>) = VariableAddress[#temp2047:9] : -# 2047| m2047_12(int) = Store[#temp2047:9] : &:r2047_11, r2047_10 +# 2061| Block 5 +# 2061| r2061_9(glval<int>) = VariableAddress[x] : +# 2061| r2061_10(int) = Load[x] : &:r2061_9, m2059_8 +# 2061| r2061_11(glval<int>) = VariableAddress[#temp2061:9] : +# 2061| m2061_12(int) = Store[#temp2061:9] : &:r2061_11, r2061_10 #-----| Goto -> Block 4 -# 2047| Block 6 -# 2047| r2047_13(int) = Constant[5] : -# 2047| r2047_14(glval<int>) = VariableAddress[#temp2047:9] : -# 2047| m2047_15(int) = Store[#temp2047:9] : &:r2047_14, r2047_13 +# 2061| Block 6 +# 2061| r2061_13(int) = Constant[5] : +# 2061| r2061_14(glval<int>) = VariableAddress[#temp2061:9] : +# 2061| m2061_15(int) = Store[#temp2061:9] : &:r2061_14, r2061_13 #-----| Goto -> Block 4 -# 2048| Block 7 -# 2048| m2048_4(int) = Phi : from 8:m2048_11, from 9:m2048_14 -# 2048| r2048_5(glval<int>) = VariableAddress[#temp2048:9] : -# 2048| r2048_6(int) = Load[#temp2048:9] : &:r2048_5, m2048_4 -# 2048| r2048_7(glval<int>) = VariableAddress[z] : -# 2048| m2048_8(int) = Store[z] : &:r2048_7, r2048_6 -# 2049| r2049_1(int) = Constant[7] : -# 2049| r2049_2(glval<bool>) = VariableAddress[a] : -# 2049| r2049_3(bool) = Load[a] : &:r2049_2, m2045_6 -# 2049| v2049_4(void) = ConditionalBranch : r2049_3 +# 2062| Block 7 +# 2062| m2062_4(int) = Phi : from 8:m2062_11, from 9:m2062_14 +# 2062| r2062_5(glval<int>) = VariableAddress[#temp2062:9] : +# 2062| r2062_6(int) = Load[#temp2062:9] : &:r2062_5, m2062_4 +# 2062| r2062_7(glval<int>) = VariableAddress[z] : +# 2062| m2062_8(int) = Store[z] : &:r2062_7, r2062_6 +# 2063| r2063_1(int) = Constant[7] : +# 2063| r2063_2(glval<bool>) = VariableAddress[a] : +# 2063| r2063_3(bool) = Load[a] : &:r2063_2, m2059_6 +# 2063| v2063_4(void) = ConditionalBranch : r2063_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 2048| Block 8 -# 2048| r2048_9(int) = Constant[3] : -# 2048| r2048_10(glval<int>) = VariableAddress[#temp2048:9] : -# 2048| m2048_11(int) = Store[#temp2048:9] : &:r2048_10, r2048_9 +# 2062| Block 8 +# 2062| r2062_9(int) = Constant[3] : +# 2062| r2062_10(glval<int>) = VariableAddress[#temp2062:9] : +# 2062| m2062_11(int) = Store[#temp2062:9] : &:r2062_10, r2062_9 #-----| Goto -> Block 7 -# 2048| Block 9 -# 2048| r2048_12(int) = Constant[5] : -# 2048| r2048_13(glval<int>) = VariableAddress[#temp2048:9] : -# 2048| m2048_14(int) = Store[#temp2048:9] : &:r2048_13, r2048_12 +# 2062| Block 9 +# 2062| r2062_12(int) = Constant[5] : +# 2062| r2062_13(glval<int>) = VariableAddress[#temp2062:9] : +# 2062| m2062_14(int) = Store[#temp2062:9] : &:r2062_13, r2062_12 #-----| Goto -> Block 7 -# 2049| Block 10 -# 2049| m2049_5(glval<int>) = Phi : from 11:m2049_12, from 12:m2049_15 -# 2049| r2049_6(glval<unknown>) = VariableAddress[#temp2049:6] : -# 2049| r2049_7(glval<int>) = Load[#temp2049:6] : &:r2049_6, m2049_5 -# 2049| m2049_8(int) = Store[?] : &:r2049_7, r2049_1 -# 2049| m2049_9(unknown) = Chi : total:m2045_4, partial:m2049_8 -# 2050| v2050_1(void) = NoOp : -# 2045| v2045_13(void) = ReturnVoid : -# 2045| v2045_14(void) = AliasedUse : ~m2049_9 -# 2045| v2045_15(void) = ExitFunction : - -# 2049| Block 11 -# 2049| r2049_10(glval<int>) = VariableAddress[x] : -# 2049| r2049_11(glval<unknown>) = VariableAddress[#temp2049:6] : -# 2049| m2049_12(glval<int>) = Store[#temp2049:6] : &:r2049_11, r2049_10 +# 2063| Block 10 +# 2063| m2063_5(glval<int>) = Phi : from 11:m2063_12, from 12:m2063_15 +# 2063| r2063_6(glval<unknown>) = VariableAddress[#temp2063:6] : +# 2063| r2063_7(glval<int>) = Load[#temp2063:6] : &:r2063_6, m2063_5 +# 2063| m2063_8(int) = Store[?] : &:r2063_7, r2063_1 +# 2063| m2063_9(unknown) = Chi : total:m2059_4, partial:m2063_8 +# 2064| v2064_1(void) = NoOp : +# 2059| v2059_13(void) = ReturnVoid : +# 2059| v2059_14(void) = AliasedUse : ~m2063_9 +# 2059| v2059_15(void) = ExitFunction : + +# 2063| Block 11 +# 2063| r2063_10(glval<int>) = VariableAddress[x] : +# 2063| r2063_11(glval<unknown>) = VariableAddress[#temp2063:6] : +# 2063| m2063_12(glval<int>) = Store[#temp2063:6] : &:r2063_11, r2063_10 #-----| Goto -> Block 10 -# 2049| Block 12 -# 2049| r2049_13(glval<int>) = VariableAddress[y] : -# 2049| r2049_14(glval<unknown>) = VariableAddress[#temp2049:6] : -# 2049| m2049_15(glval<int>) = Store[#temp2049:6] : &:r2049_14, r2049_13 +# 2063| Block 12 +# 2063| r2063_13(glval<int>) = VariableAddress[y] : +# 2063| r2063_14(glval<unknown>) = VariableAddress[#temp2063:6] : +# 2063| m2063_15(glval<int>) = Store[#temp2063:6] : &:r2063_14, r2063_13 #-----| Goto -> Block 10 -# 2055| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2055| Block 0 -# 2055| v2055_1(void) = EnterFunction : -# 2055| m2055_2(unknown) = AliasedDefinition : -# 2055| m2055_3(unknown) = InitializeNonLocal : -# 2055| m2055_4(unknown) = Chi : total:m2055_2, partial:m2055_3 -# 2055| r2055_5(glval<bool>) = VariableAddress[a] : -# 2055| m2055_6(bool) = InitializeParameter[a] : &:r2055_5 -# 2055| r2055_7(glval<TernaryPodObj>) = VariableAddress[x] : -# 2055| m2055_8(TernaryPodObj) = InitializeParameter[x] : &:r2055_7 -# 2055| r2055_9(glval<TernaryPodObj>) = VariableAddress[y] : -# 2055| m2055_10(TernaryPodObj) = InitializeParameter[y] : &:r2055_9 -# 2055| r2055_11(glval<TernaryPodObj>) = VariableAddress[z] : -# 2055| m2055_12(TernaryPodObj) = InitializeParameter[z] : &:r2055_11 -# 2056| r2056_1(glval<bool>) = VariableAddress[a] : -# 2056| r2056_2(bool) = Load[a] : &:r2056_1, m2055_6 -# 2056| v2056_3(void) = ConditionalBranch : r2056_2 +# 2069| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2069| Block 0 +# 2069| v2069_1(void) = EnterFunction : +# 2069| m2069_2(unknown) = AliasedDefinition : +# 2069| m2069_3(unknown) = InitializeNonLocal : +# 2069| m2069_4(unknown) = Chi : total:m2069_2, partial:m2069_3 +# 2069| r2069_5(glval<bool>) = VariableAddress[a] : +# 2069| m2069_6(bool) = InitializeParameter[a] : &:r2069_5 +# 2069| r2069_7(glval<TernaryPodObj>) = VariableAddress[x] : +# 2069| m2069_8(TernaryPodObj) = InitializeParameter[x] : &:r2069_7 +# 2069| r2069_9(glval<TernaryPodObj>) = VariableAddress[y] : +# 2069| m2069_10(TernaryPodObj) = InitializeParameter[y] : &:r2069_9 +# 2069| r2069_11(glval<TernaryPodObj>) = VariableAddress[z] : +# 2069| m2069_12(TernaryPodObj) = InitializeParameter[z] : &:r2069_11 +# 2070| r2070_1(glval<bool>) = VariableAddress[a] : +# 2070| r2070_2(bool) = Load[a] : &:r2070_1, m2069_6 +# 2070| v2070_3(void) = ConditionalBranch : r2070_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2056| Block 1 -# 2056| m2056_4(TernaryPodObj) = Phi : from 2:m2056_12, from 3:m2056_16 -# 2056| r2056_5(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : -# 2056| r2056_6(TernaryPodObj) = Load[#temp2056:9] : &:r2056_5, m2056_4 -# 2056| r2056_7(glval<TernaryPodObj>) = VariableAddress[z] : -# 2056| m2056_8(TernaryPodObj) = Store[z] : &:r2056_7, r2056_6 -# 2057| r2057_1(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| r2057_2(glval<bool>) = VariableAddress[a] : -# 2057| r2057_3(bool) = Load[a] : &:r2057_2, m2055_6 -# 2057| v2057_4(void) = ConditionalBranch : r2057_3 +# 2070| Block 1 +# 2070| m2070_4(TernaryPodObj) = Phi : from 2:m2070_12, from 3:m2070_16 +# 2070| r2070_5(glval<TernaryPodObj>) = VariableAddress[#temp2070:9] : +# 2070| r2070_6(TernaryPodObj) = Load[#temp2070:9] : &:r2070_5, m2070_4 +# 2070| r2070_7(glval<TernaryPodObj>) = VariableAddress[z] : +# 2070| m2070_8(TernaryPodObj) = Store[z] : &:r2070_7, r2070_6 +# 2071| r2071_1(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| r2071_2(glval<bool>) = VariableAddress[a] : +# 2071| r2071_3(bool) = Load[a] : &:r2071_2, m2069_6 +# 2071| v2071_4(void) = ConditionalBranch : r2071_3 #-----| False -> Block 6 #-----| True -> Block 5 -# 2056| Block 2 -# 2056| r2056_9(glval<TernaryPodObj>) = VariableAddress[x] : -# 2056| r2056_10(TernaryPodObj) = Load[x] : &:r2056_9, m2055_8 -# 2056| r2056_11(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : -# 2056| m2056_12(TernaryPodObj) = Store[#temp2056:9] : &:r2056_11, r2056_10 +# 2070| Block 2 +# 2070| r2070_9(glval<TernaryPodObj>) = VariableAddress[x] : +# 2070| r2070_10(TernaryPodObj) = Load[x] : &:r2070_9, m2069_8 +# 2070| r2070_11(glval<TernaryPodObj>) = VariableAddress[#temp2070:9] : +# 2070| m2070_12(TernaryPodObj) = Store[#temp2070:9] : &:r2070_11, r2070_10 #-----| Goto -> Block 1 -# 2056| Block 3 -# 2056| r2056_13(glval<TernaryPodObj>) = VariableAddress[y] : -# 2056| r2056_14(TernaryPodObj) = Load[y] : &:r2056_13, m2055_10 -# 2056| r2056_15(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : -# 2056| m2056_16(TernaryPodObj) = Store[#temp2056:9] : &:r2056_15, r2056_14 +# 2070| Block 3 +# 2070| r2070_13(glval<TernaryPodObj>) = VariableAddress[y] : +# 2070| r2070_14(TernaryPodObj) = Load[y] : &:r2070_13, m2069_10 +# 2070| r2070_15(glval<TernaryPodObj>) = VariableAddress[#temp2070:9] : +# 2070| m2070_16(TernaryPodObj) = Store[#temp2070:9] : &:r2070_15, r2070_14 #-----| Goto -> Block 1 -# 2057| Block 4 -# 2057| m2057_5(TernaryPodObj) = Phi : from 5:m2057_18, from 6:m2057_24 -# 2057| r2057_6(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| r2057_7(TernaryPodObj) = Load[#temp2057:9] : &:r2057_6, m2057_5 -# 2057| m2057_8(TernaryPodObj) = Store[#temp2057:9] : &:r2057_1, r2057_7 -# 2057| r2057_9(TernaryPodObj) = Load[#temp2057:9] : &:r2057_1, m2057_8 -# 2057| r2057_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2057| m2057_11(TernaryPodObj) = Store[z] : &:r2057_10, r2057_9 -# 2058| r2058_1(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| r2058_2(glval<bool>) = VariableAddress[a] : -# 2058| r2058_3(bool) = Load[a] : &:r2058_2, m2055_6 -# 2058| v2058_4(void) = ConditionalBranch : r2058_3 +# 2071| Block 4 +# 2071| m2071_5(TernaryPodObj) = Phi : from 5:m2071_18, from 6:m2071_24 +# 2071| r2071_6(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| r2071_7(TernaryPodObj) = Load[#temp2071:9] : &:r2071_6, m2071_5 +# 2071| m2071_8(TernaryPodObj) = Store[#temp2071:9] : &:r2071_1, r2071_7 +# 2071| r2071_9(TernaryPodObj) = Load[#temp2071:9] : &:r2071_1, m2071_8 +# 2071| r2071_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2071| m2071_11(TernaryPodObj) = Store[z] : &:r2071_10, r2071_9 +# 2072| r2072_1(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| r2072_2(glval<bool>) = VariableAddress[a] : +# 2072| r2072_3(bool) = Load[a] : &:r2072_2, m2069_6 +# 2072| v2072_4(void) = ConditionalBranch : r2072_3 #-----| False -> Block 9 #-----| True -> Block 8 -# 2057| Block 5 -# 2057| r2057_12(glval<TernaryPodObj>) = VariableAddress[#temp2057:13] : -# 2057| r2057_13(glval<TernaryPodObj>) = VariableAddress[x] : -# 2057| r2057_14(TernaryPodObj) = Load[x] : &:r2057_13, m2055_8 -# 2057| m2057_15(TernaryPodObj) = Store[#temp2057:13] : &:r2057_12, r2057_14 -# 2057| r2057_16(TernaryPodObj) = Load[#temp2057:13] : &:r2057_12, m2057_15 -# 2057| r2057_17(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| m2057_18(TernaryPodObj) = Store[#temp2057:9] : &:r2057_17, r2057_16 +# 2071| Block 5 +# 2071| r2071_12(glval<TernaryPodObj>) = VariableAddress[#temp2071:13] : +# 2071| r2071_13(glval<TernaryPodObj>) = VariableAddress[x] : +# 2071| r2071_14(TernaryPodObj) = Load[x] : &:r2071_13, m2069_8 +# 2071| m2071_15(TernaryPodObj) = Store[#temp2071:13] : &:r2071_12, r2071_14 +# 2071| r2071_16(TernaryPodObj) = Load[#temp2071:13] : &:r2071_12, m2071_15 +# 2071| r2071_17(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| m2071_18(TernaryPodObj) = Store[#temp2071:9] : &:r2071_17, r2071_16 #-----| Goto -> Block 4 -# 2057| Block 6 -# 2057| r2057_19(glval<TernaryPodObj>) = VariableAddress[#temp2057:17] : -# 2057| r2057_20(TernaryPodObj) = Constant[0] : -# 2057| m2057_21(TernaryPodObj) = Store[#temp2057:17] : &:r2057_19, r2057_20 -# 2057| r2057_22(TernaryPodObj) = Load[#temp2057:17] : &:r2057_19, m2057_21 -# 2057| r2057_23(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| m2057_24(TernaryPodObj) = Store[#temp2057:9] : &:r2057_23, r2057_22 +# 2071| Block 6 +# 2071| r2071_19(glval<TernaryPodObj>) = VariableAddress[#temp2071:17] : +# 2071| r2071_20(TernaryPodObj) = Constant[0] : +# 2071| m2071_21(TernaryPodObj) = Store[#temp2071:17] : &:r2071_19, r2071_20 +# 2071| r2071_22(TernaryPodObj) = Load[#temp2071:17] : &:r2071_19, m2071_21 +# 2071| r2071_23(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| m2071_24(TernaryPodObj) = Store[#temp2071:9] : &:r2071_23, r2071_22 #-----| Goto -> Block 4 -# 2058| Block 7 -# 2058| m2058_5(TernaryPodObj) = Phi : from 8:m2058_17, from 9:m2058_23 -# 2058| r2058_6(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| r2058_7(TernaryPodObj) = Load[#temp2058:9] : &:r2058_6, m2058_5 -# 2058| m2058_8(TernaryPodObj) = Store[#temp2058:9] : &:r2058_1, r2058_7 -# 2058| r2058_9(TernaryPodObj) = Load[#temp2058:9] : &:r2058_1, m2058_8 -# 2058| r2058_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2058| m2058_11(TernaryPodObj) = Store[z] : &:r2058_10, r2058_9 -# 2059| r2059_1(glval<TernaryPodObj>) = VariableAddress[#temp2059:23] : -# 2059| r2059_2(TernaryPodObj) = Constant[0] : -# 2059| m2059_3(TernaryPodObj) = Store[#temp2059:23] : &:r2059_1, r2059_2 -# 2059| r2059_4(TernaryPodObj) = Load[#temp2059:23] : &:r2059_1, m2059_3 -# 2059| r2059_5(glval<bool>) = VariableAddress[a] : -# 2059| r2059_6(bool) = Load[a] : &:r2059_5, m2055_6 -# 2059| v2059_7(void) = ConditionalBranch : r2059_6 +# 2072| Block 7 +# 2072| m2072_5(TernaryPodObj) = Phi : from 8:m2072_17, from 9:m2072_23 +# 2072| r2072_6(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| r2072_7(TernaryPodObj) = Load[#temp2072:9] : &:r2072_6, m2072_5 +# 2072| m2072_8(TernaryPodObj) = Store[#temp2072:9] : &:r2072_1, r2072_7 +# 2072| r2072_9(TernaryPodObj) = Load[#temp2072:9] : &:r2072_1, m2072_8 +# 2072| r2072_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2072| m2072_11(TernaryPodObj) = Store[z] : &:r2072_10, r2072_9 +# 2073| r2073_1(glval<TernaryPodObj>) = VariableAddress[#temp2073:23] : +# 2073| r2073_2(TernaryPodObj) = Constant[0] : +# 2073| m2073_3(TernaryPodObj) = Store[#temp2073:23] : &:r2073_1, r2073_2 +# 2073| r2073_4(TernaryPodObj) = Load[#temp2073:23] : &:r2073_1, m2073_3 +# 2073| r2073_5(glval<bool>) = VariableAddress[a] : +# 2073| r2073_6(bool) = Load[a] : &:r2073_5, m2069_6 +# 2073| v2073_7(void) = ConditionalBranch : r2073_6 #-----| False -> Block 12 #-----| True -> Block 11 -# 2058| Block 8 -# 2058| r2058_12(glval<TernaryPodObj>) = VariableAddress[#temp2058:13] : -# 2058| r2058_13(TernaryPodObj) = Constant[0] : -# 2058| m2058_14(TernaryPodObj) = Store[#temp2058:13] : &:r2058_12, r2058_13 -# 2058| r2058_15(TernaryPodObj) = Load[#temp2058:13] : &:r2058_12, m2058_14 -# 2058| r2058_16(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| m2058_17(TernaryPodObj) = Store[#temp2058:9] : &:r2058_16, r2058_15 +# 2072| Block 8 +# 2072| r2072_12(glval<TernaryPodObj>) = VariableAddress[#temp2072:13] : +# 2072| r2072_13(TernaryPodObj) = Constant[0] : +# 2072| m2072_14(TernaryPodObj) = Store[#temp2072:13] : &:r2072_12, r2072_13 +# 2072| r2072_15(TernaryPodObj) = Load[#temp2072:13] : &:r2072_12, m2072_14 +# 2072| r2072_16(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| m2072_17(TernaryPodObj) = Store[#temp2072:9] : &:r2072_16, r2072_15 #-----| Goto -> Block 7 -# 2058| Block 9 -# 2058| r2058_18(glval<TernaryPodObj>) = VariableAddress[#temp2058:31] : -# 2058| r2058_19(TernaryPodObj) = Constant[0] : -# 2058| m2058_20(TernaryPodObj) = Store[#temp2058:31] : &:r2058_18, r2058_19 -# 2058| r2058_21(TernaryPodObj) = Load[#temp2058:31] : &:r2058_18, m2058_20 -# 2058| r2058_22(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| m2058_23(TernaryPodObj) = Store[#temp2058:9] : &:r2058_22, r2058_21 +# 2072| Block 9 +# 2072| r2072_18(glval<TernaryPodObj>) = VariableAddress[#temp2072:31] : +# 2072| r2072_19(TernaryPodObj) = Constant[0] : +# 2072| m2072_20(TernaryPodObj) = Store[#temp2072:31] : &:r2072_18, r2072_19 +# 2072| r2072_21(TernaryPodObj) = Load[#temp2072:31] : &:r2072_18, m2072_20 +# 2072| r2072_22(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| m2072_23(TernaryPodObj) = Store[#temp2072:9] : &:r2072_22, r2072_21 #-----| Goto -> Block 7 -# 2059| Block 10 -# 2059| m2059_8(TernaryPodObj) = Phi : from 11:m2059_18, from 12:m2059_22 -# 2059| r2059_9(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : -# 2059| r2059_10(TernaryPodObj) = Load[#temp2059:10] : &:r2059_9, m2059_8 -# 2059| r2059_11(glval<TernaryPodObj>) = VariableAddress[z] : -# 2059| m2059_12(TernaryPodObj) = Store[z] : &:r2059_11, r2059_10 -# 2059| r2059_13(glval<TernaryPodObj>) = CopyValue : r2059_11 -# 2059| m2059_14(TernaryPodObj) = Store[?] : &:r2059_13, r2059_4 -# 2060| v2060_1(void) = NoOp : -# 2055| v2055_13(void) = ReturnVoid : -# 2055| v2055_14(void) = AliasedUse : m2055_3 -# 2055| v2055_15(void) = ExitFunction : - -# 2059| Block 11 -# 2059| r2059_15(glval<TernaryPodObj>) = VariableAddress[x] : -# 2059| r2059_16(TernaryPodObj) = Load[x] : &:r2059_15, m2055_8 -# 2059| r2059_17(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : -# 2059| m2059_18(TernaryPodObj) = Store[#temp2059:10] : &:r2059_17, r2059_16 +# 2073| Block 10 +# 2073| m2073_8(TernaryPodObj) = Phi : from 11:m2073_18, from 12:m2073_22 +# 2073| r2073_9(glval<TernaryPodObj>) = VariableAddress[#temp2073:10] : +# 2073| r2073_10(TernaryPodObj) = Load[#temp2073:10] : &:r2073_9, m2073_8 +# 2073| r2073_11(glval<TernaryPodObj>) = VariableAddress[z] : +# 2073| m2073_12(TernaryPodObj) = Store[z] : &:r2073_11, r2073_10 +# 2073| r2073_13(glval<TernaryPodObj>) = CopyValue : r2073_11 +# 2073| m2073_14(TernaryPodObj) = Store[?] : &:r2073_13, r2073_4 +# 2074| v2074_1(void) = NoOp : +# 2069| v2069_13(void) = ReturnVoid : +# 2069| v2069_14(void) = AliasedUse : m2069_3 +# 2069| v2069_15(void) = ExitFunction : + +# 2073| Block 11 +# 2073| r2073_15(glval<TernaryPodObj>) = VariableAddress[x] : +# 2073| r2073_16(TernaryPodObj) = Load[x] : &:r2073_15, m2069_8 +# 2073| r2073_17(glval<TernaryPodObj>) = VariableAddress[#temp2073:10] : +# 2073| m2073_18(TernaryPodObj) = Store[#temp2073:10] : &:r2073_17, r2073_16 #-----| Goto -> Block 10 -# 2059| Block 12 -# 2059| r2059_19(glval<TernaryPodObj>) = VariableAddress[y] : -# 2059| r2059_20(TernaryPodObj) = Load[y] : &:r2059_19, m2055_10 -# 2059| r2059_21(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : -# 2059| m2059_22(TernaryPodObj) = Store[#temp2059:10] : &:r2059_21, r2059_20 +# 2073| Block 12 +# 2073| r2073_19(glval<TernaryPodObj>) = VariableAddress[y] : +# 2073| r2073_20(TernaryPodObj) = Load[y] : &:r2073_19, m2069_10 +# 2073| r2073_21(glval<TernaryPodObj>) = VariableAddress[#temp2073:10] : +# 2073| m2073_22(TernaryPodObj) = Store[#temp2073:10] : &:r2073_21, r2073_20 #-----| Goto -> Block 10 -# 2062| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2062| Block 0 -# 2062| v2062_1(void) = EnterFunction : -# 2062| m2062_2(unknown) = AliasedDefinition : -# 2062| m2062_3(unknown) = InitializeNonLocal : -# 2062| m2062_4(unknown) = Chi : total:m2062_2, partial:m2062_3 -# 2062| r2062_5(glval<unknown>) = VariableAddress[#this] : -# 2062| m2062_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_5 -# 2062| r2062_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_5, m2062_6 -# 2062| m2062_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_7 +# 2076| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2076| Block 0 +# 2076| v2076_1(void) = EnterFunction : +# 2076| m2076_2(unknown) = AliasedDefinition : +# 2076| m2076_3(unknown) = InitializeNonLocal : +# 2076| m2076_4(unknown) = Chi : total:m2076_2, partial:m2076_3 +# 2076| r2076_5(glval<unknown>) = VariableAddress[#this] : +# 2076| m2076_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2076_5 +# 2076| r2076_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2076_5, m2076_6 +# 2076| m2076_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_7 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 #-----| r0_5(glval<TernaryNonPodObj &>) = VariableAddress[#return] : #-----| r0_6(glval<unknown>) = VariableAddress[#this] : -#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2062_6 +#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2076_6 #-----| r0_8(glval<TernaryNonPodObj>) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| m0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2062| v2062_9(void) = ReturnIndirection[#this] : &:r2062_7, m2062_8 +# 2076| v2076_9(void) = ReturnIndirection[#this] : &:r2076_7, m2076_8 #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2062| r2062_10(glval<TernaryNonPodObj &>) = VariableAddress[#return] : -# 2062| v2062_11(void) = ReturnValue : &:r2062_10, m0_10 -# 2062| v2062_12(void) = AliasedUse : m2062_3 -# 2062| v2062_13(void) = ExitFunction : - -# 2062| void TernaryNonPodObj::TernaryNonPodObj() -# 2062| Block 0 -# 2062| v2062_1(void) = EnterFunction : -# 2062| m2062_2(unknown) = AliasedDefinition : -# 2062| m2062_3(unknown) = InitializeNonLocal : -# 2062| m2062_4(unknown) = Chi : total:m2062_2, partial:m2062_3 -# 2062| r2062_5(glval<unknown>) = VariableAddress[#this] : -# 2062| m2062_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_5 -# 2062| r2062_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_5, m2062_6 -# 2062| m2062_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_7 -# 2062| v2062_9(void) = NoOp : -# 2062| v2062_10(void) = ReturnIndirection[#this] : &:r2062_7, m2062_8 -# 2062| v2062_11(void) = ReturnVoid : -# 2062| v2062_12(void) = AliasedUse : m2062_3 -# 2062| v2062_13(void) = ExitFunction : - -# 2062| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2062| Block 0 -# 2062| v2062_1(void) = EnterFunction : -# 2062| m2062_2(unknown) = AliasedDefinition : -# 2062| m2062_3(unknown) = InitializeNonLocal : -# 2062| m2062_4(unknown) = Chi : total:m2062_2, partial:m2062_3 -# 2062| r2062_5(glval<unknown>) = VariableAddress[#this] : -# 2062| m2062_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_5 -# 2062| r2062_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_5, m2062_6 -# 2062| m2062_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_7 +# 2076| r2076_10(glval<TernaryNonPodObj &>) = VariableAddress[#return] : +# 2076| v2076_11(void) = ReturnValue : &:r2076_10, m0_10 +# 2076| v2076_12(void) = AliasedUse : m2076_3 +# 2076| v2076_13(void) = ExitFunction : + +# 2076| void TernaryNonPodObj::TernaryNonPodObj() +# 2076| Block 0 +# 2076| v2076_1(void) = EnterFunction : +# 2076| m2076_2(unknown) = AliasedDefinition : +# 2076| m2076_3(unknown) = InitializeNonLocal : +# 2076| m2076_4(unknown) = Chi : total:m2076_2, partial:m2076_3 +# 2076| r2076_5(glval<unknown>) = VariableAddress[#this] : +# 2076| m2076_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2076_5 +# 2076| r2076_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2076_5, m2076_6 +# 2076| m2076_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_7 +# 2076| v2076_9(void) = NoOp : +# 2076| v2076_10(void) = ReturnIndirection[#this] : &:r2076_7, m2076_8 +# 2076| v2076_11(void) = ReturnVoid : +# 2076| v2076_12(void) = AliasedUse : m2076_3 +# 2076| v2076_13(void) = ExitFunction : + +# 2076| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2076| Block 0 +# 2076| v2076_1(void) = EnterFunction : +# 2076| m2076_2(unknown) = AliasedDefinition : +# 2076| m2076_3(unknown) = InitializeNonLocal : +# 2076| m2076_4(unknown) = Chi : total:m2076_2, partial:m2076_3 +# 2076| r2076_5(glval<unknown>) = VariableAddress[#this] : +# 2076| m2076_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2076_5 +# 2076| r2076_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2076_5, m2076_6 +# 2076| m2076_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_7 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2062| v2062_9(void) = NoOp : -# 2062| v2062_10(void) = ReturnIndirection[#this] : &:r2062_7, m2062_8 +# 2076| v2076_9(void) = NoOp : +# 2076| v2076_10(void) = ReturnIndirection[#this] : &:r2076_7, m2076_8 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2062| v2062_11(void) = ReturnVoid : -# 2062| v2062_12(void) = AliasedUse : m2062_3 -# 2062| v2062_13(void) = ExitFunction : - -# 2063| void TernaryNonPodObj::~TernaryNonPodObj() -# 2063| Block 0 -# 2063| v2063_1(void) = EnterFunction : -# 2063| m2063_2(unknown) = AliasedDefinition : -# 2063| m2063_3(unknown) = InitializeNonLocal : -# 2063| m2063_4(unknown) = Chi : total:m2063_2, partial:m2063_3 -# 2063| r2063_5(glval<unknown>) = VariableAddress[#this] : -# 2063| m2063_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2063_5 -# 2063| r2063_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2063_5, m2063_6 -# 2063| m2063_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2063_7 -# 2063| v2063_9(void) = NoOp : -# 2063| v2063_10(void) = ReturnIndirection[#this] : &:r2063_7, m2063_8 -# 2063| v2063_11(void) = ReturnVoid : -# 2063| v2063_12(void) = AliasedUse : m2063_3 -# 2063| v2063_13(void) = ExitFunction : - -# 2066| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2066| Block 0 -# 2066| v2066_1(void) = EnterFunction : -# 2066| m2066_2(unknown) = AliasedDefinition : -# 2066| m2066_3(unknown) = InitializeNonLocal : -# 2066| m2066_4(unknown) = Chi : total:m2066_2, partial:m2066_3 -# 2066| r2066_5(glval<bool>) = VariableAddress[a] : -# 2066| m2066_6(bool) = InitializeParameter[a] : &:r2066_5 -# 2066| r2066_7(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2066| m2066_8(TernaryNonPodObj) = InitializeParameter[x] : &:r2066_7 -# 2066| r2066_9(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2066| m2066_10(TernaryNonPodObj) = InitializeParameter[y] : &:r2066_9 -# 2066| r2066_11(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2066| m2066_12(TernaryNonPodObj) = InitializeParameter[z] : &:r2066_11 -# 2067| r2067_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2067| r2067_2(glval<unknown>) = FunctionAddress[operator=] : -# 2067| r2067_3(glval<bool>) = VariableAddress[a] : -# 2067| r2067_4(bool) = Load[a] : &:r2067_3, m2066_6 -# 2067| v2067_5(void) = ConditionalBranch : r2067_4 +# 2076| v2076_11(void) = ReturnVoid : +# 2076| v2076_12(void) = AliasedUse : m2076_3 +# 2076| v2076_13(void) = ExitFunction : + +# 2077| void TernaryNonPodObj::~TernaryNonPodObj() +# 2077| Block 0 +# 2077| v2077_1(void) = EnterFunction : +# 2077| m2077_2(unknown) = AliasedDefinition : +# 2077| m2077_3(unknown) = InitializeNonLocal : +# 2077| m2077_4(unknown) = Chi : total:m2077_2, partial:m2077_3 +# 2077| r2077_5(glval<unknown>) = VariableAddress[#this] : +# 2077| m2077_6(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2077_5 +# 2077| r2077_7(glval<TernaryNonPodObj>) = Load[#this] : &:r2077_5, m2077_6 +# 2077| m2077_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2077_7 +# 2077| v2077_9(void) = NoOp : +# 2077| v2077_10(void) = ReturnIndirection[#this] : &:r2077_7, m2077_8 +# 2077| v2077_11(void) = ReturnVoid : +# 2077| v2077_12(void) = AliasedUse : m2077_3 +# 2077| v2077_13(void) = ExitFunction : + +# 2080| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2080| Block 0 +# 2080| v2080_1(void) = EnterFunction : +# 2080| m2080_2(unknown) = AliasedDefinition : +# 2080| m2080_3(unknown) = InitializeNonLocal : +# 2080| m2080_4(unknown) = Chi : total:m2080_2, partial:m2080_3 +# 2080| r2080_5(glval<bool>) = VariableAddress[a] : +# 2080| m2080_6(bool) = InitializeParameter[a] : &:r2080_5 +# 2080| r2080_7(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2080| m2080_8(TernaryNonPodObj) = InitializeParameter[x] : &:r2080_7 +# 2080| r2080_9(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2080| m2080_10(TernaryNonPodObj) = InitializeParameter[y] : &:r2080_9 +# 2080| r2080_11(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2080| m2080_12(TernaryNonPodObj) = InitializeParameter[z] : &:r2080_11 +# 2081| r2081_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2081| r2081_2(glval<unknown>) = FunctionAddress[operator=] : +# 2081| r2081_3(glval<bool>) = VariableAddress[a] : +# 2081| r2081_4(bool) = Load[a] : &:r2081_3, m2080_6 +# 2081| v2081_5(void) = ConditionalBranch : r2081_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2067| Block 1 -# 2067| m2067_6(glval<TernaryNonPodObj>) = Phi : from 2:m2067_21, from 3:m2067_24 -# 2067| r2067_7(glval<unknown>) = VariableAddress[#temp2067:9] : -# 2067| r2067_8(glval<TernaryNonPodObj>) = Load[#temp2067:9] : &:r2067_7, m2067_6 -# 2067| r2067_9(glval<TernaryNonPodObj>) = Convert : r2067_8 -# 2067| r2067_10(TernaryNonPodObj &) = CopyValue : r2067_9 -# 2067| r2067_11(TernaryNonPodObj &) = Call[operator=] : func:r2067_2, this:r2067_1, 0:r2067_10 -# 2067| m2067_12(unknown) = ^CallSideEffect : ~m2066_4 -# 2067| m2067_13(unknown) = Chi : total:m2066_4, partial:m2067_12 -# 2067| v2067_14(void) = ^IndirectReadSideEffect[-1] : &:r2067_1, m2066_12 -# 2067| v2067_15(void) = ^BufferReadSideEffect[0] : &:r2067_10, ~m2067_13 -# 2067| m2067_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2067_1 -# 2067| m2067_17(TernaryNonPodObj) = Chi : total:m2066_12, partial:m2067_16 -# 2067| r2067_18(glval<TernaryNonPodObj>) = CopyValue : r2067_11 -# 2068| r2068_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2068| r2068_2(glval<unknown>) = FunctionAddress[operator=] : -# 2068| r2068_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| r2068_4(glval<bool>) = VariableAddress[a] : -# 2068| r2068_5(bool) = Load[a] : &:r2068_4, m2066_6 -# 2068| v2068_6(void) = ConditionalBranch : r2068_5 +# 2081| Block 1 +# 2081| m2081_6(glval<TernaryNonPodObj>) = Phi : from 2:m2081_21, from 3:m2081_24 +# 2081| r2081_7(glval<unknown>) = VariableAddress[#temp2081:9] : +# 2081| r2081_8(glval<TernaryNonPodObj>) = Load[#temp2081:9] : &:r2081_7, m2081_6 +# 2081| r2081_9(glval<TernaryNonPodObj>) = Convert : r2081_8 +# 2081| r2081_10(TernaryNonPodObj &) = CopyValue : r2081_9 +# 2081| r2081_11(TernaryNonPodObj &) = Call[operator=] : func:r2081_2, this:r2081_1, 0:r2081_10 +# 2081| m2081_12(unknown) = ^CallSideEffect : ~m2080_4 +# 2081| m2081_13(unknown) = Chi : total:m2080_4, partial:m2081_12 +# 2081| v2081_14(void) = ^IndirectReadSideEffect[-1] : &:r2081_1, m2080_12 +# 2081| v2081_15(void) = ^BufferReadSideEffect[0] : &:r2081_10, ~m2081_13 +# 2081| m2081_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2081_1 +# 2081| m2081_17(TernaryNonPodObj) = Chi : total:m2080_12, partial:m2081_16 +# 2081| r2081_18(glval<TernaryNonPodObj>) = CopyValue : r2081_11 +# 2082| r2082_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2082| r2082_2(glval<unknown>) = FunctionAddress[operator=] : +# 2082| r2082_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| r2082_4(glval<bool>) = VariableAddress[a] : +# 2082| r2082_5(bool) = Load[a] : &:r2082_4, m2080_6 +# 2082| v2082_6(void) = ConditionalBranch : r2082_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2067| Block 2 -# 2067| r2067_19(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2067| r2067_20(glval<unknown>) = VariableAddress[#temp2067:9] : -# 2067| m2067_21(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_20, r2067_19 +# 2081| Block 2 +# 2081| r2081_19(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2081| r2081_20(glval<unknown>) = VariableAddress[#temp2081:9] : +# 2081| m2081_21(glval<TernaryNonPodObj>) = Store[#temp2081:9] : &:r2081_20, r2081_19 #-----| Goto -> Block 1 -# 2067| Block 3 -# 2067| r2067_22(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2067| r2067_23(glval<unknown>) = VariableAddress[#temp2067:9] : -# 2067| m2067_24(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_23, r2067_22 +# 2081| Block 3 +# 2081| r2081_22(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2081| r2081_23(glval<unknown>) = VariableAddress[#temp2081:9] : +# 2081| m2081_24(glval<TernaryNonPodObj>) = Store[#temp2081:9] : &:r2081_23, r2081_22 #-----| Goto -> Block 1 -# 2068| Block 4 -# 2068| m2068_7(unknown) = Phi : from 5:~m2068_30, from 6:~m2068_42 -# 2068| m2068_8(TernaryNonPodObj) = Phi : from 5:m2068_36, from 6:m2068_47 -# 2068| r2068_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| r2068_10(TernaryNonPodObj) = Load[#temp2068:9] : &:r2068_9, m2068_8 -# 2068| m2068_11(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_3, r2068_10 -# 2068| r2068_12(glval<TernaryNonPodObj>) = Convert : r2068_3 -# 2068| r2068_13(TernaryNonPodObj &) = CopyValue : r2068_12 -# 2068| r2068_14(TernaryNonPodObj &) = Call[operator=] : func:r2068_2, this:r2068_1, 0:r2068_13 -# 2068| m2068_15(unknown) = ^CallSideEffect : ~m2068_7 -# 2068| m2068_16(unknown) = Chi : total:m2068_7, partial:m2068_15 -# 2068| v2068_17(void) = ^IndirectReadSideEffect[-1] : &:r2068_1, m2067_17 -# 2068| v2068_18(void) = ^BufferReadSideEffect[0] : &:r2068_13, ~m2068_11 -# 2068| m2068_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_1 -# 2068| m2068_20(TernaryNonPodObj) = Chi : total:m2067_17, partial:m2068_19 -# 2068| r2068_21(glval<TernaryNonPodObj>) = CopyValue : r2068_14 -# 2069| r2069_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2069| r2069_2(glval<unknown>) = FunctionAddress[operator=] : -# 2069| r2069_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| r2069_4(glval<bool>) = VariableAddress[a] : -# 2069| r2069_5(bool) = Load[a] : &:r2069_4, m2066_6 -# 2069| v2069_6(void) = ConditionalBranch : r2069_5 +# 2082| Block 4 +# 2082| m2082_7(unknown) = Phi : from 5:~m2082_30, from 6:~m2082_42 +# 2082| m2082_8(TernaryNonPodObj) = Phi : from 5:m2082_36, from 6:m2082_47 +# 2082| r2082_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| r2082_10(TernaryNonPodObj) = Load[#temp2082:9] : &:r2082_9, m2082_8 +# 2082| m2082_11(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_3, r2082_10 +# 2082| r2082_12(glval<TernaryNonPodObj>) = Convert : r2082_3 +# 2082| r2082_13(TernaryNonPodObj &) = CopyValue : r2082_12 +# 2082| r2082_14(TernaryNonPodObj &) = Call[operator=] : func:r2082_2, this:r2082_1, 0:r2082_13 +# 2082| m2082_15(unknown) = ^CallSideEffect : ~m2082_7 +# 2082| m2082_16(unknown) = Chi : total:m2082_7, partial:m2082_15 +# 2082| v2082_17(void) = ^IndirectReadSideEffect[-1] : &:r2082_1, m2081_17 +# 2082| v2082_18(void) = ^BufferReadSideEffect[0] : &:r2082_13, ~m2082_11 +# 2082| m2082_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_1 +# 2082| m2082_20(TernaryNonPodObj) = Chi : total:m2081_17, partial:m2082_19 +# 2082| r2082_21(glval<TernaryNonPodObj>) = CopyValue : r2082_14 +# 2083| r2083_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2083| r2083_2(glval<unknown>) = FunctionAddress[operator=] : +# 2083| r2083_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| r2083_4(glval<bool>) = VariableAddress[a] : +# 2083| r2083_5(bool) = Load[a] : &:r2083_4, m2080_6 +# 2083| v2083_6(void) = ConditionalBranch : r2083_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2068| Block 5 -# 2068| r2068_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:13] : -# 2068| m2068_23(TernaryNonPodObj) = Uninitialized[#temp2068:13] : &:r2068_22 -# 2068| r2068_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2068| r2068_25(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2068| r2068_26(glval<TernaryNonPodObj>) = Convert : r2068_25 -# 2068| r2068_27(TernaryNonPodObj &) = CopyValue : r2068_26 -# 2068| v2068_28(void) = Call[TernaryNonPodObj] : func:r2068_24, this:r2068_22, 0:r2068_27 -# 2068| m2068_29(unknown) = ^CallSideEffect : ~m2067_13 -# 2068| m2068_30(unknown) = Chi : total:m2067_13, partial:m2068_29 -# 2068| v2068_31(void) = ^BufferReadSideEffect[0] : &:r2068_27, ~m2066_8 -# 2068| m2068_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_22 -# 2068| m2068_33(TernaryNonPodObj) = Chi : total:m2068_23, partial:m2068_32 -# 2068| r2068_34(TernaryNonPodObj) = Load[#temp2068:13] : &:r2068_22, m2068_33 -# 2068| r2068_35(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| m2068_36(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_35, r2068_34 +# 2082| Block 5 +# 2082| r2082_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:13] : +# 2082| m2082_23(TernaryNonPodObj) = Uninitialized[#temp2082:13] : &:r2082_22 +# 2082| r2082_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2082| r2082_25(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2082| r2082_26(glval<TernaryNonPodObj>) = Convert : r2082_25 +# 2082| r2082_27(TernaryNonPodObj &) = CopyValue : r2082_26 +# 2082| v2082_28(void) = Call[TernaryNonPodObj] : func:r2082_24, this:r2082_22, 0:r2082_27 +# 2082| m2082_29(unknown) = ^CallSideEffect : ~m2081_13 +# 2082| m2082_30(unknown) = Chi : total:m2081_13, partial:m2082_29 +# 2082| v2082_31(void) = ^BufferReadSideEffect[0] : &:r2082_27, ~m2080_8 +# 2082| m2082_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_22 +# 2082| m2082_33(TernaryNonPodObj) = Chi : total:m2082_23, partial:m2082_32 +# 2082| r2082_34(TernaryNonPodObj) = Load[#temp2082:13] : &:r2082_22, m2082_33 +# 2082| r2082_35(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| m2082_36(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_35, r2082_34 #-----| Goto -> Block 4 -# 2068| Block 6 -# 2068| r2068_37(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:17] : -# 2068| m2068_38(TernaryNonPodObj) = Uninitialized[#temp2068:17] : &:r2068_37 -# 2068| r2068_39(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2068| v2068_40(void) = Call[TernaryNonPodObj] : func:r2068_39, this:r2068_37 -# 2068| m2068_41(unknown) = ^CallSideEffect : ~m2067_13 -# 2068| m2068_42(unknown) = Chi : total:m2067_13, partial:m2068_41 -# 2068| m2068_43(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_37 -# 2068| m2068_44(TernaryNonPodObj) = Chi : total:m2068_38, partial:m2068_43 -# 2068| r2068_45(TernaryNonPodObj) = Load[#temp2068:17] : &:r2068_37, m2068_44 -# 2068| r2068_46(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| m2068_47(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_46, r2068_45 +# 2082| Block 6 +# 2082| r2082_37(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:17] : +# 2082| m2082_38(TernaryNonPodObj) = Uninitialized[#temp2082:17] : &:r2082_37 +# 2082| r2082_39(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2082| v2082_40(void) = Call[TernaryNonPodObj] : func:r2082_39, this:r2082_37 +# 2082| m2082_41(unknown) = ^CallSideEffect : ~m2081_13 +# 2082| m2082_42(unknown) = Chi : total:m2081_13, partial:m2082_41 +# 2082| m2082_43(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_37 +# 2082| m2082_44(TernaryNonPodObj) = Chi : total:m2082_38, partial:m2082_43 +# 2082| r2082_45(TernaryNonPodObj) = Load[#temp2082:17] : &:r2082_37, m2082_44 +# 2082| r2082_46(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| m2082_47(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_46, r2082_45 #-----| Goto -> Block 4 -# 2069| Block 7 -# 2069| m2069_7(unknown) = Phi : from 8:~m2069_27, from 9:~m2069_38 -# 2069| m2069_8(TernaryNonPodObj) = Phi : from 8:m2069_32, from 9:m2069_43 -# 2069| r2069_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| r2069_10(TernaryNonPodObj) = Load[#temp2069:9] : &:r2069_9, m2069_8 -# 2069| m2069_11(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_3, r2069_10 -# 2069| r2069_12(glval<TernaryNonPodObj>) = Convert : r2069_3 -# 2069| r2069_13(TernaryNonPodObj &) = CopyValue : r2069_12 -# 2069| r2069_14(TernaryNonPodObj &) = Call[operator=] : func:r2069_2, this:r2069_1, 0:r2069_13 -# 2069| m2069_15(unknown) = ^CallSideEffect : ~m2069_7 -# 2069| m2069_16(unknown) = Chi : total:m2069_7, partial:m2069_15 -# 2069| v2069_17(void) = ^IndirectReadSideEffect[-1] : &:r2069_1, m2068_20 -# 2069| v2069_18(void) = ^BufferReadSideEffect[0] : &:r2069_13, ~m2069_11 -# 2069| m2069_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_1 -# 2069| m2069_20(TernaryNonPodObj) = Chi : total:m2068_20, partial:m2069_19 -# 2069| r2069_21(glval<TernaryNonPodObj>) = CopyValue : r2069_14 -# 2070| r2070_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2070| r2070_2(glval<unknown>) = FunctionAddress[operator=] : -# 2070| r2070_3(glval<bool>) = VariableAddress[a] : -# 2070| r2070_4(bool) = Load[a] : &:r2070_3, m2066_6 -# 2070| v2070_5(void) = ConditionalBranch : r2070_4 +# 2083| Block 7 +# 2083| m2083_7(unknown) = Phi : from 8:~m2083_27, from 9:~m2083_38 +# 2083| m2083_8(TernaryNonPodObj) = Phi : from 8:m2083_32, from 9:m2083_43 +# 2083| r2083_9(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| r2083_10(TernaryNonPodObj) = Load[#temp2083:9] : &:r2083_9, m2083_8 +# 2083| m2083_11(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_3, r2083_10 +# 2083| r2083_12(glval<TernaryNonPodObj>) = Convert : r2083_3 +# 2083| r2083_13(TernaryNonPodObj &) = CopyValue : r2083_12 +# 2083| r2083_14(TernaryNonPodObj &) = Call[operator=] : func:r2083_2, this:r2083_1, 0:r2083_13 +# 2083| m2083_15(unknown) = ^CallSideEffect : ~m2083_7 +# 2083| m2083_16(unknown) = Chi : total:m2083_7, partial:m2083_15 +# 2083| v2083_17(void) = ^IndirectReadSideEffect[-1] : &:r2083_1, m2082_20 +# 2083| v2083_18(void) = ^BufferReadSideEffect[0] : &:r2083_13, ~m2083_11 +# 2083| m2083_19(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 +# 2083| m2083_20(TernaryNonPodObj) = Chi : total:m2082_20, partial:m2083_19 +# 2083| r2083_21(glval<TernaryNonPodObj>) = CopyValue : r2083_14 +# 2084| r2084_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2084| r2084_2(glval<unknown>) = FunctionAddress[operator=] : +# 2084| r2084_3(glval<bool>) = VariableAddress[a] : +# 2084| r2084_4(bool) = Load[a] : &:r2084_3, m2080_6 +# 2084| v2084_5(void) = ConditionalBranch : r2084_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2069| Block 8 -# 2069| r2069_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:13] : -# 2069| m2069_23(TernaryNonPodObj) = Uninitialized[#temp2069:13] : &:r2069_22 -# 2069| r2069_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2069| v2069_25(void) = Call[TernaryNonPodObj] : func:r2069_24, this:r2069_22 -# 2069| m2069_26(unknown) = ^CallSideEffect : ~m2068_16 -# 2069| m2069_27(unknown) = Chi : total:m2068_16, partial:m2069_26 -# 2069| m2069_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_22 -# 2069| m2069_29(TernaryNonPodObj) = Chi : total:m2069_23, partial:m2069_28 -# 2069| r2069_30(TernaryNonPodObj) = Load[#temp2069:13] : &:r2069_22, m2069_29 -# 2069| r2069_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| m2069_32(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_31, r2069_30 +# 2083| Block 8 +# 2083| r2083_22(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:13] : +# 2083| m2083_23(TernaryNonPodObj) = Uninitialized[#temp2083:13] : &:r2083_22 +# 2083| r2083_24(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2083| v2083_25(void) = Call[TernaryNonPodObj] : func:r2083_24, this:r2083_22 +# 2083| m2083_26(unknown) = ^CallSideEffect : ~m2082_16 +# 2083| m2083_27(unknown) = Chi : total:m2082_16, partial:m2083_26 +# 2083| m2083_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_22 +# 2083| m2083_29(TernaryNonPodObj) = Chi : total:m2083_23, partial:m2083_28 +# 2083| r2083_30(TernaryNonPodObj) = Load[#temp2083:13] : &:r2083_22, m2083_29 +# 2083| r2083_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| m2083_32(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_31, r2083_30 #-----| Goto -> Block 7 -# 2069| Block 9 -# 2069| r2069_33(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:34] : -# 2069| m2069_34(TernaryNonPodObj) = Uninitialized[#temp2069:34] : &:r2069_33 -# 2069| r2069_35(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2069| v2069_36(void) = Call[TernaryNonPodObj] : func:r2069_35, this:r2069_33 -# 2069| m2069_37(unknown) = ^CallSideEffect : ~m2068_16 -# 2069| m2069_38(unknown) = Chi : total:m2068_16, partial:m2069_37 -# 2069| m2069_39(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_33 -# 2069| m2069_40(TernaryNonPodObj) = Chi : total:m2069_34, partial:m2069_39 -# 2069| r2069_41(TernaryNonPodObj) = Load[#temp2069:34] : &:r2069_33, m2069_40 -# 2069| r2069_42(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| m2069_43(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_42, r2069_41 +# 2083| Block 9 +# 2083| r2083_33(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:34] : +# 2083| m2083_34(TernaryNonPodObj) = Uninitialized[#temp2083:34] : &:r2083_33 +# 2083| r2083_35(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2083| v2083_36(void) = Call[TernaryNonPodObj] : func:r2083_35, this:r2083_33 +# 2083| m2083_37(unknown) = ^CallSideEffect : ~m2082_16 +# 2083| m2083_38(unknown) = Chi : total:m2082_16, partial:m2083_37 +# 2083| m2083_39(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_33 +# 2083| m2083_40(TernaryNonPodObj) = Chi : total:m2083_34, partial:m2083_39 +# 2083| r2083_41(TernaryNonPodObj) = Load[#temp2083:34] : &:r2083_33, m2083_40 +# 2083| r2083_42(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| m2083_43(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_42, r2083_41 #-----| Goto -> Block 7 -# 2070| Block 10 -# 2070| m2070_6(glval<TernaryNonPodObj>) = Phi : from 11:m2070_40, from 12:m2070_43 -# 2070| r2070_7(glval<unknown>) = VariableAddress[#temp2070:10] : -# 2070| r2070_8(glval<TernaryNonPodObj>) = Load[#temp2070:10] : &:r2070_7, m2070_6 -# 2070| r2070_9(glval<TernaryNonPodObj>) = Convert : r2070_8 -# 2070| r2070_10(TernaryNonPodObj &) = CopyValue : r2070_9 -# 2070| r2070_11(TernaryNonPodObj &) = Call[operator=] : func:r2070_2, this:r2070_1, 0:r2070_10 -# 2070| m2070_12(unknown) = ^CallSideEffect : ~m2069_16 -# 2070| m2070_13(unknown) = Chi : total:m2069_16, partial:m2070_12 -# 2070| v2070_14(void) = ^IndirectReadSideEffect[-1] : &:r2070_1, m2069_20 -# 2070| v2070_15(void) = ^BufferReadSideEffect[0] : &:r2070_10, ~m2070_13 -# 2070| m2070_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_1 -# 2070| m2070_17(TernaryNonPodObj) = Chi : total:m2069_20, partial:m2070_16 -# 2070| r2070_18(glval<TernaryNonPodObj>) = CopyValue : r2070_11 -# 2070| r2070_19(glval<unknown>) = FunctionAddress[operator=] : -# 2070| r2070_20(glval<TernaryNonPodObj>) = VariableAddress[#temp2070:23] : -# 2070| m2070_21(TernaryNonPodObj) = Uninitialized[#temp2070:23] : &:r2070_20 -# 2070| r2070_22(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2070| v2070_23(void) = Call[TernaryNonPodObj] : func:r2070_22, this:r2070_20 -# 2070| m2070_24(unknown) = ^CallSideEffect : ~m2070_13 -# 2070| m2070_25(unknown) = Chi : total:m2070_13, partial:m2070_24 -# 2070| m2070_26(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_20 -# 2070| m2070_27(TernaryNonPodObj) = Chi : total:m2070_21, partial:m2070_26 -# 2070| r2070_28(glval<TernaryNonPodObj>) = Convert : r2070_20 -# 2070| r2070_29(TernaryNonPodObj &) = CopyValue : r2070_28 -# 2070| r2070_30(TernaryNonPodObj &) = Call[operator=] : func:r2070_19, this:r2070_18, 0:r2070_29 -# 2070| m2070_31(unknown) = ^CallSideEffect : ~m2070_25 -# 2070| m2070_32(unknown) = Chi : total:m2070_25, partial:m2070_31 -# 2070| v2070_33(void) = ^IndirectReadSideEffect[-1] : &:r2070_18, m2070_17 -# 2070| v2070_34(void) = ^BufferReadSideEffect[0] : &:r2070_29, ~m2070_27 -# 2070| m2070_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_18 -# 2070| m2070_36(TernaryNonPodObj) = Chi : total:m2070_17, partial:m2070_35 -# 2070| r2070_37(glval<TernaryNonPodObj>) = CopyValue : r2070_30 -# 2071| v2071_1(void) = NoOp : -# 2066| v2066_13(void) = ReturnVoid : -# 2066| v2066_14(void) = AliasedUse : ~m2070_32 -# 2066| v2066_15(void) = ExitFunction : - -# 2070| Block 11 -# 2070| r2070_38(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2070| r2070_39(glval<unknown>) = VariableAddress[#temp2070:10] : -# 2070| m2070_40(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_39, r2070_38 +# 2084| Block 10 +# 2084| m2084_6(glval<TernaryNonPodObj>) = Phi : from 11:m2084_40, from 12:m2084_43 +# 2084| r2084_7(glval<unknown>) = VariableAddress[#temp2084:10] : +# 2084| r2084_8(glval<TernaryNonPodObj>) = Load[#temp2084:10] : &:r2084_7, m2084_6 +# 2084| r2084_9(glval<TernaryNonPodObj>) = Convert : r2084_8 +# 2084| r2084_10(TernaryNonPodObj &) = CopyValue : r2084_9 +# 2084| r2084_11(TernaryNonPodObj &) = Call[operator=] : func:r2084_2, this:r2084_1, 0:r2084_10 +# 2084| m2084_12(unknown) = ^CallSideEffect : ~m2083_16 +# 2084| m2084_13(unknown) = Chi : total:m2083_16, partial:m2084_12 +# 2084| v2084_14(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, m2083_20 +# 2084| v2084_15(void) = ^BufferReadSideEffect[0] : &:r2084_10, ~m2084_13 +# 2084| m2084_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 +# 2084| m2084_17(TernaryNonPodObj) = Chi : total:m2083_20, partial:m2084_16 +# 2084| r2084_18(glval<TernaryNonPodObj>) = CopyValue : r2084_11 +# 2084| r2084_19(glval<unknown>) = FunctionAddress[operator=] : +# 2084| r2084_20(glval<TernaryNonPodObj>) = VariableAddress[#temp2084:23] : +# 2084| m2084_21(TernaryNonPodObj) = Uninitialized[#temp2084:23] : &:r2084_20 +# 2084| r2084_22(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2084| v2084_23(void) = Call[TernaryNonPodObj] : func:r2084_22, this:r2084_20 +# 2084| m2084_24(unknown) = ^CallSideEffect : ~m2084_13 +# 2084| m2084_25(unknown) = Chi : total:m2084_13, partial:m2084_24 +# 2084| m2084_26(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_20 +# 2084| m2084_27(TernaryNonPodObj) = Chi : total:m2084_21, partial:m2084_26 +# 2084| r2084_28(glval<TernaryNonPodObj>) = Convert : r2084_20 +# 2084| r2084_29(TernaryNonPodObj &) = CopyValue : r2084_28 +# 2084| r2084_30(TernaryNonPodObj &) = Call[operator=] : func:r2084_19, this:r2084_18, 0:r2084_29 +# 2084| m2084_31(unknown) = ^CallSideEffect : ~m2084_25 +# 2084| m2084_32(unknown) = Chi : total:m2084_25, partial:m2084_31 +# 2084| v2084_33(void) = ^IndirectReadSideEffect[-1] : &:r2084_18, m2084_17 +# 2084| v2084_34(void) = ^BufferReadSideEffect[0] : &:r2084_29, ~m2084_27 +# 2084| m2084_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_18 +# 2084| m2084_36(TernaryNonPodObj) = Chi : total:m2084_17, partial:m2084_35 +# 2084| r2084_37(glval<TernaryNonPodObj>) = CopyValue : r2084_30 +# 2085| v2085_1(void) = NoOp : +# 2080| v2080_13(void) = ReturnVoid : +# 2080| v2080_14(void) = AliasedUse : ~m2084_32 +# 2080| v2080_15(void) = ExitFunction : + +# 2084| Block 11 +# 2084| r2084_38(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2084| r2084_39(glval<unknown>) = VariableAddress[#temp2084:10] : +# 2084| m2084_40(glval<TernaryNonPodObj>) = Store[#temp2084:10] : &:r2084_39, r2084_38 #-----| Goto -> Block 10 -# 2070| Block 12 -# 2070| r2070_41(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2070| r2070_42(glval<unknown>) = VariableAddress[#temp2070:10] : -# 2070| m2070_43(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_42, r2070_41 +# 2084| Block 12 +# 2084| r2084_41(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2084| r2084_42(glval<unknown>) = VariableAddress[#temp2084:10] : +# 2084| m2084_43(glval<TernaryNonPodObj>) = Store[#temp2084:10] : &:r2084_42, r2084_41 #-----| Goto -> Block 10 -# 2075| unsigned int CommaTest(unsigned int) -# 2075| Block 0 -# 2075| v2075_1(void) = EnterFunction : -# 2075| m2075_2(unknown) = AliasedDefinition : -# 2075| m2075_3(unknown) = InitializeNonLocal : -# 2075| m2075_4(unknown) = Chi : total:m2075_2, partial:m2075_3 -# 2075| r2075_5(glval<unsigned int>) = VariableAddress[x] : -# 2075| m2075_6(unsigned int) = InitializeParameter[x] : &:r2075_5 -# 2076| r2076_1(glval<unsigned int>) = VariableAddress[y] : -# 2076| m2076_2(unsigned int) = Uninitialized[y] : &:r2076_1 -# 2077| r2077_1(glval<unsigned int>) = VariableAddress[x] : -# 2077| r2077_2(unsigned int) = Load[x] : &:r2077_1, m2075_6 -# 2077| r2077_3(unsigned int) = Constant[100] : -# 2077| r2077_4(bool) = CompareLT : r2077_2, r2077_3 -# 2077| v2077_5(void) = ConditionalBranch : r2077_4 +# 2089| unsigned int CommaTest(unsigned int) +# 2089| Block 0 +# 2089| v2089_1(void) = EnterFunction : +# 2089| m2089_2(unknown) = AliasedDefinition : +# 2089| m2089_3(unknown) = InitializeNonLocal : +# 2089| m2089_4(unknown) = Chi : total:m2089_2, partial:m2089_3 +# 2089| r2089_5(glval<unsigned int>) = VariableAddress[x] : +# 2089| m2089_6(unsigned int) = InitializeParameter[x] : &:r2089_5 +# 2090| r2090_1(glval<unsigned int>) = VariableAddress[y] : +# 2090| m2090_2(unsigned int) = Uninitialized[y] : &:r2090_1 +# 2091| r2091_1(glval<unsigned int>) = VariableAddress[x] : +# 2091| r2091_2(unsigned int) = Load[x] : &:r2091_1, m2089_6 +# 2091| r2091_3(unsigned int) = Constant[100] : +# 2091| r2091_4(bool) = CompareLT : r2091_2, r2091_3 +# 2091| v2091_5(void) = ConditionalBranch : r2091_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2077| Block 1 -# 2077| m2077_6(unknown) = Phi : from 2:~m2078_6, from 3:~m2079_6 -# 2077| m2077_7(unsigned int) = Phi : from 2:m2077_13, from 3:m2077_15 -# 2077| r2077_8(glval<unsigned int>) = VariableAddress[#temp2077:7] : -# 2077| r2077_9(unsigned int) = Load[#temp2077:7] : &:r2077_8, m2077_7 -# 2077| r2077_10(glval<unsigned int>) = VariableAddress[y] : -# 2077| m2077_11(unsigned int) = Store[y] : &:r2077_10, r2077_9 -# 2080| r2080_1(glval<unsigned int>) = VariableAddress[#return] : -# 2080| m2080_2(unsigned int) = Uninitialized[#return] : &:r2080_1 -# 2075| r2075_7(glval<unsigned int>) = VariableAddress[#return] : -# 2075| v2075_8(void) = ReturnValue : &:r2075_7, m2080_2 -# 2075| v2075_9(void) = AliasedUse : ~m2077_6 -# 2075| v2075_10(void) = ExitFunction : - -# 2078| Block 2 -# 2078| r2078_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2078| r2078_2(glval<unsigned int>) = VariableAddress[x] : -# 2078| r2078_3(unsigned int) = Load[x] : &:r2078_2, m2075_6 -# 2078| v2078_4(void) = Call[CommaTestHelper] : func:r2078_1, 0:r2078_3 -# 2078| m2078_5(unknown) = ^CallSideEffect : ~m2075_4 -# 2078| m2078_6(unknown) = Chi : total:m2075_4, partial:m2078_5 -# 2078| r2078_7(glval<unsigned int>) = VariableAddress[x] : -# 2078| r2078_8(unsigned int) = Load[x] : &:r2078_7, m2075_6 -# 2078| r2078_9(unsigned int) = CopyValue : r2078_8 -# 2077| r2077_12(glval<unsigned int>) = VariableAddress[#temp2077:7] : -# 2077| m2077_13(unsigned int) = Store[#temp2077:7] : &:r2077_12, r2078_9 +# 2091| Block 1 +# 2091| m2091_6(unknown) = Phi : from 2:~m2092_6, from 3:~m2093_6 +# 2091| m2091_7(unsigned int) = Phi : from 2:m2091_13, from 3:m2091_15 +# 2091| r2091_8(glval<unsigned int>) = VariableAddress[#temp2091:7] : +# 2091| r2091_9(unsigned int) = Load[#temp2091:7] : &:r2091_8, m2091_7 +# 2091| r2091_10(glval<unsigned int>) = VariableAddress[y] : +# 2091| m2091_11(unsigned int) = Store[y] : &:r2091_10, r2091_9 +# 2094| r2094_1(glval<unsigned int>) = VariableAddress[#return] : +# 2094| m2094_2(unsigned int) = Uninitialized[#return] : &:r2094_1 +# 2089| r2089_7(glval<unsigned int>) = VariableAddress[#return] : +# 2089| v2089_8(void) = ReturnValue : &:r2089_7, m2094_2 +# 2089| v2089_9(void) = AliasedUse : ~m2091_6 +# 2089| v2089_10(void) = ExitFunction : + +# 2092| Block 2 +# 2092| r2092_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2092| r2092_2(glval<unsigned int>) = VariableAddress[x] : +# 2092| r2092_3(unsigned int) = Load[x] : &:r2092_2, m2089_6 +# 2092| v2092_4(void) = Call[CommaTestHelper] : func:r2092_1, 0:r2092_3 +# 2092| m2092_5(unknown) = ^CallSideEffect : ~m2089_4 +# 2092| m2092_6(unknown) = Chi : total:m2089_4, partial:m2092_5 +# 2092| r2092_7(glval<unsigned int>) = VariableAddress[x] : +# 2092| r2092_8(unsigned int) = Load[x] : &:r2092_7, m2089_6 +# 2092| r2092_9(unsigned int) = CopyValue : r2092_8 +# 2091| r2091_12(glval<unsigned int>) = VariableAddress[#temp2091:7] : +# 2091| m2091_13(unsigned int) = Store[#temp2091:7] : &:r2091_12, r2092_9 #-----| Goto -> Block 1 -# 2079| Block 3 -# 2079| r2079_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2079| r2079_2(glval<unsigned int>) = VariableAddress[x] : -# 2079| r2079_3(unsigned int) = Load[x] : &:r2079_2, m2075_6 -# 2079| v2079_4(void) = Call[CommaTestHelper] : func:r2079_1, 0:r2079_3 -# 2079| m2079_5(unknown) = ^CallSideEffect : ~m2075_4 -# 2079| m2079_6(unknown) = Chi : total:m2075_4, partial:m2079_5 -# 2079| r2079_7(int) = Constant[10] : -# 2079| r2079_8(int) = CopyValue : r2079_7 -# 2079| r2079_9(unsigned int) = Convert : r2079_8 -# 2077| r2077_14(glval<unsigned int>) = VariableAddress[#temp2077:7] : -# 2077| m2077_15(unsigned int) = Store[#temp2077:7] : &:r2077_14, r2079_9 +# 2093| Block 3 +# 2093| r2093_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2093| r2093_2(glval<unsigned int>) = VariableAddress[x] : +# 2093| r2093_3(unsigned int) = Load[x] : &:r2093_2, m2089_6 +# 2093| v2093_4(void) = Call[CommaTestHelper] : func:r2093_1, 0:r2093_3 +# 2093| m2093_5(unknown) = ^CallSideEffect : ~m2089_4 +# 2093| m2093_6(unknown) = Chi : total:m2089_4, partial:m2093_5 +# 2093| r2093_7(int) = Constant[10] : +# 2093| r2093_8(int) = CopyValue : r2093_7 +# 2093| r2093_9(unsigned int) = Convert : r2093_8 +# 2091| r2091_14(glval<unsigned int>) = VariableAddress[#temp2091:7] : +# 2091| m2091_15(unsigned int) = Store[#temp2091:7] : &:r2091_14, r2093_9 #-----| Goto -> Block 1 -# 2082| void NewDeleteMem() -# 2082| Block 0 -# 2082| v2082_1(void) = EnterFunction : -# 2082| m2082_2(unknown) = AliasedDefinition : -# 2082| m2082_3(unknown) = InitializeNonLocal : -# 2082| m2082_4(unknown) = Chi : total:m2082_2, partial:m2082_3 -# 2083| r2083_1(glval<int *>) = VariableAddress[x] : -# 2083| r2083_2(glval<unknown>) = FunctionAddress[operator new] : -# 2083| r2083_3(unsigned long) = Constant[4] : -# 2083| r2083_4(void *) = Call[operator new] : func:r2083_2, 0:r2083_3 -# 2083| m2083_5(unknown) = ^CallSideEffect : ~m2082_4 -# 2083| m2083_6(unknown) = Chi : total:m2082_4, partial:m2083_5 -# 2083| m2083_7(unknown) = ^InitializeDynamicAllocation : &:r2083_4 -# 2083| r2083_8(int *) = Convert : r2083_4 -# 2083| m2083_9(int *) = Store[x] : &:r2083_1, r2083_8 -# 2084| r2084_1(int) = Constant[6] : -# 2084| r2084_2(glval<int *>) = VariableAddress[x] : -# 2084| r2084_3(int *) = Load[x] : &:r2084_2, m2083_9 -# 2084| r2084_4(glval<int>) = CopyValue : r2084_3 -# 2084| m2084_5(int) = Store[?] : &:r2084_4, r2084_1 -# 2084| m2084_6(unknown) = Chi : total:m2083_7, partial:m2084_5 -# 2085| r2085_1(glval<unknown>) = FunctionAddress[operator delete] : -# 2085| r2085_2(glval<int *>) = VariableAddress[x] : -# 2085| r2085_3(int *) = Load[x] : &:r2085_2, m2083_9 -# 2085| v2085_4(void) = Call[operator delete] : func:r2085_1, 0:r2085_3 -# 2085| m2085_5(unknown) = ^CallSideEffect : ~m2083_6 -# 2085| m2085_6(unknown) = Chi : total:m2083_6, partial:m2085_5 -# 2086| v2086_1(void) = NoOp : -# 2082| v2082_5(void) = ReturnVoid : -# 2082| v2082_6(void) = AliasedUse : ~m2085_6 -# 2082| v2082_7(void) = ExitFunction : - -# 2088| void Base2::Base2() -# 2088| Block 0 -# 2088| v2088_1(void) = EnterFunction : -# 2088| m2088_2(unknown) = AliasedDefinition : -# 2088| m2088_3(unknown) = InitializeNonLocal : -# 2088| m2088_4(unknown) = Chi : total:m2088_2, partial:m2088_3 -# 2088| r2088_5(glval<unknown>) = VariableAddress[#this] : -# 2088| m2088_6(glval<Base2>) = InitializeParameter[#this] : &:r2088_5 -# 2088| r2088_7(glval<Base2>) = Load[#this] : &:r2088_5, m2088_6 -# 2088| m2088_8(Base2) = InitializeIndirection[#this] : &:r2088_7 -# 2088| v2088_9(void) = NoOp : -# 2088| v2088_10(void) = ReturnIndirection[#this] : &:r2088_7, m2088_8 -# 2088| v2088_11(void) = ReturnVoid : -# 2088| v2088_12(void) = AliasedUse : m2088_3 -# 2088| v2088_13(void) = ExitFunction : - -# 2090| void Base2::operator delete(void*) -# 2090| Block 0 -# 2090| v2090_1(void) = EnterFunction : -# 2090| m2090_2(unknown) = AliasedDefinition : -# 2090| m2090_3(unknown) = InitializeNonLocal : -# 2090| m2090_4(unknown) = Chi : total:m2090_2, partial:m2090_3 -# 2090| r2090_5(glval<void *>) = VariableAddress[p] : -# 2090| m2090_6(void *) = InitializeParameter[p] : &:r2090_5 -# 2090| r2090_7(void *) = Load[p] : &:r2090_5, m2090_6 -# 2090| m2090_8(unknown) = InitializeIndirection[p] : &:r2090_7 -# 2091| v2091_1(void) = NoOp : -# 2090| v2090_9(void) = ReturnIndirection[p] : &:r2090_7, m2090_8 -# 2090| v2090_10(void) = ReturnVoid : -# 2090| v2090_11(void) = AliasedUse : m2090_3 -# 2090| v2090_12(void) = ExitFunction : - -# 2092| void Base2::~Base2() -# 2092| Block 0 -# 2092| v2092_1(void) = EnterFunction : -# 2092| m2092_2(unknown) = AliasedDefinition : -# 2092| m2092_3(unknown) = InitializeNonLocal : -# 2092| m2092_4(unknown) = Chi : total:m2092_2, partial:m2092_3 -# 2092| r2092_5(glval<unknown>) = VariableAddress[#this] : -# 2092| m2092_6(glval<Base2>) = InitializeParameter[#this] : &:r2092_5 -# 2092| r2092_7(glval<Base2>) = Load[#this] : &:r2092_5, m2092_6 -# 2092| m2092_8(Base2) = InitializeIndirection[#this] : &:r2092_7 -# 2092| v2092_9(void) = NoOp : -# 2092| v2092_10(void) = ReturnIndirection[#this] : &:r2092_7, m2092_8 -# 2092| v2092_11(void) = ReturnVoid : -# 2092| v2092_12(void) = AliasedUse : m2092_3 -# 2092| v2092_13(void) = ExitFunction : - -# 2095| void Derived2::Derived2() -# 2095| Block 0 -# 2095| v2095_1(void) = EnterFunction : -# 2095| m2095_2(unknown) = AliasedDefinition : -# 2095| m2095_3(unknown) = InitializeNonLocal : -# 2095| m2095_4(unknown) = Chi : total:m2095_2, partial:m2095_3 -# 2095| r2095_5(glval<unknown>) = VariableAddress[#this] : -# 2095| m2095_6(glval<Derived2>) = InitializeParameter[#this] : &:r2095_5 -# 2095| r2095_7(glval<Derived2>) = Load[#this] : &:r2095_5, m2095_6 -# 2095| m2095_8(Derived2) = InitializeIndirection[#this] : &:r2095_7 -# 2095| r2095_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2095_6 -# 2095| r2095_10(glval<unknown>) = FunctionAddress[Base2] : -# 2095| v2095_11(void) = Call[Base2] : func:r2095_10, this:r2095_9 -# 2095| m2095_12(unknown) = ^CallSideEffect : ~m2095_4 -# 2095| m2095_13(unknown) = Chi : total:m2095_4, partial:m2095_12 -# 2095| m2095_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2095_9 -# 2095| m2095_15(unknown) = Chi : total:m2095_8, partial:m2095_14 -# 2095| v2095_16(void) = NoOp : -# 2095| v2095_17(void) = ReturnIndirection[#this] : &:r2095_7, m2095_15 -# 2095| v2095_18(void) = ReturnVoid : -# 2095| v2095_19(void) = AliasedUse : ~m2095_13 -# 2095| v2095_20(void) = ExitFunction : - -# 2098| void Derived2::~Derived2() -# 2098| Block 0 -# 2098| v2098_1(void) = EnterFunction : -# 2098| m2098_2(unknown) = AliasedDefinition : -# 2098| m2098_3(unknown) = InitializeNonLocal : -# 2098| m2098_4(unknown) = Chi : total:m2098_2, partial:m2098_3 -# 2098| r2098_5(glval<unknown>) = VariableAddress[#this] : -# 2098| m2098_6(glval<Derived2>) = InitializeParameter[#this] : &:r2098_5 -# 2098| r2098_7(glval<Derived2>) = Load[#this] : &:r2098_5, m2098_6 -# 2098| m2098_8(Derived2) = InitializeIndirection[#this] : &:r2098_7 -# 2098| v2098_9(void) = NoOp : -# 2098| r2098_10(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2098_6 -# 2098| r2098_11(glval<unknown>) = FunctionAddress[~Base2] : -# 2098| v2098_12(void) = Call[~Base2] : func:r2098_11, this:r2098_10 -# 2098| m2098_13(unknown) = ^CallSideEffect : ~m2098_4 -# 2098| m2098_14(unknown) = Chi : total:m2098_4, partial:m2098_13 -# 2098| v2098_15(void) = ReturnIndirection[#this] : &:r2098_7, m2098_8 -# 2098| v2098_16(void) = ReturnVoid : -# 2098| v2098_17(void) = AliasedUse : ~m2098_14 -# 2098| v2098_18(void) = ExitFunction : - -# 2100| void Derived2::operator delete(void*) -# 2100| Block 0 -# 2100| v2100_1(void) = EnterFunction : -# 2100| m2100_2(unknown) = AliasedDefinition : -# 2100| m2100_3(unknown) = InitializeNonLocal : -# 2100| m2100_4(unknown) = Chi : total:m2100_2, partial:m2100_3 -# 2100| r2100_5(glval<void *>) = VariableAddress[p] : -# 2100| m2100_6(void *) = InitializeParameter[p] : &:r2100_5 -# 2100| r2100_7(void *) = Load[p] : &:r2100_5, m2100_6 -# 2100| m2100_8(unknown) = InitializeIndirection[p] : &:r2100_7 -# 2101| v2101_1(void) = NoOp : -# 2100| v2100_9(void) = ReturnIndirection[p] : &:r2100_7, m2100_8 -# 2100| v2100_10(void) = ReturnVoid : -# 2100| v2100_11(void) = AliasedUse : m2100_3 -# 2100| v2100_12(void) = ExitFunction : - -# 2105| int virtual_delete() -# 2105| Block 0 -# 2105| v2105_1(void) = EnterFunction : -# 2105| m2105_2(unknown) = AliasedDefinition : -# 2105| m2105_3(unknown) = InitializeNonLocal : -# 2105| m2105_4(unknown) = Chi : total:m2105_2, partial:m2105_3 -# 2107| r2107_1(glval<Base2 *>) = VariableAddress[b1] : -# 2107| r2107_2(glval<unknown>) = FunctionAddress[operator new] : -# 2107| r2107_3(unsigned long) = Constant[8] : -# 2107| r2107_4(void *) = Call[operator new] : func:r2107_2, 0:r2107_3 -# 2107| m2107_5(unknown) = ^CallSideEffect : ~m2105_4 -# 2107| m2107_6(unknown) = Chi : total:m2105_4, partial:m2107_5 -# 2107| m2107_7(unknown) = ^InitializeDynamicAllocation : &:r2107_4 -# 2107| r2107_8(Base2 *) = Convert : r2107_4 -# 2107| r2107_9(glval<unknown>) = FunctionAddress[Base2] : -# 2107| v2107_10(void) = Call[Base2] : func:r2107_9, this:r2107_8 -# 2107| m2107_11(unknown) = ^CallSideEffect : ~m2107_6 -# 2107| m2107_12(unknown) = Chi : total:m2107_6, partial:m2107_11 -# 2107| m2107_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_8 -# 2107| m2107_14(unknown) = Chi : total:m2107_7, partial:m2107_13 -# 2107| m2107_15(Base2 *) = Store[b1] : &:r2107_1, r2107_8 -# 2108| r2108_1(glval<Base2 *>) = VariableAddress[b1] : -# 2108| r2108_2(Base2 *) = Load[b1] : &:r2108_1, m2107_15 -# 2108| r2108_3(glval<unknown>) = FunctionAddress[~Base2] : -# 2108| v2108_4(void) = Call[~Base2] : func:r2108_3 -# 2108| m2108_5(unknown) = ^CallSideEffect : ~m2107_12 -# 2108| m2108_6(unknown) = Chi : total:m2107_12, partial:m2108_5 -# 2108| v2108_7(void) = ^IndirectReadSideEffect[-1] : &:r2108_2, ~m2107_14 -# 2108| m2108_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2108_2 -# 2108| m2108_9(unknown) = Chi : total:m2107_14, partial:m2108_8 -# 2108| r2108_10(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2108| r2108_11(Base2 *) = CopyValue : r2108_1 -# 2108| v2108_12(void) = Call[?] : func:r2108_10, 0:r2108_11 -# 2108| m2108_13(unknown) = ^CallSideEffect : ~m2108_6 -# 2108| m2108_14(unknown) = Chi : total:m2108_6, partial:m2108_13 -# 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] : -# 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] : -# 2110| r2110_3(unsigned long) = Constant[16] : -# 2110| r2110_4(void *) = Call[operator new] : func:r2110_2, 0:r2110_3 -# 2110| m2110_5(unknown) = ^CallSideEffect : ~m2108_14 -# 2110| m2110_6(unknown) = Chi : total:m2108_14, partial:m2110_5 -# 2110| m2110_7(unknown) = ^InitializeDynamicAllocation : &:r2110_4 -# 2110| r2110_8(Derived2 *) = Convert : r2110_4 -# 2110| r2110_9(glval<unknown>) = FunctionAddress[Derived2] : -# 2110| v2110_10(void) = Call[Derived2] : func:r2110_9, this:r2110_8 -# 2110| m2110_11(unknown) = ^CallSideEffect : ~m2110_6 -# 2110| m2110_12(unknown) = Chi : total:m2110_6, partial:m2110_11 -# 2110| m2110_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2110_8 -# 2110| m2110_14(unknown) = Chi : total:m2110_7, partial:m2110_13 -# 2110| r2110_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_8 -# 2110| m2110_16(Base2 *) = Store[b2] : &:r2110_1, r2110_15 -# 2111| r2111_1(glval<Base2 *>) = VariableAddress[b2] : -# 2111| r2111_2(Base2 *) = Load[b2] : &:r2111_1, m2110_16 -# 2111| r2111_3(glval<unknown>) = FunctionAddress[~Base2] : -# 2111| v2111_4(void) = Call[~Base2] : func:r2111_3 -# 2111| m2111_5(unknown) = ^CallSideEffect : ~m2110_12 -# 2111| m2111_6(unknown) = Chi : total:m2110_12, partial:m2111_5 -# 2111| v2111_7(void) = ^IndirectReadSideEffect[-1] : &:r2111_2, ~m2110_14 -# 2111| m2111_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_2 -# 2111| m2111_9(unknown) = Chi : total:m2110_14, partial:m2111_8 -# 2111| r2111_10(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2111| r2111_11(Base2 *) = CopyValue : r2111_1 -# 2111| v2111_12(void) = Call[?] : func:r2111_10, 0:r2111_11 -# 2111| m2111_13(unknown) = ^CallSideEffect : ~m2111_6 -# 2111| m2111_14(unknown) = Chi : total:m2111_6, partial:m2111_13 -# 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] : -# 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] : -# 2113| r2113_3(unsigned long) = Constant[16] : -# 2113| r2113_4(void *) = Call[operator new] : func:r2113_2, 0:r2113_3 -# 2113| m2113_5(unknown) = ^CallSideEffect : ~m2111_14 -# 2113| m2113_6(unknown) = Chi : total:m2111_14, partial:m2113_5 -# 2113| m2113_7(unknown) = ^InitializeDynamicAllocation : &:r2113_4 -# 2113| r2113_8(Derived2 *) = Convert : r2113_4 -# 2113| r2113_9(glval<unknown>) = FunctionAddress[Derived2] : -# 2113| v2113_10(void) = Call[Derived2] : func:r2113_9, this:r2113_8 -# 2113| m2113_11(unknown) = ^CallSideEffect : ~m2113_6 -# 2113| m2113_12(unknown) = Chi : total:m2113_6, partial:m2113_11 -# 2113| m2113_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_8 -# 2113| m2113_14(unknown) = Chi : total:m2113_7, partial:m2113_13 -# 2113| m2113_15(Derived2 *) = Store[d] : &:r2113_1, r2113_8 -# 2114| r2114_1(glval<Derived2 *>) = VariableAddress[d] : -# 2114| r2114_2(Derived2 *) = Load[d] : &:r2114_1, m2113_15 -# 2114| r2114_3(glval<unknown>) = FunctionAddress[~Derived2] : -# 2114| v2114_4(void) = Call[~Derived2] : func:r2114_3 -# 2114| m2114_5(unknown) = ^CallSideEffect : ~m2113_12 -# 2114| m2114_6(unknown) = Chi : total:m2113_12, partial:m2114_5 -# 2114| v2114_7(void) = ^IndirectReadSideEffect[-1] : &:r2114_2, ~m2113_14 -# 2114| m2114_8(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2114_2 -# 2114| m2114_9(unknown) = Chi : total:m2113_14, partial:m2114_8 -# 2114| r2114_10(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2114| r2114_11(Derived2 *) = CopyValue : r2114_1 -# 2114| v2114_12(void) = Call[?] : func:r2114_10, 0:r2114_11 -# 2114| m2114_13(unknown) = ^CallSideEffect : ~m2114_6 -# 2114| m2114_14(unknown) = Chi : total:m2114_6, partial:m2114_13 -# 2115| r2115_1(glval<int>) = VariableAddress[#return] : -# 2115| m2115_2(int) = Uninitialized[#return] : &:r2115_1 -# 2105| r2105_5(glval<int>) = VariableAddress[#return] : -# 2105| v2105_6(void) = ReturnValue : &:r2105_5, m2115_2 -# 2105| v2105_7(void) = AliasedUse : ~m2114_14 -# 2105| v2105_8(void) = ExitFunction : - -# 2119| void test_constant_folding() +# 2096| void NewDeleteMem() +# 2096| Block 0 +# 2096| v2096_1(void) = EnterFunction : +# 2096| m2096_2(unknown) = AliasedDefinition : +# 2096| m2096_3(unknown) = InitializeNonLocal : +# 2096| m2096_4(unknown) = Chi : total:m2096_2, partial:m2096_3 +# 2097| r2097_1(glval<int *>) = VariableAddress[x] : +# 2097| r2097_2(glval<unknown>) = FunctionAddress[operator new] : +# 2097| r2097_3(unsigned long) = Constant[4] : +# 2097| r2097_4(void *) = Call[operator new] : func:r2097_2, 0:r2097_3 +# 2097| m2097_5(unknown) = ^CallSideEffect : ~m2096_4 +# 2097| m2097_6(unknown) = Chi : total:m2096_4, partial:m2097_5 +# 2097| m2097_7(unknown) = ^InitializeDynamicAllocation : &:r2097_4 +# 2097| r2097_8(int *) = Convert : r2097_4 +# 2097| m2097_9(int *) = Store[x] : &:r2097_1, r2097_8 +# 2098| r2098_1(int) = Constant[6] : +# 2098| r2098_2(glval<int *>) = VariableAddress[x] : +# 2098| r2098_3(int *) = Load[x] : &:r2098_2, m2097_9 +# 2098| r2098_4(glval<int>) = CopyValue : r2098_3 +# 2098| m2098_5(int) = Store[?] : &:r2098_4, r2098_1 +# 2098| m2098_6(unknown) = Chi : total:m2097_7, partial:m2098_5 +# 2099| r2099_1(glval<unknown>) = FunctionAddress[operator delete] : +# 2099| r2099_2(glval<int *>) = VariableAddress[x] : +# 2099| r2099_3(int *) = Load[x] : &:r2099_2, m2097_9 +# 2099| v2099_4(void) = Call[operator delete] : func:r2099_1, 0:r2099_3 +# 2099| m2099_5(unknown) = ^CallSideEffect : ~m2097_6 +# 2099| m2099_6(unknown) = Chi : total:m2097_6, partial:m2099_5 +# 2100| v2100_1(void) = NoOp : +# 2096| v2096_5(void) = ReturnVoid : +# 2096| v2096_6(void) = AliasedUse : ~m2099_6 +# 2096| v2096_7(void) = ExitFunction : + +# 2102| void Base2::Base2() +# 2102| Block 0 +# 2102| v2102_1(void) = EnterFunction : +# 2102| m2102_2(unknown) = AliasedDefinition : +# 2102| m2102_3(unknown) = InitializeNonLocal : +# 2102| m2102_4(unknown) = Chi : total:m2102_2, partial:m2102_3 +# 2102| r2102_5(glval<unknown>) = VariableAddress[#this] : +# 2102| m2102_6(glval<Base2>) = InitializeParameter[#this] : &:r2102_5 +# 2102| r2102_7(glval<Base2>) = Load[#this] : &:r2102_5, m2102_6 +# 2102| m2102_8(Base2) = InitializeIndirection[#this] : &:r2102_7 +# 2102| v2102_9(void) = NoOp : +# 2102| v2102_10(void) = ReturnIndirection[#this] : &:r2102_7, m2102_8 +# 2102| v2102_11(void) = ReturnVoid : +# 2102| v2102_12(void) = AliasedUse : m2102_3 +# 2102| v2102_13(void) = ExitFunction : + +# 2104| void Base2::operator delete(void*) +# 2104| Block 0 +# 2104| v2104_1(void) = EnterFunction : +# 2104| m2104_2(unknown) = AliasedDefinition : +# 2104| m2104_3(unknown) = InitializeNonLocal : +# 2104| m2104_4(unknown) = Chi : total:m2104_2, partial:m2104_3 +# 2104| r2104_5(glval<void *>) = VariableAddress[p] : +# 2104| m2104_6(void *) = InitializeParameter[p] : &:r2104_5 +# 2104| r2104_7(void *) = Load[p] : &:r2104_5, m2104_6 +# 2104| m2104_8(unknown) = InitializeIndirection[p] : &:r2104_7 +# 2105| v2105_1(void) = NoOp : +# 2104| v2104_9(void) = ReturnIndirection[p] : &:r2104_7, m2104_8 +# 2104| v2104_10(void) = ReturnVoid : +# 2104| v2104_11(void) = AliasedUse : m2104_3 +# 2104| v2104_12(void) = ExitFunction : + +# 2106| void Base2::~Base2() +# 2106| Block 0 +# 2106| v2106_1(void) = EnterFunction : +# 2106| m2106_2(unknown) = AliasedDefinition : +# 2106| m2106_3(unknown) = InitializeNonLocal : +# 2106| m2106_4(unknown) = Chi : total:m2106_2, partial:m2106_3 +# 2106| r2106_5(glval<unknown>) = VariableAddress[#this] : +# 2106| m2106_6(glval<Base2>) = InitializeParameter[#this] : &:r2106_5 +# 2106| r2106_7(glval<Base2>) = Load[#this] : &:r2106_5, m2106_6 +# 2106| m2106_8(Base2) = InitializeIndirection[#this] : &:r2106_7 +# 2106| v2106_9(void) = NoOp : +# 2106| v2106_10(void) = ReturnIndirection[#this] : &:r2106_7, m2106_8 +# 2106| v2106_11(void) = ReturnVoid : +# 2106| v2106_12(void) = AliasedUse : m2106_3 +# 2106| v2106_13(void) = ExitFunction : + +# 2109| void Derived2::Derived2() +# 2109| Block 0 +# 2109| v2109_1(void) = EnterFunction : +# 2109| m2109_2(unknown) = AliasedDefinition : +# 2109| m2109_3(unknown) = InitializeNonLocal : +# 2109| m2109_4(unknown) = Chi : total:m2109_2, partial:m2109_3 +# 2109| r2109_5(glval<unknown>) = VariableAddress[#this] : +# 2109| m2109_6(glval<Derived2>) = InitializeParameter[#this] : &:r2109_5 +# 2109| r2109_7(glval<Derived2>) = Load[#this] : &:r2109_5, m2109_6 +# 2109| m2109_8(Derived2) = InitializeIndirection[#this] : &:r2109_7 +# 2109| r2109_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2109_6 +# 2109| r2109_10(glval<unknown>) = FunctionAddress[Base2] : +# 2109| v2109_11(void) = Call[Base2] : func:r2109_10, this:r2109_9 +# 2109| m2109_12(unknown) = ^CallSideEffect : ~m2109_4 +# 2109| m2109_13(unknown) = Chi : total:m2109_4, partial:m2109_12 +# 2109| m2109_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2109_9 +# 2109| m2109_15(unknown) = Chi : total:m2109_8, partial:m2109_14 +# 2109| v2109_16(void) = NoOp : +# 2109| v2109_17(void) = ReturnIndirection[#this] : &:r2109_7, m2109_15 +# 2109| v2109_18(void) = ReturnVoid : +# 2109| v2109_19(void) = AliasedUse : ~m2109_13 +# 2109| v2109_20(void) = ExitFunction : + +# 2112| void Derived2::~Derived2() +# 2112| Block 0 +# 2112| v2112_1(void) = EnterFunction : +# 2112| m2112_2(unknown) = AliasedDefinition : +# 2112| m2112_3(unknown) = InitializeNonLocal : +# 2112| m2112_4(unknown) = Chi : total:m2112_2, partial:m2112_3 +# 2112| r2112_5(glval<unknown>) = VariableAddress[#this] : +# 2112| m2112_6(glval<Derived2>) = InitializeParameter[#this] : &:r2112_5 +# 2112| r2112_7(glval<Derived2>) = Load[#this] : &:r2112_5, m2112_6 +# 2112| m2112_8(Derived2) = InitializeIndirection[#this] : &:r2112_7 +# 2112| v2112_9(void) = NoOp : +# 2112| r2112_10(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : m2112_6 +# 2112| r2112_11(glval<unknown>) = FunctionAddress[~Base2] : +# 2112| v2112_12(void) = Call[~Base2] : func:r2112_11, this:r2112_10 +# 2112| m2112_13(unknown) = ^CallSideEffect : ~m2112_4 +# 2112| m2112_14(unknown) = Chi : total:m2112_4, partial:m2112_13 +# 2112| v2112_15(void) = ReturnIndirection[#this] : &:r2112_7, m2112_8 +# 2112| v2112_16(void) = ReturnVoid : +# 2112| v2112_17(void) = AliasedUse : ~m2112_14 +# 2112| v2112_18(void) = ExitFunction : + +# 2114| void Derived2::operator delete(void*) +# 2114| Block 0 +# 2114| v2114_1(void) = EnterFunction : +# 2114| m2114_2(unknown) = AliasedDefinition : +# 2114| m2114_3(unknown) = InitializeNonLocal : +# 2114| m2114_4(unknown) = Chi : total:m2114_2, partial:m2114_3 +# 2114| r2114_5(glval<void *>) = VariableAddress[p] : +# 2114| m2114_6(void *) = InitializeParameter[p] : &:r2114_5 +# 2114| r2114_7(void *) = Load[p] : &:r2114_5, m2114_6 +# 2114| m2114_8(unknown) = InitializeIndirection[p] : &:r2114_7 +# 2115| v2115_1(void) = NoOp : +# 2114| v2114_9(void) = ReturnIndirection[p] : &:r2114_7, m2114_8 +# 2114| v2114_10(void) = ReturnVoid : +# 2114| v2114_11(void) = AliasedUse : m2114_3 +# 2114| v2114_12(void) = ExitFunction : + +# 2119| int virtual_delete() # 2119| Block 0 -# 2119| v2119_1(void) = EnterFunction : -# 2119| m2119_2(unknown) = AliasedDefinition : -# 2119| m2119_3(unknown) = InitializeNonLocal : -# 2119| m2119_4(unknown) = Chi : total:m2119_2, partial:m2119_3 -# 2120| r2120_1(glval<int>) = VariableAddress[x] : -# 2120| r2120_2(int) = Constant[116] : -# 2120| m2120_3(int) = Store[x] : &:r2120_1, r2120_2 -# 2121| r2121_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : -# 2121| r2121_2(int) = Constant[116] : -# 2121| v2121_3(void) = Call[test_constant_folding_use] : func:r2121_1, 0:r2121_2 -# 2121| m2121_4(unknown) = ^CallSideEffect : ~m2119_4 -# 2121| m2121_5(unknown) = Chi : total:m2119_4, partial:m2121_4 -# 2122| v2122_1(void) = NoOp : -# 2119| v2119_5(void) = ReturnVoid : -# 2119| v2119_6(void) = AliasedUse : ~m2121_5 -# 2119| v2119_7(void) = ExitFunction : - -# 2126| int NonExit() -# 2126| Block 0 -# 2126| v2126_1(void) = EnterFunction : -# 2126| m2126_2(unknown) = AliasedDefinition : -# 2126| m2126_3(unknown) = InitializeNonLocal : -# 2126| m2126_4(unknown) = Chi : total:m2126_2, partial:m2126_3 -# 2127| r2127_1(glval<int>) = VariableAddress[x] : -# 2127| r2127_2(glval<unknown>) = FunctionAddress[Add] : -# 2127| r2127_3(int) = Constant[3] : -# 2127| r2127_4(int) = Constant[4] : -# 2127| r2127_5(int) = Call[Add] : func:r2127_2, 0:r2127_3, 1:r2127_4 -# 2127| m2127_6(unknown) = ^CallSideEffect : ~m2126_4 -# 2127| m2127_7(unknown) = Chi : total:m2126_4, partial:m2127_6 -# 2127| m2127_8(int) = Store[x] : &:r2127_1, r2127_5 -# 2128| r2128_1(glval<int>) = VariableAddress[x] : -# 2128| r2128_2(int) = Load[x] : &:r2128_1, m2127_8 -# 2128| r2128_3(int) = Constant[7] : -# 2128| r2128_4(bool) = CompareEQ : r2128_2, r2128_3 -# 2128| v2128_5(void) = ConditionalBranch : r2128_4 +# 2119| v2119_1(void) = EnterFunction : +# 2119| m2119_2(unknown) = AliasedDefinition : +# 2119| m2119_3(unknown) = InitializeNonLocal : +# 2119| m2119_4(unknown) = Chi : total:m2119_2, partial:m2119_3 +# 2121| r2121_1(glval<Base2 *>) = VariableAddress[b1] : +# 2121| r2121_2(glval<unknown>) = FunctionAddress[operator new] : +# 2121| r2121_3(unsigned long) = Constant[8] : +# 2121| r2121_4(void *) = Call[operator new] : func:r2121_2, 0:r2121_3 +# 2121| m2121_5(unknown) = ^CallSideEffect : ~m2119_4 +# 2121| m2121_6(unknown) = Chi : total:m2119_4, partial:m2121_5 +# 2121| m2121_7(unknown) = ^InitializeDynamicAllocation : &:r2121_4 +# 2121| r2121_8(Base2 *) = Convert : r2121_4 +# 2121| r2121_9(glval<unknown>) = FunctionAddress[Base2] : +# 2121| v2121_10(void) = Call[Base2] : func:r2121_9, this:r2121_8 +# 2121| m2121_11(unknown) = ^CallSideEffect : ~m2121_6 +# 2121| m2121_12(unknown) = Chi : total:m2121_6, partial:m2121_11 +# 2121| m2121_13(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2121_8 +# 2121| m2121_14(unknown) = Chi : total:m2121_7, partial:m2121_13 +# 2121| m2121_15(Base2 *) = Store[b1] : &:r2121_1, r2121_8 +# 2122| r2122_1(glval<Base2 *>) = VariableAddress[b1] : +# 2122| r2122_2(Base2 *) = Load[b1] : &:r2122_1, m2121_15 +# 2122| r2122_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2122| v2122_4(void) = Call[~Base2] : func:r2122_3 +# 2122| m2122_5(unknown) = ^CallSideEffect : ~m2121_12 +# 2122| m2122_6(unknown) = Chi : total:m2121_12, partial:m2122_5 +# 2122| v2122_7(void) = ^IndirectReadSideEffect[-1] : &:r2122_2, ~m2121_14 +# 2122| m2122_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2122_2 +# 2122| m2122_9(unknown) = Chi : total:m2121_14, partial:m2122_8 +# 2122| r2122_10(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2122| r2122_11(Base2 *) = CopyValue : r2122_1 +# 2122| v2122_12(void) = Call[?] : func:r2122_10, 0:r2122_11 +# 2122| m2122_13(unknown) = ^CallSideEffect : ~m2122_6 +# 2122| m2122_14(unknown) = Chi : total:m2122_6, partial:m2122_13 +# 2124| r2124_1(glval<Base2 *>) = VariableAddress[b2] : +# 2124| r2124_2(glval<unknown>) = FunctionAddress[operator new] : +# 2124| r2124_3(unsigned long) = Constant[16] : +# 2124| r2124_4(void *) = Call[operator new] : func:r2124_2, 0:r2124_3 +# 2124| m2124_5(unknown) = ^CallSideEffect : ~m2122_14 +# 2124| m2124_6(unknown) = Chi : total:m2122_14, partial:m2124_5 +# 2124| m2124_7(unknown) = ^InitializeDynamicAllocation : &:r2124_4 +# 2124| r2124_8(Derived2 *) = Convert : r2124_4 +# 2124| r2124_9(glval<unknown>) = FunctionAddress[Derived2] : +# 2124| v2124_10(void) = Call[Derived2] : func:r2124_9, this:r2124_8 +# 2124| m2124_11(unknown) = ^CallSideEffect : ~m2124_6 +# 2124| m2124_12(unknown) = Chi : total:m2124_6, partial:m2124_11 +# 2124| m2124_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2124_8 +# 2124| m2124_14(unknown) = Chi : total:m2124_7, partial:m2124_13 +# 2124| r2124_15(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2124_8 +# 2124| m2124_16(Base2 *) = Store[b2] : &:r2124_1, r2124_15 +# 2125| r2125_1(glval<Base2 *>) = VariableAddress[b2] : +# 2125| r2125_2(Base2 *) = Load[b2] : &:r2125_1, m2124_16 +# 2125| r2125_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2125| v2125_4(void) = Call[~Base2] : func:r2125_3 +# 2125| m2125_5(unknown) = ^CallSideEffect : ~m2124_12 +# 2125| m2125_6(unknown) = Chi : total:m2124_12, partial:m2125_5 +# 2125| v2125_7(void) = ^IndirectReadSideEffect[-1] : &:r2125_2, ~m2124_14 +# 2125| m2125_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2125_2 +# 2125| m2125_9(unknown) = Chi : total:m2124_14, partial:m2125_8 +# 2125| r2125_10(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2125| r2125_11(Base2 *) = CopyValue : r2125_1 +# 2125| v2125_12(void) = Call[?] : func:r2125_10, 0:r2125_11 +# 2125| m2125_13(unknown) = ^CallSideEffect : ~m2125_6 +# 2125| m2125_14(unknown) = Chi : total:m2125_6, partial:m2125_13 +# 2127| r2127_1(glval<Derived2 *>) = VariableAddress[d] : +# 2127| r2127_2(glval<unknown>) = FunctionAddress[operator new] : +# 2127| r2127_3(unsigned long) = Constant[16] : +# 2127| r2127_4(void *) = Call[operator new] : func:r2127_2, 0:r2127_3 +# 2127| m2127_5(unknown) = ^CallSideEffect : ~m2125_14 +# 2127| m2127_6(unknown) = Chi : total:m2125_14, partial:m2127_5 +# 2127| m2127_7(unknown) = ^InitializeDynamicAllocation : &:r2127_4 +# 2127| r2127_8(Derived2 *) = Convert : r2127_4 +# 2127| r2127_9(glval<unknown>) = FunctionAddress[Derived2] : +# 2127| v2127_10(void) = Call[Derived2] : func:r2127_9, this:r2127_8 +# 2127| m2127_11(unknown) = ^CallSideEffect : ~m2127_6 +# 2127| m2127_12(unknown) = Chi : total:m2127_6, partial:m2127_11 +# 2127| m2127_13(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2127_8 +# 2127| m2127_14(unknown) = Chi : total:m2127_7, partial:m2127_13 +# 2127| m2127_15(Derived2 *) = Store[d] : &:r2127_1, r2127_8 +# 2128| r2128_1(glval<Derived2 *>) = VariableAddress[d] : +# 2128| r2128_2(Derived2 *) = Load[d] : &:r2128_1, m2127_15 +# 2128| r2128_3(glval<unknown>) = FunctionAddress[~Derived2] : +# 2128| v2128_4(void) = Call[~Derived2] : func:r2128_3 +# 2128| m2128_5(unknown) = ^CallSideEffect : ~m2127_12 +# 2128| m2128_6(unknown) = Chi : total:m2127_12, partial:m2128_5 +# 2128| v2128_7(void) = ^IndirectReadSideEffect[-1] : &:r2128_2, ~m2127_14 +# 2128| m2128_8(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2128_2 +# 2128| m2128_9(unknown) = Chi : total:m2127_14, partial:m2128_8 +# 2128| r2128_10(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2128| r2128_11(Derived2 *) = CopyValue : r2128_1 +# 2128| v2128_12(void) = Call[?] : func:r2128_10, 0:r2128_11 +# 2128| m2128_13(unknown) = ^CallSideEffect : ~m2128_6 +# 2128| m2128_14(unknown) = Chi : total:m2128_6, partial:m2128_13 +# 2129| r2129_1(glval<int>) = VariableAddress[#return] : +# 2129| m2129_2(int) = Uninitialized[#return] : &:r2129_1 +# 2119| r2119_5(glval<int>) = VariableAddress[#return] : +# 2119| v2119_6(void) = ReturnValue : &:r2119_5, m2129_2 +# 2119| v2119_7(void) = AliasedUse : ~m2128_14 +# 2119| v2119_8(void) = ExitFunction : + +# 2133| void test_constant_folding() +# 2133| Block 0 +# 2133| v2133_1(void) = EnterFunction : +# 2133| m2133_2(unknown) = AliasedDefinition : +# 2133| m2133_3(unknown) = InitializeNonLocal : +# 2133| m2133_4(unknown) = Chi : total:m2133_2, partial:m2133_3 +# 2134| r2134_1(glval<int>) = VariableAddress[x] : +# 2134| r2134_2(int) = Constant[116] : +# 2134| m2134_3(int) = Store[x] : &:r2134_1, r2134_2 +# 2135| r2135_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : +# 2135| r2135_2(int) = Constant[116] : +# 2135| v2135_3(void) = Call[test_constant_folding_use] : func:r2135_1, 0:r2135_2 +# 2135| m2135_4(unknown) = ^CallSideEffect : ~m2133_4 +# 2135| m2135_5(unknown) = Chi : total:m2133_4, partial:m2135_4 +# 2136| v2136_1(void) = NoOp : +# 2133| v2133_5(void) = ReturnVoid : +# 2133| v2133_6(void) = AliasedUse : ~m2135_5 +# 2133| v2133_7(void) = ExitFunction : + +# 2140| int NonExit() +# 2140| Block 0 +# 2140| v2140_1(void) = EnterFunction : +# 2140| m2140_2(unknown) = AliasedDefinition : +# 2140| m2140_3(unknown) = InitializeNonLocal : +# 2140| m2140_4(unknown) = Chi : total:m2140_2, partial:m2140_3 +# 2141| r2141_1(glval<int>) = VariableAddress[x] : +# 2141| r2141_2(glval<unknown>) = FunctionAddress[Add] : +# 2141| r2141_3(int) = Constant[3] : +# 2141| r2141_4(int) = Constant[4] : +# 2141| r2141_5(int) = Call[Add] : func:r2141_2, 0:r2141_3, 1:r2141_4 +# 2141| m2141_6(unknown) = ^CallSideEffect : ~m2140_4 +# 2141| m2141_7(unknown) = Chi : total:m2140_4, partial:m2141_6 +# 2141| m2141_8(int) = Store[x] : &:r2141_1, r2141_5 +# 2142| r2142_1(glval<int>) = VariableAddress[x] : +# 2142| r2142_2(int) = Load[x] : &:r2142_1, m2141_8 +# 2142| r2142_3(int) = Constant[7] : +# 2142| r2142_4(bool) = CompareEQ : r2142_2, r2142_3 +# 2142| v2142_5(void) = ConditionalBranch : r2142_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2129| Block 1 -# 2129| r2129_1(glval<unknown>) = FunctionAddress[exit] : -# 2129| r2129_2(int) = Constant[3] : -# 2129| v2129_3(void) = Call[exit] : func:r2129_1, 0:r2129_2 -# 2129| m2129_4(unknown) = ^CallSideEffect : ~m2127_7 -# 2129| m2129_5(unknown) = Chi : total:m2127_7, partial:m2129_4 -# 2126| v2126_5(void) = Unreached : - -# 2130| Block 2 -# 2130| r2130_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2130| v2130_2(void) = Call[VoidFunc] : func:r2130_1 -# 2130| m2130_3(unknown) = ^CallSideEffect : ~m2127_7 -# 2130| m2130_4(unknown) = Chi : total:m2127_7, partial:m2130_3 -# 2131| r2131_1(glval<int>) = VariableAddress[#return] : -# 2131| r2131_2(glval<int>) = VariableAddress[x] : -# 2131| r2131_3(int) = Load[x] : &:r2131_2, m2127_8 -# 2131| m2131_4(int) = Store[#return] : &:r2131_1, r2131_3 -# 2126| r2126_6(glval<int>) = VariableAddress[#return] : -# 2126| v2126_7(void) = ReturnValue : &:r2126_6, m2131_4 -# 2126| v2126_8(void) = AliasedUse : ~m2130_4 -# 2126| v2126_9(void) = ExitFunction : - -# 2134| void CallsNonExit() -# 2134| Block 0 -# 2134| v2134_1(void) = EnterFunction : -# 2134| m2134_2(unknown) = AliasedDefinition : -# 2134| m2134_3(unknown) = InitializeNonLocal : -# 2134| m2134_4(unknown) = Chi : total:m2134_2, partial:m2134_3 -# 2135| r2135_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2135| v2135_2(void) = Call[VoidFunc] : func:r2135_1 -# 2135| m2135_3(unknown) = ^CallSideEffect : ~m2134_4 -# 2135| m2135_4(unknown) = Chi : total:m2134_4, partial:m2135_3 -# 2136| r2136_1(glval<unknown>) = FunctionAddress[exit] : -# 2136| r2136_2(int) = Constant[3] : -# 2136| v2136_3(void) = Call[exit] : func:r2136_1, 0:r2136_2 -# 2136| m2136_4(unknown) = ^CallSideEffect : ~m2135_4 -# 2136| m2136_5(unknown) = Chi : total:m2135_4, partial:m2136_4 -# 2134| v2134_5(void) = Unreached : - -# 2139| int TransNonExit() -# 2139| Block 0 -# 2139| v2139_1(void) = EnterFunction : -# 2139| m2139_2(unknown) = AliasedDefinition : -# 2139| m2139_3(unknown) = InitializeNonLocal : -# 2139| m2139_4(unknown) = Chi : total:m2139_2, partial:m2139_3 -# 2140| r2140_1(glval<int>) = VariableAddress[x] : -# 2140| r2140_2(glval<unknown>) = FunctionAddress[Add] : -# 2140| r2140_3(int) = Constant[3] : -# 2140| r2140_4(int) = Constant[4] : -# 2140| r2140_5(int) = Call[Add] : func:r2140_2, 0:r2140_3, 1:r2140_4 -# 2140| m2140_6(unknown) = ^CallSideEffect : ~m2139_4 -# 2140| m2140_7(unknown) = Chi : total:m2139_4, partial:m2140_6 -# 2140| m2140_8(int) = Store[x] : &:r2140_1, r2140_5 -# 2141| r2141_1(glval<int>) = VariableAddress[x] : -# 2141| r2141_2(int) = Load[x] : &:r2141_1, m2140_8 -# 2141| r2141_3(int) = Constant[7] : -# 2141| r2141_4(bool) = CompareEQ : r2141_2, r2141_3 -# 2141| v2141_5(void) = ConditionalBranch : r2141_4 +# 2143| Block 1 +# 2143| r2143_1(glval<unknown>) = FunctionAddress[exit] : +# 2143| r2143_2(int) = Constant[3] : +# 2143| v2143_3(void) = Call[exit] : func:r2143_1, 0:r2143_2 +# 2143| m2143_4(unknown) = ^CallSideEffect : ~m2141_7 +# 2143| m2143_5(unknown) = Chi : total:m2141_7, partial:m2143_4 +# 2140| v2140_5(void) = Unreached : + +# 2144| Block 2 +# 2144| r2144_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2144| v2144_2(void) = Call[VoidFunc] : func:r2144_1 +# 2144| m2144_3(unknown) = ^CallSideEffect : ~m2141_7 +# 2144| m2144_4(unknown) = Chi : total:m2141_7, partial:m2144_3 +# 2145| r2145_1(glval<int>) = VariableAddress[#return] : +# 2145| r2145_2(glval<int>) = VariableAddress[x] : +# 2145| r2145_3(int) = Load[x] : &:r2145_2, m2141_8 +# 2145| m2145_4(int) = Store[#return] : &:r2145_1, r2145_3 +# 2140| r2140_6(glval<int>) = VariableAddress[#return] : +# 2140| v2140_7(void) = ReturnValue : &:r2140_6, m2145_4 +# 2140| v2140_8(void) = AliasedUse : ~m2144_4 +# 2140| v2140_9(void) = ExitFunction : + +# 2148| void CallsNonExit() +# 2148| Block 0 +# 2148| v2148_1(void) = EnterFunction : +# 2148| m2148_2(unknown) = AliasedDefinition : +# 2148| m2148_3(unknown) = InitializeNonLocal : +# 2148| m2148_4(unknown) = Chi : total:m2148_2, partial:m2148_3 +# 2149| r2149_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2149| v2149_2(void) = Call[VoidFunc] : func:r2149_1 +# 2149| m2149_3(unknown) = ^CallSideEffect : ~m2148_4 +# 2149| m2149_4(unknown) = Chi : total:m2148_4, partial:m2149_3 +# 2150| r2150_1(glval<unknown>) = FunctionAddress[exit] : +# 2150| r2150_2(int) = Constant[3] : +# 2150| v2150_3(void) = Call[exit] : func:r2150_1, 0:r2150_2 +# 2150| m2150_4(unknown) = ^CallSideEffect : ~m2149_4 +# 2150| m2150_5(unknown) = Chi : total:m2149_4, partial:m2150_4 +# 2148| v2148_5(void) = Unreached : + +# 2153| int TransNonExit() +# 2153| Block 0 +# 2153| v2153_1(void) = EnterFunction : +# 2153| m2153_2(unknown) = AliasedDefinition : +# 2153| m2153_3(unknown) = InitializeNonLocal : +# 2153| m2153_4(unknown) = Chi : total:m2153_2, partial:m2153_3 +# 2154| r2154_1(glval<int>) = VariableAddress[x] : +# 2154| r2154_2(glval<unknown>) = FunctionAddress[Add] : +# 2154| r2154_3(int) = Constant[3] : +# 2154| r2154_4(int) = Constant[4] : +# 2154| r2154_5(int) = Call[Add] : func:r2154_2, 0:r2154_3, 1:r2154_4 +# 2154| m2154_6(unknown) = ^CallSideEffect : ~m2153_4 +# 2154| m2154_7(unknown) = Chi : total:m2153_4, partial:m2154_6 +# 2154| m2154_8(int) = Store[x] : &:r2154_1, r2154_5 +# 2155| r2155_1(glval<int>) = VariableAddress[x] : +# 2155| r2155_2(int) = Load[x] : &:r2155_1, m2154_8 +# 2155| r2155_3(int) = Constant[7] : +# 2155| r2155_4(bool) = CompareEQ : r2155_2, r2155_3 +# 2155| v2155_5(void) = ConditionalBranch : r2155_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2142| Block 1 -# 2142| r2142_1(glval<unknown>) = FunctionAddress[CallsNonExit] : -# 2142| v2142_2(void) = Call[CallsNonExit] : func:r2142_1 -# 2139| v2139_5(void) = Unreached : - -# 2143| Block 2 -# 2143| r2143_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2143| v2143_2(void) = Call[VoidFunc] : func:r2143_1 -# 2143| m2143_3(unknown) = ^CallSideEffect : ~m2140_7 -# 2143| m2143_4(unknown) = Chi : total:m2140_7, partial:m2143_3 -# 2144| r2144_1(glval<int>) = VariableAddress[#return] : -# 2144| r2144_2(glval<int>) = VariableAddress[x] : -# 2144| r2144_3(int) = Load[x] : &:r2144_2, m2140_8 -# 2144| m2144_4(int) = Store[#return] : &:r2144_1, r2144_3 -# 2139| r2139_6(glval<int>) = VariableAddress[#return] : -# 2139| v2139_7(void) = ReturnValue : &:r2139_6, m2144_4 -# 2139| v2139_8(void) = AliasedUse : ~m2143_4 -# 2139| v2139_9(void) = ExitFunction : - -# 2147| void newArrayCorrectType(size_t) -# 2147| Block 0 -# 2147| v2147_1(void) = EnterFunction : -# 2147| m2147_2(unknown) = AliasedDefinition : -# 2147| m2147_3(unknown) = InitializeNonLocal : -# 2147| m2147_4(unknown) = Chi : total:m2147_2, partial:m2147_3 -# 2147| r2147_5(glval<unsigned long>) = VariableAddress[n] : -# 2147| m2147_6(unsigned long) = InitializeParameter[n] : &:r2147_5 -# 2148| r2148_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2148| r2148_2(glval<unsigned long>) = VariableAddress[n] : -# 2148| r2148_3(unsigned long) = Load[n] : &:r2148_2, m2147_6 -# 2148| r2148_4(unsigned long) = Constant[4] : -# 2148| r2148_5(unsigned long) = Mul : r2148_3, r2148_4 -# 2148| r2148_6(void *) = Call[operator new[]] : func:r2148_1, 0:r2148_5 -# 2148| m2148_7(unknown) = ^CallSideEffect : ~m2147_4 -# 2148| m2148_8(unknown) = Chi : total:m2147_4, partial:m2148_7 -# 2148| m2148_9(unknown) = ^InitializeDynamicAllocation : &:r2148_6 -# 2148| r2148_10(int *) = Convert : r2148_6 -# 2149| r2149_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2149| r2149_2(glval<unsigned long>) = VariableAddress[n] : -# 2149| r2149_3(unsigned long) = Load[n] : &:r2149_2, m2147_6 -# 2149| r2149_4(unsigned long) = Constant[4] : -# 2149| r2149_5(unsigned long) = Mul : r2149_3, r2149_4 -# 2149| r2149_6(float) = Constant[1.0] : -# 2149| r2149_7(void *) = Call[operator new[]] : func:r2149_1, 0:r2149_5, 1:r2149_6 -# 2149| m2149_8(unknown) = ^CallSideEffect : ~m2148_8 -# 2149| m2149_9(unknown) = Chi : total:m2148_8, partial:m2149_8 -# 2149| m2149_10(unknown) = ^InitializeDynamicAllocation : &:r2149_7 -# 2149| r2149_11(int *) = Convert : r2149_7 -# 2150| r2150_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2150| r2150_2(glval<unsigned long>) = VariableAddress[n] : -# 2150| r2150_3(unsigned long) = Load[n] : &:r2150_2, m2147_6 -# 2150| r2150_4(unsigned long) = Constant[8] : -# 2150| r2150_5(unsigned long) = Mul : r2150_3, r2150_4 -# 2150| r2150_6(void *) = Call[operator new[]] : func:r2150_1, 0:r2150_5 -# 2150| m2150_7(unknown) = ^CallSideEffect : ~m2149_9 -# 2150| m2150_8(unknown) = Chi : total:m2149_9, partial:m2150_7 -# 2150| m2150_9(unknown) = ^InitializeDynamicAllocation : &:r2150_6 -# 2150| r2150_10(String *) = Convert : r2150_6 -# 2151| r2151_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2151| r2151_2(glval<unsigned long>) = VariableAddress[n] : -# 2151| r2151_3(unsigned long) = Load[n] : &:r2151_2, m2147_6 -# 2151| r2151_4(unsigned long) = Constant[256] : -# 2151| r2151_5(unsigned long) = Mul : r2151_3, r2151_4 -# 2151| r2151_6(align_val_t) = Constant[128] : -# 2151| r2151_7(void *) = Call[operator new[]] : func:r2151_1, 0:r2151_5, 1:r2151_6 -# 2151| m2151_8(unknown) = ^CallSideEffect : ~m2150_8 -# 2151| m2151_9(unknown) = Chi : total:m2150_8, partial:m2151_8 -# 2151| m2151_10(unknown) = ^InitializeDynamicAllocation : &:r2151_7 -# 2151| r2151_11(Overaligned *) = Convert : r2151_7 -# 2152| r2152_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2152| r2152_2(glval<unsigned long>) = VariableAddress[n] : -# 2152| r2152_3(unsigned long) = Load[n] : &:r2152_2, m2147_6 -# 2152| r2152_4(unsigned long) = Constant[1] : -# 2152| r2152_5(unsigned long) = Mul : r2152_3, r2152_4 -# 2152| r2152_6(void *) = Call[operator new[]] : func:r2152_1, 0:r2152_5 -# 2152| m2152_7(unknown) = ^CallSideEffect : ~m2151_9 -# 2152| m2152_8(unknown) = Chi : total:m2151_9, partial:m2152_7 -# 2152| m2152_9(unknown) = ^InitializeDynamicAllocation : &:r2152_6 -# 2152| r2152_10(DefaultCtorWithDefaultParam *) = Convert : r2152_6 -# 2153| r2153_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2153| r2153_2(glval<unsigned long>) = VariableAddress[n] : -# 2153| r2153_3(unsigned long) = Load[n] : &:r2153_2, m2147_6 -# 2153| r2153_4(unsigned long) = Constant[4] : -# 2153| r2153_5(unsigned long) = Mul : r2153_3, r2153_4 -# 2153| r2153_6(void *) = Call[operator new[]] : func:r2153_1, 0:r2153_5 -# 2153| m2153_7(unknown) = ^CallSideEffect : ~m2152_8 -# 2153| m2153_8(unknown) = Chi : total:m2152_8, partial:m2153_7 -# 2153| m2153_9(unknown) = ^InitializeDynamicAllocation : &:r2153_6 -# 2153| r2153_10(int *) = Convert : r2153_6 -# 2154| v2154_1(void) = NoOp : -# 2147| v2147_7(void) = ReturnVoid : -# 2147| v2147_8(void) = AliasedUse : ~m2153_8 -# 2147| v2147_9(void) = ExitFunction : - -# 2158| char* test_strtod(char*) -# 2158| Block 0 -# 2158| v2158_1(void) = EnterFunction : -# 2158| m2158_2(unknown) = AliasedDefinition : -# 2158| m2158_3(unknown) = InitializeNonLocal : -# 2158| m2158_4(unknown) = Chi : total:m2158_2, partial:m2158_3 -# 2158| r2158_5(glval<char *>) = VariableAddress[s] : -# 2158| m2158_6(char *) = InitializeParameter[s] : &:r2158_5 -# 2158| r2158_7(char *) = Load[s] : &:r2158_5, m2158_6 -# 2158| m2158_8(unknown) = InitializeIndirection[s] : &:r2158_7 -# 2159| r2159_1(glval<char *>) = VariableAddress[end] : -# 2159| m2159_2(char *) = Uninitialized[end] : &:r2159_1 -# 2160| r2160_1(glval<double>) = VariableAddress[d] : -# 2160| r2160_2(glval<unknown>) = FunctionAddress[strtod] : -# 2160| r2160_3(glval<char *>) = VariableAddress[s] : -# 2160| r2160_4(char *) = Load[s] : &:r2160_3, m2158_6 -# 2160| r2160_5(char *) = Convert : r2160_4 -# 2160| r2160_6(glval<char *>) = VariableAddress[end] : -# 2160| r2160_7(char **) = CopyValue : r2160_6 -# 2160| r2160_8(double) = Call[strtod] : func:r2160_2, 0:r2160_5, 1:r2160_7 -# 2160| v2160_9(void) = ^BufferReadSideEffect[0] : &:r2160_5, ~m2158_8 -# 2160| m2160_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2160_7 -# 2160| m2160_11(char *) = Chi : total:m2159_2, partial:m2160_10 -# 2160| m2160_12(double) = Store[d] : &:r2160_1, r2160_8 -# 2161| r2161_1(glval<char *>) = VariableAddress[#return] : -# 2161| r2161_2(glval<char *>) = VariableAddress[end] : -# 2161| r2161_3(char *) = Load[end] : &:r2161_2, m2160_11 -# 2161| m2161_4(char *) = Store[#return] : &:r2161_1, r2161_3 -# 2158| v2158_9(void) = ReturnIndirection[s] : &:r2158_7, m2158_8 -# 2158| r2158_10(glval<char *>) = VariableAddress[#return] : -# 2158| v2158_11(void) = ReturnValue : &:r2158_10, m2161_4 -# 2158| v2158_12(void) = AliasedUse : m2158_3 -# 2158| v2158_13(void) = ExitFunction : - -# 2168| void call_as_child_of_ConditionDeclExpr() -# 2168| Block 0 -# 2168| v2168_1(void) = EnterFunction : -# 2168| m2168_2(unknown) = AliasedDefinition : -# 2168| m2168_3(unknown) = InitializeNonLocal : -# 2168| m2168_4(unknown) = Chi : total:m2168_2, partial:m2168_3 -# 2169| r2169_1(glval<HasOperatorBool>) = VariableAddress[b] : -# 2169| r2169_2(HasOperatorBool) = Constant[0] : -# 2169| m2169_3(HasOperatorBool) = Store[b] : &:r2169_1, r2169_2 -# 2169| r2169_4(glval<HasOperatorBool>) = VariableAddress[b] : -# 2169| r2169_5(glval<unknown>) = FunctionAddress[operator bool] : -# 2169| r2169_6(bool) = Call[operator bool] : func:r2169_5, this:r2169_4 -# 2169| m2169_7(unknown) = ^CallSideEffect : ~m2168_4 -# 2169| m2169_8(unknown) = Chi : total:m2168_4, partial:m2169_7 -# 2169| v2169_9(void) = ^IndirectReadSideEffect[-1] : &:r2169_4, m2169_3 -# 2169| m2169_10(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2169_4 -# 2169| m2169_11(HasOperatorBool) = Chi : total:m2169_3, partial:m2169_10 -# 2169| r2169_12(bool) = CopyValue : r2169_6 -# 2169| v2169_13(void) = ConditionalBranch : r2169_12 +# 2156| Block 1 +# 2156| r2156_1(glval<unknown>) = FunctionAddress[CallsNonExit] : +# 2156| v2156_2(void) = Call[CallsNonExit] : func:r2156_1 +# 2153| v2153_5(void) = Unreached : + +# 2157| Block 2 +# 2157| r2157_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2157| v2157_2(void) = Call[VoidFunc] : func:r2157_1 +# 2157| m2157_3(unknown) = ^CallSideEffect : ~m2154_7 +# 2157| m2157_4(unknown) = Chi : total:m2154_7, partial:m2157_3 +# 2158| r2158_1(glval<int>) = VariableAddress[#return] : +# 2158| r2158_2(glval<int>) = VariableAddress[x] : +# 2158| r2158_3(int) = Load[x] : &:r2158_2, m2154_8 +# 2158| m2158_4(int) = Store[#return] : &:r2158_1, r2158_3 +# 2153| r2153_6(glval<int>) = VariableAddress[#return] : +# 2153| v2153_7(void) = ReturnValue : &:r2153_6, m2158_4 +# 2153| v2153_8(void) = AliasedUse : ~m2157_4 +# 2153| v2153_9(void) = ExitFunction : + +# 2161| void newArrayCorrectType(size_t) +# 2161| Block 0 +# 2161| v2161_1(void) = EnterFunction : +# 2161| m2161_2(unknown) = AliasedDefinition : +# 2161| m2161_3(unknown) = InitializeNonLocal : +# 2161| m2161_4(unknown) = Chi : total:m2161_2, partial:m2161_3 +# 2161| r2161_5(glval<unsigned long>) = VariableAddress[n] : +# 2161| m2161_6(unsigned long) = InitializeParameter[n] : &:r2161_5 +# 2162| r2162_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2162| r2162_2(glval<unsigned long>) = VariableAddress[n] : +# 2162| r2162_3(unsigned long) = Load[n] : &:r2162_2, m2161_6 +# 2162| r2162_4(unsigned long) = Constant[4] : +# 2162| r2162_5(unsigned long) = Mul : r2162_3, r2162_4 +# 2162| r2162_6(void *) = Call[operator new[]] : func:r2162_1, 0:r2162_5 +# 2162| m2162_7(unknown) = ^CallSideEffect : ~m2161_4 +# 2162| m2162_8(unknown) = Chi : total:m2161_4, partial:m2162_7 +# 2162| m2162_9(unknown) = ^InitializeDynamicAllocation : &:r2162_6 +# 2162| r2162_10(int *) = Convert : r2162_6 +# 2163| r2163_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2163| r2163_2(glval<unsigned long>) = VariableAddress[n] : +# 2163| r2163_3(unsigned long) = Load[n] : &:r2163_2, m2161_6 +# 2163| r2163_4(unsigned long) = Constant[4] : +# 2163| r2163_5(unsigned long) = Mul : r2163_3, r2163_4 +# 2163| r2163_6(float) = Constant[1.0] : +# 2163| r2163_7(void *) = Call[operator new[]] : func:r2163_1, 0:r2163_5, 1:r2163_6 +# 2163| m2163_8(unknown) = ^CallSideEffect : ~m2162_8 +# 2163| m2163_9(unknown) = Chi : total:m2162_8, partial:m2163_8 +# 2163| m2163_10(unknown) = ^InitializeDynamicAllocation : &:r2163_7 +# 2163| r2163_11(int *) = Convert : r2163_7 +# 2164| r2164_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2164| r2164_2(glval<unsigned long>) = VariableAddress[n] : +# 2164| r2164_3(unsigned long) = Load[n] : &:r2164_2, m2161_6 +# 2164| r2164_4(unsigned long) = Constant[8] : +# 2164| r2164_5(unsigned long) = Mul : r2164_3, r2164_4 +# 2164| r2164_6(void *) = Call[operator new[]] : func:r2164_1, 0:r2164_5 +# 2164| m2164_7(unknown) = ^CallSideEffect : ~m2163_9 +# 2164| m2164_8(unknown) = Chi : total:m2163_9, partial:m2164_7 +# 2164| m2164_9(unknown) = ^InitializeDynamicAllocation : &:r2164_6 +# 2164| r2164_10(String *) = Convert : r2164_6 +# 2165| r2165_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2165| r2165_2(glval<unsigned long>) = VariableAddress[n] : +# 2165| r2165_3(unsigned long) = Load[n] : &:r2165_2, m2161_6 +# 2165| r2165_4(unsigned long) = Constant[256] : +# 2165| r2165_5(unsigned long) = Mul : r2165_3, r2165_4 +# 2165| r2165_6(align_val_t) = Constant[128] : +# 2165| r2165_7(void *) = Call[operator new[]] : func:r2165_1, 0:r2165_5, 1:r2165_6 +# 2165| m2165_8(unknown) = ^CallSideEffect : ~m2164_8 +# 2165| m2165_9(unknown) = Chi : total:m2164_8, partial:m2165_8 +# 2165| m2165_10(unknown) = ^InitializeDynamicAllocation : &:r2165_7 +# 2165| r2165_11(Overaligned *) = Convert : r2165_7 +# 2166| r2166_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2166| r2166_2(glval<unsigned long>) = VariableAddress[n] : +# 2166| r2166_3(unsigned long) = Load[n] : &:r2166_2, m2161_6 +# 2166| r2166_4(unsigned long) = Constant[1] : +# 2166| r2166_5(unsigned long) = Mul : r2166_3, r2166_4 +# 2166| r2166_6(void *) = Call[operator new[]] : func:r2166_1, 0:r2166_5 +# 2166| m2166_7(unknown) = ^CallSideEffect : ~m2165_9 +# 2166| m2166_8(unknown) = Chi : total:m2165_9, partial:m2166_7 +# 2166| m2166_9(unknown) = ^InitializeDynamicAllocation : &:r2166_6 +# 2166| r2166_10(DefaultCtorWithDefaultParam *) = Convert : r2166_6 +# 2167| r2167_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2167| r2167_2(glval<unsigned long>) = VariableAddress[n] : +# 2167| r2167_3(unsigned long) = Load[n] : &:r2167_2, m2161_6 +# 2167| r2167_4(unsigned long) = Constant[4] : +# 2167| r2167_5(unsigned long) = Mul : r2167_3, r2167_4 +# 2167| r2167_6(void *) = Call[operator new[]] : func:r2167_1, 0:r2167_5 +# 2167| m2167_7(unknown) = ^CallSideEffect : ~m2166_8 +# 2167| m2167_8(unknown) = Chi : total:m2166_8, partial:m2167_7 +# 2167| m2167_9(unknown) = ^InitializeDynamicAllocation : &:r2167_6 +# 2167| r2167_10(int *) = Convert : r2167_6 +# 2168| v2168_1(void) = NoOp : +# 2161| v2161_7(void) = ReturnVoid : +# 2161| v2161_8(void) = AliasedUse : ~m2167_8 +# 2161| v2161_9(void) = ExitFunction : + +# 2172| char* test_strtod(char*) +# 2172| Block 0 +# 2172| v2172_1(void) = EnterFunction : +# 2172| m2172_2(unknown) = AliasedDefinition : +# 2172| m2172_3(unknown) = InitializeNonLocal : +# 2172| m2172_4(unknown) = Chi : total:m2172_2, partial:m2172_3 +# 2172| r2172_5(glval<char *>) = VariableAddress[s] : +# 2172| m2172_6(char *) = InitializeParameter[s] : &:r2172_5 +# 2172| r2172_7(char *) = Load[s] : &:r2172_5, m2172_6 +# 2172| m2172_8(unknown) = InitializeIndirection[s] : &:r2172_7 +# 2173| r2173_1(glval<char *>) = VariableAddress[end] : +# 2173| m2173_2(char *) = Uninitialized[end] : &:r2173_1 +# 2174| r2174_1(glval<double>) = VariableAddress[d] : +# 2174| r2174_2(glval<unknown>) = FunctionAddress[strtod] : +# 2174| r2174_3(glval<char *>) = VariableAddress[s] : +# 2174| r2174_4(char *) = Load[s] : &:r2174_3, m2172_6 +# 2174| r2174_5(char *) = Convert : r2174_4 +# 2174| r2174_6(glval<char *>) = VariableAddress[end] : +# 2174| r2174_7(char **) = CopyValue : r2174_6 +# 2174| r2174_8(double) = Call[strtod] : func:r2174_2, 0:r2174_5, 1:r2174_7 +# 2174| v2174_9(void) = ^BufferReadSideEffect[0] : &:r2174_5, ~m2172_8 +# 2174| m2174_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2174_7 +# 2174| m2174_11(char *) = Chi : total:m2173_2, partial:m2174_10 +# 2174| m2174_12(double) = Store[d] : &:r2174_1, r2174_8 +# 2175| r2175_1(glval<char *>) = VariableAddress[#return] : +# 2175| r2175_2(glval<char *>) = VariableAddress[end] : +# 2175| r2175_3(char *) = Load[end] : &:r2175_2, m2174_11 +# 2175| m2175_4(char *) = Store[#return] : &:r2175_1, r2175_3 +# 2172| v2172_9(void) = ReturnIndirection[s] : &:r2172_7, m2172_8 +# 2172| r2172_10(glval<char *>) = VariableAddress[#return] : +# 2172| v2172_11(void) = ReturnValue : &:r2172_10, m2175_4 +# 2172| v2172_12(void) = AliasedUse : m2172_3 +# 2172| v2172_13(void) = ExitFunction : + +# 2182| void call_as_child_of_ConditionDeclExpr() +# 2182| Block 0 +# 2182| v2182_1(void) = EnterFunction : +# 2182| m2182_2(unknown) = AliasedDefinition : +# 2182| m2182_3(unknown) = InitializeNonLocal : +# 2182| m2182_4(unknown) = Chi : total:m2182_2, partial:m2182_3 +# 2183| r2183_1(glval<HasOperatorBool>) = VariableAddress[b] : +# 2183| r2183_2(HasOperatorBool) = Constant[0] : +# 2183| m2183_3(HasOperatorBool) = Store[b] : &:r2183_1, r2183_2 +# 2183| r2183_4(glval<HasOperatorBool>) = VariableAddress[b] : +# 2183| r2183_5(glval<unknown>) = FunctionAddress[operator bool] : +# 2183| r2183_6(bool) = Call[operator bool] : func:r2183_5, this:r2183_4 +# 2183| m2183_7(unknown) = ^CallSideEffect : ~m2182_4 +# 2183| m2183_8(unknown) = Chi : total:m2182_4, partial:m2183_7 +# 2183| v2183_9(void) = ^IndirectReadSideEffect[-1] : &:r2183_4, m2183_3 +# 2183| m2183_10(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2183_4 +# 2183| m2183_11(HasOperatorBool) = Chi : total:m2183_3, partial:m2183_10 +# 2183| r2183_12(bool) = CopyValue : r2183_6 +# 2183| v2183_13(void) = ConditionalBranch : r2183_12 #-----| False -> Block 2 #-----| True -> Block 1 -# 2169| Block 1 -# 2169| v2169_14(void) = NoOp : +# 2183| Block 1 +# 2183| v2183_14(void) = NoOp : #-----| Goto -> Block 2 -# 2170| Block 2 -# 2170| v2170_1(void) = NoOp : -# 2168| v2168_5(void) = ReturnVoid : -# 2168| v2168_6(void) = AliasedUse : ~m2169_8 -# 2168| v2168_7(void) = ExitFunction : - -# 2172| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2172| Block 0 -# 2172| v2172_1(void) = EnterFunction : -# 2172| m2172_2(unknown) = AliasedDefinition : -# 2172| m2172_3(unknown) = InitializeNonLocal : -# 2172| m2172_4(unknown) = Chi : total:m2172_2, partial:m2172_3 -# 2172| r2172_5(glval<unknown>) = VariableAddress[#this] : -# 2172| m2172_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2172_5 -# 2172| r2172_7(glval<ClassWithDestructor>) = Load[#this] : &:r2172_5, m2172_6 -# 2172| m2172_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2172_7 +# 2184| Block 2 +# 2184| v2184_1(void) = NoOp : +# 2182| v2182_5(void) = ReturnVoid : +# 2182| v2182_6(void) = AliasedUse : ~m2183_8 +# 2182| v2182_7(void) = ExitFunction : + +# 2186| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2186| Block 0 +# 2186| v2186_1(void) = EnterFunction : +# 2186| m2186_2(unknown) = AliasedDefinition : +# 2186| m2186_3(unknown) = InitializeNonLocal : +# 2186| m2186_4(unknown) = Chi : total:m2186_2, partial:m2186_3 +# 2186| r2186_5(glval<unknown>) = VariableAddress[#this] : +# 2186| m2186_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2186_5 +# 2186| r2186_7(glval<ClassWithDestructor>) = Load[#this] : &:r2186_5, m2186_6 +# 2186| m2186_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2186_7 #-----| r0_1(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2172| r2172_9(glval<char *>) = FieldAddress[x] : m2172_6 -# 2172| r2172_10(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : -# 2172| r2172_11(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2172_10, m0_2 -# 2172| r2172_12(glval<ClassWithDestructor>) = CopyValue : r2172_11 -# 2172| r2172_13(glval<char *>) = FieldAddress[x] : r2172_12 -# 2172| r2172_14(char *) = Load[?] : &:r2172_13, ~m0_4 -# 2172| m2172_15(char *) = Store[?] : &:r2172_9, r2172_14 -# 2172| m2172_16(unknown) = Chi : total:m2172_8, partial:m2172_15 -# 2172| v2172_17(void) = NoOp : -# 2172| v2172_18(void) = ReturnIndirection[#this] : &:r2172_7, m2172_16 +# 2186| r2186_9(glval<char *>) = FieldAddress[x] : m2186_6 +# 2186| r2186_10(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : +# 2186| r2186_11(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2186_10, m0_2 +# 2186| r2186_12(glval<ClassWithDestructor>) = CopyValue : r2186_11 +# 2186| r2186_13(glval<char *>) = FieldAddress[x] : r2186_12 +# 2186| r2186_14(char *) = Load[?] : &:r2186_13, ~m0_4 +# 2186| m2186_15(char *) = Store[?] : &:r2186_9, r2186_14 +# 2186| m2186_16(unknown) = Chi : total:m2186_8, partial:m2186_15 +# 2186| v2186_17(void) = NoOp : +# 2186| v2186_18(void) = ReturnIndirection[#this] : &:r2186_7, m2186_16 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2172| v2172_19(void) = ReturnVoid : -# 2172| v2172_20(void) = AliasedUse : m2172_3 -# 2172| v2172_21(void) = ExitFunction : - -# 2175| void ClassWithDestructor::ClassWithDestructor() -# 2175| Block 0 -# 2175| v2175_1(void) = EnterFunction : -# 2175| m2175_2(unknown) = AliasedDefinition : -# 2175| m2175_3(unknown) = InitializeNonLocal : -# 2175| m2175_4(unknown) = Chi : total:m2175_2, partial:m2175_3 -# 2175| r2175_5(glval<unknown>) = VariableAddress[#this] : -# 2175| m2175_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2175_5 -# 2175| r2175_7(glval<ClassWithDestructor>) = Load[#this] : &:r2175_5, m2175_6 -# 2175| m2175_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2175_7 -# 2175| r2175_9(glval<unknown>) = FunctionAddress[operator new] : -# 2175| r2175_10(unsigned long) = Constant[1] : -# 2175| r2175_11(void *) = Call[operator new] : func:r2175_9, 0:r2175_10 -# 2175| m2175_12(unknown) = ^CallSideEffect : ~m2175_4 -# 2175| m2175_13(unknown) = Chi : total:m2175_4, partial:m2175_12 -# 2175| m2175_14(unknown) = ^InitializeDynamicAllocation : &:r2175_11 -# 2175| r2175_15(char *) = Convert : r2175_11 -# 2175| r2175_16(glval<unknown>) = VariableAddress[#this] : -# 2175| r2175_17(ClassWithDestructor *) = Load[#this] : &:r2175_16, m2175_6 -# 2175| r2175_18(glval<char *>) = FieldAddress[x] : r2175_17 -# 2175| m2175_19(char *) = Store[?] : &:r2175_18, r2175_15 -# 2175| m2175_20(unknown) = Chi : total:m2175_8, partial:m2175_19 -# 2175| v2175_21(void) = NoOp : -# 2175| v2175_22(void) = ReturnIndirection[#this] : &:r2175_7, m2175_20 -# 2175| v2175_23(void) = ReturnVoid : -# 2175| v2175_24(void) = AliasedUse : ~m2175_13 -# 2175| v2175_25(void) = ExitFunction : - -# 2176| void ClassWithDestructor::~ClassWithDestructor() -# 2176| Block 0 -# 2176| v2176_1(void) = EnterFunction : -# 2176| m2176_2(unknown) = AliasedDefinition : -# 2176| m2176_3(unknown) = InitializeNonLocal : -# 2176| m2176_4(unknown) = Chi : total:m2176_2, partial:m2176_3 -# 2176| r2176_5(glval<unknown>) = VariableAddress[#this] : -# 2176| m2176_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2176_5 -# 2176| r2176_7(glval<ClassWithDestructor>) = Load[#this] : &:r2176_5, m2176_6 -# 2176| m2176_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2176_7 -# 2176| r2176_9(glval<unknown>) = FunctionAddress[operator delete] : -# 2176| r2176_10(glval<unknown>) = VariableAddress[#this] : -# 2176| r2176_11(ClassWithDestructor *) = Load[#this] : &:r2176_10, m2176_6 -# 2176| r2176_12(glval<char *>) = FieldAddress[x] : r2176_11 -# 2176| r2176_13(char *) = Load[?] : &:r2176_12, ~m2176_8 -# 2176| v2176_14(void) = Call[operator delete] : func:r2176_9, 0:r2176_13 -# 2176| m2176_15(unknown) = ^CallSideEffect : ~m2176_4 -# 2176| m2176_16(unknown) = Chi : total:m2176_4, partial:m2176_15 -# 2176| v2176_17(void) = NoOp : -# 2176| v2176_18(void) = ReturnIndirection[#this] : &:r2176_7, m2176_8 -# 2176| v2176_19(void) = ReturnVoid : -# 2176| v2176_20(void) = AliasedUse : ~m2176_16 -# 2176| v2176_21(void) = ExitFunction : - -# 2178| void ClassWithDestructor::set_x(char) -# 2178| Block 0 -# 2178| v2178_1(void) = EnterFunction : -# 2178| m2178_2(unknown) = AliasedDefinition : -# 2178| m2178_3(unknown) = InitializeNonLocal : -# 2178| m2178_4(unknown) = Chi : total:m2178_2, partial:m2178_3 -# 2178| r2178_5(glval<unknown>) = VariableAddress[#this] : -# 2178| m2178_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2178_5 -# 2178| r2178_7(glval<ClassWithDestructor>) = Load[#this] : &:r2178_5, m2178_6 -# 2178| m2178_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2178_7 -# 2178| r2178_9(glval<char>) = VariableAddress[y] : -# 2178| m2178_10(char) = InitializeParameter[y] : &:r2178_9 -# 2178| r2178_11(glval<char>) = VariableAddress[y] : -# 2178| r2178_12(char) = Load[y] : &:r2178_11, m2178_10 -# 2178| r2178_13(glval<unknown>) = VariableAddress[#this] : -# 2178| r2178_14(ClassWithDestructor *) = Load[#this] : &:r2178_13, m2178_6 -# 2178| r2178_15(glval<char *>) = FieldAddress[x] : r2178_14 -# 2178| r2178_16(char *) = Load[?] : &:r2178_15, ~m2178_8 -# 2178| r2178_17(glval<char>) = CopyValue : r2178_16 -# 2178| m2178_18(char) = Store[?] : &:r2178_17, r2178_12 -# 2178| m2178_19(unknown) = Chi : total:m2178_4, partial:m2178_18 -# 2178| v2178_20(void) = NoOp : -# 2178| v2178_21(void) = ReturnIndirection[#this] : &:r2178_7, m2178_8 -# 2178| v2178_22(void) = ReturnVoid : -# 2178| v2178_23(void) = AliasedUse : ~m2178_19 -# 2178| v2178_24(void) = ExitFunction : - -# 2179| char ClassWithDestructor::get_x() -# 2179| Block 0 -# 2179| v2179_1(void) = EnterFunction : -# 2179| m2179_2(unknown) = AliasedDefinition : -# 2179| m2179_3(unknown) = InitializeNonLocal : -# 2179| m2179_4(unknown) = Chi : total:m2179_2, partial:m2179_3 -# 2179| r2179_5(glval<unknown>) = VariableAddress[#this] : -# 2179| m2179_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2179_5 -# 2179| r2179_7(glval<ClassWithDestructor>) = Load[#this] : &:r2179_5, m2179_6 -# 2179| m2179_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2179_7 -# 2179| r2179_9(glval<char>) = VariableAddress[#return] : -# 2179| r2179_10(glval<unknown>) = VariableAddress[#this] : -# 2179| r2179_11(ClassWithDestructor *) = Load[#this] : &:r2179_10, m2179_6 -# 2179| r2179_12(glval<char *>) = FieldAddress[x] : r2179_11 -# 2179| r2179_13(char *) = Load[?] : &:r2179_12, ~m2179_8 -# 2179| r2179_14(char) = Load[?] : &:r2179_13, ~m2179_4 -# 2179| m2179_15(char) = Store[#return] : &:r2179_9, r2179_14 -# 2179| v2179_16(void) = ReturnIndirection[#this] : &:r2179_7, m2179_8 -# 2179| r2179_17(glval<char>) = VariableAddress[#return] : -# 2179| v2179_18(void) = ReturnValue : &:r2179_17, m2179_15 -# 2179| v2179_19(void) = AliasedUse : m2179_3 -# 2179| v2179_20(void) = ExitFunction : - -# 2182| bool initialization_with_destructor_bool -# 2182| Block 0 -# 2182| v2182_1(void) = EnterFunction : -# 2182| m2182_2(unknown) = AliasedDefinition : -# 2182| r2182_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : -# 2182| r2182_4(bool) = Constant[1] : -# 2182| m2182_5(bool) = Store[initialization_with_destructor_bool] : &:r2182_3, r2182_4 -# 2182| m2182_6(unknown) = Chi : total:m2182_2, partial:m2182_5 -# 2182| v2182_7(void) = ReturnVoid : -# 2182| v2182_8(void) = AliasedUse : ~m2182_6 -# 2182| v2182_9(void) = ExitFunction : - -# 2184| void initialization_with_destructor(bool, char) -# 2184| Block 0 -# 2184| v2184_1(void) = EnterFunction : -# 2184| m2184_2(unknown) = AliasedDefinition : -# 2184| m2184_3(unknown) = InitializeNonLocal : -# 2184| m2184_4(unknown) = Chi : total:m2184_2, partial:m2184_3 -# 2184| r2184_5(glval<bool>) = VariableAddress[b] : -# 2184| m2184_6(bool) = InitializeParameter[b] : &:r2184_5 -# 2184| r2184_7(glval<char>) = VariableAddress[c] : -# 2184| m2184_8(char) = InitializeParameter[c] : &:r2184_7 -# 2185| r2185_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2185| m2185_2(ClassWithDestructor) = Uninitialized[x] : &:r2185_1 -# 2185| r2185_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2185| v2185_4(void) = Call[ClassWithDestructor] : func:r2185_3, this:r2185_1 -# 2185| m2185_5(unknown) = ^CallSideEffect : ~m2184_4 -# 2185| m2185_6(unknown) = Chi : total:m2184_4, partial:m2185_5 -# 2185| m2185_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 -# 2185| m2185_8(ClassWithDestructor) = Chi : total:m2185_2, partial:m2185_7 -# 2185| r2185_9(glval<bool>) = VariableAddress[b] : -# 2185| r2185_10(bool) = Load[b] : &:r2185_9, m2184_6 -# 2185| v2185_11(void) = ConditionalBranch : r2185_10 +# 2186| v2186_19(void) = ReturnVoid : +# 2186| v2186_20(void) = AliasedUse : m2186_3 +# 2186| v2186_21(void) = ExitFunction : + +# 2189| void ClassWithDestructor::ClassWithDestructor() +# 2189| Block 0 +# 2189| v2189_1(void) = EnterFunction : +# 2189| m2189_2(unknown) = AliasedDefinition : +# 2189| m2189_3(unknown) = InitializeNonLocal : +# 2189| m2189_4(unknown) = Chi : total:m2189_2, partial:m2189_3 +# 2189| r2189_5(glval<unknown>) = VariableAddress[#this] : +# 2189| m2189_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2189_5 +# 2189| r2189_7(glval<ClassWithDestructor>) = Load[#this] : &:r2189_5, m2189_6 +# 2189| m2189_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2189_7 +# 2189| r2189_9(glval<unknown>) = FunctionAddress[operator new] : +# 2189| r2189_10(unsigned long) = Constant[1] : +# 2189| r2189_11(void *) = Call[operator new] : func:r2189_9, 0:r2189_10 +# 2189| m2189_12(unknown) = ^CallSideEffect : ~m2189_4 +# 2189| m2189_13(unknown) = Chi : total:m2189_4, partial:m2189_12 +# 2189| m2189_14(unknown) = ^InitializeDynamicAllocation : &:r2189_11 +# 2189| r2189_15(char *) = Convert : r2189_11 +# 2189| r2189_16(glval<unknown>) = VariableAddress[#this] : +# 2189| r2189_17(ClassWithDestructor *) = Load[#this] : &:r2189_16, m2189_6 +# 2189| r2189_18(glval<char *>) = FieldAddress[x] : r2189_17 +# 2189| m2189_19(char *) = Store[?] : &:r2189_18, r2189_15 +# 2189| m2189_20(unknown) = Chi : total:m2189_8, partial:m2189_19 +# 2189| v2189_21(void) = NoOp : +# 2189| v2189_22(void) = ReturnIndirection[#this] : &:r2189_7, m2189_20 +# 2189| v2189_23(void) = ReturnVoid : +# 2189| v2189_24(void) = AliasedUse : ~m2189_13 +# 2189| v2189_25(void) = ExitFunction : + +# 2190| void ClassWithDestructor::~ClassWithDestructor() +# 2190| Block 0 +# 2190| v2190_1(void) = EnterFunction : +# 2190| m2190_2(unknown) = AliasedDefinition : +# 2190| m2190_3(unknown) = InitializeNonLocal : +# 2190| m2190_4(unknown) = Chi : total:m2190_2, partial:m2190_3 +# 2190| r2190_5(glval<unknown>) = VariableAddress[#this] : +# 2190| m2190_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2190_5 +# 2190| r2190_7(glval<ClassWithDestructor>) = Load[#this] : &:r2190_5, m2190_6 +# 2190| m2190_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2190_7 +# 2190| r2190_9(glval<unknown>) = FunctionAddress[operator delete] : +# 2190| r2190_10(glval<unknown>) = VariableAddress[#this] : +# 2190| r2190_11(ClassWithDestructor *) = Load[#this] : &:r2190_10, m2190_6 +# 2190| r2190_12(glval<char *>) = FieldAddress[x] : r2190_11 +# 2190| r2190_13(char *) = Load[?] : &:r2190_12, ~m2190_8 +# 2190| v2190_14(void) = Call[operator delete] : func:r2190_9, 0:r2190_13 +# 2190| m2190_15(unknown) = ^CallSideEffect : ~m2190_4 +# 2190| m2190_16(unknown) = Chi : total:m2190_4, partial:m2190_15 +# 2190| v2190_17(void) = NoOp : +# 2190| v2190_18(void) = ReturnIndirection[#this] : &:r2190_7, m2190_8 +# 2190| v2190_19(void) = ReturnVoid : +# 2190| v2190_20(void) = AliasedUse : ~m2190_16 +# 2190| v2190_21(void) = ExitFunction : + +# 2192| void ClassWithDestructor::set_x(char) +# 2192| Block 0 +# 2192| v2192_1(void) = EnterFunction : +# 2192| m2192_2(unknown) = AliasedDefinition : +# 2192| m2192_3(unknown) = InitializeNonLocal : +# 2192| m2192_4(unknown) = Chi : total:m2192_2, partial:m2192_3 +# 2192| r2192_5(glval<unknown>) = VariableAddress[#this] : +# 2192| m2192_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2192_5 +# 2192| r2192_7(glval<ClassWithDestructor>) = Load[#this] : &:r2192_5, m2192_6 +# 2192| m2192_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2192_7 +# 2192| r2192_9(glval<char>) = VariableAddress[y] : +# 2192| m2192_10(char) = InitializeParameter[y] : &:r2192_9 +# 2192| r2192_11(glval<char>) = VariableAddress[y] : +# 2192| r2192_12(char) = Load[y] : &:r2192_11, m2192_10 +# 2192| r2192_13(glval<unknown>) = VariableAddress[#this] : +# 2192| r2192_14(ClassWithDestructor *) = Load[#this] : &:r2192_13, m2192_6 +# 2192| r2192_15(glval<char *>) = FieldAddress[x] : r2192_14 +# 2192| r2192_16(char *) = Load[?] : &:r2192_15, ~m2192_8 +# 2192| r2192_17(glval<char>) = CopyValue : r2192_16 +# 2192| m2192_18(char) = Store[?] : &:r2192_17, r2192_12 +# 2192| m2192_19(unknown) = Chi : total:m2192_4, partial:m2192_18 +# 2192| v2192_20(void) = NoOp : +# 2192| v2192_21(void) = ReturnIndirection[#this] : &:r2192_7, m2192_8 +# 2192| v2192_22(void) = ReturnVoid : +# 2192| v2192_23(void) = AliasedUse : ~m2192_19 +# 2192| v2192_24(void) = ExitFunction : + +# 2193| char ClassWithDestructor::get_x() +# 2193| Block 0 +# 2193| v2193_1(void) = EnterFunction : +# 2193| m2193_2(unknown) = AliasedDefinition : +# 2193| m2193_3(unknown) = InitializeNonLocal : +# 2193| m2193_4(unknown) = Chi : total:m2193_2, partial:m2193_3 +# 2193| r2193_5(glval<unknown>) = VariableAddress[#this] : +# 2193| m2193_6(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2193_5 +# 2193| r2193_7(glval<ClassWithDestructor>) = Load[#this] : &:r2193_5, m2193_6 +# 2193| m2193_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2193_7 +# 2193| r2193_9(glval<char>) = VariableAddress[#return] : +# 2193| r2193_10(glval<unknown>) = VariableAddress[#this] : +# 2193| r2193_11(ClassWithDestructor *) = Load[#this] : &:r2193_10, m2193_6 +# 2193| r2193_12(glval<char *>) = FieldAddress[x] : r2193_11 +# 2193| r2193_13(char *) = Load[?] : &:r2193_12, ~m2193_8 +# 2193| r2193_14(char) = Load[?] : &:r2193_13, ~m2193_4 +# 2193| m2193_15(char) = Store[#return] : &:r2193_9, r2193_14 +# 2193| v2193_16(void) = ReturnIndirection[#this] : &:r2193_7, m2193_8 +# 2193| r2193_17(glval<char>) = VariableAddress[#return] : +# 2193| v2193_18(void) = ReturnValue : &:r2193_17, m2193_15 +# 2193| v2193_19(void) = AliasedUse : m2193_3 +# 2193| v2193_20(void) = ExitFunction : + +# 2196| bool initialization_with_destructor_bool +# 2196| Block 0 +# 2196| v2196_1(void) = EnterFunction : +# 2196| m2196_2(unknown) = AliasedDefinition : +# 2196| r2196_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : +# 2196| r2196_4(bool) = Constant[1] : +# 2196| m2196_5(bool) = Store[initialization_with_destructor_bool] : &:r2196_3, r2196_4 +# 2196| m2196_6(unknown) = Chi : total:m2196_2, partial:m2196_5 +# 2196| v2196_7(void) = ReturnVoid : +# 2196| v2196_8(void) = AliasedUse : ~m2196_6 +# 2196| v2196_9(void) = ExitFunction : + +# 2198| void initialization_with_destructor(bool, char) +# 2198| Block 0 +# 2198| v2198_1(void) = EnterFunction : +# 2198| m2198_2(unknown) = AliasedDefinition : +# 2198| m2198_3(unknown) = InitializeNonLocal : +# 2198| m2198_4(unknown) = Chi : total:m2198_2, partial:m2198_3 +# 2198| r2198_5(glval<bool>) = VariableAddress[b] : +# 2198| m2198_6(bool) = InitializeParameter[b] : &:r2198_5 +# 2198| r2198_7(glval<char>) = VariableAddress[c] : +# 2198| m2198_8(char) = InitializeParameter[c] : &:r2198_7 +# 2199| r2199_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2199| m2199_2(ClassWithDestructor) = Uninitialized[x] : &:r2199_1 +# 2199| r2199_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2199| v2199_4(void) = Call[ClassWithDestructor] : func:r2199_3, this:r2199_1 +# 2199| m2199_5(unknown) = ^CallSideEffect : ~m2198_4 +# 2199| m2199_6(unknown) = Chi : total:m2198_4, partial:m2199_5 +# 2199| m2199_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2199_1 +# 2199| m2199_8(ClassWithDestructor) = Chi : total:m2199_2, partial:m2199_7 +# 2199| r2199_9(glval<bool>) = VariableAddress[b] : +# 2199| r2199_10(bool) = Load[b] : &:r2199_9, m2198_6 +# 2199| v2199_11(void) = ConditionalBranch : r2199_10 #-----| False -> Block 3 #-----| True -> Block 2 -# 2184| Block 1 -# 2184| m2184_9(unknown) = Phi : from 13:~m2219_5, from 19:~m2219_13, from 23:~m2219_22 -# 2184| v2184_10(void) = ReturnVoid : -# 2184| v2184_11(void) = AliasedUse : ~m2184_9 -# 2184| v2184_12(void) = ExitFunction : - -# 2186| Block 2 -# 2186| r2186_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2186| r2186_2(glval<unknown>) = FunctionAddress[set_x] : -# 2186| r2186_3(char) = Constant[97] : -# 2186| v2186_4(void) = Call[set_x] : func:r2186_2, this:r2186_1, 0:r2186_3 -# 2186| m2186_5(unknown) = ^CallSideEffect : ~m2185_6 -# 2186| m2186_6(unknown) = Chi : total:m2185_6, partial:m2186_5 -# 2186| v2186_7(void) = ^IndirectReadSideEffect[-1] : &:r2186_1, m2185_8 -# 2186| m2186_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 -# 2186| m2186_9(ClassWithDestructor) = Chi : total:m2185_8, partial:m2186_8 -# 2186| r2186_10(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2186| r2186_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2186| v2186_12(void) = Call[~ClassWithDestructor] : func:r2186_11, this:r2186_10 -# 2186| m2186_13(unknown) = ^CallSideEffect : ~m2186_6 -# 2186| m2186_14(unknown) = Chi : total:m2186_6, partial:m2186_13 -# 2186| v2186_15(void) = ^IndirectReadSideEffect[-1] : &:r2186_10, m2186_9 -# 2186| m2186_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_10 -# 2186| m2186_17(ClassWithDestructor) = Chi : total:m2186_9, partial:m2186_16 +# 2198| Block 1 +# 2198| m2198_9(unknown) = Phi : from 13:~m2233_5, from 19:~m2233_13, from 23:~m2233_22 +# 2198| v2198_10(void) = ReturnVoid : +# 2198| v2198_11(void) = AliasedUse : ~m2198_9 +# 2198| v2198_12(void) = ExitFunction : + +# 2200| Block 2 +# 2200| r2200_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2200| r2200_2(glval<unknown>) = FunctionAddress[set_x] : +# 2200| r2200_3(char) = Constant[97] : +# 2200| v2200_4(void) = Call[set_x] : func:r2200_2, this:r2200_1, 0:r2200_3 +# 2200| m2200_5(unknown) = ^CallSideEffect : ~m2199_6 +# 2200| m2200_6(unknown) = Chi : total:m2199_6, partial:m2200_5 +# 2200| v2200_7(void) = ^IndirectReadSideEffect[-1] : &:r2200_1, m2199_8 +# 2200| m2200_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 +# 2200| m2200_9(ClassWithDestructor) = Chi : total:m2199_8, partial:m2200_8 +# 2200| r2200_10(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2200| r2200_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2200| v2200_12(void) = Call[~ClassWithDestructor] : func:r2200_11, this:r2200_10 +# 2200| m2200_13(unknown) = ^CallSideEffect : ~m2200_6 +# 2200| m2200_14(unknown) = Chi : total:m2200_6, partial:m2200_13 +# 2200| v2200_15(void) = ^IndirectReadSideEffect[-1] : &:r2200_10, m2200_9 +# 2200| m2200_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_10 +# 2200| m2200_17(ClassWithDestructor) = Chi : total:m2200_9, partial:m2200_16 #-----| Goto -> Block 3 -# 2188| Block 3 -# 2188| m2188_1(unknown) = Phi : from 0:~m2185_6, from 2:~m2186_14 -# 2188| r2188_2(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2188| m2188_3(ClassWithDestructor) = Uninitialized[x] : &:r2188_2 -# 2188| r2188_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2188| v2188_5(void) = Call[ClassWithDestructor] : func:r2188_4, this:r2188_2 -# 2188| m2188_6(unknown) = ^CallSideEffect : ~m2188_1 -# 2188| m2188_7(unknown) = Chi : total:m2188_1, partial:m2188_6 -# 2188| m2188_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_2 -# 2188| m2188_9(ClassWithDestructor) = Chi : total:m2188_3, partial:m2188_8 -# 2188| r2188_10(bool) = Constant[1] : -# 2188| v2188_11(void) = ConditionalBranch : r2188_10 +# 2202| Block 3 +# 2202| m2202_1(unknown) = Phi : from 0:~m2199_6, from 2:~m2200_14 +# 2202| r2202_2(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2202| m2202_3(ClassWithDestructor) = Uninitialized[x] : &:r2202_2 +# 2202| r2202_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2202| v2202_5(void) = Call[ClassWithDestructor] : func:r2202_4, this:r2202_2 +# 2202| m2202_6(unknown) = ^CallSideEffect : ~m2202_1 +# 2202| m2202_7(unknown) = Chi : total:m2202_1, partial:m2202_6 +# 2202| m2202_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_2 +# 2202| m2202_9(ClassWithDestructor) = Chi : total:m2202_3, partial:m2202_8 +# 2202| r2202_10(bool) = Constant[1] : +# 2202| v2202_11(void) = ConditionalBranch : r2202_10 #-----| False -> Block 24 #-----| True -> Block 4 -# 2189| Block 4 -# 2189| r2189_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2189| r2189_2(glval<unknown>) = FunctionAddress[set_x] : -# 2189| r2189_3(char) = Constant[97] : -# 2189| v2189_4(void) = Call[set_x] : func:r2189_2, this:r2189_1, 0:r2189_3 -# 2189| m2189_5(unknown) = ^CallSideEffect : ~m2188_7 -# 2189| m2189_6(unknown) = Chi : total:m2188_7, partial:m2189_5 -# 2189| v2189_7(void) = ^IndirectReadSideEffect[-1] : &:r2189_1, m2188_9 -# 2189| m2189_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2189_1 -# 2189| m2189_9(ClassWithDestructor) = Chi : total:m2188_9, partial:m2189_8 -# 2191| r2191_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2191| m2191_2(ClassWithDestructor) = Uninitialized[x] : &:r2191_1 -# 2191| r2191_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2191| v2191_4(void) = Call[ClassWithDestructor] : func:r2191_3, this:r2191_1 -# 2191| m2191_5(unknown) = ^CallSideEffect : ~m2189_6 -# 2191| m2191_6(unknown) = Chi : total:m2189_6, partial:m2191_5 -# 2191| m2191_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2191_1 -# 2191| m2191_8(ClassWithDestructor) = Chi : total:m2191_2, partial:m2191_7 -# 2191| r2191_9(glval<char>) = VariableAddress[c] : -# 2191| r2191_10(char) = Load[c] : &:r2191_9, m2184_8 -# 2191| r2191_11(int) = Convert : r2191_10 -# 2191| v2191_12(void) = Switch : r2191_11 +# 2203| Block 4 +# 2203| r2203_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2203| r2203_2(glval<unknown>) = FunctionAddress[set_x] : +# 2203| r2203_3(char) = Constant[97] : +# 2203| v2203_4(void) = Call[set_x] : func:r2203_2, this:r2203_1, 0:r2203_3 +# 2203| m2203_5(unknown) = ^CallSideEffect : ~m2202_7 +# 2203| m2203_6(unknown) = Chi : total:m2202_7, partial:m2203_5 +# 2203| v2203_7(void) = ^IndirectReadSideEffect[-1] : &:r2203_1, m2202_9 +# 2203| m2203_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 +# 2203| m2203_9(ClassWithDestructor) = Chi : total:m2202_9, partial:m2203_8 +# 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2205| m2205_2(ClassWithDestructor) = Uninitialized[x] : &:r2205_1 +# 2205| r2205_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2205| v2205_4(void) = Call[ClassWithDestructor] : func:r2205_3, this:r2205_1 +# 2205| m2205_5(unknown) = ^CallSideEffect : ~m2203_6 +# 2205| m2205_6(unknown) = Chi : total:m2203_6, partial:m2205_5 +# 2205| m2205_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 +# 2205| m2205_8(ClassWithDestructor) = Chi : total:m2205_2, partial:m2205_7 +# 2205| r2205_9(glval<char>) = VariableAddress[c] : +# 2205| r2205_10(char) = Load[c] : &:r2205_9, m2198_8 +# 2205| r2205_11(int) = Convert : r2205_10 +# 2205| v2205_12(void) = Switch : r2205_11 #-----| Case[97] -> Block 5 #-----| Default -> Block 6 -# 2192| Block 5 -# 2192| v2192_1(void) = NoOp : -# 2193| r2193_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2193| r2193_2(glval<unknown>) = FunctionAddress[set_x] : -# 2193| r2193_3(char) = Constant[97] : -# 2193| v2193_4(void) = Call[set_x] : func:r2193_2, this:r2193_1, 0:r2193_3 -# 2193| m2193_5(unknown) = ^CallSideEffect : ~m2191_6 -# 2193| m2193_6(unknown) = Chi : total:m2191_6, partial:m2193_5 -# 2193| v2193_7(void) = ^IndirectReadSideEffect[-1] : &:r2193_1, m2191_8 -# 2193| m2193_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2193_1 -# 2193| m2193_9(ClassWithDestructor) = Chi : total:m2191_8, partial:m2193_8 -# 2194| v2194_1(void) = NoOp : +# 2206| Block 5 +# 2206| v2206_1(void) = NoOp : +# 2207| r2207_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2207| r2207_2(glval<unknown>) = FunctionAddress[set_x] : +# 2207| r2207_3(char) = Constant[97] : +# 2207| v2207_4(void) = Call[set_x] : func:r2207_2, this:r2207_1, 0:r2207_3 +# 2207| m2207_5(unknown) = ^CallSideEffect : ~m2205_6 +# 2207| m2207_6(unknown) = Chi : total:m2205_6, partial:m2207_5 +# 2207| v2207_7(void) = ^IndirectReadSideEffect[-1] : &:r2207_1, m2205_8 +# 2207| m2207_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2207_1 +# 2207| m2207_9(ClassWithDestructor) = Chi : total:m2205_8, partial:m2207_8 +# 2208| v2208_1(void) = NoOp : #-----| Goto -> Block 7 -# 2195| Block 6 -# 2195| v2195_1(void) = NoOp : -# 2196| r2196_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2196| r2196_2(glval<unknown>) = FunctionAddress[set_x] : -# 2196| r2196_3(char) = Constant[98] : -# 2196| v2196_4(void) = Call[set_x] : func:r2196_2, this:r2196_1, 0:r2196_3 -# 2196| m2196_5(unknown) = ^CallSideEffect : ~m2191_6 -# 2196| m2196_6(unknown) = Chi : total:m2191_6, partial:m2196_5 -# 2196| v2196_7(void) = ^IndirectReadSideEffect[-1] : &:r2196_1, m2191_8 -# 2196| m2196_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2196_1 -# 2196| m2196_9(ClassWithDestructor) = Chi : total:m2191_8, partial:m2196_8 -# 2197| v2197_1(void) = NoOp : +# 2209| Block 6 +# 2209| v2209_1(void) = NoOp : +# 2210| r2210_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2210| r2210_2(glval<unknown>) = FunctionAddress[set_x] : +# 2210| r2210_3(char) = Constant[98] : +# 2210| v2210_4(void) = Call[set_x] : func:r2210_2, this:r2210_1, 0:r2210_3 +# 2210| m2210_5(unknown) = ^CallSideEffect : ~m2205_6 +# 2210| m2210_6(unknown) = Chi : total:m2205_6, partial:m2210_5 +# 2210| v2210_7(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, m2205_8 +# 2210| m2210_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 +# 2210| m2210_9(ClassWithDestructor) = Chi : total:m2205_8, partial:m2210_8 +# 2211| v2211_1(void) = NoOp : #-----| Goto -> Block 7 -# 2198| Block 7 -# 2198| m2198_1(unknown) = Phi : from 5:~m2193_6, from 6:~m2196_6 -# 2198| v2198_2(void) = NoOp : -# 2200| r2200_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2200| m2200_2(ClassWithDestructor) = Uninitialized[x] : &:r2200_1 -# 2200| r2200_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2200| v2200_4(void) = Call[ClassWithDestructor] : func:r2200_3, this:r2200_1 -# 2200| m2200_5(unknown) = ^CallSideEffect : ~m2198_1 -# 2200| m2200_6(unknown) = Chi : total:m2198_1, partial:m2200_5 -# 2200| m2200_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 -# 2200| m2200_8(ClassWithDestructor) = Chi : total:m2200_2, partial:m2200_7 -# 2201| r2201_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2201| m2201_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2201_1 -# 2201| r2201_3(glval<unknown>) = FunctionAddress[vector] : -# 2201| r2201_4(glval<ClassWithDestructor>) = VariableAddress[#temp2201:45] : -# 2201| r2201_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2201| r2201_6(ClassWithDestructor) = Load[x] : &:r2201_5, m2200_8 -# 2201| m2201_7(ClassWithDestructor) = Store[#temp2201:45] : &:r2201_4, r2201_6 -# 2201| r2201_8(ClassWithDestructor) = Load[#temp2201:45] : &:r2201_4, m2201_7 -# 2201| v2201_9(void) = Call[vector] : func:r2201_3, this:r2201_1, 0:r2201_8 -# 2201| m2201_10(unknown) = ^CallSideEffect : ~m2200_6 -# 2201| m2201_11(unknown) = Chi : total:m2200_6, partial:m2201_10 -# 2201| m2201_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 -# 2201| m2201_13(vector<ClassWithDestructor>) = Chi : total:m2201_2, partial:m2201_12 -# 2201| r2201_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2201| r2201_16(vector<ClassWithDestructor> &) = CopyValue : r2201_15 -# 2201| m2201_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2201_14, r2201_16 -# 2201| r2201_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2201| r2201_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_19, m2201_17 -#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_20 +# 2212| Block 7 +# 2212| m2212_1(unknown) = Phi : from 5:~m2207_6, from 6:~m2210_6 +# 2212| v2212_2(void) = NoOp : +# 2214| r2214_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2214| m2214_2(ClassWithDestructor) = Uninitialized[x] : &:r2214_1 +# 2214| r2214_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2214| v2214_4(void) = Call[ClassWithDestructor] : func:r2214_3, this:r2214_1 +# 2214| m2214_5(unknown) = ^CallSideEffect : ~m2212_1 +# 2214| m2214_6(unknown) = Chi : total:m2212_1, partial:m2214_5 +# 2214| m2214_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2214_1 +# 2214| m2214_8(ClassWithDestructor) = Chi : total:m2214_2, partial:m2214_7 +# 2215| r2215_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| m2215_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2215_1 +# 2215| r2215_3(glval<unknown>) = FunctionAddress[vector] : +# 2215| r2215_4(glval<ClassWithDestructor>) = VariableAddress[#temp2215:45] : +# 2215| r2215_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2215| r2215_6(ClassWithDestructor) = Load[x] : &:r2215_5, m2214_8 +# 2215| m2215_7(ClassWithDestructor) = Store[#temp2215:45] : &:r2215_4, r2215_6 +# 2215| r2215_8(ClassWithDestructor) = Load[#temp2215:45] : &:r2215_4, m2215_7 +# 2215| v2215_9(void) = Call[vector] : func:r2215_3, this:r2215_1, 0:r2215_8 +# 2215| m2215_10(unknown) = ^CallSideEffect : ~m2214_6 +# 2215| m2215_11(unknown) = Chi : total:m2214_6, partial:m2215_10 +# 2215| m2215_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 +# 2215| m2215_13(vector<ClassWithDestructor>) = Chi : total:m2215_2, partial:m2215_12 +# 2215| r2215_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| r2215_16(vector<ClassWithDestructor> &) = CopyValue : r2215_15 +# 2215| m2215_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2215_14, r2215_16 +# 2215| r2215_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_19, m2215_17 +#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_20 #-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 -# 2201| r2201_21(glval<unknown>) = FunctionAddress[begin] : -# 2201| r2201_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2201_21, this:r0_2 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2201_13 -# 2201| m2201_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_18, r2201_22 -# 2201| r2201_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2201| r2201_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_25, m2201_17 -#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_26 +# 2215| r2215_21(glval<unknown>) = FunctionAddress[begin] : +# 2215| r2215_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_21, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2215_13 +# 2215| m2215_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_18, r2215_22 +# 2215| r2215_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2215| r2215_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_25, m2215_17 +#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_26 #-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 -# 2201| r2201_27(glval<unknown>) = FunctionAddress[end] : -# 2201| r2201_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_27, this:r0_5 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2201_13 -# 2201| m2201_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_24, r2201_28 +# 2215| r2215_27(glval<unknown>) = FunctionAddress[end] : +# 2215| r2215_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_27, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2215_13 +# 2215| m2215_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_24, r2215_28 #-----| Goto -> Block 8 -# 2201| Block 8 -# 2201| m2201_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 7:m2201_23, from 9:m2201_68 -# 2201| m2201_31(unknown) = Phi : from 7:~m2201_11, from 9:~m2201_65 -# 2201| r2201_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_32 -# 2201| r2201_33(glval<unknown>) = FunctionAddress[operator!=] : +# 2215| Block 8 +# 2215| m2215_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 7:m2215_23, from 9:m2215_68 +# 2215| m2215_31(unknown) = Phi : from 7:~m2215_11, from 9:~m2215_65 +# 2215| r2215_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_32 +# 2215| r2215_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2201| r2201_34(glval<unknown>) = FunctionAddress[iterator] : -# 2201| r2201_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_35 +# 2215| r2215_34(glval<unknown>) = FunctionAddress[iterator] : +# 2215| r2215_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_35 #-----| r0_11(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_10 -# 2201| v2201_36(void) = Call[iterator] : func:r2201_34, this:r0_8, 0:r0_11 -# 2201| m2201_37(unknown) = ^CallSideEffect : ~m2201_31 -# 2201| m2201_38(unknown) = Chi : total:m2201_31, partial:m2201_37 -#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2201_29 -# 2201| m2201_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2201| m2201_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_9, partial:m2201_39 -#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, m2201_40 -# 2201| r2201_41(bool) = Call[operator!=] : func:r2201_33, this:r0_7, 0:r0_13 -# 2201| m2201_42(unknown) = ^CallSideEffect : ~m2201_38 -# 2201| m2201_43(unknown) = Chi : total:m2201_38, partial:m2201_42 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2201_30 -# 2201| v2201_44(void) = ConditionalBranch : r2201_41 +# 2215| v2215_36(void) = Call[iterator] : func:r2215_34, this:r0_8, 0:r0_11 +# 2215| m2215_37(unknown) = ^CallSideEffect : ~m2215_31 +# 2215| m2215_38(unknown) = Chi : total:m2215_31, partial:m2215_37 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2215_29 +# 2215| m2215_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2215| m2215_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_9, partial:m2215_39 +#-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, m2215_40 +# 2215| r2215_41(bool) = Call[operator!=] : func:r2215_33, this:r0_7, 0:r0_13 +# 2215| m2215_42(unknown) = ^CallSideEffect : ~m2215_38 +# 2215| m2215_43(unknown) = Chi : total:m2215_38, partial:m2215_42 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2215_30 +# 2215| v2215_44(void) = ConditionalBranch : r2215_41 #-----| False -> Block 10 #-----| True -> Block 9 -# 2201| Block 9 -# 2201| r2201_45(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_46 -# 2201| r2201_47(glval<unknown>) = FunctionAddress[operator*] : -# 2201| r2201_48(ClassWithDestructor &) = Call[operator*] : func:r2201_47, this:r0_15 -# 2201| m2201_49(unknown) = ^CallSideEffect : ~m2201_43 -# 2201| m2201_50(unknown) = Chi : total:m2201_43, partial:m2201_49 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2201_30 -# 2201| r2201_51(ClassWithDestructor) = Load[?] : &:r2201_48, ~m2201_50 -# 2201| m2201_52(ClassWithDestructor) = Store[y] : &:r2201_45, r2201_51 -# 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2202| r2202_2(glval<unknown>) = FunctionAddress[set_x] : -# 2202| r2202_3(char) = Constant[97] : -# 2202| v2202_4(void) = Call[set_x] : func:r2202_2, this:r2202_1, 0:r2202_3 -# 2202| m2202_5(unknown) = ^CallSideEffect : ~m2201_50 -# 2202| m2202_6(unknown) = Chi : total:m2201_50, partial:m2202_5 -# 2202| v2202_7(void) = ^IndirectReadSideEffect[-1] : &:r2202_1, m2201_52 -# 2202| m2202_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 -# 2202| m2202_9(ClassWithDestructor) = Chi : total:m2201_52, partial:m2202_8 -# 2201| r2201_53(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2201| v2201_55(void) = Call[~ClassWithDestructor] : func:r2201_54, this:r2201_53 -# 2201| m2201_56(unknown) = ^CallSideEffect : ~m2202_6 -# 2201| m2201_57(unknown) = Chi : total:m2202_6, partial:m2201_56 -# 2201| v2201_58(void) = ^IndirectReadSideEffect[-1] : &:r2201_53, m2202_9 -# 2201| m2201_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_53 -# 2201| m2201_60(ClassWithDestructor) = Chi : total:m2202_9, partial:m2201_59 -# 2201| r2201_61(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2201| r2201_62(glval<unknown>) = FunctionAddress[operator++] : -# 2201| r2201_63(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_62, this:r2201_61 -# 2201| m2201_64(unknown) = ^CallSideEffect : ~m2201_57 -# 2201| m2201_65(unknown) = Chi : total:m2201_57, partial:m2201_64 -# 2201| v2201_66(void) = ^IndirectReadSideEffect[-1] : &:r2201_61, m2201_30 -# 2201| m2201_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_61 -# 2201| m2201_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2201_30, partial:m2201_67 -# 2201| r2201_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_63 +# 2215| Block 9 +# 2215| r2215_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_46 +# 2215| r2215_47(glval<unknown>) = FunctionAddress[operator*] : +# 2215| r2215_48(ClassWithDestructor &) = Call[operator*] : func:r2215_47, this:r0_15 +# 2215| m2215_49(unknown) = ^CallSideEffect : ~m2215_43 +# 2215| m2215_50(unknown) = Chi : total:m2215_43, partial:m2215_49 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2215_30 +# 2215| r2215_51(ClassWithDestructor) = Load[?] : &:r2215_48, ~m2215_50 +# 2215| m2215_52(ClassWithDestructor) = Store[y] : &:r2215_45, r2215_51 +# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2216| r2216_2(glval<unknown>) = FunctionAddress[set_x] : +# 2216| r2216_3(char) = Constant[97] : +# 2216| v2216_4(void) = Call[set_x] : func:r2216_2, this:r2216_1, 0:r2216_3 +# 2216| m2216_5(unknown) = ^CallSideEffect : ~m2215_50 +# 2216| m2216_6(unknown) = Chi : total:m2215_50, partial:m2216_5 +# 2216| v2216_7(void) = ^IndirectReadSideEffect[-1] : &:r2216_1, m2215_52 +# 2216| m2216_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 +# 2216| m2216_9(ClassWithDestructor) = Chi : total:m2215_52, partial:m2216_8 +# 2215| r2215_53(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_55(void) = Call[~ClassWithDestructor] : func:r2215_54, this:r2215_53 +# 2215| m2215_56(unknown) = ^CallSideEffect : ~m2216_6 +# 2215| m2215_57(unknown) = Chi : total:m2216_6, partial:m2215_56 +# 2215| v2215_58(void) = ^IndirectReadSideEffect[-1] : &:r2215_53, m2216_9 +# 2215| m2215_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_53 +# 2215| m2215_60(ClassWithDestructor) = Chi : total:m2216_9, partial:m2215_59 +# 2215| r2215_61(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_62(glval<unknown>) = FunctionAddress[operator++] : +# 2215| r2215_63(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_62, this:r2215_61 +# 2215| m2215_64(unknown) = ^CallSideEffect : ~m2215_57 +# 2215| m2215_65(unknown) = Chi : total:m2215_57, partial:m2215_64 +# 2215| v2215_66(void) = ^IndirectReadSideEffect[-1] : &:r2215_61, m2215_30 +# 2215| m2215_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_61 +# 2215| m2215_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2215_30, partial:m2215_67 +# 2215| r2215_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_63 #-----| Goto (back edge) -> Block 8 -# 2204| Block 10 -# 2204| r2204_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| m2204_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2204_1 -# 2204| r2204_3(glval<unknown>) = FunctionAddress[vector] : -# 2204| r2204_4(glval<ClassWithDestructor>) = VariableAddress[#temp2204:45] : -# 2204| r2204_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2204| r2204_6(ClassWithDestructor) = Load[x] : &:r2204_5, m2200_8 -# 2204| m2204_7(ClassWithDestructor) = Store[#temp2204:45] : &:r2204_4, r2204_6 -# 2204| r2204_8(ClassWithDestructor) = Load[#temp2204:45] : &:r2204_4, m2204_7 -# 2204| v2204_9(void) = Call[vector] : func:r2204_3, this:r2204_1, 0:r2204_8 -# 2204| m2204_10(unknown) = ^CallSideEffect : ~m2201_43 -# 2204| m2204_11(unknown) = Chi : total:m2201_43, partial:m2204_10 -# 2204| m2204_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 -# 2204| m2204_13(vector<ClassWithDestructor>) = Chi : total:m2204_2, partial:m2204_12 -# 2204| r2204_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_16(vector<ClassWithDestructor> &) = CopyValue : r2204_15 -# 2204| m2204_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2204_14, r2204_16 -# 2204| r2204_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2204| r2204_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_19, m2204_17 -#-----| r0_17(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_20 +# 2218| Block 10 +# 2218| r2218_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2218| m2218_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2218_1 +# 2218| r2218_3(glval<unknown>) = FunctionAddress[vector] : +# 2218| r2218_4(glval<ClassWithDestructor>) = VariableAddress[#temp2218:45] : +# 2218| r2218_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2218| r2218_6(ClassWithDestructor) = Load[x] : &:r2218_5, m2214_8 +# 2218| m2218_7(ClassWithDestructor) = Store[#temp2218:45] : &:r2218_4, r2218_6 +# 2218| r2218_8(ClassWithDestructor) = Load[#temp2218:45] : &:r2218_4, m2218_7 +# 2218| v2218_9(void) = Call[vector] : func:r2218_3, this:r2218_1, 0:r2218_8 +# 2218| m2218_10(unknown) = ^CallSideEffect : ~m2215_43 +# 2218| m2218_11(unknown) = Chi : total:m2215_43, partial:m2218_10 +# 2218| m2218_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 +# 2218| m2218_13(vector<ClassWithDestructor>) = Chi : total:m2218_2, partial:m2218_12 +# 2218| r2218_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2218| r2218_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2218| r2218_16(vector<ClassWithDestructor> &) = CopyValue : r2218_15 +# 2218| m2218_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2218_14, r2218_16 +# 2218| r2218_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2218| r2218_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2218| r2218_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2218_19, m2218_17 +#-----| r0_17(glval<vector<ClassWithDestructor>>) = CopyValue : r2218_20 #-----| r0_18(glval<vector<ClassWithDestructor>>) = Convert : r0_17 -# 2204| r2204_21(glval<unknown>) = FunctionAddress[begin] : -# 2204| r2204_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2204_21, this:r0_18 -#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, m2204_13 -# 2204| m2204_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_18, r2204_22 -# 2204| r2204_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2204| r2204_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_25, m2204_17 -#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_26 +# 2218| r2218_21(glval<unknown>) = FunctionAddress[begin] : +# 2218| r2218_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2218_21, this:r0_18 +#-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, m2218_13 +# 2218| m2218_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2218_18, r2218_22 +# 2218| r2218_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2218| r2218_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2218| r2218_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2218_25, m2218_17 +#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2218_26 #-----| r0_21(glval<vector<ClassWithDestructor>>) = Convert : r0_20 -# 2204| r2204_27(glval<unknown>) = FunctionAddress[end] : -# 2204| r2204_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_27, this:r0_21 -#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, m2204_13 -# 2204| m2204_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_24, r2204_28 +# 2218| r2218_27(glval<unknown>) = FunctionAddress[end] : +# 2218| r2218_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2218_27, this:r0_21 +#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, m2218_13 +# 2218| m2218_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2218_24, r2218_28 #-----| Goto -> Block 11 -# 2204| Block 11 -# 2204| m2204_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 10:m2204_23, from 14:m2204_84 -# 2204| m2204_31(unknown) = Phi : from 10:~m2204_11, from 14:~m2204_81 -# 2204| r2204_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_32 -# 2204| r2204_33(glval<unknown>) = FunctionAddress[operator!=] : +# 2218| Block 11 +# 2218| m2218_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 10:m2218_23, from 14:m2218_84 +# 2218| m2218_31(unknown) = Phi : from 10:~m2218_11, from 14:~m2218_81 +# 2218| r2218_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_32 +# 2218| r2218_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| m0_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_24 -# 2204| r2204_34(glval<unknown>) = FunctionAddress[iterator] : -# 2204| r2204_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_35 +# 2218| r2218_34(glval<unknown>) = FunctionAddress[iterator] : +# 2218| r2218_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_35 #-----| r0_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_26 -# 2204| v2204_36(void) = Call[iterator] : func:r2204_34, this:r0_24, 0:r0_27 -# 2204| m2204_37(unknown) = ^CallSideEffect : ~m2204_31 -# 2204| m2204_38(unknown) = Chi : total:m2204_31, partial:m2204_37 -#-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m2204_29 -# 2204| m2204_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 -# 2204| m2204_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_25, partial:m2204_39 -#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, m2204_40 -# 2204| r2204_41(bool) = Call[operator!=] : func:r2204_33, this:r0_23, 0:r0_29 -# 2204| m2204_42(unknown) = ^CallSideEffect : ~m2204_38 -# 2204| m2204_43(unknown) = Chi : total:m2204_38, partial:m2204_42 -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, m2204_30 -# 2204| v2204_44(void) = ConditionalBranch : r2204_41 +# 2218| v2218_36(void) = Call[iterator] : func:r2218_34, this:r0_24, 0:r0_27 +# 2218| m2218_37(unknown) = ^CallSideEffect : ~m2218_31 +# 2218| m2218_38(unknown) = Chi : total:m2218_31, partial:m2218_37 +#-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m2218_29 +# 2218| m2218_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 +# 2218| m2218_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_25, partial:m2218_39 +#-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, m2218_40 +# 2218| r2218_41(bool) = Call[operator!=] : func:r2218_33, this:r0_23, 0:r0_29 +# 2218| m2218_42(unknown) = ^CallSideEffect : ~m2218_38 +# 2218| m2218_43(unknown) = Chi : total:m2218_38, partial:m2218_42 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, m2218_30 +# 2218| v2218_44(void) = ConditionalBranch : r2218_41 #-----| False -> Block 15 #-----| True -> Block 12 -# 2204| Block 12 -# 2204| r2204_45(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_46 -# 2204| r2204_47(glval<unknown>) = FunctionAddress[operator*] : -# 2204| r2204_48(ClassWithDestructor &) = Call[operator*] : func:r2204_47, this:r0_31 -# 2204| m2204_49(unknown) = ^CallSideEffect : ~m2204_43 -# 2204| m2204_50(unknown) = Chi : total:m2204_43, partial:m2204_49 -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, m2204_30 -# 2204| r2204_51(ClassWithDestructor) = Load[?] : &:r2204_48, ~m2204_50 -# 2204| m2204_52(ClassWithDestructor) = Store[y] : &:r2204_45, r2204_51 -# 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2205| r2205_2(glval<unknown>) = FunctionAddress[set_x] : -# 2205| r2205_3(char) = Constant[97] : -# 2205| v2205_4(void) = Call[set_x] : func:r2205_2, this:r2205_1, 0:r2205_3 -# 2205| m2205_5(unknown) = ^CallSideEffect : ~m2204_50 -# 2205| m2205_6(unknown) = Chi : total:m2204_50, partial:m2205_5 -# 2205| v2205_7(void) = ^IndirectReadSideEffect[-1] : &:r2205_1, m2204_52 -# 2205| m2205_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 -# 2205| m2205_9(ClassWithDestructor) = Chi : total:m2204_52, partial:m2205_8 -# 2206| r2206_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2206| r2206_2(glval<unknown>) = FunctionAddress[get_x] : -# 2206| r2206_3(char) = Call[get_x] : func:r2206_2, this:r2206_1 -# 2206| m2206_4(unknown) = ^CallSideEffect : ~m2205_6 -# 2206| m2206_5(unknown) = Chi : total:m2205_6, partial:m2206_4 -# 2206| v2206_6(void) = ^IndirectReadSideEffect[-1] : &:r2206_1, m2205_9 -# 2206| m2206_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 -# 2206| m2206_8(ClassWithDestructor) = Chi : total:m2205_9, partial:m2206_7 -# 2206| r2206_9(int) = Convert : r2206_3 -# 2206| r2206_10(int) = Constant[98] : -# 2206| r2206_11(bool) = CompareEQ : r2206_9, r2206_10 -# 2206| v2206_12(void) = ConditionalBranch : r2206_11 +# 2218| Block 12 +# 2218| r2218_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2218| r2218_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_46 +# 2218| r2218_47(glval<unknown>) = FunctionAddress[operator*] : +# 2218| r2218_48(ClassWithDestructor &) = Call[operator*] : func:r2218_47, this:r0_31 +# 2218| m2218_49(unknown) = ^CallSideEffect : ~m2218_43 +# 2218| m2218_50(unknown) = Chi : total:m2218_43, partial:m2218_49 +#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, m2218_30 +# 2218| r2218_51(ClassWithDestructor) = Load[?] : &:r2218_48, ~m2218_50 +# 2218| m2218_52(ClassWithDestructor) = Store[y] : &:r2218_45, r2218_51 +# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2219| r2219_2(glval<unknown>) = FunctionAddress[set_x] : +# 2219| r2219_3(char) = Constant[97] : +# 2219| v2219_4(void) = Call[set_x] : func:r2219_2, this:r2219_1, 0:r2219_3 +# 2219| m2219_5(unknown) = ^CallSideEffect : ~m2218_50 +# 2219| m2219_6(unknown) = Chi : total:m2218_50, partial:m2219_5 +# 2219| v2219_7(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2218_52 +# 2219| m2219_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 +# 2219| m2219_9(ClassWithDestructor) = Chi : total:m2218_52, partial:m2219_8 +# 2220| r2220_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2220| r2220_2(glval<unknown>) = FunctionAddress[get_x] : +# 2220| r2220_3(char) = Call[get_x] : func:r2220_2, this:r2220_1 +# 2220| m2220_4(unknown) = ^CallSideEffect : ~m2219_6 +# 2220| m2220_5(unknown) = Chi : total:m2219_6, partial:m2220_4 +# 2220| v2220_6(void) = ^IndirectReadSideEffect[-1] : &:r2220_1, m2219_9 +# 2220| m2220_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2220_1 +# 2220| m2220_8(ClassWithDestructor) = Chi : total:m2219_9, partial:m2220_7 +# 2220| r2220_9(int) = Convert : r2220_3 +# 2220| r2220_10(int) = Constant[98] : +# 2220| r2220_11(bool) = CompareEQ : r2220_9, r2220_10 +# 2220| v2220_12(void) = ConditionalBranch : r2220_11 #-----| False -> Block 14 #-----| True -> Block 13 -# 2207| Block 13 -# 2207| v2207_1(void) = NoOp : -# 2204| r2204_53(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_55(void) = Call[~ClassWithDestructor] : func:r2204_54, this:r2204_53 -# 2204| m2204_56(unknown) = ^CallSideEffect : ~m2206_5 -# 2204| m2204_57(unknown) = Chi : total:m2206_5, partial:m2204_56 -# 2204| v2204_58(void) = ^IndirectReadSideEffect[-1] : &:r2204_53, m2206_8 -# 2204| m2204_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_53 -# 2204| m2204_60(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_59 -# 2204| r2204_61(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_62(glval<unknown>) = FunctionAddress[~vector] : -# 2204| v2204_63(void) = Call[~vector] : func:r2204_62, this:r2204_61 -# 2204| m2204_64(unknown) = ^CallSideEffect : ~m2204_57 -# 2204| m2204_65(unknown) = Chi : total:m2204_57, partial:m2204_64 -# 2204| v2204_66(void) = ^IndirectReadSideEffect[-1] : &:r2204_61, m2204_13 -# 2204| m2204_67(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_61 -# 2204| m2204_68(vector<ClassWithDestructor>) = Chi : total:m2204_13, partial:m2204_67 -# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2219| r2219_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_3(void) = Call[~ClassWithDestructor] : func:r2219_2, this:r2219_1 -# 2219| m2219_4(unknown) = ^CallSideEffect : ~m2204_65 -# 2219| m2219_5(unknown) = Chi : total:m2204_65, partial:m2219_4 -# 2219| v2219_6(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2200_8 -# 2219| m2219_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 -# 2219| m2219_8(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_7 +# 2221| Block 13 +# 2221| v2221_1(void) = NoOp : +# 2218| r2218_53(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2218| r2218_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_55(void) = Call[~ClassWithDestructor] : func:r2218_54, this:r2218_53 +# 2218| m2218_56(unknown) = ^CallSideEffect : ~m2220_5 +# 2218| m2218_57(unknown) = Chi : total:m2220_5, partial:m2218_56 +# 2218| v2218_58(void) = ^IndirectReadSideEffect[-1] : &:r2218_53, m2220_8 +# 2218| m2218_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_53 +# 2218| m2218_60(ClassWithDestructor) = Chi : total:m2220_8, partial:m2218_59 +# 2218| r2218_61(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2218| r2218_62(glval<unknown>) = FunctionAddress[~vector] : +# 2218| v2218_63(void) = Call[~vector] : func:r2218_62, this:r2218_61 +# 2218| m2218_64(unknown) = ^CallSideEffect : ~m2218_57 +# 2218| m2218_65(unknown) = Chi : total:m2218_57, partial:m2218_64 +# 2218| v2218_66(void) = ^IndirectReadSideEffect[-1] : &:r2218_61, m2218_13 +# 2218| m2218_67(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_61 +# 2218| m2218_68(vector<ClassWithDestructor>) = Chi : total:m2218_13, partial:m2218_67 +# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2233| r2233_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2233| v2233_3(void) = Call[~ClassWithDestructor] : func:r2233_2, this:r2233_1 +# 2233| m2233_4(unknown) = ^CallSideEffect : ~m2218_65 +# 2233| m2233_5(unknown) = Chi : total:m2218_65, partial:m2233_4 +# 2233| v2233_6(void) = ^IndirectReadSideEffect[-1] : &:r2233_1, m2214_8 +# 2233| m2233_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 +# 2233| m2233_8(ClassWithDestructor) = Chi : total:m2214_8, partial:m2233_7 #-----| Goto -> Block 1 -# 2204| Block 14 -# 2204| r2204_69(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_70(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_71(void) = Call[~ClassWithDestructor] : func:r2204_70, this:r2204_69 -# 2204| m2204_72(unknown) = ^CallSideEffect : ~m2206_5 -# 2204| m2204_73(unknown) = Chi : total:m2206_5, partial:m2204_72 -# 2204| v2204_74(void) = ^IndirectReadSideEffect[-1] : &:r2204_69, m2206_8 -# 2204| m2204_75(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_69 -# 2204| m2204_76(ClassWithDestructor) = Chi : total:m2206_8, partial:m2204_75 -# 2204| r2204_77(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2204| r2204_78(glval<unknown>) = FunctionAddress[operator++] : -# 2204| r2204_79(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_78, this:r2204_77 -# 2204| m2204_80(unknown) = ^CallSideEffect : ~m2204_73 -# 2204| m2204_81(unknown) = Chi : total:m2204_73, partial:m2204_80 -# 2204| v2204_82(void) = ^IndirectReadSideEffect[-1] : &:r2204_77, m2204_30 -# 2204| m2204_83(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_77 -# 2204| m2204_84(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2204_30, partial:m2204_83 -# 2204| r2204_85(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_79 +# 2218| Block 14 +# 2218| r2218_69(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2218| r2218_70(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_71(void) = Call[~ClassWithDestructor] : func:r2218_70, this:r2218_69 +# 2218| m2218_72(unknown) = ^CallSideEffect : ~m2220_5 +# 2218| m2218_73(unknown) = Chi : total:m2220_5, partial:m2218_72 +# 2218| v2218_74(void) = ^IndirectReadSideEffect[-1] : &:r2218_69, m2220_8 +# 2218| m2218_75(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_69 +# 2218| m2218_76(ClassWithDestructor) = Chi : total:m2220_8, partial:m2218_75 +# 2218| r2218_77(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2218| r2218_78(glval<unknown>) = FunctionAddress[operator++] : +# 2218| r2218_79(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2218_78, this:r2218_77 +# 2218| m2218_80(unknown) = ^CallSideEffect : ~m2218_73 +# 2218| m2218_81(unknown) = Chi : total:m2218_73, partial:m2218_80 +# 2218| v2218_82(void) = ^IndirectReadSideEffect[-1] : &:r2218_77, m2218_30 +# 2218| m2218_83(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_77 +# 2218| m2218_84(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2218_30, partial:m2218_83 +# 2218| r2218_85(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2218_79 #-----| Goto (back edge) -> Block 11 -# 2210| Block 15 -# 2210| r2210_1(glval<vector<int>>) = VariableAddress[ys] : -# 2210| m2210_2(vector<int>) = Uninitialized[ys] : &:r2210_1 -# 2210| r2210_3(glval<unknown>) = FunctionAddress[vector] : -# 2210| r2210_4(int) = Constant[1] : -# 2210| v2210_5(void) = Call[vector] : func:r2210_3, this:r2210_1, 0:r2210_4 -# 2210| m2210_6(unknown) = ^CallSideEffect : ~m2204_43 -# 2210| m2210_7(unknown) = Chi : total:m2204_43, partial:m2210_6 -# 2210| m2210_8(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 -# 2210| m2210_9(vector<int>) = Chi : total:m2210_2, partial:m2210_8 -# 2210| r2210_10(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_11(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_12(vector<int> &) = CopyValue : r2210_11 -# 2210| m2210_13(vector<int> &) = Store[(__range)] : &:r2210_10, r2210_12 -# 2210| r2210_14(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 2210| r2210_15(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_16(vector<int> &) = Load[(__range)] : &:r2210_15, m2210_13 -#-----| r0_33(glval<vector<int>>) = CopyValue : r2210_16 +# 2224| Block 15 +# 2224| r2224_1(glval<vector<int>>) = VariableAddress[ys] : +# 2224| m2224_2(vector<int>) = Uninitialized[ys] : &:r2224_1 +# 2224| r2224_3(glval<unknown>) = FunctionAddress[vector] : +# 2224| r2224_4(int) = Constant[1] : +# 2224| v2224_5(void) = Call[vector] : func:r2224_3, this:r2224_1, 0:r2224_4 +# 2224| m2224_6(unknown) = ^CallSideEffect : ~m2218_43 +# 2224| m2224_7(unknown) = Chi : total:m2218_43, partial:m2224_6 +# 2224| m2224_8(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_1 +# 2224| m2224_9(vector<int>) = Chi : total:m2224_2, partial:m2224_8 +# 2224| r2224_10(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2224| r2224_11(glval<vector<int>>) = VariableAddress[ys] : +# 2224| r2224_12(vector<int> &) = CopyValue : r2224_11 +# 2224| m2224_13(vector<int> &) = Store[(__range)] : &:r2224_10, r2224_12 +# 2224| r2224_14(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2224| r2224_15(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2224| r2224_16(vector<int> &) = Load[(__range)] : &:r2224_15, m2224_13 +#-----| r0_33(glval<vector<int>>) = CopyValue : r2224_16 #-----| r0_34(glval<vector<int>>) = Convert : r0_33 -# 2210| r2210_17(glval<unknown>) = FunctionAddress[begin] : -# 2210| r2210_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2210_17, this:r0_34 -#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, m2210_9 -# 2210| m2210_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_14, r2210_18 -# 2210| r2210_20(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 2210| r2210_21(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_22(vector<int> &) = Load[(__range)] : &:r2210_21, m2210_13 -#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_22 +# 2224| r2224_17(glval<unknown>) = FunctionAddress[begin] : +# 2224| r2224_18(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2224_17, this:r0_34 +#-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, m2224_9 +# 2224| m2224_19(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2224_14, r2224_18 +# 2224| r2224_20(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 2224| r2224_21(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2224| r2224_22(vector<int> &) = Load[(__range)] : &:r2224_21, m2224_13 +#-----| r0_36(glval<vector<int>>) = CopyValue : r2224_22 #-----| r0_37(glval<vector<int>>) = Convert : r0_36 -# 2210| r2210_23(glval<unknown>) = FunctionAddress[end] : -# 2210| r2210_24(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_23, this:r0_37 -#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, m2210_9 -# 2210| m2210_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_20, r2210_24 +# 2224| r2224_23(glval<unknown>) = FunctionAddress[end] : +# 2224| r2224_24(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2224_23, this:r0_37 +#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, m2224_9 +# 2224| m2224_25(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2224_20, r2224_24 #-----| Goto -> Block 16 -# 2210| Block 16 -# 2210| m2210_26(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 15:m2210_19, from 17:m2210_48 -# 2210| m2210_27(unknown) = Phi : from 15:~m2210_7, from 17:~m2210_45 -# 2210| r2210_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_28 -# 2210| r2210_29(glval<unknown>) = FunctionAddress[operator!=] : +# 2224| Block 16 +# 2224| m2224_26(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Phi : from 15:m2224_19, from 17:m2224_48 +# 2224| m2224_27(unknown) = Phi : from 15:~m2224_7, from 17:~m2224_45 +# 2224| r2224_28(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_28 +# 2224| r2224_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| m0_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_40 -# 2210| r2210_30(glval<unknown>) = FunctionAddress[iterator] : -# 2210| r2210_31(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_31 +# 2224| r2224_30(glval<unknown>) = FunctionAddress[iterator] : +# 2224| r2224_31(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_31 #-----| r0_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_42 -# 2210| v2210_32(void) = Call[iterator] : func:r2210_30, this:r0_40, 0:r0_43 -# 2210| m2210_33(unknown) = ^CallSideEffect : ~m2210_27 -# 2210| m2210_34(unknown) = Chi : total:m2210_27, partial:m2210_33 -#-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m2210_25 -# 2210| m2210_35(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 -# 2210| m2210_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_41, partial:m2210_35 -#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, m2210_36 -# 2210| r2210_37(bool) = Call[operator!=] : func:r2210_29, this:r0_39, 0:r0_45 -# 2210| m2210_38(unknown) = ^CallSideEffect : ~m2210_34 -# 2210| m2210_39(unknown) = Chi : total:m2210_34, partial:m2210_38 -#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2210_26 -# 2210| v2210_40(void) = ConditionalBranch : r2210_37 +# 2224| v2224_32(void) = Call[iterator] : func:r2224_30, this:r0_40, 0:r0_43 +# 2224| m2224_33(unknown) = ^CallSideEffect : ~m2224_27 +# 2224| m2224_34(unknown) = Chi : total:m2224_27, partial:m2224_33 +#-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m2224_25 +# 2224| m2224_35(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 +# 2224| m2224_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m0_41, partial:m2224_35 +#-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, m2224_36 +# 2224| r2224_37(bool) = Call[operator!=] : func:r2224_29, this:r0_39, 0:r0_45 +# 2224| m2224_38(unknown) = ^CallSideEffect : ~m2224_34 +# 2224| m2224_39(unknown) = Chi : total:m2224_34, partial:m2224_38 +#-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2224_26 +# 2224| v2224_40(void) = ConditionalBranch : r2224_37 #-----| False -> Block 20 #-----| True -> Block 18 -# 2210| Block 17 -# 2210| r2210_41(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 2210| r2210_42(glval<unknown>) = FunctionAddress[operator++] : -# 2210| r2210_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_42, this:r2210_41 -# 2210| m2210_44(unknown) = ^CallSideEffect : ~m2210_55 -# 2210| m2210_45(unknown) = Chi : total:m2210_55, partial:m2210_44 -# 2210| v2210_46(void) = ^IndirectReadSideEffect[-1] : &:r2210_41, m2210_26 -# 2210| m2210_47(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_41 -# 2210| m2210_48(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m2210_26, partial:m2210_47 -# 2210| r2210_49(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_43 +# 2224| Block 17 +# 2224| r2224_41(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2224| r2224_42(glval<unknown>) = FunctionAddress[operator++] : +# 2224| r2224_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2224_42, this:r2224_41 +# 2224| m2224_44(unknown) = ^CallSideEffect : ~m2224_55 +# 2224| m2224_45(unknown) = Chi : total:m2224_55, partial:m2224_44 +# 2224| v2224_46(void) = ^IndirectReadSideEffect[-1] : &:r2224_41, m2224_26 +# 2224| m2224_47(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_41 +# 2224| m2224_48(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Chi : total:m2224_26, partial:m2224_47 +# 2224| r2224_49(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2224_43 #-----| Goto (back edge) -> Block 16 -# 2210| Block 18 -# 2210| r2210_50(glval<int>) = VariableAddress[y] : -# 2210| r2210_51(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_51 -# 2210| r2210_52(glval<unknown>) = FunctionAddress[operator*] : -# 2210| r2210_53(int &) = Call[operator*] : func:r2210_52, this:r0_47 -# 2210| m2210_54(unknown) = ^CallSideEffect : ~m2210_39 -# 2210| m2210_55(unknown) = Chi : total:m2210_39, partial:m2210_54 -#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, m2210_26 -# 2210| r2210_56(int) = Load[?] : &:r2210_53, ~m2210_55 -# 2210| m2210_57(int) = Store[y] : &:r2210_50, r2210_56 -# 2211| r2211_1(glval<int>) = VariableAddress[y] : -# 2211| r2211_2(int) = Load[y] : &:r2211_1, m2210_57 -# 2211| r2211_3(int) = Constant[1] : -# 2211| r2211_4(bool) = CompareEQ : r2211_2, r2211_3 -# 2211| v2211_5(void) = ConditionalBranch : r2211_4 +# 2224| Block 18 +# 2224| r2224_50(glval<int>) = VariableAddress[y] : +# 2224| r2224_51(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_51 +# 2224| r2224_52(glval<unknown>) = FunctionAddress[operator*] : +# 2224| r2224_53(int &) = Call[operator*] : func:r2224_52, this:r0_47 +# 2224| m2224_54(unknown) = ^CallSideEffect : ~m2224_39 +# 2224| m2224_55(unknown) = Chi : total:m2224_39, partial:m2224_54 +#-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, m2224_26 +# 2224| r2224_56(int) = Load[?] : &:r2224_53, ~m2224_55 +# 2224| m2224_57(int) = Store[y] : &:r2224_50, r2224_56 +# 2225| r2225_1(glval<int>) = VariableAddress[y] : +# 2225| r2225_2(int) = Load[y] : &:r2225_1, m2224_57 +# 2225| r2225_3(int) = Constant[1] : +# 2225| r2225_4(bool) = CompareEQ : r2225_2, r2225_3 +# 2225| v2225_5(void) = ConditionalBranch : r2225_4 #-----| False -> Block 17 #-----| True -> Block 19 -# 2212| Block 19 -# 2212| v2212_1(void) = NoOp : -# 2210| r2210_58(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_59(glval<unknown>) = FunctionAddress[~vector] : -# 2210| v2210_60(void) = Call[~vector] : func:r2210_59, this:r2210_58 -# 2210| m2210_61(unknown) = ^CallSideEffect : ~m2210_55 -# 2210| m2210_62(unknown) = Chi : total:m2210_55, partial:m2210_61 -# 2210| v2210_63(void) = ^IndirectReadSideEffect[-1] : &:r2210_58, m2210_9 -# 2210| m2210_64(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_58 -# 2210| m2210_65(vector<int>) = Chi : total:m2210_9, partial:m2210_64 -# 2219| r2219_9(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2219| r2219_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_11(void) = Call[~ClassWithDestructor] : func:r2219_10, this:r2219_9 -# 2219| m2219_12(unknown) = ^CallSideEffect : ~m2210_62 -# 2219| m2219_13(unknown) = Chi : total:m2210_62, partial:m2219_12 -# 2219| v2219_14(void) = ^IndirectReadSideEffect[-1] : &:r2219_9, m2200_8 -# 2219| m2219_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_9 -# 2219| m2219_16(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_15 +# 2226| Block 19 +# 2226| v2226_1(void) = NoOp : +# 2224| r2224_58(glval<vector<int>>) = VariableAddress[ys] : +# 2224| r2224_59(glval<unknown>) = FunctionAddress[~vector] : +# 2224| v2224_60(void) = Call[~vector] : func:r2224_59, this:r2224_58 +# 2224| m2224_61(unknown) = ^CallSideEffect : ~m2224_55 +# 2224| m2224_62(unknown) = Chi : total:m2224_55, partial:m2224_61 +# 2224| v2224_63(void) = ^IndirectReadSideEffect[-1] : &:r2224_58, m2224_9 +# 2224| m2224_64(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_58 +# 2224| m2224_65(vector<int>) = Chi : total:m2224_9, partial:m2224_64 +# 2233| r2233_9(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2233| r2233_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2233| v2233_11(void) = Call[~ClassWithDestructor] : func:r2233_10, this:r2233_9 +# 2233| m2233_12(unknown) = ^CallSideEffect : ~m2224_62 +# 2233| m2233_13(unknown) = Chi : total:m2224_62, partial:m2233_12 +# 2233| v2233_14(void) = ^IndirectReadSideEffect[-1] : &:r2233_9, m2214_8 +# 2233| m2233_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_9 +# 2233| m2233_16(ClassWithDestructor) = Chi : total:m2214_8, partial:m2233_15 #-----| Goto -> Block 1 -# 2215| Block 20 -# 2215| r2215_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2215| m2215_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2215_1 -# 2215| r2215_3(glval<unknown>) = FunctionAddress[vector] : -# 2215| r2215_4(glval<ClassWithDestructor>) = VariableAddress[#temp2215:45] : -# 2215| r2215_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2215| r2215_6(ClassWithDestructor) = Load[x] : &:r2215_5, m2200_8 -# 2215| m2215_7(ClassWithDestructor) = Store[#temp2215:45] : &:r2215_4, r2215_6 -# 2215| r2215_8(ClassWithDestructor) = Load[#temp2215:45] : &:r2215_4, m2215_7 -# 2215| v2215_9(void) = Call[vector] : func:r2215_3, this:r2215_1, 0:r2215_8 -# 2215| m2215_10(unknown) = ^CallSideEffect : ~m2210_39 -# 2215| m2215_11(unknown) = Chi : total:m2210_39, partial:m2215_10 -# 2215| m2215_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 -# 2215| m2215_13(vector<ClassWithDestructor>) = Chi : total:m2215_2, partial:m2215_12 -# 2215| r2215_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2215| r2215_16(vector<ClassWithDestructor> &) = CopyValue : r2215_15 -# 2215| m2215_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2215_14, r2215_16 -# 2215| r2215_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2215| r2215_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_19, m2215_17 -#-----| r0_49(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_20 +# 2229| Block 20 +# 2229| r2229_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2229| m2229_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2229_1 +# 2229| r2229_3(glval<unknown>) = FunctionAddress[vector] : +# 2229| r2229_4(glval<ClassWithDestructor>) = VariableAddress[#temp2229:45] : +# 2229| r2229_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2229| r2229_6(ClassWithDestructor) = Load[x] : &:r2229_5, m2214_8 +# 2229| m2229_7(ClassWithDestructor) = Store[#temp2229:45] : &:r2229_4, r2229_6 +# 2229| r2229_8(ClassWithDestructor) = Load[#temp2229:45] : &:r2229_4, m2229_7 +# 2229| v2229_9(void) = Call[vector] : func:r2229_3, this:r2229_1, 0:r2229_8 +# 2229| m2229_10(unknown) = ^CallSideEffect : ~m2224_39 +# 2229| m2229_11(unknown) = Chi : total:m2224_39, partial:m2229_10 +# 2229| m2229_12(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_1 +# 2229| m2229_13(vector<ClassWithDestructor>) = Chi : total:m2229_2, partial:m2229_12 +# 2229| r2229_14(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2229| r2229_15(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2229| r2229_16(vector<ClassWithDestructor> &) = CopyValue : r2229_15 +# 2229| m2229_17(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2229_14, r2229_16 +# 2229| r2229_18(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2229| r2229_19(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2229| r2229_20(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2229_19, m2229_17 +#-----| r0_49(glval<vector<ClassWithDestructor>>) = CopyValue : r2229_20 #-----| r0_50(glval<vector<ClassWithDestructor>>) = Convert : r0_49 -# 2215| r2215_21(glval<unknown>) = FunctionAddress[begin] : -# 2215| r2215_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_21, this:r0_50 -#-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, m2215_13 -# 2215| m2215_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_18, r2215_22 -# 2215| r2215_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2215| r2215_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_25, m2215_17 -#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_26 +# 2229| r2229_21(glval<unknown>) = FunctionAddress[begin] : +# 2229| r2229_22(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2229_21, this:r0_50 +#-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, m2229_13 +# 2229| m2229_23(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2229_18, r2229_22 +# 2229| r2229_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2229| r2229_25(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2229| r2229_26(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2229_25, m2229_17 +#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2229_26 #-----| r0_53(glval<vector<ClassWithDestructor>>) = Convert : r0_52 -# 2215| r2215_27(glval<unknown>) = FunctionAddress[end] : -# 2215| r2215_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_27, this:r0_53 -#-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, m2215_13 -# 2215| m2215_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_24, r2215_28 +# 2229| r2229_27(glval<unknown>) = FunctionAddress[end] : +# 2229| r2229_28(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2229_27, this:r0_53 +#-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, m2229_13 +# 2229| m2229_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2229_24, r2229_28 #-----| Goto -> Block 21 -# 2215| Block 21 -# 2215| m2215_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 20:m2215_23, from 22:m2215_68 -# 2215| m2215_31(unknown) = Phi : from 20:~m2215_11, from 22:~m2215_65 -# 2215| r2215_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_32 -# 2215| r2215_33(glval<unknown>) = FunctionAddress[operator!=] : +# 2229| Block 21 +# 2229| m2229_30(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Phi : from 20:m2229_23, from 22:m2229_68 +# 2229| m2229_31(unknown) = Phi : from 20:~m2229_11, from 22:~m2229_65 +# 2229| r2229_32(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_32 +# 2229| r2229_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_56(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| m0_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_56 -# 2215| r2215_34(glval<unknown>) = FunctionAddress[iterator] : -# 2215| r2215_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_35 +# 2229| r2229_34(glval<unknown>) = FunctionAddress[iterator] : +# 2229| r2229_35(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_35 #-----| r0_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_58 -# 2215| v2215_36(void) = Call[iterator] : func:r2215_34, this:r0_56, 0:r0_59 -# 2215| m2215_37(unknown) = ^CallSideEffect : ~m2215_31 -# 2215| m2215_38(unknown) = Chi : total:m2215_31, partial:m2215_37 -#-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m2215_29 -# 2215| m2215_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 -# 2215| m2215_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_57, partial:m2215_39 -#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, m2215_40 -# 2215| r2215_41(bool) = Call[operator!=] : func:r2215_33, this:r0_55, 0:r0_61 -# 2215| m2215_42(unknown) = ^CallSideEffect : ~m2215_38 -# 2215| m2215_43(unknown) = Chi : total:m2215_38, partial:m2215_42 -#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, m2215_30 -# 2215| v2215_44(void) = ConditionalBranch : r2215_41 +# 2229| v2229_36(void) = Call[iterator] : func:r2229_34, this:r0_56, 0:r0_59 +# 2229| m2229_37(unknown) = ^CallSideEffect : ~m2229_31 +# 2229| m2229_38(unknown) = Chi : total:m2229_31, partial:m2229_37 +#-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m2229_29 +# 2229| m2229_39(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 +# 2229| m2229_40(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m0_57, partial:m2229_39 +#-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, m2229_40 +# 2229| r2229_41(bool) = Call[operator!=] : func:r2229_33, this:r0_55, 0:r0_61 +# 2229| m2229_42(unknown) = ^CallSideEffect : ~m2229_38 +# 2229| m2229_43(unknown) = Chi : total:m2229_38, partial:m2229_42 +#-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, m2229_30 +# 2229| v2229_44(void) = ConditionalBranch : r2229_41 #-----| False -> Block 23 #-----| True -> Block 22 -# 2215| Block 22 -# 2215| r2215_45(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_46 -# 2215| r2215_47(glval<unknown>) = FunctionAddress[operator*] : -# 2215| r2215_48(ClassWithDestructor &) = Call[operator*] : func:r2215_47, this:r0_63 -# 2215| m2215_49(unknown) = ^CallSideEffect : ~m2215_43 -# 2215| m2215_50(unknown) = Chi : total:m2215_43, partial:m2215_49 -#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, m2215_30 -# 2215| r2215_51(ClassWithDestructor) = Load[?] : &:r2215_48, ~m2215_50 -# 2215| m2215_52(ClassWithDestructor) = Store[y] : &:r2215_45, r2215_51 -# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2216| m2216_2(ClassWithDestructor) = Uninitialized[z1] : &:r2216_1 -# 2216| r2216_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2216| v2216_4(void) = Call[ClassWithDestructor] : func:r2216_3, this:r2216_1 -# 2216| m2216_5(unknown) = ^CallSideEffect : ~m2215_50 -# 2216| m2216_6(unknown) = Chi : total:m2215_50, partial:m2216_5 -# 2216| m2216_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 -# 2216| m2216_8(ClassWithDestructor) = Chi : total:m2216_2, partial:m2216_7 -# 2217| r2217_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2217| m2217_2(ClassWithDestructor) = Uninitialized[z2] : &:r2217_1 -# 2217| r2217_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2217| v2217_4(void) = Call[ClassWithDestructor] : func:r2217_3, this:r2217_1 -# 2217| m2217_5(unknown) = ^CallSideEffect : ~m2216_6 -# 2217| m2217_6(unknown) = Chi : total:m2216_6, partial:m2217_5 -# 2217| m2217_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 -# 2217| m2217_8(ClassWithDestructor) = Chi : total:m2217_2, partial:m2217_7 -# 2218| r2218_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2218| r2218_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2218| v2218_3(void) = Call[~ClassWithDestructor] : func:r2218_2, this:r2218_1 -# 2218| m2218_4(unknown) = ^CallSideEffect : ~m2217_6 -# 2218| m2218_5(unknown) = Chi : total:m2217_6, partial:m2218_4 -# 2218| v2218_6(void) = ^IndirectReadSideEffect[-1] : &:r2218_1, m2217_8 -# 2218| m2218_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 -# 2218| m2218_8(ClassWithDestructor) = Chi : total:m2217_8, partial:m2218_7 -# 2218| r2218_9(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2218| r2218_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2218| v2218_11(void) = Call[~ClassWithDestructor] : func:r2218_10, this:r2218_9 -# 2218| m2218_12(unknown) = ^CallSideEffect : ~m2218_5 -# 2218| m2218_13(unknown) = Chi : total:m2218_5, partial:m2218_12 -# 2218| v2218_14(void) = ^IndirectReadSideEffect[-1] : &:r2218_9, m2216_8 -# 2218| m2218_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_9 -# 2218| m2218_16(ClassWithDestructor) = Chi : total:m2216_8, partial:m2218_15 -# 2215| r2215_53(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2215| v2215_55(void) = Call[~ClassWithDestructor] : func:r2215_54, this:r2215_53 -# 2215| m2215_56(unknown) = ^CallSideEffect : ~m2218_13 -# 2215| m2215_57(unknown) = Chi : total:m2218_13, partial:m2215_56 -# 2215| v2215_58(void) = ^IndirectReadSideEffect[-1] : &:r2215_53, m2215_52 -# 2215| m2215_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_53 -# 2215| m2215_60(ClassWithDestructor) = Chi : total:m2215_52, partial:m2215_59 -# 2215| r2215_61(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2215| r2215_62(glval<unknown>) = FunctionAddress[operator++] : -# 2215| r2215_63(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_62, this:r2215_61 -# 2215| m2215_64(unknown) = ^CallSideEffect : ~m2215_57 -# 2215| m2215_65(unknown) = Chi : total:m2215_57, partial:m2215_64 -# 2215| v2215_66(void) = ^IndirectReadSideEffect[-1] : &:r2215_61, m2215_30 -# 2215| m2215_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_61 -# 2215| m2215_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2215_30, partial:m2215_67 -# 2215| r2215_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_63 +# 2229| Block 22 +# 2229| r2229_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2229| r2229_46(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_46 +# 2229| r2229_47(glval<unknown>) = FunctionAddress[operator*] : +# 2229| r2229_48(ClassWithDestructor &) = Call[operator*] : func:r2229_47, this:r0_63 +# 2229| m2229_49(unknown) = ^CallSideEffect : ~m2229_43 +# 2229| m2229_50(unknown) = Chi : total:m2229_43, partial:m2229_49 +#-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, m2229_30 +# 2229| r2229_51(ClassWithDestructor) = Load[?] : &:r2229_48, ~m2229_50 +# 2229| m2229_52(ClassWithDestructor) = Store[y] : &:r2229_45, r2229_51 +# 2230| r2230_1(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2230| m2230_2(ClassWithDestructor) = Uninitialized[z1] : &:r2230_1 +# 2230| r2230_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2230| v2230_4(void) = Call[ClassWithDestructor] : func:r2230_3, this:r2230_1 +# 2230| m2230_5(unknown) = ^CallSideEffect : ~m2229_50 +# 2230| m2230_6(unknown) = Chi : total:m2229_50, partial:m2230_5 +# 2230| m2230_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2230_1 +# 2230| m2230_8(ClassWithDestructor) = Chi : total:m2230_2, partial:m2230_7 +# 2231| r2231_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2231| m2231_2(ClassWithDestructor) = Uninitialized[z2] : &:r2231_1 +# 2231| r2231_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2231| v2231_4(void) = Call[ClassWithDestructor] : func:r2231_3, this:r2231_1 +# 2231| m2231_5(unknown) = ^CallSideEffect : ~m2230_6 +# 2231| m2231_6(unknown) = Chi : total:m2230_6, partial:m2231_5 +# 2231| m2231_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 +# 2231| m2231_8(ClassWithDestructor) = Chi : total:m2231_2, partial:m2231_7 +# 2232| r2232_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2232| r2232_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_3(void) = Call[~ClassWithDestructor] : func:r2232_2, this:r2232_1 +# 2232| m2232_4(unknown) = ^CallSideEffect : ~m2231_6 +# 2232| m2232_5(unknown) = Chi : total:m2231_6, partial:m2232_4 +# 2232| v2232_6(void) = ^IndirectReadSideEffect[-1] : &:r2232_1, m2231_8 +# 2232| m2232_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 +# 2232| m2232_8(ClassWithDestructor) = Chi : total:m2231_8, partial:m2232_7 +# 2232| r2232_9(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2232| r2232_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_11(void) = Call[~ClassWithDestructor] : func:r2232_10, this:r2232_9 +# 2232| m2232_12(unknown) = ^CallSideEffect : ~m2232_5 +# 2232| m2232_13(unknown) = Chi : total:m2232_5, partial:m2232_12 +# 2232| v2232_14(void) = ^IndirectReadSideEffect[-1] : &:r2232_9, m2230_8 +# 2232| m2232_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_9 +# 2232| m2232_16(ClassWithDestructor) = Chi : total:m2230_8, partial:m2232_15 +# 2229| r2229_53(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2229| r2229_54(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2229| v2229_55(void) = Call[~ClassWithDestructor] : func:r2229_54, this:r2229_53 +# 2229| m2229_56(unknown) = ^CallSideEffect : ~m2232_13 +# 2229| m2229_57(unknown) = Chi : total:m2232_13, partial:m2229_56 +# 2229| v2229_58(void) = ^IndirectReadSideEffect[-1] : &:r2229_53, m2229_52 +# 2229| m2229_59(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_53 +# 2229| m2229_60(ClassWithDestructor) = Chi : total:m2229_52, partial:m2229_59 +# 2229| r2229_61(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2229| r2229_62(glval<unknown>) = FunctionAddress[operator++] : +# 2229| r2229_63(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2229_62, this:r2229_61 +# 2229| m2229_64(unknown) = ^CallSideEffect : ~m2229_57 +# 2229| m2229_65(unknown) = Chi : total:m2229_57, partial:m2229_64 +# 2229| v2229_66(void) = ^IndirectReadSideEffect[-1] : &:r2229_61, m2229_30 +# 2229| m2229_67(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_61 +# 2229| m2229_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Chi : total:m2229_30, partial:m2229_67 +# 2229| r2229_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2229_63 #-----| Goto (back edge) -> Block 21 -# 2219| Block 23 -# 2219| v2219_17(void) = NoOp : -# 2219| r2219_18(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2219| r2219_19(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_20(void) = Call[~ClassWithDestructor] : func:r2219_19, this:r2219_18 -# 2219| m2219_21(unknown) = ^CallSideEffect : ~m2215_43 -# 2219| m2219_22(unknown) = Chi : total:m2215_43, partial:m2219_21 -# 2219| v2219_23(void) = ^IndirectReadSideEffect[-1] : &:r2219_18, m2200_8 -# 2219| m2219_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_18 -# 2219| m2219_25(ClassWithDestructor) = Chi : total:m2200_8, partial:m2219_24 +# 2233| Block 23 +# 2233| v2233_17(void) = NoOp : +# 2233| r2233_18(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2233| r2233_19(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2233| v2233_20(void) = Call[~ClassWithDestructor] : func:r2233_19, this:r2233_18 +# 2233| m2233_21(unknown) = ^CallSideEffect : ~m2229_43 +# 2233| m2233_22(unknown) = Chi : total:m2229_43, partial:m2233_21 +# 2233| v2233_23(void) = ^IndirectReadSideEffect[-1] : &:r2233_18, m2214_8 +# 2233| m2233_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_18 +# 2233| m2233_25(ClassWithDestructor) = Chi : total:m2214_8, partial:m2233_24 #-----| Goto -> Block 1 -# 2184| Block 24 -# 2184| v2184_13(void) = Unreached : - -# 2221| void static_variable_with_destructor_1() -# 2221| Block 0 -# 2221| v2221_1(void) = EnterFunction : -# 2221| m2221_2(unknown) = AliasedDefinition : -# 2221| m2221_3(unknown) = InitializeNonLocal : -# 2221| m2221_4(unknown) = Chi : total:m2221_2, partial:m2221_3 -# 2222| r2222_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2222| m2222_2(ClassWithDestructor) = Uninitialized[a] : &:r2222_1 -# 2222| r2222_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2222| v2222_4(void) = Call[ClassWithDestructor] : func:r2222_3, this:r2222_1 -# 2222| m2222_5(unknown) = ^CallSideEffect : ~m2221_4 -# 2222| m2222_6(unknown) = Chi : total:m2221_4, partial:m2222_5 -# 2222| m2222_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 -# 2222| m2222_8(ClassWithDestructor) = Chi : total:m2222_2, partial:m2222_7 -# 2223| r2223_1(glval<bool>) = VariableAddress[b#init] : -# 2223| r2223_2(bool) = Load[b#init] : &:r2223_1, ~m2222_6 -# 2223| v2223_3(void) = ConditionalBranch : r2223_2 +# 2198| Block 24 +# 2198| v2198_13(void) = Unreached : + +# 2235| void static_variable_with_destructor_1() +# 2235| Block 0 +# 2235| v2235_1(void) = EnterFunction : +# 2235| m2235_2(unknown) = AliasedDefinition : +# 2235| m2235_3(unknown) = InitializeNonLocal : +# 2235| m2235_4(unknown) = Chi : total:m2235_2, partial:m2235_3 +# 2236| r2236_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2236| m2236_2(ClassWithDestructor) = Uninitialized[a] : &:r2236_1 +# 2236| r2236_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2236| v2236_4(void) = Call[ClassWithDestructor] : func:r2236_3, this:r2236_1 +# 2236| m2236_5(unknown) = ^CallSideEffect : ~m2235_4 +# 2236| m2236_6(unknown) = Chi : total:m2235_4, partial:m2236_5 +# 2236| m2236_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 +# 2236| m2236_8(ClassWithDestructor) = Chi : total:m2236_2, partial:m2236_7 +# 2237| r2237_1(glval<bool>) = VariableAddress[b#init] : +# 2237| r2237_2(bool) = Load[b#init] : &:r2237_1, ~m2236_6 +# 2237| v2237_3(void) = ConditionalBranch : r2237_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2223| Block 1 -# 2223| r2223_4(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2237| Block 1 +# 2237| r2237_4(glval<ClassWithDestructor>) = VariableAddress[b] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2223_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2222_6 -#-----| m0_4(unknown) = Chi : total:m2222_6, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2223_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2237_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2236_6 +#-----| m0_4(unknown) = Chi : total:m2236_6, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2223| r2223_5(bool) = Constant[1] : -# 2223| m2223_6(bool) = Store[b#init] : &:r2223_1, r2223_5 -# 2223| m2223_7(unknown) = Chi : total:m0_6, partial:m2223_6 +# 2237| r2237_5(bool) = Constant[1] : +# 2237| m2237_6(bool) = Store[b#init] : &:r2237_1, r2237_5 +# 2237| m2237_7(unknown) = Chi : total:m0_6, partial:m2237_6 #-----| Goto -> Block 2 -# 2224| Block 2 -# 2224| m2224_1(unknown) = Phi : from 0:~m2222_6, from 1:~m2223_7 -# 2224| v2224_2(void) = NoOp : -# 2224| r2224_3(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2224| r2224_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2224| v2224_5(void) = Call[~ClassWithDestructor] : func:r2224_4, this:r2224_3 -# 2224| m2224_6(unknown) = ^CallSideEffect : ~m2224_1 -# 2224| m2224_7(unknown) = Chi : total:m2224_1, partial:m2224_6 -# 2224| v2224_8(void) = ^IndirectReadSideEffect[-1] : &:r2224_3, m2222_8 -# 2224| m2224_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2224_3 -# 2224| m2224_10(ClassWithDestructor) = Chi : total:m2222_8, partial:m2224_9 -# 2221| v2221_5(void) = ReturnVoid : -# 2221| v2221_6(void) = AliasedUse : ~m2224_7 -# 2221| v2221_7(void) = ExitFunction : - -# 2226| void static_variable_with_destructor_2() -# 2226| Block 0 -# 2226| v2226_1(void) = EnterFunction : -# 2226| m2226_2(unknown) = AliasedDefinition : -# 2226| m2226_3(unknown) = InitializeNonLocal : -# 2226| m2226_4(unknown) = Chi : total:m2226_2, partial:m2226_3 -# 2227| r2227_1(glval<bool>) = VariableAddress[a#init] : -# 2227| r2227_2(bool) = Load[a#init] : &:r2227_1, ~m2226_3 -# 2227| v2227_3(void) = ConditionalBranch : r2227_2 +# 2238| Block 2 +# 2238| m2238_1(unknown) = Phi : from 0:~m2236_6, from 1:~m2237_7 +# 2238| v2238_2(void) = NoOp : +# 2238| r2238_3(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2238| r2238_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2238| v2238_5(void) = Call[~ClassWithDestructor] : func:r2238_4, this:r2238_3 +# 2238| m2238_6(unknown) = ^CallSideEffect : ~m2238_1 +# 2238| m2238_7(unknown) = Chi : total:m2238_1, partial:m2238_6 +# 2238| v2238_8(void) = ^IndirectReadSideEffect[-1] : &:r2238_3, m2236_8 +# 2238| m2238_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2238_3 +# 2238| m2238_10(ClassWithDestructor) = Chi : total:m2236_8, partial:m2238_9 +# 2235| v2235_5(void) = ReturnVoid : +# 2235| v2235_6(void) = AliasedUse : ~m2238_7 +# 2235| v2235_7(void) = ExitFunction : + +# 2240| void static_variable_with_destructor_2() +# 2240| Block 0 +# 2240| v2240_1(void) = EnterFunction : +# 2240| m2240_2(unknown) = AliasedDefinition : +# 2240| m2240_3(unknown) = InitializeNonLocal : +# 2240| m2240_4(unknown) = Chi : total:m2240_2, partial:m2240_3 +# 2241| r2241_1(glval<bool>) = VariableAddress[a#init] : +# 2241| r2241_2(bool) = Load[a#init] : &:r2241_1, ~m2240_3 +# 2241| v2241_3(void) = ConditionalBranch : r2241_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2227| Block 1 -# 2227| r2227_4(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2241| Block 1 +# 2241| r2241_4(glval<ClassWithDestructor>) = VariableAddress[a] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2227_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2226_4 -#-----| m0_4(unknown) = Chi : total:m2226_4, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2227_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2241_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2240_4 +#-----| m0_4(unknown) = Chi : total:m2240_4, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2241_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2227| r2227_5(bool) = Constant[1] : -# 2227| m2227_6(bool) = Store[a#init] : &:r2227_1, r2227_5 -# 2227| m2227_7(unknown) = Chi : total:m0_6, partial:m2227_6 +# 2241| r2241_5(bool) = Constant[1] : +# 2241| m2241_6(bool) = Store[a#init] : &:r2241_1, r2241_5 +# 2241| m2241_7(unknown) = Chi : total:m0_6, partial:m2241_6 #-----| Goto -> Block 2 -# 2228| Block 2 -# 2228| m2228_1(unknown) = Phi : from 0:~m2226_4, from 1:~m2227_7 -# 2228| r2228_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2228| m2228_3(ClassWithDestructor) = Uninitialized[b] : &:r2228_2 -# 2228| r2228_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2228| v2228_5(void) = Call[ClassWithDestructor] : func:r2228_4, this:r2228_2 -# 2228| m2228_6(unknown) = ^CallSideEffect : ~m2228_1 -# 2228| m2228_7(unknown) = Chi : total:m2228_1, partial:m2228_6 -# 2228| m2228_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2228_2 -# 2228| m2228_9(ClassWithDestructor) = Chi : total:m2228_3, partial:m2228_8 -# 2229| v2229_1(void) = NoOp : -# 2229| r2229_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2229| r2229_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2229| v2229_4(void) = Call[~ClassWithDestructor] : func:r2229_3, this:r2229_2 -# 2229| m2229_5(unknown) = ^CallSideEffect : ~m2228_7 -# 2229| m2229_6(unknown) = Chi : total:m2228_7, partial:m2229_5 -# 2229| v2229_7(void) = ^IndirectReadSideEffect[-1] : &:r2229_2, m2228_9 -# 2229| m2229_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_2 -# 2229| m2229_9(ClassWithDestructor) = Chi : total:m2228_9, partial:m2229_8 -# 2226| v2226_5(void) = ReturnVoid : -# 2226| v2226_6(void) = AliasedUse : ~m2229_6 -# 2226| v2226_7(void) = ExitFunction : - -# 2231| void static_variable_with_destructor_3() -# 2231| Block 0 -# 2231| v2231_1(void) = EnterFunction : -# 2231| m2231_2(unknown) = AliasedDefinition : -# 2231| m2231_3(unknown) = InitializeNonLocal : -# 2231| m2231_4(unknown) = Chi : total:m2231_2, partial:m2231_3 -# 2232| r2232_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2232| m2232_2(ClassWithDestructor) = Uninitialized[a] : &:r2232_1 -# 2232| r2232_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2232| v2232_4(void) = Call[ClassWithDestructor] : func:r2232_3, this:r2232_1 -# 2232| m2232_5(unknown) = ^CallSideEffect : ~m2231_4 -# 2232| m2232_6(unknown) = Chi : total:m2231_4, partial:m2232_5 -# 2232| m2232_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 -# 2232| m2232_8(ClassWithDestructor) = Chi : total:m2232_2, partial:m2232_7 -# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2233| m2233_2(ClassWithDestructor) = Uninitialized[b] : &:r2233_1 -# 2233| r2233_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2233| v2233_4(void) = Call[ClassWithDestructor] : func:r2233_3, this:r2233_1 -# 2233| m2233_5(unknown) = ^CallSideEffect : ~m2232_6 -# 2233| m2233_6(unknown) = Chi : total:m2232_6, partial:m2233_5 -# 2233| m2233_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2233| m2233_8(ClassWithDestructor) = Chi : total:m2233_2, partial:m2233_7 -# 2234| r2234_1(glval<bool>) = VariableAddress[c#init] : -# 2234| r2234_2(bool) = Load[c#init] : &:r2234_1, ~m2233_6 -# 2234| v2234_3(void) = ConditionalBranch : r2234_2 +# 2242| Block 2 +# 2242| m2242_1(unknown) = Phi : from 0:~m2240_4, from 1:~m2241_7 +# 2242| r2242_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2242| m2242_3(ClassWithDestructor) = Uninitialized[b] : &:r2242_2 +# 2242| r2242_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2242| v2242_5(void) = Call[ClassWithDestructor] : func:r2242_4, this:r2242_2 +# 2242| m2242_6(unknown) = ^CallSideEffect : ~m2242_1 +# 2242| m2242_7(unknown) = Chi : total:m2242_1, partial:m2242_6 +# 2242| m2242_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2242_2 +# 2242| m2242_9(ClassWithDestructor) = Chi : total:m2242_3, partial:m2242_8 +# 2243| v2243_1(void) = NoOp : +# 2243| r2243_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2243| r2243_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2243| v2243_4(void) = Call[~ClassWithDestructor] : func:r2243_3, this:r2243_2 +# 2243| m2243_5(unknown) = ^CallSideEffect : ~m2242_7 +# 2243| m2243_6(unknown) = Chi : total:m2242_7, partial:m2243_5 +# 2243| v2243_7(void) = ^IndirectReadSideEffect[-1] : &:r2243_2, m2242_9 +# 2243| m2243_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2243_2 +# 2243| m2243_9(ClassWithDestructor) = Chi : total:m2242_9, partial:m2243_8 +# 2240| v2240_5(void) = ReturnVoid : +# 2240| v2240_6(void) = AliasedUse : ~m2243_6 +# 2240| v2240_7(void) = ExitFunction : + +# 2245| void static_variable_with_destructor_3() +# 2245| Block 0 +# 2245| v2245_1(void) = EnterFunction : +# 2245| m2245_2(unknown) = AliasedDefinition : +# 2245| m2245_3(unknown) = InitializeNonLocal : +# 2245| m2245_4(unknown) = Chi : total:m2245_2, partial:m2245_3 +# 2246| r2246_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2246| m2246_2(ClassWithDestructor) = Uninitialized[a] : &:r2246_1 +# 2246| r2246_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2246| v2246_4(void) = Call[ClassWithDestructor] : func:r2246_3, this:r2246_1 +# 2246| m2246_5(unknown) = ^CallSideEffect : ~m2245_4 +# 2246| m2246_6(unknown) = Chi : total:m2245_4, partial:m2246_5 +# 2246| m2246_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2246_1 +# 2246| m2246_8(ClassWithDestructor) = Chi : total:m2246_2, partial:m2246_7 +# 2247| r2247_1(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2247| m2247_2(ClassWithDestructor) = Uninitialized[b] : &:r2247_1 +# 2247| r2247_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2247| v2247_4(void) = Call[ClassWithDestructor] : func:r2247_3, this:r2247_1 +# 2247| m2247_5(unknown) = ^CallSideEffect : ~m2246_6 +# 2247| m2247_6(unknown) = Chi : total:m2246_6, partial:m2247_5 +# 2247| m2247_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2247_1 +# 2247| m2247_8(ClassWithDestructor) = Chi : total:m2247_2, partial:m2247_7 +# 2248| r2248_1(glval<bool>) = VariableAddress[c#init] : +# 2248| r2248_2(bool) = Load[c#init] : &:r2248_1, ~m2247_6 +# 2248| v2248_3(void) = ConditionalBranch : r2248_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2234| Block 1 -# 2234| r2234_4(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2248| Block 1 +# 2248| r2248_4(glval<ClassWithDestructor>) = VariableAddress[c] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2234_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2233_6 -#-----| m0_4(unknown) = Chi : total:m2233_6, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2248_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2247_6 +#-----| m0_4(unknown) = Chi : total:m2247_6, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2248_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2234| r2234_5(bool) = Constant[1] : -# 2234| m2234_6(bool) = Store[c#init] : &:r2234_1, r2234_5 -# 2234| m2234_7(unknown) = Chi : total:m0_6, partial:m2234_6 +# 2248| r2248_5(bool) = Constant[1] : +# 2248| m2248_6(bool) = Store[c#init] : &:r2248_1, r2248_5 +# 2248| m2248_7(unknown) = Chi : total:m0_6, partial:m2248_6 #-----| Goto -> Block 2 -# 2235| Block 2 -# 2235| m2235_1(unknown) = Phi : from 0:~m2233_6, from 1:~m2234_7 -# 2235| v2235_2(void) = NoOp : -# 2235| r2235_3(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2235| r2235_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2235| v2235_5(void) = Call[~ClassWithDestructor] : func:r2235_4, this:r2235_3 -# 2235| m2235_6(unknown) = ^CallSideEffect : ~m2235_1 -# 2235| m2235_7(unknown) = Chi : total:m2235_1, partial:m2235_6 -# 2235| v2235_8(void) = ^IndirectReadSideEffect[-1] : &:r2235_3, m2233_8 -# 2235| m2235_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_3 -# 2235| m2235_10(ClassWithDestructor) = Chi : total:m2233_8, partial:m2235_9 -# 2235| r2235_11(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2235| r2235_12(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2235| v2235_13(void) = Call[~ClassWithDestructor] : func:r2235_12, this:r2235_11 -# 2235| m2235_14(unknown) = ^CallSideEffect : ~m2235_7 -# 2235| m2235_15(unknown) = Chi : total:m2235_7, partial:m2235_14 -# 2235| v2235_16(void) = ^IndirectReadSideEffect[-1] : &:r2235_11, m2232_8 -# 2235| m2235_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_11 -# 2235| m2235_18(ClassWithDestructor) = Chi : total:m2232_8, partial:m2235_17 -# 2231| v2231_5(void) = ReturnVoid : -# 2231| v2231_6(void) = AliasedUse : ~m2235_15 -# 2231| v2231_7(void) = ExitFunction : - -# 2237| ClassWithDestructor global_class_with_destructor -# 2237| Block 0 -# 2237| v2237_1(void) = EnterFunction : -# 2237| m2237_2(unknown) = AliasedDefinition : -# 2237| r2237_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : -# 2237| r2237_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2237| v2237_5(void) = Call[ClassWithDestructor] : func:r2237_4, this:r2237_3 -# 2237| m2237_6(unknown) = ^CallSideEffect : ~m2237_2 -# 2237| m2237_7(unknown) = Chi : total:m2237_2, partial:m2237_6 -# 2237| m2237_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_3 -# 2237| m2237_9(unknown) = Chi : total:m2237_7, partial:m2237_8 -# 2237| v2237_10(void) = ReturnVoid : -# 2237| v2237_11(void) = AliasedUse : ~m2237_9 -# 2237| v2237_12(void) = ExitFunction : - -# 2241| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) -# 2241| Block 0 -# 2241| v2241_1(void) = EnterFunction : -# 2241| m2241_2(unknown) = AliasedDefinition : -# 2241| m2241_3(unknown) = InitializeNonLocal : -# 2241| m2241_4(unknown) = Chi : total:m2241_2, partial:m2241_3 -# 2241| r2241_5(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2241| m2241_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2241_5 -# 2241| r2241_7(ClassWithDestructor &) = Load[t] : &:r2241_5, m2241_6 -# 2241| m2241_8(unknown) = InitializeIndirection[t] : &:r2241_7 -# 2241| r2241_9(glval<ClassWithDestructor &>) = VariableAddress[#return] : -# 2241| r2241_10(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2241| r2241_11(ClassWithDestructor &) = Load[t] : &:r2241_10, m2241_6 -# 2241| r2241_12(glval<ClassWithDestructor>) = CopyValue : r2241_11 -# 2241| r2241_13(ClassWithDestructor &) = CopyValue : r2241_12 -# 2241| m2241_14(ClassWithDestructor &) = Store[#return] : &:r2241_9, r2241_13 -# 2241| v2241_15(void) = ReturnIndirection[t] : &:r2241_7, m2241_8 -# 2241| r2241_16(glval<ClassWithDestructor &>) = VariableAddress[#return] : -# 2241| v2241_17(void) = ReturnValue : &:r2241_16, m2241_14 -# 2241| v2241_18(void) = AliasedUse : m2241_3 -# 2241| v2241_19(void) = ExitFunction : - -# 2241| int& vacuous_destructor_call::get<int>(int&) -# 2241| Block 0 -# 2241| v2241_1(void) = EnterFunction : -# 2241| m2241_2(unknown) = AliasedDefinition : -# 2241| m2241_3(unknown) = InitializeNonLocal : -# 2241| m2241_4(unknown) = Chi : total:m2241_2, partial:m2241_3 -# 2241| r2241_5(glval<int &>) = VariableAddress[t] : -# 2241| m2241_6(int &) = InitializeParameter[t] : &:r2241_5 -# 2241| r2241_7(int &) = Load[t] : &:r2241_5, m2241_6 -# 2241| m2241_8(unknown) = InitializeIndirection[t] : &:r2241_7 -# 2241| r2241_9(glval<int &>) = VariableAddress[#return] : -# 2241| r2241_10(glval<int &>) = VariableAddress[t] : -# 2241| r2241_11(int &) = Load[t] : &:r2241_10, m2241_6 -# 2241| r2241_12(glval<int>) = CopyValue : r2241_11 -# 2241| r2241_13(int &) = CopyValue : r2241_12 -# 2241| m2241_14(int &) = Store[#return] : &:r2241_9, r2241_13 -# 2241| v2241_15(void) = ReturnIndirection[t] : &:r2241_7, m2241_8 -# 2241| r2241_16(glval<int &>) = VariableAddress[#return] : -# 2241| v2241_17(void) = ReturnValue : &:r2241_16, m2241_14 -# 2241| v2241_18(void) = AliasedUse : m2241_3 -# 2241| v2241_19(void) = ExitFunction : - -# 2244| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) -# 2244| Block 0 -# 2244| v2244_1(void) = EnterFunction : -# 2244| m2244_2(unknown) = AliasedDefinition : -# 2244| m2244_3(unknown) = InitializeNonLocal : -# 2244| m2244_4(unknown) = Chi : total:m2244_2, partial:m2244_3 -# 2244| r2244_5(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2244| m2244_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2244_5 -# 2244| r2244_7(ClassWithDestructor &) = Load[t] : &:r2244_5, m2244_6 -# 2244| m2244_8(unknown) = InitializeIndirection[t] : &:r2244_7 -# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : -# 2245| r2245_2(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2245| r2245_3(ClassWithDestructor &) = Load[t] : &:r2245_2, m2244_6 -# 2245| r2245_4(glval<ClassWithDestructor>) = CopyValue : r2245_3 -# 2245| r2245_5(ClassWithDestructor &) = CopyValue : r2245_4 -# 2245| r2245_6(ClassWithDestructor &) = Call[get] : func:r2245_1, 0:r2245_5 -# 2245| m2245_7(unknown) = ^CallSideEffect : ~m2244_4 -# 2245| m2245_8(unknown) = Chi : total:m2244_4, partial:m2245_7 -# 2245| v2245_9(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m2244_8 -# 2245| m2245_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 -# 2245| m2245_11(unknown) = Chi : total:m2244_8, partial:m2245_10 -# 2245| r2245_12(glval<ClassWithDestructor>) = CopyValue : r2245_6 -# 2245| r2245_13(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2245| v2245_14(void) = Call[~ClassWithDestructor] : func:r2245_13 -# 2245| m2245_15(unknown) = ^CallSideEffect : ~m2245_8 -# 2245| m2245_16(unknown) = Chi : total:m2245_8, partial:m2245_15 -# 2245| v2245_17(void) = ^IndirectReadSideEffect[-1] : &:r2245_12, ~m2245_11 -# 2245| m2245_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2245_12 -# 2245| m2245_19(unknown) = Chi : total:m2245_11, partial:m2245_18 -# 2246| v2246_1(void) = NoOp : -# 2244| v2244_9(void) = ReturnIndirection[t] : &:r2244_7, m2245_19 -# 2244| v2244_10(void) = ReturnVoid : -# 2244| v2244_11(void) = AliasedUse : ~m2245_16 -# 2244| v2244_12(void) = ExitFunction : - -# 2244| void vacuous_destructor_call::call_destructor<int>(int&) -# 2244| Block 0 -# 2244| v2244_1(void) = EnterFunction : -# 2244| m2244_2(unknown) = AliasedDefinition : -# 2244| m2244_3(unknown) = InitializeNonLocal : -# 2244| m2244_4(unknown) = Chi : total:m2244_2, partial:m2244_3 -# 2244| r2244_5(glval<int &>) = VariableAddress[t] : -# 2244| m2244_6(int &) = InitializeParameter[t] : &:r2244_5 -# 2244| r2244_7(int &) = Load[t] : &:r2244_5, m2244_6 -# 2244| m2244_8(unknown) = InitializeIndirection[t] : &:r2244_7 -# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : -# 2245| r2245_2(glval<int &>) = VariableAddress[t] : -# 2245| r2245_3(int &) = Load[t] : &:r2245_2, m2244_6 -# 2245| r2245_4(glval<int>) = CopyValue : r2245_3 -# 2245| r2245_5(int &) = CopyValue : r2245_4 -# 2245| r2245_6(int &) = Call[get] : func:r2245_1, 0:r2245_5 -# 2245| m2245_7(unknown) = ^CallSideEffect : ~m2244_4 -# 2245| m2245_8(unknown) = Chi : total:m2244_4, partial:m2245_7 -# 2245| v2245_9(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m2244_8 -# 2245| m2245_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 -# 2245| m2245_11(unknown) = Chi : total:m2244_8, partial:m2245_10 -# 2245| r2245_12(glval<int>) = CopyValue : r2245_6 -# 2246| v2246_1(void) = NoOp : -# 2244| v2244_9(void) = ReturnIndirection[t] : &:r2244_7, m2245_11 -# 2244| v2244_10(void) = ReturnVoid : -# 2244| v2244_11(void) = AliasedUse : ~m2245_8 -# 2244| v2244_12(void) = ExitFunction : - -# 2248| void vacuous_destructor_call::non_vacuous_destructor_call() -# 2248| Block 0 -# 2248| v2248_1(void) = EnterFunction : -# 2248| m2248_2(unknown) = AliasedDefinition : -# 2248| m2248_3(unknown) = InitializeNonLocal : -# 2248| m2248_4(unknown) = Chi : total:m2248_2, partial:m2248_3 -# 2249| r2249_1(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2249| m2249_2(ClassWithDestructor) = Uninitialized[c] : &:r2249_1 -# 2249| r2249_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2249| v2249_4(void) = Call[ClassWithDestructor] : func:r2249_3, this:r2249_1 -# 2249| m2249_5(unknown) = ^CallSideEffect : ~m2248_4 -# 2249| m2249_6(unknown) = Chi : total:m2248_4, partial:m2249_5 -# 2249| m2249_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 -# 2249| m2249_8(ClassWithDestructor) = Chi : total:m2249_2, partial:m2249_7 -# 2250| r2250_1(glval<unknown>) = FunctionAddress[call_destructor] : -# 2250| r2250_2(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2250| r2250_3(ClassWithDestructor &) = CopyValue : r2250_2 -# 2250| v2250_4(void) = Call[call_destructor] : func:r2250_1, 0:r2250_3 -# 2250| m2250_5(unknown) = ^CallSideEffect : ~m2249_6 -# 2250| m2250_6(unknown) = Chi : total:m2249_6, partial:m2250_5 -# 2250| v2250_7(void) = ^BufferReadSideEffect[0] : &:r2250_3, ~m2249_8 -# 2250| m2250_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2250_3 -# 2250| m2250_9(ClassWithDestructor) = Chi : total:m2249_8, partial:m2250_8 -# 2251| v2251_1(void) = NoOp : -# 2251| r2251_2(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2251| r2251_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2251| v2251_4(void) = Call[~ClassWithDestructor] : func:r2251_3, this:r2251_2 -# 2251| m2251_5(unknown) = ^CallSideEffect : ~m2250_6 -# 2251| m2251_6(unknown) = Chi : total:m2250_6, partial:m2251_5 -# 2251| v2251_7(void) = ^IndirectReadSideEffect[-1] : &:r2251_2, m2250_9 -# 2251| m2251_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_2 -# 2251| m2251_9(ClassWithDestructor) = Chi : total:m2250_9, partial:m2251_8 -# 2248| v2248_5(void) = ReturnVoid : -# 2248| v2248_6(void) = AliasedUse : ~m2251_6 -# 2248| v2248_7(void) = ExitFunction : - -# 2253| void vacuous_destructor_call::vacuous_destructor_call() -# 2253| Block 0 -# 2253| v2253_1(void) = EnterFunction : -# 2253| m2253_2(unknown) = AliasedDefinition : -# 2253| m2253_3(unknown) = InitializeNonLocal : -# 2253| m2253_4(unknown) = Chi : total:m2253_2, partial:m2253_3 -# 2254| r2254_1(glval<int>) = VariableAddress[i] : -# 2254| m2254_2(int) = Uninitialized[i] : &:r2254_1 -# 2255| r2255_1(glval<unknown>) = FunctionAddress[call_destructor] : -# 2255| r2255_2(glval<int>) = VariableAddress[i] : -# 2255| r2255_3(int &) = CopyValue : r2255_2 -# 2255| v2255_4(void) = Call[call_destructor] : func:r2255_1, 0:r2255_3 -# 2255| m2255_5(unknown) = ^CallSideEffect : ~m2253_4 -# 2255| m2255_6(unknown) = Chi : total:m2253_4, partial:m2255_5 -# 2255| v2255_7(void) = ^BufferReadSideEffect[0] : &:r2255_3, ~m2254_2 -# 2255| m2255_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2255_3 -# 2255| m2255_9(int) = Chi : total:m2254_2, partial:m2255_8 -# 2256| v2256_1(void) = NoOp : -# 2253| v2253_5(void) = ReturnVoid : -# 2253| v2253_6(void) = AliasedUse : ~m2255_6 -# 2253| v2253_7(void) = ExitFunction : - -# 2259| void TryCatchDestructors(bool) -# 2259| Block 0 -# 2259| v2259_1(void) = EnterFunction : -# 2259| m2259_2(unknown) = AliasedDefinition : -# 2259| m2259_3(unknown) = InitializeNonLocal : -# 2259| m2259_4(unknown) = Chi : total:m2259_2, partial:m2259_3 -# 2259| r2259_5(glval<bool>) = VariableAddress[b] : -# 2259| m2259_6(bool) = InitializeParameter[b] : &:r2259_5 -# 2261| r2261_1(glval<String>) = VariableAddress[s] : -# 2261| m2261_2(String) = Uninitialized[s] : &:r2261_1 -# 2261| r2261_3(glval<unknown>) = FunctionAddress[String] : -# 2261| v2261_4(void) = Call[String] : func:r2261_3, this:r2261_1 -# 2261| m2261_5(unknown) = ^CallSideEffect : ~m2259_4 -# 2261| m2261_6(unknown) = Chi : total:m2259_4, partial:m2261_5 -# 2261| m2261_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2261_1 -# 2261| m2261_8(String) = Chi : total:m2261_2, partial:m2261_7 -# 2262| r2262_1(glval<bool>) = VariableAddress[b] : -# 2262| r2262_2(bool) = Load[b] : &:r2262_1, m2259_6 -# 2262| v2262_3(void) = ConditionalBranch : r2262_2 +# 2249| Block 2 +# 2249| m2249_1(unknown) = Phi : from 0:~m2247_6, from 1:~m2248_7 +# 2249| v2249_2(void) = NoOp : +# 2249| r2249_3(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2249| r2249_4(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2249| v2249_5(void) = Call[~ClassWithDestructor] : func:r2249_4, this:r2249_3 +# 2249| m2249_6(unknown) = ^CallSideEffect : ~m2249_1 +# 2249| m2249_7(unknown) = Chi : total:m2249_1, partial:m2249_6 +# 2249| v2249_8(void) = ^IndirectReadSideEffect[-1] : &:r2249_3, m2247_8 +# 2249| m2249_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_3 +# 2249| m2249_10(ClassWithDestructor) = Chi : total:m2247_8, partial:m2249_9 +# 2249| r2249_11(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2249| r2249_12(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2249| v2249_13(void) = Call[~ClassWithDestructor] : func:r2249_12, this:r2249_11 +# 2249| m2249_14(unknown) = ^CallSideEffect : ~m2249_7 +# 2249| m2249_15(unknown) = Chi : total:m2249_7, partial:m2249_14 +# 2249| v2249_16(void) = ^IndirectReadSideEffect[-1] : &:r2249_11, m2246_8 +# 2249| m2249_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_11 +# 2249| m2249_18(ClassWithDestructor) = Chi : total:m2246_8, partial:m2249_17 +# 2245| v2245_5(void) = ReturnVoid : +# 2245| v2245_6(void) = AliasedUse : ~m2249_15 +# 2245| v2245_7(void) = ExitFunction : + +# 2251| ClassWithDestructor global_class_with_destructor +# 2251| Block 0 +# 2251| v2251_1(void) = EnterFunction : +# 2251| m2251_2(unknown) = AliasedDefinition : +# 2251| r2251_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : +# 2251| r2251_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2251| v2251_5(void) = Call[ClassWithDestructor] : func:r2251_4, this:r2251_3 +# 2251| m2251_6(unknown) = ^CallSideEffect : ~m2251_2 +# 2251| m2251_7(unknown) = Chi : total:m2251_2, partial:m2251_6 +# 2251| m2251_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_3 +# 2251| m2251_9(unknown) = Chi : total:m2251_7, partial:m2251_8 +# 2251| v2251_10(void) = ReturnVoid : +# 2251| v2251_11(void) = AliasedUse : ~m2251_9 +# 2251| v2251_12(void) = ExitFunction : + +# 2255| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) +# 2255| Block 0 +# 2255| v2255_1(void) = EnterFunction : +# 2255| m2255_2(unknown) = AliasedDefinition : +# 2255| m2255_3(unknown) = InitializeNonLocal : +# 2255| m2255_4(unknown) = Chi : total:m2255_2, partial:m2255_3 +# 2255| r2255_5(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2255| m2255_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2255_5 +# 2255| r2255_7(ClassWithDestructor &) = Load[t] : &:r2255_5, m2255_6 +# 2255| m2255_8(unknown) = InitializeIndirection[t] : &:r2255_7 +# 2255| r2255_9(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2255| r2255_10(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2255| r2255_11(ClassWithDestructor &) = Load[t] : &:r2255_10, m2255_6 +# 2255| r2255_12(glval<ClassWithDestructor>) = CopyValue : r2255_11 +# 2255| r2255_13(ClassWithDestructor &) = CopyValue : r2255_12 +# 2255| m2255_14(ClassWithDestructor &) = Store[#return] : &:r2255_9, r2255_13 +# 2255| v2255_15(void) = ReturnIndirection[t] : &:r2255_7, m2255_8 +# 2255| r2255_16(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2255| v2255_17(void) = ReturnValue : &:r2255_16, m2255_14 +# 2255| v2255_18(void) = AliasedUse : m2255_3 +# 2255| v2255_19(void) = ExitFunction : + +# 2255| int& vacuous_destructor_call::get<int>(int&) +# 2255| Block 0 +# 2255| v2255_1(void) = EnterFunction : +# 2255| m2255_2(unknown) = AliasedDefinition : +# 2255| m2255_3(unknown) = InitializeNonLocal : +# 2255| m2255_4(unknown) = Chi : total:m2255_2, partial:m2255_3 +# 2255| r2255_5(glval<int &>) = VariableAddress[t] : +# 2255| m2255_6(int &) = InitializeParameter[t] : &:r2255_5 +# 2255| r2255_7(int &) = Load[t] : &:r2255_5, m2255_6 +# 2255| m2255_8(unknown) = InitializeIndirection[t] : &:r2255_7 +# 2255| r2255_9(glval<int &>) = VariableAddress[#return] : +# 2255| r2255_10(glval<int &>) = VariableAddress[t] : +# 2255| r2255_11(int &) = Load[t] : &:r2255_10, m2255_6 +# 2255| r2255_12(glval<int>) = CopyValue : r2255_11 +# 2255| r2255_13(int &) = CopyValue : r2255_12 +# 2255| m2255_14(int &) = Store[#return] : &:r2255_9, r2255_13 +# 2255| v2255_15(void) = ReturnIndirection[t] : &:r2255_7, m2255_8 +# 2255| r2255_16(glval<int &>) = VariableAddress[#return] : +# 2255| v2255_17(void) = ReturnValue : &:r2255_16, m2255_14 +# 2255| v2255_18(void) = AliasedUse : m2255_3 +# 2255| v2255_19(void) = ExitFunction : + +# 2258| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| m2258_2(unknown) = AliasedDefinition : +# 2258| m2258_3(unknown) = InitializeNonLocal : +# 2258| m2258_4(unknown) = Chi : total:m2258_2, partial:m2258_3 +# 2258| r2258_5(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2258| m2258_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2258_5 +# 2258| r2258_7(ClassWithDestructor &) = Load[t] : &:r2258_5, m2258_6 +# 2258| m2258_8(unknown) = InitializeIndirection[t] : &:r2258_7 +# 2259| r2259_1(glval<unknown>) = FunctionAddress[get] : +# 2259| r2259_2(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2259| r2259_3(ClassWithDestructor &) = Load[t] : &:r2259_2, m2258_6 +# 2259| r2259_4(glval<ClassWithDestructor>) = CopyValue : r2259_3 +# 2259| r2259_5(ClassWithDestructor &) = CopyValue : r2259_4 +# 2259| r2259_6(ClassWithDestructor &) = Call[get] : func:r2259_1, 0:r2259_5 +# 2259| m2259_7(unknown) = ^CallSideEffect : ~m2258_4 +# 2259| m2259_8(unknown) = Chi : total:m2258_4, partial:m2259_7 +# 2259| v2259_9(void) = ^BufferReadSideEffect[0] : &:r2259_5, ~m2258_8 +# 2259| m2259_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2259_5 +# 2259| m2259_11(unknown) = Chi : total:m2258_8, partial:m2259_10 +# 2259| r2259_12(glval<ClassWithDestructor>) = CopyValue : r2259_6 +# 2259| r2259_13(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2259| v2259_14(void) = Call[~ClassWithDestructor] : func:r2259_13 +# 2259| m2259_15(unknown) = ^CallSideEffect : ~m2259_8 +# 2259| m2259_16(unknown) = Chi : total:m2259_8, partial:m2259_15 +# 2259| v2259_17(void) = ^IndirectReadSideEffect[-1] : &:r2259_12, ~m2259_11 +# 2259| m2259_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2259_12 +# 2259| m2259_19(unknown) = Chi : total:m2259_11, partial:m2259_18 +# 2260| v2260_1(void) = NoOp : +# 2258| v2258_9(void) = ReturnIndirection[t] : &:r2258_7, m2259_19 +# 2258| v2258_10(void) = ReturnVoid : +# 2258| v2258_11(void) = AliasedUse : ~m2259_16 +# 2258| v2258_12(void) = ExitFunction : + +# 2258| void vacuous_destructor_call::call_destructor<int>(int&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| m2258_2(unknown) = AliasedDefinition : +# 2258| m2258_3(unknown) = InitializeNonLocal : +# 2258| m2258_4(unknown) = Chi : total:m2258_2, partial:m2258_3 +# 2258| r2258_5(glval<int &>) = VariableAddress[t] : +# 2258| m2258_6(int &) = InitializeParameter[t] : &:r2258_5 +# 2258| r2258_7(int &) = Load[t] : &:r2258_5, m2258_6 +# 2258| m2258_8(unknown) = InitializeIndirection[t] : &:r2258_7 +# 2259| r2259_1(glval<unknown>) = FunctionAddress[get] : +# 2259| r2259_2(glval<int &>) = VariableAddress[t] : +# 2259| r2259_3(int &) = Load[t] : &:r2259_2, m2258_6 +# 2259| r2259_4(glval<int>) = CopyValue : r2259_3 +# 2259| r2259_5(int &) = CopyValue : r2259_4 +# 2259| r2259_6(int &) = Call[get] : func:r2259_1, 0:r2259_5 +# 2259| m2259_7(unknown) = ^CallSideEffect : ~m2258_4 +# 2259| m2259_8(unknown) = Chi : total:m2258_4, partial:m2259_7 +# 2259| v2259_9(void) = ^BufferReadSideEffect[0] : &:r2259_5, ~m2258_8 +# 2259| m2259_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2259_5 +# 2259| m2259_11(unknown) = Chi : total:m2258_8, partial:m2259_10 +# 2259| r2259_12(glval<int>) = CopyValue : r2259_6 +# 2260| v2260_1(void) = NoOp : +# 2258| v2258_9(void) = ReturnIndirection[t] : &:r2258_7, m2259_11 +# 2258| v2258_10(void) = ReturnVoid : +# 2258| v2258_11(void) = AliasedUse : ~m2259_8 +# 2258| v2258_12(void) = ExitFunction : + +# 2262| void vacuous_destructor_call::non_vacuous_destructor_call() +# 2262| Block 0 +# 2262| v2262_1(void) = EnterFunction : +# 2262| m2262_2(unknown) = AliasedDefinition : +# 2262| m2262_3(unknown) = InitializeNonLocal : +# 2262| m2262_4(unknown) = Chi : total:m2262_2, partial:m2262_3 +# 2263| r2263_1(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2263| m2263_2(ClassWithDestructor) = Uninitialized[c] : &:r2263_1 +# 2263| r2263_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2263| v2263_4(void) = Call[ClassWithDestructor] : func:r2263_3, this:r2263_1 +# 2263| m2263_5(unknown) = ^CallSideEffect : ~m2262_4 +# 2263| m2263_6(unknown) = Chi : total:m2262_4, partial:m2263_5 +# 2263| m2263_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2263_1 +# 2263| m2263_8(ClassWithDestructor) = Chi : total:m2263_2, partial:m2263_7 +# 2264| r2264_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2264| r2264_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2264| r2264_3(ClassWithDestructor &) = CopyValue : r2264_2 +# 2264| v2264_4(void) = Call[call_destructor] : func:r2264_1, 0:r2264_3 +# 2264| m2264_5(unknown) = ^CallSideEffect : ~m2263_6 +# 2264| m2264_6(unknown) = Chi : total:m2263_6, partial:m2264_5 +# 2264| v2264_7(void) = ^BufferReadSideEffect[0] : &:r2264_3, ~m2263_8 +# 2264| m2264_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2264_3 +# 2264| m2264_9(ClassWithDestructor) = Chi : total:m2263_8, partial:m2264_8 +# 2265| v2265_1(void) = NoOp : +# 2265| r2265_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2265| r2265_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2265| v2265_4(void) = Call[~ClassWithDestructor] : func:r2265_3, this:r2265_2 +# 2265| m2265_5(unknown) = ^CallSideEffect : ~m2264_6 +# 2265| m2265_6(unknown) = Chi : total:m2264_6, partial:m2265_5 +# 2265| v2265_7(void) = ^IndirectReadSideEffect[-1] : &:r2265_2, m2264_9 +# 2265| m2265_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2265_2 +# 2265| m2265_9(ClassWithDestructor) = Chi : total:m2264_9, partial:m2265_8 +# 2262| v2262_5(void) = ReturnVoid : +# 2262| v2262_6(void) = AliasedUse : ~m2265_6 +# 2262| v2262_7(void) = ExitFunction : + +# 2267| void vacuous_destructor_call::vacuous_destructor_call() +# 2267| Block 0 +# 2267| v2267_1(void) = EnterFunction : +# 2267| m2267_2(unknown) = AliasedDefinition : +# 2267| m2267_3(unknown) = InitializeNonLocal : +# 2267| m2267_4(unknown) = Chi : total:m2267_2, partial:m2267_3 +# 2268| r2268_1(glval<int>) = VariableAddress[i] : +# 2268| m2268_2(int) = Uninitialized[i] : &:r2268_1 +# 2269| r2269_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2269| r2269_2(glval<int>) = VariableAddress[i] : +# 2269| r2269_3(int &) = CopyValue : r2269_2 +# 2269| v2269_4(void) = Call[call_destructor] : func:r2269_1, 0:r2269_3 +# 2269| m2269_5(unknown) = ^CallSideEffect : ~m2267_4 +# 2269| m2269_6(unknown) = Chi : total:m2267_4, partial:m2269_5 +# 2269| v2269_7(void) = ^BufferReadSideEffect[0] : &:r2269_3, ~m2268_2 +# 2269| m2269_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2269_3 +# 2269| m2269_9(int) = Chi : total:m2268_2, partial:m2269_8 +# 2270| v2270_1(void) = NoOp : +# 2267| v2267_5(void) = ReturnVoid : +# 2267| v2267_6(void) = AliasedUse : ~m2269_6 +# 2267| v2267_7(void) = ExitFunction : + +# 2273| void TryCatchDestructors(bool) +# 2273| Block 0 +# 2273| v2273_1(void) = EnterFunction : +# 2273| m2273_2(unknown) = AliasedDefinition : +# 2273| m2273_3(unknown) = InitializeNonLocal : +# 2273| m2273_4(unknown) = Chi : total:m2273_2, partial:m2273_3 +# 2273| r2273_5(glval<bool>) = VariableAddress[b] : +# 2273| m2273_6(bool) = InitializeParameter[b] : &:r2273_5 +# 2275| r2275_1(glval<String>) = VariableAddress[s] : +# 2275| m2275_2(String) = Uninitialized[s] : &:r2275_1 +# 2275| r2275_3(glval<unknown>) = FunctionAddress[String] : +# 2275| v2275_4(void) = Call[String] : func:r2275_3, this:r2275_1 +# 2275| m2275_5(unknown) = ^CallSideEffect : ~m2273_4 +# 2275| m2275_6(unknown) = Chi : total:m2273_4, partial:m2275_5 +# 2275| m2275_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2275_1 +# 2275| m2275_8(String) = Chi : total:m2275_2, partial:m2275_7 +# 2276| r2276_1(glval<bool>) = VariableAddress[b] : +# 2276| r2276_2(bool) = Load[b] : &:r2276_1, m2273_6 +# 2276| v2276_3(void) = ConditionalBranch : r2276_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 2259| Block 1 -# 2259| m2259_7(unknown) = Phi : from 2:~m2259_10, from 10:~m2275_1 -# 2259| v2259_8(void) = AliasedUse : ~m2259_7 -# 2259| v2259_9(void) = ExitFunction : +# 2273| Block 1 +# 2273| m2273_7(unknown) = Phi : from 2:~m2273_10, from 10:~m2289_1 +# 2273| v2273_8(void) = AliasedUse : ~m2273_7 +# 2273| v2273_9(void) = ExitFunction : -# 2259| Block 2 -# 2259| m2259_10(unknown) = Phi : from 6:~m2268_8, from 9:~m2261_6 -# 2259| v2259_11(void) = Unwind : +# 2273| Block 2 +# 2273| m2273_10(unknown) = Phi : from 6:~m2282_8, from 9:~m2275_6 +# 2273| v2273_11(void) = Unwind : #-----| Goto -> Block 1 -# 2263| Block 3 -# 2263| r2263_1(glval<char *>) = VariableAddress[#throw2263:7] : -# 2263| r2263_2(glval<char[15]>) = StringConstant["string literal"] : -# 2263| r2263_3(char *) = Convert : r2263_2 -# 2263| m2263_4(char *) = Store[#throw2263:7] : &:r2263_1, r2263_3 -# 2263| v2263_5(void) = ThrowValue : &:r2263_1, m2263_4 +# 2277| Block 3 +# 2277| r2277_1(glval<char *>) = VariableAddress[#throw2277:7] : +# 2277| r2277_2(glval<char[15]>) = StringConstant["string literal"] : +# 2277| r2277_3(char *) = Convert : r2277_2 +# 2277| m2277_4(char *) = Store[#throw2277:7] : &:r2277_1, r2277_3 +# 2277| v2277_5(void) = ThrowValue : &:r2277_1, m2277_4 #-----| Exception -> Block 5 -# 2265| Block 4 -# 2265| r2265_1(glval<String>) = VariableAddress[s2] : -# 2265| m2265_2(String) = Uninitialized[s2] : &:r2265_1 -# 2265| r2265_3(glval<unknown>) = FunctionAddress[String] : -# 2265| v2265_4(void) = Call[String] : func:r2265_3, this:r2265_1 -# 2265| m2265_5(unknown) = ^CallSideEffect : ~m2261_6 -# 2265| m2265_6(unknown) = Chi : total:m2261_6, partial:m2265_5 -# 2265| m2265_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2265_1 -# 2265| m2265_8(String) = Chi : total:m2265_2, partial:m2265_7 -# 2266| r2266_1(glval<String>) = VariableAddress[s2] : -# 2266| r2266_2(glval<unknown>) = FunctionAddress[~String] : -# 2266| v2266_3(void) = Call[~String] : func:r2266_2, this:r2266_1 -# 2266| m2266_4(unknown) = ^CallSideEffect : ~m2265_6 -# 2266| m2266_5(unknown) = Chi : total:m2265_6, partial:m2266_4 -# 2266| v2266_6(void) = ^IndirectReadSideEffect[-1] : &:r2266_1, m2265_8 -# 2266| m2266_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 -# 2266| m2266_8(String) = Chi : total:m2265_8, partial:m2266_7 -# 2266| r2266_9(glval<String>) = VariableAddress[s] : -# 2266| r2266_10(glval<unknown>) = FunctionAddress[~String] : -# 2266| v2266_11(void) = Call[~String] : func:r2266_10, this:r2266_9 -# 2266| m2266_12(unknown) = ^CallSideEffect : ~m2266_5 -# 2266| m2266_13(unknown) = Chi : total:m2266_5, partial:m2266_12 -# 2266| v2266_14(void) = ^IndirectReadSideEffect[-1] : &:r2266_9, m2261_8 -# 2266| m2266_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_9 -# 2266| m2266_16(String) = Chi : total:m2261_8, partial:m2266_15 +# 2279| Block 4 +# 2279| r2279_1(glval<String>) = VariableAddress[s2] : +# 2279| m2279_2(String) = Uninitialized[s2] : &:r2279_1 +# 2279| r2279_3(glval<unknown>) = FunctionAddress[String] : +# 2279| v2279_4(void) = Call[String] : func:r2279_3, this:r2279_1 +# 2279| m2279_5(unknown) = ^CallSideEffect : ~m2275_6 +# 2279| m2279_6(unknown) = Chi : total:m2275_6, partial:m2279_5 +# 2279| m2279_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2279_1 +# 2279| m2279_8(String) = Chi : total:m2279_2, partial:m2279_7 +# 2280| r2280_1(glval<String>) = VariableAddress[s2] : +# 2280| r2280_2(glval<unknown>) = FunctionAddress[~String] : +# 2280| v2280_3(void) = Call[~String] : func:r2280_2, this:r2280_1 +# 2280| m2280_4(unknown) = ^CallSideEffect : ~m2279_6 +# 2280| m2280_5(unknown) = Chi : total:m2279_6, partial:m2280_4 +# 2280| v2280_6(void) = ^IndirectReadSideEffect[-1] : &:r2280_1, m2279_8 +# 2280| m2280_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2280| m2280_8(String) = Chi : total:m2279_8, partial:m2280_7 +# 2280| r2280_9(glval<String>) = VariableAddress[s] : +# 2280| r2280_10(glval<unknown>) = FunctionAddress[~String] : +# 2280| v2280_11(void) = Call[~String] : func:r2280_10, this:r2280_9 +# 2280| m2280_12(unknown) = ^CallSideEffect : ~m2280_5 +# 2280| m2280_13(unknown) = Chi : total:m2280_5, partial:m2280_12 +# 2280| v2280_14(void) = ^IndirectReadSideEffect[-1] : &:r2280_9, m2275_8 +# 2280| m2280_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_9 +# 2280| m2280_16(String) = Chi : total:m2275_8, partial:m2280_15 #-----| Goto -> Block 10 -# 2267| Block 5 -# 2267| v2267_1(void) = CatchByType[const char *] : +# 2281| Block 5 +# 2281| v2281_1(void) = CatchByType[const char *] : #-----| Exception -> Block 7 #-----| Goto -> Block 6 -# 2267| Block 6 -# 2267| r2267_2(glval<char *>) = VariableAddress[s] : -# 2267| m2267_3(char *) = InitializeParameter[s] : &:r2267_2 -# 2267| r2267_4(char *) = Load[s] : &:r2267_2, m2267_3 -# 2267| m2267_5(unknown) = InitializeIndirection[s] : &:r2267_4 -# 2268| r2268_1(glval<String>) = VariableAddress[#throw2268:5] : -# 2268| m2268_2(String) = Uninitialized[#throw2268:5] : &:r2268_1 -# 2268| r2268_3(glval<unknown>) = FunctionAddress[String] : -# 2268| r2268_4(glval<char *>) = VariableAddress[s] : -# 2268| r2268_5(char *) = Load[s] : &:r2268_4, m2267_3 -# 2268| v2268_6(void) = Call[String] : func:r2268_3, this:r2268_1, 0:r2268_5 -# 2268| m2268_7(unknown) = ^CallSideEffect : ~m2261_6 -# 2268| m2268_8(unknown) = Chi : total:m2261_6, partial:m2268_7 -# 2268| v2268_9(void) = ^BufferReadSideEffect[0] : &:r2268_5, ~m2267_5 -# 2268| m2268_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2268_1 -# 2268| m2268_11(String) = Chi : total:m2268_2, partial:m2268_10 -# 2268| v2268_12(void) = ThrowValue : &:r2268_1, m2268_11 +# 2281| Block 6 +# 2281| r2281_2(glval<char *>) = VariableAddress[s] : +# 2281| m2281_3(char *) = InitializeParameter[s] : &:r2281_2 +# 2281| r2281_4(char *) = Load[s] : &:r2281_2, m2281_3 +# 2281| m2281_5(unknown) = InitializeIndirection[s] : &:r2281_4 +# 2282| r2282_1(glval<String>) = VariableAddress[#throw2282:5] : +# 2282| m2282_2(String) = Uninitialized[#throw2282:5] : &:r2282_1 +# 2282| r2282_3(glval<unknown>) = FunctionAddress[String] : +# 2282| r2282_4(glval<char *>) = VariableAddress[s] : +# 2282| r2282_5(char *) = Load[s] : &:r2282_4, m2281_3 +# 2282| v2282_6(void) = Call[String] : func:r2282_3, this:r2282_1, 0:r2282_5 +# 2282| m2282_7(unknown) = ^CallSideEffect : ~m2275_6 +# 2282| m2282_8(unknown) = Chi : total:m2275_6, partial:m2282_7 +# 2282| v2282_9(void) = ^BufferReadSideEffect[0] : &:r2282_5, ~m2281_5 +# 2282| m2282_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 +# 2282| m2282_11(String) = Chi : total:m2282_2, partial:m2282_10 +# 2282| v2282_12(void) = ThrowValue : &:r2282_1, m2282_11 #-----| Exception -> Block 2 -# 2270| Block 7 -# 2270| v2270_1(void) = CatchByType[const String &] : +# 2284| Block 7 +# 2284| v2284_1(void) = CatchByType[const String &] : #-----| Exception -> Block 9 #-----| Goto -> Block 8 -# 2270| Block 8 -# 2270| r2270_2(glval<String &>) = VariableAddress[e] : -# 2270| m2270_3(String &) = InitializeParameter[e] : &:r2270_2 -# 2270| r2270_4(String &) = Load[e] : &:r2270_2, m2270_3 -# 2270| m2270_5(unknown) = InitializeIndirection[e] : &:r2270_4 -# 2270| v2270_6(void) = NoOp : +# 2284| Block 8 +# 2284| r2284_2(glval<String &>) = VariableAddress[e] : +# 2284| m2284_3(String &) = InitializeParameter[e] : &:r2284_2 +# 2284| r2284_4(String &) = Load[e] : &:r2284_2, m2284_3 +# 2284| m2284_5(unknown) = InitializeIndirection[e] : &:r2284_4 +# 2284| v2284_6(void) = NoOp : #-----| Goto -> Block 10 -# 2272| Block 9 -# 2272| v2272_1(void) = CatchAny : -# 2273| v2273_1(void) = ReThrow : +# 2286| Block 9 +# 2286| v2286_1(void) = CatchAny : +# 2287| v2287_1(void) = ReThrow : #-----| Exception -> Block 2 -# 2275| Block 10 -# 2275| m2275_1(unknown) = Phi : from 4:~m2266_13, from 8:~m2261_6 -# 2275| v2275_2(void) = NoOp : -# 2259| v2259_12(void) = ReturnVoid : +# 2289| Block 10 +# 2289| m2289_1(unknown) = Phi : from 4:~m2280_13, from 8:~m2275_6 +# 2289| v2289_2(void) = NoOp : +# 2273| v2273_12(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2277| void IfDestructors(bool) -# 2277| Block 0 -# 2277| v2277_1(void) = EnterFunction : -# 2277| m2277_2(unknown) = AliasedDefinition : -# 2277| m2277_3(unknown) = InitializeNonLocal : -# 2277| m2277_4(unknown) = Chi : total:m2277_2, partial:m2277_3 -# 2277| r2277_5(glval<bool>) = VariableAddress[b] : -# 2277| m2277_6(bool) = InitializeParameter[b] : &:r2277_5 -# 2278| r2278_1(glval<String>) = VariableAddress[s1] : -# 2278| m2278_2(String) = Uninitialized[s1] : &:r2278_1 -# 2278| r2278_3(glval<unknown>) = FunctionAddress[String] : -# 2278| v2278_4(void) = Call[String] : func:r2278_3, this:r2278_1 -# 2278| m2278_5(unknown) = ^CallSideEffect : ~m2277_4 -# 2278| m2278_6(unknown) = Chi : total:m2277_4, partial:m2278_5 -# 2278| m2278_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 -# 2278| m2278_8(String) = Chi : total:m2278_2, partial:m2278_7 -# 2279| r2279_1(glval<bool>) = VariableAddress[b] : -# 2279| r2279_2(bool) = Load[b] : &:r2279_1, m2277_6 -# 2279| v2279_3(void) = ConditionalBranch : r2279_2 +# 2291| void IfDestructors(bool) +# 2291| Block 0 +# 2291| v2291_1(void) = EnterFunction : +# 2291| m2291_2(unknown) = AliasedDefinition : +# 2291| m2291_3(unknown) = InitializeNonLocal : +# 2291| m2291_4(unknown) = Chi : total:m2291_2, partial:m2291_3 +# 2291| r2291_5(glval<bool>) = VariableAddress[b] : +# 2291| m2291_6(bool) = InitializeParameter[b] : &:r2291_5 +# 2292| r2292_1(glval<String>) = VariableAddress[s1] : +# 2292| m2292_2(String) = Uninitialized[s1] : &:r2292_1 +# 2292| r2292_3(glval<unknown>) = FunctionAddress[String] : +# 2292| v2292_4(void) = Call[String] : func:r2292_3, this:r2292_1 +# 2292| m2292_5(unknown) = ^CallSideEffect : ~m2291_4 +# 2292| m2292_6(unknown) = Chi : total:m2291_4, partial:m2292_5 +# 2292| m2292_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2292_1 +# 2292| m2292_8(String) = Chi : total:m2292_2, partial:m2292_7 +# 2293| r2293_1(glval<bool>) = VariableAddress[b] : +# 2293| r2293_2(bool) = Load[b] : &:r2293_1, m2291_6 +# 2293| v2293_3(void) = ConditionalBranch : r2293_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2280| Block 1 -# 2280| r2280_1(glval<String>) = VariableAddress[s2] : -# 2280| m2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| r2280_3(glval<unknown>) = FunctionAddress[String] : -# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 -# 2280| m2280_5(unknown) = ^CallSideEffect : ~m2278_6 -# 2280| m2280_6(unknown) = Chi : total:m2278_6, partial:m2280_5 -# 2280| m2280_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 -# 2280| m2280_8(String) = Chi : total:m2280_2, partial:m2280_7 -# 2281| r2281_1(glval<String>) = VariableAddress[s2] : -# 2281| r2281_2(glval<unknown>) = FunctionAddress[~String] : -# 2281| v2281_3(void) = Call[~String] : func:r2281_2, this:r2281_1 -# 2281| m2281_4(unknown) = ^CallSideEffect : ~m2280_6 -# 2281| m2281_5(unknown) = Chi : total:m2280_6, partial:m2281_4 -# 2281| v2281_6(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, m2280_8 -# 2281| m2281_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 -# 2281| m2281_8(String) = Chi : total:m2280_8, partial:m2281_7 +# 2294| Block 1 +# 2294| r2294_1(glval<String>) = VariableAddress[s2] : +# 2294| m2294_2(String) = Uninitialized[s2] : &:r2294_1 +# 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : +# 2294| v2294_4(void) = Call[String] : func:r2294_3, this:r2294_1 +# 2294| m2294_5(unknown) = ^CallSideEffect : ~m2292_6 +# 2294| m2294_6(unknown) = Chi : total:m2292_6, partial:m2294_5 +# 2294| m2294_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 +# 2294| m2294_8(String) = Chi : total:m2294_2, partial:m2294_7 +# 2295| r2295_1(glval<String>) = VariableAddress[s2] : +# 2295| r2295_2(glval<unknown>) = FunctionAddress[~String] : +# 2295| v2295_3(void) = Call[~String] : func:r2295_2, this:r2295_1 +# 2295| m2295_4(unknown) = ^CallSideEffect : ~m2294_6 +# 2295| m2295_5(unknown) = Chi : total:m2294_6, partial:m2295_4 +# 2295| v2295_6(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, m2294_8 +# 2295| m2295_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 +# 2295| m2295_8(String) = Chi : total:m2294_8, partial:m2295_7 #-----| Goto -> Block 3 -# 2282| Block 2 -# 2282| r2282_1(glval<String>) = VariableAddress[s3] : -# 2282| m2282_2(String) = Uninitialized[s3] : &:r2282_1 -# 2282| r2282_3(glval<unknown>) = FunctionAddress[String] : -# 2282| v2282_4(void) = Call[String] : func:r2282_3, this:r2282_1 -# 2282| m2282_5(unknown) = ^CallSideEffect : ~m2278_6 -# 2282| m2282_6(unknown) = Chi : total:m2278_6, partial:m2282_5 -# 2282| m2282_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 -# 2282| m2282_8(String) = Chi : total:m2282_2, partial:m2282_7 -# 2283| r2283_1(glval<String>) = VariableAddress[s3] : -# 2283| r2283_2(glval<unknown>) = FunctionAddress[~String] : -# 2283| v2283_3(void) = Call[~String] : func:r2283_2, this:r2283_1 -# 2283| m2283_4(unknown) = ^CallSideEffect : ~m2282_6 -# 2283| m2283_5(unknown) = Chi : total:m2282_6, partial:m2283_4 -# 2283| v2283_6(void) = ^IndirectReadSideEffect[-1] : &:r2283_1, m2282_8 -# 2283| m2283_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 -# 2283| m2283_8(String) = Chi : total:m2282_8, partial:m2283_7 +# 2296| Block 2 +# 2296| r2296_1(glval<String>) = VariableAddress[s3] : +# 2296| m2296_2(String) = Uninitialized[s3] : &:r2296_1 +# 2296| r2296_3(glval<unknown>) = FunctionAddress[String] : +# 2296| v2296_4(void) = Call[String] : func:r2296_3, this:r2296_1 +# 2296| m2296_5(unknown) = ^CallSideEffect : ~m2292_6 +# 2296| m2296_6(unknown) = Chi : total:m2292_6, partial:m2296_5 +# 2296| m2296_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 +# 2296| m2296_8(String) = Chi : total:m2296_2, partial:m2296_7 +# 2297| r2297_1(glval<String>) = VariableAddress[s3] : +# 2297| r2297_2(glval<unknown>) = FunctionAddress[~String] : +# 2297| v2297_3(void) = Call[~String] : func:r2297_2, this:r2297_1 +# 2297| m2297_4(unknown) = ^CallSideEffect : ~m2296_6 +# 2297| m2297_5(unknown) = Chi : total:m2296_6, partial:m2297_4 +# 2297| v2297_6(void) = ^IndirectReadSideEffect[-1] : &:r2297_1, m2296_8 +# 2297| m2297_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 +# 2297| m2297_8(String) = Chi : total:m2296_8, partial:m2297_7 #-----| Goto -> Block 3 -# 2284| Block 3 -# 2284| m2284_1(unknown) = Phi : from 1:~m2281_5, from 2:~m2283_5 -# 2284| r2284_2(glval<String>) = VariableAddress[s4] : -# 2284| m2284_3(String) = Uninitialized[s4] : &:r2284_2 -# 2284| r2284_4(glval<unknown>) = FunctionAddress[String] : -# 2284| v2284_5(void) = Call[String] : func:r2284_4, this:r2284_2 -# 2284| m2284_6(unknown) = ^CallSideEffect : ~m2284_1 -# 2284| m2284_7(unknown) = Chi : total:m2284_1, partial:m2284_6 -# 2284| m2284_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_2 -# 2284| m2284_9(String) = Chi : total:m2284_3, partial:m2284_8 -# 2285| v2285_1(void) = NoOp : -# 2285| r2285_2(glval<String>) = VariableAddress[s4] : -# 2285| r2285_3(glval<unknown>) = FunctionAddress[~String] : -# 2285| v2285_4(void) = Call[~String] : func:r2285_3, this:r2285_2 -# 2285| m2285_5(unknown) = ^CallSideEffect : ~m2284_7 -# 2285| m2285_6(unknown) = Chi : total:m2284_7, partial:m2285_5 -# 2285| v2285_7(void) = ^IndirectReadSideEffect[-1] : &:r2285_2, m2284_9 -# 2285| m2285_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_2 -# 2285| m2285_9(String) = Chi : total:m2284_9, partial:m2285_8 -# 2285| r2285_10(glval<String>) = VariableAddress[s1] : -# 2285| r2285_11(glval<unknown>) = FunctionAddress[~String] : -# 2285| v2285_12(void) = Call[~String] : func:r2285_11, this:r2285_10 -# 2285| m2285_13(unknown) = ^CallSideEffect : ~m2285_6 -# 2285| m2285_14(unknown) = Chi : total:m2285_6, partial:m2285_13 -# 2285| v2285_15(void) = ^IndirectReadSideEffect[-1] : &:r2285_10, m2278_8 -# 2285| m2285_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_10 -# 2285| m2285_17(String) = Chi : total:m2278_8, partial:m2285_16 -# 2277| v2277_7(void) = ReturnVoid : -# 2277| v2277_8(void) = AliasedUse : ~m2285_14 -# 2277| v2277_9(void) = ExitFunction : - -# 2287| void ForDestructors() -# 2287| Block 0 -# 2287| v2287_1(void) = EnterFunction : -# 2287| m2287_2(unknown) = AliasedDefinition : -# 2287| m2287_3(unknown) = InitializeNonLocal : -# 2287| m2287_4(unknown) = Chi : total:m2287_2, partial:m2287_3 -# 2288| r2288_1(glval<char>) = VariableAddress[c] : -# 2288| r2288_2(char) = Constant[97] : -# 2288| m2288_3(char) = Store[c] : &:r2288_1, r2288_2 -# 2289| r2289_1(glval<String>) = VariableAddress[s] : -# 2289| m2289_2(String) = Uninitialized[s] : &:r2289_1 -# 2289| r2289_3(glval<unknown>) = FunctionAddress[String] : -# 2289| r2289_4(glval<char[6]>) = StringConstant["hello"] : -# 2289| r2289_5(char *) = Convert : r2289_4 -# 2289| v2289_6(void) = Call[String] : func:r2289_3, this:r2289_1, 0:r2289_5 -# 2289| m2289_7(unknown) = ^CallSideEffect : ~m2287_4 -# 2289| m2289_8(unknown) = Chi : total:m2287_4, partial:m2289_7 -# 2289| v2289_9(void) = ^BufferReadSideEffect[0] : &:r2289_5, ~m2287_3 -# 2289| m2289_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_1 -# 2289| m2289_11(String) = Chi : total:m2289_2, partial:m2289_10 +# 2298| Block 3 +# 2298| m2298_1(unknown) = Phi : from 1:~m2295_5, from 2:~m2297_5 +# 2298| r2298_2(glval<String>) = VariableAddress[s4] : +# 2298| m2298_3(String) = Uninitialized[s4] : &:r2298_2 +# 2298| r2298_4(glval<unknown>) = FunctionAddress[String] : +# 2298| v2298_5(void) = Call[String] : func:r2298_4, this:r2298_2 +# 2298| m2298_6(unknown) = ^CallSideEffect : ~m2298_1 +# 2298| m2298_7(unknown) = Chi : total:m2298_1, partial:m2298_6 +# 2298| m2298_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2298_2 +# 2298| m2298_9(String) = Chi : total:m2298_3, partial:m2298_8 +# 2299| v2299_1(void) = NoOp : +# 2299| r2299_2(glval<String>) = VariableAddress[s4] : +# 2299| r2299_3(glval<unknown>) = FunctionAddress[~String] : +# 2299| v2299_4(void) = Call[~String] : func:r2299_3, this:r2299_2 +# 2299| m2299_5(unknown) = ^CallSideEffect : ~m2298_7 +# 2299| m2299_6(unknown) = Chi : total:m2298_7, partial:m2299_5 +# 2299| v2299_7(void) = ^IndirectReadSideEffect[-1] : &:r2299_2, m2298_9 +# 2299| m2299_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_2 +# 2299| m2299_9(String) = Chi : total:m2298_9, partial:m2299_8 +# 2299| r2299_10(glval<String>) = VariableAddress[s1] : +# 2299| r2299_11(glval<unknown>) = FunctionAddress[~String] : +# 2299| v2299_12(void) = Call[~String] : func:r2299_11, this:r2299_10 +# 2299| m2299_13(unknown) = ^CallSideEffect : ~m2299_6 +# 2299| m2299_14(unknown) = Chi : total:m2299_6, partial:m2299_13 +# 2299| v2299_15(void) = ^IndirectReadSideEffect[-1] : &:r2299_10, m2292_8 +# 2299| m2299_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_10 +# 2299| m2299_17(String) = Chi : total:m2292_8, partial:m2299_16 +# 2291| v2291_7(void) = ReturnVoid : +# 2291| v2291_8(void) = AliasedUse : ~m2299_14 +# 2291| v2291_9(void) = ExitFunction : + +# 2301| void ForDestructors() +# 2301| Block 0 +# 2301| v2301_1(void) = EnterFunction : +# 2301| m2301_2(unknown) = AliasedDefinition : +# 2301| m2301_3(unknown) = InitializeNonLocal : +# 2301| m2301_4(unknown) = Chi : total:m2301_2, partial:m2301_3 +# 2302| r2302_1(glval<char>) = VariableAddress[c] : +# 2302| r2302_2(char) = Constant[97] : +# 2302| m2302_3(char) = Store[c] : &:r2302_1, r2302_2 +# 2303| r2303_1(glval<String>) = VariableAddress[s] : +# 2303| m2303_2(String) = Uninitialized[s] : &:r2303_1 +# 2303| r2303_3(glval<unknown>) = FunctionAddress[String] : +# 2303| r2303_4(glval<char[6]>) = StringConstant["hello"] : +# 2303| r2303_5(char *) = Convert : r2303_4 +# 2303| v2303_6(void) = Call[String] : func:r2303_3, this:r2303_1, 0:r2303_5 +# 2303| m2303_7(unknown) = ^CallSideEffect : ~m2301_4 +# 2303| m2303_8(unknown) = Chi : total:m2301_4, partial:m2303_7 +# 2303| v2303_9(void) = ^BufferReadSideEffect[0] : &:r2303_5, ~m2301_3 +# 2303| m2303_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 +# 2303| m2303_11(String) = Chi : total:m2303_2, partial:m2303_10 #-----| Goto -> Block 1 -# 2289| Block 1 -# 2289| m2289_12(String) = Phi : from 0:m2289_11, from 2:m2289_28 -# 2289| m2289_13(unknown) = Phi : from 0:~m2289_8, from 2:~m2289_25 -# 2289| m2289_14(char) = Phi : from 0:m2288_3, from 2:m2289_30 -# 2289| r2289_15(glval<char>) = VariableAddress[c] : -# 2289| r2289_16(char) = Load[c] : &:r2289_15, m2289_14 -# 2289| r2289_17(int) = Convert : r2289_16 -# 2289| r2289_18(int) = Constant[0] : -# 2289| r2289_19(bool) = CompareNE : r2289_17, r2289_18 -# 2289| v2289_20(void) = ConditionalBranch : r2289_19 +# 2303| Block 1 +# 2303| m2303_12(String) = Phi : from 0:m2303_11, from 2:m2303_28 +# 2303| m2303_13(unknown) = Phi : from 0:~m2303_8, from 2:~m2303_25 +# 2303| m2303_14(char) = Phi : from 0:m2302_3, from 2:m2303_30 +# 2303| r2303_15(glval<char>) = VariableAddress[c] : +# 2303| r2303_16(char) = Load[c] : &:r2303_15, m2303_14 +# 2303| r2303_17(int) = Convert : r2303_16 +# 2303| r2303_18(int) = Constant[0] : +# 2303| r2303_19(bool) = CompareNE : r2303_17, r2303_18 +# 2303| v2303_20(void) = ConditionalBranch : r2303_19 #-----| False -> Block 3 #-----| True -> Block 2 -# 2290| Block 2 -# 2290| r2290_1(glval<String>) = VariableAddress[s2] : -# 2290| m2290_2(String) = Uninitialized[s2] : &:r2290_1 -# 2290| r2290_3(glval<unknown>) = FunctionAddress[String] : -# 2290| v2290_4(void) = Call[String] : func:r2290_3, this:r2290_1 -# 2290| m2290_5(unknown) = ^CallSideEffect : ~m2289_13 -# 2290| m2290_6(unknown) = Chi : total:m2289_13, partial:m2290_5 -# 2290| m2290_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2290_1 -# 2290| m2290_8(String) = Chi : total:m2290_2, partial:m2290_7 -# 2291| r2291_1(glval<String>) = VariableAddress[s2] : -# 2291| r2291_2(glval<unknown>) = FunctionAddress[~String] : -# 2291| v2291_3(void) = Call[~String] : func:r2291_2, this:r2291_1 -# 2291| m2291_4(unknown) = ^CallSideEffect : ~m2290_6 -# 2291| m2291_5(unknown) = Chi : total:m2290_6, partial:m2291_4 -# 2291| v2291_6(void) = ^IndirectReadSideEffect[-1] : &:r2291_1, m2290_8 -# 2291| m2291_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2291_1 -# 2291| m2291_8(String) = Chi : total:m2290_8, partial:m2291_7 -# 2289| r2289_21(glval<String>) = VariableAddress[s] : -# 2289| r2289_22(glval<unknown>) = FunctionAddress[pop_back] : -# 2289| r2289_23(char) = Call[pop_back] : func:r2289_22, this:r2289_21 -# 2289| m2289_24(unknown) = ^CallSideEffect : ~m2291_5 -# 2289| m2289_25(unknown) = Chi : total:m2291_5, partial:m2289_24 -# 2289| v2289_26(void) = ^IndirectReadSideEffect[-1] : &:r2289_21, m2289_12 -# 2289| m2289_27(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_21 -# 2289| m2289_28(String) = Chi : total:m2289_12, partial:m2289_27 -# 2289| r2289_29(glval<char>) = VariableAddress[c] : -# 2289| m2289_30(char) = Store[c] : &:r2289_29, r2289_23 +# 2304| Block 2 +# 2304| r2304_1(glval<String>) = VariableAddress[s2] : +# 2304| m2304_2(String) = Uninitialized[s2] : &:r2304_1 +# 2304| r2304_3(glval<unknown>) = FunctionAddress[String] : +# 2304| v2304_4(void) = Call[String] : func:r2304_3, this:r2304_1 +# 2304| m2304_5(unknown) = ^CallSideEffect : ~m2303_13 +# 2304| m2304_6(unknown) = Chi : total:m2303_13, partial:m2304_5 +# 2304| m2304_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_1 +# 2304| m2304_8(String) = Chi : total:m2304_2, partial:m2304_7 +# 2305| r2305_1(glval<String>) = VariableAddress[s2] : +# 2305| r2305_2(glval<unknown>) = FunctionAddress[~String] : +# 2305| v2305_3(void) = Call[~String] : func:r2305_2, this:r2305_1 +# 2305| m2305_4(unknown) = ^CallSideEffect : ~m2304_6 +# 2305| m2305_5(unknown) = Chi : total:m2304_6, partial:m2305_4 +# 2305| v2305_6(void) = ^IndirectReadSideEffect[-1] : &:r2305_1, m2304_8 +# 2305| m2305_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2305_1 +# 2305| m2305_8(String) = Chi : total:m2304_8, partial:m2305_7 +# 2303| r2303_21(glval<String>) = VariableAddress[s] : +# 2303| r2303_22(glval<unknown>) = FunctionAddress[pop_back] : +# 2303| r2303_23(char) = Call[pop_back] : func:r2303_22, this:r2303_21 +# 2303| m2303_24(unknown) = ^CallSideEffect : ~m2305_5 +# 2303| m2303_25(unknown) = Chi : total:m2305_5, partial:m2303_24 +# 2303| v2303_26(void) = ^IndirectReadSideEffect[-1] : &:r2303_21, m2303_12 +# 2303| m2303_27(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_21 +# 2303| m2303_28(String) = Chi : total:m2303_12, partial:m2303_27 +# 2303| r2303_29(glval<char>) = VariableAddress[c] : +# 2303| m2303_30(char) = Store[c] : &:r2303_29, r2303_23 #-----| Goto (back edge) -> Block 1 -# 2289| Block 3 -# 2289| r2289_31(glval<String>) = VariableAddress[s] : -# 2289| r2289_32(glval<unknown>) = FunctionAddress[~String] : -# 2289| v2289_33(void) = Call[~String] : func:r2289_32, this:r2289_31 -# 2289| m2289_34(unknown) = ^CallSideEffect : ~m2289_13 -# 2289| m2289_35(unknown) = Chi : total:m2289_13, partial:m2289_34 -# 2289| v2289_36(void) = ^IndirectReadSideEffect[-1] : &:r2289_31, m2289_12 -# 2289| m2289_37(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_31 -# 2289| m2289_38(String) = Chi : total:m2289_12, partial:m2289_37 -# 2293| r2293_1(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_2(glval<vector<String>>) = VariableAddress[#temp2293:20] : -# 2293| m2293_3(vector<String>) = Uninitialized[#temp2293:20] : &:r2293_2 -# 2293| r2293_4(glval<unknown>) = FunctionAddress[vector] : -# 2293| r2293_5(glval<String>) = VariableAddress[#temp2293:40] : -# 2293| m2293_6(String) = Uninitialized[#temp2293:40] : &:r2293_5 -# 2293| r2293_7(glval<unknown>) = FunctionAddress[String] : -# 2293| r2293_8(glval<char[6]>) = StringConstant["hello"] : -# 2293| r2293_9(char *) = Convert : r2293_8 -# 2293| v2293_10(void) = Call[String] : func:r2293_7, this:r2293_5, 0:r2293_9 -# 2293| m2293_11(unknown) = ^CallSideEffect : ~m2289_35 -# 2293| m2293_12(unknown) = Chi : total:m2289_35, partial:m2293_11 -# 2293| v2293_13(void) = ^BufferReadSideEffect[0] : &:r2293_9, ~m2287_3 -# 2293| m2293_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_5 -# 2293| m2293_15(String) = Chi : total:m2293_6, partial:m2293_14 -# 2293| r2293_16(String) = Load[#temp2293:40] : &:r2293_5, m2293_15 -# 2293| v2293_17(void) = Call[vector] : func:r2293_4, this:r2293_2, 0:r2293_16 -# 2293| m2293_18(unknown) = ^CallSideEffect : ~m2293_12 -# 2293| m2293_19(unknown) = Chi : total:m2293_12, partial:m2293_18 -# 2293| m2293_20(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_2 -# 2293| m2293_21(vector<String>) = Chi : total:m2293_3, partial:m2293_20 -# 2293| r2293_22(vector<String> &) = CopyValue : r2293_2 -# 2293| m2293_23(vector<String> &&) = Store[(__range)] : &:r2293_1, r2293_22 -# 2293| r2293_24(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -# 2293| r2293_25(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_26(vector<String> &&) = Load[(__range)] : &:r2293_25, m2293_23 -#-----| r0_1(glval<vector<String>>) = CopyValue : r2293_26 +# 2303| Block 3 +# 2303| r2303_31(glval<String>) = VariableAddress[s] : +# 2303| r2303_32(glval<unknown>) = FunctionAddress[~String] : +# 2303| v2303_33(void) = Call[~String] : func:r2303_32, this:r2303_31 +# 2303| m2303_34(unknown) = ^CallSideEffect : ~m2303_13 +# 2303| m2303_35(unknown) = Chi : total:m2303_13, partial:m2303_34 +# 2303| v2303_36(void) = ^IndirectReadSideEffect[-1] : &:r2303_31, m2303_12 +# 2303| m2303_37(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_31 +# 2303| m2303_38(String) = Chi : total:m2303_12, partial:m2303_37 +# 2307| r2307_1(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2307| r2307_2(glval<vector<String>>) = VariableAddress[#temp2307:20] : +# 2307| m2307_3(vector<String>) = Uninitialized[#temp2307:20] : &:r2307_2 +# 2307| r2307_4(glval<unknown>) = FunctionAddress[vector] : +# 2307| r2307_5(glval<String>) = VariableAddress[#temp2307:40] : +# 2307| m2307_6(String) = Uninitialized[#temp2307:40] : &:r2307_5 +# 2307| r2307_7(glval<unknown>) = FunctionAddress[String] : +# 2307| r2307_8(glval<char[6]>) = StringConstant["hello"] : +# 2307| r2307_9(char *) = Convert : r2307_8 +# 2307| v2307_10(void) = Call[String] : func:r2307_7, this:r2307_5, 0:r2307_9 +# 2307| m2307_11(unknown) = ^CallSideEffect : ~m2303_35 +# 2307| m2307_12(unknown) = Chi : total:m2303_35, partial:m2307_11 +# 2307| v2307_13(void) = ^BufferReadSideEffect[0] : &:r2307_9, ~m2301_3 +# 2307| m2307_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_5 +# 2307| m2307_15(String) = Chi : total:m2307_6, partial:m2307_14 +# 2307| r2307_16(String) = Load[#temp2307:40] : &:r2307_5, m2307_15 +# 2307| v2307_17(void) = Call[vector] : func:r2307_4, this:r2307_2, 0:r2307_16 +# 2307| m2307_18(unknown) = ^CallSideEffect : ~m2307_12 +# 2307| m2307_19(unknown) = Chi : total:m2307_12, partial:m2307_18 +# 2307| m2307_20(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_2 +# 2307| m2307_21(vector<String>) = Chi : total:m2307_3, partial:m2307_20 +# 2307| r2307_22(vector<String> &) = CopyValue : r2307_2 +# 2307| m2307_23(vector<String> &&) = Store[(__range)] : &:r2307_1, r2307_22 +# 2307| r2307_24(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2307| r2307_25(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2307| r2307_26(vector<String> &&) = Load[(__range)] : &:r2307_25, m2307_23 +#-----| r0_1(glval<vector<String>>) = CopyValue : r2307_26 #-----| r0_2(glval<vector<String>>) = Convert : r0_1 -# 2293| r2293_27(glval<unknown>) = FunctionAddress[begin] : -# 2293| r2293_28(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2293_27, this:r0_2 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2293_21 -# 2293| m2293_29(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_24, r2293_28 -# 2293| r2293_30(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -# 2293| r2293_31(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_32(vector<String> &&) = Load[(__range)] : &:r2293_31, m2293_23 -#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_32 +# 2307| r2307_27(glval<unknown>) = FunctionAddress[begin] : +# 2307| r2307_28(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2307_27, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2307_21 +# 2307| m2307_29(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2307_24, r2307_28 +# 2307| r2307_30(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +# 2307| r2307_31(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2307| r2307_32(vector<String> &&) = Load[(__range)] : &:r2307_31, m2307_23 +#-----| r0_4(glval<vector<String>>) = CopyValue : r2307_32 #-----| r0_5(glval<vector<String>>) = Convert : r0_4 -# 2293| r2293_33(glval<unknown>) = FunctionAddress[end] : -# 2293| r2293_34(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_33, this:r0_5 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2293_21 -# 2293| m2293_35(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_30, r2293_34 +# 2307| r2307_33(glval<unknown>) = FunctionAddress[end] : +# 2307| r2307_34(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2307_33, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2307_21 +# 2307| m2307_35(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2307_30, r2307_34 #-----| Goto -> Block 4 -# 2293| Block 4 -# 2293| m2293_36(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Phi : from 3:m2293_29, from 5:m2293_83 -# 2293| m2293_37(unknown) = Phi : from 3:~m2293_19, from 5:~m2293_80 -# 2293| r2293_38(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_38 -# 2293| r2293_39(glval<unknown>) = FunctionAddress[operator!=] : +# 2307| Block 4 +# 2307| m2307_36(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Phi : from 3:m2307_29, from 5:m2307_83 +# 2307| m2307_37(unknown) = Phi : from 3:~m2307_19, from 5:~m2307_80 +# 2307| r2307_38(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_38 +# 2307| r2307_39(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2293| r2293_40(glval<unknown>) = FunctionAddress[iterator] : -# 2293| r2293_41(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_41 +# 2307| r2307_40(glval<unknown>) = FunctionAddress[iterator] : +# 2307| r2307_41(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_41 #-----| r0_11(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = CopyValue : r0_10 -# 2293| v2293_42(void) = Call[iterator] : func:r2293_40, this:r0_8, 0:r0_11 -# 2293| m2293_43(unknown) = ^CallSideEffect : ~m2293_37 -# 2293| m2293_44(unknown) = Chi : total:m2293_37, partial:m2293_43 -#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2293_35 -# 2293| m2293_45(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2293| m2293_46(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m0_9, partial:m2293_45 -#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, m2293_46 -# 2293| r2293_47(bool) = Call[operator!=] : func:r2293_39, this:r0_7, 0:r0_13 -# 2293| m2293_48(unknown) = ^CallSideEffect : ~m2293_44 -# 2293| m2293_49(unknown) = Chi : total:m2293_44, partial:m2293_48 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2293_36 -# 2293| v2293_50(void) = ConditionalBranch : r2293_47 +# 2307| v2307_42(void) = Call[iterator] : func:r2307_40, this:r0_8, 0:r0_11 +# 2307| m2307_43(unknown) = ^CallSideEffect : ~m2307_37 +# 2307| m2307_44(unknown) = Chi : total:m2307_37, partial:m2307_43 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2307_35 +# 2307| m2307_45(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2307| m2307_46(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m0_9, partial:m2307_45 +#-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, m2307_46 +# 2307| r2307_47(bool) = Call[operator!=] : func:r2307_39, this:r0_7, 0:r0_13 +# 2307| m2307_48(unknown) = ^CallSideEffect : ~m2307_44 +# 2307| m2307_49(unknown) = Chi : total:m2307_44, partial:m2307_48 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2307_36 +# 2307| v2307_50(void) = ConditionalBranch : r2307_47 #-----| False -> Block 6 #-----| True -> Block 5 -# 2293| Block 5 -# 2293| r2293_51(glval<String>) = VariableAddress[s] : -# 2293| m2293_52(String) = Uninitialized[s] : &:r2293_51 -# 2293| r2293_53(glval<unknown>) = FunctionAddress[String] : -# 2293| r2293_54(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_54 -# 2293| r2293_55(glval<unknown>) = FunctionAddress[operator*] : -# 2293| r2293_56(String &) = Call[operator*] : func:r2293_55, this:r0_15 -# 2293| m2293_57(unknown) = ^CallSideEffect : ~m2293_49 -# 2293| m2293_58(unknown) = Chi : total:m2293_49, partial:m2293_57 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2293_36 -# 2293| r2293_59(glval<String>) = CopyValue : r2293_56 -# 2293| r2293_60(glval<String>) = Convert : r2293_59 -# 2293| r2293_61(String &) = CopyValue : r2293_60 -# 2293| v2293_62(void) = Call[String] : func:r2293_53, this:r2293_51, 0:r2293_61 -# 2293| m2293_63(unknown) = ^CallSideEffect : ~m2293_58 -# 2293| m2293_64(unknown) = Chi : total:m2293_58, partial:m2293_63 -# 2293| v2293_65(void) = ^BufferReadSideEffect[0] : &:r2293_61, ~m2293_64 -# 2293| m2293_66(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_51 -# 2293| m2293_67(String) = Chi : total:m2293_52, partial:m2293_66 -# 2294| r2294_1(glval<String>) = VariableAddress[s2] : -# 2294| m2294_2(String) = Uninitialized[s2] : &:r2294_1 -# 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : -# 2294| v2294_4(void) = Call[String] : func:r2294_3, this:r2294_1 -# 2294| m2294_5(unknown) = ^CallSideEffect : ~m2293_64 -# 2294| m2294_6(unknown) = Chi : total:m2293_64, partial:m2294_5 -# 2294| m2294_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 -# 2294| m2294_8(String) = Chi : total:m2294_2, partial:m2294_7 -# 2295| r2295_1(glval<String>) = VariableAddress[s2] : -# 2295| r2295_2(glval<unknown>) = FunctionAddress[~String] : -# 2295| v2295_3(void) = Call[~String] : func:r2295_2, this:r2295_1 -# 2295| m2295_4(unknown) = ^CallSideEffect : ~m2294_6 -# 2295| m2295_5(unknown) = Chi : total:m2294_6, partial:m2295_4 -# 2295| v2295_6(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, m2294_8 -# 2295| m2295_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 -# 2295| m2295_8(String) = Chi : total:m2294_8, partial:m2295_7 -# 2293| r2293_68(glval<String>) = VariableAddress[s] : -# 2293| r2293_69(glval<unknown>) = FunctionAddress[~String] : -# 2293| v2293_70(void) = Call[~String] : func:r2293_69, this:r2293_68 -# 2293| m2293_71(unknown) = ^CallSideEffect : ~m2295_5 -# 2293| m2293_72(unknown) = Chi : total:m2295_5, partial:m2293_71 -# 2293| v2293_73(void) = ^IndirectReadSideEffect[-1] : &:r2293_68, m2293_67 -# 2293| m2293_74(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_68 -# 2293| m2293_75(String) = Chi : total:m2293_67, partial:m2293_74 -# 2293| r2293_76(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -# 2293| r2293_77(glval<unknown>) = FunctionAddress[operator++] : -# 2293| r2293_78(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_77, this:r2293_76 -# 2293| m2293_79(unknown) = ^CallSideEffect : ~m2293_72 -# 2293| m2293_80(unknown) = Chi : total:m2293_72, partial:m2293_79 -# 2293| v2293_81(void) = ^IndirectReadSideEffect[-1] : &:r2293_76, m2293_36 -# 2293| m2293_82(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_76 -# 2293| m2293_83(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m2293_36, partial:m2293_82 -# 2293| r2293_84(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_78 +# 2307| Block 5 +# 2307| r2307_51(glval<String>) = VariableAddress[s] : +# 2307| m2307_52(String) = Uninitialized[s] : &:r2307_51 +# 2307| r2307_53(glval<unknown>) = FunctionAddress[String] : +# 2307| r2307_54(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_54 +# 2307| r2307_55(glval<unknown>) = FunctionAddress[operator*] : +# 2307| r2307_56(String &) = Call[operator*] : func:r2307_55, this:r0_15 +# 2307| m2307_57(unknown) = ^CallSideEffect : ~m2307_49 +# 2307| m2307_58(unknown) = Chi : total:m2307_49, partial:m2307_57 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2307_36 +# 2307| r2307_59(glval<String>) = CopyValue : r2307_56 +# 2307| r2307_60(glval<String>) = Convert : r2307_59 +# 2307| r2307_61(String &) = CopyValue : r2307_60 +# 2307| v2307_62(void) = Call[String] : func:r2307_53, this:r2307_51, 0:r2307_61 +# 2307| m2307_63(unknown) = ^CallSideEffect : ~m2307_58 +# 2307| m2307_64(unknown) = Chi : total:m2307_58, partial:m2307_63 +# 2307| v2307_65(void) = ^BufferReadSideEffect[0] : &:r2307_61, ~m2307_64 +# 2307| m2307_66(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_51 +# 2307| m2307_67(String) = Chi : total:m2307_52, partial:m2307_66 +# 2308| r2308_1(glval<String>) = VariableAddress[s2] : +# 2308| m2308_2(String) = Uninitialized[s2] : &:r2308_1 +# 2308| r2308_3(glval<unknown>) = FunctionAddress[String] : +# 2308| v2308_4(void) = Call[String] : func:r2308_3, this:r2308_1 +# 2308| m2308_5(unknown) = ^CallSideEffect : ~m2307_64 +# 2308| m2308_6(unknown) = Chi : total:m2307_64, partial:m2308_5 +# 2308| m2308_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_1 +# 2308| m2308_8(String) = Chi : total:m2308_2, partial:m2308_7 +# 2309| r2309_1(glval<String>) = VariableAddress[s2] : +# 2309| r2309_2(glval<unknown>) = FunctionAddress[~String] : +# 2309| v2309_3(void) = Call[~String] : func:r2309_2, this:r2309_1 +# 2309| m2309_4(unknown) = ^CallSideEffect : ~m2308_6 +# 2309| m2309_5(unknown) = Chi : total:m2308_6, partial:m2309_4 +# 2309| v2309_6(void) = ^IndirectReadSideEffect[-1] : &:r2309_1, m2308_8 +# 2309| m2309_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1 +# 2309| m2309_8(String) = Chi : total:m2308_8, partial:m2309_7 +# 2307| r2307_68(glval<String>) = VariableAddress[s] : +# 2307| r2307_69(glval<unknown>) = FunctionAddress[~String] : +# 2307| v2307_70(void) = Call[~String] : func:r2307_69, this:r2307_68 +# 2307| m2307_71(unknown) = ^CallSideEffect : ~m2309_5 +# 2307| m2307_72(unknown) = Chi : total:m2309_5, partial:m2307_71 +# 2307| v2307_73(void) = ^IndirectReadSideEffect[-1] : &:r2307_68, m2307_67 +# 2307| m2307_74(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_68 +# 2307| m2307_75(String) = Chi : total:m2307_67, partial:m2307_74 +# 2307| r2307_76(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2307| r2307_77(glval<unknown>) = FunctionAddress[operator++] : +# 2307| r2307_78(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2307_77, this:r2307_76 +# 2307| m2307_79(unknown) = ^CallSideEffect : ~m2307_72 +# 2307| m2307_80(unknown) = Chi : total:m2307_72, partial:m2307_79 +# 2307| v2307_81(void) = ^IndirectReadSideEffect[-1] : &:r2307_76, m2307_36 +# 2307| m2307_82(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_76 +# 2307| m2307_83(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Chi : total:m2307_36, partial:m2307_82 +# 2307| r2307_84(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2307_78 #-----| Goto (back edge) -> Block 4 -# 2297| Block 6 -# 2297| r2297_1(glval<String>) = VariableAddress[s] : -# 2297| m2297_2(String) = Uninitialized[s] : &:r2297_1 -# 2297| r2297_3(glval<unknown>) = FunctionAddress[String] : -# 2297| r2297_4(glval<char[6]>) = StringConstant["hello"] : -# 2297| r2297_5(char *) = Convert : r2297_4 -# 2297| v2297_6(void) = Call[String] : func:r2297_3, this:r2297_1, 0:r2297_5 -# 2297| m2297_7(unknown) = ^CallSideEffect : ~m2293_49 -# 2297| m2297_8(unknown) = Chi : total:m2293_49, partial:m2297_7 -# 2297| v2297_9(void) = ^BufferReadSideEffect[0] : &:r2297_5, ~m2287_3 -# 2297| m2297_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 -# 2297| m2297_11(String) = Chi : total:m2297_2, partial:m2297_10 -# 2297| r2297_12(glval<String>) = VariableAddress[s2] : -# 2297| m2297_13(String) = Uninitialized[s2] : &:r2297_12 -# 2297| r2297_14(glval<unknown>) = FunctionAddress[String] : -# 2297| r2297_15(glval<char[6]>) = StringConstant["world"] : -# 2297| r2297_16(char *) = Convert : r2297_15 -# 2297| v2297_17(void) = Call[String] : func:r2297_14, this:r2297_12, 0:r2297_16 -# 2297| m2297_18(unknown) = ^CallSideEffect : ~m2297_8 -# 2297| m2297_19(unknown) = Chi : total:m2297_8, partial:m2297_18 -# 2297| v2297_20(void) = ^BufferReadSideEffect[0] : &:r2297_16, ~m2287_3 -# 2297| m2297_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_12 -# 2297| m2297_22(String) = Chi : total:m2297_13, partial:m2297_21 +# 2311| Block 6 +# 2311| r2311_1(glval<String>) = VariableAddress[s] : +# 2311| m2311_2(String) = Uninitialized[s] : &:r2311_1 +# 2311| r2311_3(glval<unknown>) = FunctionAddress[String] : +# 2311| r2311_4(glval<char[6]>) = StringConstant["hello"] : +# 2311| r2311_5(char *) = Convert : r2311_4 +# 2311| v2311_6(void) = Call[String] : func:r2311_3, this:r2311_1, 0:r2311_5 +# 2311| m2311_7(unknown) = ^CallSideEffect : ~m2307_49 +# 2311| m2311_8(unknown) = Chi : total:m2307_49, partial:m2311_7 +# 2311| v2311_9(void) = ^BufferReadSideEffect[0] : &:r2311_5, ~m2301_3 +# 2311| m2311_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_1 +# 2311| m2311_11(String) = Chi : total:m2311_2, partial:m2311_10 +# 2311| r2311_12(glval<String>) = VariableAddress[s2] : +# 2311| m2311_13(String) = Uninitialized[s2] : &:r2311_12 +# 2311| r2311_14(glval<unknown>) = FunctionAddress[String] : +# 2311| r2311_15(glval<char[6]>) = StringConstant["world"] : +# 2311| r2311_16(char *) = Convert : r2311_15 +# 2311| v2311_17(void) = Call[String] : func:r2311_14, this:r2311_12, 0:r2311_16 +# 2311| m2311_18(unknown) = ^CallSideEffect : ~m2311_8 +# 2311| m2311_19(unknown) = Chi : total:m2311_8, partial:m2311_18 +# 2311| v2311_20(void) = ^BufferReadSideEffect[0] : &:r2311_16, ~m2301_3 +# 2311| m2311_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_12 +# 2311| m2311_22(String) = Chi : total:m2311_13, partial:m2311_21 #-----| Goto -> Block 7 -# 2297| Block 7 -# 2297| m2297_23(String) = Phi : from 6:m2297_11, from 8:m2297_39 -# 2297| m2297_24(unknown) = Phi : from 6:~m2297_19, from 8:~m2297_36 -# 2297| m2297_25(char) = Phi : from 6:m2289_14, from 8:m2297_41 -# 2297| r2297_26(glval<char>) = VariableAddress[c] : -# 2297| r2297_27(char) = Load[c] : &:r2297_26, m2297_25 -# 2297| r2297_28(int) = Convert : r2297_27 -# 2297| r2297_29(int) = Constant[0] : -# 2297| r2297_30(bool) = CompareNE : r2297_28, r2297_29 -# 2297| v2297_31(void) = ConditionalBranch : r2297_30 +# 2311| Block 7 +# 2311| m2311_23(String) = Phi : from 6:m2311_11, from 8:m2311_39 +# 2311| m2311_24(unknown) = Phi : from 6:~m2311_19, from 8:~m2311_36 +# 2311| m2311_25(char) = Phi : from 6:m2303_14, from 8:m2311_41 +# 2311| r2311_26(glval<char>) = VariableAddress[c] : +# 2311| r2311_27(char) = Load[c] : &:r2311_26, m2311_25 +# 2311| r2311_28(int) = Convert : r2311_27 +# 2311| r2311_29(int) = Constant[0] : +# 2311| r2311_30(bool) = CompareNE : r2311_28, r2311_29 +# 2311| v2311_31(void) = ConditionalBranch : r2311_30 #-----| False -> Block 9 #-----| True -> Block 8 -# 2298| Block 8 -# 2298| r2298_1(char) = Constant[0] : -# 2298| r2298_2(glval<char>) = VariableAddress[c] : -# 2298| m2298_3(char) = Store[c] : &:r2298_2, r2298_1 -# 2297| r2297_32(glval<String>) = VariableAddress[s] : -# 2297| r2297_33(glval<unknown>) = FunctionAddress[pop_back] : -# 2297| r2297_34(char) = Call[pop_back] : func:r2297_33, this:r2297_32 -# 2297| m2297_35(unknown) = ^CallSideEffect : ~m2297_24 -# 2297| m2297_36(unknown) = Chi : total:m2297_24, partial:m2297_35 -# 2297| v2297_37(void) = ^IndirectReadSideEffect[-1] : &:r2297_32, m2297_23 -# 2297| m2297_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_32 -# 2297| m2297_39(String) = Chi : total:m2297_23, partial:m2297_38 -# 2297| r2297_40(glval<char>) = VariableAddress[c] : -# 2297| m2297_41(char) = Store[c] : &:r2297_40, r2297_34 +# 2312| Block 8 +# 2312| r2312_1(char) = Constant[0] : +# 2312| r2312_2(glval<char>) = VariableAddress[c] : +# 2312| m2312_3(char) = Store[c] : &:r2312_2, r2312_1 +# 2311| r2311_32(glval<String>) = VariableAddress[s] : +# 2311| r2311_33(glval<unknown>) = FunctionAddress[pop_back] : +# 2311| r2311_34(char) = Call[pop_back] : func:r2311_33, this:r2311_32 +# 2311| m2311_35(unknown) = ^CallSideEffect : ~m2311_24 +# 2311| m2311_36(unknown) = Chi : total:m2311_24, partial:m2311_35 +# 2311| v2311_37(void) = ^IndirectReadSideEffect[-1] : &:r2311_32, m2311_23 +# 2311| m2311_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_32 +# 2311| m2311_39(String) = Chi : total:m2311_23, partial:m2311_38 +# 2311| r2311_40(glval<char>) = VariableAddress[c] : +# 2311| m2311_41(char) = Store[c] : &:r2311_40, r2311_34 #-----| Goto (back edge) -> Block 7 -# 2297| Block 9 -# 2297| r2297_42(glval<String>) = VariableAddress[s2] : -# 2297| r2297_43(glval<unknown>) = FunctionAddress[~String] : -# 2297| v2297_44(void) = Call[~String] : func:r2297_43, this:r2297_42 -# 2297| m2297_45(unknown) = ^CallSideEffect : ~m2297_24 -# 2297| m2297_46(unknown) = Chi : total:m2297_24, partial:m2297_45 -# 2297| v2297_47(void) = ^IndirectReadSideEffect[-1] : &:r2297_42, m2297_22 -# 2297| m2297_48(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_42 -# 2297| m2297_49(String) = Chi : total:m2297_22, partial:m2297_48 -# 2297| r2297_50(glval<String>) = VariableAddress[s] : -# 2297| r2297_51(glval<unknown>) = FunctionAddress[~String] : -# 2297| v2297_52(void) = Call[~String] : func:r2297_51, this:r2297_50 -# 2297| m2297_53(unknown) = ^CallSideEffect : ~m2297_46 -# 2297| m2297_54(unknown) = Chi : total:m2297_46, partial:m2297_53 -# 2297| v2297_55(void) = ^IndirectReadSideEffect[-1] : &:r2297_50, m2297_23 -# 2297| m2297_56(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_50 -# 2297| m2297_57(String) = Chi : total:m2297_23, partial:m2297_56 -# 2300| v2300_1(void) = NoOp : -# 2287| v2287_5(void) = ReturnVoid : -# 2287| v2287_6(void) = AliasedUse : ~m2297_54 -# 2287| v2287_7(void) = ExitFunction : - -# 2302| void IfDestructors2(bool) -# 2302| Block 0 -# 2302| v2302_1(void) = EnterFunction : -# 2302| m2302_2(unknown) = AliasedDefinition : -# 2302| m2302_3(unknown) = InitializeNonLocal : -# 2302| m2302_4(unknown) = Chi : total:m2302_2, partial:m2302_3 -# 2302| r2302_5(glval<bool>) = VariableAddress[b] : -# 2302| m2302_6(bool) = InitializeParameter[b] : &:r2302_5 -# 2303| r2303_1(glval<String>) = VariableAddress[s] : -# 2303| m2303_2(String) = Uninitialized[s] : &:r2303_1 -# 2303| r2303_3(glval<unknown>) = FunctionAddress[String] : -# 2303| r2303_4(glval<char[6]>) = StringConstant["hello"] : -# 2303| r2303_5(char *) = Convert : r2303_4 -# 2303| v2303_6(void) = Call[String] : func:r2303_3, this:r2303_1, 0:r2303_5 -# 2303| m2303_7(unknown) = ^CallSideEffect : ~m2302_4 -# 2303| m2303_8(unknown) = Chi : total:m2302_4, partial:m2303_7 -# 2303| v2303_9(void) = ^BufferReadSideEffect[0] : &:r2303_5, ~m2302_3 -# 2303| m2303_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 -# 2303| m2303_11(String) = Chi : total:m2303_2, partial:m2303_10 -# 2303| r2303_12(glval<bool>) = VariableAddress[b] : -# 2303| r2303_13(bool) = Load[b] : &:r2303_12, m2302_6 -# 2303| v2303_14(void) = ConditionalBranch : r2303_13 +# 2311| Block 9 +# 2311| r2311_42(glval<String>) = VariableAddress[s2] : +# 2311| r2311_43(glval<unknown>) = FunctionAddress[~String] : +# 2311| v2311_44(void) = Call[~String] : func:r2311_43, this:r2311_42 +# 2311| m2311_45(unknown) = ^CallSideEffect : ~m2311_24 +# 2311| m2311_46(unknown) = Chi : total:m2311_24, partial:m2311_45 +# 2311| v2311_47(void) = ^IndirectReadSideEffect[-1] : &:r2311_42, m2311_22 +# 2311| m2311_48(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_42 +# 2311| m2311_49(String) = Chi : total:m2311_22, partial:m2311_48 +# 2311| r2311_50(glval<String>) = VariableAddress[s] : +# 2311| r2311_51(glval<unknown>) = FunctionAddress[~String] : +# 2311| v2311_52(void) = Call[~String] : func:r2311_51, this:r2311_50 +# 2311| m2311_53(unknown) = ^CallSideEffect : ~m2311_46 +# 2311| m2311_54(unknown) = Chi : total:m2311_46, partial:m2311_53 +# 2311| v2311_55(void) = ^IndirectReadSideEffect[-1] : &:r2311_50, m2311_23 +# 2311| m2311_56(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_50 +# 2311| m2311_57(String) = Chi : total:m2311_23, partial:m2311_56 +# 2314| v2314_1(void) = NoOp : +# 2301| v2301_5(void) = ReturnVoid : +# 2301| v2301_6(void) = AliasedUse : ~m2311_54 +# 2301| v2301_7(void) = ExitFunction : + +# 2316| void IfDestructors2(bool) +# 2316| Block 0 +# 2316| v2316_1(void) = EnterFunction : +# 2316| m2316_2(unknown) = AliasedDefinition : +# 2316| m2316_3(unknown) = InitializeNonLocal : +# 2316| m2316_4(unknown) = Chi : total:m2316_2, partial:m2316_3 +# 2316| r2316_5(glval<bool>) = VariableAddress[b] : +# 2316| m2316_6(bool) = InitializeParameter[b] : &:r2316_5 +# 2317| r2317_1(glval<String>) = VariableAddress[s] : +# 2317| m2317_2(String) = Uninitialized[s] : &:r2317_1 +# 2317| r2317_3(glval<unknown>) = FunctionAddress[String] : +# 2317| r2317_4(glval<char[6]>) = StringConstant["hello"] : +# 2317| r2317_5(char *) = Convert : r2317_4 +# 2317| v2317_6(void) = Call[String] : func:r2317_3, this:r2317_1, 0:r2317_5 +# 2317| m2317_7(unknown) = ^CallSideEffect : ~m2316_4 +# 2317| m2317_8(unknown) = Chi : total:m2316_4, partial:m2317_7 +# 2317| v2317_9(void) = ^BufferReadSideEffect[0] : &:r2317_5, ~m2316_3 +# 2317| m2317_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r2317_1 +# 2317| m2317_11(String) = Chi : total:m2317_2, partial:m2317_10 +# 2317| r2317_12(glval<bool>) = VariableAddress[b] : +# 2317| r2317_13(bool) = Load[b] : &:r2317_12, m2316_6 +# 2317| v2317_14(void) = ConditionalBranch : r2317_13 #-----| False -> Block 2 #-----| True -> Block 1 -# 2304| Block 1 -# 2304| r2304_1(glval<int>) = VariableAddress[x] : -# 2304| r2304_2(int) = Constant[0] : -# 2304| m2304_3(int) = Store[x] : &:r2304_1, r2304_2 +# 2318| Block 1 +# 2318| r2318_1(glval<int>) = VariableAddress[x] : +# 2318| r2318_2(int) = Constant[0] : +# 2318| m2318_3(int) = Store[x] : &:r2318_1, r2318_2 #-----| Goto -> Block 3 -# 2306| Block 2 -# 2306| r2306_1(glval<int>) = VariableAddress[y] : -# 2306| r2306_2(int) = Constant[0] : -# 2306| m2306_3(int) = Store[y] : &:r2306_1, r2306_2 +# 2320| Block 2 +# 2320| r2320_1(glval<int>) = VariableAddress[y] : +# 2320| r2320_2(int) = Constant[0] : +# 2320| m2320_3(int) = Store[y] : &:r2320_1, r2320_2 #-----| Goto -> Block 3 -# 2307| Block 3 -# 2307| r2307_1(glval<String>) = VariableAddress[s] : -# 2307| r2307_2(glval<unknown>) = FunctionAddress[~String] : -# 2307| v2307_3(void) = Call[~String] : func:r2307_2, this:r2307_1 -# 2307| m2307_4(unknown) = ^CallSideEffect : ~m2303_8 -# 2307| m2307_5(unknown) = Chi : total:m2303_8, partial:m2307_4 -# 2307| v2307_6(void) = ^IndirectReadSideEffect[-1] : &:r2307_1, m2303_11 -# 2307| m2307_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 -# 2307| m2307_8(String) = Chi : total:m2303_11, partial:m2307_7 -# 2308| v2308_1(void) = NoOp : -# 2302| v2302_7(void) = ReturnVoid : -# 2302| v2302_8(void) = AliasedUse : ~m2307_5 -# 2302| v2302_9(void) = ExitFunction : - -# 2317| void IfDestructors3(bool) -# 2317| Block 0 -# 2317| v2317_1(void) = EnterFunction : -# 2317| m2317_2(unknown) = AliasedDefinition : -# 2317| m2317_3(unknown) = InitializeNonLocal : -# 2317| m2317_4(unknown) = Chi : total:m2317_2, partial:m2317_3 -# 2317| r2317_5(glval<bool>) = VariableAddress[b] : -# 2317| m2317_6(bool) = InitializeParameter[b] : &:r2317_5 -# 2318| r2318_1(glval<Bool>) = VariableAddress[B] : -# 2318| m2318_2(Bool) = Uninitialized[B] : &:r2318_1 -# 2318| r2318_3(glval<unknown>) = FunctionAddress[Bool] : -# 2318| r2318_4(glval<bool>) = VariableAddress[b] : -# 2318| r2318_5(bool) = Load[b] : &:r2318_4, m2317_6 -# 2318| v2318_6(void) = Call[Bool] : func:r2318_3, this:r2318_1, 0:r2318_5 -# 2318| m2318_7(unknown) = ^CallSideEffect : ~m2317_4 -# 2318| m2318_8(unknown) = Chi : total:m2317_4, partial:m2318_7 -# 2318| m2318_9(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 -# 2318| m2318_10(Bool) = Chi : total:m2318_2, partial:m2318_9 -# 2318| r2318_11(glval<Bool>) = VariableAddress[B] : -# 2318| r2318_12(glval<unknown>) = FunctionAddress[operator bool] : -# 2318| r2318_13(bool) = Call[operator bool] : func:r2318_12, this:r2318_11 -# 2318| m2318_14(unknown) = ^CallSideEffect : ~m2318_8 -# 2318| m2318_15(unknown) = Chi : total:m2318_8, partial:m2318_14 -# 2318| v2318_16(void) = ^IndirectReadSideEffect[-1] : &:r2318_11, m2318_10 -# 2318| m2318_17(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_11 -# 2318| m2318_18(Bool) = Chi : total:m2318_10, partial:m2318_17 -# 2318| r2318_19(bool) = CopyValue : r2318_13 -# 2318| v2318_20(void) = ConditionalBranch : r2318_19 +# 2321| Block 3 +# 2321| r2321_1(glval<String>) = VariableAddress[s] : +# 2321| r2321_2(glval<unknown>) = FunctionAddress[~String] : +# 2321| v2321_3(void) = Call[~String] : func:r2321_2, this:r2321_1 +# 2321| m2321_4(unknown) = ^CallSideEffect : ~m2317_8 +# 2321| m2321_5(unknown) = Chi : total:m2317_8, partial:m2321_4 +# 2321| v2321_6(void) = ^IndirectReadSideEffect[-1] : &:r2321_1, m2317_11 +# 2321| m2321_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 +# 2321| m2321_8(String) = Chi : total:m2317_11, partial:m2321_7 +# 2322| v2322_1(void) = NoOp : +# 2316| v2316_7(void) = ReturnVoid : +# 2316| v2316_8(void) = AliasedUse : ~m2321_5 +# 2316| v2316_9(void) = ExitFunction : + +# 2331| void IfDestructors3(bool) +# 2331| Block 0 +# 2331| v2331_1(void) = EnterFunction : +# 2331| m2331_2(unknown) = AliasedDefinition : +# 2331| m2331_3(unknown) = InitializeNonLocal : +# 2331| m2331_4(unknown) = Chi : total:m2331_2, partial:m2331_3 +# 2331| r2331_5(glval<bool>) = VariableAddress[b] : +# 2331| m2331_6(bool) = InitializeParameter[b] : &:r2331_5 +# 2332| r2332_1(glval<Bool>) = VariableAddress[B] : +# 2332| m2332_2(Bool) = Uninitialized[B] : &:r2332_1 +# 2332| r2332_3(glval<unknown>) = FunctionAddress[Bool] : +# 2332| r2332_4(glval<bool>) = VariableAddress[b] : +# 2332| r2332_5(bool) = Load[b] : &:r2332_4, m2331_6 +# 2332| v2332_6(void) = Call[Bool] : func:r2332_3, this:r2332_1, 0:r2332_5 +# 2332| m2332_7(unknown) = ^CallSideEffect : ~m2331_4 +# 2332| m2332_8(unknown) = Chi : total:m2331_4, partial:m2332_7 +# 2332| m2332_9(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2332_1 +# 2332| m2332_10(Bool) = Chi : total:m2332_2, partial:m2332_9 +# 2332| r2332_11(glval<Bool>) = VariableAddress[B] : +# 2332| r2332_12(glval<unknown>) = FunctionAddress[operator bool] : +# 2332| r2332_13(bool) = Call[operator bool] : func:r2332_12, this:r2332_11 +# 2332| m2332_14(unknown) = ^CallSideEffect : ~m2332_8 +# 2332| m2332_15(unknown) = Chi : total:m2332_8, partial:m2332_14 +# 2332| v2332_16(void) = ^IndirectReadSideEffect[-1] : &:r2332_11, m2332_10 +# 2332| m2332_17(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2332_11 +# 2332| m2332_18(Bool) = Chi : total:m2332_10, partial:m2332_17 +# 2332| r2332_19(bool) = CopyValue : r2332_13 +# 2332| v2332_20(void) = ConditionalBranch : r2332_19 #-----| False -> Block 2 #-----| True -> Block 1 -# 2319| Block 1 -# 2319| r2319_1(glval<String>) = VariableAddress[s1] : -# 2319| m2319_2(String) = Uninitialized[s1] : &:r2319_1 -# 2319| r2319_3(glval<unknown>) = FunctionAddress[String] : -# 2319| v2319_4(void) = Call[String] : func:r2319_3, this:r2319_1 -# 2319| m2319_5(unknown) = ^CallSideEffect : ~m2318_15 -# 2319| m2319_6(unknown) = Chi : total:m2318_15, partial:m2319_5 -# 2319| m2319_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2319_1 -# 2319| m2319_8(String) = Chi : total:m2319_2, partial:m2319_7 -# 2320| r2320_1(glval<String>) = VariableAddress[s1] : -# 2320| r2320_2(glval<unknown>) = FunctionAddress[~String] : -# 2320| v2320_3(void) = Call[~String] : func:r2320_2, this:r2320_1 -# 2320| m2320_4(unknown) = ^CallSideEffect : ~m2319_6 -# 2320| m2320_5(unknown) = Chi : total:m2319_6, partial:m2320_4 -# 2320| v2320_6(void) = ^IndirectReadSideEffect[-1] : &:r2320_1, m2319_8 -# 2320| m2320_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 -# 2320| m2320_8(String) = Chi : total:m2319_8, partial:m2320_7 +# 2333| Block 1 +# 2333| r2333_1(glval<String>) = VariableAddress[s1] : +# 2333| m2333_2(String) = Uninitialized[s1] : &:r2333_1 +# 2333| r2333_3(glval<unknown>) = FunctionAddress[String] : +# 2333| v2333_4(void) = Call[String] : func:r2333_3, this:r2333_1 +# 2333| m2333_5(unknown) = ^CallSideEffect : ~m2332_15 +# 2333| m2333_6(unknown) = Chi : total:m2332_15, partial:m2333_5 +# 2333| m2333_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2333_1 +# 2333| m2333_8(String) = Chi : total:m2333_2, partial:m2333_7 +# 2334| r2334_1(glval<String>) = VariableAddress[s1] : +# 2334| r2334_2(glval<unknown>) = FunctionAddress[~String] : +# 2334| v2334_3(void) = Call[~String] : func:r2334_2, this:r2334_1 +# 2334| m2334_4(unknown) = ^CallSideEffect : ~m2333_6 +# 2334| m2334_5(unknown) = Chi : total:m2333_6, partial:m2334_4 +# 2334| v2334_6(void) = ^IndirectReadSideEffect[-1] : &:r2334_1, m2333_8 +# 2334| m2334_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2334_1 +# 2334| m2334_8(String) = Chi : total:m2333_8, partial:m2334_7 #-----| Goto -> Block 3 -# 2321| Block 2 -# 2321| r2321_1(glval<String>) = VariableAddress[s2] : -# 2321| m2321_2(String) = Uninitialized[s2] : &:r2321_1 -# 2321| r2321_3(glval<unknown>) = FunctionAddress[String] : -# 2321| v2321_4(void) = Call[String] : func:r2321_3, this:r2321_1 -# 2321| m2321_5(unknown) = ^CallSideEffect : ~m2318_15 -# 2321| m2321_6(unknown) = Chi : total:m2318_15, partial:m2321_5 -# 2321| m2321_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 -# 2321| m2321_8(String) = Chi : total:m2321_2, partial:m2321_7 -# 2322| r2322_1(glval<String>) = VariableAddress[s2] : -# 2322| r2322_2(glval<unknown>) = FunctionAddress[~String] : -# 2322| v2322_3(void) = Call[~String] : func:r2322_2, this:r2322_1 -# 2322| m2322_4(unknown) = ^CallSideEffect : ~m2321_6 -# 2322| m2322_5(unknown) = Chi : total:m2321_6, partial:m2322_4 -# 2322| v2322_6(void) = ^IndirectReadSideEffect[-1] : &:r2322_1, m2321_8 -# 2322| m2322_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2322_1 -# 2322| m2322_8(String) = Chi : total:m2321_8, partial:m2322_7 +# 2335| Block 2 +# 2335| r2335_1(glval<String>) = VariableAddress[s2] : +# 2335| m2335_2(String) = Uninitialized[s2] : &:r2335_1 +# 2335| r2335_3(glval<unknown>) = FunctionAddress[String] : +# 2335| v2335_4(void) = Call[String] : func:r2335_3, this:r2335_1 +# 2335| m2335_5(unknown) = ^CallSideEffect : ~m2332_15 +# 2335| m2335_6(unknown) = Chi : total:m2332_15, partial:m2335_5 +# 2335| m2335_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 +# 2335| m2335_8(String) = Chi : total:m2335_2, partial:m2335_7 +# 2336| r2336_1(glval<String>) = VariableAddress[s2] : +# 2336| r2336_2(glval<unknown>) = FunctionAddress[~String] : +# 2336| v2336_3(void) = Call[~String] : func:r2336_2, this:r2336_1 +# 2336| m2336_4(unknown) = ^CallSideEffect : ~m2335_6 +# 2336| m2336_5(unknown) = Chi : total:m2335_6, partial:m2336_4 +# 2336| v2336_6(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, m2335_8 +# 2336| m2336_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 +# 2336| m2336_8(String) = Chi : total:m2335_8, partial:m2336_7 #-----| Goto -> Block 3 -# 2322| Block 3 -# 2322| m2322_9(unknown) = Phi : from 1:~m2320_5, from 2:~m2322_5 -# 2322| r2322_10(glval<Bool>) = VariableAddress[B] : -# 2322| r2322_11(glval<unknown>) = FunctionAddress[~Bool] : -# 2322| v2322_12(void) = Call[~Bool] : func:r2322_11, this:r2322_10 -# 2322| m2322_13(unknown) = ^CallSideEffect : ~m2322_9 -# 2322| m2322_14(unknown) = Chi : total:m2322_9, partial:m2322_13 -# 2322| v2322_15(void) = ^IndirectReadSideEffect[-1] : &:r2322_10, m2318_18 -# 2322| m2322_16(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2322_10 -# 2322| m2322_17(Bool) = Chi : total:m2318_18, partial:m2322_16 -# 2323| v2323_1(void) = NoOp : -# 2317| v2317_7(void) = ReturnVoid : -# 2317| v2317_8(void) = AliasedUse : ~m2322_14 -# 2317| v2317_9(void) = ExitFunction : - -# 2325| void WhileLoopDestructors(bool) -# 2325| Block 0 -# 2325| v2325_1(void) = EnterFunction : -# 2325| m2325_2(unknown) = AliasedDefinition : -# 2325| m2325_3(unknown) = InitializeNonLocal : -# 2325| m2325_4(unknown) = Chi : total:m2325_2, partial:m2325_3 -# 2325| r2325_5(glval<bool>) = VariableAddress[b] : -# 2325| m2325_6(bool) = InitializeParameter[b] : &:r2325_5 -# 2327| r2327_1(glval<String>) = VariableAddress[s] : -# 2327| m2327_2(String) = Uninitialized[s] : &:r2327_1 -# 2327| r2327_3(glval<unknown>) = FunctionAddress[String] : -# 2327| v2327_4(void) = Call[String] : func:r2327_3, this:r2327_1 -# 2327| m2327_5(unknown) = ^CallSideEffect : ~m2325_4 -# 2327| m2327_6(unknown) = Chi : total:m2325_4, partial:m2327_5 -# 2327| m2327_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2327_1 -# 2327| m2327_8(String) = Chi : total:m2327_2, partial:m2327_7 +# 2336| Block 3 +# 2336| m2336_9(unknown) = Phi : from 1:~m2334_5, from 2:~m2336_5 +# 2336| r2336_10(glval<Bool>) = VariableAddress[B] : +# 2336| r2336_11(glval<unknown>) = FunctionAddress[~Bool] : +# 2336| v2336_12(void) = Call[~Bool] : func:r2336_11, this:r2336_10 +# 2336| m2336_13(unknown) = ^CallSideEffect : ~m2336_9 +# 2336| m2336_14(unknown) = Chi : total:m2336_9, partial:m2336_13 +# 2336| v2336_15(void) = ^IndirectReadSideEffect[-1] : &:r2336_10, m2332_18 +# 2336| m2336_16(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_10 +# 2336| m2336_17(Bool) = Chi : total:m2332_18, partial:m2336_16 +# 2337| v2337_1(void) = NoOp : +# 2331| v2331_7(void) = ReturnVoid : +# 2331| v2331_8(void) = AliasedUse : ~m2336_14 +# 2331| v2331_9(void) = ExitFunction : + +# 2339| void WhileLoopDestructors(bool) +# 2339| Block 0 +# 2339| v2339_1(void) = EnterFunction : +# 2339| m2339_2(unknown) = AliasedDefinition : +# 2339| m2339_3(unknown) = InitializeNonLocal : +# 2339| m2339_4(unknown) = Chi : total:m2339_2, partial:m2339_3 +# 2339| r2339_5(glval<bool>) = VariableAddress[b] : +# 2339| m2339_6(bool) = InitializeParameter[b] : &:r2339_5 +# 2341| r2341_1(glval<String>) = VariableAddress[s] : +# 2341| m2341_2(String) = Uninitialized[s] : &:r2341_1 +# 2341| r2341_3(glval<unknown>) = FunctionAddress[String] : +# 2341| v2341_4(void) = Call[String] : func:r2341_3, this:r2341_1 +# 2341| m2341_5(unknown) = ^CallSideEffect : ~m2339_4 +# 2341| m2341_6(unknown) = Chi : total:m2339_4, partial:m2341_5 +# 2341| m2341_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2341_1 +# 2341| m2341_8(String) = Chi : total:m2341_2, partial:m2341_7 #-----| Goto -> Block 1 -# 2328| Block 1 -# 2328| m2328_1(bool) = Phi : from 0:m2325_6, from 2:m2329_3 -# 2328| r2328_2(glval<bool>) = VariableAddress[b] : -# 2328| r2328_3(bool) = Load[b] : &:r2328_2, m2328_1 -# 2328| v2328_4(void) = ConditionalBranch : r2328_3 +# 2342| Block 1 +# 2342| m2342_1(bool) = Phi : from 0:m2339_6, from 2:m2343_3 +# 2342| r2342_2(glval<bool>) = VariableAddress[b] : +# 2342| r2342_3(bool) = Load[b] : &:r2342_2, m2342_1 +# 2342| v2342_4(void) = ConditionalBranch : r2342_3 #-----| False -> Block 3 #-----| True -> Block 2 -# 2329| Block 2 -# 2329| r2329_1(bool) = Constant[0] : -# 2329| r2329_2(glval<bool>) = VariableAddress[b] : -# 2329| m2329_3(bool) = Store[b] : &:r2329_2, r2329_1 +# 2343| Block 2 +# 2343| r2343_1(bool) = Constant[0] : +# 2343| r2343_2(glval<bool>) = VariableAddress[b] : +# 2343| m2343_3(bool) = Store[b] : &:r2343_2, r2343_1 #-----| Goto (back edge) -> Block 1 -# 2331| Block 3 -# 2331| r2331_1(glval<String>) = VariableAddress[s] : -# 2331| r2331_2(glval<unknown>) = FunctionAddress[~String] : -# 2331| v2331_3(void) = Call[~String] : func:r2331_2, this:r2331_1 -# 2331| m2331_4(unknown) = ^CallSideEffect : ~m2327_6 -# 2331| m2331_5(unknown) = Chi : total:m2327_6, partial:m2331_4 -# 2331| v2331_6(void) = ^IndirectReadSideEffect[-1] : &:r2331_1, m2327_8 -# 2331| m2331_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2331_1 -# 2331| m2331_8(String) = Chi : total:m2327_8, partial:m2331_7 +# 2345| Block 3 +# 2345| r2345_1(glval<String>) = VariableAddress[s] : +# 2345| r2345_2(glval<unknown>) = FunctionAddress[~String] : +# 2345| v2345_3(void) = Call[~String] : func:r2345_2, this:r2345_1 +# 2345| m2345_4(unknown) = ^CallSideEffect : ~m2341_6 +# 2345| m2345_5(unknown) = Chi : total:m2341_6, partial:m2345_4 +# 2345| v2345_6(void) = ^IndirectReadSideEffect[-1] : &:r2345_1, m2341_8 +# 2345| m2345_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2345_1 +# 2345| m2345_8(String) = Chi : total:m2341_8, partial:m2345_7 #-----| Goto -> Block 4 -# 2334| Block 4 -# 2334| m2334_1(unknown) = Phi : from 3:~m2331_5, from 5:~m2336_5 -# 2334| m2334_2(bool) = Phi : from 3:m2328_1, from 5:m2335_3 -# 2334| r2334_3(glval<Bool>) = VariableAddress[B] : -# 2334| m2334_4(Bool) = Uninitialized[B] : &:r2334_3 -# 2334| r2334_5(glval<unknown>) = FunctionAddress[Bool] : -# 2334| r2334_6(glval<bool>) = VariableAddress[b] : -# 2334| r2334_7(bool) = Load[b] : &:r2334_6, m2334_2 -# 2334| v2334_8(void) = Call[Bool] : func:r2334_5, this:r2334_3, 0:r2334_7 -# 2334| m2334_9(unknown) = ^CallSideEffect : ~m2334_1 -# 2334| m2334_10(unknown) = Chi : total:m2334_1, partial:m2334_9 -# 2334| m2334_11(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_3 -# 2334| m2334_12(Bool) = Chi : total:m2334_4, partial:m2334_11 -# 2334| r2334_13(glval<Bool>) = VariableAddress[B] : -# 2334| r2334_14(glval<unknown>) = FunctionAddress[operator bool] : -# 2334| r2334_15(bool) = Call[operator bool] : func:r2334_14, this:r2334_13 -# 2334| m2334_16(unknown) = ^CallSideEffect : ~m2334_10 -# 2334| m2334_17(unknown) = Chi : total:m2334_10, partial:m2334_16 -# 2334| v2334_18(void) = ^IndirectReadSideEffect[-1] : &:r2334_13, m2334_12 -# 2334| m2334_19(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_13 -# 2334| m2334_20(Bool) = Chi : total:m2334_12, partial:m2334_19 -# 2334| r2334_21(bool) = CopyValue : r2334_15 -# 2334| v2334_22(void) = ConditionalBranch : r2334_21 +# 2348| Block 4 +# 2348| m2348_1(unknown) = Phi : from 3:~m2345_5, from 5:~m2350_5 +# 2348| m2348_2(bool) = Phi : from 3:m2342_1, from 5:m2349_3 +# 2348| r2348_3(glval<Bool>) = VariableAddress[B] : +# 2348| m2348_4(Bool) = Uninitialized[B] : &:r2348_3 +# 2348| r2348_5(glval<unknown>) = FunctionAddress[Bool] : +# 2348| r2348_6(glval<bool>) = VariableAddress[b] : +# 2348| r2348_7(bool) = Load[b] : &:r2348_6, m2348_2 +# 2348| v2348_8(void) = Call[Bool] : func:r2348_5, this:r2348_3, 0:r2348_7 +# 2348| m2348_9(unknown) = ^CallSideEffect : ~m2348_1 +# 2348| m2348_10(unknown) = Chi : total:m2348_1, partial:m2348_9 +# 2348| m2348_11(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2348_3 +# 2348| m2348_12(Bool) = Chi : total:m2348_4, partial:m2348_11 +# 2348| r2348_13(glval<Bool>) = VariableAddress[B] : +# 2348| r2348_14(glval<unknown>) = FunctionAddress[operator bool] : +# 2348| r2348_15(bool) = Call[operator bool] : func:r2348_14, this:r2348_13 +# 2348| m2348_16(unknown) = ^CallSideEffect : ~m2348_10 +# 2348| m2348_17(unknown) = Chi : total:m2348_10, partial:m2348_16 +# 2348| v2348_18(void) = ^IndirectReadSideEffect[-1] : &:r2348_13, m2348_12 +# 2348| m2348_19(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2348_13 +# 2348| m2348_20(Bool) = Chi : total:m2348_12, partial:m2348_19 +# 2348| r2348_21(bool) = CopyValue : r2348_15 +# 2348| v2348_22(void) = ConditionalBranch : r2348_21 #-----| False -> Block 6 #-----| True -> Block 5 -# 2335| Block 5 -# 2335| r2335_1(bool) = Constant[0] : -# 2335| r2335_2(glval<bool>) = VariableAddress[b] : -# 2335| m2335_3(bool) = Store[b] : &:r2335_2, r2335_1 -# 2336| r2336_1(glval<Bool>) = VariableAddress[B] : -# 2336| r2336_2(glval<unknown>) = FunctionAddress[~Bool] : -# 2336| v2336_3(void) = Call[~Bool] : func:r2336_2, this:r2336_1 -# 2336| m2336_4(unknown) = ^CallSideEffect : ~m2334_17 -# 2336| m2336_5(unknown) = Chi : total:m2334_17, partial:m2336_4 -# 2336| v2336_6(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, m2334_20 -# 2336| m2336_7(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 -# 2336| m2336_8(Bool) = Chi : total:m2334_20, partial:m2336_7 +# 2349| Block 5 +# 2349| r2349_1(bool) = Constant[0] : +# 2349| r2349_2(glval<bool>) = VariableAddress[b] : +# 2349| m2349_3(bool) = Store[b] : &:r2349_2, r2349_1 +# 2350| r2350_1(glval<Bool>) = VariableAddress[B] : +# 2350| r2350_2(glval<unknown>) = FunctionAddress[~Bool] : +# 2350| v2350_3(void) = Call[~Bool] : func:r2350_2, this:r2350_1 +# 2350| m2350_4(unknown) = ^CallSideEffect : ~m2348_17 +# 2350| m2350_5(unknown) = Chi : total:m2348_17, partial:m2350_4 +# 2350| v2350_6(void) = ^IndirectReadSideEffect[-1] : &:r2350_1, m2348_20 +# 2350| m2350_7(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2350_1 +# 2350| m2350_8(Bool) = Chi : total:m2348_20, partial:m2350_7 #-----| Goto (back edge) -> Block 4 -# 2336| Block 6 -# 2336| r2336_9(glval<Bool>) = VariableAddress[B] : -# 2336| r2336_10(glval<unknown>) = FunctionAddress[~Bool] : -# 2336| v2336_11(void) = Call[~Bool] : func:r2336_10, this:r2336_9 -# 2336| m2336_12(unknown) = ^CallSideEffect : ~m2334_17 -# 2336| m2336_13(unknown) = Chi : total:m2334_17, partial:m2336_12 -# 2336| v2336_14(void) = ^IndirectReadSideEffect[-1] : &:r2336_9, m2334_20 -# 2336| m2336_15(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_9 -# 2336| m2336_16(Bool) = Chi : total:m2334_20, partial:m2336_15 -# 2338| v2338_1(void) = NoOp : -# 2325| v2325_7(void) = ReturnVoid : -# 2325| v2325_8(void) = AliasedUse : ~m2336_13 -# 2325| v2325_9(void) = ExitFunction : - -# 2340| void VoidFunc() -# 2340| Block 0 -# 2340| v2340_1(void) = EnterFunction : -# 2340| m2340_2(unknown) = AliasedDefinition : -# 2340| m2340_3(unknown) = InitializeNonLocal : -# 2340| m2340_4(unknown) = Chi : total:m2340_2, partial:m2340_3 -# 2340| v2340_5(void) = NoOp : -# 2340| v2340_6(void) = ReturnVoid : -# 2340| v2340_7(void) = AliasedUse : m2340_3 -# 2340| v2340_8(void) = ExitFunction : - -# 2342| void IfReturnDestructors(bool) -# 2342| Block 0 -# 2342| v2342_1(void) = EnterFunction : -# 2342| m2342_2(unknown) = AliasedDefinition : -# 2342| m2342_3(unknown) = InitializeNonLocal : -# 2342| m2342_4(unknown) = Chi : total:m2342_2, partial:m2342_3 -# 2342| r2342_5(glval<bool>) = VariableAddress[b] : -# 2342| m2342_6(bool) = InitializeParameter[b] : &:r2342_5 -# 2343| r2343_1(glval<String>) = VariableAddress[s] : -# 2343| m2343_2(String) = Uninitialized[s] : &:r2343_1 -# 2343| r2343_3(glval<unknown>) = FunctionAddress[String] : -# 2343| v2343_4(void) = Call[String] : func:r2343_3, this:r2343_1 -# 2343| m2343_5(unknown) = ^CallSideEffect : ~m2342_4 -# 2343| m2343_6(unknown) = Chi : total:m2342_4, partial:m2343_5 -# 2343| m2343_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2343_1 -# 2343| m2343_8(String) = Chi : total:m2343_2, partial:m2343_7 -# 2344| r2344_1(glval<bool>) = VariableAddress[b] : -# 2344| r2344_2(bool) = Load[b] : &:r2344_1, m2342_6 -# 2344| v2344_3(void) = ConditionalBranch : r2344_2 +# 2350| Block 6 +# 2350| r2350_9(glval<Bool>) = VariableAddress[B] : +# 2350| r2350_10(glval<unknown>) = FunctionAddress[~Bool] : +# 2350| v2350_11(void) = Call[~Bool] : func:r2350_10, this:r2350_9 +# 2350| m2350_12(unknown) = ^CallSideEffect : ~m2348_17 +# 2350| m2350_13(unknown) = Chi : total:m2348_17, partial:m2350_12 +# 2350| v2350_14(void) = ^IndirectReadSideEffect[-1] : &:r2350_9, m2348_20 +# 2350| m2350_15(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2350_9 +# 2350| m2350_16(Bool) = Chi : total:m2348_20, partial:m2350_15 +# 2352| v2352_1(void) = NoOp : +# 2339| v2339_7(void) = ReturnVoid : +# 2339| v2339_8(void) = AliasedUse : ~m2350_13 +# 2339| v2339_9(void) = ExitFunction : + +# 2354| void VoidFunc() +# 2354| Block 0 +# 2354| v2354_1(void) = EnterFunction : +# 2354| m2354_2(unknown) = AliasedDefinition : +# 2354| m2354_3(unknown) = InitializeNonLocal : +# 2354| m2354_4(unknown) = Chi : total:m2354_2, partial:m2354_3 +# 2354| v2354_5(void) = NoOp : +# 2354| v2354_6(void) = ReturnVoid : +# 2354| v2354_7(void) = AliasedUse : m2354_3 +# 2354| v2354_8(void) = ExitFunction : + +# 2356| void IfReturnDestructors(bool) +# 2356| Block 0 +# 2356| v2356_1(void) = EnterFunction : +# 2356| m2356_2(unknown) = AliasedDefinition : +# 2356| m2356_3(unknown) = InitializeNonLocal : +# 2356| m2356_4(unknown) = Chi : total:m2356_2, partial:m2356_3 +# 2356| r2356_5(glval<bool>) = VariableAddress[b] : +# 2356| m2356_6(bool) = InitializeParameter[b] : &:r2356_5 +# 2357| r2357_1(glval<String>) = VariableAddress[s] : +# 2357| m2357_2(String) = Uninitialized[s] : &:r2357_1 +# 2357| r2357_3(glval<unknown>) = FunctionAddress[String] : +# 2357| v2357_4(void) = Call[String] : func:r2357_3, this:r2357_1 +# 2357| m2357_5(unknown) = ^CallSideEffect : ~m2356_4 +# 2357| m2357_6(unknown) = Chi : total:m2356_4, partial:m2357_5 +# 2357| m2357_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2357_1 +# 2357| m2357_8(String) = Chi : total:m2357_2, partial:m2357_7 +# 2358| r2358_1(glval<bool>) = VariableAddress[b] : +# 2358| r2358_2(bool) = Load[b] : &:r2358_1, m2356_6 +# 2358| v2358_3(void) = ConditionalBranch : r2358_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2342| Block 1 -# 2342| m2342_7(unknown) = Phi : from 2:~m2351_5, from 4:~m2351_13, from 5:~m2351_22 -# 2342| v2342_8(void) = ReturnVoid : -# 2342| v2342_9(void) = AliasedUse : ~m2342_7 -# 2342| v2342_10(void) = ExitFunction : - -# 2345| Block 2 -# 2345| v2345_1(void) = NoOp : -# 2351| r2351_1(glval<String>) = VariableAddress[s] : -# 2351| r2351_2(glval<unknown>) = FunctionAddress[~String] : -# 2351| v2351_3(void) = Call[~String] : func:r2351_2, this:r2351_1 -# 2351| m2351_4(unknown) = ^CallSideEffect : ~m2343_6 -# 2351| m2351_5(unknown) = Chi : total:m2343_6, partial:m2351_4 -# 2351| v2351_6(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, m2343_8 -# 2351| m2351_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 -# 2351| m2351_8(String) = Chi : total:m2343_8, partial:m2351_7 +# 2356| Block 1 +# 2356| m2356_7(unknown) = Phi : from 2:~m2365_5, from 4:~m2365_13, from 5:~m2365_22 +# 2356| v2356_8(void) = ReturnVoid : +# 2356| v2356_9(void) = AliasedUse : ~m2356_7 +# 2356| v2356_10(void) = ExitFunction : + +# 2359| Block 2 +# 2359| v2359_1(void) = NoOp : +# 2365| r2365_1(glval<String>) = VariableAddress[s] : +# 2365| r2365_2(glval<unknown>) = FunctionAddress[~String] : +# 2365| v2365_3(void) = Call[~String] : func:r2365_2, this:r2365_1 +# 2365| m2365_4(unknown) = ^CallSideEffect : ~m2357_6 +# 2365| m2365_5(unknown) = Chi : total:m2357_6, partial:m2365_4 +# 2365| v2365_6(void) = ^IndirectReadSideEffect[-1] : &:r2365_1, m2357_8 +# 2365| m2365_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_1 +# 2365| m2365_8(String) = Chi : total:m2357_8, partial:m2365_7 #-----| Goto -> Block 1 -# 2347| Block 3 -# 2347| r2347_1(glval<bool>) = VariableAddress[b] : -# 2347| r2347_2(bool) = Load[b] : &:r2347_1, m2342_6 -# 2347| v2347_3(void) = ConditionalBranch : r2347_2 +# 2361| Block 3 +# 2361| r2361_1(glval<bool>) = VariableAddress[b] : +# 2361| r2361_2(bool) = Load[b] : &:r2361_1, m2356_6 +# 2361| v2361_3(void) = ConditionalBranch : r2361_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2348| Block 4 -# 2348| r2348_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2348| v2348_2(void) = Call[VoidFunc] : func:r2348_1 -# 2348| m2348_3(unknown) = ^CallSideEffect : ~m2343_6 -# 2348| m2348_4(unknown) = Chi : total:m2343_6, partial:m2348_3 -# 2348| v2348_5(void) = NoOp : -# 2351| r2351_9(glval<String>) = VariableAddress[s] : -# 2351| r2351_10(glval<unknown>) = FunctionAddress[~String] : -# 2351| v2351_11(void) = Call[~String] : func:r2351_10, this:r2351_9 -# 2351| m2351_12(unknown) = ^CallSideEffect : ~m2348_4 -# 2351| m2351_13(unknown) = Chi : total:m2348_4, partial:m2351_12 -# 2351| v2351_14(void) = ^IndirectReadSideEffect[-1] : &:r2351_9, m2343_8 -# 2351| m2351_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_9 -# 2351| m2351_16(String) = Chi : total:m2343_8, partial:m2351_15 +# 2362| Block 4 +# 2362| r2362_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2362| v2362_2(void) = Call[VoidFunc] : func:r2362_1 +# 2362| m2362_3(unknown) = ^CallSideEffect : ~m2357_6 +# 2362| m2362_4(unknown) = Chi : total:m2357_6, partial:m2362_3 +# 2362| v2362_5(void) = NoOp : +# 2365| r2365_9(glval<String>) = VariableAddress[s] : +# 2365| r2365_10(glval<unknown>) = FunctionAddress[~String] : +# 2365| v2365_11(void) = Call[~String] : func:r2365_10, this:r2365_9 +# 2365| m2365_12(unknown) = ^CallSideEffect : ~m2362_4 +# 2365| m2365_13(unknown) = Chi : total:m2362_4, partial:m2365_12 +# 2365| v2365_14(void) = ^IndirectReadSideEffect[-1] : &:r2365_9, m2357_8 +# 2365| m2365_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_9 +# 2365| m2365_16(String) = Chi : total:m2357_8, partial:m2365_15 #-----| Goto -> Block 1 -# 2350| Block 5 -# 2350| r2350_1(glval<String>) = VariableAddress[s] : -# 2351| v2351_17(void) = NoOp : -# 2351| r2351_18(glval<String>) = VariableAddress[s] : -# 2351| r2351_19(glval<unknown>) = FunctionAddress[~String] : -# 2351| v2351_20(void) = Call[~String] : func:r2351_19, this:r2351_18 -# 2351| m2351_21(unknown) = ^CallSideEffect : ~m2343_6 -# 2351| m2351_22(unknown) = Chi : total:m2343_6, partial:m2351_21 -# 2351| v2351_23(void) = ^IndirectReadSideEffect[-1] : &:r2351_18, m2343_8 -# 2351| m2351_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_18 -# 2351| m2351_25(String) = Chi : total:m2343_8, partial:m2351_24 +# 2364| Block 5 +# 2364| r2364_1(glval<String>) = VariableAddress[s] : +# 2365| v2365_17(void) = NoOp : +# 2365| r2365_18(glval<String>) = VariableAddress[s] : +# 2365| r2365_19(glval<unknown>) = FunctionAddress[~String] : +# 2365| v2365_20(void) = Call[~String] : func:r2365_19, this:r2365_18 +# 2365| m2365_21(unknown) = ^CallSideEffect : ~m2357_6 +# 2365| m2365_22(unknown) = Chi : total:m2357_6, partial:m2365_21 +# 2365| v2365_23(void) = ^IndirectReadSideEffect[-1] : &:r2365_18, m2357_8 +# 2365| m2365_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_18 +# 2365| m2365_25(String) = Chi : total:m2357_8, partial:m2365_24 #-----| Goto -> Block 1 -# 2353| int IfReturnDestructors3(bool) -# 2353| Block 0 -# 2353| v2353_1(void) = EnterFunction : -# 2353| m2353_2(unknown) = AliasedDefinition : -# 2353| m2353_3(unknown) = InitializeNonLocal : -# 2353| m2353_4(unknown) = Chi : total:m2353_2, partial:m2353_3 -# 2353| r2353_5(glval<bool>) = VariableAddress[b] : -# 2353| m2353_6(bool) = InitializeParameter[b] : &:r2353_5 -# 2354| r2354_1(glval<String>) = VariableAddress[s] : -# 2354| m2354_2(String) = Uninitialized[s] : &:r2354_1 -# 2354| r2354_3(glval<unknown>) = FunctionAddress[String] : -# 2354| v2354_4(void) = Call[String] : func:r2354_3, this:r2354_1 -# 2354| m2354_5(unknown) = ^CallSideEffect : ~m2353_4 -# 2354| m2354_6(unknown) = Chi : total:m2353_4, partial:m2354_5 -# 2354| m2354_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2354_1 -# 2354| m2354_8(String) = Chi : total:m2354_2, partial:m2354_7 -# 2355| r2355_1(glval<bool>) = VariableAddress[b] : -# 2355| r2355_2(bool) = Load[b] : &:r2355_1, m2353_6 -# 2355| v2355_3(void) = ConditionalBranch : r2355_2 +# 2367| int IfReturnDestructors3(bool) +# 2367| Block 0 +# 2367| v2367_1(void) = EnterFunction : +# 2367| m2367_2(unknown) = AliasedDefinition : +# 2367| m2367_3(unknown) = InitializeNonLocal : +# 2367| m2367_4(unknown) = Chi : total:m2367_2, partial:m2367_3 +# 2367| r2367_5(glval<bool>) = VariableAddress[b] : +# 2367| m2367_6(bool) = InitializeParameter[b] : &:r2367_5 +# 2368| r2368_1(glval<String>) = VariableAddress[s] : +# 2368| m2368_2(String) = Uninitialized[s] : &:r2368_1 +# 2368| r2368_3(glval<unknown>) = FunctionAddress[String] : +# 2368| v2368_4(void) = Call[String] : func:r2368_3, this:r2368_1 +# 2368| m2368_5(unknown) = ^CallSideEffect : ~m2367_4 +# 2368| m2368_6(unknown) = Chi : total:m2367_4, partial:m2368_5 +# 2368| m2368_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_1 +# 2368| m2368_8(String) = Chi : total:m2368_2, partial:m2368_7 +# 2369| r2369_1(glval<bool>) = VariableAddress[b] : +# 2369| r2369_2(bool) = Load[b] : &:r2369_1, m2367_6 +# 2369| v2369_3(void) = ConditionalBranch : r2369_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2353| Block 1 -# 2353| m2353_7(unknown) = Phi : from 2:~m2359_5, from 3:~m2359_13 -# 2353| m2353_8(int) = Phi : from 2:m2356_3, from 3:m2358_3 -# 2353| r2353_9(glval<int>) = VariableAddress[#return] : -# 2353| v2353_10(void) = ReturnValue : &:r2353_9, m2353_8 -# 2353| v2353_11(void) = AliasedUse : ~m2353_7 -# 2353| v2353_12(void) = ExitFunction : - -# 2356| Block 2 -# 2356| r2356_1(glval<int>) = VariableAddress[#return] : -# 2356| r2356_2(int) = Constant[1] : -# 2356| m2356_3(int) = Store[#return] : &:r2356_1, r2356_2 -# 2359| r2359_1(glval<String>) = VariableAddress[s] : -# 2359| r2359_2(glval<unknown>) = FunctionAddress[~String] : -# 2359| v2359_3(void) = Call[~String] : func:r2359_2, this:r2359_1 -# 2359| m2359_4(unknown) = ^CallSideEffect : ~m2354_6 -# 2359| m2359_5(unknown) = Chi : total:m2354_6, partial:m2359_4 -# 2359| v2359_6(void) = ^IndirectReadSideEffect[-1] : &:r2359_1, m2354_8 -# 2359| m2359_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_1 -# 2359| m2359_8(String) = Chi : total:m2354_8, partial:m2359_7 +# 2367| Block 1 +# 2367| m2367_7(unknown) = Phi : from 2:~m2373_5, from 3:~m2373_13 +# 2367| m2367_8(int) = Phi : from 2:m2370_3, from 3:m2372_3 +# 2367| r2367_9(glval<int>) = VariableAddress[#return] : +# 2367| v2367_10(void) = ReturnValue : &:r2367_9, m2367_8 +# 2367| v2367_11(void) = AliasedUse : ~m2367_7 +# 2367| v2367_12(void) = ExitFunction : + +# 2370| Block 2 +# 2370| r2370_1(glval<int>) = VariableAddress[#return] : +# 2370| r2370_2(int) = Constant[1] : +# 2370| m2370_3(int) = Store[#return] : &:r2370_1, r2370_2 +# 2373| r2373_1(glval<String>) = VariableAddress[s] : +# 2373| r2373_2(glval<unknown>) = FunctionAddress[~String] : +# 2373| v2373_3(void) = Call[~String] : func:r2373_2, this:r2373_1 +# 2373| m2373_4(unknown) = ^CallSideEffect : ~m2368_6 +# 2373| m2373_5(unknown) = Chi : total:m2368_6, partial:m2373_4 +# 2373| v2373_6(void) = ^IndirectReadSideEffect[-1] : &:r2373_1, m2368_8 +# 2373| m2373_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2373_1 +# 2373| m2373_8(String) = Chi : total:m2368_8, partial:m2373_7 #-----| Goto -> Block 1 -# 2358| Block 3 -# 2358| r2358_1(glval<int>) = VariableAddress[#return] : -# 2358| r2358_2(int) = Constant[0] : -# 2358| m2358_3(int) = Store[#return] : &:r2358_1, r2358_2 -# 2359| r2359_9(glval<String>) = VariableAddress[s] : -# 2359| r2359_10(glval<unknown>) = FunctionAddress[~String] : -# 2359| v2359_11(void) = Call[~String] : func:r2359_10, this:r2359_9 -# 2359| m2359_12(unknown) = ^CallSideEffect : ~m2354_6 -# 2359| m2359_13(unknown) = Chi : total:m2354_6, partial:m2359_12 -# 2359| v2359_14(void) = ^IndirectReadSideEffect[-1] : &:r2359_9, m2354_8 -# 2359| m2359_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_9 -# 2359| m2359_16(String) = Chi : total:m2354_8, partial:m2359_15 +# 2372| Block 3 +# 2372| r2372_1(glval<int>) = VariableAddress[#return] : +# 2372| r2372_2(int) = Constant[0] : +# 2372| m2372_3(int) = Store[#return] : &:r2372_1, r2372_2 +# 2373| r2373_9(glval<String>) = VariableAddress[s] : +# 2373| r2373_10(glval<unknown>) = FunctionAddress[~String] : +# 2373| v2373_11(void) = Call[~String] : func:r2373_10, this:r2373_9 +# 2373| m2373_12(unknown) = ^CallSideEffect : ~m2368_6 +# 2373| m2373_13(unknown) = Chi : total:m2368_6, partial:m2373_12 +# 2373| v2373_14(void) = ^IndirectReadSideEffect[-1] : &:r2373_9, m2368_8 +# 2373| m2373_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2373_9 +# 2373| m2373_16(String) = Chi : total:m2368_8, partial:m2373_15 #-----| Goto -> Block 1 -# 2361| void VoidReturnDestructors() -# 2361| Block 0 -# 2361| v2361_1(void) = EnterFunction : -# 2361| m2361_2(unknown) = AliasedDefinition : -# 2361| m2361_3(unknown) = InitializeNonLocal : -# 2361| m2361_4(unknown) = Chi : total:m2361_2, partial:m2361_3 -# 2362| r2362_1(glval<String>) = VariableAddress[s] : -# 2362| m2362_2(String) = Uninitialized[s] : &:r2362_1 -# 2362| r2362_3(glval<unknown>) = FunctionAddress[String] : -# 2362| v2362_4(void) = Call[String] : func:r2362_3, this:r2362_1 -# 2362| m2362_5(unknown) = ^CallSideEffect : ~m2361_4 -# 2362| m2362_6(unknown) = Chi : total:m2361_4, partial:m2362_5 -# 2362| m2362_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2362_1 -# 2362| m2362_8(String) = Chi : total:m2362_2, partial:m2362_7 -# 2363| r2363_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2363| v2363_2(void) = Call[VoidFunc] : func:r2363_1 -# 2363| m2363_3(unknown) = ^CallSideEffect : ~m2362_6 -# 2363| m2363_4(unknown) = Chi : total:m2362_6, partial:m2363_3 -# 2363| v2363_5(void) = NoOp : -# 2364| r2364_1(glval<String>) = VariableAddress[s] : -# 2364| r2364_2(glval<unknown>) = FunctionAddress[~String] : -# 2364| v2364_3(void) = Call[~String] : func:r2364_2, this:r2364_1 -# 2364| m2364_4(unknown) = ^CallSideEffect : ~m2363_4 -# 2364| m2364_5(unknown) = Chi : total:m2363_4, partial:m2364_4 -# 2364| v2364_6(void) = ^IndirectReadSideEffect[-1] : &:r2364_1, m2362_8 -# 2364| m2364_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2364_1 -# 2364| m2364_8(String) = Chi : total:m2362_8, partial:m2364_7 -# 2361| v2361_5(void) = ReturnVoid : -# 2361| v2361_6(void) = AliasedUse : ~m2364_5 -# 2361| v2361_7(void) = ExitFunction : - -# 2374| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2374| Block 0 -# 2374| v2374_1(void) = EnterFunction : -# 2374| m2374_2(unknown) = AliasedDefinition : -# 2374| m2374_3(unknown) = InitializeNonLocal : -# 2374| m2374_4(unknown) = Chi : total:m2374_2, partial:m2374_3 -# 2376| r2376_1(glval<..:: *>) = VariableAddress[#return] : -# 2376| r2376_2(..()(..)) = FunctionAddress[VoidToInt] : -# 2376| m2376_3(..:: *) = Store[#return] : &:r2376_1, r2376_2 -# 2374| r2374_5(glval<..:: *>) = VariableAddress[#return] : -# 2374| v2374_6(void) = ReturnValue : &:r2374_5, m2376_3 -# 2374| v2374_7(void) = AliasedUse : m2374_3 -# 2374| v2374_8(void) = ExitFunction : - -# 2381| int small_operation_should_not_be_constant_folded() -# 2381| Block 0 -# 2381| v2381_1(void) = EnterFunction : -# 2381| m2381_2(unknown) = AliasedDefinition : -# 2381| m2381_3(unknown) = InitializeNonLocal : -# 2381| m2381_4(unknown) = Chi : total:m2381_2, partial:m2381_3 -# 2382| r2382_1(glval<int>) = VariableAddress[#return] : -# 2382| r2382_2(int) = Constant[1] : -# 2382| r2382_3(int) = Constant[2] : -# 2382| r2382_4(int) = BitXor : r2382_2, r2382_3 -# 2382| m2382_5(int) = Store[#return] : &:r2382_1, r2382_4 -# 2381| r2381_5(glval<int>) = VariableAddress[#return] : -# 2381| v2381_6(void) = ReturnValue : &:r2381_5, m2382_5 -# 2381| v2381_7(void) = AliasedUse : m2381_3 -# 2381| v2381_8(void) = ExitFunction : - -# 2392| int large_operation_should_be_constant_folded() -# 2392| Block 0 -# 2392| v2392_1(void) = EnterFunction : -# 2392| m2392_2(unknown) = AliasedDefinition : -# 2392| m2392_3(unknown) = InitializeNonLocal : -# 2392| m2392_4(unknown) = Chi : total:m2392_2, partial:m2392_3 -# 2393| r2393_1(glval<int>) = VariableAddress[#return] : -# 2393| r2393_2(int) = Constant[0] : -# 2393| m2393_3(int) = Store[#return] : &:r2393_1, r2393_2 -# 2392| r2392_5(glval<int>) = VariableAddress[#return] : -# 2392| v2392_6(void) = ReturnValue : &:r2392_5, m2393_3 -# 2392| v2392_7(void) = AliasedUse : m2392_3 -# 2392| v2392_8(void) = ExitFunction : - -# 2396| void initialization_with_temp_destructor() -# 2396| Block 0 -# 2396| v2396_1(void) = EnterFunction : -# 2396| m2396_2(unknown) = AliasedDefinition : -# 2396| m2396_3(unknown) = InitializeNonLocal : -# 2396| m2396_4(unknown) = Chi : total:m2396_2, partial:m2396_3 -# 2397| r2397_1(glval<char>) = VariableAddress[x] : -# 2397| r2397_2(glval<ClassWithDestructor>) = VariableAddress[#temp2397:18] : -# 2397| m2397_3(ClassWithDestructor) = Uninitialized[#temp2397:18] : &:r2397_2 -# 2397| r2397_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2397| v2397_5(void) = Call[ClassWithDestructor] : func:r2397_4, this:r2397_2 -# 2397| m2397_6(unknown) = ^CallSideEffect : ~m2396_4 -# 2397| m2397_7(unknown) = Chi : total:m2396_4, partial:m2397_6 -# 2397| m2397_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 -# 2397| m2397_9(ClassWithDestructor) = Chi : total:m2397_3, partial:m2397_8 -# 2397| r2397_10(glval<unknown>) = FunctionAddress[get_x] : -# 2397| r2397_11(char) = Call[get_x] : func:r2397_10, this:r2397_2 -# 2397| m2397_12(unknown) = ^CallSideEffect : ~m2397_7 -# 2397| m2397_13(unknown) = Chi : total:m2397_7, partial:m2397_12 -# 2397| v2397_14(void) = ^IndirectReadSideEffect[-1] : &:r2397_2, m2397_9 -# 2397| m2397_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 -# 2397| m2397_16(ClassWithDestructor) = Chi : total:m2397_9, partial:m2397_15 -# 2397| m2397_17(char) = Store[x] : &:r2397_1, r2397_11 -# 2397| r2397_18(glval<char>) = VariableAddress[x] : -# 2397| r2397_19(char) = Load[x] : &:r2397_18, m2397_17 -# 2397| r2397_20(char) = Constant[0] : -# 2397| r2397_21(bool) = CompareNE : r2397_19, r2397_20 -# 2397| r2397_22(bool) = CopyValue : r2397_21 -# 2397| v2397_23(void) = ConditionalBranch : r2397_22 +# 2375| void VoidReturnDestructors() +# 2375| Block 0 +# 2375| v2375_1(void) = EnterFunction : +# 2375| m2375_2(unknown) = AliasedDefinition : +# 2375| m2375_3(unknown) = InitializeNonLocal : +# 2375| m2375_4(unknown) = Chi : total:m2375_2, partial:m2375_3 +# 2376| r2376_1(glval<String>) = VariableAddress[s] : +# 2376| m2376_2(String) = Uninitialized[s] : &:r2376_1 +# 2376| r2376_3(glval<unknown>) = FunctionAddress[String] : +# 2376| v2376_4(void) = Call[String] : func:r2376_3, this:r2376_1 +# 2376| m2376_5(unknown) = ^CallSideEffect : ~m2375_4 +# 2376| m2376_6(unknown) = Chi : total:m2375_4, partial:m2376_5 +# 2376| m2376_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2376_1 +# 2376| m2376_8(String) = Chi : total:m2376_2, partial:m2376_7 +# 2377| r2377_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2377| v2377_2(void) = Call[VoidFunc] : func:r2377_1 +# 2377| m2377_3(unknown) = ^CallSideEffect : ~m2376_6 +# 2377| m2377_4(unknown) = Chi : total:m2376_6, partial:m2377_3 +# 2377| v2377_5(void) = NoOp : +# 2378| r2378_1(glval<String>) = VariableAddress[s] : +# 2378| r2378_2(glval<unknown>) = FunctionAddress[~String] : +# 2378| v2378_3(void) = Call[~String] : func:r2378_2, this:r2378_1 +# 2378| m2378_4(unknown) = ^CallSideEffect : ~m2377_4 +# 2378| m2378_5(unknown) = Chi : total:m2377_4, partial:m2378_4 +# 2378| v2378_6(void) = ^IndirectReadSideEffect[-1] : &:r2378_1, m2376_8 +# 2378| m2378_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2378_1 +# 2378| m2378_8(String) = Chi : total:m2376_8, partial:m2378_7 +# 2375| v2375_5(void) = ReturnVoid : +# 2375| v2375_6(void) = AliasedUse : ~m2378_5 +# 2375| v2375_7(void) = ExitFunction : + +# 2388| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2388| Block 0 +# 2388| v2388_1(void) = EnterFunction : +# 2388| m2388_2(unknown) = AliasedDefinition : +# 2388| m2388_3(unknown) = InitializeNonLocal : +# 2388| m2388_4(unknown) = Chi : total:m2388_2, partial:m2388_3 +# 2390| r2390_1(glval<..:: *>) = VariableAddress[#return] : +# 2390| r2390_2(..()(..)) = FunctionAddress[VoidToInt] : +# 2390| m2390_3(..:: *) = Store[#return] : &:r2390_1, r2390_2 +# 2388| r2388_5(glval<..:: *>) = VariableAddress[#return] : +# 2388| v2388_6(void) = ReturnValue : &:r2388_5, m2390_3 +# 2388| v2388_7(void) = AliasedUse : m2388_3 +# 2388| v2388_8(void) = ExitFunction : + +# 2395| int small_operation_should_not_be_constant_folded() +# 2395| Block 0 +# 2395| v2395_1(void) = EnterFunction : +# 2395| m2395_2(unknown) = AliasedDefinition : +# 2395| m2395_3(unknown) = InitializeNonLocal : +# 2395| m2395_4(unknown) = Chi : total:m2395_2, partial:m2395_3 +# 2396| r2396_1(glval<int>) = VariableAddress[#return] : +# 2396| r2396_2(int) = Constant[1] : +# 2396| r2396_3(int) = Constant[2] : +# 2396| r2396_4(int) = BitXor : r2396_2, r2396_3 +# 2396| m2396_5(int) = Store[#return] : &:r2396_1, r2396_4 +# 2395| r2395_5(glval<int>) = VariableAddress[#return] : +# 2395| v2395_6(void) = ReturnValue : &:r2395_5, m2396_5 +# 2395| v2395_7(void) = AliasedUse : m2395_3 +# 2395| v2395_8(void) = ExitFunction : + +# 2406| int large_operation_should_be_constant_folded() +# 2406| Block 0 +# 2406| v2406_1(void) = EnterFunction : +# 2406| m2406_2(unknown) = AliasedDefinition : +# 2406| m2406_3(unknown) = InitializeNonLocal : +# 2406| m2406_4(unknown) = Chi : total:m2406_2, partial:m2406_3 +# 2407| r2407_1(glval<int>) = VariableAddress[#return] : +# 2407| r2407_2(int) = Constant[0] : +# 2407| m2407_3(int) = Store[#return] : &:r2407_1, r2407_2 +# 2406| r2406_5(glval<int>) = VariableAddress[#return] : +# 2406| v2406_6(void) = ReturnValue : &:r2406_5, m2407_3 +# 2406| v2406_7(void) = AliasedUse : m2406_3 +# 2406| v2406_8(void) = ExitFunction : + +# 2410| void initialization_with_temp_destructor() +# 2410| Block 0 +# 2410| v2410_1(void) = EnterFunction : +# 2410| m2410_2(unknown) = AliasedDefinition : +# 2410| m2410_3(unknown) = InitializeNonLocal : +# 2410| m2410_4(unknown) = Chi : total:m2410_2, partial:m2410_3 +# 2411| r2411_1(glval<char>) = VariableAddress[x] : +# 2411| r2411_2(glval<ClassWithDestructor>) = VariableAddress[#temp2411:18] : +# 2411| m2411_3(ClassWithDestructor) = Uninitialized[#temp2411:18] : &:r2411_2 +# 2411| r2411_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2411| v2411_5(void) = Call[ClassWithDestructor] : func:r2411_4, this:r2411_2 +# 2411| m2411_6(unknown) = ^CallSideEffect : ~m2410_4 +# 2411| m2411_7(unknown) = Chi : total:m2410_4, partial:m2411_6 +# 2411| m2411_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| m2411_9(ClassWithDestructor) = Chi : total:m2411_3, partial:m2411_8 +# 2411| r2411_10(glval<unknown>) = FunctionAddress[get_x] : +# 2411| r2411_11(char) = Call[get_x] : func:r2411_10, this:r2411_2 +# 2411| m2411_12(unknown) = ^CallSideEffect : ~m2411_7 +# 2411| m2411_13(unknown) = Chi : total:m2411_7, partial:m2411_12 +# 2411| v2411_14(void) = ^IndirectReadSideEffect[-1] : &:r2411_2, m2411_9 +# 2411| m2411_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| m2411_16(ClassWithDestructor) = Chi : total:m2411_9, partial:m2411_15 +# 2411| m2411_17(char) = Store[x] : &:r2411_1, r2411_11 +# 2411| r2411_18(glval<char>) = VariableAddress[x] : +# 2411| r2411_19(char) = Load[x] : &:r2411_18, m2411_17 +# 2411| r2411_20(char) = Constant[0] : +# 2411| r2411_21(bool) = CompareNE : r2411_19, r2411_20 +# 2411| r2411_22(bool) = CopyValue : r2411_21 +# 2411| v2411_23(void) = ConditionalBranch : r2411_22 #-----| False -> Block 2 #-----| True -> Block 1 -# 2398| Block 1 -# 2398| r2398_1(glval<char>) = VariableAddress[x] : -# 2398| r2398_2(char) = Load[x] : &:r2398_1, m2397_17 -# 2398| r2398_3(char) = Constant[1] : -# 2398| r2398_4(char) = Add : r2398_2, r2398_3 -# 2398| m2398_5(char) = Store[x] : &:r2398_1, r2398_4 +# 2412| Block 1 +# 2412| r2412_1(glval<char>) = VariableAddress[x] : +# 2412| r2412_2(char) = Load[x] : &:r2412_1, m2411_17 +# 2412| r2412_3(char) = Constant[1] : +# 2412| r2412_4(char) = Add : r2412_2, r2412_3 +# 2412| m2412_5(char) = Store[x] : &:r2412_1, r2412_4 #-----| Goto -> Block 2 -# 2400| Block 2 -# 2400| r2400_1(glval<char>) = VariableAddress[x] : -# 2400| r2400_2(glval<ClassWithDestructor>) = VariableAddress[#temp2400:18] : -# 2400| m2400_3(ClassWithDestructor) = Uninitialized[#temp2400:18] : &:r2400_2 -# 2400| r2400_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2400| v2400_5(void) = Call[ClassWithDestructor] : func:r2400_4, this:r2400_2 -# 2400| m2400_6(unknown) = ^CallSideEffect : ~m2397_13 -# 2400| m2400_7(unknown) = Chi : total:m2397_13, partial:m2400_6 -# 2400| m2400_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 -# 2400| m2400_9(ClassWithDestructor) = Chi : total:m2400_3, partial:m2400_8 -# 2400| r2400_10(glval<unknown>) = FunctionAddress[get_x] : -# 2400| r2400_11(char) = Call[get_x] : func:r2400_10, this:r2400_2 -# 2400| m2400_12(unknown) = ^CallSideEffect : ~m2400_7 -# 2400| m2400_13(unknown) = Chi : total:m2400_7, partial:m2400_12 -# 2400| v2400_14(void) = ^IndirectReadSideEffect[-1] : &:r2400_2, m2400_9 -# 2400| m2400_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 -# 2400| m2400_16(ClassWithDestructor) = Chi : total:m2400_9, partial:m2400_15 -# 2400| m2400_17(char) = Store[x] : &:r2400_1, r2400_11 -# 2400| r2400_18(glval<char>) = VariableAddress[x] : -# 2400| r2400_19(char) = Load[x] : &:r2400_18, m2400_17 -# 2400| r2400_20(char) = Constant[0] : -# 2400| r2400_21(bool) = CompareNE : r2400_19, r2400_20 -# 2400| v2400_22(void) = ConditionalBranch : r2400_21 +# 2414| Block 2 +# 2414| r2414_1(glval<char>) = VariableAddress[x] : +# 2414| r2414_2(glval<ClassWithDestructor>) = VariableAddress[#temp2414:18] : +# 2414| m2414_3(ClassWithDestructor) = Uninitialized[#temp2414:18] : &:r2414_2 +# 2414| r2414_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2414| v2414_5(void) = Call[ClassWithDestructor] : func:r2414_4, this:r2414_2 +# 2414| m2414_6(unknown) = ^CallSideEffect : ~m2411_13 +# 2414| m2414_7(unknown) = Chi : total:m2411_13, partial:m2414_6 +# 2414| m2414_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| m2414_9(ClassWithDestructor) = Chi : total:m2414_3, partial:m2414_8 +# 2414| r2414_10(glval<unknown>) = FunctionAddress[get_x] : +# 2414| r2414_11(char) = Call[get_x] : func:r2414_10, this:r2414_2 +# 2414| m2414_12(unknown) = ^CallSideEffect : ~m2414_7 +# 2414| m2414_13(unknown) = Chi : total:m2414_7, partial:m2414_12 +# 2414| v2414_14(void) = ^IndirectReadSideEffect[-1] : &:r2414_2, m2414_9 +# 2414| m2414_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| m2414_16(ClassWithDestructor) = Chi : total:m2414_9, partial:m2414_15 +# 2414| m2414_17(char) = Store[x] : &:r2414_1, r2414_11 +# 2414| r2414_18(glval<char>) = VariableAddress[x] : +# 2414| r2414_19(char) = Load[x] : &:r2414_18, m2414_17 +# 2414| r2414_20(char) = Constant[0] : +# 2414| r2414_21(bool) = CompareNE : r2414_19, r2414_20 +# 2414| v2414_22(void) = ConditionalBranch : r2414_21 #-----| False -> Block 4 #-----| True -> Block 3 -# 2401| Block 3 -# 2401| r2401_1(glval<char>) = VariableAddress[x] : -# 2401| r2401_2(char) = Load[x] : &:r2401_1, m2400_17 -# 2401| r2401_3(char) = Constant[1] : -# 2401| r2401_4(char) = Add : r2401_2, r2401_3 -# 2401| m2401_5(char) = Store[x] : &:r2401_1, r2401_4 +# 2415| Block 3 +# 2415| r2415_1(glval<char>) = VariableAddress[x] : +# 2415| r2415_2(char) = Load[x] : &:r2415_1, m2414_17 +# 2415| r2415_3(char) = Constant[1] : +# 2415| r2415_4(char) = Add : r2415_2, r2415_3 +# 2415| m2415_5(char) = Store[x] : &:r2415_1, r2415_4 #-----| Goto -> Block 4 -# 2403| Block 4 -# 2403| r2403_1(glval<char>) = VariableAddress[x] : -# 2403| r2403_2(glval<ClassWithDestructor>) = VariableAddress[#temp2403:28] : -# 2403| m2403_3(ClassWithDestructor) = Uninitialized[#temp2403:28] : &:r2403_2 -# 2403| r2403_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2403| v2403_5(void) = Call[ClassWithDestructor] : func:r2403_4, this:r2403_2 -# 2403| m2403_6(unknown) = ^CallSideEffect : ~m2400_13 -# 2403| m2403_7(unknown) = Chi : total:m2400_13, partial:m2403_6 -# 2403| m2403_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 -# 2403| m2403_9(ClassWithDestructor) = Chi : total:m2403_3, partial:m2403_8 -# 2403| r2403_10(glval<unknown>) = FunctionAddress[get_x] : -# 2403| r2403_11(char) = Call[get_x] : func:r2403_10, this:r2403_2 -# 2403| m2403_12(unknown) = ^CallSideEffect : ~m2403_7 -# 2403| m2403_13(unknown) = Chi : total:m2403_7, partial:m2403_12 -# 2403| v2403_14(void) = ^IndirectReadSideEffect[-1] : &:r2403_2, m2403_9 -# 2403| m2403_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 -# 2403| m2403_16(ClassWithDestructor) = Chi : total:m2403_9, partial:m2403_15 -# 2403| m2403_17(char) = Store[x] : &:r2403_1, r2403_11 -# 2403| r2403_18(bool) = Constant[1] : -# 2403| v2403_19(void) = ConditionalBranch : r2403_18 +# 2417| Block 4 +# 2417| r2417_1(glval<char>) = VariableAddress[x] : +# 2417| r2417_2(glval<ClassWithDestructor>) = VariableAddress[#temp2417:28] : +# 2417| m2417_3(ClassWithDestructor) = Uninitialized[#temp2417:28] : &:r2417_2 +# 2417| r2417_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2417| v2417_5(void) = Call[ClassWithDestructor] : func:r2417_4, this:r2417_2 +# 2417| m2417_6(unknown) = ^CallSideEffect : ~m2414_13 +# 2417| m2417_7(unknown) = Chi : total:m2414_13, partial:m2417_6 +# 2417| m2417_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| m2417_9(ClassWithDestructor) = Chi : total:m2417_3, partial:m2417_8 +# 2417| r2417_10(glval<unknown>) = FunctionAddress[get_x] : +# 2417| r2417_11(char) = Call[get_x] : func:r2417_10, this:r2417_2 +# 2417| m2417_12(unknown) = ^CallSideEffect : ~m2417_7 +# 2417| m2417_13(unknown) = Chi : total:m2417_7, partial:m2417_12 +# 2417| v2417_14(void) = ^IndirectReadSideEffect[-1] : &:r2417_2, m2417_9 +# 2417| m2417_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| m2417_16(ClassWithDestructor) = Chi : total:m2417_9, partial:m2417_15 +# 2417| m2417_17(char) = Store[x] : &:r2417_1, r2417_11 +# 2417| r2417_18(bool) = Constant[1] : +# 2417| v2417_19(void) = ConditionalBranch : r2417_18 #-----| False -> Block 13 #-----| True -> Block 5 -# 2404| Block 5 -# 2404| r2404_1(glval<char>) = VariableAddress[x] : -# 2404| r2404_2(char) = Load[x] : &:r2404_1, m2403_17 -# 2404| r2404_3(char) = Constant[1] : -# 2404| r2404_4(char) = Add : r2404_2, r2404_3 -# 2404| m2404_5(char) = Store[x] : &:r2404_1, r2404_4 -# 2406| r2406_1(glval<char>) = VariableAddress[x] : -# 2406| r2406_2(glval<ClassWithDestructor>) = VariableAddress[#temp2406:21] : -# 2406| m2406_3(ClassWithDestructor) = Uninitialized[#temp2406:21] : &:r2406_2 -# 2406| r2406_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2406| v2406_5(void) = Call[ClassWithDestructor] : func:r2406_4, this:r2406_2 -# 2406| m2406_6(unknown) = ^CallSideEffect : ~m2403_13 -# 2406| m2406_7(unknown) = Chi : total:m2403_13, partial:m2406_6 -# 2406| m2406_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 -# 2406| m2406_9(ClassWithDestructor) = Chi : total:m2406_3, partial:m2406_8 -# 2406| r2406_10(glval<unknown>) = FunctionAddress[get_x] : -# 2406| r2406_11(char) = Call[get_x] : func:r2406_10, this:r2406_2 -# 2406| m2406_12(unknown) = ^CallSideEffect : ~m2406_7 -# 2406| m2406_13(unknown) = Chi : total:m2406_7, partial:m2406_12 -# 2406| v2406_14(void) = ^IndirectReadSideEffect[-1] : &:r2406_2, m2406_9 -# 2406| m2406_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 -# 2406| m2406_16(ClassWithDestructor) = Chi : total:m2406_9, partial:m2406_15 -# 2406| m2406_17(char) = Store[x] : &:r2406_1, r2406_11 -# 2406| r2406_18(glval<char>) = VariableAddress[x] : -# 2406| r2406_19(char) = Load[x] : &:r2406_18, m2406_17 -# 2406| r2406_20(int) = Convert : r2406_19 -# 2406| r2406_21(int) = CopyValue : r2406_20 -# 2406| v2406_22(void) = Switch : r2406_21 +# 2418| Block 5 +# 2418| r2418_1(glval<char>) = VariableAddress[x] : +# 2418| r2418_2(char) = Load[x] : &:r2418_1, m2417_17 +# 2418| r2418_3(char) = Constant[1] : +# 2418| r2418_4(char) = Add : r2418_2, r2418_3 +# 2418| m2418_5(char) = Store[x] : &:r2418_1, r2418_4 +# 2420| r2420_1(glval<char>) = VariableAddress[x] : +# 2420| r2420_2(glval<ClassWithDestructor>) = VariableAddress[#temp2420:21] : +# 2420| m2420_3(ClassWithDestructor) = Uninitialized[#temp2420:21] : &:r2420_2 +# 2420| r2420_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2420| v2420_5(void) = Call[ClassWithDestructor] : func:r2420_4, this:r2420_2 +# 2420| m2420_6(unknown) = ^CallSideEffect : ~m2417_13 +# 2420| m2420_7(unknown) = Chi : total:m2417_13, partial:m2420_6 +# 2420| m2420_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| m2420_9(ClassWithDestructor) = Chi : total:m2420_3, partial:m2420_8 +# 2420| r2420_10(glval<unknown>) = FunctionAddress[get_x] : +# 2420| r2420_11(char) = Call[get_x] : func:r2420_10, this:r2420_2 +# 2420| m2420_12(unknown) = ^CallSideEffect : ~m2420_7 +# 2420| m2420_13(unknown) = Chi : total:m2420_7, partial:m2420_12 +# 2420| v2420_14(void) = ^IndirectReadSideEffect[-1] : &:r2420_2, m2420_9 +# 2420| m2420_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| m2420_16(ClassWithDestructor) = Chi : total:m2420_9, partial:m2420_15 +# 2420| m2420_17(char) = Store[x] : &:r2420_1, r2420_11 +# 2420| r2420_18(glval<char>) = VariableAddress[x] : +# 2420| r2420_19(char) = Load[x] : &:r2420_18, m2420_17 +# 2420| r2420_20(int) = Convert : r2420_19 +# 2420| r2420_21(int) = CopyValue : r2420_20 +# 2420| v2420_22(void) = Switch : r2420_21 #-----| Case[97] -> Block 6 #-----| Default -> Block 7 -# 2407| Block 6 -# 2407| v2407_1(void) = NoOp : -# 2408| r2408_1(glval<char>) = VariableAddress[x] : -# 2408| r2408_2(char) = Load[x] : &:r2408_1, m2406_17 -# 2408| r2408_3(char) = Constant[1] : -# 2408| r2408_4(char) = Add : r2408_2, r2408_3 -# 2408| m2408_5(char) = Store[x] : &:r2408_1, r2408_4 +# 2421| Block 6 +# 2421| v2421_1(void) = NoOp : +# 2422| r2422_1(glval<char>) = VariableAddress[x] : +# 2422| r2422_2(char) = Load[x] : &:r2422_1, m2420_17 +# 2422| r2422_3(char) = Constant[1] : +# 2422| r2422_4(char) = Add : r2422_2, r2422_3 +# 2422| m2422_5(char) = Store[x] : &:r2422_1, r2422_4 #-----| Goto -> Block 7 -# 2411| Block 7 -# 2411| r2411_1(glval<char>) = VariableAddress[x] : -# 2411| r2411_2(glval<ClassWithDestructor>) = VariableAddress[#temp2411:21] : -# 2411| m2411_3(ClassWithDestructor) = Uninitialized[#temp2411:21] : &:r2411_2 -# 2411| r2411_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2411| v2411_5(void) = Call[ClassWithDestructor] : func:r2411_4, this:r2411_2 -# 2411| m2411_6(unknown) = ^CallSideEffect : ~m2406_13 -# 2411| m2411_7(unknown) = Chi : total:m2406_13, partial:m2411_6 -# 2411| m2411_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 -# 2411| m2411_9(ClassWithDestructor) = Chi : total:m2411_3, partial:m2411_8 -# 2411| r2411_10(glval<unknown>) = FunctionAddress[get_x] : -# 2411| r2411_11(char) = Call[get_x] : func:r2411_10, this:r2411_2 -# 2411| m2411_12(unknown) = ^CallSideEffect : ~m2411_7 -# 2411| m2411_13(unknown) = Chi : total:m2411_7, partial:m2411_12 -# 2411| v2411_14(void) = ^IndirectReadSideEffect[-1] : &:r2411_2, m2411_9 -# 2411| m2411_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 -# 2411| m2411_16(ClassWithDestructor) = Chi : total:m2411_9, partial:m2411_15 -# 2411| m2411_17(char) = Store[x] : &:r2411_1, r2411_11 -# 2411| r2411_18(glval<char>) = VariableAddress[x] : -# 2411| r2411_19(char) = Load[x] : &:r2411_18, m2411_17 -# 2411| r2411_20(int) = Convert : r2411_19 -# 2411| v2411_21(void) = Switch : r2411_20 +# 2425| Block 7 +# 2425| r2425_1(glval<char>) = VariableAddress[x] : +# 2425| r2425_2(glval<ClassWithDestructor>) = VariableAddress[#temp2425:21] : +# 2425| m2425_3(ClassWithDestructor) = Uninitialized[#temp2425:21] : &:r2425_2 +# 2425| r2425_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2425| v2425_5(void) = Call[ClassWithDestructor] : func:r2425_4, this:r2425_2 +# 2425| m2425_6(unknown) = ^CallSideEffect : ~m2420_13 +# 2425| m2425_7(unknown) = Chi : total:m2420_13, partial:m2425_6 +# 2425| m2425_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2425_2 +# 2425| m2425_9(ClassWithDestructor) = Chi : total:m2425_3, partial:m2425_8 +# 2425| r2425_10(glval<unknown>) = FunctionAddress[get_x] : +# 2425| r2425_11(char) = Call[get_x] : func:r2425_10, this:r2425_2 +# 2425| m2425_12(unknown) = ^CallSideEffect : ~m2425_7 +# 2425| m2425_13(unknown) = Chi : total:m2425_7, partial:m2425_12 +# 2425| v2425_14(void) = ^IndirectReadSideEffect[-1] : &:r2425_2, m2425_9 +# 2425| m2425_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2425_2 +# 2425| m2425_16(ClassWithDestructor) = Chi : total:m2425_9, partial:m2425_15 +# 2425| m2425_17(char) = Store[x] : &:r2425_1, r2425_11 +# 2425| r2425_18(glval<char>) = VariableAddress[x] : +# 2425| r2425_19(char) = Load[x] : &:r2425_18, m2425_17 +# 2425| r2425_20(int) = Convert : r2425_19 +# 2425| v2425_21(void) = Switch : r2425_20 #-----| Case[97] -> Block 8 #-----| Default -> Block 9 -# 2412| Block 8 -# 2412| v2412_1(void) = NoOp : -# 2413| r2413_1(glval<char>) = VariableAddress[x] : -# 2413| r2413_2(char) = Load[x] : &:r2413_1, m2411_17 -# 2413| r2413_3(char) = Constant[1] : -# 2413| r2413_4(char) = Add : r2413_2, r2413_3 -# 2413| m2413_5(char) = Store[x] : &:r2413_1, r2413_4 +# 2426| Block 8 +# 2426| v2426_1(void) = NoOp : +# 2427| r2427_1(glval<char>) = VariableAddress[x] : +# 2427| r2427_2(char) = Load[x] : &:r2427_1, m2425_17 +# 2427| r2427_3(char) = Constant[1] : +# 2427| r2427_4(char) = Add : r2427_2, r2427_3 +# 2427| m2427_5(char) = Store[x] : &:r2427_1, r2427_4 #-----| Goto -> Block 9 -# 2416| Block 9 -# 2416| r2416_1(glval<char>) = VariableAddress[x] : -# 2416| r2416_2(glval<ClassWithDestructor>) = VariableAddress[#temp2416:18] : -# 2416| m2416_3(ClassWithDestructor) = Uninitialized[#temp2416:18] : &:r2416_2 -# 2416| r2416_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2416| v2416_5(void) = Call[ClassWithDestructor] : func:r2416_4, this:r2416_2 -# 2416| m2416_6(unknown) = ^CallSideEffect : ~m2411_13 -# 2416| m2416_7(unknown) = Chi : total:m2411_13, partial:m2416_6 -# 2416| m2416_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 -# 2416| m2416_9(ClassWithDestructor) = Chi : total:m2416_3, partial:m2416_8 -# 2416| r2416_10(glval<unknown>) = FunctionAddress[get_x] : -# 2416| r2416_11(char) = Call[get_x] : func:r2416_10, this:r2416_2 -# 2416| m2416_12(unknown) = ^CallSideEffect : ~m2416_7 -# 2416| m2416_13(unknown) = Chi : total:m2416_7, partial:m2416_12 -# 2416| v2416_14(void) = ^IndirectReadSideEffect[-1] : &:r2416_2, m2416_9 -# 2416| m2416_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 -# 2416| m2416_16(ClassWithDestructor) = Chi : total:m2416_9, partial:m2416_15 -# 2416| m2416_17(char) = Store[x] : &:r2416_1, r2416_11 -# 2416| r2416_18(glval<vector<char> &&>) = VariableAddress[(__range)] : -# 2416| r2416_19(glval<vector<char>>) = VariableAddress[#temp2416:58] : -# 2416| m2416_20(vector<char>) = Uninitialized[#temp2416:58] : &:r2416_19 -# 2416| r2416_21(glval<unknown>) = FunctionAddress[vector] : -# 2416| r2416_22(glval<char>) = VariableAddress[x] : -# 2416| r2416_23(char) = Load[x] : &:r2416_22, m2416_17 -# 2416| v2416_24(void) = Call[vector] : func:r2416_21, this:r2416_19, 0:r2416_23 -# 2416| m2416_25(unknown) = ^CallSideEffect : ~m2416_13 -# 2416| m2416_26(unknown) = Chi : total:m2416_13, partial:m2416_25 -# 2416| m2416_27(vector<char>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_19 -# 2416| m2416_28(vector<char>) = Chi : total:m2416_20, partial:m2416_27 -# 2416| r2416_29(vector<char> &) = CopyValue : r2416_19 -# 2416| m2416_30(vector<char> &&) = Store[(__range)] : &:r2416_18, r2416_29 -# 2416| r2416_31(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -# 2416| r2416_32(glval<vector<char> &&>) = VariableAddress[(__range)] : -# 2416| r2416_33(vector<char> &&) = Load[(__range)] : &:r2416_32, m2416_30 -#-----| r0_1(glval<vector<char>>) = CopyValue : r2416_33 +# 2430| Block 9 +# 2430| r2430_1(glval<char>) = VariableAddress[x] : +# 2430| r2430_2(glval<ClassWithDestructor>) = VariableAddress[#temp2430:18] : +# 2430| m2430_3(ClassWithDestructor) = Uninitialized[#temp2430:18] : &:r2430_2 +# 2430| r2430_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2430| v2430_5(void) = Call[ClassWithDestructor] : func:r2430_4, this:r2430_2 +# 2430| m2430_6(unknown) = ^CallSideEffect : ~m2425_13 +# 2430| m2430_7(unknown) = Chi : total:m2425_13, partial:m2430_6 +# 2430| m2430_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2430_2 +# 2430| m2430_9(ClassWithDestructor) = Chi : total:m2430_3, partial:m2430_8 +# 2430| r2430_10(glval<unknown>) = FunctionAddress[get_x] : +# 2430| r2430_11(char) = Call[get_x] : func:r2430_10, this:r2430_2 +# 2430| m2430_12(unknown) = ^CallSideEffect : ~m2430_7 +# 2430| m2430_13(unknown) = Chi : total:m2430_7, partial:m2430_12 +# 2430| v2430_14(void) = ^IndirectReadSideEffect[-1] : &:r2430_2, m2430_9 +# 2430| m2430_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2430_2 +# 2430| m2430_16(ClassWithDestructor) = Chi : total:m2430_9, partial:m2430_15 +# 2430| m2430_17(char) = Store[x] : &:r2430_1, r2430_11 +# 2430| r2430_18(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2430| r2430_19(glval<vector<char>>) = VariableAddress[#temp2430:58] : +# 2430| m2430_20(vector<char>) = Uninitialized[#temp2430:58] : &:r2430_19 +# 2430| r2430_21(glval<unknown>) = FunctionAddress[vector] : +# 2430| r2430_22(glval<char>) = VariableAddress[x] : +# 2430| r2430_23(char) = Load[x] : &:r2430_22, m2430_17 +# 2430| v2430_24(void) = Call[vector] : func:r2430_21, this:r2430_19, 0:r2430_23 +# 2430| m2430_25(unknown) = ^CallSideEffect : ~m2430_13 +# 2430| m2430_26(unknown) = Chi : total:m2430_13, partial:m2430_25 +# 2430| m2430_27(vector<char>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_19 +# 2430| m2430_28(vector<char>) = Chi : total:m2430_20, partial:m2430_27 +# 2430| r2430_29(vector<char> &) = CopyValue : r2430_19 +# 2430| m2430_30(vector<char> &&) = Store[(__range)] : &:r2430_18, r2430_29 +# 2430| r2430_31(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2430| r2430_32(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2430| r2430_33(vector<char> &&) = Load[(__range)] : &:r2430_32, m2430_30 +#-----| r0_1(glval<vector<char>>) = CopyValue : r2430_33 #-----| r0_2(glval<vector<char>>) = Convert : r0_1 -# 2416| r2416_34(glval<unknown>) = FunctionAddress[begin] : -# 2416| r2416_35(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[begin] : func:r2416_34, this:r0_2 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2416_28 -# 2416| m2416_36(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__begin)] : &:r2416_31, r2416_35 -# 2416| r2416_37(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : -# 2416| r2416_38(glval<vector<char> &&>) = VariableAddress[(__range)] : -# 2416| r2416_39(vector<char> &&) = Load[(__range)] : &:r2416_38, m2416_30 -#-----| r0_4(glval<vector<char>>) = CopyValue : r2416_39 +# 2430| r2430_34(glval<unknown>) = FunctionAddress[begin] : +# 2430| r2430_35(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[begin] : func:r2430_34, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2430_28 +# 2430| m2430_36(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__begin)] : &:r2430_31, r2430_35 +# 2430| r2430_37(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +# 2430| r2430_38(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2430| r2430_39(vector<char> &&) = Load[(__range)] : &:r2430_38, m2430_30 +#-----| r0_4(glval<vector<char>>) = CopyValue : r2430_39 #-----| r0_5(glval<vector<char>>) = Convert : r0_4 -# 2416| r2416_40(glval<unknown>) = FunctionAddress[end] : -# 2416| r2416_41(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[end] : func:r2416_40, this:r0_5 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2416_28 -# 2416| m2416_42(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__end)] : &:r2416_37, r2416_41 +# 2430| r2430_40(glval<unknown>) = FunctionAddress[end] : +# 2430| r2430_41(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[end] : func:r2430_40, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2430_28 +# 2430| m2430_42(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__end)] : &:r2430_37, r2430_41 #-----| Goto -> Block 10 -# 2416| Block 10 -# 2416| m2416_43(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Phi : from 9:m2416_36, from 11:m2416_73 -# 2416| m2416_44(unknown) = Phi : from 9:~m2416_26, from 11:~m2416_70 -# 2416| r2416_45(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_45 -# 2416| r2416_46(glval<unknown>) = FunctionAddress[operator!=] : +# 2430| Block 10 +# 2430| m2430_43(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Phi : from 9:m2430_36, from 11:m2430_73 +# 2430| m2430_44(unknown) = Phi : from 9:~m2430_26, from 11:~m2430_70 +# 2430| r2430_45(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_45 +# 2430| r2430_46(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2416| r2416_47(glval<unknown>) = FunctionAddress[iterator] : -# 2416| r2416_48(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_48 +# 2430| r2430_47(glval<unknown>) = FunctionAddress[iterator] : +# 2430| r2430_48(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_48 #-----| r0_11(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = CopyValue : r0_10 -# 2416| v2416_49(void) = Call[iterator] : func:r2416_47, this:r0_8, 0:r0_11 -# 2416| m2416_50(unknown) = ^CallSideEffect : ~m2416_44 -# 2416| m2416_51(unknown) = Chi : total:m2416_44, partial:m2416_50 -#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2416_42 -# 2416| m2416_52(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2416| m2416_53(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m0_9, partial:m2416_52 -#-----| r0_13(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Load[#temp0:0] : &:r0_8, m2416_53 -# 2416| r2416_54(bool) = Call[operator!=] : func:r2416_46, this:r0_7, 0:r0_13 -# 2416| m2416_55(unknown) = ^CallSideEffect : ~m2416_51 -# 2416| m2416_56(unknown) = Chi : total:m2416_51, partial:m2416_55 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2416_43 -# 2416| v2416_57(void) = ConditionalBranch : r2416_54 +# 2430| v2430_49(void) = Call[iterator] : func:r2430_47, this:r0_8, 0:r0_11 +# 2430| m2430_50(unknown) = ^CallSideEffect : ~m2430_44 +# 2430| m2430_51(unknown) = Chi : total:m2430_44, partial:m2430_50 +#-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m2430_42 +# 2430| m2430_52(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2430| m2430_53(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m0_9, partial:m2430_52 +#-----| r0_13(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Load[#temp0:0] : &:r0_8, m2430_53 +# 2430| r2430_54(bool) = Call[operator!=] : func:r2430_46, this:r0_7, 0:r0_13 +# 2430| m2430_55(unknown) = ^CallSideEffect : ~m2430_51 +# 2430| m2430_56(unknown) = Chi : total:m2430_51, partial:m2430_55 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2430_43 +# 2430| v2430_57(void) = ConditionalBranch : r2430_54 #-----| False -> Block 12 #-----| True -> Block 11 -# 2416| Block 11 -# 2416| r2416_58(glval<char>) = VariableAddress[y] : -# 2416| r2416_59(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_59 -# 2416| r2416_60(glval<unknown>) = FunctionAddress[operator*] : -# 2416| r2416_61(char &) = Call[operator*] : func:r2416_60, this:r0_15 -# 2416| m2416_62(unknown) = ^CallSideEffect : ~m2416_56 -# 2416| m2416_63(unknown) = Chi : total:m2416_56, partial:m2416_62 -#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2416_43 -# 2416| r2416_64(char) = Load[?] : &:r2416_61, ~m2416_63 -# 2416| m2416_65(char) = Store[y] : &:r2416_58, r2416_64 -# 2417| r2417_1(glval<char>) = VariableAddress[x] : -# 2417| r2417_2(char) = Load[x] : &:r2417_1, m2416_17 -# 2417| r2417_3(int) = Convert : r2417_2 -# 2417| r2417_4(glval<char>) = VariableAddress[y] : -# 2417| r2417_5(char) = Load[y] : &:r2417_4, m2416_65 -# 2417| r2417_6(int) = Convert : r2417_5 -# 2417| r2417_7(int) = Add : r2417_6, r2417_3 -# 2417| r2417_8(char) = Convert : r2417_7 -# 2417| m2417_9(char) = Store[y] : &:r2417_4, r2417_8 -# 2416| r2416_66(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -# 2416| r2416_67(glval<unknown>) = FunctionAddress[operator++] : -# 2416| r2416_68(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2416_67, this:r2416_66 -# 2416| m2416_69(unknown) = ^CallSideEffect : ~m2416_63 -# 2416| m2416_70(unknown) = Chi : total:m2416_63, partial:m2416_69 -# 2416| v2416_71(void) = ^IndirectReadSideEffect[-1] : &:r2416_66, m2416_43 -# 2416| m2416_72(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_66 -# 2416| m2416_73(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m2416_43, partial:m2416_72 -# 2416| r2416_74(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2416_68 +# 2430| Block 11 +# 2430| r2430_58(glval<char>) = VariableAddress[y] : +# 2430| r2430_59(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_59 +# 2430| r2430_60(glval<unknown>) = FunctionAddress[operator*] : +# 2430| r2430_61(char &) = Call[operator*] : func:r2430_60, this:r0_15 +# 2430| m2430_62(unknown) = ^CallSideEffect : ~m2430_56 +# 2430| m2430_63(unknown) = Chi : total:m2430_56, partial:m2430_62 +#-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, m2430_43 +# 2430| r2430_64(char) = Load[?] : &:r2430_61, ~m2430_63 +# 2430| m2430_65(char) = Store[y] : &:r2430_58, r2430_64 +# 2431| r2431_1(glval<char>) = VariableAddress[x] : +# 2431| r2431_2(char) = Load[x] : &:r2431_1, m2430_17 +# 2431| r2431_3(int) = Convert : r2431_2 +# 2431| r2431_4(glval<char>) = VariableAddress[y] : +# 2431| r2431_5(char) = Load[y] : &:r2431_4, m2430_65 +# 2431| r2431_6(int) = Convert : r2431_5 +# 2431| r2431_7(int) = Add : r2431_6, r2431_3 +# 2431| r2431_8(char) = Convert : r2431_7 +# 2431| m2431_9(char) = Store[y] : &:r2431_4, r2431_8 +# 2430| r2430_66(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2430| r2430_67(glval<unknown>) = FunctionAddress[operator++] : +# 2430| r2430_68(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2430_67, this:r2430_66 +# 2430| m2430_69(unknown) = ^CallSideEffect : ~m2430_63 +# 2430| m2430_70(unknown) = Chi : total:m2430_63, partial:m2430_69 +# 2430| v2430_71(void) = ^IndirectReadSideEffect[-1] : &:r2430_66, m2430_43 +# 2430| m2430_72(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_66 +# 2430| m2430_73(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Chi : total:m2430_43, partial:m2430_72 +# 2430| r2430_74(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2430_68 #-----| Goto (back edge) -> Block 10 -# 2418| Block 12 -# 2418| v2418_1(void) = NoOp : -# 2396| v2396_5(void) = ReturnVoid : -# 2396| v2396_6(void) = AliasedUse : ~m2416_56 -# 2396| v2396_7(void) = ExitFunction : +# 2432| Block 12 +# 2432| v2432_1(void) = NoOp : +# 2410| v2410_5(void) = ReturnVoid : +# 2410| v2410_6(void) = AliasedUse : ~m2430_56 +# 2410| v2410_7(void) = ExitFunction : -# 2396| Block 13 -# 2396| v2396_8(void) = Unreached : +# 2410| Block 13 +# 2410| v2410_8(void) = Unreached : perf-regression.cpp: # 6| void Big::Big() diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 67327ddc846d..2d476b11fd4e 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1933,6 +1933,20 @@ namespace missing_declaration_entries { Bar2<int> b; b.two_missing_variable_declaration_entries(); } + + template<typename T> struct Bar3 { + + int two_more_missing_variable_declaration_entries() { + extern int g; + int z(float); + return g; + } + }; + + void test3() { + Bar3<int> b; + b.two_more_missing_variable_declaration_entries(); + } } template<typename T> T global_template = 42; diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 80ec181a2194..a112a7698764 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -1346,9 +1346,9 @@ | file://:0:0:0:0 | ChiTotal | total:m1765_19 | | file://:0:0:0:0 | ChiTotal | total:m1883_8 | | file://:0:0:0:0 | ChiTotal | total:m1888_8 | -| file://:0:0:0:0 | ChiTotal | total:m2222_6 | -| file://:0:0:0:0 | ChiTotal | total:m2226_4 | -| file://:0:0:0:0 | ChiTotal | total:m2233_6 | +| file://:0:0:0:0 | ChiTotal | total:m2236_6 | +| file://:0:0:0:0 | ChiTotal | total:m2240_4 | +| file://:0:0:0:0 | ChiTotal | total:m2247_6 | | file://:0:0:0:0 | Left | r0_2 | | file://:0:0:0:0 | Left | r0_4 | | file://:0:0:0:0 | Left | r0_7 | @@ -1389,13 +1389,13 @@ | file://:0:0:0:0 | Load | m1883_6 | | file://:0:0:0:0 | Load | m1883_6 | | file://:0:0:0:0 | Load | m1888_6 | -| file://:0:0:0:0 | Load | m2062_6 | -| file://:0:0:0:0 | Load | m2201_40 | -| file://:0:0:0:0 | Load | m2204_40 | -| file://:0:0:0:0 | Load | m2210_36 | +| file://:0:0:0:0 | Load | m2076_6 | | file://:0:0:0:0 | Load | m2215_40 | -| file://:0:0:0:0 | Load | m2293_46 | -| file://:0:0:0:0 | Load | m2416_53 | +| file://:0:0:0:0 | Load | m2218_40 | +| file://:0:0:0:0 | Load | m2224_36 | +| file://:0:0:0:0 | Load | m2229_40 | +| file://:0:0:0:0 | Load | m2307_46 | +| file://:0:0:0:0 | Load | m2430_53 | | file://:0:0:0:0 | Load | ~m0_4 | | file://:0:0:0:0 | Load | ~m1493_6 | | file://:0:0:0:0 | Load | ~m1761_10 | @@ -1425,30 +1425,30 @@ | file://:0:0:0:0 | SideEffect | m1127_19 | | file://:0:0:0:0 | SideEffect | m1133_19 | | file://:0:0:0:0 | SideEffect | m1133_19 | -| file://:0:0:0:0 | SideEffect | m2201_13 | -| file://:0:0:0:0 | SideEffect | m2201_13 | -| file://:0:0:0:0 | SideEffect | m2201_30 | -| file://:0:0:0:0 | SideEffect | m2201_30 | -| file://:0:0:0:0 | SideEffect | m2204_13 | -| file://:0:0:0:0 | SideEffect | m2204_13 | -| file://:0:0:0:0 | SideEffect | m2204_30 | -| file://:0:0:0:0 | SideEffect | m2204_30 | -| file://:0:0:0:0 | SideEffect | m2210_9 | -| file://:0:0:0:0 | SideEffect | m2210_9 | -| file://:0:0:0:0 | SideEffect | m2210_26 | -| file://:0:0:0:0 | SideEffect | m2210_26 | | file://:0:0:0:0 | SideEffect | m2215_13 | | file://:0:0:0:0 | SideEffect | m2215_13 | | file://:0:0:0:0 | SideEffect | m2215_30 | | file://:0:0:0:0 | SideEffect | m2215_30 | -| file://:0:0:0:0 | SideEffect | m2293_21 | -| file://:0:0:0:0 | SideEffect | m2293_21 | -| file://:0:0:0:0 | SideEffect | m2293_36 | -| file://:0:0:0:0 | SideEffect | m2293_36 | -| file://:0:0:0:0 | SideEffect | m2416_28 | -| file://:0:0:0:0 | SideEffect | m2416_28 | -| file://:0:0:0:0 | SideEffect | m2416_43 | -| file://:0:0:0:0 | SideEffect | m2416_43 | +| file://:0:0:0:0 | SideEffect | m2218_13 | +| file://:0:0:0:0 | SideEffect | m2218_13 | +| file://:0:0:0:0 | SideEffect | m2218_30 | +| file://:0:0:0:0 | SideEffect | m2218_30 | +| file://:0:0:0:0 | SideEffect | m2224_9 | +| file://:0:0:0:0 | SideEffect | m2224_9 | +| file://:0:0:0:0 | SideEffect | m2224_26 | +| file://:0:0:0:0 | SideEffect | m2224_26 | +| file://:0:0:0:0 | SideEffect | m2229_13 | +| file://:0:0:0:0 | SideEffect | m2229_13 | +| file://:0:0:0:0 | SideEffect | m2229_30 | +| file://:0:0:0:0 | SideEffect | m2229_30 | +| file://:0:0:0:0 | SideEffect | m2307_21 | +| file://:0:0:0:0 | SideEffect | m2307_21 | +| file://:0:0:0:0 | SideEffect | m2307_36 | +| file://:0:0:0:0 | SideEffect | m2307_36 | +| file://:0:0:0:0 | SideEffect | m2430_28 | +| file://:0:0:0:0 | SideEffect | m2430_28 | +| file://:0:0:0:0 | SideEffect | m2430_43 | +| file://:0:0:0:0 | SideEffect | m2430_43 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | | file://:0:0:0:0 | SideEffect | ~m0_4 | @@ -1467,15 +1467,15 @@ | file://:0:0:0:0 | SideEffect | ~m1289_4 | | file://:0:0:0:0 | SideEffect | ~m1496_6 | | file://:0:0:0:0 | SideEffect | ~m1888_8 | -| file://:0:0:0:0 | SideEffect | ~m2201_29 | -| file://:0:0:0:0 | SideEffect | ~m2204_29 | -| file://:0:0:0:0 | SideEffect | ~m2210_25 | | file://:0:0:0:0 | SideEffect | ~m2215_29 | -| file://:0:0:0:0 | SideEffect | ~m2222_6 | -| file://:0:0:0:0 | SideEffect | ~m2226_4 | -| file://:0:0:0:0 | SideEffect | ~m2233_6 | -| file://:0:0:0:0 | SideEffect | ~m2293_35 | -| file://:0:0:0:0 | SideEffect | ~m2416_42 | +| file://:0:0:0:0 | SideEffect | ~m2218_29 | +| file://:0:0:0:0 | SideEffect | ~m2224_25 | +| file://:0:0:0:0 | SideEffect | ~m2229_29 | +| file://:0:0:0:0 | SideEffect | ~m2236_6 | +| file://:0:0:0:0 | SideEffect | ~m2240_4 | +| file://:0:0:0:0 | SideEffect | ~m2247_6 | +| file://:0:0:0:0 | SideEffect | ~m2307_35 | +| file://:0:0:0:0 | SideEffect | ~m2430_42 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | | file://:0:0:0:0 | StoreValue | r0_1 | @@ -9809,1683 +9809,1408 @@ | ir.cpp:1934:11:1934:50 | ChiPartial | partial:m1934_4 | | ir.cpp:1934:11:1934:50 | ChiTotal | total:m1932_4 | | ir.cpp:1934:11:1934:50 | SideEffect | ~m1932_4 | -| ir.cpp:1938:24:1938:24 | Address | &:r1938_3 | -| ir.cpp:1938:24:1938:24 | Address | &:r1938_3 | -| ir.cpp:1938:24:1938:24 | SideEffect | ~m1938_6 | -| ir.cpp:1938:24:1938:24 | SideEffect | ~m1938_6 | -| ir.cpp:1938:42:1938:43 | ChiPartial | partial:m1938_5 | -| ir.cpp:1938:42:1938:43 | ChiPartial | partial:m1938_5 | -| ir.cpp:1938:42:1938:43 | ChiTotal | total:m1938_2 | -| ir.cpp:1938:42:1938:43 | ChiTotal | total:m1938_2 | -| ir.cpp:1938:42:1938:43 | StoreValue | r1938_4 | -| ir.cpp:1938:42:1938:43 | StoreValue | r1938_4 | -| ir.cpp:1940:5:1940:28 | Address | &:r1940_5 | -| ir.cpp:1940:5:1940:28 | ChiPartial | partial:m1940_3 | -| ir.cpp:1940:5:1940:28 | ChiTotal | total:m1940_2 | -| ir.cpp:1940:5:1940:28 | Load | m1943_8 | -| ir.cpp:1940:5:1940:28 | SideEffect | m1940_3 | -| ir.cpp:1941:9:1941:17 | Address | &:r1941_1 | -| ir.cpp:1941:21:1941:40 | Address | &:r1941_2 | -| ir.cpp:1941:21:1941:40 | Load | ~m1940_3 | -| ir.cpp:1941:21:1941:40 | StoreValue | r1941_3 | -| ir.cpp:1942:10:1942:19 | Address | &:r1942_1 | -| ir.cpp:1942:23:1942:43 | Address | &:r1942_2 | -| ir.cpp:1942:23:1942:43 | Load | ~m1940_3 | -| ir.cpp:1942:23:1942:43 | StoreValue | r1942_3 | -| ir.cpp:1943:5:1943:39 | Address | &:r1943_1 | -| ir.cpp:1943:12:1943:20 | Address | &:r1943_2 | -| ir.cpp:1943:12:1943:20 | Left | r1943_3 | -| ir.cpp:1943:12:1943:20 | Load | m1941_4 | -| ir.cpp:1943:12:1943:38 | StoreValue | r1943_7 | -| ir.cpp:1943:24:1943:38 | Right | r1943_6 | -| ir.cpp:1943:29:1943:38 | Address | &:r1943_4 | -| ir.cpp:1943:29:1943:38 | Load | m1942_4 | -| ir.cpp:1943:29:1943:38 | Unary | r1943_5 | -| ir.cpp:1948:5:1948:16 | Address | &:r1948_7 | -| ir.cpp:1948:5:1948:16 | ChiPartial | partial:m1948_3 | -| ir.cpp:1948:5:1948:16 | ChiTotal | total:m1948_2 | -| ir.cpp:1948:5:1948:16 | Load | m1950_4 | -| ir.cpp:1948:5:1948:16 | SideEffect | m1948_3 | -| ir.cpp:1948:22:1948:22 | Address | &:r1948_5 | -| ir.cpp:1949:9:1949:9 | Address | &:r1949_1 | -| ir.cpp:1949:9:1949:9 | Left | r1949_2 | -| ir.cpp:1949:9:1949:9 | Load | m1948_6 | -| ir.cpp:1949:9:1949:14 | Condition | r1949_4 | -| ir.cpp:1949:13:1949:14 | Right | r1949_3 | -| ir.cpp:1950:9:1950:17 | Address | &:r1950_1 | -| ir.cpp:1950:16:1950:16 | Address | &:r1950_2 | -| ir.cpp:1950:16:1950:16 | Load | m1948_6 | -| ir.cpp:1950:16:1950:16 | StoreValue | r1950_3 | -| ir.cpp:1952:9:1952:20 | CallTarget | func:r1952_1 | -| ir.cpp:1952:9:1952:20 | ChiPartial | partial:m1952_3 | -| ir.cpp:1952:9:1952:20 | ChiTotal | total:m1948_4 | -| ir.cpp:1952:9:1952:20 | SideEffect | ~m1948_4 | -| ir.cpp:1956:5:1956:17 | Address | &:r1956_8 | -| ir.cpp:1956:5:1956:17 | ChiPartial | partial:m1956_3 | -| ir.cpp:1956:5:1956:17 | ChiTotal | total:m1956_2 | -| ir.cpp:1956:5:1956:17 | Load | m1960_4 | -| ir.cpp:1956:5:1956:17 | SideEffect | m1956_3 | -| ir.cpp:1956:23:1956:23 | Address | &:r1956_5 | -| ir.cpp:1957:9:1957:9 | Address | &:r1957_1 | -| ir.cpp:1957:9:1957:9 | Left | r1957_2 | -| ir.cpp:1957:9:1957:9 | Load | m1956_6 | -| ir.cpp:1957:9:1957:14 | Condition | r1957_4 | -| ir.cpp:1957:13:1957:14 | Right | r1957_3 | -| ir.cpp:1958:9:1958:20 | CallTarget | func:r1958_1 | -| ir.cpp:1958:9:1958:20 | ChiPartial | partial:m1958_3 | -| ir.cpp:1958:9:1958:20 | ChiTotal | total:m1956_4 | -| ir.cpp:1958:9:1958:20 | SideEffect | ~m1956_4 | -| ir.cpp:1960:5:1960:13 | Address | &:r1960_1 | -| ir.cpp:1960:12:1960:12 | Address | &:r1960_2 | -| ir.cpp:1960:12:1960:12 | Load | m1956_6 | -| ir.cpp:1960:12:1960:12 | StoreValue | r1960_3 | -| ir.cpp:1963:5:1963:19 | Address | &:r1963_7 | -| ir.cpp:1963:5:1963:19 | ChiPartial | partial:m1963_3 | -| ir.cpp:1963:5:1963:19 | ChiTotal | total:m1963_2 | -| ir.cpp:1963:5:1963:19 | Load | m1964_4 | -| ir.cpp:1963:5:1963:19 | SideEffect | m1963_3 | -| ir.cpp:1963:25:1963:25 | Address | &:r1963_5 | -| ir.cpp:1964:5:1964:13 | Address | &:r1964_1 | -| ir.cpp:1964:12:1964:12 | Address | &:r1964_2 | -| ir.cpp:1964:12:1964:12 | Load | m1963_6 | -| ir.cpp:1964:12:1964:12 | StoreValue | r1964_3 | -| ir.cpp:1967:6:1967:43 | ChiPartial | partial:m1967_3 | -| ir.cpp:1967:6:1967:43 | ChiTotal | total:m1967_2 | -| ir.cpp:1967:6:1967:43 | SideEffect | ~m1975_6 | -| ir.cpp:1968:7:1968:7 | Address | &:r1968_1 | -| ir.cpp:1968:7:1968:7 | Address | &:r1968_1 | -| ir.cpp:1968:7:1968:7 | Arg(this) | this:r1968_1 | -| ir.cpp:1968:7:1968:7 | CallTarget | func:r1968_3 | -| ir.cpp:1968:7:1968:7 | ChiPartial | partial:m1968_5 | -| ir.cpp:1968:7:1968:7 | ChiPartial | partial:m1968_7 | -| ir.cpp:1968:7:1968:7 | ChiTotal | total:m1967_4 | -| ir.cpp:1968:7:1968:7 | ChiTotal | total:m1968_2 | -| ir.cpp:1968:7:1968:7 | SideEffect | ~m1967_4 | -| ir.cpp:1969:9:1969:9 | Address | &:r1969_1 | -| ir.cpp:1970:5:1970:5 | Address | &:r1970_7 | -| ir.cpp:1970:11:1970:30 | CallTarget | func:r1970_2 | -| ir.cpp:1970:11:1970:30 | ChiPartial | partial:m1970_5 | -| ir.cpp:1970:11:1970:30 | ChiTotal | total:m1968_6 | -| ir.cpp:1970:11:1970:30 | SideEffect | ~m1968_6 | -| ir.cpp:1970:11:1970:30 | StoreValue | r1970_4 | -| ir.cpp:1970:32:1970:33 | Arg(0) | 0:r1970_3 | +| ir.cpp:1939:13:1939:13 | Address | &:r1939_5 | +| ir.cpp:1939:13:1939:13 | Address | &:r1939_5 | +| ir.cpp:1939:13:1939:13 | Address | &:r1939_7 | +| ir.cpp:1939:13:1939:13 | Address | &:r1939_7 | +| ir.cpp:1939:13:1939:13 | Address | &:r1939_10 | +| ir.cpp:1939:13:1939:13 | ChiPartial | partial:m1939_3 | +| ir.cpp:1939:13:1939:13 | ChiTotal | total:m1939_2 | +| ir.cpp:1939:13:1939:13 | Load | m1939_6 | +| ir.cpp:1939:13:1939:13 | Load | m1942_4 | +| ir.cpp:1939:13:1939:13 | SideEffect | m1939_3 | +| ir.cpp:1939:13:1939:13 | SideEffect | m1939_8 | +| ir.cpp:1942:13:1942:21 | Address | &:r1942_1 | +| ir.cpp:1942:20:1942:20 | Address | &:r1942_2 | +| ir.cpp:1942:20:1942:20 | Load | ~m1939_3 | +| ir.cpp:1942:20:1942:20 | StoreValue | r1942_3 | +| ir.cpp:1946:10:1946:14 | ChiPartial | partial:m1946_3 | +| ir.cpp:1946:10:1946:14 | ChiTotal | total:m1946_2 | +| ir.cpp:1946:10:1946:14 | SideEffect | ~m1948_5 | +| ir.cpp:1947:19:1947:19 | Address | &:r1947_1 | +| ir.cpp:1948:9:1948:9 | Address | &:r1948_1 | +| ir.cpp:1948:9:1948:9 | Address | &:r1948_1 | +| ir.cpp:1948:9:1948:9 | Arg(this) | this:r1948_1 | +| ir.cpp:1948:9:1948:9 | ChiPartial | partial:m1948_7 | +| ir.cpp:1948:9:1948:9 | ChiTotal | total:m1947_2 | +| ir.cpp:1948:9:1948:9 | SideEffect | m1947_2 | +| ir.cpp:1948:11:1948:55 | CallTarget | func:r1948_2 | +| ir.cpp:1948:11:1948:55 | ChiPartial | partial:m1948_4 | +| ir.cpp:1948:11:1948:55 | ChiTotal | total:m1946_4 | +| ir.cpp:1948:11:1948:55 | SideEffect | ~m1946_4 | +| ir.cpp:1952:24:1952:24 | Address | &:r1952_3 | +| ir.cpp:1952:24:1952:24 | Address | &:r1952_3 | +| ir.cpp:1952:24:1952:24 | SideEffect | ~m1952_6 | +| ir.cpp:1952:24:1952:24 | SideEffect | ~m1952_6 | +| ir.cpp:1952:42:1952:43 | ChiPartial | partial:m1952_5 | +| ir.cpp:1952:42:1952:43 | ChiPartial | partial:m1952_5 | +| ir.cpp:1952:42:1952:43 | ChiTotal | total:m1952_2 | +| ir.cpp:1952:42:1952:43 | ChiTotal | total:m1952_2 | +| ir.cpp:1952:42:1952:43 | StoreValue | r1952_4 | +| ir.cpp:1952:42:1952:43 | StoreValue | r1952_4 | +| ir.cpp:1954:5:1954:28 | Address | &:r1954_5 | +| ir.cpp:1954:5:1954:28 | ChiPartial | partial:m1954_3 | +| ir.cpp:1954:5:1954:28 | ChiTotal | total:m1954_2 | +| ir.cpp:1954:5:1954:28 | Load | m1957_8 | +| ir.cpp:1954:5:1954:28 | SideEffect | m1954_3 | +| ir.cpp:1955:9:1955:17 | Address | &:r1955_1 | +| ir.cpp:1955:21:1955:40 | Address | &:r1955_2 | +| ir.cpp:1955:21:1955:40 | Load | ~m1954_3 | +| ir.cpp:1955:21:1955:40 | StoreValue | r1955_3 | +| ir.cpp:1956:10:1956:19 | Address | &:r1956_1 | +| ir.cpp:1956:23:1956:43 | Address | &:r1956_2 | +| ir.cpp:1956:23:1956:43 | Load | ~m1954_3 | +| ir.cpp:1956:23:1956:43 | StoreValue | r1956_3 | +| ir.cpp:1957:5:1957:39 | Address | &:r1957_1 | +| ir.cpp:1957:12:1957:20 | Address | &:r1957_2 | +| ir.cpp:1957:12:1957:20 | Left | r1957_3 | +| ir.cpp:1957:12:1957:20 | Load | m1955_4 | +| ir.cpp:1957:12:1957:38 | StoreValue | r1957_7 | +| ir.cpp:1957:24:1957:38 | Right | r1957_6 | +| ir.cpp:1957:29:1957:38 | Address | &:r1957_4 | +| ir.cpp:1957:29:1957:38 | Load | m1956_4 | +| ir.cpp:1957:29:1957:38 | Unary | r1957_5 | +| ir.cpp:1962:5:1962:16 | Address | &:r1962_7 | +| ir.cpp:1962:5:1962:16 | ChiPartial | partial:m1962_3 | +| ir.cpp:1962:5:1962:16 | ChiTotal | total:m1962_2 | +| ir.cpp:1962:5:1962:16 | Load | m1964_4 | +| ir.cpp:1962:5:1962:16 | SideEffect | m1962_3 | +| ir.cpp:1962:22:1962:22 | Address | &:r1962_5 | +| ir.cpp:1963:9:1963:9 | Address | &:r1963_1 | +| ir.cpp:1963:9:1963:9 | Left | r1963_2 | +| ir.cpp:1963:9:1963:9 | Load | m1962_6 | +| ir.cpp:1963:9:1963:14 | Condition | r1963_4 | +| ir.cpp:1963:13:1963:14 | Right | r1963_3 | +| ir.cpp:1964:9:1964:17 | Address | &:r1964_1 | +| ir.cpp:1964:16:1964:16 | Address | &:r1964_2 | +| ir.cpp:1964:16:1964:16 | Load | m1962_6 | +| ir.cpp:1964:16:1964:16 | StoreValue | r1964_3 | +| ir.cpp:1966:9:1966:20 | CallTarget | func:r1966_1 | +| ir.cpp:1966:9:1966:20 | ChiPartial | partial:m1966_3 | +| ir.cpp:1966:9:1966:20 | ChiTotal | total:m1962_4 | +| ir.cpp:1966:9:1966:20 | SideEffect | ~m1962_4 | +| ir.cpp:1970:5:1970:17 | Address | &:r1970_8 | +| ir.cpp:1970:5:1970:17 | ChiPartial | partial:m1970_3 | +| ir.cpp:1970:5:1970:17 | ChiTotal | total:m1970_2 | +| ir.cpp:1970:5:1970:17 | Load | m1974_4 | +| ir.cpp:1970:5:1970:17 | SideEffect | m1970_3 | +| ir.cpp:1970:23:1970:23 | Address | &:r1970_5 | | ir.cpp:1971:9:1971:9 | Address | &:r1971_1 | -| ir.cpp:1972:5:1972:5 | Address | &:r1972_6 | -| ir.cpp:1972:9:1972:31 | CallTarget | func:r1972_1 | -| ir.cpp:1972:9:1972:31 | ChiPartial | partial:m1972_4 | -| ir.cpp:1972:9:1972:31 | ChiTotal | total:m1970_6 | -| ir.cpp:1972:9:1972:31 | SideEffect | ~m1970_6 | -| ir.cpp:1972:9:1972:31 | StoreValue | r1972_3 | -| ir.cpp:1972:33:1972:34 | Arg(0) | 0:r1972_2 | -| ir.cpp:1973:9:1973:9 | Address | &:r1973_1 | -| ir.cpp:1974:5:1974:5 | Address | &:r1974_6 | -| ir.cpp:1974:9:1974:23 | CallTarget | func:r1974_1 | -| ir.cpp:1974:9:1974:23 | ChiPartial | partial:m1974_4 | -| ir.cpp:1974:9:1974:23 | ChiTotal | total:m1972_5 | -| ir.cpp:1974:9:1974:23 | SideEffect | ~m1972_5 | -| ir.cpp:1974:9:1974:23 | StoreValue | r1974_3 | -| ir.cpp:1974:25:1974:26 | Arg(0) | 0:r1974_2 | -| ir.cpp:1975:1:1975:1 | Address | &:r1975_2 | -| ir.cpp:1975:1:1975:1 | Address | &:r1975_2 | -| ir.cpp:1975:1:1975:1 | Arg(this) | this:r1975_2 | -| ir.cpp:1975:1:1975:1 | CallTarget | func:r1975_3 | -| ir.cpp:1975:1:1975:1 | ChiPartial | partial:m1975_5 | -| ir.cpp:1975:1:1975:1 | ChiPartial | partial:m1975_8 | -| ir.cpp:1975:1:1975:1 | ChiTotal | total:m1968_8 | -| ir.cpp:1975:1:1975:1 | ChiTotal | total:m1974_5 | -| ir.cpp:1975:1:1975:1 | SideEffect | m1968_8 | -| ir.cpp:1975:1:1975:1 | SideEffect | ~m1974_5 | -| ir.cpp:1977:6:1977:23 | ChiPartial | partial:m1977_3 | -| ir.cpp:1977:6:1977:23 | ChiTotal | total:m1977_2 | -| ir.cpp:1977:6:1977:23 | SideEffect | m1977_3 | -| ir.cpp:1978:7:1978:7 | Address | &:r1978_1 | -| ir.cpp:1978:10:1978:10 | Address | &:r1978_3 | -| ir.cpp:1979:3:1979:3 | Address | &:r1979_5 | -| ir.cpp:1979:7:1979:7 | Address | &:r1979_2 | -| ir.cpp:1979:7:1979:7 | Address | &:r1979_2 | -| ir.cpp:1979:7:1979:12 | Load | m1979_3 | -| ir.cpp:1979:7:1979:12 | StoreValue | r1979_4 | -| ir.cpp:1979:11:1979:12 | StoreValue | r1979_1 | -| ir.cpp:1982:6:1982:38 | ChiPartial | partial:m1982_3 | -| ir.cpp:1982:6:1982:38 | ChiTotal | total:m1982_2 | -| ir.cpp:1982:6:1982:38 | SideEffect | m1982_3 | -| ir.cpp:1983:7:1983:7 | Address | &:r1983_1 | -| ir.cpp:1983:10:1983:10 | Address | &:r1983_3 | -| ir.cpp:1983:13:1983:14 | StoreValue | r1983_4 | -| ir.cpp:1984:3:1984:3 | Address | &:r1984_7 | -| ir.cpp:1984:8:1984:8 | Address | &:r1984_2 | -| ir.cpp:1984:8:1984:8 | Address | &:r1984_2 | -| ir.cpp:1984:8:1984:8 | Address | &:r1984_2 | -| ir.cpp:1984:8:1984:8 | Left | r1984_3 | -| ir.cpp:1984:8:1984:8 | Load | m1983_5 | -| ir.cpp:1984:8:1984:14 | Load | m1984_5 | -| ir.cpp:1984:8:1984:14 | StoreValue | r1984_4 | -| ir.cpp:1984:8:1984:14 | StoreValue | r1984_6 | -| ir.cpp:1984:13:1984:14 | Right | r1984_1 | -| ir.cpp:1991:15:1991:43 | Address | &:r1991_5 | -| ir.cpp:1991:15:1991:43 | ChiPartial | partial:m1991_3 | -| ir.cpp:1991:15:1991:43 | ChiTotal | total:m1991_2 | -| ir.cpp:1991:15:1991:43 | Load | m1992_4 | -| ir.cpp:1991:15:1991:43 | SideEffect | m1991_3 | -| ir.cpp:1992:9:1992:17 | Address | &:r1992_1 | -| ir.cpp:1992:16:1992:16 | StoreValue | r1992_3 | -| ir.cpp:1992:16:1992:16 | Unary | r1992_2 | -| ir.cpp:1994:14:1994:39 | Address | &:r1994_5 | -| ir.cpp:1994:14:1994:39 | ChiPartial | partial:m1994_3 | -| ir.cpp:1994:14:1994:39 | ChiTotal | total:m1994_2 | -| ir.cpp:1994:14:1994:39 | Load | m1995_4 | -| ir.cpp:1994:14:1994:39 | SideEffect | m1994_3 | -| ir.cpp:1995:9:1995:17 | Address | &:r1995_1 | -| ir.cpp:1995:16:1995:16 | Address | &:r1995_2 | -| ir.cpp:1995:16:1995:16 | Load | ~m1994_3 | -| ir.cpp:1995:16:1995:16 | StoreValue | r1995_3 | -| ir.cpp:1999:6:1999:55 | ChiPartial | partial:m1999_3 | -| ir.cpp:1999:6:1999:55 | ChiTotal | total:m1999_2 | -| ir.cpp:1999:6:1999:55 | SideEffect | ~m2014_4 | -| ir.cpp:2000:7:2000:7 | Address | &:r2000_1 | -| ir.cpp:2002:7:2002:35 | CallTarget | func:r2002_2 | -| ir.cpp:2002:7:2002:35 | ChiPartial | partial:m2002_4 | -| ir.cpp:2002:7:2002:35 | ChiTotal | total:m1999_4 | -| ir.cpp:2002:7:2002:35 | SideEffect | ~m1999_4 | -| ir.cpp:2002:7:2002:35 | Unary | r2002_3 | -| ir.cpp:2003:5:2003:36 | CallTarget | func:r2003_1 | -| ir.cpp:2003:5:2003:36 | ChiPartial | partial:m2003_3 | -| ir.cpp:2003:5:2003:36 | ChiTotal | total:m2002_5 | -| ir.cpp:2003:5:2003:36 | SideEffect | ~m2002_5 | -| ir.cpp:2003:5:2003:36 | Unary | r2003_2 | -| ir.cpp:2004:7:2004:32 | CallTarget | func:r2004_2 | -| ir.cpp:2004:7:2004:32 | ChiPartial | partial:m2004_4 | -| ir.cpp:2004:7:2004:32 | ChiTotal | total:m2003_4 | -| ir.cpp:2004:7:2004:32 | SideEffect | ~m2003_4 | -| ir.cpp:2005:5:2005:33 | CallTarget | func:r2005_1 | -| ir.cpp:2005:5:2005:33 | ChiPartial | partial:m2005_3 | -| ir.cpp:2005:5:2005:33 | ChiTotal | total:m2004_5 | -| ir.cpp:2005:5:2005:33 | SideEffect | ~m2004_5 | -| ir.cpp:2007:7:2007:7 | Address | &:r2007_1 | -| ir.cpp:2008:5:2008:5 | Address | &:r2008_7 | -| ir.cpp:2008:11:2008:39 | Address | &:r2008_3 | -| ir.cpp:2008:11:2008:39 | CallTarget | func:r2008_2 | -| ir.cpp:2008:11:2008:39 | ChiPartial | partial:m2008_4 | -| ir.cpp:2008:11:2008:39 | ChiTotal | total:m2005_4 | -| ir.cpp:2008:11:2008:39 | SideEffect | ~m2005_4 | -| ir.cpp:2008:40:2008:42 | Load | ~m2008_5 | -| ir.cpp:2008:40:2008:42 | StoreValue | r2008_6 | -| ir.cpp:2009:7:2009:7 | Address | &:r2009_1 | -| ir.cpp:2010:5:2010:5 | Address | &:r2010_6 | -| ir.cpp:2010:9:2010:40 | Address | &:r2010_2 | -| ir.cpp:2010:9:2010:40 | CallTarget | func:r2010_1 | -| ir.cpp:2010:9:2010:40 | ChiPartial | partial:m2010_3 | -| ir.cpp:2010:9:2010:40 | ChiTotal | total:m2008_5 | -| ir.cpp:2010:9:2010:40 | SideEffect | ~m2008_5 | -| ir.cpp:2010:41:2010:43 | Load | ~m2010_4 | -| ir.cpp:2010:41:2010:43 | StoreValue | r2010_5 | -| ir.cpp:2011:7:2011:7 | Address | &:r2011_1 | -| ir.cpp:2012:5:2012:5 | Address | &:r2012_6 | -| ir.cpp:2012:11:2012:36 | CallTarget | func:r2012_2 | -| ir.cpp:2012:11:2012:36 | ChiPartial | partial:m2012_4 | -| ir.cpp:2012:11:2012:36 | ChiTotal | total:m2010_4 | -| ir.cpp:2012:11:2012:36 | SideEffect | ~m2010_4 | -| ir.cpp:2012:11:2012:36 | StoreValue | r2012_3 | -| ir.cpp:2013:7:2013:7 | Address | &:r2013_1 | -| ir.cpp:2014:5:2014:5 | Address | &:r2014_5 | -| ir.cpp:2014:9:2014:37 | CallTarget | func:r2014_1 | -| ir.cpp:2014:9:2014:37 | ChiPartial | partial:m2014_3 | -| ir.cpp:2014:9:2014:37 | ChiTotal | total:m2012_5 | -| ir.cpp:2014:9:2014:37 | SideEffect | ~m2012_5 | -| ir.cpp:2014:9:2014:37 | StoreValue | r2014_2 | -| ir.cpp:2017:6:2017:18 | ChiPartial | partial:m2017_3 | -| ir.cpp:2017:6:2017:18 | ChiTotal | total:m2017_2 | -| ir.cpp:2017:6:2017:18 | SideEffect | m2017_3 | -| ir.cpp:2018:18:2018:18 | Address | &:r2018_1 | -| ir.cpp:2019:5:2019:5 | Address | &:r2019_1 | -| ir.cpp:2019:5:2019:5 | Load | m2018_2 | -| ir.cpp:2028:6:2028:24 | ChiPartial | partial:m2028_3 | -| ir.cpp:2028:6:2028:24 | ChiTotal | total:m2028_2 | -| ir.cpp:2028:6:2028:24 | SideEffect | ~m2036_5 | -| ir.cpp:2029:12:2029:12 | Address | &:r2029_1 | -| ir.cpp:2031:5:2031:19 | ChiPartial | partial:m2031_7 | -| ir.cpp:2031:5:2031:19 | ChiTotal | total:m2031_5 | -| ir.cpp:2031:7:2031:12 | CallTarget | func:r2031_2 | -| ir.cpp:2031:7:2031:12 | ChiPartial | partial:m2031_4 | -| ir.cpp:2031:7:2031:12 | ChiTotal | total:m2028_4 | -| ir.cpp:2031:7:2031:12 | SideEffect | ~m2028_4 | -| ir.cpp:2031:7:2031:12 | Unary | r2031_3 | -| ir.cpp:2031:13:2031:16 | Address | &:r2031_6 | -| ir.cpp:2032:5:2032:19 | ChiPartial | partial:m2032_7 | -| ir.cpp:2032:5:2032:19 | ChiTotal | total:m2032_5 | -| ir.cpp:2032:7:2032:12 | CallTarget | func:r2032_2 | -| ir.cpp:2032:7:2032:12 | ChiPartial | partial:m2032_4 | -| ir.cpp:2032:7:2032:12 | ChiTotal | total:m2031_8 | -| ir.cpp:2032:7:2032:12 | SideEffect | ~m2031_8 | -| ir.cpp:2032:7:2032:12 | Unary | r2032_3 | -| ir.cpp:2032:13:2032:16 | Address | &:r2032_6 | -| ir.cpp:2033:5:2033:15 | Address | &:r2033_1 | -| ir.cpp:2033:5:2033:15 | Address | &:r2033_1 | -| ir.cpp:2033:7:2033:13 | CallTarget | func:r2033_3 | -| ir.cpp:2033:7:2033:13 | ChiPartial | partial:m2033_5 | -| ir.cpp:2033:7:2033:13 | ChiTotal | total:m2032_8 | -| ir.cpp:2033:7:2033:13 | SideEffect | ~m2032_8 | -| ir.cpp:2033:7:2033:13 | StoreValue | r2033_4 | -| ir.cpp:2034:5:2034:18 | CallTarget | func:r2034_1 | -| ir.cpp:2034:5:2034:18 | ChiPartial | partial:m2034_3 | -| ir.cpp:2034:5:2034:18 | ChiTotal | total:m2033_6 | -| ir.cpp:2034:5:2034:18 | SideEffect | ~m2033_6 | -| ir.cpp:2034:5:2034:18 | Unary | r2034_2 | -| ir.cpp:2034:5:2034:25 | ChiPartial | partial:m2034_6 | -| ir.cpp:2034:5:2034:25 | ChiTotal | total:m2034_4 | -| ir.cpp:2034:19:2034:22 | Address | &:r2034_5 | -| ir.cpp:2035:5:2035:18 | CallTarget | func:r2035_1 | -| ir.cpp:2035:5:2035:18 | ChiPartial | partial:m2035_3 | -| ir.cpp:2035:5:2035:18 | ChiTotal | total:m2034_7 | -| ir.cpp:2035:5:2035:18 | SideEffect | ~m2034_7 | -| ir.cpp:2035:5:2035:18 | Unary | r2035_2 | -| ir.cpp:2035:5:2035:25 | ChiPartial | partial:m2035_6 | -| ir.cpp:2035:5:2035:25 | ChiTotal | total:m2035_4 | -| ir.cpp:2035:19:2035:22 | Address | &:r2035_5 | -| ir.cpp:2036:5:2036:19 | CallTarget | func:r2036_2 | -| ir.cpp:2036:5:2036:19 | ChiPartial | partial:m2036_4 | -| ir.cpp:2036:5:2036:19 | ChiTotal | total:m2035_7 | -| ir.cpp:2036:5:2036:19 | SideEffect | ~m2035_7 | -| ir.cpp:2036:5:2036:19 | StoreValue | r2036_3 | -| ir.cpp:2036:5:2036:21 | Address | &:r2036_1 | -| ir.cpp:2036:5:2036:21 | Address | &:r2036_1 | -| ir.cpp:2039:6:2039:21 | ChiPartial | partial:m2039_3 | -| ir.cpp:2039:6:2039:21 | ChiTotal | total:m2039_2 | -| ir.cpp:2039:6:2039:21 | SideEffect | ~m2043_6 | -| ir.cpp:2040:7:2040:7 | Address | &:r2040_1 | -| ir.cpp:2040:7:2040:7 | Address | &:r2040_1 | -| ir.cpp:2040:7:2040:7 | Arg(this) | this:r2040_1 | -| ir.cpp:2040:7:2040:7 | CallTarget | func:r2040_3 | -| ir.cpp:2040:7:2040:7 | ChiPartial | partial:m2040_5 | -| ir.cpp:2040:7:2040:7 | ChiPartial | partial:m2040_7 | -| ir.cpp:2040:7:2040:7 | ChiTotal | total:m2039_4 | -| ir.cpp:2040:7:2040:7 | ChiTotal | total:m2040_2 | -| ir.cpp:2040:7:2040:7 | SideEffect | ~m2039_4 | -| ir.cpp:2041:11:2041:13 | Address | &:r2041_1 | -| ir.cpp:2041:23:2041:45 | StoreValue | r2041_2 | -| ir.cpp:2042:5:2042:7 | Address | &:r2042_3 | -| ir.cpp:2042:13:2042:32 | StoreValue | r2042_2 | -| ir.cpp:2043:1:2043:1 | Address | &:r2043_2 | -| ir.cpp:2043:1:2043:1 | Address | &:r2043_2 | -| ir.cpp:2043:1:2043:1 | Arg(this) | this:r2043_2 | -| ir.cpp:2043:1:2043:1 | CallTarget | func:r2043_3 | -| ir.cpp:2043:1:2043:1 | ChiPartial | partial:m2043_5 | -| ir.cpp:2043:1:2043:1 | ChiPartial | partial:m2043_8 | -| ir.cpp:2043:1:2043:1 | ChiTotal | total:m2040_6 | -| ir.cpp:2043:1:2043:1 | ChiTotal | total:m2040_8 | -| ir.cpp:2043:1:2043:1 | SideEffect | m2040_8 | -| ir.cpp:2043:1:2043:1 | SideEffect | ~m2040_6 | -| ir.cpp:2045:6:2045:19 | ChiPartial | partial:m2045_3 | -| ir.cpp:2045:6:2045:19 | ChiTotal | total:m2045_2 | -| ir.cpp:2045:6:2045:19 | SideEffect | ~m2049_9 | -| ir.cpp:2045:26:2045:26 | Address | &:r2045_5 | -| ir.cpp:2045:33:2045:33 | Address | &:r2045_7 | -| ir.cpp:2045:40:2045:40 | Address | &:r2045_9 | -| ir.cpp:2045:47:2045:47 | Address | &:r2045_11 | -| ir.cpp:2046:5:2046:5 | Address | &:r2046_7 | -| ir.cpp:2046:9:2046:9 | Address | &:r2046_1 | -| ir.cpp:2046:9:2046:9 | Condition | r2046_2 | -| ir.cpp:2046:9:2046:9 | Load | m2045_6 | -| ir.cpp:2046:9:2046:17 | Address | &:r2046_5 | -| ir.cpp:2046:9:2046:17 | Address | &:r2046_11 | -| ir.cpp:2046:9:2046:17 | Address | &:r2046_15 | -| ir.cpp:2046:9:2046:17 | Load | m2046_4 | -| ir.cpp:2046:9:2046:17 | Phi | from 2:m2046_12 | -| ir.cpp:2046:9:2046:17 | Phi | from 3:m2046_16 | -| ir.cpp:2046:9:2046:17 | StoreValue | r2046_6 | -| ir.cpp:2046:13:2046:13 | Address | &:r2046_9 | -| ir.cpp:2046:13:2046:13 | Load | m2045_8 | -| ir.cpp:2046:13:2046:13 | StoreValue | r2046_10 | -| ir.cpp:2046:17:2046:17 | Address | &:r2046_13 | -| ir.cpp:2046:17:2046:17 | Load | m2045_10 | -| ir.cpp:2046:17:2046:17 | StoreValue | r2046_14 | -| ir.cpp:2047:5:2047:5 | Address | &:r2047_7 | -| ir.cpp:2047:9:2047:9 | Address | &:r2047_1 | -| ir.cpp:2047:9:2047:9 | Condition | r2047_2 | -| ir.cpp:2047:9:2047:9 | Load | m2045_6 | -| ir.cpp:2047:9:2047:17 | Address | &:r2047_5 | -| ir.cpp:2047:9:2047:17 | Address | &:r2047_11 | -| ir.cpp:2047:9:2047:17 | Address | &:r2047_14 | -| ir.cpp:2047:9:2047:17 | Load | m2047_4 | -| ir.cpp:2047:9:2047:17 | Phi | from 5:m2047_12 | -| ir.cpp:2047:9:2047:17 | Phi | from 6:m2047_15 | -| ir.cpp:2047:9:2047:17 | StoreValue | r2047_6 | -| ir.cpp:2047:13:2047:13 | Address | &:r2047_9 | -| ir.cpp:2047:13:2047:13 | Load | m2045_8 | -| ir.cpp:2047:13:2047:13 | StoreValue | r2047_10 | -| ir.cpp:2047:17:2047:17 | StoreValue | r2047_13 | -| ir.cpp:2048:5:2048:5 | Address | &:r2048_7 | -| ir.cpp:2048:9:2048:9 | Address | &:r2048_1 | -| ir.cpp:2048:9:2048:9 | Condition | r2048_2 | -| ir.cpp:2048:9:2048:9 | Load | m2045_6 | -| ir.cpp:2048:9:2048:17 | Address | &:r2048_5 | -| ir.cpp:2048:9:2048:17 | Address | &:r2048_10 | -| ir.cpp:2048:9:2048:17 | Address | &:r2048_13 | -| ir.cpp:2048:9:2048:17 | Load | m2048_4 | -| ir.cpp:2048:9:2048:17 | Phi | from 8:m2048_11 | -| ir.cpp:2048:9:2048:17 | Phi | from 9:m2048_14 | -| ir.cpp:2048:9:2048:17 | StoreValue | r2048_6 | -| ir.cpp:2048:13:2048:13 | StoreValue | r2048_9 | -| ir.cpp:2048:17:2048:17 | StoreValue | r2048_12 | -| ir.cpp:2049:5:2049:19 | ChiPartial | partial:m2049_8 | -| ir.cpp:2049:5:2049:19 | ChiTotal | total:m2045_4 | -| ir.cpp:2049:6:2049:6 | Address | &:r2049_2 | -| ir.cpp:2049:6:2049:6 | Condition | r2049_3 | -| ir.cpp:2049:6:2049:6 | Load | m2045_6 | -| ir.cpp:2049:6:2049:14 | Address | &:r2049_6 | -| ir.cpp:2049:6:2049:14 | Address | &:r2049_7 | -| ir.cpp:2049:6:2049:14 | Address | &:r2049_11 | -| ir.cpp:2049:6:2049:14 | Address | &:r2049_14 | -| ir.cpp:2049:6:2049:14 | Load | m2049_5 | -| ir.cpp:2049:6:2049:14 | Phi | from 11:m2049_12 | -| ir.cpp:2049:6:2049:14 | Phi | from 12:m2049_15 | -| ir.cpp:2049:10:2049:10 | StoreValue | r2049_10 | -| ir.cpp:2049:14:2049:14 | StoreValue | r2049_13 | -| ir.cpp:2049:19:2049:19 | StoreValue | r2049_1 | -| ir.cpp:2055:6:2055:22 | ChiPartial | partial:m2055_3 | -| ir.cpp:2055:6:2055:22 | ChiTotal | total:m2055_2 | -| ir.cpp:2055:6:2055:22 | SideEffect | m2055_3 | -| ir.cpp:2055:29:2055:29 | Address | &:r2055_5 | -| ir.cpp:2055:46:2055:46 | Address | &:r2055_7 | -| ir.cpp:2055:63:2055:63 | Address | &:r2055_9 | -| ir.cpp:2055:80:2055:80 | Address | &:r2055_11 | -| ir.cpp:2056:5:2056:5 | Address | &:r2056_7 | -| ir.cpp:2056:9:2056:9 | Address | &:r2056_1 | -| ir.cpp:2056:9:2056:9 | Condition | r2056_2 | -| ir.cpp:2056:9:2056:9 | Load | m2055_6 | -| ir.cpp:2056:9:2056:17 | Address | &:r2056_5 | -| ir.cpp:2056:9:2056:17 | Address | &:r2056_11 | -| ir.cpp:2056:9:2056:17 | Address | &:r2056_15 | -| ir.cpp:2056:9:2056:17 | Load | m2056_4 | -| ir.cpp:2056:9:2056:17 | Phi | from 2:m2056_12 | -| ir.cpp:2056:9:2056:17 | Phi | from 3:m2056_16 | -| ir.cpp:2056:9:2056:17 | StoreValue | r2056_6 | -| ir.cpp:2056:13:2056:13 | Address | &:r2056_9 | -| ir.cpp:2056:13:2056:13 | Load | m2055_8 | -| ir.cpp:2056:13:2056:13 | StoreValue | r2056_10 | -| ir.cpp:2056:17:2056:17 | Address | &:r2056_13 | -| ir.cpp:2056:17:2056:17 | Load | m2055_10 | -| ir.cpp:2056:17:2056:17 | StoreValue | r2056_14 | -| ir.cpp:2057:5:2057:5 | Address | &:r2057_10 | -| ir.cpp:2057:9:2057:9 | Address | &:r2057_2 | -| ir.cpp:2057:9:2057:9 | Address | &:r2057_6 | -| ir.cpp:2057:9:2057:9 | Address | &:r2057_17 | -| ir.cpp:2057:9:2057:9 | Address | &:r2057_23 | -| ir.cpp:2057:9:2057:9 | Condition | r2057_3 | -| ir.cpp:2057:9:2057:9 | Load | m2055_6 | -| ir.cpp:2057:9:2057:9 | Load | m2057_5 | -| ir.cpp:2057:9:2057:9 | Phi | from 5:m2057_18 | -| ir.cpp:2057:9:2057:9 | Phi | from 6:m2057_24 | -| ir.cpp:2057:9:2057:9 | StoreValue | r2057_7 | -| ir.cpp:2057:9:2057:31 | Address | &:r2057_1 | -| ir.cpp:2057:9:2057:31 | Address | &:r2057_1 | -| ir.cpp:2057:9:2057:31 | Load | m2057_8 | -| ir.cpp:2057:9:2057:31 | StoreValue | r2057_9 | -| ir.cpp:2057:13:2057:13 | Address | &:r2057_12 | -| ir.cpp:2057:13:2057:13 | Address | &:r2057_12 | -| ir.cpp:2057:13:2057:13 | Address | &:r2057_13 | -| ir.cpp:2057:13:2057:13 | Load | m2055_8 | -| ir.cpp:2057:13:2057:13 | Load | m2057_15 | -| ir.cpp:2057:13:2057:13 | StoreValue | r2057_14 | -| ir.cpp:2057:13:2057:13 | StoreValue | r2057_16 | -| ir.cpp:2057:17:2057:31 | Address | &:r2057_19 | -| ir.cpp:2057:17:2057:31 | Address | &:r2057_19 | -| ir.cpp:2057:17:2057:31 | Load | m2057_21 | -| ir.cpp:2057:17:2057:31 | StoreValue | r2057_20 | -| ir.cpp:2057:17:2057:31 | StoreValue | r2057_22 | -| ir.cpp:2058:5:2058:5 | Address | &:r2058_10 | -| ir.cpp:2058:9:2058:9 | Address | &:r2058_2 | -| ir.cpp:2058:9:2058:9 | Address | &:r2058_6 | -| ir.cpp:2058:9:2058:9 | Address | &:r2058_16 | -| ir.cpp:2058:9:2058:9 | Address | &:r2058_22 | -| ir.cpp:2058:9:2058:9 | Condition | r2058_3 | -| ir.cpp:2058:9:2058:9 | Load | m2055_6 | -| ir.cpp:2058:9:2058:9 | Load | m2058_5 | -| ir.cpp:2058:9:2058:9 | Phi | from 8:m2058_17 | -| ir.cpp:2058:9:2058:9 | Phi | from 9:m2058_23 | -| ir.cpp:2058:9:2058:9 | StoreValue | r2058_7 | -| ir.cpp:2058:9:2058:45 | Address | &:r2058_1 | -| ir.cpp:2058:9:2058:45 | Address | &:r2058_1 | -| ir.cpp:2058:9:2058:45 | Load | m2058_8 | -| ir.cpp:2058:9:2058:45 | StoreValue | r2058_9 | -| ir.cpp:2058:13:2058:27 | Address | &:r2058_12 | -| ir.cpp:2058:13:2058:27 | Address | &:r2058_12 | -| ir.cpp:2058:13:2058:27 | Load | m2058_14 | -| ir.cpp:2058:13:2058:27 | StoreValue | r2058_13 | -| ir.cpp:2058:13:2058:27 | StoreValue | r2058_15 | -| ir.cpp:2058:31:2058:45 | Address | &:r2058_18 | -| ir.cpp:2058:31:2058:45 | Address | &:r2058_18 | -| ir.cpp:2058:31:2058:45 | Load | m2058_20 | -| ir.cpp:2058:31:2058:45 | StoreValue | r2058_19 | -| ir.cpp:2058:31:2058:45 | StoreValue | r2058_21 | -| ir.cpp:2059:6:2059:6 | Address | &:r2059_11 | -| ir.cpp:2059:6:2059:6 | Unary | r2059_11 | -| ir.cpp:2059:6:2059:18 | Address | &:r2059_13 | -| ir.cpp:2059:10:2059:10 | Address | &:r2059_5 | -| ir.cpp:2059:10:2059:10 | Condition | r2059_6 | -| ir.cpp:2059:10:2059:10 | Load | m2055_6 | -| ir.cpp:2059:10:2059:18 | Address | &:r2059_9 | -| ir.cpp:2059:10:2059:18 | Address | &:r2059_17 | -| ir.cpp:2059:10:2059:18 | Address | &:r2059_21 | -| ir.cpp:2059:10:2059:18 | Load | m2059_8 | -| ir.cpp:2059:10:2059:18 | Phi | from 11:m2059_18 | -| ir.cpp:2059:10:2059:18 | Phi | from 12:m2059_22 | -| ir.cpp:2059:10:2059:18 | StoreValue | r2059_10 | -| ir.cpp:2059:14:2059:14 | Address | &:r2059_15 | -| ir.cpp:2059:14:2059:14 | Load | m2055_8 | -| ir.cpp:2059:14:2059:14 | StoreValue | r2059_16 | -| ir.cpp:2059:18:2059:18 | Address | &:r2059_19 | -| ir.cpp:2059:18:2059:18 | Load | m2055_10 | -| ir.cpp:2059:18:2059:18 | StoreValue | r2059_20 | -| ir.cpp:2059:23:2059:37 | Address | &:r2059_1 | -| ir.cpp:2059:23:2059:37 | Address | &:r2059_1 | -| ir.cpp:2059:23:2059:37 | Load | m2059_3 | -| ir.cpp:2059:23:2059:37 | StoreValue | r2059_2 | -| ir.cpp:2059:23:2059:37 | StoreValue | r2059_4 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_5 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_7 | -| ir.cpp:2062:8:2062:8 | Address | &:r2062_10 | -| ir.cpp:2062:8:2062:8 | ChiPartial | partial:m2062_3 | -| ir.cpp:2062:8:2062:8 | ChiPartial | partial:m2062_3 | -| ir.cpp:2062:8:2062:8 | ChiPartial | partial:m2062_3 | -| ir.cpp:2062:8:2062:8 | ChiTotal | total:m2062_2 | -| ir.cpp:2062:8:2062:8 | ChiTotal | total:m2062_2 | -| ir.cpp:2062:8:2062:8 | ChiTotal | total:m2062_2 | -| ir.cpp:2062:8:2062:8 | Load | m0_10 | -| ir.cpp:2062:8:2062:8 | Load | m2062_6 | -| ir.cpp:2062:8:2062:8 | Load | m2062_6 | -| ir.cpp:2062:8:2062:8 | Load | m2062_6 | -| ir.cpp:2062:8:2062:8 | SideEffect | m2062_3 | -| ir.cpp:2062:8:2062:8 | SideEffect | m2062_3 | -| ir.cpp:2062:8:2062:8 | SideEffect | m2062_3 | -| ir.cpp:2062:8:2062:8 | SideEffect | m2062_8 | -| ir.cpp:2062:8:2062:8 | SideEffect | m2062_8 | -| ir.cpp:2062:8:2062:8 | SideEffect | m2062_8 | -| ir.cpp:2063:13:2063:29 | Address | &:r2063_5 | -| ir.cpp:2063:13:2063:29 | Address | &:r2063_5 | -| ir.cpp:2063:13:2063:29 | Address | &:r2063_7 | -| ir.cpp:2063:13:2063:29 | Address | &:r2063_7 | -| ir.cpp:2063:13:2063:29 | ChiPartial | partial:m2063_3 | -| ir.cpp:2063:13:2063:29 | ChiTotal | total:m2063_2 | -| ir.cpp:2063:13:2063:29 | Load | m2063_6 | -| ir.cpp:2063:13:2063:29 | SideEffect | m2063_3 | -| ir.cpp:2063:13:2063:29 | SideEffect | m2063_8 | -| ir.cpp:2066:6:2066:25 | ChiPartial | partial:m2066_3 | -| ir.cpp:2066:6:2066:25 | ChiTotal | total:m2066_2 | -| ir.cpp:2066:6:2066:25 | SideEffect | ~m2070_32 | -| ir.cpp:2066:32:2066:32 | Address | &:r2066_5 | -| ir.cpp:2066:52:2066:52 | Address | &:r2066_7 | -| ir.cpp:2066:72:2066:72 | Address | &:r2066_9 | -| ir.cpp:2066:92:2066:92 | Address | &:r2066_11 | -| ir.cpp:2067:5:2067:5 | Address | &:r2067_1 | -| ir.cpp:2067:5:2067:5 | Address | &:r2067_1 | -| ir.cpp:2067:5:2067:5 | Arg(this) | this:r2067_1 | -| ir.cpp:2067:5:2067:5 | ChiPartial | partial:m2067_16 | -| ir.cpp:2067:5:2067:5 | ChiTotal | total:m2066_12 | -| ir.cpp:2067:5:2067:5 | SideEffect | m2066_12 | -| ir.cpp:2067:7:2067:7 | CallTarget | func:r2067_2 | -| ir.cpp:2067:7:2067:7 | ChiPartial | partial:m2067_12 | -| ir.cpp:2067:7:2067:7 | ChiTotal | total:m2066_4 | -| ir.cpp:2067:7:2067:7 | SideEffect | ~m2066_4 | -| ir.cpp:2067:7:2067:7 | Unary | r2067_11 | -| ir.cpp:2067:9:2067:9 | Address | &:r2067_3 | -| ir.cpp:2067:9:2067:9 | Condition | r2067_4 | -| ir.cpp:2067:9:2067:9 | Load | m2066_6 | -| ir.cpp:2067:9:2067:17 | Address | &:r2067_7 | -| ir.cpp:2067:9:2067:17 | Address | &:r2067_10 | -| ir.cpp:2067:9:2067:17 | Address | &:r2067_20 | -| ir.cpp:2067:9:2067:17 | Address | &:r2067_23 | -| ir.cpp:2067:9:2067:17 | Arg(0) | 0:r2067_10 | -| ir.cpp:2067:9:2067:17 | Load | m2067_6 | -| ir.cpp:2067:9:2067:17 | Phi | from 2:m2067_21 | -| ir.cpp:2067:9:2067:17 | Phi | from 3:m2067_24 | -| ir.cpp:2067:9:2067:17 | SideEffect | ~m2067_13 | -| ir.cpp:2067:9:2067:17 | Unary | r2067_8 | -| ir.cpp:2067:9:2067:17 | Unary | r2067_9 | -| ir.cpp:2067:13:2067:13 | StoreValue | r2067_19 | -| ir.cpp:2067:17:2067:17 | StoreValue | r2067_22 | -| ir.cpp:2068:5:2068:5 | Address | &:r2068_1 | -| ir.cpp:2068:5:2068:5 | Address | &:r2068_1 | -| ir.cpp:2068:5:2068:5 | Arg(this) | this:r2068_1 | -| ir.cpp:2068:5:2068:5 | ChiPartial | partial:m2068_19 | -| ir.cpp:2068:5:2068:5 | ChiTotal | total:m2067_17 | -| ir.cpp:2068:5:2068:5 | SideEffect | m2067_17 | -| ir.cpp:2068:7:2068:7 | CallTarget | func:r2068_2 | -| ir.cpp:2068:7:2068:7 | ChiPartial | partial:m2068_15 | -| ir.cpp:2068:7:2068:7 | ChiTotal | total:m2068_7 | -| ir.cpp:2068:7:2068:7 | SideEffect | ~m2068_7 | -| ir.cpp:2068:7:2068:7 | Unary | r2068_14 | -| ir.cpp:2068:9:2068:9 | Address | &:r2068_4 | -| ir.cpp:2068:9:2068:9 | Address | &:r2068_9 | -| ir.cpp:2068:9:2068:9 | Address | &:r2068_35 | -| ir.cpp:2068:9:2068:9 | Address | &:r2068_46 | -| ir.cpp:2068:9:2068:9 | Condition | r2068_5 | -| ir.cpp:2068:9:2068:9 | Load | m2066_6 | -| ir.cpp:2068:9:2068:9 | Load | m2068_8 | -| ir.cpp:2068:9:2068:9 | Phi | from 5:m2068_36 | -| ir.cpp:2068:9:2068:9 | Phi | from 5:~m2068_30 | -| ir.cpp:2068:9:2068:9 | Phi | from 6:m2068_47 | -| ir.cpp:2068:9:2068:9 | Phi | from 6:~m2068_42 | -| ir.cpp:2068:9:2068:9 | StoreValue | r2068_10 | -| ir.cpp:2068:9:2068:34 | Address | &:r2068_3 | -| ir.cpp:2068:9:2068:34 | Address | &:r2068_13 | -| ir.cpp:2068:9:2068:34 | Arg(0) | 0:r2068_13 | -| ir.cpp:2068:9:2068:34 | SideEffect | ~m2068_11 | -| ir.cpp:2068:9:2068:34 | Unary | r2068_3 | -| ir.cpp:2068:9:2068:34 | Unary | r2068_12 | -| ir.cpp:2068:13:2068:13 | Address | &:r2068_22 | -| ir.cpp:2068:13:2068:13 | Address | &:r2068_22 | -| ir.cpp:2068:13:2068:13 | Address | &:r2068_22 | -| ir.cpp:2068:13:2068:13 | Address | &:r2068_27 | -| ir.cpp:2068:13:2068:13 | Arg(0) | 0:r2068_27 | -| ir.cpp:2068:13:2068:13 | Arg(this) | this:r2068_22 | -| ir.cpp:2068:13:2068:13 | CallTarget | func:r2068_24 | -| ir.cpp:2068:13:2068:13 | ChiPartial | partial:m2068_29 | -| ir.cpp:2068:13:2068:13 | ChiPartial | partial:m2068_32 | -| ir.cpp:2068:13:2068:13 | ChiTotal | total:m2067_13 | -| ir.cpp:2068:13:2068:13 | ChiTotal | total:m2068_23 | -| ir.cpp:2068:13:2068:13 | Load | m2068_33 | -| ir.cpp:2068:13:2068:13 | SideEffect | ~m2066_8 | -| ir.cpp:2068:13:2068:13 | SideEffect | ~m2067_13 | -| ir.cpp:2068:13:2068:13 | StoreValue | r2068_34 | -| ir.cpp:2068:13:2068:13 | Unary | r2068_25 | -| ir.cpp:2068:13:2068:13 | Unary | r2068_26 | -| ir.cpp:2068:17:2068:34 | Address | &:r2068_37 | -| ir.cpp:2068:17:2068:34 | Address | &:r2068_37 | -| ir.cpp:2068:17:2068:34 | Address | &:r2068_37 | -| ir.cpp:2068:17:2068:34 | Arg(this) | this:r2068_37 | -| ir.cpp:2068:17:2068:34 | CallTarget | func:r2068_39 | -| ir.cpp:2068:17:2068:34 | ChiPartial | partial:m2068_41 | -| ir.cpp:2068:17:2068:34 | ChiPartial | partial:m2068_43 | -| ir.cpp:2068:17:2068:34 | ChiTotal | total:m2067_13 | -| ir.cpp:2068:17:2068:34 | ChiTotal | total:m2068_38 | -| ir.cpp:2068:17:2068:34 | Load | m2068_44 | -| ir.cpp:2068:17:2068:34 | SideEffect | ~m2067_13 | -| ir.cpp:2068:17:2068:34 | StoreValue | r2068_45 | -| ir.cpp:2069:5:2069:5 | Address | &:r2069_1 | -| ir.cpp:2069:5:2069:5 | Address | &:r2069_1 | -| ir.cpp:2069:5:2069:5 | Arg(this) | this:r2069_1 | -| ir.cpp:2069:5:2069:5 | ChiPartial | partial:m2069_19 | -| ir.cpp:2069:5:2069:5 | ChiTotal | total:m2068_20 | -| ir.cpp:2069:5:2069:5 | SideEffect | m2068_20 | -| ir.cpp:2069:7:2069:7 | CallTarget | func:r2069_2 | -| ir.cpp:2069:7:2069:7 | ChiPartial | partial:m2069_15 | -| ir.cpp:2069:7:2069:7 | ChiTotal | total:m2069_7 | -| ir.cpp:2069:7:2069:7 | SideEffect | ~m2069_7 | -| ir.cpp:2069:7:2069:7 | Unary | r2069_14 | -| ir.cpp:2069:9:2069:9 | Address | &:r2069_4 | -| ir.cpp:2069:9:2069:9 | Address | &:r2069_9 | -| ir.cpp:2069:9:2069:9 | Address | &:r2069_31 | -| ir.cpp:2069:9:2069:9 | Address | &:r2069_42 | -| ir.cpp:2069:9:2069:9 | Condition | r2069_5 | -| ir.cpp:2069:9:2069:9 | Load | m2066_6 | -| ir.cpp:2069:9:2069:9 | Load | m2069_8 | -| ir.cpp:2069:9:2069:9 | Phi | from 8:m2069_32 | -| ir.cpp:2069:9:2069:9 | Phi | from 8:~m2069_27 | -| ir.cpp:2069:9:2069:9 | Phi | from 9:m2069_43 | -| ir.cpp:2069:9:2069:9 | Phi | from 9:~m2069_38 | -| ir.cpp:2069:9:2069:9 | StoreValue | r2069_10 | -| ir.cpp:2069:9:2069:51 | Address | &:r2069_3 | -| ir.cpp:2069:9:2069:51 | Address | &:r2069_13 | -| ir.cpp:2069:9:2069:51 | Arg(0) | 0:r2069_13 | -| ir.cpp:2069:9:2069:51 | SideEffect | ~m2069_11 | -| ir.cpp:2069:9:2069:51 | Unary | r2069_3 | -| ir.cpp:2069:9:2069:51 | Unary | r2069_12 | -| ir.cpp:2069:13:2069:30 | Address | &:r2069_22 | -| ir.cpp:2069:13:2069:30 | Address | &:r2069_22 | -| ir.cpp:2069:13:2069:30 | Address | &:r2069_22 | -| ir.cpp:2069:13:2069:30 | Arg(this) | this:r2069_22 | -| ir.cpp:2069:13:2069:30 | CallTarget | func:r2069_24 | -| ir.cpp:2069:13:2069:30 | ChiPartial | partial:m2069_26 | -| ir.cpp:2069:13:2069:30 | ChiPartial | partial:m2069_28 | -| ir.cpp:2069:13:2069:30 | ChiTotal | total:m2068_16 | -| ir.cpp:2069:13:2069:30 | ChiTotal | total:m2069_23 | -| ir.cpp:2069:13:2069:30 | Load | m2069_29 | -| ir.cpp:2069:13:2069:30 | SideEffect | ~m2068_16 | -| ir.cpp:2069:13:2069:30 | StoreValue | r2069_30 | -| ir.cpp:2069:34:2069:51 | Address | &:r2069_33 | -| ir.cpp:2069:34:2069:51 | Address | &:r2069_33 | -| ir.cpp:2069:34:2069:51 | Address | &:r2069_33 | -| ir.cpp:2069:34:2069:51 | Arg(this) | this:r2069_33 | -| ir.cpp:2069:34:2069:51 | CallTarget | func:r2069_35 | -| ir.cpp:2069:34:2069:51 | ChiPartial | partial:m2069_37 | -| ir.cpp:2069:34:2069:51 | ChiPartial | partial:m2069_39 | -| ir.cpp:2069:34:2069:51 | ChiTotal | total:m2068_16 | -| ir.cpp:2069:34:2069:51 | ChiTotal | total:m2069_34 | -| ir.cpp:2069:34:2069:51 | Load | m2069_40 | -| ir.cpp:2069:34:2069:51 | SideEffect | ~m2068_16 | -| ir.cpp:2069:34:2069:51 | StoreValue | r2069_41 | -| ir.cpp:2070:5:2070:19 | ChiPartial | partial:m2070_35 | -| ir.cpp:2070:5:2070:19 | ChiTotal | total:m2070_17 | -| ir.cpp:2070:5:2070:19 | SideEffect | m2070_17 | -| ir.cpp:2070:6:2070:6 | Address | &:r2070_1 | -| ir.cpp:2070:6:2070:6 | Address | &:r2070_1 | -| ir.cpp:2070:6:2070:6 | Arg(this) | this:r2070_1 | -| ir.cpp:2070:6:2070:6 | ChiPartial | partial:m2070_16 | -| ir.cpp:2070:6:2070:6 | ChiTotal | total:m2069_20 | -| ir.cpp:2070:6:2070:6 | SideEffect | m2069_20 | -| ir.cpp:2070:8:2070:8 | CallTarget | func:r2070_2 | -| ir.cpp:2070:8:2070:8 | ChiPartial | partial:m2070_12 | -| ir.cpp:2070:8:2070:8 | ChiTotal | total:m2069_16 | -| ir.cpp:2070:8:2070:8 | SideEffect | ~m2069_16 | -| ir.cpp:2070:8:2070:8 | Unary | r2070_11 | -| ir.cpp:2070:8:2070:19 | Address | &:r2070_18 | -| ir.cpp:2070:8:2070:19 | Address | &:r2070_18 | -| ir.cpp:2070:8:2070:19 | Arg(this) | this:r2070_18 | -| ir.cpp:2070:10:2070:10 | Address | &:r2070_3 | -| ir.cpp:2070:10:2070:10 | Condition | r2070_4 | -| ir.cpp:2070:10:2070:10 | Load | m2066_6 | -| ir.cpp:2070:10:2070:18 | Address | &:r2070_7 | -| ir.cpp:2070:10:2070:18 | Address | &:r2070_10 | -| ir.cpp:2070:10:2070:18 | Address | &:r2070_39 | -| ir.cpp:2070:10:2070:18 | Address | &:r2070_42 | -| ir.cpp:2070:10:2070:18 | Arg(0) | 0:r2070_10 | -| ir.cpp:2070:10:2070:18 | Load | m2070_6 | -| ir.cpp:2070:10:2070:18 | Phi | from 11:m2070_40 | -| ir.cpp:2070:10:2070:18 | Phi | from 12:m2070_43 | -| ir.cpp:2070:10:2070:18 | SideEffect | ~m2070_13 | -| ir.cpp:2070:10:2070:18 | Unary | r2070_8 | -| ir.cpp:2070:10:2070:18 | Unary | r2070_9 | -| ir.cpp:2070:14:2070:14 | StoreValue | r2070_38 | -| ir.cpp:2070:18:2070:18 | StoreValue | r2070_41 | -| ir.cpp:2070:21:2070:21 | CallTarget | func:r2070_19 | -| ir.cpp:2070:21:2070:21 | ChiPartial | partial:m2070_31 | -| ir.cpp:2070:21:2070:21 | ChiTotal | total:m2070_25 | -| ir.cpp:2070:21:2070:21 | SideEffect | ~m2070_25 | -| ir.cpp:2070:21:2070:21 | Unary | r2070_30 | -| ir.cpp:2070:23:2070:40 | Address | &:r2070_20 | -| ir.cpp:2070:23:2070:40 | Address | &:r2070_20 | -| ir.cpp:2070:23:2070:40 | Address | &:r2070_29 | -| ir.cpp:2070:23:2070:40 | Arg(0) | 0:r2070_29 | -| ir.cpp:2070:23:2070:40 | Arg(this) | this:r2070_20 | -| ir.cpp:2070:23:2070:40 | CallTarget | func:r2070_22 | -| ir.cpp:2070:23:2070:40 | ChiPartial | partial:m2070_24 | -| ir.cpp:2070:23:2070:40 | ChiPartial | partial:m2070_26 | -| ir.cpp:2070:23:2070:40 | ChiTotal | total:m2070_13 | -| ir.cpp:2070:23:2070:40 | ChiTotal | total:m2070_21 | -| ir.cpp:2070:23:2070:40 | SideEffect | ~m2070_13 | -| ir.cpp:2070:23:2070:40 | SideEffect | ~m2070_27 | -| ir.cpp:2070:23:2070:40 | Unary | r2070_20 | -| ir.cpp:2070:23:2070:40 | Unary | r2070_28 | -| ir.cpp:2075:14:2075:22 | Address | &:r2075_7 | -| ir.cpp:2075:14:2075:22 | ChiPartial | partial:m2075_3 | -| ir.cpp:2075:14:2075:22 | ChiTotal | total:m2075_2 | -| ir.cpp:2075:14:2075:22 | Load | m2080_2 | -| ir.cpp:2075:14:2075:22 | SideEffect | ~m2077_6 | -| ir.cpp:2075:37:2075:37 | Address | &:r2075_5 | -| ir.cpp:2076:16:2076:16 | Address | &:r2076_1 | -| ir.cpp:2077:3:2077:3 | Address | &:r2077_10 | -| ir.cpp:2077:7:2077:7 | Address | &:r2077_1 | -| ir.cpp:2077:7:2077:7 | Left | r2077_2 | -| ir.cpp:2077:7:2077:7 | Load | m2075_6 | -| ir.cpp:2077:7:2077:13 | Condition | r2077_4 | -| ir.cpp:2077:7:2079:28 | Address | &:r2077_8 | -| ir.cpp:2077:7:2079:28 | Address | &:r2077_12 | -| ir.cpp:2077:7:2079:28 | Address | &:r2077_14 | -| ir.cpp:2077:7:2079:28 | Load | m2077_7 | -| ir.cpp:2077:7:2079:28 | Phi | from 2:m2077_13 | -| ir.cpp:2077:7:2079:28 | Phi | from 2:~m2078_6 | -| ir.cpp:2077:7:2079:28 | Phi | from 3:m2077_15 | -| ir.cpp:2077:7:2079:28 | Phi | from 3:~m2079_6 | -| ir.cpp:2077:7:2079:28 | StoreValue | r2077_9 | -| ir.cpp:2077:11:2077:13 | Right | r2077_3 | -| ir.cpp:2078:6:2078:20 | CallTarget | func:r2078_1 | -| ir.cpp:2078:6:2078:20 | ChiPartial | partial:m2078_5 | -| ir.cpp:2078:6:2078:20 | ChiTotal | total:m2075_4 | -| ir.cpp:2078:6:2078:20 | SideEffect | ~m2075_4 | -| ir.cpp:2078:6:2078:26 | StoreValue | r2078_9 | -| ir.cpp:2078:22:2078:22 | Address | &:r2078_2 | -| ir.cpp:2078:22:2078:22 | Arg(0) | 0:r2078_3 | -| ir.cpp:2078:22:2078:22 | Load | m2075_6 | -| ir.cpp:2078:26:2078:26 | Address | &:r2078_7 | -| ir.cpp:2078:26:2078:26 | Load | m2075_6 | -| ir.cpp:2078:26:2078:26 | Unary | r2078_8 | -| ir.cpp:2079:5:2079:28 | StoreValue | r2079_9 | -| ir.cpp:2079:6:2079:20 | CallTarget | func:r2079_1 | -| ir.cpp:2079:6:2079:20 | ChiPartial | partial:m2079_5 | -| ir.cpp:2079:6:2079:20 | ChiTotal | total:m2075_4 | -| ir.cpp:2079:6:2079:20 | SideEffect | ~m2075_4 | -| ir.cpp:2079:6:2079:27 | Unary | r2079_8 | -| ir.cpp:2079:22:2079:22 | Address | &:r2079_2 | -| ir.cpp:2079:22:2079:22 | Arg(0) | 0:r2079_3 | -| ir.cpp:2079:22:2079:22 | Load | m2075_6 | -| ir.cpp:2079:26:2079:27 | Unary | r2079_7 | -| ir.cpp:2080:1:2080:1 | Address | &:r2080_1 | -| ir.cpp:2082:6:2082:17 | ChiPartial | partial:m2082_3 | -| ir.cpp:2082:6:2082:17 | ChiTotal | total:m2082_2 | -| ir.cpp:2082:6:2082:17 | SideEffect | ~m2085_6 | -| ir.cpp:2083:8:2083:8 | Address | &:r2083_1 | -| ir.cpp:2083:12:2083:18 | Address | &:r2083_4 | -| ir.cpp:2083:12:2083:18 | Arg(0) | 0:r2083_3 | -| ir.cpp:2083:12:2083:18 | CallTarget | func:r2083_2 | -| ir.cpp:2083:12:2083:18 | ChiPartial | partial:m2083_5 | -| ir.cpp:2083:12:2083:18 | ChiTotal | total:m2082_4 | -| ir.cpp:2083:12:2083:18 | SideEffect | ~m2082_4 | -| ir.cpp:2083:12:2083:18 | StoreValue | r2083_8 | -| ir.cpp:2083:12:2083:18 | Unary | r2083_4 | -| ir.cpp:2084:3:2084:4 | Address | &:r2084_4 | -| ir.cpp:2084:3:2084:8 | ChiPartial | partial:m2084_5 | -| ir.cpp:2084:3:2084:8 | ChiTotal | total:m2083_7 | -| ir.cpp:2084:4:2084:4 | Address | &:r2084_2 | -| ir.cpp:2084:4:2084:4 | Load | m2083_9 | -| ir.cpp:2084:4:2084:4 | Unary | r2084_3 | -| ir.cpp:2084:8:2084:8 | StoreValue | r2084_1 | -| ir.cpp:2085:3:2085:10 | CallTarget | func:r2085_1 | -| ir.cpp:2085:3:2085:10 | ChiPartial | partial:m2085_5 | -| ir.cpp:2085:3:2085:10 | ChiTotal | total:m2083_6 | -| ir.cpp:2085:3:2085:10 | SideEffect | ~m2083_6 | -| ir.cpp:2085:10:2085:10 | Address | &:r2085_2 | -| ir.cpp:2085:10:2085:10 | Arg(0) | 0:r2085_3 | -| ir.cpp:2085:10:2085:10 | Load | m2083_9 | -| ir.cpp:2088:7:2088:7 | Address | &:r2088_5 | -| ir.cpp:2088:7:2088:7 | Address | &:r2088_5 | -| ir.cpp:2088:7:2088:7 | Address | &:r2088_7 | -| ir.cpp:2088:7:2088:7 | Address | &:r2088_7 | -| ir.cpp:2088:7:2088:7 | ChiPartial | partial:m2088_3 | -| ir.cpp:2088:7:2088:7 | ChiTotal | total:m2088_2 | -| ir.cpp:2088:7:2088:7 | Load | m2088_6 | -| ir.cpp:2088:7:2088:7 | SideEffect | m2088_3 | -| ir.cpp:2088:7:2088:7 | SideEffect | m2088_8 | -| ir.cpp:2090:10:2090:24 | ChiPartial | partial:m2090_3 | -| ir.cpp:2090:10:2090:24 | ChiTotal | total:m2090_2 | -| ir.cpp:2090:10:2090:24 | SideEffect | m2090_3 | -| ir.cpp:2090:32:2090:32 | Address | &:r2090_5 | -| ir.cpp:2090:32:2090:32 | Address | &:r2090_5 | -| ir.cpp:2090:32:2090:32 | Address | &:r2090_7 | -| ir.cpp:2090:32:2090:32 | Address | &:r2090_7 | -| ir.cpp:2090:32:2090:32 | Load | m2090_6 | -| ir.cpp:2090:32:2090:32 | SideEffect | m2090_8 | -| ir.cpp:2092:13:2092:18 | Address | &:r2092_5 | -| ir.cpp:2092:13:2092:18 | Address | &:r2092_5 | -| ir.cpp:2092:13:2092:18 | Address | &:r2092_7 | -| ir.cpp:2092:13:2092:18 | Address | &:r2092_7 | -| ir.cpp:2092:13:2092:18 | ChiPartial | partial:m2092_3 | -| ir.cpp:2092:13:2092:18 | ChiTotal | total:m2092_2 | -| ir.cpp:2092:13:2092:18 | Load | m2092_6 | -| ir.cpp:2092:13:2092:18 | SideEffect | m2092_3 | -| ir.cpp:2092:13:2092:18 | SideEffect | m2092_8 | -| ir.cpp:2095:7:2095:7 | Address | &:r2095_5 | -| ir.cpp:2095:7:2095:7 | Address | &:r2095_5 | -| ir.cpp:2095:7:2095:7 | Address | &:r2095_7 | -| ir.cpp:2095:7:2095:7 | Address | &:r2095_7 | -| ir.cpp:2095:7:2095:7 | Address | &:r2095_9 | -| ir.cpp:2095:7:2095:7 | Arg(this) | this:r2095_9 | -| ir.cpp:2095:7:2095:7 | CallTarget | func:r2095_10 | -| ir.cpp:2095:7:2095:7 | ChiPartial | partial:m2095_3 | -| ir.cpp:2095:7:2095:7 | ChiPartial | partial:m2095_12 | -| ir.cpp:2095:7:2095:7 | ChiPartial | partial:m2095_14 | -| ir.cpp:2095:7:2095:7 | ChiTotal | total:m2095_2 | -| ir.cpp:2095:7:2095:7 | ChiTotal | total:m2095_4 | -| ir.cpp:2095:7:2095:7 | ChiTotal | total:m2095_8 | -| ir.cpp:2095:7:2095:7 | Load | m2095_6 | -| ir.cpp:2095:7:2095:7 | SideEffect | m2095_15 | -| ir.cpp:2095:7:2095:7 | SideEffect | ~m2095_4 | -| ir.cpp:2095:7:2095:7 | SideEffect | ~m2095_13 | -| ir.cpp:2095:7:2095:7 | Unary | m2095_6 | -| ir.cpp:2098:5:2098:13 | Address | &:r2098_5 | -| ir.cpp:2098:5:2098:13 | Address | &:r2098_5 | -| ir.cpp:2098:5:2098:13 | Address | &:r2098_7 | -| ir.cpp:2098:5:2098:13 | Address | &:r2098_7 | -| ir.cpp:2098:5:2098:13 | ChiPartial | partial:m2098_3 | -| ir.cpp:2098:5:2098:13 | ChiTotal | total:m2098_2 | -| ir.cpp:2098:5:2098:13 | Load | m2098_6 | -| ir.cpp:2098:5:2098:13 | SideEffect | m2098_8 | -| ir.cpp:2098:5:2098:13 | SideEffect | ~m2098_14 | -| ir.cpp:2098:5:2098:13 | Unary | m2098_6 | -| ir.cpp:2098:18:2098:18 | Arg(this) | this:r2098_10 | -| ir.cpp:2098:18:2098:18 | CallTarget | func:r2098_11 | -| ir.cpp:2098:18:2098:18 | ChiPartial | partial:m2098_13 | -| ir.cpp:2098:18:2098:18 | ChiTotal | total:m2098_4 | -| ir.cpp:2098:18:2098:18 | SideEffect | ~m2098_4 | -| ir.cpp:2100:10:2100:24 | ChiPartial | partial:m2100_3 | -| ir.cpp:2100:10:2100:24 | ChiTotal | total:m2100_2 | -| ir.cpp:2100:10:2100:24 | SideEffect | m2100_3 | -| ir.cpp:2100:32:2100:32 | Address | &:r2100_5 | -| ir.cpp:2100:32:2100:32 | Address | &:r2100_5 | -| ir.cpp:2100:32:2100:32 | Address | &:r2100_7 | -| ir.cpp:2100:32:2100:32 | Address | &:r2100_7 | -| ir.cpp:2100:32:2100:32 | Load | m2100_6 | -| ir.cpp:2100:32:2100:32 | SideEffect | m2100_8 | -| ir.cpp:2105:5:2105:18 | Address | &:r2105_5 | -| ir.cpp:2105:5:2105:18 | ChiPartial | partial:m2105_3 | -| ir.cpp:2105:5:2105:18 | ChiTotal | total:m2105_2 | -| ir.cpp:2105:5:2105:18 | Load | m2115_2 | -| ir.cpp:2105:5:2105:18 | SideEffect | ~m2114_14 | -| ir.cpp:2107:12:2107:13 | Address | &:r2107_1 | -| ir.cpp:2107:17:2107:27 | Address | &:r2107_4 | -| ir.cpp:2107:17:2107:27 | Address | &:r2107_8 | -| ir.cpp:2107:17:2107:27 | Arg(0) | 0:r2107_3 | -| ir.cpp:2107:17:2107:27 | Arg(this) | this:r2107_8 | -| ir.cpp:2107:17:2107:27 | CallTarget | func:r2107_2 | -| ir.cpp:2107:17:2107:27 | CallTarget | func:r2107_9 | -| ir.cpp:2107:17:2107:27 | ChiPartial | partial:m2107_5 | -| ir.cpp:2107:17:2107:27 | ChiPartial | partial:m2107_11 | -| ir.cpp:2107:17:2107:27 | ChiPartial | partial:m2107_13 | -| ir.cpp:2107:17:2107:27 | ChiTotal | total:m2105_4 | -| ir.cpp:2107:17:2107:27 | ChiTotal | total:m2107_6 | -| ir.cpp:2107:17:2107:27 | ChiTotal | total:m2107_7 | -| ir.cpp:2107:17:2107:27 | SideEffect | ~m2105_4 | -| ir.cpp:2107:17:2107:27 | SideEffect | ~m2107_6 | -| ir.cpp:2107:17:2107:27 | StoreValue | r2107_8 | -| ir.cpp:2107:17:2107:27 | Unary | r2107_4 | -| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_3 | -| ir.cpp:2108:5:2108:13 | CallTarget | func:r2108_10 | -| ir.cpp:2108:5:2108:13 | ChiPartial | partial:m2108_5 | -| ir.cpp:2108:5:2108:13 | ChiPartial | partial:m2108_13 | -| ir.cpp:2108:5:2108:13 | ChiTotal | total:m2107_12 | -| ir.cpp:2108:5:2108:13 | ChiTotal | total:m2108_6 | -| ir.cpp:2108:5:2108:13 | SideEffect | ~m2107_12 | -| ir.cpp:2108:5:2108:13 | SideEffect | ~m2108_6 | -| ir.cpp:2108:12:2108:13 | Address | &:r2108_1 | -| ir.cpp:2108:12:2108:13 | Address | &:r2108_2 | -| ir.cpp:2108:12:2108:13 | Address | &:r2108_2 | -| ir.cpp:2108:12:2108:13 | Arg(0) | 0:r2108_11 | -| ir.cpp:2108:12:2108:13 | ChiPartial | partial:m2108_8 | -| ir.cpp:2108:12:2108:13 | ChiTotal | total:m2107_14 | -| ir.cpp:2108:12:2108:13 | Load | m2107_15 | -| ir.cpp:2108:12:2108:13 | SideEffect | ~m2107_14 | -| ir.cpp:2108:12:2108:13 | Unary | r2108_1 | -| ir.cpp:2110:12:2110:13 | Address | &:r2110_1 | -| ir.cpp:2110:17:2110:30 | Address | &:r2110_4 | -| ir.cpp:2110:17:2110:30 | Address | &:r2110_8 | -| ir.cpp:2110:17:2110:30 | Arg(0) | 0:r2110_3 | -| ir.cpp:2110:17:2110:30 | Arg(this) | this:r2110_8 | -| ir.cpp:2110:17:2110:30 | CallTarget | func:r2110_2 | -| ir.cpp:2110:17:2110:30 | CallTarget | func:r2110_9 | -| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_5 | -| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_11 | -| ir.cpp:2110:17:2110:30 | ChiPartial | partial:m2110_13 | -| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2108_14 | -| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_6 | -| ir.cpp:2110:17:2110:30 | ChiTotal | total:m2110_7 | -| ir.cpp:2110:17:2110:30 | SideEffect | ~m2108_14 | -| ir.cpp:2110:17:2110:30 | SideEffect | ~m2110_6 | -| ir.cpp:2110:17:2110:30 | StoreValue | r2110_15 | -| ir.cpp:2110:17:2110:30 | Unary | r2110_4 | -| ir.cpp:2110:17:2110:30 | Unary | r2110_8 | -| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_3 | -| ir.cpp:2111:5:2111:13 | CallTarget | func:r2111_10 | -| ir.cpp:2111:5:2111:13 | ChiPartial | partial:m2111_5 | -| ir.cpp:2111:5:2111:13 | ChiPartial | partial:m2111_13 | -| ir.cpp:2111:5:2111:13 | ChiTotal | total:m2110_12 | -| ir.cpp:2111:5:2111:13 | ChiTotal | total:m2111_6 | -| ir.cpp:2111:5:2111:13 | SideEffect | ~m2110_12 | -| ir.cpp:2111:5:2111:13 | SideEffect | ~m2111_6 | -| ir.cpp:2111:12:2111:13 | Address | &:r2111_1 | -| ir.cpp:2111:12:2111:13 | Address | &:r2111_2 | -| ir.cpp:2111:12:2111:13 | Address | &:r2111_2 | -| ir.cpp:2111:12:2111:13 | Arg(0) | 0:r2111_11 | -| ir.cpp:2111:12:2111:13 | ChiPartial | partial:m2111_8 | -| ir.cpp:2111:12:2111:13 | ChiTotal | total:m2110_14 | -| ir.cpp:2111:12:2111:13 | Load | m2110_16 | -| ir.cpp:2111:12:2111:13 | SideEffect | ~m2110_14 | -| ir.cpp:2111:12:2111:13 | Unary | r2111_1 | -| ir.cpp:2113:15:2113:15 | Address | &:r2113_1 | -| ir.cpp:2113:19:2113:32 | Address | &:r2113_4 | -| ir.cpp:2113:19:2113:32 | Address | &:r2113_8 | -| ir.cpp:2113:19:2113:32 | Arg(0) | 0:r2113_3 | -| ir.cpp:2113:19:2113:32 | Arg(this) | this:r2113_8 | -| ir.cpp:2113:19:2113:32 | CallTarget | func:r2113_2 | -| ir.cpp:2113:19:2113:32 | CallTarget | func:r2113_9 | -| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_5 | -| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_11 | -| ir.cpp:2113:19:2113:32 | ChiPartial | partial:m2113_13 | -| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2111_14 | -| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_6 | -| ir.cpp:2113:19:2113:32 | ChiTotal | total:m2113_7 | -| ir.cpp:2113:19:2113:32 | SideEffect | ~m2111_14 | -| ir.cpp:2113:19:2113:32 | SideEffect | ~m2113_6 | -| ir.cpp:2113:19:2113:32 | StoreValue | r2113_8 | -| ir.cpp:2113:19:2113:32 | Unary | r2113_4 | -| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_3 | -| ir.cpp:2114:5:2114:12 | CallTarget | func:r2114_10 | -| ir.cpp:2114:5:2114:12 | ChiPartial | partial:m2114_5 | -| ir.cpp:2114:5:2114:12 | ChiPartial | partial:m2114_13 | -| ir.cpp:2114:5:2114:12 | ChiTotal | total:m2113_12 | -| ir.cpp:2114:5:2114:12 | ChiTotal | total:m2114_6 | -| ir.cpp:2114:5:2114:12 | SideEffect | ~m2113_12 | -| ir.cpp:2114:5:2114:12 | SideEffect | ~m2114_6 | -| ir.cpp:2114:12:2114:12 | Address | &:r2114_1 | -| ir.cpp:2114:12:2114:12 | Address | &:r2114_2 | -| ir.cpp:2114:12:2114:12 | Address | &:r2114_2 | -| ir.cpp:2114:12:2114:12 | Arg(0) | 0:r2114_11 | -| ir.cpp:2114:12:2114:12 | ChiPartial | partial:m2114_8 | -| ir.cpp:2114:12:2114:12 | ChiTotal | total:m2113_14 | -| ir.cpp:2114:12:2114:12 | Load | m2113_15 | -| ir.cpp:2114:12:2114:12 | SideEffect | ~m2113_14 | -| ir.cpp:2114:12:2114:12 | Unary | r2114_1 | -| ir.cpp:2115:1:2115:1 | Address | &:r2115_1 | -| ir.cpp:2119:6:2119:26 | ChiPartial | partial:m2119_3 | -| ir.cpp:2119:6:2119:26 | ChiTotal | total:m2119_2 | -| ir.cpp:2119:6:2119:26 | SideEffect | ~m2121_5 | -| ir.cpp:2120:13:2120:13 | Address | &:r2120_1 | -| ir.cpp:2120:16:2120:19 | StoreValue | r2120_2 | -| ir.cpp:2121:3:2121:27 | CallTarget | func:r2121_1 | -| ir.cpp:2121:3:2121:27 | ChiPartial | partial:m2121_4 | -| ir.cpp:2121:3:2121:27 | ChiTotal | total:m2119_4 | -| ir.cpp:2121:3:2121:27 | SideEffect | ~m2119_4 | -| ir.cpp:2121:29:2121:29 | Arg(0) | 0:r2121_2 | -| ir.cpp:2126:5:2126:11 | Address | &:r2126_6 | -| ir.cpp:2126:5:2126:11 | ChiPartial | partial:m2126_3 | -| ir.cpp:2126:5:2126:11 | ChiTotal | total:m2126_2 | -| ir.cpp:2126:5:2126:11 | Load | m2131_4 | -| ir.cpp:2126:5:2126:11 | SideEffect | ~m2130_4 | -| ir.cpp:2127:9:2127:9 | Address | &:r2127_1 | -| ir.cpp:2127:13:2127:15 | CallTarget | func:r2127_2 | -| ir.cpp:2127:13:2127:15 | ChiPartial | partial:m2127_6 | -| ir.cpp:2127:13:2127:15 | ChiTotal | total:m2126_4 | -| ir.cpp:2127:13:2127:15 | SideEffect | ~m2126_4 | -| ir.cpp:2127:13:2127:15 | StoreValue | r2127_5 | -| ir.cpp:2127:17:2127:17 | Arg(0) | 0:r2127_3 | -| ir.cpp:2127:19:2127:19 | Arg(1) | 1:r2127_4 | -| ir.cpp:2128:9:2128:9 | Address | &:r2128_1 | -| ir.cpp:2128:9:2128:9 | Left | r2128_2 | -| ir.cpp:2128:9:2128:9 | Load | m2127_8 | -| ir.cpp:2128:9:2128:14 | Condition | r2128_4 | -| ir.cpp:2128:14:2128:14 | Right | r2128_3 | -| ir.cpp:2129:9:2129:12 | CallTarget | func:r2129_1 | -| ir.cpp:2129:9:2129:12 | ChiPartial | partial:m2129_4 | -| ir.cpp:2129:9:2129:12 | ChiTotal | total:m2127_7 | -| ir.cpp:2129:9:2129:12 | SideEffect | ~m2127_7 | -| ir.cpp:2129:14:2129:14 | Arg(0) | 0:r2129_2 | -| ir.cpp:2130:5:2130:12 | CallTarget | func:r2130_1 | -| ir.cpp:2130:5:2130:12 | ChiPartial | partial:m2130_3 | -| ir.cpp:2130:5:2130:12 | ChiTotal | total:m2127_7 | -| ir.cpp:2130:5:2130:12 | SideEffect | ~m2127_7 | -| ir.cpp:2131:5:2131:13 | Address | &:r2131_1 | -| ir.cpp:2131:12:2131:12 | Address | &:r2131_2 | -| ir.cpp:2131:12:2131:12 | Load | m2127_8 | -| ir.cpp:2131:12:2131:12 | StoreValue | r2131_3 | -| ir.cpp:2134:6:2134:17 | ChiPartial | partial:m2134_3 | -| ir.cpp:2134:6:2134:17 | ChiTotal | total:m2134_2 | -| ir.cpp:2135:5:2135:12 | CallTarget | func:r2135_1 | -| ir.cpp:2135:5:2135:12 | ChiPartial | partial:m2135_3 | -| ir.cpp:2135:5:2135:12 | ChiTotal | total:m2134_4 | -| ir.cpp:2135:5:2135:12 | SideEffect | ~m2134_4 | -| ir.cpp:2136:5:2136:8 | CallTarget | func:r2136_1 | -| ir.cpp:2136:5:2136:8 | ChiPartial | partial:m2136_4 | -| ir.cpp:2136:5:2136:8 | ChiTotal | total:m2135_4 | -| ir.cpp:2136:5:2136:8 | SideEffect | ~m2135_4 | -| ir.cpp:2136:10:2136:10 | Arg(0) | 0:r2136_2 | -| ir.cpp:2139:5:2139:16 | Address | &:r2139_6 | -| ir.cpp:2139:5:2139:16 | ChiPartial | partial:m2139_3 | -| ir.cpp:2139:5:2139:16 | ChiTotal | total:m2139_2 | -| ir.cpp:2139:5:2139:16 | Load | m2144_4 | -| ir.cpp:2139:5:2139:16 | SideEffect | ~m2143_4 | -| ir.cpp:2140:9:2140:9 | Address | &:r2140_1 | -| ir.cpp:2140:13:2140:15 | CallTarget | func:r2140_2 | -| ir.cpp:2140:13:2140:15 | ChiPartial | partial:m2140_6 | -| ir.cpp:2140:13:2140:15 | ChiTotal | total:m2139_4 | -| ir.cpp:2140:13:2140:15 | SideEffect | ~m2139_4 | -| ir.cpp:2140:13:2140:15 | StoreValue | r2140_5 | -| ir.cpp:2140:17:2140:17 | Arg(0) | 0:r2140_3 | -| ir.cpp:2140:19:2140:19 | Arg(1) | 1:r2140_4 | +| ir.cpp:1971:9:1971:9 | Left | r1971_2 | +| ir.cpp:1971:9:1971:9 | Load | m1970_6 | +| ir.cpp:1971:9:1971:14 | Condition | r1971_4 | +| ir.cpp:1971:13:1971:14 | Right | r1971_3 | +| ir.cpp:1972:9:1972:20 | CallTarget | func:r1972_1 | +| ir.cpp:1972:9:1972:20 | ChiPartial | partial:m1972_3 | +| ir.cpp:1972:9:1972:20 | ChiTotal | total:m1970_4 | +| ir.cpp:1972:9:1972:20 | SideEffect | ~m1970_4 | +| ir.cpp:1974:5:1974:13 | Address | &:r1974_1 | +| ir.cpp:1974:12:1974:12 | Address | &:r1974_2 | +| ir.cpp:1974:12:1974:12 | Load | m1970_6 | +| ir.cpp:1974:12:1974:12 | StoreValue | r1974_3 | +| ir.cpp:1977:5:1977:19 | Address | &:r1977_7 | +| ir.cpp:1977:5:1977:19 | ChiPartial | partial:m1977_3 | +| ir.cpp:1977:5:1977:19 | ChiTotal | total:m1977_2 | +| ir.cpp:1977:5:1977:19 | Load | m1978_4 | +| ir.cpp:1977:5:1977:19 | SideEffect | m1977_3 | +| ir.cpp:1977:25:1977:25 | Address | &:r1977_5 | +| ir.cpp:1978:5:1978:13 | Address | &:r1978_1 | +| ir.cpp:1978:12:1978:12 | Address | &:r1978_2 | +| ir.cpp:1978:12:1978:12 | Load | m1977_6 | +| ir.cpp:1978:12:1978:12 | StoreValue | r1978_3 | +| ir.cpp:1981:6:1981:43 | ChiPartial | partial:m1981_3 | +| ir.cpp:1981:6:1981:43 | ChiTotal | total:m1981_2 | +| ir.cpp:1981:6:1981:43 | SideEffect | ~m1989_6 | +| ir.cpp:1982:7:1982:7 | Address | &:r1982_1 | +| ir.cpp:1982:7:1982:7 | Address | &:r1982_1 | +| ir.cpp:1982:7:1982:7 | Arg(this) | this:r1982_1 | +| ir.cpp:1982:7:1982:7 | CallTarget | func:r1982_3 | +| ir.cpp:1982:7:1982:7 | ChiPartial | partial:m1982_5 | +| ir.cpp:1982:7:1982:7 | ChiPartial | partial:m1982_7 | +| ir.cpp:1982:7:1982:7 | ChiTotal | total:m1981_4 | +| ir.cpp:1982:7:1982:7 | ChiTotal | total:m1982_2 | +| ir.cpp:1982:7:1982:7 | SideEffect | ~m1981_4 | +| ir.cpp:1983:9:1983:9 | Address | &:r1983_1 | +| ir.cpp:1984:5:1984:5 | Address | &:r1984_7 | +| ir.cpp:1984:11:1984:30 | CallTarget | func:r1984_2 | +| ir.cpp:1984:11:1984:30 | ChiPartial | partial:m1984_5 | +| ir.cpp:1984:11:1984:30 | ChiTotal | total:m1982_6 | +| ir.cpp:1984:11:1984:30 | SideEffect | ~m1982_6 | +| ir.cpp:1984:11:1984:30 | StoreValue | r1984_4 | +| ir.cpp:1984:32:1984:33 | Arg(0) | 0:r1984_3 | +| ir.cpp:1985:9:1985:9 | Address | &:r1985_1 | +| ir.cpp:1986:5:1986:5 | Address | &:r1986_6 | +| ir.cpp:1986:9:1986:31 | CallTarget | func:r1986_1 | +| ir.cpp:1986:9:1986:31 | ChiPartial | partial:m1986_4 | +| ir.cpp:1986:9:1986:31 | ChiTotal | total:m1984_6 | +| ir.cpp:1986:9:1986:31 | SideEffect | ~m1984_6 | +| ir.cpp:1986:9:1986:31 | StoreValue | r1986_3 | +| ir.cpp:1986:33:1986:34 | Arg(0) | 0:r1986_2 | +| ir.cpp:1987:9:1987:9 | Address | &:r1987_1 | +| ir.cpp:1988:5:1988:5 | Address | &:r1988_6 | +| ir.cpp:1988:9:1988:23 | CallTarget | func:r1988_1 | +| ir.cpp:1988:9:1988:23 | ChiPartial | partial:m1988_4 | +| ir.cpp:1988:9:1988:23 | ChiTotal | total:m1986_5 | +| ir.cpp:1988:9:1988:23 | SideEffect | ~m1986_5 | +| ir.cpp:1988:9:1988:23 | StoreValue | r1988_3 | +| ir.cpp:1988:25:1988:26 | Arg(0) | 0:r1988_2 | +| ir.cpp:1989:1:1989:1 | Address | &:r1989_2 | +| ir.cpp:1989:1:1989:1 | Address | &:r1989_2 | +| ir.cpp:1989:1:1989:1 | Arg(this) | this:r1989_2 | +| ir.cpp:1989:1:1989:1 | CallTarget | func:r1989_3 | +| ir.cpp:1989:1:1989:1 | ChiPartial | partial:m1989_5 | +| ir.cpp:1989:1:1989:1 | ChiPartial | partial:m1989_8 | +| ir.cpp:1989:1:1989:1 | ChiTotal | total:m1982_8 | +| ir.cpp:1989:1:1989:1 | ChiTotal | total:m1988_5 | +| ir.cpp:1989:1:1989:1 | SideEffect | m1982_8 | +| ir.cpp:1989:1:1989:1 | SideEffect | ~m1988_5 | +| ir.cpp:1991:6:1991:23 | ChiPartial | partial:m1991_3 | +| ir.cpp:1991:6:1991:23 | ChiTotal | total:m1991_2 | +| ir.cpp:1991:6:1991:23 | SideEffect | m1991_3 | +| ir.cpp:1992:7:1992:7 | Address | &:r1992_1 | +| ir.cpp:1992:10:1992:10 | Address | &:r1992_3 | +| ir.cpp:1993:3:1993:3 | Address | &:r1993_5 | +| ir.cpp:1993:7:1993:7 | Address | &:r1993_2 | +| ir.cpp:1993:7:1993:7 | Address | &:r1993_2 | +| ir.cpp:1993:7:1993:12 | Load | m1993_3 | +| ir.cpp:1993:7:1993:12 | StoreValue | r1993_4 | +| ir.cpp:1993:11:1993:12 | StoreValue | r1993_1 | +| ir.cpp:1996:6:1996:38 | ChiPartial | partial:m1996_3 | +| ir.cpp:1996:6:1996:38 | ChiTotal | total:m1996_2 | +| ir.cpp:1996:6:1996:38 | SideEffect | m1996_3 | +| ir.cpp:1997:7:1997:7 | Address | &:r1997_1 | +| ir.cpp:1997:10:1997:10 | Address | &:r1997_3 | +| ir.cpp:1997:13:1997:14 | StoreValue | r1997_4 | +| ir.cpp:1998:3:1998:3 | Address | &:r1998_7 | +| ir.cpp:1998:8:1998:8 | Address | &:r1998_2 | +| ir.cpp:1998:8:1998:8 | Address | &:r1998_2 | +| ir.cpp:1998:8:1998:8 | Address | &:r1998_2 | +| ir.cpp:1998:8:1998:8 | Left | r1998_3 | +| ir.cpp:1998:8:1998:8 | Load | m1997_5 | +| ir.cpp:1998:8:1998:14 | Load | m1998_5 | +| ir.cpp:1998:8:1998:14 | StoreValue | r1998_4 | +| ir.cpp:1998:8:1998:14 | StoreValue | r1998_6 | +| ir.cpp:1998:13:1998:14 | Right | r1998_1 | +| ir.cpp:2005:15:2005:43 | Address | &:r2005_5 | +| ir.cpp:2005:15:2005:43 | ChiPartial | partial:m2005_3 | +| ir.cpp:2005:15:2005:43 | ChiTotal | total:m2005_2 | +| ir.cpp:2005:15:2005:43 | Load | m2006_4 | +| ir.cpp:2005:15:2005:43 | SideEffect | m2005_3 | +| ir.cpp:2006:9:2006:17 | Address | &:r2006_1 | +| ir.cpp:2006:16:2006:16 | StoreValue | r2006_3 | +| ir.cpp:2006:16:2006:16 | Unary | r2006_2 | +| ir.cpp:2008:14:2008:39 | Address | &:r2008_5 | +| ir.cpp:2008:14:2008:39 | ChiPartial | partial:m2008_3 | +| ir.cpp:2008:14:2008:39 | ChiTotal | total:m2008_2 | +| ir.cpp:2008:14:2008:39 | Load | m2009_4 | +| ir.cpp:2008:14:2008:39 | SideEffect | m2008_3 | +| ir.cpp:2009:9:2009:17 | Address | &:r2009_1 | +| ir.cpp:2009:16:2009:16 | Address | &:r2009_2 | +| ir.cpp:2009:16:2009:16 | Load | ~m2008_3 | +| ir.cpp:2009:16:2009:16 | StoreValue | r2009_3 | +| ir.cpp:2013:6:2013:55 | ChiPartial | partial:m2013_3 | +| ir.cpp:2013:6:2013:55 | ChiTotal | total:m2013_2 | +| ir.cpp:2013:6:2013:55 | SideEffect | ~m2028_4 | +| ir.cpp:2014:7:2014:7 | Address | &:r2014_1 | +| ir.cpp:2016:7:2016:35 | CallTarget | func:r2016_2 | +| ir.cpp:2016:7:2016:35 | ChiPartial | partial:m2016_4 | +| ir.cpp:2016:7:2016:35 | ChiTotal | total:m2013_4 | +| ir.cpp:2016:7:2016:35 | SideEffect | ~m2013_4 | +| ir.cpp:2016:7:2016:35 | Unary | r2016_3 | +| ir.cpp:2017:5:2017:36 | CallTarget | func:r2017_1 | +| ir.cpp:2017:5:2017:36 | ChiPartial | partial:m2017_3 | +| ir.cpp:2017:5:2017:36 | ChiTotal | total:m2016_5 | +| ir.cpp:2017:5:2017:36 | SideEffect | ~m2016_5 | +| ir.cpp:2017:5:2017:36 | Unary | r2017_2 | +| ir.cpp:2018:7:2018:32 | CallTarget | func:r2018_2 | +| ir.cpp:2018:7:2018:32 | ChiPartial | partial:m2018_4 | +| ir.cpp:2018:7:2018:32 | ChiTotal | total:m2017_4 | +| ir.cpp:2018:7:2018:32 | SideEffect | ~m2017_4 | +| ir.cpp:2019:5:2019:33 | CallTarget | func:r2019_1 | +| ir.cpp:2019:5:2019:33 | ChiPartial | partial:m2019_3 | +| ir.cpp:2019:5:2019:33 | ChiTotal | total:m2018_5 | +| ir.cpp:2019:5:2019:33 | SideEffect | ~m2018_5 | +| ir.cpp:2021:7:2021:7 | Address | &:r2021_1 | +| ir.cpp:2022:5:2022:5 | Address | &:r2022_7 | +| ir.cpp:2022:11:2022:39 | Address | &:r2022_3 | +| ir.cpp:2022:11:2022:39 | CallTarget | func:r2022_2 | +| ir.cpp:2022:11:2022:39 | ChiPartial | partial:m2022_4 | +| ir.cpp:2022:11:2022:39 | ChiTotal | total:m2019_4 | +| ir.cpp:2022:11:2022:39 | SideEffect | ~m2019_4 | +| ir.cpp:2022:40:2022:42 | Load | ~m2022_5 | +| ir.cpp:2022:40:2022:42 | StoreValue | r2022_6 | +| ir.cpp:2023:7:2023:7 | Address | &:r2023_1 | +| ir.cpp:2024:5:2024:5 | Address | &:r2024_6 | +| ir.cpp:2024:9:2024:40 | Address | &:r2024_2 | +| ir.cpp:2024:9:2024:40 | CallTarget | func:r2024_1 | +| ir.cpp:2024:9:2024:40 | ChiPartial | partial:m2024_3 | +| ir.cpp:2024:9:2024:40 | ChiTotal | total:m2022_5 | +| ir.cpp:2024:9:2024:40 | SideEffect | ~m2022_5 | +| ir.cpp:2024:41:2024:43 | Load | ~m2024_4 | +| ir.cpp:2024:41:2024:43 | StoreValue | r2024_5 | +| ir.cpp:2025:7:2025:7 | Address | &:r2025_1 | +| ir.cpp:2026:5:2026:5 | Address | &:r2026_6 | +| ir.cpp:2026:11:2026:36 | CallTarget | func:r2026_2 | +| ir.cpp:2026:11:2026:36 | ChiPartial | partial:m2026_4 | +| ir.cpp:2026:11:2026:36 | ChiTotal | total:m2024_4 | +| ir.cpp:2026:11:2026:36 | SideEffect | ~m2024_4 | +| ir.cpp:2026:11:2026:36 | StoreValue | r2026_3 | +| ir.cpp:2027:7:2027:7 | Address | &:r2027_1 | +| ir.cpp:2028:5:2028:5 | Address | &:r2028_5 | +| ir.cpp:2028:9:2028:37 | CallTarget | func:r2028_1 | +| ir.cpp:2028:9:2028:37 | ChiPartial | partial:m2028_3 | +| ir.cpp:2028:9:2028:37 | ChiTotal | total:m2026_5 | +| ir.cpp:2028:9:2028:37 | SideEffect | ~m2026_5 | +| ir.cpp:2028:9:2028:37 | StoreValue | r2028_2 | +| ir.cpp:2031:6:2031:18 | ChiPartial | partial:m2031_3 | +| ir.cpp:2031:6:2031:18 | ChiTotal | total:m2031_2 | +| ir.cpp:2031:6:2031:18 | SideEffect | m2031_3 | +| ir.cpp:2032:18:2032:18 | Address | &:r2032_1 | +| ir.cpp:2033:5:2033:5 | Address | &:r2033_1 | +| ir.cpp:2033:5:2033:5 | Load | m2032_2 | +| ir.cpp:2042:6:2042:24 | ChiPartial | partial:m2042_3 | +| ir.cpp:2042:6:2042:24 | ChiTotal | total:m2042_2 | +| ir.cpp:2042:6:2042:24 | SideEffect | ~m2050_5 | +| ir.cpp:2043:12:2043:12 | Address | &:r2043_1 | +| ir.cpp:2045:5:2045:19 | ChiPartial | partial:m2045_7 | +| ir.cpp:2045:5:2045:19 | ChiTotal | total:m2045_5 | +| ir.cpp:2045:7:2045:12 | CallTarget | func:r2045_2 | +| ir.cpp:2045:7:2045:12 | ChiPartial | partial:m2045_4 | +| ir.cpp:2045:7:2045:12 | ChiTotal | total:m2042_4 | +| ir.cpp:2045:7:2045:12 | SideEffect | ~m2042_4 | +| ir.cpp:2045:7:2045:12 | Unary | r2045_3 | +| ir.cpp:2045:13:2045:16 | Address | &:r2045_6 | +| ir.cpp:2046:5:2046:19 | ChiPartial | partial:m2046_7 | +| ir.cpp:2046:5:2046:19 | ChiTotal | total:m2046_5 | +| ir.cpp:2046:7:2046:12 | CallTarget | func:r2046_2 | +| ir.cpp:2046:7:2046:12 | ChiPartial | partial:m2046_4 | +| ir.cpp:2046:7:2046:12 | ChiTotal | total:m2045_8 | +| ir.cpp:2046:7:2046:12 | SideEffect | ~m2045_8 | +| ir.cpp:2046:7:2046:12 | Unary | r2046_3 | +| ir.cpp:2046:13:2046:16 | Address | &:r2046_6 | +| ir.cpp:2047:5:2047:15 | Address | &:r2047_1 | +| ir.cpp:2047:5:2047:15 | Address | &:r2047_1 | +| ir.cpp:2047:7:2047:13 | CallTarget | func:r2047_3 | +| ir.cpp:2047:7:2047:13 | ChiPartial | partial:m2047_5 | +| ir.cpp:2047:7:2047:13 | ChiTotal | total:m2046_8 | +| ir.cpp:2047:7:2047:13 | SideEffect | ~m2046_8 | +| ir.cpp:2047:7:2047:13 | StoreValue | r2047_4 | +| ir.cpp:2048:5:2048:18 | CallTarget | func:r2048_1 | +| ir.cpp:2048:5:2048:18 | ChiPartial | partial:m2048_3 | +| ir.cpp:2048:5:2048:18 | ChiTotal | total:m2047_6 | +| ir.cpp:2048:5:2048:18 | SideEffect | ~m2047_6 | +| ir.cpp:2048:5:2048:18 | Unary | r2048_2 | +| ir.cpp:2048:5:2048:25 | ChiPartial | partial:m2048_6 | +| ir.cpp:2048:5:2048:25 | ChiTotal | total:m2048_4 | +| ir.cpp:2048:19:2048:22 | Address | &:r2048_5 | +| ir.cpp:2049:5:2049:18 | CallTarget | func:r2049_1 | +| ir.cpp:2049:5:2049:18 | ChiPartial | partial:m2049_3 | +| ir.cpp:2049:5:2049:18 | ChiTotal | total:m2048_7 | +| ir.cpp:2049:5:2049:18 | SideEffect | ~m2048_7 | +| ir.cpp:2049:5:2049:18 | Unary | r2049_2 | +| ir.cpp:2049:5:2049:25 | ChiPartial | partial:m2049_6 | +| ir.cpp:2049:5:2049:25 | ChiTotal | total:m2049_4 | +| ir.cpp:2049:19:2049:22 | Address | &:r2049_5 | +| ir.cpp:2050:5:2050:19 | CallTarget | func:r2050_2 | +| ir.cpp:2050:5:2050:19 | ChiPartial | partial:m2050_4 | +| ir.cpp:2050:5:2050:19 | ChiTotal | total:m2049_7 | +| ir.cpp:2050:5:2050:19 | SideEffect | ~m2049_7 | +| ir.cpp:2050:5:2050:19 | StoreValue | r2050_3 | +| ir.cpp:2050:5:2050:21 | Address | &:r2050_1 | +| ir.cpp:2050:5:2050:21 | Address | &:r2050_1 | +| ir.cpp:2053:6:2053:21 | ChiPartial | partial:m2053_3 | +| ir.cpp:2053:6:2053:21 | ChiTotal | total:m2053_2 | +| ir.cpp:2053:6:2053:21 | SideEffect | ~m2057_6 | +| ir.cpp:2054:7:2054:7 | Address | &:r2054_1 | +| ir.cpp:2054:7:2054:7 | Address | &:r2054_1 | +| ir.cpp:2054:7:2054:7 | Arg(this) | this:r2054_1 | +| ir.cpp:2054:7:2054:7 | CallTarget | func:r2054_3 | +| ir.cpp:2054:7:2054:7 | ChiPartial | partial:m2054_5 | +| ir.cpp:2054:7:2054:7 | ChiPartial | partial:m2054_7 | +| ir.cpp:2054:7:2054:7 | ChiTotal | total:m2053_4 | +| ir.cpp:2054:7:2054:7 | ChiTotal | total:m2054_2 | +| ir.cpp:2054:7:2054:7 | SideEffect | ~m2053_4 | +| ir.cpp:2055:11:2055:13 | Address | &:r2055_1 | +| ir.cpp:2055:23:2055:45 | StoreValue | r2055_2 | +| ir.cpp:2056:5:2056:7 | Address | &:r2056_3 | +| ir.cpp:2056:13:2056:32 | StoreValue | r2056_2 | +| ir.cpp:2057:1:2057:1 | Address | &:r2057_2 | +| ir.cpp:2057:1:2057:1 | Address | &:r2057_2 | +| ir.cpp:2057:1:2057:1 | Arg(this) | this:r2057_2 | +| ir.cpp:2057:1:2057:1 | CallTarget | func:r2057_3 | +| ir.cpp:2057:1:2057:1 | ChiPartial | partial:m2057_5 | +| ir.cpp:2057:1:2057:1 | ChiPartial | partial:m2057_8 | +| ir.cpp:2057:1:2057:1 | ChiTotal | total:m2054_6 | +| ir.cpp:2057:1:2057:1 | ChiTotal | total:m2054_8 | +| ir.cpp:2057:1:2057:1 | SideEffect | m2054_8 | +| ir.cpp:2057:1:2057:1 | SideEffect | ~m2054_6 | +| ir.cpp:2059:6:2059:19 | ChiPartial | partial:m2059_3 | +| ir.cpp:2059:6:2059:19 | ChiTotal | total:m2059_2 | +| ir.cpp:2059:6:2059:19 | SideEffect | ~m2063_9 | +| ir.cpp:2059:26:2059:26 | Address | &:r2059_5 | +| ir.cpp:2059:33:2059:33 | Address | &:r2059_7 | +| ir.cpp:2059:40:2059:40 | Address | &:r2059_9 | +| ir.cpp:2059:47:2059:47 | Address | &:r2059_11 | +| ir.cpp:2060:5:2060:5 | Address | &:r2060_7 | +| ir.cpp:2060:9:2060:9 | Address | &:r2060_1 | +| ir.cpp:2060:9:2060:9 | Condition | r2060_2 | +| ir.cpp:2060:9:2060:9 | Load | m2059_6 | +| ir.cpp:2060:9:2060:17 | Address | &:r2060_5 | +| ir.cpp:2060:9:2060:17 | Address | &:r2060_11 | +| ir.cpp:2060:9:2060:17 | Address | &:r2060_15 | +| ir.cpp:2060:9:2060:17 | Load | m2060_4 | +| ir.cpp:2060:9:2060:17 | Phi | from 2:m2060_12 | +| ir.cpp:2060:9:2060:17 | Phi | from 3:m2060_16 | +| ir.cpp:2060:9:2060:17 | StoreValue | r2060_6 | +| ir.cpp:2060:13:2060:13 | Address | &:r2060_9 | +| ir.cpp:2060:13:2060:13 | Load | m2059_8 | +| ir.cpp:2060:13:2060:13 | StoreValue | r2060_10 | +| ir.cpp:2060:17:2060:17 | Address | &:r2060_13 | +| ir.cpp:2060:17:2060:17 | Load | m2059_10 | +| ir.cpp:2060:17:2060:17 | StoreValue | r2060_14 | +| ir.cpp:2061:5:2061:5 | Address | &:r2061_7 | +| ir.cpp:2061:9:2061:9 | Address | &:r2061_1 | +| ir.cpp:2061:9:2061:9 | Condition | r2061_2 | +| ir.cpp:2061:9:2061:9 | Load | m2059_6 | +| ir.cpp:2061:9:2061:17 | Address | &:r2061_5 | +| ir.cpp:2061:9:2061:17 | Address | &:r2061_11 | +| ir.cpp:2061:9:2061:17 | Address | &:r2061_14 | +| ir.cpp:2061:9:2061:17 | Load | m2061_4 | +| ir.cpp:2061:9:2061:17 | Phi | from 5:m2061_12 | +| ir.cpp:2061:9:2061:17 | Phi | from 6:m2061_15 | +| ir.cpp:2061:9:2061:17 | StoreValue | r2061_6 | +| ir.cpp:2061:13:2061:13 | Address | &:r2061_9 | +| ir.cpp:2061:13:2061:13 | Load | m2059_8 | +| ir.cpp:2061:13:2061:13 | StoreValue | r2061_10 | +| ir.cpp:2061:17:2061:17 | StoreValue | r2061_13 | +| ir.cpp:2062:5:2062:5 | Address | &:r2062_7 | +| ir.cpp:2062:9:2062:9 | Address | &:r2062_1 | +| ir.cpp:2062:9:2062:9 | Condition | r2062_2 | +| ir.cpp:2062:9:2062:9 | Load | m2059_6 | +| ir.cpp:2062:9:2062:17 | Address | &:r2062_5 | +| ir.cpp:2062:9:2062:17 | Address | &:r2062_10 | +| ir.cpp:2062:9:2062:17 | Address | &:r2062_13 | +| ir.cpp:2062:9:2062:17 | Load | m2062_4 | +| ir.cpp:2062:9:2062:17 | Phi | from 8:m2062_11 | +| ir.cpp:2062:9:2062:17 | Phi | from 9:m2062_14 | +| ir.cpp:2062:9:2062:17 | StoreValue | r2062_6 | +| ir.cpp:2062:13:2062:13 | StoreValue | r2062_9 | +| ir.cpp:2062:17:2062:17 | StoreValue | r2062_12 | +| ir.cpp:2063:5:2063:19 | ChiPartial | partial:m2063_8 | +| ir.cpp:2063:5:2063:19 | ChiTotal | total:m2059_4 | +| ir.cpp:2063:6:2063:6 | Address | &:r2063_2 | +| ir.cpp:2063:6:2063:6 | Condition | r2063_3 | +| ir.cpp:2063:6:2063:6 | Load | m2059_6 | +| ir.cpp:2063:6:2063:14 | Address | &:r2063_6 | +| ir.cpp:2063:6:2063:14 | Address | &:r2063_7 | +| ir.cpp:2063:6:2063:14 | Address | &:r2063_11 | +| ir.cpp:2063:6:2063:14 | Address | &:r2063_14 | +| ir.cpp:2063:6:2063:14 | Load | m2063_5 | +| ir.cpp:2063:6:2063:14 | Phi | from 11:m2063_12 | +| ir.cpp:2063:6:2063:14 | Phi | from 12:m2063_15 | +| ir.cpp:2063:10:2063:10 | StoreValue | r2063_10 | +| ir.cpp:2063:14:2063:14 | StoreValue | r2063_13 | +| ir.cpp:2063:19:2063:19 | StoreValue | r2063_1 | +| ir.cpp:2069:6:2069:22 | ChiPartial | partial:m2069_3 | +| ir.cpp:2069:6:2069:22 | ChiTotal | total:m2069_2 | +| ir.cpp:2069:6:2069:22 | SideEffect | m2069_3 | +| ir.cpp:2069:29:2069:29 | Address | &:r2069_5 | +| ir.cpp:2069:46:2069:46 | Address | &:r2069_7 | +| ir.cpp:2069:63:2069:63 | Address | &:r2069_9 | +| ir.cpp:2069:80:2069:80 | Address | &:r2069_11 | +| ir.cpp:2070:5:2070:5 | Address | &:r2070_7 | +| ir.cpp:2070:9:2070:9 | Address | &:r2070_1 | +| ir.cpp:2070:9:2070:9 | Condition | r2070_2 | +| ir.cpp:2070:9:2070:9 | Load | m2069_6 | +| ir.cpp:2070:9:2070:17 | Address | &:r2070_5 | +| ir.cpp:2070:9:2070:17 | Address | &:r2070_11 | +| ir.cpp:2070:9:2070:17 | Address | &:r2070_15 | +| ir.cpp:2070:9:2070:17 | Load | m2070_4 | +| ir.cpp:2070:9:2070:17 | Phi | from 2:m2070_12 | +| ir.cpp:2070:9:2070:17 | Phi | from 3:m2070_16 | +| ir.cpp:2070:9:2070:17 | StoreValue | r2070_6 | +| ir.cpp:2070:13:2070:13 | Address | &:r2070_9 | +| ir.cpp:2070:13:2070:13 | Load | m2069_8 | +| ir.cpp:2070:13:2070:13 | StoreValue | r2070_10 | +| ir.cpp:2070:17:2070:17 | Address | &:r2070_13 | +| ir.cpp:2070:17:2070:17 | Load | m2069_10 | +| ir.cpp:2070:17:2070:17 | StoreValue | r2070_14 | +| ir.cpp:2071:5:2071:5 | Address | &:r2071_10 | +| ir.cpp:2071:9:2071:9 | Address | &:r2071_2 | +| ir.cpp:2071:9:2071:9 | Address | &:r2071_6 | +| ir.cpp:2071:9:2071:9 | Address | &:r2071_17 | +| ir.cpp:2071:9:2071:9 | Address | &:r2071_23 | +| ir.cpp:2071:9:2071:9 | Condition | r2071_3 | +| ir.cpp:2071:9:2071:9 | Load | m2069_6 | +| ir.cpp:2071:9:2071:9 | Load | m2071_5 | +| ir.cpp:2071:9:2071:9 | Phi | from 5:m2071_18 | +| ir.cpp:2071:9:2071:9 | Phi | from 6:m2071_24 | +| ir.cpp:2071:9:2071:9 | StoreValue | r2071_7 | +| ir.cpp:2071:9:2071:31 | Address | &:r2071_1 | +| ir.cpp:2071:9:2071:31 | Address | &:r2071_1 | +| ir.cpp:2071:9:2071:31 | Load | m2071_8 | +| ir.cpp:2071:9:2071:31 | StoreValue | r2071_9 | +| ir.cpp:2071:13:2071:13 | Address | &:r2071_12 | +| ir.cpp:2071:13:2071:13 | Address | &:r2071_12 | +| ir.cpp:2071:13:2071:13 | Address | &:r2071_13 | +| ir.cpp:2071:13:2071:13 | Load | m2069_8 | +| ir.cpp:2071:13:2071:13 | Load | m2071_15 | +| ir.cpp:2071:13:2071:13 | StoreValue | r2071_14 | +| ir.cpp:2071:13:2071:13 | StoreValue | r2071_16 | +| ir.cpp:2071:17:2071:31 | Address | &:r2071_19 | +| ir.cpp:2071:17:2071:31 | Address | &:r2071_19 | +| ir.cpp:2071:17:2071:31 | Load | m2071_21 | +| ir.cpp:2071:17:2071:31 | StoreValue | r2071_20 | +| ir.cpp:2071:17:2071:31 | StoreValue | r2071_22 | +| ir.cpp:2072:5:2072:5 | Address | &:r2072_10 | +| ir.cpp:2072:9:2072:9 | Address | &:r2072_2 | +| ir.cpp:2072:9:2072:9 | Address | &:r2072_6 | +| ir.cpp:2072:9:2072:9 | Address | &:r2072_16 | +| ir.cpp:2072:9:2072:9 | Address | &:r2072_22 | +| ir.cpp:2072:9:2072:9 | Condition | r2072_3 | +| ir.cpp:2072:9:2072:9 | Load | m2069_6 | +| ir.cpp:2072:9:2072:9 | Load | m2072_5 | +| ir.cpp:2072:9:2072:9 | Phi | from 8:m2072_17 | +| ir.cpp:2072:9:2072:9 | Phi | from 9:m2072_23 | +| ir.cpp:2072:9:2072:9 | StoreValue | r2072_7 | +| ir.cpp:2072:9:2072:45 | Address | &:r2072_1 | +| ir.cpp:2072:9:2072:45 | Address | &:r2072_1 | +| ir.cpp:2072:9:2072:45 | Load | m2072_8 | +| ir.cpp:2072:9:2072:45 | StoreValue | r2072_9 | +| ir.cpp:2072:13:2072:27 | Address | &:r2072_12 | +| ir.cpp:2072:13:2072:27 | Address | &:r2072_12 | +| ir.cpp:2072:13:2072:27 | Load | m2072_14 | +| ir.cpp:2072:13:2072:27 | StoreValue | r2072_13 | +| ir.cpp:2072:13:2072:27 | StoreValue | r2072_15 | +| ir.cpp:2072:31:2072:45 | Address | &:r2072_18 | +| ir.cpp:2072:31:2072:45 | Address | &:r2072_18 | +| ir.cpp:2072:31:2072:45 | Load | m2072_20 | +| ir.cpp:2072:31:2072:45 | StoreValue | r2072_19 | +| ir.cpp:2072:31:2072:45 | StoreValue | r2072_21 | +| ir.cpp:2073:6:2073:6 | Address | &:r2073_11 | +| ir.cpp:2073:6:2073:6 | Unary | r2073_11 | +| ir.cpp:2073:6:2073:18 | Address | &:r2073_13 | +| ir.cpp:2073:10:2073:10 | Address | &:r2073_5 | +| ir.cpp:2073:10:2073:10 | Condition | r2073_6 | +| ir.cpp:2073:10:2073:10 | Load | m2069_6 | +| ir.cpp:2073:10:2073:18 | Address | &:r2073_9 | +| ir.cpp:2073:10:2073:18 | Address | &:r2073_17 | +| ir.cpp:2073:10:2073:18 | Address | &:r2073_21 | +| ir.cpp:2073:10:2073:18 | Load | m2073_8 | +| ir.cpp:2073:10:2073:18 | Phi | from 11:m2073_18 | +| ir.cpp:2073:10:2073:18 | Phi | from 12:m2073_22 | +| ir.cpp:2073:10:2073:18 | StoreValue | r2073_10 | +| ir.cpp:2073:14:2073:14 | Address | &:r2073_15 | +| ir.cpp:2073:14:2073:14 | Load | m2069_8 | +| ir.cpp:2073:14:2073:14 | StoreValue | r2073_16 | +| ir.cpp:2073:18:2073:18 | Address | &:r2073_19 | +| ir.cpp:2073:18:2073:18 | Load | m2069_10 | +| ir.cpp:2073:18:2073:18 | StoreValue | r2073_20 | +| ir.cpp:2073:23:2073:37 | Address | &:r2073_1 | +| ir.cpp:2073:23:2073:37 | Address | &:r2073_1 | +| ir.cpp:2073:23:2073:37 | Load | m2073_3 | +| ir.cpp:2073:23:2073:37 | StoreValue | r2073_2 | +| ir.cpp:2073:23:2073:37 | StoreValue | r2073_4 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_5 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_5 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_5 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_5 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_5 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_5 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_7 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_7 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_7 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_7 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_7 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_7 | +| ir.cpp:2076:8:2076:8 | Address | &:r2076_10 | +| ir.cpp:2076:8:2076:8 | ChiPartial | partial:m2076_3 | +| ir.cpp:2076:8:2076:8 | ChiPartial | partial:m2076_3 | +| ir.cpp:2076:8:2076:8 | ChiPartial | partial:m2076_3 | +| ir.cpp:2076:8:2076:8 | ChiTotal | total:m2076_2 | +| ir.cpp:2076:8:2076:8 | ChiTotal | total:m2076_2 | +| ir.cpp:2076:8:2076:8 | ChiTotal | total:m2076_2 | +| ir.cpp:2076:8:2076:8 | Load | m0_10 | +| ir.cpp:2076:8:2076:8 | Load | m2076_6 | +| ir.cpp:2076:8:2076:8 | Load | m2076_6 | +| ir.cpp:2076:8:2076:8 | Load | m2076_6 | +| ir.cpp:2076:8:2076:8 | SideEffect | m2076_3 | +| ir.cpp:2076:8:2076:8 | SideEffect | m2076_3 | +| ir.cpp:2076:8:2076:8 | SideEffect | m2076_3 | +| ir.cpp:2076:8:2076:8 | SideEffect | m2076_8 | +| ir.cpp:2076:8:2076:8 | SideEffect | m2076_8 | +| ir.cpp:2076:8:2076:8 | SideEffect | m2076_8 | +| ir.cpp:2077:13:2077:29 | Address | &:r2077_5 | +| ir.cpp:2077:13:2077:29 | Address | &:r2077_5 | +| ir.cpp:2077:13:2077:29 | Address | &:r2077_7 | +| ir.cpp:2077:13:2077:29 | Address | &:r2077_7 | +| ir.cpp:2077:13:2077:29 | ChiPartial | partial:m2077_3 | +| ir.cpp:2077:13:2077:29 | ChiTotal | total:m2077_2 | +| ir.cpp:2077:13:2077:29 | Load | m2077_6 | +| ir.cpp:2077:13:2077:29 | SideEffect | m2077_3 | +| ir.cpp:2077:13:2077:29 | SideEffect | m2077_8 | +| ir.cpp:2080:6:2080:25 | ChiPartial | partial:m2080_3 | +| ir.cpp:2080:6:2080:25 | ChiTotal | total:m2080_2 | +| ir.cpp:2080:6:2080:25 | SideEffect | ~m2084_32 | +| ir.cpp:2080:32:2080:32 | Address | &:r2080_5 | +| ir.cpp:2080:52:2080:52 | Address | &:r2080_7 | +| ir.cpp:2080:72:2080:72 | Address | &:r2080_9 | +| ir.cpp:2080:92:2080:92 | Address | &:r2080_11 | +| ir.cpp:2081:5:2081:5 | Address | &:r2081_1 | +| ir.cpp:2081:5:2081:5 | Address | &:r2081_1 | +| ir.cpp:2081:5:2081:5 | Arg(this) | this:r2081_1 | +| ir.cpp:2081:5:2081:5 | ChiPartial | partial:m2081_16 | +| ir.cpp:2081:5:2081:5 | ChiTotal | total:m2080_12 | +| ir.cpp:2081:5:2081:5 | SideEffect | m2080_12 | +| ir.cpp:2081:7:2081:7 | CallTarget | func:r2081_2 | +| ir.cpp:2081:7:2081:7 | ChiPartial | partial:m2081_12 | +| ir.cpp:2081:7:2081:7 | ChiTotal | total:m2080_4 | +| ir.cpp:2081:7:2081:7 | SideEffect | ~m2080_4 | +| ir.cpp:2081:7:2081:7 | Unary | r2081_11 | +| ir.cpp:2081:9:2081:9 | Address | &:r2081_3 | +| ir.cpp:2081:9:2081:9 | Condition | r2081_4 | +| ir.cpp:2081:9:2081:9 | Load | m2080_6 | +| ir.cpp:2081:9:2081:17 | Address | &:r2081_7 | +| ir.cpp:2081:9:2081:17 | Address | &:r2081_10 | +| ir.cpp:2081:9:2081:17 | Address | &:r2081_20 | +| ir.cpp:2081:9:2081:17 | Address | &:r2081_23 | +| ir.cpp:2081:9:2081:17 | Arg(0) | 0:r2081_10 | +| ir.cpp:2081:9:2081:17 | Load | m2081_6 | +| ir.cpp:2081:9:2081:17 | Phi | from 2:m2081_21 | +| ir.cpp:2081:9:2081:17 | Phi | from 3:m2081_24 | +| ir.cpp:2081:9:2081:17 | SideEffect | ~m2081_13 | +| ir.cpp:2081:9:2081:17 | Unary | r2081_8 | +| ir.cpp:2081:9:2081:17 | Unary | r2081_9 | +| ir.cpp:2081:13:2081:13 | StoreValue | r2081_19 | +| ir.cpp:2081:17:2081:17 | StoreValue | r2081_22 | +| ir.cpp:2082:5:2082:5 | Address | &:r2082_1 | +| ir.cpp:2082:5:2082:5 | Address | &:r2082_1 | +| ir.cpp:2082:5:2082:5 | Arg(this) | this:r2082_1 | +| ir.cpp:2082:5:2082:5 | ChiPartial | partial:m2082_19 | +| ir.cpp:2082:5:2082:5 | ChiTotal | total:m2081_17 | +| ir.cpp:2082:5:2082:5 | SideEffect | m2081_17 | +| ir.cpp:2082:7:2082:7 | CallTarget | func:r2082_2 | +| ir.cpp:2082:7:2082:7 | ChiPartial | partial:m2082_15 | +| ir.cpp:2082:7:2082:7 | ChiTotal | total:m2082_7 | +| ir.cpp:2082:7:2082:7 | SideEffect | ~m2082_7 | +| ir.cpp:2082:7:2082:7 | Unary | r2082_14 | +| ir.cpp:2082:9:2082:9 | Address | &:r2082_4 | +| ir.cpp:2082:9:2082:9 | Address | &:r2082_9 | +| ir.cpp:2082:9:2082:9 | Address | &:r2082_35 | +| ir.cpp:2082:9:2082:9 | Address | &:r2082_46 | +| ir.cpp:2082:9:2082:9 | Condition | r2082_5 | +| ir.cpp:2082:9:2082:9 | Load | m2080_6 | +| ir.cpp:2082:9:2082:9 | Load | m2082_8 | +| ir.cpp:2082:9:2082:9 | Phi | from 5:m2082_36 | +| ir.cpp:2082:9:2082:9 | Phi | from 5:~m2082_30 | +| ir.cpp:2082:9:2082:9 | Phi | from 6:m2082_47 | +| ir.cpp:2082:9:2082:9 | Phi | from 6:~m2082_42 | +| ir.cpp:2082:9:2082:9 | StoreValue | r2082_10 | +| ir.cpp:2082:9:2082:34 | Address | &:r2082_3 | +| ir.cpp:2082:9:2082:34 | Address | &:r2082_13 | +| ir.cpp:2082:9:2082:34 | Arg(0) | 0:r2082_13 | +| ir.cpp:2082:9:2082:34 | SideEffect | ~m2082_11 | +| ir.cpp:2082:9:2082:34 | Unary | r2082_3 | +| ir.cpp:2082:9:2082:34 | Unary | r2082_12 | +| ir.cpp:2082:13:2082:13 | Address | &:r2082_22 | +| ir.cpp:2082:13:2082:13 | Address | &:r2082_22 | +| ir.cpp:2082:13:2082:13 | Address | &:r2082_22 | +| ir.cpp:2082:13:2082:13 | Address | &:r2082_27 | +| ir.cpp:2082:13:2082:13 | Arg(0) | 0:r2082_27 | +| ir.cpp:2082:13:2082:13 | Arg(this) | this:r2082_22 | +| ir.cpp:2082:13:2082:13 | CallTarget | func:r2082_24 | +| ir.cpp:2082:13:2082:13 | ChiPartial | partial:m2082_29 | +| ir.cpp:2082:13:2082:13 | ChiPartial | partial:m2082_32 | +| ir.cpp:2082:13:2082:13 | ChiTotal | total:m2081_13 | +| ir.cpp:2082:13:2082:13 | ChiTotal | total:m2082_23 | +| ir.cpp:2082:13:2082:13 | Load | m2082_33 | +| ir.cpp:2082:13:2082:13 | SideEffect | ~m2080_8 | +| ir.cpp:2082:13:2082:13 | SideEffect | ~m2081_13 | +| ir.cpp:2082:13:2082:13 | StoreValue | r2082_34 | +| ir.cpp:2082:13:2082:13 | Unary | r2082_25 | +| ir.cpp:2082:13:2082:13 | Unary | r2082_26 | +| ir.cpp:2082:17:2082:34 | Address | &:r2082_37 | +| ir.cpp:2082:17:2082:34 | Address | &:r2082_37 | +| ir.cpp:2082:17:2082:34 | Address | &:r2082_37 | +| ir.cpp:2082:17:2082:34 | Arg(this) | this:r2082_37 | +| ir.cpp:2082:17:2082:34 | CallTarget | func:r2082_39 | +| ir.cpp:2082:17:2082:34 | ChiPartial | partial:m2082_41 | +| ir.cpp:2082:17:2082:34 | ChiPartial | partial:m2082_43 | +| ir.cpp:2082:17:2082:34 | ChiTotal | total:m2081_13 | +| ir.cpp:2082:17:2082:34 | ChiTotal | total:m2082_38 | +| ir.cpp:2082:17:2082:34 | Load | m2082_44 | +| ir.cpp:2082:17:2082:34 | SideEffect | ~m2081_13 | +| ir.cpp:2082:17:2082:34 | StoreValue | r2082_45 | +| ir.cpp:2083:5:2083:5 | Address | &:r2083_1 | +| ir.cpp:2083:5:2083:5 | Address | &:r2083_1 | +| ir.cpp:2083:5:2083:5 | Arg(this) | this:r2083_1 | +| ir.cpp:2083:5:2083:5 | ChiPartial | partial:m2083_19 | +| ir.cpp:2083:5:2083:5 | ChiTotal | total:m2082_20 | +| ir.cpp:2083:5:2083:5 | SideEffect | m2082_20 | +| ir.cpp:2083:7:2083:7 | CallTarget | func:r2083_2 | +| ir.cpp:2083:7:2083:7 | ChiPartial | partial:m2083_15 | +| ir.cpp:2083:7:2083:7 | ChiTotal | total:m2083_7 | +| ir.cpp:2083:7:2083:7 | SideEffect | ~m2083_7 | +| ir.cpp:2083:7:2083:7 | Unary | r2083_14 | +| ir.cpp:2083:9:2083:9 | Address | &:r2083_4 | +| ir.cpp:2083:9:2083:9 | Address | &:r2083_9 | +| ir.cpp:2083:9:2083:9 | Address | &:r2083_31 | +| ir.cpp:2083:9:2083:9 | Address | &:r2083_42 | +| ir.cpp:2083:9:2083:9 | Condition | r2083_5 | +| ir.cpp:2083:9:2083:9 | Load | m2080_6 | +| ir.cpp:2083:9:2083:9 | Load | m2083_8 | +| ir.cpp:2083:9:2083:9 | Phi | from 8:m2083_32 | +| ir.cpp:2083:9:2083:9 | Phi | from 8:~m2083_27 | +| ir.cpp:2083:9:2083:9 | Phi | from 9:m2083_43 | +| ir.cpp:2083:9:2083:9 | Phi | from 9:~m2083_38 | +| ir.cpp:2083:9:2083:9 | StoreValue | r2083_10 | +| ir.cpp:2083:9:2083:51 | Address | &:r2083_3 | +| ir.cpp:2083:9:2083:51 | Address | &:r2083_13 | +| ir.cpp:2083:9:2083:51 | Arg(0) | 0:r2083_13 | +| ir.cpp:2083:9:2083:51 | SideEffect | ~m2083_11 | +| ir.cpp:2083:9:2083:51 | Unary | r2083_3 | +| ir.cpp:2083:9:2083:51 | Unary | r2083_12 | +| ir.cpp:2083:13:2083:30 | Address | &:r2083_22 | +| ir.cpp:2083:13:2083:30 | Address | &:r2083_22 | +| ir.cpp:2083:13:2083:30 | Address | &:r2083_22 | +| ir.cpp:2083:13:2083:30 | Arg(this) | this:r2083_22 | +| ir.cpp:2083:13:2083:30 | CallTarget | func:r2083_24 | +| ir.cpp:2083:13:2083:30 | ChiPartial | partial:m2083_26 | +| ir.cpp:2083:13:2083:30 | ChiPartial | partial:m2083_28 | +| ir.cpp:2083:13:2083:30 | ChiTotal | total:m2082_16 | +| ir.cpp:2083:13:2083:30 | ChiTotal | total:m2083_23 | +| ir.cpp:2083:13:2083:30 | Load | m2083_29 | +| ir.cpp:2083:13:2083:30 | SideEffect | ~m2082_16 | +| ir.cpp:2083:13:2083:30 | StoreValue | r2083_30 | +| ir.cpp:2083:34:2083:51 | Address | &:r2083_33 | +| ir.cpp:2083:34:2083:51 | Address | &:r2083_33 | +| ir.cpp:2083:34:2083:51 | Address | &:r2083_33 | +| ir.cpp:2083:34:2083:51 | Arg(this) | this:r2083_33 | +| ir.cpp:2083:34:2083:51 | CallTarget | func:r2083_35 | +| ir.cpp:2083:34:2083:51 | ChiPartial | partial:m2083_37 | +| ir.cpp:2083:34:2083:51 | ChiPartial | partial:m2083_39 | +| ir.cpp:2083:34:2083:51 | ChiTotal | total:m2082_16 | +| ir.cpp:2083:34:2083:51 | ChiTotal | total:m2083_34 | +| ir.cpp:2083:34:2083:51 | Load | m2083_40 | +| ir.cpp:2083:34:2083:51 | SideEffect | ~m2082_16 | +| ir.cpp:2083:34:2083:51 | StoreValue | r2083_41 | +| ir.cpp:2084:5:2084:19 | ChiPartial | partial:m2084_35 | +| ir.cpp:2084:5:2084:19 | ChiTotal | total:m2084_17 | +| ir.cpp:2084:5:2084:19 | SideEffect | m2084_17 | +| ir.cpp:2084:6:2084:6 | Address | &:r2084_1 | +| ir.cpp:2084:6:2084:6 | Address | &:r2084_1 | +| ir.cpp:2084:6:2084:6 | Arg(this) | this:r2084_1 | +| ir.cpp:2084:6:2084:6 | ChiPartial | partial:m2084_16 | +| ir.cpp:2084:6:2084:6 | ChiTotal | total:m2083_20 | +| ir.cpp:2084:6:2084:6 | SideEffect | m2083_20 | +| ir.cpp:2084:8:2084:8 | CallTarget | func:r2084_2 | +| ir.cpp:2084:8:2084:8 | ChiPartial | partial:m2084_12 | +| ir.cpp:2084:8:2084:8 | ChiTotal | total:m2083_16 | +| ir.cpp:2084:8:2084:8 | SideEffect | ~m2083_16 | +| ir.cpp:2084:8:2084:8 | Unary | r2084_11 | +| ir.cpp:2084:8:2084:19 | Address | &:r2084_18 | +| ir.cpp:2084:8:2084:19 | Address | &:r2084_18 | +| ir.cpp:2084:8:2084:19 | Arg(this) | this:r2084_18 | +| ir.cpp:2084:10:2084:10 | Address | &:r2084_3 | +| ir.cpp:2084:10:2084:10 | Condition | r2084_4 | +| ir.cpp:2084:10:2084:10 | Load | m2080_6 | +| ir.cpp:2084:10:2084:18 | Address | &:r2084_7 | +| ir.cpp:2084:10:2084:18 | Address | &:r2084_10 | +| ir.cpp:2084:10:2084:18 | Address | &:r2084_39 | +| ir.cpp:2084:10:2084:18 | Address | &:r2084_42 | +| ir.cpp:2084:10:2084:18 | Arg(0) | 0:r2084_10 | +| ir.cpp:2084:10:2084:18 | Load | m2084_6 | +| ir.cpp:2084:10:2084:18 | Phi | from 11:m2084_40 | +| ir.cpp:2084:10:2084:18 | Phi | from 12:m2084_43 | +| ir.cpp:2084:10:2084:18 | SideEffect | ~m2084_13 | +| ir.cpp:2084:10:2084:18 | Unary | r2084_8 | +| ir.cpp:2084:10:2084:18 | Unary | r2084_9 | +| ir.cpp:2084:14:2084:14 | StoreValue | r2084_38 | +| ir.cpp:2084:18:2084:18 | StoreValue | r2084_41 | +| ir.cpp:2084:21:2084:21 | CallTarget | func:r2084_19 | +| ir.cpp:2084:21:2084:21 | ChiPartial | partial:m2084_31 | +| ir.cpp:2084:21:2084:21 | ChiTotal | total:m2084_25 | +| ir.cpp:2084:21:2084:21 | SideEffect | ~m2084_25 | +| ir.cpp:2084:21:2084:21 | Unary | r2084_30 | +| ir.cpp:2084:23:2084:40 | Address | &:r2084_20 | +| ir.cpp:2084:23:2084:40 | Address | &:r2084_20 | +| ir.cpp:2084:23:2084:40 | Address | &:r2084_29 | +| ir.cpp:2084:23:2084:40 | Arg(0) | 0:r2084_29 | +| ir.cpp:2084:23:2084:40 | Arg(this) | this:r2084_20 | +| ir.cpp:2084:23:2084:40 | CallTarget | func:r2084_22 | +| ir.cpp:2084:23:2084:40 | ChiPartial | partial:m2084_24 | +| ir.cpp:2084:23:2084:40 | ChiPartial | partial:m2084_26 | +| ir.cpp:2084:23:2084:40 | ChiTotal | total:m2084_13 | +| ir.cpp:2084:23:2084:40 | ChiTotal | total:m2084_21 | +| ir.cpp:2084:23:2084:40 | SideEffect | ~m2084_13 | +| ir.cpp:2084:23:2084:40 | SideEffect | ~m2084_27 | +| ir.cpp:2084:23:2084:40 | Unary | r2084_20 | +| ir.cpp:2084:23:2084:40 | Unary | r2084_28 | +| ir.cpp:2089:14:2089:22 | Address | &:r2089_7 | +| ir.cpp:2089:14:2089:22 | ChiPartial | partial:m2089_3 | +| ir.cpp:2089:14:2089:22 | ChiTotal | total:m2089_2 | +| ir.cpp:2089:14:2089:22 | Load | m2094_2 | +| ir.cpp:2089:14:2089:22 | SideEffect | ~m2091_6 | +| ir.cpp:2089:37:2089:37 | Address | &:r2089_5 | +| ir.cpp:2090:16:2090:16 | Address | &:r2090_1 | +| ir.cpp:2091:3:2091:3 | Address | &:r2091_10 | +| ir.cpp:2091:7:2091:7 | Address | &:r2091_1 | +| ir.cpp:2091:7:2091:7 | Left | r2091_2 | +| ir.cpp:2091:7:2091:7 | Load | m2089_6 | +| ir.cpp:2091:7:2091:13 | Condition | r2091_4 | +| ir.cpp:2091:7:2093:28 | Address | &:r2091_8 | +| ir.cpp:2091:7:2093:28 | Address | &:r2091_12 | +| ir.cpp:2091:7:2093:28 | Address | &:r2091_14 | +| ir.cpp:2091:7:2093:28 | Load | m2091_7 | +| ir.cpp:2091:7:2093:28 | Phi | from 2:m2091_13 | +| ir.cpp:2091:7:2093:28 | Phi | from 2:~m2092_6 | +| ir.cpp:2091:7:2093:28 | Phi | from 3:m2091_15 | +| ir.cpp:2091:7:2093:28 | Phi | from 3:~m2093_6 | +| ir.cpp:2091:7:2093:28 | StoreValue | r2091_9 | +| ir.cpp:2091:11:2091:13 | Right | r2091_3 | +| ir.cpp:2092:6:2092:20 | CallTarget | func:r2092_1 | +| ir.cpp:2092:6:2092:20 | ChiPartial | partial:m2092_5 | +| ir.cpp:2092:6:2092:20 | ChiTotal | total:m2089_4 | +| ir.cpp:2092:6:2092:20 | SideEffect | ~m2089_4 | +| ir.cpp:2092:6:2092:26 | StoreValue | r2092_9 | +| ir.cpp:2092:22:2092:22 | Address | &:r2092_2 | +| ir.cpp:2092:22:2092:22 | Arg(0) | 0:r2092_3 | +| ir.cpp:2092:22:2092:22 | Load | m2089_6 | +| ir.cpp:2092:26:2092:26 | Address | &:r2092_7 | +| ir.cpp:2092:26:2092:26 | Load | m2089_6 | +| ir.cpp:2092:26:2092:26 | Unary | r2092_8 | +| ir.cpp:2093:5:2093:28 | StoreValue | r2093_9 | +| ir.cpp:2093:6:2093:20 | CallTarget | func:r2093_1 | +| ir.cpp:2093:6:2093:20 | ChiPartial | partial:m2093_5 | +| ir.cpp:2093:6:2093:20 | ChiTotal | total:m2089_4 | +| ir.cpp:2093:6:2093:20 | SideEffect | ~m2089_4 | +| ir.cpp:2093:6:2093:27 | Unary | r2093_8 | +| ir.cpp:2093:22:2093:22 | Address | &:r2093_2 | +| ir.cpp:2093:22:2093:22 | Arg(0) | 0:r2093_3 | +| ir.cpp:2093:22:2093:22 | Load | m2089_6 | +| ir.cpp:2093:26:2093:27 | Unary | r2093_7 | +| ir.cpp:2094:1:2094:1 | Address | &:r2094_1 | +| ir.cpp:2096:6:2096:17 | ChiPartial | partial:m2096_3 | +| ir.cpp:2096:6:2096:17 | ChiTotal | total:m2096_2 | +| ir.cpp:2096:6:2096:17 | SideEffect | ~m2099_6 | +| ir.cpp:2097:8:2097:8 | Address | &:r2097_1 | +| ir.cpp:2097:12:2097:18 | Address | &:r2097_4 | +| ir.cpp:2097:12:2097:18 | Arg(0) | 0:r2097_3 | +| ir.cpp:2097:12:2097:18 | CallTarget | func:r2097_2 | +| ir.cpp:2097:12:2097:18 | ChiPartial | partial:m2097_5 | +| ir.cpp:2097:12:2097:18 | ChiTotal | total:m2096_4 | +| ir.cpp:2097:12:2097:18 | SideEffect | ~m2096_4 | +| ir.cpp:2097:12:2097:18 | StoreValue | r2097_8 | +| ir.cpp:2097:12:2097:18 | Unary | r2097_4 | +| ir.cpp:2098:3:2098:4 | Address | &:r2098_4 | +| ir.cpp:2098:3:2098:8 | ChiPartial | partial:m2098_5 | +| ir.cpp:2098:3:2098:8 | ChiTotal | total:m2097_7 | +| ir.cpp:2098:4:2098:4 | Address | &:r2098_2 | +| ir.cpp:2098:4:2098:4 | Load | m2097_9 | +| ir.cpp:2098:4:2098:4 | Unary | r2098_3 | +| ir.cpp:2098:8:2098:8 | StoreValue | r2098_1 | +| ir.cpp:2099:3:2099:10 | CallTarget | func:r2099_1 | +| ir.cpp:2099:3:2099:10 | ChiPartial | partial:m2099_5 | +| ir.cpp:2099:3:2099:10 | ChiTotal | total:m2097_6 | +| ir.cpp:2099:3:2099:10 | SideEffect | ~m2097_6 | +| ir.cpp:2099:10:2099:10 | Address | &:r2099_2 | +| ir.cpp:2099:10:2099:10 | Arg(0) | 0:r2099_3 | +| ir.cpp:2099:10:2099:10 | Load | m2097_9 | +| ir.cpp:2102:7:2102:7 | Address | &:r2102_5 | +| ir.cpp:2102:7:2102:7 | Address | &:r2102_5 | +| ir.cpp:2102:7:2102:7 | Address | &:r2102_7 | +| ir.cpp:2102:7:2102:7 | Address | &:r2102_7 | +| ir.cpp:2102:7:2102:7 | ChiPartial | partial:m2102_3 | +| ir.cpp:2102:7:2102:7 | ChiTotal | total:m2102_2 | +| ir.cpp:2102:7:2102:7 | Load | m2102_6 | +| ir.cpp:2102:7:2102:7 | SideEffect | m2102_3 | +| ir.cpp:2102:7:2102:7 | SideEffect | m2102_8 | +| ir.cpp:2104:10:2104:24 | ChiPartial | partial:m2104_3 | +| ir.cpp:2104:10:2104:24 | ChiTotal | total:m2104_2 | +| ir.cpp:2104:10:2104:24 | SideEffect | m2104_3 | +| ir.cpp:2104:32:2104:32 | Address | &:r2104_5 | +| ir.cpp:2104:32:2104:32 | Address | &:r2104_5 | +| ir.cpp:2104:32:2104:32 | Address | &:r2104_7 | +| ir.cpp:2104:32:2104:32 | Address | &:r2104_7 | +| ir.cpp:2104:32:2104:32 | Load | m2104_6 | +| ir.cpp:2104:32:2104:32 | SideEffect | m2104_8 | +| ir.cpp:2106:13:2106:18 | Address | &:r2106_5 | +| ir.cpp:2106:13:2106:18 | Address | &:r2106_5 | +| ir.cpp:2106:13:2106:18 | Address | &:r2106_7 | +| ir.cpp:2106:13:2106:18 | Address | &:r2106_7 | +| ir.cpp:2106:13:2106:18 | ChiPartial | partial:m2106_3 | +| ir.cpp:2106:13:2106:18 | ChiTotal | total:m2106_2 | +| ir.cpp:2106:13:2106:18 | Load | m2106_6 | +| ir.cpp:2106:13:2106:18 | SideEffect | m2106_3 | +| ir.cpp:2106:13:2106:18 | SideEffect | m2106_8 | +| ir.cpp:2109:7:2109:7 | Address | &:r2109_5 | +| ir.cpp:2109:7:2109:7 | Address | &:r2109_5 | +| ir.cpp:2109:7:2109:7 | Address | &:r2109_7 | +| ir.cpp:2109:7:2109:7 | Address | &:r2109_7 | +| ir.cpp:2109:7:2109:7 | Address | &:r2109_9 | +| ir.cpp:2109:7:2109:7 | Arg(this) | this:r2109_9 | +| ir.cpp:2109:7:2109:7 | CallTarget | func:r2109_10 | +| ir.cpp:2109:7:2109:7 | ChiPartial | partial:m2109_3 | +| ir.cpp:2109:7:2109:7 | ChiPartial | partial:m2109_12 | +| ir.cpp:2109:7:2109:7 | ChiPartial | partial:m2109_14 | +| ir.cpp:2109:7:2109:7 | ChiTotal | total:m2109_2 | +| ir.cpp:2109:7:2109:7 | ChiTotal | total:m2109_4 | +| ir.cpp:2109:7:2109:7 | ChiTotal | total:m2109_8 | +| ir.cpp:2109:7:2109:7 | Load | m2109_6 | +| ir.cpp:2109:7:2109:7 | SideEffect | m2109_15 | +| ir.cpp:2109:7:2109:7 | SideEffect | ~m2109_4 | +| ir.cpp:2109:7:2109:7 | SideEffect | ~m2109_13 | +| ir.cpp:2109:7:2109:7 | Unary | m2109_6 | +| ir.cpp:2112:5:2112:13 | Address | &:r2112_5 | +| ir.cpp:2112:5:2112:13 | Address | &:r2112_5 | +| ir.cpp:2112:5:2112:13 | Address | &:r2112_7 | +| ir.cpp:2112:5:2112:13 | Address | &:r2112_7 | +| ir.cpp:2112:5:2112:13 | ChiPartial | partial:m2112_3 | +| ir.cpp:2112:5:2112:13 | ChiTotal | total:m2112_2 | +| ir.cpp:2112:5:2112:13 | Load | m2112_6 | +| ir.cpp:2112:5:2112:13 | SideEffect | m2112_8 | +| ir.cpp:2112:5:2112:13 | SideEffect | ~m2112_14 | +| ir.cpp:2112:5:2112:13 | Unary | m2112_6 | +| ir.cpp:2112:18:2112:18 | Arg(this) | this:r2112_10 | +| ir.cpp:2112:18:2112:18 | CallTarget | func:r2112_11 | +| ir.cpp:2112:18:2112:18 | ChiPartial | partial:m2112_13 | +| ir.cpp:2112:18:2112:18 | ChiTotal | total:m2112_4 | +| ir.cpp:2112:18:2112:18 | SideEffect | ~m2112_4 | +| ir.cpp:2114:10:2114:24 | ChiPartial | partial:m2114_3 | +| ir.cpp:2114:10:2114:24 | ChiTotal | total:m2114_2 | +| ir.cpp:2114:10:2114:24 | SideEffect | m2114_3 | +| ir.cpp:2114:32:2114:32 | Address | &:r2114_5 | +| ir.cpp:2114:32:2114:32 | Address | &:r2114_5 | +| ir.cpp:2114:32:2114:32 | Address | &:r2114_7 | +| ir.cpp:2114:32:2114:32 | Address | &:r2114_7 | +| ir.cpp:2114:32:2114:32 | Load | m2114_6 | +| ir.cpp:2114:32:2114:32 | SideEffect | m2114_8 | +| ir.cpp:2119:5:2119:18 | Address | &:r2119_5 | +| ir.cpp:2119:5:2119:18 | ChiPartial | partial:m2119_3 | +| ir.cpp:2119:5:2119:18 | ChiTotal | total:m2119_2 | +| ir.cpp:2119:5:2119:18 | Load | m2129_2 | +| ir.cpp:2119:5:2119:18 | SideEffect | ~m2128_14 | +| ir.cpp:2121:12:2121:13 | Address | &:r2121_1 | +| ir.cpp:2121:17:2121:27 | Address | &:r2121_4 | +| ir.cpp:2121:17:2121:27 | Address | &:r2121_8 | +| ir.cpp:2121:17:2121:27 | Arg(0) | 0:r2121_3 | +| ir.cpp:2121:17:2121:27 | Arg(this) | this:r2121_8 | +| ir.cpp:2121:17:2121:27 | CallTarget | func:r2121_2 | +| ir.cpp:2121:17:2121:27 | CallTarget | func:r2121_9 | +| ir.cpp:2121:17:2121:27 | ChiPartial | partial:m2121_5 | +| ir.cpp:2121:17:2121:27 | ChiPartial | partial:m2121_11 | +| ir.cpp:2121:17:2121:27 | ChiPartial | partial:m2121_13 | +| ir.cpp:2121:17:2121:27 | ChiTotal | total:m2119_4 | +| ir.cpp:2121:17:2121:27 | ChiTotal | total:m2121_6 | +| ir.cpp:2121:17:2121:27 | ChiTotal | total:m2121_7 | +| ir.cpp:2121:17:2121:27 | SideEffect | ~m2119_4 | +| ir.cpp:2121:17:2121:27 | SideEffect | ~m2121_6 | +| ir.cpp:2121:17:2121:27 | StoreValue | r2121_8 | +| ir.cpp:2121:17:2121:27 | Unary | r2121_4 | +| ir.cpp:2122:5:2122:13 | CallTarget | func:r2122_3 | +| ir.cpp:2122:5:2122:13 | CallTarget | func:r2122_10 | +| ir.cpp:2122:5:2122:13 | ChiPartial | partial:m2122_5 | +| ir.cpp:2122:5:2122:13 | ChiPartial | partial:m2122_13 | +| ir.cpp:2122:5:2122:13 | ChiTotal | total:m2121_12 | +| ir.cpp:2122:5:2122:13 | ChiTotal | total:m2122_6 | +| ir.cpp:2122:5:2122:13 | SideEffect | ~m2121_12 | +| ir.cpp:2122:5:2122:13 | SideEffect | ~m2122_6 | +| ir.cpp:2122:12:2122:13 | Address | &:r2122_1 | +| ir.cpp:2122:12:2122:13 | Address | &:r2122_2 | +| ir.cpp:2122:12:2122:13 | Address | &:r2122_2 | +| ir.cpp:2122:12:2122:13 | Arg(0) | 0:r2122_11 | +| ir.cpp:2122:12:2122:13 | ChiPartial | partial:m2122_8 | +| ir.cpp:2122:12:2122:13 | ChiTotal | total:m2121_14 | +| ir.cpp:2122:12:2122:13 | Load | m2121_15 | +| ir.cpp:2122:12:2122:13 | SideEffect | ~m2121_14 | +| ir.cpp:2122:12:2122:13 | Unary | r2122_1 | +| ir.cpp:2124:12:2124:13 | Address | &:r2124_1 | +| ir.cpp:2124:17:2124:30 | Address | &:r2124_4 | +| ir.cpp:2124:17:2124:30 | Address | &:r2124_8 | +| ir.cpp:2124:17:2124:30 | Arg(0) | 0:r2124_3 | +| ir.cpp:2124:17:2124:30 | Arg(this) | this:r2124_8 | +| ir.cpp:2124:17:2124:30 | CallTarget | func:r2124_2 | +| ir.cpp:2124:17:2124:30 | CallTarget | func:r2124_9 | +| ir.cpp:2124:17:2124:30 | ChiPartial | partial:m2124_5 | +| ir.cpp:2124:17:2124:30 | ChiPartial | partial:m2124_11 | +| ir.cpp:2124:17:2124:30 | ChiPartial | partial:m2124_13 | +| ir.cpp:2124:17:2124:30 | ChiTotal | total:m2122_14 | +| ir.cpp:2124:17:2124:30 | ChiTotal | total:m2124_6 | +| ir.cpp:2124:17:2124:30 | ChiTotal | total:m2124_7 | +| ir.cpp:2124:17:2124:30 | SideEffect | ~m2122_14 | +| ir.cpp:2124:17:2124:30 | SideEffect | ~m2124_6 | +| ir.cpp:2124:17:2124:30 | StoreValue | r2124_15 | +| ir.cpp:2124:17:2124:30 | Unary | r2124_4 | +| ir.cpp:2124:17:2124:30 | Unary | r2124_8 | +| ir.cpp:2125:5:2125:13 | CallTarget | func:r2125_3 | +| ir.cpp:2125:5:2125:13 | CallTarget | func:r2125_10 | +| ir.cpp:2125:5:2125:13 | ChiPartial | partial:m2125_5 | +| ir.cpp:2125:5:2125:13 | ChiPartial | partial:m2125_13 | +| ir.cpp:2125:5:2125:13 | ChiTotal | total:m2124_12 | +| ir.cpp:2125:5:2125:13 | ChiTotal | total:m2125_6 | +| ir.cpp:2125:5:2125:13 | SideEffect | ~m2124_12 | +| ir.cpp:2125:5:2125:13 | SideEffect | ~m2125_6 | +| ir.cpp:2125:12:2125:13 | Address | &:r2125_1 | +| ir.cpp:2125:12:2125:13 | Address | &:r2125_2 | +| ir.cpp:2125:12:2125:13 | Address | &:r2125_2 | +| ir.cpp:2125:12:2125:13 | Arg(0) | 0:r2125_11 | +| ir.cpp:2125:12:2125:13 | ChiPartial | partial:m2125_8 | +| ir.cpp:2125:12:2125:13 | ChiTotal | total:m2124_14 | +| ir.cpp:2125:12:2125:13 | Load | m2124_16 | +| ir.cpp:2125:12:2125:13 | SideEffect | ~m2124_14 | +| ir.cpp:2125:12:2125:13 | Unary | r2125_1 | +| ir.cpp:2127:15:2127:15 | Address | &:r2127_1 | +| ir.cpp:2127:19:2127:32 | Address | &:r2127_4 | +| ir.cpp:2127:19:2127:32 | Address | &:r2127_8 | +| ir.cpp:2127:19:2127:32 | Arg(0) | 0:r2127_3 | +| ir.cpp:2127:19:2127:32 | Arg(this) | this:r2127_8 | +| ir.cpp:2127:19:2127:32 | CallTarget | func:r2127_2 | +| ir.cpp:2127:19:2127:32 | CallTarget | func:r2127_9 | +| ir.cpp:2127:19:2127:32 | ChiPartial | partial:m2127_5 | +| ir.cpp:2127:19:2127:32 | ChiPartial | partial:m2127_11 | +| ir.cpp:2127:19:2127:32 | ChiPartial | partial:m2127_13 | +| ir.cpp:2127:19:2127:32 | ChiTotal | total:m2125_14 | +| ir.cpp:2127:19:2127:32 | ChiTotal | total:m2127_6 | +| ir.cpp:2127:19:2127:32 | ChiTotal | total:m2127_7 | +| ir.cpp:2127:19:2127:32 | SideEffect | ~m2125_14 | +| ir.cpp:2127:19:2127:32 | SideEffect | ~m2127_6 | +| ir.cpp:2127:19:2127:32 | StoreValue | r2127_8 | +| ir.cpp:2127:19:2127:32 | Unary | r2127_4 | +| ir.cpp:2128:5:2128:12 | CallTarget | func:r2128_3 | +| ir.cpp:2128:5:2128:12 | CallTarget | func:r2128_10 | +| ir.cpp:2128:5:2128:12 | ChiPartial | partial:m2128_5 | +| ir.cpp:2128:5:2128:12 | ChiPartial | partial:m2128_13 | +| ir.cpp:2128:5:2128:12 | ChiTotal | total:m2127_12 | +| ir.cpp:2128:5:2128:12 | ChiTotal | total:m2128_6 | +| ir.cpp:2128:5:2128:12 | SideEffect | ~m2127_12 | +| ir.cpp:2128:5:2128:12 | SideEffect | ~m2128_6 | +| ir.cpp:2128:12:2128:12 | Address | &:r2128_1 | +| ir.cpp:2128:12:2128:12 | Address | &:r2128_2 | +| ir.cpp:2128:12:2128:12 | Address | &:r2128_2 | +| ir.cpp:2128:12:2128:12 | Arg(0) | 0:r2128_11 | +| ir.cpp:2128:12:2128:12 | ChiPartial | partial:m2128_8 | +| ir.cpp:2128:12:2128:12 | ChiTotal | total:m2127_14 | +| ir.cpp:2128:12:2128:12 | Load | m2127_15 | +| ir.cpp:2128:12:2128:12 | SideEffect | ~m2127_14 | +| ir.cpp:2128:12:2128:12 | Unary | r2128_1 | +| ir.cpp:2129:1:2129:1 | Address | &:r2129_1 | +| ir.cpp:2133:6:2133:26 | ChiPartial | partial:m2133_3 | +| ir.cpp:2133:6:2133:26 | ChiTotal | total:m2133_2 | +| ir.cpp:2133:6:2133:26 | SideEffect | ~m2135_5 | +| ir.cpp:2134:13:2134:13 | Address | &:r2134_1 | +| ir.cpp:2134:16:2134:19 | StoreValue | r2134_2 | +| ir.cpp:2135:3:2135:27 | CallTarget | func:r2135_1 | +| ir.cpp:2135:3:2135:27 | ChiPartial | partial:m2135_4 | +| ir.cpp:2135:3:2135:27 | ChiTotal | total:m2133_4 | +| ir.cpp:2135:3:2135:27 | SideEffect | ~m2133_4 | +| ir.cpp:2135:29:2135:29 | Arg(0) | 0:r2135_2 | +| ir.cpp:2140:5:2140:11 | Address | &:r2140_6 | +| ir.cpp:2140:5:2140:11 | ChiPartial | partial:m2140_3 | +| ir.cpp:2140:5:2140:11 | ChiTotal | total:m2140_2 | +| ir.cpp:2140:5:2140:11 | Load | m2145_4 | +| ir.cpp:2140:5:2140:11 | SideEffect | ~m2144_4 | | ir.cpp:2141:9:2141:9 | Address | &:r2141_1 | -| ir.cpp:2141:9:2141:9 | Left | r2141_2 | -| ir.cpp:2141:9:2141:9 | Load | m2140_8 | -| ir.cpp:2141:9:2141:14 | Condition | r2141_4 | -| ir.cpp:2141:14:2141:14 | Right | r2141_3 | -| ir.cpp:2142:9:2142:20 | CallTarget | func:r2142_1 | -| ir.cpp:2143:5:2143:12 | CallTarget | func:r2143_1 | -| ir.cpp:2143:5:2143:12 | ChiPartial | partial:m2143_3 | -| ir.cpp:2143:5:2143:12 | ChiTotal | total:m2140_7 | -| ir.cpp:2143:5:2143:12 | SideEffect | ~m2140_7 | -| ir.cpp:2144:5:2144:13 | Address | &:r2144_1 | -| ir.cpp:2144:12:2144:12 | Address | &:r2144_2 | -| ir.cpp:2144:12:2144:12 | Load | m2140_8 | -| ir.cpp:2144:12:2144:12 | StoreValue | r2144_3 | -| ir.cpp:2147:6:2147:24 | ChiPartial | partial:m2147_3 | -| ir.cpp:2147:6:2147:24 | ChiTotal | total:m2147_2 | -| ir.cpp:2147:6:2147:24 | SideEffect | ~m2153_8 | -| ir.cpp:2147:33:2147:33 | Address | &:r2147_5 | -| ir.cpp:2148:3:2148:12 | Address | &:r2148_6 | -| ir.cpp:2148:3:2148:12 | Arg(0) | 0:r2148_5 | -| ir.cpp:2148:3:2148:12 | CallTarget | func:r2148_1 | -| ir.cpp:2148:3:2148:12 | ChiPartial | partial:m2148_7 | -| ir.cpp:2148:3:2148:12 | ChiTotal | total:m2147_4 | -| ir.cpp:2148:3:2148:12 | Right | r2148_4 | -| ir.cpp:2148:3:2148:12 | SideEffect | ~m2147_4 | -| ir.cpp:2148:3:2148:12 | Unary | r2148_6 | -| ir.cpp:2148:11:2148:11 | Address | &:r2148_2 | -| ir.cpp:2148:11:2148:11 | Left | r2148_3 | -| ir.cpp:2148:11:2148:11 | Load | m2147_6 | -| ir.cpp:2149:3:2149:18 | Address | &:r2149_7 | -| ir.cpp:2149:3:2149:18 | Arg(0) | 0:r2149_5 | -| ir.cpp:2149:3:2149:18 | CallTarget | func:r2149_1 | -| ir.cpp:2149:3:2149:18 | ChiPartial | partial:m2149_8 | -| ir.cpp:2149:3:2149:18 | ChiTotal | total:m2148_8 | -| ir.cpp:2149:3:2149:18 | Right | r2149_4 | -| ir.cpp:2149:3:2149:18 | SideEffect | ~m2148_8 | -| ir.cpp:2149:3:2149:18 | Unary | r2149_7 | -| ir.cpp:2149:7:2149:10 | Arg(1) | 1:r2149_6 | -| ir.cpp:2149:17:2149:17 | Address | &:r2149_2 | -| ir.cpp:2149:17:2149:17 | Left | r2149_3 | -| ir.cpp:2149:17:2149:17 | Load | m2147_6 | -| ir.cpp:2150:3:2150:15 | Address | &:r2150_6 | -| ir.cpp:2150:3:2150:15 | Arg(0) | 0:r2150_5 | -| ir.cpp:2150:3:2150:15 | CallTarget | func:r2150_1 | -| ir.cpp:2150:3:2150:15 | ChiPartial | partial:m2150_7 | -| ir.cpp:2150:3:2150:15 | ChiTotal | total:m2149_9 | -| ir.cpp:2150:3:2150:15 | Right | r2150_4 | -| ir.cpp:2150:3:2150:15 | SideEffect | ~m2149_9 | -| ir.cpp:2150:3:2150:15 | Unary | r2150_6 | -| ir.cpp:2150:14:2150:14 | Address | &:r2150_2 | -| ir.cpp:2150:14:2150:14 | Left | r2150_3 | -| ir.cpp:2150:14:2150:14 | Load | m2147_6 | -| ir.cpp:2151:3:2151:20 | Address | &:r2151_7 | -| ir.cpp:2151:3:2151:20 | Arg(0) | 0:r2151_5 | -| ir.cpp:2151:3:2151:20 | CallTarget | func:r2151_1 | -| ir.cpp:2151:3:2151:20 | ChiPartial | partial:m2151_8 | -| ir.cpp:2151:3:2151:20 | ChiTotal | total:m2150_8 | -| ir.cpp:2151:3:2151:20 | Right | r2151_4 | -| ir.cpp:2151:3:2151:20 | SideEffect | ~m2150_8 | -| ir.cpp:2151:3:2151:20 | Unary | r2151_7 | -| ir.cpp:2151:19:2151:19 | Address | &:r2151_2 | -| ir.cpp:2151:19:2151:19 | Left | r2151_3 | -| ir.cpp:2151:19:2151:19 | Load | m2147_6 | -| ir.cpp:2151:21:2151:21 | Arg(1) | 1:r2151_6 | -| ir.cpp:2152:3:2152:36 | Address | &:r2152_6 | -| ir.cpp:2152:3:2152:36 | Arg(0) | 0:r2152_5 | -| ir.cpp:2152:3:2152:36 | CallTarget | func:r2152_1 | -| ir.cpp:2152:3:2152:36 | ChiPartial | partial:m2152_7 | -| ir.cpp:2152:3:2152:36 | ChiTotal | total:m2151_9 | -| ir.cpp:2152:3:2152:36 | Right | r2152_4 | -| ir.cpp:2152:3:2152:36 | SideEffect | ~m2151_9 | -| ir.cpp:2152:3:2152:36 | Unary | r2152_6 | -| ir.cpp:2152:35:2152:35 | Address | &:r2152_2 | -| ir.cpp:2152:35:2152:35 | Left | r2152_3 | -| ir.cpp:2152:35:2152:35 | Load | m2147_6 | -| ir.cpp:2153:3:2153:24 | Address | &:r2153_6 | -| ir.cpp:2153:3:2153:24 | Arg(0) | 0:r2153_5 | -| ir.cpp:2153:3:2153:24 | CallTarget | func:r2153_1 | -| ir.cpp:2153:3:2153:24 | ChiPartial | partial:m2153_7 | -| ir.cpp:2153:3:2153:24 | ChiTotal | total:m2152_8 | -| ir.cpp:2153:3:2153:24 | Right | r2153_4 | -| ir.cpp:2153:3:2153:24 | SideEffect | ~m2152_8 | -| ir.cpp:2153:3:2153:24 | Unary | r2153_6 | -| ir.cpp:2153:11:2153:11 | Address | &:r2153_2 | -| ir.cpp:2153:11:2153:11 | Left | r2153_3 | -| ir.cpp:2153:11:2153:11 | Load | m2147_6 | -| ir.cpp:2158:7:2158:17 | Address | &:r2158_10 | -| ir.cpp:2158:7:2158:17 | ChiPartial | partial:m2158_3 | -| ir.cpp:2158:7:2158:17 | ChiTotal | total:m2158_2 | -| ir.cpp:2158:7:2158:17 | Load | m2161_4 | -| ir.cpp:2158:7:2158:17 | SideEffect | m2158_3 | -| ir.cpp:2158:25:2158:25 | Address | &:r2158_5 | -| ir.cpp:2158:25:2158:25 | Address | &:r2158_5 | -| ir.cpp:2158:25:2158:25 | Address | &:r2158_7 | -| ir.cpp:2158:25:2158:25 | Address | &:r2158_7 | -| ir.cpp:2158:25:2158:25 | Load | m2158_6 | -| ir.cpp:2158:25:2158:25 | SideEffect | m2158_8 | -| ir.cpp:2159:9:2159:11 | Address | &:r2159_1 | -| ir.cpp:2160:10:2160:10 | Address | &:r2160_1 | -| ir.cpp:2160:14:2160:19 | CallTarget | func:r2160_2 | -| ir.cpp:2160:14:2160:19 | StoreValue | r2160_8 | -| ir.cpp:2160:21:2160:21 | Address | &:r2160_3 | -| ir.cpp:2160:21:2160:21 | Address | &:r2160_5 | -| ir.cpp:2160:21:2160:21 | Arg(0) | 0:r2160_5 | -| ir.cpp:2160:21:2160:21 | Load | m2158_6 | -| ir.cpp:2160:21:2160:21 | SideEffect | ~m2158_8 | -| ir.cpp:2160:21:2160:21 | Unary | r2160_4 | -| ir.cpp:2160:24:2160:27 | Address | &:r2160_7 | -| ir.cpp:2160:24:2160:27 | Arg(1) | 1:r2160_7 | -| ir.cpp:2160:24:2160:27 | ChiPartial | partial:m2160_10 | -| ir.cpp:2160:24:2160:27 | ChiTotal | total:m2159_2 | -| ir.cpp:2160:25:2160:27 | Unary | r2160_6 | -| ir.cpp:2161:3:2161:13 | Address | &:r2161_1 | -| ir.cpp:2161:10:2161:12 | Address | &:r2161_2 | -| ir.cpp:2161:10:2161:12 | Load | m2160_11 | -| ir.cpp:2161:10:2161:12 | StoreValue | r2161_3 | -| ir.cpp:2168:6:2168:39 | ChiPartial | partial:m2168_3 | -| ir.cpp:2168:6:2168:39 | ChiTotal | total:m2168_2 | -| ir.cpp:2168:6:2168:39 | SideEffect | ~m2169_8 | -| ir.cpp:2169:6:2169:42 | Address | &:r2169_1 | -| ir.cpp:2169:6:2169:42 | Condition | r2169_12 | -| ir.cpp:2169:22:2169:22 | Address | &:r2169_4 | -| ir.cpp:2169:22:2169:22 | Address | &:r2169_4 | -| ir.cpp:2169:22:2169:22 | Arg(this) | this:r2169_4 | -| ir.cpp:2169:22:2169:22 | CallTarget | func:r2169_5 | -| ir.cpp:2169:22:2169:22 | ChiPartial | partial:m2169_7 | -| ir.cpp:2169:22:2169:22 | ChiPartial | partial:m2169_10 | -| ir.cpp:2169:22:2169:22 | ChiTotal | total:m2168_4 | -| ir.cpp:2169:22:2169:22 | ChiTotal | total:m2169_3 | -| ir.cpp:2169:22:2169:22 | SideEffect | m2169_3 | -| ir.cpp:2169:22:2169:22 | SideEffect | ~m2168_4 | -| ir.cpp:2169:22:2169:22 | Unary | r2169_6 | -| ir.cpp:2169:25:2169:42 | StoreValue | r2169_2 | -| ir.cpp:2172:7:2172:7 | Address | &:r2172_5 | -| ir.cpp:2172:7:2172:7 | Address | &:r2172_5 | -| ir.cpp:2172:7:2172:7 | Address | &:r2172_7 | -| ir.cpp:2172:7:2172:7 | Address | &:r2172_7 | -| ir.cpp:2172:7:2172:7 | Address | &:r2172_9 | -| ir.cpp:2172:7:2172:7 | Address | &:r2172_10 | -| ir.cpp:2172:7:2172:7 | Address | &:r2172_13 | -| ir.cpp:2172:7:2172:7 | ChiPartial | partial:m2172_3 | -| ir.cpp:2172:7:2172:7 | ChiPartial | partial:m2172_15 | -| ir.cpp:2172:7:2172:7 | ChiTotal | total:m2172_2 | -| ir.cpp:2172:7:2172:7 | ChiTotal | total:m2172_8 | -| ir.cpp:2172:7:2172:7 | Load | m0_2 | -| ir.cpp:2172:7:2172:7 | Load | m2172_6 | -| ir.cpp:2172:7:2172:7 | Load | ~m0_4 | -| ir.cpp:2172:7:2172:7 | SideEffect | m2172_3 | -| ir.cpp:2172:7:2172:7 | SideEffect | m2172_16 | -| ir.cpp:2172:7:2172:7 | StoreValue | r2172_14 | -| ir.cpp:2172:7:2172:7 | Unary | m2172_6 | -| ir.cpp:2172:7:2172:7 | Unary | r2172_11 | -| ir.cpp:2172:7:2172:7 | Unary | r2172_12 | -| ir.cpp:2175:5:2175:23 | Address | &:r2175_5 | -| ir.cpp:2175:5:2175:23 | Address | &:r2175_5 | -| ir.cpp:2175:5:2175:23 | Address | &:r2175_7 | -| ir.cpp:2175:5:2175:23 | Address | &:r2175_7 | -| ir.cpp:2175:5:2175:23 | ChiPartial | partial:m2175_3 | -| ir.cpp:2175:5:2175:23 | ChiTotal | total:m2175_2 | -| ir.cpp:2175:5:2175:23 | Load | m2175_6 | -| ir.cpp:2175:5:2175:23 | SideEffect | m2175_20 | -| ir.cpp:2175:5:2175:23 | SideEffect | ~m2175_13 | -| ir.cpp:2175:29:2175:29 | Address | &:r2175_16 | -| ir.cpp:2175:29:2175:29 | Address | &:r2175_18 | -| ir.cpp:2175:29:2175:29 | Load | m2175_6 | -| ir.cpp:2175:29:2175:29 | Unary | r2175_17 | -| ir.cpp:2175:29:2175:40 | ChiPartial | partial:m2175_19 | -| ir.cpp:2175:29:2175:40 | ChiTotal | total:m2175_8 | -| ir.cpp:2175:33:2175:40 | Address | &:r2175_11 | -| ir.cpp:2175:33:2175:40 | Arg(0) | 0:r2175_10 | -| ir.cpp:2175:33:2175:40 | CallTarget | func:r2175_9 | -| ir.cpp:2175:33:2175:40 | ChiPartial | partial:m2175_12 | -| ir.cpp:2175:33:2175:40 | ChiTotal | total:m2175_4 | -| ir.cpp:2175:33:2175:40 | SideEffect | ~m2175_4 | -| ir.cpp:2175:33:2175:40 | StoreValue | r2175_15 | -| ir.cpp:2175:33:2175:40 | Unary | r2175_11 | -| ir.cpp:2176:5:2176:24 | Address | &:r2176_5 | -| ir.cpp:2176:5:2176:24 | Address | &:r2176_5 | -| ir.cpp:2176:5:2176:24 | Address | &:r2176_7 | -| ir.cpp:2176:5:2176:24 | Address | &:r2176_7 | -| ir.cpp:2176:5:2176:24 | ChiPartial | partial:m2176_3 | -| ir.cpp:2176:5:2176:24 | ChiTotal | total:m2176_2 | -| ir.cpp:2176:5:2176:24 | Load | m2176_6 | -| ir.cpp:2176:5:2176:24 | SideEffect | m2176_8 | -| ir.cpp:2176:5:2176:24 | SideEffect | ~m2176_16 | -| ir.cpp:2176:30:2176:37 | CallTarget | func:r2176_9 | -| ir.cpp:2176:30:2176:37 | ChiPartial | partial:m2176_15 | -| ir.cpp:2176:30:2176:37 | ChiTotal | total:m2176_4 | -| ir.cpp:2176:30:2176:37 | SideEffect | ~m2176_4 | -| ir.cpp:2176:37:2176:37 | Address | &:r2176_10 | -| ir.cpp:2176:37:2176:37 | Address | &:r2176_12 | -| ir.cpp:2176:37:2176:37 | Arg(0) | 0:r2176_13 | -| ir.cpp:2176:37:2176:37 | Load | m2176_6 | -| ir.cpp:2176:37:2176:37 | Load | ~m2176_8 | -| ir.cpp:2176:37:2176:37 | Unary | r2176_11 | -| ir.cpp:2178:10:2178:14 | Address | &:r2178_5 | -| ir.cpp:2178:10:2178:14 | Address | &:r2178_5 | -| ir.cpp:2178:10:2178:14 | Address | &:r2178_7 | -| ir.cpp:2178:10:2178:14 | Address | &:r2178_7 | -| ir.cpp:2178:10:2178:14 | ChiPartial | partial:m2178_3 | -| ir.cpp:2178:10:2178:14 | ChiTotal | total:m2178_2 | -| ir.cpp:2178:10:2178:14 | Load | m2178_6 | -| ir.cpp:2178:10:2178:14 | SideEffect | m2178_8 | -| ir.cpp:2178:10:2178:14 | SideEffect | ~m2178_19 | -| ir.cpp:2178:21:2178:21 | Address | &:r2178_9 | -| ir.cpp:2178:26:2178:27 | Address | &:r2178_17 | -| ir.cpp:2178:26:2178:31 | ChiPartial | partial:m2178_18 | -| ir.cpp:2178:26:2178:31 | ChiTotal | total:m2178_4 | -| ir.cpp:2178:27:2178:27 | Address | &:r2178_13 | -| ir.cpp:2178:27:2178:27 | Address | &:r2178_15 | -| ir.cpp:2178:27:2178:27 | Load | m2178_6 | -| ir.cpp:2178:27:2178:27 | Load | ~m2178_8 | -| ir.cpp:2178:27:2178:27 | Unary | r2178_14 | -| ir.cpp:2178:27:2178:27 | Unary | r2178_16 | -| ir.cpp:2178:31:2178:31 | Address | &:r2178_11 | -| ir.cpp:2178:31:2178:31 | Load | m2178_10 | -| ir.cpp:2178:31:2178:31 | StoreValue | r2178_12 | -| ir.cpp:2179:10:2179:14 | Address | &:r2179_5 | -| ir.cpp:2179:10:2179:14 | Address | &:r2179_5 | -| ir.cpp:2179:10:2179:14 | Address | &:r2179_7 | -| ir.cpp:2179:10:2179:14 | Address | &:r2179_7 | -| ir.cpp:2179:10:2179:14 | Address | &:r2179_17 | -| ir.cpp:2179:10:2179:14 | ChiPartial | partial:m2179_3 | -| ir.cpp:2179:10:2179:14 | ChiTotal | total:m2179_2 | -| ir.cpp:2179:10:2179:14 | Load | m2179_6 | -| ir.cpp:2179:10:2179:14 | Load | m2179_15 | -| ir.cpp:2179:10:2179:14 | SideEffect | m2179_3 | -| ir.cpp:2179:10:2179:14 | SideEffect | m2179_8 | -| ir.cpp:2179:20:2179:29 | Address | &:r2179_9 | -| ir.cpp:2179:27:2179:28 | Load | ~m2179_4 | -| ir.cpp:2179:27:2179:28 | StoreValue | r2179_14 | -| ir.cpp:2179:28:2179:28 | Address | &:r2179_10 | -| ir.cpp:2179:28:2179:28 | Address | &:r2179_12 | -| ir.cpp:2179:28:2179:28 | Address | &:r2179_13 | -| ir.cpp:2179:28:2179:28 | Load | m2179_6 | -| ir.cpp:2179:28:2179:28 | Load | ~m2179_8 | -| ir.cpp:2179:28:2179:28 | Unary | r2179_11 | -| ir.cpp:2182:16:2182:50 | Address | &:r2182_3 | -| ir.cpp:2182:16:2182:50 | SideEffect | ~m2182_6 | -| ir.cpp:2182:54:2182:57 | ChiPartial | partial:m2182_5 | -| ir.cpp:2182:54:2182:57 | ChiTotal | total:m2182_2 | -| ir.cpp:2182:54:2182:57 | StoreValue | r2182_4 | -| ir.cpp:2184:6:2184:35 | ChiPartial | partial:m2184_3 | -| ir.cpp:2184:6:2184:35 | ChiTotal | total:m2184_2 | -| ir.cpp:2184:6:2184:35 | Phi | from 13:~m2219_5 | -| ir.cpp:2184:6:2184:35 | Phi | from 19:~m2219_13 | -| ir.cpp:2184:6:2184:35 | Phi | from 23:~m2219_22 | -| ir.cpp:2184:6:2184:35 | SideEffect | ~m2184_9 | -| ir.cpp:2184:42:2184:42 | Address | &:r2184_5 | -| ir.cpp:2184:50:2184:50 | Address | &:r2184_7 | -| ir.cpp:2185:29:2185:29 | Address | &:r2185_1 | -| ir.cpp:2185:29:2185:29 | Address | &:r2185_1 | -| ir.cpp:2185:29:2185:29 | Arg(this) | this:r2185_1 | -| ir.cpp:2185:29:2185:29 | CallTarget | func:r2185_3 | -| ir.cpp:2185:29:2185:29 | ChiPartial | partial:m2185_5 | -| ir.cpp:2185:29:2185:29 | ChiPartial | partial:m2185_7 | -| ir.cpp:2185:29:2185:29 | ChiTotal | total:m2184_4 | -| ir.cpp:2185:29:2185:29 | ChiTotal | total:m2185_2 | -| ir.cpp:2185:29:2185:29 | SideEffect | ~m2184_4 | -| ir.cpp:2185:32:2185:32 | Address | &:r2185_9 | -| ir.cpp:2185:32:2185:32 | Condition | r2185_10 | -| ir.cpp:2185:32:2185:32 | Load | m2184_6 | -| ir.cpp:2186:9:2186:9 | Address | &:r2186_1 | -| ir.cpp:2186:9:2186:9 | Address | &:r2186_1 | -| ir.cpp:2186:9:2186:9 | Arg(this) | this:r2186_1 | -| ir.cpp:2186:9:2186:9 | ChiPartial | partial:m2186_8 | -| ir.cpp:2186:9:2186:9 | ChiTotal | total:m2185_8 | -| ir.cpp:2186:9:2186:9 | SideEffect | m2185_8 | -| ir.cpp:2186:11:2186:15 | CallTarget | func:r2186_2 | -| ir.cpp:2186:11:2186:15 | ChiPartial | partial:m2186_5 | -| ir.cpp:2186:11:2186:15 | ChiTotal | total:m2185_6 | -| ir.cpp:2186:11:2186:15 | SideEffect | ~m2185_6 | -| ir.cpp:2186:17:2186:19 | Arg(0) | 0:r2186_3 | -| ir.cpp:2186:21:2186:21 | Address | &:r2186_10 | -| ir.cpp:2186:21:2186:21 | Address | &:r2186_10 | -| ir.cpp:2186:21:2186:21 | Arg(this) | this:r2186_10 | -| ir.cpp:2186:21:2186:21 | CallTarget | func:r2186_11 | -| ir.cpp:2186:21:2186:21 | ChiPartial | partial:m2186_13 | -| ir.cpp:2186:21:2186:21 | ChiPartial | partial:m2186_16 | -| ir.cpp:2186:21:2186:21 | ChiTotal | total:m2186_6 | -| ir.cpp:2186:21:2186:21 | ChiTotal | total:m2186_9 | -| ir.cpp:2186:21:2186:21 | SideEffect | m2186_9 | -| ir.cpp:2186:21:2186:21 | SideEffect | ~m2186_6 | -| ir.cpp:2188:39:2188:39 | Address | &:r2188_2 | -| ir.cpp:2188:39:2188:39 | Address | &:r2188_2 | -| ir.cpp:2188:39:2188:39 | Arg(this) | this:r2188_2 | -| ir.cpp:2188:39:2188:39 | CallTarget | func:r2188_4 | -| ir.cpp:2188:39:2188:39 | ChiPartial | partial:m2188_6 | -| ir.cpp:2188:39:2188:39 | ChiPartial | partial:m2188_8 | -| ir.cpp:2188:39:2188:39 | ChiTotal | total:m2188_1 | -| ir.cpp:2188:39:2188:39 | ChiTotal | total:m2188_3 | -| ir.cpp:2188:39:2188:39 | Phi | from 0:~m2185_6 | -| ir.cpp:2188:39:2188:39 | Phi | from 2:~m2186_14 | -| ir.cpp:2188:39:2188:39 | SideEffect | ~m2188_1 | -| ir.cpp:2188:42:2188:76 | Condition | r2188_10 | -| ir.cpp:2189:9:2189:9 | Address | &:r2189_1 | -| ir.cpp:2189:9:2189:9 | Address | &:r2189_1 | -| ir.cpp:2189:9:2189:9 | Arg(this) | this:r2189_1 | -| ir.cpp:2189:9:2189:9 | ChiPartial | partial:m2189_8 | -| ir.cpp:2189:9:2189:9 | ChiTotal | total:m2188_9 | -| ir.cpp:2189:9:2189:9 | SideEffect | m2188_9 | -| ir.cpp:2189:11:2189:15 | CallTarget | func:r2189_2 | -| ir.cpp:2189:11:2189:15 | ChiPartial | partial:m2189_5 | -| ir.cpp:2189:11:2189:15 | ChiTotal | total:m2188_7 | -| ir.cpp:2189:11:2189:15 | SideEffect | ~m2188_7 | -| ir.cpp:2189:17:2189:19 | Arg(0) | 0:r2189_3 | -| ir.cpp:2191:32:2191:32 | Address | &:r2191_1 | -| ir.cpp:2191:32:2191:32 | Address | &:r2191_1 | -| ir.cpp:2191:32:2191:32 | Arg(this) | this:r2191_1 | -| ir.cpp:2191:32:2191:32 | CallTarget | func:r2191_3 | -| ir.cpp:2191:32:2191:32 | ChiPartial | partial:m2191_5 | -| ir.cpp:2191:32:2191:32 | ChiPartial | partial:m2191_7 | -| ir.cpp:2191:32:2191:32 | ChiTotal | total:m2189_6 | -| ir.cpp:2191:32:2191:32 | ChiTotal | total:m2191_2 | -| ir.cpp:2191:32:2191:32 | SideEffect | ~m2189_6 | -| ir.cpp:2191:35:2191:35 | Address | &:r2191_9 | -| ir.cpp:2191:35:2191:35 | Condition | r2191_11 | -| ir.cpp:2191:35:2191:35 | Load | m2184_8 | -| ir.cpp:2191:35:2191:35 | Unary | r2191_10 | -| ir.cpp:2193:11:2193:11 | Address | &:r2193_1 | -| ir.cpp:2193:11:2193:11 | Address | &:r2193_1 | -| ir.cpp:2193:11:2193:11 | Arg(this) | this:r2193_1 | -| ir.cpp:2193:11:2193:11 | ChiPartial | partial:m2193_8 | -| ir.cpp:2193:11:2193:11 | ChiTotal | total:m2191_8 | -| ir.cpp:2193:11:2193:11 | SideEffect | m2191_8 | -| ir.cpp:2193:13:2193:17 | CallTarget | func:r2193_2 | -| ir.cpp:2193:13:2193:17 | ChiPartial | partial:m2193_5 | -| ir.cpp:2193:13:2193:17 | ChiTotal | total:m2191_6 | -| ir.cpp:2193:13:2193:17 | SideEffect | ~m2191_6 | -| ir.cpp:2193:19:2193:21 | Arg(0) | 0:r2193_3 | -| ir.cpp:2196:11:2196:11 | Address | &:r2196_1 | -| ir.cpp:2196:11:2196:11 | Address | &:r2196_1 | -| ir.cpp:2196:11:2196:11 | Arg(this) | this:r2196_1 | -| ir.cpp:2196:11:2196:11 | ChiPartial | partial:m2196_8 | -| ir.cpp:2196:11:2196:11 | ChiTotal | total:m2191_8 | -| ir.cpp:2196:11:2196:11 | SideEffect | m2191_8 | -| ir.cpp:2196:13:2196:17 | CallTarget | func:r2196_2 | -| ir.cpp:2196:13:2196:17 | ChiPartial | partial:m2196_5 | -| ir.cpp:2196:13:2196:17 | ChiTotal | total:m2191_6 | -| ir.cpp:2196:13:2196:17 | SideEffect | ~m2191_6 | -| ir.cpp:2196:19:2196:21 | Arg(0) | 0:r2196_3 | -| ir.cpp:2198:5:2198:5 | Phi | from 5:~m2193_6 | -| ir.cpp:2198:5:2198:5 | Phi | from 6:~m2196_6 | -| ir.cpp:2200:25:2200:25 | Address | &:r2200_1 | -| ir.cpp:2200:25:2200:25 | Address | &:r2200_1 | -| ir.cpp:2200:25:2200:25 | Arg(this) | this:r2200_1 | -| ir.cpp:2200:25:2200:25 | CallTarget | func:r2200_3 | -| ir.cpp:2200:25:2200:25 | ChiPartial | partial:m2200_5 | -| ir.cpp:2200:25:2200:25 | ChiPartial | partial:m2200_7 | -| ir.cpp:2200:25:2200:25 | ChiTotal | total:m2198_1 | -| ir.cpp:2200:25:2200:25 | ChiTotal | total:m2200_2 | -| ir.cpp:2200:25:2200:25 | SideEffect | ~m2198_1 | -| ir.cpp:2201:5:2201:5 | Address | &:r2201_14 | -| ir.cpp:2201:5:2201:5 | Address | &:r2201_18 | -| ir.cpp:2201:5:2201:5 | Address | &:r2201_24 | -| ir.cpp:2201:42:2201:43 | Address | &:r2201_1 | -| ir.cpp:2201:42:2201:43 | Address | &:r2201_1 | -| ir.cpp:2201:42:2201:43 | Arg(this) | this:r2201_1 | -| ir.cpp:2201:45:2201:45 | Address | &:r2201_4 | -| ir.cpp:2201:45:2201:45 | Address | &:r2201_4 | -| ir.cpp:2201:45:2201:45 | Address | &:r2201_5 | -| ir.cpp:2201:45:2201:45 | Arg(0) | 0:r2201_8 | -| ir.cpp:2201:45:2201:45 | Load | m2200_8 | -| ir.cpp:2201:45:2201:45 | Load | m2201_7 | -| ir.cpp:2201:45:2201:45 | StoreValue | r2201_6 | -| ir.cpp:2201:45:2201:46 | CallTarget | func:r2201_3 | -| ir.cpp:2201:45:2201:46 | ChiPartial | partial:m2201_10 | -| ir.cpp:2201:45:2201:46 | ChiPartial | partial:m2201_12 | -| ir.cpp:2201:45:2201:46 | ChiTotal | total:m2200_6 | -| ir.cpp:2201:45:2201:46 | ChiTotal | total:m2201_2 | -| ir.cpp:2201:45:2201:46 | SideEffect | ~m2200_6 | -| ir.cpp:2201:69:2201:69 | Address | &:r2201_45 | -| ir.cpp:2201:69:2201:69 | Address | &:r2201_53 | -| ir.cpp:2201:69:2201:69 | Address | &:r2201_53 | -| ir.cpp:2201:69:2201:69 | Arg(this) | this:r2201_53 | -| ir.cpp:2201:69:2201:69 | CallTarget | func:r2201_54 | -| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_56 | -| ir.cpp:2201:69:2201:69 | ChiPartial | partial:m2201_59 | -| ir.cpp:2201:69:2201:69 | ChiTotal | total:m2202_6 | -| ir.cpp:2201:69:2201:69 | ChiTotal | total:m2202_9 | -| ir.cpp:2201:69:2201:69 | SideEffect | m2202_9 | -| ir.cpp:2201:69:2201:69 | SideEffect | ~m2202_6 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_19 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_25 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_48 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_61 | -| ir.cpp:2201:73:2201:73 | Address | &:r2201_61 | -| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_2 | -| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_5 | -| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_7 | -| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_8 | -| ir.cpp:2201:73:2201:73 | Arg(this) | this:r0_15 | -| ir.cpp:2201:73:2201:73 | Arg(this) | this:r2201_61 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_21 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_27 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_33 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_34 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_47 | -| ir.cpp:2201:73:2201:73 | CallTarget | func:r2201_62 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_37 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_39 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_42 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_49 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_64 | -| ir.cpp:2201:73:2201:73 | ChiPartial | partial:m2201_67 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m0_9 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_30 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_31 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_38 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_43 | -| ir.cpp:2201:73:2201:73 | ChiTotal | total:m2201_57 | -| ir.cpp:2201:73:2201:73 | Condition | r2201_41 | -| ir.cpp:2201:73:2201:73 | Load | m2201_17 | -| ir.cpp:2201:73:2201:73 | Load | m2201_17 | -| ir.cpp:2201:73:2201:73 | Phi | from 7:m2201_23 | -| ir.cpp:2201:73:2201:73 | Phi | from 7:~m2201_11 | -| ir.cpp:2201:73:2201:73 | Phi | from 9:m2201_68 | -| ir.cpp:2201:73:2201:73 | Phi | from 9:~m2201_65 | -| ir.cpp:2201:73:2201:73 | SideEffect | m2201_30 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_31 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_38 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_43 | -| ir.cpp:2201:73:2201:73 | SideEffect | ~m2201_57 | -| ir.cpp:2201:73:2201:73 | StoreValue | r2201_22 | -| ir.cpp:2201:73:2201:73 | StoreValue | r2201_28 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_20 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_26 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_32 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_35 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_46 | -| ir.cpp:2201:73:2201:73 | Unary | r2201_63 | -| ir.cpp:2201:73:2201:74 | StoreValue | r2201_16 | -| ir.cpp:2201:73:2201:74 | Unary | r2201_15 | -| ir.cpp:2201:73:2201:75 | Load | ~m2201_50 | -| ir.cpp:2201:73:2201:75 | StoreValue | r2201_51 | -| ir.cpp:2202:7:2202:7 | Address | &:r2202_1 | -| ir.cpp:2202:7:2202:7 | Address | &:r2202_1 | -| ir.cpp:2202:7:2202:7 | Arg(this) | this:r2202_1 | -| ir.cpp:2202:7:2202:7 | ChiPartial | partial:m2202_8 | -| ir.cpp:2202:7:2202:7 | ChiTotal | total:m2201_52 | -| ir.cpp:2202:7:2202:7 | SideEffect | m2201_52 | -| ir.cpp:2202:9:2202:13 | CallTarget | func:r2202_2 | -| ir.cpp:2202:9:2202:13 | ChiPartial | partial:m2202_5 | -| ir.cpp:2202:9:2202:13 | ChiTotal | total:m2201_50 | -| ir.cpp:2202:9:2202:13 | SideEffect | ~m2201_50 | -| ir.cpp:2202:15:2202:17 | Arg(0) | 0:r2202_3 | -| ir.cpp:2204:5:2204:5 | Address | &:r2204_14 | -| ir.cpp:2204:5:2204:5 | Address | &:r2204_18 | -| ir.cpp:2204:5:2204:5 | Address | &:r2204_24 | -| ir.cpp:2204:42:2204:43 | Address | &:r2204_1 | -| ir.cpp:2204:42:2204:43 | Address | &:r2204_1 | -| ir.cpp:2204:42:2204:43 | Address | &:r2204_61 | -| ir.cpp:2204:42:2204:43 | Address | &:r2204_61 | -| ir.cpp:2204:42:2204:43 | Arg(this) | this:r2204_1 | -| ir.cpp:2204:42:2204:43 | Arg(this) | this:r2204_61 | -| ir.cpp:2204:42:2204:43 | CallTarget | func:r2204_62 | -| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_64 | -| ir.cpp:2204:42:2204:43 | ChiPartial | partial:m2204_67 | -| ir.cpp:2204:42:2204:43 | ChiTotal | total:m2204_13 | -| ir.cpp:2204:42:2204:43 | ChiTotal | total:m2204_57 | -| ir.cpp:2204:42:2204:43 | SideEffect | m2204_13 | -| ir.cpp:2204:42:2204:43 | SideEffect | ~m2204_57 | -| ir.cpp:2204:45:2204:45 | Address | &:r2204_4 | -| ir.cpp:2204:45:2204:45 | Address | &:r2204_4 | -| ir.cpp:2204:45:2204:45 | Address | &:r2204_5 | -| ir.cpp:2204:45:2204:45 | Arg(0) | 0:r2204_8 | -| ir.cpp:2204:45:2204:45 | Load | m2200_8 | -| ir.cpp:2204:45:2204:45 | Load | m2204_7 | -| ir.cpp:2204:45:2204:45 | StoreValue | r2204_6 | -| ir.cpp:2204:45:2204:46 | CallTarget | func:r2204_3 | -| ir.cpp:2204:45:2204:46 | ChiPartial | partial:m2204_10 | -| ir.cpp:2204:45:2204:46 | ChiPartial | partial:m2204_12 | -| ir.cpp:2204:45:2204:46 | ChiTotal | total:m2201_43 | -| ir.cpp:2204:45:2204:46 | ChiTotal | total:m2204_2 | -| ir.cpp:2204:45:2204:46 | SideEffect | ~m2201_43 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_45 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_53 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_53 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_69 | -| ir.cpp:2204:69:2204:69 | Address | &:r2204_69 | -| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_53 | -| ir.cpp:2204:69:2204:69 | Arg(this) | this:r2204_69 | -| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_54 | -| ir.cpp:2204:69:2204:69 | CallTarget | func:r2204_70 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_56 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_59 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_72 | -| ir.cpp:2204:69:2204:69 | ChiPartial | partial:m2204_75 | -| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_5 | -| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_5 | -| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_8 | -| ir.cpp:2204:69:2204:69 | ChiTotal | total:m2206_8 | -| ir.cpp:2204:69:2204:69 | SideEffect | m2206_8 | -| ir.cpp:2204:69:2204:69 | SideEffect | m2206_8 | -| ir.cpp:2204:69:2204:69 | SideEffect | ~m2206_5 | -| ir.cpp:2204:69:2204:69 | SideEffect | ~m2206_5 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_19 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_25 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_48 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_77 | -| ir.cpp:2204:73:2204:73 | Address | &:r2204_77 | -| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_18 | -| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_21 | -| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_23 | -| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_24 | -| ir.cpp:2204:73:2204:73 | Arg(this) | this:r0_31 | -| ir.cpp:2204:73:2204:73 | Arg(this) | this:r2204_77 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_21 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_27 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_33 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_34 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_47 | -| ir.cpp:2204:73:2204:73 | CallTarget | func:r2204_78 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_37 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_39 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_42 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_49 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_80 | -| ir.cpp:2204:73:2204:73 | ChiPartial | partial:m2204_83 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m0_25 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_30 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_31 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_38 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_43 | -| ir.cpp:2204:73:2204:73 | ChiTotal | total:m2204_73 | -| ir.cpp:2204:73:2204:73 | Condition | r2204_41 | -| ir.cpp:2204:73:2204:73 | Load | m2204_17 | -| ir.cpp:2204:73:2204:73 | Load | m2204_17 | -| ir.cpp:2204:73:2204:73 | Phi | from 10:m2204_23 | -| ir.cpp:2204:73:2204:73 | Phi | from 10:~m2204_11 | -| ir.cpp:2204:73:2204:73 | Phi | from 14:m2204_84 | -| ir.cpp:2204:73:2204:73 | Phi | from 14:~m2204_81 | -| ir.cpp:2204:73:2204:73 | SideEffect | m2204_30 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_31 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_38 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_43 | -| ir.cpp:2204:73:2204:73 | SideEffect | ~m2204_73 | -| ir.cpp:2204:73:2204:73 | StoreValue | r2204_22 | -| ir.cpp:2204:73:2204:73 | StoreValue | r2204_28 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_20 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_26 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_32 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_35 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_46 | -| ir.cpp:2204:73:2204:73 | Unary | r2204_79 | -| ir.cpp:2204:73:2204:74 | StoreValue | r2204_16 | -| ir.cpp:2204:73:2204:74 | Unary | r2204_15 | -| ir.cpp:2204:73:2204:75 | Load | ~m2204_50 | -| ir.cpp:2204:73:2204:75 | StoreValue | r2204_51 | -| ir.cpp:2205:7:2205:7 | Address | &:r2205_1 | -| ir.cpp:2205:7:2205:7 | Address | &:r2205_1 | -| ir.cpp:2205:7:2205:7 | Arg(this) | this:r2205_1 | -| ir.cpp:2205:7:2205:7 | ChiPartial | partial:m2205_8 | -| ir.cpp:2205:7:2205:7 | ChiTotal | total:m2204_52 | -| ir.cpp:2205:7:2205:7 | SideEffect | m2204_52 | -| ir.cpp:2205:9:2205:13 | CallTarget | func:r2205_2 | -| ir.cpp:2205:9:2205:13 | ChiPartial | partial:m2205_5 | -| ir.cpp:2205:9:2205:13 | ChiTotal | total:m2204_50 | -| ir.cpp:2205:9:2205:13 | SideEffect | ~m2204_50 | -| ir.cpp:2205:15:2205:17 | Arg(0) | 0:r2205_3 | -| ir.cpp:2206:11:2206:11 | Address | &:r2206_1 | -| ir.cpp:2206:11:2206:11 | Address | &:r2206_1 | -| ir.cpp:2206:11:2206:11 | Arg(this) | this:r2206_1 | -| ir.cpp:2206:11:2206:11 | ChiPartial | partial:m2206_7 | -| ir.cpp:2206:11:2206:11 | ChiTotal | total:m2205_9 | -| ir.cpp:2206:11:2206:11 | SideEffect | m2205_9 | -| ir.cpp:2206:11:2206:19 | Left | r2206_9 | -| ir.cpp:2206:11:2206:26 | Condition | r2206_11 | -| ir.cpp:2206:13:2206:17 | CallTarget | func:r2206_2 | -| ir.cpp:2206:13:2206:17 | ChiPartial | partial:m2206_4 | -| ir.cpp:2206:13:2206:17 | ChiTotal | total:m2205_6 | -| ir.cpp:2206:13:2206:17 | SideEffect | ~m2205_6 | -| ir.cpp:2206:13:2206:17 | Unary | r2206_3 | -| ir.cpp:2206:24:2206:26 | Right | r2206_10 | -| ir.cpp:2210:5:2210:5 | Address | &:r2210_10 | -| ir.cpp:2210:5:2210:5 | Address | &:r2210_14 | -| ir.cpp:2210:5:2210:5 | Address | &:r2210_20 | -| ir.cpp:2210:26:2210:27 | Address | &:r2210_1 | -| ir.cpp:2210:26:2210:27 | Address | &:r2210_1 | -| ir.cpp:2210:26:2210:27 | Address | &:r2210_58 | -| ir.cpp:2210:26:2210:27 | Address | &:r2210_58 | -| ir.cpp:2210:26:2210:27 | Arg(this) | this:r2210_1 | -| ir.cpp:2210:26:2210:27 | Arg(this) | this:r2210_58 | -| ir.cpp:2210:26:2210:27 | CallTarget | func:r2210_59 | -| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_61 | -| ir.cpp:2210:26:2210:27 | ChiPartial | partial:m2210_64 | -| ir.cpp:2210:26:2210:27 | ChiTotal | total:m2210_9 | -| ir.cpp:2210:26:2210:27 | ChiTotal | total:m2210_55 | -| ir.cpp:2210:26:2210:27 | SideEffect | m2210_9 | -| ir.cpp:2210:26:2210:27 | SideEffect | ~m2210_55 | -| ir.cpp:2210:29:2210:29 | Arg(0) | 0:r2210_4 | -| ir.cpp:2210:29:2210:30 | CallTarget | func:r2210_3 | -| ir.cpp:2210:29:2210:30 | ChiPartial | partial:m2210_6 | -| ir.cpp:2210:29:2210:30 | ChiPartial | partial:m2210_8 | -| ir.cpp:2210:29:2210:30 | ChiTotal | total:m2204_43 | -| ir.cpp:2210:29:2210:30 | ChiTotal | total:m2210_2 | -| ir.cpp:2210:29:2210:30 | SideEffect | ~m2204_43 | -| ir.cpp:2210:37:2210:37 | Address | &:r2210_50 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_15 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_21 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_41 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_41 | -| ir.cpp:2210:41:2210:41 | Address | &:r2210_53 | -| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_34 | -| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_37 | -| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_39 | -| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_40 | -| ir.cpp:2210:41:2210:41 | Arg(this) | this:r0_47 | -| ir.cpp:2210:41:2210:41 | Arg(this) | this:r2210_41 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_17 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_23 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_29 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_30 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_42 | -| ir.cpp:2210:41:2210:41 | CallTarget | func:r2210_52 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_33 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_35 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_38 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_44 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_47 | -| ir.cpp:2210:41:2210:41 | ChiPartial | partial:m2210_54 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m0_41 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_26 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_27 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_34 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_39 | -| ir.cpp:2210:41:2210:41 | ChiTotal | total:m2210_55 | -| ir.cpp:2210:41:2210:41 | Condition | r2210_37 | -| ir.cpp:2210:41:2210:41 | Load | m2210_13 | -| ir.cpp:2210:41:2210:41 | Load | m2210_13 | -| ir.cpp:2210:41:2210:41 | Phi | from 15:m2210_19 | -| ir.cpp:2210:41:2210:41 | Phi | from 15:~m2210_7 | -| ir.cpp:2210:41:2210:41 | Phi | from 17:m2210_48 | -| ir.cpp:2210:41:2210:41 | Phi | from 17:~m2210_45 | -| ir.cpp:2210:41:2210:41 | SideEffect | m2210_26 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_27 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_34 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_39 | -| ir.cpp:2210:41:2210:41 | SideEffect | ~m2210_55 | -| ir.cpp:2210:41:2210:41 | StoreValue | r2210_18 | -| ir.cpp:2210:41:2210:41 | StoreValue | r2210_24 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_16 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_22 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_28 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_31 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_43 | -| ir.cpp:2210:41:2210:41 | Unary | r2210_51 | -| ir.cpp:2210:41:2210:42 | StoreValue | r2210_12 | -| ir.cpp:2210:41:2210:42 | Unary | r2210_11 | -| ir.cpp:2210:41:2210:43 | Load | ~m2210_55 | -| ir.cpp:2210:41:2210:43 | StoreValue | r2210_56 | -| ir.cpp:2211:11:2211:11 | Address | &:r2211_1 | -| ir.cpp:2211:11:2211:11 | Left | r2211_2 | -| ir.cpp:2211:11:2211:11 | Load | m2210_57 | -| ir.cpp:2211:11:2211:16 | Condition | r2211_4 | -| ir.cpp:2211:16:2211:16 | Right | r2211_3 | +| ir.cpp:2141:13:2141:15 | CallTarget | func:r2141_2 | +| ir.cpp:2141:13:2141:15 | ChiPartial | partial:m2141_6 | +| ir.cpp:2141:13:2141:15 | ChiTotal | total:m2140_4 | +| ir.cpp:2141:13:2141:15 | SideEffect | ~m2140_4 | +| ir.cpp:2141:13:2141:15 | StoreValue | r2141_5 | +| ir.cpp:2141:17:2141:17 | Arg(0) | 0:r2141_3 | +| ir.cpp:2141:19:2141:19 | Arg(1) | 1:r2141_4 | +| ir.cpp:2142:9:2142:9 | Address | &:r2142_1 | +| ir.cpp:2142:9:2142:9 | Left | r2142_2 | +| ir.cpp:2142:9:2142:9 | Load | m2141_8 | +| ir.cpp:2142:9:2142:14 | Condition | r2142_4 | +| ir.cpp:2142:14:2142:14 | Right | r2142_3 | +| ir.cpp:2143:9:2143:12 | CallTarget | func:r2143_1 | +| ir.cpp:2143:9:2143:12 | ChiPartial | partial:m2143_4 | +| ir.cpp:2143:9:2143:12 | ChiTotal | total:m2141_7 | +| ir.cpp:2143:9:2143:12 | SideEffect | ~m2141_7 | +| ir.cpp:2143:14:2143:14 | Arg(0) | 0:r2143_2 | +| ir.cpp:2144:5:2144:12 | CallTarget | func:r2144_1 | +| ir.cpp:2144:5:2144:12 | ChiPartial | partial:m2144_3 | +| ir.cpp:2144:5:2144:12 | ChiTotal | total:m2141_7 | +| ir.cpp:2144:5:2144:12 | SideEffect | ~m2141_7 | +| ir.cpp:2145:5:2145:13 | Address | &:r2145_1 | +| ir.cpp:2145:12:2145:12 | Address | &:r2145_2 | +| ir.cpp:2145:12:2145:12 | Load | m2141_8 | +| ir.cpp:2145:12:2145:12 | StoreValue | r2145_3 | +| ir.cpp:2148:6:2148:17 | ChiPartial | partial:m2148_3 | +| ir.cpp:2148:6:2148:17 | ChiTotal | total:m2148_2 | +| ir.cpp:2149:5:2149:12 | CallTarget | func:r2149_1 | +| ir.cpp:2149:5:2149:12 | ChiPartial | partial:m2149_3 | +| ir.cpp:2149:5:2149:12 | ChiTotal | total:m2148_4 | +| ir.cpp:2149:5:2149:12 | SideEffect | ~m2148_4 | +| ir.cpp:2150:5:2150:8 | CallTarget | func:r2150_1 | +| ir.cpp:2150:5:2150:8 | ChiPartial | partial:m2150_4 | +| ir.cpp:2150:5:2150:8 | ChiTotal | total:m2149_4 | +| ir.cpp:2150:5:2150:8 | SideEffect | ~m2149_4 | +| ir.cpp:2150:10:2150:10 | Arg(0) | 0:r2150_2 | +| ir.cpp:2153:5:2153:16 | Address | &:r2153_6 | +| ir.cpp:2153:5:2153:16 | ChiPartial | partial:m2153_3 | +| ir.cpp:2153:5:2153:16 | ChiTotal | total:m2153_2 | +| ir.cpp:2153:5:2153:16 | Load | m2158_4 | +| ir.cpp:2153:5:2153:16 | SideEffect | ~m2157_4 | +| ir.cpp:2154:9:2154:9 | Address | &:r2154_1 | +| ir.cpp:2154:13:2154:15 | CallTarget | func:r2154_2 | +| ir.cpp:2154:13:2154:15 | ChiPartial | partial:m2154_6 | +| ir.cpp:2154:13:2154:15 | ChiTotal | total:m2153_4 | +| ir.cpp:2154:13:2154:15 | SideEffect | ~m2153_4 | +| ir.cpp:2154:13:2154:15 | StoreValue | r2154_5 | +| ir.cpp:2154:17:2154:17 | Arg(0) | 0:r2154_3 | +| ir.cpp:2154:19:2154:19 | Arg(1) | 1:r2154_4 | +| ir.cpp:2155:9:2155:9 | Address | &:r2155_1 | +| ir.cpp:2155:9:2155:9 | Left | r2155_2 | +| ir.cpp:2155:9:2155:9 | Load | m2154_8 | +| ir.cpp:2155:9:2155:14 | Condition | r2155_4 | +| ir.cpp:2155:14:2155:14 | Right | r2155_3 | +| ir.cpp:2156:9:2156:20 | CallTarget | func:r2156_1 | +| ir.cpp:2157:5:2157:12 | CallTarget | func:r2157_1 | +| ir.cpp:2157:5:2157:12 | ChiPartial | partial:m2157_3 | +| ir.cpp:2157:5:2157:12 | ChiTotal | total:m2154_7 | +| ir.cpp:2157:5:2157:12 | SideEffect | ~m2154_7 | +| ir.cpp:2158:5:2158:13 | Address | &:r2158_1 | +| ir.cpp:2158:12:2158:12 | Address | &:r2158_2 | +| ir.cpp:2158:12:2158:12 | Load | m2154_8 | +| ir.cpp:2158:12:2158:12 | StoreValue | r2158_3 | +| ir.cpp:2161:6:2161:24 | ChiPartial | partial:m2161_3 | +| ir.cpp:2161:6:2161:24 | ChiTotal | total:m2161_2 | +| ir.cpp:2161:6:2161:24 | SideEffect | ~m2167_8 | +| ir.cpp:2161:33:2161:33 | Address | &:r2161_5 | +| ir.cpp:2162:3:2162:12 | Address | &:r2162_6 | +| ir.cpp:2162:3:2162:12 | Arg(0) | 0:r2162_5 | +| ir.cpp:2162:3:2162:12 | CallTarget | func:r2162_1 | +| ir.cpp:2162:3:2162:12 | ChiPartial | partial:m2162_7 | +| ir.cpp:2162:3:2162:12 | ChiTotal | total:m2161_4 | +| ir.cpp:2162:3:2162:12 | Right | r2162_4 | +| ir.cpp:2162:3:2162:12 | SideEffect | ~m2161_4 | +| ir.cpp:2162:3:2162:12 | Unary | r2162_6 | +| ir.cpp:2162:11:2162:11 | Address | &:r2162_2 | +| ir.cpp:2162:11:2162:11 | Left | r2162_3 | +| ir.cpp:2162:11:2162:11 | Load | m2161_6 | +| ir.cpp:2163:3:2163:18 | Address | &:r2163_7 | +| ir.cpp:2163:3:2163:18 | Arg(0) | 0:r2163_5 | +| ir.cpp:2163:3:2163:18 | CallTarget | func:r2163_1 | +| ir.cpp:2163:3:2163:18 | ChiPartial | partial:m2163_8 | +| ir.cpp:2163:3:2163:18 | ChiTotal | total:m2162_8 | +| ir.cpp:2163:3:2163:18 | Right | r2163_4 | +| ir.cpp:2163:3:2163:18 | SideEffect | ~m2162_8 | +| ir.cpp:2163:3:2163:18 | Unary | r2163_7 | +| ir.cpp:2163:7:2163:10 | Arg(1) | 1:r2163_6 | +| ir.cpp:2163:17:2163:17 | Address | &:r2163_2 | +| ir.cpp:2163:17:2163:17 | Left | r2163_3 | +| ir.cpp:2163:17:2163:17 | Load | m2161_6 | +| ir.cpp:2164:3:2164:15 | Address | &:r2164_6 | +| ir.cpp:2164:3:2164:15 | Arg(0) | 0:r2164_5 | +| ir.cpp:2164:3:2164:15 | CallTarget | func:r2164_1 | +| ir.cpp:2164:3:2164:15 | ChiPartial | partial:m2164_7 | +| ir.cpp:2164:3:2164:15 | ChiTotal | total:m2163_9 | +| ir.cpp:2164:3:2164:15 | Right | r2164_4 | +| ir.cpp:2164:3:2164:15 | SideEffect | ~m2163_9 | +| ir.cpp:2164:3:2164:15 | Unary | r2164_6 | +| ir.cpp:2164:14:2164:14 | Address | &:r2164_2 | +| ir.cpp:2164:14:2164:14 | Left | r2164_3 | +| ir.cpp:2164:14:2164:14 | Load | m2161_6 | +| ir.cpp:2165:3:2165:20 | Address | &:r2165_7 | +| ir.cpp:2165:3:2165:20 | Arg(0) | 0:r2165_5 | +| ir.cpp:2165:3:2165:20 | CallTarget | func:r2165_1 | +| ir.cpp:2165:3:2165:20 | ChiPartial | partial:m2165_8 | +| ir.cpp:2165:3:2165:20 | ChiTotal | total:m2164_8 | +| ir.cpp:2165:3:2165:20 | Right | r2165_4 | +| ir.cpp:2165:3:2165:20 | SideEffect | ~m2164_8 | +| ir.cpp:2165:3:2165:20 | Unary | r2165_7 | +| ir.cpp:2165:19:2165:19 | Address | &:r2165_2 | +| ir.cpp:2165:19:2165:19 | Left | r2165_3 | +| ir.cpp:2165:19:2165:19 | Load | m2161_6 | +| ir.cpp:2165:21:2165:21 | Arg(1) | 1:r2165_6 | +| ir.cpp:2166:3:2166:36 | Address | &:r2166_6 | +| ir.cpp:2166:3:2166:36 | Arg(0) | 0:r2166_5 | +| ir.cpp:2166:3:2166:36 | CallTarget | func:r2166_1 | +| ir.cpp:2166:3:2166:36 | ChiPartial | partial:m2166_7 | +| ir.cpp:2166:3:2166:36 | ChiTotal | total:m2165_9 | +| ir.cpp:2166:3:2166:36 | Right | r2166_4 | +| ir.cpp:2166:3:2166:36 | SideEffect | ~m2165_9 | +| ir.cpp:2166:3:2166:36 | Unary | r2166_6 | +| ir.cpp:2166:35:2166:35 | Address | &:r2166_2 | +| ir.cpp:2166:35:2166:35 | Left | r2166_3 | +| ir.cpp:2166:35:2166:35 | Load | m2161_6 | +| ir.cpp:2167:3:2167:24 | Address | &:r2167_6 | +| ir.cpp:2167:3:2167:24 | Arg(0) | 0:r2167_5 | +| ir.cpp:2167:3:2167:24 | CallTarget | func:r2167_1 | +| ir.cpp:2167:3:2167:24 | ChiPartial | partial:m2167_7 | +| ir.cpp:2167:3:2167:24 | ChiTotal | total:m2166_8 | +| ir.cpp:2167:3:2167:24 | Right | r2167_4 | +| ir.cpp:2167:3:2167:24 | SideEffect | ~m2166_8 | +| ir.cpp:2167:3:2167:24 | Unary | r2167_6 | +| ir.cpp:2167:11:2167:11 | Address | &:r2167_2 | +| ir.cpp:2167:11:2167:11 | Left | r2167_3 | +| ir.cpp:2167:11:2167:11 | Load | m2161_6 | +| ir.cpp:2172:7:2172:17 | Address | &:r2172_10 | +| ir.cpp:2172:7:2172:17 | ChiPartial | partial:m2172_3 | +| ir.cpp:2172:7:2172:17 | ChiTotal | total:m2172_2 | +| ir.cpp:2172:7:2172:17 | Load | m2175_4 | +| ir.cpp:2172:7:2172:17 | SideEffect | m2172_3 | +| ir.cpp:2172:25:2172:25 | Address | &:r2172_5 | +| ir.cpp:2172:25:2172:25 | Address | &:r2172_5 | +| ir.cpp:2172:25:2172:25 | Address | &:r2172_7 | +| ir.cpp:2172:25:2172:25 | Address | &:r2172_7 | +| ir.cpp:2172:25:2172:25 | Load | m2172_6 | +| ir.cpp:2172:25:2172:25 | SideEffect | m2172_8 | +| ir.cpp:2173:9:2173:11 | Address | &:r2173_1 | +| ir.cpp:2174:10:2174:10 | Address | &:r2174_1 | +| ir.cpp:2174:14:2174:19 | CallTarget | func:r2174_2 | +| ir.cpp:2174:14:2174:19 | StoreValue | r2174_8 | +| ir.cpp:2174:21:2174:21 | Address | &:r2174_3 | +| ir.cpp:2174:21:2174:21 | Address | &:r2174_5 | +| ir.cpp:2174:21:2174:21 | Arg(0) | 0:r2174_5 | +| ir.cpp:2174:21:2174:21 | Load | m2172_6 | +| ir.cpp:2174:21:2174:21 | SideEffect | ~m2172_8 | +| ir.cpp:2174:21:2174:21 | Unary | r2174_4 | +| ir.cpp:2174:24:2174:27 | Address | &:r2174_7 | +| ir.cpp:2174:24:2174:27 | Arg(1) | 1:r2174_7 | +| ir.cpp:2174:24:2174:27 | ChiPartial | partial:m2174_10 | +| ir.cpp:2174:24:2174:27 | ChiTotal | total:m2173_2 | +| ir.cpp:2174:25:2174:27 | Unary | r2174_6 | +| ir.cpp:2175:3:2175:13 | Address | &:r2175_1 | +| ir.cpp:2175:10:2175:12 | Address | &:r2175_2 | +| ir.cpp:2175:10:2175:12 | Load | m2174_11 | +| ir.cpp:2175:10:2175:12 | StoreValue | r2175_3 | +| ir.cpp:2182:6:2182:39 | ChiPartial | partial:m2182_3 | +| ir.cpp:2182:6:2182:39 | ChiTotal | total:m2182_2 | +| ir.cpp:2182:6:2182:39 | SideEffect | ~m2183_8 | +| ir.cpp:2183:6:2183:42 | Address | &:r2183_1 | +| ir.cpp:2183:6:2183:42 | Condition | r2183_12 | +| ir.cpp:2183:22:2183:22 | Address | &:r2183_4 | +| ir.cpp:2183:22:2183:22 | Address | &:r2183_4 | +| ir.cpp:2183:22:2183:22 | Arg(this) | this:r2183_4 | +| ir.cpp:2183:22:2183:22 | CallTarget | func:r2183_5 | +| ir.cpp:2183:22:2183:22 | ChiPartial | partial:m2183_7 | +| ir.cpp:2183:22:2183:22 | ChiPartial | partial:m2183_10 | +| ir.cpp:2183:22:2183:22 | ChiTotal | total:m2182_4 | +| ir.cpp:2183:22:2183:22 | ChiTotal | total:m2183_3 | +| ir.cpp:2183:22:2183:22 | SideEffect | m2183_3 | +| ir.cpp:2183:22:2183:22 | SideEffect | ~m2182_4 | +| ir.cpp:2183:22:2183:22 | Unary | r2183_6 | +| ir.cpp:2183:25:2183:42 | StoreValue | r2183_2 | +| ir.cpp:2186:7:2186:7 | Address | &:r2186_5 | +| ir.cpp:2186:7:2186:7 | Address | &:r2186_5 | +| ir.cpp:2186:7:2186:7 | Address | &:r2186_7 | +| ir.cpp:2186:7:2186:7 | Address | &:r2186_7 | +| ir.cpp:2186:7:2186:7 | Address | &:r2186_9 | +| ir.cpp:2186:7:2186:7 | Address | &:r2186_10 | +| ir.cpp:2186:7:2186:7 | Address | &:r2186_13 | +| ir.cpp:2186:7:2186:7 | ChiPartial | partial:m2186_3 | +| ir.cpp:2186:7:2186:7 | ChiPartial | partial:m2186_15 | +| ir.cpp:2186:7:2186:7 | ChiTotal | total:m2186_2 | +| ir.cpp:2186:7:2186:7 | ChiTotal | total:m2186_8 | +| ir.cpp:2186:7:2186:7 | Load | m0_2 | +| ir.cpp:2186:7:2186:7 | Load | m2186_6 | +| ir.cpp:2186:7:2186:7 | Load | ~m0_4 | +| ir.cpp:2186:7:2186:7 | SideEffect | m2186_3 | +| ir.cpp:2186:7:2186:7 | SideEffect | m2186_16 | +| ir.cpp:2186:7:2186:7 | StoreValue | r2186_14 | +| ir.cpp:2186:7:2186:7 | Unary | m2186_6 | +| ir.cpp:2186:7:2186:7 | Unary | r2186_11 | +| ir.cpp:2186:7:2186:7 | Unary | r2186_12 | +| ir.cpp:2189:5:2189:23 | Address | &:r2189_5 | +| ir.cpp:2189:5:2189:23 | Address | &:r2189_5 | +| ir.cpp:2189:5:2189:23 | Address | &:r2189_7 | +| ir.cpp:2189:5:2189:23 | Address | &:r2189_7 | +| ir.cpp:2189:5:2189:23 | ChiPartial | partial:m2189_3 | +| ir.cpp:2189:5:2189:23 | ChiTotal | total:m2189_2 | +| ir.cpp:2189:5:2189:23 | Load | m2189_6 | +| ir.cpp:2189:5:2189:23 | SideEffect | m2189_20 | +| ir.cpp:2189:5:2189:23 | SideEffect | ~m2189_13 | +| ir.cpp:2189:29:2189:29 | Address | &:r2189_16 | +| ir.cpp:2189:29:2189:29 | Address | &:r2189_18 | +| ir.cpp:2189:29:2189:29 | Load | m2189_6 | +| ir.cpp:2189:29:2189:29 | Unary | r2189_17 | +| ir.cpp:2189:29:2189:40 | ChiPartial | partial:m2189_19 | +| ir.cpp:2189:29:2189:40 | ChiTotal | total:m2189_8 | +| ir.cpp:2189:33:2189:40 | Address | &:r2189_11 | +| ir.cpp:2189:33:2189:40 | Arg(0) | 0:r2189_10 | +| ir.cpp:2189:33:2189:40 | CallTarget | func:r2189_9 | +| ir.cpp:2189:33:2189:40 | ChiPartial | partial:m2189_12 | +| ir.cpp:2189:33:2189:40 | ChiTotal | total:m2189_4 | +| ir.cpp:2189:33:2189:40 | SideEffect | ~m2189_4 | +| ir.cpp:2189:33:2189:40 | StoreValue | r2189_15 | +| ir.cpp:2189:33:2189:40 | Unary | r2189_11 | +| ir.cpp:2190:5:2190:24 | Address | &:r2190_5 | +| ir.cpp:2190:5:2190:24 | Address | &:r2190_5 | +| ir.cpp:2190:5:2190:24 | Address | &:r2190_7 | +| ir.cpp:2190:5:2190:24 | Address | &:r2190_7 | +| ir.cpp:2190:5:2190:24 | ChiPartial | partial:m2190_3 | +| ir.cpp:2190:5:2190:24 | ChiTotal | total:m2190_2 | +| ir.cpp:2190:5:2190:24 | Load | m2190_6 | +| ir.cpp:2190:5:2190:24 | SideEffect | m2190_8 | +| ir.cpp:2190:5:2190:24 | SideEffect | ~m2190_16 | +| ir.cpp:2190:30:2190:37 | CallTarget | func:r2190_9 | +| ir.cpp:2190:30:2190:37 | ChiPartial | partial:m2190_15 | +| ir.cpp:2190:30:2190:37 | ChiTotal | total:m2190_4 | +| ir.cpp:2190:30:2190:37 | SideEffect | ~m2190_4 | +| ir.cpp:2190:37:2190:37 | Address | &:r2190_10 | +| ir.cpp:2190:37:2190:37 | Address | &:r2190_12 | +| ir.cpp:2190:37:2190:37 | Arg(0) | 0:r2190_13 | +| ir.cpp:2190:37:2190:37 | Load | m2190_6 | +| ir.cpp:2190:37:2190:37 | Load | ~m2190_8 | +| ir.cpp:2190:37:2190:37 | Unary | r2190_11 | +| ir.cpp:2192:10:2192:14 | Address | &:r2192_5 | +| ir.cpp:2192:10:2192:14 | Address | &:r2192_5 | +| ir.cpp:2192:10:2192:14 | Address | &:r2192_7 | +| ir.cpp:2192:10:2192:14 | Address | &:r2192_7 | +| ir.cpp:2192:10:2192:14 | ChiPartial | partial:m2192_3 | +| ir.cpp:2192:10:2192:14 | ChiTotal | total:m2192_2 | +| ir.cpp:2192:10:2192:14 | Load | m2192_6 | +| ir.cpp:2192:10:2192:14 | SideEffect | m2192_8 | +| ir.cpp:2192:10:2192:14 | SideEffect | ~m2192_19 | +| ir.cpp:2192:21:2192:21 | Address | &:r2192_9 | +| ir.cpp:2192:26:2192:27 | Address | &:r2192_17 | +| ir.cpp:2192:26:2192:31 | ChiPartial | partial:m2192_18 | +| ir.cpp:2192:26:2192:31 | ChiTotal | total:m2192_4 | +| ir.cpp:2192:27:2192:27 | Address | &:r2192_13 | +| ir.cpp:2192:27:2192:27 | Address | &:r2192_15 | +| ir.cpp:2192:27:2192:27 | Load | m2192_6 | +| ir.cpp:2192:27:2192:27 | Load | ~m2192_8 | +| ir.cpp:2192:27:2192:27 | Unary | r2192_14 | +| ir.cpp:2192:27:2192:27 | Unary | r2192_16 | +| ir.cpp:2192:31:2192:31 | Address | &:r2192_11 | +| ir.cpp:2192:31:2192:31 | Load | m2192_10 | +| ir.cpp:2192:31:2192:31 | StoreValue | r2192_12 | +| ir.cpp:2193:10:2193:14 | Address | &:r2193_5 | +| ir.cpp:2193:10:2193:14 | Address | &:r2193_5 | +| ir.cpp:2193:10:2193:14 | Address | &:r2193_7 | +| ir.cpp:2193:10:2193:14 | Address | &:r2193_7 | +| ir.cpp:2193:10:2193:14 | Address | &:r2193_17 | +| ir.cpp:2193:10:2193:14 | ChiPartial | partial:m2193_3 | +| ir.cpp:2193:10:2193:14 | ChiTotal | total:m2193_2 | +| ir.cpp:2193:10:2193:14 | Load | m2193_6 | +| ir.cpp:2193:10:2193:14 | Load | m2193_15 | +| ir.cpp:2193:10:2193:14 | SideEffect | m2193_3 | +| ir.cpp:2193:10:2193:14 | SideEffect | m2193_8 | +| ir.cpp:2193:20:2193:29 | Address | &:r2193_9 | +| ir.cpp:2193:27:2193:28 | Load | ~m2193_4 | +| ir.cpp:2193:27:2193:28 | StoreValue | r2193_14 | +| ir.cpp:2193:28:2193:28 | Address | &:r2193_10 | +| ir.cpp:2193:28:2193:28 | Address | &:r2193_12 | +| ir.cpp:2193:28:2193:28 | Address | &:r2193_13 | +| ir.cpp:2193:28:2193:28 | Load | m2193_6 | +| ir.cpp:2193:28:2193:28 | Load | ~m2193_8 | +| ir.cpp:2193:28:2193:28 | Unary | r2193_11 | +| ir.cpp:2196:16:2196:50 | Address | &:r2196_3 | +| ir.cpp:2196:16:2196:50 | SideEffect | ~m2196_6 | +| ir.cpp:2196:54:2196:57 | ChiPartial | partial:m2196_5 | +| ir.cpp:2196:54:2196:57 | ChiTotal | total:m2196_2 | +| ir.cpp:2196:54:2196:57 | StoreValue | r2196_4 | +| ir.cpp:2198:6:2198:35 | ChiPartial | partial:m2198_3 | +| ir.cpp:2198:6:2198:35 | ChiTotal | total:m2198_2 | +| ir.cpp:2198:6:2198:35 | Phi | from 13:~m2233_5 | +| ir.cpp:2198:6:2198:35 | Phi | from 19:~m2233_13 | +| ir.cpp:2198:6:2198:35 | Phi | from 23:~m2233_22 | +| ir.cpp:2198:6:2198:35 | SideEffect | ~m2198_9 | +| ir.cpp:2198:42:2198:42 | Address | &:r2198_5 | +| ir.cpp:2198:50:2198:50 | Address | &:r2198_7 | +| ir.cpp:2199:29:2199:29 | Address | &:r2199_1 | +| ir.cpp:2199:29:2199:29 | Address | &:r2199_1 | +| ir.cpp:2199:29:2199:29 | Arg(this) | this:r2199_1 | +| ir.cpp:2199:29:2199:29 | CallTarget | func:r2199_3 | +| ir.cpp:2199:29:2199:29 | ChiPartial | partial:m2199_5 | +| ir.cpp:2199:29:2199:29 | ChiPartial | partial:m2199_7 | +| ir.cpp:2199:29:2199:29 | ChiTotal | total:m2198_4 | +| ir.cpp:2199:29:2199:29 | ChiTotal | total:m2199_2 | +| ir.cpp:2199:29:2199:29 | SideEffect | ~m2198_4 | +| ir.cpp:2199:32:2199:32 | Address | &:r2199_9 | +| ir.cpp:2199:32:2199:32 | Condition | r2199_10 | +| ir.cpp:2199:32:2199:32 | Load | m2198_6 | +| ir.cpp:2200:9:2200:9 | Address | &:r2200_1 | +| ir.cpp:2200:9:2200:9 | Address | &:r2200_1 | +| ir.cpp:2200:9:2200:9 | Arg(this) | this:r2200_1 | +| ir.cpp:2200:9:2200:9 | ChiPartial | partial:m2200_8 | +| ir.cpp:2200:9:2200:9 | ChiTotal | total:m2199_8 | +| ir.cpp:2200:9:2200:9 | SideEffect | m2199_8 | +| ir.cpp:2200:11:2200:15 | CallTarget | func:r2200_2 | +| ir.cpp:2200:11:2200:15 | ChiPartial | partial:m2200_5 | +| ir.cpp:2200:11:2200:15 | ChiTotal | total:m2199_6 | +| ir.cpp:2200:11:2200:15 | SideEffect | ~m2199_6 | +| ir.cpp:2200:17:2200:19 | Arg(0) | 0:r2200_3 | +| ir.cpp:2200:21:2200:21 | Address | &:r2200_10 | +| ir.cpp:2200:21:2200:21 | Address | &:r2200_10 | +| ir.cpp:2200:21:2200:21 | Arg(this) | this:r2200_10 | +| ir.cpp:2200:21:2200:21 | CallTarget | func:r2200_11 | +| ir.cpp:2200:21:2200:21 | ChiPartial | partial:m2200_13 | +| ir.cpp:2200:21:2200:21 | ChiPartial | partial:m2200_16 | +| ir.cpp:2200:21:2200:21 | ChiTotal | total:m2200_6 | +| ir.cpp:2200:21:2200:21 | ChiTotal | total:m2200_9 | +| ir.cpp:2200:21:2200:21 | SideEffect | m2200_9 | +| ir.cpp:2200:21:2200:21 | SideEffect | ~m2200_6 | +| ir.cpp:2202:39:2202:39 | Address | &:r2202_2 | +| ir.cpp:2202:39:2202:39 | Address | &:r2202_2 | +| ir.cpp:2202:39:2202:39 | Arg(this) | this:r2202_2 | +| ir.cpp:2202:39:2202:39 | CallTarget | func:r2202_4 | +| ir.cpp:2202:39:2202:39 | ChiPartial | partial:m2202_6 | +| ir.cpp:2202:39:2202:39 | ChiPartial | partial:m2202_8 | +| ir.cpp:2202:39:2202:39 | ChiTotal | total:m2202_1 | +| ir.cpp:2202:39:2202:39 | ChiTotal | total:m2202_3 | +| ir.cpp:2202:39:2202:39 | Phi | from 0:~m2199_6 | +| ir.cpp:2202:39:2202:39 | Phi | from 2:~m2200_14 | +| ir.cpp:2202:39:2202:39 | SideEffect | ~m2202_1 | +| ir.cpp:2202:42:2202:76 | Condition | r2202_10 | +| ir.cpp:2203:9:2203:9 | Address | &:r2203_1 | +| ir.cpp:2203:9:2203:9 | Address | &:r2203_1 | +| ir.cpp:2203:9:2203:9 | Arg(this) | this:r2203_1 | +| ir.cpp:2203:9:2203:9 | ChiPartial | partial:m2203_8 | +| ir.cpp:2203:9:2203:9 | ChiTotal | total:m2202_9 | +| ir.cpp:2203:9:2203:9 | SideEffect | m2202_9 | +| ir.cpp:2203:11:2203:15 | CallTarget | func:r2203_2 | +| ir.cpp:2203:11:2203:15 | ChiPartial | partial:m2203_5 | +| ir.cpp:2203:11:2203:15 | ChiTotal | total:m2202_7 | +| ir.cpp:2203:11:2203:15 | SideEffect | ~m2202_7 | +| ir.cpp:2203:17:2203:19 | Arg(0) | 0:r2203_3 | +| ir.cpp:2205:32:2205:32 | Address | &:r2205_1 | +| ir.cpp:2205:32:2205:32 | Address | &:r2205_1 | +| ir.cpp:2205:32:2205:32 | Arg(this) | this:r2205_1 | +| ir.cpp:2205:32:2205:32 | CallTarget | func:r2205_3 | +| ir.cpp:2205:32:2205:32 | ChiPartial | partial:m2205_5 | +| ir.cpp:2205:32:2205:32 | ChiPartial | partial:m2205_7 | +| ir.cpp:2205:32:2205:32 | ChiTotal | total:m2203_6 | +| ir.cpp:2205:32:2205:32 | ChiTotal | total:m2205_2 | +| ir.cpp:2205:32:2205:32 | SideEffect | ~m2203_6 | +| ir.cpp:2205:35:2205:35 | Address | &:r2205_9 | +| ir.cpp:2205:35:2205:35 | Condition | r2205_11 | +| ir.cpp:2205:35:2205:35 | Load | m2198_8 | +| ir.cpp:2205:35:2205:35 | Unary | r2205_10 | +| ir.cpp:2207:11:2207:11 | Address | &:r2207_1 | +| ir.cpp:2207:11:2207:11 | Address | &:r2207_1 | +| ir.cpp:2207:11:2207:11 | Arg(this) | this:r2207_1 | +| ir.cpp:2207:11:2207:11 | ChiPartial | partial:m2207_8 | +| ir.cpp:2207:11:2207:11 | ChiTotal | total:m2205_8 | +| ir.cpp:2207:11:2207:11 | SideEffect | m2205_8 | +| ir.cpp:2207:13:2207:17 | CallTarget | func:r2207_2 | +| ir.cpp:2207:13:2207:17 | ChiPartial | partial:m2207_5 | +| ir.cpp:2207:13:2207:17 | ChiTotal | total:m2205_6 | +| ir.cpp:2207:13:2207:17 | SideEffect | ~m2205_6 | +| ir.cpp:2207:19:2207:21 | Arg(0) | 0:r2207_3 | +| ir.cpp:2210:11:2210:11 | Address | &:r2210_1 | +| ir.cpp:2210:11:2210:11 | Address | &:r2210_1 | +| ir.cpp:2210:11:2210:11 | Arg(this) | this:r2210_1 | +| ir.cpp:2210:11:2210:11 | ChiPartial | partial:m2210_8 | +| ir.cpp:2210:11:2210:11 | ChiTotal | total:m2205_8 | +| ir.cpp:2210:11:2210:11 | SideEffect | m2205_8 | +| ir.cpp:2210:13:2210:17 | CallTarget | func:r2210_2 | +| ir.cpp:2210:13:2210:17 | ChiPartial | partial:m2210_5 | +| ir.cpp:2210:13:2210:17 | ChiTotal | total:m2205_6 | +| ir.cpp:2210:13:2210:17 | SideEffect | ~m2205_6 | +| ir.cpp:2210:19:2210:21 | Arg(0) | 0:r2210_3 | +| ir.cpp:2212:5:2212:5 | Phi | from 5:~m2207_6 | +| ir.cpp:2212:5:2212:5 | Phi | from 6:~m2210_6 | +| ir.cpp:2214:25:2214:25 | Address | &:r2214_1 | +| ir.cpp:2214:25:2214:25 | Address | &:r2214_1 | +| ir.cpp:2214:25:2214:25 | Arg(this) | this:r2214_1 | +| ir.cpp:2214:25:2214:25 | CallTarget | func:r2214_3 | +| ir.cpp:2214:25:2214:25 | ChiPartial | partial:m2214_5 | +| ir.cpp:2214:25:2214:25 | ChiPartial | partial:m2214_7 | +| ir.cpp:2214:25:2214:25 | ChiTotal | total:m2212_1 | +| ir.cpp:2214:25:2214:25 | ChiTotal | total:m2214_2 | +| ir.cpp:2214:25:2214:25 | SideEffect | ~m2212_1 | | ir.cpp:2215:5:2215:5 | Address | &:r2215_14 | | ir.cpp:2215:5:2215:5 | Address | &:r2215_18 | | ir.cpp:2215:5:2215:5 | Address | &:r2215_24 | @@ -11496,15 +11221,15 @@ | ir.cpp:2215:45:2215:45 | Address | &:r2215_4 | | ir.cpp:2215:45:2215:45 | Address | &:r2215_5 | | ir.cpp:2215:45:2215:45 | Arg(0) | 0:r2215_8 | -| ir.cpp:2215:45:2215:45 | Load | m2200_8 | +| ir.cpp:2215:45:2215:45 | Load | m2214_8 | | ir.cpp:2215:45:2215:45 | Load | m2215_7 | | ir.cpp:2215:45:2215:45 | StoreValue | r2215_6 | | ir.cpp:2215:45:2215:46 | CallTarget | func:r2215_3 | | ir.cpp:2215:45:2215:46 | ChiPartial | partial:m2215_10 | | ir.cpp:2215:45:2215:46 | ChiPartial | partial:m2215_12 | -| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2210_39 | +| ir.cpp:2215:45:2215:46 | ChiTotal | total:m2214_6 | | ir.cpp:2215:45:2215:46 | ChiTotal | total:m2215_2 | -| ir.cpp:2215:45:2215:46 | SideEffect | ~m2210_39 | +| ir.cpp:2215:45:2215:46 | SideEffect | ~m2214_6 | | ir.cpp:2215:69:2215:69 | Address | &:r2215_45 | | ir.cpp:2215:69:2215:69 | Address | &:r2215_53 | | ir.cpp:2215:69:2215:69 | Address | &:r2215_53 | @@ -11512,20 +11237,20 @@ | ir.cpp:2215:69:2215:69 | CallTarget | func:r2215_54 | | ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_56 | | ir.cpp:2215:69:2215:69 | ChiPartial | partial:m2215_59 | -| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2215_52 | -| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2218_13 | -| ir.cpp:2215:69:2215:69 | SideEffect | m2215_52 | -| ir.cpp:2215:69:2215:69 | SideEffect | ~m2218_13 | +| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2216_6 | +| ir.cpp:2215:69:2215:69 | ChiTotal | total:m2216_9 | +| ir.cpp:2215:69:2215:69 | SideEffect | m2216_9 | +| ir.cpp:2215:69:2215:69 | SideEffect | ~m2216_6 | | ir.cpp:2215:73:2215:73 | Address | &:r2215_19 | | ir.cpp:2215:73:2215:73 | Address | &:r2215_25 | | ir.cpp:2215:73:2215:73 | Address | &:r2215_48 | | ir.cpp:2215:73:2215:73 | Address | &:r2215_61 | | ir.cpp:2215:73:2215:73 | Address | &:r2215_61 | -| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_50 | -| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_53 | -| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_55 | -| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_56 | -| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_63 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_2 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_5 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_7 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_8 | +| ir.cpp:2215:73:2215:73 | Arg(this) | this:r0_15 | | ir.cpp:2215:73:2215:73 | Arg(this) | this:r2215_61 | | ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_21 | | ir.cpp:2215:73:2215:73 | CallTarget | func:r2215_27 | @@ -11539,7 +11264,7 @@ | ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_49 | | ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_64 | | ir.cpp:2215:73:2215:73 | ChiPartial | partial:m2215_67 | -| ir.cpp:2215:73:2215:73 | ChiTotal | total:m0_57 | +| ir.cpp:2215:73:2215:73 | ChiTotal | total:m0_9 | | ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_30 | | ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_31 | | ir.cpp:2215:73:2215:73 | ChiTotal | total:m2215_38 | @@ -11548,10 +11273,10 @@ | ir.cpp:2215:73:2215:73 | Condition | r2215_41 | | ir.cpp:2215:73:2215:73 | Load | m2215_17 | | ir.cpp:2215:73:2215:73 | Load | m2215_17 | -| ir.cpp:2215:73:2215:73 | Phi | from 20:m2215_23 | -| ir.cpp:2215:73:2215:73 | Phi | from 20:~m2215_11 | -| ir.cpp:2215:73:2215:73 | Phi | from 22:m2215_68 | -| ir.cpp:2215:73:2215:73 | Phi | from 22:~m2215_65 | +| ir.cpp:2215:73:2215:73 | Phi | from 7:m2215_23 | +| ir.cpp:2215:73:2215:73 | Phi | from 7:~m2215_11 | +| ir.cpp:2215:73:2215:73 | Phi | from 9:m2215_68 | +| ir.cpp:2215:73:2215:73 | Phi | from 9:~m2215_65 | | ir.cpp:2215:73:2215:73 | SideEffect | m2215_30 | | ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_31 | | ir.cpp:2215:73:2215:73 | SideEffect | ~m2215_38 | @@ -11569,688 +11294,749 @@ | ir.cpp:2215:73:2215:74 | Unary | r2215_15 | | ir.cpp:2215:73:2215:75 | Load | ~m2215_50 | | ir.cpp:2215:73:2215:75 | StoreValue | r2215_51 | -| ir.cpp:2216:27:2216:28 | Address | &:r2216_1 | -| ir.cpp:2216:27:2216:28 | Address | &:r2216_1 | -| ir.cpp:2216:27:2216:28 | Arg(this) | this:r2216_1 | -| ir.cpp:2216:27:2216:28 | CallTarget | func:r2216_3 | -| ir.cpp:2216:27:2216:28 | ChiPartial | partial:m2216_5 | -| ir.cpp:2216:27:2216:28 | ChiPartial | partial:m2216_7 | -| ir.cpp:2216:27:2216:28 | ChiTotal | total:m2215_50 | -| ir.cpp:2216:27:2216:28 | ChiTotal | total:m2216_2 | -| ir.cpp:2216:27:2216:28 | SideEffect | ~m2215_50 | -| ir.cpp:2217:27:2217:28 | Address | &:r2217_1 | -| ir.cpp:2217:27:2217:28 | Address | &:r2217_1 | -| ir.cpp:2217:27:2217:28 | Arg(this) | this:r2217_1 | -| ir.cpp:2217:27:2217:28 | CallTarget | func:r2217_3 | -| ir.cpp:2217:27:2217:28 | ChiPartial | partial:m2217_5 | -| ir.cpp:2217:27:2217:28 | ChiPartial | partial:m2217_7 | -| ir.cpp:2217:27:2217:28 | ChiTotal | total:m2216_6 | -| ir.cpp:2217:27:2217:28 | ChiTotal | total:m2217_2 | -| ir.cpp:2217:27:2217:28 | SideEffect | ~m2216_6 | -| ir.cpp:2218:5:2218:5 | Address | &:r2218_1 | -| ir.cpp:2218:5:2218:5 | Address | &:r2218_1 | -| ir.cpp:2218:5:2218:5 | Address | &:r2218_9 | -| ir.cpp:2218:5:2218:5 | Address | &:r2218_9 | -| ir.cpp:2218:5:2218:5 | Arg(this) | this:r2218_1 | -| ir.cpp:2218:5:2218:5 | Arg(this) | this:r2218_9 | -| ir.cpp:2218:5:2218:5 | CallTarget | func:r2218_2 | -| ir.cpp:2218:5:2218:5 | CallTarget | func:r2218_10 | -| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_4 | -| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_7 | -| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_12 | -| ir.cpp:2218:5:2218:5 | ChiPartial | partial:m2218_15 | -| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2216_8 | -| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2217_6 | -| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2217_8 | -| ir.cpp:2218:5:2218:5 | ChiTotal | total:m2218_5 | -| ir.cpp:2218:5:2218:5 | SideEffect | m2216_8 | -| ir.cpp:2218:5:2218:5 | SideEffect | m2217_8 | -| ir.cpp:2218:5:2218:5 | SideEffect | ~m2217_6 | -| ir.cpp:2218:5:2218:5 | SideEffect | ~m2218_5 | -| ir.cpp:2219:1:2219:1 | Address | &:r2219_1 | -| ir.cpp:2219:1:2219:1 | Address | &:r2219_1 | -| ir.cpp:2219:1:2219:1 | Address | &:r2219_9 | -| ir.cpp:2219:1:2219:1 | Address | &:r2219_9 | -| ir.cpp:2219:1:2219:1 | Address | &:r2219_18 | -| ir.cpp:2219:1:2219:1 | Address | &:r2219_18 | -| ir.cpp:2219:1:2219:1 | Arg(this) | this:r2219_1 | -| ir.cpp:2219:1:2219:1 | Arg(this) | this:r2219_9 | -| ir.cpp:2219:1:2219:1 | Arg(this) | this:r2219_18 | -| ir.cpp:2219:1:2219:1 | CallTarget | func:r2219_2 | -| ir.cpp:2219:1:2219:1 | CallTarget | func:r2219_10 | -| ir.cpp:2219:1:2219:1 | CallTarget | func:r2219_19 | -| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_4 | -| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_7 | -| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_12 | -| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_15 | -| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_21 | -| ir.cpp:2219:1:2219:1 | ChiPartial | partial:m2219_24 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2200_8 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2204_65 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2210_62 | -| ir.cpp:2219:1:2219:1 | ChiTotal | total:m2215_43 | -| ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | -| ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | -| ir.cpp:2219:1:2219:1 | SideEffect | m2200_8 | -| ir.cpp:2219:1:2219:1 | SideEffect | ~m2204_65 | -| ir.cpp:2219:1:2219:1 | SideEffect | ~m2210_62 | -| ir.cpp:2219:1:2219:1 | SideEffect | ~m2215_43 | -| ir.cpp:2221:6:2221:38 | ChiPartial | partial:m2221_3 | -| ir.cpp:2221:6:2221:38 | ChiTotal | total:m2221_2 | -| ir.cpp:2221:6:2221:38 | SideEffect | ~m2224_7 | -| ir.cpp:2222:25:2222:25 | Address | &:r2222_1 | -| ir.cpp:2222:25:2222:25 | Address | &:r2222_1 | -| ir.cpp:2222:25:2222:25 | Arg(this) | this:r2222_1 | -| ir.cpp:2222:25:2222:25 | CallTarget | func:r2222_3 | -| ir.cpp:2222:25:2222:25 | ChiPartial | partial:m2222_5 | -| ir.cpp:2222:25:2222:25 | ChiPartial | partial:m2222_7 | -| ir.cpp:2222:25:2222:25 | ChiTotal | total:m2221_4 | -| ir.cpp:2222:25:2222:25 | ChiTotal | total:m2222_2 | -| ir.cpp:2222:25:2222:25 | SideEffect | ~m2221_4 | -| ir.cpp:2223:32:2223:32 | Address | &:r2223_1 | -| ir.cpp:2223:32:2223:32 | Address | &:r2223_1 | -| ir.cpp:2223:32:2223:32 | Address | &:r2223_4 | -| ir.cpp:2223:32:2223:32 | Arg(this) | this:r2223_4 | -| ir.cpp:2223:32:2223:32 | ChiPartial | partial:m2223_6 | -| ir.cpp:2223:32:2223:32 | ChiTotal | total:m0_6 | -| ir.cpp:2223:32:2223:32 | Condition | r2223_2 | -| ir.cpp:2223:32:2223:32 | Load | ~m2222_6 | -| ir.cpp:2223:32:2223:32 | StoreValue | r2223_5 | -| ir.cpp:2224:1:2224:1 | Address | &:r2224_3 | -| ir.cpp:2224:1:2224:1 | Address | &:r2224_3 | -| ir.cpp:2224:1:2224:1 | Arg(this) | this:r2224_3 | -| ir.cpp:2224:1:2224:1 | CallTarget | func:r2224_4 | -| ir.cpp:2224:1:2224:1 | ChiPartial | partial:m2224_6 | -| ir.cpp:2224:1:2224:1 | ChiPartial | partial:m2224_9 | -| ir.cpp:2224:1:2224:1 | ChiTotal | total:m2222_8 | -| ir.cpp:2224:1:2224:1 | ChiTotal | total:m2224_1 | -| ir.cpp:2224:1:2224:1 | Phi | from 0:~m2222_6 | -| ir.cpp:2224:1:2224:1 | Phi | from 1:~m2223_7 | -| ir.cpp:2224:1:2224:1 | SideEffect | m2222_8 | -| ir.cpp:2224:1:2224:1 | SideEffect | ~m2224_1 | -| ir.cpp:2226:6:2226:38 | ChiPartial | partial:m2226_3 | -| ir.cpp:2226:6:2226:38 | ChiTotal | total:m2226_2 | -| ir.cpp:2226:6:2226:38 | SideEffect | ~m2229_6 | -| ir.cpp:2227:32:2227:32 | Address | &:r2227_1 | -| ir.cpp:2227:32:2227:32 | Address | &:r2227_1 | -| ir.cpp:2227:32:2227:32 | Address | &:r2227_4 | -| ir.cpp:2227:32:2227:32 | Arg(this) | this:r2227_4 | -| ir.cpp:2227:32:2227:32 | ChiPartial | partial:m2227_6 | -| ir.cpp:2227:32:2227:32 | ChiTotal | total:m0_6 | -| ir.cpp:2227:32:2227:32 | Condition | r2227_2 | -| ir.cpp:2227:32:2227:32 | Load | ~m2226_3 | -| ir.cpp:2227:32:2227:32 | StoreValue | r2227_5 | -| ir.cpp:2228:25:2228:25 | Address | &:r2228_2 | -| ir.cpp:2228:25:2228:25 | Address | &:r2228_2 | -| ir.cpp:2228:25:2228:25 | Arg(this) | this:r2228_2 | -| ir.cpp:2228:25:2228:25 | CallTarget | func:r2228_4 | -| ir.cpp:2228:25:2228:25 | ChiPartial | partial:m2228_6 | -| ir.cpp:2228:25:2228:25 | ChiPartial | partial:m2228_8 | -| ir.cpp:2228:25:2228:25 | ChiTotal | total:m2228_1 | -| ir.cpp:2228:25:2228:25 | ChiTotal | total:m2228_3 | -| ir.cpp:2228:25:2228:25 | Phi | from 0:~m2226_4 | -| ir.cpp:2228:25:2228:25 | Phi | from 1:~m2227_7 | -| ir.cpp:2228:25:2228:25 | SideEffect | ~m2228_1 | -| ir.cpp:2229:1:2229:1 | Address | &:r2229_2 | -| ir.cpp:2229:1:2229:1 | Address | &:r2229_2 | -| ir.cpp:2229:1:2229:1 | Arg(this) | this:r2229_2 | -| ir.cpp:2229:1:2229:1 | CallTarget | func:r2229_3 | -| ir.cpp:2229:1:2229:1 | ChiPartial | partial:m2229_5 | -| ir.cpp:2229:1:2229:1 | ChiPartial | partial:m2229_8 | -| ir.cpp:2229:1:2229:1 | ChiTotal | total:m2228_7 | -| ir.cpp:2229:1:2229:1 | ChiTotal | total:m2228_9 | -| ir.cpp:2229:1:2229:1 | SideEffect | m2228_9 | -| ir.cpp:2229:1:2229:1 | SideEffect | ~m2228_7 | -| ir.cpp:2231:6:2231:38 | ChiPartial | partial:m2231_3 | -| ir.cpp:2231:6:2231:38 | ChiTotal | total:m2231_2 | -| ir.cpp:2231:6:2231:38 | SideEffect | ~m2235_15 | -| ir.cpp:2232:25:2232:25 | Address | &:r2232_1 | -| ir.cpp:2232:25:2232:25 | Address | &:r2232_1 | -| ir.cpp:2232:25:2232:25 | Arg(this) | this:r2232_1 | -| ir.cpp:2232:25:2232:25 | CallTarget | func:r2232_3 | -| ir.cpp:2232:25:2232:25 | ChiPartial | partial:m2232_5 | -| ir.cpp:2232:25:2232:25 | ChiPartial | partial:m2232_7 | -| ir.cpp:2232:25:2232:25 | ChiTotal | total:m2231_4 | -| ir.cpp:2232:25:2232:25 | ChiTotal | total:m2232_2 | -| ir.cpp:2232:25:2232:25 | SideEffect | ~m2231_4 | -| ir.cpp:2233:25:2233:25 | Address | &:r2233_1 | -| ir.cpp:2233:25:2233:25 | Address | &:r2233_1 | -| ir.cpp:2233:25:2233:25 | Arg(this) | this:r2233_1 | -| ir.cpp:2233:25:2233:25 | CallTarget | func:r2233_3 | -| ir.cpp:2233:25:2233:25 | ChiPartial | partial:m2233_5 | -| ir.cpp:2233:25:2233:25 | ChiPartial | partial:m2233_7 | -| ir.cpp:2233:25:2233:25 | ChiTotal | total:m2232_6 | -| ir.cpp:2233:25:2233:25 | ChiTotal | total:m2233_2 | -| ir.cpp:2233:25:2233:25 | SideEffect | ~m2232_6 | -| ir.cpp:2234:32:2234:32 | Address | &:r2234_1 | -| ir.cpp:2234:32:2234:32 | Address | &:r2234_1 | -| ir.cpp:2234:32:2234:32 | Address | &:r2234_4 | -| ir.cpp:2234:32:2234:32 | Arg(this) | this:r2234_4 | -| ir.cpp:2234:32:2234:32 | ChiPartial | partial:m2234_6 | -| ir.cpp:2234:32:2234:32 | ChiTotal | total:m0_6 | -| ir.cpp:2234:32:2234:32 | Condition | r2234_2 | -| ir.cpp:2234:32:2234:32 | Load | ~m2233_6 | -| ir.cpp:2234:32:2234:32 | StoreValue | r2234_5 | -| ir.cpp:2235:1:2235:1 | Address | &:r2235_3 | -| ir.cpp:2235:1:2235:1 | Address | &:r2235_3 | -| ir.cpp:2235:1:2235:1 | Address | &:r2235_11 | -| ir.cpp:2235:1:2235:1 | Address | &:r2235_11 | -| ir.cpp:2235:1:2235:1 | Arg(this) | this:r2235_3 | -| ir.cpp:2235:1:2235:1 | Arg(this) | this:r2235_11 | -| ir.cpp:2235:1:2235:1 | CallTarget | func:r2235_4 | -| ir.cpp:2235:1:2235:1 | CallTarget | func:r2235_12 | -| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_6 | -| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_9 | -| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_14 | -| ir.cpp:2235:1:2235:1 | ChiPartial | partial:m2235_17 | -| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2232_8 | -| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2233_8 | -| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2235_1 | -| ir.cpp:2235:1:2235:1 | ChiTotal | total:m2235_7 | -| ir.cpp:2235:1:2235:1 | Phi | from 0:~m2233_6 | -| ir.cpp:2235:1:2235:1 | Phi | from 1:~m2234_7 | -| ir.cpp:2235:1:2235:1 | SideEffect | m2232_8 | -| ir.cpp:2235:1:2235:1 | SideEffect | m2233_8 | -| ir.cpp:2235:1:2235:1 | SideEffect | ~m2235_1 | -| ir.cpp:2235:1:2235:1 | SideEffect | ~m2235_7 | -| ir.cpp:2237:28:2237:55 | Address | &:r2237_3 | -| ir.cpp:2237:28:2237:55 | Arg(this) | this:r2237_3 | -| ir.cpp:2237:28:2237:55 | CallTarget | func:r2237_4 | -| ir.cpp:2237:28:2237:55 | ChiPartial | partial:m2237_6 | -| ir.cpp:2237:28:2237:55 | ChiPartial | partial:m2237_8 | -| ir.cpp:2237:28:2237:55 | ChiTotal | total:m2237_2 | -| ir.cpp:2237:28:2237:55 | ChiTotal | total:m2237_7 | -| ir.cpp:2237:28:2237:55 | SideEffect | ~m2237_2 | -| ir.cpp:2237:28:2237:55 | SideEffect | ~m2237_9 | -| ir.cpp:2241:8:2241:8 | Address | &:r2241_16 | -| ir.cpp:2241:8:2241:8 | Address | &:r2241_16 | -| ir.cpp:2241:8:2241:8 | ChiPartial | partial:m2241_3 | -| ir.cpp:2241:8:2241:8 | ChiPartial | partial:m2241_3 | -| ir.cpp:2241:8:2241:8 | ChiTotal | total:m2241_2 | -| ir.cpp:2241:8:2241:8 | ChiTotal | total:m2241_2 | -| ir.cpp:2241:8:2241:8 | Load | m2241_14 | -| ir.cpp:2241:8:2241:8 | Load | m2241_14 | -| ir.cpp:2241:8:2241:8 | SideEffect | m2241_3 | -| ir.cpp:2241:8:2241:8 | SideEffect | m2241_3 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_5 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | -| ir.cpp:2241:15:2241:15 | Address | &:r2241_7 | -| ir.cpp:2241:15:2241:15 | Load | m2241_6 | -| ir.cpp:2241:15:2241:15 | Load | m2241_6 | -| ir.cpp:2241:15:2241:15 | SideEffect | m2241_8 | -| ir.cpp:2241:15:2241:15 | SideEffect | m2241_8 | -| ir.cpp:2241:20:2241:28 | Address | &:r2241_9 | -| ir.cpp:2241:20:2241:28 | Address | &:r2241_9 | -| ir.cpp:2241:27:2241:27 | Address | &:r2241_10 | -| ir.cpp:2241:27:2241:27 | Address | &:r2241_10 | -| ir.cpp:2241:27:2241:27 | Load | m2241_6 | -| ir.cpp:2241:27:2241:27 | Load | m2241_6 | -| ir.cpp:2241:27:2241:27 | StoreValue | r2241_13 | -| ir.cpp:2241:27:2241:27 | StoreValue | r2241_13 | -| ir.cpp:2241:27:2241:27 | Unary | r2241_11 | -| ir.cpp:2241:27:2241:27 | Unary | r2241_11 | -| ir.cpp:2241:27:2241:27 | Unary | r2241_12 | -| ir.cpp:2241:27:2241:27 | Unary | r2241_12 | -| ir.cpp:2244:10:2244:10 | ChiPartial | partial:m2244_3 | -| ir.cpp:2244:10:2244:10 | ChiPartial | partial:m2244_3 | -| ir.cpp:2244:10:2244:10 | ChiTotal | total:m2244_2 | -| ir.cpp:2244:10:2244:10 | ChiTotal | total:m2244_2 | -| ir.cpp:2244:10:2244:10 | SideEffect | ~m2245_8 | -| ir.cpp:2244:10:2244:10 | SideEffect | ~m2245_16 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_5 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | -| ir.cpp:2244:29:2244:29 | Address | &:r2244_7 | -| ir.cpp:2244:29:2244:29 | Load | m2244_6 | -| ir.cpp:2244:29:2244:29 | Load | m2244_6 | -| ir.cpp:2244:29:2244:29 | SideEffect | m2245_11 | -| ir.cpp:2244:29:2244:29 | SideEffect | m2245_19 | -| ir.cpp:2245:9:2245:11 | CallTarget | func:r2245_1 | -| ir.cpp:2245:9:2245:11 | CallTarget | func:r2245_1 | -| ir.cpp:2245:9:2245:11 | ChiPartial | partial:m2245_7 | -| ir.cpp:2245:9:2245:11 | ChiPartial | partial:m2245_7 | -| ir.cpp:2245:9:2245:11 | ChiTotal | total:m2244_4 | -| ir.cpp:2245:9:2245:11 | ChiTotal | total:m2244_4 | -| ir.cpp:2245:9:2245:11 | SideEffect | ~m2244_4 | -| ir.cpp:2245:9:2245:11 | SideEffect | ~m2244_4 | -| ir.cpp:2245:9:2245:11 | Unary | r2245_6 | -| ir.cpp:2245:9:2245:11 | Unary | r2245_6 | -| ir.cpp:2245:12:2245:15 | Address | &:r2245_12 | -| ir.cpp:2245:12:2245:15 | Address | &:r2245_12 | -| ir.cpp:2245:12:2245:15 | ChiPartial | partial:m2245_18 | -| ir.cpp:2245:12:2245:15 | ChiTotal | total:m2245_11 | -| ir.cpp:2245:12:2245:15 | SideEffect | ~m2245_11 | -| ir.cpp:2245:13:2245:13 | Address | &:r2245_2 | -| ir.cpp:2245:13:2245:13 | Address | &:r2245_2 | -| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | -| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | -| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | -| ir.cpp:2245:13:2245:13 | Address | &:r2245_5 | -| ir.cpp:2245:13:2245:13 | Arg(0) | 0:r2245_5 | -| ir.cpp:2245:13:2245:13 | Arg(0) | 0:r2245_5 | -| ir.cpp:2245:13:2245:13 | ChiPartial | partial:m2245_10 | -| ir.cpp:2245:13:2245:13 | ChiPartial | partial:m2245_10 | -| ir.cpp:2245:13:2245:13 | ChiTotal | total:m2244_8 | -| ir.cpp:2245:13:2245:13 | ChiTotal | total:m2244_8 | -| ir.cpp:2245:13:2245:13 | Load | m2244_6 | -| ir.cpp:2245:13:2245:13 | Load | m2244_6 | -| ir.cpp:2245:13:2245:13 | SideEffect | ~m2244_8 | -| ir.cpp:2245:13:2245:13 | SideEffect | ~m2244_8 | -| ir.cpp:2245:13:2245:13 | Unary | r2245_3 | -| ir.cpp:2245:13:2245:13 | Unary | r2245_3 | -| ir.cpp:2245:13:2245:13 | Unary | r2245_4 | -| ir.cpp:2245:13:2245:13 | Unary | r2245_4 | -| ir.cpp:2245:16:2245:17 | CallTarget | func:r2245_13 | -| ir.cpp:2245:16:2245:17 | ChiPartial | partial:m2245_15 | -| ir.cpp:2245:16:2245:17 | ChiTotal | total:m2245_8 | -| ir.cpp:2245:16:2245:17 | SideEffect | ~m2245_8 | -| ir.cpp:2248:10:2248:36 | ChiPartial | partial:m2248_3 | -| ir.cpp:2248:10:2248:36 | ChiTotal | total:m2248_2 | -| ir.cpp:2248:10:2248:36 | SideEffect | ~m2251_6 | -| ir.cpp:2249:29:2249:29 | Address | &:r2249_1 | -| ir.cpp:2249:29:2249:29 | Address | &:r2249_1 | -| ir.cpp:2249:29:2249:29 | Arg(this) | this:r2249_1 | -| ir.cpp:2249:29:2249:29 | CallTarget | func:r2249_3 | -| ir.cpp:2249:29:2249:29 | ChiPartial | partial:m2249_5 | -| ir.cpp:2249:29:2249:29 | ChiPartial | partial:m2249_7 | -| ir.cpp:2249:29:2249:29 | ChiTotal | total:m2248_4 | -| ir.cpp:2249:29:2249:29 | ChiTotal | total:m2249_2 | -| ir.cpp:2249:29:2249:29 | SideEffect | ~m2248_4 | -| ir.cpp:2250:9:2250:23 | CallTarget | func:r2250_1 | -| ir.cpp:2250:9:2250:23 | ChiPartial | partial:m2250_5 | -| ir.cpp:2250:9:2250:23 | ChiTotal | total:m2249_6 | -| ir.cpp:2250:9:2250:23 | SideEffect | ~m2249_6 | -| ir.cpp:2250:25:2250:25 | Address | &:r2250_3 | -| ir.cpp:2250:25:2250:25 | Address | &:r2250_3 | -| ir.cpp:2250:25:2250:25 | Arg(0) | 0:r2250_3 | -| ir.cpp:2250:25:2250:25 | ChiPartial | partial:m2250_8 | -| ir.cpp:2250:25:2250:25 | ChiTotal | total:m2249_8 | -| ir.cpp:2250:25:2250:25 | SideEffect | ~m2249_8 | -| ir.cpp:2250:25:2250:25 | Unary | r2250_2 | -| ir.cpp:2251:5:2251:5 | Address | &:r2251_2 | -| ir.cpp:2251:5:2251:5 | Address | &:r2251_2 | -| ir.cpp:2251:5:2251:5 | Arg(this) | this:r2251_2 | -| ir.cpp:2251:5:2251:5 | CallTarget | func:r2251_3 | -| ir.cpp:2251:5:2251:5 | ChiPartial | partial:m2251_5 | -| ir.cpp:2251:5:2251:5 | ChiPartial | partial:m2251_8 | -| ir.cpp:2251:5:2251:5 | ChiTotal | total:m2250_6 | -| ir.cpp:2251:5:2251:5 | ChiTotal | total:m2250_9 | -| ir.cpp:2251:5:2251:5 | SideEffect | m2250_9 | -| ir.cpp:2251:5:2251:5 | SideEffect | ~m2250_6 | -| ir.cpp:2253:10:2253:32 | ChiPartial | partial:m2253_3 | -| ir.cpp:2253:10:2253:32 | ChiTotal | total:m2253_2 | -| ir.cpp:2253:10:2253:32 | SideEffect | ~m2255_6 | -| ir.cpp:2254:13:2254:13 | Address | &:r2254_1 | -| ir.cpp:2255:9:2255:23 | CallTarget | func:r2255_1 | -| ir.cpp:2255:9:2255:23 | ChiPartial | partial:m2255_5 | -| ir.cpp:2255:9:2255:23 | ChiTotal | total:m2253_4 | -| ir.cpp:2255:9:2255:23 | SideEffect | ~m2253_4 | -| ir.cpp:2255:25:2255:25 | Address | &:r2255_3 | -| ir.cpp:2255:25:2255:25 | Address | &:r2255_3 | -| ir.cpp:2255:25:2255:25 | Arg(0) | 0:r2255_3 | -| ir.cpp:2255:25:2255:25 | ChiPartial | partial:m2255_8 | -| ir.cpp:2255:25:2255:25 | ChiTotal | total:m2254_2 | -| ir.cpp:2255:25:2255:25 | SideEffect | ~m2254_2 | -| ir.cpp:2255:25:2255:25 | Unary | r2255_2 | -| ir.cpp:2259:6:2259:24 | ChiPartial | partial:m2259_3 | -| ir.cpp:2259:6:2259:24 | ChiTotal | total:m2259_2 | -| ir.cpp:2259:6:2259:24 | Phi | from 2:~m2259_10 | -| ir.cpp:2259:6:2259:24 | Phi | from 6:~m2268_8 | -| ir.cpp:2259:6:2259:24 | Phi | from 9:~m2261_6 | -| ir.cpp:2259:6:2259:24 | Phi | from 10:~m2275_1 | -| ir.cpp:2259:6:2259:24 | SideEffect | ~m2259_7 | -| ir.cpp:2259:31:2259:31 | Address | &:r2259_5 | -| ir.cpp:2261:12:2261:12 | Address | &:r2261_1 | -| ir.cpp:2261:12:2261:12 | Address | &:r2261_1 | -| ir.cpp:2261:12:2261:12 | Arg(this) | this:r2261_1 | -| ir.cpp:2261:12:2261:12 | CallTarget | func:r2261_3 | -| ir.cpp:2261:12:2261:12 | ChiPartial | partial:m2261_5 | -| ir.cpp:2261:12:2261:12 | ChiPartial | partial:m2261_7 | -| ir.cpp:2261:12:2261:12 | ChiTotal | total:m2259_4 | -| ir.cpp:2261:12:2261:12 | ChiTotal | total:m2261_2 | -| ir.cpp:2261:12:2261:12 | SideEffect | ~m2259_4 | -| ir.cpp:2262:9:2262:9 | Address | &:r2262_1 | -| ir.cpp:2262:9:2262:9 | Condition | r2262_2 | -| ir.cpp:2262:9:2262:9 | Load | m2259_6 | -| ir.cpp:2263:7:2263:28 | Address | &:r2263_1 | -| ir.cpp:2263:7:2263:28 | Address | &:r2263_1 | -| ir.cpp:2263:7:2263:28 | Load | m2263_4 | -| ir.cpp:2263:13:2263:28 | StoreValue | r2263_3 | -| ir.cpp:2263:13:2263:28 | Unary | r2263_2 | -| ir.cpp:2265:12:2265:13 | Address | &:r2265_1 | -| ir.cpp:2265:12:2265:13 | Address | &:r2265_1 | -| ir.cpp:2265:12:2265:13 | Arg(this) | this:r2265_1 | -| ir.cpp:2265:12:2265:13 | CallTarget | func:r2265_3 | -| ir.cpp:2265:12:2265:13 | ChiPartial | partial:m2265_5 | -| ir.cpp:2265:12:2265:13 | ChiPartial | partial:m2265_7 | -| ir.cpp:2265:12:2265:13 | ChiTotal | total:m2261_6 | -| ir.cpp:2265:12:2265:13 | ChiTotal | total:m2265_2 | -| ir.cpp:2265:12:2265:13 | SideEffect | ~m2261_6 | -| ir.cpp:2266:3:2266:3 | Address | &:r2266_1 | -| ir.cpp:2266:3:2266:3 | Address | &:r2266_1 | -| ir.cpp:2266:3:2266:3 | Address | &:r2266_9 | -| ir.cpp:2266:3:2266:3 | Address | &:r2266_9 | -| ir.cpp:2266:3:2266:3 | Arg(this) | this:r2266_1 | -| ir.cpp:2266:3:2266:3 | Arg(this) | this:r2266_9 | -| ir.cpp:2266:3:2266:3 | CallTarget | func:r2266_2 | -| ir.cpp:2266:3:2266:3 | CallTarget | func:r2266_10 | -| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_4 | -| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_7 | -| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_12 | -| ir.cpp:2266:3:2266:3 | ChiPartial | partial:m2266_15 | -| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2261_8 | -| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2265_6 | -| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2265_8 | -| ir.cpp:2266:3:2266:3 | ChiTotal | total:m2266_5 | -| ir.cpp:2266:3:2266:3 | SideEffect | m2261_8 | -| ir.cpp:2266:3:2266:3 | SideEffect | m2265_8 | -| ir.cpp:2266:3:2266:3 | SideEffect | ~m2265_6 | -| ir.cpp:2266:3:2266:3 | SideEffect | ~m2266_5 | -| ir.cpp:2267:22:2267:22 | Address | &:r2267_2 | -| ir.cpp:2267:22:2267:22 | Address | &:r2267_2 | -| ir.cpp:2267:22:2267:22 | Address | &:r2267_4 | -| ir.cpp:2267:22:2267:22 | Load | m2267_3 | -| ir.cpp:2268:5:2268:19 | Address | &:r2268_1 | -| ir.cpp:2268:5:2268:19 | Address | &:r2268_1 | -| ir.cpp:2268:5:2268:19 | Address | &:r2268_1 | -| ir.cpp:2268:5:2268:19 | Arg(this) | this:r2268_1 | -| ir.cpp:2268:5:2268:19 | CallTarget | func:r2268_3 | -| ir.cpp:2268:5:2268:19 | ChiPartial | partial:m2268_7 | -| ir.cpp:2268:5:2268:19 | ChiPartial | partial:m2268_10 | -| ir.cpp:2268:5:2268:19 | ChiTotal | total:m2261_6 | -| ir.cpp:2268:5:2268:19 | ChiTotal | total:m2268_2 | -| ir.cpp:2268:5:2268:19 | Load | m2268_11 | -| ir.cpp:2268:5:2268:19 | SideEffect | ~m2261_6 | -| ir.cpp:2268:18:2268:18 | Address | &:r2268_4 | -| ir.cpp:2268:18:2268:18 | Address | &:r2268_5 | -| ir.cpp:2268:18:2268:18 | Arg(0) | 0:r2268_5 | -| ir.cpp:2268:18:2268:18 | Load | m2267_3 | -| ir.cpp:2268:18:2268:18 | SideEffect | ~m2267_5 | -| ir.cpp:2270:24:2270:24 | Address | &:r2270_2 | -| ir.cpp:2270:24:2270:24 | Address | &:r2270_2 | -| ir.cpp:2270:24:2270:24 | Address | &:r2270_4 | -| ir.cpp:2270:24:2270:24 | Load | m2270_3 | -| ir.cpp:2275:1:2275:1 | Phi | from 4:~m2266_13 | -| ir.cpp:2275:1:2275:1 | Phi | from 8:~m2261_6 | -| ir.cpp:2277:6:2277:18 | ChiPartial | partial:m2277_3 | -| ir.cpp:2277:6:2277:18 | ChiTotal | total:m2277_2 | -| ir.cpp:2277:6:2277:18 | SideEffect | ~m2285_14 | -| ir.cpp:2277:25:2277:25 | Address | &:r2277_5 | -| ir.cpp:2278:12:2278:13 | Address | &:r2278_1 | -| ir.cpp:2278:12:2278:13 | Address | &:r2278_1 | -| ir.cpp:2278:12:2278:13 | Arg(this) | this:r2278_1 | -| ir.cpp:2278:12:2278:13 | CallTarget | func:r2278_3 | -| ir.cpp:2278:12:2278:13 | ChiPartial | partial:m2278_5 | -| ir.cpp:2278:12:2278:13 | ChiPartial | partial:m2278_7 | -| ir.cpp:2278:12:2278:13 | ChiTotal | total:m2277_4 | -| ir.cpp:2278:12:2278:13 | ChiTotal | total:m2278_2 | -| ir.cpp:2278:12:2278:13 | SideEffect | ~m2277_4 | -| ir.cpp:2279:8:2279:8 | Address | &:r2279_1 | -| ir.cpp:2279:8:2279:8 | Condition | r2279_2 | -| ir.cpp:2279:8:2279:8 | Load | m2277_6 | -| ir.cpp:2280:16:2280:17 | Address | &:r2280_1 | -| ir.cpp:2280:16:2280:17 | Address | &:r2280_1 | -| ir.cpp:2280:16:2280:17 | Arg(this) | this:r2280_1 | -| ir.cpp:2280:16:2280:17 | CallTarget | func:r2280_3 | -| ir.cpp:2280:16:2280:17 | ChiPartial | partial:m2280_5 | -| ir.cpp:2280:16:2280:17 | ChiPartial | partial:m2280_7 | -| ir.cpp:2280:16:2280:17 | ChiTotal | total:m2278_6 | -| ir.cpp:2280:16:2280:17 | ChiTotal | total:m2280_2 | -| ir.cpp:2280:16:2280:17 | SideEffect | ~m2278_6 | -| ir.cpp:2281:5:2281:5 | Address | &:r2281_1 | -| ir.cpp:2281:5:2281:5 | Address | &:r2281_1 | -| ir.cpp:2281:5:2281:5 | Arg(this) | this:r2281_1 | -| ir.cpp:2281:5:2281:5 | CallTarget | func:r2281_2 | -| ir.cpp:2281:5:2281:5 | ChiPartial | partial:m2281_4 | -| ir.cpp:2281:5:2281:5 | ChiPartial | partial:m2281_7 | -| ir.cpp:2281:5:2281:5 | ChiTotal | total:m2280_6 | -| ir.cpp:2281:5:2281:5 | ChiTotal | total:m2280_8 | -| ir.cpp:2281:5:2281:5 | SideEffect | m2280_8 | -| ir.cpp:2281:5:2281:5 | SideEffect | ~m2280_6 | -| ir.cpp:2282:16:2282:17 | Address | &:r2282_1 | -| ir.cpp:2282:16:2282:17 | Address | &:r2282_1 | -| ir.cpp:2282:16:2282:17 | Arg(this) | this:r2282_1 | -| ir.cpp:2282:16:2282:17 | CallTarget | func:r2282_3 | -| ir.cpp:2282:16:2282:17 | ChiPartial | partial:m2282_5 | -| ir.cpp:2282:16:2282:17 | ChiPartial | partial:m2282_7 | -| ir.cpp:2282:16:2282:17 | ChiTotal | total:m2278_6 | -| ir.cpp:2282:16:2282:17 | ChiTotal | total:m2282_2 | -| ir.cpp:2282:16:2282:17 | SideEffect | ~m2278_6 | -| ir.cpp:2283:5:2283:5 | Address | &:r2283_1 | -| ir.cpp:2283:5:2283:5 | Address | &:r2283_1 | -| ir.cpp:2283:5:2283:5 | Arg(this) | this:r2283_1 | -| ir.cpp:2283:5:2283:5 | CallTarget | func:r2283_2 | -| ir.cpp:2283:5:2283:5 | ChiPartial | partial:m2283_4 | -| ir.cpp:2283:5:2283:5 | ChiPartial | partial:m2283_7 | -| ir.cpp:2283:5:2283:5 | ChiTotal | total:m2282_6 | -| ir.cpp:2283:5:2283:5 | ChiTotal | total:m2282_8 | -| ir.cpp:2283:5:2283:5 | SideEffect | m2282_8 | -| ir.cpp:2283:5:2283:5 | SideEffect | ~m2282_6 | -| ir.cpp:2284:12:2284:13 | Address | &:r2284_2 | -| ir.cpp:2284:12:2284:13 | Address | &:r2284_2 | -| ir.cpp:2284:12:2284:13 | Arg(this) | this:r2284_2 | -| ir.cpp:2284:12:2284:13 | CallTarget | func:r2284_4 | -| ir.cpp:2284:12:2284:13 | ChiPartial | partial:m2284_6 | -| ir.cpp:2284:12:2284:13 | ChiPartial | partial:m2284_8 | -| ir.cpp:2284:12:2284:13 | ChiTotal | total:m2284_1 | -| ir.cpp:2284:12:2284:13 | ChiTotal | total:m2284_3 | -| ir.cpp:2284:12:2284:13 | Phi | from 1:~m2281_5 | -| ir.cpp:2284:12:2284:13 | Phi | from 2:~m2283_5 | -| ir.cpp:2284:12:2284:13 | SideEffect | ~m2284_1 | -| ir.cpp:2285:1:2285:1 | Address | &:r2285_2 | -| ir.cpp:2285:1:2285:1 | Address | &:r2285_2 | -| ir.cpp:2285:1:2285:1 | Address | &:r2285_10 | -| ir.cpp:2285:1:2285:1 | Address | &:r2285_10 | -| ir.cpp:2285:1:2285:1 | Arg(this) | this:r2285_2 | -| ir.cpp:2285:1:2285:1 | Arg(this) | this:r2285_10 | -| ir.cpp:2285:1:2285:1 | CallTarget | func:r2285_3 | -| ir.cpp:2285:1:2285:1 | CallTarget | func:r2285_11 | -| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_5 | -| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_8 | -| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_13 | -| ir.cpp:2285:1:2285:1 | ChiPartial | partial:m2285_16 | -| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2278_8 | -| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2284_7 | -| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2284_9 | -| ir.cpp:2285:1:2285:1 | ChiTotal | total:m2285_6 | -| ir.cpp:2285:1:2285:1 | SideEffect | m2278_8 | -| ir.cpp:2285:1:2285:1 | SideEffect | m2284_9 | -| ir.cpp:2285:1:2285:1 | SideEffect | ~m2284_7 | -| ir.cpp:2285:1:2285:1 | SideEffect | ~m2285_6 | -| ir.cpp:2287:6:2287:19 | ChiPartial | partial:m2287_3 | -| ir.cpp:2287:6:2287:19 | ChiTotal | total:m2287_2 | -| ir.cpp:2287:6:2287:19 | SideEffect | ~m2297_54 | -| ir.cpp:2288:10:2288:10 | Address | &:r2288_1 | -| ir.cpp:2288:13:2288:16 | StoreValue | r2288_2 | -| ir.cpp:2289:16:2289:16 | Address | &:r2289_1 | -| ir.cpp:2289:16:2289:16 | Address | &:r2289_1 | -| ir.cpp:2289:16:2289:16 | Address | &:r2289_31 | -| ir.cpp:2289:16:2289:16 | Address | &:r2289_31 | -| ir.cpp:2289:16:2289:16 | Arg(this) | this:r2289_1 | -| ir.cpp:2289:16:2289:16 | Arg(this) | this:r2289_31 | -| ir.cpp:2289:16:2289:16 | CallTarget | func:r2289_32 | -| ir.cpp:2289:16:2289:16 | ChiPartial | partial:m2289_34 | -| ir.cpp:2289:16:2289:16 | ChiPartial | partial:m2289_37 | -| ir.cpp:2289:16:2289:16 | ChiTotal | total:m2289_12 | -| ir.cpp:2289:16:2289:16 | ChiTotal | total:m2289_13 | -| ir.cpp:2289:16:2289:16 | SideEffect | m2289_12 | -| ir.cpp:2289:16:2289:16 | SideEffect | ~m2289_13 | -| ir.cpp:2289:18:2289:24 | Address | &:r2289_5 | -| ir.cpp:2289:18:2289:24 | Arg(0) | 0:r2289_5 | -| ir.cpp:2289:18:2289:24 | SideEffect | ~m2287_3 | -| ir.cpp:2289:18:2289:24 | Unary | r2289_4 | -| ir.cpp:2289:18:2289:25 | CallTarget | func:r2289_3 | -| ir.cpp:2289:18:2289:25 | ChiPartial | partial:m2289_7 | -| ir.cpp:2289:18:2289:25 | ChiPartial | partial:m2289_10 | -| ir.cpp:2289:18:2289:25 | ChiTotal | total:m2287_4 | -| ir.cpp:2289:18:2289:25 | ChiTotal | total:m2289_2 | -| ir.cpp:2289:18:2289:25 | SideEffect | ~m2287_4 | -| ir.cpp:2289:28:2289:28 | Address | &:r2289_15 | -| ir.cpp:2289:28:2289:28 | Left | r2289_17 | -| ir.cpp:2289:28:2289:28 | Load | m2289_14 | -| ir.cpp:2289:28:2289:28 | Phi | from 0:m2288_3 | -| ir.cpp:2289:28:2289:28 | Phi | from 0:m2289_11 | -| ir.cpp:2289:28:2289:28 | Phi | from 0:~m2289_8 | -| ir.cpp:2289:28:2289:28 | Phi | from 2:m2289_28 | -| ir.cpp:2289:28:2289:28 | Phi | from 2:m2289_30 | -| ir.cpp:2289:28:2289:28 | Phi | from 2:~m2289_25 | -| ir.cpp:2289:28:2289:28 | Unary | r2289_16 | -| ir.cpp:2289:28:2289:33 | Condition | r2289_19 | -| ir.cpp:2289:33:2289:33 | Right | r2289_18 | -| ir.cpp:2289:36:2289:36 | Address | &:r2289_29 | -| ir.cpp:2289:40:2289:40 | Address | &:r2289_21 | -| ir.cpp:2289:40:2289:40 | Address | &:r2289_21 | -| ir.cpp:2289:40:2289:40 | Arg(this) | this:r2289_21 | -| ir.cpp:2289:40:2289:40 | ChiPartial | partial:m2289_27 | -| ir.cpp:2289:40:2289:40 | ChiTotal | total:m2289_12 | -| ir.cpp:2289:40:2289:40 | SideEffect | m2289_12 | -| ir.cpp:2289:42:2289:49 | CallTarget | func:r2289_22 | -| ir.cpp:2289:42:2289:49 | ChiPartial | partial:m2289_24 | -| ir.cpp:2289:42:2289:49 | ChiTotal | total:m2291_5 | -| ir.cpp:2289:42:2289:49 | SideEffect | ~m2291_5 | -| ir.cpp:2289:42:2289:49 | StoreValue | r2289_23 | -| ir.cpp:2290:16:2290:17 | Address | &:r2290_1 | -| ir.cpp:2290:16:2290:17 | Address | &:r2290_1 | -| ir.cpp:2290:16:2290:17 | Arg(this) | this:r2290_1 | -| ir.cpp:2290:16:2290:17 | CallTarget | func:r2290_3 | -| ir.cpp:2290:16:2290:17 | ChiPartial | partial:m2290_5 | -| ir.cpp:2290:16:2290:17 | ChiPartial | partial:m2290_7 | -| ir.cpp:2290:16:2290:17 | ChiTotal | total:m2289_13 | -| ir.cpp:2290:16:2290:17 | ChiTotal | total:m2290_2 | -| ir.cpp:2290:16:2290:17 | SideEffect | ~m2289_13 | -| ir.cpp:2291:5:2291:5 | Address | &:r2291_1 | -| ir.cpp:2291:5:2291:5 | Address | &:r2291_1 | -| ir.cpp:2291:5:2291:5 | Arg(this) | this:r2291_1 | -| ir.cpp:2291:5:2291:5 | CallTarget | func:r2291_2 | -| ir.cpp:2291:5:2291:5 | ChiPartial | partial:m2291_4 | -| ir.cpp:2291:5:2291:5 | ChiPartial | partial:m2291_7 | -| ir.cpp:2291:5:2291:5 | ChiTotal | total:m2290_6 | -| ir.cpp:2291:5:2291:5 | ChiTotal | total:m2290_8 | -| ir.cpp:2291:5:2291:5 | SideEffect | m2290_8 | -| ir.cpp:2291:5:2291:5 | SideEffect | ~m2290_6 | -| ir.cpp:2293:5:2293:5 | Address | &:r2293_1 | -| ir.cpp:2293:5:2293:5 | Address | &:r2293_24 | -| ir.cpp:2293:5:2293:5 | Address | &:r2293_30 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_51 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_51 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_68 | -| ir.cpp:2293:16:2293:16 | Address | &:r2293_68 | -| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_51 | -| ir.cpp:2293:16:2293:16 | Arg(this) | this:r2293_68 | -| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_53 | -| ir.cpp:2293:16:2293:16 | CallTarget | func:r2293_69 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_63 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_66 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_71 | -| ir.cpp:2293:16:2293:16 | ChiPartial | partial:m2293_74 | -| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_52 | -| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_58 | -| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2293_67 | -| ir.cpp:2293:16:2293:16 | ChiTotal | total:m2295_5 | -| ir.cpp:2293:16:2293:16 | SideEffect | m2293_67 | -| ir.cpp:2293:16:2293:16 | SideEffect | ~m2293_58 | -| ir.cpp:2293:16:2293:16 | SideEffect | ~m2295_5 | -| ir.cpp:2293:20:2293:20 | Address | &:r2293_25 | -| ir.cpp:2293:20:2293:20 | Address | &:r2293_31 | -| ir.cpp:2293:20:2293:20 | Address | &:r2293_76 | -| ir.cpp:2293:20:2293:20 | Address | &:r2293_76 | -| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_2 | -| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_5 | -| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_7 | -| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_8 | -| ir.cpp:2293:20:2293:20 | Arg(this) | this:r0_15 | -| ir.cpp:2293:20:2293:20 | Arg(this) | this:r2293_76 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_27 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_33 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_39 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_40 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_55 | -| ir.cpp:2293:20:2293:20 | CallTarget | func:r2293_77 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_43 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_45 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_48 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_57 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_79 | -| ir.cpp:2293:20:2293:20 | ChiPartial | partial:m2293_82 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m0_9 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_36 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_37 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_44 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_49 | -| ir.cpp:2293:20:2293:20 | ChiTotal | total:m2293_72 | -| ir.cpp:2293:20:2293:20 | Condition | r2293_47 | -| ir.cpp:2293:20:2293:20 | Load | m2293_23 | -| ir.cpp:2293:20:2293:20 | Load | m2293_23 | -| ir.cpp:2293:20:2293:20 | Phi | from 3:m2293_29 | -| ir.cpp:2293:20:2293:20 | Phi | from 3:~m2293_19 | -| ir.cpp:2293:20:2293:20 | Phi | from 5:m2293_83 | -| ir.cpp:2293:20:2293:20 | Phi | from 5:~m2293_80 | -| ir.cpp:2293:20:2293:20 | SideEffect | m2293_36 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_37 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_44 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_49 | -| ir.cpp:2293:20:2293:20 | SideEffect | ~m2293_72 | -| ir.cpp:2293:20:2293:20 | StoreValue | r2293_28 | -| ir.cpp:2293:20:2293:20 | StoreValue | r2293_34 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_26 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_32 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_38 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_41 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_54 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_56 | -| ir.cpp:2293:20:2293:20 | Unary | r2293_78 | -| ir.cpp:2293:20:2293:55 | Address | &:r2293_2 | -| ir.cpp:2293:20:2293:55 | Address | &:r2293_2 | -| ir.cpp:2293:20:2293:55 | Arg(this) | this:r2293_2 | -| ir.cpp:2293:20:2293:55 | CallTarget | func:r2293_4 | -| ir.cpp:2293:20:2293:55 | ChiPartial | partial:m2293_18 | -| ir.cpp:2293:20:2293:55 | ChiPartial | partial:m2293_20 | -| ir.cpp:2293:20:2293:55 | ChiTotal | total:m2293_3 | -| ir.cpp:2293:20:2293:55 | ChiTotal | total:m2293_12 | -| ir.cpp:2293:20:2293:55 | SideEffect | ~m2293_12 | -| ir.cpp:2293:20:2293:55 | StoreValue | r2293_22 | -| ir.cpp:2293:20:2293:55 | Unary | r2293_2 | -| ir.cpp:2293:20:2293:56 | Address | &:r2293_61 | -| ir.cpp:2293:20:2293:56 | Arg(0) | 0:r2293_61 | -| ir.cpp:2293:20:2293:56 | SideEffect | ~m2293_64 | -| ir.cpp:2293:20:2293:56 | Unary | r2293_59 | -| ir.cpp:2293:20:2293:56 | Unary | r2293_60 | -| ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | -| ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | -| ir.cpp:2293:40:2293:54 | Address | &:r2293_5 | -| ir.cpp:2293:40:2293:54 | Arg(0) | 0:r2293_16 | -| ir.cpp:2293:40:2293:54 | Arg(this) | this:r2293_5 | -| ir.cpp:2293:40:2293:54 | CallTarget | func:r2293_7 | -| ir.cpp:2293:40:2293:54 | ChiPartial | partial:m2293_11 | -| ir.cpp:2293:40:2293:54 | ChiPartial | partial:m2293_14 | -| ir.cpp:2293:40:2293:54 | ChiTotal | total:m2289_35 | -| ir.cpp:2293:40:2293:54 | ChiTotal | total:m2293_6 | -| ir.cpp:2293:40:2293:54 | Load | m2293_15 | -| ir.cpp:2293:40:2293:54 | SideEffect | ~m2289_35 | -| ir.cpp:2293:47:2293:53 | Address | &:r2293_9 | -| ir.cpp:2293:47:2293:53 | Arg(0) | 0:r2293_9 | -| ir.cpp:2293:47:2293:53 | SideEffect | ~m2287_3 | -| ir.cpp:2293:47:2293:53 | Unary | r2293_8 | +| ir.cpp:2216:7:2216:7 | Address | &:r2216_1 | +| ir.cpp:2216:7:2216:7 | Address | &:r2216_1 | +| ir.cpp:2216:7:2216:7 | Arg(this) | this:r2216_1 | +| ir.cpp:2216:7:2216:7 | ChiPartial | partial:m2216_8 | +| ir.cpp:2216:7:2216:7 | ChiTotal | total:m2215_52 | +| ir.cpp:2216:7:2216:7 | SideEffect | m2215_52 | +| ir.cpp:2216:9:2216:13 | CallTarget | func:r2216_2 | +| ir.cpp:2216:9:2216:13 | ChiPartial | partial:m2216_5 | +| ir.cpp:2216:9:2216:13 | ChiTotal | total:m2215_50 | +| ir.cpp:2216:9:2216:13 | SideEffect | ~m2215_50 | +| ir.cpp:2216:15:2216:17 | Arg(0) | 0:r2216_3 | +| ir.cpp:2218:5:2218:5 | Address | &:r2218_14 | +| ir.cpp:2218:5:2218:5 | Address | &:r2218_18 | +| ir.cpp:2218:5:2218:5 | Address | &:r2218_24 | +| ir.cpp:2218:42:2218:43 | Address | &:r2218_1 | +| ir.cpp:2218:42:2218:43 | Address | &:r2218_1 | +| ir.cpp:2218:42:2218:43 | Address | &:r2218_61 | +| ir.cpp:2218:42:2218:43 | Address | &:r2218_61 | +| ir.cpp:2218:42:2218:43 | Arg(this) | this:r2218_1 | +| ir.cpp:2218:42:2218:43 | Arg(this) | this:r2218_61 | +| ir.cpp:2218:42:2218:43 | CallTarget | func:r2218_62 | +| ir.cpp:2218:42:2218:43 | ChiPartial | partial:m2218_64 | +| ir.cpp:2218:42:2218:43 | ChiPartial | partial:m2218_67 | +| ir.cpp:2218:42:2218:43 | ChiTotal | total:m2218_13 | +| ir.cpp:2218:42:2218:43 | ChiTotal | total:m2218_57 | +| ir.cpp:2218:42:2218:43 | SideEffect | m2218_13 | +| ir.cpp:2218:42:2218:43 | SideEffect | ~m2218_57 | +| ir.cpp:2218:45:2218:45 | Address | &:r2218_4 | +| ir.cpp:2218:45:2218:45 | Address | &:r2218_4 | +| ir.cpp:2218:45:2218:45 | Address | &:r2218_5 | +| ir.cpp:2218:45:2218:45 | Arg(0) | 0:r2218_8 | +| ir.cpp:2218:45:2218:45 | Load | m2214_8 | +| ir.cpp:2218:45:2218:45 | Load | m2218_7 | +| ir.cpp:2218:45:2218:45 | StoreValue | r2218_6 | +| ir.cpp:2218:45:2218:46 | CallTarget | func:r2218_3 | +| ir.cpp:2218:45:2218:46 | ChiPartial | partial:m2218_10 | +| ir.cpp:2218:45:2218:46 | ChiPartial | partial:m2218_12 | +| ir.cpp:2218:45:2218:46 | ChiTotal | total:m2215_43 | +| ir.cpp:2218:45:2218:46 | ChiTotal | total:m2218_2 | +| ir.cpp:2218:45:2218:46 | SideEffect | ~m2215_43 | +| ir.cpp:2218:69:2218:69 | Address | &:r2218_45 | +| ir.cpp:2218:69:2218:69 | Address | &:r2218_53 | +| ir.cpp:2218:69:2218:69 | Address | &:r2218_53 | +| ir.cpp:2218:69:2218:69 | Address | &:r2218_69 | +| ir.cpp:2218:69:2218:69 | Address | &:r2218_69 | +| ir.cpp:2218:69:2218:69 | Arg(this) | this:r2218_53 | +| ir.cpp:2218:69:2218:69 | Arg(this) | this:r2218_69 | +| ir.cpp:2218:69:2218:69 | CallTarget | func:r2218_54 | +| ir.cpp:2218:69:2218:69 | CallTarget | func:r2218_70 | +| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_56 | +| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_59 | +| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_72 | +| ir.cpp:2218:69:2218:69 | ChiPartial | partial:m2218_75 | +| ir.cpp:2218:69:2218:69 | ChiTotal | total:m2220_5 | +| ir.cpp:2218:69:2218:69 | ChiTotal | total:m2220_5 | +| ir.cpp:2218:69:2218:69 | ChiTotal | total:m2220_8 | +| ir.cpp:2218:69:2218:69 | ChiTotal | total:m2220_8 | +| ir.cpp:2218:69:2218:69 | SideEffect | m2220_8 | +| ir.cpp:2218:69:2218:69 | SideEffect | m2220_8 | +| ir.cpp:2218:69:2218:69 | SideEffect | ~m2220_5 | +| ir.cpp:2218:69:2218:69 | SideEffect | ~m2220_5 | +| ir.cpp:2218:73:2218:73 | Address | &:r2218_19 | +| ir.cpp:2218:73:2218:73 | Address | &:r2218_25 | +| ir.cpp:2218:73:2218:73 | Address | &:r2218_48 | +| ir.cpp:2218:73:2218:73 | Address | &:r2218_77 | +| ir.cpp:2218:73:2218:73 | Address | &:r2218_77 | +| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_18 | +| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_21 | +| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_23 | +| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_24 | +| ir.cpp:2218:73:2218:73 | Arg(this) | this:r0_31 | +| ir.cpp:2218:73:2218:73 | Arg(this) | this:r2218_77 | +| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_21 | +| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_27 | +| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_33 | +| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_34 | +| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_47 | +| ir.cpp:2218:73:2218:73 | CallTarget | func:r2218_78 | +| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_37 | +| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_39 | +| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_42 | +| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_49 | +| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_80 | +| ir.cpp:2218:73:2218:73 | ChiPartial | partial:m2218_83 | +| ir.cpp:2218:73:2218:73 | ChiTotal | total:m0_25 | +| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_30 | +| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_31 | +| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_38 | +| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_43 | +| ir.cpp:2218:73:2218:73 | ChiTotal | total:m2218_73 | +| ir.cpp:2218:73:2218:73 | Condition | r2218_41 | +| ir.cpp:2218:73:2218:73 | Load | m2218_17 | +| ir.cpp:2218:73:2218:73 | Load | m2218_17 | +| ir.cpp:2218:73:2218:73 | Phi | from 10:m2218_23 | +| ir.cpp:2218:73:2218:73 | Phi | from 10:~m2218_11 | +| ir.cpp:2218:73:2218:73 | Phi | from 14:m2218_84 | +| ir.cpp:2218:73:2218:73 | Phi | from 14:~m2218_81 | +| ir.cpp:2218:73:2218:73 | SideEffect | m2218_30 | +| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_31 | +| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_38 | +| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_43 | +| ir.cpp:2218:73:2218:73 | SideEffect | ~m2218_73 | +| ir.cpp:2218:73:2218:73 | StoreValue | r2218_22 | +| ir.cpp:2218:73:2218:73 | StoreValue | r2218_28 | +| ir.cpp:2218:73:2218:73 | Unary | r2218_20 | +| ir.cpp:2218:73:2218:73 | Unary | r2218_26 | +| ir.cpp:2218:73:2218:73 | Unary | r2218_32 | +| ir.cpp:2218:73:2218:73 | Unary | r2218_35 | +| ir.cpp:2218:73:2218:73 | Unary | r2218_46 | +| ir.cpp:2218:73:2218:73 | Unary | r2218_79 | +| ir.cpp:2218:73:2218:74 | StoreValue | r2218_16 | +| ir.cpp:2218:73:2218:74 | Unary | r2218_15 | +| ir.cpp:2218:73:2218:75 | Load | ~m2218_50 | +| ir.cpp:2218:73:2218:75 | StoreValue | r2218_51 | +| ir.cpp:2219:7:2219:7 | Address | &:r2219_1 | +| ir.cpp:2219:7:2219:7 | Address | &:r2219_1 | +| ir.cpp:2219:7:2219:7 | Arg(this) | this:r2219_1 | +| ir.cpp:2219:7:2219:7 | ChiPartial | partial:m2219_8 | +| ir.cpp:2219:7:2219:7 | ChiTotal | total:m2218_52 | +| ir.cpp:2219:7:2219:7 | SideEffect | m2218_52 | +| ir.cpp:2219:9:2219:13 | CallTarget | func:r2219_2 | +| ir.cpp:2219:9:2219:13 | ChiPartial | partial:m2219_5 | +| ir.cpp:2219:9:2219:13 | ChiTotal | total:m2218_50 | +| ir.cpp:2219:9:2219:13 | SideEffect | ~m2218_50 | +| ir.cpp:2219:15:2219:17 | Arg(0) | 0:r2219_3 | +| ir.cpp:2220:11:2220:11 | Address | &:r2220_1 | +| ir.cpp:2220:11:2220:11 | Address | &:r2220_1 | +| ir.cpp:2220:11:2220:11 | Arg(this) | this:r2220_1 | +| ir.cpp:2220:11:2220:11 | ChiPartial | partial:m2220_7 | +| ir.cpp:2220:11:2220:11 | ChiTotal | total:m2219_9 | +| ir.cpp:2220:11:2220:11 | SideEffect | m2219_9 | +| ir.cpp:2220:11:2220:19 | Left | r2220_9 | +| ir.cpp:2220:11:2220:26 | Condition | r2220_11 | +| ir.cpp:2220:13:2220:17 | CallTarget | func:r2220_2 | +| ir.cpp:2220:13:2220:17 | ChiPartial | partial:m2220_4 | +| ir.cpp:2220:13:2220:17 | ChiTotal | total:m2219_6 | +| ir.cpp:2220:13:2220:17 | SideEffect | ~m2219_6 | +| ir.cpp:2220:13:2220:17 | Unary | r2220_3 | +| ir.cpp:2220:24:2220:26 | Right | r2220_10 | +| ir.cpp:2224:5:2224:5 | Address | &:r2224_10 | +| ir.cpp:2224:5:2224:5 | Address | &:r2224_14 | +| ir.cpp:2224:5:2224:5 | Address | &:r2224_20 | +| ir.cpp:2224:26:2224:27 | Address | &:r2224_1 | +| ir.cpp:2224:26:2224:27 | Address | &:r2224_1 | +| ir.cpp:2224:26:2224:27 | Address | &:r2224_58 | +| ir.cpp:2224:26:2224:27 | Address | &:r2224_58 | +| ir.cpp:2224:26:2224:27 | Arg(this) | this:r2224_1 | +| ir.cpp:2224:26:2224:27 | Arg(this) | this:r2224_58 | +| ir.cpp:2224:26:2224:27 | CallTarget | func:r2224_59 | +| ir.cpp:2224:26:2224:27 | ChiPartial | partial:m2224_61 | +| ir.cpp:2224:26:2224:27 | ChiPartial | partial:m2224_64 | +| ir.cpp:2224:26:2224:27 | ChiTotal | total:m2224_9 | +| ir.cpp:2224:26:2224:27 | ChiTotal | total:m2224_55 | +| ir.cpp:2224:26:2224:27 | SideEffect | m2224_9 | +| ir.cpp:2224:26:2224:27 | SideEffect | ~m2224_55 | +| ir.cpp:2224:29:2224:29 | Arg(0) | 0:r2224_4 | +| ir.cpp:2224:29:2224:30 | CallTarget | func:r2224_3 | +| ir.cpp:2224:29:2224:30 | ChiPartial | partial:m2224_6 | +| ir.cpp:2224:29:2224:30 | ChiPartial | partial:m2224_8 | +| ir.cpp:2224:29:2224:30 | ChiTotal | total:m2218_43 | +| ir.cpp:2224:29:2224:30 | ChiTotal | total:m2224_2 | +| ir.cpp:2224:29:2224:30 | SideEffect | ~m2218_43 | +| ir.cpp:2224:37:2224:37 | Address | &:r2224_50 | +| ir.cpp:2224:41:2224:41 | Address | &:r2224_15 | +| ir.cpp:2224:41:2224:41 | Address | &:r2224_21 | +| ir.cpp:2224:41:2224:41 | Address | &:r2224_41 | +| ir.cpp:2224:41:2224:41 | Address | &:r2224_41 | +| ir.cpp:2224:41:2224:41 | Address | &:r2224_53 | +| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_34 | +| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_37 | +| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_39 | +| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_40 | +| ir.cpp:2224:41:2224:41 | Arg(this) | this:r0_47 | +| ir.cpp:2224:41:2224:41 | Arg(this) | this:r2224_41 | +| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_17 | +| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_23 | +| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_29 | +| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_30 | +| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_42 | +| ir.cpp:2224:41:2224:41 | CallTarget | func:r2224_52 | +| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_33 | +| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_35 | +| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_38 | +| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_44 | +| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_47 | +| ir.cpp:2224:41:2224:41 | ChiPartial | partial:m2224_54 | +| ir.cpp:2224:41:2224:41 | ChiTotal | total:m0_41 | +| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_26 | +| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_27 | +| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_34 | +| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_39 | +| ir.cpp:2224:41:2224:41 | ChiTotal | total:m2224_55 | +| ir.cpp:2224:41:2224:41 | Condition | r2224_37 | +| ir.cpp:2224:41:2224:41 | Load | m2224_13 | +| ir.cpp:2224:41:2224:41 | Load | m2224_13 | +| ir.cpp:2224:41:2224:41 | Phi | from 15:m2224_19 | +| ir.cpp:2224:41:2224:41 | Phi | from 15:~m2224_7 | +| ir.cpp:2224:41:2224:41 | Phi | from 17:m2224_48 | +| ir.cpp:2224:41:2224:41 | Phi | from 17:~m2224_45 | +| ir.cpp:2224:41:2224:41 | SideEffect | m2224_26 | +| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_27 | +| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_34 | +| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_39 | +| ir.cpp:2224:41:2224:41 | SideEffect | ~m2224_55 | +| ir.cpp:2224:41:2224:41 | StoreValue | r2224_18 | +| ir.cpp:2224:41:2224:41 | StoreValue | r2224_24 | +| ir.cpp:2224:41:2224:41 | Unary | r2224_16 | +| ir.cpp:2224:41:2224:41 | Unary | r2224_22 | +| ir.cpp:2224:41:2224:41 | Unary | r2224_28 | +| ir.cpp:2224:41:2224:41 | Unary | r2224_31 | +| ir.cpp:2224:41:2224:41 | Unary | r2224_43 | +| ir.cpp:2224:41:2224:41 | Unary | r2224_51 | +| ir.cpp:2224:41:2224:42 | StoreValue | r2224_12 | +| ir.cpp:2224:41:2224:42 | Unary | r2224_11 | +| ir.cpp:2224:41:2224:43 | Load | ~m2224_55 | +| ir.cpp:2224:41:2224:43 | StoreValue | r2224_56 | +| ir.cpp:2225:11:2225:11 | Address | &:r2225_1 | +| ir.cpp:2225:11:2225:11 | Left | r2225_2 | +| ir.cpp:2225:11:2225:11 | Load | m2224_57 | +| ir.cpp:2225:11:2225:16 | Condition | r2225_4 | +| ir.cpp:2225:16:2225:16 | Right | r2225_3 | +| ir.cpp:2229:5:2229:5 | Address | &:r2229_14 | +| ir.cpp:2229:5:2229:5 | Address | &:r2229_18 | +| ir.cpp:2229:5:2229:5 | Address | &:r2229_24 | +| ir.cpp:2229:42:2229:43 | Address | &:r2229_1 | +| ir.cpp:2229:42:2229:43 | Address | &:r2229_1 | +| ir.cpp:2229:42:2229:43 | Arg(this) | this:r2229_1 | +| ir.cpp:2229:45:2229:45 | Address | &:r2229_4 | +| ir.cpp:2229:45:2229:45 | Address | &:r2229_4 | +| ir.cpp:2229:45:2229:45 | Address | &:r2229_5 | +| ir.cpp:2229:45:2229:45 | Arg(0) | 0:r2229_8 | +| ir.cpp:2229:45:2229:45 | Load | m2214_8 | +| ir.cpp:2229:45:2229:45 | Load | m2229_7 | +| ir.cpp:2229:45:2229:45 | StoreValue | r2229_6 | +| ir.cpp:2229:45:2229:46 | CallTarget | func:r2229_3 | +| ir.cpp:2229:45:2229:46 | ChiPartial | partial:m2229_10 | +| ir.cpp:2229:45:2229:46 | ChiPartial | partial:m2229_12 | +| ir.cpp:2229:45:2229:46 | ChiTotal | total:m2224_39 | +| ir.cpp:2229:45:2229:46 | ChiTotal | total:m2229_2 | +| ir.cpp:2229:45:2229:46 | SideEffect | ~m2224_39 | +| ir.cpp:2229:69:2229:69 | Address | &:r2229_45 | +| ir.cpp:2229:69:2229:69 | Address | &:r2229_53 | +| ir.cpp:2229:69:2229:69 | Address | &:r2229_53 | +| ir.cpp:2229:69:2229:69 | Arg(this) | this:r2229_53 | +| ir.cpp:2229:69:2229:69 | CallTarget | func:r2229_54 | +| ir.cpp:2229:69:2229:69 | ChiPartial | partial:m2229_56 | +| ir.cpp:2229:69:2229:69 | ChiPartial | partial:m2229_59 | +| ir.cpp:2229:69:2229:69 | ChiTotal | total:m2229_52 | +| ir.cpp:2229:69:2229:69 | ChiTotal | total:m2232_13 | +| ir.cpp:2229:69:2229:69 | SideEffect | m2229_52 | +| ir.cpp:2229:69:2229:69 | SideEffect | ~m2232_13 | +| ir.cpp:2229:73:2229:73 | Address | &:r2229_19 | +| ir.cpp:2229:73:2229:73 | Address | &:r2229_25 | +| ir.cpp:2229:73:2229:73 | Address | &:r2229_48 | +| ir.cpp:2229:73:2229:73 | Address | &:r2229_61 | +| ir.cpp:2229:73:2229:73 | Address | &:r2229_61 | +| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_50 | +| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_53 | +| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_55 | +| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_56 | +| ir.cpp:2229:73:2229:73 | Arg(this) | this:r0_63 | +| ir.cpp:2229:73:2229:73 | Arg(this) | this:r2229_61 | +| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_21 | +| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_27 | +| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_33 | +| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_34 | +| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_47 | +| ir.cpp:2229:73:2229:73 | CallTarget | func:r2229_62 | +| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_37 | +| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_39 | +| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_42 | +| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_49 | +| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_64 | +| ir.cpp:2229:73:2229:73 | ChiPartial | partial:m2229_67 | +| ir.cpp:2229:73:2229:73 | ChiTotal | total:m0_57 | +| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_30 | +| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_31 | +| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_38 | +| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_43 | +| ir.cpp:2229:73:2229:73 | ChiTotal | total:m2229_57 | +| ir.cpp:2229:73:2229:73 | Condition | r2229_41 | +| ir.cpp:2229:73:2229:73 | Load | m2229_17 | +| ir.cpp:2229:73:2229:73 | Load | m2229_17 | +| ir.cpp:2229:73:2229:73 | Phi | from 20:m2229_23 | +| ir.cpp:2229:73:2229:73 | Phi | from 20:~m2229_11 | +| ir.cpp:2229:73:2229:73 | Phi | from 22:m2229_68 | +| ir.cpp:2229:73:2229:73 | Phi | from 22:~m2229_65 | +| ir.cpp:2229:73:2229:73 | SideEffect | m2229_30 | +| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_31 | +| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_38 | +| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_43 | +| ir.cpp:2229:73:2229:73 | SideEffect | ~m2229_57 | +| ir.cpp:2229:73:2229:73 | StoreValue | r2229_22 | +| ir.cpp:2229:73:2229:73 | StoreValue | r2229_28 | +| ir.cpp:2229:73:2229:73 | Unary | r2229_20 | +| ir.cpp:2229:73:2229:73 | Unary | r2229_26 | +| ir.cpp:2229:73:2229:73 | Unary | r2229_32 | +| ir.cpp:2229:73:2229:73 | Unary | r2229_35 | +| ir.cpp:2229:73:2229:73 | Unary | r2229_46 | +| ir.cpp:2229:73:2229:73 | Unary | r2229_63 | +| ir.cpp:2229:73:2229:74 | StoreValue | r2229_16 | +| ir.cpp:2229:73:2229:74 | Unary | r2229_15 | +| ir.cpp:2229:73:2229:75 | Load | ~m2229_50 | +| ir.cpp:2229:73:2229:75 | StoreValue | r2229_51 | +| ir.cpp:2230:27:2230:28 | Address | &:r2230_1 | +| ir.cpp:2230:27:2230:28 | Address | &:r2230_1 | +| ir.cpp:2230:27:2230:28 | Arg(this) | this:r2230_1 | +| ir.cpp:2230:27:2230:28 | CallTarget | func:r2230_3 | +| ir.cpp:2230:27:2230:28 | ChiPartial | partial:m2230_5 | +| ir.cpp:2230:27:2230:28 | ChiPartial | partial:m2230_7 | +| ir.cpp:2230:27:2230:28 | ChiTotal | total:m2229_50 | +| ir.cpp:2230:27:2230:28 | ChiTotal | total:m2230_2 | +| ir.cpp:2230:27:2230:28 | SideEffect | ~m2229_50 | +| ir.cpp:2231:27:2231:28 | Address | &:r2231_1 | +| ir.cpp:2231:27:2231:28 | Address | &:r2231_1 | +| ir.cpp:2231:27:2231:28 | Arg(this) | this:r2231_1 | +| ir.cpp:2231:27:2231:28 | CallTarget | func:r2231_3 | +| ir.cpp:2231:27:2231:28 | ChiPartial | partial:m2231_5 | +| ir.cpp:2231:27:2231:28 | ChiPartial | partial:m2231_7 | +| ir.cpp:2231:27:2231:28 | ChiTotal | total:m2230_6 | +| ir.cpp:2231:27:2231:28 | ChiTotal | total:m2231_2 | +| ir.cpp:2231:27:2231:28 | SideEffect | ~m2230_6 | +| ir.cpp:2232:5:2232:5 | Address | &:r2232_1 | +| ir.cpp:2232:5:2232:5 | Address | &:r2232_1 | +| ir.cpp:2232:5:2232:5 | Address | &:r2232_9 | +| ir.cpp:2232:5:2232:5 | Address | &:r2232_9 | +| ir.cpp:2232:5:2232:5 | Arg(this) | this:r2232_1 | +| ir.cpp:2232:5:2232:5 | Arg(this) | this:r2232_9 | +| ir.cpp:2232:5:2232:5 | CallTarget | func:r2232_2 | +| ir.cpp:2232:5:2232:5 | CallTarget | func:r2232_10 | +| ir.cpp:2232:5:2232:5 | ChiPartial | partial:m2232_4 | +| ir.cpp:2232:5:2232:5 | ChiPartial | partial:m2232_7 | +| ir.cpp:2232:5:2232:5 | ChiPartial | partial:m2232_12 | +| ir.cpp:2232:5:2232:5 | ChiPartial | partial:m2232_15 | +| ir.cpp:2232:5:2232:5 | ChiTotal | total:m2230_8 | +| ir.cpp:2232:5:2232:5 | ChiTotal | total:m2231_6 | +| ir.cpp:2232:5:2232:5 | ChiTotal | total:m2231_8 | +| ir.cpp:2232:5:2232:5 | ChiTotal | total:m2232_5 | +| ir.cpp:2232:5:2232:5 | SideEffect | m2230_8 | +| ir.cpp:2232:5:2232:5 | SideEffect | m2231_8 | +| ir.cpp:2232:5:2232:5 | SideEffect | ~m2231_6 | +| ir.cpp:2232:5:2232:5 | SideEffect | ~m2232_5 | +| ir.cpp:2233:1:2233:1 | Address | &:r2233_1 | +| ir.cpp:2233:1:2233:1 | Address | &:r2233_1 | +| ir.cpp:2233:1:2233:1 | Address | &:r2233_9 | +| ir.cpp:2233:1:2233:1 | Address | &:r2233_9 | +| ir.cpp:2233:1:2233:1 | Address | &:r2233_18 | +| ir.cpp:2233:1:2233:1 | Address | &:r2233_18 | +| ir.cpp:2233:1:2233:1 | Arg(this) | this:r2233_1 | +| ir.cpp:2233:1:2233:1 | Arg(this) | this:r2233_9 | +| ir.cpp:2233:1:2233:1 | Arg(this) | this:r2233_18 | +| ir.cpp:2233:1:2233:1 | CallTarget | func:r2233_2 | +| ir.cpp:2233:1:2233:1 | CallTarget | func:r2233_10 | +| ir.cpp:2233:1:2233:1 | CallTarget | func:r2233_19 | +| ir.cpp:2233:1:2233:1 | ChiPartial | partial:m2233_4 | +| ir.cpp:2233:1:2233:1 | ChiPartial | partial:m2233_7 | +| ir.cpp:2233:1:2233:1 | ChiPartial | partial:m2233_12 | +| ir.cpp:2233:1:2233:1 | ChiPartial | partial:m2233_15 | +| ir.cpp:2233:1:2233:1 | ChiPartial | partial:m2233_21 | +| ir.cpp:2233:1:2233:1 | ChiPartial | partial:m2233_24 | +| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2214_8 | +| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2214_8 | +| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2214_8 | +| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2218_65 | +| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2224_62 | +| ir.cpp:2233:1:2233:1 | ChiTotal | total:m2229_43 | +| ir.cpp:2233:1:2233:1 | SideEffect | m2214_8 | +| ir.cpp:2233:1:2233:1 | SideEffect | m2214_8 | +| ir.cpp:2233:1:2233:1 | SideEffect | m2214_8 | +| ir.cpp:2233:1:2233:1 | SideEffect | ~m2218_65 | +| ir.cpp:2233:1:2233:1 | SideEffect | ~m2224_62 | +| ir.cpp:2233:1:2233:1 | SideEffect | ~m2229_43 | +| ir.cpp:2235:6:2235:38 | ChiPartial | partial:m2235_3 | +| ir.cpp:2235:6:2235:38 | ChiTotal | total:m2235_2 | +| ir.cpp:2235:6:2235:38 | SideEffect | ~m2238_7 | +| ir.cpp:2236:25:2236:25 | Address | &:r2236_1 | +| ir.cpp:2236:25:2236:25 | Address | &:r2236_1 | +| ir.cpp:2236:25:2236:25 | Arg(this) | this:r2236_1 | +| ir.cpp:2236:25:2236:25 | CallTarget | func:r2236_3 | +| ir.cpp:2236:25:2236:25 | ChiPartial | partial:m2236_5 | +| ir.cpp:2236:25:2236:25 | ChiPartial | partial:m2236_7 | +| ir.cpp:2236:25:2236:25 | ChiTotal | total:m2235_4 | +| ir.cpp:2236:25:2236:25 | ChiTotal | total:m2236_2 | +| ir.cpp:2236:25:2236:25 | SideEffect | ~m2235_4 | +| ir.cpp:2237:32:2237:32 | Address | &:r2237_1 | +| ir.cpp:2237:32:2237:32 | Address | &:r2237_1 | +| ir.cpp:2237:32:2237:32 | Address | &:r2237_4 | +| ir.cpp:2237:32:2237:32 | Arg(this) | this:r2237_4 | +| ir.cpp:2237:32:2237:32 | ChiPartial | partial:m2237_6 | +| ir.cpp:2237:32:2237:32 | ChiTotal | total:m0_6 | +| ir.cpp:2237:32:2237:32 | Condition | r2237_2 | +| ir.cpp:2237:32:2237:32 | Load | ~m2236_6 | +| ir.cpp:2237:32:2237:32 | StoreValue | r2237_5 | +| ir.cpp:2238:1:2238:1 | Address | &:r2238_3 | +| ir.cpp:2238:1:2238:1 | Address | &:r2238_3 | +| ir.cpp:2238:1:2238:1 | Arg(this) | this:r2238_3 | +| ir.cpp:2238:1:2238:1 | CallTarget | func:r2238_4 | +| ir.cpp:2238:1:2238:1 | ChiPartial | partial:m2238_6 | +| ir.cpp:2238:1:2238:1 | ChiPartial | partial:m2238_9 | +| ir.cpp:2238:1:2238:1 | ChiTotal | total:m2236_8 | +| ir.cpp:2238:1:2238:1 | ChiTotal | total:m2238_1 | +| ir.cpp:2238:1:2238:1 | Phi | from 0:~m2236_6 | +| ir.cpp:2238:1:2238:1 | Phi | from 1:~m2237_7 | +| ir.cpp:2238:1:2238:1 | SideEffect | m2236_8 | +| ir.cpp:2238:1:2238:1 | SideEffect | ~m2238_1 | +| ir.cpp:2240:6:2240:38 | ChiPartial | partial:m2240_3 | +| ir.cpp:2240:6:2240:38 | ChiTotal | total:m2240_2 | +| ir.cpp:2240:6:2240:38 | SideEffect | ~m2243_6 | +| ir.cpp:2241:32:2241:32 | Address | &:r2241_1 | +| ir.cpp:2241:32:2241:32 | Address | &:r2241_1 | +| ir.cpp:2241:32:2241:32 | Address | &:r2241_4 | +| ir.cpp:2241:32:2241:32 | Arg(this) | this:r2241_4 | +| ir.cpp:2241:32:2241:32 | ChiPartial | partial:m2241_6 | +| ir.cpp:2241:32:2241:32 | ChiTotal | total:m0_6 | +| ir.cpp:2241:32:2241:32 | Condition | r2241_2 | +| ir.cpp:2241:32:2241:32 | Load | ~m2240_3 | +| ir.cpp:2241:32:2241:32 | StoreValue | r2241_5 | +| ir.cpp:2242:25:2242:25 | Address | &:r2242_2 | +| ir.cpp:2242:25:2242:25 | Address | &:r2242_2 | +| ir.cpp:2242:25:2242:25 | Arg(this) | this:r2242_2 | +| ir.cpp:2242:25:2242:25 | CallTarget | func:r2242_4 | +| ir.cpp:2242:25:2242:25 | ChiPartial | partial:m2242_6 | +| ir.cpp:2242:25:2242:25 | ChiPartial | partial:m2242_8 | +| ir.cpp:2242:25:2242:25 | ChiTotal | total:m2242_1 | +| ir.cpp:2242:25:2242:25 | ChiTotal | total:m2242_3 | +| ir.cpp:2242:25:2242:25 | Phi | from 0:~m2240_4 | +| ir.cpp:2242:25:2242:25 | Phi | from 1:~m2241_7 | +| ir.cpp:2242:25:2242:25 | SideEffect | ~m2242_1 | +| ir.cpp:2243:1:2243:1 | Address | &:r2243_2 | +| ir.cpp:2243:1:2243:1 | Address | &:r2243_2 | +| ir.cpp:2243:1:2243:1 | Arg(this) | this:r2243_2 | +| ir.cpp:2243:1:2243:1 | CallTarget | func:r2243_3 | +| ir.cpp:2243:1:2243:1 | ChiPartial | partial:m2243_5 | +| ir.cpp:2243:1:2243:1 | ChiPartial | partial:m2243_8 | +| ir.cpp:2243:1:2243:1 | ChiTotal | total:m2242_7 | +| ir.cpp:2243:1:2243:1 | ChiTotal | total:m2242_9 | +| ir.cpp:2243:1:2243:1 | SideEffect | m2242_9 | +| ir.cpp:2243:1:2243:1 | SideEffect | ~m2242_7 | +| ir.cpp:2245:6:2245:38 | ChiPartial | partial:m2245_3 | +| ir.cpp:2245:6:2245:38 | ChiTotal | total:m2245_2 | +| ir.cpp:2245:6:2245:38 | SideEffect | ~m2249_15 | +| ir.cpp:2246:25:2246:25 | Address | &:r2246_1 | +| ir.cpp:2246:25:2246:25 | Address | &:r2246_1 | +| ir.cpp:2246:25:2246:25 | Arg(this) | this:r2246_1 | +| ir.cpp:2246:25:2246:25 | CallTarget | func:r2246_3 | +| ir.cpp:2246:25:2246:25 | ChiPartial | partial:m2246_5 | +| ir.cpp:2246:25:2246:25 | ChiPartial | partial:m2246_7 | +| ir.cpp:2246:25:2246:25 | ChiTotal | total:m2245_4 | +| ir.cpp:2246:25:2246:25 | ChiTotal | total:m2246_2 | +| ir.cpp:2246:25:2246:25 | SideEffect | ~m2245_4 | +| ir.cpp:2247:25:2247:25 | Address | &:r2247_1 | +| ir.cpp:2247:25:2247:25 | Address | &:r2247_1 | +| ir.cpp:2247:25:2247:25 | Arg(this) | this:r2247_1 | +| ir.cpp:2247:25:2247:25 | CallTarget | func:r2247_3 | +| ir.cpp:2247:25:2247:25 | ChiPartial | partial:m2247_5 | +| ir.cpp:2247:25:2247:25 | ChiPartial | partial:m2247_7 | +| ir.cpp:2247:25:2247:25 | ChiTotal | total:m2246_6 | +| ir.cpp:2247:25:2247:25 | ChiTotal | total:m2247_2 | +| ir.cpp:2247:25:2247:25 | SideEffect | ~m2246_6 | +| ir.cpp:2248:32:2248:32 | Address | &:r2248_1 | +| ir.cpp:2248:32:2248:32 | Address | &:r2248_1 | +| ir.cpp:2248:32:2248:32 | Address | &:r2248_4 | +| ir.cpp:2248:32:2248:32 | Arg(this) | this:r2248_4 | +| ir.cpp:2248:32:2248:32 | ChiPartial | partial:m2248_6 | +| ir.cpp:2248:32:2248:32 | ChiTotal | total:m0_6 | +| ir.cpp:2248:32:2248:32 | Condition | r2248_2 | +| ir.cpp:2248:32:2248:32 | Load | ~m2247_6 | +| ir.cpp:2248:32:2248:32 | StoreValue | r2248_5 | +| ir.cpp:2249:1:2249:1 | Address | &:r2249_3 | +| ir.cpp:2249:1:2249:1 | Address | &:r2249_3 | +| ir.cpp:2249:1:2249:1 | Address | &:r2249_11 | +| ir.cpp:2249:1:2249:1 | Address | &:r2249_11 | +| ir.cpp:2249:1:2249:1 | Arg(this) | this:r2249_3 | +| ir.cpp:2249:1:2249:1 | Arg(this) | this:r2249_11 | +| ir.cpp:2249:1:2249:1 | CallTarget | func:r2249_4 | +| ir.cpp:2249:1:2249:1 | CallTarget | func:r2249_12 | +| ir.cpp:2249:1:2249:1 | ChiPartial | partial:m2249_6 | +| ir.cpp:2249:1:2249:1 | ChiPartial | partial:m2249_9 | +| ir.cpp:2249:1:2249:1 | ChiPartial | partial:m2249_14 | +| ir.cpp:2249:1:2249:1 | ChiPartial | partial:m2249_17 | +| ir.cpp:2249:1:2249:1 | ChiTotal | total:m2246_8 | +| ir.cpp:2249:1:2249:1 | ChiTotal | total:m2247_8 | +| ir.cpp:2249:1:2249:1 | ChiTotal | total:m2249_1 | +| ir.cpp:2249:1:2249:1 | ChiTotal | total:m2249_7 | +| ir.cpp:2249:1:2249:1 | Phi | from 0:~m2247_6 | +| ir.cpp:2249:1:2249:1 | Phi | from 1:~m2248_7 | +| ir.cpp:2249:1:2249:1 | SideEffect | m2246_8 | +| ir.cpp:2249:1:2249:1 | SideEffect | m2247_8 | +| ir.cpp:2249:1:2249:1 | SideEffect | ~m2249_1 | +| ir.cpp:2249:1:2249:1 | SideEffect | ~m2249_7 | +| ir.cpp:2251:28:2251:55 | Address | &:r2251_3 | +| ir.cpp:2251:28:2251:55 | Arg(this) | this:r2251_3 | +| ir.cpp:2251:28:2251:55 | CallTarget | func:r2251_4 | +| ir.cpp:2251:28:2251:55 | ChiPartial | partial:m2251_6 | +| ir.cpp:2251:28:2251:55 | ChiPartial | partial:m2251_8 | +| ir.cpp:2251:28:2251:55 | ChiTotal | total:m2251_2 | +| ir.cpp:2251:28:2251:55 | ChiTotal | total:m2251_7 | +| ir.cpp:2251:28:2251:55 | SideEffect | ~m2251_2 | +| ir.cpp:2251:28:2251:55 | SideEffect | ~m2251_9 | +| ir.cpp:2255:8:2255:8 | Address | &:r2255_16 | +| ir.cpp:2255:8:2255:8 | Address | &:r2255_16 | +| ir.cpp:2255:8:2255:8 | ChiPartial | partial:m2255_3 | +| ir.cpp:2255:8:2255:8 | ChiPartial | partial:m2255_3 | +| ir.cpp:2255:8:2255:8 | ChiTotal | total:m2255_2 | +| ir.cpp:2255:8:2255:8 | ChiTotal | total:m2255_2 | +| ir.cpp:2255:8:2255:8 | Load | m2255_14 | +| ir.cpp:2255:8:2255:8 | Load | m2255_14 | +| ir.cpp:2255:8:2255:8 | SideEffect | m2255_3 | +| ir.cpp:2255:8:2255:8 | SideEffect | m2255_3 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_5 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_5 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_5 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_5 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_7 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_7 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_7 | +| ir.cpp:2255:15:2255:15 | Address | &:r2255_7 | +| ir.cpp:2255:15:2255:15 | Load | m2255_6 | +| ir.cpp:2255:15:2255:15 | Load | m2255_6 | +| ir.cpp:2255:15:2255:15 | SideEffect | m2255_8 | +| ir.cpp:2255:15:2255:15 | SideEffect | m2255_8 | +| ir.cpp:2255:20:2255:28 | Address | &:r2255_9 | +| ir.cpp:2255:20:2255:28 | Address | &:r2255_9 | +| ir.cpp:2255:27:2255:27 | Address | &:r2255_10 | +| ir.cpp:2255:27:2255:27 | Address | &:r2255_10 | +| ir.cpp:2255:27:2255:27 | Load | m2255_6 | +| ir.cpp:2255:27:2255:27 | Load | m2255_6 | +| ir.cpp:2255:27:2255:27 | StoreValue | r2255_13 | +| ir.cpp:2255:27:2255:27 | StoreValue | r2255_13 | +| ir.cpp:2255:27:2255:27 | Unary | r2255_11 | +| ir.cpp:2255:27:2255:27 | Unary | r2255_11 | +| ir.cpp:2255:27:2255:27 | Unary | r2255_12 | +| ir.cpp:2255:27:2255:27 | Unary | r2255_12 | +| ir.cpp:2258:10:2258:10 | ChiPartial | partial:m2258_3 | +| ir.cpp:2258:10:2258:10 | ChiPartial | partial:m2258_3 | +| ir.cpp:2258:10:2258:10 | ChiTotal | total:m2258_2 | +| ir.cpp:2258:10:2258:10 | ChiTotal | total:m2258_2 | +| ir.cpp:2258:10:2258:10 | SideEffect | ~m2259_8 | +| ir.cpp:2258:10:2258:10 | SideEffect | ~m2259_16 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_5 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_5 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_5 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_5 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_7 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_7 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_7 | +| ir.cpp:2258:29:2258:29 | Address | &:r2258_7 | +| ir.cpp:2258:29:2258:29 | Load | m2258_6 | +| ir.cpp:2258:29:2258:29 | Load | m2258_6 | +| ir.cpp:2258:29:2258:29 | SideEffect | m2259_11 | +| ir.cpp:2258:29:2258:29 | SideEffect | m2259_19 | +| ir.cpp:2259:9:2259:11 | CallTarget | func:r2259_1 | +| ir.cpp:2259:9:2259:11 | CallTarget | func:r2259_1 | +| ir.cpp:2259:9:2259:11 | ChiPartial | partial:m2259_7 | +| ir.cpp:2259:9:2259:11 | ChiPartial | partial:m2259_7 | +| ir.cpp:2259:9:2259:11 | ChiTotal | total:m2258_4 | +| ir.cpp:2259:9:2259:11 | ChiTotal | total:m2258_4 | +| ir.cpp:2259:9:2259:11 | SideEffect | ~m2258_4 | +| ir.cpp:2259:9:2259:11 | SideEffect | ~m2258_4 | +| ir.cpp:2259:9:2259:11 | Unary | r2259_6 | +| ir.cpp:2259:9:2259:11 | Unary | r2259_6 | +| ir.cpp:2259:12:2259:15 | Address | &:r2259_12 | +| ir.cpp:2259:12:2259:15 | Address | &:r2259_12 | +| ir.cpp:2259:12:2259:15 | ChiPartial | partial:m2259_18 | +| ir.cpp:2259:12:2259:15 | ChiTotal | total:m2259_11 | +| ir.cpp:2259:12:2259:15 | SideEffect | ~m2259_11 | +| ir.cpp:2259:13:2259:13 | Address | &:r2259_2 | +| ir.cpp:2259:13:2259:13 | Address | &:r2259_2 | +| ir.cpp:2259:13:2259:13 | Address | &:r2259_5 | +| ir.cpp:2259:13:2259:13 | Address | &:r2259_5 | +| ir.cpp:2259:13:2259:13 | Address | &:r2259_5 | +| ir.cpp:2259:13:2259:13 | Address | &:r2259_5 | +| ir.cpp:2259:13:2259:13 | Arg(0) | 0:r2259_5 | +| ir.cpp:2259:13:2259:13 | Arg(0) | 0:r2259_5 | +| ir.cpp:2259:13:2259:13 | ChiPartial | partial:m2259_10 | +| ir.cpp:2259:13:2259:13 | ChiPartial | partial:m2259_10 | +| ir.cpp:2259:13:2259:13 | ChiTotal | total:m2258_8 | +| ir.cpp:2259:13:2259:13 | ChiTotal | total:m2258_8 | +| ir.cpp:2259:13:2259:13 | Load | m2258_6 | +| ir.cpp:2259:13:2259:13 | Load | m2258_6 | +| ir.cpp:2259:13:2259:13 | SideEffect | ~m2258_8 | +| ir.cpp:2259:13:2259:13 | SideEffect | ~m2258_8 | +| ir.cpp:2259:13:2259:13 | Unary | r2259_3 | +| ir.cpp:2259:13:2259:13 | Unary | r2259_3 | +| ir.cpp:2259:13:2259:13 | Unary | r2259_4 | +| ir.cpp:2259:13:2259:13 | Unary | r2259_4 | +| ir.cpp:2259:16:2259:17 | CallTarget | func:r2259_13 | +| ir.cpp:2259:16:2259:17 | ChiPartial | partial:m2259_15 | +| ir.cpp:2259:16:2259:17 | ChiTotal | total:m2259_8 | +| ir.cpp:2259:16:2259:17 | SideEffect | ~m2259_8 | +| ir.cpp:2262:10:2262:36 | ChiPartial | partial:m2262_3 | +| ir.cpp:2262:10:2262:36 | ChiTotal | total:m2262_2 | +| ir.cpp:2262:10:2262:36 | SideEffect | ~m2265_6 | +| ir.cpp:2263:29:2263:29 | Address | &:r2263_1 | +| ir.cpp:2263:29:2263:29 | Address | &:r2263_1 | +| ir.cpp:2263:29:2263:29 | Arg(this) | this:r2263_1 | +| ir.cpp:2263:29:2263:29 | CallTarget | func:r2263_3 | +| ir.cpp:2263:29:2263:29 | ChiPartial | partial:m2263_5 | +| ir.cpp:2263:29:2263:29 | ChiPartial | partial:m2263_7 | +| ir.cpp:2263:29:2263:29 | ChiTotal | total:m2262_4 | +| ir.cpp:2263:29:2263:29 | ChiTotal | total:m2263_2 | +| ir.cpp:2263:29:2263:29 | SideEffect | ~m2262_4 | +| ir.cpp:2264:9:2264:23 | CallTarget | func:r2264_1 | +| ir.cpp:2264:9:2264:23 | ChiPartial | partial:m2264_5 | +| ir.cpp:2264:9:2264:23 | ChiTotal | total:m2263_6 | +| ir.cpp:2264:9:2264:23 | SideEffect | ~m2263_6 | +| ir.cpp:2264:25:2264:25 | Address | &:r2264_3 | +| ir.cpp:2264:25:2264:25 | Address | &:r2264_3 | +| ir.cpp:2264:25:2264:25 | Arg(0) | 0:r2264_3 | +| ir.cpp:2264:25:2264:25 | ChiPartial | partial:m2264_8 | +| ir.cpp:2264:25:2264:25 | ChiTotal | total:m2263_8 | +| ir.cpp:2264:25:2264:25 | SideEffect | ~m2263_8 | +| ir.cpp:2264:25:2264:25 | Unary | r2264_2 | +| ir.cpp:2265:5:2265:5 | Address | &:r2265_2 | +| ir.cpp:2265:5:2265:5 | Address | &:r2265_2 | +| ir.cpp:2265:5:2265:5 | Arg(this) | this:r2265_2 | +| ir.cpp:2265:5:2265:5 | CallTarget | func:r2265_3 | +| ir.cpp:2265:5:2265:5 | ChiPartial | partial:m2265_5 | +| ir.cpp:2265:5:2265:5 | ChiPartial | partial:m2265_8 | +| ir.cpp:2265:5:2265:5 | ChiTotal | total:m2264_6 | +| ir.cpp:2265:5:2265:5 | ChiTotal | total:m2264_9 | +| ir.cpp:2265:5:2265:5 | SideEffect | m2264_9 | +| ir.cpp:2265:5:2265:5 | SideEffect | ~m2264_6 | +| ir.cpp:2267:10:2267:32 | ChiPartial | partial:m2267_3 | +| ir.cpp:2267:10:2267:32 | ChiTotal | total:m2267_2 | +| ir.cpp:2267:10:2267:32 | SideEffect | ~m2269_6 | +| ir.cpp:2268:13:2268:13 | Address | &:r2268_1 | +| ir.cpp:2269:9:2269:23 | CallTarget | func:r2269_1 | +| ir.cpp:2269:9:2269:23 | ChiPartial | partial:m2269_5 | +| ir.cpp:2269:9:2269:23 | ChiTotal | total:m2267_4 | +| ir.cpp:2269:9:2269:23 | SideEffect | ~m2267_4 | +| ir.cpp:2269:25:2269:25 | Address | &:r2269_3 | +| ir.cpp:2269:25:2269:25 | Address | &:r2269_3 | +| ir.cpp:2269:25:2269:25 | Arg(0) | 0:r2269_3 | +| ir.cpp:2269:25:2269:25 | ChiPartial | partial:m2269_8 | +| ir.cpp:2269:25:2269:25 | ChiTotal | total:m2268_2 | +| ir.cpp:2269:25:2269:25 | SideEffect | ~m2268_2 | +| ir.cpp:2269:25:2269:25 | Unary | r2269_2 | +| ir.cpp:2273:6:2273:24 | ChiPartial | partial:m2273_3 | +| ir.cpp:2273:6:2273:24 | ChiTotal | total:m2273_2 | +| ir.cpp:2273:6:2273:24 | Phi | from 2:~m2273_10 | +| ir.cpp:2273:6:2273:24 | Phi | from 6:~m2282_8 | +| ir.cpp:2273:6:2273:24 | Phi | from 9:~m2275_6 | +| ir.cpp:2273:6:2273:24 | Phi | from 10:~m2289_1 | +| ir.cpp:2273:6:2273:24 | SideEffect | ~m2273_7 | +| ir.cpp:2273:31:2273:31 | Address | &:r2273_5 | +| ir.cpp:2275:12:2275:12 | Address | &:r2275_1 | +| ir.cpp:2275:12:2275:12 | Address | &:r2275_1 | +| ir.cpp:2275:12:2275:12 | Arg(this) | this:r2275_1 | +| ir.cpp:2275:12:2275:12 | CallTarget | func:r2275_3 | +| ir.cpp:2275:12:2275:12 | ChiPartial | partial:m2275_5 | +| ir.cpp:2275:12:2275:12 | ChiPartial | partial:m2275_7 | +| ir.cpp:2275:12:2275:12 | ChiTotal | total:m2273_4 | +| ir.cpp:2275:12:2275:12 | ChiTotal | total:m2275_2 | +| ir.cpp:2275:12:2275:12 | SideEffect | ~m2273_4 | +| ir.cpp:2276:9:2276:9 | Address | &:r2276_1 | +| ir.cpp:2276:9:2276:9 | Condition | r2276_2 | +| ir.cpp:2276:9:2276:9 | Load | m2273_6 | +| ir.cpp:2277:7:2277:28 | Address | &:r2277_1 | +| ir.cpp:2277:7:2277:28 | Address | &:r2277_1 | +| ir.cpp:2277:7:2277:28 | Load | m2277_4 | +| ir.cpp:2277:13:2277:28 | StoreValue | r2277_3 | +| ir.cpp:2277:13:2277:28 | Unary | r2277_2 | +| ir.cpp:2279:12:2279:13 | Address | &:r2279_1 | +| ir.cpp:2279:12:2279:13 | Address | &:r2279_1 | +| ir.cpp:2279:12:2279:13 | Arg(this) | this:r2279_1 | +| ir.cpp:2279:12:2279:13 | CallTarget | func:r2279_3 | +| ir.cpp:2279:12:2279:13 | ChiPartial | partial:m2279_5 | +| ir.cpp:2279:12:2279:13 | ChiPartial | partial:m2279_7 | +| ir.cpp:2279:12:2279:13 | ChiTotal | total:m2275_6 | +| ir.cpp:2279:12:2279:13 | ChiTotal | total:m2279_2 | +| ir.cpp:2279:12:2279:13 | SideEffect | ~m2275_6 | +| ir.cpp:2280:3:2280:3 | Address | &:r2280_1 | +| ir.cpp:2280:3:2280:3 | Address | &:r2280_1 | +| ir.cpp:2280:3:2280:3 | Address | &:r2280_9 | +| ir.cpp:2280:3:2280:3 | Address | &:r2280_9 | +| ir.cpp:2280:3:2280:3 | Arg(this) | this:r2280_1 | +| ir.cpp:2280:3:2280:3 | Arg(this) | this:r2280_9 | +| ir.cpp:2280:3:2280:3 | CallTarget | func:r2280_2 | +| ir.cpp:2280:3:2280:3 | CallTarget | func:r2280_10 | +| ir.cpp:2280:3:2280:3 | ChiPartial | partial:m2280_4 | +| ir.cpp:2280:3:2280:3 | ChiPartial | partial:m2280_7 | +| ir.cpp:2280:3:2280:3 | ChiPartial | partial:m2280_12 | +| ir.cpp:2280:3:2280:3 | ChiPartial | partial:m2280_15 | +| ir.cpp:2280:3:2280:3 | ChiTotal | total:m2275_8 | +| ir.cpp:2280:3:2280:3 | ChiTotal | total:m2279_6 | +| ir.cpp:2280:3:2280:3 | ChiTotal | total:m2279_8 | +| ir.cpp:2280:3:2280:3 | ChiTotal | total:m2280_5 | +| ir.cpp:2280:3:2280:3 | SideEffect | m2275_8 | +| ir.cpp:2280:3:2280:3 | SideEffect | m2279_8 | +| ir.cpp:2280:3:2280:3 | SideEffect | ~m2279_6 | +| ir.cpp:2280:3:2280:3 | SideEffect | ~m2280_5 | +| ir.cpp:2281:22:2281:22 | Address | &:r2281_2 | +| ir.cpp:2281:22:2281:22 | Address | &:r2281_2 | +| ir.cpp:2281:22:2281:22 | Address | &:r2281_4 | +| ir.cpp:2281:22:2281:22 | Load | m2281_3 | +| ir.cpp:2282:5:2282:19 | Address | &:r2282_1 | +| ir.cpp:2282:5:2282:19 | Address | &:r2282_1 | +| ir.cpp:2282:5:2282:19 | Address | &:r2282_1 | +| ir.cpp:2282:5:2282:19 | Arg(this) | this:r2282_1 | +| ir.cpp:2282:5:2282:19 | CallTarget | func:r2282_3 | +| ir.cpp:2282:5:2282:19 | ChiPartial | partial:m2282_7 | +| ir.cpp:2282:5:2282:19 | ChiPartial | partial:m2282_10 | +| ir.cpp:2282:5:2282:19 | ChiTotal | total:m2275_6 | +| ir.cpp:2282:5:2282:19 | ChiTotal | total:m2282_2 | +| ir.cpp:2282:5:2282:19 | Load | m2282_11 | +| ir.cpp:2282:5:2282:19 | SideEffect | ~m2275_6 | +| ir.cpp:2282:18:2282:18 | Address | &:r2282_4 | +| ir.cpp:2282:18:2282:18 | Address | &:r2282_5 | +| ir.cpp:2282:18:2282:18 | Arg(0) | 0:r2282_5 | +| ir.cpp:2282:18:2282:18 | Load | m2281_3 | +| ir.cpp:2282:18:2282:18 | SideEffect | ~m2281_5 | +| ir.cpp:2284:24:2284:24 | Address | &:r2284_2 | +| ir.cpp:2284:24:2284:24 | Address | &:r2284_2 | +| ir.cpp:2284:24:2284:24 | Address | &:r2284_4 | +| ir.cpp:2284:24:2284:24 | Load | m2284_3 | +| ir.cpp:2289:1:2289:1 | Phi | from 4:~m2280_13 | +| ir.cpp:2289:1:2289:1 | Phi | from 8:~m2275_6 | +| ir.cpp:2291:6:2291:18 | ChiPartial | partial:m2291_3 | +| ir.cpp:2291:6:2291:18 | ChiTotal | total:m2291_2 | +| ir.cpp:2291:6:2291:18 | SideEffect | ~m2299_14 | +| ir.cpp:2291:25:2291:25 | Address | &:r2291_5 | +| ir.cpp:2292:12:2292:13 | Address | &:r2292_1 | +| ir.cpp:2292:12:2292:13 | Address | &:r2292_1 | +| ir.cpp:2292:12:2292:13 | Arg(this) | this:r2292_1 | +| ir.cpp:2292:12:2292:13 | CallTarget | func:r2292_3 | +| ir.cpp:2292:12:2292:13 | ChiPartial | partial:m2292_5 | +| ir.cpp:2292:12:2292:13 | ChiPartial | partial:m2292_7 | +| ir.cpp:2292:12:2292:13 | ChiTotal | total:m2291_4 | +| ir.cpp:2292:12:2292:13 | ChiTotal | total:m2292_2 | +| ir.cpp:2292:12:2292:13 | SideEffect | ~m2291_4 | +| ir.cpp:2293:8:2293:8 | Address | &:r2293_1 | +| ir.cpp:2293:8:2293:8 | Condition | r2293_2 | +| ir.cpp:2293:8:2293:8 | Load | m2291_6 | | ir.cpp:2294:16:2294:17 | Address | &:r2294_1 | | ir.cpp:2294:16:2294:17 | Address | &:r2294_1 | | ir.cpp:2294:16:2294:17 | Arg(this) | this:r2294_1 | | ir.cpp:2294:16:2294:17 | CallTarget | func:r2294_3 | | ir.cpp:2294:16:2294:17 | ChiPartial | partial:m2294_5 | | ir.cpp:2294:16:2294:17 | ChiPartial | partial:m2294_7 | -| ir.cpp:2294:16:2294:17 | ChiTotal | total:m2293_64 | +| ir.cpp:2294:16:2294:17 | ChiTotal | total:m2292_6 | | ir.cpp:2294:16:2294:17 | ChiTotal | total:m2294_2 | -| ir.cpp:2294:16:2294:17 | SideEffect | ~m2293_64 | +| ir.cpp:2294:16:2294:17 | SideEffect | ~m2292_6 | | ir.cpp:2295:5:2295:5 | Address | &:r2295_1 | | ir.cpp:2295:5:2295:5 | Address | &:r2295_1 | | ir.cpp:2295:5:2295:5 | Arg(this) | this:r2295_1 | @@ -12261,684 +12047,927 @@ | ir.cpp:2295:5:2295:5 | ChiTotal | total:m2294_8 | | ir.cpp:2295:5:2295:5 | SideEffect | m2294_8 | | ir.cpp:2295:5:2295:5 | SideEffect | ~m2294_6 | -| ir.cpp:2297:16:2297:16 | Address | &:r2297_1 | -| ir.cpp:2297:16:2297:16 | Address | &:r2297_1 | -| ir.cpp:2297:16:2297:16 | Address | &:r2297_50 | -| ir.cpp:2297:16:2297:16 | Address | &:r2297_50 | -| ir.cpp:2297:16:2297:16 | Arg(this) | this:r2297_1 | -| ir.cpp:2297:16:2297:16 | Arg(this) | this:r2297_50 | -| ir.cpp:2297:16:2297:16 | CallTarget | func:r2297_51 | -| ir.cpp:2297:16:2297:16 | ChiPartial | partial:m2297_53 | -| ir.cpp:2297:16:2297:16 | ChiPartial | partial:m2297_56 | -| ir.cpp:2297:16:2297:16 | ChiTotal | total:m2297_23 | -| ir.cpp:2297:16:2297:16 | ChiTotal | total:m2297_46 | -| ir.cpp:2297:16:2297:16 | SideEffect | m2297_23 | -| ir.cpp:2297:16:2297:16 | SideEffect | ~m2297_46 | -| ir.cpp:2297:18:2297:24 | Address | &:r2297_5 | -| ir.cpp:2297:18:2297:24 | Arg(0) | 0:r2297_5 | -| ir.cpp:2297:18:2297:24 | SideEffect | ~m2287_3 | -| ir.cpp:2297:18:2297:24 | Unary | r2297_4 | -| ir.cpp:2297:18:2297:25 | CallTarget | func:r2297_3 | -| ir.cpp:2297:18:2297:25 | ChiPartial | partial:m2297_7 | -| ir.cpp:2297:18:2297:25 | ChiPartial | partial:m2297_10 | -| ir.cpp:2297:18:2297:25 | ChiTotal | total:m2293_49 | -| ir.cpp:2297:18:2297:25 | ChiTotal | total:m2297_2 | -| ir.cpp:2297:18:2297:25 | SideEffect | ~m2293_49 | -| ir.cpp:2297:28:2297:29 | Address | &:r2297_12 | -| ir.cpp:2297:28:2297:29 | Address | &:r2297_12 | -| ir.cpp:2297:28:2297:29 | Address | &:r2297_42 | -| ir.cpp:2297:28:2297:29 | Address | &:r2297_42 | -| ir.cpp:2297:28:2297:29 | Arg(this) | this:r2297_12 | -| ir.cpp:2297:28:2297:29 | Arg(this) | this:r2297_42 | -| ir.cpp:2297:28:2297:29 | CallTarget | func:r2297_43 | -| ir.cpp:2297:28:2297:29 | ChiPartial | partial:m2297_45 | -| ir.cpp:2297:28:2297:29 | ChiPartial | partial:m2297_48 | -| ir.cpp:2297:28:2297:29 | ChiTotal | total:m2297_22 | -| ir.cpp:2297:28:2297:29 | ChiTotal | total:m2297_24 | -| ir.cpp:2297:28:2297:29 | SideEffect | m2297_22 | -| ir.cpp:2297:28:2297:29 | SideEffect | ~m2297_24 | -| ir.cpp:2297:31:2297:37 | Address | &:r2297_16 | -| ir.cpp:2297:31:2297:37 | Arg(0) | 0:r2297_16 | -| ir.cpp:2297:31:2297:37 | SideEffect | ~m2287_3 | -| ir.cpp:2297:31:2297:37 | Unary | r2297_15 | -| ir.cpp:2297:31:2297:38 | CallTarget | func:r2297_14 | -| ir.cpp:2297:31:2297:38 | ChiPartial | partial:m2297_18 | -| ir.cpp:2297:31:2297:38 | ChiPartial | partial:m2297_21 | -| ir.cpp:2297:31:2297:38 | ChiTotal | total:m2297_8 | -| ir.cpp:2297:31:2297:38 | ChiTotal | total:m2297_13 | -| ir.cpp:2297:31:2297:38 | SideEffect | ~m2297_8 | -| ir.cpp:2297:41:2297:41 | Address | &:r2297_26 | -| ir.cpp:2297:41:2297:41 | Left | r2297_28 | -| ir.cpp:2297:41:2297:41 | Load | m2297_25 | -| ir.cpp:2297:41:2297:41 | Phi | from 6:m2289_14 | -| ir.cpp:2297:41:2297:41 | Phi | from 6:m2297_11 | -| ir.cpp:2297:41:2297:41 | Phi | from 6:~m2297_19 | -| ir.cpp:2297:41:2297:41 | Phi | from 8:m2297_39 | -| ir.cpp:2297:41:2297:41 | Phi | from 8:m2297_41 | -| ir.cpp:2297:41:2297:41 | Phi | from 8:~m2297_36 | -| ir.cpp:2297:41:2297:41 | Unary | r2297_27 | -| ir.cpp:2297:41:2297:46 | Condition | r2297_30 | -| ir.cpp:2297:46:2297:46 | Right | r2297_29 | -| ir.cpp:2297:49:2297:49 | Address | &:r2297_40 | -| ir.cpp:2297:53:2297:53 | Address | &:r2297_32 | -| ir.cpp:2297:53:2297:53 | Address | &:r2297_32 | -| ir.cpp:2297:53:2297:53 | Arg(this) | this:r2297_32 | -| ir.cpp:2297:53:2297:53 | ChiPartial | partial:m2297_38 | -| ir.cpp:2297:53:2297:53 | ChiTotal | total:m2297_23 | -| ir.cpp:2297:53:2297:53 | SideEffect | m2297_23 | -| ir.cpp:2297:55:2297:62 | CallTarget | func:r2297_33 | -| ir.cpp:2297:55:2297:62 | ChiPartial | partial:m2297_35 | -| ir.cpp:2297:55:2297:62 | ChiTotal | total:m2297_24 | -| ir.cpp:2297:55:2297:62 | SideEffect | ~m2297_24 | -| ir.cpp:2297:55:2297:62 | StoreValue | r2297_34 | -| ir.cpp:2298:9:2298:9 | Address | &:r2298_2 | -| ir.cpp:2298:13:2298:13 | StoreValue | r2298_1 | -| ir.cpp:2302:6:2302:19 | ChiPartial | partial:m2302_3 | -| ir.cpp:2302:6:2302:19 | ChiTotal | total:m2302_2 | -| ir.cpp:2302:6:2302:19 | SideEffect | ~m2307_5 | -| ir.cpp:2302:26:2302:26 | Address | &:r2302_5 | -| ir.cpp:2303:15:2303:15 | Address | &:r2303_1 | -| ir.cpp:2303:15:2303:15 | Address | &:r2303_1 | -| ir.cpp:2303:15:2303:15 | Arg(this) | this:r2303_1 | -| ir.cpp:2303:18:2303:33 | CallTarget | func:r2303_3 | -| ir.cpp:2303:18:2303:33 | ChiPartial | partial:m2303_7 | -| ir.cpp:2303:18:2303:33 | ChiPartial | partial:m2303_10 | -| ir.cpp:2303:18:2303:33 | ChiTotal | total:m2302_4 | -| ir.cpp:2303:18:2303:33 | ChiTotal | total:m2303_2 | -| ir.cpp:2303:18:2303:33 | SideEffect | ~m2302_4 | -| ir.cpp:2303:26:2303:32 | Address | &:r2303_5 | -| ir.cpp:2303:26:2303:32 | Arg(0) | 0:r2303_5 | -| ir.cpp:2303:26:2303:32 | SideEffect | ~m2302_3 | -| ir.cpp:2303:26:2303:32 | Unary | r2303_4 | -| ir.cpp:2303:36:2303:36 | Address | &:r2303_12 | -| ir.cpp:2303:36:2303:36 | Condition | r2303_13 | -| ir.cpp:2303:36:2303:36 | Load | m2302_6 | -| ir.cpp:2304:13:2304:13 | Address | &:r2304_1 | -| ir.cpp:2304:16:2304:17 | StoreValue | r2304_2 | -| ir.cpp:2306:13:2306:13 | Address | &:r2306_1 | -| ir.cpp:2306:16:2306:17 | StoreValue | r2306_2 | +| ir.cpp:2296:16:2296:17 | Address | &:r2296_1 | +| ir.cpp:2296:16:2296:17 | Address | &:r2296_1 | +| ir.cpp:2296:16:2296:17 | Arg(this) | this:r2296_1 | +| ir.cpp:2296:16:2296:17 | CallTarget | func:r2296_3 | +| ir.cpp:2296:16:2296:17 | ChiPartial | partial:m2296_5 | +| ir.cpp:2296:16:2296:17 | ChiPartial | partial:m2296_7 | +| ir.cpp:2296:16:2296:17 | ChiTotal | total:m2292_6 | +| ir.cpp:2296:16:2296:17 | ChiTotal | total:m2296_2 | +| ir.cpp:2296:16:2296:17 | SideEffect | ~m2292_6 | +| ir.cpp:2297:5:2297:5 | Address | &:r2297_1 | +| ir.cpp:2297:5:2297:5 | Address | &:r2297_1 | +| ir.cpp:2297:5:2297:5 | Arg(this) | this:r2297_1 | +| ir.cpp:2297:5:2297:5 | CallTarget | func:r2297_2 | +| ir.cpp:2297:5:2297:5 | ChiPartial | partial:m2297_4 | +| ir.cpp:2297:5:2297:5 | ChiPartial | partial:m2297_7 | +| ir.cpp:2297:5:2297:5 | ChiTotal | total:m2296_6 | +| ir.cpp:2297:5:2297:5 | ChiTotal | total:m2296_8 | +| ir.cpp:2297:5:2297:5 | SideEffect | m2296_8 | +| ir.cpp:2297:5:2297:5 | SideEffect | ~m2296_6 | +| ir.cpp:2298:12:2298:13 | Address | &:r2298_2 | +| ir.cpp:2298:12:2298:13 | Address | &:r2298_2 | +| ir.cpp:2298:12:2298:13 | Arg(this) | this:r2298_2 | +| ir.cpp:2298:12:2298:13 | CallTarget | func:r2298_4 | +| ir.cpp:2298:12:2298:13 | ChiPartial | partial:m2298_6 | +| ir.cpp:2298:12:2298:13 | ChiPartial | partial:m2298_8 | +| ir.cpp:2298:12:2298:13 | ChiTotal | total:m2298_1 | +| ir.cpp:2298:12:2298:13 | ChiTotal | total:m2298_3 | +| ir.cpp:2298:12:2298:13 | Phi | from 1:~m2295_5 | +| ir.cpp:2298:12:2298:13 | Phi | from 2:~m2297_5 | +| ir.cpp:2298:12:2298:13 | SideEffect | ~m2298_1 | +| ir.cpp:2299:1:2299:1 | Address | &:r2299_2 | +| ir.cpp:2299:1:2299:1 | Address | &:r2299_2 | +| ir.cpp:2299:1:2299:1 | Address | &:r2299_10 | +| ir.cpp:2299:1:2299:1 | Address | &:r2299_10 | +| ir.cpp:2299:1:2299:1 | Arg(this) | this:r2299_2 | +| ir.cpp:2299:1:2299:1 | Arg(this) | this:r2299_10 | +| ir.cpp:2299:1:2299:1 | CallTarget | func:r2299_3 | +| ir.cpp:2299:1:2299:1 | CallTarget | func:r2299_11 | +| ir.cpp:2299:1:2299:1 | ChiPartial | partial:m2299_5 | +| ir.cpp:2299:1:2299:1 | ChiPartial | partial:m2299_8 | +| ir.cpp:2299:1:2299:1 | ChiPartial | partial:m2299_13 | +| ir.cpp:2299:1:2299:1 | ChiPartial | partial:m2299_16 | +| ir.cpp:2299:1:2299:1 | ChiTotal | total:m2292_8 | +| ir.cpp:2299:1:2299:1 | ChiTotal | total:m2298_7 | +| ir.cpp:2299:1:2299:1 | ChiTotal | total:m2298_9 | +| ir.cpp:2299:1:2299:1 | ChiTotal | total:m2299_6 | +| ir.cpp:2299:1:2299:1 | SideEffect | m2292_8 | +| ir.cpp:2299:1:2299:1 | SideEffect | m2298_9 | +| ir.cpp:2299:1:2299:1 | SideEffect | ~m2298_7 | +| ir.cpp:2299:1:2299:1 | SideEffect | ~m2299_6 | +| ir.cpp:2301:6:2301:19 | ChiPartial | partial:m2301_3 | +| ir.cpp:2301:6:2301:19 | ChiTotal | total:m2301_2 | +| ir.cpp:2301:6:2301:19 | SideEffect | ~m2311_54 | +| ir.cpp:2302:10:2302:10 | Address | &:r2302_1 | +| ir.cpp:2302:13:2302:16 | StoreValue | r2302_2 | +| ir.cpp:2303:16:2303:16 | Address | &:r2303_1 | +| ir.cpp:2303:16:2303:16 | Address | &:r2303_1 | +| ir.cpp:2303:16:2303:16 | Address | &:r2303_31 | +| ir.cpp:2303:16:2303:16 | Address | &:r2303_31 | +| ir.cpp:2303:16:2303:16 | Arg(this) | this:r2303_1 | +| ir.cpp:2303:16:2303:16 | Arg(this) | this:r2303_31 | +| ir.cpp:2303:16:2303:16 | CallTarget | func:r2303_32 | +| ir.cpp:2303:16:2303:16 | ChiPartial | partial:m2303_34 | +| ir.cpp:2303:16:2303:16 | ChiPartial | partial:m2303_37 | +| ir.cpp:2303:16:2303:16 | ChiTotal | total:m2303_12 | +| ir.cpp:2303:16:2303:16 | ChiTotal | total:m2303_13 | +| ir.cpp:2303:16:2303:16 | SideEffect | m2303_12 | +| ir.cpp:2303:16:2303:16 | SideEffect | ~m2303_13 | +| ir.cpp:2303:18:2303:24 | Address | &:r2303_5 | +| ir.cpp:2303:18:2303:24 | Arg(0) | 0:r2303_5 | +| ir.cpp:2303:18:2303:24 | SideEffect | ~m2301_3 | +| ir.cpp:2303:18:2303:24 | Unary | r2303_4 | +| ir.cpp:2303:18:2303:25 | CallTarget | func:r2303_3 | +| ir.cpp:2303:18:2303:25 | ChiPartial | partial:m2303_7 | +| ir.cpp:2303:18:2303:25 | ChiPartial | partial:m2303_10 | +| ir.cpp:2303:18:2303:25 | ChiTotal | total:m2301_4 | +| ir.cpp:2303:18:2303:25 | ChiTotal | total:m2303_2 | +| ir.cpp:2303:18:2303:25 | SideEffect | ~m2301_4 | +| ir.cpp:2303:28:2303:28 | Address | &:r2303_15 | +| ir.cpp:2303:28:2303:28 | Left | r2303_17 | +| ir.cpp:2303:28:2303:28 | Load | m2303_14 | +| ir.cpp:2303:28:2303:28 | Phi | from 0:m2302_3 | +| ir.cpp:2303:28:2303:28 | Phi | from 0:m2303_11 | +| ir.cpp:2303:28:2303:28 | Phi | from 0:~m2303_8 | +| ir.cpp:2303:28:2303:28 | Phi | from 2:m2303_28 | +| ir.cpp:2303:28:2303:28 | Phi | from 2:m2303_30 | +| ir.cpp:2303:28:2303:28 | Phi | from 2:~m2303_25 | +| ir.cpp:2303:28:2303:28 | Unary | r2303_16 | +| ir.cpp:2303:28:2303:33 | Condition | r2303_19 | +| ir.cpp:2303:33:2303:33 | Right | r2303_18 | +| ir.cpp:2303:36:2303:36 | Address | &:r2303_29 | +| ir.cpp:2303:40:2303:40 | Address | &:r2303_21 | +| ir.cpp:2303:40:2303:40 | Address | &:r2303_21 | +| ir.cpp:2303:40:2303:40 | Arg(this) | this:r2303_21 | +| ir.cpp:2303:40:2303:40 | ChiPartial | partial:m2303_27 | +| ir.cpp:2303:40:2303:40 | ChiTotal | total:m2303_12 | +| ir.cpp:2303:40:2303:40 | SideEffect | m2303_12 | +| ir.cpp:2303:42:2303:49 | CallTarget | func:r2303_22 | +| ir.cpp:2303:42:2303:49 | ChiPartial | partial:m2303_24 | +| ir.cpp:2303:42:2303:49 | ChiTotal | total:m2305_5 | +| ir.cpp:2303:42:2303:49 | SideEffect | ~m2305_5 | +| ir.cpp:2303:42:2303:49 | StoreValue | r2303_23 | +| ir.cpp:2304:16:2304:17 | Address | &:r2304_1 | +| ir.cpp:2304:16:2304:17 | Address | &:r2304_1 | +| ir.cpp:2304:16:2304:17 | Arg(this) | this:r2304_1 | +| ir.cpp:2304:16:2304:17 | CallTarget | func:r2304_3 | +| ir.cpp:2304:16:2304:17 | ChiPartial | partial:m2304_5 | +| ir.cpp:2304:16:2304:17 | ChiPartial | partial:m2304_7 | +| ir.cpp:2304:16:2304:17 | ChiTotal | total:m2303_13 | +| ir.cpp:2304:16:2304:17 | ChiTotal | total:m2304_2 | +| ir.cpp:2304:16:2304:17 | SideEffect | ~m2303_13 | +| ir.cpp:2305:5:2305:5 | Address | &:r2305_1 | +| ir.cpp:2305:5:2305:5 | Address | &:r2305_1 | +| ir.cpp:2305:5:2305:5 | Arg(this) | this:r2305_1 | +| ir.cpp:2305:5:2305:5 | CallTarget | func:r2305_2 | +| ir.cpp:2305:5:2305:5 | ChiPartial | partial:m2305_4 | +| ir.cpp:2305:5:2305:5 | ChiPartial | partial:m2305_7 | +| ir.cpp:2305:5:2305:5 | ChiTotal | total:m2304_6 | +| ir.cpp:2305:5:2305:5 | ChiTotal | total:m2304_8 | +| ir.cpp:2305:5:2305:5 | SideEffect | m2304_8 | +| ir.cpp:2305:5:2305:5 | SideEffect | ~m2304_6 | | ir.cpp:2307:5:2307:5 | Address | &:r2307_1 | -| ir.cpp:2307:5:2307:5 | Address | &:r2307_1 | -| ir.cpp:2307:5:2307:5 | Arg(this) | this:r2307_1 | -| ir.cpp:2307:5:2307:5 | CallTarget | func:r2307_2 | -| ir.cpp:2307:5:2307:5 | ChiPartial | partial:m2307_4 | -| ir.cpp:2307:5:2307:5 | ChiPartial | partial:m2307_7 | -| ir.cpp:2307:5:2307:5 | ChiTotal | total:m2303_8 | -| ir.cpp:2307:5:2307:5 | ChiTotal | total:m2303_11 | -| ir.cpp:2307:5:2307:5 | SideEffect | m2303_11 | -| ir.cpp:2307:5:2307:5 | SideEffect | ~m2303_8 | -| ir.cpp:2317:6:2317:19 | ChiPartial | partial:m2317_3 | -| ir.cpp:2317:6:2317:19 | ChiTotal | total:m2317_2 | -| ir.cpp:2317:6:2317:19 | SideEffect | ~m2322_14 | -| ir.cpp:2317:26:2317:26 | Address | &:r2317_5 | -| ir.cpp:2318:8:2318:23 | Address | &:r2318_1 | -| ir.cpp:2318:8:2318:23 | Address | &:r2318_1 | -| ir.cpp:2318:8:2318:23 | Arg(this) | this:r2318_1 | -| ir.cpp:2318:8:2318:23 | Condition | r2318_19 | -| ir.cpp:2318:13:2318:13 | Address | &:r2318_11 | -| ir.cpp:2318:13:2318:13 | Address | &:r2318_11 | -| ir.cpp:2318:13:2318:13 | Arg(this) | this:r2318_11 | -| ir.cpp:2318:13:2318:13 | CallTarget | func:r2318_12 | -| ir.cpp:2318:13:2318:13 | ChiPartial | partial:m2318_14 | -| ir.cpp:2318:13:2318:13 | ChiPartial | partial:m2318_17 | -| ir.cpp:2318:13:2318:13 | ChiTotal | total:m2318_8 | -| ir.cpp:2318:13:2318:13 | ChiTotal | total:m2318_10 | -| ir.cpp:2318:13:2318:13 | SideEffect | m2318_10 | -| ir.cpp:2318:13:2318:13 | SideEffect | ~m2318_8 | -| ir.cpp:2318:13:2318:13 | Unary | r2318_13 | -| ir.cpp:2318:16:2318:23 | CallTarget | func:r2318_3 | -| ir.cpp:2318:16:2318:23 | ChiPartial | partial:m2318_7 | -| ir.cpp:2318:16:2318:23 | ChiPartial | partial:m2318_9 | -| ir.cpp:2318:16:2318:23 | ChiTotal | total:m2317_4 | -| ir.cpp:2318:16:2318:23 | ChiTotal | total:m2318_2 | -| ir.cpp:2318:16:2318:23 | SideEffect | ~m2317_4 | -| ir.cpp:2318:22:2318:22 | Address | &:r2318_4 | -| ir.cpp:2318:22:2318:22 | Arg(0) | 0:r2318_5 | -| ir.cpp:2318:22:2318:22 | Load | m2317_6 | -| ir.cpp:2319:16:2319:17 | Address | &:r2319_1 | -| ir.cpp:2319:16:2319:17 | Address | &:r2319_1 | -| ir.cpp:2319:16:2319:17 | Arg(this) | this:r2319_1 | -| ir.cpp:2319:16:2319:17 | CallTarget | func:r2319_3 | -| ir.cpp:2319:16:2319:17 | ChiPartial | partial:m2319_5 | -| ir.cpp:2319:16:2319:17 | ChiPartial | partial:m2319_7 | -| ir.cpp:2319:16:2319:17 | ChiTotal | total:m2318_15 | -| ir.cpp:2319:16:2319:17 | ChiTotal | total:m2319_2 | -| ir.cpp:2319:16:2319:17 | SideEffect | ~m2318_15 | -| ir.cpp:2320:5:2320:5 | Address | &:r2320_1 | -| ir.cpp:2320:5:2320:5 | Address | &:r2320_1 | -| ir.cpp:2320:5:2320:5 | Arg(this) | this:r2320_1 | -| ir.cpp:2320:5:2320:5 | CallTarget | func:r2320_2 | -| ir.cpp:2320:5:2320:5 | ChiPartial | partial:m2320_4 | -| ir.cpp:2320:5:2320:5 | ChiPartial | partial:m2320_7 | -| ir.cpp:2320:5:2320:5 | ChiTotal | total:m2319_6 | -| ir.cpp:2320:5:2320:5 | ChiTotal | total:m2319_8 | -| ir.cpp:2320:5:2320:5 | SideEffect | m2319_8 | -| ir.cpp:2320:5:2320:5 | SideEffect | ~m2319_6 | -| ir.cpp:2321:16:2321:17 | Address | &:r2321_1 | -| ir.cpp:2321:16:2321:17 | Address | &:r2321_1 | -| ir.cpp:2321:16:2321:17 | Arg(this) | this:r2321_1 | -| ir.cpp:2321:16:2321:17 | CallTarget | func:r2321_3 | -| ir.cpp:2321:16:2321:17 | ChiPartial | partial:m2321_5 | -| ir.cpp:2321:16:2321:17 | ChiPartial | partial:m2321_7 | -| ir.cpp:2321:16:2321:17 | ChiTotal | total:m2318_15 | -| ir.cpp:2321:16:2321:17 | ChiTotal | total:m2321_2 | -| ir.cpp:2321:16:2321:17 | SideEffect | ~m2318_15 | -| ir.cpp:2322:5:2322:5 | Address | &:r2322_1 | -| ir.cpp:2322:5:2322:5 | Address | &:r2322_1 | -| ir.cpp:2322:5:2322:5 | Address | &:r2322_10 | -| ir.cpp:2322:5:2322:5 | Address | &:r2322_10 | -| ir.cpp:2322:5:2322:5 | Arg(this) | this:r2322_1 | -| ir.cpp:2322:5:2322:5 | Arg(this) | this:r2322_10 | -| ir.cpp:2322:5:2322:5 | CallTarget | func:r2322_2 | -| ir.cpp:2322:5:2322:5 | CallTarget | func:r2322_11 | -| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_4 | -| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_7 | -| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_13 | -| ir.cpp:2322:5:2322:5 | ChiPartial | partial:m2322_16 | -| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2318_18 | -| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2321_6 | -| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2321_8 | -| ir.cpp:2322:5:2322:5 | ChiTotal | total:m2322_9 | -| ir.cpp:2322:5:2322:5 | Phi | from 1:~m2320_5 | -| ir.cpp:2322:5:2322:5 | Phi | from 2:~m2322_5 | -| ir.cpp:2322:5:2322:5 | SideEffect | m2318_18 | -| ir.cpp:2322:5:2322:5 | SideEffect | m2321_8 | -| ir.cpp:2322:5:2322:5 | SideEffect | ~m2321_6 | -| ir.cpp:2322:5:2322:5 | SideEffect | ~m2322_9 | -| ir.cpp:2325:6:2325:25 | ChiPartial | partial:m2325_3 | -| ir.cpp:2325:6:2325:25 | ChiTotal | total:m2325_2 | -| ir.cpp:2325:6:2325:25 | SideEffect | ~m2336_13 | -| ir.cpp:2325:32:2325:32 | Address | &:r2325_5 | -| ir.cpp:2327:16:2327:16 | Address | &:r2327_1 | -| ir.cpp:2327:16:2327:16 | Address | &:r2327_1 | -| ir.cpp:2327:16:2327:16 | Arg(this) | this:r2327_1 | -| ir.cpp:2327:16:2327:16 | CallTarget | func:r2327_3 | -| ir.cpp:2327:16:2327:16 | ChiPartial | partial:m2327_5 | -| ir.cpp:2327:16:2327:16 | ChiPartial | partial:m2327_7 | -| ir.cpp:2327:16:2327:16 | ChiTotal | total:m2325_4 | -| ir.cpp:2327:16:2327:16 | ChiTotal | total:m2327_2 | -| ir.cpp:2327:16:2327:16 | SideEffect | ~m2325_4 | -| ir.cpp:2328:15:2328:15 | Address | &:r2328_2 | -| ir.cpp:2328:15:2328:15 | Condition | r2328_3 | -| ir.cpp:2328:15:2328:15 | Load | m2328_1 | -| ir.cpp:2328:15:2328:15 | Phi | from 0:m2325_6 | -| ir.cpp:2328:15:2328:15 | Phi | from 2:m2329_3 | -| ir.cpp:2329:13:2329:13 | Address | &:r2329_2 | -| ir.cpp:2329:17:2329:21 | StoreValue | r2329_1 | -| ir.cpp:2331:5:2331:5 | Address | &:r2331_1 | -| ir.cpp:2331:5:2331:5 | Address | &:r2331_1 | -| ir.cpp:2331:5:2331:5 | Arg(this) | this:r2331_1 | -| ir.cpp:2331:5:2331:5 | CallTarget | func:r2331_2 | -| ir.cpp:2331:5:2331:5 | ChiPartial | partial:m2331_4 | -| ir.cpp:2331:5:2331:5 | ChiPartial | partial:m2331_7 | -| ir.cpp:2331:5:2331:5 | ChiTotal | total:m2327_6 | -| ir.cpp:2331:5:2331:5 | ChiTotal | total:m2327_8 | -| ir.cpp:2331:5:2331:5 | SideEffect | m2327_8 | -| ir.cpp:2331:5:2331:5 | SideEffect | ~m2327_6 | -| ir.cpp:2334:16:2334:31 | Address | &:r2334_3 | -| ir.cpp:2334:16:2334:31 | Address | &:r2334_3 | -| ir.cpp:2334:16:2334:31 | Arg(this) | this:r2334_3 | -| ir.cpp:2334:16:2334:31 | Condition | r2334_21 | -| ir.cpp:2334:16:2334:31 | Phi | from 3:m2328_1 | -| ir.cpp:2334:16:2334:31 | Phi | from 3:~m2331_5 | -| ir.cpp:2334:16:2334:31 | Phi | from 5:m2335_3 | -| ir.cpp:2334:16:2334:31 | Phi | from 5:~m2336_5 | -| ir.cpp:2334:21:2334:21 | Address | &:r2334_13 | -| ir.cpp:2334:21:2334:21 | Address | &:r2334_13 | -| ir.cpp:2334:21:2334:21 | Arg(this) | this:r2334_13 | -| ir.cpp:2334:21:2334:21 | CallTarget | func:r2334_14 | -| ir.cpp:2334:21:2334:21 | ChiPartial | partial:m2334_16 | -| ir.cpp:2334:21:2334:21 | ChiPartial | partial:m2334_19 | -| ir.cpp:2334:21:2334:21 | ChiTotal | total:m2334_10 | -| ir.cpp:2334:21:2334:21 | ChiTotal | total:m2334_12 | -| ir.cpp:2334:21:2334:21 | SideEffect | m2334_12 | -| ir.cpp:2334:21:2334:21 | SideEffect | ~m2334_10 | -| ir.cpp:2334:21:2334:21 | Unary | r2334_15 | -| ir.cpp:2334:24:2334:31 | CallTarget | func:r2334_5 | -| ir.cpp:2334:24:2334:31 | ChiPartial | partial:m2334_9 | -| ir.cpp:2334:24:2334:31 | ChiPartial | partial:m2334_11 | -| ir.cpp:2334:24:2334:31 | ChiTotal | total:m2334_1 | -| ir.cpp:2334:24:2334:31 | ChiTotal | total:m2334_4 | -| ir.cpp:2334:24:2334:31 | SideEffect | ~m2334_1 | -| ir.cpp:2334:30:2334:30 | Address | &:r2334_6 | -| ir.cpp:2334:30:2334:30 | Arg(0) | 0:r2334_7 | -| ir.cpp:2334:30:2334:30 | Load | m2334_2 | -| ir.cpp:2335:13:2335:13 | Address | &:r2335_2 | -| ir.cpp:2335:17:2335:21 | StoreValue | r2335_1 | -| ir.cpp:2336:9:2336:9 | Address | &:r2336_1 | -| ir.cpp:2336:9:2336:9 | Address | &:r2336_1 | -| ir.cpp:2336:9:2336:9 | Address | &:r2336_9 | -| ir.cpp:2336:9:2336:9 | Address | &:r2336_9 | -| ir.cpp:2336:9:2336:9 | Arg(this) | this:r2336_1 | -| ir.cpp:2336:9:2336:9 | Arg(this) | this:r2336_9 | -| ir.cpp:2336:9:2336:9 | CallTarget | func:r2336_2 | -| ir.cpp:2336:9:2336:9 | CallTarget | func:r2336_10 | -| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_4 | -| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_7 | -| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_12 | -| ir.cpp:2336:9:2336:9 | ChiPartial | partial:m2336_15 | -| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_17 | -| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_17 | -| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_20 | -| ir.cpp:2336:9:2336:9 | ChiTotal | total:m2334_20 | -| ir.cpp:2336:9:2336:9 | SideEffect | m2334_20 | -| ir.cpp:2336:9:2336:9 | SideEffect | m2334_20 | -| ir.cpp:2336:9:2336:9 | SideEffect | ~m2334_17 | -| ir.cpp:2336:9:2336:9 | SideEffect | ~m2334_17 | -| ir.cpp:2340:6:2340:13 | ChiPartial | partial:m2340_3 | -| ir.cpp:2340:6:2340:13 | ChiTotal | total:m2340_2 | -| ir.cpp:2340:6:2340:13 | SideEffect | m2340_3 | -| ir.cpp:2342:6:2342:24 | ChiPartial | partial:m2342_3 | -| ir.cpp:2342:6:2342:24 | ChiTotal | total:m2342_2 | -| ir.cpp:2342:6:2342:24 | Phi | from 2:~m2351_5 | -| ir.cpp:2342:6:2342:24 | Phi | from 4:~m2351_13 | -| ir.cpp:2342:6:2342:24 | Phi | from 5:~m2351_22 | -| ir.cpp:2342:6:2342:24 | SideEffect | ~m2342_7 | -| ir.cpp:2342:31:2342:31 | Address | &:r2342_5 | -| ir.cpp:2343:12:2343:12 | Address | &:r2343_1 | -| ir.cpp:2343:12:2343:12 | Address | &:r2343_1 | -| ir.cpp:2343:12:2343:12 | Arg(this) | this:r2343_1 | -| ir.cpp:2343:12:2343:12 | CallTarget | func:r2343_3 | -| ir.cpp:2343:12:2343:12 | ChiPartial | partial:m2343_5 | -| ir.cpp:2343:12:2343:12 | ChiPartial | partial:m2343_7 | -| ir.cpp:2343:12:2343:12 | ChiTotal | total:m2342_4 | -| ir.cpp:2343:12:2343:12 | ChiTotal | total:m2343_2 | -| ir.cpp:2343:12:2343:12 | SideEffect | ~m2342_4 | -| ir.cpp:2344:8:2344:8 | Address | &:r2344_1 | -| ir.cpp:2344:8:2344:8 | Condition | r2344_2 | -| ir.cpp:2344:8:2344:8 | Load | m2342_6 | -| ir.cpp:2347:8:2347:8 | Address | &:r2347_1 | -| ir.cpp:2347:8:2347:8 | Condition | r2347_2 | -| ir.cpp:2347:8:2347:8 | Load | m2342_6 | -| ir.cpp:2348:16:2348:23 | CallTarget | func:r2348_1 | -| ir.cpp:2348:16:2348:23 | ChiPartial | partial:m2348_3 | -| ir.cpp:2348:16:2348:23 | ChiTotal | total:m2343_6 | -| ir.cpp:2348:16:2348:23 | SideEffect | ~m2343_6 | -| ir.cpp:2351:1:2351:1 | Address | &:r2351_1 | -| ir.cpp:2351:1:2351:1 | Address | &:r2351_1 | -| ir.cpp:2351:1:2351:1 | Address | &:r2351_9 | -| ir.cpp:2351:1:2351:1 | Address | &:r2351_9 | -| ir.cpp:2351:1:2351:1 | Address | &:r2351_18 | -| ir.cpp:2351:1:2351:1 | Address | &:r2351_18 | -| ir.cpp:2351:1:2351:1 | Arg(this) | this:r2351_1 | -| ir.cpp:2351:1:2351:1 | Arg(this) | this:r2351_9 | -| ir.cpp:2351:1:2351:1 | Arg(this) | this:r2351_18 | -| ir.cpp:2351:1:2351:1 | CallTarget | func:r2351_2 | -| ir.cpp:2351:1:2351:1 | CallTarget | func:r2351_10 | -| ir.cpp:2351:1:2351:1 | CallTarget | func:r2351_19 | -| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_4 | -| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_7 | -| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_12 | -| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_15 | -| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_21 | -| ir.cpp:2351:1:2351:1 | ChiPartial | partial:m2351_24 | -| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_6 | -| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_6 | -| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_8 | -| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_8 | -| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2343_8 | -| ir.cpp:2351:1:2351:1 | ChiTotal | total:m2348_4 | -| ir.cpp:2351:1:2351:1 | SideEffect | m2343_8 | -| ir.cpp:2351:1:2351:1 | SideEffect | m2343_8 | -| ir.cpp:2351:1:2351:1 | SideEffect | m2343_8 | -| ir.cpp:2351:1:2351:1 | SideEffect | ~m2343_6 | -| ir.cpp:2351:1:2351:1 | SideEffect | ~m2343_6 | -| ir.cpp:2351:1:2351:1 | SideEffect | ~m2348_4 | -| ir.cpp:2353:5:2353:24 | Address | &:r2353_9 | -| ir.cpp:2353:5:2353:24 | ChiPartial | partial:m2353_3 | -| ir.cpp:2353:5:2353:24 | ChiTotal | total:m2353_2 | -| ir.cpp:2353:5:2353:24 | Load | m2353_8 | -| ir.cpp:2353:5:2353:24 | Phi | from 2:m2356_3 | -| ir.cpp:2353:5:2353:24 | Phi | from 2:~m2359_5 | -| ir.cpp:2353:5:2353:24 | Phi | from 3:m2358_3 | -| ir.cpp:2353:5:2353:24 | Phi | from 3:~m2359_13 | -| ir.cpp:2353:5:2353:24 | SideEffect | ~m2353_7 | -| ir.cpp:2353:31:2353:31 | Address | &:r2353_5 | -| ir.cpp:2354:12:2354:12 | Address | &:r2354_1 | -| ir.cpp:2354:12:2354:12 | Address | &:r2354_1 | -| ir.cpp:2354:12:2354:12 | Arg(this) | this:r2354_1 | -| ir.cpp:2354:12:2354:12 | CallTarget | func:r2354_3 | -| ir.cpp:2354:12:2354:12 | ChiPartial | partial:m2354_5 | -| ir.cpp:2354:12:2354:12 | ChiPartial | partial:m2354_7 | -| ir.cpp:2354:12:2354:12 | ChiTotal | total:m2353_4 | -| ir.cpp:2354:12:2354:12 | ChiTotal | total:m2354_2 | -| ir.cpp:2354:12:2354:12 | SideEffect | ~m2353_4 | -| ir.cpp:2355:8:2355:8 | Address | &:r2355_1 | -| ir.cpp:2355:8:2355:8 | Condition | r2355_2 | -| ir.cpp:2355:8:2355:8 | Load | m2353_6 | -| ir.cpp:2356:9:2356:17 | Address | &:r2356_1 | -| ir.cpp:2356:16:2356:16 | StoreValue | r2356_2 | -| ir.cpp:2358:5:2358:13 | Address | &:r2358_1 | -| ir.cpp:2358:12:2358:12 | StoreValue | r2358_2 | -| ir.cpp:2359:1:2359:1 | Address | &:r2359_1 | -| ir.cpp:2359:1:2359:1 | Address | &:r2359_1 | -| ir.cpp:2359:1:2359:1 | Address | &:r2359_9 | -| ir.cpp:2359:1:2359:1 | Address | &:r2359_9 | -| ir.cpp:2359:1:2359:1 | Arg(this) | this:r2359_1 | -| ir.cpp:2359:1:2359:1 | Arg(this) | this:r2359_9 | -| ir.cpp:2359:1:2359:1 | CallTarget | func:r2359_2 | -| ir.cpp:2359:1:2359:1 | CallTarget | func:r2359_10 | -| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_4 | -| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_7 | -| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_12 | -| ir.cpp:2359:1:2359:1 | ChiPartial | partial:m2359_15 | -| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_6 | -| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_6 | -| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_8 | -| ir.cpp:2359:1:2359:1 | ChiTotal | total:m2354_8 | -| ir.cpp:2359:1:2359:1 | SideEffect | m2354_8 | -| ir.cpp:2359:1:2359:1 | SideEffect | m2354_8 | -| ir.cpp:2359:1:2359:1 | SideEffect | ~m2354_6 | -| ir.cpp:2359:1:2359:1 | SideEffect | ~m2354_6 | -| ir.cpp:2361:6:2361:26 | ChiPartial | partial:m2361_3 | -| ir.cpp:2361:6:2361:26 | ChiTotal | total:m2361_2 | -| ir.cpp:2361:6:2361:26 | SideEffect | ~m2364_5 | -| ir.cpp:2362:12:2362:12 | Address | &:r2362_1 | -| ir.cpp:2362:12:2362:12 | Address | &:r2362_1 | -| ir.cpp:2362:12:2362:12 | Arg(this) | this:r2362_1 | -| ir.cpp:2362:12:2362:12 | CallTarget | func:r2362_3 | -| ir.cpp:2362:12:2362:12 | ChiPartial | partial:m2362_5 | -| ir.cpp:2362:12:2362:12 | ChiPartial | partial:m2362_7 | -| ir.cpp:2362:12:2362:12 | ChiTotal | total:m2361_4 | -| ir.cpp:2362:12:2362:12 | ChiTotal | total:m2362_2 | -| ir.cpp:2362:12:2362:12 | SideEffect | ~m2361_4 | -| ir.cpp:2363:12:2363:19 | CallTarget | func:r2363_1 | -| ir.cpp:2363:12:2363:19 | ChiPartial | partial:m2363_3 | -| ir.cpp:2363:12:2363:19 | ChiTotal | total:m2362_6 | -| ir.cpp:2363:12:2363:19 | SideEffect | ~m2362_6 | -| ir.cpp:2364:1:2364:1 | Address | &:r2364_1 | -| ir.cpp:2364:1:2364:1 | Address | &:r2364_1 | -| ir.cpp:2364:1:2364:1 | Arg(this) | this:r2364_1 | -| ir.cpp:2364:1:2364:1 | CallTarget | func:r2364_2 | -| ir.cpp:2364:1:2364:1 | ChiPartial | partial:m2364_4 | -| ir.cpp:2364:1:2364:1 | ChiPartial | partial:m2364_7 | -| ir.cpp:2364:1:2364:1 | ChiTotal | total:m2362_8 | -| ir.cpp:2364:1:2364:1 | ChiTotal | total:m2363_4 | -| ir.cpp:2364:1:2364:1 | SideEffect | m2362_8 | -| ir.cpp:2364:1:2364:1 | SideEffect | ~m2363_4 | -| ir.cpp:2374:32:2374:47 | Address | &:r2374_5 | -| ir.cpp:2374:32:2374:47 | ChiPartial | partial:m2374_3 | -| ir.cpp:2374:32:2374:47 | ChiTotal | total:m2374_2 | -| ir.cpp:2374:32:2374:47 | Load | m2376_3 | -| ir.cpp:2374:32:2374:47 | SideEffect | m2374_3 | -| ir.cpp:2376:9:2376:44 | Address | &:r2376_1 | -| ir.cpp:2376:16:2376:43 | StoreValue | r2376_2 | -| ir.cpp:2381:5:2381:49 | Address | &:r2381_5 | -| ir.cpp:2381:5:2381:49 | ChiPartial | partial:m2381_3 | -| ir.cpp:2381:5:2381:49 | ChiTotal | total:m2381_2 | -| ir.cpp:2381:5:2381:49 | Load | m2382_5 | -| ir.cpp:2381:5:2381:49 | SideEffect | m2381_3 | -| ir.cpp:2382:5:2382:17 | Address | &:r2382_1 | -| ir.cpp:2382:12:2382:12 | Left | r2382_2 | -| ir.cpp:2382:12:2382:16 | StoreValue | r2382_4 | -| ir.cpp:2382:16:2382:16 | Right | r2382_3 | -| ir.cpp:2392:5:2392:45 | Address | &:r2392_5 | -| ir.cpp:2392:5:2392:45 | ChiPartial | partial:m2392_3 | -| ir.cpp:2392:5:2392:45 | ChiTotal | total:m2392_2 | -| ir.cpp:2392:5:2392:45 | Load | m2393_3 | -| ir.cpp:2392:5:2392:45 | SideEffect | m2392_3 | -| ir.cpp:2393:5:2393:22 | Address | &:r2393_1 | -| ir.cpp:2393:12:2393:21 | StoreValue | r2393_2 | -| ir.cpp:2396:6:2396:40 | ChiPartial | partial:m2396_3 | -| ir.cpp:2396:6:2396:40 | ChiTotal | total:m2396_2 | -| ir.cpp:2396:6:2396:40 | SideEffect | ~m2416_56 | -| ir.cpp:2397:9:2397:46 | Address | &:r2397_1 | -| ir.cpp:2397:9:2397:46 | Condition | r2397_22 | -| ir.cpp:2397:14:2397:14 | Address | &:r2397_18 | -| ir.cpp:2397:14:2397:14 | Left | r2397_19 | -| ir.cpp:2397:14:2397:14 | Load | m2397_17 | -| ir.cpp:2397:14:2397:14 | Right | r2397_20 | -| ir.cpp:2397:14:2397:14 | Unary | r2397_21 | -| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | -| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | -| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | -| ir.cpp:2397:18:2397:38 | Address | &:r2397_2 | -| ir.cpp:2397:18:2397:38 | Arg(this) | this:r2397_2 | -| ir.cpp:2397:18:2397:38 | Arg(this) | this:r2397_2 | -| ir.cpp:2397:18:2397:38 | CallTarget | func:r2397_4 | -| ir.cpp:2397:18:2397:38 | ChiPartial | partial:m2397_6 | -| ir.cpp:2397:18:2397:38 | ChiPartial | partial:m2397_8 | -| ir.cpp:2397:18:2397:38 | ChiPartial | partial:m2397_15 | -| ir.cpp:2397:18:2397:38 | ChiTotal | total:m2396_4 | -| ir.cpp:2397:18:2397:38 | ChiTotal | total:m2397_3 | -| ir.cpp:2397:18:2397:38 | ChiTotal | total:m2397_9 | -| ir.cpp:2397:18:2397:38 | SideEffect | m2397_9 | -| ir.cpp:2397:18:2397:38 | SideEffect | ~m2396_4 | -| ir.cpp:2397:40:2397:44 | CallTarget | func:r2397_10 | -| ir.cpp:2397:40:2397:44 | ChiPartial | partial:m2397_12 | -| ir.cpp:2397:40:2397:44 | ChiTotal | total:m2397_7 | -| ir.cpp:2397:40:2397:44 | SideEffect | ~m2397_7 | -| ir.cpp:2397:40:2397:44 | StoreValue | r2397_11 | -| ir.cpp:2398:9:2398:9 | Address | &:r2398_1 | -| ir.cpp:2398:9:2398:9 | Address | &:r2398_1 | -| ir.cpp:2398:9:2398:9 | Left | r2398_2 | -| ir.cpp:2398:9:2398:9 | Load | m2397_17 | -| ir.cpp:2398:9:2398:11 | Right | r2398_3 | -| ir.cpp:2398:9:2398:11 | StoreValue | r2398_4 | -| ir.cpp:2400:14:2400:14 | Address | &:r2400_1 | -| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | -| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | -| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | -| ir.cpp:2400:18:2400:38 | Address | &:r2400_2 | -| ir.cpp:2400:18:2400:38 | Arg(this) | this:r2400_2 | -| ir.cpp:2400:18:2400:38 | Arg(this) | this:r2400_2 | -| ir.cpp:2400:18:2400:38 | CallTarget | func:r2400_4 | -| ir.cpp:2400:18:2400:38 | ChiPartial | partial:m2400_6 | -| ir.cpp:2400:18:2400:38 | ChiPartial | partial:m2400_8 | -| ir.cpp:2400:18:2400:38 | ChiPartial | partial:m2400_15 | -| ir.cpp:2400:18:2400:38 | ChiTotal | total:m2397_13 | -| ir.cpp:2400:18:2400:38 | ChiTotal | total:m2400_3 | -| ir.cpp:2400:18:2400:38 | ChiTotal | total:m2400_9 | -| ir.cpp:2400:18:2400:38 | SideEffect | m2400_9 | -| ir.cpp:2400:18:2400:38 | SideEffect | ~m2397_13 | -| ir.cpp:2400:40:2400:44 | CallTarget | func:r2400_10 | -| ir.cpp:2400:40:2400:44 | ChiPartial | partial:m2400_12 | -| ir.cpp:2400:40:2400:44 | ChiTotal | total:m2400_7 | -| ir.cpp:2400:40:2400:44 | SideEffect | ~m2400_7 | -| ir.cpp:2400:40:2400:44 | StoreValue | r2400_11 | -| ir.cpp:2400:49:2400:49 | Address | &:r2400_18 | -| ir.cpp:2400:49:2400:49 | Condition | r2400_21 | -| ir.cpp:2400:49:2400:49 | Left | r2400_19 | -| ir.cpp:2400:49:2400:49 | Load | m2400_17 | -| ir.cpp:2400:49:2400:49 | Right | r2400_20 | -| ir.cpp:2401:9:2401:9 | Address | &:r2401_1 | -| ir.cpp:2401:9:2401:9 | Address | &:r2401_1 | -| ir.cpp:2401:9:2401:9 | Left | r2401_2 | -| ir.cpp:2401:9:2401:9 | Load | m2400_17 | -| ir.cpp:2401:9:2401:11 | Right | r2401_3 | -| ir.cpp:2401:9:2401:11 | StoreValue | r2401_4 | -| ir.cpp:2403:24:2403:24 | Address | &:r2403_1 | -| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | -| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | -| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | -| ir.cpp:2403:28:2403:48 | Address | &:r2403_2 | -| ir.cpp:2403:28:2403:48 | Arg(this) | this:r2403_2 | -| ir.cpp:2403:28:2403:48 | Arg(this) | this:r2403_2 | -| ir.cpp:2403:28:2403:48 | CallTarget | func:r2403_4 | -| ir.cpp:2403:28:2403:48 | ChiPartial | partial:m2403_6 | -| ir.cpp:2403:28:2403:48 | ChiPartial | partial:m2403_8 | -| ir.cpp:2403:28:2403:48 | ChiPartial | partial:m2403_15 | -| ir.cpp:2403:28:2403:48 | ChiTotal | total:m2400_13 | -| ir.cpp:2403:28:2403:48 | ChiTotal | total:m2403_3 | -| ir.cpp:2403:28:2403:48 | ChiTotal | total:m2403_9 | -| ir.cpp:2403:28:2403:48 | SideEffect | m2403_9 | -| ir.cpp:2403:28:2403:48 | SideEffect | ~m2400_13 | -| ir.cpp:2403:50:2403:54 | CallTarget | func:r2403_10 | -| ir.cpp:2403:50:2403:54 | ChiPartial | partial:m2403_12 | -| ir.cpp:2403:50:2403:54 | ChiTotal | total:m2403_7 | -| ir.cpp:2403:50:2403:54 | SideEffect | ~m2403_7 | -| ir.cpp:2403:50:2403:54 | StoreValue | r2403_11 | -| ir.cpp:2403:59:2403:93 | Condition | r2403_18 | -| ir.cpp:2404:9:2404:9 | Address | &:r2404_1 | -| ir.cpp:2404:9:2404:9 | Address | &:r2404_1 | -| ir.cpp:2404:9:2404:9 | Left | r2404_2 | -| ir.cpp:2404:9:2404:9 | Load | m2403_17 | -| ir.cpp:2404:9:2404:11 | Right | r2404_3 | -| ir.cpp:2404:9:2404:11 | StoreValue | r2404_4 | -| ir.cpp:2406:12:2406:49 | Address | &:r2406_1 | -| ir.cpp:2406:12:2406:49 | Condition | r2406_21 | -| ir.cpp:2406:17:2406:17 | Address | &:r2406_18 | -| ir.cpp:2406:17:2406:17 | Load | m2406_17 | -| ir.cpp:2406:17:2406:17 | Unary | r2406_19 | -| ir.cpp:2406:17:2406:17 | Unary | r2406_20 | -| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | -| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | -| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | -| ir.cpp:2406:21:2406:41 | Address | &:r2406_2 | -| ir.cpp:2406:21:2406:41 | Arg(this) | this:r2406_2 | -| ir.cpp:2406:21:2406:41 | Arg(this) | this:r2406_2 | -| ir.cpp:2406:21:2406:41 | CallTarget | func:r2406_4 | -| ir.cpp:2406:21:2406:41 | ChiPartial | partial:m2406_6 | -| ir.cpp:2406:21:2406:41 | ChiPartial | partial:m2406_8 | -| ir.cpp:2406:21:2406:41 | ChiPartial | partial:m2406_15 | -| ir.cpp:2406:21:2406:41 | ChiTotal | total:m2403_13 | -| ir.cpp:2406:21:2406:41 | ChiTotal | total:m2406_3 | -| ir.cpp:2406:21:2406:41 | ChiTotal | total:m2406_9 | -| ir.cpp:2406:21:2406:41 | SideEffect | m2406_9 | -| ir.cpp:2406:21:2406:41 | SideEffect | ~m2403_13 | -| ir.cpp:2406:43:2406:47 | CallTarget | func:r2406_10 | -| ir.cpp:2406:43:2406:47 | ChiPartial | partial:m2406_12 | -| ir.cpp:2406:43:2406:47 | ChiTotal | total:m2406_7 | -| ir.cpp:2406:43:2406:47 | SideEffect | ~m2406_7 | -| ir.cpp:2406:43:2406:47 | StoreValue | r2406_11 | -| ir.cpp:2408:11:2408:11 | Address | &:r2408_1 | -| ir.cpp:2408:11:2408:11 | Address | &:r2408_1 | -| ir.cpp:2408:11:2408:11 | Left | r2408_2 | -| ir.cpp:2408:11:2408:11 | Load | m2406_17 | -| ir.cpp:2408:11:2408:13 | Right | r2408_3 | -| ir.cpp:2408:11:2408:13 | StoreValue | r2408_4 | -| ir.cpp:2411:17:2411:17 | Address | &:r2411_1 | -| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | -| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | -| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | -| ir.cpp:2411:21:2411:41 | Address | &:r2411_2 | -| ir.cpp:2411:21:2411:41 | Arg(this) | this:r2411_2 | -| ir.cpp:2411:21:2411:41 | Arg(this) | this:r2411_2 | -| ir.cpp:2411:21:2411:41 | CallTarget | func:r2411_4 | -| ir.cpp:2411:21:2411:41 | ChiPartial | partial:m2411_6 | -| ir.cpp:2411:21:2411:41 | ChiPartial | partial:m2411_8 | -| ir.cpp:2411:21:2411:41 | ChiPartial | partial:m2411_15 | -| ir.cpp:2411:21:2411:41 | ChiTotal | total:m2406_13 | -| ir.cpp:2411:21:2411:41 | ChiTotal | total:m2411_3 | -| ir.cpp:2411:21:2411:41 | ChiTotal | total:m2411_9 | -| ir.cpp:2411:21:2411:41 | SideEffect | m2411_9 | -| ir.cpp:2411:21:2411:41 | SideEffect | ~m2406_13 | -| ir.cpp:2411:43:2411:47 | CallTarget | func:r2411_10 | -| ir.cpp:2411:43:2411:47 | ChiPartial | partial:m2411_12 | -| ir.cpp:2411:43:2411:47 | ChiTotal | total:m2411_7 | -| ir.cpp:2411:43:2411:47 | SideEffect | ~m2411_7 | -| ir.cpp:2411:43:2411:47 | StoreValue | r2411_11 | -| ir.cpp:2411:52:2411:52 | Address | &:r2411_18 | -| ir.cpp:2411:52:2411:52 | Condition | r2411_20 | -| ir.cpp:2411:52:2411:52 | Load | m2411_17 | -| ir.cpp:2411:52:2411:52 | Unary | r2411_19 | -| ir.cpp:2413:11:2413:11 | Address | &:r2413_1 | -| ir.cpp:2413:11:2413:11 | Address | &:r2413_1 | -| ir.cpp:2413:11:2413:11 | Left | r2413_2 | -| ir.cpp:2413:11:2413:11 | Load | m2411_17 | -| ir.cpp:2413:11:2413:13 | Right | r2413_3 | -| ir.cpp:2413:11:2413:13 | StoreValue | r2413_4 | -| ir.cpp:2416:5:2416:5 | Address | &:r2416_18 | -| ir.cpp:2416:5:2416:5 | Address | &:r2416_31 | -| ir.cpp:2416:5:2416:5 | Address | &:r2416_37 | -| ir.cpp:2416:14:2416:14 | Address | &:r2416_1 | -| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | -| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | -| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | -| ir.cpp:2416:18:2416:38 | Address | &:r2416_2 | -| ir.cpp:2416:18:2416:38 | Arg(this) | this:r2416_2 | -| ir.cpp:2416:18:2416:38 | Arg(this) | this:r2416_2 | -| ir.cpp:2416:18:2416:38 | CallTarget | func:r2416_4 | -| ir.cpp:2416:18:2416:38 | ChiPartial | partial:m2416_6 | -| ir.cpp:2416:18:2416:38 | ChiPartial | partial:m2416_8 | -| ir.cpp:2416:18:2416:38 | ChiPartial | partial:m2416_15 | -| ir.cpp:2416:18:2416:38 | ChiTotal | total:m2411_13 | -| ir.cpp:2416:18:2416:38 | ChiTotal | total:m2416_3 | -| ir.cpp:2416:18:2416:38 | ChiTotal | total:m2416_9 | -| ir.cpp:2416:18:2416:38 | SideEffect | m2416_9 | -| ir.cpp:2416:18:2416:38 | SideEffect | ~m2411_13 | -| ir.cpp:2416:40:2416:44 | CallTarget | func:r2416_10 | -| ir.cpp:2416:40:2416:44 | ChiPartial | partial:m2416_12 | -| ir.cpp:2416:40:2416:44 | ChiTotal | total:m2416_7 | -| ir.cpp:2416:40:2416:44 | SideEffect | ~m2416_7 | -| ir.cpp:2416:40:2416:44 | StoreValue | r2416_11 | -| ir.cpp:2416:54:2416:54 | Address | &:r2416_58 | -| ir.cpp:2416:58:2416:58 | Address | &:r2416_32 | -| ir.cpp:2416:58:2416:58 | Address | &:r2416_38 | -| ir.cpp:2416:58:2416:58 | Address | &:r2416_61 | -| ir.cpp:2416:58:2416:58 | Address | &:r2416_66 | -| ir.cpp:2416:58:2416:58 | Address | &:r2416_66 | -| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_2 | -| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_5 | -| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_7 | -| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_8 | -| ir.cpp:2416:58:2416:58 | Arg(this) | this:r0_15 | -| ir.cpp:2416:58:2416:58 | Arg(this) | this:r2416_66 | -| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_34 | -| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_40 | -| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_46 | -| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_47 | -| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_60 | -| ir.cpp:2416:58:2416:58 | CallTarget | func:r2416_67 | -| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_50 | -| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_52 | -| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_55 | -| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_62 | -| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_69 | -| ir.cpp:2416:58:2416:58 | ChiPartial | partial:m2416_72 | -| ir.cpp:2416:58:2416:58 | ChiTotal | total:m0_9 | -| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_43 | -| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_44 | -| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_51 | -| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_56 | -| ir.cpp:2416:58:2416:58 | ChiTotal | total:m2416_63 | -| ir.cpp:2416:58:2416:58 | Condition | r2416_54 | -| ir.cpp:2416:58:2416:58 | Load | m2416_30 | -| ir.cpp:2416:58:2416:58 | Load | m2416_30 | -| ir.cpp:2416:58:2416:58 | Phi | from 9:m2416_36 | -| ir.cpp:2416:58:2416:58 | Phi | from 9:~m2416_26 | -| ir.cpp:2416:58:2416:58 | Phi | from 11:m2416_73 | -| ir.cpp:2416:58:2416:58 | Phi | from 11:~m2416_70 | -| ir.cpp:2416:58:2416:58 | SideEffect | m2416_43 | -| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_44 | -| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_51 | -| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_56 | -| ir.cpp:2416:58:2416:58 | SideEffect | ~m2416_63 | -| ir.cpp:2416:58:2416:58 | StoreValue | r2416_35 | -| ir.cpp:2416:58:2416:58 | StoreValue | r2416_41 | -| ir.cpp:2416:58:2416:58 | Unary | r2416_33 | -| ir.cpp:2416:58:2416:58 | Unary | r2416_39 | -| ir.cpp:2416:58:2416:58 | Unary | r2416_45 | -| ir.cpp:2416:58:2416:58 | Unary | r2416_48 | -| ir.cpp:2416:58:2416:58 | Unary | r2416_59 | -| ir.cpp:2416:58:2416:58 | Unary | r2416_68 | -| ir.cpp:2416:58:2416:77 | Address | &:r2416_19 | -| ir.cpp:2416:58:2416:77 | Address | &:r2416_19 | -| ir.cpp:2416:58:2416:77 | Arg(this) | this:r2416_19 | -| ir.cpp:2416:58:2416:77 | CallTarget | func:r2416_21 | -| ir.cpp:2416:58:2416:77 | ChiPartial | partial:m2416_25 | -| ir.cpp:2416:58:2416:77 | ChiPartial | partial:m2416_27 | -| ir.cpp:2416:58:2416:77 | ChiTotal | total:m2416_13 | -| ir.cpp:2416:58:2416:77 | ChiTotal | total:m2416_20 | -| ir.cpp:2416:58:2416:77 | SideEffect | ~m2416_13 | -| ir.cpp:2416:58:2416:77 | StoreValue | r2416_29 | -| ir.cpp:2416:58:2416:77 | Unary | r2416_19 | -| ir.cpp:2416:58:2416:78 | Load | ~m2416_63 | -| ir.cpp:2416:58:2416:78 | StoreValue | r2416_64 | -| ir.cpp:2416:76:2416:76 | Address | &:r2416_22 | -| ir.cpp:2416:76:2416:76 | Arg(0) | 0:r2416_23 | -| ir.cpp:2416:76:2416:76 | Load | m2416_17 | -| ir.cpp:2417:9:2417:9 | Address | &:r2417_4 | -| ir.cpp:2417:9:2417:9 | Address | &:r2417_4 | -| ir.cpp:2417:9:2417:9 | Load | m2416_65 | -| ir.cpp:2417:9:2417:9 | Unary | r2417_5 | -| ir.cpp:2417:9:2417:14 | Left | r2417_6 | -| ir.cpp:2417:9:2417:14 | StoreValue | r2417_8 | -| ir.cpp:2417:9:2417:14 | Unary | r2417_7 | -| ir.cpp:2417:14:2417:14 | Address | &:r2417_1 | -| ir.cpp:2417:14:2417:14 | Load | m2416_17 | -| ir.cpp:2417:14:2417:14 | Right | r2417_3 | -| ir.cpp:2417:14:2417:14 | Unary | r2417_2 | +| ir.cpp:2307:5:2307:5 | Address | &:r2307_24 | +| ir.cpp:2307:5:2307:5 | Address | &:r2307_30 | +| ir.cpp:2307:16:2307:16 | Address | &:r2307_51 | +| ir.cpp:2307:16:2307:16 | Address | &:r2307_51 | +| ir.cpp:2307:16:2307:16 | Address | &:r2307_68 | +| ir.cpp:2307:16:2307:16 | Address | &:r2307_68 | +| ir.cpp:2307:16:2307:16 | Arg(this) | this:r2307_51 | +| ir.cpp:2307:16:2307:16 | Arg(this) | this:r2307_68 | +| ir.cpp:2307:16:2307:16 | CallTarget | func:r2307_53 | +| ir.cpp:2307:16:2307:16 | CallTarget | func:r2307_69 | +| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_63 | +| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_66 | +| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_71 | +| ir.cpp:2307:16:2307:16 | ChiPartial | partial:m2307_74 | +| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_52 | +| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_58 | +| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2307_67 | +| ir.cpp:2307:16:2307:16 | ChiTotal | total:m2309_5 | +| ir.cpp:2307:16:2307:16 | SideEffect | m2307_67 | +| ir.cpp:2307:16:2307:16 | SideEffect | ~m2307_58 | +| ir.cpp:2307:16:2307:16 | SideEffect | ~m2309_5 | +| ir.cpp:2307:20:2307:20 | Address | &:r2307_25 | +| ir.cpp:2307:20:2307:20 | Address | &:r2307_31 | +| ir.cpp:2307:20:2307:20 | Address | &:r2307_76 | +| ir.cpp:2307:20:2307:20 | Address | &:r2307_76 | +| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_2 | +| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_5 | +| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_7 | +| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_8 | +| ir.cpp:2307:20:2307:20 | Arg(this) | this:r0_15 | +| ir.cpp:2307:20:2307:20 | Arg(this) | this:r2307_76 | +| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_27 | +| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_33 | +| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_39 | +| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_40 | +| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_55 | +| ir.cpp:2307:20:2307:20 | CallTarget | func:r2307_77 | +| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_43 | +| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_45 | +| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_48 | +| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_57 | +| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_79 | +| ir.cpp:2307:20:2307:20 | ChiPartial | partial:m2307_82 | +| ir.cpp:2307:20:2307:20 | ChiTotal | total:m0_9 | +| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_36 | +| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_37 | +| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_44 | +| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_49 | +| ir.cpp:2307:20:2307:20 | ChiTotal | total:m2307_72 | +| ir.cpp:2307:20:2307:20 | Condition | r2307_47 | +| ir.cpp:2307:20:2307:20 | Load | m2307_23 | +| ir.cpp:2307:20:2307:20 | Load | m2307_23 | +| ir.cpp:2307:20:2307:20 | Phi | from 3:m2307_29 | +| ir.cpp:2307:20:2307:20 | Phi | from 3:~m2307_19 | +| ir.cpp:2307:20:2307:20 | Phi | from 5:m2307_83 | +| ir.cpp:2307:20:2307:20 | Phi | from 5:~m2307_80 | +| ir.cpp:2307:20:2307:20 | SideEffect | m2307_36 | +| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_37 | +| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_44 | +| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_49 | +| ir.cpp:2307:20:2307:20 | SideEffect | ~m2307_72 | +| ir.cpp:2307:20:2307:20 | StoreValue | r2307_28 | +| ir.cpp:2307:20:2307:20 | StoreValue | r2307_34 | +| ir.cpp:2307:20:2307:20 | Unary | r2307_26 | +| ir.cpp:2307:20:2307:20 | Unary | r2307_32 | +| ir.cpp:2307:20:2307:20 | Unary | r2307_38 | +| ir.cpp:2307:20:2307:20 | Unary | r2307_41 | +| ir.cpp:2307:20:2307:20 | Unary | r2307_54 | +| ir.cpp:2307:20:2307:20 | Unary | r2307_56 | +| ir.cpp:2307:20:2307:20 | Unary | r2307_78 | +| ir.cpp:2307:20:2307:55 | Address | &:r2307_2 | +| ir.cpp:2307:20:2307:55 | Address | &:r2307_2 | +| ir.cpp:2307:20:2307:55 | Arg(this) | this:r2307_2 | +| ir.cpp:2307:20:2307:55 | CallTarget | func:r2307_4 | +| ir.cpp:2307:20:2307:55 | ChiPartial | partial:m2307_18 | +| ir.cpp:2307:20:2307:55 | ChiPartial | partial:m2307_20 | +| ir.cpp:2307:20:2307:55 | ChiTotal | total:m2307_3 | +| ir.cpp:2307:20:2307:55 | ChiTotal | total:m2307_12 | +| ir.cpp:2307:20:2307:55 | SideEffect | ~m2307_12 | +| ir.cpp:2307:20:2307:55 | StoreValue | r2307_22 | +| ir.cpp:2307:20:2307:55 | Unary | r2307_2 | +| ir.cpp:2307:20:2307:56 | Address | &:r2307_61 | +| ir.cpp:2307:20:2307:56 | Arg(0) | 0:r2307_61 | +| ir.cpp:2307:20:2307:56 | SideEffect | ~m2307_64 | +| ir.cpp:2307:20:2307:56 | Unary | r2307_59 | +| ir.cpp:2307:20:2307:56 | Unary | r2307_60 | +| ir.cpp:2307:40:2307:54 | Address | &:r2307_5 | +| ir.cpp:2307:40:2307:54 | Address | &:r2307_5 | +| ir.cpp:2307:40:2307:54 | Address | &:r2307_5 | +| ir.cpp:2307:40:2307:54 | Arg(0) | 0:r2307_16 | +| ir.cpp:2307:40:2307:54 | Arg(this) | this:r2307_5 | +| ir.cpp:2307:40:2307:54 | CallTarget | func:r2307_7 | +| ir.cpp:2307:40:2307:54 | ChiPartial | partial:m2307_11 | +| ir.cpp:2307:40:2307:54 | ChiPartial | partial:m2307_14 | +| ir.cpp:2307:40:2307:54 | ChiTotal | total:m2303_35 | +| ir.cpp:2307:40:2307:54 | ChiTotal | total:m2307_6 | +| ir.cpp:2307:40:2307:54 | Load | m2307_15 | +| ir.cpp:2307:40:2307:54 | SideEffect | ~m2303_35 | +| ir.cpp:2307:47:2307:53 | Address | &:r2307_9 | +| ir.cpp:2307:47:2307:53 | Arg(0) | 0:r2307_9 | +| ir.cpp:2307:47:2307:53 | SideEffect | ~m2301_3 | +| ir.cpp:2307:47:2307:53 | Unary | r2307_8 | +| ir.cpp:2308:16:2308:17 | Address | &:r2308_1 | +| ir.cpp:2308:16:2308:17 | Address | &:r2308_1 | +| ir.cpp:2308:16:2308:17 | Arg(this) | this:r2308_1 | +| ir.cpp:2308:16:2308:17 | CallTarget | func:r2308_3 | +| ir.cpp:2308:16:2308:17 | ChiPartial | partial:m2308_5 | +| ir.cpp:2308:16:2308:17 | ChiPartial | partial:m2308_7 | +| ir.cpp:2308:16:2308:17 | ChiTotal | total:m2307_64 | +| ir.cpp:2308:16:2308:17 | ChiTotal | total:m2308_2 | +| ir.cpp:2308:16:2308:17 | SideEffect | ~m2307_64 | +| ir.cpp:2309:5:2309:5 | Address | &:r2309_1 | +| ir.cpp:2309:5:2309:5 | Address | &:r2309_1 | +| ir.cpp:2309:5:2309:5 | Arg(this) | this:r2309_1 | +| ir.cpp:2309:5:2309:5 | CallTarget | func:r2309_2 | +| ir.cpp:2309:5:2309:5 | ChiPartial | partial:m2309_4 | +| ir.cpp:2309:5:2309:5 | ChiPartial | partial:m2309_7 | +| ir.cpp:2309:5:2309:5 | ChiTotal | total:m2308_6 | +| ir.cpp:2309:5:2309:5 | ChiTotal | total:m2308_8 | +| ir.cpp:2309:5:2309:5 | SideEffect | m2308_8 | +| ir.cpp:2309:5:2309:5 | SideEffect | ~m2308_6 | +| ir.cpp:2311:16:2311:16 | Address | &:r2311_1 | +| ir.cpp:2311:16:2311:16 | Address | &:r2311_1 | +| ir.cpp:2311:16:2311:16 | Address | &:r2311_50 | +| ir.cpp:2311:16:2311:16 | Address | &:r2311_50 | +| ir.cpp:2311:16:2311:16 | Arg(this) | this:r2311_1 | +| ir.cpp:2311:16:2311:16 | Arg(this) | this:r2311_50 | +| ir.cpp:2311:16:2311:16 | CallTarget | func:r2311_51 | +| ir.cpp:2311:16:2311:16 | ChiPartial | partial:m2311_53 | +| ir.cpp:2311:16:2311:16 | ChiPartial | partial:m2311_56 | +| ir.cpp:2311:16:2311:16 | ChiTotal | total:m2311_23 | +| ir.cpp:2311:16:2311:16 | ChiTotal | total:m2311_46 | +| ir.cpp:2311:16:2311:16 | SideEffect | m2311_23 | +| ir.cpp:2311:16:2311:16 | SideEffect | ~m2311_46 | +| ir.cpp:2311:18:2311:24 | Address | &:r2311_5 | +| ir.cpp:2311:18:2311:24 | Arg(0) | 0:r2311_5 | +| ir.cpp:2311:18:2311:24 | SideEffect | ~m2301_3 | +| ir.cpp:2311:18:2311:24 | Unary | r2311_4 | +| ir.cpp:2311:18:2311:25 | CallTarget | func:r2311_3 | +| ir.cpp:2311:18:2311:25 | ChiPartial | partial:m2311_7 | +| ir.cpp:2311:18:2311:25 | ChiPartial | partial:m2311_10 | +| ir.cpp:2311:18:2311:25 | ChiTotal | total:m2307_49 | +| ir.cpp:2311:18:2311:25 | ChiTotal | total:m2311_2 | +| ir.cpp:2311:18:2311:25 | SideEffect | ~m2307_49 | +| ir.cpp:2311:28:2311:29 | Address | &:r2311_12 | +| ir.cpp:2311:28:2311:29 | Address | &:r2311_12 | +| ir.cpp:2311:28:2311:29 | Address | &:r2311_42 | +| ir.cpp:2311:28:2311:29 | Address | &:r2311_42 | +| ir.cpp:2311:28:2311:29 | Arg(this) | this:r2311_12 | +| ir.cpp:2311:28:2311:29 | Arg(this) | this:r2311_42 | +| ir.cpp:2311:28:2311:29 | CallTarget | func:r2311_43 | +| ir.cpp:2311:28:2311:29 | ChiPartial | partial:m2311_45 | +| ir.cpp:2311:28:2311:29 | ChiPartial | partial:m2311_48 | +| ir.cpp:2311:28:2311:29 | ChiTotal | total:m2311_22 | +| ir.cpp:2311:28:2311:29 | ChiTotal | total:m2311_24 | +| ir.cpp:2311:28:2311:29 | SideEffect | m2311_22 | +| ir.cpp:2311:28:2311:29 | SideEffect | ~m2311_24 | +| ir.cpp:2311:31:2311:37 | Address | &:r2311_16 | +| ir.cpp:2311:31:2311:37 | Arg(0) | 0:r2311_16 | +| ir.cpp:2311:31:2311:37 | SideEffect | ~m2301_3 | +| ir.cpp:2311:31:2311:37 | Unary | r2311_15 | +| ir.cpp:2311:31:2311:38 | CallTarget | func:r2311_14 | +| ir.cpp:2311:31:2311:38 | ChiPartial | partial:m2311_18 | +| ir.cpp:2311:31:2311:38 | ChiPartial | partial:m2311_21 | +| ir.cpp:2311:31:2311:38 | ChiTotal | total:m2311_8 | +| ir.cpp:2311:31:2311:38 | ChiTotal | total:m2311_13 | +| ir.cpp:2311:31:2311:38 | SideEffect | ~m2311_8 | +| ir.cpp:2311:41:2311:41 | Address | &:r2311_26 | +| ir.cpp:2311:41:2311:41 | Left | r2311_28 | +| ir.cpp:2311:41:2311:41 | Load | m2311_25 | +| ir.cpp:2311:41:2311:41 | Phi | from 6:m2303_14 | +| ir.cpp:2311:41:2311:41 | Phi | from 6:m2311_11 | +| ir.cpp:2311:41:2311:41 | Phi | from 6:~m2311_19 | +| ir.cpp:2311:41:2311:41 | Phi | from 8:m2311_39 | +| ir.cpp:2311:41:2311:41 | Phi | from 8:m2311_41 | +| ir.cpp:2311:41:2311:41 | Phi | from 8:~m2311_36 | +| ir.cpp:2311:41:2311:41 | Unary | r2311_27 | +| ir.cpp:2311:41:2311:46 | Condition | r2311_30 | +| ir.cpp:2311:46:2311:46 | Right | r2311_29 | +| ir.cpp:2311:49:2311:49 | Address | &:r2311_40 | +| ir.cpp:2311:53:2311:53 | Address | &:r2311_32 | +| ir.cpp:2311:53:2311:53 | Address | &:r2311_32 | +| ir.cpp:2311:53:2311:53 | Arg(this) | this:r2311_32 | +| ir.cpp:2311:53:2311:53 | ChiPartial | partial:m2311_38 | +| ir.cpp:2311:53:2311:53 | ChiTotal | total:m2311_23 | +| ir.cpp:2311:53:2311:53 | SideEffect | m2311_23 | +| ir.cpp:2311:55:2311:62 | CallTarget | func:r2311_33 | +| ir.cpp:2311:55:2311:62 | ChiPartial | partial:m2311_35 | +| ir.cpp:2311:55:2311:62 | ChiTotal | total:m2311_24 | +| ir.cpp:2311:55:2311:62 | SideEffect | ~m2311_24 | +| ir.cpp:2311:55:2311:62 | StoreValue | r2311_34 | +| ir.cpp:2312:9:2312:9 | Address | &:r2312_2 | +| ir.cpp:2312:13:2312:13 | StoreValue | r2312_1 | +| ir.cpp:2316:6:2316:19 | ChiPartial | partial:m2316_3 | +| ir.cpp:2316:6:2316:19 | ChiTotal | total:m2316_2 | +| ir.cpp:2316:6:2316:19 | SideEffect | ~m2321_5 | +| ir.cpp:2316:26:2316:26 | Address | &:r2316_5 | +| ir.cpp:2317:15:2317:15 | Address | &:r2317_1 | +| ir.cpp:2317:15:2317:15 | Address | &:r2317_1 | +| ir.cpp:2317:15:2317:15 | Arg(this) | this:r2317_1 | +| ir.cpp:2317:18:2317:33 | CallTarget | func:r2317_3 | +| ir.cpp:2317:18:2317:33 | ChiPartial | partial:m2317_7 | +| ir.cpp:2317:18:2317:33 | ChiPartial | partial:m2317_10 | +| ir.cpp:2317:18:2317:33 | ChiTotal | total:m2316_4 | +| ir.cpp:2317:18:2317:33 | ChiTotal | total:m2317_2 | +| ir.cpp:2317:18:2317:33 | SideEffect | ~m2316_4 | +| ir.cpp:2317:26:2317:32 | Address | &:r2317_5 | +| ir.cpp:2317:26:2317:32 | Arg(0) | 0:r2317_5 | +| ir.cpp:2317:26:2317:32 | SideEffect | ~m2316_3 | +| ir.cpp:2317:26:2317:32 | Unary | r2317_4 | +| ir.cpp:2317:36:2317:36 | Address | &:r2317_12 | +| ir.cpp:2317:36:2317:36 | Condition | r2317_13 | +| ir.cpp:2317:36:2317:36 | Load | m2316_6 | +| ir.cpp:2318:13:2318:13 | Address | &:r2318_1 | +| ir.cpp:2318:16:2318:17 | StoreValue | r2318_2 | +| ir.cpp:2320:13:2320:13 | Address | &:r2320_1 | +| ir.cpp:2320:16:2320:17 | StoreValue | r2320_2 | +| ir.cpp:2321:5:2321:5 | Address | &:r2321_1 | +| ir.cpp:2321:5:2321:5 | Address | &:r2321_1 | +| ir.cpp:2321:5:2321:5 | Arg(this) | this:r2321_1 | +| ir.cpp:2321:5:2321:5 | CallTarget | func:r2321_2 | +| ir.cpp:2321:5:2321:5 | ChiPartial | partial:m2321_4 | +| ir.cpp:2321:5:2321:5 | ChiPartial | partial:m2321_7 | +| ir.cpp:2321:5:2321:5 | ChiTotal | total:m2317_8 | +| ir.cpp:2321:5:2321:5 | ChiTotal | total:m2317_11 | +| ir.cpp:2321:5:2321:5 | SideEffect | m2317_11 | +| ir.cpp:2321:5:2321:5 | SideEffect | ~m2317_8 | +| ir.cpp:2331:6:2331:19 | ChiPartial | partial:m2331_3 | +| ir.cpp:2331:6:2331:19 | ChiTotal | total:m2331_2 | +| ir.cpp:2331:6:2331:19 | SideEffect | ~m2336_14 | +| ir.cpp:2331:26:2331:26 | Address | &:r2331_5 | +| ir.cpp:2332:8:2332:23 | Address | &:r2332_1 | +| ir.cpp:2332:8:2332:23 | Address | &:r2332_1 | +| ir.cpp:2332:8:2332:23 | Arg(this) | this:r2332_1 | +| ir.cpp:2332:8:2332:23 | Condition | r2332_19 | +| ir.cpp:2332:13:2332:13 | Address | &:r2332_11 | +| ir.cpp:2332:13:2332:13 | Address | &:r2332_11 | +| ir.cpp:2332:13:2332:13 | Arg(this) | this:r2332_11 | +| ir.cpp:2332:13:2332:13 | CallTarget | func:r2332_12 | +| ir.cpp:2332:13:2332:13 | ChiPartial | partial:m2332_14 | +| ir.cpp:2332:13:2332:13 | ChiPartial | partial:m2332_17 | +| ir.cpp:2332:13:2332:13 | ChiTotal | total:m2332_8 | +| ir.cpp:2332:13:2332:13 | ChiTotal | total:m2332_10 | +| ir.cpp:2332:13:2332:13 | SideEffect | m2332_10 | +| ir.cpp:2332:13:2332:13 | SideEffect | ~m2332_8 | +| ir.cpp:2332:13:2332:13 | Unary | r2332_13 | +| ir.cpp:2332:16:2332:23 | CallTarget | func:r2332_3 | +| ir.cpp:2332:16:2332:23 | ChiPartial | partial:m2332_7 | +| ir.cpp:2332:16:2332:23 | ChiPartial | partial:m2332_9 | +| ir.cpp:2332:16:2332:23 | ChiTotal | total:m2331_4 | +| ir.cpp:2332:16:2332:23 | ChiTotal | total:m2332_2 | +| ir.cpp:2332:16:2332:23 | SideEffect | ~m2331_4 | +| ir.cpp:2332:22:2332:22 | Address | &:r2332_4 | +| ir.cpp:2332:22:2332:22 | Arg(0) | 0:r2332_5 | +| ir.cpp:2332:22:2332:22 | Load | m2331_6 | +| ir.cpp:2333:16:2333:17 | Address | &:r2333_1 | +| ir.cpp:2333:16:2333:17 | Address | &:r2333_1 | +| ir.cpp:2333:16:2333:17 | Arg(this) | this:r2333_1 | +| ir.cpp:2333:16:2333:17 | CallTarget | func:r2333_3 | +| ir.cpp:2333:16:2333:17 | ChiPartial | partial:m2333_5 | +| ir.cpp:2333:16:2333:17 | ChiPartial | partial:m2333_7 | +| ir.cpp:2333:16:2333:17 | ChiTotal | total:m2332_15 | +| ir.cpp:2333:16:2333:17 | ChiTotal | total:m2333_2 | +| ir.cpp:2333:16:2333:17 | SideEffect | ~m2332_15 | +| ir.cpp:2334:5:2334:5 | Address | &:r2334_1 | +| ir.cpp:2334:5:2334:5 | Address | &:r2334_1 | +| ir.cpp:2334:5:2334:5 | Arg(this) | this:r2334_1 | +| ir.cpp:2334:5:2334:5 | CallTarget | func:r2334_2 | +| ir.cpp:2334:5:2334:5 | ChiPartial | partial:m2334_4 | +| ir.cpp:2334:5:2334:5 | ChiPartial | partial:m2334_7 | +| ir.cpp:2334:5:2334:5 | ChiTotal | total:m2333_6 | +| ir.cpp:2334:5:2334:5 | ChiTotal | total:m2333_8 | +| ir.cpp:2334:5:2334:5 | SideEffect | m2333_8 | +| ir.cpp:2334:5:2334:5 | SideEffect | ~m2333_6 | +| ir.cpp:2335:16:2335:17 | Address | &:r2335_1 | +| ir.cpp:2335:16:2335:17 | Address | &:r2335_1 | +| ir.cpp:2335:16:2335:17 | Arg(this) | this:r2335_1 | +| ir.cpp:2335:16:2335:17 | CallTarget | func:r2335_3 | +| ir.cpp:2335:16:2335:17 | ChiPartial | partial:m2335_5 | +| ir.cpp:2335:16:2335:17 | ChiPartial | partial:m2335_7 | +| ir.cpp:2335:16:2335:17 | ChiTotal | total:m2332_15 | +| ir.cpp:2335:16:2335:17 | ChiTotal | total:m2335_2 | +| ir.cpp:2335:16:2335:17 | SideEffect | ~m2332_15 | +| ir.cpp:2336:5:2336:5 | Address | &:r2336_1 | +| ir.cpp:2336:5:2336:5 | Address | &:r2336_1 | +| ir.cpp:2336:5:2336:5 | Address | &:r2336_10 | +| ir.cpp:2336:5:2336:5 | Address | &:r2336_10 | +| ir.cpp:2336:5:2336:5 | Arg(this) | this:r2336_1 | +| ir.cpp:2336:5:2336:5 | Arg(this) | this:r2336_10 | +| ir.cpp:2336:5:2336:5 | CallTarget | func:r2336_2 | +| ir.cpp:2336:5:2336:5 | CallTarget | func:r2336_11 | +| ir.cpp:2336:5:2336:5 | ChiPartial | partial:m2336_4 | +| ir.cpp:2336:5:2336:5 | ChiPartial | partial:m2336_7 | +| ir.cpp:2336:5:2336:5 | ChiPartial | partial:m2336_13 | +| ir.cpp:2336:5:2336:5 | ChiPartial | partial:m2336_16 | +| ir.cpp:2336:5:2336:5 | ChiTotal | total:m2332_18 | +| ir.cpp:2336:5:2336:5 | ChiTotal | total:m2335_6 | +| ir.cpp:2336:5:2336:5 | ChiTotal | total:m2335_8 | +| ir.cpp:2336:5:2336:5 | ChiTotal | total:m2336_9 | +| ir.cpp:2336:5:2336:5 | Phi | from 1:~m2334_5 | +| ir.cpp:2336:5:2336:5 | Phi | from 2:~m2336_5 | +| ir.cpp:2336:5:2336:5 | SideEffect | m2332_18 | +| ir.cpp:2336:5:2336:5 | SideEffect | m2335_8 | +| ir.cpp:2336:5:2336:5 | SideEffect | ~m2335_6 | +| ir.cpp:2336:5:2336:5 | SideEffect | ~m2336_9 | +| ir.cpp:2339:6:2339:25 | ChiPartial | partial:m2339_3 | +| ir.cpp:2339:6:2339:25 | ChiTotal | total:m2339_2 | +| ir.cpp:2339:6:2339:25 | SideEffect | ~m2350_13 | +| ir.cpp:2339:32:2339:32 | Address | &:r2339_5 | +| ir.cpp:2341:16:2341:16 | Address | &:r2341_1 | +| ir.cpp:2341:16:2341:16 | Address | &:r2341_1 | +| ir.cpp:2341:16:2341:16 | Arg(this) | this:r2341_1 | +| ir.cpp:2341:16:2341:16 | CallTarget | func:r2341_3 | +| ir.cpp:2341:16:2341:16 | ChiPartial | partial:m2341_5 | +| ir.cpp:2341:16:2341:16 | ChiPartial | partial:m2341_7 | +| ir.cpp:2341:16:2341:16 | ChiTotal | total:m2339_4 | +| ir.cpp:2341:16:2341:16 | ChiTotal | total:m2341_2 | +| ir.cpp:2341:16:2341:16 | SideEffect | ~m2339_4 | +| ir.cpp:2342:15:2342:15 | Address | &:r2342_2 | +| ir.cpp:2342:15:2342:15 | Condition | r2342_3 | +| ir.cpp:2342:15:2342:15 | Load | m2342_1 | +| ir.cpp:2342:15:2342:15 | Phi | from 0:m2339_6 | +| ir.cpp:2342:15:2342:15 | Phi | from 2:m2343_3 | +| ir.cpp:2343:13:2343:13 | Address | &:r2343_2 | +| ir.cpp:2343:17:2343:21 | StoreValue | r2343_1 | +| ir.cpp:2345:5:2345:5 | Address | &:r2345_1 | +| ir.cpp:2345:5:2345:5 | Address | &:r2345_1 | +| ir.cpp:2345:5:2345:5 | Arg(this) | this:r2345_1 | +| ir.cpp:2345:5:2345:5 | CallTarget | func:r2345_2 | +| ir.cpp:2345:5:2345:5 | ChiPartial | partial:m2345_4 | +| ir.cpp:2345:5:2345:5 | ChiPartial | partial:m2345_7 | +| ir.cpp:2345:5:2345:5 | ChiTotal | total:m2341_6 | +| ir.cpp:2345:5:2345:5 | ChiTotal | total:m2341_8 | +| ir.cpp:2345:5:2345:5 | SideEffect | m2341_8 | +| ir.cpp:2345:5:2345:5 | SideEffect | ~m2341_6 | +| ir.cpp:2348:16:2348:31 | Address | &:r2348_3 | +| ir.cpp:2348:16:2348:31 | Address | &:r2348_3 | +| ir.cpp:2348:16:2348:31 | Arg(this) | this:r2348_3 | +| ir.cpp:2348:16:2348:31 | Condition | r2348_21 | +| ir.cpp:2348:16:2348:31 | Phi | from 3:m2342_1 | +| ir.cpp:2348:16:2348:31 | Phi | from 3:~m2345_5 | +| ir.cpp:2348:16:2348:31 | Phi | from 5:m2349_3 | +| ir.cpp:2348:16:2348:31 | Phi | from 5:~m2350_5 | +| ir.cpp:2348:21:2348:21 | Address | &:r2348_13 | +| ir.cpp:2348:21:2348:21 | Address | &:r2348_13 | +| ir.cpp:2348:21:2348:21 | Arg(this) | this:r2348_13 | +| ir.cpp:2348:21:2348:21 | CallTarget | func:r2348_14 | +| ir.cpp:2348:21:2348:21 | ChiPartial | partial:m2348_16 | +| ir.cpp:2348:21:2348:21 | ChiPartial | partial:m2348_19 | +| ir.cpp:2348:21:2348:21 | ChiTotal | total:m2348_10 | +| ir.cpp:2348:21:2348:21 | ChiTotal | total:m2348_12 | +| ir.cpp:2348:21:2348:21 | SideEffect | m2348_12 | +| ir.cpp:2348:21:2348:21 | SideEffect | ~m2348_10 | +| ir.cpp:2348:21:2348:21 | Unary | r2348_15 | +| ir.cpp:2348:24:2348:31 | CallTarget | func:r2348_5 | +| ir.cpp:2348:24:2348:31 | ChiPartial | partial:m2348_9 | +| ir.cpp:2348:24:2348:31 | ChiPartial | partial:m2348_11 | +| ir.cpp:2348:24:2348:31 | ChiTotal | total:m2348_1 | +| ir.cpp:2348:24:2348:31 | ChiTotal | total:m2348_4 | +| ir.cpp:2348:24:2348:31 | SideEffect | ~m2348_1 | +| ir.cpp:2348:30:2348:30 | Address | &:r2348_6 | +| ir.cpp:2348:30:2348:30 | Arg(0) | 0:r2348_7 | +| ir.cpp:2348:30:2348:30 | Load | m2348_2 | +| ir.cpp:2349:13:2349:13 | Address | &:r2349_2 | +| ir.cpp:2349:17:2349:21 | StoreValue | r2349_1 | +| ir.cpp:2350:9:2350:9 | Address | &:r2350_1 | +| ir.cpp:2350:9:2350:9 | Address | &:r2350_1 | +| ir.cpp:2350:9:2350:9 | Address | &:r2350_9 | +| ir.cpp:2350:9:2350:9 | Address | &:r2350_9 | +| ir.cpp:2350:9:2350:9 | Arg(this) | this:r2350_1 | +| ir.cpp:2350:9:2350:9 | Arg(this) | this:r2350_9 | +| ir.cpp:2350:9:2350:9 | CallTarget | func:r2350_2 | +| ir.cpp:2350:9:2350:9 | CallTarget | func:r2350_10 | +| ir.cpp:2350:9:2350:9 | ChiPartial | partial:m2350_4 | +| ir.cpp:2350:9:2350:9 | ChiPartial | partial:m2350_7 | +| ir.cpp:2350:9:2350:9 | ChiPartial | partial:m2350_12 | +| ir.cpp:2350:9:2350:9 | ChiPartial | partial:m2350_15 | +| ir.cpp:2350:9:2350:9 | ChiTotal | total:m2348_17 | +| ir.cpp:2350:9:2350:9 | ChiTotal | total:m2348_17 | +| ir.cpp:2350:9:2350:9 | ChiTotal | total:m2348_20 | +| ir.cpp:2350:9:2350:9 | ChiTotal | total:m2348_20 | +| ir.cpp:2350:9:2350:9 | SideEffect | m2348_20 | +| ir.cpp:2350:9:2350:9 | SideEffect | m2348_20 | +| ir.cpp:2350:9:2350:9 | SideEffect | ~m2348_17 | +| ir.cpp:2350:9:2350:9 | SideEffect | ~m2348_17 | +| ir.cpp:2354:6:2354:13 | ChiPartial | partial:m2354_3 | +| ir.cpp:2354:6:2354:13 | ChiTotal | total:m2354_2 | +| ir.cpp:2354:6:2354:13 | SideEffect | m2354_3 | +| ir.cpp:2356:6:2356:24 | ChiPartial | partial:m2356_3 | +| ir.cpp:2356:6:2356:24 | ChiTotal | total:m2356_2 | +| ir.cpp:2356:6:2356:24 | Phi | from 2:~m2365_5 | +| ir.cpp:2356:6:2356:24 | Phi | from 4:~m2365_13 | +| ir.cpp:2356:6:2356:24 | Phi | from 5:~m2365_22 | +| ir.cpp:2356:6:2356:24 | SideEffect | ~m2356_7 | +| ir.cpp:2356:31:2356:31 | Address | &:r2356_5 | +| ir.cpp:2357:12:2357:12 | Address | &:r2357_1 | +| ir.cpp:2357:12:2357:12 | Address | &:r2357_1 | +| ir.cpp:2357:12:2357:12 | Arg(this) | this:r2357_1 | +| ir.cpp:2357:12:2357:12 | CallTarget | func:r2357_3 | +| ir.cpp:2357:12:2357:12 | ChiPartial | partial:m2357_5 | +| ir.cpp:2357:12:2357:12 | ChiPartial | partial:m2357_7 | +| ir.cpp:2357:12:2357:12 | ChiTotal | total:m2356_4 | +| ir.cpp:2357:12:2357:12 | ChiTotal | total:m2357_2 | +| ir.cpp:2357:12:2357:12 | SideEffect | ~m2356_4 | +| ir.cpp:2358:8:2358:8 | Address | &:r2358_1 | +| ir.cpp:2358:8:2358:8 | Condition | r2358_2 | +| ir.cpp:2358:8:2358:8 | Load | m2356_6 | +| ir.cpp:2361:8:2361:8 | Address | &:r2361_1 | +| ir.cpp:2361:8:2361:8 | Condition | r2361_2 | +| ir.cpp:2361:8:2361:8 | Load | m2356_6 | +| ir.cpp:2362:16:2362:23 | CallTarget | func:r2362_1 | +| ir.cpp:2362:16:2362:23 | ChiPartial | partial:m2362_3 | +| ir.cpp:2362:16:2362:23 | ChiTotal | total:m2357_6 | +| ir.cpp:2362:16:2362:23 | SideEffect | ~m2357_6 | +| ir.cpp:2365:1:2365:1 | Address | &:r2365_1 | +| ir.cpp:2365:1:2365:1 | Address | &:r2365_1 | +| ir.cpp:2365:1:2365:1 | Address | &:r2365_9 | +| ir.cpp:2365:1:2365:1 | Address | &:r2365_9 | +| ir.cpp:2365:1:2365:1 | Address | &:r2365_18 | +| ir.cpp:2365:1:2365:1 | Address | &:r2365_18 | +| ir.cpp:2365:1:2365:1 | Arg(this) | this:r2365_1 | +| ir.cpp:2365:1:2365:1 | Arg(this) | this:r2365_9 | +| ir.cpp:2365:1:2365:1 | Arg(this) | this:r2365_18 | +| ir.cpp:2365:1:2365:1 | CallTarget | func:r2365_2 | +| ir.cpp:2365:1:2365:1 | CallTarget | func:r2365_10 | +| ir.cpp:2365:1:2365:1 | CallTarget | func:r2365_19 | +| ir.cpp:2365:1:2365:1 | ChiPartial | partial:m2365_4 | +| ir.cpp:2365:1:2365:1 | ChiPartial | partial:m2365_7 | +| ir.cpp:2365:1:2365:1 | ChiPartial | partial:m2365_12 | +| ir.cpp:2365:1:2365:1 | ChiPartial | partial:m2365_15 | +| ir.cpp:2365:1:2365:1 | ChiPartial | partial:m2365_21 | +| ir.cpp:2365:1:2365:1 | ChiPartial | partial:m2365_24 | +| ir.cpp:2365:1:2365:1 | ChiTotal | total:m2357_6 | +| ir.cpp:2365:1:2365:1 | ChiTotal | total:m2357_6 | +| ir.cpp:2365:1:2365:1 | ChiTotal | total:m2357_8 | +| ir.cpp:2365:1:2365:1 | ChiTotal | total:m2357_8 | +| ir.cpp:2365:1:2365:1 | ChiTotal | total:m2357_8 | +| ir.cpp:2365:1:2365:1 | ChiTotal | total:m2362_4 | +| ir.cpp:2365:1:2365:1 | SideEffect | m2357_8 | +| ir.cpp:2365:1:2365:1 | SideEffect | m2357_8 | +| ir.cpp:2365:1:2365:1 | SideEffect | m2357_8 | +| ir.cpp:2365:1:2365:1 | SideEffect | ~m2357_6 | +| ir.cpp:2365:1:2365:1 | SideEffect | ~m2357_6 | +| ir.cpp:2365:1:2365:1 | SideEffect | ~m2362_4 | +| ir.cpp:2367:5:2367:24 | Address | &:r2367_9 | +| ir.cpp:2367:5:2367:24 | ChiPartial | partial:m2367_3 | +| ir.cpp:2367:5:2367:24 | ChiTotal | total:m2367_2 | +| ir.cpp:2367:5:2367:24 | Load | m2367_8 | +| ir.cpp:2367:5:2367:24 | Phi | from 2:m2370_3 | +| ir.cpp:2367:5:2367:24 | Phi | from 2:~m2373_5 | +| ir.cpp:2367:5:2367:24 | Phi | from 3:m2372_3 | +| ir.cpp:2367:5:2367:24 | Phi | from 3:~m2373_13 | +| ir.cpp:2367:5:2367:24 | SideEffect | ~m2367_7 | +| ir.cpp:2367:31:2367:31 | Address | &:r2367_5 | +| ir.cpp:2368:12:2368:12 | Address | &:r2368_1 | +| ir.cpp:2368:12:2368:12 | Address | &:r2368_1 | +| ir.cpp:2368:12:2368:12 | Arg(this) | this:r2368_1 | +| ir.cpp:2368:12:2368:12 | CallTarget | func:r2368_3 | +| ir.cpp:2368:12:2368:12 | ChiPartial | partial:m2368_5 | +| ir.cpp:2368:12:2368:12 | ChiPartial | partial:m2368_7 | +| ir.cpp:2368:12:2368:12 | ChiTotal | total:m2367_4 | +| ir.cpp:2368:12:2368:12 | ChiTotal | total:m2368_2 | +| ir.cpp:2368:12:2368:12 | SideEffect | ~m2367_4 | +| ir.cpp:2369:8:2369:8 | Address | &:r2369_1 | +| ir.cpp:2369:8:2369:8 | Condition | r2369_2 | +| ir.cpp:2369:8:2369:8 | Load | m2367_6 | +| ir.cpp:2370:9:2370:17 | Address | &:r2370_1 | +| ir.cpp:2370:16:2370:16 | StoreValue | r2370_2 | +| ir.cpp:2372:5:2372:13 | Address | &:r2372_1 | +| ir.cpp:2372:12:2372:12 | StoreValue | r2372_2 | +| ir.cpp:2373:1:2373:1 | Address | &:r2373_1 | +| ir.cpp:2373:1:2373:1 | Address | &:r2373_1 | +| ir.cpp:2373:1:2373:1 | Address | &:r2373_9 | +| ir.cpp:2373:1:2373:1 | Address | &:r2373_9 | +| ir.cpp:2373:1:2373:1 | Arg(this) | this:r2373_1 | +| ir.cpp:2373:1:2373:1 | Arg(this) | this:r2373_9 | +| ir.cpp:2373:1:2373:1 | CallTarget | func:r2373_2 | +| ir.cpp:2373:1:2373:1 | CallTarget | func:r2373_10 | +| ir.cpp:2373:1:2373:1 | ChiPartial | partial:m2373_4 | +| ir.cpp:2373:1:2373:1 | ChiPartial | partial:m2373_7 | +| ir.cpp:2373:1:2373:1 | ChiPartial | partial:m2373_12 | +| ir.cpp:2373:1:2373:1 | ChiPartial | partial:m2373_15 | +| ir.cpp:2373:1:2373:1 | ChiTotal | total:m2368_6 | +| ir.cpp:2373:1:2373:1 | ChiTotal | total:m2368_6 | +| ir.cpp:2373:1:2373:1 | ChiTotal | total:m2368_8 | +| ir.cpp:2373:1:2373:1 | ChiTotal | total:m2368_8 | +| ir.cpp:2373:1:2373:1 | SideEffect | m2368_8 | +| ir.cpp:2373:1:2373:1 | SideEffect | m2368_8 | +| ir.cpp:2373:1:2373:1 | SideEffect | ~m2368_6 | +| ir.cpp:2373:1:2373:1 | SideEffect | ~m2368_6 | +| ir.cpp:2375:6:2375:26 | ChiPartial | partial:m2375_3 | +| ir.cpp:2375:6:2375:26 | ChiTotal | total:m2375_2 | +| ir.cpp:2375:6:2375:26 | SideEffect | ~m2378_5 | +| ir.cpp:2376:12:2376:12 | Address | &:r2376_1 | +| ir.cpp:2376:12:2376:12 | Address | &:r2376_1 | +| ir.cpp:2376:12:2376:12 | Arg(this) | this:r2376_1 | +| ir.cpp:2376:12:2376:12 | CallTarget | func:r2376_3 | +| ir.cpp:2376:12:2376:12 | ChiPartial | partial:m2376_5 | +| ir.cpp:2376:12:2376:12 | ChiPartial | partial:m2376_7 | +| ir.cpp:2376:12:2376:12 | ChiTotal | total:m2375_4 | +| ir.cpp:2376:12:2376:12 | ChiTotal | total:m2376_2 | +| ir.cpp:2376:12:2376:12 | SideEffect | ~m2375_4 | +| ir.cpp:2377:12:2377:19 | CallTarget | func:r2377_1 | +| ir.cpp:2377:12:2377:19 | ChiPartial | partial:m2377_3 | +| ir.cpp:2377:12:2377:19 | ChiTotal | total:m2376_6 | +| ir.cpp:2377:12:2377:19 | SideEffect | ~m2376_6 | +| ir.cpp:2378:1:2378:1 | Address | &:r2378_1 | +| ir.cpp:2378:1:2378:1 | Address | &:r2378_1 | +| ir.cpp:2378:1:2378:1 | Arg(this) | this:r2378_1 | +| ir.cpp:2378:1:2378:1 | CallTarget | func:r2378_2 | +| ir.cpp:2378:1:2378:1 | ChiPartial | partial:m2378_4 | +| ir.cpp:2378:1:2378:1 | ChiPartial | partial:m2378_7 | +| ir.cpp:2378:1:2378:1 | ChiTotal | total:m2376_8 | +| ir.cpp:2378:1:2378:1 | ChiTotal | total:m2377_4 | +| ir.cpp:2378:1:2378:1 | SideEffect | m2376_8 | +| ir.cpp:2378:1:2378:1 | SideEffect | ~m2377_4 | +| ir.cpp:2388:32:2388:47 | Address | &:r2388_5 | +| ir.cpp:2388:32:2388:47 | ChiPartial | partial:m2388_3 | +| ir.cpp:2388:32:2388:47 | ChiTotal | total:m2388_2 | +| ir.cpp:2388:32:2388:47 | Load | m2390_3 | +| ir.cpp:2388:32:2388:47 | SideEffect | m2388_3 | +| ir.cpp:2390:9:2390:44 | Address | &:r2390_1 | +| ir.cpp:2390:16:2390:43 | StoreValue | r2390_2 | +| ir.cpp:2395:5:2395:49 | Address | &:r2395_5 | +| ir.cpp:2395:5:2395:49 | ChiPartial | partial:m2395_3 | +| ir.cpp:2395:5:2395:49 | ChiTotal | total:m2395_2 | +| ir.cpp:2395:5:2395:49 | Load | m2396_5 | +| ir.cpp:2395:5:2395:49 | SideEffect | m2395_3 | +| ir.cpp:2396:5:2396:17 | Address | &:r2396_1 | +| ir.cpp:2396:12:2396:12 | Left | r2396_2 | +| ir.cpp:2396:12:2396:16 | StoreValue | r2396_4 | +| ir.cpp:2396:16:2396:16 | Right | r2396_3 | +| ir.cpp:2406:5:2406:45 | Address | &:r2406_5 | +| ir.cpp:2406:5:2406:45 | ChiPartial | partial:m2406_3 | +| ir.cpp:2406:5:2406:45 | ChiTotal | total:m2406_2 | +| ir.cpp:2406:5:2406:45 | Load | m2407_3 | +| ir.cpp:2406:5:2406:45 | SideEffect | m2406_3 | +| ir.cpp:2407:5:2407:22 | Address | &:r2407_1 | +| ir.cpp:2407:12:2407:21 | StoreValue | r2407_2 | +| ir.cpp:2410:6:2410:40 | ChiPartial | partial:m2410_3 | +| ir.cpp:2410:6:2410:40 | ChiTotal | total:m2410_2 | +| ir.cpp:2410:6:2410:40 | SideEffect | ~m2430_56 | +| ir.cpp:2411:9:2411:46 | Address | &:r2411_1 | +| ir.cpp:2411:9:2411:46 | Condition | r2411_22 | +| ir.cpp:2411:14:2411:14 | Address | &:r2411_18 | +| ir.cpp:2411:14:2411:14 | Left | r2411_19 | +| ir.cpp:2411:14:2411:14 | Load | m2411_17 | +| ir.cpp:2411:14:2411:14 | Right | r2411_20 | +| ir.cpp:2411:14:2411:14 | Unary | r2411_21 | +| ir.cpp:2411:18:2411:38 | Address | &:r2411_2 | +| ir.cpp:2411:18:2411:38 | Address | &:r2411_2 | +| ir.cpp:2411:18:2411:38 | Address | &:r2411_2 | +| ir.cpp:2411:18:2411:38 | Address | &:r2411_2 | +| ir.cpp:2411:18:2411:38 | Arg(this) | this:r2411_2 | +| ir.cpp:2411:18:2411:38 | Arg(this) | this:r2411_2 | +| ir.cpp:2411:18:2411:38 | CallTarget | func:r2411_4 | +| ir.cpp:2411:18:2411:38 | ChiPartial | partial:m2411_6 | +| ir.cpp:2411:18:2411:38 | ChiPartial | partial:m2411_8 | +| ir.cpp:2411:18:2411:38 | ChiPartial | partial:m2411_15 | +| ir.cpp:2411:18:2411:38 | ChiTotal | total:m2410_4 | +| ir.cpp:2411:18:2411:38 | ChiTotal | total:m2411_3 | +| ir.cpp:2411:18:2411:38 | ChiTotal | total:m2411_9 | +| ir.cpp:2411:18:2411:38 | SideEffect | m2411_9 | +| ir.cpp:2411:18:2411:38 | SideEffect | ~m2410_4 | +| ir.cpp:2411:40:2411:44 | CallTarget | func:r2411_10 | +| ir.cpp:2411:40:2411:44 | ChiPartial | partial:m2411_12 | +| ir.cpp:2411:40:2411:44 | ChiTotal | total:m2411_7 | +| ir.cpp:2411:40:2411:44 | SideEffect | ~m2411_7 | +| ir.cpp:2411:40:2411:44 | StoreValue | r2411_11 | +| ir.cpp:2412:9:2412:9 | Address | &:r2412_1 | +| ir.cpp:2412:9:2412:9 | Address | &:r2412_1 | +| ir.cpp:2412:9:2412:9 | Left | r2412_2 | +| ir.cpp:2412:9:2412:9 | Load | m2411_17 | +| ir.cpp:2412:9:2412:11 | Right | r2412_3 | +| ir.cpp:2412:9:2412:11 | StoreValue | r2412_4 | +| ir.cpp:2414:14:2414:14 | Address | &:r2414_1 | +| ir.cpp:2414:18:2414:38 | Address | &:r2414_2 | +| ir.cpp:2414:18:2414:38 | Address | &:r2414_2 | +| ir.cpp:2414:18:2414:38 | Address | &:r2414_2 | +| ir.cpp:2414:18:2414:38 | Address | &:r2414_2 | +| ir.cpp:2414:18:2414:38 | Arg(this) | this:r2414_2 | +| ir.cpp:2414:18:2414:38 | Arg(this) | this:r2414_2 | +| ir.cpp:2414:18:2414:38 | CallTarget | func:r2414_4 | +| ir.cpp:2414:18:2414:38 | ChiPartial | partial:m2414_6 | +| ir.cpp:2414:18:2414:38 | ChiPartial | partial:m2414_8 | +| ir.cpp:2414:18:2414:38 | ChiPartial | partial:m2414_15 | +| ir.cpp:2414:18:2414:38 | ChiTotal | total:m2411_13 | +| ir.cpp:2414:18:2414:38 | ChiTotal | total:m2414_3 | +| ir.cpp:2414:18:2414:38 | ChiTotal | total:m2414_9 | +| ir.cpp:2414:18:2414:38 | SideEffect | m2414_9 | +| ir.cpp:2414:18:2414:38 | SideEffect | ~m2411_13 | +| ir.cpp:2414:40:2414:44 | CallTarget | func:r2414_10 | +| ir.cpp:2414:40:2414:44 | ChiPartial | partial:m2414_12 | +| ir.cpp:2414:40:2414:44 | ChiTotal | total:m2414_7 | +| ir.cpp:2414:40:2414:44 | SideEffect | ~m2414_7 | +| ir.cpp:2414:40:2414:44 | StoreValue | r2414_11 | +| ir.cpp:2414:49:2414:49 | Address | &:r2414_18 | +| ir.cpp:2414:49:2414:49 | Condition | r2414_21 | +| ir.cpp:2414:49:2414:49 | Left | r2414_19 | +| ir.cpp:2414:49:2414:49 | Load | m2414_17 | +| ir.cpp:2414:49:2414:49 | Right | r2414_20 | +| ir.cpp:2415:9:2415:9 | Address | &:r2415_1 | +| ir.cpp:2415:9:2415:9 | Address | &:r2415_1 | +| ir.cpp:2415:9:2415:9 | Left | r2415_2 | +| ir.cpp:2415:9:2415:9 | Load | m2414_17 | +| ir.cpp:2415:9:2415:11 | Right | r2415_3 | +| ir.cpp:2415:9:2415:11 | StoreValue | r2415_4 | +| ir.cpp:2417:24:2417:24 | Address | &:r2417_1 | +| ir.cpp:2417:28:2417:48 | Address | &:r2417_2 | +| ir.cpp:2417:28:2417:48 | Address | &:r2417_2 | +| ir.cpp:2417:28:2417:48 | Address | &:r2417_2 | +| ir.cpp:2417:28:2417:48 | Address | &:r2417_2 | +| ir.cpp:2417:28:2417:48 | Arg(this) | this:r2417_2 | +| ir.cpp:2417:28:2417:48 | Arg(this) | this:r2417_2 | +| ir.cpp:2417:28:2417:48 | CallTarget | func:r2417_4 | +| ir.cpp:2417:28:2417:48 | ChiPartial | partial:m2417_6 | +| ir.cpp:2417:28:2417:48 | ChiPartial | partial:m2417_8 | +| ir.cpp:2417:28:2417:48 | ChiPartial | partial:m2417_15 | +| ir.cpp:2417:28:2417:48 | ChiTotal | total:m2414_13 | +| ir.cpp:2417:28:2417:48 | ChiTotal | total:m2417_3 | +| ir.cpp:2417:28:2417:48 | ChiTotal | total:m2417_9 | +| ir.cpp:2417:28:2417:48 | SideEffect | m2417_9 | +| ir.cpp:2417:28:2417:48 | SideEffect | ~m2414_13 | +| ir.cpp:2417:50:2417:54 | CallTarget | func:r2417_10 | +| ir.cpp:2417:50:2417:54 | ChiPartial | partial:m2417_12 | +| ir.cpp:2417:50:2417:54 | ChiTotal | total:m2417_7 | +| ir.cpp:2417:50:2417:54 | SideEffect | ~m2417_7 | +| ir.cpp:2417:50:2417:54 | StoreValue | r2417_11 | +| ir.cpp:2417:59:2417:93 | Condition | r2417_18 | +| ir.cpp:2418:9:2418:9 | Address | &:r2418_1 | +| ir.cpp:2418:9:2418:9 | Address | &:r2418_1 | +| ir.cpp:2418:9:2418:9 | Left | r2418_2 | +| ir.cpp:2418:9:2418:9 | Load | m2417_17 | +| ir.cpp:2418:9:2418:11 | Right | r2418_3 | +| ir.cpp:2418:9:2418:11 | StoreValue | r2418_4 | +| ir.cpp:2420:12:2420:49 | Address | &:r2420_1 | +| ir.cpp:2420:12:2420:49 | Condition | r2420_21 | +| ir.cpp:2420:17:2420:17 | Address | &:r2420_18 | +| ir.cpp:2420:17:2420:17 | Load | m2420_17 | +| ir.cpp:2420:17:2420:17 | Unary | r2420_19 | +| ir.cpp:2420:17:2420:17 | Unary | r2420_20 | +| ir.cpp:2420:21:2420:41 | Address | &:r2420_2 | +| ir.cpp:2420:21:2420:41 | Address | &:r2420_2 | +| ir.cpp:2420:21:2420:41 | Address | &:r2420_2 | +| ir.cpp:2420:21:2420:41 | Address | &:r2420_2 | +| ir.cpp:2420:21:2420:41 | Arg(this) | this:r2420_2 | +| ir.cpp:2420:21:2420:41 | Arg(this) | this:r2420_2 | +| ir.cpp:2420:21:2420:41 | CallTarget | func:r2420_4 | +| ir.cpp:2420:21:2420:41 | ChiPartial | partial:m2420_6 | +| ir.cpp:2420:21:2420:41 | ChiPartial | partial:m2420_8 | +| ir.cpp:2420:21:2420:41 | ChiPartial | partial:m2420_15 | +| ir.cpp:2420:21:2420:41 | ChiTotal | total:m2417_13 | +| ir.cpp:2420:21:2420:41 | ChiTotal | total:m2420_3 | +| ir.cpp:2420:21:2420:41 | ChiTotal | total:m2420_9 | +| ir.cpp:2420:21:2420:41 | SideEffect | m2420_9 | +| ir.cpp:2420:21:2420:41 | SideEffect | ~m2417_13 | +| ir.cpp:2420:43:2420:47 | CallTarget | func:r2420_10 | +| ir.cpp:2420:43:2420:47 | ChiPartial | partial:m2420_12 | +| ir.cpp:2420:43:2420:47 | ChiTotal | total:m2420_7 | +| ir.cpp:2420:43:2420:47 | SideEffect | ~m2420_7 | +| ir.cpp:2420:43:2420:47 | StoreValue | r2420_11 | +| ir.cpp:2422:11:2422:11 | Address | &:r2422_1 | +| ir.cpp:2422:11:2422:11 | Address | &:r2422_1 | +| ir.cpp:2422:11:2422:11 | Left | r2422_2 | +| ir.cpp:2422:11:2422:11 | Load | m2420_17 | +| ir.cpp:2422:11:2422:13 | Right | r2422_3 | +| ir.cpp:2422:11:2422:13 | StoreValue | r2422_4 | +| ir.cpp:2425:17:2425:17 | Address | &:r2425_1 | +| ir.cpp:2425:21:2425:41 | Address | &:r2425_2 | +| ir.cpp:2425:21:2425:41 | Address | &:r2425_2 | +| ir.cpp:2425:21:2425:41 | Address | &:r2425_2 | +| ir.cpp:2425:21:2425:41 | Address | &:r2425_2 | +| ir.cpp:2425:21:2425:41 | Arg(this) | this:r2425_2 | +| ir.cpp:2425:21:2425:41 | Arg(this) | this:r2425_2 | +| ir.cpp:2425:21:2425:41 | CallTarget | func:r2425_4 | +| ir.cpp:2425:21:2425:41 | ChiPartial | partial:m2425_6 | +| ir.cpp:2425:21:2425:41 | ChiPartial | partial:m2425_8 | +| ir.cpp:2425:21:2425:41 | ChiPartial | partial:m2425_15 | +| ir.cpp:2425:21:2425:41 | ChiTotal | total:m2420_13 | +| ir.cpp:2425:21:2425:41 | ChiTotal | total:m2425_3 | +| ir.cpp:2425:21:2425:41 | ChiTotal | total:m2425_9 | +| ir.cpp:2425:21:2425:41 | SideEffect | m2425_9 | +| ir.cpp:2425:21:2425:41 | SideEffect | ~m2420_13 | +| ir.cpp:2425:43:2425:47 | CallTarget | func:r2425_10 | +| ir.cpp:2425:43:2425:47 | ChiPartial | partial:m2425_12 | +| ir.cpp:2425:43:2425:47 | ChiTotal | total:m2425_7 | +| ir.cpp:2425:43:2425:47 | SideEffect | ~m2425_7 | +| ir.cpp:2425:43:2425:47 | StoreValue | r2425_11 | +| ir.cpp:2425:52:2425:52 | Address | &:r2425_18 | +| ir.cpp:2425:52:2425:52 | Condition | r2425_20 | +| ir.cpp:2425:52:2425:52 | Load | m2425_17 | +| ir.cpp:2425:52:2425:52 | Unary | r2425_19 | +| ir.cpp:2427:11:2427:11 | Address | &:r2427_1 | +| ir.cpp:2427:11:2427:11 | Address | &:r2427_1 | +| ir.cpp:2427:11:2427:11 | Left | r2427_2 | +| ir.cpp:2427:11:2427:11 | Load | m2425_17 | +| ir.cpp:2427:11:2427:13 | Right | r2427_3 | +| ir.cpp:2427:11:2427:13 | StoreValue | r2427_4 | +| ir.cpp:2430:5:2430:5 | Address | &:r2430_18 | +| ir.cpp:2430:5:2430:5 | Address | &:r2430_31 | +| ir.cpp:2430:5:2430:5 | Address | &:r2430_37 | +| ir.cpp:2430:14:2430:14 | Address | &:r2430_1 | +| ir.cpp:2430:18:2430:38 | Address | &:r2430_2 | +| ir.cpp:2430:18:2430:38 | Address | &:r2430_2 | +| ir.cpp:2430:18:2430:38 | Address | &:r2430_2 | +| ir.cpp:2430:18:2430:38 | Address | &:r2430_2 | +| ir.cpp:2430:18:2430:38 | Arg(this) | this:r2430_2 | +| ir.cpp:2430:18:2430:38 | Arg(this) | this:r2430_2 | +| ir.cpp:2430:18:2430:38 | CallTarget | func:r2430_4 | +| ir.cpp:2430:18:2430:38 | ChiPartial | partial:m2430_6 | +| ir.cpp:2430:18:2430:38 | ChiPartial | partial:m2430_8 | +| ir.cpp:2430:18:2430:38 | ChiPartial | partial:m2430_15 | +| ir.cpp:2430:18:2430:38 | ChiTotal | total:m2425_13 | +| ir.cpp:2430:18:2430:38 | ChiTotal | total:m2430_3 | +| ir.cpp:2430:18:2430:38 | ChiTotal | total:m2430_9 | +| ir.cpp:2430:18:2430:38 | SideEffect | m2430_9 | +| ir.cpp:2430:18:2430:38 | SideEffect | ~m2425_13 | +| ir.cpp:2430:40:2430:44 | CallTarget | func:r2430_10 | +| ir.cpp:2430:40:2430:44 | ChiPartial | partial:m2430_12 | +| ir.cpp:2430:40:2430:44 | ChiTotal | total:m2430_7 | +| ir.cpp:2430:40:2430:44 | SideEffect | ~m2430_7 | +| ir.cpp:2430:40:2430:44 | StoreValue | r2430_11 | +| ir.cpp:2430:54:2430:54 | Address | &:r2430_58 | +| ir.cpp:2430:58:2430:58 | Address | &:r2430_32 | +| ir.cpp:2430:58:2430:58 | Address | &:r2430_38 | +| ir.cpp:2430:58:2430:58 | Address | &:r2430_61 | +| ir.cpp:2430:58:2430:58 | Address | &:r2430_66 | +| ir.cpp:2430:58:2430:58 | Address | &:r2430_66 | +| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_2 | +| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_5 | +| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_7 | +| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_8 | +| ir.cpp:2430:58:2430:58 | Arg(this) | this:r0_15 | +| ir.cpp:2430:58:2430:58 | Arg(this) | this:r2430_66 | +| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_34 | +| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_40 | +| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_46 | +| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_47 | +| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_60 | +| ir.cpp:2430:58:2430:58 | CallTarget | func:r2430_67 | +| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_50 | +| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_52 | +| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_55 | +| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_62 | +| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_69 | +| ir.cpp:2430:58:2430:58 | ChiPartial | partial:m2430_72 | +| ir.cpp:2430:58:2430:58 | ChiTotal | total:m0_9 | +| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_43 | +| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_44 | +| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_51 | +| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_56 | +| ir.cpp:2430:58:2430:58 | ChiTotal | total:m2430_63 | +| ir.cpp:2430:58:2430:58 | Condition | r2430_54 | +| ir.cpp:2430:58:2430:58 | Load | m2430_30 | +| ir.cpp:2430:58:2430:58 | Load | m2430_30 | +| ir.cpp:2430:58:2430:58 | Phi | from 9:m2430_36 | +| ir.cpp:2430:58:2430:58 | Phi | from 9:~m2430_26 | +| ir.cpp:2430:58:2430:58 | Phi | from 11:m2430_73 | +| ir.cpp:2430:58:2430:58 | Phi | from 11:~m2430_70 | +| ir.cpp:2430:58:2430:58 | SideEffect | m2430_43 | +| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_44 | +| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_51 | +| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_56 | +| ir.cpp:2430:58:2430:58 | SideEffect | ~m2430_63 | +| ir.cpp:2430:58:2430:58 | StoreValue | r2430_35 | +| ir.cpp:2430:58:2430:58 | StoreValue | r2430_41 | +| ir.cpp:2430:58:2430:58 | Unary | r2430_33 | +| ir.cpp:2430:58:2430:58 | Unary | r2430_39 | +| ir.cpp:2430:58:2430:58 | Unary | r2430_45 | +| ir.cpp:2430:58:2430:58 | Unary | r2430_48 | +| ir.cpp:2430:58:2430:58 | Unary | r2430_59 | +| ir.cpp:2430:58:2430:58 | Unary | r2430_68 | +| ir.cpp:2430:58:2430:77 | Address | &:r2430_19 | +| ir.cpp:2430:58:2430:77 | Address | &:r2430_19 | +| ir.cpp:2430:58:2430:77 | Arg(this) | this:r2430_19 | +| ir.cpp:2430:58:2430:77 | CallTarget | func:r2430_21 | +| ir.cpp:2430:58:2430:77 | ChiPartial | partial:m2430_25 | +| ir.cpp:2430:58:2430:77 | ChiPartial | partial:m2430_27 | +| ir.cpp:2430:58:2430:77 | ChiTotal | total:m2430_13 | +| ir.cpp:2430:58:2430:77 | ChiTotal | total:m2430_20 | +| ir.cpp:2430:58:2430:77 | SideEffect | ~m2430_13 | +| ir.cpp:2430:58:2430:77 | StoreValue | r2430_29 | +| ir.cpp:2430:58:2430:77 | Unary | r2430_19 | +| ir.cpp:2430:58:2430:78 | Load | ~m2430_63 | +| ir.cpp:2430:58:2430:78 | StoreValue | r2430_64 | +| ir.cpp:2430:76:2430:76 | Address | &:r2430_22 | +| ir.cpp:2430:76:2430:76 | Arg(0) | 0:r2430_23 | +| ir.cpp:2430:76:2430:76 | Load | m2430_17 | +| ir.cpp:2431:9:2431:9 | Address | &:r2431_4 | +| ir.cpp:2431:9:2431:9 | Address | &:r2431_4 | +| ir.cpp:2431:9:2431:9 | Load | m2430_65 | +| ir.cpp:2431:9:2431:9 | Unary | r2431_5 | +| ir.cpp:2431:9:2431:14 | Left | r2431_6 | +| ir.cpp:2431:9:2431:14 | StoreValue | r2431_8 | +| ir.cpp:2431:9:2431:14 | Unary | r2431_7 | +| ir.cpp:2431:14:2431:14 | Address | &:r2431_1 | +| ir.cpp:2431:14:2431:14 | Load | m2430_17 | +| ir.cpp:2431:14:2431:14 | Right | r2431_3 | +| ir.cpp:2431:14:2431:14 | Unary | r2431_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 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 25d6225d77eb..cf8448c9f5d7 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -10826,687 +10826,724 @@ ir.cpp: # 1932| v1932_5(void) = AliasedUse : ~m? # 1932| v1932_6(void) = ExitFunction : -# 1938| char global_template<char> -# 1938| Block 0 -# 1938| v1938_1(void) = EnterFunction : -# 1938| mu1938_2(unknown) = AliasedDefinition : -# 1938| r1938_3(glval<char>) = VariableAddress[global_template] : -# 1938| r1938_4(char) = Constant[42] : -# 1938| mu1938_5(char) = Store[global_template] : &:r1938_3, r1938_4 -# 1938| v1938_6(void) = ReturnVoid : -# 1938| v1938_7(void) = AliasedUse : ~m? -# 1938| v1938_8(void) = ExitFunction : - -# 1938| int global_template<int> -# 1938| Block 0 -# 1938| v1938_1(void) = EnterFunction : -# 1938| mu1938_2(unknown) = AliasedDefinition : -# 1938| r1938_3(glval<int>) = VariableAddress[global_template] : -# 1938| r1938_4(int) = Constant[42] : -# 1938| mu1938_5(int) = Store[global_template] : &:r1938_3, r1938_4 -# 1938| v1938_6(void) = ReturnVoid : -# 1938| v1938_7(void) = AliasedUse : ~m? -# 1938| v1938_8(void) = ExitFunction : - -# 1940| int test_global_template_int() -# 1940| Block 0 -# 1940| v1940_1(void) = EnterFunction : -# 1940| mu1940_2(unknown) = AliasedDefinition : -# 1940| mu1940_3(unknown) = InitializeNonLocal : -# 1941| r1941_1(glval<int>) = VariableAddress[local_int] : -# 1941| r1941_2(glval<int>) = VariableAddress[global_template] : -# 1941| r1941_3(int) = Load[global_template] : &:r1941_2, ~m? -# 1941| mu1941_4(int) = Store[local_int] : &:r1941_1, r1941_3 -# 1942| r1942_1(glval<char>) = VariableAddress[local_char] : -# 1942| r1942_2(glval<char>) = VariableAddress[global_template] : -# 1942| r1942_3(char) = Load[global_template] : &:r1942_2, ~m? -# 1942| mu1942_4(char) = Store[local_char] : &:r1942_1, r1942_3 -# 1943| r1943_1(glval<int>) = VariableAddress[#return] : -# 1943| r1943_2(glval<int>) = VariableAddress[local_int] : -# 1943| r1943_3(int) = Load[local_int] : &:r1943_2, ~m? -# 1943| r1943_4(glval<char>) = VariableAddress[local_char] : -# 1943| r1943_5(char) = Load[local_char] : &:r1943_4, ~m? -# 1943| r1943_6(int) = Convert : r1943_5 -# 1943| r1943_7(int) = Add : r1943_3, r1943_6 -# 1943| mu1943_8(int) = Store[#return] : &:r1943_1, r1943_7 -# 1940| r1940_4(glval<int>) = VariableAddress[#return] : -# 1940| v1940_5(void) = ReturnValue : &:r1940_4, ~m? -# 1940| v1940_6(void) = AliasedUse : ~m? -# 1940| v1940_7(void) = ExitFunction : - -# 1948| int noreturnTest(int) -# 1948| Block 0 -# 1948| v1948_1(void) = EnterFunction : -# 1948| mu1948_2(unknown) = AliasedDefinition : -# 1948| mu1948_3(unknown) = InitializeNonLocal : -# 1948| r1948_4(glval<int>) = VariableAddress[x] : -# 1948| mu1948_5(int) = InitializeParameter[x] : &:r1948_4 -# 1949| r1949_1(glval<int>) = VariableAddress[x] : -# 1949| r1949_2(int) = Load[x] : &:r1949_1, ~m? -# 1949| r1949_3(int) = Constant[10] : -# 1949| r1949_4(bool) = CompareLT : r1949_2, r1949_3 -# 1949| v1949_5(void) = ConditionalBranch : r1949_4 +# 1939| int missing_declaration_entries::Bar3<int>::two_more_missing_variable_declaration_entries() +# 1939| Block 0 +# 1939| v1939_1(void) = EnterFunction : +# 1939| mu1939_2(unknown) = AliasedDefinition : +# 1939| mu1939_3(unknown) = InitializeNonLocal : +# 1939| r1939_4(glval<unknown>) = VariableAddress[#this] : +# 1939| mu1939_5(glval<Bar3<int>>) = InitializeParameter[#this] : &:r1939_4 +# 1939| r1939_6(glval<Bar3<int>>) = Load[#this] : &:r1939_4, ~m? +# 1939| mu1939_7(Bar3<int>) = InitializeIndirection[#this] : &:r1939_6 +# 1942| r1942_1(glval<int>) = VariableAddress[#return] : +# 1942| r1942_2(glval<int>) = VariableAddress[g] : +# 1942| r1942_3(int) = Load[g] : &:r1942_2, ~m? +# 1942| mu1942_4(int) = Store[#return] : &:r1942_1, r1942_3 +# 1939| v1939_8(void) = ReturnIndirection[#this] : &:r1939_6, ~m? +# 1939| r1939_9(glval<int>) = VariableAddress[#return] : +# 1939| v1939_10(void) = ReturnValue : &:r1939_9, ~m? +# 1939| v1939_11(void) = AliasedUse : ~m? +# 1939| v1939_12(void) = ExitFunction : + +# 1946| void missing_declaration_entries::test3() +# 1946| Block 0 +# 1946| v1946_1(void) = EnterFunction : +# 1946| mu1946_2(unknown) = AliasedDefinition : +# 1946| mu1946_3(unknown) = InitializeNonLocal : +# 1947| r1947_1(glval<Bar3<int>>) = VariableAddress[b] : +# 1947| mu1947_2(Bar3<int>) = Uninitialized[b] : &:r1947_1 +# 1948| r1948_1(glval<Bar3<int>>) = VariableAddress[b] : +# 1948| r1948_2(glval<unknown>) = FunctionAddress[two_more_missing_variable_declaration_entries] : +# 1948| r1948_3(int) = Call[two_more_missing_variable_declaration_entries] : func:r1948_2, this:r1948_1 +# 1948| mu1948_4(unknown) = ^CallSideEffect : ~m? +# 1948| v1948_5(void) = ^IndirectReadSideEffect[-1] : &:r1948_1, ~m? +# 1948| mu1948_6(Bar3<int>) = ^IndirectMayWriteSideEffect[-1] : &:r1948_1 +# 1949| v1949_1(void) = NoOp : +# 1946| v1946_4(void) = ReturnVoid : +# 1946| v1946_5(void) = AliasedUse : ~m? +# 1946| v1946_6(void) = ExitFunction : + +# 1952| char global_template<char> +# 1952| Block 0 +# 1952| v1952_1(void) = EnterFunction : +# 1952| mu1952_2(unknown) = AliasedDefinition : +# 1952| r1952_3(glval<char>) = VariableAddress[global_template] : +# 1952| r1952_4(char) = Constant[42] : +# 1952| mu1952_5(char) = Store[global_template] : &:r1952_3, r1952_4 +# 1952| v1952_6(void) = ReturnVoid : +# 1952| v1952_7(void) = AliasedUse : ~m? +# 1952| v1952_8(void) = ExitFunction : + +# 1952| int global_template<int> +# 1952| Block 0 +# 1952| v1952_1(void) = EnterFunction : +# 1952| mu1952_2(unknown) = AliasedDefinition : +# 1952| r1952_3(glval<int>) = VariableAddress[global_template] : +# 1952| r1952_4(int) = Constant[42] : +# 1952| mu1952_5(int) = Store[global_template] : &:r1952_3, r1952_4 +# 1952| v1952_6(void) = ReturnVoid : +# 1952| v1952_7(void) = AliasedUse : ~m? +# 1952| v1952_8(void) = ExitFunction : + +# 1954| int test_global_template_int() +# 1954| Block 0 +# 1954| v1954_1(void) = EnterFunction : +# 1954| mu1954_2(unknown) = AliasedDefinition : +# 1954| mu1954_3(unknown) = InitializeNonLocal : +# 1955| r1955_1(glval<int>) = VariableAddress[local_int] : +# 1955| r1955_2(glval<int>) = VariableAddress[global_template] : +# 1955| r1955_3(int) = Load[global_template] : &:r1955_2, ~m? +# 1955| mu1955_4(int) = Store[local_int] : &:r1955_1, r1955_3 +# 1956| r1956_1(glval<char>) = VariableAddress[local_char] : +# 1956| r1956_2(glval<char>) = VariableAddress[global_template] : +# 1956| r1956_3(char) = Load[global_template] : &:r1956_2, ~m? +# 1956| mu1956_4(char) = Store[local_char] : &:r1956_1, r1956_3 +# 1957| r1957_1(glval<int>) = VariableAddress[#return] : +# 1957| r1957_2(glval<int>) = VariableAddress[local_int] : +# 1957| r1957_3(int) = Load[local_int] : &:r1957_2, ~m? +# 1957| r1957_4(glval<char>) = VariableAddress[local_char] : +# 1957| r1957_5(char) = Load[local_char] : &:r1957_4, ~m? +# 1957| r1957_6(int) = Convert : r1957_5 +# 1957| r1957_7(int) = Add : r1957_3, r1957_6 +# 1957| mu1957_8(int) = Store[#return] : &:r1957_1, r1957_7 +# 1954| r1954_4(glval<int>) = VariableAddress[#return] : +# 1954| v1954_5(void) = ReturnValue : &:r1954_4, ~m? +# 1954| v1954_6(void) = AliasedUse : ~m? +# 1954| v1954_7(void) = ExitFunction : + +# 1962| int noreturnTest(int) +# 1962| Block 0 +# 1962| v1962_1(void) = EnterFunction : +# 1962| mu1962_2(unknown) = AliasedDefinition : +# 1962| mu1962_3(unknown) = InitializeNonLocal : +# 1962| r1962_4(glval<int>) = VariableAddress[x] : +# 1962| mu1962_5(int) = InitializeParameter[x] : &:r1962_4 +# 1963| r1963_1(glval<int>) = VariableAddress[x] : +# 1963| r1963_2(int) = Load[x] : &:r1963_1, ~m? +# 1963| r1963_3(int) = Constant[10] : +# 1963| r1963_4(bool) = CompareLT : r1963_2, r1963_3 +# 1963| v1963_5(void) = ConditionalBranch : r1963_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 1948| Block 1 -# 1948| r1948_6(glval<int>) = VariableAddress[#return] : -# 1948| v1948_7(void) = ReturnValue : &:r1948_6, ~m? -# 1948| v1948_8(void) = AliasedUse : ~m? -# 1948| v1948_9(void) = ExitFunction : - -# 1950| Block 2 -# 1950| r1950_1(glval<int>) = VariableAddress[#return] : -# 1950| r1950_2(glval<int>) = VariableAddress[x] : -# 1950| r1950_3(int) = Load[x] : &:r1950_2, ~m? -# 1950| mu1950_4(int) = Store[#return] : &:r1950_1, r1950_3 +# 1962| Block 1 +# 1962| r1962_6(glval<int>) = VariableAddress[#return] : +# 1962| v1962_7(void) = ReturnValue : &:r1962_6, ~m? +# 1962| v1962_8(void) = AliasedUse : ~m? +# 1962| v1962_9(void) = ExitFunction : + +# 1964| Block 2 +# 1964| r1964_1(glval<int>) = VariableAddress[#return] : +# 1964| r1964_2(glval<int>) = VariableAddress[x] : +# 1964| r1964_3(int) = Load[x] : &:r1964_2, ~m? +# 1964| mu1964_4(int) = Store[#return] : &:r1964_1, r1964_3 #-----| Goto -> Block 1 -# 1952| Block 3 -# 1952| r1952_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1952| v1952_2(void) = Call[noreturnFunc] : func:r1952_1 -# 1952| mu1952_3(unknown) = ^CallSideEffect : ~m? -# 1948| v1948_10(void) = Unreached : +# 1966| Block 3 +# 1966| r1966_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1966| v1966_2(void) = Call[noreturnFunc] : func:r1966_1 +# 1966| mu1966_3(unknown) = ^CallSideEffect : ~m? +# 1962| v1962_10(void) = Unreached : -# 1954| Block 4 -# 1954| r1954_1(glval<int>) = VariableAddress[#return] : -# 1954| mu1954_2(int) = Uninitialized[#return] : &:r1954_1 +# 1968| Block 4 +# 1968| r1968_1(glval<int>) = VariableAddress[#return] : +# 1968| mu1968_2(int) = Uninitialized[#return] : &:r1968_1 #-----| Goto -> Block 1 -# 1956| int noreturnTest2(int) -# 1956| Block 0 -# 1956| v1956_1(void) = EnterFunction : -# 1956| mu1956_2(unknown) = AliasedDefinition : -# 1956| mu1956_3(unknown) = InitializeNonLocal : -# 1956| r1956_4(glval<int>) = VariableAddress[x] : -# 1956| mu1956_5(int) = InitializeParameter[x] : &:r1956_4 -# 1957| r1957_1(glval<int>) = VariableAddress[x] : -# 1957| r1957_2(int) = Load[x] : &:r1957_1, ~m? -# 1957| r1957_3(int) = Constant[10] : -# 1957| r1957_4(bool) = CompareLT : r1957_2, r1957_3 -# 1957| v1957_5(void) = ConditionalBranch : r1957_4 +# 1970| int noreturnTest2(int) +# 1970| Block 0 +# 1970| v1970_1(void) = EnterFunction : +# 1970| mu1970_2(unknown) = AliasedDefinition : +# 1970| mu1970_3(unknown) = InitializeNonLocal : +# 1970| r1970_4(glval<int>) = VariableAddress[x] : +# 1970| mu1970_5(int) = InitializeParameter[x] : &:r1970_4 +# 1971| r1971_1(glval<int>) = VariableAddress[x] : +# 1971| r1971_2(int) = Load[x] : &:r1971_1, ~m? +# 1971| r1971_3(int) = Constant[10] : +# 1971| r1971_4(bool) = CompareLT : r1971_2, r1971_3 +# 1971| v1971_5(void) = ConditionalBranch : r1971_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1958| Block 1 -# 1958| r1958_1(glval<unknown>) = FunctionAddress[noreturnFunc] : -# 1958| v1958_2(void) = Call[noreturnFunc] : func:r1958_1 -# 1958| mu1958_3(unknown) = ^CallSideEffect : ~m? -# 1956| v1956_6(void) = Unreached : - -# 1960| Block 2 -# 1960| r1960_1(glval<int>) = VariableAddress[#return] : -# 1960| r1960_2(glval<int>) = VariableAddress[x] : -# 1960| r1960_3(int) = Load[x] : &:r1960_2, ~m? -# 1960| mu1960_4(int) = Store[#return] : &:r1960_1, r1960_3 -# 1956| r1956_7(glval<int>) = VariableAddress[#return] : -# 1956| v1956_8(void) = ReturnValue : &:r1956_7, ~m? -# 1956| v1956_9(void) = AliasedUse : ~m? -# 1956| v1956_10(void) = ExitFunction : - -# 1963| int static_function(int) -# 1963| Block 0 -# 1963| v1963_1(void) = EnterFunction : -# 1963| mu1963_2(unknown) = AliasedDefinition : -# 1963| mu1963_3(unknown) = InitializeNonLocal : -# 1963| r1963_4(glval<int>) = VariableAddress[x] : -# 1963| mu1963_5(int) = InitializeParameter[x] : &:r1963_4 -# 1964| r1964_1(glval<int>) = VariableAddress[#return] : -# 1964| r1964_2(glval<int>) = VariableAddress[x] : -# 1964| r1964_3(int) = Load[x] : &:r1964_2, ~m? -# 1964| mu1964_4(int) = Store[#return] : &:r1964_1, r1964_3 -# 1963| r1963_6(glval<int>) = VariableAddress[#return] : -# 1963| v1963_7(void) = ReturnValue : &:r1963_6, ~m? -# 1963| v1963_8(void) = AliasedUse : ~m? -# 1963| v1963_9(void) = ExitFunction : - -# 1967| void test_static_functions_with_assignments() -# 1967| Block 0 -# 1967| v1967_1(void) = EnterFunction : -# 1967| mu1967_2(unknown) = AliasedDefinition : -# 1967| mu1967_3(unknown) = InitializeNonLocal : -# 1968| r1968_1(glval<C>) = VariableAddress[c] : -# 1968| mu1968_2(C) = Uninitialized[c] : &:r1968_1 -# 1968| r1968_3(glval<unknown>) = FunctionAddress[C] : -# 1968| v1968_4(void) = Call[C] : func:r1968_3, this:r1968_1 -# 1968| mu1968_5(unknown) = ^CallSideEffect : ~m? -# 1968| mu1968_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1968_1 -# 1969| r1969_1(glval<int>) = VariableAddress[x] : -# 1969| mu1969_2(int) = Uninitialized[x] : &:r1969_1 -# 1970| r1970_1(glval<C>) = VariableAddress[c] : -# 1970| r1970_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1970| r1970_3(int) = Constant[10] : -# 1970| r1970_4(int) = Call[StaticMemberFunction] : func:r1970_2, 0:r1970_3 -# 1970| mu1970_5(unknown) = ^CallSideEffect : ~m? -# 1970| r1970_6(glval<int>) = VariableAddress[x] : -# 1970| mu1970_7(int) = Store[x] : &:r1970_6, r1970_4 -# 1971| r1971_1(glval<int>) = VariableAddress[y] : -# 1971| mu1971_2(int) = Uninitialized[y] : &:r1971_1 -# 1972| r1972_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : -# 1972| r1972_2(int) = Constant[10] : -# 1972| r1972_3(int) = Call[StaticMemberFunction] : func:r1972_1, 0:r1972_2 -# 1972| mu1972_4(unknown) = ^CallSideEffect : ~m? -# 1972| r1972_5(glval<int>) = VariableAddress[y] : -# 1972| mu1972_6(int) = Store[y] : &:r1972_5, r1972_3 -# 1973| r1973_1(glval<int>) = VariableAddress[z] : -# 1973| mu1973_2(int) = Uninitialized[z] : &:r1973_1 -# 1974| r1974_1(glval<unknown>) = FunctionAddress[static_function] : -# 1974| r1974_2(int) = Constant[10] : -# 1974| r1974_3(int) = Call[static_function] : func:r1974_1, 0:r1974_2 -# 1974| mu1974_4(unknown) = ^CallSideEffect : ~m? -# 1974| r1974_5(glval<int>) = VariableAddress[z] : -# 1974| mu1974_6(int) = Store[z] : &:r1974_5, r1974_3 -# 1975| v1975_1(void) = NoOp : -# 1975| r1975_2(glval<C>) = VariableAddress[c] : -# 1975| r1975_3(glval<unknown>) = FunctionAddress[~C] : -# 1975| v1975_4(void) = Call[~C] : func:r1975_3, this:r1975_2 -# 1975| mu1975_5(unknown) = ^CallSideEffect : ~m? -# 1975| v1975_6(void) = ^IndirectReadSideEffect[-1] : &:r1975_2, ~m? -# 1975| mu1975_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1975_2 -# 1967| v1967_4(void) = ReturnVoid : -# 1967| v1967_5(void) = AliasedUse : ~m? -# 1967| v1967_6(void) = ExitFunction : - -# 1977| void test_double_assign() +# 1972| Block 1 +# 1972| r1972_1(glval<unknown>) = FunctionAddress[noreturnFunc] : +# 1972| v1972_2(void) = Call[noreturnFunc] : func:r1972_1 +# 1972| mu1972_3(unknown) = ^CallSideEffect : ~m? +# 1970| v1970_6(void) = Unreached : + +# 1974| Block 2 +# 1974| r1974_1(glval<int>) = VariableAddress[#return] : +# 1974| r1974_2(glval<int>) = VariableAddress[x] : +# 1974| r1974_3(int) = Load[x] : &:r1974_2, ~m? +# 1974| mu1974_4(int) = Store[#return] : &:r1974_1, r1974_3 +# 1970| r1970_7(glval<int>) = VariableAddress[#return] : +# 1970| v1970_8(void) = ReturnValue : &:r1970_7, ~m? +# 1970| v1970_9(void) = AliasedUse : ~m? +# 1970| v1970_10(void) = ExitFunction : + +# 1977| int static_function(int) # 1977| Block 0 -# 1977| v1977_1(void) = EnterFunction : -# 1977| mu1977_2(unknown) = AliasedDefinition : -# 1977| mu1977_3(unknown) = InitializeNonLocal : -# 1978| r1978_1(glval<int>) = VariableAddress[i] : -# 1978| mu1978_2(int) = Uninitialized[i] : &:r1978_1 -# 1978| r1978_3(glval<int>) = VariableAddress[j] : -# 1978| mu1978_4(int) = Uninitialized[j] : &:r1978_3 -# 1979| r1979_1(int) = Constant[40] : -# 1979| r1979_2(glval<int>) = VariableAddress[j] : -# 1979| mu1979_3(int) = Store[j] : &:r1979_2, r1979_1 -# 1979| r1979_4(int) = Load[j] : &:r1979_2, ~m? -# 1979| r1979_5(glval<int>) = VariableAddress[i] : -# 1979| mu1979_6(int) = Store[i] : &:r1979_5, r1979_4 -# 1980| v1980_1(void) = NoOp : -# 1977| v1977_4(void) = ReturnVoid : -# 1977| v1977_5(void) = AliasedUse : ~m? -# 1977| v1977_6(void) = ExitFunction : - -# 1982| void test_assign_with_assign_operation() -# 1982| Block 0 -# 1982| v1982_1(void) = EnterFunction : -# 1982| mu1982_2(unknown) = AliasedDefinition : -# 1982| mu1982_3(unknown) = InitializeNonLocal : -# 1983| r1983_1(glval<int>) = VariableAddress[i] : -# 1983| mu1983_2(int) = Uninitialized[i] : &:r1983_1 -# 1983| r1983_3(glval<int>) = VariableAddress[j] : -# 1983| r1983_4(int) = Constant[0] : -# 1983| mu1983_5(int) = Store[j] : &:r1983_3, r1983_4 -# 1984| r1984_1(int) = Constant[40] : -# 1984| r1984_2(glval<int>) = VariableAddress[j] : -# 1984| r1984_3(int) = Load[j] : &:r1984_2, ~m? -# 1984| r1984_4(int) = Add : r1984_3, r1984_1 -# 1984| mu1984_5(int) = Store[j] : &:r1984_2, r1984_4 -# 1984| r1984_6(int) = Load[j] : &:r1984_2, ~m? -# 1984| r1984_7(glval<int>) = VariableAddress[i] : -# 1984| mu1984_8(int) = Store[i] : &:r1984_7, r1984_6 -# 1985| v1985_1(void) = NoOp : -# 1982| v1982_4(void) = ReturnVoid : -# 1982| v1982_5(void) = AliasedUse : ~m? -# 1982| v1982_6(void) = ExitFunction : - -# 1991| D& D::ReferenceStaticMemberFunction() +# 1977| v1977_1(void) = EnterFunction : +# 1977| mu1977_2(unknown) = AliasedDefinition : +# 1977| mu1977_3(unknown) = InitializeNonLocal : +# 1977| r1977_4(glval<int>) = VariableAddress[x] : +# 1977| mu1977_5(int) = InitializeParameter[x] : &:r1977_4 +# 1978| r1978_1(glval<int>) = VariableAddress[#return] : +# 1978| r1978_2(glval<int>) = VariableAddress[x] : +# 1978| r1978_3(int) = Load[x] : &:r1978_2, ~m? +# 1978| mu1978_4(int) = Store[#return] : &:r1978_1, r1978_3 +# 1977| r1977_6(glval<int>) = VariableAddress[#return] : +# 1977| v1977_7(void) = ReturnValue : &:r1977_6, ~m? +# 1977| v1977_8(void) = AliasedUse : ~m? +# 1977| v1977_9(void) = ExitFunction : + +# 1981| void test_static_functions_with_assignments() +# 1981| Block 0 +# 1981| v1981_1(void) = EnterFunction : +# 1981| mu1981_2(unknown) = AliasedDefinition : +# 1981| mu1981_3(unknown) = InitializeNonLocal : +# 1982| r1982_1(glval<C>) = VariableAddress[c] : +# 1982| mu1982_2(C) = Uninitialized[c] : &:r1982_1 +# 1982| r1982_3(glval<unknown>) = FunctionAddress[C] : +# 1982| v1982_4(void) = Call[C] : func:r1982_3, this:r1982_1 +# 1982| mu1982_5(unknown) = ^CallSideEffect : ~m? +# 1982| mu1982_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1982_1 +# 1983| r1983_1(glval<int>) = VariableAddress[x] : +# 1983| mu1983_2(int) = Uninitialized[x] : &:r1983_1 +# 1984| r1984_1(glval<C>) = VariableAddress[c] : +# 1984| r1984_2(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1984| r1984_3(int) = Constant[10] : +# 1984| r1984_4(int) = Call[StaticMemberFunction] : func:r1984_2, 0:r1984_3 +# 1984| mu1984_5(unknown) = ^CallSideEffect : ~m? +# 1984| r1984_6(glval<int>) = VariableAddress[x] : +# 1984| mu1984_7(int) = Store[x] : &:r1984_6, r1984_4 +# 1985| r1985_1(glval<int>) = VariableAddress[y] : +# 1985| mu1985_2(int) = Uninitialized[y] : &:r1985_1 +# 1986| r1986_1(glval<unknown>) = FunctionAddress[StaticMemberFunction] : +# 1986| r1986_2(int) = Constant[10] : +# 1986| r1986_3(int) = Call[StaticMemberFunction] : func:r1986_1, 0:r1986_2 +# 1986| mu1986_4(unknown) = ^CallSideEffect : ~m? +# 1986| r1986_5(glval<int>) = VariableAddress[y] : +# 1986| mu1986_6(int) = Store[y] : &:r1986_5, r1986_3 +# 1987| r1987_1(glval<int>) = VariableAddress[z] : +# 1987| mu1987_2(int) = Uninitialized[z] : &:r1987_1 +# 1988| r1988_1(glval<unknown>) = FunctionAddress[static_function] : +# 1988| r1988_2(int) = Constant[10] : +# 1988| r1988_3(int) = Call[static_function] : func:r1988_1, 0:r1988_2 +# 1988| mu1988_4(unknown) = ^CallSideEffect : ~m? +# 1988| r1988_5(glval<int>) = VariableAddress[z] : +# 1988| mu1988_6(int) = Store[z] : &:r1988_5, r1988_3 +# 1989| v1989_1(void) = NoOp : +# 1989| r1989_2(glval<C>) = VariableAddress[c] : +# 1989| r1989_3(glval<unknown>) = FunctionAddress[~C] : +# 1989| v1989_4(void) = Call[~C] : func:r1989_3, this:r1989_2 +# 1989| mu1989_5(unknown) = ^CallSideEffect : ~m? +# 1989| v1989_6(void) = ^IndirectReadSideEffect[-1] : &:r1989_2, ~m? +# 1989| mu1989_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1989_2 +# 1981| v1981_4(void) = ReturnVoid : +# 1981| v1981_5(void) = AliasedUse : ~m? +# 1981| v1981_6(void) = ExitFunction : + +# 1991| void test_double_assign() # 1991| Block 0 -# 1991| v1991_1(void) = EnterFunction : -# 1991| mu1991_2(unknown) = AliasedDefinition : -# 1991| mu1991_3(unknown) = InitializeNonLocal : -# 1992| r1992_1(glval<D &>) = VariableAddress[#return] : -# 1992| r1992_2(glval<D>) = VariableAddress[x] : -# 1992| r1992_3(D &) = CopyValue : r1992_2 -# 1992| mu1992_4(D &) = Store[#return] : &:r1992_1, r1992_3 -# 1991| r1991_4(glval<D &>) = VariableAddress[#return] : -# 1991| v1991_5(void) = ReturnValue : &:r1991_4, ~m? -# 1991| v1991_6(void) = AliasedUse : ~m? -# 1991| v1991_7(void) = ExitFunction : - -# 1994| D D::ObjectStaticMemberFunction() -# 1994| Block 0 -# 1994| v1994_1(void) = EnterFunction : -# 1994| mu1994_2(unknown) = AliasedDefinition : -# 1994| mu1994_3(unknown) = InitializeNonLocal : -# 1995| r1995_1(glval<D>) = VariableAddress[#return] : -# 1995| r1995_2(glval<D>) = VariableAddress[x] : -# 1995| r1995_3(D) = Load[x] : &:r1995_2, ~m? -# 1995| mu1995_4(D) = Store[#return] : &:r1995_1, r1995_3 -# 1994| r1994_4(glval<D>) = VariableAddress[#return] : -# 1994| v1994_5(void) = ReturnValue : &:r1994_4, ~m? -# 1994| v1994_6(void) = AliasedUse : ~m? -# 1994| v1994_7(void) = ExitFunction : - -# 1999| void test_static_member_functions_with_reference_return() -# 1999| Block 0 -# 1999| v1999_1(void) = EnterFunction : -# 1999| mu1999_2(unknown) = AliasedDefinition : -# 1999| mu1999_3(unknown) = InitializeNonLocal : -# 2000| r2000_1(glval<D>) = VariableAddress[d] : -# 2000| mu2000_2(D) = Uninitialized[d] : &:r2000_1 -# 2002| r2002_1(glval<D>) = VariableAddress[d] : -# 2002| r2002_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2002| r2002_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2002_2 -# 2002| mu2002_4(unknown) = ^CallSideEffect : ~m? -# 2002| r2002_5(glval<D>) = CopyValue : r2002_3 -# 2003| r2003_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2003| r2003_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2003_1 -# 2003| mu2003_3(unknown) = ^CallSideEffect : ~m? -# 2003| r2003_4(glval<D>) = CopyValue : r2003_2 -# 2004| r2004_1(glval<D>) = VariableAddress[d] : -# 2004| r2004_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2004| r2004_3(D) = Call[ObjectStaticMemberFunction] : func:r2004_2 -# 2004| mu2004_4(unknown) = ^CallSideEffect : ~m? -# 2005| r2005_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2005| r2005_2(D) = Call[ObjectStaticMemberFunction] : func:r2005_1 -# 2005| mu2005_3(unknown) = ^CallSideEffect : ~m? -# 2007| r2007_1(glval<D>) = VariableAddress[x] : -# 2007| mu2007_2(D) = Uninitialized[x] : &:r2007_1 -# 2008| r2008_1(glval<D>) = VariableAddress[d] : -# 2008| r2008_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2008| r2008_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2008_2 -# 2008| mu2008_4(unknown) = ^CallSideEffect : ~m? -# 2008| r2008_5(D) = Load[?] : &:r2008_3, ~m? -# 2008| r2008_6(glval<D>) = VariableAddress[x] : -# 2008| mu2008_7(D) = Store[x] : &:r2008_6, r2008_5 -# 2009| r2009_1(glval<D>) = VariableAddress[y] : -# 2009| mu2009_2(D) = Uninitialized[y] : &:r2009_1 -# 2010| r2010_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2010| r2010_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2010_1 -# 2010| mu2010_3(unknown) = ^CallSideEffect : ~m? -# 2010| r2010_4(D) = Load[?] : &:r2010_2, ~m? -# 2010| r2010_5(glval<D>) = VariableAddress[y] : -# 2010| mu2010_6(D) = Store[y] : &:r2010_5, r2010_4 -# 2011| r2011_1(glval<D>) = VariableAddress[j] : -# 2011| mu2011_2(D) = Uninitialized[j] : &:r2011_1 -# 2012| r2012_1(glval<D>) = VariableAddress[d] : -# 2012| r2012_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2012| r2012_3(D) = Call[ObjectStaticMemberFunction] : func:r2012_2 -# 2012| mu2012_4(unknown) = ^CallSideEffect : ~m? -# 2012| r2012_5(glval<D>) = VariableAddress[j] : -# 2012| mu2012_6(D) = Store[j] : &:r2012_5, r2012_3 -# 2013| r2013_1(glval<D>) = VariableAddress[k] : -# 2013| mu2013_2(D) = Uninitialized[k] : &:r2013_1 -# 2014| r2014_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : -# 2014| r2014_2(D) = Call[ObjectStaticMemberFunction] : func:r2014_1 -# 2014| mu2014_3(unknown) = ^CallSideEffect : ~m? -# 2014| r2014_4(glval<D>) = VariableAddress[k] : -# 2014| mu2014_5(D) = Store[k] : &:r2014_4, r2014_2 -# 2015| v2015_1(void) = NoOp : -# 1999| v1999_4(void) = ReturnVoid : -# 1999| v1999_5(void) = AliasedUse : ~m? -# 1999| v1999_6(void) = ExitFunction : - -# 2017| void test_volatile() -# 2017| Block 0 -# 2017| v2017_1(void) = EnterFunction : -# 2017| mu2017_2(unknown) = AliasedDefinition : -# 2017| mu2017_3(unknown) = InitializeNonLocal : -# 2018| r2018_1(glval<int>) = VariableAddress[x] : -# 2018| mu2018_2(int) = Uninitialized[x] : &:r2018_1 -# 2019| r2019_1(glval<int>) = VariableAddress[x] : -# 2019| r2019_2(int) = Load[x] : &:r2019_1, ~m? -# 2020| v2020_1(void) = NoOp : -# 2017| v2017_4(void) = ReturnVoid : -# 2017| v2017_5(void) = AliasedUse : ~m? -# 2017| v2017_6(void) = ExitFunction : - -# 2028| void value_category_test() -# 2028| Block 0 -# 2028| v2028_1(void) = EnterFunction : -# 2028| mu2028_2(unknown) = AliasedDefinition : -# 2028| mu2028_3(unknown) = InitializeNonLocal : -# 2029| r2029_1(glval<ValCat>) = VariableAddress[c] : -# 2029| mu2029_2(ValCat) = Uninitialized[c] : &:r2029_1 +# 1991| v1991_1(void) = EnterFunction : +# 1991| mu1991_2(unknown) = AliasedDefinition : +# 1991| mu1991_3(unknown) = InitializeNonLocal : +# 1992| r1992_1(glval<int>) = VariableAddress[i] : +# 1992| mu1992_2(int) = Uninitialized[i] : &:r1992_1 +# 1992| r1992_3(glval<int>) = VariableAddress[j] : +# 1992| mu1992_4(int) = Uninitialized[j] : &:r1992_3 +# 1993| r1993_1(int) = Constant[40] : +# 1993| r1993_2(glval<int>) = VariableAddress[j] : +# 1993| mu1993_3(int) = Store[j] : &:r1993_2, r1993_1 +# 1993| r1993_4(int) = Load[j] : &:r1993_2, ~m? +# 1993| r1993_5(glval<int>) = VariableAddress[i] : +# 1993| mu1993_6(int) = Store[i] : &:r1993_5, r1993_4 +# 1994| v1994_1(void) = NoOp : +# 1991| v1991_4(void) = ReturnVoid : +# 1991| v1991_5(void) = AliasedUse : ~m? +# 1991| v1991_6(void) = ExitFunction : + +# 1996| void test_assign_with_assign_operation() +# 1996| Block 0 +# 1996| v1996_1(void) = EnterFunction : +# 1996| mu1996_2(unknown) = AliasedDefinition : +# 1996| mu1996_3(unknown) = InitializeNonLocal : +# 1997| r1997_1(glval<int>) = VariableAddress[i] : +# 1997| mu1997_2(int) = Uninitialized[i] : &:r1997_1 +# 1997| r1997_3(glval<int>) = VariableAddress[j] : +# 1997| r1997_4(int) = Constant[0] : +# 1997| mu1997_5(int) = Store[j] : &:r1997_3, r1997_4 +# 1998| r1998_1(int) = Constant[40] : +# 1998| r1998_2(glval<int>) = VariableAddress[j] : +# 1998| r1998_3(int) = Load[j] : &:r1998_2, ~m? +# 1998| r1998_4(int) = Add : r1998_3, r1998_1 +# 1998| mu1998_5(int) = Store[j] : &:r1998_2, r1998_4 +# 1998| r1998_6(int) = Load[j] : &:r1998_2, ~m? +# 1998| r1998_7(glval<int>) = VariableAddress[i] : +# 1998| mu1998_8(int) = Store[i] : &:r1998_7, r1998_6 +# 1999| v1999_1(void) = NoOp : +# 1996| v1996_4(void) = ReturnVoid : +# 1996| v1996_5(void) = AliasedUse : ~m? +# 1996| v1996_6(void) = ExitFunction : + +# 2005| D& D::ReferenceStaticMemberFunction() +# 2005| Block 0 +# 2005| v2005_1(void) = EnterFunction : +# 2005| mu2005_2(unknown) = AliasedDefinition : +# 2005| mu2005_3(unknown) = InitializeNonLocal : +# 2006| r2006_1(glval<D &>) = VariableAddress[#return] : +# 2006| r2006_2(glval<D>) = VariableAddress[x] : +# 2006| r2006_3(D &) = CopyValue : r2006_2 +# 2006| mu2006_4(D &) = Store[#return] : &:r2006_1, r2006_3 +# 2005| r2005_4(glval<D &>) = VariableAddress[#return] : +# 2005| v2005_5(void) = ReturnValue : &:r2005_4, ~m? +# 2005| v2005_6(void) = AliasedUse : ~m? +# 2005| v2005_7(void) = ExitFunction : + +# 2008| D D::ObjectStaticMemberFunction() +# 2008| Block 0 +# 2008| v2008_1(void) = EnterFunction : +# 2008| mu2008_2(unknown) = AliasedDefinition : +# 2008| mu2008_3(unknown) = InitializeNonLocal : +# 2009| r2009_1(glval<D>) = VariableAddress[#return] : +# 2009| r2009_2(glval<D>) = VariableAddress[x] : +# 2009| r2009_3(D) = Load[x] : &:r2009_2, ~m? +# 2009| mu2009_4(D) = Store[#return] : &:r2009_1, r2009_3 +# 2008| r2008_4(glval<D>) = VariableAddress[#return] : +# 2008| v2008_5(void) = ReturnValue : &:r2008_4, ~m? +# 2008| v2008_6(void) = AliasedUse : ~m? +# 2008| v2008_7(void) = ExitFunction : + +# 2013| void test_static_member_functions_with_reference_return() +# 2013| Block 0 +# 2013| v2013_1(void) = EnterFunction : +# 2013| mu2013_2(unknown) = AliasedDefinition : +# 2013| mu2013_3(unknown) = InitializeNonLocal : +# 2014| r2014_1(glval<D>) = VariableAddress[d] : +# 2014| mu2014_2(D) = Uninitialized[d] : &:r2014_1 +# 2016| r2016_1(glval<D>) = VariableAddress[d] : +# 2016| r2016_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2016| r2016_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2016_2 +# 2016| mu2016_4(unknown) = ^CallSideEffect : ~m? +# 2016| r2016_5(glval<D>) = CopyValue : r2016_3 +# 2017| r2017_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2017| r2017_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2017_1 +# 2017| mu2017_3(unknown) = ^CallSideEffect : ~m? +# 2017| r2017_4(glval<D>) = CopyValue : r2017_2 +# 2018| r2018_1(glval<D>) = VariableAddress[d] : +# 2018| r2018_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2018| r2018_3(D) = Call[ObjectStaticMemberFunction] : func:r2018_2 +# 2018| mu2018_4(unknown) = ^CallSideEffect : ~m? +# 2019| r2019_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2019| r2019_2(D) = Call[ObjectStaticMemberFunction] : func:r2019_1 +# 2019| mu2019_3(unknown) = ^CallSideEffect : ~m? +# 2021| r2021_1(glval<D>) = VariableAddress[x] : +# 2021| mu2021_2(D) = Uninitialized[x] : &:r2021_1 +# 2022| r2022_1(glval<D>) = VariableAddress[d] : +# 2022| r2022_2(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2022| r2022_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2022_2 +# 2022| mu2022_4(unknown) = ^CallSideEffect : ~m? +# 2022| r2022_5(D) = Load[?] : &:r2022_3, ~m? +# 2022| r2022_6(glval<D>) = VariableAddress[x] : +# 2022| mu2022_7(D) = Store[x] : &:r2022_6, r2022_5 +# 2023| r2023_1(glval<D>) = VariableAddress[y] : +# 2023| mu2023_2(D) = Uninitialized[y] : &:r2023_1 +# 2024| r2024_1(glval<unknown>) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2024| r2024_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2024_1 +# 2024| mu2024_3(unknown) = ^CallSideEffect : ~m? +# 2024| r2024_4(D) = Load[?] : &:r2024_2, ~m? +# 2024| r2024_5(glval<D>) = VariableAddress[y] : +# 2024| mu2024_6(D) = Store[y] : &:r2024_5, r2024_4 +# 2025| r2025_1(glval<D>) = VariableAddress[j] : +# 2025| mu2025_2(D) = Uninitialized[j] : &:r2025_1 +# 2026| r2026_1(glval<D>) = VariableAddress[d] : +# 2026| r2026_2(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2026| r2026_3(D) = Call[ObjectStaticMemberFunction] : func:r2026_2 +# 2026| mu2026_4(unknown) = ^CallSideEffect : ~m? +# 2026| r2026_5(glval<D>) = VariableAddress[j] : +# 2026| mu2026_6(D) = Store[j] : &:r2026_5, r2026_3 +# 2027| r2027_1(glval<D>) = VariableAddress[k] : +# 2027| mu2027_2(D) = Uninitialized[k] : &:r2027_1 +# 2028| r2028_1(glval<unknown>) = FunctionAddress[ObjectStaticMemberFunction] : +# 2028| r2028_2(D) = Call[ObjectStaticMemberFunction] : func:r2028_1 +# 2028| mu2028_3(unknown) = ^CallSideEffect : ~m? +# 2028| r2028_4(glval<D>) = VariableAddress[k] : +# 2028| mu2028_5(D) = Store[k] : &:r2028_4, r2028_2 +# 2029| v2029_1(void) = NoOp : +# 2013| v2013_4(void) = ReturnVoid : +# 2013| v2013_5(void) = AliasedUse : ~m? +# 2013| v2013_6(void) = ExitFunction : + +# 2031| void test_volatile() +# 2031| Block 0 +# 2031| v2031_1(void) = EnterFunction : +# 2031| mu2031_2(unknown) = AliasedDefinition : +# 2031| mu2031_3(unknown) = InitializeNonLocal : +# 2032| r2032_1(glval<int>) = VariableAddress[x] : +# 2032| mu2032_2(int) = Uninitialized[x] : &:r2032_1 +# 2033| r2033_1(glval<int>) = VariableAddress[x] : +# 2033| r2033_2(int) = Load[x] : &:r2033_1, ~m? +# 2034| v2034_1(void) = NoOp : +# 2031| v2031_4(void) = ReturnVoid : +# 2031| v2031_5(void) = AliasedUse : ~m? +# 2031| v2031_6(void) = ExitFunction : + +# 2042| void value_category_test() +# 2042| Block 0 +# 2042| v2042_1(void) = EnterFunction : +# 2042| mu2042_2(unknown) = AliasedDefinition : +# 2042| mu2042_3(unknown) = InitializeNonLocal : +# 2043| r2043_1(glval<ValCat>) = VariableAddress[c] : +# 2043| mu2043_2(ValCat) = Uninitialized[c] : &:r2043_1 #-----| r0_1(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, ~m? -# 2031| r2031_1(glval<ValCat>) = VariableAddress[c] : -# 2031| r2031_2(glval<unknown>) = FunctionAddress[lvalue] : -# 2031| r2031_3(ValCat &) = Call[lvalue] : func:r2031_2 -# 2031| mu2031_4(unknown) = ^CallSideEffect : ~m? -# 2031| r2031_5(glval<ValCat>) = CopyValue : r2031_3 -# 2031| mu2031_6(ValCat) = Store[?] : &:r2031_5, r0_3 +# 2045| r2045_1(glval<ValCat>) = VariableAddress[c] : +# 2045| r2045_2(glval<unknown>) = FunctionAddress[lvalue] : +# 2045| r2045_3(ValCat &) = Call[lvalue] : func:r2045_2 +# 2045| mu2045_4(unknown) = ^CallSideEffect : ~m? +# 2045| r2045_5(glval<ValCat>) = CopyValue : r2045_3 +# 2045| mu2045_6(ValCat) = Store[?] : &:r2045_5, r0_3 #-----| r0_4(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, ~m? -# 2032| r2032_1(glval<ValCat>) = VariableAddress[c] : -# 2032| r2032_2(glval<unknown>) = FunctionAddress[xvalue] : -# 2032| r2032_3(ValCat &&) = Call[xvalue] : func:r2032_2 -# 2032| mu2032_4(unknown) = ^CallSideEffect : ~m? -# 2032| r2032_5(glval<ValCat>) = CopyValue : r2032_3 -# 2032| mu2032_6(ValCat) = Store[?] : &:r2032_5, r0_6 +# 2046| r2046_1(glval<ValCat>) = VariableAddress[c] : +# 2046| r2046_2(glval<unknown>) = FunctionAddress[xvalue] : +# 2046| r2046_3(ValCat &&) = Call[xvalue] : func:r2046_2 +# 2046| mu2046_4(unknown) = ^CallSideEffect : ~m? +# 2046| r2046_5(glval<ValCat>) = CopyValue : r2046_3 +# 2046| mu2046_6(ValCat) = Store[?] : &:r2046_5, r0_6 #-----| r0_7(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, ~m? -# 2033| r2033_1(glval<ValCat>) = VariableAddress[#temp2033:5] : -# 2033| r2033_2(glval<ValCat>) = VariableAddress[c] : -# 2033| r2033_3(glval<unknown>) = FunctionAddress[prvalue] : -# 2033| r2033_4(ValCat) = Call[prvalue] : func:r2033_3 -# 2033| mu2033_5(unknown) = ^CallSideEffect : ~m? -# 2033| mu2033_6(ValCat) = Store[#temp2033:5] : &:r2033_1, r2033_4 -# 2033| mu2033_7(ValCat) = Store[#temp2033:5] : &:r2033_1, r0_9 +# 2047| r2047_1(glval<ValCat>) = VariableAddress[#temp2047:5] : +# 2047| r2047_2(glval<ValCat>) = VariableAddress[c] : +# 2047| r2047_3(glval<unknown>) = FunctionAddress[prvalue] : +# 2047| r2047_4(ValCat) = Call[prvalue] : func:r2047_3 +# 2047| mu2047_5(unknown) = ^CallSideEffect : ~m? +# 2047| mu2047_6(ValCat) = Store[#temp2047:5] : &:r2047_1, r2047_4 +# 2047| mu2047_7(ValCat) = Store[#temp2047:5] : &:r2047_1, r0_9 #-----| r0_10(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, ~m? -# 2034| r2034_1(glval<unknown>) = FunctionAddress[lvalue] : -# 2034| r2034_2(ValCat &) = Call[lvalue] : func:r2034_1 -# 2034| mu2034_3(unknown) = ^CallSideEffect : ~m? -# 2034| r2034_4(glval<ValCat>) = CopyValue : r2034_2 -# 2034| mu2034_5(ValCat) = Store[?] : &:r2034_4, r0_12 +# 2048| r2048_1(glval<unknown>) = FunctionAddress[lvalue] : +# 2048| r2048_2(ValCat &) = Call[lvalue] : func:r2048_1 +# 2048| mu2048_3(unknown) = ^CallSideEffect : ~m? +# 2048| r2048_4(glval<ValCat>) = CopyValue : r2048_2 +# 2048| mu2048_5(ValCat) = Store[?] : &:r2048_4, r0_12 #-----| r0_13(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, ~m? -# 2035| r2035_1(glval<unknown>) = FunctionAddress[xvalue] : -# 2035| r2035_2(ValCat &&) = Call[xvalue] : func:r2035_1 -# 2035| mu2035_3(unknown) = ^CallSideEffect : ~m? -# 2035| r2035_4(glval<ValCat>) = CopyValue : r2035_2 -# 2035| mu2035_5(ValCat) = Store[?] : &:r2035_4, r0_15 +# 2049| r2049_1(glval<unknown>) = FunctionAddress[xvalue] : +# 2049| r2049_2(ValCat &&) = Call[xvalue] : func:r2049_1 +# 2049| mu2049_3(unknown) = ^CallSideEffect : ~m? +# 2049| r2049_4(glval<ValCat>) = CopyValue : r2049_2 +# 2049| mu2049_5(ValCat) = Store[?] : &:r2049_4, r0_15 #-----| r0_16(glval<ValCat>) = VariableAddress[#temp0:0] : #-----| mu0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, ~m? -# 2036| r2036_1(glval<ValCat>) = VariableAddress[#temp2036:5] : -# 2036| r2036_2(glval<unknown>) = FunctionAddress[prvalue] : -# 2036| r2036_3(ValCat) = Call[prvalue] : func:r2036_2 -# 2036| mu2036_4(unknown) = ^CallSideEffect : ~m? -# 2036| mu2036_5(ValCat) = Store[#temp2036:5] : &:r2036_1, r2036_3 -# 2036| mu2036_6(ValCat) = Store[#temp2036:5] : &:r2036_1, r0_18 -# 2037| v2037_1(void) = NoOp : -# 2028| v2028_4(void) = ReturnVoid : -# 2028| v2028_5(void) = AliasedUse : ~m? -# 2028| v2028_6(void) = ExitFunction : - -# 2039| void SetStaticFuncPtr() -# 2039| Block 0 -# 2039| v2039_1(void) = EnterFunction : -# 2039| mu2039_2(unknown) = AliasedDefinition : -# 2039| mu2039_3(unknown) = InitializeNonLocal : -# 2040| r2040_1(glval<C>) = VariableAddress[c] : -# 2040| mu2040_2(C) = Uninitialized[c] : &:r2040_1 -# 2040| r2040_3(glval<unknown>) = FunctionAddress[C] : -# 2040| v2040_4(void) = Call[C] : func:r2040_3, this:r2040_1 -# 2040| mu2040_5(unknown) = ^CallSideEffect : ~m? -# 2040| mu2040_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r2040_1 -# 2041| r2041_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2041| r2041_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2041| mu2041_3(..(*)(..)) = Store[pfn] : &:r2041_1, r2041_2 -# 2042| r2042_1(glval<C>) = VariableAddress[c] : -# 2042| r2042_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2042| r2042_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2042| mu2042_4(..(*)(..)) = Store[pfn] : &:r2042_3, r2042_2 -# 2043| v2043_1(void) = NoOp : -# 2043| r2043_2(glval<C>) = VariableAddress[c] : -# 2043| r2043_3(glval<unknown>) = FunctionAddress[~C] : -# 2043| v2043_4(void) = Call[~C] : func:r2043_3, this:r2043_2 -# 2043| mu2043_5(unknown) = ^CallSideEffect : ~m? -# 2043| v2043_6(void) = ^IndirectReadSideEffect[-1] : &:r2043_2, ~m? -# 2043| mu2043_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2043_2 -# 2039| v2039_4(void) = ReturnVoid : -# 2039| v2039_5(void) = AliasedUse : ~m? -# 2039| v2039_6(void) = ExitFunction : - -# 2045| void TernaryTestInt(bool, int, int, int) -# 2045| Block 0 -# 2045| v2045_1(void) = EnterFunction : -# 2045| mu2045_2(unknown) = AliasedDefinition : -# 2045| mu2045_3(unknown) = InitializeNonLocal : -# 2045| r2045_4(glval<bool>) = VariableAddress[a] : -# 2045| mu2045_5(bool) = InitializeParameter[a] : &:r2045_4 -# 2045| r2045_6(glval<int>) = VariableAddress[x] : -# 2045| mu2045_7(int) = InitializeParameter[x] : &:r2045_6 -# 2045| r2045_8(glval<int>) = VariableAddress[y] : -# 2045| mu2045_9(int) = InitializeParameter[y] : &:r2045_8 -# 2045| r2045_10(glval<int>) = VariableAddress[z] : -# 2045| mu2045_11(int) = InitializeParameter[z] : &:r2045_10 -# 2046| r2046_1(glval<bool>) = VariableAddress[a] : -# 2046| r2046_2(bool) = Load[a] : &:r2046_1, ~m? -# 2046| v2046_3(void) = ConditionalBranch : r2046_2 +# 2050| r2050_1(glval<ValCat>) = VariableAddress[#temp2050:5] : +# 2050| r2050_2(glval<unknown>) = FunctionAddress[prvalue] : +# 2050| r2050_3(ValCat) = Call[prvalue] : func:r2050_2 +# 2050| mu2050_4(unknown) = ^CallSideEffect : ~m? +# 2050| mu2050_5(ValCat) = Store[#temp2050:5] : &:r2050_1, r2050_3 +# 2050| mu2050_6(ValCat) = Store[#temp2050:5] : &:r2050_1, r0_18 +# 2051| v2051_1(void) = NoOp : +# 2042| v2042_4(void) = ReturnVoid : +# 2042| v2042_5(void) = AliasedUse : ~m? +# 2042| v2042_6(void) = ExitFunction : + +# 2053| void SetStaticFuncPtr() +# 2053| Block 0 +# 2053| v2053_1(void) = EnterFunction : +# 2053| mu2053_2(unknown) = AliasedDefinition : +# 2053| mu2053_3(unknown) = InitializeNonLocal : +# 2054| r2054_1(glval<C>) = VariableAddress[c] : +# 2054| mu2054_2(C) = Uninitialized[c] : &:r2054_1 +# 2054| r2054_3(glval<unknown>) = FunctionAddress[C] : +# 2054| v2054_4(void) = Call[C] : func:r2054_3, this:r2054_1 +# 2054| mu2054_5(unknown) = ^CallSideEffect : ~m? +# 2054| mu2054_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r2054_1 +# 2055| r2055_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2055| r2055_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2055| mu2055_3(..(*)(..)) = Store[pfn] : &:r2055_1, r2055_2 +# 2056| r2056_1(glval<C>) = VariableAddress[c] : +# 2056| r2056_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2056| r2056_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2056| mu2056_4(..(*)(..)) = Store[pfn] : &:r2056_3, r2056_2 +# 2057| v2057_1(void) = NoOp : +# 2057| r2057_2(glval<C>) = VariableAddress[c] : +# 2057| r2057_3(glval<unknown>) = FunctionAddress[~C] : +# 2057| v2057_4(void) = Call[~C] : func:r2057_3, this:r2057_2 +# 2057| mu2057_5(unknown) = ^CallSideEffect : ~m? +# 2057| v2057_6(void) = ^IndirectReadSideEffect[-1] : &:r2057_2, ~m? +# 2057| mu2057_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2057_2 +# 2053| v2053_4(void) = ReturnVoid : +# 2053| v2053_5(void) = AliasedUse : ~m? +# 2053| v2053_6(void) = ExitFunction : + +# 2059| void TernaryTestInt(bool, int, int, int) +# 2059| Block 0 +# 2059| v2059_1(void) = EnterFunction : +# 2059| mu2059_2(unknown) = AliasedDefinition : +# 2059| mu2059_3(unknown) = InitializeNonLocal : +# 2059| r2059_4(glval<bool>) = VariableAddress[a] : +# 2059| mu2059_5(bool) = InitializeParameter[a] : &:r2059_4 +# 2059| r2059_6(glval<int>) = VariableAddress[x] : +# 2059| mu2059_7(int) = InitializeParameter[x] : &:r2059_6 +# 2059| r2059_8(glval<int>) = VariableAddress[y] : +# 2059| mu2059_9(int) = InitializeParameter[y] : &:r2059_8 +# 2059| r2059_10(glval<int>) = VariableAddress[z] : +# 2059| mu2059_11(int) = InitializeParameter[z] : &:r2059_10 +# 2060| r2060_1(glval<bool>) = VariableAddress[a] : +# 2060| r2060_2(bool) = Load[a] : &:r2060_1, ~m? +# 2060| v2060_3(void) = ConditionalBranch : r2060_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2046| Block 1 -# 2046| r2046_4(glval<int>) = VariableAddress[#temp2046:9] : -# 2046| r2046_5(int) = Load[#temp2046:9] : &:r2046_4, ~m? -# 2046| r2046_6(glval<int>) = VariableAddress[z] : -# 2046| mu2046_7(int) = Store[z] : &:r2046_6, r2046_5 -# 2047| r2047_1(glval<bool>) = VariableAddress[a] : -# 2047| r2047_2(bool) = Load[a] : &:r2047_1, ~m? -# 2047| v2047_3(void) = ConditionalBranch : r2047_2 +# 2060| Block 1 +# 2060| r2060_4(glval<int>) = VariableAddress[#temp2060:9] : +# 2060| r2060_5(int) = Load[#temp2060:9] : &:r2060_4, ~m? +# 2060| r2060_6(glval<int>) = VariableAddress[z] : +# 2060| mu2060_7(int) = Store[z] : &:r2060_6, r2060_5 +# 2061| r2061_1(glval<bool>) = VariableAddress[a] : +# 2061| r2061_2(bool) = Load[a] : &:r2061_1, ~m? +# 2061| v2061_3(void) = ConditionalBranch : r2061_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 2046| Block 2 -# 2046| r2046_8(glval<int>) = VariableAddress[x] : -# 2046| r2046_9(int) = Load[x] : &:r2046_8, ~m? -# 2046| r2046_10(glval<int>) = VariableAddress[#temp2046:9] : -# 2046| mu2046_11(int) = Store[#temp2046:9] : &:r2046_10, r2046_9 +# 2060| Block 2 +# 2060| r2060_8(glval<int>) = VariableAddress[x] : +# 2060| r2060_9(int) = Load[x] : &:r2060_8, ~m? +# 2060| r2060_10(glval<int>) = VariableAddress[#temp2060:9] : +# 2060| mu2060_11(int) = Store[#temp2060:9] : &:r2060_10, r2060_9 #-----| Goto -> Block 1 -# 2046| Block 3 -# 2046| r2046_12(glval<int>) = VariableAddress[y] : -# 2046| r2046_13(int) = Load[y] : &:r2046_12, ~m? -# 2046| r2046_14(glval<int>) = VariableAddress[#temp2046:9] : -# 2046| mu2046_15(int) = Store[#temp2046:9] : &:r2046_14, r2046_13 +# 2060| Block 3 +# 2060| r2060_12(glval<int>) = VariableAddress[y] : +# 2060| r2060_13(int) = Load[y] : &:r2060_12, ~m? +# 2060| r2060_14(glval<int>) = VariableAddress[#temp2060:9] : +# 2060| mu2060_15(int) = Store[#temp2060:9] : &:r2060_14, r2060_13 #-----| Goto -> Block 1 -# 2047| Block 4 -# 2047| r2047_4(glval<int>) = VariableAddress[#temp2047:9] : -# 2047| r2047_5(int) = Load[#temp2047:9] : &:r2047_4, ~m? -# 2047| r2047_6(glval<int>) = VariableAddress[z] : -# 2047| mu2047_7(int) = Store[z] : &:r2047_6, r2047_5 -# 2048| r2048_1(glval<bool>) = VariableAddress[a] : -# 2048| r2048_2(bool) = Load[a] : &:r2048_1, ~m? -# 2048| v2048_3(void) = ConditionalBranch : r2048_2 +# 2061| Block 4 +# 2061| r2061_4(glval<int>) = VariableAddress[#temp2061:9] : +# 2061| r2061_5(int) = Load[#temp2061:9] : &:r2061_4, ~m? +# 2061| r2061_6(glval<int>) = VariableAddress[z] : +# 2061| mu2061_7(int) = Store[z] : &:r2061_6, r2061_5 +# 2062| r2062_1(glval<bool>) = VariableAddress[a] : +# 2062| r2062_2(bool) = Load[a] : &:r2062_1, ~m? +# 2062| v2062_3(void) = ConditionalBranch : r2062_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 2047| Block 5 -# 2047| r2047_8(glval<int>) = VariableAddress[x] : -# 2047| r2047_9(int) = Load[x] : &:r2047_8, ~m? -# 2047| r2047_10(glval<int>) = VariableAddress[#temp2047:9] : -# 2047| mu2047_11(int) = Store[#temp2047:9] : &:r2047_10, r2047_9 +# 2061| Block 5 +# 2061| r2061_8(glval<int>) = VariableAddress[x] : +# 2061| r2061_9(int) = Load[x] : &:r2061_8, ~m? +# 2061| r2061_10(glval<int>) = VariableAddress[#temp2061:9] : +# 2061| mu2061_11(int) = Store[#temp2061:9] : &:r2061_10, r2061_9 #-----| Goto -> Block 4 -# 2047| Block 6 -# 2047| r2047_12(int) = Constant[5] : -# 2047| r2047_13(glval<int>) = VariableAddress[#temp2047:9] : -# 2047| mu2047_14(int) = Store[#temp2047:9] : &:r2047_13, r2047_12 +# 2061| Block 6 +# 2061| r2061_12(int) = Constant[5] : +# 2061| r2061_13(glval<int>) = VariableAddress[#temp2061:9] : +# 2061| mu2061_14(int) = Store[#temp2061:9] : &:r2061_13, r2061_12 #-----| Goto -> Block 4 -# 2048| Block 7 -# 2048| r2048_4(glval<int>) = VariableAddress[#temp2048:9] : -# 2048| r2048_5(int) = Load[#temp2048:9] : &:r2048_4, ~m? -# 2048| r2048_6(glval<int>) = VariableAddress[z] : -# 2048| mu2048_7(int) = Store[z] : &:r2048_6, r2048_5 -# 2049| r2049_1(int) = Constant[7] : -# 2049| r2049_2(glval<bool>) = VariableAddress[a] : -# 2049| r2049_3(bool) = Load[a] : &:r2049_2, ~m? -# 2049| v2049_4(void) = ConditionalBranch : r2049_3 +# 2062| Block 7 +# 2062| r2062_4(glval<int>) = VariableAddress[#temp2062:9] : +# 2062| r2062_5(int) = Load[#temp2062:9] : &:r2062_4, ~m? +# 2062| r2062_6(glval<int>) = VariableAddress[z] : +# 2062| mu2062_7(int) = Store[z] : &:r2062_6, r2062_5 +# 2063| r2063_1(int) = Constant[7] : +# 2063| r2063_2(glval<bool>) = VariableAddress[a] : +# 2063| r2063_3(bool) = Load[a] : &:r2063_2, ~m? +# 2063| v2063_4(void) = ConditionalBranch : r2063_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 2048| Block 8 -# 2048| r2048_8(int) = Constant[3] : -# 2048| r2048_9(glval<int>) = VariableAddress[#temp2048:9] : -# 2048| mu2048_10(int) = Store[#temp2048:9] : &:r2048_9, r2048_8 +# 2062| Block 8 +# 2062| r2062_8(int) = Constant[3] : +# 2062| r2062_9(glval<int>) = VariableAddress[#temp2062:9] : +# 2062| mu2062_10(int) = Store[#temp2062:9] : &:r2062_9, r2062_8 #-----| Goto -> Block 7 -# 2048| Block 9 -# 2048| r2048_11(int) = Constant[5] : -# 2048| r2048_12(glval<int>) = VariableAddress[#temp2048:9] : -# 2048| mu2048_13(int) = Store[#temp2048:9] : &:r2048_12, r2048_11 +# 2062| Block 9 +# 2062| r2062_11(int) = Constant[5] : +# 2062| r2062_12(glval<int>) = VariableAddress[#temp2062:9] : +# 2062| mu2062_13(int) = Store[#temp2062:9] : &:r2062_12, r2062_11 #-----| Goto -> Block 7 -# 2049| Block 10 -# 2049| r2049_5(glval<unknown>) = VariableAddress[#temp2049:6] : -# 2049| r2049_6(glval<int>) = Load[#temp2049:6] : &:r2049_5, ~m? -# 2049| mu2049_7(int) = Store[?] : &:r2049_6, r2049_1 -# 2050| v2050_1(void) = NoOp : -# 2045| v2045_12(void) = ReturnVoid : -# 2045| v2045_13(void) = AliasedUse : ~m? -# 2045| v2045_14(void) = ExitFunction : - -# 2049| Block 11 -# 2049| r2049_8(glval<int>) = VariableAddress[x] : -# 2049| r2049_9(glval<unknown>) = VariableAddress[#temp2049:6] : -# 2049| mu2049_10(glval<int>) = Store[#temp2049:6] : &:r2049_9, r2049_8 +# 2063| Block 10 +# 2063| r2063_5(glval<unknown>) = VariableAddress[#temp2063:6] : +# 2063| r2063_6(glval<int>) = Load[#temp2063:6] : &:r2063_5, ~m? +# 2063| mu2063_7(int) = Store[?] : &:r2063_6, r2063_1 +# 2064| v2064_1(void) = NoOp : +# 2059| v2059_12(void) = ReturnVoid : +# 2059| v2059_13(void) = AliasedUse : ~m? +# 2059| v2059_14(void) = ExitFunction : + +# 2063| Block 11 +# 2063| r2063_8(glval<int>) = VariableAddress[x] : +# 2063| r2063_9(glval<unknown>) = VariableAddress[#temp2063:6] : +# 2063| mu2063_10(glval<int>) = Store[#temp2063:6] : &:r2063_9, r2063_8 #-----| Goto -> Block 10 -# 2049| Block 12 -# 2049| r2049_11(glval<int>) = VariableAddress[y] : -# 2049| r2049_12(glval<unknown>) = VariableAddress[#temp2049:6] : -# 2049| mu2049_13(glval<int>) = Store[#temp2049:6] : &:r2049_12, r2049_11 +# 2063| Block 12 +# 2063| r2063_11(glval<int>) = VariableAddress[y] : +# 2063| r2063_12(glval<unknown>) = VariableAddress[#temp2063:6] : +# 2063| mu2063_13(glval<int>) = Store[#temp2063:6] : &:r2063_12, r2063_11 #-----| Goto -> Block 10 -# 2055| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2055| Block 0 -# 2055| v2055_1(void) = EnterFunction : -# 2055| mu2055_2(unknown) = AliasedDefinition : -# 2055| mu2055_3(unknown) = InitializeNonLocal : -# 2055| r2055_4(glval<bool>) = VariableAddress[a] : -# 2055| mu2055_5(bool) = InitializeParameter[a] : &:r2055_4 -# 2055| r2055_6(glval<TernaryPodObj>) = VariableAddress[x] : -# 2055| mu2055_7(TernaryPodObj) = InitializeParameter[x] : &:r2055_6 -# 2055| r2055_8(glval<TernaryPodObj>) = VariableAddress[y] : -# 2055| mu2055_9(TernaryPodObj) = InitializeParameter[y] : &:r2055_8 -# 2055| r2055_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2055| mu2055_11(TernaryPodObj) = InitializeParameter[z] : &:r2055_10 -# 2056| r2056_1(glval<bool>) = VariableAddress[a] : -# 2056| r2056_2(bool) = Load[a] : &:r2056_1, ~m? -# 2056| v2056_3(void) = ConditionalBranch : r2056_2 +# 2069| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2069| Block 0 +# 2069| v2069_1(void) = EnterFunction : +# 2069| mu2069_2(unknown) = AliasedDefinition : +# 2069| mu2069_3(unknown) = InitializeNonLocal : +# 2069| r2069_4(glval<bool>) = VariableAddress[a] : +# 2069| mu2069_5(bool) = InitializeParameter[a] : &:r2069_4 +# 2069| r2069_6(glval<TernaryPodObj>) = VariableAddress[x] : +# 2069| mu2069_7(TernaryPodObj) = InitializeParameter[x] : &:r2069_6 +# 2069| r2069_8(glval<TernaryPodObj>) = VariableAddress[y] : +# 2069| mu2069_9(TernaryPodObj) = InitializeParameter[y] : &:r2069_8 +# 2069| r2069_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2069| mu2069_11(TernaryPodObj) = InitializeParameter[z] : &:r2069_10 +# 2070| r2070_1(glval<bool>) = VariableAddress[a] : +# 2070| r2070_2(bool) = Load[a] : &:r2070_1, ~m? +# 2070| v2070_3(void) = ConditionalBranch : r2070_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2056| Block 1 -# 2056| r2056_4(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : -# 2056| r2056_5(TernaryPodObj) = Load[#temp2056:9] : &:r2056_4, ~m? -# 2056| r2056_6(glval<TernaryPodObj>) = VariableAddress[z] : -# 2056| mu2056_7(TernaryPodObj) = Store[z] : &:r2056_6, r2056_5 -# 2057| r2057_1(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| r2057_2(glval<bool>) = VariableAddress[a] : -# 2057| r2057_3(bool) = Load[a] : &:r2057_2, ~m? -# 2057| v2057_4(void) = ConditionalBranch : r2057_3 +# 2070| Block 1 +# 2070| r2070_4(glval<TernaryPodObj>) = VariableAddress[#temp2070:9] : +# 2070| r2070_5(TernaryPodObj) = Load[#temp2070:9] : &:r2070_4, ~m? +# 2070| r2070_6(glval<TernaryPodObj>) = VariableAddress[z] : +# 2070| mu2070_7(TernaryPodObj) = Store[z] : &:r2070_6, r2070_5 +# 2071| r2071_1(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| r2071_2(glval<bool>) = VariableAddress[a] : +# 2071| r2071_3(bool) = Load[a] : &:r2071_2, ~m? +# 2071| v2071_4(void) = ConditionalBranch : r2071_3 #-----| False -> Block 6 #-----| True -> Block 5 -# 2056| Block 2 -# 2056| r2056_8(glval<TernaryPodObj>) = VariableAddress[x] : -# 2056| r2056_9(TernaryPodObj) = Load[x] : &:r2056_8, ~m? -# 2056| r2056_10(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : -# 2056| mu2056_11(TernaryPodObj) = Store[#temp2056:9] : &:r2056_10, r2056_9 +# 2070| Block 2 +# 2070| r2070_8(glval<TernaryPodObj>) = VariableAddress[x] : +# 2070| r2070_9(TernaryPodObj) = Load[x] : &:r2070_8, ~m? +# 2070| r2070_10(glval<TernaryPodObj>) = VariableAddress[#temp2070:9] : +# 2070| mu2070_11(TernaryPodObj) = Store[#temp2070:9] : &:r2070_10, r2070_9 #-----| Goto -> Block 1 -# 2056| Block 3 -# 2056| r2056_12(glval<TernaryPodObj>) = VariableAddress[y] : -# 2056| r2056_13(TernaryPodObj) = Load[y] : &:r2056_12, ~m? -# 2056| r2056_14(glval<TernaryPodObj>) = VariableAddress[#temp2056:9] : -# 2056| mu2056_15(TernaryPodObj) = Store[#temp2056:9] : &:r2056_14, r2056_13 +# 2070| Block 3 +# 2070| r2070_12(glval<TernaryPodObj>) = VariableAddress[y] : +# 2070| r2070_13(TernaryPodObj) = Load[y] : &:r2070_12, ~m? +# 2070| r2070_14(glval<TernaryPodObj>) = VariableAddress[#temp2070:9] : +# 2070| mu2070_15(TernaryPodObj) = Store[#temp2070:9] : &:r2070_14, r2070_13 #-----| Goto -> Block 1 -# 2057| Block 4 -# 2057| r2057_5(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| r2057_6(TernaryPodObj) = Load[#temp2057:9] : &:r2057_5, ~m? -# 2057| mu2057_7(TernaryPodObj) = Store[#temp2057:9] : &:r2057_1, r2057_6 -# 2057| r2057_8(TernaryPodObj) = Load[#temp2057:9] : &:r2057_1, ~m? -# 2057| r2057_9(glval<TernaryPodObj>) = VariableAddress[z] : -# 2057| mu2057_10(TernaryPodObj) = Store[z] : &:r2057_9, r2057_8 -# 2058| r2058_1(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| r2058_2(glval<bool>) = VariableAddress[a] : -# 2058| r2058_3(bool) = Load[a] : &:r2058_2, ~m? -# 2058| v2058_4(void) = ConditionalBranch : r2058_3 +# 2071| Block 4 +# 2071| r2071_5(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| r2071_6(TernaryPodObj) = Load[#temp2071:9] : &:r2071_5, ~m? +# 2071| mu2071_7(TernaryPodObj) = Store[#temp2071:9] : &:r2071_1, r2071_6 +# 2071| r2071_8(TernaryPodObj) = Load[#temp2071:9] : &:r2071_1, ~m? +# 2071| r2071_9(glval<TernaryPodObj>) = VariableAddress[z] : +# 2071| mu2071_10(TernaryPodObj) = Store[z] : &:r2071_9, r2071_8 +# 2072| r2072_1(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| r2072_2(glval<bool>) = VariableAddress[a] : +# 2072| r2072_3(bool) = Load[a] : &:r2072_2, ~m? +# 2072| v2072_4(void) = ConditionalBranch : r2072_3 #-----| False -> Block 9 #-----| True -> Block 8 -# 2057| Block 5 -# 2057| r2057_11(glval<TernaryPodObj>) = VariableAddress[#temp2057:13] : -# 2057| r2057_12(glval<TernaryPodObj>) = VariableAddress[x] : -# 2057| r2057_13(TernaryPodObj) = Load[x] : &:r2057_12, ~m? -# 2057| mu2057_14(TernaryPodObj) = Store[#temp2057:13] : &:r2057_11, r2057_13 -# 2057| r2057_15(TernaryPodObj) = Load[#temp2057:13] : &:r2057_11, ~m? -# 2057| r2057_16(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| mu2057_17(TernaryPodObj) = Store[#temp2057:9] : &:r2057_16, r2057_15 +# 2071| Block 5 +# 2071| r2071_11(glval<TernaryPodObj>) = VariableAddress[#temp2071:13] : +# 2071| r2071_12(glval<TernaryPodObj>) = VariableAddress[x] : +# 2071| r2071_13(TernaryPodObj) = Load[x] : &:r2071_12, ~m? +# 2071| mu2071_14(TernaryPodObj) = Store[#temp2071:13] : &:r2071_11, r2071_13 +# 2071| r2071_15(TernaryPodObj) = Load[#temp2071:13] : &:r2071_11, ~m? +# 2071| r2071_16(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| mu2071_17(TernaryPodObj) = Store[#temp2071:9] : &:r2071_16, r2071_15 #-----| Goto -> Block 4 -# 2057| Block 6 -# 2057| r2057_18(glval<TernaryPodObj>) = VariableAddress[#temp2057:17] : -# 2057| r2057_19(TernaryPodObj) = Constant[0] : -# 2057| mu2057_20(TernaryPodObj) = Store[#temp2057:17] : &:r2057_18, r2057_19 -# 2057| r2057_21(TernaryPodObj) = Load[#temp2057:17] : &:r2057_18, ~m? -# 2057| r2057_22(glval<TernaryPodObj>) = VariableAddress[#temp2057:9] : -# 2057| mu2057_23(TernaryPodObj) = Store[#temp2057:9] : &:r2057_22, r2057_21 +# 2071| Block 6 +# 2071| r2071_18(glval<TernaryPodObj>) = VariableAddress[#temp2071:17] : +# 2071| r2071_19(TernaryPodObj) = Constant[0] : +# 2071| mu2071_20(TernaryPodObj) = Store[#temp2071:17] : &:r2071_18, r2071_19 +# 2071| r2071_21(TernaryPodObj) = Load[#temp2071:17] : &:r2071_18, ~m? +# 2071| r2071_22(glval<TernaryPodObj>) = VariableAddress[#temp2071:9] : +# 2071| mu2071_23(TernaryPodObj) = Store[#temp2071:9] : &:r2071_22, r2071_21 #-----| Goto -> Block 4 -# 2058| Block 7 -# 2058| r2058_5(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| r2058_6(TernaryPodObj) = Load[#temp2058:9] : &:r2058_5, ~m? -# 2058| mu2058_7(TernaryPodObj) = Store[#temp2058:9] : &:r2058_1, r2058_6 -# 2058| r2058_8(TernaryPodObj) = Load[#temp2058:9] : &:r2058_1, ~m? -# 2058| r2058_9(glval<TernaryPodObj>) = VariableAddress[z] : -# 2058| mu2058_10(TernaryPodObj) = Store[z] : &:r2058_9, r2058_8 -# 2059| r2059_1(glval<TernaryPodObj>) = VariableAddress[#temp2059:23] : -# 2059| r2059_2(TernaryPodObj) = Constant[0] : -# 2059| mu2059_3(TernaryPodObj) = Store[#temp2059:23] : &:r2059_1, r2059_2 -# 2059| r2059_4(TernaryPodObj) = Load[#temp2059:23] : &:r2059_1, ~m? -# 2059| r2059_5(glval<bool>) = VariableAddress[a] : -# 2059| r2059_6(bool) = Load[a] : &:r2059_5, ~m? -# 2059| v2059_7(void) = ConditionalBranch : r2059_6 +# 2072| Block 7 +# 2072| r2072_5(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| r2072_6(TernaryPodObj) = Load[#temp2072:9] : &:r2072_5, ~m? +# 2072| mu2072_7(TernaryPodObj) = Store[#temp2072:9] : &:r2072_1, r2072_6 +# 2072| r2072_8(TernaryPodObj) = Load[#temp2072:9] : &:r2072_1, ~m? +# 2072| r2072_9(glval<TernaryPodObj>) = VariableAddress[z] : +# 2072| mu2072_10(TernaryPodObj) = Store[z] : &:r2072_9, r2072_8 +# 2073| r2073_1(glval<TernaryPodObj>) = VariableAddress[#temp2073:23] : +# 2073| r2073_2(TernaryPodObj) = Constant[0] : +# 2073| mu2073_3(TernaryPodObj) = Store[#temp2073:23] : &:r2073_1, r2073_2 +# 2073| r2073_4(TernaryPodObj) = Load[#temp2073:23] : &:r2073_1, ~m? +# 2073| r2073_5(glval<bool>) = VariableAddress[a] : +# 2073| r2073_6(bool) = Load[a] : &:r2073_5, ~m? +# 2073| v2073_7(void) = ConditionalBranch : r2073_6 #-----| False -> Block 12 #-----| True -> Block 11 -# 2058| Block 8 -# 2058| r2058_11(glval<TernaryPodObj>) = VariableAddress[#temp2058:13] : -# 2058| r2058_12(TernaryPodObj) = Constant[0] : -# 2058| mu2058_13(TernaryPodObj) = Store[#temp2058:13] : &:r2058_11, r2058_12 -# 2058| r2058_14(TernaryPodObj) = Load[#temp2058:13] : &:r2058_11, ~m? -# 2058| r2058_15(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| mu2058_16(TernaryPodObj) = Store[#temp2058:9] : &:r2058_15, r2058_14 +# 2072| Block 8 +# 2072| r2072_11(glval<TernaryPodObj>) = VariableAddress[#temp2072:13] : +# 2072| r2072_12(TernaryPodObj) = Constant[0] : +# 2072| mu2072_13(TernaryPodObj) = Store[#temp2072:13] : &:r2072_11, r2072_12 +# 2072| r2072_14(TernaryPodObj) = Load[#temp2072:13] : &:r2072_11, ~m? +# 2072| r2072_15(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| mu2072_16(TernaryPodObj) = Store[#temp2072:9] : &:r2072_15, r2072_14 #-----| Goto -> Block 7 -# 2058| Block 9 -# 2058| r2058_17(glval<TernaryPodObj>) = VariableAddress[#temp2058:31] : -# 2058| r2058_18(TernaryPodObj) = Constant[0] : -# 2058| mu2058_19(TernaryPodObj) = Store[#temp2058:31] : &:r2058_17, r2058_18 -# 2058| r2058_20(TernaryPodObj) = Load[#temp2058:31] : &:r2058_17, ~m? -# 2058| r2058_21(glval<TernaryPodObj>) = VariableAddress[#temp2058:9] : -# 2058| mu2058_22(TernaryPodObj) = Store[#temp2058:9] : &:r2058_21, r2058_20 +# 2072| Block 9 +# 2072| r2072_17(glval<TernaryPodObj>) = VariableAddress[#temp2072:31] : +# 2072| r2072_18(TernaryPodObj) = Constant[0] : +# 2072| mu2072_19(TernaryPodObj) = Store[#temp2072:31] : &:r2072_17, r2072_18 +# 2072| r2072_20(TernaryPodObj) = Load[#temp2072:31] : &:r2072_17, ~m? +# 2072| r2072_21(glval<TernaryPodObj>) = VariableAddress[#temp2072:9] : +# 2072| mu2072_22(TernaryPodObj) = Store[#temp2072:9] : &:r2072_21, r2072_20 #-----| Goto -> Block 7 -# 2059| Block 10 -# 2059| r2059_8(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : -# 2059| r2059_9(TernaryPodObj) = Load[#temp2059:10] : &:r2059_8, ~m? -# 2059| r2059_10(glval<TernaryPodObj>) = VariableAddress[z] : -# 2059| mu2059_11(TernaryPodObj) = Store[z] : &:r2059_10, r2059_9 -# 2059| r2059_12(glval<TernaryPodObj>) = CopyValue : r2059_10 -# 2059| mu2059_13(TernaryPodObj) = Store[?] : &:r2059_12, r2059_4 -# 2060| v2060_1(void) = NoOp : -# 2055| v2055_12(void) = ReturnVoid : -# 2055| v2055_13(void) = AliasedUse : ~m? -# 2055| v2055_14(void) = ExitFunction : - -# 2059| Block 11 -# 2059| r2059_14(glval<TernaryPodObj>) = VariableAddress[x] : -# 2059| r2059_15(TernaryPodObj) = Load[x] : &:r2059_14, ~m? -# 2059| r2059_16(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : -# 2059| mu2059_17(TernaryPodObj) = Store[#temp2059:10] : &:r2059_16, r2059_15 +# 2073| Block 10 +# 2073| r2073_8(glval<TernaryPodObj>) = VariableAddress[#temp2073:10] : +# 2073| r2073_9(TernaryPodObj) = Load[#temp2073:10] : &:r2073_8, ~m? +# 2073| r2073_10(glval<TernaryPodObj>) = VariableAddress[z] : +# 2073| mu2073_11(TernaryPodObj) = Store[z] : &:r2073_10, r2073_9 +# 2073| r2073_12(glval<TernaryPodObj>) = CopyValue : r2073_10 +# 2073| mu2073_13(TernaryPodObj) = Store[?] : &:r2073_12, r2073_4 +# 2074| v2074_1(void) = NoOp : +# 2069| v2069_12(void) = ReturnVoid : +# 2069| v2069_13(void) = AliasedUse : ~m? +# 2069| v2069_14(void) = ExitFunction : + +# 2073| Block 11 +# 2073| r2073_14(glval<TernaryPodObj>) = VariableAddress[x] : +# 2073| r2073_15(TernaryPodObj) = Load[x] : &:r2073_14, ~m? +# 2073| r2073_16(glval<TernaryPodObj>) = VariableAddress[#temp2073:10] : +# 2073| mu2073_17(TernaryPodObj) = Store[#temp2073:10] : &:r2073_16, r2073_15 #-----| Goto -> Block 10 -# 2059| Block 12 -# 2059| r2059_18(glval<TernaryPodObj>) = VariableAddress[y] : -# 2059| r2059_19(TernaryPodObj) = Load[y] : &:r2059_18, ~m? -# 2059| r2059_20(glval<TernaryPodObj>) = VariableAddress[#temp2059:10] : -# 2059| mu2059_21(TernaryPodObj) = Store[#temp2059:10] : &:r2059_20, r2059_19 +# 2073| Block 12 +# 2073| r2073_18(glval<TernaryPodObj>) = VariableAddress[y] : +# 2073| r2073_19(TernaryPodObj) = Load[y] : &:r2073_18, ~m? +# 2073| r2073_20(glval<TernaryPodObj>) = VariableAddress[#temp2073:10] : +# 2073| mu2073_21(TernaryPodObj) = Store[#temp2073:10] : &:r2073_20, r2073_19 #-----| Goto -> Block 10 -# 2062| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2062| Block 0 -# 2062| v2062_1(void) = EnterFunction : -# 2062| mu2062_2(unknown) = AliasedDefinition : -# 2062| mu2062_3(unknown) = InitializeNonLocal : -# 2062| r2062_4(glval<unknown>) = VariableAddress[#this] : -# 2062| mu2062_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_4 -# 2062| r2062_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_4, ~m? -# 2062| mu2062_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_6 +# 2076| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2076| Block 0 +# 2076| v2076_1(void) = EnterFunction : +# 2076| mu2076_2(unknown) = AliasedDefinition : +# 2076| mu2076_3(unknown) = InitializeNonLocal : +# 2076| r2076_4(glval<unknown>) = VariableAddress[#this] : +# 2076| mu2076_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2076_4 +# 2076| r2076_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2076_4, ~m? +# 2076| mu2076_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_6 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? @@ -11517,2813 +11554,2813 @@ ir.cpp: #-----| r0_8(glval<TernaryNonPodObj>) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| mu0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2062| v2062_8(void) = ReturnIndirection[#this] : &:r2062_6, ~m? +# 2076| v2076_8(void) = ReturnIndirection[#this] : &:r2076_6, ~m? #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2062| r2062_9(glval<TernaryNonPodObj &>) = VariableAddress[#return] : -# 2062| v2062_10(void) = ReturnValue : &:r2062_9, ~m? -# 2062| v2062_11(void) = AliasedUse : ~m? -# 2062| v2062_12(void) = ExitFunction : - -# 2062| void TernaryNonPodObj::TernaryNonPodObj() -# 2062| Block 0 -# 2062| v2062_1(void) = EnterFunction : -# 2062| mu2062_2(unknown) = AliasedDefinition : -# 2062| mu2062_3(unknown) = InitializeNonLocal : -# 2062| r2062_4(glval<unknown>) = VariableAddress[#this] : -# 2062| mu2062_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_4 -# 2062| r2062_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_4, ~m? -# 2062| mu2062_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_6 -# 2062| v2062_8(void) = NoOp : -# 2062| v2062_9(void) = ReturnIndirection[#this] : &:r2062_6, ~m? -# 2062| v2062_10(void) = ReturnVoid : -# 2062| v2062_11(void) = AliasedUse : ~m? -# 2062| v2062_12(void) = ExitFunction : - -# 2062| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2062| Block 0 -# 2062| v2062_1(void) = EnterFunction : -# 2062| mu2062_2(unknown) = AliasedDefinition : -# 2062| mu2062_3(unknown) = InitializeNonLocal : -# 2062| r2062_4(glval<unknown>) = VariableAddress[#this] : -# 2062| mu2062_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2062_4 -# 2062| r2062_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2062_4, ~m? -# 2062| mu2062_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2062_6 +# 2076| r2076_9(glval<TernaryNonPodObj &>) = VariableAddress[#return] : +# 2076| v2076_10(void) = ReturnValue : &:r2076_9, ~m? +# 2076| v2076_11(void) = AliasedUse : ~m? +# 2076| v2076_12(void) = ExitFunction : + +# 2076| void TernaryNonPodObj::TernaryNonPodObj() +# 2076| Block 0 +# 2076| v2076_1(void) = EnterFunction : +# 2076| mu2076_2(unknown) = AliasedDefinition : +# 2076| mu2076_3(unknown) = InitializeNonLocal : +# 2076| r2076_4(glval<unknown>) = VariableAddress[#this] : +# 2076| mu2076_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2076_4 +# 2076| r2076_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2076_4, ~m? +# 2076| mu2076_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_6 +# 2076| v2076_8(void) = NoOp : +# 2076| v2076_9(void) = ReturnIndirection[#this] : &:r2076_6, ~m? +# 2076| v2076_10(void) = ReturnVoid : +# 2076| v2076_11(void) = AliasedUse : ~m? +# 2076| v2076_12(void) = ExitFunction : + +# 2076| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2076| Block 0 +# 2076| v2076_1(void) = EnterFunction : +# 2076| mu2076_2(unknown) = AliasedDefinition : +# 2076| mu2076_3(unknown) = InitializeNonLocal : +# 2076| r2076_4(glval<unknown>) = VariableAddress[#this] : +# 2076| mu2076_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2076_4 +# 2076| r2076_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2076_4, ~m? +# 2076| mu2076_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_6 #-----| r0_1(glval<TernaryNonPodObj &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2062| v2062_8(void) = NoOp : -# 2062| v2062_9(void) = ReturnIndirection[#this] : &:r2062_6, ~m? +# 2076| v2076_8(void) = NoOp : +# 2076| v2076_9(void) = ReturnIndirection[#this] : &:r2076_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2062| v2062_10(void) = ReturnVoid : -# 2062| v2062_11(void) = AliasedUse : ~m? -# 2062| v2062_12(void) = ExitFunction : - -# 2063| void TernaryNonPodObj::~TernaryNonPodObj() -# 2063| Block 0 -# 2063| v2063_1(void) = EnterFunction : -# 2063| mu2063_2(unknown) = AliasedDefinition : -# 2063| mu2063_3(unknown) = InitializeNonLocal : -# 2063| r2063_4(glval<unknown>) = VariableAddress[#this] : -# 2063| mu2063_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2063_4 -# 2063| r2063_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2063_4, ~m? -# 2063| mu2063_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2063_6 -# 2063| v2063_8(void) = NoOp : -# 2063| v2063_9(void) = ReturnIndirection[#this] : &:r2063_6, ~m? -# 2063| v2063_10(void) = ReturnVoid : -# 2063| v2063_11(void) = AliasedUse : ~m? -# 2063| v2063_12(void) = ExitFunction : - -# 2066| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2066| Block 0 -# 2066| v2066_1(void) = EnterFunction : -# 2066| mu2066_2(unknown) = AliasedDefinition : -# 2066| mu2066_3(unknown) = InitializeNonLocal : -# 2066| r2066_4(glval<bool>) = VariableAddress[a] : -# 2066| mu2066_5(bool) = InitializeParameter[a] : &:r2066_4 -# 2066| r2066_6(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2066| mu2066_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2066_6 -# 2066| r2066_8(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2066| mu2066_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2066_8 -# 2066| r2066_10(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2066| mu2066_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2066_10 -# 2067| r2067_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2067| r2067_2(glval<unknown>) = FunctionAddress[operator=] : -# 2067| r2067_3(glval<bool>) = VariableAddress[a] : -# 2067| r2067_4(bool) = Load[a] : &:r2067_3, ~m? -# 2067| v2067_5(void) = ConditionalBranch : r2067_4 +# 2076| v2076_10(void) = ReturnVoid : +# 2076| v2076_11(void) = AliasedUse : ~m? +# 2076| v2076_12(void) = ExitFunction : + +# 2077| void TernaryNonPodObj::~TernaryNonPodObj() +# 2077| Block 0 +# 2077| v2077_1(void) = EnterFunction : +# 2077| mu2077_2(unknown) = AliasedDefinition : +# 2077| mu2077_3(unknown) = InitializeNonLocal : +# 2077| r2077_4(glval<unknown>) = VariableAddress[#this] : +# 2077| mu2077_5(glval<TernaryNonPodObj>) = InitializeParameter[#this] : &:r2077_4 +# 2077| r2077_6(glval<TernaryNonPodObj>) = Load[#this] : &:r2077_4, ~m? +# 2077| mu2077_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2077_6 +# 2077| v2077_8(void) = NoOp : +# 2077| v2077_9(void) = ReturnIndirection[#this] : &:r2077_6, ~m? +# 2077| v2077_10(void) = ReturnVoid : +# 2077| v2077_11(void) = AliasedUse : ~m? +# 2077| v2077_12(void) = ExitFunction : + +# 2080| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2080| Block 0 +# 2080| v2080_1(void) = EnterFunction : +# 2080| mu2080_2(unknown) = AliasedDefinition : +# 2080| mu2080_3(unknown) = InitializeNonLocal : +# 2080| r2080_4(glval<bool>) = VariableAddress[a] : +# 2080| mu2080_5(bool) = InitializeParameter[a] : &:r2080_4 +# 2080| r2080_6(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2080| mu2080_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2080_6 +# 2080| r2080_8(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2080| mu2080_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2080_8 +# 2080| r2080_10(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2080| mu2080_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2080_10 +# 2081| r2081_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2081| r2081_2(glval<unknown>) = FunctionAddress[operator=] : +# 2081| r2081_3(glval<bool>) = VariableAddress[a] : +# 2081| r2081_4(bool) = Load[a] : &:r2081_3, ~m? +# 2081| v2081_5(void) = ConditionalBranch : r2081_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2067| Block 1 -# 2067| r2067_6(glval<unknown>) = VariableAddress[#temp2067:9] : -# 2067| r2067_7(glval<TernaryNonPodObj>) = Load[#temp2067:9] : &:r2067_6, ~m? -# 2067| r2067_8(glval<TernaryNonPodObj>) = Convert : r2067_7 -# 2067| r2067_9(TernaryNonPodObj &) = CopyValue : r2067_8 -# 2067| r2067_10(TernaryNonPodObj &) = Call[operator=] : func:r2067_2, this:r2067_1, 0:r2067_9 -# 2067| mu2067_11(unknown) = ^CallSideEffect : ~m? -# 2067| v2067_12(void) = ^IndirectReadSideEffect[-1] : &:r2067_1, ~m? -# 2067| v2067_13(void) = ^BufferReadSideEffect[0] : &:r2067_9, ~m? -# 2067| mu2067_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2067_1 -# 2067| r2067_15(glval<TernaryNonPodObj>) = CopyValue : r2067_10 -# 2068| r2068_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2068| r2068_2(glval<unknown>) = FunctionAddress[operator=] : -# 2068| r2068_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| r2068_4(glval<bool>) = VariableAddress[a] : -# 2068| r2068_5(bool) = Load[a] : &:r2068_4, ~m? -# 2068| v2068_6(void) = ConditionalBranch : r2068_5 +# 2081| Block 1 +# 2081| r2081_6(glval<unknown>) = VariableAddress[#temp2081:9] : +# 2081| r2081_7(glval<TernaryNonPodObj>) = Load[#temp2081:9] : &:r2081_6, ~m? +# 2081| r2081_8(glval<TernaryNonPodObj>) = Convert : r2081_7 +# 2081| r2081_9(TernaryNonPodObj &) = CopyValue : r2081_8 +# 2081| r2081_10(TernaryNonPodObj &) = Call[operator=] : func:r2081_2, this:r2081_1, 0:r2081_9 +# 2081| mu2081_11(unknown) = ^CallSideEffect : ~m? +# 2081| v2081_12(void) = ^IndirectReadSideEffect[-1] : &:r2081_1, ~m? +# 2081| v2081_13(void) = ^BufferReadSideEffect[0] : &:r2081_9, ~m? +# 2081| mu2081_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2081_1 +# 2081| r2081_15(glval<TernaryNonPodObj>) = CopyValue : r2081_10 +# 2082| r2082_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2082| r2082_2(glval<unknown>) = FunctionAddress[operator=] : +# 2082| r2082_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| r2082_4(glval<bool>) = VariableAddress[a] : +# 2082| r2082_5(bool) = Load[a] : &:r2082_4, ~m? +# 2082| v2082_6(void) = ConditionalBranch : r2082_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2067| Block 2 -# 2067| r2067_16(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2067| r2067_17(glval<unknown>) = VariableAddress[#temp2067:9] : -# 2067| mu2067_18(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_17, r2067_16 +# 2081| Block 2 +# 2081| r2081_16(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2081| r2081_17(glval<unknown>) = VariableAddress[#temp2081:9] : +# 2081| mu2081_18(glval<TernaryNonPodObj>) = Store[#temp2081:9] : &:r2081_17, r2081_16 #-----| Goto -> Block 1 -# 2067| Block 3 -# 2067| r2067_19(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2067| r2067_20(glval<unknown>) = VariableAddress[#temp2067:9] : -# 2067| mu2067_21(glval<TernaryNonPodObj>) = Store[#temp2067:9] : &:r2067_20, r2067_19 +# 2081| Block 3 +# 2081| r2081_19(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2081| r2081_20(glval<unknown>) = VariableAddress[#temp2081:9] : +# 2081| mu2081_21(glval<TernaryNonPodObj>) = Store[#temp2081:9] : &:r2081_20, r2081_19 #-----| Goto -> Block 1 -# 2068| Block 4 -# 2068| r2068_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| r2068_8(TernaryNonPodObj) = Load[#temp2068:9] : &:r2068_7, ~m? -# 2068| mu2068_9(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_3, r2068_8 -# 2068| r2068_10(glval<TernaryNonPodObj>) = Convert : r2068_3 -# 2068| r2068_11(TernaryNonPodObj &) = CopyValue : r2068_10 -# 2068| r2068_12(TernaryNonPodObj &) = Call[operator=] : func:r2068_2, this:r2068_1, 0:r2068_11 -# 2068| mu2068_13(unknown) = ^CallSideEffect : ~m? -# 2068| v2068_14(void) = ^IndirectReadSideEffect[-1] : &:r2068_1, ~m? -# 2068| v2068_15(void) = ^BufferReadSideEffect[0] : &:r2068_11, ~m? -# 2068| mu2068_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_1 -# 2068| r2068_17(glval<TernaryNonPodObj>) = CopyValue : r2068_12 -# 2069| r2069_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2069| r2069_2(glval<unknown>) = FunctionAddress[operator=] : -# 2069| r2069_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| r2069_4(glval<bool>) = VariableAddress[a] : -# 2069| r2069_5(bool) = Load[a] : &:r2069_4, ~m? -# 2069| v2069_6(void) = ConditionalBranch : r2069_5 +# 2082| Block 4 +# 2082| r2082_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| r2082_8(TernaryNonPodObj) = Load[#temp2082:9] : &:r2082_7, ~m? +# 2082| mu2082_9(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_3, r2082_8 +# 2082| r2082_10(glval<TernaryNonPodObj>) = Convert : r2082_3 +# 2082| r2082_11(TernaryNonPodObj &) = CopyValue : r2082_10 +# 2082| r2082_12(TernaryNonPodObj &) = Call[operator=] : func:r2082_2, this:r2082_1, 0:r2082_11 +# 2082| mu2082_13(unknown) = ^CallSideEffect : ~m? +# 2082| v2082_14(void) = ^IndirectReadSideEffect[-1] : &:r2082_1, ~m? +# 2082| v2082_15(void) = ^BufferReadSideEffect[0] : &:r2082_11, ~m? +# 2082| mu2082_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_1 +# 2082| r2082_17(glval<TernaryNonPodObj>) = CopyValue : r2082_12 +# 2083| r2083_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2083| r2083_2(glval<unknown>) = FunctionAddress[operator=] : +# 2083| r2083_3(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| r2083_4(glval<bool>) = VariableAddress[a] : +# 2083| r2083_5(bool) = Load[a] : &:r2083_4, ~m? +# 2083| v2083_6(void) = ConditionalBranch : r2083_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2068| Block 5 -# 2068| r2068_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:13] : -# 2068| mu2068_19(TernaryNonPodObj) = Uninitialized[#temp2068:13] : &:r2068_18 -# 2068| r2068_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2068| r2068_21(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2068| r2068_22(glval<TernaryNonPodObj>) = Convert : r2068_21 -# 2068| r2068_23(TernaryNonPodObj &) = CopyValue : r2068_22 -# 2068| v2068_24(void) = Call[TernaryNonPodObj] : func:r2068_20, this:r2068_18, 0:r2068_23 -# 2068| mu2068_25(unknown) = ^CallSideEffect : ~m? -# 2068| v2068_26(void) = ^BufferReadSideEffect[0] : &:r2068_23, ~m? -# 2068| mu2068_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_18 -# 2068| r2068_28(TernaryNonPodObj) = Load[#temp2068:13] : &:r2068_18, ~m? -# 2068| r2068_29(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| mu2068_30(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_29, r2068_28 +# 2082| Block 5 +# 2082| r2082_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:13] : +# 2082| mu2082_19(TernaryNonPodObj) = Uninitialized[#temp2082:13] : &:r2082_18 +# 2082| r2082_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2082| r2082_21(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2082| r2082_22(glval<TernaryNonPodObj>) = Convert : r2082_21 +# 2082| r2082_23(TernaryNonPodObj &) = CopyValue : r2082_22 +# 2082| v2082_24(void) = Call[TernaryNonPodObj] : func:r2082_20, this:r2082_18, 0:r2082_23 +# 2082| mu2082_25(unknown) = ^CallSideEffect : ~m? +# 2082| v2082_26(void) = ^BufferReadSideEffect[0] : &:r2082_23, ~m? +# 2082| mu2082_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_18 +# 2082| r2082_28(TernaryNonPodObj) = Load[#temp2082:13] : &:r2082_18, ~m? +# 2082| r2082_29(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| mu2082_30(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_29, r2082_28 #-----| Goto -> Block 4 -# 2068| Block 6 -# 2068| r2068_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:17] : -# 2068| mu2068_32(TernaryNonPodObj) = Uninitialized[#temp2068:17] : &:r2068_31 -# 2068| r2068_33(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2068| v2068_34(void) = Call[TernaryNonPodObj] : func:r2068_33, this:r2068_31 -# 2068| mu2068_35(unknown) = ^CallSideEffect : ~m? -# 2068| mu2068_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2068_31 -# 2068| r2068_37(TernaryNonPodObj) = Load[#temp2068:17] : &:r2068_31, ~m? -# 2068| r2068_38(glval<TernaryNonPodObj>) = VariableAddress[#temp2068:9] : -# 2068| mu2068_39(TernaryNonPodObj) = Store[#temp2068:9] : &:r2068_38, r2068_37 +# 2082| Block 6 +# 2082| r2082_31(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:17] : +# 2082| mu2082_32(TernaryNonPodObj) = Uninitialized[#temp2082:17] : &:r2082_31 +# 2082| r2082_33(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2082| v2082_34(void) = Call[TernaryNonPodObj] : func:r2082_33, this:r2082_31 +# 2082| mu2082_35(unknown) = ^CallSideEffect : ~m? +# 2082| mu2082_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_31 +# 2082| r2082_37(TernaryNonPodObj) = Load[#temp2082:17] : &:r2082_31, ~m? +# 2082| r2082_38(glval<TernaryNonPodObj>) = VariableAddress[#temp2082:9] : +# 2082| mu2082_39(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_38, r2082_37 #-----| Goto -> Block 4 -# 2069| Block 7 -# 2069| r2069_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| r2069_8(TernaryNonPodObj) = Load[#temp2069:9] : &:r2069_7, ~m? -# 2069| mu2069_9(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_3, r2069_8 -# 2069| r2069_10(glval<TernaryNonPodObj>) = Convert : r2069_3 -# 2069| r2069_11(TernaryNonPodObj &) = CopyValue : r2069_10 -# 2069| r2069_12(TernaryNonPodObj &) = Call[operator=] : func:r2069_2, this:r2069_1, 0:r2069_11 -# 2069| mu2069_13(unknown) = ^CallSideEffect : ~m? -# 2069| v2069_14(void) = ^IndirectReadSideEffect[-1] : &:r2069_1, ~m? -# 2069| v2069_15(void) = ^BufferReadSideEffect[0] : &:r2069_11, ~m? -# 2069| mu2069_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_1 -# 2069| r2069_17(glval<TernaryNonPodObj>) = CopyValue : r2069_12 -# 2070| r2070_1(glval<TernaryNonPodObj>) = VariableAddress[z] : -# 2070| r2070_2(glval<unknown>) = FunctionAddress[operator=] : -# 2070| r2070_3(glval<bool>) = VariableAddress[a] : -# 2070| r2070_4(bool) = Load[a] : &:r2070_3, ~m? -# 2070| v2070_5(void) = ConditionalBranch : r2070_4 +# 2083| Block 7 +# 2083| r2083_7(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| r2083_8(TernaryNonPodObj) = Load[#temp2083:9] : &:r2083_7, ~m? +# 2083| mu2083_9(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_3, r2083_8 +# 2083| r2083_10(glval<TernaryNonPodObj>) = Convert : r2083_3 +# 2083| r2083_11(TernaryNonPodObj &) = CopyValue : r2083_10 +# 2083| r2083_12(TernaryNonPodObj &) = Call[operator=] : func:r2083_2, this:r2083_1, 0:r2083_11 +# 2083| mu2083_13(unknown) = ^CallSideEffect : ~m? +# 2083| v2083_14(void) = ^IndirectReadSideEffect[-1] : &:r2083_1, ~m? +# 2083| v2083_15(void) = ^BufferReadSideEffect[0] : &:r2083_11, ~m? +# 2083| mu2083_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 +# 2083| r2083_17(glval<TernaryNonPodObj>) = CopyValue : r2083_12 +# 2084| r2084_1(glval<TernaryNonPodObj>) = VariableAddress[z] : +# 2084| r2084_2(glval<unknown>) = FunctionAddress[operator=] : +# 2084| r2084_3(glval<bool>) = VariableAddress[a] : +# 2084| r2084_4(bool) = Load[a] : &:r2084_3, ~m? +# 2084| v2084_5(void) = ConditionalBranch : r2084_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2069| Block 8 -# 2069| r2069_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:13] : -# 2069| mu2069_19(TernaryNonPodObj) = Uninitialized[#temp2069:13] : &:r2069_18 -# 2069| r2069_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2069| v2069_21(void) = Call[TernaryNonPodObj] : func:r2069_20, this:r2069_18 -# 2069| mu2069_22(unknown) = ^CallSideEffect : ~m? -# 2069| mu2069_23(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_18 -# 2069| r2069_24(TernaryNonPodObj) = Load[#temp2069:13] : &:r2069_18, ~m? -# 2069| r2069_25(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| mu2069_26(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_25, r2069_24 +# 2083| Block 8 +# 2083| r2083_18(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:13] : +# 2083| mu2083_19(TernaryNonPodObj) = Uninitialized[#temp2083:13] : &:r2083_18 +# 2083| r2083_20(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2083| v2083_21(void) = Call[TernaryNonPodObj] : func:r2083_20, this:r2083_18 +# 2083| mu2083_22(unknown) = ^CallSideEffect : ~m? +# 2083| mu2083_23(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_18 +# 2083| r2083_24(TernaryNonPodObj) = Load[#temp2083:13] : &:r2083_18, ~m? +# 2083| r2083_25(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| mu2083_26(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_25, r2083_24 #-----| Goto -> Block 7 -# 2069| Block 9 -# 2069| r2069_27(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:34] : -# 2069| mu2069_28(TernaryNonPodObj) = Uninitialized[#temp2069:34] : &:r2069_27 -# 2069| r2069_29(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2069| v2069_30(void) = Call[TernaryNonPodObj] : func:r2069_29, this:r2069_27 -# 2069| mu2069_31(unknown) = ^CallSideEffect : ~m? -# 2069| mu2069_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2069_27 -# 2069| r2069_33(TernaryNonPodObj) = Load[#temp2069:34] : &:r2069_27, ~m? -# 2069| r2069_34(glval<TernaryNonPodObj>) = VariableAddress[#temp2069:9] : -# 2069| mu2069_35(TernaryNonPodObj) = Store[#temp2069:9] : &:r2069_34, r2069_33 +# 2083| Block 9 +# 2083| r2083_27(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:34] : +# 2083| mu2083_28(TernaryNonPodObj) = Uninitialized[#temp2083:34] : &:r2083_27 +# 2083| r2083_29(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2083| v2083_30(void) = Call[TernaryNonPodObj] : func:r2083_29, this:r2083_27 +# 2083| mu2083_31(unknown) = ^CallSideEffect : ~m? +# 2083| mu2083_32(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_27 +# 2083| r2083_33(TernaryNonPodObj) = Load[#temp2083:34] : &:r2083_27, ~m? +# 2083| r2083_34(glval<TernaryNonPodObj>) = VariableAddress[#temp2083:9] : +# 2083| mu2083_35(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_34, r2083_33 #-----| Goto -> Block 7 -# 2070| Block 10 -# 2070| r2070_6(glval<unknown>) = VariableAddress[#temp2070:10] : -# 2070| r2070_7(glval<TernaryNonPodObj>) = Load[#temp2070:10] : &:r2070_6, ~m? -# 2070| r2070_8(glval<TernaryNonPodObj>) = Convert : r2070_7 -# 2070| r2070_9(TernaryNonPodObj &) = CopyValue : r2070_8 -# 2070| r2070_10(TernaryNonPodObj &) = Call[operator=] : func:r2070_2, this:r2070_1, 0:r2070_9 -# 2070| mu2070_11(unknown) = ^CallSideEffect : ~m? -# 2070| v2070_12(void) = ^IndirectReadSideEffect[-1] : &:r2070_1, ~m? -# 2070| v2070_13(void) = ^BufferReadSideEffect[0] : &:r2070_9, ~m? -# 2070| mu2070_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_1 -# 2070| r2070_15(glval<TernaryNonPodObj>) = CopyValue : r2070_10 -# 2070| r2070_16(glval<unknown>) = FunctionAddress[operator=] : -# 2070| r2070_17(glval<TernaryNonPodObj>) = VariableAddress[#temp2070:23] : -# 2070| mu2070_18(TernaryNonPodObj) = Uninitialized[#temp2070:23] : &:r2070_17 -# 2070| r2070_19(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : -# 2070| v2070_20(void) = Call[TernaryNonPodObj] : func:r2070_19, this:r2070_17 -# 2070| mu2070_21(unknown) = ^CallSideEffect : ~m? -# 2070| mu2070_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_17 -# 2070| r2070_23(glval<TernaryNonPodObj>) = Convert : r2070_17 -# 2070| r2070_24(TernaryNonPodObj &) = CopyValue : r2070_23 -# 2070| r2070_25(TernaryNonPodObj &) = Call[operator=] : func:r2070_16, this:r2070_15, 0:r2070_24 -# 2070| mu2070_26(unknown) = ^CallSideEffect : ~m? -# 2070| v2070_27(void) = ^IndirectReadSideEffect[-1] : &:r2070_15, ~m? -# 2070| v2070_28(void) = ^BufferReadSideEffect[0] : &:r2070_24, ~m? -# 2070| mu2070_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2070_15 -# 2070| r2070_30(glval<TernaryNonPodObj>) = CopyValue : r2070_25 -# 2071| v2071_1(void) = NoOp : -# 2066| v2066_12(void) = ReturnVoid : -# 2066| v2066_13(void) = AliasedUse : ~m? -# 2066| v2066_14(void) = ExitFunction : - -# 2070| Block 11 -# 2070| r2070_31(glval<TernaryNonPodObj>) = VariableAddress[x] : -# 2070| r2070_32(glval<unknown>) = VariableAddress[#temp2070:10] : -# 2070| mu2070_33(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_32, r2070_31 +# 2084| Block 10 +# 2084| r2084_6(glval<unknown>) = VariableAddress[#temp2084:10] : +# 2084| r2084_7(glval<TernaryNonPodObj>) = Load[#temp2084:10] : &:r2084_6, ~m? +# 2084| r2084_8(glval<TernaryNonPodObj>) = Convert : r2084_7 +# 2084| r2084_9(TernaryNonPodObj &) = CopyValue : r2084_8 +# 2084| r2084_10(TernaryNonPodObj &) = Call[operator=] : func:r2084_2, this:r2084_1, 0:r2084_9 +# 2084| mu2084_11(unknown) = ^CallSideEffect : ~m? +# 2084| v2084_12(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, ~m? +# 2084| v2084_13(void) = ^BufferReadSideEffect[0] : &:r2084_9, ~m? +# 2084| mu2084_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 +# 2084| r2084_15(glval<TernaryNonPodObj>) = CopyValue : r2084_10 +# 2084| r2084_16(glval<unknown>) = FunctionAddress[operator=] : +# 2084| r2084_17(glval<TernaryNonPodObj>) = VariableAddress[#temp2084:23] : +# 2084| mu2084_18(TernaryNonPodObj) = Uninitialized[#temp2084:23] : &:r2084_17 +# 2084| r2084_19(glval<unknown>) = FunctionAddress[TernaryNonPodObj] : +# 2084| v2084_20(void) = Call[TernaryNonPodObj] : func:r2084_19, this:r2084_17 +# 2084| mu2084_21(unknown) = ^CallSideEffect : ~m? +# 2084| mu2084_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_17 +# 2084| r2084_23(glval<TernaryNonPodObj>) = Convert : r2084_17 +# 2084| r2084_24(TernaryNonPodObj &) = CopyValue : r2084_23 +# 2084| r2084_25(TernaryNonPodObj &) = Call[operator=] : func:r2084_16, this:r2084_15, 0:r2084_24 +# 2084| mu2084_26(unknown) = ^CallSideEffect : ~m? +# 2084| v2084_27(void) = ^IndirectReadSideEffect[-1] : &:r2084_15, ~m? +# 2084| v2084_28(void) = ^BufferReadSideEffect[0] : &:r2084_24, ~m? +# 2084| mu2084_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_15 +# 2084| r2084_30(glval<TernaryNonPodObj>) = CopyValue : r2084_25 +# 2085| v2085_1(void) = NoOp : +# 2080| v2080_12(void) = ReturnVoid : +# 2080| v2080_13(void) = AliasedUse : ~m? +# 2080| v2080_14(void) = ExitFunction : + +# 2084| Block 11 +# 2084| r2084_31(glval<TernaryNonPodObj>) = VariableAddress[x] : +# 2084| r2084_32(glval<unknown>) = VariableAddress[#temp2084:10] : +# 2084| mu2084_33(glval<TernaryNonPodObj>) = Store[#temp2084:10] : &:r2084_32, r2084_31 #-----| Goto -> Block 10 -# 2070| Block 12 -# 2070| r2070_34(glval<TernaryNonPodObj>) = VariableAddress[y] : -# 2070| r2070_35(glval<unknown>) = VariableAddress[#temp2070:10] : -# 2070| mu2070_36(glval<TernaryNonPodObj>) = Store[#temp2070:10] : &:r2070_35, r2070_34 +# 2084| Block 12 +# 2084| r2084_34(glval<TernaryNonPodObj>) = VariableAddress[y] : +# 2084| r2084_35(glval<unknown>) = VariableAddress[#temp2084:10] : +# 2084| mu2084_36(glval<TernaryNonPodObj>) = Store[#temp2084:10] : &:r2084_35, r2084_34 #-----| Goto -> Block 10 -# 2075| unsigned int CommaTest(unsigned int) -# 2075| Block 0 -# 2075| v2075_1(void) = EnterFunction : -# 2075| mu2075_2(unknown) = AliasedDefinition : -# 2075| mu2075_3(unknown) = InitializeNonLocal : -# 2075| r2075_4(glval<unsigned int>) = VariableAddress[x] : -# 2075| mu2075_5(unsigned int) = InitializeParameter[x] : &:r2075_4 -# 2076| r2076_1(glval<unsigned int>) = VariableAddress[y] : -# 2076| mu2076_2(unsigned int) = Uninitialized[y] : &:r2076_1 -# 2077| r2077_1(glval<unsigned int>) = VariableAddress[x] : -# 2077| r2077_2(unsigned int) = Load[x] : &:r2077_1, ~m? -# 2077| r2077_3(unsigned int) = Constant[100] : -# 2077| r2077_4(bool) = CompareLT : r2077_2, r2077_3 -# 2077| v2077_5(void) = ConditionalBranch : r2077_4 +# 2089| unsigned int CommaTest(unsigned int) +# 2089| Block 0 +# 2089| v2089_1(void) = EnterFunction : +# 2089| mu2089_2(unknown) = AliasedDefinition : +# 2089| mu2089_3(unknown) = InitializeNonLocal : +# 2089| r2089_4(glval<unsigned int>) = VariableAddress[x] : +# 2089| mu2089_5(unsigned int) = InitializeParameter[x] : &:r2089_4 +# 2090| r2090_1(glval<unsigned int>) = VariableAddress[y] : +# 2090| mu2090_2(unsigned int) = Uninitialized[y] : &:r2090_1 +# 2091| r2091_1(glval<unsigned int>) = VariableAddress[x] : +# 2091| r2091_2(unsigned int) = Load[x] : &:r2091_1, ~m? +# 2091| r2091_3(unsigned int) = Constant[100] : +# 2091| r2091_4(bool) = CompareLT : r2091_2, r2091_3 +# 2091| v2091_5(void) = ConditionalBranch : r2091_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2077| Block 1 -# 2077| r2077_6(glval<unsigned int>) = VariableAddress[#temp2077:7] : -# 2077| r2077_7(unsigned int) = Load[#temp2077:7] : &:r2077_6, ~m? -# 2077| r2077_8(glval<unsigned int>) = VariableAddress[y] : -# 2077| mu2077_9(unsigned int) = Store[y] : &:r2077_8, r2077_7 -# 2080| r2080_1(glval<unsigned int>) = VariableAddress[#return] : -# 2080| mu2080_2(unsigned int) = Uninitialized[#return] : &:r2080_1 -# 2075| r2075_6(glval<unsigned int>) = VariableAddress[#return] : -# 2075| v2075_7(void) = ReturnValue : &:r2075_6, ~m? -# 2075| v2075_8(void) = AliasedUse : ~m? -# 2075| v2075_9(void) = ExitFunction : - -# 2078| Block 2 -# 2078| r2078_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2078| r2078_2(glval<unsigned int>) = VariableAddress[x] : -# 2078| r2078_3(unsigned int) = Load[x] : &:r2078_2, ~m? -# 2078| v2078_4(void) = Call[CommaTestHelper] : func:r2078_1, 0:r2078_3 -# 2078| mu2078_5(unknown) = ^CallSideEffect : ~m? -# 2078| r2078_6(glval<unsigned int>) = VariableAddress[x] : -# 2078| r2078_7(unsigned int) = Load[x] : &:r2078_6, ~m? -# 2078| r2078_8(unsigned int) = CopyValue : r2078_7 -# 2077| r2077_10(glval<unsigned int>) = VariableAddress[#temp2077:7] : -# 2077| mu2077_11(unsigned int) = Store[#temp2077:7] : &:r2077_10, r2078_8 +# 2091| Block 1 +# 2091| r2091_6(glval<unsigned int>) = VariableAddress[#temp2091:7] : +# 2091| r2091_7(unsigned int) = Load[#temp2091:7] : &:r2091_6, ~m? +# 2091| r2091_8(glval<unsigned int>) = VariableAddress[y] : +# 2091| mu2091_9(unsigned int) = Store[y] : &:r2091_8, r2091_7 +# 2094| r2094_1(glval<unsigned int>) = VariableAddress[#return] : +# 2094| mu2094_2(unsigned int) = Uninitialized[#return] : &:r2094_1 +# 2089| r2089_6(glval<unsigned int>) = VariableAddress[#return] : +# 2089| v2089_7(void) = ReturnValue : &:r2089_6, ~m? +# 2089| v2089_8(void) = AliasedUse : ~m? +# 2089| v2089_9(void) = ExitFunction : + +# 2092| Block 2 +# 2092| r2092_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2092| r2092_2(glval<unsigned int>) = VariableAddress[x] : +# 2092| r2092_3(unsigned int) = Load[x] : &:r2092_2, ~m? +# 2092| v2092_4(void) = Call[CommaTestHelper] : func:r2092_1, 0:r2092_3 +# 2092| mu2092_5(unknown) = ^CallSideEffect : ~m? +# 2092| r2092_6(glval<unsigned int>) = VariableAddress[x] : +# 2092| r2092_7(unsigned int) = Load[x] : &:r2092_6, ~m? +# 2092| r2092_8(unsigned int) = CopyValue : r2092_7 +# 2091| r2091_10(glval<unsigned int>) = VariableAddress[#temp2091:7] : +# 2091| mu2091_11(unsigned int) = Store[#temp2091:7] : &:r2091_10, r2092_8 #-----| Goto -> Block 1 -# 2079| Block 3 -# 2079| r2079_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : -# 2079| r2079_2(glval<unsigned int>) = VariableAddress[x] : -# 2079| r2079_3(unsigned int) = Load[x] : &:r2079_2, ~m? -# 2079| v2079_4(void) = Call[CommaTestHelper] : func:r2079_1, 0:r2079_3 -# 2079| mu2079_5(unknown) = ^CallSideEffect : ~m? -# 2079| r2079_6(int) = Constant[10] : -# 2079| r2079_7(int) = CopyValue : r2079_6 -# 2079| r2079_8(unsigned int) = Convert : r2079_7 -# 2077| r2077_12(glval<unsigned int>) = VariableAddress[#temp2077:7] : -# 2077| mu2077_13(unsigned int) = Store[#temp2077:7] : &:r2077_12, r2079_8 +# 2093| Block 3 +# 2093| r2093_1(glval<unknown>) = FunctionAddress[CommaTestHelper] : +# 2093| r2093_2(glval<unsigned int>) = VariableAddress[x] : +# 2093| r2093_3(unsigned int) = Load[x] : &:r2093_2, ~m? +# 2093| v2093_4(void) = Call[CommaTestHelper] : func:r2093_1, 0:r2093_3 +# 2093| mu2093_5(unknown) = ^CallSideEffect : ~m? +# 2093| r2093_6(int) = Constant[10] : +# 2093| r2093_7(int) = CopyValue : r2093_6 +# 2093| r2093_8(unsigned int) = Convert : r2093_7 +# 2091| r2091_12(glval<unsigned int>) = VariableAddress[#temp2091:7] : +# 2091| mu2091_13(unsigned int) = Store[#temp2091:7] : &:r2091_12, r2093_8 #-----| Goto -> Block 1 -# 2082| void NewDeleteMem() -# 2082| Block 0 -# 2082| v2082_1(void) = EnterFunction : -# 2082| mu2082_2(unknown) = AliasedDefinition : -# 2082| mu2082_3(unknown) = InitializeNonLocal : -# 2083| r2083_1(glval<int *>) = VariableAddress[x] : -# 2083| r2083_2(glval<unknown>) = FunctionAddress[operator new] : -# 2083| r2083_3(unsigned long) = Constant[4] : -# 2083| r2083_4(void *) = Call[operator new] : func:r2083_2, 0:r2083_3 -# 2083| mu2083_5(unknown) = ^CallSideEffect : ~m? -# 2083| mu2083_6(unknown) = ^InitializeDynamicAllocation : &:r2083_4 -# 2083| r2083_7(int *) = Convert : r2083_4 -# 2083| mu2083_8(int *) = Store[x] : &:r2083_1, r2083_7 -# 2084| r2084_1(int) = Constant[6] : -# 2084| r2084_2(glval<int *>) = VariableAddress[x] : -# 2084| r2084_3(int *) = Load[x] : &:r2084_2, ~m? -# 2084| r2084_4(glval<int>) = CopyValue : r2084_3 -# 2084| mu2084_5(int) = Store[?] : &:r2084_4, r2084_1 -# 2085| r2085_1(glval<unknown>) = FunctionAddress[operator delete] : -# 2085| r2085_2(glval<int *>) = VariableAddress[x] : -# 2085| r2085_3(int *) = Load[x] : &:r2085_2, ~m? -# 2085| v2085_4(void) = Call[operator delete] : func:r2085_1, 0:r2085_3 -# 2085| mu2085_5(unknown) = ^CallSideEffect : ~m? -# 2086| v2086_1(void) = NoOp : -# 2082| v2082_4(void) = ReturnVoid : -# 2082| v2082_5(void) = AliasedUse : ~m? -# 2082| v2082_6(void) = ExitFunction : - -# 2088| void Base2::Base2() -# 2088| Block 0 -# 2088| v2088_1(void) = EnterFunction : -# 2088| mu2088_2(unknown) = AliasedDefinition : -# 2088| mu2088_3(unknown) = InitializeNonLocal : -# 2088| r2088_4(glval<unknown>) = VariableAddress[#this] : -# 2088| mu2088_5(glval<Base2>) = InitializeParameter[#this] : &:r2088_4 -# 2088| r2088_6(glval<Base2>) = Load[#this] : &:r2088_4, ~m? -# 2088| mu2088_7(Base2) = InitializeIndirection[#this] : &:r2088_6 -# 2088| v2088_8(void) = NoOp : -# 2088| v2088_9(void) = ReturnIndirection[#this] : &:r2088_6, ~m? -# 2088| v2088_10(void) = ReturnVoid : -# 2088| v2088_11(void) = AliasedUse : ~m? -# 2088| v2088_12(void) = ExitFunction : - -# 2090| void Base2::operator delete(void*) -# 2090| Block 0 -# 2090| v2090_1(void) = EnterFunction : -# 2090| mu2090_2(unknown) = AliasedDefinition : -# 2090| mu2090_3(unknown) = InitializeNonLocal : -# 2090| r2090_4(glval<void *>) = VariableAddress[p] : -# 2090| mu2090_5(void *) = InitializeParameter[p] : &:r2090_4 -# 2090| r2090_6(void *) = Load[p] : &:r2090_4, ~m? -# 2090| mu2090_7(unknown) = InitializeIndirection[p] : &:r2090_6 -# 2091| v2091_1(void) = NoOp : -# 2090| v2090_8(void) = ReturnIndirection[p] : &:r2090_6, ~m? -# 2090| v2090_9(void) = ReturnVoid : -# 2090| v2090_10(void) = AliasedUse : ~m? -# 2090| v2090_11(void) = ExitFunction : - -# 2092| void Base2::~Base2() -# 2092| Block 0 -# 2092| v2092_1(void) = EnterFunction : -# 2092| mu2092_2(unknown) = AliasedDefinition : -# 2092| mu2092_3(unknown) = InitializeNonLocal : -# 2092| r2092_4(glval<unknown>) = VariableAddress[#this] : -# 2092| mu2092_5(glval<Base2>) = InitializeParameter[#this] : &:r2092_4 -# 2092| r2092_6(glval<Base2>) = Load[#this] : &:r2092_4, ~m? -# 2092| mu2092_7(Base2) = InitializeIndirection[#this] : &:r2092_6 -# 2092| v2092_8(void) = NoOp : -# 2092| v2092_9(void) = ReturnIndirection[#this] : &:r2092_6, ~m? -# 2092| v2092_10(void) = ReturnVoid : -# 2092| v2092_11(void) = AliasedUse : ~m? -# 2092| v2092_12(void) = ExitFunction : - -# 2095| void Derived2::Derived2() -# 2095| Block 0 -# 2095| v2095_1(void) = EnterFunction : -# 2095| mu2095_2(unknown) = AliasedDefinition : -# 2095| mu2095_3(unknown) = InitializeNonLocal : -# 2095| r2095_4(glval<unknown>) = VariableAddress[#this] : -# 2095| mu2095_5(glval<Derived2>) = InitializeParameter[#this] : &:r2095_4 -# 2095| r2095_6(glval<Derived2>) = Load[#this] : &:r2095_4, ~m? -# 2095| mu2095_7(Derived2) = InitializeIndirection[#this] : &:r2095_6 -# 2095| r2095_8(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2095_5 -# 2095| r2095_9(glval<unknown>) = FunctionAddress[Base2] : -# 2095| v2095_10(void) = Call[Base2] : func:r2095_9, this:r2095_8 -# 2095| mu2095_11(unknown) = ^CallSideEffect : ~m? -# 2095| mu2095_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2095_8 -# 2095| v2095_13(void) = NoOp : -# 2095| v2095_14(void) = ReturnIndirection[#this] : &:r2095_6, ~m? -# 2095| v2095_15(void) = ReturnVoid : -# 2095| v2095_16(void) = AliasedUse : ~m? -# 2095| v2095_17(void) = ExitFunction : - -# 2098| void Derived2::~Derived2() -# 2098| Block 0 -# 2098| v2098_1(void) = EnterFunction : -# 2098| mu2098_2(unknown) = AliasedDefinition : -# 2098| mu2098_3(unknown) = InitializeNonLocal : -# 2098| r2098_4(glval<unknown>) = VariableAddress[#this] : -# 2098| mu2098_5(glval<Derived2>) = InitializeParameter[#this] : &:r2098_4 -# 2098| r2098_6(glval<Derived2>) = Load[#this] : &:r2098_4, ~m? -# 2098| mu2098_7(Derived2) = InitializeIndirection[#this] : &:r2098_6 -# 2098| v2098_8(void) = NoOp : -# 2098| r2098_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2098_5 -# 2098| r2098_10(glval<unknown>) = FunctionAddress[~Base2] : -# 2098| v2098_11(void) = Call[~Base2] : func:r2098_10, this:r2098_9 -# 2098| mu2098_12(unknown) = ^CallSideEffect : ~m? -# 2098| v2098_13(void) = ReturnIndirection[#this] : &:r2098_6, ~m? -# 2098| v2098_14(void) = ReturnVoid : -# 2098| v2098_15(void) = AliasedUse : ~m? -# 2098| v2098_16(void) = ExitFunction : - -# 2100| void Derived2::operator delete(void*) -# 2100| Block 0 -# 2100| v2100_1(void) = EnterFunction : -# 2100| mu2100_2(unknown) = AliasedDefinition : -# 2100| mu2100_3(unknown) = InitializeNonLocal : -# 2100| r2100_4(glval<void *>) = VariableAddress[p] : -# 2100| mu2100_5(void *) = InitializeParameter[p] : &:r2100_4 -# 2100| r2100_6(void *) = Load[p] : &:r2100_4, ~m? -# 2100| mu2100_7(unknown) = InitializeIndirection[p] : &:r2100_6 -# 2101| v2101_1(void) = NoOp : -# 2100| v2100_8(void) = ReturnIndirection[p] : &:r2100_6, ~m? -# 2100| v2100_9(void) = ReturnVoid : -# 2100| v2100_10(void) = AliasedUse : ~m? -# 2100| v2100_11(void) = ExitFunction : - -# 2105| int virtual_delete() -# 2105| Block 0 -# 2105| v2105_1(void) = EnterFunction : -# 2105| mu2105_2(unknown) = AliasedDefinition : -# 2105| mu2105_3(unknown) = InitializeNonLocal : -# 2107| r2107_1(glval<Base2 *>) = VariableAddress[b1] : -# 2107| r2107_2(glval<unknown>) = FunctionAddress[operator new] : -# 2107| r2107_3(unsigned long) = Constant[8] : -# 2107| r2107_4(void *) = Call[operator new] : func:r2107_2, 0:r2107_3 -# 2107| mu2107_5(unknown) = ^CallSideEffect : ~m? -# 2107| mu2107_6(unknown) = ^InitializeDynamicAllocation : &:r2107_4 -# 2107| r2107_7(Base2 *) = Convert : r2107_4 -# 2107| r2107_8(glval<unknown>) = FunctionAddress[Base2] : -# 2107| v2107_9(void) = Call[Base2] : func:r2107_8, this:r2107_7 -# 2107| mu2107_10(unknown) = ^CallSideEffect : ~m? -# 2107| mu2107_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2107_7 -# 2107| mu2107_12(Base2 *) = Store[b1] : &:r2107_1, r2107_7 -# 2108| r2108_1(glval<Base2 *>) = VariableAddress[b1] : -# 2108| r2108_2(Base2 *) = Load[b1] : &:r2108_1, ~m? -# 2108| r2108_3(glval<unknown>) = FunctionAddress[~Base2] : -# 2108| v2108_4(void) = Call[~Base2] : func:r2108_3 -# 2108| mu2108_5(unknown) = ^CallSideEffect : ~m? -# 2108| v2108_6(void) = ^IndirectReadSideEffect[-1] : &:r2108_2, ~m? -# 2108| mu2108_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2108_2 -# 2108| r2108_8(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2108| r2108_9(Base2 *) = CopyValue : r2108_1 -# 2108| v2108_10(void) = Call[?] : func:r2108_8, 0:r2108_9 -# 2108| mu2108_11(unknown) = ^CallSideEffect : ~m? -# 2110| r2110_1(glval<Base2 *>) = VariableAddress[b2] : -# 2110| r2110_2(glval<unknown>) = FunctionAddress[operator new] : -# 2110| r2110_3(unsigned long) = Constant[16] : -# 2110| r2110_4(void *) = Call[operator new] : func:r2110_2, 0:r2110_3 -# 2110| mu2110_5(unknown) = ^CallSideEffect : ~m? -# 2110| mu2110_6(unknown) = ^InitializeDynamicAllocation : &:r2110_4 -# 2110| r2110_7(Derived2 *) = Convert : r2110_4 -# 2110| r2110_8(glval<unknown>) = FunctionAddress[Derived2] : -# 2110| v2110_9(void) = Call[Derived2] : func:r2110_8, this:r2110_7 -# 2110| mu2110_10(unknown) = ^CallSideEffect : ~m? -# 2110| mu2110_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2110_7 -# 2110| r2110_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2110_7 -# 2110| mu2110_13(Base2 *) = Store[b2] : &:r2110_1, r2110_12 -# 2111| r2111_1(glval<Base2 *>) = VariableAddress[b2] : -# 2111| r2111_2(Base2 *) = Load[b2] : &:r2111_1, ~m? -# 2111| r2111_3(glval<unknown>) = FunctionAddress[~Base2] : -# 2111| v2111_4(void) = Call[~Base2] : func:r2111_3 -# 2111| mu2111_5(unknown) = ^CallSideEffect : ~m? -# 2111| v2111_6(void) = ^IndirectReadSideEffect[-1] : &:r2111_2, ~m? -# 2111| mu2111_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_2 -# 2111| r2111_8(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2111| r2111_9(Base2 *) = CopyValue : r2111_1 -# 2111| v2111_10(void) = Call[?] : func:r2111_8, 0:r2111_9 -# 2111| mu2111_11(unknown) = ^CallSideEffect : ~m? -# 2113| r2113_1(glval<Derived2 *>) = VariableAddress[d] : -# 2113| r2113_2(glval<unknown>) = FunctionAddress[operator new] : -# 2113| r2113_3(unsigned long) = Constant[16] : -# 2113| r2113_4(void *) = Call[operator new] : func:r2113_2, 0:r2113_3 -# 2113| mu2113_5(unknown) = ^CallSideEffect : ~m? -# 2113| mu2113_6(unknown) = ^InitializeDynamicAllocation : &:r2113_4 -# 2113| r2113_7(Derived2 *) = Convert : r2113_4 -# 2113| r2113_8(glval<unknown>) = FunctionAddress[Derived2] : -# 2113| v2113_9(void) = Call[Derived2] : func:r2113_8, this:r2113_7 -# 2113| mu2113_10(unknown) = ^CallSideEffect : ~m? -# 2113| mu2113_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2113_7 -# 2113| mu2113_12(Derived2 *) = Store[d] : &:r2113_1, r2113_7 -# 2114| r2114_1(glval<Derived2 *>) = VariableAddress[d] : -# 2114| r2114_2(Derived2 *) = Load[d] : &:r2114_1, ~m? -# 2114| r2114_3(glval<unknown>) = FunctionAddress[~Derived2] : -# 2114| v2114_4(void) = Call[~Derived2] : func:r2114_3 -# 2114| mu2114_5(unknown) = ^CallSideEffect : ~m? -# 2114| v2114_6(void) = ^IndirectReadSideEffect[-1] : &:r2114_2, ~m? -# 2114| mu2114_7(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2114_2 -# 2114| r2114_8(glval<unknown>) = VirtualDeleteFunctionAddress : -# 2114| r2114_9(Derived2 *) = CopyValue : r2114_1 -# 2114| v2114_10(void) = Call[?] : func:r2114_8, 0:r2114_9 -# 2114| mu2114_11(unknown) = ^CallSideEffect : ~m? -# 2115| r2115_1(glval<int>) = VariableAddress[#return] : -# 2115| mu2115_2(int) = Uninitialized[#return] : &:r2115_1 -# 2105| r2105_4(glval<int>) = VariableAddress[#return] : -# 2105| v2105_5(void) = ReturnValue : &:r2105_4, ~m? -# 2105| v2105_6(void) = AliasedUse : ~m? -# 2105| v2105_7(void) = ExitFunction : - -# 2119| void test_constant_folding() +# 2096| void NewDeleteMem() +# 2096| Block 0 +# 2096| v2096_1(void) = EnterFunction : +# 2096| mu2096_2(unknown) = AliasedDefinition : +# 2096| mu2096_3(unknown) = InitializeNonLocal : +# 2097| r2097_1(glval<int *>) = VariableAddress[x] : +# 2097| r2097_2(glval<unknown>) = FunctionAddress[operator new] : +# 2097| r2097_3(unsigned long) = Constant[4] : +# 2097| r2097_4(void *) = Call[operator new] : func:r2097_2, 0:r2097_3 +# 2097| mu2097_5(unknown) = ^CallSideEffect : ~m? +# 2097| mu2097_6(unknown) = ^InitializeDynamicAllocation : &:r2097_4 +# 2097| r2097_7(int *) = Convert : r2097_4 +# 2097| mu2097_8(int *) = Store[x] : &:r2097_1, r2097_7 +# 2098| r2098_1(int) = Constant[6] : +# 2098| r2098_2(glval<int *>) = VariableAddress[x] : +# 2098| r2098_3(int *) = Load[x] : &:r2098_2, ~m? +# 2098| r2098_4(glval<int>) = CopyValue : r2098_3 +# 2098| mu2098_5(int) = Store[?] : &:r2098_4, r2098_1 +# 2099| r2099_1(glval<unknown>) = FunctionAddress[operator delete] : +# 2099| r2099_2(glval<int *>) = VariableAddress[x] : +# 2099| r2099_3(int *) = Load[x] : &:r2099_2, ~m? +# 2099| v2099_4(void) = Call[operator delete] : func:r2099_1, 0:r2099_3 +# 2099| mu2099_5(unknown) = ^CallSideEffect : ~m? +# 2100| v2100_1(void) = NoOp : +# 2096| v2096_4(void) = ReturnVoid : +# 2096| v2096_5(void) = AliasedUse : ~m? +# 2096| v2096_6(void) = ExitFunction : + +# 2102| void Base2::Base2() +# 2102| Block 0 +# 2102| v2102_1(void) = EnterFunction : +# 2102| mu2102_2(unknown) = AliasedDefinition : +# 2102| mu2102_3(unknown) = InitializeNonLocal : +# 2102| r2102_4(glval<unknown>) = VariableAddress[#this] : +# 2102| mu2102_5(glval<Base2>) = InitializeParameter[#this] : &:r2102_4 +# 2102| r2102_6(glval<Base2>) = Load[#this] : &:r2102_4, ~m? +# 2102| mu2102_7(Base2) = InitializeIndirection[#this] : &:r2102_6 +# 2102| v2102_8(void) = NoOp : +# 2102| v2102_9(void) = ReturnIndirection[#this] : &:r2102_6, ~m? +# 2102| v2102_10(void) = ReturnVoid : +# 2102| v2102_11(void) = AliasedUse : ~m? +# 2102| v2102_12(void) = ExitFunction : + +# 2104| void Base2::operator delete(void*) +# 2104| Block 0 +# 2104| v2104_1(void) = EnterFunction : +# 2104| mu2104_2(unknown) = AliasedDefinition : +# 2104| mu2104_3(unknown) = InitializeNonLocal : +# 2104| r2104_4(glval<void *>) = VariableAddress[p] : +# 2104| mu2104_5(void *) = InitializeParameter[p] : &:r2104_4 +# 2104| r2104_6(void *) = Load[p] : &:r2104_4, ~m? +# 2104| mu2104_7(unknown) = InitializeIndirection[p] : &:r2104_6 +# 2105| v2105_1(void) = NoOp : +# 2104| v2104_8(void) = ReturnIndirection[p] : &:r2104_6, ~m? +# 2104| v2104_9(void) = ReturnVoid : +# 2104| v2104_10(void) = AliasedUse : ~m? +# 2104| v2104_11(void) = ExitFunction : + +# 2106| void Base2::~Base2() +# 2106| Block 0 +# 2106| v2106_1(void) = EnterFunction : +# 2106| mu2106_2(unknown) = AliasedDefinition : +# 2106| mu2106_3(unknown) = InitializeNonLocal : +# 2106| r2106_4(glval<unknown>) = VariableAddress[#this] : +# 2106| mu2106_5(glval<Base2>) = InitializeParameter[#this] : &:r2106_4 +# 2106| r2106_6(glval<Base2>) = Load[#this] : &:r2106_4, ~m? +# 2106| mu2106_7(Base2) = InitializeIndirection[#this] : &:r2106_6 +# 2106| v2106_8(void) = NoOp : +# 2106| v2106_9(void) = ReturnIndirection[#this] : &:r2106_6, ~m? +# 2106| v2106_10(void) = ReturnVoid : +# 2106| v2106_11(void) = AliasedUse : ~m? +# 2106| v2106_12(void) = ExitFunction : + +# 2109| void Derived2::Derived2() +# 2109| Block 0 +# 2109| v2109_1(void) = EnterFunction : +# 2109| mu2109_2(unknown) = AliasedDefinition : +# 2109| mu2109_3(unknown) = InitializeNonLocal : +# 2109| r2109_4(glval<unknown>) = VariableAddress[#this] : +# 2109| mu2109_5(glval<Derived2>) = InitializeParameter[#this] : &:r2109_4 +# 2109| r2109_6(glval<Derived2>) = Load[#this] : &:r2109_4, ~m? +# 2109| mu2109_7(Derived2) = InitializeIndirection[#this] : &:r2109_6 +# 2109| r2109_8(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2109_5 +# 2109| r2109_9(glval<unknown>) = FunctionAddress[Base2] : +# 2109| v2109_10(void) = Call[Base2] : func:r2109_9, this:r2109_8 +# 2109| mu2109_11(unknown) = ^CallSideEffect : ~m? +# 2109| mu2109_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2109_8 +# 2109| v2109_13(void) = NoOp : +# 2109| v2109_14(void) = ReturnIndirection[#this] : &:r2109_6, ~m? +# 2109| v2109_15(void) = ReturnVoid : +# 2109| v2109_16(void) = AliasedUse : ~m? +# 2109| v2109_17(void) = ExitFunction : + +# 2112| void Derived2::~Derived2() +# 2112| Block 0 +# 2112| v2112_1(void) = EnterFunction : +# 2112| mu2112_2(unknown) = AliasedDefinition : +# 2112| mu2112_3(unknown) = InitializeNonLocal : +# 2112| r2112_4(glval<unknown>) = VariableAddress[#this] : +# 2112| mu2112_5(glval<Derived2>) = InitializeParameter[#this] : &:r2112_4 +# 2112| r2112_6(glval<Derived2>) = Load[#this] : &:r2112_4, ~m? +# 2112| mu2112_7(Derived2) = InitializeIndirection[#this] : &:r2112_6 +# 2112| v2112_8(void) = NoOp : +# 2112| r2112_9(glval<Base2>) = ConvertToNonVirtualBase[Derived2 : Base2] : mu2112_5 +# 2112| r2112_10(glval<unknown>) = FunctionAddress[~Base2] : +# 2112| v2112_11(void) = Call[~Base2] : func:r2112_10, this:r2112_9 +# 2112| mu2112_12(unknown) = ^CallSideEffect : ~m? +# 2112| v2112_13(void) = ReturnIndirection[#this] : &:r2112_6, ~m? +# 2112| v2112_14(void) = ReturnVoid : +# 2112| v2112_15(void) = AliasedUse : ~m? +# 2112| v2112_16(void) = ExitFunction : + +# 2114| void Derived2::operator delete(void*) +# 2114| Block 0 +# 2114| v2114_1(void) = EnterFunction : +# 2114| mu2114_2(unknown) = AliasedDefinition : +# 2114| mu2114_3(unknown) = InitializeNonLocal : +# 2114| r2114_4(glval<void *>) = VariableAddress[p] : +# 2114| mu2114_5(void *) = InitializeParameter[p] : &:r2114_4 +# 2114| r2114_6(void *) = Load[p] : &:r2114_4, ~m? +# 2114| mu2114_7(unknown) = InitializeIndirection[p] : &:r2114_6 +# 2115| v2115_1(void) = NoOp : +# 2114| v2114_8(void) = ReturnIndirection[p] : &:r2114_6, ~m? +# 2114| v2114_9(void) = ReturnVoid : +# 2114| v2114_10(void) = AliasedUse : ~m? +# 2114| v2114_11(void) = ExitFunction : + +# 2119| int virtual_delete() # 2119| Block 0 -# 2119| v2119_1(void) = EnterFunction : -# 2119| mu2119_2(unknown) = AliasedDefinition : -# 2119| mu2119_3(unknown) = InitializeNonLocal : -# 2120| r2120_1(glval<int>) = VariableAddress[x] : -# 2120| r2120_2(int) = Constant[116] : -# 2120| mu2120_3(int) = Store[x] : &:r2120_1, r2120_2 -# 2121| r2121_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : -# 2121| r2121_2(int) = Constant[116] : -# 2121| v2121_3(void) = Call[test_constant_folding_use] : func:r2121_1, 0:r2121_2 -# 2121| mu2121_4(unknown) = ^CallSideEffect : ~m? -# 2122| v2122_1(void) = NoOp : -# 2119| v2119_4(void) = ReturnVoid : -# 2119| v2119_5(void) = AliasedUse : ~m? -# 2119| v2119_6(void) = ExitFunction : - -# 2126| int NonExit() -# 2126| Block 0 -# 2126| v2126_1(void) = EnterFunction : -# 2126| mu2126_2(unknown) = AliasedDefinition : -# 2126| mu2126_3(unknown) = InitializeNonLocal : -# 2127| r2127_1(glval<int>) = VariableAddress[x] : -# 2127| r2127_2(glval<unknown>) = FunctionAddress[Add] : -# 2127| r2127_3(int) = Constant[3] : -# 2127| r2127_4(int) = Constant[4] : -# 2127| r2127_5(int) = Call[Add] : func:r2127_2, 0:r2127_3, 1:r2127_4 -# 2127| mu2127_6(unknown) = ^CallSideEffect : ~m? -# 2127| mu2127_7(int) = Store[x] : &:r2127_1, r2127_5 -# 2128| r2128_1(glval<int>) = VariableAddress[x] : -# 2128| r2128_2(int) = Load[x] : &:r2128_1, ~m? -# 2128| r2128_3(int) = Constant[7] : -# 2128| r2128_4(bool) = CompareEQ : r2128_2, r2128_3 -# 2128| v2128_5(void) = ConditionalBranch : r2128_4 +# 2119| v2119_1(void) = EnterFunction : +# 2119| mu2119_2(unknown) = AliasedDefinition : +# 2119| mu2119_3(unknown) = InitializeNonLocal : +# 2121| r2121_1(glval<Base2 *>) = VariableAddress[b1] : +# 2121| r2121_2(glval<unknown>) = FunctionAddress[operator new] : +# 2121| r2121_3(unsigned long) = Constant[8] : +# 2121| r2121_4(void *) = Call[operator new] : func:r2121_2, 0:r2121_3 +# 2121| mu2121_5(unknown) = ^CallSideEffect : ~m? +# 2121| mu2121_6(unknown) = ^InitializeDynamicAllocation : &:r2121_4 +# 2121| r2121_7(Base2 *) = Convert : r2121_4 +# 2121| r2121_8(glval<unknown>) = FunctionAddress[Base2] : +# 2121| v2121_9(void) = Call[Base2] : func:r2121_8, this:r2121_7 +# 2121| mu2121_10(unknown) = ^CallSideEffect : ~m? +# 2121| mu2121_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2121_7 +# 2121| mu2121_12(Base2 *) = Store[b1] : &:r2121_1, r2121_7 +# 2122| r2122_1(glval<Base2 *>) = VariableAddress[b1] : +# 2122| r2122_2(Base2 *) = Load[b1] : &:r2122_1, ~m? +# 2122| r2122_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2122| v2122_4(void) = Call[~Base2] : func:r2122_3 +# 2122| mu2122_5(unknown) = ^CallSideEffect : ~m? +# 2122| v2122_6(void) = ^IndirectReadSideEffect[-1] : &:r2122_2, ~m? +# 2122| mu2122_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2122_2 +# 2122| r2122_8(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2122| r2122_9(Base2 *) = CopyValue : r2122_1 +# 2122| v2122_10(void) = Call[?] : func:r2122_8, 0:r2122_9 +# 2122| mu2122_11(unknown) = ^CallSideEffect : ~m? +# 2124| r2124_1(glval<Base2 *>) = VariableAddress[b2] : +# 2124| r2124_2(glval<unknown>) = FunctionAddress[operator new] : +# 2124| r2124_3(unsigned long) = Constant[16] : +# 2124| r2124_4(void *) = Call[operator new] : func:r2124_2, 0:r2124_3 +# 2124| mu2124_5(unknown) = ^CallSideEffect : ~m? +# 2124| mu2124_6(unknown) = ^InitializeDynamicAllocation : &:r2124_4 +# 2124| r2124_7(Derived2 *) = Convert : r2124_4 +# 2124| r2124_8(glval<unknown>) = FunctionAddress[Derived2] : +# 2124| v2124_9(void) = Call[Derived2] : func:r2124_8, this:r2124_7 +# 2124| mu2124_10(unknown) = ^CallSideEffect : ~m? +# 2124| mu2124_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2124_7 +# 2124| r2124_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2124_7 +# 2124| mu2124_13(Base2 *) = Store[b2] : &:r2124_1, r2124_12 +# 2125| r2125_1(glval<Base2 *>) = VariableAddress[b2] : +# 2125| r2125_2(Base2 *) = Load[b2] : &:r2125_1, ~m? +# 2125| r2125_3(glval<unknown>) = FunctionAddress[~Base2] : +# 2125| v2125_4(void) = Call[~Base2] : func:r2125_3 +# 2125| mu2125_5(unknown) = ^CallSideEffect : ~m? +# 2125| v2125_6(void) = ^IndirectReadSideEffect[-1] : &:r2125_2, ~m? +# 2125| mu2125_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2125_2 +# 2125| r2125_8(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2125| r2125_9(Base2 *) = CopyValue : r2125_1 +# 2125| v2125_10(void) = Call[?] : func:r2125_8, 0:r2125_9 +# 2125| mu2125_11(unknown) = ^CallSideEffect : ~m? +# 2127| r2127_1(glval<Derived2 *>) = VariableAddress[d] : +# 2127| r2127_2(glval<unknown>) = FunctionAddress[operator new] : +# 2127| r2127_3(unsigned long) = Constant[16] : +# 2127| r2127_4(void *) = Call[operator new] : func:r2127_2, 0:r2127_3 +# 2127| mu2127_5(unknown) = ^CallSideEffect : ~m? +# 2127| mu2127_6(unknown) = ^InitializeDynamicAllocation : &:r2127_4 +# 2127| r2127_7(Derived2 *) = Convert : r2127_4 +# 2127| r2127_8(glval<unknown>) = FunctionAddress[Derived2] : +# 2127| v2127_9(void) = Call[Derived2] : func:r2127_8, this:r2127_7 +# 2127| mu2127_10(unknown) = ^CallSideEffect : ~m? +# 2127| mu2127_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2127_7 +# 2127| mu2127_12(Derived2 *) = Store[d] : &:r2127_1, r2127_7 +# 2128| r2128_1(glval<Derived2 *>) = VariableAddress[d] : +# 2128| r2128_2(Derived2 *) = Load[d] : &:r2128_1, ~m? +# 2128| r2128_3(glval<unknown>) = FunctionAddress[~Derived2] : +# 2128| v2128_4(void) = Call[~Derived2] : func:r2128_3 +# 2128| mu2128_5(unknown) = ^CallSideEffect : ~m? +# 2128| v2128_6(void) = ^IndirectReadSideEffect[-1] : &:r2128_2, ~m? +# 2128| mu2128_7(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2128_2 +# 2128| r2128_8(glval<unknown>) = VirtualDeleteFunctionAddress : +# 2128| r2128_9(Derived2 *) = CopyValue : r2128_1 +# 2128| v2128_10(void) = Call[?] : func:r2128_8, 0:r2128_9 +# 2128| mu2128_11(unknown) = ^CallSideEffect : ~m? +# 2129| r2129_1(glval<int>) = VariableAddress[#return] : +# 2129| mu2129_2(int) = Uninitialized[#return] : &:r2129_1 +# 2119| r2119_4(glval<int>) = VariableAddress[#return] : +# 2119| v2119_5(void) = ReturnValue : &:r2119_4, ~m? +# 2119| v2119_6(void) = AliasedUse : ~m? +# 2119| v2119_7(void) = ExitFunction : + +# 2133| void test_constant_folding() +# 2133| Block 0 +# 2133| v2133_1(void) = EnterFunction : +# 2133| mu2133_2(unknown) = AliasedDefinition : +# 2133| mu2133_3(unknown) = InitializeNonLocal : +# 2134| r2134_1(glval<int>) = VariableAddress[x] : +# 2134| r2134_2(int) = Constant[116] : +# 2134| mu2134_3(int) = Store[x] : &:r2134_1, r2134_2 +# 2135| r2135_1(glval<unknown>) = FunctionAddress[test_constant_folding_use] : +# 2135| r2135_2(int) = Constant[116] : +# 2135| v2135_3(void) = Call[test_constant_folding_use] : func:r2135_1, 0:r2135_2 +# 2135| mu2135_4(unknown) = ^CallSideEffect : ~m? +# 2136| v2136_1(void) = NoOp : +# 2133| v2133_4(void) = ReturnVoid : +# 2133| v2133_5(void) = AliasedUse : ~m? +# 2133| v2133_6(void) = ExitFunction : + +# 2140| int NonExit() +# 2140| Block 0 +# 2140| v2140_1(void) = EnterFunction : +# 2140| mu2140_2(unknown) = AliasedDefinition : +# 2140| mu2140_3(unknown) = InitializeNonLocal : +# 2141| r2141_1(glval<int>) = VariableAddress[x] : +# 2141| r2141_2(glval<unknown>) = FunctionAddress[Add] : +# 2141| r2141_3(int) = Constant[3] : +# 2141| r2141_4(int) = Constant[4] : +# 2141| r2141_5(int) = Call[Add] : func:r2141_2, 0:r2141_3, 1:r2141_4 +# 2141| mu2141_6(unknown) = ^CallSideEffect : ~m? +# 2141| mu2141_7(int) = Store[x] : &:r2141_1, r2141_5 +# 2142| r2142_1(glval<int>) = VariableAddress[x] : +# 2142| r2142_2(int) = Load[x] : &:r2142_1, ~m? +# 2142| r2142_3(int) = Constant[7] : +# 2142| r2142_4(bool) = CompareEQ : r2142_2, r2142_3 +# 2142| v2142_5(void) = ConditionalBranch : r2142_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2129| Block 1 -# 2129| r2129_1(glval<unknown>) = FunctionAddress[exit] : -# 2129| r2129_2(int) = Constant[3] : -# 2129| v2129_3(void) = Call[exit] : func:r2129_1, 0:r2129_2 -# 2129| mu2129_4(unknown) = ^CallSideEffect : ~m? -# 2126| v2126_4(void) = Unreached : - -# 2130| Block 2 -# 2130| r2130_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2130| v2130_2(void) = Call[VoidFunc] : func:r2130_1 -# 2130| mu2130_3(unknown) = ^CallSideEffect : ~m? -# 2131| r2131_1(glval<int>) = VariableAddress[#return] : -# 2131| r2131_2(glval<int>) = VariableAddress[x] : -# 2131| r2131_3(int) = Load[x] : &:r2131_2, ~m? -# 2131| mu2131_4(int) = Store[#return] : &:r2131_1, r2131_3 -# 2126| r2126_5(glval<int>) = VariableAddress[#return] : -# 2126| v2126_6(void) = ReturnValue : &:r2126_5, ~m? -# 2126| v2126_7(void) = AliasedUse : ~m? -# 2126| v2126_8(void) = ExitFunction : - -# 2134| void CallsNonExit() -# 2134| Block 0 -# 2134| v2134_1(void) = EnterFunction : -# 2134| mu2134_2(unknown) = AliasedDefinition : -# 2134| mu2134_3(unknown) = InitializeNonLocal : -# 2135| r2135_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2135| v2135_2(void) = Call[VoidFunc] : func:r2135_1 -# 2135| mu2135_3(unknown) = ^CallSideEffect : ~m? -# 2136| r2136_1(glval<unknown>) = FunctionAddress[exit] : -# 2136| r2136_2(int) = Constant[3] : -# 2136| v2136_3(void) = Call[exit] : func:r2136_1, 0:r2136_2 -# 2136| mu2136_4(unknown) = ^CallSideEffect : ~m? -# 2134| v2134_4(void) = Unreached : - -# 2137| Block 1 -# 2137| v2137_1(void) = NoOp : -# 2134| v2134_5(void) = ReturnVoid : -# 2134| v2134_6(void) = AliasedUse : ~m? -# 2134| v2134_7(void) = ExitFunction : - -# 2139| int TransNonExit() -# 2139| Block 0 -# 2139| v2139_1(void) = EnterFunction : -# 2139| mu2139_2(unknown) = AliasedDefinition : -# 2139| mu2139_3(unknown) = InitializeNonLocal : -# 2140| r2140_1(glval<int>) = VariableAddress[x] : -# 2140| r2140_2(glval<unknown>) = FunctionAddress[Add] : -# 2140| r2140_3(int) = Constant[3] : -# 2140| r2140_4(int) = Constant[4] : -# 2140| r2140_5(int) = Call[Add] : func:r2140_2, 0:r2140_3, 1:r2140_4 -# 2140| mu2140_6(unknown) = ^CallSideEffect : ~m? -# 2140| mu2140_7(int) = Store[x] : &:r2140_1, r2140_5 -# 2141| r2141_1(glval<int>) = VariableAddress[x] : -# 2141| r2141_2(int) = Load[x] : &:r2141_1, ~m? -# 2141| r2141_3(int) = Constant[7] : -# 2141| r2141_4(bool) = CompareEQ : r2141_2, r2141_3 -# 2141| v2141_5(void) = ConditionalBranch : r2141_4 +# 2143| Block 1 +# 2143| r2143_1(glval<unknown>) = FunctionAddress[exit] : +# 2143| r2143_2(int) = Constant[3] : +# 2143| v2143_3(void) = Call[exit] : func:r2143_1, 0:r2143_2 +# 2143| mu2143_4(unknown) = ^CallSideEffect : ~m? +# 2140| v2140_4(void) = Unreached : + +# 2144| Block 2 +# 2144| r2144_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2144| v2144_2(void) = Call[VoidFunc] : func:r2144_1 +# 2144| mu2144_3(unknown) = ^CallSideEffect : ~m? +# 2145| r2145_1(glval<int>) = VariableAddress[#return] : +# 2145| r2145_2(glval<int>) = VariableAddress[x] : +# 2145| r2145_3(int) = Load[x] : &:r2145_2, ~m? +# 2145| mu2145_4(int) = Store[#return] : &:r2145_1, r2145_3 +# 2140| r2140_5(glval<int>) = VariableAddress[#return] : +# 2140| v2140_6(void) = ReturnValue : &:r2140_5, ~m? +# 2140| v2140_7(void) = AliasedUse : ~m? +# 2140| v2140_8(void) = ExitFunction : + +# 2148| void CallsNonExit() +# 2148| Block 0 +# 2148| v2148_1(void) = EnterFunction : +# 2148| mu2148_2(unknown) = AliasedDefinition : +# 2148| mu2148_3(unknown) = InitializeNonLocal : +# 2149| r2149_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2149| v2149_2(void) = Call[VoidFunc] : func:r2149_1 +# 2149| mu2149_3(unknown) = ^CallSideEffect : ~m? +# 2150| r2150_1(glval<unknown>) = FunctionAddress[exit] : +# 2150| r2150_2(int) = Constant[3] : +# 2150| v2150_3(void) = Call[exit] : func:r2150_1, 0:r2150_2 +# 2150| mu2150_4(unknown) = ^CallSideEffect : ~m? +# 2148| v2148_4(void) = Unreached : + +# 2151| Block 1 +# 2151| v2151_1(void) = NoOp : +# 2148| v2148_5(void) = ReturnVoid : +# 2148| v2148_6(void) = AliasedUse : ~m? +# 2148| v2148_7(void) = ExitFunction : + +# 2153| int TransNonExit() +# 2153| Block 0 +# 2153| v2153_1(void) = EnterFunction : +# 2153| mu2153_2(unknown) = AliasedDefinition : +# 2153| mu2153_3(unknown) = InitializeNonLocal : +# 2154| r2154_1(glval<int>) = VariableAddress[x] : +# 2154| r2154_2(glval<unknown>) = FunctionAddress[Add] : +# 2154| r2154_3(int) = Constant[3] : +# 2154| r2154_4(int) = Constant[4] : +# 2154| r2154_5(int) = Call[Add] : func:r2154_2, 0:r2154_3, 1:r2154_4 +# 2154| mu2154_6(unknown) = ^CallSideEffect : ~m? +# 2154| mu2154_7(int) = Store[x] : &:r2154_1, r2154_5 +# 2155| r2155_1(glval<int>) = VariableAddress[x] : +# 2155| r2155_2(int) = Load[x] : &:r2155_1, ~m? +# 2155| r2155_3(int) = Constant[7] : +# 2155| r2155_4(bool) = CompareEQ : r2155_2, r2155_3 +# 2155| v2155_5(void) = ConditionalBranch : r2155_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2142| Block 1 -# 2142| r2142_1(glval<unknown>) = FunctionAddress[CallsNonExit] : -# 2142| v2142_2(void) = Call[CallsNonExit] : func:r2142_1 -# 2142| mu2142_3(unknown) = ^CallSideEffect : ~m? +# 2156| Block 1 +# 2156| r2156_1(glval<unknown>) = FunctionAddress[CallsNonExit] : +# 2156| v2156_2(void) = Call[CallsNonExit] : func:r2156_1 +# 2156| mu2156_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 2 -# 2143| Block 2 -# 2143| r2143_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2143| v2143_2(void) = Call[VoidFunc] : func:r2143_1 -# 2143| mu2143_3(unknown) = ^CallSideEffect : ~m? -# 2144| r2144_1(glval<int>) = VariableAddress[#return] : -# 2144| r2144_2(glval<int>) = VariableAddress[x] : -# 2144| r2144_3(int) = Load[x] : &:r2144_2, ~m? -# 2144| mu2144_4(int) = Store[#return] : &:r2144_1, r2144_3 -# 2139| r2139_4(glval<int>) = VariableAddress[#return] : -# 2139| v2139_5(void) = ReturnValue : &:r2139_4, ~m? -# 2139| v2139_6(void) = AliasedUse : ~m? -# 2139| v2139_7(void) = ExitFunction : - -# 2147| void newArrayCorrectType(size_t) -# 2147| Block 0 -# 2147| v2147_1(void) = EnterFunction : -# 2147| mu2147_2(unknown) = AliasedDefinition : -# 2147| mu2147_3(unknown) = InitializeNonLocal : -# 2147| r2147_4(glval<unsigned long>) = VariableAddress[n] : -# 2147| mu2147_5(unsigned long) = InitializeParameter[n] : &:r2147_4 -# 2148| r2148_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2148| r2148_2(glval<unsigned long>) = VariableAddress[n] : -# 2148| r2148_3(unsigned long) = Load[n] : &:r2148_2, ~m? -# 2148| r2148_4(unsigned long) = Constant[4] : -# 2148| r2148_5(unsigned long) = Mul : r2148_3, r2148_4 -# 2148| r2148_6(void *) = Call[operator new[]] : func:r2148_1, 0:r2148_5 -# 2148| mu2148_7(unknown) = ^CallSideEffect : ~m? -# 2148| mu2148_8(unknown) = ^InitializeDynamicAllocation : &:r2148_6 -# 2148| r2148_9(int *) = Convert : r2148_6 -# 2149| r2149_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2149| r2149_2(glval<unsigned long>) = VariableAddress[n] : -# 2149| r2149_3(unsigned long) = Load[n] : &:r2149_2, ~m? -# 2149| r2149_4(unsigned long) = Constant[4] : -# 2149| r2149_5(unsigned long) = Mul : r2149_3, r2149_4 -# 2149| r2149_6(float) = Constant[1.0] : -# 2149| r2149_7(void *) = Call[operator new[]] : func:r2149_1, 0:r2149_5, 1:r2149_6 -# 2149| mu2149_8(unknown) = ^CallSideEffect : ~m? -# 2149| mu2149_9(unknown) = ^InitializeDynamicAllocation : &:r2149_7 -# 2149| r2149_10(int *) = Convert : r2149_7 -# 2150| r2150_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2150| r2150_2(glval<unsigned long>) = VariableAddress[n] : -# 2150| r2150_3(unsigned long) = Load[n] : &:r2150_2, ~m? -# 2150| r2150_4(unsigned long) = Constant[8] : -# 2150| r2150_5(unsigned long) = Mul : r2150_3, r2150_4 -# 2150| r2150_6(void *) = Call[operator new[]] : func:r2150_1, 0:r2150_5 -# 2150| mu2150_7(unknown) = ^CallSideEffect : ~m? -# 2150| mu2150_8(unknown) = ^InitializeDynamicAllocation : &:r2150_6 -# 2150| r2150_9(String *) = Convert : r2150_6 -# 2151| r2151_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2151| r2151_2(glval<unsigned long>) = VariableAddress[n] : -# 2151| r2151_3(unsigned long) = Load[n] : &:r2151_2, ~m? -# 2151| r2151_4(unsigned long) = Constant[256] : -# 2151| r2151_5(unsigned long) = Mul : r2151_3, r2151_4 -# 2151| r2151_6(align_val_t) = Constant[128] : -# 2151| r2151_7(void *) = Call[operator new[]] : func:r2151_1, 0:r2151_5, 1:r2151_6 -# 2151| mu2151_8(unknown) = ^CallSideEffect : ~m? -# 2151| mu2151_9(unknown) = ^InitializeDynamicAllocation : &:r2151_7 -# 2151| r2151_10(Overaligned *) = Convert : r2151_7 -# 2152| r2152_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2152| r2152_2(glval<unsigned long>) = VariableAddress[n] : -# 2152| r2152_3(unsigned long) = Load[n] : &:r2152_2, ~m? -# 2152| r2152_4(unsigned long) = Constant[1] : -# 2152| r2152_5(unsigned long) = Mul : r2152_3, r2152_4 -# 2152| r2152_6(void *) = Call[operator new[]] : func:r2152_1, 0:r2152_5 -# 2152| mu2152_7(unknown) = ^CallSideEffect : ~m? -# 2152| mu2152_8(unknown) = ^InitializeDynamicAllocation : &:r2152_6 -# 2152| r2152_9(DefaultCtorWithDefaultParam *) = Convert : r2152_6 -# 2153| r2153_1(glval<unknown>) = FunctionAddress[operator new[]] : -# 2153| r2153_2(glval<unsigned long>) = VariableAddress[n] : -# 2153| r2153_3(unsigned long) = Load[n] : &:r2153_2, ~m? -# 2153| r2153_4(unsigned long) = Constant[4] : -# 2153| r2153_5(unsigned long) = Mul : r2153_3, r2153_4 -# 2153| r2153_6(void *) = Call[operator new[]] : func:r2153_1, 0:r2153_5 -# 2153| mu2153_7(unknown) = ^CallSideEffect : ~m? -# 2153| mu2153_8(unknown) = ^InitializeDynamicAllocation : &:r2153_6 -# 2153| r2153_9(int *) = Convert : r2153_6 -# 2154| v2154_1(void) = NoOp : -# 2147| v2147_6(void) = ReturnVoid : -# 2147| v2147_7(void) = AliasedUse : ~m? -# 2147| v2147_8(void) = ExitFunction : - -# 2158| char* test_strtod(char*) -# 2158| Block 0 -# 2158| v2158_1(void) = EnterFunction : -# 2158| mu2158_2(unknown) = AliasedDefinition : -# 2158| mu2158_3(unknown) = InitializeNonLocal : -# 2158| r2158_4(glval<char *>) = VariableAddress[s] : -# 2158| mu2158_5(char *) = InitializeParameter[s] : &:r2158_4 -# 2158| r2158_6(char *) = Load[s] : &:r2158_4, ~m? -# 2158| mu2158_7(unknown) = InitializeIndirection[s] : &:r2158_6 -# 2159| r2159_1(glval<char *>) = VariableAddress[end] : -# 2159| mu2159_2(char *) = Uninitialized[end] : &:r2159_1 -# 2160| r2160_1(glval<double>) = VariableAddress[d] : -# 2160| r2160_2(glval<unknown>) = FunctionAddress[strtod] : -# 2160| r2160_3(glval<char *>) = VariableAddress[s] : -# 2160| r2160_4(char *) = Load[s] : &:r2160_3, ~m? -# 2160| r2160_5(char *) = Convert : r2160_4 -# 2160| r2160_6(glval<char *>) = VariableAddress[end] : -# 2160| r2160_7(char **) = CopyValue : r2160_6 -# 2160| r2160_8(double) = Call[strtod] : func:r2160_2, 0:r2160_5, 1:r2160_7 -# 2160| v2160_9(void) = ^BufferReadSideEffect[0] : &:r2160_5, ~m? -# 2160| mu2160_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2160_7 -# 2160| mu2160_11(double) = Store[d] : &:r2160_1, r2160_8 -# 2161| r2161_1(glval<char *>) = VariableAddress[#return] : -# 2161| r2161_2(glval<char *>) = VariableAddress[end] : -# 2161| r2161_3(char *) = Load[end] : &:r2161_2, ~m? -# 2161| mu2161_4(char *) = Store[#return] : &:r2161_1, r2161_3 -# 2158| v2158_8(void) = ReturnIndirection[s] : &:r2158_6, ~m? -# 2158| r2158_9(glval<char *>) = VariableAddress[#return] : -# 2158| v2158_10(void) = ReturnValue : &:r2158_9, ~m? -# 2158| v2158_11(void) = AliasedUse : ~m? -# 2158| v2158_12(void) = ExitFunction : - -# 2168| void call_as_child_of_ConditionDeclExpr() -# 2168| Block 0 -# 2168| v2168_1(void) = EnterFunction : -# 2168| mu2168_2(unknown) = AliasedDefinition : -# 2168| mu2168_3(unknown) = InitializeNonLocal : -# 2169| r2169_1(glval<HasOperatorBool>) = VariableAddress[b] : -# 2169| r2169_2(HasOperatorBool) = Constant[0] : -# 2169| mu2169_3(HasOperatorBool) = Store[b] : &:r2169_1, r2169_2 -# 2169| r2169_4(glval<HasOperatorBool>) = VariableAddress[b] : -# 2169| r2169_5(glval<unknown>) = FunctionAddress[operator bool] : -# 2169| r2169_6(bool) = Call[operator bool] : func:r2169_5, this:r2169_4 -# 2169| mu2169_7(unknown) = ^CallSideEffect : ~m? -# 2169| v2169_8(void) = ^IndirectReadSideEffect[-1] : &:r2169_4, ~m? -# 2169| mu2169_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2169_4 -# 2169| r2169_10(bool) = CopyValue : r2169_6 -# 2169| v2169_11(void) = ConditionalBranch : r2169_10 +# 2157| Block 2 +# 2157| r2157_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2157| v2157_2(void) = Call[VoidFunc] : func:r2157_1 +# 2157| mu2157_3(unknown) = ^CallSideEffect : ~m? +# 2158| r2158_1(glval<int>) = VariableAddress[#return] : +# 2158| r2158_2(glval<int>) = VariableAddress[x] : +# 2158| r2158_3(int) = Load[x] : &:r2158_2, ~m? +# 2158| mu2158_4(int) = Store[#return] : &:r2158_1, r2158_3 +# 2153| r2153_4(glval<int>) = VariableAddress[#return] : +# 2153| v2153_5(void) = ReturnValue : &:r2153_4, ~m? +# 2153| v2153_6(void) = AliasedUse : ~m? +# 2153| v2153_7(void) = ExitFunction : + +# 2161| void newArrayCorrectType(size_t) +# 2161| Block 0 +# 2161| v2161_1(void) = EnterFunction : +# 2161| mu2161_2(unknown) = AliasedDefinition : +# 2161| mu2161_3(unknown) = InitializeNonLocal : +# 2161| r2161_4(glval<unsigned long>) = VariableAddress[n] : +# 2161| mu2161_5(unsigned long) = InitializeParameter[n] : &:r2161_4 +# 2162| r2162_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2162| r2162_2(glval<unsigned long>) = VariableAddress[n] : +# 2162| r2162_3(unsigned long) = Load[n] : &:r2162_2, ~m? +# 2162| r2162_4(unsigned long) = Constant[4] : +# 2162| r2162_5(unsigned long) = Mul : r2162_3, r2162_4 +# 2162| r2162_6(void *) = Call[operator new[]] : func:r2162_1, 0:r2162_5 +# 2162| mu2162_7(unknown) = ^CallSideEffect : ~m? +# 2162| mu2162_8(unknown) = ^InitializeDynamicAllocation : &:r2162_6 +# 2162| r2162_9(int *) = Convert : r2162_6 +# 2163| r2163_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2163| r2163_2(glval<unsigned long>) = VariableAddress[n] : +# 2163| r2163_3(unsigned long) = Load[n] : &:r2163_2, ~m? +# 2163| r2163_4(unsigned long) = Constant[4] : +# 2163| r2163_5(unsigned long) = Mul : r2163_3, r2163_4 +# 2163| r2163_6(float) = Constant[1.0] : +# 2163| r2163_7(void *) = Call[operator new[]] : func:r2163_1, 0:r2163_5, 1:r2163_6 +# 2163| mu2163_8(unknown) = ^CallSideEffect : ~m? +# 2163| mu2163_9(unknown) = ^InitializeDynamicAllocation : &:r2163_7 +# 2163| r2163_10(int *) = Convert : r2163_7 +# 2164| r2164_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2164| r2164_2(glval<unsigned long>) = VariableAddress[n] : +# 2164| r2164_3(unsigned long) = Load[n] : &:r2164_2, ~m? +# 2164| r2164_4(unsigned long) = Constant[8] : +# 2164| r2164_5(unsigned long) = Mul : r2164_3, r2164_4 +# 2164| r2164_6(void *) = Call[operator new[]] : func:r2164_1, 0:r2164_5 +# 2164| mu2164_7(unknown) = ^CallSideEffect : ~m? +# 2164| mu2164_8(unknown) = ^InitializeDynamicAllocation : &:r2164_6 +# 2164| r2164_9(String *) = Convert : r2164_6 +# 2165| r2165_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2165| r2165_2(glval<unsigned long>) = VariableAddress[n] : +# 2165| r2165_3(unsigned long) = Load[n] : &:r2165_2, ~m? +# 2165| r2165_4(unsigned long) = Constant[256] : +# 2165| r2165_5(unsigned long) = Mul : r2165_3, r2165_4 +# 2165| r2165_6(align_val_t) = Constant[128] : +# 2165| r2165_7(void *) = Call[operator new[]] : func:r2165_1, 0:r2165_5, 1:r2165_6 +# 2165| mu2165_8(unknown) = ^CallSideEffect : ~m? +# 2165| mu2165_9(unknown) = ^InitializeDynamicAllocation : &:r2165_7 +# 2165| r2165_10(Overaligned *) = Convert : r2165_7 +# 2166| r2166_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2166| r2166_2(glval<unsigned long>) = VariableAddress[n] : +# 2166| r2166_3(unsigned long) = Load[n] : &:r2166_2, ~m? +# 2166| r2166_4(unsigned long) = Constant[1] : +# 2166| r2166_5(unsigned long) = Mul : r2166_3, r2166_4 +# 2166| r2166_6(void *) = Call[operator new[]] : func:r2166_1, 0:r2166_5 +# 2166| mu2166_7(unknown) = ^CallSideEffect : ~m? +# 2166| mu2166_8(unknown) = ^InitializeDynamicAllocation : &:r2166_6 +# 2166| r2166_9(DefaultCtorWithDefaultParam *) = Convert : r2166_6 +# 2167| r2167_1(glval<unknown>) = FunctionAddress[operator new[]] : +# 2167| r2167_2(glval<unsigned long>) = VariableAddress[n] : +# 2167| r2167_3(unsigned long) = Load[n] : &:r2167_2, ~m? +# 2167| r2167_4(unsigned long) = Constant[4] : +# 2167| r2167_5(unsigned long) = Mul : r2167_3, r2167_4 +# 2167| r2167_6(void *) = Call[operator new[]] : func:r2167_1, 0:r2167_5 +# 2167| mu2167_7(unknown) = ^CallSideEffect : ~m? +# 2167| mu2167_8(unknown) = ^InitializeDynamicAllocation : &:r2167_6 +# 2167| r2167_9(int *) = Convert : r2167_6 +# 2168| v2168_1(void) = NoOp : +# 2161| v2161_6(void) = ReturnVoid : +# 2161| v2161_7(void) = AliasedUse : ~m? +# 2161| v2161_8(void) = ExitFunction : + +# 2172| char* test_strtod(char*) +# 2172| Block 0 +# 2172| v2172_1(void) = EnterFunction : +# 2172| mu2172_2(unknown) = AliasedDefinition : +# 2172| mu2172_3(unknown) = InitializeNonLocal : +# 2172| r2172_4(glval<char *>) = VariableAddress[s] : +# 2172| mu2172_5(char *) = InitializeParameter[s] : &:r2172_4 +# 2172| r2172_6(char *) = Load[s] : &:r2172_4, ~m? +# 2172| mu2172_7(unknown) = InitializeIndirection[s] : &:r2172_6 +# 2173| r2173_1(glval<char *>) = VariableAddress[end] : +# 2173| mu2173_2(char *) = Uninitialized[end] : &:r2173_1 +# 2174| r2174_1(glval<double>) = VariableAddress[d] : +# 2174| r2174_2(glval<unknown>) = FunctionAddress[strtod] : +# 2174| r2174_3(glval<char *>) = VariableAddress[s] : +# 2174| r2174_4(char *) = Load[s] : &:r2174_3, ~m? +# 2174| r2174_5(char *) = Convert : r2174_4 +# 2174| r2174_6(glval<char *>) = VariableAddress[end] : +# 2174| r2174_7(char **) = CopyValue : r2174_6 +# 2174| r2174_8(double) = Call[strtod] : func:r2174_2, 0:r2174_5, 1:r2174_7 +# 2174| v2174_9(void) = ^BufferReadSideEffect[0] : &:r2174_5, ~m? +# 2174| mu2174_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2174_7 +# 2174| mu2174_11(double) = Store[d] : &:r2174_1, r2174_8 +# 2175| r2175_1(glval<char *>) = VariableAddress[#return] : +# 2175| r2175_2(glval<char *>) = VariableAddress[end] : +# 2175| r2175_3(char *) = Load[end] : &:r2175_2, ~m? +# 2175| mu2175_4(char *) = Store[#return] : &:r2175_1, r2175_3 +# 2172| v2172_8(void) = ReturnIndirection[s] : &:r2172_6, ~m? +# 2172| r2172_9(glval<char *>) = VariableAddress[#return] : +# 2172| v2172_10(void) = ReturnValue : &:r2172_9, ~m? +# 2172| v2172_11(void) = AliasedUse : ~m? +# 2172| v2172_12(void) = ExitFunction : + +# 2182| void call_as_child_of_ConditionDeclExpr() +# 2182| Block 0 +# 2182| v2182_1(void) = EnterFunction : +# 2182| mu2182_2(unknown) = AliasedDefinition : +# 2182| mu2182_3(unknown) = InitializeNonLocal : +# 2183| r2183_1(glval<HasOperatorBool>) = VariableAddress[b] : +# 2183| r2183_2(HasOperatorBool) = Constant[0] : +# 2183| mu2183_3(HasOperatorBool) = Store[b] : &:r2183_1, r2183_2 +# 2183| r2183_4(glval<HasOperatorBool>) = VariableAddress[b] : +# 2183| r2183_5(glval<unknown>) = FunctionAddress[operator bool] : +# 2183| r2183_6(bool) = Call[operator bool] : func:r2183_5, this:r2183_4 +# 2183| mu2183_7(unknown) = ^CallSideEffect : ~m? +# 2183| v2183_8(void) = ^IndirectReadSideEffect[-1] : &:r2183_4, ~m? +# 2183| mu2183_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2183_4 +# 2183| r2183_10(bool) = CopyValue : r2183_6 +# 2183| v2183_11(void) = ConditionalBranch : r2183_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 2169| Block 1 -# 2169| v2169_12(void) = NoOp : +# 2183| Block 1 +# 2183| v2183_12(void) = NoOp : #-----| Goto -> Block 2 -# 2170| Block 2 -# 2170| v2170_1(void) = NoOp : -# 2168| v2168_4(void) = ReturnVoid : -# 2168| v2168_5(void) = AliasedUse : ~m? -# 2168| v2168_6(void) = ExitFunction : - -# 2172| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2172| Block 0 -# 2172| v2172_1(void) = EnterFunction : -# 2172| mu2172_2(unknown) = AliasedDefinition : -# 2172| mu2172_3(unknown) = InitializeNonLocal : -# 2172| r2172_4(glval<unknown>) = VariableAddress[#this] : -# 2172| mu2172_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2172_4 -# 2172| r2172_6(glval<ClassWithDestructor>) = Load[#this] : &:r2172_4, ~m? -# 2172| mu2172_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2172_6 +# 2184| Block 2 +# 2184| v2184_1(void) = NoOp : +# 2182| v2182_4(void) = ReturnVoid : +# 2182| v2182_5(void) = AliasedUse : ~m? +# 2182| v2182_6(void) = ExitFunction : + +# 2186| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2186| Block 0 +# 2186| v2186_1(void) = EnterFunction : +# 2186| mu2186_2(unknown) = AliasedDefinition : +# 2186| mu2186_3(unknown) = InitializeNonLocal : +# 2186| r2186_4(glval<unknown>) = VariableAddress[#this] : +# 2186| mu2186_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2186_4 +# 2186| r2186_6(glval<ClassWithDestructor>) = Load[#this] : &:r2186_4, ~m? +# 2186| mu2186_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2186_6 #-----| r0_1(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2172| r2172_8(glval<char *>) = FieldAddress[x] : mu2172_5 -# 2172| r2172_9(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : -# 2172| r2172_10(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2172_9, ~m? -# 2172| r2172_11(glval<ClassWithDestructor>) = CopyValue : r2172_10 -# 2172| r2172_12(glval<char *>) = FieldAddress[x] : r2172_11 -# 2172| r2172_13(char *) = Load[?] : &:r2172_12, ~m? -# 2172| mu2172_14(char *) = Store[?] : &:r2172_8, r2172_13 -# 2172| v2172_15(void) = NoOp : -# 2172| v2172_16(void) = ReturnIndirection[#this] : &:r2172_6, ~m? +# 2186| r2186_8(glval<char *>) = FieldAddress[x] : mu2186_5 +# 2186| r2186_9(glval<ClassWithDestructor &>) = VariableAddress[(unnamed parameter 0)] : +# 2186| r2186_10(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2186_9, ~m? +# 2186| r2186_11(glval<ClassWithDestructor>) = CopyValue : r2186_10 +# 2186| r2186_12(glval<char *>) = FieldAddress[x] : r2186_11 +# 2186| r2186_13(char *) = Load[?] : &:r2186_12, ~m? +# 2186| mu2186_14(char *) = Store[?] : &:r2186_8, r2186_13 +# 2186| v2186_15(void) = NoOp : +# 2186| v2186_16(void) = ReturnIndirection[#this] : &:r2186_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2172| v2172_17(void) = ReturnVoid : -# 2172| v2172_18(void) = AliasedUse : ~m? -# 2172| v2172_19(void) = ExitFunction : - -# 2175| void ClassWithDestructor::ClassWithDestructor() -# 2175| Block 0 -# 2175| v2175_1(void) = EnterFunction : -# 2175| mu2175_2(unknown) = AliasedDefinition : -# 2175| mu2175_3(unknown) = InitializeNonLocal : -# 2175| r2175_4(glval<unknown>) = VariableAddress[#this] : -# 2175| mu2175_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2175_4 -# 2175| r2175_6(glval<ClassWithDestructor>) = Load[#this] : &:r2175_4, ~m? -# 2175| mu2175_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2175_6 -# 2175| r2175_8(glval<unknown>) = FunctionAddress[operator new] : -# 2175| r2175_9(unsigned long) = Constant[1] : -# 2175| r2175_10(void *) = Call[operator new] : func:r2175_8, 0:r2175_9 -# 2175| mu2175_11(unknown) = ^CallSideEffect : ~m? -# 2175| mu2175_12(unknown) = ^InitializeDynamicAllocation : &:r2175_10 -# 2175| r2175_13(char *) = Convert : r2175_10 -# 2175| r2175_14(glval<unknown>) = VariableAddress[#this] : -# 2175| r2175_15(ClassWithDestructor *) = Load[#this] : &:r2175_14, ~m? -# 2175| r2175_16(glval<char *>) = FieldAddress[x] : r2175_15 -# 2175| mu2175_17(char *) = Store[?] : &:r2175_16, r2175_13 -# 2175| v2175_18(void) = NoOp : -# 2175| v2175_19(void) = ReturnIndirection[#this] : &:r2175_6, ~m? -# 2175| v2175_20(void) = ReturnVoid : -# 2175| v2175_21(void) = AliasedUse : ~m? -# 2175| v2175_22(void) = ExitFunction : - -# 2176| void ClassWithDestructor::~ClassWithDestructor() -# 2176| Block 0 -# 2176| v2176_1(void) = EnterFunction : -# 2176| mu2176_2(unknown) = AliasedDefinition : -# 2176| mu2176_3(unknown) = InitializeNonLocal : -# 2176| r2176_4(glval<unknown>) = VariableAddress[#this] : -# 2176| mu2176_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2176_4 -# 2176| r2176_6(glval<ClassWithDestructor>) = Load[#this] : &:r2176_4, ~m? -# 2176| mu2176_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2176_6 -# 2176| r2176_8(glval<unknown>) = FunctionAddress[operator delete] : -# 2176| r2176_9(glval<unknown>) = VariableAddress[#this] : -# 2176| r2176_10(ClassWithDestructor *) = Load[#this] : &:r2176_9, ~m? -# 2176| r2176_11(glval<char *>) = FieldAddress[x] : r2176_10 -# 2176| r2176_12(char *) = Load[?] : &:r2176_11, ~m? -# 2176| v2176_13(void) = Call[operator delete] : func:r2176_8, 0:r2176_12 -# 2176| mu2176_14(unknown) = ^CallSideEffect : ~m? -# 2176| v2176_15(void) = NoOp : -# 2176| v2176_16(void) = ReturnIndirection[#this] : &:r2176_6, ~m? -# 2176| v2176_17(void) = ReturnVoid : -# 2176| v2176_18(void) = AliasedUse : ~m? -# 2176| v2176_19(void) = ExitFunction : - -# 2178| void ClassWithDestructor::set_x(char) -# 2178| Block 0 -# 2178| v2178_1(void) = EnterFunction : -# 2178| mu2178_2(unknown) = AliasedDefinition : -# 2178| mu2178_3(unknown) = InitializeNonLocal : -# 2178| r2178_4(glval<unknown>) = VariableAddress[#this] : -# 2178| mu2178_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2178_4 -# 2178| r2178_6(glval<ClassWithDestructor>) = Load[#this] : &:r2178_4, ~m? -# 2178| mu2178_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2178_6 -# 2178| r2178_8(glval<char>) = VariableAddress[y] : -# 2178| mu2178_9(char) = InitializeParameter[y] : &:r2178_8 -# 2178| r2178_10(glval<char>) = VariableAddress[y] : -# 2178| r2178_11(char) = Load[y] : &:r2178_10, ~m? -# 2178| r2178_12(glval<unknown>) = VariableAddress[#this] : -# 2178| r2178_13(ClassWithDestructor *) = Load[#this] : &:r2178_12, ~m? -# 2178| r2178_14(glval<char *>) = FieldAddress[x] : r2178_13 -# 2178| r2178_15(char *) = Load[?] : &:r2178_14, ~m? -# 2178| r2178_16(glval<char>) = CopyValue : r2178_15 -# 2178| mu2178_17(char) = Store[?] : &:r2178_16, r2178_11 -# 2178| v2178_18(void) = NoOp : -# 2178| v2178_19(void) = ReturnIndirection[#this] : &:r2178_6, ~m? -# 2178| v2178_20(void) = ReturnVoid : -# 2178| v2178_21(void) = AliasedUse : ~m? -# 2178| v2178_22(void) = ExitFunction : - -# 2179| char ClassWithDestructor::get_x() -# 2179| Block 0 -# 2179| v2179_1(void) = EnterFunction : -# 2179| mu2179_2(unknown) = AliasedDefinition : -# 2179| mu2179_3(unknown) = InitializeNonLocal : -# 2179| r2179_4(glval<unknown>) = VariableAddress[#this] : -# 2179| mu2179_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2179_4 -# 2179| r2179_6(glval<ClassWithDestructor>) = Load[#this] : &:r2179_4, ~m? -# 2179| mu2179_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2179_6 -# 2179| r2179_8(glval<char>) = VariableAddress[#return] : -# 2179| r2179_9(glval<unknown>) = VariableAddress[#this] : -# 2179| r2179_10(ClassWithDestructor *) = Load[#this] : &:r2179_9, ~m? -# 2179| r2179_11(glval<char *>) = FieldAddress[x] : r2179_10 -# 2179| r2179_12(char *) = Load[?] : &:r2179_11, ~m? -# 2179| r2179_13(char) = Load[?] : &:r2179_12, ~m? -# 2179| mu2179_14(char) = Store[#return] : &:r2179_8, r2179_13 -# 2179| v2179_15(void) = ReturnIndirection[#this] : &:r2179_6, ~m? -# 2179| r2179_16(glval<char>) = VariableAddress[#return] : -# 2179| v2179_17(void) = ReturnValue : &:r2179_16, ~m? -# 2179| v2179_18(void) = AliasedUse : ~m? -# 2179| v2179_19(void) = ExitFunction : - -# 2182| bool initialization_with_destructor_bool -# 2182| Block 0 -# 2182| v2182_1(void) = EnterFunction : -# 2182| mu2182_2(unknown) = AliasedDefinition : -# 2182| r2182_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : -# 2182| r2182_4(bool) = Constant[1] : -# 2182| mu2182_5(bool) = Store[initialization_with_destructor_bool] : &:r2182_3, r2182_4 -# 2182| v2182_6(void) = ReturnVoid : -# 2182| v2182_7(void) = AliasedUse : ~m? -# 2182| v2182_8(void) = ExitFunction : - -# 2184| void initialization_with_destructor(bool, char) -# 2184| Block 0 -# 2184| v2184_1(void) = EnterFunction : -# 2184| mu2184_2(unknown) = AliasedDefinition : -# 2184| mu2184_3(unknown) = InitializeNonLocal : -# 2184| r2184_4(glval<bool>) = VariableAddress[b] : -# 2184| mu2184_5(bool) = InitializeParameter[b] : &:r2184_4 -# 2184| r2184_6(glval<char>) = VariableAddress[c] : -# 2184| mu2184_7(char) = InitializeParameter[c] : &:r2184_6 -# 2185| r2185_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2185| mu2185_2(ClassWithDestructor) = Uninitialized[x] : &:r2185_1 -# 2185| r2185_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2185| v2185_4(void) = Call[ClassWithDestructor] : func:r2185_3, this:r2185_1 -# 2185| mu2185_5(unknown) = ^CallSideEffect : ~m? -# 2185| mu2185_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2185_1 -# 2185| r2185_7(glval<bool>) = VariableAddress[b] : -# 2185| r2185_8(bool) = Load[b] : &:r2185_7, ~m? -# 2185| v2185_9(void) = ConditionalBranch : r2185_8 +# 2186| v2186_17(void) = ReturnVoid : +# 2186| v2186_18(void) = AliasedUse : ~m? +# 2186| v2186_19(void) = ExitFunction : + +# 2189| void ClassWithDestructor::ClassWithDestructor() +# 2189| Block 0 +# 2189| v2189_1(void) = EnterFunction : +# 2189| mu2189_2(unknown) = AliasedDefinition : +# 2189| mu2189_3(unknown) = InitializeNonLocal : +# 2189| r2189_4(glval<unknown>) = VariableAddress[#this] : +# 2189| mu2189_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2189_4 +# 2189| r2189_6(glval<ClassWithDestructor>) = Load[#this] : &:r2189_4, ~m? +# 2189| mu2189_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2189_6 +# 2189| r2189_8(glval<unknown>) = FunctionAddress[operator new] : +# 2189| r2189_9(unsigned long) = Constant[1] : +# 2189| r2189_10(void *) = Call[operator new] : func:r2189_8, 0:r2189_9 +# 2189| mu2189_11(unknown) = ^CallSideEffect : ~m? +# 2189| mu2189_12(unknown) = ^InitializeDynamicAllocation : &:r2189_10 +# 2189| r2189_13(char *) = Convert : r2189_10 +# 2189| r2189_14(glval<unknown>) = VariableAddress[#this] : +# 2189| r2189_15(ClassWithDestructor *) = Load[#this] : &:r2189_14, ~m? +# 2189| r2189_16(glval<char *>) = FieldAddress[x] : r2189_15 +# 2189| mu2189_17(char *) = Store[?] : &:r2189_16, r2189_13 +# 2189| v2189_18(void) = NoOp : +# 2189| v2189_19(void) = ReturnIndirection[#this] : &:r2189_6, ~m? +# 2189| v2189_20(void) = ReturnVoid : +# 2189| v2189_21(void) = AliasedUse : ~m? +# 2189| v2189_22(void) = ExitFunction : + +# 2190| void ClassWithDestructor::~ClassWithDestructor() +# 2190| Block 0 +# 2190| v2190_1(void) = EnterFunction : +# 2190| mu2190_2(unknown) = AliasedDefinition : +# 2190| mu2190_3(unknown) = InitializeNonLocal : +# 2190| r2190_4(glval<unknown>) = VariableAddress[#this] : +# 2190| mu2190_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2190_4 +# 2190| r2190_6(glval<ClassWithDestructor>) = Load[#this] : &:r2190_4, ~m? +# 2190| mu2190_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2190_6 +# 2190| r2190_8(glval<unknown>) = FunctionAddress[operator delete] : +# 2190| r2190_9(glval<unknown>) = VariableAddress[#this] : +# 2190| r2190_10(ClassWithDestructor *) = Load[#this] : &:r2190_9, ~m? +# 2190| r2190_11(glval<char *>) = FieldAddress[x] : r2190_10 +# 2190| r2190_12(char *) = Load[?] : &:r2190_11, ~m? +# 2190| v2190_13(void) = Call[operator delete] : func:r2190_8, 0:r2190_12 +# 2190| mu2190_14(unknown) = ^CallSideEffect : ~m? +# 2190| v2190_15(void) = NoOp : +# 2190| v2190_16(void) = ReturnIndirection[#this] : &:r2190_6, ~m? +# 2190| v2190_17(void) = ReturnVoid : +# 2190| v2190_18(void) = AliasedUse : ~m? +# 2190| v2190_19(void) = ExitFunction : + +# 2192| void ClassWithDestructor::set_x(char) +# 2192| Block 0 +# 2192| v2192_1(void) = EnterFunction : +# 2192| mu2192_2(unknown) = AliasedDefinition : +# 2192| mu2192_3(unknown) = InitializeNonLocal : +# 2192| r2192_4(glval<unknown>) = VariableAddress[#this] : +# 2192| mu2192_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2192_4 +# 2192| r2192_6(glval<ClassWithDestructor>) = Load[#this] : &:r2192_4, ~m? +# 2192| mu2192_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2192_6 +# 2192| r2192_8(glval<char>) = VariableAddress[y] : +# 2192| mu2192_9(char) = InitializeParameter[y] : &:r2192_8 +# 2192| r2192_10(glval<char>) = VariableAddress[y] : +# 2192| r2192_11(char) = Load[y] : &:r2192_10, ~m? +# 2192| r2192_12(glval<unknown>) = VariableAddress[#this] : +# 2192| r2192_13(ClassWithDestructor *) = Load[#this] : &:r2192_12, ~m? +# 2192| r2192_14(glval<char *>) = FieldAddress[x] : r2192_13 +# 2192| r2192_15(char *) = Load[?] : &:r2192_14, ~m? +# 2192| r2192_16(glval<char>) = CopyValue : r2192_15 +# 2192| mu2192_17(char) = Store[?] : &:r2192_16, r2192_11 +# 2192| v2192_18(void) = NoOp : +# 2192| v2192_19(void) = ReturnIndirection[#this] : &:r2192_6, ~m? +# 2192| v2192_20(void) = ReturnVoid : +# 2192| v2192_21(void) = AliasedUse : ~m? +# 2192| v2192_22(void) = ExitFunction : + +# 2193| char ClassWithDestructor::get_x() +# 2193| Block 0 +# 2193| v2193_1(void) = EnterFunction : +# 2193| mu2193_2(unknown) = AliasedDefinition : +# 2193| mu2193_3(unknown) = InitializeNonLocal : +# 2193| r2193_4(glval<unknown>) = VariableAddress[#this] : +# 2193| mu2193_5(glval<ClassWithDestructor>) = InitializeParameter[#this] : &:r2193_4 +# 2193| r2193_6(glval<ClassWithDestructor>) = Load[#this] : &:r2193_4, ~m? +# 2193| mu2193_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2193_6 +# 2193| r2193_8(glval<char>) = VariableAddress[#return] : +# 2193| r2193_9(glval<unknown>) = VariableAddress[#this] : +# 2193| r2193_10(ClassWithDestructor *) = Load[#this] : &:r2193_9, ~m? +# 2193| r2193_11(glval<char *>) = FieldAddress[x] : r2193_10 +# 2193| r2193_12(char *) = Load[?] : &:r2193_11, ~m? +# 2193| r2193_13(char) = Load[?] : &:r2193_12, ~m? +# 2193| mu2193_14(char) = Store[#return] : &:r2193_8, r2193_13 +# 2193| v2193_15(void) = ReturnIndirection[#this] : &:r2193_6, ~m? +# 2193| r2193_16(glval<char>) = VariableAddress[#return] : +# 2193| v2193_17(void) = ReturnValue : &:r2193_16, ~m? +# 2193| v2193_18(void) = AliasedUse : ~m? +# 2193| v2193_19(void) = ExitFunction : + +# 2196| bool initialization_with_destructor_bool +# 2196| Block 0 +# 2196| v2196_1(void) = EnterFunction : +# 2196| mu2196_2(unknown) = AliasedDefinition : +# 2196| r2196_3(glval<bool>) = VariableAddress[initialization_with_destructor_bool] : +# 2196| r2196_4(bool) = Constant[1] : +# 2196| mu2196_5(bool) = Store[initialization_with_destructor_bool] : &:r2196_3, r2196_4 +# 2196| v2196_6(void) = ReturnVoid : +# 2196| v2196_7(void) = AliasedUse : ~m? +# 2196| v2196_8(void) = ExitFunction : + +# 2198| void initialization_with_destructor(bool, char) +# 2198| Block 0 +# 2198| v2198_1(void) = EnterFunction : +# 2198| mu2198_2(unknown) = AliasedDefinition : +# 2198| mu2198_3(unknown) = InitializeNonLocal : +# 2198| r2198_4(glval<bool>) = VariableAddress[b] : +# 2198| mu2198_5(bool) = InitializeParameter[b] : &:r2198_4 +# 2198| r2198_6(glval<char>) = VariableAddress[c] : +# 2198| mu2198_7(char) = InitializeParameter[c] : &:r2198_6 +# 2199| r2199_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2199| mu2199_2(ClassWithDestructor) = Uninitialized[x] : &:r2199_1 +# 2199| r2199_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2199| v2199_4(void) = Call[ClassWithDestructor] : func:r2199_3, this:r2199_1 +# 2199| mu2199_5(unknown) = ^CallSideEffect : ~m? +# 2199| mu2199_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2199_1 +# 2199| r2199_7(glval<bool>) = VariableAddress[b] : +# 2199| r2199_8(bool) = Load[b] : &:r2199_7, ~m? +# 2199| v2199_9(void) = ConditionalBranch : r2199_8 #-----| False -> Block 3 #-----| True -> Block 2 -# 2184| Block 1 -# 2184| v2184_8(void) = ReturnVoid : -# 2184| v2184_9(void) = AliasedUse : ~m? -# 2184| v2184_10(void) = ExitFunction : - -# 2186| Block 2 -# 2186| r2186_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2186| r2186_2(glval<unknown>) = FunctionAddress[set_x] : -# 2186| r2186_3(char) = Constant[97] : -# 2186| v2186_4(void) = Call[set_x] : func:r2186_2, this:r2186_1, 0:r2186_3 -# 2186| mu2186_5(unknown) = ^CallSideEffect : ~m? -# 2186| v2186_6(void) = ^IndirectReadSideEffect[-1] : &:r2186_1, ~m? -# 2186| mu2186_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_1 -# 2186| r2186_8(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2186| r2186_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2186| v2186_10(void) = Call[~ClassWithDestructor] : func:r2186_9, this:r2186_8 -# 2186| mu2186_11(unknown) = ^CallSideEffect : ~m? -# 2186| v2186_12(void) = ^IndirectReadSideEffect[-1] : &:r2186_8, ~m? -# 2186| mu2186_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2186_8 +# 2198| Block 1 +# 2198| v2198_8(void) = ReturnVoid : +# 2198| v2198_9(void) = AliasedUse : ~m? +# 2198| v2198_10(void) = ExitFunction : + +# 2200| Block 2 +# 2200| r2200_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2200| r2200_2(glval<unknown>) = FunctionAddress[set_x] : +# 2200| r2200_3(char) = Constant[97] : +# 2200| v2200_4(void) = Call[set_x] : func:r2200_2, this:r2200_1, 0:r2200_3 +# 2200| mu2200_5(unknown) = ^CallSideEffect : ~m? +# 2200| v2200_6(void) = ^IndirectReadSideEffect[-1] : &:r2200_1, ~m? +# 2200| mu2200_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 +# 2200| r2200_8(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2200| r2200_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2200| v2200_10(void) = Call[~ClassWithDestructor] : func:r2200_9, this:r2200_8 +# 2200| mu2200_11(unknown) = ^CallSideEffect : ~m? +# 2200| v2200_12(void) = ^IndirectReadSideEffect[-1] : &:r2200_8, ~m? +# 2200| mu2200_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_8 #-----| Goto -> Block 3 -# 2188| Block 3 -# 2188| r2188_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2188| mu2188_2(ClassWithDestructor) = Uninitialized[x] : &:r2188_1 -# 2188| r2188_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2188| v2188_4(void) = Call[ClassWithDestructor] : func:r2188_3, this:r2188_1 -# 2188| mu2188_5(unknown) = ^CallSideEffect : ~m? -# 2188| mu2188_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2188_1 -# 2188| r2188_7(bool) = Constant[1] : -# 2188| v2188_8(void) = ConditionalBranch : r2188_7 +# 2202| Block 3 +# 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2202| mu2202_2(ClassWithDestructor) = Uninitialized[x] : &: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 +# 2202| r2202_7(bool) = Constant[1] : +# 2202| v2202_8(void) = ConditionalBranch : r2202_7 #-----| False -> Block 6 #-----| True -> Block 4 -# 2189| Block 4 -# 2189| r2189_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2189| r2189_2(glval<unknown>) = FunctionAddress[set_x] : -# 2189| r2189_3(char) = Constant[97] : -# 2189| v2189_4(void) = Call[set_x] : func:r2189_2, this:r2189_1, 0:r2189_3 -# 2189| mu2189_5(unknown) = ^CallSideEffect : ~m? -# 2189| v2189_6(void) = ^IndirectReadSideEffect[-1] : &:r2189_1, ~m? -# 2189| mu2189_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2189_1 +# 2203| Block 4 +# 2203| r2203_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2203| r2203_2(glval<unknown>) = FunctionAddress[set_x] : +# 2203| r2203_3(char) = Constant[97] : +# 2203| v2203_4(void) = Call[set_x] : func:r2203_2, this:r2203_1, 0:r2203_3 +# 2203| mu2203_5(unknown) = ^CallSideEffect : ~m? +# 2203| v2203_6(void) = ^IndirectReadSideEffect[-1] : &:r2203_1, ~m? +# 2203| mu2203_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 #-----| Goto -> Block 6 -# 2189| Block 5 -# 2189| r2189_8(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2189| r2189_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2189| v2189_10(void) = Call[~ClassWithDestructor] : func:r2189_9, this:r2189_8 -# 2189| mu2189_11(unknown) = ^CallSideEffect : ~m? -# 2189| v2189_12(void) = ^IndirectReadSideEffect[-1] : &:r2189_8, ~m? -# 2189| mu2189_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2189_8 +# 2203| Block 5 +# 2203| r2203_8(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2203| r2203_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2203| v2203_10(void) = Call[~ClassWithDestructor] : func:r2203_9, this:r2203_8 +# 2203| mu2203_11(unknown) = ^CallSideEffect : ~m? +# 2203| v2203_12(void) = ^IndirectReadSideEffect[-1] : &:r2203_8, ~m? +# 2203| mu2203_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_8 #-----| Goto -> Block 6 -# 2191| Block 6 -# 2191| r2191_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2191| mu2191_2(ClassWithDestructor) = Uninitialized[x] : &:r2191_1 -# 2191| r2191_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2191| v2191_4(void) = Call[ClassWithDestructor] : func:r2191_3, this:r2191_1 -# 2191| mu2191_5(unknown) = ^CallSideEffect : ~m? -# 2191| mu2191_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2191_1 -# 2191| r2191_7(glval<char>) = VariableAddress[c] : -# 2191| r2191_8(char) = Load[c] : &:r2191_7, ~m? -# 2191| r2191_9(int) = Convert : r2191_8 -# 2191| v2191_10(void) = Switch : r2191_9 +# 2205| Block 6 +# 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2205| mu2205_2(ClassWithDestructor) = Uninitialized[x] : &:r2205_1 +# 2205| r2205_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2205| v2205_4(void) = Call[ClassWithDestructor] : func:r2205_3, this:r2205_1 +# 2205| mu2205_5(unknown) = ^CallSideEffect : ~m? +# 2205| mu2205_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 +# 2205| r2205_7(glval<char>) = VariableAddress[c] : +# 2205| r2205_8(char) = Load[c] : &:r2205_7, ~m? +# 2205| r2205_9(int) = Convert : r2205_8 +# 2205| v2205_10(void) = Switch : r2205_9 #-----| Case[97] -> Block 7 #-----| Default -> Block 8 -# 2192| Block 7 -# 2192| v2192_1(void) = NoOp : -# 2193| r2193_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2193| r2193_2(glval<unknown>) = FunctionAddress[set_x] : -# 2193| r2193_3(char) = Constant[97] : -# 2193| v2193_4(void) = Call[set_x] : func:r2193_2, this:r2193_1, 0:r2193_3 -# 2193| mu2193_5(unknown) = ^CallSideEffect : ~m? -# 2193| v2193_6(void) = ^IndirectReadSideEffect[-1] : &:r2193_1, ~m? -# 2193| mu2193_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2193_1 -# 2194| v2194_1(void) = NoOp : +# 2206| Block 7 +# 2206| v2206_1(void) = NoOp : +# 2207| r2207_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2207| r2207_2(glval<unknown>) = FunctionAddress[set_x] : +# 2207| r2207_3(char) = Constant[97] : +# 2207| v2207_4(void) = Call[set_x] : func:r2207_2, this:r2207_1, 0:r2207_3 +# 2207| mu2207_5(unknown) = ^CallSideEffect : ~m? +# 2207| v2207_6(void) = ^IndirectReadSideEffect[-1] : &:r2207_1, ~m? +# 2207| mu2207_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2207_1 +# 2208| v2208_1(void) = NoOp : #-----| Goto -> Block 10 -# 2195| Block 8 -# 2195| v2195_1(void) = NoOp : -# 2196| r2196_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2196| r2196_2(glval<unknown>) = FunctionAddress[set_x] : -# 2196| r2196_3(char) = Constant[98] : -# 2196| v2196_4(void) = Call[set_x] : func:r2196_2, this:r2196_1, 0:r2196_3 -# 2196| mu2196_5(unknown) = ^CallSideEffect : ~m? -# 2196| v2196_6(void) = ^IndirectReadSideEffect[-1] : &:r2196_1, ~m? -# 2196| mu2196_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2196_1 -# 2197| v2197_1(void) = NoOp : +# 2209| Block 8 +# 2209| v2209_1(void) = NoOp : +# 2210| r2210_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2210| r2210_2(glval<unknown>) = FunctionAddress[set_x] : +# 2210| r2210_3(char) = Constant[98] : +# 2210| v2210_4(void) = Call[set_x] : func:r2210_2, this:r2210_1, 0:r2210_3 +# 2210| mu2210_5(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_6(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, ~m? +# 2210| mu2210_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 +# 2211| v2211_1(void) = NoOp : #-----| Goto -> Block 10 -# 2198| Block 9 -# 2198| r2198_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2198| r2198_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2198| v2198_3(void) = Call[~ClassWithDestructor] : func:r2198_2, this:r2198_1 -# 2198| mu2198_4(unknown) = ^CallSideEffect : ~m? -# 2198| v2198_5(void) = ^IndirectReadSideEffect[-1] : &:r2198_1, ~m? -# 2198| mu2198_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2198_1 +# 2212| Block 9 +# 2212| r2212_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2212| r2212_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2212| v2212_3(void) = Call[~ClassWithDestructor] : func:r2212_2, this:r2212_1 +# 2212| mu2212_4(unknown) = ^CallSideEffect : ~m? +# 2212| v2212_5(void) = ^IndirectReadSideEffect[-1] : &:r2212_1, ~m? +# 2212| mu2212_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2212_1 #-----| Goto -> Block 10 -# 2198| Block 10 -# 2198| v2198_7(void) = NoOp : -# 2200| r2200_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2200| mu2200_2(ClassWithDestructor) = Uninitialized[x] : &:r2200_1 -# 2200| r2200_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2200| v2200_4(void) = Call[ClassWithDestructor] : func:r2200_3, this:r2200_1 -# 2200| mu2200_5(unknown) = ^CallSideEffect : ~m? -# 2200| mu2200_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 -# 2201| r2201_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2201| mu2201_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2201_1 -# 2201| r2201_3(glval<unknown>) = FunctionAddress[vector] : -# 2201| r2201_4(glval<ClassWithDestructor>) = VariableAddress[#temp2201:45] : -# 2201| r2201_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2201| r2201_6(ClassWithDestructor) = Load[x] : &:r2201_5, ~m? -# 2201| mu2201_7(ClassWithDestructor) = Store[#temp2201:45] : &:r2201_4, r2201_6 -# 2201| r2201_8(ClassWithDestructor) = Load[#temp2201:45] : &:r2201_4, ~m? -# 2201| v2201_9(void) = Call[vector] : func:r2201_3, this:r2201_1, 0:r2201_8 -# 2201| mu2201_10(unknown) = ^CallSideEffect : ~m? -# 2201| mu2201_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 -# 2201| r2201_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2201| r2201_14(vector<ClassWithDestructor> &) = CopyValue : r2201_13 -# 2201| mu2201_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2201_12, r2201_14 -# 2201| r2201_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2201| r2201_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_17, ~m? -#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_18 +# 2212| Block 10 +# 2212| v2212_7(void) = NoOp : +# 2214| r2214_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2214| mu2214_2(ClassWithDestructor) = Uninitialized[x] : &:r2214_1 +# 2214| r2214_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2214| v2214_4(void) = Call[ClassWithDestructor] : func:r2214_3, this:r2214_1 +# 2214| mu2214_5(unknown) = ^CallSideEffect : ~m? +# 2214| mu2214_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2214_1 +# 2215| r2215_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| mu2215_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2215_1 +# 2215| r2215_3(glval<unknown>) = FunctionAddress[vector] : +# 2215| r2215_4(glval<ClassWithDestructor>) = VariableAddress[#temp2215:45] : +# 2215| r2215_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2215| r2215_6(ClassWithDestructor) = Load[x] : &:r2215_5, ~m? +# 2215| mu2215_7(ClassWithDestructor) = Store[#temp2215:45] : &:r2215_4, r2215_6 +# 2215| r2215_8(ClassWithDestructor) = Load[#temp2215:45] : &:r2215_4, ~m? +# 2215| v2215_9(void) = Call[vector] : func:r2215_3, this:r2215_1, 0:r2215_8 +# 2215| mu2215_10(unknown) = ^CallSideEffect : ~m? +# 2215| mu2215_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 +# 2215| r2215_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| r2215_14(vector<ClassWithDestructor> &) = CopyValue : r2215_13 +# 2215| mu2215_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2215_12, r2215_14 +# 2215| r2215_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_17, ~m? +#-----| r0_1(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_18 #-----| r0_2(glval<vector<ClassWithDestructor>>) = Convert : r0_1 -# 2201| r2201_19(glval<unknown>) = FunctionAddress[begin] : -# 2201| r2201_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2201_19, this:r0_2 +# 2215| r2215_19(glval<unknown>) = FunctionAddress[begin] : +# 2215| r2215_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_19, this:r0_2 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2201| mu2201_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2201_16, r2201_20 -# 2201| r2201_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2201| r2201_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2201| r2201_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2201_23, ~m? -#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2201_24 +# 2215| mu2215_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_16, r2215_20 +# 2215| r2215_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2215| r2215_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2215| r2215_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_23, ~m? +#-----| r0_4(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_24 #-----| r0_5(glval<vector<ClassWithDestructor>>) = Convert : r0_4 -# 2201| r2201_25(glval<unknown>) = FunctionAddress[end] : -# 2201| r2201_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2201_25, this:r0_5 +# 2215| r2215_25(glval<unknown>) = FunctionAddress[end] : +# 2215| r2215_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_25, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2201| mu2201_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2201_22, r2201_26 +# 2215| mu2215_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_22, r2215_26 #-----| Goto -> Block 11 -# 2201| Block 11 -# 2201| r2201_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_28 -# 2201| r2201_29(glval<unknown>) = FunctionAddress[operator!=] : +# 2215| Block 11 +# 2215| r2215_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_28 +# 2215| r2215_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2201| r2201_30(glval<unknown>) = FunctionAddress[iterator] : -# 2201| r2201_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_31 +# 2215| r2215_30(glval<unknown>) = FunctionAddress[iterator] : +# 2215| r2215_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_31 #-----| r0_11(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_10 -# 2201| v2201_32(void) = Call[iterator] : func:r2201_30, this:r0_8, 0:r0_11 -# 2201| mu2201_33(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_32(void) = Call[iterator] : func:r2215_30, this:r0_8, 0:r0_11 +# 2215| mu2215_33(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2201| mu2201_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2215| mu2215_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_8, ~m? -# 2201| r2201_35(bool) = Call[operator!=] : func:r2201_29, this:r0_7, 0:r0_13 -# 2201| mu2201_36(unknown) = ^CallSideEffect : ~m? +# 2215| r2215_35(bool) = Call[operator!=] : func:r2215_29, this:r0_7, 0:r0_13 +# 2215| mu2215_36(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2201| v2201_37(void) = ConditionalBranch : r2201_35 +# 2215| v2215_37(void) = ConditionalBranch : r2215_35 #-----| False -> Block 14 #-----| True -> Block 12 -# 2201| Block 12 -# 2201| r2201_38(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2201_39 -# 2201| r2201_40(glval<unknown>) = FunctionAddress[operator*] : -# 2201| r2201_41(ClassWithDestructor &) = Call[operator*] : func:r2201_40, this:r0_15 -# 2201| mu2201_42(unknown) = ^CallSideEffect : ~m? +# 2215| Block 12 +# 2215| r2215_38(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_39 +# 2215| r2215_40(glval<unknown>) = FunctionAddress[operator*] : +# 2215| r2215_41(ClassWithDestructor &) = Call[operator*] : func:r2215_40, this:r0_15 +# 2215| mu2215_42(unknown) = ^CallSideEffect : ~m? #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2201| r2201_43(ClassWithDestructor) = Load[?] : &:r2201_41, ~m? -# 2201| mu2201_44(ClassWithDestructor) = Store[y] : &:r2201_38, r2201_43 -# 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2202| r2202_2(glval<unknown>) = FunctionAddress[set_x] : -# 2202| r2202_3(char) = Constant[97] : -# 2202| v2202_4(void) = Call[set_x] : func:r2202_2, this:r2202_1, 0:r2202_3 -# 2202| mu2202_5(unknown) = ^CallSideEffect : ~m? -# 2202| v2202_6(void) = ^IndirectReadSideEffect[-1] : &:r2202_1, ~m? -# 2202| mu2202_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 -# 2201| r2201_45(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2201| r2201_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2201| v2201_47(void) = Call[~ClassWithDestructor] : func:r2201_46, this:r2201_45 -# 2201| mu2201_48(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_49(void) = ^IndirectReadSideEffect[-1] : &:r2201_45, ~m? -# 2201| mu2201_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_45 -# 2201| r2201_51(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2201| r2201_52(glval<unknown>) = FunctionAddress[operator++] : -# 2201| r2201_53(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2201_52, this:r2201_51 -# 2201| mu2201_54(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_55(void) = ^IndirectReadSideEffect[-1] : &:r2201_51, ~m? -# 2201| mu2201_56(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_51 -# 2201| r2201_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2201_53 +# 2215| r2215_43(ClassWithDestructor) = Load[?] : &:r2215_41, ~m? +# 2215| mu2215_44(ClassWithDestructor) = Store[y] : &:r2215_38, r2215_43 +# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2216| r2216_2(glval<unknown>) = FunctionAddress[set_x] : +# 2216| r2216_3(char) = Constant[97] : +# 2216| v2216_4(void) = Call[set_x] : func:r2216_2, this:r2216_1, 0:r2216_3 +# 2216| mu2216_5(unknown) = ^CallSideEffect : ~m? +# 2216| v2216_6(void) = ^IndirectReadSideEffect[-1] : &:r2216_1, ~m? +# 2216| mu2216_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 +# 2215| r2215_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2215| r2215_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_47(void) = Call[~ClassWithDestructor] : func:r2215_46, this:r2215_45 +# 2215| mu2215_48(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_49(void) = ^IndirectReadSideEffect[-1] : &:r2215_45, ~m? +# 2215| mu2215_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_45 +# 2215| r2215_51(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2215| r2215_52(glval<unknown>) = FunctionAddress[operator++] : +# 2215| r2215_53(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_52, this:r2215_51 +# 2215| mu2215_54(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_55(void) = ^IndirectReadSideEffect[-1] : &:r2215_51, ~m? +# 2215| mu2215_56(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_51 +# 2215| r2215_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_53 #-----| Goto (back edge) -> Block 11 -# 2201| Block 13 -# 2201| r2201_58(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2201| r2201_59(glval<unknown>) = FunctionAddress[~vector] : -# 2201| v2201_60(void) = Call[~vector] : func:r2201_59, this:r2201_58 -# 2201| mu2201_61(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_62(void) = ^IndirectReadSideEffect[-1] : &:r2201_58, ~m? -# 2201| mu2201_63(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2201_58 +# 2215| Block 13 +# 2215| r2215_58(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2215| r2215_59(glval<unknown>) = FunctionAddress[~vector] : +# 2215| v2215_60(void) = Call[~vector] : func:r2215_59, this:r2215_58 +# 2215| mu2215_61(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_62(void) = ^IndirectReadSideEffect[-1] : &:r2215_58, ~m? +# 2215| mu2215_63(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_58 #-----| Goto -> Block 14 -# 2204| Block 14 -# 2204| r2204_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| mu2204_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2204_1 -# 2204| r2204_3(glval<unknown>) = FunctionAddress[vector] : -# 2204| r2204_4(glval<ClassWithDestructor>) = VariableAddress[#temp2204:45] : -# 2204| r2204_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2204| r2204_6(ClassWithDestructor) = Load[x] : &:r2204_5, ~m? -# 2204| mu2204_7(ClassWithDestructor) = Store[#temp2204:45] : &:r2204_4, r2204_6 -# 2204| r2204_8(ClassWithDestructor) = Load[#temp2204:45] : &:r2204_4, ~m? -# 2204| v2204_9(void) = Call[vector] : func:r2204_3, this:r2204_1, 0:r2204_8 -# 2204| mu2204_10(unknown) = ^CallSideEffect : ~m? -# 2204| mu2204_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 -# 2204| r2204_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_14(vector<ClassWithDestructor> &) = CopyValue : r2204_13 -# 2204| mu2204_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2204_12, r2204_14 -# 2204| r2204_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2204| r2204_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_17, ~m? -#-----| r0_17(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_18 +# 2218| Block 14 +# 2218| r2218_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2218| mu2218_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2218_1 +# 2218| r2218_3(glval<unknown>) = FunctionAddress[vector] : +# 2218| r2218_4(glval<ClassWithDestructor>) = VariableAddress[#temp2218:45] : +# 2218| r2218_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2218| r2218_6(ClassWithDestructor) = Load[x] : &:r2218_5, ~m? +# 2218| mu2218_7(ClassWithDestructor) = Store[#temp2218:45] : &:r2218_4, r2218_6 +# 2218| r2218_8(ClassWithDestructor) = Load[#temp2218:45] : &:r2218_4, ~m? +# 2218| v2218_9(void) = Call[vector] : func:r2218_3, this:r2218_1, 0:r2218_8 +# 2218| mu2218_10(unknown) = ^CallSideEffect : ~m? +# 2218| mu2218_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 +# 2218| r2218_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2218| r2218_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2218| r2218_14(vector<ClassWithDestructor> &) = CopyValue : r2218_13 +# 2218| mu2218_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2218_12, r2218_14 +# 2218| r2218_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2218| r2218_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2218| r2218_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2218_17, ~m? +#-----| r0_17(glval<vector<ClassWithDestructor>>) = CopyValue : r2218_18 #-----| r0_18(glval<vector<ClassWithDestructor>>) = Convert : r0_17 -# 2204| r2204_19(glval<unknown>) = FunctionAddress[begin] : -# 2204| r2204_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2204_19, this:r0_18 +# 2218| r2218_19(glval<unknown>) = FunctionAddress[begin] : +# 2218| r2218_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2218_19, this:r0_18 #-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m? -# 2204| mu2204_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2204_16, r2204_20 -# 2204| r2204_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2204| r2204_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2204| r2204_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2204_23, ~m? -#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2204_24 +# 2218| mu2218_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2218_16, r2218_20 +# 2218| r2218_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2218| r2218_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2218| r2218_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2218_23, ~m? +#-----| r0_20(glval<vector<ClassWithDestructor>>) = CopyValue : r2218_24 #-----| r0_21(glval<vector<ClassWithDestructor>>) = Convert : r0_20 -# 2204| r2204_25(glval<unknown>) = FunctionAddress[end] : -# 2204| r2204_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2204_25, this:r0_21 +# 2218| r2218_25(glval<unknown>) = FunctionAddress[end] : +# 2218| r2218_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2218_25, this:r0_21 #-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? -# 2204| mu2204_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2204_22, r2204_26 +# 2218| mu2218_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2218_22, r2218_26 #-----| Goto -> Block 15 -# 2204| Block 15 -# 2204| r2204_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_28 -# 2204| r2204_29(glval<unknown>) = FunctionAddress[operator!=] : +# 2218| Block 15 +# 2218| r2218_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_23(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_28 +# 2218| r2218_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_24(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| mu0_25(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_24 -# 2204| r2204_30(glval<unknown>) = FunctionAddress[iterator] : -# 2204| r2204_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_31 +# 2218| r2218_30(glval<unknown>) = FunctionAddress[iterator] : +# 2218| r2218_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_26(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_31 #-----| r0_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_26 -# 2204| v2204_32(void) = Call[iterator] : func:r2204_30, this:r0_24, 0:r0_27 -# 2204| mu2204_33(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_32(void) = Call[iterator] : func:r2218_30, this:r0_24, 0:r0_27 +# 2218| mu2218_33(unknown) = ^CallSideEffect : ~m? #-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m? -# 2204| mu2204_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 +# 2218| mu2218_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 #-----| r0_29(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_24, ~m? -# 2204| r2204_35(bool) = Call[operator!=] : func:r2204_29, this:r0_23, 0:r0_29 -# 2204| mu2204_36(unknown) = ^CallSideEffect : ~m? +# 2218| r2218_35(bool) = Call[operator!=] : func:r2218_29, this:r0_23, 0:r0_29 +# 2218| mu2218_36(unknown) = ^CallSideEffect : ~m? #-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, ~m? -# 2204| v2204_37(void) = ConditionalBranch : r2204_35 +# 2218| v2218_37(void) = ConditionalBranch : r2218_35 #-----| False -> Block 20 #-----| True -> Block 16 -# 2204| Block 16 -# 2204| r2204_38(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2204_39 -# 2204| r2204_40(glval<unknown>) = FunctionAddress[operator*] : -# 2204| r2204_41(ClassWithDestructor &) = Call[operator*] : func:r2204_40, this:r0_31 -# 2204| mu2204_42(unknown) = ^CallSideEffect : ~m? +# 2218| Block 16 +# 2218| r2218_38(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2218| r2218_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2218_39 +# 2218| r2218_40(glval<unknown>) = FunctionAddress[operator*] : +# 2218| r2218_41(ClassWithDestructor &) = Call[operator*] : func:r2218_40, this:r0_31 +# 2218| mu2218_42(unknown) = ^CallSideEffect : ~m? #-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? -# 2204| r2204_43(ClassWithDestructor) = Load[?] : &:r2204_41, ~m? -# 2204| mu2204_44(ClassWithDestructor) = Store[y] : &:r2204_38, r2204_43 -# 2205| r2205_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2205| r2205_2(glval<unknown>) = FunctionAddress[set_x] : -# 2205| r2205_3(char) = Constant[97] : -# 2205| v2205_4(void) = Call[set_x] : func:r2205_2, this:r2205_1, 0:r2205_3 -# 2205| mu2205_5(unknown) = ^CallSideEffect : ~m? -# 2205| v2205_6(void) = ^IndirectReadSideEffect[-1] : &:r2205_1, ~m? -# 2205| mu2205_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 -# 2206| r2206_1(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2206| r2206_2(glval<unknown>) = FunctionAddress[get_x] : -# 2206| r2206_3(char) = Call[get_x] : func:r2206_2, this:r2206_1 -# 2206| mu2206_4(unknown) = ^CallSideEffect : ~m? -# 2206| v2206_5(void) = ^IndirectReadSideEffect[-1] : &:r2206_1, ~m? -# 2206| mu2206_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 -# 2206| r2206_7(int) = Convert : r2206_3 -# 2206| r2206_8(int) = Constant[98] : -# 2206| r2206_9(bool) = CompareEQ : r2206_7, r2206_8 -# 2206| v2206_10(void) = ConditionalBranch : r2206_9 +# 2218| r2218_43(ClassWithDestructor) = Load[?] : &:r2218_41, ~m? +# 2218| mu2218_44(ClassWithDestructor) = Store[y] : &:r2218_38, r2218_43 +# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2219| r2219_2(glval<unknown>) = FunctionAddress[set_x] : +# 2219| r2219_3(char) = Constant[97] : +# 2219| v2219_4(void) = Call[set_x] : func:r2219_2, this:r2219_1, 0:r2219_3 +# 2219| mu2219_5(unknown) = ^CallSideEffect : ~m? +# 2219| v2219_6(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, ~m? +# 2219| mu2219_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 +# 2220| r2220_1(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2220| r2220_2(glval<unknown>) = FunctionAddress[get_x] : +# 2220| r2220_3(char) = Call[get_x] : func:r2220_2, this:r2220_1 +# 2220| mu2220_4(unknown) = ^CallSideEffect : ~m? +# 2220| v2220_5(void) = ^IndirectReadSideEffect[-1] : &:r2220_1, ~m? +# 2220| mu2220_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2220_1 +# 2220| r2220_7(int) = Convert : r2220_3 +# 2220| r2220_8(int) = Constant[98] : +# 2220| r2220_9(bool) = CompareEQ : r2220_7, r2220_8 +# 2220| v2220_10(void) = ConditionalBranch : r2220_9 #-----| False -> Block 18 #-----| True -> Block 17 -# 2207| Block 17 -# 2207| v2207_1(void) = NoOp : -# 2204| r2204_45(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_47(void) = Call[~ClassWithDestructor] : func:r2204_46, this:r2204_45 -# 2204| mu2204_48(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_49(void) = ^IndirectReadSideEffect[-1] : &:r2204_45, ~m? -# 2204| mu2204_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_45 -# 2204| r2204_51(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_52(glval<unknown>) = FunctionAddress[~vector] : -# 2204| v2204_53(void) = Call[~vector] : func:r2204_52, this:r2204_51 -# 2204| mu2204_54(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_55(void) = ^IndirectReadSideEffect[-1] : &:r2204_51, ~m? -# 2204| mu2204_56(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_51 -# 2219| r2219_1(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2219| r2219_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_3(void) = Call[~ClassWithDestructor] : func:r2219_2, this:r2219_1 -# 2219| mu2219_4(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_5(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, ~m? -# 2219| mu2219_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 +# 2221| Block 17 +# 2221| v2221_1(void) = NoOp : +# 2218| r2218_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2218| r2218_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_47(void) = Call[~ClassWithDestructor] : func:r2218_46, this:r2218_45 +# 2218| mu2218_48(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_49(void) = ^IndirectReadSideEffect[-1] : &:r2218_45, ~m? +# 2218| mu2218_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_45 +# 2218| r2218_51(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2218| r2218_52(glval<unknown>) = FunctionAddress[~vector] : +# 2218| v2218_53(void) = Call[~vector] : func:r2218_52, this:r2218_51 +# 2218| mu2218_54(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_55(void) = ^IndirectReadSideEffect[-1] : &:r2218_51, ~m? +# 2218| mu2218_56(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_51 +# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2233| r2233_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2233| v2233_3(void) = Call[~ClassWithDestructor] : func:r2233_2, this:r2233_1 +# 2233| mu2233_4(unknown) = ^CallSideEffect : ~m? +# 2233| v2233_5(void) = ^IndirectReadSideEffect[-1] : &:r2233_1, ~m? +# 2233| mu2233_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 #-----| Goto -> Block 1 -# 2204| Block 18 -# 2204| r2204_57(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2204| r2204_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_59(void) = Call[~ClassWithDestructor] : func:r2204_58, this:r2204_57 -# 2204| mu2204_60(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_61(void) = ^IndirectReadSideEffect[-1] : &:r2204_57, ~m? -# 2204| mu2204_62(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_57 -# 2204| r2204_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2204| r2204_64(glval<unknown>) = FunctionAddress[operator++] : -# 2204| r2204_65(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2204_64, this:r2204_63 -# 2204| mu2204_66(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_67(void) = ^IndirectReadSideEffect[-1] : &:r2204_63, ~m? -# 2204| mu2204_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_63 -# 2204| r2204_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2204_65 +# 2218| Block 18 +# 2218| r2218_57(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2218| r2218_58(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_59(void) = Call[~ClassWithDestructor] : func:r2218_58, this:r2218_57 +# 2218| mu2218_60(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_61(void) = ^IndirectReadSideEffect[-1] : &:r2218_57, ~m? +# 2218| mu2218_62(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_57 +# 2218| r2218_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2218| r2218_64(glval<unknown>) = FunctionAddress[operator++] : +# 2218| r2218_65(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2218_64, this:r2218_63 +# 2218| mu2218_66(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_67(void) = ^IndirectReadSideEffect[-1] : &:r2218_63, ~m? +# 2218| mu2218_68(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_63 +# 2218| r2218_69(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2218_65 #-----| Goto (back edge) -> Block 15 -# 2204| Block 19 -# 2204| r2204_70(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2204| r2204_71(glval<unknown>) = FunctionAddress[~vector] : -# 2204| v2204_72(void) = Call[~vector] : func:r2204_71, this:r2204_70 -# 2204| mu2204_73(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_74(void) = ^IndirectReadSideEffect[-1] : &:r2204_70, ~m? -# 2204| mu2204_75(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2204_70 +# 2218| Block 19 +# 2218| r2218_70(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2218| r2218_71(glval<unknown>) = FunctionAddress[~vector] : +# 2218| v2218_72(void) = Call[~vector] : func:r2218_71, this:r2218_70 +# 2218| mu2218_73(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_74(void) = ^IndirectReadSideEffect[-1] : &:r2218_70, ~m? +# 2218| mu2218_75(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2218_70 #-----| Goto -> Block 20 -# 2210| Block 20 -# 2210| r2210_1(glval<vector<int>>) = VariableAddress[ys] : -# 2210| mu2210_2(vector<int>) = Uninitialized[ys] : &:r2210_1 -# 2210| r2210_3(glval<unknown>) = FunctionAddress[vector] : -# 2210| r2210_4(int) = Constant[1] : -# 2210| v2210_5(void) = Call[vector] : func:r2210_3, this:r2210_1, 0:r2210_4 -# 2210| mu2210_6(unknown) = ^CallSideEffect : ~m? -# 2210| mu2210_7(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 -# 2210| r2210_8(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_9(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_10(vector<int> &) = CopyValue : r2210_9 -# 2210| mu2210_11(vector<int> &) = Store[(__range)] : &:r2210_8, r2210_10 -# 2210| r2210_12(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 2210| r2210_13(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_14(vector<int> &) = Load[(__range)] : &:r2210_13, ~m? -#-----| r0_33(glval<vector<int>>) = CopyValue : r2210_14 +# 2224| Block 20 +# 2224| r2224_1(glval<vector<int>>) = VariableAddress[ys] : +# 2224| mu2224_2(vector<int>) = Uninitialized[ys] : &:r2224_1 +# 2224| r2224_3(glval<unknown>) = FunctionAddress[vector] : +# 2224| r2224_4(int) = Constant[1] : +# 2224| v2224_5(void) = Call[vector] : func:r2224_3, this:r2224_1, 0:r2224_4 +# 2224| mu2224_6(unknown) = ^CallSideEffect : ~m? +# 2224| mu2224_7(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_1 +# 2224| r2224_8(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2224| r2224_9(glval<vector<int>>) = VariableAddress[ys] : +# 2224| r2224_10(vector<int> &) = CopyValue : r2224_9 +# 2224| mu2224_11(vector<int> &) = Store[(__range)] : &:r2224_8, r2224_10 +# 2224| r2224_12(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2224| r2224_13(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2224| r2224_14(vector<int> &) = Load[(__range)] : &:r2224_13, ~m? +#-----| r0_33(glval<vector<int>>) = CopyValue : r2224_14 #-----| r0_34(glval<vector<int>>) = Convert : r0_33 -# 2210| r2210_15(glval<unknown>) = FunctionAddress[begin] : -# 2210| r2210_16(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2210_15, this:r0_34 +# 2224| r2224_15(glval<unknown>) = FunctionAddress[begin] : +# 2224| r2224_16(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[begin] : func:r2224_15, this:r0_34 #-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? -# 2210| mu2210_17(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2210_12, r2210_16 -# 2210| r2210_18(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -# 2210| r2210_19(glval<vector<int> &>) = VariableAddress[(__range)] : -# 2210| r2210_20(vector<int> &) = Load[(__range)] : &:r2210_19, ~m? -#-----| r0_36(glval<vector<int>>) = CopyValue : r2210_20 +# 2224| mu2224_17(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__begin)] : &:r2224_12, r2224_16 +# 2224| r2224_18(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +# 2224| r2224_19(glval<vector<int> &>) = VariableAddress[(__range)] : +# 2224| r2224_20(vector<int> &) = Load[(__range)] : &:r2224_19, ~m? +#-----| r0_36(glval<vector<int>>) = CopyValue : r2224_20 #-----| r0_37(glval<vector<int>>) = Convert : r0_36 -# 2210| r2210_21(glval<unknown>) = FunctionAddress[end] : -# 2210| r2210_22(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2210_21, this:r0_37 +# 2224| r2224_21(glval<unknown>) = FunctionAddress[end] : +# 2224| r2224_22(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Call[end] : func:r2224_21, this:r0_37 #-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m? -# 2210| mu2210_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2210_18, r2210_22 +# 2224| mu2224_23(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Store[(__end)] : &:r2224_18, r2224_22 #-----| Goto -> Block 21 -# 2210| Block 21 -# 2210| r2210_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_24 -# 2210| r2210_25(glval<unknown>) = FunctionAddress[operator!=] : +# 2224| Block 21 +# 2224| r2224_24(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_39(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_24 +# 2224| r2224_25(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[#temp0:0] : #-----| mu0_41(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Uninitialized[#temp0:0] : &:r0_40 -# 2210| r2210_26(glval<unknown>) = FunctionAddress[iterator] : -# 2210| r2210_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : -#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_27 +# 2224| r2224_26(glval<unknown>) = FunctionAddress[iterator] : +# 2224| r2224_27(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__end)] : +#-----| r0_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_27 #-----| r0_43(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = CopyValue : r0_42 -# 2210| v2210_28(void) = Call[iterator] : func:r2210_26, this:r0_40, 0:r0_43 -# 2210| mu2210_29(unknown) = ^CallSideEffect : ~m? +# 2224| v2224_28(void) = Call[iterator] : func:r2224_26, this:r0_40, 0:r0_43 +# 2224| mu2224_29(unknown) = ^CallSideEffect : ~m? #-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m? -# 2210| mu2210_30(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 +# 2224| mu2224_30(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 #-----| r0_45(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = Load[#temp0:0] : &:r0_40, ~m? -# 2210| r2210_31(bool) = Call[operator!=] : func:r2210_25, this:r0_39, 0:r0_45 -# 2210| mu2210_32(unknown) = ^CallSideEffect : ~m? +# 2224| r2224_31(bool) = Call[operator!=] : func:r2224_25, this:r0_39, 0:r0_45 +# 2224| mu2224_32(unknown) = ^CallSideEffect : ~m? #-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m? -# 2210| v2210_33(void) = ConditionalBranch : r2210_31 +# 2224| v2224_33(void) = ConditionalBranch : r2224_31 #-----| False -> Block 26 #-----| True -> Block 23 -# 2210| Block 22 -# 2210| r2210_34(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -# 2210| r2210_35(glval<unknown>) = FunctionAddress[operator++] : -# 2210| r2210_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2210_35, this:r2210_34 -# 2210| mu2210_37(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_38(void) = ^IndirectReadSideEffect[-1] : &:r2210_34, ~m? -# 2210| mu2210_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_34 -# 2210| r2210_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2210_36 +# 2224| Block 22 +# 2224| r2224_34(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +# 2224| r2224_35(glval<unknown>) = FunctionAddress[operator++] : +# 2224| r2224_36(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &> &) = Call[operator++] : func:r2224_35, this:r2224_34 +# 2224| mu2224_37(unknown) = ^CallSideEffect : ~m? +# 2224| v2224_38(void) = ^IndirectReadSideEffect[-1] : &:r2224_34, ~m? +# 2224| mu2224_39(iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_34 +# 2224| r2224_40(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = CopyValue : r2224_36 #-----| Goto (back edge) -> Block 21 -# 2210| Block 23 -# 2210| r2210_41(glval<int>) = VariableAddress[y] : -# 2210| r2210_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : -#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2210_42 -# 2210| r2210_43(glval<unknown>) = FunctionAddress[operator*] : -# 2210| r2210_44(int &) = Call[operator*] : func:r2210_43, this:r0_47 -# 2210| mu2210_45(unknown) = ^CallSideEffect : ~m? +# 2224| Block 23 +# 2224| r2224_41(glval<int>) = VariableAddress[y] : +# 2224| r2224_42(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = VariableAddress[(__begin)] : +#-----| r0_47(glval<iterator<random_access_iterator_tag, int, ptrdiff_t, int *, int &>>) = Convert : r2224_42 +# 2224| r2224_43(glval<unknown>) = FunctionAddress[operator*] : +# 2224| r2224_44(int &) = Call[operator*] : func:r2224_43, this:r0_47 +# 2224| mu2224_45(unknown) = ^CallSideEffect : ~m? #-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, ~m? -# 2210| r2210_46(int) = Load[?] : &:r2210_44, ~m? -# 2210| mu2210_47(int) = Store[y] : &:r2210_41, r2210_46 -# 2211| r2211_1(glval<int>) = VariableAddress[y] : -# 2211| r2211_2(int) = Load[y] : &:r2211_1, ~m? -# 2211| r2211_3(int) = Constant[1] : -# 2211| r2211_4(bool) = CompareEQ : r2211_2, r2211_3 -# 2211| v2211_5(void) = ConditionalBranch : r2211_4 +# 2224| r2224_46(int) = Load[?] : &:r2224_44, ~m? +# 2224| mu2224_47(int) = Store[y] : &:r2224_41, r2224_46 +# 2225| r2225_1(glval<int>) = VariableAddress[y] : +# 2225| r2225_2(int) = Load[y] : &:r2225_1, ~m? +# 2225| r2225_3(int) = Constant[1] : +# 2225| r2225_4(bool) = CompareEQ : r2225_2, r2225_3 +# 2225| v2225_5(void) = ConditionalBranch : r2225_4 #-----| False -> Block 22 #-----| True -> Block 24 -# 2212| Block 24 -# 2212| v2212_1(void) = NoOp : -# 2210| r2210_48(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_49(glval<unknown>) = FunctionAddress[~vector] : -# 2210| v2210_50(void) = Call[~vector] : func:r2210_49, this:r2210_48 -# 2210| mu2210_51(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_52(void) = ^IndirectReadSideEffect[-1] : &:r2210_48, ~m? -# 2210| mu2210_53(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_48 -# 2219| r2219_7(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2219| r2219_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_9(void) = Call[~ClassWithDestructor] : func:r2219_8, this:r2219_7 -# 2219| mu2219_10(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_11(void) = ^IndirectReadSideEffect[-1] : &:r2219_7, ~m? -# 2219| mu2219_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_7 +# 2226| Block 24 +# 2226| v2226_1(void) = NoOp : +# 2224| r2224_48(glval<vector<int>>) = VariableAddress[ys] : +# 2224| r2224_49(glval<unknown>) = FunctionAddress[~vector] : +# 2224| v2224_50(void) = Call[~vector] : func:r2224_49, this:r2224_48 +# 2224| mu2224_51(unknown) = ^CallSideEffect : ~m? +# 2224| v2224_52(void) = ^IndirectReadSideEffect[-1] : &:r2224_48, ~m? +# 2224| mu2224_53(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_48 +# 2233| r2233_7(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2233| r2233_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2233| v2233_9(void) = Call[~ClassWithDestructor] : func:r2233_8, this:r2233_7 +# 2233| mu2233_10(unknown) = ^CallSideEffect : ~m? +# 2233| v2233_11(void) = ^IndirectReadSideEffect[-1] : &:r2233_7, ~m? +# 2233| mu2233_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_7 #-----| Goto -> Block 1 -# 2210| Block 25 -# 2210| r2210_54(glval<vector<int>>) = VariableAddress[ys] : -# 2210| r2210_55(glval<unknown>) = FunctionAddress[~vector] : -# 2210| v2210_56(void) = Call[~vector] : func:r2210_55, this:r2210_54 -# 2210| mu2210_57(unknown) = ^CallSideEffect : ~m? -# 2210| v2210_58(void) = ^IndirectReadSideEffect[-1] : &:r2210_54, ~m? -# 2210| mu2210_59(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2210_54 +# 2224| Block 25 +# 2224| r2224_54(glval<vector<int>>) = VariableAddress[ys] : +# 2224| r2224_55(glval<unknown>) = FunctionAddress[~vector] : +# 2224| v2224_56(void) = Call[~vector] : func:r2224_55, this:r2224_54 +# 2224| mu2224_57(unknown) = ^CallSideEffect : ~m? +# 2224| v2224_58(void) = ^IndirectReadSideEffect[-1] : &:r2224_54, ~m? +# 2224| mu2224_59(vector<int>) = ^IndirectMayWriteSideEffect[-1] : &:r2224_54 #-----| Goto -> Block 26 -# 2215| Block 26 -# 2215| r2215_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2215| mu2215_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2215_1 -# 2215| r2215_3(glval<unknown>) = FunctionAddress[vector] : -# 2215| r2215_4(glval<ClassWithDestructor>) = VariableAddress[#temp2215:45] : -# 2215| r2215_5(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2215| r2215_6(ClassWithDestructor) = Load[x] : &:r2215_5, ~m? -# 2215| mu2215_7(ClassWithDestructor) = Store[#temp2215:45] : &:r2215_4, r2215_6 -# 2215| r2215_8(ClassWithDestructor) = Load[#temp2215:45] : &:r2215_4, ~m? -# 2215| v2215_9(void) = Call[vector] : func:r2215_3, this:r2215_1, 0:r2215_8 -# 2215| mu2215_10(unknown) = ^CallSideEffect : ~m? -# 2215| mu2215_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 -# 2215| r2215_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2215| r2215_14(vector<ClassWithDestructor> &) = CopyValue : r2215_13 -# 2215| mu2215_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2215_12, r2215_14 -# 2215| r2215_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2215| r2215_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_17, ~m? -#-----| r0_49(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_18 +# 2229| Block 26 +# 2229| r2229_1(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2229| mu2229_2(vector<ClassWithDestructor>) = Uninitialized[ys] : &:r2229_1 +# 2229| r2229_3(glval<unknown>) = FunctionAddress[vector] : +# 2229| r2229_4(glval<ClassWithDestructor>) = VariableAddress[#temp2229:45] : +# 2229| r2229_5(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2229| r2229_6(ClassWithDestructor) = Load[x] : &:r2229_5, ~m? +# 2229| mu2229_7(ClassWithDestructor) = Store[#temp2229:45] : &:r2229_4, r2229_6 +# 2229| r2229_8(ClassWithDestructor) = Load[#temp2229:45] : &:r2229_4, ~m? +# 2229| v2229_9(void) = Call[vector] : func:r2229_3, this:r2229_1, 0:r2229_8 +# 2229| mu2229_10(unknown) = ^CallSideEffect : ~m? +# 2229| mu2229_11(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_1 +# 2229| r2229_12(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2229| r2229_13(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2229| r2229_14(vector<ClassWithDestructor> &) = CopyValue : r2229_13 +# 2229| mu2229_15(vector<ClassWithDestructor> &) = Store[(__range)] : &:r2229_12, r2229_14 +# 2229| r2229_16(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2229| r2229_17(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2229| r2229_18(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2229_17, ~m? +#-----| r0_49(glval<vector<ClassWithDestructor>>) = CopyValue : r2229_18 #-----| r0_50(glval<vector<ClassWithDestructor>>) = Convert : r0_49 -# 2215| r2215_19(glval<unknown>) = FunctionAddress[begin] : -# 2215| r2215_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2215_19, this:r0_50 +# 2229| r2229_19(glval<unknown>) = FunctionAddress[begin] : +# 2229| r2229_20(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[begin] : func:r2229_19, this:r0_50 #-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, ~m? -# 2215| mu2215_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2215_16, r2215_20 -# 2215| r2215_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -# 2215| r2215_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : -# 2215| r2215_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2215_23, ~m? -#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2215_24 +# 2229| mu2229_21(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__begin)] : &:r2229_16, r2229_20 +# 2229| r2229_22(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +# 2229| r2229_23(glval<vector<ClassWithDestructor> &>) = VariableAddress[(__range)] : +# 2229| r2229_24(vector<ClassWithDestructor> &) = Load[(__range)] : &:r2229_23, ~m? +#-----| r0_52(glval<vector<ClassWithDestructor>>) = CopyValue : r2229_24 #-----| r0_53(glval<vector<ClassWithDestructor>>) = Convert : r0_52 -# 2215| r2215_25(glval<unknown>) = FunctionAddress[end] : -# 2215| r2215_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2215_25, this:r0_53 +# 2229| r2229_25(glval<unknown>) = FunctionAddress[end] : +# 2229| r2229_26(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Call[end] : func:r2229_25, this:r0_53 #-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, ~m? -# 2215| mu2215_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2215_22, r2215_26 +# 2229| mu2229_27(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Store[(__end)] : &:r2229_22, r2229_26 #-----| Goto -> Block 27 -# 2215| Block 27 -# 2215| r2215_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_28 -# 2215| r2215_29(glval<unknown>) = FunctionAddress[operator!=] : +# 2229| Block 27 +# 2229| r2229_28(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_55(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_28 +# 2229| r2229_29(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_56(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[#temp0:0] : #-----| mu0_57(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Uninitialized[#temp0:0] : &:r0_56 -# 2215| r2215_30(glval<unknown>) = FunctionAddress[iterator] : -# 2215| r2215_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : -#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_31 +# 2229| r2229_30(glval<unknown>) = FunctionAddress[iterator] : +# 2229| r2229_31(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__end)] : +#-----| r0_58(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_31 #-----| r0_59(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = CopyValue : r0_58 -# 2215| v2215_32(void) = Call[iterator] : func:r2215_30, this:r0_56, 0:r0_59 -# 2215| mu2215_33(unknown) = ^CallSideEffect : ~m? +# 2229| v2229_32(void) = Call[iterator] : func:r2229_30, this:r0_56, 0:r0_59 +# 2229| mu2229_33(unknown) = ^CallSideEffect : ~m? #-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m? -# 2215| mu2215_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 +# 2229| mu2229_34(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 #-----| r0_61(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = Load[#temp0:0] : &:r0_56, ~m? -# 2215| r2215_35(bool) = Call[operator!=] : func:r2215_29, this:r0_55, 0:r0_61 -# 2215| mu2215_36(unknown) = ^CallSideEffect : ~m? +# 2229| r2229_35(bool) = Call[operator!=] : func:r2229_29, this:r0_55, 0:r0_61 +# 2229| mu2229_36(unknown) = ^CallSideEffect : ~m? #-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, ~m? -# 2215| v2215_37(void) = ConditionalBranch : r2215_35 +# 2229| v2229_37(void) = ConditionalBranch : r2229_35 #-----| False -> Block 30 #-----| True -> Block 28 -# 2215| Block 28 -# 2215| r2215_38(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2215_39 -# 2215| r2215_40(glval<unknown>) = FunctionAddress[operator*] : -# 2215| r2215_41(ClassWithDestructor &) = Call[operator*] : func:r2215_40, this:r0_63 -# 2215| mu2215_42(unknown) = ^CallSideEffect : ~m? +# 2229| Block 28 +# 2229| r2229_38(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2229| r2229_39(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +#-----| r0_63(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = Convert : r2229_39 +# 2229| r2229_40(glval<unknown>) = FunctionAddress[operator*] : +# 2229| r2229_41(ClassWithDestructor &) = Call[operator*] : func:r2229_40, this:r0_63 +# 2229| mu2229_42(unknown) = ^CallSideEffect : ~m? #-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, ~m? -# 2215| r2215_43(ClassWithDestructor) = Load[?] : &:r2215_41, ~m? -# 2215| mu2215_44(ClassWithDestructor) = Store[y] : &:r2215_38, r2215_43 -# 2216| r2216_1(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2216| mu2216_2(ClassWithDestructor) = Uninitialized[z1] : &:r2216_1 -# 2216| r2216_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2216| v2216_4(void) = Call[ClassWithDestructor] : func:r2216_3, this:r2216_1 -# 2216| mu2216_5(unknown) = ^CallSideEffect : ~m? -# 2216| mu2216_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1 -# 2217| r2217_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2217| mu2217_2(ClassWithDestructor) = Uninitialized[z2] : &:r2217_1 -# 2217| r2217_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2217| v2217_4(void) = Call[ClassWithDestructor] : func:r2217_3, this:r2217_1 -# 2217| mu2217_5(unknown) = ^CallSideEffect : ~m? -# 2217| mu2217_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 -# 2218| r2218_1(glval<ClassWithDestructor>) = VariableAddress[z2] : -# 2218| r2218_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2218| v2218_3(void) = Call[~ClassWithDestructor] : func:r2218_2, this:r2218_1 -# 2218| mu2218_4(unknown) = ^CallSideEffect : ~m? -# 2218| v2218_5(void) = ^IndirectReadSideEffect[-1] : &:r2218_1, ~m? -# 2218| mu2218_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_1 -# 2218| r2218_7(glval<ClassWithDestructor>) = VariableAddress[z1] : -# 2218| r2218_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2218| v2218_9(void) = Call[~ClassWithDestructor] : func:r2218_8, this:r2218_7 -# 2218| mu2218_10(unknown) = ^CallSideEffect : ~m? -# 2218| v2218_11(void) = ^IndirectReadSideEffect[-1] : &:r2218_7, ~m? -# 2218| mu2218_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_7 -# 2215| r2215_45(glval<ClassWithDestructor>) = VariableAddress[y] : -# 2215| r2215_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2215| v2215_47(void) = Call[~ClassWithDestructor] : func:r2215_46, this:r2215_45 -# 2215| mu2215_48(unknown) = ^CallSideEffect : ~m? -# 2215| v2215_49(void) = ^IndirectReadSideEffect[-1] : &:r2215_45, ~m? -# 2215| mu2215_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_45 -# 2215| r2215_51(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : -# 2215| r2215_52(glval<unknown>) = FunctionAddress[operator++] : -# 2215| r2215_53(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2215_52, this:r2215_51 -# 2215| mu2215_54(unknown) = ^CallSideEffect : ~m? -# 2215| v2215_55(void) = ^IndirectReadSideEffect[-1] : &:r2215_51, ~m? -# 2215| mu2215_56(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_51 -# 2215| r2215_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2215_53 +# 2229| r2229_43(ClassWithDestructor) = Load[?] : &:r2229_41, ~m? +# 2229| mu2229_44(ClassWithDestructor) = Store[y] : &:r2229_38, r2229_43 +# 2230| r2230_1(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2230| mu2230_2(ClassWithDestructor) = Uninitialized[z1] : &:r2230_1 +# 2230| r2230_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2230| v2230_4(void) = Call[ClassWithDestructor] : func:r2230_3, this:r2230_1 +# 2230| mu2230_5(unknown) = ^CallSideEffect : ~m? +# 2230| mu2230_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2230_1 +# 2231| r2231_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2231| mu2231_2(ClassWithDestructor) = Uninitialized[z2] : &:r2231_1 +# 2231| r2231_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2231| v2231_4(void) = Call[ClassWithDestructor] : func:r2231_3, this:r2231_1 +# 2231| mu2231_5(unknown) = ^CallSideEffect : ~m? +# 2231| mu2231_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 +# 2232| r2232_1(glval<ClassWithDestructor>) = VariableAddress[z2] : +# 2232| r2232_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_3(void) = Call[~ClassWithDestructor] : func:r2232_2, this:r2232_1 +# 2232| mu2232_4(unknown) = ^CallSideEffect : ~m? +# 2232| v2232_5(void) = ^IndirectReadSideEffect[-1] : &:r2232_1, ~m? +# 2232| mu2232_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 +# 2232| r2232_7(glval<ClassWithDestructor>) = VariableAddress[z1] : +# 2232| r2232_8(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_9(void) = Call[~ClassWithDestructor] : func:r2232_8, this:r2232_7 +# 2232| mu2232_10(unknown) = ^CallSideEffect : ~m? +# 2232| v2232_11(void) = ^IndirectReadSideEffect[-1] : &:r2232_7, ~m? +# 2232| mu2232_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_7 +# 2229| r2229_45(glval<ClassWithDestructor>) = VariableAddress[y] : +# 2229| r2229_46(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2229| v2229_47(void) = Call[~ClassWithDestructor] : func:r2229_46, this:r2229_45 +# 2229| mu2229_48(unknown) = ^CallSideEffect : ~m? +# 2229| v2229_49(void) = ^IndirectReadSideEffect[-1] : &:r2229_45, ~m? +# 2229| mu2229_50(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_45 +# 2229| r2229_51(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = VariableAddress[(__begin)] : +# 2229| r2229_52(glval<unknown>) = FunctionAddress[operator++] : +# 2229| r2229_53(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &> &) = Call[operator++] : func:r2229_52, this:r2229_51 +# 2229| mu2229_54(unknown) = ^CallSideEffect : ~m? +# 2229| v2229_55(void) = ^IndirectReadSideEffect[-1] : &:r2229_51, ~m? +# 2229| mu2229_56(iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_51 +# 2229| r2229_57(glval<iterator<random_access_iterator_tag, ClassWithDestructor, ptrdiff_t, ClassWithDestructor *, ClassWithDestructor &>>) = CopyValue : r2229_53 #-----| Goto (back edge) -> Block 27 -# 2215| Block 29 -# 2215| r2215_58(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : -# 2215| r2215_59(glval<unknown>) = FunctionAddress[~vector] : -# 2215| v2215_60(void) = Call[~vector] : func:r2215_59, this:r2215_58 -# 2215| mu2215_61(unknown) = ^CallSideEffect : ~m? -# 2215| v2215_62(void) = ^IndirectReadSideEffect[-1] : &:r2215_58, ~m? -# 2215| mu2215_63(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2215_58 +# 2229| Block 29 +# 2229| r2229_58(glval<vector<ClassWithDestructor>>) = VariableAddress[ys] : +# 2229| r2229_59(glval<unknown>) = FunctionAddress[~vector] : +# 2229| v2229_60(void) = Call[~vector] : func:r2229_59, this:r2229_58 +# 2229| mu2229_61(unknown) = ^CallSideEffect : ~m? +# 2229| v2229_62(void) = ^IndirectReadSideEffect[-1] : &:r2229_58, ~m? +# 2229| mu2229_63(vector<ClassWithDestructor>) = ^IndirectMayWriteSideEffect[-1] : &:r2229_58 #-----| Goto -> Block 30 -# 2219| Block 30 -# 2219| v2219_13(void) = NoOp : -# 2219| r2219_14(glval<ClassWithDestructor>) = VariableAddress[x] : -# 2219| r2219_15(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_16(void) = Call[~ClassWithDestructor] : func:r2219_15, this:r2219_14 -# 2219| mu2219_17(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_18(void) = ^IndirectReadSideEffect[-1] : &:r2219_14, ~m? -# 2219| mu2219_19(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_14 +# 2233| Block 30 +# 2233| v2233_13(void) = NoOp : +# 2233| r2233_14(glval<ClassWithDestructor>) = VariableAddress[x] : +# 2233| r2233_15(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2233| v2233_16(void) = Call[~ClassWithDestructor] : func:r2233_15, this:r2233_14 +# 2233| mu2233_17(unknown) = ^CallSideEffect : ~m? +# 2233| v2233_18(void) = ^IndirectReadSideEffect[-1] : &:r2233_14, ~m? +# 2233| mu2233_19(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_14 #-----| Goto -> Block 1 -# 2221| void static_variable_with_destructor_1() -# 2221| Block 0 -# 2221| v2221_1(void) = EnterFunction : -# 2221| mu2221_2(unknown) = AliasedDefinition : -# 2221| mu2221_3(unknown) = InitializeNonLocal : -# 2222| r2222_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2222| mu2222_2(ClassWithDestructor) = Uninitialized[a] : &:r2222_1 -# 2222| r2222_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2222| v2222_4(void) = Call[ClassWithDestructor] : func:r2222_3, this:r2222_1 -# 2222| mu2222_5(unknown) = ^CallSideEffect : ~m? -# 2222| mu2222_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 -# 2223| r2223_1(glval<bool>) = VariableAddress[b#init] : -# 2223| r2223_2(bool) = Load[b#init] : &:r2223_1, ~m? -# 2223| v2223_3(void) = ConditionalBranch : r2223_2 +# 2235| void static_variable_with_destructor_1() +# 2235| Block 0 +# 2235| v2235_1(void) = EnterFunction : +# 2235| mu2235_2(unknown) = AliasedDefinition : +# 2235| mu2235_3(unknown) = InitializeNonLocal : +# 2236| r2236_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2236| mu2236_2(ClassWithDestructor) = Uninitialized[a] : &:r2236_1 +# 2236| r2236_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2236| v2236_4(void) = Call[ClassWithDestructor] : func:r2236_3, this:r2236_1 +# 2236| mu2236_5(unknown) = ^CallSideEffect : ~m? +# 2236| mu2236_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 +# 2237| r2237_1(glval<bool>) = VariableAddress[b#init] : +# 2237| r2237_2(bool) = Load[b#init] : &:r2237_1, ~m? +# 2237| v2237_3(void) = ConditionalBranch : r2237_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2223| Block 1 -# 2223| r2223_4(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2237| Block 1 +# 2237| r2237_4(glval<ClassWithDestructor>) = VariableAddress[b] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2223_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2237_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2223_4 -# 2223| r2223_5(bool) = Constant[1] : -# 2223| mu2223_6(bool) = Store[b#init] : &:r2223_1, r2223_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_4 +# 2237| r2237_5(bool) = Constant[1] : +# 2237| mu2237_6(bool) = Store[b#init] : &:r2237_1, r2237_5 #-----| Goto -> Block 2 -# 2224| Block 2 -# 2224| v2224_1(void) = NoOp : -# 2224| r2224_2(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2224| r2224_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2224| v2224_4(void) = Call[~ClassWithDestructor] : func:r2224_3, this:r2224_2 -# 2224| mu2224_5(unknown) = ^CallSideEffect : ~m? -# 2224| v2224_6(void) = ^IndirectReadSideEffect[-1] : &:r2224_2, ~m? -# 2224| mu2224_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2224_2 -# 2221| v2221_4(void) = ReturnVoid : -# 2221| v2221_5(void) = AliasedUse : ~m? -# 2221| v2221_6(void) = ExitFunction : - -# 2226| void static_variable_with_destructor_2() -# 2226| Block 0 -# 2226| v2226_1(void) = EnterFunction : -# 2226| mu2226_2(unknown) = AliasedDefinition : -# 2226| mu2226_3(unknown) = InitializeNonLocal : -# 2227| r2227_1(glval<bool>) = VariableAddress[a#init] : -# 2227| r2227_2(bool) = Load[a#init] : &:r2227_1, ~m? -# 2227| v2227_3(void) = ConditionalBranch : r2227_2 +# 2238| Block 2 +# 2238| v2238_1(void) = NoOp : +# 2238| r2238_2(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2238| r2238_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2238| v2238_4(void) = Call[~ClassWithDestructor] : func:r2238_3, this:r2238_2 +# 2238| mu2238_5(unknown) = ^CallSideEffect : ~m? +# 2238| v2238_6(void) = ^IndirectReadSideEffect[-1] : &:r2238_2, ~m? +# 2238| mu2238_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2238_2 +# 2235| v2235_4(void) = ReturnVoid : +# 2235| v2235_5(void) = AliasedUse : ~m? +# 2235| v2235_6(void) = ExitFunction : + +# 2240| void static_variable_with_destructor_2() +# 2240| Block 0 +# 2240| v2240_1(void) = EnterFunction : +# 2240| mu2240_2(unknown) = AliasedDefinition : +# 2240| mu2240_3(unknown) = InitializeNonLocal : +# 2241| r2241_1(glval<bool>) = VariableAddress[a#init] : +# 2241| r2241_2(bool) = Load[a#init] : &:r2241_1, ~m? +# 2241| v2241_3(void) = ConditionalBranch : r2241_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2227| Block 1 -# 2227| r2227_4(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2241| Block 1 +# 2241| r2241_4(glval<ClassWithDestructor>) = VariableAddress[a] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2227_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2241_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2227_4 -# 2227| r2227_5(bool) = Constant[1] : -# 2227| mu2227_6(bool) = Store[a#init] : &:r2227_1, r2227_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2241_4 +# 2241| r2241_5(bool) = Constant[1] : +# 2241| mu2241_6(bool) = Store[a#init] : &:r2241_1, r2241_5 #-----| Goto -> Block 2 -# 2228| Block 2 -# 2228| r2228_1(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2228| mu2228_2(ClassWithDestructor) = Uninitialized[b] : &:r2228_1 -# 2228| r2228_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2228| v2228_4(void) = Call[ClassWithDestructor] : func:r2228_3, this:r2228_1 -# 2228| mu2228_5(unknown) = ^CallSideEffect : ~m? -# 2228| mu2228_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2228_1 -# 2229| v2229_1(void) = NoOp : -# 2229| r2229_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2229| r2229_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2229| v2229_4(void) = Call[~ClassWithDestructor] : func:r2229_3, this:r2229_2 -# 2229| mu2229_5(unknown) = ^CallSideEffect : ~m? -# 2229| v2229_6(void) = ^IndirectReadSideEffect[-1] : &:r2229_2, ~m? -# 2229| mu2229_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2229_2 -# 2226| v2226_4(void) = ReturnVoid : -# 2226| v2226_5(void) = AliasedUse : ~m? -# 2226| v2226_6(void) = ExitFunction : - -# 2231| void static_variable_with_destructor_3() -# 2231| Block 0 -# 2231| v2231_1(void) = EnterFunction : -# 2231| mu2231_2(unknown) = AliasedDefinition : -# 2231| mu2231_3(unknown) = InitializeNonLocal : -# 2232| r2232_1(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2232| mu2232_2(ClassWithDestructor) = Uninitialized[a] : &:r2232_1 -# 2232| r2232_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2232| v2232_4(void) = Call[ClassWithDestructor] : func:r2232_3, this:r2232_1 -# 2232| mu2232_5(unknown) = ^CallSideEffect : ~m? -# 2232| mu2232_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 -# 2233| r2233_1(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2233| mu2233_2(ClassWithDestructor) = Uninitialized[b] : &:r2233_1 -# 2233| r2233_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2233| v2233_4(void) = Call[ClassWithDestructor] : func:r2233_3, this:r2233_1 -# 2233| mu2233_5(unknown) = ^CallSideEffect : ~m? -# 2233| mu2233_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2234| r2234_1(glval<bool>) = VariableAddress[c#init] : -# 2234| r2234_2(bool) = Load[c#init] : &:r2234_1, ~m? -# 2234| v2234_3(void) = ConditionalBranch : r2234_2 +# 2242| Block 2 +# 2242| r2242_1(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2242| mu2242_2(ClassWithDestructor) = Uninitialized[b] : &:r2242_1 +# 2242| r2242_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2242| v2242_4(void) = Call[ClassWithDestructor] : func:r2242_3, this:r2242_1 +# 2242| mu2242_5(unknown) = ^CallSideEffect : ~m? +# 2242| mu2242_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2242_1 +# 2243| v2243_1(void) = NoOp : +# 2243| r2243_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2243| r2243_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2243| v2243_4(void) = Call[~ClassWithDestructor] : func:r2243_3, this:r2243_2 +# 2243| mu2243_5(unknown) = ^CallSideEffect : ~m? +# 2243| v2243_6(void) = ^IndirectReadSideEffect[-1] : &:r2243_2, ~m? +# 2243| mu2243_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2243_2 +# 2240| v2240_4(void) = ReturnVoid : +# 2240| v2240_5(void) = AliasedUse : ~m? +# 2240| v2240_6(void) = ExitFunction : + +# 2245| void static_variable_with_destructor_3() +# 2245| Block 0 +# 2245| v2245_1(void) = EnterFunction : +# 2245| mu2245_2(unknown) = AliasedDefinition : +# 2245| mu2245_3(unknown) = InitializeNonLocal : +# 2246| r2246_1(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2246| mu2246_2(ClassWithDestructor) = Uninitialized[a] : &:r2246_1 +# 2246| r2246_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2246| v2246_4(void) = Call[ClassWithDestructor] : func:r2246_3, this:r2246_1 +# 2246| mu2246_5(unknown) = ^CallSideEffect : ~m? +# 2246| mu2246_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2246_1 +# 2247| r2247_1(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2247| mu2247_2(ClassWithDestructor) = Uninitialized[b] : &:r2247_1 +# 2247| r2247_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2247| v2247_4(void) = Call[ClassWithDestructor] : func:r2247_3, this:r2247_1 +# 2247| mu2247_5(unknown) = ^CallSideEffect : ~m? +# 2247| mu2247_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2247_1 +# 2248| r2248_1(glval<bool>) = VariableAddress[c#init] : +# 2248| r2248_2(bool) = Load[c#init] : &:r2248_1, ~m? +# 2248| v2248_3(void) = ConditionalBranch : r2248_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2234| Block 1 -# 2234| r2234_4(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2248| Block 1 +# 2248| r2248_4(glval<ClassWithDestructor>) = VariableAddress[c] : #-----| r0_1(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2234_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2248_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_4 -# 2234| r2234_5(bool) = Constant[1] : -# 2234| mu2234_6(bool) = Store[c#init] : &:r2234_1, r2234_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2248_4 +# 2248| r2248_5(bool) = Constant[1] : +# 2248| mu2248_6(bool) = Store[c#init] : &:r2248_1, r2248_5 #-----| Goto -> Block 2 -# 2235| Block 2 -# 2235| v2235_1(void) = NoOp : -# 2235| r2235_2(glval<ClassWithDestructor>) = VariableAddress[b] : -# 2235| r2235_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2235| v2235_4(void) = Call[~ClassWithDestructor] : func:r2235_3, this:r2235_2 -# 2235| mu2235_5(unknown) = ^CallSideEffect : ~m? -# 2235| v2235_6(void) = ^IndirectReadSideEffect[-1] : &:r2235_2, ~m? -# 2235| mu2235_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_2 -# 2235| r2235_8(glval<ClassWithDestructor>) = VariableAddress[a] : -# 2235| r2235_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2235| v2235_10(void) = Call[~ClassWithDestructor] : func:r2235_9, this:r2235_8 -# 2235| mu2235_11(unknown) = ^CallSideEffect : ~m? -# 2235| v2235_12(void) = ^IndirectReadSideEffect[-1] : &:r2235_8, ~m? -# 2235| mu2235_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_8 -# 2231| v2231_4(void) = ReturnVoid : -# 2231| v2231_5(void) = AliasedUse : ~m? -# 2231| v2231_6(void) = ExitFunction : - -# 2237| ClassWithDestructor global_class_with_destructor -# 2237| Block 0 -# 2237| v2237_1(void) = EnterFunction : -# 2237| mu2237_2(unknown) = AliasedDefinition : -# 2237| r2237_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : -# 2237| r2237_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2237| v2237_5(void) = Call[ClassWithDestructor] : func:r2237_4, this:r2237_3 -# 2237| mu2237_6(unknown) = ^CallSideEffect : ~m? -# 2237| mu2237_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_3 -# 2237| v2237_8(void) = ReturnVoid : -# 2237| v2237_9(void) = AliasedUse : ~m? -# 2237| v2237_10(void) = ExitFunction : - -# 2241| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) -# 2241| Block 0 -# 2241| v2241_1(void) = EnterFunction : -# 2241| mu2241_2(unknown) = AliasedDefinition : -# 2241| mu2241_3(unknown) = InitializeNonLocal : -# 2241| r2241_4(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2241| mu2241_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2241_4 -# 2241| r2241_6(ClassWithDestructor &) = Load[t] : &:r2241_4, ~m? -# 2241| mu2241_7(unknown) = InitializeIndirection[t] : &:r2241_6 -# 2241| r2241_8(glval<ClassWithDestructor &>) = VariableAddress[#return] : -# 2241| r2241_9(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2241| r2241_10(ClassWithDestructor &) = Load[t] : &:r2241_9, ~m? -# 2241| r2241_11(glval<ClassWithDestructor>) = CopyValue : r2241_10 -# 2241| r2241_12(ClassWithDestructor &) = CopyValue : r2241_11 -# 2241| mu2241_13(ClassWithDestructor &) = Store[#return] : &:r2241_8, r2241_12 -# 2241| v2241_14(void) = ReturnIndirection[t] : &:r2241_6, ~m? -# 2241| r2241_15(glval<ClassWithDestructor &>) = VariableAddress[#return] : -# 2241| v2241_16(void) = ReturnValue : &:r2241_15, ~m? -# 2241| v2241_17(void) = AliasedUse : ~m? -# 2241| v2241_18(void) = ExitFunction : - -# 2241| int& vacuous_destructor_call::get<int>(int&) -# 2241| Block 0 -# 2241| v2241_1(void) = EnterFunction : -# 2241| mu2241_2(unknown) = AliasedDefinition : -# 2241| mu2241_3(unknown) = InitializeNonLocal : -# 2241| r2241_4(glval<int &>) = VariableAddress[t] : -# 2241| mu2241_5(int &) = InitializeParameter[t] : &:r2241_4 -# 2241| r2241_6(int &) = Load[t] : &:r2241_4, ~m? -# 2241| mu2241_7(unknown) = InitializeIndirection[t] : &:r2241_6 -# 2241| r2241_8(glval<int &>) = VariableAddress[#return] : -# 2241| r2241_9(glval<int &>) = VariableAddress[t] : -# 2241| r2241_10(int &) = Load[t] : &:r2241_9, ~m? -# 2241| r2241_11(glval<int>) = CopyValue : r2241_10 -# 2241| r2241_12(int &) = CopyValue : r2241_11 -# 2241| mu2241_13(int &) = Store[#return] : &:r2241_8, r2241_12 -# 2241| v2241_14(void) = ReturnIndirection[t] : &:r2241_6, ~m? -# 2241| r2241_15(glval<int &>) = VariableAddress[#return] : -# 2241| v2241_16(void) = ReturnValue : &:r2241_15, ~m? -# 2241| v2241_17(void) = AliasedUse : ~m? -# 2241| v2241_18(void) = ExitFunction : - -# 2244| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) -# 2244| Block 0 -# 2244| v2244_1(void) = EnterFunction : -# 2244| mu2244_2(unknown) = AliasedDefinition : -# 2244| mu2244_3(unknown) = InitializeNonLocal : -# 2244| r2244_4(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2244| mu2244_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2244_4 -# 2244| r2244_6(ClassWithDestructor &) = Load[t] : &:r2244_4, ~m? -# 2244| mu2244_7(unknown) = InitializeIndirection[t] : &:r2244_6 -# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : -# 2245| r2245_2(glval<ClassWithDestructor &>) = VariableAddress[t] : -# 2245| r2245_3(ClassWithDestructor &) = Load[t] : &:r2245_2, ~m? -# 2245| r2245_4(glval<ClassWithDestructor>) = CopyValue : r2245_3 -# 2245| r2245_5(ClassWithDestructor &) = CopyValue : r2245_4 -# 2245| r2245_6(ClassWithDestructor &) = Call[get] : func:r2245_1, 0:r2245_5 -# 2245| mu2245_7(unknown) = ^CallSideEffect : ~m? -# 2245| v2245_8(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m? -# 2245| mu2245_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 -# 2245| r2245_10(glval<ClassWithDestructor>) = CopyValue : r2245_6 -# 2245| r2245_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2245| v2245_12(void) = Call[~ClassWithDestructor] : func:r2245_11 -# 2245| mu2245_13(unknown) = ^CallSideEffect : ~m? -# 2245| v2245_14(void) = ^IndirectReadSideEffect[-1] : &:r2245_10, ~m? -# 2245| mu2245_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2245_10 -# 2246| v2246_1(void) = NoOp : -# 2244| v2244_8(void) = ReturnIndirection[t] : &:r2244_6, ~m? -# 2244| v2244_9(void) = ReturnVoid : -# 2244| v2244_10(void) = AliasedUse : ~m? -# 2244| v2244_11(void) = ExitFunction : - -# 2244| void vacuous_destructor_call::call_destructor<int>(int&) -# 2244| Block 0 -# 2244| v2244_1(void) = EnterFunction : -# 2244| mu2244_2(unknown) = AliasedDefinition : -# 2244| mu2244_3(unknown) = InitializeNonLocal : -# 2244| r2244_4(glval<int &>) = VariableAddress[t] : -# 2244| mu2244_5(int &) = InitializeParameter[t] : &:r2244_4 -# 2244| r2244_6(int &) = Load[t] : &:r2244_4, ~m? -# 2244| mu2244_7(unknown) = InitializeIndirection[t] : &:r2244_6 -# 2245| r2245_1(glval<unknown>) = FunctionAddress[get] : -# 2245| r2245_2(glval<int &>) = VariableAddress[t] : -# 2245| r2245_3(int &) = Load[t] : &:r2245_2, ~m? -# 2245| r2245_4(glval<int>) = CopyValue : r2245_3 -# 2245| r2245_5(int &) = CopyValue : r2245_4 -# 2245| r2245_6(int &) = Call[get] : func:r2245_1, 0:r2245_5 -# 2245| mu2245_7(unknown) = ^CallSideEffect : ~m? -# 2245| v2245_8(void) = ^BufferReadSideEffect[0] : &:r2245_5, ~m? -# 2245| mu2245_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2245_5 -# 2245| r2245_10(glval<int>) = CopyValue : r2245_6 -# 2246| v2246_1(void) = NoOp : -# 2244| v2244_8(void) = ReturnIndirection[t] : &:r2244_6, ~m? -# 2244| v2244_9(void) = ReturnVoid : -# 2244| v2244_10(void) = AliasedUse : ~m? -# 2244| v2244_11(void) = ExitFunction : - -# 2248| void vacuous_destructor_call::non_vacuous_destructor_call() -# 2248| Block 0 -# 2248| v2248_1(void) = EnterFunction : -# 2248| mu2248_2(unknown) = AliasedDefinition : -# 2248| mu2248_3(unknown) = InitializeNonLocal : -# 2249| r2249_1(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2249| mu2249_2(ClassWithDestructor) = Uninitialized[c] : &:r2249_1 -# 2249| r2249_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2249| v2249_4(void) = Call[ClassWithDestructor] : func:r2249_3, this:r2249_1 +# 2249| Block 2 +# 2249| v2249_1(void) = NoOp : +# 2249| r2249_2(glval<ClassWithDestructor>) = VariableAddress[b] : +# 2249| r2249_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2249| v2249_4(void) = Call[~ClassWithDestructor] : func:r2249_3, this:r2249_2 # 2249| mu2249_5(unknown) = ^CallSideEffect : ~m? -# 2249| mu2249_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 -# 2250| r2250_1(glval<unknown>) = FunctionAddress[call_destructor] : -# 2250| r2250_2(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2250| r2250_3(ClassWithDestructor &) = CopyValue : r2250_2 -# 2250| v2250_4(void) = Call[call_destructor] : func:r2250_1, 0:r2250_3 -# 2250| mu2250_5(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_6(void) = ^BufferReadSideEffect[0] : &:r2250_3, ~m? -# 2250| mu2250_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2250_3 -# 2251| v2251_1(void) = NoOp : -# 2251| r2251_2(glval<ClassWithDestructor>) = VariableAddress[c] : -# 2251| r2251_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : -# 2251| v2251_4(void) = Call[~ClassWithDestructor] : func:r2251_3, this:r2251_2 -# 2251| mu2251_5(unknown) = ^CallSideEffect : ~m? -# 2251| v2251_6(void) = ^IndirectReadSideEffect[-1] : &:r2251_2, ~m? -# 2251| mu2251_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_2 -# 2248| v2248_4(void) = ReturnVoid : -# 2248| v2248_5(void) = AliasedUse : ~m? -# 2248| v2248_6(void) = ExitFunction : - -# 2253| void vacuous_destructor_call::vacuous_destructor_call() -# 2253| Block 0 -# 2253| v2253_1(void) = EnterFunction : -# 2253| mu2253_2(unknown) = AliasedDefinition : -# 2253| mu2253_3(unknown) = InitializeNonLocal : -# 2254| r2254_1(glval<int>) = VariableAddress[i] : -# 2254| mu2254_2(int) = Uninitialized[i] : &:r2254_1 -# 2255| r2255_1(glval<unknown>) = FunctionAddress[call_destructor] : -# 2255| r2255_2(glval<int>) = VariableAddress[i] : -# 2255| r2255_3(int &) = CopyValue : r2255_2 -# 2255| v2255_4(void) = Call[call_destructor] : func:r2255_1, 0:r2255_3 -# 2255| mu2255_5(unknown) = ^CallSideEffect : ~m? -# 2255| v2255_6(void) = ^BufferReadSideEffect[0] : &:r2255_3, ~m? -# 2255| mu2255_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2255_3 -# 2256| v2256_1(void) = NoOp : -# 2253| v2253_4(void) = ReturnVoid : -# 2253| v2253_5(void) = AliasedUse : ~m? -# 2253| v2253_6(void) = ExitFunction : - -# 2259| void TryCatchDestructors(bool) -# 2259| Block 0 -# 2259| v2259_1(void) = EnterFunction : -# 2259| mu2259_2(unknown) = AliasedDefinition : -# 2259| mu2259_3(unknown) = InitializeNonLocal : -# 2259| r2259_4(glval<bool>) = VariableAddress[b] : -# 2259| mu2259_5(bool) = InitializeParameter[b] : &:r2259_4 -# 2261| r2261_1(glval<String>) = VariableAddress[s] : -# 2261| mu2261_2(String) = Uninitialized[s] : &:r2261_1 -# 2261| r2261_3(glval<unknown>) = FunctionAddress[String] : -# 2261| v2261_4(void) = Call[String] : func:r2261_3, this:r2261_1 -# 2261| mu2261_5(unknown) = ^CallSideEffect : ~m? -# 2261| mu2261_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2261_1 -# 2262| r2262_1(glval<bool>) = VariableAddress[b] : -# 2262| r2262_2(bool) = Load[b] : &:r2262_1, ~m? -# 2262| v2262_3(void) = ConditionalBranch : r2262_2 +# 2249| v2249_6(void) = ^IndirectReadSideEffect[-1] : &:r2249_2, ~m? +# 2249| mu2249_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_2 +# 2249| r2249_8(glval<ClassWithDestructor>) = VariableAddress[a] : +# 2249| r2249_9(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2249| v2249_10(void) = Call[~ClassWithDestructor] : func:r2249_9, this:r2249_8 +# 2249| mu2249_11(unknown) = ^CallSideEffect : ~m? +# 2249| v2249_12(void) = ^IndirectReadSideEffect[-1] : &:r2249_8, ~m? +# 2249| mu2249_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_8 +# 2245| v2245_4(void) = ReturnVoid : +# 2245| v2245_5(void) = AliasedUse : ~m? +# 2245| v2245_6(void) = ExitFunction : + +# 2251| ClassWithDestructor global_class_with_destructor +# 2251| Block 0 +# 2251| v2251_1(void) = EnterFunction : +# 2251| mu2251_2(unknown) = AliasedDefinition : +# 2251| r2251_3(glval<ClassWithDestructor>) = VariableAddress[global_class_with_destructor] : +# 2251| r2251_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2251| v2251_5(void) = Call[ClassWithDestructor] : func:r2251_4, this:r2251_3 +# 2251| mu2251_6(unknown) = ^CallSideEffect : ~m? +# 2251| mu2251_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_3 +# 2251| v2251_8(void) = ReturnVoid : +# 2251| v2251_9(void) = AliasedUse : ~m? +# 2251| v2251_10(void) = ExitFunction : + +# 2255| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&) +# 2255| Block 0 +# 2255| v2255_1(void) = EnterFunction : +# 2255| mu2255_2(unknown) = AliasedDefinition : +# 2255| mu2255_3(unknown) = InitializeNonLocal : +# 2255| r2255_4(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2255| mu2255_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2255_4 +# 2255| r2255_6(ClassWithDestructor &) = Load[t] : &:r2255_4, ~m? +# 2255| mu2255_7(unknown) = InitializeIndirection[t] : &:r2255_6 +# 2255| r2255_8(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2255| r2255_9(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2255| r2255_10(ClassWithDestructor &) = Load[t] : &:r2255_9, ~m? +# 2255| r2255_11(glval<ClassWithDestructor>) = CopyValue : r2255_10 +# 2255| r2255_12(ClassWithDestructor &) = CopyValue : r2255_11 +# 2255| mu2255_13(ClassWithDestructor &) = Store[#return] : &:r2255_8, r2255_12 +# 2255| v2255_14(void) = ReturnIndirection[t] : &:r2255_6, ~m? +# 2255| r2255_15(glval<ClassWithDestructor &>) = VariableAddress[#return] : +# 2255| v2255_16(void) = ReturnValue : &:r2255_15, ~m? +# 2255| v2255_17(void) = AliasedUse : ~m? +# 2255| v2255_18(void) = ExitFunction : + +# 2255| int& vacuous_destructor_call::get<int>(int&) +# 2255| Block 0 +# 2255| v2255_1(void) = EnterFunction : +# 2255| mu2255_2(unknown) = AliasedDefinition : +# 2255| mu2255_3(unknown) = InitializeNonLocal : +# 2255| r2255_4(glval<int &>) = VariableAddress[t] : +# 2255| mu2255_5(int &) = InitializeParameter[t] : &:r2255_4 +# 2255| r2255_6(int &) = Load[t] : &:r2255_4, ~m? +# 2255| mu2255_7(unknown) = InitializeIndirection[t] : &:r2255_6 +# 2255| r2255_8(glval<int &>) = VariableAddress[#return] : +# 2255| r2255_9(glval<int &>) = VariableAddress[t] : +# 2255| r2255_10(int &) = Load[t] : &:r2255_9, ~m? +# 2255| r2255_11(glval<int>) = CopyValue : r2255_10 +# 2255| r2255_12(int &) = CopyValue : r2255_11 +# 2255| mu2255_13(int &) = Store[#return] : &:r2255_8, r2255_12 +# 2255| v2255_14(void) = ReturnIndirection[t] : &:r2255_6, ~m? +# 2255| r2255_15(glval<int &>) = VariableAddress[#return] : +# 2255| v2255_16(void) = ReturnValue : &:r2255_15, ~m? +# 2255| v2255_17(void) = AliasedUse : ~m? +# 2255| v2255_18(void) = ExitFunction : + +# 2258| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| mu2258_2(unknown) = AliasedDefinition : +# 2258| mu2258_3(unknown) = InitializeNonLocal : +# 2258| r2258_4(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2258| mu2258_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2258_4 +# 2258| r2258_6(ClassWithDestructor &) = Load[t] : &:r2258_4, ~m? +# 2258| mu2258_7(unknown) = InitializeIndirection[t] : &:r2258_6 +# 2259| r2259_1(glval<unknown>) = FunctionAddress[get] : +# 2259| r2259_2(glval<ClassWithDestructor &>) = VariableAddress[t] : +# 2259| r2259_3(ClassWithDestructor &) = Load[t] : &:r2259_2, ~m? +# 2259| r2259_4(glval<ClassWithDestructor>) = CopyValue : r2259_3 +# 2259| r2259_5(ClassWithDestructor &) = CopyValue : r2259_4 +# 2259| r2259_6(ClassWithDestructor &) = Call[get] : func:r2259_1, 0:r2259_5 +# 2259| mu2259_7(unknown) = ^CallSideEffect : ~m? +# 2259| v2259_8(void) = ^BufferReadSideEffect[0] : &:r2259_5, ~m? +# 2259| mu2259_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2259_5 +# 2259| r2259_10(glval<ClassWithDestructor>) = CopyValue : r2259_6 +# 2259| r2259_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2259| v2259_12(void) = Call[~ClassWithDestructor] : func:r2259_11 +# 2259| mu2259_13(unknown) = ^CallSideEffect : ~m? +# 2259| v2259_14(void) = ^IndirectReadSideEffect[-1] : &:r2259_10, ~m? +# 2259| mu2259_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2259_10 +# 2260| v2260_1(void) = NoOp : +# 2258| v2258_8(void) = ReturnIndirection[t] : &:r2258_6, ~m? +# 2258| v2258_9(void) = ReturnVoid : +# 2258| v2258_10(void) = AliasedUse : ~m? +# 2258| v2258_11(void) = ExitFunction : + +# 2258| void vacuous_destructor_call::call_destructor<int>(int&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| mu2258_2(unknown) = AliasedDefinition : +# 2258| mu2258_3(unknown) = InitializeNonLocal : +# 2258| r2258_4(glval<int &>) = VariableAddress[t] : +# 2258| mu2258_5(int &) = InitializeParameter[t] : &:r2258_4 +# 2258| r2258_6(int &) = Load[t] : &:r2258_4, ~m? +# 2258| mu2258_7(unknown) = InitializeIndirection[t] : &:r2258_6 +# 2259| r2259_1(glval<unknown>) = FunctionAddress[get] : +# 2259| r2259_2(glval<int &>) = VariableAddress[t] : +# 2259| r2259_3(int &) = Load[t] : &:r2259_2, ~m? +# 2259| r2259_4(glval<int>) = CopyValue : r2259_3 +# 2259| r2259_5(int &) = CopyValue : r2259_4 +# 2259| r2259_6(int &) = Call[get] : func:r2259_1, 0:r2259_5 +# 2259| mu2259_7(unknown) = ^CallSideEffect : ~m? +# 2259| v2259_8(void) = ^BufferReadSideEffect[0] : &:r2259_5, ~m? +# 2259| mu2259_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2259_5 +# 2259| r2259_10(glval<int>) = CopyValue : r2259_6 +# 2260| v2260_1(void) = NoOp : +# 2258| v2258_8(void) = ReturnIndirection[t] : &:r2258_6, ~m? +# 2258| v2258_9(void) = ReturnVoid : +# 2258| v2258_10(void) = AliasedUse : ~m? +# 2258| v2258_11(void) = ExitFunction : + +# 2262| void vacuous_destructor_call::non_vacuous_destructor_call() +# 2262| Block 0 +# 2262| v2262_1(void) = EnterFunction : +# 2262| mu2262_2(unknown) = AliasedDefinition : +# 2262| mu2262_3(unknown) = InitializeNonLocal : +# 2263| r2263_1(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2263| mu2263_2(ClassWithDestructor) = Uninitialized[c] : &:r2263_1 +# 2263| r2263_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2263| v2263_4(void) = Call[ClassWithDestructor] : func:r2263_3, this:r2263_1 +# 2263| mu2263_5(unknown) = ^CallSideEffect : ~m? +# 2263| mu2263_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2263_1 +# 2264| r2264_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2264| r2264_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2264| r2264_3(ClassWithDestructor &) = CopyValue : r2264_2 +# 2264| v2264_4(void) = Call[call_destructor] : func:r2264_1, 0:r2264_3 +# 2264| mu2264_5(unknown) = ^CallSideEffect : ~m? +# 2264| v2264_6(void) = ^BufferReadSideEffect[0] : &:r2264_3, ~m? +# 2264| mu2264_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2264_3 +# 2265| v2265_1(void) = NoOp : +# 2265| r2265_2(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2265| r2265_3(glval<unknown>) = FunctionAddress[~ClassWithDestructor] : +# 2265| v2265_4(void) = Call[~ClassWithDestructor] : func:r2265_3, this:r2265_2 +# 2265| mu2265_5(unknown) = ^CallSideEffect : ~m? +# 2265| v2265_6(void) = ^IndirectReadSideEffect[-1] : &:r2265_2, ~m? +# 2265| mu2265_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2265_2 +# 2262| v2262_4(void) = ReturnVoid : +# 2262| v2262_5(void) = AliasedUse : ~m? +# 2262| v2262_6(void) = ExitFunction : + +# 2267| void vacuous_destructor_call::vacuous_destructor_call() +# 2267| Block 0 +# 2267| v2267_1(void) = EnterFunction : +# 2267| mu2267_2(unknown) = AliasedDefinition : +# 2267| mu2267_3(unknown) = InitializeNonLocal : +# 2268| r2268_1(glval<int>) = VariableAddress[i] : +# 2268| mu2268_2(int) = Uninitialized[i] : &:r2268_1 +# 2269| r2269_1(glval<unknown>) = FunctionAddress[call_destructor] : +# 2269| r2269_2(glval<int>) = VariableAddress[i] : +# 2269| r2269_3(int &) = CopyValue : r2269_2 +# 2269| v2269_4(void) = Call[call_destructor] : func:r2269_1, 0:r2269_3 +# 2269| mu2269_5(unknown) = ^CallSideEffect : ~m? +# 2269| v2269_6(void) = ^BufferReadSideEffect[0] : &:r2269_3, ~m? +# 2269| mu2269_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2269_3 +# 2270| v2270_1(void) = NoOp : +# 2267| v2267_4(void) = ReturnVoid : +# 2267| v2267_5(void) = AliasedUse : ~m? +# 2267| v2267_6(void) = ExitFunction : + +# 2273| void TryCatchDestructors(bool) +# 2273| Block 0 +# 2273| v2273_1(void) = EnterFunction : +# 2273| mu2273_2(unknown) = AliasedDefinition : +# 2273| mu2273_3(unknown) = InitializeNonLocal : +# 2273| r2273_4(glval<bool>) = VariableAddress[b] : +# 2273| mu2273_5(bool) = InitializeParameter[b] : &:r2273_4 +# 2275| r2275_1(glval<String>) = VariableAddress[s] : +# 2275| mu2275_2(String) = Uninitialized[s] : &:r2275_1 +# 2275| r2275_3(glval<unknown>) = FunctionAddress[String] : +# 2275| v2275_4(void) = Call[String] : func:r2275_3, this:r2275_1 +# 2275| mu2275_5(unknown) = ^CallSideEffect : ~m? +# 2275| mu2275_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2275_1 +# 2276| r2276_1(glval<bool>) = VariableAddress[b] : +# 2276| r2276_2(bool) = Load[b] : &:r2276_1, ~m? +# 2276| v2276_3(void) = ConditionalBranch : r2276_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 2259| Block 1 -# 2259| v2259_6(void) = AliasedUse : ~m? -# 2259| v2259_7(void) = ExitFunction : +# 2273| Block 1 +# 2273| v2273_6(void) = AliasedUse : ~m? +# 2273| v2273_7(void) = ExitFunction : -# 2259| Block 2 -# 2259| v2259_8(void) = Unwind : +# 2273| Block 2 +# 2273| v2273_8(void) = Unwind : #-----| Goto -> Block 1 -# 2263| Block 3 -# 2263| r2263_1(glval<char *>) = VariableAddress[#throw2263:7] : -# 2263| r2263_2(glval<char[15]>) = StringConstant["string literal"] : -# 2263| r2263_3(char *) = Convert : r2263_2 -# 2263| mu2263_4(char *) = Store[#throw2263:7] : &:r2263_1, r2263_3 -# 2263| v2263_5(void) = ThrowValue : &:r2263_1, ~m? +# 2277| Block 3 +# 2277| r2277_1(glval<char *>) = VariableAddress[#throw2277:7] : +# 2277| r2277_2(glval<char[15]>) = StringConstant["string literal"] : +# 2277| r2277_3(char *) = Convert : r2277_2 +# 2277| mu2277_4(char *) = Store[#throw2277:7] : &:r2277_1, r2277_3 +# 2277| v2277_5(void) = ThrowValue : &:r2277_1, ~m? #-----| Exception -> Block 5 -# 2265| Block 4 -# 2265| r2265_1(glval<String>) = VariableAddress[s2] : -# 2265| mu2265_2(String) = Uninitialized[s2] : &:r2265_1 -# 2265| r2265_3(glval<unknown>) = FunctionAddress[String] : -# 2265| v2265_4(void) = Call[String] : func:r2265_3, this:r2265_1 -# 2265| mu2265_5(unknown) = ^CallSideEffect : ~m? -# 2265| mu2265_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2265_1 -# 2266| r2266_1(glval<String>) = VariableAddress[s2] : -# 2266| r2266_2(glval<unknown>) = FunctionAddress[~String] : -# 2266| v2266_3(void) = Call[~String] : func:r2266_2, this:r2266_1 -# 2266| mu2266_4(unknown) = ^CallSideEffect : ~m? -# 2266| v2266_5(void) = ^IndirectReadSideEffect[-1] : &:r2266_1, ~m? -# 2266| mu2266_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 -# 2266| r2266_7(glval<String>) = VariableAddress[s] : -# 2266| r2266_8(glval<unknown>) = FunctionAddress[~String] : -# 2266| v2266_9(void) = Call[~String] : func:r2266_8, this:r2266_7 -# 2266| mu2266_10(unknown) = ^CallSideEffect : ~m? -# 2266| v2266_11(void) = ^IndirectReadSideEffect[-1] : &:r2266_7, ~m? -# 2266| mu2266_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2266_7 +# 2279| Block 4 +# 2279| r2279_1(glval<String>) = VariableAddress[s2] : +# 2279| mu2279_2(String) = Uninitialized[s2] : &:r2279_1 +# 2279| r2279_3(glval<unknown>) = FunctionAddress[String] : +# 2279| v2279_4(void) = Call[String] : func:r2279_3, this:r2279_1 +# 2279| mu2279_5(unknown) = ^CallSideEffect : ~m? +# 2279| mu2279_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2279_1 +# 2280| r2280_1(glval<String>) = VariableAddress[s2] : +# 2280| r2280_2(glval<unknown>) = FunctionAddress[~String] : +# 2280| v2280_3(void) = Call[~String] : func:r2280_2, this:r2280_1 +# 2280| mu2280_4(unknown) = ^CallSideEffect : ~m? +# 2280| v2280_5(void) = ^IndirectReadSideEffect[-1] : &:r2280_1, ~m? +# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2280| r2280_7(glval<String>) = VariableAddress[s] : +# 2280| r2280_8(glval<unknown>) = FunctionAddress[~String] : +# 2280| v2280_9(void) = Call[~String] : func:r2280_8, this:r2280_7 +# 2280| mu2280_10(unknown) = ^CallSideEffect : ~m? +# 2280| v2280_11(void) = ^IndirectReadSideEffect[-1] : &:r2280_7, ~m? +# 2280| mu2280_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_7 #-----| Goto -> Block 10 -# 2267| Block 5 -# 2267| v2267_1(void) = CatchByType[const char *] : +# 2281| Block 5 +# 2281| v2281_1(void) = CatchByType[const char *] : #-----| Exception -> Block 7 #-----| Goto -> Block 6 -# 2267| Block 6 -# 2267| r2267_2(glval<char *>) = VariableAddress[s] : -# 2267| mu2267_3(char *) = InitializeParameter[s] : &:r2267_2 -# 2267| r2267_4(char *) = Load[s] : &:r2267_2, ~m? -# 2267| mu2267_5(unknown) = InitializeIndirection[s] : &:r2267_4 -# 2268| r2268_1(glval<String>) = VariableAddress[#throw2268:5] : -# 2268| mu2268_2(String) = Uninitialized[#throw2268:5] : &:r2268_1 -# 2268| r2268_3(glval<unknown>) = FunctionAddress[String] : -# 2268| r2268_4(glval<char *>) = VariableAddress[s] : -# 2268| r2268_5(char *) = Load[s] : &:r2268_4, ~m? -# 2268| v2268_6(void) = Call[String] : func:r2268_3, this:r2268_1, 0:r2268_5 -# 2268| mu2268_7(unknown) = ^CallSideEffect : ~m? -# 2268| v2268_8(void) = ^BufferReadSideEffect[0] : &:r2268_5, ~m? -# 2268| mu2268_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2268_1 -# 2268| v2268_10(void) = ThrowValue : &:r2268_1, ~m? +# 2281| Block 6 +# 2281| r2281_2(glval<char *>) = VariableAddress[s] : +# 2281| mu2281_3(char *) = InitializeParameter[s] : &:r2281_2 +# 2281| r2281_4(char *) = Load[s] : &:r2281_2, ~m? +# 2281| mu2281_5(unknown) = InitializeIndirection[s] : &:r2281_4 +# 2282| r2282_1(glval<String>) = VariableAddress[#throw2282:5] : +# 2282| mu2282_2(String) = Uninitialized[#throw2282:5] : &:r2282_1 +# 2282| r2282_3(glval<unknown>) = FunctionAddress[String] : +# 2282| r2282_4(glval<char *>) = VariableAddress[s] : +# 2282| r2282_5(char *) = Load[s] : &:r2282_4, ~m? +# 2282| v2282_6(void) = Call[String] : func:r2282_3, this:r2282_1, 0:r2282_5 +# 2282| mu2282_7(unknown) = ^CallSideEffect : ~m? +# 2282| v2282_8(void) = ^BufferReadSideEffect[0] : &:r2282_5, ~m? +# 2282| mu2282_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 +# 2282| v2282_10(void) = ThrowValue : &:r2282_1, ~m? #-----| Exception -> Block 2 -# 2270| Block 7 -# 2270| v2270_1(void) = CatchByType[const String &] : +# 2284| Block 7 +# 2284| v2284_1(void) = CatchByType[const String &] : #-----| Exception -> Block 9 #-----| Goto -> Block 8 -# 2270| Block 8 -# 2270| r2270_2(glval<String &>) = VariableAddress[e] : -# 2270| mu2270_3(String &) = InitializeParameter[e] : &:r2270_2 -# 2270| r2270_4(String &) = Load[e] : &:r2270_2, ~m? -# 2270| mu2270_5(unknown) = InitializeIndirection[e] : &:r2270_4 -# 2270| v2270_6(void) = NoOp : +# 2284| Block 8 +# 2284| r2284_2(glval<String &>) = VariableAddress[e] : +# 2284| mu2284_3(String &) = InitializeParameter[e] : &:r2284_2 +# 2284| r2284_4(String &) = Load[e] : &:r2284_2, ~m? +# 2284| mu2284_5(unknown) = InitializeIndirection[e] : &:r2284_4 +# 2284| v2284_6(void) = NoOp : #-----| Goto -> Block 10 -# 2272| Block 9 -# 2272| v2272_1(void) = CatchAny : -# 2273| v2273_1(void) = ReThrow : +# 2286| Block 9 +# 2286| v2286_1(void) = CatchAny : +# 2287| v2287_1(void) = ReThrow : #-----| Exception -> Block 2 -# 2275| Block 10 -# 2275| v2275_1(void) = NoOp : -# 2259| v2259_9(void) = ReturnVoid : +# 2289| Block 10 +# 2289| v2289_1(void) = NoOp : +# 2273| v2273_9(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2277| void IfDestructors(bool) -# 2277| Block 0 -# 2277| v2277_1(void) = EnterFunction : -# 2277| mu2277_2(unknown) = AliasedDefinition : -# 2277| mu2277_3(unknown) = InitializeNonLocal : -# 2277| r2277_4(glval<bool>) = VariableAddress[b] : -# 2277| mu2277_5(bool) = InitializeParameter[b] : &:r2277_4 -# 2278| r2278_1(glval<String>) = VariableAddress[s1] : -# 2278| mu2278_2(String) = Uninitialized[s1] : &:r2278_1 -# 2278| r2278_3(glval<unknown>) = FunctionAddress[String] : -# 2278| v2278_4(void) = Call[String] : func:r2278_3, this:r2278_1 -# 2278| mu2278_5(unknown) = ^CallSideEffect : ~m? -# 2278| mu2278_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 -# 2279| r2279_1(glval<bool>) = VariableAddress[b] : -# 2279| r2279_2(bool) = Load[b] : &:r2279_1, ~m? -# 2279| v2279_3(void) = ConditionalBranch : r2279_2 +# 2291| void IfDestructors(bool) +# 2291| Block 0 +# 2291| v2291_1(void) = EnterFunction : +# 2291| mu2291_2(unknown) = AliasedDefinition : +# 2291| mu2291_3(unknown) = InitializeNonLocal : +# 2291| r2291_4(glval<bool>) = VariableAddress[b] : +# 2291| mu2291_5(bool) = InitializeParameter[b] : &:r2291_4 +# 2292| r2292_1(glval<String>) = VariableAddress[s1] : +# 2292| mu2292_2(String) = Uninitialized[s1] : &:r2292_1 +# 2292| r2292_3(glval<unknown>) = FunctionAddress[String] : +# 2292| v2292_4(void) = Call[String] : func:r2292_3, this:r2292_1 +# 2292| mu2292_5(unknown) = ^CallSideEffect : ~m? +# 2292| mu2292_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2292_1 +# 2293| r2293_1(glval<bool>) = VariableAddress[b] : +# 2293| r2293_2(bool) = Load[b] : &:r2293_1, ~m? +# 2293| v2293_3(void) = ConditionalBranch : r2293_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2280| Block 1 -# 2280| r2280_1(glval<String>) = VariableAddress[s2] : -# 2280| mu2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| r2280_3(glval<unknown>) = FunctionAddress[String] : -# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 -# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? -# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 -# 2281| r2281_1(glval<String>) = VariableAddress[s2] : -# 2281| r2281_2(glval<unknown>) = FunctionAddress[~String] : -# 2281| v2281_3(void) = Call[~String] : func:r2281_2, this:r2281_1 -# 2281| mu2281_4(unknown) = ^CallSideEffect : ~m? -# 2281| v2281_5(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m? -# 2281| mu2281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 +# 2294| Block 1 +# 2294| r2294_1(glval<String>) = VariableAddress[s2] : +# 2294| mu2294_2(String) = Uninitialized[s2] : &:r2294_1 +# 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : +# 2294| v2294_4(void) = Call[String] : func:r2294_3, this:r2294_1 +# 2294| mu2294_5(unknown) = ^CallSideEffect : ~m? +# 2294| mu2294_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 +# 2295| r2295_1(glval<String>) = VariableAddress[s2] : +# 2295| r2295_2(glval<unknown>) = FunctionAddress[~String] : +# 2295| v2295_3(void) = Call[~String] : func:r2295_2, this:r2295_1 +# 2295| mu2295_4(unknown) = ^CallSideEffect : ~m? +# 2295| v2295_5(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, ~m? +# 2295| mu2295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 #-----| Goto -> Block 3 -# 2282| Block 2 -# 2282| r2282_1(glval<String>) = VariableAddress[s3] : -# 2282| mu2282_2(String) = Uninitialized[s3] : &:r2282_1 -# 2282| r2282_3(glval<unknown>) = FunctionAddress[String] : -# 2282| v2282_4(void) = Call[String] : func:r2282_3, this:r2282_1 -# 2282| mu2282_5(unknown) = ^CallSideEffect : ~m? -# 2282| mu2282_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 -# 2283| r2283_1(glval<String>) = VariableAddress[s3] : -# 2283| r2283_2(glval<unknown>) = FunctionAddress[~String] : -# 2283| v2283_3(void) = Call[~String] : func:r2283_2, this:r2283_1 -# 2283| mu2283_4(unknown) = ^CallSideEffect : ~m? -# 2283| v2283_5(void) = ^IndirectReadSideEffect[-1] : &:r2283_1, ~m? -# 2283| mu2283_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 +# 2296| Block 2 +# 2296| r2296_1(glval<String>) = VariableAddress[s3] : +# 2296| mu2296_2(String) = Uninitialized[s3] : &:r2296_1 +# 2296| r2296_3(glval<unknown>) = FunctionAddress[String] : +# 2296| v2296_4(void) = Call[String] : func:r2296_3, this:r2296_1 +# 2296| mu2296_5(unknown) = ^CallSideEffect : ~m? +# 2296| mu2296_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 +# 2297| r2297_1(glval<String>) = VariableAddress[s3] : +# 2297| r2297_2(glval<unknown>) = FunctionAddress[~String] : +# 2297| v2297_3(void) = Call[~String] : func:r2297_2, this:r2297_1 +# 2297| mu2297_4(unknown) = ^CallSideEffect : ~m? +# 2297| v2297_5(void) = ^IndirectReadSideEffect[-1] : &:r2297_1, ~m? +# 2297| mu2297_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 #-----| Goto -> Block 3 -# 2284| Block 3 -# 2284| r2284_1(glval<String>) = VariableAddress[s4] : -# 2284| mu2284_2(String) = Uninitialized[s4] : &:r2284_1 -# 2284| r2284_3(glval<unknown>) = FunctionAddress[String] : -# 2284| v2284_4(void) = Call[String] : func:r2284_3, this:r2284_1 -# 2284| mu2284_5(unknown) = ^CallSideEffect : ~m? -# 2284| mu2284_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2284_1 -# 2285| v2285_1(void) = NoOp : -# 2285| r2285_2(glval<String>) = VariableAddress[s4] : -# 2285| r2285_3(glval<unknown>) = FunctionAddress[~String] : -# 2285| v2285_4(void) = Call[~String] : func:r2285_3, this:r2285_2 -# 2285| mu2285_5(unknown) = ^CallSideEffect : ~m? -# 2285| v2285_6(void) = ^IndirectReadSideEffect[-1] : &:r2285_2, ~m? -# 2285| mu2285_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_2 -# 2285| r2285_8(glval<String>) = VariableAddress[s1] : -# 2285| r2285_9(glval<unknown>) = FunctionAddress[~String] : -# 2285| v2285_10(void) = Call[~String] : func:r2285_9, this:r2285_8 -# 2285| mu2285_11(unknown) = ^CallSideEffect : ~m? -# 2285| v2285_12(void) = ^IndirectReadSideEffect[-1] : &:r2285_8, ~m? -# 2285| mu2285_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_8 -# 2277| v2277_6(void) = ReturnVoid : -# 2277| v2277_7(void) = AliasedUse : ~m? -# 2277| v2277_8(void) = ExitFunction : - -# 2287| void ForDestructors() -# 2287| Block 0 -# 2287| v2287_1(void) = EnterFunction : -# 2287| mu2287_2(unknown) = AliasedDefinition : -# 2287| mu2287_3(unknown) = InitializeNonLocal : -# 2288| r2288_1(glval<char>) = VariableAddress[c] : -# 2288| r2288_2(char) = Constant[97] : -# 2288| mu2288_3(char) = Store[c] : &:r2288_1, r2288_2 -# 2289| r2289_1(glval<String>) = VariableAddress[s] : -# 2289| mu2289_2(String) = Uninitialized[s] : &:r2289_1 -# 2289| r2289_3(glval<unknown>) = FunctionAddress[String] : -# 2289| r2289_4(glval<char[6]>) = StringConstant["hello"] : -# 2289| r2289_5(char *) = Convert : r2289_4 -# 2289| v2289_6(void) = Call[String] : func:r2289_3, this:r2289_1, 0:r2289_5 -# 2289| mu2289_7(unknown) = ^CallSideEffect : ~m? -# 2289| v2289_8(void) = ^BufferReadSideEffect[0] : &:r2289_5, ~m? -# 2289| mu2289_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_1 +# 2298| Block 3 +# 2298| r2298_1(glval<String>) = VariableAddress[s4] : +# 2298| mu2298_2(String) = Uninitialized[s4] : &:r2298_1 +# 2298| r2298_3(glval<unknown>) = FunctionAddress[String] : +# 2298| v2298_4(void) = Call[String] : func:r2298_3, this:r2298_1 +# 2298| mu2298_5(unknown) = ^CallSideEffect : ~m? +# 2298| mu2298_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2298_1 +# 2299| v2299_1(void) = NoOp : +# 2299| r2299_2(glval<String>) = VariableAddress[s4] : +# 2299| r2299_3(glval<unknown>) = FunctionAddress[~String] : +# 2299| v2299_4(void) = Call[~String] : func:r2299_3, this:r2299_2 +# 2299| mu2299_5(unknown) = ^CallSideEffect : ~m? +# 2299| v2299_6(void) = ^IndirectReadSideEffect[-1] : &:r2299_2, ~m? +# 2299| mu2299_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_2 +# 2299| r2299_8(glval<String>) = VariableAddress[s1] : +# 2299| r2299_9(glval<unknown>) = FunctionAddress[~String] : +# 2299| v2299_10(void) = Call[~String] : func:r2299_9, this:r2299_8 +# 2299| mu2299_11(unknown) = ^CallSideEffect : ~m? +# 2299| v2299_12(void) = ^IndirectReadSideEffect[-1] : &:r2299_8, ~m? +# 2299| mu2299_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_8 +# 2291| v2291_6(void) = ReturnVoid : +# 2291| v2291_7(void) = AliasedUse : ~m? +# 2291| v2291_8(void) = ExitFunction : + +# 2301| void ForDestructors() +# 2301| Block 0 +# 2301| v2301_1(void) = EnterFunction : +# 2301| mu2301_2(unknown) = AliasedDefinition : +# 2301| mu2301_3(unknown) = InitializeNonLocal : +# 2302| r2302_1(glval<char>) = VariableAddress[c] : +# 2302| r2302_2(char) = Constant[97] : +# 2302| mu2302_3(char) = Store[c] : &:r2302_1, r2302_2 +# 2303| r2303_1(glval<String>) = VariableAddress[s] : +# 2303| mu2303_2(String) = Uninitialized[s] : &:r2303_1 +# 2303| r2303_3(glval<unknown>) = FunctionAddress[String] : +# 2303| r2303_4(glval<char[6]>) = StringConstant["hello"] : +# 2303| r2303_5(char *) = Convert : r2303_4 +# 2303| v2303_6(void) = Call[String] : func:r2303_3, this:r2303_1, 0:r2303_5 +# 2303| mu2303_7(unknown) = ^CallSideEffect : ~m? +# 2303| v2303_8(void) = ^BufferReadSideEffect[0] : &:r2303_5, ~m? +# 2303| mu2303_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 #-----| Goto -> Block 1 -# 2289| Block 1 -# 2289| r2289_10(glval<char>) = VariableAddress[c] : -# 2289| r2289_11(char) = Load[c] : &:r2289_10, ~m? -# 2289| r2289_12(int) = Convert : r2289_11 -# 2289| r2289_13(int) = Constant[0] : -# 2289| r2289_14(bool) = CompareNE : r2289_12, r2289_13 -# 2289| v2289_15(void) = ConditionalBranch : r2289_14 +# 2303| Block 1 +# 2303| r2303_10(glval<char>) = VariableAddress[c] : +# 2303| r2303_11(char) = Load[c] : &:r2303_10, ~m? +# 2303| r2303_12(int) = Convert : r2303_11 +# 2303| r2303_13(int) = Constant[0] : +# 2303| r2303_14(bool) = CompareNE : r2303_12, r2303_13 +# 2303| v2303_15(void) = ConditionalBranch : r2303_14 #-----| False -> Block 3 #-----| True -> Block 2 -# 2290| Block 2 -# 2290| r2290_1(glval<String>) = VariableAddress[s2] : -# 2290| mu2290_2(String) = Uninitialized[s2] : &:r2290_1 -# 2290| r2290_3(glval<unknown>) = FunctionAddress[String] : -# 2290| v2290_4(void) = Call[String] : func:r2290_3, this:r2290_1 -# 2290| mu2290_5(unknown) = ^CallSideEffect : ~m? -# 2290| mu2290_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2290_1 -# 2291| r2291_1(glval<String>) = VariableAddress[s2] : -# 2291| r2291_2(glval<unknown>) = FunctionAddress[~String] : -# 2291| v2291_3(void) = Call[~String] : func:r2291_2, this:r2291_1 -# 2291| mu2291_4(unknown) = ^CallSideEffect : ~m? -# 2291| v2291_5(void) = ^IndirectReadSideEffect[-1] : &:r2291_1, ~m? -# 2291| mu2291_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2291_1 -# 2289| r2289_16(glval<String>) = VariableAddress[s] : -# 2289| r2289_17(glval<unknown>) = FunctionAddress[pop_back] : -# 2289| r2289_18(char) = Call[pop_back] : func:r2289_17, this:r2289_16 -# 2289| mu2289_19(unknown) = ^CallSideEffect : ~m? -# 2289| v2289_20(void) = ^IndirectReadSideEffect[-1] : &:r2289_16, ~m? -# 2289| mu2289_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_16 -# 2289| r2289_22(glval<char>) = VariableAddress[c] : -# 2289| mu2289_23(char) = Store[c] : &:r2289_22, r2289_18 +# 2304| Block 2 +# 2304| r2304_1(glval<String>) = VariableAddress[s2] : +# 2304| mu2304_2(String) = Uninitialized[s2] : &:r2304_1 +# 2304| r2304_3(glval<unknown>) = FunctionAddress[String] : +# 2304| v2304_4(void) = Call[String] : func:r2304_3, this:r2304_1 +# 2304| mu2304_5(unknown) = ^CallSideEffect : ~m? +# 2304| mu2304_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_1 +# 2305| r2305_1(glval<String>) = VariableAddress[s2] : +# 2305| r2305_2(glval<unknown>) = FunctionAddress[~String] : +# 2305| v2305_3(void) = Call[~String] : func:r2305_2, this:r2305_1 +# 2305| mu2305_4(unknown) = ^CallSideEffect : ~m? +# 2305| v2305_5(void) = ^IndirectReadSideEffect[-1] : &:r2305_1, ~m? +# 2305| mu2305_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2305_1 +# 2303| r2303_16(glval<String>) = VariableAddress[s] : +# 2303| r2303_17(glval<unknown>) = FunctionAddress[pop_back] : +# 2303| r2303_18(char) = Call[pop_back] : func:r2303_17, this:r2303_16 +# 2303| mu2303_19(unknown) = ^CallSideEffect : ~m? +# 2303| v2303_20(void) = ^IndirectReadSideEffect[-1] : &:r2303_16, ~m? +# 2303| mu2303_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_16 +# 2303| r2303_22(glval<char>) = VariableAddress[c] : +# 2303| mu2303_23(char) = Store[c] : &:r2303_22, r2303_18 #-----| Goto (back edge) -> Block 1 -# 2289| Block 3 -# 2289| r2289_24(glval<String>) = VariableAddress[s] : -# 2289| r2289_25(glval<unknown>) = FunctionAddress[~String] : -# 2289| v2289_26(void) = Call[~String] : func:r2289_25, this:r2289_24 -# 2289| mu2289_27(unknown) = ^CallSideEffect : ~m? -# 2289| v2289_28(void) = ^IndirectReadSideEffect[-1] : &:r2289_24, ~m? -# 2289| mu2289_29(String) = ^IndirectMayWriteSideEffect[-1] : &:r2289_24 -# 2293| r2293_1(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_2(glval<vector<String>>) = VariableAddress[#temp2293:20] : -# 2293| mu2293_3(vector<String>) = Uninitialized[#temp2293:20] : &:r2293_2 -# 2293| r2293_4(glval<unknown>) = FunctionAddress[vector] : -# 2293| r2293_5(glval<String>) = VariableAddress[#temp2293:40] : -# 2293| mu2293_6(String) = Uninitialized[#temp2293:40] : &:r2293_5 -# 2293| r2293_7(glval<unknown>) = FunctionAddress[String] : -# 2293| r2293_8(glval<char[6]>) = StringConstant["hello"] : -# 2293| r2293_9(char *) = Convert : r2293_8 -# 2293| v2293_10(void) = Call[String] : func:r2293_7, this:r2293_5, 0:r2293_9 -# 2293| mu2293_11(unknown) = ^CallSideEffect : ~m? -# 2293| v2293_12(void) = ^BufferReadSideEffect[0] : &:r2293_9, ~m? -# 2293| mu2293_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_5 -# 2293| r2293_14(String) = Load[#temp2293:40] : &:r2293_5, ~m? -# 2293| v2293_15(void) = Call[vector] : func:r2293_4, this:r2293_2, 0:r2293_14 -# 2293| mu2293_16(unknown) = ^CallSideEffect : ~m? -# 2293| mu2293_17(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_2 -# 2293| r2293_18(vector<String> &) = CopyValue : r2293_2 -# 2293| mu2293_19(vector<String> &&) = Store[(__range)] : &:r2293_1, r2293_18 -# 2293| r2293_20(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -# 2293| r2293_21(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_22(vector<String> &&) = Load[(__range)] : &:r2293_21, ~m? -#-----| r0_1(glval<vector<String>>) = CopyValue : r2293_22 +# 2303| Block 3 +# 2303| r2303_24(glval<String>) = VariableAddress[s] : +# 2303| r2303_25(glval<unknown>) = FunctionAddress[~String] : +# 2303| v2303_26(void) = Call[~String] : func:r2303_25, this:r2303_24 +# 2303| mu2303_27(unknown) = ^CallSideEffect : ~m? +# 2303| v2303_28(void) = ^IndirectReadSideEffect[-1] : &:r2303_24, ~m? +# 2303| mu2303_29(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_24 +# 2307| r2307_1(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2307| r2307_2(glval<vector<String>>) = VariableAddress[#temp2307:20] : +# 2307| mu2307_3(vector<String>) = Uninitialized[#temp2307:20] : &:r2307_2 +# 2307| r2307_4(glval<unknown>) = FunctionAddress[vector] : +# 2307| r2307_5(glval<String>) = VariableAddress[#temp2307:40] : +# 2307| mu2307_6(String) = Uninitialized[#temp2307:40] : &:r2307_5 +# 2307| r2307_7(glval<unknown>) = FunctionAddress[String] : +# 2307| r2307_8(glval<char[6]>) = StringConstant["hello"] : +# 2307| r2307_9(char *) = Convert : r2307_8 +# 2307| v2307_10(void) = Call[String] : func:r2307_7, this:r2307_5, 0:r2307_9 +# 2307| mu2307_11(unknown) = ^CallSideEffect : ~m? +# 2307| v2307_12(void) = ^BufferReadSideEffect[0] : &:r2307_9, ~m? +# 2307| mu2307_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_5 +# 2307| r2307_14(String) = Load[#temp2307:40] : &:r2307_5, ~m? +# 2307| v2307_15(void) = Call[vector] : func:r2307_4, this:r2307_2, 0:r2307_14 +# 2307| mu2307_16(unknown) = ^CallSideEffect : ~m? +# 2307| mu2307_17(vector<String>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_2 +# 2307| r2307_18(vector<String> &) = CopyValue : r2307_2 +# 2307| mu2307_19(vector<String> &&) = Store[(__range)] : &:r2307_1, r2307_18 +# 2307| r2307_20(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2307| r2307_21(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2307| r2307_22(vector<String> &&) = Load[(__range)] : &:r2307_21, ~m? +#-----| r0_1(glval<vector<String>>) = CopyValue : r2307_22 #-----| r0_2(glval<vector<String>>) = Convert : r0_1 -# 2293| r2293_23(glval<unknown>) = FunctionAddress[begin] : -# 2293| r2293_24(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2293_23, this:r0_2 +# 2307| r2307_23(glval<unknown>) = FunctionAddress[begin] : +# 2307| r2307_24(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[begin] : func:r2307_23, this:r0_2 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2293| mu2293_25(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2293_20, r2293_24 -# 2293| r2293_26(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -# 2293| r2293_27(glval<vector<String> &&>) = VariableAddress[(__range)] : -# 2293| r2293_28(vector<String> &&) = Load[(__range)] : &:r2293_27, ~m? -#-----| r0_4(glval<vector<String>>) = CopyValue : r2293_28 +# 2307| mu2307_25(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__begin)] : &:r2307_20, r2307_24 +# 2307| r2307_26(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +# 2307| r2307_27(glval<vector<String> &&>) = VariableAddress[(__range)] : +# 2307| r2307_28(vector<String> &&) = Load[(__range)] : &:r2307_27, ~m? +#-----| r0_4(glval<vector<String>>) = CopyValue : r2307_28 #-----| r0_5(glval<vector<String>>) = Convert : r0_4 -# 2293| r2293_29(glval<unknown>) = FunctionAddress[end] : -# 2293| r2293_30(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2293_29, this:r0_5 +# 2307| r2307_29(glval<unknown>) = FunctionAddress[end] : +# 2307| r2307_30(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Call[end] : func:r2307_29, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2293| mu2293_31(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2293_26, r2293_30 +# 2307| mu2307_31(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Store[(__end)] : &:r2307_26, r2307_30 #-----| Goto -> Block 4 -# 2293| Block 4 -# 2293| r2293_32(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_32 -# 2293| r2293_33(glval<unknown>) = FunctionAddress[operator!=] : +# 2307| Block 4 +# 2307| r2307_32(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_32 +# 2307| r2307_33(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2293| r2293_34(glval<unknown>) = FunctionAddress[iterator] : -# 2293| r2293_35(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_35 +# 2307| r2307_34(glval<unknown>) = FunctionAddress[iterator] : +# 2307| r2307_35(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_35 #-----| r0_11(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = CopyValue : r0_10 -# 2293| v2293_36(void) = Call[iterator] : func:r2293_34, this:r0_8, 0:r0_11 -# 2293| mu2293_37(unknown) = ^CallSideEffect : ~m? +# 2307| v2307_36(void) = Call[iterator] : func:r2307_34, this:r0_8, 0:r0_11 +# 2307| mu2307_37(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2293| mu2293_38(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2307| mu2307_38(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = Load[#temp0:0] : &:r0_8, ~m? -# 2293| r2293_39(bool) = Call[operator!=] : func:r2293_33, this:r0_7, 0:r0_13 -# 2293| mu2293_40(unknown) = ^CallSideEffect : ~m? +# 2307| r2307_39(bool) = Call[operator!=] : func:r2307_33, this:r0_7, 0:r0_13 +# 2307| mu2307_40(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2293| v2293_41(void) = ConditionalBranch : r2293_39 +# 2307| v2307_41(void) = ConditionalBranch : r2307_39 #-----| False -> Block 6 #-----| True -> Block 5 -# 2293| Block 5 -# 2293| r2293_42(glval<String>) = VariableAddress[s] : -# 2293| mu2293_43(String) = Uninitialized[s] : &:r2293_42 -# 2293| r2293_44(glval<unknown>) = FunctionAddress[String] : -# 2293| r2293_45(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2293_45 -# 2293| r2293_46(glval<unknown>) = FunctionAddress[operator*] : -# 2293| r2293_47(String &) = Call[operator*] : func:r2293_46, this:r0_15 -# 2293| mu2293_48(unknown) = ^CallSideEffect : ~m? +# 2307| Block 5 +# 2307| r2307_42(glval<String>) = VariableAddress[s] : +# 2307| mu2307_43(String) = Uninitialized[s] : &:r2307_42 +# 2307| r2307_44(glval<unknown>) = FunctionAddress[String] : +# 2307| r2307_45(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = Convert : r2307_45 +# 2307| r2307_46(glval<unknown>) = FunctionAddress[operator*] : +# 2307| r2307_47(String &) = Call[operator*] : func:r2307_46, this:r0_15 +# 2307| mu2307_48(unknown) = ^CallSideEffect : ~m? #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2293| r2293_49(glval<String>) = CopyValue : r2293_47 -# 2293| r2293_50(glval<String>) = Convert : r2293_49 -# 2293| r2293_51(String &) = CopyValue : r2293_50 -# 2293| v2293_52(void) = Call[String] : func:r2293_44, this:r2293_42, 0:r2293_51 -# 2293| mu2293_53(unknown) = ^CallSideEffect : ~m? -# 2293| v2293_54(void) = ^BufferReadSideEffect[0] : &:r2293_51, ~m? -# 2293| mu2293_55(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_42 -# 2294| r2294_1(glval<String>) = VariableAddress[s2] : -# 2294| mu2294_2(String) = Uninitialized[s2] : &:r2294_1 -# 2294| r2294_3(glval<unknown>) = FunctionAddress[String] : -# 2294| v2294_4(void) = Call[String] : func:r2294_3, this:r2294_1 -# 2294| mu2294_5(unknown) = ^CallSideEffect : ~m? -# 2294| mu2294_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2294_1 -# 2295| r2295_1(glval<String>) = VariableAddress[s2] : -# 2295| r2295_2(glval<unknown>) = FunctionAddress[~String] : -# 2295| v2295_3(void) = Call[~String] : func:r2295_2, this:r2295_1 -# 2295| mu2295_4(unknown) = ^CallSideEffect : ~m? -# 2295| v2295_5(void) = ^IndirectReadSideEffect[-1] : &:r2295_1, ~m? -# 2295| mu2295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 -# 2293| r2293_56(glval<String>) = VariableAddress[s] : -# 2293| r2293_57(glval<unknown>) = FunctionAddress[~String] : -# 2293| v2293_58(void) = Call[~String] : func:r2293_57, this:r2293_56 -# 2293| mu2293_59(unknown) = ^CallSideEffect : ~m? -# 2293| v2293_60(void) = ^IndirectReadSideEffect[-1] : &:r2293_56, ~m? -# 2293| mu2293_61(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_56 -# 2293| r2293_62(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : -# 2293| r2293_63(glval<unknown>) = FunctionAddress[operator++] : -# 2293| r2293_64(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2293_63, this:r2293_62 -# 2293| mu2293_65(unknown) = ^CallSideEffect : ~m? -# 2293| v2293_66(void) = ^IndirectReadSideEffect[-1] : &:r2293_62, ~m? -# 2293| mu2293_67(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2293_62 -# 2293| r2293_68(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2293_64 +# 2307| r2307_49(glval<String>) = CopyValue : r2307_47 +# 2307| r2307_50(glval<String>) = Convert : r2307_49 +# 2307| r2307_51(String &) = CopyValue : r2307_50 +# 2307| v2307_52(void) = Call[String] : func:r2307_44, this:r2307_42, 0:r2307_51 +# 2307| mu2307_53(unknown) = ^CallSideEffect : ~m? +# 2307| v2307_54(void) = ^BufferReadSideEffect[0] : &:r2307_51, ~m? +# 2307| mu2307_55(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_42 +# 2308| r2308_1(glval<String>) = VariableAddress[s2] : +# 2308| mu2308_2(String) = Uninitialized[s2] : &:r2308_1 +# 2308| r2308_3(glval<unknown>) = FunctionAddress[String] : +# 2308| v2308_4(void) = Call[String] : func:r2308_3, this:r2308_1 +# 2308| mu2308_5(unknown) = ^CallSideEffect : ~m? +# 2308| mu2308_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_1 +# 2309| r2309_1(glval<String>) = VariableAddress[s2] : +# 2309| r2309_2(glval<unknown>) = FunctionAddress[~String] : +# 2309| v2309_3(void) = Call[~String] : func:r2309_2, this:r2309_1 +# 2309| mu2309_4(unknown) = ^CallSideEffect : ~m? +# 2309| v2309_5(void) = ^IndirectReadSideEffect[-1] : &:r2309_1, ~m? +# 2309| mu2309_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1 +# 2307| r2307_56(glval<String>) = VariableAddress[s] : +# 2307| r2307_57(glval<unknown>) = FunctionAddress[~String] : +# 2307| v2307_58(void) = Call[~String] : func:r2307_57, this:r2307_56 +# 2307| mu2307_59(unknown) = ^CallSideEffect : ~m? +# 2307| v2307_60(void) = ^IndirectReadSideEffect[-1] : &:r2307_56, ~m? +# 2307| mu2307_61(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_56 +# 2307| r2307_62(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = VariableAddress[(__begin)] : +# 2307| r2307_63(glval<unknown>) = FunctionAddress[operator++] : +# 2307| r2307_64(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &> &) = Call[operator++] : func:r2307_63, this:r2307_62 +# 2307| mu2307_65(unknown) = ^CallSideEffect : ~m? +# 2307| v2307_66(void) = ^IndirectReadSideEffect[-1] : &:r2307_62, ~m? +# 2307| mu2307_67(iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>) = ^IndirectMayWriteSideEffect[-1] : &:r2307_62 +# 2307| r2307_68(glval<iterator<random_access_iterator_tag, String, ptrdiff_t, String *, String &>>) = CopyValue : r2307_64 #-----| Goto (back edge) -> Block 4 -# 2297| Block 6 -# 2297| r2297_1(glval<String>) = VariableAddress[s] : -# 2297| mu2297_2(String) = Uninitialized[s] : &:r2297_1 -# 2297| r2297_3(glval<unknown>) = FunctionAddress[String] : -# 2297| r2297_4(glval<char[6]>) = StringConstant["hello"] : -# 2297| r2297_5(char *) = Convert : r2297_4 -# 2297| v2297_6(void) = Call[String] : func:r2297_3, this:r2297_1, 0:r2297_5 -# 2297| mu2297_7(unknown) = ^CallSideEffect : ~m? -# 2297| v2297_8(void) = ^BufferReadSideEffect[0] : &:r2297_5, ~m? -# 2297| mu2297_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 -# 2297| r2297_10(glval<String>) = VariableAddress[s2] : -# 2297| mu2297_11(String) = Uninitialized[s2] : &:r2297_10 -# 2297| r2297_12(glval<unknown>) = FunctionAddress[String] : -# 2297| r2297_13(glval<char[6]>) = StringConstant["world"] : -# 2297| r2297_14(char *) = Convert : r2297_13 -# 2297| v2297_15(void) = Call[String] : func:r2297_12, this:r2297_10, 0:r2297_14 -# 2297| mu2297_16(unknown) = ^CallSideEffect : ~m? -# 2297| v2297_17(void) = ^BufferReadSideEffect[0] : &:r2297_14, ~m? -# 2297| mu2297_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_10 +# 2311| Block 6 +# 2311| r2311_1(glval<String>) = VariableAddress[s] : +# 2311| mu2311_2(String) = Uninitialized[s] : &:r2311_1 +# 2311| r2311_3(glval<unknown>) = FunctionAddress[String] : +# 2311| r2311_4(glval<char[6]>) = StringConstant["hello"] : +# 2311| r2311_5(char *) = Convert : r2311_4 +# 2311| v2311_6(void) = Call[String] : func:r2311_3, this:r2311_1, 0:r2311_5 +# 2311| mu2311_7(unknown) = ^CallSideEffect : ~m? +# 2311| v2311_8(void) = ^BufferReadSideEffect[0] : &:r2311_5, ~m? +# 2311| mu2311_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_1 +# 2311| r2311_10(glval<String>) = VariableAddress[s2] : +# 2311| mu2311_11(String) = Uninitialized[s2] : &:r2311_10 +# 2311| r2311_12(glval<unknown>) = FunctionAddress[String] : +# 2311| r2311_13(glval<char[6]>) = StringConstant["world"] : +# 2311| r2311_14(char *) = Convert : r2311_13 +# 2311| v2311_15(void) = Call[String] : func:r2311_12, this:r2311_10, 0:r2311_14 +# 2311| mu2311_16(unknown) = ^CallSideEffect : ~m? +# 2311| v2311_17(void) = ^BufferReadSideEffect[0] : &:r2311_14, ~m? +# 2311| mu2311_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_10 #-----| Goto -> Block 7 -# 2297| Block 7 -# 2297| r2297_19(glval<char>) = VariableAddress[c] : -# 2297| r2297_20(char) = Load[c] : &:r2297_19, ~m? -# 2297| r2297_21(int) = Convert : r2297_20 -# 2297| r2297_22(int) = Constant[0] : -# 2297| r2297_23(bool) = CompareNE : r2297_21, r2297_22 -# 2297| v2297_24(void) = ConditionalBranch : r2297_23 +# 2311| Block 7 +# 2311| r2311_19(glval<char>) = VariableAddress[c] : +# 2311| r2311_20(char) = Load[c] : &:r2311_19, ~m? +# 2311| r2311_21(int) = Convert : r2311_20 +# 2311| r2311_22(int) = Constant[0] : +# 2311| r2311_23(bool) = CompareNE : r2311_21, r2311_22 +# 2311| v2311_24(void) = ConditionalBranch : r2311_23 #-----| False -> Block 9 #-----| True -> Block 8 -# 2298| Block 8 -# 2298| r2298_1(char) = Constant[0] : -# 2298| r2298_2(glval<char>) = VariableAddress[c] : -# 2298| mu2298_3(char) = Store[c] : &:r2298_2, r2298_1 -# 2297| r2297_25(glval<String>) = VariableAddress[s] : -# 2297| r2297_26(glval<unknown>) = FunctionAddress[pop_back] : -# 2297| r2297_27(char) = Call[pop_back] : func:r2297_26, this:r2297_25 -# 2297| mu2297_28(unknown) = ^CallSideEffect : ~m? -# 2297| v2297_29(void) = ^IndirectReadSideEffect[-1] : &:r2297_25, ~m? -# 2297| mu2297_30(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_25 -# 2297| r2297_31(glval<char>) = VariableAddress[c] : -# 2297| mu2297_32(char) = Store[c] : &:r2297_31, r2297_27 +# 2312| Block 8 +# 2312| r2312_1(char) = Constant[0] : +# 2312| r2312_2(glval<char>) = VariableAddress[c] : +# 2312| mu2312_3(char) = Store[c] : &:r2312_2, r2312_1 +# 2311| r2311_25(glval<String>) = VariableAddress[s] : +# 2311| r2311_26(glval<unknown>) = FunctionAddress[pop_back] : +# 2311| r2311_27(char) = Call[pop_back] : func:r2311_26, this:r2311_25 +# 2311| mu2311_28(unknown) = ^CallSideEffect : ~m? +# 2311| v2311_29(void) = ^IndirectReadSideEffect[-1] : &:r2311_25, ~m? +# 2311| mu2311_30(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_25 +# 2311| r2311_31(glval<char>) = VariableAddress[c] : +# 2311| mu2311_32(char) = Store[c] : &:r2311_31, r2311_27 #-----| Goto (back edge) -> Block 7 -# 2297| Block 9 -# 2297| r2297_33(glval<String>) = VariableAddress[s2] : -# 2297| r2297_34(glval<unknown>) = FunctionAddress[~String] : -# 2297| v2297_35(void) = Call[~String] : func:r2297_34, this:r2297_33 -# 2297| mu2297_36(unknown) = ^CallSideEffect : ~m? -# 2297| v2297_37(void) = ^IndirectReadSideEffect[-1] : &:r2297_33, ~m? -# 2297| mu2297_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_33 -# 2297| r2297_39(glval<String>) = VariableAddress[s] : -# 2297| r2297_40(glval<unknown>) = FunctionAddress[~String] : -# 2297| v2297_41(void) = Call[~String] : func:r2297_40, this:r2297_39 -# 2297| mu2297_42(unknown) = ^CallSideEffect : ~m? -# 2297| v2297_43(void) = ^IndirectReadSideEffect[-1] : &:r2297_39, ~m? -# 2297| mu2297_44(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_39 -# 2300| v2300_1(void) = NoOp : -# 2287| v2287_4(void) = ReturnVoid : -# 2287| v2287_5(void) = AliasedUse : ~m? -# 2287| v2287_6(void) = ExitFunction : - -# 2302| void IfDestructors2(bool) -# 2302| Block 0 -# 2302| v2302_1(void) = EnterFunction : -# 2302| mu2302_2(unknown) = AliasedDefinition : -# 2302| mu2302_3(unknown) = InitializeNonLocal : -# 2302| r2302_4(glval<bool>) = VariableAddress[b] : -# 2302| mu2302_5(bool) = InitializeParameter[b] : &:r2302_4 -# 2303| r2303_1(glval<String>) = VariableAddress[s] : -# 2303| mu2303_2(String) = Uninitialized[s] : &:r2303_1 -# 2303| r2303_3(glval<unknown>) = FunctionAddress[String] : -# 2303| r2303_4(glval<char[6]>) = StringConstant["hello"] : -# 2303| r2303_5(char *) = Convert : r2303_4 -# 2303| v2303_6(void) = Call[String] : func:r2303_3, this:r2303_1, 0:r2303_5 -# 2303| mu2303_7(unknown) = ^CallSideEffect : ~m? -# 2303| v2303_8(void) = ^BufferReadSideEffect[0] : &:r2303_5, ~m? -# 2303| mu2303_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2303_1 -# 2303| r2303_10(glval<bool>) = VariableAddress[b] : -# 2303| r2303_11(bool) = Load[b] : &:r2303_10, ~m? -# 2303| v2303_12(void) = ConditionalBranch : r2303_11 +# 2311| Block 9 +# 2311| r2311_33(glval<String>) = VariableAddress[s2] : +# 2311| r2311_34(glval<unknown>) = FunctionAddress[~String] : +# 2311| v2311_35(void) = Call[~String] : func:r2311_34, this:r2311_33 +# 2311| mu2311_36(unknown) = ^CallSideEffect : ~m? +# 2311| v2311_37(void) = ^IndirectReadSideEffect[-1] : &:r2311_33, ~m? +# 2311| mu2311_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_33 +# 2311| r2311_39(glval<String>) = VariableAddress[s] : +# 2311| r2311_40(glval<unknown>) = FunctionAddress[~String] : +# 2311| v2311_41(void) = Call[~String] : func:r2311_40, this:r2311_39 +# 2311| mu2311_42(unknown) = ^CallSideEffect : ~m? +# 2311| v2311_43(void) = ^IndirectReadSideEffect[-1] : &:r2311_39, ~m? +# 2311| mu2311_44(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_39 +# 2314| v2314_1(void) = NoOp : +# 2301| v2301_4(void) = ReturnVoid : +# 2301| v2301_5(void) = AliasedUse : ~m? +# 2301| v2301_6(void) = ExitFunction : + +# 2316| void IfDestructors2(bool) +# 2316| Block 0 +# 2316| v2316_1(void) = EnterFunction : +# 2316| mu2316_2(unknown) = AliasedDefinition : +# 2316| mu2316_3(unknown) = InitializeNonLocal : +# 2316| r2316_4(glval<bool>) = VariableAddress[b] : +# 2316| mu2316_5(bool) = InitializeParameter[b] : &:r2316_4 +# 2317| r2317_1(glval<String>) = VariableAddress[s] : +# 2317| mu2317_2(String) = Uninitialized[s] : &:r2317_1 +# 2317| r2317_3(glval<unknown>) = FunctionAddress[String] : +# 2317| r2317_4(glval<char[6]>) = StringConstant["hello"] : +# 2317| r2317_5(char *) = Convert : r2317_4 +# 2317| v2317_6(void) = Call[String] : func:r2317_3, this:r2317_1, 0:r2317_5 +# 2317| mu2317_7(unknown) = ^CallSideEffect : ~m? +# 2317| v2317_8(void) = ^BufferReadSideEffect[0] : &:r2317_5, ~m? +# 2317| mu2317_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2317_1 +# 2317| r2317_10(glval<bool>) = VariableAddress[b] : +# 2317| r2317_11(bool) = Load[b] : &:r2317_10, ~m? +# 2317| v2317_12(void) = ConditionalBranch : r2317_11 #-----| False -> Block 2 #-----| True -> Block 1 -# 2304| Block 1 -# 2304| r2304_1(glval<int>) = VariableAddress[x] : -# 2304| r2304_2(int) = Constant[0] : -# 2304| mu2304_3(int) = Store[x] : &:r2304_1, r2304_2 +# 2318| Block 1 +# 2318| r2318_1(glval<int>) = VariableAddress[x] : +# 2318| r2318_2(int) = Constant[0] : +# 2318| mu2318_3(int) = Store[x] : &:r2318_1, r2318_2 #-----| Goto -> Block 3 -# 2306| Block 2 -# 2306| r2306_1(glval<int>) = VariableAddress[y] : -# 2306| r2306_2(int) = Constant[0] : -# 2306| mu2306_3(int) = Store[y] : &:r2306_1, r2306_2 +# 2320| Block 2 +# 2320| r2320_1(glval<int>) = VariableAddress[y] : +# 2320| r2320_2(int) = Constant[0] : +# 2320| mu2320_3(int) = Store[y] : &:r2320_1, r2320_2 #-----| Goto -> Block 3 -# 2307| Block 3 -# 2307| r2307_1(glval<String>) = VariableAddress[s] : -# 2307| r2307_2(glval<unknown>) = FunctionAddress[~String] : -# 2307| v2307_3(void) = Call[~String] : func:r2307_2, this:r2307_1 -# 2307| mu2307_4(unknown) = ^CallSideEffect : ~m? -# 2307| v2307_5(void) = ^IndirectReadSideEffect[-1] : &:r2307_1, ~m? -# 2307| mu2307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 -# 2308| v2308_1(void) = NoOp : -# 2302| v2302_6(void) = ReturnVoid : -# 2302| v2302_7(void) = AliasedUse : ~m? -# 2302| v2302_8(void) = ExitFunction : - -# 2317| void IfDestructors3(bool) -# 2317| Block 0 -# 2317| v2317_1(void) = EnterFunction : -# 2317| mu2317_2(unknown) = AliasedDefinition : -# 2317| mu2317_3(unknown) = InitializeNonLocal : -# 2317| r2317_4(glval<bool>) = VariableAddress[b] : -# 2317| mu2317_5(bool) = InitializeParameter[b] : &:r2317_4 -# 2318| r2318_1(glval<Bool>) = VariableAddress[B] : -# 2318| mu2318_2(Bool) = Uninitialized[B] : &:r2318_1 -# 2318| r2318_3(glval<unknown>) = FunctionAddress[Bool] : -# 2318| r2318_4(glval<bool>) = VariableAddress[b] : -# 2318| r2318_5(bool) = Load[b] : &:r2318_4, ~m? -# 2318| v2318_6(void) = Call[Bool] : func:r2318_3, this:r2318_1, 0:r2318_5 -# 2318| mu2318_7(unknown) = ^CallSideEffect : ~m? -# 2318| mu2318_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 -# 2318| r2318_9(glval<Bool>) = VariableAddress[B] : -# 2318| r2318_10(glval<unknown>) = FunctionAddress[operator bool] : -# 2318| r2318_11(bool) = Call[operator bool] : func:r2318_10, this:r2318_9 -# 2318| mu2318_12(unknown) = ^CallSideEffect : ~m? -# 2318| v2318_13(void) = ^IndirectReadSideEffect[-1] : &:r2318_9, ~m? -# 2318| mu2318_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2318_9 -# 2318| r2318_15(bool) = CopyValue : r2318_11 -# 2318| v2318_16(void) = ConditionalBranch : r2318_15 +# 2321| Block 3 +# 2321| r2321_1(glval<String>) = VariableAddress[s] : +# 2321| r2321_2(glval<unknown>) = FunctionAddress[~String] : +# 2321| v2321_3(void) = Call[~String] : func:r2321_2, this:r2321_1 +# 2321| mu2321_4(unknown) = ^CallSideEffect : ~m? +# 2321| v2321_5(void) = ^IndirectReadSideEffect[-1] : &:r2321_1, ~m? +# 2321| mu2321_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 +# 2322| v2322_1(void) = NoOp : +# 2316| v2316_6(void) = ReturnVoid : +# 2316| v2316_7(void) = AliasedUse : ~m? +# 2316| v2316_8(void) = ExitFunction : + +# 2331| void IfDestructors3(bool) +# 2331| Block 0 +# 2331| v2331_1(void) = EnterFunction : +# 2331| mu2331_2(unknown) = AliasedDefinition : +# 2331| mu2331_3(unknown) = InitializeNonLocal : +# 2331| r2331_4(glval<bool>) = VariableAddress[b] : +# 2331| mu2331_5(bool) = InitializeParameter[b] : &:r2331_4 +# 2332| r2332_1(glval<Bool>) = VariableAddress[B] : +# 2332| mu2332_2(Bool) = Uninitialized[B] : &:r2332_1 +# 2332| r2332_3(glval<unknown>) = FunctionAddress[Bool] : +# 2332| r2332_4(glval<bool>) = VariableAddress[b] : +# 2332| r2332_5(bool) = Load[b] : &:r2332_4, ~m? +# 2332| v2332_6(void) = Call[Bool] : func:r2332_3, this:r2332_1, 0:r2332_5 +# 2332| mu2332_7(unknown) = ^CallSideEffect : ~m? +# 2332| mu2332_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2332_1 +# 2332| r2332_9(glval<Bool>) = VariableAddress[B] : +# 2332| r2332_10(glval<unknown>) = FunctionAddress[operator bool] : +# 2332| r2332_11(bool) = Call[operator bool] : func:r2332_10, this:r2332_9 +# 2332| mu2332_12(unknown) = ^CallSideEffect : ~m? +# 2332| v2332_13(void) = ^IndirectReadSideEffect[-1] : &:r2332_9, ~m? +# 2332| mu2332_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2332_9 +# 2332| r2332_15(bool) = CopyValue : r2332_11 +# 2332| v2332_16(void) = ConditionalBranch : r2332_15 #-----| False -> Block 2 #-----| True -> Block 1 -# 2319| Block 1 -# 2319| r2319_1(glval<String>) = VariableAddress[s1] : -# 2319| mu2319_2(String) = Uninitialized[s1] : &:r2319_1 -# 2319| r2319_3(glval<unknown>) = FunctionAddress[String] : -# 2319| v2319_4(void) = Call[String] : func:r2319_3, this:r2319_1 -# 2319| mu2319_5(unknown) = ^CallSideEffect : ~m? -# 2319| mu2319_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2319_1 -# 2320| r2320_1(glval<String>) = VariableAddress[s1] : -# 2320| r2320_2(glval<unknown>) = FunctionAddress[~String] : -# 2320| v2320_3(void) = Call[~String] : func:r2320_2, this:r2320_1 -# 2320| mu2320_4(unknown) = ^CallSideEffect : ~m? -# 2320| v2320_5(void) = ^IndirectReadSideEffect[-1] : &:r2320_1, ~m? -# 2320| mu2320_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 +# 2333| Block 1 +# 2333| r2333_1(glval<String>) = VariableAddress[s1] : +# 2333| mu2333_2(String) = Uninitialized[s1] : &:r2333_1 +# 2333| r2333_3(glval<unknown>) = FunctionAddress[String] : +# 2333| v2333_4(void) = Call[String] : func:r2333_3, this:r2333_1 +# 2333| mu2333_5(unknown) = ^CallSideEffect : ~m? +# 2333| mu2333_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2333_1 +# 2334| r2334_1(glval<String>) = VariableAddress[s1] : +# 2334| r2334_2(glval<unknown>) = FunctionAddress[~String] : +# 2334| v2334_3(void) = Call[~String] : func:r2334_2, this:r2334_1 +# 2334| mu2334_4(unknown) = ^CallSideEffect : ~m? +# 2334| v2334_5(void) = ^IndirectReadSideEffect[-1] : &:r2334_1, ~m? +# 2334| mu2334_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2334_1 #-----| Goto -> Block 3 -# 2321| Block 2 -# 2321| r2321_1(glval<String>) = VariableAddress[s2] : -# 2321| mu2321_2(String) = Uninitialized[s2] : &:r2321_1 -# 2321| r2321_3(glval<unknown>) = FunctionAddress[String] : -# 2321| v2321_4(void) = Call[String] : func:r2321_3, this:r2321_1 -# 2321| mu2321_5(unknown) = ^CallSideEffect : ~m? -# 2321| mu2321_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2321_1 -# 2322| r2322_1(glval<String>) = VariableAddress[s2] : -# 2322| r2322_2(glval<unknown>) = FunctionAddress[~String] : -# 2322| v2322_3(void) = Call[~String] : func:r2322_2, this:r2322_1 -# 2322| mu2322_4(unknown) = ^CallSideEffect : ~m? -# 2322| v2322_5(void) = ^IndirectReadSideEffect[-1] : &:r2322_1, ~m? -# 2322| mu2322_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2322_1 +# 2335| Block 2 +# 2335| r2335_1(glval<String>) = VariableAddress[s2] : +# 2335| mu2335_2(String) = Uninitialized[s2] : &:r2335_1 +# 2335| r2335_3(glval<unknown>) = FunctionAddress[String] : +# 2335| v2335_4(void) = Call[String] : func:r2335_3, this:r2335_1 +# 2335| mu2335_5(unknown) = ^CallSideEffect : ~m? +# 2335| mu2335_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 +# 2336| r2336_1(glval<String>) = VariableAddress[s2] : +# 2336| r2336_2(glval<unknown>) = FunctionAddress[~String] : +# 2336| v2336_3(void) = Call[~String] : func:r2336_2, this:r2336_1 +# 2336| mu2336_4(unknown) = ^CallSideEffect : ~m? +# 2336| v2336_5(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, ~m? +# 2336| mu2336_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 #-----| Goto -> Block 3 -# 2322| Block 3 -# 2322| r2322_7(glval<Bool>) = VariableAddress[B] : -# 2322| r2322_8(glval<unknown>) = FunctionAddress[~Bool] : -# 2322| v2322_9(void) = Call[~Bool] : func:r2322_8, this:r2322_7 -# 2322| mu2322_10(unknown) = ^CallSideEffect : ~m? -# 2322| v2322_11(void) = ^IndirectReadSideEffect[-1] : &:r2322_7, ~m? -# 2322| mu2322_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2322_7 -# 2323| v2323_1(void) = NoOp : -# 2317| v2317_6(void) = ReturnVoid : -# 2317| v2317_7(void) = AliasedUse : ~m? -# 2317| v2317_8(void) = ExitFunction : - -# 2325| void WhileLoopDestructors(bool) -# 2325| Block 0 -# 2325| v2325_1(void) = EnterFunction : -# 2325| mu2325_2(unknown) = AliasedDefinition : -# 2325| mu2325_3(unknown) = InitializeNonLocal : -# 2325| r2325_4(glval<bool>) = VariableAddress[b] : -# 2325| mu2325_5(bool) = InitializeParameter[b] : &:r2325_4 -# 2327| r2327_1(glval<String>) = VariableAddress[s] : -# 2327| mu2327_2(String) = Uninitialized[s] : &:r2327_1 -# 2327| r2327_3(glval<unknown>) = FunctionAddress[String] : -# 2327| v2327_4(void) = Call[String] : func:r2327_3, this:r2327_1 -# 2327| mu2327_5(unknown) = ^CallSideEffect : ~m? -# 2327| mu2327_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2327_1 +# 2336| Block 3 +# 2336| r2336_7(glval<Bool>) = VariableAddress[B] : +# 2336| r2336_8(glval<unknown>) = FunctionAddress[~Bool] : +# 2336| v2336_9(void) = Call[~Bool] : func:r2336_8, this:r2336_7 +# 2336| mu2336_10(unknown) = ^CallSideEffect : ~m? +# 2336| v2336_11(void) = ^IndirectReadSideEffect[-1] : &:r2336_7, ~m? +# 2336| mu2336_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_7 +# 2337| v2337_1(void) = NoOp : +# 2331| v2331_6(void) = ReturnVoid : +# 2331| v2331_7(void) = AliasedUse : ~m? +# 2331| v2331_8(void) = ExitFunction : + +# 2339| void WhileLoopDestructors(bool) +# 2339| Block 0 +# 2339| v2339_1(void) = EnterFunction : +# 2339| mu2339_2(unknown) = AliasedDefinition : +# 2339| mu2339_3(unknown) = InitializeNonLocal : +# 2339| r2339_4(glval<bool>) = VariableAddress[b] : +# 2339| mu2339_5(bool) = InitializeParameter[b] : &:r2339_4 +# 2341| r2341_1(glval<String>) = VariableAddress[s] : +# 2341| mu2341_2(String) = Uninitialized[s] : &:r2341_1 +# 2341| r2341_3(glval<unknown>) = FunctionAddress[String] : +# 2341| v2341_4(void) = Call[String] : func:r2341_3, this:r2341_1 +# 2341| mu2341_5(unknown) = ^CallSideEffect : ~m? +# 2341| mu2341_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2341_1 #-----| Goto -> Block 1 -# 2328| Block 1 -# 2328| r2328_1(glval<bool>) = VariableAddress[b] : -# 2328| r2328_2(bool) = Load[b] : &:r2328_1, ~m? -# 2328| v2328_3(void) = ConditionalBranch : r2328_2 +# 2342| Block 1 +# 2342| r2342_1(glval<bool>) = VariableAddress[b] : +# 2342| r2342_2(bool) = Load[b] : &:r2342_1, ~m? +# 2342| v2342_3(void) = ConditionalBranch : r2342_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2329| Block 2 -# 2329| r2329_1(bool) = Constant[0] : -# 2329| r2329_2(glval<bool>) = VariableAddress[b] : -# 2329| mu2329_3(bool) = Store[b] : &:r2329_2, r2329_1 +# 2343| Block 2 +# 2343| r2343_1(bool) = Constant[0] : +# 2343| r2343_2(glval<bool>) = VariableAddress[b] : +# 2343| mu2343_3(bool) = Store[b] : &:r2343_2, r2343_1 #-----| Goto (back edge) -> Block 1 -# 2331| Block 3 -# 2331| r2331_1(glval<String>) = VariableAddress[s] : -# 2331| r2331_2(glval<unknown>) = FunctionAddress[~String] : -# 2331| v2331_3(void) = Call[~String] : func:r2331_2, this:r2331_1 -# 2331| mu2331_4(unknown) = ^CallSideEffect : ~m? -# 2331| v2331_5(void) = ^IndirectReadSideEffect[-1] : &:r2331_1, ~m? -# 2331| mu2331_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2331_1 +# 2345| Block 3 +# 2345| r2345_1(glval<String>) = VariableAddress[s] : +# 2345| r2345_2(glval<unknown>) = FunctionAddress[~String] : +# 2345| v2345_3(void) = Call[~String] : func:r2345_2, this:r2345_1 +# 2345| mu2345_4(unknown) = ^CallSideEffect : ~m? +# 2345| v2345_5(void) = ^IndirectReadSideEffect[-1] : &:r2345_1, ~m? +# 2345| mu2345_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2345_1 #-----| Goto -> Block 4 -# 2334| Block 4 -# 2334| r2334_1(glval<Bool>) = VariableAddress[B] : -# 2334| mu2334_2(Bool) = Uninitialized[B] : &:r2334_1 -# 2334| r2334_3(glval<unknown>) = FunctionAddress[Bool] : -# 2334| r2334_4(glval<bool>) = VariableAddress[b] : -# 2334| r2334_5(bool) = Load[b] : &:r2334_4, ~m? -# 2334| v2334_6(void) = Call[Bool] : func:r2334_3, this:r2334_1, 0:r2334_5 -# 2334| mu2334_7(unknown) = ^CallSideEffect : ~m? -# 2334| mu2334_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_1 -# 2334| r2334_9(glval<Bool>) = VariableAddress[B] : -# 2334| r2334_10(glval<unknown>) = FunctionAddress[operator bool] : -# 2334| r2334_11(bool) = Call[operator bool] : func:r2334_10, this:r2334_9 -# 2334| mu2334_12(unknown) = ^CallSideEffect : ~m? -# 2334| v2334_13(void) = ^IndirectReadSideEffect[-1] : &:r2334_9, ~m? -# 2334| mu2334_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2334_9 -# 2334| r2334_15(bool) = CopyValue : r2334_11 -# 2334| v2334_16(void) = ConditionalBranch : r2334_15 +# 2348| Block 4 +# 2348| r2348_1(glval<Bool>) = VariableAddress[B] : +# 2348| mu2348_2(Bool) = Uninitialized[B] : &:r2348_1 +# 2348| r2348_3(glval<unknown>) = FunctionAddress[Bool] : +# 2348| r2348_4(glval<bool>) = VariableAddress[b] : +# 2348| r2348_5(bool) = Load[b] : &:r2348_4, ~m? +# 2348| v2348_6(void) = Call[Bool] : func:r2348_3, this:r2348_1, 0:r2348_5 +# 2348| mu2348_7(unknown) = ^CallSideEffect : ~m? +# 2348| mu2348_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2348_1 +# 2348| r2348_9(glval<Bool>) = VariableAddress[B] : +# 2348| r2348_10(glval<unknown>) = FunctionAddress[operator bool] : +# 2348| r2348_11(bool) = Call[operator bool] : func:r2348_10, this:r2348_9 +# 2348| mu2348_12(unknown) = ^CallSideEffect : ~m? +# 2348| v2348_13(void) = ^IndirectReadSideEffect[-1] : &:r2348_9, ~m? +# 2348| mu2348_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2348_9 +# 2348| r2348_15(bool) = CopyValue : r2348_11 +# 2348| v2348_16(void) = ConditionalBranch : r2348_15 #-----| False -> Block 6 #-----| True -> Block 5 -# 2335| Block 5 -# 2335| r2335_1(bool) = Constant[0] : -# 2335| r2335_2(glval<bool>) = VariableAddress[b] : -# 2335| mu2335_3(bool) = Store[b] : &:r2335_2, r2335_1 -# 2336| r2336_1(glval<Bool>) = VariableAddress[B] : -# 2336| r2336_2(glval<unknown>) = FunctionAddress[~Bool] : -# 2336| v2336_3(void) = Call[~Bool] : func:r2336_2, this:r2336_1 -# 2336| mu2336_4(unknown) = ^CallSideEffect : ~m? -# 2336| v2336_5(void) = ^IndirectReadSideEffect[-1] : &:r2336_1, ~m? -# 2336| mu2336_6(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 +# 2349| Block 5 +# 2349| r2349_1(bool) = Constant[0] : +# 2349| r2349_2(glval<bool>) = VariableAddress[b] : +# 2349| mu2349_3(bool) = Store[b] : &:r2349_2, r2349_1 +# 2350| r2350_1(glval<Bool>) = VariableAddress[B] : +# 2350| r2350_2(glval<unknown>) = FunctionAddress[~Bool] : +# 2350| v2350_3(void) = Call[~Bool] : func:r2350_2, this:r2350_1 +# 2350| mu2350_4(unknown) = ^CallSideEffect : ~m? +# 2350| v2350_5(void) = ^IndirectReadSideEffect[-1] : &:r2350_1, ~m? +# 2350| mu2350_6(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2350_1 #-----| Goto (back edge) -> Block 4 -# 2336| Block 6 -# 2336| r2336_7(glval<Bool>) = VariableAddress[B] : -# 2336| r2336_8(glval<unknown>) = FunctionAddress[~Bool] : -# 2336| v2336_9(void) = Call[~Bool] : func:r2336_8, this:r2336_7 -# 2336| mu2336_10(unknown) = ^CallSideEffect : ~m? -# 2336| v2336_11(void) = ^IndirectReadSideEffect[-1] : &:r2336_7, ~m? -# 2336| mu2336_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2336_7 -# 2338| v2338_1(void) = NoOp : -# 2325| v2325_6(void) = ReturnVoid : -# 2325| v2325_7(void) = AliasedUse : ~m? -# 2325| v2325_8(void) = ExitFunction : - -# 2340| void VoidFunc() -# 2340| Block 0 -# 2340| v2340_1(void) = EnterFunction : -# 2340| mu2340_2(unknown) = AliasedDefinition : -# 2340| mu2340_3(unknown) = InitializeNonLocal : -# 2340| v2340_4(void) = NoOp : -# 2340| v2340_5(void) = ReturnVoid : -# 2340| v2340_6(void) = AliasedUse : ~m? -# 2340| v2340_7(void) = ExitFunction : - -# 2342| void IfReturnDestructors(bool) -# 2342| Block 0 -# 2342| v2342_1(void) = EnterFunction : -# 2342| mu2342_2(unknown) = AliasedDefinition : -# 2342| mu2342_3(unknown) = InitializeNonLocal : -# 2342| r2342_4(glval<bool>) = VariableAddress[b] : -# 2342| mu2342_5(bool) = InitializeParameter[b] : &:r2342_4 -# 2343| r2343_1(glval<String>) = VariableAddress[s] : -# 2343| mu2343_2(String) = Uninitialized[s] : &:r2343_1 -# 2343| r2343_3(glval<unknown>) = FunctionAddress[String] : -# 2343| v2343_4(void) = Call[String] : func:r2343_3, this:r2343_1 -# 2343| mu2343_5(unknown) = ^CallSideEffect : ~m? -# 2343| mu2343_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2343_1 -# 2344| r2344_1(glval<bool>) = VariableAddress[b] : -# 2344| r2344_2(bool) = Load[b] : &:r2344_1, ~m? -# 2344| v2344_3(void) = ConditionalBranch : r2344_2 +# 2350| Block 6 +# 2350| r2350_7(glval<Bool>) = VariableAddress[B] : +# 2350| r2350_8(glval<unknown>) = FunctionAddress[~Bool] : +# 2350| v2350_9(void) = Call[~Bool] : func:r2350_8, this:r2350_7 +# 2350| mu2350_10(unknown) = ^CallSideEffect : ~m? +# 2350| v2350_11(void) = ^IndirectReadSideEffect[-1] : &:r2350_7, ~m? +# 2350| mu2350_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2350_7 +# 2352| v2352_1(void) = NoOp : +# 2339| v2339_6(void) = ReturnVoid : +# 2339| v2339_7(void) = AliasedUse : ~m? +# 2339| v2339_8(void) = ExitFunction : + +# 2354| void VoidFunc() +# 2354| Block 0 +# 2354| v2354_1(void) = EnterFunction : +# 2354| mu2354_2(unknown) = AliasedDefinition : +# 2354| mu2354_3(unknown) = InitializeNonLocal : +# 2354| v2354_4(void) = NoOp : +# 2354| v2354_5(void) = ReturnVoid : +# 2354| v2354_6(void) = AliasedUse : ~m? +# 2354| v2354_7(void) = ExitFunction : + +# 2356| void IfReturnDestructors(bool) +# 2356| Block 0 +# 2356| v2356_1(void) = EnterFunction : +# 2356| mu2356_2(unknown) = AliasedDefinition : +# 2356| mu2356_3(unknown) = InitializeNonLocal : +# 2356| r2356_4(glval<bool>) = VariableAddress[b] : +# 2356| mu2356_5(bool) = InitializeParameter[b] : &:r2356_4 +# 2357| r2357_1(glval<String>) = VariableAddress[s] : +# 2357| mu2357_2(String) = Uninitialized[s] : &:r2357_1 +# 2357| r2357_3(glval<unknown>) = FunctionAddress[String] : +# 2357| v2357_4(void) = Call[String] : func:r2357_3, this:r2357_1 +# 2357| mu2357_5(unknown) = ^CallSideEffect : ~m? +# 2357| mu2357_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2357_1 +# 2358| r2358_1(glval<bool>) = VariableAddress[b] : +# 2358| r2358_2(bool) = Load[b] : &:r2358_1, ~m? +# 2358| v2358_3(void) = ConditionalBranch : r2358_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2342| Block 1 -# 2342| v2342_6(void) = ReturnVoid : -# 2342| v2342_7(void) = AliasedUse : ~m? -# 2342| v2342_8(void) = ExitFunction : - -# 2345| Block 2 -# 2345| v2345_1(void) = NoOp : -# 2351| r2351_1(glval<String>) = VariableAddress[s] : -# 2351| r2351_2(glval<unknown>) = FunctionAddress[~String] : -# 2351| v2351_3(void) = Call[~String] : func:r2351_2, this:r2351_1 -# 2351| mu2351_4(unknown) = ^CallSideEffect : ~m? -# 2351| v2351_5(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, ~m? -# 2351| mu2351_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 +# 2356| Block 1 +# 2356| v2356_6(void) = ReturnVoid : +# 2356| v2356_7(void) = AliasedUse : ~m? +# 2356| v2356_8(void) = ExitFunction : + +# 2359| Block 2 +# 2359| v2359_1(void) = NoOp : +# 2365| r2365_1(glval<String>) = VariableAddress[s] : +# 2365| r2365_2(glval<unknown>) = FunctionAddress[~String] : +# 2365| v2365_3(void) = Call[~String] : func:r2365_2, this:r2365_1 +# 2365| mu2365_4(unknown) = ^CallSideEffect : ~m? +# 2365| v2365_5(void) = ^IndirectReadSideEffect[-1] : &:r2365_1, ~m? +# 2365| mu2365_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_1 #-----| Goto -> Block 1 -# 2347| Block 3 -# 2347| r2347_1(glval<bool>) = VariableAddress[b] : -# 2347| r2347_2(bool) = Load[b] : &:r2347_1, ~m? -# 2347| v2347_3(void) = ConditionalBranch : r2347_2 +# 2361| Block 3 +# 2361| r2361_1(glval<bool>) = VariableAddress[b] : +# 2361| r2361_2(bool) = Load[b] : &:r2361_1, ~m? +# 2361| v2361_3(void) = ConditionalBranch : r2361_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2348| Block 4 -# 2348| r2348_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2348| v2348_2(void) = Call[VoidFunc] : func:r2348_1 -# 2348| mu2348_3(unknown) = ^CallSideEffect : ~m? -# 2348| v2348_4(void) = NoOp : -# 2351| r2351_7(glval<String>) = VariableAddress[s] : -# 2351| r2351_8(glval<unknown>) = FunctionAddress[~String] : -# 2351| v2351_9(void) = Call[~String] : func:r2351_8, this:r2351_7 -# 2351| mu2351_10(unknown) = ^CallSideEffect : ~m? -# 2351| v2351_11(void) = ^IndirectReadSideEffect[-1] : &:r2351_7, ~m? -# 2351| mu2351_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_7 +# 2362| Block 4 +# 2362| r2362_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2362| v2362_2(void) = Call[VoidFunc] : func:r2362_1 +# 2362| mu2362_3(unknown) = ^CallSideEffect : ~m? +# 2362| v2362_4(void) = NoOp : +# 2365| r2365_7(glval<String>) = VariableAddress[s] : +# 2365| r2365_8(glval<unknown>) = FunctionAddress[~String] : +# 2365| v2365_9(void) = Call[~String] : func:r2365_8, this:r2365_7 +# 2365| mu2365_10(unknown) = ^CallSideEffect : ~m? +# 2365| v2365_11(void) = ^IndirectReadSideEffect[-1] : &:r2365_7, ~m? +# 2365| mu2365_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_7 #-----| Goto -> Block 1 -# 2350| Block 5 -# 2350| r2350_1(glval<String>) = VariableAddress[s] : -# 2351| v2351_13(void) = NoOp : -# 2351| r2351_14(glval<String>) = VariableAddress[s] : -# 2351| r2351_15(glval<unknown>) = FunctionAddress[~String] : -# 2351| v2351_16(void) = Call[~String] : func:r2351_15, this:r2351_14 -# 2351| mu2351_17(unknown) = ^CallSideEffect : ~m? -# 2351| v2351_18(void) = ^IndirectReadSideEffect[-1] : &:r2351_14, ~m? -# 2351| mu2351_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r2351_14 +# 2364| Block 5 +# 2364| r2364_1(glval<String>) = VariableAddress[s] : +# 2365| v2365_13(void) = NoOp : +# 2365| r2365_14(glval<String>) = VariableAddress[s] : +# 2365| r2365_15(glval<unknown>) = FunctionAddress[~String] : +# 2365| v2365_16(void) = Call[~String] : func:r2365_15, this:r2365_14 +# 2365| mu2365_17(unknown) = ^CallSideEffect : ~m? +# 2365| v2365_18(void) = ^IndirectReadSideEffect[-1] : &:r2365_14, ~m? +# 2365| mu2365_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r2365_14 #-----| Goto -> Block 1 -# 2353| int IfReturnDestructors3(bool) -# 2353| Block 0 -# 2353| v2353_1(void) = EnterFunction : -# 2353| mu2353_2(unknown) = AliasedDefinition : -# 2353| mu2353_3(unknown) = InitializeNonLocal : -# 2353| r2353_4(glval<bool>) = VariableAddress[b] : -# 2353| mu2353_5(bool) = InitializeParameter[b] : &:r2353_4 -# 2354| r2354_1(glval<String>) = VariableAddress[s] : -# 2354| mu2354_2(String) = Uninitialized[s] : &:r2354_1 -# 2354| r2354_3(glval<unknown>) = FunctionAddress[String] : -# 2354| v2354_4(void) = Call[String] : func:r2354_3, this:r2354_1 -# 2354| mu2354_5(unknown) = ^CallSideEffect : ~m? -# 2354| mu2354_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2354_1 -# 2355| r2355_1(glval<bool>) = VariableAddress[b] : -# 2355| r2355_2(bool) = Load[b] : &:r2355_1, ~m? -# 2355| v2355_3(void) = ConditionalBranch : r2355_2 +# 2367| int IfReturnDestructors3(bool) +# 2367| Block 0 +# 2367| v2367_1(void) = EnterFunction : +# 2367| mu2367_2(unknown) = AliasedDefinition : +# 2367| mu2367_3(unknown) = InitializeNonLocal : +# 2367| r2367_4(glval<bool>) = VariableAddress[b] : +# 2367| mu2367_5(bool) = InitializeParameter[b] : &:r2367_4 +# 2368| r2368_1(glval<String>) = VariableAddress[s] : +# 2368| mu2368_2(String) = Uninitialized[s] : &:r2368_1 +# 2368| r2368_3(glval<unknown>) = FunctionAddress[String] : +# 2368| v2368_4(void) = Call[String] : func:r2368_3, this:r2368_1 +# 2368| mu2368_5(unknown) = ^CallSideEffect : ~m? +# 2368| mu2368_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_1 +# 2369| r2369_1(glval<bool>) = VariableAddress[b] : +# 2369| r2369_2(bool) = Load[b] : &:r2369_1, ~m? +# 2369| v2369_3(void) = ConditionalBranch : r2369_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2353| Block 1 -# 2353| r2353_6(glval<int>) = VariableAddress[#return] : -# 2353| v2353_7(void) = ReturnValue : &:r2353_6, ~m? -# 2353| v2353_8(void) = AliasedUse : ~m? -# 2353| v2353_9(void) = ExitFunction : - -# 2356| Block 2 -# 2356| r2356_1(glval<int>) = VariableAddress[#return] : -# 2356| r2356_2(int) = Constant[1] : -# 2356| mu2356_3(int) = Store[#return] : &:r2356_1, r2356_2 -# 2359| r2359_1(glval<String>) = VariableAddress[s] : -# 2359| r2359_2(glval<unknown>) = FunctionAddress[~String] : -# 2359| v2359_3(void) = Call[~String] : func:r2359_2, this:r2359_1 -# 2359| mu2359_4(unknown) = ^CallSideEffect : ~m? -# 2359| v2359_5(void) = ^IndirectReadSideEffect[-1] : &:r2359_1, ~m? -# 2359| mu2359_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_1 +# 2367| Block 1 +# 2367| r2367_6(glval<int>) = VariableAddress[#return] : +# 2367| v2367_7(void) = ReturnValue : &:r2367_6, ~m? +# 2367| v2367_8(void) = AliasedUse : ~m? +# 2367| v2367_9(void) = ExitFunction : + +# 2370| Block 2 +# 2370| r2370_1(glval<int>) = VariableAddress[#return] : +# 2370| r2370_2(int) = Constant[1] : +# 2370| mu2370_3(int) = Store[#return] : &:r2370_1, r2370_2 +# 2373| r2373_1(glval<String>) = VariableAddress[s] : +# 2373| r2373_2(glval<unknown>) = FunctionAddress[~String] : +# 2373| v2373_3(void) = Call[~String] : func:r2373_2, this:r2373_1 +# 2373| mu2373_4(unknown) = ^CallSideEffect : ~m? +# 2373| v2373_5(void) = ^IndirectReadSideEffect[-1] : &:r2373_1, ~m? +# 2373| mu2373_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2373_1 #-----| Goto -> Block 1 -# 2358| Block 3 -# 2358| r2358_1(glval<int>) = VariableAddress[#return] : -# 2358| r2358_2(int) = Constant[0] : -# 2358| mu2358_3(int) = Store[#return] : &:r2358_1, r2358_2 -# 2359| r2359_7(glval<String>) = VariableAddress[s] : -# 2359| r2359_8(glval<unknown>) = FunctionAddress[~String] : -# 2359| v2359_9(void) = Call[~String] : func:r2359_8, this:r2359_7 -# 2359| mu2359_10(unknown) = ^CallSideEffect : ~m? -# 2359| v2359_11(void) = ^IndirectReadSideEffect[-1] : &:r2359_7, ~m? -# 2359| mu2359_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2359_7 +# 2372| Block 3 +# 2372| r2372_1(glval<int>) = VariableAddress[#return] : +# 2372| r2372_2(int) = Constant[0] : +# 2372| mu2372_3(int) = Store[#return] : &:r2372_1, r2372_2 +# 2373| r2373_7(glval<String>) = VariableAddress[s] : +# 2373| r2373_8(glval<unknown>) = FunctionAddress[~String] : +# 2373| v2373_9(void) = Call[~String] : func:r2373_8, this:r2373_7 +# 2373| mu2373_10(unknown) = ^CallSideEffect : ~m? +# 2373| v2373_11(void) = ^IndirectReadSideEffect[-1] : &:r2373_7, ~m? +# 2373| mu2373_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2373_7 #-----| Goto -> Block 1 -# 2361| void VoidReturnDestructors() -# 2361| Block 0 -# 2361| v2361_1(void) = EnterFunction : -# 2361| mu2361_2(unknown) = AliasedDefinition : -# 2361| mu2361_3(unknown) = InitializeNonLocal : -# 2362| r2362_1(glval<String>) = VariableAddress[s] : -# 2362| mu2362_2(String) = Uninitialized[s] : &:r2362_1 -# 2362| r2362_3(glval<unknown>) = FunctionAddress[String] : -# 2362| v2362_4(void) = Call[String] : func:r2362_3, this:r2362_1 -# 2362| mu2362_5(unknown) = ^CallSideEffect : ~m? -# 2362| mu2362_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2362_1 -# 2363| r2363_1(glval<unknown>) = FunctionAddress[VoidFunc] : -# 2363| v2363_2(void) = Call[VoidFunc] : func:r2363_1 -# 2363| mu2363_3(unknown) = ^CallSideEffect : ~m? -# 2363| v2363_4(void) = NoOp : -# 2364| r2364_1(glval<String>) = VariableAddress[s] : -# 2364| r2364_2(glval<unknown>) = FunctionAddress[~String] : -# 2364| v2364_3(void) = Call[~String] : func:r2364_2, this:r2364_1 -# 2364| mu2364_4(unknown) = ^CallSideEffect : ~m? -# 2364| v2364_5(void) = ^IndirectReadSideEffect[-1] : &:r2364_1, ~m? -# 2364| mu2364_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2364_1 -# 2361| v2361_4(void) = ReturnVoid : -# 2361| v2361_5(void) = AliasedUse : ~m? -# 2361| v2361_6(void) = ExitFunction : - -# 2374| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2374| Block 0 -# 2374| v2374_1(void) = EnterFunction : -# 2374| mu2374_2(unknown) = AliasedDefinition : -# 2374| mu2374_3(unknown) = InitializeNonLocal : -# 2376| r2376_1(glval<..:: *>) = VariableAddress[#return] : -# 2376| r2376_2(..()(..)) = FunctionAddress[VoidToInt] : -# 2376| mu2376_3(..:: *) = Store[#return] : &:r2376_1, r2376_2 -# 2374| r2374_4(glval<..:: *>) = VariableAddress[#return] : -# 2374| v2374_5(void) = ReturnValue : &:r2374_4, ~m? -# 2374| v2374_6(void) = AliasedUse : ~m? -# 2374| v2374_7(void) = ExitFunction : - -# 2381| int small_operation_should_not_be_constant_folded() -# 2381| Block 0 -# 2381| v2381_1(void) = EnterFunction : -# 2381| mu2381_2(unknown) = AliasedDefinition : -# 2381| mu2381_3(unknown) = InitializeNonLocal : -# 2382| r2382_1(glval<int>) = VariableAddress[#return] : -# 2382| r2382_2(int) = Constant[1] : -# 2382| r2382_3(int) = Constant[2] : -# 2382| r2382_4(int) = BitXor : r2382_2, r2382_3 -# 2382| mu2382_5(int) = Store[#return] : &:r2382_1, r2382_4 -# 2381| r2381_4(glval<int>) = VariableAddress[#return] : -# 2381| v2381_5(void) = ReturnValue : &:r2381_4, ~m? -# 2381| v2381_6(void) = AliasedUse : ~m? -# 2381| v2381_7(void) = ExitFunction : - -# 2392| int large_operation_should_be_constant_folded() -# 2392| Block 0 -# 2392| v2392_1(void) = EnterFunction : -# 2392| mu2392_2(unknown) = AliasedDefinition : -# 2392| mu2392_3(unknown) = InitializeNonLocal : -# 2393| r2393_1(glval<int>) = VariableAddress[#return] : -# 2393| r2393_2(int) = Constant[0] : -# 2393| mu2393_3(int) = Store[#return] : &:r2393_1, r2393_2 -# 2392| r2392_4(glval<int>) = VariableAddress[#return] : -# 2392| v2392_5(void) = ReturnValue : &:r2392_4, ~m? -# 2392| v2392_6(void) = AliasedUse : ~m? -# 2392| v2392_7(void) = ExitFunction : - -# 2396| void initialization_with_temp_destructor() -# 2396| Block 0 -# 2396| v2396_1(void) = EnterFunction : -# 2396| mu2396_2(unknown) = AliasedDefinition : -# 2396| mu2396_3(unknown) = InitializeNonLocal : -# 2397| r2397_1(glval<char>) = VariableAddress[x] : -# 2397| r2397_2(glval<ClassWithDestructor>) = VariableAddress[#temp2397:18] : -# 2397| mu2397_3(ClassWithDestructor) = Uninitialized[#temp2397:18] : &:r2397_2 -# 2397| r2397_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2397| v2397_5(void) = Call[ClassWithDestructor] : func:r2397_4, this:r2397_2 -# 2397| mu2397_6(unknown) = ^CallSideEffect : ~m? -# 2397| mu2397_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 -# 2397| r2397_8(glval<unknown>) = FunctionAddress[get_x] : -# 2397| r2397_9(char) = Call[get_x] : func:r2397_8, this:r2397_2 -# 2397| mu2397_10(unknown) = ^CallSideEffect : ~m? -# 2397| v2397_11(void) = ^IndirectReadSideEffect[-1] : &:r2397_2, ~m? -# 2397| mu2397_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2397_2 -# 2397| mu2397_13(char) = Store[x] : &:r2397_1, r2397_9 -# 2397| r2397_14(glval<char>) = VariableAddress[x] : -# 2397| r2397_15(char) = Load[x] : &:r2397_14, ~m? -# 2397| r2397_16(char) = Constant[0] : -# 2397| r2397_17(bool) = CompareNE : r2397_15, r2397_16 -# 2397| r2397_18(bool) = CopyValue : r2397_17 -# 2397| v2397_19(void) = ConditionalBranch : r2397_18 +# 2375| void VoidReturnDestructors() +# 2375| Block 0 +# 2375| v2375_1(void) = EnterFunction : +# 2375| mu2375_2(unknown) = AliasedDefinition : +# 2375| mu2375_3(unknown) = InitializeNonLocal : +# 2376| r2376_1(glval<String>) = VariableAddress[s] : +# 2376| mu2376_2(String) = Uninitialized[s] : &:r2376_1 +# 2376| r2376_3(glval<unknown>) = FunctionAddress[String] : +# 2376| v2376_4(void) = Call[String] : func:r2376_3, this:r2376_1 +# 2376| mu2376_5(unknown) = ^CallSideEffect : ~m? +# 2376| mu2376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2376_1 +# 2377| r2377_1(glval<unknown>) = FunctionAddress[VoidFunc] : +# 2377| v2377_2(void) = Call[VoidFunc] : func:r2377_1 +# 2377| mu2377_3(unknown) = ^CallSideEffect : ~m? +# 2377| v2377_4(void) = NoOp : +# 2378| r2378_1(glval<String>) = VariableAddress[s] : +# 2378| r2378_2(glval<unknown>) = FunctionAddress[~String] : +# 2378| v2378_3(void) = Call[~String] : func:r2378_2, this:r2378_1 +# 2378| mu2378_4(unknown) = ^CallSideEffect : ~m? +# 2378| v2378_5(void) = ^IndirectReadSideEffect[-1] : &:r2378_1, ~m? +# 2378| mu2378_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2378_1 +# 2375| v2375_4(void) = ReturnVoid : +# 2375| v2375_5(void) = AliasedUse : ~m? +# 2375| v2375_6(void) = ExitFunction : + +# 2388| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2388| Block 0 +# 2388| v2388_1(void) = EnterFunction : +# 2388| mu2388_2(unknown) = AliasedDefinition : +# 2388| mu2388_3(unknown) = InitializeNonLocal : +# 2390| r2390_1(glval<..:: *>) = VariableAddress[#return] : +# 2390| r2390_2(..()(..)) = FunctionAddress[VoidToInt] : +# 2390| mu2390_3(..:: *) = Store[#return] : &:r2390_1, r2390_2 +# 2388| r2388_4(glval<..:: *>) = VariableAddress[#return] : +# 2388| v2388_5(void) = ReturnValue : &:r2388_4, ~m? +# 2388| v2388_6(void) = AliasedUse : ~m? +# 2388| v2388_7(void) = ExitFunction : + +# 2395| int small_operation_should_not_be_constant_folded() +# 2395| Block 0 +# 2395| v2395_1(void) = EnterFunction : +# 2395| mu2395_2(unknown) = AliasedDefinition : +# 2395| mu2395_3(unknown) = InitializeNonLocal : +# 2396| r2396_1(glval<int>) = VariableAddress[#return] : +# 2396| r2396_2(int) = Constant[1] : +# 2396| r2396_3(int) = Constant[2] : +# 2396| r2396_4(int) = BitXor : r2396_2, r2396_3 +# 2396| mu2396_5(int) = Store[#return] : &:r2396_1, r2396_4 +# 2395| r2395_4(glval<int>) = VariableAddress[#return] : +# 2395| v2395_5(void) = ReturnValue : &:r2395_4, ~m? +# 2395| v2395_6(void) = AliasedUse : ~m? +# 2395| v2395_7(void) = ExitFunction : + +# 2406| int large_operation_should_be_constant_folded() +# 2406| Block 0 +# 2406| v2406_1(void) = EnterFunction : +# 2406| mu2406_2(unknown) = AliasedDefinition : +# 2406| mu2406_3(unknown) = InitializeNonLocal : +# 2407| r2407_1(glval<int>) = VariableAddress[#return] : +# 2407| r2407_2(int) = Constant[0] : +# 2407| mu2407_3(int) = Store[#return] : &:r2407_1, r2407_2 +# 2406| r2406_4(glval<int>) = VariableAddress[#return] : +# 2406| v2406_5(void) = ReturnValue : &:r2406_4, ~m? +# 2406| v2406_6(void) = AliasedUse : ~m? +# 2406| v2406_7(void) = ExitFunction : + +# 2410| void initialization_with_temp_destructor() +# 2410| Block 0 +# 2410| v2410_1(void) = EnterFunction : +# 2410| mu2410_2(unknown) = AliasedDefinition : +# 2410| mu2410_3(unknown) = InitializeNonLocal : +# 2411| r2411_1(glval<char>) = VariableAddress[x] : +# 2411| r2411_2(glval<ClassWithDestructor>) = VariableAddress[#temp2411:18] : +# 2411| mu2411_3(ClassWithDestructor) = Uninitialized[#temp2411:18] : &:r2411_2 +# 2411| r2411_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2411| v2411_5(void) = Call[ClassWithDestructor] : func:r2411_4, this:r2411_2 +# 2411| mu2411_6(unknown) = ^CallSideEffect : ~m? +# 2411| mu2411_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| r2411_8(glval<unknown>) = FunctionAddress[get_x] : +# 2411| r2411_9(char) = Call[get_x] : func:r2411_8, this:r2411_2 +# 2411| mu2411_10(unknown) = ^CallSideEffect : ~m? +# 2411| v2411_11(void) = ^IndirectReadSideEffect[-1] : &:r2411_2, ~m? +# 2411| mu2411_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 +# 2411| mu2411_13(char) = Store[x] : &:r2411_1, r2411_9 +# 2411| r2411_14(glval<char>) = VariableAddress[x] : +# 2411| r2411_15(char) = Load[x] : &:r2411_14, ~m? +# 2411| r2411_16(char) = Constant[0] : +# 2411| r2411_17(bool) = CompareNE : r2411_15, r2411_16 +# 2411| r2411_18(bool) = CopyValue : r2411_17 +# 2411| v2411_19(void) = ConditionalBranch : r2411_18 #-----| False -> Block 2 #-----| True -> Block 1 -# 2398| Block 1 -# 2398| r2398_1(glval<char>) = VariableAddress[x] : -# 2398| r2398_2(char) = Load[x] : &:r2398_1, ~m? -# 2398| r2398_3(char) = Constant[1] : -# 2398| r2398_4(char) = Add : r2398_2, r2398_3 -# 2398| mu2398_5(char) = Store[x] : &:r2398_1, r2398_4 +# 2412| Block 1 +# 2412| r2412_1(glval<char>) = VariableAddress[x] : +# 2412| r2412_2(char) = Load[x] : &:r2412_1, ~m? +# 2412| r2412_3(char) = Constant[1] : +# 2412| r2412_4(char) = Add : r2412_2, r2412_3 +# 2412| mu2412_5(char) = Store[x] : &:r2412_1, r2412_4 #-----| Goto -> Block 2 -# 2400| Block 2 -# 2400| r2400_1(glval<char>) = VariableAddress[x] : -# 2400| r2400_2(glval<ClassWithDestructor>) = VariableAddress[#temp2400:18] : -# 2400| mu2400_3(ClassWithDestructor) = Uninitialized[#temp2400:18] : &:r2400_2 -# 2400| r2400_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2400| v2400_5(void) = Call[ClassWithDestructor] : func:r2400_4, this:r2400_2 -# 2400| mu2400_6(unknown) = ^CallSideEffect : ~m? -# 2400| mu2400_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 -# 2400| r2400_8(glval<unknown>) = FunctionAddress[get_x] : -# 2400| r2400_9(char) = Call[get_x] : func:r2400_8, this:r2400_2 -# 2400| mu2400_10(unknown) = ^CallSideEffect : ~m? -# 2400| v2400_11(void) = ^IndirectReadSideEffect[-1] : &:r2400_2, ~m? -# 2400| mu2400_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2400_2 -# 2400| mu2400_13(char) = Store[x] : &:r2400_1, r2400_9 -# 2400| r2400_14(glval<char>) = VariableAddress[x] : -# 2400| r2400_15(char) = Load[x] : &:r2400_14, ~m? -# 2400| r2400_16(char) = Constant[0] : -# 2400| r2400_17(bool) = CompareNE : r2400_15, r2400_16 -# 2400| v2400_18(void) = ConditionalBranch : r2400_17 +# 2414| Block 2 +# 2414| r2414_1(glval<char>) = VariableAddress[x] : +# 2414| r2414_2(glval<ClassWithDestructor>) = VariableAddress[#temp2414:18] : +# 2414| mu2414_3(ClassWithDestructor) = Uninitialized[#temp2414:18] : &:r2414_2 +# 2414| r2414_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2414| v2414_5(void) = Call[ClassWithDestructor] : func:r2414_4, this:r2414_2 +# 2414| mu2414_6(unknown) = ^CallSideEffect : ~m? +# 2414| mu2414_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| r2414_8(glval<unknown>) = FunctionAddress[get_x] : +# 2414| r2414_9(char) = Call[get_x] : func:r2414_8, this:r2414_2 +# 2414| mu2414_10(unknown) = ^CallSideEffect : ~m? +# 2414| v2414_11(void) = ^IndirectReadSideEffect[-1] : &:r2414_2, ~m? +# 2414| mu2414_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| mu2414_13(char) = Store[x] : &:r2414_1, r2414_9 +# 2414| r2414_14(glval<char>) = VariableAddress[x] : +# 2414| r2414_15(char) = Load[x] : &:r2414_14, ~m? +# 2414| r2414_16(char) = Constant[0] : +# 2414| r2414_17(bool) = CompareNE : r2414_15, r2414_16 +# 2414| v2414_18(void) = ConditionalBranch : r2414_17 #-----| False -> Block 4 #-----| True -> Block 3 -# 2401| Block 3 -# 2401| r2401_1(glval<char>) = VariableAddress[x] : -# 2401| r2401_2(char) = Load[x] : &:r2401_1, ~m? -# 2401| r2401_3(char) = Constant[1] : -# 2401| r2401_4(char) = Add : r2401_2, r2401_3 -# 2401| mu2401_5(char) = Store[x] : &:r2401_1, r2401_4 +# 2415| Block 3 +# 2415| r2415_1(glval<char>) = VariableAddress[x] : +# 2415| r2415_2(char) = Load[x] : &:r2415_1, ~m? +# 2415| r2415_3(char) = Constant[1] : +# 2415| r2415_4(char) = Add : r2415_2, r2415_3 +# 2415| mu2415_5(char) = Store[x] : &:r2415_1, r2415_4 #-----| Goto -> Block 4 -# 2403| Block 4 -# 2403| r2403_1(glval<char>) = VariableAddress[x] : -# 2403| r2403_2(glval<ClassWithDestructor>) = VariableAddress[#temp2403:28] : -# 2403| mu2403_3(ClassWithDestructor) = Uninitialized[#temp2403:28] : &:r2403_2 -# 2403| r2403_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2403| v2403_5(void) = Call[ClassWithDestructor] : func:r2403_4, this:r2403_2 -# 2403| mu2403_6(unknown) = ^CallSideEffect : ~m? -# 2403| mu2403_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 -# 2403| r2403_8(glval<unknown>) = FunctionAddress[get_x] : -# 2403| r2403_9(char) = Call[get_x] : func:r2403_8, this:r2403_2 -# 2403| mu2403_10(unknown) = ^CallSideEffect : ~m? -# 2403| v2403_11(void) = ^IndirectReadSideEffect[-1] : &:r2403_2, ~m? -# 2403| mu2403_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2403_2 -# 2403| mu2403_13(char) = Store[x] : &:r2403_1, r2403_9 -# 2403| r2403_14(bool) = Constant[1] : -# 2403| v2403_15(void) = ConditionalBranch : r2403_14 +# 2417| Block 4 +# 2417| r2417_1(glval<char>) = VariableAddress[x] : +# 2417| r2417_2(glval<ClassWithDestructor>) = VariableAddress[#temp2417:28] : +# 2417| mu2417_3(ClassWithDestructor) = Uninitialized[#temp2417:28] : &:r2417_2 +# 2417| r2417_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2417| v2417_5(void) = Call[ClassWithDestructor] : func:r2417_4, this:r2417_2 +# 2417| mu2417_6(unknown) = ^CallSideEffect : ~m? +# 2417| mu2417_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| r2417_8(glval<unknown>) = FunctionAddress[get_x] : +# 2417| r2417_9(char) = Call[get_x] : func:r2417_8, this:r2417_2 +# 2417| mu2417_10(unknown) = ^CallSideEffect : ~m? +# 2417| v2417_11(void) = ^IndirectReadSideEffect[-1] : &:r2417_2, ~m? +# 2417| mu2417_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| mu2417_13(char) = Store[x] : &:r2417_1, r2417_9 +# 2417| r2417_14(bool) = Constant[1] : +# 2417| v2417_15(void) = ConditionalBranch : r2417_14 #-----| False -> Block 6 #-----| True -> Block 5 -# 2404| Block 5 -# 2404| r2404_1(glval<char>) = VariableAddress[x] : -# 2404| r2404_2(char) = Load[x] : &:r2404_1, ~m? -# 2404| r2404_3(char) = Constant[1] : -# 2404| r2404_4(char) = Add : r2404_2, r2404_3 -# 2404| mu2404_5(char) = Store[x] : &:r2404_1, r2404_4 +# 2418| Block 5 +# 2418| r2418_1(glval<char>) = VariableAddress[x] : +# 2418| r2418_2(char) = Load[x] : &:r2418_1, ~m? +# 2418| r2418_3(char) = Constant[1] : +# 2418| r2418_4(char) = Add : r2418_2, r2418_3 +# 2418| mu2418_5(char) = Store[x] : &:r2418_1, r2418_4 #-----| Goto -> Block 6 -# 2406| Block 6 -# 2406| r2406_1(glval<char>) = VariableAddress[x] : -# 2406| r2406_2(glval<ClassWithDestructor>) = VariableAddress[#temp2406:21] : -# 2406| mu2406_3(ClassWithDestructor) = Uninitialized[#temp2406:21] : &:r2406_2 -# 2406| r2406_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2406| v2406_5(void) = Call[ClassWithDestructor] : func:r2406_4, this:r2406_2 -# 2406| mu2406_6(unknown) = ^CallSideEffect : ~m? -# 2406| mu2406_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 -# 2406| r2406_8(glval<unknown>) = FunctionAddress[get_x] : -# 2406| r2406_9(char) = Call[get_x] : func:r2406_8, this:r2406_2 -# 2406| mu2406_10(unknown) = ^CallSideEffect : ~m? -# 2406| v2406_11(void) = ^IndirectReadSideEffect[-1] : &:r2406_2, ~m? -# 2406| mu2406_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2406_2 -# 2406| mu2406_13(char) = Store[x] : &:r2406_1, r2406_9 -# 2406| r2406_14(glval<char>) = VariableAddress[x] : -# 2406| r2406_15(char) = Load[x] : &:r2406_14, ~m? -# 2406| r2406_16(int) = Convert : r2406_15 -# 2406| r2406_17(int) = CopyValue : r2406_16 -# 2406| v2406_18(void) = Switch : r2406_17 +# 2420| Block 6 +# 2420| r2420_1(glval<char>) = VariableAddress[x] : +# 2420| r2420_2(glval<ClassWithDestructor>) = VariableAddress[#temp2420:21] : +# 2420| mu2420_3(ClassWithDestructor) = Uninitialized[#temp2420:21] : &:r2420_2 +# 2420| r2420_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2420| v2420_5(void) = Call[ClassWithDestructor] : func:r2420_4, this:r2420_2 +# 2420| mu2420_6(unknown) = ^CallSideEffect : ~m? +# 2420| mu2420_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| r2420_8(glval<unknown>) = FunctionAddress[get_x] : +# 2420| r2420_9(char) = Call[get_x] : func:r2420_8, this:r2420_2 +# 2420| mu2420_10(unknown) = ^CallSideEffect : ~m? +# 2420| v2420_11(void) = ^IndirectReadSideEffect[-1] : &:r2420_2, ~m? +# 2420| mu2420_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| mu2420_13(char) = Store[x] : &:r2420_1, r2420_9 +# 2420| r2420_14(glval<char>) = VariableAddress[x] : +# 2420| r2420_15(char) = Load[x] : &:r2420_14, ~m? +# 2420| r2420_16(int) = Convert : r2420_15 +# 2420| r2420_17(int) = CopyValue : r2420_16 +# 2420| v2420_18(void) = Switch : r2420_17 #-----| Case[97] -> Block 7 #-----| Default -> Block 8 -# 2407| Block 7 -# 2407| v2407_1(void) = NoOp : -# 2408| r2408_1(glval<char>) = VariableAddress[x] : -# 2408| r2408_2(char) = Load[x] : &:r2408_1, ~m? -# 2408| r2408_3(char) = Constant[1] : -# 2408| r2408_4(char) = Add : r2408_2, r2408_3 -# 2408| mu2408_5(char) = Store[x] : &:r2408_1, r2408_4 +# 2421| Block 7 +# 2421| v2421_1(void) = NoOp : +# 2422| r2422_1(glval<char>) = VariableAddress[x] : +# 2422| r2422_2(char) = Load[x] : &:r2422_1, ~m? +# 2422| r2422_3(char) = Constant[1] : +# 2422| r2422_4(char) = Add : r2422_2, r2422_3 +# 2422| mu2422_5(char) = Store[x] : &:r2422_1, r2422_4 #-----| Goto -> Block 8 -# 2411| Block 8 -# 2411| r2411_1(glval<char>) = VariableAddress[x] : -# 2411| r2411_2(glval<ClassWithDestructor>) = VariableAddress[#temp2411:21] : -# 2411| mu2411_3(ClassWithDestructor) = Uninitialized[#temp2411:21] : &:r2411_2 -# 2411| r2411_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2411| v2411_5(void) = Call[ClassWithDestructor] : func:r2411_4, this:r2411_2 -# 2411| mu2411_6(unknown) = ^CallSideEffect : ~m? -# 2411| mu2411_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 -# 2411| r2411_8(glval<unknown>) = FunctionAddress[get_x] : -# 2411| r2411_9(char) = Call[get_x] : func:r2411_8, this:r2411_2 -# 2411| mu2411_10(unknown) = ^CallSideEffect : ~m? -# 2411| v2411_11(void) = ^IndirectReadSideEffect[-1] : &:r2411_2, ~m? -# 2411| mu2411_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2411_2 -# 2411| mu2411_13(char) = Store[x] : &:r2411_1, r2411_9 -# 2411| r2411_14(glval<char>) = VariableAddress[x] : -# 2411| r2411_15(char) = Load[x] : &:r2411_14, ~m? -# 2411| r2411_16(int) = Convert : r2411_15 -# 2411| v2411_17(void) = Switch : r2411_16 +# 2425| Block 8 +# 2425| r2425_1(glval<char>) = VariableAddress[x] : +# 2425| r2425_2(glval<ClassWithDestructor>) = VariableAddress[#temp2425:21] : +# 2425| mu2425_3(ClassWithDestructor) = Uninitialized[#temp2425:21] : &:r2425_2 +# 2425| r2425_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2425| v2425_5(void) = Call[ClassWithDestructor] : func:r2425_4, this:r2425_2 +# 2425| mu2425_6(unknown) = ^CallSideEffect : ~m? +# 2425| mu2425_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2425_2 +# 2425| r2425_8(glval<unknown>) = FunctionAddress[get_x] : +# 2425| r2425_9(char) = Call[get_x] : func:r2425_8, this:r2425_2 +# 2425| mu2425_10(unknown) = ^CallSideEffect : ~m? +# 2425| v2425_11(void) = ^IndirectReadSideEffect[-1] : &:r2425_2, ~m? +# 2425| mu2425_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2425_2 +# 2425| mu2425_13(char) = Store[x] : &:r2425_1, r2425_9 +# 2425| r2425_14(glval<char>) = VariableAddress[x] : +# 2425| r2425_15(char) = Load[x] : &:r2425_14, ~m? +# 2425| r2425_16(int) = Convert : r2425_15 +# 2425| v2425_17(void) = Switch : r2425_16 #-----| Case[97] -> Block 9 #-----| Default -> Block 10 -# 2412| Block 9 -# 2412| v2412_1(void) = NoOp : -# 2413| r2413_1(glval<char>) = VariableAddress[x] : -# 2413| r2413_2(char) = Load[x] : &:r2413_1, ~m? -# 2413| r2413_3(char) = Constant[1] : -# 2413| r2413_4(char) = Add : r2413_2, r2413_3 -# 2413| mu2413_5(char) = Store[x] : &:r2413_1, r2413_4 +# 2426| Block 9 +# 2426| v2426_1(void) = NoOp : +# 2427| r2427_1(glval<char>) = VariableAddress[x] : +# 2427| r2427_2(char) = Load[x] : &:r2427_1, ~m? +# 2427| r2427_3(char) = Constant[1] : +# 2427| r2427_4(char) = Add : r2427_2, r2427_3 +# 2427| mu2427_5(char) = Store[x] : &:r2427_1, r2427_4 #-----| Goto -> Block 10 -# 2416| Block 10 -# 2416| r2416_1(glval<char>) = VariableAddress[x] : -# 2416| r2416_2(glval<ClassWithDestructor>) = VariableAddress[#temp2416:18] : -# 2416| mu2416_3(ClassWithDestructor) = Uninitialized[#temp2416:18] : &:r2416_2 -# 2416| r2416_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : -# 2416| v2416_5(void) = Call[ClassWithDestructor] : func:r2416_4, this:r2416_2 -# 2416| mu2416_6(unknown) = ^CallSideEffect : ~m? -# 2416| mu2416_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 -# 2416| r2416_8(glval<unknown>) = FunctionAddress[get_x] : -# 2416| r2416_9(char) = Call[get_x] : func:r2416_8, this:r2416_2 -# 2416| mu2416_10(unknown) = ^CallSideEffect : ~m? -# 2416| v2416_11(void) = ^IndirectReadSideEffect[-1] : &:r2416_2, ~m? -# 2416| mu2416_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2416_2 -# 2416| mu2416_13(char) = Store[x] : &:r2416_1, r2416_9 -# 2416| r2416_14(glval<vector<char> &&>) = VariableAddress[(__range)] : -# 2416| r2416_15(glval<vector<char>>) = VariableAddress[#temp2416:58] : -# 2416| mu2416_16(vector<char>) = Uninitialized[#temp2416:58] : &:r2416_15 -# 2416| r2416_17(glval<unknown>) = FunctionAddress[vector] : -# 2416| r2416_18(glval<char>) = VariableAddress[x] : -# 2416| r2416_19(char) = Load[x] : &:r2416_18, ~m? -# 2416| v2416_20(void) = Call[vector] : func:r2416_17, this:r2416_15, 0:r2416_19 -# 2416| mu2416_21(unknown) = ^CallSideEffect : ~m? -# 2416| mu2416_22(vector<char>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_15 -# 2416| r2416_23(vector<char> &) = CopyValue : r2416_15 -# 2416| mu2416_24(vector<char> &&) = Store[(__range)] : &:r2416_14, r2416_23 -# 2416| r2416_25(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -# 2416| r2416_26(glval<vector<char> &&>) = VariableAddress[(__range)] : -# 2416| r2416_27(vector<char> &&) = Load[(__range)] : &:r2416_26, ~m? -#-----| r0_1(glval<vector<char>>) = CopyValue : r2416_27 +# 2430| Block 10 +# 2430| r2430_1(glval<char>) = VariableAddress[x] : +# 2430| r2430_2(glval<ClassWithDestructor>) = VariableAddress[#temp2430:18] : +# 2430| mu2430_3(ClassWithDestructor) = Uninitialized[#temp2430:18] : &:r2430_2 +# 2430| r2430_4(glval<unknown>) = FunctionAddress[ClassWithDestructor] : +# 2430| v2430_5(void) = Call[ClassWithDestructor] : func:r2430_4, this:r2430_2 +# 2430| mu2430_6(unknown) = ^CallSideEffect : ~m? +# 2430| mu2430_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2430_2 +# 2430| r2430_8(glval<unknown>) = FunctionAddress[get_x] : +# 2430| r2430_9(char) = Call[get_x] : func:r2430_8, this:r2430_2 +# 2430| mu2430_10(unknown) = ^CallSideEffect : ~m? +# 2430| v2430_11(void) = ^IndirectReadSideEffect[-1] : &:r2430_2, ~m? +# 2430| mu2430_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2430_2 +# 2430| mu2430_13(char) = Store[x] : &:r2430_1, r2430_9 +# 2430| r2430_14(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2430| r2430_15(glval<vector<char>>) = VariableAddress[#temp2430:58] : +# 2430| mu2430_16(vector<char>) = Uninitialized[#temp2430:58] : &:r2430_15 +# 2430| r2430_17(glval<unknown>) = FunctionAddress[vector] : +# 2430| r2430_18(glval<char>) = VariableAddress[x] : +# 2430| r2430_19(char) = Load[x] : &:r2430_18, ~m? +# 2430| v2430_20(void) = Call[vector] : func:r2430_17, this:r2430_15, 0:r2430_19 +# 2430| mu2430_21(unknown) = ^CallSideEffect : ~m? +# 2430| mu2430_22(vector<char>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_15 +# 2430| r2430_23(vector<char> &) = CopyValue : r2430_15 +# 2430| mu2430_24(vector<char> &&) = Store[(__range)] : &:r2430_14, r2430_23 +# 2430| r2430_25(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2430| r2430_26(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2430| r2430_27(vector<char> &&) = Load[(__range)] : &:r2430_26, ~m? +#-----| r0_1(glval<vector<char>>) = CopyValue : r2430_27 #-----| r0_2(glval<vector<char>>) = Convert : r0_1 -# 2416| r2416_28(glval<unknown>) = FunctionAddress[begin] : -# 2416| r2416_29(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[begin] : func:r2416_28, this:r0_2 +# 2430| r2430_28(glval<unknown>) = FunctionAddress[begin] : +# 2430| r2430_29(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[begin] : func:r2430_28, this:r0_2 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2416| mu2416_30(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__begin)] : &:r2416_25, r2416_29 -# 2416| r2416_31(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : -# 2416| r2416_32(glval<vector<char> &&>) = VariableAddress[(__range)] : -# 2416| r2416_33(vector<char> &&) = Load[(__range)] : &:r2416_32, ~m? -#-----| r0_4(glval<vector<char>>) = CopyValue : r2416_33 +# 2430| mu2430_30(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__begin)] : &:r2430_25, r2430_29 +# 2430| r2430_31(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +# 2430| r2430_32(glval<vector<char> &&>) = VariableAddress[(__range)] : +# 2430| r2430_33(vector<char> &&) = Load[(__range)] : &:r2430_32, ~m? +#-----| r0_4(glval<vector<char>>) = CopyValue : r2430_33 #-----| r0_5(glval<vector<char>>) = Convert : r0_4 -# 2416| r2416_34(glval<unknown>) = FunctionAddress[end] : -# 2416| r2416_35(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[end] : func:r2416_34, this:r0_5 +# 2430| r2430_34(glval<unknown>) = FunctionAddress[end] : +# 2430| r2430_35(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Call[end] : func:r2430_34, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2416| mu2416_36(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__end)] : &:r2416_31, r2416_35 +# 2430| mu2430_36(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Store[(__end)] : &:r2430_31, r2430_35 #-----| Goto -> Block 11 -# 2416| Block 11 -# 2416| r2416_37(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -#-----| r0_7(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_37 -# 2416| r2416_38(glval<unknown>) = FunctionAddress[operator!=] : +# 2430| Block 11 +# 2430| r2430_37(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_7(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_37 +# 2430| r2430_38(glval<unknown>) = FunctionAddress[operator!=] : #-----| r0_8(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Uninitialized[#temp0:0] : &:r0_8 -# 2416| r2416_39(glval<unknown>) = FunctionAddress[iterator] : -# 2416| r2416_40(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : -#-----| r0_10(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_40 +# 2430| r2430_39(glval<unknown>) = FunctionAddress[iterator] : +# 2430| r2430_40(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__end)] : +#-----| r0_10(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_40 #-----| r0_11(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = CopyValue : r0_10 -# 2416| v2416_41(void) = Call[iterator] : func:r2416_39, this:r0_8, 0:r0_11 -# 2416| mu2416_42(unknown) = ^CallSideEffect : ~m? +# 2430| v2430_41(void) = Call[iterator] : func:r2430_39, this:r0_8, 0:r0_11 +# 2430| mu2430_42(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2416| mu2416_43(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2430| mu2430_43(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = Load[#temp0:0] : &:r0_8, ~m? -# 2416| r2416_44(bool) = Call[operator!=] : func:r2416_38, this:r0_7, 0:r0_13 -# 2416| mu2416_45(unknown) = ^CallSideEffect : ~m? +# 2430| r2430_44(bool) = Call[operator!=] : func:r2430_38, this:r0_7, 0:r0_13 +# 2430| mu2430_45(unknown) = ^CallSideEffect : ~m? #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2416| v2416_46(void) = ConditionalBranch : r2416_44 +# 2430| v2430_46(void) = ConditionalBranch : r2430_44 #-----| False -> Block 13 #-----| True -> Block 12 -# 2416| Block 12 -# 2416| r2416_47(glval<char>) = VariableAddress[y] : -# 2416| r2416_48(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2416_48 -# 2416| r2416_49(glval<unknown>) = FunctionAddress[operator*] : -# 2416| r2416_50(char &) = Call[operator*] : func:r2416_49, this:r0_15 -# 2416| mu2416_51(unknown) = ^CallSideEffect : ~m? +# 2430| Block 12 +# 2430| r2430_47(glval<char>) = VariableAddress[y] : +# 2430| r2430_48(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +#-----| r0_15(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = Convert : r2430_48 +# 2430| r2430_49(glval<unknown>) = FunctionAddress[operator*] : +# 2430| r2430_50(char &) = Call[operator*] : func:r2430_49, this:r0_15 +# 2430| mu2430_51(unknown) = ^CallSideEffect : ~m? #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2416| r2416_52(char) = Load[?] : &:r2416_50, ~m? -# 2416| mu2416_53(char) = Store[y] : &:r2416_47, r2416_52 -# 2417| r2417_1(glval<char>) = VariableAddress[x] : -# 2417| r2417_2(char) = Load[x] : &:r2417_1, ~m? -# 2417| r2417_3(int) = Convert : r2417_2 -# 2417| r2417_4(glval<char>) = VariableAddress[y] : -# 2417| r2417_5(char) = Load[y] : &:r2417_4, ~m? -# 2417| r2417_6(int) = Convert : r2417_5 -# 2417| r2417_7(int) = Add : r2417_6, r2417_3 -# 2417| r2417_8(char) = Convert : r2417_7 -# 2417| mu2417_9(char) = Store[y] : &:r2417_4, r2417_8 -# 2416| r2416_54(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : -# 2416| r2416_55(glval<unknown>) = FunctionAddress[operator++] : -# 2416| r2416_56(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2416_55, this:r2416_54 -# 2416| mu2416_57(unknown) = ^CallSideEffect : ~m? -# 2416| v2416_58(void) = ^IndirectReadSideEffect[-1] : &:r2416_54, ~m? -# 2416| mu2416_59(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2416_54 -# 2416| r2416_60(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2416_56 +# 2430| r2430_52(char) = Load[?] : &:r2430_50, ~m? +# 2430| mu2430_53(char) = Store[y] : &:r2430_47, r2430_52 +# 2431| r2431_1(glval<char>) = VariableAddress[x] : +# 2431| r2431_2(char) = Load[x] : &:r2431_1, ~m? +# 2431| r2431_3(int) = Convert : r2431_2 +# 2431| r2431_4(glval<char>) = VariableAddress[y] : +# 2431| r2431_5(char) = Load[y] : &:r2431_4, ~m? +# 2431| r2431_6(int) = Convert : r2431_5 +# 2431| r2431_7(int) = Add : r2431_6, r2431_3 +# 2431| r2431_8(char) = Convert : r2431_7 +# 2431| mu2431_9(char) = Store[y] : &:r2431_4, r2431_8 +# 2430| r2430_54(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = VariableAddress[(__begin)] : +# 2430| r2430_55(glval<unknown>) = FunctionAddress[operator++] : +# 2430| r2430_56(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> &) = Call[operator++] : func:r2430_55, this:r2430_54 +# 2430| mu2430_57(unknown) = ^CallSideEffect : ~m? +# 2430| v2430_58(void) = ^IndirectReadSideEffect[-1] : &:r2430_54, ~m? +# 2430| mu2430_59(iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>) = ^IndirectMayWriteSideEffect[-1] : &:r2430_54 +# 2430| r2430_60(glval<iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>>) = CopyValue : r2430_56 #-----| Goto (back edge) -> Block 11 -# 2418| Block 13 -# 2418| v2418_1(void) = NoOp : -# 2396| v2396_4(void) = ReturnVoid : -# 2396| v2396_5(void) = AliasedUse : ~m? -# 2396| v2396_6(void) = ExitFunction : +# 2432| Block 13 +# 2432| v2432_1(void) = NoOp : +# 2410| v2410_4(void) = ReturnVoid : +# 2410| v2410_5(void) = AliasedUse : ~m? +# 2410| v2410_6(void) = ExitFunction : perf-regression.cpp: # 6| void Big::Big() From 720961787bdcd102f25c51dfdb412d13617154ef Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Thu, 4 Apr 2024 10:33:36 +0100 Subject: [PATCH 662/731] Improve QLDoc for `CaseClause` --- go/ql/lib/semmle/go/Stmt.qll | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/go/ql/lib/semmle/go/Stmt.qll b/go/ql/lib/semmle/go/Stmt.qll index b4164398b028..e02d6766657b 100644 --- a/go/ql/lib/semmle/go/Stmt.qll +++ b/go/ql/lib/semmle/go/Stmt.qll @@ -747,13 +747,25 @@ class IfStmt extends @ifstmt, Stmt, ScopeNode { * ``` */ class CaseClause extends @caseclause, Stmt, ScopeNode { - /** Gets the `i`th expression of this `case` clause (0-based). */ + /** + * Gets the `i`th expression of this `case` clause (0-based). + * + * Note that the default clause does not have any expressions. + */ Expr getExpr(int i) { result = this.getChildExpr(-(i + 1)) } - /** Gets an expression of this `case` clause. */ + /** + * Gets an expression of this `case` clause, if any. + * + * Note that the default clause does not have any expressions. + */ Expr getAnExpr() { result = this.getAChildExpr() } - /** Gets the number of expressions of this `case` clause. */ + /** + * Gets the number of expressions of this `case` clause. + * + * Note that the default clause does not have any expressions. + */ int getNumExpr() { result = this.getNumChildExpr() } /** Gets the `i`th statement of this `case` clause (0-based). */ From d9fe39d5aeca60c574cf9eae2c58766463d01c81 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 3 Apr 2024 14:13:12 +0100 Subject: [PATCH 663/731] Extractor: add comment about `tw.Package.TypesInfo.Defs` --- go/extractor/extractor.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index d9e649401e3c..dc4a9ffe7b70 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -870,6 +870,10 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) { kind = dbscheme.IdentExpr.Index() dbscheme.LiteralsTable.Emit(tw, lbl, expr.Name, expr.Name) def := tw.Package.TypesInfo.Defs[expr] + // Note that there are some cases where `expr` is in the map but `def` + // is nil. The docs for `tw.Package.TypesInfo.Defs` give the following + // examples: the package name in package clauses, or symbolic variables + // `t` in `t := x.(type)` of type switch headers. if def != nil { defTyp := extractType(tw, def.Type()) objlbl, exists := tw.Labeler.LookupObjectID(def, defTyp) From 68321dd9ec71f83495e43a90e1b2f419c4cbd421 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 3 Apr 2024 15:58:10 +0100 Subject: [PATCH 664/731] Use nil for optional argument to packages.Visit --- go/extractor/extractor.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index dc4a9ffe7b70..f43950abb32b 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -132,9 +132,7 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { pkgsNotFound := make([]string, 0, len(pkgs)) // Do a post-order traversal and extract the package scope of each package - packages.Visit(pkgs, func(pkg *packages.Package) bool { - return true - }, func(pkg *packages.Package) { + packages.Visit(pkgs, nil, func(pkg *packages.Package) { log.Printf("Processing package %s.", pkg.PkgPath) if _, ok := pkgInfos[pkg.PkgPath]; !ok { @@ -200,9 +198,7 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { noExtractRe := regexp.MustCompile(`.*(^|` + sep + `)(\.\.|vendor)($|` + sep + `).*`) // extract AST information for all packages - packages.Visit(pkgs, func(pkg *packages.Package) bool { - return true - }, func(pkg *packages.Package) { + packages.Visit(pkgs, nil, func(pkg *packages.Package) { for root, _ := range wantedRoots { pkgInfo := pkgInfos[pkg.PkgPath] relDir, err := filepath.Rel(root, pkgInfo.PkgDir) From 7fc52651686effb76cf6de0c3a758637f22058d0 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 3 Apr 2024 16:03:45 +0100 Subject: [PATCH 665/731] Misc small tidy-ups mostly suggested by linter --- go/extractor/extractor.go | 43 +++++++++++++-------------------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index f43950abb32b..d06686954fa7 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -199,7 +199,7 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { // extract AST information for all packages packages.Visit(pkgs, nil, func(pkg *packages.Package) { - for root, _ := range wantedRoots { + for root := range wantedRoots { pkgInfo := pkgInfos[pkg.PkgPath] relDir, err := filepath.Rel(root, pkgInfo.PkgDir) if err != nil || noExtractRe.MatchString(relDir) { @@ -397,15 +397,15 @@ func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label) // do not appear as objects in any scope, so they have to be dealt // with separately in extractMethods. if funcObj, ok := obj.(*types.Func); ok { - populateTypeParamParents(tw, funcObj.Type().(*types.Signature).TypeParams(), obj) - populateTypeParamParents(tw, funcObj.Type().(*types.Signature).RecvTypeParams(), obj) + populateTypeParamParents(funcObj.Type().(*types.Signature).TypeParams(), obj) + populateTypeParamParents(funcObj.Type().(*types.Signature).RecvTypeParams(), obj) } // Populate type parameter parents for named types. Note that we // skip type aliases as the original type should be the parent // of any type parameters. if typeNameObj, ok := obj.(*types.TypeName); ok && !typeNameObj.IsAlias() { if tp, ok := typeNameObj.Type().(*types.Named); ok { - populateTypeParamParents(tw, tp.TypeParams(), obj) + populateTypeParamParents(tp.TypeParams(), obj) } } extractObject(tw, obj, lbl) @@ -431,8 +431,8 @@ func extractMethod(tw *trap.Writer, meth *types.Func) trap.Label { if !exists { // Populate type parameter parents for methods. They do not appear as // objects in any scope, so they have to be dealt with separately here. - populateTypeParamParents(tw, meth.Type().(*types.Signature).TypeParams(), meth) - populateTypeParamParents(tw, meth.Type().(*types.Signature).RecvTypeParams(), meth) + populateTypeParamParents(meth.Type().(*types.Signature).TypeParams(), meth) + populateTypeParamParents(meth.Type().(*types.Signature).RecvTypeParams(), meth) extractObject(tw, meth, methlbl) } @@ -490,7 +490,7 @@ func extractObject(tw *trap.Writer, obj types.Object, lbl trap.Label) { func extractObjectTypes(tw *trap.Writer) { // calling `extractType` on a named type will extract all methods defined // on it, which will add new objects. Therefore we need to do this first - // before we loops over all objects and emit them. + // before we loop over all objects and emit them. changed := true for changed { changed = tw.ForEachObject(extractObjectType) @@ -1129,11 +1129,9 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) { // each child over its preceding child (usually either 1 for assigning increasing indices, or // -1 for decreasing indices) func extractExprs(tw *trap.Writer, exprs []ast.Expr, parent trap.Label, idx int, dir int) { - if exprs != nil { - for _, expr := range exprs { - extractExpr(tw, expr, parent, idx) - idx += dir - } + for _, expr := range exprs { + extractExpr(tw, expr, parent, idx) + idx += dir } } @@ -1389,13 +1387,10 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) { // each child over its preceding child (usually either 1 for assigning increasing indices, or // -1 for decreasing indices) func extractStmts(tw *trap.Writer, stmts []ast.Stmt, parent trap.Label, idx int, dir int) { - if stmts != nil { - for _, stmt := range stmts { - extractStmt(tw, stmt, parent, idx) - idx += dir - } + for _, stmt := range stmts { + extractStmt(tw, stmt, parent, idx) + idx += dir } - } // extractDecl extracts AST information for the given declaration @@ -1944,7 +1939,7 @@ func extractTypeParamDecls(tw *trap.Writer, fields *ast.FieldList, parent trap.L } // populateTypeParamParents sets `parent` as the parent of the elements of `typeparams` -func populateTypeParamParents(tw *trap.Writer, typeparams *types.TypeParamList, parent types.Object) { +func populateTypeParamParents(typeparams *types.TypeParamList, parent types.Object) { if typeparams != nil { for idx := 0; idx < typeparams.Len(); idx++ { setTypeParamParent(typeparams.At(idx), parent) @@ -1966,16 +1961,6 @@ func getObjectBeingUsed(tw *trap.Writer, ident *ast.Ident) types.Object { } } -// tryGetGenericType returns the generic type of `tp`, and a boolean indicating -// whether it is the same as `tp`. -func tryGetGenericType(tp types.Type) (*types.Named, bool) { - if namedType, ok := tp.(*types.Named); ok { - originType := namedType.Origin() - return originType, namedType == originType - } - return nil, false -} - // trackInstantiatedStructFields tries to give the fields of an instantiated // struct type underlying `tp` the same labels as the corresponding fields of // the generic struct type. This is so that when we come across the From 6d2d9654b53a59db7c45333896c6c0b52e2bce4a Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 4 Apr 2024 13:01:00 +0200 Subject: [PATCH 666/731] Ruby: Add CFG test --- .../controlflow/graph/Cfg.expected | 105 +++++++++++++++--- .../controlflow/graph/Nodes.expected | 4 + .../library-tests/controlflow/graph/ifs.rb | 2 +- .../library-tests/controlflow/graph/raise.rb | 12 ++ 4 files changed, 105 insertions(+), 18 deletions(-) diff --git a/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected b/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected index e3b0e01adfe7..2571a9dfeeb4 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -2397,18 +2397,9 @@ cfg.rb: # 90| ... #-----| -> $global -# 90| ... = ... -#-----| -> if ... - # 90| ... = ... #-----| -> x -# 90| [false] ! ... -#-----| false -> if ... - -# 90| [true] ! ... -#-----| true -> x - # 90| __synth__0__1 #-----| -> x @@ -2418,10 +2409,6 @@ cfg.rb: # 90| call to each #-----| -> ... -# 90| defined? ... -#-----| false -> [true] ! ... -#-----| true -> [false] ! ... - # 90| enter { ... } #-----| -> __synth__0__1 @@ -2430,6 +2417,22 @@ cfg.rb: # 90| exit { ... } (normal) #-----| -> exit { ... } +# 90| { ... } +#-----| -> call to each + +# 90| ... = ... +#-----| -> if ... + +# 90| [false] ! ... +#-----| false -> if ... + +# 90| [true] ! ... +#-----| true -> x + +# 90| defined? ... +#-----| false -> [true] ! ... +#-----| true -> [false] ! ... + # 90| if ... #-----| -> Array @@ -2442,9 +2445,6 @@ cfg.rb: # 90| x #-----| -> defined? ... -# 90| { ... } -#-----| -> call to each - # 90| x #-----| -> __synth__0__1 @@ -6915,7 +6915,7 @@ raise.rb: #-----| -> exit m # 167| m -#-----| -> exit raise.rb (normal) +#-----| -> m16 # 167| self #-----| -> m @@ -6928,3 +6928,74 @@ raise.rb: # 168| "" #-----| -> call to raise + +# 172| enter m16 +#-----| -> b1 + +# 172| exit m16 + +# 172| exit m16 (abnormal) +#-----| -> exit m16 + +# 172| exit m16 (normal) +#-----| -> exit m16 + +# 172| m16 +#-----| -> exit raise.rb (normal) + +# 172| b1 +#-----| -> b2 + +# 172| b2 +#-----| -> b1 + +# 174| b1 +#-----| true -> [true] ... || ... +#-----| false -> b2 + +# 174| ... || ... +#-----| true -> 1 +#-----| false -> 2 +#-----| raise -> ExceptionA + +# 174| [false] ... || ... +#-----| false -> 2 +#-----| raise -> ExceptionA + +# 174| [true] ... || ... +#-----| true -> 1 +#-----| raise -> ExceptionA + +# 174| b2 +#-----| -> true + +# 174| ... == ... +#-----| false -> [false] ... || ... +#-----| -> ... || ... +#-----| true -> [true] ... || ... +#-----| raise -> ExceptionA + +# 174| true +#-----| -> ... == ... + +# 175| return +#-----| return -> exit m16 (normal) + +# 175| 1 +#-----| -> return + +# 177| return +#-----| return -> exit m16 (normal) + +# 177| 2 +#-----| -> return + +# 179| ExceptionA +#-----| raise -> exit m16 (abnormal) +#-----| match -> 3 + +# 180| return +#-----| return -> exit m16 (normal) + +# 180| 3 +#-----| -> return diff --git a/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected b/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected index f7bc8a1b1e70..bc691d673b9a 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected +++ b/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected @@ -367,6 +367,10 @@ positionalArguments | raise.rb:160:5:162:7 | call to bar | raise.rb:160:9:162:7 | -> { ... } | | raise.rb:161:7:161:14 | call to raise | raise.rb:161:13:161:14 | "" | | raise.rb:168:5:168:12 | call to raise | raise.rb:168:11:168:12 | "" | +| raise.rb:174:8:174:23 | ... \|\| ... | raise.rb:174:14:174:23 | ... == ... | +| raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:174:14:174:23 | ... == ... | +| raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:174:14:174:23 | ... == ... | +| raise.rb:174:14:174:23 | ... == ... | raise.rb:174:20:174:23 | true | keywordArguments | cfg.html.erb:6:9:6:58 | call to stylesheet_link_tag | media | cfg.html.erb:6:54:6:58 | "all" | | cfg.html.erb:12:11:12:33 | call to link_to | id | cfg.html.erb:12:31:12:33 | "a" | diff --git a/ruby/ql/test/library-tests/controlflow/graph/ifs.rb b/ruby/ql/test/library-tests/controlflow/graph/ifs.rb index 0e66c0da8cb3..f081095051f6 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/ifs.rb +++ b/ruby/ql/test/library-tests/controlflow/graph/ifs.rb @@ -55,4 +55,4 @@ def disjunct (b1, b2) if (b1 || b2) then puts "b1 or b2" end -end \ No newline at end of file +end diff --git a/ruby/ql/test/library-tests/controlflow/graph/raise.rb b/ruby/ql/test/library-tests/controlflow/graph/raise.rb index e5f0c0e50f5c..3caf234ab14c 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/raise.rb +++ b/ruby/ql/test/library-tests/controlflow/graph/raise.rb @@ -168,3 +168,15 @@ def self.m() raise "" end end + +def m16(b1, b2) + begin + if b1 || b2 == true + return 1 + else + return 2 + end + rescue ExceptionA + return 3 + end +end From ce3b359813d1cf44b5d6da16cff6704163c7118d Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Thu, 4 Apr 2024 13:03:08 +0200 Subject: [PATCH 667/731] Ruby: Fix CFG for nodes that may raise --- .../codeql/ruby/controlflow/internal/Completion.qll | 13 +++++++++---- .../library-tests/controlflow/graph/Cfg.expected | 6 ------ .../library-tests/controlflow/graph/Nodes.expected | 1 - 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/controlflow/internal/Completion.qll b/ruby/ql/lib/codeql/ruby/controlflow/internal/Completion.qll index 39fefcbeae1a..83ea11e9d230 100644 --- a/ruby/ql/lib/codeql/ruby/controlflow/internal/Completion.qll +++ b/ruby/ql/lib/codeql/ruby/controlflow/internal/Completion.qll @@ -90,9 +90,7 @@ private predicate mayRaise(Call c) { c = getARescuableBodyChild() } /** A completion of a statement or an expression. */ abstract class Completion extends TCompletion { - private predicate isValidForSpecific(AstNode n) { - exists(AstNode other | n = other.getDesugared() and this.isValidForSpecific(other)) - or + private predicate isValidForSpecific0(AstNode n) { this = n.(NonReturningCall).getACompletion() or completionIsValidForStmt(n, this) @@ -110,12 +108,19 @@ abstract class Completion extends TCompletion { or n = any(RescueModifierExpr parent).getBody() and this = [TSimpleCompletion().(TCompletion), TRaiseCompletion()] + } + + private predicate isValidForSpecific(AstNode n) { + this.isValidForSpecific0(n) + or + exists(AstNode other | n = other.getDesugared() and this.isValidForSpecific(other)) or mayRaise(n) and ( this = TRaiseCompletion() or - this = TSimpleCompletion() and not n instanceof NonReturningCall + not any(Completion c).isValidForSpecific0(n) and + this = TSimpleCompletion() ) } diff --git a/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected b/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected index 2571a9dfeeb4..dfb5c8dfee41 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected +++ b/ruby/ql/test/library-tests/controlflow/graph/Cfg.expected @@ -6953,11 +6953,6 @@ raise.rb: #-----| true -> [true] ... || ... #-----| false -> b2 -# 174| ... || ... -#-----| true -> 1 -#-----| false -> 2 -#-----| raise -> ExceptionA - # 174| [false] ... || ... #-----| false -> 2 #-----| raise -> ExceptionA @@ -6971,7 +6966,6 @@ raise.rb: # 174| ... == ... #-----| false -> [false] ... || ... -#-----| -> ... || ... #-----| true -> [true] ... || ... #-----| raise -> ExceptionA diff --git a/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected b/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected index bc691d673b9a..2bc683f894e4 100644 --- a/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected +++ b/ruby/ql/test/library-tests/controlflow/graph/Nodes.expected @@ -367,7 +367,6 @@ positionalArguments | raise.rb:160:5:162:7 | call to bar | raise.rb:160:9:162:7 | -> { ... } | | raise.rb:161:7:161:14 | call to raise | raise.rb:161:13:161:14 | "" | | raise.rb:168:5:168:12 | call to raise | raise.rb:168:11:168:12 | "" | -| raise.rb:174:8:174:23 | ... \|\| ... | raise.rb:174:14:174:23 | ... == ... | | raise.rb:174:8:174:23 | [false] ... \|\| ... | raise.rb:174:14:174:23 | ... == ... | | raise.rb:174:8:174:23 | [true] ... \|\| ... | raise.rb:174:14:174:23 | ... == ... | | raise.rb:174:14:174:23 | ... == ... | raise.rb:174:20:174:23 | true | From e42639852c6b26abef54e52ebd5e74eeecbac8f9 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Thu, 4 Apr 2024 14:25:05 +0200 Subject: [PATCH 668/731] C#: Move nuget related `DependencyManager` methods to separate file --- .../DependencyManager.Nuget.cs | 364 ++++++++++++++++++ .../DependencyManager.cs | 351 ----------------- 2 files changed, 364 insertions(+), 351 deletions(-) create mode 100644 csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs new file mode 100644 index 000000000000..8e0be8ab1414 --- /dev/null +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs @@ -0,0 +1,364 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Semmle.Util; + +namespace Semmle.Extraction.CSharp.DependencyFetching +{ + public sealed partial class DependencyManager + { + private void RestoreNugetPackages(List<FileInfo> allNonBinaryFiles, IEnumerable<string> allProjects, IEnumerable<string> allSolutions, HashSet<string> dllPaths) + { + try + { + using (var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger)) + { + var count = nuget.InstallPackages(); + + if (nuget.PackageCount > 0) + { + CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString())); + CompilationInfos.Add(("Successfully restored packages.config files", count.ToString())); + } + } + + var nugetPackageDlls = legacyPackageDirectory.DirInfo.GetFiles("*.dll", new EnumerationOptions { RecurseSubdirectories = true }); + var nugetPackageDllPaths = nugetPackageDlls.Select(f => f.FullName).ToHashSet(); + var excludedPaths = nugetPackageDllPaths + .Where(path => IsPathInSubfolder(path, legacyPackageDirectory.DirInfo.FullName, "tools")) + .ToList(); + + if (nugetPackageDllPaths.Count > 0) + { + logger.LogInfo($"Restored {nugetPackageDllPaths.Count} Nuget DLLs."); + } + if (excludedPaths.Count > 0) + { + logger.LogInfo($"Excluding {excludedPaths.Count} Nuget DLLs."); + } + + foreach (var excludedPath in excludedPaths) + { + logger.LogInfo($"Excluded Nuget DLL: {excludedPath}"); + } + + nugetPackageDllPaths.ExceptWith(excludedPaths); + dllPaths.UnionWith(nugetPackageDllPaths); + } + catch (Exception exc) + { + logger.LogError($"Failed to restore Nuget packages with nuget.exe: {exc.Message}"); + } + + var restoredProjects = RestoreSolutions(allSolutions, out var assets1); + var projects = allProjects.Except(restoredProjects); + RestoreProjects(projects, out var assets2); + + var dependencies = Assets.GetCompilationDependencies(logger, assets1.Union(assets2)); + + var paths = dependencies + .Paths + .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) + .ToList(); + dllPaths.UnionWith(paths); + + LogAllUnusedPackages(dependencies); + DownloadMissingPackages(allNonBinaryFiles, dllPaths); + } + + /// <summary> + /// Executes `dotnet restore` on all solution files in solutions. + /// As opposed to RestoreProjects this is not run in parallel using PLINQ + /// as `dotnet restore` on a solution already uses multiple threads for restoring + /// the projects (this can be disabled with the `--disable-parallel` flag). + /// Populates assets with the relative paths to the assets files generated by the restore. + /// Returns a list of projects that are up to date with respect to restore. + /// </summary> + /// <param name="solutions">A list of paths to solution files.</param> + private IEnumerable<string> RestoreSolutions(IEnumerable<string> solutions, out IEnumerable<string> assets) + { + var successCount = 0; + var nugetSourceFailures = 0; + var assetFiles = new List<string>(); + var projects = solutions.SelectMany(solution => + { + logger.LogInfo($"Restoring solution {solution}..."); + var res = dotnet.Restore(new(solution, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true)); + if (res.Success) + { + successCount++; + } + if (res.HasNugetPackageSourceError) + { + nugetSourceFailures++; + } + assetFiles.AddRange(res.AssetsFilePaths); + return res.RestoredProjects; + }).ToList(); + assets = assetFiles; + CompilationInfos.Add(("Successfully restored solution files", successCount.ToString())); + CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString())); + CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString())); + return projects; + } + + /// <summary> + /// Executes `dotnet restore` on all projects in projects. + /// This is done in parallel for performance reasons. + /// Populates assets with the relative paths to the assets files generated by the restore. + /// </summary> + /// <param name="projects">A list of paths to project files.</param> + private void RestoreProjects(IEnumerable<string> projects, out IEnumerable<string> assets) + { + var successCount = 0; + var nugetSourceFailures = 0; + var assetFiles = new List<string>(); + var sync = new object(); + Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = threads }, project => + { + logger.LogInfo($"Restoring project {project}..."); + var res = dotnet.Restore(new(project, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true)); + lock (sync) + { + if (res.Success) + { + successCount++; + } + if (res.HasNugetPackageSourceError) + { + nugetSourceFailures++; + } + assetFiles.AddRange(res.AssetsFilePaths); + } + }); + assets = assetFiles; + CompilationInfos.Add(("Successfully restored project files", successCount.ToString())); + CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString())); + } + + private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPaths) + { + var alreadyDownloadedPackages = GetRestoredPackageDirectoryNames(packageDirectory.DirInfo); + var alreadyDownloadedLegacyPackages = GetRestoredLegacyPackageNames(); + + var notYetDownloadedPackages = new HashSet<PackageReference>(fileContent.AllPackages); + foreach (var alreadyDownloadedPackage in alreadyDownloadedPackages) + { + notYetDownloadedPackages.Remove(new(alreadyDownloadedPackage, PackageReferenceSource.SdkCsProj)); + } + foreach (var alreadyDownloadedLegacyPackage in alreadyDownloadedLegacyPackages) + { + notYetDownloadedPackages.Remove(new(alreadyDownloadedLegacyPackage, PackageReferenceSource.PackagesConfig)); + } + + if (notYetDownloadedPackages.Count == 0) + { + return; + } + + var multipleVersions = notYetDownloadedPackages + .GroupBy(p => p.Name) + .Where(g => g.Count() > 1) + .Select(g => g.Key) + .ToList(); + + foreach (var package in multipleVersions) + { + logger.LogWarning($"Found multiple not yet restored packages with name '{package}'."); + notYetDownloadedPackages.Remove(new(package, PackageReferenceSource.PackagesConfig)); + } + + logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored"); + + var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray(); + string? nugetConfig = null; + if (nugetConfigs.Length > 1) + { + logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}."); + nugetConfig = allFiles + .SelectRootFiles(sourceDir) + .SelectFileNamesByName("nuget.config") + .FirstOrDefault(); + if (nugetConfig == null) + { + logger.LogInfo("Could not find a top-level nuget.config file."); + } + } + else + { + nugetConfig = nugetConfigs.FirstOrDefault(); + } + + if (nugetConfig != null) + { + logger.LogInfo($"Using nuget.config file {nugetConfig}."); + } + + CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString())); + + var successCount = 0; + var sync = new object(); + + Parallel.ForEach(notYetDownloadedPackages, new ParallelOptions { MaxDegreeOfParallelism = threads }, package => + { + var success = TryRestorePackageManually(package.Name, nugetConfig, package.PackageReferenceSource); + if (!success) + { + return; + } + + lock (sync) + { + successCount++; + } + }); + + CompilationInfos.Add(("Successfully ran fallback nuget restore", successCount.ToString())); + + dllPaths.Add(missingPackageDirectory.DirInfo.FullName); + } + + private void LogAllUnusedPackages(DependencyContainer dependencies) + { + var allPackageDirectories = GetAllPackageDirectories(); + + logger.LogInfo($"Restored {allPackageDirectories.Count} packages"); + logger.LogInfo($"Found {dependencies.Packages.Count} packages in project.assets.json files"); + + allPackageDirectories + .Where(package => !dependencies.Packages.Contains(package)) + .Order() + .ForEach(package => logger.LogInfo($"Unused package: {package}")); + } + + + private ICollection<string> GetAllPackageDirectories() + { + return new DirectoryInfo(packageDirectory.DirInfo.FullName) + .EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false }) + .Select(d => d.Name) + .ToList(); + } + + private static bool IsPathInSubfolder(string path, string rootFolder, string subFolder) + { + return path.IndexOf( + $"{Path.DirectorySeparatorChar}{subFolder}{Path.DirectorySeparatorChar}", + rootFolder.Length, + StringComparison.InvariantCultureIgnoreCase) >= 0; + } + + private IEnumerable<string> GetRestoredLegacyPackageNames() + { + var oldPackageDirectories = GetRestoredPackageDirectoryNames(legacyPackageDirectory.DirInfo); + foreach (var oldPackageDirectory in oldPackageDirectories) + { + // nuget install restores packages to 'packagename.version' folders (dotnet restore to 'packagename/version' folders) + // typical folder names look like: + // newtonsoft.json.13.0.3 + // there are more complex ones too, such as: + // runtime.tizen.4.0.0-armel.Microsoft.NETCore.DotNetHostResolver.2.0.0-preview2-25407-01 + + var match = LegacyNugetPackage().Match(oldPackageDirectory); + if (!match.Success) + { + logger.LogWarning($"Package directory '{oldPackageDirectory}' doesn't match the expected pattern."); + continue; + } + + yield return match.Groups[1].Value.ToLowerInvariant(); + } + } + + private static IEnumerable<string> GetRestoredPackageDirectoryNames(DirectoryInfo root) + { + return Directory.GetDirectories(root.FullName) + .Select(d => Path.GetFileName(d).ToLowerInvariant()); + } + + [GeneratedRegex(@"<TargetFramework>.*</TargetFramework>", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] + private static partial Regex TargetFramework(); + + private bool TryRestorePackageManually(string package, string? nugetConfig, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj) + { + logger.LogInfo($"Restoring package {package}..."); + using var tempDir = new TemporaryDirectory(ComputeTempDirectory(package, "missingpackages_workingdir")); + var success = dotnet.New(tempDir.DirInfo.FullName); + if (!success) + { + return false; + } + + if (packageReferenceSource == PackageReferenceSource.PackagesConfig) + { + TryChangeTargetFrameworkMoniker(tempDir.DirInfo); + } + + success = dotnet.AddPackage(tempDir.DirInfo.FullName, package); + if (!success) + { + return false; + } + + var res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: nugetConfig)); + if (!res.Success) + { + if (res.HasNugetPackageSourceError && nugetConfig is not null) + { + // Restore could not be completed because the listed source is unavailable. Try without the nuget.config: + res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: null, ForceReevaluation: true)); + } + + // TODO: the restore might fail, we could retry with + // - a prerelease (*-* instead of *) version of the package, + // - a different target framework moniker. + + if (!res.Success) + { + logger.LogInfo($"Failed to restore nuget package {package}"); + return false; + } + } + + return true; + } + + private void TryChangeTargetFrameworkMoniker(DirectoryInfo tempDir) + { + try + { + logger.LogInfo($"Changing the target framework moniker in {tempDir.FullName}..."); + + var csprojs = tempDir.GetFiles("*.csproj", new EnumerationOptions { RecurseSubdirectories = false, MatchCasing = MatchCasing.CaseInsensitive }); + if (csprojs.Length != 1) + { + logger.LogError($"Could not find the .csproj file in {tempDir.FullName}, count = {csprojs.Length}"); + return; + } + + var csproj = csprojs[0]; + var content = File.ReadAllText(csproj.FullName); + var matches = TargetFramework().Matches(content); + if (matches.Count == 0) + { + logger.LogError($"Could not find target framework in {csproj.FullName}"); + } + else + { + content = TargetFramework().Replace(content, $"<TargetFramework>{FrameworkPackageNames.LatestNetFrameworkMoniker}</TargetFramework>", 1); + File.WriteAllText(csproj.FullName, content); + } + } + catch (Exception exc) + { + logger.LogError($"Failed to update target framework in {tempDir.FullName}: {exc}"); + } + } + + [GeneratedRegex(@"^(.+)\.(\d+\.\d+\.\d+(-(.+))?)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] + private static partial Regex LegacyNugetPackage(); + } +} diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 713d52d8e3f9..04716a64db46 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -230,73 +230,6 @@ private HashSet<string> AddFrameworkDlls(HashSet<string> dllPaths) return frameworkLocations; } - private void RestoreNugetPackages(List<FileInfo> allNonBinaryFiles, IEnumerable<string> allProjects, IEnumerable<string> allSolutions, HashSet<string> dllPaths) - { - try - { - using (var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger)) - { - var count = nuget.InstallPackages(); - - if (nuget.PackageCount > 0) - { - CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString())); - CompilationInfos.Add(("Successfully restored packages.config files", count.ToString())); - } - } - - var nugetPackageDlls = legacyPackageDirectory.DirInfo.GetFiles("*.dll", new EnumerationOptions { RecurseSubdirectories = true }); - var nugetPackageDllPaths = nugetPackageDlls.Select(f => f.FullName).ToHashSet(); - var excludedPaths = nugetPackageDllPaths - .Where(path => IsPathInSubfolder(path, legacyPackageDirectory.DirInfo.FullName, "tools")) - .ToList(); - - if (nugetPackageDllPaths.Count > 0) - { - logger.LogInfo($"Restored {nugetPackageDllPaths.Count} Nuget DLLs."); - } - if (excludedPaths.Count > 0) - { - logger.LogInfo($"Excluding {excludedPaths.Count} Nuget DLLs."); - } - - foreach (var excludedPath in excludedPaths) - { - logger.LogInfo($"Excluded Nuget DLL: {excludedPath}"); - } - - nugetPackageDllPaths.ExceptWith(excludedPaths); - dllPaths.UnionWith(nugetPackageDllPaths); - } - catch (Exception exc) - { - logger.LogError($"Failed to restore Nuget packages with nuget.exe: {exc.Message}"); - } - - var restoredProjects = RestoreSolutions(allSolutions, out var assets1); - var projects = allProjects.Except(restoredProjects); - RestoreProjects(projects, out var assets2); - - var dependencies = Assets.GetCompilationDependencies(logger, assets1.Union(assets2)); - - var paths = dependencies - .Paths - .Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d)) - .ToList(); - dllPaths.UnionWith(paths); - - LogAllUnusedPackages(dependencies); - DownloadMissingPackages(allNonBinaryFiles, dllPaths); - } - - private static bool IsPathInSubfolder(string path, string rootFolder, string subFolder) - { - return path.IndexOf( - $"{Path.DirectorySeparatorChar}{subFolder}{Path.DirectorySeparatorChar}", - rootFolder.Length, - StringComparison.InvariantCultureIgnoreCase) >= 0; - } - private void RemoveNugetAnalyzerReferences() { var packageFolder = packageDirectory.DirInfo.FullName.ToLowerInvariant(); @@ -483,27 +416,6 @@ private void AddMicrosoftWindowsDesktopDlls(ISet<string> dllPaths, ISet<string> .FullName; } - private ICollection<string> GetAllPackageDirectories() - { - return new DirectoryInfo(packageDirectory.DirInfo.FullName) - .EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false }) - .Select(d => d.Name) - .ToList(); - } - - private void LogAllUnusedPackages(DependencyContainer dependencies) - { - var allPackageDirectories = GetAllPackageDirectories(); - - logger.LogInfo($"Restored {allPackageDirectories.Count} packages"); - logger.LogInfo($"Found {dependencies.Packages.Count} packages in project.assets.json files"); - - allPackageDirectories - .Where(package => !dependencies.Packages.Contains(package)) - .Order() - .ForEach(package => logger.LogInfo($"Unused package: {package}")); - } - private void GenerateSourceFileFromImplicitUsings() { var usings = new HashSet<string>(); @@ -807,269 +719,6 @@ private void AnalyseProject(FileInfo project) } } - /// <summary> - /// Executes `dotnet restore` on all solution files in solutions. - /// As opposed to RestoreProjects this is not run in parallel using PLINQ - /// as `dotnet restore` on a solution already uses multiple threads for restoring - /// the projects (this can be disabled with the `--disable-parallel` flag). - /// Populates assets with the relative paths to the assets files generated by the restore. - /// Returns a list of projects that are up to date with respect to restore. - /// </summary> - /// <param name="solutions">A list of paths to solution files.</param> - private IEnumerable<string> RestoreSolutions(IEnumerable<string> solutions, out IEnumerable<string> assets) - { - var successCount = 0; - var nugetSourceFailures = 0; - var assetFiles = new List<string>(); - var projects = solutions.SelectMany(solution => - { - logger.LogInfo($"Restoring solution {solution}..."); - var res = dotnet.Restore(new(solution, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true)); - if (res.Success) - { - successCount++; - } - if (res.HasNugetPackageSourceError) - { - nugetSourceFailures++; - } - assetFiles.AddRange(res.AssetsFilePaths); - return res.RestoredProjects; - }).ToList(); - assets = assetFiles; - CompilationInfos.Add(("Successfully restored solution files", successCount.ToString())); - CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString())); - CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString())); - return projects; - } - - /// <summary> - /// Executes `dotnet restore` on all projects in projects. - /// This is done in parallel for performance reasons. - /// Populates assets with the relative paths to the assets files generated by the restore. - /// </summary> - /// <param name="projects">A list of paths to project files.</param> - private void RestoreProjects(IEnumerable<string> projects, out IEnumerable<string> assets) - { - var successCount = 0; - var nugetSourceFailures = 0; - var assetFiles = new List<string>(); - var sync = new object(); - Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = threads }, project => - { - logger.LogInfo($"Restoring project {project}..."); - var res = dotnet.Restore(new(project, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true)); - lock (sync) - { - if (res.Success) - { - successCount++; - } - if (res.HasNugetPackageSourceError) - { - nugetSourceFailures++; - } - assetFiles.AddRange(res.AssetsFilePaths); - } - }); - assets = assetFiles; - CompilationInfos.Add(("Successfully restored project files", successCount.ToString())); - CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString())); - } - - [GeneratedRegex(@"^(.+)\.(\d+\.\d+\.\d+(-(.+))?)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] - private static partial Regex LegacyNugetPackage(); - - - private static IEnumerable<string> GetRestoredPackageDirectoryNames(DirectoryInfo root) - { - return Directory.GetDirectories(root.FullName) - .Select(d => Path.GetFileName(d).ToLowerInvariant()); - } - - private IEnumerable<string> GetRestoredLegacyPackageNames() - { - var oldPackageDirectories = GetRestoredPackageDirectoryNames(legacyPackageDirectory.DirInfo); - foreach (var oldPackageDirectory in oldPackageDirectories) - { - // nuget install restores packages to 'packagename.version' folders (dotnet restore to 'packagename/version' folders) - // typical folder names look like: - // newtonsoft.json.13.0.3 - // there are more complex ones too, such as: - // runtime.tizen.4.0.0-armel.Microsoft.NETCore.DotNetHostResolver.2.0.0-preview2-25407-01 - - var match = LegacyNugetPackage().Match(oldPackageDirectory); - if (!match.Success) - { - logger.LogWarning($"Package directory '{oldPackageDirectory}' doesn't match the expected pattern."); - continue; - } - - yield return match.Groups[1].Value.ToLowerInvariant(); - } - } - - private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPaths) - { - var alreadyDownloadedPackages = GetRestoredPackageDirectoryNames(packageDirectory.DirInfo); - var alreadyDownloadedLegacyPackages = GetRestoredLegacyPackageNames(); - - var notYetDownloadedPackages = new HashSet<PackageReference>(fileContent.AllPackages); - foreach (var alreadyDownloadedPackage in alreadyDownloadedPackages) - { - notYetDownloadedPackages.Remove(new(alreadyDownloadedPackage, PackageReferenceSource.SdkCsProj)); - } - foreach (var alreadyDownloadedLegacyPackage in alreadyDownloadedLegacyPackages) - { - notYetDownloadedPackages.Remove(new(alreadyDownloadedLegacyPackage, PackageReferenceSource.PackagesConfig)); - } - - if (notYetDownloadedPackages.Count == 0) - { - return; - } - - var multipleVersions = notYetDownloadedPackages - .GroupBy(p => p.Name) - .Where(g => g.Count() > 1) - .Select(g => g.Key) - .ToList(); - - foreach (var package in multipleVersions) - { - logger.LogWarning($"Found multiple not yet restored packages with name '{package}'."); - notYetDownloadedPackages.Remove(new(package, PackageReferenceSource.PackagesConfig)); - } - - logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored"); - - var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray(); - string? nugetConfig = null; - if (nugetConfigs.Length > 1) - { - logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}."); - nugetConfig = allFiles - .SelectRootFiles(sourceDir) - .SelectFileNamesByName("nuget.config") - .FirstOrDefault(); - if (nugetConfig == null) - { - logger.LogInfo("Could not find a top-level nuget.config file."); - } - } - else - { - nugetConfig = nugetConfigs.FirstOrDefault(); - } - - if (nugetConfig != null) - { - logger.LogInfo($"Using nuget.config file {nugetConfig}."); - } - - CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString())); - - var successCount = 0; - var sync = new object(); - - Parallel.ForEach(notYetDownloadedPackages, new ParallelOptions { MaxDegreeOfParallelism = threads }, package => - { - var success = TryRestorePackageManually(package.Name, nugetConfig, package.PackageReferenceSource); - if (!success) - { - return; - } - - lock (sync) - { - successCount++; - } - }); - - CompilationInfos.Add(("Successfully ran fallback nuget restore", successCount.ToString())); - - dllPaths.Add(missingPackageDirectory.DirInfo.FullName); - } - - [GeneratedRegex(@"<TargetFramework>.*</TargetFramework>", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] - private static partial Regex TargetFramework(); - - private bool TryRestorePackageManually(string package, string? nugetConfig, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj) - { - logger.LogInfo($"Restoring package {package}..."); - using var tempDir = new TemporaryDirectory(ComputeTempDirectory(package, "missingpackages_workingdir")); - var success = dotnet.New(tempDir.DirInfo.FullName); - if (!success) - { - return false; - } - - if (packageReferenceSource == PackageReferenceSource.PackagesConfig) - { - TryChangeTargetFrameworkMoniker(tempDir.DirInfo); - } - - success = dotnet.AddPackage(tempDir.DirInfo.FullName, package); - if (!success) - { - return false; - } - - var res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: nugetConfig)); - if (!res.Success) - { - if (res.HasNugetPackageSourceError && nugetConfig is not null) - { - // Restore could not be completed because the listed source is unavailable. Try without the nuget.config: - res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: null, ForceReevaluation: true)); - } - - // TODO: the restore might fail, we could retry with - // - a prerelease (*-* instead of *) version of the package, - // - a different target framework moniker. - - if (!res.Success) - { - logger.LogInfo($"Failed to restore nuget package {package}"); - return false; - } - } - - return true; - } - - private void TryChangeTargetFrameworkMoniker(DirectoryInfo tempDir) - { - try - { - logger.LogInfo($"Changing the target framework moniker in {tempDir.FullName}..."); - - var csprojs = tempDir.GetFiles("*.csproj", new EnumerationOptions { RecurseSubdirectories = false, MatchCasing = MatchCasing.CaseInsensitive }); - if (csprojs.Length != 1) - { - logger.LogError($"Could not find the .csproj file in {tempDir.FullName}, count = {csprojs.Length}"); - return; - } - - var csproj = csprojs[0]; - var content = File.ReadAllText(csproj.FullName); - var matches = TargetFramework().Matches(content); - if (matches.Count == 0) - { - logger.LogError($"Could not find target framework in {csproj.FullName}"); - } - else - { - content = TargetFramework().Replace(content, $"<TargetFramework>{FrameworkPackageNames.LatestNetFrameworkMoniker}</TargetFramework>", 1); - File.WriteAllText(csproj.FullName, content); - } - } - catch (Exception exc) - { - logger.LogError($"Failed to update target framework in {tempDir.FullName}: {exc}"); - } - } - public void Dispose(TemporaryDirectory? dir, string name) { try From 2336e1462749386aa3db178df112d81c2f569e09 Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo <dbartol@github.com> Date: Thu, 4 Apr 2024 10:31:05 -0400 Subject: [PATCH 669/731] Remove expectation of spurious diagnostic --- java/ql/test/query-tests/SpuriousJavadocParam/Test.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/ql/test/query-tests/SpuriousJavadocParam/Test.java b/java/ql/test/query-tests/SpuriousJavadocParam/Test.java index de108008ee83..434353f4c676 100644 --- a/java/ql/test/query-tests/SpuriousJavadocParam/Test.java +++ b/java/ql/test/query-tests/SpuriousJavadocParam/Test.java @@ -132,6 +132,4 @@ static record SomeRecord(int i, int j) {} * @param k does not */ static record GenericRecord<T>(int i, int j) {} - - // Diagnostic Matches: Incomplete inheritance relation for type java.lang.Object and supertype none } From 4faff83aa0311d363598302ab4a5cbc921c7b3a8 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Thu, 4 Apr 2024 16:49:55 +0200 Subject: [PATCH 670/731] Python: Extractor: Remove dependency installation fallback --- python/extractor/buildtools/index.py | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/python/extractor/buildtools/index.py b/python/extractor/buildtools/index.py index 105218683134..ec6f45d62c7d 100644 --- a/python/extractor/buildtools/index.py +++ b/python/extractor/buildtools/index.py @@ -76,28 +76,11 @@ def get_filter_options(): return [] def get_path_options(version): - # We want to stop extracting libraries, and only extract the code that is in the - # repo. While in the transition period for stopping to install dependencies in the - # codeql-action, we will need to be able to support both old and new behavior. - # - # Like PYTHONUNBUFFERED for Python, we treat any non-empty string as meaning the - # flag is enabled. - # https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED - if os.environ.get("CODEQL_EXTRACTOR_PYTHON_DISABLE_LIBRARY_EXTRACTION"): - return [] + # Before 2.17.1 it was possible to extract installed libraries + # where this function would return ["-p", "/path/to/library"]. + # However, from 2.17.1 onwards, this is no longer supported. - # Not extracting dependencies will be default in CodeQL CLI release 2.16.0. Until - # 2.17.0, we provide an escape hatch to get the old behavior. - force_enable_envvar_name = "CODEQL_EXTRACTOR_PYTHON_FORCE_ENABLE_LIBRARY_EXTRACTION_UNTIL_2_17_0" - if os.environ.get(force_enable_envvar_name): - print("WARNING: We plan to remove the availability of the {} option in CodeQL CLI release 2.17.0 and beyond. Please let us know by submitting an issue to https://github.com/github/codeql why you needed to re-enable dependency extraction.".format(force_enable_envvar_name)) - path_option = [ "-p", install.get_library(version)] - if PATH_TAG in os.environ: - path_option = split_into_options(os.environ[PATH_TAG], "-p") + path_option - return path_option - else: - print("INFO: The Python extractor has recently (from 2.16.0 CodeQL CLI release) stopped extracting dependencies by default, and therefore stopped analyzing the source code of dependencies by default. We plan to remove this entirely in CodeQL CLI release 2.17.0. If you encounter problems, please let us know by submitting an issue to https://github.com/github/codeql, so we can consider adjusting our plans. It is possible to re-enable dependency extraction by exporting '{}=1'.".format(force_enable_envvar_name)) - return [] + return [] def get_stdlib(): return os.path.dirname(os.__file__) From 0604b4cc14bdfa515a148995b01c6b1834deccb5 Mon Sep 17 00:00:00 2001 From: Pierre <turbo@github.com> Date: Fri, 5 Apr 2024 09:33:51 +0200 Subject: [PATCH 671/731] Changelog mergeback for versions prior to 2.17.0 --- .../codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst | 3 +-- .../codeql-overview/codeql-changelog/codeql-cli-2.12.6.rst | 5 ++--- .../codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst | 2 +- .../codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst | 3 +-- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst index b0888bd8beaf..a9092f71f189 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.0.rst @@ -53,8 +53,7 @@ New Features |link-code-paths-and-code-paths-ignore-configuration-1|_. * In the VS Code extension, recursive calls will be marked with inlay hints. These can be disabled with the global inlay hints setting - (:code:`editor.inlayHints.enabled`). If you just want to disable them for - codeql the settings can be scoped to just codeql files (language id is :code:`ql`). + (:code:`editor.inlayHints.enabled`). If you just want to disable them for codeql the settings can be scoped to just codeql files (language id is :code:`ql`). See `Language Specific Editor Settings <https://code.visualstudio.com/docs/getstarted/settings#_language-specific-editor-settings>`__ in the VS Code documentation for more information. * The CLI now gives a more helpful error message when asked to run queries on a database that has not been finalized. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.6.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.6.rst index 8b7feb9e683d..aa61cc37f8b6 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.6.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.12.6.rst @@ -38,12 +38,11 @@ New Features Known Issues ~~~~~~~~~~~~ -* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1. +* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1. This issue occurs when uploading certain kinds of diagnostic information and causes the subcommand to fail with "A fatal error occurred: Invalid SARIF.", reporting an :code:`InvalidDefinitionException`. - Customers who wish to use CodeQL 2.12.6 or 2.13.0 can - work around the problem by passing :code:`--no-sarif-include-diagnostics` to any invocations of :code:`codeql database analyze` or :code:`codeql database interpret-results`. + Customers who wish to use CodeQL 2.12.6 or 2.13.0 can work around the problem by passing :code:`--no-sarif-include-diagnostics` to any invocations of :code:`codeql database analyze` or :code:`codeql database interpret-results`. Query Packs ----------- diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst index 032b7a710147..748e2ff3b64d 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.0.rst @@ -73,7 +73,7 @@ New Features Known Issues ~~~~~~~~~~~~ -* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1. For more information, see the +* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1. For more information, see the "Known issues" section for CodeQL 2.12.6. Query Packs diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst index b82d2dd5a5a7..d51911d3d69a 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.13.3.rst @@ -26,8 +26,7 @@ Bug Fixes * Fixed a bug that could have caused the compiler to incorrectly infer that a class matched a type signature. The bug only affected classes with overriding member predicates that had stronger binding sets than their root definitions. -* Fixed a bug where a query could not be run from VS Code when there were packs nested within sibling directories - of the query. +* Fixed a bug where a query could not be run from VS Code when there were packs nested within sibling directories of the query. New Features ~~~~~~~~~~~~ From 9e49c5f1850f15eae4962140976ea0386a83a38e Mon Sep 17 00:00:00 2001 From: Pierre <turbo@github.com> Date: Fri, 5 Apr 2024 09:34:27 +0200 Subject: [PATCH 672/731] Add changelogs for 2.16.6 (to this branch) and 2.17.0 (new) --- .../codeql-changelog/codeql-cli-2.16.6.rst | 25 ++ .../codeql-changelog/codeql-cli-2.17.0.rst | 220 ++++++++++++++++++ .../codeql-changelog/index.rst | 2 + 3 files changed, 247 insertions(+) create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.6.rst create mode 100644 docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.6.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.6.rst new file mode 100644 index 000000000000..dba880ceaaef --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.16.6.rst @@ -0,0 +1,25 @@ +.. _codeql-cli-2.16.6: + +========================== +CodeQL 2.16.6 (2024-03-26) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog <https://github.blog/tag/code-scanning/>`__, `relevant GitHub Changelog updates <https://github.blog/changelog/label/code-scanning/>`__, `changes in the CodeQL extension for Visual Studio Code <https://marketplace.visualstudio.com/items/GitHub.vscode-codeql/changelog>`__, and the `CodeQL Action changelog <https://github.com/github/codeql-action/blob/main/CHANGELOG.md>`__. + +Security Coverage +----------------- + +CodeQL 2.16.6 runs a total of 409 security queries when configured with the Default suite (covering 160 CWE). The Extended suite enables an additional 132 queries (covering 34 more CWE). + +CodeQL CLI +---------- + +Bug Fixes +~~~~~~~~~ + +* Fixes a bug where extractor logs would be output at a lower than expected verbosity level when using the :code:`codeql database create` command. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst new file mode 100644 index 000000000000..59b331fc1541 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.17.0.rst @@ -0,0 +1,220 @@ +.. _codeql-cli-2.17.0: + +========================== +CodeQL 2.17.0 (2024-04-04) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog <https://github.blog/tag/code-scanning/>`__, `relevant GitHub Changelog updates <https://github.blog/changelog/label/code-scanning/>`__, `changes in the CodeQL extension for Visual Studio Code <https://marketplace.visualstudio.com/items/GitHub.vscode-codeql/changelog>`__, and the `CodeQL Action changelog <https://github.com/github/codeql-action/blob/main/CHANGELOG.md>`__. + +Security Coverage +----------------- + +CodeQL 2.17.0 runs a total of 410 security queries when configured with the Default suite (covering 160 CWE). The Extended suite enables an additional 130 queries (covering 34 more CWE). + +CodeQL CLI +---------- + +Deprecations +~~~~~~~~~~~~ + +* The :code:`--[no-]analysis-summary-v2` and :code:`--[no-]new-analysis-summary` options that were used to enable (or disable) improved summary information printed at the end of a :code:`codeql database analyze` invocation are no longer supported. + Improved summary information is now enabled for all invocations. +* Support for overwriting default CodeQL SARIF run properties using the + :code:`--sarif-run-property` command line option has been removed. This removes the ability to overwrite the :code:`semmle.formatSpecifier`, :code:`metricResults`, and + :code:`codeqlConfigSummary` properties in the SARIF run file. + +Improvements +~~~~~~~~~~~~ + +* TRAP import (a part of :code:`codeql database create` and :code:`codeql database finalize`) + now performs better in low-memory situations. (Put another way, it now needs less RAM to achieve the same performance as before.) + +* The worst-case performance of transitive closure computation (using the :code:`+` or :code:`*` postfix operators or the :code:`fastTC` higher-order primitive in QL) has been greatly improved. + +Miscellaneous +~~~~~~~~~~~~~ + +* The build of Eclipse Temurin OpenJDK that is used to run the CodeQL CLI has been updated to version 21.0.2. + +Query Packs +----------- + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The :code:`Stored` variants of some queries (:code:`cs/stored-command-line-injection`, :code:`cs/web/stored-xss`, :code:`cs/stored-ldap-injection`, :code:`cs/xml/stored-xpath-injection`, :code:`cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the :code:`file` and :code:`database` threat models in your threat model configuration. + +Java +"""" + +* The :code:`java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The "Missing return-value check for a 'scanf'-like function" query (:code:`cpp/missing-check-scanf`) has been converted to a :code:`path-problem` query. +* The "Potentially uninitialized local variable" query (:code:`cpp/uninitialized-local`) has been converted to a :code:`path-problem` query. +* Added models for :code:`GLib` allocation and deallocation functions. + +C# +"" + +* The alert message of :code:`cs/wrong-compareto-signature` has been changed to remove unnecessary element references. +* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are :code:`cs/code-injection`, :code:`cs/resource-injection`, :code:`cs/sql-injection`, and :code:`cs/uncontrolled-format-string`. + +Golang +"""""" + +* The query :code:`go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics. +* The query :code:`go/sql-injection` now recognizes more sinks in the package :code:`github.com/Masterminds/squirrel`. + +Java +"""" + +* Variables named :code:`tokenImage` are no longer sources for the :code:`java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts. +* Added sanitizers for relative URLs, :code:`List.contains()`, and checking the host of a URI to the :code:`java/ssrf` and :code:`java/unvalidated-url-redirection` queries. + +JavaScript/TypeScript +""""""""""""""""""""" + +* The call graph has been improved, leading to more alerts for data flow based queries. + +New Queries +~~~~~~~~~~~ + +C/C++ +""""" + +* Added a new query, :code:`cpp/type-confusion`, to detect casts to invalid types. + +Golang +"""""" + +* The query "Slice memory allocation with excessive size value" (:code:`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally `submitted as an experimental query by @Malayke <https://github.com/github/codeql/pull/15130>`__. + +Java +"""" + +* The query :code:`java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as :code:`java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query `by @haby0 <https://github.com/github/codeql/pull/6240>`__ and `by @luchua-bc <https://github.com/github/codeql/pull/7286>`__. + +Query Metadata Changes +~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* :code:`@precision medium` metadata was added to the :code:`cpp/boost/tls-settings-misconfiguration` and :code:`cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The :code:`@name` metadata of these queries were also updated. + +JavaScript/TypeScript +""""""""""""""""""""" + +* The :code:`@precision` of the :code:`js/unsafe-external-link` has been reduced to :code:`low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with :code:`target="_blank"`. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C# +"" + +* The CIL extractor has been deleted and the corresponding extractor option :code:`cil` has been removed. It is no longer possible to do CIL extraction. +* The QL library C# classes no longer extend their corresponding :code:`DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all :code:`DotNet` and :code:`CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction. + +Java +"""" + +* The Java extractor no longer supports the :code:`ODASA_SNAPSHOT` legacy environment variable. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +JavaScript/TypeScript +""""""""""""""""""""" + +* Added support for TypeScript 5.4. + +Swift +""""" + +* Upgraded to Swift 5.10 +* New AST node is extracted: :code:`ThenStmt` + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added destructors for temporary objects with extended lifetimes to the intermediate representation. + +C# +"" + +* Added new source models for the :code:`Dapper` package. These models can be enabled by enabling the :code:`database` threat model. +* Additional models have been added for :code:`System.IO`. These are primarily source models with the :code:`file` threat model, and summaries related to reading from a file or stream. +* Support for C# 12 / .NET8. +* Added the :code:`windows-registry` source kind and threat model to represent values which come from the registry on Windows. +* The models for :code:`System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs. +* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the :code:`commandargs` and :code:`environment` threat models. +* The :code:`cs/assembly-path-injection` query has been modified so that it's sources rely on :code:`ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the :code:`commandargs` threat model. +* The models for :code:`System.IO.TextReader` have been modified to better model the flow of tainted text from a :code:`TextReader`. + +Golang +"""""" + +* The :code:`CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015. +* Added dataflow sources for the package :code:`gopkg.in/macaron.v1`. + +Java +"""" + +* Increased the precision of some dataflow models of the class :code:`java.net.URL` by distinguishing the parts of a URL. +* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns. +* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The :code:`PatternCase` class gains the new :code:`getPatternAtIndex` and :code:`getAPattern` predicates, and deprecates :code:`getPattern`. +* Added a :code:`path-injection` sink for the :code:`open` methods of the :code:`android.os.ParcelFileDescriptor` class. + +Ruby +"""" + +* Data flow is now tracked through :code:`ActiveRecord` scopes. +* Modeled instances of :code:`ActionDispatch::Http::UploadedFile` that can be obtained from element reads of :code:`ActionController::Parameters`, with calls to :code:`original_filename`, :code:`content_type`, and :code:`read` now propagating taint from their receiver. +* The second argument, :code:`subquery_name`, of the :code:`ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink. +* Calls to :code:`Typhoeus::Request.new` are now considered as instances of the :code:`Http::Client::Request` concept, with the response body being treated as a remote flow source. +* New command injection sinks have been added, including :code:`Process.spawn`, :code:`Process.exec`, :code:`Terrapin::CommandLine` and the :code:`open4` gem. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added a :code:`TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field. +* Added a predicate :code:`GuardCondition.comparesEq/4` to query whether an expression is compared to a constant. +* Added a predicate :code:`GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant. +* Added a predicate :code:`GuardCondition.comparesLt/4` to query whether an expression is compared to a constant. +* Added a predicate :code:`GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant. +* Added a predicate :code:`GuardCondition.valueControls` to query whether a basic block is guarded by a particular :code:`case` of a :code:`switch` statement. + +Shared Libraries +---------------- + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Dataflow Analysis +""""""""""""""""" + +* Path explanations now include flow that goes through callbacks passed into library functions. For example, if :code:`map` is a library function, then in :code:`result = map(xs, x => x + 1)` we will now include the step from :code:`x` to :code:`x + 1` in the path explanation, instead of going directly from :code:`xs` to :code:`result`. Note that this change does not affect actual query results, but only how path explanations are computed. diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index 5015699e2faf..222e133ed190 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,8 @@ A list of queries for each suite and language `is available here <https://docs.g .. toctree:: :maxdepth: 1 + codeql-cli-2.17.0 + codeql-cli-2.16.6 codeql-cli-2.16.5 codeql-cli-2.16.4 codeql-cli-2.16.3 From 7bec41096c182364830c260ce49489d593ca9550 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Wed, 3 Apr 2024 14:18:30 +0000 Subject: [PATCH 673/731] Python: Rename `tsg-build` target to `tsp-build` The latter makes more sense, as it's actually building `tree-sitter-python`. --- python/extractor/tsg-python/tsp/BUILD.bazel | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/extractor/tsg-python/tsp/BUILD.bazel b/python/extractor/tsg-python/tsp/BUILD.bazel index 71319e894f6a..e3389fce1ccd 100644 --- a/python/extractor/tsg-python/tsp/BUILD.bazel +++ b/python/extractor/tsg-python/tsp/BUILD.bazel @@ -7,7 +7,7 @@ package(default_visibility = ["//visibility:public"]) # This will run the build script from the root of the workspace, and # collect the outputs. cargo_build_script( - name = "tsg-build", + name = "tsp-build", srcs = ["bindings/rust/build.rs"], data = glob([ "src/**", @@ -32,7 +32,7 @@ rust_library( proc_macro_deps = all_crate_deps( proc_macro = True, ), - deps = [":tsg-build"] + all_crate_deps( + deps = [":tsp-build"] + all_crate_deps( normal = True, ), ) From 752d28c1b9fee6047180b7233e753473028b557a Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Wed, 3 Apr 2024 14:20:54 +0000 Subject: [PATCH 674/731] Python: Update repinning instructions This aligns us better with the corresponding instructions for the Ruby extractor. --- python/extractor/tsg-python/Cargo.toml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/python/extractor/tsg-python/Cargo.toml b/python/extractor/tsg-python/Cargo.toml index feecd2541593..ac4d40931895 100644 --- a/python/extractor/tsg-python/Cargo.toml +++ b/python/extractor/tsg-python/Cargo.toml @@ -7,9 +7,14 @@ authors = ["Taus Brock-Nannestad <tausbn@github.com>"] edition = "2018" # When changing/updating these, the `Cargo.Bazel.lock` file has to be regenerated. -# Check out the documentation at https://bazelbuild.github.io/rules_rust/crate_universe.html#repinning--updating-dependencies -# for how to do so. The bazel repository for the tsg-python project is called `py_deps`, -# and instead of calling `bazel sync`, `./build --bazel sync` should be used instead, to always use the correct bazel version. +# Run `CARGO_BAZEL_REPIN=true CARGO_BAZEL_REPIN_ONLY=py_deps ./build --bazel sync --only=py_deps` +# in the `semmle-code` repository to do so. +# For more information, check out the documentation at +# https://bazelbuild.github.io/rules_rust/crate_universe.html#repinning--updating-dependencies +# In the future, the hope is to move this handling of the dependencies entirely into the `codeql` repository, +# but that depends on `rules_rust` being fully compatible with bzlmod, which they aren't yet +# (c.f. https://github.com/bazelbuild/rules_rust/issues/2452). +# Warning: The process takes >5min on my M1 mac, so do wait for a while. [dependencies] anyhow = "1.0" regex = "1" From 599f573a4abb0b20411aa22298dd3ec0c5a1eaf1 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Wed, 3 Apr 2024 14:25:03 +0000 Subject: [PATCH 675/731] Python: Preserve comments and docstrings in extractor --- python/extractor/make_zips.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/python/extractor/make_zips.py b/python/extractor/make_zips.py index b91b1bf458d8..faf595acc378 100755 --- a/python/extractor/make_zips.py +++ b/python/extractor/make_zips.py @@ -8,7 +8,6 @@ import compileall from python_tracer import getzipfilename -from unparse import strip_comments_and_docstrings # TO DO -- Add options to set destination directory and source directory @@ -84,9 +83,7 @@ def write_source(zipped, root, name, extensions=[".py"]): if ext not in extensions: continue path = os.path.join(dirpath, name) - temp = strip_comments_and_docstrings(path) - zipped.write(temp, os.path.relpath(path, root)) - os.remove(temp) + zipped.write(path, os.path.relpath(path, root)) def main(): parser = optparse.OptionParser(usage = "usage: %prog [install-dir]") From ef9f99b3be728d910539c7750e77a11cfda64425 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Wed, 3 Apr 2024 14:30:29 +0000 Subject: [PATCH 676/731] Python: Remove `unparse.py` --- python/extractor/BUILD.bazel | 1 - python/extractor/licenses.md | 1 - python/extractor/unparse.py | 709 ----------------------------------- 3 files changed, 711 deletions(-) delete mode 100644 python/extractor/unparse.py diff --git a/python/extractor/BUILD.bazel b/python/extractor/BUILD.bazel index 3b5a5b3a6179..697bf8d49a48 100644 --- a/python/extractor/BUILD.bazel +++ b/python/extractor/BUILD.bazel @@ -5,7 +5,6 @@ py_binary( srcs = [ "make_zips.py", "python_tracer.py", - "unparse.py", ], data = [ "LICENSE-PSF.md", diff --git a/python/extractor/licenses.md b/python/extractor/licenses.md index f3a5c6cc458e..d585a84626dc 100644 --- a/python/extractor/licenses.md +++ b/python/extractor/licenses.md @@ -6,7 +6,6 @@ | `tsg-python/tree-sitter-python` | Y | MIT | Used in `tsg-python` to parse Python files | | `tsg-python` | Y | MIT / Apache | This is our own creation, so are free to choose what license it is covered by. | | `tree-sitter-graph` | N | MIT / Apache | Used in `tsg-python` to execute files written in the `tree-sitter-graph` language. | -| `unparse.py` | Y | PSF | Copied and adapted from `Tools/unparse.py` from the `cpython` source code, with attribution. | | `imp.py` | Y | PSF | Copied and adapted from `Lib/imp.py` from the `cpython` source code, with attribution. | | `semmle/data/*.trap` | Y | PSF | These files were derived from the C source code of the `cpython` project, and are used in our modelling of built-in objects. No attribution, currently. | | `semmle/thrift/parse.py` | Y | Apache | Includes a grammar based on https://github.com/apache/thrift/blob/master/doc/specs/idl.md, with comment stating this attribution. | diff --git a/python/extractor/unparse.py b/python/extractor/unparse.py deleted file mode 100644 index b12f1501592d..000000000000 --- a/python/extractor/unparse.py +++ /dev/null @@ -1,709 +0,0 @@ -#Copied Tools.unparse.py with modifications. Copyright PSF. - -"Usage: unparse.py <path to source file>" -import sys -import ast -import tokenize -import io -import os -import shutil - -# Large float and imaginary literals get turned into infinities in the AST. -# We unparse those infinities to INFSTR. -INFSTR = "1e" + repr(sys.float_info.max_10_exp + 1) - -def interleave(inter, f, seq): - """Call f on each item in seq, calling inter() in between. - """ - seq = iter(seq) - try: - f(next(seq)) - except StopIteration: - pass - else: - for x in seq: - inter() - f(x) - -class Unparser: - """Methods in this class recursively traverse an AST and - output source code for the abstract syntax; original formatting - is disregarded. """ - - def __init__(self, tree, file = sys.stdout): - """Unparser(tree, file=sys.stdout) -> None. - Print the source for tree to file.""" - self.f = file - self._indent = 0 - self.dispatch(tree) - print("", file=self.f) - self.f.flush() - - def fill(self, text = ""): - "Indent a piece of text, according to the current indentation level" - self.f.write("\n"+" "*self._indent + text) - - def write(self, text): - "Append a piece of text to the current line." - self.f.write(text) - - def enter(self): - "Print ':', and increase the indentation." - self.write(":") - self._indent += 1 - - def leave(self): - "Decrease the indentation level." - self._indent -= 1 - - def dispatch(self, tree): - "Dispatcher function, dispatching tree type T to method _T." - if isinstance(tree, list): - for t in tree: - self.dispatch(t) - return - meth = getattr(self, "_"+tree.__class__.__name__) - meth(tree) - - def remove_docstring(self, t): - if hasattr(t, "docstring"): - return - if not t.body: - return - if not isinstance(t.body[0], ast.Expr): - return - if not isinstance(t.body[0].value, ast.Str): - return - t.body = t.body[1:] - - def add_pass(self, t): - if t.body: - #No pass needed - return - t.body = [ast.Pass()] - - ############### Unparsing methods ###################### - # There should be one method per concrete grammar type # - # Constructors should be grouped by sum type. Ideally, # - # this would follow the order in the grammar, but # - # currently doesn't. # - ######################################################## - - def _Module(self, tree): - self.remove_docstring(tree) - self.add_pass(tree) - for stmt in tree.body: - self.dispatch(stmt) - - # stmt - def _Expr(self, tree): - self.fill() - self.dispatch(tree.value) - - def _Import(self, t): - self.fill("import ") - interleave(lambda: self.write(", "), self.dispatch, t.names) - - def _ImportFrom(self, t): - self.fill("from ") - self.write("." * t.level) - if t.module: - self.write(t.module) - self.write(" import ") - interleave(lambda: self.write(", "), self.dispatch, t.names) - - def _Assign(self, t): - self.fill() - for target in t.targets: - self.dispatch(target) - self.write(" = ") - self.dispatch(t.value) - - def _AugAssign(self, t): - self.fill() - self.dispatch(t.target) - self.write(" "+self.binop[t.op.__class__.__name__]+"= ") - self.dispatch(t.value) - - def _AnnAssign(self, t): - self.fill() - if not t.simple and isinstance(t.target, ast.Name): - self.write('(') - self.dispatch(t.target) - if not t.simple and isinstance(t.target, ast.Name): - self.write(')') - self.write(": ") - self.dispatch(t.annotation) - if t.value: - self.write(" = ") - self.dispatch(t.value) - - def _Return(self, t): - self.fill("return") - if t.value: - self.write(" ") - self.dispatch(t.value) - - def _Pass(self, t): - self.fill("pass") - - def _Break(self, t): - self.fill("break") - - def _Continue(self, t): - self.fill("continue") - - def _Delete(self, t): - self.fill("del ") - interleave(lambda: self.write(", "), self.dispatch, t.targets) - - def _Assert(self, t): - self.fill("assert ") - self.dispatch(t.test) - if t.msg: - self.write(", ") - self.dispatch(t.msg) - - def _Global(self, t): - self.fill("global ") - interleave(lambda: self.write(", "), self.write, t.names) - - def _Nonlocal(self, t): - self.fill("nonlocal ") - interleave(lambda: self.write(", "), self.write, t.names) - - def _Await(self, t): - self.write("(") - self.write("await") - if t.value: - self.write(" ") - self.dispatch(t.value) - self.write(")") - - def _Yield(self, t): - self.write("(") - self.write("yield") - if t.value: - self.write(" ") - self.dispatch(t.value) - self.write(")") - - def _YieldFrom(self, t): - self.write("(") - self.write("yield from") - if t.value: - self.write(" ") - self.dispatch(t.value) - self.write(")") - - def _Raise(self, t): - self.fill("raise") - if not t.exc: - assert not t.cause - return - self.write(" ") - self.dispatch(t.exc) - if t.cause: - self.write(" from ") - self.dispatch(t.cause) - - def _Try(self, t): - self.fill("try") - self.enter() - self.dispatch(t.body) - self.leave() - for ex in t.handlers: - self.dispatch(ex) - if t.orelse: - self.fill("else") - self.enter() - self.dispatch(t.orelse) - self.leave() - if t.finalbody: - self.fill("finally") - self.enter() - self.dispatch(t.finalbody) - self.leave() - - def _ExceptHandler(self, t): - self.fill("except") - if t.type: - self.write(" ") - self.dispatch(t.type) - if t.name: - self.write(" as ") - self.write(t.name) - self.enter() - self.dispatch(t.body) - self.leave() - - def _ClassDef(self, t): - self.write("\n") - for deco in t.decorator_list: - self.fill("@") - self.dispatch(deco) - self.fill("class "+t.name) - self.write("(") - comma = False - for e in t.bases: - if comma: self.write(", ") - else: comma = True - self.dispatch(e) - for e in t.keywords: - if comma: self.write(", ") - else: comma = True - self.dispatch(e) - self.write(")") - - self.enter() - self.remove_docstring(t) - self.add_pass(t) - self.dispatch(t.body) - self.leave() - - def _FunctionDef(self, t): - self.__FunctionDef_helper(t, "def") - - def _AsyncFunctionDef(self, t): - self.__FunctionDef_helper(t, "async def") - - def __FunctionDef_helper(self, t, fill_suffix): - self.write("\n") - for deco in t.decorator_list: - self.fill("@") - self.dispatch(deco) - def_str = fill_suffix+" "+t.name + "(" - self.fill(def_str) - self.dispatch(t.args) - self.write(")") - if t.returns: - self.write(" -> ") - self.dispatch(t.returns) - self.enter() - self.remove_docstring(t) - self.add_pass(t) - self.dispatch(t.body) - self.leave() - - def _For(self, t): - self.__For_helper("for ", t) - - def _AsyncFor(self, t): - self.__For_helper("async for ", t) - - def __For_helper(self, fill, t): - self.fill(fill) - self.dispatch(t.target) - self.write(" in ") - self.dispatch(t.iter) - self.enter() - self.dispatch(t.body) - self.leave() - if t.orelse: - self.fill("else") - self.enter() - self.dispatch(t.orelse) - self.leave() - - def _If(self, t): - self.fill("if ") - self.dispatch(t.test) - self.enter() - self.dispatch(t.body) - self.leave() - # collapse nested ifs into equivalent elifs. - while (t.orelse and len(t.orelse) == 1 and - isinstance(t.orelse[0], ast.If)): - t = t.orelse[0] - self.fill("elif ") - self.dispatch(t.test) - self.enter() - self.dispatch(t.body) - self.leave() - # final else - if t.orelse: - self.fill("else") - self.enter() - self.dispatch(t.orelse) - self.leave() - - def _While(self, t): - self.fill("while ") - self.dispatch(t.test) - self.enter() - self.dispatch(t.body) - self.leave() - if t.orelse: - self.fill("else") - self.enter() - self.dispatch(t.orelse) - self.leave() - - def _With(self, t): - self.fill("with ") - interleave(lambda: self.write(", "), self.dispatch, t.items) - self.enter() - self.dispatch(t.body) - self.leave() - - def _AsyncWith(self, t): - self.fill("async with ") - interleave(lambda: self.write(", "), self.dispatch, t.items) - self.enter() - self.dispatch(t.body) - self.leave() - - # expr - def _Bytes(self, t): - self.write(repr(t.s)) - - def _Str(self, tree): - s = repr(tree.s).encode("ascii", errors="backslashreplace").decode("ascii") - self.write(s) - - def _JoinedStr(self, t): - self.write("f") - string = io.StringIO() - self._fstring_JoinedStr(t, string.write) - self.write(repr(string.getvalue())) - - def _FormattedValue(self, t): - self.write("f") - string = io.StringIO() - self._fstring_FormattedValue(t, string.write) - self.write(repr(string.getvalue())) - - def _fstring_JoinedStr(self, t, write): - for value in t.values: - meth = getattr(self, "_fstring_" + type(value).__name__) - meth(value, write) - - def _fstring_Str(self, t, write): - value = t.s.replace("{", "{{").replace("}", "}}") - write(value) - - def _fstring_Constant(self, t, write): - assert isinstance(t.value, str) - value = t.value.replace("{", "{{").replace("}", "}}") - write(value) - - def _fstring_FormattedValue(self, t, write): - write("{") - expr = io.StringIO() - Unparser(t.value, expr) - expr = expr.getvalue().rstrip("\n") - if expr.startswith("{"): - write(" ") # Separate pair of opening brackets as "{ {" - write(expr) - if t.conversion != -1: - conversion = chr(t.conversion) - assert conversion in "sra" - write("!%s" % conversion) - if t.format_spec: - write(":") - meth = getattr(self, "_fstring_" + type(t.format_spec).__name__) - meth(t.format_spec, write) - write("}") - - def _Name(self, t): - self.write(t.id) - - def _write_constant(self, value): - if isinstance(value, (float, complex)): - self.write(repr(value).replace("inf", INFSTR)) - else: - self.write(repr(value)) - - def _Constant(self, t): - value = t.value - if isinstance(value, tuple): - self.write("(") - if len(value) == 1: - self._write_constant(value[0]) - self.write(",") - else: - interleave(lambda: self.write(", "), self._write_constant, value) - self.write(")") - else: - self._write_constant(t.value) - - def _NameConstant(self, t): - self.write(repr(t.value)) - - def _Num(self, t): - # Substitute overflowing decimal literal for AST infinities. - self.write(repr(t.n).replace("inf", INFSTR)) - - def _List(self, t): - self.write("[") - interleave(lambda: self.write(", "), self.dispatch, t.elts) - self.write("]") - - def _ListComp(self, t): - self.write("[") - self.dispatch(t.elt) - for gen in t.generators: - self.dispatch(gen) - self.write("]") - - def _GeneratorExp(self, t): - self.write("(") - self.dispatch(t.elt) - for gen in t.generators: - self.dispatch(gen) - self.write(")") - - def _SetComp(self, t): - self.write("{") - self.dispatch(t.elt) - for gen in t.generators: - self.dispatch(gen) - self.write("}") - - def _DictComp(self, t): - self.write("{") - self.dispatch(t.key) - self.write(": ") - self.dispatch(t.value) - for gen in t.generators: - self.dispatch(gen) - self.write("}") - - def _comprehension(self, t): - if hasattr(t, "is_async") and t.is_async: - self.write(" async for ") - else: - self.write(" for ") - self.dispatch(t.target) - self.write(" in ") - self.dispatch(t.iter) - for if_clause in t.ifs: - self.write(" if ") - self.dispatch(if_clause) - - def _IfExp(self, t): - self.write("(") - self.dispatch(t.body) - self.write(" if ") - self.dispatch(t.test) - self.write(" else ") - self.dispatch(t.orelse) - self.write(")") - - def _Set(self, t): - assert(t.elts) # should be at least one element - self.write("{") - interleave(lambda: self.write(", "), self.dispatch, t.elts) - self.write("}") - - def _Dict(self, t): - self.write("{") - def write_key_value_pair(k, v): - self.dispatch(k) - self.write(": ") - self.dispatch(v) - - def write_item(item): - k, v = item - if k is None: - # for dictionary unpacking operator in dicts {**{'y': 2}} - # see PEP 448 for details - self.write("**") - self.dispatch(v) - else: - write_key_value_pair(k, v) - interleave(lambda: self.write(", "), write_item, zip(t.keys, t.values)) - self.write("}") - - def _Tuple(self, t): - self.write("(") - if len(t.elts) == 1: - elt = t.elts[0] - self.dispatch(elt) - self.write(",") - else: - interleave(lambda: self.write(", "), self.dispatch, t.elts) - self.write(")") - - unop = {"Invert":"~", "Not": "not", "UAdd":"+", "USub":"-"} - def _UnaryOp(self, t): - self.write("(") - self.write(self.unop[t.op.__class__.__name__]) - self.write(" ") - self.dispatch(t.operand) - self.write(")") - - binop = { "Add":"+", "Sub":"-", "Mult":"*", "MatMult":"@", "Div":"/", "Mod":"%", - "LShift":"<<", "RShift":">>", "BitOr":"|", "BitXor":"^", "BitAnd":"&", - "FloorDiv":"//", "Pow": "**"} - def _BinOp(self, t): - self.write("(") - self.dispatch(t.left) - self.write(" " + self.binop[t.op.__class__.__name__] + " ") - self.dispatch(t.right) - self.write(")") - - cmpops = {"Eq":"==", "NotEq":"!=", "Lt":"<", "LtE":"<=", "Gt":">", "GtE":">=", - "Is":"is", "IsNot":"is not", "In":"in", "NotIn":"not in"} - def _Compare(self, t): - self.write("(") - self.dispatch(t.left) - for o, e in zip(t.ops, t.comparators): - self.write(" " + self.cmpops[o.__class__.__name__] + " ") - self.dispatch(e) - self.write(")") - - boolops = {ast.And: 'and', ast.Or: 'or'} - def _BoolOp(self, t): - self.write("(") - s = " %s " % self.boolops[t.op.__class__] - interleave(lambda: self.write(s), self.dispatch, t.values) - self.write(")") - - def _Attribute(self,t): - self.dispatch(t.value) - # Special case: 3.__abs__() is a syntax error, so if t.value - # is an integer literal then we need to either parenthesize - # it or add an extra space to get 3 .__abs__(). - if isinstance(t.value, ast.Num) and isinstance(t.value.n, int): - self.write(" ") - self.write(".") - self.write(t.attr) - - def _Call(self, t): - self.dispatch(t.func) - self.write("(") - comma = False - for e in t.args: - if comma: self.write(", ") - else: comma = True - self.dispatch(e) - for e in t.keywords: - if comma: self.write(", ") - else: comma = True - self.dispatch(e) - self.write(")") - - def _Subscript(self, t): - self.dispatch(t.value) - self.write("[") - self.dispatch(t.slice) - self.write("]") - - def _Starred(self, t): - self.write("*") - self.dispatch(t.value) - - # slice - def _Ellipsis(self, t): - self.write("...") - - def _Index(self, t): - self.dispatch(t.value) - - def _Slice(self, t): - if t.lower: - self.dispatch(t.lower) - self.write(":") - if t.upper: - self.dispatch(t.upper) - if t.step: - self.write(":") - self.dispatch(t.step) - - def _ExtSlice(self, t): - interleave(lambda: self.write(', '), self.dispatch, t.dims) - - # argument - def _arg(self, t): - self.write(t.arg) - if t.annotation: - self.write(": ") - self.dispatch(t.annotation) - - # others - def _arguments(self, t): - first = True - # normal arguments - defaults = [None] * (len(t.args) - len(t.defaults)) + t.defaults - for a, d in zip(t.args, defaults): - if first:first = False - else: self.write(", ") - self.dispatch(a) - if d: - self.write("=") - self.dispatch(d) - - # varargs, or bare '*' if no varargs but keyword-only arguments present - if t.vararg or t.kwonlyargs: - if first:first = False - else: self.write(", ") - self.write("*") - if t.vararg: - self.write(t.vararg.arg) - if t.vararg.annotation: - self.write(": ") - self.dispatch(t.vararg.annotation) - - # keyword-only arguments - if t.kwonlyargs: - for a, d in zip(t.kwonlyargs, t.kw_defaults): - if first:first = False - else: self.write(", ") - self.dispatch(a), - if d: - self.write("=") - self.dispatch(d) - - # kwargs - if t.kwarg: - if first:first = False - else: self.write(", ") - self.write("**"+t.kwarg.arg) - if t.kwarg.annotation: - self.write(": ") - self.dispatch(t.kwarg.annotation) - - def _keyword(self, t): - if t.arg is None: - self.write("**") - else: - self.write(t.arg) - self.write("=") - self.dispatch(t.value) - - def _Lambda(self, t): - self.write("(") - self.write("lambda ") - self.dispatch(t.args) - self.write(": ") - self.dispatch(t.body) - self.write(")") - - def _alias(self, t): - self.write(t.name) - if t.asname: - self.write(" as "+t.asname) - - def _withitem(self, t): - self.dispatch(t.context_expr) - if t.optional_vars: - self.write(" as ") - self.dispatch(t.optional_vars) - -def roundtrip(filename, outpath): - with open(filename, "rb") as pyfile: - encoding = tokenize.detect_encoding(pyfile.readline)[0] - with open(filename, "r", encoding=encoding) as pyfile: - source = pyfile.read() - tree = compile(source, filename, "exec", ast.PyCF_ONLY_AST) - with open(outpath, "w", encoding=encoding) as output: - Unparser(tree, output) - -def strip_comments_and_docstrings(path): - tmp = path + ".tmp" - if path.endswith(".py"): - roundtrip(path, tmp) - else: - shutil.copy(path, tmp) - return tmp From 1acbb84444ba40ca106f6bf529a877f39d61ed8a Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 11:58:43 +0100 Subject: [PATCH 677/731] Shared/Java: Make the 'isNull' interface slightly prettier. --- java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll | 7 ++++--- shared/typeflow/codeql/typeflow/TypeFlow.qll | 6 ++++++ shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll | 3 +++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index afec2a22ae8e..ac781e223f26 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -133,11 +133,12 @@ private module Input implements TypeFlowInput<J::Location> { not decl.hasImplicitInit() and not exists(decl.getInit()) ) - or - forex(TypeFlowNode mid | joinStep(mid, n) | Make<J::Location, Input>::isNull(mid)) and + } + + predicate isExcludedFromNullAnalysis(TypeFlowNode n) { // Fields that are never assigned a non-null value are probably set by // reflection and are thus not always null. - not exists(n.asField()) + exists(n.asField()) } predicate exactTypeBase(TypeFlowNode n, RefType t) { diff --git a/shared/typeflow/codeql/typeflow/TypeFlow.qll b/shared/typeflow/codeql/typeflow/TypeFlow.qll index d2862b776373..7518805ac56f 100644 --- a/shared/typeflow/codeql/typeflow/TypeFlow.qll +++ b/shared/typeflow/codeql/typeflow/TypeFlow.qll @@ -42,6 +42,12 @@ signature module TypeFlowInput<LocationSig Location> { /** Holds if `n` represents a `null` value. */ predicate isNullValue(TypeFlowNode n); + /** + * Holds if `n` should be excluded from the set of null values even if + * the null analysis determines that `n` is always null. + */ + default predicate isExcludedFromNullAnalysis(TypeFlowNode n) { none() } + /** A type. */ class Type { /** Gets a textual representation of this type. */ diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index d640c4b67e19..c06b372afbad 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -10,6 +10,9 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { isNullValue(n) or exists(TypeFlowNode mid | isNull(mid) and step(mid, n)) + or + forex(TypeFlowNode mid | I::joinStep(mid, n) | isNull(mid)) and + not isExcludedFromNullAnalysis(n) } /** From 3f63d3a8650192f7ba64f42e82f3447a0155ff08 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 12:49:40 +0100 Subject: [PATCH 678/731] Update java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com> --- java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index ac781e223f26..4096b83e5f18 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -157,7 +157,7 @@ private module Input implements TypeFlowInput<J::Location> { */ pragma[nomagic] private predicate upcastCand(TypeFlowNode n, RefType t1, RefType t1e, RefType t2, RefType t2e) { - exists(TypeFlowNode next | step(n, next) or Make<J::Location, Input>::joinStep(n, next) | + exists(TypeFlowNode next | step(n, next) or joinStep(n, next) | n.getType() = t1 and next.getType() = t2 and t1.getErasure() = t1e and From 26cf8df8d6b473c72d758a3c61ae382c615fe0fc Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 12:50:26 +0100 Subject: [PATCH 679/731] Update java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com> --- java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index 4096b83e5f18..5463faa4c874 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -23,7 +23,7 @@ private module Input implements TypeFlowInput<J::Location> { /** Gets `t` if it is a `RefType` or the boxed type if `t` is a primitive type. */ private RefType boxIfNeeded(J::Type t) { - t.(J::PrimitiveType).getBoxedType() = result or + t.(PrimitiveType).getBoxedType() = result or result = t } From 1775bdee5f20f8c957addfad3d31025ac774546c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 12:52:04 +0100 Subject: [PATCH 680/731] Java: Remove redundant qualifiers. --- java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll index 5463faa4c874..9dfe44ad5b54 100644 --- a/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll +++ b/java/ql/lib/semmle/code/java/dataflow/TypeFlow.qll @@ -14,7 +14,7 @@ private import semmle.code.java.dataflow.internal.BaseSSA private import semmle.code.java.controlflow.Guards private import codeql.typeflow.TypeFlow -private module Input implements TypeFlowInput<J::Location> { +private module Input implements TypeFlowInput<Location> { private newtype TTypeFlowNode = TField(Field f) { not f.getType() instanceof PrimitiveType } or TSsa(BaseSsaVariable ssa) { not ssa.getSourceVariable().getType() instanceof PrimitiveType } or @@ -61,7 +61,7 @@ private module Input implements TypeFlowInput<J::Location> { } } - class Type = J::RefType; + class Type = RefType; /** * Holds if `arg` is an argument for the parameter `p` in a private callable. @@ -142,7 +142,7 @@ private module Input implements TypeFlowInput<J::Location> { } predicate exactTypeBase(TypeFlowNode n, RefType t) { - exists(J::ClassInstanceExpr e | + exists(ClassInstanceExpr e | n.asExpr() = e and e.getType() = t and not e instanceof FunctionalExpr and @@ -349,7 +349,7 @@ private module Input implements TypeFlowInput<J::Location> { cached private module TypeFlowBounds { - private module TypeFlow = Make<J::Location, Input>; + private module TypeFlow = Make<Location, Input>; /** * Holds if the runtime type of `f` is bounded by `t` and if this bound is From 3f6967829e3b152acc5cae6ac33f32e78b874dbf Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 12:53:23 +0100 Subject: [PATCH 681/731] Update shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com> --- shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index c06b372afbad..9f043f9f7b35 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -19,7 +19,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { * Holds if data can flow from `n1` to `n2` in one step, `n1` is not necessarily * functionally determined by `n2`, and `n1` might take a non-null value. */ - predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { I::joinStep(n1, n2) and not isNull(n1) } + private predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { I::joinStep(n1, n2) and not isNull(n1) } private predicate anyStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep(n1, n2) or step(n1, n2) } From a2c29fe094190664f6899468c16d846a300d9654 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 12:57:11 +0100 Subject: [PATCH 682/731] Shared: nomagicify 'getASourceSupertype'. --- shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index 9f043f9f7b35..3871d9c4159d 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -19,7 +19,9 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { * Holds if data can flow from `n1` to `n2` in one step, `n1` is not necessarily * functionally determined by `n2`, and `n1` might take a non-null value. */ - private predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { I::joinStep(n1, n2) and not isNull(n1) } + private predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { + I::joinStep(n1, n2) and not isNull(n1) + } private predicate anyStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep(n1, n2) or step(n1, n2) } @@ -184,6 +186,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { /** * Gets the source declaration of a direct supertype of this type, excluding itself. */ + pragma[nomagic] private Type getASourceSupertype(Type t) { result = getSourceDeclaration(t.getASupertype()) and result != t From 96e205a4a6688648fb2858feae1fe5beb5878141 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 12:59:07 +0100 Subject: [PATCH 683/731] Docs: Mark Swift 5.10 as supported. --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 15e1cfa64448..42b2b4f7b698 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -24,7 +24,7 @@ JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [8]_" Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" - Swift [11]_,"Swift 5.4-5.9.1","Swift compiler","``.swift``" + Swift [11]_,"Swift 5.4-5.10","Swift compiler","``.swift``" TypeScript [12]_,"2.6-5.4",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group From bffa262a2c0251e5553cf3d87e0dfcf19c0bdad6 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 13:04:26 +0100 Subject: [PATCH 684/731] Shared: Make 'getAStrictAncestor' private. --- shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index 3871d9c4159d..47fe522dba97 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -255,7 +255,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { * This does not include itself, unless this type is part of a cycle * in the type hierarchy. */ - Type getAStrictAncestor(Type sub) { result = getAnAncestor(sub.getASupertype()) } + private Type getAStrictAncestor(Type sub) { result = getAnAncestor(sub.getASupertype()) } /** * Holds if we have a bound for `n` that is better than `t`. From 9deeb67af4f41a0d74e748f34602644f2d4e4229 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 13:10:08 +0100 Subject: [PATCH 685/731] Update shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll Co-authored-by: Anders Schack-Mulligen <aschackmull@users.noreply.github.com> --- shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index 47fe522dba97..c53d6b714f50 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -301,6 +301,11 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { not irrelevantBound(n, t) } + /** + * Holds if the runtime type of `n` is bounded by `t` and if this bound is + * likely to be better than the static type of `n`. The flag `exact` indicates + * whether `t` is an exact bound or merely an upper bound. + */ predicate bestTypeFlow(TypeFlowNode n, Type t, boolean exact) { exactType(n, t) and exact = true or From bae633ad24ae9527d14136e75cd816f7cc9589e7 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 13:18:32 +0100 Subject: [PATCH 686/731] Shared: Make 'erasedHaveIntersection' more identical to the Java version. --- .../codeql/typeflow/internal/TypeFlowImpl.qll | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index c53d6b714f50..f0e299f25b49 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -301,7 +301,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { not irrelevantBound(n, t) } - /** + /** * Holds if the runtime type of `n` is bounded by `t` and if this bound is * likely to be better than the static type of `n`. The flag `exact` indicates * whether `t` is an exact bound or merely an upper bound. @@ -389,14 +389,24 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { ) } + /** Holds if this type is the same as its source declaration. */ + private predicate isSourceDeclaration(Type t) { getSourceDeclaration(t) = t } + + final private class FinalType = Type; + + /** A type that is the same as its source declaration. */ + private class SrcType extends FinalType { + SrcType() { isSourceDeclaration(this) } + } + /** * Holds if there is a common (reflexive, transitive) subtype of the erased * types `t1` and `t2`. */ + pragma[nomagic] private predicate erasedHaveIntersection(Type t1, Type t2) { - exists(Type commonSub | commonSub = getSourceDeclaration(commonSub) | - getASourceSupertype*(commonSub) = t1 and - getASourceSupertype*(commonSub) = t2 + exists(SrcType commonSub | + getASourceSupertype*(commonSub) = t1 and getASourceSupertype*(commonSub) = t2 ) and t1 = getErasure(_) and t2 = getErasure(_) From 27688bf1544157373d39b78bdad28d0e69607817 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 13:25:29 +0100 Subject: [PATCH 687/731] Shared: Rename 'joinStep' to 'joinStepNotNull' to prevent name clashes. Rename 'sccJoinStep' to 'sccJoinStepNotNull' to match the new name. --- .../codeql/typeflow/internal/TypeFlowImpl.qll | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll index f0e299f25b49..ac7de53f85aa 100644 --- a/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll +++ b/shared/typeflow/codeql/typeflow/internal/TypeFlowImpl.qll @@ -11,7 +11,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { or exists(TypeFlowNode mid | isNull(mid) and step(mid, n)) or - forex(TypeFlowNode mid | I::joinStep(mid, n) | isNull(mid)) and + forex(TypeFlowNode mid | joinStep(mid, n) | isNull(mid)) and not isExcludedFromNullAnalysis(n) } @@ -19,11 +19,13 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { * Holds if data can flow from `n1` to `n2` in one step, `n1` is not necessarily * functionally determined by `n2`, and `n1` might take a non-null value. */ - private predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { - I::joinStep(n1, n2) and not isNull(n1) + private predicate joinStepNotNull(TypeFlowNode n1, TypeFlowNode n2) { + joinStep(n1, n2) and not isNull(n1) } - private predicate anyStep(TypeFlowNode n1, TypeFlowNode n2) { joinStep(n1, n2) or step(n1, n2) } + private predicate anyStep(TypeFlowNode n1, TypeFlowNode n2) { + joinStepNotNull(n1, n2) or step(n1, n2) + } private predicate sccEdge(TypeFlowNode n1, TypeFlowNode n2) { anyStep(n1, n2) and anyStep+(n2, n1) @@ -36,9 +38,9 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { /** Holds if `n` is part of an SCC of size 2 or more represented by `scc`. */ private predicate sccRepr(TypeFlowNode n, TypeFlowScc scc) { scc = Scc::getEquivalenceClass(n) } - private predicate sccJoinStep(TypeFlowNode n, TypeFlowScc scc) { + private predicate sccJoinStepNotNull(TypeFlowNode n, TypeFlowScc scc) { exists(TypeFlowNode mid | - joinStep(n, mid) and + joinStepNotNull(n, mid) and sccRepr(mid, scc) and not sccRepr(n, scc) ) @@ -141,13 +143,13 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { private module JoinStep implements Edge { class Node = TypeFlowNode; - predicate edge = joinStep/2; + predicate edge = joinStepNotNull/2; } private module SccJoinStep implements Edge { class Node = TypeFlowScc; - predicate edge = sccJoinStep/2; + predicate edge = sccJoinStepNotNull/2; } private module RankedJoinStep = RankEdge<JoinStep>; @@ -172,13 +174,13 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { exists(TypeFlowNode mid | exactType(mid, t) and step(mid, n)) or // The following is an optimized version of - // `forex(TypeFlowNode mid | joinStep(mid, n) | exactType(mid, t))` + // `forex(TypeFlowNode mid | joinStepNotNull(mid, n) | exactType(mid, t))` ForAll<TypeFlowNode, RankedJoinStep, ExactTypePropagation>::flowJoin(n, t) or exists(TypeFlowScc scc | sccRepr(n, scc) and // Optimized version of - // `forex(TypeFlowNode mid | sccJoinStep(mid, scc) | exactType(mid, t))` + // `forex(TypeFlowNode mid | sccJoinStepNotNull(mid, scc) | exactType(mid, t))` ForAll<TypeFlowScc, RankedSccJoinStep, ExactTypePropagation>::flowJoin(scc, t) ) } @@ -327,7 +329,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { */ private predicate unionTypeFlowBaseCand(TypeFlowNode n, Type t, boolean exact) { exists(TypeFlowNode next | - joinStep(n, next) and + joinStepNotNull(n, next) and bestTypeFlowOrTypeFlowBase(n, t, exact) and not bestTypeFlowOrTypeFlowBase(next, t, exact) and not exactType(next, _) @@ -354,7 +356,7 @@ module TypeFlow<LocationSig Location, TypeFlowInput<Location> I> { not exactType(n, _) and ( // Optimized version of - // `forex(TypeFlowNode mid | joinStep(mid, n) | unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid))` + // `forex(TypeFlowNode mid | joinStepNotNull(mid, n) | unionTypeFlowBaseCand(mid, _, _) or hasUnionTypeFlow(mid))` ForAll<TypeFlowNode, RankedJoinStep, HasUnionTypePropagation>::flowJoin(n, _) or exists(TypeFlowScc scc | From cd84fa4beeb8503d54ded224e0983b09acd93bf4 Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Fri, 5 Apr 2024 15:01:26 +0200 Subject: [PATCH 688/731] JS: Make getInstance() propagate to subclasses --- .../ql/lib/semmle/javascript/ApiGraphs.qll | 20 +++++++++++++++++++ .../frameworks/data/test.expected | 4 ++++ .../library-tests/frameworks/data/test.js | 14 +++++++++++++ .../library-tests/frameworks/data/test.ql | 1 + 4 files changed, 39 insertions(+) diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index 0bd79dd20291..0345df3f00ec 100644 --- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll @@ -891,6 +891,17 @@ module API { (propDesc = Promises::errorProp() or propDesc = "") } + pragma[nomagic] + private DataFlow::ClassNode getALocalSubclass(DataFlow::SourceNode node) { + result.getASuperClassNode().getALocalSource() = node + } + + bindingset[node] + pragma[inline_late] + private DataFlow::ClassNode getALocalSubclassFwd(DataFlow::SourceNode node) { + result = getALocalSubclass(node) + } + /** * Holds if `ref` is a use of a node that should have an incoming edge from `base` labeled * `lbl` in the API graph. @@ -927,6 +938,15 @@ module API { or lbl = Label::forwardingFunction() and DataFlow::functionForwardingStep(pred.getALocalUse(), ref) + or + exists(DataFlow::ClassNode cls | + lbl = Label::instance() and + cls = getALocalSubclassFwd(pred).getADirectSubClass*() + | + ref = cls.getAReceiverNode() + or + ref = cls.getAClassReference().getAnInstantiation() + ) ) or exists(DataFlow::Node def, DataFlow::FunctionNode fn | diff --git a/javascript/ql/test/library-tests/frameworks/data/test.expected b/javascript/ql/test/library-tests/frameworks/data/test.expected index 28d7229789df..843b1f32d5bc 100644 --- a/javascript/ql/test/library-tests/frameworks/data/test.expected +++ b/javascript/ql/test/library-tests/frameworks/data/test.expected @@ -74,6 +74,10 @@ taintFlow | test.js:249:28:249:35 | source() | test.js:249:28:249:35 | source() | | test.js:252:15:252:22 | source() | test.js:252:15:252:22 | source() | | test.js:254:32:254:39 | source() | test.js:254:32:254:39 | source() | +| test.js:262:10:262:31 | this.ba ... ource() | test.js:262:10:262:31 | this.ba ... ource() | +| test.js:265:6:265:39 | new MyS ... ource() | test.js:265:6:265:39 | new MyS ... ource() | +| test.js:269:10:269:31 | this.ba ... ource() | test.js:269:10:269:31 | this.ba ... ource() | +| test.js:272:6:272:40 | new MyS ... ource() | test.js:272:6:272:40 | new MyS ... ource() | isSink | test.js:54:18:54:25 | source() | test-sink | | test.js:55:22:55:29 | source() | test-sink | diff --git a/javascript/ql/test/library-tests/frameworks/data/test.js b/javascript/ql/test/library-tests/frameworks/data/test.js index ac702b82a8cb..bbcb10418a12 100644 --- a/javascript/ql/test/library-tests/frameworks/data/test.js +++ b/javascript/ql/test/library-tests/frameworks/data/test.js @@ -256,3 +256,17 @@ function fuzzy() { fuzzyCall(source()); // OK - does not come from 'testlib' require('blah').fuzzyCall(source()); // OK - does not come from 'testlib' } + +class MySubclass extends testlib.BaseClass { + foo() { + sink(this.baseclassSource()); // NOT OK + } +} +sink(new MySubclass().baseclassSource()); // NOT OK + +class MySubclass2 extends MySubclass { + foo2() { + sink(this.baseclassSource()); // NOT OK + } +} +sink(new MySubclass2().baseclassSource()); // NOT OK diff --git a/javascript/ql/test/library-tests/frameworks/data/test.ql b/javascript/ql/test/library-tests/frameworks/data/test.ql index 039a0aa39200..6af176f4bf35 100644 --- a/javascript/ql/test/library-tests/frameworks/data/test.ql +++ b/javascript/ql/test/library-tests/frameworks/data/test.ql @@ -80,6 +80,7 @@ class Sources extends ModelInput::SourceModelCsv { "testlib;Member[ParamDecoratorSource].DecoratedParameter;test-source", "testlib;Member[MethodDecorator].DecoratedMember.Parameter[0];test-source", "testlib;Member[MethodDecoratorWithArgs].ReturnValue.DecoratedMember.Parameter[0];test-source", + "testlib;Member[BaseClass].Instance.Member[baseclassSource].ReturnValue;test-source", ] } } From d114d09d736ee0f2efca5a0ba6d70fa519c85ff2 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 14:52:19 +0100 Subject: [PATCH 689/731] Docs: Remove Swift version in footnote. --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 42b2b4f7b698..9d5c19679b79 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -39,5 +39,5 @@ .. [8] JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files. .. [9] The extractor requires Python 3 to run. To analyze Python 2.7 you should install both versions of Python. .. [10] Requires glibc 2.17. - .. [11] Swift support is currently in beta. Support for the analysis of Swift 5.4-5.8.1 requires macOS or Linux. + .. [11] Swift support is currently in beta. Support for the analysis of Swift requires macOS or Linux. .. [12] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default. From 777755a241e78a1d3c44e3b1a523f31810737033 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 19:02:23 +0100 Subject: [PATCH 690/731] C++: Add alias models for 'fopen'. --- cpp/ql/lib/semmle/code/cpp/models/Models.qll | 1 + .../code/cpp/models/implementations/Fopen.qll | 51 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll diff --git a/cpp/ql/lib/semmle/code/cpp/models/Models.qll b/cpp/ql/lib/semmle/code/cpp/models/Models.qll index 32377dbd71f8..7794424b3f63 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/Models.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/Models.qll @@ -41,3 +41,4 @@ private import implementations.SqLite3 private import implementations.PostgreSql private import implementations.System private import implementations.StructuredExceptionHandling +private import implementations.Fopen diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll new file mode 100644 index 000000000000..52f56add6099 --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll @@ -0,0 +1,51 @@ +/** + * Provides implementation classes modeling `fopen` and various similar + * functions. See `semmle.code.cpp.models.Models` for usage information. + */ + +import semmle.code.cpp.Function +import semmle.code.cpp.models.interfaces.Alias +import semmle.code.cpp.models.interfaces.SideEffect + +/** The function `fopen` and friends. */ +private class Fopen extends Function, AliasFunction, SideEffectFunction { + Fopen() { + this.hasGlobalOrStdName(["fopen", "fopen_s", "freopen"]) + or + this.hasGlobalName(["_open", "_wfopen", "_fsopen", "_wfsopen", "_wopen"]) + } + + override predicate hasOnlySpecificWriteSideEffects() { any() } + + override predicate hasOnlySpecificReadSideEffects() { any() } + + override predicate parameterEscapesOnlyViaReturn(int i) { none() } + + override predicate parameterNeverEscapes(int index) { + // None of the parameters escape + this.getParameter(index).getUnspecifiedType() instanceof PointerType + } + + override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) { + ( + this.hasGlobalOrStdName(["fopen", "fopen_s"]) + or + this.hasGlobalName(["_wfopen", "_fsopen", "_wfsopen"]) + ) and + i = [0, 1] and + buffer = true + or + this.hasGlobalOrStdName("freopen") and + ( + i = [0, 1] and + buffer = true + or + i = 2 and + buffer = false + ) + or + this.hasGlobalName(["_open", "_wopen"]) and + i = 0 and + buffer = true + } +} From 557555eb7177766d99f15914f51bc0c5c94879f1 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Fri, 5 Apr 2024 19:03:03 +0100 Subject: [PATCH 691/731] C++: Make Code Scanning happy. --- cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll index 52f56add6099..6bc700becf1e 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Fopen.qll @@ -3,7 +3,6 @@ * functions. See `semmle.code.cpp.models.Models` for usage information. */ -import semmle.code.cpp.Function import semmle.code.cpp.models.interfaces.Alias import semmle.code.cpp.models.interfaces.SideEffect From 795b767b6effffbc32ec07f9024638780bbb3ad4 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Thu, 4 Apr 2024 22:48:12 +0200 Subject: [PATCH 692/731] add link to the source variable in the alert-message for java/implicit-cast-in-compound-assignment --- java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql | 9 +++++---- .../CWE-190/semmle/tests/InformationLoss.expected | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql index d2ff4c240604..4d770b462b80 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql @@ -27,10 +27,11 @@ class DangerousAssignOpExpr extends AssignOp { predicate problematicCasting(Type t, Expr e) { e.getType().(NumType).widerThan(t) } -from DangerousAssignOpExpr a, Expr e +from DangerousAssignOpExpr a, Expr e, Variable v where e = a.getSource() and - problematicCasting(a.getDest().getType(), e) + problematicCasting(a.getDest().getType(), e) and + v = a.getDest().(VarAccess).getVariable() select a, - "Implicit cast of source type " + e.getType().getName() + " to narrower destination type " + - a.getDest().getType().getName() + "." + "Implicit cast of source $@ to narrower destination type " + a.getDest().getType().getName() + ".", + v, "type " + e.getType().getName() diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected index 1c4ed46e1368..03f39286a19a 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected @@ -1,2 +1,2 @@ -| Test.java:68:5:68:25 | ...+=... | Implicit cast of source type long to narrower destination type int. | -| Test.java:87:4:87:9 | ...+=... | Implicit cast of source type long to narrower destination type int. | +| Test.java:68:5:68:25 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:64:4:64:13 | int i | type long | +| Test.java:87:4:87:9 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:81:4:81:13 | int i | type long | From 8b220cc1b39775c75c2edaef0f2cbacbdc720ff6 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Fri, 5 Apr 2024 09:21:18 +0200 Subject: [PATCH 693/731] also get the variable for array accesses --- java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql | 8 +++++++- .../CWE-190/semmle/tests/InformationLoss.expected | 1 + .../security/CWE-190/semmle/tests/Test.java | 10 ++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql index 4d770b462b80..8a491c33cc3e 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql @@ -27,11 +27,17 @@ class DangerousAssignOpExpr extends AssignOp { predicate problematicCasting(Type t, Expr e) { e.getType().(NumType).widerThan(t) } +Variable getVariable(DangerousAssignOpExpr a) { + result = a.getDest().(VarAccess).getVariable() + or + result = a.getDest().(ArrayAccess).getArray().(VarAccess).getVariable() +} + from DangerousAssignOpExpr a, Expr e, Variable v where e = a.getSource() and problematicCasting(a.getDest().getType(), e) and - v = a.getDest().(VarAccess).getVariable() + v = getVariable(a) select a, "Implicit cast of source $@ to narrower destination type " + a.getDest().getType().getName() + ".", v, "type " + e.getType().getName() diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected index 03f39286a19a..91bac65629a9 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected @@ -1,2 +1,3 @@ | Test.java:68:5:68:25 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:64:4:64:13 | int i | type long | | Test.java:87:4:87:9 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:81:4:81:13 | int i | type long | +| Test.java:289:5:289:30 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:285:4:285:27 | int[] arr | type long | diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java b/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java index 2935368dccb8..6dcfeefd2d1d 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java @@ -279,6 +279,16 @@ public static void main(String[] args) { // subsequently cast to narrower type int int widenedThenNarrowed = (int) (data2 + 10L); } + + // InformationLoss + { + int[] arr = new int[10]; + while (arr[2] < 1000000) { + // BAD: getLargeNumber is implicitly narrowed to an integer + // which will result in overflows if it is large + arr[2] += getLargeNumber(); + } + } } public static long getLargeNumber() { From ca4f667053399a04eef7f7992ebdb616eda6cf57 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Fri, 5 Apr 2024 16:18:20 +0200 Subject: [PATCH 694/731] add fallback if I can't easily determine the variable --- .../Likely Bugs/Arithmetic/InformationLoss.ql | 20 ++++++++++++------- .../semmle/tests/InformationLoss.expected | 7 ++++--- .../security/CWE-190/semmle/tests/Test.java | 7 +++++++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql index 8a491c33cc3e..71699fd3a5a5 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql @@ -27,17 +27,23 @@ class DangerousAssignOpExpr extends AssignOp { predicate problematicCasting(Type t, Expr e) { e.getType().(NumType).widerThan(t) } -Variable getVariable(DangerousAssignOpExpr a) { - result = a.getDest().(VarAccess).getVariable() +Variable getVariable(Expr dest) { + result = dest.(VarAccess).getVariable() or - result = a.getDest().(ArrayAccess).getArray().(VarAccess).getVariable() + result = dest.(ArrayAccess).getArray().(VarAccess).getVariable() } -from DangerousAssignOpExpr a, Expr e, Variable v +from DangerousAssignOpExpr a, Expr e, Top v where e = a.getSource() and problematicCasting(a.getDest().getType(), e) and - v = getVariable(a) + ( + v = getVariable(a.getDest()) + or + // fallback, in case we can't easily determine the variable + not exists(getVariable(a.getDest())) and + v = a.getDest() + ) select a, - "Implicit cast of source $@ to narrower destination type " + a.getDest().getType().getName() + ".", - v, "type " + e.getType().getName() + "Implicit cast of $@ to narrower destination type " + a.getDest().getType().getName() + ".", + v, "source type " + e.getType().getName() diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected index 91bac65629a9..dbda11bff08a 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected @@ -1,3 +1,4 @@ -| Test.java:68:5:68:25 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:64:4:64:13 | int i | type long | -| Test.java:87:4:87:9 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:81:4:81:13 | int i | type long | -| Test.java:289:5:289:30 | ...+=... | Implicit cast of source $@ to narrower destination type int. | Test.java:285:4:285:27 | int[] arr | type long | +| Test.java:68:5:68:25 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:64:4:64:13 | int i | source type long | +| Test.java:87:4:87:9 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:81:4:81:13 | int i | source type long | +| Test.java:289:5:289:30 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:285:4:285:27 | int[] arr | source type long | +| Test.java:293:7:293:44 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:293:7:293:24 | ...[...] | source type long | diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java b/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java index 6dcfeefd2d1d..f24d16a236c0 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/Test.java @@ -288,6 +288,9 @@ public static void main(String[] args) { // which will result in overflows if it is large arr[2] += getLargeNumber(); } + + // BAD. + getAnIntArray()[0] += getLargeNumber(); } } @@ -295,6 +298,10 @@ public static long getLargeNumber() { return Long.MAX_VALUE / 2; } + public static int[] getAnIntArray() { + return new int[10]; + } + public static boolean properlyBounded(int i) { return i < Integer.MAX_VALUE; } From 018b066b9550571d0e4ebdd6d936c6d2a1b4be73 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Mon, 8 Apr 2024 07:15:33 +0200 Subject: [PATCH 695/731] autoformat --- java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql index 71699fd3a5a5..e8893f3bcc74 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql @@ -45,5 +45,5 @@ where v = a.getDest() ) select a, - "Implicit cast of $@ to narrower destination type " + a.getDest().getType().getName() + ".", - v, "source type " + e.getType().getName() + "Implicit cast of $@ to narrower destination type " + a.getDest().getType().getName() + ".", v, + "source type " + e.getType().getName() From d829dd435f349cb52d7bfc659b764d00f1b9d8d2 Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Mon, 8 Apr 2024 10:00:06 +0200 Subject: [PATCH 696/731] JS: Update docs --- .../customizing-library-models-for-javascript.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst index 5e3f5d9f74f9..b062c66bcca8 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst @@ -478,7 +478,7 @@ The following components are supported: - **Element** selects an element of an array, iterator, or set object. - **MapValue** selects a value of a map object. - **Awaited** selects the value of a promise. -- **Instance** selects instances of a class. +- **Instance** selects instances of a class, including instances of its subclasses. - **Fuzzy** selects all values that are derived from the current value through a combination of the other operations described in this list. For example, this can be used to find all values that appear to originate from a particular package. This can be useful for finding method calls from a known package, but where the receiver type is not known or is difficult to model. From 6e931000c28317a65442f4e90e175829880e9843 Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Mon, 8 Apr 2024 10:02:22 +0200 Subject: [PATCH 697/731] JS: Rewrite docs for API::Node#getInstance() --- .../ql/lib/semmle/javascript/ApiGraphs.qll | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index 0345df3f00ec..27c1632358e6 100644 --- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll @@ -241,15 +241,23 @@ module API { } /** - * Gets a node representing an instance of this API component, that is, an object whose - * constructor is the function represented by this node. + * Gets a node representing an instance of the class represented by this node. + * This includes instances of subclasses. * - * For example, if this node represents a use of some class `A`, then there might be a node - * representing instances of `A`, typically corresponding to expressions `new A()` at the - * source level. + * For example: + * ```js + * import { C } from "foo"; + * + * new C(); // API::moduleImport("foo").getMember("C").getInstance() * - * This predicate may have multiple results when there are multiple constructor calls invoking this API component. - * Consider using `getAnInstantiation()` if there is a need to distinguish between individual constructor calls. + * class D extends C { + * m() { + * this; // API::moduleImport("foo").getMember("C").getInstance() + * } + * } + * + * new D(); // API::moduleImport("foo").getMember("C").getInstance() + * ``` */ cached Node getInstance() { From ad9838d0fe6868dd93b6f7bd8d70c0462d6506cb Mon Sep 17 00:00:00 2001 From: Asger F <asgerf@github.com> Date: Mon, 8 Apr 2024 10:02:28 +0200 Subject: [PATCH 698/731] JS: Add change note --- .../ql/src/change-notes/2024-04-08-instance-to-subclasses.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 javascript/ql/src/change-notes/2024-04-08-instance-to-subclasses.md diff --git a/javascript/ql/src/change-notes/2024-04-08-instance-to-subclasses.md b/javascript/ql/src/change-notes/2024-04-08-instance-to-subclasses.md new file mode 100644 index 000000000000..cae4bea6ab30 --- /dev/null +++ b/javascript/ql/src/change-notes/2024-04-08-instance-to-subclasses.md @@ -0,0 +1,5 @@ +--- +category: minorAnalysis +--- +* `API::Node#getInstance()` now includes instances of subclasses, include transitive subclasses. + The same changes applies to uses of the `Instance` token in data extensions. From 9aa85f2d132ce8f0f78e5744d6f5430d7e8d9b27 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Thu, 4 Apr 2024 14:26:13 +0200 Subject: [PATCH 699/731] C#: Validate all nuget feeds to respond in reasonable time --- .../DependencyManager.Nuget.cs | 191 +++++++++++++++--- .../DependencyManager.cs | 9 +- .../DotNet.cs | 17 +- .../EnvironmentVariableNames.cs | 15 ++ .../IDotNet.cs | 1 + .../Semmle.Extraction.Tests/Runtime.cs | 2 + .../Semmle.Util/EnvironmentVariables.cs | 7 + csharp/extractor/Semmle.Util/FileUtils.cs | 5 +- 8 files changed, 208 insertions(+), 39 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs index 8e0be8ab1414..cdf4f5dcf4a7 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs @@ -2,7 +2,9 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net.Http; using System.Text.RegularExpressions; +using System.Threading; using System.Threading.Tasks; using Semmle.Util; @@ -14,6 +16,13 @@ private void RestoreNugetPackages(List<FileInfo> allNonBinaryFiles, IEnumerable< { try { + var checkNugetFeedResponsiveness = EnvironmentVariables.GetBoolean(EnvironmentVariableNames.CheckNugetFeedResponsiveness); + if (checkNugetFeedResponsiveness && !CheckFeeds(allNonBinaryFiles)) + { + DownloadMissingPackages(allNonBinaryFiles, dllPaths, withNugetConfig: false); + return; + } + using (var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger)) { var count = nuget.InstallPackages(); @@ -139,7 +148,7 @@ private void RestoreProjects(IEnumerable<string> projects, out IEnumerable<strin CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString())); } - private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPaths) + private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPaths, bool withNugetConfig = true) { var alreadyDownloadedPackages = GetRestoredPackageDirectoryNames(packageDirectory.DirInfo); var alreadyDownloadedLegacyPackages = GetRestoredLegacyPackageNames(); @@ -172,30 +181,9 @@ private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPa } logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored"); - - var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray(); - string? nugetConfig = null; - if (nugetConfigs.Length > 1) - { - logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}."); - nugetConfig = allFiles - .SelectRootFiles(sourceDir) - .SelectFileNamesByName("nuget.config") - .FirstOrDefault(); - if (nugetConfig == null) - { - logger.LogInfo("Could not find a top-level nuget.config file."); - } - } - else - { - nugetConfig = nugetConfigs.FirstOrDefault(); - } - - if (nugetConfig != null) - { - logger.LogInfo($"Using nuget.config file {nugetConfig}."); - } + var nugetConfig = withNugetConfig + ? GetNugetConfig(allFiles) + : null; CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString())); @@ -221,6 +209,37 @@ private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPa dllPaths.Add(missingPackageDirectory.DirInfo.FullName); } + private string[] GetAllNugetConfigs(List<FileInfo> allFiles) => allFiles.SelectFileNamesByName("nuget.config").ToArray(); + + private string? GetNugetConfig(List<FileInfo> allFiles) + { + var nugetConfigs = GetAllNugetConfigs(allFiles); + string? nugetConfig; + if (nugetConfigs.Length > 1) + { + logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}."); + nugetConfig = allFiles + .SelectRootFiles(sourceDir) + .SelectFileNamesByName("nuget.config") + .FirstOrDefault(); + if (nugetConfig == null) + { + logger.LogInfo("Could not find a top-level nuget.config file."); + } + } + else + { + nugetConfig = nugetConfigs.FirstOrDefault(); + } + + if (nugetConfig != null) + { + logger.LogInfo($"Using nuget.config file {nugetConfig}."); + } + + return nugetConfig; + } + private void LogAllUnusedPackages(DependencyContainer dependencies) { var allPackageDirectories = GetAllPackageDirectories(); @@ -279,9 +298,6 @@ private static IEnumerable<string> GetRestoredPackageDirectoryNames(DirectoryInf .Select(d => Path.GetFileName(d).ToLowerInvariant()); } - [GeneratedRegex(@"<TargetFramework>.*</TargetFramework>", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] - private static partial Regex TargetFramework(); - private bool TryRestorePackageManually(string package, string? nugetConfig, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj) { logger.LogInfo($"Restoring package {package}..."); @@ -358,7 +374,126 @@ private void TryChangeTargetFrameworkMoniker(DirectoryInfo tempDir) } } + private static async Task ExecuteGetRequest(string address, HttpClient httpClient, CancellationToken cancellationToken) + { + using var stream = await httpClient.GetStreamAsync(address, cancellationToken); + var buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) + { + // do nothing + } + } + + private bool IsFeedReachable(string feed) + { + using HttpClient client = new(); + var timeoutSeconds = 1; + var tryCount = 4; + + for (var i = 0; i < tryCount; i++) + { + using var cts = new CancellationTokenSource(); + cts.CancelAfter(timeoutSeconds * 1000); + try + { + ExecuteGetRequest(feed, client, cts.Token).GetAwaiter().GetResult(); + return true; + } + catch (Exception exc) + { + if (exc is TaskCanceledException tce && + tce.CancellationToken == cts.Token && + cts.Token.IsCancellationRequested) + { + logger.LogWarning($"Didn't receive answer from Nuget feed '{feed}' in {timeoutSeconds} seconds."); + timeoutSeconds *= 2; + continue; + } + + // We're only interested in timeouts. + logger.LogWarning($"Querying Nuget feed '{feed}' failed: {exc}"); + return true; + } + } + + logger.LogError($"Didn't receive answer from Nuget feed '{feed}'. Tried it {tryCount} times."); + return false; + } + + private bool CheckFeeds(List<FileInfo> allFiles) + { + logger.LogInfo("Checking Nuget feeds..."); + var feeds = GetAllFeeds(allFiles); + + var excludedFeeds = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ExcludedNugetFeedsFromResponsivenessCheck) + ?.Split(Path.PathSeparator, StringSplitOptions.RemoveEmptyEntries) + .ToHashSet() ?? []; + + if (excludedFeeds.Count > 0) + { + logger.LogInfo($"Excluded feeds from responsiveness check: {string.Join(", ", excludedFeeds)}"); + } + + var allFeedsReachable = feeds.All(feed => excludedFeeds.Contains(feed) || IsFeedReachable(feed)); + if (!allFeedsReachable) + { + diagnosticsWriter.AddEntry(new DiagnosticMessage( + Language.CSharp, + "buildless/unreachable-feed", + "Found unreachable Nuget feed in C# analysis with build-mode 'none'", + visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true), + markdownMessage: "Found unreachable Nuget feed in C# analysis with build-mode 'none'. This may cause missing dependencies in the analysis.", + severity: DiagnosticMessage.TspSeverity.Warning + )); + } + CompilationInfos.Add(("All Nuget feeds reachable", allFeedsReachable ? "1" : "0")); + return allFeedsReachable; + } + + private IEnumerable<string> GetFeeds(string nugetConfig) + { + logger.LogInfo($"Getting Nuget feeds from '{nugetConfig}'..."); + var results = dotnet.GetNugetFeeds(nugetConfig); + var regex = EnabledNugetFeed(); + foreach (var result in results) + { + var match = regex.Match(result); + if (!match.Success) + { + logger.LogError($"Failed to parse feed from '{result}'"); + continue; + } + + var url = match.Groups[1].Value; + if (!url.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase) && + !url.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase)) + { + logger.LogInfo($"Skipping feed '{url}' as it is not a valid URL."); + continue; + } + + yield return url; + } + } + + private HashSet<string> GetAllFeeds(List<FileInfo> allFiles) + { + var nugetConfigs = GetAllNugetConfigs(allFiles); + var feeds = nugetConfigs + .SelectMany(nf => GetFeeds(nf)) + .Where(str => !string.IsNullOrWhiteSpace(str)) + .ToHashSet(); + return feeds; + } + + [GeneratedRegex(@"<TargetFramework>.*</TargetFramework>", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] + private static partial Regex TargetFramework(); + [GeneratedRegex(@"^(.+)\.(\d+\.\d+\.\d+(-(.+))?)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] private static partial Regex LegacyNugetPackage(); + + [GeneratedRegex(@"^E (.*)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] + private static partial Regex EnabledNugetFeed(); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 04716a64db46..2fc77d004f2c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -20,6 +20,7 @@ public sealed partial class DependencyManager : IDisposable { private readonly AssemblyCache assemblyCache; private readonly ILogger logger; + private readonly IDiagnosticsWriter diagnosticsWriter; // Only used as a set, but ConcurrentDictionary is the only concurrent set in .NET. private readonly IDictionary<string, bool> usedReferences = new ConcurrentDictionary<string, bool>(); @@ -52,6 +53,9 @@ public DependencyManager(string srcDir, ILogger logger) var startTime = DateTime.Now; this.logger = logger; + this.diagnosticsWriter = new DiagnosticsStream(Path.Combine( + Environment.GetEnvironmentVariable(EnvironmentVariableNames.DiagnosticDir) ?? "", + $"dependency-manager-{DateTime.UtcNow:yyyyMMddHHmm}-{Environment.ProcessId}.jsonc")); this.sourceDir = new DirectoryInfo(srcDir); packageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "packages")); @@ -177,8 +181,7 @@ private HashSet<string> AddFrameworkDlls(HashSet<string> dllPaths) var frameworkLocations = new HashSet<string>(); var frameworkReferences = Environment.GetEnvironmentVariable(EnvironmentVariableNames.DotnetFrameworkReferences); - var frameworkReferencesUseSubfolders = Environment.GetEnvironmentVariable(EnvironmentVariableNames.DotnetFrameworkReferencesUseSubfolders); - _ = bool.TryParse(frameworkReferencesUseSubfolders, out var useSubfolders); + var useSubfolders = EnvironmentVariables.GetBoolean(EnvironmentVariableNames.DotnetFrameworkReferencesUseSubfolders); if (!string.IsNullOrWhiteSpace(frameworkReferences)) { RemoveFrameworkNugetPackages(dllPaths); @@ -740,6 +743,8 @@ public void Dispose() { Dispose(tempWorkingDirectory, "temporary working"); } + + diagnosticsWriter?.Dispose(); } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index b132d1884f99..c57958845f2f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -16,12 +16,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching public partial class DotNet : IDotNet { private readonly IDotNetCliInvoker dotnetCliInvoker; + private readonly ILogger logger; private readonly TemporaryDirectory? tempWorkingDirectory; private DotNet(IDotNetCliInvoker dotnetCliInvoker, ILogger logger, TemporaryDirectory? tempWorkingDirectory = null) { this.tempWorkingDirectory = tempWorkingDirectory; this.dotnetCliInvoker = dotnetCliInvoker; + this.logger = logger; Info(); } @@ -89,17 +91,18 @@ public bool AddPackage(string folder, string package) return dotnetCliInvoker.RunCommand(args); } - public IList<string> GetListedRuntimes() => GetListed("--list-runtimes"); + public IList<string> GetListedRuntimes() => GetResultList("--list-runtimes"); - public IList<string> GetListedSdks() => GetListed("--list-sdks"); + public IList<string> GetListedSdks() => GetResultList("--list-sdks"); - private IList<string> GetListed(string args) + private IList<string> GetResultList(string args) { - if (dotnetCliInvoker.RunCommand(args, out var artifacts)) + if (dotnetCliInvoker.RunCommand(args, out var results)) { - return artifacts; + return results; } - return new List<string>(); + logger.LogWarning($"Running 'dotnet {args}' failed."); + return []; } public bool Exec(string execArgs) @@ -108,6 +111,8 @@ public bool Exec(string execArgs) return dotnetCliInvoker.RunCommand(args); } + public IList<string> GetNugetFeeds(string nugetConfig) => GetResultList($"nuget list source --format Short --configfile \"{nugetConfig}\""); + // The version number should be kept in sync with the version .NET version used for building the application. public const string LatestDotNetSdkVersion = "8.0.101"; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs index 65a4664e83e4..2d36319042ab 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs @@ -16,5 +16,20 @@ internal class EnvironmentVariableNames /// Controls whether to use framework dependencies from subfolders. /// </summary> public const string DotnetFrameworkReferencesUseSubfolders = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_DOTNET_FRAMEWORK_REFERENCES_USE_SUBFOLDERS"; + + /// <summary> + /// Controls whether to check the responsiveness of NuGet feeds. + /// </summary> + public const string CheckNugetFeedResponsiveness = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK"; + + /// <summary> + /// Specifies the NuGet feeds to exclude from the responsiveness check. + /// </summary> + public const string ExcludedNugetFeedsFromResponsivenessCheck = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_EXCLUDED_FROM_CHECK"; + + /// <summary> + /// Specifies the location of the diagnostic directory. + /// </summary> + public const string DiagnosticDir = "CODEQL_EXTRACTOR_CSHARP_DIAGNOSTIC_DIR"; } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs index d66135c16448..d97fc7d6441d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs @@ -13,6 +13,7 @@ public interface IDotNet IList<string> GetListedRuntimes(); IList<string> GetListedSdks(); bool Exec(string execArgs); + IList<string> GetNugetFeeds(string nugetConfig); } public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? PathToNugetConfig = null, bool ForceReevaluation = false); diff --git a/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs b/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs index 17bc477bde8a..2daf8244d97b 100644 --- a/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs +++ b/csharp/extractor/Semmle.Extraction.Tests/Runtime.cs @@ -26,6 +26,8 @@ public DotNetStub(IList<string> runtimes, IList<string> sdks) public IList<string> GetListedSdks() => sdks; public bool Exec(string execArgs) => true; + + public IList<string> GetNugetFeeds(string nugetConfig) => []; } public class RuntimeTests diff --git a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs index c96aa16357c3..72ba9224669a 100644 --- a/csharp/extractor/Semmle.Util/EnvironmentVariables.cs +++ b/csharp/extractor/Semmle.Util/EnvironmentVariables.cs @@ -27,5 +27,12 @@ public static int GetDefaultNumberOfThreads() } return threads; } + + public static bool GetBoolean(string name) + { + var env = Environment.GetEnvironmentVariable(name); + var _ = bool.TryParse(env, out var value); + return value; + } } } diff --git a/csharp/extractor/Semmle.Util/FileUtils.cs b/csharp/extractor/Semmle.Util/FileUtils.cs index 094c4da33380..4a22877e3c10 100644 --- a/csharp/extractor/Semmle.Util/FileUtils.cs +++ b/csharp/extractor/Semmle.Util/FileUtils.cs @@ -102,8 +102,7 @@ public static string ComputeFileHash(string filePath) private static async Task DownloadFileAsync(string address, string filename) { using var httpClient = new HttpClient(); - using var request = new HttpRequestMessage(HttpMethod.Get, address); - using var contentStream = await (await httpClient.SendAsync(request)).Content.ReadAsStreamAsync(); + using var contentStream = await httpClient.GetStreamAsync(address); using var stream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true); await contentStream.CopyToAsync(stream); } @@ -112,7 +111,7 @@ private static async Task DownloadFileAsync(string address, string filename) /// Downloads the file at <paramref name="address"/> to <paramref name="fileName"/>. /// </summary> public static void DownloadFile(string address, string fileName) => - DownloadFileAsync(address, fileName).Wait(); + DownloadFileAsync(address, fileName).GetAwaiter().GetResult(); public static string NestPaths(ILogger logger, string? outerpath, string innerpath) { From 7051db5e1c5df825f50a18f805680a8231a17fbe Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Fri, 5 Apr 2024 14:20:42 +0200 Subject: [PATCH 700/731] Fix code review findings --- .../DependencyManager.Nuget.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs index cdf4f5dcf4a7..8f8e932279ca 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs @@ -387,6 +387,7 @@ private static async Task ExecuteGetRequest(string address, HttpClient httpClien private bool IsFeedReachable(string feed) { + logger.LogInfo($"Checking if Nuget feed '{feed}' is reachable..."); using HttpClient client = new(); var timeoutSeconds = 1; var tryCount = 4; @@ -432,7 +433,7 @@ private bool CheckFeeds(List<FileInfo> allFiles) if (excludedFeeds.Count > 0) { - logger.LogInfo($"Excluded feeds from responsiveness check: {string.Join(", ", excludedFeeds)}"); + logger.LogInfo($"Excluded feeds from responsiveness check: {string.Join(", ", excludedFeeds.OrderBy(f => f))}"); } var allFeedsReachable = feeds.All(feed => excludedFeeds.Contains(feed) || IsFeedReachable(feed)); @@ -481,9 +482,10 @@ private HashSet<string> GetAllFeeds(List<FileInfo> allFiles) { var nugetConfigs = GetAllNugetConfigs(allFiles); var feeds = nugetConfigs - .SelectMany(nf => GetFeeds(nf)) + .SelectMany(GetFeeds) .Where(str => !string.IsNullOrWhiteSpace(str)) .ToHashSet(); + logger.LogInfo($"Found Nuget feeds in nuget.config files: {string.Join(", ", feeds.OrderBy(f => f))}"); return feeds; } @@ -493,7 +495,7 @@ private HashSet<string> GetAllFeeds(List<FileInfo> allFiles) [GeneratedRegex(@"^(.+)\.(\d+\.\d+\.\d+(-(.+))?)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] private static partial Regex LegacyNugetPackage(); - [GeneratedRegex(@"^E (.*)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] + [GeneratedRegex(@"^E\s(.*)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)] private static partial Regex EnabledNugetFeed(); } } From 6a5520c85d78bd07486003e7555b725715f64af3 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Fri, 5 Apr 2024 15:12:15 +0200 Subject: [PATCH 701/731] Add integration test for unreachable nuget feeds --- .../DependencyManager.Nuget.cs | 21 ++++++---- .../EnvironmentVariableNames.cs | 12 +++++- .../Assemblies.expected | 1 + .../Assemblies.ql | 11 +++++ .../CompilationInfo.expected | 13 ++++++ .../CompilationInfo.ql | 15 +++++++ .../diagnostics.expected | 42 +++++++++++++++++++ .../proj/Program.cs | 6 +++ .../proj/nuget.config | 8 ++++ .../proj/proj.csproj | 16 +++++++ .../standalone.sln | 19 +++++++++ .../test.py | 10 +++++ 12 files changed, 165 insertions(+), 9 deletions(-) create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/standalone.sln create mode 100644 csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/test.py diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs index 8f8e932279ca..c624c8113f6d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs @@ -389,13 +389,17 @@ private bool IsFeedReachable(string feed) { logger.LogInfo($"Checking if Nuget feed '{feed}' is reachable..."); using HttpClient client = new(); - var timeoutSeconds = 1; - var tryCount = 4; + int timeoutMilliSeconds = int.TryParse(Environment.GetEnvironmentVariable(EnvironmentVariableNames.NugetFeedResponsivenessInitialTimeout), out timeoutMilliSeconds) + ? timeoutMilliSeconds + : 1000; + int tryCount = int.TryParse(Environment.GetEnvironmentVariable(EnvironmentVariableNames.NugetFeedResponsivenessRequestCount), out tryCount) + ? tryCount + : 4; for (var i = 0; i < tryCount; i++) { using var cts = new CancellationTokenSource(); - cts.CancelAfter(timeoutSeconds * 1000); + cts.CancelAfter(timeoutMilliSeconds); try { ExecuteGetRequest(feed, client, cts.Token).GetAwaiter().GetResult(); @@ -407,8 +411,8 @@ private bool IsFeedReachable(string feed) tce.CancellationToken == cts.Token && cts.Token.IsCancellationRequested) { - logger.LogWarning($"Didn't receive answer from Nuget feed '{feed}' in {timeoutSeconds} seconds."); - timeoutSeconds *= 2; + logger.LogWarning($"Didn't receive answer from Nuget feed '{feed}' in {timeoutMilliSeconds}ms."); + timeoutMilliSeconds *= 2; continue; } @@ -418,7 +422,7 @@ private bool IsFeedReachable(string feed) } } - logger.LogError($"Didn't receive answer from Nuget feed '{feed}'. Tried it {tryCount} times."); + logger.LogWarning($"Didn't receive answer from Nuget feed '{feed}'. Tried it {tryCount} times."); return false; } @@ -428,17 +432,18 @@ private bool CheckFeeds(List<FileInfo> allFiles) var feeds = GetAllFeeds(allFiles); var excludedFeeds = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ExcludedNugetFeedsFromResponsivenessCheck) - ?.Split(Path.PathSeparator, StringSplitOptions.RemoveEmptyEntries) + ?.Split(" ", StringSplitOptions.RemoveEmptyEntries) .ToHashSet() ?? []; if (excludedFeeds.Count > 0) { - logger.LogInfo($"Excluded feeds from responsiveness check: {string.Join(", ", excludedFeeds.OrderBy(f => f))}"); + logger.LogInfo($"Excluded Nuget feeds from responsiveness check: {string.Join(", ", excludedFeeds.OrderBy(f => f))}"); } var allFeedsReachable = feeds.All(feed => excludedFeeds.Contains(feed) || IsFeedReachable(feed)); if (!allFeedsReachable) { + logger.LogWarning("Found unreachable Nuget feed in C# analysis with build-mode 'none'. This may cause missing dependencies in the analysis."); diagnosticsWriter.AddEntry(new DiagnosticMessage( Language.CSharp, "buildless/unreachable-feed", diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs index 2d36319042ab..ddec97d3dde5 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs @@ -25,7 +25,17 @@ internal class EnvironmentVariableNames /// <summary> /// Specifies the NuGet feeds to exclude from the responsiveness check. /// </summary> - public const string ExcludedNugetFeedsFromResponsivenessCheck = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_EXCLUDED_FROM_CHECK"; + public const string ExcludedNugetFeedsFromResponsivenessCheck = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_EXCLUDED"; + + /// <summary> + /// Specifies the timeout for the initial check of NuGet feeds responsiveness. + /// </summary> + public const string NugetFeedResponsivenessInitialTimeout = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_TIMEOUT"; + + /// <summary> + /// Specifies how many requests to make to the NuGet feed to check its responsiveness. + /// </summary> + public const string NugetFeedResponsivenessRequestCount = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_LIMIT"; /// <summary> /// Specifies the location of the diagnostic directory. diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected new file mode 100644 index 000000000000..2a530060edb2 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected @@ -0,0 +1 @@ +| [...]/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql new file mode 100644 index 000000000000..79cf92de7911 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql @@ -0,0 +1,11 @@ +import csharp + +private string getPath(Assembly a) { + not a.getCompilation().getOutputAssembly() = a and + exists(string s | s = a.getFile().getAbsolutePath() | + result = "[...]/" + s.substring(s.indexOf("newtonsoft.json"), s.length()) + ) +} + +from Assembly a +select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected new file mode 100644 index 000000000000..394fb93a259f --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.expected @@ -0,0 +1,13 @@ +| All Nuget feeds reachable | 0.0 | +| Fallback nuget restore | 1.0 | +| Project files on filesystem | 1.0 | +| Resolved assembly conflicts | 7.0 | +| Restored .NET framework variants | 0.0 | +| Solution files on filesystem | 1.0 | +| Source files generated | 0.0 | +| Source files on filesystem | 1.0 | +| Successfully ran fallback nuget restore | 1.0 | +| Unresolved references | 0.0 | +| UseWPF set | 0.0 | +| UseWindowsForms set | 0.0 | +| WebView extraction enabled | 1.0 | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql new file mode 100644 index 000000000000..073ffe3b224d --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/CompilationInfo.ql @@ -0,0 +1,15 @@ +import csharp +import semmle.code.csharp.commons.Diagnostics + +query predicate compilationInfo(string key, float value) { + key != "Resolved references" and + not key.matches("Compiler diagnostic count for%") and + exists(Compilation c, string infoKey, string infoValue | infoValue = c.getInfo(infoKey) | + key = infoKey and + value = infoValue.toFloat() + or + not exists(infoValue.toFloat()) and + key = infoKey + ": " + infoValue and + value = 1 + ) +} diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected new file mode 100644 index 000000000000..5f298cd3a11f --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/diagnostics.expected @@ -0,0 +1,42 @@ +{ + "markdownMessage": "C# analysis with build-mode 'none' completed.", + "severity": "unknown", + "source": { + "extractorName": "csharp", + "id": "csharp/autobuilder/buildless/complete", + "name": "C# analysis with build-mode 'none' completed" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": false, + "telemetry": true + } +} +{ + "markdownMessage": "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", + "severity": "note", + "source": { + "extractorName": "csharp", + "id": "csharp/autobuilder/buildless/mode-active", + "name": "C# with build-mode set to 'none'" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} +{ + "markdownMessage": "Found unreachable Nuget feed in C# analysis with build-mode 'none'. This may cause missing dependencies in the analysis.", + "severity": "warning", + "source": { + "extractorName": "csharp", + "id": "csharp/autobuilder/buildless/unreachable-feed", + "name": "Found unreachable Nuget feed in C# analysis with build-mode 'none'" + }, + "visibility": { + "cliSummaryTable": true, + "statusPage": true, + "telemetry": true + } +} diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs new file mode 100644 index 000000000000..39a9e95bb6e3 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/Program.cs @@ -0,0 +1,6 @@ +class Program +{ + static void Main(string[] args) + { + } +} \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config new file mode 100644 index 000000000000..11d134c72890 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/nuget.config @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <packageSources> + <clear /> + <add key="x" value="https://localhost:53/packages/" /> + <add key="y" value="https://localhost:80/packages/" /> + </packageSources> +</configuration> \ No newline at end of file diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj new file mode 100644 index 000000000000..cef71796352c --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/proj/proj.csproj @@ -0,0 +1,16 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFrameworks>net8.0</TargetFrameworks> + </PropertyGroup> + + <Target Name="DeleteBinObjFolders" BeforeTargets="Clean"> + <RemoveDir Directories=".\bin" /> + <RemoveDir Directories=".\obj" /> + </Target> + + <ItemGroup> + <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> + </ItemGroup> +</Project> diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/standalone.sln b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/standalone.sln new file mode 100644 index 000000000000..493ab54b59a7 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/standalone.sln @@ -0,0 +1,19 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "proj", "proj\proj.csproj", "{6ED00460-7666-4AE9-A405-4B6C8B02279A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4ED55A1C-066C-43DF-B32E-7EAA035985EE} + EndGlobalSection +EndGlobal diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/test.py b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/test.py new file mode 100644 index 000000000000..b48382a66ce4 --- /dev/null +++ b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/test.py @@ -0,0 +1,10 @@ +from create_database_utils import * +from diagnostics_test_utils import * +import os + +os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK"] = "true" # Enable NuGet feed check +os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_TIMEOUT"] = "1" # 1ms, the GET request should fail with such short timeout +os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_LIMIT"] = "1" # Limit the count of checks to 1 +os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_EXCLUDED"] = "https://abc.de:8000/packages/" # Exclude this feed from check +run_codeql_database_create([], lang="csharp", extra_args=["--build-mode=none"]) +check_diagnostics() \ No newline at end of file From 95896bc95fe23dfdbad68320f9524c832de118a9 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Fri, 5 Apr 2024 15:57:07 +0200 Subject: [PATCH 702/731] Make sure diagnostic directory exists --- .../DependencyManager.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs index 2fc77d004f2c..8d63d7f42b24 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs @@ -53,8 +53,24 @@ public DependencyManager(string srcDir, ILogger logger) var startTime = DateTime.Now; this.logger = logger; + + var diagDirEnv = Environment.GetEnvironmentVariable(EnvironmentVariableNames.DiagnosticDir); + if (!string.IsNullOrWhiteSpace(diagDirEnv) && + !Directory.Exists(diagDirEnv)) + { + try + { + Directory.CreateDirectory(diagDirEnv); + } + catch (Exception e) + { + logger.LogError($"Failed to create diagnostic directory {diagDirEnv}: {e.Message}"); + diagDirEnv = null; + } + } + this.diagnosticsWriter = new DiagnosticsStream(Path.Combine( - Environment.GetEnvironmentVariable(EnvironmentVariableNames.DiagnosticDir) ?? "", + diagDirEnv ?? "", $"dependency-manager-{DateTime.UtcNow:yyyyMMddHHmm}-{Environment.ProcessId}.jsonc")); this.sourceDir = new DirectoryInfo(srcDir); From d7f8b9615857ba68243327e12c9af04a68660efe Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Mon, 8 Apr 2024 13:14:51 +0200 Subject: [PATCH 703/731] Improve logging --- .../DependencyManager.Nuget.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs index c624c8113f6d..1f3f44425d57 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.Nuget.cs @@ -490,7 +490,15 @@ private HashSet<string> GetAllFeeds(List<FileInfo> allFiles) .SelectMany(GetFeeds) .Where(str => !string.IsNullOrWhiteSpace(str)) .ToHashSet(); - logger.LogInfo($"Found Nuget feeds in nuget.config files: {string.Join(", ", feeds.OrderBy(f => f))}"); + + if (feeds.Count > 0) + { + logger.LogInfo($"Found {feeds.Count} Nuget feeds in nuget.config files: {string.Join(", ", feeds.OrderBy(f => f))}"); + } + else + { + logger.LogDebug("No Nuget feeds found in nuget.config files."); + } return feeds; } From 2fb9c2db6fc53c8adf1ce46b3d084bc4a6565b0c Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Tue, 12 Mar 2024 15:47:15 +0100 Subject: [PATCH 704/731] C#: Remove deprecated qualifiedName predicates. --- csharp/ql/lib/semmle/code/csharp/Element.qll | 29 -------------- csharp/ql/lib/semmle/code/csharp/Member.qll | 38 ------------------- .../ql/lib/semmle/code/csharp/Namespace.qll | 10 ----- 3 files changed, 77 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Element.qll b/csharp/ql/lib/semmle/code/csharp/Element.qll index 2c69912c9939..ccfd1a279259 100644 --- a/csharp/ql/lib/semmle/code/csharp/Element.qll +++ b/csharp/ql/lib/semmle/code/csharp/Element.qll @@ -101,25 +101,6 @@ class NamedElement extends Element, @named_element { /** Holds if this element has name 'name'. */ final predicate hasName(string name) { name = this.getName() } - /** - * Gets the fully qualified name of this element, for example the - * fully qualified name of `M` on line 3 is `N.C.M` in - * - * ```csharp - * namespace N { - * class C { - * void M(int i, string s) { } - * } - * } - * ``` - */ - cached - deprecated final string getQualifiedName() { - exists(string qualifier, string name | this.hasQualifiedName(qualifier, name) | - if qualifier = "" then result = name else result = qualifier + "." + name - ) - } - /** * Gets the fully qualified name of this element, for example the * fully qualified name of `M` on line 3 is `N.C.M` in @@ -142,16 +123,6 @@ class NamedElement extends Element, @named_element { ) } - /** - * DEPRECATED: Use `hasFullyQualifiedName` instead. - * - * Holds if this element has the qualified name `qualifier`.`name`. - */ - cached - deprecated predicate hasQualifiedName(string qualifier, string name) { - qualifier = "" and name = this.getName() - } - /** Holds if this element has the fully qualified name `qualifier`.`name`. */ cached predicate hasFullyQualifiedName(string qualifier, string name) { diff --git a/csharp/ql/lib/semmle/code/csharp/Member.qll b/csharp/ql/lib/semmle/code/csharp/Member.qll index 1be091170e34..a2758f039426 100644 --- a/csharp/ql/lib/semmle/code/csharp/Member.qll +++ b/csharp/ql/lib/semmle/code/csharp/Member.qll @@ -71,37 +71,10 @@ class Declaration extends NamedElement, @declaration { override string toString() { result = this.getName() } - deprecated override predicate hasQualifiedName(string qualifier, string name) { - QualifiedName<QualifiedNameInput>::hasQualifiedName(this, qualifier, name) - } - override predicate hasFullyQualifiedName(string qualifier, string name) { QualifiedName<FullyQualifiedNameInput>::hasQualifiedName(this, qualifier, name) } - /** - * DEPRECATED: Use `getFullyQualifiedNameWithTypes` instead. - * - * Gets the fully qualified name of this declaration, including types, for example - * the fully qualified name with types of `M` on line 3 is `N.C.M(int, string)` in - * - * ```csharp - * namespace N { - * class C { - * void M(int i, string s) { } - * } - * } - * ``` - */ - deprecated string getQualifiedNameWithTypes() { - exists(string qual | - qual = this.getDeclaringType().getQualifiedName() and - if this instanceof NestedType - then result = qual + "+" + this.toStringWithTypes() - else result = qual + "." + this.toStringWithTypes() - ) - } - /** * Gets the fully qualified name of this declaration, including types, for example * the fully qualified name with types of `M` on line 3 is `N.C.M(int, string)` in @@ -263,17 +236,6 @@ class Member extends Modifiable, @member { /** Gets an access to this member. */ MemberAccess getAnAccess() { result.getTarget() = this } - /** - * DEPRECATED: Use `hasFullyQualifiedName` instead. - * - * Holds if this member has name `name` and is defined in type `type` - * with namespace `namespace`. - */ - cached - deprecated final predicate hasQualifiedName(string namespace, string type, string name) { - QualifiedName<QualifiedNameInput>::hasQualifiedName(this, namespace, type, name) - } - /** * Holds if this member has name `name` and is defined in type `type` * with namespace `namespace`. diff --git a/csharp/ql/lib/semmle/code/csharp/Namespace.qll b/csharp/ql/lib/semmle/code/csharp/Namespace.qll index 002ce444b3ff..383fe8ab2a89 100644 --- a/csharp/ql/lib/semmle/code/csharp/Namespace.qll +++ b/csharp/ql/lib/semmle/code/csharp/Namespace.qll @@ -38,16 +38,6 @@ class Namespace extends TypeContainer, Declaration, @namespace { parent_namespace(result, this) } - /** - * Holds if this namespace has the qualified name `qualifier`.`name`. - * - * For example if the qualified name is `System.Collections.Generic`, then - * `qualifier`=`System.Collections` and `name`=`Generic`. - */ - deprecated override predicate hasQualifiedName(string qualifier, string name) { - namespaceHasQualifiedName(this, qualifier, name) - } - /** * Holds if this namespace has the qualified name `qualifier`.`name`. * From 8fa91914349bf21e52fabfde00c68f13b28c8a63 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Wed, 13 Mar 2024 10:12:22 +0100 Subject: [PATCH 705/731] C#: Deprecate the getFullyQualifiedName predicate. --- .../diag_recursive_generics/Types.ql | 7 ++++--- csharp/ql/lib/semmle/code/csharp/Element.qll | 4 +++- csharp/ql/lib/semmle/code/csharp/Member.qll | 9 +++++---- csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll | 8 +++++++- .../csharp/dataflow/internal/FlowSummaryImpl.qll | 15 ++++++++++++--- .../security/dataflow/ExternalAPIsQuery.qll | 6 +++--- .../library-tests/constructors/Destructors1.ql | 2 +- 7 files changed, 35 insertions(+), 16 deletions(-) diff --git a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql index d59c60ec8022..fff011dcbd53 100644 --- a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql +++ b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql @@ -1,5 +1,6 @@ import csharp +import semmle.code.csharp.commons.QualifiedName -from Class c -where c.fromSource() -select c, c.getBaseClass().getFullyQualifiedName() +from Class c, string qualifier, string name +where c.fromSource() and c.getBaseClass().hasFullyQualifiedName(qualifier, name) +select c, getQualifiedName(qualifier, name) diff --git a/csharp/ql/lib/semmle/code/csharp/Element.qll b/csharp/ql/lib/semmle/code/csharp/Element.qll index ccfd1a279259..38176acfd929 100644 --- a/csharp/ql/lib/semmle/code/csharp/Element.qll +++ b/csharp/ql/lib/semmle/code/csharp/Element.qll @@ -102,6 +102,8 @@ class NamedElement extends Element, @named_element { final predicate hasName(string name) { name = this.getName() } /** + * DEPRECATED: Use `hasFullyQualifiedName` instead. + * * Gets the fully qualified name of this element, for example the * fully qualified name of `M` on line 3 is `N.C.M` in * @@ -117,7 +119,7 @@ class NamedElement extends Element, @named_element { * ``System.Collections.Generic.IList`1``. */ cached - final string getFullyQualifiedName() { + deprecated final string getFullyQualifiedName() { exists(string qualifier, string name | this.hasFullyQualifiedName(qualifier, name) | if qualifier = "" then result = name else result = qualifier + "." + name ) diff --git a/csharp/ql/lib/semmle/code/csharp/Member.qll b/csharp/ql/lib/semmle/code/csharp/Member.qll index a2758f039426..99bf8eaa4f0d 100644 --- a/csharp/ql/lib/semmle/code/csharp/Member.qll +++ b/csharp/ql/lib/semmle/code/csharp/Member.qll @@ -88,11 +88,12 @@ class Declaration extends NamedElement, @declaration { * ``` */ string getFullyQualifiedNameWithTypes() { - exists(string qual | - qual = this.getDeclaringType().getFullyQualifiedName() and + exists(string fullqual, string qual, string name | + this.getDeclaringType().hasFullyQualifiedName(qual, name) and + fullqual = getQualifiedName(qual, name) and if this instanceof NestedType - then result = qual + "+" + this.toStringWithTypes() - else result = qual + "." + this.toStringWithTypes() + then result = fullqual + "+" + this.toStringWithTypes() + else result = fullqual + "." + this.toStringWithTypes() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll index 673bd1a5638f..9cd33ea260f1 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll @@ -3,6 +3,7 @@ */ import csharp +private import semmle.code.csharp.commons.QualifiedName /** * Provides classes for working with static single assignment (SSA) form. @@ -120,7 +121,12 @@ module Ssa { result = prefix + "." + this.getAssignable() | if f.(Modifiable).isStatic() - then prefix = f.getDeclaringType().getFullyQualifiedName() + then + exists(string qualifier, string name | + f.getDeclaringType().hasFullyQualifiedName(qualifier, name) + | + prefix = getQualifiedName(qualifier, name) + ) else prefix = "this" ) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index 96f45e776557..82c2a7dcd3de 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -3,6 +3,7 @@ */ private import csharp +private import semmle.code.csharp.commons.QualifiedName private import semmle.code.csharp.frameworks.system.linq.Expressions private import codeql.dataflow.internal.FlowSummaryImpl private import codeql.dataflow.internal.AccessPathSyntax as AccessPath @@ -42,10 +43,18 @@ module Input implements InputSig<Location, DataFlowImplSpecific::CsharpDataFlow> string encodeContent(ContentSet c, string arg) { c = TElementContent() and result = "Element" and arg = "" or - exists(Field f | c = TFieldContent(f) and result = "Field" and arg = f.getFullyQualifiedName()) + exists(Field f, string qualifier, string name | + c = TFieldContent(f) and + f.hasFullyQualifiedName(qualifier, name) and + arg = getQualifiedName(qualifier, name) and + result = "Field" + ) or - exists(Property p | - c = TPropertyContent(p) and result = "Property" and arg = p.getFullyQualifiedName() + exists(Property p, string qualifier, string name | + c = TPropertyContent(p) and + p.hasFullyQualifiedName(qualifier, name) and + arg = getQualifiedName(qualifier, name) and + result = "Property" ) or exists(SyntheticField f | diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll index 3075fe53a87a..a0d0ada957a5 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ExternalAPIsQuery.qll @@ -139,13 +139,13 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi { /** Gets a textual representation of this element. */ string toString() { - exists(Callable m, int index, string indexString | + exists(Callable m, int index, string indexString, string qualifier, string name | if index = -1 then indexString = "qualifier" else indexString = "param " + index | this = TExternalApiParameter(m, index) and + m.getDeclaringType().hasFullyQualifiedName(qualifier, name) and result = - m.getDeclaringType().getFullyQualifiedName() + "." + m.toStringWithTypes() + " [" + - indexString + "]" + getQualifiedName(qualifier, name) + "." + m.toStringWithTypes() + " [" + indexString + "]" ) } } diff --git a/csharp/ql/test/library-tests/constructors/Destructors1.ql b/csharp/ql/test/library-tests/constructors/Destructors1.ql index 368980a290c5..673a0e941f08 100644 --- a/csharp/ql/test/library-tests/constructors/Destructors1.ql +++ b/csharp/ql/test/library-tests/constructors/Destructors1.ql @@ -10,4 +10,4 @@ where c.getDeclaringType().hasFullyQualifiedName(qualifier, name) and qualifier = "Constructors" and name = "Class" -select c, c.getDeclaringType().getFullyQualifiedName() +select c, getQualifiedName(qualifier, name) From b677e89f35fd0f0ae322f0191e342520ab0bc795 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Wed, 13 Mar 2024 10:23:24 +0100 Subject: [PATCH 706/731] C#: Deprecate getFullyQualifiedNameWithTypes. --- csharp/ql/lib/semmle/code/csharp/Member.qll | 2 +- .../code/csharp/commons/QualifiedName.qll | 25 +++++++++++++++++++ .../dispatch/GetADynamicTarget.ql | 3 ++- .../frameworks/system/Dispose/Dispose.ql | 3 ++- .../frameworks/system/Equals/Equals.ql | 3 ++- .../test/library-tests/generics/Generics.ql | 12 ++++----- .../library-tests/overrides/Overrides22.ql | 3 ++- .../library-tests/unification/Unification.ql | 5 ++-- 8 files changed, 43 insertions(+), 13 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Member.qll b/csharp/ql/lib/semmle/code/csharp/Member.qll index 99bf8eaa4f0d..3427d4ea0893 100644 --- a/csharp/ql/lib/semmle/code/csharp/Member.qll +++ b/csharp/ql/lib/semmle/code/csharp/Member.qll @@ -87,7 +87,7 @@ class Declaration extends NamedElement, @declaration { * } * ``` */ - string getFullyQualifiedNameWithTypes() { + deprecated string getFullyQualifiedNameWithTypes() { exists(string fullqual, string qual, string name | this.getDeclaringType().hasFullyQualifiedName(qual, name) and fullqual = getQualifiedName(qual, name) and diff --git a/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll b/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll index eba0fb10c7c3..417dc137027f 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/QualifiedName.qll @@ -219,3 +219,28 @@ predicate splitQualifiedName(string qualifiedName, string qualifier, string name name = qualifiedName ) } + +/** + * INTERNAL: Do not use. + * + * Gets the fully qualified name of this declaration, including types, for example + * the fully qualified name with types of `M` on line 3 is `N.C.M(int, string)` in + * + * ```csharp + * namespace N { + * class C { + * void M(int i, string s) { } + * } + * } + * ``` + */ +bindingset[d] +string getFullyQualifiedNameWithTypes(Declaration d) { + exists(string fullqual, string qual, string name | + d.getDeclaringType().hasFullyQualifiedName(qual, name) and + fullqual = getQualifiedName(qual, name) and + if d instanceof NestedType + then result = fullqual + "+" + d.toStringWithTypes() + else result = fullqual + "." + d.toStringWithTypes() + ) +} diff --git a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.ql b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.ql index cbde2d43ab8e..b4c94a0b5076 100644 --- a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.ql +++ b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.ql @@ -1,8 +1,9 @@ import csharp +import semmle.code.csharp.commons.QualifiedName import semmle.code.csharp.dispatch.Dispatch from DispatchCall call, Callable callable where callable = call.getADynamicTarget() and callable.fromSource() -select call, callable.getFullyQualifiedNameWithTypes() +select call, getFullyQualifiedNameWithTypes(callable) diff --git a/csharp/ql/test/library-tests/frameworks/system/Dispose/Dispose.ql b/csharp/ql/test/library-tests/frameworks/system/Dispose/Dispose.ql index 943245fa0a2b..5fa2f337fcf2 100644 --- a/csharp/ql/test/library-tests/frameworks/system/Dispose/Dispose.ql +++ b/csharp/ql/test/library-tests/frameworks/system/Dispose/Dispose.ql @@ -1,4 +1,5 @@ import csharp +import semmle.code.csharp.commons.QualifiedName import semmle.code.csharp.frameworks.System from ValueOrRefType t, Method m, boolean b @@ -6,4 +7,4 @@ where t.fromSource() and m = getInvokedDisposeMethod(t) and if implementsDispose(t) then b = true else b = false -select t, m.getFullyQualifiedNameWithTypes(), b +select t, getFullyQualifiedNameWithTypes(m), b diff --git a/csharp/ql/test/library-tests/frameworks/system/Equals/Equals.ql b/csharp/ql/test/library-tests/frameworks/system/Equals/Equals.ql index 91c04791ef32..e6dc4ae75493 100644 --- a/csharp/ql/test/library-tests/frameworks/system/Equals/Equals.ql +++ b/csharp/ql/test/library-tests/frameworks/system/Equals/Equals.ql @@ -1,4 +1,5 @@ import csharp +import semmle.code.csharp.commons.QualifiedName import semmle.code.csharp.frameworks.System from ValueOrRefType t, Method m, boolean b @@ -6,4 +7,4 @@ where t.fromSource() and m = getInvokedEqualsMethod(t) and if implementsEquals(t) then b = true else b = false -select t, m.getFullyQualifiedNameWithTypes(), b +select t, getFullyQualifiedNameWithTypes(m), b diff --git a/csharp/ql/test/library-tests/generics/Generics.ql b/csharp/ql/test/library-tests/generics/Generics.ql index 2f3aff0fd589..71e21a5815e0 100644 --- a/csharp/ql/test/library-tests/generics/Generics.ql +++ b/csharp/ql/test/library-tests/generics/Generics.ql @@ -231,18 +231,18 @@ query predicate test27(ConstructedType ct, UnboundGenericType ugt, UnboundGeneri query predicate test28(UnboundGeneric ug, string s) { ug.fromSource() and - s = ug.getFullyQualifiedNameWithTypes() + s = getFullyQualifiedNameWithTypes(ug) } query predicate test29(ConstructedGeneric cg, string s) { cg.fromSource() and - s = cg.getFullyQualifiedNameWithTypes() + s = getFullyQualifiedNameWithTypes(cg) } query predicate test30(Declaration d, string s) { d.fromSource() and d instanceof @generic and - s = d.getFullyQualifiedNameWithTypes() and + s = getFullyQualifiedNameWithTypes(d) and d != d.getUnboundDeclaration() and not d instanceof Generic } @@ -263,7 +263,7 @@ query predicate test33(ConstructedMethod cm, string s1, string s2) { exists(string namespace, string type, string name | cm.hasFullyQualifiedName(namespace, type, name) and s1 = getQualifiedName(namespace, type, name) ) and - cm.getFullyQualifiedNameWithTypes() = s2 + getFullyQualifiedNameWithTypes(cm) = s2 } query predicate test34(UnboundGeneric ug, string s1, string s2) { @@ -271,7 +271,7 @@ query predicate test34(UnboundGeneric ug, string s1, string s2) { exists(string qualifier, string name | ug.hasFullyQualifiedName(qualifier, name) and s1 = getQualifiedName(qualifier, name) ) and - ug.getFullyQualifiedNameWithTypes() = s2 + getFullyQualifiedNameWithTypes(ug) = s2 } query predicate test35(UnboundGenericMethod gm, string s1, string s2) { @@ -279,5 +279,5 @@ query predicate test35(UnboundGenericMethod gm, string s1, string s2) { exists(string namespace, string type, string name | gm.hasFullyQualifiedName(namespace, type, name) and s1 = getQualifiedName(namespace, type, name) ) and - gm.getFullyQualifiedNameWithTypes() = s2 + getFullyQualifiedNameWithTypes(gm) = s2 } diff --git a/csharp/ql/test/library-tests/overrides/Overrides22.ql b/csharp/ql/test/library-tests/overrides/Overrides22.ql index d2c5a9e43361..d6300d49ecd3 100644 --- a/csharp/ql/test/library-tests/overrides/Overrides22.ql +++ b/csharp/ql/test/library-tests/overrides/Overrides22.ql @@ -1,4 +1,5 @@ import csharp +import semmle.code.csharp.commons.QualifiedName from Overridable v1, Overridable v2, string kind where @@ -9,4 +10,4 @@ where ) and v1.fromSource() and v2.fromSource() -select v1.getFullyQualifiedNameWithTypes(), v2.getFullyQualifiedNameWithTypes(), kind +select getFullyQualifiedNameWithTypes(v1), getFullyQualifiedNameWithTypes(v2), kind diff --git a/csharp/ql/test/library-tests/unification/Unification.ql b/csharp/ql/test/library-tests/unification/Unification.ql index 10c5e5209219..f8c6c15377d4 100644 --- a/csharp/ql/test/library-tests/unification/Unification.ql +++ b/csharp/ql/test/library-tests/unification/Unification.ql @@ -1,3 +1,4 @@ +import semmle.code.csharp.commons.QualifiedName import semmle.code.csharp.Unification class InterestingType extends @type { @@ -7,9 +8,9 @@ class InterestingType extends @type { } string toString() { - result = this.(Type).getFullyQualifiedNameWithTypes() + result = getFullyQualifiedNameWithTypes(this.(Type)) or - not exists(this.(Type).getFullyQualifiedNameWithTypes()) and + not exists(getFullyQualifiedNameWithTypes(this.(Type))) and result = this.(Type).toStringWithTypes() } From 8fbfafc1d7a18356d4577280b813a5bcfec768d0 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Wed, 13 Mar 2024 16:27:01 +0100 Subject: [PATCH 707/731] C#: Dont cache the deprecated getFullyQualifiedName predicate. --- csharp/ql/lib/semmle/code/csharp/Element.qll | 1 - 1 file changed, 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Element.qll b/csharp/ql/lib/semmle/code/csharp/Element.qll index 38176acfd929..c44a092bb4f8 100644 --- a/csharp/ql/lib/semmle/code/csharp/Element.qll +++ b/csharp/ql/lib/semmle/code/csharp/Element.qll @@ -118,7 +118,6 @@ class NamedElement extends Element, @named_element { * Unbound generic types, such as `IList<T>`, are represented as * ``System.Collections.Generic.IList`1``. */ - cached deprecated final string getFullyQualifiedName() { exists(string qualifier, string name | this.hasFullyQualifiedName(qualifier, name) | if qualifier = "" then result = name else result = qualifier + "." + name From fc689efd1b1459e3da7771e46d364874d2544e97 Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Mon, 8 Apr 2024 13:47:59 +0200 Subject: [PATCH 708/731] C#: Add debug version of the getFullyQualifiedName predicate. --- csharp/ql/lib/semmle/code/csharp/Element.qll | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/csharp/ql/lib/semmle/code/csharp/Element.qll b/csharp/ql/lib/semmle/code/csharp/Element.qll index c44a092bb4f8..f8cb018be681 100644 --- a/csharp/ql/lib/semmle/code/csharp/Element.qll +++ b/csharp/ql/lib/semmle/code/csharp/Element.qll @@ -124,6 +124,33 @@ class NamedElement extends Element, @named_element { ) } + /** + * INTERNAL: Do not use. + * + * This is intended for DEBUG ONLY. + * Constructing the fully qualified name for all elements in a large codebase + * puts severe stress on the string pool. + * + * Gets the fully qualified name of this element, for example the + * fully qualified name of `M` on line 3 is `N.C.M` in + * + * ```csharp + * namespace N { + * class C { + * void M(int i, string s) { } + * } + * } + * ``` + * + * Unbound generic types, such as `IList<T>`, are represented as + * ``System.Collections.Generic.IList`1``. + */ + final string getFullyQualifiedNameDebug() { + exists(string qualifier, string name | this.hasFullyQualifiedName(qualifier, name) | + if qualifier = "" then result = name else result = qualifier + "." + name + ) + } + /** Holds if this element has the fully qualified name `qualifier`.`name`. */ cached predicate hasFullyQualifiedName(string qualifier, string name) { From b581a9ba04c76a1a6fbf535e31b10502dbf3b6c7 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 8 Apr 2024 13:49:05 +0100 Subject: [PATCH 709/731] C++: Add example with missing destructor calls on parameters passed by value. --- .../library-tests/ir/ir/PrintAST.expected | 24 ++++++++ .../library-tests/ir/ir/aliased_ir.expected | 61 +++++++++++++++++++ cpp/ql/test/library-tests/ir/ir/ir.cpp | 16 +++++ .../ir/ir/operand_locations.expected | 31 ++++++++++ .../test/library-tests/ir/ir/raw_ir.expected | 57 +++++++++++++++++ 5 files changed, 189 insertions(+) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 5f2aebd390fc..7761598e90f7 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -20163,6 +20163,30 @@ ir.cpp: # 2430| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &> # 2430| ValueCategory = lvalue # 2432| getStmt(6): [ReturnStmt] return ... +# 2434| [TopLevelFunction] void param_with_destructor_by_value(ClassWithDestructor) +# 2434| <params>: +# 2434| getParameter(0): [Parameter] c +# 2434| Type = [Class] ClassWithDestructor +# 2434| getEntryPoint(): [BlockStmt] { ... } +# 2436| getStmt(0): [ReturnStmt] return ... +# 2438| [TopLevelFunction] void param_with_destructor_by_pointer(ClassWithDestructor*) +# 2438| <params>: +# 2438| getParameter(0): [Parameter] c +# 2438| Type = [PointerType] ClassWithDestructor * +# 2438| getEntryPoint(): [BlockStmt] { ... } +# 2440| getStmt(0): [ReturnStmt] return ... +# 2442| [TopLevelFunction] void param_with_destructor_by_ref(ClassWithDestructor&) +# 2442| <params>: +# 2442| getParameter(0): [Parameter] c +# 2442| Type = [LValueReferenceType] ClassWithDestructor & +# 2442| getEntryPoint(): [BlockStmt] { ... } +# 2444| getStmt(0): [ReturnStmt] return ... +# 2446| [TopLevelFunction] void param_with_destructor_by_rref(ClassWithDestructor&&) +# 2446| <params>: +# 2446| getParameter(0): [Parameter] c +# 2446| Type = [RValueReferenceType] ClassWithDestructor && +# 2446| getEntryPoint(): [BlockStmt] { ... } +# 2448| getStmt(0): [ReturnStmt] return ... perf-regression.cpp: # 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&) # 4| <params>: diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index cbf32f3aab31..39eccf0139f3 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -15583,6 +15583,67 @@ ir.cpp: # 2410| Block 13 # 2410| v2410_8(void) = Unreached : +# 2434| void param_with_destructor_by_value(ClassWithDestructor) +# 2434| Block 0 +# 2434| v2434_1(void) = EnterFunction : +# 2434| m2434_2(unknown) = AliasedDefinition : +# 2434| m2434_3(unknown) = InitializeNonLocal : +# 2434| m2434_4(unknown) = Chi : total:m2434_2, partial:m2434_3 +# 2434| r2434_5(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2434| m2434_6(ClassWithDestructor) = InitializeParameter[c] : &:r2434_5 +# 2436| v2436_1(void) = NoOp : +# 2434| v2434_7(void) = ReturnVoid : +# 2434| v2434_8(void) = AliasedUse : m2434_3 +# 2434| v2434_9(void) = ExitFunction : + +# 2438| void param_with_destructor_by_pointer(ClassWithDestructor*) +# 2438| Block 0 +# 2438| v2438_1(void) = EnterFunction : +# 2438| m2438_2(unknown) = AliasedDefinition : +# 2438| m2438_3(unknown) = InitializeNonLocal : +# 2438| m2438_4(unknown) = Chi : total:m2438_2, partial:m2438_3 +# 2438| r2438_5(glval<ClassWithDestructor *>) = VariableAddress[c] : +# 2438| m2438_6(ClassWithDestructor *) = InitializeParameter[c] : &:r2438_5 +# 2438| r2438_7(ClassWithDestructor *) = Load[c] : &:r2438_5, m2438_6 +# 2438| m2438_8(unknown) = InitializeIndirection[c] : &:r2438_7 +# 2440| v2440_1(void) = NoOp : +# 2438| v2438_9(void) = ReturnIndirection[c] : &:r2438_7, m2438_8 +# 2438| v2438_10(void) = ReturnVoid : +# 2438| v2438_11(void) = AliasedUse : m2438_3 +# 2438| v2438_12(void) = ExitFunction : + +# 2442| void param_with_destructor_by_ref(ClassWithDestructor&) +# 2442| Block 0 +# 2442| v2442_1(void) = EnterFunction : +# 2442| m2442_2(unknown) = AliasedDefinition : +# 2442| m2442_3(unknown) = InitializeNonLocal : +# 2442| m2442_4(unknown) = Chi : total:m2442_2, partial:m2442_3 +# 2442| r2442_5(glval<ClassWithDestructor &>) = VariableAddress[c] : +# 2442| m2442_6(ClassWithDestructor &) = InitializeParameter[c] : &:r2442_5 +# 2442| r2442_7(ClassWithDestructor &) = Load[c] : &:r2442_5, m2442_6 +# 2442| m2442_8(unknown) = InitializeIndirection[c] : &:r2442_7 +# 2444| v2444_1(void) = NoOp : +# 2442| v2442_9(void) = ReturnIndirection[c] : &:r2442_7, m2442_8 +# 2442| v2442_10(void) = ReturnVoid : +# 2442| v2442_11(void) = AliasedUse : m2442_3 +# 2442| v2442_12(void) = ExitFunction : + +# 2446| void param_with_destructor_by_rref(ClassWithDestructor&&) +# 2446| Block 0 +# 2446| v2446_1(void) = EnterFunction : +# 2446| m2446_2(unknown) = AliasedDefinition : +# 2446| m2446_3(unknown) = InitializeNonLocal : +# 2446| m2446_4(unknown) = Chi : total:m2446_2, partial:m2446_3 +# 2446| r2446_5(glval<ClassWithDestructor &&>) = VariableAddress[c] : +# 2446| m2446_6(ClassWithDestructor &&) = InitializeParameter[c] : &:r2446_5 +# 2446| r2446_7(ClassWithDestructor &&) = Load[c] : &:r2446_5, m2446_6 +# 2446| m2446_8(unknown) = InitializeIndirection[c] : &:r2446_7 +# 2448| v2448_1(void) = NoOp : +# 2446| v2446_9(void) = ReturnIndirection[c] : &:r2446_7, m2446_8 +# 2446| v2446_10(void) = ReturnVoid : +# 2446| v2446_11(void) = AliasedUse : m2446_3 +# 2446| v2446_12(void) = ExitFunction : + perf-regression.cpp: # 6| void Big::Big() # 6| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 2d476b11fd4e..7c8d0b1296b2 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -2431,4 +2431,20 @@ void initialization_with_temp_destructor() { y += x; } +void param_with_destructor_by_value(ClassWithDestructor c) { + // The call to ~ClassWithDestructor::ClassWithDestructor() seems to be missing here. +} + +void param_with_destructor_by_pointer(ClassWithDestructor* c) { + // No destructor call should be here +} + +void param_with_destructor_by_ref(ClassWithDestructor& c) { + // No destructor call should be here +} + +void param_with_destructor_by_rref(ClassWithDestructor&& c) { + // No destructor call should be here +} + // semmle-extractor-options: -std=c++20 --clang diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index a112a7698764..2799fc28e941 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -12968,6 +12968,37 @@ | ir.cpp:2431:14:2431:14 | Load | m2430_17 | | ir.cpp:2431:14:2431:14 | Right | r2431_3 | | ir.cpp:2431:14:2431:14 | Unary | r2431_2 | +| ir.cpp:2434:6:2434:35 | ChiPartial | partial:m2434_3 | +| ir.cpp:2434:6:2434:35 | ChiTotal | total:m2434_2 | +| ir.cpp:2434:6:2434:35 | SideEffect | m2434_3 | +| ir.cpp:2434:57:2434:57 | Address | &:r2434_5 | +| ir.cpp:2438:6:2438:37 | ChiPartial | partial:m2438_3 | +| ir.cpp:2438:6:2438:37 | ChiTotal | total:m2438_2 | +| ir.cpp:2438:6:2438:37 | SideEffect | m2438_3 | +| ir.cpp:2438:60:2438:60 | Address | &:r2438_5 | +| ir.cpp:2438:60:2438:60 | Address | &:r2438_5 | +| ir.cpp:2438:60:2438:60 | Address | &:r2438_7 | +| ir.cpp:2438:60:2438:60 | Address | &:r2438_7 | +| ir.cpp:2438:60:2438:60 | Load | m2438_6 | +| ir.cpp:2438:60:2438:60 | SideEffect | m2438_8 | +| ir.cpp:2442:6:2442:33 | ChiPartial | partial:m2442_3 | +| ir.cpp:2442:6:2442:33 | ChiTotal | total:m2442_2 | +| ir.cpp:2442:6:2442:33 | SideEffect | m2442_3 | +| ir.cpp:2442:56:2442:56 | Address | &:r2442_5 | +| ir.cpp:2442:56:2442:56 | Address | &:r2442_5 | +| ir.cpp:2442:56:2442:56 | Address | &:r2442_7 | +| ir.cpp:2442:56:2442:56 | Address | &:r2442_7 | +| ir.cpp:2442:56:2442:56 | Load | m2442_6 | +| ir.cpp:2442:56:2442:56 | SideEffect | m2442_8 | +| ir.cpp:2446:6:2446:34 | ChiPartial | partial:m2446_3 | +| ir.cpp:2446:6:2446:34 | ChiTotal | total:m2446_2 | +| ir.cpp:2446:6:2446:34 | SideEffect | m2446_3 | +| ir.cpp:2446:58:2446:58 | Address | &:r2446_5 | +| ir.cpp:2446:58:2446:58 | Address | &:r2446_5 | +| ir.cpp:2446:58:2446:58 | Address | &:r2446_7 | +| ir.cpp:2446:58:2446:58 | Address | &:r2446_7 | +| ir.cpp:2446:58:2446:58 | Load | m2446_6 | +| ir.cpp:2446:58:2446:58 | SideEffect | m2446_8 | | 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 | diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index cf8448c9f5d7..5cd8ff2cd4a6 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -14362,6 +14362,63 @@ ir.cpp: # 2410| v2410_5(void) = AliasedUse : ~m? # 2410| v2410_6(void) = ExitFunction : +# 2434| void param_with_destructor_by_value(ClassWithDestructor) +# 2434| Block 0 +# 2434| v2434_1(void) = EnterFunction : +# 2434| mu2434_2(unknown) = AliasedDefinition : +# 2434| mu2434_3(unknown) = InitializeNonLocal : +# 2434| r2434_4(glval<ClassWithDestructor>) = VariableAddress[c] : +# 2434| mu2434_5(ClassWithDestructor) = InitializeParameter[c] : &:r2434_4 +# 2436| v2436_1(void) = NoOp : +# 2434| v2434_6(void) = ReturnVoid : +# 2434| v2434_7(void) = AliasedUse : ~m? +# 2434| v2434_8(void) = ExitFunction : + +# 2438| void param_with_destructor_by_pointer(ClassWithDestructor*) +# 2438| Block 0 +# 2438| v2438_1(void) = EnterFunction : +# 2438| mu2438_2(unknown) = AliasedDefinition : +# 2438| mu2438_3(unknown) = InitializeNonLocal : +# 2438| r2438_4(glval<ClassWithDestructor *>) = VariableAddress[c] : +# 2438| mu2438_5(ClassWithDestructor *) = InitializeParameter[c] : &:r2438_4 +# 2438| r2438_6(ClassWithDestructor *) = Load[c] : &:r2438_4, ~m? +# 2438| mu2438_7(unknown) = InitializeIndirection[c] : &:r2438_6 +# 2440| v2440_1(void) = NoOp : +# 2438| v2438_8(void) = ReturnIndirection[c] : &:r2438_6, ~m? +# 2438| v2438_9(void) = ReturnVoid : +# 2438| v2438_10(void) = AliasedUse : ~m? +# 2438| v2438_11(void) = ExitFunction : + +# 2442| void param_with_destructor_by_ref(ClassWithDestructor&) +# 2442| Block 0 +# 2442| v2442_1(void) = EnterFunction : +# 2442| mu2442_2(unknown) = AliasedDefinition : +# 2442| mu2442_3(unknown) = InitializeNonLocal : +# 2442| r2442_4(glval<ClassWithDestructor &>) = VariableAddress[c] : +# 2442| mu2442_5(ClassWithDestructor &) = InitializeParameter[c] : &:r2442_4 +# 2442| r2442_6(ClassWithDestructor &) = Load[c] : &:r2442_4, ~m? +# 2442| mu2442_7(unknown) = InitializeIndirection[c] : &:r2442_6 +# 2444| v2444_1(void) = NoOp : +# 2442| v2442_8(void) = ReturnIndirection[c] : &:r2442_6, ~m? +# 2442| v2442_9(void) = ReturnVoid : +# 2442| v2442_10(void) = AliasedUse : ~m? +# 2442| v2442_11(void) = ExitFunction : + +# 2446| void param_with_destructor_by_rref(ClassWithDestructor&&) +# 2446| Block 0 +# 2446| v2446_1(void) = EnterFunction : +# 2446| mu2446_2(unknown) = AliasedDefinition : +# 2446| mu2446_3(unknown) = InitializeNonLocal : +# 2446| r2446_4(glval<ClassWithDestructor &&>) = VariableAddress[c] : +# 2446| mu2446_5(ClassWithDestructor &&) = InitializeParameter[c] : &:r2446_4 +# 2446| r2446_6(ClassWithDestructor &&) = Load[c] : &:r2446_4, ~m? +# 2446| mu2446_7(unknown) = InitializeIndirection[c] : &:r2446_6 +# 2448| v2448_1(void) = NoOp : +# 2446| v2446_8(void) = ReturnIndirection[c] : &:r2446_6, ~m? +# 2446| v2446_9(void) = ReturnVoid : +# 2446| v2446_10(void) = AliasedUse : ~m? +# 2446| v2446_11(void) = ExitFunction : + perf-regression.cpp: # 6| void Big::Big() # 6| Block 0 From 8cb6598f508a49848027fa1b8a5f583aef10f566 Mon Sep 17 00:00:00 2001 From: erik-krogh <erik-krogh@github.com> Date: Mon, 8 Apr 2024 20:51:19 +0200 Subject: [PATCH 710/731] fixing that I put a type on the wrong thing in the alert-message --- java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql | 4 ++-- .../CWE-190/semmle/tests/InformationLoss.expected | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql index e8893f3bcc74..7d97af12b710 100644 --- a/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql +++ b/java/ql/src/Likely Bugs/Arithmetic/InformationLoss.ql @@ -45,5 +45,5 @@ where v = a.getDest() ) select a, - "Implicit cast of $@ to narrower destination type " + a.getDest().getType().getName() + ".", v, - "source type " + e.getType().getName() + "Implicit cast of source type " + e.getType().getName() + " to narrower destination type $@.", v, + a.getDest().getType().getName() diff --git a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected index dbda11bff08a..e317375c199c 100644 --- a/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected +++ b/java/ql/test/query-tests/security/CWE-190/semmle/tests/InformationLoss.expected @@ -1,4 +1,4 @@ -| Test.java:68:5:68:25 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:64:4:64:13 | int i | source type long | -| Test.java:87:4:87:9 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:81:4:81:13 | int i | source type long | -| Test.java:289:5:289:30 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:285:4:285:27 | int[] arr | source type long | -| Test.java:293:7:293:44 | ...+=... | Implicit cast of $@ to narrower destination type int. | Test.java:293:7:293:24 | ...[...] | source type long | +| Test.java:68:5:68:25 | ...+=... | Implicit cast of source type long to narrower destination type $@. | Test.java:64:4:64:13 | int i | int | +| Test.java:87:4:87:9 | ...+=... | Implicit cast of source type long to narrower destination type $@. | Test.java:81:4:81:13 | int i | int | +| Test.java:289:5:289:30 | ...+=... | Implicit cast of source type long to narrower destination type $@. | Test.java:285:4:285:27 | int[] arr | int | +| Test.java:293:7:293:44 | ...+=... | Implicit cast of source type long to narrower destination type $@. | Test.java:293:7:293:24 | ...[...] | int | From c389611e5c5860637fcce06834c57e4d0c217d53 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 8 Apr 2024 17:07:48 +0100 Subject: [PATCH 711/731] C++: Add spurious dataflow test. --- .../dataflow-consistency.expected | 8 +++++++ .../dataflow-tests/test-source-sink.expected | 2 ++ .../dataflow/dataflow-tests/test.cpp | 24 ++++++++++++++++++- .../dataflow-tests/type-bugs.expected | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected index fa6958d92ea3..109f5ffebd12 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-consistency.expected @@ -33,6 +33,7 @@ argHasPostUpdate | test.cpp:67:29:67:35 | source1 | ArgumentNode is missing PostUpdateNode. | | test.cpp:813:19:813:35 | * ... | ArgumentNode is missing PostUpdateNode. | | test.cpp:848:23:848:25 | rpx | ArgumentNode is missing PostUpdateNode. | +| test.cpp:1057:19:1057:21 | * ... | ArgumentNode is missing PostUpdateNode. | postWithInFlow | BarrierGuard.cpp:49:6:49:6 | x [post update] | PostUpdateNode should not be the target of local flow. | | BarrierGuard.cpp:60:7:60:7 | x [post update] | PostUpdateNode should not be the target of local flow. | @@ -168,6 +169,13 @@ postWithInFlow | test.cpp:1045:9:1045:11 | ref arg buf | PostUpdateNode should not be the target of local flow. | | test.cpp:1051:5:1051:11 | content [post update] | PostUpdateNode should not be the target of local flow. | | test.cpp:1052:9:1052:9 | a [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1056:5:1056:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1056:6:1056:7 | pp [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1062:53:1062:53 | p [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1072:3:1072:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1072:4:1072:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1073:3:1073:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. | +| test.cpp:1073:4:1073:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. | viableImplInCallContextTooLarge uniqueParameterNodeAtPosition uniqueParameterNodePosition diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected index e03ee68b8a35..ada532793c41 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected @@ -310,6 +310,8 @@ irFlow | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1027:19:1027:28 | *translated | | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1031:19:1031:28 | *translated | | test.cpp:1045:14:1045:19 | call to source | test.cpp:1046:7:1046:10 | * ... | +| test.cpp:1061:15:1061:38 | *call to indirect_source | test.cpp:1057:19:1057:21 | ** ... | +| test.cpp:1072:8:1072:13 | call to source | test.cpp:1074:8:1074:9 | * ... | | true_upon_entry.cpp:9:11:9:16 | call to source | true_upon_entry.cpp:13:8:13:8 | x | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp index b2bff6327c56..5e3b502468b1 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -1050,4 +1050,26 @@ void flow_out_of_address_with_local_flow() { MyStruct a; a.content = nullptr; sink(&a); // $ SPURIOUS: ast -} \ No newline at end of file +} + +static void static_func_that_reassigns_pointer_before_sink(char** pp) { // $ ast-def=pp ir-def=*pp ir-def=**pp + *pp = ""; + indirect_sink(*pp); // $ SPURIOUS: ir +} + +void test_static_func_that_reassigns_pointer_before_sink() { + char* p = (char*)indirect_source(); + static_func_that_reassigns_pointer_before_sink(&p); +} + +void single_object_in_both_cases(bool b, int x, int y) { + int* p; + if(b) { + p = &x; + } else { + p = &y; + } + *p = source(); + *p = 0; + sink(*p); // $ SPURIOUS: ir +} diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected index 6706d79e902b..4d87c2da534a 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected @@ -15,4 +15,5 @@ incorrectBaseType | test.cpp:848:23:848:25 | (reference dereference) | Expected 'Node.getType()' to be int, but it was int * | | test.cpp:854:10:854:36 | * ... | Expected 'Node.getType()' to be const int, but it was int | | test.cpp:867:10:867:30 | * ... | Expected 'Node.getType()' to be const int, but it was int | +| test.cpp:1062:52:1062:53 | *& ... | Expected 'Node.getType()' to be char, but it was char * | failures From b2002a981a6f6a9f2d69dfd38bfd9cc8c58f3eb0 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 8 Apr 2024 17:08:05 +0100 Subject: [PATCH 712/731] C++: Use the shared typeflow library to determine whether a pointer points to a buffer or an object. --- cpp/ql/lib/qlpack.yml | 1 + .../dataflow/internal/SsaInternalsCommon.qll | 7 +- .../cpp/ir/dataflow/internal/TypeFlow.qll | 259 ++++++++++++++++++ 3 files changed, 262 insertions(+), 5 deletions(-) create mode 100644 cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 8d15b6d142a9..27529f55a293 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -9,6 +9,7 @@ dependencies: codeql/dataflow: ${workspace} codeql/rangeanalysis: ${workspace} codeql/ssa: ${workspace} + codeql/typeflow: ${workspace} codeql/tutorial: ${workspace} codeql/util: ${workspace} codeql/xml: ${workspace} diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll index 862070820f87..7e5b4de8122c 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/SsaInternalsCommon.qll @@ -6,6 +6,7 @@ private import DataFlowImplCommon as DataFlowImplCommon private import DataFlowUtil private import semmle.code.cpp.models.interfaces.PointerWrapper private import DataFlowPrivate +private import TypeFlow private import semmle.code.cpp.ir.ValueNumbering /** @@ -955,11 +956,7 @@ private module Cached { * Holds if the address computed by `operand` is guaranteed to write * to a specific address. */ - private predicate isCertainAddress(Operand operand) { - valueNumberOfOperand(operand).getAnInstruction() instanceof VariableAddressInstruction - or - operand.getType() instanceof Cpp::ReferenceType - } + private predicate isCertainAddress(Operand operand) { isPointerToSingleObject(operand.getDef()) } /** * Holds if `address` is a use of an SSA variable rooted at `base`, and the diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll new file mode 100644 index 000000000000..44f2e60daacb --- /dev/null +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll @@ -0,0 +1,259 @@ +private import cpp +private import semmle.code.cpp.ir.IR +private import codeql.typeflow.TypeFlow + +private module Input implements TypeFlowInput<Location> { + private predicate hasExactSingleType(Instruction i) { + // The address of a variable is always a single object + i instanceof VariableAddressInstruction + or + // A reference always points to a always a single object + i.getResultLanguageType().hasUnspecifiedType(any(ReferenceType rt), false) + or + // `this` is never an array + i instanceof InitializeThisInstruction + or + // An allocation of a non-array object + exists(AllocationExpr alloc | alloc = i.getUnconvertedResultExpression() | + // i.e., `new int`; + alloc instanceof NewExpr + or + // i.e., `malloc(sizeof(int))` + exists(SizeofTypeOperator sizeOf | sizeOf = alloc.getSizeExpr() | + not sizeOf.getTypeOperand().getUnspecifiedType() instanceof ArrayType + ) + ) + } + + private predicate hasExactBufferType(Instruction i) { + // Anything with an array type is a buffer + i.getResultLanguageType().hasUnspecifiedType(any(ArrayType at), false) + or + not hasExactSingleType(i) and + i.getUnconvertedResultExpression() instanceof AllocationExpr + } + + private newtype TTypeFlowNode = + TInstructionNode(Instruction i) or + TFunctionNode(IRFunction func) + + abstract class TypeFlowNode extends TTypeFlowNode { + /** Gets a textual representation of this node. */ + abstract string toString(); + + /** + * Gets the type of this node. This type may not be the most precise + * possible type, but will be used as a starting point of the analysis. + */ + abstract Type getType(); + + /** Gets the location of this node. */ + abstract Location getLocation(); + + /** Gets the underlying `Instruction` of this node, if any. */ + Instruction asInstruction() { none() } + + /** Gets the underlying `IRFunction` of this node, if any. */ + IRFunction asFunction() { none() } + + /** Holds if the value of this node is always null. */ + abstract predicate isNullValue(); + } + + private class InstructionNode extends TypeFlowNode, TInstructionNode { + Instruction instr; + + InstructionNode() { this = TInstructionNode(instr) } + + override string toString() { result = instr.toString() } + + override Type getType() { + if hasExactSingleType(instr) then result.isSingle() else result.isBuffer() + } + + override Location getLocation() { result = instr.getLocation() } + + override Instruction asInstruction() { result = instr } + + override predicate isNullValue() { + instr.(ConstantInstruction).getValue() = "0" and + instr.getResultIRType() instanceof IRAddressType + } + } + + /** Gets the `TypeFlowNode` corresponding to `i`. */ + additional InstructionNode instructionNode(Instruction i) { result.asInstruction() = i } + + private class FunctionNode extends TypeFlowNode, TFunctionNode { + IRFunction func; + + FunctionNode() { this = TFunctionNode(func) } + + override string toString() { result = func.toString() } + + Instruction getReturnValueInstruction() { + result = func.getReturnInstruction().(ReturnValueInstruction).getReturnValue() + } + + override Type getType() { result = instructionNode(this.getReturnValueInstruction()).getType() } + + override Location getLocation() { result = func.getLocation() } + + override IRFunction asFunction() { result = func } + + override predicate isNullValue() { + instructionNode(this.getReturnValueInstruction()).isNullValue() + } + } + + /** + * Gets an ultimiate definition of `phi`. That is, an input to `phi` that is + * not itself a `PhiInstruction`. + */ + private Instruction getAnUltimateLocalDefinition(PhiInstruction phi) { + result = phi.getAnInput*() and not result instanceof PhiInstruction + } + + /** + * Holds if this function is private (i.e., cannot be accessed outside its + * compilation unit). This means we can use a closed-world assumption about + * calls to this function. + */ + private predicate isPrivate(Function func) { + func.isStatic() + or + func.getNamespace().getParentNamespace*().isInline() + or + func.(MemberFunction).isPrivate() + } + + /** + * Holds if `arg` is an argument for the parameter `p` in a private callable. + */ + pragma[nomagic] + private predicate privateParamArg(InitializeParameterInstruction p, Instruction arg) { + exists(CallInstruction call, int i, Function func | + call.getArgument(pragma[only_bind_into](i)) = arg and + func = call.getStaticCallTarget() and + func.getParameter(pragma[only_bind_into](i)) = p.getParameter() and + isPrivate(func) + ) + } + + predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) { + // instruction -> phi + getAnUltimateLocalDefinition(n2.asInstruction()) = n1.asInstruction() + or + // return value -> function + n2.(FunctionNode).getReturnValueInstruction() = n1.asInstruction() + or + // function -> call + exists(Function func | func = n1.asFunction().getFunction() | + not func.isVirtual() and + n2.asInstruction().(CallInstruction).getStaticCallTarget() = func + ) + or + // Argument -> parameter where the parameter's enclosing function + // is "private". + exists(Instruction arg, Instruction p | + privateParamArg(p, arg) and + n1.asInstruction() = arg and + n2.asInstruction() = p + ) + } + + /** + * Holds if knowing whether `i1` points to a single object or buffer implies + * knowing whether `i2` points to a single object or buffer. + */ + private predicate instructionStep(Instruction i1, Instruction i2) { + i2.(CopyInstruction).getSourceValue() = i1 + or + i2.(CopyValueInstruction).getSourceValue() = i1 + or + i2.(ConvertInstruction).getUnary() = i1 + or + i2.(CheckedConvertOrNullInstruction).getUnary() = i1 + or + i2.(InheritanceConversionInstruction).getUnary() = i1 + or + i2.(PointerArithmeticInstruction).getLeft() = i1 + } + + predicate step(TypeFlowNode n1, TypeFlowNode n2) { + instructionStep(n1.asInstruction(), n2.asInstruction()) + } + + predicate isNullValue(TypeFlowNode n) { n.isNullValue() } + + private newtype TType = + TSingle() or + TBuffer() + + class Type extends TType { + string toString() { + this.isSingle() and + result = "Single" + or + this.isBuffer() and + result = "Buffer" + } + + /** Holds if this type is the type that represents a single object. */ + predicate isSingle() { this = TSingle() } + + /** Holds if this type is the type that represents a buffer. */ + predicate isBuffer() { this = TBuffer() } + + /** + * Gets a super type of this type, if any. + * + * The type relation is `Single <: Buffer`. + */ + Type getASupertype() { + this.isSingle() and + result.isBuffer() + } + } + + predicate exactTypeBase(TypeFlowNode n, Type t) { + exists(Instruction instr | instr = n.asInstruction() | + hasExactSingleType(instr) and t.isSingle() + or + hasExactBufferType(instr) and t.isBuffer() + ) + } + + pragma[nomagic] + private predicate upcastCand(TypeFlowNode n, Type t1, Type t2) { + exists(TypeFlowNode next | + step(n, next) + or + joinStep(n, next) + | + n.getType() = t1 and + next.getType() = t2 and + t1 != t2 + ) + } + + private predicate upcast(TypeFlowNode n, Type t1) { + exists(Type t2 | upcastCand(n, t1, t2) | + // No need for transitive closure since the subtyping relation is just `Single <: Buffer` + t1.getASupertype() = t2 + ) + } + + predicate typeFlowBaseCand(TypeFlowNode n, Type t) { upcast(n, t) } +} + +private module TypeFlow = Make<Location, Input>; + +/** + * Holds if `i` is an instruction that computes an address that points to a + * single object (as opposed to pointing into a buffer). + */ +pragma[nomagic] +predicate isPointerToSingleObject(Instruction i) { + TypeFlow::bestTypeFlow(Input::instructionNode(i), any(Input::Type t | t.isSingle()), _) +} From 386580fc94750a0036d0b27e21ff05d86dacdb2c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Mon, 8 Apr 2024 17:10:18 +0100 Subject: [PATCH 713/731] C++: Accept test changes. --- .../dataflow/dataflow-tests/test-source-sink.expected | 2 -- cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected index ada532793c41..e03ee68b8a35 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test-source-sink.expected @@ -310,8 +310,6 @@ irFlow | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1027:19:1027:28 | *translated | | test.cpp:1021:18:1021:32 | *call to indirect_source | test.cpp:1031:19:1031:28 | *translated | | test.cpp:1045:14:1045:19 | call to source | test.cpp:1046:7:1046:10 | * ... | -| test.cpp:1061:15:1061:38 | *call to indirect_source | test.cpp:1057:19:1057:21 | ** ... | -| test.cpp:1072:8:1072:13 | call to source | test.cpp:1074:8:1074:9 | * ... | | true_upon_entry.cpp:9:11:9:16 | call to source | true_upon_entry.cpp:13:8:13:8 | x | | true_upon_entry.cpp:17:11:17:16 | call to source | true_upon_entry.cpp:21:8:21:8 | x | | true_upon_entry.cpp:27:9:27:14 | call to source | true_upon_entry.cpp:29:8:29:8 | x | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp index 5e3b502468b1..af9e18034edd 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test.cpp @@ -1054,7 +1054,7 @@ void flow_out_of_address_with_local_flow() { static void static_func_that_reassigns_pointer_before_sink(char** pp) { // $ ast-def=pp ir-def=*pp ir-def=**pp *pp = ""; - indirect_sink(*pp); // $ SPURIOUS: ir + indirect_sink(*pp); // clean } void test_static_func_that_reassigns_pointer_before_sink() { @@ -1071,5 +1071,5 @@ void single_object_in_both_cases(bool b, int x, int y) { } *p = source(); *p = 0; - sink(*p); // $ SPURIOUS: ir + sink(*p); // clean } From e3d676f91bdac5130e5bcfc83c90b85c3715749f Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli <redsun82@github.com> Date: Tue, 9 Apr 2024 09:37:21 +0200 Subject: [PATCH 714/731] CI: apply tentative `setup-swift` fix --- swift/actions/run-integration-tests/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/actions/run-integration-tests/action.yml b/swift/actions/run-integration-tests/action.yml index 2c6df4e2b513..fe5a20b02bd8 100644 --- a/swift/actions/run-integration-tests/action.yml +++ b/swift/actions/run-integration-tests/action.yml @@ -7,7 +7,7 @@ runs: - uses: actions/setup-python@v4 with: python-version-file: 'swift/.python-version' - - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf + - uses: redsun82/setup-swift@b2b6f77ab14f6a9b136b520dc53ec8eca27d2b99 with: swift-version: "5.8" - uses: ./.github/actions/fetch-codeql From 80995ec1d76b645097159a140e5d44148bb77b25 Mon Sep 17 00:00:00 2001 From: Tamas Vajk <tamasvajk@github.com> Date: Tue, 9 Apr 2024 09:51:45 +0200 Subject: [PATCH 715/731] Improve comments on environment variable names --- .../EnvironmentVariableNames.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs index ddec97d3dde5..9141dc0bf741 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/EnvironmentVariableNames.cs @@ -23,12 +23,12 @@ internal class EnvironmentVariableNames public const string CheckNugetFeedResponsiveness = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK"; /// <summary> - /// Specifies the NuGet feeds to exclude from the responsiveness check. + /// Specifies the NuGet feeds to exclude from the responsiveness check. The value is a space-separated list of feed URLs. /// </summary> public const string ExcludedNugetFeedsFromResponsivenessCheck = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_EXCLUDED"; /// <summary> - /// Specifies the timeout for the initial check of NuGet feeds responsiveness. + /// Specifies the timeout (as an integer) in milliseconds for the initial check of NuGet feeds responsiveness. The value is then doubled for each subsequent check. /// </summary> public const string NugetFeedResponsivenessInitialTimeout = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_TIMEOUT"; From e6984aa865e23a48215c7280258af247892db8b6 Mon Sep 17 00:00:00 2001 From: Tom Hvitved <hvitved@github.com> Date: Tue, 9 Apr 2024 10:10:25 +0200 Subject: [PATCH 716/731] Ruby: Remove two redundant `allowImplicitRead` predicates --- .../codeql/ruby/security/UnsafeCodeConstructionQuery.qll | 6 ------ .../ruby/security/UnsafeShellCommandConstructionQuery.qll | 6 ------ 2 files changed, 12 deletions(-) diff --git a/ruby/ql/lib/codeql/ruby/security/UnsafeCodeConstructionQuery.qll b/ruby/ql/lib/codeql/ruby/security/UnsafeCodeConstructionQuery.qll index 4cf57f360719..32cc9a4f821f 100644 --- a/ruby/ql/lib/codeql/ruby/security/UnsafeCodeConstructionQuery.qll +++ b/ruby/ql/lib/codeql/ruby/security/UnsafeCodeConstructionQuery.qll @@ -46,12 +46,6 @@ private module UnsafeCodeConstructionConfig implements DataFlow::ConfigSig { // override to require the path doesn't have unmatched return steps DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet set) { - // allow implicit reads of array elements - isSink(node) and - set.isElementOfTypeOrUnknown("int") - } } /** diff --git a/ruby/ql/lib/codeql/ruby/security/UnsafeShellCommandConstructionQuery.qll b/ruby/ql/lib/codeql/ruby/security/UnsafeShellCommandConstructionQuery.qll index 7576702a2d4f..b4e0b8b6bb50 100644 --- a/ruby/ql/lib/codeql/ruby/security/UnsafeShellCommandConstructionQuery.qll +++ b/ruby/ql/lib/codeql/ruby/security/UnsafeShellCommandConstructionQuery.qll @@ -49,12 +49,6 @@ private module UnsafeShellCommandConstructionConfig implements DataFlow::ConfigS // override to require the path doesn't have unmatched return steps DataFlow::FlowFeature getAFeature() { result instanceof DataFlow::FeatureHasSourceCallContext } - - predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet set) { - // allow implicit reads of array elements - isSink(node) and - set.isElementOfTypeOrUnknown("int") - } } /** From 10d96ee02f6fa0e84693135ffb830acc35d2cb8e Mon Sep 17 00:00:00 2001 From: Michael Nebel <michaelnebel@github.com> Date: Tue, 9 Apr 2024 10:31:48 +0200 Subject: [PATCH 717/731] C#: Address review comments. --- .../diag_recursive_generics/Types.ql | 7 +++---- csharp/ql/lib/semmle/code/csharp/Element.qll | 2 ++ .../ql/lib/semmle/code/csharp/dataflow/SSA.qll | 8 +------- .../attributes/AttributeElements.ql | 8 +++----- .../library-tests/constructors/Destructors1.ql | 3 +-- .../test/library-tests/csharp11/fileScoped.ql | 6 +----- .../ql/test/library-tests/csharp11/nativeInt.ql | 6 ++---- .../library-tests/csharp9/covariantReturn.ql | 13 ++++--------- csharp/ql/test/library-tests/csharp9/foreach.ql | 17 ++++++----------- csharp/ql/test/library-tests/csharp9/record.ql | 10 +--------- .../ql/test/library-tests/csharp9/withExpr.ql | 14 +++----------- csharp/ql/test/library-tests/enums/Enums3.ql | 8 +++----- .../ql/test/library-tests/generics/Generics.ql | 12 ++++-------- 13 files changed, 34 insertions(+), 80 deletions(-) diff --git a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql index fff011dcbd53..de95e0fcbe7c 100644 --- a/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql +++ b/csharp/ql/integration-tests/all-platforms/diag_recursive_generics/Types.ql @@ -1,6 +1,5 @@ import csharp -import semmle.code.csharp.commons.QualifiedName -from Class c, string qualifier, string name -where c.fromSource() and c.getBaseClass().hasFullyQualifiedName(qualifier, name) -select c, getQualifiedName(qualifier, name) +from Class c +where c.fromSource() +select c, c.getBaseClass().getFullyQualifiedNameDebug() diff --git a/csharp/ql/lib/semmle/code/csharp/Element.qll b/csharp/ql/lib/semmle/code/csharp/Element.qll index f8cb018be681..a48241a14084 100644 --- a/csharp/ql/lib/semmle/code/csharp/Element.qll +++ b/csharp/ql/lib/semmle/code/csharp/Element.qll @@ -145,6 +145,8 @@ class NamedElement extends Element, @named_element { * Unbound generic types, such as `IList<T>`, are represented as * ``System.Collections.Generic.IList`1``. */ + bindingset[this] + pragma[inline_late] final string getFullyQualifiedNameDebug() { exists(string qualifier, string name | this.hasFullyQualifiedName(qualifier, name) | if qualifier = "" then result = name else result = qualifier + "." + name diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll index 9cd33ea260f1..0d79eafdf5c6 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll @@ -3,7 +3,6 @@ */ import csharp -private import semmle.code.csharp.commons.QualifiedName /** * Provides classes for working with static single assignment (SSA) form. @@ -121,12 +120,7 @@ module Ssa { result = prefix + "." + this.getAssignable() | if f.(Modifiable).isStatic() - then - exists(string qualifier, string name | - f.getDeclaringType().hasFullyQualifiedName(qualifier, name) - | - prefix = getQualifiedName(qualifier, name) - ) + then prefix = f.getDeclaringType().getName() else prefix = "this" ) } diff --git a/csharp/ql/test/library-tests/attributes/AttributeElements.ql b/csharp/ql/test/library-tests/attributes/AttributeElements.ql index 17ce2ea3d93e..679d7567ea52 100644 --- a/csharp/ql/test/library-tests/attributes/AttributeElements.ql +++ b/csharp/ql/test/library-tests/attributes/AttributeElements.ql @@ -1,9 +1,7 @@ import csharp -import semmle.code.csharp.commons.QualifiedName -from Attributable element, Attribute attribute, string qualifier, string name +from Attributable element, Attribute attribute where attribute = element.getAnAttribute() and - (attribute.fromSource() or element.(Assembly).getName() in ["attributes", "Assembly1"]) and - attribute.getType().hasFullyQualifiedName(qualifier, name) -select element, attribute, getQualifiedName(qualifier, name) + (attribute.fromSource() or element.(Assembly).getName() in ["attributes", "Assembly1"]) +select element, attribute, attribute.getType().getFullyQualifiedNameDebug() diff --git a/csharp/ql/test/library-tests/constructors/Destructors1.ql b/csharp/ql/test/library-tests/constructors/Destructors1.ql index 673a0e941f08..792d50da7bbc 100644 --- a/csharp/ql/test/library-tests/constructors/Destructors1.ql +++ b/csharp/ql/test/library-tests/constructors/Destructors1.ql @@ -3,11 +3,10 @@ */ import csharp -import semmle.code.csharp.commons.QualifiedName from Destructor c, string qualifier, string name where c.getDeclaringType().hasFullyQualifiedName(qualifier, name) and qualifier = "Constructors" and name = "Class" -select c, getQualifiedName(qualifier, name) +select c, c.getDeclaringType().getFullyQualifiedNameDebug() diff --git a/csharp/ql/test/library-tests/csharp11/fileScoped.ql b/csharp/ql/test/library-tests/csharp11/fileScoped.ql index 3003fc801bf7..33697255896a 100644 --- a/csharp/ql/test/library-tests/csharp11/fileScoped.ql +++ b/csharp/ql/test/library-tests/csharp11/fileScoped.ql @@ -1,5 +1,4 @@ import csharp -private import semmle.code.csharp.commons.QualifiedName private predicate isInteresting(Type t) { ( @@ -20,10 +19,7 @@ query predicate typemodifiers(Type t, string modifier) { query predicate qualifiedtypes(Type t, string qualifiedName) { isInteresting(t) and - exists(string qualifier, string name | - t.hasFullyQualifiedName(qualifier, name) and - qualifiedName = getQualifiedName(qualifier, name) - ) + qualifiedName = t.getFullyQualifiedNameDebug() } query predicate filetypes(Type t) { diff --git a/csharp/ql/test/library-tests/csharp11/nativeInt.ql b/csharp/ql/test/library-tests/csharp11/nativeInt.ql index 80d7974de56c..adbc062baf6d 100644 --- a/csharp/ql/test/library-tests/csharp11/nativeInt.ql +++ b/csharp/ql/test/library-tests/csharp11/nativeInt.ql @@ -1,12 +1,10 @@ import csharp -import semmle.code.csharp.commons.QualifiedName -from LocalVariable v1, LocalVariable v2, Type t, string qualifier, string name +from LocalVariable v1, LocalVariable v2, Type t where v1.getFile().getStem() = "NativeInt" and v2.getFile().getStem() = "NativeInt" and t = v1.getType() and t = v2.getType() and - t.hasFullyQualifiedName(qualifier, name) and v1 != v2 -select v1, v2, getQualifiedName(qualifier, name) +select v1, v2, t.getFullyQualifiedNameDebug() diff --git a/csharp/ql/test/library-tests/csharp9/covariantReturn.ql b/csharp/ql/test/library-tests/csharp9/covariantReturn.ql index 6227ed18d6de..b4bab047322b 100644 --- a/csharp/ql/test/library-tests/csharp9/covariantReturn.ql +++ b/csharp/ql/test/library-tests/csharp9/covariantReturn.ql @@ -1,13 +1,8 @@ import csharp -import semmle.code.csharp.commons.QualifiedName -from - Method m, Method overrider, string mnamespace, string mtype, string mname, string onamespace, - string otype, string oname +from Method m, Method overrider where m.getAnOverrider() = overrider and - m.getFile().getStem() = "CovariantReturn" and - m.hasFullyQualifiedName(mnamespace, mtype, mname) and - overrider.hasFullyQualifiedName(onamespace, otype, oname) -select getQualifiedName(mnamespace, mtype, mname), m.getReturnType().toString(), - getQualifiedName(onamespace, otype, oname), overrider.getReturnType().toString() + m.getFile().getStem() = "CovariantReturn" +select m.getFullyQualifiedNameDebug(), m.getReturnType().toString(), + overrider.getFullyQualifiedNameDebug(), overrider.getReturnType().toString() diff --git a/csharp/ql/test/library-tests/csharp9/foreach.ql b/csharp/ql/test/library-tests/csharp9/foreach.ql index cf6fcf2514a1..343ecc556ab8 100644 --- a/csharp/ql/test/library-tests/csharp9/foreach.ql +++ b/csharp/ql/test/library-tests/csharp9/foreach.ql @@ -1,5 +1,4 @@ import csharp -import semmle.code.csharp.commons.QualifiedName private string getLocation(Member m) { if m.fromSource() then result = m.getALocation().(SourceLocation).toString() else result = "-" @@ -9,13 +8,9 @@ private string getIsAsync(ForeachStmt f) { if f.isAsync() then result = "async" else result = "sync" } -from - ForeachStmt f, string qualifier1, string type1, string qualifier2, string type2, - string qualifier3, string type3 -where - f.getGetEnumerator().getDeclaringType().hasFullyQualifiedName(qualifier1, type1) and - f.getCurrent().getDeclaringType().hasFullyQualifiedName(qualifier2, type2) and - f.getMoveNext().getDeclaringType().hasFullyQualifiedName(qualifier3, type3) -select f, f.getElementType().toString(), getIsAsync(f), getQualifiedName(qualifier1, type1), - getLocation(f.getGetEnumerator()), getQualifiedName(qualifier2, type2), - getLocation(f.getCurrent()), getQualifiedName(qualifier3, type3), getLocation(f.getMoveNext()) +from ForeachStmt f +select f, f.getElementType().toString(), getIsAsync(f), + f.getGetEnumerator().getDeclaringType().getFullyQualifiedNameDebug(), + getLocation(f.getGetEnumerator()), f.getCurrent().getDeclaringType().getFullyQualifiedNameDebug(), + getLocation(f.getCurrent()), f.getMoveNext().getDeclaringType().getFullyQualifiedNameDebug(), + getLocation(f.getMoveNext()) diff --git a/csharp/ql/test/library-tests/csharp9/record.ql b/csharp/ql/test/library-tests/csharp9/record.ql index a2a9a9c0786b..58cf579bac6b 100644 --- a/csharp/ql/test/library-tests/csharp9/record.ql +++ b/csharp/ql/test/library-tests/csharp9/record.ql @@ -7,18 +7,10 @@ query predicate records(RecordClass t, string i, RecordCloneMethod clone) { t.fromSource() } -private string getMemberName(Member m) { - exists(string qualifier, string name | - m.getDeclaringType().hasFullyQualifiedName(qualifier, name) - | - result = getQualifiedName(qualifier, name) + "." + m.toStringWithTypes() - ) -} - query predicate members(RecordClass t, string ms, string l) { t.fromSource() and exists(Member m | t.hasMember(m) | - ms = getMemberName(m) and + ms = getFullyQualifiedNameWithTypes(m) and if m.fromSource() then l = m.getLocation().toString() else l = "no location" ) } diff --git a/csharp/ql/test/library-tests/csharp9/withExpr.ql b/csharp/ql/test/library-tests/csharp9/withExpr.ql index 6683d7c54f67..564cbe529aa1 100644 --- a/csharp/ql/test/library-tests/csharp9/withExpr.ql +++ b/csharp/ql/test/library-tests/csharp9/withExpr.ql @@ -1,19 +1,11 @@ import csharp import semmle.code.csharp.commons.QualifiedName -private string getSignature(Method m) { - exists(string qualifier, string name | - m.getDeclaringType().hasFullyQualifiedName(qualifier, name) - | - result = getQualifiedName(qualifier, name) + "." + m.toStringWithTypes() - ) -} - query predicate withExpr(WithExpr with, string type, Expr expr, ObjectInitializer init, string clone) { type = with.getType().toStringWithTypes() and expr = with.getExpr() and init = with.getInitializer() and - clone = getSignature(with.getCloneMethod()) + clone = getFullyQualifiedNameWithTypes(with.getCloneMethod()) } query predicate withTarget(WithExpr with, RecordCloneMethod clone, Constructor ctor) { @@ -25,7 +17,7 @@ query predicate cloneOverrides(string b, string o) { exists(RecordCloneMethod base, RecordCloneMethod overrider | base.getDeclaringType().fromSource() and base.getAnOverrider() = overrider and - b = getSignature(base) and - o = getSignature(overrider) + b = getFullyQualifiedNameWithTypes(base) and + o = getFullyQualifiedNameWithTypes(overrider) ) } diff --git a/csharp/ql/test/library-tests/enums/Enums3.ql b/csharp/ql/test/library-tests/enums/Enums3.ql index 5cfbdc561932..b01ffb97e184 100644 --- a/csharp/ql/test/library-tests/enums/Enums3.ql +++ b/csharp/ql/test/library-tests/enums/Enums3.ql @@ -3,13 +3,11 @@ */ import csharp -import semmle.code.csharp.commons.QualifiedName -from EnumConstant c, string namespace, string name +from EnumConstant c where c.getName() = "Green" and c.getDeclaringType().hasFullyQualifiedName("Enums", "LongColor") and c.getType() = c.getDeclaringType() and - c.getValue() = "1" and - c.getDeclaringType().getBaseClass().hasFullyQualifiedName(namespace, name) -select c, getQualifiedName(namespace, name) + c.getValue() = "1" +select c, c.getDeclaringType().getBaseClass().getFullyQualifiedNameDebug() diff --git a/csharp/ql/test/library-tests/generics/Generics.ql b/csharp/ql/test/library-tests/generics/Generics.ql index 71e21a5815e0..e75f1fdc9088 100644 --- a/csharp/ql/test/library-tests/generics/Generics.ql +++ b/csharp/ql/test/library-tests/generics/Generics.ql @@ -268,16 +268,12 @@ query predicate test33(ConstructedMethod cm, string s1, string s2) { query predicate test34(UnboundGeneric ug, string s1, string s2) { ug.fromSource() and - exists(string qualifier, string name | - ug.hasFullyQualifiedName(qualifier, name) and s1 = getQualifiedName(qualifier, name) - ) and - getFullyQualifiedNameWithTypes(ug) = s2 + s1 = ug.getFullyQualifiedNameDebug() and + s2 = getFullyQualifiedNameWithTypes(ug) } query predicate test35(UnboundGenericMethod gm, string s1, string s2) { gm.fromSource() and - exists(string namespace, string type, string name | - gm.hasFullyQualifiedName(namespace, type, name) and s1 = getQualifiedName(namespace, type, name) - ) and - getFullyQualifiedNameWithTypes(gm) = s2 + s1 = gm.getFullyQualifiedNameDebug() and + s2 = getFullyQualifiedNameWithTypes(gm) } From 8c2455fc113f3d0ee91b5d264c96782e06a6c274 Mon Sep 17 00:00:00 2001 From: Taus <tausbn@github.com> Date: Tue, 9 Apr 2024 10:49:30 +0000 Subject: [PATCH 718/731] Python: Disable failing integration tests These failures were likely caused by https://github.com/github/codeql/pull/16127 My guess is that they can probably be deleted altogether, but as the failures are blocking other development, I have opted to simply disable them for the time being. --- .../force-enable-library-extraction/{test.sh => disabled-test.sh} | 0 .../ignore-venv/{test.sh => disabled-test.sh} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename python/extractor/cli-integration-test/force-enable-library-extraction/{test.sh => disabled-test.sh} (100%) rename python/extractor/cli-integration-test/ignore-venv/{test.sh => disabled-test.sh} (100%) diff --git a/python/extractor/cli-integration-test/force-enable-library-extraction/test.sh b/python/extractor/cli-integration-test/force-enable-library-extraction/disabled-test.sh similarity index 100% rename from python/extractor/cli-integration-test/force-enable-library-extraction/test.sh rename to python/extractor/cli-integration-test/force-enable-library-extraction/disabled-test.sh diff --git a/python/extractor/cli-integration-test/ignore-venv/test.sh b/python/extractor/cli-integration-test/ignore-venv/disabled-test.sh similarity index 100% rename from python/extractor/cli-integration-test/ignore-venv/test.sh rename to python/extractor/cli-integration-test/ignore-venv/disabled-test.sh From bb4952f5575e71c19473982a0287db8773b4fd5a Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 9 Apr 2024 14:00:25 +0200 Subject: [PATCH 719/731] Revert "Python: Disable failing integration tests" This reverts commit 8c2455fc113f3d0ee91b5d264c96782e06a6c274. --- .../force-enable-library-extraction/{disabled-test.sh => test.sh} | 0 .../ignore-venv/{disabled-test.sh => test.sh} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename python/extractor/cli-integration-test/force-enable-library-extraction/{disabled-test.sh => test.sh} (100%) rename python/extractor/cli-integration-test/ignore-venv/{disabled-test.sh => test.sh} (100%) diff --git a/python/extractor/cli-integration-test/force-enable-library-extraction/disabled-test.sh b/python/extractor/cli-integration-test/force-enable-library-extraction/test.sh similarity index 100% rename from python/extractor/cli-integration-test/force-enable-library-extraction/disabled-test.sh rename to python/extractor/cli-integration-test/force-enable-library-extraction/test.sh diff --git a/python/extractor/cli-integration-test/ignore-venv/disabled-test.sh b/python/extractor/cli-integration-test/ignore-venv/test.sh similarity index 100% rename from python/extractor/cli-integration-test/ignore-venv/disabled-test.sh rename to python/extractor/cli-integration-test/ignore-venv/test.sh From a0d6324f685ccfbada6d682379101f6822dfef44 Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 9 Apr 2024 14:01:10 +0200 Subject: [PATCH 720/731] Python: Fix ignore-venv integration test Now that we no longer support the fallback option (https://github.com/github/codeql/pull/16127) --- .../cli-integration-test/ignore-venv/test.sh | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/python/extractor/cli-integration-test/ignore-venv/test.sh b/python/extractor/cli-integration-test/ignore-venv/test.sh index e13680088915..8735203ec32d 100755 --- a/python/extractor/cli-integration-test/ignore-venv/test.sh +++ b/python/extractor/cli-integration-test/ignore-venv/test.sh @@ -17,63 +17,33 @@ mkdir dbs # set up venvs cd repo_dir +# make venv with some package in it (so we show that our ignore logic is correct) python3 -m venv venv venv/bin/pip install flask -python3 -m venv venv2 - cd "$SCRIPTDIR" -# In 2.16.0 we stop extracting libraries by default, so to test this functionality we -# need to force enable it. Once we release 2.17.0 and turn off library extraction for -# good, we can remove the part of this test ensuring that dependencies in an active -# venv are still extracted (since that will no longer be the case). -export CODEQL_EXTRACTOR_PYTHON_FORCE_ENABLE_LIBRARY_EXTRACTION_UNTIL_2_17_0=1 - -# Create DBs with venv2 active (that does not have flask installed) -source repo_dir/venv2/bin/activate - export CODEQL_EXTRACTOR_PYTHON_DISABLE_AUTOMATIC_VENV_EXCLUDE= $CODEQL database create dbs/normal --language python --source-root repo_dir/ export CODEQL_EXTRACTOR_PYTHON_DISABLE_AUTOMATIC_VENV_EXCLUDE=1 $CODEQL database create dbs/no-venv-ignore --language python --source-root repo_dir/ -# Create DB with venv active that has flask installed. We want to ensure that we're -# still able to resolve imports to flask, but don't want to extract EVERYTHING from -# within the venv. Important note is that the test-file in the repo_dir actually imports -# flask :D -source repo_dir/venv/bin/activate -export CODEQL_EXTRACTOR_PYTHON_DISABLE_AUTOMATIC_VENV_EXCLUDE= -$CODEQL database create dbs/normal-with-flask-venv --language python --source-root repo_dir/ - # --- set +x EXTRACTED_NORMAL=$(unzip -l dbs/normal/src.zip | wc -l) EXTRACTED_NO_VENV_IGNORE=$(unzip -l dbs/no-venv-ignore/src.zip | wc -l) -EXTRACTED_ACTIVE_FLASK=$(unzip -l dbs/normal-with-flask-venv/src.zip | wc -l) exitcode=0 echo "EXTRACTED_NORMAL=$EXTRACTED_NORMAL" echo "EXTRACTED_NO_VENV_IGNORE=$EXTRACTED_NO_VENV_IGNORE" -echo "EXTRACTED_ACTIVE_FLASK=$EXTRACTED_ACTIVE_FLASK" if [[ ! $EXTRACTED_NORMAL -lt $EXTRACTED_NO_VENV_IGNORE ]]; then echo "ERROR: EXTRACTED_NORMAL not smaller EXTRACTED_NO_VENV_IGNORE" exitcode=1 fi -if [[ ! $EXTRACTED_NORMAL -lt $EXTRACTED_ACTIVE_FLASK ]]; then - echo "ERROR: EXTRACTED_NORMAL not smaller EXTRACTED_ACTIVE_FLASK" - exitcode=1 -fi - -if [[ ! $EXTRACTED_ACTIVE_FLASK -lt $EXTRACTED_NO_VENV_IGNORE ]]; then - echo "ERROR: EXTRACTED_ACTIVE_FLASK not smaller EXTRACTED_NO_VENV_IGNORE" - exitcode=1 -fi - exit $exitcode From e9e7ccddcea1f00326522457c5a5d816564d55df Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Tue, 9 Apr 2024 14:02:34 +0200 Subject: [PATCH 721/731] Python: delete `force-enable-library-extraction` integration test --- .../repo_dir/foo.py | 3 -- .../force-enable-library-extraction/test.sh | 41 ------------------- 2 files changed, 44 deletions(-) delete mode 100644 python/extractor/cli-integration-test/force-enable-library-extraction/repo_dir/foo.py delete mode 100755 python/extractor/cli-integration-test/force-enable-library-extraction/test.sh diff --git a/python/extractor/cli-integration-test/force-enable-library-extraction/repo_dir/foo.py b/python/extractor/cli-integration-test/force-enable-library-extraction/repo_dir/foo.py deleted file mode 100644 index cf0cd77a1087..000000000000 --- a/python/extractor/cli-integration-test/force-enable-library-extraction/repo_dir/foo.py +++ /dev/null @@ -1,3 +0,0 @@ -import pip - -print(42) diff --git a/python/extractor/cli-integration-test/force-enable-library-extraction/test.sh b/python/extractor/cli-integration-test/force-enable-library-extraction/test.sh deleted file mode 100755 index 9d74cfaca4b2..000000000000 --- a/python/extractor/cli-integration-test/force-enable-library-extraction/test.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -set -Eeuo pipefail # see https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/ - -set -x - -CODEQL=${CODEQL:-codeql} - -SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -cd "$SCRIPTDIR" - -# start on clean slate -rm -rf dbs -mkdir dbs - -cd "$SCRIPTDIR" - -export CODEQL_EXTRACTOR_PYTHON_FORCE_ENABLE_LIBRARY_EXTRACTION_UNTIL_2_17_0= -$CODEQL database create dbs/normal --language python --source-root repo_dir/ - -export CODEQL_EXTRACTOR_PYTHON_FORCE_ENABLE_LIBRARY_EXTRACTION_UNTIL_2_17_0=1 -$CODEQL database create dbs/with-lib-extraction --language python --source-root repo_dir/ - -# --- - -set +x - -EXTRACTED_NORMAL=$(unzip -l dbs/normal/src.zip | wc -l) -EXTRACTED_WITH_LIB_EXTRACTION=$(unzip -l dbs/with-lib-extraction/src.zip | wc -l) - -exitcode=0 - -echo "EXTRACTED_NORMAL=$EXTRACTED_NORMAL" -echo "EXTRACTED_WITH_LIB_EXTRACTION=$EXTRACTED_WITH_LIB_EXTRACTION" - -if [[ ! $EXTRACTED_WITH_LIB_EXTRACTION -gt $EXTRACTED_NORMAL ]]; then - echo "ERROR: EXTRACTED_WITH_LIB_EXTRACTION not greater than EXTRACTED_NORMAL" - exitcode=1 -fi - -exit $exitcode From ae8240a695b532778f8ef8f4864f626744cfc705 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Tue, 9 Apr 2024 13:23:03 +0100 Subject: [PATCH 722/731] Delete models for JDK internal packages --- .../jdk.internal.access.foreign.model.yml | 10 - .../generated/jdk.internal.access.model.yml | 243 ------------------ .../ext/generated/jdk.internal.misc.model.yml | 11 - .../jdk.internal.org.objectweb.asm.model.yml | 15 -- 4 files changed, 279 deletions(-) delete mode 100644 java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml delete mode 100644 java/ql/lib/ext/generated/jdk.internal.access.model.yml delete mode 100644 java/ql/lib/ext/generated/jdk.internal.misc.model.yml delete mode 100644 java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml diff --git a/java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml b/java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml deleted file mode 100644 index 5cfddbd9303c..000000000000 --- a/java/ql/lib/ext/generated/jdk.internal.access.foreign.model.yml +++ /dev/null @@ -1,10 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/java-all - extensible: neutralModel - data: - - ["jdk.internal.access.foreign", "UnmapperProxy", "address", "()", "summary", "df-generated"] - - ["jdk.internal.access.foreign", "UnmapperProxy", "fileDescriptor", "()", "summary", "df-generated"] - - ["jdk.internal.access.foreign", "UnmapperProxy", "isSync", "()", "summary", "df-generated"] - - ["jdk.internal.access.foreign", "UnmapperProxy", "unmap", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jdk.internal.access.model.yml b/java/ql/lib/ext/generated/jdk.internal.access.model.yml deleted file mode 100644 index 37d803493035..000000000000 --- a/java/ql/lib/ext/generated/jdk.internal.access.model.yml +++ /dev/null @@ -1,243 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/java-all - extensible: summaryModel - data: - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", True, "registerCleanup", "(FileDescriptor,PhantomCleanable)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaIOFilePermissionAccess", True, "newPermPlusAltPath", "(FilePermission)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaIOFilePermissionAccess", True, "newPermUsingAltPath", "(FilePermission)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaIORandomAccessFileAccess", True, "openAndDelete", "(File,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "addEnableNativeAccess", "(Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "addOpensToAllUnnamed", "(Module,Set,Set)", "", "Argument[1].Element", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "addOpensToAllUnnamed", "(Module,Set,Set)", "", "Argument[2].Element", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "createOrGetClassLoaderValueMap", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "defineModule", "(ClassLoader,ModuleDescriptor,URI)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "defineModule", "(ClassLoader,ModuleDescriptor,URI)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "definePackage", "(ClassLoader,String,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "definePackage", "(ClassLoader,String,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "defineUnnamedModule", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "getBytesNoRepl", "(String,Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "getBytesUTF8NoRepl", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "getServicesCatalog", "(ModuleLayer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "join", "(String,String,String,String[],int)", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "layers", "(ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "layers", "(ModuleLayer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "newStringNoRepl", "(byte[],Charset)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "newStringUTF8NoRepl", "(byte[],int,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "newThreadWithAcc", "(Runnable,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "newThreadWithAcc", "(Runnable,AccessControlContext)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "setCause", "(Throwable,Throwable)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "stringConcatHelper", "(String,MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", True, "stringConcatHelper", "(String,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "collectCoordinates", "(VarHandle,int,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "dropCoordinates", "(VarHandle,int,Class[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "filterCoordinates", "(VarHandle,int,MethodHandle[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "filterValue", "(VarHandle,MethodHandle,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "getMethodDescriptor", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "getMethodType", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "getName", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "insertCoordinates", "(VarHandle,int,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "nativeMethodHandle", "(NativeEntryPoint,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "nativeMethodHandle", "(NativeEntryPoint,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "permuteCoordinates", "(VarHandle,List,int[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", True, "permuteCoordinates", "(VarHandle,List,int[])", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newConfiguration", "(ModuleFinder,Map)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String,Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String,Set)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newExports", "(Set,String,Set)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleBuilder", "(String,boolean,Set)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleBuilder", "(String,boolean,Set)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[3].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[4].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[5].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[6].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[7].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[8].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newModuleDescriptor", "(String,ModuleDescriptor$Version,Set,Set,Set,Set,Set,Set,Set,String,int)", "", "Argument[9]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String,Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String,Set)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newOpens", "(Set,String,Set)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newProvides", "(String,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newProvides", "(String,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newRequires", "(Set,String,ModuleDescriptor$Version)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newRequires", "(Set,String,ModuleDescriptor$Version)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "newRequires", "(Set,String,ModuleDescriptor$Version)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", True, "packages", "(ModuleDescriptor$Builder)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "copyConstructor", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "copyField", "(Field)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "copyMethod", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorAccessor", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorAnnotations", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorParameterAnnotations", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "getConstructorSignature", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "getExecutableSharedParameterTypes", "(Executable)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "getMethodAccessor", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "getRoot", "(AccessibleObject)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "leafCopyMethod", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[5]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[6]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "newConstructor", "(Class,Class[],Class[],int,int,String,byte[],byte[])", "", "Argument[7]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "setConstructorAccessor", "(Constructor,ConstructorAccessor)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", True, "setMethodAccessor", "(Method,MethodAccessor)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetHttpCookieAccess", True, "header", "(HttpCookie)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetHttpCookieAccess", True, "parse", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetInetAddressAccess", True, "addressBytes", "(Inet6Address)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetInetAddressAccess", True, "getByName", "(String,InetAddress)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetInetAddressAccess", True, "getOriginalHostName", "(InetAddress)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetURLAccess", True, "getHandler", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetUriAccess", True, "create", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNetUriAccess", True, "create", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "acquireScope", "(Buffer,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "bufferSegment", "(Buffer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "getBufferBase", "(ByteBuffer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "newDirectByteBuffer", "(long,int,Object,MemorySegmentProxy)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "newDirectByteBuffer", "(long,int,Object,MemorySegmentProxy)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "newHeapByteBuffer", "(byte[],int,int,MemorySegmentProxy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "newHeapByteBuffer", "(byte[],int,int,MemorySegmentProxy)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "newMappedByteBuffer", "(UnmapperProxy,long,int,Object,MemorySegmentProxy)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "newMappedByteBuffer", "(UnmapperProxy,long,int,Object,MemorySegmentProxy)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", True, "newMappedByteBuffer", "(UnmapperProxy,long,int,Object,MemorySegmentProxy)", "", "Argument[4]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecurityAccess$ProtectionDomainCache", True, "get", "(ProtectionDomain)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecurityAccess$ProtectionDomainCache", True, "put", "(ProtectionDomain,PermissionCollection)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecurityAccess$ProtectionDomainCache", True, "put", "(ProtectionDomain,PermissionCollection)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecurityAccess", True, "doIntersectionPrivilege", "(PrivilegedAction,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecurityAccess", True, "doIntersectionPrivilege", "(PrivilegedAction,AccessControlContext,AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecurityAccess", True, "getProtectDomains", "(AccessControlContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initSign", "(Signature,PrivateKey,AlgorithmParameterSpec,SecureRandom)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initSign", "(Signature,PrivateKey,AlgorithmParameterSpec,SecureRandom)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initSign", "(Signature,PrivateKey,AlgorithmParameterSpec,SecureRandom)", "", "Argument[3]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initVerify", "(Signature,PublicKey,AlgorithmParameterSpec)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaSecuritySignatureAccess", True, "initVerify", "(Signature,PublicKey,AlgorithmParameterSpec)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilCollectionAccess", True, "listFromTrustedArray", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilCollectionAccess", True, "listFromTrustedArrayNullsAllowed", "(Object[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "entryFor", "(JarFile,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "entryNames", "(JarFile,CodeSource[])", "", "Argument[1].ArrayElement", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSource", "(JarFile,URL,String)", "", "Argument[2]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSources", "(JarFile,URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSources", "(JarFile,URL)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getCodeSources", "(JarFile,URL)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getManifestDigests", "(JarFile)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", True, "getTrustedAttributes", "(Manifest,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "getBundle", "(String,Locale,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "getBundle", "(String,Locale,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "getParent", "(ResourceBundle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "setLocale", "(ResourceBundle,Locale)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "setName", "(ResourceBundle,String)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - ["jdk.internal.access", "JavaUtilResourceBundleAccess", True, "setParent", "(ResourceBundle,ResourceBundle)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"] - - addsTo: - pack: codeql/java-all - extensible: neutralModel - data: - - ["jdk.internal.access", "JavaBeansAccess", "getConstructorPropertiesValue", "(Constructor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaBeansAccess", "getReadMethod", "(Class,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOAccess", "charset", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOAccess", "console", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "close", "(FileDescriptor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "get", "(FileDescriptor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "getAppend", "(FileDescriptor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "getHandle", "(FileDescriptor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "registerCleanup", "(FileDescriptor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "set", "(FileDescriptor,int)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "setAppend", "(FileDescriptor,boolean)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "setHandle", "(FileDescriptor,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaIOFileDescriptorAccess", "unregisterCleanup", "(FileDescriptor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addEnableNativeAccessAllUnnamed", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addExports", "(Module,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addExports", "(Module,String,Module)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addExportsToAllUnnamed", "(Module,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addNonExportedPackages", "(ModuleLayer)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addOpens", "(Module,String,Module)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addOpensToAllUnnamed", "(Module,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addReads", "(Module,Module)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addReadsAllUnnamed", "(Module)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "addUses", "(Module,Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "bindToLoader", "(ModuleLayer,ClassLoader)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "blockedOn", "(Interruptible)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "casAnnotationType", "(Class,AnnotationType,AnnotationType)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "classData", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "decodeASCII", "(byte[],int,char[],int,int)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "defineClass", "(ClassLoader,Class,String,byte[],ProtectionDomain,boolean,int,Object)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "defineClass", "(ClassLoader,String,byte[],ProtectionDomain,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "exit", "(int)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "fastUUID", "(long,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "findBootstrapClassOrNull", "(String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "findNative", "(ClassLoader,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getAnnotationType", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getConstantPool", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getDeclaredAnnotationMap", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getDeclaredPublicMethods", "(Class,String,Class[])", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getEnumConstantsShared", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getRawClassAnnotations", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getRawClassTypeAnnotations", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "getRawExecutableTypeAnnotations", "(Executable)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "inflateBytesToChars", "(byte[],int,char[],int,int)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "invalidatePackageAccessCache", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "invokeFinalize", "(Object)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "isEnableNativeAccess", "(Module)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "isReflectivelyExported", "(Module,String,Module)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "isReflectivelyOpened", "(Module,String,Module)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "protectionDomain", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "registerShutdownHook", "(int,boolean,Runnable)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "stringConcatInitialCoder", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangAccess", "stringConcatMix", "(long,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", "ensureCustomized", "(MethodHandle)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", "generateHolderClasses", "(Stream)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", "getDeclaringClass", "(Object)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", "isNative", "(Object)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", "memoryAccessVarHandle", "(Class,boolean,long,ByteOrder)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangInvokeAccess", "newMemberName", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", "requires", "(ModuleDescriptor$Builder,Set,String,String)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangModuleAccess", "resolveAndBind", "(ModuleFinder,Collection,PrintStream)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangRefAccess", "runFinalization", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangRefAccess", "waitForReferenceProcessing", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", "getConstructorSlot", "(Constructor)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", "getExecutableTypeAnnotationBytes", "(Executable)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", "isTrustedFinalField", "(Field)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaLangReflectAccess", "newInstance", "(Constructor,Object[],Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNetInetAddressAccess", "addressValue", "(Inet4Address)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "force", "(FileDescriptor,long,boolean,long,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "getBufferAddress", "(ByteBuffer)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "getDirectBufferPool", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "isLoaded", "(long,boolean,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "load", "(long,boolean,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "pageSize", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "reserveMemory", "(long,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "unload", "(long,boolean,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "unmapper", "(ByteBuffer)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaNioAccess", "unreserveMemory", "(long,long)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaSecurityAccess", "getProtectionDomainCache", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaSecuritySignatureAccess", "initVerify", "(Signature,Certificate,AlgorithmParameterSpec)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaSecuritySpecAccess", "clearEncodedKeySpec", "(EncodedKeySpec)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", "ensureInitialization", "(JarFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", "entries2", "(JarFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", "isInitializing", "()", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", "jarFileHasClassPathAttribute", "(JarFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilJarAccess", "setEagerValidation", "(JarFile,boolean)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilResourceBundleAccess", "newResourceBundle", "(Class)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "entries", "(ZipFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "entryNameStream", "(ZipFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "getExtraAttributes", "(ZipEntry)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "getManifestAndSignatureRelatedFiles", "(JarFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "getManifestName", "(JarFile,boolean)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "getManifestNum", "(JarFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "getMetaInfVersions", "(JarFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "setExtraAttributes", "(ZipEntry,int)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "startsWithLocHeader", "(ZipFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaUtilZipFileAccess", "stream", "(ZipFile)", "summary", "df-generated"] - - ["jdk.internal.access", "JavaxCryptoSpecAccess", "clearSecretKeySpec", "(SecretKeySpec)", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jdk.internal.misc.model.yml b/java/ql/lib/ext/generated/jdk.internal.misc.model.yml deleted file mode 100644 index 3ab4816a586d..000000000000 --- a/java/ql/lib/ext/generated/jdk.internal.misc.model.yml +++ /dev/null @@ -1,11 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/java-all - extensible: neutralModel - data: - - ["jdk.internal.misc", "Signal$Handler", "handle", "(Signal)", "summary", "df-generated"] - - ["jdk.internal.misc", "VM$BufferPool", "getCount", "()", "summary", "df-generated"] - - ["jdk.internal.misc", "VM$BufferPool", "getMemoryUsed", "()", "summary", "df-generated"] - - ["jdk.internal.misc", "VM$BufferPool", "getName", "()", "summary", "df-generated"] - - ["jdk.internal.misc", "VM$BufferPool", "getTotalCapacity", "()", "summary", "df-generated"] diff --git a/java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml b/java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml deleted file mode 100644 index 1121dda67810..000000000000 --- a/java/ql/lib/ext/generated/jdk.internal.org.objectweb.asm.model.yml +++ /dev/null @@ -1,15 +0,0 @@ -# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT. -extensions: - - addsTo: - pack: codeql/java-all - extensible: summaryModel - data: - - ["jdk.internal.org.objectweb.asm", "ClassVisitor", True, "visitAnnotation", "(String,boolean)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"] - - ["jdk.internal.org.objectweb.asm", "ClassVisitor", True, "visitAnnotation", "(String,boolean)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"] - - addsTo: - pack: codeql/java-all - extensible: neutralModel - data: - - ["jdk.internal.org.objectweb.asm", "ClassVisitor", "visit", "(int,int,String,String,String,String[])", "summary", "df-generated"] - - ["jdk.internal.org.objectweb.asm", "ClassVisitor", "visitAttribute", "(Attribute)", "summary", "df-generated"] - - ["jdk.internal.org.objectweb.asm", "ClassVisitor", "visitModule", "(String,int,String)", "summary", "df-generated"] From e6d63b980d044c167d8cfa5f60117c3cbc82c633 Mon Sep 17 00:00:00 2001 From: Felicity Chapman <felicitymay@github.com> Date: Tue, 9 Apr 2024 14:05:42 +0100 Subject: [PATCH 723/731] Make duplicated content clear --- .../customizing-library-models-for-csharp.rst | 15 +++------------ ...omizing-library-models-for-java-and-kotlin.rst | 11 +---------- .../codeql/reusables/threat-model-description.rst | 10 ++++++++++ 3 files changed, 14 insertions(+), 22 deletions(-) create mode 100644 docs/codeql/reusables/threat-model-description.rst diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst index 09dcf36fc07f..39b5ee30ee47 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst @@ -282,7 +282,7 @@ These are the same for both of the rows above as we are adding two summaries for - The second value ``Enumerable`` is the class (type) name. - The third value ``False`` is a flag that indicates whether or not the summary also applies to all overrides of the method. - The fourth value ``Select<TSource,TResult>`` is the method name, along with the type parameters for the method. The names of the generic type parameters provided in the model must match the names of the generic type parameters in the method signature in the source code. -- The fifth value ``(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>)`` is the method input type signature. The generics in the signature must match the generics in the method signature in the source code. +- The fifth value ``(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>)`` is the method input type signature. The generics in the signature must match the generics in the method signature in the source code. The sixth value should be left empty and is out of scope for this documentation. The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary definition. @@ -309,7 +309,7 @@ That is, the first row specifies that values can flow from the elements of the q Example: Add a ``neutral`` method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -This example shows how we can model a method as being neutral with respect to flow. We will also cover how to model a property by modeling the getter of the ``Now`` property of the ``DateTime`` class as neutral. +This example shows how we can model a method as being neutral with respect to flow. We will also cover how to model a property by modeling the getter of the ``Now`` property of the ``DateTime`` class as neutral. A neutral model is used to define that there is no flow through a method. .. code-block:: csharp @@ -346,13 +346,4 @@ The first four values identify the callable (in this case the getter of the ``No Threat models ------------- -.. include:: ../reusables/beta-note-threat-models.rst - -A threat model is a named class of dataflow sources that can be enabled or disabled independently. Threat models allow you to control the set of dataflow sources that you want to consider unsafe. For example, one codebase may only consider remote HTTP requests to be tainted, whereas another may also consider data from local files to be unsafe. You can use threat models to ensure that the relevant taint sources are used in a CodeQL analysis. - -The ``kind`` property of ``sourceModel`` determines which threat model a source is associated with. There are two main categories: - -- ``remote`` which represents requests and responses from the network. -- ``local`` which represents data from local files (``file``), command-line arguments (``commandargs``), database reads (``database``), and environment variables(``environment``). - -When running a CodeQL analysis, the ``remote`` threat model is included by default. You can optionally include other threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see `Analyzing your code with CodeQL queries <https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>`__ and `Customizing your advanced setup for code scanning <https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models>`__. +.. include:: ../reusables/threat-model-description.rst diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst index e8b69e20d819..dd7f352f6d01 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst @@ -297,13 +297,4 @@ The first four values identify the callable (in this case a method) to be modele Threat models ------------- -.. include:: ../reusables/beta-note-threat-models.rst - -A threat model is a named class of dataflow sources that can be enabled or disabled independently. Threat models allow you to control the set of dataflow sources that you want to consider unsafe. For example, one codebase may only consider remote HTTP requests to be tainted, whereas another may also consider data from local files to be unsafe. You can use threat models to ensure that the relevant taint sources are used in a CodeQL analysis. - -The ``kind`` property of the ``sourceModel`` determines which threat model a source is associated with. There are two main categories: - -- ``remote`` which represents requests and responses from the network. -- ``local`` which represents data from local files (``file``), command-line arguments (``commandargs``), database reads (``database``), and environment variables(``environment``). - -When running a CodeQL analysis, the ``remote`` threat model is included by default. You can optionally include other threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see `Analyzing your code with CodeQL queries <https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>`__ and `Customizing your advanced setup for code scanning <https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models>`__. +.. include:: ../reusables/threat-model-description.rst diff --git a/docs/codeql/reusables/threat-model-description.rst b/docs/codeql/reusables/threat-model-description.rst new file mode 100644 index 000000000000..53a872487bfa --- /dev/null +++ b/docs/codeql/reusables/threat-model-description.rst @@ -0,0 +1,10 @@ +.. include:: ../reusables/beta-note-threat-models.rst + +A threat model is a named class of dataflow sources that can be enabled or disabled independently. Threat models allow you to control the set of dataflow sources that you want to consider unsafe. For example, one codebase may only consider remote HTTP requests to be tainted, whereas another may also consider data from local files to be unsafe. You can use threat models to ensure that the relevant taint sources are used in a CodeQL analysis. + +The ``kind`` property of the ``sourceModel`` determines which threat model a source is associated with. There are two main categories: + +- ``remote`` which represents requests and responses from the network. +- ``local`` which represents data from local files (``file``), command-line arguments (``commandargs``), database reads (``database``), and environment variables(``environment``). + +When running a CodeQL analysis, the ``remote`` threat model is included by default. You can optionally include other threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see `Analyzing your code with CodeQL queries <https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>`__ and `Customizing your advanced setup for code scanning <https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models>`__. From deb78b248b8d04aab1702c721d64db89de748a44 Mon Sep 17 00:00:00 2001 From: Max Schaefer <54907921+max-schaefer@users.noreply.github.com> Date: Tue, 9 Apr 2024 14:38:17 +0100 Subject: [PATCH 724/731] Apply suggestions from code review Co-authored-by: Taus <tausbn@github.com> --- .../test/AutomodelApplicationModeExtraction/Test.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java b/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java index a8280bcaf272..9691cf86c150 100644 --- a/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java +++ b/java/ql/automodel/test/AutomodelApplicationModeExtraction/Test.java @@ -103,10 +103,10 @@ public static void FilesListExample(Path p) throws Exception { Files.delete( p // $ sinkModelCandidate=delete(Path):Argument[0] positiveSinkExample=delete(Path):Argument[0](path-injection) - ); // $ not a source candidate (return type is void) + ); // not a source candidate (return type is void) Files.deleteIfExists( p // $ sinkModelCandidate=deleteIfExists(Path):Argument[0] positiveSinkExample=deleteIfExists(Path):Argument[0](path-injection) - ); // $ not a source candidate (return type is boolean) + ); // not a source candidate (return type is boolean) } } \ No newline at end of file From 2a7420ce11ef59eca1d0228d972e534c3d3df8ec Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 9 Apr 2024 15:00:23 +0100 Subject: [PATCH 725/731] Update cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll Co-authored-by: Jeroen Ketema <93738568+jketema@users.noreply.github.com> --- cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll index 44f2e60daacb..d8ce666a8cbd 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll @@ -7,7 +7,7 @@ private module Input implements TypeFlowInput<Location> { // The address of a variable is always a single object i instanceof VariableAddressInstruction or - // A reference always points to a always a single object + // A reference always points to a single object i.getResultLanguageType().hasUnspecifiedType(any(ReferenceType rt), false) or // `this` is never an array From 291cc0a671a4bcb9d411f6b8016e61cb0209ad02 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 9 Apr 2024 15:25:13 +0100 Subject: [PATCH 726/731] C++: Anonymous namespaces provide internal linkage. --- cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll index d8ce666a8cbd..ee493f00ce47 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll @@ -120,10 +120,13 @@ private module Input implements TypeFlowInput<Location> { * calls to this function. */ private predicate isPrivate(Function func) { + // static functions have internal linkage func.isStatic() or - func.getNamespace().getParentNamespace*().isInline() + // anonymous namespaces have internal linkage + func.getNamespace().getParentNamespace*().isAnonymous() or + // private member functions are only called internally from inside the class func.(MemberFunction).isPrivate() } From a53ef495ee937e58bfd401f47732a59887f1e06c Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen <mathiasvp@github.com> Date: Tue, 9 Apr 2024 16:04:20 +0100 Subject: [PATCH 727/731] C++: Simplify 'hasExactBufferType' and add comments. --- .../cpp/ir/dataflow/internal/TypeFlow.qll | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll index ee493f00ce47..69f94dad91b6 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/TypeFlow.qll @@ -3,6 +3,29 @@ private import semmle.code.cpp.ir.IR private import codeql.typeflow.TypeFlow private module Input implements TypeFlowInput<Location> { + /** Holds if `alloc` dynamically allocates a single object. */ + private predicate isSingleObjectAllocation(AllocationExpr alloc) { + // i.e., `new int`; + alloc instanceof NewExpr + or + // i.e., `malloc(sizeof(int))` + exists(SizeofTypeOperator sizeOf | sizeOf = alloc.getSizeExpr() | + not sizeOf.getTypeOperand().getUnspecifiedType() instanceof ArrayType + ) + } + + /** + * Holds if `i` is the result of a dynamic allocation. + * + * `isObject` is `true` if the allocation allocated a single object, + * and `false` otherwise. + */ + private predicate isAllocation(Instruction i, boolean isObject) { + exists(AllocationExpr alloc | alloc = i.getUnconvertedResultExpression() | + if isSingleObjectAllocation(alloc) then isObject = true else isObject = false + ) + } + private predicate hasExactSingleType(Instruction i) { // The address of a variable is always a single object i instanceof VariableAddressInstruction @@ -14,23 +37,16 @@ private module Input implements TypeFlowInput<Location> { i instanceof InitializeThisInstruction or // An allocation of a non-array object - exists(AllocationExpr alloc | alloc = i.getUnconvertedResultExpression() | - // i.e., `new int`; - alloc instanceof NewExpr - or - // i.e., `malloc(sizeof(int))` - exists(SizeofTypeOperator sizeOf | sizeOf = alloc.getSizeExpr() | - not sizeOf.getTypeOperand().getUnspecifiedType() instanceof ArrayType - ) - ) + isAllocation(i, true) } private predicate hasExactBufferType(Instruction i) { // Anything with an array type is a buffer i.getResultLanguageType().hasUnspecifiedType(any(ArrayType at), false) or - not hasExactSingleType(i) and - i.getUnconvertedResultExpression() instanceof AllocationExpr + // An allocation expression that we couldn't conclude allocated a single + // expression is assigned a buffer type. + isAllocation(i, false) } private newtype TTypeFlowNode = From b9cfeaf6140617109572152b84ab84fbf4be067e Mon Sep 17 00:00:00 2001 From: Dave Bartolomeo <dbartol@github.com> Date: Tue, 9 Apr 2024 12:41:32 -0400 Subject: [PATCH 728/731] Add test case --- java/ql/test/query-tests/SpuriousJavadocParam/Test.java | 1 + java/ql/test/query-tests/SpuriousJavadocParam/test.expected | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/java/ql/test/query-tests/SpuriousJavadocParam/Test.java b/java/ql/test/query-tests/SpuriousJavadocParam/Test.java index 434353f4c676..d8891afb7564 100644 --- a/java/ql/test/query-tests/SpuriousJavadocParam/Test.java +++ b/java/ql/test/query-tests/SpuriousJavadocParam/Test.java @@ -128,6 +128,7 @@ static record SomeRecord(int i, int j) {} /** * @param <T> exists + * @param <U> does not * @param i exists * @param k does not */ diff --git a/java/ql/test/query-tests/SpuriousJavadocParam/test.expected b/java/ql/test/query-tests/SpuriousJavadocParam/test.expected index 0ade1a7d5196..f184473ea4a9 100644 --- a/java/ql/test/query-tests/SpuriousJavadocParam/test.expected +++ b/java/ql/test/query-tests/SpuriousJavadocParam/test.expected @@ -13,4 +13,5 @@ | Test.java:118:6:118:12 | @param | @param tag "T" does not match any actual type parameter of type "GenericInterface". | | Test.java:119:6:119:12 | @param | @param tag "<X>" does not match any actual type parameter of type "GenericInterface". | | Test.java:125:6:125:12 | @param | @param tag "k" does not match any actual type parameter or record parameter of record "SomeRecord". | -| Test.java:132:6:132:12 | @param | @param tag "k" does not match any actual type parameter or record parameter of record "GenericRecord". | +| Test.java:131:6:131:12 | @param | @param tag "<U>" does not match any actual type parameter or record parameter of record "GenericRecord". | +| Test.java:133:6:133:12 | @param | @param tag "k" does not match any actual type parameter or record parameter of record "GenericRecord". | From 4fed3cf12d9145b2d891009ff409853da9a61ebb Mon Sep 17 00:00:00 2001 From: Rasmus Wriedt Larsen <rasmuswl@github.com> Date: Wed, 10 Apr 2024 11:31:34 +0200 Subject: [PATCH 729/731] Python: Fix `RemoteFlowSourceFromCsv` --- python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll b/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll index 34e484392716..2f4c74ea9e4b 100644 --- a/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll +++ b/python/ql/lib/semmle/python/frameworks/data/ModelsAsData.qll @@ -22,7 +22,7 @@ private import semmle.python.dataflow.new.FlowSummary /** * A remote flow source originating from a CSV source row. */ -private class RemoteFlowSourceFromCsv extends RemoteFlowSource { +private class RemoteFlowSourceFromCsv extends RemoteFlowSource::Range { RemoteFlowSourceFromCsv() { this = ModelOutput::getASourceNode("remote").asSource() } override string getSourceType() { result = "Remote flow (from model)" } From b4829addf7b3c2ac0121e6dc0222d87381a166cc Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 10 Apr 2024 10:48:23 +0100 Subject: [PATCH 730/731] Add comments with link to online doc --- go/extractor/extractor.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index 1a60c2bf9826..acfccf33e3c2 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -388,6 +388,8 @@ func extractUniverseScope() { } // extractObjects extracts all objects declared in the given scope +// For more information on objects, see: +// https://github.com/golang/example/blob/master/gotypes/README.md#objects func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label) { for _, name := range scope.Names() { obj := scope.Lookup(name) @@ -440,6 +442,8 @@ func extractMethod(tw *trap.Writer, meth *types.Func) trap.Label { } // extractObject extracts a single object and emits it to the objects table. +// For more information on objects, see: +// https://github.com/golang/example/blob/master/gotypes/README.md#objects func extractObject(tw *trap.Writer, obj types.Object, lbl trap.Label) { name := obj.Name() isBuiltin := obj.Parent() == types.Universe @@ -487,6 +491,8 @@ func extractObject(tw *trap.Writer, obj types.Object, lbl trap.Label) { } // extractObjectTypes extracts type and receiver information for all objects +// For more information on objects, see: +// https://github.com/golang/example/blob/master/gotypes/README.md#objects func extractObjectTypes(tw *trap.Writer) { // calling `extractType` on a named type will extract all methods defined // on it, which will add new objects. Therefore we need to do this first @@ -497,11 +503,13 @@ func extractObjectTypes(tw *trap.Writer) { } changed = tw.ForEachObject(emitObjectType) if changed { - log.Printf("Warning: more objects were labeled while emitted object types") + log.Printf("Warning: more objects were labeled while emitting object types") } } // extractObjectType extracts type and receiver information for a given object +// For more information on objects, see: +// https://github.com/golang/example/blob/master/gotypes/README.md#objects func extractObjectType(tw *trap.Writer, obj types.Object, lbl trap.Label) { if tp := obj.Type(); tp != nil { extractType(tw, tp) From a18a4fb62e1a8fc503279a87d9a3f37c03519737 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <owen-mc@github.com> Date: Wed, 10 Apr 2024 11:38:27 +0100 Subject: [PATCH 731/731] Avoid magic in `TSynthLocation` definition This improves performance, because in this case magic is not beneficial. --- go/ql/lib/semmle/go/internal/Locations.qll | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/go/ql/lib/semmle/go/internal/Locations.qll b/go/ql/lib/semmle/go/internal/Locations.qll index 498ac9d11702..8b0a206b8838 100644 --- a/go/ql/lib/semmle/go/internal/Locations.qll +++ b/go/ql/lib/semmle/go/internal/Locations.qll @@ -11,12 +11,19 @@ newtype TLocation = TSynthLocation(string filepath, int startline, int startcolumn, int endline, int endcolumn) { any(DataFlow::Node n).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and // avoid overlap with existing DB locations - not exists(File f | - locations_default(_, f, startline, startcolumn, endline, endcolumn) and - f.getAbsolutePath() = filepath - ) + not existingDBLocation(filepath, startline, startcolumn, endline, endcolumn) } +pragma[nomagic] +private predicate existingDBLocation( + string filepath, int startline, int startcolumn, int endline, int endcolumn +) { + exists(File f | + locations_default(_, f, startline, startcolumn, endline, endcolumn) and + f.getAbsolutePath() = filepath + ) +} + /** * A location as given by a file, a start line, a start column, * an end line, and an end column.